Skip to contentSkip to conversation

nand_plat extensions with GPIO framework

U-Boot Mike Frysinger 2 participants 4 messages Jun 8, 2010 – Jun 9, 2010

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

i'm in the process of merging the GPIO layer from Linux into the Blackfin port (well, it's already done, so now i'm just converting drivers over to it). as i'm sure you're aware, the GPIO framework in Linux provides a common API across all ports, so anyone who supports asm/gpio.h is going to work. no-arch specific junk here.

some Blackfin boards use GPIOs with the nand_plat driver for the dev_ready pin. so while i can easily convert the board config header to call these gpio funcs, the issue is that i cant really pull in headers like asm/gpio.h in the board config since all files will then pull it in.

what i'm thinking is something like this:

drivers/mtd/nand/nand_plat.c +11 -0
@@ -16,6 +16,10 @@
 
 #include <common.h>
 #include <asm/io.h>
+#ifdef NAND_PLAT_GPIO_DEV_READY
+# include <asm/gpio.h>
+# define NAND_PLAT_DEV_READY(chip) gpio_get_value(NAND_PLAT_GPIO_DEV_READY)
+#endif
 
 #include <nand.h>
 
@@ -43,7 +47,14 @@ static int plat_dev_ready(struct mtd_info *mtd)
 
 int board_nand_init(struct nand_chip *nand)
 {
+#ifdef NAND_PLAT_GPIO_DEV_READY
+	gpio_request(NAND_PLAT_GPIO_DEV_READY, "nand-plat");
+	gpio_direction_input(NAND_PLAT_GPIO_DEV_READY);
+#endif
+
+#ifdef NAND_PLAT_INIT
 	NAND_PLAT_INIT();
+#endif
 
 	nand->cmd_ctrl = plat_cmd_ctrl;
 	nand->dev_ready = plat_dev_ready;

now the Blackfin boards merely have to do:
#define NAND_PLAT_GPIO_DEV_READY GPIO_PF12

any suggestions about how to approach this ?
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20100608/4676c6b6/attachment.pgp

Tested-by
#1 lore raw
Quoted 11 lines · Mike Frysinger

i'm in the process of merging the GPIO layer from Linux into the Blackfin port (well, it's already done, so now i'm just converting drivers over to it). as i'm sure you're aware, the GPIO framework in Linux provides a common API across all ports, so anyone who supports asm/gpio.h is going to work. no-arch specific junk here.

some Blackfin boards use GPIOs with the nand_plat driver for the dev_ready pin. so while i can easily convert the board config header to call these gpio funcs, the issue is that i cant really pull in headers like asm/gpio.h in the board config since all files will then pull it in.

Hi Mike,

Thanks. This is what I have been looking for. Nios2 has asm/gpio.h already, then I added gpio_request() and tested on my boards.

#2 lore raw
Quoted 2 lines · On Tuesday, June 08, 2010 20:58:50 Thomas Chou wrote:

Thanks. This is what I have been looking for. Nios2 has asm/gpio.h already, then I added gpio_request() and tested on my boards.

i couldnt seem to find anyone else who had imported asm/gpio.h yet, but i guess was looking in the wrong place. i have generic GPIO implementations pending for:
- command line 'gpio' to toggle/set/clear pins
- soft i2c via gpio
- i had a status led gpio, but i'll convert to your version
- examples for doing parallel flash with GPIO-assisted address lines

i'll try and generalize them a bit more and send thing out. not sure if you'll find any of these useful though.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20100609/b1d9d4d4/attachment.pgp

#3 lore raw
Quoted 3 lines · Mike Frysinger

i'll try and generalize them a bit more and send thing out. not sure if you'll find any of these useful though.
-mike

Hi Mike,

I believe it will be very useful. We are using gpio for led, key switch, i2c, nand flash status and other bit-oriented i/o.

Cheers,
Thomas