diff options
-rw-r--r-- | drivers/media/dvb/bt8xx/dst.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/drivers/media/dvb/bt8xx/dst.c b/drivers/media/dvb/bt8xx/dst.c index 755d800c0802..0e35406557e3 100644 --- a/drivers/media/dvb/bt8xx/dst.c +++ b/drivers/media/dvb/bt8xx/dst.c | |||
@@ -363,6 +363,17 @@ static int dst_set_freq(struct dst_state *state, u32 freq) | |||
363 | state->tx_tuna[2] = (freq >> 16) & 0xff; | 363 | state->tx_tuna[2] = (freq >> 16) & 0xff; |
364 | state->tx_tuna[3] = (freq >> 8) & 0xff; | 364 | state->tx_tuna[3] = (freq >> 8) & 0xff; |
365 | state->tx_tuna[4] = (u8) freq; | 365 | state->tx_tuna[4] = (u8) freq; |
366 | } else if (state->dst_type == DST_TYPE_IS_ATSC) { | ||
367 | freq = freq / 1000; | ||
368 | if (freq < 51000 || freq > 858000) | ||
369 | return -EINVAL; | ||
370 | state->tx_tuna[2] = (freq >> 16) & 0xff; | ||
371 | state->tx_tuna[3] = (freq >> 8) & 0xff; | ||
372 | state->tx_tuna[4] = (u8) freq; | ||
373 | state->tx_tuna[5] = 0x00; /* ATSC */ | ||
374 | state->tx_tuna[6] = 0x00; | ||
375 | if (state->dst_hw_cap & DST_TYPE_HAS_ANALOG) | ||
376 | state->tx_tuna[7] = 0x00; /* Digital */ | ||
366 | } else | 377 | } else |
367 | return -EINVAL; | 378 | return -EINVAL; |
368 | 379 | ||
@@ -726,8 +737,8 @@ static struct dst_types dst_tlist[] = { | |||
726 | .device_id = "ATSCAD", | 737 | .device_id = "ATSCAD", |
727 | .offset = 1, | 738 | .offset = 1, |
728 | .dst_type = DST_TYPE_IS_ATSC, | 739 | .dst_type = DST_TYPE_IS_ATSC, |
729 | .type_flags = DST_TYPE_HAS_FW_2, | 740 | .type_flags = DST_TYPE_HAS_NEWTUNE | DST_TYPE_HAS_FW_2 | DST_TYPE_HAS_FW_BUILD, |
730 | .dst_feature = 0 | 741 | .dst_feature = DST_TYPE_HAS_MAC | DST_TYPE_HAS_ANALOG |
731 | }, | 742 | }, |
732 | 743 | ||
733 | { } | 744 | { } |
@@ -1052,6 +1063,10 @@ static int dst_get_signal(struct dst_state *state) | |||
1052 | state->decode_lock = (state->rxbuffer[1]) ? 1 : 0; | 1063 | state->decode_lock = (state->rxbuffer[1]) ? 1 : 0; |
1053 | state->decode_strength = state->rxbuffer[4] << 8; | 1064 | state->decode_strength = state->rxbuffer[4] << 8; |
1054 | state->decode_snr = state->rxbuffer[3] << 8; | 1065 | state->decode_snr = state->rxbuffer[3] << 8; |
1066 | } else if (state->dst_type == DST_TYPE_IS_ATSC) { | ||
1067 | state->decode_lock = (state->rxbuffer[6] == 0x00) ? 1 : 0; | ||
1068 | state->decode_strength = state->rxbuffer[4] << 8; | ||
1069 | state->decode_snr = state->rxbuffer[2] << 8 | state->rxbuffer[3]; | ||
1055 | } | 1070 | } |
1056 | state->cur_jiff = jiffies; | 1071 | state->cur_jiff = jiffies; |
1057 | } | 1072 | } |