Re: How to use an usb interface than is claimed by HID?

2007-01-21 Thread Ivan Ukhov
> .. which wouldn't help you either, supposing that you don't want to touch
> the kernel sources at all, because this function is unexported and static.
>
> So I think that there is no straightforward way, sorry.
>
> Is this a device that doesn't exist anywhere else than on your table? I
> still think that putting the code in kernel (if possible) and blacklisting
> the device on the hid_blacklist[] is the simplest way.
>
> The other possibility is writing the driver completely in userspace, using
> libhid/hiddev. Would that suit your needs?

I'm afraid it wouldn't.

Thank you very much.

-- 
Regards,
Ivan Ukhov.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: How to use an usb interface than is claimed by HID?

2007-01-21 Thread Ivan Ukhov

Jiri Kosina wrote:
Then, when this is a non-standard situation anyway, would calling 
hid_disconnect() for the usb_interface of your driver be enough?
  
I can't even imagine how to call this very function. Could you give me 
an example? After all, this function and friends of its aren't 
EXPORTED_SYMBOLs. Beside it's going to end up depending on the HID 
driver, so the HID driver will have to be loaded all the time even if my 
driver is loaded first and manages to claim the interfaces.


Sorry, I've absolutely forgotten to say that I'm talking about 2.4.x and 
this function looks like:


static void hid_disconnect(struct usb_device *dev, void *ptr);

ptr is a pointer to the struct hid_device structure, which is created 
and initialized in the probe function. Do you offer me to set up this 
structure myself


Thank you.

Ivan Ukhov.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: How to use an usb interface than is claimed by HID?

2007-01-21 Thread Ivan Ukhov


Could I ask you what precisely is the driver you are talking about doing? 
Why is it not going to be a part of mainline kernel (i.e. being able to be 
put on blacklist easily).
  
It's a tiny driver and it hardy can be a part of the mainline kernel 
because of its useless for everyone but me, beside I don't want to make 
someone modify the kernel code. For example, I've written this driver, 
than someone who wanna use it takes the code and tries to deal with it 
and he finds out that he also needs to have the latest kernel (where the 
device is included to that black list) or to fix the kernel himself. 
It's rather uncomfortable for a person who just wants to use a simple 
device with a simple driver, isn't it? It'll be great if my driver can 
manage it himself.
Sure, there are such in-kernel drivers ... for example Wacom driver. This 
driver is in-kernel, and it is hooked inside the usb_hid_configure() 
function to be ignored by the HID layer completely, and all the driver 
specific handling is handled in drivers/usb/input/wacom*.


(When looking at that code, it looks quite ugly by the way. I have no idea 
why wacom driver is not using HID_QUIRK_IGNORE, but has a hardcoded hook 
in the usb_hid_configure() instead. I will probably fix this.)
  
As far as I remember this driver modifies the HID driver... it's what I 
was talking about late.

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


Re: How to use an usb interface than is claimed by HID?

2007-01-21 Thread Ivan Ukhov


Could I ask you what precisely is the driver you are talking about doing? 
Why is it not going to be a part of mainline kernel (i.e. being able to be 
put on blacklist easily).
  
It's a tiny driver and it hardy can be a part of the mainline kernel 
because of its useless for everyone but me, beside I don't want to make 
someone modify the kernel code. For example, I've written this driver, 
than someone who wanna use it takes the code and tries to deal with it 
and he finds out that he also needs to have the latest kernel (where the 
device is included to that black list) or to fix the kernel himself. 
It's rather uncomfortable for a person who just wants to use a simple 
device with a simple driver, isn't it? It'll be great if my driver can 
manage it himself.
Sure, there are such in-kernel drivers ... for example Wacom driver. This 
driver is in-kernel, and it is hooked inside the usb_hid_configure() 
function to be ignored by the HID layer completely, and all the driver 
specific handling is handled in drivers/usb/input/wacom*.


(When looking at that code, it looks quite ugly by the way. I have no idea 
why wacom driver is not using HID_QUIRK_IGNORE, but has a hardcoded hook 
in the usb_hid_configure() instead. I will probably fix this.)
  
As far as I remember this driver modifies the HID driver... it's what I 
was talking about late.

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


Re: How to use an usb interface than is claimed by HID?

2007-01-21 Thread Ivan Ukhov

Jiri Kosina wrote:
Then, when this is a non-standard situation anyway, would calling 
hid_disconnect() for the usb_interface of your driver be enough?
  
I can't even imagine how to call this very function. Could you give me 
an example? After all, this function and friends of its aren't 
EXPORTED_SYMBOLs. Beside it's going to end up depending on the HID 
driver, so the HID driver will have to be loaded all the time even if my 
driver is loaded first and manages to claim the interfaces.


