[OpenWrt-Devel] Review of 0012-pinctrl-lantiq-fix-up-pinmux.patch

Martin Schiller mschiller at tdt.de
Tue Nov 17 02:50:58 EST 2015


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 <blogic at 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 <blogic at 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 at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list