How to use mpc8xxx_gpio.c device driver

MJ embd mj.embd at gmail.com
Thu Aug 12 02:15:58 EST 2010


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 <dceravigupta at 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 at lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev
>



-- 
-mj


More information about the Linuxppc-dev mailing list