Lines Matching +full:codec +full:- +full:irq
1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * mainstone-wm97xx.c -- Mainstone Continuous Touch screen driver for
16 * - codecs supported:- WM9705, WM9712, WM9713
17 * - processors supported:- Intel XScale PXA25x, PXA26x, PXA27x
24 #include <linux/irq.h>
30 #include <mach/regs-ac97.h>
32 #include <asm/mach-types.h>
35 u16 id; /* codec id */
61 static int irq; variable
74 * event. If the irq request fails then it will fall back to polling mode.
150 dev_dbg(wm->dev, "Raw coordinates: x=%x, y=%x, p=%x\n", in wm97xx_acc_pen_down()
161 input_report_abs(wm->input_dev, ABS_X, x & 0xfff); in wm97xx_acc_pen_down()
162 input_report_abs(wm->input_dev, ABS_Y, y & 0xfff); in wm97xx_acc_pen_down()
163 input_report_abs(wm->input_dev, ABS_PRESSURE, p & 0xfff); in wm97xx_acc_pen_down()
164 input_report_key(wm->input_dev, BTN_TOUCH, (p != 0)); in wm97xx_acc_pen_down()
165 input_sync(wm->input_dev); in wm97xx_acc_pen_down()
176 /* check we have a codec */ in wm97xx_acc_startup()
177 if (wm->ac97 == NULL) in wm97xx_acc_startup()
178 return -ENODEV; in wm97xx_acc_startup()
182 if (wm->id != cinfo[idx].id) in wm97xx_acc_startup()
188 wm->acc_rate = cinfo[sp_idx].code; in wm97xx_acc_startup()
189 wm->acc_slot = ac97_touch_slot; in wm97xx_acc_startup()
190 dev_info(wm->dev, in wm97xx_acc_startup()
194 /* IRQ driven touchscreen is used on Palm hardware */ in wm97xx_acc_startup()
197 irq = 27; in wm97xx_acc_startup()
200 wm->variant = WM97xx_WM1613; in wm97xx_acc_startup()
202 irq = 4; in wm97xx_acc_startup()
204 if (irq) { in wm97xx_acc_startup()
205 ret = gpio_request(irq, "Touchscreen IRQ"); in wm97xx_acc_startup()
209 ret = gpio_direction_input(irq); in wm97xx_acc_startup()
211 gpio_free(irq); in wm97xx_acc_startup()
215 wm->pen_irq = gpio_to_irq(irq); in wm97xx_acc_startup()
216 irq_set_irq_type(wm->pen_irq, IRQ_TYPE_EDGE_BOTH); in wm97xx_acc_startup()
217 } else /* pen irq not supported */ in wm97xx_acc_startup()
220 /* codec specific irq config */ in wm97xx_acc_startup()
222 switch (wm->id) { in wm97xx_acc_startup()
227 /* use PEN_DOWN GPIO 13 to assert IRQ on GPIO line 2 */ in wm97xx_acc_startup()
238 dev_err(wm->dev, in wm97xx_acc_startup()
239 "pen down irq not supported on this device\n"); in wm97xx_acc_startup()
251 /* codec specific deconfig */ in wm97xx_acc_shutdown()
253 if (irq) in wm97xx_acc_shutdown()
254 gpio_free(irq); in wm97xx_acc_shutdown()
255 wm->pen_irq = 0; in wm97xx_acc_shutdown()
262 enable_irq(wm->pen_irq); in wm97xx_irq_enable()
264 disable_irq_nosync(wm->pen_irq); in wm97xx_irq_enable()
296 .name = "wm97xx-touch",