Lines Matching full:tsc
103 static inline u32 rcar_gen3_thermal_read(struct rcar_gen3_thermal_tsc *tsc, in rcar_gen3_thermal_read() argument
106 return ioread32(tsc->base + reg); in rcar_gen3_thermal_read()
109 static inline void rcar_gen3_thermal_write(struct rcar_gen3_thermal_tsc *tsc, in rcar_gen3_thermal_write() argument
112 iowrite32(data, tsc->base + reg); in rcar_gen3_thermal_write()
146 struct rcar_gen3_thermal_tsc *tsc) in rcar_gen3_thermal_tsc_coefs() argument
148 tsc->coef.below.a = priv->info->scale * (priv->ptat[2] - priv->ptat[1]); in rcar_gen3_thermal_tsc_coefs()
149 tsc->coef.above.a = priv->info->scale * (priv->ptat[0] - priv->ptat[1]); in rcar_gen3_thermal_tsc_coefs()
151 tsc->coef.below.b = (priv->ptat[2] - priv->ptat[0]) * (tsc->thcode[2] - tsc->thcode[1]); in rcar_gen3_thermal_tsc_coefs()
152 tsc->coef.above.b = (priv->ptat[0] - priv->ptat[2]) * (tsc->thcode[1] - tsc->thcode[0]); in rcar_gen3_thermal_tsc_coefs()
157 struct rcar_gen3_thermal_tsc *tsc = thermal_zone_device_priv(tz); in rcar_gen3_thermal_get_temp() local
158 struct rcar_gen3_thermal_priv *priv = tsc->priv; in rcar_gen3_thermal_get_temp()
163 reg = rcar_gen3_thermal_read(tsc, REG_GEN3_TEMP) & CTEMP_MASK; in rcar_gen3_thermal_get_temp()
165 if (reg < tsc->thcode[1]) { in rcar_gen3_thermal_get_temp()
167 coef = &tsc->coef.below; in rcar_gen3_thermal_get_temp()
168 thcode = tsc->thcode[2]; in rcar_gen3_thermal_get_temp()
171 coef = &tsc->coef.above; in rcar_gen3_thermal_get_temp()
172 thcode = tsc->thcode[0]; in rcar_gen3_thermal_get_temp()
191 static int rcar_gen3_thermal_mcelsius_to_temp(struct rcar_gen3_thermal_tsc *tsc, in rcar_gen3_thermal_mcelsius_to_temp() argument
194 struct rcar_gen3_thermal_priv *priv = tsc->priv; in rcar_gen3_thermal_mcelsius_to_temp()
200 coef = &tsc->coef.below; in rcar_gen3_thermal_mcelsius_to_temp()
202 thcode = tsc->thcode[2]; in rcar_gen3_thermal_mcelsius_to_temp()
204 coef = &tsc->coef.above; in rcar_gen3_thermal_mcelsius_to_temp()
206 thcode = tsc->thcode[0]; in rcar_gen3_thermal_mcelsius_to_temp()
214 struct rcar_gen3_thermal_tsc *tsc = thermal_zone_device_priv(tz); in rcar_gen3_thermal_set_trips() local
219 rcar_gen3_thermal_write(tsc, REG_GEN3_IRQTEMP1, in rcar_gen3_thermal_set_trips()
220 rcar_gen3_thermal_mcelsius_to_temp(tsc, low)); in rcar_gen3_thermal_set_trips()
225 rcar_gen3_thermal_write(tsc, REG_GEN3_IRQTEMP2, in rcar_gen3_thermal_set_trips()
226 rcar_gen3_thermal_mcelsius_to_temp(tsc, high)); in rcar_gen3_thermal_set_trips()
229 rcar_gen3_thermal_write(tsc, REG_GEN3_IRQMSK, irqmsk); in rcar_gen3_thermal_set_trips()
263 * TSC while THCODEs are fused for each TSC. in rcar_gen3_thermal_read_fuses_gen3()
273 struct rcar_gen3_thermal_tsc *tsc = priv->tscs[i]; in rcar_gen3_thermal_read_fuses_gen3() local
275 tsc->thcode[0] = rcar_gen3_thermal_read(tsc, REG_GEN3_THCODE1) & in rcar_gen3_thermal_read_fuses_gen3()
277 tsc->thcode[1] = rcar_gen3_thermal_read(tsc, REG_GEN3_THCODE2) & in rcar_gen3_thermal_read_fuses_gen3()
279 tsc->thcode[2] = rcar_gen3_thermal_read(tsc, REG_GEN3_THCODE3) & in rcar_gen3_thermal_read_fuses_gen3()
291 * TSC while THCODEs are fused for each TSC. in rcar_gen3_thermal_read_fuses_gen4()
301 struct rcar_gen3_thermal_tsc *tsc = priv->tscs[i]; in rcar_gen3_thermal_read_fuses_gen4() local
303 tsc->thcode[0] = rcar_gen3_thermal_read(tsc, REG_GEN4_THSFMON01) & in rcar_gen3_thermal_read_fuses_gen4()
305 tsc->thcode[1] = rcar_gen3_thermal_read(tsc, REG_GEN4_THSFMON02) & in rcar_gen3_thermal_read_fuses_gen4()
307 tsc->thcode[2] = rcar_gen3_thermal_read(tsc, REG_GEN4_THSFMON00) & in rcar_gen3_thermal_read_fuses_gen4()
335 struct rcar_gen3_thermal_tsc *tsc = priv->tscs[i]; in rcar_gen3_thermal_read_fuses() local
337 tsc->thcode[0] = thcodes[i][0]; in rcar_gen3_thermal_read_fuses()
338 tsc->thcode[1] = thcodes[i][1]; in rcar_gen3_thermal_read_fuses()
339 tsc->thcode[2] = thcodes[i][2]; in rcar_gen3_thermal_read_fuses()
350 struct rcar_gen3_thermal_tsc *tsc) in rcar_gen3_thermal_init() argument
354 reg_val = rcar_gen3_thermal_read(tsc, REG_GEN3_THCTR); in rcar_gen3_thermal_init()
356 rcar_gen3_thermal_write(tsc, REG_GEN3_THCTR, reg_val); in rcar_gen3_thermal_init()
360 rcar_gen3_thermal_write(tsc, REG_GEN3_IRQCTL, 0); in rcar_gen3_thermal_init()
361 rcar_gen3_thermal_write(tsc, REG_GEN3_IRQMSK, 0); in rcar_gen3_thermal_init()
363 rcar_gen3_thermal_write(tsc, REG_GEN3_IRQEN, in rcar_gen3_thermal_init()
366 reg_val = rcar_gen3_thermal_read(tsc, REG_GEN3_THCTR); in rcar_gen3_thermal_init()
368 rcar_gen3_thermal_write(tsc, REG_GEN3_THCTR, reg_val); in rcar_gen3_thermal_init()
515 struct rcar_gen3_thermal_tsc *tsc; in rcar_gen3_thermal_probe() local
521 tsc = devm_kzalloc(dev, sizeof(*tsc), GFP_KERNEL); in rcar_gen3_thermal_probe()
522 if (!tsc) { in rcar_gen3_thermal_probe()
527 tsc->priv = priv; in rcar_gen3_thermal_probe()
528 tsc->base = devm_ioremap_resource(dev, res); in rcar_gen3_thermal_probe()
529 if (IS_ERR(tsc->base)) { in rcar_gen3_thermal_probe()
530 ret = PTR_ERR(tsc->base); in rcar_gen3_thermal_probe()
534 priv->tscs[i] = tsc; in rcar_gen3_thermal_probe()
545 struct rcar_gen3_thermal_tsc *tsc = priv->tscs[i]; in rcar_gen3_thermal_probe() local
547 rcar_gen3_thermal_init(priv, tsc); in rcar_gen3_thermal_probe()
548 rcar_gen3_thermal_tsc_coefs(priv, tsc); in rcar_gen3_thermal_probe()
550 zone = devm_thermal_of_zone_register(dev, i, tsc, &priv->ops); in rcar_gen3_thermal_probe()
556 tsc->zone = zone; in rcar_gen3_thermal_probe()
558 ret = thermal_add_hwmon_sysfs(tsc->zone); in rcar_gen3_thermal_probe()
588 struct rcar_gen3_thermal_tsc *tsc = priv->tscs[i]; in rcar_gen3_thermal_resume() local
590 rcar_gen3_thermal_init(priv, tsc); in rcar_gen3_thermal_resume()