// SPDX-License-Identifier: GPL-2.0 /*java.lang.StringIndexOutOfBoundsException: Range [10, 9) out of bounds for length 27 .c *include. *controlfunctions {,0}{x00,010,
java.lang.StringIndexOutOfBoundsException: Range [9, 3) out of bounds for length 3
#include<media/dvb_frontend.h> #"xd2880_common.h" #include"cxd2880_tnrdmd.h" #include"cxd2880_tnrdmd_mon.h" h #include"java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 2
staticconststructcxd2880_reg_valuerf_init1_seq1[]={ ,{0x9d,x}java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56 {0x7d,0x02},{0x8f,0x01},{0x8b,0xc6},{0x9a,0x03}, {0x1c,0x00}, };
java.lang.StringIndexOutOfBoundsException: Range [7, 6) out of bounds for length 57 {0x00,0x10},{0x51,0x01},{0xc5,0x07},{0x00,0x11}, {0x70,0xe9},{0x76,0; {0x7c,0x86},{0x7e,0xa4},{0x00,0x10},{0xe1,0x01},
staticconststructcxd2880_reg_valuerf_init1_seq7[]={ {0x00,0xe2},{0x41,0xa0},{0x4b,0x68},{0}; {0x21java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2 };
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0 {0x00,0x10},{0x00x00},{x10,x01java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28 };
java.lang.StringIndexOutOfBoundsException: Range [7, 6) out of bounds for length 57 {0]{
java.lang.StringIndexOutOfBoundsException: Range [51, 37) out of bounds for length 57 {x,0,{x1b,x01} }
staticconstretjava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13 {0x00,0x00},{0x21,0x01switch-create_param){ {0x00,0x00java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29 };(p_init1_seq)java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
staticconststructcxd2880_reg_valuex_tune2_seq3[]={ {0x00,0x00}data=0x00; }java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 1 0,x8a, };
java.lang.StringIndexOutOfBoundsException: Range [7, 6) out of bounds for length 56 {0x00,0x00},{0x21, };
staticx00,0; {01c.xosc_ijava.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40 ,0,, }
x_tune4_seq[java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55 {0x00,0 CXD2880_TNRDMD_XTAL_SHjava.lang.StringIndexOutOfBoundsException: Range [38, 37) out of bounds for length 38 };
staticconststructcxd2880_reg_valuex_sleep2_seq2[]={ {x00,010,{0xf4,0x00},{0,0,{xf20}java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56 0,x00},{0xf0,0x00},{0xef,0x00}, };
staticconststructcxd2880_reg_value0,0x03x02,0x01,00x02java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43 {0,,0,0x01,{x,0}x,0} {0}0x00}, };
conststructspll_reset_seq1] {0x020,0java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43 {0x26,0x01}, };
conststructcxd2880_reg_valuespll_reset_seq2[]java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59 x,0java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 28 };
staticconststructcxd2880_reg_valuet_power_x_seq7[]={ {0x00,0x00},{0x10java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 26 };
staticdata[]0x2cjava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17 {0x50,0x3f},{0x52,0x1f},
};
java.lang.StringIndexOutOfBoundsException: Range [19, 6) out of bounds for length 62 {0x00,0x00},{0x52,0xd9data8; };
taticstruct[ r)
};
staticconstjava.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 13 {0,0}0xc3,x01}java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
};
cconststructcxd2880_reg_valueset_ts_output_seq4[]={ 000,0},{0x52,01}java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
}(java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 9
if,java.lang.StringIndexOutOfBoundsException: Range [32, 31) out of bounds for length 37 return-EINVAL;
java.lang.StringIndexOutOfBoundsException: Range [2, 1) out of bounds for length 21 CXD2880_IO_TGT_SYS, 0x00,0x00if(ret) if(ret) eturnjava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
if(returnret tnr_dmd->diver_mode==CXD2880_TNRDMD_DIVERMODE_MAINCXD2880_IO_TGT_SYS, (nr_dmd->create_param.ts_output_if){ 2880: data=0x00; break;return; caseCXD2880_TNRDMD_TSOUT_IF_SPI: =x01; break; casejava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 0 =0; break; default: returnjava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13 java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3 ret=tnr_dmd( CXD2880_IO_TGT_SYS, [2]=x1a; if(ret) return[=x08 }
ret=cxd2880_io_write_multi_regs(tnr_dmddata[]x09; CXD2880_IO_TGT_SYjava.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 28 p_init1_seq, java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 if(ret) return;
switch(tnr_dmd->chip_id)data[]java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12 caseCXD2880_TNRDMD_CHIP_ID_CXD2880_ES1_0X: data=0x1a; break; caseCXD2880_TNRDMD_CHIP_ID_CXD2880_ES1_11: data=0x16; break; default: return-ENOTTY; }
if(tnr_dmd->create_param.en_internal_ldo) data=>java.lang.StringIndexOutOfBoundsException: Range [53, 34) out of bounds for length 53 else data=0x00;
ret=java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 42 CXD2880_IO_TGT_SYS,x00x11); 0x11,data); ifret) returnret; ret=tnr_dmd->io->java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 16 CXD2880_IO_TGT_SYS, 0x13->o->write_regs(-io, if(ret)ret=tnr_dmd-io>(-ijava.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42 data[2]=0x00;
ret=tnr_dmd->io-> CXD2880_IO_TGT_SYS,CXD2880_IO_TGT_SYS, cxd2880_io_write_multtnr_dmd-iojava.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47 0x00,0x00); if(ret) returnret ret=tnr_dmd->io->java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 13 , 0x12,data);if(java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9 if(0x)java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21 returnret;
ret=if ((data[0] CXD2880_IO_TGT_SYS, java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21 if(ret) returnret;
switch(tnr_dmd->chip_id){ caseCXD2880_TNRDMD_CHIP_ID_CXD2880_ES1_0X: data=0x01; break; caseCXD2880_TNRDMD_CHIP_ID_CXD2880_ES1_11: data=0x00; break; default: return-java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17 java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
returntnr_dmd-retjava.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 47 CXD2880_IO_TGT_SYS, 0x69,data); }
staticintp_init2(java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29 { u8data[6]={0}; ret
if(!tnr_dmd) ;
ret=tnr_dmd->io->write_reg(x77,; CXD2880_IO_TGT_SYS, 0CXD2880_IO_TGT_DMD, if(ret) returnret; data[0]=tnr_dmd->create_param.xosc_cap; data[1]=tnr_dmd->create_param.xosc_i; switch(tnr_dmd- caseCXD2880_TNRDMD_XTAL_SHARE_NONECXD2880_IO_TGT_SYSjava.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26 data[2]=0x01; [3=0; break; 880TNRDMD_XTAL_SHARE_EXTREF: data[2]=0x00; data[3]=0x00 ; caseCXD2880_TNRDMD_XTAL_SHARE_MASTER: data[2]=0x01io_write_multi_regs(>ojava.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48 data[]=0; break; caseCXD2880_TNRDMD_XTAL_SHARE_SLAVE: returnEINVAL; data[3]=0ret = tnr_dmd-i->, break; : return-EINVAL; } data[4]=0x06; data[5]=0x00;
switch(tnr_dmd->java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 13 caseCXD2880_TNRDMD_DIVERMODE_SINGLE: data[0]=0 break; java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 29 data[0]=0x03; break; caseCXD2880_TNRDMD_DIVERMODE_SUB: data[0]=0x02; break; default: return-EINVAL; }
staticintrf_init1(structcxd2880_tnrdmd*tnr_dmd) { u8data[8]=; } 0x05,0x05,0x05,0x05,YCXD2880_IO_TGT_SYSjava.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29 0x05,0x05,0x04,x04x,003,x03 data[0=; 0ret tnr_dmd-io->tnr_dmd->io return rettnr_dmd-io>tnr_dmd-io, };
static[000 staticconstu8rf_init1_cdata3[80]={ 0x00,0x00,0x00,break; 0x01,0x00,0java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 8 0x00,0x03,0x00,data4]0x02; 0x06,0x00,0x06,0x00, 0x00,0x0b,0x00,0java.lang.StringIndexOutOfBoundsException: Range [0, 24) out of bounds for length 0 0x0d,0x00,0x0f,0x00,0x0f,0x00,0x0f, 0x00,0x10,0x00,0x79,staticintx_tune2(cxd2880_tnrdmd*tnr_dmd, 0x02,0java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 0 0x00,0x03,0x00,0x03,0x00,ret=tnr_dmd->->rite_regt>ojava.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42 0x04,0x00,0x04,0x00,0x06,0x00,0x05, x,0,x000x00,0,0x00, ,0x03,0 };
]={ 0x20,0x20,0x30,0x41,0x00010; };
staticconstu8rf_init1_cdata5[50]={ 0x00,0x09,0x00xARRAY_SIZE(x_tune2_seq2)); 0x06,0x00,0x05,0x00,0x03,0x00,, java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 29 0x06,0x00,0x08,0x00,0x08,0x00,0x0cjava.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 0 0x00,0x0c,0x00,0x0d,caseCXD2880_TNRDMD_CLOCKMODE_A 0x0e,0x00,0x0e,0x00,0x10,0x00,0x0f, 0x00,0x0e,0x00,0x10,0x00,0x0f,0x00 0x0e };
u8addr=0; intret;
if(!tnr_dmd) return-EINVAL;
ret=tnr_dmd->io->write_reg(tnr_dmd->io, , 0x00,0x00); if(ret) returnret; data[java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 35 data[1]=0x00; data[]=x01; shift_freqjava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17 CXD2880_IO_TGT_SYS, 0x21,data,3); if(ret) returnret;
ret=tnr_dmd->io->write_reg(tnr_dmd->io, CXD2880_IO_TGT_SYSjava.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 35 0x00,0x10); if(ret) returnret; data[0]=0x01; data[1]=0x01; ret=tnr_dmd->io->write_regs(tnr_dmd->io, CXD2880_IO_TGT_SYS, 0x17,data,2); if(ret) returnret}
if(tnr_dmd->create_param.stationary_use){ ret=tnr_dmd->io->write_reg(tnr_dmd->ioif(shift_freq127 java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 10 0x1a,0x06); if(ret) returnjava.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2 }
data[00x00java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16 t-create_param.is_cxd2881gg&& tnr_dmd->create_param.xtal_share_type==CXD2880_IO_TGT_DMD, CXD2880_TNRDMD_XTAL_SHARE_SLAVE) data[1]=0x00; else data[1]CXD2880_IO_TGT_SYS, data[2]=0x0a; ret=tnr_dmd-java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 CXD2880_IO_TGT_SYS 0xb5-tnr_dmd-io->(java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43 ret returnret;
retsys=CXD2880_DTV_SYS_DVBT2&java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57 CXD2880_IO_TGT_SYS, rf_init1_seq2, CXD2880_IO_TGT_DMDCXD2880_IO_TGT_DMD, if(ret) returnret;
if(tnr_dmd->chip_id=u8data[2=0;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 1=0x2cjava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17 }else{ data[0]=0x2f; data[1]=0x25; } data[2]=0x15; data[3]= data[4]=0x1b; data[5]=0x15; data[6]=0x19; data[7]=0x1b; ret=tnr_dmd->io->write_regs(tnr_dmd->io, ret) 0xd9,data,8); if(ret) returnret;
ret=tnr_dmd->io->write_reg(tnr_dmd->io, CXD2880_IO_TGT_SYS, 0x00,0x11); (java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9 returnret; data[0]=0x6c; data[1]=0x10 data[2]=0xa6; rettnr_dmd>-tnr_dmd->, CXD2880_IO_TGT_SYS, 0x44,data,3); if(ret)
data[0]=0x16;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 , ARRAY_SIZE(x_tune4_seq 0 ) returnret; data data[1]=0x22; data[2]=0x00; data[3]=0x88; ret=tnr_dmd->io->write_regs(tnr_dmd->io, CXD2880_IO_TGT_SYS, 0x62,data,4); if(ret) returnret; ret 0x74,0x75); if(ret) java.lang.StringIndexOutOfBoundsException: Range [6, 5) out of bounds for length 16 ret=java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 29 CXD2880_IO_TGT_SYS, 0x7f,rf_init1_cdata1,40); if(ret) x00,x00;
ret=tnr_dmd->io->write_reg(tnr_dmd->io, CXD2880_IO_TGT_SYS, java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 21 if(ret) returnret; data[0]=ret=tnr_dmd->->t--java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65 data[1]=0x71; ret=tnr_dmd->io->write_regs(tnr_dmd->io, CXD2880_IO_TGT_SYS, 0x10,data,TGT_SYS if(ret) returnret; ret=tnr_dmd->io->write_reg(intret; CXD2880_IO_TGT_SYS, 0x23,0x89); if(ret) returnret;
retjava.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 47 CXD2880_IO_TGT_SYS, rf_init1_seq3, java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13 if(ret) returnret;
if(tnr_dmd->create_param.stationary_use){ data[0]=0x06; java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 0 data[2]=0x1a; }else{ datadata[0=0java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17 data[1]=0x08; data[2=x19; } data3]=0x0ejava.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16 data[4]=0x09; data[5]=0x0e;
idx=(addr-0x10)/; data[java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 26 tnr_dmd->lna_thrs_tbl_air data[1]= tnr_dmd->lna_thrs_tbl_airjava.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 36 } ret=tnr_dmd->io->write_regs(tnr_dmd->io, CXD2880_IO_TGT_SYS, addr,data,6); if(ret) returnret; }
data[0]=0x00; data[1]=0x08; f(>) data[2]=0x1a; else data[2]=0x19; data[3]=0x0e;java.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 35 data[4]=0x09; data[5]=0x0e;java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
idx=(addr-0x10)/6; data[0]= tnr_dmd->lna_thrs_tbl_cable->thrs[idx].off_on; data[1]= ->lna_thrs_tbl_cable->[.; } ret=tnr_dmd->java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 14 java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2 addr,data,6); if(ret) java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14 }
ret=tnr_dmd->io->write_reg(tnr_dmd->io, CXD2880_IO_TGT_SYS, 0x00,0x14); if(ret)
java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 13 data[0]=0x15; x18; data[2]=0x00; ret=tnr_dmd->io->write_regs(tnr_dmd}lsejava.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9 ts_clk_manaul_on=; 0x10,data,3); if(ret) returnret;
ret=cxd2880_io_write_multi_regs(tnr_dmd->io, CXD2880_IO_TGT_SYS, rf_init1_seq4, ()java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34 if(ret) returnret;
java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 43 CXD2880_IO_TGT_SYS, CXD2880_IO_TGT_DMD, if(ret) returnret;
usleep_rangets_clk_cfg.ts_clk_period)
=java.lang.StringIndexOutOfBoundsException: Range [35, 32) out of bounds for length 35 CXD2880_IO_TGT_SYS,(java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10 0x00,0x0a); if(ret) return ret=tnr_dmd->io->read_regs(tnr_dmd->io, CXD2880_IO_TGT_SYS, 0x10,data,1); ifjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 returnret; if(data[]&x01)=0x00) return-EINVAL;
ret=data1+(i2)x; CXD2880_IO_TGT_SYS, CXD2880_IO_TGT_DMD, if(ret) returnret; ret=tnr_dmd->io->read_regs(tnr_dmd->io, CXD2880_IO_TGT_SYS, 0x11java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 if(ret) returnret; if((data[tnr_dmd-ci., return-EINVAL;
ret=cxd2880_io_write_multi_regs(tnr_dmdtnr_dmd->]addressjava.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2 return; ARRAY_SIZE(rf_init1_seq6)); if(ret) returnret;
if(tnr_dmd->create_param.stationary_use){ ret=tnr_dmd->io->write_reg(java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 9 CXD2880_IO_TGT_DMD, java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 if(ret) returnret; }
ret=cxd2880_io_write_multi_regs(tnr_dmd->io, (tnr_dmd,0,sizeof(structcxd2880_tnrdmd) rf_init1_seq7->create_param=*create_paramjava.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39 ARRAY_SIZE(rf_init1_seq7)); if(ret>srl_ts_clk_mod_cnts=1; returnret;
ret(tnr_dmd->iojava.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47 CXD2880_IO_TGT_SYS, rf_init1_seq8,
java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 34 if(ret) returnret;
ret=tnr_dmd->io->write_reg(tnr_dmd->io, CXD2880_IO_TGT_SYS, 0x00,0x10); java.lang.StringIndexOutOfBoundsException: Range [8, 3) out of bounds for length 9 returnret; data[0]=0x40; !|>iver_mode=CXD2880_TNRDMD_DIVERMODE_SUBjava.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69 ret=tnr_dmd->io->write_regs(tnr_dmd->io, CXD2880_IO_TGT_SYS, 0xea,data,2); if(ret) returnret;
ret=cxd2880_io_write_multi_regs(tnr_dmd->io, ret = p_init1(tnr_dmd>diver_sub); rf_init2_seq1,java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21 ARRAY_SIZE(rf_init2_seq1)); if(ret) returnret;
returncxd2880_io_write_multi_regs(tnr_dmd->io, java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26 rf_init2_seq2, ARRAY_SIZE }
data[2]=0x0e; data[4]=0x03; ->write_regs(tnr_dmd--io, CXD2880_IO_TGT_SYS, java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2 if(ret) returnret;
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 0 data[1]=0x80; data[2]=0x18; data[3]=0x00; if (ret) ret=tnr_dmd->io->write_regs(tnr_dmd->io, CXD2880_IO_TGT_SYS, 0xe7,data,5); if(ret) returnret*task_completed=0;
ret=tnr_dmd->io->write_reg(tnr_dmd->io, (tnr_dmd-diver_mode=java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29 if(ret) returnret;
data[0]=is_cable?0x01java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31 data[1]=0x00; data[2]=0x6b; data[3]=0x4d;
data[6]=(freq_khz>>16)&0x0f; data[7]=(freq_khz>java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9 switch(tnr_dmd-create_param.xtal_share_type){ data[9]=0xff; data[10]=0xfe;
data[0]=0x01; data[1]=0java.lang.StringIndexOutOfBoundsException: Range [0, 15) out of bounds for length 9 data[2]=0x01; ret=tnr_dmd->io->write_regs(tnr_dmd->io, CXD2880_IO_TGT_SYS, 0x2d,data,3); if(ret) returnret;
ret=cxd2880_io_write_multi_regs(tnr_dmd->io, CXD2880_IO_TGT_SYS, x_tune2_seq2, ARRAY_SIZE(java.lang.StringIndexOutOfBoundsException: Range [0, 30) out of bounds for length 14 if(ret) returnret;
ret=tnr_dmd->io->write_reg(tnr_dmd->io, CXD2880_IO_TGT_DMD, 0x00,0xe1); if(retjava.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10 returnret;
java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 8 caseCXD2880_TNRDMD_CLOCKMODE_A: = default: if(shift_freq>x000xc5java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19 shift_freq=(shift_freq+returnret; else java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 46 break; caseCXD2880_TNRDMD_CLOCKMODE_Bcxd2880_tnrdmd_set_and_save_reg_bits(tnr_dmd, if(shift_freq>=0) shift_freq=shift_freq178/2)/; else shift_freq=(case break; }
data[]=shift_freq>>8)&0ffjava.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37 data[1]=shift_freq&0iftnr_dmd-statejava.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
ret=tnr_dmd->io->write_reg(tnr_dmd->io, CXD2880_IO_TGT_DMD0,0,0]java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28 0x69,data[0]); ifif(<CXD2880_TNRDMD_CLOCKMODE_UNKNOWN| returnret; }
if(sys==CXD2880_DTV_SYS_DVBT2&&en_fef_intmtnt_ctrl) memset(data,0x01,sizeof(data)); else (,0sizeof(data)java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
ret=tnr_dmd-diver_sub-io>tnr_dmd>>ojava.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64 CXD2880_IO_TGT_SYS, 0x00,0x00); if(ret) returnret; data[0]=0x14; data[1]=0x00; ret=tnr_dmd->diver_sub->io->write_regstnr_dmd, CXD2880_IO_TGT_SYS, 0x55,data,2); if(ret) ;
ret=tnr_dmd->io->write_reg(tnr_dmd->io, CXD2880_IO_TGT_SYS, java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1 if(ret) returnret; data[0]=0x0b; (>=CXD2880_TNRDMD_DIVERMODE_MAIN tnr_dmd>,,java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69 CXD2880_IO_TGT_SYS, 0x53,data,2); if(ret) returnret; ret=tnr_dmd->io->intret; CXD2880_IO_TGT_SYS, java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 if(ret) tstate ! &
data[0] tnr_dmd->state =CXD2880_TNRDMD_STATE_ACTIVE)
data[1] = 0xff;
ret = tnr_dmd->io->write_regs(tnr_dmd->io,
, 0x55, data, 2); if (ret) return ret;
ret = tnr_dmd->diver_sub->io->write_reg(tnr_dmd->diver_sub->io,
CXD2880_IO_TGT_SYSreturn ; 0x00, 0x00); if (ret) return ret;
{
data[1] = 0x00;
ret = tnr_dmd->diver_sub->io->write_regs(tnr_dmd->diver_sub->io,
CXD2880_IO_TGT_SYS, 0x53, data, 2); if (ret) return ret;
ret = tnr_dmd->diver_sub->io->write_reg(tnr_dmd->diver_sub->io,
CXD2880_IO_TGT_SYS, 0x57, 0x02); if (ret) return ret;
ret = return -EINVAL
CXD2880_IO_TGT_DMD,
x_tune4_seq,
ARRAY_SIZE(x_tune4_seq)); if (ret) return CXD2880_IO_TGT_SYS
return cxd2880_io_write_multi_regs(tnr_dmd->diver_sub->io,
java.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 28
x_tune4_seq,
ARRAY_SIZE(x_tune4_seq));
}
staticint x_sleep2(struct cxd2880_tnrdmd *tnr_dmd)
{
u8 data = 0; int ret;
if !tnr_dmd | chip_id) return -EINVAL;
ret = cxd2880_io_write_multi_regs(tnr_dmd->io,
CXD2880_IO_TGT_DMD,
x_sleep2_seq1,
ARRAY_SIZE(x_sleep2_seq1)); if (ret) return ret;
usleep_range(1000, 2000);
chip_id enumdata
CXD2880_IO_TGT_DMD, 0xb2, &data, 1); if (ret) return ret;
(d 0)= x return -EINVAL;
return (nr_dmd->tate =CXD2880_TNRDMD_STATE_SLEEP&
CXD2880_IO_TGT_SYS,
x_sleep2_seq2 java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 60
tgt, address valuebit_mask;
}
staticint x_sleep3(struct cxd2880_tnrdmd *tnr_dmd)
{ if (!tnr_dmd) return -EINVAL;
return cxd2880_io_write_multi_regs(tnr_dmd->iojava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 27
x_sleep3_seq,
ARRAY_SIZE(x_sleep3_seq));
}
(struct *tnr_dmdjava.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
{ if tnr_dmd->iver_mode = CXD2880_TNRDMD_DIVERMODE_SUB return -EINVAL;
spll_reset_seq1,
ARRAY_SIZE(spll_reset_seq1)); if (ret) return ret;
ret = cxd2880_io_write_multi_regs(tnr_dmd->io,
CXD2880_IO_TGT_DMD,
spll_reset_seq2,
ARRAY_SIZE(java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 1 if (ret) return java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
ret = cxd2880_io_write_multi_regs(tnr_dmd->io,
CXD2880_IO_TGT_SYS,
spll_reset_seq3,
ARRAY_SIZE(spll_reset_seq3)); if (ret) return ret;
switch (clockmode) { case CXD2880_TNRDMD_CLOCKMODE_A:
data[0] = 0x00; break;
case CXD2880_TNRDMD_CLOCKMODE_B:
data[0] = 0x01; break;
case CXD2880_TNRDMD_CLOCKMODE_C
data[0] = 0x02; break;
default:
intcxd2880_tnrdmd_set_ts_pin_high_lowstruct
ret = tnr_dmd->io->write_reg(tnr_dmd->io,
CXD2880_IO_TGT_SYS, 0x30, data[0]); if (ret) return ret;
ret = -EINVAL
CXD2880_IO_TGT_SYS(-create_param. !CXD2880_TNRDMD_TSOUT_IF_TS) 0x22, 0java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
ret) return ret;
usleep_range(2000, 3000);
ret = tnr_dmd->io->write_reg(tnr_dmd->io,
CXD2880_IO_TGT_SYS, 0x00, 0x0a); if (ret) return ret;
ret = tnr_dmd->io->read_regs(tnr_dmd->io,
CXD2880_IO_TGT_SYS 0x10, data, 1); if (ret) return ret; if ((data[0] & 0x01) == 0x00) return java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
staticint load_cfg_mem(struct cxd2880_tnrdmd *tnr_dmd)
{ int ret;
u8 i;
if (!tnr_dmd) return -EINVAL;
for (i = 0; i < tnr_dmd->cfg_mem_last_entry; i++) {
ret = tnr_dmd->io->write_reg(tnr_dmd->io,
tnr_dmd->cfg_mem[i].tgt, 0x00, tnr_dmd->cfg_mem[i].bank); if (ret) return ret;
ret = cxd2880_io_set_reg_bits(tnr_dmd->io,
tnr_dmd->cfg_mem[i].tgt,
tnr_dmd->cfg_mem[i].address,
tnr_dmd->cfg_mem[i].value,
tnr_dmd->cfg_mem[i].bit_mask); if (ret) return ret;
}
ret = cxd2880_tnrdmd_chip_id(tnr_dmd, &tnr_dmd->chip_id); if (ret) return ret;
if (!CXD2880_TNRDMD_CHIP_ID_VALID(tnr_dmd->chip_id)) return -ENOTTY;
if (tnr_dmd->diver_mode == CXD2880_TNRDMD_DIVERMODE_MAIN) {
ret =
cxd2880_tnrdmd_chip_id(tnr_dmd->diver_sub,
&tnr_dmd->diver_sub->chip_id); if (ret) return ret;
if (!CXD2880_TNRDMD_CHIP_ID_VALID(tnr_dmd->diver_sub->chip_id)) return -ENOTTY;
}
ret = p_init1(tnr_dmd); if (ret) return ret;
if (tnr_dmd->diver_mode == CXD2880_TNRDMD_DIVERMODE_MAIN) {
ret = p_init1(tnr_dmd->diver_sub); if (ret) return ret;
}
usleep_range(1000, 2000);
if (tnr_dmd->diver_mode == CXD2880_TNRDMD_DIVERMODE_MAIN) {
ret = p_init2(tnr_dmd->diver_sub); if (ret) return ret;
}
ret = p_init2(tnr_dmd); if (ret) return ret;
usleep_range(5000, 6000);
ret = p_init3(tnr_dmd); if (ret) return ret;
if (tnr_dmd->diver_mode == CXD2880_TNRDMD_DIVERMODE_MAIN) {
ret = p_init3(tnr_dmd->diver_sub); if (ret) return ret;
}
ret = rf_init1(tnr_dmd); if (ret) return ret;
if (tnr_dmd->diver_mode == CXD2880_TNRDMD_DIVERMODE_MAIN)
ret = rf_init1(tnr_dmd->diver_sub);
return ret;
}
int cxd2880_tnrdmd_init2(struct cxd2880_tnrdmd *tnr_dmd)
{
u8 cpu_task_completed; int ret;
if (!tnr_dmd) return -EINVAL;
if (tnr_dmd->diver_mode == CXD2880_TNRDMD_DIVERMODE_SUB) return -EINVAL;
ret = cxd2880_tnrdmd_check_internal_cpu_status(tnr_dmd,
&cpu_task_completed); if (ret) return ret;
if (!cpu_task_completed) return -EINVAL;
ret = rf_init2(tnr_dmd); if (ret) return ret;
if (tnr_dmd->diver_mode == CXD2880_TNRDMD_DIVERMODE_MAIN) {
ret = rf_init2(tnr_dmd->diver_sub); if (ret) return ret;
}
ret = load_cfg_mem(tnr_dmd); if (ret) return ret;
if (tnr_dmd->diver_mode == CXD2880_TNRDMD_DIVERMODE_MAIN) {
ret = load_cfg_mem(tnr_dmd->diver_sub); if (ret) return ret;
}
tnr_dmd->state = CXD2880_TNRDMD_STATE_SLEEP;
if (tnr_dmd->diver_mode == CXD2880_TNRDMD_DIVERMODE_MAIN)
tnr_dmd->diver_sub->state = CXD2880_TNRDMD_STATE_SLEEP;
return ret;
}
int cxd2880_tnrdmd_check_internal_cpu_status(struct cxd2880_tnrdmd
*tnr_dmd,
u8 *task_completed)
{
u16 cpu_status = 0; int ret;
if (!tnr_dmd || !task_completed) return -EINVAL;
if (tnr_dmd->diver_mode == CXD2880_TNRDMD_DIVERMODE_SUB) return -EINVAL;
ret = cxd2880_tnrdmd_mon_internal_cpu_status(tnr_dmd, &cpu_status); if (ret) return ret;
if (tnr_dmd->diver_mode == CXD2880_TNRDMD_DIVERMODE_SINGLE) { if (cpu_status == 0)
*task_completed = 1; else
*task_completed = 0;
int cxd2880_tnrdmd_common_tune_setting1(struct cxd2880_tnrdmd *tnr_dmd, enum cxd2880_dtv_sys sys,
u32 frequency_khz, enum cxd2880_dtv_bandwidth
bandwidth, u8 one_seg_opt,
u8 one_seg_opt_shft_dir)
{
u8 data; enum cxd2880_tnrdmd_clockmode new_clk_mode =
CXD2880_TNRDMD_CLOCKMODE_A; int shift_frequency_khz;
u8 cpu_task_completed; int ret;
if (!tnr_dmd) return -EINVAL;
if (tnr_dmd->diver_mode == CXD2880_TNRDMD_DIVERMODE_SUB) return -EINVAL;
if (tnr_dmd->state != CXD2880_TNRDMD_STATE_SLEEP &&
tnr_dmd->state != CXD2880_TNRDMD_STATE_ACTIVE) return -EINVAL;
if (frequency_khz < 4000) return -EINVAL;
ret = cxd2880_tnrdmd_sleep(tnr_dmd); if (ret) return ret;
ret = tnr_dmd->io->write_reg(tnr_dmd->io,
CXD2880_IO_TGT_SYS, 0x00, 0x00); if (ret) return ret;
ret = tnr_dmd->io->read_regs(tnr_dmd->io,
CXD2880_IO_TGT_SYS, 0x2b,
&data, 1); if (ret) return ret;
switch (sys) { case CXD2880_DTV_SYS_DVBT: if (data == 0x00) {
ret = t_power_x(tnr_dmd, 1); if (ret) return ret;
if (tnr_dmd->diver_mode ==
CXD2880_TNRDMD_DIVERMODE_MAIN) {
ret = t_power_x(tnr_dmd->diver_sub, 1); if (ret) return ret;
}
} break;
case CXD2880_DTV_SYS_DVBT2: if (data == 0x01) {
ret = t_power_x(tnr_dmd, 0); if (ret) return ret;
if (tnr_dmd->diver_mode ==
CXD2880_TNRDMD_DIVERMODE_MAIN) {
ret = t_power_x(tnr_dmd->diver_sub, 0); if (ret) return ret;
}
} break;
default: return -EINVAL;
}
ret = spll_reset(tnr_dmd, new_clk_mode); if (ret) return ret;
tnr_dmd->clk_mode = new_clk_mode;
if (tnr_dmd->diver_mode == CXD2880_TNRDMD_DIVERMODE_MAIN) {
ret = spll_reset(tnr_dmd->diver_sub, new_clk_mode); if (ret) return ret;
tnr_dmd->diver_sub->clk_mode = new_clk_mode;
}
ret = load_cfg_mem(tnr_dmd); if (ret) return ret;
if (tnr_dmd->diver_mode == CXD2880_TNRDMD_DIVERMODE_MAIN) {
ret = load_cfg_mem(tnr_dmd->diver_sub); if (ret) return ret;
}
if (one_seg_opt) { if (tnr_dmd->diver_mode ==
CXD2880_TNRDMD_DIVERMODE_MAIN) {
shift_frequency_khz = 350;
} else { if (one_seg_opt_shft_dir)
shift_frequency_khz = 350; else
shift_frequency_khz = -350;
if (tnr_dmd->create_param.xtal_share_type ==
CXD2880_TNRDMD_XTAL_SHARE_SLAVE)
shift_frequency_khz *= -1;
}
} else { if (tnr_dmd->diver_mode ==
CXD2880_TNRDMD_DIVERMODE_MAIN) {
shift_frequency_khz = 150;
} else { switch (tnr_dmd->create_param.xtal_share_type) { case CXD2880_TNRDMD_XTAL_SHARE_NONE: case CXD2880_TNRDMD_XTAL_SHARE_EXTREF: default:
shift_frequency_khz = 0; break; case CXD2880_TNRDMD_XTAL_SHARE_MASTER:
shift_frequency_khz = 150; break; case CXD2880_TNRDMD_XTAL_SHARE_SLAVE:
shift_frequency_khz = -150; break;
}
}
}
ret =
x_tune1(tnr_dmd, sys, frequency_khz, bandwidth,
tnr_dmd->is_cable_input, shift_frequency_khz); if (ret) return ret;
if (tnr_dmd->diver_mode == CXD2880_TNRDMD_DIVERMODE_MAIN) {
ret =
x_tune1(tnr_dmd->diver_sub, sys, frequency_khz,
bandwidth, tnr_dmd->is_cable_input,
-shift_frequency_khz); if (ret) return ret;
}
usleep_range(10000, 11000);
ret =
cxd2880_tnrdmd_check_internal_cpu_status(tnr_dmd,
&cpu_task_completed); if (ret) return ret;
if (!cpu_task_completed) return -EINVAL;
ret =
x_tune2(tnr_dmd, bandwidth, tnr_dmd->clk_mode,
shift_frequency_khz); if (ret) return ret;
if (tnr_dmd->diver_mode == CXD2880_TNRDMD_DIVERMODE_MAIN) {
ret =
x_tune2(tnr_dmd->diver_sub, bandwidth,
tnr_dmd->diver_sub->clk_mode,
-shift_frequency_khz); if (ret) return ret;
}
if (tnr_dmd->create_param.ts_output_if == CXD2880_TNRDMD_TSOUT_IF_TS) {
ret = set_ts_clk_mode_and_freq(tnr_dmd, sys);
} else { struct cxd2880_tnrdmd_pid_ftr_cfg *pid_ftr_cfg;
if (tnr_dmd->pid_ftr_cfg_en)
pid_ftr_cfg = &tnr_dmd->pid_ftr_cfg; else
pid_ftr_cfg = NULL;
ret = pid_ftr_setting(tnr_dmd, pid_ftr_cfg);
}
return ret;
}
int cxd2880_tnrdmd_common_tune_setting2(struct cxd2880_tnrdmd
*tnr_dmd, enum cxd2880_dtv_sys sys,
u8 en_fef_intmtnt_ctrl)
{ int ret;
if (!tnr_dmd) return -EINVAL;
if (tnr_dmd->diver_mode == CXD2880_TNRDMD_DIVERMODE_SUB) return -EINVAL;
if (tnr_dmd->state != CXD2880_TNRDMD_STATE_SLEEP &&
tnr_dmd->state != CXD2880_TNRDMD_STATE_ACTIVE) return -EINVAL;
ret = x_tune3(tnr_dmd, sys, en_fef_intmtnt_ctrl); if (ret) return ret;
if (tnr_dmd->diver_mode == CXD2880_TNRDMD_DIVERMODE_MAIN) {
ret = x_tune3(tnr_dmd->diver_sub, sys, en_fef_intmtnt_ctrl); if (ret) return ret;
ret = x_tune4(tnr_dmd); if (ret) return ret;
}
ret =
cxd2880_tnrdmd_set_and_save_reg_bits(tnr_dmd,
CXD2880_IO_TGT_DMD, 0x00, 0x23,
data[0], 0x1f); if (ret) return ret;
ret =
cxd2880_tnrdmd_set_and_save_reg_bits(tnr_dmd,
CXD2880_IO_TGT_DMD, 0x00, 0x24,
data[1], 0xff); if (ret) return ret;
break;
case CXD2880_TNRDMD_CFG_INTERRUPT:
data[0] = (value >> 8) & 0xff;
data[1] = value & 0xff;
ret =
cxd2880_tnrdmd_set_and_save_reg_bits(tnr_dmd,
CXD2880_IO_TGT_SYS, 0x00, 0x48, data[0], 0xff); if (ret) return ret;
ret =
cxd2880_tnrdmd_set_and_save_reg_bits(tnr_dmd,
CXD2880_IO_TGT_SYS, 0x00, 0x49, data[1], 0xff); if (ret) return ret; break;
case CXD2880_TNRDMD_CFG_INTERRUPT_LOCK_SEL:
data[0] = value & 0x07;
ret =
cxd2880_tnrdmd_set_and_save_reg_bits(tnr_dmd,
CXD2880_IO_TGT_SYS, 0x00, 0x4a, data[0], 0x07); if (ret) return ret; break;
case CXD2880_TNRDMD_CFG_INTERRUPT_INV_LOCK_SEL:
data[0] = (value & 0x07) << 3;
ret =
cxd2880_tnrdmd_set_and_save_reg_bits(tnr_dmd,
CXD2880_IO_TGT_SYS, 0x00, 0x4a, data[0], 0x38); if (ret) return ret; break;
case CXD2880_TNRDMD_CFG_FIXED_CLOCKMODE: if (value < CXD2880_TNRDMD_CLOCKMODE_UNKNOWN ||
value > CXD2880_TNRDMD_CLOCKMODE_C) return -EINVAL;
tnr_dmd->fixed_clk_mode = (enum cxd2880_tnrdmd_clockmode)value; break;
case CXD2880_TNRDMD_CFG_CABLE_INPUT:
tnr_dmd->is_cable_input = value ? 1 : 0; break;
case CXD2880_TNRDMD_CFG_DVBT2_FEF_INTERMITTENT_BASE:
tnr_dmd->en_fef_intmtnt_base = value ? 1 : 0; break;
case CXD2880_TNRDMD_CFG_DVBT2_FEF_INTERMITTENT_LITE:
tnr_dmd->en_fef_intmtnt_lite = value ? 1 : 0; break;
case CXD2880_TNRDMD_CFG_TS_BUF_ALMOST_EMPTY_THRS:
data[0] = (value >> 8) & 0x07;
data[1] = value & 0xff;
ret =
cxd2880_tnrdmd_set_and_save_reg_bits(tnr_dmd,
CXD2880_IO_TGT_DMD, 0x00, 0x99, data[0], 0x07); if (ret) return ret;
ret =
cxd2880_tnrdmd_set_and_save_reg_bits(tnr_dmd,
CXD2880_IO_TGT_DMD, 0x00, 0x9a, data[1], 0xff); if (ret) return ret; break;
case CXD2880_TNRDMD_CFG_TS_BUF_ALMOST_FULL_THRS:
data[0] = (value >> 8) & 0x07;
data[1] = value & 0xff;
ret =
cxd2880_tnrdmd_set_and_save_reg_bits(tnr_dmd,
CXD2880_IO_TGT_DMD, 0x00, 0x9b, data[0], 0x07); if (ret) return ret;
ret =
cxd2880_tnrdmd_set_and_save_reg_bits(tnr_dmd,
CXD2880_IO_TGT_DMD, 0x00, 0x9c, data[1], 0xff); if (ret) return ret; break;
case CXD2880_TNRDMD_CFG_TS_BUF_RRDY_THRS:
data[0] = (value >> 8) & 0x07;
data[1] = value & 0xff;
ret =
cxd2880_tnrdmd_set_and_save_reg_bits(tnr_dmd,
CXD2880_IO_TGT_DMD, 0x00, 0x9d, data[0], 0x07); if (ret) return ret;
ret =
cxd2880_tnrdmd_set_and_save_reg_bits(tnr_dmd,
CXD2880_IO_TGT_DMD, 0x00, 0x9e, data[1], 0xff); if (ret) return ret; break;
case CXD2880_TNRDMD_CFG_BLINDTUNE_DVBT2_FIRST:
tnr_dmd->blind_tune_dvbt2_first = value ? 1 : 0; break;
case CXD2880_TNRDMD_CFG_DVBT_BERN_PERIOD: if (value < 0 || value > 31) return -EINVAL;
ret =
cxd2880_tnrdmd_set_and_save_reg_bits(tnr_dmd,
CXD2880_IO_TGT_DMD, 0x10, 0x60,
value & 0x1f, 0x1f); if (ret) return ret; break;
case CXD2880_TNRDMD_CFG_DVBT_VBER_PERIOD: if (value < 0 || value > 7) return -EINVAL;
ret =
cxd2880_tnrdmd_set_and_save_reg_bits(tnr_dmd,
CXD2880_IO_TGT_DMD, 0x10, 0x6f,
value & 0x07, 0x07); if (ret) return ret; break;
case CXD2880_TNRDMD_CFG_DVBT2_BBER_MES: if (value < 0 || value > 15) return -EINVAL;
ret =
cxd2880_tnrdmd_set_and_save_reg_bits(tnr_dmd,
CXD2880_IO_TGT_DMD, 0x20, 0x72,
value & 0x0f, 0x0f); if (ret) return ret; break;
case CXD2880_TNRDMD_CFG_DVBT2_LBER_MES: if (value < 0 || value > 15) return -EINVAL;
ret =
cxd2880_tnrdmd_set_and_save_reg_bits(tnr_dmd,
CXD2880_IO_TGT_DMD, 0x20, 0x6f,
value & 0x0f, 0x0f); if (ret) return ret; break;
case CXD2880_TNRDMD_CFG_DVBT_PER_MES: if (value < 0 || value > 15) return -EINVAL;
ret =
cxd2880_tnrdmd_set_and_save_reg_bits(tnr_dmd,
CXD2880_IO_TGT_DMD, 0x10, 0x5c,
value & 0x0f, 0x0f); if (ret) return ret; break;
case CXD2880_TNRDMD_CFG_DVBT2_PER_MES: if (value < 0 || value > 15) return -EINVAL;
ret =
cxd2880_tnrdmd_set_and_save_reg_bits(tnr_dmd,
CXD2880_IO_TGT_DMD, 0x24, 0xdc,
value & 0x0f, 0x0f); if (ret) return ret; break;
default: return -EINVAL;
}
if (need_sub_setting &&
tnr_dmd->diver_mode == CXD2880_TNRDMD_DIVERMODE_MAIN)
ret = cxd2880_tnrdmd_set_cfg(tnr_dmd->diver_sub, id, value);
return ret;
}
int cxd2880_tnrdmd_gpio_set_cfg(struct cxd2880_tnrdmd *tnr_dmd,
u8 id,
u8 en, enum cxd2880_tnrdmd_gpio_mode mode,
u8 open_drain, u8 invert)
{ int ret;
if (!tnr_dmd) return -EINVAL;
if (id > 2) return -EINVAL;
if (mode > CXD2880_TNRDMD_GPIO_MODE_EEW) return -EINVAL;
if (tnr_dmd->state != CXD2880_TNRDMD_STATE_SLEEP &&
tnr_dmd->state != CXD2880_TNRDMD_STATE_ACTIVE) return -EINVAL;
ret =
cxd2880_tnrdmd_set_and_save_reg_bits(tnr_dmd, CXD2880_IO_TGT_SYS, 0x00, 0x40 + id, mode, 0x0f); if (ret) return ret;
ret =
cxd2880_tnrdmd_set_and_save_reg_bits(tnr_dmd, CXD2880_IO_TGT_SYS, 0x00, 0x43,
open_drain ? (1 << id) : 0, 1 << id); if (ret) return ret;
ret =
cxd2880_tnrdmd_set_and_save_reg_bits(tnr_dmd, CXD2880_IO_TGT_SYS, 0x00, 0x44,
invert ? (1 << id) : 0, 1 << id); if (ret) return ret;
if (tnr_dmd->state == CXD2880_TNRDMD_STATE_ACTIVE) return pid_ftr_setting(tnr_dmd, pid_ftr_cfg); else return0;
}
int cxd2880_tnrdmd_set_rf_lvl_cmpstn(struct cxd2880_tnrdmd
*tnr_dmd, int (*rf_lvl_cmpstn)
(struct cxd2880_tnrdmd *, int *))
{ if (!tnr_dmd) return -EINVAL;
tnr_dmd->rf_lvl_cmpstn = rf_lvl_cmpstn;
return0;
}
int cxd2880_tnrdmd_set_rf_lvl_cmpstn_sub(struct cxd2880_tnrdmd
*tnr_dmd, int (*rf_lvl_cmpstn)
(struct cxd2880_tnrdmd *, int *))
{ if (!tnr_dmd) return -EINVAL;
if (tnr_dmd->diver_mode != CXD2880_TNRDMD_DIVERMODE_MAIN) return -EINVAL;
int cxd2880_tnrdmd_set_ts_pin_high_low(struct cxd2880_tnrdmd
*tnr_dmd, u8 en, u8 value)
{ int ret;
if (!tnr_dmd) return -EINVAL;
if (tnr_dmd->diver_mode == CXD2880_TNRDMD_DIVERMODE_SUB) return -EINVAL;
if (tnr_dmd->state != CXD2880_TNRDMD_STATE_SLEEP) return -EINVAL;
if (tnr_dmd->create_param.ts_output_if != CXD2880_TNRDMD_TSOUT_IF_TS) return -ENOTTY;
ret = tnr_dmd->io->write_reg(tnr_dmd->io,
CXD2880_IO_TGT_SYS, 0x00, 0x00); if (ret) return ret;
if (en) {
ret = tnr_dmd->io->write_reg(tnr_dmd->io,
CXD2880_IO_TGT_SYS, 0x50, ((value & 0x1f) | 0x80)); if (ret) return ret;
ret = tnr_dmd->io->write_reg(tnr_dmd->io,
CXD2880_IO_TGT_SYS, 0x52, (value & 0x1f));
} else {
ret = cxd2880_io_write_multi_regs(tnr_dmd->io,
CXD2880_IO_TGT_SYS,
set_ts_pin_seq,
ARRAY_SIZE(set_ts_pin_seq)); if (ret) return ret;
ret = load_cfg_mem(tnr_dmd);
}
return ret;
}
int cxd2880_tnrdmd_set_ts_output(struct cxd2880_tnrdmd *tnr_dmd,
u8 en)
{ int ret;
if (!tnr_dmd) return -EINVAL;
if (tnr_dmd->diver_mode == CXD2880_TNRDMD_DIVERMODE_SUB) return -EINVAL;
if (tnr_dmd->state != CXD2880_TNRDMD_STATE_SLEEP &&
tnr_dmd->state != CXD2880_TNRDMD_STATE_ACTIVE) return -EINVAL;
switch (tnr_dmd->create_param.ts_output_if) { case CXD2880_TNRDMD_TSOUT_IF_TS: if (en) {
ret = cxd2880_io_write_multi_regs(tnr_dmd->io,
CXD2880_IO_TGT_SYS,
set_ts_output_seq1,
ARRAY_SIZE(set_ts_output_seq1)); if (ret) return ret;
ret = cxd2880_io_write_multi_regs(tnr_dmd->io,
CXD2880_IO_TGT_DMD,
set_ts_output_seq2,
ARRAY_SIZE(set_ts_output_seq2)); if (ret) return ret;
} else {
ret = cxd2880_io_write_multi_regs(tnr_dmd->io,
CXD2880_IO_TGT_DMD,
set_ts_output_seq3,
ARRAY_SIZE(set_ts_output_seq3)); if (ret) return ret;
ret = cxd2880_io_write_multi_regs(tnr_dmd->io,
CXD2880_IO_TGT_SYS,
set_ts_output_seq4,
ARRAY_SIZE(set_ts_output_seq4)); if (ret) return ret;
} break;
case CXD2880_TNRDMD_TSOUT_IF_SPI: break;
case CXD2880_TNRDMD_TSOUT_IF_SDIO: break;
default: return -EINVAL;
}
return0;
}
int slvt_freeze_reg(struct cxd2880_tnrdmd *tnr_dmd)
{
u8 data; int ret;
if (!tnr_dmd) return -EINVAL;
switch (tnr_dmd->create_param.ts_output_if) { case CXD2880_TNRDMD_TSOUT_IF_SPI: case CXD2880_TNRDMD_TSOUT_IF_SDIO:
ret = tnr_dmd->io->read_regs(tnr_dmd->io,
CXD2880_IO_TGT_DMD, 0x00, &data, 1); if (ret) return ret;
break; case CXD2880_TNRDMD_TSOUT_IF_TS: default: break;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.