• Home
  • Raw
  • Download

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

1 // SPDX-License-Identifier: GPL-2.0
55 #define REGS_V2_TMSAR(n) (0x304 + 16 * (n)) /* TMU monitoring
58 #define REGS_TTRnCR(n) (0xf10 + 4 * (n)) /* Temperature Range n
82 return container_of(s, struct qoriq_tmu_data, sensor[s->id]); in qoriq_sensor_to_data()
93 * For TMU Rev1: in tmu_get_temp()
98 * within sensor range. TEMP is an 8 bit value representing in tmu_get_temp()
101 * For TMU Rev2: in tmu_get_temp()
106 * within sensor range. TEMP is an 9 bit value representing in tmu_get_temp()
109 if (regmap_read_poll_timeout(qdata->regmap, in tmu_get_temp()
110 REGS_TRITSR(qsensor->id), in tmu_get_temp()
115 return -ENODATA; in tmu_get_temp()
117 if (qdata->ver == TMU_VER1) in tmu_get_temp()
134 if (qdata->ver == TMU_VER1) { in qoriq_tmu_register_tmu_zone()
135 regmap_write(qdata->regmap, REGS_TMR, in qoriq_tmu_register_tmu_zone()
138 regmap_write(qdata->regmap, REGS_V2_TMSR, TMR_MSITE_ALL); in qoriq_tmu_register_tmu_zone()
139 regmap_write(qdata->regmap, REGS_TMR, TMR_ME | TMR_ALPF_V2); in qoriq_tmu_register_tmu_zone()
144 struct qoriq_sensor *sensor = &qdata->sensor[id]; in qoriq_tmu_register_tmu_zone()
147 sensor->id = id; in qoriq_tmu_register_tmu_zone()
154 if (ret == -ENODEV) in qoriq_tmu_register_tmu_zone()
157 regmap_write(qdata->regmap, REGS_TMR, TMR_DISABLE); in qoriq_tmu_register_tmu_zone()
174 u32 range[4]; in qoriq_tmu_calibration() local
176 struct device_node *np = dev->of_node; in qoriq_tmu_calibration()
178 len = of_property_count_u32_elems(np, "fsl,tmu-range"); in qoriq_tmu_calibration()
180 dev_err(dev, "invalid range data.\n"); in qoriq_tmu_calibration()
184 val = of_property_read_u32_array(np, "fsl,tmu-range", range, len); in qoriq_tmu_calibration()
186 dev_err(dev, "failed to read range data.\n"); in qoriq_tmu_calibration()
190 /* Init temperature range registers */ in qoriq_tmu_calibration()
192 regmap_write(data->regmap, REGS_TTRnCR(i), range[i]); in qoriq_tmu_calibration()
194 calibration = of_get_property(np, "fsl,tmu-calibration", &len); in qoriq_tmu_calibration()
197 return -ENODEV; in qoriq_tmu_calibration()
202 regmap_write(data->regmap, REGS_TTCFGR, val); in qoriq_tmu_calibration()
204 regmap_write(data->regmap, REGS_TSCFGR, val); in qoriq_tmu_calibration()
215 regmap_write(data->regmap, REGS_TIER, TIER_DISABLE); in qoriq_tmu_init_device()
219 if (data->ver == TMU_VER1) { in qoriq_tmu_init_device()
220 regmap_write(data->regmap, REGS_TMTMIR, TMTMIR_DEFAULT); in qoriq_tmu_init_device()
222 regmap_write(data->regmap, REGS_V2_TMTMIR, TMTMIR_DEFAULT); in qoriq_tmu_init_device()
223 regmap_write(data->regmap, REGS_V2_TEUMR(0), TEUMR0_V2); in qoriq_tmu_init_device()
225 regmap_write(data->regmap, REGS_V2_TMSAR(i), TMSARA_V2); in qoriq_tmu_init_device()
229 regmap_write(data->regmap, REGS_TMR, TMR_DISABLE); in qoriq_tmu_init_device()
244 .n_yes_ranges = ARRAY_SIZE(qoriq_yes_ranges) - 1,
256 regmap_write(data->regmap, REGS_TMR, TMR_DISABLE); in qoriq_tmu_action()
257 clk_disable_unprepare(data->clk); in qoriq_tmu_action()
265 struct device_node *np = pdev->dev.of_node; in qoriq_tmu_probe()
266 struct device *dev = &pdev->dev; in qoriq_tmu_probe()
267 const bool little_endian = of_property_read_bool(np, "little-endian"); in qoriq_tmu_probe()
284 return -ENOMEM; in qoriq_tmu_probe()
293 data->regmap = devm_regmap_init_mmio(dev, base, &regmap_config); in qoriq_tmu_probe()
294 ret = PTR_ERR_OR_ZERO(data->regmap); in qoriq_tmu_probe()
300 data->clk = devm_clk_get_optional(dev, NULL); in qoriq_tmu_probe()
301 if (IS_ERR(data->clk)) in qoriq_tmu_probe()
302 return PTR_ERR(data->clk); in qoriq_tmu_probe()
304 ret = clk_prepare_enable(data->clk); in qoriq_tmu_probe()
315 ret = regmap_read(data->regmap, REGS_IPBRR(0), &ver); in qoriq_tmu_probe()
317 dev_err(&pdev->dev, "Failed to read IP block version\n"); in qoriq_tmu_probe()
320 data->ver = (ver >> 8) & 0xff; in qoriq_tmu_probe()
322 qoriq_tmu_init_device(data); /* TMU initialization */ in qoriq_tmu_probe()
324 ret = qoriq_tmu_calibration(dev, data); /* TMU calibration */ in qoriq_tmu_probe()
344 ret = regmap_update_bits(data->regmap, REGS_TMR, TMR_ME, 0); in qoriq_tmu_suspend()
348 clk_disable_unprepare(data->clk); in qoriq_tmu_suspend()
358 ret = clk_prepare_enable(data->clk); in qoriq_tmu_resume()
363 return regmap_update_bits(data->regmap, REGS_TMR, TMR_ME, TMR_ME); in qoriq_tmu_resume()
370 { .compatible = "fsl,qoriq-tmu", },
371 { .compatible = "fsl,imx8mq-tmu", },