mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 12:43:29 +02:00
media: dvb-frontends/stid135: Implemented frontend IOCTL for femod register reading.
This commit is contained in:
@@ -2458,6 +2458,13 @@ static int dvb_frontend_handle_ioctl(struct file *file,
|
||||
dev_dbg(fe->dvb->device, "%s:\n", __func__);
|
||||
|
||||
switch (cmd) {
|
||||
case FE_REG_READ:
|
||||
if (fe->ops.reg_read) {
|
||||
struct reg_info *info = parg;
|
||||
err = fe->ops.reg_read(fe, info);
|
||||
}
|
||||
err = 0;
|
||||
break;
|
||||
|
||||
case FE_READ_TEMP:
|
||||
if (fe->ops.read_temp) {
|
||||
|
@@ -991,7 +991,6 @@ static int stid135_read_temp(struct dvb_frontend *fe, s16 *temp)
|
||||
|
||||
mutex_lock(&state->base->status_lock);
|
||||
err = fe_stid135_get_soc_temperature(state->base->handle, temp);
|
||||
fe_stid135_dump_regs(state->base->handle, state->rf_in + 1);
|
||||
mutex_unlock(&state->base->status_lock);
|
||||
|
||||
if (err != FE_LLA_NO_ERROR)
|
||||
@@ -1000,6 +999,20 @@ static int stid135_read_temp(struct dvb_frontend *fe, s16 *temp)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int stid135_reg_read(struct dvb_frontend *fe, struct reg_info *preg_info)
|
||||
{
|
||||
struct stv *state = fe->demodulator_priv;
|
||||
fe_lla_error_t err = FE_LLA_NO_ERROR;
|
||||
|
||||
mutex_lock(&state->base->status_lock);
|
||||
err = fe_stid135_reg_read(state->base->handle, preg_info->reg, &preg_info->data);
|
||||
mutex_unlock(&state->base->status_lock);
|
||||
|
||||
if (err != FE_LLA_NO_ERROR)
|
||||
dev_warn(&state->base->i2c->dev, "%s: fe_stid135_reg_read error %d !\n", __func__, err);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct dvb_frontend_ops stid135_ops = {
|
||||
.delsys = { SYS_DVBS, SYS_DVBS2, SYS_DSS },
|
||||
@@ -1038,6 +1051,7 @@ static struct dvb_frontend_ops stid135_ops = {
|
||||
.eeprom_read = eeprom_read,
|
||||
.eeprom_write = eeprom_write,
|
||||
.read_temp = stid135_read_temp,
|
||||
.reg_read = stid135_reg_read,
|
||||
};
|
||||
|
||||
static struct stv_base *match_base(struct i2c_adapter *i2c, u8 adr)
|
||||
|
@@ -11532,49 +11532,10 @@ fe_lla_error_t get_current_llr(fe_stid135_handle_t handle,enum fe_stid135_demod
|
||||
return FE_LLA_NO_ERROR;
|
||||
}
|
||||
|
||||
fe_lla_error_t fe_stid135_dump_regs(fe_stid135_handle_t handle, enum fe_stid135_demod demod_path)
|
||||
fe_lla_error_t fe_stid135_reg_read(fe_stid135_handle_t handle, u16 reg_addr, u32* pdata)
|
||||
{
|
||||
struct fe_stid135_internal_param *pParams;
|
||||
u32 reg_val;
|
||||
pParams = (struct fe_stid135_internal_param *) handle;
|
||||
|
||||
printk("-----------------------------------------------------\n");
|
||||
ChipGetOneRegister(pParams->handle_demod, (u16)REG_RC8CODEW_DVBSX_HWARE_TSSTATUS(demod_path), ®_val);
|
||||
printk("TSSTATUS = 0x%02X\n",reg_val);
|
||||
ChipGetOneRegister(pParams->handle_demod, (u16)REG_RC8CODEW_DVBSX_HWARE_TSSTATUS2(demod_path), ®_val);
|
||||
printk("TSSTATUS2 = 0x%02X\n",reg_val);
|
||||
ChipGetOneRegister(pParams->handle_demod, (u16)REG_RC8CODEW_DVBSX_PKTDELIN_PDELSTATUS1(demod_path), ®_val);
|
||||
printk("PDELSTATUS1 = 0x%02X\n",reg_val);
|
||||
ChipGetOneRegister(pParams->handle_demod, (u16)REG_RC8CODEW_DVBSX_PKTDELIN_BBFCRCKO1(demod_path), ®_val);
|
||||
printk("BBFCRCKO1 = 0x%02X\n",reg_val);
|
||||
ChipGetOneRegister(pParams->handle_demod, (u16)REG_RC8CODEW_DVBSX_PKTDELIN_BBFCRCKO0(demod_path), ®_val);
|
||||
printk("BBFCRCKO0 = 0x%02X\n",reg_val);
|
||||
|
||||
ChipSetOneRegister(pParams->handle_demod, (u16)REG_RC8CODEW_DVBSX_HWARE_TSSTATUS(demod_path), 0);
|
||||
ChipSetOneRegister(pParams->handle_demod, (u16)REG_RC8CODEW_DVBSX_HWARE_TSSTATUS2(demod_path), 0);
|
||||
ChipSetOneRegister(pParams->handle_demod, (u16)REG_RC8CODEW_DVBSX_PKTDELIN_PDELSTATUS1(demod_path), 0);
|
||||
ChipSetOneRegister(pParams->handle_demod, (u16)REG_RC8CODEW_DVBSX_PKTDELIN_BBFCRCKO1(demod_path), 0);
|
||||
ChipSetOneRegister(pParams->handle_demod, (u16)REG_RC8CODEW_DVBSX_PKTDELIN_BBFCRCKO0(demod_path), 0);
|
||||
|
||||
ChipGetOneRegister(pParams->handle_demod, (u16)REG_RC8CODEW_DVBSX_HWARE_TSCFG2(demod_path), ®_val);
|
||||
printk("TSCFG2 = 0x%02X\n",reg_val);
|
||||
ChipGetOneRegister(pParams->handle_demod, (u16)REG_RC8CODEW_DVBSX_HWARE_TSCFG1(demod_path), ®_val);
|
||||
printk("TSCFG1 = 0x%02X\n",reg_val);
|
||||
ChipGetOneRegister(pParams->handle_demod, (u16)REG_RC8CODEW_DVBSX_HWARE_TSCFG0(demod_path), ®_val);
|
||||
printk("TSCFG0 = 0x%02X\n",reg_val);
|
||||
|
||||
ChipGetOneRegister(pParams->handle_demod, (u16)REG_RC8CODEW_DVBSX_HWARE_TSSTATE1(demod_path), ®_val);
|
||||
printk("TSSTATE1 = 0x%02X\n",reg_val);
|
||||
ChipGetOneRegister(pParams->handle_demod, (u16)REG_RC8CODEW_DVBSX_HWARE_TSSTATE0(demod_path), ®_val);
|
||||
printk("TSSTATE0 = 0x%02X\n",reg_val);
|
||||
|
||||
ChipGetOneRegister(pParams->handle_demod, (u16)REG_RC8CODEW_DVBSX_HWARE_TSSPEED(demod_path), ®_val);
|
||||
printk("TSSPEED = 0x%02X\n",reg_val);
|
||||
|
||||
ChipGetOneRegister(pParams->handle_demod, (u16)REG_RC8CODEW_DVBSX_HWARE_TSBITRATE1(demod_path), ®_val);
|
||||
printk("TSBITRATE1 = 0x%02X\n",reg_val);
|
||||
ChipGetOneRegister(pParams->handle_demod, (u16)REG_RC8CODEW_DVBSX_HWARE_TSBITRATE0(demod_path), ®_val);
|
||||
printk("TSBITRATE0 = 0x%02X\n",reg_val);
|
||||
|
||||
return FE_LLA_NO_ERROR;
|
||||
return ChipGetOneRegister(pParams->handle_demod, reg_addr, pdata);
|
||||
}
|
||||
|
@@ -681,7 +681,7 @@ STCHIP_Error_t stvvglna_get_status(STCHIP_Handle_t hChip, U8 *Status);
|
||||
STCHIP_Error_t stvvglna_get_gain(STCHIP_Handle_t hChip,S32 *Gain);
|
||||
STCHIP_Error_t stvvglna_term(STCHIP_Handle_t hChip);
|
||||
fe_lla_error_t get_current_llr(fe_stid135_handle_t handle,enum fe_stid135_demod demod_path,s32 *current_llr);
|
||||
fe_lla_error_t fe_stid135_dump_regs(fe_stid135_handle_t handle, enum fe_stid135_demod demod_path);
|
||||
fe_lla_error_t fe_stid135_reg_read(fe_stid135_handle_t handle, u16 reg_addr, u32* pdata);
|
||||
|
||||
|
||||
|
||||
|
@@ -514,7 +514,9 @@ struct dvb_frontend_ops {
|
||||
void(*eeprom_read)( struct dvb_frontend *fe,struct eeprom_info *peepinf);
|
||||
void(*eeprom_write)( struct dvb_frontend *fe,struct eeprom_info *peepinf);
|
||||
|
||||
int (*read_temp)(struct dvb_frontend* fe, s16* temp);
|
||||
int(*read_temp)(struct dvb_frontend* fe, s16* temp);
|
||||
|
||||
int(*reg_read)( struct dvb_frontend *fe,struct reg_info *preg_info);
|
||||
};
|
||||
|
||||
#ifdef __DVB_CORE__
|
||||
|
@@ -1099,6 +1099,12 @@ struct eeprom_info
|
||||
__u8 data;
|
||||
};
|
||||
|
||||
struct reg_info
|
||||
{
|
||||
__u16 reg;
|
||||
__u32 data;
|
||||
};
|
||||
|
||||
#define FE_ECP3FW_READ _IOR('o', 90, struct ecp3_info)
|
||||
#define FE_ECP3FW_WRITE _IOW('o', 91, struct ecp3_info)
|
||||
|
||||
@@ -1112,5 +1118,6 @@ struct eeprom_info
|
||||
#define FE_EEPROM_WRITE _IOW('o', 97, struct eeprom_info)
|
||||
|
||||
#define FE_READ_TEMP _IOR('o', 98, __s16)
|
||||
#define FE_REG_READ _IOR('o', 99, struct reg_info)
|
||||
|
||||
#endif /* _DVBFRONTEND_H_ */
|
||||
|
Reference in New Issue
Block a user