diff mbox

[U-Boot,v3,6/8] mtd: vf610_nfc: add Freescale NFC controller configs to Kconfig

Message ID 1431104833-9731-7-git-send-email-stefan@agner.ch
State Accepted
Delegated to: Scott Wood
Headers show

Commit Message

Stefan Agner May 8, 2015, 5:07 p.m. UTC
This commit allows users to enable/disable the Freescale NFC
controller found in systems like Vybrid (VF610), MPC5125, MCF54418
or Kinetis K70 via Kconfig with more detailed help docs.

Signed-off-by: Stefan Agner <stefan@agner.ch>
---
 configs/colibri_vf_defconfig |  2 ++
 configs/vf610twr_defconfig   |  2 ++
 doc/README.nand              | 18 ------------------
 drivers/mtd/nand/Kconfig     | 30 ++++++++++++++++++++++++++++++
 include/configs/colibri_vf.h |  2 --
 include/configs/vf610twr.h   |  3 ---
 6 files changed, 34 insertions(+), 23 deletions(-)

Comments

Stefano Babic May 11, 2015, 7:51 a.m. UTC | #1
Hi Stefan,

On 08/05/2015 19:07, Stefan Agner wrote:
> This commit allows users to enable/disable the Freescale NFC
> controller found in systems like Vybrid (VF610), MPC5125, MCF54418
> or Kinetis K70 via Kconfig with more detailed help docs.
> 
> Signed-off-by: Stefan Agner <stefan@agner.ch>
> ---
>  configs/colibri_vf_defconfig |  2 ++
>  configs/vf610twr_defconfig   |  2 ++
>  doc/README.nand              | 18 ------------------
>  drivers/mtd/nand/Kconfig     | 30 ++++++++++++++++++++++++++++++
>  include/configs/colibri_vf.h |  2 --
>  include/configs/vf610twr.h   |  3 ---
>  6 files changed, 34 insertions(+), 23 deletions(-)
> 
> diff --git a/configs/colibri_vf_defconfig b/configs/colibri_vf_defconfig
> index cef5a9e..cdee835 100644
> --- a/configs/colibri_vf_defconfig
> +++ b/configs/colibri_vf_defconfig
> @@ -1,3 +1,5 @@
>  CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/toradex/colibri_vf/imximage.cfg,ENV_IS_IN_NAND,IMX_NAND"
>  CONFIG_ARM=y
>  CONFIG_TARGET_COLIBRI_VF=y
> +CONFIG_NAND_VF610_NFC=y
> +CONFIG_SYS_NAND_VF610_NFC_60_ECC_BYTES=y
> \ No newline at end of file
> diff --git a/configs/vf610twr_defconfig b/configs/vf610twr_defconfig
> index 7de374a..5e0ac9f 100644
> --- a/configs/vf610twr_defconfig
> +++ b/configs/vf610twr_defconfig
> @@ -1,3 +1,5 @@
>  CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/vf610twr/imximage.cfg,ENV_IS_IN_MMC"
>  CONFIG_ARM=y
>  CONFIG_TARGET_VF610TWR=y
> +CONFIG_NAND_VF610_NFC=y
> +CONFIG_SYS_NAND_BUSWIDTH_16BIT=y
> diff --git a/doc/README.nand b/doc/README.nand
> index 46d7edd..0ff5633 100644
> --- a/doc/README.nand
> +++ b/doc/README.nand
> @@ -188,24 +188,6 @@ Configuration Options:
>  	This is used by SoC platforms which do not have built-in ELM
>  	hardware engine required for BCH ECC correction.
>  
> -   CONFIG_SYS_NAND_BUSWIDTH_16BIT
> -	Indicates that NAND device has 16-bit wide data-bus. In absence of this
> -	config, bus-width of NAND device is assumed to be either 8-bit and later
> -	determined by reading ONFI params.
> -	Above config is useful when NAND device's bus-width information cannot
> -	be determined from on-chip ONFI params, like in following scenarios:
> -	- SPL boot does not support reading of ONFI parameters. This is done to
> -	  keep SPL code foot-print small.
> -	- In current U-Boot flow using nand_init(), driver initialization
> -	  happens in board_nand_init() which is called before any device probe
> -	  (nand_scan_ident + nand_scan_tail), thus device's ONFI parameters are
> -	  not available while configuring controller. So a static CONFIG_NAND_xx
> -	  is needed to know the device's bus-width in advance.
> -	Some drivers using above config are:
> -	drivers/mtd/nand/mxc_nand.c
> -	drivers/mtd/nand/ndfc.c
> -	drivers/mtd/nand/omap_gpmc.c
> -
>  
>  Platform specific options
>  =========================
> diff --git a/drivers/mtd/nand/Kconfig b/drivers/mtd/nand/Kconfig
> index 72825c3..0a9e96f 100644
> --- a/drivers/mtd/nand/Kconfig
> +++ b/drivers/mtd/nand/Kconfig
> @@ -32,6 +32,36 @@ config NAND_DENALI_SPARE_AREA_SKIP_BYTES
>  	  of OOB area before last ECC sector data starts.  This is potentially
>  	  used to preserve the bad block marker in the OOB area.
>  
> +config NAND_VF610_NFC
> +	bool "Support for Freescale NFC for VF610/MPC5125"
> +	select SYS_NAND_SELF_INIT
> +	help
> +	  Enables support for NAND Flash Controller on some Freescale
> +	  processors like the VF610, MPC5125, MCF54418 or Kinetis K70.
> +	  The driver supports a maximum 2k page size. The driver
> +	  currently does not support hardware ECC.
> +
> +comment "Generic NAND options"
> +
> +# Enhance depends when converting drivers to Kconfig which use this config
> +# option (mxc_nand, ndfc, omap_gpmc).
> +config SYS_NAND_BUSWIDTH_16BIT
> +	bool "Use 16-bit NAND interface"
> +	depends on NAND_VF610_NFC
> +	help
> +	  Indicates that NAND device has 16-bit wide data-bus. In absence of this
> +	  config, bus-width of NAND device is assumed to be either 8-bit and later
> +	  determined by reading ONFI params.
> +	  Above config is useful when NAND device's bus-width information cannot
> +	  be determined from on-chip ONFI params, like in following scenarios:
> +	  - SPL boot does not support reading of ONFI parameters. This is done to
> +	    keep SPL code foot-print small.
> +	  - In current U-Boot flow using nand_init(), driver initialization
> +	    happens in board_nand_init() which is called before any device probe
> +	    (nand_scan_ident + nand_scan_tail), thus device's ONFI parameters are
> +	    not available while configuring controller. So a static CONFIG_NAND_xx
> +	    is needed to know the device's bus-width in advance.
> +
>  if SPL
>  
>  config SPL_NAND_DENALI
> diff --git a/include/configs/colibri_vf.h b/include/configs/colibri_vf.h
> index 414600a..b3c73bb 100644
> --- a/include/configs/colibri_vf.h
> +++ b/include/configs/colibri_vf.h
> @@ -50,8 +50,6 @@
>  
>  /* NAND support */
>  #define CONFIG_CMD_NAND
> -#define CONFIG_NAND_VF610_NFC
> -#define CONFIG_SYS_NAND_SELF_INIT
>  #define CONFIG_SYS_MAX_NAND_DEVICE	1
>  #define CONFIG_SYS_NAND_BASE		NFC_BASE_ADDR
>  
> diff --git a/include/configs/vf610twr.h b/include/configs/vf610twr.h
> index 05bc7d0..621aa13 100644
> --- a/include/configs/vf610twr.h
> +++ b/include/configs/vf610twr.h
> @@ -50,10 +50,7 @@
>  #define CONFIG_CMD_NAND_TRIMFFS
>  
>  #ifdef CONFIG_CMD_NAND
> -#define CONFIG_NAND_VF610_NFC
> -#define CONFIG_SYS_NAND_SELF_INIT
>  #define CONFIG_USE_ARCH_MEMCPY
> -#define CONFIG_SYS_NAND_BUSWIDTH_16BIT
>  #define CONFIG_SYS_MAX_NAND_DEVICE	1
>  #define CONFIG_SYS_NAND_BASE		NFC_BASE_ADDR
>  

