Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
d04ae27b
Commit
d04ae27b
authored
Jan 15, 2006
by
Mauro Carvalho Chehab
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'work'
parents
f1dccedc
e0ad8486
Changes
15
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
99 additions
and
78 deletions
+99
-78
drivers/media/dvb/dvb-core/dvbdev.c
drivers/media/dvb/dvb-core/dvbdev.c
+11
-11
drivers/media/dvb/ttpci/av7110_hw.c
drivers/media/dvb/ttpci/av7110_hw.c
+20
-20
drivers/media/dvb/ttpci/av7110_hw.h
drivers/media/dvb/ttpci/av7110_hw.h
+6
-6
drivers/media/video/cx25840/cx25840-core.c
drivers/media/video/cx25840/cx25840-core.c
+1
-1
drivers/media/video/cx88/Kconfig
drivers/media/video/cx88/Kconfig
+1
-2
drivers/media/video/cx88/cx88-alsa.c
drivers/media/video/cx88/cx88-alsa.c
+0
-1
drivers/media/video/cx88/cx88-core.c
drivers/media/video/cx88/cx88-core.c
+8
-7
drivers/media/video/cx88/cx88-tvaudio.c
drivers/media/video/cx88/cx88-tvaudio.c
+7
-1
drivers/media/video/em28xx/em28xx-video.c
drivers/media/video/em28xx/em28xx-video.c
+4
-3
drivers/media/video/saa7134/saa7134-cards.c
drivers/media/video/saa7134/saa7134-cards.c
+6
-0
drivers/media/video/saa7134/saa7134-core.c
drivers/media/video/saa7134/saa7134-core.c
+10
-9
drivers/media/video/saa7134/saa7134-tvaudio.c
drivers/media/video/saa7134/saa7134-tvaudio.c
+8
-3
drivers/media/video/tvp5150.c
drivers/media/video/tvp5150.c
+1
-1
drivers/media/video/videodev.c
drivers/media/video/videodev.c
+12
-13
include/linux/i2c-id.h
include/linux/i2c-id.h
+4
-0
No files found.
drivers/media/dvb/dvb-core/dvbdev.c
View file @
d04ae27b
...
...
@@ -33,7 +33,7 @@
#include <linux/device.h>
#include <linux/fs.h>
#include <linux/cdev.h>
#include <linux/mutex.h>
#include "dvbdev.h"
static
int
dvbdev_debug
;
...
...
@@ -44,7 +44,7 @@ MODULE_PARM_DESC(dvbdev_debug, "Turn on/off device debugging (default:off).");
#define dprintk if (dvbdev_debug) printk
static
LIST_HEAD
(
dvb_adapter_list
);
static
DE
CLAR
E_MUTEX
(
dvbdev_register_lock
);
static
DE
FIN
E_MUTEX
(
dvbdev_register_lock
);
static
const
char
*
const
dnames
[]
=
{
"video"
,
"audio"
,
"sec"
,
"frontend"
,
"demux"
,
"dvr"
,
"ca"
,
...
...
@@ -202,11 +202,11 @@ int dvb_register_device(struct dvb_adapter *adap, struct dvb_device **pdvbdev,
struct
dvb_device
*
dvbdev
;
int
id
;
if
(
down_interruptible
(
&
dvbdev_register_lock
))
if
(
mutex_lock_interruptible
(
&
dvbdev_register_lock
))
return
-
ERESTARTSYS
;
if
((
id
=
dvbdev_get_free_id
(
adap
,
type
))
<
0
)
{
up
(
&
dvbdev_register_lock
);
mutex_unlock
(
&
dvbdev_register_lock
);
*
pdvbdev
=
NULL
;
printk
(
"%s: could get find free device id...
\n
"
,
__FUNCTION__
);
return
-
ENFILE
;
...
...
@@ -215,11 +215,11 @@ int dvb_register_device(struct dvb_adapter *adap, struct dvb_device **pdvbdev,
*
pdvbdev
=
dvbdev
=
kmalloc
(
sizeof
(
struct
dvb_device
),
GFP_KERNEL
);
if
(
!
dvbdev
)
{
up
(
&
dvbdev_register_lock
);
mutex_unlock
(
&
dvbdev_register_lock
);
return
-
ENOMEM
;
}
up
(
&
dvbdev_register_lock
);
mutex_unlock
(
&
dvbdev_register_lock
);
memcpy
(
dvbdev
,
template
,
sizeof
(
struct
dvb_device
));
dvbdev
->
type
=
type
;
...
...
@@ -289,11 +289,11 @@ int dvb_register_adapter(struct dvb_adapter *adap, const char *name, struct modu
{
int
num
;
if
(
down_interruptible
(
&
dvbdev_register_lock
))
if
(
mutex_lock_interruptible
(
&
dvbdev_register_lock
))
return
-
ERESTARTSYS
;
if
((
num
=
dvbdev_get_free_adapter_num
())
<
0
)
{
up
(
&
dvbdev_register_lock
);
mutex_unlock
(
&
dvbdev_register_lock
);
return
-
ENFILE
;
}
...
...
@@ -309,7 +309,7 @@ int dvb_register_adapter(struct dvb_adapter *adap, const char *name, struct modu
list_add_tail
(
&
adap
->
list_head
,
&
dvb_adapter_list
);
up
(
&
dvbdev_register_lock
);
mutex_unlock
(
&
dvbdev_register_lock
);
return
num
;
}
...
...
@@ -320,10 +320,10 @@ int dvb_unregister_adapter(struct dvb_adapter *adap)
{
devfs_remove
(
"dvb/adapter%d"
,
adap
->
num
);
if
(
down_interruptible
(
&
dvbdev_register_lock
))
if
(
mutex_lock_interruptible
(
&
dvbdev_register_lock
))
return
-
ERESTARTSYS
;
list_del
(
&
adap
->
list_head
);
up
(
&
dvbdev_register_lock
);
mutex_unlock
(
&
dvbdev_register_lock
);
return
0
;
}
EXPORT_SYMBOL
(
dvb_unregister_adapter
);
...
...
drivers/media/dvb/ttpci/av7110_hw.c
View file @
d04ae27b
...
...
@@ -146,52 +146,52 @@ static int load_dram(struct av7110 *av7110, u32 *data, int len)
{
int
i
;
int
blocks
,
rest
;
u32
base
,
bootblock
=
BOOT_BLOCK
;
u32
base
,
bootblock
=
AV7110_
BOOT_BLOCK
;
dprintk
(
4
,
"%p
\n
"
,
av7110
);
blocks
=
len
/
BOOT_MAX_SIZE
;
rest
=
len
%
BOOT_MAX_SIZE
;
blocks
=
len
/
AV7110_
BOOT_MAX_SIZE
;
rest
=
len
%
AV7110_
BOOT_MAX_SIZE
;
base
=
DRAM_START_CODE
;
for
(
i
=
0
;
i
<
blocks
;
i
++
)
{
if
(
waitdebi
(
av7110
,
BOOT_STATE
,
BOOTSTATE_BUFFER_EMPTY
)
<
0
)
{
if
(
waitdebi
(
av7110
,
AV7110_
BOOT_STATE
,
BOOTSTATE_BUFFER_EMPTY
)
<
0
)
{
printk
(
KERN_ERR
"dvb-ttpci: load_dram(): timeout at block %d
\n
"
,
i
);
return
-
ETIMEDOUT
;
}
dprintk
(
4
,
"writing DRAM block %d
\n
"
,
i
);
mwdebi
(
av7110
,
DEBISWAB
,
bootblock
,
((
char
*
)
data
)
+
i
*
BOOT_MAX_SIZE
,
BOOT_MAX_SIZE
);
((
char
*
)
data
)
+
i
*
AV7110_BOOT_MAX_SIZE
,
AV7110_
BOOT_MAX_SIZE
);
bootblock
^=
0x1400
;
iwdebi
(
av7110
,
DEBISWAB
,
BOOT_BASE
,
swab32
(
base
),
4
);
iwdebi
(
av7110
,
DEBINOSWAP
,
BOOT_SIZE
,
BOOT_MAX_SIZE
,
2
);
iwdebi
(
av7110
,
DEBINOSWAP
,
BOOT_STATE
,
BOOTSTATE_BUFFER_FULL
,
2
);
base
+=
BOOT_MAX_SIZE
;
iwdebi
(
av7110
,
DEBISWAB
,
AV7110_
BOOT_BASE
,
swab32
(
base
),
4
);
iwdebi
(
av7110
,
DEBINOSWAP
,
AV7110_BOOT_SIZE
,
AV7110_
BOOT_MAX_SIZE
,
2
);
iwdebi
(
av7110
,
DEBINOSWAP
,
AV7110_
BOOT_STATE
,
BOOTSTATE_BUFFER_FULL
,
2
);
base
+=
AV7110_
BOOT_MAX_SIZE
;
}
if
(
rest
>
0
)
{
if
(
waitdebi
(
av7110
,
BOOT_STATE
,
BOOTSTATE_BUFFER_EMPTY
)
<
0
)
{
if
(
waitdebi
(
av7110
,
AV7110_
BOOT_STATE
,
BOOTSTATE_BUFFER_EMPTY
)
<
0
)
{
printk
(
KERN_ERR
"dvb-ttpci: load_dram(): timeout at last block
\n
"
);
return
-
ETIMEDOUT
;
}
if
(
rest
>
4
)
mwdebi
(
av7110
,
DEBISWAB
,
bootblock
,
((
char
*
)
data
)
+
i
*
BOOT_MAX_SIZE
,
rest
);
((
char
*
)
data
)
+
i
*
AV7110_
BOOT_MAX_SIZE
,
rest
);
else
mwdebi
(
av7110
,
DEBISWAB
,
bootblock
,
((
char
*
)
data
)
+
i
*
BOOT_MAX_SIZE
-
4
,
rest
+
4
);
((
char
*
)
data
)
+
i
*
AV7110_
BOOT_MAX_SIZE
-
4
,
rest
+
4
);
iwdebi
(
av7110
,
DEBISWAB
,
BOOT_BASE
,
swab32
(
base
),
4
);
iwdebi
(
av7110
,
DEBINOSWAP
,
BOOT_SIZE
,
rest
,
2
);
iwdebi
(
av7110
,
DEBINOSWAP
,
BOOT_STATE
,
BOOTSTATE_BUFFER_FULL
,
2
);
iwdebi
(
av7110
,
DEBISWAB
,
AV7110_
BOOT_BASE
,
swab32
(
base
),
4
);
iwdebi
(
av7110
,
DEBINOSWAP
,
AV7110_
BOOT_SIZE
,
rest
,
2
);
iwdebi
(
av7110
,
DEBINOSWAP
,
AV7110_
BOOT_STATE
,
BOOTSTATE_BUFFER_FULL
,
2
);
}
if
(
waitdebi
(
av7110
,
BOOT_STATE
,
BOOTSTATE_BUFFER_EMPTY
)
<
0
)
{
if
(
waitdebi
(
av7110
,
AV7110_
BOOT_STATE
,
BOOTSTATE_BUFFER_EMPTY
)
<
0
)
{
printk
(
KERN_ERR
"dvb-ttpci: load_dram(): timeout after last block
\n
"
);
return
-
ETIMEDOUT
;
}
iwdebi
(
av7110
,
DEBINOSWAP
,
BOOT_SIZE
,
0
,
2
);
iwdebi
(
av7110
,
DEBINOSWAP
,
BOOT_STATE
,
BOOTSTATE_BUFFER_FULL
,
2
);
if
(
waitdebi
(
av7110
,
BOOT_STATE
,
BOOTSTATE
_BOOT_COMPLETE
)
<
0
)
{
iwdebi
(
av7110
,
DEBINOSWAP
,
AV7110_
BOOT_SIZE
,
0
,
2
);
iwdebi
(
av7110
,
DEBINOSWAP
,
AV7110_
BOOT_STATE
,
BOOTSTATE_BUFFER_FULL
,
2
);
if
(
waitdebi
(
av7110
,
AV7110_BOOT_STATE
,
BOOTSTATE_AV7110
_BOOT_COMPLETE
)
<
0
)
{
printk
(
KERN_ERR
"dvb-ttpci: load_dram(): final handshake timeout
\n
"
);
return
-
ETIMEDOUT
;
}
...
...
@@ -262,7 +262,7 @@ int av7110_bootarm(struct av7110 *av7110)
//saa7146_setgpio(dev, 3, SAA7146_GPIO_INPUT);
mwdebi
(
av7110
,
DEBISWAB
,
DPRAM_BASE
,
bootcode
,
sizeof
(
bootcode
));
iwdebi
(
av7110
,
DEBINOSWAP
,
BOOT_STATE
,
BOOTSTATE_BUFFER_FULL
,
2
);
iwdebi
(
av7110
,
DEBINOSWAP
,
AV7110_
BOOT_STATE
,
BOOTSTATE_BUFFER_FULL
,
2
);
if
(
saa7146_wait_for_debi_done
(
av7110
->
dev
,
1
))
{
printk
(
KERN_ERR
"dvb-ttpci: av7110_bootarm(): "
...
...
drivers/media/dvb/ttpci/av7110_hw.h
View file @
d04ae27b
...
...
@@ -18,7 +18,7 @@ enum av7110_bootstate
{
BOOTSTATE_BUFFER_EMPTY
=
0
,
BOOTSTATE_BUFFER_FULL
=
1
,
BOOTSTATE_BOOT_COMPLETE
=
2
BOOTSTATE_
AV7110_
BOOT_COMPLETE
=
2
};
enum
av7110_type_rec_play_format
...
...
@@ -295,11 +295,11 @@ enum av7110_command_type {
#define DPRAM_BASE 0x4000
/* boot protocol area */
#define BOOT_STATE (DPRAM_BASE + 0x3F8)
#define BOOT_SIZE (DPRAM_BASE + 0x3FA)
#define BOOT_BASE (DPRAM_BASE + 0x3FC)
#define BOOT_BLOCK (DPRAM_BASE + 0x400)
#define BOOT_MAX_SIZE 0xc00
#define
AV7110_
BOOT_STATE (DPRAM_BASE + 0x3F8)
#define
AV7110_
BOOT_SIZE (DPRAM_BASE + 0x3FA)
#define
AV7110_
BOOT_BASE (DPRAM_BASE + 0x3FC)
#define
AV7110_
BOOT_BLOCK (DPRAM_BASE + 0x400)
#define
AV7110_
BOOT_MAX_SIZE 0xc00
/* firmware command protocol area */
#define IRQ_STATE (DPRAM_BASE + 0x0F4)
...
...
drivers/media/video/cx25840/cx25840-core.c
View file @
d04ae27b
...
...
@@ -43,7 +43,7 @@ MODULE_LICENSE("GPL");
static
unsigned
short
normal_i2c
[]
=
{
0x88
>>
1
,
I2C_CLIENT_END
};
int
cx25840_debug
;
static
int
cx25840_debug
;
module_param_named
(
debug
,
cx25840_debug
,
int
,
0644
);
...
...
drivers/media/video/cx88/Kconfig
View file @
d04ae27b
...
...
@@ -31,8 +31,7 @@ config VIDEO_CX88_DVB
config VIDEO_CX88_ALSA
tristate "ALSA DMA audio support"
depends on VIDEO_CX88 && SND
select SND_PCM_OSS
depends on VIDEO_CX88 && SND && EXPERIMENTAL
---help---
This is a video4linux driver for direct (DMA) audio on
Conexant 2388x based TV cards.
...
...
drivers/media/video/cx88/cx88-alsa.c
View file @
d04ae27b
...
...
@@ -805,7 +805,6 @@ static struct pci_driver cx88_audio_pci_driver = {
.
id_table
=
cx88_audio_pci_tbl
,
.
probe
=
cx88_audio_initdev
,
.
remove
=
cx88_audio_finidev
,
SND_PCI_PM_CALLBACKS
};
/****************************************************************************
...
...
drivers/media/video/cx88/cx88-core.c
View file @
d04ae27b
...
...
@@ -32,6 +32,7 @@
#include <linux/pci.h>
#include <linux/delay.h>
#include <linux/videodev2.h>
#include <linux/mutex.h>
#include "cx88.h"
#include <media/v4l2-common.h>
...
...
@@ -75,7 +76,7 @@ MODULE_PARM_DESC(nocomb,"disable comb filter");
static
unsigned
int
cx88_devcount
;
static
LIST_HEAD
(
cx88_devlist
);
static
DE
CLAR
E_MUTEX
(
devlist
);
static
DE
FIN
E_MUTEX
(
devlist
);
#define NO_SYNC_LINE (-1U)
...
...
@@ -1036,7 +1037,7 @@ struct cx88_core* cx88_core_get(struct pci_dev *pci)
struct
list_head
*
item
;
int
i
;
down
(
&
devlist
);
mutex_lock
(
&
devlist
);
list_for_each
(
item
,
&
cx88_devlist
)
{
core
=
list_entry
(
item
,
struct
cx88_core
,
devlist
);
if
(
pci
->
bus
->
number
!=
core
->
pci_bus
)
...
...
@@ -1047,7 +1048,7 @@ struct cx88_core* cx88_core_get(struct pci_dev *pci)
if
(
0
!=
get_ressources
(
core
,
pci
))
goto
fail_unlock
;
atomic_inc
(
&
core
->
refcount
);
up
(
&
devlist
);
mutex_unlock
(
&
devlist
);
return
core
;
}
core
=
kzalloc
(
sizeof
(
*
core
),
GFP_KERNEL
);
...
...
@@ -1122,13 +1123,13 @@ struct cx88_core* cx88_core_get(struct pci_dev *pci)
cx88_card_setup
(
core
);
cx88_ir_init
(
core
,
pci
);
up
(
&
devlist
);
mutex_unlock
(
&
devlist
);
return
core
;
fail_free:
kfree
(
core
);
fail_unlock:
up
(
&
devlist
);
mutex_unlock
(
&
devlist
);
return
NULL
;
}
...
...
@@ -1140,14 +1141,14 @@ void cx88_core_put(struct cx88_core *core, struct pci_dev *pci)
if
(
!
atomic_dec_and_test
(
&
core
->
refcount
))
return
;
down
(
&
devlist
);
mutex_lock
(
&
devlist
);
cx88_ir_fini
(
core
);
if
(
0
==
core
->
i2c_rc
)
i2c_bit_del_bus
(
&
core
->
i2c_adap
);
list_del
(
&
core
->
devlist
);
iounmap
(
core
->
lmmio
);
cx88_devcount
--
;
up
(
&
devlist
);
mutex_unlock
(
&
devlist
);
kfree
(
core
);
}
...
...
drivers/media/video/cx88/cx88-tvaudio.c
View file @
d04ae27b
...
...
@@ -60,6 +60,11 @@ static unsigned int audio_debug = 0;
module_param
(
audio_debug
,
int
,
0644
);
MODULE_PARM_DESC
(
audio_debug
,
"enable debug messages [audio]"
);
static
unsigned
int
always_analog
=
0
;
module_param
(
always_analog
,
int
,
0644
);
MODULE_PARM_DESC
(
always_analog
,
"force analog audio out"
);
#define dprintk(fmt, arg...) if (audio_debug) \
printk(KERN_DEBUG "%s/0: " fmt, core->name , ## arg)
...
...
@@ -155,7 +160,8 @@ static void set_audio_finish(struct cx88_core *core, u32 ctl)
cx_write
(
AUD_I2SOUTPUTCNTL
,
1
);
cx_write
(
AUD_I2SCNTL
,
0
);
/* cx_write(AUD_APB_IN_RATE_ADJ, 0); */
}
else
{
}
if
((
always_analog
)
||
(
!
cx88_boards
[
core
->
board
].
blackbird
))
{
ctl
|=
EN_DAC_ENABLE
;
cx_write
(
AUD_CTL
,
ctl
);
}
...
...
drivers/media/video/em28xx/em28xx-video.c
View file @
d04ae27b
...
...
@@ -29,6 +29,7 @@
#include <linux/i2c.h>
#include <linux/version.h>
#include <linux/video_decoder.h>
#include <linux/mutex.h>
#include "em28xx.h"
#include <media/tuner.h>
...
...
@@ -191,7 +192,7 @@ static struct v4l2_queryctrl saa711x_qctrl[] = {
static
struct
usb_driver
em28xx_usb_driver
;
static
DE
CLAR
E_MUTEX
(
em28xx_sysfs_lock
);
static
DE
FIN
E_MUTEX
(
em28xx_sysfs_lock
);
static
DECLARE_RWSEM
(
em28xx_disconnect
);
/********************* v4l2 interface ******************************************/
...
...
@@ -394,7 +395,7 @@ static int em28xx_v4l2_open(struct inode *inode, struct file *filp)
*/
static
void
em28xx_release_resources
(
struct
em28xx
*
dev
)
{
down
(
&
em28xx_sysfs_lock
);
mutex_lock
(
&
em28xx_sysfs_lock
);
em28xx_info
(
"V4L2 device /dev/video%d deregistered
\n
"
,
dev
->
vdev
->
minor
);
...
...
@@ -403,7 +404,7 @@ static void em28xx_release_resources(struct em28xx *dev)
/* video_unregister_device(dev->vbi_dev); */
em28xx_i2c_unregister
(
dev
);
usb_put_dev
(
dev
->
udev
);
up
(
&
em28xx_sysfs_lock
);
mutex_unlock
(
&
em28xx_sysfs_lock
);
}
/*
...
...
drivers/media/video/saa7134/saa7134-cards.c
View file @
d04ae27b
...
...
@@ -2515,6 +2515,7 @@ struct saa7134_board saa7134_boards[] = {
.
tuner_addr
=
ADDR_UNSET
,
.
radio_addr
=
ADDR_UNSET
,
.
mpeg
=
SAA7134_MPEG_DVB
,
.
gpiomask
=
1
<<
21
,
.
inputs
=
{{
.
name
=
name_tv
,
.
vmux
=
1
,
...
...
@@ -2529,6 +2530,11 @@ struct saa7134_board saa7134_boards[] = {
.
vmux
=
8
,
.
amux
=
LINE1
,
}},
.
radio
=
{
.
name
=
name_radio
,
.
amux
=
TV
,
.
gpio
=
0x0200000
,
},
},
[
SAA7134_BOARD_MSI_TVATANYWHERE_PLUS
]
=
{
.
name
=
"MSI TV@Anywhere plus"
,
...
...
drivers/media/video/saa7134/saa7134-core.c
View file @
d04ae27b
...
...
@@ -31,6 +31,7 @@
#include <linux/sound.h>
#include <linux/interrupt.h>
#include <linux/delay.h>
#include <linux/mutex.h>
#include "saa7134-reg.h"
#include "saa7134.h"
...
...
@@ -84,7 +85,7 @@ MODULE_PARM_DESC(radio_nr, "radio device number");
MODULE_PARM_DESC
(
tuner
,
"tuner type"
);
MODULE_PARM_DESC
(
card
,
"card type"
);
static
DE
CLAR
E_MUTEX
(
devlist_lock
);
static
DE
FIN
E_MUTEX
(
devlist_lock
);
LIST_HEAD
(
saa7134_devlist
);
static
LIST_HEAD
(
mops_list
);
static
unsigned
int
saa7134_devcount
;
...
...
@@ -969,13 +970,13 @@ static int __devinit saa7134_initdev(struct pci_dev *pci_dev,
pci_set_drvdata
(
pci_dev
,
dev
);
saa7134_devcount
++
;
down
(
&
devlist_lock
);
mutex_lock
(
&
devlist_lock
);
list_for_each
(
item
,
&
mops_list
)
{
mops
=
list_entry
(
item
,
struct
saa7134_mpeg_ops
,
next
);
mpeg_ops_attach
(
mops
,
dev
);
}
list_add_tail
(
&
dev
->
devlist
,
&
saa7134_devlist
);
up
(
&
devlist_lock
);
mutex_unlock
(
&
devlist_lock
);
/* check for signal */
saa7134_irq_video_intl
(
dev
);
...
...
@@ -1031,13 +1032,13 @@ static void __devexit saa7134_finidev(struct pci_dev *pci_dev)
saa7134_hwfini
(
dev
);
/* unregister */
down
(
&
devlist_lock
);
mutex_lock
(
&
devlist_lock
);
list_del
(
&
dev
->
devlist
);
list_for_each
(
item
,
&
mops_list
)
{
mops
=
list_entry
(
item
,
struct
saa7134_mpeg_ops
,
next
);
mpeg_ops_detach
(
mops
,
dev
);
}
up
(
&
devlist_lock
);
mutex_unlock
(
&
devlist_lock
);
saa7134_devcount
--
;
saa7134_i2c_unregister
(
dev
);
...
...
@@ -1071,13 +1072,13 @@ int saa7134_ts_register(struct saa7134_mpeg_ops *ops)
struct
list_head
*
item
;
struct
saa7134_dev
*
dev
;
down
(
&
devlist_lock
);
mutex_lock
(
&
devlist_lock
);
list_for_each
(
item
,
&
saa7134_devlist
)
{
dev
=
list_entry
(
item
,
struct
saa7134_dev
,
devlist
);
mpeg_ops_attach
(
ops
,
dev
);
}
list_add_tail
(
&
ops
->
next
,
&
mops_list
);
up
(
&
devlist_lock
);
mutex_unlock
(
&
devlist_lock
);
return
0
;
}
...
...
@@ -1086,13 +1087,13 @@ void saa7134_ts_unregister(struct saa7134_mpeg_ops *ops)
struct
list_head
*
item
;
struct
saa7134_dev
*
dev
;
down
(
&
devlist_lock
);
mutex_lock
(
&
devlist_lock
);
list_del
(
&
ops
->
next
);
list_for_each
(
item
,
&
saa7134_devlist
)
{
dev
=
list_entry
(
item
,
struct
saa7134_dev
,
devlist
);
mpeg_ops_detach
(
ops
,
dev
);
}
up
(
&
devlist_lock
);
mutex_unlock
(
&
devlist_lock
);
}
EXPORT_SYMBOL
(
saa7134_ts_register
);
...
...
drivers/media/video/saa7134/saa7134-tvaudio.c
View file @
d04ae27b
...
...
@@ -180,8 +180,8 @@ static void tvaudio_init(struct saa7134_dev *dev)
saa_writeb
(
SAA7134_AUDIO_CLOCK0
,
clock
&
0xff
);
saa_writeb
(
SAA7134_AUDIO_CLOCK1
,
(
clock
>>
8
)
&
0xff
);
saa_writeb
(
SAA7134_AUDIO_CLOCK2
,
(
clock
>>
16
)
&
0xff
);
/
/ frame locked audio was reported not to be reliable
saa_writeb
(
SAA7134_AUDIO_PLL_CTRL
,
0x0
2
);
/
* frame locked audio is mandatory for NICAM */
saa_writeb
(
SAA7134_AUDIO_PLL_CTRL
,
0x0
1
);
saa_writeb
(
SAA7134_NICAM_ERROR_LOW
,
0x14
);
saa_writeb
(
SAA7134_NICAM_ERROR_HIGH
,
0x50
);
...
...
@@ -809,7 +809,12 @@ static int tvaudio_thread_ddep(void *data)
dprintk
(
"ddep override: %s
\n
"
,
stdres
[
audio_ddep
]);
}
else
if
(
&
card
(
dev
).
radio
==
dev
->
input
)
{
dprintk
(
"FM Radio
\n
"
);
norms
=
(
0x0f
<<
2
)
|
0x01
;
if
(
dev
->
tuner_type
==
TUNER_PHILIPS_TDA8290
)
{
norms
=
(
0x11
<<
2
)
|
0x01
;
saa_dsp_writel
(
dev
,
0x42c
>>
2
,
0x729555
);
}
else
{
norms
=
(
0x0f
<<
2
)
|
0x01
;
}
}
else
{
/* (let chip) scan for sound carrier */
norms
=
0
;
...
...
drivers/media/video/tvp5150.c
View file @
d04ae27b
...
...
@@ -634,7 +634,7 @@ struct i2c_vbi_ram_value {
unsigned
char
values
[
26
];
};
struct
i2c_vbi_ram_value
vbi_ram_default
[]
=
st
atic
st
ruct
i2c_vbi_ram_value
vbi_ram_default
[]
=
{
{
0x010
,
/* WST SECAM 6 */
{
0xaa
,
0xaa
,
0xff
,
0xff
,
0xe7
,
0x2e
,
0x20
,
0x26
,
0xe6
,
0xb4
,
0x0e
,
0x0
,
0x0
,
0x0
,
0x10
,
0x0
}
...
...
drivers/media/video/videodev.c
View file @
d04ae27b
...
...
@@ -29,7 +29,6 @@
#include <linux/devfs_fs_kernel.h>
#include <asm/uaccess.h>
#include <asm/system.h>
#include <asm/semaphore.h>
#include <linux/videodev.h>
...
...
@@ -83,7 +82,7 @@ static struct class video_class = {
*/
static
struct
video_device
*
video_device
[
VIDEO_NUM_DEVICES
];
static
DE
CLAR
E_MUTEX
(
videodev_lock
);
static
DE
FIN
E_MUTEX
(
videodev_lock
);
struct
video_device
*
video_devdata
(
struct
file
*
file
)
{
...
...
@@ -102,15 +101,15 @@ static int video_open(struct inode *inode, struct file *file)
if
(
minor
>=
VIDEO_NUM_DEVICES
)
return
-
ENODEV
;
down
(
&
videodev_lock
);
mutex_lock
(
&
videodev_lock
);
vfl
=
video_device
[
minor
];
if
(
vfl
==
NULL
)
{
up
(
&
videodev_lock
);
mutex_unlock
(
&
videodev_lock
);
request_module
(
"char-major-%d-%d"
,
VIDEO_MAJOR
,
minor
);
down
(
&
videodev_lock
);
mutex_lock
(
&
videodev_lock
);
vfl
=
video_device
[
minor
];
if
(
vfl
==
NULL
)
{
up
(
&
videodev_lock
);
mutex_unlock
(
&
videodev_lock
);
return
-
ENODEV
;
}
}
...
...
@@ -123,7 +122,7 @@ static int video_open(struct inode *inode, struct file *file)
file
->
f_op
=
fops_get
(
old_fops
);
}
fops_put
(
old_fops
);
up
(
&
videodev_lock
);
mutex_unlock
(
&
videodev_lock
);
return
err
;
}
...
...
@@ -304,12 +303,12 @@ int video_register_device(struct video_device *vfd, int type, int nr)
}
/* pick a minor number */
down
(
&
videodev_lock
);
mutex_lock
(
&
videodev_lock
);
if
(
nr
>=
0
&&
nr
<
end
-
base
)
{
/* use the one the driver asked for */
i
=
base
+
nr
;
if
(
NULL
!=
video_device
[
i
])
{
up
(
&
videodev_lock
);
mutex_unlock
(
&
videodev_lock
);
return
-
ENFILE
;
}
}
else
{
...
...
@@ -318,13 +317,13 @@ int video_register_device(struct video_device *vfd, int type, int nr)
if
(
NULL
==
video_device
[
i
])
break
;
if
(
i
==
end
)
{
up
(
&
videodev_lock
);
mutex_unlock
(
&
videodev_lock
);
return
-
ENFILE
;
}
}
video_device
[
i
]
=
vfd
;
vfd
->
minor
=
i
;
up
(
&
videodev_lock
);
mutex_unlock
(
&
videodev_lock
);
sprintf
(
vfd
->
devfs_name
,
"v4l/%s%d"
,
name_base
,
i
-
base
);
devfs_mk_cdev
(
MKDEV
(
VIDEO_MAJOR
,
vfd
->
minor
),
...
...
@@ -362,14 +361,14 @@ int video_register_device(struct video_device *vfd, int type, int nr)
void
video_unregister_device
(
struct
video_device
*
vfd
)
{
down
(
&
videodev_lock
);
mutex_lock
(
&
videodev_lock
);
if
(
video_device
[
vfd
->
minor
]
!=
vfd
)
panic
(
"videodev: bad unregister"
);
devfs_remove
(
vfd
->
devfs_name
);
video_device
[
vfd
->
minor
]
=
NULL
;
class_device_unregister
(
&
vfd
->
class_dev
);
up
(
&
videodev_lock
);
mutex_unlock
(
&
videodev_lock
);
}
...
...
include/linux/i2c-id.h
View file @
d04ae27b
...
...
@@ -104,6 +104,10 @@
#define I2C_DRIVERID_AKITAIOEXP 74
/* IO Expander on Sharp SL-C1000 */
#define I2C_DRIVERID_INFRARED 75
/* I2C InfraRed on Video boards */
#define I2C_DRIVERID_TVP5150 76
/* TVP5150 video decoder */
#define I2C_DRIVERID_WM8739 77
/* wm8739 audio processor */
#define I2C_DRIVERID_UPD64083 78
/* upd64083 video processor */
#define I2C_DRIVERID_UPD64031A 79
/* upd64031a video processor */
#define I2C_DRIVERID_SAA717X 80
/* saa717x video encoder */
#define I2C_DRIVERID_I2CDEV 900
#define I2C_DRIVERID_ARP 902
/* SMBus ARP Client */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment