* Tero Kristo <[email protected]> [150325 08:12]:
>
> Splits the clock provider init out of the PRM driver and moves it to
> clock driver. This is needed so that once the PRCM drivers are separated,
> they can logically just access the clock driver not needing to go through
> common PRM code. This would be wrong in the case of control module for
> example.
...
> --- a/arch/arm/mach-omap2/clock.c
> +++ b/arch/arm/mach-omap2/clock.c
...
> -u32 omap2_clk_readl(struct clk_hw_omap *clk, void __iomem *reg)
> +u32 omap2_clk_memmap_readl(void __iomem *reg)
> {
> - u32 val;
> + struct clk_omap_reg *r = (struct clk_omap_reg *)®
>
> - if (clk->flags & MEMMAP_ADDRESSING) {
> - struct clk_omap_reg *r = (struct clk_omap_reg *)®
> - val = readl_relaxed(clk_memmaps[r->index] + r->offset);
> - } else {
> - val = readl_relaxed(reg);
> - }
> + return readl_relaxed(clk_memmaps[r->index] + r->offset);
> +}
The cast from void __iomem *reg to struct clk_omap_reg *r looks still
nasty.. Why don't you add the IO address into struct clk_omap_reg:
struct clk_omap_reg {
u16 offset;
u16 index;
struct regmap *regmap;
void __iomem *addr;
};
...
Then populate it during init and then have the clock code use it
directly if available? Then it seems you would not need the
static struct clk_iomap *clk_memmaps[CLK_MAX_MEMMAPS] at all?
Regards,
Tony
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html