* [PATCH 1/5] pinctrl: mediatek: airoha: use new GPIO line value setter callbacks
2025-04-25 9:00 [PATCH 0/5] pinctrl: mediatek: convert GPIO chips to using new value setters Bartosz Golaszewski
@ 2025-04-25 9:00 ` Bartosz Golaszewski
2025-04-29 7:09 ` Lorenzo Bianconi
2025-04-25 9:00 ` [PATCH 2/5] pinctrl: mediatek: paris: don't double-check the GPIO number Bartosz Golaszewski
` (4 subsequent siblings)
5 siblings, 1 reply; 8+ messages in thread
From: Bartosz Golaszewski @ 2025-04-25 9:00 UTC (permalink / raw)
To: Lorenzo Bianconi, Sean Wang, Linus Walleij, Matthias Brugger,
AngeloGioacchino Del Regno, Bartosz Golaszewski
Cc: linux-mediatek, linux-gpio, linux-kernel, linux-arm-kernel,
Bartosz Golaszewski
From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
---
drivers/pinctrl/mediatek/pinctrl-airoha.c | 19 ++++++++-----------
1 file changed, 8 insertions(+), 11 deletions(-)
diff --git a/drivers/pinctrl/mediatek/pinctrl-airoha.c b/drivers/pinctrl/mediatek/pinctrl-airoha.c
index 5d84a778683d..b97b28ebb37a 100644
--- a/drivers/pinctrl/mediatek/pinctrl-airoha.c
+++ b/drivers/pinctrl/mediatek/pinctrl-airoha.c
@@ -2247,15 +2247,16 @@ static int airoha_convert_pin_to_reg_offset(struct pinctrl_dev *pctrl_dev,
}
/* gpio callbacks */
-static void airoha_gpio_set(struct gpio_chip *chip, unsigned int gpio,
- int value)
+static int airoha_gpio_set(struct gpio_chip *chip, unsigned int gpio,
+ int value)
{
struct airoha_pinctrl *pinctrl = gpiochip_get_data(chip);
u32 offset = gpio % AIROHA_PIN_BANK_SIZE;
u8 index = gpio / AIROHA_PIN_BANK_SIZE;
- regmap_update_bits(pinctrl->regmap, pinctrl->gpiochip.data[index],
- BIT(offset), value ? BIT(offset) : 0);
+ return regmap_update_bits(pinctrl->regmap,
+ pinctrl->gpiochip.data[index],
+ BIT(offset), value ? BIT(offset) : 0);
}
static int airoha_gpio_get(struct gpio_chip *chip, unsigned int gpio)
@@ -2280,9 +2281,7 @@ static int airoha_gpio_direction_output(struct gpio_chip *chip,
if (err)
return err;
- airoha_gpio_set(chip, gpio, value);
-
- return 0;
+ return airoha_gpio_set(chip, gpio, value);
}
/* irq callbacks */
@@ -2419,7 +2418,7 @@ static int airoha_pinctrl_add_gpiochip(struct airoha_pinctrl *pinctrl,
gc->free = gpiochip_generic_free;
gc->direction_input = pinctrl_gpio_direction_input;
gc->direction_output = airoha_gpio_direction_output;
- gc->set = airoha_gpio_set;
+ gc->set_rv = airoha_gpio_set;
gc->get = airoha_gpio_get;
gc->base = -1;
gc->ngpio = AIROHA_NUM_PINS;
@@ -2715,9 +2714,7 @@ static int airoha_pinconf_set_pin_value(struct pinctrl_dev *pctrl_dev,
if (pin < 0)
return pin;
- airoha_gpio_set(&pinctrl->gpiochip.chip, pin, value);
-
- return 0;
+ return airoha_gpio_set(&pinctrl->gpiochip.chip, pin, value);
}
static int airoha_pinconf_set(struct pinctrl_dev *pctrl_dev,
--
2.45.2
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 1/5] pinctrl: mediatek: airoha: use new GPIO line value setter callbacks
2025-04-25 9:00 ` [PATCH 1/5] pinctrl: mediatek: airoha: use new GPIO line value setter callbacks Bartosz Golaszewski
@ 2025-04-29 7:09 ` Lorenzo Bianconi
0 siblings, 0 replies; 8+ messages in thread
From: Lorenzo Bianconi @ 2025-04-29 7:09 UTC (permalink / raw)
To: Bartosz Golaszewski
Cc: Sean Wang, Linus Walleij, Matthias Brugger,
AngeloGioacchino Del Regno, linux-mediatek, linux-gpio,
linux-kernel, linux-arm-kernel, Bartosz Golaszewski
[-- Attachment #1: Type: text/plain, Size: 2629 bytes --]
> From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
>
> struct gpio_chip now has callbacks for setting line values that return
> an integer, allowing to indicate failures. Convert the driver to using
> them.
>
> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Acked-by: Lorenzo Bianconi <lorenzo@kernel.org>
> ---
> drivers/pinctrl/mediatek/pinctrl-airoha.c | 19 ++++++++-----------
> 1 file changed, 8 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/pinctrl/mediatek/pinctrl-airoha.c b/drivers/pinctrl/mediatek/pinctrl-airoha.c
> index 5d84a778683d..b97b28ebb37a 100644
> --- a/drivers/pinctrl/mediatek/pinctrl-airoha.c
> +++ b/drivers/pinctrl/mediatek/pinctrl-airoha.c
> @@ -2247,15 +2247,16 @@ static int airoha_convert_pin_to_reg_offset(struct pinctrl_dev *pctrl_dev,
> }
>
> /* gpio callbacks */
> -static void airoha_gpio_set(struct gpio_chip *chip, unsigned int gpio,
> - int value)
> +static int airoha_gpio_set(struct gpio_chip *chip, unsigned int gpio,
> + int value)
> {
> struct airoha_pinctrl *pinctrl = gpiochip_get_data(chip);
> u32 offset = gpio % AIROHA_PIN_BANK_SIZE;
> u8 index = gpio / AIROHA_PIN_BANK_SIZE;
>
> - regmap_update_bits(pinctrl->regmap, pinctrl->gpiochip.data[index],
> - BIT(offset), value ? BIT(offset) : 0);
> + return regmap_update_bits(pinctrl->regmap,
> + pinctrl->gpiochip.data[index],
> + BIT(offset), value ? BIT(offset) : 0);
> }
>
> static int airoha_gpio_get(struct gpio_chip *chip, unsigned int gpio)
> @@ -2280,9 +2281,7 @@ static int airoha_gpio_direction_output(struct gpio_chip *chip,
> if (err)
> return err;
>
> - airoha_gpio_set(chip, gpio, value);
> -
> - return 0;
> + return airoha_gpio_set(chip, gpio, value);
> }
>
> /* irq callbacks */
> @@ -2419,7 +2418,7 @@ static int airoha_pinctrl_add_gpiochip(struct airoha_pinctrl *pinctrl,
> gc->free = gpiochip_generic_free;
> gc->direction_input = pinctrl_gpio_direction_input;
> gc->direction_output = airoha_gpio_direction_output;
> - gc->set = airoha_gpio_set;
> + gc->set_rv = airoha_gpio_set;
> gc->get = airoha_gpio_get;
> gc->base = -1;
> gc->ngpio = AIROHA_NUM_PINS;
> @@ -2715,9 +2714,7 @@ static int airoha_pinconf_set_pin_value(struct pinctrl_dev *pctrl_dev,
> if (pin < 0)
> return pin;
>
> - airoha_gpio_set(&pinctrl->gpiochip.chip, pin, value);
> -
> - return 0;
> + return airoha_gpio_set(&pinctrl->gpiochip.chip, pin, value);
> }
>
> static int airoha_pinconf_set(struct pinctrl_dev *pctrl_dev,
>
> --
> 2.45.2
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 2/5] pinctrl: mediatek: paris: don't double-check the GPIO number
2025-04-25 9:00 [PATCH 0/5] pinctrl: mediatek: convert GPIO chips to using new value setters Bartosz Golaszewski
2025-04-25 9:00 ` [PATCH 1/5] pinctrl: mediatek: airoha: use new GPIO line value setter callbacks Bartosz Golaszewski
@ 2025-04-25 9:00 ` Bartosz Golaszewski
2025-04-25 9:00 ` [PATCH 3/5] pinctrl: mediatek: paris: use new GPIO line value setter callbacks Bartosz Golaszewski
` (3 subsequent siblings)
5 siblings, 0 replies; 8+ messages in thread
From: Bartosz Golaszewski @ 2025-04-25 9:00 UTC (permalink / raw)
To: Lorenzo Bianconi, Sean Wang, Linus Walleij, Matthias Brugger,
AngeloGioacchino Del Regno, Bartosz Golaszewski
Cc: linux-mediatek, linux-gpio, linux-kernel, linux-arm-kernel,
Bartosz Golaszewski
From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
GPIO core already makes sure we don't pass invalid GPIO numbers down to
the driver callbacks. Remove needless checks from the driver.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
---
drivers/pinctrl/mediatek/pinctrl-paris.c | 19 -------------------
1 file changed, 19 deletions(-)
diff --git a/drivers/pinctrl/mediatek/pinctrl-paris.c b/drivers/pinctrl/mediatek/pinctrl-paris.c
index 87e958d827bf..852ce0ac7ff9 100644
--- a/drivers/pinctrl/mediatek/pinctrl-paris.c
+++ b/drivers/pinctrl/mediatek/pinctrl-paris.c
@@ -840,9 +840,6 @@ static int mtk_gpio_get_direction(struct gpio_chip *chip, unsigned int gpio)
const struct mtk_pin_desc *desc;
int value, err;
- if (gpio >= hw->soc->npins)
- return -EINVAL;
-
/*
* "Virtual" GPIOs are always and only used for interrupts
* Since they are only used for interrupts, they are always inputs
@@ -868,9 +865,6 @@ static int mtk_gpio_get(struct gpio_chip *chip, unsigned int gpio)
const struct mtk_pin_desc *desc;
int value, err;
- if (gpio >= hw->soc->npins)
- return -EINVAL;
-
desc = (const struct mtk_pin_desc *)&hw->soc->pins[gpio];
err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_DI, &value);
@@ -885,9 +879,6 @@ static void mtk_gpio_set(struct gpio_chip *chip, unsigned int gpio, int value)
struct mtk_pinctrl *hw = gpiochip_get_data(chip);
const struct mtk_pin_desc *desc;
- if (gpio >= hw->soc->npins)
- return;
-
desc = (const struct mtk_pin_desc *)&hw->soc->pins[gpio];
mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DO, !!value);
@@ -895,22 +886,12 @@ static void mtk_gpio_set(struct gpio_chip *chip, unsigned int gpio, int value)
static int mtk_gpio_direction_input(struct gpio_chip *chip, unsigned int gpio)
{
- struct mtk_pinctrl *hw = gpiochip_get_data(chip);
-
- if (gpio >= hw->soc->npins)
- return -EINVAL;
-
return pinctrl_gpio_direction_input(chip, gpio);
}
static int mtk_gpio_direction_output(struct gpio_chip *chip, unsigned int gpio,
int value)
{
- struct mtk_pinctrl *hw = gpiochip_get_data(chip);
-
- if (gpio >= hw->soc->npins)
- return -EINVAL;
-
mtk_gpio_set(chip, gpio, value);
return pinctrl_gpio_direction_output(chip, gpio);
--
2.45.2
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 3/5] pinctrl: mediatek: paris: use new GPIO line value setter callbacks
2025-04-25 9:00 [PATCH 0/5] pinctrl: mediatek: convert GPIO chips to using new value setters Bartosz Golaszewski
2025-04-25 9:00 ` [PATCH 1/5] pinctrl: mediatek: airoha: use new GPIO line value setter callbacks Bartosz Golaszewski
2025-04-25 9:00 ` [PATCH 2/5] pinctrl: mediatek: paris: don't double-check the GPIO number Bartosz Golaszewski
@ 2025-04-25 9:00 ` Bartosz Golaszewski
2025-04-25 9:01 ` [PATCH 4/5] pinctrl: mediatek: moore: " Bartosz Golaszewski
` (2 subsequent siblings)
5 siblings, 0 replies; 8+ messages in thread
From: Bartosz Golaszewski @ 2025-04-25 9:00 UTC (permalink / raw)
To: Lorenzo Bianconi, Sean Wang, Linus Walleij, Matthias Brugger,
AngeloGioacchino Del Regno, Bartosz Golaszewski
Cc: linux-mediatek, linux-gpio, linux-kernel, linux-arm-kernel,
Bartosz Golaszewski
From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
---
drivers/pinctrl/mediatek/pinctrl-paris.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/drivers/pinctrl/mediatek/pinctrl-paris.c b/drivers/pinctrl/mediatek/pinctrl-paris.c
index 852ce0ac7ff9..89ef4e530fcc 100644
--- a/drivers/pinctrl/mediatek/pinctrl-paris.c
+++ b/drivers/pinctrl/mediatek/pinctrl-paris.c
@@ -874,14 +874,14 @@ static int mtk_gpio_get(struct gpio_chip *chip, unsigned int gpio)
return !!value;
}
-static void mtk_gpio_set(struct gpio_chip *chip, unsigned int gpio, int value)
+static int mtk_gpio_set(struct gpio_chip *chip, unsigned int gpio, int value)
{
struct mtk_pinctrl *hw = gpiochip_get_data(chip);
const struct mtk_pin_desc *desc;
desc = (const struct mtk_pin_desc *)&hw->soc->pins[gpio];
- mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DO, !!value);
+ return mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DO, !!value);
}
static int mtk_gpio_direction_input(struct gpio_chip *chip, unsigned int gpio)
@@ -892,7 +892,11 @@ static int mtk_gpio_direction_input(struct gpio_chip *chip, unsigned int gpio)
static int mtk_gpio_direction_output(struct gpio_chip *chip, unsigned int gpio,
int value)
{
- mtk_gpio_set(chip, gpio, value);
+ int ret;
+
+ ret = mtk_gpio_set(chip, gpio, value);
+ if (ret)
+ return ret;
return pinctrl_gpio_direction_output(chip, gpio);
}
@@ -945,7 +949,7 @@ static int mtk_build_gpiochip(struct mtk_pinctrl *hw)
chip->direction_input = mtk_gpio_direction_input;
chip->direction_output = mtk_gpio_direction_output;
chip->get = mtk_gpio_get;
- chip->set = mtk_gpio_set;
+ chip->set_rv = mtk_gpio_set;
chip->to_irq = mtk_gpio_to_irq;
chip->set_config = mtk_gpio_set_config;
chip->base = -1;
--
2.45.2
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 4/5] pinctrl: mediatek: moore: use new GPIO line value setter callbacks
2025-04-25 9:00 [PATCH 0/5] pinctrl: mediatek: convert GPIO chips to using new value setters Bartosz Golaszewski
` (2 preceding siblings ...)
2025-04-25 9:00 ` [PATCH 3/5] pinctrl: mediatek: paris: use new GPIO line value setter callbacks Bartosz Golaszewski
@ 2025-04-25 9:01 ` Bartosz Golaszewski
2025-04-25 9:01 ` [PATCH 5/5] pinctrl: mediatek: common: " Bartosz Golaszewski
2025-05-09 8:05 ` [PATCH 0/5] pinctrl: mediatek: convert GPIO chips to using new value setters Linus Walleij
5 siblings, 0 replies; 8+ messages in thread
From: Bartosz Golaszewski @ 2025-04-25 9:01 UTC (permalink / raw)
To: Lorenzo Bianconi, Sean Wang, Linus Walleij, Matthias Brugger,
AngeloGioacchino Del Regno, Bartosz Golaszewski
Cc: linux-mediatek, linux-gpio, linux-kernel, linux-arm-kernel,
Bartosz Golaszewski
From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
---
drivers/pinctrl/mediatek/pinctrl-moore.c | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/drivers/pinctrl/mediatek/pinctrl-moore.c b/drivers/pinctrl/mediatek/pinctrl-moore.c
index aad4891223d3..827d0f191031 100644
--- a/drivers/pinctrl/mediatek/pinctrl-moore.c
+++ b/drivers/pinctrl/mediatek/pinctrl-moore.c
@@ -496,24 +496,26 @@ static int mtk_gpio_get(struct gpio_chip *chip, unsigned int gpio)
return !!value;
}
-static void mtk_gpio_set(struct gpio_chip *chip, unsigned int gpio, int value)
+static int mtk_gpio_set(struct gpio_chip *chip, unsigned int gpio, int value)
{
struct mtk_pinctrl *hw = gpiochip_get_data(chip);
const struct mtk_pin_desc *desc;
desc = (const struct mtk_pin_desc *)&hw->soc->pins[gpio];
- if (!desc->name) {
- dev_err(hw->dev, "Failed to set gpio %d\n", gpio);
- return;
- }
+ if (!desc->name)
+ return -ENOTSUPP;
- mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DO, !!value);
+ return mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DO, !!value);
}
static int mtk_gpio_direction_output(struct gpio_chip *chip, unsigned int gpio,
int value)
{
- mtk_gpio_set(chip, gpio, value);
+ int ret;
+
+ ret = mtk_gpio_set(chip, gpio, value);
+ if (ret)
+ return ret;
return pinctrl_gpio_direction_output(chip, gpio);
}
@@ -567,7 +569,7 @@ static int mtk_build_gpiochip(struct mtk_pinctrl *hw)
chip->direction_input = pinctrl_gpio_direction_input;
chip->direction_output = mtk_gpio_direction_output;
chip->get = mtk_gpio_get;
- chip->set = mtk_gpio_set;
+ chip->set_rv = mtk_gpio_set;
chip->to_irq = mtk_gpio_to_irq;
chip->set_config = mtk_gpio_set_config;
chip->base = -1;
--
2.45.2
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 5/5] pinctrl: mediatek: common: use new GPIO line value setter callbacks
2025-04-25 9:00 [PATCH 0/5] pinctrl: mediatek: convert GPIO chips to using new value setters Bartosz Golaszewski
` (3 preceding siblings ...)
2025-04-25 9:01 ` [PATCH 4/5] pinctrl: mediatek: moore: " Bartosz Golaszewski
@ 2025-04-25 9:01 ` Bartosz Golaszewski
2025-05-09 8:05 ` [PATCH 0/5] pinctrl: mediatek: convert GPIO chips to using new value setters Linus Walleij
5 siblings, 0 replies; 8+ messages in thread
From: Bartosz Golaszewski @ 2025-04-25 9:01 UTC (permalink / raw)
To: Lorenzo Bianconi, Sean Wang, Linus Walleij, Matthias Brugger,
AngeloGioacchino Del Regno, Bartosz Golaszewski
Cc: linux-mediatek, linux-gpio, linux-kernel, linux-arm-kernel,
Bartosz Golaszewski
From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
---
drivers/pinctrl/mediatek/pinctrl-mtk-common.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c b/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
index 8596f3541265..de7bebb9a6cd 100644
--- a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
+++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
@@ -86,7 +86,7 @@ static int mtk_pmx_gpio_set_direction(struct pinctrl_dev *pctldev,
return 0;
}
-static void mtk_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
+static int mtk_gpio_set(struct gpio_chip *chip, unsigned int offset, int value)
{
unsigned int reg_addr;
unsigned int bit;
@@ -100,7 +100,7 @@ static void mtk_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
else
reg_addr = CLR_ADDR(reg_addr, pctl);
- regmap_write(mtk_get_regmap(pctl, offset), reg_addr, bit);
+ return regmap_write(mtk_get_regmap(pctl, offset), reg_addr, bit);
}
static int mtk_pconf_set_ies_smt(struct mtk_pinctrl *pctl, unsigned pin,
@@ -809,7 +809,12 @@ static const struct pinmux_ops mtk_pmx_ops = {
static int mtk_gpio_direction_output(struct gpio_chip *chip,
unsigned offset, int value)
{
- mtk_gpio_set(chip, offset, value);
+ int ret;
+
+ ret = mtk_gpio_set(chip, offset, value);
+ if (ret)
+ return ret;
+
return pinctrl_gpio_direction_output(chip, offset);
}
@@ -893,7 +898,7 @@ static const struct gpio_chip mtk_gpio_chip = {
.direction_input = pinctrl_gpio_direction_input,
.direction_output = mtk_gpio_direction_output,
.get = mtk_gpio_get,
- .set = mtk_gpio_set,
+ .set_rv = mtk_gpio_set,
.to_irq = mtk_gpio_to_irq,
.set_config = mtk_gpio_set_config,
};
--
2.45.2
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 0/5] pinctrl: mediatek: convert GPIO chips to using new value setters
2025-04-25 9:00 [PATCH 0/5] pinctrl: mediatek: convert GPIO chips to using new value setters Bartosz Golaszewski
` (4 preceding siblings ...)
2025-04-25 9:01 ` [PATCH 5/5] pinctrl: mediatek: common: " Bartosz Golaszewski
@ 2025-05-09 8:05 ` Linus Walleij
5 siblings, 0 replies; 8+ messages in thread
From: Linus Walleij @ 2025-05-09 8:05 UTC (permalink / raw)
To: Bartosz Golaszewski
Cc: Lorenzo Bianconi, Sean Wang, Matthias Brugger,
AngeloGioacchino Del Regno, linux-mediatek, linux-gpio,
linux-kernel, linux-arm-kernel, Bartosz Golaszewski
On Fri, Apr 25, 2025 at 11:01 AM Bartosz Golaszewski <brgl@bgdev.pl> wrote:
> struct gpio_chip now has callbacks for setting line values that return
> an integer, allowing to indicate failures. We're in the process of
> converting all GPIO drivers to using the new API. This series converts
> all the mediatek pinctrl GPIO controllers.
>
> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
All 5 patches applied!
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 8+ messages in thread