Sorry, I've absolutely forgotten to say that I'm talking about 2.4.x and 
this function looks like:


static void hid_disconnect(struct usb_device *dev, void *ptr);

ptr is a pointer to the struct hid_device structure, which is created 
and initialized in the probe function. Do you offer me to set up this 
structure myself


Thank you.

Ivan Ukhov.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: How to use an usb interface than is claimed by HID?

2007-01-21 Thread Ivan Ukhov
 .. which wouldn't help you either, supposing that you don't want to touch
 the kernel sources at all, because this function is unexported and static.

 So I think that there is no straightforward way, sorry.

 Is this a device that doesn't exist anywhere else than on your table? I
 still think that putting the code in kernel (if possible) and blacklisting
 the device on the hid_blacklist[] is the simplest way.

 The other possibility is writing the driver completely in userspace, using
 libhid/hiddev. Would that suit your needs?

I'm afraid it wouldn't.

Thank you very much.

-- 
Regards,
Ivan Ukhov.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: How to use an usb interface than is claimed by HID?

2007-01-20 Thread Ivan Ukhov

Jiri Kosina wrote:

On Sat, 20 Jan 2007, Ivan Ukhov wrote:

  
I'm writing a driver for an USB device that has one configuration with 
several interfacies and one of them is a HID interface. So when I check 
this interface whether it's claimed (usb_interface_claimed), I find out 
that it is, and it's claimed by the HID driver. So here is the question: 
how can I ask the HID driver to unclaim this very interface for me so 
that I can use it? The HID driver is needed for some other devices, so I 
can't just rmmod it.



Hi Ivan,

if I understand correctly what you need, wouldn't setting the 
HID_QUIRK_IGNORE for a given tuple of idVendor and idProduct be enough? 
(see hid_blacklist[] in drivers/usb/input/hid-core.c).


  
No, it won't do. Imagine that I'm not able to modify the kernel with its 
drivers. It should work with usual kernel and HID driver. So I want my 
driver to ask the HID driver to free the interfaces or don't claim them 
at all. Mb there's an example of such a driver?.. obviously there are a 
lot of HID devices and mb a vendor one of them doesn't want to use HID 
driver for one of its interfaces to provide some additional features or 
something, so he should make the kernel use his driver instead of HID...


Does it make any sense?)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


How to use an usb interface than is claimed by HID?

2007-01-20 Thread Ivan Ukhov

Hello everyone,

I'm writing a driver for an USB device that has one configuration with
several interfacies and one of them is a HID interface. So when I check
this interface whether it's claimed (usb_interface_claimed), I find out
that it is, and it's claimed by the HID driver. So here is the
question: how can I ask the HID driver to unclaim this very interface
for me so that I can use it? The HID driver is needed for some other
devices, so I can't just rmmod it.

Thanks in advice.

Regards,
Ivan Ukhov.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


How to use an usb interface than is claimed by HID?

2007-01-20 Thread Ivan Ukhov

Hello everyone,

I'm writing a driver for an USB device that has one configuration with
several interfacies and one of them is a HID interface. So when I check
this interface whether it's claimed (usb_interface_claimed), I find out
that it is, and it's claimed by the HID driver. So here is the
question: how can I ask the HID driver to unclaim this very interface
for me so that I can use it? The HID driver is needed for some other
devices, so I can't just rmmod it.

Thanks in advice.

Regards,
Ivan Ukhov.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: How to use an usb interface than is claimed by HID?

2007-01-20 Thread Ivan Ukhov

Jiri Kosina wrote:

On Sat, 20 Jan 2007, Ivan Ukhov wrote:

  
I'm writing a driver for an USB device that has one configuration with 
several interfacies and one of them is a HID interface. So when I check 
this interface whether it's claimed (usb_interface_claimed), I find out 
that it is, and it's claimed by the HID driver. So here is the question: 
how can I ask the HID driver to unclaim this very interface for me so 
that I can use it? The HID driver is needed for some other devices, so I 
can't just rmmod it.



Hi Ivan,

if I understand correctly what you need, wouldn't setting the 
HID_QUIRK_IGNORE for a given tuple of idVendor and idProduct be enough? 
(see hid_blacklist[] in drivers/usb/input/hid-core.c).


  
No, it won't do. Imagine that I'm not able to modify the kernel with its 
drivers. It should work with usual kernel and HID driver. So I want my 
driver to ask the HID driver to free the interfaces or don't claim them 
at all. Mb there's an example of such a driver?.. obviously there are a 
lot of HID devices and mb a vendor one of them doesn't want to use HID 
driver for one of its interfaces to provide some additional features or 
something, so he should make the kernel use his driver instead of HID...


Does it make any sense?)
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/