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-budget
/
dvb-ttusb-budget.c
diff --git
a/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
b/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
index
6ceae38
..
5a13c47
100644
(file)
--- a/
drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
+++ b/
drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
@@
-19,7
+19,7
@@
#include <linux/time.h>
#include <linux/errno.h>
#include <linux/jiffies.h>
#include <linux/time.h>
#include <linux/errno.h>
#include <linux/jiffies.h>
-#include <
linux/mutex
.h>
+#include <
asm/semaphore
.h>
#include "dvb_frontend.h"
#include "dmxdev.h"
#include "dvb_frontend.h"
#include "dmxdev.h"
@@
-35,6
+35,7
@@
#include <linux/dvb/dmx.h>
#include <linux/pci.h>
#include <linux/dvb/dmx.h>
#include <linux/pci.h>
+
/*
TTUSB_HWSECTIONS:
the DSP supports filtering in hardware, however, since the "muxstream"
/*
TTUSB_HWSECTIONS:
the DSP supports filtering in hardware, however, since the "muxstream"
@@
-82,8
+83,8
@@
struct ttusb {
struct dvb_net dvbnet;
/* and one for USB access. */
struct dvb_net dvbnet;
/* and one for USB access. */
- struct
mutex
semi2c;
- struct
mutex
semusb;
+ struct
semaphore
semi2c;
+ struct
semaphore
semusb;
struct dvb_adapter adapter;
struct usb_device *dev;
struct dvb_adapter adapter;
struct usb_device *dev;
@@
-149,7
+150,7
@@
static int ttusb_cmd(struct ttusb *ttusb,
printk("\n");
#endif
printk("\n");
#endif
- if (
mutex_lock
_interruptible(&ttusb->semusb) < 0)
+ if (
down
_interruptible(&ttusb->semusb) < 0)
return -EAGAIN;
err = usb_bulk_msg(ttusb->dev, ttusb->bulk_out_pipe,
return -EAGAIN;
err = usb_bulk_msg(ttusb->dev, ttusb->bulk_out_pipe,
@@
-157,13
+158,13
@@
static int ttusb_cmd(struct ttusb *ttusb,
if (err != 0) {
dprintk("%s: usb_bulk_msg(send) failed, err == %i!\n",
__FUNCTION__, err);
if (err != 0) {
dprintk("%s: usb_bulk_msg(send) failed, err == %i!\n",
__FUNCTION__, err);
-
mutex_unlock
(&ttusb->semusb);
+
up
(&ttusb->semusb);
return err;
}
if (actual_len != len) {
dprintk("%s: only wrote %d of %d bytes\n", __FUNCTION__,
actual_len, len);
return err;
}
if (actual_len != len) {
dprintk("%s: only wrote %d of %d bytes\n", __FUNCTION__,
actual_len, len);
-
mutex_unlock
(&ttusb->semusb);
+
up
(&ttusb->semusb);
return -1;
}
return -1;
}
@@
-173,7
+174,7
@@
static int ttusb_cmd(struct ttusb *ttusb,
if (err != 0) {
printk("%s: failed, receive error %d\n", __FUNCTION__,
err);
if (err != 0) {
printk("%s: failed, receive error %d\n", __FUNCTION__,
err);
-
mutex_unlock
(&ttusb->semusb);
+
up
(&ttusb->semusb);
return err;
}
#if DEBUG >= 3
return err;
}
#if DEBUG >= 3
@@
-184,14
+185,14
@@
static int ttusb_cmd(struct ttusb *ttusb,
printk("\n");
#endif
if (!needresult)
printk("\n");
#endif
if (!needresult)
-
mutex_unlock
(&ttusb->semusb);
+
up
(&ttusb->semusb);
return 0;
}
static int ttusb_result(struct ttusb *ttusb, u8 * data, int len)
{
memcpy(data, ttusb->last_result, len);
return 0;
}
static int ttusb_result(struct ttusb *ttusb, u8 * data, int len)
{
memcpy(data, ttusb->last_result, len);
-
mutex_unlock
(&ttusb->semusb);
+
up
(&ttusb->semusb);
return 0;
}
return 0;
}
@@
-249,7
+250,7
@@
static int master_xfer(struct i2c_adapter* adapter, struct i2c_msg *msg, int num
int i = 0;
int inc;
int i = 0;
int inc;
- if (
mutex_lock
_interruptible(&ttusb->semi2c) < 0)
+ if (
down
_interruptible(&ttusb->semi2c) < 0)
return -EAGAIN;
while (i < num) {
return -EAGAIN;
while (i < num) {
@@
-283,7
+284,7
@@
static int master_xfer(struct i2c_adapter* adapter, struct i2c_msg *msg, int num
i += inc;
}
i += inc;
}
-
mutex_unlock
(&ttusb->semi2c);
+
up
(&ttusb->semi2c);
return i;
}
return i;
}
@@
-688,7
+689,8
@@
static void ttusb_process_frame(struct ttusb *ttusb, u8 * data, int len)
memcpy(ttusb->muxpack + ttusb->muxpack_ptr,
data, avail);
ttusb->muxpack_ptr += avail;
memcpy(ttusb->muxpack + ttusb->muxpack_ptr,
data, avail);
ttusb->muxpack_ptr += avail;
- BUG_ON(ttusb->muxpack_ptr > 264);
+ if (ttusb->muxpack_ptr > 264)
+ BUG();
data += avail;
len -= avail;
/* determine length */
data += avail;
len -= avail;
/* determine length */
@@
-1493,11
+1495,8
@@
static int ttusb_probe(struct usb_interface *intf, const struct usb_device_id *i
ttusb->dev = udev;
ttusb->c = 0;
ttusb->mux_state = 0;
ttusb->dev = udev;
ttusb->c = 0;
ttusb->mux_state = 0;
- mutex_init(&ttusb->semi2c);
-
- mutex_lock(&ttusb->semi2c);
-
- mutex_init(&ttusb->semusb);
+ sema_init(&ttusb->semi2c, 0);
+ sema_init(&ttusb->semusb, 1);
ttusb_setup_interfaces(ttusb);
ttusb_setup_interfaces(ttusb);
@@
-1505,13
+1504,9
@@
static int ttusb_probe(struct usb_interface *intf, const struct usb_device_id *i
if (ttusb_init_controller(ttusb))
printk("ttusb_init_controller: error\n");
if (ttusb_init_controller(ttusb))
printk("ttusb_init_controller: error\n");
-
mutex_unlock
(&ttusb->semi2c);
+
up
(&ttusb->semi2c);
- if ((result = dvb_register_adapter(&ttusb->adapter, "Technotrend/Hauppauge Nova-USB", THIS_MODULE)) < 0) {
- ttusb_free_iso_urbs(ttusb);
- kfree(ttusb);
- return result;
- }
+ dvb_register_adapter(&ttusb->adapter, "Technotrend/Hauppauge Nova-USB", THIS_MODULE);
ttusb->adapter.priv = ttusb;
/* i2c */
ttusb->adapter.priv = ttusb;
/* i2c */