git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git]
/
drivers
/
media
/
dvb
/
ttusb-dec
/
ttusb_dec.c
diff --git
a/drivers/media/dvb/ttusb-dec/ttusb_dec.c
b/drivers/media/dvb/ttusb-dec/ttusb_dec.c
index
6c1cb77
..
df83117
100644
(file)
--- a/
drivers/media/dvb/ttusb-dec/ttusb_dec.c
+++ b/
drivers/media/dvb/ttusb-dec/ttusb_dec.c
@@
-20,8
+20,7
@@
*
*/
*
*/
-#include <linux/mutex.h>
-
+#include <asm/semaphore.h>
#include <linux/list.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/list.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
@@
-116,7
+115,7
@@
struct ttusb_dec {
unsigned int out_pipe;
unsigned int irq_pipe;
enum ttusb_dec_interface interface;
unsigned int out_pipe;
unsigned int irq_pipe;
enum ttusb_dec_interface interface;
- struct
mutex usb_mutex
;
+ struct
semaphore usb_sem
;
void *irq_buffer;
struct urb *irq_urb;
void *irq_buffer;
struct urb *irq_urb;
@@
-125,7
+124,7
@@
struct ttusb_dec {
dma_addr_t iso_dma_handle;
struct urb *iso_urb[ISO_BUF_COUNT];
int iso_stream_count;
dma_addr_t iso_dma_handle;
struct urb *iso_urb[ISO_BUF_COUNT];
int iso_stream_count;
- struct
mutex iso_mutex
;
+ struct
semaphore iso_sem
;
u8 packet[MAX_PVA_LENGTH + 4];
enum ttusb_dec_packet_type packet_type;
u8 packet[MAX_PVA_LENGTH + 4];
enum ttusb_dec_packet_type packet_type;
@@
-274,9
+273,9
@@
static int ttusb_dec_send_command(struct ttusb_dec *dec, const u8 command,
if (!b)
return -ENOMEM;
if (!b)
return -ENOMEM;
- if ((result =
mutex_lock_interruptible(&dec->usb_mutex
))) {
+ if ((result =
down_interruptible(&dec->usb_sem
))) {
kfree(b);
kfree(b);
- printk("%s: Failed to
lock usb mutex
.\n", __FUNCTION__);
+ printk("%s: Failed to
down usb semaphore
.\n", __FUNCTION__);
return result;
}
return result;
}
@@
-301,7
+300,7
@@
static int ttusb_dec_send_command(struct ttusb_dec *dec, const u8 command,
if (result) {
printk("%s: command bulk message failed: error %d\n",
__FUNCTION__, result);
if (result) {
printk("%s: command bulk message failed: error %d\n",
__FUNCTION__, result);
-
mutex_unlock(&dec->usb_mutex
);
+
up(&dec->usb_sem
);
kfree(b);
return result;
}
kfree(b);
return result;
}
@@
-312,7
+311,7
@@
static int ttusb_dec_send_command(struct ttusb_dec *dec, const u8 command,
if (result) {
printk("%s: result bulk message failed: error %d\n",
__FUNCTION__, result);
if (result) {
printk("%s: result bulk message failed: error %d\n",
__FUNCTION__, result);
-
mutex_unlock(&dec->usb_mutex
);
+
up(&dec->usb_sem
);
kfree(b);
return result;
} else {
kfree(b);
return result;
} else {
@@
-328,7
+327,7
@@
static int ttusb_dec_send_command(struct ttusb_dec *dec, const u8 command,
if (cmd_result && b[3] > 0)
memcpy(cmd_result, &b[4], b[3]);
if (cmd_result && b[3] > 0)
memcpy(cmd_result, &b[4], b[3]);
-
mutex_unlock(&dec->usb_mutex
);
+
up(&dec->usb_sem
);
kfree(b);
return 0;
kfree(b);
return 0;
@@
-836,7
+835,7
@@
static void ttusb_dec_stop_iso_xfer(struct ttusb_dec *dec)
dprintk("%s\n", __FUNCTION__);
dprintk("%s\n", __FUNCTION__);
- if (
mutex_lock_interruptible(&dec->iso_mutex
))
+ if (
down_interruptible(&dec->iso_sem
))
return;
dec->iso_stream_count--;
return;
dec->iso_stream_count--;
@@
-846,7
+845,7
@@
static void ttusb_dec_stop_iso_xfer(struct ttusb_dec *dec)
usb_kill_urb(dec->iso_urb[i]);
}
usb_kill_urb(dec->iso_urb[i]);
}
-
mutex_unlock(&dec->iso_mutex
);
+
up(&dec->iso_sem
);
}
/* Setting the interface of the DEC tends to take down the USB communications
}
/* Setting the interface of the DEC tends to take down the USB communications
@@
-891,7
+890,7
@@
static int ttusb_dec_start_iso_xfer(struct ttusb_dec *dec)
dprintk("%s\n", __FUNCTION__);
dprintk("%s\n", __FUNCTION__);
- if (
mutex_lock_interruptible(&dec->iso_mutex
))
+ if (
down_interruptible(&dec->iso_sem
))
return -EAGAIN;
if (!dec->iso_stream_count) {
return -EAGAIN;
if (!dec->iso_stream_count) {
@@
-912,7
+911,7
@@
static int ttusb_dec_start_iso_xfer(struct ttusb_dec *dec)
i--;
}
i--;
}
-
mutex_unlock(&dec->iso_mutex
);
+
up(&dec->iso_sem
);
return result;
}
}
return result;
}
}
@@
-920,7
+919,7
@@
static int ttusb_dec_start_iso_xfer(struct ttusb_dec *dec)
dec->iso_stream_count++;
dec->iso_stream_count++;
-
mutex_unlock(&dec->iso_mutex
);
+
up(&dec->iso_sem
);
return 0;
}
return 0;
}
@@
-1230,8
+1229,8
@@
static int ttusb_dec_init_usb(struct ttusb_dec *dec)
{
dprintk("%s\n", __FUNCTION__);
{
dprintk("%s\n", __FUNCTION__);
-
mutex_init(&dec->usb_mutex
);
-
mutex_init(&dec->iso_mutex
);
+
sema_init(&dec->usb_sem, 1
);
+
sema_init(&dec->iso_sem, 1
);
dec->command_pipe = usb_sndbulkpipe(dec->udev, COMMAND_PIPE);
dec->result_pipe = usb_rcvbulkpipe(dec->udev, RESULT_PIPE);
dec->command_pipe = usb_sndbulkpipe(dec->udev, COMMAND_PIPE);
dec->result_pipe = usb_rcvbulkpipe(dec->udev, RESULT_PIPE);
@@
-1432,7
+1431,7
@@
static int ttusb_dec_init_dvb(struct ttusb_dec *dec)
dprintk("%s\n", __FUNCTION__);
if ((result = dvb_register_adapter(&dec->adapter,
dprintk("%s\n", __FUNCTION__);
if ((result = dvb_register_adapter(&dec->adapter,
- dec->model_name, THIS_MODULE
, &dec->udev->dev
)) < 0) {
+ dec->model_name, THIS_MODULE)) < 0) {
printk("%s: dvb_register_adapter failed: error %d\n",
__FUNCTION__, result);
printk("%s: dvb_register_adapter failed: error %d\n",
__FUNCTION__, result);
@@
-1657,8
+1656,8
@@
static int ttusb_dec_probe(struct usb_interface *intf,
} else {
if (dvb_register_frontend(&dec->adapter, dec->fe)) {
printk("budget-ci: Frontend registration failed!\n");
} else {
if (dvb_register_frontend(&dec->adapter, dec->fe)) {
printk("budget-ci: Frontend registration failed!\n");
- if (dec->fe->ops
.
release)
- dec->fe->ops
.
release(dec->fe);
+ if (dec->fe->ops
->
release)
+ dec->fe->ops
->
release(dec->fe);
dec->fe = NULL;
}
}
dec->fe = NULL;
}
}