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";
 };