@@ -44,8 +44,24 @@ enum sensor_id {
SENSOR_ID_END,
};
+struct rockchip_tsadc_chip {
+ unsigned long temp_passive;
+ unsigned long hw_shut_temp;
+ enum reset_mode reset_mode;
+
+ void (*irq_handle)(void __iomem *reg);
+ void (*initialize)(enum reset_mode reset_mode, int chn,
+ void __iomem *reg,
+ unsigned long hw_shut_temp);
+ int (*control)(void __iomem *reg, bool on, int chn);
+ int (*code_to_temp)(u32 code);
+ u32 (*temp_to_code)(int temp);
+ void (*set_alarm_temp)(int chn, void __iomem *reg,
+ unsigned long alarm_temp);
+};
+
struct rockchip_thermal_data {
- const struct rockchip_tsadc_platform_data *pdata;
+ const struct rockchip_tsadc_chip *chip;
struct thermal_zone_device *tz[SENSOR_ID_END];
struct thermal_cooling_device *cdev;
void __iomem *regs;
@@ -62,21 +78,6 @@ struct rockchip_thermal_data {
struct clk *pclk;
};
-struct rockchip_tsadc_platform_data {
- unsigned long temp_passive;
- unsigned long hw_shut_temp;
- int reset_mode;
-
- void (*irq_handle)(void __iomem *reg);
- void (*initialize)(int reset_mode, int chn, void __iomem *reg,
- unsigned long hw_shut_temp);
- int (*control)(void __iomem *reg, bool on, int chn);
- int (*code_to_temp)(u32 code);
- u32 (*temp_to_code)(int temp);
- void (*set_alarm_temp)(int chn, void __iomem *reg,
- unsigned long alarm_temp);
-};
-
/* TSADC V2 Sensor info define: */
#define TSADCV2_AUTO_CON 0x04
#define TSADCV2_INT_EN 0x08
@@ -234,7 +235,8 @@ static bool rk_tsadcv2_get_tshut_polarity_high(void __iomem *regs)
* the channel, and you can set TSHUT output to gpio to reset the whole chip,
* and you can set TSHUT output to cru to reset the whole chip.
*/
-static void rk_tsadcv2_initialize(int reset_mode, int chn, void __iomem *regs,
+static void rk_tsadcv2_initialize(enum reset_mode reset_mode, int chn,
+ void __iomem *regs,
unsigned long hw_shut_temp)
{
u32 shutdown_value;
@@ -279,7 +281,7 @@ static void rk_tsadcv2_alarm_temp(int chn, void __iomem *regs,
TSADCV2_COMP_INT(chn));
}
-static const struct rockchip_tsadc_platform_data rk3288_tsadc_data = {
+static const struct rockchip_tsadc_chip rk3288_tsadc_data = {
.reset_mode = GPIO, /* default TSHUT via GPIO give PMIC */
.temp_passive = 80000,
.hw_shut_temp = 120000,
@@ -303,7 +305,7 @@ MODULE_DEVICE_TABLE(of, of_rockchip_thermal_match);
static void rockchip_set_alarm_temp(struct rockchip_thermal_data *data,
int alarm_temp, int chn)
{
- const struct rockchip_tsadc_platform_data *tsadc = data->pdata;
+ const struct rockchip_tsadc_chip *tsadc = data->chip;
data->alarm_temp = alarm_temp;
@@ -352,7 +354,7 @@ static void rockchip_thermal_initialize(struct rockchip_thermal_data *data)
static void rockchip_thermal_control(struct rockchip_thermal_data *data,
bool on, int chn)
{
- const struct rockchip_tsadc_platform_data *tsadc = data->pdata;
+ const struct rockchip_tsadc_chip *tsadc = data->chip;
if (tsadc->control)
tsadc->control(data->regs, on, chn);
@@ -372,7 +374,7 @@ static void rockchip_thermal_control(struct rockchip_thermal_data *data,
static irqreturn_t rockchip_thermal_alarm_irq_thread(int irq, void *dev)
{
struct rockchip_thermal_data *data = dev;
- const struct rockchip_tsadc_platform_data *tsadc = data->pdata;
+ const struct rockchip_tsadc_chip *tsadc = data->chip;
int chn;
tsadc->irq_handle(data->regs);
@@ -386,7 +388,7 @@ static irqreturn_t rockchip_thermal_alarm_irq_thread(int irq, void *dev)
static int rockchip_thermal_set_trips(void *zone, long low, long high)
{
struct rockchip_thermal_data *data = zone;
- const struct rockchip_tsadc_platform_data *tsadc = data->pdata;
+ const struct rockchip_tsadc_chip *tsadc = data->chip;
low = clamp_val(low, LONG_MIN, LONG_MAX);
high = clamp_val(high, LONG_MIN, LONG_MAX);
@@ -407,7 +409,7 @@ static int rockchip_thermal_set_trips(void *zone, long low, long high)
static int rockchip_thermal_get_cpu_temp(void *zone, long *out_temp)
{
struct rockchip_thermal_data *data = zone;
- const struct rockchip_tsadc_platform_data *tsadc = data->pdata;
+ const struct rockchip_tsadc_chip *tsadc = data->chip;
u32 val;
/* the A/D value of the channel last conversion need some time */
@@ -423,7 +425,7 @@ static int rockchip_thermal_get_cpu_temp(void *zone, long *out_temp)
static int rockchip_thermal_get_gpu_temp(void *zone, long *out_temp)
{
struct rockchip_thermal_data *data = zone;
- const struct rockchip_tsadc_platform_data *tsadc = data->pdata;
+ const struct rockchip_tsadc_chip *tsadc = data->chip;
u32 val;
/* the A/D value of the channel last conversion need some time */
@@ -444,19 +446,19 @@ static int rockchip_configure_from_dt(struct device *dev,
if (of_property_read_u32(np, "hw-shut-temp", &shut_temp)) {
dev_warn(dev, "Missing default shutdown temp property\n");
- data->hw_shut_temp = data->pdata->hw_shut_temp;
+ data->hw_shut_temp = data->chip->hw_shut_temp;
} else {
data->hw_shut_temp = shut_temp;
}
if (of_property_read_u32(np, "tsadc-ht-reset-mode", &reset_mode)) {
dev_warn(dev, "Missing default reset mode property\n");
- data->reset_mode = data->pdata->reset_mode;
+ data->reset_mode = data->chip->reset_mode;
} else {
data->reset_mode = reset_mode;
}
- data->temp_passive = data->pdata->temp_passive;
+ data->temp_passive = data->chip->temp_passive;
return 0;
}
@@ -464,7 +466,7 @@ static int rockchip_configure_from_dt(struct device *dev,
static int rockchip_thermal_probe(struct platform_device *pdev)
{
struct rockchip_thermal_data *data;
- const struct rockchip_tsadc_platform_data *tsadc;
+ const struct rockchip_tsadc_chip *tsadc;
const struct of_device_id *match;
struct cpumask clip_cpus;
@@ -489,10 +491,12 @@ static int rockchip_thermal_probe(struct platform_device *pdev)
match = of_match_node(of_rockchip_thermal_match, np);
if (!match)
return -ENXIO;
- data->pdata = (const struct rockchip_tsadc_platform_data *)match->data;
- if (!data->pdata)
+
+ tsadc = (const struct rockchip_tsadc_chip *)match->data;
+ if (!tsadc)
return -EINVAL;
- tsadc = data->pdata;
+
+ data->chip = tsadc;
data->clk = devm_clk_get(&pdev->dev, "tsadc");
if (IS_ERR(data->clk)) {