[RESEND PATCH] mtd: nand: omap2: Remove omap_nand_platform_data
Roger Quadros
rogerq at ti.com
Thu Oct 12 04:28:45 PDT 2017
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
On 10/10/17 12:40, Boris Brezillon wrote:
> On Fri, 6 Oct 2017 12:35:43 +0200
> Ladislav Michl <ladis at linux-mips.org> wrote:
>
>> As driver is now configured using DT, omap_nand_platform_data structure
>> is no longer needed.
>>
>> Signed-off-by: Ladislav Michl <ladis at linux-mips.org>
>> ---
>> Resend to linux-mtd as other part this patch was depending on
>> was merged months ago via linux-omap tree...
>>
>> drivers/mtd/nand/omap2.c | 40 +++++++---------------------
>> include/linux/platform_data/mtd-nand-omap2.h | 17 ------------
>> 2 files changed, 10 insertions(+), 47 deletions(-)
>>
>> diff --git a/drivers/mtd/nand/omap2.c b/drivers/mtd/nand/omap2.c
>> index 54540c8fa1a2..b1fc070c8279 100644
>> --- a/drivers/mtd/nand/omap2.c
>> +++ b/drivers/mtd/nand/omap2.c
>> @@ -1588,8 +1588,7 @@ static bool is_elm_present(struct omap_nand_info *info,
>> return true;
>> }
>>
>> -static bool omap2_nand_ecc_check(struct omap_nand_info *info,
>> - struct omap_nand_platform_data *pdata)
>> +static bool omap2_nand_ecc_check(struct omap_nand_info *info)
>> {
>> bool ecc_needs_bch, ecc_needs_omap_bch, ecc_needs_elm;
>>
>> @@ -1804,7 +1803,6 @@ static const struct mtd_ooblayout_ops omap_sw_ooblayout_ops = {
>> static int omap_nand_probe(struct platform_device *pdev)
>> {
>> struct omap_nand_info *info;
>> - struct omap_nand_platform_data *pdata = NULL;
>> struct mtd_info *mtd;
>> struct nand_chip *nand_chip;
>> int err;
>> @@ -1814,6 +1812,9 @@ static int omap_nand_probe(struct platform_device *pdev)
>> int min_oobbytes = BADBLOCK_MARKER_LENGTH;
>> int oobbytes_per_step;
>>
>> + if (!dev->of_node)
>> + return -EINVAL;
>> +
>
> Is this really needed? I expect omap_get_dt_info() to return an error
> when dev->of_node is NULL.
>
>> info = devm_kzalloc(&pdev->dev, sizeof(struct omap_nand_info),
>> GFP_KERNEL);
>> if (!info)
>> @@ -1821,29 +1822,9 @@ static int omap_nand_probe(struct platform_device *pdev)
>>
>> info->pdev = pdev;
>>
>> - if (dev->of_node) {
>> - if (omap_get_dt_info(dev, info))
>> - return -EINVAL;
>> - } else {
>> - pdata = dev_get_platdata(&pdev->dev);
>> - if (!pdata) {
>> - dev_err(&pdev->dev, "platform data missing\n");
>> - return -EINVAL;
>> - }
>> -
>> - info->gpmc_cs = pdata->cs;
>> - info->reg = pdata->reg;
>> - info->ecc_opt = pdata->ecc_opt;
>> - if (pdata->dev_ready)
>> - dev_info(&pdev->dev, "pdata->dev_ready is deprecated\n");
>> -
>> - info->xfer_type = pdata->xfer_type;
>> - info->devsize = pdata->devsize;
>> - info->elm_of_node = pdata->elm_of_node;
>> - info->flash_bbt = pdata->flash_bbt;
>> - }
>> + if (omap_get_dt_info(dev, info))
>> + return -EINVAL;
how about
err = omap_get_dt_info(dev, info);
if (err)
return err;
>>
>> - platform_set_drvdata(pdev, info);
>
> This removal seems unrelated to the change you're describing in the
> commit log. I'm not saying we should keep this platform_set_drvdata()
> if it's useless, but it should be done in a separate patch.
we do use platform_get_drvdata() in omap_nand_remove() so I suppose
we can't get rid of platorm_set_drvdata().
We need to test if the patch survives a suspend/resume.
>
>> info->ops = gpmc_omap_get_nand_ops(&info->reg, info->gpmc_cs);
>> if (!info->ops) {
>> dev_err(&pdev->dev, "Failed to get GPMC->NAND interface\n");
>> @@ -2002,7 +1983,7 @@ static int omap_nand_probe(struct platform_device *pdev)
>> goto return_error;
>> }
>>
>> - if (!omap2_nand_ecc_check(info, pdata)) {
>> + if (!omap2_nand_ecc_check(info)) {
>> err = -EINVAL;
>> goto return_error;
>> }
>> @@ -2167,10 +2148,9 @@ static int omap_nand_probe(struct platform_device *pdev)
>> if (err)
>> goto return_error;
>>
>> - if (dev->of_node)
>> - mtd_device_register(mtd, NULL, 0);
>> - else
>> - mtd_device_register(mtd, pdata->parts, pdata->nr_parts);
>> + err = mtd_device_register(mtd, NULL, 0);
>> + if (err)
>> + goto return_error;
>>
>> platform_set_drvdata(pdev, mtd);
>>
>> diff --git a/include/linux/platform_data/mtd-nand-omap2.h b/include/linux/platform_data/mtd-nand-omap2.h
>> index 25e267f1970c..619df2431e75 100644
>> --- a/include/linux/platform_data/mtd-nand-omap2.h
>> +++ b/include/linux/platform_data/mtd-nand-omap2.h
>> @@ -64,21 +64,4 @@ struct gpmc_nand_regs {
>> void __iomem *gpmc_bch_result5[GPMC_BCH_NUM_REMAINDER];
>> void __iomem *gpmc_bch_result6[GPMC_BCH_NUM_REMAINDER];
>> };
>> -
>> -struct omap_nand_platform_data {
>> - int cs;
>> - struct mtd_partition *parts;
>> - int nr_parts;
>> - bool flash_bbt;
>> - enum nand_io xfer_type;
>> - int devsize;
>> - enum omap_ecc ecc_opt;
>> -
>> - struct device_node *elm_of_node;
>> -
>> - /* deprecated */
>> - struct gpmc_nand_regs reg;
>> - struct device_node *of_node;
>> - bool dev_ready;
>> -};
>> #endif
>>
>> ______________________________________________________
>> Linux MTD discussion mailing list
>> http://lists.infradead.org/mailman/listinfo/linux-mtd/
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
--
cheers,
-roger
More information about the linux-mtd
mailing list