On Oct 16, 2012, at 11:24 PM, Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> wrote: > On Tue, Oct 16, 2012 at 08:04:44PM +0200, Carlo Caione wrote: >> + >> +static struct clk ref_3_clk = { >> + .rate = 3 * 1000 * 1000, >> +}; >> + >> +static struct clk ref_1_clk = { >> + .rate = 1 * 1000 * 1000, >> +}; > > Add a 'select COMMON_CLK' to your Kconfig and do a: > > clk_dummy = clk_fixed("dummy", 0); > clk_ref_3 = clk_fixed("ref3", 3 * 1000 * 1000); > clk_ref_1 = clk_fixed("ref1", 1 * 1000 * 1000); > > Then you can drop your clk code and get a clk_dump command > which you can use to see what clocks you have. RFC ok I ask here before submitting the whole set because I'm not sure if this is a convenient solution. I'm not sure if you are suggesting to have two different clock definition one for clk_fixed and the other one for clkdev, so I was thinking something like: enum brcm_clks { dummy, clk_ref_3, clk_ref_1, clks_max }; static struct clk *clks[clks_max]; int brmc_clk_create(struct clk *clk, const char *con_id, const char *dev_id) { struct clk_lookup *clkdev; clkdev = clkdev_alloc(clk, con_id, dev_id); if (!clkdev) return -ENOMEM; clkdev_add(clkdev); return 0; } static int bcm2835_clk_init(void) { int ret; clks[dummy] = clk_fixed("dummy", 0); ret = brmc_clk_create(clks[dummy], "apb_pclk", NULL); if (ret) goto clk_err; clks[clk_ref_3] = clk_fixed("ref3", 3 * 1000 * 1000); ret = brmc_clk_create(clks[clk_ref_3], NULL, "uart0-pl0110"); if (ret) goto clk_err; clks[clk_ref_1] = clk_fixed("ref1", 1 * 1000 * 1000); ret = brmc_clk_create(clks[clk_ref_1], NULL, "bcm2835-cs"); if (ret) goto clk_err; return 0; clk_err: return ret; } postcore_initcall(bcm2835_clk_init); Any comment on this solution? -- Carlo Caione _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox