soc/tegra: pmc: Add I/O pad table for Tegra234
authorPetlozu Pravareshwar <petlozup@nvidia.com>
Fri, 30 Sep 2022 16:02:13 +0000 (16:02 +0000)
committerThierry Reding <treding@nvidia.com>
Thu, 10 Nov 2022 01:21:12 +0000 (02:21 +0100)
Add I/O pad table for Tegra234 to allow configuring DPD mode and
switching the pins to 1.8V or 3.3V as needed.

On Tegra234, DPD registers are reorganized such that there is a DPD_REQ
register and a DPD_STATUS register per pad group. Update the PMC driver
accordingly.

While at it, use the generated tables from tegra-pinmux-scripts to make
the formatting of these tables more consistent.

Signed-off-by: Petlozu Pravareshwar <petlozup@nvidia.com>
[treding@nvidia.com: generate tables from tegra-pinmux-scripts]
Signed-off-by: Thierry Reding <treding@nvidia.com>
drivers/soc/tegra/pmc.c
include/soc/tegra/pmc.h

index 678e8bc..9a195c1 100644 (file)
@@ -269,16 +269,14 @@ struct tegra_powergate {
 struct tegra_io_pad_soc {
        enum tegra_io_pad id;
        unsigned int dpd;
+       unsigned int request;
+       unsigned int status;
        unsigned int voltage;
        const char *name;
 };
 
 struct tegra_pmc_regs {
        unsigned int scratch0;
-       unsigned int dpd_req;
-       unsigned int dpd_status;
-       unsigned int dpd2_req;
-       unsigned int dpd2_status;
        unsigned int rst_status;
        unsigned int rst_source_shift;
        unsigned int rst_source_mask;
@@ -1540,46 +1538,20 @@ tegra_io_pad_find(struct tegra_pmc *pmc, enum tegra_io_pad id)
        return NULL;
 }
 
-static int tegra_io_pad_get_dpd_register_bit(struct tegra_pmc *pmc,
-                                            enum tegra_io_pad id,
-                                            unsigned long *request,
-                                            unsigned long *status,
-                                            u32 *mask)
-{
-       const struct tegra_io_pad_soc *pad;
-
-       pad = tegra_io_pad_find(pmc, id);
-       if (!pad) {
-               dev_err(pmc->dev, "invalid I/O pad ID %u\n", id);
-               return -ENOENT;
-       }
-
-       if (pad->dpd == UINT_MAX)
-               return -ENOTSUPP;
-
-       *mask = BIT(pad->dpd % 32);
-
-       if (pad->dpd < 32) {
-               *status = pmc->soc->regs->dpd_status;
-               *request = pmc->soc->regs->dpd_req;
-       } else {
-               *status = pmc->soc->regs->dpd2_status;
-               *request = pmc->soc->regs->dpd2_req;
-       }
-
-       return 0;
-}
-
-static int tegra_io_pad_prepare(struct tegra_pmc *pmc, enum tegra_io_pad id,
-                               unsigned long *request, unsigned long *status,
+static int tegra_io_pad_prepare(struct tegra_pmc *pmc,
+                               const struct tegra_io_pad_soc *pad,
+                               unsigned long *request,
+                               unsigned long *status,
                                u32 *mask)
 {
        unsigned long rate, value;
-       int err;
 
-       err = tegra_io_pad_get_dpd_register_bit(pmc, id, request, status, mask);
-       if (err)
-               return err;
+       if (pad->dpd == UINT_MAX)
+               return -EINVAL;
+
+       *request = pad->request;
+       *status = pad->status;
+       *mask = BIT(pad->dpd);
 
        if (pmc->clk) {
                rate = pmc->rate;
@@ -1631,13 +1603,20 @@ static void tegra_io_pad_unprepare(struct tegra_pmc *pmc)
  */
 int tegra_io_pad_power_enable(enum tegra_io_pad id)
 {
+       const struct tegra_io_pad_soc *pad;
        unsigned long request, status;
        u32 mask;
        int err;
 
+       pad = tegra_io_pad_find(pmc, id);
+       if (!pad) {
+               dev_err(pmc->dev, "invalid I/O pad ID %u\n", id);
+               return -ENOENT;
+       }
+
        mutex_lock(&pmc->powergates_lock);
 
-       err = tegra_io_pad_prepare(pmc, id, &request, &status, &mask);
+       err = tegra_io_pad_prepare(pmc, pad, &request, &status, &mask);
        if (err < 0) {
                dev_err(pmc->dev, "failed to prepare I/O pad: %d\n", err);
                goto unlock;
@@ -1667,13 +1646,20 @@ EXPORT_SYMBOL(tegra_io_pad_power_enable);
  */
 int tegra_io_pad_power_disable(enum tegra_io_pad id)
 {
+       const struct tegra_io_pad_soc *pad;
        unsigned long request, status;
        u32 mask;
        int err;
 
+       pad = tegra_io_pad_find(pmc, id);
+       if (!pad) {
+               dev_err(pmc->dev, "invalid I/O pad ID %u\n", id);
+               return -ENOENT;
+       }
+
        mutex_lock(&pmc->powergates_lock);
 
-       err = tegra_io_pad_prepare(pmc, id, &request, &status, &mask);
+       err = tegra_io_pad_prepare(pmc, pad, &request, &status, &mask);
        if (err < 0) {
                dev_err(pmc->dev, "failed to prepare I/O pad: %d\n", err);
                goto unlock;
@@ -1697,14 +1683,21 @@ EXPORT_SYMBOL(tegra_io_pad_power_disable);
 
 static int tegra_io_pad_is_powered(struct tegra_pmc *pmc, enum tegra_io_pad id)
 {
-       unsigned long request, status;
+       const struct tegra_io_pad_soc *pad;
+       unsigned long status;
        u32 mask, value;
-       int err;
 
-       err = tegra_io_pad_get_dpd_register_bit(pmc, id, &request, &status,
-                                               &mask);
-       if (err)
-               return err;
+       pad = tegra_io_pad_find(pmc, id);
+       if (!pad) {
+               dev_err(pmc->dev, "invalid I/O pad ID %u\n", id);
+               return -ENOENT;
+       }
+
+       if (pad->dpd == UINT_MAX)
+               return -EINVAL;
+
+       status = pad->status;
+       mask = BIT(pad->dpd);
 
        value = tegra_pmc_readl(pmc, status);
 
@@ -3050,10 +3043,6 @@ static const char * const tegra20_powergates[] = {
 
 static const struct tegra_pmc_regs tegra20_pmc_regs = {
        .scratch0 = 0x50,
-       .dpd_req = 0x1b8,
-       .dpd_status = 0x1bc,
-       .dpd2_req = 0x1c0,
-       .dpd2_status = 0x1c4,
        .rst_status = 0x1b4,
        .rst_source_shift = 0x0,
        .rst_source_mask = 0x7,
@@ -3297,59 +3286,86 @@ static const u8 tegra124_cpu_powergates[] = {
        TEGRA_POWERGATE_CPU3,
 };
 
-#define TEGRA_IO_PAD(_id, _dpd, _voltage, _name)       \
-       ((struct tegra_io_pad_soc) {                    \
-               .id     = (_id),                        \
-               .dpd    = (_dpd),                       \
-               .voltage = (_voltage),                  \
-               .name   = (_name),                      \
+#define TEGRA_IO_PAD(_id, _dpd, _request, _status, _voltage, _name)    \
+       ((struct tegra_io_pad_soc) {                                    \
+               .id             = (_id),                                \
+               .dpd            = (_dpd),                               \
+               .request        = (_request),                           \
+               .status         = (_status),                            \
+               .voltage        = (_voltage),                           \
+               .name           = (_name),                              \
        })
 
-#define TEGRA_IO_PIN_DESC(_id, _dpd, _voltage, _name)  \
-       ((struct pinctrl_pin_desc) {                    \
-               .number = (_id),                        \
-               .name   = (_name)                       \
+#define TEGRA_IO_PIN_DESC(_id, _name)  \
+       ((struct pinctrl_pin_desc) {    \
+               .number = (_id),        \
+               .name   = (_name),      \
        })
 
-#define TEGRA124_IO_PAD_TABLE(_pad)                                   \
-       /* .id                          .dpd  .voltage  .name */      \
-       _pad(TEGRA_IO_PAD_AUDIO,        17,   UINT_MAX, "audio"),     \
-       _pad(TEGRA_IO_PAD_BB,           15,   UINT_MAX, "bb"),        \
-       _pad(TEGRA_IO_PAD_CAM,          36,   UINT_MAX, "cam"),       \
-       _pad(TEGRA_IO_PAD_COMP,         22,   UINT_MAX, "comp"),      \
-       _pad(TEGRA_IO_PAD_CSIA,         0,    UINT_MAX, "csia"),      \
-       _pad(TEGRA_IO_PAD_CSIB,         1,    UINT_MAX, "csb"),       \
-       _pad(TEGRA_IO_PAD_CSIE,         44,   UINT_MAX, "cse"),       \
-       _pad(TEGRA_IO_PAD_DSI,          2,    UINT_MAX, "dsi"),       \
-       _pad(TEGRA_IO_PAD_DSIB,         39,   UINT_MAX, "dsib"),      \
-       _pad(TEGRA_IO_PAD_DSIC,         40,   UINT_MAX, "dsic"),      \
-       _pad(TEGRA_IO_PAD_DSID,         41,   UINT_MAX, "dsid"),      \
-       _pad(TEGRA_IO_PAD_HDMI,         28,   UINT_MAX, "hdmi"),      \
-       _pad(TEGRA_IO_PAD_HSIC,         19,   UINT_MAX, "hsic"),      \
-       _pad(TEGRA_IO_PAD_HV,           38,   UINT_MAX, "hv"),        \
-       _pad(TEGRA_IO_PAD_LVDS,         57,   UINT_MAX, "lvds"),      \
-       _pad(TEGRA_IO_PAD_MIPI_BIAS,    3,    UINT_MAX, "mipi-bias"), \
-       _pad(TEGRA_IO_PAD_NAND,         13,   UINT_MAX, "nand"),      \
-       _pad(TEGRA_IO_PAD_PEX_BIAS,     4,    UINT_MAX, "pex-bias"),  \
-       _pad(TEGRA_IO_PAD_PEX_CLK1,     5,    UINT_MAX, "pex-clk1"),  \
-       _pad(TEGRA_IO_PAD_PEX_CLK2,     6,    UINT_MAX, "pex-clk2"),  \
-       _pad(TEGRA_IO_PAD_PEX_CNTRL,    32,   UINT_MAX, "pex-cntrl"), \
-       _pad(TEGRA_IO_PAD_SDMMC1,       33,   UINT_MAX, "sdmmc1"),    \
-       _pad(TEGRA_IO_PAD_SDMMC3,       34,   UINT_MAX, "sdmmc3"),    \
-       _pad(TEGRA_IO_PAD_SDMMC4,       35,   UINT_MAX, "sdmmc4"),    \
-       _pad(TEGRA_IO_PAD_SYS_DDC,      58,   UINT_MAX, "sys_ddc"),   \
-       _pad(TEGRA_IO_PAD_UART,         14,   UINT_MAX, "uart"),      \
-       _pad(TEGRA_IO_PAD_USB0,         9,    UINT_MAX, "usb0"),      \
-       _pad(TEGRA_IO_PAD_USB1,         10,   UINT_MAX, "usb1"),      \
-       _pad(TEGRA_IO_PAD_USB2,         11,   UINT_MAX, "usb2"),      \
-       _pad(TEGRA_IO_PAD_USB_BIAS,     12,   UINT_MAX, "usb_bias")
-
 static const struct tegra_io_pad_soc tegra124_io_pads[] = {
-       TEGRA124_IO_PAD_TABLE(TEGRA_IO_PAD)
+       TEGRA_IO_PAD(TEGRA_IO_PAD_AUDIO, 17, 0x1b8, 0x1bc, UINT_MAX, "audio"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_BB, 15, 0x1b8, 0x1bc, UINT_MAX, "bb"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_CAM, 4, 0x1c0, 0x1c4, UINT_MAX, "cam"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_COMP, 22, 0x1b8, 0x1bc, UINT_MAX, "comp"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_CSIA, 0, 0x1b8, 0x1bc, UINT_MAX, "csia"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_CSIB, 1, 0x1b8, 0x1bc, UINT_MAX, "csib"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_CSIE, 12, 0x1c0, 0x1c4, UINT_MAX, "csie"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_DSI, 2, 0x1b8, 0x1bc, UINT_MAX, "dsi"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_DSIB, 7, 0x1c0, 0x1c4, UINT_MAX, "dsib"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_DSIC, 8, 0x1c0, 0x1c4, UINT_MAX, "dsic"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_DSID, 9, 0x1c0, 0x1c4, UINT_MAX, "dsid"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_HDMI, 28, 0x1b8, 0x1bc, UINT_MAX, "hdmi"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_HSIC, 19, 0x1b8, 0x1bc, UINT_MAX, "hsic"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_HV, 6, 0x1c0, 0x1c4, UINT_MAX, "hv"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_LVDS, 25, 0x1c0, 0x1c4, UINT_MAX, "lvds"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_MIPI_BIAS, 3, 0x1b8, 0x1bc, UINT_MAX, "mipi-bias"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_NAND, 13, 0x1b8, 0x1bc, UINT_MAX, "nand"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_PEX_BIAS, 4, 0x1b8, 0x1bc, UINT_MAX, "pex-bias"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_PEX_CLK1, 5, 0x1b8, 0x1bc, UINT_MAX, "pex-clk1"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_PEX_CLK2, 6, 0x1b8, 0x1bc, UINT_MAX, "pex-clk2"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_PEX_CNTRL, 0, 0x1c0, 0x1c4, UINT_MAX, "pex-cntrl"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_SDMMC1, 1, 0x1c0, 0x1c4, UINT_MAX, "sdmmc1"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_SDMMC3, 2, 0x1c0, 0x1c4, UINT_MAX, "sdmmc3"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_SDMMC4, 3, 0x1c0, 0x1c4, UINT_MAX, "sdmmc4"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_SYS_DDC, 26, 0x1c0, 0x1c4, UINT_MAX, "sys_ddc"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_UART, 14, 0x1b8, 0x1bc, UINT_MAX, "uart"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_USB0, 9, 0x1b8, 0x1bc, UINT_MAX, "usb0"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_USB1, 10, 0x1b8, 0x1bc, UINT_MAX, "usb1"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_USB2, 11, 0x1b8, 0x1bc, UINT_MAX, "usb2"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_USB_BIAS, 12, 0x1b8, 0x1bc, UINT_MAX, "usb_bias"),
 };
 
 static const struct pinctrl_pin_desc tegra124_pin_descs[] = {
-       TEGRA124_IO_PAD_TABLE(TEGRA_IO_PIN_DESC)
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_AUDIO, "audio"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_BB, "bb"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_CAM, "cam"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_COMP, "comp"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_CSIA, "csia"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_CSIB, "csib"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_CSIE, "csie"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_DSI, "dsi"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_DSIB, "dsib"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_DSIC, "dsic"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_DSID, "dsid"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_HDMI, "hdmi"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_HSIC, "hsic"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_HV, "hv"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_LVDS, "lvds"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_MIPI_BIAS, "mipi-bias"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_NAND, "nand"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_PEX_BIAS, "pex-bias"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_PEX_CLK1, "pex-clk1"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_PEX_CLK2, "pex-clk2"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_PEX_CNTRL, "pex-cntrl"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_SDMMC1, "sdmmc1"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_SDMMC3, "sdmmc3"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_SDMMC4, "sdmmc4"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_SYS_DDC, "sys_ddc"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_UART, "uart"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_USB0, "usb0"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_USB1, "usb1"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_USB2, "usb2"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_USB_BIAS, "usb_bias"),
 };
 
 static const struct tegra_pmc_soc tegra124_pmc_soc = {
@@ -3415,53 +3431,86 @@ static const u8 tegra210_cpu_powergates[] = {
        TEGRA_POWERGATE_CPU3,
 };
 
-#define TEGRA210_IO_PAD_TABLE(_pad)                                        \
-       /*   .id                        .dpd     .voltage  .name */        \
-       _pad(TEGRA_IO_PAD_AUDIO,       17,       5,        "audio"),       \
-       _pad(TEGRA_IO_PAD_AUDIO_HV,    61,       18,       "audio-hv"),    \
-       _pad(TEGRA_IO_PAD_CAM,         36,       10,       "cam"),         \
-       _pad(TEGRA_IO_PAD_CSIA,        0,        UINT_MAX, "csia"),        \
-       _pad(TEGRA_IO_PAD_CSIB,        1,        UINT_MAX, "csib"),        \
-       _pad(TEGRA_IO_PAD_CSIC,        42,       UINT_MAX, "csic"),        \
-       _pad(TEGRA_IO_PAD_CSID,        43,       UINT_MAX, "csid"),        \
-       _pad(TEGRA_IO_PAD_CSIE,        44,       UINT_MAX, "csie"),        \
-       _pad(TEGRA_IO_PAD_CSIF,        45,       UINT_MAX, "csif"),        \
-       _pad(TEGRA_IO_PAD_DBG,         25,       19,       "dbg"),         \
-       _pad(TEGRA_IO_PAD_DEBUG_NONAO, 26,       UINT_MAX, "debug-nonao"), \
-       _pad(TEGRA_IO_PAD_DMIC,        50,       20,       "dmic"),        \
-       _pad(TEGRA_IO_PAD_DP,          51,       UINT_MAX, "dp"),          \
-       _pad(TEGRA_IO_PAD_DSI,         2,        UINT_MAX, "dsi"),         \
-       _pad(TEGRA_IO_PAD_DSIB,        39,       UINT_MAX, "dsib"),        \
-       _pad(TEGRA_IO_PAD_DSIC,        40,       UINT_MAX, "dsic"),        \
-       _pad(TEGRA_IO_PAD_DSID,        41,       UINT_MAX, "dsid"),        \
-       _pad(TEGRA_IO_PAD_EMMC,        35,       UINT_MAX, "emmc"),        \
-       _pad(TEGRA_IO_PAD_EMMC2,       37,       UINT_MAX, "emmc2"),       \
-       _pad(TEGRA_IO_PAD_GPIO,        27,       21,       "gpio"),        \
-       _pad(TEGRA_IO_PAD_HDMI,        28,       UINT_MAX, "hdmi"),        \
-       _pad(TEGRA_IO_PAD_HSIC,        19,       UINT_MAX, "hsic"),        \
-       _pad(TEGRA_IO_PAD_LVDS,        57,       UINT_MAX, "lvds"),        \
-       _pad(TEGRA_IO_PAD_MIPI_BIAS,   3,        UINT_MAX, "mipi-bias"),   \
-       _pad(TEGRA_IO_PAD_PEX_BIAS,    4,        UINT_MAX, "pex-bias"),    \
-       _pad(TEGRA_IO_PAD_PEX_CLK1,    5,        UINT_MAX, "pex-clk1"),    \
-       _pad(TEGRA_IO_PAD_PEX_CLK2,    6,        UINT_MAX, "pex-clk2"),    \
-       _pad(TEGRA_IO_PAD_PEX_CNTRL,   UINT_MAX, 11,       "pex-cntrl"),   \
-       _pad(TEGRA_IO_PAD_SDMMC1,      33,       12,       "sdmmc1"),      \
-       _pad(TEGRA_IO_PAD_SDMMC3,      34,       13,       "sdmmc3"),      \
-       _pad(TEGRA_IO_PAD_SPI,         46,       22,       "spi"),         \
-       _pad(TEGRA_IO_PAD_SPI_HV,      47,       23,       "spi-hv"),      \
-       _pad(TEGRA_IO_PAD_UART,        14,       2,        "uart"),        \
-       _pad(TEGRA_IO_PAD_USB0,        9,        UINT_MAX, "usb0"),        \
-       _pad(TEGRA_IO_PAD_USB1,        10,       UINT_MAX, "usb1"),        \
-       _pad(TEGRA_IO_PAD_USB2,        11,       UINT_MAX, "usb2"),        \
-       _pad(TEGRA_IO_PAD_USB3,        18,       UINT_MAX, "usb3"),        \
-       _pad(TEGRA_IO_PAD_USB_BIAS,    12,       UINT_MAX, "usb-bias")
-
 static const struct tegra_io_pad_soc tegra210_io_pads[] = {
-       TEGRA210_IO_PAD_TABLE(TEGRA_IO_PAD)
+       TEGRA_IO_PAD(TEGRA_IO_PAD_AUDIO, 17, 0x1b8, 0x1bc, 5, "audio"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_AUDIO_HV, 29, 0x1c0, 0x1c4, 18, "audio-hv"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_CAM, 4, 0x1c0, 0x1c4, 10, "cam"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_CSIA, 0, 0x1b8, 0x1bc, UINT_MAX, "csia"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_CSIB, 1, 0x1b8, 0x1bc, UINT_MAX, "csib"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_CSIC, 10, 0x1c0, 0x1c4, UINT_MAX, "csic"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_CSID, 11, 0x1c0, 0x1c4, UINT_MAX, "csid"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_CSIE, 12, 0x1c0, 0x1c4, UINT_MAX, "csie"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_CSIF, 13, 0x1c0, 0x1c4, UINT_MAX, "csif"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_DBG, 25, 0x1b8, 0x1bc, 19, "dbg"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_DEBUG_NONAO, 26, 0x1b8, 0x1bc, UINT_MAX, "debug-nonao"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_DMIC, 18, 0x1c0, 0x1c4, 20, "dmic"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_DP, 19, 0x1c0, 0x1c4, UINT_MAX, "dp"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_DSI, 2, 0x1b8, 0x1bc, UINT_MAX, "dsi"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_DSIB, 7, 0x1c0, 0x1c4, UINT_MAX, "dsib"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_DSIC, 8, 0x1c0, 0x1c4, UINT_MAX, "dsic"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_DSID, 9, 0x1c0, 0x1c4, UINT_MAX, "dsid"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_EMMC, 3, 0x1c0, 0x1c4, UINT_MAX, "emmc"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_EMMC2, 5, 0x1c0, 0x1c4, UINT_MAX, "emmc2"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_GPIO, 27, 0x1b8, 0x1bc, 21, "gpio"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_HDMI, 28, 0x1b8, 0x1bc, UINT_MAX, "hdmi"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_HSIC, 19, 0x1b8, 0x1bc, UINT_MAX, "hsic"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_LVDS, 25, 0x1c0, 0x1c4, UINT_MAX, "lvds"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_MIPI_BIAS, 3, 0x1b8, 0x1bc, UINT_MAX, "mipi-bias"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_PEX_BIAS, 4, 0x1b8, 0x1bc, UINT_MAX, "pex-bias"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_PEX_CLK1, 5, 0x1b8, 0x1bc, UINT_MAX, "pex-clk1"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_PEX_CLK2, 6, 0x1b8, 0x1bc, UINT_MAX, "pex-clk2"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_PEX_CNTRL, UINT_MAX, UINT_MAX, UINT_MAX, 11, "pex-cntrl"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_SDMMC1, 1, 0x1c0, 0x1c4, 12, "sdmmc1"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_SDMMC3, 2, 0x1c0, 0x1c4, 13, "sdmmc3"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_SPI, 14, 0x1c0, 0x1c4, 22, "spi"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_SPI_HV, 15, 0x1c0, 0x1c4, 23, "spi-hv"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_UART, 14, 0x1b8, 0x1bc, 2, "uart"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_USB0, 9, 0x1b8, 0x1bc, UINT_MAX, "usb0"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_USB1, 10, 0x1b8, 0x1bc, UINT_MAX, "usb1"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_USB2, 11, 0x1b8, 0x1bc, UINT_MAX, "usb2"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_USB3, 18, 0x1b8, 0x1bc, UINT_MAX, "usb3"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_USB_BIAS, 12, 0x1b8, 0x1bc, UINT_MAX, "usb-bias"),
 };
 
 static const struct pinctrl_pin_desc tegra210_pin_descs[] = {
-       TEGRA210_IO_PAD_TABLE(TEGRA_IO_PIN_DESC)
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_AUDIO, "audio"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_AUDIO_HV, "audio-hv"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_CAM, "cam"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_CSIA, "csia"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_CSIB, "csib"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_CSIC, "csic"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_CSID, "csid"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_CSIE, "csie"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_CSIF, "csif"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_DBG, "dbg"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_DEBUG_NONAO, "debug-nonao"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_DMIC, "dmic"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_DP, "dp"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_DSI, "dsi"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_DSIB, "dsib"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_DSIC, "dsic"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_DSID, "dsid"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_EMMC, "emmc"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_EMMC2, "emmc2"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_GPIO, "gpio"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_HDMI, "hdmi"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_HSIC, "hsic"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_LVDS, "lvds"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_MIPI_BIAS, "mipi-bias"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_PEX_BIAS, "pex-bias"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_PEX_CLK1, "pex-clk1"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_PEX_CLK2, "pex-clk2"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_PEX_CNTRL, "pex-cntrl"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_SDMMC1, "sdmmc1"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_SDMMC3, "sdmmc3"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_SPI, "spi"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_SPI_HV, "spi-hv"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_UART, "uart"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_USB0, "usb0"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_USB1, "usb1"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_USB2, "usb2"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_USB3, "usb3"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_USB_BIAS, "usb-bias"),
 };
 
 static const char * const tegra210_reset_sources[] = {
@@ -3511,61 +3560,90 @@ static const struct tegra_pmc_soc tegra210_pmc_soc = {
        .has_usb_sleepwalk = true,
 };
 
-#define TEGRA186_IO_PAD_TABLE(_pad)                                          \
-       /*   .id                        .dpd      .voltage  .name */         \
-       _pad(TEGRA_IO_PAD_CSIA,         0,        UINT_MAX, "csia"),         \
-       _pad(TEGRA_IO_PAD_CSIB,         1,        UINT_MAX, "csib"),         \
-       _pad(TEGRA_IO_PAD_DSI,          2,        UINT_MAX, "dsi"),          \
-       _pad(TEGRA_IO_PAD_MIPI_BIAS,    3,        UINT_MAX, "mipi-bias"),    \
-       _pad(TEGRA_IO_PAD_PEX_CLK_BIAS, 4,        UINT_MAX, "pex-clk-bias"), \
-       _pad(TEGRA_IO_PAD_PEX_CLK3,     5,        UINT_MAX, "pex-clk3"),     \
-       _pad(TEGRA_IO_PAD_PEX_CLK2,     6,        UINT_MAX, "pex-clk2"),     \
-       _pad(TEGRA_IO_PAD_PEX_CLK1,     7,        UINT_MAX, "pex-clk1"),     \
-       _pad(TEGRA_IO_PAD_USB0,         9,        UINT_MAX, "usb0"),         \
-       _pad(TEGRA_IO_PAD_USB1,         10,       UINT_MAX, "usb1"),         \
-       _pad(TEGRA_IO_PAD_USB2,         11,       UINT_MAX, "usb2"),         \
-       _pad(TEGRA_IO_PAD_USB_BIAS,     12,       UINT_MAX, "usb-bias"),     \
-       _pad(TEGRA_IO_PAD_UART,         14,       UINT_MAX, "uart"),         \
-       _pad(TEGRA_IO_PAD_AUDIO,        17,       UINT_MAX, "audio"),        \
-       _pad(TEGRA_IO_PAD_HSIC,         19,       UINT_MAX, "hsic"),         \
-       _pad(TEGRA_IO_PAD_DBG,          25,       UINT_MAX, "dbg"),          \
-       _pad(TEGRA_IO_PAD_HDMI_DP0,     28,       UINT_MAX, "hdmi-dp0"),     \
-       _pad(TEGRA_IO_PAD_HDMI_DP1,     29,       UINT_MAX, "hdmi-dp1"),     \
-       _pad(TEGRA_IO_PAD_PEX_CNTRL,    32,       UINT_MAX, "pex-cntrl"),    \
-       _pad(TEGRA_IO_PAD_SDMMC2_HV,    34,       5,        "sdmmc2-hv"),    \
-       _pad(TEGRA_IO_PAD_SDMMC4,       36,       UINT_MAX, "sdmmc4"),       \
-       _pad(TEGRA_IO_PAD_CAM,          38,       UINT_MAX, "cam"),          \
-       _pad(TEGRA_IO_PAD_DSIB,         40,       UINT_MAX, "dsib"),         \
-       _pad(TEGRA_IO_PAD_DSIC,         41,       UINT_MAX, "dsic"),         \
-       _pad(TEGRA_IO_PAD_DSID,         42,       UINT_MAX, "dsid"),         \
-       _pad(TEGRA_IO_PAD_CSIC,         43,       UINT_MAX, "csic"),         \
-       _pad(TEGRA_IO_PAD_CSID,         44,       UINT_MAX, "csid"),         \
-       _pad(TEGRA_IO_PAD_CSIE,         45,       UINT_MAX, "csie"),         \
-       _pad(TEGRA_IO_PAD_CSIF,         46,       UINT_MAX, "csif"),         \
-       _pad(TEGRA_IO_PAD_SPI,          47,       UINT_MAX, "spi"),          \
-       _pad(TEGRA_IO_PAD_UFS,          49,       UINT_MAX, "ufs"),          \
-       _pad(TEGRA_IO_PAD_DMIC_HV,      52,       2,        "dmic-hv"),      \
-       _pad(TEGRA_IO_PAD_EDP,          53,       UINT_MAX, "edp"),          \
-       _pad(TEGRA_IO_PAD_SDMMC1_HV,    55,       4,        "sdmmc1-hv"),    \
-       _pad(TEGRA_IO_PAD_SDMMC3_HV,    56,       6,        "sdmmc3-hv"),    \
-       _pad(TEGRA_IO_PAD_CONN,         60,       UINT_MAX, "conn"),         \
-       _pad(TEGRA_IO_PAD_AUDIO_HV,     61,       1,        "audio-hv"),     \
-       _pad(TEGRA_IO_PAD_AO_HV,        UINT_MAX, 0,        "ao-hv")
-
 static const struct tegra_io_pad_soc tegra186_io_pads[] = {
-       TEGRA186_IO_PAD_TABLE(TEGRA_IO_PAD)
+       TEGRA_IO_PAD(TEGRA_IO_PAD_CSIA, 0, 0x74, 0x78, UINT_MAX, "csia"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_CSIB, 1, 0x74, 0x78, UINT_MAX, "csib"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_DSI, 2, 0x74, 0x78, UINT_MAX, "dsi"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_MIPI_BIAS, 3, 0x74, 0x78, UINT_MAX, "mipi-bias"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_PEX_CLK_BIAS, 4, 0x74, 0x78, UINT_MAX, "pex-clk-bias"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_PEX_CLK3, 5, 0x74, 0x78, UINT_MAX, "pex-clk3"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_PEX_CLK2, 6, 0x74, 0x78, UINT_MAX, "pex-clk2"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_PEX_CLK1, 7, 0x74, 0x78, UINT_MAX, "pex-clk1"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_USB0, 9, 0x74, 0x78, UINT_MAX, "usb0"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_USB1, 10, 0x74, 0x78, UINT_MAX, "usb1"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_USB2, 11, 0x74, 0x78, UINT_MAX, "usb2"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_USB_BIAS, 12, 0x74, 0x78, UINT_MAX, "usb-bias"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_UART, 14, 0x74, 0x78, UINT_MAX, "uart"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_AUDIO, 17, 0x74, 0x78, UINT_MAX, "audio"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_HSIC, 19, 0x74, 0x78, UINT_MAX, "hsic"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_DBG, 25, 0x74, 0x78, UINT_MAX, "dbg"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_HDMI_DP0, 28, 0x74, 0x78, UINT_MAX, "hdmi-dp0"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_HDMI_DP1, 29, 0x74, 0x78, UINT_MAX, "hdmi-dp1"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_PEX_CNTRL, 0, 0x7c, 0x80, UINT_MAX, "pex-cntrl"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_SDMMC2_HV, 2, 0x7c, 0x80, 5, "sdmmc2-hv"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_SDMMC4, 4, 0x7c, 0x80, UINT_MAX, "sdmmc4"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_CAM, 6, 0x7c, 0x80, UINT_MAX, "cam"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_DSIB, 8, 0x7c, 0x80, UINT_MAX, "dsib"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_DSIC, 9, 0x7c, 0x80, UINT_MAX, "dsic"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_DSID, 10, 0x7c, 0x80, UINT_MAX, "dsid"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_CSIC, 11, 0x7c, 0x80, UINT_MAX, "csic"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_CSID, 12, 0x7c, 0x80, UINT_MAX, "csid"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_CSIE, 13, 0x7c, 0x80, UINT_MAX, "csie"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_CSIF, 14, 0x7c, 0x80, UINT_MAX, "csif"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_SPI, 15, 0x7c, 0x80, UINT_MAX, "spi"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_UFS, 17, 0x7c, 0x80, UINT_MAX, "ufs"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_DMIC_HV, 20, 0x7c, 0x80, 2, "dmic-hv"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_EDP, 21, 0x7c, 0x80, UINT_MAX, "edp"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_SDMMC1_HV, 23, 0x7c, 0x80, 4, "sdmmc1-hv"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_SDMMC3_HV, 24, 0x7c, 0x80, 6, "sdmmc3-hv"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_CONN, 28, 0x7c, 0x80, UINT_MAX, "conn"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_AUDIO_HV, 29, 0x7c, 0x80, 1, "audio-hv"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_AO_HV, UINT_MAX, UINT_MAX, UINT_MAX, 0, "ao-hv"),
 };
 
 static const struct pinctrl_pin_desc tegra186_pin_descs[] = {
-       TEGRA186_IO_PAD_TABLE(TEGRA_IO_PIN_DESC)
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_CSIA, "csia"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_CSIB, "csib"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_DSI, "dsi"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_MIPI_BIAS, "mipi-bias"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_PEX_CLK_BIAS, "pex-clk-bias"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_PEX_CLK3, "pex-clk3"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_PEX_CLK2, "pex-clk2"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_PEX_CLK1, "pex-clk1"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_USB0, "usb0"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_USB1, "usb1"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_USB2, "usb2"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_USB_BIAS, "usb-bias"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_UART, "uart"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_AUDIO, "audio"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_HSIC, "hsic"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_DBG, "dbg"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_HDMI_DP0, "hdmi-dp0"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_HDMI_DP1, "hdmi-dp1"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_PEX_CNTRL, "pex-cntrl"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_SDMMC2_HV, "sdmmc2-hv"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_SDMMC4, "sdmmc4"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_CAM, "cam"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_DSIB, "dsib"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_DSIC, "dsic"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_DSID, "dsid"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_CSIC, "csic"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_CSID, "csid"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_CSIE, "csie"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_CSIF, "csif"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_SPI, "spi"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_UFS, "ufs"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_DMIC_HV, "dmic-hv"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_EDP, "edp"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_SDMMC1_HV, "sdmmc1-hv"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_SDMMC3_HV, "sdmmc3-hv"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_CONN, "conn"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_AUDIO_HV, "audio-hv"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_AO_HV, "ao-hv"),
 };
 
 static const struct tegra_pmc_regs tegra186_pmc_regs = {
        .scratch0 = 0x2000,
-       .dpd_req = 0x74,
-       .dpd_status = 0x78,
-       .dpd2_req = 0x7c,
-       .dpd2_status = 0x80,
        .rst_status = 0x70,
        .rst_source_shift = 0x2,
        .rst_source_mask = 0x3c,
@@ -3668,72 +3746,112 @@ static const struct tegra_pmc_soc tegra186_pmc_soc = {
        .has_usb_sleepwalk = false,
 };
 
-#define TEGRA194_IO_PAD_TABLE(_pad)                                              \
-       /*   .id                          .dpd      .voltage  .name */           \
-       _pad(TEGRA_IO_PAD_CSIA,           0,        UINT_MAX, "csia"),           \
-       _pad(TEGRA_IO_PAD_CSIB,           1,        UINT_MAX, "csib"),           \
-       _pad(TEGRA_IO_PAD_MIPI_BIAS,      3,        UINT_MAX, "mipi-bias"),      \
-       _pad(TEGRA_IO_PAD_PEX_CLK_BIAS,   4,        UINT_MAX, "pex-clk-bias"),   \
-       _pad(TEGRA_IO_PAD_PEX_CLK3,       5,        UINT_MAX, "pex-clk3"),       \
-       _pad(TEGRA_IO_PAD_PEX_CLK2,       6,        UINT_MAX, "pex-clk2"),       \
-       _pad(TEGRA_IO_PAD_PEX_CLK1,       7,        UINT_MAX, "pex-clk1"),       \
-       _pad(TEGRA_IO_PAD_EQOS,           8,        UINT_MAX, "eqos"),           \
-       _pad(TEGRA_IO_PAD_PEX_CLK_2_BIAS, 9,        UINT_MAX, "pex-clk-2-bias"), \
-       _pad(TEGRA_IO_PAD_PEX_CLK_2,      10,       UINT_MAX, "pex-clk-2"),      \
-       _pad(TEGRA_IO_PAD_DAP3,           11,       UINT_MAX, "dap3"),           \
-       _pad(TEGRA_IO_PAD_DAP5,           12,       UINT_MAX, "dap5"),           \
-       _pad(TEGRA_IO_PAD_UART,           14,       UINT_MAX, "uart"),           \
-       _pad(TEGRA_IO_PAD_PWR_CTL,        15,       UINT_MAX, "pwr-ctl"),        \
-       _pad(TEGRA_IO_PAD_SOC_GPIO53,     16,       UINT_MAX, "soc-gpio53"),     \
-       _pad(TEGRA_IO_PAD_AUDIO,          17,       UINT_MAX, "audio"),          \
-       _pad(TEGRA_IO_PAD_GP_PWM2,        18,       UINT_MAX, "gp-pwm2"),        \
-       _pad(TEGRA_IO_PAD_GP_PWM3,        19,       UINT_MAX, "gp-pwm3"),        \
-       _pad(TEGRA_IO_PAD_SOC_GPIO12,     20,       UINT_MAX, "soc-gpio12"),     \
-       _pad(TEGRA_IO_PAD_SOC_GPIO13,     21,       UINT_MAX, "soc-gpio13"),     \
-       _pad(TEGRA_IO_PAD_SOC_GPIO10,     22,       UINT_MAX, "soc-gpio10"),     \
-       _pad(TEGRA_IO_PAD_UART4,          23,       UINT_MAX, "uart4"),          \
-       _pad(TEGRA_IO_PAD_UART5,          24,       UINT_MAX, "uart5"),          \
-       _pad(TEGRA_IO_PAD_DBG,            25,       UINT_MAX, "dbg"),            \
-       _pad(TEGRA_IO_PAD_HDMI_DP3,       26,       UINT_MAX, "hdmi-dp3"),       \
-       _pad(TEGRA_IO_PAD_HDMI_DP2,       27,       UINT_MAX, "hdmi-dp2"),       \
-       _pad(TEGRA_IO_PAD_HDMI_DP0,       28,       UINT_MAX, "hdmi-dp0"),       \
-       _pad(TEGRA_IO_PAD_HDMI_DP1,       29,       UINT_MAX, "hdmi-dp1"),       \
-       _pad(TEGRA_IO_PAD_PEX_CNTRL,      32,       UINT_MAX, "pex-cntrl"),      \
-       _pad(TEGRA_IO_PAD_PEX_CTL2,       33,       UINT_MAX, "pex-ctl2"),       \
-       _pad(TEGRA_IO_PAD_PEX_L0_RST_N,   34,       UINT_MAX, "pex-l0-rst"),     \
-       _pad(TEGRA_IO_PAD_PEX_L1_RST_N,   35,       UINT_MAX, "pex-l1-rst"),     \
-       _pad(TEGRA_IO_PAD_SDMMC4,         36,       UINT_MAX, "sdmmc4"),         \
-       _pad(TEGRA_IO_PAD_PEX_L5_RST_N,   37,       UINT_MAX, "pex-l5-rst"),     \
-       _pad(TEGRA_IO_PAD_CAM,            38,       UINT_MAX, "cam"),            \
-       _pad(TEGRA_IO_PAD_CSIC,           43,       UINT_MAX, "csic"),           \
-       _pad(TEGRA_IO_PAD_CSID,           44,       UINT_MAX, "csid"),           \
-       _pad(TEGRA_IO_PAD_CSIE,           45,       UINT_MAX, "csie"),           \
-       _pad(TEGRA_IO_PAD_CSIF,           46,       UINT_MAX, "csif"),           \
-       _pad(TEGRA_IO_PAD_SPI,            47,       UINT_MAX, "spi"),            \
-       _pad(TEGRA_IO_PAD_UFS,            49,       UINT_MAX, "ufs"),            \
-       _pad(TEGRA_IO_PAD_CSIG,           50,       UINT_MAX, "csig"),           \
-       _pad(TEGRA_IO_PAD_CSIH,           51,       UINT_MAX, "csih"),           \
-       _pad(TEGRA_IO_PAD_EDP,            53,       UINT_MAX, "edp"),            \
-       _pad(TEGRA_IO_PAD_SDMMC1_HV,      55,       4,        "sdmmc1-hv"),      \
-       _pad(TEGRA_IO_PAD_SDMMC3_HV,      56,       6,        "sdmmc3-hv"),      \
-       _pad(TEGRA_IO_PAD_CONN,           60,       UINT_MAX, "conn"),           \
-       _pad(TEGRA_IO_PAD_AUDIO_HV,       61,       1,        "audio-hv"),       \
-       _pad(TEGRA_IO_PAD_AO_HV,          UINT_MAX, 0,        "ao-hv")
-
 static const struct tegra_io_pad_soc tegra194_io_pads[] = {
-       TEGRA194_IO_PAD_TABLE(TEGRA_IO_PAD)
+       TEGRA_IO_PAD(TEGRA_IO_PAD_CSIA, 0, 0x74, 0x78, UINT_MAX, "csia"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_CSIB, 1, 0x74, 0x78, UINT_MAX, "csib"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_MIPI_BIAS, 3, 0x74, 0x78, UINT_MAX, "mipi-bias"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_PEX_CLK_BIAS, 4, 0x74, 0x78, UINT_MAX, "pex-clk-bias"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_PEX_CLK3, 5, 0x74, 0x78, UINT_MAX, "pex-clk3"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_PEX_CLK2, 6, 0x74, 0x78, UINT_MAX, "pex-clk2"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_PEX_CLK1, 7, 0x74, 0x78, UINT_MAX, "pex-clk1"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_EQOS, 8, 0x74, 0x78, UINT_MAX, "eqos"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_PEX_CLK_2_BIAS, 9, 0x74, 0x78, UINT_MAX, "pex-clk-2-bias"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_PEX_CLK_2, 10, 0x74, 0x78, UINT_MAX, "pex-clk-2"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_DAP3, 11, 0x74, 0x78, UINT_MAX, "dap3"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_DAP5, 12, 0x74, 0x78, UINT_MAX, "dap5"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_UART, 14, 0x74, 0x78, UINT_MAX, "uart"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_PWR_CTL, 15, 0x74, 0x78, UINT_MAX, "pwr-ctl"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_SOC_GPIO53, 16, 0x74, 0x78, UINT_MAX, "soc-gpio53"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_AUDIO, 17, 0x74, 0x78, UINT_MAX, "audio"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_GP_PWM2, 18, 0x74, 0x78, UINT_MAX, "gp-pwm2"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_GP_PWM3, 19, 0x74, 0x78, UINT_MAX, "gp-pwm3"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_SOC_GPIO12, 20, 0x74, 0x78, UINT_MAX, "soc-gpio12"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_SOC_GPIO13, 21, 0x74, 0x78, UINT_MAX, "soc-gpio13"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_SOC_GPIO10, 22, 0x74, 0x78, UINT_MAX, "soc-gpio10"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_UART4, 23, 0x74, 0x78, UINT_MAX, "uart4"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_UART5, 24, 0x74, 0x78, UINT_MAX, "uart5"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_DBG, 25, 0x74, 0x78, UINT_MAX, "dbg"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_HDMI_DP3, 26, 0x74, 0x78, UINT_MAX, "hdmi-dp3"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_HDMI_DP2, 27, 0x74, 0x78, UINT_MAX, "hdmi-dp2"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_HDMI_DP0, 28, 0x74, 0x78, UINT_MAX, "hdmi-dp0"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_HDMI_DP1, 29, 0x74, 0x78, UINT_MAX, "hdmi-dp1"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_PEX_CNTRL, 0, 0x7c, 0x80, UINT_MAX, "pex-cntrl"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_PEX_CTL2, 1, 0x7c, 0x80, UINT_MAX, "pex-ctl2"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_PEX_L0_RST, 2, 0x7c, 0x80, UINT_MAX, "pex-l0-rst"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_PEX_L1_RST, 3, 0x7c, 0x80, UINT_MAX, "pex-l1-rst"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_SDMMC4, 4, 0x7c, 0x80, UINT_MAX, "sdmmc4"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_PEX_L5_RST, 5, 0x7c, 0x80, UINT_MAX, "pex-l5-rst"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_CAM, 6, 0x7c, 0x80, UINT_MAX, "cam"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_CSIC, 11, 0x7c, 0x80, UINT_MAX, "csic"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_CSID, 12, 0x7c, 0x80, UINT_MAX, "csid"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_CSIE, 13, 0x7c, 0x80, UINT_MAX, "csie"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_CSIF, 14, 0x7c, 0x80, UINT_MAX, "csif"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_SPI, 15, 0x7c, 0x80, UINT_MAX, "spi"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_UFS, 17, 0x7c, 0x80, UINT_MAX, "ufs"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_CSIG, 18, 0x7c, 0x80, UINT_MAX, "csig"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_CSIH, 19, 0x7c, 0x80, UINT_MAX, "csih"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_EDP, 21, 0x7c, 0x80, UINT_MAX, "edp"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_SDMMC1_HV, 23, 0x7c, 0x80, 4, "sdmmc1-hv"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_SDMMC3_HV, 24, 0x7c, 0x80, 6, "sdmmc3-hv"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_CONN, 28, 0x7c, 0x80, UINT_MAX, "conn"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_AUDIO_HV, 29, 0x7c, 0x80, 1, "audio-hv"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_AO_HV, UINT_MAX, UINT_MAX, UINT_MAX, 0, "ao-hv"),
 };
 
 static const struct pinctrl_pin_desc tegra194_pin_descs[] = {
-       TEGRA194_IO_PAD_TABLE(TEGRA_IO_PIN_DESC)
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_CSIA, "csia"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_CSIB, "csib"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_MIPI_BIAS, "mipi-bias"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_PEX_CLK_BIAS, "pex-clk-bias"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_PEX_CLK3, "pex-clk3"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_PEX_CLK2, "pex-clk2"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_PEX_CLK1, "pex-clk1"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_EQOS, "eqos"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_PEX_CLK_2_BIAS, "pex-clk-2-bias"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_PEX_CLK_2, "pex-clk-2"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_DAP3, "dap3"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_DAP5, "dap5"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_UART, "uart"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_PWR_CTL, "pwr-ctl"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_SOC_GPIO53, "soc-gpio53"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_AUDIO, "audio"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_GP_PWM2, "gp-pwm2"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_GP_PWM3, "gp-pwm3"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_SOC_GPIO12, "soc-gpio12"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_SOC_GPIO13, "soc-gpio13"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_SOC_GPIO10, "soc-gpio10"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_UART4, "uart4"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_UART5, "uart5"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_DBG, "dbg"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_HDMI_DP3, "hdmi-dp3"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_HDMI_DP2, "hdmi-dp2"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_HDMI_DP0, "hdmi-dp0"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_HDMI_DP1, "hdmi-dp1"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_PEX_CNTRL, "pex-cntrl"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_PEX_CTL2, "pex-ctl2"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_PEX_L0_RST, "pex-l0-rst"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_PEX_L1_RST, "pex-l1-rst"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_SDMMC4, "sdmmc4"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_PEX_L5_RST, "pex-l5-rst"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_CAM, "cam"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_CSIC, "csic"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_CSID, "csid"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_CSIE, "csie"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_CSIF, "csif"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_SPI, "spi"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_UFS, "ufs"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_CSIG, "csig"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_CSIH, "csih"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_EDP, "edp"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_SDMMC1_HV, "sdmmc1-hv"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_SDMMC3_HV, "sdmmc3-hv"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_CONN, "conn"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_AUDIO_HV, "audio-hv"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_AO_HV, "ao-hv"),
 };
 
 static const struct tegra_pmc_regs tegra194_pmc_regs = {
        .scratch0 = 0x2000,
-       .dpd_req = 0x74,
-       .dpd_status = 0x78,
-       .dpd2_req = 0x7c,
-       .dpd2_status = 0x80,
        .rst_status = 0x70,
        .rst_source_shift = 0x2,
        .rst_source_mask = 0x7c,
@@ -3810,12 +3928,44 @@ static const struct tegra_pmc_soc tegra194_pmc_soc = {
        .has_usb_sleepwalk = false,
 };
 
+static const struct tegra_io_pad_soc tegra234_io_pads[] = {
+       TEGRA_IO_PAD(TEGRA_IO_PAD_CSIA, 0, 0xe0c0, 0xe0c4, UINT_MAX, "csia"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_CSIB, 1, 0xe0c0, 0xe0c4, UINT_MAX, "csib"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_HDMI_DP0, 0, 0xe0d0, 0xe0d4, UINT_MAX, "hdmi-dp0"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_CSIC, 2, 0xe0c0, 0xe0c4, UINT_MAX, "csic"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_CSID, 3, 0xe0c0, 0xe0c4, UINT_MAX, "csid"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_CSIE, 4, 0xe0c0, 0xe0c4, UINT_MAX, "csie"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_CSIF, 5, 0xe0c0, 0xe0c4, UINT_MAX, "csif"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_UFS, 0, 0xe064, 0xe068, UINT_MAX, "ufs"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_EDP, 1, 0xe05c, 0xe060, UINT_MAX, "edp"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_SDMMC1_HV, 0, 0xe054, 0xe058, 4, "sdmmc1-hv"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_SDMMC3_HV, UINT_MAX, UINT_MAX, UINT_MAX, 6, "sdmmc3-hv"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_AUDIO_HV, UINT_MAX, UINT_MAX, UINT_MAX, 1, "audio-hv"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_AO_HV, UINT_MAX, UINT_MAX, UINT_MAX, 0, "ao-hv"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_CSIG, 6, 0xe0c0, 0xe0c4, UINT_MAX, "csig"),
+       TEGRA_IO_PAD(TEGRA_IO_PAD_CSIH, 7, 0xe0c0, 0xe0c4, UINT_MAX, "csih"),
+};
+
+static const struct pinctrl_pin_desc tegra234_pin_descs[] = {
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_CSIA, "csia"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_CSIB, "csib"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_HDMI_DP0, "hdmi-dp0"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_CSIC, "csic"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_CSID, "csid"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_CSIE, "csie"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_CSIF, "csif"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_UFS, "ufs"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_EDP, "edp"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_SDMMC1_HV, "sdmmc1-hv"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_SDMMC3_HV, "sdmmc3-hv"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_AUDIO_HV, "audio-hv"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_AO_HV, "ao-hv"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_CSIG, "csig"),
+       TEGRA_IO_PIN_DESC(TEGRA_IO_PAD_CSIH, "csih"),
+};
+
 static const struct tegra_pmc_regs tegra234_pmc_regs = {
        .scratch0 = 0x2000,
-       .dpd_req = 0,
-       .dpd_status = 0,
-       .dpd2_req = 0,
-       .dpd2_status = 0,
        .rst_status = 0x70,
        .rst_source_shift = 0x2,
        .rst_source_mask = 0xfc,
@@ -3880,10 +4030,10 @@ static const struct tegra_pmc_soc tegra234_pmc_soc = {
        .needs_mbist_war = false,
        .has_impl_33v_pwr = true,
        .maybe_tz_only = false,
-       .num_io_pads = 0,
-       .io_pads = NULL,
-       .num_pin_descs = 0,
-       .pin_descs = NULL,
+       .num_io_pads = ARRAY_SIZE(tegra234_io_pads),
+       .io_pads = tegra234_io_pads,
+       .num_pin_descs = ARRAY_SIZE(tegra234_pin_descs),
+       .pin_descs = tegra234_pin_descs,
        .regs = &tegra234_pmc_regs,
        .init = NULL,
        .setup_irq_polarity = tegra186_pmc_setup_irq_polarity,
index d186bcc..aadb845 100644 (file)
@@ -118,9 +118,9 @@ enum tegra_io_pad {
        TEGRA_IO_PAD_PEX_CLK_2,
        TEGRA_IO_PAD_PEX_CNTRL,
        TEGRA_IO_PAD_PEX_CTL2,
-       TEGRA_IO_PAD_PEX_L0_RST_N,
-       TEGRA_IO_PAD_PEX_L1_RST_N,
-       TEGRA_IO_PAD_PEX_L5_RST_N,
+       TEGRA_IO_PAD_PEX_L0_RST,
+       TEGRA_IO_PAD_PEX_L1_RST,
+       TEGRA_IO_PAD_PEX_L5_RST,
        TEGRA_IO_PAD_PWR_CTL,
        TEGRA_IO_PAD_SDMMC1,
        TEGRA_IO_PAD_SDMMC1_HV,