.pin_to_pocctrl = r8a7790_pin_to_pocctrl,
.get_bias = rcar_pinmux_get_bias,
.set_bias = rcar_pinmux_set_bias,
+ .set_drive_strength = rcar_pinconf_set_drive_strength,
};
#ifdef CONFIG_PINCTRL_PFC_R8A7742
.pin_to_pocctrl = r8a7791_pin_to_pocctrl,
.get_bias = rcar_pinmux_get_bias,
.set_bias = rcar_pinmux_set_bias,
+ .set_drive_strength = rcar_pinconf_set_drive_strength,
};
#ifdef CONFIG_PINCTRL_PFC_R8A7743
static const struct sh_pfc_soc_operations r8a7792_pfc_ops = {
.get_bias = rcar_pinmux_get_bias,
.set_bias = rcar_pinmux_set_bias,
+ .set_drive_strength = rcar_pinconf_set_drive_strength,
};
const struct sh_pfc_soc_info r8a7792_pinmux_info = {
.pin_to_pocctrl = r8a7794_pin_to_pocctrl,
.get_bias = rcar_pinmux_get_bias,
.set_bias = rcar_pinmux_set_bias,
+ .set_drive_strength = rcar_pinconf_set_drive_strength,
};
#ifdef CONFIG_PINCTRL_PFC_R8A7745
.pin_to_pocctrl = r8a77951_pin_to_pocctrl,
.get_bias = rcar_pinmux_get_bias,
.set_bias = rcar_pinmux_set_bias,
+ .set_drive_strength = rcar_pinconf_set_drive_strength,
};
#ifdef CONFIG_PINCTRL_PFC_R8A774E1
.pin_to_pocctrl = r8a7796_pin_to_pocctrl,
.get_bias = rcar_pinmux_get_bias,
.set_bias = rcar_pinmux_set_bias,
+ .set_drive_strength = rcar_pinconf_set_drive_strength,
};
#ifdef CONFIG_PINCTRL_PFC_R8A774A1
.pin_to_pocctrl = r8a77965_pin_to_pocctrl,
.get_bias = rcar_pinmux_get_bias,
.set_bias = rcar_pinmux_set_bias,
+ .set_drive_strength = rcar_pinconf_set_drive_strength,
};
#ifdef CONFIG_PINCTRL_PFC_R8A774B1
.pin_to_pocctrl = r8a77970_pin_to_pocctrl,
.get_bias = rcar_pinmux_get_bias,
.set_bias = rcar_pinmux_set_bias,
+ .set_drive_strength = rcar_pinconf_set_drive_strength,
};
const struct sh_pfc_soc_info r8a77970_pinmux_info = {
.pin_to_pocctrl = r8a77980_pin_to_pocctrl,
.get_bias = rcar_pinmux_get_bias,
.set_bias = rcar_pinmux_set_bias,
+ .set_drive_strength = rcar_pinconf_set_drive_strength,
};
const struct sh_pfc_soc_info r8a77980_pinmux_info = {
.pin_to_pocctrl = r8a77990_pin_to_pocctrl,
.get_bias = rcar_pinmux_get_bias,
.set_bias = rcar_pinmux_set_bias,
+ .set_drive_strength = rcar_pinconf_set_drive_strength,
};
#ifdef CONFIG_PINCTRL_PFC_R8A774C0
.pin_to_pocctrl = r8a77995_pin_to_pocctrl,
.get_bias = r8a77995_pinmux_get_bias,
.set_bias = r8a77995_pinmux_set_bias,
+ .set_drive_strength = rcar_pinconf_set_drive_strength,
};
const struct sh_pfc_soc_info r8a77995_pinmux_info = {
.pin_to_pocctrl = r8a779a0_pin_to_pocctrl,
.get_bias = rcar_pinmux_get_bias,
.set_bias = rcar_pinmux_set_bias,
+ .set_drive_strength = rcar_pinconf_set_drive_strength,
};
const struct sh_pfc_soc_info r8a779a0_pinmux_info = {
.pin_to_pocctrl = r8a779f0_pin_to_pocctrl,
.get_bias = rcar_pinmux_get_bias,
.set_bias = rcar_pinmux_set_bias,
+ .set_drive_strength = rcar_pinconf_set_drive_strength,
};
const struct sh_pfc_soc_info r8a779f0_pinmux_info = {
.pin_to_pocctrl = r8a779g0_pin_to_pocctrl,
.get_bias = rcar_pinmux_get_bias,
.set_bias = rcar_pinmux_set_bias,
+ .set_drive_strength = rcar_pinconf_set_drive_strength,
};
const struct sh_pfc_soc_info r8a779g0_pinmux_info = {
.pin_to_pocctrl = r8a779h0_pin_to_pocctrl,
.get_bias = rcar_pinmux_get_bias,
.set_bias = rcar_pinmux_set_bias,
+ .set_drive_strength = rcar_pinconf_set_drive_strength,
};
const struct sh_pfc_soc_info r8a779h0_pinmux_info = {
return NULL;
}
-static int sh_pfc_pinconf_set_drive_strength(struct sh_pfc *pfc,
- unsigned int pin, u16 strength)
+int rcar_pinconf_set_drive_strength(struct sh_pfc *pfc,
+ unsigned int pin, u16 strength)
{
unsigned int offset;
unsigned int size;
break;
case PIN_CONFIG_DRIVE_STRENGTH:
- ret = sh_pfc_pinconf_set_drive_strength(pfc, _pin, arg);
+ if (!pfc->info->ops || !pfc->info->ops->set_drive_strength)
+ return -ENOTSUPP;
+
+ ret = pfc->info->ops->set_drive_strength(pfc, _pin, arg);
if (ret < 0)
return ret;
unsigned int bias);
int (*pin_to_pocctrl)(unsigned int pin, u32 *pocctrl);
int (*pin_to_portcr)(unsigned int pin);
+ int (*set_drive_strength)(struct sh_pfc *pfc, unsigned int pin,
+ u16 strength);
};
struct sh_pfc_soc_info {
unsigned int rcar_pinmux_get_bias(struct sh_pfc *pfc, unsigned int pin);
void rcar_pinmux_set_bias(struct sh_pfc *pfc, unsigned int pin,
unsigned int bias);
+int rcar_pinconf_set_drive_strength(struct sh_pfc *pfc,
+ unsigned int pin, u16 strength);
#endif /* __SH_PFC_H */