Re: [PATCH] pinctrl: qcom: lpass lpi: use default pullup/strength values
On Thu, Mar 4, 2021 at 8:49 PM Jonathan Marek wrote: > If these fields are not set in dts, the driver will use these variables > uninitialized to set the fields. Not only will it set garbage values for > these fields, but it can overflow into other fields and break those. > > In the current sm8250 dts, the dmic01 entries do not have a pullup setting, > and might not work without this change. > > Fixes: 6e261d1090d6 ("pinctrl: qcom: Add sm8250 lpass lpi pinctrl driver") > Signed-off-by: Jonathan Marek Patch applied for fixes! Yours, Linus Walleij
Re: [PATCH] pinctrl: qcom: lpass lpi: use default pullup/strength values
Thanks Jonathan for fixing this! On 04/03/2021 19:48, Jonathan Marek wrote: If these fields are not set in dts, the driver will use these variables uninitialized to set the fields. Not only will it set garbage values for these fields, but it can overflow into other fields and break those. In the current sm8250 dts, the dmic01 entries do not have a pullup setting, and might not work without this change. Fixes: 6e261d1090d6 ("pinctrl: qcom: Add sm8250 lpass lpi pinctrl driver") Signed-off-by: Jonathan Marek --- LGTM, Reviewed-by: Srinivas Kandagatla --srini drivers/pinctrl/qcom/pinctrl-lpass-lpi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/pinctrl/qcom/pinctrl-lpass-lpi.c b/drivers/pinctrl/qcom/pinctrl-lpass-lpi.c index 369ee20a7ea95..2f19ab4db7208 100644 --- a/drivers/pinctrl/qcom/pinctrl-lpass-lpi.c +++ b/drivers/pinctrl/qcom/pinctrl-lpass-lpi.c @@ -392,7 +392,7 @@ static int lpi_config_set(struct pinctrl_dev *pctldev, unsigned int group, unsigned long *configs, unsigned int nconfs) { struct lpi_pinctrl *pctrl = dev_get_drvdata(pctldev->dev); - unsigned int param, arg, pullup, strength; + unsigned int param, arg, pullup = LPI_GPIO_BIAS_DISABLE, strength = 2; bool value, output_enabled = false; const struct lpi_pingroup *g; unsigned long sval;
Re: [PATCH] pinctrl: qcom: lpass lpi: use default pullup/strength values
On 3/4/21 7:05 PM, Bjorn Andersson wrote: On Thu 04 Mar 13:48 CST 2021, Jonathan Marek wrote: If these fields are not set in dts, the driver will use these variables uninitialized to set the fields. Not only will it set garbage values for these fields, but it can overflow into other fields and break those. In the current sm8250 dts, the dmic01 entries do not have a pullup setting, and might not work without this change. Perhaps you didn't see it, but Dan reported this a few days back. So unless you object I would suggest that we include: I did not see it. But feel free to add tags. Reported-by: kernel test robot Reported-by: Dan Carpenter Reviewed-by: Bjorn Andersson Regards, Bjorn Fixes: 6e261d1090d6 ("pinctrl: qcom: Add sm8250 lpass lpi pinctrl driver") Signed-off-by: Jonathan Marek --- drivers/pinctrl/qcom/pinctrl-lpass-lpi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/pinctrl/qcom/pinctrl-lpass-lpi.c b/drivers/pinctrl/qcom/pinctrl-lpass-lpi.c index 369ee20a7ea95..2f19ab4db7208 100644 --- a/drivers/pinctrl/qcom/pinctrl-lpass-lpi.c +++ b/drivers/pinctrl/qcom/pinctrl-lpass-lpi.c @@ -392,7 +392,7 @@ static int lpi_config_set(struct pinctrl_dev *pctldev, unsigned int group, unsigned long *configs, unsigned int nconfs) { struct lpi_pinctrl *pctrl = dev_get_drvdata(pctldev->dev); - unsigned int param, arg, pullup, strength; + unsigned int param, arg, pullup = LPI_GPIO_BIAS_DISABLE, strength = 2; bool value, output_enabled = false; const struct lpi_pingroup *g; unsigned long sval; -- 2.26.1
Re: [PATCH] pinctrl: qcom: lpass lpi: use default pullup/strength values
On Thu 04 Mar 13:48 CST 2021, Jonathan Marek wrote: > If these fields are not set in dts, the driver will use these variables > uninitialized to set the fields. Not only will it set garbage values for > these fields, but it can overflow into other fields and break those. > > In the current sm8250 dts, the dmic01 entries do not have a pullup setting, > and might not work without this change. > Perhaps you didn't see it, but Dan reported this a few days back. So unless you object I would suggest that we include: Reported-by: kernel test robot Reported-by: Dan Carpenter Reviewed-by: Bjorn Andersson Regards, Bjorn > Fixes: 6e261d1090d6 ("pinctrl: qcom: Add sm8250 lpass lpi pinctrl driver") > Signed-off-by: Jonathan Marek > --- > drivers/pinctrl/qcom/pinctrl-lpass-lpi.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/pinctrl/qcom/pinctrl-lpass-lpi.c > b/drivers/pinctrl/qcom/pinctrl-lpass-lpi.c > index 369ee20a7ea95..2f19ab4db7208 100644 > --- a/drivers/pinctrl/qcom/pinctrl-lpass-lpi.c > +++ b/drivers/pinctrl/qcom/pinctrl-lpass-lpi.c > @@ -392,7 +392,7 @@ static int lpi_config_set(struct pinctrl_dev *pctldev, > unsigned int group, > unsigned long *configs, unsigned int nconfs) > { > struct lpi_pinctrl *pctrl = dev_get_drvdata(pctldev->dev); > - unsigned int param, arg, pullup, strength; > + unsigned int param, arg, pullup = LPI_GPIO_BIAS_DISABLE, strength = 2; > bool value, output_enabled = false; > const struct lpi_pingroup *g; > unsigned long sval; > -- > 2.26.1 >
[PATCH] pinctrl: qcom: lpass lpi: use default pullup/strength values
If these fields are not set in dts, the driver will use these variables uninitialized to set the fields. Not only will it set garbage values for these fields, but it can overflow into other fields and break those. In the current sm8250 dts, the dmic01 entries do not have a pullup setting, and might not work without this change. Fixes: 6e261d1090d6 ("pinctrl: qcom: Add sm8250 lpass lpi pinctrl driver") Signed-off-by: Jonathan Marek --- drivers/pinctrl/qcom/pinctrl-lpass-lpi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/pinctrl/qcom/pinctrl-lpass-lpi.c b/drivers/pinctrl/qcom/pinctrl-lpass-lpi.c index 369ee20a7ea95..2f19ab4db7208 100644 --- a/drivers/pinctrl/qcom/pinctrl-lpass-lpi.c +++ b/drivers/pinctrl/qcom/pinctrl-lpass-lpi.c @@ -392,7 +392,7 @@ static int lpi_config_set(struct pinctrl_dev *pctldev, unsigned int group, unsigned long *configs, unsigned int nconfs) { struct lpi_pinctrl *pctrl = dev_get_drvdata(pctldev->dev); - unsigned int param, arg, pullup, strength; + unsigned int param, arg, pullup = LPI_GPIO_BIAS_DISABLE, strength = 2; bool value, output_enabled = false; const struct lpi_pingroup *g; unsigned long sval; -- 2.26.1