u can directly access GPIO registers in kernel, by ioremap of GPIO memory mapped registers. you might need to check - muxing of gpio
-mj On Wed, Aug 11, 2010 at 6:57 PM, Ravi Gupta <dceravigu...@gmail.com> wrote: > Hi, > > I am new to device driver development. I am trying to access the GPIO of > MPC837xERDB eval board. I have upgraded its kernel to linux-2.6.28.9 and > enable support for mpc8xxx_gpio.c. On boot up, it successfully detect two > gpio controllers. Now my question is how I am going to use it to communicate > with the gpio pins? Do I have to modify the code in mpc8xxx_gpio.c file to > do whatever I want to do with gpios or I can use the standard gpio API > provided in kernel ( gpio_request()/gpio_free() ). I also tries the standard > kernel API, but it fails. Here is my code : > > #include <linux/module.h> > #include <linux/errno.h> /* error codes */ > #include <linux/gpio.h> > > static __init int sample_module_init(void) > { > int ret; > > int i; > for (i=1; i<32; i++) { > ret = gpio_request(i, "Sample Driver"); > if (ret) { > printk(KERN_WARNING "sample_driver: unable to request GPIO_PG%d\n", > i); > //return ret; > } > } > > return 0; > } > > static __exit void sample_module_exit(void) > { > gpio_free(9); > } > > MODULE_LICENSE("GPL"); > > module_init(sample_module_init); > module_exit(sample_module_exit); > > It give the following O/P: > > [ 617.075329] sample_driver: unable to request GPIO_PG1 > [ 617.080418] sample_driver: unable to request GPIO_PG2 > [ 617.085470] sample_driver: unable to request GPIO_PG3 > [ 617.090522] sample_driver: unable to request GPIO_PG4 > [ 617.095574] sample_driver: unable to request GPIO_PG5 > [ 617.100625] sample_driver: unable to request GPIO_PG6 > [ 617.105676] sample_driver: unable to request GPIO_PG7 > [ 617.110727] sample_driver: unable to request GPIO_PG8 > [ 617.115779] sample_driver: unable to request GPIO_PG9 > [ 617.120830] sample_driver: unable to request GPIO_PG10 > [ 617.125968] sample_driver: unable to request GPIO_PG11 > [ 617.131106] sample_driver: unable to request GPIO_PG12 > [ 617.136245] sample_driver: unable to request GPIO_PG13 > [ 617.141383] sample_driver: unable to request GPIO_PG14 > [ 617.146521] sample_driver: unable to request GPIO_PG15 > [ 617.151660] sample_driver: unable to request GPIO_PG16 > [ 617.156798] sample_driver: unable to request GPIO_PG17 > [ 617.161936] sample_driver: unable to request GPIO_PG18 > [ 617.167074] sample_driver: unable to request GPIO_PG19 > [ 617.172213] sample_driver: unable to request GPIO_PG20 > [ 617.177351] sample_driver: unable to request GPIO_PG21 > [ 617.182489] sample_driver: unable to request GPIO_PG22 > [ 617.187628] sample_driver: unable to request GPIO_PG23 > [ 617.192767] sample_driver: unable to request GPIO_PG24 > [ 617.197905] sample_driver: unable to request GPIO_PG25 > [ 617.203042] sample_driver: unable to request GPIO_PG26 > [ 617.208182] sample_driver: unable to request GPIO_PG27 > [ 617.213319] sample_driver: unable to request GPIO_PG28 > [ 617.218458] sample_driver: unable to request GPIO_PG29 > [ 617.223597] sample_driver: unable to request GPIO_PG30 > [ 617.228735] sample_driver: unable to request GPIO_PG31 > [ 617.233873] sample_driver: unable to request GPIO_PG32 > > Can someone provide me a sample code or something else. Actually I am trying > to set the GPIO pin no. 9 to active low as it is connected to a LED on > board. > > Thanks in advance > Ravi Gupta > > _______________________________________________ > Linuxppc-dev mailing list > Linuxppc-dev@lists.ozlabs.org > https://lists.ozlabs.org/listinfo/linuxppc-dev > -- -mj _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev