|
@@ -636,30 +636,30 @@ int cx88_reset(struct cx88_core *core)
|
|
|
|
|
|
/* ------------------------------------------------------------------ */
|
|
|
|
|
|
-static unsigned int inline norm_swidth(struct v4l2_tvnorm *norm)
|
|
|
+static unsigned int inline norm_swidth(v4l2_std_id norm)
|
|
|
{
|
|
|
- return (norm->id & (V4L2_STD_MN & ~V4L2_STD_PAL_Nc)) ? 754 : 922;
|
|
|
+ return (norm & (V4L2_STD_MN & ~V4L2_STD_PAL_Nc)) ? 754 : 922;
|
|
|
}
|
|
|
|
|
|
-static unsigned int inline norm_hdelay(struct v4l2_tvnorm *norm)
|
|
|
+static unsigned int inline norm_hdelay(v4l2_std_id norm)
|
|
|
{
|
|
|
- return (norm->id & (V4L2_STD_MN & ~V4L2_STD_PAL_Nc)) ? 135 : 186;
|
|
|
+ return (norm & (V4L2_STD_MN & ~V4L2_STD_PAL_Nc)) ? 135 : 186;
|
|
|
}
|
|
|
|
|
|
-static unsigned int inline norm_vdelay(struct v4l2_tvnorm *norm)
|
|
|
+static unsigned int inline norm_vdelay(v4l2_std_id norm)
|
|
|
{
|
|
|
- return (norm->id & V4L2_STD_625_50) ? 0x24 : 0x18;
|
|
|
+ return (norm & V4L2_STD_625_50) ? 0x24 : 0x18;
|
|
|
}
|
|
|
|
|
|
-static unsigned int inline norm_fsc8(struct v4l2_tvnorm *norm)
|
|
|
+static unsigned int inline norm_fsc8(v4l2_std_id norm)
|
|
|
{
|
|
|
- if (norm->id & V4L2_STD_PAL_M)
|
|
|
+ if (norm & V4L2_STD_PAL_M)
|
|
|
return 28604892; // 3.575611 MHz
|
|
|
|
|
|
- if (norm->id & (V4L2_STD_PAL_Nc))
|
|
|
+ if (norm & (V4L2_STD_PAL_Nc))
|
|
|
return 28656448; // 3.582056 MHz
|
|
|
|
|
|
- if (norm->id & V4L2_STD_NTSC) // All NTSC/M and variants
|
|
|
+ if (norm & V4L2_STD_NTSC) // All NTSC/M and variants
|
|
|
return 28636360; // 3.57954545 MHz +/- 10 Hz
|
|
|
|
|
|
/* SECAM have also different sub carrier for chroma,
|
|
@@ -671,20 +671,20 @@ static unsigned int inline norm_fsc8(struct v4l2_tvnorm *norm)
|
|
|
return 35468950; // 4.43361875 MHz +/- 5 Hz
|
|
|
}
|
|
|
|
|
|
-static unsigned int inline norm_htotal(struct v4l2_tvnorm *norm)
|
|
|
+static unsigned int inline norm_htotal(v4l2_std_id norm)
|
|
|
{
|
|
|
|
|
|
unsigned int fsc4=norm_fsc8(norm)/2;
|
|
|
|
|
|
/* returns 4*FSC / vtotal / frames per seconds */
|
|
|
- return (norm->id & V4L2_STD_625_50) ?
|
|
|
+ return (norm & V4L2_STD_625_50) ?
|
|
|
((fsc4+312)/625+12)/25 :
|
|
|
((fsc4+262)/525*1001+15000)/30000;
|
|
|
}
|
|
|
|
|
|
-static unsigned int inline norm_vbipack(struct v4l2_tvnorm *norm)
|
|
|
+static unsigned int inline norm_vbipack(v4l2_std_id norm)
|
|
|
{
|
|
|
- return (norm->id & V4L2_STD_625_50) ? 511 : 400;
|
|
|
+ return (norm & V4L2_STD_625_50) ? 511 : 400;
|
|
|
}
|
|
|
|
|
|
int cx88_set_scale(struct cx88_core *core, unsigned int width, unsigned int height,
|
|
@@ -697,7 +697,7 @@ int cx88_set_scale(struct cx88_core *core, unsigned int width, unsigned int heig
|
|
|
dprintk(1,"set_scale: %dx%d [%s%s,%s]\n", width, height,
|
|
|
V4L2_FIELD_HAS_TOP(field) ? "T" : "",
|
|
|
V4L2_FIELD_HAS_BOTTOM(field) ? "B" : "",
|
|
|
- core->tvnorm->name);
|
|
|
+ v4l2_norm_to_name(core->tvnorm));
|
|
|
if (!V4L2_FIELD_HAS_BOTH(field))
|
|
|
height *= 2;
|
|
|
|
|
@@ -734,7 +734,7 @@ int cx88_set_scale(struct cx88_core *core, unsigned int width, unsigned int heig
|
|
|
// setup filters
|
|
|
value = 0;
|
|
|
value |= (1 << 19); // CFILT (default)
|
|
|
- if (core->tvnorm->id & V4L2_STD_SECAM) {
|
|
|
+ if (core->tvnorm & V4L2_STD_SECAM) {
|
|
|
value |= (1 << 15);
|
|
|
value |= (1 << 16);
|
|
|
}
|
|
@@ -831,36 +831,36 @@ int cx88_stop_audio_dma(struct cx88_core *core)
|
|
|
|
|
|
static int set_tvaudio(struct cx88_core *core)
|
|
|
{
|
|
|
- struct v4l2_tvnorm *norm = core->tvnorm;
|
|
|
+ v4l2_std_id norm = core->tvnorm;
|
|
|
|
|
|
if (CX88_VMUX_TELEVISION != INPUT(core->input)->type)
|
|
|
return 0;
|
|
|
|
|
|
- if (V4L2_STD_PAL_BG & norm->id) {
|
|
|
+ if (V4L2_STD_PAL_BG & norm) {
|
|
|
core->tvaudio = WW_BG;
|
|
|
|
|
|
- } else if (V4L2_STD_PAL_DK & norm->id) {
|
|
|
+ } else if (V4L2_STD_PAL_DK & norm) {
|
|
|
core->tvaudio = WW_DK;
|
|
|
|
|
|
- } else if (V4L2_STD_PAL_I & norm->id) {
|
|
|
+ } else if (V4L2_STD_PAL_I & norm) {
|
|
|
core->tvaudio = WW_I;
|
|
|
|
|
|
- } else if (V4L2_STD_SECAM_L & norm->id) {
|
|
|
+ } else if (V4L2_STD_SECAM_L & norm) {
|
|
|
core->tvaudio = WW_L;
|
|
|
|
|
|
- } else if (V4L2_STD_SECAM_DK & norm->id) {
|
|
|
+ } else if (V4L2_STD_SECAM_DK & norm) {
|
|
|
core->tvaudio = WW_DK;
|
|
|
|
|
|
- } else if ((V4L2_STD_NTSC_M & norm->id) ||
|
|
|
- (V4L2_STD_PAL_M & norm->id)) {
|
|
|
+ } else if ((V4L2_STD_NTSC_M & norm) ||
|
|
|
+ (V4L2_STD_PAL_M & norm)) {
|
|
|
core->tvaudio = WW_BTSC;
|
|
|
|
|
|
- } else if (V4L2_STD_NTSC_M_JP & norm->id) {
|
|
|
+ } else if (V4L2_STD_NTSC_M_JP & norm) {
|
|
|
core->tvaudio = WW_EIAJ;
|
|
|
|
|
|
} else {
|
|
|
printk("%s/0: tvaudio support needs work for this tv norm [%s], sorry\n",
|
|
|
- core->name, norm->name);
|
|
|
+ core->name, v4l2_norm_to_name(core->tvnorm));
|
|
|
core->tvaudio = 0;
|
|
|
return 0;
|
|
|
}
|
|
@@ -879,7 +879,7 @@ static int set_tvaudio(struct cx88_core *core)
|
|
|
|
|
|
|
|
|
|
|
|
-int cx88_set_tvnorm(struct cx88_core *core, struct v4l2_tvnorm *norm)
|
|
|
+int cx88_set_tvnorm(struct cx88_core *core, v4l2_std_id norm)
|
|
|
{
|
|
|
u32 fsc8;
|
|
|
u32 adc_clock;
|
|
@@ -896,28 +896,28 @@ int cx88_set_tvnorm(struct cx88_core *core, struct v4l2_tvnorm *norm)
|
|
|
step_db = fsc8;
|
|
|
step_dr = fsc8;
|
|
|
|
|
|
- if (norm->id & V4L2_STD_NTSC_M_JP) {
|
|
|
+ if (norm & V4L2_STD_NTSC_M_JP) {
|
|
|
cxiformat = VideoFormatNTSCJapan;
|
|
|
cxoformat = 0x181f0008;
|
|
|
- } else if (norm->id & V4L2_STD_NTSC_443) {
|
|
|
+ } else if (norm & V4L2_STD_NTSC_443) {
|
|
|
cxiformat = VideoFormatNTSC443;
|
|
|
cxoformat = 0x181f0008;
|
|
|
- } else if (norm->id & V4L2_STD_PAL_M) {
|
|
|
+ } else if (norm & V4L2_STD_PAL_M) {
|
|
|
cxiformat = VideoFormatPALM;
|
|
|
cxoformat = 0x1c1f0008;
|
|
|
- } else if (norm->id & V4L2_STD_PAL_N) {
|
|
|
+ } else if (norm & V4L2_STD_PAL_N) {
|
|
|
cxiformat = VideoFormatPALN;
|
|
|
cxoformat = 0x1c1f0008;
|
|
|
- } else if (norm->id & V4L2_STD_PAL_Nc) {
|
|
|
+ } else if (norm & V4L2_STD_PAL_Nc) {
|
|
|
cxiformat = VideoFormatPALNC;
|
|
|
cxoformat = 0x1c1f0008;
|
|
|
- } else if (norm->id & V4L2_STD_PAL_60) {
|
|
|
+ } else if (norm & V4L2_STD_PAL_60) {
|
|
|
cxiformat = VideoFormatPAL60;
|
|
|
cxoformat = 0x181f0008;
|
|
|
- } else if (norm->id & V4L2_STD_NTSC) {
|
|
|
+ } else if (norm & V4L2_STD_NTSC) {
|
|
|
cxiformat = VideoFormatNTSC;
|
|
|
cxoformat = 0x181f0008;
|
|
|
- } else if (norm->id & V4L2_STD_SECAM) {
|
|
|
+ } else if (norm & V4L2_STD_SECAM) {
|
|
|
step_db = 4250000 * 8;
|
|
|
step_dr = 4406250 * 8;
|
|
|
|
|
@@ -929,7 +929,8 @@ int cx88_set_tvnorm(struct cx88_core *core, struct v4l2_tvnorm *norm)
|
|
|
}
|
|
|
|
|
|
dprintk(1,"set_tvnorm: \"%s\" fsc8=%d adc=%d vdec=%d db/dr=%d/%d\n",
|
|
|
- norm->name, fsc8, adc_clock, vdec_clock, step_db, step_dr);
|
|
|
+ v4l2_norm_to_name(core->tvnorm), fsc8, adc_clock, vdec_clock,
|
|
|
+ step_db, step_dr);
|
|
|
set_pll(core,2,vdec_clock);
|
|
|
|
|
|
dprintk(1,"set_tvnorm: MO_INPUT_FORMAT 0x%08x [old=0x%08x]\n",
|
|
@@ -988,7 +989,7 @@ int cx88_set_tvnorm(struct cx88_core *core, struct v4l2_tvnorm *norm)
|
|
|
set_tvaudio(core);
|
|
|
|
|
|
// tell i2c chips
|
|
|
- cx88_call_i2c_clients(core,VIDIOC_S_STD,&norm->id);
|
|
|
+ cx88_call_i2c_clients(core,VIDIOC_S_STD,&norm);
|
|
|
|
|
|
// done
|
|
|
return 0;
|