📄 spca50x.c
字号:
{DLinkDSC350, "D-Link DSC-350"}, {CreativePCCam600, "Creative PC-CAM 600"}, {IntelPocketPCCamera, "Intel Pocket PC Camera"}, {IntelEasyPCCamera, "Intel Easy PC Camera"}, {ThreeComHomeConnectLite, "3Com Home Connect Lite"}, {KodakEZ200, "Kodak EZ200"}, {MaxellMaxPocket, "Maxell Max Pocket LEdit. 1.3 MPixels"}, {AiptekMiniPenCam2, "Aiptek Mini PenCam 2 MPixels"}, {AiptekPocketDVII, "Aiptek PocketDVII 1.3 MPixels"}, {AiptekPenCamSD, "Aiptek Pencam SD 2 MPixels"}, {AiptekMiniPenCam13, "Aiptek mini PenCam 1.3 MPixels"}, {MustekGsmartLCD3, "Mustek Gsmart LCD 3"}, {MustekMDC5500Z, "Mustek MDC5500Z"}, {MegapixV4, "Megapix V4"}, {AiptekPocketDV, "Aiptek PocketDV "}, {HamaUSBSightcam, "Hama USB Sightcam 100"}, {Arowana300KCMOSCamera, "Arowana 300K CMOS Camera"}, {MystFromOriUnknownCamera,"Unknow Ori Camera"}, {AiptekPocketDV3100, "Aiptek PocketDV3100+ "}, {AiptekPocketCam3M, "Aiptek PocketCam 3 M "}, {GeniusVideoCAMExpressV2, "Genius VideoCAM Express V2"}, {Flexcam100Camera, "Flexcam 100 Camera"}, {MustekGsmartLCD2, "Mustek Gsmart LCD 2"}, {PureDigitalDakota, "Pure Digital Dakota"}, {PetCam, "PetCam"}, {BenqDC1500, "Benq DC1500"}, {LogitechClickSmart420, "Logitech Inc. ClickSmart 420"}, {LogitechClickSmart510, "Logitech Inc. ClickSmart 510"}, {BenqDC1300, "Benq DC1300"}, {HamaUSBSightcam2, "Hama USB Sightcam 100 (2)"}, {MustekDV3000, "Mustek DV 3000"}, {CreativePccam750, "Creative PCcam750"}, {MaxellCompactPM3, "Maxell Compact PC PM3"}, {BenqDC3410, "Benq DC3410"}, {BenqDC1016, "Benq DC1016"}, {MicroInnovationIC200, "Micro Innovation IC200"}, {LogitechTraveler, "Logitech QuickCam Traveler"}, {Flycam100Camera, "FlyCam Usb 100"}, {UsbGrabberPV321c, "Usb Grabber PV321c"}, {ADSInstantVCD, "ADS Instant VCD"}, {Gsmartmini, "Mustek Gsmart Mini"}, {Jenoptikjdc21lcd,"Jenoptik DC 21 LCD"}, {LogitechClickSmart310,"Logitech ClickSmart 310"}, {Terratec2move13,"Terratec 2 move 1.3"}, {MustekDV4000,"Mustek DV4000 Mpeg4"}, {AiptekDV3500,"Aiptek DV3500 Mpeg4"}, {LogitechClickSmart820,"Logitech ClickSmart 820"}, {Enigma13,"Digital Dream Enigma 1.3"}, {Sonix6025,"Xcam Shanga"}, {Epsilon13,"Digital Dream Epsilon 1.3"}, {Nxultra,"Creative Webcam NX ULTRA"}, {AiptekPocketCam2M,"Aiptek PocketCam 2Mega"}, {DeMonUSBCapture,"3DeMON USB Capture"}, {CreativeVista,"Creative Webcam Vista"}, {PolaroidPDC2030,"Polaroid PDC2030"}, {CreativeNotebook,"Creative Notebook PD1171"}, {CreativeMobile,"Creative Mobile PD1090"}, {LabtecPro,"Labtec Webcam Pro"}, {MustekWcam300A,"Mustek Wcam300A"}, {GeniusVideoCamV2,"Genius Videocam V2"}, {GeniusVideoCamV3,"Genius Videocam V3"}, {GeniusVideoCamExpressV2b, "Genius Videocam Express V2 Firmware 2"}, {CreativeNxPro, "Creative Nx Pro"}, {Sonix6029, "Sonix sn9c10x + Pas106 sensor"}, {Vimicro,"Z-star Vimicro zc0301p"}, {Digitrex2110,"ApexDigital Digitrex2110 spca533"}, {GsmartD30,"Mustek Gsmart D30 spca533"}, {CreativeNxPro2,"Creative NX Pro FW2"}, {Bs888e,"Kowa Bs888e MicroCamera"}, {Zc302,"Z-star Vimicro zc0302"}, {CreativeNoteBook2,"Creative Notebook PD1170"}, {AiptekSlim3200,"Aiptek Slim 3200"}, {LabtecWebcam, "Labtec Webcam"}, {QCExpress, "QC Express"}, {ICM532cam, "ICM532 cam"}, {MustekGsmart300,"Mustek Gsmart 300"}, {CreativeLive,"Creative Live! "}, {MercuryDigital,"Mercury Digital Pro 3.1Mp"}, {Wcam300A,"Mustek Wcamm300A 2"}, {CreativeVista3b,"Creative Webcam Vista 0x403b"}, {VeoStingray1, "Veo Stingray 1"}, {VeoStingray2, "Veo Stingray 2"}, {TyphoonWebshotIIUSB300k," Typhoon Webshot II"}, {-1, NULL}};#if LINUX_VERSION_CODE > KERNEL_VERSION(2,3,0)static __devinitdata struct usb_device_id device_table[] = { {USB_DEVICE (0x0733, 0x0430)}, /* Intel PC Camera Pro */ {USB_DEVICE (0x0733, 0x0401)}, /* Intel Create and Share */ {USB_DEVICE (0x99FA, 0x8988)}, /* Grandtec V.cap */ {USB_DEVICE (0x0733, 0x0402)}, /* ViewQuest M318B */ {USB_DEVICE (0x0733, 0x0110)}, /* ViewQuest VQ110 */ {USB_DEVICE (0x040A, 0x0002)}, /* Kodak DVC-325 */ {USB_DEVICE (0x055f, 0xc420)}, /* Mustek gSmart Mini 2 */ {USB_DEVICE (0x055f, 0xc520)}, /* Mustek gSmart Mini 3 */ {USB_DEVICE (0x041E, 0x400A)}, /* Creative PC-CAM 300 */ {USB_DEVICE (0x084D, 0x0003)}, /* D-Link DSC-350 */ {USB_DEVICE (0x041E, 0x400B)}, /* Creative PC-CAM 600 */ {USB_DEVICE (0x8086, 0x0630)}, /* Intel Pocket PC Camera */ {USB_DEVICE (0x8086, 0x0110)}, /* Intel Easy PC Camera */ {USB_DEVICE (0x0506, 0x00df)}, /* 3Com HomeConnect Lite */ {USB_DEVICE (0x040a, 0x0300)}, /* Kodak EZ200 */ {USB_DEVICE (0x04fc, 0x504b)}, /* Maxell MaxPocket LE 1.3 */ {USB_DEVICE (0x08ca, 0x2008)}, /* Aiptek Mini PenCam 2 M */ {USB_DEVICE (0x08ca, 0x0104)}, /* Aiptek PocketDVII 1.3 */ {USB_DEVICE (0x08ca, 0x2018)}, /* Aiptek Pencam SD 2M */ {USB_DEVICE (0x04fc, 0x504a)}, /* Aiptek Mini PenCam 1.3 */ {USB_DEVICE (0x055f, 0xc530)}, /* Mustek Gsmart LCD 3 */ {USB_DEVICE (0x055f, 0xc650)}, /* Mustek MDC5500Z */ {USB_DEVICE (0x052b, 0x1513)}, /* Megapix V4 */ {USB_DEVICE (0x08ca, 0x0103)}, /* Aiptek PocketDV */ {USB_DEVICE (0x0af9, 0x0010)}, /* Hama USB Sightcam 100 */ {USB_DEVICE (0x1776, 0x501c)}, /* Arowana 300K CMOS Camera */ {USB_DEVICE (0x08ca, 0x0106)}, /* Aiptek Pocket DV3100+ */ {USB_DEVICE (0x08ca, 0x2010)}, /* Aiptek PocketCam 3M */ {USB_DEVICE (0x0458, 0x7004)}, /* Genius VideoCAM Express V2 */ {USB_DEVICE (0x04fc, 0x0561)}, /* Flexcam 100 */ {USB_DEVICE (0x055f, 0xc430)}, /* Mustek Gsmart LCD 2 */ {USB_DEVICE (0x04fc, 0xffff)}, /* Pure DigitalDakota */ {USB_DEVICE (0xabcd, 0xcdee)}, /* Petcam */ {USB_DEVICE (0x04a5, 0x3008)}, /* Benq DC 1500 */ {USB_DEVICE (0x046d, 0x0960)}, /* Logitech Inc. ClickSmart 420 */ {USB_DEVICE (0x046d, 0x0901)}, /* Logitech Inc. ClickSmart 510 */ {USB_DEVICE (0x04a5, 0x3003)}, /* Benq DC 1300 */ {USB_DEVICE (0x0af9, 0x0011)}, /* Hama USB Sightcam 100 */ {USB_DEVICE (0x055f, 0xc440)}, /* Mustek DV 3000 */ {USB_DEVICE (0x041e, 0x4013)}, /* Creative Pccam750 */ {USB_DEVICE (0x060b, 0xa001)}, /* Maxell Compact Pc PM3 */ {USB_DEVICE (0x04a5, 0x300a)}, /* Benq DC3410 */ {USB_DEVICE (0x04a5, 0x300c)}, /* Benq DC1016 */ {USB_DEVICE (0x0461, 0x0815)}, /* Micro Innovation IC200 */ {USB_DEVICE (0x046d, 0x0890)}, /* Logitech QuickCam traveler */ {USB_DEVICE (0x10fd, 0x7e50)}, /* FlyCam Usb 100 */ {USB_DEVICE (0x06e1, 0xa190)}, /* ADS Instant VCD */ {USB_DEVICE (0x055f, 0xc220)}, /* Gsmart Mini */ {USB_DEVICE (0x0733, 0x2211)}, /* Jenoptik jdc 21 LCD */ {USB_DEVICE (0x046d, 0x0900)}, /* Logitech Inc. ClickSmart 310 */ {USB_DEVICE (0x055f, 0xc360)}, /* Mustek DV4000 Mpeg4 */ {USB_DEVICE (0x08ca, 0x2024)}, /* Aiptek DV3500 Mpeg4 */ {USB_DEVICE (0x046d, 0x0905)}, /* Logitech ClickSmart820 */ {USB_DEVICE (0x05da, 0x1018)}, /* Digital Dream Enigma 1.3 */ {USB_DEVICE (0x0c45, 0x6025)}, /* Xcam Shanga */ {USB_DEVICE (0x0733, 0x1311)}, /* Digital Dream Epsilon 1.3 */ {USB_DEVICE (0x041e, 0x401d)}, /* Creative Webcam NX ULTRA */ {USB_DEVICE (0x08ca, 0x2016)}, /* Aiptek PocketCam 2 Mega */ {USB_DEVICE (0x0734, 0x043b)}, /* 3DeMon USB Capture aka */ {USB_DEVICE (0x041E, 0x4018)}, /* Creative Webcam Vista (PD1100) */ {USB_DEVICE (0x0546, 0x3273)}, /* Polaroid PDC2030*/ {USB_DEVICE (0x041e, 0x401f)}, /* Creative Webcam Notebook PD1171*/ {USB_DEVICE (0x041e, 0x4017)}, /* Creative Webcam Mobile PD1090*/ {USB_DEVICE (0x046d, 0x08a2)}, /* Labtec Webcam Pro*/ {USB_DEVICE (0x055f, 0xd003)}, /* Mustek WCam300A*/ {USB_DEVICE (0x0458, 0x7007)}, /* Genius VideoCam V2*/ {USB_DEVICE (0x0458, 0x700c)}, /* Genius VideoCam V3*/ {USB_DEVICE (0x0458, 0x700f)}, /* Genius VideoCam Web V2*/ {USB_DEVICE (0x041e, 0x401e)}, /* Creative Nx Pro*/ {USB_DEVICE (0x0c45, 0x6029)}, /* spcaCam@150 */ {USB_DEVICE (0x0c45, 0x6009)}, /* spcaCam@120*/ {USB_DEVICE (0x0c45, 0x600d)}, /* spcaCam@120*/ {USB_DEVICE (0x04fc, 0x5330)}, /* Digitrex 2110*/ {USB_DEVICE (0x055f, 0xc540)}, /* Gsmart D30*/ {USB_DEVICE (0x0ac8, 0x301b)}, /* Asam Vimicro*/ {USB_DEVICE (0x041e, 0x403a)}, /* Creative Nx Pro 2*/ {USB_DEVICE (0x055f, 0xc211)}, /* Kowa Bs888e Microcamera*/ {USB_DEVICE (0x0ac8, 0x0302)}, /* Z-star Vimicro zc0302*/ {USB_DEVICE (0x0572, 0x0041)}, /* Creative Notebook cx11646*/ {USB_DEVICE (0x08ca, 0x2022)}, /* Aiptek Slim 3200*/ {USB_DEVICE (0x046d, 0x0921)}, /* Labtec Webcam */ {USB_DEVICE (0x046d, 0x0920)}, /* QC Express */ {USB_DEVICE (0x0923, 0x010f)}, /* ICM532 cams */ {USB_DEVICE (0x055f, 0xc200)}, /* Mustek Gsmart 300 */ {USB_DEVICE (0x0733, 0x2221)}, /* Mercury Digital Pro 3.1p*/ {USB_DEVICE (0x041e, 0x4036)}, /* Creative Live ! */ {USB_DEVICE (0x055f, 0xc005)}, /* Mustek Wcam300A */ {USB_DEVICE (0x041E, 0x403b)}, /* Creative Webcam Vista (VF0010) */ {USB_DEVICE (0x0545, 0x8333)}, /* Veo Stingray */ {USB_DEVICE (0x0545, 0x808b)}, /* Veo Stingray */ {USB_DEVICE (0x10fd, 0x8050)}, /* Typhoon Webshot II USB 300k */ {USB_DEVICE (0x0000, 0x0000)}, /* MystFromOri Unknow Camera */ {} /* Terminating entry */};MODULE_DEVICE_TABLE (usb, device_table);/* We also setup the function for getting page number from the virtual address */#define VIRT_TO_PAGE virt_to_page #else /* LINUX_VERSION_CODE > KERNEL_VERSION(2,3,0) */#define VIRT_TO_PAGE MAP_NR #endif /* LINUX_VERSION_CODE > KERNEL_VERSION(2,3,0) *//* * Let's include the initialization data for each camera type */#include "spcausb.h"#include "spca500_init.h"#include "spca501_init.h"#include "spca504_init.h"#include "spca505_init.h"#include "spca506.h"#include "spca508_init.h"#include "spca561.h"#include "spcai2c_init.h"#include "spca533.h"#include "spca536.h"#include "sonix.h"#include "zc3xx.h"#include "cx11646.h"#include "tv8532.h"/* Mode list for spca50x on external input *//* Must be in descending order as the closest match which is equal or smaller than * the requested size is returned */#define GET_EXT_MODES(bridge) (\ (bridge) == BRIDGE_SPCA500 ? spca500_ext_modes : \ (bridge) == BRIDGE_SPCA501 ? spca501_ext_modes : \ (bridge) == BRIDGE_SPCA504 ? spca504_ext_modes : \ (bridge) == BRIDGE_SPCA504B ? spca504_ext_modes : \ (bridge) == BRIDGE_SPCA504_PCCAM600 ? spca504_pccam600_ext_modes : \ (bridge) == BRIDGE_SPCA506 ? spca506_ext_modes : \ (bridge) == BRIDGE_SPCA508 ? spca508_ext_modes : \ (bridge) == BRIDGE_SPCA533 ? spca533_ext_modes : \ (bridge) == BRIDGE_SPCA561 ? spca561_ext_modes : \ (bridge) == BRIDGE_SPCA536 ? spca536_ext_modes : \ (bridge) == BRIDGE_SONIX ? sonix_ext_modes : \ (bridge) == BRIDGE_ZC3XX ? zc3xx_ext_modes : \ (bridge) == BRIDGE_CX11646 ? cx11646_ext_modes : \ (bridge) == BRIDGE_TV8532 ? tv8532_ext_modes : \ spca50x_ext_modes)/* code is used for harware low nibble and software hight nibble */static __u16 cx11646_ext_modes[][6] = { /* x , y , Code, x multiplier, y multiplier, pipe */ {640, 480, 0x00, 0, 0, 1023}, // altersetting 7 endpoint 0x01 {352, 288, 0x01, 0, 0, 1023}, {320, 240, 0x02, 0, 0, 1023}, {176, 144, 0x03, 0, 0, 640}, // alt 4 // {160, 120, 0x04, 0, 0, 512}, // alt 3 only works with external decoding {0, 0, 0, 0, 0, 0}};static __u16 zc3xx_ext_modes[][6] = { /* x , y , Code, x multiplier, y multiplier, pipe */ {640, 480, 0x00, 0, 0, 1023}, // altersetting 7 endpoint 0x01 {352, 288, 0x10, 0, 0, 1023}, {320, 240, 0x01, 0, 0, 1023}, {176, 144, 0x11, 0, 0, 1023}, {0, 0, 0, 0, 0, 0}};static __u16 sonix_ext_modes[][6] = { /* x , y , Code, x multiplier, y multiplier, pipe */ {640, 480, 0x00, 0, 0, 1023}, {352, 288, 0x00, 0, 0, 1023}, {320, 240, 0x01, 0, 0, 1023}, {176, 144, 0x01, 0, 0, 1023}, {160, 120, 0x02, 0, 0, 1023}, {0, 0, 0, 0, 0, 0}};static __u16 spca500_ext_modes[][6] = { /* x , y , Code, x multiplier, y multiplier, pipe */ {640, 480, 0x00, 40, 30, 1023}, {352, 288, 0x00, 22, 18, 1023}, {320, 240, 0x01, 40, 30, 1023}, {176, 144, 0x01, 22, 18, 1023}, /* 160x120 disable jpeg %16 */ {0, 0, 0, 0, 0, 0}};static __u16 spca501_ext_modes[][6] = { /* x , y , Code, Value (6), Value (7), pipe */ {640, 480, 0, 0x94, 0x004A, 1023}, {352, 288, 0x10, 0x94, 0x004A, 1023}, {320, 240, 0, 0x94, 0x104A, 896}, {176, 144, 0x10, 0x94, 0x104A, 896}, {160, 120, 0, 0x94, 0x204A, 384}, {0, 0, 0, 0, 0}};static __u16 spca533_ext_modes[][6] ={ /* x , y , Code, Value (6), Value (7), pipe */ //{ 640, 480, 0x41, 1, 0, 1023 }, { 464, 480, 0x01, 0, 0, 1023 },//PocketDVII unscaled resolution aspect ratio need to expand x axis { 464, 352, 0x01, 0, 0, 1023 },//Gsmart LCD3 feature good aspect ratio { 384, 288, 0x11, 5, 4, 1023 }, { 352, 288, 0x11, 7, 4, 1023 }, { 320, 240, 0x02, 0, 0, 1023 }, { 192, 144, 0x12, 8, 6, 1023 }, { 176, 144, 0x12, 9, 6, 1023 }, //{ 160, 120, 0x22, 1, 1, 1023 }, //{ 320, 128, 0x03, 0, 0, 1023 }, /* don't work with megapix V4*/ { 0, 0, 0, 0, 0 }};static __u16 spca536_ext_modes[][6] ={ /* x , y , Code, Value (6), Value (7), pipe */ { 640, 480, 0x01, 1, 0, 1023 }, //{ 464, 480, 0x01, 0, 0, 1023 }, //{ 464, 352, 0x01, 0, 0, 1023 }, { 384, 288, 0x11, 5, 4, 1023 }, { 352, 288, 0x11, 7, 4, 1023 }, { 320, 240, 0x02, 0, 0, 896 }, { 192, 144, 0x12, 8, 6, 896 }, { 176, 144, 0x12, 9, 6, 896 }, { 0, 0, 0, 0, 0 }};static __u16 spca504_ext_modes[][6] ={ /* x , y , Code, Value (6), Value (7), pipe */ { 640, 480, 0x01, 0, 0, 1023 }, { 384, 288, 0x11, 16, 12, 1023 }, { 352, 288, 0x11, 18, 12, 1023 }, { 320, 240, 0x02, 0, 0, 896 }, { 192, 144, 0x12, 8, 6, 896 }, { 176, 144, 0x12, 9, 6, 896 }, //{ 160, 120, 0x22, 1, 1, 896 }, { 0, 0, 0, 0, 0 }}; static __u16 spca504_pccam600_ext_modes[][6] ={ /* x , y , Code, Value (6), Value (7), pipe */ { 1024, 768, 0x00, 0, 0, 1023 }, { 640, 480, 0x01, 1, 0, 1023 }, { 352, 288, 0x02, 2, 0, 896 }, { 320, 240, 0x03, 3, 0, 896 }, { 176, 144, 0x04, 4, 0, 768 },/* { 160, 120, 0x05, 5, 0, 768 }, */ { 0, 0, 0, 0, 0 }};static __u16 spca561_ext_modes[][6] ={ { 352, 288, 0x00, 0x27, 0x00, 1023}, { 320, 240, 0x01, 0x27, 0x00, 1023}, //{ 176, 144, 0x11, 0x27, 0x00, 1023}, //{ 160, 120, 0x11, 0x27, 0x00, 1023}, { 176, 144, 0x02, 0x23, 0x00, 1023}, // software mode hardware seem buggy slow shift in video { 160, 120, 0x03, 0x23, 0x00, 1023}, { 0, 0, 0, 0, 0 }};/* default value used for spca505 and spca505b */static __u16 spca50x_ext_modes[][6] ={ /* x , y , Code, Value (6), Value (7), pipe */ { 640, 480, 0, 0x10, 0x10, 1023 }, /* Tested spca505b+VGA sensor */ { 352, 288, 1, 0x1a, 0x1a, 1023 }, /* Tested */ { 320, 240, 2, 0x1c, 0x1d, 896 }, /* Tested 20:01:2004*/ { 176, 144, 4, 0x34, 0x34, 512 }, /* Tested */ { 160, 120, 5, 0x40, 0x40, 384 }, /* Tested */ { 0, 0, 0, 0, 0 }};static __u16 spca506_ext_modes[][6] ={ /* In this table, element 3 (clk) controls the * clock, and gets written to 0x8700. */ /* x , y , Code, clk, n/a, pipe */ { 640, 480, 0x00, 0x10, 0x10, 1023}, { 352, 288, 0x01, 0x1a, 0x1a, 1023}, { 320, 240, 0x02, 0x1c, 0x1c, 1023},//896 { 176, 144, 0x04, 0x34, 0x34, 1023}, { 160, 120, 0x05, 0x40, 0x40, 1023}, { 0, 0, 0, 0, 0 }};// 1a 1b 20 static __u16 spca508_ext_modes[][6] ={ /* In this table, element 3 (clk) controls the * clock, and gets written to 0x8700. */ /* x , y , Code, clk, n/a, pipe */ { 352, 288, 0x00, 0x28, 0x00, 1023}, { 320, 240, 0x01, 0x28, 0x00, 1023}, { 176, 144, 0x02, 0x23, 0x00, 1023}, { 160, 120, 0x03, 0x23, 0x00, 1023}, { 0, 0, 0, 0, 0 }};static __u16 tv8532_ext_modes[][6] = { /* x , y , Code, clk, n/a, pipe */ {352, 288, 0x00, 0x28, 0x00, 1023}, {320, 240, 0x10, 0x28, 0x00, 1023}, {176, 144, 0x01, 0x23, 0x00, 1023}, /*{160, 120, 0x03, 0x23, 0x00, 1023},*/ {0, 0, 0, 0, 0}};#ifdef CONFIG_PROC_FS/* Not sure what we should do with this. I think it is V4L level 2 stuff *//* Currently only use RGB24 */static struct palette_list plist[] = { { VIDEO_PALETTE_GREY, "GREY" }, { VIDEO_PALETTE_HI240, "HI240" }, { VIDEO_PALETTE_RGB565, "RGB565" }, { VIDEO_PALETTE_RGB24, "RGB24" }, { VIDEO_PALETTE_RGB32, "RGB32" }, { VIDEO_PALETTE_RGB555, "RGB555" }, { VIDEO_PALETTE_YUV422, "YUV422" }, { VIDEO_PALETTE_YUYV, "YUYV" }, { VIDEO_PALETTE_UYVY, "UYVY" }, { VIDEO_PALETTE_YUV420, "YUV420" }, { VIDEO_PALETTE_YUV411, "YUV411" }, { VIDEO_PALETTE_RAW, "RAW" }, { VIDEO_PALETTE_YUV422P, "YUV422P" }, { VIDEO_PALETTE_YUV411P, "YUV411P" }, { VIDEO_PALETTE_YUV420P, "YUV420P" }, { VIDEO_PALETTE_YUV410P, "YUV410P" }, { VIDEO_PALETTE_RAW_JPEG , "RJPG" }, { VIDEO_PALETTE_JPEG , "JPEG" }, { -1, NULL }};#endif /* CONFIG_PROC_FS *//* struct for the tasklets */struct spca50x_frame *taskletframe;void outpict_do_tasklet (unsigned long ptr); DECLARE_TASKLET (outpicttasklet,outpict_do_tasklet,(unsigned long)&taskletframe);/********************************************************************** * * Memory management * * This is a shameless copy from the USB-cpia driver (linux kernel
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -