Hi Everyone,
I have an i.MX6ULL custom board running Yocto thud Linux. There are 6 LEDs on the board. I want to configure one or two to flash when a communication is active on my CAN or Ethernet ports. After reading about the device tree and binding documentation, it seems doable if you know your way arond the drive tree file (dts). Looking at my device tree below can clearly see one of the LEDs has been configured for the Heartbeat which works fine.
How do I configure the others for other purposes that I explained above?
Note that I am new to the Embedded Linux,
Many thanks for any help.
/dts-v1/;
#include "imx6ull.dtsi"
/ {
model = "i.MX6 UltraLite Board";
compatible = "fsl,imx6ull-14x14-evk", "fsl,imx6ull";
chosen {
stdout-path = &uart1;
};
memory {
reg = <0x80000000 0x10000000>;
};
regulators {
compatible = "simple-bus";
#address-cells = <1>;
#size-cells = <0>;
reg_hscan_nebula: regulator@0 {
compatible = "regulator-fixed";
regulator-name = "hscan_nebula";
enable-active-high;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
gpio = <&gpio2 19 GPIO_ACTIVE_HIGH>;
};
reg_hscan: regulator@1 {
compatible = "regulator-fixed";
regulator-name = "hscan";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
gpio = <&gpio3 20 GPIO_ACTIVE_LOW>;
vin-supply = <®_hscan_nebula>;
};
reg_oecan_nebula: regulator@2 {
compatible = "regulator-fixed";
regulator-name = "oecan_nebula";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
enable-active-high;
gpio = <&gpio3 18 GPIO_ACTIVE_HIGH>;
};
reg_oecan: regulator@3 {
compatible = "regulator-fixed";
regulator-name = "oecan";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
gpio = <&gpio3 17 GPIO_ACTIVE_LOW>;
vin-supply = <®_oecan_nebula>;
};
regulator@4 {
compatible = "regulator-fixed";
regulator-name = "canmux_enable";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
gpio = <&gpio4 15 GPIO_ACTIVE_LOW>;
regulator-always-on;
};
reg_vsup: regulator@5 {
compatible = "regulator-fixed";
regulator-name = "canvbatt_enable";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
gpio = <&gpio2 17 GPIO_ACTIVE_HIGH>;
enable-active-high;
status = "disabled";
};
reg_lscan_enable: regulator@6 {
compatible = "regulator-fixed";
regulator-name = "lscan_enable";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
enable-active-high;
gpio = <&gpio3 10 GPIO_ACTIVE_HIGH>;
//vin-supply = <®_vsup>;
};
regulator@7 {
compatible = "regulator-fixed";
regulator-name = "lscan-nebula-pwr";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
gpio = <&gpio4 27 GPIO_ACTIVE_HIGH>;
enable-active-high;
regulator-always-on;
status = "disabled";
};
};
gpio-leds {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_leds>;
compatible = "gpio-leds";
led_r1 {
label = "led_r1";
gpios = <&gpio3 5 GPIO_ACTIVE_HIGH>;
};
led_g1 {
label = "led_g1";
gpios = <&gpio3 6 GPIO_ACTIVE_HIGH>;
};
led_b1 {
label = "led_b1";
gpios = <&gpio3 7 GPIO_ACTIVE_HIGH>;
};
led_r2 {
label = "led_r2";
gpios = <&gpio3 8 GPIO_ACTIVE_HIGH>;
};
led_g2 {
label = "led_g2";
linux,default-trigger = "heartbeat";
gpios = <&gpio3 23 GPIO_ACTIVE_HIGH>;
};
led_b2 {
label = "led_b2";
gpios = <&gpio3 24 GPIO_ACTIVE_HIGH>;
};
};
gpio-keys {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_keys>;
compatible = "gpio-keys";
ignition {
label = "ignition";
gpios = <&gpio1 31 GPIO_ACTIVE_HIGH>;
debounce-interval = <20>;
linux,code = <KEY_WAKEUP>;
wakeup-source;
};
power {
label = "power";
gpios = <&gpio3 3 GPIO_ACTIVE_HIGH>;
linux,code = <KEY_BATTERY>;
wakeup-source;
};
};
sound {
compatible = "simple-audio-card";
simple-audio-card,name = "mx6ul-sph0645";
simple-audio-card,format = "i2s";
simple-audio-card,bitclock-master = <&dailink_master>;
simple-audio-card,frame-master = <&dailink_master>;
dailink_master: simple-audio-card,cpu {
sound-dai = <&sai3>;
};
simple-audio-card,codec {
sound-dai = <&codec>;
clocks = <&clks IMX6UL_CLK_SAI3>;
};
};
codec: sph0645 {
compatible = "knowles,sph0645";
#sound-dai-cells = <0>;
};
clocks {
/* external oscillator of tcan4x5x */
can_osc: can_osc {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <40000000>;
};
};
};
//------------------------------------------------------------
//------------------------------------------------------------
&sai3 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_sai3>;
fsl,sai-asynchronous;
assigned-clocks = <&clks IMX6UL_CLK_SAI3_SEL>,
<&clks IMX6UL_CLK_SAI3>;
assigned-clock-parents = <&clks IMX6UL_CLK_PLL4_AUDIO_DIV>;
assigned-clock-rates = <0>, <12288000>;
status = "okay";
};
//------------------------------------------------------------
//------------------------------------------------------------
&clks {
assigned-clocks = <&clks IMX6UL_CLK_PLL4_AUDIO_DIV>;
assigned-clock-rates = <786432000>;
};
//------------------------------------------------------------
//------------------------------------------------------------
&fec1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_enet1>;
phy-mode = "rmii";
phy-handle = <ðphy1>;
status = "okay";
phy-reset-gpios = <&gpio1 5 GPIO_ACTIVE_LOW>;
phy-reset-duration = <1>;
mdio {
#address-cells = <1>;
#size-cells = <0>;
ethphy1: ethernet-phy@1 {
compatible = "ethernet-phy-ieee802.3-c22";
reg = <1>;
};
};
};
//------------------------------------------------------------
//------------------------------------------------------------
&can1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_flexcan1>;
xceiver-supply = <®_oecan>;
xceiver-alt-supply = <®_lscan_enable>;
wakeup-source;
status = "okay";
};
//------------------------------------------------------------
//------------------------------------------------------------
&can2 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_flexcan2>;
xceiver-supply = <®_hscan>;
wakeup-source;
status = "okay";
};
//------------------------------------------------------------
//------------------------------------------------------------
&adc1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_adc1>;
status = "okay";
};
//------------------------------------------------------------
//------------------------------------------------------------
&i2c1 {
clock-frequency = <100000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c1>;
status = "okay";
lsm6dsl@6a {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_lsm6dsl>;
compatible = "st,lsm6dsl";
reg = <0x6a>;
interrupt-parent = <&gpio5>;
interrupts = <1 IRQ_TYPE_EDGE_RISING>;
st,drdy-int-pin = <1>;
wakeup-source;
};
lis2mdl@1e {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_lis2mdl>;
compatible = "st,lis2mdl";
reg = <0x1e>;
interrupt-parent = <&gpio5>;
interrupts = <0 IRQ_TYPE_EDGE_RISING>;
st,drdy-int-pin = <1>;
};
};
//------------------------------------------------------------
//------------------------------------------------------------
&iomuxc {
pinctrl_leds: ledsgrp {
fsl,pins = <
MX6UL_PAD_LCD_DATA00__GPIO3_IO05 0x80000000
MX6UL_PAD_LCD_DATA01__GPIO3_IO06 0x80000000
MX6UL_PAD_LCD_DATA02__GPIO3_IO07 0x80000000
MX6UL_PAD_LCD_DATA03__GPIO3_IO08 0x80000000
MX6UL_PAD_LCD_DATA18__GPIO3_IO23 0x80000000
MX6UL_PAD_LCD_DATA19__GPIO3_IO24 0x80000000
>;
};
pinctrl_gpio1: gpio1grp {
fsl,pins = <
MX6UL_PAD_GPIO1_IO05__GPIO1_IO05 0x80000000
MX6UL_PAD_UART1_CTS_B__GPIO1_IO18 0x80000000
MX6UL_PAD_UART1_RTS_B__GPIO1_IO19 0x80000000
MX6UL_PAD_UART5_TX_DATA__GPIO1_IO30 0x80000000
>;
};
pinctrl_gpio2: gpio2grp {
fsl,pins = <
MX6UL_PAD_ENET2_RX_DATA1__GPIO2_IO09 0x80000000 /* Enable battery reading */
MX6UL_PAD_SD1_CLK__GPIO2_IO17 0x80000000 /* CAN batt power enable */
MX6UL_PAD_SD1_DATA1__GPIO2_IO19 0x80000000 /* CAN0 Ctrl */
>;
};
pinctrl_gpio3: gpio3grp {
fsl,pins = <
MX6UL_PAD_LCD_DATA05__GPIO3_IO10 0x80000000 /* LS CAN TO IMX */
MX6UL_PAD_LCD_DATA07__GPIO3_IO12 0x80000000 /* Nebula Wakeup */
MX6UL_PAD_LCD_DATA12__GPIO3_IO17 0x80000000 /* CAN1 Transciever standby */
MX6UL_PAD_LCD_DATA13__GPIO3_IO18 0x80000000 /* CAN1 Ctrl */
MX6UL_PAD_LCD_DATA15__GPIO3_IO20 0x80000000 /* CAN0 Transciever standby */
MX6UL_PAD_LCD_DATA16__GPIO3_IO21 0x80000000 /* GPIO debug 0 */
MX6UL_PAD_LCD_DATA17__GPIO3_IO22 0x80000000 /* GPIO debug 1 */
MX6UL_PAD_LCD_DATA21__GPIO3_IO26 0x80000000 /* Nebula Reset */
MX6UL_PAD_LCD_DATA22__GPIO3_IO27 0x80000000 /* Ethernet activate 1 */
MX6UL_PAD_LCD_DATA23__GPIO3_IO28 0x80000000 /* Ethernet activate 2 */
>;
};
pinctrl_gpio4: gpio4grp {
fsl,pins = <
MX6UL_PAD_NAND_READY_B__GPIO4_IO12 0x80000000 /* External regulator shutdown */
MX6UL_PAD_NAND_CE1_B__GPIO4_IO14 0x80000000 /* Dodgy reset button something */
MX6UL_PAD_NAND_CLE__GPIO4_IO15 0x80000000 /* CAN mux enable */
MX6UL_PAD_NAND_DQS__GPIO4_IO16 0x80000000 /* Modem Power Key */
MX6UL_PAD_CSI_DATA00__GPIO4_IO21 0x80000000 /* Modem AP ready */
MX6UL_PAD_CSI_DATA01__GPIO4_IO22 0x80000000 /* Modem Power */
MX6UL_PAD_CSI_DATA03__GPIO4_IO24 0x80000000 /* Modem dtr */
MX6UL_PAD_CSI_DATA04__GPIO4_IO25 0x80000000 /* Modem ri */
MX6UL_PAD_CSI_DATA05__GPIO4_IO26 0x80000000 /* Modem status */
MX6UL_PAD_CSI_DATA06__GPIO4_IO27 0x80000000 /* CAN power enable*/
>;
};
pinctrl_gpio5: gpio5grp {
fsl,pins = <
MX6ULL_PAD_SNVS_TAMPER2__GPIO5_IO02 0x80000000 /* NEB int */
MX6ULL_PAD_SNVS_TAMPER3__GPIO5_IO03 0x80000000 /* dc in kill */
MX6ULL_PAD_SNVS_TAMPER4__GPIO5_IO04 0x80000000 /* on key */
MX6ULL_PAD_SNVS_TAMPER5__GPIO5_IO05 0x80000000 /* ble irq */
MX6ULL_PAD_SNVS_TAMPER7__GPIO5_IO07 0x70a1 /* ble reset */
MX6UL_PAD_SNVS_TAMPER8__GPIO5_IO08 0x80000000 /* modem reset */
>;
};
pinctrl_keys: keygrp {
fsl,pins = <
MX6UL_PAD_UART5_RX_DATA__GPIO1_IO31 0x218d
MX6UL_PAD_LCD_VSYNC__GPIO3_IO03 0x80000000 /* Power Good */
>;
};
pinctrl_enet1: enet1grp {
fsl,pins = <
MX6UL_PAD_GPIO1_IO07__ENET1_MDC 0x1b0b0
MX6UL_PAD_GPIO1_IO06__ENET1_MDIO 0x1b0b0
MX6UL_PAD_ENET1_RX_EN__ENET1_RX_EN 0x1b0b0
MX6UL_PAD_ENET1_RX_ER__ENET1_RX_ER 0x1b0b0
MX6UL_PAD_ENET1_RX_DATA0__ENET1_RDATA00 0x1b0b0
MX6UL_PAD_ENET1_RX_DATA1__ENET1_RDATA01 0x1b0b0
MX6UL_PAD_ENET1_TX_EN__ENET1_TX_EN 0x1b0b0
MX6UL_PAD_ENET1_TX_DATA0__ENET1_TDATA00 0x1b0b0
MX6UL_PAD_ENET1_TX_DATA1__ENET1_TDATA01 0x1b0b0
MX6UL_PAD_ENET1_TX_CLK__ENET1_REF_CLK1 0x4001b031
>;
};
pinctrl_flexcan1: flexcan1grp {
fsl,pins = <
MX6UL_PAD_LCD_DATA08__FLEXCAN1_TX 0x1b020
MX6UL_PAD_LCD_DATA09__FLEXCAN1_RX 0x1b020
>;
};
pinctrl_flexcan2: flexcan2grp {
fsl,pins = <
MX6UL_PAD_SD1_DATA2__FLEXCAN2_TX 0x1b020
MX6UL_PAD_SD1_DATA3__FLEXCAN2_RX 0x1b020
>;
};
pinctrl_adc1: adc1grp {
fsl,pins = <
MX6UL_PAD_GPIO1_IO00__GPIO1_IO00 0x000b0 /* DCIN CUR */
MX6UL_PAD_GPIO1_IO01__GPIO1_IO01 0x000b0 /* BAT VOLT */
MX6UL_PAD_GPIO1_IO08__GPIO1_IO08 0x000b0 /* DCIN CAN VOLT */
MX6UL_PAD_GPIO1_IO09__GPIO1_IO09 0x000b0 /* DCIN VOLT */
>;
};
pinctrl_i2c1: i2c1grp {
fsl,pins = <
MX6UL_PAD_GPIO1_IO02__I2C1_SCL 0x4001b8b0
MX6UL_PAD_GPIO1_IO03__I2C1_SDA 0x4001b8b0
>;
};
pinctrl_lsm6dsl: lsm6grp {
fsl,pins = <
MX6ULL_PAD_SNVS_TAMPER1__GPIO5_IO01 0x80000000 /* Accelerometer int */
>;
};
pinctrl_lis2mdl: lis2grp {
fsl,pins = <
MX6ULL_PAD_SNVS_TAMPER0__GPIO5_IO00 0x80000000 /* Compass int */
>;
};
pinctrl_uart1: uart1grp {
fsl,pins = <
MX6UL_PAD_UART1_TX_DATA__UART1_DCE_TX 0x1b0b1
MX6UL_PAD_UART1_RX_DATA__UART1_DCE_RX 0x1b0b1
>;
};
pinctrl_spi3: spi3grp {
fsl,pins = <
MX6UL_PAD_UART2_TX_DATA__GPIO1_IO20 0x1b0b1 /* CANFD CS */
MX6UL_PAD_UART3_CTS_B__GPIO1_IO26 0x1b0b1 /* CANFD nINT */
MX6UL_PAD_UART3_RTS_B__GPIO1_IO27 0x1b0b1 /* CANFD nWKRQ */
MX6UL_PAD_LCD_DATA04__GPIO3_IO09 0x1b0b1 /* CANFD RST */
MX6UL_PAD_UART2_RX_DATA__ECSPI3_SCLK 0x1b0b1
MX6UL_PAD_UART2_CTS_B__ECSPI3_MOSI 0x1b0b1
MX6UL_PAD_UART2_RTS_B__ECSPI3_MISO 0x1b0b1
>;
};
pinctrl_uart3: uart3grp {
fsl,pins = <
MX6UL_PAD_UART3_TX_DATA__UART3_DCE_TX 0x1b0b1
MX6UL_PAD_UART3_RX_DATA__UART3_DCE_RX 0x1b0b1
>;
};
pinctrl_uart4: uart4grp {
fsl,pins = <
MX6UL_PAD_UART4_TX_DATA__UART4_DCE_TX 0x1b0b1
MX6UL_PAD_UART4_RX_DATA__UART4_DCE_RX 0x1b0b1
>;
};
pinctrl_uart6: uart6grp {
fsl,pins = <
MX6UL_PAD_CSI_MCLK__UART6_DCE_TX 0x1b0b1
MX6UL_PAD_CSI_PIXCLK__UART6_DCE_RX 0x1b0b1
MX6UL_PAD_CSI_VSYNC__UART6_DCE_RTS 0x1b0b1
MX6UL_PAD_CSI_HSYNC__UART6_DCE_CTS 0x1b0b1
>;
};
pinctrl_uart8: uart8grp {
fsl,pins = <
MX6UL_PAD_ENET2_TX_EN__UART8_DCE_RX 0x1b0b1
MX6UL_PAD_ENET2_TX_DATA1__UART8_DCE_TX 0x1b0b1
/* MX6UL_PAD_ENET2_TX_CLK__UART8_DCE_CTS 0x1b0b1 */
/* MX6UL_PAD_ENET2_RX_ER__UART8_DCE_RTS 0x1b0b1 */
>;
};
pinctrl_usb_otg1_id: usbotg1idgrp {
fsl,pins = <
MX6UL_PAD_SD1_DATA0__ANATOP_OTG1_ID 0x17059
>;
};
pinctrl_usdhc2_8bit_200mhz: usdhc2grp_8bit_200mhz {
fsl,pins = <
MX6UL_PAD_NAND_RE_B__USDHC2_CLK 0x100f9
MX6UL_PAD_NAND_WE_B__USDHC2_CMD 0x170f9
MX6UL_PAD_NAND_DATA00__USDHC2_DATA0 0x170f9
MX6UL_PAD_NAND_DATA01__USDHC2_DATA1 0x170f9
MX6UL_PAD_NAND_DATA02__USDHC2_DATA2 0x170f9
MX6UL_PAD_NAND_DATA03__USDHC2_DATA3 0x170f9
MX6UL_PAD_NAND_DATA04__USDHC2_DATA4 0x170f9
MX6UL_PAD_NAND_DATA05__USDHC2_DATA5 0x170f9
MX6UL_PAD_NAND_DATA06__USDHC2_DATA6 0x170f9
MX6UL_PAD_NAND_DATA07__USDHC2_DATA7 0x170f9
>;
};
pinctrl_wdog: wdoggrp {
fsl,pins = <
MX6UL_PAD_LCD_RESET__WDOG1_WDOG_ANY 0x30b0
>;
};
pinctrl_sai3: sai3grp {
fsl,pins = <
MX6UL_PAD_LCD_DATA14__SAI3_RX_DATA 0x11088 /* MIC_DATA */
MX6UL_PAD_LCD_DATA11__SAI3_RX_BCLK 0x17088 /* MIC_BIT_CLK */
MX6UL_PAD_LCD_DATA10__SAI3_RX_SYNC 0x17088 /* MIC_WS */
>;
};
};
//------------------------------------------------------------
//------------------------------------------------------------
&gpio1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_gpio1>;
gpio-line-names = "", "", "", "", "",
"enet_rst", /* 5 */
"", "", "", "", "", "", "",
"", "", "", "", "",
"gpo1", /* 18 */
"neb_ign", /* 19 */
"", "", "", "", "", "", "", "", "", "",
"gpo2", /* 30 */
"ign_on" /* 31 */;
};
//------------------------------------------------------------
//------------------------------------------------------------
&gpio2 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_gpio2>;
gpio-line-names = "", "", "", "", "", "", "", "", "",
"en_batt_adc",
"", "", "",
"", "", "", "", "", "",
"can0_ctrl", /* 19 */
"", "", "", "", "", "", "", "", "", "", "", "";
};
//------------------------------------------------------------
//------------------------------------------------------------
&gpio3 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_gpio3>;
gpio-line-names = "gpio1", /* 0 */
"gpio2", /* 1 */
"",
"ex_reg_pwr_good", /* 3 */
"", "", "", "", "", "",
"ls_can_en", /* 10 */
"",
"neb_wakeup", /* 12 */
"", "", "", "",
"can1_trnc_stby", /* 17 */
"can1_ctrl", /* 18 */
"",
"can0_trnc_stby", /* 20 */
"gpio_dbg_0", /* 21 */
"gpio_dbg_1", /* 22 */
"gpio_dbg_2", /* 23 */
"",
"",
"neb_mclr", /* 26 */
"enet_act_1", /* 27 */
"enet_act_2", /* 28 */
"", "", "";
};
//------------------------------------------------------------
//------------------------------------------------------------
&gpio4 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_gpio4>;
gpio-line-names = "", "", "", "", "", "", "", "", "", "", "", "",
"ex_reg_shutdown", /* 12 */
"",
"wdg_reset_button", /* 14 */
"can_mux", /* 15 */
"modem_on", /* 16 */
"", "", "", "",
"modem_ap", /* 21 */
"modem_pwr_on", /* 22 */
"", "",
"modem_ri", /* 25 */
"modem_status", /* 26 */
"can_pwr_en", /* 27 */
"can_batt_pwr_en", /* 28 */
"", "", "";
ex_reg_shutdown {
gpio-hog;
gpios = <12 GPIO_ACTIVE_HIGH>;
output-low;
};
wdog_reset {
gpio-hog;
gpios = <14 GPIO_ACTIVE_HIGH>;
output-high;
};
2g_pwr {
gpio-hog;
gpios = <16 GPIO_ACTIVE_HIGH>;
output-high;
};
};
//------------------------------------------------------------
//------------------------------------------------------------
&gpio5 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_gpio5>;
pinctrl-names = "default";
gpio-line-names = "maq_int", /* 0 */
"acc_int", /* 1 */
"neb_int", /* 2 */
"dc_in_kill", /* 3 */
"on_key", /* 4 */
"ble_irq", /* 5 */
"enet2_irq", /* 6 */
"ble_rst", /* 7 */
"modem_rst", /* 8 */
"", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "";
dc_in_kill {
gpio-hog;
gpios =
output-low;
};
on_key {
gpio-hog;
gpios = <4 GPIO_ACTIVE_HIGH>;
output-high;
};
};
//------------------------------------------------------------
//------------------------------------------------------------
&uart1 {
label = "debug";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart1>;
status = "okay";
};
//------------------------------------------------------------
//------------------------------------------------------------
&uart3 {
label = "nebula";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart3>;
status = "okay";
};
//------------------------------------------------------------
//------------------------------------------------------------
&uart4 {
label = "gps";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart4>;
status = "okay";
};
//------------------------------------------------------------
//------------------------------------------------------------
&uart6 {
label = "mdm";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart6>;
fsl,uart-has-rtscts;
status = "okay";
};
//------------------------------------------------------------
//------------------------------------------------------------
&uart8 {
label = "ble";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart8>;
status = "okay";
};
//------------------------------------------------------------
//------------------------------------------------------------
&ecspi3 {
cs-gpios = <&gpio1 20 0>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_spi3>;
status = "okay";
tcan4x5x: tcan4x5x@0 {
compatible = "ti,tcan4x5x";
reg = <0>;
#address-cells = <1>;
#size-cells = <1>;
spi-max-frequency = <10000000>;
bosch,mram-cfg = <0x0 0 0 32 0 0 1 1>;
interrupt-parent = <&gpio1>;
interrupts = <26 GPIO_ACTIVE_LOW>;
reset-gpios = <&gpio3 9 GPIO_ACTIVE_HIGH>;
clocks = <&can_osc>;
clock-names = "cclk";
status = "okay";
//vsup-supply = <®_vsup>;
};
};
//------------------------------------------------------------
//------------------------------------------------------------
&usbotg1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usb_otg1_id>;
dr_mode = "otg";
srp-disable;
hnp-disable;
adp-disable;
status = "okay";
disable-over-current;
};
//------------------------------------------------------------
//------------------------------------------------------------
&usbphy1 {
fsl,tx-d-cal = <106>;
};
//------------------------------------------------------------
//------------------------------------------------------------
&usbotg2 {
dr_mode = "host";
status = "okay";
disable-over-current;
};
//------------------------------------------------------------
//------------------------------------------------------------
&usbphy2 {
fsl,tx-d-cal = <106>;
};
//------------------------------------------------------------
//------------------------------------------------------------
&usdhc2 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usdhc2_8bit_200mhz>;
non-removable;
status = "okay";
};
//------------------------------------------------------------
//------------------------------------------------------------
&wdog1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_wdog>;
fsl,ext-reset-output;
};
Solved! Go to Solution.
LEDs triggers are reconfigurable at run time. You just need in kernel config
CONFIG_LEDS_TRIGGER_NETDEV=y
Just check /sys/class/leds/YOURLED/trigger lists netdev as available trigger.
Then it may look like this to make yellow:indicator LED to light on wlan0 rx and tx.
echo netdev > /sys/class/leds/yellow:indicator/trigger
echo wlan0 > /sys/class/leds/yellow:indicator/device_name
echo 1 > /sys/class/leds/yellow:indicator/rx
echo 1 > /sys/class/leds/yellow:indicator/tx
Hi @_ZZ_ ,
LEDs triggers are reconfigurable at run time. You just need in kernel config
CONFIG_LEDS_TRIGGER_NETDEV=y
Just check /sys/class/leds/YOURLED/trigger lists netdev as available trigger.
Then it may look like this to make yellow:indicator LED to light on wlan0 rx and tx.
echo netdev > /sys/class/leds/yellow:indicator/trigger
echo wlan0 > /sys/class/leds/yellow:indicator/device_name
echo 1 > /sys/class/leds/yellow:indicator/rx
echo 1 > /sys/class/leds/yellow:indicator/tx
Hi,
That worked well,
thanks