Loading drivers/staging/line6/toneport.c +49 −31 Original line number Diff line number Diff line Loading @@ -75,33 +75,42 @@ static struct line6_pcm_properties toneport_pcm_properties = { /* For the led on Guitarport. Brightness goes from 0x00 to 0x26. Set a value above this to have led blink. Brightness goes from 0x00 to 0x26. Set a value above this to have led blink. (void cmd_0x02(byte red, byte green) */ static int led_red = 0x00; static int led_green = 0x26; static void toneport_update_led(struct device *dev) { struct usb_interface *interface; struct usb_line6_toneport *tp; static void toneport_update_led(struct device *dev) { struct usb_interface *interface = to_usb_interface(dev); struct usb_line6_toneport *tp = usb_get_intfdata(interface); struct usb_line6 *line6; if ((interface = to_usb_interface(dev)) && (tp = usb_get_intfdata(interface)) && (line6 = &tp->line6)) toneport_send_cmd(line6->usbdev, (led_red<<8)|0x0002, led_green); // for setting the LED on Guitarport if (!tp) return; line6 = &tp->line6; if (line6) toneport_send_cmd(line6->usbdev, (led_red << 8) | 0x0002, led_green); } static ssize_t toneport_set_led_red(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { const char *buf, size_t count) { char *c; led_red = simple_strtol(buf, &c, 10); toneport_update_led(dev); return count; } static ssize_t toneport_set_led_green(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { const char *buf, size_t count) { char *c; led_green = simple_strtol(buf, &c, 10); toneport_update_led(dev); Loading @@ -115,6 +124,7 @@ static DEVICE_ATTR(led_green, S_IWUGO | S_IRUGO, line6_nop_read, toneport_set_le static int toneport_send_cmd(struct usb_device *usbdev, int cmd1, int cmd2) { int ret; ret = usb_control_msg(usbdev, usb_sndctrlpipe(usbdev, 0), 0x67, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_OUT, cmd1, cmd2, NULL, 0, LINE6_TIMEOUT * HZ); Loading @@ -135,16 +145,19 @@ static void toneport_destruct(struct usb_interface *interface) struct usb_line6_toneport *toneport = usb_get_intfdata(interface); struct usb_line6 *line6; if(toneport == NULL) return; if (toneport == NULL) return; line6 = &toneport->line6; if(line6 == NULL) return; if (line6 == NULL) return; line6_cleanup_audio(line6); } /* Init Toneport device. */ int toneport_init(struct usb_interface *interface, struct usb_line6_toneport *toneport) int toneport_init(struct usb_interface *interface, struct usb_line6_toneport *toneport) { int err, ticks; struct usb_line6 *line6 = &toneport->line6; Loading @@ -154,19 +167,22 @@ int toneport_init(struct usb_interface *interface, struct usb_line6_toneport *to return -ENODEV; /* initialize audio system: */ if((err = line6_init_audio(line6)) < 0) { err = line6_init_audio(line6); if (err < 0) { toneport_destruct(interface); return err; } /* initialize PCM subsystem: */ if((err = line6_init_pcm(line6, &toneport_pcm_properties)) < 0) { err = line6_init_pcm(line6, &toneport_pcm_properties); if (err < 0) { toneport_destruct(interface); return err; } /* register audio system: */ if((err = line6_register_audio(line6)) < 0) { err = line6_register_audio(line6); if (err < 0) { toneport_destruct(interface); return err; } Loading @@ -182,9 +198,10 @@ int toneport_init(struct usb_interface *interface, struct usb_line6_toneport *to /* seems to work without the first two... */ //toneport_send_cmd(usbdev, 0x0201, 0x0002); // .. //toneport_send_cmd(usbdev, 0x0801, 0x0000); // .. toneport_send_cmd(usbdev, 0x0301, 0x0000); // only one that works for me; on GP, TP might be different? /* toneport_send_cmd(usbdev, 0x0201, 0x0002); */ /* toneport_send_cmd(usbdev, 0x0801, 0x0000); */ /* only one that works for me; on GP, TP might be different? */ toneport_send_cmd(usbdev, 0x0301, 0x0000); if (usbdev->descriptor.idProduct != LINE6_DEVID_GUITARPORT) { CHECK_RETURN(device_create_file(&interface->dev, &dev_attr_led_red)); Loading @@ -202,7 +219,8 @@ void toneport_disconnect(struct usb_interface *interface) { struct usb_line6_toneport *toneport; if(interface == NULL) return; if (interface == NULL) return; toneport = usb_get_intfdata(interface); if (toneport->line6.usbdev->descriptor.idProduct != LINE6_DEVID_GUITARPORT) { Loading Loading
drivers/staging/line6/toneport.c +49 −31 Original line number Diff line number Diff line Loading @@ -75,33 +75,42 @@ static struct line6_pcm_properties toneport_pcm_properties = { /* For the led on Guitarport. Brightness goes from 0x00 to 0x26. Set a value above this to have led blink. Brightness goes from 0x00 to 0x26. Set a value above this to have led blink. (void cmd_0x02(byte red, byte green) */ static int led_red = 0x00; static int led_green = 0x26; static void toneport_update_led(struct device *dev) { struct usb_interface *interface; struct usb_line6_toneport *tp; static void toneport_update_led(struct device *dev) { struct usb_interface *interface = to_usb_interface(dev); struct usb_line6_toneport *tp = usb_get_intfdata(interface); struct usb_line6 *line6; if ((interface = to_usb_interface(dev)) && (tp = usb_get_intfdata(interface)) && (line6 = &tp->line6)) toneport_send_cmd(line6->usbdev, (led_red<<8)|0x0002, led_green); // for setting the LED on Guitarport if (!tp) return; line6 = &tp->line6; if (line6) toneport_send_cmd(line6->usbdev, (led_red << 8) | 0x0002, led_green); } static ssize_t toneport_set_led_red(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { const char *buf, size_t count) { char *c; led_red = simple_strtol(buf, &c, 10); toneport_update_led(dev); return count; } static ssize_t toneport_set_led_green(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { const char *buf, size_t count) { char *c; led_green = simple_strtol(buf, &c, 10); toneport_update_led(dev); Loading @@ -115,6 +124,7 @@ static DEVICE_ATTR(led_green, S_IWUGO | S_IRUGO, line6_nop_read, toneport_set_le static int toneport_send_cmd(struct usb_device *usbdev, int cmd1, int cmd2) { int ret; ret = usb_control_msg(usbdev, usb_sndctrlpipe(usbdev, 0), 0x67, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_OUT, cmd1, cmd2, NULL, 0, LINE6_TIMEOUT * HZ); Loading @@ -135,16 +145,19 @@ static void toneport_destruct(struct usb_interface *interface) struct usb_line6_toneport *toneport = usb_get_intfdata(interface); struct usb_line6 *line6; if(toneport == NULL) return; if (toneport == NULL) return; line6 = &toneport->line6; if(line6 == NULL) return; if (line6 == NULL) return; line6_cleanup_audio(line6); } /* Init Toneport device. */ int toneport_init(struct usb_interface *interface, struct usb_line6_toneport *toneport) int toneport_init(struct usb_interface *interface, struct usb_line6_toneport *toneport) { int err, ticks; struct usb_line6 *line6 = &toneport->line6; Loading @@ -154,19 +167,22 @@ int toneport_init(struct usb_interface *interface, struct usb_line6_toneport *to return -ENODEV; /* initialize audio system: */ if((err = line6_init_audio(line6)) < 0) { err = line6_init_audio(line6); if (err < 0) { toneport_destruct(interface); return err; } /* initialize PCM subsystem: */ if((err = line6_init_pcm(line6, &toneport_pcm_properties)) < 0) { err = line6_init_pcm(line6, &toneport_pcm_properties); if (err < 0) { toneport_destruct(interface); return err; } /* register audio system: */ if((err = line6_register_audio(line6)) < 0) { err = line6_register_audio(line6); if (err < 0) { toneport_destruct(interface); return err; } Loading @@ -182,9 +198,10 @@ int toneport_init(struct usb_interface *interface, struct usb_line6_toneport *to /* seems to work without the first two... */ //toneport_send_cmd(usbdev, 0x0201, 0x0002); // .. //toneport_send_cmd(usbdev, 0x0801, 0x0000); // .. toneport_send_cmd(usbdev, 0x0301, 0x0000); // only one that works for me; on GP, TP might be different? /* toneport_send_cmd(usbdev, 0x0201, 0x0002); */ /* toneport_send_cmd(usbdev, 0x0801, 0x0000); */ /* only one that works for me; on GP, TP might be different? */ toneport_send_cmd(usbdev, 0x0301, 0x0000); if (usbdev->descriptor.idProduct != LINE6_DEVID_GUITARPORT) { CHECK_RETURN(device_create_file(&interface->dev, &dev_attr_led_red)); Loading @@ -202,7 +219,8 @@ void toneport_disconnect(struct usb_interface *interface) { struct usb_line6_toneport *toneport; if(interface == NULL) return; if (interface == NULL) return; toneport = usb_get_intfdata(interface); if (toneport->line6.usbdev->descriptor.idProduct != LINE6_DEVID_GUITARPORT) { Loading