diff options
| -rw-r--r-- | drivers/thermal/rockchip_thermal.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/drivers/thermal/rockchip_thermal.c b/drivers/thermal/rockchip_thermal.c index 6dc7fc516abf..bda1ca199abd 100644 --- a/drivers/thermal/rockchip_thermal.c +++ b/drivers/thermal/rockchip_thermal.c | |||
| @@ -225,11 +225,15 @@ struct rockchip_thermal_data { | |||
| 225 | #define GRF_TSADC_TESTBIT_L 0x0e648 | 225 | #define GRF_TSADC_TESTBIT_L 0x0e648 |
| 226 | #define GRF_TSADC_TESTBIT_H 0x0e64c | 226 | #define GRF_TSADC_TESTBIT_H 0x0e64c |
| 227 | 227 | ||
| 228 | #define PX30_GRF_SOC_CON2 0x0408 | ||
| 229 | |||
| 228 | #define GRF_SARADC_TESTBIT_ON (0x10001 << 2) | 230 | #define GRF_SARADC_TESTBIT_ON (0x10001 << 2) |
| 229 | #define GRF_TSADC_TESTBIT_H_ON (0x10001 << 2) | 231 | #define GRF_TSADC_TESTBIT_H_ON (0x10001 << 2) |
| 230 | #define GRF_TSADC_VCM_EN_L (0x10001 << 7) | 232 | #define GRF_TSADC_VCM_EN_L (0x10001 << 7) |
| 231 | #define GRF_TSADC_VCM_EN_H (0x10001 << 7) | 233 | #define GRF_TSADC_VCM_EN_H (0x10001 << 7) |
| 232 | 234 | ||
| 235 | #define GRF_CON_TSADC_CH_INV (0x10001 << 1) | ||
| 236 | |||
| 233 | /** | 237 | /** |
| 234 | * struct tsadc_table - code to temperature conversion table | 238 | * struct tsadc_table - code to temperature conversion table |
| 235 | * @code: the value of adc channel | 239 | * @code: the value of adc channel |
| @@ -692,6 +696,13 @@ static void rk_tsadcv3_initialize(struct regmap *grf, void __iomem *regs, | |||
| 692 | regs + TSADCV2_AUTO_CON); | 696 | regs + TSADCV2_AUTO_CON); |
| 693 | } | 697 | } |
| 694 | 698 | ||
| 699 | static void rk_tsadcv4_initialize(struct regmap *grf, void __iomem *regs, | ||
| 700 | enum tshut_polarity tshut_polarity) | ||
| 701 | { | ||
| 702 | rk_tsadcv2_initialize(grf, regs, tshut_polarity); | ||
| 703 | regmap_write(grf, PX30_GRF_SOC_CON2, GRF_CON_TSADC_CH_INV); | ||
| 704 | } | ||
| 705 | |||
| 695 | static void rk_tsadcv2_irq_ack(void __iomem *regs) | 706 | static void rk_tsadcv2_irq_ack(void __iomem *regs) |
| 696 | { | 707 | { |
| 697 | u32 val; | 708 | u32 val; |
| @@ -821,6 +832,30 @@ static void rk_tsadcv2_tshut_mode(int chn, void __iomem *regs, | |||
| 821 | writel_relaxed(val, regs + TSADCV2_INT_EN); | 832 | writel_relaxed(val, regs + TSADCV2_INT_EN); |
| 822 | } | 833 | } |
| 823 | 834 | ||
| 835 | static const struct rockchip_tsadc_chip px30_tsadc_data = { | ||
| 836 | .chn_id[SENSOR_CPU] = 0, /* cpu sensor is channel 0 */ | ||
| 837 | .chn_id[SENSOR_GPU] = 1, /* gpu sensor is channel 1 */ | ||
| 838 | .chn_num = 2, /* 2 channels for tsadc */ | ||
| 839 | |||
| 840 | .tshut_mode = TSHUT_MODE_CRU, /* default TSHUT via CRU */ | ||
| 841 | .tshut_temp = 95000, | ||
| 842 | |||
| 843 | .initialize = rk_tsadcv4_initialize, | ||
| 844 | .irq_ack = rk_tsadcv3_irq_ack, | ||
| 845 | .control = rk_tsadcv3_control, | ||
| 846 | .get_temp = rk_tsadcv2_get_temp, | ||
| 847 | .set_alarm_temp = rk_tsadcv2_alarm_temp, | ||
| 848 | .set_tshut_temp = rk_tsadcv2_tshut_temp, | ||
| 849 | .set_tshut_mode = rk_tsadcv2_tshut_mode, | ||
| 850 | |||
| 851 | .table = { | ||
| 852 | .id = rk3328_code_table, | ||
| 853 | .length = ARRAY_SIZE(rk3328_code_table), | ||
| 854 | .data_mask = TSADCV2_DATA_MASK, | ||
| 855 | .mode = ADC_INCREMENT, | ||
| 856 | }, | ||
| 857 | }; | ||
| 858 | |||
| 824 | static const struct rockchip_tsadc_chip rv1108_tsadc_data = { | 859 | static const struct rockchip_tsadc_chip rv1108_tsadc_data = { |
| 825 | .chn_id[SENSOR_CPU] = 0, /* cpu sensor is channel 0 */ | 860 | .chn_id[SENSOR_CPU] = 0, /* cpu sensor is channel 0 */ |
| 826 | .chn_num = 1, /* one channel for tsadc */ | 861 | .chn_num = 1, /* one channel for tsadc */ |
| @@ -993,6 +1028,9 @@ static const struct rockchip_tsadc_chip rk3399_tsadc_data = { | |||
| 993 | }; | 1028 | }; |
| 994 | 1029 | ||
| 995 | static const struct of_device_id of_rockchip_thermal_match[] = { | 1030 | static const struct of_device_id of_rockchip_thermal_match[] = { |
| 1031 | { .compatible = "rockchip,px30-tsadc", | ||
| 1032 | .data = (void *)&px30_tsadc_data, | ||
| 1033 | }, | ||
| 996 | { | 1034 | { |
| 997 | .compatible = "rockchip,rv1108-tsadc", | 1035 | .compatible = "rockchip,rv1108-tsadc", |
| 998 | .data = (void *)&rv1108_tsadc_data, | 1036 | .data = (void *)&rv1108_tsadc_data, |
