1
0
mirror of https://github.com/dguglielmi/sunny-overlay.git synced 2025-12-06 20:22:38 +01:00

- Import ebuild media-sound/hdjmod

This commit is contained in:
2014-08-02 20:51:47 +02:00
parent d29cf2b529
commit 1d9cc0062c
13 changed files with 898 additions and 0 deletions

View File

@@ -0,0 +1,29 @@
--- device.c.orig 2010-12-12 16:34:17.866666668 +0100
+++ device.c 2011-01-09 12:17:06.000000000 +0100
@@ -1828,6 +1828,8 @@ static int usbid_to_product_code(u32 usb
return DJCONTROLLER_PRODUCT_CODE;
} else if (usbid == USB_ID(USB_HDJ_VENDOR_ID, DJ_CONTROL_MP3W_PID)) {
return DJCONTROLLER_PRODUCT_CODE;
+ } else if (usbid == USB_ID(USB_HDJ_VENDOR_ID, DJ_CONTROL_MP3E2_PID)) {
+ return DJCONTROLSTEEL_PRODUCT_CODE;
} else {
return DJCONSOLE_PRODUCT_UNKNOWN;
}
@@ -1860,6 +1862,7 @@ static int hdj_probe(struct usb_interfac
(le16_to_cpu(usb_dev->descriptor.idProduct)!=DJ_CONSOLE_RMX_PID)&&
(le16_to_cpu(usb_dev->descriptor.idProduct)!=DJ_CONTROL_MP3_PID)&&
(le16_to_cpu(usb_dev->descriptor.idProduct)!=DJ_CONTROL_MP3W_PID)&&
+ (le16_to_cpu(usb_dev->descriptor.idProduct)!=DJ_CONTROL_MP3E2_PID)&&
(le16_to_cpu(usb_dev->descriptor.idProduct)!=DJ_CONSOLE_STEEL_PID))
{
printk(KERN_INFO"hdj_probe() unsupported device, idVendor%lx, idProduct:%lx\n",
--- device.h.orig 2009-01-27 15:25:50.000000000 +0100
+++ device.h 2011-01-09 12:19:22.000000000 +0100
@@ -38,6 +38,7 @@ extern int netlink_unit;
#define DJ_CONSOLE_RMX_PID 0xb101
#define DJ_CONTROL_MP3_PID 0xd000
#define DJ_CONTROL_MP3W_PID 0xd001
+#define DJ_CONTROL_MP3E2_PID 0xb105
#define DJ_CONSOLE_STEEL_PID 0xb102
#define DJ_BULK_IFNUM 0

View File

@@ -0,0 +1,17 @@
diff -Naru hdjmod-1.28o/device.c hdjmod-1.28/device.c
--- hdjmod-1.28o/device.c 2009-01-27 15:25:50.000000000 +0100
+++ hdjmod-1.28/device.c 2012-03-13 22:21:56.000000000 +0100
@@ -79,10 +79,9 @@
/* table of devices that work with this driver- look for vendor specific interfaces with
* our VID */
static struct usb_device_id hdj_table [] = {
- { .match_flags = (USB_DEVICE_ID_MATCH_DEVICE),
- .idVendor = (USB_HDJ_VENDOR_ID) },
- { .match_flags = (USB_DEVICE_ID_MATCH_INT_CLASS),
- .bInterfaceClass = USB_CLASS_VENDOR_SPEC},
+ { .match_flags = (USB_DEVICE_ID_MATCH_VENDOR | USB_DEVICE_ID_MATCH_INT_CLASS),
+ .idVendor = (USB_HDJ_VENDOR_ID),
+ .bInterfaceClass = USB_CLASS_VENDOR_SPEC },
{ } /* Terminating entry */
};
MODULE_DEVICE_TABLE(usb, hdj_table);

View File

@@ -0,0 +1,23 @@
diff -Naru hdjmod-1.28o/device.c hdjmod-1.28/device.c
--- hdjmod-1.28o/device.c 2009-01-27 15:25:50.000000000 +0100
+++ hdjmod-1.28/device.c 2010-02-06 16:20:36.901740173 +0100
@@ -1660,11 +1660,19 @@
/* let the kernel option override custom id */
strncpy(card_id,id[idx],sizeof(card_id)-1);
}
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30) )
+ err = snd_card_create(index[idx], card_id/*id[idx]*/, THIS_MODULE, 0, &card );
+ if (err) {
+ snd_printk(KERN_WARNING "snd_hdj_chip_create(): cannot create card instance %d\n", idx);
+ return err;
+ }
+#else
card = snd_card_new(index[idx], card_id/*id[idx]*/, THIS_MODULE, 0);
if (card == NULL) {
snd_printk(KERN_WARNING "snd_hdj_chip_create(): cannot create card instance %d\n", idx);
return -ENOMEM;
}
+#endif
/* save the index, so people who have the card can reference the chip */
card->private_data = (void*)(unsigned long)idx;

