diff options
author | Mauro Carvalho Chehab <mchehab@redhat.com> | 2013-03-09 10:05:58 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2013-03-21 06:46:56 -0400 |
commit | eab0fa0f04317c7bb50f87d6b410d8ad6e2c2888 (patch) | |
tree | 84101cca94de0605b5c0eed9ab1bea73854507dc | |
parent | 80ccb51a0f970ab0935a8be70b677ecbcdf74e3e (diff) |
[media] siano: split get_frontend into per-std functions
Instead of handling both DVB-T and ISDB-T at the same get_frontend
function, break it intow one function per-delivery system.
That makes the code clearer as we start to add support for DVBv5
statistics, and for ISDB-T get frontend stuff.
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r-- | drivers/media/common/siano/smsdvb.c | 229 |
1 files changed, 124 insertions, 105 deletions
diff --git a/drivers/media/common/siano/smsdvb.c b/drivers/media/common/siano/smsdvb.c index 6335574e9342..1d6b8dfa0808 100644 --- a/drivers/media/common/siano/smsdvb.c +++ b/drivers/media/common/siano/smsdvb.c | |||
@@ -863,131 +863,150 @@ static int smsdvb_set_frontend(struct dvb_frontend *fe) | |||
863 | } | 863 | } |
864 | } | 864 | } |
865 | 865 | ||
866 | static int smsdvb_get_frontend(struct dvb_frontend *fe) | 866 | static int smsdvb_get_frontend_dvb(struct dvb_frontend *fe) |
867 | { | 867 | { |
868 | struct dtv_frontend_properties *fep = &fe->dtv_property_cache; | 868 | struct dtv_frontend_properties *fep = &fe->dtv_property_cache; |
869 | struct smsdvb_client_t *client = | 869 | struct smsdvb_client_t *client = |
870 | container_of(fe, struct smsdvb_client_t, frontend); | 870 | container_of(fe, struct smsdvb_client_t, frontend); |
871 | struct smscore_device_t *coredev = client->coredev; | ||
872 | struct TRANSMISSION_STATISTICS_S *td = | 871 | struct TRANSMISSION_STATISTICS_S *td = |
873 | &client->sms_stat_dvb.TransmissionData; | 872 | &client->sms_stat_dvb.TransmissionData; |
874 | 873 | ||
875 | switch (smscore_get_device_mode(coredev)) { | 874 | fep->frequency = td->Frequency; |
876 | case DEVICE_MODE_DVBT: | ||
877 | case DEVICE_MODE_DVBT_BDA: | ||
878 | fep->frequency = td->Frequency; | ||
879 | |||
880 | switch (td->Bandwidth) { | ||
881 | case 6: | ||
882 | fep->bandwidth_hz = 6000000; | ||
883 | break; | ||
884 | case 7: | ||
885 | fep->bandwidth_hz = 7000000; | ||
886 | break; | ||
887 | case 8: | ||
888 | fep->bandwidth_hz = 8000000; | ||
889 | break; | ||
890 | } | ||
891 | 875 | ||
892 | switch (td->TransmissionMode) { | 876 | switch (td->Bandwidth) { |
893 | case 2: | 877 | case 6: |
894 | fep->transmission_mode = TRANSMISSION_MODE_2K; | 878 | fep->bandwidth_hz = 6000000; |
895 | break; | 879 | break; |
896 | case 8: | 880 | case 7: |
897 | fep->transmission_mode = TRANSMISSION_MODE_8K; | 881 | fep->bandwidth_hz = 7000000; |
898 | } | 882 | break; |
883 | case 8: | ||
884 | fep->bandwidth_hz = 8000000; | ||
885 | break; | ||
886 | } | ||
899 | 887 | ||
900 | switch (td->GuardInterval) { | 888 | switch (td->TransmissionMode) { |
901 | case 0: | 889 | case 2: |
902 | fep->guard_interval = GUARD_INTERVAL_1_32; | 890 | fep->transmission_mode = TRANSMISSION_MODE_2K; |
903 | break; | 891 | break; |
904 | case 1: | 892 | case 8: |
905 | fep->guard_interval = GUARD_INTERVAL_1_16; | 893 | fep->transmission_mode = TRANSMISSION_MODE_8K; |
906 | break; | 894 | } |
907 | case 2: | ||
908 | fep->guard_interval = GUARD_INTERVAL_1_8; | ||
909 | break; | ||
910 | case 3: | ||
911 | fep->guard_interval = GUARD_INTERVAL_1_4; | ||
912 | break; | ||
913 | } | ||
914 | 895 | ||
915 | switch (td->CodeRate) { | 896 | switch (td->GuardInterval) { |
916 | case 0: | 897 | case 0: |
917 | fep->code_rate_HP = FEC_1_2; | 898 | fep->guard_interval = GUARD_INTERVAL_1_32; |
918 | break; | 899 | break; |
919 | case 1: | 900 | case 1: |
920 | fep->code_rate_HP = FEC_2_3; | 901 | fep->guard_interval = GUARD_INTERVAL_1_16; |
921 | break; | 902 | break; |
922 | case 2: | 903 | case 2: |
923 | fep->code_rate_HP = FEC_3_4; | 904 | fep->guard_interval = GUARD_INTERVAL_1_8; |
924 | break; | 905 | break; |
925 | case 3: | 906 | case 3: |
926 | fep->code_rate_HP = FEC_5_6; | 907 | fep->guard_interval = GUARD_INTERVAL_1_4; |
927 | break; | 908 | break; |
928 | case 4: | 909 | } |
929 | fep->code_rate_HP = FEC_7_8; | ||
930 | break; | ||
931 | } | ||
932 | 910 | ||
933 | switch (td->LPCodeRate) { | 911 | switch (td->CodeRate) { |
934 | case 0: | 912 | case 0: |
935 | fep->code_rate_LP = FEC_1_2; | 913 | fep->code_rate_HP = FEC_1_2; |
936 | break; | 914 | break; |
937 | case 1: | 915 | case 1: |
938 | fep->code_rate_LP = FEC_2_3; | 916 | fep->code_rate_HP = FEC_2_3; |
939 | break; | 917 | break; |
940 | case 2: | 918 | case 2: |
941 | fep->code_rate_LP = FEC_3_4; | 919 | fep->code_rate_HP = FEC_3_4; |
942 | break; | 920 | break; |
943 | case 3: | 921 | case 3: |
944 | fep->code_rate_LP = FEC_5_6; | 922 | fep->code_rate_HP = FEC_5_6; |
945 | break; | 923 | break; |
946 | case 4: | 924 | case 4: |
947 | fep->code_rate_LP = FEC_7_8; | 925 | fep->code_rate_HP = FEC_7_8; |
948 | break; | 926 | break; |
949 | } | 927 | } |
950 | 928 | ||
951 | switch (td->Constellation) { | 929 | switch (td->LPCodeRate) { |
952 | case 0: | 930 | case 0: |
953 | fep->modulation = QPSK; | 931 | fep->code_rate_LP = FEC_1_2; |
954 | break; | 932 | break; |
955 | case 1: | 933 | case 1: |
956 | fep->modulation = QAM_16; | 934 | fep->code_rate_LP = FEC_2_3; |
957 | break; | 935 | break; |
958 | case 2: | 936 | case 2: |
959 | fep->modulation = QAM_64; | 937 | fep->code_rate_LP = FEC_3_4; |
960 | break; | 938 | break; |
961 | } | 939 | case 3: |
940 | fep->code_rate_LP = FEC_5_6; | ||
941 | break; | ||
942 | case 4: | ||
943 | fep->code_rate_LP = FEC_7_8; | ||
944 | break; | ||
945 | } | ||
962 | 946 | ||
963 | switch (td->Hierarchy) { | 947 | switch (td->Constellation) { |
964 | case 0: | 948 | case 0: |
965 | fep->hierarchy = HIERARCHY_NONE; | 949 | fep->modulation = QPSK; |
966 | break; | 950 | break; |
967 | case 1: | 951 | case 1: |
968 | fep->hierarchy = HIERARCHY_1; | 952 | fep->modulation = QAM_16; |
969 | break; | 953 | break; |
970 | case 2: | 954 | case 2: |
971 | fep->hierarchy = HIERARCHY_2; | 955 | fep->modulation = QAM_64; |
972 | break; | 956 | break; |
973 | case 3: | 957 | } |
974 | fep->hierarchy = HIERARCHY_4; | ||
975 | break; | ||
976 | } | ||
977 | 958 | ||
978 | fep->inversion = INVERSION_AUTO; | 959 | switch (td->Hierarchy) { |
960 | case 0: | ||
961 | fep->hierarchy = HIERARCHY_NONE; | ||
979 | break; | 962 | break; |
963 | case 1: | ||
964 | fep->hierarchy = HIERARCHY_1; | ||
965 | break; | ||
966 | case 2: | ||
967 | fep->hierarchy = HIERARCHY_2; | ||
968 | break; | ||
969 | case 3: | ||
970 | fep->hierarchy = HIERARCHY_4; | ||
971 | break; | ||
972 | } | ||
973 | |||
974 | fep->inversion = INVERSION_AUTO; | ||
975 | |||
976 | return 0; | ||
977 | } | ||
978 | |||
979 | static int smsdvb_get_frontend_isdb(struct dvb_frontend *fe) | ||
980 | { | ||
981 | struct dtv_frontend_properties *fep = &fe->dtv_property_cache; | ||
982 | struct smsdvb_client_t *client = | ||
983 | container_of(fe, struct smsdvb_client_t, frontend); | ||
984 | struct TRANSMISSION_STATISTICS_S *td = | ||
985 | &client->sms_stat_dvb.TransmissionData; | ||
986 | |||
987 | fep->frequency = td->Frequency; | ||
988 | fep->bandwidth_hz = 6000000; | ||
989 | /* todo: retrive the other parameters */ | ||
990 | |||
991 | return 0; | ||
992 | } | ||
993 | |||
994 | static int smsdvb_get_frontend(struct dvb_frontend *fe) | ||
995 | { | ||
996 | struct smsdvb_client_t *client = | ||
997 | container_of(fe, struct smsdvb_client_t, frontend); | ||
998 | struct smscore_device_t *coredev = client->coredev; | ||
999 | |||
1000 | switch (smscore_get_device_mode(coredev)) { | ||
1001 | case DEVICE_MODE_DVBT: | ||
1002 | case DEVICE_MODE_DVBT_BDA: | ||
1003 | return smsdvb_get_frontend_dvb(fe); | ||
980 | case DEVICE_MODE_ISDBT: | 1004 | case DEVICE_MODE_ISDBT: |
981 | case DEVICE_MODE_ISDBT_BDA: | 1005 | case DEVICE_MODE_ISDBT_BDA: |
982 | fep->frequency = td->Frequency; | 1006 | return smsdvb_get_frontend_isdb(fe); |
983 | fep->bandwidth_hz = 6000000; | ||
984 | /* todo: retrive the other parameters */ | ||
985 | break; | ||
986 | default: | 1007 | default: |
987 | return -EINVAL; | 1008 | return -EINVAL; |
988 | } | 1009 | } |
989 | |||
990 | return 0; | ||
991 | } | 1010 | } |
992 | 1011 | ||
993 | static int smsdvb_init(struct dvb_frontend *fe) | 1012 | static int smsdvb_init(struct dvb_frontend *fe) |