Lines Matching refs:pv
38 struct wf_ad7417_priv *pv = sr->priv;
44 mutex_lock(&pv->lock);
48 rc = i2c_master_send(pv->i2c, buf, 1);
51 rc = i2c_master_recv(pv->i2c, buf, 2);
61 mutex_unlock(&pv->lock);
65 mutex_unlock(&pv->lock);
79 static void wf_ad7417_adc_convert(struct wf_ad7417_priv *pv,
84 *value = (raw * (s32)pv->mpu->mdiode +
85 ((s32)pv->mpu->bdiode << 12)) >> 2;
101 struct wf_ad7417_priv *pv = sr->priv;
102 int chan = sr - pv->sensors;
108 mutex_lock(&pv->lock);
112 buf[1] = (pv->config & 0x1f) | (chan << 5);
113 rc = i2c_master_send(pv->i2c, buf, 2);
122 rc = i2c_master_send(pv->i2c, buf, 1);
127 rc = i2c_master_recv(pv->i2c, buf, 2);
133 wf_ad7417_adc_convert(pv, chan, raw, value);
135 dev_vdbg(&pv->i2c->dev, "ADC chan %d [%s]"
139 mutex_unlock(&pv->lock);
143 dev_dbg(&pv->i2c->dev,
148 mutex_unlock(&pv->lock);
154 struct wf_ad7417_priv *pv = container_of(ref,
156 kfree(pv);
161 struct wf_ad7417_priv *pv = sr->priv;
164 kref_put(&pv->ref, wf_ad7417_release);
179 static void wf_ad7417_add_sensor(struct wf_ad7417_priv *pv,
183 pv->sensors[index].name = kasprintf(GFP_KERNEL, "%s-%d", name, pv->cpu);
184 pv->sensors[index].priv = pv;
185 pv->sensors[index].ops = ops;
186 if (!wf_register_sensor(&pv->sensors[index]))
187 kref_get(&pv->ref);
190 static void wf_ad7417_init_chip(struct wf_ad7417_priv *pv)
206 i2c_master_send(pv->i2c, buf, 2);
210 rc = i2c_master_send(pv->i2c, buf, 1);
212 rc = i2c_master_recv(pv->i2c, buf, 1);
216 dev_dbg(&pv->i2c->dev, "ADC config reg: %02x\n",
223 rc = i2c_master_send(pv->i2c, buf, 2);
227 dev_err(&pv->i2c->dev, "Error reading ADC config\n");
229 pv->config = config;
235 struct wf_ad7417_priv *pv;
264 pv = kzalloc(sizeof(struct wf_ad7417_priv), GFP_KERNEL);
265 if (pv == NULL)
268 kref_init(&pv->ref);
269 mutex_init(&pv->lock);
270 pv->i2c = client;
271 pv->cpu = cpu_nr;
272 pv->mpu = mpu;
273 dev_set_drvdata(&client->dev, pv);
276 wf_ad7417_init_chip(pv);
283 wf_ad7417_add_sensor(pv, 0, "cpu-amb-temp", &wf_ad7417_temp_ops);
284 wf_ad7417_add_sensor(pv, 1, "cpu-diode-temp", &wf_ad7417_adc_ops);
285 wf_ad7417_add_sensor(pv, 2, "cpu-12v-current", &wf_ad7417_adc_ops);
286 wf_ad7417_add_sensor(pv, 3, "cpu-voltage", &wf_ad7417_adc_ops);
287 wf_ad7417_add_sensor(pv, 4, "cpu-current", &wf_ad7417_adc_ops);
294 struct wf_ad7417_priv *pv = dev_get_drvdata(&client->dev);
298 pv->i2c = NULL;
302 wf_unregister_sensor(&pv->sensors[i]);
304 kref_put(&pv->ref, wf_ad7417_release);