The driver previously grabbed the SD pins for itself, ignoring the pin
controller. Remove this, and allow the pinctrl subsystem to set up the
pins using the device tree mappings. This allows this driver to work on
related devices that have a different pin controller mapping, such as
the MT7688. The hardcoded bit index was incorrect on that device.
The driver now needs a pin controller reference in its device tree node:
sdhci: /* ... */ {
compatible = "ralink,mt7620-sdhci";
pinctrl-names = "default";
pinctrl-0 = <&sdhci_pins>;
// ...
};
This change could break SD controller functionality on existing devices
whose device trees do not specify a pin controller and state for the SD
node.
Signed-off-by: George Hilliard <thirtythreeforty@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
static int __init mt_msdc_init(void)
{
int ret;
- u32 reg;
-
- // Set the pins for sdxc to sdxc mode
- //FIXME: this should be done by pinctl and not by the sd driver
- reg = readl((void __iomem *)(RALINK_SYSCTL_BASE + 0x60)) & ~(0x3 << 18);
- writel(reg, (void __iomem *)(RALINK_SYSCTL_BASE + 0x60));
ret = platform_driver_register(&mt_msdc_driver);
if (ret) {