mirror of
https://github.com/tbsdtv/media_build.git
synced 2025-07-23 04:13:02 +02:00
71 lines
2.4 KiB
Diff
71 lines
2.4 KiB
Diff
diff --git a/drivers/media/rc/mceusb.c b/drivers/media/rc/mceusb.c
|
|
index 6795e6fcf558..b0dd59dc09eb 100644
|
|
--- a/drivers/media/rc/mceusb.c
|
|
+++ b/drivers/media/rc/mceusb.c
|
|
@@ -1439,37 +1439,42 @@ static void mceusb_gen1_init(struct mceusb_dev *ir)
|
|
{
|
|
int ret;
|
|
struct device *dev = ir->dev;
|
|
- char data[USB_CTRL_MSG_SZ];
|
|
+ char *data;
|
|
+
|
|
+ data = kzalloc(USB_CTRL_MSG_SZ, GFP_KERNEL);
|
|
+ if (!data) {
|
|
+ dev_err(dev, "%s: memory allocation failed!", __func__);
|
|
+ return;
|
|
+ }
|
|
|
|
/*
|
|
* This is a strange one. Windows issues a set address to the device
|
|
* on the receive control pipe and expect a certain value pair back
|
|
*/
|
|
- ret = usb_control_msg_recv(ir->usbdev, 0, USB_REQ_SET_ADDRESS,
|
|
- USB_DIR_IN | USB_TYPE_VENDOR,
|
|
- 0, 0, data, USB_CTRL_MSG_SZ, 3000,
|
|
- GFP_KERNEL);
|
|
+ ret = usb_control_msg(ir->usbdev, usb_rcvctrlpipe(ir->usbdev, 0),
|
|
+ USB_REQ_SET_ADDRESS, USB_TYPE_VENDOR, 0, 0,
|
|
+ data, USB_CTRL_MSG_SZ, 3000);
|
|
dev_dbg(dev, "set address - ret = %d", ret);
|
|
dev_dbg(dev, "set address - data[0] = %d, data[1] = %d",
|
|
data[0], data[1]);
|
|
|
|
/* set feature: bit rate 38400 bps */
|
|
- ret = usb_control_msg_send(ir->usbdev, 0,
|
|
- USB_REQ_SET_FEATURE, USB_TYPE_VENDOR,
|
|
- 0xc04e, 0x0000, NULL, 0, 3000, GFP_KERNEL);
|
|
+ ret = usb_control_msg(ir->usbdev, usb_sndctrlpipe(ir->usbdev, 0),
|
|
+ USB_REQ_SET_FEATURE, USB_TYPE_VENDOR,
|
|
+ 0xc04e, 0x0000, NULL, 0, 3000);
|
|
|
|
dev_dbg(dev, "set feature - ret = %d", ret);
|
|
|
|
/* bRequest 4: set char length to 8 bits */
|
|
- ret = usb_control_msg_send(ir->usbdev, 0,
|
|
- 4, USB_TYPE_VENDOR,
|
|
- 0x0808, 0x0000, NULL, 0, 3000, GFP_KERNEL);
|
|
+ ret = usb_control_msg(ir->usbdev, usb_sndctrlpipe(ir->usbdev, 0),
|
|
+ 4, USB_TYPE_VENDOR,
|
|
+ 0x0808, 0x0000, NULL, 0, 3000);
|
|
dev_dbg(dev, "set char length - retB = %d", ret);
|
|
|
|
/* bRequest 2: set handshaking to use DTR/DSR */
|
|
- ret = usb_control_msg_send(ir->usbdev, 0,
|
|
- 2, USB_TYPE_VENDOR,
|
|
- 0x0000, 0x0100, NULL, 0, 3000, GFP_KERNEL);
|
|
+ ret = usb_control_msg(ir->usbdev, usb_sndctrlpipe(ir->usbdev, 0),
|
|
+ 2, USB_TYPE_VENDOR,
|
|
+ 0x0000, 0x0100, NULL, 0, 3000);
|
|
dev_dbg(dev, "set handshake - retC = %d", ret);
|
|
|
|
/* device resume */
|
|
@@ -1477,6 +1482,8 @@ static void mceusb_gen1_init(struct mceusb_dev *ir)
|
|
|
|
/* get hw/sw revision? */
|
|
mce_command_out(ir, GET_REVISION, sizeof(GET_REVISION));
|
|
+
|
|
+ kfree(data);
|
|
}
|
|
|
|
static void mceusb_gen2_init(struct mceusb_dev *ir)
|