diff --git a/target/linux/ramips/dts/mt7620a.dtsi b/target/linux/ramips/dts/mt7620a.dtsi index a0429ade45..0e925b4dcc 100644 --- a/target/linux/ramips/dts/mt7620a.dtsi +++ b/target/linux/ramips/dts/mt7620a.dtsi @@ -32,6 +32,35 @@ compatible = "mti,cpu-interrupt-controller"; }; + mmc_clk: mmc-clock { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <48000000>; + clock-accuracy = <100>; + }; + + mmc_reg_1v8: regulator-1v8 { + compatible = "regulator-fixed"; + + enable-active-high; + + regulator-always-on; + regulator-max-microvolt = <1800000>; + regulator-min-microvolt = <1800000>; + regulator-name = "mmc_io"; + }; + + mmc_reg_3v3: regulator-3v3 { + compatible = "regulator-fixed"; + + enable-active-high; + + regulator-always-on; + regulator-max-microvolt = <3300000>; + regulator-min-microvolt = <3300000>; + regulator-name = "mmc_power"; + }; + palmbus: palmbus@10000000 { compatible = "palmbus"; reg = <0x10000000 0x200000>; @@ -493,15 +522,34 @@ interrupts = <17>; }; - sdhci: sdhci@10130000 { - compatible = "ralink,mt7620-sdhci"; + sdhci: mmc@10130000 { + compatible = "mediatek,mt7620-mmc", "ralink,mt7620-sdhci"; reg = <0x10130000 0x4000>; + bus-width = <4>; + + cap-mmc-highspeed; + cap-sd-highspeed; + + clocks = <&mmc_clk>, <&mmc_clk>; + clock-names = "source", "hclk"; + + disable-wp; + interrupt-parent = <&intc>; interrupts = <14>; - pinctrl-names = "default"; + max-frequency = <48000000>; + + pinctrl-names = "default", "state_uhs"; pinctrl-0 = <&sdhci_pins>; + pinctrl-1 = <&sdhci_pins>; + + resets = <&sysc 30>; + reset-names = "hrst"; + + vmmc-supply = <&mmc_reg_3v3>; + vqmmc-supply = <&mmc_reg_1v8>; status = "disabled"; }; diff --git a/target/linux/ramips/dts/mt7620a_hiwifi_hc5861.dts b/target/linux/ramips/dts/mt7620a_hiwifi_hc5861.dts index 83e5698d63..29aff9958a 100644 --- a/target/linux/ramips/dts/mt7620a_hiwifi_hc5861.dts +++ b/target/linux/ramips/dts/mt7620a_hiwifi_hc5861.dts @@ -51,12 +51,6 @@ gpio-export,output = <0>; gpios = <&gpio0 13 GPIO_ACTIVE_LOW>; }; - - sdpower { - gpio-export,name = "sdpower"; - gpio-export,output = <0>; - gpios = <&gpio0 8 GPIO_ACTIVE_LOW>; - }; }; }; @@ -94,6 +88,12 @@ mediatek,ephy-base = /bits/ 8 <12>; }; +&mmc_reg_3v3 { + /delete-property/ enable-active-high; + + gpios = <&gpio0 8 GPIO_ACTIVE_LOW>; +}; + &pcie { status = "okay"; }; @@ -108,6 +108,10 @@ }; }; +&sdhci { + max-frequency = <24000000>; +}; + &wmac { pinctrl-names = "default", "pa_gpio"; pinctrl-0 = <&pa_pins>; diff --git a/target/linux/ramips/dts/mt7621.dtsi b/target/linux/ramips/dts/mt7621.dtsi index 54fe13123d..da992bada4 100644 --- a/target/linux/ramips/dts/mt7621.dtsi +++ b/target/linux/ramips/dts/mt7621.dtsi @@ -42,6 +42,28 @@ bootargs = "console=ttyS0,57600"; }; + mmc_reg_1v8: regulator-1v8 { + compatible = "regulator-fixed"; + + enable-active-high; + + regulator-always-on; + regulator-max-microvolt = <1800000>; + regulator-min-microvolt = <1800000>; + regulator-name = "mmc_io"; + }; + + mmc_reg_3v3: regulator-3v3 { + compatible = "regulator-fixed"; + + enable-active-high; + + regulator-always-on; + regulator-max-microvolt = <3300000>; + regulator-min-microvolt = <3300000>; + regulator-name = "mmc_power"; + }; + palmbus: palmbus@1e000000 { compatible = "palmbus"; reg = <0x1e000000 0x100000>; @@ -326,17 +348,36 @@ }; }; - sdhci: sdhci@1e130000 { - status = "disabled"; - - compatible = "ralink,mt7620-sdhci"; + sdhci: mmc@1e130000 { + compatible = "mediatek,mt7620-mmc", "ralink,mt7620-sdhci"; reg = <0x1e130000 0x4000>; + bus-width = <4>; + + cap-mmc-highspeed; + cap-sd-highspeed; + + clocks = <&sysc MT7621_CLK_SHXC>, <&sysc MT7621_CLK_SHXC>; + clock-names = "source", "hclk"; + + disable-wp; + interrupt-parent = <&gic>; interrupts = ; - pinctrl-names = "default"; + max-frequency = <48000000>; + + pinctrl-names = "default", "state_uhs"; pinctrl-0 = <&sdhci_pins>; + pinctrl-1 = <&sdhci_pins>; + + resets = <&sysc MT7621_RST_SDXC>; + reset-names = "hrst"; + + vmmc-supply = <&mmc_reg_3v3>; + vqmmc-supply = <&mmc_reg_1v8>; + + status = "disabled"; }; xhci: xhci@1e1c0000 { diff --git a/target/linux/ramips/dts/mt7628an.dtsi b/target/linux/ramips/dts/mt7628an.dtsi index be80c11d11..445c530815 100644 --- a/target/linux/ramips/dts/mt7628an.dtsi +++ b/target/linux/ramips/dts/mt7628an.dtsi @@ -30,6 +30,35 @@ compatible = "mti,cpu-interrupt-controller"; }; + mmc_clk: mmc-clock { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <48000000>; + clock-accuracy = <100>; + }; + + mmc_reg_1v8: regulator-1v8 { + compatible = "regulator-fixed"; + + enable-active-high; + + regulator-always-on; + regulator-max-microvolt = <1800000>; + regulator-min-microvolt = <1800000>; + regulator-name = "mmc_io"; + }; + + mmc_reg_3v3: regulator-3v3 { + compatible = "regulator-fixed"; + + enable-active-high; + + regulator-always-on; + regulator-max-microvolt = <3300000>; + regulator-min-microvolt = <3300000>; + regulator-name = "mmc_power"; + }; + palmbus: palmbus@10000000 { compatible = "palmbus"; reg = <0x10000000 0x200000>; @@ -355,15 +384,34 @@ reset-names = "host", "device"; }; - sdhci: sdhci@10130000 { - compatible = "ralink,mt7620-sdhci"; + sdhci: mmc@10130000 { + compatible = "mediatek,mt7620-mmc", "ralink,mt7620-sdhci"; reg = <0x10130000 0x4000>; + bus-width = <4>; + + cap-mmc-highspeed; + cap-sd-highspeed; + + clocks = <&mmc_clk>, <&mmc_clk>; + clock-names = "source", "hclk"; + + disable-wp; + interrupt-parent = <&intc>; interrupts = <14>; - pinctrl-names = "default"; + max-frequency = <48000000>; + + pinctrl-names = "default", "state_uhs"; pinctrl-0 = <&sdxc_pins>; + pinctrl-1 = <&sdxc_pins>; + + resets = <&sysc 30>; + reset-names = "hrst"; + + vmmc-supply = <&mmc_reg_3v3>; + vqmmc-supply = <&mmc_reg_1v8>; status = "disabled"; }; diff --git a/target/linux/ramips/dts/mt7628an_d-team_pbr-d1.dts b/target/linux/ramips/dts/mt7628an_d-team_pbr-d1.dts index 940104d47e..bcd2cecb3a 100644 --- a/target/linux/ramips/dts/mt7628an_d-team_pbr-d1.dts +++ b/target/linux/ramips/dts/mt7628an_d-team_pbr-d1.dts @@ -171,5 +171,5 @@ &sdhci { status = "okay"; - mediatek,cd-high; + cd-inverted; }; diff --git a/target/linux/ramips/dts/mt7628an_hak5_wifi-pineapple-mk7.dts b/target/linux/ramips/dts/mt7628an_hak5_wifi-pineapple-mk7.dts index 51731c3c64..c7e3640d88 100644 --- a/target/linux/ramips/dts/mt7628an_hak5_wifi-pineapple-mk7.dts +++ b/target/linux/ramips/dts/mt7628an_hak5_wifi-pineapple-mk7.dts @@ -55,16 +55,10 @@ gpios = <&gpio 5 GPIO_ACTIVE_LOW>; }; }; +}; - sdhci@10130000 { - compatible = "ralink,mt7620-sdhci"; - reg = <0x10130000 4000>; - - interrupt-parent = <&intc>; - interrupts = <14>; - - status = "okay"; - }; +&sdhci { + status = "okay"; }; &state_default { diff --git a/target/linux/ramips/dts/mt7628an_jotale_js76x8.dtsi b/target/linux/ramips/dts/mt7628an_jotale_js76x8.dtsi index 96d36f66e0..0aee4e408a 100644 --- a/target/linux/ramips/dts/mt7628an_jotale_js76x8.dtsi +++ b/target/linux/ramips/dts/mt7628an_jotale_js76x8.dtsi @@ -132,7 +132,6 @@ &sdhci { status = "okay"; - mediatek,cd-low; }; &wmac { diff --git a/target/linux/ramips/dts/mt7628an_mediatek_linkit-smart-7688.dts b/target/linux/ramips/dts/mt7628an_mediatek_linkit-smart-7688.dts index 37b4b9baa5..fdce5cbec5 100644 --- a/target/linux/ramips/dts/mt7628an_mediatek_linkit-smart-7688.dts +++ b/target/linux/ramips/dts/mt7628an_mediatek_linkit-smart-7688.dts @@ -167,7 +167,7 @@ &sdhci { status = "okay"; - mediatek,cd-high; + cd-inverted; }; &wmac { diff --git a/target/linux/ramips/dts/mt7628an_minew_g1-c.dts b/target/linux/ramips/dts/mt7628an_minew_g1-c.dts index 3912f23a9e..603bc09fa6 100644 --- a/target/linux/ramips/dts/mt7628an_minew_g1-c.dts +++ b/target/linux/ramips/dts/mt7628an_minew_g1-c.dts @@ -151,5 +151,5 @@ &sdhci { status = "okay"; - mediatek,cd-high; + cd-inverted; }; diff --git a/target/linux/ramips/dts/mt7628an_onion_omega2.dtsi b/target/linux/ramips/dts/mt7628an_onion_omega2.dtsi index 983c7fc03e..d279cbcfb8 100644 --- a/target/linux/ramips/dts/mt7628an_onion_omega2.dtsi +++ b/target/linux/ramips/dts/mt7628an_onion_omega2.dtsi @@ -172,7 +172,6 @@ &sdhci { status = "okay"; - mediatek,cd-low; }; &wmac { diff --git a/target/linux/ramips/dts/mt7628an_widora_neo.dtsi b/target/linux/ramips/dts/mt7628an_widora_neo.dtsi index de3b7d625e..74df529bd2 100644 --- a/target/linux/ramips/dts/mt7628an_widora_neo.dtsi +++ b/target/linux/ramips/dts/mt7628an_widora_neo.dtsi @@ -175,7 +175,6 @@ &sdhci { status = "okay"; - mediatek,cd-low; }; &wmac { diff --git a/target/linux/ramips/dts/mt7628an_wiznet_wizfi630s.dts b/target/linux/ramips/dts/mt7628an_wiznet_wizfi630s.dts index 429b00c5b5..5714aaedc3 100644 --- a/target/linux/ramips/dts/mt7628an_wiznet_wizfi630s.dts +++ b/target/linux/ramips/dts/mt7628an_wiznet_wizfi630s.dts @@ -168,7 +168,7 @@ &sdhci { status = "okay"; - mediatek,cd-high; + cd-inverted; }; &wmac { diff --git a/target/linux/ramips/files/drivers/mmc/host/mtk-mmc/sd.c b/target/linux/ramips/files/drivers/mmc/host/mtk-mmc/sd.c index 756a1c5b57..3a9c69cb37 100644 --- a/target/linux/ramips/files/drivers/mmc/host/mtk-mmc/sd.c +++ b/target/linux/ramips/files/drivers/mmc/host/mtk-mmc/sd.c @@ -2245,7 +2245,7 @@ static int msdc_drv_probe(struct platform_device *pdev) //TODO: read this as bus-width from dt (via mmc_of_parse) mmc->caps |= MMC_CAP_4_BIT_DATA; - cd_active_low = !of_property_read_bool(pdev->dev.of_node, "mediatek,cd-high"); + cd_active_low = !of_property_read_bool(pdev->dev.of_node, "cd-inverted"); if (of_property_read_bool(pdev->dev.of_node, "mediatek,cd-poll")) mmc->caps |= MMC_CAP_NEEDS_POLL; diff --git a/target/linux/ramips/image/mt7620.mk b/target/linux/ramips/image/mt7620.mk index 247c00f323..528d7da1e4 100644 --- a/target/linux/ramips/image/mt7620.mk +++ b/target/linux/ramips/image/mt7620.mk @@ -145,7 +145,7 @@ define Device/bdcom_wap2100-sk DEVICE_VENDOR := BDCOM DEVICE_MODEL := WAP2100-SK (ZTE ZXECS EBG3130) DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-mt76x2 kmod-mt76x0e \ - kmod-sdhci-mt7620 kmod-usb-ledtrig-usbport + kmod-mmc-mtk kmod-usb-ledtrig-usbport endef TARGET_DEVICES += bdcom_wap2100-sk @@ -382,7 +382,7 @@ define Device/domywifi_dm202 IMAGE_SIZE := 16064k DEVICE_VENDOR := DomyWifi DEVICE_MODEL := DM202 - DEVICE_PACKAGES := kmod-mt76x0e kmod-sdhci-mt7620 kmod-usb2 kmod-usb-ohci + DEVICE_PACKAGES := kmod-mt76x0e kmod-mmc-mtk kmod-usb2 kmod-usb-ohci endef TARGET_DEVICES += domywifi_dm202 @@ -391,7 +391,7 @@ define Device/domywifi_dm203 IMAGE_SIZE := 16064k DEVICE_VENDOR := DomyWifi DEVICE_MODEL := DM203 - DEVICE_PACKAGES := kmod-mt76x0e kmod-sdhci-mt7620 kmod-usb2 kmod-usb-ohci + DEVICE_PACKAGES := kmod-mt76x0e kmod-mmc-mtk kmod-usb2 kmod-usb-ohci endef TARGET_DEVICES += domywifi_dm203 @@ -400,7 +400,7 @@ define Device/domywifi_dw22d IMAGE_SIZE := 16064k DEVICE_VENDOR := DomyWifi DEVICE_MODEL := DW22D - DEVICE_PACKAGES := kmod-mt76x0e kmod-sdhci-mt7620 kmod-usb2 kmod-usb-ohci + DEVICE_PACKAGES := kmod-mt76x0e kmod-mmc-mtk kmod-usb2 kmod-usb-ohci endef TARGET_DEVICES += domywifi_dw22d @@ -567,7 +567,7 @@ define Device/head-weblink_hdrm200 IMAGE_SIZE := 16064k DEVICE_VENDOR := Head Weblink DEVICE_MODEL := HDRM2000 - DEVICE_PACKAGES := kmod-mt76x2 kmod-usb2 kmod-usb-ohci kmod-sdhci-mt7620 \ + DEVICE_PACKAGES := kmod-mt76x2 kmod-usb2 kmod-usb-ohci kmod-mmc-mtk \ uqmi kmod-usb-serial-option endef TARGET_DEVICES += head-weblink_hdrm200 @@ -577,7 +577,7 @@ define Device/hiwifi_hc5661 IMAGE_SIZE := 15808k DEVICE_VENDOR := HiWiFi DEVICE_MODEL := HC5661 - DEVICE_PACKAGES := kmod-sdhci-mt7620 + DEVICE_PACKAGES := kmod-mmc-mtk SUPPORTED_DEVICES += hc5661 endef TARGET_DEVICES += hiwifi_hc5661 @@ -587,7 +587,7 @@ define Device/hiwifi_hc5761 IMAGE_SIZE := 15808k DEVICE_VENDOR := HiWiFi DEVICE_MODEL := HC5761 - DEVICE_PACKAGES := kmod-mt76x0e kmod-usb2 kmod-usb-ohci kmod-sdhci-mt7620 \ + DEVICE_PACKAGES := kmod-mt76x0e kmod-usb2 kmod-usb-ohci kmod-mmc-mtk \ kmod-usb-ledtrig-usbport SUPPORTED_DEVICES += hc5761 endef @@ -598,7 +598,7 @@ define Device/hiwifi_hc5861 IMAGE_SIZE := 15808k DEVICE_VENDOR := HiWiFi DEVICE_MODEL := HC5861 - DEVICE_PACKAGES := kmod-mt76x2 kmod-usb2 kmod-usb-ohci kmod-sdhci-mt7620 \ + DEVICE_PACKAGES := kmod-mt76x2 kmod-usb2 kmod-usb-ohci kmod-mmc-mtk \ kmod-phy-realtek kmod-usb-ledtrig-usbport SUPPORTED_DEVICES += hc5861 endef @@ -609,7 +609,7 @@ define Device/hnet_c108 IMAGE_SIZE := 16064k DEVICE_VENDOR := HNET DEVICE_MODEL := C108 - DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-sdhci-mt7620 + DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-mmc-mtk SUPPORTED_DEVICES += c108 endef TARGET_DEVICES += hnet_c108 @@ -1035,7 +1035,7 @@ define Device/planex_cs-qr10 DEVICE_VENDOR := Planex DEVICE_MODEL := CS-QR10 DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-sound-core \ - kmod-sound-mt7620 kmod-i2c-ralink kmod-sdhci-mt7620 + kmod-sound-mt7620 kmod-i2c-ralink kmod-mmc-mtk SUPPORTED_DEVICES += cs-qr10 endef TARGET_DEVICES += planex_cs-qr10 @@ -1151,7 +1151,7 @@ define Device/sanlinking_d240 IMAGE_SIZE := 16064k DEVICE_VENDOR := Sanlinking Technologies DEVICE_MODEL := D240 - DEVICE_PACKAGES := kmod-mt76x2 kmod-usb2 kmod-usb-ohci kmod-sdhci-mt7620 + DEVICE_PACKAGES := kmod-mt76x2 kmod-usb2 kmod-usb-ohci kmod-mmc-mtk SUPPORTED_DEVICES += d240 endef TARGET_DEVICES += sanlinking_d240 @@ -1419,7 +1419,7 @@ define Device/youku_x2 DEVICE_VENDOR := Youku DEVICE_MODEL := X2 DEVICE_PACKAGES := kmod-mt76x2 kmod-usb2 kmod-usb-ohci \ - kmod-sdhci-mt7620 kmod-usb-ledtrig-usbport + kmod-mmc-mtk kmod-usb-ledtrig-usbport UIMAGE_MAGIC := 0x12291000 UIMAGE_NAME := 400000000000000000001000 endef @@ -1430,7 +1430,7 @@ define Device/youku_yk-l1 IMAGE_SIZE := 32448k DEVICE_VENDOR := Youku DEVICE_MODEL := YK-L1 - DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-sdhci-mt7620 \ + DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-mmc-mtk \ kmod-usb-ledtrig-usbport SUPPORTED_DEVICES += youku-yk1 youku,yk1 UIMAGE_MAGIC := 0x12291000 @@ -1443,7 +1443,7 @@ define Device/youku_yk-l1c IMAGE_SIZE := 16064k DEVICE_VENDOR := Youku DEVICE_MODEL := YK-L1c - DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-sdhci-mt7620 \ + DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-mmc-mtk \ kmod-usb-ledtrig-usbport UIMAGE_MAGIC := 0x12291000 UIMAGE_NAME := 400000000000000000000000 @@ -1496,7 +1496,7 @@ define Device/zbtlink_zbt-we1026-5g-16m DEVICE_VENDOR := Zbtlink DEVICE_MODEL := ZBT-WE1026-5G DEVICE_VARIANT := 16M - DEVICE_PACKAGES := kmod-mt76x2 kmod-usb2 kmod-usb-ohci kmod-sdhci-mt7620 + DEVICE_PACKAGES := kmod-mt76x2 kmod-usb2 kmod-usb-ohci kmod-mmc-mtk SUPPORTED_DEVICES += we1026-5g-16m zbtlink,we1026-5g-16m endef TARGET_DEVICES += zbtlink_zbt-we1026-5g-16m @@ -1507,7 +1507,7 @@ define Device/zbtlink_zbt-we1026-h-32m DEVICE_VENDOR := Zbtlink DEVICE_MODEL := ZBT-WE1026-H DEVICE_VARIANT := 32M - DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-sdhci-mt7620 + DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-mmc-mtk endef TARGET_DEVICES += zbtlink_zbt-we1026-h-32m @@ -1526,7 +1526,7 @@ define Device/zbtlink_zbt-we826-16m DEVICE_VENDOR := Zbtlink DEVICE_MODEL := ZBT-WE826 DEVICE_VARIANT := 16M - DEVICE_PACKAGES := kmod-mt76x2 kmod-usb2 kmod-usb-ohci kmod-sdhci-mt7620 + DEVICE_PACKAGES := kmod-mt76x2 kmod-usb2 kmod-usb-ohci kmod-mmc-mtk SUPPORTED_DEVICES += zbt-we826 zbt-we826-16M endef TARGET_DEVICES += zbtlink_zbt-we826-16m @@ -1537,7 +1537,7 @@ define Device/zbtlink_zbt-we826-32m DEVICE_VENDOR := Zbtlink DEVICE_MODEL := ZBT-WE826 DEVICE_VARIANT := 32M - DEVICE_PACKAGES := kmod-mt76x2 kmod-usb2 kmod-usb-ohci kmod-sdhci-mt7620 + DEVICE_PACKAGES := kmod-mt76x2 kmod-usb2 kmod-usb-ohci kmod-mmc-mtk SUPPORTED_DEVICES += zbt-we826-32M endef TARGET_DEVICES += zbtlink_zbt-we826-32m @@ -1547,7 +1547,7 @@ define Device/zbtlink_zbt-we826-e IMAGE_SIZE := 32448k DEVICE_VENDOR := Zbtlink DEVICE_MODEL := ZBT-WE826-E - DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-sdhci-mt7620 uqmi \ + DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-mmc-mtk uqmi \ kmod-usb-serial-option endef TARGET_DEVICES += zbtlink_zbt-we826-e diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk index 88cc2d9502..e8d8cd353c 100644 --- a/target/linux/ramips/image/mt7621.mk +++ b/target/linux/ramips/image/mt7621.mk @@ -242,7 +242,7 @@ define Device/alfa-network_quad-e4g IMAGE_SIZE := 16064k DEVICE_VENDOR := ALFA Network DEVICE_MODEL := Quad-E4G - DEVICE_PACKAGES := kmod-ata-ahci kmod-sdhci-mt7620 kmod-usb3 \ + DEVICE_PACKAGES := kmod-ata-ahci kmod-mmc-mtk kmod-usb3 \ -wpad-basic-openssl SUPPORTED_DEVICES += quad-e4g endef @@ -300,7 +300,7 @@ define Device/asiarf_ap7621-001 IMAGE_SIZE := 16000k DEVICE_VENDOR := AsiaRF DEVICE_MODEL := AP7621-001 - DEVICE_PACKAGES := kmod-sdhci-mt7620 kmod-mt76x2 kmod-usb3 \ + DEVICE_PACKAGES := kmod-mmc-mtk kmod-mt76x2 kmod-usb3 \ -wpad-basic-openssl -uboot-envtools endef TARGET_DEVICES += asiarf_ap7621-001 @@ -311,7 +311,7 @@ define Device/asiarf_ap7621-nv1 IMAGE_SIZE := 16000k DEVICE_VENDOR := AsiaRF DEVICE_MODEL := AP7621-NV1 - DEVICE_PACKAGES := kmod-sdhci-mt7620 kmod-mt76x2 kmod-usb3 \ + DEVICE_PACKAGES := kmod-mmc-mtk kmod-mt76x2 kmod-usb3 \ -wpad-basic-openssl -uboot-envtools endef TARGET_DEVICES += asiarf_ap7621-nv1 @@ -962,7 +962,7 @@ define Device/dual-q_h721 IMAGE_SIZE := 16064k DEVICE_VENDOR := Dual-Q DEVICE_MODEL := H721 - DEVICE_PACKAGES := kmod-ata-ahci kmod-sdhci-mt7620 kmod-usb3 \ + DEVICE_PACKAGES := kmod-ata-ahci kmod-mmc-mtk kmod-usb3 \ -wpad-basic-openssl -uboot-envtools endef TARGET_DEVICES += dual-q_h721 @@ -983,7 +983,7 @@ define Device/d-team_pbr-m1 IMAGE_SIZE := 32448k DEVICE_VENDOR := PandoraBox DEVICE_MODEL := PBR-M1 - DEVICE_PACKAGES := kmod-ata-ahci kmod-mt7603 kmod-mt76x2 kmod-sdhci-mt7620 \ + DEVICE_PACKAGES := kmod-ata-ahci kmod-mt7603 kmod-mt76x2 kmod-mmc-mtk \ kmod-usb3 kmod-usb-ledtrig-usbport -uboot-envtools SUPPORTED_DEVICES += pbr-m1 endef @@ -1246,7 +1246,7 @@ define Device/gnubee_gb-pc1 $(Device/uimage-lzma-loader) DEVICE_VENDOR := GnuBee DEVICE_MODEL := GB-PC1 - DEVICE_PACKAGES := kmod-ata-ahci kmod-usb3 kmod-sdhci-mt7620 \ + DEVICE_PACKAGES := kmod-ata-ahci kmod-usb3 kmod-mmc-mtk \ -wpad-basic-openssl -uboot-envtools IMAGE_SIZE := 32448k endef @@ -1257,7 +1257,7 @@ define Device/gnubee_gb-pc2 $(Device/uimage-lzma-loader) DEVICE_VENDOR := GnuBee DEVICE_MODEL := GB-PC2 - DEVICE_PACKAGES := kmod-ata-ahci kmod-usb3 kmod-sdhci-mt7620 \ + DEVICE_PACKAGES := kmod-ata-ahci kmod-usb3 kmod-mmc-mtk \ -wpad-basic-openssl -uboot-envtools IMAGE_SIZE := 32448k endef @@ -1372,7 +1372,7 @@ define Device/huasifei_ws1208v2 IMAGE_SIZE := 16064k DEVICE_VENDOR := Huasifei DEVICE_MODEL := WS1208V2 - DEVICE_PACKAGES := kmod-ata-ahci kmod-mt7603 kmod-mt76x2 kmod-sdhci-mt7620 \ + DEVICE_PACKAGES := kmod-ata-ahci kmod-mt7603 kmod-mt76x2 kmod-mmc-mtk \ kmod-usb3 kmod-usb-net-cdc-mbim kmod-usb-net-qmi-wwan \ kmod-usb-serial-option -uboot-envtools endef @@ -1634,7 +1634,7 @@ define Device/jdcloud_re-cp-02 IMAGE_SIZE := 16000k DEVICE_VENDOR := JDCloud DEVICE_MODEL := RE-CP-02 - DEVICE_PACKAGES := kmod-mt7915-firmware kmod-sdhci-mt7620 automount + DEVICE_PACKAGES := kmod-mt7915-firmware kmod-mmc-mtk automount endef TARGET_DEVICES += jdcloud_re-cp-02 @@ -1644,7 +1644,7 @@ define Device/jdcloud_re-sp-01b DEVICE_VENDOR := JDCloud DEVICE_MODEL := RE-SP-01B DEVICE_PACKAGES := kmod-mt7603 kmod-mt7615e kmod-mt7615-firmware \ - kmod-sdhci-mt7620 kmod-usb3 automount + kmod-mmc-mtk kmod-usb3 automount endef TARGET_DEVICES += jdcloud_re-sp-01b @@ -1668,7 +1668,7 @@ define Device/lenovo_newifi-d1 IMAGE_SIZE := 32448k DEVICE_VENDOR := Lenovo DEVICE_MODEL := Newifi D1 - DEVICE_PACKAGES := kmod-mt7603 kmod-mt76x2 kmod-usb3 kmod-sdhci-mt7620 \ + DEVICE_PACKAGES := kmod-mt7603 kmod-mt76x2 kmod-usb3 kmod-mmc-mtk \ kmod-usb-ledtrig-usbport -uboot-envtools SUPPORTED_DEVICES += newifi-d1 endef @@ -1782,7 +1782,7 @@ define Device/mediatek_ap-mt7621a-v60 IMAGE_SIZE := 7872k DEVICE_VENDOR := Mediatek DEVICE_MODEL := AP-MT7621A-V60 EVB - DEVICE_PACKAGES := kmod-usb3 kmod-sdhci-mt7620 kmod-sound-mt7620 \ + DEVICE_PACKAGES := kmod-usb3 kmod-mmc-mtk kmod-sound-mt7620 \ -wpad-basic-openssl -uboot-envtools endef TARGET_DEVICES += mediatek_ap-mt7621a-v60 @@ -1878,7 +1878,7 @@ define Device/mqmaker_witi IMAGE_SIZE := 16064k DEVICE_VENDOR := MQmaker DEVICE_MODEL := WiTi - DEVICE_PACKAGES := kmod-ata-ahci kmod-mt76x2 kmod-sdhci-mt7620 kmod-usb3 \ + DEVICE_PACKAGES := kmod-ata-ahci kmod-mt76x2 kmod-mmc-mtk kmod-usb3 \ kmod-usb-ledtrig-usbport -uboot-envtools SUPPORTED_DEVICES += witi mqmaker,witi-256m mqmaker,witi-512m endef @@ -1891,7 +1891,7 @@ define Device/mtc_wr1201 DEVICE_VENDOR := MTC DEVICE_MODEL := Wireless Router WR1201 KERNEL_INITRAMFS := $(KERNEL_DTB) | uImage lzma -n 'WR1201_8_128' - DEVICE_PACKAGES := kmod-sdhci-mt7620 kmod-mt76x2 kmod-usb3 \ + DEVICE_PACKAGES := kmod-mmc-mtk kmod-mt76x2 kmod-usb3 \ kmod-usb-ledtrig-usbport -uboot-envtools endef TARGET_DEVICES += mtc_wr1201 @@ -2167,7 +2167,7 @@ define Device/openfi_5pro DEVICE_VENDOR := OpenFi DEVICE_MODEL := 5Pro DEVICE_PACKAGES := kmod-mt7603 kmod-mt7615e kmod-mt7663-firmware-ap kmod-usb3 \ - kmod-sdhci-mt7620 + kmod-mmc-mtk endef TARGET_DEVICES += openfi_5pro @@ -2730,7 +2730,7 @@ define Device/unielec_u7621-06-16m DEVICE_VENDOR := UniElec DEVICE_MODEL := U7621-06 DEVICE_VARIANT := 16M - DEVICE_PACKAGES := kmod-ata-ahci kmod-sdhci-mt7620 kmod-usb3 \ + DEVICE_PACKAGES := kmod-ata-ahci kmod-mmc-mtk kmod-usb3 \ -wpad-basic-openssl -uboot-envtools SUPPORTED_DEVICES += u7621-06-256M-16M unielec,u7621-06-256m-16m endef @@ -2743,7 +2743,7 @@ define Device/unielec_u7621-06-32m DEVICE_VENDOR := UniElec DEVICE_MODEL := U7621-06 DEVICE_VARIANT := 32M - DEVICE_PACKAGES := kmod-ata-ahci kmod-sdhci-mt7620 kmod-usb3 \ + DEVICE_PACKAGES := kmod-ata-ahci kmod-mmc-mtk kmod-usb3 \ -wpad-basic-openssl -uboot-envtools SUPPORTED_DEVICES += unielec,u7621-06-32m endef @@ -2756,7 +2756,7 @@ define Device/unielec_u7621-06-64m DEVICE_VENDOR := UniElec DEVICE_MODEL := U7621-06 DEVICE_VARIANT := 64M - DEVICE_PACKAGES := kmod-ata-ahci kmod-sdhci-mt7620 kmod-usb3 \ + DEVICE_PACKAGES := kmod-ata-ahci kmod-mmc-mtk kmod-usb3 \ -wpad-basic-openssl -uboot-envtools SUPPORTED_DEVICES += unielec,u7621-06-512m-64m endef @@ -3016,7 +3016,7 @@ define Device/xzwifi_creativebox-v1 IMAGE_SIZE := 32448k DEVICE_VENDOR := CreativeBox DEVICE_MODEL := v1 - DEVICE_PACKAGES := kmod-ata-ahci kmod-mt7603 kmod-mt76x2 kmod-sdhci-mt7620 \ + DEVICE_PACKAGES := kmod-ata-ahci kmod-mt7603 kmod-mt76x2 kmod-mmc-mtk \ kmod-usb3 -wpad-basic-openssl -uboot-envtools endef TARGET_DEVICES += xzwifi_creativebox-v1 @@ -3105,7 +3105,7 @@ define Device/zbtlink_zbt-we1326 DEVICE_MODEL := ZBT-WE1326 DEVICE_ALT0_VENDOR := Wiflyer DEVICE_ALT0_MODEL := WF3526-P - DEVICE_PACKAGES := kmod-mt7603 kmod-mt76x2 kmod-usb3 kmod-sdhci-mt7620 \ + DEVICE_PACKAGES := kmod-mt7603 kmod-mt76x2 kmod-usb3 kmod-mmc-mtk \ -uboot-envtools SUPPORTED_DEVICES += zbt-we1326 endef @@ -3117,7 +3117,7 @@ define Device/zbtlink_zbt-we3526 IMAGE_SIZE := 16064k DEVICE_VENDOR := Zbtlink DEVICE_MODEL := ZBT-WE3526 - DEVICE_PACKAGES := kmod-sdhci-mt7620 kmod-mt7603 kmod-mt76x2 kmod-usb3 \ + DEVICE_PACKAGES := kmod-mmc-mtk kmod-mt7603 kmod-mt76x2 kmod-usb3 \ kmod-usb-ledtrig-usbport -uboot-envtools endef TARGET_DEVICES += zbtlink_zbt-we3526 @@ -3129,7 +3129,7 @@ define Device/zbtlink_zbt-wg1602-16m DEVICE_VENDOR := Zbtlink DEVICE_MODEL := ZBT-WG1602 DEVICE_VARIANT := 16M - DEVICE_PACKAGES := kmod-sdhci-mt7620 kmod-mt7603 kmod-mt76x2 kmod-usb3 \ + DEVICE_PACKAGES := kmod-mmc-mtk kmod-mt7603 kmod-mt76x2 kmod-usb3 \ kmod-usb-ledtrig-usbport -uboot-envtools endef TARGET_DEVICES += zbtlink_zbt-wg1602-16m @@ -3141,7 +3141,7 @@ define Device/zbtlink_zbt-wg1602-v04-16m DEVICE_VENDOR := Zbtlink DEVICE_MODEL := ZBT-WG1602-V04 DEVICE_VARIANT := 16M - DEVICE_PACKAGES := kmod-sdhci-mt7620 kmod-mt7603 kmod-mt76x2 kmod-usb3 \ + DEVICE_PACKAGES := kmod-mmc-mtk kmod-mt7603 kmod-mt76x2 kmod-usb3 \ kmod-usb-ledtrig-usbport -uboot-envtools endef TARGET_DEVICES += zbtlink_zbt-wg1602-v04-16m @@ -3153,7 +3153,7 @@ define Device/zbtlink_zbt-wg1602-v04-32m DEVICE_VENDOR := Zbtlink DEVICE_MODEL := ZBT-WG1602-V04 DEVICE_VARIANT := 32M - DEVICE_PACKAGES := kmod-sdhci-mt7620 kmod-mt7603 kmod-mt76x2 kmod-usb3 \ + DEVICE_PACKAGES := kmod-mmc-mtk kmod-mt7603 kmod-mt76x2 kmod-usb3 \ kmod-usb-ledtrig-usbport -uboot-envtools endef TARGET_DEVICES += zbtlink_zbt-wg1602-v04-32m @@ -3165,7 +3165,7 @@ define Device/zbtlink_zbt-wg1608-16m DEVICE_VENDOR := Zbtlink DEVICE_MODEL := ZBT-WG1608 DEVICE_VARIANT := 16M - DEVICE_PACKAGES := kmod-sdhci-mt7620 kmod-mt7603 kmod-mt7615e \ + DEVICE_PACKAGES := kmod-mmc-mtk kmod-mt7603 kmod-mt7615e \ kmod-mt7663-firmware-ap kmod-usb3 kmod-usb-ledtrig-usbport \ -uboot-envtools endef @@ -3178,7 +3178,7 @@ define Device/zbtlink_zbt-wg1608-32m DEVICE_VENDOR := Zbtlink DEVICE_MODEL := ZBT-WG1608 DEVICE_VARIANT := 32M - DEVICE_PACKAGES := kmod-sdhci-mt7620 kmod-mt7603 kmod-mt7615e \ + DEVICE_PACKAGES := kmod-mmc-mtk kmod-mt7603 kmod-mt7615e \ kmod-mt7663-firmware-ap kmod-usb3 kmod-usb-ledtrig-usbport endef TARGET_DEVICES += zbtlink_zbt-wg1608-32m @@ -3189,7 +3189,7 @@ define Device/zbtlink_zbt-wg2626 IMAGE_SIZE := 16064k DEVICE_VENDOR := Zbtlink DEVICE_MODEL := ZBT-WG2626 - DEVICE_PACKAGES := kmod-ata-ahci kmod-sdhci-mt7620 kmod-mt76x2 kmod-usb3 \ + DEVICE_PACKAGES := kmod-ata-ahci kmod-mmc-mtk kmod-mt76x2 kmod-usb3 \ kmod-usb-ledtrig-usbport -uboot-envtools SUPPORTED_DEVICES += zbt-wg2626 endef @@ -3202,7 +3202,7 @@ define Device/zbtlink_zbt-wg3526-16m DEVICE_VENDOR := Zbtlink DEVICE_MODEL := ZBT-WG3526 DEVICE_VARIANT := 16M - DEVICE_PACKAGES := kmod-ata-ahci kmod-sdhci-mt7620 kmod-mt7603 kmod-mt76x2 \ + DEVICE_PACKAGES := kmod-ata-ahci kmod-mmc-mtk kmod-mt7603 kmod-mt76x2 \ kmod-usb3 kmod-usb-ledtrig-usbport -uboot-envtools SUPPORTED_DEVICES += zbt-wg3526 zbt-wg3526-16M endef @@ -3215,7 +3215,7 @@ define Device/zbtlink_zbt-wg3526-32m DEVICE_VENDOR := Zbtlink DEVICE_MODEL := ZBT-WG3526 DEVICE_VARIANT := 32M - DEVICE_PACKAGES := kmod-ata-ahci kmod-sdhci-mt7620 kmod-mt7603 kmod-mt76x2 \ + DEVICE_PACKAGES := kmod-ata-ahci kmod-mmc-mtk kmod-mt7603 kmod-mt76x2 \ kmod-usb3 kmod-usb-ledtrig-usbport -uboot-envtools SUPPORTED_DEVICES += ac1200pro zbt-wg3526-32M endef diff --git a/target/linux/ramips/image/mt76x8.mk b/target/linux/ramips/image/mt76x8.mk index 415c204504..f0cb7f5ce7 100644 --- a/target/linux/ramips/image/mt76x8.mk +++ b/target/linux/ramips/image/mt76x8.mk @@ -407,7 +407,7 @@ define Device/mediatek_linkit-smart-7688 IMAGE_SIZE := 32448k DEVICE_VENDOR := MediaTek DEVICE_MODEL := LinkIt Smart 7688 - DEVICE_PACKAGES:= kmod-usb2 kmod-usb-ohci uboot-envtools kmod-sdhci-mt7620 + DEVICE_PACKAGES:= kmod-usb2 kmod-usb-ohci uboot-envtools kmod-mmc-mtk SUPPORTED_DEVICES += linkits7688 linkits7688d endef TARGET_DEVICES += mediatek_linkit-smart-7688 @@ -500,7 +500,7 @@ define Device/onion_omega2p IMAGE_SIZE := 32448k DEVICE_VENDOR := Onion DEVICE_MODEL := Omega2+ - DEVICE_PACKAGES:= kmod-usb2 kmod-usb-ohci uboot-envtools kmod-sdhci-mt7620 + DEVICE_PACKAGES:= kmod-usb2 kmod-usb-ohci uboot-envtools kmod-mmc-mtk SUPPORTED_DEVICES += omega2p endef TARGET_DEVICES += onion_omega2p @@ -527,7 +527,7 @@ define Device/ravpower_rp-wd009 DEVICE_MODEL := RP-WD009 UBOOT_PATH := $(STAGING_DIR_IMAGE)/mt7628_ravpower_rp-wd009-u-boot.bin DEVICE_PACKAGES := kmod-mt76x0e kmod-usb2 kmod-usb-ohci \ - kmod-sdhci-mt7620 kmod-i2c-mt7628 ravpower-mcu + kmod-mmc-mtk kmod-i2c-mt7628 ravpower-mcu IMAGES += factory.bin IMAGE/factory.bin := $$(sysupgrade_bin) | ravpower-wd009-factory endef @@ -959,7 +959,7 @@ define Device/vocore_vocore2 DEVICE_VENDOR := VoCore DEVICE_MODEL := VoCore2 DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-usb-ledtrig-usbport \ - kmod-sdhci-mt7620 + kmod-mmc-mtk SUPPORTED_DEVICES += vocore2 endef TARGET_DEVICES += vocore_vocore2 @@ -969,7 +969,7 @@ define Device/vocore_vocore2-lite DEVICE_VENDOR := VoCore DEVICE_MODEL := VoCore2-Lite DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-usb-ledtrig-usbport \ - kmod-sdhci-mt7620 + kmod-mmc-mtk SUPPORTED_DEVICES += vocore2lite endef TARGET_DEVICES += vocore_vocore2-lite diff --git a/target/linux/ramips/modules.mk b/target/linux/ramips/modules.mk index f32b82aef8..ced479dc93 100644 --- a/target/linux/ramips/modules.mk +++ b/target/linux/ramips/modules.mk @@ -4,6 +4,27 @@ OTHER_MENU:=Other modules +define KernelPackage/mmc-mtk + SUBMENU:=Other modules + TITLE:=MediaTek SD/MMC Card Interface support + DEPENDS:=@(TARGET_ramips_mt7620||TARGET_ramips_mt76x8||TARGET_ramips_mt7621) +kmod-mmc + KCONFIG:= \ + CONFIG_MMC \ + CONFIG_MMC_MTK \ + CONFIG_MMC_CQHCI + FILES:= \ + $(LINUX_DIR)/drivers/mmc/host/cqhci.ko \ + $(LINUX_DIR)/drivers/mmc/host/mtk-sd.ko + AUTOLOAD:=$(call AutoProbe,cqhci mtk-sd,1) +endef + +define KernelPackage/mmc-mtk/description + MediaTek(R) Secure digital and Multimedia card Interface. + This is needed if support for any SD/SDIO/MMC devices is required. +endef + +$(eval $(call KernelPackage,mmc-mtk)) + define KernelPackage/pwm-mediatek-ramips SUBMENU:=Other modules TITLE:=MT7628 PWM diff --git a/target/linux/ramips/mt7620/config-6.6 b/target/linux/ramips/mt7620/config-6.6 index a142efd43b..20bba0c5a4 100644 --- a/target/linux/ramips/mt7620/config-6.6 +++ b/target/linux/ramips/mt7620/config-6.6 @@ -186,6 +186,8 @@ CONFIG_RANDSTRUCT_NONE=y CONFIG_RATIONAL=y CONFIG_REGMAP=y CONFIG_REGMAP_MMIO=y +CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y CONFIG_RESET_CONTROLLER=y CONFIG_SERIAL_8250_RT288X=y CONFIG_SERIAL_MCTRL_GPIO=y diff --git a/target/linux/ramips/patches-6.6/831-mmc-mtk-sd-initialize-pad-delay-and-drive-strength.patch b/target/linux/ramips/patches-6.6/831-mmc-mtk-sd-initialize-pad-delay-and-drive-strength.patch new file mode 100644 index 0000000000..1d5c6dcd40 --- /dev/null +++ b/target/linux/ramips/patches-6.6/831-mmc-mtk-sd-initialize-pad-delay-and-drive-strength.patch @@ -0,0 +1,39 @@ +From: Shiji Yang +Date: Wed, 10 Jul 2024 12:18:52 +0800 +Subject: [PATCH] mmc: mtk-sd: initialize the pad and tune registers + +Signed-off-by: Shiji Yang +--- + +--- a/drivers/mmc/host/mtk-sd.c ++++ b/drivers/mmc/host/mtk-sd.c +@@ -75,8 +75,12 @@ + #define MSDC_PATCH_BIT 0xb0 + #define MSDC_PATCH_BIT1 0xb4 + #define MSDC_PATCH_BIT2 0xb8 ++#define MSDC_PAD_CTRL0 0xe0 ++#define MSDC_PAD_CTRL1 0xe4 ++#define MSDC_PAD_CTRL2 0xe8 + #define MSDC_PAD_TUNE 0xec + #define MSDC_PAD_TUNE0 0xf0 ++#define MSDC_PAD_TUNE1 0xf4 + #define PAD_DS_TUNE 0x188 + #define PAD_CMD_TUNE 0x18c + #define EMMC51_CFG0 0x204 +@@ -1795,6 +1799,16 @@ static void msdc_init_hw(struct msdc_hos + MSDC_PAD_TUNE_RXDLYSEL); + } + ++ /* Set pins drive strength */ ++ writel(0x000d0044, host->base + MSDC_PAD_CTRL0); ++ writel(0x000e0044, host->base + MSDC_PAD_CTRL1); ++ writel(0x000e0044, host->base + MSDC_PAD_CTRL2); ++ ++ /* Set pad delay */ ++ writel(0x84101010, host->base + MSDC_PAD_TUNE); ++ writel(0x10101010, host->base + MSDC_PAD_TUNE0); ++ writel(0x10101010, host->base + MSDC_PAD_TUNE1); ++ + if (mmc->caps2 & MMC_CAP2_NO_SDIO) { + sdr_clr_bits(host->base + SDC_CFG, SDC_CFG_SDIO); + sdr_clr_bits(host->base + MSDC_INTEN, MSDC_INTEN_SDIOIRQ);