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, &reg);
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, &reg);
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

Reply via email to