Sounds good. I like the approach. I was futzing around with how to do this, though I didn't spend too much time on it because I was antici- pating more patches from you that would be difficult to merge. Using the private_init callback is a nice idea and makes a necessarily large change pretty easy to understand.
Chris
On Mon, Jan 19, 2015 at 1:37 PM, Takashi Iwai tiwai@suse.de wrote:
At Mon, 19 Jan 2015 12:00:01 -0600, Chris Rorvick wrote:
On Mon, Jan 19, 2015 at 9:54 AM, Takashi Iwai tiwai@suse.de wrote:
-static int line6_probe(struct usb_interface *interface,
const struct usb_device_id *id)+int line6_probe(struct usb_interface *interface,
struct usb_line6 *line6,const struct line6_properties *properties,int (*private_init)(struct usb_interface *, struct usb_line6 *)){
enum line6_device_type devtype; struct usb_device *usbdev;struct usb_line6 *line6;const struct line6_properties *properties; int interface_number;int size = 0; int ret;if (interface == NULL)return -ENODEV;
if (!interface) {ret = -ENODEV;goto err_put;} usbdev = interface_to_usbdev(interface);
if (usbdev == NULL)return -ENODEV;
if (!usbdev) {ret = -ENODEV;goto err_put;}These NULL checks are unnecessary, right? We could just assign `usbdev' at declaration and be done with it. But maybe that should be another patch.
Right, the cleanup can be done later, as this patch is merely a transition.
Takashi