if (pctrl->data->flags & LPI_FLAG_SLEW_RATE_SAME_REG)
reg = pctrl->tlmm_base + LPI_TLMM_REG_OFFSET * group + LPI_GPIO_CFG_REG;
+ else if (g->slew_base_spare_1)
+ reg = pctrl->slew_base + LPI_SPARE_1_REG;
else
reg = pctrl->slew_base + LPI_SLEW_RATE_CTL_REG;
struct pinctrl_pin_desc;
#define LPI_SLEW_RATE_CTL_REG 0xa000
+#define LPI_SPARE_1_REG 0xc000
#define LPI_TLMM_REG_OFFSET 0x1000
#define LPI_SLEW_RATE_MAX 0x03
#define LPI_SLEW_BITS_SIZE 0x02
{ \
.pin = id, \
.slew_offset = soff, \
+ .slew_base_spare_1 = false, \
.funcs = (int[]){ \
LPI_MUX_gpio, \
LPI_MUX_##f1, \
{ \
.pin = id, \
.slew_offset = soff, \
+ .slew_base_spare_1 = false, \
.funcs = (int[]){ \
LPI_MUX_gpio, \
LPI_MUX_##f1, \
.pin_offset = poff, \
}
+#define LPI_PINGROUP_SLEW_SPARE_1(id, soff, f1, f2, f3, f4) \
+ { \
+ .pin = id, \
+ .slew_offset = soff, \
+ .slew_base_spare_1 = true, \
+ .funcs = (int[]){ \
+ LPI_MUX_gpio, \
+ LPI_MUX_##f1, \
+ LPI_MUX_##f2, \
+ LPI_MUX_##f3, \
+ LPI_MUX_##f4, \
+ }, \
+ .nfuncs = 5, \
+ .pin_offset = 0, \
+ }
+
/*
* Slew rate control is done in the same register as rest of the
* pin configuration.
unsigned int *funcs;
unsigned int nfuncs;
unsigned int pin_offset;
+ bool slew_base_spare_1;
};
struct lpi_function {