• Home
  • Raw
  • Download

Lines Matching +full:tmu +full:- +full:range

1 // SPDX-License-Identifier: GPL-2.0
54 #define REGS_V2_TMSAR(n) (0x304 + 16 * (n)) /* TMU monitoring
57 #define REGS_TTRnCR(n) (0xf10 + 4 * (n)) /* Temperature Range n
81 return container_of(s, struct qoriq_tmu_data, sensor[s->id]); in qoriq_sensor_to_data()
92 * For TMU Rev1: in tmu_get_temp()
97 * within sensor range. TEMP is an 8 bit value representing in tmu_get_temp()
100 * For TMU Rev2: in tmu_get_temp()
105 * within sensor range. TEMP is an 9 bit value representing in tmu_get_temp()
109 regmap_read(qdata->regmap, REGS_TMR, &val); in tmu_get_temp()
111 return -EAGAIN; in tmu_get_temp()
113 if (regmap_read_poll_timeout(qdata->regmap, in tmu_get_temp()
114 REGS_TRITSR(qsensor->id), in tmu_get_temp()
119 return -ENODATA; in tmu_get_temp()
121 if (qdata->ver == TMU_VER1) { in tmu_get_temp()
145 struct qoriq_sensor *sensor = &qdata->sensor[id]; in qoriq_tmu_register_tmu_zone()
148 sensor->id = id; in qoriq_tmu_register_tmu_zone()
155 if (ret == -ENODEV) in qoriq_tmu_register_tmu_zone()
161 if (qdata->ver == TMU_VER1) in qoriq_tmu_register_tmu_zone()
162 sites |= 0x1 << (15 - id); in qoriq_tmu_register_tmu_zone()
170 if (qdata->ver == TMU_VER1) { in qoriq_tmu_register_tmu_zone()
171 regmap_write(qdata->regmap, REGS_TMR, TMR_ME | TMR_ALPF | sites); in qoriq_tmu_register_tmu_zone()
173 regmap_write(qdata->regmap, REGS_V2_TMSR, sites); in qoriq_tmu_register_tmu_zone()
174 regmap_write(qdata->regmap, REGS_TMR, TMR_ME | TMR_ALPF_V2); in qoriq_tmu_register_tmu_zone()
185 u32 range[4]; in qoriq_tmu_calibration() local
187 struct device_node *np = dev->of_node; in qoriq_tmu_calibration()
189 len = of_property_count_u32_elems(np, "fsl,tmu-range"); in qoriq_tmu_calibration()
191 dev_err(dev, "invalid range data.\n"); in qoriq_tmu_calibration()
195 val = of_property_read_u32_array(np, "fsl,tmu-range", range, len); in qoriq_tmu_calibration()
197 dev_err(dev, "failed to read range data.\n"); in qoriq_tmu_calibration()
201 /* Init temperature range registers */ in qoriq_tmu_calibration()
203 regmap_write(data->regmap, REGS_TTRnCR(i), range[i]); in qoriq_tmu_calibration()
205 calibration = of_get_property(np, "fsl,tmu-calibration", &len); in qoriq_tmu_calibration()
208 return -ENODEV; in qoriq_tmu_calibration()
213 regmap_write(data->regmap, REGS_TTCFGR, val); in qoriq_tmu_calibration()
215 regmap_write(data->regmap, REGS_TSCFGR, val); in qoriq_tmu_calibration()
224 regmap_write(data->regmap, REGS_TIER, TIER_DISABLE); in qoriq_tmu_init_device()
228 if (data->ver == TMU_VER1) { in qoriq_tmu_init_device()
229 regmap_write(data->regmap, REGS_TMTMIR, TMTMIR_DEFAULT); in qoriq_tmu_init_device()
231 regmap_write(data->regmap, REGS_V2_TMTMIR, TMTMIR_DEFAULT); in qoriq_tmu_init_device()
232 regmap_write(data->regmap, REGS_V2_TEUMR(0), TEUMR0_V2); in qoriq_tmu_init_device()
236 regmap_write(data->regmap, REGS_TMR, TMR_DISABLE); in qoriq_tmu_init_device()
251 .n_yes_ranges = ARRAY_SIZE(qoriq_yes_ranges) - 1,
263 regmap_write(data->regmap, REGS_TMR, TMR_DISABLE); in qoriq_tmu_action()
264 clk_disable_unprepare(data->clk); in qoriq_tmu_action()
272 struct device_node *np = pdev->dev.of_node; in qoriq_tmu_probe()
273 struct device *dev = &pdev->dev; in qoriq_tmu_probe()
274 const bool little_endian = of_property_read_bool(np, "little-endian"); in qoriq_tmu_probe()
291 return -ENOMEM; in qoriq_tmu_probe()
300 data->regmap = devm_regmap_init_mmio(dev, base, &regmap_config); in qoriq_tmu_probe()
301 ret = PTR_ERR_OR_ZERO(data->regmap); in qoriq_tmu_probe()
307 data->clk = devm_clk_get_optional(dev, NULL); in qoriq_tmu_probe()
308 if (IS_ERR(data->clk)) in qoriq_tmu_probe()
309 return PTR_ERR(data->clk); in qoriq_tmu_probe()
311 ret = clk_prepare_enable(data->clk); in qoriq_tmu_probe()
322 ret = regmap_read(data->regmap, REGS_IPBRR(0), &ver); in qoriq_tmu_probe()
324 dev_err(&pdev->dev, "Failed to read IP block version\n"); in qoriq_tmu_probe()
327 data->ver = (ver >> 8) & 0xff; in qoriq_tmu_probe()
329 qoriq_tmu_init_device(data); /* TMU initialization */ in qoriq_tmu_probe()
331 ret = qoriq_tmu_calibration(dev, data); /* TMU calibration */ in qoriq_tmu_probe()
351 ret = regmap_update_bits(data->regmap, REGS_TMR, TMR_ME, 0); in qoriq_tmu_suspend()
355 clk_disable_unprepare(data->clk); in qoriq_tmu_suspend()
365 ret = clk_prepare_enable(data->clk); in qoriq_tmu_resume()
370 return regmap_update_bits(data->regmap, REGS_TMR, TMR_ME, TMR_ME); in qoriq_tmu_resume()
377 { .compatible = "fsl,qoriq-tmu", },
378 { .compatible = "fsl,imx8mq-tmu", },