On Tue, 9 Aug 2011 17:31:29 -0500 Joe Hershberger <joe.hershber...@ni.com> wrote:
> diff --git a/arch/powerpc/include/asm/gpio.h b/arch/powerpc/include/asm/gpio.h > new file mode 100644 > index 0000000..eb071d1 > --- /dev/null > +++ b/arch/powerpc/include/asm/gpio.h > @@ -0,0 +1,38 @@ > +/* > + * Copyright (c) 2011, NVIDIA Corp. All rights reserved. > + * See file CREDITS for list of people who contributed to this > + * project. > + * > + * 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 _GPIO_H_ > +#define _GPIO_H_ > + > +#include <asm/arch/gpio.h> > +/* > + * Generic GPIO API > + */ > + > +int gpio_request(int gp, const char *label); > +void gpio_free(int gp); > +void gpio_toggle_value(int gp); > +int gpio_direction_input(int gp); > +int gpio_direction_output(int gp, int value); > +int gpio_get_value(int gp); > +void gpio_set_value(int gp, int value); > + > +#endif /* _GPIO_H_ */ looks like this GPIO API-definition file is starting to be copied for each arch, and there's nothing arch-specific in it. As such, it probably belongs in include/asm-generic/, not arch/powerpc. Other arches need fixing in this area, too. > +/* set GPIO pin 'gp' as an input */ > +int gpio_direction_input(int gp) > +{ > + volatile immap_t *im = (immap_t *)CONFIG_SYS_IMMR; no volatile > + unsigned int ctrlr; > + unsigned int line; > + unsigned int lineMask; no camelCase > + > + /* 32-bits per controller */ > + ctrlr = gp >> 5; > + line = gp & (0x1F); > + > + /* Big endian */ > + lineMask = 1 << (31 - line); > + > + im->gpio[ctrlr].dir &= ~lineMask; must use i/o accessors and/or clr/setbits_be32, please fix everywhere. > + /* Update the local output buffer soft copy */ > + gpio_output_value[ctrlr] = > + (gpio_output_value[ctrlr] & ~lineMask) | (value ? lineMask : 0); what's the use of having a local output buffer soft copy? I don't see it being used anywhere. Kim _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot