All of lore.kernel.org
 help / color / mirror / Atom feed
From: Huang Shijie <b32955@freescale.com>
To: <dedekind1@gmail.com>
Cc: Huang Shijie <b32955@freescale.com>,
	koen.beel.barco@gmail.com, w.sang@pengutronix.de,
	marek.vasut@gmail.com, linux-mtd@lists.infradead.org,
	shijie8@gmail.com, s.hauer@pengutronix.de,
	linux-arm-kernel@lists.infradead.org
Subject: [PATCH v12 0/3] add the GPMI controller driver for IMX23/IMX28
Date: Thu, 8 Sep 2011 10:47:08 +0800	[thread overview]
Message-ID: <1315450031-6371-1-git-send-email-b32955@freescale.com> (raw)

The patch set is based on Artem's tree:
	http://git.infradead.org/users/dedekind/l2-mtd-2.6.git

The general-purpose media interface(GPMI) controller is a flexible interface
to up to several NAND flashs.

The Bose Ray-Choudhury Hocquenghem(BCH) module is a hardware ECC accelerator.

With the help of BCH, the GPMI controller can choose to do the hardware ECC or
not.

This driver is a _pure_ MTD NAND controller driver now.


The driver depends on another GPMI-NAND device patch set, you can find them at :
	[1] http://marc.info/?l=linux-arm-kernel&m=131416901319573&w=2
	[2] http://marc.info/?l=linux-arm-kernel&m=131416912319668&w=2
	[3] http://marc.info/?l=linux-arm-kernel&m=131416891119504&w=2
	[4] http://marc.info/?l=linux-arm-kernel&m=131416896219539&w=2

Test environment:
	Using imx23 and imx28 boards for test. 

	imx23 :
	console=ttyAMA0,115200 mtdparts=gpmi-nfc:20m(boot),-(user)
	Tested by USB boot and NAND boot.

        imx28 :
	#console=ttyAMA0,115200 root=/dev/mmcblk0p3 rw rootwait 
	Tested by SD card boot mode.

v11 --> v12:
	[0] remove debug log level mechanism.
	[1] replace BUG/BUG_ON() with pr_err()
	[2] fix compiling warnings
	[3] optimize the calculation of BCH's geometry.

v10 --> v11:
	[0] tiny fixes.
	[1] optimize the calculation of BCH's geometry.
	[2] renames

v9 --> v10:
	[0] fix DMA timeout bug by adding custom routine for reset blocks.
	[1] remove mil{} 
	[2] add gpmi_hw_ecclayout.
	[3] add ecc_write_oob() again to prohibit the mtd ioctl : MEMWRITEOOB
	[4] change pr_info to dev_dbg() or pr_err().
	[5] merge the all the dump functions into gpmi_dump_info().
	[6] remove parse_mtd_partitions(), and use mtd_device_parse_register().
	[7] move the the debug control code from gpmi-nand.h to gpmi-nand.c
	[8] renames
	[9] others

v8 --> v9:
	[0] remove the ONFI nand code, it will cause the DMA timeout in the ONFI nand.
	[1] remove sysfs entry.
	[2] remove kernel command parameter.
	[3] report to ecclayout that we will use all the page + OOB.
		remove the ->ecc_write_oob().
	[4] add our own block_markbad() hook.
	[5] rename some functions from mil_* to gpmi_*.
	[6] replace the __raw_readl/__raw_writel to readl/writel.
	[7] others

v7 --> v8:
	[0] rename the name from `GPMI-NFC` to `GPMI-NAND`
	[1] remove the `hal` layer, and change it to function library.
	[2] Do not use ~0 to initialize the DMA address.
	[3] fix the issue : several DMA channels share the same IRQ.
	[4] DMA timeout issue. I use the .config created by `make mxs_defconfig`
	    and the bug never occur. It seems some other module has impact to the
	    DMA.
	    Of course, you should enable the UBIFS,MTD_CHAR and GPMI for
	    the .config. You can also disable the SPIN-LOCK/MUTEX debug features.
	[5] add function to print out the GPMI registers.	    
	[6] others.	    

