Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

V4L/DVB (3700): Remove obsolete commands from tvp5150.c

- Remove old DECODER_ commands from tvp5150.c, replacing them with newer
ones if appropriate.
- Small VIDIOC_G_TUNER fixes in msp3400 and tuner.
- Fix VIDIOC_S_TUNER support in em28xx.

Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>

authored by

Hans Verkuil and committed by
Mauro Carvalho Chehab
ab4cecf9 3bbe5a83

+11 -146
+4 -27
drivers/media/video/em28xx/em28xx-video.c
··· 1141 1141 case VIDIOC_G_TUNER: 1142 1142 { 1143 1143 struct v4l2_tuner *t = arg; 1144 - int status = 0; 1145 1144 1146 1145 if (0 != t->index) 1147 1146 return -EINVAL; 1148 1147 1149 1148 memset(t, 0, sizeof(*t)); 1150 1149 strcpy(t->name, "Tuner"); 1151 - t->type = V4L2_TUNER_ANALOG_TV; 1152 - t->capability = V4L2_TUNER_CAP_NORM; 1153 - t->rangehigh = 0xffffffffUL; /* FIXME: set correct range */ 1154 - /* t->signal = 0xffff;*/ 1155 - /* em28xx_i2c_call_clients(dev,VIDIOC_G_TUNER,t);*/ 1156 - /* No way to get signal strength? */ 1157 1150 mutex_lock(&dev->lock); 1158 - em28xx_i2c_call_clients(dev, DECODER_GET_STATUS, 1159 - &status); 1151 + /* let clients fill in the remainder of this struct */ 1152 + em28xx_i2c_call_clients(dev, cmd, t); 1160 1153 mutex_unlock(&dev->lock); 1161 - t->signal = 1162 - (status & DECODER_STATUS_GOOD) != 0 ? 0xffff : 0; 1163 - 1164 1154 em28xx_videodbg("VIDIO_G_TUNER: signal=%x, afc=%x\n", t->signal, 1165 1155 t->afc); 1166 1156 return 0; ··· 1158 1168 case VIDIOC_S_TUNER: 1159 1169 { 1160 1170 struct v4l2_tuner *t = arg; 1161 - int status = 0; 1162 1171 1163 1172 if (0 != t->index) 1164 1173 return -EINVAL; 1165 - memset(t, 0, sizeof(*t)); 1166 - strcpy(t->name, "Tuner"); 1167 - t->type = V4L2_TUNER_ANALOG_TV; 1168 - t->capability = V4L2_TUNER_CAP_NORM; 1169 - t->rangehigh = 0xffffffffUL; /* FIXME: set correct range */ 1170 - /* t->signal = 0xffff; */ 1171 - /* No way to get signal strength? */ 1172 1174 mutex_lock(&dev->lock); 1173 - em28xx_i2c_call_clients(dev, DECODER_GET_STATUS, 1174 - &status); 1175 + /* let clients handle this */ 1176 + em28xx_i2c_call_clients(dev, cmd, t); 1175 1177 mutex_unlock(&dev->lock); 1176 - t->signal = 1177 - (status & DECODER_STATUS_GOOD) != 0 ? 0xffff : 0; 1178 - 1179 - em28xx_videodbg("VIDIO_S_TUNER: signal=%x, afc=%x\n", 1180 - t->signal, t->afc); 1181 1178 return 0; 1182 1179 } 1183 1180 case VIDIOC_G_FREQUENCY:
+1 -1
drivers/media/video/msp3400-driver.c
··· 703 703 msp_detect_stereo(client); 704 704 vt->audmode = state->audmode; 705 705 vt->rxsubchans = state->rxsubchans; 706 - vt->capability = V4L2_TUNER_CAP_STEREO | 706 + vt->capability |= V4L2_TUNER_CAP_STEREO | 707 707 V4L2_TUNER_CAP_LANG1 | V4L2_TUNER_CAP_LANG2; 708 708 break; 709 709 }
+2
drivers/media/video/tuner-core.c
··· 744 744 switch_v4l2(); 745 745 746 746 tuner->type = t->mode; 747 + if (t->mode == V4L2_TUNER_ANALOG_TV) 748 + tuner->capability |= V4L2_TUNER_CAP_NORM; 747 749 if (t->mode != V4L2_TUNER_RADIO) { 748 750 tuner->rangelow = tv_range[0] * 16; 749 751 tuner->rangehigh = tv_range[1] * 16;
+4 -118
drivers/media/video/tvp5150.c
··· 858 858 859 859 case 0: 860 860 case VIDIOC_INT_RESET: 861 - case DECODER_INIT: 862 861 tvp5150_reset(c); 863 862 break; 864 863 case VIDIOC_S_STD: ··· 956 957 #endif 957 958 958 959 case VIDIOC_LOG_STATUS: 959 - case DECODER_DUMP: 960 960 dump_reg(c); 961 961 break; 962 962 963 - case DECODER_GET_CAPABILITIES: 963 + case VIDIOC_G_TUNER: 964 964 { 965 - struct video_decoder_capability *cap = arg; 965 + struct v4l2_tuner *vt = arg; 966 + int status = tvp5150_read(c, 0x88); 966 967 967 - cap->flags = VIDEO_DECODER_PAL | 968 - VIDEO_DECODER_NTSC | 969 - VIDEO_DECODER_SECAM | 970 - VIDEO_DECODER_AUTO | VIDEO_DECODER_CCIR; 971 - cap->inputs = 3; 972 - cap->outputs = 1; 973 - break; 974 - } 975 - case DECODER_GET_STATUS: 976 - { 977 - int *iarg = arg; 978 - int status; 979 - int res=0; 980 - status = tvp5150_read(c, 0x88); 981 - if(status&0x08){ 982 - res |= DECODER_STATUS_COLOR; 983 - } 984 - if(status&0x04 && status&0x02){ 985 - res |= DECODER_STATUS_GOOD; 986 - } 987 - *iarg=res; 988 - break; 989 - } 990 - 991 - case DECODER_SET_GPIO: 992 - break; 993 - 994 - case DECODER_SET_VBI_BYPASS: 995 - break; 996 - 997 - case DECODER_SET_NORM: 998 - { 999 - int *iarg = arg; 1000 - 1001 - switch (*iarg) { 1002 - 1003 - case VIDEO_MODE_NTSC: 1004 - break; 1005 - 1006 - case VIDEO_MODE_PAL: 1007 - break; 1008 - 1009 - case VIDEO_MODE_SECAM: 1010 - break; 1011 - 1012 - case VIDEO_MODE_AUTO: 1013 - break; 1014 - 1015 - default: 1016 - return -EINVAL; 1017 - 1018 - } 1019 - decoder->norm = *iarg; 1020 - break; 1021 - } 1022 - case DECODER_SET_INPUT: 1023 - { 1024 - int *iarg = arg; 1025 - if (*iarg < 0 || *iarg > 3) { 1026 - return -EINVAL; 1027 - } 1028 - 1029 - decoder->input = *iarg; 1030 - tvp5150_selmux(c, decoder->input); 1031 - 1032 - break; 1033 - } 1034 - case DECODER_SET_OUTPUT: 1035 - { 1036 - int *iarg = arg; 1037 - 1038 - /* not much choice of outputs */ 1039 - if (*iarg != 0) { 1040 - return -EINVAL; 1041 - } 1042 - break; 1043 - } 1044 - case DECODER_ENABLE_OUTPUT: 1045 - { 1046 - int *iarg = arg; 1047 - 1048 - decoder->enable = (*iarg != 0); 1049 - 1050 - tvp5150_selmux(c, decoder->input); 1051 - 968 + vt->signal = ((status & 0x04) && (status & 0x02)) ? 0xffff : 0x0; 1052 969 break; 1053 970 } 1054 971 case VIDIOC_QUERYCTRL: ··· 1010 1095 return -EINVAL; 1011 1096 } 1012 1097 1013 - case DECODER_SET_PICTURE: 1014 - { 1015 - struct video_picture *pic = arg; 1016 - if (decoder->bright != pic->brightness) { 1017 - /* We want 0 to 255 we get 0-65535 */ 1018 - decoder->bright = pic->brightness; 1019 - tvp5150_write(c, TVP5150_BRIGHT_CTL, 1020 - decoder->bright >> 8); 1021 - } 1022 - if (decoder->contrast != pic->contrast) { 1023 - /* We want 0 to 255 we get 0-65535 */ 1024 - decoder->contrast = pic->contrast; 1025 - tvp5150_write(c, TVP5150_CONTRAST_CTL, 1026 - decoder->contrast >> 8); 1027 - } 1028 - if (decoder->sat != pic->colour) { 1029 - /* We want 0 to 255 we get 0-65535 */ 1030 - decoder->sat = pic->colour; 1031 - tvp5150_write(c, TVP5150_SATURATION_CTL, 1032 - decoder->contrast >> 8); 1033 - } 1034 - if (decoder->hue != pic->hue) { 1035 - /* We want -128 to 127 we get 0-65535 */ 1036 - decoder->hue = pic->hue; 1037 - tvp5150_write(c, TVP5150_HUE_CTL, 1038 - (decoder->hue - 32768) >> 8); 1039 - } 1040 - break; 1041 - } 1042 1098 default: 1043 1099 return -EINVAL; 1044 1100 }