Part Number: AM69A
Hello,
I am developing a custom board based on the AM69A and trying to interface a WiFi/BT combo module via SDIO (for WiFi) and UART (for Bluetooth).
Currently, I am facing an issue where the SDIO card fails to initialize.
Here are the details of my setup:
1. Module Specification (SDIO v3.0)
- 1.8V : SDR50, SDR104, DDR50
- 3.3V : Default Speed (25MHz), High Speed (50MHz)
2. Hardware & Software Configuration
- AP Interface connected with: MMC1
- Device Tree:
&main_sdhci1 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&mmc1_pins_default>;
vmmc-supply = <&vsys_3v3>;
vqmmc-supply = <&vdd_sd_dv>;
// Value from SDK document
// Limits MMC interface to SD HS
sdhci-caps-mask = <0x00000007 0x00000000>; // SD HS
// sdhci-caps-mask = <0x00000007 0x00200000>; // SD Legacy
ti,driver-strength-ohm = <0>;
disable-wp;
no-1-8-v;
#address-cells = <1>;
#size-cells = <0>;
non-removable;
keep-power-in-suspend;
};
...
// Pin mux
&main_pmx0 {
mmc1_pins_default: mmc1-default-pins {
pinctrl-single,pins = <
J784S4_IOPAD(0x104, PIN_INPUT, 0) /* (AB38) MMC1_CLK */
J784S4_IOPAD(0x108, PIN_INPUT, 0) /* (AB36) MMC1_CMD */
J784S4_IOPAD(0x0fc, PIN_INPUT, 0) /* (AA33) MMC1_DAT0 */
J784S4_IOPAD(0x0f8, PIN_INPUT, 0) /* (AB34) MMC1_DAT1 */
J784S4_IOPAD(0x0f4, PIN_INPUT, 0) /* (AA32) MMC1_DAT2 */
J784S4_IOPAD(0x0f0, PIN_INPUT, 0) /* (AC38) MMC1_DAT3 */
J784S4_IOPAD(0x0e8, PIN_INPUT, 8) /* (AR38) TIMER_IO0.MMC1_SDCD */
>;
};
};
- Control Sequence: I am using a script to toggle the WL_EN pin and then probe the MMC driver.
pkill gpioset; sleep 1;
gpioset -zc 1 11=0; sleep 1; // WL_EN pin. Active high
echo "4fb0000.mmc" > /sys/bus/platform/drivers/sdhci-am654/unbind
pkill gpioset; sleep 1;
gpioset -zc 1 11=1; sleep 3;
echo "4fb0000.mmc" > /sys/bus/platform/drivers/sdhci-am654/bind
3. Symptom
- The kernel log shows a failure during the card identification process.
- Error Log
[ 184.878351] mmc1: CQHCI version 5.10
[ 184.935380] mmc1: SDHCI controller on 4fb0000.mmc [4fb0000.mmc] using ADMA 64-bit
[ 185.162242] mmc1: Failed to initialize a non-removable card
4. Questions
- Q1: Based on the attached Device Tree and script, is there any missing configuration?
- Q2: Regarding the MMC1_SD (Card Detect) pin: I have physically tied this pin to Ground. Is this the correct approach for a fixed SDIO module? Or should it be handled differently in the Device Tree(non-removable)?