This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM3352: SDIO exception

Part Number: AM3352
Other Parts Discussed in Thread: SYSCONFIG

Hi team,

Here's an issue from the customer may need your help:

When debugging SDIO wifi, use SDIO from mmC3 to connect to AP6256.

When using SDIO data lines, the SDIO group GPIO1-17, GPIO1-18, GPIO1-19, GPIO1-28 is always abnormal. When the SDIO data line is using GPIO1-12, goio1-13, GPIO1-14, GPIO1-15, SDIO communication is good and the wifi works properly.

The customer configures the group GPIO1-17, GPIO1-18, GPIO1-19, GPIO1-28 as general GPIO for debug and pull the pin high and low. Currently, only GPIO1-28 can pull high and low normally. GPIO1-17, GPIO1-18, GPIO1-19 pins appear to be not functioning properly.

The following are the device tree configurations:

#include "am33xx.dtsi"
#include <dt-bindings/pwm/pwm.h>
#include <dt-bindings/interrupt-controller/irq.h>

/ {
model = "VT-M2M-L335M";
compatible = "ti,vt-m2m-l335-m", "ti,am33xx";
cpus {
cpu@0 {
cpu0-supply = <&dcdc2_reg>;
};
};

aliases {
// led-boot = &led_sys;
// led-failsafe = &led_sys;
// led-running = &led_sys;
// led-upgrade = &led_sys;
};

memory@80000000 {
device_type = "memory";
reg = <0x80000000 0x20000000>; /* 512 MB */
};

chosen {
stdout-path = &uart0;
};

/*
vbat: fixedregulator0 {
compatible = "regulator-fixed";
regulator-name = "vbat";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
regulator-boot-on;
};
*/

vmmcsd_fixed: fixedregulator0 {
compatible = "regulator-fixed";
regulator-name = "vmmcsd_fixed";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
};
wlan_en_reg: regulator@1 {
compatible = "regulator-fixed";
regulator-name = "wlan-en-regulator";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
//gpio = <&gpio2 7 GPIO_ACTIVE_HIGH>;
//enable-active-high;
//startup-delay-us= <70000>;
};

bcmdhd_wifi {
compatible = "android,bcmdhd_wlan";
//gpios = <&gpio2 6 GPIO_ACTIVE_HIGH>;
gpios = <&gpio2 2 GPIO_ACTIVE_HIGH>;
wlreg_on = <&wlan_en_reg>;
};

l335_m_gpio {
compatible = "ti,vt-m2m-l335-m-gpio";
};

leds {
compatible = "gpio-leds";

// led_sys: sys {
// label = "vantron:green:sys";
// gpios = <&gpio3 19 GPIO_ACTIVE_LOW>;
// };

// buzzer {
// label = "vantron:green:buzzer";
// gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>;
// };

cellular {
label = "vantron:green:cellular";
gpios = <&gpio1 27 GPIO_ACTIVE_HIGH>;
};

// zigbee {
// label = "vantron:green:zigbee";
// gpios = <&gpio2 11 GPIO_ACTIVE_LOW>;
// };

// zigbee_r {
// label = "vantron:green:zigbee_r";
// gpios = <&gpio2 13 GPIO_ACTIVE_HIGH>;
// };

// uart0 {
// label = "vantron:green:uart0";
// gpios = <&gpio2 8 GPIO_ACTIVE_HIGH>;
// };

// uart1 {
// label = "vantron:green:uart1";
// gpios = <&gpio2 23 GPIO_ACTIVE_HIGH>;
// };


uart3 {
label = "vantron:green:uart3";
gpios = <&gpio0 20 GPIO_ACTIVE_HIGH>;
default-state = "on";
};

/****************** GPS ******************/
gps {
label = "vantron:green:gps";
gpios = <&gpio1 22 GPIO_ACTIVE_LOW>;
};

gps_r {
label = "vantron:green:gps_r";
gpios = <&gpio1 24 GPIO_ACTIVE_LOW>;
};
/****************** GPS END ******************/

mcu_reset {
label = "vantron:green:mcu_reset";
default-state = "on";
gpios = <&gpio1 16 GPIO_ACTIVE_LOW>;
};

mcu_boot {
label = "vantron:green:mcu_boot";
default-state = "on";
gpios = <&gpio1 25 GPIO_ACTIVE_HIGH>;
};

// bt {
// label = "vantron:green:bt";
// gpios = <&gpio2 6 GPIO_ACTIVE_LOW>;
// };

// bt_r {
// label = "vantron:green:bt_r";
// gpios = <&gpio2 7 GPIO_ACTIVE_LOW>;
// };

//wifi {
// label = "vantron:green:wifi";
// gpios = <&gpio1 29 GPIO_ACTIVE_HIGH>;
//};
};

keys {
compatible = "gpio-keys";

reset {
label = "reset";
gpios = <&gpio3 19 GPIO_ACTIVE_HIGH>;
linux,code = <0x198>;
};

sim {
label = "sim";
gpios = <&gpio0 30 GPIO_ACTIVE_HIGH>;
linux,code = <0x109>;
};
};
regulators {
dcdc1_reg: regulator@0 {
regulator-name = "vdds_dpr";
regulator-always-on;
};

dcdc2_reg: regulator@1 {
/* VDD_MPU voltage limits 0.95V - 1.26V with +/-4% tolerance */
regulator-name = "vdd_mpu";
regulator-min-microvolt = <925000>;
regulator-max-microvolt = <1351500>;
regulator-boot-on;
regulator-always-on;
};

dcdc3_reg: regulator@2 {
/* VDD_CORE voltage limits 0.95V - 1.1V with +/-4% tolerance */
regulator-name = "vdd_core";
regulator-min-microvolt = <925000>;
regulator-max-microvolt = <1150000>;
regulator-boot-on;
regulator-always-on;
};

ldo1_reg: regulator@3 {
regulator-name = "vio,vrtc,vdds";
regulator-always-on;
};

ldo2_reg: regulator@4 {
regulator-name = "vdd_3v3aux";
regulator-always-on;
};

ldo3_reg: regulator@5 {
regulator-name = "vdd_1v8";
regulator-always-on;
};

ldo4_reg: regulator@6 {
regulator-name = "vdd_3v3a";
regulator-always-on;
};
};

};

