Message ID | 20200306174413.20634-10-nsaenzjulienne@suse.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Raspbery Pi 4 vmmc regulator support | expand |
On 6/03/20 7:44 pm, Nicolas Saenz Julienne wrote: > The controller needs a valid bus voltage in its power register > regardless of whether an external regulator is taking care of the power > supply. > > The sdhci core already provides a helper function for this, > sdhci_set_power_and_bus_voltage(), so create a bcm2711 specific 'struct > sdhci_ops' which makes use of it. > > Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> Acked-by: Adrian Hunter <adrian.hunter@intel.com> > --- > drivers/mmc/host/sdhci-iproc.c | 17 ++++++++++++++++- > 1 file changed, 16 insertions(+), 1 deletion(-) > > diff --git a/drivers/mmc/host/sdhci-iproc.c b/drivers/mmc/host/sdhci-iproc.c > index f4f5f0a70cda..225603148d7d 100644 > --- a/drivers/mmc/host/sdhci-iproc.c > +++ b/drivers/mmc/host/sdhci-iproc.c > @@ -261,9 +261,24 @@ static const struct sdhci_iproc_data bcm2835_data = { > .mmc_caps = 0x00000000, > }; > > +static const struct sdhci_ops sdhci_iproc_bcm2711_ops = { > + .read_l = sdhci_iproc_readl, > + .read_w = sdhci_iproc_readw, > + .read_b = sdhci_iproc_readb, > + .write_l = sdhci_iproc_writel, > + .write_w = sdhci_iproc_writew, > + .write_b = sdhci_iproc_writeb, > + .set_clock = sdhci_set_clock, > + .set_power = sdhci_set_power_and_bus_voltage, > + .get_max_clock = sdhci_iproc_get_max_clock, > + .set_bus_width = sdhci_set_bus_width, > + .reset = sdhci_reset, > + .set_uhs_signaling = sdhci_set_uhs_signaling, > +}; > + > static const struct sdhci_pltfm_data sdhci_bcm2711_pltfm_data = { > .quirks = SDHCI_QUIRK_MULTIBLOCK_READ_ACMD12, > - .ops = &sdhci_iproc_32only_ops, > + .ops = &sdhci_iproc_bcm2711_ops, > }; > > static const struct sdhci_iproc_data bcm2711_data = { >
diff --git a/drivers/mmc/host/sdhci-iproc.c b/drivers/mmc/host/sdhci-iproc.c index f4f5f0a70cda..225603148d7d 100644 --- a/drivers/mmc/host/sdhci-iproc.c +++ b/drivers/mmc/host/sdhci-iproc.c @@ -261,9 +261,24 @@ static const struct sdhci_iproc_data bcm2835_data = { .mmc_caps = 0x00000000, }; +static const struct sdhci_ops sdhci_iproc_bcm2711_ops = { + .read_l = sdhci_iproc_readl, + .read_w = sdhci_iproc_readw, + .read_b = sdhci_iproc_readb, + .write_l = sdhci_iproc_writel, + .write_w = sdhci_iproc_writew, + .write_b = sdhci_iproc_writeb, + .set_clock = sdhci_set_clock, + .set_power = sdhci_set_power_and_bus_voltage, + .get_max_clock = sdhci_iproc_get_max_clock, + .set_bus_width = sdhci_set_bus_width, + .reset = sdhci_reset, + .set_uhs_signaling = sdhci_set_uhs_signaling, +}; + static const struct sdhci_pltfm_data sdhci_bcm2711_pltfm_data = { .quirks = SDHCI_QUIRK_MULTIBLOCK_READ_ACMD12, - .ops = &sdhci_iproc_32only_ops, + .ops = &sdhci_iproc_bcm2711_ops, }; static const struct sdhci_iproc_data bcm2711_data = {
The controller needs a valid bus voltage in its power register regardless of whether an external regulator is taking care of the power supply. The sdhci core already provides a helper function for this, sdhci_set_power_and_bus_voltage(), so create a bcm2711 specific 'struct sdhci_ops' which makes use of it. Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> --- drivers/mmc/host/sdhci-iproc.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-)