Skip to content

OMAP GPMC driver conversion

Afzal Mohammed linux-arm-kernel linux-mtd linux-omap 1 version New

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest39 patches 0 repliesNew

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/39ARM: OMAP2+: gpmc: driver conversionarch/arm/mach-omap2/gpmc.c arch/arm/plat-omap/include/plat/gpmc.h+872 -980 replies
2/39ARM: OMAP2+: gpmc: Adapt to HWMODarch/arm/mach-omap2/gpmc.c arch/arm/plat-omap/include/plat/gpmc.h+38 -150 replies
3/39ARM: OMAP2+: gpmc: register details for nand driverarch/arm/mach-omap2/gpmc.c arch/arm/plat-omap/include/plat/gpmc.h arch/arm/plat-omap/include/plat/nand.h+42 -00 replies
4/39ARM: OMAP2+: gpmc: Acquire NAND CS valuearch/arm/mach-omap2/gpmc.c+31 -10 replies
5/39ARM: OMAP2+: nand: create platform data structurearch/arm/mach-omap2/board-devkit8000.c arch/arm/mach-omap2/board-flash.c arch/arm/mach-omap2/board-flash.h +7 more+60 -930 replies
6/39ARM: OMAP2+: onenand: return value in init functionarch/arm/mach-omap2/board-flash.c arch/arm/mach-omap2/board-flash.h+16 -100 replies
7/39ARM: OMAP2+: gpmc-nand: Adapt to use gpmc driverarch/arm/mach-omap2/gpmc-nand.c arch/arm/plat-omap/include/plat/nand.h+35 -570 replies
8/39ARM: OMAP2+: gpmc-onenand: Adapt to use gpmc driverarch/arm/mach-omap2/gpmc-onenand.c arch/arm/plat-omap/include/plat/onenand.h+61 -570 replies
9/39ARM: OMAP2+: flash: Adapt to gpmc driverarch/arm/mach-omap2/board-3430sdp.c arch/arm/mach-omap2/board-3630sdp.c arch/arm/mach-omap2/board-flash.c +1 more+58 -470 replies
10/39ARM: OMAP2+: gpmc-smsc911x: Adapt to use gpmc driverarch/arm/mach-omap2/gpmc-smsc911x.c arch/arm/plat-omap/include/plat/gpmc-smsc911x.h+39 -290 replies
11/39ARM: OMAP2+: gpmc-smc91x: Adapt to use gpmc driverarch/arm/mach-omap2/board-2430sdp.c arch/arm/mach-omap2/board-3430sdp.c arch/arm/mach-omap2/board-3630sdp.c +2 more+47 -540 replies
12/39ARM: OMAP2+: gpmc-tusb6010: Adapt to gpmc driverarch/arm/mach-omap2/usb-tusb6010.c include/linux/usb/musb.h+70 -1110 replies
13/39ARM: OMAP3: hwmod data: add gpmcarch/arm/mach-omap2/omap_hwmod_3xxx_data.c+52 -00 replies
14/39ARM: OMAP2xxx: hwmod data: add gpmcarch/arm/mach-omap2/omap_hwmod_2420_data.c arch/arm/mach-omap2/omap_hwmod_2430_data.c arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c +2 more+80 -00 replies
15/39mtd: nand: omap2: obtain memory from resourcearch/arm/plat-omap/include/plat/nand.h drivers/mtd/nand/omap2.c+14 -70 replies
16/39mtd: nand: omap2: use gpmc provided irqsdrivers/mtd/nand/omap2.c+42 -250 replies
17/39mtd: nand: omap2: handle nand on gpmcdrivers/mtd/nand/omap2.c+165 -440 replies
18/39mtd: onenand: omap: obtain memory from resourcedrivers/mtd/onenand/omap2.c+16 -130 replies
19/39ARM: OMAP2+: board omap3evm: gpmc driver adaptationarch/arm/mach-omap2/board-omap3evm.c+13 -10 replies
20/39ARM: OMAP2+: board omap3beagle: gpmc driver adaptationarch/arm/mach-omap2/board-omap3beagle.c+17 -10 replies
21/39ARM: OMAP2+: board apollon: gpmc driver adaptationarch/arm/mach-omap2/board-apollon.c+38 -1140 replies
22/39ARM: OMAP2+: board h4: gpmc driver adaptationarch/arm/mach-omap2/board-h4.c+15 -1150 replies
23/39ARM: OMAP2+: board 3630sdp: gpmc driver adaptationarch/arm/mach-omap2/board-3630sdp.c+19 -40 replies
24/39ARM: OMAP2+: board 3430sdp: gpmc driver adaptationarch/arm/mach-omap2/board-3430sdp.c+15 -20 replies
25/39ARM: OMAP2+: board 2430sdp: gpmc driver adaptationarch/arm/mach-omap2/board-2430sdp.c+25 -170 replies
26/39ARM: OMAP2+: board cm-t3517: gpmc driver adaptationarch/arm/mach-omap2/board-cm-t3517.c+8 -20 replies
27/39ARM: OMAP2+: board cm-t35: gpmc driver adaptationarch/arm/mach-omap2/board-cm-t35.c+19 -20 replies
28/39ARM: OMAP2+: board ldp: gpmc driver adaptationarch/arm/mach-omap2/board-ldp.c+23 -30 replies
29/39ARM: OMAP2+: board n8x0: gpmc driver adaptationarch/arm/mach-omap2/board-n8x0.c+15 -30 replies
30/39ARM: OMAP2+: board omap3logic: gpmc driver adaptationarch/arm/mach-omap2/board-omap3logic.c+12 -10 replies
31/39ARM: OMAP2+: board omap3pandora: gpmc driver adaptationarch/arm/mach-omap2/board-omap3pandora.c+9 -20 replies
32/39ARM: OMAP2+: board omap3stalker: gpmc driver adaptationarch/arm/mach-omap2/board-omap3stalker.c+12 -10 replies
33/39ARM: OMAP2+: board omap4pcm049: gpmc driver adaptationarch/arm/mach-omap2/board-omap4pcm049.c+12 -10 replies
34/39ARM: OMAP2+: board overo: gpmc driver adaptationarch/arm/mach-omap2/board-overo.c+26 -30 replies
35/39ARM: OMAP2+: board rm680: gpmc driver adaptationarch/arm/mach-omap2/board-rm680.c+9 -10 replies
36/39ARM: OMAP2+: board rx51: gpmc driver adaptationarch/arm/mach-omap2/board-rx51-peripherals.c+15 -20 replies
37/39ARM: OMAP2+: board zoom-debugboard: gpmc driver adaptationarch/arm/mach-omap2/board-zoom-debugboard.c+27 -200 replies
38/39OMAP3: igep0020: Add support for Micron NAND Flash storage memoryarch/arm/mach-omap2/board-igep0020.c+31 -440 replies
39/39ARM: OMAP2+: board igep0020: gpmc driver adaptationarch/arm/mach-omap2/board-igep0020.c+28 -40 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [PATCH 00/39] OMAP GPMC driver conversion

