mbox series

[V3,0/3] Internal voltage control for platform drivers

Message ID 1539004739-32060-1-git-send-email-vbadigan@codeaurora.org (mailing list archive)
Headers show
Series Internal voltage control for platform drivers | expand

Message

Veerabhadrarao Badiganti Oct. 8, 2018, 1:18 p.m. UTC
Certain SDHC controllers may require that voltage switching happen after
sepcial conditions.

For SDHCI-MSM controllers, power irq is a signal from controller to SW
that it is ready for voltage switch. So added support to register
voltage regulators from the msm driver and use them.
Voltage switching from core layer is causing CRC/cmd timeout errors in
some chipsets.

Changes since RFC:
	- Added DT option to pass regulator load values the sdhci-msm driver
	should vote during BUS_ON and BUS_OFF power irq.
	- Removed quirk and used local flags in sdhci_add_host to to avoid
	scenario of both sdhci & sdhci-msm layer controlling the regulators.
	- Introduced two sdhci msm layer APIs to replace the respective
	sdhci layer APIs. This is again to stop sdhci layer from
	controlling regulators if sdhci_msm layer is present.

Changes since V1:
	- Introduced vqmmc_enabled flag in sdhci_host to track if vqmmc is
	enabled or not.
	- Updated DT option name with vendor prefix and unit suffix.
	- Introduced sdhci_msm_set_vmmc/vqmmc APIs for configuring vmmc and
	vqmmc. And moved all relevant code to these functions.
	- Removed pltfm_init_done flag from sdhci_msm_host which is not needed.
	As long as the device is in power-off state, SDHCI-MSM controller
	doesn't trigger power irq. So this flag is not needed.

Changes since V2:
	- Updated conditional check with vqmmc instead of vmmc for
	mmc_regulator_get_supply() in sdhci_setup_host().
	- Turning vmmc off if enabling vqmmc fails in
	sdhci_msm_init_pwr_irq_wait.
	- Without supplying load values of vmmc, observing turning errors.
	So removed optional flag for this DT option.

Tested on: sdm845

Vijay Viswanath (3):
  mmc: sdhci: Allow platform controlled voltage switching
  dt-bindings: mmc: sdhci-msm: Add entries for passing load values
  mmc: sdhci-msm: Use internal voltage control

 .../devicetree/bindings/mmc/sdhci-msm.txt          |   8 +
 drivers/mmc/host/sdhci-msm.c                       | 212 ++++++++++++++++++++-
 drivers/mmc/host/sdhci.c                           |  32 ++--
 drivers/mmc/host/sdhci.h                           |   1 +
 4 files changed, 232 insertions(+), 21 deletions(-)