Add mmc driver for Sunplus SP7021 SOC
Subsystems (2)
v3 cover Add mmc driver for Sunplus SP7021 SOC
This is a patch series for mmc driver for Sunplus SP7021 SOC.
Sunplus SP7021 is an ARM Cortex A7 (4 cores) based SoC. It integrates many peripherals (ex: UART, I2C, SPI, SDIO, eMMC, USB, SD card and etc.) into a single chip. It is designed for industrial control.
Refer to:
https://sunplus-tibbo.atlassian.net/wiki/spaces/doc/overview
https://tibbo.com/store/plus1.html
Tony Huang (2):
dt-binding: mmc: Add mmc yaml file for Sunplus SP7021
mmc: Add mmc driver for Sunplus SP7021
.../devicetree/bindings/mmc/sunplus-mmc.yaml | 76 + MAINTAINERS | 7 + drivers/mmc/host/Kconfig | 9 + drivers/mmc/host/Makefile | 1 + drivers/mmc/host/sunplus_mmc.c | 2168 ++++++++++++++++++++ 5 files changed, 2261 insertions(+) create mode 100644 Documentation/devicetree/bindings/mmc/sunplus-mmc.yaml create mode 100644 drivers/mmc/host/sunplus_mmc.c
Signature · 1 line
2.7.4
PATCH v3 1/2 dt-binding: mmc: Add mmc yaml file for Sunplus SP7021
Add mmc yaml file for Sunplus SP7021
---
Changes in v3:
- combine sdcard and eMMC into one driver.
.../devicetree/bindings/mmc/sunplus-mmc.yaml | 76 ++++++++++++++++++++++ MAINTAINERS | 6 ++ 2 files changed, 82 insertions(+) create mode 100644 Documentation/devicetree/bindings/mmc/sunplus-mmc.yaml
Documentation/devicetree/bindings/mmc/sunplus-mmc.yaml new file +76 -0
@@ -0,0 +1,76 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +# Copyright (C) Sunplus Ltd. Co. 2021 +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/mmc/sunplus-mmc.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: sunplus MMC controller + +allOf: + - $ref: "mmc-controller.yaml" + +maintainers: + - Tony Huang <[email protected]> + - Li-hao Kuo <[email protected]> + +properties: + compatible: + enum: + - sunplus,sp7021-emmc + - sunplus,sp7021-sdhci + + reg: + maxItems: 1 + + interrupts: + maxItems: 1 + + clocks: + minItems: 1 + + resets: + maxItems: 1 + + max-frequency: true + +required: + - compatible + - reg + - interrupts + - clocks + - resets + +unevaluatedProperties: false + +examples: + - | + #include <dt-bindings/interrupt-controller/irq.h> + #include <dt-bindings/interrupt-controller/arm-gic.h> + mmc0: mmc@9c003b00 { + compatible = "sunplus,sp7021-emmc"; + reg = <0x9c003b00 0x180>; + interrupts = <20 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&clkc 0x4e>; + resets = <&rstc 0x3e>; + bus-width = <8>; + max-frequency = <52000000>; + non-removable; + disable-wp; + cap-mmc-highspeed; + mmc-ddr-3_3v; + no-sdio; + no-sd; + }; + + mmc1: mmc@9c003e80 { + compatible = "sunplus,sp7021-sdhci"; + reg = <0x9c003e80 0x280>; + interrupts = <21 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&clkc 0x4f>; + resets = <&rstc 0x3f>; + pinctrl-names = "default"; + pinctrl-0 = <&mmc1_mux &mmc1_mux_cd>; + max-frequency = <52000000>; + }; +...
MAINTAINERS +6 -0
@@ -18242,6 +18242,12 @@ L: [email protected] S: Maintained F: drivers/net/ethernet/dlink/sundance.c +SUNPLUS MMC DRIVER +M: Tony Huang <[email protected]> +M: Li-hao Kuo <[email protected]> +S: Maintained +F: Documentation/devicetree/bindings/mmc/sunplu-mmc.yaml + SUPERH M: Yoshinori Sato <[email protected]> M: Rich Felker <[email protected]>
Signature · 1 line
2.7.4
Rob Herring
maintainerRe: [PATCH v3 1/2] dt-binding: mmc: Add mmc yaml file for Sunplus SP7021
Quoted 29 lines · Tony Huang
Add mmc yaml file for Sunplus SP7021
Signed-off-by Tony Huang <[email protected]>---
Changes in v3:
- combine sdcard and eMMC into one driver..../devicetree/bindings/mmc/sunplus-mmc.yaml | 76 ++++++++++++++++++++++ MAINTAINERS | 6 ++ 2 files changed, 82 insertions(+) create mode 100644 Documentation/devicetree/bindings/mmc/sunplus-mmc.yamlDocumentation/devicetree/bindings/mmc/sunplus-mmc.yaml new file +11
-0@@ -0,0 +1,76 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +# Copyright (C) Sunplus Ltd. Co. 2021 +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/mmc/sunplus-mmc.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: sunplus MMC controller + +allOf: + - $ref: "mmc-controller.yaml"
Documentation/devicetree/bindings/mmc/sunplus-mmc.yaml line 21
Quoted 10 lines
Documentation/devicetree/bindings/mmc/sunplus-mmc.yaml new file +10
-0+ +maintainers: + - Tony Huang <[email protected]> + - Li-hao Kuo <[email protected]> + +properties: + compatible: + enum: + - sunplus,sp7021-emmc + - sunplus,sp7021-sdhci
Why are these still different? Looking at the driver, it seems the settings are the same for both. And for clock speeds, we have properties to control them as they can be board specific.
Quoted 76 lines
Documentation/devicetree/bindings/mmc/sunplus-mmc.yaml new file +55
-0+ + reg: + maxItems: 1 + + interrupts: + maxItems: 1 + + clocks: + minItems: 1 + + resets: + maxItems: 1 + + max-frequency: true + +required: + - compatible + - reg + - interrupts + - clocks + - resets + +unevaluatedProperties: false + +examples: + - | + #include <dt-bindings/interrupt-controller/irq.h> + #include <dt-bindings/interrupt-controller/arm-gic.h> + mmc0: mmc@9c003b00 { + compatible = "sunplus,sp7021-emmc"; + reg = <0x9c003b00 0x180>; + interrupts = <20 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&clkc 0x4e>; + resets = <&rstc 0x3e>; + bus-width = <8>; + max-frequency = <52000000>; + non-removable; + disable-wp; + cap-mmc-highspeed; + mmc-ddr-3_3v; + no-sdio; + no-sd; + }; + + mmc1: mmc@9c003e80 { + compatible = "sunplus,sp7021-sdhci"; + reg = <0x9c003e80 0x280>; + interrupts = <21 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&clkc 0x4f>; + resets = <&rstc 0x3f>; + pinctrl-names = "default"; + pinctrl-0 = <&mmc1_mux &mmc1_mux_cd>; + max-frequency = <52000000>; + }; +...MAINTAINERS +6
-0@@ -18242,6 +18242,12 @@ L: [email protected] S: Maintained F: drivers/net/ethernet/dlink/sundance.c +SUNPLUS MMC DRIVER +M: Tony Huang <[email protected]> +M: Li-hao Kuo <[email protected]> +S: Maintained +F: Documentation/devicetree/bindings/mmc/sunplu-mmc.yaml + SUPERH M: Yoshinori Sato <[email protected]> M: Rich Felker <[email protected]>Signature · 1 line
2.7.4
RE: [PATCH v3 1/2] dt-binding: mmc: Add mmc yaml file for Sunplus SP7021
Dear Robh:
Quoted 41 lines
Subject: Re: [PATCH v3 1/2] dt-binding: mmc: Add mmc yaml file for Sunplus SP7021
Quoted 8 lines · Tony Huang
Add mmc yaml file for Sunplus SP7021
Signed-off-by Tony Huang <[email protected]>---
Changes in v3:
- combine sdcard and eMMC into one driver..../devicetree/bindings/mmc/sunplus-mmc.yaml | 76++++++++++++++++++++++
Quoted 28 lines
MAINTAINERS | 6 ++ 2 files changed, 82 insertions(+) create mode 100644
Documentation/devicetree/bindings/mmc/sunplus-mmc.yamlDocumentation/devicetree/bindings/mmc/sunplus-mmc.yaml new file +16
-0@@ -0,0 +1,76 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) # Copyright +(C) Sunplus Ltd. Co. 2021 %YAML 1.2 +--- +$id: http://devicetree.org/schemas/mmc/sunplus-mmc.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: sunplus MMC controller + +allOf: + - $ref: "mmc-controller.yaml" + +maintainers: + - Tony Huang <[email protected]> + - Li-hao Kuo <[email protected]> + +properties:
Quoted 9 lines
Documentation/devicetree/bindings/mmc/sunplus-mmc.yaml line 21
Quoted 4 lines
Documentation/devicetree/bindings/mmc/sunplus-mmc.yaml new file +4
-0+ compatible: + enum: + - sunplus,sp7021-emmc + - sunplus,sp7021-sdhciWhy are these still different? Looking at the driver, it seems the settings are the same for both. And for clock speeds, we have properties to control them as they can be board specific.
The register base address of emmc and sd card are different. eMMC and sdcard are individual hardware settings
Quoted 75 lines
Quoted 75 lines
Documentation/devicetree/bindings/mmc/sunplus-mmc.yaml new file +55
-0+ + reg: + maxItems: 1 + + interrupts: + maxItems: 1 + + clocks: + minItems: 1 + + resets: + maxItems: 1 + + max-frequency: true + +required: + - compatible + - reg + - interrupts + - clocks + - resets + +unevaluatedProperties: false + +examples: + - | + #include <dt-bindings/interrupt-controller/irq.h> + #include <dt-bindings/interrupt-controller/arm-gic.h> + mmc0: mmc@9c003b00 { + compatible = "sunplus,sp7021-emmc"; + reg = <0x9c003b00 0x180>; + interrupts = <20 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&clkc 0x4e>; + resets = <&rstc 0x3e>; + bus-width = <8>; + max-frequency = <52000000>; + non-removable; + disable-wp; + cap-mmc-highspeed; + mmc-ddr-3_3v; + no-sdio; + no-sd; + }; + + mmc1: mmc@9c003e80 { + compatible = "sunplus,sp7021-sdhci"; + reg = <0x9c003e80 0x280>; + interrupts = <21 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&clkc 0x4f>; + resets = <&rstc 0x3f>; + pinctrl-names = "default"; + pinctrl-0 = <&mmc1_mux &mmc1_mux_cd>; + max-frequency = <52000000>; + }; +...MAINTAINERS +6
-1@@ -18242,6 +18242,12 @@ L: [email protected] S: Maintained F: drivers/net/ethernet/dlink/sundance.c +SUNPLUS MMC DRIVER +M: Tony Huang <[email protected]> +M: Li-hao Kuo <[email protected]> +S: Maintained +F: Documentation/devicetree/bindings/mmc/sunplu-mmc.yaml + SUPERH M: Yoshinori Sato <[email protected]> M: Rich Felker <[email protected]> --2.7.4
Re: [PATCH v3 1/2] dt-binding: mmc: Add mmc yaml file for Sunplus SP7021
Quoted 54 lines · Tony Huang 黃懷厚
Dear Robh:
Quoted 41 lines
Subject: Re: [PATCH v3 1/2] dt-binding: mmc: Add mmc yaml file for Sunplus SP7021
Quoted 8 lines · Tony Huang
Add mmc yaml file for Sunplus SP7021
Signed-off-by Tony Huang <[email protected]>---
Changes in v3:
- combine sdcard and eMMC into one driver..../devicetree/bindings/mmc/sunplus-mmc.yaml | 76++++++++++++++++++++++
Quoted 28 lines
MAINTAINERS | 6 ++ 2 files changed, 82 insertions(+) create mode 100644
Documentation/devicetree/bindings/mmc/sunplus-mmc.yamlDocumentation/devicetree/bindings/mmc/sunplus-mmc.yaml new file +16
-0@@ -0,0 +1,76 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) # Copyright +(C) Sunplus Ltd. Co. 2021 %YAML 1.2 +--- +$id: http://devicetree.org/schemas/mmc/sunplus-mmc.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: sunplus MMC controller + +allOf: + - $ref: "mmc-controller.yaml" + +maintainers: + - Tony Huang <[email protected]> + - Li-hao Kuo <[email protected]> + +properties:Quoted 9 lines
Documentation/devicetree/bindings/mmc/sunplus-mmc.yaml line 21
Quoted 4 lines
Documentation/devicetree/bindings/mmc/sunplus-mmc.yaml new file +4
-0+ compatible: + enum: + - sunplus,sp7021-emmc + - sunplus,sp7021-sdhciWhy are these still different? Looking at the driver, it seems the settings are the same for both. And for clock speeds, we have properties to control them as they can be board specific.
Quoted 2 lines
The register base address of emmc and sd card are different. eMMC and sdcard are individual hardware settings
When I looked at the previous version of the driver(s) that was posted, I got the impression that you have some registers in the controller that are specific for eMMC, SD or SDIO.
So, depending on how the controller is going to be used (for eMMC, SD or SDIO) it's needs to be configured differently. Right?
If I got this right, I think you can instead use the existing common DT properties, "no-sd", "no-sdio", "no-mmc" to explain how each controller is configured.
Does this make sense to you?
Kind regards
Uffe
RE: [PATCH v3 1/2] dt-binding: mmc: Add mmc yaml file for Sunplus SP7021
Dear Uffe:
Quoted 68 lines
Subject: Re: [PATCH v3 1/2] dt-binding: mmc: Add mmc yaml file for Sunplus SP7021
Quoted 56 lines · Tony Huang 黃懷厚
Dear Robh:
Quoted 43 lines
Subject: Re: [PATCH v3 1/2] dt-binding: mmc: Add mmc yaml file for Sunplus
SP7021Quoted 8 lines · Tony Huang
Add mmc yaml file for Sunplus SP7021
Signed-off-by Tony Huang <[email protected]>---
Changes in v3:
- combine sdcard and eMMC into one driver..../devicetree/bindings/mmc/sunplus-mmc.yaml | 76++++++++++++++++++++++
Quoted 29 lines
MAINTAINERS | 6 ++ 2 files changed, 82 insertions(+) create mode 100644
Documentation/devicetree/bindings/mmc/sunplus-mmc.yamldiff --git
a/Documentation/devicetree/bindings/mmc/sunplus-mmc.yamlb/Documentation/devicetree/bindings/mmc/sunplus-mmc.yamlnew file mode 100644
index 0000000..8f44d13Documentation/devicetree/bindings/mmc/sunplus-mmc.yaml new file +17
-0@@ -0,0 +1,76 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) # +Copyright +(C) Sunplus Ltd. Co. 2021 %YAML 1.2 +--- +$id: http://devicetree.org/schemas/mmc/sunplus-mmc.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: sunplus MMC controller + +allOf: + - $ref: "mmc-controller.yaml" + +maintainers: + - Tony Huang <[email protected]> + - Li-hao Kuo <[email protected]> + +properties:Quoted 9 lines
Documentation/devicetree/bindings/mmc/sunplus-mmc.yaml line 21
Quoted 4 lines
Documentation/devicetree/bindings/mmc/sunplus-mmc.yaml new file +4
-0+ compatible: + enum: + - sunplus,sp7021-emmc + - sunplus,sp7021-sdhciWhy are these still different? Looking at the driver, it seems the settings are the same for both. And for clock speeds, we have properties to control them as they can be board specific.
Quoted 2 lines
The register base address of emmc and sd card are different. eMMC and sdcard are individual hardware settings
When I looked at the previous version of the driver(s) that was posted, I got the impression that you have some registers in the controller that are specific for eMMC, SD or SDIO.
Quoted 7 lines
So, depending on how the controller is going to be used (for eMMC, SD or SDIO) it's needs to be configured differently. Right?
If I got this right, I think you can instead use the existing common DT properties, "no-sd", "no-sdio", "no-mmc" to explain how each controller is configured.
OK, I will use DT> properties, "no-sd", "no-sdio", "no-mmc" to explain how each controller is configured.
Thanks
PATCH v3 2/2 mmc: Add mmc driver for Sunplus SP7021
In reply to Tony HuangAdd mmc driver for Sunplus SP7021
---
Changes in v3:
- combine sdcard and eMMC into one driver.
MAINTAINERS | 1 + drivers/mmc/host/Kconfig | 9 + drivers/mmc/host/Makefile | 1 + drivers/mmc/host/sunplus_mmc.c | 2168 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 2179 insertions(+) create mode 100644 drivers/mmc/host/sunplus_mmc.c
MAINTAINERS +1 -0
@@ -18247,6 +18247,7 @@ M: Tony Huang <[email protected]> M: Li-hao Kuo <[email protected]> S: Maintained F: Documentation/devicetree/bindings/mmc/sunplu-mmc.yaml +F: drivers/mmc/host/sunplus_mmc.c SUPERH M: Yoshinori Sato <[email protected]>
drivers/mmc/host/Kconfig +9 -0
@@ -14,6 +14,15 @@ config MMC_DEBUG added host drivers please don't invent their private macro for debugging. +config MMC_SUNPLUS + tristate "Sunplus SP7021 MMC Controller" + depends on ARCH_SUNPLUS + help + If you say yes here, you will get support for eMMC host interface + on Sunplus SoCs. + + If unsure, say N + config MMC_ARMMMCI tristate "ARM AMBA Multimedia Card Interface support" depends on ARM_AMBA
drivers/mmc/host/Makefile +1 -0
@@ -97,6 +97,7 @@ obj-$(CONFIG_MMC_SDHCI_MICROCHIP_PIC32) += sdhci-pic32.o obj-$(CONFIG_MMC_SDHCI_BRCMSTB) += sdhci-brcmstb.o obj-$(CONFIG_MMC_SDHCI_OMAP) += sdhci-omap.o obj-$(CONFIG_MMC_SDHCI_SPRD) += sdhci-sprd.o +obj-$(CONFIG_MMC_SUNPLUS) += sunplus_mmc.o obj-$(CONFIG_MMC_CQHCI) += cqhci.o cqhci-y += cqhci-core.o cqhci-$(CONFIG_MMC_CRYPTO) += cqhci-crypto.o
drivers/mmc/host/sunplus_mmc.c new file +2168 -0
2,168 lines not on this page · raw message
Signature · 1 line
2.7.4