[PATCH v1 2/2] hwmon: npcm-pwm: add NPCM7xx PWM driver

Guenter Roeck linux at roeck-us.net
Thu May 31 23:14:52 AEST 2018


On 05/31/2018 12:16 AM, kbuild test robot wrote:
> Hi Tomer,
> 
> I love your patch! Perhaps something to improve:
> 
> [auto build test WARNING on hwmon/hwmon-next]
> [also build test WARNING on v4.17-rc7]
> [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
> 
> url:    https://github.com/0day-ci/linux/commits/Tomer-Maimon/dt-binding-hwmon-Add-NPCM7xx-PWM-documentation/20180531-034040
> base:   https://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git hwmon-next
> config: x86_64-allmodconfig
> compiler: gcc-7 (Debian 7.3.0-16) 7.3.0
> reproduce:
>          make ARCH=x86_64  allmodconfig
>          make ARCH=x86_64
> 
> All warnings (new ones prefixed by >>):
> 
> 
> vim +277 drivers/hwmon/npcm7xx-pwm.c
> 
>     250	
>     251	static int npcm7xx_pwm_probe(struct platform_device *pdev)
>     252	{
>     253		struct device *dev = &pdev->dev;
>     254		struct npcm7xx_pwm_data *data;
>     255		struct resource res[NPCM7XX_PWM_MAX_MODULES];
>     256		struct device *hwmon;
>     257		struct clk *clk;
>     258		int m, ch, res_cnt, ret;
>     259		u32 Prescale_val, output_freq;
>     260	
>     261		data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL);
>     262		if (!data)
>     263			return -ENOMEM;
>     264	
>     265		for (res_cnt = 0; res_cnt < NPCM7XX_PWM_MAX_MODULES  ; res_cnt++) {
>     266			ret = of_address_to_resource(dev->of_node, res_cnt,
>     267						     &res[res_cnt]);
>     268			if (ret) {
>     269				pr_err("PWM of_address_to_resource fail ret %d\n",
>     270				       ret);
>     271				return -EINVAL;
>     272			}
>     273	
>     274			data->pwm_base[res_cnt] =
>     275				devm_ioremap_resource(dev, &(res[res_cnt]));
>   > 276			pr_debug("pwm%d base is 0x%08X, res.start 0x%08X , size 0x%08X\n",
>   > 277				 res_cnt, (u32)data->pwm_base[res_cnt],
>     278				 res[res_cnt].start, resource_size(&(res[res_cnt])));
>     279

No idea what the tool is complaining about, but the messages should use dev_ functions.

>     280			if (!data->pwm_base[res_cnt]) {
>     281				pr_err("pwm probe failed: can't read pwm base address for resource %d.\n",
>     282				       res_cnt);
>     283				return -ENOMEM;
>     284			}
>     285	
>     286			mutex_init(&data->npcm7xx_pwm_lock[res_cnt]);
>     287		}
>     288	
>     289		clk = devm_clk_get(dev, NULL);
>     290		if (IS_ERR(clk))
>     291			return -ENODEV;
>     292	
>     293		data->clk_freq = clk_get_rate(clk);
>     294	
>     295		/* Adjust NPCM7xx PWMs output frequency to ~25Khz */
>     296		output_freq = data->clk_freq / PWN_CNT_DEFAULT;
>     297		Prescale_val = DIV_ROUND_CLOSEST(output_freq, PWM_OUTPUT_FREQ_25KHZ);
>     298	
>     299		/* If Prescale_val = 0, then the prescale output clock is stopped */
>     300		if (Prescale_val < MIN_PRESCALE1)
>     301			Prescale_val = MIN_PRESCALE1;
>     302		/*
>     303		 * Prescale_val need to decrement in one because in the PWM Prescale
>     304		 * register the Prescale value increment by one
>     305		 */
>     306		Prescale_val--;
>     307	
>     308		/* Setting PWM Prescale Register value register to both modules */
>     309		Prescale_val |= (Prescale_val << NPCM7XX_PWM_PRESCALE_SHIFT_CH01);
>     310	
>     311		for (m = 0; m < NPCM7XX_PWM_MAX_MODULES  ; m++) {
>     312			iowrite32(Prescale_val,
>     313				  data->pwm_base[m] + NPCM7XX_PWM_REG_PR);
>     314			iowrite32(NPCM7XX_PWM_PRESCALE2_DEFALUT,
>     315				  data->pwm_base[m] + NPCM7XX_PWM_REG_CSR);
>     316			iowrite32(NPCM7XX_PWM_CTRL_MODE_DEFALUT,
>     317				  data->pwm_base[m] + NPCM7XX_PWM_REG_CR);
>     318	
>     319			for (ch = 0; ch < NPCM7XX_PWM_MAX_CHN_NUM; ch++) {
>     320				iowrite32(NPCM7XX_PWM_COUNTER_DEFALUT_NUM,
>     321					  data->pwm_base[m] + NPCM7XX_PWM_REG_CNRx(ch));
>     322				iowrite32(NPCM7XX_PWM_COMPARATOR_DEFALUT_NUM,
>     323					  data->pwm_base[m] + NPCM7XX_PWM_REG_CMRx(ch));
>     324			}
>     325	
>     326			iowrite32(NPCM7XX_PWM_CTRL_MODE_DEFALUT |
>     327				  NPCM7XX_PWM_CTRL_EN_DEFALUT,
>     328				  data->pwm_base[m] + NPCM7XX_PWM_REG_CR);
>     329		}
>     330	
>     331		hwmon = devm_hwmon_device_register_with_info(dev, "npcm7xx_pwm", data,
>     332							     &npcm7xx_chip_info, NULL);
>     333	
>     334		if (IS_ERR(hwmon)) {
>     335			pr_err("PWM Driver failed - devm_hwmon_device_register_with_groups failed\n");
>     336			return PTR_ERR(hwmon);
>     337		}
>     338	
>     339		pr_info("NPCM7XX PWM Driver probed, PWM output Freq %dHz\n",
>     340			output_freq / ((Prescale_val & 0xf) + 1));
>     341	
>     342		return 0;
>     343	}
>     344	
> 
> ---
> 0-DAY kernel test infrastructure                Open Source Technology Center
> https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
> --
> To unsubscribe from this list: send the line "unsubscribe linux-hwmon" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 



More information about the openbmc mailing list