TI中文支持网
TI专业的中文技术问题搜集分享网站

mmc卡功能无法使用

ti的各位大神,你们好。

我们自己做的板子,使用am3352平台,电源管理芯片使用的是tps650250,这个芯片不与I2C连接,我讲4.9.28内核移植到板子上以后发现MMC卡功能不能正常使用,/dev/目录下面没有mmc开头的设备,经过在omap_hsmmc.c驱动的probe中加载打印发现probe函数执行过程中调用omap_hsmmc_reg_get函数时返回失败。

怀疑是自己修改的设备树文件有问题,麻烦各位大神帮忙看下设备树中mmc相关的配置是否哪里有问题,谢谢。

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

Jian Zhou:

首先和您确认下,U-boot下可以初始化并引导MMC卡么?

LONGFEI LI1:

回复 Jian Zhou:

可以的,这个板子在老的版本(3.2内核)上跑的很好,所有功能都正常。更新到4.9.28内核后需要配合设备树,感觉应该是设备树配置有问题,求帮忙看下我的设备树关于mmc的部分是否有哪里不正确,谢谢。

赞(0)
未经允许不得转载:TI中文支持网 » mmc卡功能无法使用
分享到: 更多 (0)