Re: [PATCH] Add support for HTC Shift Touchscreen

From: Dmitry Torokhov
Date: Tue May 20 2008 - 09:54:40 EST


On Tue, May 20, 2008 at 01:02:34PM +0200, Pau Oliva Fora wrote:
> Dmitry Torokhov wrote:
>> On Tue, May 20, 2008 at 01:08:44AM +0200, Pau Oliva Fora wrote:
>>> +
>>> +static int htcpen_open(struct input_dev *dev)
>>> +{
>>> + outb_p(DEVICE_ENABLE, HTCPEN_PORT_INIT);
>>> + return 0;
>>> +}
>>> +
>>> +static void htcpen_close(struct input_dev *dev)
>>> +{
>>> + free_irq(HTCPEN_IRQ, dev);
>>> +}
>>> +
>>
>> No, this will not work.. next time you open the device you won't have
>> IRQ anymore. You need the opposite of outb_p(DEVICE_ENABLE,
>> HTCPEN_PORT_INIT); here.
>>
>
> It is actually working; it also works after suspend/resume without any
> issues.
>

You need to close the device. Making evdev a module and unloading it
should do the trick (you don't use tsdev, do you?).

> I currently do not know a safe way of disabling the device, as HTC did
> not offer any specifications or datasheet when I requested, so everything
> in the driver has been reverse engineered.
>
> Let me know if you think it's ok to leave it as is, otherwise I'll try
> to find the proper way to disable the device (it should not be much
> different than the way of enabling it).

If you can't find the way to disable device then you need to revert to
the old way, with enabling it in _probe() and freein irq in _remove(),
you just need to make sure that you free_irq() first and then call
input_unregister_device().

Also, like Andrey said, we might consider using DMI table so we dont
poke IO ports on random boxes. Oh, and one more thing, you need to
reserve the IO ports your driver is using with request_region.

--
Dmitry
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/