Hi Eduardo,
> On 19-04-2013 12:38, Lukasz Majewski wrote:
> > 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.
> >
> > Signed-off-by: Lukasz Majewski <[email protected]>
> > Signed-off-by: Kyungmin Park <[email protected]>
> > ---
> > drivers/thermal/exynos_thermal.c | 19 +++++++++++++++++++
> > 1 file changed, 19 insertions(+)
> >
> > diff --git a/drivers/thermal/exynos_thermal.c
> > b/drivers/thermal/exynos_thermal.c index ba6094c..e922fa4 100644
> > --- a/drivers/thermal/exynos_thermal.c
> > +++ b/drivers/thermal/exynos_thermal.c
> > @@ -38,6 +38,7 @@
> > #include <linux/cpufreq.h>
> > #include <linux/cpu_cooling.h>
> > #include <linux/of.h>
> > +#include <linux/regulator/consumer.h>
> >
> > #include <plat/cpu.h>
> >
> > @@ -119,6 +120,8 @@
> >
> > #define EXYNOS_ZONE_COUNT 3
> >
> > +#define EXYNOS_TMU_REGULATOR "vdd_ts"
> > +
> > struct exynos_tmu_data {
> > struct exynos_tmu_platform_data *pdata;
> > struct resource *mem;
> > @@ -944,6 +947,7 @@ static int exynos_tmu_probe(struct
> > platform_device *pdev) {
> > struct exynos_tmu_data *data;
> > struct exynos_tmu_platform_data *pdata =
> > pdev->dev.platform_data;
> > + struct regulator *reg;
> > int ret, i;
> >
> > if (!pdata)
> > @@ -953,6 +957,21 @@ static int exynos_tmu_probe(struct
> > platform_device *pdev) dev_err(&pdev->dev, "No platform init data
> > supplied.\n"); return -ENODEV;
> > }
> > +
> > + reg = regulator_get(&pdev->dev, EXYNOS_TMU_REGULATOR);
> > + if (!IS_ERR(reg)) {
> > + ret = regulator_enable(reg);
> > + if (ret) {
> > + dev_err(&pdev->dev, "Regulator %s not
> > enabled.\n",
> > + EXYNOS_TMU_REGULATOR);
> > + return ret;
> > + }
> > + } else {
> > + dev_info(&pdev->dev,
> > + "Regulator %s not defined at device
> > tree.\n",
> > + EXYNOS_TMU_REGULATOR);
> Maybe a dev_warn would fit better?
This is a bit tricky. I first wanted to return -ENODEV when regulator
is not available. Then I understood, that some other SoCs (e.g.
Exynos5) will not work.
The info here shall give a clear warn signal, that providing a
regulator for VDD_TS is crucial (since by default it can be connected
to other PMIC outputs and when other device puts down this regulator
the TMU will crash and shut down a system).
>
> > + }
> > +
> > data = devm_kzalloc(&pdev->dev, sizeof(struct
> > exynos_tmu_data), GFP_KERNEL);
> > if (!data) {
> >
--
Best regards,
Lukasz Majewski
Samsung R&D Poland (SRPOL) | Linux Platform Group
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html