| /* | 
 |  * Copyright (c) 2021 Yonatan Schachter | 
 |  * Copyright (c) 2022 Peter Johanson | 
 |  * Copyright (c) 2025 Jonas Berg | 
 |  * | 
 |  * SPDX-License-Identifier: Apache-2.0 | 
 |  */ | 
 |  | 
 | /dts-v1/; | 
 |  | 
 | #include <raspberrypi/rpi_pico/rp2040.dtsi> | 
 | #include <dt-bindings/pinctrl/rpi-pico-rp2040-pinctrl.h> | 
 | #include <zephyr/dt-bindings/input/input-event-codes.h> | 
 | #include <zephyr/dt-bindings/led/led.h> | 
 | #include "rp2040_matrix-pinctrl.dtsi" | 
 |  | 
 | / { | 
 | 	model = "Waveshare RP2040 Matrix"; | 
 | 	compatible = "waveshare,rp2040-matrix"; | 
 |  | 
 | 	chosen { | 
 | 		zephyr,sram = &sram0; | 
 | 		zephyr,flash = &flash0; | 
 | 		zephyr,flash-controller = &ssi; | 
 | 		zephyr,console = &uart0; | 
 | 		zephyr,shell-uart = &uart0; | 
 | 		zephyr,code-partition = &code_partition; | 
 | 		zephyr,display = &led_matrix; | 
 | 	}; | 
 |  | 
 | 	aliases { | 
 | 		watchdog0 = &wdt0; | 
 | 		led-strip = &ws2812; | 
 | 	}; | 
 |  | 
 | 	zephyr,user { | 
 | 		io-channels = <&adc 0>, <&adc 1>, <&adc 2>, <&adc 3>; | 
 | 	}; | 
 |  | 
 | 	led_matrix: led_matrix { | 
 | 		compatible = "led-strip-matrix"; | 
 | 		status = "okay"; | 
 | 		led-strips = <&ws2812>; | 
 | 		width = <5>; | 
 | 		height = <5>; | 
 | 		circulative; | 
 | 	}; | 
 | }; | 
 |  | 
 | &flash0 { | 
 | 	reg = <0x10000000 DT_SIZE_M(2)>; | 
 |  | 
 | 	partitions { | 
 | 		compatible = "fixed-partitions"; | 
 | 		#address-cells = <1>; | 
 | 		#size-cells = <1>; | 
 |  | 
 | 		/* Reserved memory for the second stage bootloader */ | 
 | 		second_stage_bootloader: partition@0 { | 
 | 			label = "second_stage_bootloader"; | 
 | 			reg = <0x00000000 0x100>; | 
 | 			read-only; | 
 | 		}; | 
 |  | 
 | 		/* | 
 | 		 * Usable flash. Starts at 0x100, after the bootloader. The partition | 
 | 		 * size is 2 MB minus the 0x100 bytes taken by the bootloader. | 
 | 		 */ | 
 | 		code_partition: partition@100 { | 
 | 			label = "code-partition"; | 
 | 			reg = <0x100 (DT_SIZE_M(2) - 0x100)>; | 
 | 			read-only; | 
 | 		}; | 
 | 	}; | 
 | }; | 
 |  | 
 | &gpio0 { | 
 | 	status = "okay"; | 
 | }; | 
 |  | 
 | &uart0 { | 
 | 	current-speed = <115200>; | 
 | 	status = "okay"; | 
 | 	pinctrl-0 = <&uart0_default>; | 
 | 	pinctrl-names = "default"; | 
 | }; | 
 |  | 
 | &spi0 { | 
 | 	pinctrl-0 = <&spi0_default>; | 
 | 	pinctrl-names = "default"; | 
 | 	status = "okay"; | 
 | }; | 
 |  | 
 | &timer { | 
 | 	status = "okay"; | 
 | }; | 
 |  | 
 | &wdt0 { | 
 | 	status = "okay"; | 
 | }; | 
 |  | 
 | &adc { | 
 | 	status = "okay"; | 
 | 	pinctrl-0 = <&adc_default>; | 
 | 	pinctrl-names = "default"; | 
 | 	#address-cells = <1>; | 
 | 	#size-cells = <0>; | 
 |  | 
 | 	channel@0 { | 
 | 		reg = <0>; | 
 | 		zephyr,gain = "ADC_GAIN_1"; | 
 | 		zephyr,reference = "ADC_REF_INTERNAL"; | 
 | 		zephyr,acquisition-time = <ADC_ACQ_TIME_DEFAULT>; | 
 | 		zephyr,resolution = <12>; | 
 | 	}; | 
 |  | 
 | 	channel@1 { | 
 | 		reg = <1>; | 
 | 		zephyr,gain = "ADC_GAIN_1"; | 
 | 		zephyr,reference = "ADC_REF_INTERNAL"; | 
 | 		zephyr,acquisition-time = <ADC_ACQ_TIME_DEFAULT>; | 
 | 		zephyr,resolution = <12>; | 
 | 	}; | 
 |  | 
 | 	channel@2 { | 
 | 		reg = <2>; | 
 | 		zephyr,gain = "ADC_GAIN_1"; | 
 | 		zephyr,reference = "ADC_REF_INTERNAL"; | 
 | 		zephyr,acquisition-time = <ADC_ACQ_TIME_DEFAULT>; | 
 | 		zephyr,resolution = <12>; | 
 | 	}; | 
 |  | 
 | 	channel@3 { | 
 | 		reg = <3>; | 
 | 		zephyr,gain = "ADC_GAIN_1"; | 
 | 		zephyr,reference = "ADC_REF_INTERNAL"; | 
 | 		zephyr,acquisition-time = <ADC_ACQ_TIME_DEFAULT>; | 
 | 		zephyr,resolution = <12>; | 
 | 	}; | 
 | }; | 
 |  | 
 | &pio0 { | 
 | 	status = "okay"; | 
 |  | 
 | 	pio-ws2812 { | 
 | 		compatible = "worldsemi,ws2812-rpi_pico-pio"; | 
 | 		status = "okay"; | 
 | 		pinctrl-0 = <&ws2812_pio0_default>; | 
 | 		pinctrl-names = "default"; | 
 | 		bit-waveform = <3>, <3>, <4>; | 
 |  | 
 | 		ws2812: ws2812 { | 
 | 			status = "okay"; | 
 | 			gpios = <&gpio0 16 GPIO_ACTIVE_HIGH>; | 
 | 			chain-length = <25>; | 
 | 			color-mapping = <LED_COLOR_ID_GREEN | 
 | 				LED_COLOR_ID_RED | 
 | 				LED_COLOR_ID_BLUE>; | 
 | 			reset-delay = <280>; | 
 | 			frequency = <800000>; | 
 | 		}; | 
 | 	}; | 
 | }; | 
 |  | 
 | zephyr_udc0: &usbd { | 
 | 	status = "okay"; | 
 | }; | 
 |  | 
 | &die_temp { | 
 | 	status = "okay"; | 
 | }; | 
 |  | 
 | &vreg { | 
 | 	regulator-always-on; | 
 | 	regulator-allowed-modes = <REGULATOR_RPI_PICO_MODE_NORMAL>; | 
 | }; | 
 |  | 
 | &xosc { | 
 | 	startup-delay-multiplier = <64>; | 
 | }; |