ARM: dts: stm32: lxa-tac: Add support for generation 3 devices
authorLeonard Göhrs <l.goehrs@pengutronix.de>
Tue, 19 Nov 2024 11:35:03 +0000 (12:35 +0100)
committerAlexandre Torgue <alexandre.torgue@foss.st.com>
Tue, 10 Dec 2024 08:22:23 +0000 (09:22 +0100)
Add support for the lxa-tac generation 3 board based on the
STM32MP153c.

Signed-off-by: Leonard Göhrs <l.goehrs@pengutronix.de>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: Alexandre Torgue <alexandre.torgue@foss.st.com>
arch/arm/boot/dts/st/Makefile
arch/arm/boot/dts/st/stm32mp153c-lxa-tac-gen3.dts [new file with mode: 0644]

index eab3a9bd435f5fcb792ed3b59b2a1cef4aef25ed..b7d5d305cbbeb78cfae9fab05271992959f6fa56 100644 (file)
@@ -39,6 +39,7 @@ dtb-$(CONFIG_ARCH_STM32) += \
        stm32mp151c-mect1s.dtb \
        stm32mp153c-dhcom-drc02.dtb \
        stm32mp153c-dhcor-drc-compact.dtb \
+       stm32mp153c-lxa-tac-gen3.dtb \
        stm32mp153c-mecio1r1.dtb \
        stm32mp157a-avenger96.dtb \
        stm32mp157a-dhcor-avenger96.dtb \
