Message ID | 1564053416-32192-1-git-send-email-amelie.delaunay@st.com (mailing list archive) |
---|---|
State | Mainlined |
Commit | a502b343ebd0eab38f3cb33fbb84011847cf5aac |
Headers | show |
Series | pinctrl: stmfx: update pinconf settings | expand |
On Thu, Jul 25, 2019 at 1:16 PM Amelie Delaunay <amelie.delaunay@st.com> wrote: > From: Alexandre Torgue <alexandre.torgue@st.com> > > According to the following tab (coming from STMFX datasheet), updates > have to done in stmfx_pinconf_set function: > > -"type" has to be set when "bias" is configured as "pull-up or pull-down" > -PIN_CONFIG_DRIVE_PUSH_PULL should only be used when gpio is configured as > output. There is so no need to check direction. > > DIR | TYPE | PUPD | MFX GPIO configuration > ----|------|------|--------------------------------------------------- > 1 | 1 | 1 | OUTPUT open drain with internal pull-up resistor > ----|------|------|--------------------------------------------------- > 1 | 1 | 0 | OUTPUT open drain with internal pull-down resistor > ----|------|------|--------------------------------------------------- > 1 | 0 | 0/1 | OUTPUT push pull no pull > ----|------|------|--------------------------------------------------- > 0 | 1 | 1 | INPUT with internal pull-up resistor > ----|------|------|--------------------------------------------------- > 0 | 1 | 0 | INPUT with internal pull-down resistor > ----|------|------|--------------------------------------------------- > 0 | 0 | 1 | INPUT floating > ----|------|------|--------------------------------------------------- > 0 | 0 | 0 | analog (GPIO not used, default setting) > > Signed-off-by: Alexandre Torgue <alexandre.torgue@st.com> > Signed-off-by: Amelie Delaunay <amelie.delaunay@st.com> Patch applied. Yours, Linus Walleij
diff --git a/drivers/pinctrl/pinctrl-stmfx.c b/drivers/pinctrl/pinctrl-stmfx.c index d3332da..31b6e51 100644 --- a/drivers/pinctrl/pinctrl-stmfx.c +++ b/drivers/pinctrl/pinctrl-stmfx.c @@ -296,29 +296,29 @@ static int stmfx_pinconf_set(struct pinctrl_dev *pctldev, unsigned int pin, switch (param) { case PIN_CONFIG_BIAS_PULL_PIN_DEFAULT: case PIN_CONFIG_BIAS_DISABLE: + case PIN_CONFIG_DRIVE_PUSH_PULL: + ret = stmfx_pinconf_set_type(pctl, pin, 0); + if (ret) + return ret; + break; case PIN_CONFIG_BIAS_PULL_DOWN: + ret = stmfx_pinconf_set_type(pctl, pin, 1); + if (ret) + return ret; ret = stmfx_pinconf_set_pupd(pctl, pin, 0); if (ret) return ret; break; case PIN_CONFIG_BIAS_PULL_UP: - ret = stmfx_pinconf_set_pupd(pctl, pin, 1); + ret = stmfx_pinconf_set_type(pctl, pin, 1); if (ret) return ret; - break; - case PIN_CONFIG_DRIVE_OPEN_DRAIN: - if (!dir) - ret = stmfx_pinconf_set_type(pctl, pin, 1); - else - ret = stmfx_pinconf_set_type(pctl, pin, 0); + ret = stmfx_pinconf_set_pupd(pctl, pin, 1); if (ret) return ret; break; - case PIN_CONFIG_DRIVE_PUSH_PULL: - if (!dir) - ret = stmfx_pinconf_set_type(pctl, pin, 0); - else - ret = stmfx_pinconf_set_type(pctl, pin, 1); + case PIN_CONFIG_DRIVE_OPEN_DRAIN: + ret = stmfx_pinconf_set_type(pctl, pin, 1); if (ret) return ret; break;