Hi,

GPMC driver conversion patch series. Some peripherals has GPMC helper functions, these has been modified to cater to the needs of GPMC driver. All the boards using GPMC has been adapted to use the new GPMC driver.

GPMC HWMOD entry for OMAP2/3 has been added. On OMAP3, kernel does spit "omap_hwmod: gpmc: cannot be enabled for reset (3)", but peripherals connected via GPMC are working. Really shaky about OMAP2 GPMC HWMOD entry. Would be helpful if someone can help me in resolving warning on OMAP3 & verify whether OMAP2 entry is proper. The series adapts to HWMOD.

Drivers, NAND & OneNAND of OMAP has been modified to make use of GPMC changes & cleaned up the now unnecessary exported symbol usages.

This series has been made on top of,
5e136da Linux-omap rebuilt: Updated to -rc5,
A patch by Javier Martinez Canillas <[email protected]>,
OMAP3: igep0020: Add support for Micron NAND Flash storage memory, has also been incorporated into the series as this was necessary for igep0020 board.

This has been tested on omap3 evm (SMSC911x) & beagle board (NAND)

I would need help to get these changes tested on other boards using GPMC. Expected problematic boards are those having OMAP2xxx SoCs, apollon board. In the case of apollon, in addition to it being OMAP2xxx, it was modified to use gpmc_smc91x_init instead of directly writing to configuration registers.

