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:
committed by
Dmitry Torokhov
parent
b833306feb
commit
99fde513f5
@ -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) {
|
||||
|
Reference in New Issue
Block a user