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.

AM69A: Issue with initializing SDIO WiFi module on AM69A custom board (MMC1)

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)?