#define PMUX_DRVDN_MAX 127
 #define PMUX_DRVDN_NONE        -1
 
+#ifdef TEGRA_PMX_GRPS_HAVE_LPMD
 /* Defines a pin group cfg's low-power mode select */
 enum pmux_lpmd {
        PMUX_LPMD_X8 = 0,
        PMUX_LPMD_X,
        PMUX_LPMD_NONE = -1,
 };
+#endif
 
+#ifdef TEGRA_PMX_GRPS_HAVE_SCHMT
 /* Defines whether a pin group cfg's schmidt is enabled or not */
 enum pmux_schmt {
        PMUX_SCHMT_DISABLE = 0,
        PMUX_SCHMT_ENABLE = 1,
        PMUX_SCHMT_NONE = -1,
 };
+#endif
 
+#ifdef TEGRA_PMX_GRPS_HAVE_HSM
 /* Defines whether a pin group cfg's high-speed mode is enabled or not */
 enum pmux_hsm {
        PMUX_HSM_DISABLE = 0,
        PMUX_HSM_ENABLE = 1,
        PMUX_HSM_NONE = -1,
 };
+#endif
 
 /*
  * This defines the configuration for a pin group's pad control config
        u32 slwr:3;             /* rising edge slew          */
        u32 drvup:8;            /* pull-up drive strength    */
        u32 drvdn:8;            /* pull-down drive strength  */
+#ifdef TEGRA_PMX_GRPS_HAVE_LPMD
        u32 lpmd:3;             /* low-power mode selection  */
+#endif
+#ifdef TEGRA_PMX_GRPS_HAVE_SCHMT
        u32 schmt:2;            /* schmidt enable            */
+#endif
+#ifdef TEGRA_PMX_GRPS_HAVE_HSM
        u32 hsm:2;              /* high-speed mode enable    */
+#endif
 };
 
 /**
 
 #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
        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);
 
        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);
 
        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);
 
        return;
 }
+#endif
 
 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,