Input: wm97xx - add possibility to control the GPIO_STATUS shift
This patch allows tweaking the behaviour of GPIO_STATUS register shift quirk that's in wm97xx-core. The problem with GPIO_STATUS register being shifted by one doesn't appear on all hardware it seems and causes problems with accelerated touchscreen drivers on Palm hardware. Therefore an accelerated touchscreen driver can select if the shift is/isn't happening on the hardware. Signed-off-by: Marek Vasut <marek.vasut@gmail.com> Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
This commit is contained in:
parent
b833306feb
commit
99fde513f5
3 changed files with 14 additions and 2 deletions
|
@ -198,6 +198,9 @@ static int wm97xx_acc_startup(struct wm97xx *wm)
|
|||
if (machine_is_palmt5() || machine_is_palmtx() || machine_is_palmld()) {
|
||||
pen_int = 1;
|
||||
irq = 27;
|
||||
/* There is some obscure mutant of WM9712 interbred with WM9713
|
||||
* used on Palm HW */
|
||||
wm->variant = WM97xx_WM1613;
|
||||
} else if (machine_is_mainstone() && pen_int)
|
||||
irq = 4;
|
||||
|
||||
|
|
|
@ -204,7 +204,7 @@ void wm97xx_set_gpio(struct wm97xx *wm, u32 gpio,
|
|||
else
|
||||
reg &= ~gpio;
|
||||
|
||||
if (wm->id == WM9712_ID2)
|
||||
if (wm->id == WM9712_ID2 && wm->variant != WM97xx_WM1613)
|
||||
wm97xx_reg_write(wm, AC97_GPIO_STATUS, reg << 1);
|
||||
else
|
||||
wm97xx_reg_write(wm, AC97_GPIO_STATUS, reg);
|
||||
|
@ -307,7 +307,7 @@ static void wm97xx_pen_irq_worker(struct work_struct *work)
|
|||
WM97XX_GPIO_13);
|
||||
}
|
||||
|
||||
if (wm->id == WM9712_ID2)
|
||||
if (wm->id == WM9712_ID2 && wm->variant != WM97xx_WM1613)
|
||||
wm97xx_reg_write(wm, AC97_GPIO_STATUS, (status &
|
||||
~WM97XX_GPIO_13) << 1);
|
||||
else
|
||||
|
@ -582,6 +582,8 @@ static int wm97xx_probe(struct device *dev)
|
|||
|
||||
wm->id = wm97xx_reg_read(wm, AC97_VENDOR_ID2);
|
||||
|
||||
wm->variant = WM97xx_GENERIC;
|
||||
|
||||
dev_info(wm->dev, "detected a wm97%02x codec\n", wm->id & 0xff);
|
||||
|
||||
switch (wm->id & 0xff) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue