Hi Maxime,
On Tue, Oct 29, 2019 at 2:24 PM Maxime Ripard mripard@kernel.org wrote:
On Tue, Oct 29, 2019 at 04:03:56AM +0530, Jagan Teki wrote:
explicit handling of common clock would require since the A64 doesn't need to mention the clock-names explicitly in dts since it support only one bus clock.
Also pass clk_id NULL instead "bus" to regmap clock init function since the single clock variants no need to mention clock-names explicitly.
You don't need explicit clock handling. Passing NULL as the argument in regmap_init_mmio_clk will make it use the first clock, which is the bus clock.
Indeed I tried that, since NULL clk_id wouldn't enable the bus clock during regmap_mmio_gen_context code, passing NULL triggering vblank timeout.
There's a bunch of users of NULL in tree, so finding out why NULL doesn't work is the way forward.
I'd have looked the some of the users before checking the code as well. As I said passing NULL clk_id to devm_regmap_init_mmio_clk => __devm_regmap_init_mmio_clk would return before processing the clock.
Here is the code snippet on the tree just to make sure I'm on the same page or not.
static struct regmap_mmio_context *regmap_mmio_gen_context(struct device *dev, const char *clk_id, void __iomem *regs, const struct regmap_config *config) { ----------------------- -------------- if (clk_id == NULL) return ctx;
ctx->clk = clk_get(dev, clk_id); if (IS_ERR(ctx->clk)) { ret = PTR_ERR(ctx->clk); goto err_free; }
ret = clk_prepare(ctx->clk); if (ret < 0) { clk_put(ctx->clk); goto err_free; } ------------- --------------- }
Yes, I did check on the driver in the tree before committing explicit clock handle, which make similar requirements like us in [1]. this imx2 wdt driver is handling the explicit clock as well. I'm sure this driver is updated as I have seen few changes related to this driver in ML.
Let me know if I still miss any key change or note here, I will dig further on this for sure.
[1] https://elixir.bootlin.com/linux/v5.4-rc4/source/drivers/watchdog/imx2_wdt.c...
thanks, Jagan.