|
@@ -352,19 +352,31 @@ void pinmux_config_pingrp_table(const struct pmux_pingrp_config *config,
|
|
|
#define pmux_drv_isvalid(drv) \
|
|
|
(((drv) >= PMUX_DRVUP_MIN) && ((drv) <= PMUX_DRVUP_MAX))
|
|
|
|
|
|
+#ifdef TEGRA_PMX_GRPS_HAVE_LPMD
|
|
|
#define pmux_lpmd_isvalid(lpm) \
|
|
|
(((lpm) >= PMUX_LPMD_X8) && ((lpm) <= PMUX_LPMD_X))
|
|
|
+#endif
|
|
|
|
|
|
+#ifdef TEGRA_PMX_GRPS_HAVE_SCHMT
|
|
|
#define pmux_schmt_isvalid(schmt) \
|
|
|
(((schmt) >= PMUX_SCHMT_DISABLE) && ((schmt) <= PMUX_SCHMT_ENABLE))
|
|
|
+#endif
|
|
|
|
|
|
+#ifdef TEGRA_PMX_GRPS_HAVE_HSM
|
|
|
#define pmux_hsm_isvalid(hsm) \
|
|
|
(((hsm) >= PMUX_HSM_DISABLE) && ((hsm) <= PMUX_HSM_ENABLE))
|
|
|
+#endif
|
|
|
|
|
|
+#ifdef TEGRA_PMX_GRPS_HAVE_HSM
|
|
|
#define HSM_SHIFT 2
|
|
|
+#endif
|
|
|
+#ifdef TEGRA_PMX_GRPS_HAVE_SCHMT
|
|
|
#define SCHMT_SHIFT 3
|
|
|
+#endif
|
|
|
+#ifdef TEGRA_PMX_GRPS_HAVE_LPMD
|
|
|
#define LPMD_SHIFT 4
|
|
|
#define LPMD_MASK (3 << LPMD_SHIFT)
|
|
|
+#endif
|
|
|
/*
|
|
|
* Note that the following DRV* and SLW* defines are accurate for many drive
|
|
|
* groups on many SoCs. We really need a per-group data structure to solve
|
|
@@ -473,6 +485,7 @@ static void pinmux_set_drvdn(enum pmux_drvgrp grp, int drvdn)
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+#ifdef TEGRA_PMX_GRPS_HAVE_LPMD
|
|
|
static void pinmux_set_lpmd(enum pmux_drvgrp grp, enum pmux_lpmd lpmd)
|
|
|
{
|
|
|
u32 *reg = DRV_REG(grp);
|
|
@@ -493,7 +506,9 @@ static void pinmux_set_lpmd(enum pmux_drvgrp grp, enum pmux_lpmd lpmd)
|
|
|
|
|
|
return;
|
|
|
}
|
|
|
+#endif
|
|
|
|
|
|
+#ifdef TEGRA_PMX_GRPS_HAVE_SCHMT
|
|
|
static void pinmux_set_schmt(enum pmux_drvgrp grp, enum pmux_schmt schmt)
|
|
|
{
|
|
|
u32 *reg = DRV_REG(grp);
|
|
@@ -516,7 +531,9 @@ static void pinmux_set_schmt(enum pmux_drvgrp grp, enum pmux_schmt schmt)
|
|
|
|
|
|
return;
|
|
|
}
|
|
|
+#endif
|
|
|
|
|
|
+#ifdef TEGRA_PMX_GRPS_HAVE_HSM
|
|
|
static void pinmux_set_hsm(enum pmux_drvgrp grp, enum pmux_hsm hsm)
|
|
|
{
|
|
|
u32 *reg = DRV_REG(grp);
|
|
@@ -539,6 +556,7 @@ static void pinmux_set_hsm(enum pmux_drvgrp grp, enum pmux_hsm hsm)
|
|
|
|
|
|
return;
|
|
|
}
|
|
|
+#endif
|
|
|
|
|
|
static void pinmux_config_drvgrp(const struct pmux_drvgrp_config *config)
|
|
|
{
|
|
@@ -548,9 +566,15 @@ static void pinmux_config_drvgrp(const struct pmux_drvgrp_config *config)
|
|
|
pinmux_set_drvdn_slwr(grp, config->slwr);
|
|
|
pinmux_set_drvup(grp, config->drvup);
|
|
|
pinmux_set_drvdn(grp, config->drvdn);
|
|
|
+#ifdef TEGRA_PMX_GRPS_HAVE_LPMD
|
|
|
pinmux_set_lpmd(grp, config->lpmd);
|
|
|
+#endif
|
|
|
+#ifdef TEGRA_PMX_GRPS_HAVE_SCHMT
|
|
|
pinmux_set_schmt(grp, config->schmt);
|
|
|
+#endif
|
|
|
+#ifdef TEGRA_PMX_GRPS_HAVE_HSM
|
|
|
pinmux_set_hsm(grp, config->hsm);
|
|
|
+#endif
|
|
|
}
|
|
|
|
|
|
void pinmux_config_drvgrp_table(const struct pmux_drvgrp_config *config,
|