&am33xx_pinmux {
pinctrl-names = "default";
// pinctrl-0 = <&gpio_keys_pinmux &gpio_pins_default &gpio_leds_pinmux &bluetooth_pins>;
pinctrl-0 = <&gpio_keys_pinmux &gpio_pins_default>;

// gpio_leds_pinmux: gpio_leds_pinmux {
// pinctrl-single,pins = <
// AM33XX_IOPAD(0x9a4, PIN_OUTPUT_PULLUP | MUX_MODE7) /* mcasp0_fsx.gpio3_19 */
// >;
// };

gpio_keys_pinmux: gpio_keys_pinmux {
pinctrl-single,pins = <
AM33XX_IOPAD(0x870, PIN_INPUT_PULLUP | MUX_MODE7) /* sim detect gpio0_30 */
AM33XX_IOPAD(0x9A4, PIN_INPUT_PULLUP | MUX_MODE7) /* renew gpio3_19 */
AM33XX_IOPAD(0x898, PIN_INPUT_PULLUP | MUX_MODE7) /* sd card detect gpio2_4 */

>;
};

i2c0_pins: pinmux_i2c0_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x988, PIN_INPUT_PULLUP | MUX_MODE0) /* i2c0_sda.i2c0_sda */
AM33XX_IOPAD(0x98c, PIN_INPUT_PULLUP | MUX_MODE0) /* i2c0_scl.i2c0_scl */
>;
};

i2c1_pins: pinmux_i2c1_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x958, PIN_INPUT_PULLUP | MUX_MODE2) /* spi0_d1.i2c1_sda */
AM33XX_IOPAD(0x95c, PIN_INPUT_PULLUP | MUX_MODE2) /* spi0_cs0.i2c1_scl */
>;
};

