Hi, here follows a little review of the 0012-pinctrl-lantiq-fix-up-pinmux.patch to get this stuff upstream:
> From 25494c55a4007a1409f53ddbafd661636e47ea34 Mon Sep 17 00:00:00 2001 > From: John Crispin <blo...@openwrt.org> > Date: Fri, 9 Aug 2013 20:38:15 +0200 > Subject: [PATCH 12/36] pinctrl/lantiq: fix up pinmux > > We found out how to set the gphy led pinmuxing. > > Signed-off-by: John Crispin <blo...@openwrt.org> > --- > drivers/pinctrl/pinctrl-xway.c | 28 ++++++++++++++++++++++++++-- > 1 file changed, 26 insertions(+), 2 deletions(-) > > --- a/drivers/pinctrl/pinctrl-xway.c > +++ b/drivers/pinctrl/pinctrl-xway.c > @@ -609,10 +609,9 @@ static struct pinctrl_desc xway_pctrl_de > .confops= &xway_pinconf_ops, > }; > > -static inline int xway_mux_apply(struct pinctrl_dev *pctrldev, > +static int mux_apply(struct ltq_pinmux_info *info, > int pin, int mux) > { > -struct ltq_pinmux_info *info = pinctrl_dev_get_drvdata(pctrldev); > int port = PORT(pin); > u32 alt1_reg = GPIO_ALT1(pin); > > @@ -632,6 +631,14 @@ static inline int xway_mux_apply(struct > return 0; > } > > +static inline int xway_mux_apply(struct pinctrl_dev *pctrldev, > +int pin, int mux) > +{ > +struct ltq_pinmux_info *info = pinctrl_dev_get_drvdata(pctrldev); > + > +return mux_apply(info, pin, mux); > +} > + > static const struct ltq_cfg_param xway_cfg_params[] = { > {"lantiq,pull",LTQ_PINCONF_PARAM_PULL}, > {"lantiq,open-drain",LTQ_PINCONF_PARAM_OPEN_DRAIN}, What are these changes for? > @@ -676,6 +683,10 @@ static int xway_gpio_dir_out(struct gpio > { > struct ltq_pinmux_info *info = dev_get_drvdata(chip->dev); > > +if (PORT(pin) == PORT3) > +gpio_setbit(info->membase[0], GPIO3_OD, PORT_PIN(pin)); > +else > +gpio_setbit(info->membase[0], GPIO_OD(pin), PORT_PIN(pin)); > gpio_setbit(info->membase[0], GPIO_DIR(pin), PORT_PIN(pin)); > xway_gpio_set(chip, pin, val); > This fixes the GPIO Setup for GPIOs >= GPIO48 (GPIO Port3), right? > @@ -696,6 +707,18 @@ static void xway_gpio_free(struct gpio_c > pinctrl_free_gpio(gpio); > } > > +static int xway_gpio_to_irq(struct gpio_chip *chip, unsigned offset) > +{ > +struct ltq_pinmux_info *info = dev_get_drvdata(chip->dev); > +int i; > + > +for (i = 0; i < info->num_exin; i++) > +if (info->exin[i] == offset) > +return ltq_eiu_get_irq(i); > + > +return -1; > +} > + > static struct gpio_chip xway_chip = { > .label = "gpio-xway", > .direction_input = xway_gpio_dir_in, > @@ -704,6 +727,7 @@ static struct gpio_chip xway_chip = { > .set = xway_gpio_set, > .request = xway_gpio_req, > .free = xway_gpio_free, > +.to_irq = xway_gpio_to_irq, > .base = -1, > }; > This implements the IRQ Mapping for GPIOs. So which of these changes is related to gphy led pinmuxing? I think we can make 2 patches out of this one: [1/2] pinctrl/lantiq: Fix GPIO Setup for GPIO Port3 [2/2] pinctrl/lantiq: Implement gpio_chip.to_irq Martin _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel