linux_dsm_epyc7002/drivers/mtd/nand
Janusz Krzysztofik b027274d2e mtd: ams-delta: fix request_mem_region() failure
A call to request_mem_region() has been introduced in the omap-gpio
driver recently (commit 96751fcbe5,
"gpio/omap: Use devm_ API and add request_mem_region"). This change
prevented the Amstrad Delta NAND driver, which was doing the same in
order to take control over OMAP MPU I/O lines that the NAND device hangs
off, from loading successfully.

The I/O lines and corresponding registers used by the NAND driver are a
subset of those used for the GPIO function. Then, to avoid run time
collisions, all MPUIO GPIO lines should be marked as requested while
initializing the NAND driver, and vice versa, a single MPUIO GPIO line
already requested before the NAND driver initialization is attempted
should prevent the NAND device from being started successfully.

There is another driver, omap-keypad, which also manipulates MPUIO
registers, but has never been calling request_mem_region() on startup,
so it's not affected by the change in the gpio-omap and works correctly.
It uses the depreciated omap_read/write functions for accessing MPUIO
registers. Unlike the NAND driver, these I/O lines and registers are
separate from those used by the GPIO driver. However, both register sets
are non-contiguous and overlapping, so it would be impractical to
request the two sets separately, one from the gpio-omap, the other form
the omap-keypad driver.

In order to solve all these issues correctly, a solution first suggested
by Artem Bityutskiy, then closer specified by Tony Lindgren while they
commented the initial version of this fix, should be implemented. The
gpio-omap driver should export a few functions which would allow the
other two drivers to access MPUIO registers in a safe manner instead of
trying to manage them in parallel to the GPIO driver.  However, such a
big change, affecting 3 drivers all together, is not suitable for the rc
cycle, and should be prepared for the merge window.  Then, an
alternative solution is proposed as a regression fix.

For the ams-delta NAND driver to initialize correctly in coexistence
with the changed GPIO driver, drop the request_mem_region() call from
the former, especially as this call is going to be removed while the
long-term solution is implemented.

Tested on Amstrad Delta.

