From: "Théo Lebrun" <theo.lebrun@bootlin.com> To: Linus Walleij <linus.walleij@linaro.org>, Bartosz Golaszewski <brgl@bgdev.pl>, Rob Herring <robh+dt@kernel.org>, Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>, Conor Dooley <conor+dt@kernel.org>, Philipp Zabel <p.zabel@pengutronix.de>, Thomas Bogendoerfer <tsbogend@alpha.franken.de> Cc: linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mips@vger.kernel.org, "Gregory CLEMENT" <gregory.clement@bootlin.com>, "Vladimir Kondratiev" <vladimir.kondratiev@mobileye.com>, "Thomas Petazzoni" <thomas.petazzoni@bootlin.com>, "Tawfik Bayouk" <tawfik.bayouk@mobileye.com>, "Théo Lebrun" <theo.lebrun@bootlin.com> Subject: [PATCH v2 22/30] gpio: nomadik: support shared GPIO IRQs Date: Wed, 28 Feb 2024 12:28:20 +0100 [thread overview] Message-ID: <20240228-mbly-gpio-v2-22-3ba757474006@bootlin.com> (raw) In-Reply-To: <20240228-mbly-gpio-v2-0-3ba757474006@bootlin.com> Support a single IRQs used by multiple GPIO banks. Change the IRQ handler type from a chained handler (as used by gpiolib for ->parent_handler) to a threaded IRQ. Use the generic_handle_domain_irq_safe() helper. The non-safe version must be called in a no-IRQ context. The Mobileye EyeQ5 platform uses this GPIO controller and share an IRQ for its two banks. Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com> --- drivers/gpio/gpio-nomadik.c | 68 ++++++++++++++++++++++++--------------------- 1 file changed, 36 insertions(+), 32 deletions(-) diff --git a/drivers/gpio/gpio-nomadik.c b/drivers/gpio/gpio-nomadik.c index c22a0864ca70..ca5c28965224 100644 --- a/drivers/gpio/gpio-nomadik.c +++ b/drivers/gpio/gpio-nomadik.c @@ -255,27 +255,28 @@ static void nmk_gpio_irq_shutdown(struct irq_data *d) clk_disable(nmk_chip->clk); } -static void nmk_gpio_irq_handler(struct irq_desc *desc) +static irqreturn_t nmk_gpio_irq_handler(int irq, void *dev_id) { - struct irq_chip *host_chip = irq_desc_get_chip(desc); - struct gpio_chip *chip = irq_desc_get_handler_data(desc); - struct nmk_gpio_chip *nmk_chip = gpiochip_get_data(chip); - u32 status; - - chained_irq_enter(host_chip, desc); + struct nmk_gpio_chip *nmk_chip = dev_id; + struct gpio_chip *chip = &nmk_chip->chip; + unsigned long mask = GENMASK(chip->ngpio - 1, 0); + unsigned long status; + int bit; clk_enable(nmk_chip->clk); + status = readl(nmk_chip->addr + NMK_GPIO_IS); - clk_disable(nmk_chip->clk); - while (status) { - int bit = __ffs(status); + /* Ensure we cannot leave pending bits; this should never occur. */ + if (unlikely(status & ~mask)) + writel(status & ~mask, nmk_chip->addr + NMK_GPIO_IC); - generic_handle_domain_irq(chip->irq.domain, bit); - status &= ~BIT(bit); - } + clk_disable(nmk_chip->clk); - chained_irq_exit(host_chip, desc); + for_each_set_bit(bit, &status, chip->ngpio) + generic_handle_domain_irq_safe(chip->irq.domain, bit); + + return IRQ_RETVAL((status & mask) != 0); } /* I/O Functions */ @@ -568,19 +569,20 @@ static const struct irq_chip nmk_irq_chip = { GPIOCHIP_IRQ_RESOURCE_HELPERS, }; -static int nmk_gpio_probe(struct platform_device *dev) +static int nmk_gpio_probe(struct platform_device *pdev) { - struct device_node *np = dev->dev.of_node; + struct device *dev = &pdev->dev; + struct device_node *np = dev->of_node; struct nmk_gpio_chip *nmk_chip; - struct gpio_chip *chip; struct gpio_irq_chip *girq; bool supports_sleepmode; + struct gpio_chip *chip; int irq; int ret; - nmk_chip = nmk_gpio_populate_chip(np, dev); + nmk_chip = nmk_gpio_populate_chip(np, pdev); if (IS_ERR(nmk_chip)) { - dev_err(&dev->dev, "could not populate nmk chip struct\n"); + dev_err(dev, "could not populate nmk chip struct\n"); return PTR_ERR(nmk_chip); } @@ -588,9 +590,9 @@ static int nmk_gpio_probe(struct platform_device *dev) device_property_read_bool(dev, "st,supports-sleepmode"); /* Correct platform device ID */ - dev->id = nmk_chip->bank; + pdev->id = nmk_chip->bank; - irq = platform_get_irq(dev, 0); + irq = platform_get_irq(pdev, 0); if (irq < 0) return irq; @@ -602,7 +604,7 @@ static int nmk_gpio_probe(struct platform_device *dev) spin_lock_init(&nmk_chip->lock); chip = &nmk_chip->chip; - chip->parent = &dev->dev; + chip->parent = dev; chip->request = gpiochip_generic_request; chip->free = gpiochip_generic_free; chip->get_direction = nmk_gpio_get_dir; @@ -616,17 +618,19 @@ static int nmk_gpio_probe(struct platform_device *dev) girq = &chip->irq; gpio_irq_chip_set_chip(girq, &nmk_irq_chip); - girq->parent_handler = nmk_gpio_irq_handler; - girq->num_parents = 1; - girq->parents = devm_kcalloc(&dev->dev, 1, - sizeof(*girq->parents), - GFP_KERNEL); - if (!girq->parents) - return -ENOMEM; - girq->parents[0] = irq; + girq->parent_handler = NULL; + girq->num_parents = 0; + girq->parents = NULL; girq->default_type = IRQ_TYPE_NONE; girq->handler = handle_edge_irq; + ret = devm_request_irq(dev, irq, nmk_gpio_irq_handler, IRQF_SHARED, + dev_name(dev), nmk_chip); + if (ret) { + dev_err(dev, "failed requesting IRQ\n"); + return ret; + } + clk_enable(nmk_chip->clk); nmk_chip->lowemi = readl_relaxed(nmk_chip->addr + NMK_GPIO_LOWEMI); clk_disable(nmk_chip->clk); @@ -635,9 +639,9 @@ static int nmk_gpio_probe(struct platform_device *dev) if (ret) return ret; - platform_set_drvdata(dev, nmk_chip); + platform_set_drvdata(pdev, nmk_chip); - dev_info(&dev->dev, "chip registered\n"); + dev_info(dev, "chip registered\n"); return 0; } -- 2.44.0
WARNING: multiple messages have this Message-ID (diff)
From: "Théo Lebrun" <theo.lebrun@bootlin.com> To: Linus Walleij <linus.walleij@linaro.org>, Bartosz Golaszewski <brgl@bgdev.pl>, Rob Herring <robh+dt@kernel.org>, Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>, Conor Dooley <conor+dt@kernel.org>, Philipp Zabel <p.zabel@pengutronix.de>, Thomas Bogendoerfer <tsbogend@alpha.franken.de> Cc: linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mips@vger.kernel.org, "Gregory CLEMENT" <gregory.clement@bootlin.com>, "Vladimir Kondratiev" <vladimir.kondratiev@mobileye.com>, "Thomas Petazzoni" <thomas.petazzoni@bootlin.com>, "Tawfik Bayouk" <tawfik.bayouk@mobileye.com>, "Théo Lebrun" <theo.lebrun@bootlin.com> Subject: [PATCH v2 22/30] gpio: nomadik: support shared GPIO IRQs Date: Wed, 28 Feb 2024 12:28:20 +0100 [thread overview] Message-ID: <20240228-mbly-gpio-v2-22-3ba757474006@bootlin.com> (raw) In-Reply-To: <20240228-mbly-gpio-v2-0-3ba757474006@bootlin.com> Support a single IRQs used by multiple GPIO banks. Change the IRQ handler type from a chained handler (as used by gpiolib for ->parent_handler) to a threaded IRQ. Use the generic_handle_domain_irq_safe() helper. The non-safe version must be called in a no-IRQ context. The Mobileye EyeQ5 platform uses this GPIO controller and share an IRQ for its two banks. Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com> --- drivers/gpio/gpio-nomadik.c | 68 ++++++++++++++++++++++++--------------------- 1 file changed, 36 insertions(+), 32 deletions(-) diff --git a/drivers/gpio/gpio-nomadik.c b/drivers/gpio/gpio-nomadik.c index c22a0864ca70..ca5c28965224 100644 --- a/drivers/gpio/gpio-nomadik.c +++ b/drivers/gpio/gpio-nomadik.c @@ -255,27 +255,28 @@ static void nmk_gpio_irq_shutdown(struct irq_data *d) clk_disable(nmk_chip->clk); } -static void nmk_gpio_irq_handler(struct irq_desc *desc) +static irqreturn_t nmk_gpio_irq_handler(int irq, void *dev_id) { - struct irq_chip *host_chip = irq_desc_get_chip(desc); - struct gpio_chip *chip = irq_desc_get_handler_data(desc); - struct nmk_gpio_chip *nmk_chip = gpiochip_get_data(chip); - u32 status; - - chained_irq_enter(host_chip, desc); + struct nmk_gpio_chip *nmk_chip = dev_id; + struct gpio_chip *chip = &nmk_chip->chip; + unsigned long mask = GENMASK(chip->ngpio - 1, 0); + unsigned long status; + int bit; clk_enable(nmk_chip->clk); + status = readl(nmk_chip->addr + NMK_GPIO_IS); - clk_disable(nmk_chip->clk); - while (status) { - int bit = __ffs(status); + /* Ensure we cannot leave pending bits; this should never occur. */ + if (unlikely(status & ~mask)) + writel(status & ~mask, nmk_chip->addr + NMK_GPIO_IC); - generic_handle_domain_irq(chip->irq.domain, bit); - status &= ~BIT(bit); - } + clk_disable(nmk_chip->clk); - chained_irq_exit(host_chip, desc); + for_each_set_bit(bit, &status, chip->ngpio) + generic_handle_domain_irq_safe(chip->irq.domain, bit); + + return IRQ_RETVAL((status & mask) != 0); } /* I/O Functions */ @@ -568,19 +569,20 @@ static const struct irq_chip nmk_irq_chip = { GPIOCHIP_IRQ_RESOURCE_HELPERS, }; -static int nmk_gpio_probe(struct platform_device *dev) +static int nmk_gpio_probe(struct platform_device *pdev) { - struct device_node *np = dev->dev.of_node; + struct device *dev = &pdev->dev; + struct device_node *np = dev->of_node; struct nmk_gpio_chip *nmk_chip; - struct gpio_chip *chip; struct gpio_irq_chip *girq; bool supports_sleepmode; + struct gpio_chip *chip; int irq; int ret; - nmk_chip = nmk_gpio_populate_chip(np, dev); + nmk_chip = nmk_gpio_populate_chip(np, pdev); if (IS_ERR(nmk_chip)) { - dev_err(&dev->dev, "could not populate nmk chip struct\n"); + dev_err(dev, "could not populate nmk chip struct\n"); return PTR_ERR(nmk_chip); } @@ -588,9 +590,9 @@ static int nmk_gpio_probe(struct platform_device *dev) device_property_read_bool(dev, "st,supports-sleepmode"); /* Correct platform device ID */ - dev->id = nmk_chip->bank; + pdev->id = nmk_chip->bank; - irq = platform_get_irq(dev, 0); + irq = platform_get_irq(pdev, 0); if (irq < 0) return irq; @@ -602,7 +604,7 @@ static int nmk_gpio_probe(struct platform_device *dev) spin_lock_init(&nmk_chip->lock); chip = &nmk_chip->chip; - chip->parent = &dev->dev; + chip->parent = dev; chip->request = gpiochip_generic_request; chip->free = gpiochip_generic_free; chip->get_direction = nmk_gpio_get_dir; @@ -616,17 +618,19 @@ static int nmk_gpio_probe(struct platform_device *dev) girq = &chip->irq; gpio_irq_chip_set_chip(girq, &nmk_irq_chip); - girq->parent_handler = nmk_gpio_irq_handler; - girq->num_parents = 1; - girq->parents = devm_kcalloc(&dev->dev, 1, - sizeof(*girq->parents), - GFP_KERNEL); - if (!girq->parents) - return -ENOMEM; - girq->parents[0] = irq; + girq->parent_handler = NULL; + girq->num_parents = 0; + girq->parents = NULL; girq->default_type = IRQ_TYPE_NONE; girq->handler = handle_edge_irq; + ret = devm_request_irq(dev, irq, nmk_gpio_irq_handler, IRQF_SHARED, + dev_name(dev), nmk_chip); + if (ret) { + dev_err(dev, "failed requesting IRQ\n"); + return ret; + } + clk_enable(nmk_chip->clk); nmk_chip->lowemi = readl_relaxed(nmk_chip->addr + NMK_GPIO_LOWEMI); clk_disable(nmk_chip->clk); @@ -635,9 +639,9 @@ static int nmk_gpio_probe(struct platform_device *dev) if (ret) return ret; - platform_set_drvdata(dev, nmk_chip); + platform_set_drvdata(pdev, nmk_chip); - dev_info(&dev->dev, "chip registered\n"); + dev_info(dev, "chip registered\n"); return 0; } -- 2.44.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2024-02-28 11:28 UTC|newest] Thread overview: 130+ messages / expand[flat|nested] mbox.gz Atom feed top 2024-02-28 11:27 [PATCH v2 00/30] Rework Nomadik GPIO to add Mobileye EyeQ5 support Théo Lebrun 2024-02-28 11:27 ` Théo Lebrun 2024-02-28 11:27 ` [PATCH v2 01/30] dt-bindings: gpio: nomadik: convert into yaml format Théo Lebrun 2024-02-28 11:27 ` Théo Lebrun 2024-02-28 12:49 ` Conor Dooley 2024-02-28 12:49 ` Conor Dooley 2024-02-29 9:16 ` Linus Walleij 2024-02-29 9:16 ` Linus Walleij 2024-02-28 11:28 ` [PATCH v2 02/30] dt-bindings: gpio: nomadik: add optional ngpios property Théo Lebrun 2024-02-28 11:28 ` Théo Lebrun 2024-02-29 9:17 ` Linus Walleij 2024-02-29 9:17 ` Linus Walleij 2024-02-28 11:28 ` [PATCH v2 03/30] dt-bindings: gpio: nomadik: add mobileye,eyeq5-gpio compatible Théo Lebrun 2024-02-28 11:28 ` Théo Lebrun 2024-02-28 12:46 ` Conor Dooley 2024-02-28 12:46 ` Conor Dooley 2024-02-29 9:19 ` Linus Walleij 2024-02-29 9:19 ` Linus Walleij 2024-02-28 11:28 ` [PATCH v2 04/30] dt-bindings: gpio: nomadik: add optional reset property Théo Lebrun 2024-02-28 11:28 ` Théo Lebrun 2024-02-29 9:20 ` Linus Walleij 2024-02-29 9:20 ` Linus Walleij 2024-02-28 11:28 ` [PATCH v2 05/30] gpio: nomadik: fix offset bug in nmk_pmx_set() Théo Lebrun 2024-02-28 11:28 ` Théo Lebrun 2024-02-29 9:22 ` Linus Walleij 2024-02-29 9:22 ` Linus Walleij 2024-02-28 11:28 ` [PATCH v2 06/30] gpio: nomadik: extract GPIO platform driver from drivers/pinctrl/nomadik/ Théo Lebrun 2024-02-28 11:28 ` Théo Lebrun 2024-02-29 9:24 ` Linus Walleij 2024-02-29 9:24 ` Linus Walleij 2024-02-28 11:28 ` [PATCH v2 07/30] pinctrl: nomadik: Kconfig: allow building with COMPILE_TEST Théo Lebrun 2024-02-28 11:28 ` Théo Lebrun 2024-02-29 9:24 ` Linus Walleij 2024-02-29 9:24 ` Linus Walleij 2024-02-28 11:28 ` [PATCH v2 08/30] pinctrl: nomadik: fix build warning (-Wformat) Théo Lebrun 2024-02-28 11:28 ` Théo Lebrun 2024-02-29 9:25 ` Linus Walleij 2024-02-29 9:25 ` Linus Walleij 2024-02-28 11:28 ` [PATCH v2 09/30] pinctrl: nomadik: fix build warning (-Wpointer-to-int-cast) Théo Lebrun 2024-02-28 11:28 ` Théo Lebrun 2024-02-29 9:25 ` Linus Walleij 2024-02-29 9:25 ` Linus Walleij 2024-02-28 11:28 ` [PATCH v2 10/30] pinctrl: nomadik: minimise indentation in probe Théo Lebrun 2024-02-28 11:28 ` Théo Lebrun 2024-02-29 9:26 ` Linus Walleij 2024-02-29 9:26 ` Linus Walleij 2024-02-28 11:28 ` [PATCH v2 11/30] pinctrl: nomadik: follow type-system kernel coding conventions Théo Lebrun 2024-02-28 11:28 ` Théo Lebrun 2024-02-29 9:27 ` Linus Walleij 2024-02-29 9:27 ` Linus Walleij 2024-02-28 11:28 ` [PATCH v2 12/30] pinctrl: nomadik: follow whitespace " Théo Lebrun 2024-02-28 11:28 ` Théo Lebrun 2024-02-29 9:28 ` Linus Walleij 2024-02-29 9:28 ` Linus Walleij 2024-02-28 11:28 ` [PATCH v2 13/30] pinctrl: nomadik: follow conditional " Théo Lebrun 2024-02-28 11:28 ` Théo Lebrun 2024-02-29 9:28 ` Linus Walleij 2024-02-29 9:28 ` Linus Walleij 2024-02-28 11:28 ` [PATCH v2 14/30] gpio: nomadik: add #include <linux/slab.h> Théo Lebrun 2024-02-28 11:28 ` Théo Lebrun 2024-02-29 9:29 ` Linus Walleij 2024-02-29 9:29 ` Linus Walleij 2024-02-28 11:28 ` [PATCH v2 15/30] gpio: nomadik: replace of_find_*() by bus_find_device_by_of_node() Théo Lebrun 2024-02-28 11:28 ` Théo Lebrun 2024-02-29 9:30 ` Linus Walleij 2024-02-29 9:30 ` Linus Walleij 2024-02-28 11:28 ` [PATCH v2 16/30] gpio: nomadik: replace of_property_read_*() by device_property_read_*() Théo Lebrun 2024-02-28 11:28 ` Théo Lebrun 2024-02-29 9:30 ` Linus Walleij 2024-02-29 9:30 ` Linus Walleij 2024-02-28 11:28 ` [PATCH v2 17/30] gpio: nomadik: use devm_platform_ioremap_resource() helper Théo Lebrun 2024-02-28 11:28 ` Théo Lebrun 2024-02-29 9:31 ` Linus Walleij 2024-02-29 9:31 ` Linus Walleij 2024-02-28 11:28 ` [PATCH v2 18/30] gpio: nomadik: use devres version of clk_get*() Théo Lebrun 2024-02-28 11:28 ` Théo Lebrun 2024-02-29 9:31 ` Linus Walleij 2024-02-29 9:31 ` Linus Walleij 2024-02-28 11:28 ` [PATCH v2 19/30] gpio: nomadik: request dynamic ID allocation Théo Lebrun 2024-02-28 11:28 ` Théo Lebrun 2024-02-29 9:33 ` Linus Walleij 2024-02-29 9:33 ` Linus Walleij 2024-02-28 11:28 ` [PATCH v2 20/30] gpio: nomadik: make clock optional Théo Lebrun 2024-02-28 11:28 ` Théo Lebrun 2024-02-29 9:33 ` Linus Walleij 2024-02-29 9:33 ` Linus Walleij 2024-02-28 11:28 ` [PATCH v2 21/30] gpio: nomadik: change driver name from gpio to gpio-nomadik Théo Lebrun 2024-02-28 11:28 ` Théo Lebrun 2024-02-29 9:35 ` Linus Walleij 2024-02-29 9:35 ` Linus Walleij 2024-02-28 11:28 ` Théo Lebrun [this message] 2024-02-28 11:28 ` [PATCH v2 22/30] gpio: nomadik: support shared GPIO IRQs Théo Lebrun 2024-02-29 9:36 ` Linus Walleij 2024-02-29 9:36 ` Linus Walleij 2024-02-28 11:28 ` [PATCH v2 23/30] gpio: nomadik: handle variadic GPIO count Théo Lebrun 2024-02-28 11:28 ` Théo Lebrun 2024-02-29 9:36 ` Linus Walleij 2024-02-29 9:36 ` Linus Walleij 2024-02-28 11:28 ` [PATCH v2 24/30] gpio: nomadik: support mobileye,eyeq5-gpio Théo Lebrun 2024-02-28 11:28 ` Théo Lebrun 2024-02-29 9:38 ` Linus Walleij 2024-02-29 9:38 ` Linus Walleij 2024-02-28 11:28 ` [PATCH v2 25/30] gpio: nomadik: grab optional reset control and deassert it at probe Théo Lebrun 2024-02-28 11:28 ` Théo Lebrun 2024-02-29 9:38 ` Linus Walleij 2024-02-29 9:38 ` Linus Walleij 2024-02-28 11:28 ` [PATCH v2 26/30] Documentation: gpio: mention generic_handle_irq_safe() Théo Lebrun 2024-02-28 11:28 ` Théo Lebrun 2024-02-29 9:40 ` Linus Walleij 2024-02-29 9:40 ` Linus Walleij 2024-02-28 11:28 ` [PATCH v2 27/30] MIPS: eyeq5_defconfig: enable GPIO by default Théo Lebrun 2024-02-28 11:28 ` Théo Lebrun 2024-02-29 9:40 ` Linus Walleij 2024-02-29 9:40 ` Linus Walleij 2024-02-28 11:28 ` [PATCH v2 28/30] MIPS: mobileye: eyeq5: add two GPIO bank nodes Théo Lebrun 2024-02-28 11:28 ` Théo Lebrun 2024-02-29 9:41 ` Linus Walleij 2024-02-29 9:41 ` Linus Walleij 2024-02-28 11:28 ` [PATCH v2 29/30] MIPS: mobileye: eyeq5: add resets to GPIO banks Théo Lebrun 2024-02-28 11:28 ` Théo Lebrun 2024-02-29 9:42 ` Linus Walleij 2024-02-29 9:42 ` Linus Walleij 2024-02-28 11:28 ` [PATCH v2 30/30] MIPS: mobileye: eyeq5: map GPIOs to pins using gpio-ranges Théo Lebrun 2024-02-28 11:28 ` Théo Lebrun 2024-02-29 9:42 ` Linus Walleij 2024-02-29 9:42 ` Linus Walleij 2024-02-29 9:44 ` [PATCH v2 00/30] Rework Nomadik GPIO to add Mobileye EyeQ5 support Linus Walleij 2024-02-29 9:44 ` Linus Walleij 2024-02-29 9:56 ` Théo Lebrun 2024-02-29 9:56 ` Théo Lebrun
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20240228-mbly-gpio-v2-22-3ba757474006@bootlin.com \ --to=theo.lebrun@bootlin.com \ --cc=brgl@bgdev.pl \ --cc=conor+dt@kernel.org \ --cc=devicetree@vger.kernel.org \ --cc=gregory.clement@bootlin.com \ --cc=krzysztof.kozlowski+dt@linaro.org \ --cc=linus.walleij@linaro.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-gpio@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mips@vger.kernel.org \ --cc=p.zabel@pengutronix.de \ --cc=robh+dt@kernel.org \ --cc=tawfik.bayouk@mobileye.com \ --cc=thomas.petazzoni@bootlin.com \ --cc=tsbogend@alpha.franken.de \ --cc=vladimir.kondratiev@mobileye.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.