Add IO PAD table for tegra234 to allow configuring dpd mode
and switching the pins to 1.8V or 3.3V as needed.
In tegra234, DPD registers are reorganized such that there is
a DPD_REQ register and a DPD_STATUS register per pad group.
This change accordingly updates the PMC driver.
Signed-off-by: Petlozu Pravareshwar <petlozup@xxxxxxxxxx>
---
drivers/soc/tegra/pmc.c | 116 ++++++++++++++++++++++++++++++++++++++--
1 file changed, 112 insertions(+), 4 deletions(-)
/**
@@ -1546,6 +1560,14 @@ static int tegra_io_pad_get_dpd_register_bit(struct tegra_pmc *pmc,
if (pad->dpd == UINT_MAX)
return -ENOTSUPP;
+ if (pmc->soc->has_reorg_hw_dpd_reg_impl) {
+ *mask = BIT(pad->dpd);
+ *status = pmc->soc->regs->reorg_dpd_status[pad->reg_index];
+ *request = pmc->soc->regs->reorg_dpd_req[pad->reg_index];
+
+ goto done;
+ }
+
*mask = BIT(pad->dpd % 32);
if (pad->dpd < 32) {
@@ -1556,6 +1578,7 @@ static int tegra_io_pad_get_dpd_register_bit(struct tegra_pmc *pmc,
*request = pmc->soc->regs->dpd2_req;
}
+done:
return 0;
}
@@ -3132,6 +3155,7 @@ static const struct tegra_pmc_soc tegra20_pmc_soc = {
.num_pmc_clks = 0,
.has_blink_output = true,
.has_usb_sleepwalk = true,
+ .has_reorg_hw_dpd_reg_impl = false,
};