1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * drivers/media/i2c/tvp514x_regs.h 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright (C) 2008 Texas Instruments Inc 6*4882a593Smuzhiyun * Author: Vaibhav Hiremath <hvaibhav@ti.com> 7*4882a593Smuzhiyun * 8*4882a593Smuzhiyun * Contributors: 9*4882a593Smuzhiyun * Sivaraj R <sivaraj@ti.com> 10*4882a593Smuzhiyun * Brijesh R Jadav <brijesh.j@ti.com> 11*4882a593Smuzhiyun * Hardik Shah <hardik.shah@ti.com> 12*4882a593Smuzhiyun * Manjunath Hadli <mrh@ti.com> 13*4882a593Smuzhiyun * Karicheri Muralidharan <m-karicheri2@ti.com> 14*4882a593Smuzhiyun */ 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun #ifndef _TVP514X_REGS_H 17*4882a593Smuzhiyun #define _TVP514X_REGS_H 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun /* 20*4882a593Smuzhiyun * TVP5146/47 registers 21*4882a593Smuzhiyun */ 22*4882a593Smuzhiyun #define REG_INPUT_SEL (0x00) 23*4882a593Smuzhiyun #define REG_AFE_GAIN_CTRL (0x01) 24*4882a593Smuzhiyun #define REG_VIDEO_STD (0x02) 25*4882a593Smuzhiyun #define REG_OPERATION_MODE (0x03) 26*4882a593Smuzhiyun #define REG_AUTOSWITCH_MASK (0x04) 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun #define REG_COLOR_KILLER (0x05) 29*4882a593Smuzhiyun #define REG_LUMA_CONTROL1 (0x06) 30*4882a593Smuzhiyun #define REG_LUMA_CONTROL2 (0x07) 31*4882a593Smuzhiyun #define REG_LUMA_CONTROL3 (0x08) 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun #define REG_BRIGHTNESS (0x09) 34*4882a593Smuzhiyun #define REG_CONTRAST (0x0A) 35*4882a593Smuzhiyun #define REG_SATURATION (0x0B) 36*4882a593Smuzhiyun #define REG_HUE (0x0C) 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun #define REG_CHROMA_CONTROL1 (0x0D) 39*4882a593Smuzhiyun #define REG_CHROMA_CONTROL2 (0x0E) 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun /* 0x0F Reserved */ 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun #define REG_COMP_PR_SATURATION (0x10) 44*4882a593Smuzhiyun #define REG_COMP_Y_CONTRAST (0x11) 45*4882a593Smuzhiyun #define REG_COMP_PB_SATURATION (0x12) 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun /* 0x13 Reserved */ 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun #define REG_COMP_Y_BRIGHTNESS (0x14) 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun /* 0x15 Reserved */ 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun #define REG_AVID_START_PIXEL_LSB (0x16) 54*4882a593Smuzhiyun #define REG_AVID_START_PIXEL_MSB (0x17) 55*4882a593Smuzhiyun #define REG_AVID_STOP_PIXEL_LSB (0x18) 56*4882a593Smuzhiyun #define REG_AVID_STOP_PIXEL_MSB (0x19) 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun #define REG_HSYNC_START_PIXEL_LSB (0x1A) 59*4882a593Smuzhiyun #define REG_HSYNC_START_PIXEL_MSB (0x1B) 60*4882a593Smuzhiyun #define REG_HSYNC_STOP_PIXEL_LSB (0x1C) 61*4882a593Smuzhiyun #define REG_HSYNC_STOP_PIXEL_MSB (0x1D) 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun #define REG_VSYNC_START_LINE_LSB (0x1E) 64*4882a593Smuzhiyun #define REG_VSYNC_START_LINE_MSB (0x1F) 65*4882a593Smuzhiyun #define REG_VSYNC_STOP_LINE_LSB (0x20) 66*4882a593Smuzhiyun #define REG_VSYNC_STOP_LINE_MSB (0x21) 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun #define REG_VBLK_START_LINE_LSB (0x22) 69*4882a593Smuzhiyun #define REG_VBLK_START_LINE_MSB (0x23) 70*4882a593Smuzhiyun #define REG_VBLK_STOP_LINE_LSB (0x24) 71*4882a593Smuzhiyun #define REG_VBLK_STOP_LINE_MSB (0x25) 72*4882a593Smuzhiyun 73*4882a593Smuzhiyun /* 0x26 - 0x27 Reserved */ 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun #define REG_FAST_SWTICH_CONTROL (0x28) 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun /* 0x29 Reserved */ 78*4882a593Smuzhiyun 79*4882a593Smuzhiyun #define REG_FAST_SWTICH_SCART_DELAY (0x2A) 80*4882a593Smuzhiyun 81*4882a593Smuzhiyun /* 0x2B Reserved */ 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun #define REG_SCART_DELAY (0x2C) 84*4882a593Smuzhiyun #define REG_CTI_DELAY (0x2D) 85*4882a593Smuzhiyun #define REG_CTI_CONTROL (0x2E) 86*4882a593Smuzhiyun 87*4882a593Smuzhiyun /* 0x2F - 0x31 Reserved */ 88*4882a593Smuzhiyun 89*4882a593Smuzhiyun #define REG_SYNC_CONTROL (0x32) 90*4882a593Smuzhiyun #define REG_OUTPUT_FORMATTER1 (0x33) 91*4882a593Smuzhiyun #define REG_OUTPUT_FORMATTER2 (0x34) 92*4882a593Smuzhiyun #define REG_OUTPUT_FORMATTER3 (0x35) 93*4882a593Smuzhiyun #define REG_OUTPUT_FORMATTER4 (0x36) 94*4882a593Smuzhiyun #define REG_OUTPUT_FORMATTER5 (0x37) 95*4882a593Smuzhiyun #define REG_OUTPUT_FORMATTER6 (0x38) 96*4882a593Smuzhiyun #define REG_CLEAR_LOST_LOCK (0x39) 97*4882a593Smuzhiyun 98*4882a593Smuzhiyun #define REG_STATUS1 (0x3A) 99*4882a593Smuzhiyun #define REG_STATUS2 (0x3B) 100*4882a593Smuzhiyun 101*4882a593Smuzhiyun #define REG_AGC_GAIN_STATUS_LSB (0x3C) 102*4882a593Smuzhiyun #define REG_AGC_GAIN_STATUS_MSB (0x3D) 103*4882a593Smuzhiyun 104*4882a593Smuzhiyun /* 0x3E Reserved */ 105*4882a593Smuzhiyun 106*4882a593Smuzhiyun #define REG_VIDEO_STD_STATUS (0x3F) 107*4882a593Smuzhiyun #define REG_GPIO_INPUT1 (0x40) 108*4882a593Smuzhiyun #define REG_GPIO_INPUT2 (0x41) 109*4882a593Smuzhiyun 110*4882a593Smuzhiyun /* 0x42 - 0x45 Reserved */ 111*4882a593Smuzhiyun 112*4882a593Smuzhiyun #define REG_AFE_COARSE_GAIN_CH1 (0x46) 113*4882a593Smuzhiyun #define REG_AFE_COARSE_GAIN_CH2 (0x47) 114*4882a593Smuzhiyun #define REG_AFE_COARSE_GAIN_CH3 (0x48) 115*4882a593Smuzhiyun #define REG_AFE_COARSE_GAIN_CH4 (0x49) 116*4882a593Smuzhiyun 117*4882a593Smuzhiyun #define REG_AFE_FINE_GAIN_PB_B_LSB (0x4A) 118*4882a593Smuzhiyun #define REG_AFE_FINE_GAIN_PB_B_MSB (0x4B) 119*4882a593Smuzhiyun #define REG_AFE_FINE_GAIN_Y_G_CHROMA_LSB (0x4C) 120*4882a593Smuzhiyun #define REG_AFE_FINE_GAIN_Y_G_CHROMA_MSB (0x4D) 121*4882a593Smuzhiyun #define REG_AFE_FINE_GAIN_PR_R_LSB (0x4E) 122*4882a593Smuzhiyun #define REG_AFE_FINE_GAIN_PR_R_MSB (0x4F) 123*4882a593Smuzhiyun #define REG_AFE_FINE_GAIN_CVBS_LUMA_LSB (0x50) 124*4882a593Smuzhiyun #define REG_AFE_FINE_GAIN_CVBS_LUMA_MSB (0x51) 125*4882a593Smuzhiyun 126*4882a593Smuzhiyun /* 0x52 - 0x68 Reserved */ 127*4882a593Smuzhiyun 128*4882a593Smuzhiyun #define REG_FBIT_VBIT_CONTROL1 (0x69) 129*4882a593Smuzhiyun 130*4882a593Smuzhiyun /* 0x6A - 0x6B Reserved */ 131*4882a593Smuzhiyun 132*4882a593Smuzhiyun #define REG_BACKEND_AGC_CONTROL (0x6C) 133*4882a593Smuzhiyun 134*4882a593Smuzhiyun /* 0x6D - 0x6E Reserved */ 135*4882a593Smuzhiyun 136*4882a593Smuzhiyun #define REG_AGC_DECREMENT_SPEED_CONTROL (0x6F) 137*4882a593Smuzhiyun #define REG_ROM_VERSION (0x70) 138*4882a593Smuzhiyun 139*4882a593Smuzhiyun /* 0x71 - 0x73 Reserved */ 140*4882a593Smuzhiyun 141*4882a593Smuzhiyun #define REG_AGC_WHITE_PEAK_PROCESSING (0x74) 142*4882a593Smuzhiyun #define REG_FBIT_VBIT_CONTROL2 (0x75) 143*4882a593Smuzhiyun #define REG_VCR_TRICK_MODE_CONTROL (0x76) 144*4882a593Smuzhiyun #define REG_HORIZONTAL_SHAKE_INCREMENT (0x77) 145*4882a593Smuzhiyun #define REG_AGC_INCREMENT_SPEED (0x78) 146*4882a593Smuzhiyun #define REG_AGC_INCREMENT_DELAY (0x79) 147*4882a593Smuzhiyun 148*4882a593Smuzhiyun /* 0x7A - 0x7F Reserved */ 149*4882a593Smuzhiyun 150*4882a593Smuzhiyun #define REG_CHIP_ID_MSB (0x80) 151*4882a593Smuzhiyun #define REG_CHIP_ID_LSB (0x81) 152*4882a593Smuzhiyun 153*4882a593Smuzhiyun /* 0x82 Reserved */ 154*4882a593Smuzhiyun 155*4882a593Smuzhiyun #define REG_CPLL_SPEED_CONTROL (0x83) 156*4882a593Smuzhiyun 157*4882a593Smuzhiyun /* 0x84 - 0x96 Reserved */ 158*4882a593Smuzhiyun 159*4882a593Smuzhiyun #define REG_STATUS_REQUEST (0x97) 160*4882a593Smuzhiyun 161*4882a593Smuzhiyun /* 0x98 - 0x99 Reserved */ 162*4882a593Smuzhiyun 163*4882a593Smuzhiyun #define REG_VERTICAL_LINE_COUNT_LSB (0x9A) 164*4882a593Smuzhiyun #define REG_VERTICAL_LINE_COUNT_MSB (0x9B) 165*4882a593Smuzhiyun 166*4882a593Smuzhiyun /* 0x9C - 0x9D Reserved */ 167*4882a593Smuzhiyun 168*4882a593Smuzhiyun #define REG_AGC_DECREMENT_DELAY (0x9E) 169*4882a593Smuzhiyun 170*4882a593Smuzhiyun /* 0x9F - 0xB0 Reserved */ 171*4882a593Smuzhiyun 172*4882a593Smuzhiyun #define REG_VDP_TTX_FILTER_1_MASK1 (0xB1) 173*4882a593Smuzhiyun #define REG_VDP_TTX_FILTER_1_MASK2 (0xB2) 174*4882a593Smuzhiyun #define REG_VDP_TTX_FILTER_1_MASK3 (0xB3) 175*4882a593Smuzhiyun #define REG_VDP_TTX_FILTER_1_MASK4 (0xB4) 176*4882a593Smuzhiyun #define REG_VDP_TTX_FILTER_1_MASK5 (0xB5) 177*4882a593Smuzhiyun #define REG_VDP_TTX_FILTER_2_MASK1 (0xB6) 178*4882a593Smuzhiyun #define REG_VDP_TTX_FILTER_2_MASK2 (0xB7) 179*4882a593Smuzhiyun #define REG_VDP_TTX_FILTER_2_MASK3 (0xB8) 180*4882a593Smuzhiyun #define REG_VDP_TTX_FILTER_2_MASK4 (0xB9) 181*4882a593Smuzhiyun #define REG_VDP_TTX_FILTER_2_MASK5 (0xBA) 182*4882a593Smuzhiyun #define REG_VDP_TTX_FILTER_CONTROL (0xBB) 183*4882a593Smuzhiyun #define REG_VDP_FIFO_WORD_COUNT (0xBC) 184*4882a593Smuzhiyun #define REG_VDP_FIFO_INTERRUPT_THRLD (0xBD) 185*4882a593Smuzhiyun 186*4882a593Smuzhiyun /* 0xBE Reserved */ 187*4882a593Smuzhiyun 188*4882a593Smuzhiyun #define REG_VDP_FIFO_RESET (0xBF) 189*4882a593Smuzhiyun #define REG_VDP_FIFO_OUTPUT_CONTROL (0xC0) 190*4882a593Smuzhiyun #define REG_VDP_LINE_NUMBER_INTERRUPT (0xC1) 191*4882a593Smuzhiyun #define REG_VDP_PIXEL_ALIGNMENT_LSB (0xC2) 192*4882a593Smuzhiyun #define REG_VDP_PIXEL_ALIGNMENT_MSB (0xC3) 193*4882a593Smuzhiyun 194*4882a593Smuzhiyun /* 0xC4 - 0xD5 Reserved */ 195*4882a593Smuzhiyun 196*4882a593Smuzhiyun #define REG_VDP_LINE_START (0xD6) 197*4882a593Smuzhiyun #define REG_VDP_LINE_STOP (0xD7) 198*4882a593Smuzhiyun #define REG_VDP_GLOBAL_LINE_MODE (0xD8) 199*4882a593Smuzhiyun #define REG_VDP_FULL_FIELD_ENABLE (0xD9) 200*4882a593Smuzhiyun #define REG_VDP_FULL_FIELD_MODE (0xDA) 201*4882a593Smuzhiyun 202*4882a593Smuzhiyun /* 0xDB - 0xDF Reserved */ 203*4882a593Smuzhiyun 204*4882a593Smuzhiyun #define REG_VBUS_DATA_ACCESS_NO_VBUS_ADDR_INCR (0xE0) 205*4882a593Smuzhiyun #define REG_VBUS_DATA_ACCESS_VBUS_ADDR_INCR (0xE1) 206*4882a593Smuzhiyun #define REG_FIFO_READ_DATA (0xE2) 207*4882a593Smuzhiyun 208*4882a593Smuzhiyun /* 0xE3 - 0xE7 Reserved */ 209*4882a593Smuzhiyun 210*4882a593Smuzhiyun #define REG_VBUS_ADDRESS_ACCESS1 (0xE8) 211*4882a593Smuzhiyun #define REG_VBUS_ADDRESS_ACCESS2 (0xE9) 212*4882a593Smuzhiyun #define REG_VBUS_ADDRESS_ACCESS3 (0xEA) 213*4882a593Smuzhiyun 214*4882a593Smuzhiyun /* 0xEB - 0xEF Reserved */ 215*4882a593Smuzhiyun 216*4882a593Smuzhiyun #define REG_INTERRUPT_RAW_STATUS0 (0xF0) 217*4882a593Smuzhiyun #define REG_INTERRUPT_RAW_STATUS1 (0xF1) 218*4882a593Smuzhiyun #define REG_INTERRUPT_STATUS0 (0xF2) 219*4882a593Smuzhiyun #define REG_INTERRUPT_STATUS1 (0xF3) 220*4882a593Smuzhiyun #define REG_INTERRUPT_MASK0 (0xF4) 221*4882a593Smuzhiyun #define REG_INTERRUPT_MASK1 (0xF5) 222*4882a593Smuzhiyun #define REG_INTERRUPT_CLEAR0 (0xF6) 223*4882a593Smuzhiyun #define REG_INTERRUPT_CLEAR1 (0xF7) 224*4882a593Smuzhiyun 225*4882a593Smuzhiyun /* 0xF8 - 0xFF Reserved */ 226*4882a593Smuzhiyun 227*4882a593Smuzhiyun /* 228*4882a593Smuzhiyun * Mask and bit definitions of TVP5146/47 registers 229*4882a593Smuzhiyun */ 230*4882a593Smuzhiyun /* The ID values we are looking for */ 231*4882a593Smuzhiyun #define TVP514X_CHIP_ID_MSB (0x51) 232*4882a593Smuzhiyun #define TVP5146_CHIP_ID_LSB (0x46) 233*4882a593Smuzhiyun #define TVP5147_CHIP_ID_LSB (0x47) 234*4882a593Smuzhiyun 235*4882a593Smuzhiyun #define VIDEO_STD_MASK (0x07) 236*4882a593Smuzhiyun #define VIDEO_STD_AUTO_SWITCH_BIT (0x00) 237*4882a593Smuzhiyun #define VIDEO_STD_NTSC_MJ_BIT (0x01) 238*4882a593Smuzhiyun #define VIDEO_STD_PAL_BDGHIN_BIT (0x02) 239*4882a593Smuzhiyun #define VIDEO_STD_PAL_M_BIT (0x03) 240*4882a593Smuzhiyun #define VIDEO_STD_PAL_COMBINATION_N_BIT (0x04) 241*4882a593Smuzhiyun #define VIDEO_STD_NTSC_4_43_BIT (0x05) 242*4882a593Smuzhiyun #define VIDEO_STD_SECAM_BIT (0x06) 243*4882a593Smuzhiyun #define VIDEO_STD_PAL_60_BIT (0x07) 244*4882a593Smuzhiyun 245*4882a593Smuzhiyun /* 246*4882a593Smuzhiyun * Status bit 247*4882a593Smuzhiyun */ 248*4882a593Smuzhiyun #define STATUS_TV_VCR_BIT (1<<0) 249*4882a593Smuzhiyun #define STATUS_HORZ_SYNC_LOCK_BIT (1<<1) 250*4882a593Smuzhiyun #define STATUS_VIRT_SYNC_LOCK_BIT (1<<2) 251*4882a593Smuzhiyun #define STATUS_CLR_SUBCAR_LOCK_BIT (1<<3) 252*4882a593Smuzhiyun #define STATUS_LOST_LOCK_DETECT_BIT (1<<4) 253*4882a593Smuzhiyun #define STATUS_FEILD_RATE_BIT (1<<5) 254*4882a593Smuzhiyun #define STATUS_LINE_ALTERNATING_BIT (1<<6) 255*4882a593Smuzhiyun #define STATUS_PEAK_WHITE_DETECT_BIT (1<<7) 256*4882a593Smuzhiyun 257*4882a593Smuzhiyun /* Tokens for register write */ 258*4882a593Smuzhiyun #define TOK_WRITE (0) /* token for write operation */ 259*4882a593Smuzhiyun #define TOK_TERM (1) /* terminating token */ 260*4882a593Smuzhiyun #define TOK_DELAY (2) /* delay token for reg list */ 261*4882a593Smuzhiyun #define TOK_SKIP (3) /* token to skip a register */ 262*4882a593Smuzhiyun /** 263*4882a593Smuzhiyun * struct tvp514x_reg - Structure for TVP5146/47 register initialization values 264*4882a593Smuzhiyun * @token - Token: TOK_WRITE, TOK_TERM etc.. 265*4882a593Smuzhiyun * @reg - Register offset 266*4882a593Smuzhiyun * @val - Register Value for TOK_WRITE or delay in ms for TOK_DELAY 267*4882a593Smuzhiyun */ 268*4882a593Smuzhiyun struct tvp514x_reg { 269*4882a593Smuzhiyun u8 token; 270*4882a593Smuzhiyun u8 reg; 271*4882a593Smuzhiyun u32 val; 272*4882a593Smuzhiyun }; 273*4882a593Smuzhiyun 274*4882a593Smuzhiyun #endif /* ifndef _TVP514X_REGS_H */ 275