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,8 +2458,15 @@ static int dvb_frontend_handle_ioctl(struct file *file,
|
|||||||
dev_dbg(fe->dvb->device, "%s:\n", __func__);
|
dev_dbg(fe->dvb->device, "%s:\n", __func__);
|
||||||
|
|
||||||
switch (cmd) {
|
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:
|
case FE_READ_TEMP:
|
||||||
if (fe->ops.read_temp) {
|
if (fe->ops.read_temp) {
|
||||||
err = fe->ops.read_temp(fe, parg);
|
err = fe->ops.read_temp(fe, parg);
|
||||||
}
|
}
|
||||||
|
@@ -991,7 +991,6 @@ static int stid135_read_temp(struct dvb_frontend *fe, s16 *temp)
|
|||||||
|
|
||||||
mutex_lock(&state->base->status_lock);
|
mutex_lock(&state->base->status_lock);
|
||||||
err = fe_stid135_get_soc_temperature(state->base->handle, temp);
|
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);
|
mutex_unlock(&state->base->status_lock);
|
||||||
|
|
||||||
if (err != FE_LLA_NO_ERROR)
|
if (err != FE_LLA_NO_ERROR)
|
||||||
@@ -1000,6 +999,20 @@ static int stid135_read_temp(struct dvb_frontend *fe, s16 *temp)
|
|||||||
return 0;
|
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 = {
|
static struct dvb_frontend_ops stid135_ops = {
|
||||||
.delsys = { SYS_DVBS, SYS_DVBS2, SYS_DSS },
|
.delsys = { SYS_DVBS, SYS_DVBS2, SYS_DSS },
|
||||||
@@ -1038,6 +1051,7 @@ static struct dvb_frontend_ops stid135_ops = {
|
|||||||
.eeprom_read = eeprom_read,
|
.eeprom_read = eeprom_read,
|
||||||
.eeprom_write = eeprom_write,
|
.eeprom_write = eeprom_write,
|
||||||
.read_temp = stid135_read_temp,
|
.read_temp = stid135_read_temp,
|
||||||
|
.reg_read = stid135_reg_read,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct stv_base *match_base(struct i2c_adapter *i2c, u8 adr)
|
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;
|
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;
|
struct fe_stid135_internal_param *pParams;
|
||||||
u32 reg_val;
|
|
||||||
pParams = (struct fe_stid135_internal_param *) handle;
|
pParams = (struct fe_stid135_internal_param *) handle;
|
||||||
|
|
||||||
printk("-----------------------------------------------------\n");
|
return ChipGetOneRegister(pParams->handle_demod, reg_addr, pdata);
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
@@ -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_get_gain(STCHIP_Handle_t hChip,S32 *Gain);
|
||||||
STCHIP_Error_t stvvglna_term(STCHIP_Handle_t hChip);
|
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 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);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -513,8 +513,10 @@ struct dvb_frontend_ops {
|
|||||||
|
|
||||||
void(*eeprom_read)( struct dvb_frontend *fe,struct eeprom_info *peepinf);
|
void(*eeprom_read)( struct dvb_frontend *fe,struct eeprom_info *peepinf);
|
||||||
void(*eeprom_write)( 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__
|
#ifdef __DVB_CORE__
|
||||||
|
@@ -1099,6 +1099,12 @@ struct eeprom_info
|
|||||||
__u8 data;
|
__u8 data;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct reg_info
|
||||||
|
{
|
||||||
|
__u16 reg;
|
||||||
|
__u32 data;
|
||||||
|
};
|
||||||
|
|
||||||
#define FE_ECP3FW_READ _IOR('o', 90, struct ecp3_info)
|
#define FE_ECP3FW_READ _IOR('o', 90, struct ecp3_info)
|
||||||
#define FE_ECP3FW_WRITE _IOW('o', 91, struct ecp3_info)
|
#define FE_ECP3FW_WRITE _IOW('o', 91, struct ecp3_info)
|
||||||
|
|
||||||
@@ -1111,6 +1117,7 @@ struct eeprom_info
|
|||||||
#define FE_EEPROM_READ _IOR('o', 96, struct eeprom_info)
|
#define FE_EEPROM_READ _IOR('o', 96, struct eeprom_info)
|
||||||
#define FE_EEPROM_WRITE _IOW('o', 97, struct eeprom_info)
|
#define FE_EEPROM_WRITE _IOW('o', 97, struct eeprom_info)
|
||||||
|
|
||||||
#define FE_READ_TEMP _IOR('o', 98, __s16)
|
#define FE_READ_TEMP _IOR('o', 98, __s16)
|
||||||
|
#define FE_REG_READ _IOR('o', 99, struct reg_info)
|
||||||
|
|
||||||
#endif /* _DVBFRONTEND_H_ */
|
#endif /* _DVBFRONTEND_H_ */
|
||||||
|
Reference in New Issue
Block a user