Lines Matching refs:tdev

88 static int uniphier_tm_initialize_sensor(struct uniphier_tm_dev *tdev)
90 struct regmap *map = tdev->regmap;
96 regmap_write_bits(map, tdev->data->block_base + PVTCTLEN,
106 ret = regmap_read(map, tdev->data->map_base + TMODCOEF, &val);
111 ret = of_property_read_u32_array(tdev->dev->of_node,
118 regmap_write(map, tdev->data->tmod_setup_addr,
124 regmap_write_bits(map, tdev->data->block_base + PVTCTLMODE,
128 regmap_write_bits(map, tdev->data->block_base + EMONREPEAT,
133 regmap_write_bits(map, tdev->data->map_base + PVTCTLSEL,
139 static void uniphier_tm_set_alert(struct uniphier_tm_dev *tdev, u32 ch,
142 struct regmap *map = tdev->regmap;
145 regmap_write_bits(map, tdev->data->map_base + SETALERT0 + (ch << 2),
151 static void uniphier_tm_enable_sensor(struct uniphier_tm_dev *tdev)
153 struct regmap *map = tdev->regmap;
158 if (tdev->alert_en[i])
162 regmap_write_bits(map, tdev->data->map_base + PMALERTINTCTL,
166 regmap_write_bits(map, tdev->data->block_base + PVTCTLEN,
172 static void uniphier_tm_disable_sensor(struct uniphier_tm_dev *tdev)
174 struct regmap *map = tdev->regmap;
177 regmap_write_bits(map, tdev->data->map_base + PMALERTINTCTL,
181 regmap_write_bits(map, tdev->data->block_base + PVTCTLEN,
189 struct uniphier_tm_dev *tdev = thermal_zone_device_priv(tz);
190 struct regmap *map = tdev->regmap;
194 ret = regmap_read(map, tdev->data->map_base + TMOD, &temp);
208 static void uniphier_tm_irq_clear(struct uniphier_tm_dev *tdev)
219 regmap_write_bits(tdev->regmap,
220 tdev->data->map_base + PMALERTINTCTL, mask, bits);
225 struct uniphier_tm_dev *tdev = _tdev;
228 uniphier_tm_irq_clear(tdev);
235 struct uniphier_tm_dev *tdev = _tdev;
237 thermal_zone_device_update(tdev->tz_dev, THERMAL_EVENT_UNSPECIFIED);
247 struct uniphier_tm_dev *tdev;
250 tdev = devm_kzalloc(dev, sizeof(*tdev), GFP_KERNEL);
251 if (!tdev)
253 tdev->dev = dev;
255 tdev->data = of_device_get_match_data(dev);
256 if (WARN_ON(!tdev->data))
272 tdev->regmap = regmap;
274 ret = uniphier_tm_initialize_sensor(tdev);
282 0, "thermal", tdev);
286 platform_set_drvdata(pdev, tdev);
288 tdev->tz_dev = devm_thermal_of_zone_register(dev, 0, tdev,
290 if (IS_ERR(tdev->tz_dev)) {
292 return PTR_ERR(tdev->tz_dev);
296 for (i = 0; i < thermal_zone_get_num_trips(tdev->tz_dev); i++) {
299 ret = thermal_zone_get_trip(tdev->tz_dev, i, &trip);
306 uniphier_tm_set_alert(tdev, i, trip.temperature);
307 tdev->alert_en[i] = true;
315 uniphier_tm_enable_sensor(tdev);
322 struct uniphier_tm_dev *tdev = platform_get_drvdata(pdev);
325 uniphier_tm_disable_sensor(tdev);