Hi Tomer, I love your patch! Perhaps something to improve: [auto build test WARNING on hwmon/hwmon-next] [also build test WARNING on v4.18-rc1 next-20180619] [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/hwmon-Add-NPCM7xx-PWM-and-Fan-driver-support/20180619-192033 base: https://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git hwmon-next config: i386-allyesconfig (attached as .config) compiler: gcc-7 (Debian 7.3.0-16) 7.3.0 reproduce: # save the attached .config to linux build tree make ARCH=i386 Note: it may well be a FALSE warning. FWIW you are at least aware of it now. http://gcc.gnu.org/wiki/Better_Uninitialized_Warnings All warnings (new ones prefixed by >>): drivers//hwmon/npcm750-pwm-fan.c: In function 'npcm7xx_pwm_fan_probe': >> drivers//hwmon/npcm750-pwm-fan.c:973:3: warning: 'ret' may be used uninitialized in this function [-Wmaybe-uninitialized] pr_err("PWM of_address_to_resource fail ret %d\n", ret); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vim +/ret +973 drivers//hwmon/npcm750-pwm-fan.c 952 953 static int npcm7xx_pwm_fan_probe(struct platform_device *pdev) 954 { 955 struct device *dev = &pdev->dev; 956 struct device_node *np, *child; 957 struct npcm7xx_pwm_fan_data *data; 958 struct resource *res; 959 struct device *hwmon; 960 char name[20]; 961 int ret, cnt; 962 u32 output_freq; 963 u32 i; 964 965 np = dev->of_node; 966 967 data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL); 968 if (!data) 969 return -ENOMEM; 970 971 res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "pwm_base"); 972 if (res == NULL) { > 973 pr_err("PWM of_address_to_resource fail ret %d\n", ret); 974 return -ENODEV; 975 } 976 977 data->pwm_base = devm_ioremap_resource(dev, res); 978 pr_debug("pwm base is 0x%08X, res.start 0x%08X , size 0x%08X\n", 979 (u32)data->pwm_base, res->start, resource_size(res)); 980 if (!data->pwm_base) { 981 pr_err("pwm probe failed: can't read pwm base address\n"); 982 return -ENOMEM; 983 } 984 985 data->pwm_clk = devm_clk_get(dev, "clk_apb3"); 986 if (IS_ERR(data->pwm_clk)) { 987 pr_err(" pwm probe failed: can't read clk.\n"); 988 return -ENODEV; 989 } 990 991 res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "fan_base"); 992 if (ret) { 993 pr_err("fan of_address_to_resource fail ret %d\n", ret); 994 return -ENODEV; 995 } 996 997 data->fan_base = devm_ioremap_resource(dev, res); 998 pr_debug("fan base is 0x%08X, res.start 0x%08X , size 0x%08X\n", 999 (u32)data->fan_base, res->start, resource_size(res)); 1000 1001 if (!data->fan_base) { 1002 pr_err("fan probe failed: can't read fan base address.\n"); 1003 return -ENOMEM; 1004 } 1005 1006 data->fan_clk = devm_clk_get(dev, "clk_apb4"); 1007 if (IS_ERR(data->fan_clk)) { 1008 pr_err(" FAN probe failed: can't read clk.\n"); 1009 return -ENODEV; 1010 } 1011 1012 output_freq = npcm7xx_pwm_init(data); 1013 npcm7xx_fan_init(data); 1014 1015 for (cnt = 0; cnt < NPCM7XX_PWM_MAX_MODULES ; cnt++) 1016 mutex_init(&data->npcm7xx_pwm_lock[cnt]); 1017 1018 for (i = 0; i < NPCM7XX_FAN_MAX_MODULE; i++) { 1019 spin_lock_init(&data->npcm7xx_fan_lock[i]); 1020 1021 data->fan_irq[i] = platform_get_irq(pdev, i); 1022 if (!data->fan_irq[i]) { 1023 pr_err("%s - failed to map irq %d\n", __func__, i); 1024 ret = -EAGAIN; 1025 goto err_irq; 1026 } 1027 1028 sprintf(name, "NPCM7XX-FAN-MD%d", i); 1029 1030 if (request_irq(data->fan_irq[i], npcm7xx_fan_isr, 0, name, 1031 (void *)data)) { 1032 pr_err("NPCM7XX: register irq FAN%d failed\n", i); 1033 ret = -EAGAIN; 1034 goto err_irq; 1035 } 1036 } 1037 1038 for_each_child_of_node(np, child) { 1039 ret = npcm7xx_en_pwm_fan(dev, child, data); 1040 if (ret) { 1041 pr_err("npcm7xx_en_pwm_fan failed ret %d\n", ret); 1042 of_node_put(child); 1043 goto err_irq; 1044 } 1045 } 1046 1047 hwmon = devm_hwmon_device_register_with_info(dev, "npcm7xx_pwm_fan", 1048 data, &npcm7xx_chip_info, 1049 NULL); 1050 if (IS_ERR(hwmon)) { 1051 pr_err("PWM Driver failed - devm_hwmon_device_register_with_groups failed\n"); 1052 ret = PTR_ERR(hwmon); 1053 goto err_irq; 1054 } 1055 1056 for (i = 0; i < NPCM7XX_FAN_MAX_CHN_NUM; i++) { 1057 if (data->fan_present[i] == true) { 1058 /* fan timer initialization */ 1059 data->npcm7xx_fan_select = 0; 1060 data->npcm7xx_fan_timer.expires = jiffies + 1061 msecs_to_jiffies(NPCM7XX_FAN_POLL_TIMER_200MS); 1062 timer_setup(&data->npcm7xx_fan_timer, 1063 npcm7xx_fan_polling, 0); 1064 add_timer(&data->npcm7xx_fan_timer); 1065 break; 1066 } 1067 } 1068 1069 pr_info("NPCM7XX PWM-FAN Driver probed, output Freq %dHz[PWM], input Freq %dHz[FAN]\n", 1070 output_freq, data->InputClkFreq); 1071 1072 return 0; 1073 1074 err_irq: 1075 for (; i > 0; i--) 1076 free_irq(data->fan_irq[i-1], (void *)data); 1077 1078 return ret; 1079 } 1080 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Attachment:
.config.gz
Description: application/gzip