ok from my side - I guess the whole patchset will be merged through
Scott's tree and not iMX.

Acked-by: Stefano Babic <sbabic@denx.de>

Best regards,
Stefano Babic
Scott Wood May 24, 2015, 7:39 p.m. UTC | #2
On Fri, May 08, 2015 at 07:07:11PM +0200, Stefan Agner wrote:
> This commit allows users to enable/disable the Freescale NFC
> controller found in systems like Vybrid (VF610), MPC5125, MCF54418
> or Kinetis K70 via Kconfig with more detailed help docs.
> 
> Signed-off-by: Stefan Agner <stefan@agner.ch>
> Acked-by: Stefano Babic <sbabic@denx.de>
> ---
>  configs/colibri_vf_defconfig |  2 ++
>  configs/vf610twr_defconfig   |  2 ++
>  doc/README.nand              | 18 ------------------
>  drivers/mtd/nand/Kconfig     | 30 ++++++++++++++++++++++++++++++
>  include/configs/colibri_vf.h |  2 --
>  include/configs/vf610twr.h   |  3 ---
>  6 files changed, 34 insertions(+), 23 deletions(-)

vf610twr_nand:

drivers/mtd/nand/built-in.o: In function `nand_init_chip':
build/../drivers/mtd/nand/nand.c:91: undefined reference to `board_nand_init'
arm-linux-gnueabi-ld.bfd: BFD (GNU Binutils) 2.23.1.20121113 assertion fail /opt/eldk/build/eldk-rel-v5.4-2013-08-02-9a46fd5-armv7a/tmp/work/i686-nativesdk-eldk-linux/binutils-cross-canadian-arm/2.23.1-r3/binutils-2.23.1/bfd/elf32-arm.c:7680
arm-linux-gnueabi-ld.bfd: error: required section '.rel.plt' not found in the linker script
arm-linux-gnueabi-ld.bfd: final link failed: Invalid operation
make[1]: *** [u-boot] Error 1
make: *** [sub-make] Error 2

