diff options
author | Ezequiel Garcia <ezequiel.garcia@free-electrons.com> | 2014-05-06 12:59:48 -0400 |
---|---|---|
committer | Zhang Rui <rui.zhang@intel.com> | 2014-05-15 05:12:47 -0400 |
commit | 04bf3d7e5ba862214f1c761778c414be95e2dfb9 (patch) | |
tree | 39bc4096c4c00b41c819a6c126af579aab488832 /drivers/thermal/armada_thermal.c | |
parent | 1fcacca40a1c9b45b5390c86c4eefd99ad0f2418 (diff) |
thermal: armada: Pass the platform_device to init_sensor()
In order to perform SoC-specific quirks on platforms that need them,
this commit adds a new parameter to the init_sensor() function.
This will be used to support early silicons of the Armada 375 SoC,
to workaround some hardware issues.
Acked-by: Jason Cooper <jason@lakedaemon.net>
Signed-off-by: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
Diffstat (limited to 'drivers/thermal/armada_thermal.c')
-rw-r--r-- | drivers/thermal/armada_thermal.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/thermal/armada_thermal.c b/drivers/thermal/armada_thermal.c index 2fecccf71e9a..6fd648337e63 100644 --- a/drivers/thermal/armada_thermal.c +++ b/drivers/thermal/armada_thermal.c | |||
@@ -46,7 +46,8 @@ struct armada_thermal_priv { | |||
46 | 46 | ||
47 | struct armada_thermal_data { | 47 | struct armada_thermal_data { |
48 | /* Initialize the sensor */ | 48 | /* Initialize the sensor */ |
49 | void (*init_sensor)(struct armada_thermal_priv *); | 49 | void (*init_sensor)(struct platform_device *pdev, |
50 | struct armada_thermal_priv *); | ||
50 | 51 | ||
51 | /* Test for a valid sensor value (optional) */ | 52 | /* Test for a valid sensor value (optional) */ |
52 | bool (*is_valid)(struct armada_thermal_priv *); | 53 | bool (*is_valid)(struct armada_thermal_priv *); |
@@ -62,7 +63,8 @@ struct armada_thermal_data { | |||
62 | unsigned int is_valid_shift; | 63 | unsigned int is_valid_shift; |
63 | }; | 64 | }; |
64 | 65 | ||
65 | static void armadaxp_init_sensor(struct armada_thermal_priv *priv) | 66 | static void armadaxp_init_sensor(struct platform_device *pdev, |
67 | struct armada_thermal_priv *priv) | ||
66 | { | 68 | { |
67 | unsigned long reg; | 69 | unsigned long reg; |
68 | 70 | ||
@@ -87,7 +89,8 @@ static void armadaxp_init_sensor(struct armada_thermal_priv *priv) | |||
87 | writel(reg, priv->sensor); | 89 | writel(reg, priv->sensor); |
88 | } | 90 | } |
89 | 91 | ||
90 | static void armada370_init_sensor(struct armada_thermal_priv *priv) | 92 | static void armada370_init_sensor(struct platform_device *pdev, |
93 | struct armada_thermal_priv *priv) | ||
91 | { | 94 | { |
92 | unsigned long reg; | 95 | unsigned long reg; |
93 | 96 | ||
@@ -204,7 +207,7 @@ static int armada_thermal_probe(struct platform_device *pdev) | |||
204 | return PTR_ERR(priv->control); | 207 | return PTR_ERR(priv->control); |
205 | 208 | ||
206 | priv->data = (struct armada_thermal_data *)match->data; | 209 | priv->data = (struct armada_thermal_data *)match->data; |
207 | priv->data->init_sensor(priv); | 210 | priv->data->init_sensor(pdev, priv); |
208 | 211 | ||
209 | thermal = thermal_zone_device_register("armada_thermal", 0, 0, | 212 | thermal = thermal_zone_device_register("armada_thermal", 0, 0, |
210 | priv, &ops, NULL, 0, 0); | 213 | priv, &ops, NULL, 0, 0); |