int get_rtl2832_ioctrl_8bit_demodbytes( struct dvb_frontend *fe, unsigned char page, unsigned char reg_addr, unsigned char* data, unsigned short bytelength) { int ret = -1; int i=0; struct rtl2832_state* p_state = fe->demodulator_priv; unsigned char data_temp[128]; DVBT_NIM_MODULE *pNim; DVBT_DEMOD_MODULE *pDemod; deb_info("+%s: page= %d reg_addr=0x%x bytelength=%d \n", __FUNCTION__,page, reg_addr,bytelength); if (bytelength > 128 ) { deb_info("ERROR::bytelength > 128\n"); return -1; } if (p_state->demod_type != RTL2832) { deb_info("ERROR::demod type not rtl2832u...\n"); return -1; } pNim = p_state->pNim; if (pNim == NULL) { return -1; } if( mutex_lock_interruptible(&p_state->i2c_repeater_mutex) ) { return -1; } pDemod=pNim->pDemod; if(pDemod->SetRegPage(pDemod, page) != FUNCTION_SUCCESS) { ret=-1; goto error; } if(pDemod->GetRegBytes(pDemod, reg_addr, data_temp, bytelength) != FUNCTION_SUCCESS) { ret=-1; goto error; } deb_info("->%s: data[%d,%x]= \n", __FUNCTION__,page, reg_addr); for (i=0; i<bytelength; i++) { data[i]=data_temp[i]; deb_info("%x(%x),",data[i],data_temp[i]); } deb_info("\n"); ret=0; error: mutex_unlock(&p_state->i2c_repeater_mutex); deb_info("-%s: page=%d reg_addr=0x%x bytelength=%d \n", __FUNCTION__,page, reg_addr,bytelength); return ret; }