Hi Mike, On Tue, Oct 20, 2015 at 2:24 PM, Michael Turquette <mturquette@xxxxxxxxxxxx> wrote: > Quoting Geert Uytterhoeven (2015-10-16 05:49:20) >> +static void __init r8a7795_cpg_mssr_init(struct device_node *np) >> +{ >> + struct regmap *regmap; >> + u32 reg, cpg_mode; >> + >> + regmap = syscon_regmap_lookup_by_phandle(np, "renesas,modemr"); >> + if (IS_ERR(regmap) || >> + of_property_read_u32_index(np, "renesas,modemr", 1, ®) || >> + regmap_read(regmap, reg, &cpg_mode)) { >> + pr_err("%s: failed to parse renesas,modemr\n", np->full_name); >> + return; >> + } >> + >> + cpg_pll_config = &cpg_pll_configs[CPG_PLL_CONFIG_INDEX(cpg_mode)]; >> + if (!cpg_pll_config->extal_div) { >> + pr_err("%s: Prohibited setting (cpg_mode=0x%x)\n", >> + __func__, cpg_mode); >> + return; >> + } >> + >> + cpg_mssr_probe(np, &r8a7795_cpg_mssr_info); >> +} >> +CLK_OF_DECLARE(r8a7795_cpg_mssr, "renesas,r8a7795-cpg-mssr", >> + r8a7795_cpg_mssr_init); > > Is CLK_OF_DECLARE needed? Is it possible to make this a real > platform_driver à la drivers/clk/qcom/gcc-apq8084.c? I tried making it a real platform driver, but it failed: devices that are part of the Clock Domain failed to get their clock (error -2, IIRC, which is -ENOENT), and thus couldn't be instantiated. I didn't look deeper at that time. [... reading code ...] Aha, this may be caused by __of_clk_get_from_provider() returning hardcoded -ENOENT instead of propagating the error returned by __clk_create_clk()? Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html