v6 --> v7:
	[0] remove the function wrapping the clock.
	[1] use the module_param() for debugging.
	[2] use the new interface of MTD partitions.
		replace add_mtd_partitions() with mtd_device_register().
	[3] use pr_info() to print log.
	[4] add `__devinit` for some functions, etc.
	[5] add `gpmi_nfc` to control the GPMI-NFC driver's initialization.
	[6] others.

v5 --> v6:
	[0] split out the IMX23/IMX28 arch code to separate patches.
	[1] fix bug : missing empty item in the end of platform_id array.
	[2] inconsistent identation.
	[3] others

v4 --> v5:
	[0] rename the files.
	[1] fix PM bug
	[2] remove the rom_helper code, and move the necessary initialization code
		to the main file.
	[3] change the macros from CPU_IS_* to GPMI_IS_*
	[4] remove the default partition layout init code. revert back the 
		partition parsing command line code.
	[5] others

v3 --> v4:
	[0] use the nand_ids{} as the nand database, drop my own database.
	[1] remove the patch for DMA enginer, Shawn will submit his own version.
	[2] use the platform_id to distinguish different Archs.
	[3] fix the strange coding style.
	[4] others.

v2 --> v3:
	[0] merge the imx23 and imx28 into one file(including the header file).
	[1] remove the unuse registers in the headers.
	[2] fix DMA bugs
	[3] add bus width field to nand_attr{}
	[4] others

v1 --> v2:
	[0] merge the common files into the gpmi-nfc-main.c
	[1] change the code to get the clock.
	[2] remove the timing in the nand_device_info{}
	[3] fix DMA errors
	[4] add the nand_device_info.[ch] to generic code
	[5] use the chip->onfi_version for the ONFI nand
	[6] useless init
	[7] others

Huang Shijie (3):
  MTD : add the common code for GPMI-NAND controller driver
  MTD : add helper functions library and header files for GPMI NAND
    driver
  MTD : add GPMI-NAND driver in the config and Makefile

 drivers/mtd/nand/Kconfig               |   13 +
 drivers/mtd/nand/Makefile              |    1 +
 drivers/mtd/nand/gpmi-nand/Makefile    |    3 +
 drivers/mtd/nand/gpmi-nand/bch-regs.h  |   84 ++
 drivers/mtd/nand/gpmi-nand/gpmi-lib.c  | 1057 +++++++++++++++++++++
 drivers/mtd/nand/gpmi-nand/gpmi-nand.c | 1619 ++++++++++++++++++++++++++++++++
 drivers/mtd/nand/gpmi-nand/gpmi-nand.h |  273 ++++++
 drivers/mtd/nand/gpmi-nand/gpmi-regs.h |  172 ++++
 8 files changed, 3222 insertions(+), 0 deletions(-)
 create mode 100644 drivers/mtd/nand/gpmi-nand/Makefile
 create mode 100644 drivers/mtd/nand/gpmi-nand/bch-regs.h
 create mode 100644 drivers/mtd/nand/gpmi-nand/gpmi-lib.c
 create mode 100644 drivers/mtd/nand/gpmi-nand/gpmi-nand.c
 create mode 100644 drivers/mtd/nand/gpmi-nand/gpmi-nand.h
 create mode 100644 drivers/mtd/nand/gpmi-nand/gpmi-regs.h

WARNING: multiple messages have this Message-ID (diff)
From: b32955@freescale.com (Huang Shijie)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v12 0/3] add the GPMI controller driver for IMX23/IMX28
Date: Thu, 8 Sep 2011 10:47:08 +0800	[thread overview]
Message-ID: <1315450031-6371-1-git-send-email-b32955@freescale.com> (raw)

The patch set is based on Artem's tree:
	http://git.infradead.org/users/dedekind/l2-mtd-2.6.git

The general-purpose media interface(GPMI) controller is a flexible interface
to up to several NAND flashs.

The Bose Ray-Choudhury Hocquenghem(BCH) module is a hardware ECC accelerator.

With the help of BCH, the GPMI controller can choose to do the hardware ECC or
not.

This driver is a _pure_ MTD NAND controller driver now.


The driver depends on another GPMI-NAND device patch set, you can find them at :
	[1] http://marc.info/?l=linux-arm-kernel&m=131416901319573&w=2
	[2] http://marc.info/?l=linux-arm-kernel&m=131416912319668&w=2
	[3] http://marc.info/?l=linux-arm-kernel&m=131416891119504&w=2
	[4] http://marc.info/?l=linux-arm-kernel&m=131416896219539&w=2

