Loading Documentation/devicetree/bindings/thermal/tsens.txt +2 −1 Original line number Diff line number Diff line Loading @@ -24,12 +24,13 @@ Required properties: should be "qcom,msm8939-tsens" for 8939 TSENS driver. should be "qcom,msm8909-tsens" for 8909 TSENS driver. should be "qcom,msm8952-tsens" for 8952 TSENS driver. should be "qcom,msmzirc-tsens" for zirc TSENS driver. should be "qcom,mdm9640-tsens" for 9640 TSENS driver. should be "qcom,mdm9607-tsens" for 9607 TSENS driver. should be "qcom,msm8953-tsens" for 8953 TSENS driver. should be "qcom,msm8937-tsens" for 8937 TSENS driver. should be "qcom,msm8917-tsens" for 8917 TSENS driver. should be "qcom,msmcobalt-tsens" for cobalt TSENS driver. should be "qcom,mdm9640v2-tsens" for 9640v2 TSENS driver. The compatible property is used to identify the respective fusemap to use for the corresponding SoC. - reg : offset and length of the TSENS registers. Loading drivers/thermal/msm-tsens.c +112 −48 Original line number Diff line number Diff line Loading @@ -150,6 +150,7 @@ #define TSENS_SN_REMOTE_CONFIG(n) ((n) + 0x3c) #define TSENS_EEPROM(n) ((n) + 0xd0) #define TSENS_EEPROM_9640V2(n) ((n) + 0x8) #define TSENS_EEPROM_REDUNDANCY_SEL(n) ((n) + 0x444) #define TSENS_EEPROM_BACKUP_REGION(n) ((n) + 0x440) Loading Loading @@ -586,20 +587,21 @@ #define TSENS_MSM8909_D120_WA_S1 6 #define TSENS_MSM8909_D120_WA_S3 9 #define TSENS_MSM8909_D120_WA_S4 10 #define TSENS_ZIRC_CAL_SEL 0x700 #define TSENS_ZIRC_CAL_SEL_SHIFT 8 #define TSENS_BASE0_ZIRC_MASK 0x3ff #define TSENS_BASE1_ZIRC_MASK 0xffc00 #define TSENS_BASE1_ZIRC_SHIFT 10 #define TSENS0_OFFSET_ZIRC_MASK 0xf00000 #define TSENS0_OFFSET_ZIRC_SHIFT 20 #define TSENS1_OFFSET_ZIRC_MASK 0xf000000 #define TSENS1_OFFSET_ZIRC_SHIFT 24 #define TSENS2_OFFSET_ZIRC_MASK 0xf0000000 #define TSENS2_OFFSET_ZIRC_SHIFT 28 #define TSENS3_OFFSET_ZIRC_MASK 0xf #define TSENS4_OFFSET_ZIRC_MASK 0xf0 #define TSENS4_OFFSET_ZIRC_SHIFT 4 #define TSENS_9640_CAL_SEL 0x700 #define TSENS_9640_CAL_SEL_SHIFT 8 #define TSENS_BASE0_9640_MASK 0x3ff #define TSENS_BASE1_9640_MASK 0xffc00 #define TSENS_BASE1_9640_SHIFT 10 #define TSENS0_OFFSET_9640_MASK 0xf00000 #define TSENS0_OFFSET_9640_SHIFT 20 #define TSENS1_OFFSET_9640_MASK 0xf000000 #define TSENS1_OFFSET_9640_SHIFT 24 #define TSENS2_OFFSET_9640_MASK 0xf0000000 #define TSENS2_OFFSET_9640_SHIFT 28 #define TSENS3_OFFSET_9640_MASK 0xf #define TSENS4_OFFSET_9640_MASK 0xf0 #define TSENS4_OFFSET_9640_SHIFT 4 #define TSENS_CONTR_14_BASE0_MASK 0x000000ff #define TSENS_CONTR_14_BASE1_MASK 0xff000000 Loading Loading @@ -747,7 +749,7 @@ enum tsens_calib_fuse_map_type { TSENS_CALIB_FUSE_MAP_8939, TSENS_CALIB_FUSE_MAP_8994, TSENS_CALIB_FUSE_MAP_MSM8909, TSENS_CALIB_FUSE_MAP_MSMZIRC, TSENS_CALIB_FUSE_MAP_MDM9640, TSENS_CALIB_FUSE_MAP_NONE, TSENS_CALIB_FUSE_MAP_8992, TSENS_CALIB_FUSE_MAP_MSM8952, Loading Loading @@ -905,8 +907,8 @@ static struct of_device_id tsens_match[] = { { .compatible = "qcom,msm8909-tsens", .data = (void *)TSENS_CALIB_FUSE_MAP_MSM8909, }, { .compatible = "qcom,msmzirc-tsens", .data = (void *)TSENS_CALIB_FUSE_MAP_MSMZIRC, { .compatible = "qcom,mdm9640-tsens", .data = (void *)TSENS_CALIB_FUSE_MAP_MDM9640, }, { .compatible = "qcom,msm8996-tsens", .data = (void *)TSENS_CALIB_FUSE_MAP_NONE, Loading @@ -932,6 +934,9 @@ static struct of_device_id tsens_match[] = { { .compatible = "qcom,msmcobalt-tsens", .data = (void *)TSENS_CALIB_FUSE_MAP_NONE, }, { .compatible = "qcom,mdm9640v2-tsens", .data = (void *)TSENS_CALIB_FUSE_MAP_MDM9640, }, {} }; Loading Loading @@ -976,7 +981,8 @@ static int32_t get_tsens_sensor_for_client_id(struct tsens_tm_device *tmdev, } if (!strcmp(id->compatible, "qcom,msm8996-tsens") || (!strcmp(id->compatible, "qcom,msmcobalt-tsens"))) { (!strcmp(id->compatible, "qcom,mdm9640v2-tsens") || (!strcmp(id->compatible, "qcom,msmcobalt-tsens")))) { while (i < tmdev->tsens_num_sensor && !id_found) { if (tmdev->sensor[i].sensor_client_id == sensor_client_id) { Loading Loading @@ -5255,7 +5261,7 @@ compute_intercept_slope: return 0; } static int tsens_calib_msmzirc_sensors(struct tsens_tm_device *tmdev) static int tsens_calib_mdm9640_sensors(struct tsens_tm_device *tmdev) { int i = 0, tsens_base0_data = 0, tsens_base1_data = 0; int tsens0_point = 0, tsens1_point = 0, tsens2_point = 0; Loading @@ -5263,32 +5269,64 @@ static int tsens_calib_msmzirc_sensors(struct tsens_tm_device *tmdev) int tsens_calibration_mode = 0; uint32_t calib_data[2] = {0, 0}; uint32_t calib_tsens_point_data[5]; struct device_node *of_node = NULL; const struct of_device_id *id; of_node = tmdev->pdev->dev.of_node; if (of_node == NULL) { pr_err("Invalid of_node??\n"); return -EINVAL; } if (!of_match_node(tsens_match, of_node)) { pr_err("Need to read SoC specific fuse map\n"); return -ENODEV; } id = of_match_node(tsens_match, of_node); if (id == NULL) { pr_err("can not find tsens_match of_node\n"); return -ENODEV; } if (!tmdev->calibration_less_mode) { if (!strcmp(id->compatible, "qcom,mdm9640v2-tsens")) { calib_data[0] = readl_relaxed( TSENS_EEPROM_9640V2(tmdev->tsens_calib_addr)); calib_data[1] = readl_relaxed( (TSENS_EEPROM_9640V2(tmdev->tsens_calib_addr) + 0x4)); tsens_calibration_mode = (calib_data[1] & TSENS_9640_CAL_SEL) >> TSENS_9640_CAL_SEL_SHIFT; pr_debug("calib mode is %d\n", tsens_calibration_mode); } else { calib_data[0] = readl_relaxed( TSENS_EEPROM(tmdev->tsens_calib_addr)); calib_data[1] = readl_relaxed( (TSENS_EEPROM(tmdev->tsens_calib_addr) + 0x4)); tsens_calibration_mode = (calib_data[1] & TSENS_ZIRC_CAL_SEL) >> TSENS_ZIRC_CAL_SEL_SHIFT; (calib_data[1] & TSENS_9640_CAL_SEL) >> TSENS_9640_CAL_SEL_SHIFT; pr_debug("calib mode is %d\n", tsens_calibration_mode); } } if (tsens_calibration_mode == TSENS_TWO_POINT_CALIB) { tsens_base0_data = (calib_data[0] & TSENS_BASE0_ZIRC_MASK); tsens_base1_data = (calib_data[0] & TSENS_BASE1_ZIRC_MASK) >> TSENS_BASE1_ZIRC_SHIFT; tsens0_point = (calib_data[0] & TSENS0_OFFSET_ZIRC_MASK) >> TSENS0_OFFSET_ZIRC_SHIFT; tsens1_point = (calib_data[0] & TSENS1_OFFSET_ZIRC_MASK) >> TSENS1_OFFSET_ZIRC_SHIFT; tsens2_point = (calib_data[0] & TSENS2_OFFSET_ZIRC_MASK) >> TSENS2_OFFSET_ZIRC_SHIFT; tsens3_point = (calib_data[1] & TSENS3_OFFSET_ZIRC_MASK); tsens4_point = (calib_data[1] & TSENS4_OFFSET_ZIRC_MASK) >> TSENS4_OFFSET_ZIRC_SHIFT; tsens_base0_data = (calib_data[0] & TSENS_BASE0_9640_MASK); tsens_base1_data = (calib_data[0] & TSENS_BASE1_9640_MASK) >> TSENS_BASE1_9640_SHIFT; tsens0_point = (calib_data[0] & TSENS0_OFFSET_9640_MASK) >> TSENS0_OFFSET_9640_SHIFT; tsens1_point = (calib_data[0] & TSENS1_OFFSET_9640_MASK) >> TSENS1_OFFSET_9640_SHIFT; tsens2_point = (calib_data[0] & TSENS2_OFFSET_9640_MASK) >> TSENS2_OFFSET_9640_SHIFT; tsens3_point = (calib_data[1] & TSENS3_OFFSET_9640_MASK); tsens4_point = (calib_data[1] & TSENS4_OFFSET_9640_MASK) >> TSENS4_OFFSET_9640_SHIFT; calib_tsens_point_data[0] = tsens0_point; calib_tsens_point_data[1] = tsens1_point; calib_tsens_point_data[2] = tsens2_point; Loading Loading @@ -5363,8 +5401,8 @@ static int tsens_calib_sensors(struct tsens_tm_device *tmdev) rc = tsens_calib_8994_sensors(tmdev); else if (tmdev->calib_mode == TSENS_CALIB_FUSE_MAP_MSM8909) rc = tsens_calib_msm8909_sensors(tmdev); else if (tmdev->calib_mode == TSENS_CALIB_FUSE_MAP_MSMZIRC) rc = tsens_calib_msmzirc_sensors(tmdev); else if (tmdev->calib_mode == TSENS_CALIB_FUSE_MAP_MDM9640) rc = tsens_calib_mdm9640_sensors(tmdev); else if (tmdev->calib_mode == TSENS_CALIB_FUSE_MAP_8992) rc = tsens_calib_8992_sensors(tmdev); else if (tmdev->calib_mode == TSENS_CALIB_FUSE_MAP_MSM8952) Loading Loading @@ -5480,9 +5518,10 @@ static int get_device_tree_data(struct platform_device *pdev, } if (!strcmp(id->compatible, "qcom,mdm9630-tsens") || (!strcmp(id->compatible, "qcom,msmzirc-tsens")) || (!strcmp(id->compatible, "qcom,mdm9640-tsens")) || (!strcmp(id->compatible, "qcom,msm8994-tsens")) || (!strcmp(id->compatible, "qcom,msm8992-tsens"))) (!strcmp(id->compatible, "qcom,msm8992-tsens")) || (!strcmp(id->compatible, "qcom,mdm9640v2-tsens"))) tmdev->tsens_type = TSENS_TYPE2; else if (!strcmp(id->compatible, "qcom,msm8996-tsens")) tmdev->tsens_type = TSENS_TYPE3; Loading @@ -5501,13 +5540,14 @@ static int get_device_tree_data(struct platform_device *pdev, "qcom,valid-status-check"); if (!tmdev->tsens_valid_status_check) { if (!strcmp(id->compatible, "qcom,msm8994-tsens") || (!strcmp(id->compatible, "qcom,msmzirc-tsens")) || (!strcmp(id->compatible, "qcom,mdm9640-tsens")) || (!strcmp(id->compatible, "qcom,msm8992-tsens")) || (!strcmp(id->compatible, "qcom,msm8996-tsens")) || (!strcmp(id->compatible, "qcom,msm8952-tsens")) || (!strcmp(id->compatible, "qcom,msm8937-tsens")) || (!strcmp(id->compatible, "qcom,msm8953-tsens")) || (!strcmp(id->compatible, "qcom,msmcobalt-tsens"))) (!strcmp(id->compatible, "qcom,msmcobalt-tsens")) || (!strcmp(id->compatible, "qcom,mdm9640v2-tsens"))) tmdev->tsens_valid_status_check = true; } Loading Loading @@ -5760,6 +5800,25 @@ int tsens_sensor_sw_idx = 0; static int tsens_thermal_zone_register(struct tsens_tm_device *tmdev) { int rc = 0, i = 0; const struct of_device_id *id; struct device_node *of_node; of_node = tmdev->pdev->dev.of_node; if (of_node == NULL) { pr_err("Invalid of_node??\n"); return -EINVAL; } if (!of_match_node(tsens_match, of_node)) { pr_err("Need to read SoC specific fuse map\n"); return -ENODEV; } id = of_match_node(tsens_match, of_node); if (id == NULL) { pr_err("can not find tsens_match of_node\n"); return -ENODEV; } if (tmdev == NULL) { pr_err("Invalid tsens instance\n"); Loading @@ -5768,9 +5827,14 @@ static int tsens_thermal_zone_register(struct tsens_tm_device *tmdev) for (i = 0; i < tmdev->tsens_num_sensor; i++) { char name[18]; if ((!strcmp(id->compatible, "qcom,mdm9640-tsens")) || (!strcmp(id->compatible, "qcom,mdm9640v2-tsens"))) snprintf(name, sizeof(name), "tsens_tz_sensor%d", tmdev->sensor[i].sensor_hw_num); else snprintf(name, sizeof(name), "tsens_tz_sensor%d", tsens_sensor_sw_idx); tmdev->sensor[i].mode = THERMAL_DEVICE_ENABLED; tmdev->sensor[i].tm = tmdev; if (tmdev->tsens_type == TSENS_TYPE3) { Loading Loading
Documentation/devicetree/bindings/thermal/tsens.txt +2 −1 Original line number Diff line number Diff line Loading @@ -24,12 +24,13 @@ Required properties: should be "qcom,msm8939-tsens" for 8939 TSENS driver. should be "qcom,msm8909-tsens" for 8909 TSENS driver. should be "qcom,msm8952-tsens" for 8952 TSENS driver. should be "qcom,msmzirc-tsens" for zirc TSENS driver. should be "qcom,mdm9640-tsens" for 9640 TSENS driver. should be "qcom,mdm9607-tsens" for 9607 TSENS driver. should be "qcom,msm8953-tsens" for 8953 TSENS driver. should be "qcom,msm8937-tsens" for 8937 TSENS driver. should be "qcom,msm8917-tsens" for 8917 TSENS driver. should be "qcom,msmcobalt-tsens" for cobalt TSENS driver. should be "qcom,mdm9640v2-tsens" for 9640v2 TSENS driver. The compatible property is used to identify the respective fusemap to use for the corresponding SoC. - reg : offset and length of the TSENS registers. Loading
drivers/thermal/msm-tsens.c +112 −48 Original line number Diff line number Diff line Loading @@ -150,6 +150,7 @@ #define TSENS_SN_REMOTE_CONFIG(n) ((n) + 0x3c) #define TSENS_EEPROM(n) ((n) + 0xd0) #define TSENS_EEPROM_9640V2(n) ((n) + 0x8) #define TSENS_EEPROM_REDUNDANCY_SEL(n) ((n) + 0x444) #define TSENS_EEPROM_BACKUP_REGION(n) ((n) + 0x440) Loading Loading @@ -586,20 +587,21 @@ #define TSENS_MSM8909_D120_WA_S1 6 #define TSENS_MSM8909_D120_WA_S3 9 #define TSENS_MSM8909_D120_WA_S4 10 #define TSENS_ZIRC_CAL_SEL 0x700 #define TSENS_ZIRC_CAL_SEL_SHIFT 8 #define TSENS_BASE0_ZIRC_MASK 0x3ff #define TSENS_BASE1_ZIRC_MASK 0xffc00 #define TSENS_BASE1_ZIRC_SHIFT 10 #define TSENS0_OFFSET_ZIRC_MASK 0xf00000 #define TSENS0_OFFSET_ZIRC_SHIFT 20 #define TSENS1_OFFSET_ZIRC_MASK 0xf000000 #define TSENS1_OFFSET_ZIRC_SHIFT 24 #define TSENS2_OFFSET_ZIRC_MASK 0xf0000000 #define TSENS2_OFFSET_ZIRC_SHIFT 28 #define TSENS3_OFFSET_ZIRC_MASK 0xf #define TSENS4_OFFSET_ZIRC_MASK 0xf0 #define TSENS4_OFFSET_ZIRC_SHIFT 4 #define TSENS_9640_CAL_SEL 0x700 #define TSENS_9640_CAL_SEL_SHIFT 8 #define TSENS_BASE0_9640_MASK 0x3ff #define TSENS_BASE1_9640_MASK 0xffc00 #define TSENS_BASE1_9640_SHIFT 10 #define TSENS0_OFFSET_9640_MASK 0xf00000 #define TSENS0_OFFSET_9640_SHIFT 20 #define TSENS1_OFFSET_9640_MASK 0xf000000 #define TSENS1_OFFSET_9640_SHIFT 24 #define TSENS2_OFFSET_9640_MASK 0xf0000000 #define TSENS2_OFFSET_9640_SHIFT 28 #define TSENS3_OFFSET_9640_MASK 0xf #define TSENS4_OFFSET_9640_MASK 0xf0 #define TSENS4_OFFSET_9640_SHIFT 4 #define TSENS_CONTR_14_BASE0_MASK 0x000000ff #define TSENS_CONTR_14_BASE1_MASK 0xff000000 Loading Loading @@ -747,7 +749,7 @@ enum tsens_calib_fuse_map_type { TSENS_CALIB_FUSE_MAP_8939, TSENS_CALIB_FUSE_MAP_8994, TSENS_CALIB_FUSE_MAP_MSM8909, TSENS_CALIB_FUSE_MAP_MSMZIRC, TSENS_CALIB_FUSE_MAP_MDM9640, TSENS_CALIB_FUSE_MAP_NONE, TSENS_CALIB_FUSE_MAP_8992, TSENS_CALIB_FUSE_MAP_MSM8952, Loading Loading @@ -905,8 +907,8 @@ static struct of_device_id tsens_match[] = { { .compatible = "qcom,msm8909-tsens", .data = (void *)TSENS_CALIB_FUSE_MAP_MSM8909, }, { .compatible = "qcom,msmzirc-tsens", .data = (void *)TSENS_CALIB_FUSE_MAP_MSMZIRC, { .compatible = "qcom,mdm9640-tsens", .data = (void *)TSENS_CALIB_FUSE_MAP_MDM9640, }, { .compatible = "qcom,msm8996-tsens", .data = (void *)TSENS_CALIB_FUSE_MAP_NONE, Loading @@ -932,6 +934,9 @@ static struct of_device_id tsens_match[] = { { .compatible = "qcom,msmcobalt-tsens", .data = (void *)TSENS_CALIB_FUSE_MAP_NONE, }, { .compatible = "qcom,mdm9640v2-tsens", .data = (void *)TSENS_CALIB_FUSE_MAP_MDM9640, }, {} }; Loading Loading @@ -976,7 +981,8 @@ static int32_t get_tsens_sensor_for_client_id(struct tsens_tm_device *tmdev, } if (!strcmp(id->compatible, "qcom,msm8996-tsens") || (!strcmp(id->compatible, "qcom,msmcobalt-tsens"))) { (!strcmp(id->compatible, "qcom,mdm9640v2-tsens") || (!strcmp(id->compatible, "qcom,msmcobalt-tsens")))) { while (i < tmdev->tsens_num_sensor && !id_found) { if (tmdev->sensor[i].sensor_client_id == sensor_client_id) { Loading Loading @@ -5255,7 +5261,7 @@ compute_intercept_slope: return 0; } static int tsens_calib_msmzirc_sensors(struct tsens_tm_device *tmdev) static int tsens_calib_mdm9640_sensors(struct tsens_tm_device *tmdev) { int i = 0, tsens_base0_data = 0, tsens_base1_data = 0; int tsens0_point = 0, tsens1_point = 0, tsens2_point = 0; Loading @@ -5263,32 +5269,64 @@ static int tsens_calib_msmzirc_sensors(struct tsens_tm_device *tmdev) int tsens_calibration_mode = 0; uint32_t calib_data[2] = {0, 0}; uint32_t calib_tsens_point_data[5]; struct device_node *of_node = NULL; const struct of_device_id *id; of_node = tmdev->pdev->dev.of_node; if (of_node == NULL) { pr_err("Invalid of_node??\n"); return -EINVAL; } if (!of_match_node(tsens_match, of_node)) { pr_err("Need to read SoC specific fuse map\n"); return -ENODEV; } id = of_match_node(tsens_match, of_node); if (id == NULL) { pr_err("can not find tsens_match of_node\n"); return -ENODEV; } if (!tmdev->calibration_less_mode) { if (!strcmp(id->compatible, "qcom,mdm9640v2-tsens")) { calib_data[0] = readl_relaxed( TSENS_EEPROM_9640V2(tmdev->tsens_calib_addr)); calib_data[1] = readl_relaxed( (TSENS_EEPROM_9640V2(tmdev->tsens_calib_addr) + 0x4)); tsens_calibration_mode = (calib_data[1] & TSENS_9640_CAL_SEL) >> TSENS_9640_CAL_SEL_SHIFT; pr_debug("calib mode is %d\n", tsens_calibration_mode); } else { calib_data[0] = readl_relaxed( TSENS_EEPROM(tmdev->tsens_calib_addr)); calib_data[1] = readl_relaxed( (TSENS_EEPROM(tmdev->tsens_calib_addr) + 0x4)); tsens_calibration_mode = (calib_data[1] & TSENS_ZIRC_CAL_SEL) >> TSENS_ZIRC_CAL_SEL_SHIFT; (calib_data[1] & TSENS_9640_CAL_SEL) >> TSENS_9640_CAL_SEL_SHIFT; pr_debug("calib mode is %d\n", tsens_calibration_mode); } } if (tsens_calibration_mode == TSENS_TWO_POINT_CALIB) { tsens_base0_data = (calib_data[0] & TSENS_BASE0_ZIRC_MASK); tsens_base1_data = (calib_data[0] & TSENS_BASE1_ZIRC_MASK) >> TSENS_BASE1_ZIRC_SHIFT; tsens0_point = (calib_data[0] & TSENS0_OFFSET_ZIRC_MASK) >> TSENS0_OFFSET_ZIRC_SHIFT; tsens1_point = (calib_data[0] & TSENS1_OFFSET_ZIRC_MASK) >> TSENS1_OFFSET_ZIRC_SHIFT; tsens2_point = (calib_data[0] & TSENS2_OFFSET_ZIRC_MASK) >> TSENS2_OFFSET_ZIRC_SHIFT; tsens3_point = (calib_data[1] & TSENS3_OFFSET_ZIRC_MASK); tsens4_point = (calib_data[1] & TSENS4_OFFSET_ZIRC_MASK) >> TSENS4_OFFSET_ZIRC_SHIFT; tsens_base0_data = (calib_data[0] & TSENS_BASE0_9640_MASK); tsens_base1_data = (calib_data[0] & TSENS_BASE1_9640_MASK) >> TSENS_BASE1_9640_SHIFT; tsens0_point = (calib_data[0] & TSENS0_OFFSET_9640_MASK) >> TSENS0_OFFSET_9640_SHIFT; tsens1_point = (calib_data[0] & TSENS1_OFFSET_9640_MASK) >> TSENS1_OFFSET_9640_SHIFT; tsens2_point = (calib_data[0] & TSENS2_OFFSET_9640_MASK) >> TSENS2_OFFSET_9640_SHIFT; tsens3_point = (calib_data[1] & TSENS3_OFFSET_9640_MASK); tsens4_point = (calib_data[1] & TSENS4_OFFSET_9640_MASK) >> TSENS4_OFFSET_9640_SHIFT; calib_tsens_point_data[0] = tsens0_point; calib_tsens_point_data[1] = tsens1_point; calib_tsens_point_data[2] = tsens2_point; Loading Loading @@ -5363,8 +5401,8 @@ static int tsens_calib_sensors(struct tsens_tm_device *tmdev) rc = tsens_calib_8994_sensors(tmdev); else if (tmdev->calib_mode == TSENS_CALIB_FUSE_MAP_MSM8909) rc = tsens_calib_msm8909_sensors(tmdev); else if (tmdev->calib_mode == TSENS_CALIB_FUSE_MAP_MSMZIRC) rc = tsens_calib_msmzirc_sensors(tmdev); else if (tmdev->calib_mode == TSENS_CALIB_FUSE_MAP_MDM9640) rc = tsens_calib_mdm9640_sensors(tmdev); else if (tmdev->calib_mode == TSENS_CALIB_FUSE_MAP_8992) rc = tsens_calib_8992_sensors(tmdev); else if (tmdev->calib_mode == TSENS_CALIB_FUSE_MAP_MSM8952) Loading Loading @@ -5480,9 +5518,10 @@ static int get_device_tree_data(struct platform_device *pdev, } if (!strcmp(id->compatible, "qcom,mdm9630-tsens") || (!strcmp(id->compatible, "qcom,msmzirc-tsens")) || (!strcmp(id->compatible, "qcom,mdm9640-tsens")) || (!strcmp(id->compatible, "qcom,msm8994-tsens")) || (!strcmp(id->compatible, "qcom,msm8992-tsens"))) (!strcmp(id->compatible, "qcom,msm8992-tsens")) || (!strcmp(id->compatible, "qcom,mdm9640v2-tsens"))) tmdev->tsens_type = TSENS_TYPE2; else if (!strcmp(id->compatible, "qcom,msm8996-tsens")) tmdev->tsens_type = TSENS_TYPE3; Loading @@ -5501,13 +5540,14 @@ static int get_device_tree_data(struct platform_device *pdev, "qcom,valid-status-check"); if (!tmdev->tsens_valid_status_check) { if (!strcmp(id->compatible, "qcom,msm8994-tsens") || (!strcmp(id->compatible, "qcom,msmzirc-tsens")) || (!strcmp(id->compatible, "qcom,mdm9640-tsens")) || (!strcmp(id->compatible, "qcom,msm8992-tsens")) || (!strcmp(id->compatible, "qcom,msm8996-tsens")) || (!strcmp(id->compatible, "qcom,msm8952-tsens")) || (!strcmp(id->compatible, "qcom,msm8937-tsens")) || (!strcmp(id->compatible, "qcom,msm8953-tsens")) || (!strcmp(id->compatible, "qcom,msmcobalt-tsens"))) (!strcmp(id->compatible, "qcom,msmcobalt-tsens")) || (!strcmp(id->compatible, "qcom,mdm9640v2-tsens"))) tmdev->tsens_valid_status_check = true; } Loading Loading @@ -5760,6 +5800,25 @@ int tsens_sensor_sw_idx = 0; static int tsens_thermal_zone_register(struct tsens_tm_device *tmdev) { int rc = 0, i = 0; const struct of_device_id *id; struct device_node *of_node; of_node = tmdev->pdev->dev.of_node; if (of_node == NULL) { pr_err("Invalid of_node??\n"); return -EINVAL; } if (!of_match_node(tsens_match, of_node)) { pr_err("Need to read SoC specific fuse map\n"); return -ENODEV; } id = of_match_node(tsens_match, of_node); if (id == NULL) { pr_err("can not find tsens_match of_node\n"); return -ENODEV; } if (tmdev == NULL) { pr_err("Invalid tsens instance\n"); Loading @@ -5768,9 +5827,14 @@ static int tsens_thermal_zone_register(struct tsens_tm_device *tmdev) for (i = 0; i < tmdev->tsens_num_sensor; i++) { char name[18]; if ((!strcmp(id->compatible, "qcom,mdm9640-tsens")) || (!strcmp(id->compatible, "qcom,mdm9640v2-tsens"))) snprintf(name, sizeof(name), "tsens_tz_sensor%d", tmdev->sensor[i].sensor_hw_num); else snprintf(name, sizeof(name), "tsens_tz_sensor%d", tsens_sensor_sw_idx); tmdev->sensor[i].mode = THERMAL_DEVICE_ENABLED; tmdev->sensor[i].tm = tmdev; if (tmdev->tsens_type == TSENS_TYPE3) { Loading