From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mugunthan V N Date: Fri, 22 Apr 2016 10:36:04 +0530 Subject: [U-Boot] [PATCH 4/9] drivers: nand: implement a NAND uclass In-Reply-To: References: <1459510190-26306-1-git-send-email-mugunthanvnm@ti.com> <1459510190-26306-5-git-send-email-mugunthanvnm@ti.com> <57186B5C.1050506@ti.com> Message-ID: <5719B13C.4030200@ti.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Thursday 21 April 2016 07:41 PM, Simon Glass wrote: > Hi Mugunthan, > > On 20 April 2016 at 23:55, Mugunthan V N wrote: >> On Wednesday 20 April 2016 08:09 PM, Simon Glass wrote: >>> Hi Mugunthan, >>> >>> On 1 April 2016 at 05:29, Mugunthan V N wrote: >>>> Implement a NAND uclass so that the NAND devices can be >>>> accessed via the DM framework. >>>> >>>> Signed-off-by: Mugunthan V N >>>> --- >>>> drivers/mtd/nand/Kconfig | 10 +++++++ >>>> drivers/mtd/nand/Makefile | 2 ++ >>>> drivers/mtd/nand/nand-uclass.c | 62 ++++++++++++++++++++++++++++++++++++++++++ >>>> drivers/mtd/nand/nand.c | 6 +++- >>>> include/dm/uclass-id.h | 1 + >>>> include/nand.h | 5 ++++ >>>> 6 files changed, 85 insertions(+), 1 deletion(-) >>>> create mode 100644 drivers/mtd/nand/nand-uclass.c >>>> >>>> diff --git a/drivers/mtd/nand/Kconfig b/drivers/mtd/nand/Kconfig >>>> index 7787505..53b57b8 100644 >>>> --- a/drivers/mtd/nand/Kconfig >>>> +++ b/drivers/mtd/nand/Kconfig >>>> @@ -8,6 +8,16 @@ menuconfig NAND >>>> >>>> if NAND >>>> >>>> +config DM_NAND >>>> + bool "Enable driver model for NAND" >>>> + depends on NAND && DM >>>> + help >>>> + Enable driver model for NAND. The NAND interface is then >>>> + implemented by the NAND uclass. Multiple NAND devices can >>>> + be attached and used. The 'nand' command works as normal. >>>> + >>>> + If the NAND drivers doesn't support DM, say N. >>>> + >>>> config SYS_NAND_SELF_INIT >>>> bool >>>> help >>>> diff --git a/drivers/mtd/nand/Makefile b/drivers/mtd/nand/Makefile >>>> index 6fb3718..7745705 100644 >>>> --- a/drivers/mtd/nand/Makefile >>>> +++ b/drivers/mtd/nand/Makefile >>>> @@ -39,6 +39,8 @@ endif # not spl >>>> >>>> ifdef NORMAL_DRIVERS >>>> >>>> +obj-$(CONFIG_DM_NAND) += nand-uclass.o >>>> + >>>> obj-$(CONFIG_NAND_ECC_BCH) += nand_bch.o >>>> >>>> obj-$(CONFIG_NAND_ATMEL) += atmel_nand.o >>>> diff --git a/drivers/mtd/nand/nand-uclass.c b/drivers/mtd/nand/nand-uclass.c >>>> new file mode 100644 >>>> index 0000000..d68d357 >>>> --- /dev/null >>>> +++ b/drivers/mtd/nand/nand-uclass.c >>>> @@ -0,0 +1,62 @@ >>>> +/* >>>> + * NAND uclass driver for NAND bus. >>>> + * >>>> + * (C) Copyright 2012-2016 >>>> + * Texas Instruments Incorporated, >>>> + * >>>> + * SPDX-License-Identifier: GPL-2.0+ >>>> + */ >>>> + >>>> +#include >>>> +#include >>>> +#include >>>> +#include >>>> + >>>> +DECLARE_GLOBAL_DATA_PTR; >>>> + >>>> +#ifdef CONFIG_DM_NAND >>>> + >>>> +nand_info_t *get_nand_dev_by_index(int idx) >>>> +{ >>>> + nand_info_t *nand; >>>> + struct udevice *dev; >>>> + int ret; >>>> + >>>> + ret = uclass_get_device(UCLASS_NAND, idx, &dev); >>>> + if (ret) { >>>> + error("NAND device (%d) not found\n", idx); >>> >>> This should return -ENODEV. Also please avoid printf() in drivers. The >>> caller can report the error. >>> >> >> Return type is pointer so returned NULL and NULL denotes no dev. >> Will change this error to debug in v2. > > OK, I see that this is the existing API. > >> >>>> + return NULL; >>>> + } >>>> + >>>> + nand = (nand_info_t *)dev_get_uclass_priv(dev); >>>> + if (!nand) { >>>> + error("Nand device not ready\n"); >>>> + return NULL; >>>> + } >>> >>> But if the device has been probed ((with uclass_get_device()) then >>> this cannot be NULL. >> >> This check is just a failsafe. ideally it should not fail here. > > I cannot get to probe the device without this data, since this would > be a bug in DM. So the check has no value. > Okay then I will remove this check as it doesn't add value. Regards Mugunthan V N