Test environment:
	Using imx23 and imx28 boards for test. 

	imx23 :
	console=ttyAMA0,115200 mtdparts=gpmi-nfc:20m(boot),-(user)
	Tested by USB boot and NAND boot.

        imx28 :
	#console=ttyAMA0,115200 root=/dev/mmcblk0p3 rw rootwait 
	Tested by SD card boot mode.

v11 --> v12:
	[0] remove debug log level mechanism.
	[1] replace BUG/BUG_ON() with pr_err()
	[2] fix compiling warnings
	[3] optimize the calculation of BCH's geometry.

v10 --> v11:
	[0] tiny fixes.
	[1] optimize the calculation of BCH's geometry.
	[2] renames

v9 --> v10:
	[0] fix DMA timeout bug by adding custom routine for reset blocks.
	[1] remove mil{} 
	[2] add gpmi_hw_ecclayout.
	[3] add ecc_write_oob() again to prohibit the mtd ioctl : MEMWRITEOOB
	[4] change pr_info to dev_dbg() or pr_err().
	[5] merge the all the dump functions into gpmi_dump_info().
	[6] remove parse_mtd_partitions(), and use mtd_device_parse_register().
	[7] move the the debug control code from gpmi-nand.h to gpmi-nand.c
	[8] renames
	[9] others

v8 --> v9:
	[0] remove the ONFI nand code, it will cause the DMA timeout in the ONFI nand.
	[1] remove sysfs entry.
	[2] remove kernel command parameter.
	[3] report to ecclayout that we will use all the page + OOB.
		remove the ->ecc_write_oob().
	[4] add our own block_markbad() hook.
	[5] rename some functions from mil_* to gpmi_*.
	[6] replace the __raw_readl/__raw_writel to readl/writel.
	[7] others

v7 --> v8:
	[0] rename the name from `GPMI-NFC` to `GPMI-NAND`
	[1] remove the `hal` layer, and change it to function library.
	[2] Do not use ~0 to initialize the DMA address.
	[3] fix the issue : several DMA channels share the same IRQ.
	[4] DMA timeout issue. I use the .config created by `make mxs_defconfig`
	    and the bug never occur. It seems some other module has impact to the
	    DMA.
	    Of course, you should enable the UBIFS,MTD_CHAR and GPMI for
	    the .config. You can also disable the SPIN-LOCK/MUTEX debug features.
	[5] add function to print out the GPMI registers.	    
	[6] others.	    

v6 --> v7:
	[0] remove the function wrapping the clock.
	[1] use the module_param() for debugging.
	[2] use the new interface of MTD partitions.
		replace add_mtd_partitions() with mtd_device_register().
	[3] use pr_info() to print log.
	[4] add `__devinit` for some functions, etc.
	[5] add `gpmi_nfc` to control the GPMI-NFC driver's initialization.
	[6] others.

v5 --> v6:
	[0] split out the IMX23/IMX28 arch code to separate patches.
	[1] fix bug : missing empty item in the end of platform_id array.
	[2] inconsistent identation.
	[3] others

v4 --> v5:
	[0] rename the files.
	[1] fix PM bug
	[2] remove the rom_helper code, and move the necessary initialization code
		to the main file.
	[3] change the macros from CPU_IS_* to GPMI_IS_*
	[4] remove the default partition layout init code. revert back the 
		partition parsing command line code.
	[5] others

v3 --> v4:
	[0] use the nand_ids{} as the nand database, drop my own database.
	[1] remove the patch for DMA enginer, Shawn will submit his own version.
	[2] use the platform_id to distinguish different Archs.
	[3] fix the strange coding style.
	[4] others.

v2 --> v3:
	[0] merge the imx23 and imx28 into one file(including the header file).
	[1] remove the unuse registers in the headers.
	[2] fix DMA bugs
	[3] add bus width field to nand_attr{}
	[4] others

v1 --> v2:
	[0] merge the common files into the gpmi-nfc-main.c
	[1] change the code to get the clock.
	[2] remove the timing in the nand_device_info{}
	[3] fix DMA errors
	[4] add the nand_device_info.[ch] to generic code
	[5] use the chip->onfi_version for the ONFI nand
	[6] useless init
	[7] others

