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.

Linux/AM3352: MMC0 doesn't work

Part Number: AM3352
Other Parts Discussed in Thread: TPS650250, TPS65910

Tool/software: Linux

Hello, everyone.

I use SDK 04.00.00.04, linux version is 4.9.28, my board uses tps650250 to supply voltage to core and mpu.

Following is my dts file, and I can't use MMC0 in my board, under /dev/, there is nothing abort mmc device, I guess there are some errors abort mmc in my dts, but I don't know where are the errors, I hope someone can give me a hand, thanks. 

/*
* Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
/dts-v1/;

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

/ {
model = "TI AM335x EVM";
compatible = "ti,am335x-evm", "ti,am33xx";

cpus {
cpu@0 {
cpu0-supply = <&vdd1_reg>;
};
};

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

chosen {
stdout-path = &uart0;
};

wdt_706 {
pinctrl-names = "default";
pinctrl-0 = <&wdt_706_pin>;
compatible = "sp706s";
wdt_gpio = <&gpio3 20 0>;
};

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

lis3_reg: fixedregulator1 {
compatible = "regulator-fixed";
regulator-name = "lis3_reg";
regulator-boot-on;
};

wlan_en_reg: fixedregulator2 {
compatible = "regulator-fixed";
regulator-name = "wlan-en-regulator";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;

/* WLAN_EN GPIO for this board - Bank1, pin16 */
gpio = <&gpio1 16 0>;

/* WLAN card specific delay */
startup-delay-us = <70000>;
enable-active-high;
};

leds {
pinctrl-names = "default";
pinctrl-0 = <&sys_leds>;

compatible = "omap-leds";

led1 {
label = "led-run";
gpios = <&gpio2 8 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "heartbeat";
default-state = "off";
};

led2 {
label = "led-err";
gpios = <&gpio2 9 GPIO_ACTIVE_HIGH>;
default-state = "off";
};

led3 {
label = "beep";
gpios = <&gpio1 25 GPIO_ACTIVE_HIGH>;
default-state = "off";
};
};

leds-com {
pinctrl-names = "default";
pinctrl-0 = <&com_leds>;

compatible = "com-leds";
led_cx_gpios = <&gpio1 17 0>, <&gpio2 13 0>, <&gpio2 12 0>, <&gpio2 10 0>, <&gpio2 11 0>;
led_dx_gpios = <&gpio2 16 0>, <&gpio2 17 0>, <&gpio0 8 0>, <&gpio0 9 0>, <&gpio0 10 0>, <&gpio0 11 0>, <&gpio2 6 0>, <&gpio2 7 0>;
};

reset-key {
pinctrl-names = "default";
pinctrl-0 = <&reset_button>;
compatible = "nts-reset";
rst_gpio = <&gpio1 28 0>;
};
regulators {
#address-cells = <1>;
#size-cells = <0>;

vrtc_reg: regulator@0 {
reg = <0>;
regulator-compatible = "vrtc";
regulator-always-on;
};

vio_reg: regulator@1 {
reg = <1>;
regulator-compatible = "vio";
regulator-always-on;
};

vdd1_reg: regulator@2 {
reg = <2>;
regulator-compatible = "vdd1";
/* VDD_MPU voltage limits 0.95V - 1.26V with +/-4% tolerance */
regulator-name = "vdd_mpu";
regulator-min-microvolt = <912500>;
regulator-max-microvolt = <1351500>;
regulator-boot-on;
regulator-always-on;
};

vdd2_reg: regulator@3 {
reg = <3>;
regulator-compatible = "vdd2";
/* VDD_CORE voltage limits 0.95V - 1.1V with +/-4% tolerance */
regulator-name = "vdd_core";
regulator-min-microvolt = <912500>;
regulator-max-microvolt = <1150000>;
regulator-boot-on;
regulator-always-on;
};

vdd3_reg: regulator@4 {
reg = <4>;
regulator-compatible = "vdd3";
regulator-always-on;
};

vdig1_reg: regulator@5 {
reg = <5>;
regulator-compatible = "vdig1";
regulator-always-on;
};

vdig2_reg: regulator@6 {
reg = <6>;
regulator-compatible = "vdig2";
regulator-always-on;
};

vpll_reg: regulator@7 {
reg = <7>;
regulator-compatible = "vpll";
regulator-always-on;
};

vdac_reg: regulator@8 {
reg = <8>;
regulator-compatible = "vdac";
regulator-always-on;
};

vaux1_reg: regulator@9 {
reg = <9>;
regulator-compatible = "vaux1";
regulator-always-on;
};

vaux2_reg: regulator@10 {
reg = <10>;
regulator-compatible = "vaux2";
regulator-always-on;
};

vaux33_reg: regulator@11 {
reg = <11>;
regulator-compatible = "vaux33";
regulator-always-on;
};

vmmc_reg: regulator@12 {
reg = <12>;
regulator-compatible = "vmmc";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
};
vbb_reg: regulator@13 {
reg = <13>;
regulator-compatible = "vbb";
};
};
};