Signed-off-by: Janusz Krzysztofik <jkrzyszt@tis.icnet.pl>
Acked-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
2012-05-08 16:24:33 -05:00
..
gpmi-nand MTD merge for 3.4 2012-03-30 17:31:56 -07:00
alauda.c mtd: flash drivers set ecc strength 2012-03-27 00:56:46 +01:00
ams-delta.c mtd: ams-delta: fix request_mem_region() failure 2012-05-08 16:24:33 -05:00
atmel_nand_ecc.h [ARM] 5265/3: [AT91] Add copyright info 2008-09-21 23:01:18 +01:00
atmel_nand.c MTD merge for 3.4 2012-03-30 17:31:56 -07:00
au1550nd.c MTD: nand: make au1550nd.c a platform_driver 2011-12-08 10:42:10 +00:00
autcpu12.c mtd: nand: rename NAND_USE_FLASH_BBT 2011-09-11 15:01:56 +03:00
bcm_umi_bch.c mtd: add bcmring nand driver 2009-10-20 10:07:23 +09:00
bcm_umi_nand.c MTD merge for 3.4 2012-03-30 17:31:56 -07:00
bf5xx_nand.c mtd: flash drivers set ecc strength 2012-03-27 00:56:46 +01:00
cafe_nand.c mtd: flash drivers set ecc strength 2012-03-27 00:56:46 +01:00
cmx270_nand.c mtd: do not use plain 0 as NULL 2012-03-27 00:53:20 +01:00
cs553x_nand.c mtd: flash drivers set ecc strength 2012-03-27 00:56:46 +01:00
davinci_nand.c mtd: flash drivers set ecc strength 2012-03-27 00:56:46 +01:00
denali.c mtd: flash drivers set ecc strength 2012-03-27 00:56:46 +01:00
denali.h mtd: denali: detect the number of banks 2011-05-25 02:02:12 +01:00
diskonchip.c mtd: flash drivers set ecc strength 2012-03-27 00:56:46 +01:00
docg4.c mtd: flash drivers set ecc strength 2012-03-27 00:56:46 +01:00
fsl_elbc_nand.c mtd: flash drivers set ecc strength 2012-03-27 00:56:46 +01:00
fsl_ifc_nand.c NAND Machine support for Integrated Flash Controller 2012-03-16 10:46:34 -05:00
fsl_upm.c mtd: convert drivers/mtd/* to use module_platform_driver() 2012-01-09 18:12:35 +00:00
fsmc_nand.c mtd: Add device-tree support to fsmc_nand 2012-03-27 01:01:07 +01:00
gpio.c mtd: gpio-nand: add device tree bindings 2012-01-09 18:23:58 +00:00
h1910.c mtd: do not use plain 0 as NULL 2012-03-27 00:53:20 +01:00
jz4740_nand.c mtd: flash drivers set ecc strength 2012-03-27 00:56:46 +01:00
Kconfig MTD merge for 3.4 2012-03-30 17:31:56 -07:00
Makefile MTD merge for 3.4 2012-03-30 17:31:56 -07:00
mpc5121_nfc.c mtd: convert drivers/mtd/* to use module_platform_driver() 2012-01-09 18:12:35 +00:00
mxc_nand.c mtd: flash drivers set ecc strength 2012-03-27 00:56:46 +01:00
nand_base.c mtd: unify initialization of erase_info->fail_addr 2012-03-27 01:02:24 +01:00
nand_bbt.c mtd: introduce mtd_write_oob interface 2012-01-09 18:25:24 +00:00
nand_bch.c mtd: cleanup style on pr_debug messages 2011-09-11 15:02:16 +03:00
nand_bcm_umi.c mtd: add bcmring nand driver 2009-10-20 10:07:23 +09:00
nand_bcm_umi.h mtd: nand_bcm: fix hot spin and code duplication 2010-02-26 16:56:35 +00:00
nand_ecc.c mtd: spelling, capitalization, uniformity 2011-09-11 15:02:13 +03:00
nand_ids.c mtd: nand: add 512 Mbit device code (Macronix) 2012-01-09 17:59:44 +00:00
nandsim.c mtd: introduce mtd_block_markbad interface 2012-01-09 18:25:48 +00:00
ndfc.c mtd: flash drivers set ecc strength 2012-03-27 00:56:46 +01:00
nomadik_nand.c mtd: introduce mtd_resume interface 2012-01-09 18:25:46 +00:00
nuc900_nand.c mtd: convert drivers/mtd/* to use module_platform_driver() 2012-01-09 18:12:35 +00:00
omap2.c mtd: flash drivers set ecc strength 2012-03-27 00:56:46 +01:00
orion_nand.c mtd: do not use plain 0 as NULL 2012-03-27 00:53:20 +01:00
pasemi_nand.c mtd: convert drivers/mtd/* to use module_platform_driver() 2012-01-09 18:12:35 +00:00
plat_nand.c mtd: do not use plain 0 as NULL 2012-03-27 00:53:20 +01:00
ppchameleonevb.c mtd: do not use plain 0 as NULL 2012-03-27 00:53:20 +01:00
pxa3xx_nand.c mtd: flash drivers set ecc strength 2012-03-27 00:56:46 +01:00
r852.c mtd: flash drivers set ecc strength 2012-03-27 00:56:46 +01:00
r852.h mtd: r852: remove useless pci powerup/down from suspend/resume routines 2010-10-25 01:32:21 +01:00
rtc_from4.c mtd: flash drivers set ecc strength 2012-03-27 00:56:46 +01:00
s3c2410.c mtd: flash drivers set ecc strength 2012-03-27 00:56:46 +01:00
sh_flctl.c mtd: flash drivers set ecc strength 2012-03-27 00:56:46 +01:00
sharpsl.c mtd: flash drivers set ecc strength 2012-03-27 00:56:46 +01:00
sm_common.c mtd: introduce mtd_write_oob interface 2012-01-09 18:25:24 +00:00
sm_common.h mtd: sm_common: split smartmedia and xD table 2010-05-14 01:03:46 +01:00
socrates_nand.c mtd: convert drivers/mtd/* to use module_platform_driver() 2012-01-09 18:12:35 +00:00
spia.c mtd: convert remaining users to mtd_device_register() 2011-05-25 02:25:00 +01:00
tmio_nand.c mtd: flash drivers set ecc strength 2012-03-27 00:56:46 +01:00
txx9ndfmc.c mtd: flash drivers set ecc strength 2012-03-27 00:56:46 +01:00