/* * clk-si5351.c: Silicon Laboratories Si5351A/B/C I2C Clock Generator * * Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> * Rabeeh Khoury <rabeeh@solid-run.com> * * References: * [1] "Si5351A/B/C Data Sheet" * http://www.silabs.com/Support%20Documents/TechnicalDocs/Si5351.pdf * [2] "Manually Generating an Si5351 Register Map" * http://www.silabs.com/Support%20Documents/TechnicalDocs/AN619.pdf * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. */#include<linux/module.h>#include<linux/kernel.h>#include<linux/clkdev.h>#include<linux/clk-provider.h>#include<linux/delay.h>#include<linux/err.h>#include<linux/errno.h>#include<linux/rational.h>#include<linux/i2c.h>#include<linux/of_platform.h>#include<linux/platform_data/si5351.h>#include<linux/regmap.h>#include<linux/slab.h>#include<linux/string.h>#include<asm/div64.h>#include"clk-si5351.h"structsi5351_driver_data;structsi5351_parameters{unsignedlongp1;unsignedlongp2;unsignedlongp3;intvalid;};structsi5351_hw_data{structclk_hwhw;structsi5351_driver_data*drvdata;structsi5351_parametersparams;unsigned