// spi1_pins: pinmux_spi1_pins {
// pinctrl-single,pins = <
// // AM33XX_IOPAD(0x908, PIN_INPUT | MUX_MODE2) /* mii1_col.spi1_sclk */
// // AM33XX_IOPAD(0x90c, PIN_OUTPUT | MUX_MODE2) /* mii1_crs.spi1_d0 */
// // AM33XX_IOPAD(0x910, PIN_INPUT | MUX_MODE2) /* mii1_rxerr.spi1_d1 */
// // AM33XX_IOPAD(0x9b0, PIN_OUTPUT | MUX_MODE4) /* xdma_event_intr0.spi1_cs1*/
// >;
// };

uart0_pins: pinmux_uart0_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x970, PIN_INPUT_PULLUP | MUX_MODE0) /* uart0_rxd.uart0_rxd */
AM33XX_IOPAD(0x974, PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* uart0_txd.uart0_txd */
>;
};

// Communication with ZigBee
uart1_pins: pinmux_uart1_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x980, PIN_INPUT_PULLUP | MUX_MODE0) /* uart1_rxd.uart1_rxd */
AM33XX_IOPAD(0x984, PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* uart1_txd.uart1_txd */
>;
};

// Communication with MCU
uart2_pins: pinmux_uart2_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x950, PIN_INPUT_PULLUP | MUX_MODE1) /* spi0_sclk.uart2_rxd */
AM33XX_IOPAD(0x954, PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* spi0_d0.uart2_txd */
>;
};

// External communication
uart3_pins: pinmux_uart3_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x934, PIN_INPUT | MUX_MODE1) /* spi0_cs1.uart3_rxd */
AM33XX_IOPAD(0x938, PIN_OUTPUT | MUX_MODE1) /* ecap0_in_pwm0_out.uart3_txd */
>;
};
// ap6256 bt
uart4_pins: pinmux_uart4_pins {
pinctrl-single,pins = <
// AM33XX_IOPAD(0x968, PIN_INPUT_PULLDOWN | MUX_MODE1) /* uart0_ctsn.uart4_rxd */
// AM33XX_IOPAD(0x96c, PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* uart0_rtsn.uart4_txd */
// AM33XX_IOPAD(0x998, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* mcasp0_axr0.gpio3_16 */ //RS485_CTR2
>;
};
// Communication with GPS
uart5_pins: uart5_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x8c4, PIN_INPUT | MUX_MODE4) /* lcd_data9.uart5_rxd */
AM33XX_IOPAD(0x8c0, PIN_OUTPUT | MUX_MODE3) /* lcd_data8.uart5_txd */
>;
};
// yt8512C rmii
cpsw_default: cpsw_default {
pinctrl-single,pins = <
/* Slave 1 */
AM33XX_IOPAD(0x90c, PIN_INPUT_PULLDOWN | MUX_MODE1) /* mii1_crs.rmii1_crs_dv */
AM33XX_IOPAD(0x910, PIN_INPUT_PULLDOWN | MUX_MODE1) /* mii1_rxerr.rmii1_rxerr */
AM33XX_IOPAD(0x914, PIN_OUTPUT | MUX_MODE1) /* mii1_txen.rmii1_txen */
AM33XX_IOPAD(0x924, PIN_OUTPUT | MUX_MODE1) /* mii1_txd1.rmii1_txd1 */
AM33XX_IOPAD(0x928, PIN_OUTPUT | MUX_MODE1) /* mii1_txd0.rmii1_txd0 */
AM33XX_IOPAD(0x93c, PIN_INPUT_PULLDOWN | MUX_MODE1) /* mii1_rxd1.rmii1_rxd1 */
AM33XX_IOPAD(0x940, PIN_INPUT_PULLDOWN | MUX_MODE1) /* mii1_rxd0.rmii1_rxd0 */
AM33XX_IOPAD(0x944, PIN_INPUT_PULLDOWN | MUX_MODE0) /* rmii1_refclk.rmii1_refclk */

>;
};
cpsw_sleep: cpsw_sleep {
pinctrl-single,pins = <
/* Slave 1 reset value */
// AM33XX_IOPAD(0x914, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* mii1_txen.rgmii1_tctl */
// AM33XX_IOPAD(0x918, PIN_INPUT_PULLDOWN | MUX_MODE7) /* mii1_rxdv.rgmii1_rctl */
// AM33XX_IOPAD(0x91c, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* mii1_txd3.rgmii1_td3 */
// AM33XX_IOPAD(0x920, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* mii1_txd2.rgmii1_td2 */
// AM33XX_IOPAD(0x924, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* mii1_txd1.rgmii1_td1 */
// AM33XX_IOPAD(0x928, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* mii1_txd0.rgmii1_td0 */
// AM33XX_IOPAD(0x92c, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* mii1_txclk.rgmii1_tclk */
// AM33XX_IOPAD(0x930, PIN_INPUT_PULLDOWN | MUX_MODE7) /* mii1_rxclk.rgmii1_rclk */
// AM33XX_IOPAD(0x934, PIN_INPUT_PULLDOWN | MUX_MODE7) /* mii1_rxd3.rgmii1_rd3 */
// AM33XX_IOPAD(0x938, PIN_INPUT_PULLDOWN | MUX_MODE7) /* mii1_rxd2.rgmii1_rd2 */
// AM33XX_IOPAD(0x93c, PIN_INPUT_PULLDOWN | MUX_MODE7) /* mii1_rxd1.rgmii1_rd1 */
// AM33XX_IOPAD(0x940, PIN_INPUT_PULLDOWN | MUX_MODE7) /* mii1_rxd0.rgmii1_rd0 */
>;
};