View File

@@ -0,0 +1,492 @@
diff -Naru hdjmod-1.28.old/bulk.c hdjmod-1.28/bulk.c
--- hdjmod-1.28.old/bulk.c 2009-01-27 15:25:50.000000000 +0100
+++ hdjmod-1.28/bulk.c 2010-09-26 19:27:53.000000000 +0200
@@ -462,7 +462,7 @@
chip->ctrl_urb->setup_dma = chip->ctl_req_dma;
/* NOTE: transfer_dma setup above in call to usb_buffer_alloc() */
- chip->ctrl_urb->transfer_flags = URB_NO_SETUP_DMA_MAP | URB_NO_TRANSFER_DMA_MAP;
+ chip->ctrl_urb->transfer_flags = URB_NO_TRANSFER_DMA_MAP;
ret = hdjbulk_submit_urb(chip, chip->ctrl_urb, GFP_KERNEL);
if (ret!=0) {
@@ -553,7 +553,7 @@
output_control_callback,
&ubulk->output_control_completion);
ubulk->output_control_urb->setup_dma = ubulk->output_control_dma;
- ubulk->output_control_urb->transfer_flags = URB_NO_SETUP_DMA_MAP | URB_NO_TRANSFER_DMA_MAP;
+ ubulk->output_control_urb->transfer_flags = URB_NO_TRANSFER_DMA_MAP;
if ((rc = hdjbulk_submit_urb(ubulk->chip,ubulk->output_control_urb, GFP_KERNEL))!=0) {
printk(KERN_WARNING"%s hdjbulk_submit_urb() failed, rc:%d\n",__FUNCTION__,rc);
} else {
@@ -2675,7 +2675,12 @@
{
if (ubulk->chip->product_code!=DJCONTROLSTEEL_PRODUCT_CODE) {
if (ubulk->output_control_ctl_req!=NULL && ubulk->control_interface!=NULL) {
- usb_buffer_free(interface_to_usbdev(ubulk->control_interface),
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36) )
+ usb_free_coherent(
+#else
+ usb_buffer_free(
+#endif
+ interface_to_usbdev(ubulk->control_interface),
sizeof(*(ubulk->output_control_ctl_req)),
ubulk->output_control_ctl_req,
ubulk->output_control_dma);
@@ -2684,7 +2689,12 @@
if (ubulk->output_control_buffer!=NULL && ubulk->control_interface!=NULL &&
ubulk->output_control_urb!=NULL) {
- usb_buffer_free(interface_to_usbdev(ubulk->control_interface),
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36) )
+ usb_free_coherent(
+#else
+ usb_buffer_free(
+#endif
+ interface_to_usbdev(ubulk->control_interface),
ubulk->output_control_urb->transfer_buffer_length,
ubulk->output_control_buffer,
ubulk->output_control_urb->transfer_dma);
@@ -2712,7 +2722,12 @@
usb_kill_urb(ubulk->bulk_out_urb);
if (free_urbs!=0) {
if (ubulk->bulk_out_buffer!=NULL) {
- usb_buffer_free(ubulk->chip->dev, ubulk->bulk_out_size,
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36) )
+ usb_free_coherent(
+#else
+ usb_buffer_free(
+#endif
+ ubulk->chip->dev, ubulk->bulk_out_size,
ubulk->bulk_out_urb->transfer_buffer,
ubulk->bulk_out_urb->transfer_dma);
ubulk->bulk_out_buffer = NULL;
@@ -3065,7 +3080,12 @@
init_MUTEX(&ubulk->bulk_out_buffer_mutex);
ubulk->bulk_out_buffer =
- usb_buffer_alloc(ubulk->chip->dev, ubulk->bulk_out_size,
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36) )
+ usb_alloc_coherent(
+#else
+ usb_buffer_alloc(
+#endif
+ ubulk->chip->dev, ubulk->bulk_out_size,
GFP_KERNEL, &ubulk->bulk_out_urb->transfer_dma);
if (ubulk->bulk_out_buffer==NULL) {
@@ -3609,7 +3629,13 @@
* control state */
if (ubulk->chip->product_code != DJCONTROLSTEEL_PRODUCT_CODE) {
/* allocate memory for setup packet for our control requests */
- ubulk->output_control_ctl_req = usb_buffer_alloc(interface_to_usbdev(ubulk->control_interface),
+ ubulk->output_control_ctl_req =
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36) )
+ usb_alloc_coherent(
+#else
+ usb_buffer_alloc(
+#endif
+ interface_to_usbdev(ubulk->control_interface),
sizeof(*(ubulk->output_control_ctl_req)),
GFP_KERNEL,
&ubulk->output_control_dma);
@@ -3628,7 +3654,13 @@
goto hdjbulk_init_output_control_state_error;
}
- ubulk->output_control_buffer = usb_buffer_alloc(interface_to_usbdev(ubulk->control_interface),
+ ubulk->output_control_buffer =
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36) )
+ usb_alloc_coherent(
+#else
+ usb_buffer_alloc(
+#endif
+ interface_to_usbdev(ubulk->control_interface),
ubulk->output_control_buffer_size,
GFP_KERNEL,
&ubulk->output_control_urb->transfer_dma);
@@ -3773,7 +3805,13 @@
}
ep[i]->max_transfer = ubulk->continuous_reader_packet_size;
- buffer = usb_buffer_alloc(ubulk->chip->dev, ep[i]->max_transfer,
+ buffer =
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36) )
+ usb_alloc_coherent(
+#else
+ usb_buffer_alloc(
+#endif
+ ubulk->chip->dev, ep[i]->max_transfer,
GFP_KERNEL, &ep[i]->urb->transfer_dma);
if (!buffer) {
printk(KERN_WARNING"%s() usb_buffer_alloc() failed\n",__FUNCTION__);
@@ -4250,7 +4288,12 @@
{
if (ep->urb) {
if (ep->urb->transfer_buffer) {
- usb_buffer_free(ep->ubulk->chip->dev, ep->max_transfer,
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36) )
+ usb_free_coherent(
+#else
+ usb_buffer_free(
+#endif
+ ep->ubulk->chip->dev, ep->max_transfer,
ep->urb->transfer_buffer,
ep->urb->transfer_dma);
}
diff -Naru hdjmod-1.28.old/device.c hdjmod-1.28/device.c
--- hdjmod-1.28.old/device.c 2009-01-27 15:25:50.000000000 +0100
+++ hdjmod-1.28/device.c 2010-09-26 19:14:55.000000000 +0200
@@ -1559,7 +1559,12 @@
if(chip->ctrl_req_buffer != NULL)
{
- usb_buffer_free(chip->dev,
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36) )
+ usb_free_coherent(
+#else
+ usb_buffer_free(
+#endif
+ chip->dev,
chip->ctrl_urb->transfer_buffer_length,
chip->ctrl_req_buffer,
chip->ctrl_urb->transfer_dma);
@@ -1575,7 +1580,12 @@
if(chip->ctl_req != NULL)
{
- usb_buffer_free(chip->dev,
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36) )
+ usb_free_coherent(
+#else
+ usb_buffer_free(
+#endif
+ chip->dev,
sizeof(*(chip->ctl_req)),
chip->ctl_req,
chip->ctl_req_dma);
@@ -1728,7 +1738,13 @@
}
/* allocate memory for setup packet for our control requests */
- chip->ctl_req = usb_buffer_alloc(chip->dev,
+ chip->ctl_req =
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36) )
+ usb_alloc_coherent(
+#else
+ usb_buffer_alloc(
+#endif
+ chip->dev,
sizeof(*(chip->ctl_req)),
GFP_KERNEL,
&chip->ctl_req_dma);
@@ -1743,7 +1759,13 @@
chip->ctrl_req_buffer_len = sizeof(u16);
chip->ctrl_urb->transfer_buffer_length = chip->ctrl_req_buffer_len;
- chip->ctrl_req_buffer = usb_buffer_alloc(chip->dev,
+ chip->ctrl_req_buffer =
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36) )
+ usb_alloc_coherent(
+#else
+ usb_buffer_alloc(
+#endif
+ chip->dev,
chip->ctrl_urb->transfer_buffer_length,
GFP_KERNEL,
&chip->ctrl_urb->transfer_dma);
diff -Naru hdjmod-1.28.old/midi.c hdjmod-1.28/midi.c
--- hdjmod-1.28.old/midi.c 2009-01-27 15:25:50.000000000 +0100
+++ hdjmod-1.28/midi.c 2010-09-26 19:38:35.000000000 +0200
@@ -367,7 +367,12 @@
{
if (ep->urb) {
if (ep->urb->transfer_buffer) {
- usb_buffer_free(ep->umidi->chip->dev,
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36) )
+ usb_free_coherent(
+#else
+ usb_buffer_free(
+#endif
+ ep->umidi->chip->dev,
ep->urb->transfer_buffer_length,
ep->urb->transfer_buffer,
ep->urb->transfer_dma);
@@ -503,7 +508,13 @@
pipe = usb_rcvbulkpipe(umidi->chip->dev, ep_info->in_ep);
}
length = usb_maxpacket(umidi->chip->dev, pipe, 0);
- buffer = usb_buffer_alloc(umidi->chip->dev, length, GFP_KERNEL,
+ buffer =
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36) )
+ usb_alloc_coherent(
+#else
+ usb_buffer_alloc(
+#endif
+ umidi->chip->dev, length, GFP_KERNEL,
&ep->urb->transfer_dma);
if (!buffer) {
snd_printk(KERN_WARNING"%s() usb_buffer_alloc failed\n",__FUNCTION__);
@@ -536,7 +547,12 @@
#endif
if (ep->urb) {
if (ep->urb->transfer_buffer) {
- usb_buffer_free(ep->umidi->chip->dev, ep->max_transfer,
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36) )
+ usb_free_coherent(
+#else
+ usb_buffer_free(
+#endif
+ ep->umidi->chip->dev, ep->max_transfer,
ep->urb->transfer_buffer,
ep->urb->transfer_dma);
}
@@ -544,27 +560,47 @@
}
if (ep->urb_led) {
if (ep->urb_led->transfer_buffer) {
- usb_buffer_free(ep->umidi->chip->dev, ep->max_transfer,
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36) )
+ usb_free_coherent(
+#else
+ usb_buffer_free(
+#endif
+ ep->umidi->chip->dev, ep->max_transfer,
ep->urb_led->transfer_buffer,
ep->urb_led->transfer_dma);
}
usb_free_urb(ep->urb_led);
}
if (ep->ctrl_req_led) {
- usb_buffer_free(ep->umidi->chip->dev, sizeof(*(ep->ctrl_req_led)),
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36) )
+ usb_free_coherent(
+#else
+ usb_buffer_free(
+#endif
+ ep->umidi->chip->dev, sizeof(*(ep->ctrl_req_led)),
ep->ctrl_req_led, ep->ctrl_req_led_dma);
}
if (ep->controller_state) {
if (ep->controller_state->output_control_ctl_urb &&
ep->controller_state->output_control_ctl_urb->transfer_buffer &&
ep->controller_state->output_control_ctl_urb->transfer_dma) {
- usb_buffer_free(ep->umidi->chip->dev, ep->max_transfer,
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36) )
+ usb_free_coherent(
+#else
+ usb_buffer_free(
+#endif
+ ep->umidi->chip->dev, ep->max_transfer,
ep->controller_state->output_control_ctl_urb->transfer_buffer,
ep->controller_state->output_control_ctl_urb->transfer_dma);
}
if (ep->controller_state->output_control_ctl_req &&
ep->controller_state->output_control_ctl_dma) {
- usb_buffer_free(ep->umidi->chip->dev,
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36) )
+ usb_free_coherent(
+#else
+ usb_buffer_free(
+#endif
+ ep->umidi->chip->dev,
sizeof(*(ep->controller_state->output_control_ctl_req)),
ep->controller_state->output_control_ctl_req,
ep->controller_state->output_control_ctl_dma);
@@ -573,7 +609,12 @@
usb_free_urb(ep->controller_state->output_control_ctl_urb);
}
if (ep->controller_state->ctl_req) {
- usb_buffer_free(ep->umidi->chip->dev,
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36) )
+ usb_free_coherent(
+#else
+ usb_buffer_free(
+#endif
+ ep->umidi->chip->dev,
sizeof(*(ep->controller_state->ctl_req)),
ep->controller_state->ctl_req,
ep->controller_state->ctl_req_dma);
@@ -584,14 +625,24 @@
}
if (ep->controller_state->urb_kt) {
if (ep->controller_state->urb_kt->transfer_buffer) {
- usb_buffer_free(ep->umidi->chip->dev, ep->max_transfer,
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36) )
+ usb_free_coherent(
+#else
+ usb_buffer_free(
+#endif
+ ep->umidi->chip->dev, ep->max_transfer,
ep->controller_state->urb_kt->transfer_buffer,
ep->controller_state->urb_kt->transfer_dma);
}
usb_free_urb(ep->controller_state->urb_kt);
}
if (ep->controller_state->ctl_req_kt) {
- usb_buffer_free(ep->umidi->chip->dev,
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36) )
+ usb_free_coherent(
+#else
+ usb_buffer_free(
+#endif
+ ep->umidi->chip->dev,
sizeof(*(ep->controller_state->ctl_req_kt)),
ep->controller_state->ctl_req_kt,
ep->controller_state->ctl_req_dma_kt);
@@ -666,7 +717,13 @@
controller_state->is_weltrend = is_mp3_weltrend(ep->umidi->chip->usb_id);
}
- controller_state->ctl_req = usb_buffer_alloc(ep->umidi->chip->dev,
+ controller_state->ctl_req =
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36) )
+ usb_alloc_coherent(
+#else
+ usb_buffer_alloc(
+#endif
+ ep->umidi->chip->dev,
sizeof(*(controller_state->ctl_req)),
GFP_KERNEL,
&controller_state->ctl_req_dma);
@@ -679,7 +736,13 @@
* mouse setting or setting LEDs */
init_MUTEX(&controller_state->output_control_ctl_mutex);
init_completion(&controller_state->output_control_ctl_completion);
- controller_state->output_control_ctl_req = usb_buffer_alloc(ep->umidi->chip->dev,
+ controller_state->output_control_ctl_req =
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36) )
+ usb_alloc_coherent(
+#else
+ usb_buffer_alloc(
+#endif
+ ep->umidi->chip->dev,
sizeof(*(controller_state->output_control_ctl_req)),
GFP_KERNEL,
&controller_state->output_control_ctl_dma);
@@ -700,7 +763,13 @@
max_transfer = usb_maxpacket(ep->umidi->chip->dev,
controller_state->output_control_ctl_pipe, 1);
- buffer = usb_buffer_alloc(ep->umidi->chip->dev, max_transfer,
+ buffer =
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36) )
+ usb_alloc_coherent(
+#else
+ usb_buffer_alloc(
+#endif
+ ep->umidi->chip->dev, max_transfer,
GFP_KERNEL, &controller_state->output_control_ctl_urb->transfer_dma);
if (buffer==NULL) {
snd_printk(KERN_WARNING"%s() usb_buffer_alloc failed (general URB buffer)\n",
@@ -727,7 +796,7 @@
controller_state->output_control_ctl_req->wLength = cpu_to_le16(DJ_MP3_HID_OUTPUT_REPORT_LEN);
controller_state->output_control_ctl_urb->setup_dma = controller_state->output_control_ctl_dma;
/* NOTE: transfer_dma setup above in call to usb_buffer_alloc() */
- controller_state->output_control_ctl_urb->transfer_flags = URB_NO_SETUP_DMA_MAP | URB_NO_TRANSFER_DMA_MAP;
+ controller_state->output_control_ctl_urb->transfer_flags = URB_NO_TRANSFER_DMA_MAP;
return 0;
}
@@ -772,7 +841,13 @@
}
if (ep->umidi->chip->caps.leds_hid_controlled) {
- ep->ctrl_req_led = usb_buffer_alloc(ep->umidi->chip->dev,
+ ep->ctrl_req_led =
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36) )
+ usb_alloc_coherent(
+#else
+ usb_buffer_alloc(
+#endif
+ ep->umidi->chip->dev,
sizeof(*(ep->ctrl_req_led)),
GFP_KERNEL,
&ep->ctrl_req_led_dma);
@@ -806,7 +881,13 @@
pipe = usb_sndctrlpipe(umidi->chip->dev, 0);
}
ep->max_transfer = usb_maxpacket(umidi->chip->dev, pipe, 1);
- buffer = usb_buffer_alloc(umidi->chip->dev, ep->max_transfer,
+ buffer =
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36) )
+ usb_alloc_coherent(
+#else
+ usb_buffer_alloc(
+#endif
+ umidi->chip->dev, ep->max_transfer,
GFP_KERNEL, &ep->urb->transfer_dma);
if (!buffer) {
snd_printk(KERN_WARNING"%s() usb_buffer_alloc() failed\n",__FUNCTION__);
@@ -814,7 +895,13 @@
return -ENOMEM;
}
- buffer_led = usb_buffer_alloc(umidi->chip->dev, ep->max_transfer,
+ buffer_led =
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36) )
+ usb_alloc_coherent(
+#else
+ usb_buffer_alloc(
+#endif
+ umidi->chip->dev, ep->max_transfer,
GFP_KERNEL, &ep->urb_led->transfer_dma);
if (!buffer_led) {
snd_printk(KERN_WARNING"%s() usb_buffer_alloc() failed for LED buffer\n",
@@ -854,7 +941,7 @@
ep->controller_state->ctl_req->wLength = cpu_to_le16(DJ_MP3_HID_OUTPUT_REPORT_LEN);
ep->urb->setup_dma = ep->controller_state->ctl_req_dma;
/* NOTE: transfer_dma setup above in call to usb_buffer_alloc() */
- ep->urb->transfer_flags = URB_NO_SETUP_DMA_MAP | URB_NO_TRANSFER_DMA_MAP;
+ ep->urb->transfer_flags = URB_NO_TRANSFER_DMA_MAP;
}
if (ep->umidi->chip->caps.leds_hid_controlled) {
@@ -875,7 +962,7 @@
ep->ctrl_req_led->wLength = cpu_to_le16(DJ_MP3_HID_OUTPUT_REPORT_LEN);
ep->urb_led->setup_dma = ep->ctrl_req_led_dma;
/* NOTE: transfer_dma setup above in call to usb_buffer_alloc() */
- ep->urb_led->transfer_flags = URB_NO_SETUP_DMA_MAP | URB_NO_TRANSFER_DMA_MAP;
+ ep->urb_led->transfer_flags = URB_NO_TRANSFER_DMA_MAP;
}
if (ep->umidi->chip->caps.leds_bulk_controlled) {
@@ -913,7 +1000,13 @@
return -ENOMEM;
}
- buffer = usb_buffer_alloc(umidi->chip->dev, ep->max_transfer,
+ buffer =
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36) )
+ usb_alloc_coherent(
+#else
+ usb_buffer_alloc(
+#endif
+ umidi->chip->dev, ep->max_transfer,
GFP_KERNEL, &ep->controller_state->urb_kt->transfer_dma);
if (!buffer) {
snd_printk(KERN_WARNING"%s() usb_buffer_alloc() for wq failed\n",__FUNCTION__);
@@ -921,7 +1014,13 @@
return -ENOMEM;
}
- ep->controller_state->ctl_req_kt = usb_buffer_alloc(umidi->chip->dev,
+ ep->controller_state->ctl_req_kt =
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36) )
+ usb_alloc_coherent(
+#else
+ usb_buffer_alloc(
+#endif
+ umidi->chip->dev,
sizeof(*(ep->controller_state->ctl_req_kt)),
GFP_KERNEL,
&ep->controller_state->ctl_req_dma_kt);
@@ -947,7 +1046,7 @@
ep->controller_state->ctl_req_kt->wLength = cpu_to_le16(DJ_MP3_HID_OUTPUT_REPORT_LEN);
ep->controller_state->urb_kt->setup_dma = ep->controller_state->ctl_req_dma_kt;
/* NOTE: transfer_dma setup above in call to usb_buffer_alloc() */
- ep->controller_state->urb_kt->transfer_flags = URB_NO_SETUP_DMA_MAP | URB_NO_TRANSFER_DMA_MAP;
+ ep->controller_state->urb_kt->transfer_flags = URB_NO_TRANSFER_DMA_MAP;
init_completion(&ep->controller_state->ctl_req_completion_kt);
init_completion(&ep->controller_state->mp3w_kthread_started);

View File

@@ -0,0 +1,135 @@
diff -Naru hdjmod-1.28o/bulk.c hdjmod-1.28/bulk.c
--- hdjmod-1.28o/bulk.c 2009-01-27 15:25:50.000000000 +0100
+++ hdjmod-1.28/bulk.c 2012-04-06 22:53:14.000000000 +0200
@@ -34,6 +34,9 @@
#include <linux/usb.h>
#include <linux/delay.h>
#include <linux/version.h> /* For LINUX_VERSION_CODE */
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37) )
+#include <linux/semaphore.h>
+#endif
#if ( LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,24) )
#include <sound/driver.h>
#endif
@@ -3062,7 +3065,11 @@
goto hdj_create_bulk_interface_error;
}
/* allocate the buffer for bulk_out_urb */
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37) )
+ sema_init(&ubulk->bulk_out_buffer_mutex,1);
+#else
init_MUTEX(&ubulk->bulk_out_buffer_mutex);
+#endif
ubulk->bulk_out_buffer =
usb_buffer_alloc(ubulk->chip->dev, ubulk->bulk_out_size,
@@ -3601,7 +3608,11 @@
return -EINVAL;
}
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37) )
+ sema_init(&ubulk->output_control_mutex,1);
+#else
init_MUTEX(&ubulk->output_control_mutex);
+#endif
init_completion(&ubulk->output_control_completion);
/* Every product here except the Steel targets HID. Since the steel does not target HID, we don't
@@ -3855,7 +3866,11 @@
u16 value = 0;
struct hdj_console_context *dc = ((struct hdj_console_context *)ubulk->device_context);
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37) )
+ sema_init(&dc->device_config_mutex,1);
+#else
init_MUTEX(&dc->device_config_mutex);
+#endif
ret = hdjbulk_init_common_context(ubulk,&ubulk->hdj_common);
if (ret!=0) {
@@ -4133,7 +4148,11 @@
spin_lock_init(&dc->bulk_buffer_lock);
init_completion(&dc->bulk_request_completion);
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37) )
+ sema_init(&dc->bulk_request_mutex,1);
+#else
init_MUTEX(&dc->bulk_request_mutex);
+#endif
if ((ret = init_continuous_reader(ubulk))!=0) {
printk(KERN_WARNING"%s() init_continuous_reader() failed, rc:%d\n",
diff -Naru hdjmod-1.28o/device.c hdjmod-1.28/device.c
--- hdjmod-1.28o/device.c 2009-01-27 15:25:50.000000000 +0100
+++ hdjmod-1.28/device.c 2012-04-06 22:54:53.000000000 +0200
@@ -36,6 +36,9 @@
#include <linux/netlink.h>
#include <net/sock.h>
#include <linux/usb.h>
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37) )
+#include <linux/semaphore.h>
+#endif
#if ( LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,24) )
#include <sound/driver.h>
#endif
@@ -66,7 +69,11 @@
module_param_array(id, charp, NULL, 0444);
MODULE_PARM_DESC(id, "ID string for the Hercules DJ Series adapter.");
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37) )
+static DEFINE_SEMAPHORE(register_mutex);
+#else
static DECLARE_MUTEX(register_mutex);
+#endif
static struct snd_hdj_chip *usb_chip[SNDRV_CARDS];
/* reference count for the socket */
@@ -1682,7 +1689,11 @@
chip->card = card;
chip->product_code = product_code;
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37) )
+ sema_init(&chip->vendor_request_mutex,1);
+#else
init_MUTEX(&chip->vendor_request_mutex);
+#endif
/* initialise the atomic variables */
atomic_set(&chip->locked_io, 0);
@@ -1697,7 +1708,11 @@
INIT_LIST_HEAD(&chip->bulk_list);
chip->usb_id = USB_ID(le16_to_cpu(dev->descriptor.idVendor),
le16_to_cpu(dev->descriptor.idProduct));
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37) )
+ sema_init(&chip->netlink_list_mutex,1);
+#else
init_MUTEX(&chip->netlink_list_mutex);
+#endif
INIT_LIST_HEAD(&chip->netlink_registered_processes);
/* fill in DJ capabilities for this device */
diff -Naru hdjmod-1.28o/midi.c hdjmod-1.28/midi.c
--- hdjmod-1.28o/midi.c 2009-01-27 15:25:50.000000000 +0100
+++ hdjmod-1.28/midi.c 2012-04-06 22:55:48.000000000 +0200
@@ -34,6 +34,9 @@
#include <linux/module.h>
#include <linux/usb.h>
#include <linux/kthread.h>
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37) )
+#include <linux/semaphore.h>
+#endif
#include <asm/byteorder.h>
#include <asm/atomic.h>
#if ( LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,24) )
@@ -677,7 +680,11 @@
/* this buffer and URB below are for general control requests, like changing the
* mouse setting or setting LEDs */
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37) )
+ sema_init(&controller_state->output_control_ctl_mutex, 1);
+#else
init_MUTEX(&controller_state->output_control_ctl_mutex);
+#endif
init_completion(&controller_state->output_control_ctl_completion);
controller_state->output_control_ctl_req = usb_buffer_alloc(ep->umidi->chip->dev,
sizeof(*(controller_state->output_control_ctl_req)),

View File

@@ -0,0 +1,12 @@
diff -Naru hdjmod-1.28o/midi.c hdjmod-1.28/midi.c
--- hdjmod-1.28o/midi.c 2009-01-27 15:25:50.000000000 +0100
+++ hdjmod-1.28/midi.c 2011-05-30 21:47:18.000000000 +0200
@@ -60,7 +60,7 @@
unsigned long channel_list_initialized = 0;
struct midi_channel_elem channel_list[NUM_MIDI_CHANNELS];
-spinlock_t channel_list_lock = SPIN_LOCK_UNLOCKED;
+DEFINE_SPINLOCK(channel_list_lock);
static struct usb_protocol_ops snd_hdjmidi_standard_ops = {
.input = snd_hdjmidi_standard_input,

View File

@@ -0,0 +1,25 @@
From: Matthias Bach <marix@marix.org>
Date: 2014-07-26 23:30:00 +0200
Subject: Fix compile on kernel 3.16
Upstream: to be done
The module no longer compiled on 3.16 due to API changes in ALSA.
diff -Naru hdjmod-1.28o/device.c hdjmod-1.28/device.c
--- hdjmod-1.28o/device.c 2014-07-25 22:38:52.985186212 +0200
+++ hdjmod-1.28/device.c 2014-07-25 22:44:05.297761993 +0200
@@ -1660,7 +1660,13 @@
/* let the kernel option override custom id */
strncpy(card_id,id[idx],sizeof(card_id)-1);
}
-#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30) )
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(3,16,0) )
+ err = snd_card_new(&dev->dev, index[idx], card_id/*id[idx]*/, THIS_MODULE, 0, &card );
+ if (err) {
+ snd_printk(KERN_WARNING "snd_hdj_chip_create(): cannot create card instance %d\n", idx);
+ return err;
+ }
+#elif ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30) )
err = snd_card_create(index[idx], card_id/*id[idx]*/, THIS_MODULE, 0, &card );
if (err) {
snd_printk(KERN_WARNING "snd_hdj_chip_create(): cannot create card instance %d\n", idx);

View File

@@ -0,0 +1,54 @@
diff -Naru hdjmod-1.28o/device.c hdjmod-1.28/device.c
--- hdjmod-1.28o/device.c 2009-01-27 15:25:50.000000000 +0100
+++ hdjmod-1.28/device.c 2012-10-16 21:52:40.000000000 +0200
@@ -2393,6 +2393,13 @@
/* Try to allocate a netlink socket minimizing the risk of collision,
* by starting at the max unit number and counting down */
for (unit=MAX_LINKS-1;unit>MIN_NETLINK_UNIT;unit--) {
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0)
+ nl_sk = netlink_kernel_create(
+ &init_net,
+ unit,
+ THIS_MODULE,
+ NULL);
+#else
nl_sk = netlink_kernel_create(
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)
&init_net,
@@ -2404,6 +2411,7 @@
NULL,
#endif
THIS_MODULE);
+#endif
if (nl_sk!=NULL) {
netlink_unit = unit;
return 0;
@@ -2469,6 +2477,20 @@
return NULL;
}
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0)
+ nlh = nlmsg_put(skb, target_pid, seq, t, size, flags);
+ if(!nlh) {
+ if (skb) {
+ kfree_skb(skb);
+ }
+ return NULL;
+ }
+ data = nlmsg_data(nlh);
+ if (size > 0) {
+ memcpy(data, payload, size);
+ }
+ return skb;
+#else
nlh = NLMSG_PUT(skb, target_pid, seq, t, size);
nlh->nlmsg_flags = flags;
data = NLMSG_DATA(nlh);
@@ -2482,6 +2504,7 @@
kfree_skb(skb);
}
return NULL;
+#endif
}
int register_for_netlink(struct snd_hdj_chip* chip,

View File

@@ -0,0 +1,14 @@
diff -aru hdjmod-1.28o/device.c hdjmod-1.28/device.c
--- hdjmod-1.28o/device.c 2012-12-23 17:41:13.111607777 +0100
+++ hdjmod-1.28/device.c 2012-12-23 17:42:33.115898437 +0100
@@ -2397,7 +2397,9 @@
nl_sk = netlink_kernel_create(
&init_net,
unit,
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0)
THIS_MODULE,
+#endif
NULL);
#else
nl_sk = netlink_kernel_create(
Nur in hdjmod-1.28: .device.c.swp.

View File

@@ -0,0 +1,22 @@
diff -Naru hdjmod-1.28o//configuration_manager.c hdjmod-1.28/configuration_manager.c
--- hdjmod-1.28o//configuration_manager.c 2010-07-25 18:57:11.000000000 +0200
+++ hdjmod-1.28/configuration_manager.c 2010-07-25 19:00:15.000000000 +0200
@@ -23,6 +23,7 @@
#include <linux/kernel.h>
#include <linux/errno.h>
+#include <linux/slab.h>
#include <linux/usb.h>
#include <linux/version.h> /* For LINUX_VERSION_CODE */
#include <asm/atomic.h>
diff -Naru hdjmod-1.28o//midi.c hdjmod-1.28/midi.c
--- hdjmod-1.28o//midi.c 2010-07-25 18:57:11.000000000 +0200
+++ hdjmod-1.28/midi.c 2010-07-25 19:02:13.000000000 +0200
@@ -25,6 +25,7 @@
#include <linux/kernel.h>
#include <linux/version.h> /* For LINUX_VERSION_CODE */
#include <linux/errno.h>
+#include <linux/slab.h>
#include <linux/types.h>
#include <linux/bitops.h>
#include <linux/interrupt.h>