Merge branch 'master'

+3778 -3529
+25 -25
Documentation/dvb/README.dvb-usb
··· 50 0. History & News: 51 2005-06-30 - added support for WideView WT-220U (Thanks to Steve Chang) 52 2005-05-30 - added basic isochronous support to the dvb-usb-framework 53 - added support for Conexant Hybrid reference design and Nebula DigiTV USB 54 2005-04-17 - all dibusb devices ported to make use of the dvb-usb-framework 55 2005-04-02 - re-enabled and improved remote control code. 56 2005-03-31 - ported the Yakumo/Hama/Typhoon DVB-T USB2.0 device to dvb-usb. 57 2005-03-30 - first commit of the dvb-usb-module based on the dibusb-source. First device is a new driver for the 58 - TwinhanDTV Alpha / MagicBox II USB2.0-only DVB-T device. 59 60 (change from dvb-dibusb to dvb-usb) 61 2005-03-28 - added support for the AVerMedia AverTV DVB-T USB2.0 device (Thanks to Glen Harris and Jiun-Kuei Jung, AVerMedia) ··· 64 2005-02-02 - added support for the Hauppauge Win-TV Nova-T USB2 65 2005-01-31 - distorted streaming is gone for USB1.1 devices 66 2005-01-13 - moved the mirrored pid_filter_table back to dvb-dibusb 67 - - first almost working version for HanfTek UMT-010 68 - - found out, that Yakumo/HAMA/Typhoon are predecessors of the HanfTek UMT-010 69 2005-01-10 - refactoring completed, now everything is very delightful 70 - - tuner quirks for some weird devices (Artec T1 AN2235 device has sometimes a 71 - Panasonic Tuner assembled). Tunerprobing implemented. Thanks a lot to Gunnar Wittich. 72 2004-12-29 - after several days of struggling around bug of no returning URBs fixed. 73 2004-12-26 - refactored the dibusb-driver, splitted into separate files 74 - - i2c-probing enabled 75 2004-12-06 - possibility for demod i2c-address probing 76 - - new usb IDs (Compro, Artec) 77 2004-11-23 - merged changes from DiB3000MC_ver2.1 78 - - revised the debugging 79 - - possibility to deliver the complete TS for USB2.0 80 2004-11-21 - first working version of the dib3000mc/p frontend driver. 81 2004-11-12 - added additional remote control keys. Thanks to Uwe Hanke. 82 2004-11-07 - added remote control support. Thanks to David Matthews. 83 2004-11-05 - added support for a new devices (Grandtec/Avermedia/Artec) 84 - - merged my changes (for dib3000mb/dibusb) to the FE_REFACTORING, because it became HEAD 85 - - moved transfer control (pid filter, fifo control) from usb driver to frontend, it seems 86 - better settled there (added xfer_ops-struct) 87 - - created a common files for frontends (mc/p/mb) 88 2004-09-28 - added support for a new device (Unkown, vendor ID is Hyper-Paltek) 89 2004-09-20 - added support for a new device (Compro DVB-U2000), thanks 90 - to Amaury Demol for reporting 91 - - changed usb TS transfer method (several urbs, stopping transfer 92 - before setting a new pid) 93 2004-09-13 - added support for a new device (Artec T1 USB TVBOX), thanks 94 - to Christian Motschke for reporting 95 2004-09-05 - released the dibusb device and dib3000mb-frontend driver 96 97 (old news for vp7041.c) 98 2004-07-15 - found out, by accident, that the device has a TUA6010XS for 99 - PLL 100 2004-07-12 - figured out, that the driver should also work with the 101 - CTS Portable (Chinese Television System) 102 2004-07-08 - firmware-extraction-2.422-problem solved, driver is now working 103 - properly with firmware extracted from 2.422 104 - - #if for 2.6.4 (dvb), compile issue 105 - - changed firmware handling, see vp7041.txt sec 1.1 106 2004-07-02 - some tuner modifications, v0.1, cleanups, first public 107 2004-06-28 - now using the dvb_dmx_swfilter_packets, everything 108 - runs fine now 109 2004-06-27 - able to watch and switching channels (pre-alpha) 110 - - no section filtering yet 111 2004-06-06 - first TS received, but kernel oops :/ 112 2004-05-14 - firmware loader is working 113 2004-05-11 - start writing the driver
··· 50 0. History & News: 51 2005-06-30 - added support for WideView WT-220U (Thanks to Steve Chang) 52 2005-05-30 - added basic isochronous support to the dvb-usb-framework 53 + added support for Conexant Hybrid reference design and Nebula DigiTV USB 54 2005-04-17 - all dibusb devices ported to make use of the dvb-usb-framework 55 2005-04-02 - re-enabled and improved remote control code. 56 2005-03-31 - ported the Yakumo/Hama/Typhoon DVB-T USB2.0 device to dvb-usb. 57 2005-03-30 - first commit of the dvb-usb-module based on the dibusb-source. First device is a new driver for the 58 + TwinhanDTV Alpha / MagicBox II USB2.0-only DVB-T device. 59 60 (change from dvb-dibusb to dvb-usb) 61 2005-03-28 - added support for the AVerMedia AverTV DVB-T USB2.0 device (Thanks to Glen Harris and Jiun-Kuei Jung, AVerMedia) ··· 64 2005-02-02 - added support for the Hauppauge Win-TV Nova-T USB2 65 2005-01-31 - distorted streaming is gone for USB1.1 devices 66 2005-01-13 - moved the mirrored pid_filter_table back to dvb-dibusb 67 + - first almost working version for HanfTek UMT-010 68 + - found out, that Yakumo/HAMA/Typhoon are predecessors of the HanfTek UMT-010 69 2005-01-10 - refactoring completed, now everything is very delightful 70 + - tuner quirks for some weird devices (Artec T1 AN2235 device has sometimes a 71 + Panasonic Tuner assembled). Tunerprobing implemented. Thanks a lot to Gunnar Wittich. 72 2004-12-29 - after several days of struggling around bug of no returning URBs fixed. 73 2004-12-26 - refactored the dibusb-driver, splitted into separate files 74 + - i2c-probing enabled 75 2004-12-06 - possibility for demod i2c-address probing 76 + - new usb IDs (Compro, Artec) 77 2004-11-23 - merged changes from DiB3000MC_ver2.1 78 + - revised the debugging 79 + - possibility to deliver the complete TS for USB2.0 80 2004-11-21 - first working version of the dib3000mc/p frontend driver. 81 2004-11-12 - added additional remote control keys. Thanks to Uwe Hanke. 82 2004-11-07 - added remote control support. Thanks to David Matthews. 83 2004-11-05 - added support for a new devices (Grandtec/Avermedia/Artec) 84 + - merged my changes (for dib3000mb/dibusb) to the FE_REFACTORING, because it became HEAD 85 + - moved transfer control (pid filter, fifo control) from usb driver to frontend, it seems 86 + better settled there (added xfer_ops-struct) 87 + - created a common files for frontends (mc/p/mb) 88 2004-09-28 - added support for a new device (Unkown, vendor ID is Hyper-Paltek) 89 2004-09-20 - added support for a new device (Compro DVB-U2000), thanks 90 + to Amaury Demol for reporting 91 + - changed usb TS transfer method (several urbs, stopping transfer 92 + before setting a new pid) 93 2004-09-13 - added support for a new device (Artec T1 USB TVBOX), thanks 94 + to Christian Motschke for reporting 95 2004-09-05 - released the dibusb device and dib3000mb-frontend driver 96 97 (old news for vp7041.c) 98 2004-07-15 - found out, by accident, that the device has a TUA6010XS for 99 + PLL 100 2004-07-12 - figured out, that the driver should also work with the 101 + CTS Portable (Chinese Television System) 102 2004-07-08 - firmware-extraction-2.422-problem solved, driver is now working 103 + properly with firmware extracted from 2.422 104 + - #if for 2.6.4 (dvb), compile issue 105 + - changed firmware handling, see vp7041.txt sec 1.1 106 2004-07-02 - some tuner modifications, v0.1, cleanups, first public 107 2004-06-28 - now using the dvb_dmx_swfilter_packets, everything 108 + runs fine now 109 2004-06-27 - able to watch and switching channels (pre-alpha) 110 + - no section filtering yet 111 2004-06-06 - first TS received, but kernel oops :/ 112 2004-05-14 - firmware loader is working 113 2004-05-11 - start writing the driver
+1 -1
Documentation/dvb/README.flexcop
··· 174 Everything which is identical in the following table, can be put into a common 175 flexcop-module. 176 177 - PCI USB 178 ------------------------------------------------------------------------------- 179 Different: 180 Register access: accessing IO memory USB control message
··· 174 Everything which is identical in the following table, can be put into a common 175 flexcop-module. 176 177 + PCI USB 178 ------------------------------------------------------------------------------- 179 Different: 180 Register access: accessing IO memory USB control message
+1 -1
Documentation/dvb/avermedia.txt
··· 1 2 HOWTO: Get An Avermedia DVB-T working under Linux 3 - ______________________________________________ 4 5 Table of Contents 6 Assumptions and Introduction
··· 1 2 HOWTO: Get An Avermedia DVB-T working under Linux 3 + ______________________________________________ 4 5 Table of Contents 6 Assumptions and Introduction
+4 -4
Documentation/dvb/cards.txt
··· 16 shielding, and the whole metal box has its own part number. 17 18 19 - o Frontends drivers: 20 - dvb_dummy_fe: for testing... 21 DVB-S: 22 - ves1x93 : Alps BSRV2 (ves1893 demodulator) and dbox2 (ves1993) ··· 24 - grundig_29504-491 : Grundig 29504-491 (Philips TDA8083 demodulator), tsa5522 PLL 25 - mt312 : Zarlink mt312 or Mitel vp310 demodulator, sl1935 or tsa5059 PLL 26 - stv0299 : Alps BSRU6 (tsa5059 PLL), LG TDQB-S00x (tsa5059 PLL), 27 - LG TDQF-S001F (sl1935 PLL), Philips SU1278 (tua6100 PLL), 28 Philips SU1278SH (tsa5059 PLL), Samsung TBMU24112IMB 29 DVB-C: 30 - ves1820 : various (ves1820 demodulator, sp5659c or spXXXX PLL) ··· 35 - grundig_29504-401 : Grundig 29504-401 (LSI L64781 demodulator), tsa5060 PLL 36 - tda1004x : Philips tda10045h (td1344 or tdm1316l PLL) 37 - nxt6000 : Alps TDME7 (MITEL SP5659 PLL), Alps TDED4 (TI ALP510 PLL), 38 - Comtech DVBT-6k07 (SP5730 PLL) 39 - (NxtWave Communications NXT6000 demodulator) 40 - sp887x : Microtune 7202D 41 - dib3000mb : DiBcom 3000-MB demodulator 42 DVB-S/C/T:
··· 16 shielding, and the whole metal box has its own part number. 17 18 19 + o Frontends drivers: 20 - dvb_dummy_fe: for testing... 21 DVB-S: 22 - ves1x93 : Alps BSRV2 (ves1893 demodulator) and dbox2 (ves1993) ··· 24 - grundig_29504-491 : Grundig 29504-491 (Philips TDA8083 demodulator), tsa5522 PLL 25 - mt312 : Zarlink mt312 or Mitel vp310 demodulator, sl1935 or tsa5059 PLL 26 - stv0299 : Alps BSRU6 (tsa5059 PLL), LG TDQB-S00x (tsa5059 PLL), 27 + LG TDQF-S001F (sl1935 PLL), Philips SU1278 (tua6100 PLL), 28 Philips SU1278SH (tsa5059 PLL), Samsung TBMU24112IMB 29 DVB-C: 30 - ves1820 : various (ves1820 demodulator, sp5659c or spXXXX PLL) ··· 35 - grundig_29504-401 : Grundig 29504-401 (LSI L64781 demodulator), tsa5060 PLL 36 - tda1004x : Philips tda10045h (td1344 or tdm1316l PLL) 37 - nxt6000 : Alps TDME7 (MITEL SP5659 PLL), Alps TDED4 (TI ALP510 PLL), 38 + Comtech DVBT-6k07 (SP5730 PLL) 39 + (NxtWave Communications NXT6000 demodulator) 40 - sp887x : Microtune 7202D 41 - dib3000mb : DiBcom 3000-MB demodulator 42 DVB-S/C/T:
+2 -2
Documentation/dvb/contributors.txt
··· 15 16 Diego Picciani <d.picciani@novacomp.it> 17 for CyberLogin for Linux which allows logging onto EON 18 - (in case you are wondering where CyberLogin is, EON changed its login 19 procedure and CyberLogin is no longer used.) 20 21 Martin Schaller <martin@smurf.franken.de> ··· 57 Davor Emard <emard@softhome.net> 58 for his work on the budget drivers, the demux code, 59 the module unloading problems, ... 60 - 61 Hans-Frieder Vogt <hfvogt@arcor.de> 62 for his work on calculating and checking the crc's for the 63 TechnoTrend/Hauppauge DEC driver firmware
··· 15 16 Diego Picciani <d.picciani@novacomp.it> 17 for CyberLogin for Linux which allows logging onto EON 18 + (in case you are wondering where CyberLogin is, EON changed its login 19 procedure and CyberLogin is no longer used.) 20 21 Martin Schaller <martin@smurf.franken.de> ··· 57 Davor Emard <emard@softhome.net> 58 for his work on the budget drivers, the demux code, 59 the module unloading problems, ... 60 + 61 Hans-Frieder Vogt <hfvogt@arcor.de> 62 for his work on calculating and checking the crc's for the 63 TechnoTrend/Hauppauge DEC driver firmware
+2 -2
Documentation/dvb/readme.txt
··· 20 21 What's inside this directory: 22 23 - "cards.txt" 24 contains a list of supported hardware. 25 26 "contributors.txt" ··· 37 contains detailed informations about the 38 TT DEC2000/DEC3000 USB DVB hardware. 39 40 - "bt8xx.txt" 41 contains detailed installation instructions for the 42 various bt8xx based "budget" DVB cards 43 (Nebula, Pinnacle PCTV, Twinhan DST)
··· 20 21 What's inside this directory: 22 23 + "cards.txt" 24 contains a list of supported hardware. 25 26 "contributors.txt" ··· 37 contains detailed informations about the 38 TT DEC2000/DEC3000 USB DVB hardware. 39 40 + "bt8xx.txt" 41 contains detailed installation instructions for the 42 various bt8xx based "budget" DVB cards 43 (Nebula, Pinnacle PCTV, Twinhan DST)
+11 -11
Documentation/filesystems/ext3.txt
··· 57 we'd like to get some feedback if it's the contrary for 58 you. 59 60 - user_xattr (*) Enables POSIX Extended Attributes. It's enabled by 61 - default, however you need to confifure its support 62 - (CONFIG_EXT3_FS_XATTR). This is neccesary if you want 63 - to use POSIX Acces Control Lists support. You can visit 64 - http://acl.bestbits.at to know more about POSIX Extended 65 - attributes. 66 67 - nouser_xattr Disables POSIX Extended Attributes. 68 69 - acl (*) Enables POSIX Access Control Lists support. This is 70 - enabled by default, however you need to configure 71 - its support (CONFIG_EXT3_FS_POSIX_ACL). If you want 72 - to know more about ACLs visit http://acl.bestbits.at 73 74 noacl This option disables POSIX Access Control List support. 75
··· 57 we'd like to get some feedback if it's the contrary for 58 you. 59 60 + user_xattr Enables Extended User Attributes. Additionally, you need 61 + to have extended attribute support enabled in the kernel 62 + configuration (CONFIG_EXT3_FS_XATTR). See the attr(5) 63 + manual page and http://acl.bestbits.at to learn more 64 + about extended attributes. 65 66 + nouser_xattr Disables Extended User Attributes. 67 68 + acl Enables POSIX Access Control Lists support. Additionally, 69 + you need to have ACL support enabled in the kernel 70 + configuration (CONFIG_EXT3_FS_POSIX_ACL). See the acl(5) 71 + manual page and http://acl.bestbits.at for more 72 + information. 73 74 noacl This option disables POSIX Access Control List support. 75
+1 -1
Makefile
··· 408 # of make so .config is not included in this case either (for *config). 409 410 no-dot-config-targets := clean mrproper distclean \ 411 - cscope TAGS tags help %docs check% kernelrelease 412 413 config-targets := 0 414 mixed-targets := 0
··· 408 # of make so .config is not included in this case either (for *config). 409 410 no-dot-config-targets := clean mrproper distclean \ 411 + cscope TAGS tags help %docs check% 412 413 config-targets := 0 414 mixed-targets := 0
+1 -1
arch/i386/kernel/kprobes.c
··· 191 */ 192 save_previous_kprobe(kcb); 193 set_current_kprobe(p, regs, kcb); 194 - p->nmissed++; 195 prepare_singlestep(p, regs); 196 kcb->kprobe_status = KPROBE_REENTER; 197 return 1;
··· 191 */ 192 save_previous_kprobe(kcb); 193 set_current_kprobe(p, regs, kcb); 194 + kprobes_inc_nmissed_count(p); 195 prepare_singlestep(p, regs); 196 kcb->kprobe_status = KPROBE_REENTER; 197 return 1;
-7
arch/i386/kernel/traps.c
··· 650 651 cpu = smp_processor_id(); 652 653 - #ifdef CONFIG_HOTPLUG_CPU 654 - if (!cpu_online(cpu)) { 655 - nmi_exit(); 656 - return; 657 - } 658 - #endif 659 - 660 ++nmi_count(cpu); 661 662 if (!rcu_dereference(nmi_callback)(regs, cpu))
··· 650 651 cpu = smp_processor_id(); 652 653 ++nmi_count(cpu); 654 655 if (!rcu_dereference(nmi_callback)(regs, cpu))
+1 -1
arch/ia64/Kconfig
··· 58 bool 59 select GENERIC_ALLOCATOR 60 61 - config ZONE_DMA_IS_DMA32 62 bool 63 default y 64
··· 58 bool 59 select GENERIC_ALLOCATOR 60 61 + config DMA_IS_DMA32 62 bool 63 default y 64
+1 -1
arch/ia64/kernel/kprobes.c
··· 630 */ 631 save_previous_kprobe(kcb); 632 set_current_kprobe(p, kcb); 633 - p->nmissed++; 634 prepare_ss(p, regs); 635 kcb->kprobe_status = KPROBE_REENTER; 636 return 1;
··· 630 */ 631 save_previous_kprobe(kcb); 632 set_current_kprobe(p, kcb); 633 + kprobes_inc_nmissed_count(p); 634 prepare_ss(p, regs); 635 kcb->kprobe_status = KPROBE_REENTER; 636 return 1;
+2 -2
arch/mips/mm/init.c
··· 67 68 page = virt_to_page(empty_zero_page); 69 while (page < virt_to_page(empty_zero_page + (PAGE_SIZE << order))) { 70 - set_bit(PG_reserved, &page->flags); 71 - reset_page_mapcount(page); 72 page++; 73 } 74
··· 67 68 page = virt_to_page(empty_zero_page); 69 while (page < virt_to_page(empty_zero_page + (PAGE_SIZE << order))) { 70 + SetPageReserved(page); 71 + set_page_count(page, 1); 72 page++; 73 } 74
+1 -1
arch/powerpc/Kconfig
··· 227 If you don't know what to do here, say N. 228 229 config NR_CPUS 230 - int "Maximum number of CPUs (2-32)" 231 range 2 128 232 depends on SMP 233 default "32" if PPC64
··· 227 If you don't know what to do here, say N. 228 229 config NR_CPUS 230 + int "Maximum number of CPUs (2-128)" 231 range 2 128 232 depends on SMP 233 default "32" if PPC64
+1 -1
arch/powerpc/kernel/kprobes.c
··· 177 save_previous_kprobe(kcb); 178 set_current_kprobe(p, regs, kcb); 179 kcb->kprobe_saved_msr = regs->msr; 180 - p->nmissed++; 181 prepare_singlestep(p, regs); 182 kcb->kprobe_status = KPROBE_REENTER; 183 return 1;
··· 177 save_previous_kprobe(kcb); 178 set_current_kprobe(p, regs, kcb); 179 kcb->kprobe_saved_msr = regs->msr; 180 + kprobes_inc_nmissed_count(p); 181 prepare_singlestep(p, regs); 182 kcb->kprobe_status = KPROBE_REENTER; 183 return 1;
+9 -1
arch/powerpc/kernel/setup_64.c
··· 102 dev_t boot_dev; 103 u64 ppc64_pft_size; 104 105 - struct ppc64_caches ppc64_caches; 106 EXPORT_SYMBOL_GPL(ppc64_caches); 107 108 /*
··· 102 dev_t boot_dev; 103 u64 ppc64_pft_size; 104 105 + /* Pick defaults since we might want to patch instructions 106 + * before we've read this from the device tree. 107 + */ 108 + struct ppc64_caches ppc64_caches = { 109 + .dline_size = 0x80, 110 + .log_dline_size = 7, 111 + .iline_size = 0x80, 112 + .log_iline_size = 7 113 + }; 114 EXPORT_SYMBOL_GPL(ppc64_caches); 115 116 /*
+1 -1
arch/powerpc/mm/hash_utils_64.c
··· 601 /* Handle hugepage regions */ 602 if (unlikely(in_hugepage_area(mm->context, ea))) { 603 DBG_LOW(" -> huge page !\n"); 604 - return hash_huge_page(mm, access, ea, vsid, local); 605 } 606 607 /* Get PTE and page size from page tables */
··· 601 /* Handle hugepage regions */ 602 if (unlikely(in_hugepage_area(mm->context, ea))) { 603 DBG_LOW(" -> huge page !\n"); 604 + return hash_huge_page(mm, access, ea, vsid, local, trap); 605 } 606 607 /* Get PTE and page size from page tables */
+79 -20
arch/powerpc/mm/hugetlbpage.c
··· 148 return 0; 149 } 150 151 static void flush_low_segments(void *parm) 152 { 153 - u16 areas = (unsigned long) parm; 154 unsigned long i; 155 156 asm volatile("isync" : : : "memory"); 157 - 158 - BUILD_BUG_ON((sizeof(areas)*8) != NUM_LOW_AREAS); 159 - 160 for (i = 0; i < NUM_LOW_AREAS; i++) { 161 - if (! (areas & (1U << i))) 162 continue; 163 asm volatile("slbie %0" 164 : : "r" ((i << SID_SHIFT) | SLBIE_C)); 165 } 166 - 167 asm volatile("isync" : : : "memory"); 168 } 169 170 static void flush_high_segments(void *parm) 171 { 172 - u16 areas = (unsigned long) parm; 173 unsigned long i, j; 174 175 asm volatile("isync" : : : "memory"); 176 - 177 - BUILD_BUG_ON((sizeof(areas)*8) != NUM_HIGH_AREAS); 178 - 179 for (i = 0; i < NUM_HIGH_AREAS; i++) { 180 - if (! (areas & (1U << i))) 181 continue; 182 for (j = 0; j < (1UL << (HTLB_AREA_SHIFT-SID_SHIFT)); j++) 183 asm volatile("slbie %0" 184 :: "r" (((i << HTLB_AREA_SHIFT) 185 - + (j << SID_SHIFT)) | SLBIE_C)); 186 } 187 - 188 asm volatile("isync" : : : "memory"); 189 } 190 ··· 249 static int open_low_hpage_areas(struct mm_struct *mm, u16 newareas) 250 { 251 unsigned long i; 252 253 BUILD_BUG_ON((sizeof(newareas)*8) != NUM_LOW_AREAS); 254 BUILD_BUG_ON((sizeof(mm->context.low_htlb_areas)*8) != NUM_LOW_AREAS); ··· 265 266 mm->context.low_htlb_areas |= newareas; 267 268 - /* update the paca copy of the context struct */ 269 - get_paca()->context = mm->context; 270 - 271 /* the context change must make it to memory before the flush, 272 * so that further SLB misses do the right thing. */ 273 mb(); 274 - on_each_cpu(flush_low_segments, (void *)(unsigned long)newareas, 0, 1); 275 276 return 0; 277 } 278 279 static int open_high_hpage_areas(struct mm_struct *mm, u16 newareas) 280 { 281 unsigned long i; 282 283 BUILD_BUG_ON((sizeof(newareas)*8) != NUM_HIGH_AREAS); ··· 302 /* the context change must make it to memory before the flush, 303 * so that further SLB misses do the right thing. */ 304 mb(); 305 - on_each_cpu(flush_high_segments, (void *)(unsigned long)newareas, 0, 1); 306 307 return 0; 308 } ··· 664 return -ENOMEM; 665 } 666 667 int hash_huge_page(struct mm_struct *mm, unsigned long access, 668 - unsigned long ea, unsigned long vsid, int local) 669 { 670 pte_t *ptep; 671 unsigned long old_pte, new_pte; ··· 744 rflags = 0x2 | (!(new_pte & _PAGE_RW)); 745 /* _PAGE_EXEC -> HW_NO_EXEC since it's inverted */ 746 rflags |= ((new_pte & _PAGE_EXEC) ? 0 : HPTE_R_N); 747 748 /* Check if pte already has an hpte (case 2) */ 749 if (unlikely(old_pte & _PAGE_HASHPTE)) { ··· 761 slot = (hash & htab_hash_mask) * HPTES_PER_GROUP; 762 slot += (old_pte & _PAGE_F_GIX) >> 12; 763 764 - if (ppc_md.hpte_updatepp(slot, rflags, va, 1, local) == -1) 765 old_pte &= ~_PAGE_HPTEFLAGS; 766 } 767
··· 148 return 0; 149 } 150 151 + struct slb_flush_info { 152 + struct mm_struct *mm; 153 + u16 newareas; 154 + }; 155 + 156 static void flush_low_segments(void *parm) 157 { 158 + struct slb_flush_info *fi = parm; 159 unsigned long i; 160 161 + BUILD_BUG_ON((sizeof(fi->newareas)*8) != NUM_LOW_AREAS); 162 + 163 + if (current->active_mm != fi->mm) 164 + return; 165 + 166 + /* Only need to do anything if this CPU is working in the same 167 + * mm as the one which has changed */ 168 + 169 + /* update the paca copy of the context struct */ 170 + get_paca()->context = current->active_mm->context; 171 + 172 asm volatile("isync" : : : "memory"); 173 for (i = 0; i < NUM_LOW_AREAS; i++) { 174 + if (! (fi->newareas & (1U << i))) 175 continue; 176 asm volatile("slbie %0" 177 : : "r" ((i << SID_SHIFT) | SLBIE_C)); 178 } 179 asm volatile("isync" : : : "memory"); 180 } 181 182 static void flush_high_segments(void *parm) 183 { 184 + struct slb_flush_info *fi = parm; 185 unsigned long i, j; 186 187 + 188 + BUILD_BUG_ON((sizeof(fi->newareas)*8) != NUM_HIGH_AREAS); 189 + 190 + if (current->active_mm != fi->mm) 191 + return; 192 + 193 + /* Only need to do anything if this CPU is working in the same 194 + * mm as the one which has changed */ 195 + 196 + /* update the paca copy of the context struct */ 197 + get_paca()->context = current->active_mm->context; 198 + 199 asm volatile("isync" : : : "memory"); 200 for (i = 0; i < NUM_HIGH_AREAS; i++) { 201 + if (! (fi->newareas & (1U << i))) 202 continue; 203 for (j = 0; j < (1UL << (HTLB_AREA_SHIFT-SID_SHIFT)); j++) 204 asm volatile("slbie %0" 205 :: "r" (((i << HTLB_AREA_SHIFT) 206 + + (j << SID_SHIFT)) | SLBIE_C)); 207 } 208 asm volatile("isync" : : : "memory"); 209 } 210 ··· 229 static int open_low_hpage_areas(struct mm_struct *mm, u16 newareas) 230 { 231 unsigned long i; 232 + struct slb_flush_info fi; 233 234 BUILD_BUG_ON((sizeof(newareas)*8) != NUM_LOW_AREAS); 235 BUILD_BUG_ON((sizeof(mm->context.low_htlb_areas)*8) != NUM_LOW_AREAS); ··· 244 245 mm->context.low_htlb_areas |= newareas; 246 247 /* the context change must make it to memory before the flush, 248 * so that further SLB misses do the right thing. */ 249 mb(); 250 + 251 + fi.mm = mm; 252 + fi.newareas = newareas; 253 + on_each_cpu(flush_low_segments, &fi, 0, 1); 254 255 return 0; 256 } 257 258 static int open_high_hpage_areas(struct mm_struct *mm, u16 newareas) 259 { 260 + struct slb_flush_info fi; 261 unsigned long i; 262 263 BUILD_BUG_ON((sizeof(newareas)*8) != NUM_HIGH_AREAS); ··· 280 /* the context change must make it to memory before the flush, 281 * so that further SLB misses do the right thing. */ 282 mb(); 283 + 284 + fi.mm = mm; 285 + fi.newareas = newareas; 286 + on_each_cpu(flush_high_segments, &fi, 0, 1); 287 288 return 0; 289 } ··· 639 return -ENOMEM; 640 } 641 642 + /* 643 + * Called by asm hashtable.S for doing lazy icache flush 644 + */ 645 + static unsigned int hash_huge_page_do_lazy_icache(unsigned long rflags, 646 + pte_t pte, int trap) 647 + { 648 + struct page *page; 649 + int i; 650 + 651 + if (!pfn_valid(pte_pfn(pte))) 652 + return rflags; 653 + 654 + page = pte_page(pte); 655 + 656 + /* page is dirty */ 657 + if (!test_bit(PG_arch_1, &page->flags) && !PageReserved(page)) { 658 + if (trap == 0x400) { 659 + for (i = 0; i < (HPAGE_SIZE / PAGE_SIZE); i++) 660 + __flush_dcache_icache(page_address(page+i)); 661 + set_bit(PG_arch_1, &page->flags); 662 + } else { 663 + rflags |= HPTE_R_N; 664 + } 665 + } 666 + return rflags; 667 + } 668 + 669 int hash_huge_page(struct mm_struct *mm, unsigned long access, 670 + unsigned long ea, unsigned long vsid, int local, 671 + unsigned long trap) 672 { 673 pte_t *ptep; 674 unsigned long old_pte, new_pte; ··· 691 rflags = 0x2 | (!(new_pte & _PAGE_RW)); 692 /* _PAGE_EXEC -> HW_NO_EXEC since it's inverted */ 693 rflags |= ((new_pte & _PAGE_EXEC) ? 0 : HPTE_R_N); 694 + if (!cpu_has_feature(CPU_FTR_COHERENT_ICACHE)) 695 + /* No CPU has hugepages but lacks no execute, so we 696 + * don't need to worry about that case */ 697 + rflags = hash_huge_page_do_lazy_icache(rflags, __pte(old_pte), 698 + trap); 699 700 /* Check if pte already has an hpte (case 2) */ 701 if (unlikely(old_pte & _PAGE_HASHPTE)) { ··· 703 slot = (hash & htab_hash_mask) * HPTES_PER_GROUP; 704 slot += (old_pte & _PAGE_F_GIX) >> 12; 705 706 + if (ppc_md.hpte_updatepp(slot, rflags, va, mmu_huge_psize, 707 + local) == -1) 708 old_pte &= ~_PAGE_HPTEFLAGS; 709 } 710
+1 -1
arch/powerpc/mm/numa.c
··· 125 126 /* We didnt find a matching region, return start/end as 0 */ 127 if (*start_pfn == -1UL) 128 - start_pfn = 0; 129 } 130 131 static inline void map_cpu_to_node(int cpu, int node)
··· 125 126 /* We didnt find a matching region, return start/end as 0 */ 127 if (*start_pfn == -1UL) 128 + *start_pfn = 0; 129 } 130 131 static inline void map_cpu_to_node(int cpu, int node)
+1 -6
arch/powerpc/mm/stab.c
··· 288 return; 289 } 290 #endif /* CONFIG_PPC_ISERIES */ 291 - #ifdef CONFIG_PPC_PSERIES 292 - if (platform_is_lpar()) { 293 - plpar_hcall_norets(H_SET_ASR, stabreal); 294 - return; 295 - } 296 - #endif 297 mtspr(SPRN_ASR, stabreal); 298 }
··· 288 return; 289 } 290 #endif /* CONFIG_PPC_ISERIES */ 291 + 292 mtspr(SPRN_ASR, stabreal); 293 }
+16 -5
arch/powerpc/platforms/powermac/feature.c
··· 1650 */ 1651 1652 if (macio->type == macio_intrepid) { 1653 - if (enable) 1654 - UN_OUT(UNI_N_CLOCK_SPREADING, 2); 1655 - else 1656 - UN_OUT(UNI_N_CLOCK_SPREADING, 0); 1657 - mdelay(40); 1658 } 1659 1660 while (machine_is_compatible("PowerBook5,2") || ··· 1732 pmac_low_i2c_close(ui2c); 1733 break; 1734 } 1735 pmac_low_i2c_setmode(ui2c, pmac_low_i2c_mode_stdsub); 1736 rc = pmac_low_i2c_xfer(ui2c, 0xd2 | pmac_low_i2c_write, 0x80, buffer, 9); 1737 DBG("write result: %d,", rc);
··· 1650 */ 1651 1652 if (macio->type == macio_intrepid) { 1653 + struct device_node *clock = 1654 + of_find_node_by_path("/uni-n@f8000000/hw-clock"); 1655 + if (clock && get_property(clock, "platform-do-clockspreading", 1656 + NULL)) { 1657 + printk(KERN_INFO "%sabling clock spreading on Intrepid" 1658 + " ASIC\n", enable ? "En" : "Dis"); 1659 + if (enable) 1660 + UN_OUT(UNI_N_CLOCK_SPREADING, 2); 1661 + else 1662 + UN_OUT(UNI_N_CLOCK_SPREADING, 0); 1663 + mdelay(40); 1664 + } 1665 + of_node_put(clock); 1666 } 1667 1668 while (machine_is_compatible("PowerBook5,2") || ··· 1724 pmac_low_i2c_close(ui2c); 1725 break; 1726 } 1727 + printk(KERN_INFO "%sabling clock spreading on i2c clock chip\n", 1728 + enable ? "En" : "Dis"); 1729 + 1730 pmac_low_i2c_setmode(ui2c, pmac_low_i2c_mode_stdsub); 1731 rc = pmac_low_i2c_xfer(ui2c, 0xd2 | pmac_low_i2c_write, 0x80, buffer, 9); 1732 DBG("write result: %d,", rc);
+7 -4
arch/powerpc/platforms/pseries/iommu.c
··· 109 u64 rc; 110 union tce_entry tce; 111 112 tce.te_word = 0; 113 tce.te_rpn = (virt_to_abs(uaddr)) >> TCE_SHIFT; 114 tce.te_rdwr = 1; ··· 146 union tce_entry tce, *tcep; 147 long l, limit; 148 149 - tcenum <<= TCE_PAGE_FACTOR; 150 - npages <<= TCE_PAGE_FACTOR; 151 - 152 - if (npages == 1) 153 return tce_build_pSeriesLP(tbl, tcenum, npages, uaddr, 154 direction); 155 ··· 163 uaddr, direction); 164 __get_cpu_var(tce_page) = tcep; 165 } 166 167 tce.te_word = 0; 168 tce.te_rpn = (virt_to_abs(uaddr)) >> TCE_SHIFT;
··· 109 u64 rc; 110 union tce_entry tce; 111 112 + tcenum <<= TCE_PAGE_FACTOR; 113 + npages <<= TCE_PAGE_FACTOR; 114 + 115 tce.te_word = 0; 116 tce.te_rpn = (virt_to_abs(uaddr)) >> TCE_SHIFT; 117 tce.te_rdwr = 1; ··· 143 union tce_entry tce, *tcep; 144 long l, limit; 145 146 + if (TCE_PAGE_FACTOR == 0 && npages == 1) 147 return tce_build_pSeriesLP(tbl, tcenum, npages, uaddr, 148 direction); 149 ··· 163 uaddr, direction); 164 __get_cpu_var(tce_page) = tcep; 165 } 166 + 167 + tcenum <<= TCE_PAGE_FACTOR; 168 + npages <<= TCE_PAGE_FACTOR; 169 170 tce.te_word = 0; 171 tce.te_rpn = (virt_to_abs(uaddr)) >> TCE_SHIFT;
-12
arch/powerpc/platforms/pseries/lpar.c
··· 298 if (!(vflags & HPTE_V_BOLTED)) 299 DBG_LOW(" hpte_v=%016lx, hpte_r=%016lx\n", hpte_v, hpte_r); 300 301 - #if 1 302 - { 303 - int i; 304 - for (i=0;i<8;i++) { 305 - unsigned long w0, w1; 306 - plpar_pte_read(0, hpte_group, &w0, &w1); 307 - BUG_ON (HPTE_V_COMPARE(hpte_v, w0) 308 - && (w0 & HPTE_V_VALID)); 309 - } 310 - } 311 - #endif 312 - 313 /* Now fill in the actual HPTE */ 314 /* Set CEC cookie to 0 */ 315 /* Zero page = 0 */
··· 298 if (!(vflags & HPTE_V_BOLTED)) 299 DBG_LOW(" hpte_v=%016lx, hpte_r=%016lx\n", hpte_v, hpte_r); 300 301 /* Now fill in the actual HPTE */ 302 /* Set CEC cookie to 0 */ 303 /* Zero page = 0 */
+3 -3
arch/ppc/Kconfig
··· 767 on it (826x, 827x, 8560). 768 769 config PPC_CHRP 770 - bool " Common Hardware Reference Platform (CHRP) based machines" 771 depends on PPC_MULTIPLATFORM 772 select PPC_I8259 773 select PPC_INDIRECT_PCI 774 default y 775 776 config PPC_PMAC 777 - bool " Apple PowerMac based machines" 778 depends on PPC_MULTIPLATFORM 779 select PPC_INDIRECT_PCI 780 default y ··· 785 default y 786 787 config PPC_PREP 788 - bool " PowerPC Reference Platform (PReP) based machines" 789 depends on PPC_MULTIPLATFORM 790 select PPC_I8259 791 select PPC_INDIRECT_PCI
··· 767 on it (826x, 827x, 8560). 768 769 config PPC_CHRP 770 + bool 771 depends on PPC_MULTIPLATFORM 772 select PPC_I8259 773 select PPC_INDIRECT_PCI 774 default y 775 776 config PPC_PMAC 777 + bool 778 depends on PPC_MULTIPLATFORM 779 select PPC_INDIRECT_PCI 780 default y ··· 785 default y 786 787 config PPC_PREP 788 + bool 789 depends on PPC_MULTIPLATFORM 790 select PPC_I8259 791 select PPC_INDIRECT_PCI
+4
arch/ppc/kernel/smp.c
··· 301 302 /* Probe platform for CPUs: always linear. */ 303 num_cpus = smp_ops->probe(); 304 for (i = 0; i < num_cpus; ++i) 305 cpu_set(i, cpu_possible_map); 306
··· 301 302 /* Probe platform for CPUs: always linear. */ 303 num_cpus = smp_ops->probe(); 304 + 305 + if (num_cpus < 2) 306 + smp_tb_synchronized = 1; 307 + 308 for (i = 0; i < num_cpus; ++i) 309 cpu_set(i, cpu_possible_map); 310
+15 -5
arch/ppc/platforms/pmac_feature.c
··· 1606 */ 1607 1608 if (macio->type == macio_intrepid) { 1609 - if (enable) 1610 - UN_OUT(UNI_N_CLOCK_SPREADING, 2); 1611 - else 1612 - UN_OUT(UNI_N_CLOCK_SPREADING, 0); 1613 - mdelay(40); 1614 } 1615 1616 while (machine_is_compatible("PowerBook5,2") || ··· 1688 pmac_low_i2c_close(ui2c); 1689 break; 1690 } 1691 pmac_low_i2c_setmode(ui2c, pmac_low_i2c_mode_stdsub); 1692 rc = pmac_low_i2c_xfer(ui2c, 0xd2 | pmac_low_i2c_write, 0x80, buffer, 9); 1693 DBG("write result: %d,", rc);
··· 1606 */ 1607 1608 if (macio->type == macio_intrepid) { 1609 + struct device_node *clock = 1610 + of_find_node_by_path("/uni-n@f8000000/hw-clock"); 1611 + if (clock && get_property(clock, "platform-do-clockspreading", 1612 + NULL)) { 1613 + printk(KERN_INFO "%sabling clock spreading on Intrepid" 1614 + " ASIC\n", enable ? "En" : "Dis"); 1615 + if (enable) 1616 + UN_OUT(UNI_N_CLOCK_SPREADING, 2); 1617 + else 1618 + UN_OUT(UNI_N_CLOCK_SPREADING, 0); 1619 + mdelay(40); 1620 + } 1621 + of_node_put(clock); 1622 } 1623 1624 while (machine_is_compatible("PowerBook5,2") || ··· 1680 pmac_low_i2c_close(ui2c); 1681 break; 1682 } 1683 + printk(KERN_INFO "%sabling clock spreading on i2c clock chip\n", 1684 + enable ? "En" : "Dis"); 1685 pmac_low_i2c_setmode(ui2c, pmac_low_i2c_mode_stdsub); 1686 rc = pmac_low_i2c_xfer(ui2c, 0xd2 | pmac_low_i2c_write, 0x80, buffer, 9); 1687 DBG("write result: %d,", rc);
+1 -1
arch/sparc64/kernel/kprobes.c
··· 138 */ 139 save_previous_kprobe(kcb); 140 set_current_kprobe(p, regs, kcb); 141 - p->nmissed++; 142 kcb->kprobe_status = KPROBE_REENTER; 143 prepare_singlestep(p, regs, kcb); 144 return 1;
··· 138 */ 139 save_previous_kprobe(kcb); 140 set_current_kprobe(p, regs, kcb); 141 + kprobes_inc_nmissed_count(p); 142 kcb->kprobe_status = KPROBE_REENTER; 143 prepare_singlestep(p, regs, kcb); 144 return 1;
+2
arch/um/include/um_uaccess.h
··· 17 #include "uaccess-skas.h" 18 #endif 19 20 #define __under_task_size(addr, size) \ 21 (((unsigned long) (addr) < TASK_SIZE) && \ 22 (((unsigned long) (addr) + (size)) < TASK_SIZE))
··· 17 #include "uaccess-skas.h" 18 #endif 19 20 + #include "asm/fixmap.h" 21 + 22 #define __under_task_size(addr, size) \ 23 (((unsigned long) (addr) < TASK_SIZE) && \ 24 (((unsigned long) (addr) + (size)) < TASK_SIZE))
-1
arch/um/kernel/skas/include/uaccess-skas.h
··· 7 #define __SKAS_UACCESS_H 8 9 #include "asm/errno.h" 10 - #include "asm/fixmap.h" 11 12 /* No SKAS-specific checking. */ 13 #define access_ok_skas(type, addr, size) 0
··· 7 #define __SKAS_UACCESS_H 8 9 #include "asm/errno.h" 10 11 /* No SKAS-specific checking. */ 12 #define access_ok_skas(type, addr, size) 0
+1 -1
arch/x86_64/kernel/kprobes.c
··· 329 */ 330 save_previous_kprobe(kcb); 331 set_current_kprobe(p, regs, kcb); 332 - p->nmissed++; 333 prepare_singlestep(p, regs); 334 kcb->kprobe_status = KPROBE_REENTER; 335 return 1;
··· 329 */ 330 save_previous_kprobe(kcb); 331 set_current_kprobe(p, regs, kcb); 332 + kprobes_inc_nmissed_count(p); 333 prepare_singlestep(p, regs); 334 kcb->kprobe_status = KPROBE_REENTER; 335 return 1;
+1 -1
drivers/acpi/pci_link.c
··· 316 if (!link || !irq) 317 return_VALUE(-EINVAL); 318 319 - resource = kmalloc(sizeof(*resource) + 1, GFP_KERNEL); 320 if (!resource) 321 return_VALUE(-ENOMEM); 322
··· 316 if (!link || !irq) 317 return_VALUE(-EINVAL); 318 319 + resource = kmalloc(sizeof(*resource) + 1, GFP_ATOMIC); 320 if (!resource) 321 return_VALUE(-ENOMEM); 322
-3
drivers/block/cciss.c
··· 1146 del_gendisk(disk); 1147 if (q) 1148 blk_cleanup_queue(q); 1149 - put_disk(disk); 1150 } 1151 } 1152 ··· 1466 del_gendisk(disk); 1467 if (q) 1468 blk_cleanup_queue(q); 1469 - put_disk(disk); 1470 } 1471 } 1472 ··· 3241 del_gendisk(disk); 3242 if (q) 3243 blk_cleanup_queue(q); 3244 - put_disk(disk); 3245 } 3246 } 3247
··· 1146 del_gendisk(disk); 1147 if (q) 1148 blk_cleanup_queue(q); 1149 } 1150 } 1151 ··· 1467 del_gendisk(disk); 1468 if (q) 1469 blk_cleanup_queue(q); 1470 } 1471 } 1472 ··· 3243 del_gendisk(disk); 3244 if (q) 3245 blk_cleanup_queue(q); 3246 } 3247 } 3248
+9 -9
drivers/char/Kconfig
··· 943 Applications should simply open the device (eg /dev/hda1) 944 with the O_DIRECT flag. 945 946 config HPET 947 bool "HPET - High Precision Event Timer" if (X86 || IA64) 948 default n ··· 982 registers may also contain other things that shouldn't be 983 exposed to the user. If this applies to your hardware, 984 say N here. 985 - 986 - config MAX_RAW_DEVS 987 - int "Maximum number of RAW devices to support (1-8192)" 988 - depends on RAW_DRIVER 989 - default "256" 990 - help 991 - The maximum number of RAW devices that are supported. 992 - Default is 256. Increase this number in case you need lots of 993 - raw devices. 994 995 config HANGCHECK_TIMER 996 tristate "Hangcheck timer"
··· 943 Applications should simply open the device (eg /dev/hda1) 944 with the O_DIRECT flag. 945 946 + config MAX_RAW_DEVS 947 + int "Maximum number of RAW devices to support (1-8192)" 948 + depends on RAW_DRIVER 949 + default "256" 950 + help 951 + The maximum number of RAW devices that are supported. 952 + Default is 256. Increase this number in case you need lots of 953 + raw devices. 954 + 955 config HPET 956 bool "HPET - High Precision Event Timer" if (X86 || IA64) 957 default n ··· 973 registers may also contain other things that shouldn't be 974 exposed to the user. If this applies to your hardware, 975 say N here. 976 977 config HANGCHECK_TIMER 978 tristate "Hangcheck timer"
+1 -1
drivers/char/ipmi/ipmi_msghandler.c
··· 2986 msg.cmd = 2; /* Platform event command. */ 2987 msg.data = data; 2988 msg.data_len = 8; 2989 - data[0] = 0x21; /* Kernel generator ID, IPMI table 5-4 */ 2990 data[1] = 0x03; /* This is for IPMI 1.0. */ 2991 data[2] = 0x20; /* OS Critical Stop, IPMI table 36-3 */ 2992 data[4] = 0x6f; /* Sensor specific, IPMI table 36-1 */
··· 2986 msg.cmd = 2; /* Platform event command. */ 2987 msg.data = data; 2988 msg.data_len = 8; 2989 + data[0] = 0x41; /* Kernel generator ID, IPMI table 5-4 */ 2990 data[1] = 0x03; /* This is for IPMI 1.0. */ 2991 data[2] = 0x20; /* OS Critical Stop, IPMI table 36-3 */ 2992 data[4] = 0x6f; /* Sensor specific, IPMI table 36-1 */
+5
drivers/connector/cn_proc.c
··· 56 msg = (struct cn_msg*)buffer; 57 ev = (struct proc_event*)msg->data; 58 get_seq(&msg->seq, &ev->cpu); 59 ev->what = PROC_EVENT_FORK; 60 ev->event_data.fork.parent_pid = task->real_parent->pid; 61 ev->event_data.fork.parent_tgid = task->real_parent->tgid; ··· 82 msg = (struct cn_msg*)buffer; 83 ev = (struct proc_event*)msg->data; 84 get_seq(&msg->seq, &ev->cpu); 85 ev->what = PROC_EVENT_EXEC; 86 ev->event_data.exec.process_pid = task->pid; 87 ev->event_data.exec.process_tgid = task->tgid; ··· 116 } else 117 return; 118 get_seq(&msg->seq, &ev->cpu); 119 120 memcpy(&msg->id, &cn_proc_event_id, sizeof(msg->id)); 121 msg->ack = 0; /* not used */ ··· 136 msg = (struct cn_msg*)buffer; 137 ev = (struct proc_event*)msg->data; 138 get_seq(&msg->seq, &ev->cpu); 139 ev->what = PROC_EVENT_EXIT; 140 ev->event_data.exit.process_pid = task->pid; 141 ev->event_data.exit.process_tgid = task->tgid; ··· 169 msg = (struct cn_msg*)buffer; 170 ev = (struct proc_event*)msg->data; 171 msg->seq = rcvd_seq; 172 ev->cpu = -1; 173 ev->what = PROC_EVENT_NONE; 174 ev->event_data.ack.err = err;
··· 56 msg = (struct cn_msg*)buffer; 57 ev = (struct proc_event*)msg->data; 58 get_seq(&msg->seq, &ev->cpu); 59 + getnstimestamp(&ev->timestamp); 60 ev->what = PROC_EVENT_FORK; 61 ev->event_data.fork.parent_pid = task->real_parent->pid; 62 ev->event_data.fork.parent_tgid = task->real_parent->tgid; ··· 81 msg = (struct cn_msg*)buffer; 82 ev = (struct proc_event*)msg->data; 83 get_seq(&msg->seq, &ev->cpu); 84 + getnstimestamp(&ev->timestamp); 85 ev->what = PROC_EVENT_EXEC; 86 ev->event_data.exec.process_pid = task->pid; 87 ev->event_data.exec.process_tgid = task->tgid; ··· 114 } else 115 return; 116 get_seq(&msg->seq, &ev->cpu); 117 + getnstimestamp(&ev->timestamp); 118 119 memcpy(&msg->id, &cn_proc_event_id, sizeof(msg->id)); 120 msg->ack = 0; /* not used */ ··· 133 msg = (struct cn_msg*)buffer; 134 ev = (struct proc_event*)msg->data; 135 get_seq(&msg->seq, &ev->cpu); 136 + getnstimestamp(&ev->timestamp); 137 ev->what = PROC_EVENT_EXIT; 138 ev->event_data.exit.process_pid = task->pid; 139 ev->event_data.exit.process_tgid = task->tgid; ··· 165 msg = (struct cn_msg*)buffer; 166 ev = (struct proc_event*)msg->data; 167 msg->seq = rcvd_seq; 168 + getnstimestamp(&ev->timestamp); 169 ev->cpu = -1; 170 ev->what = PROC_EVENT_NONE; 171 ev->event_data.ack.err = err;
+2 -2
drivers/macintosh/windfarm_pm81.c
··· 207 }, 208 /* Model ID 3 */ 209 { 210 - .model_id = 2, 211 .itarget = 0x350000, 212 .gd = 0x08e00000, 213 .gp = 0x00566666, ··· 219 }, 220 /* Model ID 5 */ 221 { 222 - .model_id = 2, 223 .itarget = 0x3a0000, 224 .gd = 0x15400000, 225 .gp = 0x00233333,
··· 207 }, 208 /* Model ID 3 */ 209 { 210 + .model_id = 3, 211 .itarget = 0x350000, 212 .gd = 0x08e00000, 213 .gp = 0x00566666, ··· 219 }, 220 /* Model ID 5 */ 221 { 222 + .model_id = 5, 223 .itarget = 0x3a0000, 224 .gd = 0x15400000, 225 .gp = 0x00233333,
+3 -2
drivers/md/raid1.c
··· 320 * this branch is our 'one mirror IO has finished' event handler: 321 */ 322 r1_bio->bios[mirror] = NULL; 323 - bio_put(bio); 324 if (!uptodate) { 325 md_error(r1_bio->mddev, conf->mirrors[mirror].rdev); 326 /* an I/O failed, we can't clear the bitmap */ ··· 376 } 377 if (test_bit(R1BIO_BehindIO, &r1_bio->state)) { 378 /* free extra copy of the data pages */ 379 - /* FIXME bio has been freed!!! */ 380 int i = bio->bi_vcnt; 381 while (i--) 382 __free_page(bio->bi_io_vec[i].bv_page); ··· 388 md_write_end(r1_bio->mddev); 389 raid_end_bio_io(r1_bio); 390 } 391 392 rdev_dec_pending(conf->mirrors[mirror].rdev, conf->mddev); 393 return 0;
··· 320 * this branch is our 'one mirror IO has finished' event handler: 321 */ 322 r1_bio->bios[mirror] = NULL; 323 if (!uptodate) { 324 md_error(r1_bio->mddev, conf->mirrors[mirror].rdev); 325 /* an I/O failed, we can't clear the bitmap */ ··· 377 } 378 if (test_bit(R1BIO_BehindIO, &r1_bio->state)) { 379 /* free extra copy of the data pages */ 380 int i = bio->bi_vcnt; 381 while (i--) 382 __free_page(bio->bi_io_vec[i].bv_page); ··· 390 md_write_end(r1_bio->mddev); 391 raid_end_bio_io(r1_bio); 392 } 393 + 394 + if (r1_bio->bios[mirror]==NULL) 395 + bio_put(bio); 396 397 rdev_dec_pending(conf->mirrors[mirror].rdev, conf->mddev); 398 return 0;
+4 -3
drivers/md/raid5.c
··· 98 list_add_tail(&sh->lru, &conf->inactive_list); 99 atomic_dec(&conf->active_stripes); 100 if (!conf->inactive_blocked || 101 - atomic_read(&conf->active_stripes) < (NR_STRIPES*3/4)) 102 wake_up(&conf->wait_for_stripe); 103 } 104 } ··· 264 conf->inactive_blocked = 1; 265 wait_event_lock_irq(conf->wait_for_stripe, 266 !list_empty(&conf->inactive_list) && 267 - (atomic_read(&conf->active_stripes) < (NR_STRIPES *3/4) 268 || !conf->inactive_blocked), 269 conf->device_lock, 270 unplug_slaves(conf->mddev); ··· 1918 goto abort; 1919 } 1920 } 1921 - memory = conf->max_nr_stripes * (sizeof(struct stripe_head) + 1922 conf->raid_disks * ((sizeof(struct bio) + PAGE_SIZE))) / 1024; 1923 if (grow_stripes(conf, conf->max_nr_stripes)) { 1924 printk(KERN_ERR
··· 98 list_add_tail(&sh->lru, &conf->inactive_list); 99 atomic_dec(&conf->active_stripes); 100 if (!conf->inactive_blocked || 101 + atomic_read(&conf->active_stripes) < (conf->max_nr_stripes*3/4)) 102 wake_up(&conf->wait_for_stripe); 103 } 104 } ··· 264 conf->inactive_blocked = 1; 265 wait_event_lock_irq(conf->wait_for_stripe, 266 !list_empty(&conf->inactive_list) && 267 + (atomic_read(&conf->active_stripes) 268 + < (conf->max_nr_stripes *3/4) 269 || !conf->inactive_blocked), 270 conf->device_lock, 271 unplug_slaves(conf->mddev); ··· 1917 goto abort; 1918 } 1919 } 1920 + memory = conf->max_nr_stripes * (sizeof(struct stripe_head) + 1921 conf->raid_disks * ((sizeof(struct bio) + PAGE_SIZE))) / 1024; 1922 if (grow_stripes(conf, conf->max_nr_stripes)) { 1923 printk(KERN_ERR
+3 -3
drivers/media/common/Kconfig
··· 1 config VIDEO_SAA7146 2 - tristate 3 select I2C 4 5 config VIDEO_SAA7146_VV 6 - tristate 7 select VIDEO_BUF 8 select VIDEO_VIDEOBUF 9 select VIDEO_SAA7146 10 11 config VIDEO_VIDEOBUF 12 - tristate
··· 1 config VIDEO_SAA7146 2 + tristate 3 select I2C 4 5 config VIDEO_SAA7146_VV 6 + tristate 7 select VIDEO_BUF 8 select VIDEO_VIDEOBUF 9 select VIDEO_SAA7146 10 11 config VIDEO_VIDEOBUF 12 + tristate
+2 -2
drivers/media/common/Makefile
··· 1 - saa7146-objs := saa7146_i2c.o saa7146_core.o 2 - saa7146_vv-objs := saa7146_vv_ksyms.o saa7146_fops.o saa7146_video.o saa7146_hlp.o saa7146_vbi.o 3 4 obj-$(CONFIG_VIDEO_SAA7146) += saa7146.o 5 obj-$(CONFIG_VIDEO_SAA7146_VV) += saa7146_vv.o
··· 1 + saa7146-objs := saa7146_i2c.o saa7146_core.o 2 + saa7146_vv-objs := saa7146_vv_ksyms.o saa7146_fops.o saa7146_video.o saa7146_hlp.o saa7146_vbi.o 3 4 obj-$(CONFIG_VIDEO_SAA7146) += saa7146.o 5 obj-$(CONFIG_VIDEO_SAA7146_VV) += saa7146_vv.o
+1
drivers/media/common/ir-common.c
··· 313 if (ir_codes) 314 memcpy(ir->ir_codes, ir_codes, sizeof(ir->ir_codes)); 315 316 dev->keycode = ir->ir_codes; 317 dev->keycodesize = sizeof(IR_KEYTAB_TYPE); 318 dev->keycodemax = IR_KEYTAB_SIZE;
··· 313 if (ir_codes) 314 memcpy(ir->ir_codes, ir_codes, sizeof(ir->ir_codes)); 315 316 + 317 dev->keycode = ir->ir_codes; 318 dev->keycodesize = sizeof(IR_KEYTAB_TYPE); 319 dev->keycodemax = IR_KEYTAB_SIZE;
+3 -3
drivers/media/common/saa7146_core.c
··· 174 175 int saa7146_pgtable_alloc(struct pci_dev *pci, struct saa7146_pgtable *pt) 176 { 177 - u32 *cpu; 178 - dma_addr_t dma_addr; 179 180 cpu = pci_alloc_consistent(pci, PAGE_SIZE, &dma_addr); 181 if (NULL == cpu) { ··· 405 406 pci_set_drvdata(pci, dev); 407 408 - init_MUTEX(&dev->lock); 409 spin_lock_init(&dev->int_slock); 410 spin_lock_init(&dev->slock); 411
··· 174 175 int saa7146_pgtable_alloc(struct pci_dev *pci, struct saa7146_pgtable *pt) 176 { 177 + u32 *cpu; 178 + dma_addr_t dma_addr; 179 180 cpu = pci_alloc_consistent(pci, PAGE_SIZE, &dma_addr); 181 if (NULL == cpu) { ··· 405 406 pci_set_drvdata(pci, dev); 407 408 + init_MUTEX(&dev->lock); 409 spin_lock_init(&dev->int_slock); 410 spin_lock_init(&dev->slock); 411
+16 -16
drivers/media/common/saa7146_fops.c
··· 1 #include <media/saa7146_vv.h> 2 3 - #define BOARD_CAN_DO_VBI(dev) (dev->revision != 0 && dev->vv_data->vbi_minor != -1) 4 5 /****************************************************************************/ 6 /* resource management functions, shamelessly stolen from saa7134 driver */ ··· 102 /* finish current buffer */ 103 if (NULL == q->curr) { 104 DEB_D(("aiii. no current buffer\n")); 105 - return; 106 } 107 - 108 q->curr->vb.state = state; 109 do_gettimeofday(&q->curr->vb.ts); 110 wake_up(&q->curr->vb.done); ··· 143 // fixme: fix this for vflip != 0 144 145 saa7146_write(dev, PROT_ADDR1, 0); 146 - saa7146_write(dev, MC2, (MASK_02|MASK_18)); 147 148 /* write the address of the rps-program */ 149 saa7146_write(dev, RPS_ADDR0, dev->d_rps0.dma_handle); 150 /* turn on rps */ 151 saa7146_write(dev, MC1, (MASK_12 | MASK_28)); 152 - 153 /* 154 printk("vdma%d.base_even: 0x%08x\n", 1,saa7146_read(dev,BASE_EVEN1)); 155 printk("vdma%d.base_odd: 0x%08x\n", 1,saa7146_read(dev,BASE_ODD1)); ··· 246 goto out; 247 } 248 memset(fh,0,sizeof(*fh)); 249 - 250 file->private_data = fh; 251 fh->dev = dev; 252 fh->type = type; ··· 275 file->private_data = NULL; 276 } 277 up(&saa7146_devices_lock); 278 - return result; 279 } 280 281 static int fops_release(struct inode *inode, struct file *file) ··· 405 static void vv_callback(struct saa7146_dev *dev, unsigned long status) 406 { 407 u32 isr = status; 408 - 409 DEB_INT(("dev:%p, isr:0x%08x\n",dev,(u32)status)); 410 411 if (0 != (isr & (MASK_27))) { ··· 454 handle different devices that might need different 455 configuration data) */ 456 dev->ext_vv_data = ext_vv; 457 - 458 vv->video_minor = -1; 459 vv->vbi_minor = -1; 460 461 - vv->d_clipping.cpu_addr = pci_alloc_consistent(dev->pci, SAA7146_CLIPPING_MEM, &vv->d_clipping.dma_handle); 462 if( NULL == vv->d_clipping.cpu_addr ) { 463 ERR(("out of memory. aborting.\n")); 464 kfree(vv); ··· 468 469 saa7146_video_uops.init(dev,vv); 470 saa7146_vbi_uops.init(dev,vv); 471 - 472 dev->vv_data = vv; 473 dev->vv_callback = &vv_callback; 474 ··· 480 struct saa7146_vv *vv = dev->vv_data; 481 482 DEB_EE(("dev:%p\n",dev)); 483 - 484 pci_free_consistent(dev->pci, SAA7146_RPS_MEM, vv->d_clipping.cpu_addr, vv->d_clipping.dma_handle); 485 - kfree(vv); 486 dev->vv_data = NULL; 487 dev->vv_callback = NULL; 488 - 489 return 0; 490 } 491 ··· 498 DEB_EE(("dev:%p, name:'%s', type:%d\n",dev,name,type)); 499 500 // released by vfd->release 501 - vfd = video_device_alloc(); 502 if (vfd == NULL) 503 return -ENOMEM; 504 ··· 530 int saa7146_unregister_device(struct video_device **vid, struct saa7146_dev* dev) 531 { 532 struct saa7146_vv *vv = dev->vv_data; 533 - 534 DEB_EE(("dev:%p\n",dev)); 535 536 if( VFL_TYPE_GRABBER == (*vid)->type ) {
··· 1 #include <media/saa7146_vv.h> 2 3 + #define BOARD_CAN_DO_VBI(dev) (dev->revision != 0 && dev->vv_data->vbi_minor != -1) 4 5 /****************************************************************************/ 6 /* resource management functions, shamelessly stolen from saa7134 driver */ ··· 102 /* finish current buffer */ 103 if (NULL == q->curr) { 104 DEB_D(("aiii. no current buffer\n")); 105 + return; 106 } 107 + 108 q->curr->vb.state = state; 109 do_gettimeofday(&q->curr->vb.ts); 110 wake_up(&q->curr->vb.done); ··· 143 // fixme: fix this for vflip != 0 144 145 saa7146_write(dev, PROT_ADDR1, 0); 146 + saa7146_write(dev, MC2, (MASK_02|MASK_18)); 147 148 /* write the address of the rps-program */ 149 saa7146_write(dev, RPS_ADDR0, dev->d_rps0.dma_handle); 150 /* turn on rps */ 151 saa7146_write(dev, MC1, (MASK_12 | MASK_28)); 152 + 153 /* 154 printk("vdma%d.base_even: 0x%08x\n", 1,saa7146_read(dev,BASE_EVEN1)); 155 printk("vdma%d.base_odd: 0x%08x\n", 1,saa7146_read(dev,BASE_ODD1)); ··· 246 goto out; 247 } 248 memset(fh,0,sizeof(*fh)); 249 + 250 file->private_data = fh; 251 fh->dev = dev; 252 fh->type = type; ··· 275 file->private_data = NULL; 276 } 277 up(&saa7146_devices_lock); 278 + return result; 279 } 280 281 static int fops_release(struct inode *inode, struct file *file) ··· 405 static void vv_callback(struct saa7146_dev *dev, unsigned long status) 406 { 407 u32 isr = status; 408 + 409 DEB_INT(("dev:%p, isr:0x%08x\n",dev,(u32)status)); 410 411 if (0 != (isr & (MASK_27))) { ··· 454 handle different devices that might need different 455 configuration data) */ 456 dev->ext_vv_data = ext_vv; 457 + 458 vv->video_minor = -1; 459 vv->vbi_minor = -1; 460 461 + vv->d_clipping.cpu_addr = pci_alloc_consistent(dev->pci, SAA7146_CLIPPING_MEM, &vv->d_clipping.dma_handle); 462 if( NULL == vv->d_clipping.cpu_addr ) { 463 ERR(("out of memory. aborting.\n")); 464 kfree(vv); ··· 468 469 saa7146_video_uops.init(dev,vv); 470 saa7146_vbi_uops.init(dev,vv); 471 + 472 dev->vv_data = vv; 473 dev->vv_callback = &vv_callback; 474 ··· 480 struct saa7146_vv *vv = dev->vv_data; 481 482 DEB_EE(("dev:%p\n",dev)); 483 + 484 pci_free_consistent(dev->pci, SAA7146_RPS_MEM, vv->d_clipping.cpu_addr, vv->d_clipping.dma_handle); 485 + kfree(vv); 486 dev->vv_data = NULL; 487 dev->vv_callback = NULL; 488 + 489 return 0; 490 } 491 ··· 498 DEB_EE(("dev:%p, name:'%s', type:%d\n",dev,name,type)); 499 500 // released by vfd->release 501 + vfd = video_device_alloc(); 502 if (vfd == NULL) 503 return -ENOMEM; 504 ··· 530 int saa7146_unregister_device(struct video_device **vid, struct saa7146_dev* dev) 531 { 532 struct saa7146_vv *vv = dev->vv_data; 533 + 534 DEB_EE(("dev:%p\n",dev)); 535 536 if( VFL_TYPE_GRABBER == (*vid)->type ) {
+8 -8
drivers/media/common/saa7146_i2c.c
··· 276 int i = 0, count = 0; 277 u32* buffer = dev->d_i2c.cpu_addr; 278 int err = 0; 279 - int address_err = 0; 280 - int short_delay = 0; 281 282 if (down_interruptible (&dev->i2c_lock)) 283 return -ERESTARTSYS; ··· 325 if( 0 != (SAA7146_USE_I2C_IRQ & dev->ext->flags)) { 326 goto out; 327 } 328 - address_err++; 329 } 330 DEB_I2C(("error while sending message(s). starting again.\n")); 331 break; ··· 336 break; 337 } 338 339 - /* delay a bit before retrying */ 340 - msleep(10); 341 342 } while (err != num && retries--); 343 344 - /* if every retry had an address error, exit right away */ 345 - if (address_err == retries) { 346 - goto out; 347 } 348 349 /* if any things had to be read, get the results */
··· 276 int i = 0, count = 0; 277 u32* buffer = dev->d_i2c.cpu_addr; 278 int err = 0; 279 + int address_err = 0; 280 + int short_delay = 0; 281 282 if (down_interruptible (&dev->i2c_lock)) 283 return -ERESTARTSYS; ··· 325 if( 0 != (SAA7146_USE_I2C_IRQ & dev->ext->flags)) { 326 goto out; 327 } 328 + address_err++; 329 } 330 DEB_I2C(("error while sending message(s). starting again.\n")); 331 break; ··· 336 break; 337 } 338 339 + /* delay a bit before retrying */ 340 + msleep(10); 341 342 } while (err != num && retries--); 343 344 + /* if every retry had an address error, exit right away */ 345 + if (address_err == retries) { 346 + goto out; 347 } 348 349 /* if any things had to be read, get the results */
+2 -2
drivers/media/common/saa7146_vbi.c
··· 6 { 7 struct saa7146_vv *vv = dev->vv_data; 8 9 - u32 *cpu; 10 - dma_addr_t dma_addr; 11 12 int count = 0; 13 int i;
··· 6 { 7 struct saa7146_vv *vv = dev->vv_data; 8 9 + u32 *cpu; 10 + dma_addr_t dma_addr; 11 12 int count = 0; 13 int i;
+23 -23
drivers/media/common/saa7146_video.c
··· 150 maxh = vv->standard->v_max_out; 151 152 if (V4L2_FIELD_ANY == field) { 153 - field = (win->w.height > maxh/2) 154 - ? V4L2_FIELD_INTERLACED 155 - : V4L2_FIELD_TOP; 156 - } 157 - switch (field) { 158 - case V4L2_FIELD_TOP: 159 - case V4L2_FIELD_BOTTOM: 160 - case V4L2_FIELD_ALTERNATE: 161 - maxh = maxh / 2; 162 - break; 163 - case V4L2_FIELD_INTERLACED: 164 - break; 165 - default: { 166 DEB_D(("no known field mode '%d'.\n",field)); 167 - return -EINVAL; 168 } 169 - } 170 171 win->field = field; 172 if (win->w.width > maxw) ··· 887 888 DEB_EE(("VIDIOC_QUERYCAP\n")); 889 890 - strcpy(cap->driver, "saa7146 v4l2"); 891 strlcpy(cap->card, dev->ext->name, sizeof(cap->card)); 892 sprintf(cap->bus_info,"PCI:%s", pci_name(dev->pci)); 893 cap->version = SAA7146_VERSION_CODE; ··· 1011 err = set_control(fh,arg); 1012 return err; 1013 } 1014 - case VIDIOC_G_PARM: 1015 - { 1016 - struct v4l2_streamparm *parm = arg; 1017 if( parm->type != V4L2_BUF_TYPE_VIDEO_CAPTURE ) { 1018 return -EINVAL; 1019 } 1020 - memset(&parm->parm.capture,0,sizeof(struct v4l2_captureparm)); 1021 parm->parm.capture.readbuffers = 1; 1022 // fixme: only for PAL! 1023 parm->parm.capture.timeperframe.numerator = 1; 1024 parm->parm.capture.timeperframe.denominator = 25; 1025 - return 0; 1026 - } 1027 case VIDIOC_G_FMT: 1028 { 1029 struct v4l2_format *f = arg; ··· 1383 1384 static void video_init(struct saa7146_dev *dev, struct saa7146_vv *vv) 1385 { 1386 - INIT_LIST_HEAD(&vv->video_q.queue); 1387 1388 init_timer(&vv->video_q.timeout); 1389 vv->video_q.timeout.function = saa7146_buffer_timeout;
··· 150 maxh = vv->standard->v_max_out; 151 152 if (V4L2_FIELD_ANY == field) { 153 + field = (win->w.height > maxh/2) 154 + ? V4L2_FIELD_INTERLACED 155 + : V4L2_FIELD_TOP; 156 + } 157 + switch (field) { 158 + case V4L2_FIELD_TOP: 159 + case V4L2_FIELD_BOTTOM: 160 + case V4L2_FIELD_ALTERNATE: 161 + maxh = maxh / 2; 162 + break; 163 + case V4L2_FIELD_INTERLACED: 164 + break; 165 + default: { 166 DEB_D(("no known field mode '%d'.\n",field)); 167 + return -EINVAL; 168 } 169 + } 170 171 win->field = field; 172 if (win->w.width > maxw) ··· 887 888 DEB_EE(("VIDIOC_QUERYCAP\n")); 889 890 + strcpy(cap->driver, "saa7146 v4l2"); 891 strlcpy(cap->card, dev->ext->name, sizeof(cap->card)); 892 sprintf(cap->bus_info,"PCI:%s", pci_name(dev->pci)); 893 cap->version = SAA7146_VERSION_CODE; ··· 1011 err = set_control(fh,arg); 1012 return err; 1013 } 1014 + case VIDIOC_G_PARM: 1015 + { 1016 + struct v4l2_streamparm *parm = arg; 1017 if( parm->type != V4L2_BUF_TYPE_VIDEO_CAPTURE ) { 1018 return -EINVAL; 1019 } 1020 + memset(&parm->parm.capture,0,sizeof(struct v4l2_captureparm)); 1021 parm->parm.capture.readbuffers = 1; 1022 // fixme: only for PAL! 1023 parm->parm.capture.timeperframe.numerator = 1; 1024 parm->parm.capture.timeperframe.denominator = 25; 1025 + return 0; 1026 + } 1027 case VIDIOC_G_FMT: 1028 { 1029 struct v4l2_format *f = arg; ··· 1383 1384 static void video_init(struct saa7146_dev *dev, struct saa7146_vv *vv) 1385 { 1386 + INIT_LIST_HEAD(&vv->video_q.queue); 1387 1388 init_timer(&vv->video_q.timeout); 1389 vv->video_q.timeout.function = saa7146_buffer_timeout;
+1 -1
drivers/media/dvb/b2c2/flexcop-common.h
··· 132 * I2C-channel of the flexcop. 133 */ 134 int flexcop_i2c_request(struct flexcop_device*, flexcop_access_op_t, 135 - flexcop_i2c_port_t, u8 chipaddr, u8 addr, u8 *buf, u16 len); 136 137 /* from flexcop-sram.c */ 138 int flexcop_sram_set_dest(struct flexcop_device *fc, flexcop_sram_dest_t dest, flexcop_sram_dest_target_t target);
··· 132 * I2C-channel of the flexcop. 133 */ 134 int flexcop_i2c_request(struct flexcop_device*, flexcop_access_op_t, 135 + flexcop_i2c_port_t, u8 chipaddr, u8 addr, u8 *buf, u16 len); 136 137 /* from flexcop-sram.c */ 138 int flexcop_sram_set_dest(struct flexcop_device *fc, flexcop_sram_dest_t dest, flexcop_sram_dest_target_t target);
+2 -2
drivers/media/dvb/b2c2/flexcop-fe-tuner.c
··· 298 } 299 300 static int lgdt3303_pll_set(struct dvb_frontend* fe, 301 - struct dvb_frontend_parameters* params) 302 { 303 struct flexcop_device *fc = fe->dvb->priv; 304 u8 buf[4]; ··· 332 return -EREMOTEIO; 333 } 334 335 - return 0; 336 } 337 338 static struct lgdt330x_config air2pc_atsc_hd5000_config = {
··· 298 } 299 300 static int lgdt3303_pll_set(struct dvb_frontend* fe, 301 + struct dvb_frontend_parameters* params) 302 { 303 struct flexcop_device *fc = fe->dvb->priv; 304 u8 buf[4]; ··· 332 return -EREMOTEIO; 333 } 334 335 + return 0; 336 } 337 338 static struct lgdt330x_config air2pc_atsc_hd5000_config = {
+3 -3
drivers/media/dvb/bt8xx/dvb-bt8xx.c
··· 556 dprintk("%s: tuner at 0x%02x bytes: 0x%02x 0x%02x 0x%02x 0x%02x\n", 557 __FUNCTION__, msg.addr, buf[0],buf[1],buf[2],buf[3]); 558 if ((err = i2c_transfer(card->i2c_adapter, &msg, 1)) != 1) { 559 - printk(KERN_WARNING "dvb-bt8xx: %s error " 560 - "(addr %02x <- %02x, err = %i)\n", 561 - __FUNCTION__, buf[0], buf[1], err); 562 if (err < 0) 563 return err; 564 else
··· 556 dprintk("%s: tuner at 0x%02x bytes: 0x%02x 0x%02x 0x%02x 0x%02x\n", 557 __FUNCTION__, msg.addr, buf[0],buf[1],buf[2],buf[3]); 558 if ((err = i2c_transfer(card->i2c_adapter, &msg, 1)) != 1) { 559 + printk(KERN_WARNING "dvb-bt8xx: %s error " 560 + "(addr %02x <- %02x, err = %i)\n", 561 + __FUNCTION__, buf[0], buf[1], err); 562 if (err < 0) 563 return err; 564 else
+46 -46
drivers/media/dvb/dvb-core/demux.h
··· 86 87 enum dmx_ts_pes 88 { /* also send packets to decoder (if it exists) */ 89 - DMX_TS_PES_AUDIO0, 90 DMX_TS_PES_VIDEO0, 91 DMX_TS_PES_TELETEXT0, 92 DMX_TS_PES_SUBTITLE0, 93 DMX_TS_PES_PCR0, 94 95 - DMX_TS_PES_AUDIO1, 96 DMX_TS_PES_VIDEO1, 97 DMX_TS_PES_TELETEXT1, 98 DMX_TS_PES_SUBTITLE1, 99 DMX_TS_PES_PCR1, 100 101 - DMX_TS_PES_AUDIO2, 102 DMX_TS_PES_VIDEO2, 103 DMX_TS_PES_TELETEXT2, 104 DMX_TS_PES_SUBTITLE2, 105 DMX_TS_PES_PCR2, 106 107 - DMX_TS_PES_AUDIO3, 108 DMX_TS_PES_VIDEO3, 109 DMX_TS_PES_TELETEXT3, 110 DMX_TS_PES_SUBTITLE3, ··· 121 122 123 struct dmx_ts_feed { 124 - int is_filtering; /* Set to non-zero when filtering in progress */ 125 - struct dmx_demux *parent; /* Back-pointer */ 126 - void *priv; /* Pointer to private data of the API client */ 127 - int (*set) (struct dmx_ts_feed *feed, 128 u16 pid, 129 int type, 130 enum dmx_ts_pes pes_type, 131 size_t circular_buffer_size, 132 struct timespec timeout); 133 - int (*start_filtering) (struct dmx_ts_feed* feed); 134 - int (*stop_filtering) (struct dmx_ts_feed* feed); 135 }; 136 137 /*--------------------------------------------------------------------------*/ ··· 139 /*--------------------------------------------------------------------------*/ 140 141 struct dmx_section_filter { 142 - u8 filter_value [DMX_MAX_FILTER_SIZE]; 143 - u8 filter_mask [DMX_MAX_FILTER_SIZE]; 144 - u8 filter_mode [DMX_MAX_FILTER_SIZE]; 145 - struct dmx_section_feed* parent; /* Back-pointer */ 146 - void* priv; /* Pointer to private data of the API client */ 147 }; 148 149 struct dmx_section_feed { 150 - int is_filtering; /* Set to non-zero when filtering in progress */ 151 - struct dmx_demux* parent; /* Back-pointer */ 152 - void* priv; /* Pointer to private data of the API client */ 153 154 - int check_crc; 155 u32 crc_val; 156 157 - u8 *secbuf; 158 - u8 secbuf_base[DMX_MAX_SECFEED_SIZE]; 159 - u16 secbufp, seclen, tsfeedp; 160 161 - int (*set) (struct dmx_section_feed* feed, 162 u16 pid, 163 size_t circular_buffer_size, 164 int check_crc); 165 - int (*allocate_filter) (struct dmx_section_feed* feed, 166 struct dmx_section_filter** filter); 167 - int (*release_filter) (struct dmx_section_feed* feed, 168 struct dmx_section_filter* filter); 169 - int (*start_filtering) (struct dmx_section_feed* feed); 170 - int (*stop_filtering) (struct dmx_section_feed* feed); 171 }; 172 173 /*--------------------------------------------------------------------------*/ ··· 205 }; 206 207 struct dmx_frontend { 208 - struct list_head connectivity_list; /* List of front-ends that can 209 be connected to a particular 210 demux */ 211 - enum dmx_frontend_source source; 212 }; 213 214 /*--------------------------------------------------------------------------*/ ··· 240 #define DMX_FE_ENTRY(list) list_entry(list, struct dmx_frontend, connectivity_list) 241 242 struct dmx_demux { 243 - u32 capabilities; /* Bitfield of capability flags */ 244 - struct dmx_frontend* frontend; /* Front-end connected to the demux */ 245 - void* priv; /* Pointer to private data of the API client */ 246 - int (*open) (struct dmx_demux* demux); 247 - int (*close) (struct dmx_demux* demux); 248 - int (*write) (struct dmx_demux* demux, const char* buf, size_t count); 249 - int (*allocate_ts_feed) (struct dmx_demux* demux, 250 struct dmx_ts_feed** feed, 251 dmx_ts_cb callback); 252 - int (*release_ts_feed) (struct dmx_demux* demux, 253 struct dmx_ts_feed* feed); 254 - int (*allocate_section_feed) (struct dmx_demux* demux, 255 struct dmx_section_feed** feed, 256 dmx_section_cb callback); 257 - int (*release_section_feed) (struct dmx_demux* demux, 258 struct dmx_section_feed* feed); 259 - int (*add_frontend) (struct dmx_demux* demux, 260 struct dmx_frontend* frontend); 261 - int (*remove_frontend) (struct dmx_demux* demux, 262 struct dmx_frontend* frontend); 263 - struct list_head* (*get_frontends) (struct dmx_demux* demux); 264 - int (*connect_frontend) (struct dmx_demux* demux, 265 struct dmx_frontend* frontend); 266 - int (*disconnect_frontend) (struct dmx_demux* demux); 267 268 - int (*get_pes_pids) (struct dmx_demux* demux, u16 *pids); 269 270 int (*get_caps) (struct dmx_demux* demux, struct dmx_caps *caps); 271 272 int (*set_source) (struct dmx_demux* demux, const dmx_source_t *src); 273 274 - int (*get_stc) (struct dmx_demux* demux, unsigned int num, 275 u64 *stc, unsigned int *base); 276 }; 277
··· 86 87 enum dmx_ts_pes 88 { /* also send packets to decoder (if it exists) */ 89 + DMX_TS_PES_AUDIO0, 90 DMX_TS_PES_VIDEO0, 91 DMX_TS_PES_TELETEXT0, 92 DMX_TS_PES_SUBTITLE0, 93 DMX_TS_PES_PCR0, 94 95 + DMX_TS_PES_AUDIO1, 96 DMX_TS_PES_VIDEO1, 97 DMX_TS_PES_TELETEXT1, 98 DMX_TS_PES_SUBTITLE1, 99 DMX_TS_PES_PCR1, 100 101 + DMX_TS_PES_AUDIO2, 102 DMX_TS_PES_VIDEO2, 103 DMX_TS_PES_TELETEXT2, 104 DMX_TS_PES_SUBTITLE2, 105 DMX_TS_PES_PCR2, 106 107 + DMX_TS_PES_AUDIO3, 108 DMX_TS_PES_VIDEO3, 109 DMX_TS_PES_TELETEXT3, 110 DMX_TS_PES_SUBTITLE3, ··· 121 122 123 struct dmx_ts_feed { 124 + int is_filtering; /* Set to non-zero when filtering in progress */ 125 + struct dmx_demux *parent; /* Back-pointer */ 126 + void *priv; /* Pointer to private data of the API client */ 127 + int (*set) (struct dmx_ts_feed *feed, 128 u16 pid, 129 int type, 130 enum dmx_ts_pes pes_type, 131 size_t circular_buffer_size, 132 struct timespec timeout); 133 + int (*start_filtering) (struct dmx_ts_feed* feed); 134 + int (*stop_filtering) (struct dmx_ts_feed* feed); 135 }; 136 137 /*--------------------------------------------------------------------------*/ ··· 139 /*--------------------------------------------------------------------------*/ 140 141 struct dmx_section_filter { 142 + u8 filter_value [DMX_MAX_FILTER_SIZE]; 143 + u8 filter_mask [DMX_MAX_FILTER_SIZE]; 144 + u8 filter_mode [DMX_MAX_FILTER_SIZE]; 145 + struct dmx_section_feed* parent; /* Back-pointer */ 146 + void* priv; /* Pointer to private data of the API client */ 147 }; 148 149 struct dmx_section_feed { 150 + int is_filtering; /* Set to non-zero when filtering in progress */ 151 + struct dmx_demux* parent; /* Back-pointer */ 152 + void* priv; /* Pointer to private data of the API client */ 153 154 + int check_crc; 155 u32 crc_val; 156 157 + u8 *secbuf; 158 + u8 secbuf_base[DMX_MAX_SECFEED_SIZE]; 159 + u16 secbufp, seclen, tsfeedp; 160 161 + int (*set) (struct dmx_section_feed* feed, 162 u16 pid, 163 size_t circular_buffer_size, 164 int check_crc); 165 + int (*allocate_filter) (struct dmx_section_feed* feed, 166 struct dmx_section_filter** filter); 167 + int (*release_filter) (struct dmx_section_feed* feed, 168 struct dmx_section_filter* filter); 169 + int (*start_filtering) (struct dmx_section_feed* feed); 170 + int (*stop_filtering) (struct dmx_section_feed* feed); 171 }; 172 173 /*--------------------------------------------------------------------------*/ ··· 205 }; 206 207 struct dmx_frontend { 208 + struct list_head connectivity_list; /* List of front-ends that can 209 be connected to a particular 210 demux */ 211 + enum dmx_frontend_source source; 212 }; 213 214 /*--------------------------------------------------------------------------*/ ··· 240 #define DMX_FE_ENTRY(list) list_entry(list, struct dmx_frontend, connectivity_list) 241 242 struct dmx_demux { 243 + u32 capabilities; /* Bitfield of capability flags */ 244 + struct dmx_frontend* frontend; /* Front-end connected to the demux */ 245 + void* priv; /* Pointer to private data of the API client */ 246 + int (*open) (struct dmx_demux* demux); 247 + int (*close) (struct dmx_demux* demux); 248 + int (*write) (struct dmx_demux* demux, const char* buf, size_t count); 249 + int (*allocate_ts_feed) (struct dmx_demux* demux, 250 struct dmx_ts_feed** feed, 251 dmx_ts_cb callback); 252 + int (*release_ts_feed) (struct dmx_demux* demux, 253 struct dmx_ts_feed* feed); 254 + int (*allocate_section_feed) (struct dmx_demux* demux, 255 struct dmx_section_feed** feed, 256 dmx_section_cb callback); 257 + int (*release_section_feed) (struct dmx_demux* demux, 258 struct dmx_section_feed* feed); 259 + int (*add_frontend) (struct dmx_demux* demux, 260 struct dmx_frontend* frontend); 261 + int (*remove_frontend) (struct dmx_demux* demux, 262 struct dmx_frontend* frontend); 263 + struct list_head* (*get_frontends) (struct dmx_demux* demux); 264 + int (*connect_frontend) (struct dmx_demux* demux, 265 struct dmx_frontend* frontend); 266 + int (*disconnect_frontend) (struct dmx_demux* demux); 267 268 + int (*get_pes_pids) (struct dmx_demux* demux, u16 *pids); 269 270 int (*get_caps) (struct dmx_demux* demux, struct dmx_caps *caps); 271 272 int (*set_source) (struct dmx_demux* demux, const dmx_source_t *src); 273 274 + int (*get_stc) (struct dmx_demux* demux, unsigned int num, 275 u64 *stc, unsigned int *base); 276 }; 277
+1 -1
drivers/media/dvb/dvb-core/dmxdev.c
··· 947 948 case DMX_GET_STC: 949 if (!dmxdev->demux->get_stc) { 950 - ret=-EINVAL; 951 break; 952 } 953 ret = dmxdev->demux->get_stc(dmxdev->demux,
··· 947 948 case DMX_GET_STC: 949 if (!dmxdev->demux->get_stc) { 950 + ret=-EINVAL; 951 break; 952 } 953 ret = dmxdev->demux->get_stc(dmxdev->demux,
+32 -32
drivers/media/dvb/dvb-core/dmxdev.h
··· 53 }; 54 55 struct dmxdev_buffer { 56 - u8 *data; 57 - int size; 58 - int pread; 59 - int pwrite; 60 wait_queue_head_t queue; 61 - int error; 62 }; 63 64 struct dmxdev_filter { 65 struct dvb_device *dvbdev; 66 67 - union { 68 - struct dmx_section_filter *sec; 69 } filter; 70 71 - union { 72 - struct dmx_ts_feed *ts; 73 - struct dmx_section_feed *sec; 74 } feed; 75 76 - union { 77 - struct dmx_sct_filter_params sec; 78 - struct dmx_pes_filter_params pes; 79 } params; 80 81 - int type; 82 - enum dmxdev_state state; 83 - struct dmxdev *dev; 84 - struct dmxdev_buffer buffer; 85 86 struct semaphore mutex; 87 88 - /* only for sections */ 89 - struct timer_list timer; 90 - int todo; 91 - u8 secheader[3]; 92 93 - u16 pid; 94 }; 95 96 97 struct dmxdev_dvr { 98 - int state; 99 - struct dmxdev *dev; 100 - struct dmxdev_buffer buffer; 101 }; 102 103 ··· 105 struct dvb_device *dvbdev; 106 struct dvb_device *dvr_dvbdev; 107 108 - struct dmxdev_filter *filter; 109 - struct dmxdev_dvr *dvr; 110 - struct dmx_demux *demux; 111 112 - int filternum; 113 - int capabilities; 114 #define DMXDEV_CAP_DUPLEX 1 115 - struct dmx_frontend *dvr_orig_fe; 116 117 - struct dmxdev_buffer dvr_buffer; 118 #define DVR_BUFFER_SIZE (10*188*1024) 119 120 struct semaphore mutex;
··· 53 }; 54 55 struct dmxdev_buffer { 56 + u8 *data; 57 + int size; 58 + int pread; 59 + int pwrite; 60 wait_queue_head_t queue; 61 + int error; 62 }; 63 64 struct dmxdev_filter { 65 struct dvb_device *dvbdev; 66 67 + union { 68 + struct dmx_section_filter *sec; 69 } filter; 70 71 + union { 72 + struct dmx_ts_feed *ts; 73 + struct dmx_section_feed *sec; 74 } feed; 75 76 + union { 77 + struct dmx_sct_filter_params sec; 78 + struct dmx_pes_filter_params pes; 79 } params; 80 81 + int type; 82 + enum dmxdev_state state; 83 + struct dmxdev *dev; 84 + struct dmxdev_buffer buffer; 85 86 struct semaphore mutex; 87 88 + /* only for sections */ 89 + struct timer_list timer; 90 + int todo; 91 + u8 secheader[3]; 92 93 + u16 pid; 94 }; 95 96 97 struct dmxdev_dvr { 98 + int state; 99 + struct dmxdev *dev; 100 + struct dmxdev_buffer buffer; 101 }; 102 103 ··· 105 struct dvb_device *dvbdev; 106 struct dvb_device *dvr_dvbdev; 107 108 + struct dmxdev_filter *filter; 109 + struct dmxdev_dvr *dvr; 110 + struct dmx_demux *demux; 111 112 + int filternum; 113 + int capabilities; 114 #define DMXDEV_CAP_DUPLEX 1 115 + struct dmx_frontend *dvr_orig_fe; 116 117 + struct dmxdev_buffer dvr_buffer; 118 #define DVR_BUFFER_SIZE (10*188*1024) 119 120 struct semaphore mutex;
+1 -1
drivers/media/dvb/dvb-core/dvb_ca_en50221.c
··· 498 /* process the CFTABLE_ENTRY tuples, and any after those */ 499 while ((!end_chain) && (address < 0x1000)) { 500 if ((status = dvb_ca_en50221_read_tuple(ca, slot, &address, &tupleType, 501 - &tupleLength, tuple)) < 0) 502 return status; 503 switch (tupleType) { 504 case 0x1B: // CISTPL_CFTABLE_ENTRY
··· 498 /* process the CFTABLE_ENTRY tuples, and any after those */ 499 while ((!end_chain) && (address < 0x1000)) { 500 if ((status = dvb_ca_en50221_read_tuple(ca, slot, &address, &tupleType, 501 + &tupleLength, tuple)) < 0) 502 return status; 503 switch (tupleType) { 504 case 0x1B: // CISTPL_CFTABLE_ENTRY
+154 -154
drivers/media/dvb/dvb-core/dvb_filter.c
··· 72 u8 pct; 73 74 if (pr) printk( "Pic header: "); 75 - pic->temporal_reference[field] = (( headr[0] << 2 ) | 76 (headr[1] & 0x03) )& 0x03ff; 77 if (pr) printk( " temp ref: 0x%04x", pic->temporal_reference[field]); 78 79 pct = ( headr[1] >> 2 ) & 0x07; 80 - pic->picture_coding_type[field] = pct; 81 if (pr) { 82 switch(pct){ 83 case I_FRAME: ··· 93 } 94 95 96 - pic->vinfo.vbv_delay = (( headr[1] >> 5 ) | ( headr[2] << 3) | 97 ( (headr[3] & 0x1F) << 11) ) & 0xffff; 98 99 if (pr) printk( " vbv delay: 0x%04x", pic->vinfo.vbv_delay); 100 101 - pic->picture_header_parameter = ( headr[3] & 0xe0 ) | 102 ((headr[4] & 0x80) >> 3); 103 104 - if ( pct == B_FRAME ){ 105 - pic->picture_header_parameter |= ( headr[4] >> 3 ) & 0x0f; 106 - } 107 if (pr) printk( " pic head param: 0x%x", 108 pic->picture_header_parameter); 109 ··· 124 ((headr[0]<<4)& 0x30)| ((headr[1]>>4)& 0x0F), 125 ((headr[1]<<3)& 0x38)| ((headr[2]>>5)& 0x0F)); 126 127 - if ( ( headr[3] & 0x40 ) != 0 ){ 128 - pic->closed_gop = 1; 129 - } else { 130 - pic->closed_gop = 0; 131 - } 132 if (pr) printk("closed: %d", pic->closed_gop); 133 134 - if ( ( headr[3] & 0x20 ) != 0 ){ 135 - pic->broken_link = 1; 136 - } else { 137 - pic->broken_link = 0; 138 - } 139 if (pr) printk(" broken: %d\n", pic->broken_link); 140 141 return 0; ··· 146 /* needs 8 byte input */ 147 static int read_sequence_header(u8 *headr, struct dvb_video_info *vi, int pr) 148 { 149 - int sw; 150 int form = -1; 151 152 if (pr) printk("Reading sequence header\n"); ··· 154 vi->horizontal_size = ((headr[1] &0xF0) >> 4) | (headr[0] << 4); 155 vi->vertical_size = ((headr[1] &0x0F) << 8) | (headr[2]); 156 157 - sw = (int)((headr[3]&0xF0) >> 4) ; 158 159 - switch( sw ){ 160 case 1: 161 if (pr) 162 printk("Videostream: ASPECT: 1:1"); ··· 165 case 2: 166 if (pr) 167 printk("Videostream: ASPECT: 4:3"); 168 - vi->aspect_ratio = 133; 169 break; 170 case 3: 171 if (pr) 172 printk("Videostream: ASPECT: 16:9"); 173 - vi->aspect_ratio = 177; 174 break; 175 case 4: 176 if (pr) 177 printk("Videostream: ASPECT: 2.21:1"); 178 - vi->aspect_ratio = 221; 179 break; 180 181 - case 5 ... 15: 182 if (pr) 183 printk("Videostream: ASPECT: reserved"); 184 - vi->aspect_ratio = 0; 185 break; 186 187 - default: 188 - vi->aspect_ratio = 0; 189 - return -1; 190 } 191 192 if (pr) 193 printk(" Size = %dx%d",vi->horizontal_size,vi->vertical_size); 194 195 - sw = (int)(headr[3]&0x0F); 196 197 - switch ( sw ) { 198 case 1: 199 if (pr) 200 printk(" FRate: 23.976 fps"); 201 - vi->framerate = 23976; 202 form = -1; 203 break; 204 case 2: 205 if (pr) 206 printk(" FRate: 24 fps"); 207 - vi->framerate = 24000; 208 form = -1; 209 break; 210 case 3: 211 if (pr) 212 printk(" FRate: 25 fps"); 213 - vi->framerate = 25000; 214 form = VIDEO_MODE_PAL; 215 break; 216 case 4: 217 if (pr) 218 printk(" FRate: 29.97 fps"); 219 - vi->framerate = 29970; 220 form = VIDEO_MODE_NTSC; 221 break; 222 case 5: 223 if (pr) 224 printk(" FRate: 30 fps"); 225 - vi->framerate = 30000; 226 form = VIDEO_MODE_NTSC; 227 break; 228 case 6: 229 if (pr) 230 printk(" FRate: 50 fps"); 231 - vi->framerate = 50000; 232 form = VIDEO_MODE_PAL; 233 break; 234 case 7: 235 if (pr) 236 printk(" FRate: 60 fps"); 237 - vi->framerate = 60000; 238 form = VIDEO_MODE_NTSC; 239 break; 240 } 241 242 vi->bit_rate = (headr[4] << 10) | (headr[5] << 2) | (headr[6] & 0x03); 243 244 - vi->vbv_buffer_size 245 - = (( headr[6] & 0xF8) >> 3 ) | (( headr[7] & 0x1F )<< 5); 246 247 if (pr){ 248 printk(" BRate: %d Mbit/s",4*(vi->bit_rate)/10000); ··· 250 printk("\n"); 251 } 252 253 - vi->video_format = form; 254 255 return 0; 256 } ··· 308 if (!found) return -1; 309 310 if (c+3 >= count) return -1; 311 - headr = mbuf+c; 312 313 ai->layer = (headr[1] & 0x06) >> 1; 314 ··· 368 if (c+5 >= count) return -1; 369 370 ai->layer = 0; // 0 for AC3 371 - headr = mbuf+c+2; 372 373 frame = (headr[2]&0x3f); 374 ai->bit_rate = ac3_bitrates[frame >> 1]*1000; ··· 396 #if 0 397 static u8 *skip_pes_header(u8 **bufp) 398 { 399 - u8 *inbuf = *bufp; 400 - u8 *buf = inbuf; 401 - u8 *pts = NULL; 402 - int skip = 0; 403 404 static const int mpeg1_skip_table[16] = { 405 1, 0xffff, 5, 10, 0xffff, 0xffff, 0xffff, 0xffff, 406 - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff 407 }; 408 409 410 - if ((inbuf[6] & 0xc0) == 0x80){ /* mpeg2 */ 411 - if (buf[7] & PTS_ONLY) 412 - pts = buf+9; 413 - else pts = NULL; 414 - buf = inbuf + 9 + inbuf[8]; 415 - } else { /* mpeg1 */ 416 - for (buf = inbuf + 6; *buf == 0xff; buf++) 417 - if (buf == inbuf + 6 + 16) { 418 - break; 419 - } 420 - if ((*buf & 0xc0) == 0x40) 421 - buf += 2; 422 - skip = mpeg1_skip_table [*buf >> 4]; 423 - if (skip == 5 || skip == 10) pts = buf; 424 - else pts = NULL; 425 426 - buf += mpeg1_skip_table [*buf >> 4]; 427 - } 428 429 - *bufp = buf; 430 - return pts; 431 } 432 #endif 433 434 #if 0 435 static void initialize_quant_matrix( u32 *matrix ) 436 { 437 - int i; 438 439 - matrix[0] = 0x08101013; 440 - matrix[1] = 0x10131616; 441 - matrix[2] = 0x16161616; 442 - matrix[3] = 0x1a181a1b; 443 - matrix[4] = 0x1b1b1a1a; 444 - matrix[5] = 0x1a1a1b1b; 445 - matrix[6] = 0x1b1d1d1d; 446 - matrix[7] = 0x2222221d; 447 - matrix[8] = 0x1d1d1b1b; 448 - matrix[9] = 0x1d1d2020; 449 - matrix[10] = 0x22222526; 450 - matrix[11] = 0x25232322; 451 - matrix[12] = 0x23262628; 452 - matrix[13] = 0x28283030; 453 - matrix[14] = 0x2e2e3838; 454 - matrix[15] = 0x3a454553; 455 456 - for ( i = 16 ; i < 32 ; i++ ) 457 - matrix[i] = 0x10101010; 458 } 459 #endif 460 461 #if 0 462 static void initialize_mpg_picture(struct mpg_picture *pic) 463 { 464 - int i; 465 466 - /* set MPEG1 */ 467 - pic->mpeg1_flag = 1; 468 - pic->profile_and_level = 0x4A ; /* MP@LL */ 469 - pic->progressive_sequence = 1; 470 - pic->low_delay = 0; 471 472 - pic->sequence_display_extension_flag = 0; 473 - for ( i = 0 ; i < 4 ; i++ ){ 474 - pic->frame_centre_horizontal_offset[i] = 0; 475 - pic->frame_centre_vertical_offset[i] = 0; 476 - } 477 - pic->last_frame_centre_horizontal_offset = 0; 478 - pic->last_frame_centre_vertical_offset = 0; 479 480 - pic->picture_display_extension_flag[0] = 0; 481 - pic->picture_display_extension_flag[1] = 0; 482 - pic->sequence_header_flag = 0; 483 pic->gop_flag = 0; 484 - pic->sequence_end_flag = 0; 485 } 486 #endif 487 488 #if 0 489 static void mpg_set_picture_parameter( int32_t field_type, struct mpg_picture *pic ) 490 { 491 - int16_t last_h_offset; 492 - int16_t last_v_offset; 493 494 - int16_t *p_h_offset; 495 - int16_t *p_v_offset; 496 497 - if ( pic->mpeg1_flag ){ 498 - pic->picture_structure[field_type] = VIDEO_FRAME_PICTURE; 499 - pic->top_field_first = 0; 500 - pic->repeat_first_field = 0; 501 - pic->progressive_frame = 1; 502 - pic->picture_coding_parameter = 0x000010; 503 - } 504 505 - /* Reset flag */ 506 - pic->picture_display_extension_flag[field_type] = 0; 507 508 - last_h_offset = pic->last_frame_centre_horizontal_offset; 509 - last_v_offset = pic->last_frame_centre_vertical_offset; 510 - if ( field_type == FIRST_FIELD ){ 511 - p_h_offset = pic->frame_centre_horizontal_offset; 512 - p_v_offset = pic->frame_centre_vertical_offset; 513 - *p_h_offset = last_h_offset; 514 - *(p_h_offset + 1) = last_h_offset; 515 - *(p_h_offset + 2) = last_h_offset; 516 - *p_v_offset = last_v_offset; 517 - *(p_v_offset + 1) = last_v_offset; 518 - *(p_v_offset + 2) = last_v_offset; 519 - } else { 520 - pic->frame_centre_horizontal_offset[3] = last_h_offset; 521 - pic->frame_centre_vertical_offset[3] = last_v_offset; 522 - } 523 } 524 #endif 525 526 #if 0 527 static void init_mpg_picture( struct mpg_picture *pic, int chan, int32_t field_type) 528 { 529 - pic->picture_header = 0; 530 - pic->sequence_header_data 531 - = ( INIT_HORIZONTAL_SIZE << 20 ) 532 - | ( INIT_VERTICAL_SIZE << 8 ) 533 - | ( INIT_ASPECT_RATIO << 4 ) 534 - | ( INIT_FRAME_RATE ); 535 - pic->mpeg1_flag = 0; 536 - pic->vinfo.horizontal_size 537 - = INIT_DISP_HORIZONTAL_SIZE; 538 - pic->vinfo.vertical_size 539 - = INIT_DISP_VERTICAL_SIZE; 540 - pic->picture_display_extension_flag[field_type] 541 - = 0; 542 - pic->pts_flag[field_type] = 0; 543 544 - pic->sequence_gop_header = 0; 545 - pic->picture_header = 0; 546 - pic->sequence_header_flag = 0; 547 - pic->gop_flag = 0; 548 - pic->sequence_end_flag = 0; 549 - pic->sequence_display_extension_flag = 0; 550 - pic->last_frame_centre_horizontal_offset = 0; 551 - pic->last_frame_centre_vertical_offset = 0; 552 pic->channel = chan; 553 } 554 #endif ··· 588 buf[1]&=~0x40; 589 } 590 if (!len) 591 - return 0; 592 buf[3]=0x30|((p2ts->cc++)&0x0f); 593 rest=183-len; 594 if (rest) { 595 - buf[5]=0x00; 596 if (rest-1) 597 memset(buf+6, 0xff, rest-1); 598 }
··· 72 u8 pct; 73 74 if (pr) printk( "Pic header: "); 75 + pic->temporal_reference[field] = (( headr[0] << 2 ) | 76 (headr[1] & 0x03) )& 0x03ff; 77 if (pr) printk( " temp ref: 0x%04x", pic->temporal_reference[field]); 78 79 pct = ( headr[1] >> 2 ) & 0x07; 80 + pic->picture_coding_type[field] = pct; 81 if (pr) { 82 switch(pct){ 83 case I_FRAME: ··· 93 } 94 95 96 + pic->vinfo.vbv_delay = (( headr[1] >> 5 ) | ( headr[2] << 3) | 97 ( (headr[3] & 0x1F) << 11) ) & 0xffff; 98 99 if (pr) printk( " vbv delay: 0x%04x", pic->vinfo.vbv_delay); 100 101 + pic->picture_header_parameter = ( headr[3] & 0xe0 ) | 102 ((headr[4] & 0x80) >> 3); 103 104 + if ( pct == B_FRAME ){ 105 + pic->picture_header_parameter |= ( headr[4] >> 3 ) & 0x0f; 106 + } 107 if (pr) printk( " pic head param: 0x%x", 108 pic->picture_header_parameter); 109 ··· 124 ((headr[0]<<4)& 0x30)| ((headr[1]>>4)& 0x0F), 125 ((headr[1]<<3)& 0x38)| ((headr[2]>>5)& 0x0F)); 126 127 + if ( ( headr[3] & 0x40 ) != 0 ){ 128 + pic->closed_gop = 1; 129 + } else { 130 + pic->closed_gop = 0; 131 + } 132 if (pr) printk("closed: %d", pic->closed_gop); 133 134 + if ( ( headr[3] & 0x20 ) != 0 ){ 135 + pic->broken_link = 1; 136 + } else { 137 + pic->broken_link = 0; 138 + } 139 if (pr) printk(" broken: %d\n", pic->broken_link); 140 141 return 0; ··· 146 /* needs 8 byte input */ 147 static int read_sequence_header(u8 *headr, struct dvb_video_info *vi, int pr) 148 { 149 + int sw; 150 int form = -1; 151 152 if (pr) printk("Reading sequence header\n"); ··· 154 vi->horizontal_size = ((headr[1] &0xF0) >> 4) | (headr[0] << 4); 155 vi->vertical_size = ((headr[1] &0x0F) << 8) | (headr[2]); 156 157 + sw = (int)((headr[3]&0xF0) >> 4) ; 158 159 + switch( sw ){ 160 case 1: 161 if (pr) 162 printk("Videostream: ASPECT: 1:1"); ··· 165 case 2: 166 if (pr) 167 printk("Videostream: ASPECT: 4:3"); 168 + vi->aspect_ratio = 133; 169 break; 170 case 3: 171 if (pr) 172 printk("Videostream: ASPECT: 16:9"); 173 + vi->aspect_ratio = 177; 174 break; 175 case 4: 176 if (pr) 177 printk("Videostream: ASPECT: 2.21:1"); 178 + vi->aspect_ratio = 221; 179 break; 180 181 + case 5 ... 15: 182 if (pr) 183 printk("Videostream: ASPECT: reserved"); 184 + vi->aspect_ratio = 0; 185 break; 186 187 + default: 188 + vi->aspect_ratio = 0; 189 + return -1; 190 } 191 192 if (pr) 193 printk(" Size = %dx%d",vi->horizontal_size,vi->vertical_size); 194 195 + sw = (int)(headr[3]&0x0F); 196 197 + switch ( sw ) { 198 case 1: 199 if (pr) 200 printk(" FRate: 23.976 fps"); 201 + vi->framerate = 23976; 202 form = -1; 203 break; 204 case 2: 205 if (pr) 206 printk(" FRate: 24 fps"); 207 + vi->framerate = 24000; 208 form = -1; 209 break; 210 case 3: 211 if (pr) 212 printk(" FRate: 25 fps"); 213 + vi->framerate = 25000; 214 form = VIDEO_MODE_PAL; 215 break; 216 case 4: 217 if (pr) 218 printk(" FRate: 29.97 fps"); 219 + vi->framerate = 29970; 220 form = VIDEO_MODE_NTSC; 221 break; 222 case 5: 223 if (pr) 224 printk(" FRate: 30 fps"); 225 + vi->framerate = 30000; 226 form = VIDEO_MODE_NTSC; 227 break; 228 case 6: 229 if (pr) 230 printk(" FRate: 50 fps"); 231 + vi->framerate = 50000; 232 form = VIDEO_MODE_PAL; 233 break; 234 case 7: 235 if (pr) 236 printk(" FRate: 60 fps"); 237 + vi->framerate = 60000; 238 form = VIDEO_MODE_NTSC; 239 break; 240 } 241 242 vi->bit_rate = (headr[4] << 10) | (headr[5] << 2) | (headr[6] & 0x03); 243 244 + vi->vbv_buffer_size 245 + = (( headr[6] & 0xF8) >> 3 ) | (( headr[7] & 0x1F )<< 5); 246 247 if (pr){ 248 printk(" BRate: %d Mbit/s",4*(vi->bit_rate)/10000); ··· 250 printk("\n"); 251 } 252 253 + vi->video_format = form; 254 255 return 0; 256 } ··· 308 if (!found) return -1; 309 310 if (c+3 >= count) return -1; 311 + headr = mbuf+c; 312 313 ai->layer = (headr[1] & 0x06) >> 1; 314 ··· 368 if (c+5 >= count) return -1; 369 370 ai->layer = 0; // 0 for AC3 371 + headr = mbuf+c+2; 372 373 frame = (headr[2]&0x3f); 374 ai->bit_rate = ac3_bitrates[frame >> 1]*1000; ··· 396 #if 0 397 static u8 *skip_pes_header(u8 **bufp) 398 { 399 + u8 *inbuf = *bufp; 400 + u8 *buf = inbuf; 401 + u8 *pts = NULL; 402 + int skip = 0; 403 404 static const int mpeg1_skip_table[16] = { 405 1, 0xffff, 5, 10, 0xffff, 0xffff, 0xffff, 0xffff, 406 + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff 407 }; 408 409 410 + if ((inbuf[6] & 0xc0) == 0x80){ /* mpeg2 */ 411 + if (buf[7] & PTS_ONLY) 412 + pts = buf+9; 413 + else pts = NULL; 414 + buf = inbuf + 9 + inbuf[8]; 415 + } else { /* mpeg1 */ 416 + for (buf = inbuf + 6; *buf == 0xff; buf++) 417 + if (buf == inbuf + 6 + 16) { 418 + break; 419 + } 420 + if ((*buf & 0xc0) == 0x40) 421 + buf += 2; 422 + skip = mpeg1_skip_table [*buf >> 4]; 423 + if (skip == 5 || skip == 10) pts = buf; 424 + else pts = NULL; 425 426 + buf += mpeg1_skip_table [*buf >> 4]; 427 + } 428 429 + *bufp = buf; 430 + return pts; 431 } 432 #endif 433 434 #if 0 435 static void initialize_quant_matrix( u32 *matrix ) 436 { 437 + int i; 438 439 + matrix[0] = 0x08101013; 440 + matrix[1] = 0x10131616; 441 + matrix[2] = 0x16161616; 442 + matrix[3] = 0x1a181a1b; 443 + matrix[4] = 0x1b1b1a1a; 444 + matrix[5] = 0x1a1a1b1b; 445 + matrix[6] = 0x1b1d1d1d; 446 + matrix[7] = 0x2222221d; 447 + matrix[8] = 0x1d1d1b1b; 448 + matrix[9] = 0x1d1d2020; 449 + matrix[10] = 0x22222526; 450 + matrix[11] = 0x25232322; 451 + matrix[12] = 0x23262628; 452 + matrix[13] = 0x28283030; 453 + matrix[14] = 0x2e2e3838; 454 + matrix[15] = 0x3a454553; 455 456 + for ( i = 16 ; i < 32 ; i++ ) 457 + matrix[i] = 0x10101010; 458 } 459 #endif 460 461 #if 0 462 static void initialize_mpg_picture(struct mpg_picture *pic) 463 { 464 + int i; 465 466 + /* set MPEG1 */ 467 + pic->mpeg1_flag = 1; 468 + pic->profile_and_level = 0x4A ; /* MP@LL */ 469 + pic->progressive_sequence = 1; 470 + pic->low_delay = 0; 471 472 + pic->sequence_display_extension_flag = 0; 473 + for ( i = 0 ; i < 4 ; i++ ){ 474 + pic->frame_centre_horizontal_offset[i] = 0; 475 + pic->frame_centre_vertical_offset[i] = 0; 476 + } 477 + pic->last_frame_centre_horizontal_offset = 0; 478 + pic->last_frame_centre_vertical_offset = 0; 479 480 + pic->picture_display_extension_flag[0] = 0; 481 + pic->picture_display_extension_flag[1] = 0; 482 + pic->sequence_header_flag = 0; 483 pic->gop_flag = 0; 484 + pic->sequence_end_flag = 0; 485 } 486 #endif 487 488 #if 0 489 static void mpg_set_picture_parameter( int32_t field_type, struct mpg_picture *pic ) 490 { 491 + int16_t last_h_offset; 492 + int16_t last_v_offset; 493 494 + int16_t *p_h_offset; 495 + int16_t *p_v_offset; 496 497 + if ( pic->mpeg1_flag ){ 498 + pic->picture_structure[field_type] = VIDEO_FRAME_PICTURE; 499 + pic->top_field_first = 0; 500 + pic->repeat_first_field = 0; 501 + pic->progressive_frame = 1; 502 + pic->picture_coding_parameter = 0x000010; 503 + } 504 505 + /* Reset flag */ 506 + pic->picture_display_extension_flag[field_type] = 0; 507 508 + last_h_offset = pic->last_frame_centre_horizontal_offset; 509 + last_v_offset = pic->last_frame_centre_vertical_offset; 510 + if ( field_type == FIRST_FIELD ){ 511 + p_h_offset = pic->frame_centre_horizontal_offset; 512 + p_v_offset = pic->frame_centre_vertical_offset; 513 + *p_h_offset = last_h_offset; 514 + *(p_h_offset + 1) = last_h_offset; 515 + *(p_h_offset + 2) = last_h_offset; 516 + *p_v_offset = last_v_offset; 517 + *(p_v_offset + 1) = last_v_offset; 518 + *(p_v_offset + 2) = last_v_offset; 519 + } else { 520 + pic->frame_centre_horizontal_offset[3] = last_h_offset; 521 + pic->frame_centre_vertical_offset[3] = last_v_offset; 522 + } 523 } 524 #endif 525 526 #if 0 527 static void init_mpg_picture( struct mpg_picture *pic, int chan, int32_t field_type) 528 { 529 + pic->picture_header = 0; 530 + pic->sequence_header_data 531 + = ( INIT_HORIZONTAL_SIZE << 20 ) 532 + | ( INIT_VERTICAL_SIZE << 8 ) 533 + | ( INIT_ASPECT_RATIO << 4 ) 534 + | ( INIT_FRAME_RATE ); 535 + pic->mpeg1_flag = 0; 536 + pic->vinfo.horizontal_size 537 + = INIT_DISP_HORIZONTAL_SIZE; 538 + pic->vinfo.vertical_size 539 + = INIT_DISP_VERTICAL_SIZE; 540 + pic->picture_display_extension_flag[field_type] 541 + = 0; 542 + pic->pts_flag[field_type] = 0; 543 544 + pic->sequence_gop_header = 0; 545 + pic->picture_header = 0; 546 + pic->sequence_header_flag = 0; 547 + pic->gop_flag = 0; 548 + pic->sequence_end_flag = 0; 549 + pic->sequence_display_extension_flag = 0; 550 + pic->last_frame_centre_horizontal_offset = 0; 551 + pic->last_frame_centre_vertical_offset = 0; 552 pic->channel = chan; 553 } 554 #endif ··· 588 buf[1]&=~0x40; 589 } 590 if (!len) 591 + return 0; 592 buf[3]=0x30|((p2ts->cc++)&0x0f); 593 rest=183-len; 594 if (rest) { 595 + buf[5]=0x00; 596 if (rest-1) 597 memset(buf+6, 0xff, rest-1); 598 }
+47 -47
drivers/media/dvb/dvb-core/dvb_filter.h
··· 29 30 struct dvb_filter_pes2ts { 31 unsigned char buf[188]; 32 - unsigned char cc; 33 - dvb_filter_pes2ts_cb_t *cb; 34 void *priv; 35 }; 36 ··· 162 u32 bit_rate; 163 u32 comp_bit_rate; 164 u32 vbv_buffer_size; 165 - s16 vbv_delay; 166 u32 CSPF; 167 u32 off; 168 }; ··· 173 #define VIDEO_FRAME_PICTURE 0x03 174 175 struct mpg_picture { 176 - int channel; 177 struct dvb_video_info vinfo; 178 - u32 *sequence_gop_header; 179 - u32 *picture_header; 180 - s32 time_code; 181 - int low_delay; 182 - int closed_gop; 183 - int broken_link; 184 - int sequence_header_flag; 185 - int gop_flag; 186 - int sequence_end_flag; 187 188 - u8 profile_and_level; 189 - s32 picture_coding_parameter; 190 - u32 matrix[32]; 191 - s8 matrix_change_flag; 192 193 - u8 picture_header_parameter; 194 /* bit 0 - 2: bwd f code 195 bit 3 : fpb vector 196 bit 4 - 6: fwd f code 197 bit 7 : fpf vector */ 198 199 - int mpeg1_flag; 200 - int progressive_sequence; 201 - int sequence_display_extension_flag; 202 - u32 sequence_header_data; 203 - s16 last_frame_centre_horizontal_offset; 204 - s16 last_frame_centre_vertical_offset; 205 206 - u32 pts[2]; /* [0] 1st field, [1] 2nd field */ 207 - int top_field_first; 208 - int repeat_first_field; 209 - int progressive_frame; 210 - int bank; 211 - int forward_bank; 212 - int backward_bank; 213 - int compress; 214 - s16 frame_centre_horizontal_offset[OFF_SIZE]; 215 - /* [0-2] 1st field, [3] 2nd field */ 216 - s16 frame_centre_vertical_offset[OFF_SIZE]; 217 - /* [0-2] 1st field, [3] 2nd field */ 218 - s16 temporal_reference[2]; 219 - /* [0] 1st field, [1] 2nd field */ 220 221 - s8 picture_coding_type[2]; 222 - /* [0] 1st field, [1] 2nd field */ 223 - s8 picture_structure[2]; 224 - /* [0] 1st field, [1] 2nd field */ 225 - s8 picture_display_extension_flag[2]; 226 - /* [0] 1st field, [1] 2nd field */ 227 - /* picture_display_extenion() 0:no 1:exit*/ 228 - s8 pts_flag[2]; 229 - /* [0] 1st field, [1] 2nd field */ 230 }; 231 232 struct dvb_audio_info {
··· 29 30 struct dvb_filter_pes2ts { 31 unsigned char buf[188]; 32 + unsigned char cc; 33 + dvb_filter_pes2ts_cb_t *cb; 34 void *priv; 35 }; 36 ··· 162 u32 bit_rate; 163 u32 comp_bit_rate; 164 u32 vbv_buffer_size; 165 + s16 vbv_delay; 166 u32 CSPF; 167 u32 off; 168 }; ··· 173 #define VIDEO_FRAME_PICTURE 0x03 174 175 struct mpg_picture { 176 + int channel; 177 struct dvb_video_info vinfo; 178 + u32 *sequence_gop_header; 179 + u32 *picture_header; 180 + s32 time_code; 181 + int low_delay; 182 + int closed_gop; 183 + int broken_link; 184 + int sequence_header_flag; 185 + int gop_flag; 186 + int sequence_end_flag; 187 188 + u8 profile_and_level; 189 + s32 picture_coding_parameter; 190 + u32 matrix[32]; 191 + s8 matrix_change_flag; 192 193 + u8 picture_header_parameter; 194 /* bit 0 - 2: bwd f code 195 bit 3 : fpb vector 196 bit 4 - 6: fwd f code 197 bit 7 : fpf vector */ 198 199 + int mpeg1_flag; 200 + int progressive_sequence; 201 + int sequence_display_extension_flag; 202 + u32 sequence_header_data; 203 + s16 last_frame_centre_horizontal_offset; 204 + s16 last_frame_centre_vertical_offset; 205 206 + u32 pts[2]; /* [0] 1st field, [1] 2nd field */ 207 + int top_field_first; 208 + int repeat_first_field; 209 + int progressive_frame; 210 + int bank; 211 + int forward_bank; 212 + int backward_bank; 213 + int compress; 214 + s16 frame_centre_horizontal_offset[OFF_SIZE]; 215 + /* [0-2] 1st field, [3] 2nd field */ 216 + s16 frame_centre_vertical_offset[OFF_SIZE]; 217 + /* [0-2] 1st field, [3] 2nd field */ 218 + s16 temporal_reference[2]; 219 + /* [0] 1st field, [1] 2nd field */ 220 221 + s8 picture_coding_type[2]; 222 + /* [0] 1st field, [1] 2nd field */ 223 + s8 picture_structure[2]; 224 + /* [0] 1st field, [1] 2nd field */ 225 + s8 picture_display_extension_flag[2]; 226 + /* [0] 1st field, [1] 2nd field */ 227 + /* picture_display_extenion() 0:no 1:exit*/ 228 + s8 pts_flag[2]; 229 + /* [0] 1st field, [1] 2nd field */ 230 }; 231 232 struct dvb_audio_info {
+4 -4
drivers/media/dvb/dvb-core/dvb_frontend.c
··· 372 373 snprintf (name, sizeof(name), "kdvb-fe-%i", fe->dvb->num); 374 375 - lock_kernel(); 376 - daemonize(name); 377 - sigfillset(&current->blocked); 378 - unlock_kernel(); 379 380 fepriv->status = 0; 381 dvb_frontend_init(fe);
··· 372 373 snprintf (name, sizeof(name), "kdvb-fe-%i", fe->dvb->num); 374 375 + lock_kernel(); 376 + daemonize(name); 377 + sigfillset(&current->blocked); 378 + unlock_kernel(); 379 380 fepriv->status = 0; 381 dvb_frontend_init(fe);
+4 -4
drivers/media/dvb/dvb-core/dvb_frontend.h
··· 41 #include "dvbdev.h" 42 43 struct dvb_frontend_tune_settings { 44 - int min_delay_ms; 45 - int step_size; 46 - int max_drift; 47 - struct dvb_frontend_parameters parameters; 48 }; 49 50 struct dvb_frontend;
··· 41 #include "dvbdev.h" 42 43 struct dvb_frontend_tune_settings { 44 + int min_delay_ms; 45 + int step_size; 46 + int max_drift; 47 + struct dvb_frontend_parameters parameters; 48 }; 49 50 struct dvb_frontend;
+21 -21
drivers/media/dvb/dvb-core/dvb_net.c
··· 713 if (buffer1_len > 32768) 714 printk(KERN_WARNING "length > 32k: %zu.\n", buffer1_len); 715 /* printk("TS callback: %u bytes, %u TS cells @ %p.\n", 716 - buffer1_len, buffer1_len / TS_SZ, buffer1); */ 717 dvb_net_ule(dev, buffer1, buffer1_len); 718 return 0; 719 } ··· 721 722 static void dvb_net_sec(struct net_device *dev, u8 *pkt, int pkt_len) 723 { 724 - u8 *eth; 725 - struct sk_buff *skb; 726 struct net_device_stats *stats = &(((struct dvb_net_priv *) dev->priv)->stats); 727 int snap = 0; 728 ··· 754 return; 755 } 756 snap = 8; 757 - } 758 if (pkt[7]) { 759 /* FIXME: assemble datagram from multiple sections */ 760 stats->rx_errors++; ··· 778 memcpy(eth + 14, pkt + 12 + snap, pkt_len - 12 - 4 - snap); 779 780 /* create ethernet header: */ 781 - eth[0]=pkt[0x0b]; 782 - eth[1]=pkt[0x0a]; 783 - eth[2]=pkt[0x09]; 784 - eth[3]=pkt[0x08]; 785 - eth[4]=pkt[0x04]; 786 - eth[5]=pkt[0x03]; 787 788 - eth[6]=eth[7]=eth[8]=eth[9]=eth[10]=eth[11]=0; 789 790 if (snap) { 791 eth[12] = pkt[18]; ··· 807 808 stats->rx_packets++; 809 stats->rx_bytes+=skb->len; 810 - netif_rx(skb); 811 } 812 813 static int dvb_net_sec_callback(const u8 *buffer1, size_t buffer1_len, ··· 815 struct dmx_section_filter *filter, 816 enum dmx_success success) 817 { 818 - struct net_device *dev = filter->priv; 819 820 /** 821 * we rely on the DVB API definition where exactly one complete ··· 885 { 886 int ret = 0, i; 887 struct dvb_net_priv *priv = dev->priv; 888 - struct dmx_demux *demux = priv->demux; 889 - unsigned char *mac = (unsigned char *) dev->dev_addr; 890 891 dprintk("%s: rx_mode %i\n", __FUNCTION__, priv->rx_mode); 892 down(&priv->mutex); ··· 1129 struct dvb_net_priv *priv = dev->priv; 1130 1131 priv->in_use--; 1132 - return dvb_net_feed_stop(dev); 1133 } 1134 1135 static struct net_device_stats * dvb_net_get_stats(struct net_device *dev) 1136 { 1137 - return &((struct dvb_net_priv*) dev->priv)->stats; 1138 } 1139 1140 static void dvb_net_setup(struct net_device *dev) ··· 1360 }; 1361 1362 static struct dvb_device dvbdev_net = { 1363 - .priv = NULL, 1364 - .users = 1, 1365 - .writers = 1, 1366 - .fops = &dvb_net_fops, 1367 }; 1368 1369
··· 713 if (buffer1_len > 32768) 714 printk(KERN_WARNING "length > 32k: %zu.\n", buffer1_len); 715 /* printk("TS callback: %u bytes, %u TS cells @ %p.\n", 716 + buffer1_len, buffer1_len / TS_SZ, buffer1); */ 717 dvb_net_ule(dev, buffer1, buffer1_len); 718 return 0; 719 } ··· 721 722 static void dvb_net_sec(struct net_device *dev, u8 *pkt, int pkt_len) 723 { 724 + u8 *eth; 725 + struct sk_buff *skb; 726 struct net_device_stats *stats = &(((struct dvb_net_priv *) dev->priv)->stats); 727 int snap = 0; 728 ··· 754 return; 755 } 756 snap = 8; 757 + } 758 if (pkt[7]) { 759 /* FIXME: assemble datagram from multiple sections */ 760 stats->rx_errors++; ··· 778 memcpy(eth + 14, pkt + 12 + snap, pkt_len - 12 - 4 - snap); 779 780 /* create ethernet header: */ 781 + eth[0]=pkt[0x0b]; 782 + eth[1]=pkt[0x0a]; 783 + eth[2]=pkt[0x09]; 784 + eth[3]=pkt[0x08]; 785 + eth[4]=pkt[0x04]; 786 + eth[5]=pkt[0x03]; 787 788 + eth[6]=eth[7]=eth[8]=eth[9]=eth[10]=eth[11]=0; 789 790 if (snap) { 791 eth[12] = pkt[18]; ··· 807 808 stats->rx_packets++; 809 stats->rx_bytes+=skb->len; 810 + netif_rx(skb); 811 } 812 813 static int dvb_net_sec_callback(const u8 *buffer1, size_t buffer1_len, ··· 815 struct dmx_section_filter *filter, 816 enum dmx_success success) 817 { 818 + struct net_device *dev = filter->priv; 819 820 /** 821 * we rely on the DVB API definition where exactly one complete ··· 885 { 886 int ret = 0, i; 887 struct dvb_net_priv *priv = dev->priv; 888 + struct dmx_demux *demux = priv->demux; 889 + unsigned char *mac = (unsigned char *) dev->dev_addr; 890 891 dprintk("%s: rx_mode %i\n", __FUNCTION__, priv->rx_mode); 892 down(&priv->mutex); ··· 1129 struct dvb_net_priv *priv = dev->priv; 1130 1131 priv->in_use--; 1132 + return dvb_net_feed_stop(dev); 1133 } 1134 1135 static struct net_device_stats * dvb_net_get_stats(struct net_device *dev) 1136 { 1137 + return &((struct dvb_net_priv*) dev->priv)->stats; 1138 } 1139 1140 static void dvb_net_setup(struct net_device *dev) ··· 1360 }; 1361 1362 static struct dvb_device dvbdev_net = { 1363 + .priv = NULL, 1364 + .users = 1, 1365 + .writers = 1, 1366 + .fops = &dvb_net_fops, 1367 }; 1368 1369
+123 -123
drivers/media/dvb/dvb-core/dvb_ringbuffer.c
··· 42 43 void dvb_ringbuffer_init(struct dvb_ringbuffer *rbuf, void *data, size_t len) 44 { 45 - rbuf->pread=rbuf->pwrite=0; 46 - rbuf->data=data; 47 - rbuf->size=len; 48 49 - init_waitqueue_head(&rbuf->queue); 50 51 - spin_lock_init(&(rbuf->lock)); 52 } 53 54 55 56 int dvb_ringbuffer_empty(struct dvb_ringbuffer *rbuf) 57 { 58 - return (rbuf->pread==rbuf->pwrite); 59 } 60 61 62 63 ssize_t dvb_ringbuffer_free(struct dvb_ringbuffer *rbuf) 64 { 65 - ssize_t free; 66 67 - free = rbuf->pread - rbuf->pwrite; 68 - if (free <= 0) 69 - free += rbuf->size; 70 - return free-1; 71 } 72 73 74 75 ssize_t dvb_ringbuffer_avail(struct dvb_ringbuffer *rbuf) 76 { 77 - ssize_t avail; 78 79 - avail = rbuf->pwrite - rbuf->pread; 80 - if (avail < 0) 81 - avail += rbuf->size; 82 - return avail; 83 } 84 85 86 87 void dvb_ringbuffer_flush(struct dvb_ringbuffer *rbuf) 88 { 89 - rbuf->pread = rbuf->pwrite; 90 } 91 92 93 94 void dvb_ringbuffer_flush_spinlock_wakeup(struct dvb_ringbuffer *rbuf) 95 { 96 - unsigned long flags; 97 98 - spin_lock_irqsave(&rbuf->lock, flags); 99 - dvb_ringbuffer_flush(rbuf); 100 - spin_unlock_irqrestore(&rbuf->lock, flags); 101 102 - wake_up(&rbuf->queue); 103 } 104 105 106 107 ssize_t dvb_ringbuffer_read(struct dvb_ringbuffer *rbuf, u8 *buf, size_t len, int usermem) 108 { 109 - size_t todo = len; 110 - size_t split; 111 112 - split = (rbuf->pread + len > rbuf->size) ? rbuf->size - rbuf->pread : 0; 113 - if (split > 0) { 114 - if (!usermem) 115 - memcpy(buf, rbuf->data+rbuf->pread, split); 116 - else 117 - if (copy_to_user(buf, rbuf->data+rbuf->pread, split)) 118 - return -EFAULT; 119 - buf += split; 120 - todo -= split; 121 - rbuf->pread = 0; 122 - } 123 - if (!usermem) 124 - memcpy(buf, rbuf->data+rbuf->pread, todo); 125 - else 126 - if (copy_to_user(buf, rbuf->data+rbuf->pread, todo)) 127 - return -EFAULT; 128 129 - rbuf->pread = (rbuf->pread + todo) % rbuf->size; 130 131 - return len; 132 } 133 134 135 136 ssize_t dvb_ringbuffer_write(struct dvb_ringbuffer *rbuf, const u8 *buf, size_t len) 137 { 138 - size_t todo = len; 139 - size_t split; 140 141 - split = (rbuf->pwrite + len > rbuf->size) ? rbuf->size - rbuf->pwrite : 0; 142 143 - if (split > 0) { 144 - memcpy(rbuf->data+rbuf->pwrite, buf, split); 145 - buf += split; 146 - todo -= split; 147 - rbuf->pwrite = 0; 148 - } 149 - memcpy(rbuf->data+rbuf->pwrite, buf, todo); 150 - rbuf->pwrite = (rbuf->pwrite + todo) % rbuf->size; 151 152 - return len; 153 } 154 155 ssize_t dvb_ringbuffer_pkt_write(struct dvb_ringbuffer *rbuf, u8* buf, size_t len) 156 { 157 - int status; 158 - ssize_t oldpwrite = rbuf->pwrite; 159 160 - DVB_RINGBUFFER_WRITE_BYTE(rbuf, len >> 8); 161 - DVB_RINGBUFFER_WRITE_BYTE(rbuf, len & 0xff); 162 - DVB_RINGBUFFER_WRITE_BYTE(rbuf, PKT_READY); 163 - status = dvb_ringbuffer_write(rbuf, buf, len); 164 165 - if (status < 0) rbuf->pwrite = oldpwrite; 166 - return status; 167 } 168 169 ssize_t dvb_ringbuffer_pkt_read(struct dvb_ringbuffer *rbuf, size_t idx, 170 - int offset, u8* buf, size_t len, int usermem) 171 { 172 - size_t todo; 173 - size_t split; 174 - size_t pktlen; 175 176 - pktlen = rbuf->data[idx] << 8; 177 - pktlen |= rbuf->data[(idx + 1) % rbuf->size]; 178 - if (offset > pktlen) return -EINVAL; 179 - if ((offset + len) > pktlen) len = pktlen - offset; 180 181 - idx = (idx + DVB_RINGBUFFER_PKTHDRSIZE + offset) % rbuf->size; 182 - todo = len; 183 - split = ((idx + len) > rbuf->size) ? rbuf->size - idx : 0; 184 - if (split > 0) { 185 - if (!usermem) 186 - memcpy(buf, rbuf->data+idx, split); 187 - else 188 - if (copy_to_user(buf, rbuf->data+idx, split)) 189 - return -EFAULT; 190 - buf += split; 191 - todo -= split; 192 - idx = 0; 193 - } 194 - if (!usermem) 195 - memcpy(buf, rbuf->data+idx, todo); 196 - else 197 - if (copy_to_user(buf, rbuf->data+idx, todo)) 198 - return -EFAULT; 199 200 - return len; 201 } 202 203 void dvb_ringbuffer_pkt_dispose(struct dvb_ringbuffer *rbuf, size_t idx) 204 { 205 - size_t pktlen; 206 207 - rbuf->data[(idx + 2) % rbuf->size] = PKT_DISPOSED; 208 209 - // clean up disposed packets 210 - while(dvb_ringbuffer_avail(rbuf) > DVB_RINGBUFFER_PKTHDRSIZE) { 211 - if (DVB_RINGBUFFER_PEEK(rbuf, 2) == PKT_DISPOSED) { 212 - pktlen = DVB_RINGBUFFER_PEEK(rbuf, 0) << 8; 213 - pktlen |= DVB_RINGBUFFER_PEEK(rbuf, 1); 214 - DVB_RINGBUFFER_SKIP(rbuf, pktlen + DVB_RINGBUFFER_PKTHDRSIZE); 215 - } else { 216 - // first packet is not disposed, so we stop cleaning now 217 - break; 218 - } 219 - } 220 } 221 222 ssize_t dvb_ringbuffer_pkt_next(struct dvb_ringbuffer *rbuf, size_t idx, size_t* pktlen) 223 { 224 - int consumed; 225 - int curpktlen; 226 - int curpktstatus; 227 228 - if (idx == -1) { 229 idx = rbuf->pread; 230 } else { 231 - curpktlen = rbuf->data[idx] << 8; 232 - curpktlen |= rbuf->data[(idx + 1) % rbuf->size]; 233 - idx = (idx + curpktlen + DVB_RINGBUFFER_PKTHDRSIZE) % rbuf->size; 234 } 235 236 - consumed = (idx - rbuf->pread) % rbuf->size; 237 238 - while((dvb_ringbuffer_avail(rbuf) - consumed) > DVB_RINGBUFFER_PKTHDRSIZE) { 239 240 - curpktlen = rbuf->data[idx] << 8; 241 - curpktlen |= rbuf->data[(idx + 1) % rbuf->size]; 242 - curpktstatus = rbuf->data[(idx + 2) % rbuf->size]; 243 244 - if (curpktstatus == PKT_READY) { 245 - *pktlen = curpktlen; 246 - return idx; 247 - } 248 249 - consumed += curpktlen + DVB_RINGBUFFER_PKTHDRSIZE; 250 - idx = (idx + curpktlen + DVB_RINGBUFFER_PKTHDRSIZE) % rbuf->size; 251 - } 252 253 - // no packets available 254 - return -1; 255 } 256 257
··· 42 43 void dvb_ringbuffer_init(struct dvb_ringbuffer *rbuf, void *data, size_t len) 44 { 45 + rbuf->pread=rbuf->pwrite=0; 46 + rbuf->data=data; 47 + rbuf->size=len; 48 49 + init_waitqueue_head(&rbuf->queue); 50 51 + spin_lock_init(&(rbuf->lock)); 52 } 53 54 55 56 int dvb_ringbuffer_empty(struct dvb_ringbuffer *rbuf) 57 { 58 + return (rbuf->pread==rbuf->pwrite); 59 } 60 61 62 63 ssize_t dvb_ringbuffer_free(struct dvb_ringbuffer *rbuf) 64 { 65 + ssize_t free; 66 67 + free = rbuf->pread - rbuf->pwrite; 68 + if (free <= 0) 69 + free += rbuf->size; 70 + return free-1; 71 } 72 73 74 75 ssize_t dvb_ringbuffer_avail(struct dvb_ringbuffer *rbuf) 76 { 77 + ssize_t avail; 78 79 + avail = rbuf->pwrite - rbuf->pread; 80 + if (avail < 0) 81 + avail += rbuf->size; 82 + return avail; 83 } 84 85 86 87 void dvb_ringbuffer_flush(struct dvb_ringbuffer *rbuf) 88 { 89 + rbuf->pread = rbuf->pwrite; 90 } 91 92 93 94 void dvb_ringbuffer_flush_spinlock_wakeup(struct dvb_ringbuffer *rbuf) 95 { 96 + unsigned long flags; 97 98 + spin_lock_irqsave(&rbuf->lock, flags); 99 + dvb_ringbuffer_flush(rbuf); 100 + spin_unlock_irqrestore(&rbuf->lock, flags); 101 102 + wake_up(&rbuf->queue); 103 } 104 105 106 107 ssize_t dvb_ringbuffer_read(struct dvb_ringbuffer *rbuf, u8 *buf, size_t len, int usermem) 108 { 109 + size_t todo = len; 110 + size_t split; 111 112 + split = (rbuf->pread + len > rbuf->size) ? rbuf->size - rbuf->pread : 0; 113 + if (split > 0) { 114 + if (!usermem) 115 + memcpy(buf, rbuf->data+rbuf->pread, split); 116 + else 117 + if (copy_to_user(buf, rbuf->data+rbuf->pread, split)) 118 + return -EFAULT; 119 + buf += split; 120 + todo -= split; 121 + rbuf->pread = 0; 122 + } 123 + if (!usermem) 124 + memcpy(buf, rbuf->data+rbuf->pread, todo); 125 + else 126 + if (copy_to_user(buf, rbuf->data+rbuf->pread, todo)) 127 + return -EFAULT; 128 129 + rbuf->pread = (rbuf->pread + todo) % rbuf->size; 130 131 + return len; 132 } 133 134 135 136 ssize_t dvb_ringbuffer_write(struct dvb_ringbuffer *rbuf, const u8 *buf, size_t len) 137 { 138 + size_t todo = len; 139 + size_t split; 140 141 + split = (rbuf->pwrite + len > rbuf->size) ? rbuf->size - rbuf->pwrite : 0; 142 143 + if (split > 0) { 144 + memcpy(rbuf->data+rbuf->pwrite, buf, split); 145 + buf += split; 146 + todo -= split; 147 + rbuf->pwrite = 0; 148 + } 149 + memcpy(rbuf->data+rbuf->pwrite, buf, todo); 150 + rbuf->pwrite = (rbuf->pwrite + todo) % rbuf->size; 151 152 + return len; 153 } 154 155 ssize_t dvb_ringbuffer_pkt_write(struct dvb_ringbuffer *rbuf, u8* buf, size_t len) 156 { 157 + int status; 158 + ssize_t oldpwrite = rbuf->pwrite; 159 160 + DVB_RINGBUFFER_WRITE_BYTE(rbuf, len >> 8); 161 + DVB_RINGBUFFER_WRITE_BYTE(rbuf, len & 0xff); 162 + DVB_RINGBUFFER_WRITE_BYTE(rbuf, PKT_READY); 163 + status = dvb_ringbuffer_write(rbuf, buf, len); 164 165 + if (status < 0) rbuf->pwrite = oldpwrite; 166 + return status; 167 } 168 169 ssize_t dvb_ringbuffer_pkt_read(struct dvb_ringbuffer *rbuf, size_t idx, 170 + int offset, u8* buf, size_t len, int usermem) 171 { 172 + size_t todo; 173 + size_t split; 174 + size_t pktlen; 175 176 + pktlen = rbuf->data[idx] << 8; 177 + pktlen |= rbuf->data[(idx + 1) % rbuf->size]; 178 + if (offset > pktlen) return -EINVAL; 179 + if ((offset + len) > pktlen) len = pktlen - offset; 180 181 + idx = (idx + DVB_RINGBUFFER_PKTHDRSIZE + offset) % rbuf->size; 182 + todo = len; 183 + split = ((idx + len) > rbuf->size) ? rbuf->size - idx : 0; 184 + if (split > 0) { 185 + if (!usermem) 186 + memcpy(buf, rbuf->data+idx, split); 187 + else 188 + if (copy_to_user(buf, rbuf->data+idx, split)) 189 + return -EFAULT; 190 + buf += split; 191 + todo -= split; 192 + idx = 0; 193 + } 194 + if (!usermem) 195 + memcpy(buf, rbuf->data+idx, todo); 196 + else 197 + if (copy_to_user(buf, rbuf->data+idx, todo)) 198 + return -EFAULT; 199 200 + return len; 201 } 202 203 void dvb_ringbuffer_pkt_dispose(struct dvb_ringbuffer *rbuf, size_t idx) 204 { 205 + size_t pktlen; 206 207 + rbuf->data[(idx + 2) % rbuf->size] = PKT_DISPOSED; 208 209 + // clean up disposed packets 210 + while(dvb_ringbuffer_avail(rbuf) > DVB_RINGBUFFER_PKTHDRSIZE) { 211 + if (DVB_RINGBUFFER_PEEK(rbuf, 2) == PKT_DISPOSED) { 212 + pktlen = DVB_RINGBUFFER_PEEK(rbuf, 0) << 8; 213 + pktlen |= DVB_RINGBUFFER_PEEK(rbuf, 1); 214 + DVB_RINGBUFFER_SKIP(rbuf, pktlen + DVB_RINGBUFFER_PKTHDRSIZE); 215 + } else { 216 + // first packet is not disposed, so we stop cleaning now 217 + break; 218 + } 219 + } 220 } 221 222 ssize_t dvb_ringbuffer_pkt_next(struct dvb_ringbuffer *rbuf, size_t idx, size_t* pktlen) 223 { 224 + int consumed; 225 + int curpktlen; 226 + int curpktstatus; 227 228 + if (idx == -1) { 229 idx = rbuf->pread; 230 } else { 231 + curpktlen = rbuf->data[idx] << 8; 232 + curpktlen |= rbuf->data[(idx + 1) % rbuf->size]; 233 + idx = (idx + curpktlen + DVB_RINGBUFFER_PKTHDRSIZE) % rbuf->size; 234 } 235 236 + consumed = (idx - rbuf->pread) % rbuf->size; 237 238 + while((dvb_ringbuffer_avail(rbuf) - consumed) > DVB_RINGBUFFER_PKTHDRSIZE) { 239 240 + curpktlen = rbuf->data[idx] << 8; 241 + curpktlen |= rbuf->data[(idx + 1) % rbuf->size]; 242 + curpktstatus = rbuf->data[(idx + 2) % rbuf->size]; 243 244 + if (curpktstatus == PKT_READY) { 245 + *pktlen = curpktlen; 246 + return idx; 247 + } 248 249 + consumed += curpktlen + DVB_RINGBUFFER_PKTHDRSIZE; 250 + idx = (idx + curpktlen + DVB_RINGBUFFER_PKTHDRSIZE) % rbuf->size; 251 + } 252 253 + // no packets available 254 + return -1; 255 } 256 257
+10 -10
drivers/media/dvb/dvb-core/dvb_ringbuffer.h
··· 31 #include <linux/wait.h> 32 33 struct dvb_ringbuffer { 34 - u8 *data; 35 - ssize_t size; 36 - ssize_t pread; 37 - ssize_t pwrite; 38 39 - wait_queue_head_t queue; 40 - spinlock_t lock; 41 }; 42 43 #define DVB_RINGBUFFER_PKTHDRSIZE 3 ··· 106 ** returns number of bytes transferred or -EFAULT 107 */ 108 extern ssize_t dvb_ringbuffer_read(struct dvb_ringbuffer *rbuf, u8 *buf, 109 - size_t len, int usermem); 110 111 112 /* write routines & macros */ ··· 121 ** returns number of bytes transferred or -EFAULT 122 */ 123 extern ssize_t dvb_ringbuffer_write(struct dvb_ringbuffer *rbuf, const u8 *buf, 124 - size_t len); 125 126 127 /** ··· 133 * returns Number of bytes written, or -EFAULT, -ENOMEM, -EVINAL. 134 */ 135 extern ssize_t dvb_ringbuffer_pkt_write(struct dvb_ringbuffer *rbuf, u8* buf, 136 - size_t len); 137 138 /** 139 * Read from a packet in the ringbuffer. Note: unlike dvb_ringbuffer_read(), this ··· 149 * returns Number of bytes read, or -EFAULT. 150 */ 151 extern ssize_t dvb_ringbuffer_pkt_read(struct dvb_ringbuffer *rbuf, size_t idx, 152 - int offset, u8* buf, size_t len, int usermem); 153 154 /** 155 * Dispose of a packet in the ring buffer.
··· 31 #include <linux/wait.h> 32 33 struct dvb_ringbuffer { 34 + u8 *data; 35 + ssize_t size; 36 + ssize_t pread; 37 + ssize_t pwrite; 38 39 + wait_queue_head_t queue; 40 + spinlock_t lock; 41 }; 42 43 #define DVB_RINGBUFFER_PKTHDRSIZE 3 ··· 106 ** returns number of bytes transferred or -EFAULT 107 */ 108 extern ssize_t dvb_ringbuffer_read(struct dvb_ringbuffer *rbuf, u8 *buf, 109 + size_t len, int usermem); 110 111 112 /* write routines & macros */ ··· 121 ** returns number of bytes transferred or -EFAULT 122 */ 123 extern ssize_t dvb_ringbuffer_write(struct dvb_ringbuffer *rbuf, const u8 *buf, 124 + size_t len); 125 126 127 /** ··· 133 * returns Number of bytes written, or -EFAULT, -ENOMEM, -EVINAL. 134 */ 135 extern ssize_t dvb_ringbuffer_pkt_write(struct dvb_ringbuffer *rbuf, u8* buf, 136 + size_t len); 137 138 /** 139 * Read from a packet in the ringbuffer. Note: unlike dvb_ringbuffer_read(), this ··· 149 * returns Number of bytes read, or -EFAULT. 150 */ 151 extern ssize_t dvb_ringbuffer_pkt_read(struct dvb_ringbuffer *rbuf, size_t idx, 152 + int offset, u8* buf, size_t len, int usermem); 153 154 /** 155 * Dispose of a packet in the ring buffer.
+66 -66
drivers/media/dvb/dvb-core/dvbdev.c
··· 47 static DECLARE_MUTEX(dvbdev_register_lock); 48 49 static const char * const dnames[] = { 50 - "video", "audio", "sec", "frontend", "demux", "dvr", "ca", 51 "net", "osd" 52 }; 53 ··· 90 91 file->private_data = dvbdev; 92 old_fops = file->f_op; 93 - file->f_op = fops_get(dvbdev->fops); 94 - if(file->f_op->open) 95 - err = file->f_op->open(inode,file); 96 - if (err) { 97 - fops_put(file->f_op); 98 - file->f_op = fops_get(old_fops); 99 - } 100 - fops_put(old_fops); 101 - return err; 102 } 103 return -ENODEV; 104 } ··· 117 118 int dvb_generic_open(struct inode *inode, struct file *file) 119 { 120 - struct dvb_device *dvbdev = file->private_data; 121 122 - if (!dvbdev) 123 - return -ENODEV; 124 125 if (!dvbdev->users) 126 - return -EBUSY; 127 128 if ((file->f_flags & O_ACCMODE) == O_RDONLY) { 129 - if (!dvbdev->readers) 130 - return -EBUSY; 131 dvbdev->readers--; 132 } else { 133 - if (!dvbdev->writers) 134 - return -EBUSY; 135 dvbdev->writers--; 136 } 137 ··· 143 144 int dvb_generic_release(struct inode *inode, struct file *file) 145 { 146 - struct dvb_device *dvbdev = file->private_data; 147 148 if (!dvbdev) 149 - return -ENODEV; 150 151 if ((file->f_flags & O_ACCMODE) == O_RDONLY) { 152 dvbdev->readers++; ··· 163 int dvb_generic_ioctl(struct inode *inode, struct file *file, 164 unsigned int cmd, unsigned long arg) 165 { 166 - struct dvb_device *dvbdev = file->private_data; 167 168 - if (!dvbdev) 169 - return -ENODEV; 170 171 if (!dvbdev->kernel_ioctl) 172 return -EINVAL; ··· 334 to the v4l "videodev.o" module, which is unnecessary for some 335 cards (ie. the budget dvb-cards don't need the v4l module...) */ 336 int dvb_usercopy(struct inode *inode, struct file *file, 337 - unsigned int cmd, unsigned long arg, 338 int (*func)(struct inode *inode, struct file *file, 339 unsigned int cmd, void *arg)) 340 { 341 - char sbuf[128]; 342 - void *mbuf = NULL; 343 - void *parg = NULL; 344 - int err = -EINVAL; 345 346 - /* Copy arguments into temp kernel buffer */ 347 - switch (_IOC_DIR(cmd)) { 348 - case _IOC_NONE: 349 /* 350 * For this command, the pointer is actually an integer 351 * argument. 352 */ 353 parg = (void *) arg; 354 break; 355 - case _IOC_READ: /* some v4l ioctls are marked wrong ... */ 356 - case _IOC_WRITE: 357 - case (_IOC_WRITE | _IOC_READ): 358 - if (_IOC_SIZE(cmd) <= sizeof(sbuf)) { 359 - parg = sbuf; 360 - } else { 361 - /* too big to allocate from stack */ 362 - mbuf = kmalloc(_IOC_SIZE(cmd),GFP_KERNEL); 363 - if (NULL == mbuf) 364 - return -ENOMEM; 365 - parg = mbuf; 366 - } 367 368 - err = -EFAULT; 369 - if (copy_from_user(parg, (void __user *)arg, _IOC_SIZE(cmd))) 370 - goto out; 371 - break; 372 - } 373 374 - /* call driver */ 375 - if ((err = func(inode, file, cmd, parg)) == -ENOIOCTLCMD) 376 - err = -EINVAL; 377 378 - if (err < 0) 379 - goto out; 380 381 - /* Copy results into user buffer */ 382 - switch (_IOC_DIR(cmd)) 383 - { 384 - case _IOC_READ: 385 - case (_IOC_WRITE | _IOC_READ): 386 - if (copy_to_user((void __user *)arg, parg, _IOC_SIZE(cmd))) 387 - err = -EFAULT; 388 - break; 389 - } 390 391 out: 392 - kfree(mbuf); 393 - return err; 394 } 395 396 static int __init init_dvbdev(void) ··· 427 428 static void __exit exit_dvbdev(void) 429 { 430 - devfs_remove("dvb"); 431 class_destroy(dvb_class); 432 cdev_del(&dvb_device_cdev); 433 - unregister_chrdev_region(MKDEV(DVB_MAJOR, 0), MAX_DVB_MINORS); 434 } 435 436 module_init(init_dvbdev);
··· 47 static DECLARE_MUTEX(dvbdev_register_lock); 48 49 static const char * const dnames[] = { 50 + "video", "audio", "sec", "frontend", "demux", "dvr", "ca", 51 "net", "osd" 52 }; 53 ··· 90 91 file->private_data = dvbdev; 92 old_fops = file->f_op; 93 + file->f_op = fops_get(dvbdev->fops); 94 + if(file->f_op->open) 95 + err = file->f_op->open(inode,file); 96 + if (err) { 97 + fops_put(file->f_op); 98 + file->f_op = fops_get(old_fops); 99 + } 100 + fops_put(old_fops); 101 + return err; 102 } 103 return -ENODEV; 104 } ··· 117 118 int dvb_generic_open(struct inode *inode, struct file *file) 119 { 120 + struct dvb_device *dvbdev = file->private_data; 121 122 + if (!dvbdev) 123 + return -ENODEV; 124 125 if (!dvbdev->users) 126 + return -EBUSY; 127 128 if ((file->f_flags & O_ACCMODE) == O_RDONLY) { 129 + if (!dvbdev->readers) 130 + return -EBUSY; 131 dvbdev->readers--; 132 } else { 133 + if (!dvbdev->writers) 134 + return -EBUSY; 135 dvbdev->writers--; 136 } 137 ··· 143 144 int dvb_generic_release(struct inode *inode, struct file *file) 145 { 146 + struct dvb_device *dvbdev = file->private_data; 147 148 if (!dvbdev) 149 + return -ENODEV; 150 151 if ((file->f_flags & O_ACCMODE) == O_RDONLY) { 152 dvbdev->readers++; ··· 163 int dvb_generic_ioctl(struct inode *inode, struct file *file, 164 unsigned int cmd, unsigned long arg) 165 { 166 + struct dvb_device *dvbdev = file->private_data; 167 168 + if (!dvbdev) 169 + return -ENODEV; 170 171 if (!dvbdev->kernel_ioctl) 172 return -EINVAL; ··· 334 to the v4l "videodev.o" module, which is unnecessary for some 335 cards (ie. the budget dvb-cards don't need the v4l module...) */ 336 int dvb_usercopy(struct inode *inode, struct file *file, 337 + unsigned int cmd, unsigned long arg, 338 int (*func)(struct inode *inode, struct file *file, 339 unsigned int cmd, void *arg)) 340 { 341 + char sbuf[128]; 342 + void *mbuf = NULL; 343 + void *parg = NULL; 344 + int err = -EINVAL; 345 346 + /* Copy arguments into temp kernel buffer */ 347 + switch (_IOC_DIR(cmd)) { 348 + case _IOC_NONE: 349 /* 350 * For this command, the pointer is actually an integer 351 * argument. 352 */ 353 parg = (void *) arg; 354 break; 355 + case _IOC_READ: /* some v4l ioctls are marked wrong ... */ 356 + case _IOC_WRITE: 357 + case (_IOC_WRITE | _IOC_READ): 358 + if (_IOC_SIZE(cmd) <= sizeof(sbuf)) { 359 + parg = sbuf; 360 + } else { 361 + /* too big to allocate from stack */ 362 + mbuf = kmalloc(_IOC_SIZE(cmd),GFP_KERNEL); 363 + if (NULL == mbuf) 364 + return -ENOMEM; 365 + parg = mbuf; 366 + } 367 368 + err = -EFAULT; 369 + if (copy_from_user(parg, (void __user *)arg, _IOC_SIZE(cmd))) 370 + goto out; 371 + break; 372 + } 373 374 + /* call driver */ 375 + if ((err = func(inode, file, cmd, parg)) == -ENOIOCTLCMD) 376 + err = -EINVAL; 377 378 + if (err < 0) 379 + goto out; 380 381 + /* Copy results into user buffer */ 382 + switch (_IOC_DIR(cmd)) 383 + { 384 + case _IOC_READ: 385 + case (_IOC_WRITE | _IOC_READ): 386 + if (copy_to_user((void __user *)arg, parg, _IOC_SIZE(cmd))) 387 + err = -EFAULT; 388 + break; 389 + } 390 391 out: 392 + kfree(mbuf); 393 + return err; 394 } 395 396 static int __init init_dvbdev(void) ··· 427 428 static void __exit exit_dvbdev(void) 429 { 430 + devfs_remove("dvb"); 431 class_destroy(dvb_class); 432 cdev_del(&dvb_device_cdev); 433 + unregister_chrdev_region(MKDEV(DVB_MAJOR, 0), MAX_DVB_MINORS); 434 } 435 436 module_init(init_dvbdev);
+3 -3
drivers/media/dvb/dvb-core/dvbdev.h
··· 68 int writers; 69 int users; 70 71 - /* don't really need those !? -- FIXME: use video_usercopy */ 72 - int (*kernel_ioctl)(struct inode *inode, struct file *file, 73 unsigned int cmd, void *arg); 74 75 void *priv; ··· 97 generic_usercopy() someday... */ 98 99 extern int dvb_usercopy(struct inode *inode, struct file *file, 100 - unsigned int cmd, unsigned long arg, 101 int (*func)(struct inode *inode, struct file *file, 102 unsigned int cmd, void *arg)); 103
··· 68 int writers; 69 int users; 70 71 + /* don't really need those !? -- FIXME: use video_usercopy */ 72 + int (*kernel_ioctl)(struct inode *inode, struct file *file, 73 unsigned int cmd, void *arg); 74 75 void *priv; ··· 97 generic_usercopy() someday... */ 98 99 extern int dvb_usercopy(struct inode *inode, struct file *file, 100 + unsigned int cmd, unsigned long arg, 101 int (*func)(struct inode *inode, struct file *file, 102 unsigned int cmd, void *arg)); 103
+1 -1
drivers/media/dvb/dvb-usb/vp702x-fe.c
··· 190 } 191 192 static int vp702x_fe_send_diseqc_msg (struct dvb_frontend* fe, 193 - struct dvb_diseqc_master_cmd *m) 194 { 195 struct vp702x_fe_state *st = fe->demodulator_priv; 196 u8 cmd[8],ibuf[10];
··· 190 } 191 192 static int vp702x_fe_send_diseqc_msg (struct dvb_frontend* fe, 193 + struct dvb_diseqc_master_cmd *m) 194 { 195 struct vp702x_fe_state *st = fe->demodulator_priv; 196 u8 cmd[8],ibuf[10];
+1 -1
drivers/media/dvb/dvb-usb/vp7045-fe.c
··· 58 struct vp7045_fe_state *state = fe->demodulator_priv; 59 *ber = (vp7045_read_reg(state->d, 0x0D) << 16) | 60 (vp7045_read_reg(state->d, 0x0E) << 8) | 61 - vp7045_read_reg(state->d, 0x0F); 62 return 0; 63 } 64
··· 58 struct vp7045_fe_state *state = fe->demodulator_priv; 59 *ber = (vp7045_read_reg(state->d, 0x0D) << 16) | 60 (vp7045_read_reg(state->d, 0x0E) << 8) | 61 + vp7045_read_reg(state->d, 0x0F); 62 return 0; 63 } 64
+3 -3
drivers/media/dvb/frontends/at76c651.c
··· 361 362 static int at76c651_get_tune_settings(struct dvb_frontend* fe, struct dvb_frontend_tune_settings *fesettings) 363 { 364 - fesettings->min_delay_ms = 50; 365 - fesettings->step_size = 0; 366 - fesettings->max_drift = 0; 367 return 0; 368 } 369
··· 361 362 static int at76c651_get_tune_settings(struct dvb_frontend* fe, struct dvb_frontend_tune_settings *fesettings) 363 { 364 + fesettings->min_delay_ms = 50; 365 + fesettings->step_size = 0; 366 + fesettings->max_drift = 0; 367 return 0; 368 } 369
+2 -2
drivers/media/dvb/frontends/bcm3510.c
··· 69 #define dbufout(b,l,m) {\ 70 int i; \ 71 for (i = 0; i < l; i++) \ 72 - m("%02x ",b[i]); \ 73 } 74 #define deb_info(args...) dprintk(0x01,args) 75 #define deb_i2c(args...) dprintk(0x02,args) ··· 827 .type = FE_ATSC, 828 .frequency_min = 54000000, 829 .frequency_max = 803000000, 830 - /* stepsize is just a guess */ 831 .frequency_stepsize = 0, 832 .caps = 833 FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
··· 69 #define dbufout(b,l,m) {\ 70 int i; \ 71 for (i = 0; i < l; i++) \ 72 + m("%02x ",b[i]); \ 73 } 74 #define deb_info(args...) dprintk(0x01,args) 75 #define deb_i2c(args...) dprintk(0x02,args) ··· 827 .type = FE_ATSC, 828 .frequency_min = 54000000, 829 .frequency_max = 803000000, 830 + /* stepsize is just a guess */ 831 .frequency_stepsize = 0, 832 .caps = 833 FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
+5 -5
drivers/media/dvb/frontends/cx22700.c
··· 355 356 static int cx22700_get_tune_settings(struct dvb_frontend* fe, struct dvb_frontend_tune_settings* fesettings) 357 { 358 - fesettings->min_delay_ms = 150; 359 - fesettings->step_size = 166667; 360 - fesettings->max_drift = 166667*2; 361 - return 0; 362 } 363 364 static void cx22700_release(struct dvb_frontend* fe) ··· 407 .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | 408 FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | 409 FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 | 410 - FE_CAN_RECOVER 411 }, 412 413 .release = cx22700_release,
··· 355 356 static int cx22700_get_tune_settings(struct dvb_frontend* fe, struct dvb_frontend_tune_settings* fesettings) 357 { 358 + fesettings->min_delay_ms = 150; 359 + fesettings->step_size = 166667; 360 + fesettings->max_drift = 166667*2; 361 + return 0; 362 } 363 364 static void cx22700_release(struct dvb_frontend* fe) ··· 407 .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | 408 FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | 409 FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 | 410 + FE_CAN_RECOVER 411 }, 412 413 .release = cx22700_release,
+1 -1
drivers/media/dvb/frontends/cx22702.c
··· 2 Conexant 22702 DVB OFDM demodulator driver 3 4 based on: 5 - Alps TDMB7 DVB OFDM demodulator driver 6 7 Copyright (C) 2001-2002 Convergence Integrated Media GmbH 8 Holger Waechtler <holger@convergence.de>
··· 2 Conexant 22702 DVB OFDM demodulator driver 3 4 based on: 5 + Alps TDMB7 DVB OFDM demodulator driver 6 7 Copyright (C) 2001-2002 Convergence Integrated Media GmbH 8 Holger Waechtler <holger@convergence.de>
+1 -1
drivers/media/dvb/frontends/cx22702.h
··· 2 Conexant 22702 DVB OFDM demodulator driver 3 4 based on: 5 - Alps TDMB7 DVB OFDM demodulator driver 6 7 Copyright (C) 2001-2002 Convergence Integrated Media GmbH 8 Holger Waechtler <holger@convergence.de>
··· 2 Conexant 22702 DVB OFDM demodulator driver 3 4 based on: 5 + Alps TDMB7 DVB OFDM demodulator driver 6 7 Copyright (C) 2001-2002 Convergence Integrated Media GmbH 8 Holger Waechtler <holger@convergence.de>
+156 -156
drivers/media/dvb/frontends/cx24110.c
··· 55 } while (0) 56 57 static struct {u8 reg; u8 data;} cx24110_regdata[]= 58 - /* Comments beginning with @ denote this value should 59 - be the default */ 60 - {{0x09,0x01}, /* SoftResetAll */ 61 - {0x09,0x00}, /* release reset */ 62 - {0x01,0xe8}, /* MSB of code rate 27.5MS/s */ 63 - {0x02,0x17}, /* middle byte " */ 64 - {0x03,0x29}, /* LSB " */ 65 - {0x05,0x03}, /* @ DVB mode, standard code rate 3/4 */ 66 - {0x06,0xa5}, /* @ PLL 60MHz */ 67 - {0x07,0x01}, /* @ Fclk, i.e. sampling clock, 60MHz */ 68 - {0x0a,0x00}, /* @ partial chip disables, do not set */ 69 - {0x0b,0x01}, /* set output clock in gapped mode, start signal low 70 - active for first byte */ 71 - {0x0c,0x11}, /* no parity bytes, large hold time, serial data out */ 72 - {0x0d,0x6f}, /* @ RS Sync/Unsync thresholds */ 73 - {0x10,0x40}, /* chip doc is misleading here: write bit 6 as 1 74 - to avoid starting the BER counter. Reset the 75 - CRC test bit. Finite counting selected */ 76 - {0x15,0xff}, /* @ size of the limited time window for RS BER 77 - estimation. It is <value>*256 RS blocks, this 78 - gives approx. 2.6 sec at 27.5MS/s, rate 3/4 */ 79 - {0x16,0x00}, /* @ enable all RS output ports */ 80 - {0x17,0x04}, /* @ time window allowed for the RS to sync */ 81 - {0x18,0xae}, /* @ allow all standard DVB code rates to be scanned 82 - for automatically */ 83 - /* leave the current code rate and normalization 84 - registers as they are after reset... */ 85 - {0x21,0x10}, /* @ during AutoAcq, search each viterbi setting 86 - only once */ 87 - {0x23,0x18}, /* @ size of the limited time window for Viterbi BER 88 - estimation. It is <value>*65536 channel bits, i.e. 89 - approx. 38ms at 27.5MS/s, rate 3/4 */ 90 - {0x24,0x24}, /* do not trigger Viterbi CRC test. Finite count window */ 91 - /* leave front-end AGC parameters at default values */ 92 - /* leave decimation AGC parameters at default values */ 93 - {0x35,0x40}, /* disable all interrupts. They are not connected anyway */ 94 - {0x36,0xff}, /* clear all interrupt pending flags */ 95 - {0x37,0x00}, /* @ fully enable AutoAcqq state machine */ 96 - {0x38,0x07}, /* @ enable fade recovery, but not autostart AutoAcq */ 97 - /* leave the equalizer parameters on their default values */ 98 - /* leave the final AGC parameters on their default values */ 99 - {0x41,0x00}, /* @ MSB of front-end derotator frequency */ 100 - {0x42,0x00}, /* @ middle bytes " */ 101 - {0x43,0x00}, /* @ LSB " */ 102 - /* leave the carrier tracking loop parameters on default */ 103 - /* leave the bit timing loop parameters at gefault */ 104 - {0x56,0x4d}, /* set the filtune voltage to 2.7V, as recommended by */ 105 - /* the cx24108 data sheet for symbol rates above 15MS/s */ 106 - {0x57,0x00}, /* @ Filter sigma delta enabled, positive */ 107 - {0x61,0x95}, /* GPIO pins 1-4 have special function */ 108 - {0x62,0x05}, /* GPIO pin 5 has special function, pin 6 is GPIO */ 109 - {0x63,0x00}, /* All GPIO pins use CMOS output characteristics */ 110 - {0x64,0x20}, /* GPIO 6 is input, all others are outputs */ 111 - {0x6d,0x30}, /* tuner auto mode clock freq 62kHz */ 112 - {0x70,0x15}, /* use auto mode, tuner word is 21 bits long */ 113 - {0x73,0x00}, /* @ disable several demod bypasses */ 114 - {0x74,0x00}, /* @ " */ 115 - {0x75,0x00} /* @ " */ 116 - /* the remaining registers are for SEC */ 117 }; 118 119 120 static int cx24110_writereg (struct cx24110_state* state, int reg, int data) 121 { 122 - u8 buf [] = { reg, data }; 123 struct i2c_msg msg = { .addr = state->config->demod_address, .flags = 0, .buf = buf, .len = 2 }; 124 int err; 125 126 - if ((err = i2c_transfer(state->i2c, &msg, 1)) != 1) { 127 dprintk ("%s: writereg error (err == %i, reg == 0x%02x," 128 " data == 0x%02x)\n", __FUNCTION__, err, reg, data); 129 return -EREMOTEIO; 130 } 131 132 - return 0; 133 } 134 135 static int cx24110_readreg (struct cx24110_state* state, u8 reg) ··· 153 154 switch (inversion) { 155 case INVERSION_OFF: 156 - cx24110_writereg(state,0x37,cx24110_readreg(state,0x37)|0x1); 157 - /* AcqSpectrInvDis on. No idea why someone should want this */ 158 - cx24110_writereg(state,0x5,cx24110_readreg(state,0x5)&0xf7); 159 - /* Initial value 0 at start of acq */ 160 - cx24110_writereg(state,0x22,cx24110_readreg(state,0x22)&0xef); 161 - /* current value 0 */ 162 - /* The cx24110 manual tells us this reg is read-only. 163 - But what the heck... set it ayways */ 164 - break; 165 case INVERSION_ON: 166 - cx24110_writereg(state,0x37,cx24110_readreg(state,0x37)|0x1); 167 - /* AcqSpectrInvDis on. No idea why someone should want this */ 168 - cx24110_writereg(state,0x5,cx24110_readreg(state,0x5)|0x08); 169 - /* Initial value 1 at start of acq */ 170 - cx24110_writereg(state,0x22,cx24110_readreg(state,0x22)|0x10); 171 - /* current value 1 */ 172 - break; 173 case INVERSION_AUTO: 174 - cx24110_writereg(state,0x37,cx24110_readreg(state,0x37)&0xfe); 175 - /* AcqSpectrInvDis off. Leave initial & current states as is */ 176 - break; 177 default: 178 return -EINVAL; 179 } ··· 185 { 186 /* fixme (low): error handling */ 187 188 - static const int rate[]={-1,1,2,3,5,7,-1}; 189 - static const int g1[]={-1,0x01,0x02,0x05,0x15,0x45,-1}; 190 - static const int g2[]={-1,0x01,0x03,0x06,0x1a,0x7a,-1}; 191 192 - /* Well, the AutoAcq engine of the cx24106 and 24110 automatically 193 - searches all enabled viterbi rates, and can handle non-standard 194 - rates as well. */ 195 196 - if (fec>FEC_AUTO) 197 - fec=FEC_AUTO; 198 199 - if (fec==FEC_AUTO) { /* (re-)establish AutoAcq behaviour */ 200 cx24110_writereg(state,0x37,cx24110_readreg(state,0x37)&0xdf); 201 /* clear AcqVitDis bit */ 202 cx24110_writereg(state,0x18,0xae); ··· 208 cx24110_writereg(state,0x1a,0x05); cx24110_writereg(state,0x1b,0x06); 209 /* set the puncture registers for code rate 3/4 */ 210 return 0; 211 - } else { 212 cx24110_writereg(state,0x37,cx24110_readreg(state,0x37)|0x20); 213 /* set AcqVitDis bit */ 214 if(rate[fec]>0) { ··· 219 cx24110_writereg(state,0x1a,g1[fec]); 220 cx24110_writereg(state,0x1b,g2[fec]); 221 /* not sure if this is the right way: I always used AutoAcq mode */ 222 - } else 223 return -EOPNOTSUPP; 224 /* fixme (low): which is the correct return code? */ 225 - }; 226 return 0; 227 } 228 ··· 245 static int cx24110_set_symbolrate (struct cx24110_state* state, u32 srate) 246 { 247 /* fixme (low): add error handling */ 248 - u32 ratio; 249 - u32 tmp, fclk, BDRI; 250 251 - static const u32 bands[]={5000000UL,15000000UL,90999000UL/2}; 252 - int i; 253 254 dprintk("cx24110 debug: entering %s(%d)\n",__FUNCTION__,srate); 255 - if (srate>90999000UL/2) 256 - srate=90999000UL/2; 257 - if (srate<500000) 258 - srate=500000; 259 260 - for(i=0;(i<sizeof(bands)/sizeof(bands[0]))&&(srate>bands[i]);i++) 261 ; 262 - /* first, check which sample rate is appropriate: 45, 60 80 or 90 MHz, 263 - and set the PLL accordingly (R07[1:0] Fclk, R06[7:4] PLLmult, 264 - R06[3:0] PLLphaseDetGain */ 265 - tmp=cx24110_readreg(state,0x07)&0xfc; 266 - if(srate<90999000UL/4) { /* sample rate 45MHz*/ 267 cx24110_writereg(state,0x07,tmp); 268 cx24110_writereg(state,0x06,0x78); 269 fclk=90999000UL/2; 270 - } else if(srate<60666000UL/2) { /* sample rate 60MHz */ 271 cx24110_writereg(state,0x07,tmp|0x1); 272 cx24110_writereg(state,0x06,0xa5); 273 fclk=60666000UL; 274 - } else if(srate<80888000UL/2) { /* sample rate 80MHz */ 275 cx24110_writereg(state,0x07,tmp|0x2); 276 cx24110_writereg(state,0x06,0x87); 277 fclk=80888000UL; 278 - } else { /* sample rate 90MHz */ 279 cx24110_writereg(state,0x07,tmp|0x3); 280 cx24110_writereg(state,0x06,0x78); 281 fclk=90999000UL; 282 - }; 283 - dprintk("cx24110 debug: fclk %d Hz\n",fclk); 284 - /* we need to divide two integers with approx. 27 bits in 32 bit 285 - arithmetic giving a 25 bit result */ 286 - /* the maximum dividend is 90999000/2, 0x02b6446c, this number is 287 - also the most complex divisor. Hence, the dividend has, 288 - assuming 32bit unsigned arithmetic, 6 clear bits on top, the 289 - divisor 2 unused bits at the bottom. Also, the quotient is 290 - always less than 1/2. Borrowed from VES1893.c, of course */ 291 292 - tmp=srate<<6; 293 - BDRI=fclk>>2; 294 - ratio=(tmp/BDRI); 295 296 - tmp=(tmp%BDRI)<<8; 297 - ratio=(ratio<<8)+(tmp/BDRI); 298 299 - tmp=(tmp%BDRI)<<8; 300 - ratio=(ratio<<8)+(tmp/BDRI); 301 302 - tmp=(tmp%BDRI)<<1; 303 - ratio=(ratio<<1)+(tmp/BDRI); 304 305 - dprintk("srate= %d (range %d, up to %d)\n", srate,i,bands[i]); 306 - dprintk("fclk = %d\n", fclk); 307 - dprintk("ratio= %08x\n", ratio); 308 309 - cx24110_writereg(state, 0x1, (ratio>>16)&0xff); 310 - cx24110_writereg(state, 0x2, (ratio>>8)&0xff); 311 - cx24110_writereg(state, 0x3, (ratio)&0xff); 312 313 - return 0; 314 315 } 316 ··· 324 325 dprintk("cx24110 debug: cx24108_write(%8.8x)\n",data); 326 327 - cx24110_writereg(state,0x6d,0x30); /* auto mode at 62kHz */ 328 - cx24110_writereg(state,0x70,0x15); /* auto mode 21 bits */ 329 330 - /* if the auto tuner writer is still busy, clear it out */ 331 - while (cx24110_readreg(state,0x6d)&0x80) 332 cx24110_writereg(state,0x72,0); 333 334 - /* write the topmost 8 bits */ 335 - cx24110_writereg(state,0x72,(data>>24)&0xff); 336 337 - /* wait for the send to be completed */ 338 - while ((cx24110_readreg(state,0x6d)&0xc0)==0x80) 339 ; 340 341 - /* send another 8 bytes */ 342 - cx24110_writereg(state,0x72,(data>>16)&0xff); 343 - while ((cx24110_readreg(state,0x6d)&0xc0)==0x80) 344 ; 345 346 - /* and the topmost 5 bits of this byte */ 347 - cx24110_writereg(state,0x72,(data>>8)&0xff); 348 - while ((cx24110_readreg(state,0x6d)&0xc0)==0x80) 349 ; 350 351 - /* now strobe the enable line once */ 352 - cx24110_writereg(state,0x6d,0x32); 353 - cx24110_writereg(state,0x6d,0x30); 354 355 - return 0; 356 } 357 358 static int cx24110_initfe(struct dvb_frontend* fe) 359 { 360 struct cx24110_state *state = fe->demodulator_priv; 361 /* fixme (low): error handling */ 362 - int i; 363 364 dprintk("%s: init chip\n", __FUNCTION__); 365 366 - for(i=0;i<sizeof(cx24110_regdata)/sizeof(cx24110_regdata[0]);i++) { 367 cx24110_writereg(state, cx24110_regdata[i].reg, cx24110_regdata[i].data); 368 - }; 369 370 if (state->config->pll_init) state->config->pll_init(fe); 371
··· 55 } while (0) 56 57 static struct {u8 reg; u8 data;} cx24110_regdata[]= 58 + /* Comments beginning with @ denote this value should 59 + be the default */ 60 + {{0x09,0x01}, /* SoftResetAll */ 61 + {0x09,0x00}, /* release reset */ 62 + {0x01,0xe8}, /* MSB of code rate 27.5MS/s */ 63 + {0x02,0x17}, /* middle byte " */ 64 + {0x03,0x29}, /* LSB " */ 65 + {0x05,0x03}, /* @ DVB mode, standard code rate 3/4 */ 66 + {0x06,0xa5}, /* @ PLL 60MHz */ 67 + {0x07,0x01}, /* @ Fclk, i.e. sampling clock, 60MHz */ 68 + {0x0a,0x00}, /* @ partial chip disables, do not set */ 69 + {0x0b,0x01}, /* set output clock in gapped mode, start signal low 70 + active for first byte */ 71 + {0x0c,0x11}, /* no parity bytes, large hold time, serial data out */ 72 + {0x0d,0x6f}, /* @ RS Sync/Unsync thresholds */ 73 + {0x10,0x40}, /* chip doc is misleading here: write bit 6 as 1 74 + to avoid starting the BER counter. Reset the 75 + CRC test bit. Finite counting selected */ 76 + {0x15,0xff}, /* @ size of the limited time window for RS BER 77 + estimation. It is <value>*256 RS blocks, this 78 + gives approx. 2.6 sec at 27.5MS/s, rate 3/4 */ 79 + {0x16,0x00}, /* @ enable all RS output ports */ 80 + {0x17,0x04}, /* @ time window allowed for the RS to sync */ 81 + {0x18,0xae}, /* @ allow all standard DVB code rates to be scanned 82 + for automatically */ 83 + /* leave the current code rate and normalization 84 + registers as they are after reset... */ 85 + {0x21,0x10}, /* @ during AutoAcq, search each viterbi setting 86 + only once */ 87 + {0x23,0x18}, /* @ size of the limited time window for Viterbi BER 88 + estimation. It is <value>*65536 channel bits, i.e. 89 + approx. 38ms at 27.5MS/s, rate 3/4 */ 90 + {0x24,0x24}, /* do not trigger Viterbi CRC test. Finite count window */ 91 + /* leave front-end AGC parameters at default values */ 92 + /* leave decimation AGC parameters at default values */ 93 + {0x35,0x40}, /* disable all interrupts. They are not connected anyway */ 94 + {0x36,0xff}, /* clear all interrupt pending flags */ 95 + {0x37,0x00}, /* @ fully enable AutoAcqq state machine */ 96 + {0x38,0x07}, /* @ enable fade recovery, but not autostart AutoAcq */ 97 + /* leave the equalizer parameters on their default values */ 98 + /* leave the final AGC parameters on their default values */ 99 + {0x41,0x00}, /* @ MSB of front-end derotator frequency */ 100 + {0x42,0x00}, /* @ middle bytes " */ 101 + {0x43,0x00}, /* @ LSB " */ 102 + /* leave the carrier tracking loop parameters on default */ 103 + /* leave the bit timing loop parameters at gefault */ 104 + {0x56,0x4d}, /* set the filtune voltage to 2.7V, as recommended by */ 105 + /* the cx24108 data sheet for symbol rates above 15MS/s */ 106 + {0x57,0x00}, /* @ Filter sigma delta enabled, positive */ 107 + {0x61,0x95}, /* GPIO pins 1-4 have special function */ 108 + {0x62,0x05}, /* GPIO pin 5 has special function, pin 6 is GPIO */ 109 + {0x63,0x00}, /* All GPIO pins use CMOS output characteristics */ 110 + {0x64,0x20}, /* GPIO 6 is input, all others are outputs */ 111 + {0x6d,0x30}, /* tuner auto mode clock freq 62kHz */ 112 + {0x70,0x15}, /* use auto mode, tuner word is 21 bits long */ 113 + {0x73,0x00}, /* @ disable several demod bypasses */ 114 + {0x74,0x00}, /* @ " */ 115 + {0x75,0x00} /* @ " */ 116 + /* the remaining registers are for SEC */ 117 }; 118 119 120 static int cx24110_writereg (struct cx24110_state* state, int reg, int data) 121 { 122 + u8 buf [] = { reg, data }; 123 struct i2c_msg msg = { .addr = state->config->demod_address, .flags = 0, .buf = buf, .len = 2 }; 124 int err; 125 126 + if ((err = i2c_transfer(state->i2c, &msg, 1)) != 1) { 127 dprintk ("%s: writereg error (err == %i, reg == 0x%02x," 128 " data == 0x%02x)\n", __FUNCTION__, err, reg, data); 129 return -EREMOTEIO; 130 } 131 132 + return 0; 133 } 134 135 static int cx24110_readreg (struct cx24110_state* state, u8 reg) ··· 153 154 switch (inversion) { 155 case INVERSION_OFF: 156 + cx24110_writereg(state,0x37,cx24110_readreg(state,0x37)|0x1); 157 + /* AcqSpectrInvDis on. No idea why someone should want this */ 158 + cx24110_writereg(state,0x5,cx24110_readreg(state,0x5)&0xf7); 159 + /* Initial value 0 at start of acq */ 160 + cx24110_writereg(state,0x22,cx24110_readreg(state,0x22)&0xef); 161 + /* current value 0 */ 162 + /* The cx24110 manual tells us this reg is read-only. 163 + But what the heck... set it ayways */ 164 + break; 165 case INVERSION_ON: 166 + cx24110_writereg(state,0x37,cx24110_readreg(state,0x37)|0x1); 167 + /* AcqSpectrInvDis on. No idea why someone should want this */ 168 + cx24110_writereg(state,0x5,cx24110_readreg(state,0x5)|0x08); 169 + /* Initial value 1 at start of acq */ 170 + cx24110_writereg(state,0x22,cx24110_readreg(state,0x22)|0x10); 171 + /* current value 1 */ 172 + break; 173 case INVERSION_AUTO: 174 + cx24110_writereg(state,0x37,cx24110_readreg(state,0x37)&0xfe); 175 + /* AcqSpectrInvDis off. Leave initial & current states as is */ 176 + break; 177 default: 178 return -EINVAL; 179 } ··· 185 { 186 /* fixme (low): error handling */ 187 188 + static const int rate[]={-1,1,2,3,5,7,-1}; 189 + static const int g1[]={-1,0x01,0x02,0x05,0x15,0x45,-1}; 190 + static const int g2[]={-1,0x01,0x03,0x06,0x1a,0x7a,-1}; 191 192 + /* Well, the AutoAcq engine of the cx24106 and 24110 automatically 193 + searches all enabled viterbi rates, and can handle non-standard 194 + rates as well. */ 195 196 + if (fec>FEC_AUTO) 197 + fec=FEC_AUTO; 198 199 + if (fec==FEC_AUTO) { /* (re-)establish AutoAcq behaviour */ 200 cx24110_writereg(state,0x37,cx24110_readreg(state,0x37)&0xdf); 201 /* clear AcqVitDis bit */ 202 cx24110_writereg(state,0x18,0xae); ··· 208 cx24110_writereg(state,0x1a,0x05); cx24110_writereg(state,0x1b,0x06); 209 /* set the puncture registers for code rate 3/4 */ 210 return 0; 211 + } else { 212 cx24110_writereg(state,0x37,cx24110_readreg(state,0x37)|0x20); 213 /* set AcqVitDis bit */ 214 if(rate[fec]>0) { ··· 219 cx24110_writereg(state,0x1a,g1[fec]); 220 cx24110_writereg(state,0x1b,g2[fec]); 221 /* not sure if this is the right way: I always used AutoAcq mode */ 222 + } else 223 return -EOPNOTSUPP; 224 /* fixme (low): which is the correct return code? */ 225 + }; 226 return 0; 227 } 228 ··· 245 static int cx24110_set_symbolrate (struct cx24110_state* state, u32 srate) 246 { 247 /* fixme (low): add error handling */ 248 + u32 ratio; 249 + u32 tmp, fclk, BDRI; 250 251 + static const u32 bands[]={5000000UL,15000000UL,90999000UL/2}; 252 + int i; 253 254 dprintk("cx24110 debug: entering %s(%d)\n",__FUNCTION__,srate); 255 + if (srate>90999000UL/2) 256 + srate=90999000UL/2; 257 + if (srate<500000) 258 + srate=500000; 259 260 + for(i=0;(i<sizeof(bands)/sizeof(bands[0]))&&(srate>bands[i]);i++) 261 ; 262 + /* first, check which sample rate is appropriate: 45, 60 80 or 90 MHz, 263 + and set the PLL accordingly (R07[1:0] Fclk, R06[7:4] PLLmult, 264 + R06[3:0] PLLphaseDetGain */ 265 + tmp=cx24110_readreg(state,0x07)&0xfc; 266 + if(srate<90999000UL/4) { /* sample rate 45MHz*/ 267 cx24110_writereg(state,0x07,tmp); 268 cx24110_writereg(state,0x06,0x78); 269 fclk=90999000UL/2; 270 + } else if(srate<60666000UL/2) { /* sample rate 60MHz */ 271 cx24110_writereg(state,0x07,tmp|0x1); 272 cx24110_writereg(state,0x06,0xa5); 273 fclk=60666000UL; 274 + } else if(srate<80888000UL/2) { /* sample rate 80MHz */ 275 cx24110_writereg(state,0x07,tmp|0x2); 276 cx24110_writereg(state,0x06,0x87); 277 fclk=80888000UL; 278 + } else { /* sample rate 90MHz */ 279 cx24110_writereg(state,0x07,tmp|0x3); 280 cx24110_writereg(state,0x06,0x78); 281 fclk=90999000UL; 282 + }; 283 + dprintk("cx24110 debug: fclk %d Hz\n",fclk); 284 + /* we need to divide two integers with approx. 27 bits in 32 bit 285 + arithmetic giving a 25 bit result */ 286 + /* the maximum dividend is 90999000/2, 0x02b6446c, this number is 287 + also the most complex divisor. Hence, the dividend has, 288 + assuming 32bit unsigned arithmetic, 6 clear bits on top, the 289 + divisor 2 unused bits at the bottom. Also, the quotient is 290 + always less than 1/2. Borrowed from VES1893.c, of course */ 291 292 + tmp=srate<<6; 293 + BDRI=fclk>>2; 294 + ratio=(tmp/BDRI); 295 296 + tmp=(tmp%BDRI)<<8; 297 + ratio=(ratio<<8)+(tmp/BDRI); 298 299 + tmp=(tmp%BDRI)<<8; 300 + ratio=(ratio<<8)+(tmp/BDRI); 301 302 + tmp=(tmp%BDRI)<<1; 303 + ratio=(ratio<<1)+(tmp/BDRI); 304 305 + dprintk("srate= %d (range %d, up to %d)\n", srate,i,bands[i]); 306 + dprintk("fclk = %d\n", fclk); 307 + dprintk("ratio= %08x\n", ratio); 308 309 + cx24110_writereg(state, 0x1, (ratio>>16)&0xff); 310 + cx24110_writereg(state, 0x2, (ratio>>8)&0xff); 311 + cx24110_writereg(state, 0x3, (ratio)&0xff); 312 313 + return 0; 314 315 } 316 ··· 324 325 dprintk("cx24110 debug: cx24108_write(%8.8x)\n",data); 326 327 + cx24110_writereg(state,0x6d,0x30); /* auto mode at 62kHz */ 328 + cx24110_writereg(state,0x70,0x15); /* auto mode 21 bits */ 329 330 + /* if the auto tuner writer is still busy, clear it out */ 331 + while (cx24110_readreg(state,0x6d)&0x80) 332 cx24110_writereg(state,0x72,0); 333 334 + /* write the topmost 8 bits */ 335 + cx24110_writereg(state,0x72,(data>>24)&0xff); 336 337 + /* wait for the send to be completed */ 338 + while ((cx24110_readreg(state,0x6d)&0xc0)==0x80) 339 ; 340 341 + /* send another 8 bytes */ 342 + cx24110_writereg(state,0x72,(data>>16)&0xff); 343 + while ((cx24110_readreg(state,0x6d)&0xc0)==0x80) 344 ; 345 346 + /* and the topmost 5 bits of this byte */ 347 + cx24110_writereg(state,0x72,(data>>8)&0xff); 348 + while ((cx24110_readreg(state,0x6d)&0xc0)==0x80) 349 ; 350 351 + /* now strobe the enable line once */ 352 + cx24110_writereg(state,0x6d,0x32); 353 + cx24110_writereg(state,0x6d,0x30); 354 355 + return 0; 356 } 357 358 static int cx24110_initfe(struct dvb_frontend* fe) 359 { 360 struct cx24110_state *state = fe->demodulator_priv; 361 /* fixme (low): error handling */ 362 + int i; 363 364 dprintk("%s: init chip\n", __FUNCTION__); 365 366 + for(i=0;i<sizeof(cx24110_regdata)/sizeof(cx24110_regdata[0]);i++) { 367 cx24110_writereg(state, cx24110_regdata[i].reg, cx24110_regdata[i].data); 368 + }; 369 370 if (state->config->pll_init) state->config->pll_init(fe); 371
+13 -13
drivers/media/dvb/frontends/l64781.c
··· 2 driver for LSI L64781 COFDM demodulator 3 4 Copyright (C) 2001 Holger Waechtler for Convergence Integrated Media GmbH 5 - Marko Kohtala <marko.kohtala@luukku.com> 6 7 This program is free software; you can redistribute it and/or modify 8 it under the terms of the GNU General Public License as published by ··· 433 { 434 struct l64781_state* state = fe->demodulator_priv; 435 436 - reset_and_configure (state); 437 438 /* Power up */ 439 l64781_writereg (state, 0x3e, 0xa5); ··· 456 l64781_writereg (state, 0x0d, 0x8c); 457 458 /* With ppm=8000, it seems the DTR_SENSITIVITY will result in 459 - value of 2 with all possible bandwidths and guard 460 - intervals, which is the initial value anyway. */ 461 - /*l64781_writereg (state, 0x19, 0x92);*/ 462 463 /* Everything is two's complement, soft bit and CSI_OUT too */ 464 l64781_writereg (state, 0x1e, 0x09); ··· 477 static int l64781_get_tune_settings(struct dvb_frontend* fe, 478 struct dvb_frontend_tune_settings* fesettings) 479 { 480 - fesettings->min_delay_ms = 4000; 481 - fesettings->step_size = 0; 482 - fesettings->max_drift = 0; 483 - return 0; 484 } 485 486 static void l64781_release(struct dvb_frontend* fe) ··· 522 523 /* The chip always responds to reads */ 524 if (i2c_transfer(state->i2c, msg, 2) != 2) { 525 - dprintk("No response to read on I2C bus\n"); 526 goto error; 527 } 528 ··· 531 532 /* Reading the POWER_DOWN register always returns 0 */ 533 if (reg0x3e != 0) { 534 - dprintk("Device doesn't look like L64781\n"); 535 goto error; 536 } 537 ··· 540 541 /* Responds to all reads with 0 */ 542 if (l64781_readreg(state, 0x1a) != 0) { 543 - dprintk("Read 1 returned unexpcted value\n"); 544 goto error; 545 } 546 ··· 549 550 /* Responds with register default value */ 551 if (l64781_readreg(state, 0x1a) != 0xa1) { 552 - dprintk("Read 2 returned unexpcted value\n"); 553 goto error; 554 } 555
··· 2 driver for LSI L64781 COFDM demodulator 3 4 Copyright (C) 2001 Holger Waechtler for Convergence Integrated Media GmbH 5 + Marko Kohtala <marko.kohtala@luukku.com> 6 7 This program is free software; you can redistribute it and/or modify 8 it under the terms of the GNU General Public License as published by ··· 433 { 434 struct l64781_state* state = fe->demodulator_priv; 435 436 + reset_and_configure (state); 437 438 /* Power up */ 439 l64781_writereg (state, 0x3e, 0xa5); ··· 456 l64781_writereg (state, 0x0d, 0x8c); 457 458 /* With ppm=8000, it seems the DTR_SENSITIVITY will result in 459 + value of 2 with all possible bandwidths and guard 460 + intervals, which is the initial value anyway. */ 461 + /*l64781_writereg (state, 0x19, 0x92);*/ 462 463 /* Everything is two's complement, soft bit and CSI_OUT too */ 464 l64781_writereg (state, 0x1e, 0x09); ··· 477 static int l64781_get_tune_settings(struct dvb_frontend* fe, 478 struct dvb_frontend_tune_settings* fesettings) 479 { 480 + fesettings->min_delay_ms = 4000; 481 + fesettings->step_size = 0; 482 + fesettings->max_drift = 0; 483 + return 0; 484 } 485 486 static void l64781_release(struct dvb_frontend* fe) ··· 522 523 /* The chip always responds to reads */ 524 if (i2c_transfer(state->i2c, msg, 2) != 2) { 525 + dprintk("No response to read on I2C bus\n"); 526 goto error; 527 } 528 ··· 531 532 /* Reading the POWER_DOWN register always returns 0 */ 533 if (reg0x3e != 0) { 534 + dprintk("Device doesn't look like L64781\n"); 535 goto error; 536 } 537 ··· 540 541 /* Responds to all reads with 0 */ 542 if (l64781_readreg(state, 0x1a) != 0) { 543 + dprintk("Read 1 returned unexpcted value\n"); 544 goto error; 545 } 546 ··· 549 550 /* Responds with register default value */ 551 if (l64781_readreg(state, 0x1a) != 0xa1) { 552 + dprintk("Read 2 returned unexpcted value\n"); 553 goto error; 554 } 555
+1 -1
drivers/media/dvb/frontends/l64781.h
··· 2 driver for LSI L64781 COFDM demodulator 3 4 Copyright (C) 2001 Holger Waechtler for Convergence Integrated Media GmbH 5 - Marko Kohtala <marko.kohtala@luukku.com> 6 7 This program is free software; you can redistribute it and/or modify 8 it under the terms of the GNU General Public License as published by
··· 2 driver for LSI L64781 COFDM demodulator 3 4 Copyright (C) 2001 Holger Waechtler for Convergence Integrated Media GmbH 5 + Marko Kohtala <marko.kohtala@luukku.com> 6 7 This program is free software; you can redistribute it and/or modify 8 it under the terms of the GNU General Public License as published by
+4 -4
drivers/media/dvb/frontends/lgdt330x.c
··· 301 static u8 lgdt3303_8vsb_44_data[] = { 302 0x04, 0x00, 303 0x0d, 0x40, 304 - 0x0e, 0x87, 305 - 0x0f, 0x8e, 306 - 0x10, 0x01, 307 - 0x47, 0x8b }; 308 309 /* 310 * Array of byte pairs <address, value>
··· 301 static u8 lgdt3303_8vsb_44_data[] = { 302 0x04, 0x00, 303 0x0d, 0x40, 304 + 0x0e, 0x87, 305 + 0x0f, 0x8e, 306 + 0x10, 0x01, 307 + 0x47, 0x8b }; 308 309 /* 310 * Array of byte pairs <address, value>
+2 -2
drivers/media/dvb/frontends/mt312.c
··· 554 if ((ret = mt312_write(state, SYM_RATE_H, buf, sizeof(buf))) < 0) 555 return ret; 556 557 - mt312_reset(state, 0); 558 559 return 0; 560 } ··· 695 FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | 696 FE_CAN_FEC_3_4 | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | 697 FE_CAN_FEC_AUTO | FE_CAN_QPSK | FE_CAN_MUTE_TS | 698 - FE_CAN_RECOVER 699 }, 700 701 .release = mt312_release,
··· 554 if ((ret = mt312_write(state, SYM_RATE_H, buf, sizeof(buf))) < 0) 555 return ret; 556 557 + mt312_reset(state, 0); 558 559 return 0; 560 } ··· 695 FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | 696 FE_CAN_FEC_3_4 | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | 697 FE_CAN_FEC_AUTO | FE_CAN_QPSK | FE_CAN_MUTE_TS | 698 + FE_CAN_RECOVER 699 }, 700 701 .release = mt312_release,
+3 -3
drivers/media/dvb/frontends/nxt2002.c
··· 527 else 528 snrdb = 1000*0 + ( 1000*(12-0) * ( temp2 - 0 ) / ( 0x7C00 - 0 ) ); 529 530 - /* the value reported back from the frontend will be FFFF=32db 0000=0db */ 531 532 *snr = snrdb * (0xFFFF/32000); 533 ··· 646 memcpy(&state->ops, &nxt2002_ops, sizeof(struct dvb_frontend_ops)); 647 state->initialised = 0; 648 649 - /* Check the first 5 registers to ensure this a revision we can handle */ 650 651 i2c_readbytes(state, 0x00, buf, 5); 652 if (buf[0] != 0x04) goto error; /* device id */ ··· 672 .type = FE_ATSC, 673 .frequency_min = 54000000, 674 .frequency_max = 860000000, 675 - /* stepsize is just a guess */ 676 .frequency_stepsize = 166666, 677 .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | 678 FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
··· 527 else 528 snrdb = 1000*0 + ( 1000*(12-0) * ( temp2 - 0 ) / ( 0x7C00 - 0 ) ); 529 530 + /* the value reported back from the frontend will be FFFF=32db 0000=0db */ 531 532 *snr = snrdb * (0xFFFF/32000); 533 ··· 646 memcpy(&state->ops, &nxt2002_ops, sizeof(struct dvb_frontend_ops)); 647 state->initialised = 0; 648 649 + /* Check the first 5 registers to ensure this a revision we can handle */ 650 651 i2c_readbytes(state, 0x00, buf, 5); 652 if (buf[0] != 0x04) goto error; /* device id */ ··· 672 .type = FE_ATSC, 673 .frequency_min = 54000000, 674 .frequency_max = 860000000, 675 + /* stepsize is just a guess */ 676 .frequency_stepsize = 166666, 677 .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | 678 FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
+2 -2
drivers/media/dvb/frontends/nxt200x.c
··· 339 switch (state->demod_chip) { 340 case NXT2004: 341 if (i2c_writebytes(state, state->config->pll_address, data, 4)) 342 - printk(KERN_WARNING "nxt200x: error writing to tuner\n"); 343 /* wait until we have a lock */ 344 while (count < 20) { 345 i2c_readbytes(state, state->config->pll_address, &buf, 1); ··· 497 498 /* calculate firmware CRC */ 499 for (position = 0; position < fw->size; position++) { 500 - crc = nxt200x_crc(crc, fw->data[position]); 501 } 502 503 buf[0] = rambase >> 8;
··· 339 switch (state->demod_chip) { 340 case NXT2004: 341 if (i2c_writebytes(state, state->config->pll_address, data, 4)) 342 + printk(KERN_WARNING "nxt200x: error writing to tuner\n"); 343 /* wait until we have a lock */ 344 while (count < 20) { 345 i2c_readbytes(state, state->config->pll_address, &buf, 1); ··· 497 498 /* calculate firmware CRC */ 499 for (position = 0; position < fw->size; position++) { 500 + crc = nxt200x_crc(crc, fw->data[position]); 501 } 502 503 buf[0] = rambase >> 8;
+5 -5
drivers/media/dvb/frontends/nxt6000.c
··· 574 .symbol_rate_max = 9360000, /* FIXME */ 575 .symbol_rate_tolerance = 4000, 576 .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | 577 - FE_CAN_FEC_4_5 | FE_CAN_FEC_5_6 | FE_CAN_FEC_6_7 | 578 - FE_CAN_FEC_7_8 | FE_CAN_FEC_8_9 | FE_CAN_FEC_AUTO | 579 - FE_CAN_QAM_16 | FE_CAN_QAM_64 | FE_CAN_QAM_AUTO | 580 - FE_CAN_TRANSMISSION_MODE_AUTO | FE_CAN_GUARD_INTERVAL_AUTO | 581 - FE_CAN_HIERARCHY_AUTO, 582 }, 583 584 .release = nxt6000_release,
··· 574 .symbol_rate_max = 9360000, /* FIXME */ 575 .symbol_rate_tolerance = 4000, 576 .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | 577 + FE_CAN_FEC_4_5 | FE_CAN_FEC_5_6 | FE_CAN_FEC_6_7 | 578 + FE_CAN_FEC_7_8 | FE_CAN_FEC_8_9 | FE_CAN_FEC_AUTO | 579 + FE_CAN_QAM_16 | FE_CAN_QAM_64 | FE_CAN_QAM_AUTO | 580 + FE_CAN_TRANSMISSION_MODE_AUTO | FE_CAN_GUARD_INTERVAL_AUTO | 581 + FE_CAN_HIERARCHY_AUTO, 582 }, 583 584 .release = nxt6000_release,
+1 -1
drivers/media/dvb/frontends/or51132.c
··· 503 rcvr_stat = rec_buf[1]; 504 usK = (rcvr_stat & 0x10) ? 3 : 0; 505 506 - /* The value reported back from the frontend will be FFFF=100% 0000=0% */ 507 signal_strength = (((8952 - i20Log10(snr_equ) - usK*100)/3+5)*65535)/1000; 508 if (signal_strength > 0xffff) 509 *strength = 0xffff;
··· 503 rcvr_stat = rec_buf[1]; 504 usK = (rcvr_stat & 0x10) ? 3 : 0; 505 506 + /* The value reported back from the frontend will be FFFF=100% 0000=0% */ 507 signal_strength = (((8952 - i20Log10(snr_equ) - usK*100)/3+5)*65535)/1000; 508 if (signal_strength > 0xffff) 509 *strength = 0xffff;
+3 -3
drivers/media/dvb/frontends/s5h1420.c
··· 494 } 495 496 static void s5h1420_setfec_inversion(struct s5h1420_state* state, 497 - struct dvb_frontend_parameters *p) 498 { 499 u8 inversion = 0; 500 ··· 521 522 case FEC_3_4: 523 s5h1420_writereg(state, 0x30, 0x04); 524 - s5h1420_writereg(state, 0x31, 0x12 | inversion); 525 - break; 526 527 case FEC_5_6: 528 s5h1420_writereg(state, 0x30, 0x08);
··· 494 } 495 496 static void s5h1420_setfec_inversion(struct s5h1420_state* state, 497 + struct dvb_frontend_parameters *p) 498 { 499 u8 inversion = 0; 500 ··· 521 522 case FEC_3_4: 523 s5h1420_writereg(state, 0x30, 0x04); 524 + s5h1420_writereg(state, 0x31, 0x12 | inversion); 525 + break; 526 527 case FEC_5_6: 528 s5h1420_writereg(state, 0x30, 0x08);
+1 -1
drivers/media/dvb/frontends/s5h1420.h
··· 39 }; 40 41 extern struct dvb_frontend* s5h1420_attach(const struct s5h1420_config* config, 42 - struct i2c_adapter* i2c); 43 44 #endif // S5H1420_H
··· 39 }; 40 41 extern struct dvb_frontend* s5h1420_attach(const struct s5h1420_config* config, 42 + struct i2c_adapter* i2c); 43 44 #endif // S5H1420_H
+8 -8
drivers/media/dvb/frontends/sp8870.c
··· 67 68 static int sp8870_writereg (struct sp8870_state* state, u16 reg, u16 data) 69 { 70 - u8 buf [] = { reg >> 8, reg & 0xff, data >> 8, data & 0xff }; 71 struct i2c_msg msg = { .addr = state->config->demod_address, .flags = 0, .buf = buf, .len = 4 }; 72 int err; 73 74 - if ((err = i2c_transfer (state->i2c, &msg, 1)) != 1) { 75 dprintk ("%s: writereg error (err == %i, reg == 0x%02x, data == 0x%02x)\n", __FUNCTION__, err, reg, data); 76 return -EREMOTEIO; 77 } 78 79 - return 0; 80 } 81 82 static int sp8870_readreg (struct sp8870_state* state, u16 reg) ··· 305 static int sp8870_init (struct dvb_frontend* fe) 306 { 307 struct sp8870_state* state = fe->demodulator_priv; 308 - const struct firmware *fw = NULL; 309 310 sp8870_wake_up(state); 311 if (state->initialised) return 0; ··· 534 535 static int sp8870_get_tune_settings(struct dvb_frontend* fe, struct dvb_frontend_tune_settings* fesettings) 536 { 537 - fesettings->min_delay_ms = 350; 538 - fesettings->step_size = 0; 539 - fesettings->max_drift = 0; 540 - return 0; 541 } 542 543 static void sp8870_release(struct dvb_frontend* fe)
··· 67 68 static int sp8870_writereg (struct sp8870_state* state, u16 reg, u16 data) 69 { 70 + u8 buf [] = { reg >> 8, reg & 0xff, data >> 8, data & 0xff }; 71 struct i2c_msg msg = { .addr = state->config->demod_address, .flags = 0, .buf = buf, .len = 4 }; 72 int err; 73 74 + if ((err = i2c_transfer (state->i2c, &msg, 1)) != 1) { 75 dprintk ("%s: writereg error (err == %i, reg == 0x%02x, data == 0x%02x)\n", __FUNCTION__, err, reg, data); 76 return -EREMOTEIO; 77 } 78 79 + return 0; 80 } 81 82 static int sp8870_readreg (struct sp8870_state* state, u16 reg) ··· 305 static int sp8870_init (struct dvb_frontend* fe) 306 { 307 struct sp8870_state* state = fe->demodulator_priv; 308 + const struct firmware *fw = NULL; 309 310 sp8870_wake_up(state); 311 if (state->initialised) return 0; ··· 534 535 static int sp8870_get_tune_settings(struct dvb_frontend* fe, struct dvb_frontend_tune_settings* fesettings) 536 { 537 + fesettings->min_delay_ms = 350; 538 + fesettings->step_size = 0; 539 + fesettings->max_drift = 0; 540 + return 0; 541 } 542 543 static void sp8870_release(struct dvb_frontend* fe)
+7 -7
drivers/media/dvb/frontends/sp887x.c
··· 80 u8 b1 [2]; 81 int ret; 82 struct i2c_msg msg[] = {{ .addr = state->config->demod_address, .flags = 0, .buf = b0, .len = 2 }, 83 - { .addr = state->config->demod_address, .flags = I2C_M_RD, .buf = b1, .len = 2 }}; 84 85 if ((ret = i2c_transfer(state->i2c, msg, 2)) != 2) { 86 printk("%s: readreg error (ret == %i)\n", __FUNCTION__, ret); ··· 498 static int sp887x_init(struct dvb_frontend* fe) 499 { 500 struct sp887x_state* state = fe->demodulator_priv; 501 - const struct firmware *fw = NULL; 502 int ret; 503 504 if (!state->initialised) { ··· 528 529 static int sp887x_get_tune_settings(struct dvb_frontend* fe, struct dvb_frontend_tune_settings* fesettings) 530 { 531 - fesettings->min_delay_ms = 350; 532 - fesettings->step_size = 166666*2; 533 - fesettings->max_drift = (166666*2)+1; 534 - return 0; 535 } 536 537 static void sp887x_release(struct dvb_frontend* fe) ··· 581 .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | 582 FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | 583 FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 | 584 - FE_CAN_RECOVER 585 }, 586 587 .release = sp887x_release,
··· 80 u8 b1 [2]; 81 int ret; 82 struct i2c_msg msg[] = {{ .addr = state->config->demod_address, .flags = 0, .buf = b0, .len = 2 }, 83 + { .addr = state->config->demod_address, .flags = I2C_M_RD, .buf = b1, .len = 2 }}; 84 85 if ((ret = i2c_transfer(state->i2c, msg, 2)) != 2) { 86 printk("%s: readreg error (ret == %i)\n", __FUNCTION__, ret); ··· 498 static int sp887x_init(struct dvb_frontend* fe) 499 { 500 struct sp887x_state* state = fe->demodulator_priv; 501 + const struct firmware *fw = NULL; 502 int ret; 503 504 if (!state->initialised) { ··· 528 529 static int sp887x_get_tune_settings(struct dvb_frontend* fe, struct dvb_frontend_tune_settings* fesettings) 530 { 531 + fesettings->min_delay_ms = 350; 532 + fesettings->step_size = 166666*2; 533 + fesettings->max_drift = (166666*2)+1; 534 + return 0; 535 } 536 537 static void sp887x_release(struct dvb_frontend* fe) ··· 581 .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | 582 FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | 583 FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 | 584 + FE_CAN_RECOVER 585 }, 586 587 .release = sp887x_release,
+18 -18
drivers/media/dvb/frontends/stv0299.c
··· 95 96 int stv0299_writereg (struct dvb_frontend* fe, u8 reg, u8 data) 97 { 98 - struct stv0299_state* state = fe->demodulator_priv; 99 100 return stv0299_writeregI(state, reg, data); 101 } ··· 220 221 static int stv0299_set_symbolrate (struct dvb_frontend* fe, u32 srate) 222 { 223 - struct stv0299_state* state = fe->demodulator_priv; 224 u64 big = srate; 225 u32 ratio; 226 ··· 271 static int stv0299_send_diseqc_msg (struct dvb_frontend* fe, 272 struct dvb_diseqc_master_cmd *m) 273 { 274 - struct stv0299_state* state = fe->demodulator_priv; 275 u8 val; 276 int i; 277 ··· 301 302 static int stv0299_send_diseqc_burst (struct dvb_frontend* fe, fe_sec_mini_cmd_t burst) 303 { 304 - struct stv0299_state* state = fe->demodulator_priv; 305 u8 val; 306 307 dprintk ("%s\n", __FUNCTION__); ··· 328 329 static int stv0299_set_tone (struct dvb_frontend* fe, fe_sec_tone_mode_t tone) 330 { 331 - struct stv0299_state* state = fe->demodulator_priv; 332 u8 val; 333 334 if (stv0299_wait_diseqc_idle (state, 100) < 0) ··· 350 351 static int stv0299_set_voltage (struct dvb_frontend* fe, fe_sec_voltage_t voltage) 352 { 353 - struct stv0299_state* state = fe->demodulator_priv; 354 u8 reg0x08; 355 u8 reg0x0c; 356 ··· 442 443 static int stv0299_init (struct dvb_frontend* fe) 444 { 445 - struct stv0299_state* state = fe->demodulator_priv; 446 int i; 447 448 dprintk("stv0299: init chip\n"); ··· 461 462 static int stv0299_read_status(struct dvb_frontend* fe, fe_status_t* status) 463 { 464 - struct stv0299_state* state = fe->demodulator_priv; 465 466 u8 signal = 0xff - stv0299_readreg (state, 0x18); 467 u8 sync = stv0299_readreg (state, 0x1b); ··· 489 490 static int stv0299_read_ber(struct dvb_frontend* fe, u32* ber) 491 { 492 - struct stv0299_state* state = fe->demodulator_priv; 493 494 if (state->errmode != STATUS_BER) return 0; 495 *ber = (stv0299_readreg (state, 0x1d) << 8) | stv0299_readreg (state, 0x1e); ··· 499 500 static int stv0299_read_signal_strength(struct dvb_frontend* fe, u16* strength) 501 { 502 - struct stv0299_state* state = fe->demodulator_priv; 503 504 s32 signal = 0xffff - ((stv0299_readreg (state, 0x18) << 8) 505 | stv0299_readreg (state, 0x19)); ··· 516 517 static int stv0299_read_snr(struct dvb_frontend* fe, u16* snr) 518 { 519 - struct stv0299_state* state = fe->demodulator_priv; 520 521 s32 xsnr = 0xffff - ((stv0299_readreg (state, 0x24) << 8) 522 | stv0299_readreg (state, 0x25)); ··· 528 529 static int stv0299_read_ucblocks(struct dvb_frontend* fe, u32* ucblocks) 530 { 531 - struct stv0299_state* state = fe->demodulator_priv; 532 533 if (state->errmode != STATUS_UCBLOCKS) *ucblocks = 0; 534 else *ucblocks = (stv0299_readreg (state, 0x1d) << 8) | stv0299_readreg (state, 0x1e); ··· 538 539 static int stv0299_set_frontend(struct dvb_frontend* fe, struct dvb_frontend_parameters * p) 540 { 541 - struct stv0299_state* state = fe->demodulator_priv; 542 int invval = 0; 543 544 dprintk ("%s : FE_SET_FRONTEND\n", __FUNCTION__); ··· 571 572 static int stv0299_get_frontend(struct dvb_frontend* fe, struct dvb_frontend_parameters * p) 573 { 574 - struct stv0299_state* state = fe->demodulator_priv; 575 s32 derot_freq; 576 int invval; 577 ··· 596 597 static int stv0299_sleep(struct dvb_frontend* fe) 598 { 599 - struct stv0299_state* state = fe->demodulator_priv; 600 601 stv0299_writeregI(state, 0x02, 0x80); 602 state->initialised = 0; ··· 606 607 static int stv0299_get_tune_settings(struct dvb_frontend* fe, struct dvb_frontend_tune_settings* fesettings) 608 { 609 - struct stv0299_state* state = fe->demodulator_priv; 610 611 fesettings->min_delay_ms = state->config->min_delay_ms; 612 if (fesettings->parameters.u.qpsk.symbol_rate < 10000000) { ··· 658 659 /* create dvb_frontend */ 660 state->frontend.ops = &state->ops; 661 - state->frontend.demodulator_priv = state; 662 return &state->frontend; 663 664 error: ··· 714 715 MODULE_DESCRIPTION("ST STV0299 DVB Demodulator driver"); 716 MODULE_AUTHOR("Ralph Metzler, Holger Waechtler, Peter Schildmann, Felix Domke, " 717 - "Andreas Oberritter, Andrew de Quincey, Kenneth Aafl�y"); 718 MODULE_LICENSE("GPL"); 719 720 EXPORT_SYMBOL(stv0299_writereg);
··· 95 96 int stv0299_writereg (struct dvb_frontend* fe, u8 reg, u8 data) 97 { 98 + struct stv0299_state* state = fe->demodulator_priv; 99 100 return stv0299_writeregI(state, reg, data); 101 } ··· 220 221 static int stv0299_set_symbolrate (struct dvb_frontend* fe, u32 srate) 222 { 223 + struct stv0299_state* state = fe->demodulator_priv; 224 u64 big = srate; 225 u32 ratio; 226 ··· 271 static int stv0299_send_diseqc_msg (struct dvb_frontend* fe, 272 struct dvb_diseqc_master_cmd *m) 273 { 274 + struct stv0299_state* state = fe->demodulator_priv; 275 u8 val; 276 int i; 277 ··· 301 302 static int stv0299_send_diseqc_burst (struct dvb_frontend* fe, fe_sec_mini_cmd_t burst) 303 { 304 + struct stv0299_state* state = fe->demodulator_priv; 305 u8 val; 306 307 dprintk ("%s\n", __FUNCTION__); ··· 328 329 static int stv0299_set_tone (struct dvb_frontend* fe, fe_sec_tone_mode_t tone) 330 { 331 + struct stv0299_state* state = fe->demodulator_priv; 332 u8 val; 333 334 if (stv0299_wait_diseqc_idle (state, 100) < 0) ··· 350 351 static int stv0299_set_voltage (struct dvb_frontend* fe, fe_sec_voltage_t voltage) 352 { 353 + struct stv0299_state* state = fe->demodulator_priv; 354 u8 reg0x08; 355 u8 reg0x0c; 356 ··· 442 443 static int stv0299_init (struct dvb_frontend* fe) 444 { 445 + struct stv0299_state* state = fe->demodulator_priv; 446 int i; 447 448 dprintk("stv0299: init chip\n"); ··· 461 462 static int stv0299_read_status(struct dvb_frontend* fe, fe_status_t* status) 463 { 464 + struct stv0299_state* state = fe->demodulator_priv; 465 466 u8 signal = 0xff - stv0299_readreg (state, 0x18); 467 u8 sync = stv0299_readreg (state, 0x1b); ··· 489 490 static int stv0299_read_ber(struct dvb_frontend* fe, u32* ber) 491 { 492 + struct stv0299_state* state = fe->demodulator_priv; 493 494 if (state->errmode != STATUS_BER) return 0; 495 *ber = (stv0299_readreg (state, 0x1d) << 8) | stv0299_readreg (state, 0x1e); ··· 499 500 static int stv0299_read_signal_strength(struct dvb_frontend* fe, u16* strength) 501 { 502 + struct stv0299_state* state = fe->demodulator_priv; 503 504 s32 signal = 0xffff - ((stv0299_readreg (state, 0x18) << 8) 505 | stv0299_readreg (state, 0x19)); ··· 516 517 static int stv0299_read_snr(struct dvb_frontend* fe, u16* snr) 518 { 519 + struct stv0299_state* state = fe->demodulator_priv; 520 521 s32 xsnr = 0xffff - ((stv0299_readreg (state, 0x24) << 8) 522 | stv0299_readreg (state, 0x25)); ··· 528 529 static int stv0299_read_ucblocks(struct dvb_frontend* fe, u32* ucblocks) 530 { 531 + struct stv0299_state* state = fe->demodulator_priv; 532 533 if (state->errmode != STATUS_UCBLOCKS) *ucblocks = 0; 534 else *ucblocks = (stv0299_readreg (state, 0x1d) << 8) | stv0299_readreg (state, 0x1e); ··· 538 539 static int stv0299_set_frontend(struct dvb_frontend* fe, struct dvb_frontend_parameters * p) 540 { 541 + struct stv0299_state* state = fe->demodulator_priv; 542 int invval = 0; 543 544 dprintk ("%s : FE_SET_FRONTEND\n", __FUNCTION__); ··· 571 572 static int stv0299_get_frontend(struct dvb_frontend* fe, struct dvb_frontend_parameters * p) 573 { 574 + struct stv0299_state* state = fe->demodulator_priv; 575 s32 derot_freq; 576 int invval; 577 ··· 596 597 static int stv0299_sleep(struct dvb_frontend* fe) 598 { 599 + struct stv0299_state* state = fe->demodulator_priv; 600 601 stv0299_writeregI(state, 0x02, 0x80); 602 state->initialised = 0; ··· 606 607 static int stv0299_get_tune_settings(struct dvb_frontend* fe, struct dvb_frontend_tune_settings* fesettings) 608 { 609 + struct stv0299_state* state = fe->demodulator_priv; 610 611 fesettings->min_delay_ms = state->config->min_delay_ms; 612 if (fesettings->parameters.u.qpsk.symbol_rate < 10000000) { ··· 658 659 /* create dvb_frontend */ 660 state->frontend.ops = &state->ops; 661 + state->frontend.demodulator_priv = state; 662 return &state->frontend; 663 664 error: ··· 714 715 MODULE_DESCRIPTION("ST STV0299 DVB Demodulator driver"); 716 MODULE_AUTHOR("Ralph Metzler, Holger Waechtler, Peter Schildmann, Felix Domke, " 717 + "Andreas Oberritter, Andrew de Quincey, Kenneth Aafl�y"); 718 MODULE_LICENSE("GPL"); 719 720 EXPORT_SYMBOL(stv0299_writereg);
+5 -5
drivers/media/dvb/frontends/tda10021.c
··· 1 /* 2 TDA10021 - Single Chip Cable Channel Receiver driver module 3 - used on the the Siemens DVB-C cards 4 5 Copyright (C) 1999 Convergence Integrated Media GmbH <ralph@convergence.de> 6 Copyright (C) 2004 Markus Schulz <msc@antzsystem.de> 7 - Support for TDA10021 8 9 This program is free software; you can redistribute it and/or modify 10 it under the terms of the GNU General Public License as published by ··· 76 77 static int tda10021_writereg (struct tda10021_state* state, u8 reg, u8 data) 78 { 79 - u8 buf[] = { reg, data }; 80 struct i2c_msg msg = { .addr = state->config->demod_address, .flags = 0, .buf = buf, .len = 2 }; 81 - int ret; 82 83 ret = i2c_transfer (state->i2c, &msg, 1); 84 if (ret != 1) ··· 95 u8 b0 [] = { reg }; 96 u8 b1 [] = { 0 }; 97 struct i2c_msg msg [] = { { .addr = state->config->demod_address, .flags = 0, .buf = b0, .len = 1 }, 98 - { .addr = state->config->demod_address, .flags = I2C_M_RD, .buf = b1, .len = 1 } }; 99 int ret; 100 101 ret = i2c_transfer (state->i2c, msg, 2);
··· 1 /* 2 TDA10021 - Single Chip Cable Channel Receiver driver module 3 + used on the the Siemens DVB-C cards 4 5 Copyright (C) 1999 Convergence Integrated Media GmbH <ralph@convergence.de> 6 Copyright (C) 2004 Markus Schulz <msc@antzsystem.de> 7 + Support for TDA10021 8 9 This program is free software; you can redistribute it and/or modify 10 it under the terms of the GNU General Public License as published by ··· 76 77 static int tda10021_writereg (struct tda10021_state* state, u8 reg, u8 data) 78 { 79 + u8 buf[] = { reg, data }; 80 struct i2c_msg msg = { .addr = state->config->demod_address, .flags = 0, .buf = buf, .len = 2 }; 81 + int ret; 82 83 ret = i2c_transfer (state->i2c, &msg, 1); 84 if (ret != 1) ··· 95 u8 b0 [] = { reg }; 96 u8 b1 [] = { 0 }; 97 struct i2c_msg msg [] = { { .addr = state->config->demod_address, .flags = 0, .buf = b0, .len = 1 }, 98 + { .addr = state->config->demod_address, .flags = I2C_M_RD, .buf = b1, .len = 1 } }; 99 int ret; 100 101 ret = i2c_transfer (state->i2c, msg, 2);
+2 -2
drivers/media/dvb/frontends/tda10021.h
··· 1 /* 2 TDA10021 - Single Chip Cable Channel Receiver driver module 3 - used on the the Siemens DVB-C cards 4 5 Copyright (C) 1999 Convergence Integrated Media GmbH <ralph@convergence.de> 6 Copyright (C) 2004 Markus Schulz <msc@antzsystem.de> 7 - Support for TDA10021 8 9 This program is free software; you can redistribute it and/or modify 10 it under the terms of the GNU General Public License as published by
··· 1 /* 2 TDA10021 - Single Chip Cable Channel Receiver driver module 3 + used on the the Siemens DVB-C cards 4 5 Copyright (C) 1999 Convergence Integrated Media GmbH <ralph@convergence.de> 6 Copyright (C) 2004 Markus Schulz <msc@antzsystem.de> 7 + Support for TDA10021 8 9 This program is free software; you can redistribute it and/or modify 10 it under the terms of the GNU General Public License as published by
+1 -1
drivers/media/dvb/frontends/tda1004x.c
··· 475 ret = state->config->request_firmware(fe, &fw, TDA10046_DEFAULT_FIRMWARE); 476 if (ret) { 477 printk(KERN_ERR "tda1004x: no firmware upload (timeout or file not found?)\n"); 478 - return ret; 479 } 480 tda1004x_write_mask(state, TDA1004X_CONFC4, 8, 8); // going to boot from HOST 481 ret = tda1004x_do_upload(state, fw->data, fw->size, TDA10046H_CODE_CPT, TDA10046H_CODE_IN);
··· 475 ret = state->config->request_firmware(fe, &fw, TDA10046_DEFAULT_FIRMWARE); 476 if (ret) { 477 printk(KERN_ERR "tda1004x: no firmware upload (timeout or file not found?)\n"); 478 + return ret; 479 } 480 tda1004x_write_mask(state, TDA1004X_CONFC4, 8, 8); // going to boot from HOST 481 ret = tda1004x_do_upload(state, fw->data, fw->size, TDA10046H_CODE_CPT, TDA10046H_CODE_IN);
+10 -10
drivers/media/dvb/frontends/tda8083.c
··· 66 u8 buf [] = { reg, data }; 67 struct i2c_msg msg = { .addr = state->config->demod_address, .flags = 0, .buf = buf, .len = 2 }; 68 69 - ret = i2c_transfer(state->i2c, &msg, 1); 70 71 - if (ret != 1) 72 - dprintk ("%s: writereg error (reg %02x, ret == %i)\n", 73 __FUNCTION__, reg, ret); 74 75 - return (ret != 1) ? -1 : 0; 76 } 77 78 static int tda8083_readregs (struct tda8083_state* state, u8 reg1, u8 *b, u8 len) ··· 87 dprintk ("%s: readreg error (reg %02x, ret == %i)\n", 88 __FUNCTION__, reg1, ret); 89 90 - return ret == 2 ? 0 : -1; 91 } 92 93 static inline u8 tda8083_readreg (struct tda8083_state* state, u8 reg) ··· 132 133 static int tda8083_set_symbolrate (struct tda8083_state* state, u32 srate) 134 { 135 - u32 ratio; 136 u32 tmp; 137 u8 filter; 138 139 if (srate > 32000000) 140 - srate = 32000000; 141 - if (srate < 500000) 142 - srate = 500000; 143 144 filter = 0; 145 if (srate < 24000000) ··· 174 unsigned long start = jiffies; 175 176 while (jiffies - start < timeout && 177 - !(tda8083_readreg(state, 0x02) & 0x80)) 178 { 179 msleep(50); 180 };
··· 66 u8 buf [] = { reg, data }; 67 struct i2c_msg msg = { .addr = state->config->demod_address, .flags = 0, .buf = buf, .len = 2 }; 68 69 + ret = i2c_transfer(state->i2c, &msg, 1); 70 71 + if (ret != 1) 72 + dprintk ("%s: writereg error (reg %02x, ret == %i)\n", 73 __FUNCTION__, reg, ret); 74 75 + return (ret != 1) ? -1 : 0; 76 } 77 78 static int tda8083_readregs (struct tda8083_state* state, u8 reg1, u8 *b, u8 len) ··· 87 dprintk ("%s: readreg error (reg %02x, ret == %i)\n", 88 __FUNCTION__, reg1, ret); 89 90 + return ret == 2 ? 0 : -1; 91 } 92 93 static inline u8 tda8083_readreg (struct tda8083_state* state, u8 reg) ··· 132 133 static int tda8083_set_symbolrate (struct tda8083_state* state, u32 srate) 134 { 135 + u32 ratio; 136 u32 tmp; 137 u8 filter; 138 139 if (srate > 32000000) 140 + srate = 32000000; 141 + if (srate < 500000) 142 + srate = 500000; 143 144 filter = 0; 145 if (srate < 24000000) ··· 174 unsigned long start = jiffies; 175 176 while (jiffies - start < timeout && 177 + !(tda8083_readreg(state, 0x02) & 0x80)) 178 { 179 msleep(50); 180 };
+13 -13
drivers/media/dvb/ttpci/av7110.c
··· 217 218 dprintk(4, "%p\n",av7110); 219 220 - lock_kernel(); 221 - daemonize("arm_mon"); 222 - sigfillset(&current->blocked); 223 - unlock_kernel(); 224 225 av7110->arm_thread = current; 226 ··· 1535 buf[2] = ((div & 0x18000) >> 10) | 0x95; 1536 buf[3] = (pwr << 6) | 0x30; 1537 1538 - // NOTE: since we're using a prescaler of 2, we set the 1539 // divisor frequency to 62.5kHz and divide by 125 above 1540 1541 if (i2c_transfer (&av7110->i2c_adap, &msg, 1) != 1) ··· 1811 static int philips_cd1516_pll_set(struct dvb_frontend* fe, 1812 struct dvb_frontend_parameters* params) 1813 { 1814 - struct av7110* av7110 = fe->dvb->priv; 1815 u32 div; 1816 u32 f = params->frequency; 1817 u8 data[4]; ··· 2202 struct i2c_msg msg[] = { { .addr = 0x50,.flags = 0,.buf = &b,.len = 1 }, 2203 { .addr = 0x50,.flags = I2C_M_RD,.buf = &pwm,.len = 1} }; 2204 2205 - if ((i2c_transfer(&av7110->i2c_adap, msg, 2) != 2) || (pwm == 0xff)) 2206 pwm = 0x48; 2207 2208 return pwm; ··· 2245 } 2246 2247 // Try the grundig 29504-451 2248 - av7110->fe = tda8083_attach(&grundig_29504_451_config, &av7110->i2c_adap); 2249 if (av7110->fe) { 2250 av7110->fe->ops->diseqc_send_master_cmd = av7110_diseqc_send_master_cmd; 2251 av7110->fe->ops->diseqc_send_burst = av7110_diseqc_send_burst; ··· 2271 case 0x0001: // Hauppauge/TT Nexus-T premium rev1.X 2272 2273 // ALPS TDLB7 2274 - av7110->fe = sp8870_attach(&alps_tdlb7_config, &av7110->i2c_adap); 2275 break; 2276 2277 case 0x0002: // Hauppauge/TT DVB-C premium rev2.X 2278 2279 - av7110->fe = ves1820_attach(&alps_tdbe2_config, &av7110->i2c_adap, read_pwm(av7110)); 2280 break; 2281 2282 case 0x0006: /* Fujitsu-Siemens DVB-S rev 1.6 */ ··· 2421 2422 dprintk(4, "dev: %p\n", dev); 2423 2424 - /* Set RPS_IRQ to 1 to track rps1 activity. 2425 - * Enabling this won't send any interrupt to PC CPU. 2426 - */ 2427 #define RPS_IRQ 0 2428 2429 if (budgetpatch == 1) {
··· 217 218 dprintk(4, "%p\n",av7110); 219 220 + lock_kernel(); 221 + daemonize("arm_mon"); 222 + sigfillset(&current->blocked); 223 + unlock_kernel(); 224 225 av7110->arm_thread = current; 226 ··· 1535 buf[2] = ((div & 0x18000) >> 10) | 0x95; 1536 buf[3] = (pwr << 6) | 0x30; 1537 1538 + // NOTE: since we're using a prescaler of 2, we set the 1539 // divisor frequency to 62.5kHz and divide by 125 above 1540 1541 if (i2c_transfer (&av7110->i2c_adap, &msg, 1) != 1) ··· 1811 static int philips_cd1516_pll_set(struct dvb_frontend* fe, 1812 struct dvb_frontend_parameters* params) 1813 { 1814 + struct av7110* av7110 = fe->dvb->priv; 1815 u32 div; 1816 u32 f = params->frequency; 1817 u8 data[4]; ··· 2202 struct i2c_msg msg[] = { { .addr = 0x50,.flags = 0,.buf = &b,.len = 1 }, 2203 { .addr = 0x50,.flags = I2C_M_RD,.buf = &pwm,.len = 1} }; 2204 2205 + if ((i2c_transfer(&av7110->i2c_adap, msg, 2) != 2) || (pwm == 0xff)) 2206 pwm = 0x48; 2207 2208 return pwm; ··· 2245 } 2246 2247 // Try the grundig 29504-451 2248 + av7110->fe = tda8083_attach(&grundig_29504_451_config, &av7110->i2c_adap); 2249 if (av7110->fe) { 2250 av7110->fe->ops->diseqc_send_master_cmd = av7110_diseqc_send_master_cmd; 2251 av7110->fe->ops->diseqc_send_burst = av7110_diseqc_send_burst; ··· 2271 case 0x0001: // Hauppauge/TT Nexus-T premium rev1.X 2272 2273 // ALPS TDLB7 2274 + av7110->fe = sp8870_attach(&alps_tdlb7_config, &av7110->i2c_adap); 2275 break; 2276 2277 case 0x0002: // Hauppauge/TT DVB-C premium rev2.X 2278 2279 + av7110->fe = ves1820_attach(&alps_tdbe2_config, &av7110->i2c_adap, read_pwm(av7110)); 2280 break; 2281 2282 case 0x0006: /* Fujitsu-Siemens DVB-S rev 1.6 */ ··· 2421 2422 dprintk(4, "dev: %p\n", dev); 2423 2424 + /* Set RPS_IRQ to 1 to track rps1 activity. 2425 + * Enabling this won't send any interrupt to PC CPU. 2426 + */ 2427 #define RPS_IRQ 0 2428 2429 if (budgetpatch == 1) {
+10 -10
drivers/media/dvb/ttpci/av7110_hw.c
··· 1203 1204 int av7110_osd_capability(struct av7110 *av7110, osd_cap_t *cap) 1205 { 1206 - switch (cap->cmd) { 1207 - case OSD_CAP_MEMSIZE: 1208 - if (FW_4M_SDRAM(av7110->arm_app)) 1209 - cap->val = 1000000; 1210 - else 1211 - cap->val = 92000; 1212 - return 0; 1213 - default: 1214 - return -EINVAL; 1215 - } 1216 } 1217 #endif /* CONFIG_DVB_AV7110_OSD */
··· 1203 1204 int av7110_osd_capability(struct av7110 *av7110, osd_cap_t *cap) 1205 { 1206 + switch (cap->cmd) { 1207 + case OSD_CAP_MEMSIZE: 1208 + if (FW_4M_SDRAM(av7110->arm_app)) 1209 + cap->val = 1000000; 1210 + else 1211 + cap->val = 92000; 1212 + return 0; 1213 + default: 1214 + return -EINVAL; 1215 + } 1216 } 1217 #endif /* CONFIG_DVB_AV7110_OSD */
+2 -2
drivers/media/dvb/ttpci/av7110_v4l.c
··· 120 121 static int stv0297_writereg(struct saa7146_dev *dev, u8 addr, u8 reg, u8 data) 122 { 123 - u8 buf [] = { reg, data }; 124 - struct i2c_msg msg = { .addr = addr, .flags = 0, .buf = buf, .len = 2 }; 125 126 if (1 != saa7146_i2c_transfer(dev, &msg, 1, 1)) 127 return -1;
··· 120 121 static int stv0297_writereg(struct saa7146_dev *dev, u8 addr, u8 reg, u8 data) 122 { 123 + u8 buf [] = { reg, data }; 124 + struct i2c_msg msg = { .addr = addr, .flags = 0, .buf = buf, .len = 2 }; 125 126 if (1 != saa7146_i2c_transfer(dev, &msg, 1, 1)) 127 return -1;
+1 -1
drivers/media/dvb/ttpci/budget-core.c
··· 87 * Pitch: 188, NumBytes3: 188, NumLines3: 1024 88 */ 89 90 - switch(budget->card->type) { 91 case BUDGET_FS_ACTIVY: 92 saa7146_write(dev, DD1_INIT, 0x04000000); 93 saa7146_write(dev, MC2, (MASK_09 | MASK_25));
··· 87 * Pitch: 188, NumBytes3: 188, NumLines3: 1024 88 */ 89 90 + switch(budget->card->type) { 91 case BUDGET_FS_ACTIVY: 92 saa7146_write(dev, DD1_INIT, 0x04000000); 93 saa7146_write(dev, MC2, (MASK_09 | MASK_25));
+162 -162
drivers/media/dvb/ttpci/budget-patch.c
··· 45 //MAKE_BUDGET_INFO(satel,"TT-Budget/Patch SATELCO PCI", BUDGET_TT_HW_DISEQC); 46 47 static struct pci_device_id pci_tbl[] = { 48 - MAKE_EXTENSION_PCI(ttbp,0x13c2, 0x0000), 49 // MAKE_EXTENSION_PCI(satel, 0x13c2, 0x1013), 50 - { 51 - .vendor = 0, 52 - } 53 }; 54 55 /* those lines are for budget-patch to be tried ··· 165 166 static int budget_av7110_send_fw_cmd(struct budget_patch *budget, u16* buf, int length) 167 { 168 - int i; 169 170 - dprintk(2, "budget: %p\n", budget); 171 172 - for (i = 2; i < length; i++) 173 - { 174 - ttpci_budget_debiwrite(budget, DEBINOSWAP, COMMAND + 2*i, 2, (u32) buf[i], 0,0); 175 - msleep(5); 176 - } 177 - if (length) 178 - ttpci_budget_debiwrite(budget, DEBINOSWAP, COMMAND + 2, 2, (u32) buf[1], 0,0); 179 - else 180 - ttpci_budget_debiwrite(budget, DEBINOSWAP, COMMAND + 2, 2, 0, 0,0); 181 - msleep(5); 182 - ttpci_budget_debiwrite(budget, DEBINOSWAP, COMMAND, 2, (u32) buf[0], 0,0); 183 - msleep(5); 184 - return 0; 185 } 186 187 static void av7110_set22k(struct budget_patch *budget, int state) 188 { 189 - u16 buf[2] = {( COMTYPE_AUDIODAC << 8) | (state ? ON22K : OFF22K), 0}; 190 191 - dprintk(2, "budget: %p\n", budget); 192 - budget_av7110_send_fw_cmd(budget, buf, 2); 193 } 194 195 static int av7110_send_diseqc_msg(struct budget_patch *budget, int len, u8 *msg, int burst) 196 { 197 - int i; 198 - u16 buf[18] = { ((COMTYPE_AUDIODAC << 8) | SendDiSEqC), 199 - 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; 200 201 - dprintk(2, "budget: %p\n", budget); 202 203 - if (len>10) 204 - len=10; 205 206 - buf[1] = len+2; 207 - buf[2] = len; 208 209 - if (burst != -1) 210 - buf[3]=burst ? 0x01 : 0x00; 211 - else 212 - buf[3]=0xffff; 213 214 - for (i=0; i<len; i++) 215 - buf[i+4]=msg[i]; 216 217 - budget_av7110_send_fw_cmd(budget, buf, 18); 218 - return 0; 219 } 220 221 static int budget_patch_set_tone(struct dvb_frontend* fe, fe_sec_tone_mode_t tone) ··· 276 buf[2] = ((div & 0x18000) >> 10) | 0x95; 277 buf[3] = (pwr << 6) | 0x30; 278 279 - // NOTE: since we're using a prescaler of 2, we set the 280 // divisor frequency to 62.5kHz and divide by 125 above 281 282 if (i2c_transfer (&budget->i2c_adap, &msg, 1) != 1) return -EIO; ··· 294 0x01, 0x15, 295 0x02, 0x00, 296 0x03, 0x00, 297 - 0x04, 0x7d, /* F22FR = 0x7d, F22 = f_VCO / 128 / 0x7d = 22 kHz */ 298 0x05, 0x35, /* I2CT = 0, SCLT = 1, SDAT = 1 */ 299 0x06, 0x40, /* DAC not used, set to high impendance mode */ 300 0x07, 0x00, /* DAC LSB */ ··· 413 { 414 switch(budget->dev->pci->subsystem_device) { 415 case 0x0000: // Hauppauge/TT WinTV DVB-S rev1.X 416 - case 0x1013: // SATELCO Multimedia PCI 417 418 // try the ALPS BSRV2 first of all 419 budget->dvb_frontend = ves1x93_attach(&alps_bsrv2_config, &budget->i2c_adap); ··· 463 /* written by Emard */ 464 static int budget_patch_attach (struct saa7146_dev* dev, struct saa7146_pci_extension_data *info) 465 { 466 - struct budget_patch *budget; 467 - int err; 468 int count = 0; 469 int detected = 0; 470 ··· 472 #define RPS_IRQ 0 473 #define HPS_SETUP 0 474 #if PATCH_RESET 475 - saa7146_write(dev, MC1, MASK_31); 476 - msleep(40); 477 #endif 478 #if HPS_SETUP 479 - // initialize registers. Better to have it like this 480 - // than leaving something unconfigured 481 saa7146_write(dev, DD1_STREAM_B, 0); 482 // port B VSYNC at rising edge 483 saa7146_write(dev, DD1_INIT, 0x00000200); // have this in budget-core too! ··· 486 // debi config 487 // saa7146_write(dev, DEBI_CONFIG, MASK_30|MASK_28|MASK_18); 488 489 - // zero all HPS registers 490 - saa7146_write(dev, HPS_H_PRESCALE, 0); // r68 491 - saa7146_write(dev, HPS_H_SCALE, 0); // r6c 492 - saa7146_write(dev, BCS_CTRL, 0); // r70 493 - saa7146_write(dev, HPS_V_SCALE, 0); // r60 494 - saa7146_write(dev, HPS_V_GAIN, 0); // r64 495 - saa7146_write(dev, CHROMA_KEY_RANGE, 0); // r74 496 - saa7146_write(dev, CLIP_FORMAT_CTRL, 0); // r78 497 - // Set HPS prescaler for port B input 498 - saa7146_write(dev, HPS_CTRL, (1<<30) | (0<<29) | (1<<28) | (0<<12) ); 499 - saa7146_write(dev, MC2, 500 - 0 * (MASK_08 | MASK_24) | // BRS control 501 - 0 * (MASK_09 | MASK_25) | // a 502 - 0 * (MASK_10 | MASK_26) | // b 503 - 1 * (MASK_06 | MASK_22) | // HPS_CTRL1 504 - 1 * (MASK_05 | MASK_21) | // HPS_CTRL2 505 - 0 * (MASK_01 | MASK_15) // DEBI 506 - ); 507 #endif 508 // Disable RPS1 and RPS0 509 - saa7146_write(dev, MC1, ( MASK_29 | MASK_28)); 510 - // RPS1 timeout disable 511 - saa7146_write(dev, RPS_TOV1, 0); 512 513 // code for autodetection 514 // will wait for VBI_B event (vertical blank at port B) ··· 521 WRITE_RPS1(cpu_to_le32(CMD_UPLOAD | 522 MASK_10 | MASK_09 | MASK_08 | MASK_06 | MASK_05 | MASK_04 | MASK_03 | MASK_02 )); 523 #endif 524 - WRITE_RPS1(cpu_to_le32(CMD_PAUSE | EVT_VBI_B)); 525 - WRITE_RPS1(cpu_to_le32(CMD_WR_REG_MASK | (GPIO_CTRL>>2))); 526 - WRITE_RPS1(cpu_to_le32(GPIO3_MSK)); 527 - WRITE_RPS1(cpu_to_le32(SAA7146_GPIO_OUTLO<<24)); 528 #if RPS_IRQ 529 - // issue RPS1 interrupt to increment counter 530 - WRITE_RPS1(cpu_to_le32(CMD_INTERRUPT)); 531 - // at least a NOP is neede between two interrupts 532 - WRITE_RPS1(cpu_to_le32(CMD_NOP)); 533 - // interrupt again 534 - WRITE_RPS1(cpu_to_le32(CMD_INTERRUPT)); 535 #endif 536 - WRITE_RPS1(cpu_to_le32(CMD_STOP)); 537 538 #if RPS_IRQ 539 - // set event counter 1 source as RPS1 interrupt (0x03) (rE4 p53) 540 - // use 0x03 to track RPS1 interrupts - increase by 1 every gpio3 is toggled 541 - // use 0x15 to track VPE interrupts - increase by 1 every vpeirq() is called 542 - saa7146_write(dev, EC1SSR, (0x03<<2) | 3 ); 543 - // set event counter 1 treshold to maximum allowed value (rEC p55) 544 - saa7146_write(dev, ECT1R, 0x3fff ); 545 #endif 546 - // Fix VSYNC level 547 - saa7146_setgpio(dev, 3, SAA7146_GPIO_OUTLO); 548 - // Set RPS1 Address register to point to RPS code (r108 p42) 549 - saa7146_write(dev, RPS_ADDR1, dev->d_rps1.dma_handle); 550 - // Enable RPS1, (rFC p33) 551 - saa7146_write(dev, MC1, (MASK_13 | MASK_29 )); 552 553 554 - mdelay(50); 555 - saa7146_setgpio(dev, 3, SAA7146_GPIO_OUTHI); 556 mdelay(150); 557 558 ··· 560 detected = 1; 561 562 #if RPS_IRQ 563 - printk("Event Counter 1 0x%04x\n", saa7146_read(dev, EC1R) & 0x3fff ); 564 #endif 565 // Disable RPS1 566 - saa7146_write(dev, MC1, ( MASK_29 )); 567 568 if(detected == 0) 569 - printk("budget-patch not detected or saa7146 in non-default state.\n" 570 - "try enabling ressetting of 7146 with MASK_31 in MC1 register\n"); 571 572 else 573 - printk("BUDGET-PATCH DETECTED.\n"); 574 575 576 /* OLD (Original design by Roberto Deza): ··· 641 */ 642 643 // Setup RPS1 "program" (p35) 644 - count = 0; 645 646 647 - // Wait Source Line Counter Threshold (p36) 648 - WRITE_RPS1(cpu_to_le32(CMD_PAUSE | EVT_HS)); 649 - // Set GPIO3=1 (p42) 650 - WRITE_RPS1(cpu_to_le32(CMD_WR_REG_MASK | (GPIO_CTRL>>2))); 651 - WRITE_RPS1(cpu_to_le32(GPIO3_MSK)); 652 - WRITE_RPS1(cpu_to_le32(SAA7146_GPIO_OUTHI<<24)); 653 #if RPS_IRQ 654 - // issue RPS1 interrupt 655 - WRITE_RPS1(cpu_to_le32(CMD_INTERRUPT)); 656 #endif 657 - // Wait reset Source Line Counter Threshold (p36) 658 - WRITE_RPS1(cpu_to_le32(CMD_PAUSE | RPS_INV | EVT_HS)); 659 - // Set GPIO3=0 (p42) 660 - WRITE_RPS1(cpu_to_le32(CMD_WR_REG_MASK | (GPIO_CTRL>>2))); 661 - WRITE_RPS1(cpu_to_le32(GPIO3_MSK)); 662 - WRITE_RPS1(cpu_to_le32(SAA7146_GPIO_OUTLO<<24)); 663 #if RPS_IRQ 664 - // issue RPS1 interrupt 665 - WRITE_RPS1(cpu_to_le32(CMD_INTERRUPT)); 666 #endif 667 - // Jump to begin of RPS program (p37) 668 - WRITE_RPS1(cpu_to_le32(CMD_JUMP)); 669 - WRITE_RPS1(cpu_to_le32(dev->d_rps1.dma_handle)); 670 671 - // Fix VSYNC level 672 - saa7146_setgpio(dev, 3, SAA7146_GPIO_OUTLO); 673 - // Set RPS1 Address register to point to RPS code (r108 p42) 674 - saa7146_write(dev, RPS_ADDR1, dev->d_rps1.dma_handle); 675 - // Set Source Line Counter Threshold, using BRS (rCC p43) 676 - // It generates HS event every TS_HEIGHT lines 677 - // this is related to TS_WIDTH set in register 678 - // NUM_LINE_BYTE3 in budget-core.c. If NUM_LINE_BYTE 679 - // low 16 bits are set to TS_WIDTH bytes (TS_WIDTH=2*188 680 - //,then RPS_THRESH1 681 - // should be set to trigger every TS_HEIGHT (512) lines. 682 - // 683 - saa7146_write(dev, RPS_THRESH1, (TS_HEIGHT*1) | MASK_12 ); 684 685 - // saa7146_write(dev, RPS_THRESH0, ((TS_HEIGHT/2)<<16) |MASK_28| (TS_HEIGHT/2) |MASK_12 ); 686 - // Enable RPS1 (rFC p33) 687 - saa7146_write(dev, MC1, (MASK_13 | MASK_29)); 688 - 689 - 690 - if (!(budget = kmalloc (sizeof(struct budget_patch), GFP_KERNEL))) 691 - return -ENOMEM; 692 - 693 - dprintk(2, "budget: %p\n", budget); 694 - 695 - if ((err = ttpci_budget_init (budget, dev, info, THIS_MODULE))) { 696 - kfree (budget); 697 - return err; 698 - } 699 700 701 - dev->ext_priv = budget; 702 703 budget->dvb_adapter.priv = budget; 704 frontend_init(budget); 705 706 - return 0; 707 } 708 709 static int budget_patch_detach (struct saa7146_dev* dev) 710 { 711 - struct budget_patch *budget = (struct budget_patch*) dev->ext_priv; 712 - int err; 713 714 if (budget->dvb_frontend) dvb_unregister_frontend(budget->dvb_frontend); 715 716 - err = ttpci_budget_deinit (budget); 717 718 - kfree (budget); 719 720 - return err; 721 } 722 723 static int __init budget_patch_init(void) ··· 727 728 static void __exit budget_patch_exit(void) 729 { 730 - saa7146_unregister_extension(&budget_extension); 731 } 732 733 static struct saa7146_extension budget_extension = { 734 - .name = "budget_patch dvb\0", 735 - .flags = 0, 736 737 - .module = THIS_MODULE, 738 - .pci_tbl = pci_tbl, 739 - .attach = budget_patch_attach, 740 - .detach = budget_patch_detach, 741 742 - .irq_mask = MASK_10, 743 - .irq_func = ttpci_budget_irq10_handler, 744 }; 745 746 module_init(budget_patch_init); ··· 749 MODULE_LICENSE("GPL"); 750 MODULE_AUTHOR("Emard, Roberto Deza, Holger Waechtler, Michael Hunold, others"); 751 MODULE_DESCRIPTION("Driver for full TS modified DVB-S SAA7146+AV7110 " 752 - "based so-called Budget Patch cards");
··· 45 //MAKE_BUDGET_INFO(satel,"TT-Budget/Patch SATELCO PCI", BUDGET_TT_HW_DISEQC); 46 47 static struct pci_device_id pci_tbl[] = { 48 + MAKE_EXTENSION_PCI(ttbp,0x13c2, 0x0000), 49 // MAKE_EXTENSION_PCI(satel, 0x13c2, 0x1013), 50 + { 51 + .vendor = 0, 52 + } 53 }; 54 55 /* those lines are for budget-patch to be tried ··· 165 166 static int budget_av7110_send_fw_cmd(struct budget_patch *budget, u16* buf, int length) 167 { 168 + int i; 169 170 + dprintk(2, "budget: %p\n", budget); 171 172 + for (i = 2; i < length; i++) 173 + { 174 + ttpci_budget_debiwrite(budget, DEBINOSWAP, COMMAND + 2*i, 2, (u32) buf[i], 0,0); 175 + msleep(5); 176 + } 177 + if (length) 178 + ttpci_budget_debiwrite(budget, DEBINOSWAP, COMMAND + 2, 2, (u32) buf[1], 0,0); 179 + else 180 + ttpci_budget_debiwrite(budget, DEBINOSWAP, COMMAND + 2, 2, 0, 0,0); 181 + msleep(5); 182 + ttpci_budget_debiwrite(budget, DEBINOSWAP, COMMAND, 2, (u32) buf[0], 0,0); 183 + msleep(5); 184 + return 0; 185 } 186 187 static void av7110_set22k(struct budget_patch *budget, int state) 188 { 189 + u16 buf[2] = {( COMTYPE_AUDIODAC << 8) | (state ? ON22K : OFF22K), 0}; 190 191 + dprintk(2, "budget: %p\n", budget); 192 + budget_av7110_send_fw_cmd(budget, buf, 2); 193 } 194 195 static int av7110_send_diseqc_msg(struct budget_patch *budget, int len, u8 *msg, int burst) 196 { 197 + int i; 198 + u16 buf[18] = { ((COMTYPE_AUDIODAC << 8) | SendDiSEqC), 199 + 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; 200 201 + dprintk(2, "budget: %p\n", budget); 202 203 + if (len>10) 204 + len=10; 205 206 + buf[1] = len+2; 207 + buf[2] = len; 208 209 + if (burst != -1) 210 + buf[3]=burst ? 0x01 : 0x00; 211 + else 212 + buf[3]=0xffff; 213 214 + for (i=0; i<len; i++) 215 + buf[i+4]=msg[i]; 216 217 + budget_av7110_send_fw_cmd(budget, buf, 18); 218 + return 0; 219 } 220 221 static int budget_patch_set_tone(struct dvb_frontend* fe, fe_sec_tone_mode_t tone) ··· 276 buf[2] = ((div & 0x18000) >> 10) | 0x95; 277 buf[3] = (pwr << 6) | 0x30; 278 279 + // NOTE: since we're using a prescaler of 2, we set the 280 // divisor frequency to 62.5kHz and divide by 125 above 281 282 if (i2c_transfer (&budget->i2c_adap, &msg, 1) != 1) return -EIO; ··· 294 0x01, 0x15, 295 0x02, 0x00, 296 0x03, 0x00, 297 + 0x04, 0x7d, /* F22FR = 0x7d, F22 = f_VCO / 128 / 0x7d = 22 kHz */ 298 0x05, 0x35, /* I2CT = 0, SCLT = 1, SDAT = 1 */ 299 0x06, 0x40, /* DAC not used, set to high impendance mode */ 300 0x07, 0x00, /* DAC LSB */ ··· 413 { 414 switch(budget->dev->pci->subsystem_device) { 415 case 0x0000: // Hauppauge/TT WinTV DVB-S rev1.X 416 + case 0x1013: // SATELCO Multimedia PCI 417 418 // try the ALPS BSRV2 first of all 419 budget->dvb_frontend = ves1x93_attach(&alps_bsrv2_config, &budget->i2c_adap); ··· 463 /* written by Emard */ 464 static int budget_patch_attach (struct saa7146_dev* dev, struct saa7146_pci_extension_data *info) 465 { 466 + struct budget_patch *budget; 467 + int err; 468 int count = 0; 469 int detected = 0; 470 ··· 472 #define RPS_IRQ 0 473 #define HPS_SETUP 0 474 #if PATCH_RESET 475 + saa7146_write(dev, MC1, MASK_31); 476 + msleep(40); 477 #endif 478 #if HPS_SETUP 479 + // initialize registers. Better to have it like this 480 + // than leaving something unconfigured 481 saa7146_write(dev, DD1_STREAM_B, 0); 482 // port B VSYNC at rising edge 483 saa7146_write(dev, DD1_INIT, 0x00000200); // have this in budget-core too! ··· 486 // debi config 487 // saa7146_write(dev, DEBI_CONFIG, MASK_30|MASK_28|MASK_18); 488 489 + // zero all HPS registers 490 + saa7146_write(dev, HPS_H_PRESCALE, 0); // r68 491 + saa7146_write(dev, HPS_H_SCALE, 0); // r6c 492 + saa7146_write(dev, BCS_CTRL, 0); // r70 493 + saa7146_write(dev, HPS_V_SCALE, 0); // r60 494 + saa7146_write(dev, HPS_V_GAIN, 0); // r64 495 + saa7146_write(dev, CHROMA_KEY_RANGE, 0); // r74 496 + saa7146_write(dev, CLIP_FORMAT_CTRL, 0); // r78 497 + // Set HPS prescaler for port B input 498 + saa7146_write(dev, HPS_CTRL, (1<<30) | (0<<29) | (1<<28) | (0<<12) ); 499 + saa7146_write(dev, MC2, 500 + 0 * (MASK_08 | MASK_24) | // BRS control 501 + 0 * (MASK_09 | MASK_25) | // a 502 + 0 * (MASK_10 | MASK_26) | // b 503 + 1 * (MASK_06 | MASK_22) | // HPS_CTRL1 504 + 1 * (MASK_05 | MASK_21) | // HPS_CTRL2 505 + 0 * (MASK_01 | MASK_15) // DEBI 506 + ); 507 #endif 508 // Disable RPS1 and RPS0 509 + saa7146_write(dev, MC1, ( MASK_29 | MASK_28)); 510 + // RPS1 timeout disable 511 + saa7146_write(dev, RPS_TOV1, 0); 512 513 // code for autodetection 514 // will wait for VBI_B event (vertical blank at port B) ··· 521 WRITE_RPS1(cpu_to_le32(CMD_UPLOAD | 522 MASK_10 | MASK_09 | MASK_08 | MASK_06 | MASK_05 | MASK_04 | MASK_03 | MASK_02 )); 523 #endif 524 + WRITE_RPS1(cpu_to_le32(CMD_PAUSE | EVT_VBI_B)); 525 + WRITE_RPS1(cpu_to_le32(CMD_WR_REG_MASK | (GPIO_CTRL>>2))); 526 + WRITE_RPS1(cpu_to_le32(GPIO3_MSK)); 527 + WRITE_RPS1(cpu_to_le32(SAA7146_GPIO_OUTLO<<24)); 528 #if RPS_IRQ 529 + // issue RPS1 interrupt to increment counter 530 + WRITE_RPS1(cpu_to_le32(CMD_INTERRUPT)); 531 + // at least a NOP is neede between two interrupts 532 + WRITE_RPS1(cpu_to_le32(CMD_NOP)); 533 + // interrupt again 534 + WRITE_RPS1(cpu_to_le32(CMD_INTERRUPT)); 535 #endif 536 + WRITE_RPS1(cpu_to_le32(CMD_STOP)); 537 538 #if RPS_IRQ 539 + // set event counter 1 source as RPS1 interrupt (0x03) (rE4 p53) 540 + // use 0x03 to track RPS1 interrupts - increase by 1 every gpio3 is toggled 541 + // use 0x15 to track VPE interrupts - increase by 1 every vpeirq() is called 542 + saa7146_write(dev, EC1SSR, (0x03<<2) | 3 ); 543 + // set event counter 1 treshold to maximum allowed value (rEC p55) 544 + saa7146_write(dev, ECT1R, 0x3fff ); 545 #endif 546 + // Fix VSYNC level 547 + saa7146_setgpio(dev, 3, SAA7146_GPIO_OUTLO); 548 + // Set RPS1 Address register to point to RPS code (r108 p42) 549 + saa7146_write(dev, RPS_ADDR1, dev->d_rps1.dma_handle); 550 + // Enable RPS1, (rFC p33) 551 + saa7146_write(dev, MC1, (MASK_13 | MASK_29 )); 552 553 554 + mdelay(50); 555 + saa7146_setgpio(dev, 3, SAA7146_GPIO_OUTHI); 556 mdelay(150); 557 558 ··· 560 detected = 1; 561 562 #if RPS_IRQ 563 + printk("Event Counter 1 0x%04x\n", saa7146_read(dev, EC1R) & 0x3fff ); 564 #endif 565 // Disable RPS1 566 + saa7146_write(dev, MC1, ( MASK_29 )); 567 568 if(detected == 0) 569 + printk("budget-patch not detected or saa7146 in non-default state.\n" 570 + "try enabling ressetting of 7146 with MASK_31 in MC1 register\n"); 571 572 else 573 + printk("BUDGET-PATCH DETECTED.\n"); 574 575 576 /* OLD (Original design by Roberto Deza): ··· 641 */ 642 643 // Setup RPS1 "program" (p35) 644 + count = 0; 645 646 647 + // Wait Source Line Counter Threshold (p36) 648 + WRITE_RPS1(cpu_to_le32(CMD_PAUSE | EVT_HS)); 649 + // Set GPIO3=1 (p42) 650 + WRITE_RPS1(cpu_to_le32(CMD_WR_REG_MASK | (GPIO_CTRL>>2))); 651 + WRITE_RPS1(cpu_to_le32(GPIO3_MSK)); 652 + WRITE_RPS1(cpu_to_le32(SAA7146_GPIO_OUTHI<<24)); 653 #if RPS_IRQ 654 + // issue RPS1 interrupt 655 + WRITE_RPS1(cpu_to_le32(CMD_INTERRUPT)); 656 #endif 657 + // Wait reset Source Line Counter Threshold (p36) 658 + WRITE_RPS1(cpu_to_le32(CMD_PAUSE | RPS_INV | EVT_HS)); 659 + // Set GPIO3=0 (p42) 660 + WRITE_RPS1(cpu_to_le32(CMD_WR_REG_MASK | (GPIO_CTRL>>2))); 661 + WRITE_RPS1(cpu_to_le32(GPIO3_MSK)); 662 + WRITE_RPS1(cpu_to_le32(SAA7146_GPIO_OUTLO<<24)); 663 #if RPS_IRQ 664 + // issue RPS1 interrupt 665 + WRITE_RPS1(cpu_to_le32(CMD_INTERRUPT)); 666 #endif 667 + // Jump to begin of RPS program (p37) 668 + WRITE_RPS1(cpu_to_le32(CMD_JUMP)); 669 + WRITE_RPS1(cpu_to_le32(dev->d_rps1.dma_handle)); 670 671 + // Fix VSYNC level 672 + saa7146_setgpio(dev, 3, SAA7146_GPIO_OUTLO); 673 + // Set RPS1 Address register to point to RPS code (r108 p42) 674 + saa7146_write(dev, RPS_ADDR1, dev->d_rps1.dma_handle); 675 + // Set Source Line Counter Threshold, using BRS (rCC p43) 676 + // It generates HS event every TS_HEIGHT lines 677 + // this is related to TS_WIDTH set in register 678 + // NUM_LINE_BYTE3 in budget-core.c. If NUM_LINE_BYTE 679 + // low 16 bits are set to TS_WIDTH bytes (TS_WIDTH=2*188 680 + //,then RPS_THRESH1 681 + // should be set to trigger every TS_HEIGHT (512) lines. 682 + // 683 + saa7146_write(dev, RPS_THRESH1, (TS_HEIGHT*1) | MASK_12 ); 684 685 + // saa7146_write(dev, RPS_THRESH0, ((TS_HEIGHT/2)<<16) |MASK_28| (TS_HEIGHT/2) |MASK_12 ); 686 + // Enable RPS1 (rFC p33) 687 + saa7146_write(dev, MC1, (MASK_13 | MASK_29)); 688 689 690 + if (!(budget = kmalloc (sizeof(struct budget_patch), GFP_KERNEL))) 691 + return -ENOMEM; 692 + 693 + dprintk(2, "budget: %p\n", budget); 694 + 695 + if ((err = ttpci_budget_init (budget, dev, info, THIS_MODULE))) { 696 + kfree (budget); 697 + return err; 698 + } 699 + 700 + 701 + dev->ext_priv = budget; 702 703 budget->dvb_adapter.priv = budget; 704 frontend_init(budget); 705 706 + return 0; 707 } 708 709 static int budget_patch_detach (struct saa7146_dev* dev) 710 { 711 + struct budget_patch *budget = (struct budget_patch*) dev->ext_priv; 712 + int err; 713 714 if (budget->dvb_frontend) dvb_unregister_frontend(budget->dvb_frontend); 715 716 + err = ttpci_budget_deinit (budget); 717 718 + kfree (budget); 719 720 + return err; 721 } 722 723 static int __init budget_patch_init(void) ··· 727 728 static void __exit budget_patch_exit(void) 729 { 730 + saa7146_unregister_extension(&budget_extension); 731 } 732 733 static struct saa7146_extension budget_extension = { 734 + .name = "budget_patch dvb\0", 735 + .flags = 0, 736 737 + .module = THIS_MODULE, 738 + .pci_tbl = pci_tbl, 739 + .attach = budget_patch_attach, 740 + .detach = budget_patch_detach, 741 742 + .irq_mask = MASK_10, 743 + .irq_func = ttpci_budget_irq10_handler, 744 }; 745 746 module_init(budget_patch_init); ··· 749 MODULE_LICENSE("GPL"); 750 MODULE_AUTHOR("Emard, Roberto Deza, Holger Waechtler, Michael Hunold, others"); 751 MODULE_DESCRIPTION("Driver for full TS modified DVB-S SAA7146+AV7110 " 752 + "based so-called Budget Patch cards");
+3 -3
drivers/media/dvb/ttpci/budget.c
··· 256 buf[2] = ((div & 0x18000) >> 10) | 0x95; 257 buf[3] = (pwr << 6) | 0x30; 258 259 - // NOTE: since we're using a prescaler of 2, we set the 260 // divisor frequency to 62.5kHz and divide by 125 above 261 262 if (i2c_transfer (&budget->i2c_adap, &msg, 1) != 1) return -EIO; ··· 565 struct i2c_msg msg[] = { { .addr = 0x50,.flags = 0,.buf = &b,.len = 1 }, 566 { .addr = 0x50,.flags = I2C_M_RD,.buf = &pwm,.len = 1} }; 567 568 - if ((i2c_transfer(&budget->i2c_adap, msg, 2) != 2) || (pwm == 0xff)) 569 pwm = 0x48; 570 571 return pwm; ··· 593 budget->dvb_frontend = ves1x93_attach(&alps_bsrv2_config, &budget->i2c_adap); 594 if (budget->dvb_frontend) { 595 budget->dvb_frontend->ops->diseqc_send_master_cmd = budget_diseqc_send_master_cmd; 596 - budget->dvb_frontend->ops->diseqc_send_burst = budget_diseqc_send_burst; 597 budget->dvb_frontend->ops->set_tone = budget_set_tone; 598 break; 599 }
··· 256 buf[2] = ((div & 0x18000) >> 10) | 0x95; 257 buf[3] = (pwr << 6) | 0x30; 258 259 + // NOTE: since we're using a prescaler of 2, we set the 260 // divisor frequency to 62.5kHz and divide by 125 above 261 262 if (i2c_transfer (&budget->i2c_adap, &msg, 1) != 1) return -EIO; ··· 565 struct i2c_msg msg[] = { { .addr = 0x50,.flags = 0,.buf = &b,.len = 1 }, 566 { .addr = 0x50,.flags = I2C_M_RD,.buf = &pwm,.len = 1} }; 567 568 + if ((i2c_transfer(&budget->i2c_adap, msg, 2) != 2) || (pwm == 0xff)) 569 pwm = 0x48; 570 571 return pwm; ··· 593 budget->dvb_frontend = ves1x93_attach(&alps_bsrv2_config, &budget->i2c_adap); 594 if (budget->dvb_frontend) { 595 budget->dvb_frontend->ops->diseqc_send_master_cmd = budget_diseqc_send_master_cmd; 596 + budget->dvb_frontend->ops->diseqc_send_burst = budget_diseqc_send_burst; 597 budget->dvb_frontend->ops->set_tone = budget_set_tone; 598 break; 599 }
+1 -1
drivers/media/dvb/ttpci/budget.h
··· 19 #endif 20 21 #define dprintk(level,args...) \ 22 - do { if ((budget_debug & level)) { printk("%s: %s(): ",__stringify(KBUILD_MODNAME), __FUNCTION__); printk(args); } } while (0) 23 24 struct budget_info { 25 char *name;
··· 19 #endif 20 21 #define dprintk(level,args...) \ 22 + do { if ((budget_debug & level)) { printk("%s: %s(): ",__stringify(KBUILD_MODNAME), __FUNCTION__); printk(args); } } while (0) 23 24 struct budget_info { 25 char *name;
+1 -1
drivers/media/dvb/ttpci/fdump.c
··· 36 } 37 38 fprintf(fd_out, "\n};\n\n"); 39 - 40 fclose(fd_in); 41 fclose(fd_out); 42
··· 36 } 37 38 fprintf(fd_out, "\n};\n\n"); 39 + 40 fclose(fd_in); 41 fclose(fd_out); 42
+19 -19
drivers/media/dvb/ttpci/ttpci-eeprom.c
··· 13 Holger Waechtler Convergence 14 15 Copyright (C) 2002-2003 Ralph Metzler <rjkm@metzlerbros.de> 16 - Metzler Brothers Systementwicklung GbR 17 18 This program is free software; you can redistribute it and/or modify 19 it under the terms of the GNU General Public License as published by ··· 48 49 static int check_mac_tt(u8 *buf) 50 { 51 - int i; 52 - u16 tmp = 0xffff; 53 54 - for (i = 0; i < 8; i++) { 55 - tmp = (tmp << 8) | ((tmp >> 8) ^ buf[i]); 56 - tmp ^= (tmp >> 4) & 0x0f; 57 - tmp ^= (tmp << 12) ^ ((tmp & 0xff) << 5); 58 - } 59 - tmp ^= 0xffff; 60 - return (((tmp >> 8) ^ buf[8]) | ((tmp & 0xff) ^ buf[9])); 61 } 62 63 static int getmac_tt(u8 * decodedMAC, u8 * encodedMAC) 64 { 65 - u8 xor[20] = { 0x72, 0x23, 0x68, 0x19, 0x5c, 0xa8, 0x71, 0x2c, 66 0x54, 0xd3, 0x7b, 0xf1, 0x9E, 0x23, 0x16, 0xf6, 67 0x1d, 0x36, 0x64, 0x78}; 68 - u8 data[20]; 69 - int i; 70 71 /* In case there is a sig check failure have the orig contents available */ 72 memcpy(data, encodedMAC, 20); 73 74 for (i = 0; i < 20; i++) 75 - data[i] ^= xor[i]; 76 - for (i = 0; i < 10; i++) 77 - data[i] = ((data[2 * i + 1] << 8) | data[2 * i]) 78 >> ((data[2 * i + 1] >> 6) & 3); 79 80 - if (check_mac_tt(data)) 81 - return -ENODEV; 82 83 decodedMAC[0] = data[2]; decodedMAC[1] = data[1]; decodedMAC[2] = data[0]; 84 decodedMAC[3] = data[6]; decodedMAC[4] = data[5]; decodedMAC[5] = data[4]; 85 - return 0; 86 } 87 88 static int ttpci_eeprom_read_encodedMAC(struct i2c_adapter *adapter, u8 * encodedMAC)
··· 13 Holger Waechtler Convergence 14 15 Copyright (C) 2002-2003 Ralph Metzler <rjkm@metzlerbros.de> 16 + Metzler Brothers Systementwicklung GbR 17 18 This program is free software; you can redistribute it and/or modify 19 it under the terms of the GNU General Public License as published by ··· 48 49 static int check_mac_tt(u8 *buf) 50 { 51 + int i; 52 + u16 tmp = 0xffff; 53 54 + for (i = 0; i < 8; i++) { 55 + tmp = (tmp << 8) | ((tmp >> 8) ^ buf[i]); 56 + tmp ^= (tmp >> 4) & 0x0f; 57 + tmp ^= (tmp << 12) ^ ((tmp & 0xff) << 5); 58 + } 59 + tmp ^= 0xffff; 60 + return (((tmp >> 8) ^ buf[8]) | ((tmp & 0xff) ^ buf[9])); 61 } 62 63 static int getmac_tt(u8 * decodedMAC, u8 * encodedMAC) 64 { 65 + u8 xor[20] = { 0x72, 0x23, 0x68, 0x19, 0x5c, 0xa8, 0x71, 0x2c, 66 0x54, 0xd3, 0x7b, 0xf1, 0x9E, 0x23, 0x16, 0xf6, 67 0x1d, 0x36, 0x64, 0x78}; 68 + u8 data[20]; 69 + int i; 70 71 /* In case there is a sig check failure have the orig contents available */ 72 memcpy(data, encodedMAC, 20); 73 74 for (i = 0; i < 20; i++) 75 + data[i] ^= xor[i]; 76 + for (i = 0; i < 10; i++) 77 + data[i] = ((data[2 * i + 1] << 8) | data[2 * i]) 78 >> ((data[2 * i + 1] >> 6) & 3); 79 80 + if (check_mac_tt(data)) 81 + return -ENODEV; 82 83 decodedMAC[0] = data[2]; decodedMAC[1] = data[1]; decodedMAC[2] = data[0]; 84 decodedMAC[3] = data[6]; decodedMAC[4] = data[5]; decodedMAC[5] = data[4]; 85 + return 0; 86 } 87 88 static int ttpci_eeprom_read_encodedMAC(struct i2c_adapter *adapter, u8 * encodedMAC)
+62 -62
drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
··· 225 226 err = ttusb_result(ttusb, b, 0x20); 227 228 - /* check if the i2c transaction was successful */ 229 - if ((snd_len != b[5]) || (rcv_len != b[6])) return -EREMOTEIO; 230 231 if (rcv_len > 0) { 232 ··· 489 490 static int lnbp21_set_voltage(struct dvb_frontend* fe, fe_sec_voltage_t voltage) 491 { 492 - struct ttusb* ttusb = (struct ttusb*) fe->dvb->priv; 493 - int ret; 494 - u8 data[1]; 495 - struct i2c_msg msg = { .addr = 0x08, .flags = 0, .buf = data, .len = sizeof(data) }; 496 497 - switch(voltage) { 498 - case SEC_VOLTAGE_OFF: 499 - data[0] = 0x00; 500 - break; 501 - case SEC_VOLTAGE_13: 502 - data[0] = 0x44; 503 - break; 504 - case SEC_VOLTAGE_18: 505 - data[0] = 0x4c; 506 - break; 507 - default: 508 - return -EINVAL; 509 - }; 510 511 - ret = i2c_transfer(&ttusb->i2c_adap, &msg, 1); 512 - return (ret != 1) ? -EIO : 0; 513 } 514 515 static int ttusb_update_lnb(struct ttusb *ttusb) ··· 1184 }; 1185 1186 static u8 alps_bsbe1_inittab[] = { 1187 - 0x01, 0x15, 1188 - 0x02, 0x30, 1189 - 0x03, 0x00, 1190 - 0x04, 0x7d, /* F22FR = 0x7d, F22 = f_VCO / 128 / 0x7d = 22 kHz */ 1191 - 0x05, 0x35, /* I2CT = 0, SCLT = 1, SDAT = 1 */ 1192 - 0x06, 0x40, /* DAC not used, set to high impendance mode */ 1193 - 0x07, 0x00, /* DAC LSB */ 1194 - 0x08, 0x40, /* DiSEqC off, LNB power on OP2/LOCK pin on */ 1195 - 0x09, 0x00, /* FIFO */ 1196 - 0x0c, 0x51, /* OP1 ctl = Normal, OP1 val = 1 (LNB Power ON) */ 1197 - 0x0d, 0x82, /* DC offset compensation = ON, beta_agc1 = 2 */ 1198 - 0x0e, 0x23, /* alpha_tmg = 2, beta_tmg = 3 */ 1199 - 0x10, 0x3f, // AGC2 0x3d 1200 - 0x11, 0x84, 1201 - 0x12, 0xb9, 1202 - 0x15, 0xc9, // lock detector threshold 1203 - 0x16, 0x00, 1204 - 0x17, 0x00, 1205 - 0x18, 0x00, 1206 - 0x19, 0x00, 1207 - 0x1a, 0x00, 1208 - 0x1f, 0x50, 1209 - 0x20, 0x00, 1210 - 0x21, 0x00, 1211 - 0x22, 0x00, 1212 - 0x23, 0x00, 1213 - 0x28, 0x00, // out imp: normal out type: parallel FEC mode:0 1214 - 0x29, 0x1e, // 1/2 threshold 1215 - 0x2a, 0x14, // 2/3 threshold 1216 - 0x2b, 0x0f, // 3/4 threshold 1217 - 0x2c, 0x09, // 5/6 threshold 1218 - 0x2d, 0x05, // 7/8 threshold 1219 - 0x2e, 0x01, 1220 - 0x31, 0x1f, // test all FECs 1221 - 0x32, 0x19, // viterbi and synchro search 1222 - 0x33, 0xfc, // rs control 1223 - 0x34, 0x93, // error control 1224 - 0x0f, 0x92, 1225 - 0xff, 0xff 1226 }; 1227 1228 static u8 alps_bsru6_inittab[] = { ··· 1350 u32 div; 1351 struct i2c_msg msg = {.addr = 0x61,.flags = 0,.buf = buf,.len = sizeof(buf) }; 1352 1353 - div = params->frequency / 125; 1354 1355 buf[0] = (div >> 8) & 0x7f; 1356 buf[1] = div & 0xff; ··· 1487 1488 udev = interface_to_usbdev(intf); 1489 1490 - if (intf->altsetting->desc.bInterfaceNumber != 1) return -ENODEV; 1491 1492 if (!(ttusb = kmalloc(sizeof(struct ttusb), GFP_KERNEL))) 1493 return -ENOMEM;
··· 225 226 err = ttusb_result(ttusb, b, 0x20); 227 228 + /* check if the i2c transaction was successful */ 229 + if ((snd_len != b[5]) || (rcv_len != b[6])) return -EREMOTEIO; 230 231 if (rcv_len > 0) { 232 ··· 489 490 static int lnbp21_set_voltage(struct dvb_frontend* fe, fe_sec_voltage_t voltage) 491 { 492 + struct ttusb* ttusb = (struct ttusb*) fe->dvb->priv; 493 + int ret; 494 + u8 data[1]; 495 + struct i2c_msg msg = { .addr = 0x08, .flags = 0, .buf = data, .len = sizeof(data) }; 496 497 + switch(voltage) { 498 + case SEC_VOLTAGE_OFF: 499 + data[0] = 0x00; 500 + break; 501 + case SEC_VOLTAGE_13: 502 + data[0] = 0x44; 503 + break; 504 + case SEC_VOLTAGE_18: 505 + data[0] = 0x4c; 506 + break; 507 + default: 508 + return -EINVAL; 509 + }; 510 511 + ret = i2c_transfer(&ttusb->i2c_adap, &msg, 1); 512 + return (ret != 1) ? -EIO : 0; 513 } 514 515 static int ttusb_update_lnb(struct ttusb *ttusb) ··· 1184 }; 1185 1186 static u8 alps_bsbe1_inittab[] = { 1187 + 0x01, 0x15, 1188 + 0x02, 0x30, 1189 + 0x03, 0x00, 1190 + 0x04, 0x7d, /* F22FR = 0x7d, F22 = f_VCO / 128 / 0x7d = 22 kHz */ 1191 + 0x05, 0x35, /* I2CT = 0, SCLT = 1, SDAT = 1 */ 1192 + 0x06, 0x40, /* DAC not used, set to high impendance mode */ 1193 + 0x07, 0x00, /* DAC LSB */ 1194 + 0x08, 0x40, /* DiSEqC off, LNB power on OP2/LOCK pin on */ 1195 + 0x09, 0x00, /* FIFO */ 1196 + 0x0c, 0x51, /* OP1 ctl = Normal, OP1 val = 1 (LNB Power ON) */ 1197 + 0x0d, 0x82, /* DC offset compensation = ON, beta_agc1 = 2 */ 1198 + 0x0e, 0x23, /* alpha_tmg = 2, beta_tmg = 3 */ 1199 + 0x10, 0x3f, // AGC2 0x3d 1200 + 0x11, 0x84, 1201 + 0x12, 0xb9, 1202 + 0x15, 0xc9, // lock detector threshold 1203 + 0x16, 0x00, 1204 + 0x17, 0x00, 1205 + 0x18, 0x00, 1206 + 0x19, 0x00, 1207 + 0x1a, 0x00, 1208 + 0x1f, 0x50, 1209 + 0x20, 0x00, 1210 + 0x21, 0x00, 1211 + 0x22, 0x00, 1212 + 0x23, 0x00, 1213 + 0x28, 0x00, // out imp: normal out type: parallel FEC mode:0 1214 + 0x29, 0x1e, // 1/2 threshold 1215 + 0x2a, 0x14, // 2/3 threshold 1216 + 0x2b, 0x0f, // 3/4 threshold 1217 + 0x2c, 0x09, // 5/6 threshold 1218 + 0x2d, 0x05, // 7/8 threshold 1219 + 0x2e, 0x01, 1220 + 0x31, 0x1f, // test all FECs 1221 + 0x32, 0x19, // viterbi and synchro search 1222 + 0x33, 0xfc, // rs control 1223 + 0x34, 0x93, // error control 1224 + 0x0f, 0x92, 1225 + 0xff, 0xff 1226 }; 1227 1228 static u8 alps_bsru6_inittab[] = { ··· 1350 u32 div; 1351 struct i2c_msg msg = {.addr = 0x61,.flags = 0,.buf = buf,.len = sizeof(buf) }; 1352 1353 + div = params->frequency / 125; 1354 1355 buf[0] = (div >> 8) & 0x7f; 1356 buf[1] = div & 0xff; ··· 1487 1488 udev = interface_to_usbdev(intf); 1489 1490 + if (intf->altsetting->desc.bInterfaceNumber != 1) return -ENODEV; 1491 1492 if (!(ttusb = kmalloc(sizeof(struct ttusb), GFP_KERNEL))) 1493 return -ENOMEM;
+1638 -1638
drivers/media/dvb/ttusb-budget/dvb-ttusb-dspbootcode.h
··· 2 #include <asm/types.h> 3 4 static u8 dsp_bootcode [] = { 5 - 0x08, 0xaa, 0x00, 0x18, 0x00, 0x03, 0x08, 0x00, 6 - 0x00, 0x10, 0x00, 0x00, 0x01, 0x80, 0x18, 0x5f, 7 - 0x00, 0x00, 0x01, 0x80, 0x77, 0x18, 0x2a, 0xeb, 8 - 0x6b, 0xf8, 0x00, 0x18, 0x03, 0xff, 0x68, 0xf8, 9 - 0x00, 0x18, 0xff, 0xfe, 0xf7, 0xb8, 0xf7, 0xbe, 10 - 0xf6, 0xb9, 0xf4, 0xa0, 0xf6, 0xb7, 0xf6, 0xb5, 11 - 0xf6, 0xb6, 0xf0, 0x20, 0x19, 0xdf, 0xf1, 0x00, 12 - 0x00, 0x01, 0xf8, 0x4d, 0x01, 0xab, 0xf6, 0xb8, 13 - 0xf0, 0x20, 0x19, 0xdf, 0xf0, 0x73, 0x01, 0xa5, 14 - 0x7e, 0xf8, 0x00, 0x12, 0xf0, 0x00, 0x00, 0x01, 15 - 0x47, 0xf8, 0x00, 0x11, 0x7e, 0x92, 0x00, 0xf8, 16 - 0x00, 0x11, 0xf0, 0x00, 0x00, 0x01, 0x7e, 0xf8, 17 - 0x00, 0x11, 0xf0, 0x00, 0x00, 0x01, 0x6c, 0x89, 18 - 0x01, 0x9a, 0xf7, 0xb8, 0xee, 0xfc, 0xf0, 0x20, 19 - 0xff, 0xff, 0xf1, 0x00, 0x00, 0x01, 0xf8, 0x4d, 20 - 0x01, 0xbf, 0xf2, 0x73, 0x01, 0xb9, 0x4e, 0x02, 21 - 0xf4, 0x95, 0xf5, 0xe3, 0x56, 0x02, 0x7e, 0x00, 22 - 0x11, 0x00, 0xfa, 0x4c, 0x01, 0xb7, 0x6b, 0x03, 23 - 0x00, 0x01, 0xf6, 0xb8, 0xee, 0x04, 0xf0, 0x74, 24 - 0x0d, 0xa7, 0xf0, 0x74, 0x01, 0xc5, 0x4a, 0x11, 25 - 0x4a, 0x16, 0x72, 0x11, 0x2a, 0xe6, 0x10, 0xf8, 26 - 0x00, 0x11, 0xfa, 0x45, 0x01, 0xdb, 0xf4, 0x95, 27 - 0xee, 0xff, 0x48, 0x11, 0xf0, 0x00, 0x2a, 0xc6, 28 - 0x88, 0x16, 0xf4, 0x95, 0xf4, 0x95, 0x10, 0xee, 29 - 0xff, 0xff, 0xf4, 0xe3, 0x6c, 0xe9, 0xff, 0xff, 30 - 0x01, 0xd5, 0x10, 0xf8, 0x2a, 0xe7, 0xf8, 0x45, 31 - 0x01, 0xe2, 0x10, 0xf8, 0x2a, 0xe7, 0xf4, 0xe3, 32 - 0xf0, 0x74, 0x01, 0xff, 0xee, 0x01, 0x8a, 0x16, 33 - 0x8a, 0x11, 0xfc, 0x00, 0xf7, 0xb8, 0xe9, 0x20, 34 - 0x4a, 0x11, 0x09, 0xf8, 0x2a, 0xe6, 0xf8, 0x4e, 35 - 0x01, 0xf3, 0xf2, 0x73, 0x01, 0xfd, 0xf4, 0x95, 36 - 0xe8, 0x01, 0x72, 0x11, 0x2a, 0xe6, 0x49, 0x11, 37 - 0x80, 0xe1, 0x2a, 0xc6, 0xf3, 0x00, 0x00, 0x01, 38 - 0xe8, 0x00, 0x81, 0xf8, 0x2a, 0xe6, 0x8a, 0x11, 39 - 0xfc, 0x00, 0xf4, 0x95, 0xf0, 0x73, 0x02, 0x00, 40 - 0x10, 0xf8, 0x2a, 0x0f, 0xfc, 0x00, 0x4a, 0x11, 41 - 0xf0, 0x74, 0x02, 0x02, 0x80, 0xf8, 0x2a, 0x10, 42 - 0x73, 0x08, 0x00, 0x09, 0x40, 0xf8, 0x2a, 0x15, 43 - 0x82, 0xf8, 0x00, 0x11, 0xf4, 0x95, 0x77, 0x10, 44 - 0x03, 0xe8, 0xf5, 0xa9, 0xf8, 0x30, 0x02, 0x21, 45 - 0x71, 0xf8, 0x2a, 0x10, 0x2a, 0x15, 0x56, 0xf8, 46 - 0x2a, 0x0c, 0xf0, 0xe3, 0x4e, 0xf8, 0x2a, 0x16, 47 - 0xe8, 0x00, 0x4e, 0xf8, 0x2a, 0x0c, 0x8a, 0x11, 48 - 0xfc, 0x00, 0x4a, 0x06, 0x4a, 0x07, 0x4a, 0x1d, 49 - 0x68, 0xf8, 0x00, 0x07, 0x7d, 0x3f, 0x69, 0xf8, 50 - 0x00, 0x07, 0x40, 0x00, 0x68, 0xf8, 0x00, 0x1d, 51 - 0xff, 0xfc, 0x6b, 0xf8, 0x2a, 0x0f, 0x00, 0x01, 52 - 0x8a, 0x1d, 0x8a, 0x07, 0x8a, 0x06, 0xf4, 0xeb, 53 - 0xee, 0xfd, 0x76, 0xf8, 0x2a, 0x0f, 0x00, 0x00, 54 - 0x76, 0x00, 0x00, 0x00, 0xfb, 0x80, 0x19, 0x4c, 55 - 0xf4, 0x95, 0xe8, 0x00, 0x80, 0xf8, 0x2a, 0x11, 56 - 0xf9, 0x80, 0x19, 0x07, 0x80, 0xf8, 0x2a, 0x0e, 57 - 0xf9, 0x80, 0x16, 0x66, 0x76, 0x00, 0x2a, 0x12, 58 - 0x10, 0xf8, 0x2a, 0x11, 0xf9, 0x80, 0x18, 0xe3, 59 - 0x10, 0xf8, 0x2a, 0x0e, 0xf9, 0x80, 0x16, 0x66, 60 - 0x10, 0xf8, 0x2a, 0x0e, 0xf9, 0x80, 0x16, 0x87, 61 - 0xee, 0x03, 0xfc, 0x00, 0x4a, 0x11, 0xf6, 0xb8, 62 - 0xf4, 0x95, 0xf0, 0x20, 0x80, 0x00, 0x11, 0xf8, 63 - 0x2a, 0x5a, 0xf8, 0x4d, 0x02, 0x93, 0x11, 0xf8, 64 - 0x2a, 0x9f, 0xf8, 0x4c, 0x02, 0x7c, 0x77, 0x12, 65 - 0x2a, 0x39, 0x49, 0x12, 0x01, 0xf8, 0x2a, 0x9f, 66 - 0x89, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x71, 0x81, 67 - 0x00, 0x11, 0x6c, 0xe1, 0xff, 0xab, 0x02, 0x93, 68 - 0x6b, 0xf8, 0x2a, 0x9f, 0x00, 0x01, 0xe9, 0x05, 69 - 0x01, 0xe2, 0x00, 0x03, 0x81, 0xf8, 0x2a, 0xa0, 70 - 0xf0, 0x73, 0x02, 0x95, 0x72, 0x11, 0x2a, 0x9f, 71 - 0xf4, 0x95, 0x10, 0xe1, 0x2a, 0x39, 0x6b, 0xf8, 72 - 0x2a, 0x9f, 0x00, 0x01, 0x11, 0xf8, 0x2a, 0x9f, 73 - 0x09, 0xf8, 0x2a, 0xa0, 0xf8, 0x4c, 0x02, 0x93, 74 - 0x76, 0xf8, 0x2a, 0x5a, 0x00, 0x00, 0x76, 0xf8, 75 - 0x2a, 0x9f, 0x00, 0x00, 0x76, 0xf8, 0x2a, 0xa0, 76 - 0x00, 0x00, 0x88, 0x11, 0xf4, 0x95, 0x48, 0x11, 77 - 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfe, 78 - 0x10, 0xf8, 0x2a, 0x5a, 0xf8, 0x44, 0x02, 0xb2, 79 - 0x76, 0xf8, 0x2a, 0x5a, 0x00, 0x01, 0xf0, 0x74, 80 - 0x02, 0x58, 0x88, 0x11, 0xf4, 0x95, 0x77, 0x10, 81 - 0x80, 0x00, 0xf4, 0xa9, 0xf8, 0x30, 0x02, 0xb2, 82 - 0x48, 0x11, 0xf0, 0x30, 0x00, 0xff, 0x80, 0x00, 83 - 0x10, 0xf8, 0x2a, 0x5b, 0xf9, 0x80, 0x18, 0xd6, 84 - 0xee, 0x02, 0x8a, 0x11, 0xfc, 0x00, 0xf4, 0x95, 85 - 0x4a, 0x08, 0x4a, 0x09, 0x4a, 0x0a, 0x4a, 0x0b, 86 - 0x4a, 0x0c, 0x4a, 0x0d, 0x4a, 0x10, 0x4a, 0x11, 87 - 0x4a, 0x12, 0x4a, 0x13, 0x4a, 0x14, 0x4a, 0x15, 88 - 0x4a, 0x16, 0x4a, 0x17, 0x4a, 0x17, 0x4a, 0x19, 89 - 0x4a, 0x0e, 0x4a, 0x06, 0x4a, 0x07, 0x4a, 0x1a, 90 - 0x4a, 0x1d, 0x4a, 0x1b, 0x4a, 0x1c, 0x68, 0xf8, 91 - 0x00, 0x07, 0x7d, 0x3f, 0x69, 0xf8, 0x00, 0x07, 92 - 0x40, 0x00, 0x68, 0xf8, 0x00, 0x1d, 0xff, 0xfc, 93 - 0x48, 0x18, 0x68, 0xf8, 0x00, 0x18, 0xff, 0xfe, 94 - 0xf4, 0x95, 0xf4, 0x95, 0x4a, 0x08, 0xee, 0xfd, 95 - 0xf0, 0x74, 0x02, 0x58, 0x88, 0x11, 0xf4, 0x95, 96 - 0x77, 0x10, 0x80, 0x00, 0xf4, 0xa9, 0xf8, 0x30, 97 - 0x02, 0xef, 0x48, 0x11, 0xf0, 0x30, 0x00, 0xff, 98 - 0x80, 0x00, 0x10, 0xf8, 0x2a, 0x5b, 0xf9, 0x80, 99 - 0x18, 0xd6, 0xee, 0x03, 0x8a, 0x18, 0xf4, 0x95, 100 - 0x8a, 0x1c, 0x8a, 0x1b, 0x8a, 0x1d, 0x8a, 0x1a, 101 - 0x8a, 0x07, 0x8a, 0x06, 0x8a, 0x0e, 0x8a, 0x19, 102 - 0x8a, 0x17, 0x8a, 0x17, 0x8a, 0x16, 0x8a, 0x15, 103 - 0x8a, 0x14, 0x8a, 0x13, 0x8a, 0x12, 0x8a, 0x11, 104 - 0x8a, 0x10, 0x8a, 0x0d, 0x8a, 0x0c, 0x8a, 0x0b, 105 - 0x8a, 0x0a, 0x8a, 0x09, 0x8a, 0x08, 0xf4, 0xeb, 106 - 0x4a, 0x11, 0x77, 0x11, 0x2a, 0x39, 0x76, 0x81, 107 - 0x00, 0x55, 0x77, 0x12, 0x2a, 0x18, 0x10, 0xe2, 108 - 0x00, 0x01, 0x80, 0xe1, 0x00, 0x01, 0x10, 0xe2, 109 - 0x00, 0x02, 0x80, 0xe1, 0x00, 0x02, 0x76, 0xe1, 110 - 0x00, 0x03, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x04, 111 - 0x00, 0xaa, 0xf0, 0x74, 0x02, 0x98, 0x8a, 0x11, 112 - 0xfc, 0x00, 0x4a, 0x11, 0x88, 0x11, 0xf4, 0x95, 113 - 0xf4, 0x95, 0x10, 0x81, 0x6f, 0xf8, 0x2a, 0x9e, 114 - 0x0c, 0x88, 0xe8, 0xff, 0x18, 0xe1, 0x00, 0x01, 115 - 0x1a, 0xf8, 0x2a, 0x9e, 0xf0, 0x30, 0x1f, 0xff, 116 - 0x80, 0xf8, 0x2a, 0x9e, 0x8a, 0x11, 0xfc, 0x00, 117 - 0x4a, 0x11, 0x77, 0x11, 0x2a, 0x39, 0x76, 0x81, 118 - 0x00, 0x55, 0x77, 0x12, 0x2a, 0x18, 0x11, 0xe2, 119 - 0x00, 0x01, 0x81, 0xe1, 0x00, 0x01, 0x11, 0xe2, 120 - 0x00, 0x02, 0x81, 0xe1, 0x00, 0x02, 0x76, 0xe1, 121 - 0x00, 0x03, 0x00, 0x02, 0x48, 0x08, 0x6f, 0xe1, 122 - 0x00, 0x04, 0x0c, 0x98, 0xf0, 0x30, 0x00, 0xff, 123 - 0x80, 0xe1, 0x00, 0x05, 0x76, 0xe1, 0x00, 0x06, 124 - 0x00, 0xaa, 0xf0, 0x74, 0x02, 0x98, 0x8a, 0x11, 125 - 0xfc, 0x00, 0x4a, 0x11, 0x77, 0x11, 0x2a, 0x39, 126 - 0x76, 0x81, 0x00, 0x55, 0x77, 0x12, 0x2a, 0x18, 127 - 0x10, 0xe2, 0x00, 0x01, 0x80, 0xe1, 0x00, 0x01, 128 - 0x10, 0xe2, 0x00, 0x02, 0x80, 0xe1, 0x00, 0x02, 129 - 0x76, 0xe1, 0x00, 0x03, 0x00, 0x04, 0x48, 0x11, 130 - 0xf0, 0x00, 0x00, 0x04, 0x88, 0x12, 0xf4, 0x95, 131 - 0x77, 0x13, 0x2a, 0x76, 0xe9, 0x00, 0xe5, 0x98, 132 - 0xf3, 0x00, 0x00, 0x01, 0xf6, 0xb8, 0x48, 0x0b, 133 - 0x08, 0xf8, 0x2a, 0x3c, 0xf8, 0x43, 0x03, 0x71, 134 - 0x76, 0x82, 0x00, 0xaa, 0xf0, 0x74, 0x02, 0x98, 135 - 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xf0, 136 - 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x71, 0x81, 137 - 0x00, 0x14, 0x71, 0xe1, 0x00, 0x01, 0x00, 0x15, 138 - 0x49, 0x11, 0xf3, 0x00, 0x00, 0x02, 0x89, 0x11, 139 - 0xe7, 0x82, 0x6d, 0xea, 0x00, 0x04, 0xe7, 0x83, 140 - 0x6d, 0xeb, 0x00, 0x0a, 0x77, 0x1a, 0x00, 0x05, 141 - 0xf0, 0x72, 0x03, 0xaa, 0x11, 0x81, 0xf2, 0xe8, 142 - 0x80, 0x82, 0xe9, 0xff, 0x19, 0xe1, 0x00, 0x01, 143 - 0xf1, 0xa0, 0x81, 0x92, 0x11, 0xe1, 0x00, 0x0c, 144 - 0xf2, 0xe8, 0x80, 0x83, 0xe9, 0xff, 0x19, 0xe1, 145 - 0x00, 0x0d, 0xf1, 0xa0, 0x81, 0x93, 0x6d, 0xe9, 146 - 0x00, 0x02, 0x48, 0x18, 0x49, 0x18, 0x70, 0x00, 147 - 0x00, 0x15, 0xf0, 0x00, 0x00, 0x04, 0xf3, 0x00, 148 - 0x00, 0x0a, 0x80, 0x01, 0x81, 0x02, 0xf2, 0x74, 149 - 0x0e, 0x54, 0xf4, 0x95, 0x48, 0x14, 0xee, 0x10, 150 - 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xf0, 0x74, 151 - 0x0c, 0x5e, 0x80, 0xf8, 0x2a, 0x5c, 0x77, 0x12, 152 - 0x2a, 0x39, 0x76, 0x82, 0x00, 0x55, 0x77, 0x11, 153 - 0x2a, 0x18, 0x10, 0xe1, 0x00, 0x01, 0x80, 0xe2, 154 - 0x00, 0x01, 0x10, 0xe1, 0x00, 0x02, 0x80, 0xe2, 155 - 0x00, 0x02, 0x76, 0xe2, 0x00, 0x03, 0x00, 0x1c, 156 - 0xf6, 0xb8, 0x56, 0xf8, 0x2a, 0x16, 0xf0, 0xf0, 157 - 0xf0, 0xf8, 0x80, 0xe2, 0x00, 0x07, 0x56, 0xf8, 158 - 0x2a, 0x16, 0xf1, 0xf0, 0xe8, 0xff, 0xf2, 0x80, 159 - 0x80, 0xe2, 0x00, 0x06, 0x56, 0xf8, 0x2a, 0x16, 160 - 0xf1, 0xf8, 0xe8, 0xff, 0xf2, 0x80, 0x80, 0xe2, 161 - 0x00, 0x05, 0x57, 0xf8, 0x2a, 0x16, 0xe8, 0xff, 162 - 0xf2, 0x80, 0x80, 0xe2, 0x00, 0x04, 0x56, 0xf8, 163 - 0x27, 0x6c, 0xf0, 0xf0, 0xf0, 0xf8, 0x80, 0xe2, 164 - 0x00, 0x0b, 0x56, 0xf8, 0x27, 0x6c, 0xf1, 0xf0, 165 - 0xe8, 0xff, 0xf2, 0x80, 0x80, 0xe2, 0x00, 0x0a, 166 - 0x56, 0xf8, 0x27, 0x6c, 0xf1, 0xf8, 0xe8, 0xff, 167 - 0xf2, 0x80, 0x80, 0xe2, 0x00, 0x09, 0xe8, 0xff, 168 - 0x57, 0xf8, 0x27, 0x6c, 0xf2, 0x80, 0x80, 0xe2, 169 - 0x00, 0x08, 0x56, 0xf8, 0x27, 0x6a, 0xf0, 0xf0, 170 - 0xf0, 0xf8, 0x80, 0xe2, 0x00, 0x0f, 0x56, 0xf8, 171 - 0x27, 0x6a, 0xf1, 0xf0, 0xe8, 0xff, 0xf2, 0x80, 172 - 0x80, 0xe2, 0x00, 0x0e, 0x56, 0xf8, 0x27, 0x6a, 173 - 0xf1, 0xf8, 0xe8, 0xff, 0xf2, 0x80, 0x80, 0xe2, 174 - 0x00, 0x0d, 0x57, 0xf8, 0x27, 0x6a, 0xe8, 0xff, 175 - 0xf2, 0x80, 0x80, 0xe2, 0x00, 0x0c, 0x76, 0xe2, 176 - 0x00, 0x13, 0x00, 0x00, 0x76, 0xe2, 0x00, 0x12, 177 - 0x00, 0x00, 0x6f, 0xf8, 0x2a, 0x5c, 0x0c, 0x58, 178 - 0x80, 0xe2, 0x00, 0x11, 0xe8, 0xff, 0x18, 0xf8, 179 - 0x2a, 0x5c, 0x80, 0xe2, 0x00, 0x10, 0x76, 0xe2, 180 - 0x00, 0x17, 0x00, 0x00, 0x76, 0xe2, 0x00, 0x16, 181 - 0x00, 0x00, 0x6f, 0xf8, 0x2a, 0x9e, 0x0c, 0x58, 182 - 0x80, 0xe2, 0x00, 0x15, 0xe8, 0xff, 0x18, 0xf8, 183 - 0x2a, 0x9e, 0x80, 0xe2, 0x00, 0x14, 0x76, 0xe2, 184 - 0x00, 0x1b, 0x00, 0x00, 0x76, 0xe2, 0x00, 0x1a, 185 - 0x00, 0x00, 0x76, 0xe2, 0x00, 0x19, 0x00, 0x00, 186 - 0x70, 0xe2, 0x00, 0x18, 0x27, 0x6e, 0x76, 0xe2, 187 - 0x00, 0x1f, 0x00, 0x00, 0x76, 0xe2, 0x00, 0x1e, 188 - 0x00, 0x00, 0x76, 0xe2, 0x00, 0x1d, 0x00, 0x00, 189 - 0x76, 0xe2, 0x00, 0x1c, 0x00, 0x00, 0x76, 0xe2, 190 - 0x00, 0x20, 0x00, 0xaa, 0xf0, 0x74, 0x02, 0x98, 191 - 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfe, 192 - 0x10, 0xf8, 0x2a, 0x38, 0xf8, 0x45, 0x04, 0xed, 193 - 0x77, 0x12, 0x2a, 0x18, 0x10, 0xe2, 0x00, 0x02, 194 - 0x88, 0x11, 0xf4, 0x95, 0x77, 0x10, 0x00, 0x08, 195 - 0x6d, 0xe9, 0xff, 0xdf, 0xf6, 0xa9, 0xf8, 0x20, 196 - 0x04, 0x75, 0xf0, 0x73, 0x04, 0x7d, 0xf0, 0x10, 197 - 0x00, 0x21, 0xf0, 0x00, 0x1a, 0x83, 0x48, 0x08, 198 - 0x7e, 0xf8, 0x00, 0x08, 0xf4, 0xe2, 0xf0, 0x74, 199 - 0x03, 0x0a, 0xf0, 0x73, 0x04, 0xea, 0x48, 0x12, 200 - 0xf2, 0x74, 0x03, 0x23, 0xf0, 0x00, 0x00, 0x04, 201 - 0xf2, 0x74, 0x03, 0x36, 0xf4, 0x95, 0xe8, 0x00, 202 - 0xf0, 0x73, 0x04, 0xea, 0x77, 0x11, 0x2a, 0x18, 203 - 0xe8, 0xff, 0x6f, 0xe1, 0x00, 0x04, 0x0d, 0x48, 204 - 0x18, 0xe1, 0x00, 0x05, 0xf2, 0x74, 0x09, 0x69, 205 - 0xf4, 0x95, 0xf2, 0xa0, 0xf0, 0x74, 0x03, 0x36, 206 - 0xf0, 0x73, 0x04, 0xea, 0x77, 0x11, 0x2a, 0x18, 207 - 0xe8, 0xff, 0x6f, 0xe1, 0x00, 0x04, 0x0d, 0x48, 208 - 0x18, 0xe1, 0x00, 0x05, 0xf2, 0x74, 0x09, 0x41, 209 - 0xf4, 0x95, 0xf2, 0xa0, 0xf0, 0x74, 0x03, 0x36, 210 - 0xf0, 0x73, 0x04, 0xea, 0xf0, 0x74, 0x03, 0x57, 211 - 0xf0, 0x73, 0x04, 0xea, 0x10, 0xf8, 0x2a, 0x1c, 212 - 0xf0, 0x74, 0x12, 0xa4, 0xf2, 0x74, 0x03, 0x36, 213 - 0xf4, 0x95, 0xe8, 0x00, 0xf0, 0x73, 0x04, 0xea, 214 - 0x48, 0x12, 0xf2, 0x74, 0x03, 0x80, 0xf0, 0x00, 215 - 0x00, 0x04, 0xf2, 0x74, 0x03, 0x36, 0xf4, 0x95, 216 - 0xe8, 0x00, 0xf0, 0x73, 0x04, 0xea, 0x10, 0xf8, 217 - 0x2a, 0x1c, 0xf0, 0x74, 0x12, 0xc5, 0xf2, 0x74, 218 - 0x03, 0x36, 0xf4, 0x95, 0xe8, 0x00, 0xf0, 0x73, 219 - 0x04, 0xea, 0x77, 0x11, 0x2a, 0x18, 0xe8, 0xff, 220 - 0x6f, 0xe1, 0x00, 0x06, 0x0d, 0x48, 0x18, 0xe1, 221 - 0x00, 0x07, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 222 - 0xf2, 0xa0, 0x70, 0x00, 0x00, 0x12, 0x80, 0x01, 223 - 0x10, 0xe1, 0x00, 0x04, 0xf0, 0x74, 0x0e, 0x7a, 224 - 0xf2, 0x74, 0x03, 0x36, 0xf4, 0x95, 0xe8, 0x00, 225 - 0xf0, 0x73, 0x04, 0xea, 0xf0, 0x74, 0x03, 0xbc, 226 - 0x76, 0xf8, 0x2a, 0x38, 0x00, 0x00, 0xee, 0x02, 227 - 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0x77, 0x11, 228 - 0x2a, 0x39, 0x76, 0x81, 0x00, 0x55, 0x77, 0x12, 229 - 0x2a, 0x18, 0x10, 0xe2, 0x00, 0x01, 0x80, 0xe1, 230 - 0x00, 0x01, 0x10, 0xe2, 0x00, 0x02, 0x80, 0xe1, 231 - 0x00, 0x02, 0x76, 0xe1, 0x00, 0x03, 0x00, 0x09, 232 - 0x48, 0x11, 0xf0, 0x00, 0x00, 0x04, 0x88, 0x12, 233 - 0xf4, 0x95, 0x77, 0x13, 0x2a, 0x86, 0xe9, 0x00, 234 - 0xe5, 0x98, 0xf3, 0x00, 0x00, 0x01, 0xf6, 0xb8, 235 - 0x48, 0x0b, 0x08, 0xf8, 0x2a, 0x3c, 0xf8, 0x43, 236 - 0x05, 0x0a, 0x76, 0x82, 0x00, 0xaa, 0xf0, 0x74, 237 - 0x02, 0x98, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 238 - 0x77, 0x11, 0x2a, 0x39, 0x76, 0x81, 0x00, 0x55, 239 - 0x77, 0x13, 0x2a, 0x18, 0x10, 0xe3, 0x00, 0x01, 240 - 0x80, 0xe1, 0x00, 0x01, 0x10, 0xe3, 0x00, 0x02, 241 - 0x80, 0xe1, 0x00, 0x02, 0x13, 0xe3, 0x00, 0x03, 242 - 0x81, 0xe1, 0x00, 0x03, 0x48, 0x11, 0x77, 0x11, 243 - 0x00, 0x00, 0xf8, 0x4d, 0x05, 0x44, 0xf0, 0x00, 244 - 0x00, 0x04, 0x88, 0x12, 0x48, 0x13, 0xf0, 0x00, 245 - 0x00, 0x04, 0x88, 0x13, 0xf4, 0x95, 0xf4, 0x95, 246 - 0xe5, 0x98, 0x6d, 0x91, 0xf6, 0xb8, 0x48, 0x11, 247 - 0x08, 0xf8, 0x2a, 0x3c, 0xf8, 0x43, 0x05, 0x3a, 248 - 0xf0, 0x20, 0x2a, 0x39, 0x49, 0x11, 0xf5, 0x00, 249 - 0x89, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x76, 0xe1, 250 - 0x00, 0x04, 0x00, 0xaa, 0xf0, 0x74, 0x02, 0x98, 251 - 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0x77, 0x11, 252 - 0x2a, 0x39, 0x76, 0x81, 0x00, 0x55, 0x77, 0x12, 253 - 0x2a, 0x18, 0x10, 0xe2, 0x00, 0x01, 0x80, 0xe1, 254 - 0x00, 0x01, 0x10, 0xe2, 0x00, 0x02, 0x80, 0xe1, 255 - 0x00, 0x02, 0x76, 0xe1, 0x00, 0x03, 0x00, 0x0c, 256 - 0x48, 0x11, 0xf0, 0x00, 0x00, 0x04, 0x88, 0x12, 257 - 0xf4, 0x95, 0x77, 0x13, 0x2a, 0x7a, 0xe9, 0x00, 258 - 0xe5, 0x98, 0xf3, 0x00, 0x00, 0x01, 0xf6, 0xb8, 259 - 0x48, 0x0b, 0x08, 0xf8, 0x2a, 0x3c, 0xf8, 0x43, 260 - 0x05, 0x6a, 0x76, 0x82, 0x00, 0xaa, 0xf0, 0x74, 261 - 0x02, 0x98, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 262 - 0x77, 0x11, 0x2a, 0x39, 0x76, 0x81, 0x00, 0x55, 263 - 0x77, 0x12, 0x2a, 0x18, 0x10, 0xe2, 0x00, 0x01, 264 - 0x80, 0xe1, 0x00, 0x01, 0x10, 0xe2, 0x00, 0x02, 265 - 0x80, 0xe1, 0x00, 0x02, 0x76, 0xe1, 0x00, 0x03, 266 - 0x00, 0x19, 0x48, 0x11, 0xf0, 0x00, 0x00, 0x04, 267 - 0x88, 0x12, 0xf4, 0x95, 0x77, 0x13, 0x2a, 0x5d, 268 - 0xe9, 0x00, 0xe5, 0x98, 0xf3, 0x00, 0x00, 0x01, 269 - 0xf6, 0xb8, 0x48, 0x0b, 0x08, 0xf8, 0x2a, 0x3c, 270 - 0xf8, 0x43, 0x05, 0x93, 0x76, 0x82, 0x00, 0xaa, 271 - 0xf0, 0x74, 0x02, 0x98, 0x8a, 0x11, 0xfc, 0x00, 272 - 0x4a, 0x11, 0x88, 0x11, 0x10, 0xf8, 0x2a, 0x38, 273 - 0xf8, 0x44, 0x05, 0xe3, 0x10, 0xf8, 0x2a, 0xa1, 274 - 0xf8, 0x44, 0x05, 0xba, 0x6c, 0xe1, 0xff, 0x56, 275 - 0x05, 0xe3, 0x72, 0x12, 0x2a, 0xa1, 0xf4, 0x95, 276 - 0x70, 0xe2, 0x2a, 0x18, 0x00, 0x11, 0x6b, 0xf8, 277 - 0x2a, 0xa1, 0x00, 0x01, 0xf0, 0x73, 0x05, 0xe3, 278 - 0x72, 0x12, 0x2a, 0xa1, 0xf4, 0x95, 0x70, 0xe2, 279 - 0x2a, 0x18, 0x00, 0x11, 0x10, 0xf8, 0x2a, 0xa1, 280 - 0xf0, 0x00, 0x00, 0x01, 0x88, 0x12, 0xf4, 0x95, 281 - 0xf4, 0x95, 0x6e, 0xe2, 0xff, 0xfc, 0x05, 0xd1, 282 - 0x73, 0x12, 0x2a, 0xa1, 0x48, 0x11, 0xf0, 0x00, 283 - 0x00, 0x05, 0x80, 0xf8, 0x2a, 0xa2, 0x10, 0xf8, 284 - 0x2a, 0xa1, 0x08, 0xf8, 0x2a, 0xa2, 0xf8, 0x44, 285 - 0x05, 0xe3, 0x6c, 0xe1, 0xff, 0xab, 0x05, 0xdd, 286 - 0x76, 0xf8, 0x2a, 0x38, 0x00, 0x01, 0x76, 0xf8, 287 - 0x2a, 0xa1, 0x00, 0x00, 0x76, 0xf8, 0x2a, 0xa2, 288 - 0x00, 0x00, 0x8a, 0x11, 0xfc, 0x00, 0xf4, 0x95, 289 - 0x4a, 0x08, 0x4a, 0x09, 0x4a, 0x0a, 0x4a, 0x0b, 290 - 0x4a, 0x0c, 0x4a, 0x0d, 0x4a, 0x10, 0x4a, 0x11, 291 - 0x4a, 0x12, 0x4a, 0x13, 0x4a, 0x14, 0x4a, 0x15, 292 - 0x4a, 0x16, 0x4a, 0x17, 0x4a, 0x17, 0x4a, 0x19, 293 - 0x4a, 0x0e, 0x4a, 0x06, 0x4a, 0x07, 0x4a, 0x1a, 294 - 0x4a, 0x1d, 0x4a, 0x1b, 0x4a, 0x1c, 0x68, 0xf8, 295 - 0x00, 0x07, 0x7d, 0x3f, 0x69, 0xf8, 0x00, 0x07, 296 - 0x40, 0x00, 0x68, 0xf8, 0x00, 0x1d, 0xff, 0xfc, 297 - 0x48, 0x18, 0x68, 0xf8, 0x00, 0x18, 0xff, 0xfe, 298 - 0xf4, 0x95, 0xf4, 0x95, 0x4a, 0x08, 0xee, 0xff, 299 - 0x10, 0xf8, 0x2a, 0x5b, 0xf9, 0x80, 0x18, 0x04, 300 - 0xf0, 0x74, 0x05, 0xa2, 0xee, 0x01, 0x8a, 0x18, 301 - 0xf4, 0x95, 0x8a, 0x1c, 0x8a, 0x1b, 0x8a, 0x1d, 302 - 0x8a, 0x1a, 0x8a, 0x07, 0x8a, 0x06, 0x8a, 0x0e, 303 - 0x8a, 0x19, 0x8a, 0x17, 0x8a, 0x17, 0x8a, 0x16, 304 - 0x8a, 0x15, 0x8a, 0x14, 0x8a, 0x13, 0x8a, 0x12, 305 - 0x8a, 0x11, 0x8a, 0x10, 0x8a, 0x0d, 0x8a, 0x0c, 306 - 0x8a, 0x0b, 0x8a, 0x0a, 0x8a, 0x09, 0x8a, 0x08, 307 - 0xf4, 0xeb, 0xee, 0xfd, 0x76, 0xf8, 0x2a, 0x38, 308 - 0x00, 0x00, 0x76, 0xf8, 0x2a, 0x5a, 0x00, 0x00, 309 - 0xe8, 0x01, 0x4e, 0x00, 0xfb, 0x80, 0x17, 0xd6, 310 - 0xf4, 0x95, 0xe8, 0x01, 0x80, 0xf8, 0x2a, 0x5b, 311 - 0x76, 0x00, 0x2a, 0x8f, 0xf9, 0x80, 0x16, 0xaa, 312 - 0x10, 0xf8, 0x2a, 0x5b, 0xf9, 0x80, 0x17, 0x5c, 313 - 0x10, 0xf8, 0x2a, 0x5b, 0xf9, 0x80, 0x17, 0x6f, 314 - 0xfb, 0x80, 0x16, 0x66, 0xf4, 0x95, 0xe8, 0x1a, 315 - 0xfb, 0x80, 0x16, 0x87, 0xf4, 0x95, 0xe8, 0x1a, 316 - 0xfb, 0x80, 0x16, 0x66, 0xf4, 0x95, 0xe8, 0x1b, 317 - 0xfb, 0x80, 0x16, 0x87, 0xf4, 0x95, 0xe8, 0x1b, 318 - 0xee, 0x03, 0xfc, 0x00, 0x4a, 0x11, 0xf4, 0x95, 319 - 0x13, 0x02, 0x88, 0x11, 0xe8, 0x00, 0xf8, 0x4d, 320 - 0x06, 0x6a, 0xf3, 0x10, 0x00, 0x01, 0x89, 0x1a, 321 - 0xf4, 0x95, 0xf0, 0x72, 0x06, 0x69, 0x1c, 0x91, 322 - 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0x88, 0x11, 323 - 0x12, 0x03, 0x11, 0x02, 0xf8, 0x45, 0x06, 0x79, 324 - 0xf0, 0x10, 0x00, 0x01, 0x88, 0x1a, 0xf4, 0x95, 325 - 0xf0, 0x72, 0x06, 0x78, 0x81, 0x91, 0x8a, 0x11, 326 - 0xfc, 0x00, 0x4a, 0x11, 0xf4, 0x95, 0x71, 0x02, 327 - 0x00, 0x11, 0x11, 0x03, 0x61, 0xf8, 0x00, 0x11, 328 - 0x00, 0x01, 0xf8, 0x30, 0x06, 0x91, 0xf6, 0xb8, 329 - 0x6f, 0xf8, 0x00, 0x11, 0x0c, 0x1f, 0x88, 0x11, 330 - 0xf3, 0xe8, 0xe8, 0xff, 0x18, 0x81, 0xf1, 0xa0, 331 - 0x81, 0x81, 0xf0, 0x73, 0x06, 0x9d, 0xf6, 0xb8, 332 - 0x6f, 0xf8, 0x00, 0x11, 0x0c, 0x1f, 0x88, 0x11, 333 - 0xf3, 0x30, 0x00, 0xff, 0xf0, 0x20, 0xff, 0x00, 334 - 0x18, 0x81, 0xf1, 0xa0, 0x81, 0x81, 0x8a, 0x11, 335 - 0xfc, 0x00, 0x4a, 0x11, 0xf4, 0x95, 0x11, 0x02, 336 - 0x61, 0xf8, 0x00, 0x0b, 0x00, 0x01, 0xf8, 0x20, 337 - 0x06, 0xb1, 0x49, 0x0b, 0xf6, 0x1f, 0x88, 0x11, 338 - 0xf4, 0x95, 0xf4, 0x95, 0x10, 0x81, 0xf2, 0x73, 339 - 0x06, 0xb8, 0xf0, 0x30, 0x00, 0xff, 0x49, 0x0b, 340 - 0xf6, 0x1f, 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, 341 - 0x12, 0x81, 0xf4, 0x78, 0x8a, 0x11, 0xfc, 0x00, 342 - 0x4a, 0x11, 0xf4, 0x95, 0x71, 0x02, 0x00, 0x12, 343 - 0x13, 0x03, 0x88, 0x11, 0xe8, 0x00, 0xf8, 0x4d, 344 - 0x06, 0xcc, 0xf3, 0x10, 0x00, 0x01, 0x89, 0x1a, 345 - 0xf4, 0x95, 0xf0, 0x72, 0x06, 0xcb, 0x11, 0x92, 346 - 0xf2, 0xc0, 0x81, 0x91, 0x8a, 0x11, 0xfc, 0x00, 347 - 0x88, 0x12, 0x12, 0x02, 0x71, 0x01, 0x00, 0x13, 348 - 0xf8, 0x45, 0x06, 0xdb, 0xf0, 0x10, 0x00, 0x01, 349 - 0x88, 0x1a, 0xf4, 0x95, 0xf0, 0x72, 0x06, 0xda, 350 - 0xe5, 0x98, 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfe, 351 - 0x88, 0x11, 0x11, 0x04, 0x10, 0x06, 0x71, 0x05, 352 - 0x00, 0x12, 0x61, 0xf8, 0x00, 0x12, 0x00, 0x01, 353 - 0xf8, 0x20, 0x06, 0xea, 0xf0, 0x00, 0x00, 0x01, 354 - 0xf6, 0xb8, 0xf0, 0x00, 0x00, 0x01, 0x6f, 0xf8, 355 - 0x00, 0x12, 0x0f, 0x1f, 0x48, 0x08, 0x81, 0x00, 356 - 0xf4, 0x7f, 0x80, 0x01, 0xf2, 0x74, 0x06, 0xba, 357 - 0xf4, 0x95, 0x48, 0x11, 0xee, 0x02, 0x8a, 0x11, 358 - 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfe, 0x88, 0x12, 359 - 0x11, 0x04, 0x10, 0x06, 0x71, 0x05, 0x00, 0x13, 360 - 0x61, 0xf8, 0x00, 0x13, 0x00, 0x01, 0xf8, 0x20, 361 - 0x07, 0x09, 0xf0, 0x00, 0x00, 0x01, 0xf0, 0x00, 362 - 0x00, 0x01, 0x88, 0x11, 0xf6, 0xb8, 0x6f, 0xf8, 363 - 0x00, 0x13, 0x0f, 0x1f, 0x81, 0x00, 0x48, 0x11, 364 - 0xf4, 0x7f, 0x80, 0x01, 0xf2, 0x74, 0x06, 0xce, 365 - 0xf4, 0x95, 0x48, 0x12, 0x48, 0x11, 0xf0, 0x30, 366 - 0xff, 0xfe, 0xee, 0x02, 0x8a, 0x11, 0xfc, 0x00, 367 - 0x4a, 0x11, 0x4a, 0x16, 0x4a, 0x17, 0xee, 0xfc, 368 - 0xf4, 0x95, 0x80, 0x02, 0x71, 0x08, 0x00, 0x16, 369 - 0x10, 0x09, 0x71, 0x0b, 0x00, 0x17, 0x80, 0x03, 370 - 0x71, 0x0a, 0x00, 0x11, 0x48, 0x17, 0xf8, 0x45, 371 - 0x07, 0x3f, 0x70, 0x00, 0x00, 0x11, 0x10, 0x03, 372 - 0xf0, 0x74, 0x06, 0x9f, 0x80, 0x01, 0x70, 0x00, 373 - 0x00, 0x16, 0x10, 0x02, 0xf0, 0x74, 0x06, 0x7b, 374 - 0x6d, 0x91, 0x6d, 0x96, 0x6c, 0xef, 0xff, 0xff, 375 - 0x07, 0x2f, 0xee, 0x04, 0x8a, 0x17, 0x8a, 0x16, 376 - 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfe, 377 - 0x10, 0xf8, 0x2a, 0xe8, 0x08, 0xf8, 0x2a, 0xe9, 378 - 0xf8, 0x45, 0x07, 0x64, 0x76, 0x00, 0x00, 0x01, 379 - 0x62, 0xf8, 0x2a, 0xe9, 0x00, 0x5e, 0xf2, 0x74, 380 - 0x12, 0x0b, 0xf0, 0x00, 0x30, 0x40, 0x72, 0x11, 381 - 0x2a, 0xe9, 0x77, 0x10, 0x00, 0x0f, 0xf5, 0xa9, 382 - 0xf8, 0x20, 0x07, 0x61, 0x6b, 0xf8, 0x2a, 0xe9, 383 - 0x00, 0x01, 0xf0, 0x73, 0x07, 0x64, 0x76, 0xf8, 384 - 0x2a, 0xe9, 0x00, 0x00, 0xee, 0x02, 0x8a, 0x11, 385 - 0xfc, 0x00, 0x4a, 0x11, 0x88, 0x11, 0xe8, 0x00, 386 - 0x75, 0xf8, 0x00, 0x08, 0x00, 0x08, 0xe8, 0x00, 387 - 0x75, 0xf8, 0x00, 0x08, 0x00, 0x09, 0xf6, 0xb8, 388 - 0xf4, 0x95, 0xf0, 0x20, 0xfc, 0x3f, 0x75, 0xf8, 389 - 0x00, 0x08, 0x00, 0x0d, 0xf0, 0x20, 0x0c, 0x30, 390 - 0x75, 0xf8, 0x00, 0x08, 0x00, 0x0c, 0x76, 0xf8, 391 - 0x2a, 0xe8, 0x00, 0x00, 0x76, 0xf8, 0x2a, 0xe9, 392 - 0x00, 0x00, 0x6c, 0x81, 0x07, 0x92, 0x76, 0xf8, 393 - 0x2a, 0xea, 0x00, 0x00, 0xfb, 0x80, 0x16, 0x76, 394 - 0xf4, 0x95, 0xe8, 0x10, 0xe8, 0x00, 0x75, 0xf8, 395 - 0x00, 0x08, 0x00, 0x00, 0xf0, 0x73, 0x07, 0xa8, 396 - 0x76, 0xf8, 0x2a, 0xea, 0x00, 0x01, 0xfb, 0x80, 397 - 0x16, 0x66, 0xf4, 0x95, 0xe8, 0x10, 0xfb, 0x80, 398 - 0x16, 0x87, 0xf4, 0x95, 0xe8, 0x10, 0xe8, 0x00, 399 - 0x75, 0xf8, 0x00, 0x08, 0x00, 0x00, 0xf6, 0xb8, 400 - 0xf4, 0x95, 0xf0, 0x20, 0xff, 0xff, 0x75, 0xf8, 401 - 0x00, 0x08, 0x00, 0x00, 0x8a, 0x11, 0xfc, 0x00, 402 - 0xf4, 0x95, 0x4a, 0x08, 0x4a, 0x09, 0x4a, 0x0a, 403 - 0x4a, 0x06, 0x4a, 0x07, 0x4a, 0x1d, 0x68, 0xf8, 404 - 0x00, 0x07, 0x7d, 0x3f, 0x69, 0xf8, 0x00, 0x07, 405 - 0x40, 0x00, 0x68, 0xf8, 0x00, 0x1d, 0xff, 0xfc, 406 - 0x10, 0xf8, 0x2a, 0xea, 0xf8, 0x45, 0x07, 0xe1, 407 - 0x10, 0xf8, 0x2a, 0xe8, 0xf0, 0x00, 0x00, 0x01, 408 - 0xf0, 0x30, 0x00, 0x0f, 0x80, 0xf8, 0x2a, 0xe8, 409 - 0x10, 0xf8, 0x2a, 0xe8, 0xf8, 0x44, 0x07, 0xd6, 410 - 0xf6, 0xb8, 0xf4, 0x95, 0xf0, 0x20, 0xfc, 0x3f, 411 - 0x75, 0xf8, 0x00, 0x08, 0x00, 0x0d, 0xf0, 0x20, 412 - 0x0c, 0x30, 0x75, 0xf8, 0x00, 0x08, 0x00, 0x0c, 413 - 0xe8, 0x00, 0x75, 0xf8, 0x00, 0x08, 0x00, 0x00, 414 - 0xf6, 0xb8, 0xf4, 0x95, 0xf0, 0x20, 0xff, 0xff, 415 - 0x75, 0xf8, 0x00, 0x08, 0x00, 0x00, 0x8a, 0x1d, 416 - 0x8a, 0x07, 0x8a, 0x06, 0x8a, 0x0a, 0x8a, 0x09, 417 - 0x8a, 0x08, 0xf4, 0xeb, 0xee, 0xff, 0xf2, 0x74, 418 - 0x07, 0x67, 0xf4, 0x95, 0xe8, 0x01, 0xee, 0x01, 419 - 0xfc, 0x00, 0x4a, 0x07, 0x4a, 0x1d, 0x68, 0xf8, 420 - 0x00, 0x07, 0x7d, 0x3f, 0x69, 0xf8, 0x00, 0x07, 421 - 0x40, 0x00, 0x68, 0xf8, 0x00, 0x1d, 0xff, 0xfc, 422 - 0x8a, 0x1d, 0x8a, 0x07, 0xf4, 0xeb, 0x4a, 0x11, 423 - 0x77, 0x11, 0x00, 0x28, 0x76, 0x81, 0x24, 0x00, 424 - 0xe8, 0x00, 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01, 425 - 0xf2, 0x74, 0x07, 0x67, 0xf4, 0x95, 0xe8, 0x00, 426 - 0x77, 0x11, 0x00, 0x1d, 0x68, 0x81, 0x00, 0x7f, 427 - 0xf6, 0xb8, 0xf4, 0x95, 0xf0, 0x20, 0xff, 0x80, 428 - 0x77, 0x11, 0x00, 0x1d, 0xf0, 0x30, 0x01, 0x00, 429 - 0x1a, 0x81, 0x80, 0x81, 0xf0, 0x74, 0x0a, 0x33, 430 - 0xf0, 0x74, 0x11, 0xac, 0xf9, 0x80, 0x13, 0x25, 431 - 0xf9, 0x80, 0x16, 0x53, 0xf9, 0x80, 0x17, 0x82, 432 - 0xf0, 0x74, 0x06, 0x2f, 0xf9, 0x80, 0x14, 0xb2, 433 - 0xf9, 0x80, 0x19, 0x10, 0xf0, 0x74, 0x0d, 0xe3, 434 - 0xf0, 0x74, 0x07, 0xe8, 0xf0, 0x74, 0x02, 0x36, 435 - 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0x60, 0xf8, 436 - 0x27, 0x7b, 0xff, 0xff, 0xf8, 0x30, 0x08, 0x39, 437 - 0x71, 0xf8, 0x27, 0x7b, 0x27, 0x79, 0x60, 0xf8, 438 - 0x27, 0x79, 0xff, 0xff, 0xf8, 0x30, 0x08, 0xb2, 439 - 0x10, 0xf8, 0x29, 0x86, 0x08, 0xf8, 0x27, 0x79, 440 - 0xf0, 0x30, 0x7f, 0xff, 0x88, 0x11, 0xf4, 0x95, 441 - 0x77, 0x10, 0x40, 0x00, 0xf6, 0xa9, 0xf8, 0x30, 442 - 0x08, 0x58, 0x10, 0xf8, 0x27, 0x79, 0x08, 0xf8, 443 - 0x27, 0x7a, 0xf0, 0x30, 0x7f, 0xff, 0x88, 0x11, 444 - 0xf4, 0x95, 0x77, 0x10, 0x40, 0x00, 0xf6, 0xa9, 445 - 0xf8, 0x20, 0x08, 0x63, 0x76, 0xf8, 0x27, 0x79, 446 - 0xff, 0xff, 0x76, 0xf8, 0x27, 0x7b, 0xff, 0xff, 447 - 0xf7, 0xb8, 0xf2, 0x73, 0x08, 0xd9, 0xf0, 0x20, 448 - 0xff, 0xff, 0xf6, 0xb8, 0x56, 0xf8, 0x27, 0x74, 449 - 0xf0, 0xf9, 0x88, 0x11, 0x56, 0xf8, 0x27, 0x72, 450 - 0xf0, 0xf9, 0x88, 0x12, 0xf4, 0x95, 0xf4, 0x95, 451 - 0xe7, 0x20, 0xf4, 0xa9, 0xf8, 0x30, 0x08, 0x8f, 452 - 0xf1, 0x20, 0x27, 0x7c, 0x48, 0x11, 0xf6, 0x00, 453 - 0x88, 0x13, 0xf4, 0x95, 0xf4, 0x95, 0x10, 0x83, 454 - 0x08, 0xf8, 0x27, 0x79, 0xf0, 0x30, 0x7f, 0xff, 455 - 0x88, 0x13, 0xf4, 0x95, 0x77, 0x10, 0x40, 0x00, 456 - 0xf5, 0xab, 0xf8, 0x30, 0x08, 0x8f, 0x6d, 0x91, 457 - 0x48, 0x11, 0xf0, 0x30, 0x01, 0xff, 0x88, 0x11, 458 - 0xf4, 0x95, 0xe7, 0x20, 0xf7, 0xa9, 0xf8, 0x30, 459 - 0x08, 0x74, 0x6d, 0x89, 0x48, 0x11, 0xf0, 0x30, 460 - 0x01, 0xff, 0xf0, 0xe7, 0xf4, 0x95, 0x48, 0x08, 461 - 0x4e, 0xf8, 0x27, 0x74, 0x48, 0x08, 0xf1, 0xf9, 462 - 0x89, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x71, 0xe1, 463 - 0x27, 0x7c, 0x27, 0x7a, 0x60, 0xf8, 0x27, 0x7b, 464 - 0xff, 0xff, 0xf8, 0x30, 0x08, 0xab, 0x48, 0x08, 465 - 0x4e, 0xf8, 0x27, 0x72, 0x76, 0xf8, 0x27, 0x7b, 466 - 0xff, 0xff, 0x76, 0xf8, 0x27, 0x79, 0xff, 0xff, 467 - 0xf2, 0x73, 0x08, 0xd9, 0xf4, 0x95, 0xe8, 0x00, 468 - 0x44, 0xf8, 0x27, 0x73, 0x40, 0xf8, 0x27, 0x75, 469 - 0x82, 0xf8, 0x00, 0x11, 0xf4, 0x95, 0x77, 0x10, 470 - 0x80, 0x00, 0xf6, 0xa9, 0xf8, 0x20, 0x08, 0xd8, 471 - 0xf6, 0xb8, 0x10, 0xf8, 0x27, 0x73, 0xf0, 0x00, 472 - 0x80, 0x00, 0x48, 0x08, 0x4e, 0xf8, 0x27, 0x74, 473 - 0x48, 0x08, 0xf0, 0xf9, 0x88, 0x11, 0xf4, 0x95, 474 - 0xf4, 0x95, 0x71, 0xe1, 0x27, 0x7c, 0x27, 0x7a, 475 - 0xf7, 0xb8, 0x57, 0xf8, 0x27, 0x74, 0xf0, 0x62, 476 - 0xff, 0xff, 0xf0, 0x40, 0xff, 0x80, 0xf2, 0x80, 477 - 0x4e, 0xf8, 0x27, 0x74, 0xe8, 0x00, 0x8a, 0x11, 478 - 0xfc, 0x00, 0x4a, 0x11, 0x4a, 0x16, 0xee, 0xfb, 479 - 0x11, 0xf8, 0x27, 0x71, 0x09, 0xf8, 0x27, 0x73, 480 - 0x89, 0x11, 0x88, 0x10, 0xf4, 0x95, 0xf4, 0x95, 481 - 0xf6, 0xa9, 0xf8, 0x20, 0x08, 0xed, 0xf2, 0x73, 482 - 0x09, 0x0e, 0xf4, 0x95, 0xe8, 0x00, 0xf6, 0x20, 483 - 0x76, 0x00, 0x00, 0x41, 0xf0, 0x74, 0x12, 0xee, 484 - 0x88, 0x16, 0xf4, 0x95, 0xf7, 0xb8, 0x6d, 0x96, 485 - 0x10, 0xf8, 0x00, 0x16, 0xf8, 0x47, 0x09, 0x0a, 486 - 0xe7, 0x61, 0x76, 0x00, 0x00, 0x00, 0x76, 0x01, 487 - 0x00, 0x80, 0x76, 0x02, 0x00, 0xff, 0x76, 0x03, 488 - 0x00, 0x00, 0xf2, 0x74, 0x0c, 0xb9, 0xf4, 0x95, 489 - 0xe8, 0x00, 0x6c, 0xe9, 0xff, 0xff, 0x08, 0xfb, 490 - 0x73, 0x16, 0x00, 0x0e, 0xf0, 0x66, 0x00, 0x41, 491 - 0xee, 0x05, 0x8a, 0x16, 0x8a, 0x11, 0xfc, 0x00, 492 - 0x4a, 0x11, 0xf4, 0x95, 0x71, 0x02, 0x00, 0x13, 493 - 0xf6, 0xb8, 0x77, 0x11, 0x7f, 0xff, 0x57, 0xf8, 494 - 0x27, 0x72, 0x48, 0x11, 0xf2, 0x80, 0xf0, 0x00, 495 - 0x80, 0x00, 0x88, 0x11, 0xf6, 0x40, 0xf0, 0xe0, 496 - 0xf1, 0xf1, 0xe8, 0x01, 0xf2, 0x80, 0x80, 0xf8, 497 - 0x27, 0x78, 0x77, 0x12, 0x80, 0x00, 0x57, 0xf8, 498 - 0x27, 0x72, 0x48, 0x12, 0xf2, 0x80, 0x88, 0x12, 499 - 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x82, 0x09, 0x38, 500 - 0xe8, 0x00, 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01, 501 - 0xf0, 0x73, 0x09, 0x3d, 0xf0, 0x20, 0x80, 0x01, 502 - 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01, 0x70, 0x81, 503 - 0x00, 0x13, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 504 - 0xf0, 0x30, 0x7f, 0xff, 0x11, 0xf8, 0x29, 0x86, 505 - 0xf5, 0x20, 0xf3, 0x30, 0x7f, 0xff, 0x89, 0x11, 506 - 0xf4, 0x95, 0x77, 0x10, 0x40, 0x00, 0xf6, 0xa9, 507 - 0xf8, 0x20, 0x09, 0x54, 0xf2, 0x73, 0x09, 0x67, 508 - 0xf4, 0x95, 0xe8, 0x02, 0x6f, 0xf8, 0x27, 0x7a, 509 - 0x0d, 0x20, 0xf3, 0x30, 0x7f, 0xff, 0x89, 0x11, 510 - 0xf4, 0x95, 0x77, 0x10, 0x40, 0x00, 0xf6, 0xa9, 511 - 0xf8, 0x20, 0x09, 0x64, 0xf2, 0x73, 0x09, 0x67, 512 - 0xf4, 0x95, 0xe8, 0x01, 0x80, 0xf8, 0x27, 0x7b, 513 - 0xe8, 0x00, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 514 - 0x11, 0xf8, 0x29, 0x86, 0xf5, 0x20, 0xf3, 0x30, 515 - 0x7f, 0xff, 0x89, 0x11, 0xf4, 0x95, 0x77, 0x10, 516 - 0x40, 0x00, 0xf6, 0xa9, 0xf8, 0x20, 0x09, 0x7a, 517 - 0xf2, 0x73, 0x09, 0x8d, 0xf4, 0x95, 0xe8, 0x02, 518 - 0x6f, 0xf8, 0x27, 0x7a, 0x0d, 0x20, 0xf3, 0x30, 519 - 0x7f, 0xff, 0x89, 0x11, 0xf4, 0x95, 0x77, 0x10, 520 - 0x40, 0x00, 0xf6, 0xa9, 0xf8, 0x20, 0x09, 0x8a, 521 - 0xf2, 0x73, 0x09, 0x8d, 0xf4, 0x95, 0xe8, 0x01, 522 - 0x80, 0xf8, 0x27, 0x79, 0xe8, 0x00, 0x8a, 0x11, 523 - 0xfc, 0x00, 0x4a, 0x11, 0xf4, 0x95, 0x71, 0x02, 524 - 0x00, 0x12, 0x88, 0x11, 0xf6, 0xb8, 0x57, 0xf8, 525 - 0x27, 0x72, 0xf0, 0x20, 0x7f, 0xff, 0xf2, 0x80, 526 - 0xf0, 0x00, 0x80, 0x00, 0x80, 0x81, 0x57, 0xf8, 527 - 0x27, 0x72, 0xe8, 0x01, 0xf3, 0xf1, 0xf2, 0x80, 528 - 0x80, 0xf8, 0x27, 0x78, 0x77, 0x11, 0x80, 0x00, 529 - 0x48, 0x11, 0x57, 0xf8, 0x27, 0x72, 0xf2, 0x80, 530 - 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x81, 531 - 0x09, 0xb5, 0xe8, 0x00, 0x75, 0xf8, 0x00, 0x08, 532 - 0x00, 0x01, 0xf0, 0x73, 0x09, 0xba, 0xf0, 0x20, 533 - 0x80, 0x01, 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01, 534 - 0x45, 0xf8, 0x27, 0x71, 0x43, 0xf8, 0x27, 0x73, 535 - 0x83, 0xf8, 0x00, 0x11, 0xf4, 0x95, 0xe7, 0x20, 536 - 0xf6, 0xa9, 0xf8, 0x30, 0x09, 0xc9, 0xf2, 0x73, 537 - 0x09, 0xe4, 0x77, 0x12, 0x00, 0x00, 0x57, 0xf8, 538 - 0x27, 0x72, 0xf0, 0x20, 0x7f, 0xff, 0xf2, 0x80, 539 - 0x49, 0x12, 0xf5, 0x00, 0xf3, 0x00, 0x80, 0x00, 540 - 0x61, 0xf8, 0x00, 0x0b, 0x80, 0x00, 0xf8, 0x30, 541 - 0x09, 0xdc, 0xf1, 0x20, 0x80, 0x00, 0xf5, 0x20, 542 - 0x89, 0x12, 0xf4, 0x95, 0x48, 0x12, 0x6f, 0xf8, 543 - 0x27, 0x73, 0x0d, 0x00, 0xf4, 0x95, 0x49, 0x0b, 544 - 0x4f, 0xf8, 0x27, 0x72, 0x8a, 0x11, 0xfe, 0x00, 545 - 0x48, 0x12, 0xf4, 0x95, 0x4a, 0x11, 0x4a, 0x16, 546 - 0x4a, 0x17, 0xee, 0xfc, 0xf4, 0x95, 0x71, 0x08, 547 - 0x00, 0x16, 0x88, 0x17, 0xf0, 0x74, 0x08, 0x30, 548 - 0x48, 0x18, 0x70, 0x00, 0x00, 0x16, 0xf2, 0x74, 549 - 0x09, 0x8f, 0xf0, 0x00, 0x00, 0x02, 0x88, 0x11, 550 - 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x81, 0x0a, 0x0a, 551 - 0xf2, 0x74, 0x08, 0xdb, 0xf4, 0x95, 0x48, 0x16, 552 - 0x48, 0x18, 0x70, 0x00, 0x00, 0x16, 0xf2, 0x74, 553 - 0x09, 0x8f, 0xf0, 0x00, 0x00, 0x02, 0x88, 0x11, 554 - 0x10, 0x02, 0x70, 0x01, 0x00, 0x11, 0x80, 0x00, 555 - 0xf2, 0x74, 0x06, 0xce, 0xf4, 0x95, 0x48, 0x17, 556 - 0x49, 0x11, 0x48, 0x17, 0xf6, 0x00, 0x88, 0x17, 557 - 0xe7, 0x60, 0xf5, 0xa9, 0xf8, 0x20, 0x0a, 0x2d, 558 - 0x48, 0x16, 0xf6, 0x20, 0x88, 0x11, 0x48, 0x18, 559 - 0x70, 0x00, 0x00, 0x11, 0xf2, 0x74, 0x09, 0x8f, 560 - 0xf0, 0x00, 0x00, 0x02, 0x88, 0x11, 0x70, 0x01, 561 - 0x00, 0x11, 0x10, 0x02, 0x80, 0x00, 0xf2, 0x74, 562 - 0x06, 0xce, 0xf4, 0x95, 0x48, 0x17, 0xee, 0x04, 563 - 0x48, 0x16, 0x8a, 0x17, 0x8a, 0x16, 0x8a, 0x11, 564 - 0xfc, 0x00, 0xee, 0xfd, 0xe8, 0x00, 0x4e, 0xf8, 565 - 0x27, 0x70, 0xe8, 0x00, 0x4e, 0xf8, 0x27, 0x72, 566 - 0xe8, 0x00, 0x4e, 0xf8, 0x27, 0x74, 0xe8, 0x00, 567 - 0x4e, 0xf8, 0x27, 0x76, 0x76, 0xf8, 0x27, 0x79, 568 - 0xff, 0xff, 0x76, 0xf8, 0x27, 0x7a, 0x00, 0x00, 569 - 0x76, 0xf8, 0x27, 0x7b, 0xff, 0xff, 0x76, 0xf8, 570 - 0x27, 0x78, 0x00, 0x00, 0xe8, 0x00, 0x75, 0xf8, 571 - 0x00, 0x08, 0x00, 0x01, 0x76, 0x00, 0x00, 0x00, 572 - 0x76, 0x01, 0x02, 0x00, 0xf2, 0x74, 0x12, 0xdc, 573 - 0xf0, 0x20, 0x27, 0x7c, 0xee, 0x03, 0xfc, 0x00, 574 - 0x4a, 0x11, 0xee, 0xfc, 0xf4, 0x95, 0x4e, 0x00, 575 - 0x77, 0x12, 0x7f, 0xff, 0xf6, 0xb8, 0x49, 0x12, 576 - 0xf1, 0x80, 0xf3, 0x00, 0x80, 0x00, 0x89, 0x12, 577 - 0xf0, 0xe0, 0xf1, 0xf1, 0x4f, 0x02, 0xe9, 0x01, 578 - 0xf4, 0x95, 0x48, 0x0b, 0xf5, 0x40, 0x56, 0x02, 579 - 0xf1, 0x80, 0x81, 0xf8, 0x27, 0x78, 0x77, 0x11, 580 - 0x80, 0x00, 0x56, 0x00, 0x49, 0x11, 0xf1, 0x80, 581 - 0x89, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x81, 582 - 0x0a, 0x81, 0xe8, 0x00, 0x75, 0xf8, 0x00, 0x08, 583 - 0x00, 0x01, 0xf0, 0x73, 0x0a, 0x86, 0xf0, 0x20, 584 - 0x80, 0x01, 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01, 585 - 0x10, 0x82, 0xee, 0x04, 0x8a, 0x11, 0xfc, 0x00, 586 - 0x4a, 0x11, 0xee, 0xfe, 0xf4, 0x95, 0x4e, 0x00, 587 - 0x77, 0x11, 0x7f, 0xff, 0xf6, 0xb8, 0x49, 0x11, 588 - 0xf1, 0x80, 0xf3, 0x00, 0x80, 0x00, 0x89, 0x11, 589 - 0xf0, 0xe0, 0xf1, 0xf1, 0xe8, 0x01, 0xf2, 0x80, 590 - 0x80, 0xf8, 0x27, 0x78, 0x56, 0x00, 0xf1, 0x20, 591 - 0x80, 0x00, 0xf1, 0x80, 0xf4, 0x95, 0x49, 0x0b, 592 - 0xf8, 0x4d, 0x0a, 0xab, 0xf0, 0x20, 0x80, 0x01, 593 - 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01, 0xf0, 0x73, 594 - 0x0a, 0xaf, 0xe8, 0x00, 0x75, 0xf8, 0x00, 0x08, 595 - 0x00, 0x01, 0xee, 0x02, 0x48, 0x11, 0x8a, 0x11, 596 - 0xfc, 0x00, 0x4a, 0x11, 0x88, 0x12, 0x13, 0x02, 597 - 0x77, 0x11, 0x00, 0x00, 0xf8, 0x4d, 0x0a, 0xcb, 598 - 0xf3, 0x10, 0x00, 0x01, 0x89, 0x1a, 0xf4, 0x95, 599 - 0xf0, 0x72, 0x0a, 0xca, 0x48, 0x11, 0x1c, 0xf8, 600 - 0x29, 0x7e, 0x88, 0x11, 0x11, 0xf8, 0x29, 0x7e, 601 - 0xf2, 0x00, 0x00, 0x01, 0x80, 0xf8, 0x29, 0x7e, 602 - 0x81, 0x92, 0x48, 0x11, 0x8a, 0x11, 0xfc, 0x00, 603 - 0x4a, 0x11, 0xf4, 0x95, 0x71, 0x02, 0x00, 0x11, 604 - 0x88, 0x12, 0xf6, 0xb8, 0xf0, 0x20, 0x7f, 0xff, 605 - 0x57, 0xf8, 0x27, 0x70, 0xf2, 0x80, 0xf0, 0x00, 606 - 0x80, 0x00, 0x80, 0x82, 0x57, 0xf8, 0x27, 0x70, 607 - 0xe8, 0x01, 0xf3, 0xf1, 0xf2, 0x80, 0x80, 0xf8, 608 - 0x27, 0x78, 0x77, 0x12, 0x80, 0x00, 0x48, 0x12, 609 - 0x57, 0xf8, 0x27, 0x70, 0xf2, 0x80, 0x88, 0x12, 610 - 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x82, 0x0a, 0xf4, 611 - 0xe8, 0x00, 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01, 612 - 0xf0, 0x73, 0x0a, 0xf9, 0xf0, 0x20, 0x80, 0x01, 613 - 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01, 0x45, 0xf8, 614 - 0x27, 0x75, 0xe7, 0x10, 0x43, 0xf8, 0x27, 0x71, 615 - 0x83, 0xf8, 0x00, 0x12, 0x6d, 0xe8, 0x00, 0x04, 616 - 0x6d, 0x8a, 0xf6, 0xaa, 0xf8, 0x30, 0x0b, 0x0a, 617 - 0xf2, 0x73, 0x0b, 0x25, 0x77, 0x11, 0x00, 0x00, 618 - 0x57, 0xf8, 0x27, 0x70, 0xf0, 0x20, 0x7f, 0xff, 619 - 0xf2, 0x80, 0x49, 0x11, 0xf5, 0x00, 0xf3, 0x00, 620 - 0x80, 0x00, 0x61, 0xf8, 0x00, 0x0b, 0x80, 0x00, 621 - 0xf8, 0x30, 0x0b, 0x1d, 0xf1, 0x20, 0x80, 0x00, 622 - 0xf5, 0x20, 0x89, 0x11, 0xf4, 0x95, 0x48, 0x11, 623 - 0x6f, 0xf8, 0x27, 0x71, 0x0d, 0x00, 0xf4, 0x95, 624 - 0x49, 0x0b, 0x4f, 0xf8, 0x27, 0x70, 0x48, 0x11, 625 - 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0x4a, 0x16, 626 - 0x4a, 0x17, 0xee, 0xf0, 0x88, 0x17, 0x10, 0x17, 627 - 0x80, 0x05, 0x10, 0x16, 0x80, 0x06, 0x10, 0x15, 628 - 0x80, 0x07, 0x71, 0x14, 0x00, 0x11, 0x10, 0x05, 629 - 0xf0, 0x30, 0x00, 0x01, 0x88, 0x10, 0x10, 0x06, 630 - 0xf0, 0x30, 0x00, 0x01, 0x80, 0x08, 0x49, 0x11, 631 - 0x10, 0x05, 0xf6, 0x01, 0x80, 0x09, 0x10, 0x06, 632 - 0x61, 0xf8, 0x00, 0x08, 0x00, 0x01, 0xf8, 0x20, 633 - 0x0b, 0x4b, 0x10, 0x09, 0xf0, 0x00, 0x00, 0x01, 634 - 0x80, 0x09, 0x71, 0x08, 0x00, 0x12, 0xf4, 0xaa, 635 - 0xf8, 0x30, 0x0b, 0x54, 0x10, 0x09, 0xf0, 0x00, 636 - 0x00, 0x01, 0x80, 0x09, 0x12, 0x09, 0x49, 0x11, 637 - 0xf4, 0x7f, 0x80, 0x09, 0xf6, 0x20, 0x80, 0x0a, 638 - 0x56, 0xf8, 0x27, 0x70, 0x4e, 0x0c, 0x10, 0x09, 639 - 0x80, 0x00, 0x48, 0x18, 0xf2, 0x74, 0x0a, 0xce, 640 - 0xf0, 0x00, 0x00, 0x04, 0x88, 0x16, 0xf4, 0x95, 641 - 0xf4, 0x95, 0x6c, 0x86, 0x0b, 0x6d, 0xf2, 0x73, 642 - 0x0c, 0x59, 0xf4, 0x95, 0xe8, 0x00, 0xf6, 0xb8, 643 - 0xf4, 0x95, 0x56, 0x0c, 0xf0, 0xf9, 0x88, 0x12, 644 - 0xf4, 0x95, 0xf4, 0x95, 0x70, 0xe2, 0x27, 0x7c, 645 - 0x29, 0x86, 0xe8, 0x00, 0x80, 0x0e, 0x48, 0x11, 646 - 0xf8, 0x45, 0x0b, 0xcc, 0x77, 0x10, 0x00, 0x01, 647 - 0xf4, 0xa9, 0xf8, 0x30, 0x0b, 0x89, 0x6c, 0xe1, 648 - 0xff, 0xfd, 0x0b, 0x8b, 0x10, 0xe7, 0x00, 0x02, 649 - 0x80, 0x0e, 0xf0, 0x73, 0x0b, 0x8b, 0x10, 0x87, 650 - 0x80, 0x0e, 0xe7, 0x10, 0xf5, 0xae, 0xf8, 0x20, 651 - 0x0b, 0xb2, 0x70, 0x00, 0x00, 0x17, 0x70, 0x01, 652 - 0x00, 0x16, 0x10, 0x04, 0xf0, 0x74, 0x06, 0xce, 653 - 0x48, 0x17, 0x49, 0x16, 0xf6, 0x00, 0x88, 0x17, 654 - 0x48, 0x11, 0xf6, 0x20, 0x88, 0x11, 0x10, 0x09, 655 - 0xf6, 0x20, 0x80, 0x00, 0x48, 0x18, 0xf2, 0x74, 656 - 0x0a, 0xce, 0xf0, 0x00, 0x00, 0x04, 0x88, 0x16, 657 - 0x10, 0x04, 0x70, 0x00, 0x00, 0x17, 0x70, 0x01, 658 - 0x00, 0x11, 0xf0, 0x74, 0x06, 0xce, 0x48, 0x11, 659 - 0x00, 0x04, 0x80, 0x04, 0xf0, 0x73, 0x0b, 0xbc, 660 - 0x70, 0x00, 0x00, 0x17, 0x70, 0x01, 0x00, 0x11, 661 - 0x10, 0x04, 0xf0, 0x74, 0x06, 0xce, 0x48, 0x11, 662 - 0x00, 0x04, 0x80, 0x04, 0x49, 0x11, 0x48, 0x16, 663 - 0xf6, 0x20, 0x88, 0x16, 0xf4, 0x95, 0xf4, 0x95, 664 - 0x6c, 0x86, 0x0b, 0xcc, 0x10, 0x0a, 0x80, 0x00, 665 - 0x48, 0x18, 0xf2, 0x74, 0x0a, 0xce, 0xf0, 0x00, 666 - 0x00, 0x04, 0x88, 0x16, 0x12, 0x0a, 0xf8, 0x45, 667 - 0x0c, 0x33, 0x71, 0x0a, 0x00, 0x10, 0xf4, 0xae, 668 - 0xf8, 0x30, 0x0c, 0x1c, 0x48, 0x16, 0xf0, 0xe1, 669 - 0x88, 0x11, 0x12, 0x08, 0xf8, 0x45, 0x0b, 0xdb, 670 - 0x6d, 0x89, 0x12, 0x07, 0xf8, 0x45, 0x0b, 0xe9, 671 - 0x10, 0x07, 0x80, 0x00, 0x70, 0x02, 0x00, 0x11, 672 - 0x10, 0x06, 0x80, 0x01, 0x10, 0x04, 0xf0, 0x74, 673 - 0x06, 0xdc, 0xf0, 0x73, 0x0b, 0xef, 0x48, 0x11, 674 - 0x6f, 0x00, 0x0c, 0x9f, 0x10, 0x04, 0xf0, 0x74, 675 - 0x0a, 0xb3, 0x11, 0x0e, 0xf1, 0xc0, 0x81, 0x0e, 676 - 0x10, 0x06, 0x49, 0x11, 0xf6, 0x00, 0x80, 0x06, 677 - 0x10, 0x05, 0xf6, 0x20, 0x88, 0x11, 0xf0, 0x00, 678 - 0x00, 0x01, 0x48, 0x08, 0x6f, 0x00, 0x0c, 0x9f, 679 - 0x48, 0x18, 0xf2, 0x74, 0x0a, 0xce, 0xf0, 0x00, 680 - 0x00, 0x04, 0x12, 0x07, 0xf8, 0x45, 0x0c, 0x11, 681 - 0x10, 0x07, 0x80, 0x00, 0x70, 0x02, 0x00, 0x11, 682 - 0x10, 0x06, 0x80, 0x01, 0x10, 0x04, 0xf0, 0x74, 683 - 0x06, 0xdc, 0xf0, 0x73, 0x0c, 0x17, 0x48, 0x11, 684 - 0x6f, 0x00, 0x0c, 0x9f, 0x10, 0x04, 0xf0, 0x74, 685 - 0x0a, 0xb3, 0x11, 0x0e, 0xf1, 0xc0, 0x81, 0x0e, 686 - 0xf0, 0x73, 0x0c, 0x33, 0x12, 0x07, 0xf8, 0x45, 687 - 0x0c, 0x2a, 0x10, 0x07, 0x80, 0x00, 0x10, 0x06, 688 - 0x80, 0x01, 0x10, 0x05, 0x80, 0x02, 0x10, 0x04, 689 - 0xf0, 0x74, 0x06, 0xdc, 0xf0, 0x73, 0x0c, 0x30, 690 - 0x12, 0x05, 0x6f, 0x00, 0x0c, 0x9f, 0x10, 0x04, 691 - 0xf0, 0x74, 0x0a, 0xb3, 0x11, 0x0e, 0xf1, 0xc0, 692 - 0x81, 0x0e, 0x76, 0x00, 0x00, 0x01, 0x48, 0x18, 693 - 0xf2, 0x74, 0x0a, 0xce, 0xf0, 0x00, 0x00, 0x04, 694 - 0x71, 0x04, 0x00, 0x11, 0x70, 0x81, 0x29, 0x86, 695 - 0x10, 0x0e, 0x1c, 0xf8, 0x29, 0x86, 0x80, 0x0e, 696 - 0x76, 0x00, 0x00, 0x01, 0x48, 0x18, 0xf2, 0x74, 697 - 0x0a, 0xce, 0xf0, 0x00, 0x00, 0x04, 0x10, 0x0e, 698 - 0x71, 0x04, 0x00, 0x11, 0x80, 0x81, 0x10, 0xf8, 699 - 0x29, 0x86, 0xf0, 0x00, 0x00, 0x01, 0xf0, 0x30, 700 - 0x7f, 0xff, 0x80, 0xf8, 0x29, 0x86, 0x10, 0x09, 701 - 0xf0, 0x00, 0x00, 0x02, 0x80, 0x09, 0xee, 0x10, 702 - 0x8a, 0x17, 0x8a, 0x16, 0x8a, 0x11, 0xfc, 0x00, 703 - 0x10, 0xf8, 0x27, 0x75, 0x08, 0xf8, 0x27, 0x71, 704 - 0xf0, 0x10, 0x00, 0x01, 0x48, 0x08, 0xfc, 0x00, 705 - 0x4a, 0x11, 0x4a, 0x16, 0xee, 0xff, 0xf4, 0x95, 706 - 0x71, 0x04, 0x00, 0x16, 0xf0, 0x00, 0x00, 0x01, 707 - 0x48, 0x08, 0x4e, 0xf8, 0x29, 0x7c, 0x6d, 0xee, 708 - 0xff, 0xfd, 0x48, 0x16, 0xf8, 0x45, 0x0c, 0x99, 709 - 0x56, 0xf8, 0x29, 0x7c, 0xf0, 0x74, 0x0a, 0x5a, 710 - 0x88, 0x11, 0x10, 0xf8, 0x29, 0x7d, 0xf0, 0x00, 711 - 0x00, 0x01, 0x48, 0x08, 0x4e, 0xf8, 0x29, 0x7c, 712 - 0x10, 0xf8, 0x29, 0x82, 0xf0, 0x00, 0x00, 0x01, 713 - 0x88, 0x10, 0xf4, 0x95, 0xf4, 0x95, 0xf4, 0xa9, 714 - 0xfa, 0x30, 0x0c, 0x96, 0x80, 0xf8, 0x29, 0x82, 715 - 0x56, 0xf8, 0x29, 0x80, 0xf0, 0x00, 0x00, 0x01, 716 - 0x4e, 0xf8, 0x29, 0x80, 0x73, 0x11, 0x29, 0x82, 717 - 0x6c, 0xee, 0xff, 0xff, 0x0c, 0x76, 0xee, 0x01, 718 - 0x8a, 0x16, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 719 - 0x76, 0xf8, 0x29, 0x84, 0x00, 0x00, 0x76, 0xf8, 720 - 0x29, 0x85, 0x00, 0x01, 0xe8, 0x00, 0x4e, 0xf8, 721 - 0x2a, 0x0c, 0x76, 0xf8, 0x29, 0x86, 0x00, 0x00, 722 - 0x76, 0xf8, 0x29, 0x87, 0x00, 0x00, 0x77, 0x11, 723 - 0x29, 0x88, 0x76, 0x81, 0xaa, 0xaa, 0x76, 0xe1, 724 - 0x00, 0x01, 0xaa, 0xaa, 0x76, 0xe1, 0x00, 0x02, 725 - 0x00, 0x00, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 726 - 0xee, 0xfc, 0xf4, 0x95, 0x71, 0x06, 0x00, 0x14, 727 - 0x71, 0x07, 0x00, 0x13, 0x71, 0x08, 0x00, 0x12, 728 - 0x71, 0x09, 0x00, 0x15, 0x77, 0x10, 0x00, 0xff, 729 - 0xf4, 0xaa, 0xf8, 0x30, 0x0d, 0x44, 0x49, 0x13, 730 - 0x53, 0xf8, 0x2a, 0x0c, 0x4f, 0xf8, 0x2a, 0x0c, 731 - 0x73, 0x12, 0x00, 0x0e, 0xf1, 0x66, 0x00, 0x0d, 732 - 0x89, 0x11, 0xf4, 0x95, 0x77, 0x10, 0x00, 0x01, 733 - 0x71, 0xe1, 0x24, 0x00, 0x00, 0x11, 0xf4, 0xa9, 734 - 0xf8, 0x30, 0x0d, 0x17, 0x77, 0x10, 0x00, 0x02, 735 - 0xf4, 0xa9, 0xf8, 0x30, 0x0c, 0xec, 0x77, 0x11, 736 - 0x29, 0x8a, 0x76, 0x81, 0x00, 0x00, 0xe8, 0x00, 737 - 0x77, 0x14, 0x00, 0x00, 0x77, 0x13, 0x00, 0x00, 738 - 0xf0, 0x73, 0x0d, 0x48, 0x6c, 0x83, 0x0c, 0xfa, 739 - 0x77, 0x11, 0x29, 0x8a, 0x48, 0x12, 0xf0, 0xe8, 740 - 0xf0, 0x40, 0x80, 0x00, 0x80, 0x81, 0xe8, 0x00, 741 - 0x77, 0x14, 0x00, 0x00, 0xf0, 0x73, 0x0d, 0x48, 742 - 0x49, 0x13, 0xf3, 0x40, 0x80, 0x00, 0x81, 0xf8, 743 - 0x29, 0x8a, 0x61, 0xf8, 0x00, 0x15, 0x00, 0x01, 744 - 0xf8, 0x20, 0x0d, 0x07, 0x69, 0xf8, 0x29, 0x8a, 745 - 0x40, 0x00, 0x61, 0xf8, 0x00, 0x14, 0x00, 0x01, 746 - 0xf8, 0x20, 0x0d, 0x0f, 0x69, 0xf8, 0x29, 0x8a, 747 - 0x20, 0x00, 0x77, 0x11, 0x29, 0x8a, 0x49, 0x12, 748 - 0xf3, 0xe8, 0x1b, 0x81, 0x81, 0x81, 0xf0, 0x73, 749 - 0x0d, 0x48, 0x11, 0xf8, 0x29, 0x84, 0xf8, 0x4c, 750 - 0x0d, 0x37, 0x77, 0x11, 0x29, 0x88, 0x76, 0x81, 751 - 0xaa, 0xaa, 0x11, 0xf8, 0x29, 0x85, 0xf3, 0x10, 752 - 0x00, 0x01, 0xf3, 0x40, 0xaa, 0x00, 0x81, 0xe1, 753 - 0x00, 0x01, 0x76, 0x00, 0x00, 0x02, 0x80, 0x01, 754 - 0x70, 0x02, 0x00, 0x14, 0x70, 0x03, 0x00, 0x13, 755 - 0xf2, 0x74, 0x0b, 0x28, 0xf4, 0x95, 0x48, 0x11, 756 - 0x71, 0xf8, 0x29, 0x85, 0x29, 0x84, 0xf0, 0x73, 757 - 0x0d, 0x73, 0x76, 0x00, 0x00, 0x00, 0x80, 0x01, 758 - 0x76, 0x02, 0x00, 0x00, 0x70, 0x03, 0x00, 0x13, 759 - 0xf2, 0x74, 0x0b, 0x28, 0xf4, 0x95, 0xe8, 0x00, 760 - 0xf0, 0x73, 0x0d, 0x73, 0x77, 0x11, 0x29, 0x8a, 761 - 0x70, 0x81, 0x00, 0x13, 0x11, 0xf8, 0x29, 0x84, 762 - 0xf8, 0x4c, 0x0d, 0x68, 0x77, 0x11, 0x29, 0x88, 763 - 0x76, 0x81, 0xaa, 0xaa, 0x11, 0xf8, 0x29, 0x85, 764 - 0xf3, 0x10, 0x00, 0x01, 0xf3, 0x40, 0xaa, 0x00, 765 - 0x81, 0xe1, 0x00, 0x01, 0x76, 0x00, 0x00, 0x03, 766 - 0x80, 0x01, 0x70, 0x02, 0x00, 0x14, 0x70, 0x03, 767 - 0x00, 0x13, 0xf2, 0x74, 0x0b, 0x28, 0xf4, 0x95, 768 - 0x48, 0x11, 0x71, 0xf8, 0x29, 0x85, 0x29, 0x84, 769 - 0xf0, 0x73, 0x0d, 0x73, 0x76, 0x00, 0x00, 0x01, 770 - 0x80, 0x01, 0x70, 0x02, 0x00, 0x14, 0x70, 0x03, 771 - 0x00, 0x13, 0xf2, 0x74, 0x0b, 0x28, 0xf4, 0x95, 772 - 0x48, 0x11, 0x6b, 0xf8, 0x29, 0x84, 0xff, 0xff, 773 - 0xee, 0x04, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 774 - 0xf5, 0x40, 0xf4, 0x95, 0x48, 0x0b, 0xf4, 0x78, 775 - 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0xe1, 776 - 0xff, 0xb9, 0x0d, 0x88, 0xf2, 0x73, 0x0d, 0xa5, 777 - 0xf4, 0x95, 0xe8, 0x60, 0xf2, 0x00, 0x00, 0x06, 778 - 0x61, 0xf8, 0x00, 0x11, 0x00, 0x20, 0xf8, 0x30, 779 - 0x0d, 0x98, 0x61, 0xf8, 0x00, 0x0b, 0x00, 0x01, 780 - 0xf8, 0x20, 0x0d, 0xa3, 0xf2, 0x00, 0x00, 0x07, 781 - 0xf0, 0x73, 0x0d, 0xa3, 0x61, 0xf8, 0x00, 0x0b, 782 - 0x00, 0x01, 0xf8, 0x20, 0x0d, 0xa1, 0xf2, 0x73, 783 - 0x0d, 0xa3, 0xf0, 0x00, 0x00, 0x01, 0xf0, 0x00, 784 - 0x00, 0x02, 0x48, 0x08, 0xf4, 0x7f, 0x8a, 0x11, 785 - 0xfc, 0x00, 0xee, 0xff, 0xf0, 0x74, 0x07, 0xfd, 786 - 0xf0, 0x74, 0x07, 0x44, 0xf0, 0x74, 0x0d, 0xb4, 787 - 0xf0, 0x74, 0x02, 0x05, 0xf0, 0x74, 0x04, 0x60, 788 - 0xf0, 0x73, 0x0d, 0xaa, 0xee, 0xfd, 0x10, 0xf8, 789 - 0x2a, 0xa3, 0xf8, 0x44, 0x0d, 0xcb, 0x10, 0xf8, 790 - 0x2a, 0xa4, 0xf8, 0x45, 0x0d, 0xd7, 0x76, 0x00, 791 - 0x02, 0x00, 0xf2, 0x74, 0x09, 0xe8, 0xf0, 0x20, 792 - 0x22, 0x00, 0x76, 0xf8, 0x2a, 0xa4, 0x00, 0x00, 793 - 0x76, 0xf8, 0x2a, 0xa7, 0x00, 0x00, 0xf0, 0x73, 794 - 0x0d, 0xd7, 0x76, 0x00, 0x02, 0x00, 0xf2, 0x74, 795 - 0x09, 0xe8, 0xf0, 0x20, 0x20, 0x00, 0x76, 0xf8, 796 - 0x2a, 0xa3, 0x00, 0x00, 0x76, 0xf8, 0x2a, 0xa7, 797 - 0x00, 0x01, 0xf0, 0x74, 0x0c, 0x5e, 0xf0, 0xe0, 798 - 0xf0, 0x10, 0x3a, 0x98, 0xf8, 0x47, 0x0d, 0xe1, 799 - 0x76, 0xf8, 0x27, 0x6e, 0x00, 0x00, 0xee, 0x03, 800 - 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfe, 0x77, 0x11, 801 - 0x20, 0x00, 0x76, 0x00, 0xaa, 0xaa, 0x76, 0x01, 802 - 0x02, 0x00, 0xf2, 0x74, 0x06, 0x6c, 0xf4, 0x95, 803 - 0x48, 0x11, 0x76, 0x00, 0x55, 0x55, 0x76, 0x01, 804 - 0x02, 0x00, 0x48, 0x11, 0xf2, 0x74, 0x06, 0x6c, 805 - 0xf0, 0x00, 0x02, 0x00, 0x76, 0xf8, 0x2a, 0xa3, 806 - 0x00, 0x00, 0x76, 0xf8, 0x2a, 0xa4, 0x00, 0x00, 807 - 0xe8, 0x00, 0x4e, 0x00, 0xfb, 0x80, 0x15, 0x3e, 808 - 0xf4, 0x95, 0xe8, 0x04, 0x80, 0xf8, 0x2a, 0xa5, 809 - 0x76, 0x00, 0x2a, 0xa8, 0xf9, 0x80, 0x14, 0x87, 810 - 0x76, 0x00, 0x2a, 0xad, 0xfb, 0x80, 0x13, 0x62, 811 - 0xf4, 0x95, 0xe8, 0x02, 0x10, 0xf8, 0x2a, 0xa5, 812 - 0xf9, 0x80, 0x14, 0x63, 0xfb, 0x80, 0x16, 0x66, 813 - 0xf4, 0x95, 0xe8, 0x1c, 0xfb, 0x80, 0x16, 0x87, 814 - 0xf4, 0x95, 0xe8, 0x1c, 0xe8, 0x01, 0x4e, 0x00, 815 - 0xfb, 0x80, 0x17, 0xd6, 0xf4, 0x95, 0xe8, 0x00, 816 - 0x80, 0xf8, 0x2a, 0xa6, 0x76, 0x00, 0x2a, 0xb7, 817 - 0xf9, 0x80, 0x16, 0xaa, 0x10, 0xf8, 0x2a, 0xa6, 818 - 0xf9, 0x80, 0x17, 0x5c, 0x10, 0xf8, 0x2a, 0xa6, 819 - 0xf9, 0x80, 0x17, 0x6f, 0xee, 0x02, 0x8a, 0x11, 820 - 0xfc, 0x00, 0xf4, 0x95, 0x4a, 0x08, 0x4a, 0x09, 821 - 0x4a, 0x0a, 0x4a, 0x07, 0x4a, 0x1d, 0x68, 0xf8, 822 - 0x00, 0x07, 0x7d, 0x3f, 0x69, 0xf8, 0x00, 0x07, 823 - 0x40, 0x00, 0x68, 0xf8, 0x00, 0x1d, 0xff, 0xfc, 824 - 0x10, 0xf8, 0x2a, 0xa7, 0xf8, 0x44, 0x0e, 0x4b, 825 - 0x76, 0xf8, 0x2a, 0xa3, 0x00, 0x01, 0xf0, 0x73, 826 - 0x0e, 0x4e, 0x76, 0xf8, 0x2a, 0xa4, 0x00, 0x01, 827 - 0x8a, 0x1d, 0x8a, 0x07, 0x8a, 0x0a, 0x8a, 0x09, 828 - 0x8a, 0x08, 0xf4, 0xeb, 0x4a, 0x11, 0x4a, 0x16, 829 - 0x4a, 0x17, 0xee, 0xfe, 0x88, 0x0e, 0x71, 0x08, 830 - 0x00, 0x16, 0x71, 0x06, 0x00, 0x17, 0x11, 0x07, 831 - 0xf0, 0x66, 0x00, 0x0d, 0xf0, 0x00, 0x25, 0xa0, 832 - 0x88, 0x11, 0x76, 0x01, 0x00, 0x06, 0x81, 0x00, 833 - 0xf2, 0x74, 0x06, 0xce, 0xf0, 0x00, 0x00, 0x01, 834 - 0x76, 0x01, 0x00, 0x06, 0x70, 0x00, 0x00, 0x16, 835 - 0x48, 0x11, 0xf2, 0x74, 0x06, 0xce, 0xf0, 0x00, 836 - 0x00, 0x07, 0x70, 0x81, 0x00, 0x17, 0xee, 0x02, 837 - 0x8a, 0x17, 0x8a, 0x16, 0x8a, 0x11, 0xfc, 0x00, 838 - 0x4a, 0x11, 0x88, 0x0e, 0x71, 0x02, 0x00, 0x12, 839 - 0x11, 0x03, 0xf0, 0x66, 0x00, 0x0d, 0xf0, 0x00, 840 - 0x24, 0x00, 0x88, 0x11, 0xf4, 0x95, 0x70, 0x81, 841 - 0x00, 0x12, 0x6e, 0xe2, 0xff, 0xfe, 0x0e, 0x8d, 842 - 0xf4, 0x95, 0xe8, 0x00, 0xe8, 0x01, 0x80, 0xe1, 843 - 0x00, 0x02, 0x76, 0xe1, 0x00, 0x03, 0x00, 0xff, 844 - 0x76, 0xe1, 0x00, 0x04, 0x00, 0x00, 0x76, 0xe1, 845 - 0x00, 0x0b, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x0c, 846 - 0x00, 0x00, 0x81, 0xe1, 0x00, 0x01, 0x8a, 0x11, 847 - 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfc, 0x88, 0x0e, 848 - 0xf4, 0x95, 0xf1, 0x66, 0x00, 0x0d, 0xf3, 0x00, 849 - 0x24, 0x00, 0x89, 0x11, 0xf4, 0x95, 0xf4, 0x95, 850 - 0x76, 0xe1, 0x00, 0x0c, 0x00, 0x00, 0x76, 0xe1, 851 - 0x00, 0x0b, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x02, 852 - 0x00, 0x01, 0x76, 0x00, 0x00, 0x00, 0x76, 0x01, 853 - 0x00, 0x00, 0x80, 0x02, 0x76, 0x03, 0x00, 0x00, 854 - 0xf2, 0x74, 0x0c, 0xb9, 0xf4, 0x95, 0xe8, 0x00, 855 - 0xee, 0x04, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 856 - 0x88, 0x19, 0xf4, 0x95, 0x73, 0x19, 0x00, 0x0e, 857 - 0xf1, 0x66, 0x00, 0x0d, 0xf2, 0x00, 0x24, 0x00, 858 - 0x77, 0x15, 0x25, 0xa0, 0x77, 0x14, 0x00, 0x00, 859 - 0x77, 0x1a, 0x00, 0x1f, 0xf0, 0x72, 0x0f, 0x14, 860 - 0xf6, 0xb8, 0x49, 0x19, 0x09, 0x85, 0xf8, 0x4c, 861 - 0x0f, 0x13, 0xf1, 0x00, 0x00, 0x05, 0x89, 0x11, 862 - 0x49, 0x15, 0xf3, 0x00, 0x00, 0x01, 0x89, 0x13, 863 - 0x49, 0x15, 0xf3, 0x00, 0x00, 0x07, 0x89, 0x12, 864 - 0x11, 0x93, 0x1d, 0x91, 0x19, 0x92, 0x89, 0x10, 865 - 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x80, 0x0f, 0x13, 866 - 0x11, 0x93, 0x1d, 0x91, 0x19, 0x92, 0x89, 0x10, 867 - 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x80, 0x0f, 0x13, 868 - 0x11, 0x93, 0x1d, 0x91, 0x19, 0x92, 0x89, 0x10, 869 - 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x80, 0x0f, 0x13, 870 - 0x11, 0x93, 0x1d, 0x91, 0x19, 0x92, 0x89, 0x10, 871 - 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x80, 0x0f, 0x13, 872 - 0x11, 0x93, 0x1d, 0x91, 0x19, 0x92, 0x89, 0x10, 873 - 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x80, 0x0f, 0x13, 874 - 0x11, 0x93, 0x1d, 0x91, 0x19, 0x92, 0x89, 0x11, 875 - 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x81, 0x0f, 0x13, 876 - 0x6d, 0x94, 0x6d, 0xed, 0x00, 0x0d, 0x48, 0x14, 877 - 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0x4a, 0x16, 878 - 0x4a, 0x17, 0xee, 0xf8, 0x88, 0x17, 0x10, 0x0d, 879 - 0x80, 0x04, 0x10, 0x0c, 0x80, 0x05, 0x71, 0x0e, 880 - 0x00, 0x16, 0x73, 0x17, 0x00, 0x0e, 0xf0, 0x66, 881 - 0x00, 0x0d, 0xf0, 0x00, 0x24, 0x00, 0x88, 0x11, 882 - 0x10, 0xf8, 0x27, 0x63, 0xf8, 0x45, 0x0f, 0x32, 883 - 0xf2, 0x74, 0x0e, 0x9f, 0xf4, 0x95, 0x48, 0x17, 884 - 0x10, 0xf8, 0x27, 0x60, 0xf8, 0x44, 0x0f, 0x3d, 885 - 0x60, 0xe1, 0x00, 0x02, 0x00, 0x01, 0xf8, 0x20, 886 - 0x0f, 0x6d, 0xf0, 0x73, 0x11, 0x33, 0x10, 0x04, 887 - 0x80, 0x00, 0x10, 0x05, 0xf0, 0x74, 0x06, 0x9f, 888 - 0x11, 0x04, 0xf3, 0x00, 0x00, 0x01, 0x81, 0x04, 889 - 0x6d, 0x8e, 0x77, 0x10, 0x00, 0x01, 0x71, 0xe1, 890 - 0x00, 0x02, 0x00, 0x12, 0xf4, 0xaa, 0xf8, 0x30, 891 - 0x0f, 0x62, 0x77, 0x10, 0x00, 0x02, 0xf4, 0xaa, 892 - 0xf8, 0x30, 0x0f, 0x6d, 0x45, 0xe1, 0x00, 0x0b, 893 - 0x88, 0x10, 0x43, 0xe1, 0x00, 0x0c, 0x83, 0xf8, 894 - 0x00, 0x12, 0xf4, 0x95, 0xf4, 0x95, 0xf4, 0xaa, 895 - 0xf8, 0x30, 0x0f, 0x6d, 0xf0, 0x73, 0x0f, 0x96, 896 - 0xf5, 0x00, 0x81, 0x04, 0x49, 0x16, 0xf5, 0x20, 897 - 0x89, 0x16, 0x76, 0xe1, 0x00, 0x0c, 0x00, 0x00, 898 - 0x76, 0xe1, 0x00, 0x04, 0x00, 0x00, 0x48, 0x16, 899 - 0xf8, 0x45, 0x11, 0x33, 0xf7, 0xb8, 0x71, 0xe1, 900 - 0x00, 0x02, 0x00, 0x12, 0x10, 0xf8, 0x00, 0x12, 901 - 0xf0, 0x10, 0x00, 0x03, 0xf8, 0x46, 0x0f, 0x8c, 902 - 0x10, 0xf8, 0x00, 0x12, 0xf0, 0x10, 0x00, 0x03, 903 - 0xf8, 0x45, 0x10, 0x16, 0x77, 0x10, 0x00, 0x01, 904 - 0xf4, 0xaa, 0xf8, 0x30, 0x0f, 0x9c, 0x77, 0x10, 905 - 0x00, 0x02, 0xf4, 0xaa, 0xf8, 0x30, 0x0f, 0xa8, 906 - 0xf0, 0x73, 0x0f, 0x96, 0x77, 0x10, 0x00, 0x04, 907 - 0xf4, 0xaa, 0xf8, 0x30, 0x10, 0xb7, 0x77, 0x10, 908 - 0x00, 0x05, 0xf4, 0xaa, 0xf8, 0x30, 0x10, 0xbc, 909 - 0xf2, 0x74, 0x0e, 0x9f, 0xf4, 0x95, 0x48, 0x17, 910 - 0xf0, 0x73, 0x11, 0x31, 0x76, 0xe1, 0x00, 0x0c, 911 - 0x00, 0x00, 0x76, 0xe1, 0x00, 0x0b, 0x00, 0x00, 912 - 0x76, 0xe1, 0x00, 0x04, 0x00, 0x00, 0x76, 0xe1, 913 - 0x00, 0x02, 0x00, 0x02, 0x11, 0xe1, 0x00, 0x0c, 914 - 0xe8, 0x03, 0xf6, 0x20, 0x89, 0x12, 0xf4, 0x95, 915 - 0x77, 0x10, 0x00, 0x03, 0xf5, 0xaa, 0xf8, 0x30, 916 - 0x0f, 0xb6, 0x6b, 0xf8, 0x27, 0x6f, 0x00, 0x01, 917 - 0x88, 0x10, 0xf4, 0x95, 0xf4, 0x95, 0xf5, 0xae, 918 - 0xf8, 0x20, 0x0f, 0xbd, 0x48, 0x16, 0x80, 0x06, 919 - 0x88, 0x13, 0xf4, 0x95, 0x77, 0x10, 0x00, 0x03, 920 - 0xf6, 0xab, 0xf8, 0x20, 0x0f, 0xc8, 0x6b, 0xf8, 921 - 0x27, 0x6f, 0x00, 0x01, 0x12, 0x06, 0xf8, 0x45, 922 - 0x10, 0x00, 0x10, 0xe1, 0x00, 0x04, 0x80, 0x00, 923 - 0x10, 0x05, 0x80, 0x01, 0x10, 0x04, 0x80, 0x02, 924 - 0x10, 0x06, 0x80, 0x03, 0x48, 0x11, 0xf2, 0x74, 925 - 0x07, 0x1e, 0xf0, 0x00, 0x00, 0x05, 0x10, 0x06, 926 - 0x00, 0xe1, 0x00, 0x04, 0x80, 0xe1, 0x00, 0x04, 927 - 0x10, 0x06, 0x00, 0xe1, 0x00, 0x0c, 0x80, 0xe1, 928 - 0x00, 0x0c, 0x88, 0x12, 0x11, 0x06, 0x10, 0x04, 929 - 0xf6, 0x00, 0x80, 0x04, 0x48, 0x16, 0xf6, 0x20, 930 - 0x88, 0x16, 0x89, 0x13, 0xf4, 0x95, 0x77, 0x10, 931 - 0x00, 0x03, 0xf6, 0xab, 0xf8, 0x20, 0x0f, 0xf5, 932 - 0x6b, 0xf8, 0x27, 0x6f, 0x00, 0x01, 0x77, 0x10, 933 - 0x00, 0x0c, 0x71, 0xe1, 0x00, 0x04, 0x00, 0x13, 934 - 0xf6, 0xab, 0xf8, 0x20, 0x10, 0x00, 0x6b, 0xf8, 935 - 0x27, 0x6f, 0x00, 0x01, 0x6c, 0xe2, 0xff, 0xfd, 936 - 0x11, 0x31, 0xf6, 0xb8, 0x6f, 0xe1, 0x00, 0x05, 937 - 0x0c, 0x48, 0x6f, 0xe1, 0x00, 0x06, 0x0c, 0x18, 938 - 0xf0, 0x30, 0x0f, 0xff, 0xf0, 0x00, 0x00, 0x03, 939 - 0x80, 0xe1, 0x00, 0x0b, 0x76, 0xe1, 0x00, 0x02, 940 - 0x00, 0x03, 0x48, 0x16, 0xf8, 0x45, 0x11, 0x33, 941 - 0x71, 0xe1, 0x00, 0x0c, 0x00, 0x12, 0x10, 0xe1, 942 - 0x00, 0x0b, 0x49, 0x12, 0xf6, 0x20, 0x88, 0x13, 943 - 0xe8, 0x0c, 0xf6, 0x20, 0x88, 0x10, 0xf4, 0x95, 944 - 0xf4, 0x95, 0xf5, 0xab, 0xf8, 0x20, 0x10, 0x27, 945 - 0x48, 0x13, 0x80, 0x06, 0x88, 0x10, 0xf4, 0x95, 946 - 0xf4, 0x95, 0xf5, 0xae, 0xf8, 0x20, 0x10, 0x30, 947 - 0x70, 0x06, 0x00, 0x16, 0x12, 0x06, 0xf8, 0x45, 948 - 0x10, 0x5f, 0x10, 0xe1, 0x00, 0x04, 0x80, 0x00, 949 - 0x10, 0x05, 0x80, 0x01, 0x10, 0x04, 0x80, 0x02, 950 - 0x10, 0x06, 0x80, 0x03, 0x48, 0x11, 0xf2, 0x74, 951 - 0x07, 0x1e, 0xf0, 0x00, 0x00, 0x05, 0x10, 0x06, 952 - 0x00, 0xe1, 0x00, 0x04, 0x80, 0xe1, 0x00, 0x04, 953 - 0x10, 0x06, 0x00, 0xe1, 0x00, 0x0c, 0x80, 0xe1, 954 - 0x00, 0x0c, 0x88, 0x12, 0x11, 0x06, 0x10, 0x04, 955 - 0xf6, 0x00, 0x80, 0x04, 0x48, 0x16, 0xf6, 0x20, 956 - 0x88, 0x16, 0xf4, 0x95, 0x77, 0x10, 0x00, 0x0c, 957 - 0x71, 0xe1, 0x00, 0x04, 0x00, 0x13, 0xf6, 0xab, 958 - 0xf8, 0x20, 0x10, 0x5f, 0x6b, 0xf8, 0x27, 0x6f, 959 - 0x00, 0x01, 0x77, 0x10, 0x00, 0x0c, 0xf6, 0xaa, 960 - 0xf8, 0x20, 0x10, 0x6b, 0xf2, 0x74, 0x0e, 0x9f, 961 - 0xf4, 0x95, 0x48, 0x17, 0x71, 0xe1, 0x00, 0x0c, 962 - 0x00, 0x12, 0x77, 0x10, 0x00, 0x0c, 0xf4, 0xaa, 963 - 0xf8, 0x30, 0x10, 0x7c, 0x77, 0x10, 0x00, 0x0c, 964 - 0x71, 0xe1, 0x00, 0x0b, 0x00, 0x13, 0xf6, 0xab, 965 - 0xf8, 0x30, 0x10, 0xb4, 0xe7, 0x30, 0xf7, 0xaa, 966 - 0xf8, 0x30, 0x10, 0xb4, 0xf2, 0x74, 0x0e, 0xc1, 967 - 0xf4, 0x95, 0x48, 0x17, 0x88, 0x12, 0xf4, 0x95, 968 - 0xf4, 0x95, 0x6c, 0x82, 0x10, 0x8d, 0x76, 0xe1, 969 - 0x00, 0x04, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x02, 970 - 0x00, 0x05, 0xf0, 0x73, 0x10, 0xb4, 0x76, 0xe1, 971 - 0x00, 0x02, 0x00, 0x04, 0x77, 0x10, 0x00, 0x0c, 972 - 0x71, 0xe1, 0x00, 0x0b, 0x00, 0x12, 0xf5, 0xaa, 973 - 0xf8, 0x20, 0x10, 0x9a, 0xf0, 0x73, 0x10, 0x9c, 974 - 0x77, 0x12, 0x00, 0x0c, 0x76, 0x00, 0x00, 0x00, 975 - 0x70, 0x01, 0x00, 0x12, 0x70, 0x02, 0x00, 0x17, 976 - 0x76, 0x03, 0x00, 0x01, 0x48, 0x11, 0xf2, 0x74, 977 - 0x0c, 0xb9, 0xf0, 0x00, 0x00, 0x05, 0x76, 0xe1, 978 - 0x00, 0x04, 0x00, 0x00, 0x77, 0x10, 0x00, 0x0c, 979 - 0x71, 0xe1, 0x00, 0x0b, 0x00, 0x12, 0xf6, 0xaa, 980 - 0xf8, 0x20, 0x11, 0x1c, 0x48, 0x16, 0xf8, 0x45, 981 - 0x11, 0x33, 0x60, 0xe1, 0x00, 0x02, 0x00, 0x05, 982 - 0xf8, 0x20, 0x10, 0xdf, 0x10, 0xe1, 0x00, 0x0b, 983 - 0x08, 0xe1, 0x00, 0x0c, 0x11, 0xe1, 0x00, 0x04, 984 - 0xf8, 0x4d, 0x10, 0xc7, 0x6b, 0xf8, 0x27, 0x6f, 985 - 0x00, 0x01, 0x88, 0x10, 0xf4, 0x95, 0xf4, 0x95, 986 - 0xf5, 0xae, 0xf8, 0x20, 0x10, 0xcf, 0x48, 0x16, 987 - 0xf4, 0x95, 0x48, 0x08, 0xf8, 0x45, 0x11, 0x16, 988 - 0x6f, 0xe1, 0x00, 0x0c, 0x0d, 0x00, 0x81, 0xe1, 989 - 0x00, 0x0c, 0x11, 0x04, 0xf5, 0x00, 0x81, 0x04, 990 - 0x49, 0x16, 0xf5, 0x20, 0x89, 0x16, 0xf0, 0x73, 991 - 0x11, 0x0e, 0x10, 0xe1, 0x00, 0x0b, 0x71, 0xe1, 992 - 0x00, 0x0c, 0x00, 0x12, 0x88, 0x10, 0xf4, 0x95, 993 - 0xf4, 0x95, 0xf6, 0xaa, 0xf8, 0x30, 0x11, 0x16, 994 - 0x49, 0x12, 0xf6, 0x20, 0x88, 0x10, 0xf4, 0x95, 995 - 0xf4, 0x95, 0xf5, 0xae, 0xf8, 0x20, 0x10, 0xf3, 996 - 0x48, 0x16, 0x80, 0x06, 0x48, 0x08, 0xf8, 0x45, 997 - 0x11, 0x16, 0x10, 0x04, 0x70, 0x02, 0x00, 0x17, 998 - 0x80, 0x00, 0x76, 0x03, 0x00, 0x00, 0x10, 0x06, 999 - 0x80, 0x01, 0x10, 0x05, 0xf0, 0x74, 0x0c, 0xb9, 1000 - 0x10, 0x06, 0x00, 0xe1, 0x00, 0x0c, 0x80, 0xe1, 1001 - 0x00, 0x0c, 0x11, 0x06, 0x10, 0x04, 0xf6, 0x00, 1002 - 0x80, 0x04, 0x48, 0x16, 0xf6, 0x20, 0x88, 0x16, 1003 - 0x10, 0xe1, 0x00, 0x0c, 0x08, 0xe1, 0x00, 0x0b, 1004 - 0xf8, 0x45, 0x11, 0x1c, 0xf0, 0x73, 0x11, 0x31, 1005 - 0xf2, 0x74, 0x0e, 0x9f, 0xf4, 0x95, 0x48, 0x17, 1006 - 0xf0, 0x73, 0x11, 0x33, 0x76, 0xe1, 0x00, 0x0c, 1007 - 0x00, 0x00, 0x76, 0xe1, 0x00, 0x0b, 0x00, 0x00, 1008 - 0x76, 0xe1, 0x00, 0x02, 0x00, 0x01, 0x10, 0x04, 1009 - 0x80, 0x00, 0x10, 0x05, 0xf0, 0x74, 0x06, 0x9f, 1010 - 0x88, 0x12, 0xf4, 0x95, 0x77, 0x10, 0x00, 0xff, 1011 - 0xf4, 0xaa, 0xf8, 0x30, 0x11, 0x33, 0x6c, 0x86, 1012 - 0x0f, 0x70, 0xee, 0x08, 0x8a, 0x17, 0x8a, 0x16, 1013 - 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfc, 1014 - 0xf4, 0x95, 0x71, 0x06, 0x00, 0x12, 0x88, 0x11, 1015 - 0x73, 0x12, 0x00, 0x0e, 0xf1, 0x66, 0x00, 0x0d, 1016 - 0xf3, 0x00, 0x24, 0x00, 0x89, 0x14, 0x13, 0x81, 1017 - 0xf7, 0x7a, 0xf3, 0x30, 0x00, 0x01, 0x81, 0xf8, 1018 - 0x27, 0x60, 0x13, 0xe1, 0x00, 0x01, 0xf7, 0x7c, 1019 - 0xf3, 0x30, 0x00, 0x03, 0x81, 0xf8, 0x27, 0x61, 1020 - 0xe9, 0x0f, 0x19, 0xe1, 0x00, 0x01, 0x81, 0xf8, 1021 - 0x27, 0x62, 0x71, 0xe4, 0x00, 0x03, 0x00, 0x13, 1022 - 0xf6, 0xb8, 0x49, 0x13, 0xf3, 0x00, 0x00, 0x01, 1023 - 0xf3, 0x30, 0x00, 0x0f, 0x49, 0x0b, 0x09, 0xf8, 1024 - 0x27, 0x62, 0xf8, 0x4d, 0x11, 0x75, 0x77, 0x10, 1025 - 0x00, 0xff, 0xf4, 0xab, 0xf8, 0x30, 0x11, 0x75, 1026 - 0x57, 0xf8, 0x27, 0x6c, 0xf3, 0x00, 0x00, 0x01, 1027 - 0x4f, 0xf8, 0x27, 0x6c, 0x76, 0xf8, 0x27, 0x63, 1028 - 0x00, 0x01, 0xf0, 0x73, 0x11, 0x78, 0x76, 0xf8, 1029 - 0x27, 0x63, 0x00, 0x00, 0x70, 0xe4, 0x00, 0x03, 1030 - 0x27, 0x62, 0x76, 0xf8, 0x27, 0x64, 0x00, 0x00, 1031 - 0x11, 0xf8, 0x27, 0x61, 0x61, 0xf8, 0x00, 0x0b, 1032 - 0x00, 0x02, 0xf8, 0x20, 0x11, 0x8d, 0xe9, 0x01, 1033 - 0x6f, 0xe1, 0x00, 0x02, 0x0f, 0x18, 0x81, 0xf8, 1034 - 0x27, 0x64, 0x11, 0xf8, 0x27, 0x61, 0x61, 0xf8, 1035 - 0x00, 0x0b, 0x00, 0x01, 0xf8, 0x20, 0x11, 0xa9, 1036 - 0x10, 0xf8, 0x27, 0x64, 0xf1, 0x00, 0x00, 0x04, 1037 - 0x89, 0x13, 0xe9, 0xb8, 0xf5, 0x20, 0x81, 0xf8, 1038 - 0x27, 0x65, 0x60, 0x84, 0x00, 0x02, 0xf8, 0x20, 1039 - 0x11, 0xa9, 0x70, 0x00, 0x00, 0x11, 0x70, 0x01, 1040 - 0x00, 0x13, 0x70, 0x02, 0x27, 0x65, 0xf2, 0x74, 1041 - 0x0f, 0x18, 0xf4, 0x95, 0x48, 0x12, 0xee, 0x04, 1042 - 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0x4a, 0x16, 1043 - 0x4a, 0x17, 0xee, 0xfc, 0xe8, 0x00, 0x4e, 0xf8, 1044 - 0x27, 0x66, 0xe8, 0x00, 0x4e, 0xf8, 0x27, 0x68, 1045 - 0xe8, 0x00, 0x4e, 0xf8, 0x27, 0x6c, 0xe8, 0x00, 1046 - 0x4e, 0xf8, 0x27, 0x6a, 0x77, 0x12, 0x27, 0x40, 1047 - 0x77, 0x11, 0x24, 0x00, 0x77, 0x1a, 0x00, 0x1f, 1048 - 0xf0, 0x72, 0x11, 0xdb, 0x70, 0x92, 0x00, 0x11, 1049 - 0x76, 0xe1, 0x00, 0x01, 0xff, 0xff, 0x76, 0x81, 1050 - 0x00, 0x00, 0x76, 0xe1, 0x00, 0x02, 0x00, 0x00, 1051 - 0x76, 0xe1, 0x00, 0x03, 0x00, 0xff, 0x76, 0xe1, 1052 - 0x00, 0x0c, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x0b, 1053 - 0x00, 0x00, 0x76, 0xe1, 0x00, 0x04, 0x00, 0x00, 1054 - 0x6d, 0xe9, 0x00, 0x0d, 0xf0, 0x20, 0x25, 0xa0, 1055 - 0xf1, 0x00, 0x00, 0x07, 0x89, 0x11, 0xf1, 0x00, 1056 - 0x00, 0x01, 0x81, 0x02, 0x88, 0x16, 0xf4, 0x95, 1057 - 0x77, 0x17, 0x00, 0x20, 0x76, 0x86, 0x00, 0xff, 1058 - 0x76, 0x00, 0x00, 0x00, 0x76, 0x01, 0x00, 0x06, 1059 - 0x10, 0x02, 0xf0, 0x74, 0x06, 0x6c, 0x76, 0x00, 1060 - 0x00, 0x00, 0x76, 0x01, 0x00, 0x06, 0xf2, 0x74, 1061 - 0x06, 0x6c, 0xf4, 0x95, 0x48, 0x11, 0x10, 0x02, 1062 - 0xf0, 0x00, 0x00, 0x0d, 0x80, 0x02, 0x6d, 0xe9, 1063 - 0x00, 0x0d, 0x6d, 0xee, 0x00, 0x0d, 0x6c, 0xef, 1064 - 0xff, 0xff, 0x11, 0xe8, 0xf0, 0x74, 0x0c, 0x9d, 1065 - 0xee, 0x04, 0x8a, 0x17, 0x8a, 0x16, 0x8a, 0x11, 1066 - 0xfc, 0x00, 0x4a, 0x11, 0x4a, 0x16, 0x4a, 0x17, 1067 - 0xee, 0xfa, 0x88, 0x11, 0x10, 0x0a, 0x49, 0x11, 1068 - 0xf8, 0x4d, 0x12, 0x9f, 0x48, 0x08, 0xf8, 0x45, 1069 - 0x12, 0x9f, 0x80, 0x04, 0x12, 0x81, 0xf5, 0x78, 1070 - 0x89, 0x12, 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0xe2, 1071 - 0xff, 0xb9, 0x12, 0x8a, 0x61, 0xf8, 0x00, 0x08, 1072 - 0x00, 0x80, 0xf8, 0x30, 0x12, 0x8a, 0x13, 0xe1, 1073 - 0x00, 0x01, 0xf0, 0xe8, 0xf7, 0x78, 0xf1, 0xa0, 1074 - 0xf2, 0x30, 0x1f, 0xff, 0x88, 0x17, 0xf4, 0x95, 1075 - 0x77, 0x12, 0x24, 0x00, 0x77, 0x16, 0x00, 0x00, 1076 - 0x77, 0x13, 0x00, 0x20, 0xf6, 0xb8, 0x48, 0x17, 1077 - 0x08, 0xe2, 0x00, 0x01, 0xf8, 0x45, 0x12, 0x42, 1078 - 0x6d, 0xea, 0x00, 0x0d, 0x6d, 0x96, 0x6c, 0xeb, 1079 - 0xff, 0xff, 0x12, 0x34, 0xf0, 0x73, 0x12, 0x90, 1080 - 0x56, 0xf8, 0x27, 0x6a, 0xf0, 0x00, 0x00, 0x01, 1081 - 0x4e, 0xf8, 0x27, 0x6a, 0x60, 0x82, 0x00, 0x01, 1082 - 0xf8, 0x30, 0x12, 0x54, 0x70, 0x00, 0x00, 0x16, 1083 - 0xf2, 0x74, 0x11, 0x38, 0xf4, 0x95, 0x48, 0x11, 1084 - 0xf0, 0x73, 0x12, 0x90, 0x70, 0x00, 0x00, 0x16, 1085 - 0xf2, 0x74, 0x11, 0x38, 0xf4, 0x95, 0x48, 0x11, 1086 - 0x72, 0x10, 0x2a, 0x9e, 0xf4, 0x95, 0xf4, 0xaf, 1087 - 0xf8, 0x30, 0x12, 0x6e, 0x76, 0x00, 0x00, 0x00, 1088 - 0x76, 0x01, 0x00, 0xbc, 0x70, 0x02, 0x00, 0x16, 1089 - 0x76, 0x03, 0x00, 0x00, 0xf2, 0x74, 0x0c, 0xb9, 1090 - 0xf4, 0x95, 0x48, 0x11, 0xf0, 0x73, 0x12, 0x90, 1091 - 0x10, 0xf8, 0x27, 0x6e, 0xf8, 0x44, 0x12, 0x90, 1092 - 0x76, 0x00, 0x00, 0x00, 0x76, 0x01, 0x00, 0xbc, 1093 - 0x70, 0x02, 0x00, 0x16, 0x76, 0x03, 0x00, 0x00, 1094 - 0xf2, 0x74, 0x0c, 0xb9, 0xf4, 0x95, 0x48, 0x11, 1095 - 0xf0, 0x74, 0x0c, 0x5e, 0xf0, 0xe0, 0xf0, 0x10, 1096 - 0x13, 0x88, 0xf8, 0x42, 0x12, 0x90, 0x76, 0xf8, 1097 - 0x27, 0x6e, 0x00, 0x01, 0xf0, 0x73, 0x12, 0x90, 1098 - 0x56, 0xf8, 0x27, 0x66, 0xf0, 0x00, 0x00, 0x01, 1099 - 0x4e, 0xf8, 0x27, 0x66, 0x6d, 0xe9, 0x00, 0x5e, 1100 - 0x56, 0xf8, 0x27, 0x68, 0xf0, 0x00, 0x00, 0x01, 1101 - 0x4e, 0xf8, 0x27, 0x68, 0x71, 0x04, 0x00, 0x12, 1102 - 0x6e, 0xea, 0xff, 0xff, 0x12, 0x18, 0x70, 0x04, 1103 - 0x00, 0x12, 0xee, 0x06, 0x8a, 0x17, 0x8a, 0x16, 1104 - 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfe, 1105 - 0x88, 0x0e, 0xf4, 0x95, 0xf0, 0x66, 0x00, 0x0d, 1106 - 0xf0, 0x00, 0x25, 0xa0, 0x88, 0x11, 0xf4, 0x95, 1107 - 0xf4, 0x95, 0x76, 0x81, 0x00, 0xff, 0x76, 0x00, 1108 - 0x00, 0x00, 0x76, 0x01, 0x00, 0x06, 0xf2, 0x74, 1109 - 0x06, 0x6c, 0xf0, 0x00, 0x00, 0x01, 0x76, 0x00, 1110 - 0x00, 0x00, 0x76, 0x01, 0x00, 0x06, 0x48, 0x11, 1111 - 0xf2, 0x74, 0x06, 0x6c, 0xf0, 0x00, 0x00, 0x07, 1112 - 0xee, 0x02, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 1113 - 0x88, 0x0e, 0xf4, 0x95, 0xf0, 0x66, 0x00, 0x0d, 1114 - 0xf0, 0x00, 0x24, 0x00, 0x88, 0x11, 0xf4, 0x95, 1115 - 0xf4, 0x95, 0x76, 0xe1, 0x00, 0x01, 0xff, 0xff, 1116 - 0x76, 0x81, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x02, 1117 - 0x00, 0x00, 0x76, 0xe1, 0x00, 0x03, 0x00, 0xff, 1118 - 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xf4, 0x95, 1119 - 0x13, 0x03, 0x88, 0x11, 0xfa, 0x4d, 0x12, 0xec, 1120 - 0x71, 0x02, 0x00, 0x12, 0xf3, 0x10, 0x00, 0x01, 1121 - 0x89, 0x1a, 0xf4, 0x95, 0xf0, 0x72, 0x12, 0xeb, 1122 - 0x70, 0x91, 0x00, 0x12, 0x8a, 0x11, 0xfc, 0x00, 1123 - 0xf4, 0x95, 0x4a, 0x0b, 0x4a, 0x0c, 0x4a, 0x0d, 1124 - 0xf7, 0xb8, 0xee, 0xfe, 0x10, 0xf8, 0x00, 0x08, 1125 - 0x11, 0x06, 0xf1, 0xc0, 0x83, 0x00, 0xf4, 0x85, 1126 - 0x11, 0x06, 0xf7, 0x85, 0x81, 0x06, 0xf6, 0xb8, 1127 - 0xec, 0x0f, 0x1e, 0x06, 0x61, 0x00, 0x80, 0x00, 1128 - 0xf8, 0x20, 0x13, 0x05, 0xf4, 0x84, 0xee, 0x02, 1129 - 0x8a, 0x0d, 0x8a, 0x0c, 0x8a, 0x0b, 0xfc, 0x00, 1130 - 0xf4, 0x95, 0x4a, 0x0b, 0x4a, 0x0c, 0x4a, 0x0d, 1131 - 0xee, 0xfe, 0xf7, 0xb8, 0x80, 0x00, 0x10, 0xf8, 1132 - 0x00, 0x08, 0xf4, 0x85, 0x11, 0x06, 0xf7, 0x85, 1133 - 0x81, 0x06, 0xf6, 0xb8, 0xec, 0x0f, 0x1e, 0x06, 1134 - 0xf0, 0xf0, 0x61, 0x00, 0x80, 0x00, 0xf8, 0x20, 1135 - 0x13, 0x20, 0xf4, 0x84, 0xee, 0x02, 0x8a, 0x0d, 1136 - 0x8a, 0x0c, 0x8a, 0x0b, 0xfc, 0x00, 0x4a, 0x11, 1137 - 0x77, 0x11, 0x00, 0x7b, 0x76, 0x81, 0x2e, 0xec, 1138 - 0x77, 0x11, 0x00, 0x7b, 0xee, 0xff, 0x71, 0x81, 1139 - 0x00, 0x11, 0xee, 0x01, 0x76, 0xe1, 0x00, 0x01, 1140 - 0x00, 0x00, 0x76, 0xe1, 0x00, 0x04, 0x00, 0x00, 1141 - 0x76, 0xe1, 0x00, 0x06, 0x00, 0x00, 0x76, 0xe1, 1142 - 0x00, 0x62, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x76, 1143 - 0x00, 0x00, 0x76, 0xe1, 0x00, 0x92, 0x00, 0x00, 1144 - 0x76, 0xe1, 0x00, 0x94, 0x00, 0x00, 0x76, 0xe1, 1145 - 0x00, 0xb0, 0x00, 0x00, 0x76, 0xe1, 0x00, 0xb3, 1146 - 0x00, 0x00, 0x76, 0xe1, 0x00, 0xbe, 0x00, 0x00, 1147 - 0x76, 0xe1, 0x00, 0xbf, 0x00, 0x00, 0x76, 0xe1, 1148 - 0x00, 0xc1, 0x00, 0x00, 0x76, 0xe1, 0x00, 0xc3, 1149 - 0x00, 0x00, 0x76, 0xe1, 0x00, 0xc5, 0x00, 0x00, 1150 - 0x76, 0xe1, 0x00, 0xc7, 0x00, 0x00, 0x76, 0x81, 1151 - 0x00, 0x00, 0x8a, 0x11, 0xf4, 0x95, 0xf4, 0xe4, 1152 - 0x4a, 0x11, 0x4a, 0x16, 0x4a, 0x17, 0xee, 0xff, 1153 - 0xf4, 0x95, 0x71, 0x06, 0x00, 0x16, 0xfb, 0x80, 1154 - 0x16, 0xa2, 0x88, 0x17, 0xf4, 0x95, 0xf7, 0xb8, 1155 - 0x10, 0xf8, 0x00, 0x17, 0xf0, 0x10, 0x00, 0x02, 1156 - 0xfa, 0x46, 0x13, 0x88, 0x77, 0x11, 0x00, 0x00, 1157 - 0x10, 0xf8, 0x00, 0x17, 0xf0, 0x10, 0x00, 0x02, 1158 - 0xf8, 0x45, 0x13, 0xf9, 0x10, 0xf8, 0x00, 0x17, 1159 - 0xf8, 0x45, 0x14, 0x39, 0x10, 0xf8, 0x00, 0x17, 1160 - 0xf0, 0x10, 0x00, 0x01, 0xf8, 0x45, 0x14, 0x1f, 1161 - 0xf0, 0x73, 0x14, 0x52, 0x10, 0xf8, 0x00, 0x17, 1162 - 0xf0, 0x10, 0x00, 0x03, 0xf8, 0x45, 0x13, 0xd3, 1163 - 0x10, 0xf8, 0x00, 0x17, 0xf0, 0x10, 0x00, 0x06, 1164 - 0xf8, 0x44, 0x14, 0x52, 0x77, 0x12, 0x00, 0x7b, 1165 - 0x71, 0x82, 0x00, 0x14, 0x61, 0xe4, 0x00, 0x07, 1166 - 0x00, 0x40, 0xf8, 0x30, 0x14, 0x52, 0x49, 0x14, 1167 - 0x48, 0x17, 0xf6, 0x00, 0x88, 0x12, 0xf4, 0x95, 1168 - 0x77, 0x13, 0x00, 0x55, 0x77, 0x11, 0x00, 0x57, 1169 - 0x6d, 0xea, 0x00, 0x3b, 0xe5, 0x01, 0x10, 0xe6, 1170 - 0x00, 0x06, 0x80, 0x81, 0x48, 0x14, 0x00, 0xf8, 1171 - 0x00, 0x17, 0x88, 0x12, 0xf4, 0x95, 0x77, 0x11, 1172 - 0x00, 0x55, 0x10, 0xe2, 0x00, 0x40, 0x80, 0x81, 1173 - 0x77, 0x11, 0x00, 0x57, 0x10, 0xe6, 0x00, 0x07, 1174 - 0x80, 0x81, 0x77, 0x11, 0x00, 0x55, 0x10, 0xe2, 1175 - 0x00, 0x45, 0x80, 0x81, 0x10, 0xe6, 0x00, 0x08, 1176 - 0x77, 0x11, 0x00, 0x57, 0x80, 0x81, 0x77, 0x11, 1177 - 0x00, 0x55, 0x10, 0xe2, 0x00, 0x4a, 0x80, 0x81, 1178 - 0x77, 0x11, 0x00, 0x57, 0x10, 0xe6, 0x00, 0x09, 1179 - 0x80, 0x81, 0xf2, 0x73, 0x14, 0x52, 0x77, 0x11, 1180 - 0x03, 0xc0, 0x77, 0x12, 0x00, 0x7b, 0x10, 0x82, 1181 - 0xf0, 0x00, 0x00, 0x07, 0x88, 0x13, 0xf4, 0x95, 1182 - 0xf4, 0x95, 0x96, 0x1b, 0xf8, 0x30, 0x14, 0x52, 1183 - 0x10, 0xe3, 0x00, 0x35, 0x77, 0x12, 0x00, 0x55, 1184 - 0x80, 0x82, 0x77, 0x12, 0x00, 0x57, 0x10, 0xe6, 1185 - 0x00, 0x04, 0x80, 0x82, 0x77, 0x12, 0x00, 0x55, 1186 - 0x10, 0xe3, 0x00, 0x37, 0x80, 0x82, 0x77, 0x12, 1187 - 0x00, 0x57, 0x10, 0xe6, 0x00, 0x05, 0x80, 0x82, 1188 - 0x48, 0x11, 0xf0, 0x40, 0x00, 0x10, 0xf2, 0x73, 1189 - 0x14, 0x50, 0xf0, 0x40, 0x00, 0x20, 0x77, 0x12, 1190 - 0x00, 0x7b, 0x10, 0x82, 0xf0, 0x00, 0x00, 0x07, 1191 - 0x88, 0x12, 0xf4, 0x95, 0xf4, 0x95, 0x96, 0x0d, 1192 - 0xf8, 0x30, 0x14, 0x52, 0x10, 0xe2, 0x00, 0x34, 1193 - 0x77, 0x13, 0x00, 0x55, 0x80, 0x83, 0x77, 0x13, 1194 - 0x00, 0x57, 0x10, 0xe6, 0x00, 0x02, 0x80, 0x83, 1195 - 0x10, 0xe2, 0x00, 0x36, 0x77, 0x12, 0x00, 0x55, 1196 - 0x80, 0x82, 0x77, 0x12, 0x00, 0x57, 0x10, 0xe6, 1197 - 0x00, 0x03, 0x80, 0x82, 0x48, 0x11, 0xf0, 0x40, 1198 - 0x00, 0x04, 0xf2, 0x73, 0x14, 0x50, 0xf0, 0x40, 1199 - 0x00, 0x08, 0x77, 0x12, 0x00, 0x7b, 0x10, 0x82, 1200 - 0xf0, 0x00, 0x00, 0x07, 0x88, 0x12, 0xf4, 0x95, 1201 - 0xf4, 0x95, 0x96, 0x0e, 0xf8, 0x30, 0x14, 0x52, 1202 - 0x10, 0xe2, 0x00, 0x33, 0x77, 0x12, 0x00, 0x55, 1203 - 0x80, 0x82, 0x77, 0x12, 0x00, 0x57, 0x10, 0xe6, 1204 - 0x00, 0x01, 0x80, 0x82, 0x48, 0x11, 0xf2, 0x73, 1205 - 0x14, 0x50, 0xf0, 0x40, 0x00, 0x02, 0x77, 0x12, 1206 - 0x00, 0x7b, 0x10, 0x82, 0xf0, 0x00, 0x00, 0x07, 1207 - 0x88, 0x12, 0xf4, 0x95, 0xf4, 0x95, 0x96, 0x0f, 1208 - 0xf8, 0x30, 0x14, 0x52, 0x10, 0xe2, 0x00, 0x32, 1209 - 0x77, 0x12, 0x00, 0x55, 0x77, 0x13, 0x00, 0x57, 1210 - 0x80, 0x82, 0x48, 0x11, 0xe7, 0x62, 0xf0, 0x40, 1211 - 0x00, 0x01, 0xe5, 0x01, 0x88, 0x11, 0xf4, 0x95, 1212 - 0x77, 0x12, 0x00, 0x7b, 0x48, 0x11, 0x71, 0x82, 1213 - 0x00, 0x12, 0x1a, 0xe2, 0x00, 0x07, 0x80, 0xe2, 1214 - 0x00, 0x07, 0xf9, 0x80, 0x16, 0x9a, 0xee, 0x01, 1215 - 0x8a, 0x17, 0x48, 0x11, 0x8a, 0x16, 0x8a, 0x11, 1216 - 0xf4, 0xe4, 0x4a, 0x11, 0x88, 0x11, 0x77, 0x0e, 1217 - 0x00, 0x05, 0x77, 0x12, 0x00, 0x55, 0xe8, 0x04, 1218 - 0xf6, 0xb8, 0x28, 0xe1, 0x00, 0x02, 0xee, 0xff, 1219 - 0x80, 0x82, 0x77, 0x12, 0x00, 0x57, 0xf0, 0x20, 1220 - 0x80, 0x00, 0xee, 0x01, 0x1a, 0x82, 0x77, 0x12, 1221 - 0x00, 0x57, 0x80, 0x82, 0xe8, 0x01, 0x32, 0xe1, 1222 - 0x00, 0x02, 0xf5, 0x82, 0x77, 0x11, 0x00, 0x54, 1223 - 0xf6, 0x93, 0x18, 0x81, 0x77, 0x11, 0x00, 0x54, 1224 - 0xf2, 0xa0, 0x80, 0x81, 0x8a, 0x11, 0xf4, 0x95, 1225 - 0xf4, 0xe4, 0x4a, 0x11, 0x4a, 0x16, 0xf4, 0x95, 1226 - 0x71, 0x04, 0x00, 0x11, 0xfb, 0x80, 0x16, 0xa2, 1227 - 0x88, 0x16, 0xf4, 0x95, 0x77, 0x12, 0x00, 0x55, 1228 - 0x10, 0xe6, 0x00, 0x03, 0x80, 0x82, 0x77, 0x12, 1229 - 0x00, 0x56, 0x10, 0xe1, 0x00, 0x02, 0x77, 0x13, 1230 - 0x00, 0x56, 0x80, 0x82, 0x77, 0x12, 0x00, 0x56, 1231 - 0x10, 0xe1, 0x00, 0x03, 0x80, 0x82, 0x10, 0xe1, 1232 - 0x00, 0x04, 0x77, 0x12, 0x00, 0x56, 0x80, 0x82, 1233 - 0x77, 0x12, 0x00, 0x56, 0x10, 0xe1, 0x00, 0x01, 1234 - 0x80, 0x82, 0xe7, 0x12, 0xe5, 0x01, 0xf9, 0x80, 1235 - 0x16, 0x9a, 0x8a, 0x16, 0x8a, 0x11, 0xf4, 0xe4, 1236 - 0x4a, 0x11, 0x4a, 0x16, 0x4a, 0x17, 0xee, 0xf9, 1237 - 0x77, 0x11, 0x00, 0x7b, 0x76, 0x00, 0x00, 0x16, 1238 - 0x76, 0x01, 0x00, 0x17, 0x76, 0x02, 0x00, 0x1a, 1239 - 0x76, 0x03, 0x00, 0x1b, 0x76, 0x04, 0x00, 0x1c, 1240 - 0x76, 0x05, 0x00, 0x1d, 0x71, 0x81, 0x00, 0x17, 1241 - 0x71, 0xe7, 0x00, 0x06, 0x00, 0x11, 0x10, 0x81, 1242 - 0xf8, 0x44, 0x14, 0xdf, 0xf9, 0x80, 0x16, 0x53, 1243 - 0xf6, 0xb8, 0xfb, 0x80, 0x15, 0x85, 0xf0, 0x20, 1244 - 0xff, 0xff, 0xf6, 0xb8, 0xfb, 0x80, 0x16, 0x08, 1245 - 0xf0, 0x20, 0xff, 0xff, 0x77, 0x11, 0x00, 0x7b, 1246 - 0x71, 0x81, 0x00, 0x17, 0x76, 0xe7, 0x00, 0x06, 1247 - 0x00, 0x01, 0x48, 0x17, 0x77, 0x16, 0x00, 0x00, 1248 - 0x77, 0x10, 0x00, 0x04, 0x77, 0x15, 0x00, 0x03, 1249 - 0x77, 0x14, 0x00, 0x02, 0x77, 0x13, 0x00, 0x01, 1250 - 0xf0, 0x00, 0x00, 0x39, 0x76, 0xe7, 0x00, 0x08, 1251 - 0x00, 0x1f, 0x76, 0xe7, 0x00, 0x07, 0x00, 0x00, 1252 - 0x88, 0x0e, 0x77, 0x1a, 0x00, 0x05, 0x48, 0x17, 1253 - 0xf0, 0x00, 0x00, 0x09, 0x88, 0x12, 0x48, 0x18, 1254 - 0x88, 0x19, 0xe8, 0x00, 0xf0, 0x72, 0x15, 0x2c, 1255 - 0x73, 0x19, 0x00, 0x11, 0x76, 0x82, 0x00, 0x00, 1256 - 0x11, 0x91, 0x73, 0x11, 0x00, 0x19, 0x70, 0xe2, 1257 - 0x00, 0x03, 0x00, 0x16, 0x70, 0xe2, 0x00, 0x04, 1258 - 0x00, 0x13, 0x70, 0xe2, 0x00, 0x05, 0x00, 0x14, 1259 - 0x81, 0xe2, 0x00, 0x01, 0x70, 0xe2, 0x00, 0x06, 1260 - 0x00, 0x15, 0x70, 0xe2, 0x00, 0x07, 0x00, 0x10, 1261 - 0x80, 0xe2, 0x00, 0x02, 0x73, 0x0e, 0x00, 0x11, 1262 - 0xf1, 0x00, 0x00, 0x1e, 0x6d, 0xee, 0x00, 0x05, 1263 - 0x6d, 0xeb, 0x00, 0x05, 0x6d, 0xec, 0x00, 0x05, 1264 - 0x6d, 0xed, 0x00, 0x05, 0x6d, 0xe8, 0x00, 0x05, 1265 - 0xf0, 0x00, 0x00, 0x01, 0x81, 0x91, 0x6d, 0xea, 1266 - 0x00, 0x08, 0x73, 0x11, 0x00, 0x0e, 0xee, 0x07, 1267 - 0x76, 0xe7, 0x00, 0x41, 0x00, 0x24, 0x76, 0xe7, 1268 - 0x00, 0x46, 0x00, 0x25, 0x76, 0xe7, 0x00, 0x4b, 1269 - 0x00, 0x26, 0x76, 0xe7, 0x00, 0x50, 0x00, 0x27, 1270 - 0x8a, 0x17, 0x8a, 0x16, 0x8a, 0x11, 0xf4, 0xe4, 1271 - 0x4a, 0x11, 0x4a, 0x16, 0xee, 0xfe, 0x88, 0x11, 1272 - 0x56, 0x06, 0x4e, 0x00, 0xf9, 0x80, 0x16, 0xa2, 1273 - 0xf7, 0xb8, 0x10, 0xf8, 0x00, 0x11, 0xf0, 0x10, 1274 - 0xff, 0xff, 0xfa, 0x45, 0x15, 0x60, 0x77, 0x16, 1275 - 0xff, 0xff, 0x77, 0x12, 0x00, 0x7b, 0x49, 0x11, 1276 - 0x10, 0x82, 0xf6, 0x03, 0xf0, 0x00, 0x00, 0x09, 1277 - 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x10, 0x81, 1278 - 0xf8, 0x44, 0x15, 0x71, 0xf2, 0x73, 0x15, 0x71, 1279 - 0xf4, 0x95, 0xe7, 0x16, 0x77, 0x11, 0x00, 0x7b, 1280 - 0x10, 0x81, 0xf0, 0x00, 0x00, 0x09, 0x88, 0x11, 1281 - 0xf4, 0x95, 0x77, 0x12, 0x00, 0x06, 0x10, 0x81, 1282 - 0xf8, 0x45, 0x15, 0x5c, 0x6e, 0xea, 0xff, 0xff, 1283 - 0x15, 0x69, 0x6d, 0xe9, 0x00, 0x08, 0x76, 0x86, 1284 - 0x00, 0x01, 0xe9, 0x01, 0x56, 0x00, 0xf1, 0x80, 1285 - 0x10, 0xf8, 0x00, 0x0b, 0xf8, 0x45, 0x15, 0x7e, 1286 - 0xfb, 0x80, 0x15, 0x85, 0xf4, 0x95, 0x48, 0x16, 1287 - 0xf9, 0x80, 0x16, 0x9a, 0xee, 0x02, 0x48, 0x16, 1288 - 0x8a, 0x16, 0x8a, 0x11, 0xf4, 0xe4, 0x4a, 0x11, 1289 - 0xee, 0xff, 0xfb, 0x80, 0x16, 0xa2, 0x88, 0x11, 1290 - 0xf4, 0x95, 0x77, 0x10, 0xff, 0xff, 0xf4, 0xa9, 1291 - 0xf8, 0x30, 0x15, 0xc4, 0x10, 0xe1, 0x00, 0x03, 1292 - 0x77, 0x12, 0x00, 0x55, 0x80, 0x82, 0x77, 0x12, 1293 - 0x00, 0x56, 0x76, 0x82, 0x00, 0x00, 0x77, 0x12, 1294 - 0x00, 0x56, 0x76, 0x82, 0x00, 0x00, 0x77, 0x12, 1295 - 0x00, 0x56, 0x76, 0x82, 0x00, 0x00, 0x77, 0x12, 1296 - 0x00, 0x56, 0x76, 0x82, 0x00, 0x00, 0x77, 0x12, 1297 - 0x00, 0x56, 0x76, 0x82, 0x00, 0x00, 0x10, 0xe1, 1298 - 0x00, 0x02, 0xf0, 0x00, 0x00, 0x08, 0x32, 0xf8, 1299 - 0x00, 0x08, 0x77, 0x12, 0x00, 0x54, 0xe8, 0x01, 1300 - 0xf4, 0x82, 0xf4, 0x93, 0x18, 0x82, 0x77, 0x12, 1301 - 0x00, 0x54, 0xf0, 0x40, 0x00, 0x00, 0x80, 0x82, 1302 - 0x10, 0xe1, 0x00, 0x01, 0xf9, 0x80, 0x16, 0x76, 1303 - 0x10, 0xe1, 0x00, 0x01, 0xf9, 0x80, 0x16, 0x66, 1304 - 0xf0, 0x73, 0x16, 0x03, 0x77, 0x11, 0x00, 0x7b, 1305 - 0x71, 0x81, 0x00, 0x11, 0x71, 0xe1, 0x00, 0x07, 1306 - 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x10, 0xe1, 1307 - 0x00, 0x09, 0xf9, 0x80, 0x15, 0x85, 0x77, 0x11, 1308 - 0x00, 0x7b, 0x71, 0x81, 0x00, 0x11, 0x10, 0xe1, 1309 - 0x00, 0x09, 0xfb, 0x80, 0x15, 0x85, 0xf0, 0x00, 1310 - 0x00, 0x08, 0x77, 0x11, 0x00, 0x7b, 0x71, 0x81, 1311 - 0x00, 0x11, 0x10, 0xe1, 0x00, 0x09, 0xfb, 0x80, 1312 - 0x15, 0x85, 0xf0, 0x00, 0x00, 0x10, 0x77, 0x11, 1313 - 0x00, 0x7b, 0x71, 0x81, 0x00, 0x11, 0x10, 0xe1, 1314 - 0x00, 0x09, 0xfb, 0x80, 0x15, 0x85, 0xf0, 0x00, 1315 - 0x00, 0x18, 0x77, 0x11, 0x00, 0x7b, 0x71, 0x81, 1316 - 0x00, 0x11, 0x10, 0xe1, 0x00, 0x09, 0xfb, 0x80, 1317 - 0x15, 0x85, 0xf0, 0x00, 0x00, 0x20, 0x77, 0x11, 1318 - 0x00, 0x7b, 0x71, 0x81, 0x00, 0x11, 0x10, 0xe1, 1319 - 0x00, 0x09, 0xfb, 0x80, 0x15, 0x85, 0xf0, 0x00, 1320 - 0x00, 0x28, 0xf9, 0x80, 0x16, 0x9a, 0xee, 0x01, 1321 - 0x8a, 0x11, 0xf4, 0xe4, 0x4a, 0x11, 0xee, 0xff, 1322 - 0xfb, 0x80, 0x16, 0xa2, 0x88, 0x11, 0xf4, 0x95, 1323 - 0x77, 0x10, 0xff, 0xff, 0xf4, 0xa9, 0xf8, 0x30, 1324 - 0x16, 0x41, 0x77, 0x11, 0x00, 0x55, 0x76, 0x81, 1325 - 0x00, 0x1e, 0x77, 0x11, 0x00, 0x56, 0x76, 0x81, 1326 - 0x00, 0x00, 0x77, 0x11, 0x00, 0x56, 0x76, 0x81, 1327 - 0x00, 0x00, 0x77, 0x11, 0x00, 0x56, 0x76, 0x81, 1328 - 0x00, 0x00, 0x77, 0x11, 0x00, 0x56, 0x76, 0x81, 1329 - 0x00, 0x00, 0x77, 0x11, 0x00, 0x56, 0x76, 0x81, 1330 - 0x00, 0x00, 0x77, 0x11, 0x00, 0x56, 0x76, 0x81, 1331 - 0x00, 0x00, 0x77, 0x11, 0x00, 0x56, 0x76, 0x81, 1332 - 0x00, 0x00, 0x77, 0x11, 0x00, 0x56, 0x76, 0x81, 1333 - 0x00, 0x00, 0x77, 0x11, 0x00, 0x56, 0x76, 0x81, 1334 - 0x00, 0x00, 0x77, 0x11, 0x00, 0x56, 0xf2, 0x73, 1335 - 0x16, 0x4e, 0x76, 0x81, 0x00, 0x00, 0x77, 0x11, 1336 - 0x00, 0x7b, 0x71, 0x81, 0x00, 0x11, 0x71, 0xe1, 1337 - 0x00, 0x07, 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 1338 - 0x10, 0xe1, 0x00, 0x39, 0xf9, 0x80, 0x16, 0x08, 1339 - 0xf9, 0x80, 0x16, 0x9a, 0xee, 0x01, 0x8a, 0x11, 1340 - 0xf4, 0xe4, 0x4a, 0x11, 0x77, 0x11, 0x00, 0x7b, 1341 - 0x10, 0x81, 0xf0, 0x00, 0x00, 0x04, 0x88, 0x11, 1342 - 0xf4, 0x95, 0xf4, 0x95, 0x10, 0x81, 0xfa, 0x44, 1343 - 0x16, 0x63, 0xf4, 0x95, 0xee, 0xff, 0x76, 0x81, 1344 - 0x00, 0x01, 0xee, 0x01, 0x8a, 0x11, 0xf4, 0xe4, 1345 - 0xf0, 0x10, 0x00, 0x10, 0x4a, 0x11, 0x32, 0xf8, 1346 - 0x00, 0x08, 0xee, 0xff, 0x77, 0x11, 0x00, 0x01, 1347 - 0xe8, 0x01, 0xee, 0x01, 0xf4, 0x82, 0x1a, 0x81, 1348 - 0x80, 0x81, 0x8a, 0x11, 0xf4, 0x95, 0xf4, 0xe4, 1349 - 0xf0, 0x10, 0x00, 0x10, 0x4a, 0x11, 0x32, 0xf8, 1350 - 0x00, 0x08, 0xee, 0xff, 0xe8, 0x01, 0x77, 0x11, 1351 - 0x00, 0x00, 0xf4, 0x82, 0xee, 0x01, 0xf4, 0x93, 1352 - 0x18, 0x81, 0x80, 0x81, 0x8a, 0x11, 0xf4, 0x95, 1353 - 0xf4, 0xe4, 0x4a, 0x11, 0xf0, 0x10, 0x00, 0x10, 1354 - 0x77, 0x11, 0x00, 0x00, 0x32, 0xf8, 0x00, 0x08, 1355 - 0xee, 0xff, 0x11, 0x81, 0xe8, 0x01, 0xee, 0x01, 1356 - 0x77, 0x11, 0x00, 0x00, 0xf4, 0x82, 0xf2, 0xa0, 1357 - 0x80, 0x81, 0x8a, 0x11, 0xf4, 0x95, 0xf4, 0xe4, 1358 - 0xf2, 0x73, 0x16, 0x9e, 0xf6, 0xbb, 0xf4, 0x95, 1359 - 0xf4, 0x95, 0xf4, 0x95, 0xf4, 0x95, 0xf4, 0xe4, 1360 - 0xf2, 0x73, 0x16, 0xa6, 0xf7, 0xbb, 0xf4, 0x95, 1361 - 0xf4, 0x95, 0xf4, 0x95, 0xf4, 0x95, 0xf4, 0xe4, 1362 - 0x4a, 0x11, 0x4a, 0x16, 0xf4, 0x95, 0x71, 0x04, 1363 - 0x00, 0x16, 0xfb, 0x80, 0x16, 0xa2, 0x88, 0x11, 1364 - 0xf4, 0x95, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1365 - 0x76, 0x82, 0x00, 0x0e, 0x10, 0xe6, 0x00, 0x0e, 1366 - 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x80, 0x82, 1367 - 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 1368 - 0x00, 0x0d, 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 1369 - 0x10, 0xe6, 0x00, 0x0d, 0x80, 0x82, 0x71, 0xe1, 1370 - 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x0c, 1371 - 0x10, 0xe6, 0x00, 0x0c, 0x71, 0xe1, 0x00, 0x06, 1372 - 0x00, 0x12, 0x80, 0x82, 0x71, 0xe1, 0x00, 0x05, 1373 - 0x00, 0x12, 0x76, 0x82, 0x00, 0x0b, 0x10, 0xe6, 1374 - 0x00, 0x0b, 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 1375 - 0x80, 0x82, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1376 - 0x76, 0x82, 0x00, 0x0a, 0x71, 0xe1, 0x00, 0x06, 1377 - 0x00, 0x12, 0x10, 0xe6, 0x00, 0x0a, 0x80, 0x82, 1378 - 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 1379 - 0x00, 0x09, 0x10, 0xe6, 0x00, 0x09, 0x71, 0xe1, 1380 - 0x00, 0x06, 0x00, 0x12, 0x80, 0x82, 0x71, 0xe1, 1381 - 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x08, 1382 - 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x10, 0xe6, 1383 - 0x00, 0x08, 0x80, 0x82, 0x71, 0xe1, 0x00, 0x05, 1384 - 0x00, 0x12, 0x76, 0x82, 0x00, 0x07, 0x10, 0xe6, 1385 - 0x00, 0x07, 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 1386 - 0x80, 0x82, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1387 - 0x76, 0x82, 0x00, 0x06, 0x71, 0xe1, 0x00, 0x06, 1388 - 0x00, 0x12, 0x10, 0xe6, 0x00, 0x06, 0x80, 0x82, 1389 - 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 1390 - 0x00, 0x05, 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 1391 - 0x10, 0xe6, 0x00, 0x05, 0x80, 0x82, 0x71, 0xe1, 1392 - 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x04, 1393 - 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x10, 0xe6, 1394 - 0x00, 0x04, 0x80, 0x82, 0x71, 0xe1, 0x00, 0x05, 1395 - 0x00, 0x12, 0x76, 0x82, 0x00, 0x03, 0x71, 0xe1, 1396 - 0x00, 0x06, 0x00, 0x12, 0x10, 0xe6, 0x00, 0x03, 1397 - 0x80, 0x82, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1398 - 0x76, 0x82, 0x00, 0x02, 0x10, 0xe6, 0x00, 0x02, 1399 - 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x80, 0x82, 1400 - 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 1401 - 0x00, 0x01, 0x10, 0xe6, 0x00, 0x01, 0x71, 0xe1, 1402 - 0x00, 0x06, 0x00, 0x12, 0x80, 0x82, 0x71, 0xe1, 1403 - 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 1404 - 0x71, 0xe1, 0x00, 0x06, 0x00, 0x13, 0xe7, 0x62, 1405 - 0xe5, 0x01, 0xf9, 0x80, 0x16, 0x9a, 0x8a, 0x16, 1406 - 0x8a, 0x11, 0xf4, 0xe4, 0x4a, 0x11, 0x88, 0x11, 1407 - 0xf4, 0x95, 0xf4, 0x95, 0x71, 0xe1, 0x00, 0x05, 1408 - 0x00, 0x12, 0xee, 0xff, 0x76, 0x82, 0x00, 0x00, 1409 - 0xee, 0x01, 0x71, 0xe1, 0x00, 0x06, 0x00, 0x11, 1410 - 0x69, 0x81, 0x00, 0x01, 0x8a, 0x11, 0xf4, 0x95, 1411 - 0xf4, 0xe4, 0x4a, 0x11, 0x88, 0x11, 0xf4, 0x95, 1412 - 0xf4, 0x95, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1413 - 0xee, 0xff, 0x76, 0x82, 0x00, 0x01, 0xee, 0x01, 1414 - 0x71, 0xe1, 0x00, 0x06, 0x00, 0x11, 0x69, 0x81, 1415 - 0x00, 0x01, 0x8a, 0x11, 0xf4, 0x95, 0xf4, 0xe4, 1416 - 0x4a, 0x11, 0x77, 0x11, 0x00, 0x7b, 0x10, 0x81, 1417 - 0xf0, 0x00, 0x00, 0x94, 0x88, 0x11, 0xf4, 0x95, 1418 - 0xf4, 0x95, 0x10, 0x81, 0xfa, 0x44, 0x17, 0x9c, 1419 - 0xf4, 0x95, 0xee, 0xff, 0xf9, 0x80, 0x16, 0x53, 1420 - 0x77, 0x11, 0x00, 0x7b, 0x10, 0x81, 0xf0, 0x00, 1421 - 0x00, 0x94, 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, 1422 - 0x76, 0x81, 0x00, 0x01, 0xee, 0x01, 0x76, 0xe1, 1423 - 0x00, 0x01, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x02, 1424 - 0x00, 0x21, 0x76, 0xe1, 0x00, 0x03, 0x00, 0x20, 1425 - 0x76, 0xe1, 0x00, 0x04, 0x00, 0x23, 0x76, 0xe1, 1426 - 0x00, 0x05, 0x00, 0x22, 0x76, 0xe1, 0x00, 0x06, 1427 - 0x00, 0x38, 0x76, 0xe1, 0x00, 0x07, 0x00, 0x39, 1428 - 0x76, 0xe1, 0x00, 0x08, 0x00, 0x15, 0x76, 0xe1, 1429 - 0x00, 0x09, 0x00, 0x14, 0x76, 0xe1, 0x00, 0x0a, 1430 - 0x00, 0x00, 0x76, 0xe1, 0x00, 0x0b, 0x00, 0x41, 1431 - 0x76, 0xe1, 0x00, 0x0c, 0x00, 0x40, 0x76, 0xe1, 1432 - 0x00, 0x0d, 0x00, 0x43, 0x76, 0xe1, 0x00, 0x0e, 1433 - 0x00, 0x42, 0x76, 0xe1, 0x00, 0x0f, 0x00, 0x48, 1434 - 0x76, 0xe1, 0x00, 0x10, 0x00, 0x49, 0x76, 0xe1, 1435 - 0x00, 0x11, 0x00, 0x1b, 0x76, 0xe1, 0x00, 0x12, 1436 - 0x00, 0x1a, 0x8a, 0x11, 0xf4, 0x95, 0xf4, 0xe4, 1437 - 0x4a, 0x11, 0xee, 0xfd, 0x88, 0x11, 0x56, 0x06, 1438 - 0x4e, 0x00, 0xf9, 0x80, 0x16, 0xa2, 0x77, 0x12, 1439 - 0x00, 0x7b, 0x77, 0x0e, 0x00, 0x09, 0x10, 0x82, 1440 - 0x28, 0xf8, 0x00, 0x11, 0xf0, 0x00, 0x00, 0x95, 1441 - 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x10, 0x81, 1442 - 0xf8, 0x45, 0x17, 0xf0, 0xf2, 0x73, 0x17, 0xfd, 1443 - 0x77, 0x11, 0xff, 0xff, 0x76, 0x81, 0x00, 0x01, 1444 - 0xe9, 0x01, 0x56, 0x00, 0xf1, 0x80, 0x10, 0xf8, 1445 - 0x00, 0x0b, 0xf8, 0x45, 0x17, 0xfd, 0xfb, 0x80, 1446 - 0x18, 0x10, 0xf4, 0x95, 0x48, 0x11, 0xf9, 0x80, 1447 - 0x16, 0x9a, 0xee, 0x03, 0x48, 0x11, 0x8a, 0x11, 1448 - 0xf4, 0x95, 0xf4, 0xe4, 0x4a, 0x11, 0x88, 0x11, 1449 - 0xf4, 0x95, 0xee, 0xff, 0x71, 0xe1, 0x00, 0x01, 1450 - 0x00, 0x11, 0xee, 0x01, 0x10, 0x81, 0x8a, 0x11, 1451 - 0xf4, 0x95, 0xf4, 0xe4, 0x4a, 0x11, 0xee, 0xff, 1452 - 0xfb, 0x80, 0x16, 0xa2, 0x88, 0x11, 0xf4, 0x95, 1453 - 0x77, 0x10, 0xff, 0xff, 0xf4, 0xa9, 0xf8, 0x30, 1454 - 0x18, 0xc3, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1455 - 0x76, 0x82, 0x00, 0x00, 0x71, 0xe1, 0x00, 0x06, 1456 - 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x71, 0xe1, 1457 - 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x01, 1458 - 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x76, 0x82, 1459 - 0x00, 0x00, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1460 - 0x76, 0x82, 0x00, 0x02, 0x71, 0xe1, 0x00, 0x06, 1461 - 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x71, 0xe1, 1462 - 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x03, 1463 - 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x76, 0x82, 1464 - 0x00, 0x00, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1465 - 0x76, 0x82, 0x00, 0x04, 0x71, 0xe1, 0x00, 0x06, 1466 - 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x71, 0xe1, 1467 - 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x05, 1468 - 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x76, 0x82, 1469 - 0x00, 0x00, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1470 - 0x76, 0x82, 0x00, 0x06, 0x71, 0xe1, 0x00, 0x06, 1471 - 0x00, 0x12, 0x76, 0x82, 0x00, 0x01, 0x71, 0xe1, 1472 - 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x07, 1473 - 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x76, 0x82, 1474 - 0x20, 0x00, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1475 - 0x76, 0x82, 0x00, 0x08, 0x71, 0xe1, 0x00, 0x06, 1476 - 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x71, 0xe1, 1477 - 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x09, 1478 - 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x76, 0x82, 1479 - 0x00, 0x00, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1480 - 0x76, 0x82, 0x00, 0x0a, 0x71, 0xe1, 0x00, 0x06, 1481 - 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x71, 0xe1, 1482 - 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x0b, 1483 - 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x76, 0x82, 1484 - 0x00, 0x00, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1485 - 0x76, 0x82, 0x00, 0x0c, 0x71, 0xe1, 0x00, 0x06, 1486 - 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x71, 0xe1, 1487 - 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x0d, 1488 - 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x76, 0x82, 1489 - 0x00, 0x00, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1490 - 0x76, 0x82, 0x00, 0x0e, 0x71, 0xe1, 0x00, 0x06, 1491 - 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x10, 0xe1, 1492 - 0x00, 0x07, 0xf9, 0x80, 0x16, 0x76, 0x10, 0xe1, 1493 - 0x00, 0x08, 0xf9, 0x80, 0x16, 0x76, 0x10, 0xe1, 1494 - 0x00, 0x07, 0xf9, 0x80, 0x16, 0x66, 0x10, 0xe1, 1495 - 0x00, 0x08, 0xf9, 0x80, 0x16, 0x66, 0xf0, 0x73, 1496 - 0x18, 0xd1, 0x77, 0x11, 0x00, 0x7b, 0x10, 0x81, 1497 - 0xfb, 0x80, 0x18, 0x10, 0xf0, 0x00, 0x00, 0x95, 1498 - 0x77, 0x11, 0x00, 0x7b, 0x10, 0x81, 0xfb, 0x80, 1499 - 0x18, 0x10, 0xf0, 0x00, 0x00, 0x9e, 0xf9, 0x80, 1500 - 0x16, 0x9a, 0xee, 0x01, 0x8a, 0x11, 0xf4, 0xe4, 1501 - 0x4a, 0x11, 0x88, 0x11, 0xee, 0xff, 0xf4, 0x95, 1502 - 0x10, 0x04, 0x71, 0xe1, 0x00, 0x03, 0x00, 0x11, 1503 - 0xee, 0x01, 0x80, 0x81, 0x8a, 0x11, 0xf4, 0x95, 1504 - 0xf4, 0xe4, 0x4a, 0x11, 0x4a, 0x16, 0xf4, 0x95, 1505 - 0x71, 0x04, 0x00, 0x16, 0xfb, 0x80, 0x16, 0xa2, 1506 - 0x88, 0x11, 0xf4, 0x95, 0x71, 0xe1, 0x00, 0x02, 1507 - 0x00, 0x12, 0x76, 0x82, 0x00, 0x10, 0x10, 0xe6, 1508 - 0x00, 0x01, 0x71, 0xe1, 0x00, 0x03, 0x00, 0x12, 1509 - 0x80, 0x82, 0x71, 0xe1, 0x00, 0x04, 0x00, 0x12, 1510 - 0x10, 0xe6, 0x00, 0x02, 0x80, 0x82, 0xe7, 0x62, 1511 - 0x71, 0xe1, 0x00, 0x02, 0x00, 0x13, 0xe5, 0x01, 1512 - 0xf9, 0x80, 0x16, 0x9a, 0x8a, 0x16, 0x8a, 0x11, 1513 - 0xf4, 0xe4, 0x4a, 0x11, 0x88, 0x11, 0xee, 0xff, 1514 - 0xee, 0x01, 0x10, 0xe1, 0x00, 0x01, 0x8a, 0x11, 1515 - 0xf4, 0x95, 0xf4, 0xe4, 0x4a, 0x11, 0x77, 0x11, 1516 - 0x00, 0x7b, 0x10, 0x81, 0xf0, 0x00, 0x00, 0xb3, 1517 - 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x10, 0x81, 1518 - 0xfa, 0x44, 0x19, 0x2a, 0xf4, 0x95, 0xee, 0xff, 1519 - 0xf9, 0x80, 0x16, 0x53, 0x77, 0x11, 0x00, 0x7b, 1520 - 0x10, 0x81, 0xf0, 0x00, 0x00, 0xb3, 0x88, 0x11, 1521 - 0xf4, 0x95, 0xf4, 0x95, 0x76, 0x81, 0x00, 0x01, 1522 - 0xee, 0x01, 0x76, 0xe1, 0x00, 0x01, 0x00, 0x00, 1523 - 0x76, 0xe1, 0x00, 0x02, 0x00, 0x13, 0x76, 0xe1, 1524 - 0x00, 0x03, 0x00, 0x26, 0x76, 0xe1, 0x00, 0x04, 1525 - 0x00, 0x25, 0x76, 0xe1, 0x00, 0x05, 0x00, 0x24, 1526 - 0x76, 0xe1, 0x00, 0x06, 0x00, 0x00, 0x76, 0xe1, 1527 - 0x00, 0x07, 0x00, 0x17, 0x76, 0xe1, 0x00, 0x08, 1528 - 0x00, 0x32, 0x76, 0xe1, 0x00, 0x09, 0x00, 0x31, 1529 - 0x76, 0xe1, 0x00, 0x0a, 0x00, 0x30, 0x8a, 0x11, 1530 - 0xf4, 0x95, 0xf4, 0xe4, 0x4a, 0x11, 0x4a, 0x16, 1531 - 0x4a, 0x17, 0xee, 0xff, 0xf4, 0x95, 0x71, 0x06, 1532 - 0x00, 0x17, 0xfb, 0x80, 0x16, 0xa2, 0x88, 0x11, 1533 - 0xf4, 0x95, 0xf7, 0xb8, 0x10, 0xf8, 0x00, 0x11, 1534 - 0xf0, 0x10, 0xff, 0xff, 0xfa, 0x45, 0x19, 0x73, 1535 - 0x77, 0x16, 0xff, 0xff, 0x77, 0x12, 0x00, 0x7b, 1536 - 0x77, 0x0e, 0x00, 0x05, 0x10, 0x82, 0x28, 0xf8, 1537 - 0x00, 0x11, 0xf0, 0x00, 0x00, 0xb4, 0x88, 0x11, 1538 - 0xf4, 0x95, 0xf4, 0x95, 0x10, 0x81, 0xf8, 0x44, 1539 - 0x19, 0x84, 0xf2, 0x73, 0x19, 0x84, 0xf4, 0x95, 1540 - 0xe7, 0x16, 0x77, 0x11, 0x00, 0x7b, 0x10, 0x81, 1541 - 0xf0, 0x00, 0x00, 0xb4, 0x88, 0x11, 0xf4, 0x95, 1542 - 0x77, 0x12, 0x00, 0x02, 0x10, 0x81, 0xf8, 0x45, 1543 - 0x19, 0x6f, 0x6e, 0xea, 0xff, 0xff, 0x19, 0x7c, 1544 - 0x6d, 0xe9, 0x00, 0x05, 0x61, 0xf8, 0x00, 0x17, 1545 - 0x00, 0x01, 0xfa, 0x20, 0x19, 0x8f, 0x76, 0x86, 1546 - 0x00, 0x01, 0xfb, 0x80, 0x19, 0x97, 0xf4, 0x95, 1547 - 0x48, 0x16, 0xf9, 0x80, 0x16, 0x9a, 0xee, 0x01, 1548 - 0x8a, 0x17, 0x48, 0x16, 0x8a, 0x16, 0x8a, 0x11, 1549 - 0xf4, 0xe4, 0x4a, 0x11, 0xee, 0xff, 0xfb, 0x80, 1550 - 0x16, 0xa2, 0x88, 0x11, 0xf4, 0x95, 0x77, 0x10, 1551 - 0xff, 0xff, 0xf4, 0xa9, 0xf8, 0x30, 0x19, 0xcc, 1552 - 0x71, 0xe1, 0x00, 0x02, 0x00, 0x12, 0x69, 0x82, 1553 - 0x00, 0x10, 0x71, 0xe1, 0x00, 0x02, 0x00, 0x12, 1554 - 0x68, 0x82, 0xf7, 0xff, 0x71, 0xe1, 0x00, 0x02, 1555 - 0x00, 0x12, 0x68, 0x82, 0xfb, 0xff, 0x71, 0xe1, 1556 - 0x00, 0x02, 0x00, 0x12, 0x68, 0x82, 0xff, 0xf0, 1557 - 0x71, 0xe1, 0x00, 0x03, 0x00, 0x12, 0x76, 0x82, 1558 - 0xff, 0xff, 0x71, 0xe1, 0x00, 0x04, 0x00, 0x12, 1559 - 0x76, 0x82, 0xff, 0xff, 0x71, 0xe1, 0x00, 0x02, 1560 - 0x00, 0x12, 0x69, 0x82, 0x00, 0x20, 0x71, 0xe1, 1561 - 0x00, 0x02, 0x00, 0x11, 0xf2, 0x73, 0x19, 0xda, 1562 - 0x68, 0x81, 0xff, 0xef, 0x77, 0x11, 0x00, 0x7b, 1563 - 0x10, 0x81, 0xfb, 0x80, 0x19, 0x97, 0xf0, 0x00, 1564 - 0x00, 0xb4, 0x77, 0x11, 0x00, 0x7b, 0x10, 0x81, 1565 - 0xfb, 0x80, 0x19, 0x97, 0xf0, 0x00, 0x00, 0xb9, 1566 - 0xf9, 0x80, 0x16, 0x9a, 0xee, 0x01, 0x8a, 0x11, 1567 - 0xf4, 0xe4, 0x00, 0xa4, 0x00, 0x00, 0x19, 0xdf, 1568 - 0x00, 0x01, 0x2a, 0xe6, 0x00, 0x00, 0x00, 0x01, 1569 - 0x2a, 0xe7, 0x00, 0x00, 0x00, 0x03, 0x2a, 0x12, 1570 - 0x0c, 0x01, 0xc3, 0x4f, 0x00, 0x00, 0x00, 0x01, 1571 - 0x2a, 0x15, 0x00, 0x00, 0x00, 0x02, 0x2a, 0x16, 1572 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x2a, 0x5d, 1573 - 0x00, 0x43, 0x00, 0x6f, 0x00, 0x70, 0x00, 0x79, 1574 - 0x00, 0x72, 0x00, 0x69, 0x00, 0x67, 0x00, 0x68, 1575 - 0x00, 0x74, 0x00, 0x20, 0x00, 0x54, 0x00, 0x65, 1576 - 0x00, 0x63, 0x00, 0x68, 0x00, 0x6e, 0x00, 0x6f, 1577 - 0x00, 0x54, 0x00, 0x72, 0x00, 0x65, 0x00, 0x6e, 1578 - 0x00, 0x64, 0x00, 0x20, 0x00, 0x41, 0x00, 0x47, 1579 - 0x00, 0x00, 0x00, 0x04, 0x2a, 0x76, 0x00, 0x30, 1580 - 0x00, 0x2e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x0c, 1581 - 0x2a, 0x7a, 0x00, 0x46, 0x00, 0x65, 0x00, 0x62, 1582 - 0x00, 0x20, 0x00, 0x32, 0x00, 0x37, 0x00, 0x20, 1583 - 0x00, 0x32, 0x00, 0x30, 0x00, 0x30, 0x00, 0x31, 1584 - 0x00, 0x00, 0x00, 0x09, 0x2a, 0x86, 0x00, 0x31, 1585 - 0x00, 0x34, 0x00, 0x3a, 0x00, 0x33, 0x00, 0x35, 1586 - 0x00, 0x3a, 0x00, 0x33, 0x00, 0x33, 0x00, 0x00, 1587 - 0x00, 0x0f, 0x2a, 0x8f, 0x00, 0x00, 0x00, 0x00, 1588 - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 1589 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1590 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1591 - 0x00, 0x00, 0x00, 0x01, 0x2a, 0x9e, 0x00, 0x00, 1592 - 0x00, 0x01, 0x2a, 0x9f, 0x00, 0x00, 0x00, 0x01, 1593 - 0x2a, 0xa0, 0x00, 0x00, 0x00, 0x01, 0x2a, 0xa1, 1594 - 0x00, 0x00, 0x00, 0x01, 0x2a, 0xa2, 0x00, 0x00, 1595 - 0x00, 0x01, 0x29, 0x7e, 0x00, 0x00, 0x00, 0x02, 1596 - 0x29, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 1597 - 0x29, 0x82, 0xff, 0xff, 0x00, 0x01, 0x2a, 0xa7, 1598 - 0x00, 0x00, 0x00, 0x05, 0x2a, 0xa8, 0x71, 0x41, 1599 - 0x20, 0x00, 0x20, 0x00, 0x00, 0x23, 0x04, 0x00, 1600 - 0x00, 0x0a, 0x2a, 0xad, 0x00, 0x00, 0x00, 0x00, 1601 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1602 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1603 - 0x00, 0x0f, 0x2a, 0xb7, 0x00, 0x00, 0x00, 0x00, 1604 - 0x00, 0x00, 0x00, 0x40, 0x00, 0xa0, 0x82, 0x40, 1605 - 0x00, 0x08, 0x30, 0x7f, 0x00, 0x80, 0x01, 0x80, 1606 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1607 - 0x00, 0x00, 0x00, 0x01, 0x27, 0x6e, 0x00, 0x00, 1608 - 0x00, 0x01, 0x27, 0x6f, 0x00, 0x00, 0x00, 0x00, 1609 - 0x00, 0x09, 0x00, 0x00, 0x1a, 0x83, 0x04, 0xe8, 1610 - 0x04, 0xcf, 0x04, 0xc5, 0x04, 0xba, 0x04, 0xb0, 1611 - 0x04, 0xac, 0x04, 0x9c, 0x04, 0x8c, 0x04, 0x81, 1612 - 0x00, 0x78, 0x00, 0x00, 0x01, 0x00, 0xf2, 0x73, 1613 - 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1614 - 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1615 - 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1616 - 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1617 - 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1618 - 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1619 - 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1620 - 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1621 - 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1622 - 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1623 - 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1624 - 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1625 - 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1626 - 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1627 - 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1628 - 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1629 - 0x07, 0xaa, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1630 - 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1631 - 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1632 - 0x02, 0x23, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1633 - 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1634 - 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1635 - 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1636 - 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1637 - 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1638 - 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1639 - 0x05, 0xe5, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1640 - 0x02, 0xb5, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1641 - 0x0e, 0x33, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1642 - 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0x00, 0x00, 1643 }; 1644
··· 2 #include <asm/types.h> 3 4 static u8 dsp_bootcode [] = { 5 + 0x08, 0xaa, 0x00, 0x18, 0x00, 0x03, 0x08, 0x00, 6 + 0x00, 0x10, 0x00, 0x00, 0x01, 0x80, 0x18, 0x5f, 7 + 0x00, 0x00, 0x01, 0x80, 0x77, 0x18, 0x2a, 0xeb, 8 + 0x6b, 0xf8, 0x00, 0x18, 0x03, 0xff, 0x68, 0xf8, 9 + 0x00, 0x18, 0xff, 0xfe, 0xf7, 0xb8, 0xf7, 0xbe, 10 + 0xf6, 0xb9, 0xf4, 0xa0, 0xf6, 0xb7, 0xf6, 0xb5, 11 + 0xf6, 0xb6, 0xf0, 0x20, 0x19, 0xdf, 0xf1, 0x00, 12 + 0x00, 0x01, 0xf8, 0x4d, 0x01, 0xab, 0xf6, 0xb8, 13 + 0xf0, 0x20, 0x19, 0xdf, 0xf0, 0x73, 0x01, 0xa5, 14 + 0x7e, 0xf8, 0x00, 0x12, 0xf0, 0x00, 0x00, 0x01, 15 + 0x47, 0xf8, 0x00, 0x11, 0x7e, 0x92, 0x00, 0xf8, 16 + 0x00, 0x11, 0xf0, 0x00, 0x00, 0x01, 0x7e, 0xf8, 17 + 0x00, 0x11, 0xf0, 0x00, 0x00, 0x01, 0x6c, 0x89, 18 + 0x01, 0x9a, 0xf7, 0xb8, 0xee, 0xfc, 0xf0, 0x20, 19 + 0xff, 0xff, 0xf1, 0x00, 0x00, 0x01, 0xf8, 0x4d, 20 + 0x01, 0xbf, 0xf2, 0x73, 0x01, 0xb9, 0x4e, 0x02, 21 + 0xf4, 0x95, 0xf5, 0xe3, 0x56, 0x02, 0x7e, 0x00, 22 + 0x11, 0x00, 0xfa, 0x4c, 0x01, 0xb7, 0x6b, 0x03, 23 + 0x00, 0x01, 0xf6, 0xb8, 0xee, 0x04, 0xf0, 0x74, 24 + 0x0d, 0xa7, 0xf0, 0x74, 0x01, 0xc5, 0x4a, 0x11, 25 + 0x4a, 0x16, 0x72, 0x11, 0x2a, 0xe6, 0x10, 0xf8, 26 + 0x00, 0x11, 0xfa, 0x45, 0x01, 0xdb, 0xf4, 0x95, 27 + 0xee, 0xff, 0x48, 0x11, 0xf0, 0x00, 0x2a, 0xc6, 28 + 0x88, 0x16, 0xf4, 0x95, 0xf4, 0x95, 0x10, 0xee, 29 + 0xff, 0xff, 0xf4, 0xe3, 0x6c, 0xe9, 0xff, 0xff, 30 + 0x01, 0xd5, 0x10, 0xf8, 0x2a, 0xe7, 0xf8, 0x45, 31 + 0x01, 0xe2, 0x10, 0xf8, 0x2a, 0xe7, 0xf4, 0xe3, 32 + 0xf0, 0x74, 0x01, 0xff, 0xee, 0x01, 0x8a, 0x16, 33 + 0x8a, 0x11, 0xfc, 0x00, 0xf7, 0xb8, 0xe9, 0x20, 34 + 0x4a, 0x11, 0x09, 0xf8, 0x2a, 0xe6, 0xf8, 0x4e, 35 + 0x01, 0xf3, 0xf2, 0x73, 0x01, 0xfd, 0xf4, 0x95, 36 + 0xe8, 0x01, 0x72, 0x11, 0x2a, 0xe6, 0x49, 0x11, 37 + 0x80, 0xe1, 0x2a, 0xc6, 0xf3, 0x00, 0x00, 0x01, 38 + 0xe8, 0x00, 0x81, 0xf8, 0x2a, 0xe6, 0x8a, 0x11, 39 + 0xfc, 0x00, 0xf4, 0x95, 0xf0, 0x73, 0x02, 0x00, 40 + 0x10, 0xf8, 0x2a, 0x0f, 0xfc, 0x00, 0x4a, 0x11, 41 + 0xf0, 0x74, 0x02, 0x02, 0x80, 0xf8, 0x2a, 0x10, 42 + 0x73, 0x08, 0x00, 0x09, 0x40, 0xf8, 0x2a, 0x15, 43 + 0x82, 0xf8, 0x00, 0x11, 0xf4, 0x95, 0x77, 0x10, 44 + 0x03, 0xe8, 0xf5, 0xa9, 0xf8, 0x30, 0x02, 0x21, 45 + 0x71, 0xf8, 0x2a, 0x10, 0x2a, 0x15, 0x56, 0xf8, 46 + 0x2a, 0x0c, 0xf0, 0xe3, 0x4e, 0xf8, 0x2a, 0x16, 47 + 0xe8, 0x00, 0x4e, 0xf8, 0x2a, 0x0c, 0x8a, 0x11, 48 + 0xfc, 0x00, 0x4a, 0x06, 0x4a, 0x07, 0x4a, 0x1d, 49 + 0x68, 0xf8, 0x00, 0x07, 0x7d, 0x3f, 0x69, 0xf8, 50 + 0x00, 0x07, 0x40, 0x00, 0x68, 0xf8, 0x00, 0x1d, 51 + 0xff, 0xfc, 0x6b, 0xf8, 0x2a, 0x0f, 0x00, 0x01, 52 + 0x8a, 0x1d, 0x8a, 0x07, 0x8a, 0x06, 0xf4, 0xeb, 53 + 0xee, 0xfd, 0x76, 0xf8, 0x2a, 0x0f, 0x00, 0x00, 54 + 0x76, 0x00, 0x00, 0x00, 0xfb, 0x80, 0x19, 0x4c, 55 + 0xf4, 0x95, 0xe8, 0x00, 0x80, 0xf8, 0x2a, 0x11, 56 + 0xf9, 0x80, 0x19, 0x07, 0x80, 0xf8, 0x2a, 0x0e, 57 + 0xf9, 0x80, 0x16, 0x66, 0x76, 0x00, 0x2a, 0x12, 58 + 0x10, 0xf8, 0x2a, 0x11, 0xf9, 0x80, 0x18, 0xe3, 59 + 0x10, 0xf8, 0x2a, 0x0e, 0xf9, 0x80, 0x16, 0x66, 60 + 0x10, 0xf8, 0x2a, 0x0e, 0xf9, 0x80, 0x16, 0x87, 61 + 0xee, 0x03, 0xfc, 0x00, 0x4a, 0x11, 0xf6, 0xb8, 62 + 0xf4, 0x95, 0xf0, 0x20, 0x80, 0x00, 0x11, 0xf8, 63 + 0x2a, 0x5a, 0xf8, 0x4d, 0x02, 0x93, 0x11, 0xf8, 64 + 0x2a, 0x9f, 0xf8, 0x4c, 0x02, 0x7c, 0x77, 0x12, 65 + 0x2a, 0x39, 0x49, 0x12, 0x01, 0xf8, 0x2a, 0x9f, 66 + 0x89, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x71, 0x81, 67 + 0x00, 0x11, 0x6c, 0xe1, 0xff, 0xab, 0x02, 0x93, 68 + 0x6b, 0xf8, 0x2a, 0x9f, 0x00, 0x01, 0xe9, 0x05, 69 + 0x01, 0xe2, 0x00, 0x03, 0x81, 0xf8, 0x2a, 0xa0, 70 + 0xf0, 0x73, 0x02, 0x95, 0x72, 0x11, 0x2a, 0x9f, 71 + 0xf4, 0x95, 0x10, 0xe1, 0x2a, 0x39, 0x6b, 0xf8, 72 + 0x2a, 0x9f, 0x00, 0x01, 0x11, 0xf8, 0x2a, 0x9f, 73 + 0x09, 0xf8, 0x2a, 0xa0, 0xf8, 0x4c, 0x02, 0x93, 74 + 0x76, 0xf8, 0x2a, 0x5a, 0x00, 0x00, 0x76, 0xf8, 75 + 0x2a, 0x9f, 0x00, 0x00, 0x76, 0xf8, 0x2a, 0xa0, 76 + 0x00, 0x00, 0x88, 0x11, 0xf4, 0x95, 0x48, 0x11, 77 + 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfe, 78 + 0x10, 0xf8, 0x2a, 0x5a, 0xf8, 0x44, 0x02, 0xb2, 79 + 0x76, 0xf8, 0x2a, 0x5a, 0x00, 0x01, 0xf0, 0x74, 80 + 0x02, 0x58, 0x88, 0x11, 0xf4, 0x95, 0x77, 0x10, 81 + 0x80, 0x00, 0xf4, 0xa9, 0xf8, 0x30, 0x02, 0xb2, 82 + 0x48, 0x11, 0xf0, 0x30, 0x00, 0xff, 0x80, 0x00, 83 + 0x10, 0xf8, 0x2a, 0x5b, 0xf9, 0x80, 0x18, 0xd6, 84 + 0xee, 0x02, 0x8a, 0x11, 0xfc, 0x00, 0xf4, 0x95, 85 + 0x4a, 0x08, 0x4a, 0x09, 0x4a, 0x0a, 0x4a, 0x0b, 86 + 0x4a, 0x0c, 0x4a, 0x0d, 0x4a, 0x10, 0x4a, 0x11, 87 + 0x4a, 0x12, 0x4a, 0x13, 0x4a, 0x14, 0x4a, 0x15, 88 + 0x4a, 0x16, 0x4a, 0x17, 0x4a, 0x17, 0x4a, 0x19, 89 + 0x4a, 0x0e, 0x4a, 0x06, 0x4a, 0x07, 0x4a, 0x1a, 90 + 0x4a, 0x1d, 0x4a, 0x1b, 0x4a, 0x1c, 0x68, 0xf8, 91 + 0x00, 0x07, 0x7d, 0x3f, 0x69, 0xf8, 0x00, 0x07, 92 + 0x40, 0x00, 0x68, 0xf8, 0x00, 0x1d, 0xff, 0xfc, 93 + 0x48, 0x18, 0x68, 0xf8, 0x00, 0x18, 0xff, 0xfe, 94 + 0xf4, 0x95, 0xf4, 0x95, 0x4a, 0x08, 0xee, 0xfd, 95 + 0xf0, 0x74, 0x02, 0x58, 0x88, 0x11, 0xf4, 0x95, 96 + 0x77, 0x10, 0x80, 0x00, 0xf4, 0xa9, 0xf8, 0x30, 97 + 0x02, 0xef, 0x48, 0x11, 0xf0, 0x30, 0x00, 0xff, 98 + 0x80, 0x00, 0x10, 0xf8, 0x2a, 0x5b, 0xf9, 0x80, 99 + 0x18, 0xd6, 0xee, 0x03, 0x8a, 0x18, 0xf4, 0x95, 100 + 0x8a, 0x1c, 0x8a, 0x1b, 0x8a, 0x1d, 0x8a, 0x1a, 101 + 0x8a, 0x07, 0x8a, 0x06, 0x8a, 0x0e, 0x8a, 0x19, 102 + 0x8a, 0x17, 0x8a, 0x17, 0x8a, 0x16, 0x8a, 0x15, 103 + 0x8a, 0x14, 0x8a, 0x13, 0x8a, 0x12, 0x8a, 0x11, 104 + 0x8a, 0x10, 0x8a, 0x0d, 0x8a, 0x0c, 0x8a, 0x0b, 105 + 0x8a, 0x0a, 0x8a, 0x09, 0x8a, 0x08, 0xf4, 0xeb, 106 + 0x4a, 0x11, 0x77, 0x11, 0x2a, 0x39, 0x76, 0x81, 107 + 0x00, 0x55, 0x77, 0x12, 0x2a, 0x18, 0x10, 0xe2, 108 + 0x00, 0x01, 0x80, 0xe1, 0x00, 0x01, 0x10, 0xe2, 109 + 0x00, 0x02, 0x80, 0xe1, 0x00, 0x02, 0x76, 0xe1, 110 + 0x00, 0x03, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x04, 111 + 0x00, 0xaa, 0xf0, 0x74, 0x02, 0x98, 0x8a, 0x11, 112 + 0xfc, 0x00, 0x4a, 0x11, 0x88, 0x11, 0xf4, 0x95, 113 + 0xf4, 0x95, 0x10, 0x81, 0x6f, 0xf8, 0x2a, 0x9e, 114 + 0x0c, 0x88, 0xe8, 0xff, 0x18, 0xe1, 0x00, 0x01, 115 + 0x1a, 0xf8, 0x2a, 0x9e, 0xf0, 0x30, 0x1f, 0xff, 116 + 0x80, 0xf8, 0x2a, 0x9e, 0x8a, 0x11, 0xfc, 0x00, 117 + 0x4a, 0x11, 0x77, 0x11, 0x2a, 0x39, 0x76, 0x81, 118 + 0x00, 0x55, 0x77, 0x12, 0x2a, 0x18, 0x11, 0xe2, 119 + 0x00, 0x01, 0x81, 0xe1, 0x00, 0x01, 0x11, 0xe2, 120 + 0x00, 0x02, 0x81, 0xe1, 0x00, 0x02, 0x76, 0xe1, 121 + 0x00, 0x03, 0x00, 0x02, 0x48, 0x08, 0x6f, 0xe1, 122 + 0x00, 0x04, 0x0c, 0x98, 0xf0, 0x30, 0x00, 0xff, 123 + 0x80, 0xe1, 0x00, 0x05, 0x76, 0xe1, 0x00, 0x06, 124 + 0x00, 0xaa, 0xf0, 0x74, 0x02, 0x98, 0x8a, 0x11, 125 + 0xfc, 0x00, 0x4a, 0x11, 0x77, 0x11, 0x2a, 0x39, 126 + 0x76, 0x81, 0x00, 0x55, 0x77, 0x12, 0x2a, 0x18, 127 + 0x10, 0xe2, 0x00, 0x01, 0x80, 0xe1, 0x00, 0x01, 128 + 0x10, 0xe2, 0x00, 0x02, 0x80, 0xe1, 0x00, 0x02, 129 + 0x76, 0xe1, 0x00, 0x03, 0x00, 0x04, 0x48, 0x11, 130 + 0xf0, 0x00, 0x00, 0x04, 0x88, 0x12, 0xf4, 0x95, 131 + 0x77, 0x13, 0x2a, 0x76, 0xe9, 0x00, 0xe5, 0x98, 132 + 0xf3, 0x00, 0x00, 0x01, 0xf6, 0xb8, 0x48, 0x0b, 133 + 0x08, 0xf8, 0x2a, 0x3c, 0xf8, 0x43, 0x03, 0x71, 134 + 0x76, 0x82, 0x00, 0xaa, 0xf0, 0x74, 0x02, 0x98, 135 + 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xf0, 136 + 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x71, 0x81, 137 + 0x00, 0x14, 0x71, 0xe1, 0x00, 0x01, 0x00, 0x15, 138 + 0x49, 0x11, 0xf3, 0x00, 0x00, 0x02, 0x89, 0x11, 139 + 0xe7, 0x82, 0x6d, 0xea, 0x00, 0x04, 0xe7, 0x83, 140 + 0x6d, 0xeb, 0x00, 0x0a, 0x77, 0x1a, 0x00, 0x05, 141 + 0xf0, 0x72, 0x03, 0xaa, 0x11, 0x81, 0xf2, 0xe8, 142 + 0x80, 0x82, 0xe9, 0xff, 0x19, 0xe1, 0x00, 0x01, 143 + 0xf1, 0xa0, 0x81, 0x92, 0x11, 0xe1, 0x00, 0x0c, 144 + 0xf2, 0xe8, 0x80, 0x83, 0xe9, 0xff, 0x19, 0xe1, 145 + 0x00, 0x0d, 0xf1, 0xa0, 0x81, 0x93, 0x6d, 0xe9, 146 + 0x00, 0x02, 0x48, 0x18, 0x49, 0x18, 0x70, 0x00, 147 + 0x00, 0x15, 0xf0, 0x00, 0x00, 0x04, 0xf3, 0x00, 148 + 0x00, 0x0a, 0x80, 0x01, 0x81, 0x02, 0xf2, 0x74, 149 + 0x0e, 0x54, 0xf4, 0x95, 0x48, 0x14, 0xee, 0x10, 150 + 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xf0, 0x74, 151 + 0x0c, 0x5e, 0x80, 0xf8, 0x2a, 0x5c, 0x77, 0x12, 152 + 0x2a, 0x39, 0x76, 0x82, 0x00, 0x55, 0x77, 0x11, 153 + 0x2a, 0x18, 0x10, 0xe1, 0x00, 0x01, 0x80, 0xe2, 154 + 0x00, 0x01, 0x10, 0xe1, 0x00, 0x02, 0x80, 0xe2, 155 + 0x00, 0x02, 0x76, 0xe2, 0x00, 0x03, 0x00, 0x1c, 156 + 0xf6, 0xb8, 0x56, 0xf8, 0x2a, 0x16, 0xf0, 0xf0, 157 + 0xf0, 0xf8, 0x80, 0xe2, 0x00, 0x07, 0x56, 0xf8, 158 + 0x2a, 0x16, 0xf1, 0xf0, 0xe8, 0xff, 0xf2, 0x80, 159 + 0x80, 0xe2, 0x00, 0x06, 0x56, 0xf8, 0x2a, 0x16, 160 + 0xf1, 0xf8, 0xe8, 0xff, 0xf2, 0x80, 0x80, 0xe2, 161 + 0x00, 0x05, 0x57, 0xf8, 0x2a, 0x16, 0xe8, 0xff, 162 + 0xf2, 0x80, 0x80, 0xe2, 0x00, 0x04, 0x56, 0xf8, 163 + 0x27, 0x6c, 0xf0, 0xf0, 0xf0, 0xf8, 0x80, 0xe2, 164 + 0x00, 0x0b, 0x56, 0xf8, 0x27, 0x6c, 0xf1, 0xf0, 165 + 0xe8, 0xff, 0xf2, 0x80, 0x80, 0xe2, 0x00, 0x0a, 166 + 0x56, 0xf8, 0x27, 0x6c, 0xf1, 0xf8, 0xe8, 0xff, 167 + 0xf2, 0x80, 0x80, 0xe2, 0x00, 0x09, 0xe8, 0xff, 168 + 0x57, 0xf8, 0x27, 0x6c, 0xf2, 0x80, 0x80, 0xe2, 169 + 0x00, 0x08, 0x56, 0xf8, 0x27, 0x6a, 0xf0, 0xf0, 170 + 0xf0, 0xf8, 0x80, 0xe2, 0x00, 0x0f, 0x56, 0xf8, 171 + 0x27, 0x6a, 0xf1, 0xf0, 0xe8, 0xff, 0xf2, 0x80, 172 + 0x80, 0xe2, 0x00, 0x0e, 0x56, 0xf8, 0x27, 0x6a, 173 + 0xf1, 0xf8, 0xe8, 0xff, 0xf2, 0x80, 0x80, 0xe2, 174 + 0x00, 0x0d, 0x57, 0xf8, 0x27, 0x6a, 0xe8, 0xff, 175 + 0xf2, 0x80, 0x80, 0xe2, 0x00, 0x0c, 0x76, 0xe2, 176 + 0x00, 0x13, 0x00, 0x00, 0x76, 0xe2, 0x00, 0x12, 177 + 0x00, 0x00, 0x6f, 0xf8, 0x2a, 0x5c, 0x0c, 0x58, 178 + 0x80, 0xe2, 0x00, 0x11, 0xe8, 0xff, 0x18, 0xf8, 179 + 0x2a, 0x5c, 0x80, 0xe2, 0x00, 0x10, 0x76, 0xe2, 180 + 0x00, 0x17, 0x00, 0x00, 0x76, 0xe2, 0x00, 0x16, 181 + 0x00, 0x00, 0x6f, 0xf8, 0x2a, 0x9e, 0x0c, 0x58, 182 + 0x80, 0xe2, 0x00, 0x15, 0xe8, 0xff, 0x18, 0xf8, 183 + 0x2a, 0x9e, 0x80, 0xe2, 0x00, 0x14, 0x76, 0xe2, 184 + 0x00, 0x1b, 0x00, 0x00, 0x76, 0xe2, 0x00, 0x1a, 185 + 0x00, 0x00, 0x76, 0xe2, 0x00, 0x19, 0x00, 0x00, 186 + 0x70, 0xe2, 0x00, 0x18, 0x27, 0x6e, 0x76, 0xe2, 187 + 0x00, 0x1f, 0x00, 0x00, 0x76, 0xe2, 0x00, 0x1e, 188 + 0x00, 0x00, 0x76, 0xe2, 0x00, 0x1d, 0x00, 0x00, 189 + 0x76, 0xe2, 0x00, 0x1c, 0x00, 0x00, 0x76, 0xe2, 190 + 0x00, 0x20, 0x00, 0xaa, 0xf0, 0x74, 0x02, 0x98, 191 + 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfe, 192 + 0x10, 0xf8, 0x2a, 0x38, 0xf8, 0x45, 0x04, 0xed, 193 + 0x77, 0x12, 0x2a, 0x18, 0x10, 0xe2, 0x00, 0x02, 194 + 0x88, 0x11, 0xf4, 0x95, 0x77, 0x10, 0x00, 0x08, 195 + 0x6d, 0xe9, 0xff, 0xdf, 0xf6, 0xa9, 0xf8, 0x20, 196 + 0x04, 0x75, 0xf0, 0x73, 0x04, 0x7d, 0xf0, 0x10, 197 + 0x00, 0x21, 0xf0, 0x00, 0x1a, 0x83, 0x48, 0x08, 198 + 0x7e, 0xf8, 0x00, 0x08, 0xf4, 0xe2, 0xf0, 0x74, 199 + 0x03, 0x0a, 0xf0, 0x73, 0x04, 0xea, 0x48, 0x12, 200 + 0xf2, 0x74, 0x03, 0x23, 0xf0, 0x00, 0x00, 0x04, 201 + 0xf2, 0x74, 0x03, 0x36, 0xf4, 0x95, 0xe8, 0x00, 202 + 0xf0, 0x73, 0x04, 0xea, 0x77, 0x11, 0x2a, 0x18, 203 + 0xe8, 0xff, 0x6f, 0xe1, 0x00, 0x04, 0x0d, 0x48, 204 + 0x18, 0xe1, 0x00, 0x05, 0xf2, 0x74, 0x09, 0x69, 205 + 0xf4, 0x95, 0xf2, 0xa0, 0xf0, 0x74, 0x03, 0x36, 206 + 0xf0, 0x73, 0x04, 0xea, 0x77, 0x11, 0x2a, 0x18, 207 + 0xe8, 0xff, 0x6f, 0xe1, 0x00, 0x04, 0x0d, 0x48, 208 + 0x18, 0xe1, 0x00, 0x05, 0xf2, 0x74, 0x09, 0x41, 209 + 0xf4, 0x95, 0xf2, 0xa0, 0xf0, 0x74, 0x03, 0x36, 210 + 0xf0, 0x73, 0x04, 0xea, 0xf0, 0x74, 0x03, 0x57, 211 + 0xf0, 0x73, 0x04, 0xea, 0x10, 0xf8, 0x2a, 0x1c, 212 + 0xf0, 0x74, 0x12, 0xa4, 0xf2, 0x74, 0x03, 0x36, 213 + 0xf4, 0x95, 0xe8, 0x00, 0xf0, 0x73, 0x04, 0xea, 214 + 0x48, 0x12, 0xf2, 0x74, 0x03, 0x80, 0xf0, 0x00, 215 + 0x00, 0x04, 0xf2, 0x74, 0x03, 0x36, 0xf4, 0x95, 216 + 0xe8, 0x00, 0xf0, 0x73, 0x04, 0xea, 0x10, 0xf8, 217 + 0x2a, 0x1c, 0xf0, 0x74, 0x12, 0xc5, 0xf2, 0x74, 218 + 0x03, 0x36, 0xf4, 0x95, 0xe8, 0x00, 0xf0, 0x73, 219 + 0x04, 0xea, 0x77, 0x11, 0x2a, 0x18, 0xe8, 0xff, 220 + 0x6f, 0xe1, 0x00, 0x06, 0x0d, 0x48, 0x18, 0xe1, 221 + 0x00, 0x07, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 222 + 0xf2, 0xa0, 0x70, 0x00, 0x00, 0x12, 0x80, 0x01, 223 + 0x10, 0xe1, 0x00, 0x04, 0xf0, 0x74, 0x0e, 0x7a, 224 + 0xf2, 0x74, 0x03, 0x36, 0xf4, 0x95, 0xe8, 0x00, 225 + 0xf0, 0x73, 0x04, 0xea, 0xf0, 0x74, 0x03, 0xbc, 226 + 0x76, 0xf8, 0x2a, 0x38, 0x00, 0x00, 0xee, 0x02, 227 + 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0x77, 0x11, 228 + 0x2a, 0x39, 0x76, 0x81, 0x00, 0x55, 0x77, 0x12, 229 + 0x2a, 0x18, 0x10, 0xe2, 0x00, 0x01, 0x80, 0xe1, 230 + 0x00, 0x01, 0x10, 0xe2, 0x00, 0x02, 0x80, 0xe1, 231 + 0x00, 0x02, 0x76, 0xe1, 0x00, 0x03, 0x00, 0x09, 232 + 0x48, 0x11, 0xf0, 0x00, 0x00, 0x04, 0x88, 0x12, 233 + 0xf4, 0x95, 0x77, 0x13, 0x2a, 0x86, 0xe9, 0x00, 234 + 0xe5, 0x98, 0xf3, 0x00, 0x00, 0x01, 0xf6, 0xb8, 235 + 0x48, 0x0b, 0x08, 0xf8, 0x2a, 0x3c, 0xf8, 0x43, 236 + 0x05, 0x0a, 0x76, 0x82, 0x00, 0xaa, 0xf0, 0x74, 237 + 0x02, 0x98, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 238 + 0x77, 0x11, 0x2a, 0x39, 0x76, 0x81, 0x00, 0x55, 239 + 0x77, 0x13, 0x2a, 0x18, 0x10, 0xe3, 0x00, 0x01, 240 + 0x80, 0xe1, 0x00, 0x01, 0x10, 0xe3, 0x00, 0x02, 241 + 0x80, 0xe1, 0x00, 0x02, 0x13, 0xe3, 0x00, 0x03, 242 + 0x81, 0xe1, 0x00, 0x03, 0x48, 0x11, 0x77, 0x11, 243 + 0x00, 0x00, 0xf8, 0x4d, 0x05, 0x44, 0xf0, 0x00, 244 + 0x00, 0x04, 0x88, 0x12, 0x48, 0x13, 0xf0, 0x00, 245 + 0x00, 0x04, 0x88, 0x13, 0xf4, 0x95, 0xf4, 0x95, 246 + 0xe5, 0x98, 0x6d, 0x91, 0xf6, 0xb8, 0x48, 0x11, 247 + 0x08, 0xf8, 0x2a, 0x3c, 0xf8, 0x43, 0x05, 0x3a, 248 + 0xf0, 0x20, 0x2a, 0x39, 0x49, 0x11, 0xf5, 0x00, 249 + 0x89, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x76, 0xe1, 250 + 0x00, 0x04, 0x00, 0xaa, 0xf0, 0x74, 0x02, 0x98, 251 + 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0x77, 0x11, 252 + 0x2a, 0x39, 0x76, 0x81, 0x00, 0x55, 0x77, 0x12, 253 + 0x2a, 0x18, 0x10, 0xe2, 0x00, 0x01, 0x80, 0xe1, 254 + 0x00, 0x01, 0x10, 0xe2, 0x00, 0x02, 0x80, 0xe1, 255 + 0x00, 0x02, 0x76, 0xe1, 0x00, 0x03, 0x00, 0x0c, 256 + 0x48, 0x11, 0xf0, 0x00, 0x00, 0x04, 0x88, 0x12, 257 + 0xf4, 0x95, 0x77, 0x13, 0x2a, 0x7a, 0xe9, 0x00, 258 + 0xe5, 0x98, 0xf3, 0x00, 0x00, 0x01, 0xf6, 0xb8, 259 + 0x48, 0x0b, 0x08, 0xf8, 0x2a, 0x3c, 0xf8, 0x43, 260 + 0x05, 0x6a, 0x76, 0x82, 0x00, 0xaa, 0xf0, 0x74, 261 + 0x02, 0x98, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 262 + 0x77, 0x11, 0x2a, 0x39, 0x76, 0x81, 0x00, 0x55, 263 + 0x77, 0x12, 0x2a, 0x18, 0x10, 0xe2, 0x00, 0x01, 264 + 0x80, 0xe1, 0x00, 0x01, 0x10, 0xe2, 0x00, 0x02, 265 + 0x80, 0xe1, 0x00, 0x02, 0x76, 0xe1, 0x00, 0x03, 266 + 0x00, 0x19, 0x48, 0x11, 0xf0, 0x00, 0x00, 0x04, 267 + 0x88, 0x12, 0xf4, 0x95, 0x77, 0x13, 0x2a, 0x5d, 268 + 0xe9, 0x00, 0xe5, 0x98, 0xf3, 0x00, 0x00, 0x01, 269 + 0xf6, 0xb8, 0x48, 0x0b, 0x08, 0xf8, 0x2a, 0x3c, 270 + 0xf8, 0x43, 0x05, 0x93, 0x76, 0x82, 0x00, 0xaa, 271 + 0xf0, 0x74, 0x02, 0x98, 0x8a, 0x11, 0xfc, 0x00, 272 + 0x4a, 0x11, 0x88, 0x11, 0x10, 0xf8, 0x2a, 0x38, 273 + 0xf8, 0x44, 0x05, 0xe3, 0x10, 0xf8, 0x2a, 0xa1, 274 + 0xf8, 0x44, 0x05, 0xba, 0x6c, 0xe1, 0xff, 0x56, 275 + 0x05, 0xe3, 0x72, 0x12, 0x2a, 0xa1, 0xf4, 0x95, 276 + 0x70, 0xe2, 0x2a, 0x18, 0x00, 0x11, 0x6b, 0xf8, 277 + 0x2a, 0xa1, 0x00, 0x01, 0xf0, 0x73, 0x05, 0xe3, 278 + 0x72, 0x12, 0x2a, 0xa1, 0xf4, 0x95, 0x70, 0xe2, 279 + 0x2a, 0x18, 0x00, 0x11, 0x10, 0xf8, 0x2a, 0xa1, 280 + 0xf0, 0x00, 0x00, 0x01, 0x88, 0x12, 0xf4, 0x95, 281 + 0xf4, 0x95, 0x6e, 0xe2, 0xff, 0xfc, 0x05, 0xd1, 282 + 0x73, 0x12, 0x2a, 0xa1, 0x48, 0x11, 0xf0, 0x00, 283 + 0x00, 0x05, 0x80, 0xf8, 0x2a, 0xa2, 0x10, 0xf8, 284 + 0x2a, 0xa1, 0x08, 0xf8, 0x2a, 0xa2, 0xf8, 0x44, 285 + 0x05, 0xe3, 0x6c, 0xe1, 0xff, 0xab, 0x05, 0xdd, 286 + 0x76, 0xf8, 0x2a, 0x38, 0x00, 0x01, 0x76, 0xf8, 287 + 0x2a, 0xa1, 0x00, 0x00, 0x76, 0xf8, 0x2a, 0xa2, 288 + 0x00, 0x00, 0x8a, 0x11, 0xfc, 0x00, 0xf4, 0x95, 289 + 0x4a, 0x08, 0x4a, 0x09, 0x4a, 0x0a, 0x4a, 0x0b, 290 + 0x4a, 0x0c, 0x4a, 0x0d, 0x4a, 0x10, 0x4a, 0x11, 291 + 0x4a, 0x12, 0x4a, 0x13, 0x4a, 0x14, 0x4a, 0x15, 292 + 0x4a, 0x16, 0x4a, 0x17, 0x4a, 0x17, 0x4a, 0x19, 293 + 0x4a, 0x0e, 0x4a, 0x06, 0x4a, 0x07, 0x4a, 0x1a, 294 + 0x4a, 0x1d, 0x4a, 0x1b, 0x4a, 0x1c, 0x68, 0xf8, 295 + 0x00, 0x07, 0x7d, 0x3f, 0x69, 0xf8, 0x00, 0x07, 296 + 0x40, 0x00, 0x68, 0xf8, 0x00, 0x1d, 0xff, 0xfc, 297 + 0x48, 0x18, 0x68, 0xf8, 0x00, 0x18, 0xff, 0xfe, 298 + 0xf4, 0x95, 0xf4, 0x95, 0x4a, 0x08, 0xee, 0xff, 299 + 0x10, 0xf8, 0x2a, 0x5b, 0xf9, 0x80, 0x18, 0x04, 300 + 0xf0, 0x74, 0x05, 0xa2, 0xee, 0x01, 0x8a, 0x18, 301 + 0xf4, 0x95, 0x8a, 0x1c, 0x8a, 0x1b, 0x8a, 0x1d, 302 + 0x8a, 0x1a, 0x8a, 0x07, 0x8a, 0x06, 0x8a, 0x0e, 303 + 0x8a, 0x19, 0x8a, 0x17, 0x8a, 0x17, 0x8a, 0x16, 304 + 0x8a, 0x15, 0x8a, 0x14, 0x8a, 0x13, 0x8a, 0x12, 305 + 0x8a, 0x11, 0x8a, 0x10, 0x8a, 0x0d, 0x8a, 0x0c, 306 + 0x8a, 0x0b, 0x8a, 0x0a, 0x8a, 0x09, 0x8a, 0x08, 307 + 0xf4, 0xeb, 0xee, 0xfd, 0x76, 0xf8, 0x2a, 0x38, 308 + 0x00, 0x00, 0x76, 0xf8, 0x2a, 0x5a, 0x00, 0x00, 309 + 0xe8, 0x01, 0x4e, 0x00, 0xfb, 0x80, 0x17, 0xd6, 310 + 0xf4, 0x95, 0xe8, 0x01, 0x80, 0xf8, 0x2a, 0x5b, 311 + 0x76, 0x00, 0x2a, 0x8f, 0xf9, 0x80, 0x16, 0xaa, 312 + 0x10, 0xf8, 0x2a, 0x5b, 0xf9, 0x80, 0x17, 0x5c, 313 + 0x10, 0xf8, 0x2a, 0x5b, 0xf9, 0x80, 0x17, 0x6f, 314 + 0xfb, 0x80, 0x16, 0x66, 0xf4, 0x95, 0xe8, 0x1a, 315 + 0xfb, 0x80, 0x16, 0x87, 0xf4, 0x95, 0xe8, 0x1a, 316 + 0xfb, 0x80, 0x16, 0x66, 0xf4, 0x95, 0xe8, 0x1b, 317 + 0xfb, 0x80, 0x16, 0x87, 0xf4, 0x95, 0xe8, 0x1b, 318 + 0xee, 0x03, 0xfc, 0x00, 0x4a, 0x11, 0xf4, 0x95, 319 + 0x13, 0x02, 0x88, 0x11, 0xe8, 0x00, 0xf8, 0x4d, 320 + 0x06, 0x6a, 0xf3, 0x10, 0x00, 0x01, 0x89, 0x1a, 321 + 0xf4, 0x95, 0xf0, 0x72, 0x06, 0x69, 0x1c, 0x91, 322 + 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0x88, 0x11, 323 + 0x12, 0x03, 0x11, 0x02, 0xf8, 0x45, 0x06, 0x79, 324 + 0xf0, 0x10, 0x00, 0x01, 0x88, 0x1a, 0xf4, 0x95, 325 + 0xf0, 0x72, 0x06, 0x78, 0x81, 0x91, 0x8a, 0x11, 326 + 0xfc, 0x00, 0x4a, 0x11, 0xf4, 0x95, 0x71, 0x02, 327 + 0x00, 0x11, 0x11, 0x03, 0x61, 0xf8, 0x00, 0x11, 328 + 0x00, 0x01, 0xf8, 0x30, 0x06, 0x91, 0xf6, 0xb8, 329 + 0x6f, 0xf8, 0x00, 0x11, 0x0c, 0x1f, 0x88, 0x11, 330 + 0xf3, 0xe8, 0xe8, 0xff, 0x18, 0x81, 0xf1, 0xa0, 331 + 0x81, 0x81, 0xf0, 0x73, 0x06, 0x9d, 0xf6, 0xb8, 332 + 0x6f, 0xf8, 0x00, 0x11, 0x0c, 0x1f, 0x88, 0x11, 333 + 0xf3, 0x30, 0x00, 0xff, 0xf0, 0x20, 0xff, 0x00, 334 + 0x18, 0x81, 0xf1, 0xa0, 0x81, 0x81, 0x8a, 0x11, 335 + 0xfc, 0x00, 0x4a, 0x11, 0xf4, 0x95, 0x11, 0x02, 336 + 0x61, 0xf8, 0x00, 0x0b, 0x00, 0x01, 0xf8, 0x20, 337 + 0x06, 0xb1, 0x49, 0x0b, 0xf6, 0x1f, 0x88, 0x11, 338 + 0xf4, 0x95, 0xf4, 0x95, 0x10, 0x81, 0xf2, 0x73, 339 + 0x06, 0xb8, 0xf0, 0x30, 0x00, 0xff, 0x49, 0x0b, 340 + 0xf6, 0x1f, 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, 341 + 0x12, 0x81, 0xf4, 0x78, 0x8a, 0x11, 0xfc, 0x00, 342 + 0x4a, 0x11, 0xf4, 0x95, 0x71, 0x02, 0x00, 0x12, 343 + 0x13, 0x03, 0x88, 0x11, 0xe8, 0x00, 0xf8, 0x4d, 344 + 0x06, 0xcc, 0xf3, 0x10, 0x00, 0x01, 0x89, 0x1a, 345 + 0xf4, 0x95, 0xf0, 0x72, 0x06, 0xcb, 0x11, 0x92, 346 + 0xf2, 0xc0, 0x81, 0x91, 0x8a, 0x11, 0xfc, 0x00, 347 + 0x88, 0x12, 0x12, 0x02, 0x71, 0x01, 0x00, 0x13, 348 + 0xf8, 0x45, 0x06, 0xdb, 0xf0, 0x10, 0x00, 0x01, 349 + 0x88, 0x1a, 0xf4, 0x95, 0xf0, 0x72, 0x06, 0xda, 350 + 0xe5, 0x98, 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfe, 351 + 0x88, 0x11, 0x11, 0x04, 0x10, 0x06, 0x71, 0x05, 352 + 0x00, 0x12, 0x61, 0xf8, 0x00, 0x12, 0x00, 0x01, 353 + 0xf8, 0x20, 0x06, 0xea, 0xf0, 0x00, 0x00, 0x01, 354 + 0xf6, 0xb8, 0xf0, 0x00, 0x00, 0x01, 0x6f, 0xf8, 355 + 0x00, 0x12, 0x0f, 0x1f, 0x48, 0x08, 0x81, 0x00, 356 + 0xf4, 0x7f, 0x80, 0x01, 0xf2, 0x74, 0x06, 0xba, 357 + 0xf4, 0x95, 0x48, 0x11, 0xee, 0x02, 0x8a, 0x11, 358 + 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfe, 0x88, 0x12, 359 + 0x11, 0x04, 0x10, 0x06, 0x71, 0x05, 0x00, 0x13, 360 + 0x61, 0xf8, 0x00, 0x13, 0x00, 0x01, 0xf8, 0x20, 361 + 0x07, 0x09, 0xf0, 0x00, 0x00, 0x01, 0xf0, 0x00, 362 + 0x00, 0x01, 0x88, 0x11, 0xf6, 0xb8, 0x6f, 0xf8, 363 + 0x00, 0x13, 0x0f, 0x1f, 0x81, 0x00, 0x48, 0x11, 364 + 0xf4, 0x7f, 0x80, 0x01, 0xf2, 0x74, 0x06, 0xce, 365 + 0xf4, 0x95, 0x48, 0x12, 0x48, 0x11, 0xf0, 0x30, 366 + 0xff, 0xfe, 0xee, 0x02, 0x8a, 0x11, 0xfc, 0x00, 367 + 0x4a, 0x11, 0x4a, 0x16, 0x4a, 0x17, 0xee, 0xfc, 368 + 0xf4, 0x95, 0x80, 0x02, 0x71, 0x08, 0x00, 0x16, 369 + 0x10, 0x09, 0x71, 0x0b, 0x00, 0x17, 0x80, 0x03, 370 + 0x71, 0x0a, 0x00, 0x11, 0x48, 0x17, 0xf8, 0x45, 371 + 0x07, 0x3f, 0x70, 0x00, 0x00, 0x11, 0x10, 0x03, 372 + 0xf0, 0x74, 0x06, 0x9f, 0x80, 0x01, 0x70, 0x00, 373 + 0x00, 0x16, 0x10, 0x02, 0xf0, 0x74, 0x06, 0x7b, 374 + 0x6d, 0x91, 0x6d, 0x96, 0x6c, 0xef, 0xff, 0xff, 375 + 0x07, 0x2f, 0xee, 0x04, 0x8a, 0x17, 0x8a, 0x16, 376 + 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfe, 377 + 0x10, 0xf8, 0x2a, 0xe8, 0x08, 0xf8, 0x2a, 0xe9, 378 + 0xf8, 0x45, 0x07, 0x64, 0x76, 0x00, 0x00, 0x01, 379 + 0x62, 0xf8, 0x2a, 0xe9, 0x00, 0x5e, 0xf2, 0x74, 380 + 0x12, 0x0b, 0xf0, 0x00, 0x30, 0x40, 0x72, 0x11, 381 + 0x2a, 0xe9, 0x77, 0x10, 0x00, 0x0f, 0xf5, 0xa9, 382 + 0xf8, 0x20, 0x07, 0x61, 0x6b, 0xf8, 0x2a, 0xe9, 383 + 0x00, 0x01, 0xf0, 0x73, 0x07, 0x64, 0x76, 0xf8, 384 + 0x2a, 0xe9, 0x00, 0x00, 0xee, 0x02, 0x8a, 0x11, 385 + 0xfc, 0x00, 0x4a, 0x11, 0x88, 0x11, 0xe8, 0x00, 386 + 0x75, 0xf8, 0x00, 0x08, 0x00, 0x08, 0xe8, 0x00, 387 + 0x75, 0xf8, 0x00, 0x08, 0x00, 0x09, 0xf6, 0xb8, 388 + 0xf4, 0x95, 0xf0, 0x20, 0xfc, 0x3f, 0x75, 0xf8, 389 + 0x00, 0x08, 0x00, 0x0d, 0xf0, 0x20, 0x0c, 0x30, 390 + 0x75, 0xf8, 0x00, 0x08, 0x00, 0x0c, 0x76, 0xf8, 391 + 0x2a, 0xe8, 0x00, 0x00, 0x76, 0xf8, 0x2a, 0xe9, 392 + 0x00, 0x00, 0x6c, 0x81, 0x07, 0x92, 0x76, 0xf8, 393 + 0x2a, 0xea, 0x00, 0x00, 0xfb, 0x80, 0x16, 0x76, 394 + 0xf4, 0x95, 0xe8, 0x10, 0xe8, 0x00, 0x75, 0xf8, 395 + 0x00, 0x08, 0x00, 0x00, 0xf0, 0x73, 0x07, 0xa8, 396 + 0x76, 0xf8, 0x2a, 0xea, 0x00, 0x01, 0xfb, 0x80, 397 + 0x16, 0x66, 0xf4, 0x95, 0xe8, 0x10, 0xfb, 0x80, 398 + 0x16, 0x87, 0xf4, 0x95, 0xe8, 0x10, 0xe8, 0x00, 399 + 0x75, 0xf8, 0x00, 0x08, 0x00, 0x00, 0xf6, 0xb8, 400 + 0xf4, 0x95, 0xf0, 0x20, 0xff, 0xff, 0x75, 0xf8, 401 + 0x00, 0x08, 0x00, 0x00, 0x8a, 0x11, 0xfc, 0x00, 402 + 0xf4, 0x95, 0x4a, 0x08, 0x4a, 0x09, 0x4a, 0x0a, 403 + 0x4a, 0x06, 0x4a, 0x07, 0x4a, 0x1d, 0x68, 0xf8, 404 + 0x00, 0x07, 0x7d, 0x3f, 0x69, 0xf8, 0x00, 0x07, 405 + 0x40, 0x00, 0x68, 0xf8, 0x00, 0x1d, 0xff, 0xfc, 406 + 0x10, 0xf8, 0x2a, 0xea, 0xf8, 0x45, 0x07, 0xe1, 407 + 0x10, 0xf8, 0x2a, 0xe8, 0xf0, 0x00, 0x00, 0x01, 408 + 0xf0, 0x30, 0x00, 0x0f, 0x80, 0xf8, 0x2a, 0xe8, 409 + 0x10, 0xf8, 0x2a, 0xe8, 0xf8, 0x44, 0x07, 0xd6, 410 + 0xf6, 0xb8, 0xf4, 0x95, 0xf0, 0x20, 0xfc, 0x3f, 411 + 0x75, 0xf8, 0x00, 0x08, 0x00, 0x0d, 0xf0, 0x20, 412 + 0x0c, 0x30, 0x75, 0xf8, 0x00, 0x08, 0x00, 0x0c, 413 + 0xe8, 0x00, 0x75, 0xf8, 0x00, 0x08, 0x00, 0x00, 414 + 0xf6, 0xb8, 0xf4, 0x95, 0xf0, 0x20, 0xff, 0xff, 415 + 0x75, 0xf8, 0x00, 0x08, 0x00, 0x00, 0x8a, 0x1d, 416 + 0x8a, 0x07, 0x8a, 0x06, 0x8a, 0x0a, 0x8a, 0x09, 417 + 0x8a, 0x08, 0xf4, 0xeb, 0xee, 0xff, 0xf2, 0x74, 418 + 0x07, 0x67, 0xf4, 0x95, 0xe8, 0x01, 0xee, 0x01, 419 + 0xfc, 0x00, 0x4a, 0x07, 0x4a, 0x1d, 0x68, 0xf8, 420 + 0x00, 0x07, 0x7d, 0x3f, 0x69, 0xf8, 0x00, 0x07, 421 + 0x40, 0x00, 0x68, 0xf8, 0x00, 0x1d, 0xff, 0xfc, 422 + 0x8a, 0x1d, 0x8a, 0x07, 0xf4, 0xeb, 0x4a, 0x11, 423 + 0x77, 0x11, 0x00, 0x28, 0x76, 0x81, 0x24, 0x00, 424 + 0xe8, 0x00, 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01, 425 + 0xf2, 0x74, 0x07, 0x67, 0xf4, 0x95, 0xe8, 0x00, 426 + 0x77, 0x11, 0x00, 0x1d, 0x68, 0x81, 0x00, 0x7f, 427 + 0xf6, 0xb8, 0xf4, 0x95, 0xf0, 0x20, 0xff, 0x80, 428 + 0x77, 0x11, 0x00, 0x1d, 0xf0, 0x30, 0x01, 0x00, 429 + 0x1a, 0x81, 0x80, 0x81, 0xf0, 0x74, 0x0a, 0x33, 430 + 0xf0, 0x74, 0x11, 0xac, 0xf9, 0x80, 0x13, 0x25, 431 + 0xf9, 0x80, 0x16, 0x53, 0xf9, 0x80, 0x17, 0x82, 432 + 0xf0, 0x74, 0x06, 0x2f, 0xf9, 0x80, 0x14, 0xb2, 433 + 0xf9, 0x80, 0x19, 0x10, 0xf0, 0x74, 0x0d, 0xe3, 434 + 0xf0, 0x74, 0x07, 0xe8, 0xf0, 0x74, 0x02, 0x36, 435 + 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0x60, 0xf8, 436 + 0x27, 0x7b, 0xff, 0xff, 0xf8, 0x30, 0x08, 0x39, 437 + 0x71, 0xf8, 0x27, 0x7b, 0x27, 0x79, 0x60, 0xf8, 438 + 0x27, 0x79, 0xff, 0xff, 0xf8, 0x30, 0x08, 0xb2, 439 + 0x10, 0xf8, 0x29, 0x86, 0x08, 0xf8, 0x27, 0x79, 440 + 0xf0, 0x30, 0x7f, 0xff, 0x88, 0x11, 0xf4, 0x95, 441 + 0x77, 0x10, 0x40, 0x00, 0xf6, 0xa9, 0xf8, 0x30, 442 + 0x08, 0x58, 0x10, 0xf8, 0x27, 0x79, 0x08, 0xf8, 443 + 0x27, 0x7a, 0xf0, 0x30, 0x7f, 0xff, 0x88, 0x11, 444 + 0xf4, 0x95, 0x77, 0x10, 0x40, 0x00, 0xf6, 0xa9, 445 + 0xf8, 0x20, 0x08, 0x63, 0x76, 0xf8, 0x27, 0x79, 446 + 0xff, 0xff, 0x76, 0xf8, 0x27, 0x7b, 0xff, 0xff, 447 + 0xf7, 0xb8, 0xf2, 0x73, 0x08, 0xd9, 0xf0, 0x20, 448 + 0xff, 0xff, 0xf6, 0xb8, 0x56, 0xf8, 0x27, 0x74, 449 + 0xf0, 0xf9, 0x88, 0x11, 0x56, 0xf8, 0x27, 0x72, 450 + 0xf0, 0xf9, 0x88, 0x12, 0xf4, 0x95, 0xf4, 0x95, 451 + 0xe7, 0x20, 0xf4, 0xa9, 0xf8, 0x30, 0x08, 0x8f, 452 + 0xf1, 0x20, 0x27, 0x7c, 0x48, 0x11, 0xf6, 0x00, 453 + 0x88, 0x13, 0xf4, 0x95, 0xf4, 0x95, 0x10, 0x83, 454 + 0x08, 0xf8, 0x27, 0x79, 0xf0, 0x30, 0x7f, 0xff, 455 + 0x88, 0x13, 0xf4, 0x95, 0x77, 0x10, 0x40, 0x00, 456 + 0xf5, 0xab, 0xf8, 0x30, 0x08, 0x8f, 0x6d, 0x91, 457 + 0x48, 0x11, 0xf0, 0x30, 0x01, 0xff, 0x88, 0x11, 458 + 0xf4, 0x95, 0xe7, 0x20, 0xf7, 0xa9, 0xf8, 0x30, 459 + 0x08, 0x74, 0x6d, 0x89, 0x48, 0x11, 0xf0, 0x30, 460 + 0x01, 0xff, 0xf0, 0xe7, 0xf4, 0x95, 0x48, 0x08, 461 + 0x4e, 0xf8, 0x27, 0x74, 0x48, 0x08, 0xf1, 0xf9, 462 + 0x89, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x71, 0xe1, 463 + 0x27, 0x7c, 0x27, 0x7a, 0x60, 0xf8, 0x27, 0x7b, 464 + 0xff, 0xff, 0xf8, 0x30, 0x08, 0xab, 0x48, 0x08, 465 + 0x4e, 0xf8, 0x27, 0x72, 0x76, 0xf8, 0x27, 0x7b, 466 + 0xff, 0xff, 0x76, 0xf8, 0x27, 0x79, 0xff, 0xff, 467 + 0xf2, 0x73, 0x08, 0xd9, 0xf4, 0x95, 0xe8, 0x00, 468 + 0x44, 0xf8, 0x27, 0x73, 0x40, 0xf8, 0x27, 0x75, 469 + 0x82, 0xf8, 0x00, 0x11, 0xf4, 0x95, 0x77, 0x10, 470 + 0x80, 0x00, 0xf6, 0xa9, 0xf8, 0x20, 0x08, 0xd8, 471 + 0xf6, 0xb8, 0x10, 0xf8, 0x27, 0x73, 0xf0, 0x00, 472 + 0x80, 0x00, 0x48, 0x08, 0x4e, 0xf8, 0x27, 0x74, 473 + 0x48, 0x08, 0xf0, 0xf9, 0x88, 0x11, 0xf4, 0x95, 474 + 0xf4, 0x95, 0x71, 0xe1, 0x27, 0x7c, 0x27, 0x7a, 475 + 0xf7, 0xb8, 0x57, 0xf8, 0x27, 0x74, 0xf0, 0x62, 476 + 0xff, 0xff, 0xf0, 0x40, 0xff, 0x80, 0xf2, 0x80, 477 + 0x4e, 0xf8, 0x27, 0x74, 0xe8, 0x00, 0x8a, 0x11, 478 + 0xfc, 0x00, 0x4a, 0x11, 0x4a, 0x16, 0xee, 0xfb, 479 + 0x11, 0xf8, 0x27, 0x71, 0x09, 0xf8, 0x27, 0x73, 480 + 0x89, 0x11, 0x88, 0x10, 0xf4, 0x95, 0xf4, 0x95, 481 + 0xf6, 0xa9, 0xf8, 0x20, 0x08, 0xed, 0xf2, 0x73, 482 + 0x09, 0x0e, 0xf4, 0x95, 0xe8, 0x00, 0xf6, 0x20, 483 + 0x76, 0x00, 0x00, 0x41, 0xf0, 0x74, 0x12, 0xee, 484 + 0x88, 0x16, 0xf4, 0x95, 0xf7, 0xb8, 0x6d, 0x96, 485 + 0x10, 0xf8, 0x00, 0x16, 0xf8, 0x47, 0x09, 0x0a, 486 + 0xe7, 0x61, 0x76, 0x00, 0x00, 0x00, 0x76, 0x01, 487 + 0x00, 0x80, 0x76, 0x02, 0x00, 0xff, 0x76, 0x03, 488 + 0x00, 0x00, 0xf2, 0x74, 0x0c, 0xb9, 0xf4, 0x95, 489 + 0xe8, 0x00, 0x6c, 0xe9, 0xff, 0xff, 0x08, 0xfb, 490 + 0x73, 0x16, 0x00, 0x0e, 0xf0, 0x66, 0x00, 0x41, 491 + 0xee, 0x05, 0x8a, 0x16, 0x8a, 0x11, 0xfc, 0x00, 492 + 0x4a, 0x11, 0xf4, 0x95, 0x71, 0x02, 0x00, 0x13, 493 + 0xf6, 0xb8, 0x77, 0x11, 0x7f, 0xff, 0x57, 0xf8, 494 + 0x27, 0x72, 0x48, 0x11, 0xf2, 0x80, 0xf0, 0x00, 495 + 0x80, 0x00, 0x88, 0x11, 0xf6, 0x40, 0xf0, 0xe0, 496 + 0xf1, 0xf1, 0xe8, 0x01, 0xf2, 0x80, 0x80, 0xf8, 497 + 0x27, 0x78, 0x77, 0x12, 0x80, 0x00, 0x57, 0xf8, 498 + 0x27, 0x72, 0x48, 0x12, 0xf2, 0x80, 0x88, 0x12, 499 + 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x82, 0x09, 0x38, 500 + 0xe8, 0x00, 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01, 501 + 0xf0, 0x73, 0x09, 0x3d, 0xf0, 0x20, 0x80, 0x01, 502 + 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01, 0x70, 0x81, 503 + 0x00, 0x13, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 504 + 0xf0, 0x30, 0x7f, 0xff, 0x11, 0xf8, 0x29, 0x86, 505 + 0xf5, 0x20, 0xf3, 0x30, 0x7f, 0xff, 0x89, 0x11, 506 + 0xf4, 0x95, 0x77, 0x10, 0x40, 0x00, 0xf6, 0xa9, 507 + 0xf8, 0x20, 0x09, 0x54, 0xf2, 0x73, 0x09, 0x67, 508 + 0xf4, 0x95, 0xe8, 0x02, 0x6f, 0xf8, 0x27, 0x7a, 509 + 0x0d, 0x20, 0xf3, 0x30, 0x7f, 0xff, 0x89, 0x11, 510 + 0xf4, 0x95, 0x77, 0x10, 0x40, 0x00, 0xf6, 0xa9, 511 + 0xf8, 0x20, 0x09, 0x64, 0xf2, 0x73, 0x09, 0x67, 512 + 0xf4, 0x95, 0xe8, 0x01, 0x80, 0xf8, 0x27, 0x7b, 513 + 0xe8, 0x00, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 514 + 0x11, 0xf8, 0x29, 0x86, 0xf5, 0x20, 0xf3, 0x30, 515 + 0x7f, 0xff, 0x89, 0x11, 0xf4, 0x95, 0x77, 0x10, 516 + 0x40, 0x00, 0xf6, 0xa9, 0xf8, 0x20, 0x09, 0x7a, 517 + 0xf2, 0x73, 0x09, 0x8d, 0xf4, 0x95, 0xe8, 0x02, 518 + 0x6f, 0xf8, 0x27, 0x7a, 0x0d, 0x20, 0xf3, 0x30, 519 + 0x7f, 0xff, 0x89, 0x11, 0xf4, 0x95, 0x77, 0x10, 520 + 0x40, 0x00, 0xf6, 0xa9, 0xf8, 0x20, 0x09, 0x8a, 521 + 0xf2, 0x73, 0x09, 0x8d, 0xf4, 0x95, 0xe8, 0x01, 522 + 0x80, 0xf8, 0x27, 0x79, 0xe8, 0x00, 0x8a, 0x11, 523 + 0xfc, 0x00, 0x4a, 0x11, 0xf4, 0x95, 0x71, 0x02, 524 + 0x00, 0x12, 0x88, 0x11, 0xf6, 0xb8, 0x57, 0xf8, 525 + 0x27, 0x72, 0xf0, 0x20, 0x7f, 0xff, 0xf2, 0x80, 526 + 0xf0, 0x00, 0x80, 0x00, 0x80, 0x81, 0x57, 0xf8, 527 + 0x27, 0x72, 0xe8, 0x01, 0xf3, 0xf1, 0xf2, 0x80, 528 + 0x80, 0xf8, 0x27, 0x78, 0x77, 0x11, 0x80, 0x00, 529 + 0x48, 0x11, 0x57, 0xf8, 0x27, 0x72, 0xf2, 0x80, 530 + 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x81, 531 + 0x09, 0xb5, 0xe8, 0x00, 0x75, 0xf8, 0x00, 0x08, 532 + 0x00, 0x01, 0xf0, 0x73, 0x09, 0xba, 0xf0, 0x20, 533 + 0x80, 0x01, 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01, 534 + 0x45, 0xf8, 0x27, 0x71, 0x43, 0xf8, 0x27, 0x73, 535 + 0x83, 0xf8, 0x00, 0x11, 0xf4, 0x95, 0xe7, 0x20, 536 + 0xf6, 0xa9, 0xf8, 0x30, 0x09, 0xc9, 0xf2, 0x73, 537 + 0x09, 0xe4, 0x77, 0x12, 0x00, 0x00, 0x57, 0xf8, 538 + 0x27, 0x72, 0xf0, 0x20, 0x7f, 0xff, 0xf2, 0x80, 539 + 0x49, 0x12, 0xf5, 0x00, 0xf3, 0x00, 0x80, 0x00, 540 + 0x61, 0xf8, 0x00, 0x0b, 0x80, 0x00, 0xf8, 0x30, 541 + 0x09, 0xdc, 0xf1, 0x20, 0x80, 0x00, 0xf5, 0x20, 542 + 0x89, 0x12, 0xf4, 0x95, 0x48, 0x12, 0x6f, 0xf8, 543 + 0x27, 0x73, 0x0d, 0x00, 0xf4, 0x95, 0x49, 0x0b, 544 + 0x4f, 0xf8, 0x27, 0x72, 0x8a, 0x11, 0xfe, 0x00, 545 + 0x48, 0x12, 0xf4, 0x95, 0x4a, 0x11, 0x4a, 0x16, 546 + 0x4a, 0x17, 0xee, 0xfc, 0xf4, 0x95, 0x71, 0x08, 547 + 0x00, 0x16, 0x88, 0x17, 0xf0, 0x74, 0x08, 0x30, 548 + 0x48, 0x18, 0x70, 0x00, 0x00, 0x16, 0xf2, 0x74, 549 + 0x09, 0x8f, 0xf0, 0x00, 0x00, 0x02, 0x88, 0x11, 550 + 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x81, 0x0a, 0x0a, 551 + 0xf2, 0x74, 0x08, 0xdb, 0xf4, 0x95, 0x48, 0x16, 552 + 0x48, 0x18, 0x70, 0x00, 0x00, 0x16, 0xf2, 0x74, 553 + 0x09, 0x8f, 0xf0, 0x00, 0x00, 0x02, 0x88, 0x11, 554 + 0x10, 0x02, 0x70, 0x01, 0x00, 0x11, 0x80, 0x00, 555 + 0xf2, 0x74, 0x06, 0xce, 0xf4, 0x95, 0x48, 0x17, 556 + 0x49, 0x11, 0x48, 0x17, 0xf6, 0x00, 0x88, 0x17, 557 + 0xe7, 0x60, 0xf5, 0xa9, 0xf8, 0x20, 0x0a, 0x2d, 558 + 0x48, 0x16, 0xf6, 0x20, 0x88, 0x11, 0x48, 0x18, 559 + 0x70, 0x00, 0x00, 0x11, 0xf2, 0x74, 0x09, 0x8f, 560 + 0xf0, 0x00, 0x00, 0x02, 0x88, 0x11, 0x70, 0x01, 561 + 0x00, 0x11, 0x10, 0x02, 0x80, 0x00, 0xf2, 0x74, 562 + 0x06, 0xce, 0xf4, 0x95, 0x48, 0x17, 0xee, 0x04, 563 + 0x48, 0x16, 0x8a, 0x17, 0x8a, 0x16, 0x8a, 0x11, 564 + 0xfc, 0x00, 0xee, 0xfd, 0xe8, 0x00, 0x4e, 0xf8, 565 + 0x27, 0x70, 0xe8, 0x00, 0x4e, 0xf8, 0x27, 0x72, 566 + 0xe8, 0x00, 0x4e, 0xf8, 0x27, 0x74, 0xe8, 0x00, 567 + 0x4e, 0xf8, 0x27, 0x76, 0x76, 0xf8, 0x27, 0x79, 568 + 0xff, 0xff, 0x76, 0xf8, 0x27, 0x7a, 0x00, 0x00, 569 + 0x76, 0xf8, 0x27, 0x7b, 0xff, 0xff, 0x76, 0xf8, 570 + 0x27, 0x78, 0x00, 0x00, 0xe8, 0x00, 0x75, 0xf8, 571 + 0x00, 0x08, 0x00, 0x01, 0x76, 0x00, 0x00, 0x00, 572 + 0x76, 0x01, 0x02, 0x00, 0xf2, 0x74, 0x12, 0xdc, 573 + 0xf0, 0x20, 0x27, 0x7c, 0xee, 0x03, 0xfc, 0x00, 574 + 0x4a, 0x11, 0xee, 0xfc, 0xf4, 0x95, 0x4e, 0x00, 575 + 0x77, 0x12, 0x7f, 0xff, 0xf6, 0xb8, 0x49, 0x12, 576 + 0xf1, 0x80, 0xf3, 0x00, 0x80, 0x00, 0x89, 0x12, 577 + 0xf0, 0xe0, 0xf1, 0xf1, 0x4f, 0x02, 0xe9, 0x01, 578 + 0xf4, 0x95, 0x48, 0x0b, 0xf5, 0x40, 0x56, 0x02, 579 + 0xf1, 0x80, 0x81, 0xf8, 0x27, 0x78, 0x77, 0x11, 580 + 0x80, 0x00, 0x56, 0x00, 0x49, 0x11, 0xf1, 0x80, 581 + 0x89, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x81, 582 + 0x0a, 0x81, 0xe8, 0x00, 0x75, 0xf8, 0x00, 0x08, 583 + 0x00, 0x01, 0xf0, 0x73, 0x0a, 0x86, 0xf0, 0x20, 584 + 0x80, 0x01, 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01, 585 + 0x10, 0x82, 0xee, 0x04, 0x8a, 0x11, 0xfc, 0x00, 586 + 0x4a, 0x11, 0xee, 0xfe, 0xf4, 0x95, 0x4e, 0x00, 587 + 0x77, 0x11, 0x7f, 0xff, 0xf6, 0xb8, 0x49, 0x11, 588 + 0xf1, 0x80, 0xf3, 0x00, 0x80, 0x00, 0x89, 0x11, 589 + 0xf0, 0xe0, 0xf1, 0xf1, 0xe8, 0x01, 0xf2, 0x80, 590 + 0x80, 0xf8, 0x27, 0x78, 0x56, 0x00, 0xf1, 0x20, 591 + 0x80, 0x00, 0xf1, 0x80, 0xf4, 0x95, 0x49, 0x0b, 592 + 0xf8, 0x4d, 0x0a, 0xab, 0xf0, 0x20, 0x80, 0x01, 593 + 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01, 0xf0, 0x73, 594 + 0x0a, 0xaf, 0xe8, 0x00, 0x75, 0xf8, 0x00, 0x08, 595 + 0x00, 0x01, 0xee, 0x02, 0x48, 0x11, 0x8a, 0x11, 596 + 0xfc, 0x00, 0x4a, 0x11, 0x88, 0x12, 0x13, 0x02, 597 + 0x77, 0x11, 0x00, 0x00, 0xf8, 0x4d, 0x0a, 0xcb, 598 + 0xf3, 0x10, 0x00, 0x01, 0x89, 0x1a, 0xf4, 0x95, 599 + 0xf0, 0x72, 0x0a, 0xca, 0x48, 0x11, 0x1c, 0xf8, 600 + 0x29, 0x7e, 0x88, 0x11, 0x11, 0xf8, 0x29, 0x7e, 601 + 0xf2, 0x00, 0x00, 0x01, 0x80, 0xf8, 0x29, 0x7e, 602 + 0x81, 0x92, 0x48, 0x11, 0x8a, 0x11, 0xfc, 0x00, 603 + 0x4a, 0x11, 0xf4, 0x95, 0x71, 0x02, 0x00, 0x11, 604 + 0x88, 0x12, 0xf6, 0xb8, 0xf0, 0x20, 0x7f, 0xff, 605 + 0x57, 0xf8, 0x27, 0x70, 0xf2, 0x80, 0xf0, 0x00, 606 + 0x80, 0x00, 0x80, 0x82, 0x57, 0xf8, 0x27, 0x70, 607 + 0xe8, 0x01, 0xf3, 0xf1, 0xf2, 0x80, 0x80, 0xf8, 608 + 0x27, 0x78, 0x77, 0x12, 0x80, 0x00, 0x48, 0x12, 609 + 0x57, 0xf8, 0x27, 0x70, 0xf2, 0x80, 0x88, 0x12, 610 + 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x82, 0x0a, 0xf4, 611 + 0xe8, 0x00, 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01, 612 + 0xf0, 0x73, 0x0a, 0xf9, 0xf0, 0x20, 0x80, 0x01, 613 + 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01, 0x45, 0xf8, 614 + 0x27, 0x75, 0xe7, 0x10, 0x43, 0xf8, 0x27, 0x71, 615 + 0x83, 0xf8, 0x00, 0x12, 0x6d, 0xe8, 0x00, 0x04, 616 + 0x6d, 0x8a, 0xf6, 0xaa, 0xf8, 0x30, 0x0b, 0x0a, 617 + 0xf2, 0x73, 0x0b, 0x25, 0x77, 0x11, 0x00, 0x00, 618 + 0x57, 0xf8, 0x27, 0x70, 0xf0, 0x20, 0x7f, 0xff, 619 + 0xf2, 0x80, 0x49, 0x11, 0xf5, 0x00, 0xf3, 0x00, 620 + 0x80, 0x00, 0x61, 0xf8, 0x00, 0x0b, 0x80, 0x00, 621 + 0xf8, 0x30, 0x0b, 0x1d, 0xf1, 0x20, 0x80, 0x00, 622 + 0xf5, 0x20, 0x89, 0x11, 0xf4, 0x95, 0x48, 0x11, 623 + 0x6f, 0xf8, 0x27, 0x71, 0x0d, 0x00, 0xf4, 0x95, 624 + 0x49, 0x0b, 0x4f, 0xf8, 0x27, 0x70, 0x48, 0x11, 625 + 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0x4a, 0x16, 626 + 0x4a, 0x17, 0xee, 0xf0, 0x88, 0x17, 0x10, 0x17, 627 + 0x80, 0x05, 0x10, 0x16, 0x80, 0x06, 0x10, 0x15, 628 + 0x80, 0x07, 0x71, 0x14, 0x00, 0x11, 0x10, 0x05, 629 + 0xf0, 0x30, 0x00, 0x01, 0x88, 0x10, 0x10, 0x06, 630 + 0xf0, 0x30, 0x00, 0x01, 0x80, 0x08, 0x49, 0x11, 631 + 0x10, 0x05, 0xf6, 0x01, 0x80, 0x09, 0x10, 0x06, 632 + 0x61, 0xf8, 0x00, 0x08, 0x00, 0x01, 0xf8, 0x20, 633 + 0x0b, 0x4b, 0x10, 0x09, 0xf0, 0x00, 0x00, 0x01, 634 + 0x80, 0x09, 0x71, 0x08, 0x00, 0x12, 0xf4, 0xaa, 635 + 0xf8, 0x30, 0x0b, 0x54, 0x10, 0x09, 0xf0, 0x00, 636 + 0x00, 0x01, 0x80, 0x09, 0x12, 0x09, 0x49, 0x11, 637 + 0xf4, 0x7f, 0x80, 0x09, 0xf6, 0x20, 0x80, 0x0a, 638 + 0x56, 0xf8, 0x27, 0x70, 0x4e, 0x0c, 0x10, 0x09, 639 + 0x80, 0x00, 0x48, 0x18, 0xf2, 0x74, 0x0a, 0xce, 640 + 0xf0, 0x00, 0x00, 0x04, 0x88, 0x16, 0xf4, 0x95, 641 + 0xf4, 0x95, 0x6c, 0x86, 0x0b, 0x6d, 0xf2, 0x73, 642 + 0x0c, 0x59, 0xf4, 0x95, 0xe8, 0x00, 0xf6, 0xb8, 643 + 0xf4, 0x95, 0x56, 0x0c, 0xf0, 0xf9, 0x88, 0x12, 644 + 0xf4, 0x95, 0xf4, 0x95, 0x70, 0xe2, 0x27, 0x7c, 645 + 0x29, 0x86, 0xe8, 0x00, 0x80, 0x0e, 0x48, 0x11, 646 + 0xf8, 0x45, 0x0b, 0xcc, 0x77, 0x10, 0x00, 0x01, 647 + 0xf4, 0xa9, 0xf8, 0x30, 0x0b, 0x89, 0x6c, 0xe1, 648 + 0xff, 0xfd, 0x0b, 0x8b, 0x10, 0xe7, 0x00, 0x02, 649 + 0x80, 0x0e, 0xf0, 0x73, 0x0b, 0x8b, 0x10, 0x87, 650 + 0x80, 0x0e, 0xe7, 0x10, 0xf5, 0xae, 0xf8, 0x20, 651 + 0x0b, 0xb2, 0x70, 0x00, 0x00, 0x17, 0x70, 0x01, 652 + 0x00, 0x16, 0x10, 0x04, 0xf0, 0x74, 0x06, 0xce, 653 + 0x48, 0x17, 0x49, 0x16, 0xf6, 0x00, 0x88, 0x17, 654 + 0x48, 0x11, 0xf6, 0x20, 0x88, 0x11, 0x10, 0x09, 655 + 0xf6, 0x20, 0x80, 0x00, 0x48, 0x18, 0xf2, 0x74, 656 + 0x0a, 0xce, 0xf0, 0x00, 0x00, 0x04, 0x88, 0x16, 657 + 0x10, 0x04, 0x70, 0x00, 0x00, 0x17, 0x70, 0x01, 658 + 0x00, 0x11, 0xf0, 0x74, 0x06, 0xce, 0x48, 0x11, 659 + 0x00, 0x04, 0x80, 0x04, 0xf0, 0x73, 0x0b, 0xbc, 660 + 0x70, 0x00, 0x00, 0x17, 0x70, 0x01, 0x00, 0x11, 661 + 0x10, 0x04, 0xf0, 0x74, 0x06, 0xce, 0x48, 0x11, 662 + 0x00, 0x04, 0x80, 0x04, 0x49, 0x11, 0x48, 0x16, 663 + 0xf6, 0x20, 0x88, 0x16, 0xf4, 0x95, 0xf4, 0x95, 664 + 0x6c, 0x86, 0x0b, 0xcc, 0x10, 0x0a, 0x80, 0x00, 665 + 0x48, 0x18, 0xf2, 0x74, 0x0a, 0xce, 0xf0, 0x00, 666 + 0x00, 0x04, 0x88, 0x16, 0x12, 0x0a, 0xf8, 0x45, 667 + 0x0c, 0x33, 0x71, 0x0a, 0x00, 0x10, 0xf4, 0xae, 668 + 0xf8, 0x30, 0x0c, 0x1c, 0x48, 0x16, 0xf0, 0xe1, 669 + 0x88, 0x11, 0x12, 0x08, 0xf8, 0x45, 0x0b, 0xdb, 670 + 0x6d, 0x89, 0x12, 0x07, 0xf8, 0x45, 0x0b, 0xe9, 671 + 0x10, 0x07, 0x80, 0x00, 0x70, 0x02, 0x00, 0x11, 672 + 0x10, 0x06, 0x80, 0x01, 0x10, 0x04, 0xf0, 0x74, 673 + 0x06, 0xdc, 0xf0, 0x73, 0x0b, 0xef, 0x48, 0x11, 674 + 0x6f, 0x00, 0x0c, 0x9f, 0x10, 0x04, 0xf0, 0x74, 675 + 0x0a, 0xb3, 0x11, 0x0e, 0xf1, 0xc0, 0x81, 0x0e, 676 + 0x10, 0x06, 0x49, 0x11, 0xf6, 0x00, 0x80, 0x06, 677 + 0x10, 0x05, 0xf6, 0x20, 0x88, 0x11, 0xf0, 0x00, 678 + 0x00, 0x01, 0x48, 0x08, 0x6f, 0x00, 0x0c, 0x9f, 679 + 0x48, 0x18, 0xf2, 0x74, 0x0a, 0xce, 0xf0, 0x00, 680 + 0x00, 0x04, 0x12, 0x07, 0xf8, 0x45, 0x0c, 0x11, 681 + 0x10, 0x07, 0x80, 0x00, 0x70, 0x02, 0x00, 0x11, 682 + 0x10, 0x06, 0x80, 0x01, 0x10, 0x04, 0xf0, 0x74, 683 + 0x06, 0xdc, 0xf0, 0x73, 0x0c, 0x17, 0x48, 0x11, 684 + 0x6f, 0x00, 0x0c, 0x9f, 0x10, 0x04, 0xf0, 0x74, 685 + 0x0a, 0xb3, 0x11, 0x0e, 0xf1, 0xc0, 0x81, 0x0e, 686 + 0xf0, 0x73, 0x0c, 0x33, 0x12, 0x07, 0xf8, 0x45, 687 + 0x0c, 0x2a, 0x10, 0x07, 0x80, 0x00, 0x10, 0x06, 688 + 0x80, 0x01, 0x10, 0x05, 0x80, 0x02, 0x10, 0x04, 689 + 0xf0, 0x74, 0x06, 0xdc, 0xf0, 0x73, 0x0c, 0x30, 690 + 0x12, 0x05, 0x6f, 0x00, 0x0c, 0x9f, 0x10, 0x04, 691 + 0xf0, 0x74, 0x0a, 0xb3, 0x11, 0x0e, 0xf1, 0xc0, 692 + 0x81, 0x0e, 0x76, 0x00, 0x00, 0x01, 0x48, 0x18, 693 + 0xf2, 0x74, 0x0a, 0xce, 0xf0, 0x00, 0x00, 0x04, 694 + 0x71, 0x04, 0x00, 0x11, 0x70, 0x81, 0x29, 0x86, 695 + 0x10, 0x0e, 0x1c, 0xf8, 0x29, 0x86, 0x80, 0x0e, 696 + 0x76, 0x00, 0x00, 0x01, 0x48, 0x18, 0xf2, 0x74, 697 + 0x0a, 0xce, 0xf0, 0x00, 0x00, 0x04, 0x10, 0x0e, 698 + 0x71, 0x04, 0x00, 0x11, 0x80, 0x81, 0x10, 0xf8, 699 + 0x29, 0x86, 0xf0, 0x00, 0x00, 0x01, 0xf0, 0x30, 700 + 0x7f, 0xff, 0x80, 0xf8, 0x29, 0x86, 0x10, 0x09, 701 + 0xf0, 0x00, 0x00, 0x02, 0x80, 0x09, 0xee, 0x10, 702 + 0x8a, 0x17, 0x8a, 0x16, 0x8a, 0x11, 0xfc, 0x00, 703 + 0x10, 0xf8, 0x27, 0x75, 0x08, 0xf8, 0x27, 0x71, 704 + 0xf0, 0x10, 0x00, 0x01, 0x48, 0x08, 0xfc, 0x00, 705 + 0x4a, 0x11, 0x4a, 0x16, 0xee, 0xff, 0xf4, 0x95, 706 + 0x71, 0x04, 0x00, 0x16, 0xf0, 0x00, 0x00, 0x01, 707 + 0x48, 0x08, 0x4e, 0xf8, 0x29, 0x7c, 0x6d, 0xee, 708 + 0xff, 0xfd, 0x48, 0x16, 0xf8, 0x45, 0x0c, 0x99, 709 + 0x56, 0xf8, 0x29, 0x7c, 0xf0, 0x74, 0x0a, 0x5a, 710 + 0x88, 0x11, 0x10, 0xf8, 0x29, 0x7d, 0xf0, 0x00, 711 + 0x00, 0x01, 0x48, 0x08, 0x4e, 0xf8, 0x29, 0x7c, 712 + 0x10, 0xf8, 0x29, 0x82, 0xf0, 0x00, 0x00, 0x01, 713 + 0x88, 0x10, 0xf4, 0x95, 0xf4, 0x95, 0xf4, 0xa9, 714 + 0xfa, 0x30, 0x0c, 0x96, 0x80, 0xf8, 0x29, 0x82, 715 + 0x56, 0xf8, 0x29, 0x80, 0xf0, 0x00, 0x00, 0x01, 716 + 0x4e, 0xf8, 0x29, 0x80, 0x73, 0x11, 0x29, 0x82, 717 + 0x6c, 0xee, 0xff, 0xff, 0x0c, 0x76, 0xee, 0x01, 718 + 0x8a, 0x16, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 719 + 0x76, 0xf8, 0x29, 0x84, 0x00, 0x00, 0x76, 0xf8, 720 + 0x29, 0x85, 0x00, 0x01, 0xe8, 0x00, 0x4e, 0xf8, 721 + 0x2a, 0x0c, 0x76, 0xf8, 0x29, 0x86, 0x00, 0x00, 722 + 0x76, 0xf8, 0x29, 0x87, 0x00, 0x00, 0x77, 0x11, 723 + 0x29, 0x88, 0x76, 0x81, 0xaa, 0xaa, 0x76, 0xe1, 724 + 0x00, 0x01, 0xaa, 0xaa, 0x76, 0xe1, 0x00, 0x02, 725 + 0x00, 0x00, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 726 + 0xee, 0xfc, 0xf4, 0x95, 0x71, 0x06, 0x00, 0x14, 727 + 0x71, 0x07, 0x00, 0x13, 0x71, 0x08, 0x00, 0x12, 728 + 0x71, 0x09, 0x00, 0x15, 0x77, 0x10, 0x00, 0xff, 729 + 0xf4, 0xaa, 0xf8, 0x30, 0x0d, 0x44, 0x49, 0x13, 730 + 0x53, 0xf8, 0x2a, 0x0c, 0x4f, 0xf8, 0x2a, 0x0c, 731 + 0x73, 0x12, 0x00, 0x0e, 0xf1, 0x66, 0x00, 0x0d, 732 + 0x89, 0x11, 0xf4, 0x95, 0x77, 0x10, 0x00, 0x01, 733 + 0x71, 0xe1, 0x24, 0x00, 0x00, 0x11, 0xf4, 0xa9, 734 + 0xf8, 0x30, 0x0d, 0x17, 0x77, 0x10, 0x00, 0x02, 735 + 0xf4, 0xa9, 0xf8, 0x30, 0x0c, 0xec, 0x77, 0x11, 736 + 0x29, 0x8a, 0x76, 0x81, 0x00, 0x00, 0xe8, 0x00, 737 + 0x77, 0x14, 0x00, 0x00, 0x77, 0x13, 0x00, 0x00, 738 + 0xf0, 0x73, 0x0d, 0x48, 0x6c, 0x83, 0x0c, 0xfa, 739 + 0x77, 0x11, 0x29, 0x8a, 0x48, 0x12, 0xf0, 0xe8, 740 + 0xf0, 0x40, 0x80, 0x00, 0x80, 0x81, 0xe8, 0x00, 741 + 0x77, 0x14, 0x00, 0x00, 0xf0, 0x73, 0x0d, 0x48, 742 + 0x49, 0x13, 0xf3, 0x40, 0x80, 0x00, 0x81, 0xf8, 743 + 0x29, 0x8a, 0x61, 0xf8, 0x00, 0x15, 0x00, 0x01, 744 + 0xf8, 0x20, 0x0d, 0x07, 0x69, 0xf8, 0x29, 0x8a, 745 + 0x40, 0x00, 0x61, 0xf8, 0x00, 0x14, 0x00, 0x01, 746 + 0xf8, 0x20, 0x0d, 0x0f, 0x69, 0xf8, 0x29, 0x8a, 747 + 0x20, 0x00, 0x77, 0x11, 0x29, 0x8a, 0x49, 0x12, 748 + 0xf3, 0xe8, 0x1b, 0x81, 0x81, 0x81, 0xf0, 0x73, 749 + 0x0d, 0x48, 0x11, 0xf8, 0x29, 0x84, 0xf8, 0x4c, 750 + 0x0d, 0x37, 0x77, 0x11, 0x29, 0x88, 0x76, 0x81, 751 + 0xaa, 0xaa, 0x11, 0xf8, 0x29, 0x85, 0xf3, 0x10, 752 + 0x00, 0x01, 0xf3, 0x40, 0xaa, 0x00, 0x81, 0xe1, 753 + 0x00, 0x01, 0x76, 0x00, 0x00, 0x02, 0x80, 0x01, 754 + 0x70, 0x02, 0x00, 0x14, 0x70, 0x03, 0x00, 0x13, 755 + 0xf2, 0x74, 0x0b, 0x28, 0xf4, 0x95, 0x48, 0x11, 756 + 0x71, 0xf8, 0x29, 0x85, 0x29, 0x84, 0xf0, 0x73, 757 + 0x0d, 0x73, 0x76, 0x00, 0x00, 0x00, 0x80, 0x01, 758 + 0x76, 0x02, 0x00, 0x00, 0x70, 0x03, 0x00, 0x13, 759 + 0xf2, 0x74, 0x0b, 0x28, 0xf4, 0x95, 0xe8, 0x00, 760 + 0xf0, 0x73, 0x0d, 0x73, 0x77, 0x11, 0x29, 0x8a, 761 + 0x70, 0x81, 0x00, 0x13, 0x11, 0xf8, 0x29, 0x84, 762 + 0xf8, 0x4c, 0x0d, 0x68, 0x77, 0x11, 0x29, 0x88, 763 + 0x76, 0x81, 0xaa, 0xaa, 0x11, 0xf8, 0x29, 0x85, 764 + 0xf3, 0x10, 0x00, 0x01, 0xf3, 0x40, 0xaa, 0x00, 765 + 0x81, 0xe1, 0x00, 0x01, 0x76, 0x00, 0x00, 0x03, 766 + 0x80, 0x01, 0x70, 0x02, 0x00, 0x14, 0x70, 0x03, 767 + 0x00, 0x13, 0xf2, 0x74, 0x0b, 0x28, 0xf4, 0x95, 768 + 0x48, 0x11, 0x71, 0xf8, 0x29, 0x85, 0x29, 0x84, 769 + 0xf0, 0x73, 0x0d, 0x73, 0x76, 0x00, 0x00, 0x01, 770 + 0x80, 0x01, 0x70, 0x02, 0x00, 0x14, 0x70, 0x03, 771 + 0x00, 0x13, 0xf2, 0x74, 0x0b, 0x28, 0xf4, 0x95, 772 + 0x48, 0x11, 0x6b, 0xf8, 0x29, 0x84, 0xff, 0xff, 773 + 0xee, 0x04, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 774 + 0xf5, 0x40, 0xf4, 0x95, 0x48, 0x0b, 0xf4, 0x78, 775 + 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0xe1, 776 + 0xff, 0xb9, 0x0d, 0x88, 0xf2, 0x73, 0x0d, 0xa5, 777 + 0xf4, 0x95, 0xe8, 0x60, 0xf2, 0x00, 0x00, 0x06, 778 + 0x61, 0xf8, 0x00, 0x11, 0x00, 0x20, 0xf8, 0x30, 779 + 0x0d, 0x98, 0x61, 0xf8, 0x00, 0x0b, 0x00, 0x01, 780 + 0xf8, 0x20, 0x0d, 0xa3, 0xf2, 0x00, 0x00, 0x07, 781 + 0xf0, 0x73, 0x0d, 0xa3, 0x61, 0xf8, 0x00, 0x0b, 782 + 0x00, 0x01, 0xf8, 0x20, 0x0d, 0xa1, 0xf2, 0x73, 783 + 0x0d, 0xa3, 0xf0, 0x00, 0x00, 0x01, 0xf0, 0x00, 784 + 0x00, 0x02, 0x48, 0x08, 0xf4, 0x7f, 0x8a, 0x11, 785 + 0xfc, 0x00, 0xee, 0xff, 0xf0, 0x74, 0x07, 0xfd, 786 + 0xf0, 0x74, 0x07, 0x44, 0xf0, 0x74, 0x0d, 0xb4, 787 + 0xf0, 0x74, 0x02, 0x05, 0xf0, 0x74, 0x04, 0x60, 788 + 0xf0, 0x73, 0x0d, 0xaa, 0xee, 0xfd, 0x10, 0xf8, 789 + 0x2a, 0xa3, 0xf8, 0x44, 0x0d, 0xcb, 0x10, 0xf8, 790 + 0x2a, 0xa4, 0xf8, 0x45, 0x0d, 0xd7, 0x76, 0x00, 791 + 0x02, 0x00, 0xf2, 0x74, 0x09, 0xe8, 0xf0, 0x20, 792 + 0x22, 0x00, 0x76, 0xf8, 0x2a, 0xa4, 0x00, 0x00, 793 + 0x76, 0xf8, 0x2a, 0xa7, 0x00, 0x00, 0xf0, 0x73, 794 + 0x0d, 0xd7, 0x76, 0x00, 0x02, 0x00, 0xf2, 0x74, 795 + 0x09, 0xe8, 0xf0, 0x20, 0x20, 0x00, 0x76, 0xf8, 796 + 0x2a, 0xa3, 0x00, 0x00, 0x76, 0xf8, 0x2a, 0xa7, 797 + 0x00, 0x01, 0xf0, 0x74, 0x0c, 0x5e, 0xf0, 0xe0, 798 + 0xf0, 0x10, 0x3a, 0x98, 0xf8, 0x47, 0x0d, 0xe1, 799 + 0x76, 0xf8, 0x27, 0x6e, 0x00, 0x00, 0xee, 0x03, 800 + 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfe, 0x77, 0x11, 801 + 0x20, 0x00, 0x76, 0x00, 0xaa, 0xaa, 0x76, 0x01, 802 + 0x02, 0x00, 0xf2, 0x74, 0x06, 0x6c, 0xf4, 0x95, 803 + 0x48, 0x11, 0x76, 0x00, 0x55, 0x55, 0x76, 0x01, 804 + 0x02, 0x00, 0x48, 0x11, 0xf2, 0x74, 0x06, 0x6c, 805 + 0xf0, 0x00, 0x02, 0x00, 0x76, 0xf8, 0x2a, 0xa3, 806 + 0x00, 0x00, 0x76, 0xf8, 0x2a, 0xa4, 0x00, 0x00, 807 + 0xe8, 0x00, 0x4e, 0x00, 0xfb, 0x80, 0x15, 0x3e, 808 + 0xf4, 0x95, 0xe8, 0x04, 0x80, 0xf8, 0x2a, 0xa5, 809 + 0x76, 0x00, 0x2a, 0xa8, 0xf9, 0x80, 0x14, 0x87, 810 + 0x76, 0x00, 0x2a, 0xad, 0xfb, 0x80, 0x13, 0x62, 811 + 0xf4, 0x95, 0xe8, 0x02, 0x10, 0xf8, 0x2a, 0xa5, 812 + 0xf9, 0x80, 0x14, 0x63, 0xfb, 0x80, 0x16, 0x66, 813 + 0xf4, 0x95, 0xe8, 0x1c, 0xfb, 0x80, 0x16, 0x87, 814 + 0xf4, 0x95, 0xe8, 0x1c, 0xe8, 0x01, 0x4e, 0x00, 815 + 0xfb, 0x80, 0x17, 0xd6, 0xf4, 0x95, 0xe8, 0x00, 816 + 0x80, 0xf8, 0x2a, 0xa6, 0x76, 0x00, 0x2a, 0xb7, 817 + 0xf9, 0x80, 0x16, 0xaa, 0x10, 0xf8, 0x2a, 0xa6, 818 + 0xf9, 0x80, 0x17, 0x5c, 0x10, 0xf8, 0x2a, 0xa6, 819 + 0xf9, 0x80, 0x17, 0x6f, 0xee, 0x02, 0x8a, 0x11, 820 + 0xfc, 0x00, 0xf4, 0x95, 0x4a, 0x08, 0x4a, 0x09, 821 + 0x4a, 0x0a, 0x4a, 0x07, 0x4a, 0x1d, 0x68, 0xf8, 822 + 0x00, 0x07, 0x7d, 0x3f, 0x69, 0xf8, 0x00, 0x07, 823 + 0x40, 0x00, 0x68, 0xf8, 0x00, 0x1d, 0xff, 0xfc, 824 + 0x10, 0xf8, 0x2a, 0xa7, 0xf8, 0x44, 0x0e, 0x4b, 825 + 0x76, 0xf8, 0x2a, 0xa3, 0x00, 0x01, 0xf0, 0x73, 826 + 0x0e, 0x4e, 0x76, 0xf8, 0x2a, 0xa4, 0x00, 0x01, 827 + 0x8a, 0x1d, 0x8a, 0x07, 0x8a, 0x0a, 0x8a, 0x09, 828 + 0x8a, 0x08, 0xf4, 0xeb, 0x4a, 0x11, 0x4a, 0x16, 829 + 0x4a, 0x17, 0xee, 0xfe, 0x88, 0x0e, 0x71, 0x08, 830 + 0x00, 0x16, 0x71, 0x06, 0x00, 0x17, 0x11, 0x07, 831 + 0xf0, 0x66, 0x00, 0x0d, 0xf0, 0x00, 0x25, 0xa0, 832 + 0x88, 0x11, 0x76, 0x01, 0x00, 0x06, 0x81, 0x00, 833 + 0xf2, 0x74, 0x06, 0xce, 0xf0, 0x00, 0x00, 0x01, 834 + 0x76, 0x01, 0x00, 0x06, 0x70, 0x00, 0x00, 0x16, 835 + 0x48, 0x11, 0xf2, 0x74, 0x06, 0xce, 0xf0, 0x00, 836 + 0x00, 0x07, 0x70, 0x81, 0x00, 0x17, 0xee, 0x02, 837 + 0x8a, 0x17, 0x8a, 0x16, 0x8a, 0x11, 0xfc, 0x00, 838 + 0x4a, 0x11, 0x88, 0x0e, 0x71, 0x02, 0x00, 0x12, 839 + 0x11, 0x03, 0xf0, 0x66, 0x00, 0x0d, 0xf0, 0x00, 840 + 0x24, 0x00, 0x88, 0x11, 0xf4, 0x95, 0x70, 0x81, 841 + 0x00, 0x12, 0x6e, 0xe2, 0xff, 0xfe, 0x0e, 0x8d, 842 + 0xf4, 0x95, 0xe8, 0x00, 0xe8, 0x01, 0x80, 0xe1, 843 + 0x00, 0x02, 0x76, 0xe1, 0x00, 0x03, 0x00, 0xff, 844 + 0x76, 0xe1, 0x00, 0x04, 0x00, 0x00, 0x76, 0xe1, 845 + 0x00, 0x0b, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x0c, 846 + 0x00, 0x00, 0x81, 0xe1, 0x00, 0x01, 0x8a, 0x11, 847 + 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfc, 0x88, 0x0e, 848 + 0xf4, 0x95, 0xf1, 0x66, 0x00, 0x0d, 0xf3, 0x00, 849 + 0x24, 0x00, 0x89, 0x11, 0xf4, 0x95, 0xf4, 0x95, 850 + 0x76, 0xe1, 0x00, 0x0c, 0x00, 0x00, 0x76, 0xe1, 851 + 0x00, 0x0b, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x02, 852 + 0x00, 0x01, 0x76, 0x00, 0x00, 0x00, 0x76, 0x01, 853 + 0x00, 0x00, 0x80, 0x02, 0x76, 0x03, 0x00, 0x00, 854 + 0xf2, 0x74, 0x0c, 0xb9, 0xf4, 0x95, 0xe8, 0x00, 855 + 0xee, 0x04, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 856 + 0x88, 0x19, 0xf4, 0x95, 0x73, 0x19, 0x00, 0x0e, 857 + 0xf1, 0x66, 0x00, 0x0d, 0xf2, 0x00, 0x24, 0x00, 858 + 0x77, 0x15, 0x25, 0xa0, 0x77, 0x14, 0x00, 0x00, 859 + 0x77, 0x1a, 0x00, 0x1f, 0xf0, 0x72, 0x0f, 0x14, 860 + 0xf6, 0xb8, 0x49, 0x19, 0x09, 0x85, 0xf8, 0x4c, 861 + 0x0f, 0x13, 0xf1, 0x00, 0x00, 0x05, 0x89, 0x11, 862 + 0x49, 0x15, 0xf3, 0x00, 0x00, 0x01, 0x89, 0x13, 863 + 0x49, 0x15, 0xf3, 0x00, 0x00, 0x07, 0x89, 0x12, 864 + 0x11, 0x93, 0x1d, 0x91, 0x19, 0x92, 0x89, 0x10, 865 + 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x80, 0x0f, 0x13, 866 + 0x11, 0x93, 0x1d, 0x91, 0x19, 0x92, 0x89, 0x10, 867 + 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x80, 0x0f, 0x13, 868 + 0x11, 0x93, 0x1d, 0x91, 0x19, 0x92, 0x89, 0x10, 869 + 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x80, 0x0f, 0x13, 870 + 0x11, 0x93, 0x1d, 0x91, 0x19, 0x92, 0x89, 0x10, 871 + 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x80, 0x0f, 0x13, 872 + 0x11, 0x93, 0x1d, 0x91, 0x19, 0x92, 0x89, 0x10, 873 + 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x80, 0x0f, 0x13, 874 + 0x11, 0x93, 0x1d, 0x91, 0x19, 0x92, 0x89, 0x11, 875 + 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x81, 0x0f, 0x13, 876 + 0x6d, 0x94, 0x6d, 0xed, 0x00, 0x0d, 0x48, 0x14, 877 + 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0x4a, 0x16, 878 + 0x4a, 0x17, 0xee, 0xf8, 0x88, 0x17, 0x10, 0x0d, 879 + 0x80, 0x04, 0x10, 0x0c, 0x80, 0x05, 0x71, 0x0e, 880 + 0x00, 0x16, 0x73, 0x17, 0x00, 0x0e, 0xf0, 0x66, 881 + 0x00, 0x0d, 0xf0, 0x00, 0x24, 0x00, 0x88, 0x11, 882 + 0x10, 0xf8, 0x27, 0x63, 0xf8, 0x45, 0x0f, 0x32, 883 + 0xf2, 0x74, 0x0e, 0x9f, 0xf4, 0x95, 0x48, 0x17, 884 + 0x10, 0xf8, 0x27, 0x60, 0xf8, 0x44, 0x0f, 0x3d, 885 + 0x60, 0xe1, 0x00, 0x02, 0x00, 0x01, 0xf8, 0x20, 886 + 0x0f, 0x6d, 0xf0, 0x73, 0x11, 0x33, 0x10, 0x04, 887 + 0x80, 0x00, 0x10, 0x05, 0xf0, 0x74, 0x06, 0x9f, 888 + 0x11, 0x04, 0xf3, 0x00, 0x00, 0x01, 0x81, 0x04, 889 + 0x6d, 0x8e, 0x77, 0x10, 0x00, 0x01, 0x71, 0xe1, 890 + 0x00, 0x02, 0x00, 0x12, 0xf4, 0xaa, 0xf8, 0x30, 891 + 0x0f, 0x62, 0x77, 0x10, 0x00, 0x02, 0xf4, 0xaa, 892 + 0xf8, 0x30, 0x0f, 0x6d, 0x45, 0xe1, 0x00, 0x0b, 893 + 0x88, 0x10, 0x43, 0xe1, 0x00, 0x0c, 0x83, 0xf8, 894 + 0x00, 0x12, 0xf4, 0x95, 0xf4, 0x95, 0xf4, 0xaa, 895 + 0xf8, 0x30, 0x0f, 0x6d, 0xf0, 0x73, 0x0f, 0x96, 896 + 0xf5, 0x00, 0x81, 0x04, 0x49, 0x16, 0xf5, 0x20, 897 + 0x89, 0x16, 0x76, 0xe1, 0x00, 0x0c, 0x00, 0x00, 898 + 0x76, 0xe1, 0x00, 0x04, 0x00, 0x00, 0x48, 0x16, 899 + 0xf8, 0x45, 0x11, 0x33, 0xf7, 0xb8, 0x71, 0xe1, 900 + 0x00, 0x02, 0x00, 0x12, 0x10, 0xf8, 0x00, 0x12, 901 + 0xf0, 0x10, 0x00, 0x03, 0xf8, 0x46, 0x0f, 0x8c, 902 + 0x10, 0xf8, 0x00, 0x12, 0xf0, 0x10, 0x00, 0x03, 903 + 0xf8, 0x45, 0x10, 0x16, 0x77, 0x10, 0x00, 0x01, 904 + 0xf4, 0xaa, 0xf8, 0x30, 0x0f, 0x9c, 0x77, 0x10, 905 + 0x00, 0x02, 0xf4, 0xaa, 0xf8, 0x30, 0x0f, 0xa8, 906 + 0xf0, 0x73, 0x0f, 0x96, 0x77, 0x10, 0x00, 0x04, 907 + 0xf4, 0xaa, 0xf8, 0x30, 0x10, 0xb7, 0x77, 0x10, 908 + 0x00, 0x05, 0xf4, 0xaa, 0xf8, 0x30, 0x10, 0xbc, 909 + 0xf2, 0x74, 0x0e, 0x9f, 0xf4, 0x95, 0x48, 0x17, 910 + 0xf0, 0x73, 0x11, 0x31, 0x76, 0xe1, 0x00, 0x0c, 911 + 0x00, 0x00, 0x76, 0xe1, 0x00, 0x0b, 0x00, 0x00, 912 + 0x76, 0xe1, 0x00, 0x04, 0x00, 0x00, 0x76, 0xe1, 913 + 0x00, 0x02, 0x00, 0x02, 0x11, 0xe1, 0x00, 0x0c, 914 + 0xe8, 0x03, 0xf6, 0x20, 0x89, 0x12, 0xf4, 0x95, 915 + 0x77, 0x10, 0x00, 0x03, 0xf5, 0xaa, 0xf8, 0x30, 916 + 0x0f, 0xb6, 0x6b, 0xf8, 0x27, 0x6f, 0x00, 0x01, 917 + 0x88, 0x10, 0xf4, 0x95, 0xf4, 0x95, 0xf5, 0xae, 918 + 0xf8, 0x20, 0x0f, 0xbd, 0x48, 0x16, 0x80, 0x06, 919 + 0x88, 0x13, 0xf4, 0x95, 0x77, 0x10, 0x00, 0x03, 920 + 0xf6, 0xab, 0xf8, 0x20, 0x0f, 0xc8, 0x6b, 0xf8, 921 + 0x27, 0x6f, 0x00, 0x01, 0x12, 0x06, 0xf8, 0x45, 922 + 0x10, 0x00, 0x10, 0xe1, 0x00, 0x04, 0x80, 0x00, 923 + 0x10, 0x05, 0x80, 0x01, 0x10, 0x04, 0x80, 0x02, 924 + 0x10, 0x06, 0x80, 0x03, 0x48, 0x11, 0xf2, 0x74, 925 + 0x07, 0x1e, 0xf0, 0x00, 0x00, 0x05, 0x10, 0x06, 926 + 0x00, 0xe1, 0x00, 0x04, 0x80, 0xe1, 0x00, 0x04, 927 + 0x10, 0x06, 0x00, 0xe1, 0x00, 0x0c, 0x80, 0xe1, 928 + 0x00, 0x0c, 0x88, 0x12, 0x11, 0x06, 0x10, 0x04, 929 + 0xf6, 0x00, 0x80, 0x04, 0x48, 0x16, 0xf6, 0x20, 930 + 0x88, 0x16, 0x89, 0x13, 0xf4, 0x95, 0x77, 0x10, 931 + 0x00, 0x03, 0xf6, 0xab, 0xf8, 0x20, 0x0f, 0xf5, 932 + 0x6b, 0xf8, 0x27, 0x6f, 0x00, 0x01, 0x77, 0x10, 933 + 0x00, 0x0c, 0x71, 0xe1, 0x00, 0x04, 0x00, 0x13, 934 + 0xf6, 0xab, 0xf8, 0x20, 0x10, 0x00, 0x6b, 0xf8, 935 + 0x27, 0x6f, 0x00, 0x01, 0x6c, 0xe2, 0xff, 0xfd, 936 + 0x11, 0x31, 0xf6, 0xb8, 0x6f, 0xe1, 0x00, 0x05, 937 + 0x0c, 0x48, 0x6f, 0xe1, 0x00, 0x06, 0x0c, 0x18, 938 + 0xf0, 0x30, 0x0f, 0xff, 0xf0, 0x00, 0x00, 0x03, 939 + 0x80, 0xe1, 0x00, 0x0b, 0x76, 0xe1, 0x00, 0x02, 940 + 0x00, 0x03, 0x48, 0x16, 0xf8, 0x45, 0x11, 0x33, 941 + 0x71, 0xe1, 0x00, 0x0c, 0x00, 0x12, 0x10, 0xe1, 942 + 0x00, 0x0b, 0x49, 0x12, 0xf6, 0x20, 0x88, 0x13, 943 + 0xe8, 0x0c, 0xf6, 0x20, 0x88, 0x10, 0xf4, 0x95, 944 + 0xf4, 0x95, 0xf5, 0xab, 0xf8, 0x20, 0x10, 0x27, 945 + 0x48, 0x13, 0x80, 0x06, 0x88, 0x10, 0xf4, 0x95, 946 + 0xf4, 0x95, 0xf5, 0xae, 0xf8, 0x20, 0x10, 0x30, 947 + 0x70, 0x06, 0x00, 0x16, 0x12, 0x06, 0xf8, 0x45, 948 + 0x10, 0x5f, 0x10, 0xe1, 0x00, 0x04, 0x80, 0x00, 949 + 0x10, 0x05, 0x80, 0x01, 0x10, 0x04, 0x80, 0x02, 950 + 0x10, 0x06, 0x80, 0x03, 0x48, 0x11, 0xf2, 0x74, 951 + 0x07, 0x1e, 0xf0, 0x00, 0x00, 0x05, 0x10, 0x06, 952 + 0x00, 0xe1, 0x00, 0x04, 0x80, 0xe1, 0x00, 0x04, 953 + 0x10, 0x06, 0x00, 0xe1, 0x00, 0x0c, 0x80, 0xe1, 954 + 0x00, 0x0c, 0x88, 0x12, 0x11, 0x06, 0x10, 0x04, 955 + 0xf6, 0x00, 0x80, 0x04, 0x48, 0x16, 0xf6, 0x20, 956 + 0x88, 0x16, 0xf4, 0x95, 0x77, 0x10, 0x00, 0x0c, 957 + 0x71, 0xe1, 0x00, 0x04, 0x00, 0x13, 0xf6, 0xab, 958 + 0xf8, 0x20, 0x10, 0x5f, 0x6b, 0xf8, 0x27, 0x6f, 959 + 0x00, 0x01, 0x77, 0x10, 0x00, 0x0c, 0xf6, 0xaa, 960 + 0xf8, 0x20, 0x10, 0x6b, 0xf2, 0x74, 0x0e, 0x9f, 961 + 0xf4, 0x95, 0x48, 0x17, 0x71, 0xe1, 0x00, 0x0c, 962 + 0x00, 0x12, 0x77, 0x10, 0x00, 0x0c, 0xf4, 0xaa, 963 + 0xf8, 0x30, 0x10, 0x7c, 0x77, 0x10, 0x00, 0x0c, 964 + 0x71, 0xe1, 0x00, 0x0b, 0x00, 0x13, 0xf6, 0xab, 965 + 0xf8, 0x30, 0x10, 0xb4, 0xe7, 0x30, 0xf7, 0xaa, 966 + 0xf8, 0x30, 0x10, 0xb4, 0xf2, 0x74, 0x0e, 0xc1, 967 + 0xf4, 0x95, 0x48, 0x17, 0x88, 0x12, 0xf4, 0x95, 968 + 0xf4, 0x95, 0x6c, 0x82, 0x10, 0x8d, 0x76, 0xe1, 969 + 0x00, 0x04, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x02, 970 + 0x00, 0x05, 0xf0, 0x73, 0x10, 0xb4, 0x76, 0xe1, 971 + 0x00, 0x02, 0x00, 0x04, 0x77, 0x10, 0x00, 0x0c, 972 + 0x71, 0xe1, 0x00, 0x0b, 0x00, 0x12, 0xf5, 0xaa, 973 + 0xf8, 0x20, 0x10, 0x9a, 0xf0, 0x73, 0x10, 0x9c, 974 + 0x77, 0x12, 0x00, 0x0c, 0x76, 0x00, 0x00, 0x00, 975 + 0x70, 0x01, 0x00, 0x12, 0x70, 0x02, 0x00, 0x17, 976 + 0x76, 0x03, 0x00, 0x01, 0x48, 0x11, 0xf2, 0x74, 977 + 0x0c, 0xb9, 0xf0, 0x00, 0x00, 0x05, 0x76, 0xe1, 978 + 0x00, 0x04, 0x00, 0x00, 0x77, 0x10, 0x00, 0x0c, 979 + 0x71, 0xe1, 0x00, 0x0b, 0x00, 0x12, 0xf6, 0xaa, 980 + 0xf8, 0x20, 0x11, 0x1c, 0x48, 0x16, 0xf8, 0x45, 981 + 0x11, 0x33, 0x60, 0xe1, 0x00, 0x02, 0x00, 0x05, 982 + 0xf8, 0x20, 0x10, 0xdf, 0x10, 0xe1, 0x00, 0x0b, 983 + 0x08, 0xe1, 0x00, 0x0c, 0x11, 0xe1, 0x00, 0x04, 984 + 0xf8, 0x4d, 0x10, 0xc7, 0x6b, 0xf8, 0x27, 0x6f, 985 + 0x00, 0x01, 0x88, 0x10, 0xf4, 0x95, 0xf4, 0x95, 986 + 0xf5, 0xae, 0xf8, 0x20, 0x10, 0xcf, 0x48, 0x16, 987 + 0xf4, 0x95, 0x48, 0x08, 0xf8, 0x45, 0x11, 0x16, 988 + 0x6f, 0xe1, 0x00, 0x0c, 0x0d, 0x00, 0x81, 0xe1, 989 + 0x00, 0x0c, 0x11, 0x04, 0xf5, 0x00, 0x81, 0x04, 990 + 0x49, 0x16, 0xf5, 0x20, 0x89, 0x16, 0xf0, 0x73, 991 + 0x11, 0x0e, 0x10, 0xe1, 0x00, 0x0b, 0x71, 0xe1, 992 + 0x00, 0x0c, 0x00, 0x12, 0x88, 0x10, 0xf4, 0x95, 993 + 0xf4, 0x95, 0xf6, 0xaa, 0xf8, 0x30, 0x11, 0x16, 994 + 0x49, 0x12, 0xf6, 0x20, 0x88, 0x10, 0xf4, 0x95, 995 + 0xf4, 0x95, 0xf5, 0xae, 0xf8, 0x20, 0x10, 0xf3, 996 + 0x48, 0x16, 0x80, 0x06, 0x48, 0x08, 0xf8, 0x45, 997 + 0x11, 0x16, 0x10, 0x04, 0x70, 0x02, 0x00, 0x17, 998 + 0x80, 0x00, 0x76, 0x03, 0x00, 0x00, 0x10, 0x06, 999 + 0x80, 0x01, 0x10, 0x05, 0xf0, 0x74, 0x0c, 0xb9, 1000 + 0x10, 0x06, 0x00, 0xe1, 0x00, 0x0c, 0x80, 0xe1, 1001 + 0x00, 0x0c, 0x11, 0x06, 0x10, 0x04, 0xf6, 0x00, 1002 + 0x80, 0x04, 0x48, 0x16, 0xf6, 0x20, 0x88, 0x16, 1003 + 0x10, 0xe1, 0x00, 0x0c, 0x08, 0xe1, 0x00, 0x0b, 1004 + 0xf8, 0x45, 0x11, 0x1c, 0xf0, 0x73, 0x11, 0x31, 1005 + 0xf2, 0x74, 0x0e, 0x9f, 0xf4, 0x95, 0x48, 0x17, 1006 + 0xf0, 0x73, 0x11, 0x33, 0x76, 0xe1, 0x00, 0x0c, 1007 + 0x00, 0x00, 0x76, 0xe1, 0x00, 0x0b, 0x00, 0x00, 1008 + 0x76, 0xe1, 0x00, 0x02, 0x00, 0x01, 0x10, 0x04, 1009 + 0x80, 0x00, 0x10, 0x05, 0xf0, 0x74, 0x06, 0x9f, 1010 + 0x88, 0x12, 0xf4, 0x95, 0x77, 0x10, 0x00, 0xff, 1011 + 0xf4, 0xaa, 0xf8, 0x30, 0x11, 0x33, 0x6c, 0x86, 1012 + 0x0f, 0x70, 0xee, 0x08, 0x8a, 0x17, 0x8a, 0x16, 1013 + 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfc, 1014 + 0xf4, 0x95, 0x71, 0x06, 0x00, 0x12, 0x88, 0x11, 1015 + 0x73, 0x12, 0x00, 0x0e, 0xf1, 0x66, 0x00, 0x0d, 1016 + 0xf3, 0x00, 0x24, 0x00, 0x89, 0x14, 0x13, 0x81, 1017 + 0xf7, 0x7a, 0xf3, 0x30, 0x00, 0x01, 0x81, 0xf8, 1018 + 0x27, 0x60, 0x13, 0xe1, 0x00, 0x01, 0xf7, 0x7c, 1019 + 0xf3, 0x30, 0x00, 0x03, 0x81, 0xf8, 0x27, 0x61, 1020 + 0xe9, 0x0f, 0x19, 0xe1, 0x00, 0x01, 0x81, 0xf8, 1021 + 0x27, 0x62, 0x71, 0xe4, 0x00, 0x03, 0x00, 0x13, 1022 + 0xf6, 0xb8, 0x49, 0x13, 0xf3, 0x00, 0x00, 0x01, 1023 + 0xf3, 0x30, 0x00, 0x0f, 0x49, 0x0b, 0x09, 0xf8, 1024 + 0x27, 0x62, 0xf8, 0x4d, 0x11, 0x75, 0x77, 0x10, 1025 + 0x00, 0xff, 0xf4, 0xab, 0xf8, 0x30, 0x11, 0x75, 1026 + 0x57, 0xf8, 0x27, 0x6c, 0xf3, 0x00, 0x00, 0x01, 1027 + 0x4f, 0xf8, 0x27, 0x6c, 0x76, 0xf8, 0x27, 0x63, 1028 + 0x00, 0x01, 0xf0, 0x73, 0x11, 0x78, 0x76, 0xf8, 1029 + 0x27, 0x63, 0x00, 0x00, 0x70, 0xe4, 0x00, 0x03, 1030 + 0x27, 0x62, 0x76, 0xf8, 0x27, 0x64, 0x00, 0x00, 1031 + 0x11, 0xf8, 0x27, 0x61, 0x61, 0xf8, 0x00, 0x0b, 1032 + 0x00, 0x02, 0xf8, 0x20, 0x11, 0x8d, 0xe9, 0x01, 1033 + 0x6f, 0xe1, 0x00, 0x02, 0x0f, 0x18, 0x81, 0xf8, 1034 + 0x27, 0x64, 0x11, 0xf8, 0x27, 0x61, 0x61, 0xf8, 1035 + 0x00, 0x0b, 0x00, 0x01, 0xf8, 0x20, 0x11, 0xa9, 1036 + 0x10, 0xf8, 0x27, 0x64, 0xf1, 0x00, 0x00, 0x04, 1037 + 0x89, 0x13, 0xe9, 0xb8, 0xf5, 0x20, 0x81, 0xf8, 1038 + 0x27, 0x65, 0x60, 0x84, 0x00, 0x02, 0xf8, 0x20, 1039 + 0x11, 0xa9, 0x70, 0x00, 0x00, 0x11, 0x70, 0x01, 1040 + 0x00, 0x13, 0x70, 0x02, 0x27, 0x65, 0xf2, 0x74, 1041 + 0x0f, 0x18, 0xf4, 0x95, 0x48, 0x12, 0xee, 0x04, 1042 + 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0x4a, 0x16, 1043 + 0x4a, 0x17, 0xee, 0xfc, 0xe8, 0x00, 0x4e, 0xf8, 1044 + 0x27, 0x66, 0xe8, 0x00, 0x4e, 0xf8, 0x27, 0x68, 1045 + 0xe8, 0x00, 0x4e, 0xf8, 0x27, 0x6c, 0xe8, 0x00, 1046 + 0x4e, 0xf8, 0x27, 0x6a, 0x77, 0x12, 0x27, 0x40, 1047 + 0x77, 0x11, 0x24, 0x00, 0x77, 0x1a, 0x00, 0x1f, 1048 + 0xf0, 0x72, 0x11, 0xdb, 0x70, 0x92, 0x00, 0x11, 1049 + 0x76, 0xe1, 0x00, 0x01, 0xff, 0xff, 0x76, 0x81, 1050 + 0x00, 0x00, 0x76, 0xe1, 0x00, 0x02, 0x00, 0x00, 1051 + 0x76, 0xe1, 0x00, 0x03, 0x00, 0xff, 0x76, 0xe1, 1052 + 0x00, 0x0c, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x0b, 1053 + 0x00, 0x00, 0x76, 0xe1, 0x00, 0x04, 0x00, 0x00, 1054 + 0x6d, 0xe9, 0x00, 0x0d, 0xf0, 0x20, 0x25, 0xa0, 1055 + 0xf1, 0x00, 0x00, 0x07, 0x89, 0x11, 0xf1, 0x00, 1056 + 0x00, 0x01, 0x81, 0x02, 0x88, 0x16, 0xf4, 0x95, 1057 + 0x77, 0x17, 0x00, 0x20, 0x76, 0x86, 0x00, 0xff, 1058 + 0x76, 0x00, 0x00, 0x00, 0x76, 0x01, 0x00, 0x06, 1059 + 0x10, 0x02, 0xf0, 0x74, 0x06, 0x6c, 0x76, 0x00, 1060 + 0x00, 0x00, 0x76, 0x01, 0x00, 0x06, 0xf2, 0x74, 1061 + 0x06, 0x6c, 0xf4, 0x95, 0x48, 0x11, 0x10, 0x02, 1062 + 0xf0, 0x00, 0x00, 0x0d, 0x80, 0x02, 0x6d, 0xe9, 1063 + 0x00, 0x0d, 0x6d, 0xee, 0x00, 0x0d, 0x6c, 0xef, 1064 + 0xff, 0xff, 0x11, 0xe8, 0xf0, 0x74, 0x0c, 0x9d, 1065 + 0xee, 0x04, 0x8a, 0x17, 0x8a, 0x16, 0x8a, 0x11, 1066 + 0xfc, 0x00, 0x4a, 0x11, 0x4a, 0x16, 0x4a, 0x17, 1067 + 0xee, 0xfa, 0x88, 0x11, 0x10, 0x0a, 0x49, 0x11, 1068 + 0xf8, 0x4d, 0x12, 0x9f, 0x48, 0x08, 0xf8, 0x45, 1069 + 0x12, 0x9f, 0x80, 0x04, 0x12, 0x81, 0xf5, 0x78, 1070 + 0x89, 0x12, 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0xe2, 1071 + 0xff, 0xb9, 0x12, 0x8a, 0x61, 0xf8, 0x00, 0x08, 1072 + 0x00, 0x80, 0xf8, 0x30, 0x12, 0x8a, 0x13, 0xe1, 1073 + 0x00, 0x01, 0xf0, 0xe8, 0xf7, 0x78, 0xf1, 0xa0, 1074 + 0xf2, 0x30, 0x1f, 0xff, 0x88, 0x17, 0xf4, 0x95, 1075 + 0x77, 0x12, 0x24, 0x00, 0x77, 0x16, 0x00, 0x00, 1076 + 0x77, 0x13, 0x00, 0x20, 0xf6, 0xb8, 0x48, 0x17, 1077 + 0x08, 0xe2, 0x00, 0x01, 0xf8, 0x45, 0x12, 0x42, 1078 + 0x6d, 0xea, 0x00, 0x0d, 0x6d, 0x96, 0x6c, 0xeb, 1079 + 0xff, 0xff, 0x12, 0x34, 0xf0, 0x73, 0x12, 0x90, 1080 + 0x56, 0xf8, 0x27, 0x6a, 0xf0, 0x00, 0x00, 0x01, 1081 + 0x4e, 0xf8, 0x27, 0x6a, 0x60, 0x82, 0x00, 0x01, 1082 + 0xf8, 0x30, 0x12, 0x54, 0x70, 0x00, 0x00, 0x16, 1083 + 0xf2, 0x74, 0x11, 0x38, 0xf4, 0x95, 0x48, 0x11, 1084 + 0xf0, 0x73, 0x12, 0x90, 0x70, 0x00, 0x00, 0x16, 1085 + 0xf2, 0x74, 0x11, 0x38, 0xf4, 0x95, 0x48, 0x11, 1086 + 0x72, 0x10, 0x2a, 0x9e, 0xf4, 0x95, 0xf4, 0xaf, 1087 + 0xf8, 0x30, 0x12, 0x6e, 0x76, 0x00, 0x00, 0x00, 1088 + 0x76, 0x01, 0x00, 0xbc, 0x70, 0x02, 0x00, 0x16, 1089 + 0x76, 0x03, 0x00, 0x00, 0xf2, 0x74, 0x0c, 0xb9, 1090 + 0xf4, 0x95, 0x48, 0x11, 0xf0, 0x73, 0x12, 0x90, 1091 + 0x10, 0xf8, 0x27, 0x6e, 0xf8, 0x44, 0x12, 0x90, 1092 + 0x76, 0x00, 0x00, 0x00, 0x76, 0x01, 0x00, 0xbc, 1093 + 0x70, 0x02, 0x00, 0x16, 0x76, 0x03, 0x00, 0x00, 1094 + 0xf2, 0x74, 0x0c, 0xb9, 0xf4, 0x95, 0x48, 0x11, 1095 + 0xf0, 0x74, 0x0c, 0x5e, 0xf0, 0xe0, 0xf0, 0x10, 1096 + 0x13, 0x88, 0xf8, 0x42, 0x12, 0x90, 0x76, 0xf8, 1097 + 0x27, 0x6e, 0x00, 0x01, 0xf0, 0x73, 0x12, 0x90, 1098 + 0x56, 0xf8, 0x27, 0x66, 0xf0, 0x00, 0x00, 0x01, 1099 + 0x4e, 0xf8, 0x27, 0x66, 0x6d, 0xe9, 0x00, 0x5e, 1100 + 0x56, 0xf8, 0x27, 0x68, 0xf0, 0x00, 0x00, 0x01, 1101 + 0x4e, 0xf8, 0x27, 0x68, 0x71, 0x04, 0x00, 0x12, 1102 + 0x6e, 0xea, 0xff, 0xff, 0x12, 0x18, 0x70, 0x04, 1103 + 0x00, 0x12, 0xee, 0x06, 0x8a, 0x17, 0x8a, 0x16, 1104 + 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfe, 1105 + 0x88, 0x0e, 0xf4, 0x95, 0xf0, 0x66, 0x00, 0x0d, 1106 + 0xf0, 0x00, 0x25, 0xa0, 0x88, 0x11, 0xf4, 0x95, 1107 + 0xf4, 0x95, 0x76, 0x81, 0x00, 0xff, 0x76, 0x00, 1108 + 0x00, 0x00, 0x76, 0x01, 0x00, 0x06, 0xf2, 0x74, 1109 + 0x06, 0x6c, 0xf0, 0x00, 0x00, 0x01, 0x76, 0x00, 1110 + 0x00, 0x00, 0x76, 0x01, 0x00, 0x06, 0x48, 0x11, 1111 + 0xf2, 0x74, 0x06, 0x6c, 0xf0, 0x00, 0x00, 0x07, 1112 + 0xee, 0x02, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 1113 + 0x88, 0x0e, 0xf4, 0x95, 0xf0, 0x66, 0x00, 0x0d, 1114 + 0xf0, 0x00, 0x24, 0x00, 0x88, 0x11, 0xf4, 0x95, 1115 + 0xf4, 0x95, 0x76, 0xe1, 0x00, 0x01, 0xff, 0xff, 1116 + 0x76, 0x81, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x02, 1117 + 0x00, 0x00, 0x76, 0xe1, 0x00, 0x03, 0x00, 0xff, 1118 + 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xf4, 0x95, 1119 + 0x13, 0x03, 0x88, 0x11, 0xfa, 0x4d, 0x12, 0xec, 1120 + 0x71, 0x02, 0x00, 0x12, 0xf3, 0x10, 0x00, 0x01, 1121 + 0x89, 0x1a, 0xf4, 0x95, 0xf0, 0x72, 0x12, 0xeb, 1122 + 0x70, 0x91, 0x00, 0x12, 0x8a, 0x11, 0xfc, 0x00, 1123 + 0xf4, 0x95, 0x4a, 0x0b, 0x4a, 0x0c, 0x4a, 0x0d, 1124 + 0xf7, 0xb8, 0xee, 0xfe, 0x10, 0xf8, 0x00, 0x08, 1125 + 0x11, 0x06, 0xf1, 0xc0, 0x83, 0x00, 0xf4, 0x85, 1126 + 0x11, 0x06, 0xf7, 0x85, 0x81, 0x06, 0xf6, 0xb8, 1127 + 0xec, 0x0f, 0x1e, 0x06, 0x61, 0x00, 0x80, 0x00, 1128 + 0xf8, 0x20, 0x13, 0x05, 0xf4, 0x84, 0xee, 0x02, 1129 + 0x8a, 0x0d, 0x8a, 0x0c, 0x8a, 0x0b, 0xfc, 0x00, 1130 + 0xf4, 0x95, 0x4a, 0x0b, 0x4a, 0x0c, 0x4a, 0x0d, 1131 + 0xee, 0xfe, 0xf7, 0xb8, 0x80, 0x00, 0x10, 0xf8, 1132 + 0x00, 0x08, 0xf4, 0x85, 0x11, 0x06, 0xf7, 0x85, 1133 + 0x81, 0x06, 0xf6, 0xb8, 0xec, 0x0f, 0x1e, 0x06, 1134 + 0xf0, 0xf0, 0x61, 0x00, 0x80, 0x00, 0xf8, 0x20, 1135 + 0x13, 0x20, 0xf4, 0x84, 0xee, 0x02, 0x8a, 0x0d, 1136 + 0x8a, 0x0c, 0x8a, 0x0b, 0xfc, 0x00, 0x4a, 0x11, 1137 + 0x77, 0x11, 0x00, 0x7b, 0x76, 0x81, 0x2e, 0xec, 1138 + 0x77, 0x11, 0x00, 0x7b, 0xee, 0xff, 0x71, 0x81, 1139 + 0x00, 0x11, 0xee, 0x01, 0x76, 0xe1, 0x00, 0x01, 1140 + 0x00, 0x00, 0x76, 0xe1, 0x00, 0x04, 0x00, 0x00, 1141 + 0x76, 0xe1, 0x00, 0x06, 0x00, 0x00, 0x76, 0xe1, 1142 + 0x00, 0x62, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x76, 1143 + 0x00, 0x00, 0x76, 0xe1, 0x00, 0x92, 0x00, 0x00, 1144 + 0x76, 0xe1, 0x00, 0x94, 0x00, 0x00, 0x76, 0xe1, 1145 + 0x00, 0xb0, 0x00, 0x00, 0x76, 0xe1, 0x00, 0xb3, 1146 + 0x00, 0x00, 0x76, 0xe1, 0x00, 0xbe, 0x00, 0x00, 1147 + 0x76, 0xe1, 0x00, 0xbf, 0x00, 0x00, 0x76, 0xe1, 1148 + 0x00, 0xc1, 0x00, 0x00, 0x76, 0xe1, 0x00, 0xc3, 1149 + 0x00, 0x00, 0x76, 0xe1, 0x00, 0xc5, 0x00, 0x00, 1150 + 0x76, 0xe1, 0x00, 0xc7, 0x00, 0x00, 0x76, 0x81, 1151 + 0x00, 0x00, 0x8a, 0x11, 0xf4, 0x95, 0xf4, 0xe4, 1152 + 0x4a, 0x11, 0x4a, 0x16, 0x4a, 0x17, 0xee, 0xff, 1153 + 0xf4, 0x95, 0x71, 0x06, 0x00, 0x16, 0xfb, 0x80, 1154 + 0x16, 0xa2, 0x88, 0x17, 0xf4, 0x95, 0xf7, 0xb8, 1155 + 0x10, 0xf8, 0x00, 0x17, 0xf0, 0x10, 0x00, 0x02, 1156 + 0xfa, 0x46, 0x13, 0x88, 0x77, 0x11, 0x00, 0x00, 1157 + 0x10, 0xf8, 0x00, 0x17, 0xf0, 0x10, 0x00, 0x02, 1158 + 0xf8, 0x45, 0x13, 0xf9, 0x10, 0xf8, 0x00, 0x17, 1159 + 0xf8, 0x45, 0x14, 0x39, 0x10, 0xf8, 0x00, 0x17, 1160 + 0xf0, 0x10, 0x00, 0x01, 0xf8, 0x45, 0x14, 0x1f, 1161 + 0xf0, 0x73, 0x14, 0x52, 0x10, 0xf8, 0x00, 0x17, 1162 + 0xf0, 0x10, 0x00, 0x03, 0xf8, 0x45, 0x13, 0xd3, 1163 + 0x10, 0xf8, 0x00, 0x17, 0xf0, 0x10, 0x00, 0x06, 1164 + 0xf8, 0x44, 0x14, 0x52, 0x77, 0x12, 0x00, 0x7b, 1165 + 0x71, 0x82, 0x00, 0x14, 0x61, 0xe4, 0x00, 0x07, 1166 + 0x00, 0x40, 0xf8, 0x30, 0x14, 0x52, 0x49, 0x14, 1167 + 0x48, 0x17, 0xf6, 0x00, 0x88, 0x12, 0xf4, 0x95, 1168 + 0x77, 0x13, 0x00, 0x55, 0x77, 0x11, 0x00, 0x57, 1169 + 0x6d, 0xea, 0x00, 0x3b, 0xe5, 0x01, 0x10, 0xe6, 1170 + 0x00, 0x06, 0x80, 0x81, 0x48, 0x14, 0x00, 0xf8, 1171 + 0x00, 0x17, 0x88, 0x12, 0xf4, 0x95, 0x77, 0x11, 1172 + 0x00, 0x55, 0x10, 0xe2, 0x00, 0x40, 0x80, 0x81, 1173 + 0x77, 0x11, 0x00, 0x57, 0x10, 0xe6, 0x00, 0x07, 1174 + 0x80, 0x81, 0x77, 0x11, 0x00, 0x55, 0x10, 0xe2, 1175 + 0x00, 0x45, 0x80, 0x81, 0x10, 0xe6, 0x00, 0x08, 1176 + 0x77, 0x11, 0x00, 0x57, 0x80, 0x81, 0x77, 0x11, 1177 + 0x00, 0x55, 0x10, 0xe2, 0x00, 0x4a, 0x80, 0x81, 1178 + 0x77, 0x11, 0x00, 0x57, 0x10, 0xe6, 0x00, 0x09, 1179 + 0x80, 0x81, 0xf2, 0x73, 0x14, 0x52, 0x77, 0x11, 1180 + 0x03, 0xc0, 0x77, 0x12, 0x00, 0x7b, 0x10, 0x82, 1181 + 0xf0, 0x00, 0x00, 0x07, 0x88, 0x13, 0xf4, 0x95, 1182 + 0xf4, 0x95, 0x96, 0x1b, 0xf8, 0x30, 0x14, 0x52, 1183 + 0x10, 0xe3, 0x00, 0x35, 0x77, 0x12, 0x00, 0x55, 1184 + 0x80, 0x82, 0x77, 0x12, 0x00, 0x57, 0x10, 0xe6, 1185 + 0x00, 0x04, 0x80, 0x82, 0x77, 0x12, 0x00, 0x55, 1186 + 0x10, 0xe3, 0x00, 0x37, 0x80, 0x82, 0x77, 0x12, 1187 + 0x00, 0x57, 0x10, 0xe6, 0x00, 0x05, 0x80, 0x82, 1188 + 0x48, 0x11, 0xf0, 0x40, 0x00, 0x10, 0xf2, 0x73, 1189 + 0x14, 0x50, 0xf0, 0x40, 0x00, 0x20, 0x77, 0x12, 1190 + 0x00, 0x7b, 0x10, 0x82, 0xf0, 0x00, 0x00, 0x07, 1191 + 0x88, 0x12, 0xf4, 0x95, 0xf4, 0x95, 0x96, 0x0d, 1192 + 0xf8, 0x30, 0x14, 0x52, 0x10, 0xe2, 0x00, 0x34, 1193 + 0x77, 0x13, 0x00, 0x55, 0x80, 0x83, 0x77, 0x13, 1194 + 0x00, 0x57, 0x10, 0xe6, 0x00, 0x02, 0x80, 0x83, 1195 + 0x10, 0xe2, 0x00, 0x36, 0x77, 0x12, 0x00, 0x55, 1196 + 0x80, 0x82, 0x77, 0x12, 0x00, 0x57, 0x10, 0xe6, 1197 + 0x00, 0x03, 0x80, 0x82, 0x48, 0x11, 0xf0, 0x40, 1198 + 0x00, 0x04, 0xf2, 0x73, 0x14, 0x50, 0xf0, 0x40, 1199 + 0x00, 0x08, 0x77, 0x12, 0x00, 0x7b, 0x10, 0x82, 1200 + 0xf0, 0x00, 0x00, 0x07, 0x88, 0x12, 0xf4, 0x95, 1201 + 0xf4, 0x95, 0x96, 0x0e, 0xf8, 0x30, 0x14, 0x52, 1202 + 0x10, 0xe2, 0x00, 0x33, 0x77, 0x12, 0x00, 0x55, 1203 + 0x80, 0x82, 0x77, 0x12, 0x00, 0x57, 0x10, 0xe6, 1204 + 0x00, 0x01, 0x80, 0x82, 0x48, 0x11, 0xf2, 0x73, 1205 + 0x14, 0x50, 0xf0, 0x40, 0x00, 0x02, 0x77, 0x12, 1206 + 0x00, 0x7b, 0x10, 0x82, 0xf0, 0x00, 0x00, 0x07, 1207 + 0x88, 0x12, 0xf4, 0x95, 0xf4, 0x95, 0x96, 0x0f, 1208 + 0xf8, 0x30, 0x14, 0x52, 0x10, 0xe2, 0x00, 0x32, 1209 + 0x77, 0x12, 0x00, 0x55, 0x77, 0x13, 0x00, 0x57, 1210 + 0x80, 0x82, 0x48, 0x11, 0xe7, 0x62, 0xf0, 0x40, 1211 + 0x00, 0x01, 0xe5, 0x01, 0x88, 0x11, 0xf4, 0x95, 1212 + 0x77, 0x12, 0x00, 0x7b, 0x48, 0x11, 0x71, 0x82, 1213 + 0x00, 0x12, 0x1a, 0xe2, 0x00, 0x07, 0x80, 0xe2, 1214 + 0x00, 0x07, 0xf9, 0x80, 0x16, 0x9a, 0xee, 0x01, 1215 + 0x8a, 0x17, 0x48, 0x11, 0x8a, 0x16, 0x8a, 0x11, 1216 + 0xf4, 0xe4, 0x4a, 0x11, 0x88, 0x11, 0x77, 0x0e, 1217 + 0x00, 0x05, 0x77, 0x12, 0x00, 0x55, 0xe8, 0x04, 1218 + 0xf6, 0xb8, 0x28, 0xe1, 0x00, 0x02, 0xee, 0xff, 1219 + 0x80, 0x82, 0x77, 0x12, 0x00, 0x57, 0xf0, 0x20, 1220 + 0x80, 0x00, 0xee, 0x01, 0x1a, 0x82, 0x77, 0x12, 1221 + 0x00, 0x57, 0x80, 0x82, 0xe8, 0x01, 0x32, 0xe1, 1222 + 0x00, 0x02, 0xf5, 0x82, 0x77, 0x11, 0x00, 0x54, 1223 + 0xf6, 0x93, 0x18, 0x81, 0x77, 0x11, 0x00, 0x54, 1224 + 0xf2, 0xa0, 0x80, 0x81, 0x8a, 0x11, 0xf4, 0x95, 1225 + 0xf4, 0xe4, 0x4a, 0x11, 0x4a, 0x16, 0xf4, 0x95, 1226 + 0x71, 0x04, 0x00, 0x11, 0xfb, 0x80, 0x16, 0xa2, 1227 + 0x88, 0x16, 0xf4, 0x95, 0x77, 0x12, 0x00, 0x55, 1228 + 0x10, 0xe6, 0x00, 0x03, 0x80, 0x82, 0x77, 0x12, 1229 + 0x00, 0x56, 0x10, 0xe1, 0x00, 0x02, 0x77, 0x13, 1230 + 0x00, 0x56, 0x80, 0x82, 0x77, 0x12, 0x00, 0x56, 1231 + 0x10, 0xe1, 0x00, 0x03, 0x80, 0x82, 0x10, 0xe1, 1232 + 0x00, 0x04, 0x77, 0x12, 0x00, 0x56, 0x80, 0x82, 1233 + 0x77, 0x12, 0x00, 0x56, 0x10, 0xe1, 0x00, 0x01, 1234 + 0x80, 0x82, 0xe7, 0x12, 0xe5, 0x01, 0xf9, 0x80, 1235 + 0x16, 0x9a, 0x8a, 0x16, 0x8a, 0x11, 0xf4, 0xe4, 1236 + 0x4a, 0x11, 0x4a, 0x16, 0x4a, 0x17, 0xee, 0xf9, 1237 + 0x77, 0x11, 0x00, 0x7b, 0x76, 0x00, 0x00, 0x16, 1238 + 0x76, 0x01, 0x00, 0x17, 0x76, 0x02, 0x00, 0x1a, 1239 + 0x76, 0x03, 0x00, 0x1b, 0x76, 0x04, 0x00, 0x1c, 1240 + 0x76, 0x05, 0x00, 0x1d, 0x71, 0x81, 0x00, 0x17, 1241 + 0x71, 0xe7, 0x00, 0x06, 0x00, 0x11, 0x10, 0x81, 1242 + 0xf8, 0x44, 0x14, 0xdf, 0xf9, 0x80, 0x16, 0x53, 1243 + 0xf6, 0xb8, 0xfb, 0x80, 0x15, 0x85, 0xf0, 0x20, 1244 + 0xff, 0xff, 0xf6, 0xb8, 0xfb, 0x80, 0x16, 0x08, 1245 + 0xf0, 0x20, 0xff, 0xff, 0x77, 0x11, 0x00, 0x7b, 1246 + 0x71, 0x81, 0x00, 0x17, 0x76, 0xe7, 0x00, 0x06, 1247 + 0x00, 0x01, 0x48, 0x17, 0x77, 0x16, 0x00, 0x00, 1248 + 0x77, 0x10, 0x00, 0x04, 0x77, 0x15, 0x00, 0x03, 1249 + 0x77, 0x14, 0x00, 0x02, 0x77, 0x13, 0x00, 0x01, 1250 + 0xf0, 0x00, 0x00, 0x39, 0x76, 0xe7, 0x00, 0x08, 1251 + 0x00, 0x1f, 0x76, 0xe7, 0x00, 0x07, 0x00, 0x00, 1252 + 0x88, 0x0e, 0x77, 0x1a, 0x00, 0x05, 0x48, 0x17, 1253 + 0xf0, 0x00, 0x00, 0x09, 0x88, 0x12, 0x48, 0x18, 1254 + 0x88, 0x19, 0xe8, 0x00, 0xf0, 0x72, 0x15, 0x2c, 1255 + 0x73, 0x19, 0x00, 0x11, 0x76, 0x82, 0x00, 0x00, 1256 + 0x11, 0x91, 0x73, 0x11, 0x00, 0x19, 0x70, 0xe2, 1257 + 0x00, 0x03, 0x00, 0x16, 0x70, 0xe2, 0x00, 0x04, 1258 + 0x00, 0x13, 0x70, 0xe2, 0x00, 0x05, 0x00, 0x14, 1259 + 0x81, 0xe2, 0x00, 0x01, 0x70, 0xe2, 0x00, 0x06, 1260 + 0x00, 0x15, 0x70, 0xe2, 0x00, 0x07, 0x00, 0x10, 1261 + 0x80, 0xe2, 0x00, 0x02, 0x73, 0x0e, 0x00, 0x11, 1262 + 0xf1, 0x00, 0x00, 0x1e, 0x6d, 0xee, 0x00, 0x05, 1263 + 0x6d, 0xeb, 0x00, 0x05, 0x6d, 0xec, 0x00, 0x05, 1264 + 0x6d, 0xed, 0x00, 0x05, 0x6d, 0xe8, 0x00, 0x05, 1265 + 0xf0, 0x00, 0x00, 0x01, 0x81, 0x91, 0x6d, 0xea, 1266 + 0x00, 0x08, 0x73, 0x11, 0x00, 0x0e, 0xee, 0x07, 1267 + 0x76, 0xe7, 0x00, 0x41, 0x00, 0x24, 0x76, 0xe7, 1268 + 0x00, 0x46, 0x00, 0x25, 0x76, 0xe7, 0x00, 0x4b, 1269 + 0x00, 0x26, 0x76, 0xe7, 0x00, 0x50, 0x00, 0x27, 1270 + 0x8a, 0x17, 0x8a, 0x16, 0x8a, 0x11, 0xf4, 0xe4, 1271 + 0x4a, 0x11, 0x4a, 0x16, 0xee, 0xfe, 0x88, 0x11, 1272 + 0x56, 0x06, 0x4e, 0x00, 0xf9, 0x80, 0x16, 0xa2, 1273 + 0xf7, 0xb8, 0x10, 0xf8, 0x00, 0x11, 0xf0, 0x10, 1274 + 0xff, 0xff, 0xfa, 0x45, 0x15, 0x60, 0x77, 0x16, 1275 + 0xff, 0xff, 0x77, 0x12, 0x00, 0x7b, 0x49, 0x11, 1276 + 0x10, 0x82, 0xf6, 0x03, 0xf0, 0x00, 0x00, 0x09, 1277 + 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x10, 0x81, 1278 + 0xf8, 0x44, 0x15, 0x71, 0xf2, 0x73, 0x15, 0x71, 1279 + 0xf4, 0x95, 0xe7, 0x16, 0x77, 0x11, 0x00, 0x7b, 1280 + 0x10, 0x81, 0xf0, 0x00, 0x00, 0x09, 0x88, 0x11, 1281 + 0xf4, 0x95, 0x77, 0x12, 0x00, 0x06, 0x10, 0x81, 1282 + 0xf8, 0x45, 0x15, 0x5c, 0x6e, 0xea, 0xff, 0xff, 1283 + 0x15, 0x69, 0x6d, 0xe9, 0x00, 0x08, 0x76, 0x86, 1284 + 0x00, 0x01, 0xe9, 0x01, 0x56, 0x00, 0xf1, 0x80, 1285 + 0x10, 0xf8, 0x00, 0x0b, 0xf8, 0x45, 0x15, 0x7e, 1286 + 0xfb, 0x80, 0x15, 0x85, 0xf4, 0x95, 0x48, 0x16, 1287 + 0xf9, 0x80, 0x16, 0x9a, 0xee, 0x02, 0x48, 0x16, 1288 + 0x8a, 0x16, 0x8a, 0x11, 0xf4, 0xe4, 0x4a, 0x11, 1289 + 0xee, 0xff, 0xfb, 0x80, 0x16, 0xa2, 0x88, 0x11, 1290 + 0xf4, 0x95, 0x77, 0x10, 0xff, 0xff, 0xf4, 0xa9, 1291 + 0xf8, 0x30, 0x15, 0xc4, 0x10, 0xe1, 0x00, 0x03, 1292 + 0x77, 0x12, 0x00, 0x55, 0x80, 0x82, 0x77, 0x12, 1293 + 0x00, 0x56, 0x76, 0x82, 0x00, 0x00, 0x77, 0x12, 1294 + 0x00, 0x56, 0x76, 0x82, 0x00, 0x00, 0x77, 0x12, 1295 + 0x00, 0x56, 0x76, 0x82, 0x00, 0x00, 0x77, 0x12, 1296 + 0x00, 0x56, 0x76, 0x82, 0x00, 0x00, 0x77, 0x12, 1297 + 0x00, 0x56, 0x76, 0x82, 0x00, 0x00, 0x10, 0xe1, 1298 + 0x00, 0x02, 0xf0, 0x00, 0x00, 0x08, 0x32, 0xf8, 1299 + 0x00, 0x08, 0x77, 0x12, 0x00, 0x54, 0xe8, 0x01, 1300 + 0xf4, 0x82, 0xf4, 0x93, 0x18, 0x82, 0x77, 0x12, 1301 + 0x00, 0x54, 0xf0, 0x40, 0x00, 0x00, 0x80, 0x82, 1302 + 0x10, 0xe1, 0x00, 0x01, 0xf9, 0x80, 0x16, 0x76, 1303 + 0x10, 0xe1, 0x00, 0x01, 0xf9, 0x80, 0x16, 0x66, 1304 + 0xf0, 0x73, 0x16, 0x03, 0x77, 0x11, 0x00, 0x7b, 1305 + 0x71, 0x81, 0x00, 0x11, 0x71, 0xe1, 0x00, 0x07, 1306 + 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x10, 0xe1, 1307 + 0x00, 0x09, 0xf9, 0x80, 0x15, 0x85, 0x77, 0x11, 1308 + 0x00, 0x7b, 0x71, 0x81, 0x00, 0x11, 0x10, 0xe1, 1309 + 0x00, 0x09, 0xfb, 0x80, 0x15, 0x85, 0xf0, 0x00, 1310 + 0x00, 0x08, 0x77, 0x11, 0x00, 0x7b, 0x71, 0x81, 1311 + 0x00, 0x11, 0x10, 0xe1, 0x00, 0x09, 0xfb, 0x80, 1312 + 0x15, 0x85, 0xf0, 0x00, 0x00, 0x10, 0x77, 0x11, 1313 + 0x00, 0x7b, 0x71, 0x81, 0x00, 0x11, 0x10, 0xe1, 1314 + 0x00, 0x09, 0xfb, 0x80, 0x15, 0x85, 0xf0, 0x00, 1315 + 0x00, 0x18, 0x77, 0x11, 0x00, 0x7b, 0x71, 0x81, 1316 + 0x00, 0x11, 0x10, 0xe1, 0x00, 0x09, 0xfb, 0x80, 1317 + 0x15, 0x85, 0xf0, 0x00, 0x00, 0x20, 0x77, 0x11, 1318 + 0x00, 0x7b, 0x71, 0x81, 0x00, 0x11, 0x10, 0xe1, 1319 + 0x00, 0x09, 0xfb, 0x80, 0x15, 0x85, 0xf0, 0x00, 1320 + 0x00, 0x28, 0xf9, 0x80, 0x16, 0x9a, 0xee, 0x01, 1321 + 0x8a, 0x11, 0xf4, 0xe4, 0x4a, 0x11, 0xee, 0xff, 1322 + 0xfb, 0x80, 0x16, 0xa2, 0x88, 0x11, 0xf4, 0x95, 1323 + 0x77, 0x10, 0xff, 0xff, 0xf4, 0xa9, 0xf8, 0x30, 1324 + 0x16, 0x41, 0x77, 0x11, 0x00, 0x55, 0x76, 0x81, 1325 + 0x00, 0x1e, 0x77, 0x11, 0x00, 0x56, 0x76, 0x81, 1326 + 0x00, 0x00, 0x77, 0x11, 0x00, 0x56, 0x76, 0x81, 1327 + 0x00, 0x00, 0x77, 0x11, 0x00, 0x56, 0x76, 0x81, 1328 + 0x00, 0x00, 0x77, 0x11, 0x00, 0x56, 0x76, 0x81, 1329 + 0x00, 0x00, 0x77, 0x11, 0x00, 0x56, 0x76, 0x81, 1330 + 0x00, 0x00, 0x77, 0x11, 0x00, 0x56, 0x76, 0x81, 1331 + 0x00, 0x00, 0x77, 0x11, 0x00, 0x56, 0x76, 0x81, 1332 + 0x00, 0x00, 0x77, 0x11, 0x00, 0x56, 0x76, 0x81, 1333 + 0x00, 0x00, 0x77, 0x11, 0x00, 0x56, 0x76, 0x81, 1334 + 0x00, 0x00, 0x77, 0x11, 0x00, 0x56, 0xf2, 0x73, 1335 + 0x16, 0x4e, 0x76, 0x81, 0x00, 0x00, 0x77, 0x11, 1336 + 0x00, 0x7b, 0x71, 0x81, 0x00, 0x11, 0x71, 0xe1, 1337 + 0x00, 0x07, 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 1338 + 0x10, 0xe1, 0x00, 0x39, 0xf9, 0x80, 0x16, 0x08, 1339 + 0xf9, 0x80, 0x16, 0x9a, 0xee, 0x01, 0x8a, 0x11, 1340 + 0xf4, 0xe4, 0x4a, 0x11, 0x77, 0x11, 0x00, 0x7b, 1341 + 0x10, 0x81, 0xf0, 0x00, 0x00, 0x04, 0x88, 0x11, 1342 + 0xf4, 0x95, 0xf4, 0x95, 0x10, 0x81, 0xfa, 0x44, 1343 + 0x16, 0x63, 0xf4, 0x95, 0xee, 0xff, 0x76, 0x81, 1344 + 0x00, 0x01, 0xee, 0x01, 0x8a, 0x11, 0xf4, 0xe4, 1345 + 0xf0, 0x10, 0x00, 0x10, 0x4a, 0x11, 0x32, 0xf8, 1346 + 0x00, 0x08, 0xee, 0xff, 0x77, 0x11, 0x00, 0x01, 1347 + 0xe8, 0x01, 0xee, 0x01, 0xf4, 0x82, 0x1a, 0x81, 1348 + 0x80, 0x81, 0x8a, 0x11, 0xf4, 0x95, 0xf4, 0xe4, 1349 + 0xf0, 0x10, 0x00, 0x10, 0x4a, 0x11, 0x32, 0xf8, 1350 + 0x00, 0x08, 0xee, 0xff, 0xe8, 0x01, 0x77, 0x11, 1351 + 0x00, 0x00, 0xf4, 0x82, 0xee, 0x01, 0xf4, 0x93, 1352 + 0x18, 0x81, 0x80, 0x81, 0x8a, 0x11, 0xf4, 0x95, 1353 + 0xf4, 0xe4, 0x4a, 0x11, 0xf0, 0x10, 0x00, 0x10, 1354 + 0x77, 0x11, 0x00, 0x00, 0x32, 0xf8, 0x00, 0x08, 1355 + 0xee, 0xff, 0x11, 0x81, 0xe8, 0x01, 0xee, 0x01, 1356 + 0x77, 0x11, 0x00, 0x00, 0xf4, 0x82, 0xf2, 0xa0, 1357 + 0x80, 0x81, 0x8a, 0x11, 0xf4, 0x95, 0xf4, 0xe4, 1358 + 0xf2, 0x73, 0x16, 0x9e, 0xf6, 0xbb, 0xf4, 0x95, 1359 + 0xf4, 0x95, 0xf4, 0x95, 0xf4, 0x95, 0xf4, 0xe4, 1360 + 0xf2, 0x73, 0x16, 0xa6, 0xf7, 0xbb, 0xf4, 0x95, 1361 + 0xf4, 0x95, 0xf4, 0x95, 0xf4, 0x95, 0xf4, 0xe4, 1362 + 0x4a, 0x11, 0x4a, 0x16, 0xf4, 0x95, 0x71, 0x04, 1363 + 0x00, 0x16, 0xfb, 0x80, 0x16, 0xa2, 0x88, 0x11, 1364 + 0xf4, 0x95, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1365 + 0x76, 0x82, 0x00, 0x0e, 0x10, 0xe6, 0x00, 0x0e, 1366 + 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x80, 0x82, 1367 + 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 1368 + 0x00, 0x0d, 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 1369 + 0x10, 0xe6, 0x00, 0x0d, 0x80, 0x82, 0x71, 0xe1, 1370 + 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x0c, 1371 + 0x10, 0xe6, 0x00, 0x0c, 0x71, 0xe1, 0x00, 0x06, 1372 + 0x00, 0x12, 0x80, 0x82, 0x71, 0xe1, 0x00, 0x05, 1373 + 0x00, 0x12, 0x76, 0x82, 0x00, 0x0b, 0x10, 0xe6, 1374 + 0x00, 0x0b, 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 1375 + 0x80, 0x82, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1376 + 0x76, 0x82, 0x00, 0x0a, 0x71, 0xe1, 0x00, 0x06, 1377 + 0x00, 0x12, 0x10, 0xe6, 0x00, 0x0a, 0x80, 0x82, 1378 + 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 1379 + 0x00, 0x09, 0x10, 0xe6, 0x00, 0x09, 0x71, 0xe1, 1380 + 0x00, 0x06, 0x00, 0x12, 0x80, 0x82, 0x71, 0xe1, 1381 + 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x08, 1382 + 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x10, 0xe6, 1383 + 0x00, 0x08, 0x80, 0x82, 0x71, 0xe1, 0x00, 0x05, 1384 + 0x00, 0x12, 0x76, 0x82, 0x00, 0x07, 0x10, 0xe6, 1385 + 0x00, 0x07, 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 1386 + 0x80, 0x82, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1387 + 0x76, 0x82, 0x00, 0x06, 0x71, 0xe1, 0x00, 0x06, 1388 + 0x00, 0x12, 0x10, 0xe6, 0x00, 0x06, 0x80, 0x82, 1389 + 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 1390 + 0x00, 0x05, 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 1391 + 0x10, 0xe6, 0x00, 0x05, 0x80, 0x82, 0x71, 0xe1, 1392 + 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x04, 1393 + 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x10, 0xe6, 1394 + 0x00, 0x04, 0x80, 0x82, 0x71, 0xe1, 0x00, 0x05, 1395 + 0x00, 0x12, 0x76, 0x82, 0x00, 0x03, 0x71, 0xe1, 1396 + 0x00, 0x06, 0x00, 0x12, 0x10, 0xe6, 0x00, 0x03, 1397 + 0x80, 0x82, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1398 + 0x76, 0x82, 0x00, 0x02, 0x10, 0xe6, 0x00, 0x02, 1399 + 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x80, 0x82, 1400 + 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 1401 + 0x00, 0x01, 0x10, 0xe6, 0x00, 0x01, 0x71, 0xe1, 1402 + 0x00, 0x06, 0x00, 0x12, 0x80, 0x82, 0x71, 0xe1, 1403 + 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 1404 + 0x71, 0xe1, 0x00, 0x06, 0x00, 0x13, 0xe7, 0x62, 1405 + 0xe5, 0x01, 0xf9, 0x80, 0x16, 0x9a, 0x8a, 0x16, 1406 + 0x8a, 0x11, 0xf4, 0xe4, 0x4a, 0x11, 0x88, 0x11, 1407 + 0xf4, 0x95, 0xf4, 0x95, 0x71, 0xe1, 0x00, 0x05, 1408 + 0x00, 0x12, 0xee, 0xff, 0x76, 0x82, 0x00, 0x00, 1409 + 0xee, 0x01, 0x71, 0xe1, 0x00, 0x06, 0x00, 0x11, 1410 + 0x69, 0x81, 0x00, 0x01, 0x8a, 0x11, 0xf4, 0x95, 1411 + 0xf4, 0xe4, 0x4a, 0x11, 0x88, 0x11, 0xf4, 0x95, 1412 + 0xf4, 0x95, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1413 + 0xee, 0xff, 0x76, 0x82, 0x00, 0x01, 0xee, 0x01, 1414 + 0x71, 0xe1, 0x00, 0x06, 0x00, 0x11, 0x69, 0x81, 1415 + 0x00, 0x01, 0x8a, 0x11, 0xf4, 0x95, 0xf4, 0xe4, 1416 + 0x4a, 0x11, 0x77, 0x11, 0x00, 0x7b, 0x10, 0x81, 1417 + 0xf0, 0x00, 0x00, 0x94, 0x88, 0x11, 0xf4, 0x95, 1418 + 0xf4, 0x95, 0x10, 0x81, 0xfa, 0x44, 0x17, 0x9c, 1419 + 0xf4, 0x95, 0xee, 0xff, 0xf9, 0x80, 0x16, 0x53, 1420 + 0x77, 0x11, 0x00, 0x7b, 0x10, 0x81, 0xf0, 0x00, 1421 + 0x00, 0x94, 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, 1422 + 0x76, 0x81, 0x00, 0x01, 0xee, 0x01, 0x76, 0xe1, 1423 + 0x00, 0x01, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x02, 1424 + 0x00, 0x21, 0x76, 0xe1, 0x00, 0x03, 0x00, 0x20, 1425 + 0x76, 0xe1, 0x00, 0x04, 0x00, 0x23, 0x76, 0xe1, 1426 + 0x00, 0x05, 0x00, 0x22, 0x76, 0xe1, 0x00, 0x06, 1427 + 0x00, 0x38, 0x76, 0xe1, 0x00, 0x07, 0x00, 0x39, 1428 + 0x76, 0xe1, 0x00, 0x08, 0x00, 0x15, 0x76, 0xe1, 1429 + 0x00, 0x09, 0x00, 0x14, 0x76, 0xe1, 0x00, 0x0a, 1430 + 0x00, 0x00, 0x76, 0xe1, 0x00, 0x0b, 0x00, 0x41, 1431 + 0x76, 0xe1, 0x00, 0x0c, 0x00, 0x40, 0x76, 0xe1, 1432 + 0x00, 0x0d, 0x00, 0x43, 0x76, 0xe1, 0x00, 0x0e, 1433 + 0x00, 0x42, 0x76, 0xe1, 0x00, 0x0f, 0x00, 0x48, 1434 + 0x76, 0xe1, 0x00, 0x10, 0x00, 0x49, 0x76, 0xe1, 1435 + 0x00, 0x11, 0x00, 0x1b, 0x76, 0xe1, 0x00, 0x12, 1436 + 0x00, 0x1a, 0x8a, 0x11, 0xf4, 0x95, 0xf4, 0xe4, 1437 + 0x4a, 0x11, 0xee, 0xfd, 0x88, 0x11, 0x56, 0x06, 1438 + 0x4e, 0x00, 0xf9, 0x80, 0x16, 0xa2, 0x77, 0x12, 1439 + 0x00, 0x7b, 0x77, 0x0e, 0x00, 0x09, 0x10, 0x82, 1440 + 0x28, 0xf8, 0x00, 0x11, 0xf0, 0x00, 0x00, 0x95, 1441 + 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x10, 0x81, 1442 + 0xf8, 0x45, 0x17, 0xf0, 0xf2, 0x73, 0x17, 0xfd, 1443 + 0x77, 0x11, 0xff, 0xff, 0x76, 0x81, 0x00, 0x01, 1444 + 0xe9, 0x01, 0x56, 0x00, 0xf1, 0x80, 0x10, 0xf8, 1445 + 0x00, 0x0b, 0xf8, 0x45, 0x17, 0xfd, 0xfb, 0x80, 1446 + 0x18, 0x10, 0xf4, 0x95, 0x48, 0x11, 0xf9, 0x80, 1447 + 0x16, 0x9a, 0xee, 0x03, 0x48, 0x11, 0x8a, 0x11, 1448 + 0xf4, 0x95, 0xf4, 0xe4, 0x4a, 0x11, 0x88, 0x11, 1449 + 0xf4, 0x95, 0xee, 0xff, 0x71, 0xe1, 0x00, 0x01, 1450 + 0x00, 0x11, 0xee, 0x01, 0x10, 0x81, 0x8a, 0x11, 1451 + 0xf4, 0x95, 0xf4, 0xe4, 0x4a, 0x11, 0xee, 0xff, 1452 + 0xfb, 0x80, 0x16, 0xa2, 0x88, 0x11, 0xf4, 0x95, 1453 + 0x77, 0x10, 0xff, 0xff, 0xf4, 0xa9, 0xf8, 0x30, 1454 + 0x18, 0xc3, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1455 + 0x76, 0x82, 0x00, 0x00, 0x71, 0xe1, 0x00, 0x06, 1456 + 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x71, 0xe1, 1457 + 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x01, 1458 + 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x76, 0x82, 1459 + 0x00, 0x00, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1460 + 0x76, 0x82, 0x00, 0x02, 0x71, 0xe1, 0x00, 0x06, 1461 + 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x71, 0xe1, 1462 + 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x03, 1463 + 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x76, 0x82, 1464 + 0x00, 0x00, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1465 + 0x76, 0x82, 0x00, 0x04, 0x71, 0xe1, 0x00, 0x06, 1466 + 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x71, 0xe1, 1467 + 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x05, 1468 + 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x76, 0x82, 1469 + 0x00, 0x00, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1470 + 0x76, 0x82, 0x00, 0x06, 0x71, 0xe1, 0x00, 0x06, 1471 + 0x00, 0x12, 0x76, 0x82, 0x00, 0x01, 0x71, 0xe1, 1472 + 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x07, 1473 + 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x76, 0x82, 1474 + 0x20, 0x00, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1475 + 0x76, 0x82, 0x00, 0x08, 0x71, 0xe1, 0x00, 0x06, 1476 + 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x71, 0xe1, 1477 + 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x09, 1478 + 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x76, 0x82, 1479 + 0x00, 0x00, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1480 + 0x76, 0x82, 0x00, 0x0a, 0x71, 0xe1, 0x00, 0x06, 1481 + 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x71, 0xe1, 1482 + 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x0b, 1483 + 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x76, 0x82, 1484 + 0x00, 0x00, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1485 + 0x76, 0x82, 0x00, 0x0c, 0x71, 0xe1, 0x00, 0x06, 1486 + 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x71, 0xe1, 1487 + 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x0d, 1488 + 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x76, 0x82, 1489 + 0x00, 0x00, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1490 + 0x76, 0x82, 0x00, 0x0e, 0x71, 0xe1, 0x00, 0x06, 1491 + 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x10, 0xe1, 1492 + 0x00, 0x07, 0xf9, 0x80, 0x16, 0x76, 0x10, 0xe1, 1493 + 0x00, 0x08, 0xf9, 0x80, 0x16, 0x76, 0x10, 0xe1, 1494 + 0x00, 0x07, 0xf9, 0x80, 0x16, 0x66, 0x10, 0xe1, 1495 + 0x00, 0x08, 0xf9, 0x80, 0x16, 0x66, 0xf0, 0x73, 1496 + 0x18, 0xd1, 0x77, 0x11, 0x00, 0x7b, 0x10, 0x81, 1497 + 0xfb, 0x80, 0x18, 0x10, 0xf0, 0x00, 0x00, 0x95, 1498 + 0x77, 0x11, 0x00, 0x7b, 0x10, 0x81, 0xfb, 0x80, 1499 + 0x18, 0x10, 0xf0, 0x00, 0x00, 0x9e, 0xf9, 0x80, 1500 + 0x16, 0x9a, 0xee, 0x01, 0x8a, 0x11, 0xf4, 0xe4, 1501 + 0x4a, 0x11, 0x88, 0x11, 0xee, 0xff, 0xf4, 0x95, 1502 + 0x10, 0x04, 0x71, 0xe1, 0x00, 0x03, 0x00, 0x11, 1503 + 0xee, 0x01, 0x80, 0x81, 0x8a, 0x11, 0xf4, 0x95, 1504 + 0xf4, 0xe4, 0x4a, 0x11, 0x4a, 0x16, 0xf4, 0x95, 1505 + 0x71, 0x04, 0x00, 0x16, 0xfb, 0x80, 0x16, 0xa2, 1506 + 0x88, 0x11, 0xf4, 0x95, 0x71, 0xe1, 0x00, 0x02, 1507 + 0x00, 0x12, 0x76, 0x82, 0x00, 0x10, 0x10, 0xe6, 1508 + 0x00, 0x01, 0x71, 0xe1, 0x00, 0x03, 0x00, 0x12, 1509 + 0x80, 0x82, 0x71, 0xe1, 0x00, 0x04, 0x00, 0x12, 1510 + 0x10, 0xe6, 0x00, 0x02, 0x80, 0x82, 0xe7, 0x62, 1511 + 0x71, 0xe1, 0x00, 0x02, 0x00, 0x13, 0xe5, 0x01, 1512 + 0xf9, 0x80, 0x16, 0x9a, 0x8a, 0x16, 0x8a, 0x11, 1513 + 0xf4, 0xe4, 0x4a, 0x11, 0x88, 0x11, 0xee, 0xff, 1514 + 0xee, 0x01, 0x10, 0xe1, 0x00, 0x01, 0x8a, 0x11, 1515 + 0xf4, 0x95, 0xf4, 0xe4, 0x4a, 0x11, 0x77, 0x11, 1516 + 0x00, 0x7b, 0x10, 0x81, 0xf0, 0x00, 0x00, 0xb3, 1517 + 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x10, 0x81, 1518 + 0xfa, 0x44, 0x19, 0x2a, 0xf4, 0x95, 0xee, 0xff, 1519 + 0xf9, 0x80, 0x16, 0x53, 0x77, 0x11, 0x00, 0x7b, 1520 + 0x10, 0x81, 0xf0, 0x00, 0x00, 0xb3, 0x88, 0x11, 1521 + 0xf4, 0x95, 0xf4, 0x95, 0x76, 0x81, 0x00, 0x01, 1522 + 0xee, 0x01, 0x76, 0xe1, 0x00, 0x01, 0x00, 0x00, 1523 + 0x76, 0xe1, 0x00, 0x02, 0x00, 0x13, 0x76, 0xe1, 1524 + 0x00, 0x03, 0x00, 0x26, 0x76, 0xe1, 0x00, 0x04, 1525 + 0x00, 0x25, 0x76, 0xe1, 0x00, 0x05, 0x00, 0x24, 1526 + 0x76, 0xe1, 0x00, 0x06, 0x00, 0x00, 0x76, 0xe1, 1527 + 0x00, 0x07, 0x00, 0x17, 0x76, 0xe1, 0x00, 0x08, 1528 + 0x00, 0x32, 0x76, 0xe1, 0x00, 0x09, 0x00, 0x31, 1529 + 0x76, 0xe1, 0x00, 0x0a, 0x00, 0x30, 0x8a, 0x11, 1530 + 0xf4, 0x95, 0xf4, 0xe4, 0x4a, 0x11, 0x4a, 0x16, 1531 + 0x4a, 0x17, 0xee, 0xff, 0xf4, 0x95, 0x71, 0x06, 1532 + 0x00, 0x17, 0xfb, 0x80, 0x16, 0xa2, 0x88, 0x11, 1533 + 0xf4, 0x95, 0xf7, 0xb8, 0x10, 0xf8, 0x00, 0x11, 1534 + 0xf0, 0x10, 0xff, 0xff, 0xfa, 0x45, 0x19, 0x73, 1535 + 0x77, 0x16, 0xff, 0xff, 0x77, 0x12, 0x00, 0x7b, 1536 + 0x77, 0x0e, 0x00, 0x05, 0x10, 0x82, 0x28, 0xf8, 1537 + 0x00, 0x11, 0xf0, 0x00, 0x00, 0xb4, 0x88, 0x11, 1538 + 0xf4, 0x95, 0xf4, 0x95, 0x10, 0x81, 0xf8, 0x44, 1539 + 0x19, 0x84, 0xf2, 0x73, 0x19, 0x84, 0xf4, 0x95, 1540 + 0xe7, 0x16, 0x77, 0x11, 0x00, 0x7b, 0x10, 0x81, 1541 + 0xf0, 0x00, 0x00, 0xb4, 0x88, 0x11, 0xf4, 0x95, 1542 + 0x77, 0x12, 0x00, 0x02, 0x10, 0x81, 0xf8, 0x45, 1543 + 0x19, 0x6f, 0x6e, 0xea, 0xff, 0xff, 0x19, 0x7c, 1544 + 0x6d, 0xe9, 0x00, 0x05, 0x61, 0xf8, 0x00, 0x17, 1545 + 0x00, 0x01, 0xfa, 0x20, 0x19, 0x8f, 0x76, 0x86, 1546 + 0x00, 0x01, 0xfb, 0x80, 0x19, 0x97, 0xf4, 0x95, 1547 + 0x48, 0x16, 0xf9, 0x80, 0x16, 0x9a, 0xee, 0x01, 1548 + 0x8a, 0x17, 0x48, 0x16, 0x8a, 0x16, 0x8a, 0x11, 1549 + 0xf4, 0xe4, 0x4a, 0x11, 0xee, 0xff, 0xfb, 0x80, 1550 + 0x16, 0xa2, 0x88, 0x11, 0xf4, 0x95, 0x77, 0x10, 1551 + 0xff, 0xff, 0xf4, 0xa9, 0xf8, 0x30, 0x19, 0xcc, 1552 + 0x71, 0xe1, 0x00, 0x02, 0x00, 0x12, 0x69, 0x82, 1553 + 0x00, 0x10, 0x71, 0xe1, 0x00, 0x02, 0x00, 0x12, 1554 + 0x68, 0x82, 0xf7, 0xff, 0x71, 0xe1, 0x00, 0x02, 1555 + 0x00, 0x12, 0x68, 0x82, 0xfb, 0xff, 0x71, 0xe1, 1556 + 0x00, 0x02, 0x00, 0x12, 0x68, 0x82, 0xff, 0xf0, 1557 + 0x71, 0xe1, 0x00, 0x03, 0x00, 0x12, 0x76, 0x82, 1558 + 0xff, 0xff, 0x71, 0xe1, 0x00, 0x04, 0x00, 0x12, 1559 + 0x76, 0x82, 0xff, 0xff, 0x71, 0xe1, 0x00, 0x02, 1560 + 0x00, 0x12, 0x69, 0x82, 0x00, 0x20, 0x71, 0xe1, 1561 + 0x00, 0x02, 0x00, 0x11, 0xf2, 0x73, 0x19, 0xda, 1562 + 0x68, 0x81, 0xff, 0xef, 0x77, 0x11, 0x00, 0x7b, 1563 + 0x10, 0x81, 0xfb, 0x80, 0x19, 0x97, 0xf0, 0x00, 1564 + 0x00, 0xb4, 0x77, 0x11, 0x00, 0x7b, 0x10, 0x81, 1565 + 0xfb, 0x80, 0x19, 0x97, 0xf0, 0x00, 0x00, 0xb9, 1566 + 0xf9, 0x80, 0x16, 0x9a, 0xee, 0x01, 0x8a, 0x11, 1567 + 0xf4, 0xe4, 0x00, 0xa4, 0x00, 0x00, 0x19, 0xdf, 1568 + 0x00, 0x01, 0x2a, 0xe6, 0x00, 0x00, 0x00, 0x01, 1569 + 0x2a, 0xe7, 0x00, 0x00, 0x00, 0x03, 0x2a, 0x12, 1570 + 0x0c, 0x01, 0xc3, 0x4f, 0x00, 0x00, 0x00, 0x01, 1571 + 0x2a, 0x15, 0x00, 0x00, 0x00, 0x02, 0x2a, 0x16, 1572 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x2a, 0x5d, 1573 + 0x00, 0x43, 0x00, 0x6f, 0x00, 0x70, 0x00, 0x79, 1574 + 0x00, 0x72, 0x00, 0x69, 0x00, 0x67, 0x00, 0x68, 1575 + 0x00, 0x74, 0x00, 0x20, 0x00, 0x54, 0x00, 0x65, 1576 + 0x00, 0x63, 0x00, 0x68, 0x00, 0x6e, 0x00, 0x6f, 1577 + 0x00, 0x54, 0x00, 0x72, 0x00, 0x65, 0x00, 0x6e, 1578 + 0x00, 0x64, 0x00, 0x20, 0x00, 0x41, 0x00, 0x47, 1579 + 0x00, 0x00, 0x00, 0x04, 0x2a, 0x76, 0x00, 0x30, 1580 + 0x00, 0x2e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x0c, 1581 + 0x2a, 0x7a, 0x00, 0x46, 0x00, 0x65, 0x00, 0x62, 1582 + 0x00, 0x20, 0x00, 0x32, 0x00, 0x37, 0x00, 0x20, 1583 + 0x00, 0x32, 0x00, 0x30, 0x00, 0x30, 0x00, 0x31, 1584 + 0x00, 0x00, 0x00, 0x09, 0x2a, 0x86, 0x00, 0x31, 1585 + 0x00, 0x34, 0x00, 0x3a, 0x00, 0x33, 0x00, 0x35, 1586 + 0x00, 0x3a, 0x00, 0x33, 0x00, 0x33, 0x00, 0x00, 1587 + 0x00, 0x0f, 0x2a, 0x8f, 0x00, 0x00, 0x00, 0x00, 1588 + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 1589 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1590 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1591 + 0x00, 0x00, 0x00, 0x01, 0x2a, 0x9e, 0x00, 0x00, 1592 + 0x00, 0x01, 0x2a, 0x9f, 0x00, 0x00, 0x00, 0x01, 1593 + 0x2a, 0xa0, 0x00, 0x00, 0x00, 0x01, 0x2a, 0xa1, 1594 + 0x00, 0x00, 0x00, 0x01, 0x2a, 0xa2, 0x00, 0x00, 1595 + 0x00, 0x01, 0x29, 0x7e, 0x00, 0x00, 0x00, 0x02, 1596 + 0x29, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 1597 + 0x29, 0x82, 0xff, 0xff, 0x00, 0x01, 0x2a, 0xa7, 1598 + 0x00, 0x00, 0x00, 0x05, 0x2a, 0xa8, 0x71, 0x41, 1599 + 0x20, 0x00, 0x20, 0x00, 0x00, 0x23, 0x04, 0x00, 1600 + 0x00, 0x0a, 0x2a, 0xad, 0x00, 0x00, 0x00, 0x00, 1601 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1602 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1603 + 0x00, 0x0f, 0x2a, 0xb7, 0x00, 0x00, 0x00, 0x00, 1604 + 0x00, 0x00, 0x00, 0x40, 0x00, 0xa0, 0x82, 0x40, 1605 + 0x00, 0x08, 0x30, 0x7f, 0x00, 0x80, 0x01, 0x80, 1606 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1607 + 0x00, 0x00, 0x00, 0x01, 0x27, 0x6e, 0x00, 0x00, 1608 + 0x00, 0x01, 0x27, 0x6f, 0x00, 0x00, 0x00, 0x00, 1609 + 0x00, 0x09, 0x00, 0x00, 0x1a, 0x83, 0x04, 0xe8, 1610 + 0x04, 0xcf, 0x04, 0xc5, 0x04, 0xba, 0x04, 0xb0, 1611 + 0x04, 0xac, 0x04, 0x9c, 0x04, 0x8c, 0x04, 0x81, 1612 + 0x00, 0x78, 0x00, 0x00, 0x01, 0x00, 0xf2, 0x73, 1613 + 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1614 + 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1615 + 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1616 + 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1617 + 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1618 + 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1619 + 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1620 + 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1621 + 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1622 + 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1623 + 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1624 + 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1625 + 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1626 + 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1627 + 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1628 + 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1629 + 0x07, 0xaa, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1630 + 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1631 + 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1632 + 0x02, 0x23, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1633 + 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1634 + 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1635 + 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1636 + 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1637 + 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1638 + 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1639 + 0x05, 0xe5, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1640 + 0x02, 0xb5, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1641 + 0x0e, 0x33, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1642 + 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0x00, 0x00, 1643 }; 1644
+2 -2
drivers/media/dvb/ttusb-dec/ttusb_dec.c
··· 1203 input_dev->keycode = rc_keys; 1204 1205 for (i = 0; i < ARRAY_SIZE(rc_keys); i++) 1206 - set_bit(rc_keys[i], input_dev->keybit); 1207 1208 input_register_device(input_dev); 1209 ··· 1529 usb_free_urb(dec->irq_urb); 1530 1531 usb_buffer_free(dec->udev,IRQ_PACKET_SIZE, 1532 - dec->irq_buffer, dec->irq_dma_handle); 1533 1534 if (dec->rc_input_dev) { 1535 input_unregister_device(dec->rc_input_dev);
··· 1203 input_dev->keycode = rc_keys; 1204 1205 for (i = 0; i < ARRAY_SIZE(rc_keys); i++) 1206 + set_bit(rc_keys[i], input_dev->keybit); 1207 1208 input_register_device(input_dev); 1209 ··· 1529 usb_free_urb(dec->irq_urb); 1530 1531 usb_buffer_free(dec->udev,IRQ_PACKET_SIZE, 1532 + dec->irq_buffer, dec->irq_dma_handle); 1533 1534 if (dec->rc_input_dev) { 1535 input_unregister_device(dec->rc_input_dev);
+7 -7
drivers/media/video/Kconfig
··· 188 189 To compile this driver as a module, choose M here: the 190 module will be called zr36067. 191 - 192 config VIDEO_ZORAN_BUZ 193 tristate "Iomega Buz support" 194 depends on VIDEO_ZORAN ··· 204 205 config VIDEO_ZORAN_DC30 206 tristate "Pinnacle/Miro DC30(+) support" 207 - depends on VIDEO_ZORAN 208 - help 209 Support for the Pinnacle/Miro DC30(+) MJPEG capture/playback 210 card. This also supports really old DC10 cards based on the 211 zr36050 MJPEG codec and zr36016 VFE. ··· 260 ---help--- 261 This is a video4linux driver for the 'Multimedia eXtension Board' 262 TV card by Siemens-Nixdorf. 263 - 264 To compile this driver as a module, choose M here: the 265 module will be called mxb. 266 ··· 274 for SAA7146 bases boards, so if you have some unsupported 275 saa7146 based, analog video card, chances are good that it 276 will work with this skeleton driver. 277 - 278 To compile this driver as a module, choose M here: the 279 module will be called dpc7146. 280 ··· 285 ---help--- 286 This is a video4linux driver for the Hexium HV-PCI6 and 287 Orion frame grabber cards by Hexium. 288 - 289 To compile this driver as a module, choose M here: the 290 module will be called hexium_orion. 291 ··· 297 This is a video4linux driver for the Hexium Gemini frame 298 grabber card by Hexium. Please note that the Gemini Dual 299 card is *not* fully supported. 300 - 301 To compile this driver as a module, choose M here: the 302 module will be called hexium_gemini. 303
··· 188 189 To compile this driver as a module, choose M here: the 190 module will be called zr36067. 191 + 192 config VIDEO_ZORAN_BUZ 193 tristate "Iomega Buz support" 194 depends on VIDEO_ZORAN ··· 204 205 config VIDEO_ZORAN_DC30 206 tristate "Pinnacle/Miro DC30(+) support" 207 + depends on VIDEO_ZORAN 208 + help 209 Support for the Pinnacle/Miro DC30(+) MJPEG capture/playback 210 card. This also supports really old DC10 cards based on the 211 zr36050 MJPEG codec and zr36016 VFE. ··· 260 ---help--- 261 This is a video4linux driver for the 'Multimedia eXtension Board' 262 TV card by Siemens-Nixdorf. 263 + 264 To compile this driver as a module, choose M here: the 265 module will be called mxb. 266 ··· 274 for SAA7146 bases boards, so if you have some unsupported 275 saa7146 based, analog video card, chances are good that it 276 will work with this skeleton driver. 277 + 278 To compile this driver as a module, choose M here: the 279 module will be called dpc7146. 280 ··· 285 ---help--- 286 This is a video4linux driver for the Hexium HV-PCI6 and 287 Orion frame grabber cards by Hexium. 288 + 289 To compile this driver as a module, choose M here: the 290 module will be called hexium_orion. 291 ··· 297 This is a video4linux driver for the Hexium Gemini frame 298 grabber card by Hexium. Please note that the Gemini Dual 299 card is *not* fully supported. 300 + 301 To compile this driver as a module, choose M here: the 302 module will be called hexium_gemini. 303
+7 -7
drivers/media/video/bt832.c
··· 231 232 static struct i2c_driver driver = { 233 .owner = THIS_MODULE, 234 - .name = "i2c bt832 driver", 235 - .id = -1, /* FIXME */ 236 - .flags = I2C_DF_NOTIFY, 237 - .attach_adapter = bt832_probe, 238 - .detach_client = bt832_detach, 239 - .command = bt832_command, 240 }; 241 static struct i2c_client client_template = 242 { 243 .name = "bt832", 244 .flags = I2C_CLIENT_ALLOW_USE, 245 - .driver = &driver, 246 }; 247 248
··· 231 232 static struct i2c_driver driver = { 233 .owner = THIS_MODULE, 234 + .name = "i2c bt832 driver", 235 + .id = -1, /* FIXME */ 236 + .flags = I2C_DF_NOTIFY, 237 + .attach_adapter = bt832_probe, 238 + .detach_client = bt832_detach, 239 + .command = bt832_command, 240 }; 241 static struct i2c_client client_template = 242 { 243 .name = "bt832", 244 .flags = I2C_CLIENT_ALLOW_USE, 245 + .driver = &driver, 246 }; 247 248
+41 -41
drivers/media/video/bttv-driver.c
··· 727 728 static void set_pll_freq(struct bttv *btv, unsigned int fin, unsigned int fout) 729 { 730 - unsigned char fl, fh, fi; 731 732 - /* prevent overflows */ 733 - fin/=4; 734 - fout/=4; 735 736 - fout*=12; 737 - fi=fout/fin; 738 739 - fout=(fout%fin)*256; 740 - fh=fout/fin; 741 742 - fout=(fout%fin)*256; 743 - fl=fout/fin; 744 745 - btwrite(fl, BT848_PLL_F_LO); 746 - btwrite(fh, BT848_PLL_F_HI); 747 - btwrite(fi|BT848_PLL_X, BT848_PLL_XCI); 748 } 749 750 static void set_pll(struct bttv *btv) 751 { 752 - int i; 753 754 - if (!btv->pll.pll_crystal) 755 - return; 756 757 if (btv->pll.pll_ofreq == btv->pll.pll_current) { 758 dprintk("bttv%d: PLL: no change required\n",btv->c.nr); 759 - return; 760 - } 761 762 - if (btv->pll.pll_ifreq == btv->pll.pll_ofreq) { 763 - /* no PLL needed */ 764 - if (btv->pll.pll_current == 0) 765 - return; 766 bttv_printk(KERN_INFO "bttv%d: PLL can sleep, using XTAL (%d).\n", 767 - btv->c.nr,btv->pll.pll_ifreq); 768 - btwrite(0x00,BT848_TGCTRL); 769 - btwrite(0x00,BT848_PLL_XCI); 770 - btv->pll.pll_current = 0; 771 - return; 772 - } 773 774 bttv_printk(KERN_INFO "bttv%d: PLL: %d => %d ",btv->c.nr, 775 - btv->pll.pll_ifreq, btv->pll.pll_ofreq); 776 set_pll_freq(btv, btv->pll.pll_ifreq, btv->pll.pll_ofreq); 777 778 - for (i=0; i<10; i++) { 779 /* Let other people run while the PLL stabilizes */ 780 bttv_printk("."); 781 msleep(10); 782 783 - if (btread(BT848_DSTATUS) & BT848_DSTATUS_PLOCK) { 784 btwrite(0,BT848_DSTATUS); 785 - } else { 786 - btwrite(0x08,BT848_TGCTRL); 787 - btv->pll.pll_current = btv->pll.pll_ofreq; 788 bttv_printk(" ok\n"); 789 - return; 790 - } 791 - } 792 - btv->pll.pll_current = -1; 793 bttv_printk("failed\n"); 794 - return; 795 } 796 797 /* used to switch between the bt848's analog/digital video capture modes */ ··· 1964 } 1965 1966 down(&fh->cap.lock); 1967 - kfree(fh->ov.clips); 1968 fh->ov.clips = clips; 1969 fh->ov.nclips = n; 1970 ··· 2758 fh->ov.w.height = fb->fmt.height; 2759 btv->init.ov.w.width = fb->fmt.width; 2760 btv->init.ov.w.height = fb->fmt.height; 2761 - kfree(fh->ov.clips); 2762 fh->ov.clips = NULL; 2763 fh->ov.nclips = 0; 2764
··· 727 728 static void set_pll_freq(struct bttv *btv, unsigned int fin, unsigned int fout) 729 { 730 + unsigned char fl, fh, fi; 731 732 + /* prevent overflows */ 733 + fin/=4; 734 + fout/=4; 735 736 + fout*=12; 737 + fi=fout/fin; 738 739 + fout=(fout%fin)*256; 740 + fh=fout/fin; 741 742 + fout=(fout%fin)*256; 743 + fl=fout/fin; 744 745 + btwrite(fl, BT848_PLL_F_LO); 746 + btwrite(fh, BT848_PLL_F_HI); 747 + btwrite(fi|BT848_PLL_X, BT848_PLL_XCI); 748 } 749 750 static void set_pll(struct bttv *btv) 751 { 752 + int i; 753 754 + if (!btv->pll.pll_crystal) 755 + return; 756 757 if (btv->pll.pll_ofreq == btv->pll.pll_current) { 758 dprintk("bttv%d: PLL: no change required\n",btv->c.nr); 759 + return; 760 + } 761 762 + if (btv->pll.pll_ifreq == btv->pll.pll_ofreq) { 763 + /* no PLL needed */ 764 + if (btv->pll.pll_current == 0) 765 + return; 766 bttv_printk(KERN_INFO "bttv%d: PLL can sleep, using XTAL (%d).\n", 767 + btv->c.nr,btv->pll.pll_ifreq); 768 + btwrite(0x00,BT848_TGCTRL); 769 + btwrite(0x00,BT848_PLL_XCI); 770 + btv->pll.pll_current = 0; 771 + return; 772 + } 773 774 bttv_printk(KERN_INFO "bttv%d: PLL: %d => %d ",btv->c.nr, 775 + btv->pll.pll_ifreq, btv->pll.pll_ofreq); 776 set_pll_freq(btv, btv->pll.pll_ifreq, btv->pll.pll_ofreq); 777 778 + for (i=0; i<10; i++) { 779 /* Let other people run while the PLL stabilizes */ 780 bttv_printk("."); 781 msleep(10); 782 783 + if (btread(BT848_DSTATUS) & BT848_DSTATUS_PLOCK) { 784 btwrite(0,BT848_DSTATUS); 785 + } else { 786 + btwrite(0x08,BT848_TGCTRL); 787 + btv->pll.pll_current = btv->pll.pll_ofreq; 788 bttv_printk(" ok\n"); 789 + return; 790 + } 791 + } 792 + btv->pll.pll_current = -1; 793 bttv_printk("failed\n"); 794 + return; 795 } 796 797 /* used to switch between the bt848's analog/digital video capture modes */ ··· 1964 } 1965 1966 down(&fh->cap.lock); 1967 + kfree(fh->ov.clips); 1968 fh->ov.clips = clips; 1969 fh->ov.nclips = n; 1970 ··· 2758 fh->ov.w.height = fb->fmt.height; 2759 btv->init.ov.w.width = fb->fmt.width; 2760 btv->init.ov.w.height = fb->fmt.height; 2761 + kfree(fh->ov.clips); 2762 fh->ov.clips = NULL; 2763 fh->ov.nclips = 0; 2764
+1
drivers/media/video/bttvp.h
··· 45 #include <media/tveeprom.h> 46 #include <media/ir-common.h> 47 48 #include "bt848.h" 49 #include "bttv.h" 50 #include "btcx-risc.h"
··· 45 #include <media/tveeprom.h> 46 #include <media/ir-common.h> 47 48 + 49 #include "bt848.h" 50 #include "bttv.h" 51 #include "btcx-risc.h"
+2
drivers/media/video/cx88/cx88-blackbird.c
··· 616 617 retval = request_firmware(&firmware, BLACKBIRD_FIRM_ENC_FILENAME, 618 &dev->pci->dev); 619 if (retval != 0) { 620 dprintk(0, "ERROR: Hotplug firmware request failed (%s).\n", 621 BLACKBIRD_FIRM_ENC_FILENAME);
··· 616 617 retval = request_firmware(&firmware, BLACKBIRD_FIRM_ENC_FILENAME, 618 &dev->pci->dev); 619 + 620 + 621 if (retval != 0) { 622 dprintk(0, "ERROR: Hotplug firmware request failed (%s).\n", 623 BLACKBIRD_FIRM_ENC_FILENAME);
+2
drivers/media/video/cx88/cx88-cards.c
··· 567 .radio_type = UNSET, 568 .tuner_addr = ADDR_UNSET, 569 .radio_addr = ADDR_UNSET, 570 .input = {{ 571 .type = CX88_VMUX_TELEVISION, 572 .vmux = 0, ··· 712 .radio_type = UNSET, 713 .tuner_addr = ADDR_UNSET, 714 .radio_addr = ADDR_UNSET, 715 .input = {{ 716 .type = CX88_VMUX_TELEVISION, 717 .vmux = 0,
··· 567 .radio_type = UNSET, 568 .tuner_addr = ADDR_UNSET, 569 .radio_addr = ADDR_UNSET, 570 + .tda9887_conf = TDA9887_PRESENT, 571 .input = {{ 572 .type = CX88_VMUX_TELEVISION, 573 .vmux = 0, ··· 711 .radio_type = UNSET, 712 .tuner_addr = ADDR_UNSET, 713 .radio_addr = ADDR_UNSET, 714 + .tda9887_conf = TDA9887_PRESENT, 715 .input = {{ 716 .type = CX88_VMUX_TELEVISION, 717 .vmux = 0,
-2
drivers/media/video/cx88/cx88-input.c
··· 453 input_dev->id.product = pci->device; 454 } 455 input_dev->cdev.dev = &pci->dev; 456 - 457 /* record handles to ourself */ 458 ir->core = core; 459 core->ir = ir; ··· 585 MODULE_AUTHOR("Gerd Knorr, Pavel Machek, Chris Pascoe"); 586 MODULE_DESCRIPTION("input driver for cx88 GPIO-based IR remote controls"); 587 MODULE_LICENSE("GPL"); 588 - 589 /* 590 * Local variables: 591 * c-basic-offset: 8
··· 453 input_dev->id.product = pci->device; 454 } 455 input_dev->cdev.dev = &pci->dev; 456 /* record handles to ourself */ 457 ir->core = core; 458 core->ir = ir; ··· 586 MODULE_AUTHOR("Gerd Knorr, Pavel Machek, Chris Pascoe"); 587 MODULE_DESCRIPTION("input driver for cx88 GPIO-based IR remote controls"); 588 MODULE_LICENSE("GPL"); 589 /* 590 * Local variables: 591 * c-basic-offset: 8
-1
drivers/media/video/cx88/cx88.h
··· 411 struct videobuf_dvb dvb; 412 void* fe_handle; 413 int (*fe_release)(void *handle); 414 - 415 /* for switching modulation types */ 416 unsigned char ts_gen_cntrl; 417
··· 411 struct videobuf_dvb dvb; 412 void* fe_handle; 413 int (*fe_release)(void *handle); 414 /* for switching modulation types */ 415 unsigned char ts_gen_cntrl; 416
+7 -47
drivers/media/video/em28xx/em28xx-core.c
··· 39 #define em28xx_coredbg(fmt, arg...) do {\ 40 if (core_debug) \ 41 printk(KERN_INFO "%s %s :"fmt, \ 42 - dev->name, __FUNCTION__ , ##arg); } while (0) 43 44 static unsigned int reg_debug; 45 module_param(reg_debug,int,0644); ··· 48 #define em28xx_regdbg(fmt, arg...) do {\ 49 if (reg_debug) \ 50 printk(KERN_INFO "%s %s :"fmt, \ 51 - dev->name, __FUNCTION__ , ##arg); } while (0) 52 53 static unsigned int isoc_debug; 54 module_param(isoc_debug,int,0644); ··· 57 #define em28xx_isocdbg(fmt, arg...) do {\ 58 if (isoc_debug) \ 59 printk(KERN_INFO "%s %s :"fmt, \ 60 - dev->name, __FUNCTION__ , ##arg); } while (0) 61 62 static int alt = EM28XX_PINOUT; 63 module_param(alt, int, 0644); ··· 116 } 117 } 118 119 - static void *rvmalloc(size_t size) 120 - { 121 - void *mem; 122 - unsigned long adr; 123 - 124 - size = PAGE_ALIGN(size); 125 - 126 - mem = vmalloc_32((unsigned long)size); 127 - if (!mem) 128 - return NULL; 129 - 130 - memset(mem, 0, size); 131 - 132 - adr = (unsigned long)mem; 133 - while (size > 0) { 134 - SetPageReserved(vmalloc_to_page((void *)adr)); 135 - adr += PAGE_SIZE; 136 - size -= PAGE_SIZE; 137 - } 138 - 139 - return mem; 140 - } 141 - 142 - static void rvfree(void *mem, size_t size) 143 - { 144 - unsigned long adr; 145 - 146 - if (!mem) 147 - return; 148 - 149 - size = PAGE_ALIGN(size); 150 - 151 - adr = (unsigned long)mem; 152 - while (size > 0) { 153 - ClearPageReserved(vmalloc_to_page((void *)adr)); 154 - adr += PAGE_SIZE; 155 - size -= PAGE_SIZE; 156 - } 157 - 158 - vfree(mem); 159 - } 160 161 /* 162 * em28xx_request_buffers() ··· 132 133 dev->num_frames = count; 134 while (dev->num_frames > 0) { 135 - if ((buff = rvmalloc(dev->num_frames * imagesize))) 136 break; 137 dev->num_frames--; 138 } 139 ··· 178 void em28xx_release_buffers(struct em28xx *dev) 179 { 180 if (dev->num_frames) { 181 - rvfree(dev->frame[0].bufmem, 182 - dev->num_frames * PAGE_ALIGN(dev->frame[0].buf.length)); 183 dev->num_frames = 0; 184 } 185 }
··· 39 #define em28xx_coredbg(fmt, arg...) do {\ 40 if (core_debug) \ 41 printk(KERN_INFO "%s %s :"fmt, \ 42 + dev->name, __FUNCTION__, ##arg); } while (0) 43 44 static unsigned int reg_debug; 45 module_param(reg_debug,int,0644); ··· 48 #define em28xx_regdbg(fmt, arg...) do {\ 49 if (reg_debug) \ 50 printk(KERN_INFO "%s %s :"fmt, \ 51 + dev->name, __FUNCTION__, ##arg); } while (0) 52 53 static unsigned int isoc_debug; 54 module_param(isoc_debug,int,0644); ··· 57 #define em28xx_isocdbg(fmt, arg...) do {\ 58 if (isoc_debug) \ 59 printk(KERN_INFO "%s %s :"fmt, \ 60 + dev->name, __FUNCTION__, ##arg); } while (0) 61 62 static int alt = EM28XX_PINOUT; 63 module_param(alt, int, 0644); ··· 116 } 117 } 118 119 120 /* 121 * em28xx_request_buffers() ··· 173 174 dev->num_frames = count; 175 while (dev->num_frames > 0) { 176 + if ((buff = vmalloc_32(dev->num_frames * imagesize))) { 177 + memset(buff, 0, dev->num_frames * imagesize); 178 break; 179 + } 180 dev->num_frames--; 181 } 182 ··· 217 void em28xx_release_buffers(struct em28xx *dev) 218 { 219 if (dev->num_frames) { 220 + vfree(dev->frame[0].bufmem); 221 dev->num_frames = 0; 222 } 223 }
+2 -2
drivers/media/video/em28xx/em28xx-i2c.c
··· 41 MODULE_PARM_DESC(i2c_debug, "enable debug messages [i2c]"); 42 43 #define dprintk1(lvl,fmt, args...) if (i2c_debug>=lvl) do {\ 44 - printk(fmt , ##args); } while (0) 45 #define dprintk2(lvl,fmt, args...) if (i2c_debug>=lvl) do{ \ 46 printk(KERN_DEBUG "%s at %s: " fmt, \ 47 - dev->name, __FUNCTION__ , ##args); } while (0) 48 49 /* 50 * em2800_i2c_send_max4()
··· 41 MODULE_PARM_DESC(i2c_debug, "enable debug messages [i2c]"); 42 43 #define dprintk1(lvl,fmt, args...) if (i2c_debug>=lvl) do {\ 44 + printk(fmt, ##args); } while (0) 45 #define dprintk2(lvl,fmt, args...) if (i2c_debug>=lvl) do{ \ 46 printk(KERN_DEBUG "%s at %s: " fmt, \ 47 + dev->name, __FUNCTION__, ##args); } while (0) 48 49 /* 50 * em2800_i2c_send_max4()
+6 -17
drivers/media/video/em28xx/em28xx-video.c
··· 45 #define em28xx_videodbg(fmt, arg...) do {\ 46 if (video_debug) \ 47 printk(KERN_INFO "%s %s :"fmt, \ 48 - dev->name, __FUNCTION__ , ##arg); } while (0) 49 50 MODULE_AUTHOR(DRIVER_AUTHOR); 51 MODULE_DESCRIPTION(DRIVER_DESC); ··· 188 static DECLARE_RWSEM(em28xx_disconnect); 189 190 /********************* v4l2 interface ******************************************/ 191 - 192 - static inline unsigned long kvirt_to_pa(unsigned long adr) 193 - { 194 - unsigned long kva, ret; 195 - 196 - kva = (unsigned long)page_address(vmalloc_to_page((void *)adr)); 197 - kva |= adr & (PAGE_SIZE - 1); 198 - ret = __pa(kva); 199 - return ret; 200 - } 201 202 /* 203 * em28xx_config() ··· 606 static int em28xx_v4l2_mmap(struct file *filp, struct vm_area_struct *vma) 607 { 608 unsigned long size = vma->vm_end - vma->vm_start, 609 - start = vma->vm_start, pos, page; 610 u32 i; 611 612 struct em28xx *dev = filp->private_data; ··· 648 vma->vm_flags |= VM_IO; 649 vma->vm_flags |= VM_RESERVED; /* avoid to swap out this VMA */ 650 651 - pos = (unsigned long)dev->frame[i].bufmem; 652 while (size > 0) { /* size is page-aligned */ 653 - page = vmalloc_to_pfn((void *)pos); 654 - if (remap_pfn_range(vma, start, page, PAGE_SIZE, 655 - vma->vm_page_prot)) { 656 - em28xx_videodbg("mmap: rename page map failed\n"); 657 up(&dev->fileop_lock); 658 return -EAGAIN; 659 }
··· 45 #define em28xx_videodbg(fmt, arg...) do {\ 46 if (video_debug) \ 47 printk(KERN_INFO "%s %s :"fmt, \ 48 + dev->name, __FUNCTION__, ##arg); } while (0) 49 50 MODULE_AUTHOR(DRIVER_AUTHOR); 51 MODULE_DESCRIPTION(DRIVER_DESC); ··· 188 static DECLARE_RWSEM(em28xx_disconnect); 189 190 /********************* v4l2 interface ******************************************/ 191 192 /* 193 * em28xx_config() ··· 616 static int em28xx_v4l2_mmap(struct file *filp, struct vm_area_struct *vma) 617 { 618 unsigned long size = vma->vm_end - vma->vm_start, 619 + start = vma->vm_start; 620 + void *pos; 621 u32 i; 622 623 struct em28xx *dev = filp->private_data; ··· 657 vma->vm_flags |= VM_IO; 658 vma->vm_flags |= VM_RESERVED; /* avoid to swap out this VMA */ 659 660 + pos = dev->frame[i].bufmem; 661 while (size > 0) { /* size is page-aligned */ 662 + if (vm_insert_page(vma, start, vmalloc_to_page(pos))) { 663 + em28xx_videodbg("mmap: vm_insert_page failed\n"); 664 up(&dev->fileop_lock); 665 return -EAGAIN; 666 }
+4 -4
drivers/media/video/em28xx/em28xx.h
··· 392 /* printk macros */ 393 394 #define em28xx_err(fmt, arg...) do {\ 395 - printk(KERN_ERR fmt , ##arg); } while (0) 396 397 #define em28xx_errdev(fmt, arg...) do {\ 398 printk(KERN_ERR "%s: "fmt,\ 399 - dev->name , ##arg); } while (0) 400 401 #define em28xx_info(fmt, arg...) do {\ 402 printk(KERN_INFO "%s: "fmt,\ 403 - dev->name , ##arg); } while (0) 404 #define em28xx_warn(fmt, arg...) do {\ 405 printk(KERN_WARNING "%s: "fmt,\ 406 - dev->name , ##arg); } while (0) 407 408 inline static int em28xx_audio_source(struct em28xx *dev, int input) 409 {
··· 392 /* printk macros */ 393 394 #define em28xx_err(fmt, arg...) do {\ 395 + printk(KERN_ERR fmt, ##arg); } while (0) 396 397 #define em28xx_errdev(fmt, arg...) do {\ 398 printk(KERN_ERR "%s: "fmt,\ 399 + dev->name, ##arg); } while (0) 400 401 #define em28xx_info(fmt, arg...) do {\ 402 printk(KERN_INFO "%s: "fmt,\ 403 + dev->name, ##arg); } while (0) 404 #define em28xx_warn(fmt, arg...) do {\ 405 printk(KERN_WARNING "%s: "fmt,\ 406 + dev->name, ##arg); } while (0) 407 408 inline static int em28xx_audio_source(struct em28xx *dev, int input) 409 {
+4 -4
drivers/media/video/ir-kbd-gpio.c
··· 291 u32 mask_keycode; 292 u32 mask_keydown; 293 u32 mask_keyup; 294 - u32 polling; 295 u32 last_gpio; 296 struct work_struct work; 297 struct timer_list timer; 298 299 /* RC5 gpio */ 300 - 301 u32 rc5_gpio; 302 struct timer_list timer_end; /* timer_end for code completion */ 303 struct timer_list timer_keyup; /* timer_end for key release */ ··· 646 driver.any_irq = ir_rc5_irq; 647 driver.gpio_irq = NULL; 648 ir->rc5_gpio = 1; 649 - break; 650 } 651 if (NULL == ir_codes) { 652 kfree(ir); ··· 656 657 if (ir->rc5_gpio) { 658 u32 gpio; 659 - /* enable remote irq */ 660 bttv_gpio_inout(sub->core, (1 << 4), 1 << 4); 661 gpio = bttv_gpio_read(sub->core); 662 bttv_gpio_write(sub->core, gpio & ~(1 << 4)); ··· 725 del_timer(&ir->timer); 726 flush_scheduled_work(); 727 } 728 if (ir->rc5_gpio) { 729 u32 gpio; 730
··· 291 u32 mask_keycode; 292 u32 mask_keydown; 293 u32 mask_keyup; 294 + u32 polling; 295 u32 last_gpio; 296 struct work_struct work; 297 struct timer_list timer; 298 299 /* RC5 gpio */ 300 u32 rc5_gpio; 301 struct timer_list timer_end; /* timer_end for code completion */ 302 struct timer_list timer_keyup; /* timer_end for key release */ ··· 647 driver.any_irq = ir_rc5_irq; 648 driver.gpio_irq = NULL; 649 ir->rc5_gpio = 1; 650 + break; 651 } 652 if (NULL == ir_codes) { 653 kfree(ir); ··· 657 658 if (ir->rc5_gpio) { 659 u32 gpio; 660 + /* enable remote irq */ 661 bttv_gpio_inout(sub->core, (1 << 4), 1 << 4); 662 gpio = bttv_gpio_read(sub->core); 663 bttv_gpio_write(sub->core, gpio & ~(1 << 4)); ··· 726 del_timer(&ir->timer); 727 flush_scheduled_work(); 728 } 729 + 730 if (ir->rc5_gpio) { 731 u32 gpio; 732
+6 -5
drivers/media/video/ir-kbd-i2c.c
··· 40 #include <linux/i2c.h> 41 #include <linux/workqueue.h> 42 #include <asm/semaphore.h> 43 #include <media/ir-common.h> 44 #include <media/ir-kbd-i2c.h> 45 ··· 279 280 static struct i2c_driver driver = { 281 .name = "ir remote kbd driver", 282 - .id = I2C_DRIVERID_I2C_IR, 283 .flags = I2C_DF_NOTIFY, 284 .attach_adapter = ir_probe, 285 .detach_client = ir_detach, ··· 297 IR_KEYTAB_TYPE *ir_codes = NULL; 298 char *name; 299 int ir_type; 300 - struct IR_i2c *ir; 301 struct input_dev *input_dev; 302 303 - ir = kzalloc(sizeof(struct IR_i2c), GFP_KERNEL); 304 input_dev = input_allocate_device(); 305 if (!ir || !input_dev) { 306 kfree(ir); 307 input_free_device(input_dev); 308 - return -ENOMEM; 309 } 310 311 ir->c = client_template; ··· 361 /* register i2c device 362 * At device register, IR codes may be changed to be 363 * board dependent. 364 - */ 365 i2c_attach_client(&ir->c); 366 367 /* If IR not supported or disabled, unregisters driver */
··· 40 #include <linux/i2c.h> 41 #include <linux/workqueue.h> 42 #include <asm/semaphore.h> 43 + 44 #include <media/ir-common.h> 45 #include <media/ir-kbd-i2c.h> 46 ··· 278 279 static struct i2c_driver driver = { 280 .name = "ir remote kbd driver", 281 + .id = I2C_DRIVERID_INFRARED, 282 .flags = I2C_DF_NOTIFY, 283 .attach_adapter = ir_probe, 284 .detach_client = ir_detach, ··· 296 IR_KEYTAB_TYPE *ir_codes = NULL; 297 char *name; 298 int ir_type; 299 + struct IR_i2c *ir; 300 struct input_dev *input_dev; 301 302 + ir = kzalloc(sizeof(struct IR_i2c),GFP_KERNEL); 303 input_dev = input_allocate_device(); 304 if (!ir || !input_dev) { 305 kfree(ir); 306 input_free_device(input_dev); 307 + return -ENOMEM; 308 } 309 310 ir->c = client_template; ··· 360 /* register i2c device 361 * At device register, IR codes may be changed to be 362 * board dependent. 363 + */ 364 i2c_attach_client(&ir->c); 365 366 /* If IR not supported or disabled, unregisters driver */
+11 -7
drivers/media/video/msp3400.c
··· 134 int rxsubchans; 135 136 int muted; 137 - int left, right; /* volume */ 138 int bass, treble; 139 140 /* shadow register set */ ··· 882 msp->watch_stereo = 0; 883 } 884 885 static int msp3400c_thread(void *data) 886 { 887 struct i2c_client *client = data; 888 struct msp3400c *msp = i2c_get_clientdata(client); 889 struct CARRIER_DETECT *cd; 890 int count, max1,max2,val1,val2, val,this; 891 892 msp3400_info("msp3400 daemon started\n"); 893 for (;;) { ··· 1164 int mode,val,i,std; 1165 1166 msp3400_info("msp3410 daemon started\n"); 1167 for (;;) { 1168 msp3400_dbg_mediumvol("msp3410 thread: sleep\n"); 1169 msp34xx_sleep(msp,-1); ··· 1387 int val, std, i; 1388 1389 msp3400_info("msp34xxg daemon started\n"); 1390 msp->source = 1; /* default */ 1391 for (;;) { 1392 msp3400_dbg_mediumvol("msp34xxg thread: sleep\n"); ··· 1563 static struct i2c_driver driver = { 1564 .owner = THIS_MODULE, 1565 .name = "msp3400", 1566 - .id = I2C_DRIVERID_MSP3400, 1567 - .flags = I2C_DF_NOTIFY, 1568 - .attach_adapter = msp_probe, 1569 - .detach_client = msp_detach, 1570 - .command = msp_command, 1571 .driver = { 1572 .suspend = msp_suspend, 1573 .resume = msp_resume, ··· 1578 { 1579 .name = "(unset)", 1580 .flags = I2C_CLIENT_ALLOW_USE, 1581 - .driver = &driver, 1582 }; 1583 1584 static int msp_attach(struct i2c_adapter *adap, int addr, int kind)
··· 134 int rxsubchans; 135 136 int muted; 137 + int left, right; /* volume */ 138 int bass, treble; 139 140 /* shadow register set */ ··· 882 msp->watch_stereo = 0; 883 } 884 885 + 886 static int msp3400c_thread(void *data) 887 { 888 struct i2c_client *client = data; 889 struct msp3400c *msp = i2c_get_clientdata(client); 890 struct CARRIER_DETECT *cd; 891 int count, max1,max2,val1,val2, val,this; 892 + 893 894 msp3400_info("msp3400 daemon started\n"); 895 for (;;) { ··· 1162 int mode,val,i,std; 1163 1164 msp3400_info("msp3410 daemon started\n"); 1165 + 1166 for (;;) { 1167 msp3400_dbg_mediumvol("msp3410 thread: sleep\n"); 1168 msp34xx_sleep(msp,-1); ··· 1384 int val, std, i; 1385 1386 msp3400_info("msp34xxg daemon started\n"); 1387 + 1388 msp->source = 1; /* default */ 1389 for (;;) { 1390 msp3400_dbg_mediumvol("msp34xxg thread: sleep\n"); ··· 1559 static struct i2c_driver driver = { 1560 .owner = THIS_MODULE, 1561 .name = "msp3400", 1562 + .id = I2C_DRIVERID_MSP3400, 1563 + .flags = I2C_DF_NOTIFY, 1564 + .attach_adapter = msp_probe, 1565 + .detach_client = msp_detach, 1566 + .command = msp_command, 1567 .driver = { 1568 .suspend = msp_suspend, 1569 .resume = msp_resume, ··· 1574 { 1575 .name = "(unset)", 1576 .flags = I2C_CLIENT_ALLOW_USE, 1577 + .driver = &driver, 1578 }; 1579 1580 static int msp_attach(struct i2c_adapter *adap, int addr, int kind)
-1
drivers/media/video/saa6588.c
··· 422 s->timer.function = saa6588_timer; 423 s->timer.data = (unsigned long)s; 424 schedule_work(&s->work); 425 - 426 return 0; 427 } 428
··· 422 s->timer.function = saa6588_timer; 423 s->timer.data = (unsigned long)s; 424 schedule_work(&s->work); 425 return 0; 426 } 427
+1 -1
drivers/media/video/saa711x.c
··· 59 #define dprintk(num, format, args...) \ 60 do { \ 61 if (debug >= num) \ 62 - printk(format , ##args); \ 63 } while (0) 64 65 /* ----------------------------------------------------------------------- */
··· 59 #define dprintk(num, format, args...) \ 60 do { \ 61 if (debug >= num) \ 62 + printk(format, ##args); \ 63 } while (0) 64 65 /* ----------------------------------------------------------------------- */
+9 -8
drivers/media/video/saa7134/saa6752hs.c
··· 523 h->standard = 0; 524 525 i2c_set_clientdata(&h->client, h); 526 - i2c_attach_client(&h->client); 527 return 0; 528 } 529 ··· 598 599 static struct i2c_driver driver = { 600 .owner = THIS_MODULE, 601 - .name = "i2c saa6752hs MPEG encoder", 602 - .id = I2C_DRIVERID_SAA6752HS, 603 - .flags = I2C_DF_NOTIFY, 604 - .attach_adapter = saa6752hs_probe, 605 - .detach_client = saa6752hs_detach, 606 - .command = saa6752hs_command, 607 }; 608 609 static struct i2c_client client_template = 610 { 611 .name = "saa6752hs", 612 .flags = I2C_CLIENT_ALLOW_USE, 613 - .driver = &driver, 614 }; 615 616 static int __init saa6752hs_init_module(void)
··· 523 h->standard = 0; 524 525 i2c_set_clientdata(&h->client, h); 526 + i2c_attach_client(&h->client); 527 + 528 return 0; 529 } 530 ··· 597 598 static struct i2c_driver driver = { 599 .owner = THIS_MODULE, 600 + .name = "i2c saa6752hs MPEG encoder", 601 + .id = I2C_DRIVERID_SAA6752HS, 602 + .flags = I2C_DF_NOTIFY, 603 + .attach_adapter = saa6752hs_probe, 604 + .detach_client = saa6752hs_detach, 605 + .command = saa6752hs_command, 606 }; 607 608 static struct i2c_client client_template = 609 { 610 .name = "saa6752hs", 611 .flags = I2C_CLIENT_ALLOW_USE, 612 + .driver = &driver, 613 }; 614 615 static int __init saa6752hs_init_module(void)
+12 -4
drivers/media/video/saa7134/saa7134-alsa.c
··· 51 #define MIXER_ADDR_LINE2 2 52 #define MIXER_ADDR_LAST 2 53 54 static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-MAX */ 55 static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; /* ID for this card */ 56 static int enable[SNDRV_CARDS] = {1, [1 ... (SNDRV_CARDS - 1)] = 0}; ··· 60 MODULE_PARM_DESC(index, "Index value for SAA7134 capture interface(s)."); 61 62 #define dprintk(fmt, arg...) if (debug) \ 63 - printk(KERN_DEBUG "%s/alsa: " fmt, dev->name , ## arg) 64 65 /* 66 * Main chip structure 67 */ 68 typedef struct snd_card_saa7134 { 69 snd_card_t *card; 70 spinlock_t mixer_lock; ··· 212 213 static irqreturn_t saa7134_alsa_irq(int irq, void *dev_id, struct pt_regs *regs) 214 { 215 - struct saa7134_dmasound *dmasound = dev_id; 216 - struct saa7134_dev *dev = dmasound->priv_data; 217 218 unsigned long report, status; 219 int loop, handled = 0; ··· 989 struct saa7134_dev *dev = NULL; 990 struct list_head *list; 991 992 - printk(KERN_INFO "saa7134 ALSA driver for DMA sound loaded\n"); 993 994 list_for_each(list,&saa7134_devlist) { 995 dev = list_entry(list, struct saa7134_dev, devlist); ··· 1008 printk(KERN_INFO "saa7134 ALSA: no saa7134 cards found\n"); 1009 1010 return 0; 1011 } 1012 1013 /* ··· 1032 module_exit(saa7134_alsa_exit); 1033 MODULE_LICENSE("GPL"); 1034 MODULE_AUTHOR("Ricardo Cerqueira");
··· 51 #define MIXER_ADDR_LINE2 2 52 #define MIXER_ADDR_LAST 2 53 54 + 55 static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-MAX */ 56 static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; /* ID for this card */ 57 static int enable[SNDRV_CARDS] = {1, [1 ... (SNDRV_CARDS - 1)] = 0}; ··· 59 MODULE_PARM_DESC(index, "Index value for SAA7134 capture interface(s)."); 60 61 #define dprintk(fmt, arg...) if (debug) \ 62 + printk(KERN_DEBUG "%s/alsa: " fmt, dev->name, ## arg) 63 + 64 + 65 66 /* 67 * Main chip structure 68 */ 69 + 70 typedef struct snd_card_saa7134 { 71 snd_card_t *card; 72 spinlock_t mixer_lock; ··· 208 209 static irqreturn_t saa7134_alsa_irq(int irq, void *dev_id, struct pt_regs *regs) 210 { 211 + struct saa7134_dmasound *dmasound = dev_id; 212 + struct saa7134_dev *dev = dmasound->priv_data; 213 214 unsigned long report, status; 215 int loop, handled = 0; ··· 985 struct saa7134_dev *dev = NULL; 986 struct list_head *list; 987 988 + printk(KERN_INFO "saa7134 ALSA driver for DMA sound loaded\n"); 989 990 list_for_each(list,&saa7134_devlist) { 991 dev = list_entry(list, struct saa7134_dev, devlist); ··· 1004 printk(KERN_INFO "saa7134 ALSA: no saa7134 cards found\n"); 1005 1006 return 0; 1007 + 1008 } 1009 1010 /* ··· 1027 module_exit(saa7134_alsa_exit); 1028 MODULE_LICENSE("GPL"); 1029 MODULE_AUTHOR("Ricardo Cerqueira"); 1030 + 1031 + 1032 +
+1 -1
drivers/media/video/saa7134/saa7134-cards.c
··· 976 .radio_type = UNSET, 977 .tuner_addr = ADDR_UNSET, 978 .radio_addr = ADDR_UNSET, 979 - .tda9887_conf = TDA9887_PRESENT | TDA9887_INTERCARRIER, 980 .inputs = {{ 981 .name = name_tv, 982 .vmux = 3,
··· 976 .radio_type = UNSET, 977 .tuner_addr = ADDR_UNSET, 978 .radio_addr = ADDR_UNSET, 979 + .tda9887_conf = TDA9887_PRESENT | TDA9887_INTERCARRIER | TDA9887_PORT2_ACTIVE, 980 .inputs = {{ 981 .name = name_tv, 982 .vmux = 3,
+1
drivers/media/video/saa7134/saa7134-core.c
··· 71 static unsigned int tuner[] = {[0 ... (SAA7134_MAXBOARDS - 1)] = UNSET }; 72 static unsigned int card[] = {[0 ... (SAA7134_MAXBOARDS - 1)] = UNSET }; 73 74 module_param_array(video_nr, int, NULL, 0444); 75 module_param_array(vbi_nr, int, NULL, 0444); 76 module_param_array(radio_nr, int, NULL, 0444);
··· 71 static unsigned int tuner[] = {[0 ... (SAA7134_MAXBOARDS - 1)] = UNSET }; 72 static unsigned int card[] = {[0 ... (SAA7134_MAXBOARDS - 1)] = UNSET }; 73 74 + 75 module_param_array(video_nr, int, NULL, 0444); 76 module_param_array(vbi_nr, int, NULL, 0444); 77 module_param_array(radio_nr, int, NULL, 0444);
+1
drivers/media/video/saa7134/saa7134-empress.c
··· 36 MODULE_LICENSE("GPL"); 37 38 static unsigned int empress_nr[] = {[0 ... (SAA7134_MAXBOARDS - 1)] = UNSET }; 39 module_param_array(empress_nr, int, NULL, 0444); 40 MODULE_PARM_DESC(empress_nr,"ts device number"); 41
··· 36 MODULE_LICENSE("GPL"); 37 38 static unsigned int empress_nr[] = {[0 ... (SAA7134_MAXBOARDS - 1)] = UNSET }; 39 + 40 module_param_array(empress_nr, int, NULL, 0444); 41 MODULE_PARM_DESC(empress_nr,"ts device number"); 42
+1 -1
drivers/media/video/saa7134/saa7134-i2c.c
··· 333 struct tuner_setup tun_setup; 334 335 d1printk( "%s i2c attach [addr=0x%x,client=%s]\n", 336 - client->driver->name, client->addr, client->name); 337 338 /* Am I an i2c remote control? */ 339
··· 333 struct tuner_setup tun_setup; 334 335 d1printk( "%s i2c attach [addr=0x%x,client=%s]\n", 336 + client->driver->name, client->addr, client->name); 337 338 /* Am I an i2c remote control? */ 339
+44 -43
drivers/media/video/saa7134/saa7134-oss.c
··· 782 783 static irqreturn_t saa7134_oss_irq(int irq, void *dev_id, struct pt_regs *regs) 784 { 785 - struct saa7134_dmasound *dmasound = dev_id; 786 - struct saa7134_dev *dev = dmasound->priv_data; 787 - unsigned long report, status; 788 - int loop, handled = 0; 789 790 - for (loop = 0; loop < 10; loop++) { 791 - report = saa_readl(SAA7134_IRQ_REPORT); 792 - status = saa_readl(SAA7134_IRQ_STATUS); 793 794 - if (report & SAA7134_IRQ_REPORT_DONE_RA3) { 795 - handled = 1; 796 - saa_writel(SAA7134_IRQ_REPORT,report); 797 - saa7134_irq_oss_done(dev, status); 798 - } else { 799 - goto out; 800 - } 801 - } 802 803 - if (loop == 10) { 804 - dprintk("error! looping IRQ!"); 805 - } 806 out: 807 - return IRQ_RETVAL(handled); 808 } 809 810 int saa7134_oss_init1(struct saa7134_dev *dev) 811 { 812 813 - if ((request_irq(dev->pci->irq, saa7134_oss_irq, 814 - SA_SHIRQ | SA_INTERRUPT, dev->name, 815 (void*) &dev->dmasound)) < 0) 816 return -1; 817 ··· 905 906 err = dev->dmasound.minor_dsp = 907 register_sound_dsp(&saa7134_dsp_fops, 908 - dsp_nr[dev->nr]); 909 if (err < 0) { 910 goto fail; 911 } 912 printk(KERN_INFO "%s: registered device dsp%d\n", 913 - dev->name,dev->dmasound.minor_dsp >> 4); 914 915 err = dev->dmasound.minor_mixer = 916 register_sound_mixer(&saa7134_mixer_fops, 917 - mixer_nr[dev->nr]); 918 if (err < 0) 919 goto fail; 920 printk(KERN_INFO "%s: registered device mixer%d\n", 921 - dev->name,dev->dmasound.minor_mixer >> 4); 922 923 return 0; 924 925 fail: 926 - unregister_sound_dsp(dev->dmasound.minor_dsp); 927 return 0; 928 929 ··· 956 957 static int saa7134_oss_init(void) 958 { 959 - struct saa7134_dev *dev = NULL; 960 - struct list_head *list; 961 962 - printk(KERN_INFO "saa7134 OSS driver for DMA sound loaded\n"); 963 964 - list_for_each(list,&saa7134_devlist) { 965 - dev = list_entry(list, struct saa7134_dev, devlist); 966 if (dev->dmasound.priv_data == NULL) { 967 oss_device_init(dev); 968 } else { 969 - printk(KERN_ERR "saa7134 OSS: DMA sound is being handled by ALSA, ignoring %s\n",dev->name); 970 return -EBUSY; 971 } 972 - } 973 974 - if (dev == NULL) 975 - printk(KERN_INFO "saa7134 OSS: no saa7134 cards found\n"); 976 977 dmasound_init = oss_device_init; 978 dmasound_exit = oss_device_exit; 979 980 - return 0; 981 982 } 983 984 static void saa7134_oss_exit(void) 985 { 986 - struct saa7134_dev *dev = NULL; 987 - struct list_head *list; 988 989 - list_for_each(list,&saa7134_devlist) { 990 - dev = list_entry(list, struct saa7134_dev, devlist); 991 992 /* Device isn't registered by OSS, probably ALSA's */ 993 if (!dev->dmasound.minor_dsp) 994 continue; 995 996 oss_device_exit(dev); 997 - } 998 999 - printk(KERN_INFO "saa7134 OSS driver for DMA sound unloaded\n"); 1000 1001 - return; 1002 } 1003 1004 module_init(saa7134_oss_init);
··· 782 783 static irqreturn_t saa7134_oss_irq(int irq, void *dev_id, struct pt_regs *regs) 784 { 785 + struct saa7134_dmasound *dmasound = dev_id; 786 + struct saa7134_dev *dev = dmasound->priv_data; 787 + unsigned long report, status; 788 + int loop, handled = 0; 789 790 + for (loop = 0; loop < 10; loop++) { 791 + report = saa_readl(SAA7134_IRQ_REPORT); 792 + status = saa_readl(SAA7134_IRQ_STATUS); 793 794 + if (report & SAA7134_IRQ_REPORT_DONE_RA3) { 795 + handled = 1; 796 + saa_writel(SAA7134_IRQ_REPORT,report); 797 + saa7134_irq_oss_done(dev, status); 798 + } else { 799 + goto out; 800 + } 801 + } 802 803 + if (loop == 10) { 804 + dprintk("error! looping IRQ!"); 805 + } 806 out: 807 + return IRQ_RETVAL(handled); 808 } 809 810 int saa7134_oss_init1(struct saa7134_dev *dev) 811 { 812 813 + if ((request_irq(dev->pci->irq, saa7134_oss_irq, 814 + SA_SHIRQ | SA_INTERRUPT, dev->name, 815 (void*) &dev->dmasound)) < 0) 816 return -1; 817 ··· 905 906 err = dev->dmasound.minor_dsp = 907 register_sound_dsp(&saa7134_dsp_fops, 908 + dsp_nr[dev->nr]); 909 if (err < 0) { 910 goto fail; 911 } 912 printk(KERN_INFO "%s: registered device dsp%d\n", 913 + dev->name,dev->dmasound.minor_dsp >> 4); 914 915 err = dev->dmasound.minor_mixer = 916 register_sound_mixer(&saa7134_mixer_fops, 917 + mixer_nr[dev->nr]); 918 if (err < 0) 919 goto fail; 920 printk(KERN_INFO "%s: registered device mixer%d\n", 921 + dev->name,dev->dmasound.minor_mixer >> 4); 922 923 return 0; 924 925 fail: 926 + unregister_sound_dsp(dev->dmasound.minor_dsp); 927 return 0; 928 929 ··· 956 957 static int saa7134_oss_init(void) 958 { 959 + struct saa7134_dev *dev = NULL; 960 + struct list_head *list; 961 962 + printk(KERN_INFO "saa7134 OSS driver for DMA sound loaded\n"); 963 964 + list_for_each(list,&saa7134_devlist) { 965 + dev = list_entry(list, struct saa7134_dev, devlist); 966 if (dev->dmasound.priv_data == NULL) { 967 oss_device_init(dev); 968 } else { 969 + printk(KERN_ERR "saa7134 OSS: DMA sound is being handled by ALSA, ignoring %s\n",dev->name); 970 return -EBUSY; 971 } 972 + } 973 974 + if (dev == NULL) 975 + printk(KERN_INFO "saa7134 OSS: no saa7134 cards found\n"); 976 977 dmasound_init = oss_device_init; 978 dmasound_exit = oss_device_exit; 979 980 + return 0; 981 982 } 983 984 static void saa7134_oss_exit(void) 985 { 986 + struct saa7134_dev *dev = NULL; 987 + struct list_head *list; 988 989 + list_for_each(list,&saa7134_devlist) { 990 + dev = list_entry(list, struct saa7134_dev, devlist); 991 992 /* Device isn't registered by OSS, probably ALSA's */ 993 if (!dev->dmasound.minor_dsp) 994 continue; 995 996 oss_device_exit(dev); 997 998 + } 999 1000 + printk(KERN_INFO "saa7134 OSS driver for DMA sound unloaded\n"); 1001 + 1002 + return; 1003 } 1004 1005 module_init(saa7134_oss_init);
+8 -7
drivers/media/video/tda9887.c
··· 12 #include <media/audiochip.h> 13 #include <media/tuner.h> 14 15 /* Chips: 16 TDA9885 (PAL, NTSC) 17 TDA9886 (PAL, SECAM, NTSC) ··· 820 821 static struct i2c_driver driver = { 822 .owner = THIS_MODULE, 823 - .name = "i2c tda9887 driver", 824 - .id = -1, /* FIXME */ 825 - .flags = I2C_DF_NOTIFY, 826 - .attach_adapter = tda9887_probe, 827 - .detach_client = tda9887_detach, 828 - .command = tda9887_command, 829 .driver = { 830 .suspend = tda9887_suspend, 831 .resume = tda9887_resume, ··· 835 { 836 .name = "tda9887", 837 .flags = I2C_CLIENT_ALLOW_USE, 838 - .driver = &driver, 839 }; 840 841 static int __init tda9887_init_module(void)
··· 12 #include <media/audiochip.h> 13 #include <media/tuner.h> 14 15 + 16 /* Chips: 17 TDA9885 (PAL, NTSC) 18 TDA9886 (PAL, SECAM, NTSC) ··· 819 820 static struct i2c_driver driver = { 821 .owner = THIS_MODULE, 822 + .name = "i2c tda9887 driver", 823 + .id = -1, /* FIXME */ 824 + .flags = I2C_DF_NOTIFY, 825 + .attach_adapter = tda9887_probe, 826 + .detach_client = tda9887_detach, 827 + .command = tda9887_command, 828 .driver = { 829 .suspend = tda9887_suspend, 830 .resume = tda9887_resume, ··· 834 { 835 .name = "tda9887", 836 .flags = I2C_CLIENT_ALLOW_USE, 837 + .driver = &driver, 838 }; 839 840 static int __init tda9887_init_module(void)
+15 -15
drivers/media/video/tvaudio.c
··· 188 buffer[1] = val; 189 if (2 != i2c_master_send(&chip->c,buffer,2)) { 190 tvaudio_warn("%s: I/O error (write reg%d=0x%x)\n", 191 - chip->c.name, subaddr, val); 192 return -1; 193 } 194 } ··· 216 chip->c.name); 217 return -1; 218 } 219 - tvaudio_dbg("%s: chip_read: 0x%x\n",chip->c.name,buffer); 220 return buffer; 221 } 222 ··· 235 return -1; 236 } 237 tvaudio_dbg("%s: chip_read2: reg%d=0x%x\n", 238 - chip->c.name,subaddr,read[0]); 239 return read[0]; 240 } 241 ··· 248 249 /* update our shadow register set; print bytes if (debug > 0) */ 250 tvaudio_dbg("%s: chip_cmd(%s): reg=%d, data:", 251 - chip->c.name,name,cmd->bytes[0]); 252 for (i = 1; i < cmd->count; i++) { 253 if (debug) 254 printk(" 0x%x",cmd->bytes[i]); ··· 322 int mode = desc->getmode(chip); 323 324 if (mode == chip->prevmode) 325 - return; 326 327 tvaudio_dbg("%s: thread checkmode\n", chip->c.name); 328 chip->prevmode = mode; ··· 1506 return -EIO; 1507 } 1508 tvaudio_info("%s found @ 0x%x (%s)\n", desc->name, addr<<1, adap->name); 1509 - if (desc->flags) { 1510 - tvaudio_dbg("matches:%s%s%s.\n", 1511 - (desc->flags & CHIP_HAS_VOLUME) ? " volume" : "", 1512 - (desc->flags & CHIP_HAS_BASSTREBLE) ? " bass/treble" : "", 1513 - (desc->flags & CHIP_HAS_INPUTSEL) ? " audiomux" : ""); 1514 - } 1515 1516 /* fill required data structures */ 1517 - strcpy(chip->c.name,desc->name); 1518 chip->type = desc-chiplist; 1519 chip->shadow.count = desc->registers+1; 1520 - chip->prevmode = -1; 1521 /* register */ 1522 i2c_attach_client(&chip->c); 1523 ··· 1604 struct CHIPSTATE *chip = i2c_get_clientdata(client); 1605 struct CHIPDESC *desc = chiplist + chip->type; 1606 1607 - tvaudio_dbg("%s: chip_command 0x%x\n",chip->c.name,cmd); 1608 1609 switch (cmd) { 1610 case AUDC_SET_INPUT: ··· 1624 1625 /* --- v4l ioctls --- */ 1626 /* take care: bttv does userspace copying, we'll get a 1627 - kernel pointer here... */ 1628 case VIDIOCGAUDIO: 1629 { 1630 struct video_audio *va = arg;
··· 188 buffer[1] = val; 189 if (2 != i2c_master_send(&chip->c,buffer,2)) { 190 tvaudio_warn("%s: I/O error (write reg%d=0x%x)\n", 191 + chip->c.name, subaddr, val); 192 return -1; 193 } 194 } ··· 216 chip->c.name); 217 return -1; 218 } 219 + tvaudio_dbg("%s: chip_read: 0x%x\n",chip->c.name, buffer); 220 return buffer; 221 } 222 ··· 235 return -1; 236 } 237 tvaudio_dbg("%s: chip_read2: reg%d=0x%x\n", 238 + chip->c.name, subaddr,read[0]); 239 return read[0]; 240 } 241 ··· 248 249 /* update our shadow register set; print bytes if (debug > 0) */ 250 tvaudio_dbg("%s: chip_cmd(%s): reg=%d, data:", 251 + chip->c.name, name,cmd->bytes[0]); 252 for (i = 1; i < cmd->count; i++) { 253 if (debug) 254 printk(" 0x%x",cmd->bytes[i]); ··· 322 int mode = desc->getmode(chip); 323 324 if (mode == chip->prevmode) 325 + return; 326 327 tvaudio_dbg("%s: thread checkmode\n", chip->c.name); 328 chip->prevmode = mode; ··· 1506 return -EIO; 1507 } 1508 tvaudio_info("%s found @ 0x%x (%s)\n", desc->name, addr<<1, adap->name); 1509 + if (desc->flags) { 1510 + tvaudio_dbg("matches:%s%s%s.\n", 1511 + (desc->flags & CHIP_HAS_VOLUME) ? " volume" : "", 1512 + (desc->flags & CHIP_HAS_BASSTREBLE) ? " bass/treble" : "", 1513 + (desc->flags & CHIP_HAS_INPUTSEL) ? " audiomux" : ""); 1514 + } 1515 1516 /* fill required data structures */ 1517 + strcpy(chip->c.name, desc->name); 1518 chip->type = desc-chiplist; 1519 chip->shadow.count = desc->registers+1; 1520 + chip->prevmode = -1; 1521 /* register */ 1522 i2c_attach_client(&chip->c); 1523 ··· 1604 struct CHIPSTATE *chip = i2c_get_clientdata(client); 1605 struct CHIPDESC *desc = chiplist + chip->type; 1606 1607 + tvaudio_dbg("%s: chip_command 0x%x\n", chip->c.name, cmd); 1608 1609 switch (cmd) { 1610 case AUDC_SET_INPUT: ··· 1624 1625 /* --- v4l ioctls --- */ 1626 /* take care: bttv does userspace copying, we'll get a 1627 + kernel pointer here... */ 1628 case VIDIOCGAUDIO: 1629 { 1630 struct video_audio *va = arg;
+2 -1
drivers/media/video/tveeprom.c
··· 753 client->driver = &i2c_driver_tveeprom; 754 client->flags = I2C_CLIENT_ALLOW_USE; 755 snprintf(client->name, sizeof(client->name), "tveeprom"); 756 - i2c_attach_client(client); 757 return 0; 758 } 759
··· 753 client->driver = &i2c_driver_tveeprom; 754 client->flags = I2C_CLIENT_ALLOW_USE; 755 snprintf(client->name, sizeof(client->name), "tveeprom"); 756 + i2c_attach_client(client); 757 + 758 return 0; 759 } 760
+1 -2
drivers/media/video/tvp5150.c
··· 31 #define dprintk(num, format, args...) \ 32 do { \ 33 if (debug >= num) \ 34 - printk(format , ##args); \ 35 } while (0) 36 37 /* supported controls */ ··· 770 771 if (debug > 1) 772 dump_reg(client); 773 - 774 return 0; 775 } 776
··· 31 #define dprintk(num, format, args...) \ 32 do { \ 33 if (debug >= num) \ 34 + printk(format, ##args); \ 35 } while (0) 36 37 /* supported controls */ ··· 770 771 if (debug > 1) 772 dump_reg(client); 773 return 0; 774 } 775
+2
drivers/media/video/video-buf-dvb.c
··· 13 * (at your option) any later version. 14 */ 15 16 #include <linux/module.h> 17 #include <linux/init.h> 18 #include <linux/device.h> ··· 248 * compile-command: "make DVB=1" 249 * End: 250 */
··· 13 * (at your option) any later version. 14 */ 15 16 + 17 #include <linux/module.h> 18 #include <linux/init.h> 19 #include <linux/device.h> ··· 247 * compile-command: "make DVB=1" 248 * End: 249 */ 250 +
+11 -8
drivers/mfd/ucb1x00-ts.c
··· 59 60 static inline void ucb1x00_ts_evt_add(struct ucb1x00_ts *ts, u16 pressure, u16 x, u16 y) 61 { 62 - input_report_abs(ts->idev, ABS_X, x); 63 - input_report_abs(ts->idev, ABS_Y, y); 64 - input_report_abs(ts->idev, ABS_PRESSURE, pressure); 65 - input_sync(ts->idev); 66 } 67 68 static inline void ucb1x00_ts_event_release(struct ucb1x00_ts *ts) 69 { 70 - input_report_abs(ts->idev, ABS_PRESSURE, 0); 71 - input_sync(ts->idev); 72 } 73 74 /* ··· 299 300 static int ucb1x00_ts_open(struct input_dev *idev) 301 { 302 - struct ucb1x00_ts *ts = (struct ucb1x00_ts *)idev; 303 int ret = 0; 304 305 BUG_ON(ts->rtask); ··· 336 */ 337 static void ucb1x00_ts_close(struct input_dev *idev) 338 { 339 - struct ucb1x00_ts *ts = (struct ucb1x00_ts *)idev; 340 341 if (ts->rtask) 342 kthread_stop(ts->rtask); ··· 388 ts->ucb = dev->ucb; 389 ts->adcsync = adcsync ? UCB_SYNC : UCB_NOSYNC; 390 391 ts->idev->name = "Touchscreen panel"; 392 ts->idev->id.product = ts->ucb->id; 393 ts->idev->open = ucb1x00_ts_open;
··· 59 60 static inline void ucb1x00_ts_evt_add(struct ucb1x00_ts *ts, u16 pressure, u16 x, u16 y) 61 { 62 + struct input_dev *idev = ts->idev; 63 + input_report_abs(idev, ABS_X, x); 64 + input_report_abs(idev, ABS_Y, y); 65 + input_report_abs(idev, ABS_PRESSURE, pressure); 66 + input_sync(idev); 67 } 68 69 static inline void ucb1x00_ts_event_release(struct ucb1x00_ts *ts) 70 { 71 + struct input_dev *idev = ts->idev; 72 + input_report_abs(idev, ABS_PRESSURE, 0); 73 + input_sync(idev); 74 } 75 76 /* ··· 297 298 static int ucb1x00_ts_open(struct input_dev *idev) 299 { 300 + struct ucb1x00_ts *ts = idev->private; 301 int ret = 0; 302 303 BUG_ON(ts->rtask); ··· 334 */ 335 static void ucb1x00_ts_close(struct input_dev *idev) 336 { 337 + struct ucb1x00_ts *ts = idev->private; 338 339 if (ts->rtask) 340 kthread_stop(ts->rtask); ··· 386 ts->ucb = dev->ucb; 387 ts->adcsync = adcsync ? UCB_SYNC : UCB_NOSYNC; 388 389 + ts->idev->private = ts; 390 ts->idev->name = "Touchscreen panel"; 391 ts->idev->id.product = ts->ucb->id; 392 ts->idev->open = ucb1x00_ts_open;
+4 -4
drivers/mtd/devices/blkmtd.c
··· 113 ClearPageUptodate(page); 114 SetPageError(page); 115 } 116 - ClearPageDirty(page); 117 unlock_page(page); 118 page_cache_release(page); 119 } while (bvec >= bio->bi_io_vec); ··· 289 BUG(); 290 } 291 memcpy(page_address(page)+offset, buf, start_len); 292 - SetPageDirty(page); 293 SetPageUptodate(page); 294 buf += start_len; 295 thislen = start_len; ··· 336 } 337 pagenr++; 338 pagecnt--; 339 - SetPageDirty(page); 340 SetPageUptodate(page); 341 pagesc--; 342 thislen += PAGE_SIZE; ··· 357 BUG(); 358 } 359 memcpy(page_address(page), buf, end_len); 360 - SetPageDirty(page); 361 SetPageUptodate(page); 362 DEBUG(3, "blkmtd: write: writing out partial end\n"); 363 thislen += end_len;
··· 113 ClearPageUptodate(page); 114 SetPageError(page); 115 } 116 + clear_page_dirty(page); 117 unlock_page(page); 118 page_cache_release(page); 119 } while (bvec >= bio->bi_io_vec); ··· 289 BUG(); 290 } 291 memcpy(page_address(page)+offset, buf, start_len); 292 + set_page_dirty(page); 293 SetPageUptodate(page); 294 buf += start_len; 295 thislen = start_len; ··· 336 } 337 pagenr++; 338 pagecnt--; 339 + set_page_dirty(page); 340 SetPageUptodate(page); 341 pagesc--; 342 thislen += PAGE_SIZE; ··· 357 BUG(); 358 } 359 memcpy(page_address(page), buf, end_len); 360 + set_page_dirty(page); 361 SetPageUptodate(page); 362 DEBUG(3, "blkmtd: write: writing out partial end\n"); 363 thislen += end_len;
+9 -6
drivers/net/tg3.c
··· 68 69 #define DRV_MODULE_NAME "tg3" 70 #define PFX DRV_MODULE_NAME ": " 71 - #define DRV_MODULE_VERSION "3.43" 72 - #define DRV_MODULE_RELDATE "Oct 24, 2005" 73 74 #define TG3_DEF_MAC_MODE 0 75 #define TG3_DEF_RX_MODE 0 ··· 3565 if (!spin_trylock(&tp->tx_lock)) 3566 return NETDEV_TX_LOCKED; 3567 3568 - /* This is a hard error, log it. */ 3569 if (unlikely(TX_BUFFS_AVAIL(tp) <= (skb_shinfo(skb)->nr_frags + 1))) { 3570 - netif_stop_queue(dev); 3571 spin_unlock(&tp->tx_lock); 3572 - printk(KERN_ERR PFX "%s: BUG! Tx Ring full when queue awake!\n", 3573 - dev->name); 3574 return NETDEV_TX_BUSY; 3575 } 3576
··· 68 69 #define DRV_MODULE_NAME "tg3" 70 #define PFX DRV_MODULE_NAME ": " 71 + #define DRV_MODULE_VERSION "3.44" 72 + #define DRV_MODULE_RELDATE "Dec 6, 2005" 73 74 #define TG3_DEF_MAC_MODE 0 75 #define TG3_DEF_RX_MODE 0 ··· 3565 if (!spin_trylock(&tp->tx_lock)) 3566 return NETDEV_TX_LOCKED; 3567 3568 if (unlikely(TX_BUFFS_AVAIL(tp) <= (skb_shinfo(skb)->nr_frags + 1))) { 3569 + if (!netif_queue_stopped(dev)) { 3570 + netif_stop_queue(dev); 3571 + 3572 + /* This is a hard error, log it. */ 3573 + printk(KERN_ERR PFX "%s: BUG! Tx Ring full when " 3574 + "queue awake!\n", dev->name); 3575 + } 3576 spin_unlock(&tp->tx_lock); 3577 return NETDEV_TX_BUSY; 3578 } 3579
+8 -1
drivers/scsi/scsi_lib.c
··· 542 543 void scsi_next_command(struct scsi_cmnd *cmd) 544 { 545 - struct request_queue *q = cmd->device->request_queue; 546 547 scsi_put_command(cmd); 548 scsi_run_queue(q); 549 } 550 551 void scsi_run_host_queues(struct Scsi_Host *shost)
··· 542 543 void scsi_next_command(struct scsi_cmnd *cmd) 544 { 545 + struct scsi_device *sdev = cmd->device; 546 + struct request_queue *q = sdev->request_queue; 547 + 548 + /* need to hold a reference on the device before we let go of the cmd */ 549 + get_device(&sdev->sdev_gendev); 550 551 scsi_put_command(cmd); 552 scsi_run_queue(q); 553 + 554 + /* ok to remove device now */ 555 + put_device(&sdev->sdev_gendev); 556 } 557 558 void scsi_run_host_queues(struct Scsi_Host *shost)
+10 -3
fs/inotify.c
··· 364 /* 365 * find_inode - resolve a user-given path to a specific inode and return a nd 366 */ 367 - static int find_inode(const char __user *dirname, struct nameidata *nd) 368 { 369 int error; 370 371 - error = __user_walk(dirname, LOOKUP_FOLLOW, nd); 372 if (error) 373 return error; 374 /* you can only watch an inode if you have read permissions on it */ ··· 934 struct file *filp; 935 int ret, fput_needed; 936 int mask_add = 0; 937 938 filp = fget_light(fd, &fput_needed); 939 if (unlikely(!filp)) ··· 946 goto fput_and_out; 947 } 948 949 - ret = find_inode(path, &nd); 950 if (unlikely(ret)) 951 goto fput_and_out; 952
··· 364 /* 365 * find_inode - resolve a user-given path to a specific inode and return a nd 366 */ 367 + static int find_inode(const char __user *dirname, struct nameidata *nd, 368 + unsigned flags) 369 { 370 int error; 371 372 + error = __user_walk(dirname, flags, nd); 373 if (error) 374 return error; 375 /* you can only watch an inode if you have read permissions on it */ ··· 933 struct file *filp; 934 int ret, fput_needed; 935 int mask_add = 0; 936 + unsigned flags = 0; 937 938 filp = fget_light(fd, &fput_needed); 939 if (unlikely(!filp)) ··· 944 goto fput_and_out; 945 } 946 947 + if (!(mask & IN_DONT_FOLLOW)) 948 + flags |= LOOKUP_FOLLOW; 949 + if (mask & IN_ONLYDIR) 950 + flags |= LOOKUP_DIRECTORY; 951 + 952 + ret = find_inode(path, &nd, flags); 953 if (unlikely(ret)) 954 goto fput_and_out; 955
+1 -1
fs/xattr.c
··· 245 error = d->d_inode->i_op->listxattr(d, klist, size); 246 } else { 247 error = security_inode_listsecurity(d->d_inode, klist, size); 248 - if (size && error >= size) 249 error = -ERANGE; 250 } 251 if (error > 0) {
··· 245 error = d->d_inode->i_op->listxattr(d, klist, size); 246 } else { 247 error = security_inode_listsecurity(d->d_inode, klist, size); 248 + if (size && error > size) 249 error = -ERANGE; 250 } 251 if (error > 0) {
+2 -1
include/asm-powerpc/mmu.h
··· 220 unsigned int local); 221 struct mm_struct; 222 extern int hash_huge_page(struct mm_struct *mm, unsigned long access, 223 - unsigned long ea, unsigned long vsid, int local); 224 225 extern void htab_finish_init(void); 226 extern int htab_bolt_mapping(unsigned long vstart, unsigned long vend,
··· 220 unsigned int local); 221 struct mm_struct; 222 extern int hash_huge_page(struct mm_struct *mm, unsigned long access, 223 + unsigned long ea, unsigned long vsid, int local, 224 + unsigned long trap); 225 226 extern void htab_finish_init(void); 227 extern int htab_bolt_mapping(unsigned long vstart, unsigned long vend,
+2
include/linux/cn_proc.h
··· 26 #define CN_PROC_H 27 28 #include <linux/types.h> 29 #include <linux/connector.h> 30 31 /* ··· 66 PROC_EVENT_EXIT = 0x80000000 67 } what; 68 __u32 cpu; 69 union { /* must be last field of proc_event struct */ 70 struct { 71 __u32 err;
··· 26 #define CN_PROC_H 27 28 #include <linux/types.h> 29 + #include <linux/time.h> 30 #include <linux/connector.h> 31 32 /* ··· 65 PROC_EVENT_EXIT = 0x80000000 66 } what; 67 __u32 cpu; 68 + struct timespec timestamp; 69 union { /* must be last field of proc_event struct */ 70 struct { 71 __u32 err;
+14 -14
include/linux/dvb/audio.h
··· 32 33 34 typedef enum { 35 - AUDIO_SOURCE_DEMUX, /* Select the demux as the main source */ 36 AUDIO_SOURCE_MEMORY /* Select internal memory as the main source */ 37 } audio_stream_source_t; 38 39 40 typedef enum { 41 AUDIO_STOPPED, /* Device is stopped */ 42 - AUDIO_PLAYING, /* Device is currently playing */ 43 AUDIO_PAUSED /* Device is paused */ 44 } audio_play_state_t; 45 46 47 typedef enum { 48 - AUDIO_STEREO, 49 - AUDIO_MONO_LEFT, 50 AUDIO_MONO_RIGHT 51 } audio_channel_select_t; 52 53 54 typedef struct audio_mixer { 55 - unsigned int volume_left; 56 - unsigned int volume_right; 57 // what else do we need? bass, pass-through, ... 58 } audio_mixer_t; 59 60 61 typedef struct audio_status { 62 - int AV_sync_state; /* sync audio and video? */ 63 - int mute_state; /* audio is muted */ 64 - audio_play_state_t play_state; /* current playback state */ 65 - audio_stream_source_t stream_source; /* current stream source */ 66 - audio_channel_select_t channel_select; /* currently selected channel */ 67 - int bypass_mode; /* pass on audio data to */ 68 audio_mixer_t mixer_state; /* current mixer state */ 69 } audio_status_t; /* separate decoder hardware */ 70 ··· 74 int vocal1; /* into left and right t at 70% each */ 75 int vocal2; /* if both, Vocal1 and Vocal2 are non-zero, Vocal1 gets*/ 76 int melody; /* mixed into the left channel and */ 77 - /* Vocal2 into the right channel at 100% each. */ 78 - /* if Melody is non-zero, the melody channel gets mixed*/ 79 } audio_karaoke_t; /* into left and right */ 80 81
··· 32 33 34 typedef enum { 35 + AUDIO_SOURCE_DEMUX, /* Select the demux as the main source */ 36 AUDIO_SOURCE_MEMORY /* Select internal memory as the main source */ 37 } audio_stream_source_t; 38 39 40 typedef enum { 41 AUDIO_STOPPED, /* Device is stopped */ 42 + AUDIO_PLAYING, /* Device is currently playing */ 43 AUDIO_PAUSED /* Device is paused */ 44 } audio_play_state_t; 45 46 47 typedef enum { 48 + AUDIO_STEREO, 49 + AUDIO_MONO_LEFT, 50 AUDIO_MONO_RIGHT 51 } audio_channel_select_t; 52 53 54 typedef struct audio_mixer { 55 + unsigned int volume_left; 56 + unsigned int volume_right; 57 // what else do we need? bass, pass-through, ... 58 } audio_mixer_t; 59 60 61 typedef struct audio_status { 62 + int AV_sync_state; /* sync audio and video? */ 63 + int mute_state; /* audio is muted */ 64 + audio_play_state_t play_state; /* current playback state */ 65 + audio_stream_source_t stream_source; /* current stream source */ 66 + audio_channel_select_t channel_select; /* currently selected channel */ 67 + int bypass_mode; /* pass on audio data to */ 68 audio_mixer_t mixer_state; /* current mixer state */ 69 } audio_status_t; /* separate decoder hardware */ 70 ··· 74 int vocal1; /* into left and right t at 70% each */ 75 int vocal2; /* if both, Vocal1 and Vocal2 are non-zero, Vocal1 gets*/ 76 int melody; /* mixed into the left channel and */ 77 + /* Vocal2 into the right channel at 100% each. */ 78 + /* if Melody is non-zero, the melody channel gets mixed*/ 79 } audio_karaoke_t; /* into left and right */ 80 81
+18 -18
include/linux/dvb/ca.h
··· 27 /* slot interface types and info */ 28 29 typedef struct ca_slot_info { 30 - int num; /* slot number */ 31 32 - int type; /* CA interface this slot supports */ 33 #define CA_CI 1 /* CI high level interface */ 34 #define CA_CI_LINK 2 /* CI link layer level interface */ 35 #define CA_CI_PHYS 4 /* CI physical layer level interface */ 36 #define CA_DESCR 8 /* built-in descrambler */ 37 #define CA_SC 128 /* simple smart card interface */ 38 39 - unsigned int flags; 40 #define CA_CI_MODULE_PRESENT 1 /* module (or card) inserted */ 41 #define CA_CI_MODULE_READY 2 42 } ca_slot_info_t; ··· 45 /* descrambler types and info */ 46 47 typedef struct ca_descr_info { 48 - unsigned int num; /* number of available descramblers (keys) */ 49 - unsigned int type; /* type of supported scrambling system */ 50 #define CA_ECD 1 51 #define CA_NDS 2 52 #define CA_DSS 4 53 } ca_descr_info_t; 54 55 typedef struct ca_caps { 56 - unsigned int slot_num; /* total number of CA card and module slots */ 57 - unsigned int slot_type; /* OR of all supported types */ 58 - unsigned int descr_num; /* total number of descrambler slots (keys) */ 59 - unsigned int descr_type; /* OR of all supported types */ 60 } ca_caps_t; 61 62 /* a message to/from a CI-CAM */ 63 typedef struct ca_msg { 64 - unsigned int index; 65 - unsigned int type; 66 - unsigned int length; 67 - unsigned char msg[256]; 68 } ca_msg_t; 69 70 typedef struct ca_descr { 71 - unsigned int index; 72 - unsigned int parity; /* 0 == even, 1 == odd */ 73 - unsigned char cw[8]; 74 } ca_descr_t; 75 76 typedef struct ca_pid { 77 - unsigned int pid; 78 - int index; /* -1 == disable*/ 79 } ca_pid_t; 80 81 #define CA_RESET _IO('o', 128)
··· 27 /* slot interface types and info */ 28 29 typedef struct ca_slot_info { 30 + int num; /* slot number */ 31 32 + int type; /* CA interface this slot supports */ 33 #define CA_CI 1 /* CI high level interface */ 34 #define CA_CI_LINK 2 /* CI link layer level interface */ 35 #define CA_CI_PHYS 4 /* CI physical layer level interface */ 36 #define CA_DESCR 8 /* built-in descrambler */ 37 #define CA_SC 128 /* simple smart card interface */ 38 39 + unsigned int flags; 40 #define CA_CI_MODULE_PRESENT 1 /* module (or card) inserted */ 41 #define CA_CI_MODULE_READY 2 42 } ca_slot_info_t; ··· 45 /* descrambler types and info */ 46 47 typedef struct ca_descr_info { 48 + unsigned int num; /* number of available descramblers (keys) */ 49 + unsigned int type; /* type of supported scrambling system */ 50 #define CA_ECD 1 51 #define CA_NDS 2 52 #define CA_DSS 4 53 } ca_descr_info_t; 54 55 typedef struct ca_caps { 56 + unsigned int slot_num; /* total number of CA card and module slots */ 57 + unsigned int slot_type; /* OR of all supported types */ 58 + unsigned int descr_num; /* total number of descrambler slots (keys) */ 59 + unsigned int descr_type; /* OR of all supported types */ 60 } ca_caps_t; 61 62 /* a message to/from a CI-CAM */ 63 typedef struct ca_msg { 64 + unsigned int index; 65 + unsigned int type; 66 + unsigned int length; 67 + unsigned char msg[256]; 68 } ca_msg_t; 69 70 typedef struct ca_descr { 71 + unsigned int index; 72 + unsigned int parity; /* 0 == even, 1 == odd */ 73 + unsigned char cw[8]; 74 } ca_descr_t; 75 76 typedef struct ca_pid { 77 + unsigned int pid; 78 + int index; /* -1 == disable*/ 79 } ca_pid_t; 80 81 #define CA_RESET _IO('o', 128)
+10 -10
include/linux/dvb/dmx.h
··· 1 - /* 2 * dmx.h 3 * 4 * Copyright (C) 2000 Marcus Metzler <marcus@convergence.de> ··· 38 { 39 DMX_OUT_DECODER, /* Streaming directly to decoder. */ 40 DMX_OUT_TAP, /* Output going to a memory buffer */ 41 - /* (to be retrieved via the read command).*/ 42 DMX_OUT_TS_TAP /* Output multiplexed into a new TS */ 43 - /* (to be retrieved by reading from the */ 44 - /* logical DVR device). */ 45 } dmx_output_t; 46 47 ··· 54 55 typedef enum 56 { 57 - DMX_PES_AUDIO0, 58 DMX_PES_VIDEO0, 59 DMX_PES_TELETEXT0, 60 DMX_PES_SUBTITLE0, 61 DMX_PES_PCR0, 62 63 - DMX_PES_AUDIO1, 64 DMX_PES_VIDEO1, 65 DMX_PES_TELETEXT1, 66 DMX_PES_SUBTITLE1, 67 DMX_PES_PCR1, 68 69 - DMX_PES_AUDIO2, 70 DMX_PES_VIDEO2, 71 DMX_PES_TELETEXT2, 72 DMX_PES_SUBTITLE2, 73 DMX_PES_PCR2, 74 75 - DMX_PES_AUDIO3, 76 DMX_PES_VIDEO3, 77 DMX_PES_TELETEXT3, 78 DMX_PES_SUBTITLE3, ··· 90 91 typedef enum 92 { 93 - DMX_SCRAMBLING_EV, 94 - DMX_FRONTEND_EV 95 } dmx_event_t; 96 97
··· 1 + /* 2 * dmx.h 3 * 4 * Copyright (C) 2000 Marcus Metzler <marcus@convergence.de> ··· 38 { 39 DMX_OUT_DECODER, /* Streaming directly to decoder. */ 40 DMX_OUT_TAP, /* Output going to a memory buffer */ 41 + /* (to be retrieved via the read command).*/ 42 DMX_OUT_TS_TAP /* Output multiplexed into a new TS */ 43 + /* (to be retrieved by reading from the */ 44 + /* logical DVR device). */ 45 } dmx_output_t; 46 47 ··· 54 55 typedef enum 56 { 57 + DMX_PES_AUDIO0, 58 DMX_PES_VIDEO0, 59 DMX_PES_TELETEXT0, 60 DMX_PES_SUBTITLE0, 61 DMX_PES_PCR0, 62 63 + DMX_PES_AUDIO1, 64 DMX_PES_VIDEO1, 65 DMX_PES_TELETEXT1, 66 DMX_PES_SUBTITLE1, 67 DMX_PES_PCR1, 68 69 + DMX_PES_AUDIO2, 70 DMX_PES_VIDEO2, 71 DMX_PES_TELETEXT2, 72 DMX_PES_SUBTITLE2, 73 DMX_PES_PCR2, 74 75 + DMX_PES_AUDIO3, 76 DMX_PES_VIDEO3, 77 DMX_PES_TELETEXT3, 78 DMX_PES_SUBTITLE3, ··· 90 91 typedef enum 92 { 93 + DMX_SCRAMBLING_EV, 94 + DMX_FRONTEND_EV 95 } dmx_event_t; 96 97
+29 -29
include/linux/dvb/osd.h
··· 98 } OSD_Command; 99 100 typedef struct osd_cmd_s { 101 - OSD_Command cmd; 102 - int x0; 103 - int y0; 104 - int x1; 105 - int y1; 106 - int color; 107 - void __user *data; 108 } osd_cmd_t; 109 110 /* OSD_OpenRaw: set 'color' to desired window type */ 111 typedef enum { 112 - OSD_BITMAP1, /* 1 bit bitmap */ 113 - OSD_BITMAP2, /* 2 bit bitmap */ 114 - OSD_BITMAP4, /* 4 bit bitmap */ 115 - OSD_BITMAP8, /* 8 bit bitmap */ 116 - OSD_BITMAP1HR, /* 1 Bit bitmap half resolution */ 117 - OSD_BITMAP2HR, /* 2 bit bitmap half resolution */ 118 - OSD_BITMAP4HR, /* 4 bit bitmap half resolution */ 119 - OSD_BITMAP8HR, /* 8 bit bitmap half resolution */ 120 - OSD_YCRCB422, /* 4:2:2 YCRCB Graphic Display */ 121 - OSD_YCRCB444, /* 4:4:4 YCRCB Graphic Display */ 122 - OSD_YCRCB444HR, /* 4:4:4 YCRCB graphic half resolution */ 123 - OSD_VIDEOTSIZE, /* True Size Normal MPEG Video Display */ 124 - OSD_VIDEOHSIZE, /* MPEG Video Display Half Resolution */ 125 - OSD_VIDEOQSIZE, /* MPEG Video Display Quarter Resolution */ 126 - OSD_VIDEODSIZE, /* MPEG Video Display Double Resolution */ 127 - OSD_VIDEOTHSIZE, /* True Size MPEG Video Display Half Resolution */ 128 - OSD_VIDEOTQSIZE, /* True Size MPEG Video Display Quarter Resolution*/ 129 - OSD_VIDEOTDSIZE, /* True Size MPEG Video Display Double Resolution */ 130 - OSD_VIDEONSIZE, /* Full Size MPEG Video Display */ 131 - OSD_CURSOR /* Cursor */ 132 } osd_raw_window_t; 133 134 typedef struct osd_cap_s { 135 - int cmd; 136 #define OSD_CAP_MEMSIZE 1 /* memory size */ 137 - long val; 138 } osd_cap_t; 139 140
··· 98 } OSD_Command; 99 100 typedef struct osd_cmd_s { 101 + OSD_Command cmd; 102 + int x0; 103 + int y0; 104 + int x1; 105 + int y1; 106 + int color; 107 + void __user *data; 108 } osd_cmd_t; 109 110 /* OSD_OpenRaw: set 'color' to desired window type */ 111 typedef enum { 112 + OSD_BITMAP1, /* 1 bit bitmap */ 113 + OSD_BITMAP2, /* 2 bit bitmap */ 114 + OSD_BITMAP4, /* 4 bit bitmap */ 115 + OSD_BITMAP8, /* 8 bit bitmap */ 116 + OSD_BITMAP1HR, /* 1 Bit bitmap half resolution */ 117 + OSD_BITMAP2HR, /* 2 bit bitmap half resolution */ 118 + OSD_BITMAP4HR, /* 4 bit bitmap half resolution */ 119 + OSD_BITMAP8HR, /* 8 bit bitmap half resolution */ 120 + OSD_YCRCB422, /* 4:2:2 YCRCB Graphic Display */ 121 + OSD_YCRCB444, /* 4:4:4 YCRCB Graphic Display */ 122 + OSD_YCRCB444HR, /* 4:4:4 YCRCB graphic half resolution */ 123 + OSD_VIDEOTSIZE, /* True Size Normal MPEG Video Display */ 124 + OSD_VIDEOHSIZE, /* MPEG Video Display Half Resolution */ 125 + OSD_VIDEOQSIZE, /* MPEG Video Display Quarter Resolution */ 126 + OSD_VIDEODSIZE, /* MPEG Video Display Double Resolution */ 127 + OSD_VIDEOTHSIZE, /* True Size MPEG Video Display Half Resolution */ 128 + OSD_VIDEOTQSIZE, /* True Size MPEG Video Display Quarter Resolution*/ 129 + OSD_VIDEOTDSIZE, /* True Size MPEG Video Display Double Resolution */ 130 + OSD_VIDEONSIZE, /* Full Size MPEG Video Display */ 131 + OSD_CURSOR /* Cursor */ 132 } osd_raw_window_t; 133 134 typedef struct osd_cap_s { 135 + int cmd; 136 #define OSD_CAP_MEMSIZE 1 /* memory size */ 137 + long val; 138 } osd_cap_t; 139 140
+22 -22
include/linux/dvb/video.h
··· 36 37 typedef enum { 38 VIDEO_FORMAT_4_3, /* Select 4:3 format */ 39 - VIDEO_FORMAT_16_9, /* Select 16:9 format. */ 40 VIDEO_FORMAT_221_1 /* 2.21:1 */ 41 } video_format_t; 42 ··· 54 55 56 typedef enum { 57 - VIDEO_PAN_SCAN, /* use pan and scan format */ 58 VIDEO_LETTER_BOX, /* use letterbox format */ 59 VIDEO_CENTER_CUT_OUT /* use center cut out format */ 60 } video_displayformat_t; ··· 66 } video_size_t; 67 68 typedef enum { 69 - VIDEO_SOURCE_DEMUX, /* Select the demux as the main source */ 70 VIDEO_SOURCE_MEMORY /* If this source is selected, the stream 71 comes from the user through the write 72 system call */ ··· 75 76 typedef enum { 77 VIDEO_STOPPED, /* Video is stopped */ 78 - VIDEO_PLAYING, /* Video is currently playing */ 79 VIDEO_FREEZED /* Video is freezed */ 80 } video_play_state_t; 81 82 83 struct video_event { 84 - int32_t type; 85 #define VIDEO_EVENT_SIZE_CHANGED 1 86 #define VIDEO_EVENT_FRAME_RATE_CHANGED 2 87 - time_t timestamp; 88 union { 89 - video_size_t size; 90 unsigned int frame_rate; /* in frames per 1000sec */ 91 } u; 92 }; 93 94 95 struct video_status { 96 - int video_blank; /* blank video on freeze? */ 97 - video_play_state_t play_state; /* current state of playback */ 98 - video_stream_source_t stream_source; /* current source (demux/memory) */ 99 - video_format_t video_format; /* current aspect ratio of stream*/ 100 - video_displayformat_t display_format;/* selected cropping mode */ 101 }; 102 103 104 struct video_still_picture { 105 - char __user *iFrame; /* pointer to a single iframe in memory */ 106 - int32_t size; 107 }; 108 109 ··· 111 struct video_highlight { 112 int active; /* 1=show highlight, 0=hide highlight */ 113 uint8_t contrast1; /* 7- 4 Pattern pixel contrast */ 114 - /* 3- 0 Background pixel contrast */ 115 uint8_t contrast2; /* 7- 4 Emphasis pixel-2 contrast */ 116 - /* 3- 0 Emphasis pixel-1 contrast */ 117 uint8_t color1; /* 7- 4 Pattern pixel color */ 118 - /* 3- 0 Background pixel color */ 119 uint8_t color2; /* 7- 4 Emphasis pixel-2 color */ 120 - /* 3- 0 Emphasis pixel-1 color */ 121 uint32_t ypos; /* 23-22 auto action mode */ 122 - /* 21-12 start y */ 123 - /* 9- 0 end y */ 124 uint32_t xpos; /* 23-22 button color number */ 125 - /* 21-12 start x */ 126 - /* 9- 0 end x */ 127 } video_highlight_t; 128 129
··· 36 37 typedef enum { 38 VIDEO_FORMAT_4_3, /* Select 4:3 format */ 39 + VIDEO_FORMAT_16_9, /* Select 16:9 format. */ 40 VIDEO_FORMAT_221_1 /* 2.21:1 */ 41 } video_format_t; 42 ··· 54 55 56 typedef enum { 57 + VIDEO_PAN_SCAN, /* use pan and scan format */ 58 VIDEO_LETTER_BOX, /* use letterbox format */ 59 VIDEO_CENTER_CUT_OUT /* use center cut out format */ 60 } video_displayformat_t; ··· 66 } video_size_t; 67 68 typedef enum { 69 + VIDEO_SOURCE_DEMUX, /* Select the demux as the main source */ 70 VIDEO_SOURCE_MEMORY /* If this source is selected, the stream 71 comes from the user through the write 72 system call */ ··· 75 76 typedef enum { 77 VIDEO_STOPPED, /* Video is stopped */ 78 + VIDEO_PLAYING, /* Video is currently playing */ 79 VIDEO_FREEZED /* Video is freezed */ 80 } video_play_state_t; 81 82 83 struct video_event { 84 + int32_t type; 85 #define VIDEO_EVENT_SIZE_CHANGED 1 86 #define VIDEO_EVENT_FRAME_RATE_CHANGED 2 87 + time_t timestamp; 88 union { 89 + video_size_t size; 90 unsigned int frame_rate; /* in frames per 1000sec */ 91 } u; 92 }; 93 94 95 struct video_status { 96 + int video_blank; /* blank video on freeze? */ 97 + video_play_state_t play_state; /* current state of playback */ 98 + video_stream_source_t stream_source; /* current source (demux/memory) */ 99 + video_format_t video_format; /* current aspect ratio of stream*/ 100 + video_displayformat_t display_format;/* selected cropping mode */ 101 }; 102 103 104 struct video_still_picture { 105 + char __user *iFrame; /* pointer to a single iframe in memory */ 106 + int32_t size; 107 }; 108 109 ··· 111 struct video_highlight { 112 int active; /* 1=show highlight, 0=hide highlight */ 113 uint8_t contrast1; /* 7- 4 Pattern pixel contrast */ 114 + /* 3- 0 Background pixel contrast */ 115 uint8_t contrast2; /* 7- 4 Emphasis pixel-2 contrast */ 116 + /* 3- 0 Emphasis pixel-1 contrast */ 117 uint8_t color1; /* 7- 4 Pattern pixel color */ 118 + /* 3- 0 Background pixel color */ 119 uint8_t color2; /* 7- 4 Emphasis pixel-2 color */ 120 + /* 3- 0 Emphasis pixel-1 color */ 121 uint32_t ypos; /* 23-22 auto action mode */ 122 + /* 21-12 start y */ 123 + /* 9- 0 end y */ 124 uint32_t xpos; /* 23-22 button color number */ 125 + /* 21-12 start x */ 126 + /* 9- 0 end x */ 127 } video_highlight_t; 128 129
+1 -1
include/linux/i2c-id.h
··· 108 #define I2C_DRIVERID_SAA7127 72 /* saa7124 video encoder */ 109 #define I2C_DRIVERID_SAA711X 73 /* saa711x video encoders */ 110 #define I2C_DRIVERID_AKITAIOEXP 74 /* IO Expander on Sharp SL-C1000 */ 111 - #define I2C_DRIVERID_I2C_IR 75 /* I2C InfraRed on Video boards */ 112 113 #define I2C_DRIVERID_EXP0 0xF0 /* experimental use id's */ 114 #define I2C_DRIVERID_EXP1 0xF1
··· 108 #define I2C_DRIVERID_SAA7127 72 /* saa7124 video encoder */ 109 #define I2C_DRIVERID_SAA711X 73 /* saa711x video encoders */ 110 #define I2C_DRIVERID_AKITAIOEXP 74 /* IO Expander on Sharp SL-C1000 */ 111 + #define I2C_DRIVERID_INFRARED 75 /* I2C InfraRed on Video boards */ 112 113 #define I2C_DRIVERID_EXP0 0xF0 /* experimental use id's */ 114 #define I2C_DRIVERID_EXP1 0xF1
+2
include/linux/inotify.h
··· 47 #define IN_MOVE (IN_MOVED_FROM | IN_MOVED_TO) /* moves */ 48 49 /* special flags */ 50 #define IN_MASK_ADD 0x20000000 /* add to the mask of an already existing watch */ 51 #define IN_ISDIR 0x40000000 /* event occurred against dir */ 52 #define IN_ONESHOT 0x80000000 /* only send event once */
··· 47 #define IN_MOVE (IN_MOVED_FROM | IN_MOVED_TO) /* moves */ 48 49 /* special flags */ 50 + #define IN_ONLYDIR 0x01000000 /* only watch the path if it is a directory */ 51 + #define IN_DONT_FOLLOW 0x02000000 /* don't follow a sym link */ 52 #define IN_MASK_ADD 0x20000000 /* add to the mask of an already existing watch */ 53 #define IN_ISDIR 0x40000000 /* event occurred against dir */ 54 #define IN_ONESHOT 0x80000000 /* only send event once */
+7 -1
include/linux/kprobes.h
··· 37 #include <linux/spinlock.h> 38 #include <linux/rcupdate.h> 39 40 #include <asm/kprobes.h> 41 42 /* kprobe_status settings */ ··· 148 struct task_struct *task; 149 }; 150 151 - #ifdef CONFIG_KPROBES 152 extern spinlock_t kretprobe_lock; 153 extern int arch_prepare_kprobe(struct kprobe *p); 154 extern void arch_copy_kprobe(struct kprobe *p); ··· 158 extern void show_registers(struct pt_regs *regs); 159 extern kprobe_opcode_t *get_insn_slot(void); 160 extern void free_insn_slot(kprobe_opcode_t *slot); 161 162 /* Get the kprobe at this addr (if any) - called with preemption disabled */ 163 struct kprobe *get_kprobe(void *addr); ··· 196 void kprobe_flush_task(struct task_struct *tk); 197 void recycle_rp_inst(struct kretprobe_instance *ri); 198 #else /* CONFIG_KPROBES */ 199 static inline struct kprobe *kprobe_running(void) 200 { 201 return NULL;
··· 37 #include <linux/spinlock.h> 38 #include <linux/rcupdate.h> 39 40 + #ifdef CONFIG_KPROBES 41 #include <asm/kprobes.h> 42 43 /* kprobe_status settings */ ··· 147 struct task_struct *task; 148 }; 149 150 extern spinlock_t kretprobe_lock; 151 extern int arch_prepare_kprobe(struct kprobe *p); 152 extern void arch_copy_kprobe(struct kprobe *p); ··· 158 extern void show_registers(struct pt_regs *regs); 159 extern kprobe_opcode_t *get_insn_slot(void); 160 extern void free_insn_slot(kprobe_opcode_t *slot); 161 + extern void kprobes_inc_nmissed_count(struct kprobe *p); 162 163 /* Get the kprobe at this addr (if any) - called with preemption disabled */ 164 struct kprobe *get_kprobe(void *addr); ··· 195 void kprobe_flush_task(struct task_struct *tk); 196 void recycle_rp_inst(struct kretprobe_instance *ri); 197 #else /* CONFIG_KPROBES */ 198 + 199 + #define __kprobes /**/ 200 + struct jprobe; 201 + struct kretprobe; 202 + 203 static inline struct kprobe *kprobe_running(void) 204 { 205 return NULL;
+25 -1
include/linux/list.h
··· 202 * 203 * The old entry will be replaced with the new entry atomically. 204 */ 205 - static inline void list_replace_rcu(struct list_head *old, struct list_head *new){ 206 new->next = old->next; 207 new->prev = old->prev; 208 smp_wmb(); 209 new->next->prev = new; 210 new->prev->next = new; 211 } 212 213 /** ··· 579 __hlist_del(n); 580 INIT_HLIST_NODE(n); 581 } 582 } 583 584 static inline void hlist_add_head(struct hlist_node *n, struct hlist_head *h)
··· 202 * 203 * The old entry will be replaced with the new entry atomically. 204 */ 205 + static inline void list_replace_rcu(struct list_head *old, 206 + struct list_head *new) 207 + { 208 new->next = old->next; 209 new->prev = old->prev; 210 smp_wmb(); 211 new->next->prev = new; 212 new->prev->next = new; 213 + old->prev = LIST_POISON2; 214 } 215 216 /** ··· 576 __hlist_del(n); 577 INIT_HLIST_NODE(n); 578 } 579 + } 580 + 581 + /* 582 + * hlist_replace_rcu - replace old entry by new one 583 + * @old : the element to be replaced 584 + * @new : the new element to insert 585 + * 586 + * The old entry will be replaced with the new entry atomically. 587 + */ 588 + static inline void hlist_replace_rcu(struct hlist_node *old, 589 + struct hlist_node *new) 590 + { 591 + struct hlist_node *next = old->next; 592 + 593 + new->next = next; 594 + new->pprev = old->pprev; 595 + smp_wmb(); 596 + if (next) 597 + new->next->pprev = &new->next; 598 + *new->pprev = new; 599 + old->pprev = LIST_POISON2; 600 } 601 602 static inline void hlist_add_head(struct hlist_node *n, struct hlist_head *h)
-1
include/linux/mm.h
··· 163 #define VM_HUGETLB 0x00400000 /* Huge TLB Page VM */ 164 #define VM_NONLINEAR 0x00800000 /* Is non-linear (remap_file_pages) */ 165 #define VM_MAPPED_COPY 0x01000000 /* T if mapped copy of data (nommu mmap) */ 166 - #define VM_INCOMPLETE 0x02000000 /* Strange partial PFN mapping marker */ 167 168 #ifndef VM_STACK_DEFAULT_FLAGS /* arch can override this */ 169 #define VM_STACK_DEFAULT_FLAGS VM_DATA_DEFAULT_FLAGS
··· 163 #define VM_HUGETLB 0x00400000 /* Huge TLB Page VM */ 164 #define VM_NONLINEAR 0x00800000 /* Is non-linear (remap_file_pages) */ 165 #define VM_MAPPED_COPY 0x01000000 /* T if mapped copy of data (nommu mmap) */ 166 167 #ifndef VM_STACK_DEFAULT_FLAGS /* arch can override this */ 168 #define VM_STACK_DEFAULT_FLAGS VM_DATA_DEFAULT_FLAGS
+1 -1
include/linux/parport_pc.h
··· 86 unsigned char dcr = inb (CONTROL (p)); 87 unsigned char dsr = inb (STATUS (p)); 88 static char *ecr_modes[] = {"SPP", "PS2", "PPFIFO", "ECP", "xXx", "yYy", "TST", "CFG"}; 89 - const struct parport_pc_private *priv = (parport_pc_private *)p->physport->private_data; 90 int i; 91 92 printk (KERN_DEBUG "*** parport state (%s): ecr=[%s", str, ecr_modes[(ecr & 0xe0) >> 5]);
··· 86 unsigned char dcr = inb (CONTROL (p)); 87 unsigned char dsr = inb (STATUS (p)); 88 static char *ecr_modes[] = {"SPP", "PS2", "PPFIFO", "ECP", "xXx", "yYy", "TST", "CFG"}; 89 + const struct parport_pc_private *priv = p->physport->private_data; 90 int i; 91 92 printk (KERN_DEBUG "*** parport state (%s): ecr=[%s", str, ecr_modes[(ecr & 0xe0) >> 5]);
+2
include/linux/rcupdate.h
··· 100 struct rcu_head *donelist; 101 struct rcu_head **donetail; 102 int cpu; 103 }; 104 105 DECLARE_PER_CPU(struct rcu_data, rcu_data); ··· 286 extern __deprecated_for_modules void synchronize_kernel(void); 287 extern void synchronize_rcu(void); 288 void synchronize_idle(void); 289 290 #endif /* __KERNEL__ */ 291 #endif /* __LINUX_RCUPDATE_H */
··· 100 struct rcu_head *donelist; 101 struct rcu_head **donetail; 102 int cpu; 103 + struct rcu_head barrier; 104 }; 105 106 DECLARE_PER_CPU(struct rcu_data, rcu_data); ··· 285 extern __deprecated_for_modules void synchronize_kernel(void); 286 extern void synchronize_rcu(void); 287 void synchronize_idle(void); 288 + extern void rcu_barrier(void); 289 290 #endif /* __KERNEL__ */ 291 #endif /* __LINUX_RCUPDATE_H */
+3
include/linux/sysctl.h
··· 670 NET_DECNET_DST_GC_INTERVAL = 9, 671 NET_DECNET_CONF = 10, 672 NET_DECNET_NO_FC_MAX_CWND = 11, 673 NET_DECNET_DEBUG_LEVEL = 255 674 }; 675
··· 670 NET_DECNET_DST_GC_INTERVAL = 9, 671 NET_DECNET_CONF = 10, 672 NET_DECNET_NO_FC_MAX_CWND = 11, 673 + NET_DECNET_MEM = 12, 674 + NET_DECNET_RMEM = 13, 675 + NET_DECNET_WMEM = 14, 676 NET_DECNET_DEBUG_LEVEL = 255 677 }; 678
+1
include/linux/time.h
··· 95 extern int do_setitimer(int which, struct itimerval *value, struct itimerval *ovalue); 96 extern int do_getitimer(int which, struct itimerval *value); 97 extern void getnstimeofday (struct timespec *tv); 98 99 extern struct timespec timespec_trunc(struct timespec t, unsigned gran); 100
··· 95 extern int do_setitimer(int which, struct itimerval *value, struct itimerval *ovalue); 96 extern int do_getitimer(int which, struct itimerval *value); 97 extern void getnstimeofday (struct timespec *tv); 98 + extern void getnstimestamp(struct timespec *ts); 99 100 extern struct timespec timespec_trunc(struct timespec t, unsigned gran); 101
+3 -3
include/media/saa7146.h
··· 14 #include <linux/vmalloc.h> /* for vmalloc() */ 15 #include <linux/mm.h> /* for vmalloc_to_page() */ 16 17 - #define SAA7146_VERSION_CODE 0x000500 /* 0.5.0 */ 18 19 #define saa7146_write(sxy,adr,dat) writel((dat),(sxy->mem+(adr))) 20 #define saa7146_read(sxy,adr) readl(sxy->mem+(adr)) ··· 112 113 /* different device locks */ 114 spinlock_t slock; 115 - struct semaphore lock; 116 117 unsigned char __iomem *mem; /* pointer to mapped IO memory */ 118 int revision; /* chip revision; needed for bug-workarounds*/ ··· 133 void (*vv_callback)(struct saa7146_dev *dev, unsigned long status); 134 135 /* i2c-stuff */ 136 - struct semaphore i2c_lock; 137 u32 i2c_bitrate; 138 struct saa7146_dma d_i2c; /* pointer to i2c memory */ 139 wait_queue_head_t i2c_wq;
··· 14 #include <linux/vmalloc.h> /* for vmalloc() */ 15 #include <linux/mm.h> /* for vmalloc_to_page() */ 16 17 + #define SAA7146_VERSION_CODE 0x000500 /* 0.5.0 */ 18 19 #define saa7146_write(sxy,adr,dat) writel((dat),(sxy->mem+(adr))) 20 #define saa7146_read(sxy,adr) readl(sxy->mem+(adr)) ··· 112 113 /* different device locks */ 114 spinlock_t slock; 115 + struct semaphore lock; 116 117 unsigned char __iomem *mem; /* pointer to mapped IO memory */ 118 int revision; /* chip revision; needed for bug-workarounds*/ ··· 133 void (*vv_callback)(struct saa7146_dev *dev, unsigned long status); 134 135 /* i2c-stuff */ 136 + struct semaphore i2c_lock; 137 u32 i2c_bitrate; 138 struct saa7146_dma d_i2c; /* pointer to i2c memory */ 139 wait_queue_head_t i2c_wq;
+5 -5
include/media/saa7146_vv.h
··· 113 /* vbi capture */ 114 struct saa7146_dmaqueue vbi_q; 115 /* vbi workaround interrupt queue */ 116 - wait_queue_head_t vbi_wq; 117 int vbi_fieldcount; 118 struct saa7146_fh *vbi_streaming; 119 ··· 181 }; 182 183 struct saa7146_use_ops { 184 - void (*init)(struct saa7146_dev *, struct saa7146_vv *); 185 - int(*open)(struct saa7146_dev *, struct file *); 186 - void (*release)(struct saa7146_dev *, struct file *); 187 - void (*irq_done)(struct saa7146_dev *, unsigned long status); 188 ssize_t (*read)(struct file *, char __user *, size_t, loff_t *); 189 }; 190
··· 113 /* vbi capture */ 114 struct saa7146_dmaqueue vbi_q; 115 /* vbi workaround interrupt queue */ 116 + wait_queue_head_t vbi_wq; 117 int vbi_fieldcount; 118 struct saa7146_fh *vbi_streaming; 119 ··· 181 }; 182 183 struct saa7146_use_ops { 184 + void (*init)(struct saa7146_dev *, struct saa7146_vv *); 185 + int(*open)(struct saa7146_dev *, struct file *); 186 + void (*release)(struct saa7146_dev *, struct file *); 187 + void (*irq_done)(struct saa7146_dev *, unsigned long status); 188 ssize_t (*read)(struct file *, char __user *, size_t, loff_t *); 189 }; 190
+4
include/net/dn.h
··· 234 extern int decnet_dr_count; 235 extern int decnet_no_fc_max_cwnd; 236 237 #endif /* _NET_DN_H */
··· 234 extern int decnet_dr_count; 235 extern int decnet_no_fc_max_cwnd; 236 237 + extern int sysctl_decnet_mem[3]; 238 + extern int sysctl_decnet_wmem[3]; 239 + extern int sysctl_decnet_rmem[3]; 240 + 241 #endif /* _NET_DN_H */
+3 -1
kernel/audit.c
··· 291 set_current_state(TASK_INTERRUPTIBLE); 292 add_wait_queue(&kauditd_wait, &wait); 293 294 - if (!skb_queue_len(&audit_skb_queue)) 295 schedule(); 296 297 __set_current_state(TASK_RUNNING); 298 remove_wait_queue(&kauditd_wait, &wait);
··· 291 set_current_state(TASK_INTERRUPTIBLE); 292 add_wait_queue(&kauditd_wait, &wait); 293 294 + if (!skb_queue_len(&audit_skb_queue)) { 295 + try_to_freeze(); 296 schedule(); 297 + } 298 299 __set_current_state(TASK_RUNNING); 300 remove_wait_queue(&kauditd_wait, &wait);
+30 -6
kernel/kprobes.c
··· 246 return ret; 247 } 248 249 /* Called with kretprobe_lock held */ 250 struct kretprobe_instance __kprobes *get_free_rp_inst(struct kretprobe *rp) 251 { ··· 412 INIT_LIST_HEAD(&ap->list); 413 list_add_rcu(&p->list, &ap->list); 414 415 - INIT_HLIST_NODE(&ap->hlist); 416 - hlist_del_rcu(&p->hlist); 417 - hlist_add_head_rcu(&ap->hlist, 418 - &kprobe_table[hash_ptr(ap->addr, KPROBE_HASH_BITS)]); 419 } 420 421 /* ··· 472 int ret = 0; 473 unsigned long flags = 0; 474 struct kprobe *old_p; 475 476 - if ((ret = in_kprobes_functions((unsigned long) p->addr)) != 0) 477 - return ret; 478 if ((ret = arch_prepare_kprobe(p)) != 0) 479 goto rm_kprobe; 480 ··· 505 rm_kprobe: 506 if (ret == -EEXIST) 507 arch_remove_kprobe(p); 508 return ret; 509 } 510 ··· 514 { 515 unsigned long flags; 516 struct kprobe *old_p; 517 518 spin_lock_irqsave(&kprobe_lock, flags); 519 old_p = get_kprobe(p->addr); ··· 526 cleanup_kprobe(p, flags); 527 528 synchronize_sched(); 529 if (old_p->pre_handler == aggr_pre_handler && 530 list_empty(&old_p->list)) 531 kfree(old_p);
··· 246 return ret; 247 } 248 249 + /* Walks the list and increments nmissed count for multiprobe case */ 250 + void __kprobes kprobes_inc_nmissed_count(struct kprobe *p) 251 + { 252 + struct kprobe *kp; 253 + if (p->pre_handler != aggr_pre_handler) { 254 + p->nmissed++; 255 + } else { 256 + list_for_each_entry_rcu(kp, &p->list, list) 257 + kp->nmissed++; 258 + } 259 + return; 260 + } 261 + 262 /* Called with kretprobe_lock held */ 263 struct kretprobe_instance __kprobes *get_free_rp_inst(struct kretprobe *rp) 264 { ··· 399 INIT_LIST_HEAD(&ap->list); 400 list_add_rcu(&p->list, &ap->list); 401 402 + hlist_replace_rcu(&p->hlist, &ap->hlist); 403 } 404 405 /* ··· 462 int ret = 0; 463 unsigned long flags = 0; 464 struct kprobe *old_p; 465 + struct module *mod; 466 467 + if ((!kernel_text_address((unsigned long) p->addr)) || 468 + in_kprobes_functions((unsigned long) p->addr)) 469 + return -EINVAL; 470 + 471 + if ((mod = module_text_address((unsigned long) p->addr)) && 472 + (unlikely(!try_module_get(mod)))) 473 + return -EINVAL; 474 + 475 if ((ret = arch_prepare_kprobe(p)) != 0) 476 goto rm_kprobe; 477 ··· 488 rm_kprobe: 489 if (ret == -EEXIST) 490 arch_remove_kprobe(p); 491 + if (ret && mod) 492 + module_put(mod); 493 return ret; 494 } 495 ··· 495 { 496 unsigned long flags; 497 struct kprobe *old_p; 498 + struct module *mod; 499 500 spin_lock_irqsave(&kprobe_lock, flags); 501 old_p = get_kprobe(p->addr); ··· 506 cleanup_kprobe(p, flags); 507 508 synchronize_sched(); 509 + 510 + if ((mod = module_text_address((unsigned long)p->addr))) 511 + module_put(mod); 512 + 513 if (old_p->pre_handler == aggr_pre_handler && 514 list_empty(&old_p->list)) 515 kfree(old_p);
+54 -5
kernel/rcupdate.c
··· 116 local_irq_restore(flags); 117 } 118 119 /** 120 * call_rcu_bh - Queue an RCU for invocation after a quicker grace period. 121 * @head: structure to be used for queueing the RCU updates. ··· 165 { 166 return rcu_ctrlblk.completed; 167 } 168 169 /* 170 * Invoke the completed RCU callbacks. They are expected to be in ··· 257 258 if (rcp->next_pending && 259 rcp->completed == rcp->cur) { 260 - /* Can't change, since spin lock held. */ 261 - cpus_andnot(rsp->cpumask, cpu_online_map, nohz_cpu_mask); 262 - 263 rcp->next_pending = 0; 264 - /* next_pending == 0 must be visible in __rcu_process_callbacks() 265 - * before it can see new value of cur. 266 */ 267 smp_wmb(); 268 rcp->cur++; 269 } 270 } 271 ··· 505 */ 506 void __init rcu_init(void) 507 { 508 rcu_cpu_notify(&rcu_nb, CPU_UP_PREPARE, 509 (void *)(long)smp_processor_id()); 510 /* Register notifier for non-boot CPUs */
··· 116 local_irq_restore(flags); 117 } 118 119 + static atomic_t rcu_barrier_cpu_count; 120 + static struct semaphore rcu_barrier_sema; 121 + static struct completion rcu_barrier_completion; 122 + 123 /** 124 * call_rcu_bh - Queue an RCU for invocation after a quicker grace period. 125 * @head: structure to be used for queueing the RCU updates. ··· 161 { 162 return rcu_ctrlblk.completed; 163 } 164 + 165 + static void rcu_barrier_callback(struct rcu_head *notused) 166 + { 167 + if (atomic_dec_and_test(&rcu_barrier_cpu_count)) 168 + complete(&rcu_barrier_completion); 169 + } 170 + 171 + /* 172 + * Called with preemption disabled, and from cross-cpu IRQ context. 173 + */ 174 + static void rcu_barrier_func(void *notused) 175 + { 176 + int cpu = smp_processor_id(); 177 + struct rcu_data *rdp = &per_cpu(rcu_data, cpu); 178 + struct rcu_head *head; 179 + 180 + head = &rdp->barrier; 181 + atomic_inc(&rcu_barrier_cpu_count); 182 + call_rcu(head, rcu_barrier_callback); 183 + } 184 + 185 + /** 186 + * rcu_barrier - Wait until all the in-flight RCUs are complete. 187 + */ 188 + void rcu_barrier(void) 189 + { 190 + BUG_ON(in_interrupt()); 191 + /* Take cpucontrol semaphore to protect against CPU hotplug */ 192 + down(&rcu_barrier_sema); 193 + init_completion(&rcu_barrier_completion); 194 + atomic_set(&rcu_barrier_cpu_count, 0); 195 + on_each_cpu(rcu_barrier_func, NULL, 0, 1); 196 + wait_for_completion(&rcu_barrier_completion); 197 + up(&rcu_barrier_sema); 198 + } 199 + EXPORT_SYMBOL_GPL(rcu_barrier); 200 201 /* 202 * Invoke the completed RCU callbacks. They are expected to be in ··· 217 218 if (rcp->next_pending && 219 rcp->completed == rcp->cur) { 220 rcp->next_pending = 0; 221 + /* 222 + * next_pending == 0 must be visible in 223 + * __rcu_process_callbacks() before it can see new value of cur. 224 */ 225 smp_wmb(); 226 rcp->cur++; 227 + 228 + /* 229 + * Accessing nohz_cpu_mask before incrementing rcp->cur needs a 230 + * Barrier Otherwise it can cause tickless idle CPUs to be 231 + * included in rsp->cpumask, which will extend graceperiods 232 + * unnecessarily. 233 + */ 234 + smp_mb(); 235 + cpus_andnot(rsp->cpumask, cpu_online_map, nohz_cpu_mask); 236 + 237 } 238 } 239 ··· 457 */ 458 void __init rcu_init(void) 459 { 460 + sema_init(&rcu_barrier_sema, 1); 461 rcu_cpu_notify(&rcu_nb, CPU_UP_PREPARE, 462 (void *)(long)smp_processor_id()); 463 /* Register notifier for non-boot CPUs */
+1 -2
kernel/rcutorture.c
··· 409 stats_task = NULL; 410 411 /* Wait for all RCU callbacks to fire. */ 412 413 - for (i = 0; i < RCU_TORTURE_PIPE_LEN; i++) 414 - synchronize_rcu(); 415 rcu_torture_stats_print(); /* -After- the stats thread is stopped! */ 416 printk(KERN_ALERT TORTURE_FLAG 417 "--- End of test: %s\n",
··· 409 stats_task = NULL; 410 411 /* Wait for all RCU callbacks to fire. */ 412 + rcu_barrier(); 413 414 rcu_torture_stats_print(); /* -After- the stats thread is stopped! */ 415 printk(KERN_ALERT TORTURE_FLAG 416 "--- End of test: %s\n",
+2 -1
kernel/sys.c
··· 32 33 #include <linux/compat.h> 34 #include <linux/syscalls.h> 35 36 #include <asm/uaccess.h> 37 #include <asm/io.h> ··· 169 * of the last notifier function called. 170 */ 171 172 - int notifier_call_chain(struct notifier_block **n, unsigned long val, void *v) 173 { 174 int ret=NOTIFY_DONE; 175 struct notifier_block *nb = *n;
··· 32 33 #include <linux/compat.h> 34 #include <linux/syscalls.h> 35 + #include <linux/kprobes.h> 36 37 #include <asm/uaccess.h> 38 #include <asm/io.h> ··· 168 * of the last notifier function called. 169 */ 170 171 + int __kprobes notifier_call_chain(struct notifier_block **n, unsigned long val, void *v) 172 { 173 int ret=NOTIFY_DONE; 174 struct notifier_block *nb = *n;
+22
kernel/time.c
··· 561 EXPORT_SYMBOL_GPL(getnstimeofday); 562 #endif 563 564 #if (BITS_PER_LONG < 64) 565 u64 get_jiffies_64(void) 566 {
··· 561 EXPORT_SYMBOL_GPL(getnstimeofday); 562 #endif 563 564 + void getnstimestamp(struct timespec *ts) 565 + { 566 + unsigned int seq; 567 + struct timespec wall2mono; 568 + 569 + /* synchronize with settimeofday() changes */ 570 + do { 571 + seq = read_seqbegin(&xtime_lock); 572 + getnstimeofday(ts); 573 + wall2mono = wall_to_monotonic; 574 + } while(unlikely(read_seqretry(&xtime_lock, seq))); 575 + 576 + /* adjust to monotonicaly-increasing values */ 577 + ts->tv_sec += wall2mono.tv_sec; 578 + ts->tv_nsec += wall2mono.tv_nsec; 579 + while (unlikely(ts->tv_nsec >= NSEC_PER_SEC)) { 580 + ts->tv_nsec -= NSEC_PER_SEC; 581 + ts->tv_sec++; 582 + } 583 + } 584 + EXPORT_SYMBOL_GPL(getnstimestamp); 585 + 586 #if (BITS_PER_LONG < 64) 587 u64 get_jiffies_64(void) 588 {
+2
mm/bootmem.c
··· 204 unsigned long j; 205 i = find_next_zero_bit(bdata->node_bootmem_map, eidx, i); 206 i = ALIGN(i, incr); 207 if (test_bit(i, bdata->node_bootmem_map)) 208 continue; 209 for (j = i + 1; j < i + areasize; ++j) {
··· 204 unsigned long j; 205 i = find_next_zero_bit(bdata->node_bootmem_map, eidx, i); 206 i = ALIGN(i, incr); 207 + if (i >= eidx) 208 + break; 209 if (test_bit(i, bdata->node_bootmem_map)) 210 continue; 211 for (j = i + 1; j < i + areasize; ++j) {
+18 -49
mm/memory.c
··· 349 dump_stack(); 350 } 351 352 /* 353 * This function gets the "struct page" associated with a pte. 354 * ··· 381 if (vma->vm_flags & VM_PFNMAP) { 382 unsigned long off = (addr - vma->vm_start) >> PAGE_SHIFT; 383 if (pfn == vma->vm_pgoff + off) 384 return NULL; 385 } 386 ··· 444 * If it's a COW mapping, write protect it both 445 * in the parent and the child 446 */ 447 - if ((vm_flags & (VM_SHARED | VM_MAYWRITE)) == VM_MAYWRITE) { 448 ptep_set_wrprotect(src_mm, addr, src_pte); 449 pte = *src_pte; 450 } ··· 1233 EXPORT_SYMBOL(vm_insert_page); 1234 1235 /* 1236 - * Somebody does a pfn remapping that doesn't actually work as a vma. 1237 - * 1238 - * Do it as individual pages instead, and warn about it. It's bad form, 1239 - * and very inefficient. 1240 - */ 1241 - static int incomplete_pfn_remap(struct vm_area_struct *vma, 1242 - unsigned long start, unsigned long end, 1243 - unsigned long pfn, pgprot_t prot) 1244 - { 1245 - static int warn = 10; 1246 - struct page *page; 1247 - int retval; 1248 - 1249 - if (!(vma->vm_flags & VM_INCOMPLETE)) { 1250 - if (warn) { 1251 - warn--; 1252 - printk("%s does an incomplete pfn remapping", current->comm); 1253 - dump_stack(); 1254 - } 1255 - } 1256 - vma->vm_flags |= VM_INCOMPLETE | VM_IO | VM_RESERVED; 1257 - 1258 - if (start < vma->vm_start || end > vma->vm_end) 1259 - return -EINVAL; 1260 - 1261 - if (!pfn_valid(pfn)) 1262 - return -EINVAL; 1263 - 1264 - page = pfn_to_page(pfn); 1265 - if (!PageReserved(page)) 1266 - return -EINVAL; 1267 - 1268 - retval = 0; 1269 - while (start < end) { 1270 - retval = insert_page(vma->vm_mm, start, page, prot); 1271 - if (retval < 0) 1272 - break; 1273 - start += PAGE_SIZE; 1274 - page++; 1275 - } 1276 - return retval; 1277 - } 1278 - 1279 - /* 1280 * maps a range of physical memory into the requested pages. the old 1281 * mappings are removed. any references to nonexistent pages results 1282 * in null mappings (currently treated as "copy-on-access") ··· 1306 struct mm_struct *mm = vma->vm_mm; 1307 int err; 1308 1309 - if (addr != vma->vm_start || end != vma->vm_end) 1310 - return incomplete_pfn_remap(vma, addr, end, pfn, prot); 1311 - 1312 /* 1313 * Physically remapped pages are special. Tell the 1314 * rest of the world about it: ··· 1319 * VM_PFNMAP tells the core MM that the base pages are just 1320 * raw PFN mappings, and do not have a "struct page" associated 1321 * with them. 1322 */ 1323 vma->vm_flags |= VM_IO | VM_RESERVED | VM_PFNMAP; 1324 - vma->vm_pgoff = pfn; 1325 1326 BUG_ON(addr >= end); 1327 pfn -= addr >> PAGE_SHIFT;
··· 349 dump_stack(); 350 } 351 352 + static inline int is_cow_mapping(unsigned int flags) 353 + { 354 + return (flags & (VM_SHARED | VM_MAYWRITE)) == VM_MAYWRITE; 355 + } 356 + 357 /* 358 * This function gets the "struct page" associated with a pte. 359 * ··· 376 if (vma->vm_flags & VM_PFNMAP) { 377 unsigned long off = (addr - vma->vm_start) >> PAGE_SHIFT; 378 if (pfn == vma->vm_pgoff + off) 379 + return NULL; 380 + if (!is_cow_mapping(vma->vm_flags)) 381 return NULL; 382 } 383 ··· 437 * If it's a COW mapping, write protect it both 438 * in the parent and the child 439 */ 440 + if (is_cow_mapping(vm_flags)) { 441 ptep_set_wrprotect(src_mm, addr, src_pte); 442 pte = *src_pte; 443 } ··· 1226 EXPORT_SYMBOL(vm_insert_page); 1227 1228 /* 1229 * maps a range of physical memory into the requested pages. the old 1230 * mappings are removed. any references to nonexistent pages results 1231 * in null mappings (currently treated as "copy-on-access") ··· 1343 struct mm_struct *mm = vma->vm_mm; 1344 int err; 1345 1346 /* 1347 * Physically remapped pages are special. Tell the 1348 * rest of the world about it: ··· 1359 * VM_PFNMAP tells the core MM that the base pages are just 1360 * raw PFN mappings, and do not have a "struct page" associated 1361 * with them. 1362 + * 1363 + * There's a horrible special case to handle copy-on-write 1364 + * behaviour that some programs depend on. We mark the "original" 1365 + * un-COW'ed pages by matching them up with "vma->vm_pgoff". 1366 */ 1367 + if (is_cow_mapping(vma->vm_flags)) { 1368 + if (addr != vma->vm_start || end != vma->vm_end) 1369 + return -EINVAL; 1370 + vma->vm_pgoff = pfn; 1371 + } 1372 + 1373 vma->vm_flags |= VM_IO | VM_RESERVED | VM_PFNMAP; 1374 1375 BUG_ON(addr >= end); 1376 pfn -= addr >> PAGE_SHIFT;
+2 -1
net/core/dev.c
··· 1113 void netdev_rx_csum_fault(struct net_device *dev) 1114 { 1115 if (net_ratelimit()) { 1116 - printk(KERN_ERR "%s: hw csum failure.\n", dev->name); 1117 dump_stack(); 1118 } 1119 }
··· 1113 void netdev_rx_csum_fault(struct net_device *dev) 1114 { 1115 if (net_ratelimit()) { 1116 + printk(KERN_ERR "%s: hw csum failure.\n", 1117 + dev ? dev->name : "<unknown>"); 1118 dump_stack(); 1119 } 1120 }
+1 -1
net/core/skbuff.c
··· 1725 * of the skb if any page alloc fails user this procedure returns -ENOMEM 1726 */ 1727 int skb_append_datato_frags(struct sock *sk, struct sk_buff *skb, 1728 - int getfrag(void *from, char *to, int offset, 1729 int len, int odd, struct sk_buff *skb), 1730 void *from, int length) 1731 {
··· 1725 * of the skb if any page alloc fails user this procedure returns -ENOMEM 1726 */ 1727 int skb_append_datato_frags(struct sock *sk, struct sk_buff *skb, 1728 + int (*getfrag)(void *from, char *to, int offset, 1729 int len, int odd, struct sk_buff *skb), 1730 void *from, int length) 1731 {
+22 -3
net/decnet/af_decnet.c
··· 153 static DEFINE_RWLOCK(dn_hash_lock); 154 static struct hlist_head dn_sk_hash[DN_SK_HASH_SIZE]; 155 static struct hlist_head dn_wild_sk; 156 157 static int __dn_setsockopt(struct socket *sock, int level, int optname, char __user *optval, int optlen, int flags); 158 static int __dn_getsockopt(struct socket *sock, int level, int optname, char __user *optval, int __user *optlen, int flags); ··· 447 dst_release(xchg(&sk->sk_dst_cache, NULL)); 448 } 449 450 static struct proto dn_proto = { 451 - .name = "DECNET", 452 - .owner = THIS_MODULE, 453 - .obj_size = sizeof(struct dn_sock), 454 }; 455 456 static struct sock *dn_alloc_sock(struct socket *sock, gfp_t gfp) ··· 487 sk->sk_family = PF_DECnet; 488 sk->sk_protocol = 0; 489 sk->sk_allocation = gfp; 490 491 /* Initialization of DECnet Session Control Port */ 492 scp = DN_SK(sk);
··· 153 static DEFINE_RWLOCK(dn_hash_lock); 154 static struct hlist_head dn_sk_hash[DN_SK_HASH_SIZE]; 155 static struct hlist_head dn_wild_sk; 156 + static atomic_t decnet_memory_allocated; 157 158 static int __dn_setsockopt(struct socket *sock, int level, int optname, char __user *optval, int optlen, int flags); 159 static int __dn_getsockopt(struct socket *sock, int level, int optname, char __user *optval, int __user *optlen, int flags); ··· 446 dst_release(xchg(&sk->sk_dst_cache, NULL)); 447 } 448 449 + static int dn_memory_pressure; 450 + 451 + static void dn_enter_memory_pressure(void) 452 + { 453 + if (!dn_memory_pressure) { 454 + dn_memory_pressure = 1; 455 + } 456 + } 457 + 458 static struct proto dn_proto = { 459 + .name = "NSP", 460 + .owner = THIS_MODULE, 461 + .enter_memory_pressure = dn_enter_memory_pressure, 462 + .memory_pressure = &dn_memory_pressure, 463 + .memory_allocated = &decnet_memory_allocated, 464 + .sysctl_mem = sysctl_decnet_mem, 465 + .sysctl_wmem = sysctl_decnet_wmem, 466 + .sysctl_rmem = sysctl_decnet_rmem, 467 + .max_header = DN_MAX_NSP_DATA_HEADER + 64, 468 + .obj_size = sizeof(struct dn_sock), 469 }; 470 471 static struct sock *dn_alloc_sock(struct socket *sock, gfp_t gfp) ··· 470 sk->sk_family = PF_DECnet; 471 sk->sk_protocol = 0; 472 sk->sk_allocation = gfp; 473 + sk->sk_sndbuf = sysctl_decnet_wmem[1]; 474 + sk->sk_rcvbuf = sysctl_decnet_rmem[1]; 475 476 /* Initialization of DECnet Session Control Port */ 477 scp = DN_SK(sk);
+33
net/decnet/sysctl_net_decnet.c
··· 10 * 11 * Changes: 12 * Steve Whitehouse - C99 changes and default device handling 13 * 14 */ 15 #include <linux/config.h> ··· 37 int decnet_dr_count = 3; 38 int decnet_log_martians = 1; 39 int decnet_no_fc_max_cwnd = NSP_MIN_WINDOW; 40 41 #ifdef CONFIG_SYSCTL 42 extern int decnet_dst_gc_interval; ··· 434 .extra1 = &min_decnet_no_fc_max_cwnd, 435 .extra2 = &max_decnet_no_fc_max_cwnd 436 }, 437 { 438 .ctl_name = NET_DECNET_DEBUG_LEVEL, 439 .procname = "debug",
··· 10 * 11 * Changes: 12 * Steve Whitehouse - C99 changes and default device handling 13 + * Steve Whitehouse - Memory buffer settings, like the tcp ones 14 * 15 */ 16 #include <linux/config.h> ··· 36 int decnet_dr_count = 3; 37 int decnet_log_martians = 1; 38 int decnet_no_fc_max_cwnd = NSP_MIN_WINDOW; 39 + 40 + /* Reasonable defaults, I hope, based on tcp's defaults */ 41 + int sysctl_decnet_mem[3] = { 768 << 3, 1024 << 3, 1536 << 3 }; 42 + int sysctl_decnet_wmem[3] = { 4 * 1024, 16 * 1024, 128 * 1024 }; 43 + int sysctl_decnet_rmem[3] = { 4 * 1024, 87380, 87380 * 2 }; 44 45 #ifdef CONFIG_SYSCTL 46 extern int decnet_dst_gc_interval; ··· 428 .extra1 = &min_decnet_no_fc_max_cwnd, 429 .extra2 = &max_decnet_no_fc_max_cwnd 430 }, 431 + { 432 + .ctl_name = NET_DECNET_MEM, 433 + .procname = "decnet_mem", 434 + .data = &sysctl_decnet_mem, 435 + .maxlen = sizeof(sysctl_decnet_mem), 436 + .mode = 0644, 437 + .proc_handler = &proc_dointvec, 438 + .strategy = &sysctl_intvec, 439 + }, 440 + { 441 + .ctl_name = NET_DECNET_RMEM, 442 + .procname = "decnet_rmem", 443 + .data = &sysctl_decnet_rmem, 444 + .maxlen = sizeof(sysctl_decnet_rmem), 445 + .mode = 0644, 446 + .proc_handler = &proc_dointvec, 447 + .strategy = &sysctl_intvec, 448 + }, 449 + { 450 + .ctl_name = NET_DECNET_WMEM, 451 + .procname = "decnet_wmem", 452 + .data = &sysctl_decnet_wmem, 453 + .maxlen = sizeof(sysctl_decnet_wmem), 454 + .mode = 0644, 455 + .proc_handler = &proc_dointvec, 456 + .strategy = &sysctl_intvec, 457 + }, 458 { 459 .ctl_name = NET_DECNET_DEBUG_LEVEL, 460 .procname = "debug",
+4 -4
net/ipv4/netfilter/Kconfig
··· 56 instead of the individual packets. 57 58 config IP_NF_CONNTRACK_EVENTS 59 - bool "Connection tracking events" 60 - depends on IP_NF_CONNTRACK 61 help 62 If this option is enabled, the connection tracking code will 63 provide a notifier chain that can be used by other kernel code ··· 66 IF unsure, say `N'. 67 68 config IP_NF_CONNTRACK_NETLINK 69 - tristate 'Connection tracking netlink interface' 70 - depends on IP_NF_CONNTRACK && NETFILTER_NETLINK 71 depends on IP_NF_CONNTRACK!=y || NETFILTER_NETLINK!=m 72 help 73 This option enables support for a netlink-based userspace interface
··· 56 instead of the individual packets. 57 58 config IP_NF_CONNTRACK_EVENTS 59 + bool "Connection tracking events (EXPERIMENTAL)" 60 + depends on EXPERIMENTAL && IP_NF_CONNTRACK 61 help 62 If this option is enabled, the connection tracking code will 63 provide a notifier chain that can be used by other kernel code ··· 66 IF unsure, say `N'. 67 68 config IP_NF_CONNTRACK_NETLINK 69 + tristate 'Connection tracking netlink interface (EXPERIMENTAL)' 70 + depends on EXPERIMENTAL && IP_NF_CONNTRACK && NETFILTER_NETLINK 71 depends on IP_NF_CONNTRACK!=y || NETFILTER_NETLINK!=m 72 help 73 This option enables support for a netlink-based userspace interface
+11 -9
net/ipv4/netfilter/ip_conntrack_core.c
··· 1345 return 1; 1346 } 1347 1348 static void free_conntrack_hash(struct list_head *hash, int vmalloced,int size) 1349 { 1350 if (vmalloced) ··· 1359 get_order(sizeof(struct list_head) * size)); 1360 } 1361 1362 - void ip_conntrack_flush(void) 1363 { 1364 /* This makes sure all current packets have passed through 1365 netfilter framework. Roll on, two-stage module 1366 delete... */ ··· 1372 1373 ip_ct_event_cache_flush(); 1374 i_see_dead_people: 1375 - ip_ct_iterate_cleanup(kill_all, NULL); 1376 if (atomic_read(&ip_conntrack_count) != 0) { 1377 schedule(); 1378 goto i_see_dead_people; ··· 1380 /* wait until all references to ip_conntrack_untracked are dropped */ 1381 while (atomic_read(&ip_conntrack_untracked.ct_general.use) > 1) 1382 schedule(); 1383 - } 1384 1385 - /* Mishearing the voices in his head, our hero wonders how he's 1386 - supposed to kill the mall. */ 1387 - void ip_conntrack_cleanup(void) 1388 - { 1389 - ip_ct_attach = NULL; 1390 - ip_conntrack_flush(); 1391 kmem_cache_destroy(ip_conntrack_cachep); 1392 kmem_cache_destroy(ip_conntrack_expect_cachep); 1393 free_conntrack_hash(ip_conntrack_hash, ip_conntrack_vmalloc,
··· 1345 return 1; 1346 } 1347 1348 + void ip_conntrack_flush(void) 1349 + { 1350 + ip_ct_iterate_cleanup(kill_all, NULL); 1351 + } 1352 + 1353 static void free_conntrack_hash(struct list_head *hash, int vmalloced,int size) 1354 { 1355 if (vmalloced) ··· 1354 get_order(sizeof(struct list_head) * size)); 1355 } 1356 1357 + /* Mishearing the voices in his head, our hero wonders how he's 1358 + supposed to kill the mall. */ 1359 + void ip_conntrack_cleanup(void) 1360 { 1361 + ip_ct_attach = NULL; 1362 + 1363 /* This makes sure all current packets have passed through 1364 netfilter framework. Roll on, two-stage module 1365 delete... */ ··· 1363 1364 ip_ct_event_cache_flush(); 1365 i_see_dead_people: 1366 + ip_conntrack_flush(); 1367 if (atomic_read(&ip_conntrack_count) != 0) { 1368 schedule(); 1369 goto i_see_dead_people; ··· 1371 /* wait until all references to ip_conntrack_untracked are dropped */ 1372 while (atomic_read(&ip_conntrack_untracked.ct_general.use) > 1) 1373 schedule(); 1374 1375 kmem_cache_destroy(ip_conntrack_cachep); 1376 kmem_cache_destroy(ip_conntrack_expect_cachep); 1377 free_conntrack_hash(ip_conntrack_hash, ip_conntrack_vmalloc,
+5 -7
net/ipv4/netfilter/ip_conntrack_netlink.c
··· 503 } 504 505 static const size_t cta_min_proto[CTA_PROTO_MAX] = { 506 - [CTA_PROTO_NUM-1] = sizeof(u_int16_t), 507 [CTA_PROTO_SRC_PORT-1] = sizeof(u_int16_t), 508 [CTA_PROTO_DST_PORT-1] = sizeof(u_int16_t), 509 [CTA_PROTO_ICMP_TYPE-1] = sizeof(u_int8_t), ··· 528 529 if (!tb[CTA_PROTO_NUM-1]) 530 return -EINVAL; 531 - tuple->dst.protonum = *(u_int16_t *)NFA_DATA(tb[CTA_PROTO_NUM-1]); 532 533 proto = ip_conntrack_proto_find_get(tuple->dst.protonum); 534 ··· 728 return -ENOENT; 729 } 730 } 731 - if (del_timer(&ct->timeout)) { 732 - ip_conntrack_put(ct); 733 ct->timeout.function((unsigned long)ct); 734 - return 0; 735 - } 736 ip_conntrack_put(ct); 737 DEBUGP("leaving\n"); 738 ··· 875 DEBUGP("NAT status: %lu\n", 876 status & (IPS_NAT_MASK | IPS_NAT_DONE_MASK)); 877 878 - if (ip_nat_initialized(ct, hooknum)) 879 return -EEXIST; 880 ip_nat_setup_info(ct, &range, hooknum); 881
··· 503 } 504 505 static const size_t cta_min_proto[CTA_PROTO_MAX] = { 506 + [CTA_PROTO_NUM-1] = sizeof(u_int8_t), 507 [CTA_PROTO_SRC_PORT-1] = sizeof(u_int16_t), 508 [CTA_PROTO_DST_PORT-1] = sizeof(u_int16_t), 509 [CTA_PROTO_ICMP_TYPE-1] = sizeof(u_int8_t), ··· 528 529 if (!tb[CTA_PROTO_NUM-1]) 530 return -EINVAL; 531 + tuple->dst.protonum = *(u_int8_t *)NFA_DATA(tb[CTA_PROTO_NUM-1]); 532 533 proto = ip_conntrack_proto_find_get(tuple->dst.protonum); 534 ··· 728 return -ENOENT; 729 } 730 } 731 + if (del_timer(&ct->timeout)) 732 ct->timeout.function((unsigned long)ct); 733 + 734 ip_conntrack_put(ct); 735 DEBUGP("leaving\n"); 736 ··· 877 DEBUGP("NAT status: %lu\n", 878 status & (IPS_NAT_MASK | IPS_NAT_DONE_MASK)); 879 880 + if (ip_nat_initialized(ct, HOOK2MANIP(hooknum))) 881 return -EEXIST; 882 ip_nat_setup_info(ct, &range, hooknum); 883
+2 -1
net/ipv4/netfilter/ip_conntrack_proto_tcp.c
··· 341 static int tcp_to_nfattr(struct sk_buff *skb, struct nfattr *nfa, 342 const struct ip_conntrack *ct) 343 { 344 - struct nfattr *nest_parms = NFA_NEST(skb, CTA_PROTOINFO_TCP); 345 346 read_lock_bh(&tcp_lock); 347 NFA_PUT(skb, CTA_PROTOINFO_TCP_STATE, sizeof(u_int8_t), 348 &ct->proto.tcp.state); 349 read_unlock_bh(&tcp_lock);
··· 341 static int tcp_to_nfattr(struct sk_buff *skb, struct nfattr *nfa, 342 const struct ip_conntrack *ct) 343 { 344 + struct nfattr *nest_parms; 345 346 read_lock_bh(&tcp_lock); 347 + nest_parms = NFA_NEST(skb, CTA_PROTOINFO_TCP); 348 NFA_PUT(skb, CTA_PROTOINFO_TCP_STATE, sizeof(u_int8_t), 349 &ct->proto.tcp.state); 350 read_unlock_bh(&tcp_lock);
+130 -115
net/ipv4/tcp_output.c
··· 262 * We are working here with either a clone of the original 263 * SKB, or a fresh unique copy made by the retransmit engine. 264 */ 265 - static int tcp_transmit_skb(struct sock *sk, struct sk_buff *skb) 266 { 267 - if (skb != NULL) { 268 - const struct inet_connection_sock *icsk = inet_csk(sk); 269 - struct inet_sock *inet = inet_sk(sk); 270 - struct tcp_sock *tp = tcp_sk(sk); 271 - struct tcp_skb_cb *tcb = TCP_SKB_CB(skb); 272 - int tcp_header_size = tp->tcp_header_len; 273 - struct tcphdr *th; 274 - int sysctl_flags; 275 - int err; 276 277 - BUG_ON(!tcp_skb_pcount(skb)); 278 279 #define SYSCTL_FLAG_TSTAMPS 0x1 280 #define SYSCTL_FLAG_WSCALE 0x2 281 #define SYSCTL_FLAG_SACK 0x4 282 283 - /* If congestion control is doing timestamping */ 284 - if (icsk->icsk_ca_ops->rtt_sample) 285 - __net_timestamp(skb); 286 - 287 - sysctl_flags = 0; 288 - if (tcb->flags & TCPCB_FLAG_SYN) { 289 - tcp_header_size = sizeof(struct tcphdr) + TCPOLEN_MSS; 290 - if(sysctl_tcp_timestamps) { 291 - tcp_header_size += TCPOLEN_TSTAMP_ALIGNED; 292 - sysctl_flags |= SYSCTL_FLAG_TSTAMPS; 293 - } 294 - if(sysctl_tcp_window_scaling) { 295 - tcp_header_size += TCPOLEN_WSCALE_ALIGNED; 296 - sysctl_flags |= SYSCTL_FLAG_WSCALE; 297 - } 298 - if(sysctl_tcp_sack) { 299 - sysctl_flags |= SYSCTL_FLAG_SACK; 300 - if(!(sysctl_flags & SYSCTL_FLAG_TSTAMPS)) 301 - tcp_header_size += TCPOLEN_SACKPERM_ALIGNED; 302 - } 303 - } else if (tp->rx_opt.eff_sacks) { 304 - /* A SACK is 2 pad bytes, a 2 byte header, plus 305 - * 2 32-bit sequence numbers for each SACK block. 306 - */ 307 - tcp_header_size += (TCPOLEN_SACK_BASE_ALIGNED + 308 - (tp->rx_opt.eff_sacks * TCPOLEN_SACK_PERBLOCK)); 309 } 310 - 311 - if (tcp_packets_in_flight(tp) == 0) 312 - tcp_ca_event(sk, CA_EVENT_TX_START); 313 - 314 - th = (struct tcphdr *) skb_push(skb, tcp_header_size); 315 - skb->h.th = th; 316 - skb_set_owner_w(skb, sk); 317 - 318 - /* Build TCP header and checksum it. */ 319 - th->source = inet->sport; 320 - th->dest = inet->dport; 321 - th->seq = htonl(tcb->seq); 322 - th->ack_seq = htonl(tp->rcv_nxt); 323 - *(((__u16 *)th) + 6) = htons(((tcp_header_size >> 2) << 12) | tcb->flags); 324 - if (tcb->flags & TCPCB_FLAG_SYN) { 325 - /* RFC1323: The window in SYN & SYN/ACK segments 326 - * is never scaled. 327 - */ 328 - th->window = htons(tp->rcv_wnd); 329 - } else { 330 - th->window = htons(tcp_select_window(sk)); 331 } 332 - th->check = 0; 333 - th->urg_ptr = 0; 334 - 335 - if (tp->urg_mode && 336 - between(tp->snd_up, tcb->seq+1, tcb->seq+0xFFFF)) { 337 - th->urg_ptr = htons(tp->snd_up-tcb->seq); 338 - th->urg = 1; 339 } 340 - 341 - if (tcb->flags & TCPCB_FLAG_SYN) { 342 - tcp_syn_build_options((__u32 *)(th + 1), 343 - tcp_advertise_mss(sk), 344 - (sysctl_flags & SYSCTL_FLAG_TSTAMPS), 345 - (sysctl_flags & SYSCTL_FLAG_SACK), 346 - (sysctl_flags & SYSCTL_FLAG_WSCALE), 347 - tp->rx_opt.rcv_wscale, 348 - tcb->when, 349 - tp->rx_opt.ts_recent); 350 - } else { 351 - tcp_build_and_update_options((__u32 *)(th + 1), 352 - tp, tcb->when); 353 - 354 - TCP_ECN_send(sk, tp, skb, tcp_header_size); 355 - } 356 - tp->af_specific->send_check(sk, th, skb->len, skb); 357 - 358 - if (tcb->flags & TCPCB_FLAG_ACK) 359 - tcp_event_ack_sent(sk, tcp_skb_pcount(skb)); 360 - 361 - if (skb->len != tcp_header_size) 362 - tcp_event_data_sent(tp, skb, sk); 363 - 364 - TCP_INC_STATS(TCP_MIB_OUTSEGS); 365 - 366 - err = tp->af_specific->queue_xmit(skb, 0); 367 - if (err <= 0) 368 - return err; 369 - 370 - tcp_enter_cwr(sk); 371 - 372 - /* NET_XMIT_CN is special. It does not guarantee, 373 - * that this packet is lost. It tells that device 374 - * is about to start to drop packets or already 375 - * drops some packets of the same priority and 376 - * invokes us to send less aggressively. 377 */ 378 - return err == NET_XMIT_CN ? 0 : err; 379 } 380 - return -ENOBUFS; 381 #undef SYSCTL_FLAG_TSTAMPS 382 #undef SYSCTL_FLAG_WSCALE 383 #undef SYSCTL_FLAG_SACK ··· 1053 1054 TCP_SKB_CB(skb)->when = tcp_time_stamp; 1055 1056 - if (unlikely(tcp_transmit_skb(sk, skb_clone(skb, GFP_ATOMIC)))) 1057 break; 1058 1059 /* Advance the send_head. This one is sent out. ··· 1126 /* Send it out now. */ 1127 TCP_SKB_CB(skb)->when = tcp_time_stamp; 1128 1129 - if (likely(!tcp_transmit_skb(sk, skb_clone(skb, sk->sk_allocation)))) { 1130 update_send_head(sk, tp, skb); 1131 tcp_cwnd_validate(sk, tp); 1132 return; ··· 1446 */ 1447 TCP_SKB_CB(skb)->when = tcp_time_stamp; 1448 1449 - err = tcp_transmit_skb(sk, (skb_cloned(skb) ? 1450 - pskb_copy(skb, GFP_ATOMIC): 1451 - skb_clone(skb, GFP_ATOMIC))); 1452 1453 if (err == 0) { 1454 /* Update global TCP statistics. */ ··· 1680 TCP_SKB_CB(skb)->seq = tcp_acceptable_seq(sk, tp); 1681 TCP_SKB_CB(skb)->end_seq = TCP_SKB_CB(skb)->seq; 1682 TCP_SKB_CB(skb)->when = tcp_time_stamp; 1683 - if (tcp_transmit_skb(sk, skb)) 1684 NET_INC_STATS(LINUX_MIB_TCPABORTFAILED); 1685 } 1686 ··· 1715 TCP_ECN_send_synack(tcp_sk(sk), skb); 1716 } 1717 TCP_SKB_CB(skb)->when = tcp_time_stamp; 1718 - return tcp_transmit_skb(sk, skb_clone(skb, GFP_ATOMIC)); 1719 } 1720 1721 /* ··· 1876 __skb_queue_tail(&sk->sk_write_queue, buff); 1877 sk_charge_skb(sk, buff); 1878 tp->packets_out += tcp_skb_pcount(buff); 1879 - tcp_transmit_skb(sk, skb_clone(buff, GFP_KERNEL)); 1880 TCP_INC_STATS(TCP_MIB_ACTIVEOPENS); 1881 1882 /* Timer for repeating the SYN until an answer. */ ··· 1972 /* Send it off, this clears delayed acks for us. */ 1973 TCP_SKB_CB(buff)->seq = TCP_SKB_CB(buff)->end_seq = tcp_acceptable_seq(sk, tp); 1974 TCP_SKB_CB(buff)->when = tcp_time_stamp; 1975 - tcp_transmit_skb(sk, buff); 1976 } 1977 } 1978 ··· 2012 TCP_SKB_CB(skb)->seq = urgent ? tp->snd_una : tp->snd_una - 1; 2013 TCP_SKB_CB(skb)->end_seq = TCP_SKB_CB(skb)->seq; 2014 TCP_SKB_CB(skb)->when = tcp_time_stamp; 2015 - return tcp_transmit_skb(sk, skb); 2016 } 2017 2018 int tcp_write_wakeup(struct sock *sk) ··· 2045 2046 TCP_SKB_CB(skb)->flags |= TCPCB_FLAG_PSH; 2047 TCP_SKB_CB(skb)->when = tcp_time_stamp; 2048 - err = tcp_transmit_skb(sk, skb_clone(skb, GFP_ATOMIC)); 2049 if (!err) { 2050 update_send_head(sk, tp, skb); 2051 }
··· 262 * We are working here with either a clone of the original 263 * SKB, or a fresh unique copy made by the retransmit engine. 264 */ 265 + static int tcp_transmit_skb(struct sock *sk, struct sk_buff *skb, int clone_it, gfp_t gfp_mask) 266 { 267 + const struct inet_connection_sock *icsk = inet_csk(sk); 268 + struct inet_sock *inet; 269 + struct tcp_sock *tp; 270 + struct tcp_skb_cb *tcb; 271 + int tcp_header_size; 272 + struct tcphdr *th; 273 + int sysctl_flags; 274 + int err; 275 276 + BUG_ON(!skb || !tcp_skb_pcount(skb)); 277 + 278 + /* If congestion control is doing timestamping, we must 279 + * take such a timestamp before we potentially clone/copy. 280 + */ 281 + if (icsk->icsk_ca_ops->rtt_sample) 282 + __net_timestamp(skb); 283 + 284 + if (likely(clone_it)) { 285 + if (unlikely(skb_cloned(skb))) 286 + skb = pskb_copy(skb, gfp_mask); 287 + else 288 + skb = skb_clone(skb, gfp_mask); 289 + if (unlikely(!skb)) 290 + return -ENOBUFS; 291 + } 292 + 293 + inet = inet_sk(sk); 294 + tp = tcp_sk(sk); 295 + tcb = TCP_SKB_CB(skb); 296 + tcp_header_size = tp->tcp_header_len; 297 298 #define SYSCTL_FLAG_TSTAMPS 0x1 299 #define SYSCTL_FLAG_WSCALE 0x2 300 #define SYSCTL_FLAG_SACK 0x4 301 302 + sysctl_flags = 0; 303 + if (unlikely(tcb->flags & TCPCB_FLAG_SYN)) { 304 + tcp_header_size = sizeof(struct tcphdr) + TCPOLEN_MSS; 305 + if(sysctl_tcp_timestamps) { 306 + tcp_header_size += TCPOLEN_TSTAMP_ALIGNED; 307 + sysctl_flags |= SYSCTL_FLAG_TSTAMPS; 308 } 309 + if (sysctl_tcp_window_scaling) { 310 + tcp_header_size += TCPOLEN_WSCALE_ALIGNED; 311 + sysctl_flags |= SYSCTL_FLAG_WSCALE; 312 } 313 + if (sysctl_tcp_sack) { 314 + sysctl_flags |= SYSCTL_FLAG_SACK; 315 + if (!(sysctl_flags & SYSCTL_FLAG_TSTAMPS)) 316 + tcp_header_size += TCPOLEN_SACKPERM_ALIGNED; 317 } 318 + } else if (unlikely(tp->rx_opt.eff_sacks)) { 319 + /* A SACK is 2 pad bytes, a 2 byte header, plus 320 + * 2 32-bit sequence numbers for each SACK block. 321 */ 322 + tcp_header_size += (TCPOLEN_SACK_BASE_ALIGNED + 323 + (tp->rx_opt.eff_sacks * 324 + TCPOLEN_SACK_PERBLOCK)); 325 } 326 + 327 + if (tcp_packets_in_flight(tp) == 0) 328 + tcp_ca_event(sk, CA_EVENT_TX_START); 329 + 330 + th = (struct tcphdr *) skb_push(skb, tcp_header_size); 331 + skb->h.th = th; 332 + skb_set_owner_w(skb, sk); 333 + 334 + /* Build TCP header and checksum it. */ 335 + th->source = inet->sport; 336 + th->dest = inet->dport; 337 + th->seq = htonl(tcb->seq); 338 + th->ack_seq = htonl(tp->rcv_nxt); 339 + *(((__u16 *)th) + 6) = htons(((tcp_header_size >> 2) << 12) | 340 + tcb->flags); 341 + 342 + if (unlikely(tcb->flags & TCPCB_FLAG_SYN)) { 343 + /* RFC1323: The window in SYN & SYN/ACK segments 344 + * is never scaled. 345 + */ 346 + th->window = htons(tp->rcv_wnd); 347 + } else { 348 + th->window = htons(tcp_select_window(sk)); 349 + } 350 + th->check = 0; 351 + th->urg_ptr = 0; 352 + 353 + if (unlikely(tp->urg_mode && 354 + between(tp->snd_up, tcb->seq+1, tcb->seq+0xFFFF))) { 355 + th->urg_ptr = htons(tp->snd_up-tcb->seq); 356 + th->urg = 1; 357 + } 358 + 359 + if (unlikely(tcb->flags & TCPCB_FLAG_SYN)) { 360 + tcp_syn_build_options((__u32 *)(th + 1), 361 + tcp_advertise_mss(sk), 362 + (sysctl_flags & SYSCTL_FLAG_TSTAMPS), 363 + (sysctl_flags & SYSCTL_FLAG_SACK), 364 + (sysctl_flags & SYSCTL_FLAG_WSCALE), 365 + tp->rx_opt.rcv_wscale, 366 + tcb->when, 367 + tp->rx_opt.ts_recent); 368 + } else { 369 + tcp_build_and_update_options((__u32 *)(th + 1), 370 + tp, tcb->when); 371 + TCP_ECN_send(sk, tp, skb, tcp_header_size); 372 + } 373 + 374 + tp->af_specific->send_check(sk, th, skb->len, skb); 375 + 376 + if (likely(tcb->flags & TCPCB_FLAG_ACK)) 377 + tcp_event_ack_sent(sk, tcp_skb_pcount(skb)); 378 + 379 + if (skb->len != tcp_header_size) 380 + tcp_event_data_sent(tp, skb, sk); 381 + 382 + TCP_INC_STATS(TCP_MIB_OUTSEGS); 383 + 384 + err = tp->af_specific->queue_xmit(skb, 0); 385 + if (unlikely(err <= 0)) 386 + return err; 387 + 388 + tcp_enter_cwr(sk); 389 + 390 + /* NET_XMIT_CN is special. It does not guarantee, 391 + * that this packet is lost. It tells that device 392 + * is about to start to drop packets or already 393 + * drops some packets of the same priority and 394 + * invokes us to send less aggressively. 395 + */ 396 + return err == NET_XMIT_CN ? 0 : err; 397 + 398 #undef SYSCTL_FLAG_TSTAMPS 399 #undef SYSCTL_FLAG_WSCALE 400 #undef SYSCTL_FLAG_SACK ··· 1036 1037 TCP_SKB_CB(skb)->when = tcp_time_stamp; 1038 1039 + if (unlikely(tcp_transmit_skb(sk, skb, 1, GFP_ATOMIC))) 1040 break; 1041 1042 /* Advance the send_head. This one is sent out. ··· 1109 /* Send it out now. */ 1110 TCP_SKB_CB(skb)->when = tcp_time_stamp; 1111 1112 + if (likely(!tcp_transmit_skb(sk, skb, 1, sk->sk_allocation))) { 1113 update_send_head(sk, tp, skb); 1114 tcp_cwnd_validate(sk, tp); 1115 return; ··· 1429 */ 1430 TCP_SKB_CB(skb)->when = tcp_time_stamp; 1431 1432 + err = tcp_transmit_skb(sk, skb, 1, GFP_ATOMIC); 1433 1434 if (err == 0) { 1435 /* Update global TCP statistics. */ ··· 1665 TCP_SKB_CB(skb)->seq = tcp_acceptable_seq(sk, tp); 1666 TCP_SKB_CB(skb)->end_seq = TCP_SKB_CB(skb)->seq; 1667 TCP_SKB_CB(skb)->when = tcp_time_stamp; 1668 + if (tcp_transmit_skb(sk, skb, 0, priority)) 1669 NET_INC_STATS(LINUX_MIB_TCPABORTFAILED); 1670 } 1671 ··· 1700 TCP_ECN_send_synack(tcp_sk(sk), skb); 1701 } 1702 TCP_SKB_CB(skb)->when = tcp_time_stamp; 1703 + return tcp_transmit_skb(sk, skb, 1, GFP_ATOMIC); 1704 } 1705 1706 /* ··· 1861 __skb_queue_tail(&sk->sk_write_queue, buff); 1862 sk_charge_skb(sk, buff); 1863 tp->packets_out += tcp_skb_pcount(buff); 1864 + tcp_transmit_skb(sk, buff, 1, GFP_KERNEL); 1865 TCP_INC_STATS(TCP_MIB_ACTIVEOPENS); 1866 1867 /* Timer for repeating the SYN until an answer. */ ··· 1957 /* Send it off, this clears delayed acks for us. */ 1958 TCP_SKB_CB(buff)->seq = TCP_SKB_CB(buff)->end_seq = tcp_acceptable_seq(sk, tp); 1959 TCP_SKB_CB(buff)->when = tcp_time_stamp; 1960 + tcp_transmit_skb(sk, buff, 0, GFP_ATOMIC); 1961 } 1962 } 1963 ··· 1997 TCP_SKB_CB(skb)->seq = urgent ? tp->snd_una : tp->snd_una - 1; 1998 TCP_SKB_CB(skb)->end_seq = TCP_SKB_CB(skb)->seq; 1999 TCP_SKB_CB(skb)->when = tcp_time_stamp; 2000 + return tcp_transmit_skb(sk, skb, 0, GFP_ATOMIC); 2001 } 2002 2003 int tcp_write_wakeup(struct sock *sk) ··· 2030 2031 TCP_SKB_CB(skb)->flags |= TCPCB_FLAG_PSH; 2032 TCP_SKB_CB(skb)->when = tcp_time_stamp; 2033 + err = tcp_transmit_skb(sk, skb, 1, GFP_ATOMIC); 2034 if (!err) { 2035 update_send_head(sk, tp, skb); 2036 }
+4 -12
net/ipv4/tcp_vegas.c
··· 215 vegas->beg_snd_nxt = tp->snd_nxt; 216 vegas->beg_snd_cwnd = tp->snd_cwnd; 217 218 - /* Take into account the current RTT sample too, to 219 - * decrease the impact of delayed acks. This double counts 220 - * this sample since we count it for the next window as well, 221 - * but that's not too awful, since we're taking the min, 222 - * rather than averaging. 223 - */ 224 - tcp_vegas_rtt_calc(sk, seq_rtt * 1000); 225 - 226 /* We do the Vegas calculations only if we got enough RTT 227 * samples that we can be reasonably sure that we got 228 * at least one RTT sample that wasn't from a delayed ACK. ··· 325 else if (tp->snd_cwnd > tp->snd_cwnd_clamp) 326 tp->snd_cwnd = tp->snd_cwnd_clamp; 327 } 328 - } 329 330 - /* Wipe the slate clean for the next RTT. */ 331 - vegas->cntRTT = 0; 332 - vegas->minRTT = 0x7fffffff; 333 } 334 335 /* Extract info for Tcp socket info provided via netlink. */
··· 215 vegas->beg_snd_nxt = tp->snd_nxt; 216 vegas->beg_snd_cwnd = tp->snd_cwnd; 217 218 /* We do the Vegas calculations only if we got enough RTT 219 * samples that we can be reasonably sure that we got 220 * at least one RTT sample that wasn't from a delayed ACK. ··· 333 else if (tp->snd_cwnd > tp->snd_cwnd_clamp) 334 tp->snd_cwnd = tp->snd_cwnd_clamp; 335 } 336 337 + /* Wipe the slate clean for the next RTT. */ 338 + vegas->cntRTT = 0; 339 + vegas->minRTT = 0x7fffffff; 340 + } 341 } 342 343 /* Extract info for Tcp socket info provided via netlink. */
+1 -1
net/ipv6/esp6.c
··· 248 if (esp->conf.padlen) 249 mtu = ALIGN(mtu, esp->conf.padlen); 250 251 - return mtu + x->props.header_len + esp->auth.icv_full_len; 252 } 253 254 static void esp6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
··· 248 if (esp->conf.padlen) 249 mtu = ALIGN(mtu, esp->conf.padlen); 250 251 + return mtu + x->props.header_len + esp->auth.icv_trunc_len; 252 } 253 254 static void esp6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
+6 -6
net/ipv6/netfilter/nf_conntrack_proto_icmpv6.c
··· 68 [ICMPV6_NI_REPLY - 128] = ICMPV6_NI_REPLY +1 69 }; 70 71 - __u8 type = orig->dst.u.icmp.type - 128; 72 - if (type >= sizeof(invmap) || !invmap[type]) 73 return 0; 74 75 tuple->src.u.icmp.id = orig->src.u.icmp.id; ··· 129 [ICMPV6_ECHO_REQUEST - 128] = 1, 130 [ICMPV6_NI_QUERY - 128] = 1 131 }; 132 133 - if (conntrack->tuplehash[0].tuple.dst.u.icmp.type - 128 >= sizeof(valid_new) 134 - || !valid_new[conntrack->tuplehash[0].tuple.dst.u.icmp.type - 128]) { 135 /* Can't create a new ICMPv6 `conn' with this. */ 136 - DEBUGP("icmp: can't create new conn with type %u\n", 137 - conntrack->tuplehash[0].tuple.dst.u.icmp.type); 138 NF_CT_DUMP_TUPLE(&conntrack->tuplehash[0].tuple); 139 return 0; 140 }
··· 68 [ICMPV6_NI_REPLY - 128] = ICMPV6_NI_REPLY +1 69 }; 70 71 + int type = orig->dst.u.icmp.type - 128; 72 + if (type < 0 || type >= sizeof(invmap) || !invmap[type]) 73 return 0; 74 75 tuple->src.u.icmp.id = orig->src.u.icmp.id; ··· 129 [ICMPV6_ECHO_REQUEST - 128] = 1, 130 [ICMPV6_NI_QUERY - 128] = 1 131 }; 132 + int type = conntrack->tuplehash[0].tuple.dst.u.icmp.type - 128; 133 134 + if (type < 0 || type >= sizeof(valid_new) || !valid_new[type]) { 135 /* Can't create a new ICMPv6 `conn' with this. */ 136 + DEBUGP("icmpv6: can't create new conn with type %u\n", 137 + type + 128); 138 NF_CT_DUMP_TUPLE(&conntrack->tuplehash[0].tuple); 139 return 0; 140 }
+2 -2
net/netfilter/Kconfig
··· 61 instead of the individual packets. 62 63 config NF_CONNTRACK_EVENTS 64 - bool "Connection tracking events" 65 - depends on NF_CONNTRACK 66 help 67 If this option is enabled, the connection tracking code will 68 provide a notifier chain that can be used by other kernel code
··· 61 instead of the individual packets. 62 63 config NF_CONNTRACK_EVENTS 64 + bool "Connection tracking events (EXPERIMENTAL)" 65 + depends on EXPERIMENTAL && NF_CONNTRACK 66 help 67 If this option is enabled, the connection tracking code will 68 provide a notifier chain that can be used by other kernel code
+3
net/netfilter/nf_conntrack_core.c
··· 1383 schedule(); 1384 goto i_see_dead_people; 1385 } 1386 1387 for (i = 0; i < NF_CT_F_NUM; i++) { 1388 if (nf_ct_cache[i].use == 0)
··· 1383 schedule(); 1384 goto i_see_dead_people; 1385 } 1386 + /* wait until all references to nf_conntrack_untracked are dropped */ 1387 + while (atomic_read(&nf_conntrack_untracked.ct_general.use) > 1) 1388 + schedule(); 1389 1390 for (i = 0; i < NF_CT_F_NUM; i++) { 1391 if (nf_ct_cache[i].use == 0)
+2 -3
net/netfilter/nfnetlink.c
··· 162 return -EINVAL; 163 } 164 165 - min_len = NLMSG_ALIGN(sizeof(struct nfgenmsg)); 166 if (unlikely(nlh->nlmsg_len < min_len)) 167 return -EINVAL; 168 ··· 236 } 237 238 /* All the messages must at least contain nfgenmsg */ 239 - if (nlh->nlmsg_len < 240 - NLMSG_LENGTH(NLMSG_ALIGN(sizeof(struct nfgenmsg)))) { 241 DEBUGP("received message was too short\n"); 242 return 0; 243 }
··· 162 return -EINVAL; 163 } 164 165 + min_len = NLMSG_SPACE(sizeof(struct nfgenmsg)); 166 if (unlikely(nlh->nlmsg_len < min_len)) 167 return -EINVAL; 168 ··· 236 } 237 238 /* All the messages must at least contain nfgenmsg */ 239 + if (nlh->nlmsg_len < NLMSG_SPACE(sizeof(struct nfgenmsg))) { 240 DEBUGP("received message was too short\n"); 241 return 0; 242 }
+61 -54
net/packet/af_packet.c
··· 1587 return virt_to_page(one_pg_vec + (PAGE_SIZE << order) - 1); 1588 } 1589 1590 - static void free_pg_vec(char **pg_vec, unsigned order, unsigned len) 1591 { 1592 int i; 1593 1594 - for (i=0; i<len; i++) { 1595 - if (pg_vec[i]) { 1596 - struct page *page, *pend; 1597 - 1598 - pend = pg_vec_endpage(pg_vec[i], order); 1599 - for (page = virt_to_page(pg_vec[i]); page <= pend; page++) 1600 - ClearPageReserved(page); 1601 - free_pages((unsigned long)pg_vec[i], order); 1602 - } 1603 } 1604 kfree(pg_vec); 1605 } 1606 1607 1608 static int packet_set_ring(struct sock *sk, struct tpacket_req *req, int closing) 1609 { ··· 1641 1642 /* Sanity tests and some calculations */ 1643 1644 - if (po->pg_vec) 1645 return -EBUSY; 1646 1647 - if ((int)req->tp_block_size <= 0) 1648 return -EINVAL; 1649 - if (req->tp_block_size&(PAGE_SIZE-1)) 1650 return -EINVAL; 1651 - if (req->tp_frame_size < TPACKET_HDRLEN) 1652 return -EINVAL; 1653 - if (req->tp_frame_size&(TPACKET_ALIGNMENT-1)) 1654 return -EINVAL; 1655 1656 po->frames_per_block = req->tp_block_size/req->tp_frame_size; 1657 - if (po->frames_per_block <= 0) 1658 return -EINVAL; 1659 - if (po->frames_per_block*req->tp_block_nr != req->tp_frame_nr) 1660 return -EINVAL; 1661 - /* OK! */ 1662 - 1663 - /* Allocate page vector */ 1664 - while ((PAGE_SIZE<<order) < req->tp_block_size) 1665 - order++; 1666 1667 err = -ENOMEM; 1668 - 1669 - pg_vec = kmalloc(req->tp_block_nr*sizeof(char *), GFP_KERNEL); 1670 - if (pg_vec == NULL) 1671 goto out; 1672 - memset(pg_vec, 0, req->tp_block_nr*sizeof(char **)); 1673 - 1674 - for (i=0; i<req->tp_block_nr; i++) { 1675 - struct page *page, *pend; 1676 - pg_vec[i] = (char *)__get_free_pages(GFP_KERNEL, order); 1677 - if (!pg_vec[i]) 1678 - goto out_free_pgvec; 1679 - 1680 - pend = pg_vec_endpage(pg_vec[i], order); 1681 - for (page = virt_to_page(pg_vec[i]); page <= pend; page++) 1682 - SetPageReserved(page); 1683 - } 1684 - /* Page vector is allocated */ 1685 1686 l = 0; 1687 - for (i=0; i<req->tp_block_nr; i++) { 1688 char *ptr = pg_vec[i]; 1689 struct tpacket_hdr *header; 1690 int k; 1691 1692 - for (k=0; k<po->frames_per_block; k++) { 1693 - 1694 - header = (struct tpacket_hdr*)ptr; 1695 header->tp_status = TP_STATUS_KERNEL; 1696 ptr += req->tp_frame_size; 1697 } 1698 } 1699 /* Done */ 1700 } else { 1701 - if (req->tp_frame_nr) 1702 return -EINVAL; 1703 } 1704 ··· 1707 1708 spin_lock_bh(&sk->sk_receive_queue.lock); 1709 pg_vec = XC(po->pg_vec, pg_vec); 1710 - po->frame_max = req->tp_frame_nr-1; 1711 po->head = 0; 1712 po->frame_size = req->tp_frame_size; 1713 spin_unlock_bh(&sk->sk_receive_queue.lock); ··· 1734 1735 release_sock(sk); 1736 1737 - out_free_pgvec: 1738 if (pg_vec) 1739 free_pg_vec(pg_vec, order, req->tp_block_nr); 1740 out: ··· 1760 if (size != po->pg_vec_len*po->pg_vec_pages*PAGE_SIZE) 1761 goto out; 1762 1763 - atomic_inc(&po->mapped); 1764 start = vma->vm_start; 1765 - err = -EAGAIN; 1766 - for (i=0; i<po->pg_vec_len; i++) { 1767 - if (remap_pfn_range(vma, start, 1768 - __pa(po->pg_vec[i]) >> PAGE_SHIFT, 1769 - po->pg_vec_pages*PAGE_SIZE, 1770 - vma->vm_page_prot)) 1771 - goto out; 1772 - start += po->pg_vec_pages*PAGE_SIZE; 1773 } 1774 vma->vm_ops = &packet_mmap_ops; 1775 err = 0; 1776
··· 1587 return virt_to_page(one_pg_vec + (PAGE_SIZE << order) - 1); 1588 } 1589 1590 + static void free_pg_vec(char **pg_vec, unsigned int order, unsigned int len) 1591 { 1592 int i; 1593 1594 + for (i = 0; i < len; i++) { 1595 + if (likely(pg_vec[i])) 1596 + free_pages((unsigned long) pg_vec[i], order); 1597 } 1598 kfree(pg_vec); 1599 } 1600 1601 + static inline char *alloc_one_pg_vec_page(unsigned long order) 1602 + { 1603 + return (char *) __get_free_pages(GFP_KERNEL | __GFP_COMP | __GFP_ZERO, 1604 + order); 1605 + } 1606 + 1607 + static char **alloc_pg_vec(struct tpacket_req *req, int order) 1608 + { 1609 + unsigned int block_nr = req->tp_block_nr; 1610 + char **pg_vec; 1611 + int i; 1612 + 1613 + pg_vec = kzalloc(block_nr * sizeof(char *), GFP_KERNEL); 1614 + if (unlikely(!pg_vec)) 1615 + goto out; 1616 + 1617 + for (i = 0; i < block_nr; i++) { 1618 + pg_vec[i] = alloc_one_pg_vec_page(order); 1619 + if (unlikely(!pg_vec[i])) 1620 + goto out_free_pgvec; 1621 + } 1622 + 1623 + out: 1624 + return pg_vec; 1625 + 1626 + out_free_pgvec: 1627 + free_pg_vec(pg_vec, order, block_nr); 1628 + pg_vec = NULL; 1629 + goto out; 1630 + } 1631 1632 static int packet_set_ring(struct sock *sk, struct tpacket_req *req, int closing) 1633 { ··· 1617 1618 /* Sanity tests and some calculations */ 1619 1620 + if (unlikely(po->pg_vec)) 1621 return -EBUSY; 1622 1623 + if (unlikely((int)req->tp_block_size <= 0)) 1624 return -EINVAL; 1625 + if (unlikely(req->tp_block_size & (PAGE_SIZE - 1))) 1626 return -EINVAL; 1627 + if (unlikely(req->tp_frame_size < TPACKET_HDRLEN)) 1628 return -EINVAL; 1629 + if (unlikely(req->tp_frame_size & (TPACKET_ALIGNMENT - 1))) 1630 return -EINVAL; 1631 1632 po->frames_per_block = req->tp_block_size/req->tp_frame_size; 1633 + if (unlikely(po->frames_per_block <= 0)) 1634 return -EINVAL; 1635 + if (unlikely((po->frames_per_block * req->tp_block_nr) != 1636 + req->tp_frame_nr)) 1637 return -EINVAL; 1638 1639 err = -ENOMEM; 1640 + order = get_order(req->tp_block_size); 1641 + pg_vec = alloc_pg_vec(req, order); 1642 + if (unlikely(!pg_vec)) 1643 goto out; 1644 1645 l = 0; 1646 + for (i = 0; i < req->tp_block_nr; i++) { 1647 char *ptr = pg_vec[i]; 1648 struct tpacket_hdr *header; 1649 int k; 1650 1651 + for (k = 0; k < po->frames_per_block; k++) { 1652 + header = (struct tpacket_hdr *) ptr; 1653 header->tp_status = TP_STATUS_KERNEL; 1654 ptr += req->tp_frame_size; 1655 } 1656 } 1657 /* Done */ 1658 } else { 1659 + if (unlikely(req->tp_frame_nr)) 1660 return -EINVAL; 1661 } 1662 ··· 1701 1702 spin_lock_bh(&sk->sk_receive_queue.lock); 1703 pg_vec = XC(po->pg_vec, pg_vec); 1704 + po->frame_max = (req->tp_frame_nr - 1); 1705 po->head = 0; 1706 po->frame_size = req->tp_frame_size; 1707 spin_unlock_bh(&sk->sk_receive_queue.lock); ··· 1728 1729 release_sock(sk); 1730 1731 if (pg_vec) 1732 free_pg_vec(pg_vec, order, req->tp_block_nr); 1733 out: ··· 1755 if (size != po->pg_vec_len*po->pg_vec_pages*PAGE_SIZE) 1756 goto out; 1757 1758 start = vma->vm_start; 1759 + for (i = 0; i < po->pg_vec_len; i++) { 1760 + struct page *page = virt_to_page(po->pg_vec[i]); 1761 + int pg_num; 1762 + 1763 + for (pg_num = 0; pg_num < po->pg_vec_pages; pg_num++, page++) { 1764 + err = vm_insert_page(vma, start, page); 1765 + if (unlikely(err)) 1766 + goto out; 1767 + start += PAGE_SIZE; 1768 + } 1769 } 1770 + atomic_inc(&po->mapped); 1771 vma->vm_ops = &packet_mmap_ops; 1772 err = 0; 1773