* this program. If not, see <http://www.gnu.org/licenses/>. */ #include <linux/clk.h> #include <linux/clk-provider.h> #include <linux/of_address.h> #include <linux/platform_device.h> #include <linux/init.h> #include "clkc.h" #include "meson8b.h" static DEFINE_SPINLOCK(clk_lock); static const struct pll_rate_table sys_pll_rate_table[] = { PLL_RATE(312000000, 52, 1, 2), PLL_RATE(336000000, 56, 1, 2), PLL_RATE(360000000, 60, 1, 2), PLL_RATE(384000000, 64, 1, 2), PLL_RATE(408000000, 68, 1, 2), PLL_RATE(432000000, 72, 1, 2), PLL_RATE(456000000, 76, 1, 2), PLL_RATE(480000000, 80, 1, 2), PLL_RATE(504000000, 84, 1, 2), PLL_RATE(528000000, 88, 1, 2), PLL_RATE(552000000, 92, 1, 2), PLL_RATE(576000000, 96, 1, 2), PLL_RATE(600000000, 50, 1, 1), PLL_RATE(624000000, 52, 1, 1), PLL_RATE(648000000, 54, 1, 1), PLL_RATE(672000000, 56, 1, 1),
.reg_off = HHI_SYS_PLL_CNTL, .shift = 29, .width = 1, }, }, .hw.init = &(struct clk_init_data){ .name = "sys_pll", .ops = &meson_clk_pll_ro_ops, .parent_names = (const char *[]){ "xtal" }, .num_parents = 1, .flags = CLK_GET_RATE_NOCACHE, }, }; static const struct pll_rate_table axg_gp0_pll_rate_table[] = { PLL_RATE(240000000, 40, 1, 2), PLL_RATE(246000000, 41, 1, 2), PLL_RATE(252000000, 42, 1, 2), PLL_RATE(258000000, 43, 1, 2), PLL_RATE(264000000, 44, 1, 2), PLL_RATE(270000000, 45, 1, 2), PLL_RATE(276000000, 46, 1, 2), PLL_RATE(282000000, 47, 1, 2), PLL_RATE(288000000, 48, 1, 2), PLL_RATE(294000000, 49, 1, 2), PLL_RATE(300000000, 50, 1, 2), PLL_RATE(306000000, 51, 1, 2), PLL_RATE(312000000, 52, 1, 2), PLL_RATE(318000000, 53, 1, 2), PLL_RATE(324000000, 54, 1, 2), PLL_RATE(330000000, 55, 1, 2),