To (hopefully; buildman running now) fix this I've updated
vf610twr_nand_defconfig with the same changes as vf610twr_defconfig.  Let
me know if that's not what you want me to do.

-Scott
Stefan Agner May 24, 2015, 10:13 p.m. UTC | #3
On 2015-05-24 21:39, Scott Wood wrote:
> On Fri, May 08, 2015 at 07:07:11PM +0200, Stefan Agner wrote:
>> This commit allows users to enable/disable the Freescale NFC
>> controller found in systems like Vybrid (VF610), MPC5125, MCF54418
>> or Kinetis K70 via Kconfig with more detailed help docs.
>>
>> Signed-off-by: Stefan Agner <stefan@agner.ch>
>> Acked-by: Stefano Babic <sbabic@denx.de>
>> ---
>>  configs/colibri_vf_defconfig |  2 ++
>>  configs/vf610twr_defconfig   |  2 ++
>>  doc/README.nand              | 18 ------------------
>>  drivers/mtd/nand/Kconfig     | 30 ++++++++++++++++++++++++++++++
>>  include/configs/colibri_vf.h |  2 --
>>  include/configs/vf610twr.h   |  3 ---
>>  6 files changed, 34 insertions(+), 23 deletions(-)
> 
> vf610twr_nand:
> 
> drivers/mtd/nand/built-in.o: In function `nand_init_chip':
> build/../drivers/mtd/nand/nand.c:91: undefined reference to `board_nand_init'
> arm-linux-gnueabi-ld.bfd: BFD (GNU Binutils) 2.23.1.20121113 assertion
> fail
> /opt/eldk/build/eldk-rel-v5.4-2013-08-02-9a46fd5-armv7a/tmp/work/i686-nativesdk-eldk-linux/binutils-cross-canadian-arm/2.23.1-r3/binutils-2.23.1/bfd/elf32-arm.c:7680
> arm-linux-gnueabi-ld.bfd: error: required section '.rel.plt' not found
> in the linker script
> arm-linux-gnueabi-ld.bfd: final link failed: Invalid operation
> make[1]: *** [u-boot] Error 1
> make: *** [sub-make] Error 2
> 
> To (hopefully; buildman running now) fix this I've updated
> vf610twr_nand_defconfig with the same changes as vf610twr_defconfig.  Let
> me know if that's not what you want me to do.

Sorry about that. Your change makes sense, thx!

--
Stefan
diff mbox

Patch

diff --git a/configs/colibri_vf_defconfig b/configs/colibri_vf_defconfig
index cef5a9e..cdee835 100644
--- a/configs/colibri_vf_defconfig
+++ b/configs/colibri_vf_defconfig
@@ -1,3 +1,5 @@ 
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/toradex/colibri_vf/imximage.cfg,ENV_IS_IN_NAND,IMX_NAND"
 CONFIG_ARM=y
 CONFIG_TARGET_COLIBRI_VF=y
+CONFIG_NAND_VF610_NFC=y
+CONFIG_SYS_NAND_VF610_NFC_60_ECC_BYTES=y
\ No newline at end of file
diff --git a/configs/vf610twr_defconfig b/configs/vf610twr_defconfig
index 7de374a..5e0ac9f 100644
--- a/configs/vf610twr_defconfig
+++ b/configs/vf610twr_defconfig
@@ -1,3 +1,5 @@ 
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/vf610twr/imximage.cfg,ENV_IS_IN_MMC"
 CONFIG_ARM=y
 CONFIG_TARGET_VF610TWR=y
+CONFIG_NAND_VF610_NFC=y
+CONFIG_SYS_NAND_BUSWIDTH_16BIT=y
diff --git a/doc/README.nand b/doc/README.nand
index 46d7edd..0ff5633 100644
--- a/doc/README.nand
+++ b/doc/README.nand
@@ -188,24 +188,6 @@  Configuration Options:
 	This is used by SoC platforms which do not have built-in ELM
 	hardware engine required for BCH ECC correction.
 