&am33xx_pinmux {
pinctrl-names = "default";

wdt_706_pin: wdt_706_pin{
pinctrl-single,pins = <
/*WDT_706*/
AM33XX_IOPAD(0x9A8, PIN_OUTPUT_PULLUP | MUX_MODE7) /* mcasp0_axr1.gpio3_20 */
>;
};

reset_button: reset_button{
pinctrl-single,pins = <
/*GPIO_RST*/
AM33XX_IOPAD(0x878, PIN_INPUT_PULLUP | MUX_MODE7) /* gpmc_ben1.gpio1_28 */
/*free port in system, set them to gpio-output-pulldown*/
AM33XX_IOPAD(0x820, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /*gpmc_ad8.gpio0_22*/
AM33XX_IOPAD(0x824, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /*gpmc_ad9.gpio0_23*/
AM33XX_IOPAD(0x828, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /*gpmc_ad10.gpio0_26*/
AM33XX_IOPAD(0x82C, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /*gpmc_ad11.gpio0_27*/
AM33XX_IOPAD(0x830, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /*gpmc_ad12.gpio1_12*/
AM33XX_IOPAD(0x834, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /*gpmc_ad13.gpio1_13*/
AM33XX_IOPAD(0x838, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /*gpmc_ad14.gpio1_14*/
AM33XX_IOPAD(0x83C, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /*gpmc_ad15.gpio1_15*/
AM33XX_IOPAD(0x9AC, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /*mcasp0_ahclkx.gpio3_21*/
AM33XX_IOPAD(0x9A4, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /*mcasp0_fsr.gpio3_19*/
AM33XX_IOPAD(0x9B4, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /*xdma_event_intr1.gpio0_20*/
AM33XX_IOPAD(0x918, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /*mii1_rxdv.gpio3_4*/
AM33XX_IOPAD(0x91C, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /*mii1_txd3.gpio0_16*/
AM33XX_IOPAD(0x920, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /*mii1_txd2.gpio0_17*/
AM33XX_IOPAD(0x88C, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /*gpmc_clk.gpio2_1*/
>;
};

com_leds: com_leds {
pinctrl-single,pins = <
/*LED_C0*/
AM33XX_IOPAD(0x844, PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpmc_a1.gpio1_17 */
/*LED_C1*/
AM33XX_IOPAD(0x8BC, PIN_OUTPUT_PULLUP | MUX_MODE7) /* lcd_data7.gpio2_13 */
/*LED_C2*/
AM33XX_IOPAD(0x8B8, PIN_OUTPUT_PULLUP | MUX_MODE7) /* lcd_data6.gpio2_12 */
/*LED_C4*/
AM33XX_IOPAD(0x8B4, PIN_OUTPUT_PULLUP | MUX_MODE7) /* lcd_data5.gpio2_11 */
/*LED_C5*/
AM33XX_IOPAD(0x8B0, PIN_OUTPUT_PULLUP | MUX_MODE7) /* lcd_data4.gpio2_10 */
/*LED_D0*/
AM33XX_IOPAD(0x8C8, PIN_OUTPUT_PULLUP | MUX_MODE7) /* lcd_data10.gpio2_16 */
/*LED_D1*/
AM33XX_IOPAD(0x8CC, PIN_OUTPUT_PULLUP | MUX_MODE7) /* lcd_data11.gpio2_17 */
/*LED_D2*/
AM33XX_IOPAD(0x8D0, PIN_OUTPUT_PULLUP | MUX_MODE7) /* lcd_data12.gpio0_8 */
/*LED_D3*/
AM33XX_IOPAD(0x8D4, PIN_OUTPUT_PULLUP | MUX_MODE7) /* lcd_data13.gpio0_9 */
/*LED_D4*/
AM33XX_IOPAD(0x8D8, PIN_OUTPUT_PULLUP | MUX_MODE7) /* lcd_data14.gpio0_10 */
/*LED_D5*/
AM33XX_IOPAD(0x8DC, PIN_OUTPUT_PULLUP | MUX_MODE7) /* lcd_data15.gpio0_11 */
/*LED_D6*/
AM33XX_IOPAD(0x8A0, PIN_OUTPUT_PULLUP | MUX_MODE7) /* lcd_data0.gpio2_6 */
/*LED_D7*/
AM33XX_IOPAD(0x8A4, PIN_OUTPUT_PULLUP | MUX_MODE7) /* lcd_data1.gpio2_7 */
>;
};

sys_leds: sys_leds {
pinctrl-single,pins = <
/*BEEP*/
AM33XX_IOPAD(0x864, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* gpmc_a9.gpio1_25 */
/*RUN*/
AM33XX_IOPAD(0x8A8, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* lcd_data2.gpio2_8 */
/*ALARM1*/
AM33XX_IOPAD(0x8AC, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* lcd_data3.gpio2_9 */
>;
};

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 */
>;
};

spi0_pins:pinmux_spi0_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x950, PIN_INPUT_PULLUP | MUX_MODE0) /* spi0_sclk.spi0_sclk */
AM33XX_IOPAD(0x954, PIN_INPUT_PULLUP | MUX_MODE0) /* spi0_d0.spi0_d0 */
AM33XX_IOPAD(0x958, PIN_INPUT_PULLUP | MUX_MODE0) /* spi0_d1.spi0_d1 */
AM33XX_IOPAD(0x95C, PIN_OUTPUT_PULLUP | MUX_MODE0) /* spi0_cs0.spi0_cs0 */
/*SPI0_IRQ*/
AM33XX_IOPAD(0x97C, PIN_INPUT_PULLUP | MUX_MODE7) /* uart1_rtsn.gpio0_13 */
/*SPI0_RST*/
AM33XX_IOPAD(0x964, PIN_OUTPUT_PULLUP | MUX_MODE7) /* ecap0_in_pwm0_out.gpio0_7 */
>;
};

spi1_pins:pinmux_spi1_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x990, PIN_INPUT_PULLUP | MUX_MODE3) /* mcasp0_aclkx.spi1_sclk */
AM33XX_IOPAD(0x994, PIN_INPUT_PULLUP | MUX_MODE3) /* mcasp0_fsx.spi1_d0 */
AM33XX_IOPAD(0x998, PIN_INPUT_PULLUP | MUX_MODE3) /* mcasp0_axr0.spi1_d1 */
/*spi1_cs0*/
AM33XX_IOPAD(0x99C, PIN_OUTPUT_PULLUP | MUX_MODE7) /* mcasp0_ahclkr.gpio3_17 */
/*spi1_cs1*/
AM33XX_IOPAD(0x9B0, PIN_OUTPUT_PULLUP | MUX_MODE7) /* xdma_event_intr0.gpio0_19 */
/*SPI1_IRQ*/
AM33XX_IOPAD(0x860, PIN_INPUT_PULLUP | MUX_MODE7) /* gpmc_a8.gpio1_24 */
/*SPI1_RST*/
AM33XX_IOPAD(0x85C, PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpmc_a7.gpio1_23 */
/*SPI1_IRQ1*/
AM33XX_IOPAD(0x848, PIN_INPUT_PULLUP | MUX_MODE7) /* gpmc_a2.gpio1_18 */
/*SPI1_RST1*/
AM33XX_IOPAD(0x84C, PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpmc_a3.gpio1_19 */
>;
};

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 */
>;
};

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 */
AM33XX_IOPAD(0x8EC, PIN_OUTPUT_PULLUP | MUX_MODE7) /* lcd_ac_bias_en.gpio2_25(UART1_RST)*/
>;
};

uart2_pins: pinmux_uart2_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x92C, PIN_INPUT_PULLUP | MUX_MODE1) /* mii1_tx_clk.uart2_rxd */
AM33XX_IOPAD(0x930, PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* mii1_rx_clk.uart2_txd */
AM33XX_IOPAD(0x8E0, PIN_OUTPUT_PULLUP | MUX_MODE7) /* lcd_vsync.gpio2_22(UART2_EN)*/
>;
};

uart3_pins: pinmux_uart3_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x934, PIN_INPUT_PULLUP | MUX_MODE1) /* mii1_rxd3.uart3_rxd */
AM33XX_IOPAD(0x938, PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* mii1_txd2.uart3_txd */
AM33XX_IOPAD(0x8E8, PIN_OUTPUT_PULLUP | MUX_MODE7) /*lcd_pclk.gpio2_24(UART3_EN)*/
>;
};

uart4_pins: pinmux_uart4_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x968, PIN_INPUT_PULLUP | MUX_MODE1) /* uart0_ctsn.uart4_rxd */
AM33XX_IOPAD(0x96C, PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* uart0_rtsn.uart4_txd */
AM33XX_IOPAD(0x880, PIN_OUTPUT_PULLUP | MUX_MODE7) /*gpmc_csn1.gpio1_30(UART4_EN)*/
>;
};

uart5_pins: pinmux_uart5_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x8C4, PIN_INPUT_PULLUP | MUX_MODE4) /* lcd_data9.uart5_rxd */
AM33XX_IOPAD(0x8C0, PIN_OUTPUT_PULLDOWN | MUX_MODE4) /* lcd_data8.uart5_txd */
AM33XX_IOPAD(0x884, PIN_OUTPUT_PULLUP | MUX_MODE7) /*gpmc_csn2.gpio1_31(UART5_EN)*/
>;
};

nandflash_pins_s0: nandflash_pins_s0 {
pinctrl-single,pins = <
AM33XX_IOPAD(0x800, PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad0.gpmc_ad0 */
AM33XX_IOPAD(0x804, PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad1.gpmc_ad1 */
AM33XX_IOPAD(0x808, PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad2.gpmc_ad2 */
AM33XX_IOPAD(0x80c, PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad3.gpmc_ad3 */
AM33XX_IOPAD(0x810, PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad4.gpmc_ad4 */
AM33XX_IOPAD(0x814, PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad5.gpmc_ad5 */
AM33XX_IOPAD(0x818, PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad6.gpmc_ad6 */
AM33XX_IOPAD(0x81c, PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad7.gpmc_ad7 */
AM33XX_IOPAD(0x870, PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_wait0.gpmc_wait0 */
/*AM33XX_IOPAD(0x874, PIN_INPUT_PULLUP | MUX_MODE7)*/ /* gpmc_wpn.gpio0_30 */
AM33XX_IOPAD(0x87c, PIN_OUTPUT | MUX_MODE0) /* gpmc_csn0.gpmc_csn0 */
AM33XX_IOPAD(0x890, PIN_OUTPUT | MUX_MODE0) /* gpmc_advn_ale.gpmc_advn_ale */
AM33XX_IOPAD(0x894, PIN_OUTPUT | MUX_MODE0) /* gpmc_oen_ren.gpmc_oen_ren */
AM33XX_IOPAD(0x898, PIN_OUTPUT | MUX_MODE0) /* gpmc_wen.gpmc_wen */
AM33XX_IOPAD(0x89c, PIN_OUTPUT | MUX_MODE0) /* gpmc_be0n_cle.gpmc_be0n_cle */
>;
};

cpsw_default: cpsw_default {
pinctrl-single,pins = <
/* Slave 1 */
AM33XX_IOPAD(0x90C, PIN_INPUT_PULLUP | MUX_MODE1) /* mii1_crs.rmii1_crs_dv */
AM33XX_IOPAD(0x910, PIN_INPUT_PULLUP | MUX_MODE1) /* mii1_rxerr.rmii1_rxerr */
AM33XX_IOPAD(0x914, PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* mii1_txen.rmii1_txen */
AM33XX_IOPAD(0x924, PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* mii1_txd1.rmii1_txd1 */
AM33XX_IOPAD(0x928, PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* mii1_txd0.rmii1_txd0 */
AM33XX_IOPAD(0x944, PIN_INPUT_PULLUP | MUX_MODE0) /* mii1_refclk.rmii1_refclk */
AM33XX_IOPAD(0x93C, PIN_INPUT_PULLUP | MUX_MODE1) /* mii1_rxd1.rmii1_rxd1 */
AM33XX_IOPAD(0x940, PIN_INPUT_PULLUP | MUX_MODE1) /* mii1_rxd0.rmii1_rxd0 */
/*slave 2*/
AM33XX_IOPAD(0x888, PIN_INPUT_PULLDOWN | MUX_MODE2) /* gpmc_csn3.rmii2_crs_dv */
AM33XX_IOPAD(0x874, PIN_INPUT_PULLDOWN | MUX_MODE3) /* gpmc_wpn.rmii2_rxerr */
AM33XX_IOPAD(0x840, PIN_OUTPUT_PULLDOWN | MUX_MODE3) /* gpmc_a0.rmii2_txen */
AM33XX_IOPAD(0x850, PIN_OUTPUT_PULLDOWN | MUX_MODE3) /* gpmc_a4.rmii2_txd1 */
AM33XX_IOPAD(0x854, PIN_OUTPUT_PULLDOWN | MUX_MODE3) /* gpmc_a5.rmii2_txd0 */
AM33XX_IOPAD(0x908, PIN_INPUT_PULLDOWN | MUX_MODE1) /* mii1_col.rmii2_refclk */
AM33XX_IOPAD(0x868, PIN_INPUT_PULLDOWN | MUX_MODE3) /* gpmc_a10.rmii2_rxd1 */
AM33XX_IOPAD(0x86C, PIN_INPUT_PULLDOWN | MUX_MODE3) /* gpmc_a11.rmii2_rxd0 */
/*PHY RESET GPIO0_12*/
AM33XX_IOPAD(0x978, PIN_OUTPUT_PULLUP | MUX_MODE7) /*uart1_ctsn.gpio0_12*/
>;
};

cpsw_sleep: cpsw_sleep {
pinctrl-single,pins = <
/* Slave 1 reset value */
AM33XX_IOPAD(0x90C, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x910, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x914, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x924, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x928, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x944, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x93C, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x940, PIN_INPUT_PULLDOWN | MUX_MODE7)
/*slave 2*/
AM33XX_IOPAD(0x888, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x874, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x840, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x850, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x854, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x908, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x868, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x86C, PIN_INPUT_PULLDOWN | MUX_MODE7)
>;
};

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(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 */
AM33XX_IOPAD(0x960, PIN_INPUT | MUX_MODE7) /* spi0_cs1.gpio0_6 */
AM33XX_IOPAD(0x9A0, PIN_INPUT_PULLUP | MUX_MODE4) /* mcasp0_aclkr.mmc0_sdwp */
>;
};

nts_leds: nts_leds {
pinctrl-single,pins = <
AM33XX_IOPAD(0x844, PIN_OUTPUT_PULLUP | MUX_MODE7) /*gpmc_a1.gpio1_17(LED_C0)*/
AM33XX_IOPAD(0x8BC, PIN_OUTPUT_PULLUP | MUX_MODE7) /*lcd_data7.gpio2_13(LED_C1)*/
AM33XX_IOPAD(0x8B8, PIN_OUTPUT_PULLUP | MUX_MODE7) /*lcd_data6.gpio2_12(LED_C2)*/
AM33XX_IOPAD(0x8B4, PIN_OUTPUT_PULLUP | MUX_MODE7) /*lcd_data5.gpio2_11(LED_C4)*/
AM33XX_IOPAD(0x8B0, PIN_OUTPUT_PULLUP | MUX_MODE7) /*lcd_data4.gpio2_10(LED_C5)*/

AM33XX_IOPAD(0x8C8, PIN_OUTPUT_PULLUP | MUX_MODE7) /*lcd_data10.gpio2_16(LED_D0)*/
AM33XX_IOPAD(0x8CC, PIN_OUTPUT_PULLUP | MUX_MODE7) /*lcd_data11.gpio2_17(LED_D1)*/
AM33XX_IOPAD(0x8D0, PIN_OUTPUT_PULLUP | MUX_MODE7) /*lcd_data12.gpio0_8(LED_D2)*/
AM33XX_IOPAD(0x8D4, PIN_OUTPUT_PULLUP | MUX_MODE7) /*lcd_data13.gpio0_9(LED_D3)*/
AM33XX_IOPAD(0x8D8, PIN_OUTPUT_PULLUP | MUX_MODE7) /*lcd_data14.gpio0_10(LED_D4)*/
AM33XX_IOPAD(0x8DC, PIN_OUTPUT_PULLUP | MUX_MODE7) /*lcd_data15.gpio0_11(LED_D5)*/
AM33XX_IOPAD(0x8A0, PIN_OUTPUT_PULLUP | MUX_MODE7) /*lcd_data0.gpio2_6(LED_D6)*/
AM33XX_IOPAD(0x8A4, PIN_OUTPUT_PULLUP | MUX_MODE7) /*lcd_data1.gpio2_7(LED_D7)*/
>;
};
};

&uart0 {
pinctrl-names = "default";
pinctrl-0 = <&uart0_pins>;

status = "okay";
};

&uart1 {
pinctrl-names = "default";
pinctrl-0 = <&uart1_pins>;
mbus-gpio = <&gpio2 25 GPIO_ACTIVE_LOW>;/*mbus_enable*/
status = "okay";
};

&uart2 {
pinctrl-names = "default";
pinctrl-0 = <&uart2_pins>;
rts-gpio = <&gpio2 22 GPIO_ACTIVE_LOW>; /*uart2_en*/
rs485-rts-delay = <1 1>;
linux,rs485-enabled-at-boot-time;
rs485-rts-active-high;
status = "okay";
};

&uart3 {
pinctrl-names = "default";
pinctrl-0 = <&uart3_pins>;
rts-gpio = <&gpio2 24 GPIO_ACTIVE_LOW>; /*uart3_en*/
rs485-rts-delay = <1 1>;
linux,rs485-enabled-at-boot-time;
rs485-rts-active-high;
status = "okay";
};

&uart4 {
pinctrl-names = "default";
pinctrl-0 = <&uart4_pins>;
rts-gpio = <&gpio1 30 GPIO_ACTIVE_LOW>; /*uart4_en*/
rs485-rts-delay = <1 1>;
linux,rs485-enabled-at-boot-time;
rs485-rts-active-high;
status = "okay";
};

&uart5 {
pinctrl-names = "default";
pinctrl-0 = <&uart5_pins>;
rts-gpio = <&gpio1 31 GPIO_ACTIVE_LOW>; /*uart5_en*/
rs485-rts-delay = <1 1>;
linux,rs485-enabled-at-boot-time;
rs485-rts-active-high;
status = "okay";
};

&i2c0 {
pinctrl-names = "default";
pinctrl-0 = <&i2c0_pins>;

status = "okay";
clock-frequency = <400000>;

rtc1: rtc@32 {
compatible = "rx8025";
reg = <0x32>;
};
};

&spi0 {
pinctrl-names = "default";
pinctrl-0 = <&spi0_pins>;
status = "okay";
/*cs-gpios = <&gpio0 5 GPIO_ACTIVE_LOW>;*/

wk2166@0{
compatible = "wk2xxxspi";
spi-max-frequency = <1000000>;
reg = <0>;
irq-gpio = <&gpio0 13 GPIO_ACTIVE_LOW>;
rst-gpio = <&gpio0 7 GPIO_ACTIVE_LOW>;
};
};

&spi1 {
pinctrl-names = "default";
pinctrl-0 = <&spi1_pins>;
status = "okay";
cs-gpios = <&gpio3 17 GPIO_ACTIVE_LOW>, <&gpio0 19 GPIO_ACTIVE_LOW>;

wk2166@0{
compatible = "wk2xxxspi";
spi-max-frequency = <1000000>;
reg = <0>;
irq-gpio = <&gpio1 24 GPIO_ACTIVE_LOW>;
rst-gpio = <&gpio1 23 GPIO_ACTIVE_LOW>;
};

wk2166@1{
compatible = "wk2xxxspi";
spi-max-frequency = <1000000>;
reg = <1>;
irq-gpio = <&gpio1 18 GPIO_ACTIVE_LOW>;
rst-gpio = <&gpio1 19 GPIO_ACTIVE_LOW>;
};
};

&usb {
status = "okay";
};

&usb_ctrl_mod {
status = "okay";
};

&usb0_phy {
status = "okay";
};

&usb1_phy {
status = "okay";
};

&usb0 {
status = "okay";
};

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

&cppi41dma {
status = "disable";
};

&elm {
status = "okay";
};
&gpmc {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&nandflash_pins_s0>;
ranges = <0 0 0x08000000 0x1000000>; /* CS0: 16MB for NAND */
nand@0,0 {
compatible = "ti,omap2-nand";
reg = <0 0 4>; /* CS0, offset 0, IO size 4 */
interrupt-parent = <&gpmc>;
interrupts = <0 IRQ_TYPE_NONE>, /* fifoevent */
<1 IRQ_TYPE_NONE>; /* termcount */
rb-gpios = <&gpmc 0 GPIO_ACTIVE_HIGH>; /* gpmc_wait0 */
ti,nand-ecc-opt = "bch8";
ti,elm-id = <&elm>;
nand-bus-width = <8>;
gpmc,device-width = <1>;
gpmc,sync-clk-ps = <0>;
gpmc,cs-on-ns = <0>;
gpmc,cs-rd-off-ns = <44>;
gpmc,cs-wr-off-ns = <44>;
gpmc,adv-on-ns = <6>;
gpmc,adv-rd-off-ns = <34>;
gpmc,adv-wr-off-ns = <44>;
gpmc,we-on-ns = <0>;
gpmc,we-off-ns = <40>;
gpmc,oe-on-ns = <0>;
gpmc,oe-off-ns = <54>;
gpmc,access-ns = <64>;
gpmc,rd-cycle-ns = <82>;
gpmc,wr-cycle-ns = <82>;
gpmc,bus-turnaround-ns = <0>;
gpmc,cycle2cycle-delay-ns = <0>;
gpmc,clk-activation-ns = <0>;
gpmc,wr-access-ns = <40>;
gpmc,wr-data-mux-bus-ns = <0>;
/* MTD partition table */
/* All SPL-* partitions are sized to minimal length
* which can be independently programmable. For
* NAND flash this is equal to size of erase-block */
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "NAND.SPL";
reg = <0x00000000 0x000020000>;
};
partition@1 {
label = "NAND.SPL.backup1";
reg = <0x00020000 0x00020000>;
};
partition@2 {
label = "NAND.SPL.backup2";
reg = <0x00040000 0x00020000>;
};
partition@3 {
label = "NAND.SPL.backup3";
reg = <0x00060000 0x00020000>;
};
partition@4 {
label = "NAND.u-boot-spl-os";
reg = <0x00080000 0x00040000>;
};
partition@5 {
label = "NAND.u-boot";
reg = <0x000C0000 0x00100000>;
};
partition@6 {
label = "NAND.u-boot-env";
reg = <0x001C0000 0x00020000>;
};
partition@7 {
label = "NAND.u-boot-env.backup1";
reg = <0x001E0000 0x00020000>;
};
partition@8 {
label = "NAND.kernel";
reg = <0x00200000 0x01000000>;
};
partition@9 {
label = "NAND.file-system";
reg = <0x01200000 0x04000000>;
};
partition@10 {
label = "user";
reg = <0x05200000 0x0AE00000>;
};
};
};

&mac {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&cpsw_default>;
pinctrl-1 = <&cpsw_sleep>;
dual_emac = <1>;
status = "okay";
prst-gpios = <&gpio0 12 GPIO_ACTIVE_LOW>; /*PHY reset gpio0_12*/
};

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

&cpsw_emac0 {
phy_id = <&davinci_mdio>, <5>;
phy-mode = "rmii";
dual_emac_res_vlan = <1>;
};

&cpsw_emac1 {
phy_id = <&davinci_mdio>, <1>;
phy-mode = "rmii";
dual_emac_res_vlan = <2>;
};

&phy_sel {
rmii-clock-ext;
};

&tscadc {
status = "okay";
tsc {
ti,wires = <4>;
ti,x-plate-resistance = <200>;
ti,coordinate-readouts = <5>;
ti,wire-config = <0x00 0x11 0x22 0x33>;
ti,charge-delay = <0x400>;
};

adc {
ti,adc-channels = <4 5 6 7>;
};
};

&mmc1 {
status = "okay";
vmmc-supply = <&vmmc_reg>;
bus-width = <4>;
pinctrl-names = "default";
pinctrl-0 = <&mmc1_pins>;
cd-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
wp-gpios = <&gpio3 18 0>;
};

&sham {
status = "okay";
};

&aes {
status = "okay";
};

&wkup_m3_ipc {
ti,scale-data-fw = "am335x-evm-scale-data.bin";
};

&pruss_soc_bus {
status = "okay";

pruss: pruss@4a300000 {
status = "okay";

pru0: pru@4a334000 {
status = "okay";
};

pru1: pru@4a338000 {
status = "okay";
};
};
};

&sgx {
status = "okay";
};

  • Hi Longfei,

    Are you able to work with MMC0 in u-boot stage? Meaning that you have MMC0 issue only in kernel stage?

    Which linux kernel driver you are using for TPS650250 PMIC? In example, AM335x TI EVM is using the below:

    linux-kernel/drivers/mfd/tps65910.c
    linux-kernel/drivers/regulator/tps65910-regulator.c

    Regards,
    Pavel
  • Hello Pavel Botev

    I'm sure the MMC0 issue is only in kernel stage, the MMC0 function in uboot is  normal.

    tps650250 don't connect to i2c like tps65910, it is not controled by software(the board can run well in linux3.2, and tps650250 does not use any driver).

    Following is schematic diagram of tps650250:

    I guess the reason of MMC0 fault is the setting of MMC0 in dts file, please help me to check my dts abort MMC0, thanks.

  • Longfei,

    You can compare your linux DTS file with u-boot DTS file and align. For example, in AM335x SK, MMC0 DTS is absolutely the same between u-boot DTS and kernel DTS:

    &mmc1 {
    status = "okay";
    vmmc-supply = <&vmmc_reg>;
    bus-width = <4>;
    pinctrl-names = "default";
    pinctrl-0 = <&mmc1_pins>;
    cd-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
    };

    Then you can compare the MMC0 pinmux values between u-boot and kernel and compare for differences.

    Then you can compare MMC0 module registers values between u-boot and kernel, and compare the differences.

    Regards,
    Pavel