(pfc->info->pins[gpio].enum_id != 0);
}
-static bool sh_pfc_gpio_is_function(struct sh_pfc *pfc, unsigned int gpio)
-{
- return (gpio >= pfc->info->nr_pins) &&
- (gpio < pfc->info->nr_pins + pfc->info->nr_func_gpios) &&
- (pfc->info->func_gpios[gpio - pfc->info->nr_pins].enum_id != 0);
-}
-
static unsigned long sh_pfc_read_raw_reg(void __iomem *mapped_reg,
unsigned long reg_width)
{
return -1;
}
-static int sh_pfc_gpio_to_enum(struct sh_pfc *pfc, unsigned gpio, int pos,
- pinmux_enum_t *enum_idp)
+static int sh_pfc_mark_to_enum(struct sh_pfc *pfc, pinmux_enum_t mark, int pos,
+ pinmux_enum_t *enum_idp)
{
pinmux_enum_t *data = pfc->info->gpio_data;
- pinmux_enum_t enum_id;
int k;
- if (sh_pfc_gpio_is_pin(pfc, gpio)) {
- enum_id = pfc->info->pins[gpio].enum_id;
- } else if (sh_pfc_gpio_is_function(pfc, gpio)) {
- unsigned int offset = gpio - pfc->info->nr_pins;
- enum_id = pfc->info->func_gpios[offset].enum_id;
- } else {
- pr_err("non data/mark enum_id for gpio %d\n", gpio);
- return -1;
- }
-
if (pos) {
*enum_idp = data[pos + 1];
return pos + 1;
}
for (k = 0; k < pfc->info->gpio_data_size; k++) {
- if (data[k] == enum_id) {
+ if (data[k] == mark) {
*enum_idp = data[k + 1];
return k + 1;
}
}
- pr_err("cannot locate data/mark enum_id for gpio %d\n", gpio);
+ pr_err("cannot locate data/mark enum_id for mark %d\n", mark);
return -1;
}
-int sh_pfc_config_gpio(struct sh_pfc *pfc, unsigned gpio, int pinmux_type,
- int cfg_mode)
+int sh_pfc_config_mux(struct sh_pfc *pfc, unsigned mark, int pinmux_type,
+ int cfg_mode)
{
struct pinmux_cfg_reg *cr = NULL;
pinmux_enum_t enum_id;
field = 0;
value = 0;
while (1) {
- pos = sh_pfc_gpio_to_enum(pfc, gpio, pos, &enum_id);
+ pos = sh_pfc_mark_to_enum(pfc, mark, pos, &enum_id);
if (pos <= 0)
goto out_err;