Additional features that currently boards in mainline does not make use of like, waitpin interrupt handling, changes to leverage revision 6 IP differences has not been incorporated.

GPMC driver now provides NAND driver with GPMC-NAND registers so that OMAP NAND driver can handle those by itself instead of using exported symbols.

Acquiring CS for NAND has also been incorporated, it has been made as a separate patch as it is felt that this should probably go away, explained in the relevant patch.

GPMC (General Purpose Memory Controller) in brief:
GPMC is an unified memory controller dedicated to interfacing external memory devices like
Asynchronous SRAM like memories and application specific integrated circuit devices. Asynchronous, synchronous, and page mode burst NOR flash devices NAND flash Pseudo-SRAM devices

GPMC details can be referred in AM335X Technical Reference Manual @ http://www.ti.com/lit/pdf/spruh73

v4: Handle wait pin (except for interrupts), enhance configuration
& timing interface of GPMC to take care of all boards. Dynamic allocation of interrupt instead of static. Convert remaining peripherals to work with GPMC driver. Handle acquiring NAND CS#, adapt to HWMOD, update HWMOD OMAP2/3 entries, other minor commenst on v3.
v3: Single device structure passed from platform for peripherals using
multiple CS instead of using multiple device structure having a few redundant data, handle interrupts, GPMC NAND handling by GPMC NAND driver instead of GPMC driver
v2: Avoid code movement that kept similar code together (for easy review)

TODO: Cleanup

Regards
Afzal

Afzal Mohammed (38):
ARM: OMAP2+: gpmc: driver conversion
ARM: OMAP2+: gpmc: Adapt to HWMOD
ARM: OMAP2+: gpmc: register details for nand driver
ARM: OMAP2+: gpmc: Acquire NAND CS value
ARM: OMAP2+: nand: create platform data structure
ARM: OMAP2+: onenand: return value in init function
ARM: OMAP2+: gpmc-nand: Adapt to use gpmc driver
ARM: OMAP2+: gpmc-onenand: Adapt to use gpmc driver
ARM: OMAP2+: flash: Adapt to gpmc driver
ARM: OMAP2+: gpmc-smsc911x: Adapt to use gpmc driver
ARM: OMAP2+: gpmc-smc91x: Adapt to use gpmc driver
ARM: OMAP2+: gpmc-tusb6010: Adapt to gpmc driver
ARM: OMAP3: hwmod data: add gpmc
ARM: OMAP2xxx: hwmod data: add gpmc
mtd: nand: omap2: obtain memory from resource
mtd: nand: omap2: use gpmc provided irqs
mtd: nand: omap2: handle nand on gpmc
mtd: onenand: omap: obtain memory from resource
ARM: OMAP2+: board omap3evm: gpmc driver adaptation
ARM: OMAP2+: board omap3beagle: gpmc driver adaptation
ARM: OMAP2+: board apollon: gpmc driver adaptation
ARM: OMAP2+: board h4: gpmc driver adaptation
ARM: OMAP2+: board 3630sdp: gpmc driver adaptation
ARM: OMAP2+: board 3430sdp: gpmc driver adaptation
ARM: OMAP2+: board 2430sdp: gpmc driver adaptation
ARM: OMAP2+: board cm-t3517: gpmc driver adaptation
ARM: OMAP2+: board cm-t35: gpmc driver adaptation
ARM: OMAP2+: board ldp: gpmc driver adaptation
ARM: OMAP2+: board n8x0: gpmc driver adaptation
ARM: OMAP2+: board omap3logic: gpmc driver adaptation
ARM: OMAP2+: board omap3pandora: gpmc driver adaptation
ARM: OMAP2+: board omap3stalker: gpmc driver adaptation
ARM: OMAP2+: board omap4pcm049: gpmc driver adaptation
ARM: OMAP2+: board overo: gpmc driver adaptation
ARM: OMAP2+: board rm680: gpmc driver adaptation
ARM: OMAP2+: board rx51: gpmc driver adaptation
ARM: OMAP2+: board zoom-debugboard: gpmc driver adaptation
ARM: OMAP2+: board igep0020: gpmc driver adaptation

