Commit 62a094e7 authored by Alex Leibovich's avatar Alex Leibovich Committed by Daniel Lezcano

thermal/drivers/armada: Add support for AP807 thermal data

Add support for the AP807 die thermal data. This is the same as AP806,
except for the coefficients.

ap807 values taken from TSENSE_ADC_16FFC spec, which says:
	T(in Celsius) = T(code)*TSENE_GAIN+TSENE_OFFSET
where in default:
	TSENE_OFFSET = 128.9
	TSENE_GAIN = 0.394
Signed-off-by: default avatarAlex Leibovich <alexl@marvell.com>
Tested-by: default avatarsa_ip-sw-jenkins <sa_ip-sw-jenkins@marvell.com>
Reviewed-by: default avatarStefan Chulski <stefanc@marvell.com>
Signed-off-by: default avatarRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Reviewed-by: default avatarMiquel Raynal <miquel.raynal@bootlin.com>
Signed-off-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
Link: https://lore.kernel.org/r/E1qA7yU-00Ea4u-Je@rmk-PC.armlinux.org.uk
parent 705fd8f1
...@@ -231,7 +231,7 @@ static void armada380_init(struct platform_device *pdev, ...@@ -231,7 +231,7 @@ static void armada380_init(struct platform_device *pdev,
regmap_write(priv->syscon, data->syscon_control0_off, reg); regmap_write(priv->syscon, data->syscon_control0_off, reg);
} }
static void armada_ap806_init(struct platform_device *pdev, static void armada_ap80x_init(struct platform_device *pdev,
struct armada_thermal_priv *priv) struct armada_thermal_priv *priv)
{ {
struct armada_thermal_data *data = priv->data; struct armada_thermal_data *data = priv->data;
...@@ -614,7 +614,7 @@ static const struct armada_thermal_data armada380_data = { ...@@ -614,7 +614,7 @@ static const struct armada_thermal_data armada380_data = {
}; };
static const struct armada_thermal_data armada_ap806_data = { static const struct armada_thermal_data armada_ap806_data = {
.init = armada_ap806_init, .init = armada_ap80x_init,
.is_valid_bit = BIT(16), .is_valid_bit = BIT(16),
.temp_shift = 0, .temp_shift = 0,
.temp_mask = 0x3ff, .temp_mask = 0x3ff,
...@@ -637,6 +637,30 @@ static const struct armada_thermal_data armada_ap806_data = { ...@@ -637,6 +637,30 @@ static const struct armada_thermal_data armada_ap806_data = {
.cpu_nr = 4, .cpu_nr = 4,
}; };
static const struct armada_thermal_data armada_ap807_data = {
.init = armada_ap80x_init,
.is_valid_bit = BIT(16),
.temp_shift = 0,
.temp_mask = 0x3ff,
.thresh_shift = 3,
.hyst_shift = 19,
.hyst_mask = 0x3,
.coef_b = -128900LL,
.coef_m = 394ULL,
.coef_div = 1,
.inverted = true,
.signed_sample = true,
.syscon_control0_off = 0x84,
.syscon_control1_off = 0x88,
.syscon_status_off = 0x8C,
.dfx_irq_cause_off = 0x108,
.dfx_irq_mask_off = 0x10C,
.dfx_overheat_irq = BIT(22),
.dfx_server_irq_mask_off = 0x104,
.dfx_server_irq_en = BIT(1),
.cpu_nr = 4,
};
static const struct armada_thermal_data armada_cp110_data = { static const struct armada_thermal_data armada_cp110_data = {
.init = armada_cp110_init, .init = armada_cp110_init,
.is_valid_bit = BIT(10), .is_valid_bit = BIT(10),
...@@ -680,6 +704,10 @@ static const struct of_device_id armada_thermal_id_table[] = { ...@@ -680,6 +704,10 @@ static const struct of_device_id armada_thermal_id_table[] = {
.compatible = "marvell,armada-ap806-thermal", .compatible = "marvell,armada-ap806-thermal",
.data = &armada_ap806_data, .data = &armada_ap806_data,
}, },
{
.compatible = "marvell,armada-ap807-thermal",
.data = &armada_ap807_data,
},
{ {
.compatible = "marvell,armada-cp110-thermal", .compatible = "marvell,armada-cp110-thermal",
.data = &armada_cp110_data, .data = &armada_cp110_data,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment