Messages in this thread Patches in this message | | | Date | Thu, 21 Dec 2006 16:29:44 +0100 | From | "pHilipp Zabel" <> | Subject | Re: [patch 2.6.20-rc1 6/6] S3C2410 GPIO wrappers |
| |
On 12/21/06, Arnaud Patard <apatard@mandriva.com> wrote: > (adding Ben Dooks as he's taking care of s3c24xx stuff) > > David Brownell <david-b@pacbell.net> writes: > > > Note that I neither tested it nor build tested it. It's only remarks I > have when I read the code.
Thanks for looking through this. I originally just sent this (admittedly rushed) patch to kernel-discuss@handhelds.org to get some eyes on it. Sorry about that. I have no S3C24xx machine, so I'd like very much somebody and with some insight to S3C24xx who can test to try and correct this.
> > Arch-neutral GPIO calls for S3C24xx. > > > > From: Philipp Zabel <philipp.zabel@gmail.com> > > > > Index: at91/include/asm-arm/arch-s3c2410/gpio.h > > =================================================================== > > --- /dev/null 1970-01-01 00:00:00.000000000 +0000 > > +++ at91/include/asm-arm/arch-s3c2410/gpio.h 2006-12-19 02:05:52.000000000 -0800 > > @@ -0,0 +1,65 @@ > > +/* > > + * linux/include/asm-arm/arch-pxa/gpio.h > > arch-pxa ? forgot to change it ? :)
Exactly.
> > + * > > + * S3C2400 GPIO wrappers for arch-neutral GPIO calls > > you meant S3C2410 ?
I got a little confused with s3c2410 being the name for all s3c24xx architectures.
> > + * > > + * Written by Philipp Zabel <philipp.zabel@gmail.com> > > + * > > + * This program is free software; you can redistribute it and/or modify > > + * it under the terms of the GNU General Public License as published by > > + * the Free Software Foundation; either version 2 of the License, or > > + * (at your option) any later version. > > + * > > + * This program is distributed in the hope that it will be useful, > > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > > + * GNU General Public License for more details. > > + * > > + * You should have received a copy of the GNU General Public License > > + * along with this program; if not, write to the Free Software > > + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > > + * > > + */ > > + > > +#ifndef __ASM_ARCH_PXA_GPIO_H > > +#define __ASM_ARCH_PXA_GPIO_H > > pxa again :(
Not anymore.
> > + > > +#include <asm/arch/pxa-regs.h> > > That's annoying. include/asm-arm/arch-s3c2410/pxa-regs.h doesn't > exist. Lack of build testing ?
Yes, see above.
> > +#include <asm/arch/irqs.h> > > imho, this is not needed. The user who will use irq will add it in his > code anyway.
Ok.
> > +#include <asm/arch/hardware.h> > > + > > +#include <asm/errno.h> > > Is it really needed ?
No. I copied this from David's example, but with gpio_request and gpio_free not implemented and missing error handling in s3c2410_gpio_cfgpin, no error codes are needed.
> > + > > +static inline int gpio_request(unsigned gpio, const char *label) > > +{ > > + return 0; > > +} > > + > > +static inline void gpio_free(unsigned gpio) > > +{ > > + return; > > +} > > + > > +static inline int gpio_direction_input(unsigned gpio) > > +{ > > + s3c2410_gpio_cfgpin(gpio, S3C2410_GPIO_INPUT); > > + return 0; > > +} > > + > > +static inline int gpio_direction_output(unsigned gpio) > > +{ > > + s3c2410_gpio_cfgpin(gpio, S3C2410_GPIO_OUTPUT); > > + return 0; > > +} > > + > > +#define gpio_get_value(gpio) s3c2410_gpio_getpin(gpio) > > +#define gpio_set_value(gpio,value) s3c2410_gpio_setpin(gpio, value) > > + > > +#include <asm-generic/gpio.h> /* cansleep wrappers */ > > + > > +/* FIXME or maybe s3c2400_gpio_getirq() ... */ > > +#define gpio_to_irq(gpio) s3c2410_gpio_getirq(gpio) > > imho, this should be fixed even if the s3c2400 is not 100% supported in > mainline.
Ok. Could anybody knowledgeable provide an irq_to_gpio function?
regards Philipp
Index: linux-2.6/include/asm-arm/arch-s3c2410/gpio.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ linux-2.6/include/asm-arm/arch-s3c2410/gpio.h 2006-12-21 13:25:44.000000000 +0100 @@ -0,0 +1,65 @@ +/* + * linux/include/asm-arm/arch-pxa/gpio.h + * + * S3C2410 GPIO wrappers for arch-neutral GPIO calls + * + * Written by Philipp Zabel <philipp.zabel@gmail.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#ifndef __ASM_ARCH_S3C2410_GPIO_H +#define __ASM_ARCH_S3C2410_GPIO_H + +#include <asm/arch/irqs.h> +#include <asm/arch/hardware.h> + +static inline int gpio_request(unsigned gpio, const char *label) +{ + return 0; +} + +static inline void gpio_free(unsigned gpio) +{ + return; +} + +static inline int gpio_direction_input(unsigned gpio) +{ + s3c2410_gpio_cfgpin(gpio, S3C2410_GPIO_INPUT); + return 0; +} + +static inline int gpio_direction_output(unsigned gpio) +{ + s3c2410_gpio_cfgpin(gpio, S3C2410_GPIO_OUTPUT); + return 0; +} + +#define gpio_get_value(gpio) s3c2410_gpio_getpin(gpio) +#define gpio_set_value(gpio,value) s3c2410_gpio_setpin(gpio, value) + +#include <asm-generic/gpio.h> /* cansleep wrappers */ + +#ifdef CONFIG_CPU_S3C2400 +#define gpio_to_irq(gpio) s3c2400_gpio_getirq(gpio) +#else +#define gpio_to_irq(gpio) s3c2410_gpio_getirq(gpio) +#endif /* CONFIG_CPU_S3C2400 */ + +/* FIXME implement irq_to_gpio() */ + +#endifIndex: linux-2.6/include/asm-arm/arch-s3c2410/gpio.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ linux-2.6/include/asm-arm/arch-s3c2410/gpio.h 2006-12-21 13:25:44.000000000 +0100 @@ -0,0 +1,65 @@ +/* + * linux/include/asm-arm/arch-pxa/gpio.h + * + * S3C2410 GPIO wrappers for arch-neutral GPIO calls + * + * Written by Philipp Zabel <philipp.zabel@gmail.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#ifndef __ASM_ARCH_S3C2410_GPIO_H +#define __ASM_ARCH_S3C2410_GPIO_H + +#include <asm/arch/irqs.h> +#include <asm/arch/hardware.h> + +static inline int gpio_request(unsigned gpio, const char *label) +{ + return 0; +} + +static inline void gpio_free(unsigned gpio) +{ + return; +} + +static inline int gpio_direction_input(unsigned gpio) +{ + s3c2410_gpio_cfgpin(gpio, S3C2410_GPIO_INPUT); + return 0; +} + +static inline int gpio_direction_output(unsigned gpio) +{ + s3c2410_gpio_cfgpin(gpio, S3C2410_GPIO_OUTPUT); + return 0; +} + +#define gpio_get_value(gpio) s3c2410_gpio_getpin(gpio) +#define gpio_set_value(gpio,value) s3c2410_gpio_setpin(gpio, value) + +#include <asm-generic/gpio.h> /* cansleep wrappers */ + +#ifdef CONFIG_CPU_S3C2400 +#define gpio_to_irq(gpio) s3c2400_gpio_getirq(gpio) +#else +#define gpio_to_irq(gpio) s3c2410_gpio_getirq(gpio) +#endif /* CONFIG_CPU_S3C2400 */ + +/* FIXME implement irq_to_gpio() */ + +#endif | |