Lines Matching refs:wm

151 static void wm9712_phy_init(struct wm97xx *wm)
160 dev_dbg(wm->dev, "setting pen detect pull-up to %d Ohms\n",
167 dev_dbg(wm->dev, "setting 5-wire touchscreen mode.\n");
170 dev_warn(wm->dev, "pressure measurement is not "
179 dev_dbg(wm->dev,
182 dev_dbg(wm->dev,
189 dev_dbg(wm->dev, "supplied delay out of range.\n");
194 dev_dbg(wm->dev, "setting adc sample delay to %d u Secs.\n",
202 reg = wm97xx_reg_read(wm, AC97_MISC_AFE);
203 wm97xx_reg_write(wm, AC97_MISC_AFE, reg | WM97XX_GPIO_4);
204 reg = wm97xx_reg_read(wm, AC97_GPIO_CFG);
205 wm97xx_reg_write(wm, AC97_GPIO_CFG, reg | WM97XX_GPIO_4);
212 wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER1, dig1);
213 wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER2, dig2);
216 static void wm9712_dig_enable(struct wm97xx *wm, int enable)
218 u16 dig2 = wm->dig[2];
221 wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER2,
223 wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD); /* dummy read */
225 wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER2,
229 static void wm9712_aux_prepare(struct wm97xx *wm)
231 memcpy(wm->dig_save, wm->dig, sizeof(wm->dig));
232 wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER1, 0);
233 wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER2, WM97XX_PRP_DET_DIG);
236 static void wm9712_dig_restore(struct wm97xx *wm)
238 wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER1, wm->dig_save[1]);
239 wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER2, wm->dig_save[2]);
242 static inline int is_pden(struct wm97xx *wm)
244 return wm->dig[2] & WM9712_PDEN;
250 static int wm9712_poll_sample(struct wm97xx *wm, int adcsel, int *sample)
255 if (wants_pen && !wm->pen_probably_down) {
256 u16 data = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD);
259 wm->pen_probably_down = 1;
263 if (wm->mach_ops && wm->mach_ops->pre_sample)
264 wm->mach_ops->pre_sample(adcsel);
265 wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER1, (adcsel & WM97XX_ADCSEL_MASK)
272 while ((wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER1) & WM97XX_POLL)
280 if (is_pden(wm))
281 wm->pen_probably_down = 0;
283 dev_dbg(wm->dev, "adc sample timeout\n");
287 *sample = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD);
288 if (wm->mach_ops && wm->mach_ops->post_sample)
289 wm->mach_ops->post_sample(adcsel);
293 dev_dbg(wm->dev, "adc wrong sample, wanted %x got %x\n",
301 *sample = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD);
303 wm->pen_probably_down = 0;
314 static int wm9712_poll_coord(struct wm97xx *wm, struct wm97xx_data *data)
318 if (!wm->pen_probably_down) {
319 u16 data_rd = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD);
322 wm->pen_probably_down = 1;
326 if (wm->mach_ops && wm->mach_ops->pre_sample)
327 wm->mach_ops->pre_sample(WM97XX_ADCSEL_X | WM97XX_ADCSEL_Y);
329 wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER1,
334 data->x = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD);
336 while ((wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER1) & WM97XX_POLL)
344 if (is_pden(wm))
345 wm->pen_probably_down = 0;
347 dev_dbg(wm->dev, "adc sample timeout\n");
352 data->y = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD);
354 data->p = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD);
358 if (wm->mach_ops && wm->mach_ops->post_sample)
359 wm->mach_ops->post_sample(WM97XX_ADCSEL_X | WM97XX_ADCSEL_Y);
368 wm->pen_probably_down = 0;
379 static int wm9712_poll_touch(struct wm97xx *wm, struct wm97xx_data *data)
384 rc = wm9712_poll_coord(wm, data);
388 rc = wm9712_poll_sample(wm, WM97XX_ADCSEL_X | WM97XX_PEN_DOWN,
393 rc = wm9712_poll_sample(wm, WM97XX_ADCSEL_Y | WM97XX_PEN_DOWN,
399 rc = wm9712_poll_sample(wm, WM97XX_ADCSEL_PRES | WM97XX_PEN_DOWN,
413 static int wm9712_acc_enable(struct wm97xx *wm, int enable)
418 dig1 = wm->dig[1];
419 dig2 = wm->dig[2];
423 if (wm->mach_ops->acc_startup) {
424 ret = wm->mach_ops->acc_startup(wm);
432 WM97XX_SLT(wm->acc_slot) |
433 WM97XX_RATE(wm->acc_rate);
440 if (wm->mach_ops->acc_shutdown)
441 wm->mach_ops->acc_shutdown(wm);
444 wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER1, dig1);
445 wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER2, dig2);