davinci_mdio_default: davinci_mdio_default {
pinctrl-single,pins = <
/* MDIO */
AM33XX_IOPAD(0x948, PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0) /* mdio_data.mdio_data */
AM33XX_IOPAD(0x94c, PIN_OUTPUT_PULLUP | MUX_MODE0) /* mdio_clk.mdio_clk */
>;
};

davinci_mdio_sleep: davinci_mdio_sleep {
pinctrl-single,pins = <
/* MDIO reset value */
AM33XX_IOPAD(0x948, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x94c, PIN_INPUT_PULLDOWN | MUX_MODE7)
>;
};

mmc1_pins: pinmux_mmc1_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x990, PIN_INPUT | MUX_MODE7) /* mcasp0_aclkx.gpio3_14 */
AM33XX_IOPAD(0x8fc, PIN_INPUT_PULLUP | MUX_MODE0) /* mmc0_dat0.mmc0_dat0 */
AM33XX_IOPAD(0x8f8, PIN_INPUT_PULLUP | MUX_MODE0) /* mmc0_dat1.mmc0_dat1 */
AM33XX_IOPAD(0x8f4, PIN_INPUT_PULLUP | MUX_MODE0) /* mmc0_dat2.mmc0_dat2 */
AM33XX_IOPAD(0x8f0, PIN_INPUT_PULLUP | MUX_MODE0) /* mmc0_dat3.mmc0_dat3 */
AM33XX_IOPAD(0x904, PIN_INPUT_PULLUP | MUX_MODE0) /* mmc0_cmd.mmc0_cmd */
AM33XX_IOPAD(0x900, PIN_INPUT_PULLUP | MUX_MODE0) /* mmc0_clk.mmc0_clk */
>;
};

