📄 spca508_init.h
字号:
0000: 08 */ /* 49739 2023 */ { 0, 0x0008, 0x8802 }, /* 49764 2024 */ { 0, 0x0049, 0x8801 }, /* 49789 2025 */ { 0, 0x0084, 0x8800 }, /* 49812 2026 */ /* READ { 0, 0x0001, 0x8803 } -> 0000: 00 */ /* 49836 2027 */ /* READ { 0, 0x0001, 0x8803 } -> 0000: 00 */ /* 49860 2028 */ /* READ { 0, 0x0001, 0x8802 } -> 0000: 08 */ /* 49886 2029 */ { 0, 0x0008, 0x8802 }, /* 49911 2030 */ { 0, 0x004a, 0x8801 }, /* 49936 2031 */ { 0, 0x0084, 0x8800 }, /* 49959 2032 */ /* READ { 0, 0x0001, 0x8803 } -> 0000: 00 */ /* 49983 2033 */ /* READ { 0, 0x0001, 0x8803 } -> 0000: 00 */ /* 50007 2034 */ /* READ { 0, 0x0001, 0x8802 } -> 0000: 08 */ /* 50033 2035 */ { 0, 0x0008, 0x8802 }, /* 50058 2036 */ { 0, 0x004b, 0x8801 }, /* 50083 2037 */ { 0, 0x0084, 0x8800 }, /* 50106 2038 */ /* READ { 0, 0x0001, 0x8803 } -> 0000: 00 */ // --------------------------------------- /* 50132 2039 */ { 0, 0x0012, 0x8700 }, // Clock speed 48Mhz/(2+2)/2= 6 Mhz /* 50157 2040 */ { 0, 0x0000, 0x8701 }, // CKx1 clock delay adj /* 50182 2041 */ { 0, 0x0000, 0x8701 }, // CKx1 clock delay adj /* 50207 2042 */ { 0, 0x0001, 0x870c }, // CKOx2 output // --------------------------------------- /* 50232 2043 */ { 0, 0x0080, 0x8600 }, // Line memory read counter (L) /* 50257 2044 */ { 0, 0x0001, 0x8606 }, // reserved /* 50282 2045 */ { 0, 0x0064, 0x8607 }, // Line memory read counter (H) 0x6480=25,728 /* 50307 2046 */ { 0, 0x002a, 0x8601 }, // CDSP sharp interpolation mode, line sel for color sep, edge enhance enab /* 50332 2047 */ { 0, 0x0000, 0x8602 }, // optical black level for user settng = 0 /* 50357 2048 */ { 0, 0x0080, 0x8600 }, // Line memory read counter (L) /* 50382 2049 */ { 0, 0x000a, 0x8603 }, // optical black level calc mode: auto; optical black offset = 10 /* 50407 2050 */ { 0, 0x00df, 0x865b }, // Horiz offset for valid pixels (L)=0xdf /* 50432 2051 */ { 0, 0x0012, 0x865c }, // Vert offset for valid lines (L)=0x12 // The following two lines seem to be the "wrong" resolution. // But perhaps these indicate the actual size of the sensor // rather than the size of the current video mode. /* 50457 2052 */ { 0, 0x0058, 0x865d }, // Horiz valid pixels (*4) (L) = 352 /* 50482 2053 */ { 0, 0x0048, 0x865e }, // Vert valid lines (*4) (L) = 288 /* 50507 2054 */ { 0, 0x0015, 0x8608 }, // A11 Coef ... /* 50532 2055 */ { 0, 0x0030, 0x8609 }, /* 50557 2056 */ { 0, 0x00fb, 0x860a }, /* 50582 2057 */ { 0, 0x003e, 0x860b }, /* 50607 2058 */ { 0, 0x00ce, 0x860c }, /* 50632 2059 */ { 0, 0x00f4, 0x860d }, /* 50657 2060 */ { 0, 0x00eb, 0x860e }, /* 50682 2061 */ { 0, 0x00dc, 0x860f }, /* 50707 2062 */ { 0, 0x0039, 0x8610 }, /* 50732 2063 */ { 0, 0x0001, 0x8611 }, // R offset for white balance ... /* 50757 2064 */ { 0, 0x0000, 0x8612 }, /* 50782 2065 */ { 0, 0x0001, 0x8613 }, /* 50807 2066 */ { 0, 0x0000, 0x8614 }, /* 50832 2067 */ { 0, 0x005b, 0x8651 }, // R gain for white balance ... /* 50857 2068 */ { 0, 0x0040, 0x8652 }, /* 50882 2069 */ { 0, 0x0060, 0x8653 }, /* 50907 2070 */ { 0, 0x0040, 0x8654 }, /* 50932 2071 */ { 0, 0x0000, 0x8655 }, /* 50957 2072 */ { 0, 0x0001, 0x863f }, // Fixed gamma correction enable, USB control, lum filter disable, lum noise clip disable /* 50982 2073 */ { 0, 0x00a1, 0x8656 }, // Window1 size 256x256, Windows2 size 64x64, gamma look-up disable, new edge enhancement enable /* 51007 2074 */ { 0, 0x0018, 0x8657 }, // Edge gain high thresh /* 51032 2075 */ { 0, 0x0020, 0x8658 }, // Edge gain low thresh /* 51057 2076 */ { 0, 0x000a, 0x8659 }, // Edge bandwidth high threshold /* 51082 2077 */ { 0, 0x0005, 0x865a }, // Edge bandwidth low threshold //-------------------------------- /* 51107 2078 */ { 0, 0x0030, 0x8112 }, // Video drop enable, ISO streaming enable /* 51130 2079 */ /* READ { 0, 0x0001, 0x8803 } -> 0000: 00 */ /* 51154 2080 */ /* READ { 0, 0x0001, 0x8802 } -> 0000: 08 */ /* 51180 2081 */ { 0, 0xa908, 0x8802 }, /* 51205 2082 */ { 0, 0x0034, 0x8801 }, // SSI reg addr /* 51230 2083 */ { 0, 0x00ca, 0x8800 }, // SSI data to write /* 51253 2084 */ /* READ { 0, 0x0001, 0x8803 } -> 0000: 00 */ /* 51277 2085 */ /* READ { 0, 0x0001, 0x8803 } -> 0000: 00 */ /* 51301 2086 */ /* READ { 0, 0x0001, 0x8802 } -> 0000: 08 */ /* 51327 2087 */ { 0, 0x1f08, 0x8802 }, /* 51352 2088 */ { 0, 0x0006, 0x8801 }, /* 51377 2089 */ { 0, 0x0080, 0x8800 }, /* 51400 2090 */ /* READ { 0, 0x0001, 0x8803 } -> 0000: 00 */ //----- Read back coefs we wrote earlier. /* 51424 2091 */ /* READ { 0, 0x0000, 0x8608 } -> 0000: 15 */ /* 51448 2092 */ /* READ { 0, 0x0000, 0x8609 } -> 0000: 30 */ /* 51472 2093 */ /* READ { 0, 0x0000, 0x860a } -> 0000: fb */ /* 51496 2094 */ /* READ { 0, 0x0000, 0x860b } -> 0000: 3e */ /* 51520 2095 */ /* READ { 0, 0x0000, 0x860c } -> 0000: ce */ /* 51544 2096 */ /* READ { 0, 0x0000, 0x860d } -> 0000: f4 */ /* 51568 2097 */ /* READ { 0, 0x0000, 0x860e } -> 0000: eb */ /* 51592 2098 */ /* READ { 0, 0x0000, 0x860f } -> 0000: dc */ /* 51616 2099 */ /* READ { 0, 0x0000, 0x8610 } -> 0000: 39 */ /* 51640 2100 */ /* READ { 0, 0x0001, 0x8803 } -> 0000: 00 */ /* 51664 2101 */ /* READ { 0, 0x0001, 0x8802 } -> 0000: 08 */ /* 51690 2102 */ { 0, 0xb008, 0x8802 }, /* 51715 2103 */ { 0, 0x0006, 0x8801 }, /* 51740 2104 */ { 0, 0x007d, 0x8800 }, /* 51763 2105 */ /* READ { 0, 0x0001, 0x8803 } -> 0000: 00 */#if 0 /* experimental. dark version. */ { 0, 0xba, 0x8705}, /* total pixel clocks per hsync cycle (L) */ { 0, 0x00, 0x8706}, /* total pixel clocks per hsync cycle (H in 2:0) */ { 0, 0x5a, 0x8707}, /* total pixel clocks per hsync blank period (L) */#elif 0 /* experimental. factory default. */ { 0, 0x8e, 0x8705}, /* total pixel clocks per hsync cycle (L) */ { 0, 0x03, 0x8706}, /* total pixel clocks per hsync cycle (H in 2:0) */ { 0, 0x5a, 0x8707}, /* total pixel clocks per hsync blank period (L) */#elif 0 /* experimental. light. */ { 0, 0xba, 0x8705}, /* total pixel clocks per hsync cycle (L) */ { 0, 0x01, 0x8706}, /* total pixel clocks per hsync cycle (H in 2:0) */ { 0, 0x10, 0x8707}, /* total pixel clocks per hsync blank period (L) */#endif#if 1 // This chunk is seemingly redundant with // earlier commands (A11 Coef...), but if I disable it, // the image appears too dark. Maybe there was some kind of // reset since the earlier commands, so this is necessary again. /* 51789 2106 */ { 0, 0x0015, 0x8608 }, /* 51814 2107 */ { 0, 0x0030, 0x8609 }, /* 51839 2108 */ { 0, 0xfffb, 0x860a }, /* 51864 2109 */ { 0, 0x003e, 0x860b }, /* 51889 2110 */ { 0, 0xffce, 0x860c }, /* 51914 2111 */ { 0, 0xfff4, 0x860d }, /* 51939 2112 */ { 0, 0xffeb, 0x860e }, /* 51964 2113 */ { 0, 0xffdc, 0x860f }, /* 51989 2114 */ { 0, 0x0039, 0x8610 }, /* 52014 2115 */ { 0, 0x0018, 0x8657 },#endif /* 52039 2116 */ { 0, 0x0000, 0x8508 }, // Disable compression. // Previous line was: /* 52039 2116 */ { 0, 0x0021, 0x8508 }, // Enable compression. /* 52064 2117 */ { 0, 0x0032, 0x850b }, // compression stuff /* 52089 2118 */ { 0, 0x0003, 0x8509 }, // compression stuff /* 52114 2119 */ { 0, 0x0011, 0x850a }, // compression stuff /* 52139 2120 */ { 0, 0x0021, 0x850d }, // compression stuff /* 52164 2121 */ { 0, 0x0010, 0x850c }, // compression stuff /* 52189 2122 */ { 0, 0x0003, 0x8500 }, // *** Video mode: 160x120 /* 52214 2123 */ { 0, 0x0001, 0x8501 }, // Hardware-dominated snap control /* 52239 2124 */ { 0, 0x0061, 0x8656 }, // Window1 size 128x128, Windows2 size 128x128, gamma look-up disable, new edge enhancement enable /* 52264 2125 */ { 0, 0x0018, 0x8617 }, // Window1 start X (*2) /* 52289 2126 */ { 0, 0x0008, 0x8618 }, // Window1 start Y (*2) /* 52314 2127 */ { 0, 0x0061, 0x8656 }, // Window1 size 128x128, Windows2 size 128x128, gamma look-up disable, new edge enhancement enable /* 52339 2128 */ { 0, 0x0058, 0x8619 }, // Window2 start X (*2) /* 52364 2129 */ { 0, 0x0008, 0x861a }, // Window2 start Y (*2) /* 52389 2130 */ { 0, 0x00ff, 0x8615 }, // High lum thresh for white balance /* 52414 2131 */ { 0, 0x0000, 0x8616 }, // Low lum thresh for white balance /* 52439 2132 */ { 0, 0x0012, 0x8700 }, // Clock speed 48Mhz/(2+2)/2= 6 Mhz /* 52464 2133 */ { 0, 0x0012, 0x8700 }, // Clock speed 48Mhz/(2+2)/2= 6 Mhz /* 52487 2134 */ /* READ { 0, 0x0000, 0x8656 } -> 0000: 61 */ /* 52513 2135 */ { 0, 0x0028, 0x8802 }, // 375 Khz SSI clock, SSI r/w sync with VSYNC /* 52536 2136 */ /* READ { 0, 0x0001, 0x8803 } -> 0000: 00 */ /* 52560 2137 */ /* READ { 0, 0x0001, 0x8802 } -> 0000: 28 */ /* 52586 2138 */ { 0, 0x1f28, 0x8802 }, // 375 Khz SSI clock, SSI r/w sync with VSYNC /* 52611 2139 */ { 0, 0x0010, 0x8801 }, // SSI reg addr /* 52636 2140 */ { 0, 0x003e, 0x8800 }, // SSI data to write /* 52659 2141 */ /* READ { 0, 0x0001, 0x8803 } -> 0000: 00 */ /* 52685 2142 */ { 0, 0x0028, 0x8802 }, /* 52708 2143 */ /* READ { 0, 0x0001, 0x8803 } -> 0000: 00 */ /* 52732 2144 */ /* READ { 0, 0x0001, 0x8802 } -> 0000: 28 */ /* 52758 2145 */ { 0, 0x1f28, 0x8802 }, /* 52783 2146 */ { 0, 0x0000, 0x8801 }, /* 52808 2147 */ { 0, 0x001f, 0x8800 }, /* 52831 2148 */ /* READ { 0, 0x0001, 0x8803 } -> 0000: 00 */ /* 52857 2149 */ { 0, 0x0001, 0x8602 }, // optical black level for user settning = 1#if 0 // NOTE: Code like this case lets this driver (often) work // in 352x288 resolution, apparently by slowing down the // clock. /* 52464 2133 */ { 0, 0x002F, 0x8700 }, // Clock speed #else // Original: /* 52882 2150 */ { 0, 0x0023, 0x8700 }, // Clock speed 48Mhz/(3+2)/4= 2.4 Mhz#endif /* 52907 2151 */ { 0, 0x000f, 0x8602 }, // optical black level for user settning = 15 /* 52932 2152 */ { 0, 0x0028, 0x8802 }, /* 52955 2153 */ /* READ { 0, 0x0001, 0x8803 } -> 0000: 00 */ /* 52979 2154 */ /* READ { 0, 0x0001, 0x8802 } -> 0000: 28 */ /* 53005 2155 */ { 0, 0x1f28, 0x8802 }, /* 53030 2156 */ { 0, 0x0010, 0x8801 }, /* 53055 2157 */ { 0, 0x007b, 0x8800 }, /* 53078 2158 */ /* READ { 0, 0x0001, 0x8803 } -> 0000: 00 */ /* 53104 2159 */ { 0, 0x002f, 0x8651 }, // R gain for white balance ... /* 53129 2160 */ { 0, 0x0080, 0x8653 }, /* 53152 2161 */ /* READ { 0, 0x0000, 0x8655 } -> 0000: 00 */ /* 53178 2162 */ { 0, 0x0000, 0x8655 }, /* 53203 2163 */ { 0, 0x0030, 0x8112 }, // Video drop enable, ISO streaming enable /* 53228 2164 */ { 0, 0x0020, 0x8112 }, // Video drop enable, ISO streaming disable /* 53252 2165 */ /* UNKNOWN DIRECTION (URB_FUNCTION_SELECT_INTERFACE: (ALT=0) )*/ { 0,0,0 }};/* * Data to initialize the camera using the internal CCD */static __u16 spca508_open_data[][3]={ /* line bmRequest,value,index */ {0,0,0}};/* * Initialization data for Intel EasyPC Camera CS110 */static __u16 spca508cs110_init_data[][3] ={ { 0, 0x0000, 0x870b }, /* Reset CTL3 */ { 0, 0x0003, 0x8111 }, /* Soft Reset compression, memory, TG & CDSP */ { 0, 0x0000, 0x8111 }, /* Normal operation on reset */ { 0, 0x0090, 0x8110 }, /* External Clock 2x & Synchronous Serial Interface Output */ { 0, 0x0020, 0x8112 }, /* Video Drop packet enable */ { 0, 0x0000, 0x8114 }, /* Software GPIO output data */ { 0, 0x0001, 0x8114 }, { 0, 0x0001, 0x8114 }, { 0, 0x0001, 0x8114 }, { 0, 0x0003, 0x8114 }, /* Initial sequence Synchronous Serial Interface */ { 0, 0x000f, 0x8402 }, /* Memory bank Address */ { 0, 0x0000, 0x8403 }, /* Memory bank Address */ { 0, 0x00ba, 0x8804 }, /* SSI Slave address */ { 0, 0x0010, 0x8802 }, /* 93.75kHz SSI Clock Two DataByte */ { 0, 0x0010, 0x8802 }, /* 93.75kHz SSI Clock two DataByte */ { 0, 0x0001, 0x8801 }, { 0, 0x000a, 0x8805 }, /* a - NWG: Dunno what this is about */ { 0, 0x0000, 0x8800 }, { 0, 0x0010, 0x8802 }, { 0, 0x0002, 0x8801 }, { 0, 0x0000, 0x8805 }, { 0, 0x0000, 0x8800 }, { 0, 0x0010, 0x8802 }, { 0, 0x0003, 0x8801 }, { 0, 0x0027, 0x8805 }, { 0, 0x0001, 0x8800 }, { 0, 0x0010, 0x8802 }, { 0, 0x0004, 0x8801 }, { 0, 0x0065, 0x8805 }, { 0, 0x0001, 0x8800 }, { 0, 0x0010, 0x8802 }, { 0, 0x0005, 0x8801 }, { 0, 0x0003, 0x8805 }, { 0, 0x0000, 0x8800 }, { 0, 0x0010, 0x8802 }, { 0, 0x0006, 0x8801 }, { 0, 0x001c, 0x8805 }, { 0, 0x0000, 0x8800 }, { 0, 0x0010, 0x8802 }, { 0, 0x0007, 0x8801 }, { 0, 0x002a, 0x8805 }, { 0, 0x0000, 0x8800 }, { 0, 0x0010, 0x8802 }, { 0, 0x0002, 0x8704 }, /* External input CKIx1 */ { 0, 0x0001, 0x8606 }, /* 1 Line memory Read Counter (H) Result: (d)410 */ { 0, 0x009a, 0x8600 }, /* Line memory Read Counter (L) */ { 0, 0x0001, 0x865b }, /* 1 Horizontal Offset for Valid Pixel(L) */ { 0, 0x0003, 0x865c }, /* 3 Vertical Offset for Valid Lines(L) */ { 0, 0x0058, 0x865d }, /* 58 Horizontal Valid Pixel Window(L) */ { 0, 0x0006, 0x8660 }, /* Nibble data + input order */ { 0, 0x000a, 0x8602 }, /* Optical black level set to 0x0a *//* 1945 */ { 0, 0x0000, 0x8603 }, /* Optical black level Offset *//* 1962 */ // { 0, 0x0000, 0x8611 }, /* 0 R Offset for white Balance *//* 1963 */ // { 0, 0x0000, 0x8612 }, /* 1 Gr Offset for white Balance *//* 1964 */ // { 0, 0x0000, 0x8613 }, /* 1f B Offset for white Balance *//* 1965 */ // { 0, 0x0000, 0x8614 }, /* f0 Gb Offset for white Balance */ { 0, 0x0040, 0x8651 }, /* 2b BLUE gain for white balance good at all 60 */ { 0, 0x0030, 0x8652 }, /* 41 Gr Gain for white Balance (L) */ { 0, 0x0035, 0x8653 }, /* 26 RED gain for white balance */ { 0, 0x0035, 0x8654 }, /* 40Gb Gain for white Balance (L) */ { 0, 0x0041, 0x863f }, /* Fixed Gamma correction enabled (makes colours look better) *//* 2422 */ { 0, 0x0000, 0x8655 }, /* High bits for white balance*****brightness control*** */ { 0,0,0 }};static __u16 spca508_sightcam_init_data[][3]={/* This line seems to setup the frame/canvas */ /*368 */ {0, 0x000f, 0x8402 },/* Theese 6 lines are needed to startup the webcam */ /*398 */ {0, 0x0090, 0x8110 }, /*399 */ {0, 0x0001, 0x8114 }, /*400 */ {0, 0x0001, 0x8114 }, /*401 */ {0, 0x0001, 0x8114 }, /*402 */ {0, 0x0003, 0x8114 }, /*403 */ {0, 0x0080, 0x8804 },/* This part seems to make the pictures darker? (autobrightness?) */ /*436 */ {0, 0x0001, 0x8801 }, /*437 */ {0, 0x0004, 0x8800 }, /*439 */ {0, 0x0003, 0x8801 }, /*440 */ {0, 0x00e0, 0x8800 }, /*442 */ {0, 0x0004, 0x8801 }, /*443 */ {0, 0x00b4, 0x8800 }, /*445 */ {0, 0x0005, 0x8801 }, /*446 */ {0, 0x0000, 0x8800 }, /*448 */ {0, 0x0006, 0x8801 }, /*449 */ {0, 0x00e0, 0x8800 }, /*451 */ {0, 0x0007, 0x8801 }, /*452 */ {0, 0x000c, 0x8800 },/* This section is just needed, it probably * does something like the previous section, * but the cam won't start if it's not included. */ /*484 */ {0, 0x0014, 0x8801 }, /*485 */ {0, 0x0008, 0x8800 }, /*487 */ {0, 0x0015, 0x8801 }, /*488 */ {0, 0x0067, 0x8800 }, /*490 */ {0, 0x0016, 0x8801 }, /*491 */ {0, 0x0000, 0x8800 }, /*493 */ {0, 0x0017, 0x8801 }, /*494 */ {0, 0x0020, 0x8800 }, /*496 */ {0, 0x0018, 0x8801 }, /*497 */ {0, 0x0044, 0x8800 },/* Makes the picture darker - and the
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -