diff options
-rw-r--r-- | drivers/mfd/db8500-prcmu.c | 53 | ||||
-rw-r--r-- | drivers/thermal/Kconfig | 2 | ||||
-rw-r--r-- | drivers/thermal/db8500_thermal.c | 30 | ||||
-rw-r--r-- | include/linux/platform_data/db8500_thermal.h | 29 |
4 files changed, 17 insertions, 97 deletions
diff --git a/drivers/mfd/db8500-prcmu.c b/drivers/mfd/db8500-prcmu.c index 90e0f21bc49c..518439c79826 100644 --- a/drivers/mfd/db8500-prcmu.c +++ b/drivers/mfd/db8500-prcmu.c | |||
@@ -36,7 +36,6 @@ | |||
36 | #include <linux/regulator/db8500-prcmu.h> | 36 | #include <linux/regulator/db8500-prcmu.h> |
37 | #include <linux/regulator/machine.h> | 37 | #include <linux/regulator/machine.h> |
38 | #include <linux/platform_data/ux500_wdt.h> | 38 | #include <linux/platform_data/ux500_wdt.h> |
39 | #include <linux/platform_data/db8500_thermal.h> | ||
40 | #include "dbx500-prcmu-regs.h" | 39 | #include "dbx500-prcmu-regs.h" |
41 | 40 | ||
42 | /* Index of different voltages to be used when accessing AVSData */ | 41 | /* Index of different voltages to be used when accessing AVSData */ |
@@ -2984,53 +2983,6 @@ static struct ux500_wdt_data db8500_wdt_pdata = { | |||
2984 | .timeout = 600, /* 10 minutes */ | 2983 | .timeout = 600, /* 10 minutes */ |
2985 | .has_28_bits_resolution = true, | 2984 | .has_28_bits_resolution = true, |
2986 | }; | 2985 | }; |
2987 | /* | ||
2988 | * Thermal Sensor | ||
2989 | */ | ||
2990 | |||
2991 | static struct resource db8500_thsens_resources[] = { | ||
2992 | { | ||
2993 | .name = "IRQ_HOTMON_LOW", | ||
2994 | .start = IRQ_PRCMU_HOTMON_LOW, | ||
2995 | .end = IRQ_PRCMU_HOTMON_LOW, | ||
2996 | .flags = IORESOURCE_IRQ, | ||
2997 | }, | ||
2998 | { | ||
2999 | .name = "IRQ_HOTMON_HIGH", | ||
3000 | .start = IRQ_PRCMU_HOTMON_HIGH, | ||
3001 | .end = IRQ_PRCMU_HOTMON_HIGH, | ||
3002 | .flags = IORESOURCE_IRQ, | ||
3003 | }, | ||
3004 | }; | ||
3005 | |||
3006 | static struct db8500_thsens_platform_data db8500_thsens_data = { | ||
3007 | .trip_points[0] = { | ||
3008 | .temp = 70000, | ||
3009 | .type = THERMAL_TRIP_ACTIVE, | ||
3010 | .cdev_name = { | ||
3011 | [0] = "thermal-cpufreq-0", | ||
3012 | }, | ||
3013 | }, | ||
3014 | .trip_points[1] = { | ||
3015 | .temp = 75000, | ||
3016 | .type = THERMAL_TRIP_ACTIVE, | ||
3017 | .cdev_name = { | ||
3018 | [0] = "thermal-cpufreq-0", | ||
3019 | }, | ||
3020 | }, | ||
3021 | .trip_points[2] = { | ||
3022 | .temp = 80000, | ||
3023 | .type = THERMAL_TRIP_ACTIVE, | ||
3024 | .cdev_name = { | ||
3025 | [0] = "thermal-cpufreq-0", | ||
3026 | }, | ||
3027 | }, | ||
3028 | .trip_points[3] = { | ||
3029 | .temp = 85000, | ||
3030 | .type = THERMAL_TRIP_CRITICAL, | ||
3031 | }, | ||
3032 | .num_trips = 4, | ||
3033 | }; | ||
3034 | 2986 | ||
3035 | static const struct mfd_cell common_prcmu_devs[] = { | 2987 | static const struct mfd_cell common_prcmu_devs[] = { |
3036 | { | 2988 | { |
@@ -3054,10 +3006,7 @@ static const struct mfd_cell db8500_prcmu_devs[] = { | |||
3054 | }, | 3006 | }, |
3055 | { | 3007 | { |
3056 | .name = "db8500-thermal", | 3008 | .name = "db8500-thermal", |
3057 | .num_resources = ARRAY_SIZE(db8500_thsens_resources), | 3009 | .of_compatible = "stericsson,db8500-thermal", |
3058 | .resources = db8500_thsens_resources, | ||
3059 | .platform_data = &db8500_thsens_data, | ||
3060 | .pdata_size = sizeof(db8500_thsens_data), | ||
3061 | }, | 3010 | }, |
3062 | }; | 3011 | }; |
3063 | 3012 | ||
diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig index 9966364a6deb..001a21abcc28 100644 --- a/drivers/thermal/Kconfig +++ b/drivers/thermal/Kconfig | |||
@@ -310,7 +310,7 @@ config DOVE_THERMAL | |||
310 | 310 | ||
311 | config DB8500_THERMAL | 311 | config DB8500_THERMAL |
312 | tristate "DB8500 thermal management" | 312 | tristate "DB8500 thermal management" |
313 | depends on MFD_DB8500_PRCMU | 313 | depends on MFD_DB8500_PRCMU && OF |
314 | default y | 314 | default y |
315 | help | 315 | help |
316 | Adds DB8500 thermal management implementation according to the thermal | 316 | Adds DB8500 thermal management implementation according to the thermal |
diff --git a/drivers/thermal/db8500_thermal.c b/drivers/thermal/db8500_thermal.c index b71a999d17d6..d650ae5fdf2a 100644 --- a/drivers/thermal/db8500_thermal.c +++ b/drivers/thermal/db8500_thermal.c | |||
@@ -13,13 +13,24 @@ | |||
13 | #include <linux/mfd/dbx500-prcmu.h> | 13 | #include <linux/mfd/dbx500-prcmu.h> |
14 | #include <linux/module.h> | 14 | #include <linux/module.h> |
15 | #include <linux/of.h> | 15 | #include <linux/of.h> |
16 | #include <linux/platform_data/db8500_thermal.h> | ||
17 | #include <linux/platform_device.h> | 16 | #include <linux/platform_device.h> |
18 | #include <linux/slab.h> | 17 | #include <linux/slab.h> |
19 | #include <linux/thermal.h> | 18 | #include <linux/thermal.h> |
20 | 19 | ||
21 | #define PRCMU_DEFAULT_MEASURE_TIME 0xFFF | 20 | #define PRCMU_DEFAULT_MEASURE_TIME 0xFFF |
22 | #define PRCMU_DEFAULT_LOW_TEMP 0 | 21 | #define PRCMU_DEFAULT_LOW_TEMP 0 |
22 | #define COOLING_DEV_MAX 8 | ||
23 | |||
24 | struct db8500_trip_point { | ||
25 | unsigned long temp; | ||
26 | enum thermal_trip_type type; | ||
27 | char cdev_name[COOLING_DEV_MAX][THERMAL_NAME_LENGTH]; | ||
28 | }; | ||
29 | |||
30 | struct db8500_thsens_platform_data { | ||
31 | struct db8500_trip_point trip_points[THERMAL_MAX_TRIPS]; | ||
32 | int num_trips; | ||
33 | }; | ||
23 | 34 | ||
24 | struct db8500_thermal_zone { | 35 | struct db8500_thermal_zone { |
25 | struct thermal_zone_device *therm_dev; | 36 | struct thermal_zone_device *therm_dev; |
@@ -301,7 +312,6 @@ static void db8500_thermal_work(struct work_struct *work) | |||
301 | dev_dbg(&pzone->therm_dev->device, "thermal work finished.\n"); | 312 | dev_dbg(&pzone->therm_dev->device, "thermal work finished.\n"); |
302 | } | 313 | } |
303 | 314 | ||
304 | #ifdef CONFIG_OF | ||
305 | static struct db8500_thsens_platform_data* | 315 | static struct db8500_thsens_platform_data* |
306 | db8500_thermal_parse_dt(struct platform_device *pdev) | 316 | db8500_thermal_parse_dt(struct platform_device *pdev) |
307 | { | 317 | { |
@@ -370,13 +380,6 @@ err_parse_dt: | |||
370 | dev_err(&pdev->dev, "Parsing device tree data error.\n"); | 380 | dev_err(&pdev->dev, "Parsing device tree data error.\n"); |
371 | return NULL; | 381 | return NULL; |
372 | } | 382 | } |
373 | #else | ||
374 | static inline struct db8500_thsens_platform_data* | ||
375 | db8500_thermal_parse_dt(struct platform_device *pdev) | ||
376 | { | ||
377 | return NULL; | ||
378 | } | ||
379 | #endif | ||
380 | 383 | ||
381 | static int db8500_thermal_probe(struct platform_device *pdev) | 384 | static int db8500_thermal_probe(struct platform_device *pdev) |
382 | { | 385 | { |
@@ -386,11 +389,10 @@ static int db8500_thermal_probe(struct platform_device *pdev) | |||
386 | int low_irq, high_irq, ret = 0; | 389 | int low_irq, high_irq, ret = 0; |
387 | unsigned long dft_low, dft_high; | 390 | unsigned long dft_low, dft_high; |
388 | 391 | ||
389 | if (np) | 392 | if (!np) |
390 | ptrips = db8500_thermal_parse_dt(pdev); | 393 | return -EINVAL; |
391 | else | ||
392 | ptrips = dev_get_platdata(&pdev->dev); | ||
393 | 394 | ||
395 | ptrips = db8500_thermal_parse_dt(pdev); | ||
394 | if (!ptrips) | 396 | if (!ptrips) |
395 | return -EINVAL; | 397 | return -EINVAL; |
396 | 398 | ||
@@ -498,13 +500,11 @@ static int db8500_thermal_resume(struct platform_device *pdev) | |||
498 | return 0; | 500 | return 0; |
499 | } | 501 | } |
500 | 502 | ||
501 | #ifdef CONFIG_OF | ||
502 | static const struct of_device_id db8500_thermal_match[] = { | 503 | static const struct of_device_id db8500_thermal_match[] = { |
503 | { .compatible = "stericsson,db8500-thermal" }, | 504 | { .compatible = "stericsson,db8500-thermal" }, |
504 | {}, | 505 | {}, |
505 | }; | 506 | }; |
506 | MODULE_DEVICE_TABLE(of, db8500_thermal_match); | 507 | MODULE_DEVICE_TABLE(of, db8500_thermal_match); |
507 | #endif | ||
508 | 508 | ||
509 | static struct platform_driver db8500_thermal_driver = { | 509 | static struct platform_driver db8500_thermal_driver = { |
510 | .driver = { | 510 | .driver = { |
diff --git a/include/linux/platform_data/db8500_thermal.h b/include/linux/platform_data/db8500_thermal.h deleted file mode 100644 index 55e55750a165..000000000000 --- a/include/linux/platform_data/db8500_thermal.h +++ /dev/null | |||
@@ -1,29 +0,0 @@ | |||
1 | /* SPDX-License-Identifier: GPL-2.0-or-later */ | ||
2 | /* | ||
3 | * db8500_thermal.h - DB8500 Thermal Management Implementation | ||
4 | * | ||
5 | * Copyright (C) 2012 ST-Ericsson | ||
6 | * Copyright (C) 2012 Linaro Ltd. | ||
7 | * | ||
8 | * Author: Hongbo Zhang <hongbo.zhang@linaro.com> | ||
9 | */ | ||
10 | |||
11 | #ifndef _DB8500_THERMAL_H_ | ||
12 | #define _DB8500_THERMAL_H_ | ||
13 | |||
14 | #include <linux/thermal.h> | ||
15 | |||
16 | #define COOLING_DEV_MAX 8 | ||
17 | |||
18 | struct db8500_trip_point { | ||
19 | unsigned long temp; | ||
20 | enum thermal_trip_type type; | ||
21 | char cdev_name[COOLING_DEV_MAX][THERMAL_NAME_LENGTH]; | ||
22 | }; | ||
23 | |||
24 | struct db8500_thsens_platform_data { | ||
25 | struct db8500_trip_point trip_points[THERMAL_MAX_TRIPS]; | ||
26 | int num_trips; | ||
27 | }; | ||
28 | |||
29 | #endif /* _DB8500_THERMAL_H_ */ | ||