diff --git a/arch/arm/boot/dts/st/stm32mp153c-lxa-tac-gen3.dts b/arch/arm/boot/dts/st/stm32mp153c-lxa-tac-gen3.dts
new file mode 100644 (file)
index 0000000..a40b0ea
--- /dev/null
@@ -0,0 +1,267 @@
+// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-3-Clause)
+/*
+ * Copyright (C) 2020 STMicroelectronics - All Rights Reserved
+ * Copyright (C) 2021 Rouven Czerwinski, Pengutronix
+ * Copyright (C) 2023, 2024 Leonard Göhrs, Pengutronix
+ */
+
+/dts-v1/;
+
+#include "stm32mp153.dtsi"
+#include "stm32mp15xc-lxa-tac.dtsi"
+
+/ {
+       model = "Linux Automation Test Automation Controller (TAC) Gen 3";
+       compatible = "lxa,stm32mp153c-tac-gen3", "oct,stm32mp153x-osd32", "st,stm32mp153";
+
+       backlight: backlight {
+               compatible = "pwm-backlight";
+               power-supply = <&v3v3>;
+
+               brightness-levels = <0 31 63 95 127 159 191 223 255>;
+               default-brightness-level = <7>;
+               pwms = <&led_pwm 3 1000000 0>;
+       };
+
+       reg_iobus_12v: regulator-iobus-12v {
+               compatible = "regulator-fixed";
+               vin-supply = <&reg_12v>;
+               gpio = <&gpioh 13 GPIO_ACTIVE_LOW>;
+               regulator-max-microvolt = <12000000>;
+               regulator-min-microvolt = <12000000>;
+               regulator-name = "12V_IOBUS";
+       };
+
+       led-controller-1 {
+               compatible = "pwm-leds-multicolor";
+
+               multi-led {
+                       color = <LED_COLOR_ID_RGB>;
+                       function = LED_FUNCTION_STATUS;
+                       max-brightness = <65535>;
+
+                       led-red {
+                               active-low;
+                               color = <LED_COLOR_ID_RED>;
+                               pwms = <&led_pwm 0 1000000 0>;
+                       };
+
+                       led-green {
+                               active-low;
+                               color = <LED_COLOR_ID_GREEN>;
+                               pwms = <&led_pwm 2 1000000 0>;
+                       };
+
+                       led-blue {
+                               active-low;
+                               color = <LED_COLOR_ID_BLUE>;
+                               pwms = <&led_pwm 1 1000000 0>;
+                       };
+               };
+       };
+
+       led-controller-2 {
+               compatible = "gpio-leds";
+
+               led-5 {
+                       label = "tac:green:iobus";
+                       gpios = <&gpiog 1 GPIO_ACTIVE_HIGH>;
+               };
+
+               led-6 {
+                       label = "tac:green:can";
+                       gpios = <&gpiof 3 GPIO_ACTIVE_HIGH>;
+               };
+
+               led-7 {
+                       label = "tac:green:out0";
+                       gpios = <&gpiob 8 GPIO_ACTIVE_HIGH>;
+               };
+
+               led-8 {
+                       label = "tac:green:out1";
+                       gpios = <&gpiog 3 GPIO_ACTIVE_HIGH>;
+               };
+
+               led-9 {
+                       label = "tac:green:uarttx";
+                       gpios = <&gpiod 3 GPIO_ACTIVE_HIGH>;
+               };
+
+               led-10 {
+                       label = "tac:green:uartrx";
+                       gpios = <&gpiof 6 GPIO_ACTIVE_HIGH>;
+               };
+
+               led-11 {
+                       label = "tac:green:usbh1";
+                       gpios = <&gpioc 8 GPIO_ACTIVE_HIGH>;
+               };
+
+               led-12 {
+                       label = "tac:green:usbh2";
+                       gpios = <&gpiod 6 GPIO_ACTIVE_HIGH>;
+               };
+
+               led-13 {
+                       label = "tac:green:usbh3";
+                       gpios = <&gpiob 9 GPIO_ACTIVE_HIGH>;
+               };
+
+               led-14 {
+                       label = "tac:green:usbg";
+                       gpios = <&gpiod 14 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "usb-gadget";
+               };
+
+               led-15 {
+                       label = "tac:green:dutpwr";
+                       gpios = <&gpioa 15 GPIO_ACTIVE_HIGH>;
+               };
+       };
+};
+
+&adc {
+       pinctrl-names = "default";
+       pinctrl-0 = <&board_adc1_ain_pins>;
+       vdd-supply = <&vdd>;
+       vdda-supply = <&vdda>;
+       vref-supply = <&vrefbuf>;
+       status = "okay";
+
+       adc1: adc@0 {
+               st,adc-channels = <2 5 9 10 13 14 15 18>;
+               st,min-sample-time-nsecs = <5000>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "okay";
+
+               channel@2 {
+                       reg = <2>;
+                       label = "OUT_0_FB";
+               };
+
+               channel@5 {
+                       reg = <5>;
+                       label = "IOBUS_CURR_FB";
+               };
+
+               channel@9 {
+                       reg = <9>;
+                       label = "IOBUS_VOLT_FB";
+               };
+
+               channel@10 {
+                       reg = <10>;
+                       label = "OUT_1_FB";
+               };
+
+               channel@13 {
+                       reg = <13>;
+                       label = "HOST_CURR_FB";
+               };
+
+               channel@14 {
+                       reg = <14>;
+                       label = "HOST_3_CURR_FB";
+               };
+
+               channel@15 {
+                       reg = <15>;
+                       label = "HOST_1_CURR_FB";
+               };
+
+               channel@18 {
+                       reg = <18>;
+                       label = "HOST_2_CURR_FB";
+               };
+       };
+
+       adc2: adc@100 {
+               st,adc-channels = <12>;
+               st,min-sample-time-nsecs = <500000>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "okay";
+
+               channel@12 {
+                       reg = <12>;
+                       label = "TEMP_INTERNAL";
+               };
+       };
+};
+
+&gpioa {
+       gpio-line-names = "", "", "", "", "",              /*  0 */
+       "ETH_GPIO1", "ETH_INT", "", "", "",                /*  5 */
+       "", "", "", "BOOTROM_LED", "ETH_LAB_LEDRP",        /* 10 */
+       "";                                                /* 15 */
+};
+
+&gpioc {
+       gpio-line-names = "", "DUT_PWR_DISCH", "", "", "", /*  0 */
+       "", "", "", "", "",                                /*  5 */
+       "", "";                                            /* 10 */
+};
+
+&gpioe {
+       gpio-line-names = "TP35", "", "", "", "CAN_1_120R", /*  0 */
+       "", "", "USER_BTN2", "DUT_PWR_EN", "UART_TX_EN",    /*  5 */
+       "UART_RX_EN", "TP24", "", "TP25", "TP26",           /* 10 */
+       "TP27";                                             /* 15 */
+};
+
+&gpiog {
+       gpio-line-names = "ETH_RESET", "", "", "", "",               /*  0 */
+       "IOBUS_FLT_FB", "", "USER_LED2", "ETH1_PPS_A", "CAN_0_120R", /*  5 */
+       "POWER_ADC_RESET", "", "", "", "",                           /* 10 */
+       "";                                                          /* 15 */
+};
+
+&m_can2 {
+       termination-gpios = <&gpioe 4 GPIO_ACTIVE_HIGH>;
+       termination-ohms = <120>;
+};
+
+&pinctrl {
+       board_adc1_ain_pins: board-adc1-ain-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('F', 11, ANALOG)>, /* ADC1_INP2 */
+                                <STM32_PINMUX('B', 1, ANALOG)>, /* ADC1_INP5 */
+                                <STM32_PINMUX('B', 0, ANALOG)>, /* ADC1_INP9 */
+                                <STM32_PINMUX('C', 0, ANALOG)>, /* ADC1_INP10 */
+                                <STM32_PINMUX('C', 3, ANALOG)>, /* ADC1_INP13 */
+                                <STM32_PINMUX('A', 2, ANALOG)>, /* ADC1_INP14 */
+                                <STM32_PINMUX('A', 3, ANALOG)>, /* ADC1_INP15 */
+                                <STM32_PINMUX('A', 4, ANALOG)>; /* ADC1_INP18 */
+               };
+       };
+};
+
+&spi2 {
+       adc@0 {
+               compatible = "ti,lmp92064";
+               reg = <0>;
+
+               reset-gpios = <&gpiog 10 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+               shunt-resistor-micro-ohms = <15000>;
+               spi-max-frequency = <5000000>;
+               vdd-supply = <&reg_pb_3v3>;
+               vdig-supply = <&reg_pb_3v3>;
+       };
+};
+
+&timers8 {
+       /* spare dmas for other usage */
+       /delete-property/dmas;
+       /delete-property/dma-names;
+
+       status = "okay";
+
+       led_pwm: pwm {
+               pinctrl-names = "default", "sleep";
+               pinctrl-0 = <&pwm8_pins_b>;
+               pinctrl-1 = <&pwm8_sleep_pins_b>;
+               status = "okay";
+       };
+};