Dnia środa, 25 kwietnia 2012 18:13:38 Artem Bityutskiy pisze: > On Tue, 2012-04-17 at 15:49 +0200, Janusz Krzysztofik wrote: > > A call to request_mem_region() has been introduced in the omap-gpio > > driver recently (commit 96751fcbe5438e95514b025e9cee7a6d38038f40, > > "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. > > > > There is another driver, omap-keypad, which also manipulates OMAP 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. > > > > Drop request_mem_region() call and related bits from ams-delta NAND > > driver. > > > > Created and tested against linux-3.4-rc3. > > > > Signed-off-by: Janusz Krzysztofik <jkrzyszt@xxxxxxxxxxxx> > > How about race conditions? Where is the guarantee that these 2 drivers > won't affect each other when doing I/O at the same time to the same HW > resources? Both drivers use separate subsets of registers that belong to the OMAP1 MPU I/O device, but are used for controlling different sets of I/O pins. The NAND driver reads/writes the folowing registers: - OMAP_MPUIO_INPUT_LATCH, - OMAP_MPUIO_OUTPUT, - OMAP_MPUIO_IO_CNTL, while the keypad driver - the following: - OMAP_MPUIO_KBR_LATCH, - OMAP_MPUIO_KBC, - OMAP_MPUIO_KBD_MASKIT - OMAP_MPUIO_GPIO_DEBOUNCING. Both subsets are non-overlapping, and we rely on the drivers being free of bugs and doing their job correctly, not stepping on each others' feet, I guess. Thanks, Janusz -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html