diff options
author | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2010-06-30 18:07:09 -0400 |
---|---|---|
committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2010-06-30 18:07:09 -0400 |
commit | 08fa16b6b75005c120b59d00ae42a0b7cc68db45 (patch) | |
tree | c5f22412467f72dd0c7291bbb958a9485e894f02 /drivers/media/video/saa7134 | |
parent | 1796b983cc4cbbed5e9e478b03591609a2c21987 (diff) | |
parent | 7e27d6e778cd87b6f2415515d7127eba53fe5d02 (diff) |
Merge commit 'v2.6.35-rc3' into next
Diffstat (limited to 'drivers/media/video/saa7134')
-rw-r--r-- | drivers/media/video/saa7134/saa6752hs.c | 46 | ||||
-rw-r--r-- | drivers/media/video/saa7134/saa7134-cards.c | 55 | ||||
-rw-r--r-- | drivers/media/video/saa7134/saa7134-empress.c | 9 | ||||
-rw-r--r-- | drivers/media/video/saa7134/saa7134-input.c | 18 | ||||
-rw-r--r-- | drivers/media/video/saa7134/saa7134.h | 1 |
5 files changed, 101 insertions, 28 deletions
diff --git a/drivers/media/video/saa7134/saa6752hs.c b/drivers/media/video/saa7134/saa6752hs.c index 1eabff6b2456..40fd31ca7716 100644 --- a/drivers/media/video/saa7134/saa6752hs.c +++ b/drivers/media/video/saa7134/saa6752hs.c | |||
@@ -846,24 +846,28 @@ static int saa6752hs_g_ext_ctrls(struct v4l2_subdev *sd, struct v4l2_ext_control | |||
846 | return 0; | 846 | return 0; |
847 | } | 847 | } |
848 | 848 | ||
849 | static int saa6752hs_g_fmt(struct v4l2_subdev *sd, struct v4l2_format *f) | 849 | static int saa6752hs_g_mbus_fmt(struct v4l2_subdev *sd, struct v4l2_mbus_framefmt *f) |
850 | { | 850 | { |
851 | struct saa6752hs_state *h = to_state(sd); | 851 | struct saa6752hs_state *h = to_state(sd); |
852 | 852 | ||
853 | if (h->video_format == SAA6752HS_VF_UNKNOWN) | 853 | if (h->video_format == SAA6752HS_VF_UNKNOWN) |
854 | h->video_format = SAA6752HS_VF_D1; | 854 | h->video_format = SAA6752HS_VF_D1; |
855 | f->fmt.pix.width = | 855 | f->width = v4l2_format_table[h->video_format].fmt.pix.width; |
856 | v4l2_format_table[h->video_format].fmt.pix.width; | 856 | f->height = v4l2_format_table[h->video_format].fmt.pix.height; |
857 | f->fmt.pix.height = | 857 | f->code = V4L2_MBUS_FMT_FIXED; |
858 | v4l2_format_table[h->video_format].fmt.pix.height; | 858 | f->field = V4L2_FIELD_INTERLACED; |
859 | f->colorspace = V4L2_COLORSPACE_SMPTE170M; | ||
859 | return 0; | 860 | return 0; |
860 | } | 861 | } |
861 | 862 | ||
862 | static int saa6752hs_s_fmt(struct v4l2_subdev *sd, struct v4l2_format *f) | 863 | static int saa6752hs_s_mbus_fmt(struct v4l2_subdev *sd, struct v4l2_mbus_framefmt *f) |
863 | { | 864 | { |
864 | struct saa6752hs_state *h = to_state(sd); | 865 | struct saa6752hs_state *h = to_state(sd); |
865 | int dist_352, dist_480, dist_720; | 866 | int dist_352, dist_480, dist_720; |
866 | 867 | ||
868 | if (f->code != V4L2_MBUS_FMT_FIXED) | ||
869 | return -EINVAL; | ||
870 | |||
867 | /* | 871 | /* |
868 | FIXME: translate and round width/height into EMPRESS | 872 | FIXME: translate and round width/height into EMPRESS |
869 | subsample type: | 873 | subsample type: |
@@ -876,28 +880,30 @@ static int saa6752hs_s_fmt(struct v4l2_subdev *sd, struct v4l2_format *f) | |||
876 | D1 | 720x576 | 720x480 | 880 | D1 | 720x576 | 720x480 |
877 | */ | 881 | */ |
878 | 882 | ||
879 | dist_352 = abs(f->fmt.pix.width - 352); | 883 | dist_352 = abs(f->width - 352); |
880 | dist_480 = abs(f->fmt.pix.width - 480); | 884 | dist_480 = abs(f->width - 480); |
881 | dist_720 = abs(f->fmt.pix.width - 720); | 885 | dist_720 = abs(f->width - 720); |
882 | if (dist_720 < dist_480) { | 886 | if (dist_720 < dist_480) { |
883 | f->fmt.pix.width = 720; | 887 | f->width = 720; |
884 | f->fmt.pix.height = 576; | 888 | f->height = 576; |
885 | h->video_format = SAA6752HS_VF_D1; | 889 | h->video_format = SAA6752HS_VF_D1; |
886 | } else if (dist_480 < dist_352) { | 890 | } else if (dist_480 < dist_352) { |
887 | f->fmt.pix.width = 480; | 891 | f->width = 480; |
888 | f->fmt.pix.height = 576; | 892 | f->height = 576; |
889 | h->video_format = SAA6752HS_VF_2_3_D1; | 893 | h->video_format = SAA6752HS_VF_2_3_D1; |
890 | } else { | 894 | } else { |
891 | f->fmt.pix.width = 352; | 895 | f->width = 352; |
892 | if (abs(f->fmt.pix.height - 576) < | 896 | if (abs(f->height - 576) < |
893 | abs(f->fmt.pix.height - 288)) { | 897 | abs(f->height - 288)) { |
894 | f->fmt.pix.height = 576; | 898 | f->height = 576; |
895 | h->video_format = SAA6752HS_VF_1_2_D1; | 899 | h->video_format = SAA6752HS_VF_1_2_D1; |
896 | } else { | 900 | } else { |
897 | f->fmt.pix.height = 288; | 901 | f->height = 288; |
898 | h->video_format = SAA6752HS_VF_SIF; | 902 | h->video_format = SAA6752HS_VF_SIF; |
899 | } | 903 | } |
900 | } | 904 | } |
905 | f->field = V4L2_FIELD_INTERLACED; | ||
906 | f->colorspace = V4L2_COLORSPACE_SMPTE170M; | ||
901 | return 0; | 907 | return 0; |
902 | } | 908 | } |
903 | 909 | ||
@@ -932,8 +938,8 @@ static const struct v4l2_subdev_core_ops saa6752hs_core_ops = { | |||
932 | }; | 938 | }; |
933 | 939 | ||
934 | static const struct v4l2_subdev_video_ops saa6752hs_video_ops = { | 940 | static const struct v4l2_subdev_video_ops saa6752hs_video_ops = { |
935 | .s_fmt = saa6752hs_s_fmt, | 941 | .s_mbus_fmt = saa6752hs_s_mbus_fmt, |
936 | .g_fmt = saa6752hs_g_fmt, | 942 | .g_mbus_fmt = saa6752hs_g_mbus_fmt, |
937 | }; | 943 | }; |
938 | 944 | ||
939 | static const struct v4l2_subdev_ops saa6752hs_ops = { | 945 | static const struct v4l2_subdev_ops saa6752hs_ops = { |
diff --git a/drivers/media/video/saa7134/saa7134-cards.c b/drivers/media/video/saa7134/saa7134-cards.c index 72700d4e3941..07f6bb8ef9d9 100644 --- a/drivers/media/video/saa7134/saa7134-cards.c +++ b/drivers/media/video/saa7134/saa7134-cards.c | |||
@@ -3897,6 +3897,40 @@ struct saa7134_board saa7134_boards[] = { | |||
3897 | .gpio = 0x01, | 3897 | .gpio = 0x01, |
3898 | }, | 3898 | }, |
3899 | }, | 3899 | }, |
3900 | [SAA7134_BOARD_AVERMEDIA_M733A] = { | ||
3901 | .name = "Avermedia PCI M733A", | ||
3902 | .audio_clock = 0x00187de7, | ||
3903 | .tuner_type = TUNER_PHILIPS_TDA8290, | ||
3904 | .radio_type = UNSET, | ||
3905 | .tuner_addr = ADDR_UNSET, | ||
3906 | .radio_addr = ADDR_UNSET, | ||
3907 | .tuner_config = 0, | ||
3908 | .gpiomask = 0x020200000, | ||
3909 | .inputs = {{ | ||
3910 | .name = name_tv, | ||
3911 | .vmux = 1, | ||
3912 | .amux = TV, | ||
3913 | .tv = 1, | ||
3914 | }, { | ||
3915 | .name = name_comp1, | ||
3916 | .vmux = 3, | ||
3917 | .amux = LINE1, | ||
3918 | }, { | ||
3919 | .name = name_svideo, | ||
3920 | .vmux = 8, | ||
3921 | .amux = LINE1, | ||
3922 | } }, | ||
3923 | .radio = { | ||
3924 | .name = name_radio, | ||
3925 | .amux = TV, | ||
3926 | .gpio = 0x00200000, | ||
3927 | }, | ||
3928 | .mute = { | ||
3929 | .name = name_mute, | ||
3930 | .amux = TV, | ||
3931 | .gpio = 0x01, | ||
3932 | }, | ||
3933 | }, | ||
3900 | [SAA7134_BOARD_BEHOLD_401] = { | 3934 | [SAA7134_BOARD_BEHOLD_401] = { |
3901 | /* Beholder Intl. Ltd. 2008 */ | 3935 | /* Beholder Intl. Ltd. 2008 */ |
3902 | /*Dmitry Belimov <d.belimov@gmail.com> */ | 3936 | /*Dmitry Belimov <d.belimov@gmail.com> */ |
@@ -5822,6 +5856,18 @@ struct pci_device_id saa7134_pci_tbl[] = { | |||
5822 | .driver_data = SAA7134_BOARD_AVERMEDIA_M135A, | 5856 | .driver_data = SAA7134_BOARD_AVERMEDIA_M135A, |
5823 | }, { | 5857 | }, { |
5824 | .vendor = PCI_VENDOR_ID_PHILIPS, | 5858 | .vendor = PCI_VENDOR_ID_PHILIPS, |
5859 | .device = PCI_DEVICE_ID_PHILIPS_SAA7133, | ||
5860 | .subvendor = 0x1461, /* Avermedia Technologies Inc */ | ||
5861 | .subdevice = 0x4155, | ||
5862 | .driver_data = SAA7134_BOARD_AVERMEDIA_M733A, | ||
5863 | }, { | ||
5864 | .vendor = PCI_VENDOR_ID_PHILIPS, | ||
5865 | .device = PCI_DEVICE_ID_PHILIPS_SAA7133, | ||
5866 | .subvendor = 0x1461, /* Avermedia Technologies Inc */ | ||
5867 | .subdevice = 0x4255, | ||
5868 | .driver_data = SAA7134_BOARD_AVERMEDIA_M733A, | ||
5869 | }, { | ||
5870 | .vendor = PCI_VENDOR_ID_PHILIPS, | ||
5825 | .device = PCI_DEVICE_ID_PHILIPS_SAA7130, | 5871 | .device = PCI_DEVICE_ID_PHILIPS_SAA7130, |
5826 | .subvendor = PCI_VENDOR_ID_PHILIPS, | 5872 | .subvendor = PCI_VENDOR_ID_PHILIPS, |
5827 | .subdevice = 0x2004, | 5873 | .subdevice = 0x2004, |
@@ -6786,6 +6832,7 @@ static int saa7134_tda8290_callback(struct saa7134_dev *dev, | |||
6786 | switch (dev->board) { | 6832 | switch (dev->board) { |
6787 | case SAA7134_BOARD_HAUPPAUGE_HVR1150: | 6833 | case SAA7134_BOARD_HAUPPAUGE_HVR1150: |
6788 | case SAA7134_BOARD_HAUPPAUGE_HVR1120: | 6834 | case SAA7134_BOARD_HAUPPAUGE_HVR1120: |
6835 | case SAA7134_BOARD_AVERMEDIA_M733A: | ||
6789 | /* tda8290 + tda18271 */ | 6836 | /* tda8290 + tda18271 */ |
6790 | ret = saa7134_tda8290_18271_callback(dev, command, arg); | 6837 | ret = saa7134_tda8290_18271_callback(dev, command, arg); |
6791 | break; | 6838 | break; |
@@ -7087,6 +7134,14 @@ int saa7134_board_init1(struct saa7134_dev *dev) | |||
7087 | saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x0000C000, 0x0000C000); | 7134 | saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x0000C000, 0x0000C000); |
7088 | saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x0000C000, 0x0000C000); | 7135 | saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x0000C000, 0x0000C000); |
7089 | break; | 7136 | break; |
7137 | case SAA7134_BOARD_AVERMEDIA_M733A: | ||
7138 | saa7134_set_gpio(dev, 1, 1); | ||
7139 | msleep(10); | ||
7140 | saa7134_set_gpio(dev, 1, 0); | ||
7141 | msleep(10); | ||
7142 | saa7134_set_gpio(dev, 1, 1); | ||
7143 | dev->has_remote = SAA7134_REMOTE_GPIO; | ||
7144 | break; | ||
7090 | } | 7145 | } |
7091 | return 0; | 7146 | return 0; |
7092 | } | 7147 | } |
diff --git a/drivers/media/video/saa7134/saa7134-empress.c b/drivers/media/video/saa7134/saa7134-empress.c index ea877a50f52d..e763f9fd0133 100644 --- a/drivers/media/video/saa7134/saa7134-empress.c +++ b/drivers/media/video/saa7134/saa7134-empress.c | |||
@@ -223,9 +223,11 @@ static int empress_g_fmt_vid_cap(struct file *file, void *priv, | |||
223 | struct v4l2_format *f) | 223 | struct v4l2_format *f) |
224 | { | 224 | { |
225 | struct saa7134_dev *dev = file->private_data; | 225 | struct saa7134_dev *dev = file->private_data; |
226 | struct v4l2_mbus_framefmt mbus_fmt; | ||
226 | 227 | ||
227 | saa_call_all(dev, video, g_fmt, f); | 228 | saa_call_all(dev, video, g_mbus_fmt, &mbus_fmt); |
228 | 229 | ||
230 | v4l2_fill_pix_format(&f->fmt.pix, &mbus_fmt); | ||
229 | f->fmt.pix.pixelformat = V4L2_PIX_FMT_MPEG; | 231 | f->fmt.pix.pixelformat = V4L2_PIX_FMT_MPEG; |
230 | f->fmt.pix.sizeimage = TS_PACKET_SIZE * dev->ts.nr_packets; | 232 | f->fmt.pix.sizeimage = TS_PACKET_SIZE * dev->ts.nr_packets; |
231 | 233 | ||
@@ -236,8 +238,11 @@ static int empress_s_fmt_vid_cap(struct file *file, void *priv, | |||
236 | struct v4l2_format *f) | 238 | struct v4l2_format *f) |
237 | { | 239 | { |
238 | struct saa7134_dev *dev = file->private_data; | 240 | struct saa7134_dev *dev = file->private_data; |
241 | struct v4l2_mbus_framefmt mbus_fmt; | ||
239 | 242 | ||
240 | saa_call_all(dev, video, s_fmt, f); | 243 | v4l2_fill_mbus_format(&mbus_fmt, &f->fmt.pix, V4L2_MBUS_FMT_FIXED); |
244 | saa_call_all(dev, video, s_mbus_fmt, &mbus_fmt); | ||
245 | v4l2_fill_pix_format(&f->fmt.pix, &mbus_fmt); | ||
241 | 246 | ||
242 | f->fmt.pix.pixelformat = V4L2_PIX_FMT_MPEG; | 247 | f->fmt.pix.pixelformat = V4L2_PIX_FMT_MPEG; |
243 | f->fmt.pix.sizeimage = TS_PACKET_SIZE * dev->ts.nr_packets; | 248 | f->fmt.pix.sizeimage = TS_PACKET_SIZE * dev->ts.nr_packets; |
diff --git a/drivers/media/video/saa7134/saa7134-input.c b/drivers/media/video/saa7134/saa7134-input.c index e5565e2fd426..0b336ca6d55b 100644 --- a/drivers/media/video/saa7134/saa7134-input.c +++ b/drivers/media/video/saa7134/saa7134-input.c | |||
@@ -141,8 +141,8 @@ static int get_key_flydvb_trio(struct IR_i2c *ir, u32 *ir_key, u32 *ir_raw) | |||
141 | struct saa7134_dev *dev = ir->c->adapter->algo_data; | 141 | struct saa7134_dev *dev = ir->c->adapter->algo_data; |
142 | 142 | ||
143 | if (dev == NULL) { | 143 | if (dev == NULL) { |
144 | dprintk("get_key_flydvb_trio: " | 144 | i2cdprintk("get_key_flydvb_trio: " |
145 | "gir->c->adapter->algo_data is NULL!\n"); | 145 | "ir->c->adapter->algo_data is NULL!\n"); |
146 | return -EIO; | 146 | return -EIO; |
147 | } | 147 | } |
148 | 148 | ||
@@ -195,8 +195,8 @@ static int get_key_msi_tvanywhere_plus(struct IR_i2c *ir, u32 *ir_key, | |||
195 | /* <dev> is needed to access GPIO. Used by the saa_readl macro. */ | 195 | /* <dev> is needed to access GPIO. Used by the saa_readl macro. */ |
196 | struct saa7134_dev *dev = ir->c->adapter->algo_data; | 196 | struct saa7134_dev *dev = ir->c->adapter->algo_data; |
197 | if (dev == NULL) { | 197 | if (dev == NULL) { |
198 | dprintk("get_key_msi_tvanywhere_plus: " | 198 | i2cdprintk("get_key_msi_tvanywhere_plus: " |
199 | "gir->c->adapter->algo_data is NULL!\n"); | 199 | "ir->c->adapter->algo_data is NULL!\n"); |
200 | return -EIO; | 200 | return -EIO; |
201 | } | 201 | } |
202 | 202 | ||
@@ -657,12 +657,19 @@ int saa7134_input_init1(struct saa7134_dev *dev) | |||
657 | saa_setb(SAA7134_GPIO_GPSTATUS0, 0x4); | 657 | saa_setb(SAA7134_GPIO_GPSTATUS0, 0x4); |
658 | break; | 658 | break; |
659 | case SAA7134_BOARD_AVERMEDIA_M135A: | 659 | case SAA7134_BOARD_AVERMEDIA_M135A: |
660 | ir_codes = RC_MAP_AVERMEDIA_M135A_RM_JX; | 660 | ir_codes = RC_MAP_AVERMEDIA_M135A; |
661 | mask_keydown = 0x0040000; /* Enable GPIO18 line on both edges */ | 661 | mask_keydown = 0x0040000; /* Enable GPIO18 line on both edges */ |
662 | mask_keyup = 0x0040000; | 662 | mask_keyup = 0x0040000; |
663 | mask_keycode = 0xffff; | 663 | mask_keycode = 0xffff; |
664 | raw_decode = 1; | 664 | raw_decode = 1; |
665 | break; | 665 | break; |
666 | case SAA7134_BOARD_AVERMEDIA_M733A: | ||
667 | ir_codes = RC_MAP_AVERMEDIA_M733A_RM_K6; | ||
668 | mask_keydown = 0x0040000; | ||
669 | mask_keyup = 0x0040000; | ||
670 | mask_keycode = 0xffff; | ||
671 | raw_decode = 1; | ||
672 | break; | ||
666 | case SAA7134_BOARD_AVERMEDIA_777: | 673 | case SAA7134_BOARD_AVERMEDIA_777: |
667 | case SAA7134_BOARD_AVERMEDIA_A16AR: | 674 | case SAA7134_BOARD_AVERMEDIA_A16AR: |
668 | ir_codes = RC_MAP_AVERMEDIA; | 675 | ir_codes = RC_MAP_AVERMEDIA; |
@@ -815,7 +822,6 @@ int saa7134_input_init1(struct saa7134_dev *dev) | |||
815 | mask_keyup = 0x020000; | 822 | mask_keyup = 0x020000; |
816 | polling = 50; /* ms */ | 823 | polling = 50; /* ms */ |
817 | break; | 824 | break; |
818 | break; | ||
819 | } | 825 | } |
820 | if (NULL == ir_codes) { | 826 | if (NULL == ir_codes) { |
821 | printk("%s: Oops: IR config error [card=%d]\n", | 827 | printk("%s: Oops: IR config error [card=%d]\n", |
diff --git a/drivers/media/video/saa7134/saa7134.h b/drivers/media/video/saa7134/saa7134.h index 3962534267be..756a1ca8833d 100644 --- a/drivers/media/video/saa7134/saa7134.h +++ b/drivers/media/video/saa7134/saa7134.h | |||
@@ -303,6 +303,7 @@ struct saa7134_format { | |||
303 | #define SAA7134_BOARD_HAWELL_HW_404M7 177 | 303 | #define SAA7134_BOARD_HAWELL_HW_404M7 177 |
304 | #define SAA7134_BOARD_BEHOLD_H7 178 | 304 | #define SAA7134_BOARD_BEHOLD_H7 178 |
305 | #define SAA7134_BOARD_BEHOLD_A7 179 | 305 | #define SAA7134_BOARD_BEHOLD_A7 179 |
306 | #define SAA7134_BOARD_AVERMEDIA_M733A 180 | ||
306 | 307 | ||
307 | #define SAA7134_MAXBOARDS 32 | 308 | #define SAA7134_MAXBOARDS 32 |
308 | #define SAA7134_INPUT_MAX 8 | 309 | #define SAA7134_INPUT_MAX 8 |