From: Vladimir Barinov <vbarinov@embeddedalley.com>
To: Sascha Hauer <s.hauer@pengutronix.de>
Cc: linux-mtd@lists.infradead.org, dwmw2@infradead.org,
Lothar Wassmann <LW@KARO-electronics.de>
Subject: Re: [PATCH] [MTD] MXC NAND driver fixes
Date: Fri, 03 Apr 2009 12:21:24 +0400 [thread overview]
Message-ID: <49D5C704.6010403@embeddedalley.com> (raw)
In-Reply-To: <20090403053805.GE23731@pengutronix.de>
Sascha Hauer wrote:
> Hi,
>
> On Fri, Apr 03, 2009 at 01:54:20AM +0400, Vladimir Barinov wrote:
>
>> The following patch fixes:
>> - re-initialization of host->col_addr which is used as byte index
>> between the successive READID flash commands.
>> - compile error when CONFIG_PM is enabled
>> - pass on the error code from clk_get()
>> - return -ENOMEM in case of failed ioremap()
>> - pass on the return value of platform_driver_probe() instead of inventing -ENODEV
>> - let command line partition table parsing with mxc_nand name.
>> The cmd_line parsing is done via <mtd-id> name that differs
>> from mxc_nand by default and looks like "NAND 256MiB 1,8V 8-bit"
>>
>> Signed-off-by: Vladimir Barinov <vbarinov@embeddedalley.com>
>> Signed-off-by: Lothar Wassmann <LW@KARO-electronics.de>
>> ---
>> drivers/mtd/nand/mxc_nand.c | 47 +++++++++++++++++++++++++++---------------
>> 1 files changed, 30 insertions(+), 17 deletions(-)
>>
>> diff --git a/drivers/mtd/nand/mxc_nand.c b/drivers/mtd/nand/mxc_nand.c
>> index bad048a..e94c956 100644
>> --- a/drivers/mtd/nand/mxc_nand.c
>> +++ b/drivers/mtd/nand/mxc_nand.c
>> @@ -831,6 +831,7 @@ static void mxc_nand_command(struct mtd_info *mtd, unsigned command,
>> break;
>>
>> case NAND_CMD_READID:
>> + host->col_addr = 0;
>> send_read_id(host);
>> break;
>>
>> @@ -881,8 +882,10 @@ static int __init mxcnd_probe(struct platform_device *pdev)
>> this->verify_buf = mxc_nand_verify_buf;
>>
>> host->clk = clk_get(&pdev->dev, "nfc");
>> - if (IS_ERR(host->clk))
>> + if (IS_ERR(host->clk)) {
>> + err = PTR_ERR(host->clk);
>> goto eclk;
>> + }
>>
>> clk_enable(host->clk);
>> host->clk_act = 1;
>> @@ -895,7 +898,7 @@ static int __init mxcnd_probe(struct platform_device *pdev)
>>
>> host->regs = ioremap(res->start, res->end - res->start + 1);
>> if (!host->regs) {
>> - err = -EIO;
>> + err = -ENOMEM;
>> goto eres;
>> }
>>
>> @@ -964,6 +967,9 @@ static int __init mxcnd_probe(struct platform_device *pdev)
>>
>> /* Register the partitions */
>> #ifdef CONFIG_MTD_PARTITIONS
>> +#ifdef CONFIG_MTD_CMDLINE_PARTS
>> + mtd->name = "mxc_nand";
>> +#endif
>>
>
> Do we need an ifdef here?
>
That is due to the useless of such naming for all other cases (i.e.
redboot fis partition table parsing)
>
>> nr_parts =
>> parse_mtd_partitions(mtd, part_probes, &host->parts, 0);
>> if (nr_parts > 0)
>> @@ -1010,30 +1016,35 @@ static int __devexit mxcnd_remove(struct platform_device *pdev)
>> #ifdef CONFIG_PM
>> static int mxcnd_suspend(struct platform_device *pdev, pm_message_t state)
>> {
>> - struct mtd_info *info = platform_get_drvdata(pdev);
>> + struct mtd_info *mtd = platform_get_drvdata(pdev);
>> + struct nand_chip *nand_chip = mtd->priv;
>> + struct mxc_nand_host *host = nand_chip->priv;
>> int ret = 0;
>>
>> DEBUG(MTD_DEBUG_LEVEL0, "MXC_ND : NAND suspend\n");
>> - if (info)
>> - ret = info->suspend(info);
>> -
>> - /* Disable the NFC clock */
>> - clk_disable(nfc_clk); /* FIXME */
>> + if (mtd) {
>> + ret = mtd->suspend(mtd);
>> + /* Disable the NFC clock */
>> + clk_disable(host->clk);
>> + }
>>
>> return ret;
>> }
>>
>> static int mxcnd_resume(struct platform_device *pdev)
>> {
>> - struct mtd_info *info = platform_get_drvdata(pdev);
>> + struct mtd_info *mtd = platform_get_drvdata(pdev);
>> + struct nand_chip *nand_chip = mtd->priv;
>> + struct mxc_nand_host *host = nand_chip->priv;
>> int ret = 0;
>>
>> DEBUG(MTD_DEBUG_LEVEL0, "MXC_ND : NAND resume\n");
>> - /* Enable the NFC clock */
>> - clk_enable(nfc_clk); /* FIXME */
>>
>> - if (info)
>> - info->resume(info);
>> + if (mtd) {
>> + /* Enable the NFC clock */
>> + clk_enable(host->clk);
>> + mtd->resume(mtd);
>> + }
>>
>> return ret;
>> }
>> @@ -1054,13 +1065,15 @@ static struct platform_driver mxcnd_driver = {
>>
>> static int __init mxc_nd_init(void)
>> {
>> + int ret;
>> +
>> /* Register the device driver structure. */
>> pr_info("MXC MTD nand Driver\n");
>> - if (platform_driver_probe(&mxcnd_driver, mxcnd_probe) != 0) {
>> + ret = platform_driver_probe(&mxcnd_driver, mxcnd_probe);
>> + if (ret)
>> printk(KERN_ERR "Driver register failed for mxcnd_driver\n");
>>
>
> Can you please also remove this printk? platform_driver_probe()
> fails when no platform device is registered for this driver which
> only means that a particular board does not have NAND support. Getting
> an error here is quite confusing in this situation.
>
Ok, wiil do in the next try.
> Sascha
>
>
>> - return -ENODEV;
>> - }
>> - return 0;
>> +
>> + return ret;
>> }
>>
>> static void __exit mxc_nd_cleanup(void)
>> --
>> 1.5.6
>>
>>
>>
>
>
next prev parent reply other threads:[~2009-04-03 8:21 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1238709260-17439-1-git-send-email-vbarinov@embeddedalley.com>
2009-04-03 5:38 ` [PATCH] [MTD] MXC NAND driver fixes Sascha Hauer
2009-04-03 8:21 ` Vladimir Barinov [this message]
[not found] ` <1238748195-10757-1-git-send-email-vbarinov@embeddedalley.com>
2009-04-04 11:37 ` [PATCH] [MTD] MXC NAND driver fixes (v2) Sascha Hauer
2009-04-06 9:11 ` Vladimir Barinov
[not found] ` <1239210502-822-1-git-send-email-vbarinov@embeddedalley.com>
2009-04-08 17:28 ` [PATCH] [MTD] MXC NAND driver fixes (v3) Sascha Hauer
2009-04-29 10:52 ` Holger Schurig
2009-04-30 10:29 ` Vladimir Barinov
2009-04-30 11:09 ` Holger Schurig
2009-04-30 11:42 ` Vladimir Barinov
2009-04-30 12:30 ` Holger Schurig
2009-04-29 11:12 ` Holger Schurig
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=49D5C704.6010403@embeddedalley.com \
--to=vbarinov@embeddedalley.com \
--cc=LW@KARO-electronics.de \
--cc=dwmw2@infradead.org \
--cc=linux-mtd@lists.infradead.org \
--cc=s.hauer@pengutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.