diff options
-rw-r--r-- | Documentation/video4linux/gspca.txt | 1 | ||||
-rw-r--r-- | drivers/media/video/gspca/sunplus.c | 10 |
2 files changed, 9 insertions, 2 deletions
diff --git a/Documentation/video4linux/gspca.txt b/Documentation/video4linux/gspca.txt index 7045ebf1d72d..37247697dbe8 100644 --- a/Documentation/video4linux/gspca.txt +++ b/Documentation/video4linux/gspca.txt | |||
@@ -140,6 +140,7 @@ spca500 04fc:7333 PalmPixDC85 | |||
140 | sunplus 04fc:ffff Pure DigitalDakota | 140 | sunplus 04fc:ffff Pure DigitalDakota |
141 | spca501 0506:00df 3Com HomeConnect Lite | 141 | spca501 0506:00df 3Com HomeConnect Lite |
142 | sunplus 052b:1513 Megapix V4 | 142 | sunplus 052b:1513 Megapix V4 |
143 | sunplus 052b:1803 MegaImage VI | ||
143 | tv8532 0545:808b Veo Stingray | 144 | tv8532 0545:808b Veo Stingray |
144 | tv8532 0545:8333 Veo Stingray | 145 | tv8532 0545:8333 Veo Stingray |
145 | sunplus 0546:3155 Polaroid PDC3070 | 146 | sunplus 0546:3155 Polaroid PDC3070 |
diff --git a/drivers/media/video/gspca/sunplus.c b/drivers/media/video/gspca/sunplus.c index 5127bbf9dd26..eabad47a3ca6 100644 --- a/drivers/media/video/gspca/sunplus.c +++ b/drivers/media/video/gspca/sunplus.c | |||
@@ -52,6 +52,7 @@ struct sd { | |||
52 | #define LogitechClickSmart420 2 | 52 | #define LogitechClickSmart420 2 |
53 | #define LogitechClickSmart820 3 | 53 | #define LogitechClickSmart820 3 |
54 | #define MegapixV4 4 | 54 | #define MegapixV4 4 |
55 | #define MegaImageVI 5 | ||
55 | 56 | ||
56 | u8 *jpeg_hdr; | 57 | u8 *jpeg_hdr; |
57 | }; | 58 | }; |
@@ -844,7 +845,10 @@ static int sd_config(struct gspca_dev *gspca_dev, | |||
844 | break; | 845 | break; |
845 | case BRIDGE_SPCA533: | 846 | case BRIDGE_SPCA533: |
846 | cam->cam_mode = custom_mode; | 847 | cam->cam_mode = custom_mode; |
847 | cam->nmodes = sizeof custom_mode / sizeof custom_mode[0]; | 848 | if (sd->subtype == MegaImageVI) /* 320x240 only */ |
849 | cam->nmodes = ARRAY_SIZE(custom_mode) - 1; | ||
850 | else | ||
851 | cam->nmodes = ARRAY_SIZE(custom_mode); | ||
848 | break; | 852 | break; |
849 | case BRIDGE_SPCA504C: | 853 | case BRIDGE_SPCA504C: |
850 | cam->cam_mode = vga_mode2; | 854 | cam->cam_mode = vga_mode2; |
@@ -988,7 +992,8 @@ static int sd_start(struct gspca_dev *gspca_dev) | |||
988 | /* case BRIDGE_SPCA533: */ | 992 | /* case BRIDGE_SPCA533: */ |
989 | /* case BRIDGE_SPCA536: */ | 993 | /* case BRIDGE_SPCA536: */ |
990 | if (sd->subtype == MegapixV4 || | 994 | if (sd->subtype == MegapixV4 || |
991 | sd->subtype == LogitechClickSmart820) { | 995 | sd->subtype == LogitechClickSmart820 || |
996 | sd->subtype == MegaImageVI) { | ||
992 | reg_w(gspca_dev, 0xf0, 0, 0, 0); | 997 | reg_w(gspca_dev, 0xf0, 0, 0, 0); |
993 | spca504B_WaitCmdStatus(gspca_dev); | 998 | spca504B_WaitCmdStatus(gspca_dev); |
994 | reg_r(gspca_dev, 0xf0, 4, 0); | 999 | reg_r(gspca_dev, 0xf0, 4, 0); |
@@ -1384,6 +1389,7 @@ static const __devinitdata struct usb_device_id device_table[] = { | |||
1384 | {USB_DEVICE(0x04fc, 0x5360), BS(SPCA536, 0)}, | 1389 | {USB_DEVICE(0x04fc, 0x5360), BS(SPCA536, 0)}, |
1385 | {USB_DEVICE(0x04fc, 0xffff), BS(SPCA504B, 0)}, | 1390 | {USB_DEVICE(0x04fc, 0xffff), BS(SPCA504B, 0)}, |
1386 | {USB_DEVICE(0x052b, 0x1513), BS(SPCA533, MegapixV4)}, | 1391 | {USB_DEVICE(0x052b, 0x1513), BS(SPCA533, MegapixV4)}, |
1392 | {USB_DEVICE(0x052b, 0x1803), BS(SPCA533, MegaImageVI)}, | ||
1387 | {USB_DEVICE(0x0546, 0x3155), BS(SPCA533, 0)}, | 1393 | {USB_DEVICE(0x0546, 0x3155), BS(SPCA533, 0)}, |
1388 | {USB_DEVICE(0x0546, 0x3191), BS(SPCA504B, 0)}, | 1394 | {USB_DEVICE(0x0546, 0x3191), BS(SPCA504B, 0)}, |
1389 | {USB_DEVICE(0x0546, 0x3273), BS(SPCA504B, 0)}, | 1395 | {USB_DEVICE(0x0546, 0x3273), BS(SPCA504B, 0)}, |