|
@@ -3,7 +3,7 @@
|
|
|
bttv - Bt848 frame grabber driver
|
|
|
|
|
|
Copyright (C) 1996,97,98 Ralph Metzler <rjkm@thp.uni-koeln.de>
|
|
|
- & Marcus Metzler <mocm@thp.uni-koeln.de>
|
|
|
+ & Marcus Metzler <mocm@thp.uni-koeln.de>
|
|
|
(c) 1999-2002 Gerd Knorr <kraxel@bytesex.org>
|
|
|
|
|
|
some v4l2 code lines are taken from Justin's bttv2 driver which is
|
|
@@ -192,8 +192,8 @@ static u8 SRAM_Table[][60] =
|
|
|
|
|
|
const struct bttv_tvnorm bttv_tvnorms[] = {
|
|
|
/* PAL-BDGHI */
|
|
|
- /* max. active video is actually 922, but 924 is divisible by 4 and 3! */
|
|
|
- /* actually, max active PAL with HSCALE=0 is 948, NTSC is 768 - nil */
|
|
|
+ /* max. active video is actually 922, but 924 is divisible by 4 and 3! */
|
|
|
+ /* actually, max active PAL with HSCALE=0 is 948, NTSC is 768 - nil */
|
|
|
{
|
|
|
.v4l2_id = V4L2_STD_PAL,
|
|
|
.name = "PAL",
|
|
@@ -806,9 +806,9 @@ static void bt848A_set_timing(struct bttv *btv)
|
|
|
btv->c.nr,table_idx);
|
|
|
|
|
|
/* timing change...reset timing generator address */
|
|
|
- btwrite(0x00, BT848_TGCTRL);
|
|
|
- btwrite(0x02, BT848_TGCTRL);
|
|
|
- btwrite(0x00, BT848_TGCTRL);
|
|
|
+ btwrite(0x00, BT848_TGCTRL);
|
|
|
+ btwrite(0x02, BT848_TGCTRL);
|
|
|
+ btwrite(0x00, BT848_TGCTRL);
|
|
|
|
|
|
len=SRAM_Table[table_idx][0];
|
|
|
for(i = 1; i <= len; i++)
|
|
@@ -847,7 +847,7 @@ static void bt848_hue(struct bttv *btv, int hue)
|
|
|
|
|
|
/* -128 to 127 */
|
|
|
value = (hue >> 8) - 128;
|
|
|
- btwrite(value & 0xff, BT848_HUE);
|
|
|
+ btwrite(value & 0xff, BT848_HUE);
|
|
|
}
|
|
|
|
|
|
static void bt848_contrast(struct bttv *btv, int cont)
|
|
@@ -859,9 +859,9 @@ static void bt848_contrast(struct bttv *btv, int cont)
|
|
|
/* 0-511 */
|
|
|
value = (cont >> 7);
|
|
|
hibit = (value >> 6) & 4;
|
|
|
- btwrite(value & 0xff, BT848_CONTRAST_LO);
|
|
|
- btaor(hibit, ~4, BT848_E_CONTROL);
|
|
|
- btaor(hibit, ~4, BT848_O_CONTROL);
|
|
|
+ btwrite(value & 0xff, BT848_CONTRAST_LO);
|
|
|
+ btaor(hibit, ~4, BT848_E_CONTROL);
|
|
|
+ btaor(hibit, ~4, BT848_O_CONTROL);
|
|
|
}
|
|
|
|
|
|
static void bt848_sat(struct bttv *btv, int color)
|
|
@@ -873,12 +873,12 @@ static void bt848_sat(struct bttv *btv, int color)
|
|
|
/* 0-511 for the color */
|
|
|
val_u = ((color * btv->opt_uv_ratio) / 50) >> 7;
|
|
|
val_v = (((color * (100 - btv->opt_uv_ratio) / 50) >>7)*180L)/254;
|
|
|
- hibits = (val_u >> 7) & 2;
|
|
|
+ hibits = (val_u >> 7) & 2;
|
|
|
hibits |= (val_v >> 8) & 1;
|
|
|
- btwrite(val_u & 0xff, BT848_SAT_U_LO);
|
|
|
- btwrite(val_v & 0xff, BT848_SAT_V_LO);
|
|
|
- btaor(hibits, ~3, BT848_E_CONTROL);
|
|
|
- btaor(hibits, ~3, BT848_O_CONTROL);
|
|
|
+ btwrite(val_u & 0xff, BT848_SAT_U_LO);
|
|
|
+ btwrite(val_v & 0xff, BT848_SAT_V_LO);
|
|
|
+ btaor(hibits, ~3, BT848_E_CONTROL);
|
|
|
+ btaor(hibits, ~3, BT848_O_CONTROL);
|
|
|
}
|
|
|
|
|
|
/* ----------------------------------------------------------------------- */
|
|
@@ -891,7 +891,7 @@ video_mux(struct bttv *btv, unsigned int input)
|
|
|
if (input >= bttv_tvcards[btv->c.type].video_inputs)
|
|
|
return -EINVAL;
|
|
|
|
|
|
- /* needed by RemoteVideo MX */
|
|
|
+ /* needed by RemoteVideo MX */
|
|
|
mask2 = bttv_tvcards[btv->c.type].gpiomask2;
|
|
|
if (mask2)
|
|
|
gpio_inout(mask2,mask2);
|
|
@@ -1055,22 +1055,22 @@ static void init_bt848(struct bttv *btv)
|
|
|
btwrite(BT848_COLOR_CTL_GAMMA, BT848_COLOR_CTL);
|
|
|
btwrite(BT848_IFORM_XTAUTO | BT848_IFORM_AUTO, BT848_IFORM);
|
|
|
|
|
|
- /* set planar and packed mode trigger points and */
|
|
|
- /* set rising edge of inverted GPINTR pin as irq trigger */
|
|
|
- btwrite(BT848_GPIO_DMA_CTL_PKTP_32|
|
|
|
- BT848_GPIO_DMA_CTL_PLTP1_16|
|
|
|
- BT848_GPIO_DMA_CTL_PLTP23_16|
|
|
|
- BT848_GPIO_DMA_CTL_GPINTC|
|
|
|
- BT848_GPIO_DMA_CTL_GPINTI,
|
|
|
- BT848_GPIO_DMA_CTL);
|
|
|
+ /* set planar and packed mode trigger points and */
|
|
|
+ /* set rising edge of inverted GPINTR pin as irq trigger */
|
|
|
+ btwrite(BT848_GPIO_DMA_CTL_PKTP_32|
|
|
|
+ BT848_GPIO_DMA_CTL_PLTP1_16|
|
|
|
+ BT848_GPIO_DMA_CTL_PLTP23_16|
|
|
|
+ BT848_GPIO_DMA_CTL_GPINTC|
|
|
|
+ BT848_GPIO_DMA_CTL_GPINTI,
|
|
|
+ BT848_GPIO_DMA_CTL);
|
|
|
|
|
|
val = btv->opt_chroma_agc ? BT848_SCLOOP_CAGC : 0;
|
|
|
- btwrite(val, BT848_E_SCLOOP);
|
|
|
- btwrite(val, BT848_O_SCLOOP);
|
|
|
+ btwrite(val, BT848_E_SCLOOP);
|
|
|
+ btwrite(val, BT848_O_SCLOOP);
|
|
|
|
|
|
- btwrite(0x20, BT848_E_VSCALE_HI);
|
|
|
- btwrite(0x20, BT848_O_VSCALE_HI);
|
|
|
- btwrite(BT848_ADC_RESERVED | (btv->opt_adc_crush ? BT848_ADC_CRUSH : 0),
|
|
|
+ btwrite(0x20, BT848_E_VSCALE_HI);
|
|
|
+ btwrite(0x20, BT848_O_VSCALE_HI);
|
|
|
+ btwrite(BT848_ADC_RESERVED | (btv->opt_adc_crush ? BT848_ADC_CRUSH : 0),
|
|
|
BT848_ADC);
|
|
|
|
|
|
btwrite(whitecrush_upper, BT848_WC_UP);
|
|
@@ -1089,7 +1089,7 @@ static void init_bt848(struct bttv *btv)
|
|
|
bt848_contrast(btv, btv->contrast);
|
|
|
bt848_sat(btv, btv->saturation);
|
|
|
|
|
|
- /* interrupt */
|
|
|
+ /* interrupt */
|
|
|
init_irqreg(btv);
|
|
|
}
|
|
|
|
|
@@ -1105,7 +1105,7 @@ static void bttv_reinit_bt848(struct bttv *btv)
|
|
|
spin_unlock_irqrestore(&btv->s_lock,flags);
|
|
|
|
|
|
init_bt848(btv);
|
|
|
- btv->pll.pll_current = -1;
|
|
|
+ btv->pll.pll_current = -1;
|
|
|
set_input(btv,btv->input);
|
|
|
}
|
|
|
|
|
@@ -1398,7 +1398,7 @@ bttv_switch_overlay(struct bttv *btv, struct bttv_fh *fh,
|
|
|
/* video4linux (1) interface */
|
|
|
|
|
|
static int bttv_prepare_buffer(struct bttv *btv, struct bttv_buffer *buf,
|
|
|
- const struct bttv_format *fmt,
|
|
|
+ const struct bttv_format *fmt,
|
|
|
unsigned int width, unsigned int height,
|
|
|
enum v4l2_field field)
|
|
|
{
|
|
@@ -1521,8 +1521,8 @@ static const char *v4l1_ioctls[] = {
|
|
|
static int bttv_common_ioctls(struct bttv *btv, unsigned int cmd, void *arg)
|
|
|
{
|
|
|
switch (cmd) {
|
|
|
- case BTTV_VERSION:
|
|
|
- return BTTV_VERSION_CODE;
|
|
|
+ case BTTV_VERSION:
|
|
|
+ return BTTV_VERSION_CODE;
|
|
|
|
|
|
/* *** v4l1 *** ************************************************ */
|
|
|
case VIDIOCGFREQ:
|
|
@@ -1576,32 +1576,32 @@ static int bttv_common_ioctls(struct bttv *btv, unsigned int cmd, void *arg)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
- case VIDIOCGCHAN:
|
|
|
- {
|
|
|
- struct video_channel *v = arg;
|
|
|
+ case VIDIOCGCHAN:
|
|
|
+ {
|
|
|
+ struct video_channel *v = arg;
|
|
|
unsigned int channel = v->channel;
|
|
|
|
|
|
- if (channel >= bttv_tvcards[btv->c.type].video_inputs)
|
|
|
- return -EINVAL;
|
|
|
- v->tuners=0;
|
|
|
- v->flags = VIDEO_VC_AUDIO;
|
|
|
- v->type = VIDEO_TYPE_CAMERA;
|
|
|
- v->norm = btv->tvnorm;
|
|
|
+ if (channel >= bttv_tvcards[btv->c.type].video_inputs)
|
|
|
+ return -EINVAL;
|
|
|
+ v->tuners=0;
|
|
|
+ v->flags = VIDEO_VC_AUDIO;
|
|
|
+ v->type = VIDEO_TYPE_CAMERA;
|
|
|
+ v->norm = btv->tvnorm;
|
|
|
if (channel == bttv_tvcards[btv->c.type].tuner) {
|
|
|
- strcpy(v->name,"Television");
|
|
|
- v->flags|=VIDEO_VC_TUNER;
|
|
|
- v->type=VIDEO_TYPE_TV;
|
|
|
- v->tuners=1;
|
|
|
- } else if (channel == btv->svhs) {
|
|
|
- strcpy(v->name,"S-Video");
|
|
|
- } else {
|
|
|
- sprintf(v->name,"Composite%d",channel);
|
|
|
+ strcpy(v->name,"Television");
|
|
|
+ v->flags|=VIDEO_VC_TUNER;
|
|
|
+ v->type=VIDEO_TYPE_TV;
|
|
|
+ v->tuners=1;
|
|
|
+ } else if (channel == btv->svhs) {
|
|
|
+ strcpy(v->name,"S-Video");
|
|
|
+ } else {
|
|
|
+ sprintf(v->name,"Composite%d",channel);
|
|
|
}
|
|
|
return 0;
|
|
|
- }
|
|
|
- case VIDIOCSCHAN:
|
|
|
- {
|
|
|
- struct video_channel *v = arg;
|
|
|
+ }
|
|
|
+ case VIDIOCSCHAN:
|
|
|
+ {
|
|
|
+ struct video_channel *v = arg;
|
|
|
unsigned int channel = v->channel;
|
|
|
|
|
|
if (channel >= bttv_tvcards[btv->c.type].video_inputs)
|
|
@@ -1623,7 +1623,7 @@ static int bttv_common_ioctls(struct bttv *btv, unsigned int cmd, void *arg)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
- case VIDIOCGAUDIO:
|
|
|
+ case VIDIOCGAUDIO:
|
|
|
{
|
|
|
struct video_audio *v = arg;
|
|
|
|
|
@@ -1728,7 +1728,7 @@ static int bttv_common_ioctls(struct bttv *btv, unsigned int cmd, void *arg)
|
|
|
} else if (i->index == btv->svhs) {
|
|
|
sprintf(i->name, "S-Video");
|
|
|
} else {
|
|
|
- sprintf(i->name,"Composite%d",i->index);
|
|
|
+ sprintf(i->name,"Composite%d",i->index);
|
|
|
}
|
|
|
if (i->index == btv->input) {
|
|
|
__u32 dstatus = btread(BT848_DSTATUS);
|
|
@@ -2168,7 +2168,7 @@ static int bttv_s_fmt(struct bttv_fh *fh, struct bttv *btv,
|
|
|
if (0 != retval)
|
|
|
return retval;
|
|
|
if (locked_btres(fh->btv, RESOURCE_VBI))
|
|
|
- return -EBUSY;
|
|
|
+ return -EBUSY;
|
|
|
bttv_vbi_try_fmt(fh,f);
|
|
|
bttv_vbi_setlines(fh,btv,f->fmt.vbi.count[0]);
|
|
|
bttv_vbi_get_fmt(fh,f);
|
|
@@ -2206,9 +2206,9 @@ static int bttv_do_ioctl(struct inode *inode, struct file *file,
|
|
|
bttv_reinit_bt848(btv);
|
|
|
|
|
|
switch (cmd) {
|
|
|
- case VIDIOCSFREQ:
|
|
|
- case VIDIOCSTUNER:
|
|
|
- case VIDIOCSCHAN:
|
|
|
+ case VIDIOCSFREQ:
|
|
|
+ case VIDIOCSTUNER:
|
|
|
+ case VIDIOCSCHAN:
|
|
|
case VIDIOC_S_CTRL:
|
|
|
case VIDIOC_S_STD:
|
|
|
case VIDIOC_S_INPUT:
|
|
@@ -2224,10 +2224,10 @@ static int bttv_do_ioctl(struct inode *inode, struct file *file,
|
|
|
/* *** v4l1 *** ************************************************ */
|
|
|
case VIDIOCGCAP:
|
|
|
{
|
|
|
- struct video_capability *cap = arg;
|
|
|
+ struct video_capability *cap = arg;
|
|
|
|
|
|
memset(cap,0,sizeof(*cap));
|
|
|
- strcpy(cap->name,btv->video_dev->name);
|
|
|
+ strcpy(cap->name,btv->video_dev->name);
|
|
|
if (V4L2_BUF_TYPE_VBI_CAPTURE == fh->type) {
|
|
|
/* vbi */
|
|
|
cap->type = VID_TYPE_TUNER|VID_TYPE_TELETEXT;
|
|
@@ -2247,7 +2247,7 @@ static int bttv_do_ioctl(struct inode *inode, struct file *file,
|
|
|
}
|
|
|
cap->channels = bttv_tvcards[btv->c.type].video_inputs;
|
|
|
cap->audios = bttv_tvcards[btv->c.type].audio_inputs;
|
|
|
- return 0;
|
|
|
+ return 0;
|
|
|
}
|
|
|
|
|
|
case VIDIOCGPICT:
|
|
@@ -2296,7 +2296,7 @@ static int bttv_do_ioctl(struct inode *inode, struct file *file,
|
|
|
bt848_hue(btv,pic->hue);
|
|
|
bt848_sat(btv,pic->colour);
|
|
|
up(&fh->cap.lock);
|
|
|
- return 0;
|
|
|
+ return 0;
|
|
|
}
|
|
|
|
|
|
case VIDIOCGWIN:
|
|
@@ -2357,8 +2357,8 @@ static int bttv_do_ioctl(struct inode *inode, struct file *file,
|
|
|
unsigned long end;
|
|
|
|
|
|
if(!capable(CAP_SYS_ADMIN) &&
|
|
|
- !capable(CAP_SYS_RAWIO))
|
|
|
- return -EPERM;
|
|
|
+ !capable(CAP_SYS_RAWIO))
|
|
|
+ return -EPERM;
|
|
|
end = (unsigned long)fbuf->base +
|
|
|
fbuf->height * fbuf->bytesperline;
|
|
|
down(&fh->cap.lock);
|
|
@@ -2432,7 +2432,7 @@ static int bttv_do_ioctl(struct inode *inode, struct file *file,
|
|
|
}
|
|
|
|
|
|
/* switch over */
|
|
|
- retval = bttv_switch_overlay(btv,fh,new);
|
|
|
+ retval = bttv_switch_overlay(btv,fh,new);
|
|
|
up(&fh->cap.lock);
|
|
|
return retval;
|
|
|
}
|
|
@@ -2571,13 +2571,13 @@ static int bttv_do_ioctl(struct inode *inode, struct file *file,
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
- case BTTV_VERSION:
|
|
|
- case VIDIOCGFREQ:
|
|
|
- case VIDIOCSFREQ:
|
|
|
- case VIDIOCGTUNER:
|
|
|
- case VIDIOCSTUNER:
|
|
|
- case VIDIOCGCHAN:
|
|
|
- case VIDIOCSCHAN:
|
|
|
+ case BTTV_VERSION:
|
|
|
+ case VIDIOCGFREQ:
|
|
|
+ case VIDIOCSFREQ:
|
|
|
+ case VIDIOCGTUNER:
|
|
|
+ case VIDIOCSTUNER:
|
|
|
+ case VIDIOCGCHAN:
|
|
|
+ case VIDIOCSCHAN:
|
|
|
case VIDIOCGAUDIO:
|
|
|
case VIDIOCSAUDIO:
|
|
|
return bttv_common_ioctls(btv,cmd,arg);
|
|
@@ -2589,8 +2589,8 @@ static int bttv_do_ioctl(struct inode *inode, struct file *file,
|
|
|
|
|
|
if (0 == v4l2)
|
|
|
return -EINVAL;
|
|
|
- strcpy(cap->driver,"bttv");
|
|
|
- strlcpy(cap->card,btv->video_dev->name,sizeof(cap->card));
|
|
|
+ strcpy(cap->driver,"bttv");
|
|
|
+ strlcpy(cap->card,btv->video_dev->name,sizeof(cap->card));
|
|
|
sprintf(cap->bus_info,"PCI:%s",pci_name(btv->c.pci));
|
|
|
cap->version = BTTV_VERSION_CODE;
|
|
|
cap->capabilities =
|
|
@@ -3097,7 +3097,7 @@ static struct video_device bttv_video_template =
|
|
|
{
|
|
|
.name = "UNSET",
|
|
|
.type = VID_TYPE_CAPTURE|VID_TYPE_TUNER|
|
|
|
- VID_TYPE_CLIPPING|VID_TYPE_SCALES,
|
|
|
+ VID_TYPE_CLIPPING|VID_TYPE_SCALES,
|
|
|
.hardware = VID_HARDWARE_BT848,
|
|
|
.fops = &bttv_fops,
|
|
|
.minor = -1,
|
|
@@ -3143,7 +3143,7 @@ static int radio_open(struct inode *inode, struct file *file)
|
|
|
audio_mux(btv,AUDIO_RADIO);
|
|
|
|
|
|
up(&btv->lock);
|
|
|
- return 0;
|
|
|
+ return 0;
|
|
|
}
|
|
|
|
|
|
static int radio_release(struct inode *inode, struct file *file)
|
|
@@ -3166,34 +3166,34 @@ static int radio_do_ioctl(struct inode *inode, struct file *file,
|
|
|
switch (cmd) {
|
|
|
case VIDIOCGCAP:
|
|
|
{
|
|
|
- struct video_capability *cap = arg;
|
|
|
+ struct video_capability *cap = arg;
|
|
|
|
|
|
memset(cap,0,sizeof(*cap));
|
|
|
- strcpy(cap->name,btv->radio_dev->name);
|
|
|
- cap->type = VID_TYPE_TUNER;
|
|
|
+ strcpy(cap->name,btv->radio_dev->name);
|
|
|
+ cap->type = VID_TYPE_TUNER;
|
|
|
cap->channels = 1;
|
|
|
cap->audios = 1;
|
|
|
- return 0;
|
|
|
+ return 0;
|
|
|
}
|
|
|
|
|
|
- case VIDIOCGTUNER:
|
|
|
- {
|
|
|
- struct video_tuner *v = arg;
|
|
|
+ case VIDIOCGTUNER:
|
|
|
+ {
|
|
|
+ struct video_tuner *v = arg;
|
|
|
|
|
|
- if(v->tuner)
|
|
|
- return -EINVAL;
|
|
|
+ if(v->tuner)
|
|
|
+ return -EINVAL;
|
|
|
memset(v,0,sizeof(*v));
|
|
|
- strcpy(v->name, "Radio");
|
|
|
- bttv_call_i2c_clients(btv,cmd,v);
|
|
|
- return 0;
|
|
|
- }
|
|
|
- case VIDIOCSTUNER:
|
|
|
+ strcpy(v->name, "Radio");
|
|
|
+ bttv_call_i2c_clients(btv,cmd,v);
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ case VIDIOCSTUNER:
|
|
|
/* nothing to do */
|
|
|
return 0;
|
|
|
|
|
|
case BTTV_VERSION:
|
|
|
- case VIDIOCGFREQ:
|
|
|
- case VIDIOCSFREQ:
|
|
|
+ case VIDIOCGFREQ:
|
|
|
+ case VIDIOCSFREQ:
|
|
|
case VIDIOCGAUDIO:
|
|
|
case VIDIOCSAUDIO:
|
|
|
return bttv_common_ioctls(btv,cmd,arg);
|
|
@@ -3699,7 +3699,7 @@ static irqreturn_t bttv_irq(int irq, void *dev_id, struct pt_regs * regs)
|
|
|
}
|
|
|
|
|
|
if (astat&BT848_INT_VSYNC)
|
|
|
- btv->field_count++;
|
|
|
+ btv->field_count++;
|
|
|
|
|
|
if (astat & BT848_INT_GPINT) {
|
|
|
wake_up(&btv->gpioq);
|
|
@@ -3711,13 +3711,13 @@ static irqreturn_t bttv_irq(int irq, void *dev_id, struct pt_regs * regs)
|
|
|
wake_up(&btv->i2c_queue);
|
|
|
}
|
|
|
|
|
|
- if ((astat & BT848_INT_RISCI) && (stat & (4<<28)))
|
|
|
+ if ((astat & BT848_INT_RISCI) && (stat & (4<<28)))
|
|
|
bttv_irq_switch_vbi(btv);
|
|
|
|
|
|
- if ((astat & BT848_INT_RISCI) && (stat & (2<<28)))
|
|
|
+ if ((astat & BT848_INT_RISCI) && (stat & (2<<28)))
|
|
|
bttv_irq_wakeup_top(btv);
|
|
|
|
|
|
- if ((astat & BT848_INT_RISCI) && (stat & (1<<28)))
|
|
|
+ if ((astat & BT848_INT_RISCI) && (stat & (1<<28)))
|
|
|
bttv_irq_switch_video(btv);
|
|
|
|
|
|
if ((astat & BT848_INT_HLOCK) && btv->opt_automute)
|
|
@@ -3744,7 +3744,7 @@ static irqreturn_t bttv_irq(int irq, void *dev_id, struct pt_regs * regs)
|
|
|
if (count > 4) {
|
|
|
|
|
|
if (count > 8 || !(astat & BT848_INT_GPINT)) {
|
|
|
- btwrite(0, BT848_INT_MASK);
|
|
|
+ btwrite(0, BT848_INT_MASK);
|
|
|
|
|
|
printk(KERN_ERR
|
|
|
"bttv%d: IRQ lockup, cleared int mask [", btv->c.nr);
|
|
@@ -3826,7 +3826,7 @@ static int __devinit bttv_register_video(struct bttv *btv)
|
|
|
|
|
|
/* video */
|
|
|
btv->video_dev = vdev_init(btv, &bttv_video_template, "video");
|
|
|
- if (NULL == btv->video_dev)
|
|
|
+ if (NULL == btv->video_dev)
|
|
|
goto err;
|
|
|
if (video_register_device(btv->video_dev,VFL_TYPE_GRABBER,video_nr)<0)
|
|
|
goto err;
|
|
@@ -3836,18 +3836,18 @@ static int __devinit bttv_register_video(struct bttv *btv)
|
|
|
|
|
|
/* vbi */
|
|
|
btv->vbi_dev = vdev_init(btv, &bttv_vbi_template, "vbi");
|
|
|
- if (NULL == btv->vbi_dev)
|
|
|
+ if (NULL == btv->vbi_dev)
|
|
|
goto err;
|
|
|
- if (video_register_device(btv->vbi_dev,VFL_TYPE_VBI,vbi_nr)<0)
|
|
|
+ if (video_register_device(btv->vbi_dev,VFL_TYPE_VBI,vbi_nr)<0)
|
|
|
goto err;
|
|
|
printk(KERN_INFO "bttv%d: registered device vbi%d\n",
|
|
|
btv->c.nr,btv->vbi_dev->minor & 0x1f);
|
|
|
|
|
|
- if (!btv->has_radio)
|
|
|
+ if (!btv->has_radio)
|
|
|
return 0;
|
|
|
/* radio */
|
|
|
btv->radio_dev = vdev_init(btv, &radio_template, "radio");
|
|
|
- if (NULL == btv->radio_dev)
|
|
|
+ if (NULL == btv->radio_dev)
|
|
|
goto err;
|
|
|
if (video_register_device(btv->radio_dev, VFL_TYPE_RADIO,radio_nr)<0)
|
|
|
goto err;
|
|
@@ -3868,11 +3868,11 @@ static int __devinit bttv_register_video(struct bttv *btv)
|
|
|
static void pci_set_command(struct pci_dev *dev)
|
|
|
{
|
|
|
#if defined(__powerpc__)
|
|
|
- unsigned int cmd;
|
|
|
+ unsigned int cmd;
|
|
|
|
|
|
- pci_read_config_dword(dev, PCI_COMMAND, &cmd);
|
|
|
- cmd = (cmd | PCI_COMMAND_MEMORY );
|
|
|
- pci_write_config_dword(dev, PCI_COMMAND, cmd);
|
|
|
+ pci_read_config_dword(dev, PCI_COMMAND, &cmd);
|
|
|
+ cmd = (cmd | PCI_COMMAND_MEMORY );
|
|
|
+ pci_write_config_dword(dev, PCI_COMMAND, cmd);
|
|
|
#endif
|
|
|
}
|
|
|
|
|
@@ -3886,21 +3886,21 @@ static int __devinit bttv_probe(struct pci_dev *dev,
|
|
|
if (bttv_num == BTTV_MAX)
|
|
|
return -ENOMEM;
|
|
|
printk(KERN_INFO "bttv: Bt8xx card found (%d).\n", bttv_num);
|
|
|
- btv=&bttvs[bttv_num];
|
|
|
+ btv=&bttvs[bttv_num];
|
|
|
memset(btv,0,sizeof(*btv));
|
|
|
btv->c.nr = bttv_num;
|
|
|
sprintf(btv->c.name,"bttv%d",btv->c.nr);
|
|
|
|
|
|
/* initialize structs / fill in defaults */
|
|
|
- init_MUTEX(&btv->lock);
|
|
|
- init_MUTEX(&btv->reslock);
|
|
|
- spin_lock_init(&btv->s_lock);
|
|
|
- spin_lock_init(&btv->gpio_lock);
|
|
|
- init_waitqueue_head(&btv->gpioq);
|
|
|
- init_waitqueue_head(&btv->i2c_queue);
|
|
|
- INIT_LIST_HEAD(&btv->c.subs);
|
|
|
- INIT_LIST_HEAD(&btv->capture);
|
|
|
- INIT_LIST_HEAD(&btv->vcapture);
|
|
|
+ init_MUTEX(&btv->lock);
|
|
|
+ init_MUTEX(&btv->reslock);
|
|
|
+ spin_lock_init(&btv->s_lock);
|
|
|
+ spin_lock_init(&btv->gpio_lock);
|
|
|
+ init_waitqueue_head(&btv->gpioq);
|
|
|
+ init_waitqueue_head(&btv->i2c_queue);
|
|
|
+ INIT_LIST_HEAD(&btv->c.subs);
|
|
|
+ INIT_LIST_HEAD(&btv->capture);
|
|
|
+ INIT_LIST_HEAD(&btv->vcapture);
|
|
|
v4l2_prio_init(&btv->prio);
|
|
|
|
|
|
init_timer(&btv->timeout);
|
|
@@ -3921,27 +3921,27 @@ static int __devinit bttv_probe(struct pci_dev *dev,
|
|
|
btv->c.nr);
|
|
|
return -EIO;
|
|
|
}
|
|
|
- if (pci_set_dma_mask(dev, DMA_32BIT_MASK)) {
|
|
|
- printk(KERN_WARNING "bttv%d: No suitable DMA available.\n",
|
|
|
+ if (pci_set_dma_mask(dev, DMA_32BIT_MASK)) {
|
|
|
+ printk(KERN_WARNING "bttv%d: No suitable DMA available.\n",
|
|
|
btv->c.nr);
|
|
|
return -EIO;
|
|
|
- }
|
|
|
+ }
|
|
|
if (!request_mem_region(pci_resource_start(dev,0),
|
|
|
pci_resource_len(dev,0),
|
|
|
btv->c.name)) {
|
|
|
- printk(KERN_WARNING "bttv%d: can't request iomem (0x%lx).\n",
|
|
|
+ printk(KERN_WARNING "bttv%d: can't request iomem (0x%lx).\n",
|
|
|
btv->c.nr, pci_resource_start(dev,0));
|
|
|
return -EBUSY;
|
|
|
}
|
|
|
- pci_set_master(dev);
|
|
|
+ pci_set_master(dev);
|
|
|
pci_set_command(dev);
|
|
|
pci_set_drvdata(dev,btv);
|
|
|
|
|
|
- pci_read_config_byte(dev, PCI_CLASS_REVISION, &btv->revision);
|
|
|
- pci_read_config_byte(dev, PCI_LATENCY_TIMER, &lat);
|
|
|
- printk(KERN_INFO "bttv%d: Bt%d (rev %d) at %s, ",
|
|
|
- bttv_num,btv->id, btv->revision, pci_name(dev));
|
|
|
- printk("irq: %d, latency: %d, mmio: 0x%lx\n",
|
|
|
+ pci_read_config_byte(dev, PCI_CLASS_REVISION, &btv->revision);
|
|
|
+ pci_read_config_byte(dev, PCI_LATENCY_TIMER, &lat);
|
|
|
+ printk(KERN_INFO "bttv%d: Bt%d (rev %d) at %s, ",
|
|
|
+ bttv_num,btv->id, btv->revision, pci_name(dev));
|
|
|
+ printk("irq: %d, latency: %d, mmio: 0x%lx\n",
|
|
|
btv->c.pci->irq, lat, pci_resource_start(dev,0));
|
|
|
schedule();
|
|
|
|
|
@@ -3952,23 +3952,23 @@ static int __devinit bttv_probe(struct pci_dev *dev,
|
|
|
goto fail1;
|
|
|
}
|
|
|
|
|
|
- /* identify card */
|
|
|
+ /* identify card */
|
|
|
bttv_idcard(btv);
|
|
|
|
|
|
- /* disable irqs, register irq handler */
|
|
|
+ /* disable irqs, register irq handler */
|
|
|
btwrite(0, BT848_INT_MASK);
|
|
|
- result = request_irq(btv->c.pci->irq, bttv_irq,
|
|
|
- SA_SHIRQ | SA_INTERRUPT,btv->c.name,(void *)btv);
|
|
|
- if (result < 0) {
|
|
|
- printk(KERN_ERR "bttv%d: can't get IRQ %d\n",
|
|
|
+ result = request_irq(btv->c.pci->irq, bttv_irq,
|
|
|
+ SA_SHIRQ | SA_INTERRUPT,btv->c.name,(void *)btv);
|
|
|
+ if (result < 0) {
|
|
|
+ printk(KERN_ERR "bttv%d: can't get IRQ %d\n",
|
|
|
bttv_num,btv->c.pci->irq);
|
|
|
goto fail1;
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
if (0 != bttv_handle_chipset(btv)) {
|
|
|
result = -EIO;
|
|
|
goto fail2;
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
/* init options from insmod args */
|
|
|
btv->opt_combfilter = combfilter;
|
|
@@ -3994,29 +3994,29 @@ static int __devinit bttv_probe(struct pci_dev *dev,
|
|
|
btv->input = 0;
|
|
|
|
|
|
/* initialize hardware */
|
|
|
- if (bttv_gpio)
|
|
|
- bttv_gpio_tracking(btv,"pre-init");
|
|
|
+ if (bttv_gpio)
|
|
|
+ bttv_gpio_tracking(btv,"pre-init");
|
|
|
|
|
|
bttv_risc_init_main(btv);
|
|
|
init_bt848(btv);
|
|
|
|
|
|
/* gpio */
|
|
|
- btwrite(0x00, BT848_GPIO_REG_INP);
|
|
|
- btwrite(0x00, BT848_GPIO_OUT_EN);
|
|
|
- if (bttv_verbose)
|
|
|
- bttv_gpio_tracking(btv,"init");
|
|
|
+ btwrite(0x00, BT848_GPIO_REG_INP);
|
|
|
+ btwrite(0x00, BT848_GPIO_OUT_EN);
|
|
|
+ if (bttv_verbose)
|
|
|
+ bttv_gpio_tracking(btv,"init");
|
|
|
|
|
|
- /* needs to be done before i2c is registered */
|
|
|
- bttv_init_card1(btv);
|
|
|
+ /* needs to be done before i2c is registered */
|
|
|
+ bttv_init_card1(btv);
|
|
|
|
|
|
- /* register i2c + gpio */
|
|
|
- init_bttv_i2c(btv);
|
|
|
+ /* register i2c + gpio */
|
|
|
+ init_bttv_i2c(btv);
|
|
|
|
|
|
- /* some card-specific stuff (needs working i2c) */
|
|
|
- bttv_init_card2(btv);
|
|
|
+ /* some card-specific stuff (needs working i2c) */
|
|
|
+ bttv_init_card2(btv);
|
|
|
init_irqreg(btv);
|
|
|
|
|
|
- /* register video4linux + input */
|
|
|
+ /* register video4linux + input */
|
|
|
if (!bttv_tvcards[btv->c.type].no_video) {
|
|
|
bttv_register_video(btv);
|
|
|
bt848_bright(btv,32768);
|
|
@@ -4035,10 +4035,10 @@ static int __devinit bttv_probe(struct pci_dev *dev,
|
|
|
|
|
|
/* everything is fine */
|
|
|
bttv_num++;
|
|
|
- return 0;
|
|
|
+ return 0;
|
|
|
|
|
|
fail2:
|
|
|
- free_irq(btv->c.pci->irq,btv);
|
|
|
+ free_irq(btv->c.pci->irq,btv);
|
|
|
|
|
|
fail1:
|
|
|
if (btv->bt848_mmio)
|
|
@@ -4051,12 +4051,12 @@ static int __devinit bttv_probe(struct pci_dev *dev,
|
|
|
|
|
|
static void __devexit bttv_remove(struct pci_dev *pci_dev)
|
|
|
{
|
|
|
- struct bttv *btv = pci_get_drvdata(pci_dev);
|
|
|
+ struct bttv *btv = pci_get_drvdata(pci_dev);
|
|
|
|
|
|
if (bttv_verbose)
|
|
|
printk("bttv%d: unloading\n",btv->c.nr);
|
|
|
|
|
|
- /* shutdown everything (DMA+IRQs) */
|
|
|
+ /* shutdown everything (DMA+IRQs) */
|
|
|
btand(~15, BT848_GPIO_DMA_CTL);
|
|
|
btwrite(0, BT848_INT_MASK);
|
|
|
btwrite(~0x0, BT848_INT_STAT);
|
|
@@ -4069,7 +4069,7 @@ static void __devexit bttv_remove(struct pci_dev *pci_dev)
|
|
|
wake_up(&btv->gpioq);
|
|
|
bttv_sub_del_devices(&btv->c);
|
|
|
|
|
|
- /* unregister i2c_bus + input */
|
|
|
+ /* unregister i2c_bus + input */
|
|
|
fini_bttv_i2c(btv);
|
|
|
|
|
|
/* unregister video4linux */
|
|
@@ -4079,18 +4079,18 @@ static void __devexit bttv_remove(struct pci_dev *pci_dev)
|
|
|
btcx_riscmem_free(btv->c.pci,&btv->main);
|
|
|
|
|
|
/* free ressources */
|
|
|
- free_irq(btv->c.pci->irq,btv);
|
|
|
+ free_irq(btv->c.pci->irq,btv);
|
|
|
iounmap(btv->bt848_mmio);
|
|
|
- release_mem_region(pci_resource_start(btv->c.pci,0),
|
|
|
- pci_resource_len(btv->c.pci,0));
|
|
|
+ release_mem_region(pci_resource_start(btv->c.pci,0),
|
|
|
+ pci_resource_len(btv->c.pci,0));
|
|
|
|
|
|
pci_set_drvdata(pci_dev, NULL);
|
|
|
- return;
|
|
|
+ return;
|
|
|
}
|
|
|
|
|
|
static int bttv_suspend(struct pci_dev *pci_dev, pm_message_t state)
|
|
|
{
|
|
|
- struct bttv *btv = pci_get_drvdata(pci_dev);
|
|
|
+ struct bttv *btv = pci_get_drvdata(pci_dev);
|
|
|
struct bttv_buffer_set idle;
|
|
|
unsigned long flags;
|
|
|
|
|
@@ -4125,7 +4125,7 @@ static int bttv_suspend(struct pci_dev *pci_dev, pm_message_t state)
|
|
|
|
|
|
static int bttv_resume(struct pci_dev *pci_dev)
|
|
|
{
|
|
|
- struct bttv *btv = pci_get_drvdata(pci_dev);
|
|
|
+ struct bttv *btv = pci_get_drvdata(pci_dev);
|
|
|
unsigned long flags;
|
|
|
int err;
|
|
|
|
|
@@ -4170,24 +4170,24 @@ static int bttv_resume(struct pci_dev *pci_dev)
|
|
|
}
|
|
|
|
|
|
static struct pci_device_id bttv_pci_tbl[] = {
|
|
|
- {PCI_VENDOR_ID_BROOKTREE, PCI_DEVICE_ID_BT848,
|
|
|
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
|
|
|
+ {PCI_VENDOR_ID_BROOKTREE, PCI_DEVICE_ID_BT848,
|
|
|
+ PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
|
|
|
{PCI_VENDOR_ID_BROOKTREE, PCI_DEVICE_ID_BT849,
|
|
|
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
|
|
|
+ PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
|
|
|
{PCI_VENDOR_ID_BROOKTREE, PCI_DEVICE_ID_BT878,
|
|
|
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
|
|
|
+ PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
|
|
|
{PCI_VENDOR_ID_BROOKTREE, PCI_DEVICE_ID_BT879,
|
|
|
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
|
|
|
- {0,}
|
|
|
+ PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
|
|
|
+ {0,}
|
|
|
};
|
|
|
|
|
|
MODULE_DEVICE_TABLE(pci, bttv_pci_tbl);
|
|
|
|
|
|
static struct pci_driver bttv_pci_driver = {
|
|
|
- .name = "bttv",
|
|
|
- .id_table = bttv_pci_tbl,
|
|
|
- .probe = bttv_probe,
|
|
|
- .remove = __devexit_p(bttv_remove),
|
|
|
+ .name = "bttv",
|
|
|
+ .id_table = bttv_pci_tbl,
|
|
|
+ .probe = bttv_probe,
|
|
|
+ .remove = __devexit_p(bttv_remove),
|
|
|
.suspend = bttv_suspend,
|
|
|
.resume = bttv_resume,
|
|
|
};
|