* Tony Lindgren <[email protected]> [131119 18:57]:
> We have some device tree properties where the ti,hwmod has multiple
> values:
> 
> am33xx.dtsi:  ti,hwmods = "tpcc", "tptc0", "tptc1", "tptc2";
> am4372.dtsi:  ti,hwmods = "tpcc", "tptc0", "tptc1", "tptc2";
> dra7.dtsi:    ti,hwmods = "l3_main_1", "l3_main_2";
> omap3.dtsi:   ti,hwmods = "mcbsp2", "mcbsp2_sidetone";
> omap3.dtsi:   ti,hwmods = "mcbsp3", "mcbsp3_sidetone";
> omap4.dtsi:   ti,hwmods = "l3_main_1", "l3_main_2", "l3_main_3";
> omap5.dtsi:   ti,hwmods = "l3_main_1", "l3_main_2", "l3_main_3";
> 
> So we need to handle the whole string array instead of just the
> first string to find the related hwmod entry.
> 
> Cc: "BenoĆ®t Cousson" <[email protected]>
> Cc: Paul Walmsley <[email protected]>
> Signed-off-by: Tony Lindgren <[email protected]>
> 
> --- a/arch/arm/mach-omap2/omap_hwmod.c
> +++ b/arch/arm/mach-omap2/omap_hwmod.c
> @@ -2228,11 +2228,23 @@ static struct device_node *of_dev_hwmod_lookup(struct 
> device_node *np,
>                                               struct omap_hwmod *oh)
>  {
>       struct device_node *np0 = NULL, *np1 = NULL;
> -     const char *p;
>  
>       for_each_child_of_node(np, np0) {
> -             if (of_find_property(np0, "ti,hwmods", NULL)) {
> -                     p = of_get_property(np0, "ti,hwmods", NULL);
> +             int count, i;
> +
> +             count = of_property_count_strings(np0, "ti,hwmods");
> +             if (count < 1)
> +                     continue;
> +
> +             for (i = 0; i < count; i++) {
> +                     const char *p;
> +                     int res;
> +
> +                     res = of_property_read_string_index(np0, "ti,hwmods",
> +                                                         i, &p);
> +                     if (res)
> +                             continue;
> +
>                       if (!strcmp(p, oh->name))
>                               return np0;
>                       np1 = of_dev_hwmod_lookup(np0, oh);

Hmm I think this also needs part two to it to populate the right IO space
based on the index, this probably now wrongly populates the first IO space
for all the hwmod instances in the group.

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

Reply via email to