From bca28015e3f4d4b9816041fa047d50c34397407b Mon Sep 17 00:00:00 2001 From: Gerson Fernando Budke Date: Tue, 31 Aug 2021 22:07:31 -0300 Subject: [PATCH] drivers: adc: adc_sam0: Fix result ready interrupt Atmel sam0 adc peripheral have multiple interrupt vectors for same5x devices. This configure interrupt vector by name to ensure that proper interrupt handle will be executed. Fixes #37779 Signed-off-by: Gerson Fernando Budke --- drivers/adc/adc_sam0.c | 6 +++--- dts/arm/atmel/samd20.dtsi | 1 + dts/arm/atmel/samd21.dtsi | 1 + dts/arm/atmel/samd5x.dtsi | 2 ++ dts/arm/atmel/samr21.dtsi | 1 + 5 files changed, 8 insertions(+), 3 deletions(-) diff --git a/drivers/adc/adc_sam0.c b/drivers/adc/adc_sam0.c index c2bdf3ce1ca..35f559fca97 100644 --- a/drivers/adc/adc_sam0.c +++ b/drivers/adc/adc_sam0.c @@ -609,11 +609,11 @@ do { \ &adc_sam0_api); \ static void adc_sam0_config_##n(const struct device *dev) \ { \ - IRQ_CONNECT(DT_INST_IRQN(n), \ - DT_INST_IRQ(n, priority), \ + IRQ_CONNECT(DT_INST_IRQ_BY_NAME(n, resrdy, irq), \ + DT_INST_IRQ_BY_NAME(n, resrdy, priority), \ adc_sam0_isr, \ DEVICE_DT_INST_GET(n), 0); \ - irq_enable(DT_INST_IRQN(n)); \ + irq_enable(DT_INST_IRQ_BY_NAME(n, resrdy, irq)); \ ADC_SAM0_CONFIGURE(n); \ } diff --git a/dts/arm/atmel/samd20.dtsi b/dts/arm/atmel/samd20.dtsi index a5ca56fd213..28edbe34bf8 100644 --- a/dts/arm/atmel/samd20.dtsi +++ b/dts/arm/atmel/samd20.dtsi @@ -93,6 +93,7 @@ &adc { interrupts = <21 0>; + interrupt-names = "resrdy"; clocks = <&gclk 0x17>, <&pm 0x20 16>; clock-names = "GCLK", "PM"; }; diff --git a/dts/arm/atmel/samd21.dtsi b/dts/arm/atmel/samd21.dtsi index c855c402952..486929433a0 100644 --- a/dts/arm/atmel/samd21.dtsi +++ b/dts/arm/atmel/samd21.dtsi @@ -128,4 +128,5 @@ clocks = <&gclk 0x1e>, <&pm 0x20 16>; clock-names = "GCLK", "PM"; interrupts = <23 0>; + interrupt-names = "resrdy"; }; diff --git a/dts/arm/atmel/samd5x.dtsi b/dts/arm/atmel/samd5x.dtsi index 1b15a2b2ced..deaa5b126b2 100644 --- a/dts/arm/atmel/samd5x.dtsi +++ b/dts/arm/atmel/samd5x.dtsi @@ -316,6 +316,7 @@ compatible = "atmel,sam0-adc"; reg = <0x43001C00 0x4A>; interrupts = <118 0>, <119 0>; + interrupt-names = "overrun", "resrdy"; label = "ADC_0"; /* @@ -336,6 +337,7 @@ compatible = "atmel,sam0-adc"; reg = <0x43002000 0x4A>; interrupts = <120 0>, <121 0>; + interrupt-names = "overrun", "resrdy"; label = "ADC_1"; /* diff --git a/dts/arm/atmel/samr21.dtsi b/dts/arm/atmel/samr21.dtsi index bb0e49fefc1..c3db3b679ca 100644 --- a/dts/arm/atmel/samr21.dtsi +++ b/dts/arm/atmel/samr21.dtsi @@ -133,4 +133,5 @@ clocks = <&gclk 0x1e>, <&pm 0x20 16>; clock-names = "GCLK", "PM"; interrupts = <23 0>; + interrupt-names = "resrdy"; };