diff options
Diffstat (limited to 'patches.tizen/0976-thermal-exynos-Support-for-TMU-regulator-defined-at-.patch')
-rw-r--r-- | patches.tizen/0976-thermal-exynos-Support-for-TMU-regulator-defined-at-.patch | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/patches.tizen/0976-thermal-exynos-Support-for-TMU-regulator-defined-at-.patch b/patches.tizen/0976-thermal-exynos-Support-for-TMU-regulator-defined-at-.patch new file mode 100644 index 00000000000..ee38375c3ba --- /dev/null +++ b/patches.tizen/0976-thermal-exynos-Support-for-TMU-regulator-defined-at-.patch @@ -0,0 +1,90 @@ +From 6e966de7746e60ef802c190b9b1db3d32b31e6e8 Mon Sep 17 00:00:00 2001 +From: Amit Daniel Kachhap <amit.daniel@samsung.com> +Date: Mon, 24 Jun 2013 16:20:47 +0530 +Subject: [PATCH 0976/1302] thermal: exynos: Support for TMU regulator defined + at device tree + +TMU probe function now checks for a device tree defined regulator. +For compatibility reasons it is allowed to probe driver even without +this regulator defined. + +Acked-by: Jonghwa Lee <jonghwa3.lee@samsung.com> +Acked-by: Eduardo Valentin <eduardo.valentin@ti.com> +Signed-off-by: Lukasz Majewski <l.majewski@samsung.com> +Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> +Signed-off-by: Amit Daniel Kachhap <amit.daniel@samsung.com> +Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com> +Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com> +--- + drivers/thermal/samsung/exynos_tmu.c | 23 +++++++++++++++++++++++ + 1 file changed, 23 insertions(+) + +diff --git a/drivers/thermal/samsung/exynos_tmu.c b/drivers/thermal/samsung/exynos_tmu.c +index a6fc379..ec01dfe 100644 +--- a/drivers/thermal/samsung/exynos_tmu.c ++++ b/drivers/thermal/samsung/exynos_tmu.c +@@ -29,6 +29,7 @@ + #include <linux/of_address.h> + #include <linux/of_irq.h> + #include <linux/platform_device.h> ++#include <linux/regulator/consumer.h> + + #include "exynos_thermal_common.h" + #include "exynos_tmu.h" +@@ -48,6 +49,7 @@ + * @clk: pointer to the clock structure. + * @temp_error1: fused value of the first point trim. + * @temp_error2: fused value of the second point trim. ++ * @regulator: pointer to the TMU regulator structure. + * @reg_conf: pointer to structure to register with core thermal. + */ + struct exynos_tmu_data { +@@ -61,6 +63,7 @@ struct exynos_tmu_data { + struct mutex lock; + struct clk *clk; + u8 temp_error1, temp_error2; ++ struct regulator *regulator; + struct thermal_sensor_conf *reg_conf; + }; + +@@ -527,10 +530,27 @@ static int exynos_map_dt_data(struct platform_device *pdev) + struct exynos_tmu_data *data = platform_get_drvdata(pdev); + struct exynos_tmu_platform_data *pdata; + struct resource res; ++ int ret; + + if (!data) + return -ENODEV; + ++ /* ++ * Try enabling the regulator if found ++ * TODO: Add regulator as an SOC feature, so that regulator enable ++ * is a compulsory call. ++ */ ++ data->regulator = devm_regulator_get(&pdev->dev, "vtmu"); ++ if (!IS_ERR(data->regulator)) { ++ ret = regulator_enable(data->regulator); ++ if (ret) { ++ dev_err(&pdev->dev, "failed to enable vtmu\n"); ++ return ret; ++ } ++ } else { ++ dev_info(&pdev->dev, "Regulator node (vtmu) not found\n"); ++ } ++ + data->id = of_alias_get_id(pdev->dev.of_node, "tmuctrl"); + if (data->id < 0) + data->id = 0; +@@ -698,6 +718,9 @@ static int exynos_tmu_remove(struct platform_device *pdev) + + clk_unprepare(data->clk); + ++ if (!IS_ERR(data->regulator)) ++ regulator_disable(data->regulator); ++ + return 0; + } + +-- +1.8.3.2 + |