Huang Shijie (3):
  MTD : add the common code for GPMI-NAND controller driver
  MTD : add helper functions library and header files for GPMI NAND
    driver
  MTD : add GPMI-NAND driver in the config and Makefile

 drivers/mtd/nand/Kconfig               |   13 +
 drivers/mtd/nand/Makefile              |    1 +
 drivers/mtd/nand/gpmi-nand/Makefile    |    3 +
 drivers/mtd/nand/gpmi-nand/bch-regs.h  |   84 ++
 drivers/mtd/nand/gpmi-nand/gpmi-lib.c  | 1057 +++++++++++++++++++++
 drivers/mtd/nand/gpmi-nand/gpmi-nand.c | 1619 ++++++++++++++++++++++++++++++++
 drivers/mtd/nand/gpmi-nand/gpmi-nand.h |  273 ++++++
 drivers/mtd/nand/gpmi-nand/gpmi-regs.h |  172 ++++
 8 files changed, 3222 insertions(+), 0 deletions(-)
 create mode 100644 drivers/mtd/nand/gpmi-nand/Makefile
 create mode 100644 drivers/mtd/nand/gpmi-nand/bch-regs.h
 create mode 100644 drivers/mtd/nand/gpmi-nand/gpmi-lib.c
 create mode 100644 drivers/mtd/nand/gpmi-nand/gpmi-nand.c
 create mode 100644 drivers/mtd/nand/gpmi-nand/gpmi-nand.h
 create mode 100644 drivers/mtd/nand/gpmi-nand/gpmi-regs.h

             reply	other threads:[~2011-09-08  2:47 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-09-08  2:47 Huang Shijie [this message]
2011-09-08  2:47 ` [PATCH v12 0/3] add the GPMI controller driver for IMX23/IMX28 Huang Shijie
2011-09-08  2:47 ` [PATCH v12 1/3] MTD : add the common code for GPMI-NAND controller driver Huang Shijie
2011-09-08  2:47   ` Huang Shijie
2011-09-08  2:47 ` [PATCH v12 2/3] MTD : add helper functions library and header files for GPMI NAND driver Huang Shijie
2011-09-08  2:47   ` Huang Shijie
2011-09-08  2:47 ` [PATCH v12 3/3] MTD : add GPMI-NAND driver in the config and Makefile Huang Shijie
2011-09-08  2:47   ` Huang Shijie
2011-09-09 19:56 ` [PATCH v12 0/3] add the GPMI controller driver for IMX23/IMX28 Koen Beel
2011-09-09 19:56   ` Koen Beel
2011-09-11 10:31 ` Artem Bityutskiy
2011-09-11 10:31   ` Artem Bityutskiy
2011-09-12  4:34   ` Huang Shijie
2011-09-12  4:34     ` Huang Shijie
2011-09-15  7:55 ` Lothar Waßmann
2011-09-15  7:55   ` Lothar Waßmann
2011-09-15  8:26   ` Huang Shijie
2011-09-15  8:28   ` Huang Shijie
2011-09-15  8:28     ` Huang Shijie
2011-09-15  9:12     ` Lothar Waßmann
2011-09-15  9:12       ` Lothar Waßmann
2011-09-15  9:20       ` Huang Shijie
2011-09-15  9:20         ` Huang Shijie
2011-09-26  7:42       ` Huang Shijie
2011-09-26  7:42         ` Huang Shijie
2011-09-15 10:04   ` Huang Shijie
2011-09-15 10:04     ` Huang Shijie
2011-09-15 15:24     ` gianluca
2011-09-15 15:24       ` gianluca
2011-09-16  7:50       ` Lothar Waßmann
2011-09-16  7:50         ` Lothar Waßmann
2011-09-16 13:43     ` Lothar Waßmann
2011-09-16 13:43       ` Lothar Waßmann
2011-09-18 11:40       ` Huang Shijie
2011-09-18 11:40         ` Huang Shijie

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=1315450031-6371-1-git-send-email-b32955@freescale.com \
    --to=b32955@freescale.com \
    --cc=dedekind1@gmail.com \
    --cc=koen.beel.barco@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=marek.vasut@gmail.com \
    --cc=s.hauer@pengutronix.de \
    --cc=shijie8@gmail.com \
    --cc=w.sang@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.