From 9370bb92b2d16684ee45cf24e879c93c509162da Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Thu, 19 Dec 2024 01:47:39 +0000 Subject: [PATCH] add wifi6 8852be driver --- kernel/drivers/media/i2c/nvp6158_drv/nvp6158_video.c | 374 +++++++++++++++++++---------------------------------- 1 files changed, 134 insertions(+), 240 deletions(-) diff --git a/kernel/drivers/media/i2c/nvp6158_drv/nvp6158_video.c b/kernel/drivers/media/i2c/nvp6158_drv/nvp6158_video.c index 81a36f3..35353ff 100644 --- a/kernel/drivers/media/i2c/nvp6158_drv/nvp6158_video.c +++ b/kernel/drivers/media/i2c/nvp6158_drv/nvp6158_video.c @@ -35,9 +35,9 @@ extern unsigned char nvp6158_det_mode[16]; extern unsigned int nvp6158_gCoaxFirmUpdateFlag[16]; -unsigned char nvp6158_motion_sens_tbl[8]= {0xe0,0xc8,0xa0,0x98,0x78,0x68,0x50,0x48}; -unsigned char nvp6158_ch_mode_status[16]={[0 ... 15]=0xff}; -unsigned char nvp6158_ch_vfmt_status[16]={[0 ... 15]=0xff}; +unsigned char nvp6158_motion_sens_tbl[8] = {0xe0, 0xc8, 0xa0, 0x98, 0x78, 0x68, 0x50, 0x48}; +unsigned char nvp6158_ch_mode_status[16] = {[0 ... 15] = 0xff}; +unsigned char nvp6158_ch_vfmt_status[16] = {[0 ... 15] = 0xff}; #ifdef _ENABLE_DET_DEBOUNCE_ NVP6158_INFORMATION_S nvp6158_s_raptor3_vfmts; #endif @@ -47,39 +47,28 @@ int tmp = 0; int i = 0, j= 0; - printk("***************IIC ADDR 0x%02x - CH[%02d] *****************\r\n", nvp6158_iic_addr[ch/4], ch ); - printk("***************Chip[0x%02x] Bank[0x%x]*****************\r\n", nvp6158_iic_addr[ch/4], bank ); + printk("***************IIC ADDR 0x%02x - CH[%02d] *****************\r\n", + nvp6158_iic_addr[ch/4], ch ); + printk("***************Chip[0x%02x] Bank[0x%x]*****************\r\n", + nvp6158_iic_addr[ch/4], bank ); gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, bank ); - for (i = 0;i<=0xF;i++) - { - if(i==0) - { - printk(" 0x%02x ",i); - } - else if (i==0xF) - { + for (i = 0; i <= 0xF; i++) { + if(i == 0) { + printk("0x%02x ",i); + } else if (i==0xF) { printk("0x%02x\r\n",i); - } - else - { + } else { printk("0x%02x ",i); } } - for (i = 0;i<=0xF;i++) - { - for(j = 0;j<=0xF;j++) - { - tmp = gpio_i2c_read(nvp6158_iic_addr[ch/4], (i<<4)|j); - if (j==0) - { - printk("0x%02x-0x%02x ",(i<<4)|j,tmp); - } - else if (j==0xF) - { + for (i = 0; i <= 0xF; i++) { + for(j = 0; j <= 0xF; j++) { + tmp = gpio_i2c_read(nvp6158_iic_addr[ch / 4], (i << 4) | j); + if (j == 0) { + printk("0x%02x-0x%02x ",(i << 4) | j, tmp); + } else if (j == 0xF) { printk("0x%02x\r\n",tmp); - } - else - { + } else { printk("0x%02x ",tmp); } } @@ -90,17 +79,19 @@ { unsigned char adc_value; - gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, 0x01); - adc_value = gpio_i2c_read(nvp6158_iic_addr[ch/4], 0x84+ch%4); - printk(">>>>> DRV[%s:%d] CH:%d, Bank:0x%02x, ADC clock delay:0x%x\n", __func__, __LINE__, ch, nvp6158_iic_addr[ch/4], adc_value ); + gpio_i2c_write(nvp6158_iic_addr[ch / 4], 0xFF, 0x01); + adc_value = gpio_i2c_read(nvp6158_iic_addr[ch / 4], 0x84 + ch % 4); + printk(">>>>> DRV[%s:%d] CH:%d, Bank:0x%02x, ADC clock delay:0x%x\n", + __func__, __LINE__, ch, nvp6158_iic_addr[ch/4], adc_value ); return adc_value; } void nvp6158_video_set_adcclk(unsigned char ch, unsigned char value) { - gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, 0x01); - gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x84+ch%4, value); - printk(">>>>> DRV[%s:%d] CH:%d, Bank:0x%02x, ADC clock delay:0x%x\n", __func__, __LINE__, ch, nvp6158_iic_addr[ch/4], value ); + gpio_i2c_write(nvp6158_iic_addr[ch / 4], 0xFF, 0x01); + gpio_i2c_write(nvp6158_iic_addr[ch / 4], 0x84 + ch % 4, value); + printk(">>>>> DRV[%s:%d] CH:%d, Bank:0x%02x, ADC clock delay:0x%x\n", + __func__, __LINE__, ch, nvp6158_iic_addr[ch/4], value ); } static __maybe_unused void NVP6158_set_afe(unsigned char ch, unsigned char onoff) @@ -121,9 +112,7 @@ static __maybe_unused void nvp6158_datareverse(unsigned char chip, unsigned char port) { -/* -BANK1 0xCB[3:0],ÿ��bit����һ��bt656������˳��1Ϊ����0Ϊ���� -*/ + unsigned char tmp; gpio_i2c_write(nvp6158_iic_addr[chip], 0xFF, 0x01); tmp = gpio_i2c_read(nvp6158_iic_addr[chip], 0xCB); @@ -137,12 +126,9 @@ unsigned char val_1x81; gpio_i2c_write(nvp6158_iic_addr[chip], 0xFF, 0x01); val_1x81 = gpio_i2c_read(nvp6158_iic_addr[chip], 0x81); - if(flag == 1) - { + if(flag == 1) { val_1x81 |= 0x02; - } - else - { + } else { val_1x81 &= 0xFD; } gpio_i2c_write(nvp6158_iic_addr[chip], 0x81, val_1x81); @@ -185,14 +171,13 @@ //VDO_1/2 disabled, VCLK_x disabled gpio_i2c_write(0x60, 0xFF, 0x01); gpio_i2c_write(0x60, 0xCA, 0x00); - for(ch=0;ch<4;ch++) - { + for(ch = 0; ch < 4; ch++) { gpio_i2c_write(nvp6158_iic_addr[chip], 0xFF, 0x00); //gpio_i2c_write(nvp6158_iic_addr[chip], 0x00+ch, 0x10); - gpio_i2c_write(nvp6158_iic_addr[chip], 0x22+4*ch, 0x0B); - gpio_i2c_write(nvp6158_iic_addr[chip], 0x23+4*ch, 0x41); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x22+ 4 * ch, 0x0B); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x23+ 4 * ch, 0x41); - gpio_i2c_write(nvp6158_iic_addr[chip], 0xFF, 0x05+ch%4); + gpio_i2c_write(nvp6158_iic_addr[chip], 0xFF, 0x05 + ch % 4); gpio_i2c_write(nvp6158_iic_addr[chip], 0x00, 0xD0); // Clamp speed gpio_i2c_write(nvp6158_iic_addr[chip], 0xA9, 0x80); gpio_i2c_write(nvp6158_iic_addr[chip], 0x76, 0x00); @@ -227,27 +212,24 @@ printk("debunce:0x%02X, debncIdx:%d\n", pInformation->debounce[ch][pInformation->debounceidx[ch]], pInformation->debounceidx[ch]); */ pInformation->debounceidx[ch]++; - pInformation->debounceidx[ch] = ( (pInformation->debounceidx[ch] % MAX_DEBOUNCE_CNT) == 0 ) ? 0 : pInformation->debounceidx[ch]; + pInformation->debounceidx[ch] = ( (pInformation->debounceidx[ch] % MAX_DEBOUNCE_CNT) == 0 ) ? + 0 : pInformation->debounceidx[ch]; oVfc = pInformation->debounce[ch][pInformation->debounceidx[ch]]; - for( i = 0; i < MAX_DEBOUNCE_CNT; i++ ) - { - if( oVfc != pInformation->debounce[ch][i]) - { + for( i = 0; i < MAX_DEBOUNCE_CNT; i++ ) { + if( oVfc != pInformation->debounce[ch][i]) { break; } } - if( i == MAX_DEBOUNCE_CNT ) - { + if( i == MAX_DEBOUNCE_CNT ) { oFmtB5Def = NVP6158_NC_VD_AUTO_VFCtoFMTDEF(ch, oVfc); //if( ( oFmtB5Def != AHD30_5M_20P ) && ( oFmtB5Def != pInformation->prevideofmt[ch] ) ) if( ( ( oFmtB5Def != AHD30_5M_20P ) && ( oFmtB5Def != CVI_8M_15P ) && ( oFmtB5Def != CVI_8M_12_5P ) && ( oFmtB5Def != CVI_HD_30P_EX ) && ( oFmtB5Def != AHD20_1080P_25P ) && ( oFmtB5Def != AHD20_1080P_30P ) && - ( oFmtB5Def != CVI_FHD_25P ) ) - && ( oFmtB5Def != pInformation->prevideofmt[ch] ) ) - { - printk("\n\n\n>>>>>>WATCH OUT<<<<<<ch[%d] oVfc[%2x]oFmtB5Def[%2x] != pInformation->prevideofmt[%2x]\n\n\n", ch, oVfc, oFmtB5Def , pInformation->prevideofmt[ch]); + ( oFmtB5Def != CVI_FHD_25P ) ) && ( oFmtB5Def != pInformation->prevideofmt[ch] ) ) { + printk("\n\n\n>>>>>>WATCH OUT<<<<<<ch[%d] oVfc[%2x]oFmtB5Def[%2x] != pInformation->prevideofmt[%2x]\n\n\n", + ch, oVfc, oFmtB5Def , pInformation->prevideofmt[ch]); ret = -1; } } @@ -273,8 +255,7 @@ void nvp6158_set_colorpattern(void) { int chip; - for(chip=0;chip<nvp6158_cnt;chip++) - { + for(chip = 0; chip < nvp6158_cnt; chip++) { gpio_i2c_write(nvp6158_iic_addr[chip], 0xFF, 0x00); gpio_i2c_write(nvp6158_iic_addr[chip], 0x78, 0xaa); gpio_i2c_write(nvp6158_iic_addr[chip], 0x79, 0xaa); @@ -298,8 +279,7 @@ int chip; printk("[NVP6158_VIDEO] %s(%d) \n", __func__, __LINE__); - for(chip=0;chip<nvp6158_cnt;chip++) - { + for(chip = 0; chip < nvp6158_cnt; chip++) { gpio_i2c_write(nvp6158_iic_addr[chip], 0xFF, 0x05); gpio_i2c_write(nvp6158_iic_addr[chip], 0x2c, 0x08); gpio_i2c_write(nvp6158_iic_addr[chip], 0x6a, 0x80); @@ -326,8 +306,7 @@ int chip; printk("[NVP6158_VIDEO] %s(%d) \n", __func__, __LINE__); - for(chip=0;chip<nvp6158_cnt;chip++) - { + for(chip = 0; chip < nvp6158_cnt; chip++) { gpio_i2c_write(nvp6158_iic_addr[chip], 0xFF, 0x05); gpio_i2c_write(nvp6158_iic_addr[chip], 0x2c, 0x08); gpio_i2c_write(nvp6158_iic_addr[chip], 0x6a, 0x80); @@ -382,32 +361,27 @@ sNoVideo.devnum = ch/4; /* get vfc and videoloss */ - if(nvp6158_chip_id[ch/4]==NVP6158C_R0_ID || nvp6158_chip_id[ch/4]==NVP6158_R0_ID) + if(nvp6158_chip_id[ch/4]==NVP6158C_R0_ID || nvp6158_chip_id[ch/4] == NVP6158_R0_ID) nvp6158_video_input_vfc_read(&sVFC); else nvp6168_video_input_vfc_read(&sVFC); nvp6158_video_input_novid_read(&sNoVideo); svin_vfc_bak.ch = ch%4; svin_vfc_bak.devnum = ch/4; - if(nvp6158_chip_id[ch/4]==NVP6158C_R0_ID || nvp6158_chip_id[ch/4]==NVP6158_R0_ID) + if(nvp6158_chip_id[ch/4]==NVP6158C_R0_ID || nvp6158_chip_id[ch/4] == NVP6158_R0_ID) nvp6158_video_input_onvideo_check_data(&svin_vfc_bak); /* check vfc&videoloss and run debounce */ - if(((((sVFC.vfc >> 4 ) & 0xF) != 0xF) && ((sVFC.vfc & 0x0F) != 0xF)) && !sNoVideo.novid) // OnVideo - { + if(((((sVFC.vfc >> 4 ) & 0xF) != 0xF) && ((sVFC.vfc & 0x0F) != 0xF)) && !sNoVideo.novid) {// OnVideo /* convert vfc to formatDefine for APP and save videoloss information */ oCurVidFmt = NVP6158_NC_VD_AUTO_VFCtoFMTDEF(ch, sVFC.vfc); /* debouce */ pInformation->curvideofmt[ch] = oCurVidFmt; pInformation->vfc[ch] = sVFC.vfc; - } - else if(((((sVFC.vfc >> 4 ) & 0xF) == 0xF) && ((sVFC.vfc & 0x0F) == 0xF)) && !sNoVideo.novid) - { - if(nvp6158_chip_id[ch/4]==NVP6158C_R0_ID || nvp6158_chip_id[ch/4]==NVP6158_R0_ID) - { - if(svin_vfc_bak.vfc == 0xFF) - { + } else if (((((sVFC.vfc >> 4 ) & 0xF) == 0xF) && ((sVFC.vfc & 0x0F) == 0xF)) && !sNoVideo.novid) { + if(nvp6158_chip_id[ch/4]==NVP6158C_R0_ID || nvp6158_chip_id[ch/4]==NVP6158_R0_ID) { + if(svin_vfc_bak.vfc == 0xFF) { //nvp6158_channel_reset(ch); //nvp6158_adc_reset(ch); } @@ -415,8 +389,7 @@ } /* check novideo option */ - if( !sNoVideo.novid ) - { + if( !sNoVideo.novid ) { pInformation->curvideoloss[ch] = VIDEO_LOSS_ON; } @@ -431,9 +404,9 @@ * warning : *******************************************************************************/ #if(AHD_720P30_Detect_Count == 0) -static int CVI_720P30[16]={0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,}; +static int CVI_720P30[16]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}; #else -static int CVI_720P30[16]={1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1}; //2020-12-16 for ahd 720p30 detect slow +static int CVI_720P30[16]={1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; //2020-12-16 for ahd 720p30 detect slow #endif unsigned int nvp6158_video_fmt_det(const unsigned char ch, NVP6158_INFORMATION_S *ps_nvp6158_vfmts) { @@ -453,93 +426,73 @@ oCurVideofmt = ps_nvp6158_vfmts->curvideofmt[ch]; oPreVideofmt = ps_nvp6158_vfmts->prevideofmt[ch]; - if( ps_nvp6158_vfmts->curvideoloss[ch] == VIDEO_LOSS_ON) - { + if( ps_nvp6158_vfmts->curvideoloss[ch] == VIDEO_LOSS_ON) { /* on video */ - if( (oCurVideofmt != NC_VIVO_CH_FORMATDEF_UNKNOWN) && (oPreVideofmt == NC_VIVO_CH_FORMATDEF_UNKNOWN) ) - { + if( (oCurVideofmt != NC_VIVO_CH_FORMATDEF_UNKNOWN) && (oPreVideofmt == NC_VIVO_CH_FORMATDEF_UNKNOWN) ) { oFmtDef = NVP6158_NC_VD_AUTO_VFCtoFMTDEF( ch, ps_nvp6158_vfmts->vfc[ch] ); sDevChInfo.ch = ch%4; sDevChInfo.devnum = ch/4; sDevChInfo.fmt_def = oFmtDef; - if(oFmtDef == AHD30_5M_20P ) - { + if(oFmtDef == AHD30_5M_20P ) { printk("[CH:%d] >> finding format: %x....\n", ch, oFmtDef); nvp6158_video_input_ahd_tvi_distinguish(&sDevChInfo); oFmtDef = sDevChInfo.fmt_def; ps_nvp6158_vfmts->curvideofmt[ch] = oFmtDef; - } - else if( oFmtDef == CVI_8M_15P || oFmtDef == CVI_8M_12_5P ) - { + } else if( oFmtDef == CVI_8M_15P || oFmtDef == CVI_8M_12_5P ) { if( oFmtDef == CVI_8M_15P ) printk("[CH:%d] >> finding format:CVI 8M 15P....\n", ch); else printk("[CH:%d] >> finding format:CVI 8M 12.5P....\n", ch); - if(-1 == nvp6158_video_input_cvi_tvi_distinguish(&sDevChInfo)) - { + if(-1 == nvp6158_video_input_cvi_tvi_distinguish(&sDevChInfo)) { printk("error nvp6158_video_input_cvi_tvi_distinguish\n"); return 1; } oFmtDef = sDevChInfo.fmt_def; - if( oFmtDef == TVI_8M_15P ) - { + if( oFmtDef == TVI_8M_15P ) { printk("[CH:%d] >> changing format:TVI 8M 15P....\n", ch); ps_nvp6158_vfmts->curvideofmt[ch] = TVI_8M_15P; - } - else if( oFmtDef == TVI_8M_12_5P ) - { + } else if( oFmtDef == TVI_8M_12_5P ) { printk("[CH:%d] >> changing format:TVI 8M 12_5P....\n", ch); ps_nvp6158_vfmts->curvideofmt[ch] = TVI_8M_12_5P; } - } - else if( oFmtDef == AHD20_720P_30P_EX_Btype/* || oFmtDef == CVI_HD_30P_EX*/) - { - if(CVI_720P30[ch] == 0) - { + } else if( oFmtDef == AHD20_720P_30P_EX_Btype/* || oFmtDef == CVI_HD_30P_EX*/) { + if(CVI_720P30[ch] == 0) { oFmtDef = CVI_HD_30P_EX; ps_nvp6158_vfmts->curvideofmt[ch] = CVI_HD_30P_EX; CVI_720P30[ch] = 1; printk("[CH:%d] >> AHD20_720P_30P_EX_Btype changing format:CVI CVI_HD_30P_EX ....\n", ch); //2020-12-16 - } - else + } else printk("[CH:%d] >> AHD20_720P_30P_EX_Btype non changing format:CVI CVI_HD_30P_EX ....\n", ch); //2020-12-16 - } - else if(oFmtDef == CVI_FHD_25P ) - { + } else if(oFmtDef == CVI_FHD_25P ) { printk("[CH:%d] >> finding format: %x....\n", ch, oFmtDef); nvp6158_video_input_cvi_ahd_1080p_distinguish(&sDevChInfo); oFmtDef = sDevChInfo.fmt_def; - if( oFmtDef == AHD20_1080P_25P ) - { + if( oFmtDef == AHD20_1080P_25P ) { printk("[CH:%d] >> changing format:AHD 2M 25P....\n", ch); ps_nvp6158_vfmts->curvideofmt[ch] = AHD20_1080P_25P; } } - if(ps_nvp6158_vfmts->vfc[ch] == 0x2B) - { + if(ps_nvp6158_vfmts->vfc[ch] == 0x2B) { sDevChInfo.ch = ch%4; sDevChInfo.devnum = ch/4; sDevChInfo.fmt_def = ps_nvp6158_vfmts->vfc[ch]; nvp6158_video_input_ahd_tvi_distinguish(&sDevChInfo); oFmtDef = sDevChInfo.fmt_def; - if( oFmtDef == TVI_4M_15P ) - { - if((nvp6158_det_mode[ch] == NVP6158_DET_MODE_AUTO)||(nvp6158_det_mode[ch] == NVP6158_DET_MODE_TVI)) - { + if( oFmtDef == TVI_4M_15P ) { + if((nvp6158_det_mode[ch] == NVP6158_DET_MODE_AUTO)||(nvp6158_det_mode[ch] == NVP6158_DET_MODE_TVI)) { printk("[CH:%d] >> changing format:TVI 4M 15P....\n", ch); ps_nvp6158_vfmts->curvideofmt[ch] = TVI_4M_15P; - } - else + } else ps_nvp6158_vfmts->curvideofmt[ch] = NC_VIVO_CH_FORMATDEF_UNKNOWN; } } @@ -556,9 +509,7 @@ #endif //nvp6158_set_chnmode(ch, ps_nvp6158_vfmts->prevideofmt[ch]); printk(">>>>> CH[%d], Set video format : 0x%02X\n", ch, oCurVideofmt); - } - else if( (oCurVideofmt == NC_VIVO_CH_FORMATDEF_UNKNOWN ) && (oPreVideofmt == NC_VIVO_CH_FORMATDEF_UNKNOWN) ) - { + } else if( (oCurVideofmt == NC_VIVO_CH_FORMATDEF_UNKNOWN ) && (oPreVideofmt == NC_VIVO_CH_FORMATDEF_UNKNOWN) ) { int ii = 0; int retry_cnt = 0; @@ -584,30 +535,24 @@ //nvp6158_video_input_manual_agc_stable_endi(&sDevChInfo, 1); - for(ii = 0; ii < 20; ii++ ) - { + for(ii = 0; ii < 20; ii++ ) { nvp6158_video_input_vfc_read( &sVFC_B13 ); nvp6158_video_input_onvideo_check_data( &sVFC_B5 ); - if( ((sVFC_B5.vfc >> 4) & 0xf ) < 0x2) - { + if( ((sVFC_B5.vfc >> 4) & 0xf ) < 0x2) { break; } - if( sVFC_B13.vfc == 0x2b && sVFC_B5.vfc == 0x3f) - { + if( sVFC_B13.vfc == 0x2b && sVFC_B5.vfc == 0x3f) { printk("[DRV] CH[%d] Bank13 0xF0 [%02x], Bank5 0xF0[%02x]\n", ch, sVFC_B13.vfc, sVFC_B5.vfc ); printk("[DRV] CH[%d] AFHD 15P or 12.5P [%d]\n" , ch, retry_cnt ); break; - } - else if( ( sVFC_B5.vfc != 0x2f || sVFC_B5.vfc != 0x3f ) && (sVFC_B13.vfc != 0x2b)) - { + } else if(sVFC_B5.vfc != 0x2f) { printk("[DRV] CH[%d] Bank13 0xF0 [%02x], Bank5 0xF0[%02x]\n", ch, sVFC_B13.vfc, sVFC_B5.vfc ); printk("[DRV] CH[%d] Unknown Status [%d] \n", ch, retry_cnt ); } - if(retry_cnt >= 20 ) - { + if(retry_cnt >= 20 ) { printk("CH[%d] Unknown Status Disitinguish Finished ...\n", ch ); break; } @@ -621,8 +566,7 @@ nvp6158_video_input_ahd_nrt_distinguish( &sDevChInfo ); - if( sDevChInfo.fmt_def == NC_VIVO_CH_FORMATDEF_UNKNOWN ) - { + if( sDevChInfo.fmt_def == NC_VIVO_CH_FORMATDEF_UNKNOWN ) { printk("[DRV] CH[%d] unknown format \n", ch); return 0; } @@ -649,11 +593,9 @@ } #ifdef _ENABLE_DET_DEBOUNCE_ - else - { + else { ret = nvp6158_AutoDebouceCheck( ch, &nvp6158_s_raptor3_vfmts ); //note!!!! - if( ( ret == -1 ) && ( nvp6158_gCoaxFirmUpdateFlag[ch] == 0 ) ) - { + if( ( ret == -1 ) && ( nvp6158_gCoaxFirmUpdateFlag[ch] == 0 ) ) { sDevChInfo.ch = ch % 4; sDevChInfo.devnum = ch/4; /* hide decoder */ @@ -678,11 +620,9 @@ } #endif } - else - { + else { /* no video */ - if( oPreVideofmt != NC_VIVO_CH_FORMATDEF_UNKNOWN ) - { + if( oPreVideofmt != NC_VIVO_CH_FORMATDEF_UNKNOWN ) { //nvp6158_set_chnmode(ch, NC_VIVO_CH_FORMATDEF_UNKNOWN); ps_nvp6158_vfmts->prevideofmt[ch] = NC_VIVO_CH_FORMATDEF_UNKNOWN; @@ -722,18 +662,16 @@ oCurVideofmt = ps_nvp6158_vfmts->curvideofmt[ch]; oPreVideofmt = ps_nvp6158_vfmts->prevideofmt[ch]; - if( ps_nvp6158_vfmts->curvideoloss[ch] == VIDEO_LOSS_ON) - { + if( ps_nvp6158_vfmts->curvideoloss[ch] == VIDEO_LOSS_ON) { /* on video */ - if( (oCurVideofmt != NC_VIVO_CH_FORMATDEF_UNKNOWN) && (oPreVideofmt == NC_VIVO_CH_FORMATDEF_UNKNOWN) ) - { + if( (oCurVideofmt != NC_VIVO_CH_FORMATDEF_UNKNOWN) && + (oPreVideofmt == NC_VIVO_CH_FORMATDEF_UNKNOWN) ) { oFmtDef = NVP6158_NC_VD_AUTO_VFCtoFMTDEF( ch, ps_nvp6158_vfmts->vfc[ch] ); sDevChInfo.ch = ch%4; sDevChInfo.devnum = ch/4; sDevChInfo.fmt_def = oFmtDef; - if(oFmtDef == TVI_5M_20P) //needs 2nd identify - { + if(oFmtDef == TVI_5M_20P) {//needs 2nd identify nvp6168_video_input_cvi_tvi_5M20p_distinguish(&sDevChInfo); oFmtDef = sDevChInfo.fmt_def; @@ -746,12 +684,9 @@ printk(">>>>> CH[%d], Set video format : 0x%02X\n", ch, oCurVideofmt); } - } - else - { + } else { /* no video */ - if( oPreVideofmt != NC_VIVO_CH_FORMATDEF_UNKNOWN ) - { + if( oPreVideofmt != NC_VIVO_CH_FORMATDEF_UNKNOWN ) { //nvp6158_set_chnmode(ch, NC_VIVO_CH_FORMATDEF_UNKNOWN); ps_nvp6158_vfmts->prevideofmt[ch] = NC_VIVO_CH_FORMATDEF_UNKNOWN; @@ -770,8 +705,7 @@ unsigned int vloss=0, i; unsigned char vlossperchip[4]; - for(i=0;i<nvp6158_cnt;i++) - { + for(i = 0; i < nvp6158_cnt; i++) { gpio_i2c_write(nvp6158_iic_addr[i], 0xFF, 0x00); vlossperchip[i] = (gpio_i2c_read(nvp6158_iic_addr[i], 0xA8)&0x0F); vloss |= (vlossperchip[i]<<(4*i)); @@ -780,7 +714,7 @@ return vloss; } static unsigned char nvp6158_vloss_pre = 0xFF; -static unsigned char nvp6158_ch_first_plug_status[8]={1,1,1,1,1,1,1,1}; +static unsigned char nvp6158_ch_first_plug_status[8]={1, 1, 1, 1, 1, 1, 1, 1}; static __maybe_unused unsigned char nvp6158_is_first_plugin(unsigned char ch) { unsigned int vloss=0; @@ -836,7 +770,7 @@ { unsigned char acc_ref=0; unsigned char check_cnt = 4; - do{ + do { gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, 0x05+(ch%4)); acc_ref = gpio_i2c_read(nvp6158_iic_addr[ch/4], 0x27); gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x23, 0x80); @@ -1027,8 +961,7 @@ unsigned char val_0x54; unsigned char vfmt = chnmode%2; - if((chnmode <= AHD20_SD_H960_2EX_Btype_PAL) && (chnmode>=AHD20_SD_H960_NT)) - { + if((chnmode <= AHD20_SD_H960_2EX_Btype_PAL) && (chnmode>=AHD20_SD_H960_NT)) { gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, 0x00); val_0x54 = gpio_i2c_read(nvp6158_iic_addr[ch/4], 0x54); _CLE_BIT(val_0x54, (ch%4+4)); @@ -1039,9 +972,7 @@ gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, 0x05+ch%4); gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x69,0x01); gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xB8,0xB8); - } - else - { + } else { gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, 0x00); val_0x54 = gpio_i2c_read(nvp6158_iic_addr[ch/4], 0x54); _CLE_BIT(val_0x54, (ch%4+4)); @@ -1055,9 +986,9 @@ decoder_info.ch = ch%4; decoder_info.devnum = ch/4; decoder_info.fmt_def = chnmode; - if(__nvp6158_IsOver3MRTVideoFormat( &decoder_info )) + if(__nvp6158_IsOver3MRTVideoFormat( &decoder_info )) nvp6158_set_chn_ycmerge(ch, 1); - else + else nvp6158_set_chn_ycmerge(ch, 0); if(nvp6158_chip_id[decoder_info.devnum]==NVP6158C_R0_ID || nvp6158_chip_id[decoder_info.devnum]==NVP6158_R0_ID) nvp6158_video_input_onvideo_set( &decoder_info ); @@ -1065,14 +996,6 @@ nvp6168_video_input_onvideo_set( &decoder_info ); } - -/* -����ͨ��ģʽ -���� -ch: ͨ���ţ�ȡֵ��Χ0~(nvp6158_cnt*4-1) -vfmt: 0:NTSC, 1:PAL -chnmode:ͨ��ģʽ���ο�NVP6158_VI_MODE. -*/ int nvp6158_set_chnmode(const unsigned char ch, const unsigned char chnmode) { //unsigned char tmp; @@ -1080,17 +1003,14 @@ video_input_novid auto_novid; nvp6158_coax_str s_coax_str; - if(ch >= (nvp6158_cnt*4)) - { + if(ch >= (nvp6158_cnt*4)) { printk("func[nvp6158_set_chnmode] Channel %d is out of range!!!\n", ch); return -1; } /* set video format each format */ - if(chnmode < NC_VIVO_CH_FORMATDEF_MAX) - { - if(NC_VIVO_CH_FORMATDEF_UNKNOWN != chnmode) - { + if(chnmode < NC_VIVO_CH_FORMATDEF_MAX) { + if(NC_VIVO_CH_FORMATDEF_UNKNOWN != chnmode) { nvp6158_set_chn_commonvalue( ch, chnmode ); nvp6158_video_input_new_format_set(ch, chnmode); @@ -1116,9 +1036,7 @@ gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x40+ch%4,0x00); nvp6158_show_ch(ch); - } - else - { + } else { nvp6158_hide_ch(ch); auto_novid.ch = ch%4; auto_novid.devnum = ch/4; @@ -1141,17 +1059,14 @@ video_input_novid auto_novid; nvp6158_coax_str s_coax_str; - if(ch >= (nvp6158_cnt*4)) - { + if(ch >= (nvp6158_cnt*4)) { printk("func[nvp6168_set_chnmode] Channel %d is out of range!!!\n", ch); return -1; } /* set video format each format */ - if(chnmode < NC_VIVO_CH_FORMATDEF_MAX) - { - if(NC_VIVO_CH_FORMATDEF_UNKNOWN != chnmode) - { + if(chnmode < NC_VIVO_CH_FORMATDEF_MAX) { + if(NC_VIVO_CH_FORMATDEF_UNKNOWN != chnmode) { nvp6158_set_chn_commonvalue( ch, chnmode ); //nvp6158_video_input_new_format_set(ch, chnmode); @@ -1177,9 +1092,7 @@ gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x40+ch%4,0x00); nvp6158_show_ch(ch); - } - else - { + } else { nvp6158_hide_ch(ch); auto_novid.ch = ch%4; auto_novid.devnum = ch/4; @@ -1197,8 +1110,6 @@ /* -nvp6158��nvp6158c����ͬһ���� -portsel���в��죬nvp6158cֻ��ʹ��1��2��nvp6158��4��port������ʹ��0~3�� chip:chip select[0,1,2,3]; portsel: port select->6158c[1,2],6158[0,1,2,3]; portmode: port mode select[1mux,2mux,4mux] @@ -1214,19 +1125,19 @@ * Modify : * warning : *******************************************************************************/ -int nvp6158_set_portmode(const unsigned char chip, const unsigned char portsel, const unsigned char portmode, const unsigned char chid) +int nvp6158_set_portmode(const unsigned char chip, const unsigned char portsel, + const unsigned char portmode, const unsigned char chid) { unsigned char chipaddr = nvp6158_iic_addr[chip]; unsigned char tmp=0, tmp1=0, reg1=0, reg2=0; - if((portsel!=1) && (portsel!=2) && (nvp6158_chip_id[chip]==NVP6158C_R0_ID || nvp6158_chip_id[chip] == NVP6168C_R0_ID)) - { + if((portsel!=1) && (portsel!=2) && (nvp6158_chip_id[chip]==NVP6158C_R0_ID || + nvp6158_chip_id[chip] == NVP6168C_R0_ID)) { printk("nvp6158C_set_portmode portsel[%d] error!!!\n", portsel); //return -1; } - switch(portmode) - { + switch(portmode) { case NVP6158_OUTMODE_1MUX_SD: /*Output 720H/960H Single Channel data, Data Rate 37.125MHz,Pclk 37.125MHz, Single Edge.*/ gpio_i2c_write(chipaddr, 0xFF, 0x00); @@ -1402,7 +1313,7 @@ break; case NVP6158_OUTMODE_4MUX_MIX: /*HD,1920H,FHD-X 4mux mix,Data Rate 297MHz,Pclk 297MHz, Dual Edge. - SOC VI Port Abandon some data��realize 1920H->960H */ + SOC VI Port Abandon some data��realize 1920H->960H */ gpio_i2c_write(chipaddr, 0xFF, 0x00); gpio_i2c_write(chipaddr, 0x56, 0x32); gpio_i2c_write(chipaddr, 0xFF, 0x01); @@ -1432,8 +1343,8 @@ gpio_i2c_write(chipaddr, 0xFF, 0x00); gpio_i2c_write(chipaddr, 0x56, 0x10); gpio_i2c_write(chipaddr, 0xFF, 0x01); - if(nvp6158_chip_id[chip] == NVP6158C_R0_ID || nvp6158_chip_id[chip] == NVP6168C_R0_ID) - { + if(nvp6158_chip_id[chip] == NVP6158C_R0_ID || + nvp6158_chip_id[chip] == NVP6168C_R0_ID) { //6158C makes 2 bt656 ports to 1 bt1120 port. portsel=[1,2] to choose clock. gpio_i2c_write(chipaddr, 0xC2, (((chid%4)+0x04)<<4)|((chid%4)+0x04)); gpio_i2c_write(chipaddr, 0xC3, (((chid%4)+0x04)<<4)|((chid%4)+0x04)); @@ -1442,9 +1353,7 @@ gpio_i2c_write(chipaddr, 0xC8, 0x00); gpio_i2c_write(chipaddr, 0xC9, 0x00); gpio_i2c_write(chipaddr, 0xCC+portsel, 0x86); //37.125MHz clock - } - else - { + } else { //6158 makes 4 bt656 ports to 2 bt1120 port. portsel=[0,1] to choose clock. gpio_i2c_write(chipaddr, 0xC0+portsel*4, (((chid%4)+0x0C)<<4)|((chid%4)+0x0C)); gpio_i2c_write(chipaddr, 0xC1+portsel*4, (((chid%4)+0x0C)<<4)|((chid%4)+0x0C)); @@ -1459,8 +1368,8 @@ gpio_i2c_write(chipaddr, 0xFF, 0x00); gpio_i2c_write(chipaddr, 0x56, 0x10); gpio_i2c_write(chipaddr, 0xFF, 0x01); - if(nvp6158_chip_id[chip] == NVP6158C_R0_ID || nvp6158_chip_id[chip] == NVP6168C_R0_ID) - { + if(nvp6158_chip_id[chip] == NVP6158C_R0_ID || + nvp6158_chip_id[chip] == NVP6168C_R0_ID) { //6158C makes 2 bt656 ports to 1 bt1120 port. portsel=[1,2] to choose clock. gpio_i2c_write(chipaddr, 0xC2, (((chid%4)+0x04)<<4)|((chid%4)+0x04)); gpio_i2c_write(chipaddr, 0xC3, (((chid%4)+0x04)<<4)|((chid%4)+0x04)); @@ -1469,9 +1378,7 @@ gpio_i2c_write(chipaddr, 0xC8, 0x00); gpio_i2c_write(chipaddr, 0xC9, 0x00); gpio_i2c_write(chipaddr, 0xCC+portsel, 0x06); //74.25MHz clock - } - else - { + } else { //6158 makes 4 bt656 ports to 2 bt1120 port. portsel=[0,1] to choose clock. gpio_i2c_write(chipaddr, 0xC0+portsel*4, (((chid%4)+0x0C)<<4)|((chid%4)+0x0C)); gpio_i2c_write(chipaddr, 0xC1+portsel*4, (((chid%4)+0x0C)<<4)|((chid%4)+0x0C)); @@ -1486,8 +1393,8 @@ gpio_i2c_write(chipaddr, 0xFF, 0x00); gpio_i2c_write(chipaddr, 0x56, 0x10); gpio_i2c_write(chipaddr, 0xFF, 0x01); - if(nvp6158_chip_id[chip] == NVP6158C_R0_ID || nvp6158_chip_id[chip] == NVP6168C_R0_ID) - { + if(nvp6158_chip_id[chip] == NVP6158C_R0_ID || + nvp6158_chip_id[chip] == NVP6168C_R0_ID) { //6158C makes 2 bt656 ports to 1 bt1120 port. portsel=[1,2] to choose clock. gpio_i2c_write(chipaddr, 0xC2, 0xdc); gpio_i2c_write(chipaddr, 0xC3, 0xdc); @@ -1497,9 +1404,7 @@ gpio_i2c_write(chipaddr, 0xC9, 0x22); gpio_i2c_write(chipaddr, 0xCD, 0x1f); //74.25MHz clock gpio_i2c_write(chipaddr, 0xCE, 0x1f); //74.25MHz clock - } - else - { + } else { //6158 makes 4 bt656 ports to 2 bt1120 port. portsel=[0,1] to choose clock. gpio_i2c_write(chipaddr, 0xC0+portsel*4, 0xdc); gpio_i2c_write(chipaddr, 0xC1+portsel*4, 0xdc); @@ -1513,8 +1418,8 @@ gpio_i2c_write(chipaddr, 0xFF, 0x00); gpio_i2c_write(chipaddr, 0x56, 0x10); gpio_i2c_write(chipaddr, 0xFF, 0x01); - if(nvp6158_chip_id[chip] == NVP6158C_R0_ID || nvp6158_chip_id[chip] == NVP6168C_R0_ID) - { + if(nvp6158_chip_id[chip] == NVP6158C_R0_ID || + nvp6158_chip_id[chip] == NVP6168C_R0_ID) { //6158C makes 2 bt656 ports to 1 bt1120 port. portsel=[1,2] to choose clock. gpio_i2c_write(chipaddr, 0xC2, 0x54); gpio_i2c_write(chipaddr, 0xC3, 0x54); @@ -1524,9 +1429,7 @@ gpio_i2c_write(chipaddr, 0xC9, 0x22); gpio_i2c_write(chipaddr, 0xCD, 0x56); //148.5MHz clock gpio_i2c_write(chipaddr, 0xCE, 0x56); //148.5MHz clock - } - else - { + } else { //6158 makes 4 bt656 ports to 2 bt1120 port. portsel=[0,1] to choose clock. gpio_i2c_write(chipaddr, 0xC0+portsel*4, 0xdc); gpio_i2c_write(chipaddr, 0xC1+portsel*4, 0xdc); @@ -1570,8 +1473,8 @@ gpio_i2c_write(chipaddr, 0xFF, 0x00); gpio_i2c_write(chipaddr, 0x56, 0x32); gpio_i2c_write(chipaddr, 0xFF, 0x01); - if(nvp6158_chip_id[chip] == NVP6158C_R0_ID || nvp6158_chip_id[chip] == NVP6168C_R0_ID) - { + if(nvp6158_chip_id[chip] == NVP6158C_R0_ID || + nvp6158_chip_id[chip] == NVP6168C_R0_ID) { //6158C makes 2 bt656 ports to 1 bt1120 port. portsel=[1,2] to choose clock. gpio_i2c_write(chipaddr, 0xC2, 0x54); gpio_i2c_write(chipaddr, 0xC3, 0x76); @@ -1582,9 +1485,7 @@ //dual_edge gpio_i2c_write(chipaddr, 0xCD, 0x06); //74.25MHz clock gpio_i2c_write(chipaddr, 0xCE, 0x06); //74.25MHz clock - } - else - { + } else { //6158 makes 4 bt656 ports to 2 bt1120 port. portsel=[0,1] to choose clock. gpio_i2c_write(chipaddr, 0xC0+portsel*4, 0xdc); gpio_i2c_write(chipaddr, 0xC1+portsel*4, 0xfe); @@ -1599,8 +1500,8 @@ gpio_i2c_write(chipaddr, 0xFF, 0x00); gpio_i2c_write(chipaddr, 0x56, 0x32); gpio_i2c_write(chipaddr, 0xFF, 0x01); - if(nvp6158_chip_id[chip] == NVP6158C_R0_ID || nvp6158_chip_id[chip] == NVP6168C_R0_ID) - { + if(nvp6158_chip_id[chip] == NVP6158C_R0_ID || + nvp6158_chip_id[chip] == NVP6168C_R0_ID) { //6158C makes 2 bt656 ports to 1 bt1120 port. portsel=[1,2] to choose clock. gpio_i2c_write(chipaddr, 0xC2, 0x54); gpio_i2c_write(chipaddr, 0xC3, 0x76); @@ -1610,9 +1511,7 @@ gpio_i2c_write(chipaddr, 0xC9, 0x88); gpio_i2c_write(chipaddr, 0xCD, 0x40); //148.5MHz clock gpio_i2c_write(chipaddr, 0xCE, 0x40); //148.5MHz clock - } - else - { + } else { //6158 makes 4 bt656 ports to 2 bt1120 port. portsel=[0,1] to choose clock. gpio_i2c_write(chipaddr, 0xC0+portsel*4, 0xdc); gpio_i2c_write(chipaddr, 0xC1+portsel*4, 0xfe); @@ -1647,15 +1546,12 @@ portmode==NVP6158_OUTMODE_2MUX_BT1120S ||\ portmode==NVP6158_OUTMODE_2MUX_BT1120S_720P ||\ portmode==NVP6158_OUTMODE_2MUX_BT1120S_1080P ||\ - portmode==NVP6158_OUTMODE_4MUX_BT1120S) - { + portmode==NVP6158_OUTMODE_4MUX_BT1120S) { gpio_i2c_write(chipaddr, 0xFF, 0x01); gpio_i2c_write(chipaddr, 0xA0+portsel, 0x20); //TM clock mode sel manual printk("TM clock mode sel manual mode \n"); - } - else - { + } else { gpio_i2c_write(chipaddr, 0xFF, 0x01); gpio_i2c_write(chipaddr, 0xA0+portsel, 0x00); //TM clock mode sel auto printk("TM clock mode sel auto mode \n"); @@ -1671,13 +1567,14 @@ enclk: enable clock pin, 1:enable,0:disable; endata: enable data port, 1:enable,0:disable; */ -void nvp6158_set_portcontrol(const unsigned char chip, const unsigned char portsel, const unsigned char enclk, const unsigned char endata) +void nvp6158_set_portcontrol(const unsigned char chip, const unsigned char portsel, + const unsigned char enclk, const unsigned char endata) { unsigned char reg_portctl; gpio_i2c_write(nvp6158_iic_addr[chip], 0xFF, 0x01); reg_portctl = gpio_i2c_read(nvp6158_iic_addr[chip], 0xCA); - if(nvp6158_chip_id[chip] == NVP6158C_R0_ID || nvp6158_chip_id[chip] == NVP6168C_R0_ID) - { + if(nvp6158_chip_id[chip] == NVP6158C_R0_ID || + nvp6158_chip_id[chip] == NVP6168C_R0_ID) { if(enclk == 1) _SET_BIT(reg_portctl, (portsel+5)); else @@ -1687,9 +1584,7 @@ _SET_BIT(reg_portctl, portsel); else _CLE_BIT(reg_portctl, portsel); - } - else if(nvp6158_chip_id[chip] == NVP6158_R0_ID) - { + } else if(nvp6158_chip_id[chip] == NVP6158_R0_ID) { if(enclk == 1) _SET_BIT(reg_portctl, (portsel+4)); else @@ -1724,8 +1619,7 @@ { unsigned char ch = 0; - for(ch = 0; ch < 4; ch++) - { + for(ch = 0; ch < 4; ch++) { gpio_i2c_write(nvp6158_iic_addr[chip], 0xff, 0x0a + (ch / 2)); gpio_i2c_write(nvp6158_iic_addr[chip], 0x00 + ( 0x80 * (ch % 2)), 0x80 ); -- Gitblit v1.6.2