Merge branch 'master' of ssh://master.kernel.org/pub/scm/linux/kernel/git/mchehab/v4l-dvb
* 'master' of ssh://master.kernel.org/pub/scm/linux/kernel/git/mchehab/v4l-dvb: V4L/DVB (6220a): fix build error for et61x251 driver V4L/DVB (6188): Avoid a NULL pointer dereference during mpeg_open() V4L/DVB (6173a): Documentation: Remove reference to dead "cpia_pp=" boot-time option V4L/DVB (6148): Fix a warning at saa7191_probe V4L/DVB (6147): Pwc: Fix a broken debug message V4L/DVB (6144): Fix mux setup for composite sound on AverTV 307 V4L/DVB (6095): ivtv: fix VIDIOC_G_ENC_INDEX flag handling
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
Kernel Parameters
|
Kernel Parameters
|
||||||
~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
The following is a consolidated list of the kernel parameters as implemented
|
The following is a consolidated list of the kernel parameters as implemented
|
||||||
(mostly) by the __setup() macro and sorted into English Dictionary order
|
(mostly) by the __setup() macro and sorted into English Dictionary order
|
||||||
@@ -468,9 +468,6 @@ and is between 256 and 4096 characters. It is defined in the file
|
|||||||
Format:
|
Format:
|
||||||
<first_slot>,<last_slot>,<port>,<enum_bit>[,<debug>]
|
<first_slot>,<last_slot>,<port>,<enum_bit>[,<debug>]
|
||||||
|
|
||||||
cpia_pp= [HW,PPT]
|
|
||||||
Format: { parport<nr> | auto | none }
|
|
||||||
|
|
||||||
crashkernel=nn[KMG]@ss[KMG]
|
crashkernel=nn[KMG]@ss[KMG]
|
||||||
[KNL] Reserve a chunk of physical memory to
|
[KNL] Reserve a chunk of physical memory to
|
||||||
hold a kernel to switch to with kexec on panic.
|
hold a kernel to switch to with kexec on panic.
|
||||||
@@ -1465,7 +1462,7 @@ and is between 256 and 4096 characters. It is defined in the file
|
|||||||
|
|
||||||
reboot= [BUGS=X86-32,BUGS=ARM,BUGS=IA-64] Rebooting mode
|
reboot= [BUGS=X86-32,BUGS=ARM,BUGS=IA-64] Rebooting mode
|
||||||
Format: <reboot_mode>[,<reboot_mode2>[,...]]
|
Format: <reboot_mode>[,<reboot_mode2>[,...]]
|
||||||
See arch/*/kernel/reboot.c or arch/*/kernel/process.c
|
See arch/*/kernel/reboot.c or arch/*/kernel/process.c
|
||||||
|
|
||||||
reserve= [KNL,BUGS] Force the kernel to ignore some iomem area
|
reserve= [KNL,BUGS] Force the kernel to ignore some iomem area
|
||||||
|
|
||||||
@@ -1553,12 +1550,12 @@ and is between 256 and 4096 characters. It is defined in the file
|
|||||||
|
|
||||||
selinux_compat_net =
|
selinux_compat_net =
|
||||||
[SELINUX] Set initial selinux_compat_net flag value.
|
[SELINUX] Set initial selinux_compat_net flag value.
|
||||||
Format: { "0" | "1" }
|
Format: { "0" | "1" }
|
||||||
0 -- use new secmark-based packet controls
|
0 -- use new secmark-based packet controls
|
||||||
1 -- use legacy packet controls
|
1 -- use legacy packet controls
|
||||||
Default value is 0 (preferred).
|
Default value is 0 (preferred).
|
||||||
Value can be changed at runtime via
|
Value can be changed at runtime via
|
||||||
/selinux/compat_net.
|
/selinux/compat_net.
|
||||||
|
|
||||||
serialnumber [BUGS=X86-32]
|
serialnumber [BUGS=X86-32]
|
||||||
|
|
||||||
@@ -1957,7 +1954,7 @@ and is between 256 and 4096 characters. It is defined in the file
|
|||||||
norandmaps Don't use address space randomization
|
norandmaps Don't use address space randomization
|
||||||
Equivalent to echo 0 > /proc/sys/kernel/randomize_va_space
|
Equivalent to echo 0 > /proc/sys/kernel/randomize_va_space
|
||||||
|
|
||||||
unwind_debug=N N > 0 will enable dwarf2 unwinder debugging
|
unwind_debug=N N > 0 will enable dwarf2 unwinder debugging
|
||||||
This is useful to get more information why
|
This is useful to get more information why
|
||||||
you got a "dwarf2 unwinder stuck"
|
you got a "dwarf2 unwinder stuck"
|
||||||
|
|
||||||
|
@@ -407,8 +407,10 @@ Description
|
|||||||
u32 length; // Length of this frame
|
u32 length; // Length of this frame
|
||||||
u32 offset_low; // Offset in the file of the
|
u32 offset_low; // Offset in the file of the
|
||||||
u32 offset_high; // start of this frame
|
u32 offset_high; // start of this frame
|
||||||
u32 mask1; // Bits 0-1 are the type mask:
|
u32 mask1; // Bits 0-2 are the type mask:
|
||||||
// 1=I, 2=P, 4=B
|
// 1=I, 2=P, 4=B
|
||||||
|
// 0=End of Program Index, other fields
|
||||||
|
// are invalid.
|
||||||
u32 pts; // The PTS of the frame
|
u32 pts; // The PTS of the frame
|
||||||
u32 mask2; // Bit 0 is bit 32 of the pts.
|
u32 mask2; // Bit 0 is bit 32 of the pts.
|
||||||
};
|
};
|
||||||
|
@@ -580,7 +580,7 @@ struct cx8802_dev * cx8802_get_device(struct inode *inode)
|
|||||||
|
|
||||||
list_for_each(list,&cx8802_devlist) {
|
list_for_each(list,&cx8802_devlist) {
|
||||||
h = list_entry(list, struct cx8802_dev, devlist);
|
h = list_entry(list, struct cx8802_dev, devlist);
|
||||||
if (h->mpeg_dev->minor == minor)
|
if (h->mpeg_dev && h->mpeg_dev->minor == minor)
|
||||||
return h;
|
return h;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -190,7 +190,9 @@ static void ivtv_update_pgm_info(struct ivtv *itv)
|
|||||||
int idx = (itv->pgm_info_write_idx + i) % itv->pgm_info_num;
|
int idx = (itv->pgm_info_write_idx + i) % itv->pgm_info_num;
|
||||||
struct v4l2_enc_idx_entry *e = itv->pgm_info + idx;
|
struct v4l2_enc_idx_entry *e = itv->pgm_info + idx;
|
||||||
u32 addr = itv->pgm_info_offset + 4 + idx * 24;
|
u32 addr = itv->pgm_info_offset + 4 + idx * 24;
|
||||||
const int mapping[] = { V4L2_ENC_IDX_FRAME_P, V4L2_ENC_IDX_FRAME_I, V4L2_ENC_IDX_FRAME_B, 0 };
|
const int mapping[8] = { -1, V4L2_ENC_IDX_FRAME_I, V4L2_ENC_IDX_FRAME_P, -1,
|
||||||
|
V4L2_ENC_IDX_FRAME_B, -1, -1, -1 };
|
||||||
|
// 1=I, 2=P, 4=B
|
||||||
|
|
||||||
e->offset = read_enc(addr + 4) + ((u64)read_enc(addr + 8) << 32);
|
e->offset = read_enc(addr + 4) + ((u64)read_enc(addr + 8) << 32);
|
||||||
if (e->offset > itv->mpg_data_received) {
|
if (e->offset > itv->mpg_data_received) {
|
||||||
@@ -199,7 +201,7 @@ static void ivtv_update_pgm_info(struct ivtv *itv)
|
|||||||
e->offset += itv->vbi_data_inserted;
|
e->offset += itv->vbi_data_inserted;
|
||||||
e->length = read_enc(addr);
|
e->length = read_enc(addr);
|
||||||
e->pts = read_enc(addr + 16) + ((u64)(read_enc(addr + 20) & 1) << 32);
|
e->pts = read_enc(addr + 16) + ((u64)(read_enc(addr + 20) & 1) << 32);
|
||||||
e->flags = mapping[read_enc(addr + 12) & 3];
|
e->flags = mapping[read_enc(addr + 12) & 7];
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
itv->pgm_info_write_idx = (itv->pgm_info_write_idx + i) % itv->pgm_info_num;
|
itv->pgm_info_write_idx = (itv->pgm_info_write_idx + i) % itv->pgm_info_num;
|
||||||
|
@@ -1099,14 +1099,21 @@ int ivtv_v4l2_ioctls(struct ivtv *itv, struct file *filp, unsigned int cmd, void
|
|||||||
|
|
||||||
case VIDIOC_G_ENC_INDEX: {
|
case VIDIOC_G_ENC_INDEX: {
|
||||||
struct v4l2_enc_idx *idx = arg;
|
struct v4l2_enc_idx *idx = arg;
|
||||||
|
struct v4l2_enc_idx_entry *e = idx->entry;
|
||||||
|
int entries;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
idx->entries = (itv->pgm_info_write_idx + IVTV_MAX_PGM_INDEX - itv->pgm_info_read_idx) %
|
entries = (itv->pgm_info_write_idx + IVTV_MAX_PGM_INDEX - itv->pgm_info_read_idx) %
|
||||||
IVTV_MAX_PGM_INDEX;
|
IVTV_MAX_PGM_INDEX;
|
||||||
if (idx->entries > V4L2_ENC_IDX_ENTRIES)
|
if (entries > V4L2_ENC_IDX_ENTRIES)
|
||||||
idx->entries = V4L2_ENC_IDX_ENTRIES;
|
entries = V4L2_ENC_IDX_ENTRIES;
|
||||||
for (i = 0; i < idx->entries; i++) {
|
idx->entries = 0;
|
||||||
idx->entry[i] = itv->pgm_info[(itv->pgm_info_read_idx + i) % IVTV_MAX_PGM_INDEX];
|
for (i = 0; i < entries; i++) {
|
||||||
|
*e = itv->pgm_info[(itv->pgm_info_read_idx + i) % IVTV_MAX_PGM_INDEX];
|
||||||
|
if ((e->flags & V4L2_ENC_IDX_FRAME_MASK) <= V4L2_ENC_IDX_FRAME_B) {
|
||||||
|
idx->entries++;
|
||||||
|
e++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
itv->pgm_info_read_idx = (itv->pgm_info_read_idx + idx->entries) % IVTV_MAX_PGM_INDEX;
|
itv->pgm_info_read_idx = (itv->pgm_info_read_idx + idx->entries) % IVTV_MAX_PGM_INDEX;
|
||||||
break;
|
break;
|
||||||
|
@@ -1243,7 +1243,7 @@ static int pwc_video_close(struct inode *inode, struct file *file)
|
|||||||
PWC_ERROR("Failed to power down camera (%d)\n", i);
|
PWC_ERROR("Failed to power down camera (%d)\n", i);
|
||||||
}
|
}
|
||||||
pdev->vopen--;
|
pdev->vopen--;
|
||||||
PWC_DEBUG_OPEN("<< video_close() vopen=%d\n", i);
|
PWC_DEBUG_OPEN("<< video_close() vopen=%d\n", pdev->vopen);
|
||||||
} else {
|
} else {
|
||||||
pwc_cleanup(pdev);
|
pwc_cleanup(pdev);
|
||||||
/* Free memory (don't set pdev to 0 just yet) */
|
/* Free memory (don't set pdev to 0 just yet) */
|
||||||
|
@@ -1537,18 +1537,18 @@ struct saa7134_board saa7134_boards[] = {
|
|||||||
},{
|
},{
|
||||||
.name = name_comp1,
|
.name = name_comp1,
|
||||||
.vmux = 0,
|
.vmux = 0,
|
||||||
.amux = LINE2,
|
.amux = LINE1,
|
||||||
.gpio = 0x00,
|
.gpio = 0x02,
|
||||||
},{
|
},{
|
||||||
.name = name_comp2,
|
.name = name_comp2,
|
||||||
.vmux = 3,
|
.vmux = 3,
|
||||||
.amux = LINE2,
|
.amux = LINE1,
|
||||||
.gpio = 0x00,
|
.gpio = 0x02,
|
||||||
},{
|
},{
|
||||||
.name = name_svideo,
|
.name = name_svideo,
|
||||||
.vmux = 8,
|
.vmux = 8,
|
||||||
.amux = LINE2,
|
.amux = LINE1,
|
||||||
.gpio = 0x00,
|
.gpio = 0x02,
|
||||||
}},
|
}},
|
||||||
.radio = {
|
.radio = {
|
||||||
.name = name_radio,
|
.name = name_radio,
|
||||||
|
@@ -130,7 +130,7 @@ static int saa7191_write_reg(struct i2c_client *client, u8 reg,
|
|||||||
|
|
||||||
/* the first byte of data must be the first subaddress number (register) */
|
/* the first byte of data must be the first subaddress number (register) */
|
||||||
static int saa7191_write_block(struct i2c_client *client,
|
static int saa7191_write_block(struct i2c_client *client,
|
||||||
u8 length, u8 *data)
|
u8 length, const u8 *data)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int ret;
|
int ret;
|
||||||
@@ -592,7 +592,7 @@ static int saa7191_attach(struct i2c_adapter *adap, int addr, int kind)
|
|||||||
if (err)
|
if (err)
|
||||||
goto out_free_decoder;
|
goto out_free_decoder;
|
||||||
|
|
||||||
err = saa7191_write_block(client, sizeof(initseq), (u8 *)initseq);
|
err = saa7191_write_block(client, sizeof(initseq), initseq);
|
||||||
if (err) {
|
if (err) {
|
||||||
printk(KERN_ERR "SAA7191 initialization failed\n");
|
printk(KERN_ERR "SAA7191 initialization failed\n");
|
||||||
goto out_detach_client;
|
goto out_detach_client;
|
||||||
|
@@ -337,6 +337,9 @@ void *priv;
|
|||||||
struct class_device class_dev; /* sysfs */
|
struct class_device class_dev; /* sysfs */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Class-dev to video-device */
|
||||||
|
#define to_video_device(cd) container_of(cd, struct video_device, class_dev)
|
||||||
|
|
||||||
/* Version 2 functions */
|
/* Version 2 functions */
|
||||||
extern int video_register_device(struct video_device *vfd, int type, int nr);
|
extern int video_register_device(struct video_device *vfd, int type, int nr);
|
||||||
void video_unregister_device(struct video_device *);
|
void video_unregister_device(struct video_device *);
|
||||||
@@ -354,11 +357,9 @@ extern int video_usercopy(struct inode *inode, struct file *file,
|
|||||||
int (*func)(struct inode *inode, struct file *file,
|
int (*func)(struct inode *inode, struct file *file,
|
||||||
unsigned int cmd, void *arg));
|
unsigned int cmd, void *arg));
|
||||||
|
|
||||||
|
|
||||||
#ifdef CONFIG_VIDEO_V4L1_COMPAT
|
#ifdef CONFIG_VIDEO_V4L1_COMPAT
|
||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
|
|
||||||
#define to_video_device(cd) container_of(cd, struct video_device, class_dev)
|
|
||||||
static inline int __must_check
|
static inline int __must_check
|
||||||
video_device_create_file(struct video_device *vfd,
|
video_device_create_file(struct video_device *vfd,
|
||||||
struct class_device_attribute *attr)
|
struct class_device_attribute *attr)
|
||||||
|
Reference in New Issue
Block a user