-   CONFIG_SYS_NAND_BUSWIDTH_16BIT
-	Indicates that NAND device has 16-bit wide data-bus. In absence of this
-	config, bus-width of NAND device is assumed to be either 8-bit and later
-	determined by reading ONFI params.
-	Above config is useful when NAND device's bus-width information cannot
-	be determined from on-chip ONFI params, like in following scenarios:
-	- SPL boot does not support reading of ONFI parameters. This is done to
-	  keep SPL code foot-print small.
-	- In current U-Boot flow using nand_init(), driver initialization
-	  happens in board_nand_init() which is called before any device probe
-	  (nand_scan_ident + nand_scan_tail), thus device's ONFI parameters are
-	  not available while configuring controller. So a static CONFIG_NAND_xx
-	  is needed to know the device's bus-width in advance.
-	Some drivers using above config are:
-	drivers/mtd/nand/mxc_nand.c
-	drivers/mtd/nand/ndfc.c
-	drivers/mtd/nand/omap_gpmc.c
-
 
 Platform specific options
 =========================
diff --git a/drivers/mtd/nand/Kconfig b/drivers/mtd/nand/Kconfig
index 72825c3..0a9e96f 100644
--- a/drivers/mtd/nand/Kconfig
+++ b/drivers/mtd/nand/Kconfig
@@ -32,6 +32,36 @@  config NAND_DENALI_SPARE_AREA_SKIP_BYTES
 	  of OOB area before last ECC sector data starts.  This is potentially
 	  used to preserve the bad block marker in the OOB area.
 
+config NAND_VF610_NFC
+	bool "Support for Freescale NFC for VF610/MPC5125"
+	select SYS_NAND_SELF_INIT
+	help
+	  Enables support for NAND Flash Controller on some Freescale
+	  processors like the VF610, MPC5125, MCF54418 or Kinetis K70.
+	  The driver supports a maximum 2k page size. The driver
+	  currently does not support hardware ECC.
+
+comment "Generic NAND options"
+
+# Enhance depends when converting drivers to Kconfig which use this config
+# option (mxc_nand, ndfc, omap_gpmc).
+config SYS_NAND_BUSWIDTH_16BIT
+	bool "Use 16-bit NAND interface"
+	depends on NAND_VF610_NFC
+	help
+	  Indicates that NAND device has 16-bit wide data-bus. In absence of this
+	  config, bus-width of NAND device is assumed to be either 8-bit and later
+	  determined by reading ONFI params.
+	  Above config is useful when NAND device's bus-width information cannot
+	  be determined from on-chip ONFI params, like in following scenarios:
+	  - SPL boot does not support reading of ONFI parameters. This is done to
+	    keep SPL code foot-print small.
+	  - In current U-Boot flow using nand_init(), driver initialization
+	    happens in board_nand_init() which is called before any device probe
+	    (nand_scan_ident + nand_scan_tail), thus device's ONFI parameters are
+	    not available while configuring controller. So a static CONFIG_NAND_xx
+	    is needed to know the device's bus-width in advance.
+
 if SPL
 
 config SPL_NAND_DENALI
diff --git a/include/configs/colibri_vf.h b/include/configs/colibri_vf.h
index 414600a..b3c73bb 100644
--- a/include/configs/colibri_vf.h
+++ b/include/configs/colibri_vf.h
@@ -50,8 +50,6 @@ 
 
 /* NAND support */
 #define CONFIG_CMD_NAND
-#define CONFIG_NAND_VF610_NFC
-#define CONFIG_SYS_NAND_SELF_INIT
 #define CONFIG_SYS_MAX_NAND_DEVICE	1
 #define CONFIG_SYS_NAND_BASE		NFC_BASE_ADDR
 
diff --git a/include/configs/vf610twr.h b/include/configs/vf610twr.h
index 05bc7d0..621aa13 100644
--- a/include/configs/vf610twr.h
+++ b/include/configs/vf610twr.h
@@ -50,10 +50,7 @@ 
 #define CONFIG_CMD_NAND_TRIMFFS
 
 #ifdef CONFIG_CMD_NAND
-#define CONFIG_NAND_VF610_NFC
-#define CONFIG_SYS_NAND_SELF_INIT
 #define CONFIG_USE_ARCH_MEMCPY
-#define CONFIG_SYS_NAND_BUSWIDTH_16BIT
 #define CONFIG_SYS_MAX_NAND_DEVICE	1
 #define CONFIG_SYS_NAND_BASE		NFC_BASE_ADDR