| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106 |
- #include "FreeRTOS.h"
- #include "board.h"
- #include "chip.h"
- #ifdef VIDEO_DECODER_RN6752
- #define RN6752_RST_GPIO 130
- #define RN6752_SLAVE_ADDR (0x58 >> 1)
- /*-----------------------------------------------------------*/
- static int rn6752_i2c_write (struct i2c_adapter *adap, unsigned int addr, unsigned int data)
- {
- struct i2c_msg msg;
- int ret = -1;
- u8 retries = 0;
- u8 buf[2];
- buf[0] = (addr & 0xFF);
- buf[1] = (data & 0xFF);
- msg.flags = !I2C_M_RD;
- msg.addr = RN6752_SLAVE_ADDR;
- msg.len = sizeof(buf);
- msg.buf = buf;
-
- while(retries < 5)
- {
- ret = i2c_transfer(adap, &msg, 1);
- if (ret == 1)
- break;
- retries++;
- }
-
- if (retries >= 5)
- {
- printf("%s timeout\n", __FUNCTION__);
- return -1;
- }
- return 0;
- }
- /* static unsigned int rn6752_i2c_read(struct i2c_adapter *adap, unsigned int addr)
- {
- struct i2c_msg msgs[2];
- int retries = 0;
- int ret = -1;
- u8 buf;
- buf = addr & 0xFF;
-
- msgs[0].flags = !I2C_M_RD;
- msgs[0].addr = RN6752_SLAVE_ADDR;
- msgs[0].len = 1;
- msgs[0].buf = &buf;
- msgs[1].flags = I2C_M_RD;
- msgs[1].addr = RN6752_SLAVE_ADDR;
- msgs[1].len = 1;
- msgs[1].buf = &buf;
-
- while(retries < 5)
- {
- ret = i2c_transfer(adap, msgs, 2);
- if(ret == 2)
- break;
- retries++;
- }
-
- if (retries >= 5)
- {
- printf( "%s timeout\n", __FUNCTION__);
- return 0;
- }
- return buf;
- } */
- static void rn6752_reset(void)
- {
- gpio_direction_output(RN6752_RST_GPIO, 1);
- vTaskDelay(10);
- gpio_direction_output(RN6752_RST_GPIO, 0);
- vTaskDelay(10);
- gpio_direction_output(RN6752_RST_GPIO, 1);
- vTaskDelay(100);
- }
- typedef struct _RXCCHIPstaticPara
- {
- unsigned int addr;
- unsigned int dat;
- } RXCHIPstaticPara;
- #if VIDEO_IN_FORMAT == VIN_AHD_720P_25
- const RXCHIPstaticPara rn6752m_720p_25_staticPara[]=
- {
- //RN6752M-601-720P(°üÀ¨Í¬Öá¿ØÖÆ)
- // 720P@25 BT601
- // Slave address is 0x58
- // Register, data
- // if clock source(Xin) of RN6752 is 26MHz, please add these procedures marked first
- //0xD2, 0x85, // disable auto clock detect
- //0xD6, 0x37, // 27MHz default
- //0xD8, 0x18, // switch to 26MHz clock
- //delay(100), // delay 100ms
- {0x81, 0x01}, // turn on video decoder
- {0xA3, 0x04},
- {0xDF, 0xFE}, // enable HD format
- {0x88, 0x40}, // disable SCLK0B out
- {0xF6, 0x40}, // disable SCLK3A out
- // ch0
- {0xFF, 0x00}, // switch to ch0 (default; optional)
- {0x2C, 0x30},
- {0x2D, 0xF0},
- {0x00, 0x20}, // internal use*
- {0x06, 0x08}, // internal use*
- {0x07, 0x63}, // HD format
- {0x2A, 0x01}, // filter control
- {0x3A, 0x00}, // No Insert Channel ID in SAV/EAV code
- {0x3F, 0x10}, // channel ID
- {0x4C, 0x37}, // equalizer
- {0x4F, 0x03}, // sync control
- {0x50, 0x02}, // 720p resolution
- {0x56, 0x05}, // BT 72M mode and BT601 mode
- {0x5F, 0x40}, // blank level
- {0x63, 0xF5}, // filter control
- {0x59, 0x00}, // extended register access
- {0x5A, 0x42}, // data for extended register
- {0x58, 0x01}, // enable extended register write
- {0x59, 0x33}, // extended register access
- {0x5A, 0x23}, // data for extended register
- {0x58, 0x01}, // enable extended register write
- {0x51, 0xE1}, // scale factor1
- {0x52, 0x88}, // scale factor2
- {0x53, 0x12}, // scale factor3
- {0x5B, 0x07}, // H-scaling control
- {0x5E, 0x08}, // enable H-scaling control
- {0x6A, 0x82}, // H-scaling control
- {0x28, 0x92}, // cropping
- {0x01, 0x08}, // brightness
- {0x02, 0x80}, // contrast
- {0x03, 0x80}, // saturation
- {0x04, 0x80}, // hue
- {0x05, 0x03}, // sharpness
- {0x09, 0xC8}, // EQ
- {0x34, 0x02}, // OB
- {0x57, 0x15}, // black/white stretch
- {0x68, 0x32}, // coring
- {0x00, 0x20}, // internal use*
- {0x0D, 0x20}, // cagc initial value
- //{0x2D, 0xF2}, // cagc adjust
- {0x37, 0X33},
- {0x61, 0X6C},
- //{0x30, 0X30},// V30H_0836_NEW
- //{0x0d, 0X50},
-
- //{0x3A, 0x04},
- //{0x3E, 0x32},
- {0x3A, 0x02},//P-MOS
- {0x3E, 0xf6},//ͬÖáÓ³Éäµ½AVID½Å
-
- {0x40, 0x04},
- {0x46, 0x23},
- {0x47, 0x30},
-
- //{0x49, 0x84},//85
- {0x6d, 0x00},
-
- {0x8E, 0x00}, // single channel output for VP
- {0x8F, 0x80}, // 720p mode for VP
- {0x8D, 0x31}, // enable VP out
- {0x89, 0x09}, // select 72MHz for SCLK
- {0x88, 0x41}, // enable SCLK out
- {0x96, 0x00}, // select AVID & VBLK as status indicator
- {0x97, 0x0B}, // enable status indicator out on AVID,VBLK & VSYNC
- {0x98, 0x00}, // video timing pin status
- {0x9A, 0x40}, // select AVID & VBLK as status indicator
- {0x9B, 0xE1}, // enable status indicator out on HSYNC
- {0x9C, 0x00}, // video timing pin status
- //{0x00, 0xC0},//test bar color
- };
- const RXCHIPstaticPara HD_720P25_video_mipi[] =
- {
- #if 0
- //2 lun
- 0x81, 0x01, // turn on video decoder
- 0xA3, 0x04,
- 0xDF, 0xFE, // enable HD format
- 0x88, 0x40, // disable SCLK1 out
- 0xFF, 0x00, //ch0
- 0x00, 0x00, // internal use*
- 0x06, 0x08, // internal use*
- 0x07, 0x63, // HD format
- 0x2A, 0x01, // filter control
- 0x3A, 0x24,
- 0x3F, 0x10,
- 0x4C, 0x37, // equalizer
- 0x4F, 0x03, // sync control
- 0x50, 0x02, // 720p resolution
- 0x56, 0x01, // 72M mode and BT656 mode
- 0x5F, 0x40, // blank level
- 0x63, 0xF5, // filter control
- 0x59, 0x00, // extended register access
- 0x5A, 0x42, // data for extended register
- 0x58, 0x01, // enable extended register write
- 0x59, 0x33, // extended register access
- 0x5A, 0x02, // data for extended register
- 0x58, 0x01, // enable extended register write
- 0x51, 0xE1, // scale factor1
- 0x52, 0x88, // scale factor2
- 0x53, 0x12, // scale factor3
- 0x5B, 0x07, // H-scaling control
- 0x5E, 0x08, // enable H-scaling control
- 0x6A, 0x82, // H-scaling control
- 0x28, 0x92, // cropping
- 0x03, 0x80, // saturation
- 0x04, 0x80, // hue
- 0x05, 0x00, // sharpness
- 0x57, 0x23, // black/white stretch
- 0x68, 0x32, // coring
- 0x37, 0x33,
- 0x61, 0x6C,
- //#ifdef USE_BLUE_SCREEN
- 0x3A, 0x24,
- 0x33, 0x10, // video in detection
- 0x4A, 0xA8, // video in detection
- 0x2E, 0x30, // force no video
- 0x2E, 0x00, // return to normal
- 0xFF, 0x09,
- 0x00, 0x03,
- 0xFF, 0x08,
- 0x04, 0x03,
- 0x6C, 0x11,
- //#ifdef USE_MIPI_4LANES
- 0x06, 0x4C,
- ////#ifdef USE MIPI DOWN FREO
- //0x28,0x02,
- //0x29,0x02,
- //0x2A,0x01,
- //0x2B,0x04,
- //0x32,0x02,
- //0x33,0x04,
- //0x34,0x01,
- //0x35,0x05,
- //0x36,0x01,
- //0xAE,0x09,
- //0x89,0x0A,
- //0x88,0x41,
- ////#endif
- //#endif
- 0x21, 0x01,
- 0x34, 0x06,
- 0x35, 0x0B,
- 0x78, 0x80,
- 0x79, 0x02,
- 0x6C, 0x01,
- 0x04, 0x00,
- 0x20, 0xAA,
- //#ifdef USE_MIPI_NON_CONTINUOUS_CLOCK
- 0x07, 0x04,
- 0xFF, 0x0A,
- 0x6C, 0x10,
- //#endif
- #else
- ///4lun
- 0x81, 0x01, // turn on video decoder
- 0xA3, 0x04,
- 0xDF, 0xFE, // enable HD format
- 0x88, 0x40, // disable SCLK1 out
- 0xFF, 0x00, //ch0
- 0x00, 0x20, // internal use*
- 0x06, 0x08, // internal use*
- 0x07, 0x63, // HD format
- 0x2A, 0x01, // filter control
- 0x3A, 0x24,
- 0x3F, 0x10,
- 0x4C, 0x37, // equalizer
- 0x4F, 0x03, // sync control
- 0x50, 0x02, // 720p resolution
- 0x56, 0x01, // 72M mode and BT656 mode
- 0x5F, 0x40, // blank level
- 0x63, 0xF5, // filter control
- 0x59, 0x00, // extended register access
- 0x5A, 0x42, // data for extended register
- 0x58, 0x01, // enable extended register write
- 0x59, 0x33, // extended register access
- 0x5A, 0x02, // data for extended register
- 0x58, 0x01, // enable extended register write
- 0x51, 0xE1, // scale factor1
- 0x52, 0x88, // scale factor2
- 0x53, 0x12, // scale factor3
- 0x5B, 0x07, // H-scaling control
- 0x5E, 0x08, // enable H-scaling control
- 0x6A, 0x82, // H-scaling control
- 0x28, 0x92, // cropping
- 0x03, 0x80, // saturation
- 0x04, 0x80, // hue
- 0x05, 0x00, // sharpness
- 0x57, 0x23, // black/white stretch
- 0x68, 0x32, // coring
- 0x37, 0x33,
- 0x61, 0x6C,
- //#ifdef USE_BLUE_SCREEN
- 0x3A, 0x24,
- //#endif
- 0x33, 0x10, // video in detection
- 0x4A, 0xA8, // video in detection
- 0x2E, 0x30, // force no video
- 0x2E, 0x00, // return to normal
- //#else
- 0xFF, 0x09,
- 0x00, 0x03,
- 0xFF, 0x08,
- 0x04, 0x03,
- 0x6C, 0x11,
- //#ifdef USE_MIPI_4LANES
- 0x06, 0x7C,
- ////#ifdef USE MIPI DOWN FREO
- //0x28,0x02,
- //0x29,0x02,
- //0x2A,0x01,
- //0x2B,0x04,
- //0x32,0x02,
- //0x33,0x04,
- //0x34,0x01,
- //0x35,0x05,
- //0x36,0x01,
- //0xAE,0x09,
- //0x89,0x0A,
- //0x88,0x41,
- ////#endif
- //#endif
- 0x21, 0x01,
- 0x34, 0x06,
- 0x35, 0x0B,
- 0x78, 0x80,
- 0x79, 0x02,
- 0x6C, 0x01,
- 0x04, 0x00,
- 0x20, 0xAA,
- //#ifdef USE_MIPI_NON_CONTINUOUS_CLOCK
- 0x07, 0x05,
- //#endif
- 0xFF, 0x0A,
- 0x6C, 0x10,
- //#endif
- #endif
- };
- #endif
- #if VIDEO_IN_FORMAT == VIN_AHD_720P_30
- const RXCHIPstaticPara rn6752m_720p_30_staticPara[]=
- {
- // 720P@30 BT601
- // Slave address is 0x58
- // Register, data
- // if clock source(Xin) of RN6752 is 26MHz, please add these procedures marked first
- //0xD2, 0x85, // disable auto clock detect
- //0xD6, 0x37, // 27MHz default
- //0xD8, 0x18, // switch to 26MHz clock
- //delay(100), // delay 100ms
- 0x49,0x01,
- 0x19,0x07,
- 0x81, 0x01, // turn on video decoder
- 0xA3, 0x04,
- 0xDF, 0xFE, // enable HD format
- 0x88, 0x40, // disable SCLK0B out
- 0xF6, 0x40, // disable SCLK3A out
- // ch0
- 0xFF, 0x00, // switch to ch0 (default; optional)
- 0x00, 0x20, // internal use*
- 0x06, 0x08, // internal use*
- 0x07, 0x63, // HD format
- 0x2A, 0x01, // filter control
- 0x3A, 0x00, // No Insert Channel ID in SAV/EAV code
- 0x3F, 0x10, // channel ID
- 0x4C, 0x37, // equalizer
- 0x4F, 0x03, // sync control
- 0x50, 0x02, // 720p resolution
- 0x56, 0x05, // BT 72M mode and BT601 mode
- 0x5F, 0x40, // blank level
- 0x63, 0xF5, // filter control
- 0x59, 0x00, // extended register access
- 0x5A, 0x44, // data for extended register
- 0x58, 0x01, // enable extended register write
- 0x59, 0x33, // extended register access
- 0x5A, 0x23, // data for extended register
- 0x58, 0x01, // enable extended register write
- 0x51, 0xE1, // scale factor1
- 0x52, 0x88, // scale factor2
- 0x53, 0x12, // scale factor3
- 0x5B, 0x07, // H-scaling control
- 0x5E, 0x0B, // enable H-scaling control
- 0x6A, 0x82, // H-scaling control
- 0x28, 0x92, // cropping
- 0x03, 0x80, // saturation
- 0x04, 0x80, // hue
- 0x05, 0x00, // sharpness
- 0x57, 0x23, // black/white stretch
- 0x68, 0x32, // coring
- 0x3A, 0x04,
- 0x3E, 0x32,
- 0x40, 0x04,
- 0x46, 0x23,
- 0x8E, 0x00, // single channel output for VP
- 0x8F, 0x80, // 720p mode for VP
- 0x8D, 0x31, // enable VP out
- 0x89, 0x09, // select 72MHz for SCLK
- 0x88, 0x41, // enable SCLK out
- 0XD3,0X00,//channel 0 0x00 channel 1 0X01
- 0x96, 0x00, // select AVID & VBLK as status indicator
- 0x97, 0x0B, // enable status indicator out on AVID,VBLK & VSYNC
- 0x98, 0x00, // video timing pin status
- 0x9A, 0x40, // select AVID & VBLK as status indicator
- 0x9B, 0xE1, // enable status indicator out on HSYNC
- 0x9C, 0x00, // video timing pin status
- };
- #endif
- #if VIDEO_IN_FORMAT == VIN_CVBS_NTSC
- const RXCHIPstaticPara rn6752m_cvbs_ntsc_staticPara[]=
- {
- // if clock source(Xin) of RN6752 is 26MHz, please add these procedures marked first
- //0xD2, 0x85, // disable auto clock detect
- //0xD6, 0x37, // 27MHz default
- //0xD8, 0x18, // switch to 26MHz clock
- //delay(100), // delay 100ms
- 0x81, 0x01, // turn on video decoder
- 0xA3, 0x00,
- 0xDF, 0xFF, // enable CVBS format
- // ch0
- 0xFF, 0x00, // switch to ch0 (default; optional)
- 0x00, 0x00, // internal use*
- 0x06, 0x08, // internal use*
- 0x07, 0x63, // HD format
- 0x2A, 0x81, // filter control
- 0x3A, 0x00, // No Insert Channel ID in SAV/EAV code
- 0x3F, 0x10, // channel ID
- 0x4C, 0x37, // equalizer
- 0x4F, 0x00, // sync control
- 0x50, 0x00, // D1 resolution
- 0x56, 0x04, // 27M mode and BT601 mode
- 0x5F, 0x00, // blank level
- 0x63, 0x75, // filter control
- 0x59, 0x00, // extended register access
- 0x5A, 0x00, // data for extended register
- 0x58, 0x01, // enable extended register write
- 0x59, 0x33, // extended register access
- 0x5A, 0x02, // data for extended register
- 0x58, 0x01, // enable extended register write
- 0x5B, 0x00, // H-scaling control
- 0x5E, 0x01, // enable H-scaling control
- 0x6A, 0x00, // H-scaling control
- 0x28, 0xB2, // cropping
- 0x20, 0x24,
- 0x23, 0x11,
- 0x24, 0x05,
- 0x25, 0x11,
- 0x26, 0x00,
- 0x42, 0x00,
- 0x03, 0x80, // saturation
- 0x04, 0x80, // hue
- 0x05, 0x03, // sharpness
- 0x57, 0x20, // black/white stretch
- 0x68, 0x32, // coring
- 0x3A, 0x04,
- 0x3E, 0x32,
- 0x40, 0x04,
- 0x46, 0x23,
- 0x8E, 0x00, // single channel output for VP
- 0x8F, 0x00, // D1 mode for VP
- 0x8D, 0x31, // enable VP out
- 0x89, 0x00, // select 27MHz for SCLK
- 0x88, 0x41, // enable SCLK out
- 0x96, 0x00, // select AVID & VBLK as status indicator
- 0x97, 0x0B, // enable status indicator out on AVID,VBLK & VSYNC
- 0x98, 0x00, // video timing pin status
- 0x9A, 0x40, // select AVID & VBLK as status indicator
- 0x9B, 0xE1, // enable status indicator out on HSYNC
- 0x9C, 0x00, // video timing pin status
- };
- const RXCHIPstaticPara rn6752m_cvbs_ntsc_Mipi_staticPara[]=
- {
- 0x81, 0x01, // turn on video decoder
- 0xA3, 0x04,
- 0xDF, 0x0F, // enable CVBS format
- 0x88, 0x40, // disable SCLK1 out
- 0xFF, 0x00, // ch0
- 0x00, 0x00, // internal use*
- 0x06, 0x08, // internal use*
- 0x07, 0x63, // HD format
- 0x2A, 0x81, // filter control
- 0x3A, 0x24,
- 0x3F, 0x10,
- 0x4C, 0x37, // equalizer
- 0x4F, 0x00, // sync control
- 0x50, 0x00, // D1 resolution
- 0x56, 0x01, // 72M mode and BT656 mode
- 0x5F, 0x00, // blank level
- 0x63, 0x75, // filter control
- 0x59, 0x00, // extended register access
- 0x5A, 0x00, // data for extended register
- 0x58, 0x01, // enable extended register write
- 0x59, 0x33, // extended register access
- 0x5A, 0x02, // data for extended register
- 0x58, 0x01, // enable extended register write
- 0x5B, 0x00, // H-scaling control
- 0x28, 0xB2, // cropping
- 0x51, 0xE8,
- 0x52, 0x08,
- 0x53, 0x11,
- 0x5E, 0x08,
- 0x6A, 0x89,
- //#ifdef USE_CVBS_ONE_FIELD
- 0x20, 0x24,
- 0x23, 0x11,
- 0x24, 0x05,
- 0x25, 0x11,
- 0x26, 0x00,
- 0x42, 0x00,
- 0x03, 0x80, // saturation
- 0x04, 0x80, // hue
- 0x05, 0x03, // sharpness
- 0x57, 0x20, // black/white stretch
- 0x68, 0x32, // coring
- 0x37, 0x33,
- 0x61, 0x6C,
- //#ifdef USE_BLUE_SCREEN
- 0x3A, 0x24,
- //
- //#endif
- 0x33, 0x10, // video in detection
- 0x4A, 0xA8, // video in detection
- 0x2E, 0x30, // force no video
- 0x2E, 0x00, // return to normal
- //#else
- 0xFF, 0x09,
- 0x00, 0x03,
- 0xFF, 0x08,
- 0x04, 0x03,
- 0x6C, 0x11,
- //#ifdef USE_MIPI_1LANES
- 0x06, 0x44,
- //#endif
- 0x21, 0x01,
- 0x2B, 0x08,
- 0x34, 0x06,
- 0x35, 0x0B,
- //#endif
- 0x78, 0x68,
- 0x79, 0x01,
- 0x6C, 0x01,
- 0x04, 0x00,
- 0x20, 0xAA,
- //#ifdef USE_MIPI_NON_CONTINUOUS_CLOCK
- 0x07, 0x05,
- //#else
- //0x07, 0x04,
- //#endif
- 0xFF, 0x0A,
- 0x6C, 0x10,
- //#endif
- };
- #endif
- #if VIDEO_IN_FORMAT == VIN_CVBS_PAL
- const RXCHIPstaticPara rn6752m_cvbs_pal_staticPara[]=
- {
- // cvbs@25 BT601
- // Slave address is 0x58
- // Register, data
- // if clock source(Xin) of RN6752 is 26MHz, please add these procedures marked first
- //0xD2, 0x85, // disable auto clock detect
- //0xD6, 0x37, // 27MHz default
- //0xD8, 0x18, // switch to 26MHz clock
- //delay(100), // delay 100ms
- 0x49,0x01,
- 0x19,0x07,
- 0x81, 0x01, // turn on video decoder
- 0xA3, 0x04,
- 0xDF, 0x0F, // enable CVBS format
- 0x88, 0x40, // disable SCLK0B out
- 0xF6, 0x40, // disable SCLK3A out
- // ch0
- 0xFF, 0x00, // switch to ch0 (default; optional)
- 0x00, 0x00, // internal use*
- 0x06, 0x08, // internal use*
- 0x07, 0x62, // HD format
- 0x2A, 0x81, // filter control
- 0x3A, 0x00, // No Insert Channel ID in SAV/EAV code
- 0x3F, 0x10, // channel ID
- 0x4C, 0x37, // equalizer
- 0x4F, 0x00, // sync control
- 0x50, 0x00, // 720p resolution
- 0x56, 0x05, // 72M mode and BT601 mode
- 0x5F, 0x00, // blank level
- 0x63, 0x75, // filter control
- 0x59, 0x00, // extended register access
- 0x5A, 0x00, // data for extended register
- 0x58, 0x01, // enable extended register write
- 0x59, 0x33, // extended register access
- 0x5A, 0x02, // data for extended register
- 0x58, 0x01, // enable extended register write
- 0x5B, 0x00, // H-scaling control
- 0x5E, 0x01, // enable H-scaling control
- 0x6A, 0x00, // H-scaling control
- 0x28, 0xB2, // cropping
- 0x20, 0x24,
- 0x23, 0x17,
- 0x24, 0x37,
- 0x25, 0x17,
- 0x26, 0x00,
- 0x42, 0x00,
- 0x03, 0x80, // saturation
- 0x04, 0x80, // hue
- 0x05, 0x03, // sharpness
- 0x57, 0x20, // black/white stretch
- 0x68, 0x32, // coring
- 0x3A, 0x04,
- 0x3E, 0x32,
- 0x40, 0x04,
- 0x46, 0x23,
- 0x8E, 0x00, // single channel output for VP
- 0x8F, 0x80, // 720p mode for VP
- 0x8D, 0x31, // enable VP out
- 0x89, 0x09, // select 72MHz for SCLK
- 0x88, 0x41, // enable SCLK out
- 0x96, 0x00, // select AVID & VBLK as status indicator
- 0x97, 0x0B, // enable status indicator out on AVID,VBLK & VSYNC
- 0x98, 0x00, // video timing pin status
- 0x9A, 0x40, // select AVID & VBLK as status indicator
- 0x9B, 0xE1, // enable status indicator out on HSYNC
- 0x9C, 0x00, // video timing pin status
- };
- #endif
- const RXCHIPstaticPara rn6752m_bt656_1080p_25pfs[] = {
- // 1080P@25 BT656
- // Slave address is 0x58
- // Register, data
- // if clock source(Xin) of RN6752 is 26MHz, please add these procedures marked first
- //0xD2, 0x85, // disable auto clock detect
- //0xD6, 0x37, // 27MHz default
- //0xD8, 0x18, // switch to 26MHz clock
- //delay(100), // delay 100ms
- 0x81, 0x01, // turn on video decoder
- 0xA3, 0x04, //
- 0xDF, 0xFE, // enable HD format
- 0xF0, 0xC0,
- 0x88, 0x40, // disable SCLK0B out
- 0xF6, 0x40, // disable SCLK3A out
- // ch0
- 0xFF, 0x00, // switch to ch0 (default; optional)
- 0x00, 0x20, // internal use*
- 0x06, 0x08, // internal use*
- 0x07, 0x63, // HD format
- 0x2A, 0x01, // filter control
- 0x3A, 0x00, // No Insert Channel ID in SAV/EAV code
- 0x3F, 0x10, // channel ID
- 0x4C, 0x37, // equalizer
- 0x4F, 0x03, // sync control
- 0x50, 0x03, // 1080p resolution
- 0x56, 0x02, // 144M and BT656 mode
- 0x5F, 0x44, // blank level
- 0x63, 0xF8, // filter control
- 0x59, 0x00, // extended register access
- 0x5A, 0x48, // data for extended register
- 0x58, 0x01, // enable extended register write
- 0x59, 0x33, // extended register access
- 0x5A, 0x23, // data for extended register
- 0x58, 0x01, // enable extended register write
- 0x51, 0xF4, // scale factor1
- 0x52, 0x29, // scale factor2
- 0x53, 0x15, // scale factor3
- 0x5B, 0x01, // H-scaling control
- 0x5E, 0x08, // enable H-scaling control
- 0x6A, 0x87, // H-scaling control
- 0x28, 0x92, // cropping
- 0x03, 0x80, // saturation
- 0x04, 0x80, // hue
- 0x05, 0x04, // sharpness
- 0x57, 0x23, // black/white stretch
- 0x68, 0x00, // coring
- 0x37, 0x33,
- 0x61, 0x6C,
- 0x8E, 0x00, // single channel output for VP
- 0x8F, 0x80, // 1080p mode for VP
- 0x8D, 0x31, // enable VP out
- 0x89, 0x0A, // select 144MHz for SCLK
- 0x88, 0x41 // enable SCLK out
- };
- const RXCHIPstaticPara FHD_1080P25_video_MIPI[] =
- {
- #if 0
- 0x81, 0x01, // turn on video decoder
- 0xA3, 0x04, //
- 0xDF, 0xFE, // enable HD format
- 0xF0, 0xC0,
- 0x88, 0x40, // disable SCLK1 out
- 0xFF, 0x00,
- 0x00, 0x20, // internal use*
- 0x06, 0x08, // internal use*
- 0x07, 0x63, // HD format
- 0x2A, 0x01, // filter control
- 0x3A, 0x24,
- 0x3F, 0x10,
- 0x4C, 0x37, // equalizer
- 0x4F, 0x03, // sync control
- 0x50, 0x03, // 1080p resolution
- 0x56, 0x02, // 144M and BT656 mode
- 0x5F, 0x44, // blank level
- 0x63, 0xF8, // filter control
- 0x59, 0x00, // extended register access
- 0x5A, 0x48, // data for extended register
- 0x58, 0x01, // enable extended register write
- 0x59, 0x33, // extended register access
- 0x5A, 0x23, // data for extended register
- 0x58, 0x01, // enable extended register write
- 0x51, 0xF4, // scale factor1
- 0x52, 0x29, // scale factor2
- 0x53, 0x15, // scale factor3
- 0x5B, 0x01, // H-scaling control
- 0x5E, 0x08, // enable H-scaling control
- 0x6A, 0x87, // H-scaling control
- 0x28, 0x92, // cropping
- 0x03, 0x80, // saturation
- 0x04, 0x80, // hue
- 0x05, 0x04, // sharpness
- 0x57, 0x23, // black/white stretch
- 0x68, 0x00, // coring
- 0x37, 0x33,
- 0x61, 0x6C,
- #ifdef USE_BLUE_SCREEN
- 0x3A, 0x24,
- #else
- 0x3A, 0x2C,
- 0x3B, 0x00,
- 0x3C, 0x80,
- 0x3D, 0x80,
- #endif
- 0x33, 0x10, // video in detection
- 0x4A, 0xA8, // video in detection
- 0x2E, 0x30, // force no video
- 0x2E, 0x00, // return to normal
- #ifdef USE_DVP
- 0x8E, 0x00,
- 0x8F, 0x80,
- 0x8D, 0x31,
- 0x89, 0x0A,
- 0x88, 0x41,
- #ifdef USE_BT601
- 0xFF, 0x00,
- 0x56, 0x06,
- 0x3A, 0x24,
- 0x3E, 0x32,
- 0x40, 0x04,
- 0x46, 0x23,
- 0x96, 0x00,
- 0x97, 0x0B,
- 0x98, 0x00,
- 0x9A, 0x40,
- 0x9B, 0xE1,
- 0x9C, 0x00,
- #endif
- #else
- 0xFF, 0x09,
- 0x00, 0x03,
- 0xFF, 0x08,
- 0x04, 0x03,
- 0x6C, 0x11,
- #ifdef USE_MIPI_4LANES
- 0x06, 0x7C,
- #else
- 0x06, 0x4C,
- #endif
- 0x21, 0x01,
- 0x34, 0x06,
- 0x35, 0x0B,
- 0x78, 0xC0,
- 0x79, 0x03,
- 0x6C, 0x01,
- 0x04, 0x00,
- 0x20, 0xAA,
- #ifdef USE_MIPI_NON_CONTINUOUS_CLOCK
- 0x07, 0x05,
- #else
- 0x07, 0x04,
- #endif
- 0xFF, 0x0A,
- 0x6C, 0x10,
- #endif
- #else
- //0x19, 0x0A,
- 0x81, 0x01, // turn on video decoder
- 0xDF, 0xFE, // enable HD format
- 0xF0, 0xC0, //
- 0xA3, 0x04, //
- 0x88, 0x40, // disable SCLK0B out
- 0xF6, 0x40, // disable SCLK3A out
- //0xD3, 0x01, // 2021-05-19
- // ch0
- 0xFF, 0x00, // switch to ch0 (default; optional)
- 0x33, 0x10, // 2021-05-18
- 0x4A, 0x08, // 2021-05-18
- 0x00, 0x20, // internal use*
- 0x06, 0x08, // internal use*
- 0x07, 0x63, // HD format
- 0x2A, 0x01, // filter control
- 0x3A, 0x20, // Insert Channel ID in SAV/EAV code
- 0x3F, 0x10, // channel ID
- 0x4C, 0x37, // equalizer
- 0x4F, 0x03, // sync control
- 0x50, 0x03, // 1080p resolution
- 0x56, 0x02, // 144M mode
- 0x5F, 0x44, // blank level
- 0x63, 0xF8, // filter control
- 0x59, 0x00, // extended register access
- 0x5A, 0x48, // data for extended register
- 0x58, 0x01, // enable extended register write
- 0x59, 0x33, // extended register access
- 0x5A, 0x23, // data for extended register
- 0x58, 0x01, // enable extended register write
- 0x51, 0xF4, // scale factor1
- 0x52, 0x29, // scale factor2
- 0x53, 0x15, // scale factor3
- 0x5B, 0x01, // H-scaling control
- 0x5E, 0x08, // enable H-scaling control
- 0x6A, 0x87, // H-scaling control
- 0x28, 0x92, // cropping
- 0x03, 0x80, // saturation
- 0x04, 0x80, // hue
- 0x05, 0x04, // sharpness
- 0x57, 0x23, // black/white stretch
- 0x68, 0x00, // coring
- 0x37, 0x33,
- 0x61, 0x6C,
- //0x49, 0x81,
- //0x33, 0x10,
- //0x4A, 0xa8,
- 0x3E, 0x35, // 2021-05-18
- 0x96, 0x40, // 2021-05-18
- 0x97, 0xE1, // 2021-05-18
- 0x8D, 0x31, // 2021-05-18
- 0x8E, 0x00, // 2021-05-18
- // mipi link1
- 0xFF, 0x09, // switch to mipi tx1
- 0x00, 0x03, // enable bias
- 0xFF, 0x08, // switch to mipi csi1
- 0x04, 0x03, // csi1 and tx1 reset
- 0x6C, 0x11, // disable ch output; turn on ch0
- 0x06, 0x7C,
- 0x21, 0x01, // enable hs clock
- 0x34, 0x06,
- 0x35, 0x0B,
- 0x78, 0xC0, // Y/C counts for ch0
- 0x79, 0x03, // Y/C counts for ch0
- 0x6C, 0x01, // enable ch output
- 0x04, 0x00, // csi1 and tx1 reset finish
- 0x07, 0x05, //enable non-continuous clock
- 0x20, 0xAA, // invert hs clock
- // mipi link3
- 0xFF, 0x0A, // switch to mipi csi3
- 0x6C, 0x10, // disable ch output; turn off ch0~3
- #endif
- };
- const RXCHIPstaticPara rn6752m_bt601_1080p_25pfs[] = {
- // 1080P@25 BT601
- // Slave address is 0x58
- // Register, data
- // if clock source(Xin) of RN6752 is 26MHz, please add these procedures marked first
- //0xD2, 0x85, // disable auto clock detect
- //0xD6, 0x37, // 27MHz default
- //0xD8, 0x18, // switch to 26MHz clock
- //delay(100), // delay 100ms
- 0x49,0x01,//
- 0x19,0x07,
- 0x81, 0x01, // turn on video decoder
- 0xA3, 0x04,
- 0xDF, 0xFE, // enable HD format
- 0xF0, 0xC0, // 144MHz output
- 0x88, 0x40, // disable SCLK0B out
- 0xF6, 0x40, // disable SCLK3A out
- // ch0
- 0xFF, 0x00, // switch to ch0 (default; optional)
- 0x00, 0x20, // internal use*
- 0x06, 0x08, // internal use*
- 0x07, 0x63, // HD format
- 0x2A, 0x01, // filter control
- 0x3A, 0x20, // Insert Channel ID in SAV/EAV code
- 0x3F, 0x10, // channel ID
- 0x4C, 0x37, // equalizer
- 0x4F, 0x03, // sync control
- 0x50, 0x03, // 1080p resolution
- 0x56, 0x06, // 144M and BT601 mode
- 0x5F, 0x44, // blank level
- 0x63, 0xF8, // filter control
- 0x59, 0x00, // extended register access
- 0x5A, 0x48, // data for extended register
- 0x58, 0x01, // enable extended register write
- 0x59, 0x33, // extended register access
- 0x5A, 0x23, // data for extended register
- 0x58, 0x01, // enable extended register write
- 0x51, 0xF4, // scale factor1
- 0x52, 0x29, // scale factor2
- 0x53, 0x15, // scale factor3
- 0x5B, 0x01, // H-scaling control
- 0x5E, 0x0F, // enable H-scaling control
- 0x6A, 0x87, // H-scaling control
- 0x28, 0x92, // cropping
- 0x01, 0xEF, // brightness
- 0x03, 0x80, // saturation
- 0x04, 0x80, // hue
- 0x05, 0x04, // sharpness
- 0x57, 0x23, // black/white stretch
- 0x68, 0x00, // coring
- 0x3A, 0x04,
- 0x3E, 0x32,
- 0x40, 0x04,
- 0x46, 0x23,
- 0x8E, 0x00, // single channel output for VP
- 0x8F, 0x80, // 1080p mode for VP
- 0x8D, 0x31, // enable VP out
- 0x89, 0x0A, // select 144MHz for SCLK
- 0x88, 0x41, // enable SCLK out // CLK inv bit1
- //0XD3,0X00,//channel 0 0x00 channel 1 0X01
- 0x96, 0x00, // select AVID & VBLK as status indicator
- 0x97, 0x0B, // enable status indicator out on AVID,VBLK & VSYNC
- 0x98, 0x00, // video timing pin status
- 0x9A, 0x40, // select AVID & VBLK as status indicator
- 0x9B, 0xE1, // enable status indicator out on HSYNC
- 0x9C, 0x00 // video timing pin status
- };
- static void rn6752_config(struct i2c_adapter *adap)
- {
- int i;
- //int val;
- #if VIDEO_IN_FORMAT == VIN_CVBS_PAL
- for (i = 0; i < sizeof(rn6752m_cvbs_pal_staticPara) / sizeof(RXCHIPstaticPara); i++)
- {
- rn6752_i2c_write(adap, rn6752m_cvbs_pal_staticPara[i].addr,
- rn6752m_cvbs_pal_staticPara[i].dat);
-
- }
- #elif VIDEO_IN_FORMAT == VIN_CVBS_NTSC
- #ifdef VIDEO_DECODER_MIPI
- for (i = 0; i < sizeof(rn6752m_cvbs_ntsc_Mipi_staticPara) / sizeof(RXCHIPstaticPara); i++)
- {
- rn6752_i2c_write(adap, rn6752m_cvbs_ntsc_Mipi_staticPara[i].addr,
- rn6752m_cvbs_ntsc_Mipi_staticPara[i].dat);
- }
- #else
- for (i = 0; i < sizeof(rn6752m_cvbs_ntsc_staticPara) / sizeof(RXCHIPstaticPara); i++)
- {
- rn6752_i2c_write(adap, rn6752m_cvbs_ntsc_staticPara[i].addr,
- rn6752m_cvbs_ntsc_staticPara[i].dat);
-
- }
- #endif
- #elif VIDEO_IN_FORMAT == VIN_AHD_720P_25
- #ifdef VIDEO_DECODER_MIPI
- for (i = 0; i < sizeof(HD_720P25_video_mipi) / sizeof(RXCHIPstaticPara); i++)
- {
- rn6752_i2c_write(adap, HD_720P25_video_mipi[i].addr,
- HD_720P25_video_mipi[i].dat);
- }
- #else
- for (i = 0; i < sizeof(rn6752m_720p_25_staticPara) / sizeof(RXCHIPstaticPara); i++)
- {
- rn6752_i2c_write(adap, rn6752m_720p_25_staticPara[i].addr,
- rn6752m_720p_25_staticPara[i].dat);
-
- }
- #endif
-
- #elif VIDEO_IN_FORMAT == VIN_AHD_1080P_25
- #ifdef VIDEO_DECODER_MIPI
- for (i = 0; i < sizeof(FHD_1080P25_video_MIPI) / sizeof(RXCHIPstaticPara); i++)
- {
- rn6752_i2c_write(adap, FHD_1080P25_video_MIPI[i].addr,
- FHD_1080P25_video_MIPI[i].dat);
-
- }
- #else
- #ifdef DECODER_ITU601OUT
- for (i = 0; i < sizeof(rn6752m_bt601_1080p_25pfs) / sizeof(RXCHIPstaticPara); i++)
- {
- rn6752_i2c_write(adap, rn6752m_bt601_1080p_25pfs[i].addr,
- rn6752m_bt601_1080p_25pfs[i].dat);
-
- }
- #else
- for (i = 0; i < sizeof(rn6752m_bt656_1080p_25pfs) / sizeof(RXCHIPstaticPara); i++)
- {
- rn6752_i2c_write(adap, rn6752m_bt656_1080p_25pfs[i].addr,
- rn6752m_bt656_1080p_25pfs[i].dat);
-
- }
- #endif
- #endif
- #endif
- }
- int rn6752_init(void)
- {
- struct i2c_adapter *adap = NULL;
-
- rn6752_reset();
- if (!(adap = i2c_open("i2c0"))) {
- printf("open i2c0 fail.\n");
- return -1;
- }
-
- rn6752_config(adap);
- return 0;
- }
- #endif
|