Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b0d70338 authored by Caesar Wang's avatar Caesar Wang Committed by Eduardo Valentin
Browse files

thermal: rockchip: Support the RK3399 SoCs in thermal driver



The RK3399 SoCs have two Temperature Sensors, channel 0 is for CPU.
channel 1 is for GPU.

Signed-off-by: default avatarCaesar Wang <wxt@rock-chips.com>
Signed-off-by: default avatarEduardo Valentin <edubezval@gmail.com>
parent 7b02a5e7
Loading
Loading
Loading
Loading
+66 −0
Original line number Diff line number Diff line
@@ -292,6 +292,44 @@ static const struct tsadc_table v3_code_table[] = {
	{TSADCV3_DATA_MASK, 125000},
};

static const struct tsadc_table v4_code_table[] = {
	{TSADCV3_DATA_MASK, -40000},
	{431, -40000},
	{426, -35000},
	{421, -30000},
	{415, -25000},
	{410, -20000},
	{405, -15000},
	{399, -10000},
	{394, -5000},
	{389, 0},
	{383, 5000},
	{378, 10000},
	{373, 15000},
	{367, 20000},
	{362, 25000},
	{357, 30000},
	{351, 35000},
	{346, 40000},
	{340, 45000},
	{335, 50000},
	{330, 55000},
	{324, 60000},
	{319, 65000},
	{313, 70000},
	{308, 75000},
	{302, 80000},
	{297, 85000},
	{291, 90000},
	{286, 95000},
	{281, 100000},
	{275, 105000},
	{270, 110000},
	{264, 115000},
	{259, 120000},
	{253, 125000},
};

static u32 rk_tsadcv2_temp_to_code(struct chip_tsadc_table table,
				   int temp)
{
@@ -555,6 +593,30 @@ static const struct rockchip_tsadc_chip rk3368_tsadc_data = {
	},
};

static const struct rockchip_tsadc_chip rk3399_tsadc_data = {
	.chn_id[SENSOR_CPU] = 0, /* cpu sensor is channel 0 */
	.chn_id[SENSOR_GPU] = 1, /* gpu sensor is channel 1 */
	.chn_num = 2, /* two channels for tsadc */

	.tshut_mode = TSHUT_MODE_GPIO, /* default TSHUT via GPIO give PMIC */
	.tshut_polarity = TSHUT_LOW_ACTIVE, /* default TSHUT LOW ACTIVE */
	.tshut_temp = 95000,

	.initialize = rk_tsadcv2_initialize,
	.irq_ack = rk_tsadcv1_irq_ack,
	.control = rk_tsadcv2_control,
	.get_temp = rk_tsadcv2_get_temp,
	.set_tshut_temp = rk_tsadcv2_tshut_temp,
	.set_tshut_mode = rk_tsadcv2_tshut_mode,

	.table = {
		.id = v4_code_table,
		.length = ARRAY_SIZE(v4_code_table),
		.data_mask = TSADCV3_DATA_MASK,
		.mode = ADC_DECREMENT,
	},
};

static const struct of_device_id of_rockchip_thermal_match[] = {
	{
		.compatible = "rockchip,rk3228-tsadc",
@@ -568,6 +630,10 @@ static const struct of_device_id of_rockchip_thermal_match[] = {
		.compatible = "rockchip,rk3368-tsadc",
		.data = (void *)&rk3368_tsadc_data,
	},
	{
		.compatible = "rockchip,rk3399-tsadc",
		.data = (void *)&rk3399_tsadc_data,
	},
	{ /* end */ },
};
MODULE_DEVICE_TABLE(of, of_rockchip_thermal_match);