Message ID | 20210514163818.12178-1-dariobin@libero.it |
---|---|
State | Superseded |
Headers | show |
Series | pinctrl: single: config: enable the pin's input | expand |
* Dario Binacchi <dariobin@libero.it> [210514 16:38]: > It enables / disables the input buffer. As explained in the description > of 'enum pin_config_param' this does not affect the pin's ability to > drive output. > > Signed-off-by: Dario Binacchi <dariobin@libero.it> > --- > > drivers/pinctrl/pinctrl-single.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/pinctrl/pinctrl-single.c b/drivers/pinctrl/pinctrl-single.c > index 2c9c9835f375..4e7cdb9ee855 100644 > --- a/drivers/pinctrl/pinctrl-single.c > +++ b/drivers/pinctrl/pinctrl-single.c > @@ -534,6 +534,7 @@ static int pcs_pinconf_get(struct pinctrl_dev *pctldev, > case PIN_CONFIG_DRIVE_STRENGTH: > case PIN_CONFIG_SLEW_RATE: > case PIN_CONFIG_MODE_LOW_POWER: > + case PIN_CONFIG_INPUT_ENABLE: > default: > *config = data; > break; > @@ -572,6 +573,7 @@ static int pcs_pinconf_set(struct pinctrl_dev *pctldev, > case PIN_CONFIG_DRIVE_STRENGTH: > case PIN_CONFIG_SLEW_RATE: > case PIN_CONFIG_MODE_LOW_POWER: > + case PIN_CONFIG_INPUT_ENABLE: > shift = ffs(func->conf[i].mask) - 1; > data &= ~func->conf[i].mask; > data |= (arg << shift) & func->conf[i].mask; > @@ -918,6 +920,7 @@ static int pcs_parse_pinconf(struct pcs_device *pcs, struct device_node *np, > static const struct pcs_conf_type prop2[] = { > { "pinctrl-single,drive-strength", PIN_CONFIG_DRIVE_STRENGTH, }, > { "pinctrl-single,slew-rate", PIN_CONFIG_SLEW_RATE, }, > + { "pinctrl-single,input-enable", PIN_CONFIG_INPUT_ENABLE, }, > { "pinctrl-single,input-schmitt", PIN_CONFIG_INPUT_SCHMITT, }, > { "pinctrl-single,low-power-mode", PIN_CONFIG_MODE_LOW_POWER, }, > }; Looks OK to me if this works for Linus W. You need another patch to update the binding though: Documentation/devicetree/bindings/pinctrl/pincfg-node.yaml Or if there is such a patch floating around, I was not in Cc :) Regards, Tony
Hi Tony, > Il 18/05/2021 08:08 Tony Lindgren <tony@atomide.com> ha scritto: > > > * Dario Binacchi <dariobin@libero.it> [210514 16:38]: > > It enables / disables the input buffer. As explained in the description > > of 'enum pin_config_param' this does not affect the pin's ability to > > drive output. > > > > Signed-off-by: Dario Binacchi <dariobin@libero.it> > > --- > > > > drivers/pinctrl/pinctrl-single.c | 3 +++ > > 1 file changed, 3 insertions(+) > > > > diff --git a/drivers/pinctrl/pinctrl-single.c b/drivers/pinctrl/pinctrl-single.c > > index 2c9c9835f375..4e7cdb9ee855 100644 > > --- a/drivers/pinctrl/pinctrl-single.c > > +++ b/drivers/pinctrl/pinctrl-single.c > > @@ -534,6 +534,7 @@ static int pcs_pinconf_get(struct pinctrl_dev *pctldev, > > case PIN_CONFIG_DRIVE_STRENGTH: > > case PIN_CONFIG_SLEW_RATE: > > case PIN_CONFIG_MODE_LOW_POWER: > > + case PIN_CONFIG_INPUT_ENABLE: > > default: > > *config = data; > > break; > > @@ -572,6 +573,7 @@ static int pcs_pinconf_set(struct pinctrl_dev *pctldev, > > case PIN_CONFIG_DRIVE_STRENGTH: > > case PIN_CONFIG_SLEW_RATE: > > case PIN_CONFIG_MODE_LOW_POWER: > > + case PIN_CONFIG_INPUT_ENABLE: > > shift = ffs(func->conf[i].mask) - 1; > > data &= ~func->conf[i].mask; > > data |= (arg << shift) & func->conf[i].mask; > > @@ -918,6 +920,7 @@ static int pcs_parse_pinconf(struct pcs_device *pcs, struct device_node *np, > > static const struct pcs_conf_type prop2[] = { > > { "pinctrl-single,drive-strength", PIN_CONFIG_DRIVE_STRENGTH, }, > > { "pinctrl-single,slew-rate", PIN_CONFIG_SLEW_RATE, }, > > + { "pinctrl-single,input-enable", PIN_CONFIG_INPUT_ENABLE, }, > > { "pinctrl-single,input-schmitt", PIN_CONFIG_INPUT_SCHMITT, }, > > { "pinctrl-single,low-power-mode", PIN_CONFIG_MODE_LOW_POWER, }, > > }; > > Looks OK to me if this works for Linus W. You need another patch to > update the binding though: > > Documentation/devicetree/bindings/pinctrl/pincfg-node.yaml > > Or if there is such a patch floating around, I was not in Cc :) I'll add a documentation patch and CC you. Thanks and regards, Dario > > Regards, > > Tony
Hi Tony, > Il 18/05/2021 08:08 Tony Lindgren <tony@atomide.com> ha scritto: > > > * Dario Binacchi <dariobin@libero.it> [210514 16:38]: > > It enables / disables the input buffer. As explained in the description > > of 'enum pin_config_param' this does not affect the pin's ability to > > drive output. > > > > Signed-off-by: Dario Binacchi <dariobin@libero.it> > > --- > > > > drivers/pinctrl/pinctrl-single.c | 3 +++ > > 1 file changed, 3 insertions(+) > > > > diff --git a/drivers/pinctrl/pinctrl-single.c b/drivers/pinctrl/pinctrl-single.c > > index 2c9c9835f375..4e7cdb9ee855 100644 > > --- a/drivers/pinctrl/pinctrl-single.c > > +++ b/drivers/pinctrl/pinctrl-single.c > > @@ -534,6 +534,7 @@ static int pcs_pinconf_get(struct pinctrl_dev *pctldev, > > case PIN_CONFIG_DRIVE_STRENGTH: > > case PIN_CONFIG_SLEW_RATE: > > case PIN_CONFIG_MODE_LOW_POWER: > > + case PIN_CONFIG_INPUT_ENABLE: > > default: > > *config = data; > > break; > > @@ -572,6 +573,7 @@ static int pcs_pinconf_set(struct pinctrl_dev *pctldev, > > case PIN_CONFIG_DRIVE_STRENGTH: > > case PIN_CONFIG_SLEW_RATE: > > case PIN_CONFIG_MODE_LOW_POWER: > > + case PIN_CONFIG_INPUT_ENABLE: > > shift = ffs(func->conf[i].mask) - 1; > > data &= ~func->conf[i].mask; > > data |= (arg << shift) & func->conf[i].mask; > > @@ -918,6 +920,7 @@ static int pcs_parse_pinconf(struct pcs_device *pcs, struct device_node *np, > > static const struct pcs_conf_type prop2[] = { > > { "pinctrl-single,drive-strength", PIN_CONFIG_DRIVE_STRENGTH, }, > > { "pinctrl-single,slew-rate", PIN_CONFIG_SLEW_RATE, }, > > + { "pinctrl-single,input-enable", PIN_CONFIG_INPUT_ENABLE, }, > > { "pinctrl-single,input-schmitt", PIN_CONFIG_INPUT_SCHMITT, }, > > { "pinctrl-single,low-power-mode", PIN_CONFIG_MODE_LOW_POWER, }, > > }; > > Looks OK to me if this works for Linus W. You need another patch to > update the binding though: > > Documentation/devicetree/bindings/pinctrl/pincfg-node.yaml I think the Documentation/devicetree/bindings/pinctrl/pincfg-node.yaml file does not need to be updated. The 'input-enable' property is already documented. Thanks and regards, Dario > > Or if there is such a patch floating around, I was not in Cc :) > > Regards, > > Tony
diff --git a/drivers/pinctrl/pinctrl-single.c b/drivers/pinctrl/pinctrl-single.c index 2c9c9835f375..4e7cdb9ee855 100644 --- a/drivers/pinctrl/pinctrl-single.c +++ b/drivers/pinctrl/pinctrl-single.c @@ -534,6 +534,7 @@ static int pcs_pinconf_get(struct pinctrl_dev *pctldev, case PIN_CONFIG_DRIVE_STRENGTH: case PIN_CONFIG_SLEW_RATE: case PIN_CONFIG_MODE_LOW_POWER: + case PIN_CONFIG_INPUT_ENABLE: default: *config = data; break; @@ -572,6 +573,7 @@ static int pcs_pinconf_set(struct pinctrl_dev *pctldev, case PIN_CONFIG_DRIVE_STRENGTH: case PIN_CONFIG_SLEW_RATE: case PIN_CONFIG_MODE_LOW_POWER: + case PIN_CONFIG_INPUT_ENABLE: shift = ffs(func->conf[i].mask) - 1; data &= ~func->conf[i].mask; data |= (arg << shift) & func->conf[i].mask; @@ -918,6 +920,7 @@ static int pcs_parse_pinconf(struct pcs_device *pcs, struct device_node *np, static const struct pcs_conf_type prop2[] = { { "pinctrl-single,drive-strength", PIN_CONFIG_DRIVE_STRENGTH, }, { "pinctrl-single,slew-rate", PIN_CONFIG_SLEW_RATE, }, + { "pinctrl-single,input-enable", PIN_CONFIG_INPUT_ENABLE, }, { "pinctrl-single,input-schmitt", PIN_CONFIG_INPUT_SCHMITT, }, { "pinctrl-single,low-power-mode", PIN_CONFIG_MODE_LOW_POWER, }, };
It enables / disables the input buffer. As explained in the description of 'enum pin_config_param' this does not affect the pin's ability to drive output. Signed-off-by: Dario Binacchi <dariobin@libero.it> --- drivers/pinctrl/pinctrl-single.c | 3 +++ 1 file changed, 3 insertions(+)