boards: silabs: add ADC io-channels on multiples boards
The goal to add the zephyr,user io-channels is to be able to run the
ADC samples without having an overlays for each boards.
Signed-off-by: Martin Hoff <martin.hoff@silabs.com>
diff --git a/boards/silabs/radio_boards/slwrb4180a/slwrb4180a-pinctrl.dtsi b/boards/silabs/radio_boards/slwrb4180a/slwrb4180a-pinctrl.dtsi
index 35e2eb1..897a260 100644
--- a/boards/silabs/radio_boards/slwrb4180a/slwrb4180a-pinctrl.dtsi
+++ b/boards/silabs/radio_boards/slwrb4180a/slwrb4180a-pinctrl.dtsi
@@ -21,4 +21,10 @@
silabs,input-filter;
};
};
+
+ iadc0_default: iadc0_default {
+ group0 {
+ silabs,analog-bus = <ABUS_AEVEN0_IADC0>;
+ };
+ };
};
diff --git a/boards/silabs/radio_boards/slwrb4180a/slwrb4180a.dts b/boards/silabs/radio_boards/slwrb4180a/slwrb4180a.dts
index 65c40ea..383cbed 100644
--- a/boards/silabs/radio_boards/slwrb4180a/slwrb4180a.dts
+++ b/boards/silabs/radio_boards/slwrb4180a/slwrb4180a.dts
@@ -6,6 +6,7 @@
/dts-v1/;
#include <silabs/xg21/efr32mg21a020f1024im32.dtsi>
+#include <dt-bindings/adc/silabs-adc.h>
#include <zephyr/dt-bindings/input/input-event-codes.h>
#include "slwrb4180a-pinctrl.dtsi"
@@ -30,6 +31,7 @@
sw0 = &button0;
sw1 = &button1;
watchdog0 = &wdog0;
+ adc0 = &adc0;
};
leds {
@@ -64,6 +66,37 @@
};
};
+ joystick {
+ compatible = "adc-keys";
+ io-channels = <&adc0 0>;
+ keyup-threshold-mv = <3300>;
+
+ select-key {
+ press-thresholds-mv = <33>;
+ zephyr,code = <INPUT_KEY_ENTER>;
+ };
+
+ left-key {
+ press-thresholds-mv = <1980>;
+ zephyr,code = <INPUT_KEY_LEFT>;
+ };
+
+ down-key {
+ press-thresholds-mv = <1650>;
+ zephyr,code = <INPUT_KEY_DOWN>;
+ };
+
+ up-key {
+ press-thresholds-mv = <2831>;
+ zephyr,code = <INPUT_KEY_UP>;
+ };
+
+ right-key {
+ press-thresholds-mv = <2533>;
+ zephyr,code = <INPUT_KEY_RIGHT>;
+ };
+ };
+
exp_header: exp-header {
compatible = "silabs,exp-header";
#gpio-cells = <2>;
@@ -80,6 +113,10 @@
gpio-map-mask = <0xffffffff 0x0>;
gpio-map-pass-thru = <0x0 GPIO_DT_FLAGS_MASK>;
};
+
+ zephyr,user {
+ io-channels = <&adc0 0>;
+ };
};
&cpu0 {
@@ -128,6 +165,24 @@
clocks = <&lfxo>;
};
+&adc0 {
+ pinctrl-0 = <&iadc0_default>;
+ pinctrl-names = "default";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "okay";
+
+ channel@0 {
+ reg = <0>;
+ zephyr,acquisition-time = <ADC_ACQ_TIME_DEFAULT>;
+ zephyr,gain = "ADC_GAIN_1";
+ zephyr,input-positive = <IADC_INPUT_PA0>;
+ zephyr,reference = "ADC_REF_VDD_1";
+ zephyr,resolution = <12>;
+ zephyr,vref-mv = <3300>;
+ };
+};
+
&usart0 {
current-speed = <115200>;
pinctrl-0 = <&usart0_default>;
diff --git a/boards/silabs/radio_boards/slwrb4180b/slwrb4180b-pinctrl.dtsi b/boards/silabs/radio_boards/slwrb4180b/slwrb4180b-pinctrl.dtsi
index 92871f3..54c9d56 100644
--- a/boards/silabs/radio_boards/slwrb4180b/slwrb4180b-pinctrl.dtsi
+++ b/boards/silabs/radio_boards/slwrb4180b/slwrb4180b-pinctrl.dtsi
@@ -20,4 +20,10 @@
silabs,input-filter;
};
};
+
+ iadc0_default: iadc0_default {
+ group0 {
+ silabs,analog-bus = <ABUS_AEVEN0_IADC0>;
+ };
+ };
};
diff --git a/boards/silabs/radio_boards/slwrb4180b/slwrb4180b.dts b/boards/silabs/radio_boards/slwrb4180b/slwrb4180b.dts
index 906e380..7003aa4 100644
--- a/boards/silabs/radio_boards/slwrb4180b/slwrb4180b.dts
+++ b/boards/silabs/radio_boards/slwrb4180b/slwrb4180b.dts
@@ -7,6 +7,7 @@
/dts-v1/;
#include <silabs/xg21/efr32mg21a020f1024im32.dtsi>
+#include <dt-bindings/adc/silabs-adc.h>
#include <zephyr/dt-bindings/input/input-event-codes.h>
#include "slwrb4180b-pinctrl.dtsi"
@@ -30,6 +31,7 @@
sw0 = &button0;
sw1 = &button1;
watchdog0 = &wdog0;
+ adc0 = &adc0;
};
leds {
@@ -62,6 +64,37 @@
};
};
+ joystick {
+ compatible = "adc-keys";
+ io-channels = <&adc0 0>;
+ keyup-threshold-mv = <3300>;
+
+ select-key {
+ press-thresholds-mv = <33>;
+ zephyr,code = <INPUT_KEY_ENTER>;
+ };
+
+ left-key {
+ press-thresholds-mv = <1980>;
+ zephyr,code = <INPUT_KEY_LEFT>;
+ };
+
+ down-key {
+ press-thresholds-mv = <1650>;
+ zephyr,code = <INPUT_KEY_DOWN>;
+ };
+
+ up-key {
+ press-thresholds-mv = <2831>;
+ zephyr,code = <INPUT_KEY_UP>;
+ };
+
+ right-key {
+ press-thresholds-mv = <2533>;
+ zephyr,code = <INPUT_KEY_RIGHT>;
+ };
+ };
+
exp_header: exp-header {
compatible = "silabs,exp-header";
#gpio-cells = <2>;
@@ -78,6 +111,10 @@
gpio-map-mask = <0xffffffff 0x0>;
gpio-map-pass-thru = <0x0 GPIO_DT_FLAGS_MASK>;
};
+
+ zephyr,user {
+ io-channels = <&adc0 0>;
+ };
};
&cpu0 {
@@ -126,6 +163,24 @@
clocks = <&lfxo>;
};
+&adc0 {
+ pinctrl-0 = <&iadc0_default>;
+ pinctrl-names = "default";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "okay";
+
+ channel@0 {
+ reg = <0>;
+ zephyr,acquisition-time = <ADC_ACQ_TIME_DEFAULT>;
+ zephyr,gain = "ADC_GAIN_1";
+ zephyr,input-positive = <IADC_INPUT_PA0>;
+ zephyr,reference = "ADC_REF_VDD_1";
+ zephyr,resolution = <12>;
+ zephyr,vref-mv = <3300>;
+ };
+};
+
&usart0 {
current-speed = <115200>;
pinctrl-0 = <&usart0_default>;
diff --git a/boards/silabs/radio_boards/xg27/xg27_rb4194a.dts b/boards/silabs/radio_boards/xg27/xg27_rb4194a.dts
index 95ff987..104e33a 100644
--- a/boards/silabs/radio_boards/xg27/xg27_rb4194a.dts
+++ b/boards/silabs/radio_boards/xg27/xg27_rb4194a.dts
@@ -36,6 +36,7 @@
sw1 = &button1;
watchdog0 = &wdog0;
dht0 = &si7021;
+ adc0 = &adc0;
};
leds {
diff --git a/boards/silabs/radio_boards/xg29_rb4412a/xg29_rb4412a-pinctrl.dtsi b/boards/silabs/radio_boards/xg29_rb4412a/xg29_rb4412a-pinctrl.dtsi
index 4172263..6318bfa 100644
--- a/boards/silabs/radio_boards/xg29_rb4412a/xg29_rb4412a-pinctrl.dtsi
+++ b/boards/silabs/radio_boards/xg29_rb4412a/xg29_rb4412a-pinctrl.dtsi
@@ -21,6 +21,12 @@
};
};
+ iadc0_default: iadc0_default {
+ group0 {
+ silabs,analog-bus = <ABUS_CDODD0_IADC0>;
+ };
+ };
+
itm_default: itm_default {
group0 {
pins = <GPIO_SWV_PA3>;
diff --git a/boards/silabs/radio_boards/xg29_rb4412a/xg29_rb4412a.dts b/boards/silabs/radio_boards/xg29_rb4412a/xg29_rb4412a.dts
index 15beeca..d23eb51 100644
--- a/boards/silabs/radio_boards/xg29_rb4412a/xg29_rb4412a.dts
+++ b/boards/silabs/radio_boards/xg29_rb4412a/xg29_rb4412a.dts
@@ -6,6 +6,7 @@
/dts-v1/;
#include <silabs/xg29/efr32mg29b140f1024im40.dtsi>
+#include <dt-bindings/adc/silabs-adc.h>
#include <zephyr/dt-bindings/input/input-event-codes.h>
#include <zephyr/dt-bindings/pwm/pwm.h>
#include <zephyr/dt-bindings/regulator/silabs_dcdc.h>
@@ -35,6 +36,7 @@
sw1 = &button1;
watchdog0 = &wdog0;
dht0 = &si7021;
+ adc0 = &adc0;
};
leds {
@@ -75,6 +77,37 @@
};
};
+ joystick {
+ compatible = "adc-keys";
+ io-channels = <&adc0 0>;
+ keyup-threshold-mv = <3300>;
+
+ select-key {
+ press-thresholds-mv = <33>;
+ zephyr,code = <INPUT_KEY_ENTER>;
+ };
+
+ left-key {
+ press-thresholds-mv = <1980>;
+ zephyr,code = <INPUT_KEY_LEFT>;
+ };
+
+ down-key {
+ press-thresholds-mv = <1650>;
+ zephyr,code = <INPUT_KEY_DOWN>;
+ };
+
+ up-key {
+ press-thresholds-mv = <2831>;
+ zephyr,code = <INPUT_KEY_UP>;
+ };
+
+ right-key {
+ press-thresholds-mv = <2533>;
+ zephyr,code = <INPUT_KEY_RIGHT>;
+ };
+ };
+
display_enable: sensor_enable: gpio_switch_0 {
compatible = "regulator-fixed";
enable-gpios = <&gpioc 7 GPIO_ACTIVE_HIGH>;
@@ -98,6 +131,10 @@
gpio-map-mask = <0xffffffff 0x0>;
gpio-map-pass-thru = <0x0 GPIO_DT_FLAGS_MASK>;
};
+
+ zephyr,user {
+ io-channels = <&adc0 0>;
+ };
};
&cpu0 {
@@ -210,6 +247,24 @@
};
};
+&adc0 {
+ pinctrl-0 = <&iadc0_default>;
+ pinctrl-names = "default";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "okay";
+
+ channel@0 {
+ reg = <0>;
+ zephyr,acquisition-time = <ADC_ACQ_TIME_DEFAULT>;
+ zephyr,gain = "ADC_GAIN_1";
+ zephyr,input-positive = <IADC_INPUT_PD3>;
+ zephyr,reference = "ADC_REF_VDD_1";
+ zephyr,resolution = <12>;
+ zephyr,vref-mv = <3300>;
+ };
+};
+
&gpio {
status = "okay";
};