diff options
Diffstat (limited to 'linux/drivers/media/video/saa7115.c')
-rw-r--r-- | linux/drivers/media/video/saa7115.c | 674 |
1 files changed, 339 insertions, 335 deletions
diff --git a/linux/drivers/media/video/saa7115.c b/linux/drivers/media/video/saa7115.c index 4b5e09adc..2db998717 100644 --- a/linux/drivers/media/video/saa7115.c +++ b/linux/drivers/media/video/saa7115.c @@ -123,41 +123,41 @@ static inline int saa7115_read(struct i2c_client *client, u8 reg) static const unsigned char saa7115_init_auto_input[] = { /* Front-End Part */ - INC_DELAY, 0x48, /* white peak control disabled */ - ANALOG_INPUT_CNTL_2, 0x20, /* was 0x30. 0x20: long vertical blanking */ - ANALOG_INPUT_CNTL_3, 0x90, /* analog gain set to 0 */ - ANALOG_INPUT_CNTL_4, 0x90, /* analog gain set to 0 */ + R_01_INC_DELAY, 0x48, /* white peak control disabled */ + R_03_INPUT_CNTL_2, 0x20, /* was 0x30. 0x20: long vertical blanking */ + R_04_INPUT_CNTL_3, 0x90, /* analog gain set to 0 */ + R_05_INPUT_CNTL_4, 0x90, /* analog gain set to 0 */ /* Decoder Part */ - HORIZ_SYNC_START, 0xeb, /* horiz sync begin = -21 */ - HORIZ_SYNC_STOP, 0xe0, /* horiz sync stop = -17 */ - LUMA_BRIGHTNESS_CNTL, 0x80, /* was 0x88. decoder brightness, 0x80 is itu standard */ - LUMA_CONTRAST_CNTL, 0x44, /* was 0x48. decoder contrast, 0x44 is itu standard */ - CHROMA_SATURATION_CNTL, 0x40, /* was 0x47. decoder saturation, 0x40 is itu standard */ - CHROMA_HUE_CNTL, 0x00, - CHROMA_GAIN_CNTL, 0x00, /* use automatic gain */ - CHROMA_CNTL_2, 0x06, /* chroma: active adaptive combfilter */ - MODE_DELAY_CNTL, 0x00, - RT_SIGNAL_CNTL, 0x9d, /* RTS0 output control: VGATE */ - RT_X_PORT_OUTPUT_CNTL, 0x80, /* ITU656 standard mode, RTCO output enable RTCE */ - ANALOG_ADC_COMPAT_CNTL, 0x00, - RAW_DATA_GAIN_CNTL, 0x40, /* gain 0x00 = nominal */ - RAW_DATA_OFF_CNTL, 0x80, - COLOR_KILLER_LEVEL_CNTL, 0x77, /* recommended value */ - MISC_TVVCRDET, 0x42, /* recommended value */ - ENHANCED_COMB_CTRL1, 0xa9, /* recommended value */ - ENHANCED_COMB_CTRL2, 0x01, /* recommended value */ + R_06_H_SYNC_START, 0xeb, /* horiz sync begin = -21 */ + R_07_H_SYNC_STOP, 0xe0, /* horiz sync stop = -17 */ + R_0A_LUMA_BRIGHT_CNTL, 0x80, /* was 0x88. decoder brightness, 0x80 is itu standard */ + R_0B_LUMA_CONTRAST_CNTL, 0x44, /* was 0x48. decoder contrast, 0x44 is itu standard */ + R_0C_CHROMA_SAT_CNTL, 0x40, /* was 0x47. decoder saturation, 0x40 is itu standard */ + R_0D_CHROMA_HUE_CNTL, 0x00, + R_0F_CHROMA_GAIN_CNTL, 0x00, /* use automatic gain */ + R_10_CHROMA_CNTL_2, 0x06, /* chroma: active adaptive combfilter */ + R_11_MODE_DELAY_CNTL, 0x00, + R_12_RT_SIGNAL_CNTL, 0x9d, /* RTS0 output control: VGATE */ + R_13_RT_X_PORT_OUT_CNTL, 0x80, /* ITU656 standard mode, RTCO output enable RTCE */ + R_14_ANAL_ADC_COMPAT_CNTL, 0x00, + R_18_RAW_DATA_GAIN_CNTL, 0x40, /* gain 0x00 = nominal */ + R_19_RAW_DATA_OFF_CNTL, 0x80, + R_1A_COLOR_KILL_LVL_CNTL, 0x77, /* recommended value */ + R_1B_MISC_TVVCRDET, 0x42, /* recommended value */ + R_1C_ENHAN_COMB_CTRL1, 0xa9, /* recommended value */ + R_1D_ENHAN_COMB_CTRL2, 0x01, /* recommended value */ /* Power Device Control */ - POWER_SAVE_ADC_PORT_CNTL, 0xd0, /* reset device */ - POWER_SAVE_ADC_PORT_CNTL, 0xf0, /* set device programmed, all in operational mode */ + R_88_POWER_SAVE_ADC_PORT_CNTL, 0xd0, /* reset device */ + R_88_POWER_SAVE_ADC_PORT_CNTL, 0xf0, /* set device programmed, all in operational mode */ 0x00, 0x00 }; static const unsigned char saa7115_cfg_reset_scaler[] = { - I_PORT_I_O_ENABLE_OUTPUT_CLOCK_AND_GATED, 0x00, /* disable I-port output */ - POWER_SAVE_ADC_PORT_CNTL, 0xd0, /* reset scaler */ - POWER_SAVE_ADC_PORT_CNTL, 0xf0, /* activate scaler */ - I_PORT_I_O_ENABLE_OUTPUT_CLOCK_AND_GATED, 0x01, /* enable I-port output */ + R_87_I_PORT_I_O_ENA_OUT_CLK_AND_GATED, 0x00, /* disable I-port output */ + R_88_POWER_SAVE_ADC_PORT_CNTL, 0xd0, /* reset scaler */ + R_88_POWER_SAVE_ADC_PORT_CNTL, 0xf0, /* activate scaler */ + R_87_I_PORT_I_O_ENA_OUT_CLK_AND_GATED, 0x01, /* enable I-port output */ 0x00, 0x00 }; @@ -165,234 +165,234 @@ static const unsigned char saa7115_cfg_reset_scaler[] = { static const unsigned char saa7115_cfg_60hz_fullres_x[] = { /* hsize = 0x2d0 = 720 */ - B_HORIZ_OUTPUT_WINDOW_LENGTH, 0xd0, - B_HORIZ_OUTPUT_WINDOW_LENGTH_MSB, 0x02, + R_CC_B_HORIZ_OUTPUT_WINDOW_LENGTH, 0xd0, + R_CD_B_HORIZ_OUTPUT_WINDOW_LENGTH_MSB, 0x02, /* Why not in 60hz-Land, too? */ - B_HORIZ_PRESCALING, 0x01, /* downscale = 1 */ + R_D0_B_HORIZ_PRESCALING, 0x01, /* downscale = 1 */ /* hor lum scaling 0x0400 = 1 */ - B_HORIZ_LUMA_SCALING_INC, 0x00, - B_HORIZ_LUMA_SCALING_INC_MSB, 0x04, + R_D8_B_HORIZ_LUMA_SCALING_INC, 0x00, + R_D9_B_HORIZ_LUMA_SCALING_INC_MSB, 0x04, /* must be hor lum scaling / 2 */ - B_HORIZ_CHROMA_SCALING, 0x00, - B_HORIZ_CHROMA_SCALING_MSB, 0x02, + R_DC_B_HORIZ_CHROMA_SCALING, 0x00, + R_DD_B_HORIZ_CHROMA_SCALING_MSB, 0x02, 0x00, 0x00 }; static const unsigned char saa7115_cfg_60hz_fullres_y[] = { /* output window size = 248 (but 60hz is 240?) */ - B_VERT_OUTPUT_WINDOW_LENGTH, 0xf8, - B_VERT_OUTPUT_WINDOW_LENGTH_MSB, 0x00, + R_CE_B_VERT_OUTPUT_WINDOW_LENGTH, 0xf8, + R_CF_B_VERT_OUTPUT_WINDOW_LENGTH_MSB, 0x00, /* Why not in 60hz-Land, too? */ - B_LUMA_CONTRAST_CNTL, 0x40, /* Lum contrast, nominal value = 0x40 */ - B_CHROMA_SATURATION_CNTL, 0x40, /* Chroma satur. nominal value = 0x80 */ + R_D5_B_LUMA_CONTRAST_CNTL, 0x40, /* Lum contrast, nominal value = 0x40 */ + R_D6_B_CHROMA_SATURATION_CNTL, 0x40, /* Chroma satur. nominal value = 0x80 */ - B_VERT_LUMA_SCALING_INC, 0x00, - B_VERT_LUMA_SCALING_INC_MSB, 0x04, + R_E0_B_VERT_LUMA_SCALING_INC, 0x00, + R_E1_B_VERT_LUMA_SCALING_INC_MSB, 0x04, - B_VERT_CHROMA_SCALING_INC, 0x00, - B_VERT_CHROMA_SCALING_INC_MSB, 0x04, + R_E2_B_VERT_CHROMA_SCALING_INC, 0x00, + R_E3_B_VERT_CHROMA_SCALING_INC_MSB, 0x04, 0x00, 0x00 }; static const unsigned char saa7115_cfg_60hz_video[] = { - GLOBAL_CNTL_1, 0x00, /* reset tasks */ - POWER_SAVE_ADC_PORT_CNTL, 0xd0, /* reset scaler */ + R_80_GLOBAL_CNTL_1, 0x00, /* reset tasks */ + R_88_POWER_SAVE_ADC_PORT_CNTL, 0xd0, /* reset scaler */ - VGATE_START_FID_CHANGE, 0x03, - VGATE_STOP, 0x11, - MISC_VGATE_CONF_AND_MSBS, 0x9c, + R_15_VGATE_START_FID_CHG, 0x03, + R_16_VGATE_STOP, 0x11, + R_17_MISC_VGATE_CONF_AND_MSB, 0x9c, - SYNC_CNTL, 0x68, /* 0xBO: auto detection, 0x68 = NTSC */ - CHROMA_CNTL_1, 0x07, /* video autodetection is on */ + R_08_SYNC_CNTL, 0x68, /* 0xBO: auto detection, 0x68 = NTSC */ + R_0E_CHROMA_CNTL_1, 0x07, /* video autodetection is on */ - VERT_OFF_FOR_SLICER, 0x06, /* standard 60hz value for ITU656 line counting */ + R_5A_V_OFF_FOR_SLICER, 0x06, /* standard 60hz value for ITU656 line counting */ /* Task A */ - A_TASK_HANDLING_CNTL, 0x80, - A_X_PORT_FORMATS_AND_CONF, 0x48, - A_X_PORT_INPUT_REFERENCE_SIGNAL, 0x40, - A_I_PORT_OUTPUT_FORMATS_AND_CONF, 0x84, + R_90_A_TASK_HANDLING_CNTL, 0x80, + R_91_A_X_PORT_FORMATS_AND_CONF, 0x48, + R_92_A_X_PORT_INPUT_REFERENCE_SIGNAL, 0x40, + R_93_A_I_PORT_OUTPUT_FORMATS_AND_CONF, 0x84, /* hoffset low (input), 0x0002 is minimum */ - A_HORIZ_INPUT_WINDOW_START, 0x01, - A_HORIZ_INPUT_WINDOW_START_MSB, 0x00, + R_94_A_HORIZ_INPUT_WINDOW_START, 0x01, + R_95_A_HORIZ_INPUT_WINDOW_START_MSB, 0x00, /* hsize low (input), 0x02d0 = 720 */ - A_HORIZ_INPUT_WINDOW_LENGTH, 0xd0, - A_HORIZ_INPUT_WINDOW_LENGTH_MSB, 0x02, + R_96_A_HORIZ_INPUT_WINDOW_LENGTH, 0xd0, + R_97_A_HORIZ_INPUT_WINDOW_LENGTH_MSB, 0x02, - A_VERT_INPUT_WINDOW_START, 0x05, - A_VERT_INPUT_WINDOW_START_MSB, 0x00, + R_98_A_VERT_INPUT_WINDOW_START, 0x05, + R_99_A_VERT_INPUT_WINDOW_START_MSB, 0x00, - A_VERT_INPUT_WINDOW_LENGTH, 0x0c, - A_VERT_INPUT_WINDOW_LENGTH_MSB, 0x00, + R_9A_A_VERT_INPUT_WINDOW_LENGTH, 0x0c, + R_9B_A_VERT_INPUT_WINDOW_LENGTH_MSB, 0x00, - A_HORIZ_OUTPUT_WINDOW_LENGTH, 0xa0, - A_HORIZ_OUTPUT_WINDOW_LENGTH_MSB, 0x05, + R_9C_A_HORIZ_OUTPUT_WINDOW_LENGTH, 0xa0, + R_9D_A_HORIZ_OUTPUT_WINDOW_LENGTH_MSB, 0x05, - A_VERT_OUTPUT_WINDOW_LENGTH, 0x0c, - A_VERT_OUTPUT_WINDOW_LENGTH_MSB, 0x00, + R_9E_A_VERT_OUTPUT_WINDOW_LENGTH, 0x0c, + R_9F_A_VERT_OUTPUT_WINDOW_LENGTH_MSB, 0x00, /* Task B */ - B_TASK_HANDLING_CNTL, 0x00, - B_X_PORT_FORMATS_AND_CONF, 0x08, - B_INPUT_REFERENCE_SIGNAL_DEFINITION, 0x00, - B_I_PORT_FORMATS_AND_CONF, 0x80, + R_C0_B_TASK_HANDLING_CNTL, 0x00, + R_C1_B_X_PORT_FORMATS_AND_CONF, 0x08, + R_C2_B_INPUT_REFERENCE_SIGNAL_DEFINITION, 0x00, + R_C3_B_I_PORT_FORMATS_AND_CONF, 0x80, /* 0x0002 is minimum */ - B_HORIZ_INPUT_WINDOW_START, 0x02, - B_HORIZ_INPUT_WINDOW_START_MSB, 0x00, + R_C4_B_HORIZ_INPUT_WINDOW_START, 0x02, + R_C5_B_HORIZ_INPUT_WINDOW_START_MSB, 0x00, /* 0x02d0 = 720 */ - B_HORIZ_INPUT_WINDOW_LENGTH, 0xd0, - B_HORIZ_INPUT_WINDOW_LENGTH_MSB, 0x02, + R_C6_B_HORIZ_INPUT_WINDOW_LENGTH, 0xd0, + R_C7_B_HORIZ_INPUT_WINDOW_LENGTH_MSB, 0x02, /* vwindow start 0x12 = 18 */ - B_VERT_INPUT_WINDOW_START, 0x12, - B_VERT_INPUT_WINDOW_START_MSB, 0x00, + R_C8_B_VERT_INPUT_WINDOW_START, 0x12, + R_C9_B_VERT_INPUT_WINDOW_START_MSB, 0x00, /* vwindow length 0xf8 = 248 */ - B_VERT_INPUT_WINDOW_LENGTH, 0xf8, - B_VERT_INPUT_WINDOW_LENGTH_MSB, 0x00, + R_CA_B_VERT_INPUT_WINDOW_LENGTH, 0xf8, + R_CB_B_VERT_INPUT_WINDOW_LENGTH_MSB, 0x00, /* hwindow 0x02d0 = 720 */ - B_HORIZ_OUTPUT_WINDOW_LENGTH, 0xd0, - B_HORIZ_OUTPUT_WINDOW_LENGTH_MSB, 0x02, - - LFCO_PER_LINE, 0xad, /* Set PLL Register. 60hz 525 lines per frame, 27 MHz */ - P_I_PARAM_SELECT, 0x05, /* low bit with 0xF0 */ - PULSGEN_LINE_LENGTH, 0xad, - PULSE_A_POS_LSB_AND_PULSEGEN_CONFIG, 0x01, - - I_PORT_I_O_ENABLE_OUTPUT_CLOCK_AND_GATED, 0x00, /* Disable I-port output */ - POWER_SAVE_ADC_PORT_CNTL, 0xd0, /* reset scaler */ - GLOBAL_CNTL_1, 0x20, /* Activate only task "B", continuous mode (was 0xA0) */ - POWER_SAVE_ADC_PORT_CNTL, 0xf0, /* activate scaler */ - I_PORT_I_O_ENABLE_OUTPUT_CLOCK_AND_GATED, 0x01, /* Enable I-port output */ + R_CC_B_HORIZ_OUTPUT_WINDOW_LENGTH, 0xd0, + R_CD_B_HORIZ_OUTPUT_WINDOW_LENGTH_MSB, 0x02, + + R_F0_LFCO_PER_LINE, 0xad, /* Set PLL Register. 60hz 525 lines per frame, 27 MHz */ + R_F1_P_I_PARAM_SELECT, 0x05, /* low bit with 0xF0 */ + R_F5_PULSGEN_LINE_LENGTH, 0xad, + R_F6_PULSE_A_POS_LSB_AND_PULSEGEN_CONFIG, 0x01, + + R_87_I_PORT_I_O_ENA_OUT_CLK_AND_GATED, 0x00, /* Disable I-port output */ + R_88_POWER_SAVE_ADC_PORT_CNTL, 0xd0, /* reset scaler */ + R_80_GLOBAL_CNTL_1, 0x20, /* Activate only task "B", continuous mode (was 0xA0) */ + R_88_POWER_SAVE_ADC_PORT_CNTL, 0xf0, /* activate scaler */ + R_87_I_PORT_I_O_ENA_OUT_CLK_AND_GATED, 0x01, /* Enable I-port output */ 0x00, 0x00 }; static const unsigned char saa7115_cfg_50hz_fullres_x[] = { /* hsize low (output), 720 same as 60hz */ - B_HORIZ_OUTPUT_WINDOW_LENGTH, 0xd0, - B_HORIZ_OUTPUT_WINDOW_LENGTH_MSB, 0x02, + R_CC_B_HORIZ_OUTPUT_WINDOW_LENGTH, 0xd0, + R_CD_B_HORIZ_OUTPUT_WINDOW_LENGTH_MSB, 0x02, - B_HORIZ_PRESCALING, 0x01, /* down scale = 1 */ - B_HORIZ_LUMA_SCALING_INC, 0x00, /* hor lum scaling 0x0400 = 1 */ - B_HORIZ_LUMA_SCALING_INC_MSB, 0x04, + R_D0_B_HORIZ_PRESCALING, 0x01, /* down scale = 1 */ + R_D8_B_HORIZ_LUMA_SCALING_INC, 0x00, /* hor lum scaling 0x0400 = 1 */ + R_D9_B_HORIZ_LUMA_SCALING_INC_MSB, 0x04, /* must be hor lum scaling / 2 */ - B_HORIZ_CHROMA_SCALING, 0x00, - B_HORIZ_CHROMA_SCALING_MSB, 0x02, + R_DC_B_HORIZ_CHROMA_SCALING, 0x00, + R_DD_B_HORIZ_CHROMA_SCALING_MSB, 0x02, 0x00, 0x00 }; static const unsigned char saa7115_cfg_50hz_fullres_y[] = { /* vsize low (output), 0x0120 = 288 */ - B_VERT_OUTPUT_WINDOW_LENGTH, 0x20, - B_VERT_OUTPUT_WINDOW_LENGTH_MSB, 0x01, + R_CE_B_VERT_OUTPUT_WINDOW_LENGTH, 0x20, + R_CF_B_VERT_OUTPUT_WINDOW_LENGTH_MSB, 0x01, - B_LUMA_CONTRAST_CNTL, 0x40, /* Lum contrast, nominal value = 0x40 */ - B_CHROMA_SATURATION_CNTL, 0x40, /* Chroma satur. nominal value = 0x80 */ + R_D5_B_LUMA_CONTRAST_CNTL, 0x40, /* Lum contrast, nominal value = 0x40 */ + R_D6_B_CHROMA_SATURATION_CNTL, 0x40, /* Chroma satur. nominal value = 0x80 */ - B_VERT_LUMA_SCALING_INC, 0x00, - B_VERT_LUMA_SCALING_INC_MSB, 0x04, + R_E0_B_VERT_LUMA_SCALING_INC, 0x00, + R_E1_B_VERT_LUMA_SCALING_INC_MSB, 0x04, - B_VERT_CHROMA_SCALING_INC, 0x00, - B_VERT_CHROMA_SCALING_INC_MSB, 0x04, + R_E2_B_VERT_CHROMA_SCALING_INC, 0x00, + R_E3_B_VERT_CHROMA_SCALING_INC_MSB, 0x04, 0x00, 0x00 }; static const unsigned char saa7115_cfg_50hz_video[] = { - GLOBAL_CNTL_1, 0x00, - POWER_SAVE_ADC_PORT_CNTL, 0xd0, /* reset scaler */ + R_80_GLOBAL_CNTL_1, 0x00, + R_88_POWER_SAVE_ADC_PORT_CNTL, 0xd0, /* reset scaler */ - VGATE_START_FID_CHANGE, 0x37, /* VGATE start */ - VGATE_STOP, 0x16, - MISC_VGATE_CONF_AND_MSBS, 0x99, + R_15_VGATE_START_FID_CHG, 0x37, /* VGATE start */ + R_16_VGATE_STOP, 0x16, + R_17_MISC_VGATE_CONF_AND_MSB, 0x99, - SYNC_CNTL, 0x28, /* 0x28 = PAL */ - CHROMA_CNTL_1, 0x07, + R_08_SYNC_CNTL, 0x28, /* 0x28 = PAL */ + R_0E_CHROMA_CNTL_1, 0x07, - VERT_OFF_FOR_SLICER, 0x03, /* standard 50hz value */ + R_5A_V_OFF_FOR_SLICER, 0x03, /* standard 50hz value */ /* Task A */ - A_TASK_HANDLING_CNTL, 0x81, - A_X_PORT_FORMATS_AND_CONF, 0x48, - A_X_PORT_INPUT_REFERENCE_SIGNAL, 0x40, - A_I_PORT_OUTPUT_FORMATS_AND_CONF, 0x84, + R_90_A_TASK_HANDLING_CNTL, 0x81, + R_91_A_X_PORT_FORMATS_AND_CONF, 0x48, + R_92_A_X_PORT_INPUT_REFERENCE_SIGNAL, 0x40, + R_93_A_I_PORT_OUTPUT_FORMATS_AND_CONF, 0x84, /* This is weird: the datasheet says that you should use 2 as the minimum value, */ /* but Hauppauge uses 0, and changing that to 2 causes indeed problems (for 50hz) */ /* hoffset low (input), 0x0002 is minimum */ - A_HORIZ_INPUT_WINDOW_START, 0x00, - A_HORIZ_INPUT_WINDOW_START_MSB, 0x00, + R_94_A_HORIZ_INPUT_WINDOW_START, 0x00, + R_95_A_HORIZ_INPUT_WINDOW_START_MSB, 0x00, /* hsize low (input), 0x02d0 = 720 */ - A_HORIZ_INPUT_WINDOW_LENGTH, 0xd0, - A_HORIZ_INPUT_WINDOW_LENGTH_MSB, 0x02, + R_96_A_HORIZ_INPUT_WINDOW_LENGTH, 0xd0, + R_97_A_HORIZ_INPUT_WINDOW_LENGTH_MSB, 0x02, - A_VERT_INPUT_WINDOW_START, 0x03, - A_VERT_INPUT_WINDOW_START_MSB, 0x00, + R_98_A_VERT_INPUT_WINDOW_START, 0x03, + R_99_A_VERT_INPUT_WINDOW_START_MSB, 0x00, /* vsize 0x12 = 18 */ - A_VERT_INPUT_WINDOW_LENGTH, 0x12, - A_VERT_INPUT_WINDOW_LENGTH_MSB, 0x00, + R_9A_A_VERT_INPUT_WINDOW_LENGTH, 0x12, + R_9B_A_VERT_INPUT_WINDOW_LENGTH_MSB, 0x00, /* hsize 0x05a0 = 1440 */ - A_HORIZ_OUTPUT_WINDOW_LENGTH, 0xa0, - A_HORIZ_OUTPUT_WINDOW_LENGTH_MSB, 0x05, /* hsize hi (output) */ - A_VERT_OUTPUT_WINDOW_LENGTH, 0x12, /* vsize low (output), 0x12 = 18 */ - A_VERT_OUTPUT_WINDOW_LENGTH_MSB, 0x00, /* vsize hi (output) */ + R_9C_A_HORIZ_OUTPUT_WINDOW_LENGTH, 0xa0, + R_9D_A_HORIZ_OUTPUT_WINDOW_LENGTH_MSB, 0x05, /* hsize hi (output) */ + R_9E_A_VERT_OUTPUT_WINDOW_LENGTH, 0x12, /* vsize low (output), 0x12 = 18 */ + R_9F_A_VERT_OUTPUT_WINDOW_LENGTH_MSB, 0x00, /* vsize hi (output) */ /* Task B */ - B_TASK_HANDLING_CNTL, 0x00, - B_X_PORT_FORMATS_AND_CONF, 0x08, - B_INPUT_REFERENCE_SIGNAL_DEFINITION, 0x00, - B_I_PORT_FORMATS_AND_CONF, 0x80, + R_C0_B_TASK_HANDLING_CNTL, 0x00, + R_C1_B_X_PORT_FORMATS_AND_CONF, 0x08, + R_C2_B_INPUT_REFERENCE_SIGNAL_DEFINITION, 0x00, + R_C3_B_I_PORT_FORMATS_AND_CONF, 0x80, /* This is weird: the datasheet says that you should use 2 as the minimum value, */ /* but Hauppauge uses 0, and changing that to 2 causes indeed problems (for 50hz) */ /* hoffset low (input), 0x0002 is minimum. See comment above. */ - B_HORIZ_INPUT_WINDOW_START, 0x00, - B_HORIZ_INPUT_WINDOW_START_MSB, 0x00, + R_C4_B_HORIZ_INPUT_WINDOW_START, 0x00, + R_C5_B_HORIZ_INPUT_WINDOW_START_MSB, 0x00, /* hsize 0x02d0 = 720 */ - B_HORIZ_INPUT_WINDOW_LENGTH, 0xd0, - B_HORIZ_INPUT_WINDOW_LENGTH_MSB, 0x02, + R_C6_B_HORIZ_INPUT_WINDOW_LENGTH, 0xd0, + R_C7_B_HORIZ_INPUT_WINDOW_LENGTH_MSB, 0x02, /* voffset 0x16 = 22 */ - B_VERT_INPUT_WINDOW_START, 0x16, - B_VERT_INPUT_WINDOW_START_MSB, 0x00, + R_C8_B_VERT_INPUT_WINDOW_START, 0x16, + R_C9_B_VERT_INPUT_WINDOW_START_MSB, 0x00, /* vsize 0x0120 = 288 */ - B_VERT_INPUT_WINDOW_LENGTH, 0x20, - B_VERT_INPUT_WINDOW_LENGTH_MSB, 0x01, + R_CA_B_VERT_INPUT_WINDOW_LENGTH, 0x20, + R_CB_B_VERT_INPUT_WINDOW_LENGTH_MSB, 0x01, /* hsize 0x02d0 = 720 */ - B_HORIZ_OUTPUT_WINDOW_LENGTH, 0xd0, - B_HORIZ_OUTPUT_WINDOW_LENGTH_MSB, 0x02, + R_CC_B_HORIZ_OUTPUT_WINDOW_LENGTH, 0xd0, + R_CD_B_HORIZ_OUTPUT_WINDOW_LENGTH_MSB, 0x02, /* vsize 0x0120 = 288 */ - B_VERT_OUTPUT_WINDOW_LENGTH, 0x20, - B_VERT_OUTPUT_WINDOW_LENGTH_MSB, 0x01, + R_CE_B_VERT_OUTPUT_WINDOW_LENGTH, 0x20, + R_CF_B_VERT_OUTPUT_WINDOW_LENGTH_MSB, 0x01, - LFCO_PER_LINE, 0xb0, /* Set PLL Register. 50hz 625 lines per frame, 27 MHz */ - P_I_PARAM_SELECT, 0x05, /* low bit with 0xF0, (was 0x05) */ - PULSGEN_LINE_LENGTH, 0xb0, - PULSE_A_POS_LSB_AND_PULSEGEN_CONFIG, 0x01, + R_F0_LFCO_PER_LINE, 0xb0, /* Set PLL Register. 50hz 625 lines per frame, 27 MHz */ + R_F1_P_I_PARAM_SELECT, 0x05, /* low bit with 0xF0, (was 0x05) */ + R_F5_PULSGEN_LINE_LENGTH, 0xb0, + R_F6_PULSE_A_POS_LSB_AND_PULSEGEN_CONFIG, 0x01, - I_PORT_I_O_ENABLE_OUTPUT_CLOCK_AND_GATED, 0x00, /* Disable I-port output */ - POWER_SAVE_ADC_PORT_CNTL, 0xd0, /* reset scaler (was 0xD0) */ - GLOBAL_CNTL_1, 0x20, /* Activate only task "B" */ - POWER_SAVE_ADC_PORT_CNTL, 0xf0, /* activate scaler */ - I_PORT_I_O_ENABLE_OUTPUT_CLOCK_AND_GATED, 0x01, /* Enable I-port output */ + R_87_I_PORT_I_O_ENA_OUT_CLK_AND_GATED, 0x00, /* Disable I-port output */ + R_88_POWER_SAVE_ADC_PORT_CNTL, 0xd0, /* reset scaler (was 0xD0) */ + R_80_GLOBAL_CNTL_1, 0x20, /* Activate only task "B" */ + R_88_POWER_SAVE_ADC_PORT_CNTL, 0xf0, /* activate scaler */ + R_87_I_PORT_I_O_ENA_OUT_CLK_AND_GATED, 0x01, /* Enable I-port output */ 0x00, 0x00 }; @@ -400,195 +400,195 @@ static const unsigned char saa7115_cfg_50hz_video[] = { /* ============== SAA7715 VIDEO templates (end) ======= */ static const unsigned char saa7115_cfg_vbi_on[] = { - GLOBAL_CNTL_1, 0x00, /* reset tasks */ - POWER_SAVE_ADC_PORT_CNTL, 0xd0, /* reset scaler */ - GLOBAL_CNTL_1, 0x30, /* Activate both tasks */ - POWER_SAVE_ADC_PORT_CNTL, 0xf0, /* activate scaler */ - I_PORT_I_O_ENABLE_OUTPUT_CLOCK_AND_GATED, 0x01, /* Enable I-port output */ + R_80_GLOBAL_CNTL_1, 0x00, /* reset tasks */ + R_88_POWER_SAVE_ADC_PORT_CNTL, 0xd0, /* reset scaler */ + R_80_GLOBAL_CNTL_1, 0x30, /* Activate both tasks */ + R_88_POWER_SAVE_ADC_PORT_CNTL, 0xf0, /* activate scaler */ + R_87_I_PORT_I_O_ENA_OUT_CLK_AND_GATED, 0x01, /* Enable I-port output */ 0x00, 0x00 }; static const unsigned char saa7115_cfg_vbi_off[] = { - GLOBAL_CNTL_1, 0x00, /* reset tasks */ - POWER_SAVE_ADC_PORT_CNTL, 0xd0, /* reset scaler */ - GLOBAL_CNTL_1, 0x20, /* Activate only task "B" */ - POWER_SAVE_ADC_PORT_CNTL, 0xf0, /* activate scaler */ - I_PORT_I_O_ENABLE_OUTPUT_CLOCK_AND_GATED, 0x01, /* Enable I-port output */ + R_80_GLOBAL_CNTL_1, 0x00, /* reset tasks */ + R_88_POWER_SAVE_ADC_PORT_CNTL, 0xd0, /* reset scaler */ + R_80_GLOBAL_CNTL_1, 0x20, /* Activate only task "B" */ + R_88_POWER_SAVE_ADC_PORT_CNTL, 0xf0, /* activate scaler */ + R_87_I_PORT_I_O_ENA_OUT_CLK_AND_GATED, 0x01, /* Enable I-port output */ 0x00, 0x00 }; #if 1 /* saa7113 init codes */ static const unsigned char saa7113_init_auto_input[] = { - INC_DELAY, 0x08, - ANALOG_INPUT_CNTL_1, 0xc2, - ANALOG_INPUT_CNTL_2, 0x30, - ANALOG_INPUT_CNTL_3, 0x00, - ANALOG_INPUT_CNTL_4, 0x00, - HORIZ_SYNC_START, 0x89, - HORIZ_SYNC_STOP, 0x0d, - SYNC_CNTL, 0x88, - LUMA_CNTL, 0x01, - LUMA_BRIGHTNESS_CNTL, 0x80, - LUMA_CONTRAST_CNTL, 0x47, - CHROMA_SATURATION_CNTL, 0x40, - CHROMA_HUE_CNTL, 0x00, - CHROMA_CNTL_1, 0x01, - CHROMA_GAIN_CNTL, 0x2a, - CHROMA_CNTL_2, 0x08, - MODE_DELAY_CNTL, 0x0c, - RT_SIGNAL_CNTL, 0x07, - RT_X_PORT_OUTPUT_CNTL, 0x00, - ANALOG_ADC_COMPAT_CNTL, 0x00, - VGATE_START_FID_CHANGE, 0x00, - VGATE_STOP, 0x00, - MISC_VGATE_CONF_AND_MSBS, 0x00, + R_01_INC_DELAY, 0x08, + R_02_INPUT_CNTL_1, 0xc2, + R_03_INPUT_CNTL_2, 0x30, + R_04_INPUT_CNTL_3, 0x00, + R_05_INPUT_CNTL_4, 0x00, + R_06_H_SYNC_START, 0x89, + R_07_H_SYNC_STOP, 0x0d, + R_08_SYNC_CNTL, 0x88, + R_09_LUMA_CNTL, 0x01, + R_0A_LUMA_BRIGHT_CNTL, 0x80, + R_0B_LUMA_CONTRAST_CNTL, 0x47, + R_0C_CHROMA_SAT_CNTL, 0x40, + R_0D_CHROMA_HUE_CNTL, 0x00, + R_0E_CHROMA_CNTL_1, 0x01, + R_0F_CHROMA_GAIN_CNTL, 0x2a, + R_10_CHROMA_CNTL_2, 0x08, + R_11_MODE_DELAY_CNTL, 0x0c, + R_12_RT_SIGNAL_CNTL, 0x07, + R_13_RT_X_PORT_OUT_CNTL, 0x00, + R_14_ANAL_ADC_COMPAT_CNTL, 0x00, + R_15_VGATE_START_FID_CHG, 0x00, + R_16_VGATE_STOP, 0x00, + R_17_MISC_VGATE_CONF_AND_MSB, 0x00, 0x00, 0x00 }; #endif static const unsigned char saa7115_init_misc[] = { - VERT_SYNC_FLD_ID_SRC_SEL_AND_RETIMED_V_F, 0x01, + R_81_V_SYNC_FLD_ID_SRC_SEL_AND_RETIMED_V_F, 0x01, 0x82, 0x00, /* Reserved register - value should be zero*/ - X_PORT_I_O_ENABLE_AND_OUTPUT_CLOCK, 0x01, - I_PORT_SIGNAL_DEFINITIONS, 0x20, - I_PORT_SIGNAL_POLARITIES, 0x21, - I_PORT_FIFO_FLAG_CNTL_AND_ARBITRATION, 0xc5, - I_PORT_I_O_ENABLE_OUTPUT_CLOCK_AND_GATED, 0x01, + R_83_X_PORT_I_O_ENA_AND_OUT_CLK, 0x01, + R_84_I_PORT_SIGNAL_DEF, 0x20, + R_85_I_PORT_SIGNAL_POLAR, 0x21, + R_86_I_PORT_FIFO_FLAG_CNTL_AND_ARBIT, 0xc5, + R_87_I_PORT_I_O_ENA_OUT_CLK_AND_GATED, 0x01, /* Task A */ - A_HORIZ_PRESCALING, 0x01, - A_ACCUMULATION_LENGTH, 0x00, - A_PRESCALER_DC_GAIN_AND_FIR_PREFILTER, 0x00, + R_A0_A_HORIZ_PRESCALING, 0x01, + R_A1_A_ACCUMULATION_LENGTH, 0x00, + R_A2_A_PRESCALER_DC_GAIN_AND_FIR_PREFILTER, 0x00, /* Configure controls at nominal value*/ - A_LUMA_BRIGHTNESS_CNTL, 0x80, - A_LUMA_CONTRAST_CNTL, 0x40, - A_CHROMA_SATURATION_CNTL, 0x40, + R_A4_A_LUMA_BRIGHTNESS_CNTL, 0x80, + R_A5_A_LUMA_CONTRAST_CNTL, 0x40, + R_A6_A_CHROMA_SATURATION_CNTL, 0x40, /* note: 2 x zoom ensures that VBI lines have same length as video lines. */ - A_HORIZ_LUMA_SCALING_INC, 0x00, - A_HORIZ_LUMA_SCALING_INC_MSB, 0x02, + R_A8_A_HORIZ_LUMA_SCALING_INC, 0x00, + R_A9_A_HORIZ_LUMA_SCALING_INC_MSB, 0x02, - A_HORIZ_LUMA_PHASE_OFF, 0x00, + R_AA_A_HORIZ_LUMA_PHASE_OFF, 0x00, /* must be horiz lum scaling / 2 */ - A_HORIZ_CHROMA_SCALING_INC, 0x00, - A_HORIZ_CHROMA_SCALING_INC_MSB, 0x01, + R_AC_A_HORIZ_CHROMA_SCALING_INC, 0x00, + R_AD_A_HORIZ_CHROMA_SCALING_INC_MSB, 0x01, /* must be offset luma / 2 */ - A_HORIZ_CHROMA_PHASE_OFF, 0x00, + R_AE_A_HORIZ_CHROMA_PHASE_OFF, 0x00, - A_VERT_LUMA_SCALING_INC, 0x00, - A_VERT_LUMA_SCALING_INC_MSB, 0x04, + R_B0_A_VERT_LUMA_SCALING_INC, 0x00, + R_B1_A_VERT_LUMA_SCALING_INC_MSB, 0x04, - A_VERT_CHROMA_SCALING_INC, 0x00, - A_VERT_CHROMA_SCALING_INC_MSB, 0x04, + R_B2_A_VERT_CHROMA_SCALING_INC, 0x00, + R_B3_A_VERT_CHROMA_SCALING_INC_MSB, 0x04, - A_VERT_SCALING_MODE_CNTL, 0x01, + R_B4_A_VERT_SCALING_MODE_CNTL, 0x01, - A_VERT_CHROMA_PHASE_OFF_00, 0x00, - A_VERT_CHROMA_PHASE_OFF_01, 0x00, - A_VERT_CHROMA_PHASE_OFF_10, 0x00, - A_VERT_CHROMA_PHASE_OFF_11, 0x00, + R_B8_A_VERT_CHROMA_PHASE_OFF_00, 0x00, + R_B9_A_VERT_CHROMA_PHASE_OFF_01, 0x00, + R_BA_A_VERT_CHROMA_PHASE_OFF_10, 0x00, + R_BB_A_VERT_CHROMA_PHASE_OFF_11, 0x00, - A_VERT_LUMA_PHASE_OFF_00, 0x00, - A_VERT_LUMA_PHASE_OFF_01, 0x00, - A_VERT_LUMA_PHASE_OFF_10, 0x00, - A_VERT_LUMA_PHASE_OFF_11, 0x00, + R_BC_A_VERT_LUMA_PHASE_OFF_00, 0x00, + R_BD_A_VERT_LUMA_PHASE_OFF_01, 0x00, + R_BE_A_VERT_LUMA_PHASE_OFF_10, 0x00, + R_BF_A_VERT_LUMA_PHASE_OFF_11, 0x00, /* Task B */ - B_HORIZ_PRESCALING, 0x01, - B_ACCUMULATION_LENGTH, 0x00, - B_PRESCALER_DC_GAIN_AND_FIR_PREFILTER, 0x00, + R_D0_B_HORIZ_PRESCALING, 0x01, + R_D1_B_ACCUMULATION_LENGTH, 0x00, + R_D2_B_PRESCALER_DC_GAIN_AND_FIR_PREFILTER, 0x00, /* Configure controls at nominal value*/ - B_LUMA_BRIGHTNESS_CNTL, 0x80, - B_LUMA_CONTRAST_CNTL, 0x40, - B_CHROMA_SATURATION_CNTL, 0x40, + R_D4_B_LUMA_BRIGHTNESS_CNTL, 0x80, + R_D5_B_LUMA_CONTRAST_CNTL, 0x40, + R_D6_B_CHROMA_SATURATION_CNTL, 0x40, /* hor lum scaling 0x0400 = 1 */ - B_HORIZ_LUMA_SCALING_INC, 0x00, - B_HORIZ_LUMA_SCALING_INC_MSB, 0x04, + R_D8_B_HORIZ_LUMA_SCALING_INC, 0x00, + R_D9_B_HORIZ_LUMA_SCALING_INC_MSB, 0x04, - B_HORIZ_LUMA_PHASE_OFF, 0x00, + R_DA_B_HORIZ_LUMA_PHASE_OFF, 0x00, /* must be hor lum scaling / 2 */ - B_HORIZ_CHROMA_SCALING, 0x00, - B_HORIZ_CHROMA_SCALING_MSB, 0x02, + R_DC_B_HORIZ_CHROMA_SCALING, 0x00, + R_DD_B_HORIZ_CHROMA_SCALING_MSB, 0x02, /* must be offset luma / 2 */ - B_HORIZ_PHASE_OFFSET_CRHOMA, 0x00, + R_DE_B_HORIZ_PHASE_OFFSET_CRHOMA, 0x00, - B_VERT_LUMA_SCALING_INC, 0x00, - B_VERT_LUMA_SCALING_INC_MSB, 0x04, + R_E0_B_VERT_LUMA_SCALING_INC, 0x00, + R_E1_B_VERT_LUMA_SCALING_INC_MSB, 0x04, - B_VERT_CHROMA_SCALING_INC, 0x00, - B_VERT_CHROMA_SCALING_INC_MSB, 0x04, + R_E2_B_VERT_CHROMA_SCALING_INC, 0x00, + R_E3_B_VERT_CHROMA_SCALING_INC_MSB, 0x04, - B_VERT_SCALING_MODE_CNTL, 0x01, + R_E4_B_VERT_SCALING_MODE_CNTL, 0x01, - B_VERT_CHROMA_PHASE_OFF_00, 0x00, - B_VERT_CHROMA_PHASE_OFF_01, 0x00, - B_VERT_CHROMA_PHASE_OFF_10, 0x00, - B_VERT_CHROMA_PHASE_OFF_11, 0x00, + R_E8_B_VERT_CHROMA_PHASE_OFF_00, 0x00, + R_E9_B_VERT_CHROMA_PHASE_OFF_01, 0x00, + R_EA_B_VERT_CHROMA_PHASE_OFF_10, 0x00, + R_EB_B_VERT_CHROMA_PHASE_OFF_11, 0x00, - B_VERT_LUMA_PHASE_OFF_00, 0x00, - B_VERT_LUMA_PHASE_OFF_01, 0x00, - B_VERT_LUMA_PHASE_OFF_10, 0x00, - B_VERT_LUMA_PHASE_OFF_11, 0x00, + R_EC_B_VERT_LUMA_PHASE_OFF_00, 0x00, + R_ED_B_VERT_LUMA_PHASE_OFF_01, 0x00, + R_EE_B_VERT_LUMA_PHASE_OFF_10, 0x00, + R_EF_B_VERT_LUMA_PHASE_OFF_11, 0x00, - NOMINAL_PLL2_DTO, 0x50, /* crystal clock = 24.576 MHz, target = 27MHz */ - PLL_INCREMENT, 0x46, - PLL2_STATUS, 0x00, - PULSE_A_POS_MSB, 0x4b, /* not the recommended settings! */ - PULSE_B_POS, 0x00, - PULSE_B_POS_MSB, 0x4b, - PULSE_C_POS, 0x00, - PULSE_C_POS_MSB, 0x4b, + R_F2_NOMINAL_PLL2_DTO, 0x50, /* crystal clock = 24.576 MHz, target = 27MHz */ + R_F3_PLL_INCREMENT, 0x46, + R_F4_PLL2_STATUS, 0x00, + R_F7_PULSE_A_POS_MSB, 0x4b, /* not the recommended settings! */ + R_F8_PULSE_B_POS, 0x00, + R_F9_PULSE_B_POS_MSB, 0x4b, + R_FA_PULSE_C_POS, 0x00, + R_FB_PULSE_C_POS_MSB, 0x4b, /* PLL2 lock detection settings: 71 lines 50% phase error */ - S_PLL_MAX_PHASE_ERR_THRESH_NUM_LINES, 0x88, + R_FF_S_PLL_MAX_PHASE_ERR_THRESH_NUM_LINES, 0x88, /* Turn off VBI */ - SLICER_CNTL_1, 0x20, /* No framing code errors allowed. */ - LCR, 0xff, - LCR+1, 0xff, - LCR+2, 0xff, - LCR+3, 0xff, - LCR+4, 0xff, - LCR+5, 0xff, - LCR+6, 0xff, - LCR+7, 0xff, - LCR+8, 0xff, - LCR+9, 0xff, - LCR+10, 0xff, - LCR+11, 0xff, - LCR+12, 0xff, - LCR+13, 0xff, - LCR+14, 0xff, - LCR+15, 0xff, - LCR+16, 0xff, - LCR+17, 0xff, - LCR+18, 0xff, - LCR+19, 0xff, - LCR+20, 0xff, - LCR+21, 0xff, - LCR+22, 0xff, - PROGRAMMABLE_FRAMING_CODE, 0x40, - HORIZ_OFF_FOR_SLICER, 0x47, - FIELD_OFF_AND_MSB_FOR_HORIZ_AND_VERT_OFF, 0x83, - DID, 0xbd, - SDID, 0x35, - - ANALOG_INPUT_CNTL_1, 0x84, /* input tuner -> input 4, amplifier active */ - LUMA_CNTL, 0x53, /* 0x53, was 0x56 for 60hz. luminance control */ - - GLOBAL_CNTL_1, 0x20, /* enable task B */ - POWER_SAVE_ADC_PORT_CNTL, 0xd0, - POWER_SAVE_ADC_PORT_CNTL, 0xf0, + R_40_SLICER_CNTL_1, 0x20, /* No framing code errors allowed. */ + R_41_LCR_BASE, 0xff, + R_41_LCR_BASE+1, 0xff, + R_41_LCR_BASE+2, 0xff, + R_41_LCR_BASE+3, 0xff, + R_41_LCR_BASE+4, 0xff, + R_41_LCR_BASE+5, 0xff, + R_41_LCR_BASE+6, 0xff, + R_41_LCR_BASE+7, 0xff, + R_41_LCR_BASE+8, 0xff, + R_41_LCR_BASE+9, 0xff, + R_41_LCR_BASE+10, 0xff, + R_41_LCR_BASE+11, 0xff, + R_41_LCR_BASE+12, 0xff, + R_41_LCR_BASE+13, 0xff, + R_41_LCR_BASE+14, 0xff, + R_41_LCR_BASE+15, 0xff, + R_41_LCR_BASE+16, 0xff, + R_41_LCR_BASE+17, 0xff, + R_41_LCR_BASE+18, 0xff, + R_41_LCR_BASE+19, 0xff, + R_41_LCR_BASE+20, 0xff, + R_41_LCR_BASE+21, 0xff, + R_41_LCR_BASE+22, 0xff, + R_58_PROGRAM_FRAMING_CODE, 0x40, + R_59_H_OFF_FOR_SLICER, 0x47, + R_5B_FLD_OFF_AND_MSB_FOR_H_AND_V_OFF, 0x83, + R_5D_DID, 0xbd, + R_5E_SDID, 0x35, + + R_02_INPUT_CNTL_1, 0x84, /* input tuner -> input 4, amplifier active */ + R_09_LUMA_CNTL, 0x53, /* 0x53, was 0x56 for 60hz. luminance control */ + + R_80_GLOBAL_CNTL_1, 0x20, /* enable task B */ + R_88_POWER_SAVE_ADC_PORT_CNTL, 0xd0, + R_88_POWER_SAVE_ADC_PORT_CNTL, 0xf0, 0x00, 0x00 }; @@ -716,15 +716,19 @@ static int saa7115_set_audio_clock_freq(struct i2c_client *client, u32 freq) if (state->apll) acc |= 0x08; - saa7115_write(client, CLOCK_RATIO_AMXCLK_TO_ASCLK, 0x03); - saa7115_write(client, CLOCK_RATIO_ASCLK_TO_ALRCLK, 0x10); - saa7115_write(client, AUDIO_CLOCK_GENERATOR_BASIC_SETUP, acc); - saa7115_write(client, AUDIO_MASTER_CLOCK_CYCLES_PER_FIELD, acpf & 0xff); - saa7115_write(client, 0x31, (acpf >> 8) & 0xff); - saa7115_write(client, 0x32, (acpf >> 16) & 0x03); - saa7115_write(client, AUDIO_MASTER_CLOCK_NOMINAL_INC, acni & 0xff); - saa7115_write(client, 0x35, (acni >> 8) & 0xff); - saa7115_write(client, 0x36, (acni >> 16) & 0x3f); + saa7115_write(client, R_38_CLK_RATIO_AMXCLK_TO_ASCLK, 0x03); + saa7115_write(client, R_39_CLK_RATIO_ASCLK_TO_ALRCLK, 0x10); + saa7115_write(client, R_3A_AUD_CLK_GEN_BASIC_SETUP, acc); + + saa7115_write(client, R_30_AUD_MAST_CLK_CYCLES_PER_FIELD, acpf & 0xff); + saa7115_write(client, R_30_AUD_MAST_CLK_CYCLES_PER_FIELD+1, + (acpf >> 8) & 0xff); + saa7115_write(client, R_30_AUD_MAST_CLK_CYCLES_PER_FIELD+2, + (acpf >> 16) & 0x03); + + saa7115_write(client, R_34_AUD_MAST_CLK_NOMINAL_INC, acni & 0xff); + saa7115_write(client, R_34_AUD_MAST_CLK_NOMINAL_INC+1, (acni >> 8) & 0xff); + saa7115_write(client, R_34_AUD_MAST_CLK_NOMINAL_INC+2, (acni >> 16) & 0x3f); state->audclk_freq = freq; return 0; } @@ -741,7 +745,7 @@ static int saa7115_set_v4lctrl(struct i2c_client *client, struct v4l2_control *c } state->bright = ctrl->value; - saa7115_write(client, LUMA_BRIGHTNESS_CNTL, state->bright); + saa7115_write(client, R_0A_LUMA_BRIGHT_CNTL, state->bright); break; case V4L2_CID_CONTRAST: @@ -751,7 +755,7 @@ static int saa7115_set_v4lctrl(struct i2c_client *client, struct v4l2_control *c } state->contrast = ctrl->value; - saa7115_write(client, LUMA_CONTRAST_CNTL, state->contrast); + saa7115_write(client, R_0B_LUMA_CONTRAST_CNTL, state->contrast); break; case V4L2_CID_SATURATION: @@ -761,7 +765,7 @@ static int saa7115_set_v4lctrl(struct i2c_client *client, struct v4l2_control *c } state->sat = ctrl->value; - saa7115_write(client, CHROMA_SATURATION_CNTL, state->sat); + saa7115_write(client, R_0C_CHROMA_SAT_CNTL, state->sat); break; case V4L2_CID_HUE: @@ -771,7 +775,7 @@ static int saa7115_set_v4lctrl(struct i2c_client *client, struct v4l2_control *c } state->hue = ctrl->value; - saa7115_write(client, CHROMA_HUE_CNTL, state->hue); + saa7115_write(client, R_0D_CHROMA_HUE_CNTL, state->hue); break; default: @@ -808,7 +812,7 @@ static int saa7115_get_v4lctrl(struct i2c_client *client, struct v4l2_control *c static void saa7115_set_v4lstd(struct i2c_client *client, v4l2_std_id std) { struct saa7115_state *state = i2c_get_clientdata(client); - int taskb = saa7115_read(client, GLOBAL_CNTL_1) & 0x10; + int taskb = saa7115_read(client, R_80_GLOBAL_CNTL_1) & 0x10; /* Prevent unnecessary standard changes. During a standard change the I-Port is temporarily disabled. Any devices @@ -839,7 +843,7 @@ static void saa7115_set_v4lstd(struct i2c_client *client, v4l2_std_id std) 100 reserved NTSC-Japan (3.58MHz) */ if (state->ident == V4L2_IDENT_SAA7113) { - u8 reg = saa7115_read(client, CHROMA_CNTL_1) & 0x8f; + u8 reg = saa7115_read(client, R_0E_CHROMA_CNTL_1) & 0x8f; if (std == V4L2_STD_PAL_M) { reg |= 0x30; @@ -850,7 +854,7 @@ static void saa7115_set_v4lstd(struct i2c_client *client, v4l2_std_id std) } else if (std == V4L2_STD_NTSC_M_JP) { reg |= 0x40; } - saa7115_write(client, CHROMA_CNTL_1, reg); + saa7115_write(client, R_0E_CHROMA_CNTL_1, reg); } @@ -882,7 +886,7 @@ static void saa7115_log_status(struct i2c_client *client) v4l_info(client, "Audio frequency: %d Hz\n", state->audclk_freq); if (state->ident != V4L2_IDENT_SAA7115) { /* status for the saa7114 */ - reg1f = saa7115_read(client, STATUS_BYTE_2_VIDEO_DECODER); + reg1f = saa7115_read(client, R_1F_STATUS_BYTE_2_VD_DEC); signalOk = (reg1f & 0xc1) == 0x81; v4l_info(client, "Video signal: %s\n", signalOk ? "ok" : "bad"); v4l_info(client, "Frequency: %s\n", (reg1f & 0x20) ? "60 Hz" : "50 Hz"); @@ -890,8 +894,8 @@ static void saa7115_log_status(struct i2c_client *client) } /* status for the saa7115 */ - reg1e = saa7115_read(client, STATUS_BYTE_1_VIDEO_DECODER); - reg1f = saa7115_read(client, STATUS_BYTE_2_VIDEO_DECODER); + reg1e = saa7115_read(client, R_1E_STATUS_BYTE_1_VD_DEC); + reg1f = saa7115_read(client, R_1F_STATUS_BYTE_2_VD_DEC); signalOk = (reg1f & 0xc1) == 0x81 && (reg1e & 0xc0) == 0x80; vcr = !(reg1f & 0x10); @@ -987,7 +991,7 @@ static void saa7115_set_lcr(struct i2c_client *client, struct v4l2_sliced_vbi_fo /* write the lcr registers */ for (i = 2; i <= 23; i++) { - saa7115_write(client, i - 2 + LCR, lcr[i]); + saa7115_write(client, i - 2 + R_41_LCR_BASE, lcr[i]); } /* enable/disable raw VBI capturing */ @@ -1012,10 +1016,10 @@ static int saa7115_get_v4lfmt(struct i2c_client *client, struct v4l2_format *fmt return -EINVAL; memset(sliced, 0, sizeof(*sliced)); /* done if using raw VBI */ - if (saa7115_read(client, GLOBAL_CNTL_1) & 0x10) + if (saa7115_read(client, R_80_GLOBAL_CNTL_1) & 0x10) return 0; for (i = 2; i <= 23; i++) { - u8 v = saa7115_read(client, i - 2 + LCR); + u8 v = saa7115_read(client, i - 2 + R_41_LCR_BASE); sliced->service_lines[0][i] = lcr2vbi[v >> 4]; sliced->service_lines[1][i] = lcr2vbi[v & 0xf]; @@ -1053,14 +1057,14 @@ static int saa7115_set_v4lfmt(struct i2c_client *client, struct v4l2_format *fmt /* probably have a valid size, let's set it */ /* Set output width/height */ /* width */ - saa7115_write(client, B_HORIZ_OUTPUT_WINDOW_LENGTH, + saa7115_write(client, R_CC_B_HORIZ_OUTPUT_WINDOW_LENGTH, (u8) (pix->width & 0xff)); - saa7115_write(client, B_HORIZ_OUTPUT_WINDOW_LENGTH_MSB, + saa7115_write(client, R_CD_B_HORIZ_OUTPUT_WINDOW_LENGTH_MSB, (u8) ((pix->width >> 8) & 0xff)); /* height */ - saa7115_write(client, B_VERT_OUTPUT_WINDOW_LENGTH, + saa7115_write(client, R_CE_B_VERT_OUTPUT_WINDOW_LENGTH, (u8) (pix->height & 0xff)); - saa7115_write(client, B_VERT_OUTPUT_WINDOW_LENGTH_MSB, + saa7115_write(client, R_CF_B_VERT_OUTPUT_WINDOW_LENGTH_MSB, (u8) ((pix->height >> 8) & 0xff)); /* Scaling settings */ @@ -1075,19 +1079,19 @@ static int saa7115_set_v4lfmt(struct i2c_client *client, struct v4l2_format *fmt v4l_dbg(1, debug, client, "Hpsc: 0x%05x, Hfsc: 0x%05x\n", HPSC, HFSC); /* FIXME hardcodes to "Task B" * write H prescaler integer */ - saa7115_write(client, B_HORIZ_PRESCALING, + saa7115_write(client, R_D0_B_HORIZ_PRESCALING, (u8) (HPSC & 0x3f)); /* write H fine-scaling (luminance) */ - saa7115_write(client, B_HORIZ_LUMA_SCALING_INC, + saa7115_write(client, R_D8_B_HORIZ_LUMA_SCALING_INC, (u8) (HFSC & 0xff)); - saa7115_write(client, B_HORIZ_LUMA_SCALING_INC_MSB, + saa7115_write(client, R_D9_B_HORIZ_LUMA_SCALING_INC_MSB, (u8) ((HFSC >> 8) & 0xff)); /* write H fine-scaling (chrominance) * must be lum/2, so i'll just bitshift :) */ - saa7115_write(client, B_HORIZ_CHROMA_SCALING, + saa7115_write(client, R_DC_B_HORIZ_CHROMA_SCALING, (u8) ((HFSC >> 1) & 0xff)); - saa7115_write(client, B_HORIZ_CHROMA_SCALING_MSB, + saa7115_write(client, R_DD_B_HORIZ_CHROMA_SCALING_MSB, (u8) ((HFSC >> 9) & 0xff)); } else { if (is_50hz) { @@ -1106,20 +1110,20 @@ static int saa7115_set_v4lfmt(struct i2c_client *client, struct v4l2_format *fmt v4l_dbg(1, debug, client, "Vsrc: %d, Vscy: 0x%05x\n", Vsrc, VSCY); /* Correct Contrast and Luminance */ - saa7115_write(client, B_LUMA_CONTRAST_CNTL, + saa7115_write(client, R_D5_B_LUMA_CONTRAST_CNTL, (u8) (64 * 1024 / VSCY)); - saa7115_write(client, B_CHROMA_SATURATION_CNTL, + saa7115_write(client, R_D6_B_CHROMA_SATURATION_CNTL, (u8) (64 * 1024 / VSCY)); /* write V fine-scaling (luminance) */ - saa7115_write(client, B_VERT_LUMA_SCALING_INC, + saa7115_write(client, R_E0_B_VERT_LUMA_SCALING_INC, (u8) (VSCY & 0xff)); - saa7115_write(client, B_VERT_LUMA_SCALING_INC_MSB, + saa7115_write(client, R_E1_B_VERT_LUMA_SCALING_INC_MSB, (u8) ((VSCY >> 8) & 0xff)); /* write V fine-scaling (chrominance) */ - saa7115_write(client, B_VERT_CHROMA_SCALING_INC, + saa7115_write(client, R_E2_B_VERT_CHROMA_SCALING_INC, (u8) (VSCY & 0xff)); - saa7115_write(client, B_VERT_CHROMA_SCALING_INC_MSB, + saa7115_write(client, R_E3_B_VERT_CHROMA_SCALING_INC_MSB, (u8) ((VSCY >> 8) & 0xff)); } else { if (is_50hz) { @@ -1139,7 +1143,7 @@ static int saa7115_set_v4lfmt(struct i2c_client *client, struct v4l2_format *fmt The format is described in the saa7115 datasheet in Tables 25 and 26 and in Figure 33. The current implementation uses SAV/EAV codes and not the ancillary data - headers. The vbi->p pointer points to the SDID byte right after the SAV + headers. The vbi->p pointer points to the R_5E_SDID byte right after the SAV code. */ static void saa7115_decode_vbi_line(struct i2c_client *client, struct v4l2_decode_vbi_line *vbi) @@ -1229,7 +1233,7 @@ static int saa7115_command(struct i2c_client *client, unsigned int cmd, void *ar if (state->radio) break; - status = saa7115_read(client, STATUS_BYTE_2_VIDEO_DECODER); + status = saa7115_read(client, R_1F_STATUS_BYTE_2_VD_DEC); v4l_dbg(1, debug, client, "status: 0x%02x\n", status); vt->signal = ((status & (1 << 6)) == 0) ? 0xffff : 0x0; @@ -1303,13 +1307,13 @@ static int saa7115_command(struct i2c_client *client, unsigned int cmd, void *ar state->input = route->input; /* select mode */ - saa7115_write(client, ANALOG_INPUT_CNTL_1, - (saa7115_read(client, ANALOG_INPUT_CNTL_1) & 0xf0) | + saa7115_write(client, R_02_INPUT_CNTL_1, + (saa7115_read(client, R_02_INPUT_CNTL_1) & 0xf0) | state->input); /* bypass chrominance trap for S-Video modes */ - saa7115_write(client, LUMA_CNTL, - (saa7115_read(client, LUMA_CNTL) & 0x7f) | + saa7115_write(client, R_09_LUMA_CNTL, + (saa7115_read(client, R_09_LUMA_CNTL) & 0x7f) | (state->input >= SAA7115_SVIDEO0 ? 0x80 : 0x0)); break; } @@ -1322,7 +1326,7 @@ static int saa7115_command(struct i2c_client *client, unsigned int cmd, void *ar if (state->enable != (cmd == VIDIOC_STREAMON)) { state->enable = (cmd == VIDIOC_STREAMON); saa7115_write(client, - I_PORT_I_O_ENABLE_OUTPUT_CLOCK_AND_GATED, + R_87_I_PORT_I_O_ENA_OUT_CLK_AND_GATED, state->enable); } break; @@ -1518,7 +1522,7 @@ static int saa7115_attach(struct i2c_adapter *adapter, int address, int kind) i2c_attach_client(client); v4l_dbg(1, debug, client, "status: (1E) 0x%02x, (1F) 0x%02x\n", - saa7115_read(client, STATUS_BYTE_1_VIDEO_DECODER), saa7115_read(client, STATUS_BYTE_2_VIDEO_DECODER)); + saa7115_read(client, R_1E_STATUS_BYTE_1_VD_DEC), saa7115_read(client, R_1F_STATUS_BYTE_2_VD_DEC)); #if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) MOD_INC_USE_COUNT; |