> From: Mark Rutland [mailto:mark.rutland@xxxxxxx] > > On Fri, Oct 04, 2013 at 08:49:44PM +0100, Pekon Gupta wrote: [snip] > > > > diff --git a/arch/arm/mach-omap2/gpmc.c b/arch/arm/mach- > omap2/gpmc.c > > index 1c45b72..5a607fa 100644 > > --- a/arch/arm/mach-omap2/gpmc.c > > +++ b/arch/arm/mach-omap2/gpmc.c > > @@ -1341,12 +1341,6 @@ static void __maybe_unused > gpmc_read_timings_dt(struct device_node *np, > > > > #ifdef CONFIG_MTD_NAND > > > > -static const char * const nand_ecc_opts[] = { > > - [OMAP_ECC_HAM1_CODE_HW] = "ham1", > > - [OMAP_ECC_BCH4_CODE_HW] = "bch4", > > - [OMAP_ECC_BCH8_CODE_HW] = "bch8", > > -}; > > - > > static const char * const nand_xfer_types[] = { > > [NAND_OMAP_PREFETCH_POLLED] = "prefetch-polled", > > [NAND_OMAP_POLLED] = "polled", > > @@ -1361,6 +1355,8 @@ static int gpmc_probe_nand_child(struct > platform_device *pdev, > > const char *s; > > struct gpmc_timings gpmc_t; > > struct omap_nand_platform_data *gpmc_nand_data; > > + const __be32 *phandle; > > I don't think you need this. With of_parse_phandle you should never need > to see the raw phandle value. > > > + int lenp; > > > > if (of_property_read_u32(child, "reg", &val) < 0) { > > dev_err(&pdev->dev, "%s has no 'reg' property\n", > > @@ -1376,12 +1372,39 @@ static int gpmc_probe_nand_child(struct > platform_device *pdev, > > gpmc_nand_data->cs = val; > > gpmc_nand_data->of_node = child; > > > > - if (!of_property_read_string(child, "ti,nand-ecc-opt", &s)) > > - for (val = 0; val < ARRAY_SIZE(nand_ecc_opts); val++) > > - if (!strcasecmp(s, nand_ecc_opts[val])) { > > - gpmc_nand_data->ecc_opt = val; > > - break; > > - } > > + /* Detect availability of ELM module */ > > + phandle = of_get_property(child, "ti,elm-id", &lenp); > > + if ((phandle == NULL) || (lenp != sizeof(void *))) { > > + pr_warn("%s: ti,elm-id property not found\n", __func__); > > + gpmc_nand_data->elm_of_node = NULL; > > + } else { > > + gpmc_nand_data->elm_of_node = > > + > of_find_node_by_phandle(be32_to_cpup(phandle)); > > + } > > Use of_parse_handle rather than open-coding it: > > gpmc_nand_data->elm_of_node = > of_parse_phandle(child, "ti,elm-id", 0); > > Was "elm_id" ever handled previously? I don't see any code handling it > being remove or modified. > Yes, this piece of code has been moved from omap2.c (nand-driver) to gpmc.c (GPMC driver), so as to perform all DT related parsing at single place. This change was needed as per feedbacks from Olof to simply DT bindings so that they include only H/W related stuff. Please refer omap2.c: omap3_init_bch() in [PATCH 3/6] of same series where 'elm_id' DT parsing was original present. - /* Detect availability of ELM module */ - parp = of_get_property(info->of_node, "elm_id", &lenp); - if ((parp == NULL) && (lenp != (sizeof(void *) * 2))) { - pr_err("Missing elm_id property, fall back to Software BCH\n"); - info->is_elm_used = false; - } else { - struct platform_device *pdev; - - elm_node = of_find_node_by_phandle(be32_to_cpup(parp)); - pdev = of_find_device_by_node(elm_node); - info->elm_dev = &pdev->dev; - - if (elm_config(info->elm_dev, bch_type) == 0) - info->is_elm_used = true; with regards, pekon -- 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