Hi Mike,
On Tue, Oct 20, 2015 at 2:24 PM, Michael Turquette
<[email protected]> 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 -- [email protected]
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 linux-clk" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html