[OpenWrt-Devel] Review of 0012-pinctrl-lantiq-fix-up-pinmux.patch
John Crispin
john at phrozen.org
Thu Nov 19 02:15:07 EST 2015
On 19/11/2015 06:39, Martin Schiller wrote:
> On 11/17/2015 at 8:50 AM, Martin Schiller wrote:
>> 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
>
> Aren't there any comments / suggestions?
>
we are not a barber shop where you can walk in and demand to be serviced
right away.
_______________________________________________
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