aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiunn Chang <c0d1n61at3@gmail.com>2019-09-30 22:18:21 -0500
committerHans Verkuil <hverkuil-cisco@xs4all.nl>2019-10-01 08:54:50 +0200
commit9bc2ad62d9b3b21be2aa58dbe8a3db34439228f4 (patch)
tree2bc47a09b10f380f723988f6d587bc1f477ec1b0
parent6c9c63d98d60a4478d0e2a2f45fe0e54793f5582 (diff)
cec-follower: fix bugs for tuner emulation
Fix bugs for tuner emulation: - analog_tuner_init() needs to store ana_freq as multiples of 62.5 kHz - analog_set_tuner_dev_info() needs to check the broadcast type and broadcast system are valid before getting the nearest frequency Signed-off-by: Jiunn Chang <c0d1n61at3@gmail.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
-rw-r--r--utils/cec-follower/cec-tuner.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/utils/cec-follower/cec-tuner.cpp b/utils/cec-follower/cec-tuner.cpp
index acc3fd00..d74981b2 100644
--- a/utils/cec-follower/cec-tuner.cpp
+++ b/utils/cec-follower/cec-tuner.cpp
@@ -92,13 +92,15 @@ static unsigned int analog_freqs_khz[3][9][NUM_ANALOG_FREQS] =
void analog_tuner_init(struct cec_op_tuner_device_info *info)
{
+ unsigned int freq_khz;
+
info->rec_flag = CEC_OP_REC_FLAG_NOT_USED;
info->tuner_display_info = CEC_OP_TUNER_DISPLAY_INFO_ANALOGUE;
info->is_analog = true;
info->analog.ana_bcast_type = CEC_OP_ANA_BCAST_TYPE_CABLE;
info->analog.bcast_system = CEC_OP_BCAST_SYSTEM_PAL_BG;
- info->analog.ana_freq =
- analog_freqs_khz[info->analog.ana_bcast_type][info->analog.bcast_system][0];
+ freq_khz = analog_freqs_khz[info->analog.ana_bcast_type][info->analog.bcast_system][0];
+ info->analog.ana_freq = (freq_khz * 10) / 625;
}
static unsigned int analog_get_nearest_freq(__u8 ana_bcast_type, __u8 ana_bcast_system,
@@ -123,7 +125,7 @@ static bool analog_set_tuner_dev_info(struct node *node, struct cec_msg *msg)
__u8 system;
cec_ops_select_analogue_service(msg, &type, &freq, &system);
- if (info->analog.ana_bcast_type < 3 && info->analog.bcast_system < 9) {
+ if (type < 3 && system < 9) {
int freq_khz = (freq * 625) / 10;
unsigned int nearest = analog_get_nearest_freq(type, system,
freq_khz);

Privacy Policy