mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-03-05 22:27:12 +07:00
thermal: rcar: check every rcar_thermal_update_temp() return value
Every rcar_thermal_update_temp() return value will be checked. And also, rcar_thermal_get_temp() always call rcar_thermal_update_temp() by this patch. Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
This commit is contained in:
parent
ca1e4558fc
commit
a1ade56538
@ -75,12 +75,6 @@ struct rcar_thermal_priv {
|
|||||||
#define rcar_has_irq_support(priv) ((priv)->common->base)
|
#define rcar_has_irq_support(priv) ((priv)->common->base)
|
||||||
#define rcar_id_to_shift(priv) ((priv)->id * 8)
|
#define rcar_id_to_shift(priv) ((priv)->id * 8)
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
# define rcar_force_update_temp(priv) 1
|
|
||||||
#else
|
|
||||||
# define rcar_force_update_temp(priv) 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static const struct of_device_id rcar_thermal_dt_ids[] = {
|
static const struct of_device_id rcar_thermal_dt_ids[] = {
|
||||||
{ .compatible = "renesas,rcar-thermal", },
|
{ .compatible = "renesas,rcar-thermal", },
|
||||||
{},
|
{},
|
||||||
@ -209,9 +203,11 @@ static int rcar_thermal_update_temp(struct rcar_thermal_priv *priv)
|
|||||||
static int rcar_thermal_get_temp(struct thermal_zone_device *zone, int *temp)
|
static int rcar_thermal_get_temp(struct thermal_zone_device *zone, int *temp)
|
||||||
{
|
{
|
||||||
struct rcar_thermal_priv *priv = rcar_zone_to_priv(zone);
|
struct rcar_thermal_priv *priv = rcar_zone_to_priv(zone);
|
||||||
|
int ret;
|
||||||
|
|
||||||
if (!rcar_has_irq_support(priv) || rcar_force_update_temp(priv))
|
ret = rcar_thermal_update_temp(priv);
|
||||||
rcar_thermal_update_temp(priv);
|
if (ret < 0)
|
||||||
|
return ret;
|
||||||
|
|
||||||
mutex_lock(&priv->lock);
|
mutex_lock(&priv->lock);
|
||||||
*temp = MCELSIUS((priv->ctemp * 5) - 65);
|
*temp = MCELSIUS((priv->ctemp * 5) - 65);
|
||||||
@ -305,11 +301,15 @@ static void rcar_thermal_work(struct work_struct *work)
|
|||||||
{
|
{
|
||||||
struct rcar_thermal_priv *priv;
|
struct rcar_thermal_priv *priv;
|
||||||
int cctemp, nctemp;
|
int cctemp, nctemp;
|
||||||
|
int ret;
|
||||||
|
|
||||||
priv = container_of(work, struct rcar_thermal_priv, work.work);
|
priv = container_of(work, struct rcar_thermal_priv, work.work);
|
||||||
|
|
||||||
rcar_thermal_get_temp(priv->zone, &cctemp);
|
rcar_thermal_get_temp(priv->zone, &cctemp);
|
||||||
rcar_thermal_update_temp(priv);
|
ret = rcar_thermal_update_temp(priv);
|
||||||
|
if (ret < 0)
|
||||||
|
return;
|
||||||
|
|
||||||
rcar_thermal_irq_enable(priv);
|
rcar_thermal_irq_enable(priv);
|
||||||
|
|
||||||
rcar_thermal_get_temp(priv->zone, &nctemp);
|
rcar_thermal_get_temp(priv->zone, &nctemp);
|
||||||
@ -447,7 +447,9 @@ static int rcar_thermal_probe(struct platform_device *pdev)
|
|||||||
mutex_init(&priv->lock);
|
mutex_init(&priv->lock);
|
||||||
INIT_LIST_HEAD(&priv->list);
|
INIT_LIST_HEAD(&priv->list);
|
||||||
INIT_DELAYED_WORK(&priv->work, rcar_thermal_work);
|
INIT_DELAYED_WORK(&priv->work, rcar_thermal_work);
|
||||||
rcar_thermal_update_temp(priv);
|
ret = rcar_thermal_update_temp(priv);
|
||||||
|
if (ret < 0)
|
||||||
|
goto error_unregister;
|
||||||
|
|
||||||
priv->zone = thermal_zone_device_register("rcar_thermal",
|
priv->zone = thermal_zone_device_register("rcar_thermal",
|
||||||
1, 0, priv,
|
1, 0, priv,
|
||||||
|
Loading…
Reference in New Issue
Block a user