Javier Martinez Canillas (1):
OMAP3: igep0020: Add support for Micron NAND Flash storage memory

 arch/arm/mach-omap2/board-2430sdp.c                |   44 +-
 arch/arm/mach-omap2/board-3430sdp.c                |   18 +-
 arch/arm/mach-omap2/board-3630sdp.c                |   23 +-
 arch/arm/mach-omap2/board-apollon.c                |  152 +--
 arch/arm/mach-omap2/board-cm-t35.c                 |   21 +-
 arch/arm/mach-omap2/board-cm-t3517.c               |   10 +-
 arch/arm/mach-omap2/board-devkit8000.c             |    6 +-
 arch/arm/mach-omap2/board-flash.c                  |  160 ++--
 arch/arm/mach-omap2/board-flash.h                  |   36 +-
 arch/arm/mach-omap2/board-h4.c                     |  130 +--
 arch/arm/mach-omap2/board-igep0020.c               |   99 +-
 arch/arm/mach-omap2/board-ldp.c                    |   26 +-
 arch/arm/mach-omap2/board-n8x0.c                   |   18 +-
 arch/arm/mach-omap2/board-omap3beagle.c            |   22 +-
 arch/arm/mach-omap2/board-omap3evm.c               |   14 +-
 arch/arm/mach-omap2/board-omap3logic.c             |   13 +-
 arch/arm/mach-omap2/board-omap3pandora.c           |   11 +-
 arch/arm/mach-omap2/board-omap3stalker.c           |   13 +-
 arch/arm/mach-omap2/board-omap3touchbook.c         |    6 +-
 arch/arm/mach-omap2/board-omap4pcm049.c            |   13 +-
 arch/arm/mach-omap2/board-overo.c                  |   32 +-
 arch/arm/mach-omap2/board-rm680.c                  |   10 +-
 arch/arm/mach-omap2/board-rx51-peripherals.c       |   17 +-
 arch/arm/mach-omap2/board-zoom-debugboard.c        |   47 +-
 arch/arm/mach-omap2/board-zoom.c                   |    5 +-
 arch/arm/mach-omap2/common-board-devices.c         |   46 -
 arch/arm/mach-omap2/common-board-devices.h         |    1 -
 arch/arm/mach-omap2/gpmc-nand.c                    |   84 +-
 arch/arm/mach-omap2/gpmc-onenand.c                 |  111 +--
 arch/arm/mach-omap2/gpmc-smc91x.c                  |   87 +-
 arch/arm/mach-omap2/gpmc-smsc911x.c                |   59 +-
 arch/arm/mach-omap2/gpmc.c                         |  980 +++++++++++++++++---
 arch/arm/mach-omap2/omap_hwmod_2420_data.c         |   18 +
 arch/arm/mach-omap2/omap_hwmod_2430_data.c         |   18 +
 arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c |   41 +
 arch/arm/mach-omap2/omap_hwmod_3xxx_data.c         |   52 ++
 arch/arm/mach-omap2/omap_hwmod_common_data.h       |    1 +
 arch/arm/mach-omap2/prcm-common.h                  |    2 +
 arch/arm/mach-omap2/usb-tusb6010.c                 |  177 ++--
 arch/arm/plat-omap/include/plat/gpmc-smc91x.h      |   10 +-
 arch/arm/plat-omap/include/plat/gpmc-smsc911x.h    |    9 +-
 arch/arm/plat-omap/include/plat/gpmc.h             |  110 ++-
 arch/arm/plat-omap/include/plat/nand.h             |   10 +-
 arch/arm/plat-omap/include/plat/onenand.h          |    7 +-
 drivers/mtd/nand/omap2.c                           |  296 ++++--
 drivers/mtd/onenand/omap2.c                        |   29 +-
 include/linux/usb/musb.h                           |    4 +-
 47 files changed, 2110 insertions(+), 988 deletions(-)
Signature · 1 line
1.7.10