mmc2_pins: pinmux_mmc2_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x880, PIN_INPUT_PULLUP | MUX_MODE2) /* gpmc_csn1.mmc1_clk */
AM33XX_IOPAD(0x884, PIN_INPUT_PULLUP | MUX_MODE2) /* gpmc_csn2.mmc1_cmd */
AM33XX_IOPAD(0x800, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad0.mmc1_dat0 */
AM33XX_IOPAD(0x804, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad1.mmc1_dat1 */
AM33XX_IOPAD(0x808, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad2.mmc1_dat2 */
AM33XX_IOPAD(0x80c, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad3.mmc1_dat3 */
AM33XX_IOPAD(0x810, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad4.mmc1_dat4 */
AM33XX_IOPAD(0x814, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad5.mmc1_dat5 */
AM33XX_IOPAD(0x818, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad6.mmc1_dat6 */
AM33XX_IOPAD(0x81c, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad7.mmc1_dat7 */
>;
};
#if 1
mmc3_pins: pinmux_mmc3_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x88c, PIN_INPUT_PULLUP | MUX_MODE3) /* (V12) gpmc_clk.mmc2_clk */
AM33XX_IOPAD(0x888, PIN_INPUT_PULLUP | MUX_MODE3) /* (T13) gpmc_csn3.mmc2_cmd */
AM33XX_IOPAD(0x844, PIN_INPUT_PULLUP | MUX_MODE3) /* (V14) gpmc_a1.mmc2_dat0 */
AM33XX_IOPAD(0x848, PIN_INPUT_PULLUP | MUX_MODE3) /* (U14) gpmc_a2.mmc2_dat1 */
AM33XX_IOPAD(0x84c, PIN_INPUT_PULLUP | MUX_MODE3) /* (T14) gpmc_a3.mmc2_dat2 */
AM33XX_IOPAD(0x878, PIN_INPUT_PULLUP | MUX_MODE3) /* (U18) gpmc_be1n.mmc2_dat3 */
>;
};
#else
mmc3_pins: pinmux_mmc3_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x88c, PIN_INPUT_PULLUP | MUX_MODE3) /* gpio2_1 gpmc_clk.mmc2_clk */
AM33XX_IOPAD(0x888, PIN_INPUT_PULLUP | MUX_MODE3) /* gpio2_0 gpmc_csn3.mmc2_cmd */
AM33XX_IOPAD(0x830, PIN_INPUT_PULLUP | MUX_MODE3) /* gpio1_12 gpmc_ad12.mmc2_dat0 */
AM33XX_IOPAD(0x834, PIN_INPUT_PULLUP | MUX_MODE3) /* gpio1_13 gpmc_ad13.mmc2_dat1 */
AM33XX_IOPAD(0x838, PIN_INPUT_PULLUP | MUX_MODE3) /* gpio1_14 gpmc_ad14.mmc2_dat2 */
AM33XX_IOPAD(0x83c, PIN_INPUT_PULLUP | MUX_MODE3) /* gpio1_15 gpmc_ad15.mmc2_dat3 */
>;
};
#endif
wlan_pins: pinmux_wlan_pins {
// WLAN_WAKEUP TO HOST
// WL_REG_ON
// Power
#if 0
pinctrl-single,pins = <
AM33XX_IOPAD(0x8a0, PIN_INPUT_PULLDOWN | MUX_MODE7) /* (R1) lcd_data0.gpio2[6] */
AM33XX_IOPAD(0x8a4, PIN_OUTPUT_PULLUP | MUX_MODE7) /* (R2) lcd_data1.gpio2[7] */
AM33XX_IOPAD(0x87c, PIN_OUTPUT | MUX_MODE7) /* (V6) gpmc_csn0.gpio1[29] */
>;
#else
pinctrl-single,pins = <
AM33XX_IOPAD(0x890, PIN_INPUT_PULLDOWN | MUX_MODE7) /* gpmc_advn_ale.gpio2_2 */
AM33XX_IOPAD(0x89c, PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpmc_be0n_cle.gpio2_5 */
AM33XX_IOPAD(0x87c, PIN_OUTPUT | MUX_MODE7) /* usb1_drvvbus.gpio1_29 */
>;
#endif
};

#if 0
bluetooth_pins: pinmux_bluetooth_pins {
// H to BT WAKEUP
// BT_WAKEUP TO H
pinctrl-single,pins = <
AM33XX_IOPAD(0x8d4, PIN_INPUT_PULLDOWN | MUX_MODE7) /* lcd_data13.gpio0_9 */
AM33XX_IOPAD(0x8a0, PIN_OUTPUT | MUX_MODE7) /* lcd_data0.gpio2_6 */
AM33XX_IOPAD(0x8a4, PIN_OUTPUT | MUX_MODE7) /* lcd_data1.gpio2_7 */
>;
};
#endif
gpio_pins_default: gpio_pins_default {
pinctrl-single,pins = <
AM33XX_IOPAD(0x858, PIN_INPUT_PULLUP | MUX_MODE7) /* gps_power gpio1_22 */
AM33XX_IOPAD(0x860, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* gps_reset gpio1_24 */

AM33XX_IOPAD(0x86C, PIN_OUTPUT_PULLUP | MUX_MODE7) /* lte-power gpio1_27 */
AM33XX_IOPAD(0x824, PIN_INPUT_PULLUP | MUX_MODE7) /* mcu gpio0_23 */
AM33XX_IOPAD(0x828, PIN_INPUT_PULLUP | MUX_MODE7) /* mcu gpio0_26 */

AM33XX_IOPAD(0x868, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* eth0 power gpio1_26 */

AM33XX_IOPAD(0x9B4, PIN_OUTPUT_PULLUP | MUX_MODE7) /* eth0 power gpio0_20 */

AM33XX_IOPAD(0x840, PIN_OUTPUT_PULLUP | MUX_MODE7) /* mcu_reset gpio1_16 */
AM33XX_IOPAD(0x864, PIN_OUTPUT_PULLUP | MUX_MODE7) /* mcu_boot gpio1_25 */
>;
};

dcan0_pins_default: dcan0_pins_default {
pinctrl-single,pins = <
AM33XX_IOPAD(0x978, PIN_OUTPUT_PULLUP | MUX_MODE2) /* uart1_ctsn.d_can0_tx */
AM33XX_IOPAD(0x97C, PIN_INPUT_PULLUP | MUX_MODE2) /* uart1_rtsn.d_can0_rx */
>;
};

dcan1_pins_default: dcan1_pins_default {
pinctrl-single,pins = <
AM33XX_IOPAD(0x968, PIN_OUTPUT_PULLUP | MUX_MODE2) /* uart0_ctsn.d_can1_tx */
AM33XX_IOPAD(0x96c, PIN_INPUT_PULLUP | MUX_MODE2) /* uart0_rtsn.d_can1_rx */
>;
};
};

&gpio2 {
ti,no-reset-on-init;
};

/* Debug */
&uart0 {
pinctrl-names = "default";
pinctrl-0 = <&uart0_pins>;
status = "okay";
};

/* ZigBee */
&uart1 {
pinctrl-names = "default";
pinctrl-0 = <&uart1_pins>;
status = "okay";

};

/* UART to MCU */
&uart2 {
pinctrl-names = "default";
pinctrl-0 = <&uart2_pins>;
status = "okay";
};

// /* Zigbee Serial */
/* communication */
&uart3 {
pinctrl-names = "default";
pinctrl-0 = <&uart3_pins>;
status = "okay";
};

/* Bluetooth Serial */
// &uart4 {
// pinctrl-names = "default";
// pinctrl-0 = <&uart4_pins>;
// status = "okay";
// };

// GPS
&uart5 {
pinctrl-names = "default";
pinctrl-0 = <&uart5_pins>;
// rts-gpio = <&gpio3 16 GPIO_ACTIVE_LOW>;
status = "okay";
};


&i2c0 {
pinctrl-names = "default";
pinctrl-0 = <&i2c0_pins>;
clock-frequency = <400000>;
status = "okay";

// AT24C08
at24: at24@50 {
compatible = "atmel,24c08";
reg = <0x50>;
};
};

&i2c1 {
pinctrl-names = "default";
pinctrl-0 = <&i2c1_pins>;
clock-frequency = <100000>;
status = "okay";

m41t83: m41t83@68 {
compatible = "st,m41t83";
reg = <0x68>;
};
};

/* USB */
&usb {
status = "okay";
};

&usb_ctrl_mod {
status = "okay";
};

&usb0_phy {
status = "okay";
};

&usb1_phy {
status = "okay";
};

&usb0 {
status = "okay";
dr_mode = "host";
};

&usb1 {
status = "okay";
dr_mode = "host";
};

&cppi41dma {
status = "okay";
};

&elm {
status = "okay";
};

/* Ethernet */
&mac {
pinctrl-names = "default";
pinctrl-0 = <&cpsw_default>;

slaves = <1>;
status = "okay";
};

&davinci_mdio {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&davinci_mdio_default>;
pinctrl-1 = <&davinci_mdio_sleep>;
status = "okay";
};

&cpsw_emac0 {
phy_id = <&davinci_mdio>, <3>;
phy-mode = "rmii";
status = "okay";

fixed-link {
speed = <100>;
full-duplex;
};
};

&phy_sel {
rmii-clock-ext = <1>;
};

/* Bootable Micro SD */
&mmc1 {
vmmc-supply = <&vmmcsd_fixed>;
status = "okay";
bus-width = <4>;
pinctrl-names = "default";
pinctrl-0 = <&mmc1_pins>;
cd-gpios = <&gpio2 4 GPIO_ACTIVE_HIGH>;
full-pwr-cycle;
};

/* eMMC */
&mmc2 {
status = "okay";
pinctrl-names = "default";
vmmc-supply = <&vmmcsd_fixed>;
pinctrl-0 = <&mmc2_pins>;
bus-width = <8>;
full-pwr-cycle;
ti,non-removable;
};

/* Wireless AP6256 */
&mmc3 {
status = "okay";
dmas = <&edma_xbar 12 0 1
&edma_xbar 13 0 2>;
vmmc-supply = <&wlan_en_reg>;
dma-names = "tx", "rx";
pinctrl-names = "default";
pinctrl-0 = <&mmc3_pins &wlan_pins>;
bus-width = <4>;
wifi-host;
cap-sd-highspeed;
cap-sdio-irq;
};

&sham {
status = "okay";
};

&aes {
status = "okay";
};

// &dcan0 {
// status = "okay";
// pinctrl-names = "default";
// pinctrl-0 = <&dcan0_pins_default>;
// };

&dcan1 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&dcan1_pins_default>;
};

Could you help check this case? Thanks.

Best Regards,

Cherry

  • You must use the GPMC_CLK and GPMC_SCn3 pins for clock and command when using the GMPC_A1, GPMC_A2, GPMC_A3, and GPMC_BEn1 pins for SDIO data.

    You cannot use invalid combinations of signal multiplexing because the AM335x peripherals were only timing closed to operate properly with a limited number of pin multiplexing combinations. This is why you must use the SYSCONFIG tool to assign signal functions. This tool knows the valid combinations and makes sure you do not select invalid combinations.

    This does not explain why you are not able to toggle pins when placed in GPIO mode.

    I will need to assign your post to a software person that can answer questions about device tree configuration.

    Regards,
    Paul

  • Hi Paul,

    Thanks for your support.

    You cannot use invalid combinations of signal multiplexing because the AM335x peripherals were only timing closed to operate properly with a limited number of pin multiplexing combinations. This is why you must use the SYSCONFIG tool to assign signal functions. This tool knows the valid combinations and makes sure you do not select invalid combinations.

    They've double checked the pins and ensured that the pin usage of mmc3 is fine. 

    The data lines of SDIO are tested as normal GPIOs without problems.

    GPIO1-17, GPIO1-18, GPIO1-19, GPIO1-28 currently controls WiFi as an SDIO port and is still abnormal.

    Thanks and regards,

    Cherry

  • GPIO1-17, GPIO1-18, GPIO1-19 pins appear to be not functioning properly.

    What exactly does this mean? You can't control them in a GPIO capacity at all?

    How exactly are you trying to control those pins?

    Can you post the contents of all GPIO pinctrl-single driver Kernel debug files? Like this...

    # cat /sys/kernel/debug/pinctrl/*.pinctrl-pinctrl-single/*

    You can analyze/compare those debug files for your different working and non-working scenarios and see if there are any significant differences.

    Regards, Andreas