RE: [PATCH v7 2/6] ARM: OMAP2+: cleaned-up DT support of various ECC schemes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> 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




[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]
  Powered by Linux