Am Mittwoch, 5. Oktober 2011, 08:19:10 schrieb Antti Palosaari: > On 10/05/2011 09:15 AM, Oliver Neukum wrote: > > But, Greg, Antti makes a very valid point here. The generic code assumes that > > it owns intfdata, that is you cannot use it as is for access to anything that lacks > > its own interface. But this is not a fatal flaw. We can alter the generic code to use > > an accessor function the driver can provide and make it default to get/set_intfdata > > > > What do you think? > > Oliver, I looked your old thread reply but I didn't catch how you meant > it to happen. Could you give some small example? Look at this structure: struct dvb_usb_device { struct dvb_usb_device_properties props; struct dvb_usb_device_description *desc; struct usb_device *udev; #define DVB_USB_STATE_INIT 0x000 #define DVB_USB_STATE_I2C 0x001 #define DVB_USB_STATE_DVB 0x002 #define DVB_USB_STATE_REMOTE 0x004 int state; int powered; /* locking */ struct mutex usb_mutex; /* i2c */ struct mutex i2c_mutex; struct i2c_adapter i2c_adap; int num_adapters_initialized; struct dvb_usb_adapter adapter[MAX_NO_OF_ADAPTER_PER_DEVICE]; /* remote control */ struct rc_dev *rc_dev; struct input_dev *input_dev; char rc_phys[64]; struct delayed_work rc_query_work; u32 last_event; int last_state; struct module *owner; void *priv; }; It contains a pointer to an input device. You could add a pointer to a usb serial device here. This leaves you with two problems. 1. The USB serial layer will try to set intfdata We will need to change it to use a function the driver provides to store a pointer to its private data. 2. The usb serial layer will not learn about events it needs to learn about. We need to extended the usb dvb code to call into a sufficiently abstracted method in the usb serial code. Conceptually the usb serial code is ready to share an interface among multiple serial ports, but not to share an interface with something else. I described the steps necesary to allow that. This is new, so there are no examples. Regards Oliver -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html