Commit ad552692 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman

Merge gregkh@master.kernel.org:/pub/scm/linux/kernel/git/mchehab/v4l-dvb

parents 20dbfad8 0851fb48
...@@ -393,7 +393,7 @@ static int dst_set_bandwidth(struct dst_state *state, fe_bandwidth_t bandwidth) ...@@ -393,7 +393,7 @@ static int dst_set_bandwidth(struct dst_state *state, fe_bandwidth_t bandwidth)
state->bandwidth = bandwidth; state->bandwidth = bandwidth;
if (state->dst_type != DST_TYPE_IS_TERR) if (state->dst_type != DST_TYPE_IS_TERR)
return 0; return -EOPNOTSUPP;
switch (bandwidth) { switch (bandwidth) {
case BANDWIDTH_6_MHZ: case BANDWIDTH_6_MHZ:
...@@ -462,7 +462,7 @@ static int dst_set_symbolrate(struct dst_state *state, u32 srate) ...@@ -462,7 +462,7 @@ static int dst_set_symbolrate(struct dst_state *state, u32 srate)
state->symbol_rate = srate; state->symbol_rate = srate;
if (state->dst_type == DST_TYPE_IS_TERR) { if (state->dst_type == DST_TYPE_IS_TERR) {
return 0; return -EOPNOTSUPP;
} }
dprintk(verbose, DST_INFO, 1, "set symrate %u", srate); dprintk(verbose, DST_INFO, 1, "set symrate %u", srate);
srate /= 1000; srate /= 1000;
...@@ -504,7 +504,7 @@ static int dst_set_symbolrate(struct dst_state *state, u32 srate) ...@@ -504,7 +504,7 @@ static int dst_set_symbolrate(struct dst_state *state, u32 srate)
static int dst_set_modulation(struct dst_state *state, fe_modulation_t modulation) static int dst_set_modulation(struct dst_state *state, fe_modulation_t modulation)
{ {
if (state->dst_type != DST_TYPE_IS_CABLE) if (state->dst_type != DST_TYPE_IS_CABLE)
return 0; return -EOPNOTSUPP;
state->modulation = modulation; state->modulation = modulation;
switch (modulation) { switch (modulation) {
...@@ -1234,7 +1234,7 @@ int dst_command(struct dst_state *state, u8 *data, u8 len) ...@@ -1234,7 +1234,7 @@ int dst_command(struct dst_state *state, u8 *data, u8 len)
goto error; goto error;
} }
if (write_dst(state, data, len)) { if (write_dst(state, data, len)) {
dprintk(verbose, DST_INFO, 1, "Tring to recover.. "); dprintk(verbose, DST_INFO, 1, "Trying to recover.. ");
if ((dst_error_recovery(state)) < 0) { if ((dst_error_recovery(state)) < 0) {
dprintk(verbose, DST_ERROR, 1, "Recovery Failed."); dprintk(verbose, DST_ERROR, 1, "Recovery Failed.");
goto error; goto error;
...@@ -1328,15 +1328,13 @@ static int dst_tone_power_cmd(struct dst_state *state) ...@@ -1328,15 +1328,13 @@ static int dst_tone_power_cmd(struct dst_state *state)
{ {
u8 paket[8] = { 0x00, 0x09, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00 }; u8 paket[8] = { 0x00, 0x09, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00 };
if (state->dst_type == DST_TYPE_IS_TERR) if (state->dst_type != DST_TYPE_IS_SAT)
return 0; return -EOPNOTSUPP;
paket[4] = state->tx_tuna[4]; paket[4] = state->tx_tuna[4];
paket[2] = state->tx_tuna[2]; paket[2] = state->tx_tuna[2];
paket[3] = state->tx_tuna[3]; paket[3] = state->tx_tuna[3];
paket[7] = dst_check_sum (paket, 7); paket[7] = dst_check_sum (paket, 7);
dst_command(state, paket, 8); return dst_command(state, paket, 8);
return 0;
} }
static int dst_get_tuna(struct dst_state *state) static int dst_get_tuna(struct dst_state *state)
...@@ -1465,7 +1463,7 @@ static int dst_set_diseqc(struct dvb_frontend *fe, struct dvb_diseqc_master_cmd ...@@ -1465,7 +1463,7 @@ static int dst_set_diseqc(struct dvb_frontend *fe, struct dvb_diseqc_master_cmd
u8 paket[8] = { 0x00, 0x08, 0x04, 0xe0, 0x10, 0x38, 0xf0, 0xec }; u8 paket[8] = { 0x00, 0x08, 0x04, 0xe0, 0x10, 0x38, 0xf0, 0xec };
if (state->dst_type != DST_TYPE_IS_SAT) if (state->dst_type != DST_TYPE_IS_SAT)
return 0; return -EOPNOTSUPP;
if (cmd->msg_len > 0 && cmd->msg_len < 5) if (cmd->msg_len > 0 && cmd->msg_len < 5)
memcpy(&paket[3], cmd->msg, cmd->msg_len); memcpy(&paket[3], cmd->msg, cmd->msg_len);
else if (cmd->msg_len == 5 && state->dst_hw_cap & DST_TYPE_HAS_DISEQC5) else if (cmd->msg_len == 5 && state->dst_hw_cap & DST_TYPE_HAS_DISEQC5)
...@@ -1473,18 +1471,17 @@ static int dst_set_diseqc(struct dvb_frontend *fe, struct dvb_diseqc_master_cmd ...@@ -1473,18 +1471,17 @@ static int dst_set_diseqc(struct dvb_frontend *fe, struct dvb_diseqc_master_cmd
else else
return -EINVAL; return -EINVAL;
paket[7] = dst_check_sum(&paket[0], 7); paket[7] = dst_check_sum(&paket[0], 7);
dst_command(state, paket, 8); return dst_command(state, paket, 8);
return 0;
} }
static int dst_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage) static int dst_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage)
{ {
int need_cmd; int need_cmd, retval = 0;
struct dst_state *state = fe->demodulator_priv; struct dst_state *state = fe->demodulator_priv;
state->voltage = voltage; state->voltage = voltage;
if (state->dst_type != DST_TYPE_IS_SAT) if (state->dst_type != DST_TYPE_IS_SAT)
return 0; return -EOPNOTSUPP;
need_cmd = 0; need_cmd = 0;
...@@ -1506,9 +1503,9 @@ static int dst_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage) ...@@ -1506,9 +1503,9 @@ static int dst_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage)
} }
if (need_cmd) if (need_cmd)
dst_tone_power_cmd(state); retval = dst_tone_power_cmd(state);
return 0; return retval;
} }
static int dst_set_tone(struct dvb_frontend *fe, fe_sec_tone_mode_t tone) static int dst_set_tone(struct dvb_frontend *fe, fe_sec_tone_mode_t tone)
...@@ -1517,7 +1514,7 @@ static int dst_set_tone(struct dvb_frontend *fe, fe_sec_tone_mode_t tone) ...@@ -1517,7 +1514,7 @@ static int dst_set_tone(struct dvb_frontend *fe, fe_sec_tone_mode_t tone)
state->tone = tone; state->tone = tone;
if (state->dst_type != DST_TYPE_IS_SAT) if (state->dst_type != DST_TYPE_IS_SAT)
return 0; return -EOPNOTSUPP;
switch (tone) { switch (tone) {
case SEC_TONE_OFF: case SEC_TONE_OFF:
...@@ -1533,9 +1530,7 @@ static int dst_set_tone(struct dvb_frontend *fe, fe_sec_tone_mode_t tone) ...@@ -1533,9 +1530,7 @@ static int dst_set_tone(struct dvb_frontend *fe, fe_sec_tone_mode_t tone)
default: default:
return -EINVAL; return -EINVAL;
} }
dst_tone_power_cmd(state); return dst_tone_power_cmd(state);
return 0;
} }
static int dst_send_burst(struct dvb_frontend *fe, fe_sec_mini_cmd_t minicmd) static int dst_send_burst(struct dvb_frontend *fe, fe_sec_mini_cmd_t minicmd)
...@@ -1543,7 +1538,7 @@ static int dst_send_burst(struct dvb_frontend *fe, fe_sec_mini_cmd_t minicmd) ...@@ -1543,7 +1538,7 @@ static int dst_send_burst(struct dvb_frontend *fe, fe_sec_mini_cmd_t minicmd)
struct dst_state *state = fe->demodulator_priv; struct dst_state *state = fe->demodulator_priv;
if (state->dst_type != DST_TYPE_IS_SAT) if (state->dst_type != DST_TYPE_IS_SAT)
return 0; return -EOPNOTSUPP;
state->minicmd = minicmd; state->minicmd = minicmd;
switch (minicmd) { switch (minicmd) {
case SEC_MINI_A: case SEC_MINI_A:
...@@ -1553,9 +1548,7 @@ static int dst_send_burst(struct dvb_frontend *fe, fe_sec_mini_cmd_t minicmd) ...@@ -1553,9 +1548,7 @@ static int dst_send_burst(struct dvb_frontend *fe, fe_sec_mini_cmd_t minicmd)
state->tx_tuna[3] = 0xff; state->tx_tuna[3] = 0xff;
break; break;
} }
dst_tone_power_cmd(state); return dst_tone_power_cmd(state);
return 0;
} }
...@@ -1608,28 +1601,31 @@ static int dst_read_signal_strength(struct dvb_frontend *fe, u16 *strength) ...@@ -1608,28 +1601,31 @@ static int dst_read_signal_strength(struct dvb_frontend *fe, u16 *strength)
{ {
struct dst_state *state = fe->demodulator_priv; struct dst_state *state = fe->demodulator_priv;
dst_get_signal(state); int retval = dst_get_signal(state);
*strength = state->decode_strength; *strength = state->decode_strength;
return 0; return retval;
} }
static int dst_read_snr(struct dvb_frontend *fe, u16 *snr) static int dst_read_snr(struct dvb_frontend *fe, u16 *snr)
{ {
struct dst_state *state = fe->demodulator_priv; struct dst_state *state = fe->demodulator_priv;
dst_get_signal(state); int retval = dst_get_signal(state);
*snr = state->decode_snr; *snr = state->decode_snr;
return 0; return retval;
} }
static int dst_set_frontend(struct dvb_frontend *fe, struct dvb_frontend_parameters *p) static int dst_set_frontend(struct dvb_frontend *fe, struct dvb_frontend_parameters *p)
{ {
int retval = -EINVAL;
struct dst_state *state = fe->demodulator_priv; struct dst_state *state = fe->demodulator_priv;
if (p != NULL) { if (p != NULL) {
dst_set_freq(state, p->frequency); retval = dst_set_freq(state, p->frequency);
if(retval != 0)
return retval;
dprintk(verbose, DST_DEBUG, 1, "Set Frequency=[%d]", p->frequency); dprintk(verbose, DST_DEBUG, 1, "Set Frequency=[%d]", p->frequency);
if (state->dst_type == DST_TYPE_IS_SAT) { if (state->dst_type == DST_TYPE_IS_SAT) {
...@@ -1647,10 +1643,10 @@ static int dst_set_frontend(struct dvb_frontend *fe, struct dvb_frontend_paramet ...@@ -1647,10 +1643,10 @@ static int dst_set_frontend(struct dvb_frontend *fe, struct dvb_frontend_paramet
dst_set_symbolrate(state, p->u.qam.symbol_rate); dst_set_symbolrate(state, p->u.qam.symbol_rate);
dst_set_modulation(state, p->u.qam.modulation); dst_set_modulation(state, p->u.qam.modulation);
} }
dst_write_tuna(fe); retval = dst_write_tuna(fe);
} }
return 0; return retval;
} }
static int dst_tune_frontend(struct dvb_frontend* fe, static int dst_tune_frontend(struct dvb_frontend* fe,
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
# Makefile for the kernel DVB device drivers. # Makefile for the kernel DVB device drivers.
# #
dvb-core-objs = dvbdev.o dmxdev.o dvb_demux.o dvb_filter.o \ dvb-core-objs := dvbdev.o dmxdev.o dvb_demux.o dvb_filter.o \
dvb_ca_en50221.o dvb_frontend.o \ dvb_ca_en50221.o dvb_frontend.o \
dvb_net.o dvb_ringbuffer.o dvb_math.o dvb_net.o dvb_ringbuffer.o dvb_math.o
......
...@@ -350,5 +350,15 @@ config RADIO_ZOLTRIX_PORT ...@@ -350,5 +350,15 @@ config RADIO_ZOLTRIX_PORT
help help
Enter the I/O port of your Zoltrix radio card. Enter the I/O port of your Zoltrix radio card.
endmenu config USB_DSBR
tristate "D-Link USB FM radio support (EXPERIMENTAL)"
depends on USB && VIDEO_V4L1 && EXPERIMENTAL
---help---
Say Y here if you want to connect this type of radio to your
computer's USB port. Note that the audio is not digital, and
you must connect the line out connector to a sound card or a
set of speakers.
To compile this driver as a module, choose M here: the
module will be called dsbr100.
endmenu
...@@ -20,5 +20,6 @@ obj-$(CONFIG_RADIO_GEMTEK) += radio-gemtek.o ...@@ -20,5 +20,6 @@ obj-$(CONFIG_RADIO_GEMTEK) += radio-gemtek.o
obj-$(CONFIG_RADIO_GEMTEK_PCI) += radio-gemtek-pci.o obj-$(CONFIG_RADIO_GEMTEK_PCI) += radio-gemtek-pci.o
obj-$(CONFIG_RADIO_TRUST) += radio-trust.o obj-$(CONFIG_RADIO_TRUST) += radio-trust.o
obj-$(CONFIG_RADIO_MAESTRO) += radio-maestro.o obj-$(CONFIG_RADIO_MAESTRO) += radio-maestro.o
obj-$(CONFIG_USB_DSBR) += dsbr100.o
EXTRA_CFLAGS += -Isound EXTRA_CFLAGS += -Isound
...@@ -449,18 +449,6 @@ source "drivers/media/video/pvrusb2/Kconfig" ...@@ -449,18 +449,6 @@ source "drivers/media/video/pvrusb2/Kconfig"
source "drivers/media/video/em28xx/Kconfig" source "drivers/media/video/em28xx/Kconfig"
config USB_DSBR
tristate "D-Link USB FM radio support (EXPERIMENTAL)"
depends on USB && VIDEO_V4L1 && EXPERIMENTAL
---help---
Say Y here if you want to connect this type of radio to your
computer's USB port. Note that the audio is not digital, and
you must connect the line out connector to a sound card or a
set of speakers.
To compile this driver as a module, choose M here: the
module will be called dsbr100.
source "drivers/media/video/usbvideo/Kconfig" source "drivers/media/video/usbvideo/Kconfig"
source "drivers/media/video/et61x251/Kconfig" source "drivers/media/video/et61x251/Kconfig"
......
...@@ -77,7 +77,6 @@ obj-$(CONFIG_VIDEO_UPD64083) += upd64083.o ...@@ -77,7 +77,6 @@ obj-$(CONFIG_VIDEO_UPD64083) += upd64083.o
obj-$(CONFIG_VIDEO_CX2341X) += cx2341x.o obj-$(CONFIG_VIDEO_CX2341X) += cx2341x.o
obj-$(CONFIG_USB_DABUSB) += dabusb.o obj-$(CONFIG_USB_DABUSB) += dabusb.o
obj-$(CONFIG_USB_DSBR) += dsbr100.o
obj-$(CONFIG_USB_OV511) += ov511.o obj-$(CONFIG_USB_OV511) += ov511.o
obj-$(CONFIG_USB_SE401) += se401.o obj-$(CONFIG_USB_SE401) += se401.o
obj-$(CONFIG_USB_STV680) += stv680.o obj-$(CONFIG_USB_STV680) += stv680.o
...@@ -91,6 +90,7 @@ obj-$(CONFIG_USB_ZC0301) += zc0301/ ...@@ -91,6 +90,7 @@ obj-$(CONFIG_USB_ZC0301) += zc0301/
obj-$(CONFIG_USB_IBMCAM) += usbvideo/ obj-$(CONFIG_USB_IBMCAM) += usbvideo/
obj-$(CONFIG_USB_KONICAWC) += usbvideo/ obj-$(CONFIG_USB_KONICAWC) += usbvideo/
obj-$(CONFIG_USB_VICAM) += usbvideo/ obj-$(CONFIG_USB_VICAM) += usbvideo/
obj-$(CONFIG_USB_QUICKCAM_MESSENGER) += usbvideo/
obj-$(CONFIG_VIDEO_VIVI) += vivi.o obj-$(CONFIG_VIDEO_VIVI) += vivi.o
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
#ifdef CONFIG_VIDEO_V4L1_COMPAT
struct video_tuner32 { struct video_tuner32 {
compat_int_t tuner; compat_int_t tuner;
char name[32]; char name[32];
...@@ -107,6 +107,7 @@ struct video_window32 { ...@@ -107,6 +107,7 @@ struct video_window32 {
compat_caddr_t clips; compat_caddr_t clips;
compat_int_t clipcount; compat_int_t clipcount;
}; };
#endif
static int native_ioctl(struct file *file, unsigned int cmd, unsigned long arg) static int native_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
{ {
...@@ -124,6 +125,7 @@ static int native_ioctl(struct file *file, unsigned int cmd, unsigned long arg) ...@@ -124,6 +125,7 @@ static int native_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
} }
#ifdef CONFIG_VIDEO_V4L1_COMPAT
/* You get back everything except the clips... */ /* You get back everything except the clips... */
static int put_video_window32(struct video_window *kp, struct video_window32 __user *up) static int put_video_window32(struct video_window *kp, struct video_window32 __user *up)
{ {
...@@ -138,6 +140,7 @@ static int put_video_window32(struct video_window *kp, struct video_window32 __u ...@@ -138,6 +140,7 @@ static int put_video_window32(struct video_window *kp, struct video_window32 __u
return -EFAULT; return -EFAULT;
return 0; return 0;
} }
#endif
struct v4l2_clip32 struct v4l2_clip32
{ {
...@@ -490,6 +493,7 @@ static inline int put_v4l2_input(struct v4l2_input *kp, struct v4l2_input __user ...@@ -490,6 +493,7 @@ static inline int put_v4l2_input(struct v4l2_input *kp, struct v4l2_input __user
return 0; return 0;
} }
#ifdef CONFIG_VIDEO_V4L1_COMPAT
struct video_code32 struct video_code32
{ {
char loadwhat[16]; /* name or tag of file being passed */ char loadwhat[16]; /* name or tag of file being passed */
...@@ -517,6 +521,8 @@ static inline int microcode32(struct video_code *kp, struct video_code32 __user ...@@ -517,6 +521,8 @@ static inline int microcode32(struct video_code *kp, struct video_code32 __user
#define VIDIOCSFREQ32 _IOW('v',15, u32) #define VIDIOCSFREQ32 _IOW('v',15, u32)
#define VIDIOCSMICROCODE32 _IOW('v',27, struct video_code32) #define VIDIOCSMICROCODE32 _IOW('v',27, struct video_code32)
#endif
/* VIDIOC_ENUMINPUT32 is VIDIOC_ENUMINPUT minus 4 bytes of padding alignement */ /* VIDIOC_ENUMINPUT32 is VIDIOC_ENUMINPUT minus 4 bytes of padding alignement */
#define VIDIOC_ENUMINPUT32 VIDIOC_ENUMINPUT - _IOC(0, 0, 0, 4) #define VIDIOC_ENUMINPUT32 VIDIOC_ENUMINPUT - _IOC(0, 0, 0, 4)
#define VIDIOC_G_FMT32 _IOWR ('V', 4, struct v4l2_format32) #define VIDIOC_G_FMT32 _IOWR ('V', 4, struct v4l2_format32)
...@@ -537,6 +543,7 @@ static inline int microcode32(struct video_code *kp, struct video_code32 __user ...@@ -537,6 +543,7 @@ static inline int microcode32(struct video_code *kp, struct video_code32 __user
#define VIDIOC_S_INPUT32 _IOWR ('V', 39, compat_int_t) #define VIDIOC_S_INPUT32 _IOWR ('V', 39, compat_int_t)
#define VIDIOC_TRY_FMT32 _IOWR ('V', 64, struct v4l2_format32) #define VIDIOC_TRY_FMT32 _IOWR ('V', 64, struct v4l2_format32)
#ifdef CONFIG_VIDEO_V4L1_COMPAT
enum { enum {
MaxClips = (~0U-sizeof(struct video_window))/sizeof(struct video_clip) MaxClips = (~0U-sizeof(struct video_window))/sizeof(struct video_clip)
}; };
...@@ -601,14 +608,17 @@ static int do_set_window(struct file *file, unsigned int cmd, unsigned long arg) ...@@ -601,14 +608,17 @@ static int do_set_window(struct file *file, unsigned int cmd, unsigned long arg)
return native_ioctl(file, VIDIOCSWIN, (unsigned long)vw); return native_ioctl(file, VIDIOCSWIN, (unsigned long)vw);
} }
#endif
static int do_video_ioctl(struct file *file, unsigned int cmd, unsigned long arg) static int do_video_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
{ {
union { union {
#ifdef CONFIG_VIDEO_V4L1_COMPAT
struct video_tuner vt; struct video_tuner vt;
struct video_buffer vb; struct video_buffer vb;
struct video_window vw; struct video_window vw;
struct video_code vc; struct video_code vc;
#endif
struct v4l2_format v2f; struct v4l2_format v2f;
struct v4l2_buffer v2b; struct v4l2_buffer v2b;
struct v4l2_framebuffer v2fb; struct v4l2_framebuffer v2fb;
...@@ -624,6 +634,7 @@ static int do_video_ioctl(struct file *file, unsigned int cmd, unsigned long arg ...@@ -624,6 +634,7 @@ static int do_video_ioctl(struct file *file, unsigned int cmd, unsigned long arg
/* First, convert the command. */ /* First, convert the command. */
switch(cmd) { switch(cmd) {
#ifdef CONFIG_VIDEO_V4L1_COMPAT
case VIDIOCGTUNER32: cmd = VIDIOCGTUNER; break; case VIDIOCGTUNER32: cmd = VIDIOCGTUNER; break;
case VIDIOCSTUNER32: cmd = VIDIOCSTUNER; break; case VIDIOCSTUNER32: cmd = VIDIOCSTUNER; break;
case VIDIOCGWIN32: cmd = VIDIOCGWIN; break; case VIDIOCGWIN32: cmd = VIDIOCGWIN; break;
...@@ -631,6 +642,8 @@ static int do_video_ioctl(struct file *file, unsigned int cmd, unsigned long arg ...@@ -631,6 +642,8 @@ static int do_video_ioctl(struct file *file, unsigned int cmd, unsigned long arg
case VIDIOCSFBUF32: cmd = VIDIOCSFBUF; break; case VIDIOCSFBUF32: cmd = VIDIOCSFBUF; break;
case VIDIOCGFREQ32: cmd = VIDIOCGFREQ; break; case VIDIOCGFREQ32: cmd = VIDIOCGFREQ; break;
case VIDIOCSFREQ32: cmd = VIDIOCSFREQ; break; case VIDIOCSFREQ32: cmd = VIDIOCSFREQ; break;
case VIDIOCSMICROCODE32: cmd = VIDIOCSMICROCODE; break;
#endif
case VIDIOC_G_FMT32: cmd = VIDIOC_G_FMT; break; case VIDIOC_G_FMT32: cmd = VIDIOC_G_FMT; break;
case VIDIOC_S_FMT32: cmd = VIDIOC_S_FMT; break; case VIDIOC_S_FMT32: cmd = VIDIOC_S_FMT; break;
case VIDIOC_QUERYBUF32: cmd = VIDIOC_QUERYBUF; break; case VIDIOC_QUERYBUF32: cmd = VIDIOC_QUERYBUF; break;
...@@ -647,10 +660,10 @@ static int do_video_ioctl(struct file *file, unsigned int cmd, unsigned long arg ...@@ -647,10 +660,10 @@ static int do_video_ioctl(struct file *file, unsigned int cmd, unsigned long arg
case VIDIOC_G_INPUT32: cmd = VIDIOC_G_INPUT; break; case VIDIOC_G_INPUT32: cmd = VIDIOC_G_INPUT; break;
case VIDIOC_S_INPUT32: cmd = VIDIOC_S_INPUT; break; case VIDIOC_S_INPUT32: cmd = VIDIOC_S_INPUT; break;
case VIDIOC_TRY_FMT32: cmd = VIDIOC_TRY_FMT; break; case VIDIOC_TRY_FMT32: cmd = VIDIOC_TRY_FMT; break;
case VIDIOCSMICROCODE32: cmd = VIDIOCSMICROCODE; break;
}; };
switch(cmd) { switch(cmd) {
#ifdef CONFIG_VIDEO_V4L1_COMPAT
case VIDIOCSTUNER: case VIDIOCSTUNER:
case VIDIOCGTUNER: case VIDIOCGTUNER:
err = get_video_tuner32(&karg.vt, up); err = get_video_tuner32(&karg.vt, up);
...@@ -664,6 +677,7 @@ static int do_video_ioctl(struct file *file, unsigned int cmd, unsigned long arg ...@@ -664,6 +677,7 @@ static int do_video_ioctl(struct file *file, unsigned int cmd, unsigned long arg
break; break;
case VIDIOCSFREQ: case VIDIOCSFREQ:
#endif
case VIDIOC_S_INPUT: case VIDIOC_S_INPUT:
case VIDIOC_OVERLAY: case VIDIOC_OVERLAY:
case VIDIOC_STREAMON: case VIDIOC_STREAMON:
...@@ -717,18 +731,21 @@ static int do_video_ioctl(struct file *file, unsigned int cmd, unsigned long arg ...@@ -717,18 +731,21 @@ static int do_video_ioctl(struct file *file, unsigned int cmd, unsigned long arg
compatible_arg = 0; compatible_arg = 0;
break; break;
#ifdef CONFIG_VIDEO_V4L1_COMPAT
case VIDIOCGWIN: case VIDIOCGWIN:
case VIDIOCGFBUF: case VIDIOCGFBUF:
case VIDIOCGFREQ: case VIDIOCGFREQ:
#endif
case VIDIOC_G_FBUF: case VIDIOC_G_FBUF:
case VIDIOC_G_INPUT: case VIDIOC_G_INPUT:
compatible_arg = 0; compatible_arg = 0;
#ifdef CONFIG_VIDEO_V4L1_COMPAT
case VIDIOCSMICROCODE: case VIDIOCSMICROCODE:
err = microcode32(&karg.vc, up); err = microcode32(&karg.vc, up);
compatible_arg = 0; compatible_arg = 0;
break; break;
#endif
}; };
if(err) if(err)
goto out; goto out;
...@@ -743,6 +760,7 @@ static int do_video_ioctl(struct file *file, unsigned int cmd, unsigned long arg ...@@ -743,6 +760,7 @@ static int do_video_ioctl(struct file *file, unsigned int cmd, unsigned long arg
} }
if(err == 0) { if(err == 0) {
switch(cmd) { switch(cmd) {
#ifdef CONFIG_VIDEO_V4L1_COMPAT
case VIDIOCGTUNER: case VIDIOCGTUNER:
err = put_video_tuner32(&karg.vt, up); err = put_video_tuner32(&karg.vt, up);
break; break;
...@@ -754,7 +772,7 @@ static int do_video_ioctl(struct file *file, unsigned int cmd, unsigned long arg ...@@ -754,7 +772,7 @@ static int do_video_ioctl(struct file *file, unsigned int cmd, unsigned long arg
case VIDIOCGFBUF: case VIDIOCGFBUF:
err = put_video_buffer32(&karg.vb, up); err = put_video_buffer32(&karg.vb, up);
break; break;
#endif
case VIDIOC_G_FBUF: case VIDIOC_G_FBUF:
err = put_v4l2_framebuffer32(&karg.v2fb, up); err = put_v4l2_framebuffer32(&karg.v2fb, up);
break; break;
...@@ -792,7 +810,9 @@ static int do_video_ioctl(struct file *file, unsigned int cmd, unsigned long arg ...@@ -792,7 +810,9 @@ static int do_video_ioctl(struct file *file, unsigned int cmd, unsigned long arg
err = put_v4l2_input32(&karg.v2i, up); err = put_v4l2_input32(&karg.v2i, up);
break; break;
#ifdef CONFIG_VIDEO_V4L1_COMPAT
case VIDIOCGFREQ: case VIDIOCGFREQ:
#endif
case VIDIOC_G_INPUT: case VIDIOC_G_INPUT:
err = put_user(((u32)karg.vx), (u32 __user *)up); err = put_user(((u32)karg.vx), (u32 __user *)up);
break; break;
...@@ -810,6 +830,7 @@ long v4l_compat_ioctl32(struct file *file, unsigned int cmd, unsigned long arg) ...@@ -810,6 +830,7 @@ long v4l_compat_ioctl32(struct file *file, unsigned int cmd, unsigned long arg)
return ret; return ret;
switch (cmd) { switch (cmd) {
#ifdef CONFIG_VIDEO_V4L1_COMPAT
case VIDIOCSWIN32: case VIDIOCSWIN32:
ret = do_set_window(file, cmd, arg); ret = do_set_window(file, cmd, arg);
break; break;
...@@ -820,6 +841,7 @@ long v4l_compat_ioctl32(struct file *file, unsigned int cmd, unsigned long arg) ...@@ -820,6 +841,7 @@ long v4l_compat_ioctl32(struct file *file, unsigned int cmd, unsigned long arg)
case VIDIOCSFBUF32: case VIDIOCSFBUF32:
case VIDIOCGFREQ32: case VIDIOCGFREQ32:
case VIDIOCSFREQ32: case VIDIOCSFREQ32:
#endif
case VIDIOC_QUERYCAP: case VIDIOC_QUERYCAP:
case VIDIOC_ENUM_FMT: case VIDIOC_ENUM_FMT:
case VIDIOC_G_FMT32: case VIDIOC_G_FMT32:
...@@ -851,6 +873,7 @@ long v4l_compat_ioctl32(struct file *file, unsigned int cmd, unsigned long arg) ...@@ -851,6 +873,7 @@ long v4l_compat_ioctl32(struct file *file, unsigned int cmd, unsigned long arg)
ret = do_video_ioctl(file, cmd, arg); ret = do_video_ioctl(file, cmd, arg);
break; break;
#ifdef CONFIG_VIDEO_V4L1_COMPAT
/* Little v, the video4linux ioctls (conflict?) */ /* Little v, the video4linux ioctls (conflict?) */
case VIDIOCGCAP: case VIDIOCGCAP:
case VIDIOCGCHAN: case VIDIOCGCHAN:
...@@ -879,6 +902,7 @@ long v4l_compat_ioctl32(struct file *file, unsigned int cmd, unsigned long arg) ...@@ -879,6 +902,7 @@ long v4l_compat_ioctl32(struct file *file, unsigned int cmd, unsigned long arg)
case _IOR('v' , BASE_VIDIOCPRIVATE+7, int): case _IOR('v' , BASE_VIDIOCPRIVATE+7, int):
ret = native_ioctl(file, cmd, (unsigned long)compat_ptr(arg)); ret = native_ioctl(file, cmd, (unsigned long)compat_ptr(arg));
break; break;
#endif
default: default:
v4l_print_ioctl("compat_ioctl32", cmd); v4l_print_ioctl("compat_ioctl32", cmd);
} }
......
...@@ -104,8 +104,8 @@ u32 cx25840_read4(struct i2c_client * client, u16 addr) ...@@ -104,8 +104,8 @@ u32 cx25840_read4(struct i2c_client * client, u16 addr)
if (i2c_master_recv(client, buffer, 4) < 4) if (i2c_master_recv(client, buffer, 4) < 4)
return 0; return 0;
return (buffer[0] << 24) | (buffer[1] << 16) | return (buffer[3] << 24) | (buffer[2] << 16) |
(buffer[2] << 8) | buffer[3]; (buffer[1] << 8) | buffer[0];
} }
int cx25840_and_or(struct i2c_client *client, u16 addr, unsigned and_mask, int cx25840_and_or(struct i2c_client *client, u16 addr, unsigned and_mask,
......
...@@ -1225,7 +1225,7 @@ static int video_do_ioctl(struct inode *inode, struct file *file, ...@@ -1225,7 +1225,7 @@ static int video_do_ioctl(struct inode *inode, struct file *file,
struct v4l2_format *f = arg; struct v4l2_format *f = arg;
return cx8800_try_fmt(dev,fh,f); return cx8800_try_fmt(dev,fh,f);
} }
#ifdef CONFIG_V4L1_COMPAT #ifdef CONFIG_VIDEO_V4L1_COMPAT
/* --- streaming capture ------------------------------------- */ /* --- streaming capture ------------------------------------- */
case VIDIOCGMBUF: case VIDIOCGMBUF:
{ {
...@@ -1584,7 +1584,7 @@ static int radio_do_ioctl(struct inode *inode, struct file *file, ...@@ -1584,7 +1584,7 @@ static int radio_do_ioctl(struct inode *inode, struct file *file,
*id = 0; *id = 0;
return 0; return 0;
} }
#ifdef CONFIG_V4L1_COMPAT #ifdef CONFIG_VIDEO_V4L1_COMPAT
case VIDIOCSTUNER: case VIDIOCSTUNER:
{ {
struct video_tuner *v = arg; struct video_tuner *v = arg;
......
...@@ -961,10 +961,10 @@ int msp34xxg_thread(void *data) ...@@ -961,10 +961,10 @@ int msp34xxg_thread(void *data)
/* setup the chip*/ /* setup the chip*/
msp34xxg_reset(client); msp34xxg_reset(client);
state->std = state->radio ? 0x40 : msp_standard; state->std = state->radio ? 0x40 : msp_standard;
if (state->std != 1)
goto unmute;
/* start autodetect */ /* start autodetect */
msp_write_dem(client, 0x20, state->std); msp_write_dem(client, 0x20, state->std);
if (state->std != 1)
goto unmute;
/* watch autodetect */ /* watch autodetect */
v4l_dbg(1, msp_debug, client, "started autodetect, waiting for result\n"); v4l_dbg(1, msp_debug, client, "started autodetect, waiting for result\n");
......
...@@ -30,7 +30,7 @@ config USB_PWC ...@@ -30,7 +30,7 @@ config USB_PWC
config USB_PWC_DEBUG config USB_PWC_DEBUG
bool "USB Philips Cameras verbose debug" bool "USB Philips Cameras verbose debug"
depends USB_PWC depends on USB_PWC
help help
Say Y here in order to have the pwc driver generate verbose debugging Say Y here in order to have the pwc driver generate verbose debugging
messages. messages.
......
...@@ -160,6 +160,7 @@ static struct file_operations pwc_fops = { ...@@ -160,6 +160,7 @@ static struct file_operations pwc_fops = {
.poll = pwc_video_poll, .poll = pwc_video_poll,
.mmap = pwc_video_mmap, .mmap = pwc_video_mmap,
.ioctl = pwc_video_ioctl, .ioctl = pwc_video_ioctl,
.compat_ioctl = v4l_compat_ioctl32,
.llseek = no_llseek, .llseek = no_llseek,
}; };
static struct video_device pwc_template = { static struct video_device pwc_template = {
......
...@@ -2087,7 +2087,7 @@ static int video_do_ioctl(struct inode *inode, struct file *file, ...@@ -2087,7 +2087,7 @@ static int video_do_ioctl(struct inode *inode, struct file *file,
struct v4l2_format *f = arg; struct v4l2_format *f = arg;
return saa7134_try_fmt(dev,fh,f); return saa7134_try_fmt(dev,fh,f);
} }
#ifdef CONFIG_V4L1_COMPAT #ifdef CONFIG_VIDEO_V4L1_COMPAT
case VIDIOCGMBUF: case VIDIOCGMBUF:
{ {
struct video_mbuf *mbuf = arg; struct video_mbuf *mbuf = arg;
......
...@@ -1027,10 +1027,11 @@ static struct tuner_params tuner_tnf_5335mf_params[] = { ...@@ -1027,10 +1027,11 @@ static struct tuner_params tuner_tnf_5335mf_params[] = {
/* 70-79 */ /* 70-79 */
/* ------------ TUNER_SAMSUNG_TCPN_2121P30A - Samsung NTSC ------------ */ /* ------------ TUNER_SAMSUNG_TCPN_2121P30A - Samsung NTSC ------------ */
/* '+ 4' turns on the Low Noise Amplifier */
static struct tuner_range tuner_samsung_tcpn_2121p30a_ntsc_ranges[] = { static struct tuner_range tuner_samsung_tcpn_2121p30a_ntsc_ranges[] = {
{ 16 * 130.00 /*MHz*/, 0xce, 0x01, }, { 16 * 130.00 /*MHz*/, 0xce, 0x01 + 4, },
{ 16 * 364.50 /*MHz*/, 0xce, 0x02, }, { 16 * 364.50 /*MHz*/, 0xce, 0x02 + 4, },
{ 16 * 999.99 , 0xce, 0x08, }, { 16 * 999.99 , 0xce, 0x08 + 4, },
}; };
static struct tuner_params tuner_samsung_tcpn_2121p30a_params[] = { static struct tuner_params tuner_samsung_tcpn_2121p30a_params[] = {
...@@ -1060,10 +1061,11 @@ static struct tuner_params tuner_thomson_fe6600_params[] = { ...@@ -1060,10 +1061,11 @@ static struct tuner_params tuner_thomson_fe6600_params[] = {
/* ------------ TUNER_SAMSUNG_TCPG_6121P30A - Samsung PAL ------------ */ /* ------------ TUNER_SAMSUNG_TCPG_6121P30A - Samsung PAL ------------ */
/* '+ 4' turns on the Low Noise Amplifier */
static struct tuner_range tuner_samsung_tcpg_6121p30a_pal_ranges[] = { static struct tuner_range tuner_samsung_tcpg_6121p30a_pal_ranges[] = {
{ 16 * 146.25 /*MHz*/, 0xce, 0x01, }, { 16 * 146.25 /*MHz*/, 0xce, 0x01 + 4, },
{ 16 * 428.50 /*MHz*/, 0xce, 0x02, }, { 16 * 428.50 /*MHz*/, 0xce, 0x02 + 4, },
{ 16 * 999.99 , 0xce, 0x08, }, { 16 * 999.99 , 0xce, 0x08 + 4, },
}; };
static struct tuner_params tuner_samsung_tcpg_6121p30a_params[] = { static struct tuner_params tuner_samsung_tcpg_6121p30a_params[] = {
......
...@@ -599,6 +599,10 @@ v4l_compat_translate_ioctl(struct inode *inode, ...@@ -599,6 +599,10 @@ v4l_compat_translate_ioctl(struct inode *inode,
dprintk("VIDIOCGPICT / VIDIOC_G_FMT: %d\n",err); dprintk("VIDIOCGPICT / VIDIOC_G_FMT: %d\n",err);
break; break;
} }
pict->depth = ((fmt2->fmt.pix.bytesperline<<3)
+ (fmt2->fmt.pix.width-1) )
/fmt2->fmt.pix.width;
pict->palette = pixelformat_to_palette( pict->palette = pixelformat_to_palette(
fmt2->fmt.pix.pixelformat); fmt2->fmt.pix.pixelformat);
break; break;
......
...@@ -202,7 +202,7 @@ static char *v4l2_memory_names[] = { ...@@ -202,7 +202,7 @@ static char *v4l2_memory_names[] = {
/* ------------------------------------------------------------------ */ /* ------------------------------------------------------------------ */
/* debug help functions */ /* debug help functions */
#ifdef CONFIG_V4L1_COMPAT #ifdef CONFIG_VIDEO_V4L1_COMPAT
static const char *v4l1_ioctls[] = { static const char *v4l1_ioctls[] = {
[_IOC_NR(VIDIOCGCAP)] = "VIDIOCGCAP", [_IOC_NR(VIDIOCGCAP)] = "VIDIOCGCAP",
[_IOC_NR(VIDIOCGCHAN)] = "VIDIOCGCHAN", [_IOC_NR(VIDIOCGCHAN)] = "VIDIOCGCHAN",
...@@ -301,7 +301,7 @@ static const char *v4l2_ioctls[] = { ...@@ -301,7 +301,7 @@ static const char *v4l2_ioctls[] = {
#define V4L2_IOCTLS ARRAY_SIZE(v4l2_ioctls) #define V4L2_IOCTLS ARRAY_SIZE(v4l2_ioctls)
static const char *v4l2_int_ioctls[] = { static const char *v4l2_int_ioctls[] = {
#ifdef CONFIG_V4L1_COMPAT #ifdef CONFIG_VIDEO_V4L1_COMPAT
[_IOC_NR(DECODER_GET_CAPABILITIES)] = "DECODER_GET_CAPABILITIES", [_IOC_NR(DECODER_GET_CAPABILITIES)] = "DECODER_GET_CAPABILITIES",
[_IOC_NR(DECODER_GET_STATUS)] = "DECODER_GET_STATUS", [_IOC_NR(DECODER_GET_STATUS)] = "DECODER_GET_STATUS",
[_IOC_NR(DECODER_SET_NORM)] = "DECODER_SET_NORM", [_IOC_NR(DECODER_SET_NORM)] = "DECODER_SET_NORM",
...@@ -367,7 +367,7 @@ void v4l_printk_ioctl(unsigned int cmd) ...@@ -367,7 +367,7 @@ void v4l_printk_ioctl(unsigned int cmd)
(_IOC_NR(cmd) < V4L2_INT_IOCTLS) ? (_IOC_NR(cmd) < V4L2_INT_IOCTLS) ?
v4l2_int_ioctls[_IOC_NR(cmd)] : "UNKNOWN", dir, cmd); v4l2_int_ioctls[_IOC_NR(cmd)] : "UNKNOWN", dir, cmd);
break; break;
#ifdef CONFIG_V4L1_COMPAT #ifdef CONFIG_VIDEO_V4L1_COMPAT
case 'v': case 'v':
printk("v4l1 ioctl %s, dir=%s (0x%08x)\n", printk("v4l1 ioctl %s, dir=%s (0x%08x)\n",
(_IOC_NR(cmd) < V4L1_IOCTLS) ? (_IOC_NR(cmd) < V4L1_IOCTLS) ?
......
...@@ -760,7 +760,7 @@ static int __video_do_ioctl(struct inode *inode, struct file *file, ...@@ -760,7 +760,7 @@ static int __video_do_ioctl(struct inode *inode, struct file *file,
ret=vfd->vidioc_overlay(file, fh, *i); ret=vfd->vidioc_overlay(file, fh, *i);
break; break;
} }
#ifdef CONFIG_V4L1_COMPAT #ifdef CONFIG_VIDEO_V4L1_COMPAT
/* --- streaming capture ------------------------------------- */ /* --- streaming capture ------------------------------------- */
case VIDIOCGMBUF: case VIDIOCGMBUF:
{ {
......
...@@ -986,7 +986,7 @@ static int vidioc_dqbuf (struct file *file, void *priv, struct v4l2_buffer *p) ...@@ -986,7 +986,7 @@ static int vidioc_dqbuf (struct file *file, void *priv, struct v4l2_buffer *p)
file->f_flags & O_NONBLOCK)); file->f_flags & O_NONBLOCK));
} }
#ifdef CONFIG_V4L1_COMPAT #ifdef CONFIG_VIDEO_V4L1_COMPAT
static int vidiocgmbuf (struct file *file, void *priv, struct video_mbuf *mbuf) static int vidiocgmbuf (struct file *file, void *priv, struct video_mbuf *mbuf)
{ {
struct vivi_fh *fh=priv; struct vivi_fh *fh=priv;
...@@ -1328,7 +1328,7 @@ static struct video_device vivi = { ...@@ -1328,7 +1328,7 @@ static struct video_device vivi = {
.vidioc_s_ctrl = vidioc_s_ctrl, .vidioc_s_ctrl = vidioc_s_ctrl,
.vidioc_streamon = vidioc_streamon, .vidioc_streamon = vidioc_streamon,
.vidioc_streamoff = vidioc_streamoff, .vidioc_streamoff = vidioc_streamoff,
#ifdef CONFIG_V4L1_COMPAT #ifdef CONFIG_VIDEO_V4L1_COMPAT
.vidiocgmbuf = vidiocgmbuf, .vidiocgmbuf = vidiocgmbuf,
#endif #endif
.tvnorms = tvnorms, .tvnorms = tvnorms,
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
#include <linux/device.h> #include <linux/device.h>
#include <linux/mutex.h> #include <linux/mutex.h>
#include <linux/compiler.h> /* need __user */ #include <linux/compiler.h> /* need __user */
#ifdef CONFIG_VIDEO_V4L1 #ifdef CONFIG_VIDEO_V4L1_COMPAT
#include <linux/videodev.h> #include <linux/videodev.h>
#else #else
#include <linux/videodev2.h> #include <linux/videodev2.h>
......
...@@ -838,7 +838,7 @@ config SOUND_WAVEARTIST ...@@ -838,7 +838,7 @@ config SOUND_WAVEARTIST
config SOUND_TVMIXER config SOUND_TVMIXER
tristate "TV card (bt848) mixer support" tristate "TV card (bt848) mixer support"
depends on SOUND_PRIME && I2C depends on SOUND_PRIME && I2C && VIDEO_V4L1
help help
Support for audio mixer facilities on the BT848 TV frame-grabber Support for audio mixer facilities on the BT848 TV frame-grabber
card. card.
......
...@@ -468,11 +468,13 @@ config SND_FM801_TEA575X_BOOL ...@@ -468,11 +468,13 @@ config SND_FM801_TEA575X_BOOL
FM801 chip with a TEA5757 tuner connected to GPIO1-3 pins (Media FM801 chip with a TEA5757 tuner connected to GPIO1-3 pins (Media
Forte SF256-PCS-02) into the snd-fm801 driver. Forte SF256-PCS-02) into the snd-fm801 driver.
This will enable support for the old V4L1 API.
config SND_FM801_TEA575X config SND_FM801_TEA575X
tristate tristate
depends on SND_FM801_TEA575X_BOOL depends on SND_FM801_TEA575X_BOOL
default SND_FM801 default SND_FM801
select VIDEO_DEV select VIDEO_V4L1
config SND_HDA_INTEL config SND_HDA_INTEL
tristate "Intel HD Audio" tristate "Intel HD Audio"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment