linux-gpio.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [bug report] pinctrl: baytrail: consolidate common mask operation
@ 2023-09-07  9:53 Dan Carpenter
  2023-09-08 10:18 ` Raag Jadav
  0 siblings, 1 reply; 2+ messages in thread
From: Dan Carpenter @ 2023-09-07  9:53 UTC (permalink / raw)
  To: raag.jadav; +Cc: linux-gpio

Hello Raag Jadav,

The patch 4cfff5b7af8b: "pinctrl: baytrail: consolidate common mask
operation" from Aug 8, 2023 (linux-next), leads to the following
Smatch static checker warning:

	drivers/pinctrl/intel/pinctrl-baytrail.c:1023 byt_pin_config_set()
	error: uninitialized symbol 'db_pulse'.

drivers/pinctrl/intel/pinctrl-baytrail.c
    918 static int byt_pin_config_set(struct pinctrl_dev *pctl_dev,
    919                               unsigned int offset,
    920                               unsigned long *configs,
    921                               unsigned int num_configs)
    922 {
    923         struct intel_pinctrl *vg = pinctrl_dev_get_drvdata(pctl_dev);
    924         unsigned int param, arg;
    925         void __iomem *conf_reg = byt_gpio_reg(vg, offset, BYT_CONF0_REG);
    926         void __iomem *val_reg = byt_gpio_reg(vg, offset, BYT_VAL_REG);
    927         void __iomem *db_reg = byt_gpio_reg(vg, offset, BYT_DEBOUNCE_REG);
    928         u32 conf, val, db_pulse, debounce;
    929         unsigned long flags;
    930         int i, ret = 0;
    931 
    932         raw_spin_lock_irqsave(&byt_lock, flags);
    933 
    934         conf = readl(conf_reg);
    935         val = readl(val_reg);
    936 
    937         for (i = 0; i < num_configs; i++) {
    938                 param = pinconf_to_config_param(configs[i]);
    939                 arg = pinconf_to_config_argument(configs[i]);
    940 
    941                 switch (param) {
    942                 case PIN_CONFIG_BIAS_DISABLE:
    943                         conf &= ~BYT_PULL_ASSIGN_MASK;
    944                         break;
    945                 case PIN_CONFIG_BIAS_PULL_DOWN:
    946                         /* Set default strength value in case none is given */
    947                         if (arg == 1)
    948                                 arg = 2000;
    949 
    950                         /*
    951                          * Pull assignment is only applicable in input mode. If
    952                          * chip is not in input mode, set it and warn about it.
    953                          */
    954                         if (val & BYT_INPUT_EN) {
    955                                 val &= ~BYT_INPUT_EN;
    956                                 writel(val, val_reg);
    957                                 dev_warn(vg->dev, "Pin %i: forcibly set to input mode\n", offset);
    958                         }
    959 
    960                         conf &= ~BYT_PULL_ASSIGN_MASK;
    961                         conf |= BYT_PULL_ASSIGN_DOWN;
    962                         ret = byt_set_pull_strength(&conf, arg);
    963 
    964                         break;
    965                 case PIN_CONFIG_BIAS_PULL_UP:
    966                         /* Set default strength value in case none is given */
    967                         if (arg == 1)
    968                                 arg = 2000;
    969 
    970                         /*
    971                          * Pull assignment is only applicable in input mode. If
    972                          * chip is not in input mode, set it and warn about it.
    973                          */
    974                         if (val & BYT_INPUT_EN) {
    975                                 val &= ~BYT_INPUT_EN;
    976                                 writel(val, val_reg);
    977                                 dev_warn(vg->dev, "Pin %i: forcibly set to input mode\n", offset);
    978                         }
    979 
    980                         conf &= ~BYT_PULL_ASSIGN_MASK;
    981                         conf |= BYT_PULL_ASSIGN_UP;
    982                         ret = byt_set_pull_strength(&conf, arg);
    983 
    984                         break;
    985                 case PIN_CONFIG_INPUT_DEBOUNCE:
    986                         if (arg)
    987                                 conf |= BYT_DEBOUNCE_EN;
    988                         else
    989                                 conf &= ~BYT_DEBOUNCE_EN;
    990 
    991                         switch (arg) {
    992                         case 375:
    993                                 db_pulse = BYT_DEBOUNCE_PULSE_375US;
    994                                 break;
    995                         case 750:
    996                                 db_pulse = BYT_DEBOUNCE_PULSE_750US;
    997                                 break;
    998                         case 1500:
    999                                 db_pulse = BYT_DEBOUNCE_PULSE_1500US;
    1000                                 break;
    1001                         case 3000:
    1002                                 db_pulse = BYT_DEBOUNCE_PULSE_3MS;
    1003                                 break;
    1004                         case 6000:
    1005                                 db_pulse = BYT_DEBOUNCE_PULSE_6MS;
    1006                                 break;
    1007                         case 12000:
    1008                                 db_pulse = BYT_DEBOUNCE_PULSE_12MS;
    1009                                 break;
    1010                         case 24000:
    1011                                 db_pulse = BYT_DEBOUNCE_PULSE_24MS;
    1012                                 break;
    1013                         default:
    1014                                 if (arg)
    1015                                         ret = -EINVAL;

db_pulse is uninitialized if arg is zero.

    1016                                 break;
    1017                         }
    1018 
    1019                         if (ret)
    1020                                 break;
    1021 
    1022                         debounce = readl(db_reg);
--> 1023                         debounce = (debounce & ~BYT_DEBOUNCE_PULSE_MASK) | db_pulse;
    1024                         writel(debounce, db_reg);
    1025 
    1026                         break;
    1027                 default:
    1028                         ret = -ENOTSUPP;
    1029                 }
    1030 
    1031                 if (ret)
    1032                         break;
    1033         }
    1034 
    1035         if (!ret)
    1036                 writel(conf, conf_reg);
    1037 
    1038         raw_spin_unlock_irqrestore(&byt_lock, flags);
    1039 
    1040         return ret;
    1041 }

regards,
dan carpenter

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [bug report] pinctrl: baytrail: consolidate common mask operation
  2023-09-07  9:53 [bug report] pinctrl: baytrail: consolidate common mask operation Dan Carpenter
@ 2023-09-08 10:18 ` Raag Jadav
  0 siblings, 0 replies; 2+ messages in thread
From: Raag Jadav @ 2023-09-08 10:18 UTC (permalink / raw)
  To: Dan Carpenter; +Cc: linux-gpio

On Thu, Sep 07, 2023 at 12:53:54PM +0300, Dan Carpenter wrote:
> Hello Raag Jadav,
> 
> The patch 4cfff5b7af8b: "pinctrl: baytrail: consolidate common mask
> operation" from Aug 8, 2023 (linux-next), leads to the following
> Smatch static checker warning:
> 
> 	drivers/pinctrl/intel/pinctrl-baytrail.c:1023 byt_pin_config_set()
> 	error: uninitialized symbol 'db_pulse'.

Thanks for the report.
I have a fix in internal review, will send it out soon.

Raag

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2023-09-08 10:22 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-09-07  9:53 [bug report] pinctrl: baytrail: consolidate common mask operation Dan Carpenter
2023-09-08 10:18 ` Raag Jadav

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).