From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maxime Ripard Date: Mon, 27 Feb 2017 11:07:50 +0100 Subject: [U-Boot] [PATCH 1/6] sunxi: GPIO: introduce sunxi_gpio_setup_dt_pins() In-Reply-To: <1488155205-9305-2-git-send-email-andre.przywara@arm.com> References: <1488155205-9305-1-git-send-email-andre.przywara@arm.com> <1488155205-9305-2-git-send-email-andre.przywara@arm.com> Message-ID: <20170227100750.a4vkehnt2os7haei@lukather> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Mon, Feb 27, 2017 at 12:26:40AM +0000, Andre Przywara wrote: > Instead of hard-coding GPIO pins used for a certain peripheral, we > should just use the pinctrl information from the DT. > The sun8i-emac driver has some simple implementation of that, so > let's just generalize this and move the code into a more common > location. > On the way we add support for the new, generic pinctrl binding now > used by all Allwinner SoCs. > > Signed-off-by: Andre Przywara > --- > arch/arm/include/asm/arch-sunxi/gpio.h | 4 ++ > arch/arm/mach-sunxi/pinmux.c | 77 ++++++++++++++++++++++++++++++++++ > 2 files changed, 81 insertions(+) > > diff --git a/arch/arm/include/asm/arch-sunxi/gpio.h b/arch/arm/include/asm/arch-sunxi/gpio.h > index 85a4ec3..ba8c661 100644 > --- a/arch/arm/include/asm/arch-sunxi/gpio.h > +++ b/arch/arm/include/asm/arch-sunxi/gpio.h > @@ -239,4 +239,8 @@ int axp_gpio_init(void); > static inline int axp_gpio_init(void) { return 0; } > #endif > > +int sunxi_gpio_parse_pin_name(const char *pin_name); > +int sunxi_gpio_setup_dt_pins(const void * volatile fdt_blob, int node, > + const char * mux_name, int mux_sel); > + > #endif /* _SUNXI_GPIO_H */ > diff --git a/arch/arm/mach-sunxi/pinmux.c b/arch/arm/mach-sunxi/pinmux.c > index b026f78..f1e1e8f 100644 > --- a/arch/arm/mach-sunxi/pinmux.c > +++ b/arch/arm/mach-sunxi/pinmux.c > @@ -9,6 +9,9 @@ > #include > #include > #include > +#include > +#include > +#include > > void sunxi_gpio_set_cfgbank(struct sunxi_gpio *pio, int bank_offset, u32 val) > { > @@ -69,3 +72,77 @@ int sunxi_gpio_set_pull(u32 pin, u32 val) > > return 0; > } > + > +int sunxi_gpio_parse_pin_name(const char *pin_name) > +{ > + int pin; > + > + if (pin_name[0] != 'P') > + return -1; > + > + if (pin_name[1] < 'A' || pin_name[1] > 'Z') > + return -1; > + > + pin = (pin_name[1] - 'A') << 5; > + pin += simple_strtol(&pin_name[2], NULL, 10); > + > + return pin; > +} That function already exists, sunxi_name_to_gpio. Maxime -- Maxime Ripard, Free Electrons Embedded Linux and Kernel engineering http://free-electrons.com -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 801 bytes Desc: not available URL: