| /* |
| * Copyright 2023 NXP |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| /dts-v1/; |
| #include <arm/nxp/nxp_s32k344_m7.dtsi> |
| #include <dt-bindings/gpio/gpio.h> |
| #include <zephyr/dt-bindings/input/input-event-codes.h> |
| #include <freq.h> |
| #include <dt-bindings/pwm/pwm.h> |
| #include "mr_canhubk3-pinctrl.dtsi" |
| |
| / { |
| model = "NXP MR-CANHUBK3"; |
| compatible = "nxp,mr_canhubk3"; |
| |
| chosen { |
| zephyr,sram = &sram0_1; |
| zephyr,flash = &flash0; |
| zephyr,itcm = &itcm; |
| zephyr,dtcm = &dtcm; |
| zephyr,code-partition = &code_partition; |
| zephyr,console = &lpuart2; |
| zephyr,shell-uart = &lpuart2; |
| zephyr,flash-controller = &mx25l6433f; |
| zephyr,canbus = &flexcan0; |
| }; |
| |
| aliases { |
| dma0 = &edma0; |
| led0 = &user_led1_red; |
| led1 = &user_led1_green; |
| led2 = &user_led1_blue; |
| sw0 = &user_button_1; |
| sw1 = &user_button_2; |
| watchdog0 = &fs26_wdt; |
| /* For pwm test suites */ |
| pwm-0 = &emios0_pwm; |
| red-pwm-led = &user_led1_red_pwm; |
| green-pwm-led = &user_led1_green_pwm; |
| blue-pwm-led = &user_led1_blue_pwm; |
| pwm-led0 = &user_led1_blue_pwm; |
| }; |
| |
| leds { |
| compatible = "gpio-leds"; |
| user_led1_green: user_led1_green { |
| gpios = <&gpioa_h 11 GPIO_ACTIVE_LOW>; |
| label = "User RGB LED1 GREEN"; |
| }; |
| user_led1_blue: user_led1_blue { |
| gpios = <&gpioe_l 12 GPIO_ACTIVE_LOW>; |
| label = "User RGB LED1 BLUE"; |
| }; |
| user_led1_red: user_led1_red { |
| gpios = <&gpioe_l 14 GPIO_ACTIVE_LOW>; |
| label = "User RGB LED1 RED"; |
| }; |
| }; |
| |
| /* gpio-leds and pwm-leds are the same RGB LED and cannot be used at the same time. */ |
| pwmleds { |
| compatible = "pwm-leds"; |
| |
| user_led1_blue_pwm: user_led1_blue { |
| pwms = <&emios1_pwm 5 PWM_MSEC(20) PWM_POLARITY_INVERTED>; |
| }; |
| |
| user_led1_green_pwm: user_led1_green { |
| pwms = <&emios1_pwm 10 PWM_MSEC(20) PWM_POLARITY_INVERTED>; |
| }; |
| |
| user_led1_red_pwm: user_led1_red { |
| pwms = <&emios0_pwm 19 PWM_MSEC(20) PWM_POLARITY_INVERTED>; |
| }; |
| }; |
| |
| gpio_keys { |
| compatible = "gpio-keys"; |
| user_button_1: button_0 { |
| label = "User SW1"; |
| gpios = <&gpiod_l 15 GPIO_ACTIVE_HIGH>; |
| zephyr,code = <INPUT_KEY_0>; |
| }; |
| user_button_2: button_1 { |
| label = "User SW2"; |
| gpios = <&gpioa_h 9 GPIO_ACTIVE_HIGH>; |
| zephyr,code = <INPUT_KEY_1>; |
| }; |
| }; |
| |
| can_phy0: can-phy0 { |
| compatible = "nxp,tja1443", "can-transceiver-gpio"; |
| enable-gpios = <&gpioc_h 8 GPIO_ACTIVE_HIGH>; |
| standby-gpios = <&gpioc_h 5 GPIO_ACTIVE_LOW>; |
| max-bitrate = <5000000>; |
| #phy-cells = <0>; |
| }; |
| |
| can_phy1: can-phy1 { |
| compatible = "nxp,tja1443", "can-transceiver-gpio"; |
| enable-gpios = <&gpiod_l 2 GPIO_ACTIVE_HIGH>; |
| standby-gpios = <&gpiod_h 7 GPIO_ACTIVE_LOW>; |
| max-bitrate = <5000000>; |
| #phy-cells = <0>; |
| }; |
| |
| can_phy2: can-phy2 { |
| compatible = "nxp,tja1463", "can-transceiver-gpio"; |
| enable-gpios = <&gpiod_l 4 GPIO_ACTIVE_HIGH>; |
| standby-gpios = <&gpiod_h 6 GPIO_ACTIVE_LOW>; |
| max-bitrate = <8000000>; |
| #phy-cells = <0>; |
| }; |
| |
| can_phy3: can-phy3 { |
| compatible = "nxp,tja1463", "can-transceiver-gpio"; |
| enable-gpios = <&gpiob_l 0 GPIO_ACTIVE_HIGH>; |
| standby-gpios = <&gpiob_l 1 GPIO_ACTIVE_LOW>; |
| max-bitrate = <8000000>; |
| #phy-cells = <0>; |
| }; |
| |
| can_phy4: can-phy4 { |
| compatible = "nxp,tja1153", "can-transceiver-gpio"; |
| enable-gpios = <&gpioc_h 10 GPIO_ACTIVE_HIGH>; |
| standby-gpios = <&gpioc_h 9 GPIO_ACTIVE_LOW>; |
| max-bitrate = <2000000>; |
| #phy-cells = <0>; |
| }; |
| |
| can_phy5: can-phy5 { |
| compatible = "nxp,tja1153", "can-transceiver-gpio"; |
| enable-gpios = <&gpioe_h 1 GPIO_ACTIVE_HIGH>; |
| standby-gpios = <&gpiod_h 14 GPIO_ACTIVE_LOW>; |
| max-bitrate = <2000000>; |
| #phy-cells = <0>; |
| }; |
| }; |
| |
| &flash0 { |
| partitions { |
| compatible = "fixed-partitions"; |
| #address-cells = <1>; |
| #size-cells = <1>; |
| |
| ivt_header: partition@0 { |
| label = "ivt-header"; |
| reg = <0x00000000 0x100>; |
| }; |
| |
| code_partition: partition@100 { |
| label = "code-partition"; |
| reg = <0x00000100 (DT_SIZE_K(4048) - 0x100)>; |
| }; |
| }; |
| }; |
| |
| &gpioa_h { |
| status = "okay"; |
| }; |
| |
| &gpioe_l { |
| status = "okay"; |
| }; |
| |
| /* Enable gpio to control the CAN transceivers */ |
| |
| &gpioc_h { |
| status = "okay"; |
| }; |
| |
| &gpiod_l { |
| status = "okay"; |
| }; |
| |
| &gpiod_h { |
| status = "okay"; |
| }; |
| |
| &gpiob_l { |
| status = "okay"; |
| }; |
| |
| &gpioe_h { |
| status = "okay"; |
| }; |
| |
| &eirq0 { |
| pinctrl-0 = <&eirq0_default>; |
| pinctrl-names = "default"; |
| status = "okay"; |
| }; |
| |
| &lpuart0 { |
| pinctrl-0 = <&lpuart0_default>; |
| pinctrl-names = "default"; |
| dmas = <&edma0 0 37>, <&edma0 1 38>; |
| dma-names = "tx", "rx"; |
| }; |
| |
| &lpuart1 { |
| pinctrl-0 = <&lpuart1_default>; |
| pinctrl-names = "default"; |
| dmas = <&edma0 2 39>, <&edma0 3 40>; |
| dma-names = "tx", "rx"; |
| }; |
| |
| &lpuart2 { |
| pinctrl-0 = <&lpuart2_default>; |
| pinctrl-names = "default"; |
| current-speed = <115200>; |
| dmas = <&edma0 16 38>, <&edma0 17 39>; |
| dma-names = "tx", "rx"; |
| status = "okay"; |
| }; |
| |
| &lpuart9 { |
| pinctrl-0 = <&lpuart9_default>; |
| pinctrl-names = "default"; |
| /* |
| * LPUART 1 and 9 share the same DMA source for TX |
| * and RX, using UART async API for both instances |
| * should be careful. |
| */ |
| dmas = <&edma0 4 39>, <&edma0 5 40>; |
| dma-names = "tx", "rx"; |
| }; |
| |
| &lpuart10 { |
| pinctrl-0 = <&lpuart10_default>; |
| pinctrl-names = "default"; |
| /* |
| * LPUART 2 and 10 share the same DMA source for TX |
| * and RX, using UART async API for both instances |
| * should be careful. |
| */ |
| dmas = <&edma0 18 38>, <&edma0 19 39>; |
| dma-names = "tx", "rx"; |
| }; |
| |
| &lpuart13 { |
| pinctrl-0 = <&lpuart13_default>; |
| pinctrl-names = "default"; |
| dmas = <&edma0 20 44>, <&edma0 21 45>; |
| dma-names = "tx", "rx"; |
| }; |
| |
| &lpuart14 { |
| pinctrl-0 = <&lpuart14_default>; |
| pinctrl-names = "default"; |
| dmas = <&edma0 22 46>, <&edma0 23 47>; |
| dma-names = "tx", "rx"; |
| }; |
| |
| &qspi0 { |
| pinctrl-0 = <&qspi0_default>; |
| pinctrl-names = "default"; |
| data-rate = "SDR"; |
| a-rx-clock-source = "LOOPBACK"; |
| a-dll-mode = "BYPASSED"; |
| ahb-buffers-masters = <0 1 2 3>; |
| ahb-buffers-sizes = <0 0 0 256>; |
| ahb-buffers-all-masters; |
| status = "okay"; |
| |
| mx25l6433f: mx25l6433f@0 { |
| compatible = "nxp,s32-qspi-nor"; |
| reg = <0>; |
| size = <DT_SIZE_M(64)>; |
| jedec-id = [c2 20 17]; |
| quad-enable-requirements = "S1B6"; |
| readoc = "1-4-4"; |
| writeoc = "1-4-4"; |
| has-32k-erase; |
| status = "okay"; |
| |
| partitions { |
| compatible = "fixed-partitions"; |
| #address-cells = <1>; |
| #size-cells = <1>; |
| |
| storage_partition: partition@0 { |
| label = "storage"; |
| reg = <0x0 0x100000>; |
| }; |
| }; |
| }; |
| }; |
| |
| &flexcan0 { |
| pinctrl-0 = <&flexcan0_default>; |
| pinctrl-names = "default"; |
| phys = <&can_phy0>; |
| bus-speed = <125000>; |
| sample-point = <875>; |
| bus-speed-data = <1000000>; |
| sample-point-data = <875>; |
| status = "okay"; |
| }; |
| |
| &flexcan1 { |
| pinctrl-0 = <&flexcan1_default>; |
| pinctrl-names = "default"; |
| phys = <&can_phy1>; |
| bus-speed = <125000>; |
| sample-point = <875>; |
| bus-speed-data = <1000000>; |
| sample-point-data = <875>; |
| }; |
| |
| &flexcan2 { |
| pinctrl-0 = <&flexcan2_default>; |
| pinctrl-names = "default"; |
| phys = <&can_phy2>; |
| bus-speed = <125000>; |
| sample-point = <875>; |
| bus-speed-data = <1000000>; |
| sample-point-data = <875>; |
| }; |
| |
| &flexcan3 { |
| pinctrl-0 = <&flexcan3_default>; |
| pinctrl-names = "default"; |
| phys = <&can_phy3>; |
| bus-speed = <125000>; |
| sample-point = <875>; |
| bus-speed-data = <1000000>; |
| sample-point-data = <875>; |
| }; |
| |
| &flexcan4 { |
| pinctrl-0 = <&flexcan4_default>; |
| pinctrl-names = "default"; |
| phys = <&can_phy4>; |
| bus-speed = <125000>; |
| sample-point = <875>; |
| bus-speed-data = <1000000>; |
| sample-point-data = <875>; |
| }; |
| |
| &flexcan5 { |
| pinctrl-0 = <&flexcan5_default>; |
| pinctrl-names = "default"; |
| phys = <&can_phy5>; |
| bus-speed = <125000>; |
| sample-point = <875>; |
| bus-speed-data = <1000000>; |
| sample-point-data = <875>; |
| }; |
| |
| &lpi2c0 { |
| pinctrl-0 = <&lpi2c0_default>; |
| pinctrl-names = "default"; |
| clock-frequency = <I2C_BITRATE_STANDARD>; |
| }; |
| |
| &lpi2c1 { |
| pinctrl-0 = <&lpi2c1_default>; |
| pinctrl-names = "default"; |
| clock-frequency = <I2C_BITRATE_STANDARD>; |
| }; |
| |
| &lpspi1 { |
| pinctrl-0 = <&lpspi1_default>; |
| pinctrl-names = "default"; |
| data-pin-config = "sdo-in,sdi-out"; |
| }; |
| |
| &lpspi2 { |
| pinctrl-0 = <&lpspi2_default>; |
| pinctrl-names = "default"; |
| data-pin-config = "sdo-in,sdi-out"; |
| }; |
| |
| &lpspi3 { |
| pinctrl-0 = <&lpspi3_default>; |
| pinctrl-names = "default"; |
| data-pin-config = "sdo-in,sdi-out"; |
| status = "okay"; |
| |
| fs26_wdt: watchdog@0 { |
| compatible = "nxp,fs26-wdog"; |
| reg = <0>; |
| spi-max-frequency = <DT_FREQ_M(5)>; |
| type = "challenger"; |
| int-gpios = <&gpioa_h 2 GPIO_ACTIVE_LOW>; |
| status = "okay"; |
| }; |
| }; |
| |
| &lpspi4 { |
| pinctrl-0 = <&lpspi4_default>; |
| pinctrl-names = "default"; |
| data-pin-config = "sdo-in,sdi-out"; |
| }; |
| |
| &lpspi5 { |
| pinctrl-0 = <&lpspi5_default>; |
| pinctrl-names = "default"; |
| data-pin-config = "sdo-in,sdi-out"; |
| }; |
| |
| &emac0 { |
| pinctrl-0 = <&emac0_default>; |
| pinctrl-names = "default"; |
| phy-connection-type = "rmii"; |
| local-mac-address = [02 04 9f aa bb cc]; |
| status = "okay"; |
| |
| fixed-link { |
| speed = <100>; |
| full-duplex; |
| }; |
| }; |
| |
| &emios0 { |
| clock-divider = <200>; |
| status = "okay"; |
| |
| master_bus { |
| /* |
| * Timebase for PWM led, setting clock 50KHz for internal counter, |
| * default period is 1000 cycles <-> 20ms. |
| */ |
| emios0_bus_a { |
| mode = "MCB_UP_COUNTER"; |
| prescaler = <16>; |
| period = <1000>; |
| status = "okay"; |
| }; |
| }; |
| |
| emios0_pwm: pwm { |
| pinctrl-0 = <&emios0_default>; |
| pinctrl-names = "default"; |
| status = "okay"; |
| |
| /* Default clock for internal counter for PWM channel 0-7 is 100Khz */ |
| pwm_0 { |
| channel = <0>; |
| pwm-mode = "OPWFMB"; |
| period = <65535>; |
| duty-cycle = <0>; |
| prescaler = <8>; |
| polarity = "ACTIVE_HIGH"; |
| }; |
| |
| pwm_1 { |
| channel = <1>; |
| pwm-mode = "OPWFMB"; |
| period = <65535>; |
| duty-cycle = <0>; |
| prescaler = <8>; |
| polarity = "ACTIVE_HIGH"; |
| }; |
| |
| pwm_2 { |
| channel = <2>; |
| pwm-mode = "OPWFMB"; |
| period = <65535>; |
| duty-cycle = <0>; |
| prescaler = <8>; |
| polarity = "ACTIVE_HIGH"; |
| }; |
| |
| pwm_3 { |
| channel = <3>; |
| pwm-mode = "OPWFMB"; |
| period = <65535>; |
| duty-cycle = <0>; |
| prescaler = <8>; |
| polarity = "ACTIVE_HIGH"; |
| }; |
| |
| pwm_4 { |
| channel = <4>; |
| pwm-mode = "OPWFMB"; |
| period = <65535>; |
| duty-cycle = <0>; |
| prescaler = <8>; |
| polarity = "ACTIVE_HIGH"; |
| }; |
| |
| pwm_5 { |
| channel = <5>; |
| pwm-mode = "OPWFMB"; |
| period = <65535>; |
| duty-cycle = <0>; |
| prescaler = <8>; |
| polarity = "ACTIVE_HIGH"; |
| }; |
| |
| pwm_6 { |
| channel = <6>; |
| pwm-mode = "OPWFMB"; |
| period = <65535>; |
| duty-cycle = <0>; |
| prescaler = <8>; |
| polarity = "ACTIVE_HIGH"; |
| }; |
| |
| pwm_7 { |
| channel = <7>; |
| pwm-mode = "OPWFMB"; |
| period = <65535>; |
| duty-cycle = <0>; |
| prescaler = <8>; |
| polarity = "ACTIVE_HIGH"; |
| }; |
| |
| rgb_red { |
| channel = <19>; |
| master-bus = <&emios0_bus_a>; |
| duty-cycle = <0>; |
| pwm-mode = "OPWMB"; |
| polarity = "ACTIVE_LOW"; |
| }; |
| }; |
| }; |
| |
| &emios1 { |
| clock-divider = <200>; |
| status = "okay"; |
| |
| master_bus { |
| /* |
| * Timebase for PWM led, setting clock 50KHz for internal counter, |
| * default period is 1000 cycles <-> 20ms. |
| */ |
| emios1_bus_a { |
| prescaler = <16>; |
| mode = "MCB_UP_COUNTER"; |
| period = <1000>; |
| status = "okay"; |
| }; |
| |
| emios1_bus_f { |
| prescaler = <16>; |
| mode = "MCB_UP_COUNTER"; |
| period = <1000>; |
| status = "okay"; |
| }; |
| }; |
| |
| emios1_pwm: pwm { |
| pinctrl-0 = <&emios1_default>; |
| pinctrl-names = "default"; |
| status = "okay"; |
| |
| rgb_green { |
| channel = <10>; |
| master-bus = <&emios1_bus_a>; |
| duty-cycle = <0>; |
| pwm-mode = "OPWMB"; |
| polarity = "ACTIVE_LOW"; |
| }; |
| |
| rgb_blue { |
| channel = <5>; |
| master-bus = <&emios1_bus_f>; |
| duty-cycle = <0>; |
| pwm-mode = "OPWMB"; |
| polarity = "ACTIVE_LOW"; |
| }; |
| }; |
| }; |
| |
| &edma0 { |
| status = "okay"; |
| }; |