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.

AM4379: DMA support for MMC

Part Number: AM4379

Hello, 

I'm not so experienced with Linux and AM4379 processor but I would like to add support for DMA on MMC...

I did some research and we are using kernel 4.14.71 with omap_hsmmc driver, and eMMC and SD card access works fine...

Device tree configuration is following:

/******************************************************************************
 *							MMC
 *****************************************************************************/

	mmc1_pins_default: mmc1_pins_default {
		pinctrl-single,pins = <
			0x100 ( PIN_INPUT_PULLUP | MUX_MODE0 ) /* (D1) mmc0_clk.mmc0_clk */
			0x104 ( PIN_INPUT_PULLUP | MUX_MODE0 ) /* (D2) mmc0_cmd.mmc0_cmd */
			0x0f0 ( PIN_INPUT_PULLUP | MUX_MODE0 ) /* (B1) mmc0_dat3.mmc0_dat3 */
			0x0f4 ( PIN_INPUT_PULLUP | MUX_MODE0 ) /* (B2) mmc0_dat2.mmc0_dat2 */
			0x0f8 ( PIN_INPUT_PULLUP | MUX_MODE0 ) /* (C2) mmc0_dat1.mmc0_dat1 */
			0x0fc ( PIN_INPUT_PULLUP | MUX_MODE0 ) /* (C1) mmc0_dat0.mmc0_dat0 */
		>;
	};

	mmc1_pins_sleep: pinmux_mmc1_pins_sleep {
		pinctrl-single,pins = <
			0x100 (PIN_INPUT_PULLDOWN | MUX_MODE7)
			0x104 (PIN_INPUT | PULL_DISABLE | MUX_MODE7)
			0x0f0 (PIN_INPUT | PULL_DISABLE | MUX_MODE7)
			0x0f4 (PIN_INPUT | PULL_DISABLE | MUX_MODE7)
			0x0f8 (PIN_INPUT | PULL_DISABLE | MUX_MODE7)
			0x0fc (PIN_INPUT | PULL_DISABLE | MUX_MODE7)
		>;
	};

	mmc2_pins_default: mmc2_pins_default {
		pinctrl-single,pins = <
			0x80 ( PIN_INPUT_PULLUP | MUX_MODE2 ) /* (B9) gpmc_csn1.mmc1_clk */
			0x84 ( PIN_INPUT_PULLUP | MUX_MODE2 ) /* (F10) gpmc_csn2.mmc1_cmd */
			0x20 ( PIN_INPUT_PULLUP | MUX_MODE2 ) /* (B10) gpmc_ad8.mmc1_dat0 */
			0x24 ( PIN_INPUT_PULLUP | MUX_MODE2 ) /* (A10) gpmc_ad9.mmc1_dat1 */
			0x28 ( PIN_INPUT_PULLUP | MUX_MODE2 ) /* (F11) gpmc_ad10.mmc1_dat2 */
			0x2c ( PIN_INPUT_PULLUP | MUX_MODE2 ) /* (D11) gpmc_ad11.mmc1_dat3 */
		>;
	};

	mmc2_pins_sleep: mmc2_pins_sleep {
		pinctrl-single,pins = <
			0x20 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* (B10) gpmc_ad8.mmc1_dat0 */
			0x24 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* (A10) gpmc_ad9.mmc1_dat1 */
			0x28 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* (F11) gpmc_ad10.mmc1_dat2 */
			0x2c (PIN_INPUT_PULLDOWN | MUX_MODE7) /* (D11) gpmc_ad11.mmc1_dat3 */
			0x80 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* (B9) gpmc_csn1.mmc1_clk */
			0x84 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* (F10) gpmc_csn2.mmc1_cmd */
		>;
	};

&mmc1 {
	status = "okay";
	vmmc-supply = <&evm_v3_3d>;
	bus-width = <4>;
	pinctrl-names = "default", "sleep";
	pinctrl-0 = <&mmc1_pins_default>;
	pinctrl-1 = <&mmc1_pins_sleep>;
	cd-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>;
};

/* eMMC sits on mmc2 */
&mmc2 {
	status = "okay"; /* Disable GPMC/NAND when enabling mmc2 */
	vmmc-supply = <&evm_v3_3d>;
	bus-width = <4>;
	pinctrl-names = "default", "sleep";
	pinctrl-0 = <&mmc2_pins_default>;
	pinctrl-1 = <&mmc2_pins_sleep>;
	ti,non-removable;
};

EDMA configuration

&edma {
ti,edma-xbar-event-map = /bits/ 16 <1 22
2 23>;
};

What would be required to add DMA support for eMMC and SD card?

Is it sufficient to add this two lines in e.g. mmc2 to add support on eMMC or is there something additionally needed?

dmas = <&edma 22
&edma 23>;
dma-names = "tx", "rx";

Thanks

BR

Ivan

  • Hello Ivan,

    Based on the document "linux-4.14.79.../Documentation/devicetree/bindings/mmc/ti-omaap-hsmmc.txt", it seems like your entry is correct.

    [generic DMA request binding]
    
            mmc1: mmc@0x4809c000 {
                    compatible = "ti,omap4-hsmmc";
                    reg = <0x4809c000 0x400>;
                    ti,hwmods = "mmc1";
                    ti,dual-volt;
                    bus-width = <4>;
                    vmmc-supply = <&vmmc>; /* phandle to regulator node */
                    ti,non-removable;
                    dmas = <&edma 24
                            &edma 25>;
                    dma-names = "tx", "rx";
            };

    Regards,
    Krunal