TO: Srinivas Kandagatla <srinivas.kandaga...@linaro.org> tree: git://people.freedesktop.org/~robclark/linux integration-linux-qcomlt-drm-rebase head: e92f5455bd17e46fc475792dfff3378d160ec81e commit: 5b1d3dec8f4dea54ea833bcbfba85d6b90a92f5f [0/1] Merge branch 'tracking-qcomlt-efuse' into integration-linux-qcomlt :::::: branch date: 8 days ago :::::: commit date: 2 weeks ago
drivers/thermal/msm8960_tsens.c:218 tsens_set_mode() warn: variable dereferenced before check 'tm_sensor' (see line 213) drivers/thermal/msm8960_tsens.c:286 tsens_get_trip_temp() warn: variable dereferenced before check 'tm_sensor' (see line 283) drivers/thermal/msm8960_tsens.c:328 tsens_set_trip_temp() warn: variable dereferenced before check 'tm_sensor' (see line 322) git remote add robclark git://people.freedesktop.org/~robclark/linux git remote update robclark git checkout 5b1d3dec8f4dea54ea833bcbfba85d6b90a92f5f vim +/tm_sensor +218 drivers/thermal/msm8960_tsens.c d63cd69b Srinivas Kandagatla 2015-01-22 207 **/ d63cd69b Srinivas Kandagatla 2015-01-22 208 d63cd69b Srinivas Kandagatla 2015-01-22 209 static int tsens_set_mode(struct thermal_zone_device *thermal, d63cd69b Srinivas Kandagatla 2015-01-22 210 enum thermal_device_mode mode) d63cd69b Srinivas Kandagatla 2015-01-22 211 { d63cd69b Srinivas Kandagatla 2015-01-22 212 struct tsens_tm_device_sensor *tm_sensor = thermal->devdata; d63cd69b Srinivas Kandagatla 2015-01-22 @213 struct tsens_tm_device *tmdev = tm_sensor->tmdev; d63cd69b Srinivas Kandagatla 2015-01-22 214 struct tsens_variant_data *data = tmdev->data; d63cd69b Srinivas Kandagatla 2015-01-22 215 struct regmap *base = tmdev->base; d63cd69b Srinivas Kandagatla 2015-01-22 216 unsigned int reg, mask, i; d63cd69b Srinivas Kandagatla 2015-01-22 217 d63cd69b Srinivas Kandagatla 2015-01-22 @218 if (!tm_sensor) d63cd69b Srinivas Kandagatla 2015-01-22 219 return -EINVAL; d63cd69b Srinivas Kandagatla 2015-01-22 220 d63cd69b Srinivas Kandagatla 2015-01-22 221 if (mode != tm_sensor->mode) { d63cd69b Srinivas Kandagatla 2015-01-22 222 regmap_read(base, TSENS_CNTL_ADDR, ®); d63cd69b Srinivas Kandagatla 2015-01-22 223 mask = BIT(tm_sensor->sensor_num + TSENS_SENSOR0_SHIFT); d63cd69b Srinivas Kandagatla 2015-01-22 224 if (mode == THERMAL_DEVICE_ENABLED) { d63cd69b Srinivas Kandagatla 2015-01-22 225 if ((mask != SENSOR0_EN) && !(reg & SENSOR0_EN)) { d63cd69b Srinivas Kandagatla 2015-01-22 226 pr_info("Main sensor not enabled\n"); d63cd69b Srinivas Kandagatla 2015-01-22 227 return -EINVAL; d63cd69b Srinivas Kandagatla 2015-01-22 228 } d63cd69b Srinivas Kandagatla 2015-01-22 229 regmap_write(base, TSENS_CNTL_ADDR, reg | TSENS_SW_RST); d63cd69b Srinivas Kandagatla 2015-01-22 230 reg |= mask | data->slp_clk_ena | TSENS_EN; d63cd69b Srinivas Kandagatla 2015-01-22 231 tmdev->trdy = false; d63cd69b Srinivas Kandagatla 2015-01-22 232 } else { d63cd69b Srinivas Kandagatla 2015-01-22 233 reg &= ~mask; d63cd69b Srinivas Kandagatla 2015-01-22 234 if (!(reg & SENSOR0_EN)) { d63cd69b Srinivas Kandagatla 2015-01-22 235 reg &= ~(SENSORS_EN_MASK(tmdev->nsensors) | d63cd69b Srinivas Kandagatla 2015-01-22 236 data->slp_clk_ena | d63cd69b Srinivas Kandagatla 2015-01-22 237 TSENS_EN); d63cd69b Srinivas Kandagatla 2015-01-22 238 d63cd69b Srinivas Kandagatla 2015-01-22 239 for (i = 1; i < tmdev->nsensors; i++) d63cd69b Srinivas Kandagatla 2015-01-22 240 tmdev->sensor[i].mode = mode; d63cd69b Srinivas Kandagatla 2015-01-22 241 d63cd69b Srinivas Kandagatla 2015-01-22 242 } d63cd69b Srinivas Kandagatla 2015-01-22 243 } d63cd69b Srinivas Kandagatla 2015-01-22 244 regmap_write(base, TSENS_CNTL_ADDR, reg); d63cd69b Srinivas Kandagatla 2015-01-22 245 } d63cd69b Srinivas Kandagatla 2015-01-22 246 tm_sensor->mode = mode; d63cd69b Srinivas Kandagatla 2015-01-22 247 d63cd69b Srinivas Kandagatla 2015-01-22 248 return 0; d63cd69b Srinivas Kandagatla 2015-01-22 249 } d63cd69b Srinivas Kandagatla 2015-01-22 250 d63cd69b Srinivas Kandagatla 2015-01-22 251 static int tsens_get_trip_type(struct thermal_zone_device *thermal, d63cd69b Srinivas Kandagatla 2015-01-22 252 int trip, enum thermal_trip_type *type) d63cd69b Srinivas Kandagatla 2015-01-22 253 { d63cd69b Srinivas Kandagatla 2015-01-22 254 struct tsens_tm_device_sensor *tm_sensor = thermal->devdata; d63cd69b Srinivas Kandagatla 2015-01-22 255 d63cd69b Srinivas Kandagatla 2015-01-22 256 if (!tm_sensor || trip < 0 || !type) d63cd69b Srinivas Kandagatla 2015-01-22 257 return -EINVAL; d63cd69b Srinivas Kandagatla 2015-01-22 258 d63cd69b Srinivas Kandagatla 2015-01-22 259 switch (trip) { d63cd69b Srinivas Kandagatla 2015-01-22 260 case TSENS_TRIP_STAGE3: d63cd69b Srinivas Kandagatla 2015-01-22 261 *type = THERMAL_TRIP_CRITICAL; d63cd69b Srinivas Kandagatla 2015-01-22 262 break; d63cd69b Srinivas Kandagatla 2015-01-22 263 case TSENS_TRIP_STAGE2: d63cd69b Srinivas Kandagatla 2015-01-22 264 *type = THERMAL_TRIP_HOT; d63cd69b Srinivas Kandagatla 2015-01-22 265 break; d63cd69b Srinivas Kandagatla 2015-01-22 266 case TSENS_TRIP_STAGE1: d63cd69b Srinivas Kandagatla 2015-01-22 267 *type = THERMAL_TRIP_PASSIVE; d63cd69b Srinivas Kandagatla 2015-01-22 268 break; d63cd69b Srinivas Kandagatla 2015-01-22 269 case TSENS_TRIP_STAGE0: d63cd69b Srinivas Kandagatla 2015-01-22 270 *type = THERMAL_TRIP_ACTIVE; d63cd69b Srinivas Kandagatla 2015-01-22 271 break; d63cd69b Srinivas Kandagatla 2015-01-22 272 default: d63cd69b Srinivas Kandagatla 2015-01-22 273 return -EINVAL; d63cd69b Srinivas Kandagatla 2015-01-22 274 } d63cd69b Srinivas Kandagatla 2015-01-22 275 d63cd69b Srinivas Kandagatla 2015-01-22 276 return 0; d63cd69b Srinivas Kandagatla 2015-01-22 277 } d63cd69b Srinivas Kandagatla 2015-01-22 278 d63cd69b Srinivas Kandagatla 2015-01-22 279 static int tsens_get_trip_temp(struct thermal_zone_device *thermal, d63cd69b Srinivas Kandagatla 2015-01-22 280 int trip, unsigned long *temp) d63cd69b Srinivas Kandagatla 2015-01-22 281 { d63cd69b Srinivas Kandagatla 2015-01-22 282 struct tsens_tm_device_sensor *tm_sensor = thermal->devdata; d63cd69b Srinivas Kandagatla 2015-01-22 @283 struct tsens_tm_device *tmdev = tm_sensor->tmdev; d63cd69b Srinivas Kandagatla 2015-01-22 284 unsigned int reg; d63cd69b Srinivas Kandagatla 2015-01-22 285 d63cd69b Srinivas Kandagatla 2015-01-22 @286 if (!tm_sensor || trip < 0 || !temp) d63cd69b Srinivas Kandagatla 2015-01-22 287 return -EINVAL; d63cd69b Srinivas Kandagatla 2015-01-22 288 d63cd69b Srinivas Kandagatla 2015-01-22 289 regmap_read(tmdev->base, TSENS_TH_ADDR, ®); d63cd69b Srinivas Kandagatla 2015-01-22 290 switch (trip) { d63cd69b Srinivas Kandagatla 2015-01-22 291 case TSENS_TRIP_STAGE3: d63cd69b Srinivas Kandagatla 2015-01-22 292 reg = (reg & TSENS_TH_MAX_LIMIT_MASK) d63cd69b Srinivas Kandagatla 2015-01-22 293 >> TSENS_TH_MAX_LIMIT_SHIFT; d63cd69b Srinivas Kandagatla 2015-01-22 294 break; d63cd69b Srinivas Kandagatla 2015-01-22 295 case TSENS_TRIP_STAGE2: d63cd69b Srinivas Kandagatla 2015-01-22 296 reg = (reg & TSENS_TH_UPPER_LIMIT_MASK) d63cd69b Srinivas Kandagatla 2015-01-22 297 >> TSENS_TH_UPPER_LIMIT_SHIFT; d63cd69b Srinivas Kandagatla 2015-01-22 298 break; d63cd69b Srinivas Kandagatla 2015-01-22 299 case TSENS_TRIP_STAGE1: d63cd69b Srinivas Kandagatla 2015-01-22 300 reg = (reg & TSENS_TH_LOWER_LIMIT_MASK) d63cd69b Srinivas Kandagatla 2015-01-22 301 >> TSENS_TH_LOWER_LIMIT_SHIFT; d63cd69b Srinivas Kandagatla 2015-01-22 302 break; d63cd69b Srinivas Kandagatla 2015-01-22 303 case TSENS_TRIP_STAGE0: d63cd69b Srinivas Kandagatla 2015-01-22 304 reg = (reg & TSENS_TH_MIN_LIMIT_MASK) d63cd69b Srinivas Kandagatla 2015-01-22 305 >> TSENS_TH_MIN_LIMIT_SHIFT; d63cd69b Srinivas Kandagatla 2015-01-22 306 break; d63cd69b Srinivas Kandagatla 2015-01-22 307 default: d63cd69b Srinivas Kandagatla 2015-01-22 308 return -EINVAL; d63cd69b Srinivas Kandagatla 2015-01-22 309 } d63cd69b Srinivas Kandagatla 2015-01-22 310 d63cd69b Srinivas Kandagatla 2015-01-22 311 *temp = tsens_code_to_degc(tm_sensor, reg); d63cd69b Srinivas Kandagatla 2015-01-22 312 d63cd69b Srinivas Kandagatla 2015-01-22 313 return 0; d63cd69b Srinivas Kandagatla 2015-01-22 314 } d63cd69b Srinivas Kandagatla 2015-01-22 315 d63cd69b Srinivas Kandagatla 2015-01-22 316 static int tsens_set_trip_temp(struct thermal_zone_device *thermal, d63cd69b Srinivas Kandagatla 2015-01-22 317 int trip, unsigned long temp) d63cd69b Srinivas Kandagatla 2015-01-22 318 { d63cd69b Srinivas Kandagatla 2015-01-22 319 struct tsens_tm_device_sensor *tm_sensor = thermal->devdata; d63cd69b Srinivas Kandagatla 2015-01-22 320 unsigned int reg_th, reg_cntl; d63cd69b Srinivas Kandagatla 2015-01-22 321 int code, hi_code, lo_code, code_err_chk; d63cd69b Srinivas Kandagatla 2015-01-22 @322 struct tsens_tm_device *tmdev = tm_sensor->tmdev; d63cd69b Srinivas Kandagatla 2015-01-22 323 struct regmap *base = tmdev->base; d63cd69b Srinivas Kandagatla 2015-01-22 324 struct tsens_variant_data *data = tmdev->data; d63cd69b Srinivas Kandagatla 2015-01-22 325 u32 offset = data->sctrl_offset; d63cd69b Srinivas Kandagatla 2015-01-22 326 d63cd69b Srinivas Kandagatla 2015-01-22 327 code_err_chk = code = tsens_degc_to_code(tm_sensor, temp); d63cd69b Srinivas Kandagatla 2015-01-22 @328 if (!tm_sensor || trip < 0) d63cd69b Srinivas Kandagatla 2015-01-22 329 return -EINVAL; d63cd69b Srinivas Kandagatla 2015-01-22 330 d63cd69b Srinivas Kandagatla 2015-01-22 331 lo_code = TSENS_TH_MIN_CODE; :::::: The code at line 218 was first introduced by commit :::::: d63cd69b9e1aaad1268eaeebd6936c7d2e237c45 thermal: qcom: Add 8960 thermal sensor support :::::: TO: Srinivas Kandagatla <srinivas.kandaga...@linaro.org> :::::: CC: Srinivas Kandagatla <srinivas.kandaga...@linaro.org> --- 0-DAY kernel test infrastructure Open Source Technology Center http://lists.01.org/mailman/listinfo/kbuild Intel Corporation _______________________________________________ kbuild mailing list kbuild@lists.01.org https://lists.01.org/mailman/listinfo/kbuild