Lines Matching full:tsc
109 static inline u32 rcar_gen3_thermal_read(struct rcar_gen3_thermal_tsc *tsc, in rcar_gen3_thermal_read() argument
112 return ioread32(tsc->base + reg); in rcar_gen3_thermal_read()
115 static inline void rcar_gen3_thermal_write(struct rcar_gen3_thermal_tsc *tsc, in rcar_gen3_thermal_write() argument
118 iowrite32(data, tsc->base + reg); in rcar_gen3_thermal_write()
152 struct rcar_gen3_thermal_tsc *tsc) in rcar_gen3_thermal_tsc_coefs() argument
154 tsc->coef.below.a = priv->info->scale * (priv->ptat[2] - priv->ptat[1]); in rcar_gen3_thermal_tsc_coefs()
155 tsc->coef.above.a = priv->info->scale * (priv->ptat[0] - priv->ptat[1]); in rcar_gen3_thermal_tsc_coefs()
157 tsc->coef.below.b = (priv->ptat[2] - priv->ptat[0]) * (tsc->thcode[2] - tsc->thcode[1]); in rcar_gen3_thermal_tsc_coefs()
158 tsc->coef.above.b = (priv->ptat[0] - priv->ptat[2]) * (tsc->thcode[1] - tsc->thcode[0]); in rcar_gen3_thermal_tsc_coefs()
163 struct rcar_gen3_thermal_tsc *tsc = thermal_zone_device_priv(tz); in rcar_gen3_thermal_get_temp() local
164 struct rcar_gen3_thermal_priv *priv = tsc->priv; in rcar_gen3_thermal_get_temp()
169 reg = rcar_gen3_thermal_read(tsc, REG_GEN3_TEMP) & CTEMP_MASK; in rcar_gen3_thermal_get_temp()
171 if (reg < tsc->thcode[1]) { in rcar_gen3_thermal_get_temp()
173 coef = &tsc->coef.below; in rcar_gen3_thermal_get_temp()
174 thcode = tsc->thcode[2]; in rcar_gen3_thermal_get_temp()
177 coef = &tsc->coef.above; in rcar_gen3_thermal_get_temp()
178 thcode = tsc->thcode[0]; in rcar_gen3_thermal_get_temp()
197 static int rcar_gen3_thermal_mcelsius_to_temp(struct rcar_gen3_thermal_tsc *tsc, in rcar_gen3_thermal_mcelsius_to_temp() argument
200 struct rcar_gen3_thermal_priv *priv = tsc->priv; in rcar_gen3_thermal_mcelsius_to_temp()
206 coef = &tsc->coef.below; in rcar_gen3_thermal_mcelsius_to_temp()
208 thcode = tsc->thcode[2]; in rcar_gen3_thermal_mcelsius_to_temp()
210 coef = &tsc->coef.above; in rcar_gen3_thermal_mcelsius_to_temp()
212 thcode = tsc->thcode[0]; in rcar_gen3_thermal_mcelsius_to_temp()
220 struct rcar_gen3_thermal_tsc *tsc = thermal_zone_device_priv(tz); in rcar_gen3_thermal_set_trips() local
225 rcar_gen3_thermal_write(tsc, REG_GEN3_IRQTEMP1, in rcar_gen3_thermal_set_trips()
226 rcar_gen3_thermal_mcelsius_to_temp(tsc, low)); in rcar_gen3_thermal_set_trips()
231 rcar_gen3_thermal_write(tsc, REG_GEN3_IRQTEMP2, in rcar_gen3_thermal_set_trips()
232 rcar_gen3_thermal_mcelsius_to_temp(tsc, high)); in rcar_gen3_thermal_set_trips()
235 rcar_gen3_thermal_write(tsc, REG_GEN3_IRQMSK, irqmsk); in rcar_gen3_thermal_set_trips()
269 * TSC while THCODEs are fused for each TSC. in rcar_gen3_thermal_fetch_fuses()
279 struct rcar_gen3_thermal_tsc *tsc = priv->tscs[i]; in rcar_gen3_thermal_fetch_fuses() local
281 tsc->thcode[0] = rcar_gen3_thermal_read(tsc, fuses->thcode[0]) in rcar_gen3_thermal_fetch_fuses()
283 tsc->thcode[1] = rcar_gen3_thermal_read(tsc, fuses->thcode[1]) in rcar_gen3_thermal_fetch_fuses()
285 tsc->thcode[2] = rcar_gen3_thermal_read(tsc, fuses->thcode[2]) in rcar_gen3_thermal_fetch_fuses()
313 struct rcar_gen3_thermal_tsc *tsc = priv->tscs[i]; in rcar_gen3_thermal_read_fuses() local
315 tsc->thcode[0] = thcodes[i][0]; in rcar_gen3_thermal_read_fuses()
316 tsc->thcode[1] = thcodes[i][1]; in rcar_gen3_thermal_read_fuses()
317 tsc->thcode[2] = thcodes[i][2]; in rcar_gen3_thermal_read_fuses()
329 struct rcar_gen3_thermal_tsc *tsc) in rcar_gen3_thermal_init() argument
333 reg_val = rcar_gen3_thermal_read(tsc, REG_GEN3_THCTR); in rcar_gen3_thermal_init()
335 rcar_gen3_thermal_write(tsc, REG_GEN3_THCTR, reg_val); in rcar_gen3_thermal_init()
339 rcar_gen3_thermal_write(tsc, REG_GEN3_IRQCTL, 0); in rcar_gen3_thermal_init()
340 rcar_gen3_thermal_write(tsc, REG_GEN3_IRQMSK, 0); in rcar_gen3_thermal_init()
342 rcar_gen3_thermal_write(tsc, REG_GEN3_IRQEN, in rcar_gen3_thermal_init()
345 reg_val = rcar_gen3_thermal_read(tsc, REG_GEN3_THCTR); in rcar_gen3_thermal_init()
347 rcar_gen3_thermal_write(tsc, REG_GEN3_THCTR, reg_val); in rcar_gen3_thermal_init()
506 struct rcar_gen3_thermal_tsc *tsc; in rcar_gen3_thermal_probe() local
512 tsc = devm_kzalloc(dev, sizeof(*tsc), GFP_KERNEL); in rcar_gen3_thermal_probe()
513 if (!tsc) { in rcar_gen3_thermal_probe()
518 tsc->priv = priv; in rcar_gen3_thermal_probe()
519 tsc->base = devm_ioremap_resource(dev, res); in rcar_gen3_thermal_probe()
520 if (IS_ERR(tsc->base)) { in rcar_gen3_thermal_probe()
521 ret = PTR_ERR(tsc->base); in rcar_gen3_thermal_probe()
525 priv->tscs[i] = tsc; in rcar_gen3_thermal_probe()
536 struct rcar_gen3_thermal_tsc *tsc = priv->tscs[i]; in rcar_gen3_thermal_probe() local
538 rcar_gen3_thermal_init(priv, tsc); in rcar_gen3_thermal_probe()
539 rcar_gen3_thermal_tsc_coefs(priv, tsc); in rcar_gen3_thermal_probe()
541 zone = devm_thermal_of_zone_register(dev, i, tsc, &priv->ops); in rcar_gen3_thermal_probe()
547 tsc->zone = zone; in rcar_gen3_thermal_probe()
549 ret = thermal_add_hwmon_sysfs(tsc->zone); in rcar_gen3_thermal_probe()
579 struct rcar_gen3_thermal_tsc *tsc = priv->tscs[i]; in rcar_gen3_thermal_resume() local
581 rcar_gen3_thermal_init(priv, tsc); in rcar_gen3_thermal_resume()