Lines Matching refs:tsc

99 static inline u32 rcar_gen3_thermal_read(struct rcar_gen3_thermal_tsc *tsc,
102 return ioread32(tsc->base + reg);
105 static inline void rcar_gen3_thermal_write(struct rcar_gen3_thermal_tsc *tsc,
108 iowrite32(data, tsc->base + reg);
140 struct rcar_gen3_thermal_tsc *tsc,
149 tsc->tj_t = (FIXPT_INT((priv->ptat[1] - priv->ptat[2]) * (ths_tj_1 - TJ_3))
152 tsc->coef.a1 = FIXPT_DIV(FIXPT_INT(tsc->thcode[1] - tsc->thcode[2]),
153 tsc->tj_t - FIXPT_INT(TJ_3));
154 tsc->coef.b1 = FIXPT_INT(tsc->thcode[2]) - tsc->coef.a1 * TJ_3;
156 tsc->coef.a2 = FIXPT_DIV(FIXPT_INT(tsc->thcode[1] - tsc->thcode[0]),
157 tsc->tj_t - FIXPT_INT(ths_tj_1));
158 tsc->coef.b2 = FIXPT_INT(tsc->thcode[0]) - tsc->coef.a2 * ths_tj_1;
173 struct rcar_gen3_thermal_tsc *tsc = thermal_zone_device_priv(tz);
178 reg = rcar_gen3_thermal_read(tsc, REG_GEN3_TEMP) & CTEMP_MASK;
180 if (reg <= tsc->thcode[1])
181 val = FIXPT_DIV(FIXPT_INT(reg) - tsc->coef.b1,
182 tsc->coef.a1);
184 val = FIXPT_DIV(FIXPT_INT(reg) - tsc->coef.b2,
185 tsc->coef.a2);
196 static int rcar_gen3_thermal_mcelsius_to_temp(struct rcar_gen3_thermal_tsc *tsc,
202 if (celsius <= INT_FIXPT(tsc->tj_t))
203 val = celsius * tsc->coef.a1 + tsc->coef.b1;
205 val = celsius * tsc->coef.a2 + tsc->coef.b2;
212 struct rcar_gen3_thermal_tsc *tsc = thermal_zone_device_priv(tz);
217 rcar_gen3_thermal_write(tsc, REG_GEN3_IRQTEMP1,
218 rcar_gen3_thermal_mcelsius_to_temp(tsc, low));
223 rcar_gen3_thermal_write(tsc, REG_GEN3_IRQTEMP2,
224 rcar_gen3_thermal_mcelsius_to_temp(tsc, high));
227 rcar_gen3_thermal_write(tsc, REG_GEN3_IRQMSK, irqmsk);
271 struct rcar_gen3_thermal_tsc *tsc = priv->tscs[i];
273 tsc->thcode[0] = rcar_gen3_thermal_read(tsc, REG_GEN3_THCODE1) &
275 tsc->thcode[1] = rcar_gen3_thermal_read(tsc, REG_GEN3_THCODE2) &
277 tsc->thcode[2] = rcar_gen3_thermal_read(tsc, REG_GEN3_THCODE3) &
299 struct rcar_gen3_thermal_tsc *tsc = priv->tscs[i];
301 tsc->thcode[0] = rcar_gen3_thermal_read(tsc, REG_GEN4_THSFMON01) &
303 tsc->thcode[1] = rcar_gen3_thermal_read(tsc, REG_GEN4_THSFMON02) &
305 tsc->thcode[2] = rcar_gen3_thermal_read(tsc, REG_GEN4_THSFMON00) &
333 struct rcar_gen3_thermal_tsc *tsc = priv->tscs[i];
335 tsc->thcode[0] = thcodes[i][0];
336 tsc->thcode[1] = thcodes[i][1];
337 tsc->thcode[2] = thcodes[i][2];
348 struct rcar_gen3_thermal_tsc *tsc)
352 reg_val = rcar_gen3_thermal_read(tsc, REG_GEN3_THCTR);
354 rcar_gen3_thermal_write(tsc, REG_GEN3_THCTR, reg_val);
358 rcar_gen3_thermal_write(tsc, REG_GEN3_IRQCTL, 0);
359 rcar_gen3_thermal_write(tsc, REG_GEN3_IRQMSK, 0);
361 rcar_gen3_thermal_write(tsc, REG_GEN3_IRQEN,
364 reg_val = rcar_gen3_thermal_read(tsc, REG_GEN3_THCTR);
366 rcar_gen3_thermal_write(tsc, REG_GEN3_THCTR, reg_val);
505 struct rcar_gen3_thermal_tsc *tsc;
511 tsc = devm_kzalloc(dev, sizeof(*tsc), GFP_KERNEL);
512 if (!tsc) {
517 tsc->base = devm_ioremap_resource(dev, res);
518 if (IS_ERR(tsc->base)) {
519 ret = PTR_ERR(tsc->base);
523 priv->tscs[i] = tsc;
532 struct rcar_gen3_thermal_tsc *tsc = priv->tscs[i];
534 rcar_gen3_thermal_init(priv, tsc);
535 rcar_gen3_thermal_calc_coefs(priv, tsc, priv->info->ths_tj_1);
537 zone = devm_thermal_of_zone_register(dev, i, tsc, &priv->ops);
543 tsc->zone = zone;
545 ret = thermal_add_hwmon_sysfs(tsc->zone);
553 ret = thermal_zone_get_num_trips(tsc->zone);
579 struct rcar_gen3_thermal_tsc *tsc = priv->tscs[i];
581 rcar_gen3_thermal_init(priv, tsc);