Lines Matching refs:pv
39 struct wf_ad7417_priv *pv = sr->priv; in wf_ad7417_temp_get() local
45 mutex_lock(&pv->lock); in wf_ad7417_temp_get()
49 rc = i2c_master_send(pv->i2c, buf, 1); in wf_ad7417_temp_get()
52 rc = i2c_master_recv(pv->i2c, buf, 2); in wf_ad7417_temp_get()
62 mutex_unlock(&pv->lock); in wf_ad7417_temp_get()
66 mutex_unlock(&pv->lock); in wf_ad7417_temp_get()
80 static void wf_ad7417_adc_convert(struct wf_ad7417_priv *pv, in wf_ad7417_adc_convert() argument
85 *value = (raw * (s32)pv->mpu->mdiode + in wf_ad7417_adc_convert()
86 ((s32)pv->mpu->bdiode << 12)) >> 2; in wf_ad7417_adc_convert()
102 struct wf_ad7417_priv *pv = sr->priv; in wf_ad7417_adc_get() local
103 int chan = sr - pv->sensors; in wf_ad7417_adc_get()
109 mutex_lock(&pv->lock); in wf_ad7417_adc_get()
113 buf[1] = (pv->config & 0x1f) | (chan << 5); in wf_ad7417_adc_get()
114 rc = i2c_master_send(pv->i2c, buf, 2); in wf_ad7417_adc_get()
123 rc = i2c_master_send(pv->i2c, buf, 1); in wf_ad7417_adc_get()
128 rc = i2c_master_recv(pv->i2c, buf, 2); in wf_ad7417_adc_get()
134 wf_ad7417_adc_convert(pv, chan, raw, value); in wf_ad7417_adc_get()
136 dev_vdbg(&pv->i2c->dev, "ADC chan %d [%s]" in wf_ad7417_adc_get()
140 mutex_unlock(&pv->lock); in wf_ad7417_adc_get()
144 dev_dbg(&pv->i2c->dev, in wf_ad7417_adc_get()
149 mutex_unlock(&pv->lock); in wf_ad7417_adc_get()
155 struct wf_ad7417_priv *pv = container_of(ref, in wf_ad7417_release() local
157 kfree(pv); in wf_ad7417_release()
162 struct wf_ad7417_priv *pv = sr->priv; in wf_ad7417_sensor_release() local
165 kref_put(&pv->ref, wf_ad7417_release); in wf_ad7417_sensor_release()
180 static void wf_ad7417_add_sensor(struct wf_ad7417_priv *pv, in wf_ad7417_add_sensor() argument
184 pv->sensors[index].name = kasprintf(GFP_KERNEL, "%s-%d", name, pv->cpu); in wf_ad7417_add_sensor()
185 pv->sensors[index].priv = pv; in wf_ad7417_add_sensor()
186 pv->sensors[index].ops = ops; in wf_ad7417_add_sensor()
187 if (!wf_register_sensor(&pv->sensors[index])) in wf_ad7417_add_sensor()
188 kref_get(&pv->ref); in wf_ad7417_add_sensor()
191 static void wf_ad7417_init_chip(struct wf_ad7417_priv *pv) in wf_ad7417_init_chip() argument
207 i2c_master_send(pv->i2c, buf, 2); in wf_ad7417_init_chip()
211 rc = i2c_master_send(pv->i2c, buf, 1); in wf_ad7417_init_chip()
213 rc = i2c_master_recv(pv->i2c, buf, 1); in wf_ad7417_init_chip()
217 dev_dbg(&pv->i2c->dev, "ADC config reg: %02x\n", in wf_ad7417_init_chip()
224 rc = i2c_master_send(pv->i2c, buf, 2); in wf_ad7417_init_chip()
228 dev_err(&pv->i2c->dev, "Error reading ADC config\n"); in wf_ad7417_init_chip()
230 pv->config = config; in wf_ad7417_init_chip()
236 struct wf_ad7417_priv *pv; in wf_ad7417_probe() local
265 pv = kzalloc(sizeof(struct wf_ad7417_priv), GFP_KERNEL); in wf_ad7417_probe()
266 if (pv == NULL) in wf_ad7417_probe()
269 kref_init(&pv->ref); in wf_ad7417_probe()
270 mutex_init(&pv->lock); in wf_ad7417_probe()
271 pv->i2c = client; in wf_ad7417_probe()
272 pv->cpu = cpu_nr; in wf_ad7417_probe()
273 pv->mpu = mpu; in wf_ad7417_probe()
274 dev_set_drvdata(&client->dev, pv); in wf_ad7417_probe()
277 wf_ad7417_init_chip(pv); in wf_ad7417_probe()
284 wf_ad7417_add_sensor(pv, 0, "cpu-amb-temp", &wf_ad7417_temp_ops); in wf_ad7417_probe()
285 wf_ad7417_add_sensor(pv, 1, "cpu-diode-temp", &wf_ad7417_adc_ops); in wf_ad7417_probe()
286 wf_ad7417_add_sensor(pv, 2, "cpu-12v-current", &wf_ad7417_adc_ops); in wf_ad7417_probe()
287 wf_ad7417_add_sensor(pv, 3, "cpu-voltage", &wf_ad7417_adc_ops); in wf_ad7417_probe()
288 wf_ad7417_add_sensor(pv, 4, "cpu-current", &wf_ad7417_adc_ops); in wf_ad7417_probe()
295 struct wf_ad7417_priv *pv = dev_get_drvdata(&client->dev); in wf_ad7417_remove() local
299 pv->i2c = NULL; in wf_ad7417_remove()
303 wf_unregister_sensor(&pv->sensors[i]); in wf_ad7417_remove()
305 kref_put(&pv->ref, wf_ad7417_release); in wf_ad7417_remove()