On 12/21/06, Arnaud Patard wrote: > (adding Ben Dooks as he's taking care of s3c24xx stuff) > > David Brownell 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 > > > > 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 > > + * > > + * 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 > > That's annoying. include/asm-arm/arch-s3c2410/pxa-regs.h doesn't > exist. Lack of build testing ? Yes, see above. > > +#include > > imho, this is not needed. The user who will use irq will add it in his > code anyway. Ok. > > +#include > > + > > +#include > > 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 /* 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 + * + * 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 +#include + +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 /* 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