Lines Matching refs:chip
69 static int qpnp_tm_read(struct qpnp_tm_chip *chip, u16 addr, u8 *data) in qpnp_tm_read() argument
74 ret = regmap_read(chip->map, chip->base + addr, &val); in qpnp_tm_read()
82 static int qpnp_tm_write(struct qpnp_tm_chip *chip, u16 addr, u8 data) in qpnp_tm_write() argument
84 return regmap_write(chip->map, chip->base + addr, data); in qpnp_tm_write()
91 static int qpnp_tm_update_temp_no_adc(struct qpnp_tm_chip *chip) in qpnp_tm_update_temp_no_adc() argument
97 ret = qpnp_tm_read(chip, QPNP_TM_REG_STATUS, ®); in qpnp_tm_update_temp_no_adc()
103 if (stage > chip->stage) { in qpnp_tm_update_temp_no_adc()
105 chip->temp = (stage - 1) * TEMP_STAGE_STEP + in qpnp_tm_update_temp_no_adc()
106 chip->thresh * TEMP_THRESH_STEP + in qpnp_tm_update_temp_no_adc()
108 } else if (stage < chip->stage) { in qpnp_tm_update_temp_no_adc()
110 chip->temp = stage * TEMP_STAGE_STEP + in qpnp_tm_update_temp_no_adc()
111 chip->thresh * TEMP_THRESH_STEP - in qpnp_tm_update_temp_no_adc()
115 chip->stage = stage; in qpnp_tm_update_temp_no_adc()
122 struct qpnp_tm_chip *chip = data; in qpnp_tm_get_temp() local
128 if (IS_ERR(chip->adc)) { in qpnp_tm_get_temp()
129 ret = qpnp_tm_update_temp_no_adc(chip); in qpnp_tm_get_temp()
133 ret = iio_read_channel_processed(chip->adc, &mili_celsius); in qpnp_tm_get_temp()
137 chip->temp = mili_celsius; in qpnp_tm_get_temp()
140 *temp = chip->temp < 0 ? 0 : chip->temp; in qpnp_tm_get_temp()
151 struct qpnp_tm_chip *chip = data; in qpnp_tm_isr() local
153 thermal_zone_device_update(chip->tz_dev); in qpnp_tm_isr()
163 static int qpnp_tm_init(struct qpnp_tm_chip *chip) in qpnp_tm_init() argument
168 chip->thresh = THRESH_MIN; in qpnp_tm_init()
169 chip->temp = DEFAULT_TEMP; in qpnp_tm_init()
171 ret = qpnp_tm_read(chip, QPNP_TM_REG_STATUS, ®); in qpnp_tm_init()
175 chip->stage = reg & STATUS_STAGE_MASK; in qpnp_tm_init()
177 if (chip->stage) in qpnp_tm_init()
178 chip->temp = chip->thresh * TEMP_THRESH_STEP + in qpnp_tm_init()
179 (chip->stage - 1) * TEMP_STAGE_STEP + in qpnp_tm_init()
186 reg = chip->thresh & SHUTDOWN_CTRL1_THRESHOLD_MASK; in qpnp_tm_init()
187 ret = qpnp_tm_write(chip, QPNP_TM_REG_SHUTDOWN_CTRL1, reg); in qpnp_tm_init()
193 ret = qpnp_tm_write(chip, QPNP_TM_REG_ALARM_CTRL, reg); in qpnp_tm_init()
200 struct qpnp_tm_chip *chip; in qpnp_tm_probe() local
208 chip = devm_kzalloc(&pdev->dev, sizeof(*chip), GFP_KERNEL); in qpnp_tm_probe()
209 if (!chip) in qpnp_tm_probe()
212 dev_set_drvdata(&pdev->dev, chip); in qpnp_tm_probe()
214 chip->map = dev_get_regmap(pdev->dev.parent, NULL); in qpnp_tm_probe()
215 if (!chip->map) in qpnp_tm_probe()
227 chip->adc = iio_channel_get(&pdev->dev, "thermal"); in qpnp_tm_probe()
228 if (PTR_ERR(chip->adc) == -EPROBE_DEFER) in qpnp_tm_probe()
229 return PTR_ERR(chip->adc); in qpnp_tm_probe()
231 chip->base = res[0]; in qpnp_tm_probe()
233 ret = qpnp_tm_read(chip, QPNP_TM_REG_TYPE, &type); in qpnp_tm_probe()
239 ret = qpnp_tm_read(chip, QPNP_TM_REG_SUBTYPE, &subtype); in qpnp_tm_probe()
252 ret = qpnp_tm_init(chip); in qpnp_tm_probe()
259 IRQF_ONESHOT, node->name, chip); in qpnp_tm_probe()
263 chip->tz_dev = thermal_zone_of_sensor_register(&pdev->dev, 0, chip, in qpnp_tm_probe()
265 if (IS_ERR(chip->tz_dev)) { in qpnp_tm_probe()
267 ret = PTR_ERR(chip->tz_dev); in qpnp_tm_probe()
274 if (!IS_ERR(chip->adc)) in qpnp_tm_probe()
275 iio_channel_release(chip->adc); in qpnp_tm_probe()
282 struct qpnp_tm_chip *chip = dev_get_drvdata(&pdev->dev); in qpnp_tm_remove() local
284 thermal_zone_of_sensor_unregister(&pdev->dev, chip->tz_dev); in qpnp_tm_remove()
285 if (!IS_ERR(chip->adc)) in qpnp_tm_remove()
286 iio_channel_release(chip->adc); in qpnp_tm_remove()