aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/acpi/pci_link.c2
-rw-r--r--drivers/atm/adummy.c2
-rw-r--r--drivers/base/memory.c1
-rw-r--r--drivers/block/cciss.c7
-rw-r--r--drivers/char/Kconfig20
-rw-r--r--drivers/char/drm/radeon_cp.c11
-rw-r--r--drivers/char/drm/radeon_drv.h1
-rw-r--r--drivers/char/ipmi/ipmi_msghandler.c2
-rw-r--r--drivers/char/ipmi/ipmi_si_intf.c6
-rw-r--r--drivers/char/mwave/mwavepub.h2
-rw-r--r--drivers/char/pcmcia/cm4000_cs.c13
-rw-r--r--drivers/char/watchdog/booke_wdt.c15
-rw-r--r--drivers/char/watchdog/mpcore_wdt.c4
-rw-r--r--drivers/char/watchdog/wdrtas.c2
-rw-r--r--drivers/connector/cn_proc.c5
-rw-r--r--drivers/firmware/dell_rbu.c6
-rw-r--r--drivers/i2c/busses/i2c-mv64xxx.c11
-rw-r--r--drivers/ide/Kconfig10
-rw-r--r--drivers/ide/ide-cd.c7
-rw-r--r--drivers/ide/ide-cd.h1
-rw-r--r--drivers/ide/ide-disk.c4
-rw-r--r--drivers/ide/ide-dma.c15
-rw-r--r--drivers/ide/mips/Makefile3
-rw-r--r--drivers/ide/mips/au1xxx-ide.c1498
-rw-r--r--drivers/ide/pci/sgiioc4.c8
-rw-r--r--drivers/ide/pci/via82cxxx.c1
-rw-r--r--drivers/ieee1394/hosts.h1
-rw-r--r--drivers/ieee1394/nodemgr.c67
-rw-r--r--drivers/input/misc/wistron_btns.c2
-rw-r--r--drivers/input/mouse/alps.c2
-rw-r--r--drivers/macintosh/therm_pm72.c2
-rw-r--r--drivers/macintosh/windfarm_pm81.c4
-rw-r--r--drivers/md/md.c2
-rw-r--r--drivers/md/raid1.c5
-rw-r--r--drivers/md/raid5.c7
-rw-r--r--drivers/media/common/Kconfig6
-rw-r--r--drivers/media/common/Makefile4
-rw-r--r--drivers/media/common/ir-common.c1
-rw-r--r--drivers/media/common/saa7146_core.c6
-rw-r--r--drivers/media/common/saa7146_fops.c32
-rw-r--r--drivers/media/common/saa7146_i2c.c16
-rw-r--r--drivers/media/common/saa7146_vbi.c4
-rw-r--r--drivers/media/common/saa7146_video.c46
-rw-r--r--drivers/media/dvb/b2c2/flexcop-common.h2
-rw-r--r--drivers/media/dvb/b2c2/flexcop-fe-tuner.c4
-rw-r--r--drivers/media/dvb/bt8xx/dst_ca.c6
-rw-r--r--drivers/media/dvb/bt8xx/dvb-bt8xx.c6
-rw-r--r--drivers/media/dvb/dvb-core/demux.h92
-rw-r--r--drivers/media/dvb/dvb-core/dmxdev.c2
-rw-r--r--drivers/media/dvb/dvb-core/dmxdev.h64
-rw-r--r--drivers/media/dvb/dvb-core/dvb_ca_en50221.c2
-rw-r--r--drivers/media/dvb/dvb-core/dvb_filter.c332
-rw-r--r--drivers/media/dvb/dvb-core/dvb_filter.h102
-rw-r--r--drivers/media/dvb/dvb-core/dvb_frontend.c8
-rw-r--r--drivers/media/dvb/dvb-core/dvb_frontend.h8
-rw-r--r--drivers/media/dvb/dvb-core/dvb_net.c42
-rw-r--r--drivers/media/dvb/dvb-core/dvb_ringbuffer.c262
-rw-r--r--drivers/media/dvb/dvb-core/dvb_ringbuffer.h20
-rw-r--r--drivers/media/dvb/dvb-core/dvbdev.c142
-rw-r--r--drivers/media/dvb/dvb-core/dvbdev.h6
-rw-r--r--drivers/media/dvb/dvb-usb/vp702x-fe.c2
-rw-r--r--drivers/media/dvb/dvb-usb/vp7045-fe.c2
-rw-r--r--drivers/media/dvb/frontends/at76c651.c6
-rw-r--r--drivers/media/dvb/frontends/bcm3510.c4
-rw-r--r--drivers/media/dvb/frontends/cx22700.c10
-rw-r--r--drivers/media/dvb/frontends/cx22702.c2
-rw-r--r--drivers/media/dvb/frontends/cx22702.h2
-rw-r--r--drivers/media/dvb/frontends/cx24110.c312
-rw-r--r--drivers/media/dvb/frontends/l64781.c26
-rw-r--r--drivers/media/dvb/frontends/l64781.h2
-rw-r--r--drivers/media/dvb/frontends/lgdt330x.c8
-rw-r--r--drivers/media/dvb/frontends/mt312.c4
-rw-r--r--drivers/media/dvb/frontends/nxt2002.c6
-rw-r--r--drivers/media/dvb/frontends/nxt200x.c4
-rw-r--r--drivers/media/dvb/frontends/nxt6000.c10
-rw-r--r--drivers/media/dvb/frontends/or51132.c2
-rw-r--r--drivers/media/dvb/frontends/s5h1420.c6
-rw-r--r--drivers/media/dvb/frontends/s5h1420.h2
-rw-r--r--drivers/media/dvb/frontends/sp8870.c16
-rw-r--r--drivers/media/dvb/frontends/sp887x.c14
-rw-r--r--drivers/media/dvb/frontends/stv0299.c36
-rw-r--r--drivers/media/dvb/frontends/tda10021.c10
-rw-r--r--drivers/media/dvb/frontends/tda10021.h4
-rw-r--r--drivers/media/dvb/frontends/tda1004x.c2
-rw-r--r--drivers/media/dvb/frontends/tda8083.c20
-rw-r--r--drivers/media/dvb/ttpci/av7110.c29
-rw-r--r--drivers/media/dvb/ttpci/av7110_hw.c20
-rw-r--r--drivers/media/dvb/ttpci/av7110_hw.h3
-rw-r--r--drivers/media/dvb/ttpci/av7110_v4l.c4
-rw-r--r--drivers/media/dvb/ttpci/budget-core.c2
-rw-r--r--drivers/media/dvb/ttpci/budget-patch.c326
-rw-r--r--drivers/media/dvb/ttpci/budget.c6
-rw-r--r--drivers/media/dvb/ttpci/budget.h2
-rw-r--r--drivers/media/dvb/ttpci/fdump.c2
-rw-r--r--drivers/media/dvb/ttpci/ttpci-eeprom.c40
-rw-r--r--drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c128
-rw-r--r--drivers/media/dvb/ttusb-budget/dvb-ttusb-dspbootcode.h3276
-rw-r--r--drivers/media/dvb/ttusb-dec/ttusb_dec.c4
-rw-r--r--drivers/media/video/Kconfig14
-rw-r--r--drivers/media/video/bt832.c14
-rw-r--r--drivers/media/video/bttv-driver.c82
-rw-r--r--drivers/media/video/bttvp.h1
-rw-r--r--drivers/media/video/cx25840/cx25840-core.c42
-rw-r--r--drivers/media/video/cx88/cx88-blackbird.c2
-rw-r--r--drivers/media/video/cx88/cx88-input.c2
-rw-r--r--drivers/media/video/cx88/cx88.h1
-rw-r--r--drivers/media/video/em28xx/em28xx-core.c50
-rw-r--r--drivers/media/video/em28xx/em28xx-i2c.c2
-rw-r--r--drivers/media/video/em28xx/em28xx-video.c21
-rw-r--r--drivers/media/video/ir-kbd-gpio.c8
-rw-r--r--drivers/media/video/ir-kbd-i2c.c11
-rw-r--r--drivers/media/video/msp3400.c18
-rw-r--r--drivers/media/video/saa6588.c1
-rw-r--r--drivers/media/video/saa711x.c2
-rw-r--r--drivers/media/video/saa7134/saa6752hs.c17
-rw-r--r--drivers/media/video/saa7134/saa7134-alsa.c16
-rw-r--r--drivers/media/video/saa7134/saa7134-cards.c2
-rw-r--r--drivers/media/video/saa7134/saa7134-core.c1
-rw-r--r--drivers/media/video/saa7134/saa7134-empress.c1
-rw-r--r--drivers/media/video/saa7134/saa7134-i2c.c2
-rw-r--r--drivers/media/video/saa7134/saa7134-oss.c93
-rw-r--r--drivers/media/video/tda9887.c15
-rw-r--r--drivers/media/video/tvaudio.c30
-rw-r--r--drivers/media/video/tveeprom.c5
-rw-r--r--drivers/media/video/tvp5150.c3
-rw-r--r--drivers/media/video/video-buf-dvb.c2
-rw-r--r--drivers/message/i2o/pci.c6
-rw-r--r--drivers/mfd/ucb1x00-ts.c19
-rw-r--r--drivers/mmc/mmc.c15
-rw-r--r--drivers/mtd/devices/blkmtd.c8
-rw-r--r--drivers/mtd/onenand/generic.c4
-rw-r--r--drivers/mtd/onenand/onenand_base.c53
-rw-r--r--drivers/mtd/onenand/onenand_bbt.c4
-rw-r--r--drivers/net/pcnet32.c5
-rw-r--r--drivers/net/s2io.c10
-rw-r--r--drivers/net/sk98lin/skge.c4
-rw-r--r--drivers/net/skge.c10
-rw-r--r--drivers/net/tg3.c257
-rw-r--r--drivers/net/tg3.h7
-rw-r--r--drivers/pci/Makefile7
-rw-r--r--drivers/sbus/char/jsflash.c19
-rw-r--r--drivers/sbus/char/uctrl.c10
-rw-r--r--drivers/sbus/char/vfc.h2
-rw-r--r--drivers/sbus/char/vfc_dev.c6
-rw-r--r--drivers/scsi/dpt_i2o.c25
-rw-r--r--drivers/scsi/ibmvscsi/ibmvscsi.h2
-rw-r--r--drivers/scsi/ibmvscsi/iseries_vscsi.c3
-rw-r--r--drivers/scsi/ibmvscsi/rpa_vscsi.c8
-rw-r--r--drivers/scsi/iscsi_tcp.c2
-rw-r--r--drivers/scsi/libata-core.c4
-rw-r--r--drivers/scsi/libata-scsi.c7
-rw-r--r--drivers/scsi/megaraid.c2
-rw-r--r--drivers/scsi/qla2xxx/qla_def.h10
-rw-r--r--drivers/scsi/qla2xxx/qla_init.c6
-rw-r--r--drivers/scsi/qla2xxx/qla_isr.c15
-rw-r--r--drivers/scsi/sata_mv.c3
-rw-r--r--drivers/scsi/sata_promise.c12
-rw-r--r--drivers/scsi/sata_sx4.c3
-rw-r--r--drivers/scsi/scsi_error.c7
-rw-r--r--drivers/scsi/scsi_lib.c42
-rw-r--r--drivers/scsi/scsi_scan.c3
-rw-r--r--drivers/scsi/scsi_transport_iscsi.c2
-rw-r--r--drivers/scsi/sd.c16
-rw-r--r--drivers/scsi/sr.c20
-rw-r--r--drivers/scsi/st.c19
-rw-r--r--drivers/scsi/sym53c8xx_2/sym_hipd.c4
-rw-r--r--drivers/serial/8250_pci.c2
-rw-r--r--drivers/usb/host/uhci-hcd.c2
-rw-r--r--drivers/usb/input/hid-core.c4
-rw-r--r--drivers/usb/input/hid-input.c1
-rw-r--r--drivers/usb/misc/auerswald.c2
-rw-r--r--drivers/video/arcfb.c2
-rw-r--r--drivers/video/bw2.c1
-rw-r--r--drivers/video/cfbcopyarea.c8
-rw-r--r--drivers/video/cfbfillrect.c16
-rw-r--r--drivers/video/cfbimgblt.c35
-rw-r--r--drivers/video/cg14.c1
-rw-r--r--drivers/video/cg3.c1
-rw-r--r--drivers/video/cg6.c3
-rw-r--r--drivers/video/console/fbcon.c42
-rw-r--r--drivers/video/console/fbcon_ud.c8
-rw-r--r--drivers/video/cyber2000fb.c4
-rw-r--r--drivers/video/fbmem.c26
-rw-r--r--drivers/video/ffb.c1
-rw-r--r--drivers/video/intelfb/intelfb.h5
-rw-r--r--drivers/video/intelfb/intelfbdrv.c51
-rw-r--r--drivers/video/leo.c1
-rw-r--r--drivers/video/p9100.c1
-rw-r--r--drivers/video/pxafb.c3
-rw-r--r--drivers/video/tcx.c3
190 files changed, 4200 insertions, 4460 deletions
diff --git a/drivers/acpi/pci_link.c b/drivers/acpi/pci_link.c
index 82292b77e5c6..78927c0f1551 100644
--- a/drivers/acpi/pci_link.c
+++ b/drivers/acpi/pci_link.c
@@ -316,7 +316,7 @@ static int acpi_pci_link_set(struct acpi_pci_link *link, int irq)
316 if (!link || !irq) 316 if (!link || !irq)
317 return_VALUE(-EINVAL); 317 return_VALUE(-EINVAL);
318 318
319 resource = kmalloc(sizeof(*resource) + 1, GFP_KERNEL); 319 resource = kmalloc(sizeof(*resource) + 1, GFP_ATOMIC);
320 if (!resource) 320 if (!resource)
321 return_VALUE(-ENOMEM); 321 return_VALUE(-ENOMEM);
322 322
diff --git a/drivers/atm/adummy.c b/drivers/atm/adummy.c
index d15c194be44a..d1387cfe2d30 100644
--- a/drivers/atm/adummy.c
+++ b/drivers/atm/adummy.c
@@ -123,7 +123,7 @@ static int __init adummy_init(void)
123 } 123 }
124 memset(adummy_dev, 0, sizeof(struct adummy_dev)); 124 memset(adummy_dev, 0, sizeof(struct adummy_dev));
125 125
126 atm_dev = atm_dev_register(DEV_LABEL, &adummy_ops, -1, 0); 126 atm_dev = atm_dev_register(DEV_LABEL, &adummy_ops, -1, NULL);
127 if (!atm_dev) { 127 if (!atm_dev) {
128 printk(KERN_ERR DEV_LABEL ": atm_dev_register() failed\n"); 128 printk(KERN_ERR DEV_LABEL ": atm_dev_register() failed\n");
129 err = -ENODEV; 129 err = -ENODEV;
diff --git a/drivers/base/memory.c b/drivers/base/memory.c
index b7ddd651d664..bc3ca6a656b2 100644
--- a/drivers/base/memory.c
+++ b/drivers/base/memory.c
@@ -28,7 +28,6 @@
28static struct sysdev_class memory_sysdev_class = { 28static struct sysdev_class memory_sysdev_class = {
29 set_kset_name(MEMORY_CLASS_NAME), 29 set_kset_name(MEMORY_CLASS_NAME),
30}; 30};
31EXPORT_SYMBOL(memory_sysdev_class);
32 31
33static char *memory_hotplug_name(struct kset *kset, struct kobject *kobj) 32static char *memory_hotplug_name(struct kset *kset, struct kobject *kobj)
34{ 33{
diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
index a9e33db46e68..c3441b3f086e 100644
--- a/drivers/block/cciss.c
+++ b/drivers/block/cciss.c
@@ -1146,7 +1146,6 @@ static int revalidate_allvol(ctlr_info_t *host)
1146 del_gendisk(disk); 1146 del_gendisk(disk);
1147 if (q) 1147 if (q)
1148 blk_cleanup_queue(q); 1148 blk_cleanup_queue(q);
1149 put_disk(disk);
1150 } 1149 }
1151 } 1150 }
1152 1151
@@ -1465,9 +1464,10 @@ static int deregister_disk(struct gendisk *disk, drive_info_struct *drv,
1465 request_queue_t *q = disk->queue; 1464 request_queue_t *q = disk->queue;
1466 if (disk->flags & GENHD_FL_UP) 1465 if (disk->flags & GENHD_FL_UP)
1467 del_gendisk(disk); 1466 del_gendisk(disk);
1468 if (q) 1467 if (q) {
1469 blk_cleanup_queue(q); 1468 blk_cleanup_queue(q);
1470 put_disk(disk); 1469 drv->queue = NULL;
1470 }
1471 } 1471 }
1472 } 1472 }
1473 1473
@@ -3243,7 +3243,6 @@ static void __devexit cciss_remove_one (struct pci_dev *pdev)
3243 del_gendisk(disk); 3243 del_gendisk(disk);
3244 if (q) 3244 if (q)
3245 blk_cleanup_queue(q); 3245 blk_cleanup_queue(q);
3246 put_disk(disk);
3247 } 3246 }
3248 } 3247 }
3249 3248
diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig
index 970f70d498f4..696f72787fe8 100644
--- a/drivers/char/Kconfig
+++ b/drivers/char/Kconfig
@@ -687,7 +687,7 @@ config NVRAM
687 687
688config RTC 688config RTC
689 tristate "Enhanced Real Time Clock Support" 689 tristate "Enhanced Real Time Clock Support"
690 depends on !PPC32 && !PARISC && !IA64 && !M68K 690 depends on !PPC32 && !PARISC && !IA64 && !M68K && (!(SPARC32 || SPARC64) || PCI)
691 ---help--- 691 ---help---
692 If you say Y here and create a character special file /dev/rtc with 692 If you say Y here and create a character special file /dev/rtc with
693 major number 10 and minor number 135 using mknod ("man mknod"), you 693 major number 10 and minor number 135 using mknod ("man mknod"), you
@@ -943,6 +943,15 @@ config RAW_DRIVER
943 Applications should simply open the device (eg /dev/hda1) 943 Applications should simply open the device (eg /dev/hda1)
944 with the O_DIRECT flag. 944 with the O_DIRECT flag.
945 945
946config 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
946config HPET 955config HPET
947 bool "HPET - High Precision Event Timer" if (X86 || IA64) 956 bool "HPET - High Precision Event Timer" if (X86 || IA64)
948 default n 957 default n
@@ -974,15 +983,6 @@ config HPET_MMAP
974 exposed to the user. If this applies to your hardware, 983 exposed to the user. If this applies to your hardware,
975 say N here. 984 say N here.
976 985
977config MAX_RAW_DEVS
978 int "Maximum number of RAW devices to support (1-8192)"
979 depends on RAW_DRIVER
980 default "256"
981 help
982 The maximum number of RAW devices that are supported.
983 Default is 256. Increase this number in case you need lots of
984 raw devices.
985
986config HANGCHECK_TIMER 986config HANGCHECK_TIMER
987 tristate "Hangcheck timer" 987 tristate "Hangcheck timer"
988 depends on X86 || IA64 || PPC64 || ARCH_S390 988 depends on X86 || IA64 || PPC64 || ARCH_S390
diff --git a/drivers/char/drm/radeon_cp.c b/drivers/char/drm/radeon_cp.c
index 03839ea31092..501e557cbc86 100644
--- a/drivers/char/drm/radeon_cp.c
+++ b/drivers/char/drm/radeon_cp.c
@@ -1311,7 +1311,9 @@ static void radeon_set_pcigart(drm_radeon_private_t * dev_priv, int on)
1311 1311
1312static int radeon_do_init_cp(drm_device_t * dev, drm_radeon_init_t * init) 1312static int radeon_do_init_cp(drm_device_t * dev, drm_radeon_init_t * init)
1313{ 1313{
1314 drm_radeon_private_t *dev_priv = dev->dev_private;; 1314 drm_radeon_private_t *dev_priv = dev->dev_private;
1315 unsigned int mem_size;
1316
1315 DRM_DEBUG("\n"); 1317 DRM_DEBUG("\n");
1316 1318
1317 dev_priv->is_pci = init->is_pci; 1319 dev_priv->is_pci = init->is_pci;
@@ -1521,8 +1523,11 @@ static int radeon_do_init_cp(drm_device_t * dev, drm_radeon_init_t * init)
1521 + dev_priv->fb_location) >> 10)); 1523 + dev_priv->fb_location) >> 10));
1522 1524
1523 dev_priv->gart_size = init->gart_size; 1525 dev_priv->gart_size = init->gart_size;
1524 dev_priv->gart_vm_start = dev_priv->fb_location 1526
1525 + RADEON_READ(RADEON_CONFIG_APER_SIZE); 1527 mem_size = RADEON_READ(RADEON_CONFIG_MEMSIZE);
1528 if (mem_size == 0)
1529 mem_size = 0x800000;
1530 dev_priv->gart_vm_start = dev_priv->fb_location + mem_size;
1526 1531
1527#if __OS_HAS_AGP 1532#if __OS_HAS_AGP
1528 if (!dev_priv->is_pci) 1533 if (!dev_priv->is_pci)
diff --git a/drivers/char/drm/radeon_drv.h b/drivers/char/drm/radeon_drv.h
index 7bda7e33d2bd..d92ccee3e54c 100644
--- a/drivers/char/drm/radeon_drv.h
+++ b/drivers/char/drm/radeon_drv.h
@@ -379,6 +379,7 @@ extern int r300_do_cp_cmdbuf(drm_device_t * dev, DRMFILE filp,
379# define RADEON_PLL_WR_EN (1 << 7) 379# define RADEON_PLL_WR_EN (1 << 7)
380#define RADEON_CLOCK_CNTL_INDEX 0x0008 380#define RADEON_CLOCK_CNTL_INDEX 0x0008
381#define RADEON_CONFIG_APER_SIZE 0x0108 381#define RADEON_CONFIG_APER_SIZE 0x0108
382#define RADEON_CONFIG_MEMSIZE 0x00f8
382#define RADEON_CRTC_OFFSET 0x0224 383#define RADEON_CRTC_OFFSET 0x0224
383#define RADEON_CRTC_OFFSET_CNTL 0x0228 384#define RADEON_CRTC_OFFSET_CNTL 0x0228
384# define RADEON_CRTC_TILE_EN (1 << 15) 385# define RADEON_CRTC_TILE_EN (1 << 15)
diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c
index 6b302a930e5f..1f56b4cf0f58 100644
--- a/drivers/char/ipmi/ipmi_msghandler.c
+++ b/drivers/char/ipmi/ipmi_msghandler.c
@@ -2986,7 +2986,7 @@ static void send_panic_events(char *str)
2986 msg.cmd = 2; /* Platform event command. */ 2986 msg.cmd = 2; /* Platform event command. */
2987 msg.data = data; 2987 msg.data = data;
2988 msg.data_len = 8; 2988 msg.data_len = 8;
2989 data[0] = 0x21; /* Kernel generator ID, IPMI table 5-4 */ 2989 data[0] = 0x41; /* Kernel generator ID, IPMI table 5-4 */
2990 data[1] = 0x03; /* This is for IPMI 1.0. */ 2990 data[1] = 0x03; /* This is for IPMI 1.0. */
2991 data[2] = 0x20; /* OS Critical Stop, IPMI table 36-3 */ 2991 data[2] = 0x20; /* OS Critical Stop, IPMI table 36-3 */
2992 data[4] = 0x6f; /* Sensor specific, IPMI table 36-1 */ 2992 data[4] = 0x6f; /* Sensor specific, IPMI table 36-1 */
diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c
index 01a1f6badb53..beea450ee4b2 100644
--- a/drivers/char/ipmi/ipmi_si_intf.c
+++ b/drivers/char/ipmi/ipmi_si_intf.c
@@ -2399,7 +2399,8 @@ static int init_one_smi(int intf_num, struct smi_info **smi)
2399 new_smi->handlers->cleanup(new_smi->si_sm); 2399 new_smi->handlers->cleanup(new_smi->si_sm);
2400 kfree(new_smi->si_sm); 2400 kfree(new_smi->si_sm);
2401 } 2401 }
2402 new_smi->io_cleanup(new_smi); 2402 if (new_smi->io_cleanup)
2403 new_smi->io_cleanup(new_smi);
2403 2404
2404 return rv; 2405 return rv;
2405} 2406}
@@ -2518,7 +2519,8 @@ static void __exit cleanup_one_si(struct smi_info *to_clean)
2518 2519
2519 kfree(to_clean->si_sm); 2520 kfree(to_clean->si_sm);
2520 2521
2521 to_clean->io_cleanup(to_clean); 2522 if (to_clean->io_cleanup)
2523 to_clean->io_cleanup(to_clean);
2522} 2524}
2523 2525
2524static __exit void cleanup_ipmi_si(void) 2526static __exit void cleanup_ipmi_si(void)
diff --git a/drivers/char/mwave/mwavepub.h b/drivers/char/mwave/mwavepub.h
index f1f9da7a65c1..60c961ae23b4 100644
--- a/drivers/char/mwave/mwavepub.h
+++ b/drivers/char/mwave/mwavepub.h
@@ -69,7 +69,7 @@ typedef struct _MW_ABILITIES {
69typedef struct _MW_READWRITE { 69typedef struct _MW_READWRITE {
70 unsigned short usDspAddress; /* The dsp address */ 70 unsigned short usDspAddress; /* The dsp address */
71 unsigned long ulDataLength; /* The size in bytes of the data or user buffer */ 71 unsigned long ulDataLength; /* The size in bytes of the data or user buffer */
72 void *pBuf; /* Input:variable sized buffer */ 72 void __user *pBuf; /* Input:variable sized buffer */
73} MW_READWRITE, *pMW_READWRITE; 73} MW_READWRITE, *pMW_READWRITE;
74 74
75#define IOCTL_MW_RESET _IO(MWAVE_MINOR,1) 75#define IOCTL_MW_RESET _IO(MWAVE_MINOR,1)
diff --git a/drivers/char/pcmcia/cm4000_cs.c b/drivers/char/pcmcia/cm4000_cs.c
index ef011ef5dc46..61681c9f3f72 100644
--- a/drivers/char/pcmcia/cm4000_cs.c
+++ b/drivers/char/pcmcia/cm4000_cs.c
@@ -1444,6 +1444,7 @@ static int cmm_ioctl(struct inode *inode, struct file *filp, unsigned int cmd,
1444 dev_link_t *link; 1444 dev_link_t *link;
1445 int size; 1445 int size;
1446 int rc; 1446 int rc;
1447 void __user *argp = (void __user *)arg;
1447#ifdef PCMCIA_DEBUG 1448#ifdef PCMCIA_DEBUG
1448 char *ioctl_names[CM_IOC_MAXNR + 1] = { 1449 char *ioctl_names[CM_IOC_MAXNR + 1] = {
1449 [_IOC_NR(CM_IOCGSTATUS)] "CM_IOCGSTATUS", 1450 [_IOC_NR(CM_IOCGSTATUS)] "CM_IOCGSTATUS",
@@ -1481,11 +1482,11 @@ static int cmm_ioctl(struct inode *inode, struct file *filp, unsigned int cmd,
1481 _IOC_DIR(cmd), _IOC_READ, _IOC_WRITE, size, cmd); 1482 _IOC_DIR(cmd), _IOC_READ, _IOC_WRITE, size, cmd);
1482 1483
1483 if (_IOC_DIR(cmd) & _IOC_READ) { 1484 if (_IOC_DIR(cmd) & _IOC_READ) {
1484 if (!access_ok(VERIFY_WRITE, (void *)arg, size)) 1485 if (!access_ok(VERIFY_WRITE, argp, size))
1485 return -EFAULT; 1486 return -EFAULT;
1486 } 1487 }
1487 if (_IOC_DIR(cmd) & _IOC_WRITE) { 1488 if (_IOC_DIR(cmd) & _IOC_WRITE) {
1488 if (!access_ok(VERIFY_READ, (void *)arg, size)) 1489 if (!access_ok(VERIFY_READ, argp, size))
1489 return -EFAULT; 1490 return -EFAULT;
1490 } 1491 }
1491 1492
@@ -1506,14 +1507,14 @@ static int cmm_ioctl(struct inode *inode, struct file *filp, unsigned int cmd,
1506 status |= CM_NO_READER; 1507 status |= CM_NO_READER;
1507 if (test_bit(IS_BAD_CARD, &dev->flags)) 1508 if (test_bit(IS_BAD_CARD, &dev->flags))
1508 status |= CM_BAD_CARD; 1509 status |= CM_BAD_CARD;
1509 if (copy_to_user((int *)arg, &status, sizeof(int))) 1510 if (copy_to_user(argp, &status, sizeof(int)))
1510 return -EFAULT; 1511 return -EFAULT;
1511 } 1512 }
1512 return 0; 1513 return 0;
1513 case CM_IOCGATR: 1514 case CM_IOCGATR:
1514 DEBUGP(4, dev, "... in CM_IOCGATR\n"); 1515 DEBUGP(4, dev, "... in CM_IOCGATR\n");
1515 { 1516 {
1516 struct atreq *atreq = (struct atreq *) arg; 1517 struct atreq __user *atreq = argp;
1517 int tmp; 1518 int tmp;
1518 /* allow nonblocking io and being interrupted */ 1519 /* allow nonblocking io and being interrupted */
1519 if (wait_event_interruptible 1520 if (wait_event_interruptible
@@ -1597,7 +1598,7 @@ static int cmm_ioctl(struct inode *inode, struct file *filp, unsigned int cmd,
1597 { 1598 {
1598 struct ptsreq krnptsreq; 1599 struct ptsreq krnptsreq;
1599 1600
1600 if (copy_from_user(&krnptsreq, (struct ptsreq *) arg, 1601 if (copy_from_user(&krnptsreq, argp,
1601 sizeof(struct ptsreq))) 1602 sizeof(struct ptsreq)))
1602 return -EFAULT; 1603 return -EFAULT;
1603 1604
@@ -1641,7 +1642,7 @@ static int cmm_ioctl(struct inode *inode, struct file *filp, unsigned int cmd,
1641 int old_pc_debug = 0; 1642 int old_pc_debug = 0;
1642 1643
1643 old_pc_debug = pc_debug; 1644 old_pc_debug = pc_debug;
1644 if (copy_from_user(&pc_debug, (int *)arg, sizeof(int))) 1645 if (copy_from_user(&pc_debug, argp, sizeof(int)))
1645 return -EFAULT; 1646 return -EFAULT;
1646 1647
1647 if (old_pc_debug != pc_debug) 1648 if (old_pc_debug != pc_debug)
diff --git a/drivers/char/watchdog/booke_wdt.c b/drivers/char/watchdog/booke_wdt.c
index 65830ec71042..b6640606b44d 100644
--- a/drivers/char/watchdog/booke_wdt.c
+++ b/drivers/char/watchdog/booke_wdt.c
@@ -72,7 +72,7 @@ static __inline__ void booke_wdt_ping(void)
72/* 72/*
73 * booke_wdt_write: 73 * booke_wdt_write:
74 */ 74 */
75static ssize_t booke_wdt_write (struct file *file, const char *buf, 75static ssize_t booke_wdt_write (struct file *file, const char __user *buf,
76 size_t count, loff_t *ppos) 76 size_t count, loff_t *ppos)
77{ 77{
78 booke_wdt_ping(); 78 booke_wdt_ping();
@@ -92,14 +92,15 @@ static int booke_wdt_ioctl (struct inode *inode, struct file *file,
92 unsigned int cmd, unsigned long arg) 92 unsigned int cmd, unsigned long arg)
93{ 93{
94 u32 tmp = 0; 94 u32 tmp = 0;
95 u32 __user *p = (u32 __user *)arg;
95 96
96 switch (cmd) { 97 switch (cmd) {
97 case WDIOC_GETSUPPORT: 98 case WDIOC_GETSUPPORT:
98 if (copy_to_user ((struct watchdog_info *) arg, &ident, 99 if (copy_to_user ((struct watchdog_info __user *) arg, &ident,
99 sizeof(struct watchdog_info))) 100 sizeof(struct watchdog_info)))
100 return -EFAULT; 101 return -EFAULT;
101 case WDIOC_GETSTATUS: 102 case WDIOC_GETSTATUS:
102 return put_user(ident.options, (u32 *) arg); 103 return put_user(ident.options, p);
103 case WDIOC_GETBOOTSTATUS: 104 case WDIOC_GETBOOTSTATUS:
104 /* XXX: something is clearing TSR */ 105 /* XXX: something is clearing TSR */
105 tmp = mfspr(SPRN_TSR) & TSR_WRS(3); 106 tmp = mfspr(SPRN_TSR) & TSR_WRS(3);
@@ -109,14 +110,14 @@ static int booke_wdt_ioctl (struct inode *inode, struct file *file,
109 booke_wdt_ping(); 110 booke_wdt_ping();
110 return 0; 111 return 0;
111 case WDIOC_SETTIMEOUT: 112 case WDIOC_SETTIMEOUT:
112 if (get_user(booke_wdt_period, (u32 *) arg)) 113 if (get_user(booke_wdt_period, p))
113 return -EFAULT; 114 return -EFAULT;
114 mtspr(SPRN_TCR, (mfspr(SPRN_TCR)&~WDTP(0))|WDTP(booke_wdt_period)); 115 mtspr(SPRN_TCR, (mfspr(SPRN_TCR)&~WDTP(0))|WDTP(booke_wdt_period));
115 return 0; 116 return 0;
116 case WDIOC_GETTIMEOUT: 117 case WDIOC_GETTIMEOUT:
117 return put_user(booke_wdt_period, (u32 *) arg); 118 return put_user(booke_wdt_period, p);
118 case WDIOC_SETOPTIONS: 119 case WDIOC_SETOPTIONS:
119 if (get_user(tmp, (u32 *) arg)) 120 if (get_user(tmp, p))
120 return -EINVAL; 121 return -EINVAL;
121 if (tmp == WDIOS_ENABLECARD) { 122 if (tmp == WDIOS_ENABLECARD) {
122 booke_wdt_ping(); 123 booke_wdt_ping();
@@ -172,7 +173,7 @@ static int __init booke_wdt_init(void)
172 int ret = 0; 173 int ret = 0;
173 174
174 printk (KERN_INFO "PowerPC Book-E Watchdog Timer Loaded\n"); 175 printk (KERN_INFO "PowerPC Book-E Watchdog Timer Loaded\n");
175 ident.firmware_version = cpu_specs[0].pvr_value; 176 ident.firmware_version = cur_cpu_spec->pvr_value;
176 177
177 ret = misc_register(&booke_wdt_miscdev); 178 ret = misc_register(&booke_wdt_miscdev);
178 if (ret) { 179 if (ret) {
diff --git a/drivers/char/watchdog/mpcore_wdt.c b/drivers/char/watchdog/mpcore_wdt.c
index 9defcf861b67..b4d843489881 100644
--- a/drivers/char/watchdog/mpcore_wdt.c
+++ b/drivers/char/watchdog/mpcore_wdt.c
@@ -180,10 +180,6 @@ static ssize_t mpcore_wdt_write(struct file *file, const char *data, size_t len,
180{ 180{
181 struct mpcore_wdt *wdt = file->private_data; 181 struct mpcore_wdt *wdt = file->private_data;
182 182
183 /* Can't seek (pwrite) on this device */
184 if (ppos != &file->f_pos)
185 return -ESPIPE;
186
187 /* 183 /*
188 * Refresh the timer. 184 * Refresh the timer.
189 */ 185 */
diff --git a/drivers/char/watchdog/wdrtas.c b/drivers/char/watchdog/wdrtas.c
index 619e2ffca33f..dacfe31caccf 100644
--- a/drivers/char/watchdog/wdrtas.c
+++ b/drivers/char/watchdog/wdrtas.c
@@ -320,7 +320,7 @@ static int
320wdrtas_ioctl(struct inode *inode, struct file *file, 320wdrtas_ioctl(struct inode *inode, struct file *file,
321 unsigned int cmd, unsigned long arg) 321 unsigned int cmd, unsigned long arg)
322{ 322{
323 int __user *argp = (void *)arg; 323 int __user *argp = (void __user *)arg;
324 int i; 324 int i;
325 static struct watchdog_info wdinfo = { 325 static struct watchdog_info wdinfo = {
326 .options = WDRTAS_SUPPORTED_MASK, 326 .options = WDRTAS_SUPPORTED_MASK,
diff --git a/drivers/connector/cn_proc.c b/drivers/connector/cn_proc.c
index fcdf0fff13a6..969d2b4aaec0 100644
--- a/drivers/connector/cn_proc.c
+++ b/drivers/connector/cn_proc.c
@@ -56,6 +56,7 @@ void proc_fork_connector(struct task_struct *task)
56 msg = (struct cn_msg*)buffer; 56 msg = (struct cn_msg*)buffer;
57 ev = (struct proc_event*)msg->data; 57 ev = (struct proc_event*)msg->data;
58 get_seq(&msg->seq, &ev->cpu); 58 get_seq(&msg->seq, &ev->cpu);
59 getnstimestamp(&ev->timestamp);
59 ev->what = PROC_EVENT_FORK; 60 ev->what = PROC_EVENT_FORK;
60 ev->event_data.fork.parent_pid = task->real_parent->pid; 61 ev->event_data.fork.parent_pid = task->real_parent->pid;
61 ev->event_data.fork.parent_tgid = task->real_parent->tgid; 62 ev->event_data.fork.parent_tgid = task->real_parent->tgid;
@@ -81,6 +82,7 @@ void proc_exec_connector(struct task_struct *task)
81 msg = (struct cn_msg*)buffer; 82 msg = (struct cn_msg*)buffer;
82 ev = (struct proc_event*)msg->data; 83 ev = (struct proc_event*)msg->data;
83 get_seq(&msg->seq, &ev->cpu); 84 get_seq(&msg->seq, &ev->cpu);
85 getnstimestamp(&ev->timestamp);
84 ev->what = PROC_EVENT_EXEC; 86 ev->what = PROC_EVENT_EXEC;
85 ev->event_data.exec.process_pid = task->pid; 87 ev->event_data.exec.process_pid = task->pid;
86 ev->event_data.exec.process_tgid = task->tgid; 88 ev->event_data.exec.process_tgid = task->tgid;
@@ -114,6 +116,7 @@ void proc_id_connector(struct task_struct *task, int which_id)
114 } else 116 } else
115 return; 117 return;
116 get_seq(&msg->seq, &ev->cpu); 118 get_seq(&msg->seq, &ev->cpu);
119 getnstimestamp(&ev->timestamp);
117 120
118 memcpy(&msg->id, &cn_proc_event_id, sizeof(msg->id)); 121 memcpy(&msg->id, &cn_proc_event_id, sizeof(msg->id));
119 msg->ack = 0; /* not used */ 122 msg->ack = 0; /* not used */
@@ -133,6 +136,7 @@ void proc_exit_connector(struct task_struct *task)
133 msg = (struct cn_msg*)buffer; 136 msg = (struct cn_msg*)buffer;
134 ev = (struct proc_event*)msg->data; 137 ev = (struct proc_event*)msg->data;
135 get_seq(&msg->seq, &ev->cpu); 138 get_seq(&msg->seq, &ev->cpu);
139 getnstimestamp(&ev->timestamp);
136 ev->what = PROC_EVENT_EXIT; 140 ev->what = PROC_EVENT_EXIT;
137 ev->event_data.exit.process_pid = task->pid; 141 ev->event_data.exit.process_pid = task->pid;
138 ev->event_data.exit.process_tgid = task->tgid; 142 ev->event_data.exit.process_tgid = task->tgid;
@@ -165,6 +169,7 @@ static void cn_proc_ack(int err, int rcvd_seq, int rcvd_ack)
165 msg = (struct cn_msg*)buffer; 169 msg = (struct cn_msg*)buffer;
166 ev = (struct proc_event*)msg->data; 170 ev = (struct proc_event*)msg->data;
167 msg->seq = rcvd_seq; 171 msg->seq = rcvd_seq;
172 getnstimestamp(&ev->timestamp);
168 ev->cpu = -1; 173 ev->cpu = -1;
169 ev->what = PROC_EVENT_NONE; 174 ev->what = PROC_EVENT_NONE;
170 ev->event_data.ack.err = err; 175 ev->event_data.ack.err = err;
diff --git a/drivers/firmware/dell_rbu.c b/drivers/firmware/dell_rbu.c
index 6d83299e7c9b..dfedb777d8c9 100644
--- a/drivers/firmware/dell_rbu.c
+++ b/drivers/firmware/dell_rbu.c
@@ -105,8 +105,8 @@ static int create_packet(void *data, size_t length)
105 int ordernum = 0; 105 int ordernum = 0;
106 int retval = 0; 106 int retval = 0;
107 unsigned int packet_array_size = 0; 107 unsigned int packet_array_size = 0;
108 void **invalid_addr_packet_array = 0; 108 void **invalid_addr_packet_array = NULL;
109 void *packet_data_temp_buf = 0; 109 void *packet_data_temp_buf = NULL;
110 unsigned int idx = 0; 110 unsigned int idx = 0;
111 111
112 pr_debug("create_packet: entry \n"); 112 pr_debug("create_packet: entry \n");
@@ -178,7 +178,7 @@ static int create_packet(void *data, size_t length)
178 packet_data_temp_buf), 178 packet_data_temp_buf),
179 allocation_floor); 179 allocation_floor);
180 invalid_addr_packet_array[idx++] = packet_data_temp_buf; 180 invalid_addr_packet_array[idx++] = packet_data_temp_buf;
181 packet_data_temp_buf = 0; 181 packet_data_temp_buf = NULL;
182 } 182 }
183 } 183 }
184 spin_lock(&rbu_data.lock); 184 spin_lock(&rbu_data.lock);
diff --git a/drivers/i2c/busses/i2c-mv64xxx.c b/drivers/i2c/busses/i2c-mv64xxx.c
index afd7634e5cc9..81031eb51056 100644
--- a/drivers/i2c/busses/i2c-mv64xxx.c
+++ b/drivers/i2c/busses/i2c-mv64xxx.c
@@ -529,14 +529,15 @@ mv64xxx_i2c_probe(struct platform_device *pd)
529 i2c_set_adapdata(&drv_data->adapter, drv_data); 529 i2c_set_adapdata(&drv_data->adapter, drv_data);
530 530
531 if (request_irq(drv_data->irq, mv64xxx_i2c_intr, 0, 531 if (request_irq(drv_data->irq, mv64xxx_i2c_intr, 0,
532 MV64XXX_I2C_CTLR_NAME, drv_data)) { 532 MV64XXX_I2C_CTLR_NAME, drv_data)) {
533 533 dev_err(&drv_data->adapter.dev,
534 dev_err(dev, "mv64xxx: Can't register intr handler " 534 "mv64xxx: Can't register intr handler irq: %d\n",
535 "irq: %d\n", drv_data->irq); 535 drv_data->irq);
536 rc = -EINVAL; 536 rc = -EINVAL;
537 goto exit_unmap_regs; 537 goto exit_unmap_regs;
538 } else if ((rc = i2c_add_adapter(&drv_data->adapter)) != 0) { 538 } else if ((rc = i2c_add_adapter(&drv_data->adapter)) != 0) {
539 dev_err(dev, "mv64xxx: Can't add i2c adapter, rc: %d\n", -rc); 539 dev_err(&drv_data->adapter.dev,
540 "mv64xxx: Can't add i2c adapter, rc: %d\n", -rc);
540 goto exit_free_irq; 541 goto exit_free_irq;
541 } 542 }
542 543
diff --git a/drivers/ide/Kconfig b/drivers/ide/Kconfig
index 31e649a9ff71..1c81174595b3 100644
--- a/drivers/ide/Kconfig
+++ b/drivers/ide/Kconfig
@@ -807,14 +807,6 @@ config BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA
807 depends on SOC_AU1200 && BLK_DEV_IDE_AU1XXX 807 depends on SOC_AU1200 && BLK_DEV_IDE_AU1XXX
808endchoice 808endchoice
809 809
810config BLK_DEV_IDE_AU1XXX_BURSTABLE_ON
811 bool "Enable burstable Mode on DbDMA"
812 default false
813 depends BLK_DEV_IDE_AU1XXX
814 help
815 This option enable the burstable Flag on DbDMA controller
816 (cf. "AMD Alchemy 'Au1200' Processor Data Book - PRELIMINARY").
817
818config BLK_DEV_IDE_AU1XXX_SEQTS_PER_RQ 810config BLK_DEV_IDE_AU1XXX_SEQTS_PER_RQ
819 int "Maximum transfer size (KB) per request (up to 128)" 811 int "Maximum transfer size (KB) per request (up to 128)"
820 default "128" 812 default "128"
@@ -940,7 +932,7 @@ config BLK_DEV_Q40IDE
940 932
941config BLK_DEV_MPC8xx_IDE 933config BLK_DEV_MPC8xx_IDE
942 bool "MPC8xx IDE support" 934 bool "MPC8xx IDE support"
943 depends on 8xx 935 depends on 8xx && IDE=y && BLK_DEV_IDE=y
944 help 936 help
945 This option provides support for IDE on Motorola MPC8xx Systems. 937 This option provides support for IDE on Motorola MPC8xx Systems.
946 Please see 'Type of MPC8xx IDE interface' for details. 938 Please see 'Type of MPC8xx IDE interface' for details.
diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c
index 9455e42abb23..b4d7a3efb90f 100644
--- a/drivers/ide/ide-cd.c
+++ b/drivers/ide/ide-cd.c
@@ -1292,7 +1292,6 @@ static ide_startstop_t cdrom_start_seek (ide_drive_t *drive, unsigned int block)
1292 struct cdrom_info *info = drive->driver_data; 1292 struct cdrom_info *info = drive->driver_data;
1293 1293
1294 info->dma = 0; 1294 info->dma = 0;
1295 info->cmd = 0;
1296 info->start_seek = jiffies; 1295 info->start_seek = jiffies;
1297 return cdrom_start_packet_command(drive, 0, cdrom_start_seek_continuation); 1296 return cdrom_start_packet_command(drive, 0, cdrom_start_seek_continuation);
1298} 1297}
@@ -1344,8 +1343,6 @@ static ide_startstop_t cdrom_start_read (ide_drive_t *drive, unsigned int block)
1344 (rq->nr_sectors & (sectors_per_frame - 1))) 1343 (rq->nr_sectors & (sectors_per_frame - 1)))
1345 info->dma = 0; 1344 info->dma = 0;
1346 1345
1347 info->cmd = READ;
1348
1349 /* Start sending the read request to the drive. */ 1346 /* Start sending the read request to the drive. */
1350 return cdrom_start_packet_command(drive, 32768, cdrom_start_read_continuation); 1347 return cdrom_start_packet_command(drive, 32768, cdrom_start_read_continuation);
1351} 1348}
@@ -1484,7 +1481,6 @@ static ide_startstop_t cdrom_do_packet_command (ide_drive_t *drive)
1484 struct cdrom_info *info = drive->driver_data; 1481 struct cdrom_info *info = drive->driver_data;
1485 1482
1486 info->dma = 0; 1483 info->dma = 0;
1487 info->cmd = 0;
1488 rq->flags &= ~REQ_FAILED; 1484 rq->flags &= ~REQ_FAILED;
1489 len = rq->data_len; 1485 len = rq->data_len;
1490 1486
@@ -1891,7 +1887,6 @@ static ide_startstop_t cdrom_start_write(ide_drive_t *drive, struct request *rq)
1891 /* use dma, if possible. we don't need to check more, since we 1887 /* use dma, if possible. we don't need to check more, since we
1892 * know that the transfer is always (at least!) frame aligned */ 1888 * know that the transfer is always (at least!) frame aligned */
1893 info->dma = drive->using_dma ? 1 : 0; 1889 info->dma = drive->using_dma ? 1 : 0;
1894 info->cmd = WRITE;
1895 1890
1896 info->devinfo.media_written = 1; 1891 info->devinfo.media_written = 1;
1897 1892
@@ -1916,7 +1911,6 @@ static ide_startstop_t cdrom_do_block_pc(ide_drive_t *drive, struct request *rq)
1916 rq->flags |= REQ_QUIET; 1911 rq->flags |= REQ_QUIET;
1917 1912
1918 info->dma = 0; 1913 info->dma = 0;
1919 info->cmd = 0;
1920 1914
1921 /* 1915 /*
1922 * sg request 1916 * sg request
@@ -1925,7 +1919,6 @@ static ide_startstop_t cdrom_do_block_pc(ide_drive_t *drive, struct request *rq)
1925 int mask = drive->queue->dma_alignment; 1919 int mask = drive->queue->dma_alignment;
1926 unsigned long addr = (unsigned long) page_address(bio_page(rq->bio)); 1920 unsigned long addr = (unsigned long) page_address(bio_page(rq->bio));
1927 1921
1928 info->cmd = rq_data_dir(rq);
1929 info->dma = drive->using_dma; 1922 info->dma = drive->using_dma;
1930 1923
1931 /* 1924 /*
diff --git a/drivers/ide/ide-cd.h b/drivers/ide/ide-cd.h
index 7ca3e5afc665..ad1f2ed14a37 100644
--- a/drivers/ide/ide-cd.h
+++ b/drivers/ide/ide-cd.h
@@ -480,7 +480,6 @@ struct cdrom_info {
480 480
481 struct request request_sense_request; 481 struct request request_sense_request;
482 int dma; 482 int dma;
483 int cmd;
484 unsigned long last_block; 483 unsigned long last_block;
485 unsigned long start_seek; 484 unsigned long start_seek;
486 /* Buffer to hold mechanism status and changer slot table. */ 485 /* Buffer to hold mechanism status and changer slot table. */
diff --git a/drivers/ide/ide-disk.c b/drivers/ide/ide-disk.c
index f4e3d3527b0e..449522f0540c 100644
--- a/drivers/ide/ide-disk.c
+++ b/drivers/ide/ide-disk.c
@@ -1034,12 +1034,12 @@ static int ide_disk_remove(struct device *dev)
1034 struct ide_disk_obj *idkp = drive->driver_data; 1034 struct ide_disk_obj *idkp = drive->driver_data;
1035 struct gendisk *g = idkp->disk; 1035 struct gendisk *g = idkp->disk;
1036 1036
1037 ide_cacheflush_p(drive);
1038
1039 ide_unregister_subdriver(drive, idkp->driver); 1037 ide_unregister_subdriver(drive, idkp->driver);
1040 1038
1041 del_gendisk(g); 1039 del_gendisk(g);
1042 1040
1041 ide_cacheflush_p(drive);
1042
1043 ide_disk_put(idkp); 1043 ide_disk_put(idkp);
1044 1044
1045 return 0; 1045 return 0;
diff --git a/drivers/ide/ide-dma.c b/drivers/ide/ide-dma.c
index 1e1531334c25..0523da77425a 100644
--- a/drivers/ide/ide-dma.c
+++ b/drivers/ide/ide-dma.c
@@ -90,11 +90,6 @@
90#include <asm/io.h> 90#include <asm/io.h>
91#include <asm/irq.h> 91#include <asm/irq.h>
92 92
93struct drive_list_entry {
94 const char *id_model;
95 const char *id_firmware;
96};
97
98static const struct drive_list_entry drive_whitelist [] = { 93static const struct drive_list_entry drive_whitelist [] = {
99 94
100 { "Micropolis 2112A" , "ALL" }, 95 { "Micropolis 2112A" , "ALL" },
@@ -139,7 +134,7 @@ static const struct drive_list_entry drive_blacklist [] = {
139}; 134};
140 135
141/** 136/**
142 * in_drive_list - look for drive in black/white list 137 * ide_in_drive_list - look for drive in black/white list
143 * @id: drive identifier 138 * @id: drive identifier
144 * @drive_table: list to inspect 139 * @drive_table: list to inspect
145 * 140 *
@@ -147,7 +142,7 @@ static const struct drive_list_entry drive_blacklist [] = {
147 * Returns 1 if the drive is found in the table. 142 * Returns 1 if the drive is found in the table.
148 */ 143 */
149 144
150static int in_drive_list(struct hd_driveid *id, const struct drive_list_entry *drive_table) 145int ide_in_drive_list(struct hd_driveid *id, const struct drive_list_entry *drive_table)
151{ 146{
152 for ( ; drive_table->id_model ; drive_table++) 147 for ( ; drive_table->id_model ; drive_table++)
153 if ((!strcmp(drive_table->id_model, id->model)) && 148 if ((!strcmp(drive_table->id_model, id->model)) &&
@@ -157,6 +152,8 @@ static int in_drive_list(struct hd_driveid *id, const struct drive_list_entry *d
157 return 0; 152 return 0;
158} 153}
159 154
155EXPORT_SYMBOL_GPL(ide_in_drive_list);
156
160/** 157/**
161 * ide_dma_intr - IDE DMA interrupt handler 158 * ide_dma_intr - IDE DMA interrupt handler
162 * @drive: the drive the interrupt is for 159 * @drive: the drive the interrupt is for
@@ -663,7 +660,7 @@ int __ide_dma_bad_drive (ide_drive_t *drive)
663{ 660{
664 struct hd_driveid *id = drive->id; 661 struct hd_driveid *id = drive->id;
665 662
666 int blacklist = in_drive_list(id, drive_blacklist); 663 int blacklist = ide_in_drive_list(id, drive_blacklist);
667 if (blacklist) { 664 if (blacklist) {
668 printk(KERN_WARNING "%s: Disabling (U)DMA for %s (blacklisted)\n", 665 printk(KERN_WARNING "%s: Disabling (U)DMA for %s (blacklisted)\n",
669 drive->name, id->model); 666 drive->name, id->model);
@@ -677,7 +674,7 @@ EXPORT_SYMBOL(__ide_dma_bad_drive);
677int __ide_dma_good_drive (ide_drive_t *drive) 674int __ide_dma_good_drive (ide_drive_t *drive)
678{ 675{
679 struct hd_driveid *id = drive->id; 676 struct hd_driveid *id = drive->id;
680 return in_drive_list(id, drive_whitelist); 677 return ide_in_drive_list(id, drive_whitelist);
681} 678}
682 679
683EXPORT_SYMBOL(__ide_dma_good_drive); 680EXPORT_SYMBOL(__ide_dma_good_drive);
diff --git a/drivers/ide/mips/Makefile b/drivers/ide/mips/Makefile
index 578e52a59588..677c7b2bac92 100644
--- a/drivers/ide/mips/Makefile
+++ b/drivers/ide/mips/Makefile
@@ -1 +1,4 @@
1obj-$(CONFIG_BLK_DEV_IDE_SWARM) += swarm.o 1obj-$(CONFIG_BLK_DEV_IDE_SWARM) += swarm.o
2obj-$(CONFIG_BLK_DEV_IDE_AU1XXX) += au1xxx-ide.o
3
4EXTRA_CFLAGS := -Idrivers/ide
diff --git a/drivers/ide/mips/au1xxx-ide.c b/drivers/ide/mips/au1xxx-ide.c
index 2b6327c576b9..32431dcf5d8e 100644
--- a/drivers/ide/mips/au1xxx-ide.c
+++ b/drivers/ide/mips/au1xxx-ide.c
@@ -31,865 +31,638 @@
31 */ 31 */
32#undef REALLY_SLOW_IO /* most systems can safely undef this */ 32#undef REALLY_SLOW_IO /* most systems can safely undef this */
33 33
34#include <linux/config.h> /* for CONFIG_BLK_DEV_IDEPCI */
35#include <linux/types.h> 34#include <linux/types.h>
36#include <linux/module.h> 35#include <linux/module.h>
37#include <linux/kernel.h> 36#include <linux/kernel.h>
38#include <linux/delay.h> 37#include <linux/delay.h>
39#include <linux/timer.h> 38#include <linux/platform_device.h>
40#include <linux/mm.h> 39
41#include <linux/ioport.h>
42#include <linux/hdreg.h>
43#include <linux/init.h> 40#include <linux/init.h>
44#include <linux/ide.h> 41#include <linux/ide.h>
45#include <linux/sysdev.h> 42#include <linux/sysdev.h>
46 43
47#include <linux/dma-mapping.h> 44#include <linux/dma-mapping.h>
48 45
46#include "ide-timing.h"
47
49#include <asm/io.h> 48#include <asm/io.h>
50#include <asm/mach-au1x00/au1xxx.h> 49#include <asm/mach-au1x00/au1xxx.h>
51#include <asm/mach-au1x00/au1xxx_dbdma.h> 50#include <asm/mach-au1x00/au1xxx_dbdma.h>
52 51
53#if CONFIG_PM
54#include <asm/mach-au1x00/au1xxx_pm.h>
55#endif
56
57#include <asm/mach-au1x00/au1xxx_ide.h> 52#include <asm/mach-au1x00/au1xxx_ide.h>
58 53
59#define DRV_NAME "au1200-ide" 54#define DRV_NAME "au1200-ide"
60#define DRV_VERSION "1.0" 55#define DRV_VERSION "1.0"
61#define DRV_AUTHOR "AMD PCS / Pete Popov <ppopov@embeddedalley.com>" 56#define DRV_AUTHOR "Enrico Walther <enrico.walther@amd.com> / Pete Popov <ppopov@embeddedalley.com>"
62#define DRV_DESC "Au1200 IDE"
63
64static _auide_hwif auide_hwif;
65static spinlock_t ide_tune_drive_spin_lock = SPIN_LOCK_UNLOCKED;
66static spinlock_t ide_tune_chipset_spin_lock = SPIN_LOCK_UNLOCKED;
67static int dbdma_init_done = 0;
68
69/*
70 * local I/O functions
71 */
72u8 auide_inb(unsigned long port)
73{
74 return (au_readb(port));
75}
76 57
77u16 auide_inw(unsigned long port) 58/* enable the burstmode in the dbdma */
78{ 59#define IDE_AU1XXX_BURSTMODE 1
79 return (au_readw(port));
80}
81 60
82u32 auide_inl(unsigned long port) 61static _auide_hwif auide_hwif;
83{ 62static int dbdma_init_done;
84 return (au_readl(port));
85}
86 63
87void auide_insw(unsigned long port, void *addr, u32 count)
88{
89#if defined(CONFIG_BLK_DEV_IDE_AU1XXX_PIO_DBDMA) 64#if defined(CONFIG_BLK_DEV_IDE_AU1XXX_PIO_DBDMA)
90 65
91 _auide_hwif *ahwif = &auide_hwif; 66void auide_insw(unsigned long port, void *addr, u32 count)
92 chan_tab_t *ctp;
93 au1x_ddma_desc_t *dp;
94
95 if(!put_dest_flags(ahwif->rx_chan, (void*)addr, count << 1,
96 DDMA_FLAGS_NOIE)) {
97 printk(KERN_ERR "%s failed %d\n", __FUNCTION__, __LINE__);
98 return;
99 }
100 ctp = *((chan_tab_t **)ahwif->rx_chan);
101 dp = ctp->cur_ptr;
102 while (dp->dscr_cmd0 & DSCR_CMD0_V)
103 ;
104 ctp->cur_ptr = au1xxx_ddma_get_nextptr_virt(dp);
105#else
106 while (count--)
107 {
108 *(u16 *)addr = au_readw(port);
109 addr +=2 ;
110 }
111#endif
112}
113
114void auide_insl(unsigned long port, void *addr, u32 count)
115{
116 while (count--)
117 {
118 *(u32 *)addr = au_readl(port);
119 /* NOTE: For IDE interfaces over PCMCIA,
120 * 32-bit access does not work
121 */
122 addr += 4;
123 }
124}
125
126void auide_outb(u8 addr, unsigned long port)
127{ 67{
128 return (au_writeb(addr, port)); 68 _auide_hwif *ahwif = &auide_hwif;
129} 69 chan_tab_t *ctp;
70 au1x_ddma_desc_t *dp;
130 71
131void auide_outbsync(ide_drive_t *drive, u8 addr, unsigned long port) 72 if(!put_dest_flags(ahwif->rx_chan, (void*)addr, count << 1,
132{ 73 DDMA_FLAGS_NOIE)) {
133 return (au_writeb(addr, port)); 74 printk(KERN_ERR "%s failed %d\n", __FUNCTION__, __LINE__);
75 return;
76 }
77 ctp = *((chan_tab_t **)ahwif->rx_chan);
78 dp = ctp->cur_ptr;
79 while (dp->dscr_cmd0 & DSCR_CMD0_V)
80 ;
81 ctp->cur_ptr = au1xxx_ddma_get_nextptr_virt(dp);
134} 82}
135 83
136void auide_outw(u16 addr, unsigned long port) 84void auide_outsw(unsigned long port, void *addr, u32 count)
137{ 85{
138 return (au_writew(addr, port)); 86 _auide_hwif *ahwif = &auide_hwif;
139} 87 chan_tab_t *ctp;
88 au1x_ddma_desc_t *dp;
140 89
141void auide_outl(u32 addr, unsigned long port) 90 if(!put_source_flags(ahwif->tx_chan, (void*)addr,
142{ 91 count << 1, DDMA_FLAGS_NOIE)) {
143 return (au_writel(addr, port)); 92 printk(KERN_ERR "%s failed %d\n", __FUNCTION__, __LINE__);
93 return;
94 }
95 ctp = *((chan_tab_t **)ahwif->tx_chan);
96 dp = ctp->cur_ptr;
97 while (dp->dscr_cmd0 & DSCR_CMD0_V)
98 ;
99 ctp->cur_ptr = au1xxx_ddma_get_nextptr_virt(dp);
144} 100}
145 101
146void auide_outsw(unsigned long port, void *addr, u32 count)
147{
148#if defined(CONFIG_BLK_DEV_IDE_AU1XXX_PIO_DBDMA)
149 _auide_hwif *ahwif = &auide_hwif;
150 chan_tab_t *ctp;
151 au1x_ddma_desc_t *dp;
152
153 if(!put_source_flags(ahwif->tx_chan, (void*)addr,
154 count << 1, DDMA_FLAGS_NOIE)) {
155 printk(KERN_ERR "%s failed %d\n", __FUNCTION__, __LINE__);
156 return;
157 }
158 ctp = *((chan_tab_t **)ahwif->tx_chan);
159 dp = ctp->cur_ptr;
160 while (dp->dscr_cmd0 & DSCR_CMD0_V)
161 ;
162 ctp->cur_ptr = au1xxx_ddma_get_nextptr_virt(dp);
163#else
164 while (count--)
165 {
166 au_writew(*(u16 *)addr, port);
167 addr += 2;
168 }
169#endif 102#endif
170}
171
172void auide_outsl(unsigned long port, void *addr, u32 count)
173{
174 while (count--)
175 {
176 au_writel(*(u32 *)addr, port);
177 /* NOTE: For IDE interfaces over PCMCIA,
178 * 32-bit access does not work
179 */
180 addr += 4;
181 }
182}
183 103
184static void auide_tune_drive(ide_drive_t *drive, byte pio) 104static void auide_tune_drive(ide_drive_t *drive, byte pio)
185{ 105{
186 int mem_sttime; 106 int mem_sttime;
187 int mem_stcfg; 107 int mem_stcfg;
188 unsigned long flags; 108 u8 speed;
189 u8 speed; 109
190 110 /* get the best pio mode for the drive */
191 /* get the best pio mode for the drive */ 111 pio = ide_get_best_pio_mode(drive, pio, 4, NULL);
192 pio = ide_get_best_pio_mode(drive, pio, 4, NULL); 112
193 113 printk(KERN_INFO "%s: setting Au1XXX IDE to PIO mode%d\n",
194 printk("%s: setting Au1XXX IDE to PIO mode%d\n", 114 drive->name, pio);
195 drive->name, pio); 115
196 116 mem_sttime = 0;
197 spin_lock_irqsave(&ide_tune_drive_spin_lock, flags); 117 mem_stcfg = au_readl(MEM_STCFG2);
198 118
199 mem_sttime = 0; 119 /* set pio mode! */
200 mem_stcfg = au_readl(MEM_STCFG2); 120 switch(pio) {
201 121 case 0:
202 /* set pio mode! */ 122 mem_sttime = SBC_IDE_TIMING(PIO0);
203 switch(pio) { 123
204 case 0: 124 /* set configuration for RCS2# */
205 /* set timing parameters for RCS2# */ 125 mem_stcfg |= TS_MASK;
206 mem_sttime = SBC_IDE_PIO0_TWCS 126 mem_stcfg &= ~TCSOE_MASK;
207 | SBC_IDE_PIO0_TCSH 127 mem_stcfg &= ~TOECS_MASK;
208 | SBC_IDE_PIO0_TCSOFF 128 mem_stcfg |= SBC_IDE_PIO0_TCSOE | SBC_IDE_PIO0_TOECS;
209 | SBC_IDE_PIO0_TWP 129 break;
210 | SBC_IDE_PIO0_TCSW 130
211 | SBC_IDE_PIO0_TPM 131 case 1:
212 | SBC_IDE_PIO0_TA; 132 mem_sttime = SBC_IDE_TIMING(PIO1);
213 /* set configuration for RCS2# */ 133
214 mem_stcfg |= TS_MASK; 134 /* set configuration for RCS2# */
215 mem_stcfg &= ~TCSOE_MASK; 135 mem_stcfg |= TS_MASK;
216 mem_stcfg &= ~TOECS_MASK; 136 mem_stcfg &= ~TCSOE_MASK;
217 mem_stcfg |= SBC_IDE_PIO0_TCSOE | SBC_IDE_PIO0_TOECS; 137 mem_stcfg &= ~TOECS_MASK;
218 138 mem_stcfg |= SBC_IDE_PIO1_TCSOE | SBC_IDE_PIO1_TOECS;
219 au_writel(mem_sttime,MEM_STTIME2); 139 break;
220 au_writel(mem_stcfg,MEM_STCFG2); 140
221 break; 141 case 2:
222 142 mem_sttime = SBC_IDE_TIMING(PIO2);
223 case 1: 143
224 /* set timing parameters for RCS2# */ 144 /* set configuration for RCS2# */
225 mem_sttime = SBC_IDE_PIO1_TWCS 145 mem_stcfg &= ~TS_MASK;
226 | SBC_IDE_PIO1_TCSH 146 mem_stcfg &= ~TCSOE_MASK;
227 | SBC_IDE_PIO1_TCSOFF 147 mem_stcfg &= ~TOECS_MASK;
228 | SBC_IDE_PIO1_TWP 148 mem_stcfg |= SBC_IDE_PIO2_TCSOE | SBC_IDE_PIO2_TOECS;
229 | SBC_IDE_PIO1_TCSW 149 break;
230 | SBC_IDE_PIO1_TPM 150
231 | SBC_IDE_PIO1_TA; 151 case 3:
232 /* set configuration for RCS2# */ 152 mem_sttime = SBC_IDE_TIMING(PIO3);
233 mem_stcfg |= TS_MASK; 153
234 mem_stcfg &= ~TCSOE_MASK; 154 /* set configuration for RCS2# */
235 mem_stcfg &= ~TOECS_MASK; 155 mem_stcfg &= ~TS_MASK;
236 mem_stcfg |= SBC_IDE_PIO1_TCSOE | SBC_IDE_PIO1_TOECS; 156 mem_stcfg &= ~TCSOE_MASK;
237 break; 157 mem_stcfg &= ~TOECS_MASK;
238 158 mem_stcfg |= SBC_IDE_PIO3_TCSOE | SBC_IDE_PIO3_TOECS;
239 case 2: 159
240 /* set timing parameters for RCS2# */ 160 break;
241 mem_sttime = SBC_IDE_PIO2_TWCS 161
242 | SBC_IDE_PIO2_TCSH 162 case 4:
243 | SBC_IDE_PIO2_TCSOFF 163 mem_sttime = SBC_IDE_TIMING(PIO4);
244 | SBC_IDE_PIO2_TWP 164
245 | SBC_IDE_PIO2_TCSW 165 /* set configuration for RCS2# */
246 | SBC_IDE_PIO2_TPM 166 mem_stcfg &= ~TS_MASK;
247 | SBC_IDE_PIO2_TA; 167 mem_stcfg &= ~TCSOE_MASK;
248 /* set configuration for RCS2# */ 168 mem_stcfg &= ~TOECS_MASK;
249 mem_stcfg &= ~TS_MASK; 169 mem_stcfg |= SBC_IDE_PIO4_TCSOE | SBC_IDE_PIO4_TOECS;
250 mem_stcfg &= ~TCSOE_MASK; 170 break;
251 mem_stcfg &= ~TOECS_MASK; 171 }
252 mem_stcfg |= SBC_IDE_PIO2_TCSOE | SBC_IDE_PIO2_TOECS; 172
253 break; 173 au_writel(mem_sttime,MEM_STTIME2);
254 174 au_writel(mem_stcfg,MEM_STCFG2);
255 case 3: 175
256 /* set timing parameters for RCS2# */ 176 speed = pio + XFER_PIO_0;
257 mem_sttime = SBC_IDE_PIO3_TWCS 177 ide_config_drive_speed(drive, speed);
258 | SBC_IDE_PIO3_TCSH
259 | SBC_IDE_PIO3_TCSOFF
260 | SBC_IDE_PIO3_TWP
261 | SBC_IDE_PIO3_TCSW
262 | SBC_IDE_PIO3_TPM
263 | SBC_IDE_PIO3_TA;
264 /* set configuration for RCS2# */
265 mem_stcfg |= TS_MASK;
266 mem_stcfg &= ~TS_MASK;
267 mem_stcfg &= ~TCSOE_MASK;
268 mem_stcfg &= ~TOECS_MASK;
269 mem_stcfg |= SBC_IDE_PIO3_TCSOE | SBC_IDE_PIO3_TOECS;
270
271 break;
272
273 case 4:
274 /* set timing parameters for RCS2# */
275 mem_sttime = SBC_IDE_PIO4_TWCS
276 | SBC_IDE_PIO4_TCSH
277 | SBC_IDE_PIO4_TCSOFF
278 | SBC_IDE_PIO4_TWP
279 | SBC_IDE_PIO4_TCSW
280 | SBC_IDE_PIO4_TPM
281 | SBC_IDE_PIO4_TA;
282 /* set configuration for RCS2# */
283 mem_stcfg &= ~TS_MASK;
284 mem_stcfg &= ~TCSOE_MASK;
285 mem_stcfg &= ~TOECS_MASK;
286 mem_stcfg |= SBC_IDE_PIO4_TCSOE | SBC_IDE_PIO4_TOECS;
287 break;
288 }
289
290 au_writel(mem_sttime,MEM_STTIME2);
291 au_writel(mem_stcfg,MEM_STCFG2);
292
293 spin_unlock_irqrestore(&ide_tune_drive_spin_lock, flags);
294
295 speed = pio + XFER_PIO_0;
296 ide_config_drive_speed(drive, speed);
297} 178}
298 179
299static int auide_tune_chipset (ide_drive_t *drive, u8 speed) 180static int auide_tune_chipset (ide_drive_t *drive, u8 speed)
300{ 181{
301 u8 mode = 0; 182 int mem_sttime;
302 int mem_sttime; 183 int mem_stcfg;
303 int mem_stcfg; 184 unsigned long mode;
304 unsigned long flags; 185
305#ifdef CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA 186#ifdef CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA
306 struct hd_driveid *id = drive->id; 187 if (ide_use_dma(drive))
307 188 mode = ide_dma_speed(drive, 0);
308 /*
309 * Now see what the current drive is capable of,
310 * selecting UDMA only if the mate said it was ok.
311 */
312 if (id && (id->capability & 1) && drive->autodma &&
313 !__ide_dma_bad_drive(drive)) {
314 if (!mode && (id->field_valid & 2) && (id->dma_mword & 7)) {
315 if (id->dma_mword & 4)
316 mode = XFER_MW_DMA_2;
317 else if (id->dma_mword & 2)
318 mode = XFER_MW_DMA_1;
319 else if (id->dma_mword & 1)
320 mode = XFER_MW_DMA_0;
321 }
322 }
323#endif 189#endif
324 190
325 spin_lock_irqsave(&ide_tune_chipset_spin_lock, flags); 191 mem_sttime = 0;
192 mem_stcfg = au_readl(MEM_STCFG2);
326 193
327 mem_sttime = 0; 194 if (speed >= XFER_PIO_0 && speed <= XFER_PIO_4) {
328 mem_stcfg = au_readl(MEM_STCFG2); 195 auide_tune_drive(drive, speed - XFER_PIO_0);
329 196 return 0;
330 switch(speed) { 197 }
331 case XFER_PIO_4: 198
332 case XFER_PIO_3: 199 switch(speed) {
333 case XFER_PIO_2:
334 case XFER_PIO_1:
335 case XFER_PIO_0:
336 auide_tune_drive(drive, (speed - XFER_PIO_0));
337 break;
338#ifdef CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA 200#ifdef CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA
339 case XFER_MW_DMA_2: 201 case XFER_MW_DMA_2:
340 /* set timing parameters for RCS2# */ 202 mem_sttime = SBC_IDE_TIMING(MDMA2);
341 mem_sttime = SBC_IDE_MDMA2_TWCS 203
342 | SBC_IDE_MDMA2_TCSH 204 /* set configuration for RCS2# */
343 | SBC_IDE_MDMA2_TCSOFF 205 mem_stcfg &= ~TS_MASK;
344 | SBC_IDE_MDMA2_TWP 206 mem_stcfg &= ~TCSOE_MASK;
345 | SBC_IDE_MDMA2_TCSW 207 mem_stcfg &= ~TOECS_MASK;
346 | SBC_IDE_MDMA2_TPM 208 mem_stcfg |= SBC_IDE_MDMA2_TCSOE | SBC_IDE_MDMA2_TOECS;
347 | SBC_IDE_MDMA2_TA; 209
348 /* set configuration for RCS2# */ 210 mode = XFER_MW_DMA_2;
349 mem_stcfg &= ~TS_MASK; 211 break;
350 mem_stcfg &= ~TCSOE_MASK; 212 case XFER_MW_DMA_1:
351 mem_stcfg &= ~TOECS_MASK; 213 mem_sttime = SBC_IDE_TIMING(MDMA1);
352 mem_stcfg |= SBC_IDE_MDMA2_TCSOE | SBC_IDE_MDMA2_TOECS; 214
353 215 /* set configuration for RCS2# */
354 mode = XFER_MW_DMA_2; 216 mem_stcfg &= ~TS_MASK;
355 break; 217 mem_stcfg &= ~TCSOE_MASK;
356 case XFER_MW_DMA_1: 218 mem_stcfg &= ~TOECS_MASK;
357 /* set timing parameters for RCS2# */ 219 mem_stcfg |= SBC_IDE_MDMA1_TCSOE | SBC_IDE_MDMA1_TOECS;
358 mem_sttime = SBC_IDE_MDMA1_TWCS 220
359 | SBC_IDE_MDMA1_TCSH 221 mode = XFER_MW_DMA_1;
360 | SBC_IDE_MDMA1_TCSOFF 222 break;
361 | SBC_IDE_MDMA1_TWP 223 case XFER_MW_DMA_0:
362 | SBC_IDE_MDMA1_TCSW 224 mem_sttime = SBC_IDE_TIMING(MDMA0);
363 | SBC_IDE_MDMA1_TPM 225
364 | SBC_IDE_MDMA1_TA; 226 /* set configuration for RCS2# */
365 /* set configuration for RCS2# */ 227 mem_stcfg |= TS_MASK;
366 mem_stcfg &= ~TS_MASK; 228 mem_stcfg &= ~TCSOE_MASK;
367 mem_stcfg &= ~TCSOE_MASK; 229 mem_stcfg &= ~TOECS_MASK;
368 mem_stcfg &= ~TOECS_MASK; 230 mem_stcfg |= SBC_IDE_MDMA0_TCSOE | SBC_IDE_MDMA0_TOECS;
369 mem_stcfg |= SBC_IDE_MDMA1_TCSOE | SBC_IDE_MDMA1_TOECS; 231
370 232 mode = XFER_MW_DMA_0;
371 mode = XFER_MW_DMA_1; 233 break;
372 break;
373 case XFER_MW_DMA_0:
374 /* set timing parameters for RCS2# */
375 mem_sttime = SBC_IDE_MDMA0_TWCS
376 | SBC_IDE_MDMA0_TCSH
377 | SBC_IDE_MDMA0_TCSOFF
378 | SBC_IDE_MDMA0_TWP
379 | SBC_IDE_MDMA0_TCSW
380 | SBC_IDE_MDMA0_TPM
381 | SBC_IDE_MDMA0_TA;
382 /* set configuration for RCS2# */
383 mem_stcfg |= TS_MASK;
384 mem_stcfg &= ~TCSOE_MASK;
385 mem_stcfg &= ~TOECS_MASK;
386 mem_stcfg |= SBC_IDE_MDMA0_TCSOE | SBC_IDE_MDMA0_TOECS;
387
388 mode = XFER_MW_DMA_0;
389 break;
390#endif 234#endif
391 default: 235 default:
392 return 1; 236 return 1;
393 } 237 }
394 238
395 /* 239 if (ide_config_drive_speed(drive, mode))
396 * Tell the drive to switch to the new mode; abort on failure. 240 return 1;
397 */
398 if (!mode || ide_config_drive_speed(drive, mode))
399 {
400 return 1; /* failure */
401 }
402
403
404 au_writel(mem_sttime,MEM_STTIME2);
405 au_writel(mem_stcfg,MEM_STCFG2);
406 241
407 spin_unlock_irqrestore(&ide_tune_chipset_spin_lock, flags); 242 au_writel(mem_sttime,MEM_STTIME2);
243 au_writel(mem_stcfg,MEM_STCFG2);
408 244
409 return 0; 245 return 0;
410} 246}
411 247
412/* 248/*
413 * Multi-Word DMA + DbDMA functions 249 * Multi-Word DMA + DbDMA functions
414 */ 250 */
415#ifdef CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA
416 251
417static int in_drive_list(struct hd_driveid *id, 252#ifdef CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA
418 const struct drive_list_entry *drive_table)
419{
420 for ( ; drive_table->id_model ; drive_table++){
421 if ((!strcmp(drive_table->id_model, id->model)) &&
422 ((strstr(drive_table->id_firmware, id->fw_rev)) ||
423 (!strcmp(drive_table->id_firmware, "ALL")))
424 )
425 return 1;
426 }
427 return 0;
428}
429 253
430static int auide_build_sglist(ide_drive_t *drive, struct request *rq) 254static int auide_build_sglist(ide_drive_t *drive, struct request *rq)
431{ 255{
432 ide_hwif_t *hwif = drive->hwif; 256 ide_hwif_t *hwif = drive->hwif;
433 _auide_hwif *ahwif = (_auide_hwif*)hwif->hwif_data; 257 _auide_hwif *ahwif = (_auide_hwif*)hwif->hwif_data;
434 struct scatterlist *sg = hwif->sg_table; 258 struct scatterlist *sg = hwif->sg_table;
435 259
436 ide_map_sg(drive, rq); 260 ide_map_sg(drive, rq);
437 261
438 if (rq_data_dir(rq) == READ) 262 if (rq_data_dir(rq) == READ)
439 hwif->sg_dma_direction = DMA_FROM_DEVICE; 263 hwif->sg_dma_direction = DMA_FROM_DEVICE;
440 else 264 else
441 hwif->sg_dma_direction = DMA_TO_DEVICE; 265 hwif->sg_dma_direction = DMA_TO_DEVICE;
442 266
443 return dma_map_sg(ahwif->dev, sg, hwif->sg_nents, 267 return dma_map_sg(ahwif->dev, sg, hwif->sg_nents,
444 hwif->sg_dma_direction); 268 hwif->sg_dma_direction);
445} 269}
446 270
447static int auide_build_dmatable(ide_drive_t *drive) 271static int auide_build_dmatable(ide_drive_t *drive)
448{ 272{
449 int i, iswrite, count = 0; 273 int i, iswrite, count = 0;
450 ide_hwif_t *hwif = HWIF(drive); 274 ide_hwif_t *hwif = HWIF(drive);
451 275
452 struct request *rq = HWGROUP(drive)->rq; 276 struct request *rq = HWGROUP(drive)->rq;
453 277
454 _auide_hwif *ahwif = (_auide_hwif*)hwif->hwif_data; 278 _auide_hwif *ahwif = (_auide_hwif*)hwif->hwif_data;
455 struct scatterlist *sg; 279 struct scatterlist *sg;
456 280
457 iswrite = (rq_data_dir(rq) == WRITE); 281 iswrite = (rq_data_dir(rq) == WRITE);
458 /* Save for interrupt context */ 282 /* Save for interrupt context */
459 ahwif->drive = drive; 283 ahwif->drive = drive;
460 284
461 /* Build sglist */ 285 /* Build sglist */
462 hwif->sg_nents = i = auide_build_sglist(drive, rq); 286 hwif->sg_nents = i = auide_build_sglist(drive, rq);
463 287
464 if (!i) 288 if (!i)
465 return 0; 289 return 0;
466 290
467 /* fill the descriptors */ 291 /* fill the descriptors */
468 sg = hwif->sg_table; 292 sg = hwif->sg_table;
469 while (i && sg_dma_len(sg)) { 293 while (i && sg_dma_len(sg)) {
470 u32 cur_addr; 294 u32 cur_addr;
471 u32 cur_len; 295 u32 cur_len;
472 296
473 cur_addr = sg_dma_address(sg); 297 cur_addr = sg_dma_address(sg);
474 cur_len = sg_dma_len(sg); 298 cur_len = sg_dma_len(sg);
475 299
476 while (cur_len) { 300 while (cur_len) {
477 u32 flags = DDMA_FLAGS_NOIE; 301 u32 flags = DDMA_FLAGS_NOIE;
478 unsigned int tc = (cur_len < 0xfe00)? cur_len: 0xfe00; 302 unsigned int tc = (cur_len < 0xfe00)? cur_len: 0xfe00;
479 303
480 if (++count >= PRD_ENTRIES) { 304 if (++count >= PRD_ENTRIES) {
481 printk(KERN_WARNING "%s: DMA table too small\n", 305 printk(KERN_WARNING "%s: DMA table too small\n",
482 drive->name); 306 drive->name);
483 goto use_pio_instead; 307 goto use_pio_instead;
484 } 308 }
485 309
486 /* Lets enable intr for the last descriptor only */ 310 /* Lets enable intr for the last descriptor only */
487 if (1==i) 311 if (1==i)
488 flags = DDMA_FLAGS_IE; 312 flags = DDMA_FLAGS_IE;
489 else 313 else
490 flags = DDMA_FLAGS_NOIE; 314 flags = DDMA_FLAGS_NOIE;
491 315
492 if (iswrite) { 316 if (iswrite) {
493 if(!put_source_flags(ahwif->tx_chan, 317 if(!put_source_flags(ahwif->tx_chan,
494 (void*)(page_address(sg->page) 318 (void*)(page_address(sg->page)
495 + sg->offset), 319 + sg->offset),
496 tc, flags)) { 320 tc, flags)) {
497 printk(KERN_ERR "%s failed %d\n", 321 printk(KERN_ERR "%s failed %d\n",
498 __FUNCTION__, __LINE__); 322 __FUNCTION__, __LINE__);
499 } 323 }
500 } else 324 } else
501 { 325 {
502 if(!put_dest_flags(ahwif->rx_chan, 326 if(!put_dest_flags(ahwif->rx_chan,
503 (void*)(page_address(sg->page) 327 (void*)(page_address(sg->page)
504 + sg->offset), 328 + sg->offset),
505 tc, flags)) { 329 tc, flags)) {
506 printk(KERN_ERR "%s failed %d\n", 330 printk(KERN_ERR "%s failed %d\n",
507 __FUNCTION__, __LINE__); 331 __FUNCTION__, __LINE__);
508 } 332 }
509 } 333 }
510 334
511 cur_addr += tc; 335 cur_addr += tc;
512 cur_len -= tc; 336 cur_len -= tc;
513 } 337 }
514 sg++; 338 sg++;
515 i--; 339 i--;
516 } 340 }
517 341
518 if (count) 342 if (count)
519 return 1; 343 return 1;
520 344
521use_pio_instead: 345 use_pio_instead:
522 dma_unmap_sg(ahwif->dev, 346 dma_unmap_sg(ahwif->dev,
523 hwif->sg_table, 347 hwif->sg_table,
524 hwif->sg_nents, 348 hwif->sg_nents,
525 hwif->sg_dma_direction); 349 hwif->sg_dma_direction);
526 350
527 return 0; /* revert to PIO for this request */ 351 return 0; /* revert to PIO for this request */
528} 352}
529 353
530static int auide_dma_end(ide_drive_t *drive) 354static int auide_dma_end(ide_drive_t *drive)
531{ 355{
532 ide_hwif_t *hwif = HWIF(drive); 356 ide_hwif_t *hwif = HWIF(drive);
533 _auide_hwif *ahwif = (_auide_hwif*)hwif->hwif_data; 357 _auide_hwif *ahwif = (_auide_hwif*)hwif->hwif_data;
534 358
535 if (hwif->sg_nents) { 359 if (hwif->sg_nents) {
536 dma_unmap_sg(ahwif->dev, hwif->sg_table, hwif->sg_nents, 360 dma_unmap_sg(ahwif->dev, hwif->sg_table, hwif->sg_nents,
537 hwif->sg_dma_direction); 361 hwif->sg_dma_direction);
538 hwif->sg_nents = 0; 362 hwif->sg_nents = 0;
539 } 363 }
540 364
541 return 0; 365 return 0;
542} 366}
543 367
544static void auide_dma_start(ide_drive_t *drive ) 368static void auide_dma_start(ide_drive_t *drive )
545{ 369{
546// printk("%s\n", __FUNCTION__);
547} 370}
548 371
549ide_startstop_t auide_dma_intr(ide_drive_t *drive)
550{
551 //printk("%s\n", __FUNCTION__);
552
553 u8 stat = 0, dma_stat = 0;
554
555 dma_stat = HWIF(drive)->ide_dma_end(drive);
556 stat = HWIF(drive)->INB(IDE_STATUS_REG); /* get drive status */
557 if (OK_STAT(stat,DRIVE_READY,drive->bad_wstat|DRQ_STAT)) {
558 if (!dma_stat) {
559 struct request *rq = HWGROUP(drive)->rq;
560
561 ide_end_request(drive, 1, rq->nr_sectors);
562 return ide_stopped;
563 }
564 printk(KERN_ERR "%s: dma_intr: bad DMA status (dma_stat=%x)\n",
565 drive->name, dma_stat);
566 }
567 return ide_error(drive, "dma_intr", stat);
568}
569 372
570static void auide_dma_exec_cmd(ide_drive_t *drive, u8 command) 373static void auide_dma_exec_cmd(ide_drive_t *drive, u8 command)
571{ 374{
572 //printk("%s\n", __FUNCTION__); 375 /* issue cmd to drive */
573 376 ide_execute_command(drive, command, &ide_dma_intr,
574 /* issue cmd to drive */ 377 (2*WAIT_CMD), NULL);
575 ide_execute_command(drive, command, &auide_dma_intr,
576 (2*WAIT_CMD), NULL);
577} 378}
578 379
579static int auide_dma_setup(ide_drive_t *drive) 380static int auide_dma_setup(ide_drive_t *drive)
580{ 381{
581// printk("%s\n", __FUNCTION__); 382 struct request *rq = HWGROUP(drive)->rq;
582
583 if (drive->media != ide_disk)
584 return 1;
585
586 if (!auide_build_dmatable(drive))
587 /* try PIO instead of DMA */
588 return 1;
589 383
590 drive->waiting_for_dma = 1; 384 if (!auide_build_dmatable(drive)) {
385 ide_map_sg(drive, rq);
386 return 1;
387 }
591 388
592 return 0; 389 drive->waiting_for_dma = 1;
390 return 0;
593} 391}
594 392
595static int auide_dma_check(ide_drive_t *drive) 393static int auide_dma_check(ide_drive_t *drive)
596{ 394{
597// printk("%s\n", __FUNCTION__); 395 u8 speed;
598 396
599#ifdef CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA 397#ifdef CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA
600 if( !dbdma_init_done ){ 398
601 auide_hwif.white_list = in_drive_list(drive->id, 399 if( dbdma_init_done == 0 ){
602 dma_white_list); 400 auide_hwif.white_list = ide_in_drive_list(drive->id,
603 auide_hwif.black_list = in_drive_list(drive->id, 401 dma_white_list);
604 dma_black_list); 402 auide_hwif.black_list = ide_in_drive_list(drive->id,
605 auide_hwif.drive = drive; 403 dma_black_list);
606 auide_ddma_init(&auide_hwif); 404 auide_hwif.drive = drive;
607 dbdma_init_done = 1; 405 auide_ddma_init(&auide_hwif);
608 } 406 dbdma_init_done = 1;
407 }
609#endif 408#endif
610 409
611 /* Is the drive in our DMA black list? */ 410 /* Is the drive in our DMA black list? */
612 if ( auide_hwif.black_list ) { 411
613 drive->using_dma = 0; 412 if ( auide_hwif.black_list ) {
614 printk("%s found in dma_blacklist[]! Disabling DMA.\n", 413 drive->using_dma = 0;
615 drive->id->model); 414
616 } 415 /* Borrowed the warning message from ide-dma.c */
617 else
618 drive->using_dma = 1;
619 416
620 return HWIF(drive)->ide_dma_host_on(drive); 417 printk(KERN_WARNING "%s: Disabling DMA for %s (blacklisted)\n",
418 drive->name, drive->id->model);
419 }
420 else
421 drive->using_dma = 1;
422
423 speed = ide_find_best_mode(drive, XFER_PIO | XFER_MWDMA);
424
425 if (drive->autodma && (speed & XFER_MODE) != XFER_PIO)
426 return HWIF(drive)->ide_dma_on(drive);
427
428 return HWIF(drive)->ide_dma_off_quietly(drive);
621} 429}
622 430
623static int auide_dma_test_irq(ide_drive_t *drive) 431static int auide_dma_test_irq(ide_drive_t *drive)
624{ 432{
625// printk("%s\n", __FUNCTION__); 433 if (drive->waiting_for_dma == 0)
626 434 printk(KERN_WARNING "%s: ide_dma_test_irq \
627 if (!drive->waiting_for_dma)
628 printk(KERN_WARNING "%s: ide_dma_test_irq \
629 called while not waiting\n", drive->name); 435 called while not waiting\n", drive->name);
630 436
631 /* If dbdma didn't execute the STOP command yet, the 437 /* If dbdma didn't execute the STOP command yet, the
632 * active bit is still set 438 * active bit is still set
633 */ 439 */
634 drive->waiting_for_dma++; 440 drive->waiting_for_dma++;
635 if (drive->waiting_for_dma >= DMA_WAIT_TIMEOUT) { 441 if (drive->waiting_for_dma >= DMA_WAIT_TIMEOUT) {
636 printk(KERN_WARNING "%s: timeout waiting for ddma to \ 442 printk(KERN_WARNING "%s: timeout waiting for ddma to \
637 complete\n", drive->name); 443 complete\n", drive->name);
638 return 1; 444 return 1;
639 } 445 }
640 udelay(10); 446 udelay(10);
641 return 0; 447 return 0;
642} 448}
643 449
644static int auide_dma_host_on(ide_drive_t *drive) 450static int auide_dma_host_on(ide_drive_t *drive)
645{ 451{
646// printk("%s\n", __FUNCTION__); 452 return 0;
647 return 0;
648} 453}
649 454
650static int auide_dma_on(ide_drive_t *drive) 455static int auide_dma_on(ide_drive_t *drive)
651{ 456{
652// printk("%s\n", __FUNCTION__); 457 drive->using_dma = 1;
653 drive->using_dma = 1; 458 return auide_dma_host_on(drive);
654 return auide_dma_host_on(drive);
655} 459}
656 460
657 461
658static int auide_dma_host_off(ide_drive_t *drive) 462static int auide_dma_host_off(ide_drive_t *drive)
659{ 463{
660// printk("%s\n", __FUNCTION__); 464 return 0;
661 return 0;
662} 465}
663 466
664static int auide_dma_off_quietly(ide_drive_t *drive) 467static int auide_dma_off_quietly(ide_drive_t *drive)
665{ 468{
666// printk("%s\n", __FUNCTION__); 469 drive->using_dma = 0;
667 drive->using_dma = 0; 470 return auide_dma_host_off(drive);
668 return auide_dma_host_off(drive);
669} 471}
670 472
671static int auide_dma_lostirq(ide_drive_t *drive) 473static int auide_dma_lostirq(ide_drive_t *drive)
672{ 474{
673// printk("%s\n", __FUNCTION__); 475 printk(KERN_ERR "%s: IRQ lost\n", drive->name);
674 476 return 0;
675 printk(KERN_ERR "%s: IRQ lost\n", drive->name);
676 return 0;
677} 477}
678 478
679static void auide_ddma_tx_callback(int irq, void *param, struct pt_regs *regs) 479static void auide_ddma_tx_callback(int irq, void *param, struct pt_regs *regs)
680{ 480{
681// printk("%s\n", __FUNCTION__); 481 _auide_hwif *ahwif = (_auide_hwif*)param;
682 482 ahwif->drive->waiting_for_dma = 0;
683 _auide_hwif *ahwif = (_auide_hwif*)param;
684 ahwif->drive->waiting_for_dma = 0;
685 return;
686} 483}
687 484
688static void auide_ddma_rx_callback(int irq, void *param, struct pt_regs *regs) 485static void auide_ddma_rx_callback(int irq, void *param, struct pt_regs *regs)
689{ 486{
690// printk("%s\n", __FUNCTION__); 487 _auide_hwif *ahwif = (_auide_hwif*)param;
488 ahwif->drive->waiting_for_dma = 0;
489}
490
491#endif /* end CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA */
691 492
692 _auide_hwif *ahwif = (_auide_hwif*)param; 493static void auide_init_dbdma_dev(dbdev_tab_t *dev, u32 dev_id, u32 tsize, u32 devwidth, u32 flags)
693 ahwif->drive->waiting_for_dma = 0; 494{
694 return; 495 dev->dev_id = dev_id;
496 dev->dev_physaddr = (u32)AU1XXX_ATA_PHYS_ADDR;
497 dev->dev_intlevel = 0;
498 dev->dev_intpolarity = 0;
499 dev->dev_tsize = tsize;
500 dev->dev_devwidth = devwidth;
501 dev->dev_flags = flags;
695} 502}
503
504#if defined(CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA)
696 505
697static int auide_dma_timeout(ide_drive_t *drive) 506static int auide_dma_timeout(ide_drive_t *drive)
698{ 507{
699// printk("%s\n", __FUNCTION__); 508// printk("%s\n", __FUNCTION__);
700 509
701 printk(KERN_ERR "%s: DMA timeout occurred: ", drive->name); 510 printk(KERN_ERR "%s: DMA timeout occurred: ", drive->name);
702 511
703 if (HWIF(drive)->ide_dma_test_irq(drive)) 512 if (HWIF(drive)->ide_dma_test_irq(drive))
704 return 0; 513 return 0;
705 514
706 return HWIF(drive)->ide_dma_end(drive); 515 return HWIF(drive)->ide_dma_end(drive);
707} 516}
708#endif /* end CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA */ 517
709 518
519static int auide_ddma_init(_auide_hwif *auide) {
520
521 dbdev_tab_t source_dev_tab, target_dev_tab;
522 u32 dev_id, tsize, devwidth, flags;
523 ide_hwif_t *hwif = auide->hwif;
710 524
711static int auide_ddma_init( _auide_hwif *auide ) 525 dev_id = AU1XXX_ATA_DDMA_REQ;
712{
713// printk("%s\n", __FUNCTION__);
714 526
715 dbdev_tab_t source_dev_tab; 527 if (auide->white_list || auide->black_list) {
716#if defined(CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA) 528 tsize = 8;
717 dbdev_tab_t target_dev_tab; 529 devwidth = 32;
718 ide_hwif_t *hwif = auide->hwif; 530 }
719 char warning_output [2][80]; 531 else {
720 int i; 532 tsize = 1;
721#endif 533 devwidth = 16;
534
535 printk(KERN_ERR "au1xxx-ide: %s is not on ide driver whitelist.\n",auide_hwif.drive->id->model);
536 printk(KERN_ERR " please read 'Documentation/mips/AU1xxx_IDE.README'");
537 }
722 538
723 /* Add our custom device to DDMA device table */ 539#ifdef IDE_AU1XXX_BURSTMODE
724 /* Create our new device entries in the table */ 540 flags = DEV_FLAGS_SYNC | DEV_FLAGS_BURSTABLE;
725#if defined(CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA)
726 source_dev_tab.dev_id = AU1XXX_ATA_DDMA_REQ;
727
728 if( auide->white_list || auide->black_list ){
729 source_dev_tab.dev_tsize = 8;
730 source_dev_tab.dev_devwidth = 32;
731 source_dev_tab.dev_physaddr = (u32)AU1XXX_ATA_PHYS_ADDR;
732 source_dev_tab.dev_intlevel = 0;
733 source_dev_tab.dev_intpolarity = 0;
734
735 /* init device table for target - static bus controller - */
736 target_dev_tab.dev_id = DSCR_CMD0_ALWAYS;
737 target_dev_tab.dev_tsize = 8;
738 target_dev_tab.dev_devwidth = 32;
739 target_dev_tab.dev_physaddr = (u32)AU1XXX_ATA_PHYS_ADDR;
740 target_dev_tab.dev_intlevel = 0;
741 target_dev_tab.dev_intpolarity = 0;
742 target_dev_tab.dev_flags = DEV_FLAGS_ANYUSE;
743 }
744 else{
745 source_dev_tab.dev_tsize = 1;
746 source_dev_tab.dev_devwidth = 16;
747 source_dev_tab.dev_physaddr = (u32)AU1XXX_ATA_PHYS_ADDR;
748 source_dev_tab.dev_intlevel = 0;
749 source_dev_tab.dev_intpolarity = 0;
750
751 /* init device table for target - static bus controller - */
752 target_dev_tab.dev_id = DSCR_CMD0_ALWAYS;
753 target_dev_tab.dev_tsize = 1;
754 target_dev_tab.dev_devwidth = 16;
755 target_dev_tab.dev_physaddr = (u32)AU1XXX_ATA_PHYS_ADDR;
756 target_dev_tab.dev_intlevel = 0;
757 target_dev_tab.dev_intpolarity = 0;
758 target_dev_tab.dev_flags = DEV_FLAGS_ANYUSE;
759
760 sprintf(&warning_output[0][0],
761 "%s is not on ide driver white list.",
762 auide_hwif.drive->id->model);
763 for ( i=strlen(&warning_output[0][0]) ; i<76; i++ ){
764 sprintf(&warning_output[0][i]," ");
765 }
766
767 sprintf(&warning_output[1][0],
768 "To add %s please read 'Documentation/mips/AU1xxx_IDE.README'.",
769 auide_hwif.drive->id->model);
770 for ( i=strlen(&warning_output[1][0]) ; i<76; i++ ){
771 sprintf(&warning_output[1][i]," ");
772 }
773
774 printk("\n****************************************");
775 printk("****************************************\n");
776 printk("* %s *\n",&warning_output[0][0]);
777 printk("* Switch to safe MWDMA Mode! ");
778 printk(" *\n");
779 printk("* %s *\n",&warning_output[1][0]);
780 printk("****************************************");
781 printk("****************************************\n\n");
782 }
783#else 541#else
784 source_dev_tab.dev_id = DSCR_CMD0_ALWAYS; 542 flags = DEV_FLAGS_SYNC;
785 source_dev_tab.dev_tsize = 8;
786 source_dev_tab.dev_devwidth = 32;
787 source_dev_tab.dev_physaddr = (u32)AU1XXX_ATA_PHYS_ADDR;
788 source_dev_tab.dev_intlevel = 0;
789 source_dev_tab.dev_intpolarity = 0;
790#endif 543#endif
791 544
792#if CONFIG_BLK_DEV_IDE_AU1XXX_BURSTABLE_ON 545 /* setup dev_tab for tx channel */
793 /* set flags for tx channel */ 546 auide_init_dbdma_dev( &source_dev_tab,
794 source_dev_tab.dev_flags = DEV_FLAGS_OUT 547 dev_id,
795 | DEV_FLAGS_SYNC 548 tsize, devwidth, DEV_FLAGS_OUT | flags);
796 | DEV_FLAGS_BURSTABLE; 549 auide->tx_dev_id = au1xxx_ddma_add_device( &source_dev_tab );
797 auide->tx_dev_id = au1xxx_ddma_add_device( &source_dev_tab ); 550
798 /* set flags for rx channel */ 551 auide_init_dbdma_dev( &source_dev_tab,
799 source_dev_tab.dev_flags = DEV_FLAGS_IN 552 dev_id,
800 | DEV_FLAGS_SYNC 553 tsize, devwidth, DEV_FLAGS_IN | flags);
801 | DEV_FLAGS_BURSTABLE; 554 auide->rx_dev_id = au1xxx_ddma_add_device( &source_dev_tab );
802 auide->rx_dev_id = au1xxx_ddma_add_device( &source_dev_tab ); 555
556 /* We also need to add a target device for the DMA */
557 auide_init_dbdma_dev( &target_dev_tab,
558 (u32)DSCR_CMD0_ALWAYS,
559 tsize, devwidth, DEV_FLAGS_ANYUSE);
560 auide->target_dev_id = au1xxx_ddma_add_device(&target_dev_tab);
561
562 /* Get a channel for TX */
563 auide->tx_chan = au1xxx_dbdma_chan_alloc(auide->target_dev_id,
564 auide->tx_dev_id,
565 auide_ddma_tx_callback,
566 (void*)auide);
567
568 /* Get a channel for RX */
569 auide->rx_chan = au1xxx_dbdma_chan_alloc(auide->rx_dev_id,
570 auide->target_dev_id,
571 auide_ddma_rx_callback,
572 (void*)auide);
573
574 auide->tx_desc_head = (void*)au1xxx_dbdma_ring_alloc(auide->tx_chan,
575 NUM_DESCRIPTORS);
576 auide->rx_desc_head = (void*)au1xxx_dbdma_ring_alloc(auide->rx_chan,
577 NUM_DESCRIPTORS);
578
579 hwif->dmatable_cpu = dma_alloc_coherent(auide->dev,
580 PRD_ENTRIES * PRD_BYTES, /* 1 Page */
581 &hwif->dmatable_dma, GFP_KERNEL);
582
583 au1xxx_dbdma_start( auide->tx_chan );
584 au1xxx_dbdma_start( auide->rx_chan );
585
586 return 0;
587}
803#else 588#else
804 /* set flags for tx channel */ 589
805 source_dev_tab.dev_flags = DEV_FLAGS_OUT | DEV_FLAGS_SYNC; 590static int auide_ddma_init( _auide_hwif *auide )
806 auide->tx_dev_id = au1xxx_ddma_add_device( &source_dev_tab ); 591{
807 /* set flags for rx channel */ 592 dbdev_tab_t source_dev_tab;
808 source_dev_tab.dev_flags = DEV_FLAGS_IN | DEV_FLAGS_SYNC; 593 int flags;
809 auide->rx_dev_id = au1xxx_ddma_add_device( &source_dev_tab );
810#endif
811 594
812#if defined(CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA) 595#ifdef IDE_AU1XXX_BURSTMODE
813 596 flags = DEV_FLAGS_SYNC | DEV_FLAGS_BURSTABLE;
814 auide->target_dev_id = au1xxx_ddma_add_device(&target_dev_tab); 597#else
815 598 flags = DEV_FLAGS_SYNC;
816 /* Get a channel for TX */
817 auide->tx_chan = au1xxx_dbdma_chan_alloc(auide->target_dev_id,
818 auide->tx_dev_id,
819 auide_ddma_tx_callback,
820 (void*)auide);
821 /* Get a channel for RX */
822 auide->rx_chan = au1xxx_dbdma_chan_alloc(auide->rx_dev_id,
823 auide->target_dev_id,
824 auide_ddma_rx_callback,
825 (void*)auide);
826#else /* CONFIG_BLK_DEV_IDE_AU1XXX_PIO_DBDMA */
827 /*
828 * Note: if call back is not enabled, update ctp->cur_ptr manually
829 */
830 auide->tx_chan = au1xxx_dbdma_chan_alloc(DSCR_CMD0_ALWAYS,
831 auide->tx_dev_id,
832 NULL,
833 (void*)auide);
834 auide->rx_chan = au1xxx_dbdma_chan_alloc(auide->rx_dev_id,
835 DSCR_CMD0_ALWAYS,
836 NULL,
837 (void*)auide);
838#endif 599#endif
839 auide->tx_desc_head = (void*)au1xxx_dbdma_ring_alloc(auide->tx_chan,
840 NUM_DESCRIPTORS);
841 auide->rx_desc_head = (void*)au1xxx_dbdma_ring_alloc(auide->rx_chan,
842 NUM_DESCRIPTORS);
843 600
844#if defined(CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA) 601 /* setup dev_tab for tx channel */
845 hwif->dmatable_cpu = dma_alloc_coherent(auide->dev, 602 auide_init_dbdma_dev( &source_dev_tab,
846 PRD_ENTRIES * PRD_BYTES, /* 1 Page */ 603 (u32)DSCR_CMD0_ALWAYS,
847 &hwif->dmatable_dma, GFP_KERNEL); 604 8, 32, DEV_FLAGS_OUT | flags);
848 605 auide->tx_dev_id = au1xxx_ddma_add_device( &source_dev_tab );
849 auide->sg_table = kmalloc(sizeof(struct scatterlist) * PRD_ENTRIES, 606
850 GFP_KERNEL|GFP_DMA); 607 auide_init_dbdma_dev( &source_dev_tab,
851 if (auide->sg_table == NULL) { 608 (u32)DSCR_CMD0_ALWAYS,
852 return -ENOMEM; 609 8, 32, DEV_FLAGS_IN | flags);
853 } 610 auide->rx_dev_id = au1xxx_ddma_add_device( &source_dev_tab );
854#endif 611
855 au1xxx_dbdma_start( auide->tx_chan ); 612 /* Get a channel for TX */
856 au1xxx_dbdma_start( auide->rx_chan ); 613 auide->tx_chan = au1xxx_dbdma_chan_alloc(DSCR_CMD0_ALWAYS,
857 return 0; 614 auide->tx_dev_id,
615 NULL,
616 (void*)auide);
617
618 /* Get a channel for RX */
619 auide->rx_chan = au1xxx_dbdma_chan_alloc(auide->rx_dev_id,
620 DSCR_CMD0_ALWAYS,
621 NULL,
622 (void*)auide);
623
624 auide->tx_desc_head = (void*)au1xxx_dbdma_ring_alloc(auide->tx_chan,
625 NUM_DESCRIPTORS);
626 auide->rx_desc_head = (void*)au1xxx_dbdma_ring_alloc(auide->rx_chan,
627 NUM_DESCRIPTORS);
628
629 au1xxx_dbdma_start( auide->tx_chan );
630 au1xxx_dbdma_start( auide->rx_chan );
631
632 return 0;
858} 633}
634#endif
859 635
860static void auide_setup_ports(hw_regs_t *hw, _auide_hwif *ahwif) 636static void auide_setup_ports(hw_regs_t *hw, _auide_hwif *ahwif)
861{ 637{
862 int i; 638 int i;
863#define ide_ioreg_t unsigned long 639 unsigned long *ata_regs = hw->io_ports;
864 ide_ioreg_t *ata_regs = hw->io_ports; 640
865 641 /* FIXME? */
866 /* fixme */ 642 for (i = 0; i < IDE_CONTROL_OFFSET; i++) {
867 for (i = 0; i < IDE_CONTROL_OFFSET; i++) { 643 *ata_regs++ = ahwif->regbase + (i << AU1XXX_ATA_REG_OFFSET);
868 *ata_regs++ = (ide_ioreg_t) ahwif->regbase 644 }
869 + (ide_ioreg_t)(i << AU1XXX_ATA_REG_OFFSET); 645
870 } 646 /* set the Alternative Status register */
871 647 *ata_regs = ahwif->regbase + (14 << AU1XXX_ATA_REG_OFFSET);
872 /* set the Alternative Status register */
873 *ata_regs = (ide_ioreg_t) ahwif->regbase
874 + (ide_ioreg_t)(14 << AU1XXX_ATA_REG_OFFSET);
875} 648}
876 649
877static int au_ide_probe(struct device *dev) 650static int au_ide_probe(struct device *dev)
878{ 651{
879 struct platform_device *pdev = to_platform_device(dev); 652 struct platform_device *pdev = to_platform_device(dev);
880 _auide_hwif *ahwif = &auide_hwif; 653 _auide_hwif *ahwif = &auide_hwif;
881 ide_hwif_t *hwif; 654 ide_hwif_t *hwif;
882 struct resource *res; 655 struct resource *res;
883 int ret = 0; 656 int ret = 0;
884 657
885#if defined(CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA) 658#if defined(CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA)
886 char *mode = "MWDMA2"; 659 char *mode = "MWDMA2";
887#elif defined(CONFIG_BLK_DEV_IDE_AU1XXX_PIO_DBDMA) 660#elif defined(CONFIG_BLK_DEV_IDE_AU1XXX_PIO_DBDMA)
888 char *mode = "PIO+DDMA(offload)"; 661 char *mode = "PIO+DDMA(offload)";
889#endif 662#endif
890 663
891 memset(&auide_hwif, 0, sizeof(_auide_hwif)); 664 memset(&auide_hwif, 0, sizeof(_auide_hwif));
892 auide_hwif.dev = 0; 665 auide_hwif.dev = 0;
893 666
894 ahwif->dev = dev; 667 ahwif->dev = dev;
895 ahwif->irq = platform_get_irq(pdev, 0); 668 ahwif->irq = platform_get_irq(pdev, 0);
@@ -902,11 +675,11 @@ static int au_ide_probe(struct device *dev)
902 goto out; 675 goto out;
903 } 676 }
904 677
905 if (!request_mem_region (res->start, res->end-res->start, pdev->name)) { 678 if (!request_mem_region (res->start, res->end-res->start, pdev->name)) {
906 pr_debug("%s: request_mem_region failed\n", DRV_NAME); 679 pr_debug("%s: request_mem_region failed\n", DRV_NAME);
907 ret = -EBUSY; 680 ret = -EBUSY;
908 goto out; 681 goto out;
909 } 682 }
910 683
911 ahwif->regbase = (u32)ioremap(res->start, res->end-res->start); 684 ahwif->regbase = (u32)ioremap(res->start, res->end-res->start);
912 if (ahwif->regbase == 0) { 685 if (ahwif->regbase == 0) {
@@ -914,130 +687,92 @@ static int au_ide_probe(struct device *dev)
914 goto out; 687 goto out;
915 } 688 }
916 689
917 hwif = &ide_hwifs[pdev->id]; 690 /* FIXME: This might possibly break PCMCIA IDE devices */
691
692 hwif = &ide_hwifs[pdev->id];
918 hw_regs_t *hw = &hwif->hw; 693 hw_regs_t *hw = &hwif->hw;
919 hwif->irq = hw->irq = ahwif->irq; 694 hwif->irq = hw->irq = ahwif->irq;
920 hwif->chipset = ide_au1xxx; 695 hwif->chipset = ide_au1xxx;
921 696
922 auide_setup_ports(hw, ahwif); 697 auide_setup_ports(hw, ahwif);
923 memcpy(hwif->io_ports, hw->io_ports, sizeof(hwif->io_ports)); 698 memcpy(hwif->io_ports, hw->io_ports, sizeof(hwif->io_ports));
924 699
925#ifdef CONFIG_BLK_DEV_IDE_AU1XXX_SEQTS_PER_RQ 700 hwif->ultra_mask = 0x0; /* Disable Ultra DMA */
926 hwif->rqsize = CONFIG_BLK_DEV_IDE_AU1XXX_SEQTS_PER_RQ;
927 hwif->rqsize = ((hwif->rqsize > AU1XXX_ATA_RQSIZE)
928 || (hwif->rqsize < 32)) ? AU1XXX_ATA_RQSIZE : hwif->rqsize;
929#else /* if kernel config is not set */
930 hwif->rqsize = AU1XXX_ATA_RQSIZE;
931#endif
932
933 hwif->ultra_mask = 0x0; /* Disable Ultra DMA */
934#ifdef CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA 701#ifdef CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA
935 hwif->mwdma_mask = 0x07; /* Multimode-2 DMA */ 702 hwif->mwdma_mask = 0x07; /* Multimode-2 DMA */
936 hwif->swdma_mask = 0x07; 703 hwif->swdma_mask = 0x00;
937#else 704#else
938 hwif->mwdma_mask = 0x0; 705 hwif->mwdma_mask = 0x0;
939 hwif->swdma_mask = 0x0; 706 hwif->swdma_mask = 0x0;
707#endif
708
709 hwif->noprobe = 0;
710 hwif->drives[0].unmask = 1;
711 hwif->drives[1].unmask = 1;
712
713 /* hold should be on in all cases */
714 hwif->hold = 1;
715 hwif->mmio = 2;
716
717 /* If the user has selected DDMA assisted copies,
718 then set up a few local I/O function entry points
719 */
720
721#ifdef CONFIG_BLK_DEV_IDE_AU1XXX_PIO_DBDMA
722 hwif->INSW = auide_insw;
723 hwif->OUTSW = auide_outsw;
940#endif 724#endif
941 //hwif->noprobe = !hwif->io_ports[IDE_DATA_OFFSET]; 725
942 hwif->noprobe = 0; 726 hwif->tuneproc = &auide_tune_drive;
943 hwif->drives[0].unmask = 1; 727 hwif->speedproc = &auide_tune_chipset;
944 hwif->drives[1].unmask = 1;
945
946 /* hold should be on in all cases */
947 hwif->hold = 1;
948 hwif->mmio = 2;
949
950 /* set up local I/O function entry points */
951 hwif->INB = auide_inb;
952 hwif->INW = auide_inw;
953 hwif->INL = auide_inl;
954 hwif->INSW = auide_insw;
955 hwif->INSL = auide_insl;
956 hwif->OUTB = auide_outb;
957 hwif->OUTBSYNC = auide_outbsync;
958 hwif->OUTW = auide_outw;
959 hwif->OUTL = auide_outl;
960 hwif->OUTSW = auide_outsw;
961 hwif->OUTSL = auide_outsl;
962
963 hwif->tuneproc = &auide_tune_drive;
964 hwif->speedproc = &auide_tune_chipset;
965 728
966#ifdef CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA 729#ifdef CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA
967 hwif->ide_dma_off_quietly = &auide_dma_off_quietly; 730 hwif->ide_dma_off_quietly = &auide_dma_off_quietly;
968 hwif->ide_dma_timeout = &auide_dma_timeout; 731 hwif->ide_dma_timeout = &auide_dma_timeout;
969 732
970 hwif->ide_dma_check = &auide_dma_check; 733 hwif->ide_dma_check = &auide_dma_check;
971 hwif->dma_exec_cmd = &auide_dma_exec_cmd; 734 hwif->dma_exec_cmd = &auide_dma_exec_cmd;
972 hwif->dma_start = &auide_dma_start; 735 hwif->dma_start = &auide_dma_start;
973 hwif->ide_dma_end = &auide_dma_end; 736 hwif->ide_dma_end = &auide_dma_end;
974 hwif->dma_setup = &auide_dma_setup; 737 hwif->dma_setup = &auide_dma_setup;
975 hwif->ide_dma_test_irq = &auide_dma_test_irq; 738 hwif->ide_dma_test_irq = &auide_dma_test_irq;
976 hwif->ide_dma_host_off = &auide_dma_host_off; 739 hwif->ide_dma_host_off = &auide_dma_host_off;
977 hwif->ide_dma_host_on = &auide_dma_host_on; 740 hwif->ide_dma_host_on = &auide_dma_host_on;
978 hwif->ide_dma_lostirq = &auide_dma_lostirq; 741 hwif->ide_dma_lostirq = &auide_dma_lostirq;
979 hwif->ide_dma_on = &auide_dma_on; 742 hwif->ide_dma_on = &auide_dma_on;
980 743
981 hwif->autodma = 1; 744 hwif->autodma = 1;
982 hwif->drives[0].autodma = hwif->autodma; 745 hwif->drives[0].autodma = hwif->autodma;
983 hwif->drives[1].autodma = hwif->autodma; 746 hwif->drives[1].autodma = hwif->autodma;
984 hwif->atapi_dma = 1; 747 hwif->atapi_dma = 1;
985 hwif->drives[0].using_dma = 1; 748
986 hwif->drives[1].using_dma = 1;
987#else /* !CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA */ 749#else /* !CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA */
988 hwif->autodma = 0; 750 hwif->autodma = 0;
989 hwif->channel = 0; 751 hwif->channel = 0;
990 hwif->hold = 1; 752 hwif->hold = 1;
991 hwif->select_data = 0; /* no chipset-specific code */ 753 hwif->select_data = 0; /* no chipset-specific code */
992 hwif->config_data = 0; /* no chipset-specific code */ 754 hwif->config_data = 0; /* no chipset-specific code */
993 755
994 hwif->drives[0].autodma = 0; 756 hwif->drives[0].autodma = 0;
995 hwif->drives[0].drive_data = 0; /* no drive data */ 757 hwif->drives[0].autotune = 1; /* 1=autotune, 2=noautotune, 0=default */
996 hwif->drives[0].using_dma = 0;
997 hwif->drives[0].waiting_for_dma = 0;
998 hwif->drives[0].autotune = 1; /* 1=autotune, 2=noautotune, 0=default */
999 /* secondary hdd not supported */
1000 hwif->drives[1].autodma = 0;
1001
1002 hwif->drives[1].drive_data = 0;
1003 hwif->drives[1].using_dma = 0;
1004 hwif->drives[1].waiting_for_dma = 0;
1005 hwif->drives[1].autotune = 2; /* 1=autotune, 2=noautotune, 0=default */
1006#endif
1007 hwif->drives[0].io_32bit = 0; /* 0=16-bit, 1=32-bit, 2/3=32bit+sync */
1008 hwif->drives[1].io_32bit = 0; /* 0=16-bit, 1=32-bit, 2/3=32bit+sync */
1009
1010 /*Register Driver with PM Framework*/
1011#ifdef CONFIG_PM
1012 auide_hwif.pm.lock = SPIN_LOCK_UNLOCKED;
1013 auide_hwif.pm.stopped = 0;
1014
1015 auide_hwif.pm.dev = new_au1xxx_power_device( "ide",
1016 &au1200ide_pm_callback,
1017 NULL);
1018 if ( auide_hwif.pm.dev == NULL )
1019 printk(KERN_INFO "Unable to create a power management \
1020 device entry for the au1200-IDE.\n");
1021 else
1022 printk(KERN_INFO "Power management device entry for the \
1023 au1200-IDE loaded.\n");
1024#endif 758#endif
759 hwif->drives[0].no_io_32bit = 1;
1025 760
1026 auide_hwif.hwif = hwif; 761 auide_hwif.hwif = hwif;
1027 hwif->hwif_data = &auide_hwif; 762 hwif->hwif_data = &auide_hwif;
1028 763
1029#ifdef CONFIG_BLK_DEV_IDE_AU1XXX_PIO_DBDMA 764#ifdef CONFIG_BLK_DEV_IDE_AU1XXX_PIO_DBDMA
1030 auide_ddma_init(&auide_hwif); 765 auide_ddma_init(&auide_hwif);
1031 dbdma_init_done = 1; 766 dbdma_init_done = 1;
1032#endif 767#endif
1033 768
1034 probe_hwif_init(hwif); 769 probe_hwif_init(hwif);
1035 dev_set_drvdata(dev, hwif); 770 dev_set_drvdata(dev, hwif);
1036 771
1037 printk(KERN_INFO "Au1xxx IDE(builtin) configured for %s\n", mode ); 772 printk(KERN_INFO "Au1xxx IDE(builtin) configured for %s\n", mode );
1038 773
1039out: 774 out:
1040 return ret; 775 return ret;
1041} 776}
1042 777
1043static int au_ide_remove(struct device *dev) 778static int au_ide_remove(struct device *dev)
@@ -1045,7 +780,7 @@ static int au_ide_remove(struct device *dev)
1045 struct platform_device *pdev = to_platform_device(dev); 780 struct platform_device *pdev = to_platform_device(dev);
1046 struct resource *res; 781 struct resource *res;
1047 ide_hwif_t *hwif = dev_get_drvdata(dev); 782 ide_hwif_t *hwif = dev_get_drvdata(dev);
1048 _auide_hwif *ahwif = &auide_hwif; 783 _auide_hwif *ahwif = &auide_hwif;
1049 784
1050 ide_unregister(hwif - ide_hwifs); 785 ide_unregister(hwif - ide_hwifs);
1051 786
@@ -1069,180 +804,11 @@ static int __init au_ide_init(void)
1069 return driver_register(&au1200_ide_driver); 804 return driver_register(&au1200_ide_driver);
1070} 805}
1071 806
1072static void __init au_ide_exit(void) 807static void __exit au_ide_exit(void)
1073{ 808{
1074 driver_unregister(&au1200_ide_driver); 809 driver_unregister(&au1200_ide_driver);
1075} 810}
1076 811
1077#ifdef CONFIG_PM
1078int au1200ide_pm_callback( au1xxx_power_dev_t *dev,\
1079 au1xxx_request_t request, void *data) {
1080
1081 unsigned int d, err = 0;
1082 unsigned long flags;
1083
1084 spin_lock_irqsave(auide_hwif.pm.lock, flags);
1085
1086 switch (request){
1087 case AU1XXX_PM_SLEEP:
1088 err = au1xxxide_pm_sleep(dev);
1089 break;
1090 case AU1XXX_PM_WAKEUP:
1091 d = *((unsigned int*)data);
1092 if ( d > 0 && d <= 99) {
1093 err = au1xxxide_pm_standby(dev);
1094 }
1095 else {
1096 err = au1xxxide_pm_resume(dev);
1097 }
1098 break;
1099 case AU1XXX_PM_GETSTATUS:
1100 err = au1xxxide_pm_getstatus(dev);
1101 break;
1102 case AU1XXX_PM_ACCESS:
1103 err = au1xxxide_pm_access(dev);
1104 break;
1105 case AU1XXX_PM_IDLE:
1106 err = au1xxxide_pm_idle(dev);
1107 break;
1108 case AU1XXX_PM_CLEANUP:
1109 err = au1xxxide_pm_cleanup(dev);
1110 break;
1111 default:
1112 err = -1;
1113 break;
1114 }
1115
1116 spin_unlock_irqrestore(auide_hwif.pm.lock, flags);
1117
1118 return err;
1119}
1120
1121static int au1xxxide_pm_standby( au1xxx_power_dev_t *dev ) {
1122 return 0;
1123}
1124
1125static int au1xxxide_pm_sleep( au1xxx_power_dev_t *dev ) {
1126
1127 int retval;
1128 ide_hwif_t *hwif = auide_hwif.hwif;
1129 struct request rq;
1130 struct request_pm_state rqpm;
1131 ide_task_t args;
1132
1133 if(auide_hwif.pm.stopped)
1134 return -1;
1135
1136 /*
1137 * wait until hard disc is ready
1138 */
1139 if ( wait_for_ready(&hwif->drives[0], 35000) ) {
1140 printk("Wait for drive sleep timeout!\n");
1141 retval = -1;
1142 }
1143
1144 /*
1145 * sequenz to tell the high level ide driver that pm is resuming
1146 */
1147 memset(&rq, 0, sizeof(rq));
1148 memset(&rqpm, 0, sizeof(rqpm));
1149 memset(&args, 0, sizeof(args));
1150 rq.flags = REQ_PM_SUSPEND;
1151 rq.special = &args;
1152 rq.pm = &rqpm;
1153 rqpm.pm_step = ide_pm_state_start_suspend;
1154 rqpm.pm_state = PMSG_SUSPEND;
1155
1156 retval = ide_do_drive_cmd(&hwif->drives[0], &rq, ide_wait);
1157
1158 if (wait_for_ready (&hwif->drives[0], 35000)) {
1159 printk("Wait for drive sleep timeout!\n");
1160 retval = -1;
1161 }
1162
1163 /*
1164 * stop dbdma channels
1165 */
1166 au1xxx_dbdma_reset(auide_hwif.tx_chan);
1167 au1xxx_dbdma_reset(auide_hwif.rx_chan);
1168
1169 auide_hwif.pm.stopped = 1;
1170
1171 return retval;
1172}
1173
1174static int au1xxxide_pm_resume( au1xxx_power_dev_t *dev ) {
1175
1176 int retval;
1177 ide_hwif_t *hwif = auide_hwif.hwif;
1178 struct request rq;
1179 struct request_pm_state rqpm;
1180 ide_task_t args;
1181
1182 if(!auide_hwif.pm.stopped)
1183 return -1;
1184
1185 /*
1186 * start dbdma channels
1187 */
1188 au1xxx_dbdma_start(auide_hwif.tx_chan);
1189 au1xxx_dbdma_start(auide_hwif.rx_chan);
1190
1191 /*
1192 * wait until hard disc is ready
1193 */
1194 if (wait_for_ready ( &hwif->drives[0], 35000)) {
1195 printk("Wait for drive wake up timeout!\n");
1196 retval = -1;
1197 }
1198
1199 /*
1200 * sequenz to tell the high level ide driver that pm is resuming
1201 */
1202 memset(&rq, 0, sizeof(rq));
1203 memset(&rqpm, 0, sizeof(rqpm));
1204 memset(&args, 0, sizeof(args));
1205 rq.flags = REQ_PM_RESUME;
1206 rq.special = &args;
1207 rq.pm = &rqpm;
1208 rqpm.pm_step = ide_pm_state_start_resume;
1209 rqpm.pm_state = PMSG_ON;
1210
1211 retval = ide_do_drive_cmd(&hwif->drives[0], &rq, ide_head_wait);
1212
1213 /*
1214 * wait for hard disc
1215 */
1216 if ( wait_for_ready(&hwif->drives[0], 35000) ) {
1217 printk("Wait for drive wake up timeout!\n");
1218 retval = -1;
1219 }
1220
1221 auide_hwif.pm.stopped = 0;
1222
1223 return retval;
1224}
1225
1226static int au1xxxide_pm_getstatus( au1xxx_power_dev_t *dev ) {
1227 return dev->cur_state;
1228}
1229
1230static int au1xxxide_pm_access( au1xxx_power_dev_t *dev ) {
1231 if (dev->cur_state != AWAKE_STATE)
1232 return 0;
1233 else
1234 return -1;
1235}
1236
1237static int au1xxxide_pm_idle( au1xxx_power_dev_t *dev ) {
1238 return 0;
1239}
1240
1241static int au1xxxide_pm_cleanup( au1xxx_power_dev_t *dev ) {
1242 return 0;
1243}
1244#endif /* CONFIG_PM */
1245
1246MODULE_LICENSE("GPL"); 812MODULE_LICENSE("GPL");
1247MODULE_DESCRIPTION("AU1200 IDE driver"); 813MODULE_DESCRIPTION("AU1200 IDE driver");
1248 814
diff --git a/drivers/ide/pci/sgiioc4.c b/drivers/ide/pci/sgiioc4.c
index af526b671c4e..4ee597d08797 100644
--- a/drivers/ide/pci/sgiioc4.c
+++ b/drivers/ide/pci/sgiioc4.c
@@ -622,12 +622,18 @@ sgiioc4_ide_setup_pci_device(struct pci_dev *dev, ide_pci_device_t * d)
622 ide_hwif_t *hwif; 622 ide_hwif_t *hwif;
623 int h; 623 int h;
624 624
625 /*
626 * Find an empty HWIF; if none available, return -ENOMEM.
627 */
625 for (h = 0; h < MAX_HWIFS; ++h) { 628 for (h = 0; h < MAX_HWIFS; ++h) {
626 hwif = &ide_hwifs[h]; 629 hwif = &ide_hwifs[h];
627 /* Find an empty HWIF */
628 if (hwif->chipset == ide_unknown) 630 if (hwif->chipset == ide_unknown)
629 break; 631 break;
630 } 632 }
633 if (h == MAX_HWIFS) {
634 printk(KERN_ERR "%s: too many IDE interfaces, no room in table\n", d->name);
635 return -ENOMEM;
636 }
631 637
632 /* Get the CmdBlk and CtrlBlk Base Registers */ 638 /* Get the CmdBlk and CtrlBlk Base Registers */
633 base = pci_resource_start(dev, 0) + IOC4_CMD_OFFSET; 639 base = pci_resource_start(dev, 0) + IOC4_CMD_OFFSET;
diff --git a/drivers/ide/pci/via82cxxx.c b/drivers/ide/pci/via82cxxx.c
index 7161ce0ef5aa..86fb1e0286d3 100644
--- a/drivers/ide/pci/via82cxxx.c
+++ b/drivers/ide/pci/via82cxxx.c
@@ -80,6 +80,7 @@ static struct via_isa_bridge {
80 u16 flags; 80 u16 flags;
81} via_isa_bridges[] = { 81} via_isa_bridges[] = {
82 { "vt6410", PCI_DEVICE_ID_VIA_6410, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST }, 82 { "vt6410", PCI_DEVICE_ID_VIA_6410, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST },
83 { "vt8251", PCI_DEVICE_ID_VIA_8251, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST },
83 { "vt8237", PCI_DEVICE_ID_VIA_8237, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST }, 84 { "vt8237", PCI_DEVICE_ID_VIA_8237, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST },
84 { "vt8235", PCI_DEVICE_ID_VIA_8235, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST }, 85 { "vt8235", PCI_DEVICE_ID_VIA_8235, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST },
85 { "vt8233a", PCI_DEVICE_ID_VIA_8233A, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST }, 86 { "vt8233a", PCI_DEVICE_ID_VIA_8233A, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST },
diff --git a/drivers/ieee1394/hosts.h b/drivers/ieee1394/hosts.h
index 38f42112dff0..ae9b02cc013f 100644
--- a/drivers/ieee1394/hosts.h
+++ b/drivers/ieee1394/hosts.h
@@ -41,6 +41,7 @@ struct hpsb_host {
41 /* this nodes state */ 41 /* this nodes state */
42 unsigned in_bus_reset:1; 42 unsigned in_bus_reset:1;
43 unsigned is_shutdown:1; 43 unsigned is_shutdown:1;
44 unsigned resume_packet_sent:1;
44 45
45 /* this nodes' duties on the bus */ 46 /* this nodes' duties on the bus */
46 unsigned is_root:1; 47 unsigned is_root:1;
diff --git a/drivers/ieee1394/nodemgr.c b/drivers/ieee1394/nodemgr.c
index 7fff5a1d2ea4..0ea37b1bccb2 100644
--- a/drivers/ieee1394/nodemgr.c
+++ b/drivers/ieee1394/nodemgr.c
@@ -1349,6 +1349,33 @@ static void nodemgr_update_pdrv(struct node_entry *ne)
1349} 1349}
1350 1350
1351 1351
1352/* Write the BROADCAST_CHANNEL as per IEEE1394a 8.3.2.3.11 and 8.4.2.3. This
1353 * seems like an optional service but in the end it is practically mandatory
1354 * as a consequence of these clauses.
1355 *
1356 * Note that we cannot do a broadcast write to all nodes at once because some
1357 * pre-1394a devices would hang. */
1358static void nodemgr_irm_write_bc(struct node_entry *ne, int generation)
1359{
1360 const u64 bc_addr = (CSR_REGISTER_BASE | CSR_BROADCAST_CHANNEL);
1361 quadlet_t bc_remote, bc_local;
1362 int ret;
1363
1364 if (!ne->host->is_irm || ne->generation != generation ||
1365 ne->nodeid == ne->host->node_id)
1366 return;
1367
1368 bc_local = cpu_to_be32(ne->host->csr.broadcast_channel);
1369
1370 /* Check if the register is implemented and 1394a compliant. */
1371 ret = hpsb_read(ne->host, ne->nodeid, generation, bc_addr, &bc_remote,
1372 sizeof(bc_remote));
1373 if (!ret && bc_remote & cpu_to_be32(0x80000000) &&
1374 bc_remote != bc_local)
1375 hpsb_node_write(ne, bc_addr, &bc_local, sizeof(bc_local));
1376}
1377
1378
1352static void nodemgr_probe_ne(struct host_info *hi, struct node_entry *ne, int generation) 1379static void nodemgr_probe_ne(struct host_info *hi, struct node_entry *ne, int generation)
1353{ 1380{
1354 struct device *dev; 1381 struct device *dev;
@@ -1360,6 +1387,8 @@ static void nodemgr_probe_ne(struct host_info *hi, struct node_entry *ne, int ge
1360 if (!dev) 1387 if (!dev)
1361 return; 1388 return;
1362 1389
1390 nodemgr_irm_write_bc(ne, generation);
1391
1363 /* If "needs_probe", then this is either a new or changed node we 1392 /* If "needs_probe", then this is either a new or changed node we
1364 * rescan totally. If the generation matches for an existing node 1393 * rescan totally. If the generation matches for an existing node
1365 * (one that existed prior to the bus reset) we send update calls 1394 * (one that existed prior to the bus reset) we send update calls
@@ -1413,9 +1442,25 @@ static void nodemgr_node_probe(struct host_info *hi, int generation)
1413 return; 1442 return;
1414} 1443}
1415 1444
1416/* Because we are a 1394a-2000 compliant IRM, we need to inform all the other 1445static int nodemgr_send_resume_packet(struct hpsb_host *host)
1417 * nodes of the broadcast channel. (Really we're only setting the validity 1446{
1418 * bit). Other IRM responsibilities go in here as well. */ 1447 struct hpsb_packet *packet;
1448 int ret = 1;
1449
1450 packet = hpsb_make_phypacket(host,
1451 0x003c0000 | NODEID_TO_NODE(host->node_id) << 24);
1452 if (packet) {
1453 packet->no_waiter = 1;
1454 packet->generation = get_hpsb_generation(host);
1455 ret = hpsb_send_packet(packet);
1456 }
1457 if (ret)
1458 HPSB_WARN("fw-host%d: Failed to broadcast resume packet",
1459 host->id);
1460 return ret;
1461}
1462
1463/* Perform a few high-level IRM responsibilities. */
1419static int nodemgr_do_irm_duties(struct hpsb_host *host, int cycles) 1464static int nodemgr_do_irm_duties(struct hpsb_host *host, int cycles)
1420{ 1465{
1421 quadlet_t bc; 1466 quadlet_t bc;
@@ -1424,13 +1469,8 @@ static int nodemgr_do_irm_duties(struct hpsb_host *host, int cycles)
1424 if (!host->is_irm || host->irm_id == (nodeid_t)-1) 1469 if (!host->is_irm || host->irm_id == (nodeid_t)-1)
1425 return 1; 1470 return 1;
1426 1471
1427 host->csr.broadcast_channel |= 0x40000000; /* set validity bit */ 1472 /* We are a 1394a-2000 compliant IRM. Set the validity bit. */
1428 1473 host->csr.broadcast_channel |= 0x40000000;
1429 bc = cpu_to_be32(host->csr.broadcast_channel);
1430
1431 hpsb_write(host, LOCAL_BUS | ALL_NODES, get_hpsb_generation(host),
1432 (CSR_REGISTER_BASE | CSR_BROADCAST_CHANNEL),
1433 &bc, sizeof(quadlet_t));
1434 1474
1435 /* If there is no bus manager then we should set the root node's 1475 /* If there is no bus manager then we should set the root node's
1436 * force_root bit to promote bus stability per the 1394 1476 * force_root bit to promote bus stability per the 1394
@@ -1463,6 +1503,13 @@ static int nodemgr_do_irm_duties(struct hpsb_host *host, int cycles)
1463 } 1503 }
1464 } 1504 }
1465 1505
1506 /* Some devices suspend their ports while being connected to an inactive
1507 * host adapter, i.e. if connected before the low-level driver is
1508 * loaded. They become visible either when physically unplugged and
1509 * replugged, or when receiving a resume packet. Send one once. */
1510 if (!host->resume_packet_sent && !nodemgr_send_resume_packet(host))
1511 host->resume_packet_sent = 1;
1512
1466 return 1; 1513 return 1;
1467} 1514}
1468 1515
diff --git a/drivers/input/misc/wistron_btns.c b/drivers/input/misc/wistron_btns.c
index ef7ee924ecc6..b77e2692ba3a 100644
--- a/drivers/input/misc/wistron_btns.c
+++ b/drivers/input/misc/wistron_btns.c
@@ -339,7 +339,7 @@ static struct dmi_system_id dmi_ids[] = {
339 }, 339 },
340 .driver_data = keymap_acer_travelmate_240 340 .driver_data = keymap_acer_travelmate_240
341 }, 341 },
342 { 0, } 342 { NULL, }
343}; 343};
344 344
345static int __init select_keymap(void) 345static int __init select_keymap(void)
diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
index 4acc7fd4cd0f..4f41ec3e4332 100644
--- a/drivers/input/mouse/alps.c
+++ b/drivers/input/mouse/alps.c
@@ -42,7 +42,7 @@ static struct alps_model_info alps_model_data[] = {
42 { { 0x53, 0x02, 0x14 }, 0xf8, 0xf8, 0 }, 42 { { 0x53, 0x02, 0x14 }, 0xf8, 0xf8, 0 },
43 { { 0x63, 0x02, 0x0a }, 0xf8, 0xf8, 0 }, 43 { { 0x63, 0x02, 0x0a }, 0xf8, 0xf8, 0 },
44 { { 0x63, 0x02, 0x14 }, 0xf8, 0xf8, 0 }, 44 { { 0x63, 0x02, 0x14 }, 0xf8, 0xf8, 0 },
45 { { 0x63, 0x02, 0x28 }, 0xf8, 0xf8, 0 }, 45 { { 0x63, 0x02, 0x28 }, 0xf8, 0xf8, ALPS_FW_BK_2 }, /* Fujitsu Siemens S6010 */
46 { { 0x63, 0x02, 0x3c }, 0x8f, 0x8f, ALPS_WHEEL }, /* Toshiba Satellite S2400-103 */ 46 { { 0x63, 0x02, 0x3c }, 0x8f, 0x8f, ALPS_WHEEL }, /* Toshiba Satellite S2400-103 */
47 { { 0x63, 0x02, 0x50 }, 0xef, 0xef, ALPS_FW_BK_1 }, /* NEC Versa L320 */ 47 { { 0x63, 0x02, 0x50 }, 0xef, 0xef, ALPS_FW_BK_1 }, /* NEC Versa L320 */
48 { { 0x63, 0x02, 0x64 }, 0xf8, 0xf8, 0 }, 48 { { 0x63, 0x02, 0x64 }, 0xf8, 0xf8, 0 },
diff --git a/drivers/macintosh/therm_pm72.c b/drivers/macintosh/therm_pm72.c
index 3fc8cdd94c3d..5bb36274a5c6 100644
--- a/drivers/macintosh/therm_pm72.c
+++ b/drivers/macintosh/therm_pm72.c
@@ -933,7 +933,7 @@ static void do_monitor_cpu_combined(void)
933 if (state0->overtemp > 0) { 933 if (state0->overtemp > 0) {
934 state0->rpm = state0->mpu.rmaxn_exhaust_fan; 934 state0->rpm = state0->mpu.rmaxn_exhaust_fan;
935 state0->intake_rpm = intake = state0->mpu.rmaxn_intake_fan; 935 state0->intake_rpm = intake = state0->mpu.rmaxn_intake_fan;
936 pump = state0->pump_min; 936 pump = state0->pump_max;
937 goto do_set_fans; 937 goto do_set_fans;
938 } 938 }
939 939
diff --git a/drivers/macintosh/windfarm_pm81.c b/drivers/macintosh/windfarm_pm81.c
index 322c74b2687f..80ddf9776bde 100644
--- a/drivers/macintosh/windfarm_pm81.c
+++ b/drivers/macintosh/windfarm_pm81.c
@@ -207,7 +207,7 @@ static struct wf_smu_sys_fans_param wf_smu_sys_all_params[] = {
207 }, 207 },
208 /* Model ID 3 */ 208 /* Model ID 3 */
209 { 209 {
210 .model_id = 2, 210 .model_id = 3,
211 .itarget = 0x350000, 211 .itarget = 0x350000,
212 .gd = 0x08e00000, 212 .gd = 0x08e00000,
213 .gp = 0x00566666, 213 .gp = 0x00566666,
@@ -219,7 +219,7 @@ static struct wf_smu_sys_fans_param wf_smu_sys_all_params[] = {
219 }, 219 },
220 /* Model ID 5 */ 220 /* Model ID 5 */
221 { 221 {
222 .model_id = 2, 222 .model_id = 5,
223 .itarget = 0x3a0000, 223 .itarget = 0x3a0000,
224 .gd = 0x15400000, 224 .gd = 0x15400000,
225 .gp = 0x00233333, 225 .gp = 0x00233333,
diff --git a/drivers/md/md.c b/drivers/md/md.c
index cd12fca73b0d..8175a2a222da 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -1729,7 +1729,7 @@ level_show(mddev_t *mddev, char *page)
1729 if (p == NULL && mddev->raid_disks == 0) 1729 if (p == NULL && mddev->raid_disks == 0)
1730 return 0; 1730 return 0;
1731 if (mddev->level >= 0) 1731 if (mddev->level >= 0)
1732 return sprintf(page, "RAID-%d\n", mddev->level); 1732 return sprintf(page, "raid%d\n", mddev->level);
1733 else 1733 else
1734 return sprintf(page, "%s\n", p->name); 1734 return sprintf(page, "%s\n", p->name);
1735} 1735}
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
index 3066c587b539..229d7b204297 100644
--- a/drivers/md/raid1.c
+++ b/drivers/md/raid1.c
@@ -320,7 +320,6 @@ static int raid1_end_write_request(struct bio *bio, unsigned int bytes_done, int
320 * this branch is our 'one mirror IO has finished' event handler: 320 * this branch is our 'one mirror IO has finished' event handler:
321 */ 321 */
322 r1_bio->bios[mirror] = NULL; 322 r1_bio->bios[mirror] = NULL;
323 bio_put(bio);
324 if (!uptodate) { 323 if (!uptodate) {
325 md_error(r1_bio->mddev, conf->mirrors[mirror].rdev); 324 md_error(r1_bio->mddev, conf->mirrors[mirror].rdev);
326 /* an I/O failed, we can't clear the bitmap */ 325 /* an I/O failed, we can't clear the bitmap */
@@ -377,7 +376,6 @@ static int raid1_end_write_request(struct bio *bio, unsigned int bytes_done, int
377 } 376 }
378 if (test_bit(R1BIO_BehindIO, &r1_bio->state)) { 377 if (test_bit(R1BIO_BehindIO, &r1_bio->state)) {
379 /* free extra copy of the data pages */ 378 /* free extra copy of the data pages */
380/* FIXME bio has been freed!!! */
381 int i = bio->bi_vcnt; 379 int i = bio->bi_vcnt;
382 while (i--) 380 while (i--)
383 __free_page(bio->bi_io_vec[i].bv_page); 381 __free_page(bio->bi_io_vec[i].bv_page);
@@ -391,6 +389,9 @@ static int raid1_end_write_request(struct bio *bio, unsigned int bytes_done, int
391 raid_end_bio_io(r1_bio); 389 raid_end_bio_io(r1_bio);
392 } 390 }
393 391
392 if (r1_bio->bios[mirror]==NULL)
393 bio_put(bio);
394
394 rdev_dec_pending(conf->mirrors[mirror].rdev, conf->mddev); 395 rdev_dec_pending(conf->mirrors[mirror].rdev, conf->mddev);
395 return 0; 396 return 0;
396} 397}
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
index 36d5f8ac8265..fafc4bc045f7 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -98,7 +98,7 @@ static inline void __release_stripe(raid5_conf_t *conf, struct stripe_head *sh)
98 list_add_tail(&sh->lru, &conf->inactive_list); 98 list_add_tail(&sh->lru, &conf->inactive_list);
99 atomic_dec(&conf->active_stripes); 99 atomic_dec(&conf->active_stripes);
100 if (!conf->inactive_blocked || 100 if (!conf->inactive_blocked ||
101 atomic_read(&conf->active_stripes) < (NR_STRIPES*3/4)) 101 atomic_read(&conf->active_stripes) < (conf->max_nr_stripes*3/4))
102 wake_up(&conf->wait_for_stripe); 102 wake_up(&conf->wait_for_stripe);
103 } 103 }
104 } 104 }
@@ -264,7 +264,8 @@ static struct stripe_head *get_active_stripe(raid5_conf_t *conf, sector_t sector
264 conf->inactive_blocked = 1; 264 conf->inactive_blocked = 1;
265 wait_event_lock_irq(conf->wait_for_stripe, 265 wait_event_lock_irq(conf->wait_for_stripe,
266 !list_empty(&conf->inactive_list) && 266 !list_empty(&conf->inactive_list) &&
267 (atomic_read(&conf->active_stripes) < (NR_STRIPES *3/4) 267 (atomic_read(&conf->active_stripes)
268 < (conf->max_nr_stripes *3/4)
268 || !conf->inactive_blocked), 269 || !conf->inactive_blocked),
269 conf->device_lock, 270 conf->device_lock,
270 unplug_slaves(conf->mddev); 271 unplug_slaves(conf->mddev);
@@ -1917,7 +1918,7 @@ static int run(mddev_t *mddev)
1917 goto abort; 1918 goto abort;
1918 } 1919 }
1919 } 1920 }
1920memory = conf->max_nr_stripes * (sizeof(struct stripe_head) + 1921 memory = conf->max_nr_stripes * (sizeof(struct stripe_head) +
1921 conf->raid_disks * ((sizeof(struct bio) + PAGE_SIZE))) / 1024; 1922 conf->raid_disks * ((sizeof(struct bio) + PAGE_SIZE))) / 1024;
1922 if (grow_stripes(conf, conf->max_nr_stripes)) { 1923 if (grow_stripes(conf, conf->max_nr_stripes)) {
1923 printk(KERN_ERR 1924 printk(KERN_ERR
diff --git a/drivers/media/common/Kconfig b/drivers/media/common/Kconfig
index caebd0a1c021..6a901a0268e1 100644
--- a/drivers/media/common/Kconfig
+++ b/drivers/media/common/Kconfig
@@ -1,12 +1,12 @@
1config VIDEO_SAA7146 1config VIDEO_SAA7146
2 tristate 2 tristate
3 select I2C 3 select I2C
4 4
5config VIDEO_SAA7146_VV 5config VIDEO_SAA7146_VV
6 tristate 6 tristate
7 select VIDEO_BUF 7 select VIDEO_BUF
8 select VIDEO_VIDEOBUF 8 select VIDEO_VIDEOBUF
9 select VIDEO_SAA7146 9 select VIDEO_SAA7146
10 10
11config VIDEO_VIDEOBUF 11config VIDEO_VIDEOBUF
12 tristate 12 tristate
diff --git a/drivers/media/common/Makefile b/drivers/media/common/Makefile
index 97b4341255ea..bd458cb9b4ea 100644
--- a/drivers/media/common/Makefile
+++ b/drivers/media/common/Makefile
@@ -1,5 +1,5 @@
1saa7146-objs := saa7146_i2c.o saa7146_core.o 1saa7146-objs := saa7146_i2c.o saa7146_core.o
2saa7146_vv-objs := saa7146_vv_ksyms.o saa7146_fops.o saa7146_video.o saa7146_hlp.o saa7146_vbi.o 2saa7146_vv-objs := saa7146_vv_ksyms.o saa7146_fops.o saa7146_video.o saa7146_hlp.o saa7146_vbi.o
3 3
4obj-$(CONFIG_VIDEO_SAA7146) += saa7146.o 4obj-$(CONFIG_VIDEO_SAA7146) += saa7146.o
5obj-$(CONFIG_VIDEO_SAA7146_VV) += saa7146_vv.o 5obj-$(CONFIG_VIDEO_SAA7146_VV) += saa7146_vv.o
diff --git a/drivers/media/common/ir-common.c b/drivers/media/common/ir-common.c
index 7972c73bc14e..97fa3fc571c4 100644
--- a/drivers/media/common/ir-common.c
+++ b/drivers/media/common/ir-common.c
@@ -313,6 +313,7 @@ void ir_input_init(struct input_dev *dev, struct ir_input_state *ir,
313 if (ir_codes) 313 if (ir_codes)
314 memcpy(ir->ir_codes, ir_codes, sizeof(ir->ir_codes)); 314 memcpy(ir->ir_codes, ir_codes, sizeof(ir->ir_codes));
315 315
316
316 dev->keycode = ir->ir_codes; 317 dev->keycode = ir->ir_codes;
317 dev->keycodesize = sizeof(IR_KEYTAB_TYPE); 318 dev->keycodesize = sizeof(IR_KEYTAB_TYPE);
318 dev->keycodemax = IR_KEYTAB_SIZE; 319 dev->keycodemax = IR_KEYTAB_SIZE;
diff --git a/drivers/media/common/saa7146_core.c b/drivers/media/common/saa7146_core.c
index 206cc2f61f26..2899d34e5f7e 100644
--- a/drivers/media/common/saa7146_core.c
+++ b/drivers/media/common/saa7146_core.c
@@ -174,8 +174,8 @@ void saa7146_pgtable_free(struct pci_dev *pci, struct saa7146_pgtable *pt)
174 174
175int saa7146_pgtable_alloc(struct pci_dev *pci, struct saa7146_pgtable *pt) 175int saa7146_pgtable_alloc(struct pci_dev *pci, struct saa7146_pgtable *pt)
176{ 176{
177 u32 *cpu; 177 u32 *cpu;
178 dma_addr_t dma_addr; 178 dma_addr_t dma_addr;
179 179
180 cpu = pci_alloc_consistent(pci, PAGE_SIZE, &dma_addr); 180 cpu = pci_alloc_consistent(pci, PAGE_SIZE, &dma_addr);
181 if (NULL == cpu) { 181 if (NULL == cpu) {
@@ -405,7 +405,7 @@ static int saa7146_init_one(struct pci_dev *pci, const struct pci_device_id *ent
405 405
406 pci_set_drvdata(pci, dev); 406 pci_set_drvdata(pci, dev);
407 407
408 init_MUTEX(&dev->lock); 408 init_MUTEX(&dev->lock);
409 spin_lock_init(&dev->int_slock); 409 spin_lock_init(&dev->int_slock);
410 spin_lock_init(&dev->slock); 410 spin_lock_init(&dev->slock);
411 411
diff --git a/drivers/media/common/saa7146_fops.c b/drivers/media/common/saa7146_fops.c
index 37888989ea2e..09ec964dec5c 100644
--- a/drivers/media/common/saa7146_fops.c
+++ b/drivers/media/common/saa7146_fops.c
@@ -1,6 +1,6 @@
1#include <media/saa7146_vv.h> 1#include <media/saa7146_vv.h>
2 2
3#define BOARD_CAN_DO_VBI(dev) (dev->revision != 0 && dev->vv_data->vbi_minor != -1) 3#define BOARD_CAN_DO_VBI(dev) (dev->revision != 0 && dev->vv_data->vbi_minor != -1)
4 4
5/****************************************************************************/ 5/****************************************************************************/
6/* resource management functions, shamelessly stolen from saa7134 driver */ 6/* resource management functions, shamelessly stolen from saa7134 driver */
@@ -102,9 +102,9 @@ void saa7146_buffer_finish(struct saa7146_dev *dev,
102 /* finish current buffer */ 102 /* finish current buffer */
103 if (NULL == q->curr) { 103 if (NULL == q->curr) {
104 DEB_D(("aiii. no current buffer\n")); 104 DEB_D(("aiii. no current buffer\n"));
105 return; 105 return;
106 } 106 }
107 107
108 q->curr->vb.state = state; 108 q->curr->vb.state = state;
109 do_gettimeofday(&q->curr->vb.ts); 109 do_gettimeofday(&q->curr->vb.ts);
110 wake_up(&q->curr->vb.done); 110 wake_up(&q->curr->vb.done);
@@ -143,13 +143,13 @@ void saa7146_buffer_next(struct saa7146_dev *dev,
143 // fixme: fix this for vflip != 0 143 // fixme: fix this for vflip != 0
144 144
145 saa7146_write(dev, PROT_ADDR1, 0); 145 saa7146_write(dev, PROT_ADDR1, 0);
146 saa7146_write(dev, MC2, (MASK_02|MASK_18)); 146 saa7146_write(dev, MC2, (MASK_02|MASK_18));
147 147
148 /* write the address of the rps-program */ 148 /* write the address of the rps-program */
149 saa7146_write(dev, RPS_ADDR0, dev->d_rps0.dma_handle); 149 saa7146_write(dev, RPS_ADDR0, dev->d_rps0.dma_handle);
150 /* turn on rps */ 150 /* turn on rps */
151 saa7146_write(dev, MC1, (MASK_12 | MASK_28)); 151 saa7146_write(dev, MC1, (MASK_12 | MASK_28));
152 152
153/* 153/*
154 printk("vdma%d.base_even: 0x%08x\n", 1,saa7146_read(dev,BASE_EVEN1)); 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)); 155 printk("vdma%d.base_odd: 0x%08x\n", 1,saa7146_read(dev,BASE_ODD1));
@@ -246,7 +246,7 @@ static int fops_open(struct inode *inode, struct file *file)
246 goto out; 246 goto out;
247 } 247 }
248 memset(fh,0,sizeof(*fh)); 248 memset(fh,0,sizeof(*fh));
249 249
250 file->private_data = fh; 250 file->private_data = fh;
251 fh->dev = dev; 251 fh->dev = dev;
252 fh->type = type; 252 fh->type = type;
@@ -275,7 +275,7 @@ out:
275 file->private_data = NULL; 275 file->private_data = NULL;
276 } 276 }
277 up(&saa7146_devices_lock); 277 up(&saa7146_devices_lock);
278 return result; 278 return result;
279} 279}
280 280
281static int fops_release(struct inode *inode, struct file *file) 281static int fops_release(struct inode *inode, struct file *file)
@@ -405,7 +405,7 @@ static struct file_operations video_fops =
405static void vv_callback(struct saa7146_dev *dev, unsigned long status) 405static void vv_callback(struct saa7146_dev *dev, unsigned long status)
406{ 406{
407 u32 isr = status; 407 u32 isr = status;
408 408
409 DEB_INT(("dev:%p, isr:0x%08x\n",dev,(u32)status)); 409 DEB_INT(("dev:%p, isr:0x%08x\n",dev,(u32)status));
410 410
411 if (0 != (isr & (MASK_27))) { 411 if (0 != (isr & (MASK_27))) {
@@ -454,11 +454,11 @@ int saa7146_vv_init(struct saa7146_dev* dev, struct saa7146_ext_vv *ext_vv)
454 handle different devices that might need different 454 handle different devices that might need different
455 configuration data) */ 455 configuration data) */
456 dev->ext_vv_data = ext_vv; 456 dev->ext_vv_data = ext_vv;
457 457
458 vv->video_minor = -1; 458 vv->video_minor = -1;
459 vv->vbi_minor = -1; 459 vv->vbi_minor = -1;
460 460
461 vv->d_clipping.cpu_addr = pci_alloc_consistent(dev->pci, SAA7146_CLIPPING_MEM, &vv->d_clipping.dma_handle); 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 ) { 462 if( NULL == vv->d_clipping.cpu_addr ) {
463 ERR(("out of memory. aborting.\n")); 463 ERR(("out of memory. aborting.\n"));
464 kfree(vv); 464 kfree(vv);
@@ -468,7 +468,7 @@ int saa7146_vv_init(struct saa7146_dev* dev, struct saa7146_ext_vv *ext_vv)
468 468
469 saa7146_video_uops.init(dev,vv); 469 saa7146_video_uops.init(dev,vv);
470 saa7146_vbi_uops.init(dev,vv); 470 saa7146_vbi_uops.init(dev,vv);
471 471
472 dev->vv_data = vv; 472 dev->vv_data = vv;
473 dev->vv_callback = &vv_callback; 473 dev->vv_callback = &vv_callback;
474 474
@@ -480,12 +480,12 @@ int saa7146_vv_release(struct saa7146_dev* dev)
480 struct saa7146_vv *vv = dev->vv_data; 480 struct saa7146_vv *vv = dev->vv_data;
481 481
482 DEB_EE(("dev:%p\n",dev)); 482 DEB_EE(("dev:%p\n",dev));
483 483
484 pci_free_consistent(dev->pci, SAA7146_RPS_MEM, vv->d_clipping.cpu_addr, vv->d_clipping.dma_handle); 484 pci_free_consistent(dev->pci, SAA7146_RPS_MEM, vv->d_clipping.cpu_addr, vv->d_clipping.dma_handle);
485 kfree(vv); 485 kfree(vv);
486 dev->vv_data = NULL; 486 dev->vv_data = NULL;
487 dev->vv_callback = NULL; 487 dev->vv_callback = NULL;
488 488
489 return 0; 489 return 0;
490} 490}
491 491
@@ -498,7 +498,7 @@ int saa7146_register_device(struct video_device **vid, struct saa7146_dev* dev,
498 DEB_EE(("dev:%p, name:'%s', type:%d\n",dev,name,type)); 498 DEB_EE(("dev:%p, name:'%s', type:%d\n",dev,name,type));
499 499
500 // released by vfd->release 500 // released by vfd->release
501 vfd = video_device_alloc(); 501 vfd = video_device_alloc();
502 if (vfd == NULL) 502 if (vfd == NULL)
503 return -ENOMEM; 503 return -ENOMEM;
504 504
@@ -530,7 +530,7 @@ int saa7146_register_device(struct video_device **vid, struct saa7146_dev* dev,
530int saa7146_unregister_device(struct video_device **vid, struct saa7146_dev* dev) 530int saa7146_unregister_device(struct video_device **vid, struct saa7146_dev* dev)
531{ 531{
532 struct saa7146_vv *vv = dev->vv_data; 532 struct saa7146_vv *vv = dev->vv_data;
533 533
534 DEB_EE(("dev:%p\n",dev)); 534 DEB_EE(("dev:%p\n",dev));
535 535
536 if( VFL_TYPE_GRABBER == (*vid)->type ) { 536 if( VFL_TYPE_GRABBER == (*vid)->type ) {
diff --git a/drivers/media/common/saa7146_i2c.c b/drivers/media/common/saa7146_i2c.c
index fec6beab8c28..8aabdd8fb3c5 100644
--- a/drivers/media/common/saa7146_i2c.c
+++ b/drivers/media/common/saa7146_i2c.c
@@ -276,8 +276,8 @@ int saa7146_i2c_transfer(struct saa7146_dev *dev, const struct i2c_msg *msgs, in
276 int i = 0, count = 0; 276 int i = 0, count = 0;
277 u32* buffer = dev->d_i2c.cpu_addr; 277 u32* buffer = dev->d_i2c.cpu_addr;
278 int err = 0; 278 int err = 0;
279 int address_err = 0; 279 int address_err = 0;
280 int short_delay = 0; 280 int short_delay = 0;
281 281
282 if (down_interruptible (&dev->i2c_lock)) 282 if (down_interruptible (&dev->i2c_lock))
283 return -ERESTARTSYS; 283 return -ERESTARTSYS;
@@ -325,7 +325,7 @@ int saa7146_i2c_transfer(struct saa7146_dev *dev, const struct i2c_msg *msgs, in
325 if( 0 != (SAA7146_USE_I2C_IRQ & dev->ext->flags)) { 325 if( 0 != (SAA7146_USE_I2C_IRQ & dev->ext->flags)) {
326 goto out; 326 goto out;
327 } 327 }
328 address_err++; 328 address_err++;
329 } 329 }
330 DEB_I2C(("error while sending message(s). starting again.\n")); 330 DEB_I2C(("error while sending message(s). starting again.\n"));
331 break; 331 break;
@@ -336,14 +336,14 @@ int saa7146_i2c_transfer(struct saa7146_dev *dev, const struct i2c_msg *msgs, in
336 break; 336 break;
337 } 337 }
338 338
339 /* delay a bit before retrying */ 339 /* delay a bit before retrying */
340 msleep(10); 340 msleep(10);
341 341
342 } while (err != num && retries--); 342 } while (err != num && retries--);
343 343
344 /* if every retry had an address error, exit right away */ 344 /* if every retry had an address error, exit right away */
345 if (address_err == retries) { 345 if (address_err == retries) {
346 goto out; 346 goto out;
347 } 347 }
348 348
349 /* if any things had to be read, get the results */ 349 /* if any things had to be read, get the results */
diff --git a/drivers/media/common/saa7146_vbi.c b/drivers/media/common/saa7146_vbi.c
index cb86a97fda1f..063986ec16b5 100644
--- a/drivers/media/common/saa7146_vbi.c
+++ b/drivers/media/common/saa7146_vbi.c
@@ -6,8 +6,8 @@ static int vbi_workaround(struct saa7146_dev *dev)
6{ 6{
7 struct saa7146_vv *vv = dev->vv_data; 7 struct saa7146_vv *vv = dev->vv_data;
8 8
9 u32 *cpu; 9 u32 *cpu;
10 dma_addr_t dma_addr; 10 dma_addr_t dma_addr;
11 11
12 int count = 0; 12 int count = 0;
13 int i; 13 int i;
diff --git a/drivers/media/common/saa7146_video.c b/drivers/media/common/saa7146_video.c
index 8dd4d15ca36d..1d961023b837 100644
--- a/drivers/media/common/saa7146_video.c
+++ b/drivers/media/common/saa7146_video.c
@@ -150,23 +150,23 @@ static int try_win(struct saa7146_dev *dev, struct v4l2_window *win)
150 maxh = vv->standard->v_max_out; 150 maxh = vv->standard->v_max_out;
151 151
152 if (V4L2_FIELD_ANY == field) { 152 if (V4L2_FIELD_ANY == field) {
153 field = (win->w.height > maxh/2) 153 field = (win->w.height > maxh/2)
154 ? V4L2_FIELD_INTERLACED 154 ? V4L2_FIELD_INTERLACED
155 : V4L2_FIELD_TOP; 155 : V4L2_FIELD_TOP;
156 } 156 }
157 switch (field) { 157 switch (field) {
158 case V4L2_FIELD_TOP: 158 case V4L2_FIELD_TOP:
159 case V4L2_FIELD_BOTTOM: 159 case V4L2_FIELD_BOTTOM:
160 case V4L2_FIELD_ALTERNATE: 160 case V4L2_FIELD_ALTERNATE:
161 maxh = maxh / 2; 161 maxh = maxh / 2;
162 break; 162 break;
163 case V4L2_FIELD_INTERLACED: 163 case V4L2_FIELD_INTERLACED:
164 break; 164 break;
165 default: { 165 default: {
166 DEB_D(("no known field mode '%d'.\n",field)); 166 DEB_D(("no known field mode '%d'.\n",field));
167 return -EINVAL; 167 return -EINVAL;
168 }
168 } 169 }
169 }
170 170
171 win->field = field; 171 win->field = field;
172 if (win->w.width > maxw) 172 if (win->w.width > maxw)
@@ -887,7 +887,7 @@ int saa7146_video_do_ioctl(struct inode *inode, struct file *file, unsigned int
887 887
888 DEB_EE(("VIDIOC_QUERYCAP\n")); 888 DEB_EE(("VIDIOC_QUERYCAP\n"));
889 889
890 strcpy(cap->driver, "saa7146 v4l2"); 890 strcpy(cap->driver, "saa7146 v4l2");
891 strlcpy(cap->card, dev->ext->name, sizeof(cap->card)); 891 strlcpy(cap->card, dev->ext->name, sizeof(cap->card));
892 sprintf(cap->bus_info,"PCI:%s", pci_name(dev->pci)); 892 sprintf(cap->bus_info,"PCI:%s", pci_name(dev->pci));
893 cap->version = SAA7146_VERSION_CODE; 893 cap->version = SAA7146_VERSION_CODE;
@@ -1011,19 +1011,19 @@ int saa7146_video_do_ioctl(struct inode *inode, struct file *file, unsigned int
1011 err = set_control(fh,arg); 1011 err = set_control(fh,arg);
1012 return err; 1012 return err;
1013 } 1013 }
1014 case VIDIOC_G_PARM: 1014 case VIDIOC_G_PARM:
1015 { 1015 {
1016 struct v4l2_streamparm *parm = arg; 1016 struct v4l2_streamparm *parm = arg;
1017 if( parm->type != V4L2_BUF_TYPE_VIDEO_CAPTURE ) { 1017 if( parm->type != V4L2_BUF_TYPE_VIDEO_CAPTURE ) {
1018 return -EINVAL; 1018 return -EINVAL;
1019 } 1019 }
1020 memset(&parm->parm.capture,0,sizeof(struct v4l2_captureparm)); 1020 memset(&parm->parm.capture,0,sizeof(struct v4l2_captureparm));
1021 parm->parm.capture.readbuffers = 1; 1021 parm->parm.capture.readbuffers = 1;
1022 // fixme: only for PAL! 1022 // fixme: only for PAL!
1023 parm->parm.capture.timeperframe.numerator = 1; 1023 parm->parm.capture.timeperframe.numerator = 1;
1024 parm->parm.capture.timeperframe.denominator = 25; 1024 parm->parm.capture.timeperframe.denominator = 25;
1025 return 0; 1025 return 0;
1026 } 1026 }
1027 case VIDIOC_G_FMT: 1027 case VIDIOC_G_FMT:
1028 { 1028 {
1029 struct v4l2_format *f = arg; 1029 struct v4l2_format *f = arg;
@@ -1383,7 +1383,7 @@ static struct videobuf_queue_ops video_qops = {
1383 1383
1384static void video_init(struct saa7146_dev *dev, struct saa7146_vv *vv) 1384static void video_init(struct saa7146_dev *dev, struct saa7146_vv *vv)
1385{ 1385{
1386 INIT_LIST_HEAD(&vv->video_q.queue); 1386 INIT_LIST_HEAD(&vv->video_q.queue);
1387 1387
1388 init_timer(&vv->video_q.timeout); 1388 init_timer(&vv->video_q.timeout);
1389 vv->video_q.timeout.function = saa7146_buffer_timeout; 1389 vv->video_q.timeout.function = saa7146_buffer_timeout;
diff --git a/drivers/media/dvb/b2c2/flexcop-common.h b/drivers/media/dvb/b2c2/flexcop-common.h
index a94912ac1872..344a3c898460 100644
--- a/drivers/media/dvb/b2c2/flexcop-common.h
+++ b/drivers/media/dvb/b2c2/flexcop-common.h
@@ -132,7 +132,7 @@ int flexcop_eeprom_check_mac_addr(struct flexcop_device *fc, int extended);
132 * I2C-channel of the flexcop. 132 * I2C-channel of the flexcop.
133 */ 133 */
134int flexcop_i2c_request(struct flexcop_device*, flexcop_access_op_t, 134int flexcop_i2c_request(struct flexcop_device*, flexcop_access_op_t,
135 flexcop_i2c_port_t, u8 chipaddr, u8 addr, u8 *buf, u16 len); 135 flexcop_i2c_port_t, u8 chipaddr, u8 addr, u8 *buf, u16 len);
136 136
137/* from flexcop-sram.c */ 137/* from flexcop-sram.c */
138int flexcop_sram_set_dest(struct flexcop_device *fc, flexcop_sram_dest_t dest, flexcop_sram_dest_target_t target); 138int flexcop_sram_set_dest(struct flexcop_device *fc, flexcop_sram_dest_t dest, flexcop_sram_dest_target_t target);
diff --git a/drivers/media/dvb/b2c2/flexcop-fe-tuner.c b/drivers/media/dvb/b2c2/flexcop-fe-tuner.c
index a35330315f65..21a9045b3ef6 100644
--- a/drivers/media/dvb/b2c2/flexcop-fe-tuner.c
+++ b/drivers/media/dvb/b2c2/flexcop-fe-tuner.c
@@ -298,7 +298,7 @@ static int flexcop_fe_request_firmware(struct dvb_frontend* fe, const struct fir
298} 298}
299 299
300static int lgdt3303_pll_set(struct dvb_frontend* fe, 300static int lgdt3303_pll_set(struct dvb_frontend* fe,
301 struct dvb_frontend_parameters* params) 301 struct dvb_frontend_parameters* params)
302{ 302{
303 struct flexcop_device *fc = fe->dvb->priv; 303 struct flexcop_device *fc = fe->dvb->priv;
304 u8 buf[4]; 304 u8 buf[4];
@@ -332,7 +332,7 @@ static int lgdt3303_pll_set(struct dvb_frontend* fe,
332 return -EREMOTEIO; 332 return -EREMOTEIO;
333 } 333 }
334 334
335 return 0; 335 return 0;
336} 336}
337 337
338static struct lgdt330x_config air2pc_atsc_hd5000_config = { 338static struct lgdt330x_config air2pc_atsc_hd5000_config = {
diff --git a/drivers/media/dvb/bt8xx/dst_ca.c b/drivers/media/dvb/bt8xx/dst_ca.c
index e6541aff3996..2239651969c8 100644
--- a/drivers/media/dvb/bt8xx/dst_ca.c
+++ b/drivers/media/dvb/bt8xx/dst_ca.c
@@ -406,7 +406,7 @@ static int ca_send_message(struct dst_state *state, struct ca_msg *p_ca_message,
406 } 406 }
407 dprintk(verbose, DST_CA_DEBUG, 1, " "); 407 dprintk(verbose, DST_CA_DEBUG, 1, " ");
408 408
409 if (copy_from_user(p_ca_message, (void *)arg, sizeof (struct ca_msg))) { 409 if (copy_from_user(p_ca_message, arg, sizeof (struct ca_msg))) {
410 result = -EFAULT; 410 result = -EFAULT;
411 goto free_mem_and_exit; 411 goto free_mem_and_exit;
412 } 412 }
@@ -579,7 +579,7 @@ static int dst_ca_release(struct inode *inode, struct file *file)
579 return 0; 579 return 0;
580} 580}
581 581
582static int dst_ca_read(struct file *file, char __user *buffer, size_t length, loff_t *offset) 582static ssize_t dst_ca_read(struct file *file, char __user *buffer, size_t length, loff_t *offset)
583{ 583{
584 int bytes_read = 0; 584 int bytes_read = 0;
585 585
@@ -588,7 +588,7 @@ static int dst_ca_read(struct file *file, char __user *buffer, size_t length, lo
588 return bytes_read; 588 return bytes_read;
589} 589}
590 590
591static int dst_ca_write(struct file *file, const char __user *buffer, size_t length, loff_t *offset) 591static ssize_t dst_ca_write(struct file *file, const char __user *buffer, size_t length, loff_t *offset)
592{ 592{
593 dprintk(verbose, DST_CA_DEBUG, 1, " Device write."); 593 dprintk(verbose, DST_CA_DEBUG, 1, " Device write.");
594 594
diff --git a/drivers/media/dvb/bt8xx/dvb-bt8xx.c b/drivers/media/dvb/bt8xx/dvb-bt8xx.c
index 2e398090cf63..77977e9c013e 100644
--- a/drivers/media/dvb/bt8xx/dvb-bt8xx.c
+++ b/drivers/media/dvb/bt8xx/dvb-bt8xx.c
@@ -556,9 +556,9 @@ static int tdvs_tua6034_pll_set(struct dvb_frontend* fe, struct dvb_frontend_par
556 dprintk("%s: tuner at 0x%02x bytes: 0x%02x 0x%02x 0x%02x 0x%02x\n", 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]); 557 __FUNCTION__, msg.addr, buf[0],buf[1],buf[2],buf[3]);
558 if ((err = i2c_transfer(card->i2c_adapter, &msg, 1)) != 1) { 558 if ((err = i2c_transfer(card->i2c_adapter, &msg, 1)) != 1) {
559 printk(KERN_WARNING "dvb-bt8xx: %s error " 559 printk(KERN_WARNING "dvb-bt8xx: %s error "
560 "(addr %02x <- %02x, err = %i)\n", 560 "(addr %02x <- %02x, err = %i)\n",
561 __FUNCTION__, buf[0], buf[1], err); 561 __FUNCTION__, buf[0], buf[1], err);
562 if (err < 0) 562 if (err < 0)
563 return err; 563 return err;
564 else 564 else
diff --git a/drivers/media/dvb/dvb-core/demux.h b/drivers/media/dvb/dvb-core/demux.h
index 7d7b0067f228..9f025825b2d2 100644
--- a/drivers/media/dvb/dvb-core/demux.h
+++ b/drivers/media/dvb/dvb-core/demux.h
@@ -86,25 +86,25 @@ enum dmx_success {
86 86
87enum dmx_ts_pes 87enum dmx_ts_pes
88{ /* also send packets to decoder (if it exists) */ 88{ /* also send packets to decoder (if it exists) */
89 DMX_TS_PES_AUDIO0, 89 DMX_TS_PES_AUDIO0,
90 DMX_TS_PES_VIDEO0, 90 DMX_TS_PES_VIDEO0,
91 DMX_TS_PES_TELETEXT0, 91 DMX_TS_PES_TELETEXT0,
92 DMX_TS_PES_SUBTITLE0, 92 DMX_TS_PES_SUBTITLE0,
93 DMX_TS_PES_PCR0, 93 DMX_TS_PES_PCR0,
94 94
95 DMX_TS_PES_AUDIO1, 95 DMX_TS_PES_AUDIO1,
96 DMX_TS_PES_VIDEO1, 96 DMX_TS_PES_VIDEO1,
97 DMX_TS_PES_TELETEXT1, 97 DMX_TS_PES_TELETEXT1,
98 DMX_TS_PES_SUBTITLE1, 98 DMX_TS_PES_SUBTITLE1,
99 DMX_TS_PES_PCR1, 99 DMX_TS_PES_PCR1,
100 100
101 DMX_TS_PES_AUDIO2, 101 DMX_TS_PES_AUDIO2,
102 DMX_TS_PES_VIDEO2, 102 DMX_TS_PES_VIDEO2,
103 DMX_TS_PES_TELETEXT2, 103 DMX_TS_PES_TELETEXT2,
104 DMX_TS_PES_SUBTITLE2, 104 DMX_TS_PES_SUBTITLE2,
105 DMX_TS_PES_PCR2, 105 DMX_TS_PES_PCR2,
106 106
107 DMX_TS_PES_AUDIO3, 107 DMX_TS_PES_AUDIO3,
108 DMX_TS_PES_VIDEO3, 108 DMX_TS_PES_VIDEO3,
109 DMX_TS_PES_TELETEXT3, 109 DMX_TS_PES_TELETEXT3,
110 DMX_TS_PES_SUBTITLE3, 110 DMX_TS_PES_SUBTITLE3,
@@ -121,17 +121,17 @@ enum dmx_ts_pes
121 121
122 122
123struct dmx_ts_feed { 123struct dmx_ts_feed {
124 int is_filtering; /* Set to non-zero when filtering in progress */ 124 int is_filtering; /* Set to non-zero when filtering in progress */
125 struct dmx_demux *parent; /* Back-pointer */ 125 struct dmx_demux *parent; /* Back-pointer */
126 void *priv; /* Pointer to private data of the API client */ 126 void *priv; /* Pointer to private data of the API client */
127 int (*set) (struct dmx_ts_feed *feed, 127 int (*set) (struct dmx_ts_feed *feed,
128 u16 pid, 128 u16 pid,
129 int type, 129 int type,
130 enum dmx_ts_pes pes_type, 130 enum dmx_ts_pes pes_type,
131 size_t circular_buffer_size, 131 size_t circular_buffer_size,
132 struct timespec timeout); 132 struct timespec timeout);
133 int (*start_filtering) (struct dmx_ts_feed* feed); 133 int (*start_filtering) (struct dmx_ts_feed* feed);
134 int (*stop_filtering) (struct dmx_ts_feed* feed); 134 int (*stop_filtering) (struct dmx_ts_feed* feed);
135}; 135};
136 136
137/*--------------------------------------------------------------------------*/ 137/*--------------------------------------------------------------------------*/
@@ -139,35 +139,35 @@ struct dmx_ts_feed {
139/*--------------------------------------------------------------------------*/ 139/*--------------------------------------------------------------------------*/
140 140
141struct dmx_section_filter { 141struct dmx_section_filter {
142 u8 filter_value [DMX_MAX_FILTER_SIZE]; 142 u8 filter_value [DMX_MAX_FILTER_SIZE];
143 u8 filter_mask [DMX_MAX_FILTER_SIZE]; 143 u8 filter_mask [DMX_MAX_FILTER_SIZE];
144 u8 filter_mode [DMX_MAX_FILTER_SIZE]; 144 u8 filter_mode [DMX_MAX_FILTER_SIZE];
145 struct dmx_section_feed* parent; /* Back-pointer */ 145 struct dmx_section_feed* parent; /* Back-pointer */
146 void* priv; /* Pointer to private data of the API client */ 146 void* priv; /* Pointer to private data of the API client */
147}; 147};
148 148
149struct dmx_section_feed { 149struct dmx_section_feed {
150 int is_filtering; /* Set to non-zero when filtering in progress */ 150 int is_filtering; /* Set to non-zero when filtering in progress */
151 struct dmx_demux* parent; /* Back-pointer */ 151 struct dmx_demux* parent; /* Back-pointer */
152 void* priv; /* Pointer to private data of the API client */ 152 void* priv; /* Pointer to private data of the API client */
153 153
154 int check_crc; 154 int check_crc;
155 u32 crc_val; 155 u32 crc_val;
156 156
157 u8 *secbuf; 157 u8 *secbuf;
158 u8 secbuf_base[DMX_MAX_SECFEED_SIZE]; 158 u8 secbuf_base[DMX_MAX_SECFEED_SIZE];
159 u16 secbufp, seclen, tsfeedp; 159 u16 secbufp, seclen, tsfeedp;
160 160
161 int (*set) (struct dmx_section_feed* feed, 161 int (*set) (struct dmx_section_feed* feed,
162 u16 pid, 162 u16 pid,
163 size_t circular_buffer_size, 163 size_t circular_buffer_size,
164 int check_crc); 164 int check_crc);
165 int (*allocate_filter) (struct dmx_section_feed* feed, 165 int (*allocate_filter) (struct dmx_section_feed* feed,
166 struct dmx_section_filter** filter); 166 struct dmx_section_filter** filter);
167 int (*release_filter) (struct dmx_section_feed* feed, 167 int (*release_filter) (struct dmx_section_feed* feed,
168 struct dmx_section_filter* filter); 168 struct dmx_section_filter* filter);
169 int (*start_filtering) (struct dmx_section_feed* feed); 169 int (*start_filtering) (struct dmx_section_feed* feed);
170 int (*stop_filtering) (struct dmx_section_feed* feed); 170 int (*stop_filtering) (struct dmx_section_feed* feed);
171}; 171};
172 172
173/*--------------------------------------------------------------------------*/ 173/*--------------------------------------------------------------------------*/
@@ -205,10 +205,10 @@ enum dmx_frontend_source {
205}; 205};
206 206
207struct dmx_frontend { 207struct dmx_frontend {
208 struct list_head connectivity_list; /* List of front-ends that can 208 struct list_head connectivity_list; /* List of front-ends that can
209 be connected to a particular 209 be connected to a particular
210 demux */ 210 demux */
211 enum dmx_frontend_source source; 211 enum dmx_frontend_source source;
212}; 212};
213 213
214/*--------------------------------------------------------------------------*/ 214/*--------------------------------------------------------------------------*/
@@ -240,38 +240,38 @@ struct dmx_frontend {
240#define DMX_FE_ENTRY(list) list_entry(list, struct dmx_frontend, connectivity_list) 240#define DMX_FE_ENTRY(list) list_entry(list, struct dmx_frontend, connectivity_list)
241 241
242struct dmx_demux { 242struct dmx_demux {
243 u32 capabilities; /* Bitfield of capability flags */ 243 u32 capabilities; /* Bitfield of capability flags */
244 struct dmx_frontend* frontend; /* Front-end connected to the demux */ 244 struct dmx_frontend* frontend; /* Front-end connected to the demux */
245 void* priv; /* Pointer to private data of the API client */ 245 void* priv; /* Pointer to private data of the API client */
246 int (*open) (struct dmx_demux* demux); 246 int (*open) (struct dmx_demux* demux);
247 int (*close) (struct dmx_demux* demux); 247 int (*close) (struct dmx_demux* demux);
248 int (*write) (struct dmx_demux* demux, const char* buf, size_t count); 248 int (*write) (struct dmx_demux* demux, const char* buf, size_t count);
249 int (*allocate_ts_feed) (struct dmx_demux* demux, 249 int (*allocate_ts_feed) (struct dmx_demux* demux,
250 struct dmx_ts_feed** feed, 250 struct dmx_ts_feed** feed,
251 dmx_ts_cb callback); 251 dmx_ts_cb callback);
252 int (*release_ts_feed) (struct dmx_demux* demux, 252 int (*release_ts_feed) (struct dmx_demux* demux,
253 struct dmx_ts_feed* feed); 253 struct dmx_ts_feed* feed);
254 int (*allocate_section_feed) (struct dmx_demux* demux, 254 int (*allocate_section_feed) (struct dmx_demux* demux,
255 struct dmx_section_feed** feed, 255 struct dmx_section_feed** feed,
256 dmx_section_cb callback); 256 dmx_section_cb callback);
257 int (*release_section_feed) (struct dmx_demux* demux, 257 int (*release_section_feed) (struct dmx_demux* demux,
258 struct dmx_section_feed* feed); 258 struct dmx_section_feed* feed);
259 int (*add_frontend) (struct dmx_demux* demux, 259 int (*add_frontend) (struct dmx_demux* demux,
260 struct dmx_frontend* frontend); 260 struct dmx_frontend* frontend);
261 int (*remove_frontend) (struct dmx_demux* demux, 261 int (*remove_frontend) (struct dmx_demux* demux,
262 struct dmx_frontend* frontend); 262 struct dmx_frontend* frontend);
263 struct list_head* (*get_frontends) (struct dmx_demux* demux); 263 struct list_head* (*get_frontends) (struct dmx_demux* demux);
264 int (*connect_frontend) (struct dmx_demux* demux, 264 int (*connect_frontend) (struct dmx_demux* demux,
265 struct dmx_frontend* frontend); 265 struct dmx_frontend* frontend);
266 int (*disconnect_frontend) (struct dmx_demux* demux); 266 int (*disconnect_frontend) (struct dmx_demux* demux);
267 267
268 int (*get_pes_pids) (struct dmx_demux* demux, u16 *pids); 268 int (*get_pes_pids) (struct dmx_demux* demux, u16 *pids);
269 269
270 int (*get_caps) (struct dmx_demux* demux, struct dmx_caps *caps); 270 int (*get_caps) (struct dmx_demux* demux, struct dmx_caps *caps);
271 271
272 int (*set_source) (struct dmx_demux* demux, const dmx_source_t *src); 272 int (*set_source) (struct dmx_demux* demux, const dmx_source_t *src);
273 273
274 int (*get_stc) (struct dmx_demux* demux, unsigned int num, 274 int (*get_stc) (struct dmx_demux* demux, unsigned int num,
275 u64 *stc, unsigned int *base); 275 u64 *stc, unsigned int *base);
276}; 276};
277 277
diff --git a/drivers/media/dvb/dvb-core/dmxdev.c b/drivers/media/dvb/dvb-core/dmxdev.c
index 8028c3a5e287..7b8373ad121b 100644
--- a/drivers/media/dvb/dvb-core/dmxdev.c
+++ b/drivers/media/dvb/dvb-core/dmxdev.c
@@ -947,7 +947,7 @@ static int dvb_demux_do_ioctl(struct inode *inode, struct file *file,
947 947
948 case DMX_GET_STC: 948 case DMX_GET_STC:
949 if (!dmxdev->demux->get_stc) { 949 if (!dmxdev->demux->get_stc) {
950 ret=-EINVAL; 950 ret=-EINVAL;
951 break; 951 break;
952 } 952 }
953 ret = dmxdev->demux->get_stc(dmxdev->demux, 953 ret = dmxdev->demux->get_stc(dmxdev->demux,
diff --git a/drivers/media/dvb/dvb-core/dmxdev.h b/drivers/media/dvb/dvb-core/dmxdev.h
index 395a9cd75012..fd72920c2199 100644
--- a/drivers/media/dvb/dvb-core/dmxdev.h
+++ b/drivers/media/dvb/dvb-core/dmxdev.h
@@ -53,51 +53,51 @@ enum dmxdev_state {
53}; 53};
54 54
55struct dmxdev_buffer { 55struct dmxdev_buffer {
56 u8 *data; 56 u8 *data;
57 int size; 57 int size;
58 int pread; 58 int pread;
59 int pwrite; 59 int pwrite;
60 wait_queue_head_t queue; 60 wait_queue_head_t queue;
61 int error; 61 int error;
62}; 62};
63 63
64struct dmxdev_filter { 64struct dmxdev_filter {
65 struct dvb_device *dvbdev; 65 struct dvb_device *dvbdev;
66 66
67 union { 67 union {
68 struct dmx_section_filter *sec; 68 struct dmx_section_filter *sec;
69 } filter; 69 } filter;
70 70
71 union { 71 union {
72 struct dmx_ts_feed *ts; 72 struct dmx_ts_feed *ts;
73 struct dmx_section_feed *sec; 73 struct dmx_section_feed *sec;
74 } feed; 74 } feed;
75 75
76 union { 76 union {
77 struct dmx_sct_filter_params sec; 77 struct dmx_sct_filter_params sec;
78 struct dmx_pes_filter_params pes; 78 struct dmx_pes_filter_params pes;
79 } params; 79 } params;
80 80
81 int type; 81 int type;
82 enum dmxdev_state state; 82 enum dmxdev_state state;
83 struct dmxdev *dev; 83 struct dmxdev *dev;
84 struct dmxdev_buffer buffer; 84 struct dmxdev_buffer buffer;
85 85
86 struct semaphore mutex; 86 struct semaphore mutex;
87 87
88 /* only for sections */ 88 /* only for sections */
89 struct timer_list timer; 89 struct timer_list timer;
90 int todo; 90 int todo;
91 u8 secheader[3]; 91 u8 secheader[3];
92 92
93 u16 pid; 93 u16 pid;
94}; 94};
95 95
96 96
97struct dmxdev_dvr { 97struct dmxdev_dvr {
98 int state; 98 int state;
99 struct dmxdev *dev; 99 struct dmxdev *dev;
100 struct dmxdev_buffer buffer; 100 struct dmxdev_buffer buffer;
101}; 101};
102 102
103 103
@@ -105,16 +105,16 @@ struct dmxdev {
105 struct dvb_device *dvbdev; 105 struct dvb_device *dvbdev;
106 struct dvb_device *dvr_dvbdev; 106 struct dvb_device *dvr_dvbdev;
107 107
108 struct dmxdev_filter *filter; 108 struct dmxdev_filter *filter;
109 struct dmxdev_dvr *dvr; 109 struct dmxdev_dvr *dvr;
110 struct dmx_demux *demux; 110 struct dmx_demux *demux;
111 111
112 int filternum; 112 int filternum;
113 int capabilities; 113 int capabilities;
114#define DMXDEV_CAP_DUPLEX 1 114#define DMXDEV_CAP_DUPLEX 1
115 struct dmx_frontend *dvr_orig_fe; 115 struct dmx_frontend *dvr_orig_fe;
116 116
117 struct dmxdev_buffer dvr_buffer; 117 struct dmxdev_buffer dvr_buffer;
118#define DVR_BUFFER_SIZE (10*188*1024) 118#define DVR_BUFFER_SIZE (10*188*1024)
119 119
120 struct semaphore mutex; 120 struct semaphore mutex;
diff --git a/drivers/media/dvb/dvb-core/dvb_ca_en50221.c b/drivers/media/dvb/dvb-core/dvb_ca_en50221.c
index cb2e7d6ba283..5956c35d34ac 100644
--- a/drivers/media/dvb/dvb-core/dvb_ca_en50221.c
+++ b/drivers/media/dvb/dvb-core/dvb_ca_en50221.c
@@ -498,7 +498,7 @@ static int dvb_ca_en50221_parse_attributes(struct dvb_ca_private *ca, int slot)
498 /* process the CFTABLE_ENTRY tuples, and any after those */ 498 /* process the CFTABLE_ENTRY tuples, and any after those */
499 while ((!end_chain) && (address < 0x1000)) { 499 while ((!end_chain) && (address < 0x1000)) {
500 if ((status = dvb_ca_en50221_read_tuple(ca, slot, &address, &tupleType, 500 if ((status = dvb_ca_en50221_read_tuple(ca, slot, &address, &tupleType,
501 &tupleLength, tuple)) < 0) 501 &tupleLength, tuple)) < 0)
502 return status; 502 return status;
503 switch (tupleType) { 503 switch (tupleType) {
504 case 0x1B: // CISTPL_CFTABLE_ENTRY 504 case 0x1B: // CISTPL_CFTABLE_ENTRY
diff --git a/drivers/media/dvb/dvb-core/dvb_filter.c b/drivers/media/dvb/dvb-core/dvb_filter.c
index bd5143906084..c49fd0bd7181 100644
--- a/drivers/media/dvb/dvb-core/dvb_filter.c
+++ b/drivers/media/dvb/dvb-core/dvb_filter.c
@@ -72,12 +72,12 @@ static int read_picture_header(u8 *headr, struct mpg_picture *pic, int field, in
72 u8 pct; 72 u8 pct;
73 73
74 if (pr) printk( "Pic header: "); 74 if (pr) printk( "Pic header: ");
75 pic->temporal_reference[field] = (( headr[0] << 2 ) | 75 pic->temporal_reference[field] = (( headr[0] << 2 ) |
76 (headr[1] & 0x03) )& 0x03ff; 76 (headr[1] & 0x03) )& 0x03ff;
77 if (pr) printk( " temp ref: 0x%04x", pic->temporal_reference[field]); 77 if (pr) printk( " temp ref: 0x%04x", pic->temporal_reference[field]);
78 78
79 pct = ( headr[1] >> 2 ) & 0x07; 79 pct = ( headr[1] >> 2 ) & 0x07;
80 pic->picture_coding_type[field] = pct; 80 pic->picture_coding_type[field] = pct;
81 if (pr) { 81 if (pr) {
82 switch(pct){ 82 switch(pct){
83 case I_FRAME: 83 case I_FRAME:
@@ -93,17 +93,17 @@ static int read_picture_header(u8 *headr, struct mpg_picture *pic, int field, in
93 } 93 }
94 94
95 95
96 pic->vinfo.vbv_delay = (( headr[1] >> 5 ) | ( headr[2] << 3) | 96 pic->vinfo.vbv_delay = (( headr[1] >> 5 ) | ( headr[2] << 3) |
97 ( (headr[3] & 0x1F) << 11) ) & 0xffff; 97 ( (headr[3] & 0x1F) << 11) ) & 0xffff;
98 98
99 if (pr) printk( " vbv delay: 0x%04x", pic->vinfo.vbv_delay); 99 if (pr) printk( " vbv delay: 0x%04x", pic->vinfo.vbv_delay);
100 100
101 pic->picture_header_parameter = ( headr[3] & 0xe0 ) | 101 pic->picture_header_parameter = ( headr[3] & 0xe0 ) |
102 ((headr[4] & 0x80) >> 3); 102 ((headr[4] & 0x80) >> 3);
103 103
104 if ( pct == B_FRAME ){ 104 if ( pct == B_FRAME ){
105 pic->picture_header_parameter |= ( headr[4] >> 3 ) & 0x0f; 105 pic->picture_header_parameter |= ( headr[4] >> 3 ) & 0x0f;
106 } 106 }
107 if (pr) printk( " pic head param: 0x%x", 107 if (pr) printk( " pic head param: 0x%x",
108 pic->picture_header_parameter); 108 pic->picture_header_parameter);
109 109
@@ -124,18 +124,18 @@ static int read_gop_header(u8 *headr, struct mpg_picture *pic, int pr)
124 ((headr[0]<<4)& 0x30)| ((headr[1]>>4)& 0x0F), 124 ((headr[0]<<4)& 0x30)| ((headr[1]>>4)& 0x0F),
125 ((headr[1]<<3)& 0x38)| ((headr[2]>>5)& 0x0F)); 125 ((headr[1]<<3)& 0x38)| ((headr[2]>>5)& 0x0F));
126 126
127 if ( ( headr[3] & 0x40 ) != 0 ){ 127 if ( ( headr[3] & 0x40 ) != 0 ){
128 pic->closed_gop = 1; 128 pic->closed_gop = 1;
129 } else { 129 } else {
130 pic->closed_gop = 0; 130 pic->closed_gop = 0;
131 } 131 }
132 if (pr) printk("closed: %d", pic->closed_gop); 132 if (pr) printk("closed: %d", pic->closed_gop);
133 133
134 if ( ( headr[3] & 0x20 ) != 0 ){ 134 if ( ( headr[3] & 0x20 ) != 0 ){
135 pic->broken_link = 1; 135 pic->broken_link = 1;
136 } else { 136 } else {
137 pic->broken_link = 0; 137 pic->broken_link = 0;
138 } 138 }
139 if (pr) printk(" broken: %d\n", pic->broken_link); 139 if (pr) printk(" broken: %d\n", pic->broken_link);
140 140
141 return 0; 141 return 0;
@@ -146,7 +146,7 @@ static int read_gop_header(u8 *headr, struct mpg_picture *pic, int pr)
146/* needs 8 byte input */ 146/* needs 8 byte input */
147static int read_sequence_header(u8 *headr, struct dvb_video_info *vi, int pr) 147static int read_sequence_header(u8 *headr, struct dvb_video_info *vi, int pr)
148{ 148{
149 int sw; 149 int sw;
150 int form = -1; 150 int form = -1;
151 151
152 if (pr) printk("Reading sequence header\n"); 152 if (pr) printk("Reading sequence header\n");
@@ -154,9 +154,9 @@ static int read_sequence_header(u8 *headr, struct dvb_video_info *vi, int pr)
154 vi->horizontal_size = ((headr[1] &0xF0) >> 4) | (headr[0] << 4); 154 vi->horizontal_size = ((headr[1] &0xF0) >> 4) | (headr[0] << 4);
155 vi->vertical_size = ((headr[1] &0x0F) << 8) | (headr[2]); 155 vi->vertical_size = ((headr[1] &0x0F) << 8) | (headr[2]);
156 156
157 sw = (int)((headr[3]&0xF0) >> 4) ; 157 sw = (int)((headr[3]&0xF0) >> 4) ;
158 158
159 switch( sw ){ 159 switch( sw ){
160 case 1: 160 case 1:
161 if (pr) 161 if (pr)
162 printk("Videostream: ASPECT: 1:1"); 162 printk("Videostream: ASPECT: 1:1");
@@ -165,84 +165,84 @@ static int read_sequence_header(u8 *headr, struct dvb_video_info *vi, int pr)
165 case 2: 165 case 2:
166 if (pr) 166 if (pr)
167 printk("Videostream: ASPECT: 4:3"); 167 printk("Videostream: ASPECT: 4:3");
168 vi->aspect_ratio = 133; 168 vi->aspect_ratio = 133;
169 break; 169 break;
170 case 3: 170 case 3:
171 if (pr) 171 if (pr)
172 printk("Videostream: ASPECT: 16:9"); 172 printk("Videostream: ASPECT: 16:9");
173 vi->aspect_ratio = 177; 173 vi->aspect_ratio = 177;
174 break; 174 break;
175 case 4: 175 case 4:
176 if (pr) 176 if (pr)
177 printk("Videostream: ASPECT: 2.21:1"); 177 printk("Videostream: ASPECT: 2.21:1");
178 vi->aspect_ratio = 221; 178 vi->aspect_ratio = 221;
179 break; 179 break;
180 180
181 case 5 ... 15: 181 case 5 ... 15:
182 if (pr) 182 if (pr)
183 printk("Videostream: ASPECT: reserved"); 183 printk("Videostream: ASPECT: reserved");
184 vi->aspect_ratio = 0; 184 vi->aspect_ratio = 0;
185 break; 185 break;
186 186
187 default: 187 default:
188 vi->aspect_ratio = 0; 188 vi->aspect_ratio = 0;
189 return -1; 189 return -1;
190 } 190 }
191 191
192 if (pr) 192 if (pr)
193 printk(" Size = %dx%d",vi->horizontal_size,vi->vertical_size); 193 printk(" Size = %dx%d",vi->horizontal_size,vi->vertical_size);
194 194
195 sw = (int)(headr[3]&0x0F); 195 sw = (int)(headr[3]&0x0F);
196 196
197 switch ( sw ) { 197 switch ( sw ) {
198 case 1: 198 case 1:
199 if (pr) 199 if (pr)
200 printk(" FRate: 23.976 fps"); 200 printk(" FRate: 23.976 fps");
201 vi->framerate = 23976; 201 vi->framerate = 23976;
202 form = -1; 202 form = -1;
203 break; 203 break;
204 case 2: 204 case 2:
205 if (pr) 205 if (pr)
206 printk(" FRate: 24 fps"); 206 printk(" FRate: 24 fps");
207 vi->framerate = 24000; 207 vi->framerate = 24000;
208 form = -1; 208 form = -1;
209 break; 209 break;
210 case 3: 210 case 3:
211 if (pr) 211 if (pr)
212 printk(" FRate: 25 fps"); 212 printk(" FRate: 25 fps");
213 vi->framerate = 25000; 213 vi->framerate = 25000;
214 form = VIDEO_MODE_PAL; 214 form = VIDEO_MODE_PAL;
215 break; 215 break;
216 case 4: 216 case 4:
217 if (pr) 217 if (pr)
218 printk(" FRate: 29.97 fps"); 218 printk(" FRate: 29.97 fps");
219 vi->framerate = 29970; 219 vi->framerate = 29970;
220 form = VIDEO_MODE_NTSC; 220 form = VIDEO_MODE_NTSC;
221 break; 221 break;
222 case 5: 222 case 5:
223 if (pr) 223 if (pr)
224 printk(" FRate: 30 fps"); 224 printk(" FRate: 30 fps");
225 vi->framerate = 30000; 225 vi->framerate = 30000;
226 form = VIDEO_MODE_NTSC; 226 form = VIDEO_MODE_NTSC;
227 break; 227 break;
228 case 6: 228 case 6:
229 if (pr) 229 if (pr)
230 printk(" FRate: 50 fps"); 230 printk(" FRate: 50 fps");
231 vi->framerate = 50000; 231 vi->framerate = 50000;
232 form = VIDEO_MODE_PAL; 232 form = VIDEO_MODE_PAL;
233 break; 233 break;
234 case 7: 234 case 7:
235 if (pr) 235 if (pr)
236 printk(" FRate: 60 fps"); 236 printk(" FRate: 60 fps");
237 vi->framerate = 60000; 237 vi->framerate = 60000;
238 form = VIDEO_MODE_NTSC; 238 form = VIDEO_MODE_NTSC;
239 break; 239 break;
240 } 240 }
241 241
242 vi->bit_rate = (headr[4] << 10) | (headr[5] << 2) | (headr[6] & 0x03); 242 vi->bit_rate = (headr[4] << 10) | (headr[5] << 2) | (headr[6] & 0x03);
243 243
244 vi->vbv_buffer_size 244 vi->vbv_buffer_size
245 = (( headr[6] & 0xF8) >> 3 ) | (( headr[7] & 0x1F )<< 5); 245 = (( headr[6] & 0xF8) >> 3 ) | (( headr[7] & 0x1F )<< 5);
246 246
247 if (pr){ 247 if (pr){
248 printk(" BRate: %d Mbit/s",4*(vi->bit_rate)/10000); 248 printk(" BRate: %d Mbit/s",4*(vi->bit_rate)/10000);
@@ -250,7 +250,7 @@ static int read_sequence_header(u8 *headr, struct dvb_video_info *vi, int pr)
250 printk("\n"); 250 printk("\n");
251 } 251 }
252 252
253 vi->video_format = form; 253 vi->video_format = form;
254 254
255 return 0; 255 return 0;
256} 256}
@@ -308,7 +308,7 @@ static int get_ainfo(u8 *mbuf, int count, struct dvb_audio_info *ai, int pr)
308 if (!found) return -1; 308 if (!found) return -1;
309 309
310 if (c+3 >= count) return -1; 310 if (c+3 >= count) return -1;
311 headr = mbuf+c; 311 headr = mbuf+c;
312 312
313 ai->layer = (headr[1] & 0x06) >> 1; 313 ai->layer = (headr[1] & 0x06) >> 1;
314 314
@@ -368,7 +368,7 @@ int dvb_filter_get_ac3info(u8 *mbuf, int count, struct dvb_audio_info *ai, int p
368 if (c+5 >= count) return -1; 368 if (c+5 >= count) return -1;
369 369
370 ai->layer = 0; // 0 for AC3 370 ai->layer = 0; // 0 for AC3
371 headr = mbuf+c+2; 371 headr = mbuf+c+2;
372 372
373 frame = (headr[2]&0x3f); 373 frame = (headr[2]&0x3f);
374 ai->bit_rate = ac3_bitrates[frame >> 1]*1000; 374 ai->bit_rate = ac3_bitrates[frame >> 1]*1000;
@@ -396,159 +396,159 @@ EXPORT_SYMBOL(dvb_filter_get_ac3info);
396#if 0 396#if 0
397static u8 *skip_pes_header(u8 **bufp) 397static u8 *skip_pes_header(u8 **bufp)
398{ 398{
399 u8 *inbuf = *bufp; 399 u8 *inbuf = *bufp;
400 u8 *buf = inbuf; 400 u8 *buf = inbuf;
401 u8 *pts = NULL; 401 u8 *pts = NULL;
402 int skip = 0; 402 int skip = 0;
403 403
404 static const int mpeg1_skip_table[16] = { 404 static const int mpeg1_skip_table[16] = {
405 1, 0xffff, 5, 10, 0xffff, 0xffff, 0xffff, 0xffff, 405 1, 0xffff, 5, 10, 0xffff, 0xffff, 0xffff, 0xffff,
406 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff 406 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff
407 }; 407 };
408 408
409 409
410 if ((inbuf[6] & 0xc0) == 0x80){ /* mpeg2 */ 410 if ((inbuf[6] & 0xc0) == 0x80){ /* mpeg2 */
411 if (buf[7] & PTS_ONLY) 411 if (buf[7] & PTS_ONLY)
412 pts = buf+9; 412 pts = buf+9;
413 else pts = NULL; 413 else pts = NULL;
414 buf = inbuf + 9 + inbuf[8]; 414 buf = inbuf + 9 + inbuf[8];
415 } else { /* mpeg1 */ 415 } else { /* mpeg1 */
416 for (buf = inbuf + 6; *buf == 0xff; buf++) 416 for (buf = inbuf + 6; *buf == 0xff; buf++)
417 if (buf == inbuf + 6 + 16) { 417 if (buf == inbuf + 6 + 16) {
418 break; 418 break;
419 } 419 }
420 if ((*buf & 0xc0) == 0x40) 420 if ((*buf & 0xc0) == 0x40)
421 buf += 2; 421 buf += 2;
422 skip = mpeg1_skip_table [*buf >> 4]; 422 skip = mpeg1_skip_table [*buf >> 4];
423 if (skip == 5 || skip == 10) pts = buf; 423 if (skip == 5 || skip == 10) pts = buf;
424 else pts = NULL; 424 else pts = NULL;
425 425
426 buf += mpeg1_skip_table [*buf >> 4]; 426 buf += mpeg1_skip_table [*buf >> 4];
427 } 427 }
428 428
429 *bufp = buf; 429 *bufp = buf;
430 return pts; 430 return pts;
431} 431}
432#endif 432#endif
433 433
434#if 0 434#if 0
435static void initialize_quant_matrix( u32 *matrix ) 435static void initialize_quant_matrix( u32 *matrix )
436{ 436{
437 int i; 437 int i;
438 438
439 matrix[0] = 0x08101013; 439 matrix[0] = 0x08101013;
440 matrix[1] = 0x10131616; 440 matrix[1] = 0x10131616;
441 matrix[2] = 0x16161616; 441 matrix[2] = 0x16161616;
442 matrix[3] = 0x1a181a1b; 442 matrix[3] = 0x1a181a1b;
443 matrix[4] = 0x1b1b1a1a; 443 matrix[4] = 0x1b1b1a1a;
444 matrix[5] = 0x1a1a1b1b; 444 matrix[5] = 0x1a1a1b1b;
445 matrix[6] = 0x1b1d1d1d; 445 matrix[6] = 0x1b1d1d1d;
446 matrix[7] = 0x2222221d; 446 matrix[7] = 0x2222221d;
447 matrix[8] = 0x1d1d1b1b; 447 matrix[8] = 0x1d1d1b1b;
448 matrix[9] = 0x1d1d2020; 448 matrix[9] = 0x1d1d2020;
449 matrix[10] = 0x22222526; 449 matrix[10] = 0x22222526;
450 matrix[11] = 0x25232322; 450 matrix[11] = 0x25232322;
451 matrix[12] = 0x23262628; 451 matrix[12] = 0x23262628;
452 matrix[13] = 0x28283030; 452 matrix[13] = 0x28283030;
453 matrix[14] = 0x2e2e3838; 453 matrix[14] = 0x2e2e3838;
454 matrix[15] = 0x3a454553; 454 matrix[15] = 0x3a454553;
455 455
456 for ( i = 16 ; i < 32 ; i++ ) 456 for ( i = 16 ; i < 32 ; i++ )
457 matrix[i] = 0x10101010; 457 matrix[i] = 0x10101010;
458} 458}
459#endif 459#endif
460 460
461#if 0 461#if 0
462static void initialize_mpg_picture(struct mpg_picture *pic) 462static void initialize_mpg_picture(struct mpg_picture *pic)
463{ 463{
464 int i; 464 int i;
465 465
466 /* set MPEG1 */ 466 /* set MPEG1 */
467 pic->mpeg1_flag = 1; 467 pic->mpeg1_flag = 1;
468 pic->profile_and_level = 0x4A ; /* MP@LL */ 468 pic->profile_and_level = 0x4A ; /* MP@LL */
469 pic->progressive_sequence = 1; 469 pic->progressive_sequence = 1;
470 pic->low_delay = 0; 470 pic->low_delay = 0;
471 471
472 pic->sequence_display_extension_flag = 0; 472 pic->sequence_display_extension_flag = 0;
473 for ( i = 0 ; i < 4 ; i++ ){ 473 for ( i = 0 ; i < 4 ; i++ ){
474 pic->frame_centre_horizontal_offset[i] = 0; 474 pic->frame_centre_horizontal_offset[i] = 0;
475 pic->frame_centre_vertical_offset[i] = 0; 475 pic->frame_centre_vertical_offset[i] = 0;
476 } 476 }
477 pic->last_frame_centre_horizontal_offset = 0; 477 pic->last_frame_centre_horizontal_offset = 0;
478 pic->last_frame_centre_vertical_offset = 0; 478 pic->last_frame_centre_vertical_offset = 0;
479 479
480 pic->picture_display_extension_flag[0] = 0; 480 pic->picture_display_extension_flag[0] = 0;
481 pic->picture_display_extension_flag[1] = 0; 481 pic->picture_display_extension_flag[1] = 0;
482 pic->sequence_header_flag = 0; 482 pic->sequence_header_flag = 0;
483 pic->gop_flag = 0; 483 pic->gop_flag = 0;
484 pic->sequence_end_flag = 0; 484 pic->sequence_end_flag = 0;
485} 485}
486#endif 486#endif
487 487
488#if 0 488#if 0
489static void mpg_set_picture_parameter( int32_t field_type, struct mpg_picture *pic ) 489static void mpg_set_picture_parameter( int32_t field_type, struct mpg_picture *pic )
490{ 490{
491 int16_t last_h_offset; 491 int16_t last_h_offset;
492 int16_t last_v_offset; 492 int16_t last_v_offset;
493 493
494 int16_t *p_h_offset; 494 int16_t *p_h_offset;
495 int16_t *p_v_offset; 495 int16_t *p_v_offset;
496 496
497 if ( pic->mpeg1_flag ){ 497 if ( pic->mpeg1_flag ){
498 pic->picture_structure[field_type] = VIDEO_FRAME_PICTURE; 498 pic->picture_structure[field_type] = VIDEO_FRAME_PICTURE;
499 pic->top_field_first = 0; 499 pic->top_field_first = 0;
500 pic->repeat_first_field = 0; 500 pic->repeat_first_field = 0;
501 pic->progressive_frame = 1; 501 pic->progressive_frame = 1;
502 pic->picture_coding_parameter = 0x000010; 502 pic->picture_coding_parameter = 0x000010;
503 } 503 }
504 504
505 /* Reset flag */ 505 /* Reset flag */
506 pic->picture_display_extension_flag[field_type] = 0; 506 pic->picture_display_extension_flag[field_type] = 0;
507 507
508 last_h_offset = pic->last_frame_centre_horizontal_offset; 508 last_h_offset = pic->last_frame_centre_horizontal_offset;
509 last_v_offset = pic->last_frame_centre_vertical_offset; 509 last_v_offset = pic->last_frame_centre_vertical_offset;
510 if ( field_type == FIRST_FIELD ){ 510 if ( field_type == FIRST_FIELD ){
511 p_h_offset = pic->frame_centre_horizontal_offset; 511 p_h_offset = pic->frame_centre_horizontal_offset;
512 p_v_offset = pic->frame_centre_vertical_offset; 512 p_v_offset = pic->frame_centre_vertical_offset;
513 *p_h_offset = last_h_offset; 513 *p_h_offset = last_h_offset;
514 *(p_h_offset + 1) = last_h_offset; 514 *(p_h_offset + 1) = last_h_offset;
515 *(p_h_offset + 2) = last_h_offset; 515 *(p_h_offset + 2) = last_h_offset;
516 *p_v_offset = last_v_offset; 516 *p_v_offset = last_v_offset;
517 *(p_v_offset + 1) = last_v_offset; 517 *(p_v_offset + 1) = last_v_offset;
518 *(p_v_offset + 2) = last_v_offset; 518 *(p_v_offset + 2) = last_v_offset;
519 } else { 519 } else {
520 pic->frame_centre_horizontal_offset[3] = last_h_offset; 520 pic->frame_centre_horizontal_offset[3] = last_h_offset;
521 pic->frame_centre_vertical_offset[3] = last_v_offset; 521 pic->frame_centre_vertical_offset[3] = last_v_offset;
522 } 522 }
523} 523}
524#endif 524#endif
525 525
526#if 0 526#if 0
527static void init_mpg_picture( struct mpg_picture *pic, int chan, int32_t field_type) 527static void init_mpg_picture( struct mpg_picture *pic, int chan, int32_t field_type)
528{ 528{
529 pic->picture_header = 0; 529 pic->picture_header = 0;
530 pic->sequence_header_data 530 pic->sequence_header_data
531 = ( INIT_HORIZONTAL_SIZE << 20 ) 531 = ( INIT_HORIZONTAL_SIZE << 20 )
532 | ( INIT_VERTICAL_SIZE << 8 ) 532 | ( INIT_VERTICAL_SIZE << 8 )
533 | ( INIT_ASPECT_RATIO << 4 ) 533 | ( INIT_ASPECT_RATIO << 4 )
534 | ( INIT_FRAME_RATE ); 534 | ( INIT_FRAME_RATE );
535 pic->mpeg1_flag = 0; 535 pic->mpeg1_flag = 0;
536 pic->vinfo.horizontal_size 536 pic->vinfo.horizontal_size
537 = INIT_DISP_HORIZONTAL_SIZE; 537 = INIT_DISP_HORIZONTAL_SIZE;
538 pic->vinfo.vertical_size 538 pic->vinfo.vertical_size
539 = INIT_DISP_VERTICAL_SIZE; 539 = INIT_DISP_VERTICAL_SIZE;
540 pic->picture_display_extension_flag[field_type] 540 pic->picture_display_extension_flag[field_type]
541 = 0; 541 = 0;
542 pic->pts_flag[field_type] = 0; 542 pic->pts_flag[field_type] = 0;
543 543
544 pic->sequence_gop_header = 0; 544 pic->sequence_gop_header = 0;
545 pic->picture_header = 0; 545 pic->picture_header = 0;
546 pic->sequence_header_flag = 0; 546 pic->sequence_header_flag = 0;
547 pic->gop_flag = 0; 547 pic->gop_flag = 0;
548 pic->sequence_end_flag = 0; 548 pic->sequence_end_flag = 0;
549 pic->sequence_display_extension_flag = 0; 549 pic->sequence_display_extension_flag = 0;
550 pic->last_frame_centre_horizontal_offset = 0; 550 pic->last_frame_centre_horizontal_offset = 0;
551 pic->last_frame_centre_vertical_offset = 0; 551 pic->last_frame_centre_vertical_offset = 0;
552 pic->channel = chan; 552 pic->channel = chan;
553} 553}
554#endif 554#endif
@@ -588,11 +588,11 @@ int dvb_filter_pes2ts(struct dvb_filter_pes2ts *p2ts, unsigned char *pes,
588 buf[1]&=~0x40; 588 buf[1]&=~0x40;
589 } 589 }
590 if (!len) 590 if (!len)
591 return 0; 591 return 0;
592 buf[3]=0x30|((p2ts->cc++)&0x0f); 592 buf[3]=0x30|((p2ts->cc++)&0x0f);
593 rest=183-len; 593 rest=183-len;
594 if (rest) { 594 if (rest) {
595 buf[5]=0x00; 595 buf[5]=0x00;
596 if (rest-1) 596 if (rest-1)
597 memset(buf+6, 0xff, rest-1); 597 memset(buf+6, 0xff, rest-1);
598 } 598 }
diff --git a/drivers/media/dvb/dvb-core/dvb_filter.h b/drivers/media/dvb/dvb-core/dvb_filter.h
index b0848f7836b7..375e3be184b1 100644
--- a/drivers/media/dvb/dvb-core/dvb_filter.h
+++ b/drivers/media/dvb/dvb-core/dvb_filter.h
@@ -29,8 +29,8 @@ typedef int (dvb_filter_pes2ts_cb_t) (void *, unsigned char *);
29 29
30struct dvb_filter_pes2ts { 30struct dvb_filter_pes2ts {
31 unsigned char buf[188]; 31 unsigned char buf[188];
32 unsigned char cc; 32 unsigned char cc;
33 dvb_filter_pes2ts_cb_t *cb; 33 dvb_filter_pes2ts_cb_t *cb;
34 void *priv; 34 void *priv;
35}; 35};
36 36
@@ -162,7 +162,7 @@ struct dvb_video_info {
162 u32 bit_rate; 162 u32 bit_rate;
163 u32 comp_bit_rate; 163 u32 comp_bit_rate;
164 u32 vbv_buffer_size; 164 u32 vbv_buffer_size;
165 s16 vbv_delay; 165 s16 vbv_delay;
166 u32 CSPF; 166 u32 CSPF;
167 u32 off; 167 u32 off;
168}; 168};
@@ -173,60 +173,60 @@ struct dvb_video_info {
173#define VIDEO_FRAME_PICTURE 0x03 173#define VIDEO_FRAME_PICTURE 0x03
174 174
175struct mpg_picture { 175struct mpg_picture {
176 int channel; 176 int channel;
177 struct dvb_video_info vinfo; 177 struct dvb_video_info vinfo;
178 u32 *sequence_gop_header; 178 u32 *sequence_gop_header;
179 u32 *picture_header; 179 u32 *picture_header;
180 s32 time_code; 180 s32 time_code;
181 int low_delay; 181 int low_delay;
182 int closed_gop; 182 int closed_gop;
183 int broken_link; 183 int broken_link;
184 int sequence_header_flag; 184 int sequence_header_flag;
185 int gop_flag; 185 int gop_flag;
186 int sequence_end_flag; 186 int sequence_end_flag;
187 187
188 u8 profile_and_level; 188 u8 profile_and_level;
189 s32 picture_coding_parameter; 189 s32 picture_coding_parameter;
190 u32 matrix[32]; 190 u32 matrix[32];
191 s8 matrix_change_flag; 191 s8 matrix_change_flag;
192 192
193 u8 picture_header_parameter; 193 u8 picture_header_parameter;
194 /* bit 0 - 2: bwd f code 194 /* bit 0 - 2: bwd f code
195 bit 3 : fpb vector 195 bit 3 : fpb vector
196 bit 4 - 6: fwd f code 196 bit 4 - 6: fwd f code
197 bit 7 : fpf vector */ 197 bit 7 : fpf vector */
198 198
199 int mpeg1_flag; 199 int mpeg1_flag;
200 int progressive_sequence; 200 int progressive_sequence;
201 int sequence_display_extension_flag; 201 int sequence_display_extension_flag;
202 u32 sequence_header_data; 202 u32 sequence_header_data;
203 s16 last_frame_centre_horizontal_offset; 203 s16 last_frame_centre_horizontal_offset;
204 s16 last_frame_centre_vertical_offset; 204 s16 last_frame_centre_vertical_offset;
205 205
206 u32 pts[2]; /* [0] 1st field, [1] 2nd field */ 206 u32 pts[2]; /* [0] 1st field, [1] 2nd field */
207 int top_field_first; 207 int top_field_first;
208 int repeat_first_field; 208 int repeat_first_field;
209 int progressive_frame; 209 int progressive_frame;
210 int bank; 210 int bank;
211 int forward_bank; 211 int forward_bank;
212 int backward_bank; 212 int backward_bank;
213 int compress; 213 int compress;
214 s16 frame_centre_horizontal_offset[OFF_SIZE]; 214 s16 frame_centre_horizontal_offset[OFF_SIZE];
215 /* [0-2] 1st field, [3] 2nd field */ 215 /* [0-2] 1st field, [3] 2nd field */
216 s16 frame_centre_vertical_offset[OFF_SIZE]; 216 s16 frame_centre_vertical_offset[OFF_SIZE];
217 /* [0-2] 1st field, [3] 2nd field */ 217 /* [0-2] 1st field, [3] 2nd field */
218 s16 temporal_reference[2]; 218 s16 temporal_reference[2];
219 /* [0] 1st field, [1] 2nd field */ 219 /* [0] 1st field, [1] 2nd field */
220 220
221 s8 picture_coding_type[2]; 221 s8 picture_coding_type[2];
222 /* [0] 1st field, [1] 2nd field */ 222 /* [0] 1st field, [1] 2nd field */
223 s8 picture_structure[2]; 223 s8 picture_structure[2];
224 /* [0] 1st field, [1] 2nd field */ 224 /* [0] 1st field, [1] 2nd field */
225 s8 picture_display_extension_flag[2]; 225 s8 picture_display_extension_flag[2];
226 /* [0] 1st field, [1] 2nd field */ 226 /* [0] 1st field, [1] 2nd field */
227 /* picture_display_extenion() 0:no 1:exit*/ 227 /* picture_display_extenion() 0:no 1:exit*/
228 s8 pts_flag[2]; 228 s8 pts_flag[2];
229 /* [0] 1st field, [1] 2nd field */ 229 /* [0] 1st field, [1] 2nd field */
230}; 230};
231 231
232struct dvb_audio_info { 232struct dvb_audio_info {
diff --git a/drivers/media/dvb/dvb-core/dvb_frontend.c b/drivers/media/dvb/dvb-core/dvb_frontend.c
index 6ffa6b216363..95ea5095e07e 100644
--- a/drivers/media/dvb/dvb-core/dvb_frontend.c
+++ b/drivers/media/dvb/dvb-core/dvb_frontend.c
@@ -372,10 +372,10 @@ static int dvb_frontend_thread(void *data)
372 372
373 snprintf (name, sizeof(name), "kdvb-fe-%i", fe->dvb->num); 373 snprintf (name, sizeof(name), "kdvb-fe-%i", fe->dvb->num);
374 374
375 lock_kernel(); 375 lock_kernel();
376 daemonize(name); 376 daemonize(name);
377 sigfillset(&current->blocked); 377 sigfillset(&current->blocked);
378 unlock_kernel(); 378 unlock_kernel();
379 379
380 fepriv->status = 0; 380 fepriv->status = 0;
381 dvb_frontend_init(fe); 381 dvb_frontend_init(fe);
diff --git a/drivers/media/dvb/dvb-core/dvb_frontend.h b/drivers/media/dvb/dvb-core/dvb_frontend.h
index 348c9b0b988a..1e0840d02f1f 100644
--- a/drivers/media/dvb/dvb-core/dvb_frontend.h
+++ b/drivers/media/dvb/dvb-core/dvb_frontend.h
@@ -41,10 +41,10 @@
41#include "dvbdev.h" 41#include "dvbdev.h"
42 42
43struct dvb_frontend_tune_settings { 43struct dvb_frontend_tune_settings {
44 int min_delay_ms; 44 int min_delay_ms;
45 int step_size; 45 int step_size;
46 int max_drift; 46 int max_drift;
47 struct dvb_frontend_parameters parameters; 47 struct dvb_frontend_parameters parameters;
48}; 48};
49 49
50struct dvb_frontend; 50struct dvb_frontend;
diff --git a/drivers/media/dvb/dvb-core/dvb_net.c b/drivers/media/dvb/dvb-core/dvb_net.c
index df536bd2e103..86bba81e851e 100644
--- a/drivers/media/dvb/dvb-core/dvb_net.c
+++ b/drivers/media/dvb/dvb-core/dvb_net.c
@@ -713,7 +713,7 @@ static int dvb_net_ts_callback(const u8 *buffer1, size_t buffer1_len,
713 if (buffer1_len > 32768) 713 if (buffer1_len > 32768)
714 printk(KERN_WARNING "length > 32k: %zu.\n", buffer1_len); 714 printk(KERN_WARNING "length > 32k: %zu.\n", buffer1_len);
715 /* printk("TS callback: %u bytes, %u TS cells @ %p.\n", 715 /* printk("TS callback: %u bytes, %u TS cells @ %p.\n",
716 buffer1_len, buffer1_len / TS_SZ, buffer1); */ 716 buffer1_len, buffer1_len / TS_SZ, buffer1); */
717 dvb_net_ule(dev, buffer1, buffer1_len); 717 dvb_net_ule(dev, buffer1, buffer1_len);
718 return 0; 718 return 0;
719} 719}
@@ -721,8 +721,8 @@ static int dvb_net_ts_callback(const u8 *buffer1, size_t buffer1_len,
721 721
722static void dvb_net_sec(struct net_device *dev, u8 *pkt, int pkt_len) 722static void dvb_net_sec(struct net_device *dev, u8 *pkt, int pkt_len)
723{ 723{
724 u8 *eth; 724 u8 *eth;
725 struct sk_buff *skb; 725 struct sk_buff *skb;
726 struct net_device_stats *stats = &(((struct dvb_net_priv *) dev->priv)->stats); 726 struct net_device_stats *stats = &(((struct dvb_net_priv *) dev->priv)->stats);
727 int snap = 0; 727 int snap = 0;
728 728
@@ -754,7 +754,7 @@ static void dvb_net_sec(struct net_device *dev, u8 *pkt, int pkt_len)
754 return; 754 return;
755 } 755 }
756 snap = 8; 756 snap = 8;
757 } 757 }
758 if (pkt[7]) { 758 if (pkt[7]) {
759 /* FIXME: assemble datagram from multiple sections */ 759 /* FIXME: assemble datagram from multiple sections */
760 stats->rx_errors++; 760 stats->rx_errors++;
@@ -778,14 +778,14 @@ static void dvb_net_sec(struct net_device *dev, u8 *pkt, int pkt_len)
778 memcpy(eth + 14, pkt + 12 + snap, pkt_len - 12 - 4 - snap); 778 memcpy(eth + 14, pkt + 12 + snap, pkt_len - 12 - 4 - snap);
779 779
780 /* create ethernet header: */ 780 /* create ethernet header: */
781 eth[0]=pkt[0x0b]; 781 eth[0]=pkt[0x0b];
782 eth[1]=pkt[0x0a]; 782 eth[1]=pkt[0x0a];
783 eth[2]=pkt[0x09]; 783 eth[2]=pkt[0x09];
784 eth[3]=pkt[0x08]; 784 eth[3]=pkt[0x08];
785 eth[4]=pkt[0x04]; 785 eth[4]=pkt[0x04];
786 eth[5]=pkt[0x03]; 786 eth[5]=pkt[0x03];
787 787
788 eth[6]=eth[7]=eth[8]=eth[9]=eth[10]=eth[11]=0; 788 eth[6]=eth[7]=eth[8]=eth[9]=eth[10]=eth[11]=0;
789 789
790 if (snap) { 790 if (snap) {
791 eth[12] = pkt[18]; 791 eth[12] = pkt[18];
@@ -807,7 +807,7 @@ static void dvb_net_sec(struct net_device *dev, u8 *pkt, int pkt_len)
807 807
808 stats->rx_packets++; 808 stats->rx_packets++;
809 stats->rx_bytes+=skb->len; 809 stats->rx_bytes+=skb->len;
810 netif_rx(skb); 810 netif_rx(skb);
811} 811}
812 812
813static int dvb_net_sec_callback(const u8 *buffer1, size_t buffer1_len, 813static int dvb_net_sec_callback(const u8 *buffer1, size_t buffer1_len,
@@ -815,7 +815,7 @@ static int dvb_net_sec_callback(const u8 *buffer1, size_t buffer1_len,
815 struct dmx_section_filter *filter, 815 struct dmx_section_filter *filter,
816 enum dmx_success success) 816 enum dmx_success success)
817{ 817{
818 struct net_device *dev = filter->priv; 818 struct net_device *dev = filter->priv;
819 819
820 /** 820 /**
821 * we rely on the DVB API definition where exactly one complete 821 * we rely on the DVB API definition where exactly one complete
@@ -885,8 +885,8 @@ static int dvb_net_feed_start(struct net_device *dev)
885{ 885{
886 int ret = 0, i; 886 int ret = 0, i;
887 struct dvb_net_priv *priv = dev->priv; 887 struct dvb_net_priv *priv = dev->priv;
888 struct dmx_demux *demux = priv->demux; 888 struct dmx_demux *demux = priv->demux;
889 unsigned char *mac = (unsigned char *) dev->dev_addr; 889 unsigned char *mac = (unsigned char *) dev->dev_addr;
890 890
891 dprintk("%s: rx_mode %i\n", __FUNCTION__, priv->rx_mode); 891 dprintk("%s: rx_mode %i\n", __FUNCTION__, priv->rx_mode);
892 down(&priv->mutex); 892 down(&priv->mutex);
@@ -1129,12 +1129,12 @@ static int dvb_net_stop(struct net_device *dev)
1129 struct dvb_net_priv *priv = dev->priv; 1129 struct dvb_net_priv *priv = dev->priv;
1130 1130
1131 priv->in_use--; 1131 priv->in_use--;
1132 return dvb_net_feed_stop(dev); 1132 return dvb_net_feed_stop(dev);
1133} 1133}
1134 1134
1135static struct net_device_stats * dvb_net_get_stats(struct net_device *dev) 1135static struct net_device_stats * dvb_net_get_stats(struct net_device *dev)
1136{ 1136{
1137 return &((struct dvb_net_priv*) dev->priv)->stats; 1137 return &((struct dvb_net_priv*) dev->priv)->stats;
1138} 1138}
1139 1139
1140static void dvb_net_setup(struct net_device *dev) 1140static void dvb_net_setup(struct net_device *dev)
@@ -1360,10 +1360,10 @@ static struct file_operations dvb_net_fops = {
1360}; 1360};
1361 1361
1362static struct dvb_device dvbdev_net = { 1362static struct dvb_device dvbdev_net = {
1363 .priv = NULL, 1363 .priv = NULL,
1364 .users = 1, 1364 .users = 1,
1365 .writers = 1, 1365 .writers = 1,
1366 .fops = &dvb_net_fops, 1366 .fops = &dvb_net_fops,
1367}; 1367};
1368 1368
1369 1369
diff --git a/drivers/media/dvb/dvb-core/dvb_ringbuffer.c b/drivers/media/dvb/dvb-core/dvb_ringbuffer.c
index fb6d94a69d71..283c6e9339a4 100644
--- a/drivers/media/dvb/dvb-core/dvb_ringbuffer.c
+++ b/drivers/media/dvb/dvb-core/dvb_ringbuffer.c
@@ -42,216 +42,216 @@
42 42
43void dvb_ringbuffer_init(struct dvb_ringbuffer *rbuf, void *data, size_t len) 43void dvb_ringbuffer_init(struct dvb_ringbuffer *rbuf, void *data, size_t len)
44{ 44{
45 rbuf->pread=rbuf->pwrite=0; 45 rbuf->pread=rbuf->pwrite=0;
46 rbuf->data=data; 46 rbuf->data=data;
47 rbuf->size=len; 47 rbuf->size=len;
48 48
49 init_waitqueue_head(&rbuf->queue); 49 init_waitqueue_head(&rbuf->queue);
50 50
51 spin_lock_init(&(rbuf->lock)); 51 spin_lock_init(&(rbuf->lock));
52} 52}
53 53
54 54
55 55
56int dvb_ringbuffer_empty(struct dvb_ringbuffer *rbuf) 56int dvb_ringbuffer_empty(struct dvb_ringbuffer *rbuf)
57{ 57{
58 return (rbuf->pread==rbuf->pwrite); 58 return (rbuf->pread==rbuf->pwrite);
59} 59}
60 60
61 61
62 62
63ssize_t dvb_ringbuffer_free(struct dvb_ringbuffer *rbuf) 63ssize_t dvb_ringbuffer_free(struct dvb_ringbuffer *rbuf)
64{ 64{
65 ssize_t free; 65 ssize_t free;
66 66
67 free = rbuf->pread - rbuf->pwrite; 67 free = rbuf->pread - rbuf->pwrite;
68 if (free <= 0) 68 if (free <= 0)
69 free += rbuf->size; 69 free += rbuf->size;
70 return free-1; 70 return free-1;
71} 71}
72 72
73 73
74 74
75ssize_t dvb_ringbuffer_avail(struct dvb_ringbuffer *rbuf) 75ssize_t dvb_ringbuffer_avail(struct dvb_ringbuffer *rbuf)
76{ 76{
77 ssize_t avail; 77 ssize_t avail;
78 78
79 avail = rbuf->pwrite - rbuf->pread; 79 avail = rbuf->pwrite - rbuf->pread;
80 if (avail < 0) 80 if (avail < 0)
81 avail += rbuf->size; 81 avail += rbuf->size;
82 return avail; 82 return avail;
83} 83}
84 84
85 85
86 86
87void dvb_ringbuffer_flush(struct dvb_ringbuffer *rbuf) 87void dvb_ringbuffer_flush(struct dvb_ringbuffer *rbuf)
88{ 88{
89 rbuf->pread = rbuf->pwrite; 89 rbuf->pread = rbuf->pwrite;
90} 90}
91 91
92 92
93 93
94void dvb_ringbuffer_flush_spinlock_wakeup(struct dvb_ringbuffer *rbuf) 94void dvb_ringbuffer_flush_spinlock_wakeup(struct dvb_ringbuffer *rbuf)
95{ 95{
96 unsigned long flags; 96 unsigned long flags;
97 97
98 spin_lock_irqsave(&rbuf->lock, flags); 98 spin_lock_irqsave(&rbuf->lock, flags);
99 dvb_ringbuffer_flush(rbuf); 99 dvb_ringbuffer_flush(rbuf);
100 spin_unlock_irqrestore(&rbuf->lock, flags); 100 spin_unlock_irqrestore(&rbuf->lock, flags);
101 101
102 wake_up(&rbuf->queue); 102 wake_up(&rbuf->queue);
103} 103}
104 104
105 105
106 106
107ssize_t dvb_ringbuffer_read(struct dvb_ringbuffer *rbuf, u8 *buf, size_t len, int usermem) 107ssize_t dvb_ringbuffer_read(struct dvb_ringbuffer *rbuf, u8 *buf, size_t len, int usermem)
108{ 108{
109 size_t todo = len; 109 size_t todo = len;
110 size_t split; 110 size_t split;
111 111
112 split = (rbuf->pread + len > rbuf->size) ? rbuf->size - rbuf->pread : 0; 112 split = (rbuf->pread + len > rbuf->size) ? rbuf->size - rbuf->pread : 0;
113 if (split > 0) { 113 if (split > 0) {
114 if (!usermem) 114 if (!usermem)
115 memcpy(buf, rbuf->data+rbuf->pread, split); 115 memcpy(buf, rbuf->data+rbuf->pread, split);
116 else 116 else
117 if (copy_to_user(buf, rbuf->data+rbuf->pread, split)) 117 if (copy_to_user(buf, rbuf->data+rbuf->pread, split))
118 return -EFAULT; 118 return -EFAULT;
119 buf += split; 119 buf += split;
120 todo -= split; 120 todo -= split;
121 rbuf->pread = 0; 121 rbuf->pread = 0;
122 } 122 }
123 if (!usermem) 123 if (!usermem)
124 memcpy(buf, rbuf->data+rbuf->pread, todo); 124 memcpy(buf, rbuf->data+rbuf->pread, todo);
125 else 125 else
126 if (copy_to_user(buf, rbuf->data+rbuf->pread, todo)) 126 if (copy_to_user(buf, rbuf->data+rbuf->pread, todo))
127 return -EFAULT; 127 return -EFAULT;
128 128
129 rbuf->pread = (rbuf->pread + todo) % rbuf->size; 129 rbuf->pread = (rbuf->pread + todo) % rbuf->size;
130 130
131 return len; 131 return len;
132} 132}
133 133
134 134
135 135
136ssize_t dvb_ringbuffer_write(struct dvb_ringbuffer *rbuf, const u8 *buf, size_t len) 136ssize_t dvb_ringbuffer_write(struct dvb_ringbuffer *rbuf, const u8 *buf, size_t len)
137{ 137{
138 size_t todo = len; 138 size_t todo = len;
139 size_t split; 139 size_t split;
140 140
141 split = (rbuf->pwrite + len > rbuf->size) ? rbuf->size - rbuf->pwrite : 0; 141 split = (rbuf->pwrite + len > rbuf->size) ? rbuf->size - rbuf->pwrite : 0;
142 142
143 if (split > 0) { 143 if (split > 0) {
144 memcpy(rbuf->data+rbuf->pwrite, buf, split); 144 memcpy(rbuf->data+rbuf->pwrite, buf, split);
145 buf += split; 145 buf += split;
146 todo -= split; 146 todo -= split;
147 rbuf->pwrite = 0; 147 rbuf->pwrite = 0;
148 } 148 }
149 memcpy(rbuf->data+rbuf->pwrite, buf, todo); 149 memcpy(rbuf->data+rbuf->pwrite, buf, todo);
150 rbuf->pwrite = (rbuf->pwrite + todo) % rbuf->size; 150 rbuf->pwrite = (rbuf->pwrite + todo) % rbuf->size;
151 151
152 return len; 152 return len;
153} 153}
154 154
155ssize_t dvb_ringbuffer_pkt_write(struct dvb_ringbuffer *rbuf, u8* buf, size_t len) 155ssize_t dvb_ringbuffer_pkt_write(struct dvb_ringbuffer *rbuf, u8* buf, size_t len)
156{ 156{
157 int status; 157 int status;
158 ssize_t oldpwrite = rbuf->pwrite; 158 ssize_t oldpwrite = rbuf->pwrite;
159 159
160 DVB_RINGBUFFER_WRITE_BYTE(rbuf, len >> 8); 160 DVB_RINGBUFFER_WRITE_BYTE(rbuf, len >> 8);
161 DVB_RINGBUFFER_WRITE_BYTE(rbuf, len & 0xff); 161 DVB_RINGBUFFER_WRITE_BYTE(rbuf, len & 0xff);
162 DVB_RINGBUFFER_WRITE_BYTE(rbuf, PKT_READY); 162 DVB_RINGBUFFER_WRITE_BYTE(rbuf, PKT_READY);
163 status = dvb_ringbuffer_write(rbuf, buf, len); 163 status = dvb_ringbuffer_write(rbuf, buf, len);
164 164
165 if (status < 0) rbuf->pwrite = oldpwrite; 165 if (status < 0) rbuf->pwrite = oldpwrite;
166 return status; 166 return status;
167} 167}
168 168
169ssize_t dvb_ringbuffer_pkt_read(struct dvb_ringbuffer *rbuf, size_t idx, 169ssize_t dvb_ringbuffer_pkt_read(struct dvb_ringbuffer *rbuf, size_t idx,
170 int offset, u8* buf, size_t len, int usermem) 170 int offset, u8* buf, size_t len, int usermem)
171{ 171{
172 size_t todo; 172 size_t todo;
173 size_t split; 173 size_t split;
174 size_t pktlen; 174 size_t pktlen;
175 175
176 pktlen = rbuf->data[idx] << 8; 176 pktlen = rbuf->data[idx] << 8;
177 pktlen |= rbuf->data[(idx + 1) % rbuf->size]; 177 pktlen |= rbuf->data[(idx + 1) % rbuf->size];
178 if (offset > pktlen) return -EINVAL; 178 if (offset > pktlen) return -EINVAL;
179 if ((offset + len) > pktlen) len = pktlen - offset; 179 if ((offset + len) > pktlen) len = pktlen - offset;
180 180
181 idx = (idx + DVB_RINGBUFFER_PKTHDRSIZE + offset) % rbuf->size; 181 idx = (idx + DVB_RINGBUFFER_PKTHDRSIZE + offset) % rbuf->size;
182 todo = len; 182 todo = len;
183 split = ((idx + len) > rbuf->size) ? rbuf->size - idx : 0; 183 split = ((idx + len) > rbuf->size) ? rbuf->size - idx : 0;
184 if (split > 0) { 184 if (split > 0) {
185 if (!usermem) 185 if (!usermem)
186 memcpy(buf, rbuf->data+idx, split); 186 memcpy(buf, rbuf->data+idx, split);
187 else 187 else
188 if (copy_to_user(buf, rbuf->data+idx, split)) 188 if (copy_to_user(buf, rbuf->data+idx, split))
189 return -EFAULT; 189 return -EFAULT;
190 buf += split; 190 buf += split;
191 todo -= split; 191 todo -= split;
192 idx = 0; 192 idx = 0;
193 } 193 }
194 if (!usermem) 194 if (!usermem)
195 memcpy(buf, rbuf->data+idx, todo); 195 memcpy(buf, rbuf->data+idx, todo);
196 else 196 else
197 if (copy_to_user(buf, rbuf->data+idx, todo)) 197 if (copy_to_user(buf, rbuf->data+idx, todo))
198 return -EFAULT; 198 return -EFAULT;
199 199
200 return len; 200 return len;
201} 201}
202 202
203void dvb_ringbuffer_pkt_dispose(struct dvb_ringbuffer *rbuf, size_t idx) 203void dvb_ringbuffer_pkt_dispose(struct dvb_ringbuffer *rbuf, size_t idx)
204{ 204{
205 size_t pktlen; 205 size_t pktlen;
206 206
207 rbuf->data[(idx + 2) % rbuf->size] = PKT_DISPOSED; 207 rbuf->data[(idx + 2) % rbuf->size] = PKT_DISPOSED;
208 208
209 // clean up disposed packets 209 // clean up disposed packets
210 while(dvb_ringbuffer_avail(rbuf) > DVB_RINGBUFFER_PKTHDRSIZE) { 210 while(dvb_ringbuffer_avail(rbuf) > DVB_RINGBUFFER_PKTHDRSIZE) {
211 if (DVB_RINGBUFFER_PEEK(rbuf, 2) == PKT_DISPOSED) { 211 if (DVB_RINGBUFFER_PEEK(rbuf, 2) == PKT_DISPOSED) {
212 pktlen = DVB_RINGBUFFER_PEEK(rbuf, 0) << 8; 212 pktlen = DVB_RINGBUFFER_PEEK(rbuf, 0) << 8;
213 pktlen |= DVB_RINGBUFFER_PEEK(rbuf, 1); 213 pktlen |= DVB_RINGBUFFER_PEEK(rbuf, 1);
214 DVB_RINGBUFFER_SKIP(rbuf, pktlen + DVB_RINGBUFFER_PKTHDRSIZE); 214 DVB_RINGBUFFER_SKIP(rbuf, pktlen + DVB_RINGBUFFER_PKTHDRSIZE);
215 } else { 215 } else {
216 // first packet is not disposed, so we stop cleaning now 216 // first packet is not disposed, so we stop cleaning now
217 break; 217 break;
218 } 218 }
219 } 219 }
220} 220}
221 221
222ssize_t dvb_ringbuffer_pkt_next(struct dvb_ringbuffer *rbuf, size_t idx, size_t* pktlen) 222ssize_t dvb_ringbuffer_pkt_next(struct dvb_ringbuffer *rbuf, size_t idx, size_t* pktlen)
223{ 223{
224 int consumed; 224 int consumed;
225 int curpktlen; 225 int curpktlen;
226 int curpktstatus; 226 int curpktstatus;
227 227
228 if (idx == -1) { 228 if (idx == -1) {
229 idx = rbuf->pread; 229 idx = rbuf->pread;
230 } else { 230 } else {
231 curpktlen = rbuf->data[idx] << 8; 231 curpktlen = rbuf->data[idx] << 8;
232 curpktlen |= rbuf->data[(idx + 1) % rbuf->size]; 232 curpktlen |= rbuf->data[(idx + 1) % rbuf->size];
233 idx = (idx + curpktlen + DVB_RINGBUFFER_PKTHDRSIZE) % rbuf->size; 233 idx = (idx + curpktlen + DVB_RINGBUFFER_PKTHDRSIZE) % rbuf->size;
234 } 234 }
235 235
236 consumed = (idx - rbuf->pread) % rbuf->size; 236 consumed = (idx - rbuf->pread) % rbuf->size;
237 237
238 while((dvb_ringbuffer_avail(rbuf) - consumed) > DVB_RINGBUFFER_PKTHDRSIZE) { 238 while((dvb_ringbuffer_avail(rbuf) - consumed) > DVB_RINGBUFFER_PKTHDRSIZE) {
239 239
240 curpktlen = rbuf->data[idx] << 8; 240 curpktlen = rbuf->data[idx] << 8;
241 curpktlen |= rbuf->data[(idx + 1) % rbuf->size]; 241 curpktlen |= rbuf->data[(idx + 1) % rbuf->size];
242 curpktstatus = rbuf->data[(idx + 2) % rbuf->size]; 242 curpktstatus = rbuf->data[(idx + 2) % rbuf->size];
243 243
244 if (curpktstatus == PKT_READY) { 244 if (curpktstatus == PKT_READY) {
245 *pktlen = curpktlen; 245 *pktlen = curpktlen;
246 return idx; 246 return idx;
247 } 247 }
248 248
249 consumed += curpktlen + DVB_RINGBUFFER_PKTHDRSIZE; 249 consumed += curpktlen + DVB_RINGBUFFER_PKTHDRSIZE;
250 idx = (idx + curpktlen + DVB_RINGBUFFER_PKTHDRSIZE) % rbuf->size; 250 idx = (idx + curpktlen + DVB_RINGBUFFER_PKTHDRSIZE) % rbuf->size;
251 } 251 }
252 252
253 // no packets available 253 // no packets available
254 return -1; 254 return -1;
255} 255}
256 256
257 257
diff --git a/drivers/media/dvb/dvb-core/dvb_ringbuffer.h b/drivers/media/dvb/dvb-core/dvb_ringbuffer.h
index d18e9c4ba9ea..fa476f662f82 100644
--- a/drivers/media/dvb/dvb-core/dvb_ringbuffer.h
+++ b/drivers/media/dvb/dvb-core/dvb_ringbuffer.h
@@ -31,13 +31,13 @@
31#include <linux/wait.h> 31#include <linux/wait.h>
32 32
33struct dvb_ringbuffer { 33struct dvb_ringbuffer {
34 u8 *data; 34 u8 *data;
35 ssize_t size; 35 ssize_t size;
36 ssize_t pread; 36 ssize_t pread;
37 ssize_t pwrite; 37 ssize_t pwrite;
38 38
39 wait_queue_head_t queue; 39 wait_queue_head_t queue;
40 spinlock_t lock; 40 spinlock_t lock;
41}; 41};
42 42
43#define DVB_RINGBUFFER_PKTHDRSIZE 3 43#define DVB_RINGBUFFER_PKTHDRSIZE 3
@@ -106,7 +106,7 @@ extern void dvb_ringbuffer_flush_spinlock_wakeup(struct dvb_ringbuffer *rbuf);
106** returns number of bytes transferred or -EFAULT 106** returns number of bytes transferred or -EFAULT
107*/ 107*/
108extern ssize_t dvb_ringbuffer_read(struct dvb_ringbuffer *rbuf, u8 *buf, 108extern ssize_t dvb_ringbuffer_read(struct dvb_ringbuffer *rbuf, u8 *buf,
109 size_t len, int usermem); 109 size_t len, int usermem);
110 110
111 111
112/* write routines & macros */ 112/* write routines & macros */
@@ -121,7 +121,7 @@ extern ssize_t dvb_ringbuffer_read(struct dvb_ringbuffer *rbuf, u8 *buf,
121** returns number of bytes transferred or -EFAULT 121** returns number of bytes transferred or -EFAULT
122*/ 122*/
123extern ssize_t dvb_ringbuffer_write(struct dvb_ringbuffer *rbuf, const u8 *buf, 123extern ssize_t dvb_ringbuffer_write(struct dvb_ringbuffer *rbuf, const u8 *buf,
124 size_t len); 124 size_t len);
125 125
126 126
127/** 127/**
@@ -133,7 +133,7 @@ extern ssize_t dvb_ringbuffer_write(struct dvb_ringbuffer *rbuf, const u8 *buf,
133 * returns Number of bytes written, or -EFAULT, -ENOMEM, -EVINAL. 133 * returns Number of bytes written, or -EFAULT, -ENOMEM, -EVINAL.
134 */ 134 */
135extern ssize_t dvb_ringbuffer_pkt_write(struct dvb_ringbuffer *rbuf, u8* buf, 135extern ssize_t dvb_ringbuffer_pkt_write(struct dvb_ringbuffer *rbuf, u8* buf,
136 size_t len); 136 size_t len);
137 137
138/** 138/**
139 * Read from a packet in the ringbuffer. Note: unlike dvb_ringbuffer_read(), this 139 * Read from a packet in the ringbuffer. Note: unlike dvb_ringbuffer_read(), this
@@ -149,7 +149,7 @@ extern ssize_t dvb_ringbuffer_pkt_write(struct dvb_ringbuffer *rbuf, u8* buf,
149 * returns Number of bytes read, or -EFAULT. 149 * returns Number of bytes read, or -EFAULT.
150 */ 150 */
151extern ssize_t dvb_ringbuffer_pkt_read(struct dvb_ringbuffer *rbuf, size_t idx, 151extern ssize_t dvb_ringbuffer_pkt_read(struct dvb_ringbuffer *rbuf, size_t idx,
152 int offset, u8* buf, size_t len, int usermem); 152 int offset, u8* buf, size_t len, int usermem);
153 153
154/** 154/**
155 * Dispose of a packet in the ring buffer. 155 * Dispose of a packet in the ring buffer.
diff --git a/drivers/media/dvb/dvb-core/dvbdev.c b/drivers/media/dvb/dvb-core/dvbdev.c
index 477b4fa56430..a4aee8665854 100644
--- a/drivers/media/dvb/dvb-core/dvbdev.c
+++ b/drivers/media/dvb/dvb-core/dvbdev.c
@@ -47,7 +47,7 @@ static LIST_HEAD(dvb_adapter_list);
47static DECLARE_MUTEX(dvbdev_register_lock); 47static DECLARE_MUTEX(dvbdev_register_lock);
48 48
49static const char * const dnames[] = { 49static const char * const dnames[] = {
50 "video", "audio", "sec", "frontend", "demux", "dvr", "ca", 50 "video", "audio", "sec", "frontend", "demux", "dvr", "ca",
51 "net", "osd" 51 "net", "osd"
52}; 52};
53 53
@@ -90,15 +90,15 @@ static int dvb_device_open(struct inode *inode, struct file *file)
90 90
91 file->private_data = dvbdev; 91 file->private_data = dvbdev;
92 old_fops = file->f_op; 92 old_fops = file->f_op;
93 file->f_op = fops_get(dvbdev->fops); 93 file->f_op = fops_get(dvbdev->fops);
94 if(file->f_op->open) 94 if(file->f_op->open)
95 err = file->f_op->open(inode,file); 95 err = file->f_op->open(inode,file);
96 if (err) { 96 if (err) {
97 fops_put(file->f_op); 97 fops_put(file->f_op);
98 file->f_op = fops_get(old_fops); 98 file->f_op = fops_get(old_fops);
99 } 99 }
100 fops_put(old_fops); 100 fops_put(old_fops);
101 return err; 101 return err;
102 } 102 }
103 return -ENODEV; 103 return -ENODEV;
104} 104}
@@ -117,21 +117,21 @@ static struct cdev dvb_device_cdev = {
117 117
118int dvb_generic_open(struct inode *inode, struct file *file) 118int dvb_generic_open(struct inode *inode, struct file *file)
119{ 119{
120 struct dvb_device *dvbdev = file->private_data; 120 struct dvb_device *dvbdev = file->private_data;
121 121
122 if (!dvbdev) 122 if (!dvbdev)
123 return -ENODEV; 123 return -ENODEV;
124 124
125 if (!dvbdev->users) 125 if (!dvbdev->users)
126 return -EBUSY; 126 return -EBUSY;
127 127
128 if ((file->f_flags & O_ACCMODE) == O_RDONLY) { 128 if ((file->f_flags & O_ACCMODE) == O_RDONLY) {
129 if (!dvbdev->readers) 129 if (!dvbdev->readers)
130 return -EBUSY; 130 return -EBUSY;
131 dvbdev->readers--; 131 dvbdev->readers--;
132 } else { 132 } else {
133 if (!dvbdev->writers) 133 if (!dvbdev->writers)
134 return -EBUSY; 134 return -EBUSY;
135 dvbdev->writers--; 135 dvbdev->writers--;
136 } 136 }
137 137
@@ -143,10 +143,10 @@ EXPORT_SYMBOL(dvb_generic_open);
143 143
144int dvb_generic_release(struct inode *inode, struct file *file) 144int dvb_generic_release(struct inode *inode, struct file *file)
145{ 145{
146 struct dvb_device *dvbdev = file->private_data; 146 struct dvb_device *dvbdev = file->private_data;
147 147
148 if (!dvbdev) 148 if (!dvbdev)
149 return -ENODEV; 149 return -ENODEV;
150 150
151 if ((file->f_flags & O_ACCMODE) == O_RDONLY) { 151 if ((file->f_flags & O_ACCMODE) == O_RDONLY) {
152 dvbdev->readers++; 152 dvbdev->readers++;
@@ -163,10 +163,10 @@ EXPORT_SYMBOL(dvb_generic_release);
163int dvb_generic_ioctl(struct inode *inode, struct file *file, 163int dvb_generic_ioctl(struct inode *inode, struct file *file,
164 unsigned int cmd, unsigned long arg) 164 unsigned int cmd, unsigned long arg)
165{ 165{
166 struct dvb_device *dvbdev = file->private_data; 166 struct dvb_device *dvbdev = file->private_data;
167 167
168 if (!dvbdev) 168 if (!dvbdev)
169 return -ENODEV; 169 return -ENODEV;
170 170
171 if (!dvbdev->kernel_ioctl) 171 if (!dvbdev->kernel_ioctl)
172 return -EINVAL; 172 return -EINVAL;
@@ -334,63 +334,63 @@ EXPORT_SYMBOL(dvb_unregister_adapter);
334 to the v4l "videodev.o" module, which is unnecessary for some 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...) */ 335 cards (ie. the budget dvb-cards don't need the v4l module...) */
336int dvb_usercopy(struct inode *inode, struct file *file, 336int dvb_usercopy(struct inode *inode, struct file *file,
337 unsigned int cmd, unsigned long arg, 337 unsigned int cmd, unsigned long arg,
338 int (*func)(struct inode *inode, struct file *file, 338 int (*func)(struct inode *inode, struct file *file,
339 unsigned int cmd, void *arg)) 339 unsigned int cmd, void *arg))
340{ 340{
341 char sbuf[128]; 341 char sbuf[128];
342 void *mbuf = NULL; 342 void *mbuf = NULL;
343 void *parg = NULL; 343 void *parg = NULL;
344 int err = -EINVAL; 344 int err = -EINVAL;
345 345
346 /* Copy arguments into temp kernel buffer */ 346 /* Copy arguments into temp kernel buffer */
347 switch (_IOC_DIR(cmd)) { 347 switch (_IOC_DIR(cmd)) {
348 case _IOC_NONE: 348 case _IOC_NONE:
349 /* 349 /*
350 * For this command, the pointer is actually an integer 350 * For this command, the pointer is actually an integer
351 * argument. 351 * argument.
352 */ 352 */
353 parg = (void *) arg; 353 parg = (void *) arg;
354 break; 354 break;
355 case _IOC_READ: /* some v4l ioctls are marked wrong ... */ 355 case _IOC_READ: /* some v4l ioctls are marked wrong ... */
356 case _IOC_WRITE: 356 case _IOC_WRITE:
357 case (_IOC_WRITE | _IOC_READ): 357 case (_IOC_WRITE | _IOC_READ):
358 if (_IOC_SIZE(cmd) <= sizeof(sbuf)) { 358 if (_IOC_SIZE(cmd) <= sizeof(sbuf)) {
359 parg = sbuf; 359 parg = sbuf;
360 } else { 360 } else {
361 /* too big to allocate from stack */ 361 /* too big to allocate from stack */
362 mbuf = kmalloc(_IOC_SIZE(cmd),GFP_KERNEL); 362 mbuf = kmalloc(_IOC_SIZE(cmd),GFP_KERNEL);
363 if (NULL == mbuf) 363 if (NULL == mbuf)
364 return -ENOMEM; 364 return -ENOMEM;
365 parg = mbuf; 365 parg = mbuf;
366 } 366 }
367 367
368 err = -EFAULT; 368 err = -EFAULT;
369 if (copy_from_user(parg, (void __user *)arg, _IOC_SIZE(cmd))) 369 if (copy_from_user(parg, (void __user *)arg, _IOC_SIZE(cmd)))
370 goto out; 370 goto out;
371 break; 371 break;
372 } 372 }
373 373
374 /* call driver */ 374 /* call driver */
375 if ((err = func(inode, file, cmd, parg)) == -ENOIOCTLCMD) 375 if ((err = func(inode, file, cmd, parg)) == -ENOIOCTLCMD)
376 err = -EINVAL; 376 err = -EINVAL;
377 377
378 if (err < 0) 378 if (err < 0)
379 goto out; 379 goto out;
380 380
381 /* Copy results into user buffer */ 381 /* Copy results into user buffer */
382 switch (_IOC_DIR(cmd)) 382 switch (_IOC_DIR(cmd))
383 { 383 {
384 case _IOC_READ: 384 case _IOC_READ:
385 case (_IOC_WRITE | _IOC_READ): 385 case (_IOC_WRITE | _IOC_READ):
386 if (copy_to_user((void __user *)arg, parg, _IOC_SIZE(cmd))) 386 if (copy_to_user((void __user *)arg, parg, _IOC_SIZE(cmd)))
387 err = -EFAULT; 387 err = -EFAULT;
388 break; 388 break;
389 } 389 }
390 390
391out: 391out:
392 kfree(mbuf); 392 kfree(mbuf);
393 return err; 393 return err;
394} 394}
395 395
396static int __init init_dvbdev(void) 396static int __init init_dvbdev(void)
@@ -427,10 +427,10 @@ error:
427 427
428static void __exit exit_dvbdev(void) 428static void __exit exit_dvbdev(void)
429{ 429{
430 devfs_remove("dvb"); 430 devfs_remove("dvb");
431 class_destroy(dvb_class); 431 class_destroy(dvb_class);
432 cdev_del(&dvb_device_cdev); 432 cdev_del(&dvb_device_cdev);
433 unregister_chrdev_region(MKDEV(DVB_MAJOR, 0), MAX_DVB_MINORS); 433 unregister_chrdev_region(MKDEV(DVB_MAJOR, 0), MAX_DVB_MINORS);
434} 434}
435 435
436module_init(init_dvbdev); 436module_init(init_dvbdev);
diff --git a/drivers/media/dvb/dvb-core/dvbdev.h b/drivers/media/dvb/dvb-core/dvbdev.h
index a251867f30f1..0cc6e4a0e27c 100644
--- a/drivers/media/dvb/dvb-core/dvbdev.h
+++ b/drivers/media/dvb/dvb-core/dvbdev.h
@@ -68,8 +68,8 @@ struct dvb_device {
68 int writers; 68 int writers;
69 int users; 69 int users;
70 70
71 /* don't really need those !? -- FIXME: use video_usercopy */ 71 /* don't really need those !? -- FIXME: use video_usercopy */
72 int (*kernel_ioctl)(struct inode *inode, struct file *file, 72 int (*kernel_ioctl)(struct inode *inode, struct file *file,
73 unsigned int cmd, void *arg); 73 unsigned int cmd, void *arg);
74 74
75 void *priv; 75 void *priv;
@@ -97,7 +97,7 @@ we simply define out own dvb_usercopy(), which will hopefully become
97generic_usercopy() someday... */ 97generic_usercopy() someday... */
98 98
99extern int dvb_usercopy(struct inode *inode, struct file *file, 99extern int dvb_usercopy(struct inode *inode, struct file *file,
100 unsigned int cmd, unsigned long arg, 100 unsigned int cmd, unsigned long arg,
101 int (*func)(struct inode *inode, struct file *file, 101 int (*func)(struct inode *inode, struct file *file,
102 unsigned int cmd, void *arg)); 102 unsigned int cmd, void *arg));
103 103
diff --git a/drivers/media/dvb/dvb-usb/vp702x-fe.c b/drivers/media/dvb/dvb-usb/vp702x-fe.c
index f20d8dbd0be8..104b5d016c7b 100644
--- a/drivers/media/dvb/dvb-usb/vp702x-fe.c
+++ b/drivers/media/dvb/dvb-usb/vp702x-fe.c
@@ -190,7 +190,7 @@ static int vp702x_fe_get_frontend(struct dvb_frontend* fe,
190} 190}
191 191
192static int vp702x_fe_send_diseqc_msg (struct dvb_frontend* fe, 192static int vp702x_fe_send_diseqc_msg (struct dvb_frontend* fe,
193 struct dvb_diseqc_master_cmd *m) 193 struct dvb_diseqc_master_cmd *m)
194{ 194{
195 struct vp702x_fe_state *st = fe->demodulator_priv; 195 struct vp702x_fe_state *st = fe->demodulator_priv;
196 u8 cmd[8],ibuf[10]; 196 u8 cmd[8],ibuf[10];
diff --git a/drivers/media/dvb/dvb-usb/vp7045-fe.c b/drivers/media/dvb/dvb-usb/vp7045-fe.c
index 2746edfeccba..83f1de1e7e57 100644
--- a/drivers/media/dvb/dvb-usb/vp7045-fe.c
+++ b/drivers/media/dvb/dvb-usb/vp7045-fe.c
@@ -58,7 +58,7 @@ static int vp7045_fe_read_ber(struct dvb_frontend* fe, u32 *ber)
58 struct vp7045_fe_state *state = fe->demodulator_priv; 58 struct vp7045_fe_state *state = fe->demodulator_priv;
59 *ber = (vp7045_read_reg(state->d, 0x0D) << 16) | 59 *ber = (vp7045_read_reg(state->d, 0x0D) << 16) |
60 (vp7045_read_reg(state->d, 0x0E) << 8) | 60 (vp7045_read_reg(state->d, 0x0E) << 8) |
61 vp7045_read_reg(state->d, 0x0F); 61 vp7045_read_reg(state->d, 0x0F);
62 return 0; 62 return 0;
63} 63}
64 64
diff --git a/drivers/media/dvb/frontends/at76c651.c b/drivers/media/dvb/frontends/at76c651.c
index 72a2b5455b0b..8e0f4b3a1417 100644
--- a/drivers/media/dvb/frontends/at76c651.c
+++ b/drivers/media/dvb/frontends/at76c651.c
@@ -361,9 +361,9 @@ static int at76c651_read_ucblocks(struct dvb_frontend* fe, u32* ucblocks)
361 361
362static int at76c651_get_tune_settings(struct dvb_frontend* fe, struct dvb_frontend_tune_settings *fesettings) 362static int at76c651_get_tune_settings(struct dvb_frontend* fe, struct dvb_frontend_tune_settings *fesettings)
363{ 363{
364 fesettings->min_delay_ms = 50; 364 fesettings->min_delay_ms = 50;
365 fesettings->step_size = 0; 365 fesettings->step_size = 0;
366 fesettings->max_drift = 0; 366 fesettings->max_drift = 0;
367 return 0; 367 return 0;
368} 368}
369 369
diff --git a/drivers/media/dvb/frontends/bcm3510.c b/drivers/media/dvb/frontends/bcm3510.c
index f6d4ee78bdd4..8ceb9a33c7af 100644
--- a/drivers/media/dvb/frontends/bcm3510.c
+++ b/drivers/media/dvb/frontends/bcm3510.c
@@ -69,7 +69,7 @@ MODULE_PARM_DESC(debug, "set debugging level (1=info,2=i2c (|-able)).");
69#define dbufout(b,l,m) {\ 69#define dbufout(b,l,m) {\
70 int i; \ 70 int i; \
71 for (i = 0; i < l; i++) \ 71 for (i = 0; i < l; i++) \
72 m("%02x ",b[i]); \ 72 m("%02x ",b[i]); \
73} 73}
74#define deb_info(args...) dprintk(0x01,args) 74#define deb_info(args...) dprintk(0x01,args)
75#define deb_i2c(args...) dprintk(0x02,args) 75#define deb_i2c(args...) dprintk(0x02,args)
@@ -827,7 +827,7 @@ static struct dvb_frontend_ops bcm3510_ops = {
827 .type = FE_ATSC, 827 .type = FE_ATSC,
828 .frequency_min = 54000000, 828 .frequency_min = 54000000,
829 .frequency_max = 803000000, 829 .frequency_max = 803000000,
830 /* stepsize is just a guess */ 830 /* stepsize is just a guess */
831 .frequency_stepsize = 0, 831 .frequency_stepsize = 0,
832 .caps = 832 .caps =
833 FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | 833 FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
diff --git a/drivers/media/dvb/frontends/cx22700.c b/drivers/media/dvb/frontends/cx22700.c
index 0c2ed4438618..755f774f6b7d 100644
--- a/drivers/media/dvb/frontends/cx22700.c
+++ b/drivers/media/dvb/frontends/cx22700.c
@@ -355,10 +355,10 @@ static int cx22700_get_frontend(struct dvb_frontend* fe, struct dvb_frontend_par
355 355
356static int cx22700_get_tune_settings(struct dvb_frontend* fe, struct dvb_frontend_tune_settings* fesettings) 356static int cx22700_get_tune_settings(struct dvb_frontend* fe, struct dvb_frontend_tune_settings* fesettings)
357{ 357{
358 fesettings->min_delay_ms = 150; 358 fesettings->min_delay_ms = 150;
359 fesettings->step_size = 166667; 359 fesettings->step_size = 166667;
360 fesettings->max_drift = 166667*2; 360 fesettings->max_drift = 166667*2;
361 return 0; 361 return 0;
362} 362}
363 363
364static void cx22700_release(struct dvb_frontend* fe) 364static void cx22700_release(struct dvb_frontend* fe)
@@ -407,7 +407,7 @@ static struct dvb_frontend_ops cx22700_ops = {
407 .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | 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 | 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 | 409 FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 |
410 FE_CAN_RECOVER 410 FE_CAN_RECOVER
411 }, 411 },
412 412
413 .release = cx22700_release, 413 .release = cx22700_release,
diff --git a/drivers/media/dvb/frontends/cx22702.c b/drivers/media/dvb/frontends/cx22702.c
index d9a8ede14b45..5de0e6d350b1 100644
--- a/drivers/media/dvb/frontends/cx22702.c
+++ b/drivers/media/dvb/frontends/cx22702.c
@@ -2,7 +2,7 @@
2 Conexant 22702 DVB OFDM demodulator driver 2 Conexant 22702 DVB OFDM demodulator driver
3 3
4 based on: 4 based on:
5 Alps TDMB7 DVB OFDM demodulator driver 5 Alps TDMB7 DVB OFDM demodulator driver
6 6
7 Copyright (C) 2001-2002 Convergence Integrated Media GmbH 7 Copyright (C) 2001-2002 Convergence Integrated Media GmbH
8 Holger Waechtler <holger@convergence.de> 8 Holger Waechtler <holger@convergence.de>
diff --git a/drivers/media/dvb/frontends/cx22702.h b/drivers/media/dvb/frontends/cx22702.h
index 1f250885d2ce..5633976a58f1 100644
--- a/drivers/media/dvb/frontends/cx22702.h
+++ b/drivers/media/dvb/frontends/cx22702.h
@@ -2,7 +2,7 @@
2 Conexant 22702 DVB OFDM demodulator driver 2 Conexant 22702 DVB OFDM demodulator driver
3 3
4 based on: 4 based on:
5 Alps TDMB7 DVB OFDM demodulator driver 5 Alps TDMB7 DVB OFDM demodulator driver
6 6
7 Copyright (C) 2001-2002 Convergence Integrated Media GmbH 7 Copyright (C) 2001-2002 Convergence Integrated Media GmbH
8 Holger Waechtler <holger@convergence.de> 8 Holger Waechtler <holger@convergence.de>
diff --git a/drivers/media/dvb/frontends/cx24110.c b/drivers/media/dvb/frontends/cx24110.c
index 654d7dc879d9..0c4db80ec332 100644
--- a/drivers/media/dvb/frontends/cx24110.c
+++ b/drivers/media/dvb/frontends/cx24110.c
@@ -55,81 +55,81 @@ static int debug;
55 } while (0) 55 } while (0)
56 56
57static struct {u8 reg; u8 data;} cx24110_regdata[]= 57static struct {u8 reg; u8 data;} cx24110_regdata[]=
58 /* Comments beginning with @ denote this value should 58 /* Comments beginning with @ denote this value should
59 be the default */ 59 be the default */
60 {{0x09,0x01}, /* SoftResetAll */ 60 {{0x09,0x01}, /* SoftResetAll */
61 {0x09,0x00}, /* release reset */ 61 {0x09,0x00}, /* release reset */
62 {0x01,0xe8}, /* MSB of code rate 27.5MS/s */ 62 {0x01,0xe8}, /* MSB of code rate 27.5MS/s */
63 {0x02,0x17}, /* middle byte " */ 63 {0x02,0x17}, /* middle byte " */
64 {0x03,0x29}, /* LSB " */ 64 {0x03,0x29}, /* LSB " */
65 {0x05,0x03}, /* @ DVB mode, standard code rate 3/4 */ 65 {0x05,0x03}, /* @ DVB mode, standard code rate 3/4 */
66 {0x06,0xa5}, /* @ PLL 60MHz */ 66 {0x06,0xa5}, /* @ PLL 60MHz */
67 {0x07,0x01}, /* @ Fclk, i.e. sampling clock, 60MHz */ 67 {0x07,0x01}, /* @ Fclk, i.e. sampling clock, 60MHz */
68 {0x0a,0x00}, /* @ partial chip disables, do not set */ 68 {0x0a,0x00}, /* @ partial chip disables, do not set */
69 {0x0b,0x01}, /* set output clock in gapped mode, start signal low 69 {0x0b,0x01}, /* set output clock in gapped mode, start signal low
70 active for first byte */ 70 active for first byte */
71 {0x0c,0x11}, /* no parity bytes, large hold time, serial data out */ 71 {0x0c,0x11}, /* no parity bytes, large hold time, serial data out */
72 {0x0d,0x6f}, /* @ RS Sync/Unsync thresholds */ 72 {0x0d,0x6f}, /* @ RS Sync/Unsync thresholds */
73 {0x10,0x40}, /* chip doc is misleading here: write bit 6 as 1 73 {0x10,0x40}, /* chip doc is misleading here: write bit 6 as 1
74 to avoid starting the BER counter. Reset the 74 to avoid starting the BER counter. Reset the
75 CRC test bit. Finite counting selected */ 75 CRC test bit. Finite counting selected */
76 {0x15,0xff}, /* @ size of the limited time window for RS BER 76 {0x15,0xff}, /* @ size of the limited time window for RS BER
77 estimation. It is <value>*256 RS blocks, this 77 estimation. It is <value>*256 RS blocks, this
78 gives approx. 2.6 sec at 27.5MS/s, rate 3/4 */ 78 gives approx. 2.6 sec at 27.5MS/s, rate 3/4 */
79 {0x16,0x00}, /* @ enable all RS output ports */ 79 {0x16,0x00}, /* @ enable all RS output ports */
80 {0x17,0x04}, /* @ time window allowed for the RS to sync */ 80 {0x17,0x04}, /* @ time window allowed for the RS to sync */
81 {0x18,0xae}, /* @ allow all standard DVB code rates to be scanned 81 {0x18,0xae}, /* @ allow all standard DVB code rates to be scanned
82 for automatically */ 82 for automatically */
83 /* leave the current code rate and normalization 83 /* leave the current code rate and normalization
84 registers as they are after reset... */ 84 registers as they are after reset... */
85 {0x21,0x10}, /* @ during AutoAcq, search each viterbi setting 85 {0x21,0x10}, /* @ during AutoAcq, search each viterbi setting
86 only once */ 86 only once */
87 {0x23,0x18}, /* @ size of the limited time window for Viterbi BER 87 {0x23,0x18}, /* @ size of the limited time window for Viterbi BER
88 estimation. It is <value>*65536 channel bits, i.e. 88 estimation. It is <value>*65536 channel bits, i.e.
89 approx. 38ms at 27.5MS/s, rate 3/4 */ 89 approx. 38ms at 27.5MS/s, rate 3/4 */
90 {0x24,0x24}, /* do not trigger Viterbi CRC test. Finite count window */ 90 {0x24,0x24}, /* do not trigger Viterbi CRC test. Finite count window */
91 /* leave front-end AGC parameters at default values */ 91 /* leave front-end AGC parameters at default values */
92 /* leave decimation AGC parameters at default values */ 92 /* leave decimation AGC parameters at default values */
93 {0x35,0x40}, /* disable all interrupts. They are not connected anyway */ 93 {0x35,0x40}, /* disable all interrupts. They are not connected anyway */
94 {0x36,0xff}, /* clear all interrupt pending flags */ 94 {0x36,0xff}, /* clear all interrupt pending flags */
95 {0x37,0x00}, /* @ fully enable AutoAcqq state machine */ 95 {0x37,0x00}, /* @ fully enable AutoAcqq state machine */
96 {0x38,0x07}, /* @ enable fade recovery, but not autostart AutoAcq */ 96 {0x38,0x07}, /* @ enable fade recovery, but not autostart AutoAcq */
97 /* leave the equalizer parameters on their default values */ 97 /* leave the equalizer parameters on their default values */
98 /* leave the final AGC parameters on their default values */ 98 /* leave the final AGC parameters on their default values */
99 {0x41,0x00}, /* @ MSB of front-end derotator frequency */ 99 {0x41,0x00}, /* @ MSB of front-end derotator frequency */
100 {0x42,0x00}, /* @ middle bytes " */ 100 {0x42,0x00}, /* @ middle bytes " */
101 {0x43,0x00}, /* @ LSB " */ 101 {0x43,0x00}, /* @ LSB " */
102 /* leave the carrier tracking loop parameters on default */ 102 /* leave the carrier tracking loop parameters on default */
103 /* leave the bit timing loop parameters at gefault */ 103 /* leave the bit timing loop parameters at gefault */
104 {0x56,0x4d}, /* set the filtune voltage to 2.7V, as recommended by */ 104 {0x56,0x4d}, /* set the filtune voltage to 2.7V, as recommended by */
105 /* the cx24108 data sheet for symbol rates above 15MS/s */ 105 /* the cx24108 data sheet for symbol rates above 15MS/s */
106 {0x57,0x00}, /* @ Filter sigma delta enabled, positive */ 106 {0x57,0x00}, /* @ Filter sigma delta enabled, positive */
107 {0x61,0x95}, /* GPIO pins 1-4 have special function */ 107 {0x61,0x95}, /* GPIO pins 1-4 have special function */
108 {0x62,0x05}, /* GPIO pin 5 has special function, pin 6 is GPIO */ 108 {0x62,0x05}, /* GPIO pin 5 has special function, pin 6 is GPIO */
109 {0x63,0x00}, /* All GPIO pins use CMOS output characteristics */ 109 {0x63,0x00}, /* All GPIO pins use CMOS output characteristics */
110 {0x64,0x20}, /* GPIO 6 is input, all others are outputs */ 110 {0x64,0x20}, /* GPIO 6 is input, all others are outputs */
111 {0x6d,0x30}, /* tuner auto mode clock freq 62kHz */ 111 {0x6d,0x30}, /* tuner auto mode clock freq 62kHz */
112 {0x70,0x15}, /* use auto mode, tuner word is 21 bits long */ 112 {0x70,0x15}, /* use auto mode, tuner word is 21 bits long */
113 {0x73,0x00}, /* @ disable several demod bypasses */ 113 {0x73,0x00}, /* @ disable several demod bypasses */
114 {0x74,0x00}, /* @ " */ 114 {0x74,0x00}, /* @ " */
115 {0x75,0x00} /* @ " */ 115 {0x75,0x00} /* @ " */
116 /* the remaining registers are for SEC */ 116 /* the remaining registers are for SEC */
117 }; 117 };
118 118
119 119
120static int cx24110_writereg (struct cx24110_state* state, int reg, int data) 120static int cx24110_writereg (struct cx24110_state* state, int reg, int data)
121{ 121{
122 u8 buf [] = { reg, data }; 122 u8 buf [] = { reg, data };
123 struct i2c_msg msg = { .addr = state->config->demod_address, .flags = 0, .buf = buf, .len = 2 }; 123 struct i2c_msg msg = { .addr = state->config->demod_address, .flags = 0, .buf = buf, .len = 2 };
124 int err; 124 int err;
125 125
126 if ((err = i2c_transfer(state->i2c, &msg, 1)) != 1) { 126 if ((err = i2c_transfer(state->i2c, &msg, 1)) != 1) {
127 dprintk ("%s: writereg error (err == %i, reg == 0x%02x," 127 dprintk ("%s: writereg error (err == %i, reg == 0x%02x,"
128 " data == 0x%02x)\n", __FUNCTION__, err, reg, data); 128 " data == 0x%02x)\n", __FUNCTION__, err, reg, data);
129 return -EREMOTEIO; 129 return -EREMOTEIO;
130 } 130 }
131 131
132 return 0; 132 return 0;
133} 133}
134 134
135static int cx24110_readreg (struct cx24110_state* state, u8 reg) 135static int cx24110_readreg (struct cx24110_state* state, u8 reg)
@@ -153,27 +153,27 @@ static int cx24110_set_inversion (struct cx24110_state* state, fe_spectral_inver
153 153
154 switch (inversion) { 154 switch (inversion) {
155 case INVERSION_OFF: 155 case INVERSION_OFF:
156 cx24110_writereg(state,0x37,cx24110_readreg(state,0x37)|0x1); 156 cx24110_writereg(state,0x37,cx24110_readreg(state,0x37)|0x1);
157 /* AcqSpectrInvDis on. No idea why someone should want this */ 157 /* AcqSpectrInvDis on. No idea why someone should want this */
158 cx24110_writereg(state,0x5,cx24110_readreg(state,0x5)&0xf7); 158 cx24110_writereg(state,0x5,cx24110_readreg(state,0x5)&0xf7);
159 /* Initial value 0 at start of acq */ 159 /* Initial value 0 at start of acq */
160 cx24110_writereg(state,0x22,cx24110_readreg(state,0x22)&0xef); 160 cx24110_writereg(state,0x22,cx24110_readreg(state,0x22)&0xef);
161 /* current value 0 */ 161 /* current value 0 */
162 /* The cx24110 manual tells us this reg is read-only. 162 /* The cx24110 manual tells us this reg is read-only.
163 But what the heck... set it ayways */ 163 But what the heck... set it ayways */
164 break; 164 break;
165 case INVERSION_ON: 165 case INVERSION_ON:
166 cx24110_writereg(state,0x37,cx24110_readreg(state,0x37)|0x1); 166 cx24110_writereg(state,0x37,cx24110_readreg(state,0x37)|0x1);
167 /* AcqSpectrInvDis on. No idea why someone should want this */ 167 /* AcqSpectrInvDis on. No idea why someone should want this */
168 cx24110_writereg(state,0x5,cx24110_readreg(state,0x5)|0x08); 168 cx24110_writereg(state,0x5,cx24110_readreg(state,0x5)|0x08);
169 /* Initial value 1 at start of acq */ 169 /* Initial value 1 at start of acq */
170 cx24110_writereg(state,0x22,cx24110_readreg(state,0x22)|0x10); 170 cx24110_writereg(state,0x22,cx24110_readreg(state,0x22)|0x10);
171 /* current value 1 */ 171 /* current value 1 */
172 break; 172 break;
173 case INVERSION_AUTO: 173 case INVERSION_AUTO:
174 cx24110_writereg(state,0x37,cx24110_readreg(state,0x37)&0xfe); 174 cx24110_writereg(state,0x37,cx24110_readreg(state,0x37)&0xfe);
175 /* AcqSpectrInvDis off. Leave initial & current states as is */ 175 /* AcqSpectrInvDis off. Leave initial & current states as is */
176 break; 176 break;
177 default: 177 default:
178 return -EINVAL; 178 return -EINVAL;
179 } 179 }
@@ -185,18 +185,18 @@ static int cx24110_set_fec (struct cx24110_state* state, fe_code_rate_t fec)
185{ 185{
186/* fixme (low): error handling */ 186/* fixme (low): error handling */
187 187
188 static const int rate[]={-1,1,2,3,5,7,-1}; 188 static const int rate[]={-1,1,2,3,5,7,-1};
189 static const int g1[]={-1,0x01,0x02,0x05,0x15,0x45,-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}; 190 static const int g2[]={-1,0x01,0x03,0x06,0x1a,0x7a,-1};
191 191
192 /* Well, the AutoAcq engine of the cx24106 and 24110 automatically 192 /* Well, the AutoAcq engine of the cx24106 and 24110 automatically
193 searches all enabled viterbi rates, and can handle non-standard 193 searches all enabled viterbi rates, and can handle non-standard
194 rates as well. */ 194 rates as well. */
195 195
196 if (fec>FEC_AUTO) 196 if (fec>FEC_AUTO)
197 fec=FEC_AUTO; 197 fec=FEC_AUTO;
198 198
199 if (fec==FEC_AUTO) { /* (re-)establish AutoAcq behaviour */ 199 if (fec==FEC_AUTO) { /* (re-)establish AutoAcq behaviour */
200 cx24110_writereg(state,0x37,cx24110_readreg(state,0x37)&0xdf); 200 cx24110_writereg(state,0x37,cx24110_readreg(state,0x37)&0xdf);
201 /* clear AcqVitDis bit */ 201 /* clear AcqVitDis bit */
202 cx24110_writereg(state,0x18,0xae); 202 cx24110_writereg(state,0x18,0xae);
@@ -208,7 +208,7 @@ static int cx24110_set_fec (struct cx24110_state* state, fe_code_rate_t fec)
208 cx24110_writereg(state,0x1a,0x05); cx24110_writereg(state,0x1b,0x06); 208 cx24110_writereg(state,0x1a,0x05); cx24110_writereg(state,0x1b,0x06);
209 /* set the puncture registers for code rate 3/4 */ 209 /* set the puncture registers for code rate 3/4 */
210 return 0; 210 return 0;
211 } else { 211 } else {
212 cx24110_writereg(state,0x37,cx24110_readreg(state,0x37)|0x20); 212 cx24110_writereg(state,0x37,cx24110_readreg(state,0x37)|0x20);
213 /* set AcqVitDis bit */ 213 /* set AcqVitDis bit */
214 if(rate[fec]>0) { 214 if(rate[fec]>0) {
@@ -219,10 +219,10 @@ static int cx24110_set_fec (struct cx24110_state* state, fe_code_rate_t fec)
219 cx24110_writereg(state,0x1a,g1[fec]); 219 cx24110_writereg(state,0x1a,g1[fec]);
220 cx24110_writereg(state,0x1b,g2[fec]); 220 cx24110_writereg(state,0x1b,g2[fec]);
221 /* not sure if this is the right way: I always used AutoAcq mode */ 221 /* not sure if this is the right way: I always used AutoAcq mode */
222 } else 222 } else
223 return -EOPNOTSUPP; 223 return -EOPNOTSUPP;
224/* fixme (low): which is the correct return code? */ 224/* fixme (low): which is the correct return code? */
225 }; 225 };
226 return 0; 226 return 0;
227} 227}
228 228
@@ -245,72 +245,72 @@ static fe_code_rate_t cx24110_get_fec (struct cx24110_state* state)
245static int cx24110_set_symbolrate (struct cx24110_state* state, u32 srate) 245static int cx24110_set_symbolrate (struct cx24110_state* state, u32 srate)
246{ 246{
247/* fixme (low): add error handling */ 247/* fixme (low): add error handling */
248 u32 ratio; 248 u32 ratio;
249 u32 tmp, fclk, BDRI; 249 u32 tmp, fclk, BDRI;
250 250
251 static const u32 bands[]={5000000UL,15000000UL,90999000UL/2}; 251 static const u32 bands[]={5000000UL,15000000UL,90999000UL/2};
252 int i; 252 int i;
253 253
254dprintk("cx24110 debug: entering %s(%d)\n",__FUNCTION__,srate); 254dprintk("cx24110 debug: entering %s(%d)\n",__FUNCTION__,srate);
255 if (srate>90999000UL/2) 255 if (srate>90999000UL/2)
256 srate=90999000UL/2; 256 srate=90999000UL/2;
257 if (srate<500000) 257 if (srate<500000)
258 srate=500000; 258 srate=500000;
259 259
260 for(i=0;(i<sizeof(bands)/sizeof(bands[0]))&&(srate>bands[i]);i++) 260 for(i=0;(i<sizeof(bands)/sizeof(bands[0]))&&(srate>bands[i]);i++)
261 ; 261 ;
262 /* first, check which sample rate is appropriate: 45, 60 80 or 90 MHz, 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, 263 and set the PLL accordingly (R07[1:0] Fclk, R06[7:4] PLLmult,
264 R06[3:0] PLLphaseDetGain */ 264 R06[3:0] PLLphaseDetGain */
265 tmp=cx24110_readreg(state,0x07)&0xfc; 265 tmp=cx24110_readreg(state,0x07)&0xfc;
266 if(srate<90999000UL/4) { /* sample rate 45MHz*/ 266 if(srate<90999000UL/4) { /* sample rate 45MHz*/
267 cx24110_writereg(state,0x07,tmp); 267 cx24110_writereg(state,0x07,tmp);
268 cx24110_writereg(state,0x06,0x78); 268 cx24110_writereg(state,0x06,0x78);
269 fclk=90999000UL/2; 269 fclk=90999000UL/2;
270 } else if(srate<60666000UL/2) { /* sample rate 60MHz */ 270 } else if(srate<60666000UL/2) { /* sample rate 60MHz */
271 cx24110_writereg(state,0x07,tmp|0x1); 271 cx24110_writereg(state,0x07,tmp|0x1);
272 cx24110_writereg(state,0x06,0xa5); 272 cx24110_writereg(state,0x06,0xa5);
273 fclk=60666000UL; 273 fclk=60666000UL;
274 } else if(srate<80888000UL/2) { /* sample rate 80MHz */ 274 } else if(srate<80888000UL/2) { /* sample rate 80MHz */
275 cx24110_writereg(state,0x07,tmp|0x2); 275 cx24110_writereg(state,0x07,tmp|0x2);
276 cx24110_writereg(state,0x06,0x87); 276 cx24110_writereg(state,0x06,0x87);
277 fclk=80888000UL; 277 fclk=80888000UL;
278 } else { /* sample rate 90MHz */ 278 } else { /* sample rate 90MHz */
279 cx24110_writereg(state,0x07,tmp|0x3); 279 cx24110_writereg(state,0x07,tmp|0x3);
280 cx24110_writereg(state,0x06,0x78); 280 cx24110_writereg(state,0x06,0x78);
281 fclk=90999000UL; 281 fclk=90999000UL;
282 }; 282 };
283 dprintk("cx24110 debug: fclk %d Hz\n",fclk); 283 dprintk("cx24110 debug: fclk %d Hz\n",fclk);
284 /* we need to divide two integers with approx. 27 bits in 32 bit 284 /* we need to divide two integers with approx. 27 bits in 32 bit
285 arithmetic giving a 25 bit result */ 285 arithmetic giving a 25 bit result */
286 /* the maximum dividend is 90999000/2, 0x02b6446c, this number is 286 /* the maximum dividend is 90999000/2, 0x02b6446c, this number is
287 also the most complex divisor. Hence, the dividend has, 287 also the most complex divisor. Hence, the dividend has,
288 assuming 32bit unsigned arithmetic, 6 clear bits on top, the 288 assuming 32bit unsigned arithmetic, 6 clear bits on top, the
289 divisor 2 unused bits at the bottom. Also, the quotient is 289 divisor 2 unused bits at the bottom. Also, the quotient is
290 always less than 1/2. Borrowed from VES1893.c, of course */ 290 always less than 1/2. Borrowed from VES1893.c, of course */
291 291
292 tmp=srate<<6; 292 tmp=srate<<6;
293 BDRI=fclk>>2; 293 BDRI=fclk>>2;
294 ratio=(tmp/BDRI); 294 ratio=(tmp/BDRI);
295 295
296 tmp=(tmp%BDRI)<<8; 296 tmp=(tmp%BDRI)<<8;
297 ratio=(ratio<<8)+(tmp/BDRI); 297 ratio=(ratio<<8)+(tmp/BDRI);
298 298
299 tmp=(tmp%BDRI)<<8; 299 tmp=(tmp%BDRI)<<8;
300 ratio=(ratio<<8)+(tmp/BDRI); 300 ratio=(ratio<<8)+(tmp/BDRI);
301 301
302 tmp=(tmp%BDRI)<<1; 302 tmp=(tmp%BDRI)<<1;
303 ratio=(ratio<<1)+(tmp/BDRI); 303 ratio=(ratio<<1)+(tmp/BDRI);
304 304
305 dprintk("srate= %d (range %d, up to %d)\n", srate,i,bands[i]); 305 dprintk("srate= %d (range %d, up to %d)\n", srate,i,bands[i]);
306 dprintk("fclk = %d\n", fclk); 306 dprintk("fclk = %d\n", fclk);
307 dprintk("ratio= %08x\n", ratio); 307 dprintk("ratio= %08x\n", ratio);
308 308
309 cx24110_writereg(state, 0x1, (ratio>>16)&0xff); 309 cx24110_writereg(state, 0x1, (ratio>>16)&0xff);
310 cx24110_writereg(state, 0x2, (ratio>>8)&0xff); 310 cx24110_writereg(state, 0x2, (ratio>>8)&0xff);
311 cx24110_writereg(state, 0x3, (ratio)&0xff); 311 cx24110_writereg(state, 0x3, (ratio)&0xff);
312 312
313 return 0; 313 return 0;
314 314
315} 315}
316 316
@@ -324,48 +324,48 @@ int cx24110_pll_write (struct dvb_frontend* fe, u32 data)
324 324
325 dprintk("cx24110 debug: cx24108_write(%8.8x)\n",data); 325 dprintk("cx24110 debug: cx24108_write(%8.8x)\n",data);
326 326
327 cx24110_writereg(state,0x6d,0x30); /* auto mode at 62kHz */ 327 cx24110_writereg(state,0x6d,0x30); /* auto mode at 62kHz */
328 cx24110_writereg(state,0x70,0x15); /* auto mode 21 bits */ 328 cx24110_writereg(state,0x70,0x15); /* auto mode 21 bits */
329 329
330 /* if the auto tuner writer is still busy, clear it out */ 330 /* if the auto tuner writer is still busy, clear it out */
331 while (cx24110_readreg(state,0x6d)&0x80) 331 while (cx24110_readreg(state,0x6d)&0x80)
332 cx24110_writereg(state,0x72,0); 332 cx24110_writereg(state,0x72,0);
333 333
334 /* write the topmost 8 bits */ 334 /* write the topmost 8 bits */
335 cx24110_writereg(state,0x72,(data>>24)&0xff); 335 cx24110_writereg(state,0x72,(data>>24)&0xff);
336 336
337 /* wait for the send to be completed */ 337 /* wait for the send to be completed */
338 while ((cx24110_readreg(state,0x6d)&0xc0)==0x80) 338 while ((cx24110_readreg(state,0x6d)&0xc0)==0x80)
339 ; 339 ;
340 340
341 /* send another 8 bytes */ 341 /* send another 8 bytes */
342 cx24110_writereg(state,0x72,(data>>16)&0xff); 342 cx24110_writereg(state,0x72,(data>>16)&0xff);
343 while ((cx24110_readreg(state,0x6d)&0xc0)==0x80) 343 while ((cx24110_readreg(state,0x6d)&0xc0)==0x80)
344 ; 344 ;
345 345
346 /* and the topmost 5 bits of this byte */ 346 /* and the topmost 5 bits of this byte */
347 cx24110_writereg(state,0x72,(data>>8)&0xff); 347 cx24110_writereg(state,0x72,(data>>8)&0xff);
348 while ((cx24110_readreg(state,0x6d)&0xc0)==0x80) 348 while ((cx24110_readreg(state,0x6d)&0xc0)==0x80)
349 ; 349 ;
350 350
351 /* now strobe the enable line once */ 351 /* now strobe the enable line once */
352 cx24110_writereg(state,0x6d,0x32); 352 cx24110_writereg(state,0x6d,0x32);
353 cx24110_writereg(state,0x6d,0x30); 353 cx24110_writereg(state,0x6d,0x30);
354 354
355 return 0; 355 return 0;
356} 356}
357 357
358static int cx24110_initfe(struct dvb_frontend* fe) 358static int cx24110_initfe(struct dvb_frontend* fe)
359{ 359{
360 struct cx24110_state *state = fe->demodulator_priv; 360 struct cx24110_state *state = fe->demodulator_priv;
361/* fixme (low): error handling */ 361/* fixme (low): error handling */
362 int i; 362 int i;
363 363
364 dprintk("%s: init chip\n", __FUNCTION__); 364 dprintk("%s: init chip\n", __FUNCTION__);
365 365
366 for(i=0;i<sizeof(cx24110_regdata)/sizeof(cx24110_regdata[0]);i++) { 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); 367 cx24110_writereg(state, cx24110_regdata[i].reg, cx24110_regdata[i].data);
368 }; 368 };
369 369
370 if (state->config->pll_init) state->config->pll_init(fe); 370 if (state->config->pll_init) state->config->pll_init(fe);
371 371
diff --git a/drivers/media/dvb/frontends/l64781.c b/drivers/media/dvb/frontends/l64781.c
index 19b4bf7c21a7..1c7c91224472 100644
--- a/drivers/media/dvb/frontends/l64781.c
+++ b/drivers/media/dvb/frontends/l64781.c
@@ -2,7 +2,7 @@
2 driver for LSI L64781 COFDM demodulator 2 driver for LSI L64781 COFDM demodulator
3 3
4 Copyright (C) 2001 Holger Waechtler for Convergence Integrated Media GmbH 4 Copyright (C) 2001 Holger Waechtler for Convergence Integrated Media GmbH
5 Marko Kohtala <marko.kohtala@luukku.com> 5 Marko Kohtala <marko.kohtala@luukku.com>
6 6
7 This program is free software; you can redistribute it and/or modify 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 8 it under the terms of the GNU General Public License as published by
@@ -433,7 +433,7 @@ static int l64781_init(struct dvb_frontend* fe)
433{ 433{
434 struct l64781_state* state = fe->demodulator_priv; 434 struct l64781_state* state = fe->demodulator_priv;
435 435
436 reset_and_configure (state); 436 reset_and_configure (state);
437 437
438 /* Power up */ 438 /* Power up */
439 l64781_writereg (state, 0x3e, 0xa5); 439 l64781_writereg (state, 0x3e, 0xa5);
@@ -456,9 +456,9 @@ static int l64781_init(struct dvb_frontend* fe)
456 l64781_writereg (state, 0x0d, 0x8c); 456 l64781_writereg (state, 0x0d, 0x8c);
457 457
458 /* With ppm=8000, it seems the DTR_SENSITIVITY will result in 458 /* With ppm=8000, it seems the DTR_SENSITIVITY will result in
459 value of 2 with all possible bandwidths and guard 459 value of 2 with all possible bandwidths and guard
460 intervals, which is the initial value anyway. */ 460 intervals, which is the initial value anyway. */
461 /*l64781_writereg (state, 0x19, 0x92);*/ 461 /*l64781_writereg (state, 0x19, 0x92);*/
462 462
463 /* Everything is two's complement, soft bit and CSI_OUT too */ 463 /* Everything is two's complement, soft bit and CSI_OUT too */
464 l64781_writereg (state, 0x1e, 0x09); 464 l64781_writereg (state, 0x1e, 0x09);
@@ -477,10 +477,10 @@ static int l64781_init(struct dvb_frontend* fe)
477static int l64781_get_tune_settings(struct dvb_frontend* fe, 477static int l64781_get_tune_settings(struct dvb_frontend* fe,
478 struct dvb_frontend_tune_settings* fesettings) 478 struct dvb_frontend_tune_settings* fesettings)
479{ 479{
480 fesettings->min_delay_ms = 4000; 480 fesettings->min_delay_ms = 4000;
481 fesettings->step_size = 0; 481 fesettings->step_size = 0;
482 fesettings->max_drift = 0; 482 fesettings->max_drift = 0;
483 return 0; 483 return 0;
484} 484}
485 485
486static void l64781_release(struct dvb_frontend* fe) 486static void l64781_release(struct dvb_frontend* fe)
@@ -522,7 +522,7 @@ struct dvb_frontend* l64781_attach(const struct l64781_config* config,
522 522
523 /* The chip always responds to reads */ 523 /* The chip always responds to reads */
524 if (i2c_transfer(state->i2c, msg, 2) != 2) { 524 if (i2c_transfer(state->i2c, msg, 2) != 2) {
525 dprintk("No response to read on I2C bus\n"); 525 dprintk("No response to read on I2C bus\n");
526 goto error; 526 goto error;
527 } 527 }
528 528
@@ -531,7 +531,7 @@ struct dvb_frontend* l64781_attach(const struct l64781_config* config,
531 531
532 /* Reading the POWER_DOWN register always returns 0 */ 532 /* Reading the POWER_DOWN register always returns 0 */
533 if (reg0x3e != 0) { 533 if (reg0x3e != 0) {
534 dprintk("Device doesn't look like L64781\n"); 534 dprintk("Device doesn't look like L64781\n");
535 goto error; 535 goto error;
536 } 536 }
537 537
@@ -540,7 +540,7 @@ struct dvb_frontend* l64781_attach(const struct l64781_config* config,
540 540
541 /* Responds to all reads with 0 */ 541 /* Responds to all reads with 0 */
542 if (l64781_readreg(state, 0x1a) != 0) { 542 if (l64781_readreg(state, 0x1a) != 0) {
543 dprintk("Read 1 returned unexpcted value\n"); 543 dprintk("Read 1 returned unexpcted value\n");
544 goto error; 544 goto error;
545 } 545 }
546 546
@@ -549,7 +549,7 @@ struct dvb_frontend* l64781_attach(const struct l64781_config* config,
549 549
550 /* Responds with register default value */ 550 /* Responds with register default value */
551 if (l64781_readreg(state, 0x1a) != 0xa1) { 551 if (l64781_readreg(state, 0x1a) != 0xa1) {
552 dprintk("Read 2 returned unexpcted value\n"); 552 dprintk("Read 2 returned unexpcted value\n");
553 goto error; 553 goto error;
554 } 554 }
555 555
diff --git a/drivers/media/dvb/frontends/l64781.h b/drivers/media/dvb/frontends/l64781.h
index 7e30fb0fdfa7..947f65f87465 100644
--- a/drivers/media/dvb/frontends/l64781.h
+++ b/drivers/media/dvb/frontends/l64781.h
@@ -2,7 +2,7 @@
2 driver for LSI L64781 COFDM demodulator 2 driver for LSI L64781 COFDM demodulator
3 3
4 Copyright (C) 2001 Holger Waechtler for Convergence Integrated Media GmbH 4 Copyright (C) 2001 Holger Waechtler for Convergence Integrated Media GmbH
5 Marko Kohtala <marko.kohtala@luukku.com> 5 Marko Kohtala <marko.kohtala@luukku.com>
6 6
7 This program is free software; you can redistribute it and/or modify 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 8 it under the terms of the GNU General Public License as published by
diff --git a/drivers/media/dvb/frontends/lgdt330x.c b/drivers/media/dvb/frontends/lgdt330x.c
index 6a33f5a19a8d..cb5301865d07 100644
--- a/drivers/media/dvb/frontends/lgdt330x.c
+++ b/drivers/media/dvb/frontends/lgdt330x.c
@@ -301,10 +301,10 @@ static int lgdt330x_set_parameters(struct dvb_frontend* fe,
301 static u8 lgdt3303_8vsb_44_data[] = { 301 static u8 lgdt3303_8vsb_44_data[] = {
302 0x04, 0x00, 302 0x04, 0x00,
303 0x0d, 0x40, 303 0x0d, 0x40,
304 0x0e, 0x87, 304 0x0e, 0x87,
305 0x0f, 0x8e, 305 0x0f, 0x8e,
306 0x10, 0x01, 306 0x10, 0x01,
307 0x47, 0x8b }; 307 0x47, 0x8b };
308 308
309 /* 309 /*
310 * Array of byte pairs <address, value> 310 * Array of byte pairs <address, value>
diff --git a/drivers/media/dvb/frontends/mt312.c b/drivers/media/dvb/frontends/mt312.c
index 9c67f406d581..8d672283c93d 100644
--- a/drivers/media/dvb/frontends/mt312.c
+++ b/drivers/media/dvb/frontends/mt312.c
@@ -554,7 +554,7 @@ static int mt312_set_frontend(struct dvb_frontend* fe,
554 if ((ret = mt312_write(state, SYM_RATE_H, buf, sizeof(buf))) < 0) 554 if ((ret = mt312_write(state, SYM_RATE_H, buf, sizeof(buf))) < 0)
555 return ret; 555 return ret;
556 556
557 mt312_reset(state, 0); 557 mt312_reset(state, 0);
558 558
559 return 0; 559 return 0;
560} 560}
@@ -695,7 +695,7 @@ static struct dvb_frontend_ops vp310_mt312_ops = {
695 FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | 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 | 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 | 697 FE_CAN_FEC_AUTO | FE_CAN_QPSK | FE_CAN_MUTE_TS |
698 FE_CAN_RECOVER 698 FE_CAN_RECOVER
699 }, 699 },
700 700
701 .release = mt312_release, 701 .release = mt312_release,
diff --git a/drivers/media/dvb/frontends/nxt2002.c b/drivers/media/dvb/frontends/nxt2002.c
index 30786b1911bd..52c416043a62 100644
--- a/drivers/media/dvb/frontends/nxt2002.c
+++ b/drivers/media/dvb/frontends/nxt2002.c
@@ -527,7 +527,7 @@ static int nxt2002_read_snr(struct dvb_frontend* fe, u16* snr)
527 else 527 else
528 snrdb = 1000*0 + ( 1000*(12-0) * ( temp2 - 0 ) / ( 0x7C00 - 0 ) ); 528 snrdb = 1000*0 + ( 1000*(12-0) * ( temp2 - 0 ) / ( 0x7C00 - 0 ) );
529 529
530 /* the value reported back from the frontend will be FFFF=32db 0000=0db */ 530 /* the value reported back from the frontend will be FFFF=32db 0000=0db */
531 531
532 *snr = snrdb * (0xFFFF/32000); 532 *snr = snrdb * (0xFFFF/32000);
533 533
@@ -646,7 +646,7 @@ struct dvb_frontend* nxt2002_attach(const struct nxt2002_config* config,
646 memcpy(&state->ops, &nxt2002_ops, sizeof(struct dvb_frontend_ops)); 646 memcpy(&state->ops, &nxt2002_ops, sizeof(struct dvb_frontend_ops));
647 state->initialised = 0; 647 state->initialised = 0;
648 648
649 /* Check the first 5 registers to ensure this a revision we can handle */ 649 /* Check the first 5 registers to ensure this a revision we can handle */
650 650
651 i2c_readbytes(state, 0x00, buf, 5); 651 i2c_readbytes(state, 0x00, buf, 5);
652 if (buf[0] != 0x04) goto error; /* device id */ 652 if (buf[0] != 0x04) goto error; /* device id */
@@ -672,7 +672,7 @@ static struct dvb_frontend_ops nxt2002_ops = {
672 .type = FE_ATSC, 672 .type = FE_ATSC,
673 .frequency_min = 54000000, 673 .frequency_min = 54000000,
674 .frequency_max = 860000000, 674 .frequency_max = 860000000,
675 /* stepsize is just a guess */ 675 /* stepsize is just a guess */
676 .frequency_stepsize = 166666, 676 .frequency_stepsize = 166666,
677 .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | 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 | 678 FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
diff --git a/drivers/media/dvb/frontends/nxt200x.c b/drivers/media/dvb/frontends/nxt200x.c
index 84b62881cea7..aeafef46e3eb 100644
--- a/drivers/media/dvb/frontends/nxt200x.c
+++ b/drivers/media/dvb/frontends/nxt200x.c
@@ -339,7 +339,7 @@ static int nxt200x_writetuner (struct nxt200x_state* state, u8* data)
339 switch (state->demod_chip) { 339 switch (state->demod_chip) {
340 case NXT2004: 340 case NXT2004:
341 if (i2c_writebytes(state, state->config->pll_address, data, 4)) 341 if (i2c_writebytes(state, state->config->pll_address, data, 4))
342 printk(KERN_WARNING "nxt200x: error writing to tuner\n"); 342 printk(KERN_WARNING "nxt200x: error writing to tuner\n");
343 /* wait until we have a lock */ 343 /* wait until we have a lock */
344 while (count < 20) { 344 while (count < 20) {
345 i2c_readbytes(state, state->config->pll_address, &buf, 1); 345 i2c_readbytes(state, state->config->pll_address, &buf, 1);
@@ -497,7 +497,7 @@ static int nxt2004_load_firmware (struct dvb_frontend* fe, const struct firmware
497 497
498 /* calculate firmware CRC */ 498 /* calculate firmware CRC */
499 for (position = 0; position < fw->size; position++) { 499 for (position = 0; position < fw->size; position++) {
500 crc = nxt200x_crc(crc, fw->data[position]); 500 crc = nxt200x_crc(crc, fw->data[position]);
501 } 501 }
502 502
503 buf[0] = rambase >> 8; 503 buf[0] = rambase >> 8;
diff --git a/drivers/media/dvb/frontends/nxt6000.c b/drivers/media/dvb/frontends/nxt6000.c
index 88a57b791112..a458a3bfff70 100644
--- a/drivers/media/dvb/frontends/nxt6000.c
+++ b/drivers/media/dvb/frontends/nxt6000.c
@@ -574,11 +574,11 @@ static struct dvb_frontend_ops nxt6000_ops = {
574 .symbol_rate_max = 9360000, /* FIXME */ 574 .symbol_rate_max = 9360000, /* FIXME */
575 .symbol_rate_tolerance = 4000, 575 .symbol_rate_tolerance = 4000,
576 .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | 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 | 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 | 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 | 579 FE_CAN_QAM_16 | FE_CAN_QAM_64 | FE_CAN_QAM_AUTO |
580 FE_CAN_TRANSMISSION_MODE_AUTO | FE_CAN_GUARD_INTERVAL_AUTO | 580 FE_CAN_TRANSMISSION_MODE_AUTO | FE_CAN_GUARD_INTERVAL_AUTO |
581 FE_CAN_HIERARCHY_AUTO, 581 FE_CAN_HIERARCHY_AUTO,
582 }, 582 },
583 583
584 .release = nxt6000_release, 584 .release = nxt6000_release,
diff --git a/drivers/media/dvb/frontends/or51132.c b/drivers/media/dvb/frontends/or51132.c
index 78bded861d02..80e0f28127b7 100644
--- a/drivers/media/dvb/frontends/or51132.c
+++ b/drivers/media/dvb/frontends/or51132.c
@@ -503,7 +503,7 @@ static int or51132_read_signal_strength(struct dvb_frontend* fe, u16* strength)
503 rcvr_stat = rec_buf[1]; 503 rcvr_stat = rec_buf[1];
504 usK = (rcvr_stat & 0x10) ? 3 : 0; 504 usK = (rcvr_stat & 0x10) ? 3 : 0;
505 505
506 /* The value reported back from the frontend will be FFFF=100% 0000=0% */ 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; 507 signal_strength = (((8952 - i20Log10(snr_equ) - usK*100)/3+5)*65535)/1000;
508 if (signal_strength > 0xffff) 508 if (signal_strength > 0xffff)
509 *strength = 0xffff; 509 *strength = 0xffff;
diff --git a/drivers/media/dvb/frontends/s5h1420.c b/drivers/media/dvb/frontends/s5h1420.c
index f265418e3261..18715091aed8 100644
--- a/drivers/media/dvb/frontends/s5h1420.c
+++ b/drivers/media/dvb/frontends/s5h1420.c
@@ -494,7 +494,7 @@ static int s5h1420_getfreqoffset(struct s5h1420_state* state)
494} 494}
495 495
496static void s5h1420_setfec_inversion(struct s5h1420_state* state, 496static void s5h1420_setfec_inversion(struct s5h1420_state* state,
497 struct dvb_frontend_parameters *p) 497 struct dvb_frontend_parameters *p)
498{ 498{
499 u8 inversion = 0; 499 u8 inversion = 0;
500 500
@@ -521,8 +521,8 @@ static void s5h1420_setfec_inversion(struct s5h1420_state* state,
521 521
522 case FEC_3_4: 522 case FEC_3_4:
523 s5h1420_writereg(state, 0x30, 0x04); 523 s5h1420_writereg(state, 0x30, 0x04);
524 s5h1420_writereg(state, 0x31, 0x12 | inversion); 524 s5h1420_writereg(state, 0x31, 0x12 | inversion);
525 break; 525 break;
526 526
527 case FEC_5_6: 527 case FEC_5_6:
528 s5h1420_writereg(state, 0x30, 0x08); 528 s5h1420_writereg(state, 0x30, 0x08);
diff --git a/drivers/media/dvb/frontends/s5h1420.h b/drivers/media/dvb/frontends/s5h1420.h
index 872028ddf2a2..73296f13c324 100644
--- a/drivers/media/dvb/frontends/s5h1420.h
+++ b/drivers/media/dvb/frontends/s5h1420.h
@@ -39,6 +39,6 @@ struct s5h1420_config
39}; 39};
40 40
41extern struct dvb_frontend* s5h1420_attach(const struct s5h1420_config* config, 41extern struct dvb_frontend* s5h1420_attach(const struct s5h1420_config* config,
42 struct i2c_adapter* i2c); 42 struct i2c_adapter* i2c);
43 43
44#endif // S5H1420_H 44#endif // S5H1420_H
diff --git a/drivers/media/dvb/frontends/sp8870.c b/drivers/media/dvb/frontends/sp8870.c
index 1c6b2e9264bc..fc06cd6b46c3 100644
--- a/drivers/media/dvb/frontends/sp8870.c
+++ b/drivers/media/dvb/frontends/sp8870.c
@@ -67,16 +67,16 @@ static int debug;
67 67
68static int sp8870_writereg (struct sp8870_state* state, u16 reg, u16 data) 68static int sp8870_writereg (struct sp8870_state* state, u16 reg, u16 data)
69{ 69{
70 u8 buf [] = { reg >> 8, reg & 0xff, data >> 8, data & 0xff }; 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 }; 71 struct i2c_msg msg = { .addr = state->config->demod_address, .flags = 0, .buf = buf, .len = 4 };
72 int err; 72 int err;
73 73
74 if ((err = i2c_transfer (state->i2c, &msg, 1)) != 1) { 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); 75 dprintk ("%s: writereg error (err == %i, reg == 0x%02x, data == 0x%02x)\n", __FUNCTION__, err, reg, data);
76 return -EREMOTEIO; 76 return -EREMOTEIO;
77 } 77 }
78 78
79 return 0; 79 return 0;
80} 80}
81 81
82static int sp8870_readreg (struct sp8870_state* state, u16 reg) 82static int sp8870_readreg (struct sp8870_state* state, u16 reg)
@@ -305,7 +305,7 @@ static int sp8870_set_frontend_parameters (struct dvb_frontend* fe,
305static int sp8870_init (struct dvb_frontend* fe) 305static int sp8870_init (struct dvb_frontend* fe)
306{ 306{
307 struct sp8870_state* state = fe->demodulator_priv; 307 struct sp8870_state* state = fe->demodulator_priv;
308 const struct firmware *fw = NULL; 308 const struct firmware *fw = NULL;
309 309
310 sp8870_wake_up(state); 310 sp8870_wake_up(state);
311 if (state->initialised) return 0; 311 if (state->initialised) return 0;
@@ -534,10 +534,10 @@ static int sp8870_sleep(struct dvb_frontend* fe)
534 534
535static int sp8870_get_tune_settings(struct dvb_frontend* fe, struct dvb_frontend_tune_settings* fesettings) 535static int sp8870_get_tune_settings(struct dvb_frontend* fe, struct dvb_frontend_tune_settings* fesettings)
536{ 536{
537 fesettings->min_delay_ms = 350; 537 fesettings->min_delay_ms = 350;
538 fesettings->step_size = 0; 538 fesettings->step_size = 0;
539 fesettings->max_drift = 0; 539 fesettings->max_drift = 0;
540 return 0; 540 return 0;
541} 541}
542 542
543static void sp8870_release(struct dvb_frontend* fe) 543static void sp8870_release(struct dvb_frontend* fe)
diff --git a/drivers/media/dvb/frontends/sp887x.c b/drivers/media/dvb/frontends/sp887x.c
index 73384e75625e..e3b665782243 100644
--- a/drivers/media/dvb/frontends/sp887x.c
+++ b/drivers/media/dvb/frontends/sp887x.c
@@ -80,7 +80,7 @@ static int sp887x_readreg (struct sp887x_state* state, u16 reg)
80 u8 b1 [2]; 80 u8 b1 [2];
81 int ret; 81 int ret;
82 struct i2c_msg msg[] = {{ .addr = state->config->demod_address, .flags = 0, .buf = b0, .len = 2 }, 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 }}; 83 { .addr = state->config->demod_address, .flags = I2C_M_RD, .buf = b1, .len = 2 }};
84 84
85 if ((ret = i2c_transfer(state->i2c, msg, 2)) != 2) { 85 if ((ret = i2c_transfer(state->i2c, msg, 2)) != 2) {
86 printk("%s: readreg error (ret == %i)\n", __FUNCTION__, ret); 86 printk("%s: readreg error (ret == %i)\n", __FUNCTION__, ret);
@@ -498,7 +498,7 @@ static int sp887x_sleep(struct dvb_frontend* fe)
498static int sp887x_init(struct dvb_frontend* fe) 498static int sp887x_init(struct dvb_frontend* fe)
499{ 499{
500 struct sp887x_state* state = fe->demodulator_priv; 500 struct sp887x_state* state = fe->demodulator_priv;
501 const struct firmware *fw = NULL; 501 const struct firmware *fw = NULL;
502 int ret; 502 int ret;
503 503
504 if (!state->initialised) { 504 if (!state->initialised) {
@@ -528,10 +528,10 @@ static int sp887x_init(struct dvb_frontend* fe)
528 528
529static int sp887x_get_tune_settings(struct dvb_frontend* fe, struct dvb_frontend_tune_settings* fesettings) 529static int sp887x_get_tune_settings(struct dvb_frontend* fe, struct dvb_frontend_tune_settings* fesettings)
530{ 530{
531 fesettings->min_delay_ms = 350; 531 fesettings->min_delay_ms = 350;
532 fesettings->step_size = 166666*2; 532 fesettings->step_size = 166666*2;
533 fesettings->max_drift = (166666*2)+1; 533 fesettings->max_drift = (166666*2)+1;
534 return 0; 534 return 0;
535} 535}
536 536
537static void sp887x_release(struct dvb_frontend* fe) 537static void sp887x_release(struct dvb_frontend* fe)
@@ -581,7 +581,7 @@ static struct dvb_frontend_ops sp887x_ops = {
581 .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | 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 | 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 | 583 FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 |
584 FE_CAN_RECOVER 584 FE_CAN_RECOVER
585 }, 585 },
586 586
587 .release = sp887x_release, 587 .release = sp887x_release,
diff --git a/drivers/media/dvb/frontends/stv0299.c b/drivers/media/dvb/frontends/stv0299.c
index 29c48665e130..177d71d56b67 100644
--- a/drivers/media/dvb/frontends/stv0299.c
+++ b/drivers/media/dvb/frontends/stv0299.c
@@ -95,7 +95,7 @@ static int stv0299_writeregI (struct stv0299_state* state, u8 reg, u8 data)
95 95
96int stv0299_writereg (struct dvb_frontend* fe, u8 reg, u8 data) 96int stv0299_writereg (struct dvb_frontend* fe, u8 reg, u8 data)
97{ 97{
98 struct stv0299_state* state = fe->demodulator_priv; 98 struct stv0299_state* state = fe->demodulator_priv;
99 99
100 return stv0299_writeregI(state, reg, data); 100 return stv0299_writeregI(state, reg, data);
101} 101}
@@ -220,7 +220,7 @@ static int stv0299_wait_diseqc_idle (struct stv0299_state* state, int timeout)
220 220
221static int stv0299_set_symbolrate (struct dvb_frontend* fe, u32 srate) 221static int stv0299_set_symbolrate (struct dvb_frontend* fe, u32 srate)
222{ 222{
223 struct stv0299_state* state = fe->demodulator_priv; 223 struct stv0299_state* state = fe->demodulator_priv;
224 u64 big = srate; 224 u64 big = srate;
225 u32 ratio; 225 u32 ratio;
226 226
@@ -271,7 +271,7 @@ static int stv0299_get_symbolrate (struct stv0299_state* state)
271static int stv0299_send_diseqc_msg (struct dvb_frontend* fe, 271static int stv0299_send_diseqc_msg (struct dvb_frontend* fe,
272 struct dvb_diseqc_master_cmd *m) 272 struct dvb_diseqc_master_cmd *m)
273{ 273{
274 struct stv0299_state* state = fe->demodulator_priv; 274 struct stv0299_state* state = fe->demodulator_priv;
275 u8 val; 275 u8 val;
276 int i; 276 int i;
277 277
@@ -301,7 +301,7 @@ static int stv0299_send_diseqc_msg (struct dvb_frontend* fe,
301 301
302static int stv0299_send_diseqc_burst (struct dvb_frontend* fe, fe_sec_mini_cmd_t burst) 302static int stv0299_send_diseqc_burst (struct dvb_frontend* fe, fe_sec_mini_cmd_t burst)
303{ 303{
304 struct stv0299_state* state = fe->demodulator_priv; 304 struct stv0299_state* state = fe->demodulator_priv;
305 u8 val; 305 u8 val;
306 306
307 dprintk ("%s\n", __FUNCTION__); 307 dprintk ("%s\n", __FUNCTION__);
@@ -328,7 +328,7 @@ static int stv0299_send_diseqc_burst (struct dvb_frontend* fe, fe_sec_mini_cmd_t
328 328
329static int stv0299_set_tone (struct dvb_frontend* fe, fe_sec_tone_mode_t tone) 329static int stv0299_set_tone (struct dvb_frontend* fe, fe_sec_tone_mode_t tone)
330{ 330{
331 struct stv0299_state* state = fe->demodulator_priv; 331 struct stv0299_state* state = fe->demodulator_priv;
332 u8 val; 332 u8 val;
333 333
334 if (stv0299_wait_diseqc_idle (state, 100) < 0) 334 if (stv0299_wait_diseqc_idle (state, 100) < 0)
@@ -350,7 +350,7 @@ static int stv0299_set_tone (struct dvb_frontend* fe, fe_sec_tone_mode_t tone)
350 350
351static int stv0299_set_voltage (struct dvb_frontend* fe, fe_sec_voltage_t voltage) 351static int stv0299_set_voltage (struct dvb_frontend* fe, fe_sec_voltage_t voltage)
352{ 352{
353 struct stv0299_state* state = fe->demodulator_priv; 353 struct stv0299_state* state = fe->demodulator_priv;
354 u8 reg0x08; 354 u8 reg0x08;
355 u8 reg0x0c; 355 u8 reg0x0c;
356 356
@@ -442,7 +442,7 @@ static int stv0299_send_legacy_dish_cmd (struct dvb_frontend* fe, u32 cmd)
442 442
443static int stv0299_init (struct dvb_frontend* fe) 443static int stv0299_init (struct dvb_frontend* fe)
444{ 444{
445 struct stv0299_state* state = fe->demodulator_priv; 445 struct stv0299_state* state = fe->demodulator_priv;
446 int i; 446 int i;
447 447
448 dprintk("stv0299: init chip\n"); 448 dprintk("stv0299: init chip\n");
@@ -461,7 +461,7 @@ static int stv0299_init (struct dvb_frontend* fe)
461 461
462static int stv0299_read_status(struct dvb_frontend* fe, fe_status_t* status) 462static int stv0299_read_status(struct dvb_frontend* fe, fe_status_t* status)
463{ 463{
464 struct stv0299_state* state = fe->demodulator_priv; 464 struct stv0299_state* state = fe->demodulator_priv;
465 465
466 u8 signal = 0xff - stv0299_readreg (state, 0x18); 466 u8 signal = 0xff - stv0299_readreg (state, 0x18);
467 u8 sync = stv0299_readreg (state, 0x1b); 467 u8 sync = stv0299_readreg (state, 0x1b);
@@ -489,7 +489,7 @@ static int stv0299_read_status(struct dvb_frontend* fe, fe_status_t* status)
489 489
490static int stv0299_read_ber(struct dvb_frontend* fe, u32* ber) 490static int stv0299_read_ber(struct dvb_frontend* fe, u32* ber)
491{ 491{
492 struct stv0299_state* state = fe->demodulator_priv; 492 struct stv0299_state* state = fe->demodulator_priv;
493 493
494 if (state->errmode != STATUS_BER) return 0; 494 if (state->errmode != STATUS_BER) return 0;
495 *ber = (stv0299_readreg (state, 0x1d) << 8) | stv0299_readreg (state, 0x1e); 495 *ber = (stv0299_readreg (state, 0x1d) << 8) | stv0299_readreg (state, 0x1e);
@@ -499,7 +499,7 @@ static int stv0299_read_ber(struct dvb_frontend* fe, u32* ber)
499 499
500static int stv0299_read_signal_strength(struct dvb_frontend* fe, u16* strength) 500static int stv0299_read_signal_strength(struct dvb_frontend* fe, u16* strength)
501{ 501{
502 struct stv0299_state* state = fe->demodulator_priv; 502 struct stv0299_state* state = fe->demodulator_priv;
503 503
504 s32 signal = 0xffff - ((stv0299_readreg (state, 0x18) << 8) 504 s32 signal = 0xffff - ((stv0299_readreg (state, 0x18) << 8)
505 | stv0299_readreg (state, 0x19)); 505 | stv0299_readreg (state, 0x19));
@@ -516,7 +516,7 @@ static int stv0299_read_signal_strength(struct dvb_frontend* fe, u16* strength)
516 516
517static int stv0299_read_snr(struct dvb_frontend* fe, u16* snr) 517static int stv0299_read_snr(struct dvb_frontend* fe, u16* snr)
518{ 518{
519 struct stv0299_state* state = fe->demodulator_priv; 519 struct stv0299_state* state = fe->demodulator_priv;
520 520
521 s32 xsnr = 0xffff - ((stv0299_readreg (state, 0x24) << 8) 521 s32 xsnr = 0xffff - ((stv0299_readreg (state, 0x24) << 8)
522 | stv0299_readreg (state, 0x25)); 522 | stv0299_readreg (state, 0x25));
@@ -528,7 +528,7 @@ static int stv0299_read_snr(struct dvb_frontend* fe, u16* snr)
528 528
529static int stv0299_read_ucblocks(struct dvb_frontend* fe, u32* ucblocks) 529static int stv0299_read_ucblocks(struct dvb_frontend* fe, u32* ucblocks)
530{ 530{
531 struct stv0299_state* state = fe->demodulator_priv; 531 struct stv0299_state* state = fe->demodulator_priv;
532 532
533 if (state->errmode != STATUS_UCBLOCKS) *ucblocks = 0; 533 if (state->errmode != STATUS_UCBLOCKS) *ucblocks = 0;
534 else *ucblocks = (stv0299_readreg (state, 0x1d) << 8) | stv0299_readreg (state, 0x1e); 534 else *ucblocks = (stv0299_readreg (state, 0x1d) << 8) | stv0299_readreg (state, 0x1e);
@@ -538,7 +538,7 @@ static int stv0299_read_ucblocks(struct dvb_frontend* fe, u32* ucblocks)
538 538
539static int stv0299_set_frontend(struct dvb_frontend* fe, struct dvb_frontend_parameters * p) 539static int stv0299_set_frontend(struct dvb_frontend* fe, struct dvb_frontend_parameters * p)
540{ 540{
541 struct stv0299_state* state = fe->demodulator_priv; 541 struct stv0299_state* state = fe->demodulator_priv;
542 int invval = 0; 542 int invval = 0;
543 543
544 dprintk ("%s : FE_SET_FRONTEND\n", __FUNCTION__); 544 dprintk ("%s : FE_SET_FRONTEND\n", __FUNCTION__);
@@ -571,7 +571,7 @@ static int stv0299_set_frontend(struct dvb_frontend* fe, struct dvb_frontend_par
571 571
572static int stv0299_get_frontend(struct dvb_frontend* fe, struct dvb_frontend_parameters * p) 572static int stv0299_get_frontend(struct dvb_frontend* fe, struct dvb_frontend_parameters * p)
573{ 573{
574 struct stv0299_state* state = fe->demodulator_priv; 574 struct stv0299_state* state = fe->demodulator_priv;
575 s32 derot_freq; 575 s32 derot_freq;
576 int invval; 576 int invval;
577 577
@@ -596,7 +596,7 @@ static int stv0299_get_frontend(struct dvb_frontend* fe, struct dvb_frontend_par
596 596
597static int stv0299_sleep(struct dvb_frontend* fe) 597static int stv0299_sleep(struct dvb_frontend* fe)
598{ 598{
599 struct stv0299_state* state = fe->demodulator_priv; 599 struct stv0299_state* state = fe->demodulator_priv;
600 600
601 stv0299_writeregI(state, 0x02, 0x80); 601 stv0299_writeregI(state, 0x02, 0x80);
602 state->initialised = 0; 602 state->initialised = 0;
@@ -606,7 +606,7 @@ static int stv0299_sleep(struct dvb_frontend* fe)
606 606
607static int stv0299_get_tune_settings(struct dvb_frontend* fe, struct dvb_frontend_tune_settings* fesettings) 607static int stv0299_get_tune_settings(struct dvb_frontend* fe, struct dvb_frontend_tune_settings* fesettings)
608{ 608{
609 struct stv0299_state* state = fe->demodulator_priv; 609 struct stv0299_state* state = fe->demodulator_priv;
610 610
611 fesettings->min_delay_ms = state->config->min_delay_ms; 611 fesettings->min_delay_ms = state->config->min_delay_ms;
612 if (fesettings->parameters.u.qpsk.symbol_rate < 10000000) { 612 if (fesettings->parameters.u.qpsk.symbol_rate < 10000000) {
@@ -658,7 +658,7 @@ struct dvb_frontend* stv0299_attach(const struct stv0299_config* config,
658 658
659 /* create dvb_frontend */ 659 /* create dvb_frontend */
660 state->frontend.ops = &state->ops; 660 state->frontend.ops = &state->ops;
661 state->frontend.demodulator_priv = state; 661 state->frontend.demodulator_priv = state;
662 return &state->frontend; 662 return &state->frontend;
663 663
664error: 664error:
@@ -714,7 +714,7 @@ MODULE_PARM_DESC(debug, "Turn on/off frontend debugging (default:off).");
714 714
715MODULE_DESCRIPTION("ST STV0299 DVB Demodulator driver"); 715MODULE_DESCRIPTION("ST STV0299 DVB Demodulator driver");
716MODULE_AUTHOR("Ralph Metzler, Holger Waechtler, Peter Schildmann, Felix Domke, " 716MODULE_AUTHOR("Ralph Metzler, Holger Waechtler, Peter Schildmann, Felix Domke, "
717 "Andreas Oberritter, Andrew de Quincey, Kenneth Aafløy"); 717 "Andreas Oberritter, Andrew de Quincey, Kenneth Aafløy");
718MODULE_LICENSE("GPL"); 718MODULE_LICENSE("GPL");
719 719
720EXPORT_SYMBOL(stv0299_writereg); 720EXPORT_SYMBOL(stv0299_writereg);
diff --git a/drivers/media/dvb/frontends/tda10021.c b/drivers/media/dvb/frontends/tda10021.c
index eaf130e666d8..425cd19136fe 100644
--- a/drivers/media/dvb/frontends/tda10021.c
+++ b/drivers/media/dvb/frontends/tda10021.c
@@ -1,10 +1,10 @@
1/* 1/*
2 TDA10021 - Single Chip Cable Channel Receiver driver module 2 TDA10021 - Single Chip Cable Channel Receiver driver module
3 used on the the Siemens DVB-C cards 3 used on the the Siemens DVB-C cards
4 4
5 Copyright (C) 1999 Convergence Integrated Media GmbH <ralph@convergence.de> 5 Copyright (C) 1999 Convergence Integrated Media GmbH <ralph@convergence.de>
6 Copyright (C) 2004 Markus Schulz <msc@antzsystem.de> 6 Copyright (C) 2004 Markus Schulz <msc@antzsystem.de>
7 Support for TDA10021 7 Support for TDA10021
8 8
9 This program is free software; you can redistribute it and/or modify 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 10 it under the terms of the GNU General Public License as published by
@@ -76,9 +76,9 @@ static u8 tda10021_inittab[0x40]=
76 76
77static int tda10021_writereg (struct tda10021_state* state, u8 reg, u8 data) 77static int tda10021_writereg (struct tda10021_state* state, u8 reg, u8 data)
78{ 78{
79 u8 buf[] = { reg, data }; 79 u8 buf[] = { reg, data };
80 struct i2c_msg msg = { .addr = state->config->demod_address, .flags = 0, .buf = buf, .len = 2 }; 80 struct i2c_msg msg = { .addr = state->config->demod_address, .flags = 0, .buf = buf, .len = 2 };
81 int ret; 81 int ret;
82 82
83 ret = i2c_transfer (state->i2c, &msg, 1); 83 ret = i2c_transfer (state->i2c, &msg, 1);
84 if (ret != 1) 84 if (ret != 1)
@@ -95,7 +95,7 @@ static u8 tda10021_readreg (struct tda10021_state* state, u8 reg)
95 u8 b0 [] = { reg }; 95 u8 b0 [] = { reg };
96 u8 b1 [] = { 0 }; 96 u8 b1 [] = { 0 };
97 struct i2c_msg msg [] = { { .addr = state->config->demod_address, .flags = 0, .buf = b0, .len = 1 }, 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 } }; 98 { .addr = state->config->demod_address, .flags = I2C_M_RD, .buf = b1, .len = 1 } };
99 int ret; 99 int ret;
100 100
101 ret = i2c_transfer (state->i2c, msg, 2); 101 ret = i2c_transfer (state->i2c, msg, 2);
diff --git a/drivers/media/dvb/frontends/tda10021.h b/drivers/media/dvb/frontends/tda10021.h
index 7d6a51ce291e..53be939e8c55 100644
--- a/drivers/media/dvb/frontends/tda10021.h
+++ b/drivers/media/dvb/frontends/tda10021.h
@@ -1,10 +1,10 @@
1/* 1/*
2 TDA10021 - Single Chip Cable Channel Receiver driver module 2 TDA10021 - Single Chip Cable Channel Receiver driver module
3 used on the the Siemens DVB-C cards 3 used on the the Siemens DVB-C cards
4 4
5 Copyright (C) 1999 Convergence Integrated Media GmbH <ralph@convergence.de> 5 Copyright (C) 1999 Convergence Integrated Media GmbH <ralph@convergence.de>
6 Copyright (C) 2004 Markus Schulz <msc@antzsystem.de> 6 Copyright (C) 2004 Markus Schulz <msc@antzsystem.de>
7 Support for TDA10021 7 Support for TDA10021
8 8
9 This program is free software; you can redistribute it and/or modify 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 10 it under the terms of the GNU General Public License as published by
diff --git a/drivers/media/dvb/frontends/tda1004x.c b/drivers/media/dvb/frontends/tda1004x.c
index 7968743826fc..dd02aff467fe 100644
--- a/drivers/media/dvb/frontends/tda1004x.c
+++ b/drivers/media/dvb/frontends/tda1004x.c
@@ -475,7 +475,7 @@ static int tda10046_fwupload(struct dvb_frontend* fe)
475 ret = state->config->request_firmware(fe, &fw, TDA10046_DEFAULT_FIRMWARE); 475 ret = state->config->request_firmware(fe, &fw, TDA10046_DEFAULT_FIRMWARE);
476 if (ret) { 476 if (ret) {
477 printk(KERN_ERR "tda1004x: no firmware upload (timeout or file not found?)\n"); 477 printk(KERN_ERR "tda1004x: no firmware upload (timeout or file not found?)\n");
478 return ret; 478 return ret;
479 } 479 }
480 tda1004x_write_mask(state, TDA1004X_CONFC4, 8, 8); // going to boot from HOST 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); 481 ret = tda1004x_do_upload(state, fw->data, fw->size, TDA10046H_CODE_CPT, TDA10046H_CODE_IN);
diff --git a/drivers/media/dvb/frontends/tda8083.c b/drivers/media/dvb/frontends/tda8083.c
index c05cf1861051..91baa9cedd79 100644
--- a/drivers/media/dvb/frontends/tda8083.c
+++ b/drivers/media/dvb/frontends/tda8083.c
@@ -66,13 +66,13 @@ static int tda8083_writereg (struct tda8083_state* state, u8 reg, u8 data)
66 u8 buf [] = { reg, data }; 66 u8 buf [] = { reg, data };
67 struct i2c_msg msg = { .addr = state->config->demod_address, .flags = 0, .buf = buf, .len = 2 }; 67 struct i2c_msg msg = { .addr = state->config->demod_address, .flags = 0, .buf = buf, .len = 2 };
68 68
69 ret = i2c_transfer(state->i2c, &msg, 1); 69 ret = i2c_transfer(state->i2c, &msg, 1);
70 70
71 if (ret != 1) 71 if (ret != 1)
72 dprintk ("%s: writereg error (reg %02x, ret == %i)\n", 72 dprintk ("%s: writereg error (reg %02x, ret == %i)\n",
73 __FUNCTION__, reg, ret); 73 __FUNCTION__, reg, ret);
74 74
75 return (ret != 1) ? -1 : 0; 75 return (ret != 1) ? -1 : 0;
76} 76}
77 77
78static int tda8083_readregs (struct tda8083_state* state, u8 reg1, u8 *b, u8 len) 78static int tda8083_readregs (struct tda8083_state* state, u8 reg1, u8 *b, u8 len)
@@ -87,7 +87,7 @@ static int tda8083_readregs (struct tda8083_state* state, u8 reg1, u8 *b, u8 len
87 dprintk ("%s: readreg error (reg %02x, ret == %i)\n", 87 dprintk ("%s: readreg error (reg %02x, ret == %i)\n",
88 __FUNCTION__, reg1, ret); 88 __FUNCTION__, reg1, ret);
89 89
90 return ret == 2 ? 0 : -1; 90 return ret == 2 ? 0 : -1;
91} 91}
92 92
93static inline u8 tda8083_readreg (struct tda8083_state* state, u8 reg) 93static inline u8 tda8083_readreg (struct tda8083_state* state, u8 reg)
@@ -132,14 +132,14 @@ static fe_code_rate_t tda8083_get_fec (struct tda8083_state* state)
132 132
133static int tda8083_set_symbolrate (struct tda8083_state* state, u32 srate) 133static int tda8083_set_symbolrate (struct tda8083_state* state, u32 srate)
134{ 134{
135 u32 ratio; 135 u32 ratio;
136 u32 tmp; 136 u32 tmp;
137 u8 filter; 137 u8 filter;
138 138
139 if (srate > 32000000) 139 if (srate > 32000000)
140 srate = 32000000; 140 srate = 32000000;
141 if (srate < 500000) 141 if (srate < 500000)
142 srate = 500000; 142 srate = 500000;
143 143
144 filter = 0; 144 filter = 0;
145 if (srate < 24000000) 145 if (srate < 24000000)
@@ -174,7 +174,7 @@ static void tda8083_wait_diseqc_fifo (struct tda8083_state* state, int timeout)
174 unsigned long start = jiffies; 174 unsigned long start = jiffies;
175 175
176 while (jiffies - start < timeout && 176 while (jiffies - start < timeout &&
177 !(tda8083_readreg(state, 0x02) & 0x80)) 177 !(tda8083_readreg(state, 0x02) & 0x80))
178 { 178 {
179 msleep(50); 179 msleep(50);
180 }; 180 };
diff --git a/drivers/media/dvb/ttpci/av7110.c b/drivers/media/dvb/ttpci/av7110.c
index 87ea52757a21..7dae91e5863c 100644
--- a/drivers/media/dvb/ttpci/av7110.c
+++ b/drivers/media/dvb/ttpci/av7110.c
@@ -176,6 +176,9 @@ static void init_av7110_av(struct av7110 *av7110)
176 } 176 }
177 } 177 }
178 178
179 if (dev->pci->subsystem_vendor == 0x13c2 && dev->pci->subsystem_device == 0x000e)
180 av7110_fw_cmd(av7110, COMTYPE_AUDIODAC, SpdifSwitch, 1, 0); // SPDIF on
181
179 ret = av7110_set_volume(av7110, av7110->mixer.volume_left, av7110->mixer.volume_right); 182 ret = av7110_set_volume(av7110, av7110->mixer.volume_left, av7110->mixer.volume_right);
180 if (ret < 0) 183 if (ret < 0)
181 printk("dvb-ttpci:cannot set volume :%d\n",ret); 184 printk("dvb-ttpci:cannot set volume :%d\n",ret);
@@ -217,10 +220,10 @@ static int arm_thread(void *data)
217 220
218 dprintk(4, "%p\n",av7110); 221 dprintk(4, "%p\n",av7110);
219 222
220 lock_kernel(); 223 lock_kernel();
221 daemonize("arm_mon"); 224 daemonize("arm_mon");
222 sigfillset(&current->blocked); 225 sigfillset(&current->blocked);
223 unlock_kernel(); 226 unlock_kernel();
224 227
225 av7110->arm_thread = current; 228 av7110->arm_thread = current;
226 229
@@ -1535,7 +1538,7 @@ static int alps_bsrv2_pll_set(struct dvb_frontend* fe, struct dvb_frontend_param
1535 buf[2] = ((div & 0x18000) >> 10) | 0x95; 1538 buf[2] = ((div & 0x18000) >> 10) | 0x95;
1536 buf[3] = (pwr << 6) | 0x30; 1539 buf[3] = (pwr << 6) | 0x30;
1537 1540
1538 // NOTE: since we're using a prescaler of 2, we set the 1541 // NOTE: since we're using a prescaler of 2, we set the
1539 // divisor frequency to 62.5kHz and divide by 125 above 1542 // divisor frequency to 62.5kHz and divide by 125 above
1540 1543
1541 if (i2c_transfer (&av7110->i2c_adap, &msg, 1) != 1) 1544 if (i2c_transfer (&av7110->i2c_adap, &msg, 1) != 1)
@@ -1811,7 +1814,7 @@ static struct tda8083_config grundig_29504_451_config = {
1811static int philips_cd1516_pll_set(struct dvb_frontend* fe, 1814static int philips_cd1516_pll_set(struct dvb_frontend* fe,
1812 struct dvb_frontend_parameters* params) 1815 struct dvb_frontend_parameters* params)
1813{ 1816{
1814 struct av7110* av7110 = fe->dvb->priv; 1817 struct av7110* av7110 = fe->dvb->priv;
1815 u32 div; 1818 u32 div;
1816 u32 f = params->frequency; 1819 u32 f = params->frequency;
1817 u8 data[4]; 1820 u8 data[4];
@@ -2202,7 +2205,7 @@ static u8 read_pwm(struct av7110* av7110)
2202 struct i2c_msg msg[] = { { .addr = 0x50,.flags = 0,.buf = &b,.len = 1 }, 2205 struct i2c_msg msg[] = { { .addr = 0x50,.flags = 0,.buf = &b,.len = 1 },
2203 { .addr = 0x50,.flags = I2C_M_RD,.buf = &pwm,.len = 1} }; 2206 { .addr = 0x50,.flags = I2C_M_RD,.buf = &pwm,.len = 1} };
2204 2207
2205 if ((i2c_transfer(&av7110->i2c_adap, msg, 2) != 2) || (pwm == 0xff)) 2208 if ((i2c_transfer(&av7110->i2c_adap, msg, 2) != 2) || (pwm == 0xff))
2206 pwm = 0x48; 2209 pwm = 0x48;
2207 2210
2208 return pwm; 2211 return pwm;
@@ -2245,7 +2248,7 @@ static int frontend_init(struct av7110 *av7110)
2245 } 2248 }
2246 2249
2247 // Try the grundig 29504-451 2250 // Try the grundig 29504-451
2248 av7110->fe = tda8083_attach(&grundig_29504_451_config, &av7110->i2c_adap); 2251 av7110->fe = tda8083_attach(&grundig_29504_451_config, &av7110->i2c_adap);
2249 if (av7110->fe) { 2252 if (av7110->fe) {
2250 av7110->fe->ops->diseqc_send_master_cmd = av7110_diseqc_send_master_cmd; 2253 av7110->fe->ops->diseqc_send_master_cmd = av7110_diseqc_send_master_cmd;
2251 av7110->fe->ops->diseqc_send_burst = av7110_diseqc_send_burst; 2254 av7110->fe->ops->diseqc_send_burst = av7110_diseqc_send_burst;
@@ -2271,12 +2274,12 @@ static int frontend_init(struct av7110 *av7110)
2271 case 0x0001: // Hauppauge/TT Nexus-T premium rev1.X 2274 case 0x0001: // Hauppauge/TT Nexus-T premium rev1.X
2272 2275
2273 // ALPS TDLB7 2276 // ALPS TDLB7
2274 av7110->fe = sp8870_attach(&alps_tdlb7_config, &av7110->i2c_adap); 2277 av7110->fe = sp8870_attach(&alps_tdlb7_config, &av7110->i2c_adap);
2275 break; 2278 break;
2276 2279
2277 case 0x0002: // Hauppauge/TT DVB-C premium rev2.X 2280 case 0x0002: // Hauppauge/TT DVB-C premium rev2.X
2278 2281
2279 av7110->fe = ves1820_attach(&alps_tdbe2_config, &av7110->i2c_adap, read_pwm(av7110)); 2282 av7110->fe = ves1820_attach(&alps_tdbe2_config, &av7110->i2c_adap, read_pwm(av7110));
2280 break; 2283 break;
2281 2284
2282 case 0x0006: /* Fujitsu-Siemens DVB-S rev 1.6 */ 2285 case 0x0006: /* Fujitsu-Siemens DVB-S rev 1.6 */
@@ -2421,9 +2424,9 @@ static int av7110_attach(struct saa7146_dev* dev, struct saa7146_pci_extension_d
2421 2424
2422 dprintk(4, "dev: %p\n", dev); 2425 dprintk(4, "dev: %p\n", dev);
2423 2426
2424 /* Set RPS_IRQ to 1 to track rps1 activity. 2427 /* Set RPS_IRQ to 1 to track rps1 activity.
2425 * Enabling this won't send any interrupt to PC CPU. 2428 * Enabling this won't send any interrupt to PC CPU.
2426 */ 2429 */
2427#define RPS_IRQ 0 2430#define RPS_IRQ 0
2428 2431
2429 if (budgetpatch == 1) { 2432 if (budgetpatch == 1) {
diff --git a/drivers/media/dvb/ttpci/av7110_hw.c b/drivers/media/dvb/ttpci/av7110_hw.c
index 7442f56a72ec..87106e8bf35b 100644
--- a/drivers/media/dvb/ttpci/av7110_hw.c
+++ b/drivers/media/dvb/ttpci/av7110_hw.c
@@ -1203,15 +1203,15 @@ int av7110_osd_cmd(struct av7110 *av7110, osd_cmd_t *dc)
1203 1203
1204int av7110_osd_capability(struct av7110 *av7110, osd_cap_t *cap) 1204int av7110_osd_capability(struct av7110 *av7110, osd_cap_t *cap)
1205{ 1205{
1206 switch (cap->cmd) { 1206 switch (cap->cmd) {
1207 case OSD_CAP_MEMSIZE: 1207 case OSD_CAP_MEMSIZE:
1208 if (FW_4M_SDRAM(av7110->arm_app)) 1208 if (FW_4M_SDRAM(av7110->arm_app))
1209 cap->val = 1000000; 1209 cap->val = 1000000;
1210 else 1210 else
1211 cap->val = 92000; 1211 cap->val = 92000;
1212 return 0; 1212 return 0;
1213 default: 1213 default:
1214 return -EINVAL; 1214 return -EINVAL;
1215 } 1215 }
1216} 1216}
1217#endif /* CONFIG_DVB_AV7110_OSD */ 1217#endif /* CONFIG_DVB_AV7110_OSD */
diff --git a/drivers/media/dvb/ttpci/av7110_hw.h b/drivers/media/dvb/ttpci/av7110_hw.h
index fedd20f9815d..2a5e87ba1052 100644
--- a/drivers/media/dvb/ttpci/av7110_hw.h
+++ b/drivers/media/dvb/ttpci/av7110_hw.h
@@ -143,7 +143,8 @@ enum av7110_audio_command {
143 MainSwitch, 143 MainSwitch,
144 ADSwitch, 144 ADSwitch,
145 SendDiSEqC, 145 SendDiSEqC,
146 SetRegister 146 SetRegister,
147 SpdifSwitch
147}; 148};
148 149
149enum av7110_request_command { 150enum av7110_request_command {
diff --git a/drivers/media/dvb/ttpci/av7110_v4l.c b/drivers/media/dvb/ttpci/av7110_v4l.c
index 6af74f78b3e5..b5aea4129fa7 100644
--- a/drivers/media/dvb/ttpci/av7110_v4l.c
+++ b/drivers/media/dvb/ttpci/av7110_v4l.c
@@ -120,8 +120,8 @@ static int ves1820_writereg(struct saa7146_dev *dev, u8 addr, u8 reg, u8 data)
120 120
121static int stv0297_writereg(struct saa7146_dev *dev, u8 addr, u8 reg, u8 data) 121static int stv0297_writereg(struct saa7146_dev *dev, u8 addr, u8 reg, u8 data)
122{ 122{
123 u8 buf [] = { reg, data }; 123 u8 buf [] = { reg, data };
124 struct i2c_msg msg = { .addr = addr, .flags = 0, .buf = buf, .len = 2 }; 124 struct i2c_msg msg = { .addr = addr, .flags = 0, .buf = buf, .len = 2 };
125 125
126 if (1 != saa7146_i2c_transfer(dev, &msg, 1, 1)) 126 if (1 != saa7146_i2c_transfer(dev, &msg, 1, 1))
127 return -1; 127 return -1;
diff --git a/drivers/media/dvb/ttpci/budget-core.c b/drivers/media/dvb/ttpci/budget-core.c
index 0498a055a4cd..017fcbccb8cc 100644
--- a/drivers/media/dvb/ttpci/budget-core.c
+++ b/drivers/media/dvb/ttpci/budget-core.c
@@ -87,7 +87,7 @@ static int start_ts_capture(struct budget *budget)
87 * Pitch: 188, NumBytes3: 188, NumLines3: 1024 87 * Pitch: 188, NumBytes3: 188, NumLines3: 1024
88 */ 88 */
89 89
90 switch(budget->card->type) { 90 switch(budget->card->type) {
91 case BUDGET_FS_ACTIVY: 91 case BUDGET_FS_ACTIVY:
92 saa7146_write(dev, DD1_INIT, 0x04000000); 92 saa7146_write(dev, DD1_INIT, 0x04000000);
93 saa7146_write(dev, MC2, (MASK_09 | MASK_25)); 93 saa7146_write(dev, MC2, (MASK_09 | MASK_25));
diff --git a/drivers/media/dvb/ttpci/budget-patch.c b/drivers/media/dvb/ttpci/budget-patch.c
index 755df81cbc49..fc416cf5253c 100644
--- a/drivers/media/dvb/ttpci/budget-patch.c
+++ b/drivers/media/dvb/ttpci/budget-patch.c
@@ -45,11 +45,11 @@ MAKE_BUDGET_INFO(ttbp, "TT-Budget/Patch DVB-S 1.x PCI", BUDGET_PATCH);
45//MAKE_BUDGET_INFO(satel,"TT-Budget/Patch SATELCO PCI", BUDGET_TT_HW_DISEQC); 45//MAKE_BUDGET_INFO(satel,"TT-Budget/Patch SATELCO PCI", BUDGET_TT_HW_DISEQC);
46 46
47static struct pci_device_id pci_tbl[] = { 47static struct pci_device_id pci_tbl[] = {
48 MAKE_EXTENSION_PCI(ttbp,0x13c2, 0x0000), 48 MAKE_EXTENSION_PCI(ttbp,0x13c2, 0x0000),
49// MAKE_EXTENSION_PCI(satel, 0x13c2, 0x1013), 49// MAKE_EXTENSION_PCI(satel, 0x13c2, 0x1013),
50 { 50 {
51 .vendor = 0, 51 .vendor = 0,
52 } 52 }
53}; 53};
54 54
55/* those lines are for budget-patch to be tried 55/* those lines are for budget-patch to be tried
@@ -165,57 +165,57 @@ static int budget_diseqc_send_burst(struct dvb_frontend* fe, fe_sec_mini_cmd_t m
165 165
166static int budget_av7110_send_fw_cmd(struct budget_patch *budget, u16* buf, int length) 166static int budget_av7110_send_fw_cmd(struct budget_patch *budget, u16* buf, int length)
167{ 167{
168 int i; 168 int i;
169 169
170 dprintk(2, "budget: %p\n", budget); 170 dprintk(2, "budget: %p\n", budget);
171 171
172 for (i = 2; i < length; i++) 172 for (i = 2; i < length; i++)
173 { 173 {
174 ttpci_budget_debiwrite(budget, DEBINOSWAP, COMMAND + 2*i, 2, (u32) buf[i], 0,0); 174 ttpci_budget_debiwrite(budget, DEBINOSWAP, COMMAND + 2*i, 2, (u32) buf[i], 0,0);
175 msleep(5); 175 msleep(5);
176 } 176 }
177 if (length) 177 if (length)
178 ttpci_budget_debiwrite(budget, DEBINOSWAP, COMMAND + 2, 2, (u32) buf[1], 0,0); 178 ttpci_budget_debiwrite(budget, DEBINOSWAP, COMMAND + 2, 2, (u32) buf[1], 0,0);
179 else 179 else
180 ttpci_budget_debiwrite(budget, DEBINOSWAP, COMMAND + 2, 2, 0, 0,0); 180 ttpci_budget_debiwrite(budget, DEBINOSWAP, COMMAND + 2, 2, 0, 0,0);
181 msleep(5); 181 msleep(5);
182 ttpci_budget_debiwrite(budget, DEBINOSWAP, COMMAND, 2, (u32) buf[0], 0,0); 182 ttpci_budget_debiwrite(budget, DEBINOSWAP, COMMAND, 2, (u32) buf[0], 0,0);
183 msleep(5); 183 msleep(5);
184 return 0; 184 return 0;
185} 185}
186 186
187static void av7110_set22k(struct budget_patch *budget, int state) 187static void av7110_set22k(struct budget_patch *budget, int state)
188{ 188{
189 u16 buf[2] = {( COMTYPE_AUDIODAC << 8) | (state ? ON22K : OFF22K), 0}; 189 u16 buf[2] = {( COMTYPE_AUDIODAC << 8) | (state ? ON22K : OFF22K), 0};
190 190
191 dprintk(2, "budget: %p\n", budget); 191 dprintk(2, "budget: %p\n", budget);
192 budget_av7110_send_fw_cmd(budget, buf, 2); 192 budget_av7110_send_fw_cmd(budget, buf, 2);
193} 193}
194 194
195static int av7110_send_diseqc_msg(struct budget_patch *budget, int len, u8 *msg, int burst) 195static int av7110_send_diseqc_msg(struct budget_patch *budget, int len, u8 *msg, int burst)
196{ 196{
197 int i; 197 int i;
198 u16 buf[18] = { ((COMTYPE_AUDIODAC << 8) | SendDiSEqC), 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 }; 199 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
200 200
201 dprintk(2, "budget: %p\n", budget); 201 dprintk(2, "budget: %p\n", budget);
202 202
203 if (len>10) 203 if (len>10)
204 len=10; 204 len=10;
205 205
206 buf[1] = len+2; 206 buf[1] = len+2;
207 buf[2] = len; 207 buf[2] = len;
208 208
209 if (burst != -1) 209 if (burst != -1)
210 buf[3]=burst ? 0x01 : 0x00; 210 buf[3]=burst ? 0x01 : 0x00;
211 else 211 else
212 buf[3]=0xffff; 212 buf[3]=0xffff;
213 213
214 for (i=0; i<len; i++) 214 for (i=0; i<len; i++)
215 buf[i+4]=msg[i]; 215 buf[i+4]=msg[i];
216 216
217 budget_av7110_send_fw_cmd(budget, buf, 18); 217 budget_av7110_send_fw_cmd(budget, buf, 18);
218 return 0; 218 return 0;
219} 219}
220 220
221static int budget_patch_set_tone(struct dvb_frontend* fe, fe_sec_tone_mode_t tone) 221static int budget_patch_set_tone(struct dvb_frontend* fe, fe_sec_tone_mode_t tone)
@@ -276,7 +276,7 @@ static int alps_bsrv2_pll_set(struct dvb_frontend* fe, struct dvb_frontend_param
276 buf[2] = ((div & 0x18000) >> 10) | 0x95; 276 buf[2] = ((div & 0x18000) >> 10) | 0x95;
277 buf[3] = (pwr << 6) | 0x30; 277 buf[3] = (pwr << 6) | 0x30;
278 278
279 // NOTE: since we're using a prescaler of 2, we set the 279 // NOTE: since we're using a prescaler of 2, we set the
280 // divisor frequency to 62.5kHz and divide by 125 above 280 // divisor frequency to 62.5kHz and divide by 125 above
281 281
282 if (i2c_transfer (&budget->i2c_adap, &msg, 1) != 1) return -EIO; 282 if (i2c_transfer (&budget->i2c_adap, &msg, 1) != 1) return -EIO;
@@ -294,7 +294,7 @@ static u8 alps_bsru6_inittab[] = {
294 0x01, 0x15, 294 0x01, 0x15,
295 0x02, 0x00, 295 0x02, 0x00,
296 0x03, 0x00, 296 0x03, 0x00,
297 0x04, 0x7d, /* F22FR = 0x7d, F22 = f_VCO / 128 / 0x7d = 22 kHz */ 297 0x04, 0x7d, /* F22FR = 0x7d, F22 = f_VCO / 128 / 0x7d = 22 kHz */
298 0x05, 0x35, /* I2CT = 0, SCLT = 1, SDAT = 1 */ 298 0x05, 0x35, /* I2CT = 0, SCLT = 1, SDAT = 1 */
299 0x06, 0x40, /* DAC not used, set to high impendance mode */ 299 0x06, 0x40, /* DAC not used, set to high impendance mode */
300 0x07, 0x00, /* DAC LSB */ 300 0x07, 0x00, /* DAC LSB */
@@ -413,7 +413,7 @@ static void frontend_init(struct budget_patch* budget)
413{ 413{
414 switch(budget->dev->pci->subsystem_device) { 414 switch(budget->dev->pci->subsystem_device) {
415 case 0x0000: // Hauppauge/TT WinTV DVB-S rev1.X 415 case 0x0000: // Hauppauge/TT WinTV DVB-S rev1.X
416 case 0x1013: // SATELCO Multimedia PCI 416 case 0x1013: // SATELCO Multimedia PCI
417 417
418 // try the ALPS BSRV2 first of all 418 // try the ALPS BSRV2 first of all
419 budget->dvb_frontend = ves1x93_attach(&alps_bsrv2_config, &budget->i2c_adap); 419 budget->dvb_frontend = ves1x93_attach(&alps_bsrv2_config, &budget->i2c_adap);
@@ -463,8 +463,8 @@ static void frontend_init(struct budget_patch* budget)
463/* written by Emard */ 463/* written by Emard */
464static int budget_patch_attach (struct saa7146_dev* dev, struct saa7146_pci_extension_data *info) 464static int budget_patch_attach (struct saa7146_dev* dev, struct saa7146_pci_extension_data *info)
465{ 465{
466 struct budget_patch *budget; 466 struct budget_patch *budget;
467 int err; 467 int err;
468 int count = 0; 468 int count = 0;
469 int detected = 0; 469 int detected = 0;
470 470
@@ -472,12 +472,12 @@ static int budget_patch_attach (struct saa7146_dev* dev, struct saa7146_pci_exte
472#define RPS_IRQ 0 472#define RPS_IRQ 0
473#define HPS_SETUP 0 473#define HPS_SETUP 0
474#if PATCH_RESET 474#if PATCH_RESET
475 saa7146_write(dev, MC1, MASK_31); 475 saa7146_write(dev, MC1, MASK_31);
476 msleep(40); 476 msleep(40);
477#endif 477#endif
478#if HPS_SETUP 478#if HPS_SETUP
479 // initialize registers. Better to have it like this 479 // initialize registers. Better to have it like this
480 // than leaving something unconfigured 480 // than leaving something unconfigured
481 saa7146_write(dev, DD1_STREAM_B, 0); 481 saa7146_write(dev, DD1_STREAM_B, 0);
482 // port B VSYNC at rising edge 482 // port B VSYNC at rising edge
483 saa7146_write(dev, DD1_INIT, 0x00000200); // have this in budget-core too! 483 saa7146_write(dev, DD1_INIT, 0x00000200); // have this in budget-core too!
@@ -486,29 +486,29 @@ static int budget_patch_attach (struct saa7146_dev* dev, struct saa7146_pci_exte
486 // debi config 486 // debi config
487 // saa7146_write(dev, DEBI_CONFIG, MASK_30|MASK_28|MASK_18); 487 // saa7146_write(dev, DEBI_CONFIG, MASK_30|MASK_28|MASK_18);
488 488
489 // zero all HPS registers 489 // zero all HPS registers
490 saa7146_write(dev, HPS_H_PRESCALE, 0); // r68 490 saa7146_write(dev, HPS_H_PRESCALE, 0); // r68
491 saa7146_write(dev, HPS_H_SCALE, 0); // r6c 491 saa7146_write(dev, HPS_H_SCALE, 0); // r6c
492 saa7146_write(dev, BCS_CTRL, 0); // r70 492 saa7146_write(dev, BCS_CTRL, 0); // r70
493 saa7146_write(dev, HPS_V_SCALE, 0); // r60 493 saa7146_write(dev, HPS_V_SCALE, 0); // r60
494 saa7146_write(dev, HPS_V_GAIN, 0); // r64 494 saa7146_write(dev, HPS_V_GAIN, 0); // r64
495 saa7146_write(dev, CHROMA_KEY_RANGE, 0); // r74 495 saa7146_write(dev, CHROMA_KEY_RANGE, 0); // r74
496 saa7146_write(dev, CLIP_FORMAT_CTRL, 0); // r78 496 saa7146_write(dev, CLIP_FORMAT_CTRL, 0); // r78
497 // Set HPS prescaler for port B input 497 // Set HPS prescaler for port B input
498 saa7146_write(dev, HPS_CTRL, (1<<30) | (0<<29) | (1<<28) | (0<<12) ); 498 saa7146_write(dev, HPS_CTRL, (1<<30) | (0<<29) | (1<<28) | (0<<12) );
499 saa7146_write(dev, MC2, 499 saa7146_write(dev, MC2,
500 0 * (MASK_08 | MASK_24) | // BRS control 500 0 * (MASK_08 | MASK_24) | // BRS control
501 0 * (MASK_09 | MASK_25) | // a 501 0 * (MASK_09 | MASK_25) | // a
502 0 * (MASK_10 | MASK_26) | // b 502 0 * (MASK_10 | MASK_26) | // b
503 1 * (MASK_06 | MASK_22) | // HPS_CTRL1 503 1 * (MASK_06 | MASK_22) | // HPS_CTRL1
504 1 * (MASK_05 | MASK_21) | // HPS_CTRL2 504 1 * (MASK_05 | MASK_21) | // HPS_CTRL2
505 0 * (MASK_01 | MASK_15) // DEBI 505 0 * (MASK_01 | MASK_15) // DEBI
506 ); 506 );
507#endif 507#endif
508 // Disable RPS1 and RPS0 508 // Disable RPS1 and RPS0
509 saa7146_write(dev, MC1, ( MASK_29 | MASK_28)); 509 saa7146_write(dev, MC1, ( MASK_29 | MASK_28));
510 // RPS1 timeout disable 510 // RPS1 timeout disable
511 saa7146_write(dev, RPS_TOV1, 0); 511 saa7146_write(dev, RPS_TOV1, 0);
512 512
513 // code for autodetection 513 // code for autodetection
514 // will wait for VBI_B event (vertical blank at port B) 514 // will wait for VBI_B event (vertical blank at port B)
@@ -521,38 +521,38 @@ static int budget_patch_attach (struct saa7146_dev* dev, struct saa7146_pci_exte
521 WRITE_RPS1(cpu_to_le32(CMD_UPLOAD | 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 )); 522 MASK_10 | MASK_09 | MASK_08 | MASK_06 | MASK_05 | MASK_04 | MASK_03 | MASK_02 ));
523#endif 523#endif
524 WRITE_RPS1(cpu_to_le32(CMD_PAUSE | EVT_VBI_B)); 524 WRITE_RPS1(cpu_to_le32(CMD_PAUSE | EVT_VBI_B));
525 WRITE_RPS1(cpu_to_le32(CMD_WR_REG_MASK | (GPIO_CTRL>>2))); 525 WRITE_RPS1(cpu_to_le32(CMD_WR_REG_MASK | (GPIO_CTRL>>2)));
526 WRITE_RPS1(cpu_to_le32(GPIO3_MSK)); 526 WRITE_RPS1(cpu_to_le32(GPIO3_MSK));
527 WRITE_RPS1(cpu_to_le32(SAA7146_GPIO_OUTLO<<24)); 527 WRITE_RPS1(cpu_to_le32(SAA7146_GPIO_OUTLO<<24));
528#if RPS_IRQ 528#if RPS_IRQ
529 // issue RPS1 interrupt to increment counter 529 // issue RPS1 interrupt to increment counter
530 WRITE_RPS1(cpu_to_le32(CMD_INTERRUPT)); 530 WRITE_RPS1(cpu_to_le32(CMD_INTERRUPT));
531 // at least a NOP is neede between two interrupts 531 // at least a NOP is neede between two interrupts
532 WRITE_RPS1(cpu_to_le32(CMD_NOP)); 532 WRITE_RPS1(cpu_to_le32(CMD_NOP));
533 // interrupt again 533 // interrupt again
534 WRITE_RPS1(cpu_to_le32(CMD_INTERRUPT)); 534 WRITE_RPS1(cpu_to_le32(CMD_INTERRUPT));
535#endif 535#endif
536 WRITE_RPS1(cpu_to_le32(CMD_STOP)); 536 WRITE_RPS1(cpu_to_le32(CMD_STOP));
537 537
538#if RPS_IRQ 538#if RPS_IRQ
539 // set event counter 1 source as RPS1 interrupt (0x03) (rE4 p53) 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 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 541 // use 0x15 to track VPE interrupts - increase by 1 every vpeirq() is called
542 saa7146_write(dev, EC1SSR, (0x03<<2) | 3 ); 542 saa7146_write(dev, EC1SSR, (0x03<<2) | 3 );
543 // set event counter 1 treshold to maximum allowed value (rEC p55) 543 // set event counter 1 treshold to maximum allowed value (rEC p55)
544 saa7146_write(dev, ECT1R, 0x3fff ); 544 saa7146_write(dev, ECT1R, 0x3fff );
545#endif 545#endif
546 // Fix VSYNC level 546 // Fix VSYNC level
547 saa7146_setgpio(dev, 3, SAA7146_GPIO_OUTLO); 547 saa7146_setgpio(dev, 3, SAA7146_GPIO_OUTLO);
548 // Set RPS1 Address register to point to RPS code (r108 p42) 548 // Set RPS1 Address register to point to RPS code (r108 p42)
549 saa7146_write(dev, RPS_ADDR1, dev->d_rps1.dma_handle); 549 saa7146_write(dev, RPS_ADDR1, dev->d_rps1.dma_handle);
550 // Enable RPS1, (rFC p33) 550 // Enable RPS1, (rFC p33)
551 saa7146_write(dev, MC1, (MASK_13 | MASK_29 )); 551 saa7146_write(dev, MC1, (MASK_13 | MASK_29 ));
552 552
553 553
554 mdelay(50); 554 mdelay(50);
555 saa7146_setgpio(dev, 3, SAA7146_GPIO_OUTHI); 555 saa7146_setgpio(dev, 3, SAA7146_GPIO_OUTHI);
556 mdelay(150); 556 mdelay(150);
557 557
558 558
@@ -560,17 +560,17 @@ static int budget_patch_attach (struct saa7146_dev* dev, struct saa7146_pci_exte
560 detected = 1; 560 detected = 1;
561 561
562#if RPS_IRQ 562#if RPS_IRQ
563 printk("Event Counter 1 0x%04x\n", saa7146_read(dev, EC1R) & 0x3fff ); 563 printk("Event Counter 1 0x%04x\n", saa7146_read(dev, EC1R) & 0x3fff );
564#endif 564#endif
565 // Disable RPS1 565 // Disable RPS1
566 saa7146_write(dev, MC1, ( MASK_29 )); 566 saa7146_write(dev, MC1, ( MASK_29 ));
567 567
568 if(detected == 0) 568 if(detected == 0)
569 printk("budget-patch not detected or saa7146 in non-default state.\n" 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"); 570 "try enabling ressetting of 7146 with MASK_31 in MC1 register\n");
571 571
572 else 572 else
573 printk("BUDGET-PATCH DETECTED.\n"); 573 printk("BUDGET-PATCH DETECTED.\n");
574 574
575 575
576/* OLD (Original design by Roberto Deza): 576/* OLD (Original design by Roberto Deza):
@@ -641,83 +641,83 @@ static int budget_patch_attach (struct saa7146_dev* dev, struct saa7146_pci_exte
641*/ 641*/
642 642
643 // Setup RPS1 "program" (p35) 643 // Setup RPS1 "program" (p35)
644 count = 0; 644 count = 0;
645 645
646 646
647 // Wait Source Line Counter Threshold (p36) 647 // Wait Source Line Counter Threshold (p36)
648 WRITE_RPS1(cpu_to_le32(CMD_PAUSE | EVT_HS)); 648 WRITE_RPS1(cpu_to_le32(CMD_PAUSE | EVT_HS));
649 // Set GPIO3=1 (p42) 649 // Set GPIO3=1 (p42)
650 WRITE_RPS1(cpu_to_le32(CMD_WR_REG_MASK | (GPIO_CTRL>>2))); 650 WRITE_RPS1(cpu_to_le32(CMD_WR_REG_MASK | (GPIO_CTRL>>2)));
651 WRITE_RPS1(cpu_to_le32(GPIO3_MSK)); 651 WRITE_RPS1(cpu_to_le32(GPIO3_MSK));
652 WRITE_RPS1(cpu_to_le32(SAA7146_GPIO_OUTHI<<24)); 652 WRITE_RPS1(cpu_to_le32(SAA7146_GPIO_OUTHI<<24));
653#if RPS_IRQ 653#if RPS_IRQ
654 // issue RPS1 interrupt 654 // issue RPS1 interrupt
655 WRITE_RPS1(cpu_to_le32(CMD_INTERRUPT)); 655 WRITE_RPS1(cpu_to_le32(CMD_INTERRUPT));
656#endif 656#endif
657 // Wait reset Source Line Counter Threshold (p36) 657 // Wait reset Source Line Counter Threshold (p36)
658 WRITE_RPS1(cpu_to_le32(CMD_PAUSE | RPS_INV | EVT_HS)); 658 WRITE_RPS1(cpu_to_le32(CMD_PAUSE | RPS_INV | EVT_HS));
659 // Set GPIO3=0 (p42) 659 // Set GPIO3=0 (p42)
660 WRITE_RPS1(cpu_to_le32(CMD_WR_REG_MASK | (GPIO_CTRL>>2))); 660 WRITE_RPS1(cpu_to_le32(CMD_WR_REG_MASK | (GPIO_CTRL>>2)));
661 WRITE_RPS1(cpu_to_le32(GPIO3_MSK)); 661 WRITE_RPS1(cpu_to_le32(GPIO3_MSK));
662 WRITE_RPS1(cpu_to_le32(SAA7146_GPIO_OUTLO<<24)); 662 WRITE_RPS1(cpu_to_le32(SAA7146_GPIO_OUTLO<<24));
663#if RPS_IRQ 663#if RPS_IRQ
664 // issue RPS1 interrupt 664 // issue RPS1 interrupt
665 WRITE_RPS1(cpu_to_le32(CMD_INTERRUPT)); 665 WRITE_RPS1(cpu_to_le32(CMD_INTERRUPT));
666#endif 666#endif
667 // Jump to begin of RPS program (p37) 667 // Jump to begin of RPS program (p37)
668 WRITE_RPS1(cpu_to_le32(CMD_JUMP)); 668 WRITE_RPS1(cpu_to_le32(CMD_JUMP));
669 WRITE_RPS1(cpu_to_le32(dev->d_rps1.dma_handle)); 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 670
685 // saa7146_write(dev, RPS_THRESH0, ((TS_HEIGHT/2)<<16) |MASK_28| (TS_HEIGHT/2) |MASK_12 ); 671 // Fix VSYNC level
686 // Enable RPS1 (rFC p33) 672 saa7146_setgpio(dev, 3, SAA7146_GPIO_OUTLO);
687 saa7146_write(dev, MC1, (MASK_13 | MASK_29)); 673 // Set RPS1 Address register to point to RPS code (r108 p42)
688 674 saa7146_write(dev, RPS_ADDR1, dev->d_rps1.dma_handle);
689 675 // Set Source Line Counter Threshold, using BRS (rCC p43)
690 if (!(budget = kmalloc (sizeof(struct budget_patch), GFP_KERNEL))) 676 // It generates HS event every TS_HEIGHT lines
691 return -ENOMEM; 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 692
693 dprintk(2, "budget: %p\n", budget); 693 dprintk(2, "budget: %p\n", budget);
694 694
695 if ((err = ttpci_budget_init (budget, dev, info, THIS_MODULE))) { 695 if ((err = ttpci_budget_init (budget, dev, info, THIS_MODULE))) {
696 kfree (budget); 696 kfree (budget);
697 return err; 697 return err;
698 } 698 }
699 699
700 700
701 dev->ext_priv = budget; 701 dev->ext_priv = budget;
702 702
703 budget->dvb_adapter.priv = budget; 703 budget->dvb_adapter.priv = budget;
704 frontend_init(budget); 704 frontend_init(budget);
705 705
706 return 0; 706 return 0;
707} 707}
708 708
709static int budget_patch_detach (struct saa7146_dev* dev) 709static int budget_patch_detach (struct saa7146_dev* dev)
710{ 710{
711 struct budget_patch *budget = (struct budget_patch*) dev->ext_priv; 711 struct budget_patch *budget = (struct budget_patch*) dev->ext_priv;
712 int err; 712 int err;
713 713
714 if (budget->dvb_frontend) dvb_unregister_frontend(budget->dvb_frontend); 714 if (budget->dvb_frontend) dvb_unregister_frontend(budget->dvb_frontend);
715 715
716 err = ttpci_budget_deinit (budget); 716 err = ttpci_budget_deinit (budget);
717 717
718 kfree (budget); 718 kfree (budget);
719 719
720 return err; 720 return err;
721} 721}
722 722
723static int __init budget_patch_init(void) 723static int __init budget_patch_init(void)
@@ -727,20 +727,20 @@ static int __init budget_patch_init(void)
727 727
728static void __exit budget_patch_exit(void) 728static void __exit budget_patch_exit(void)
729{ 729{
730 saa7146_unregister_extension(&budget_extension); 730 saa7146_unregister_extension(&budget_extension);
731} 731}
732 732
733static struct saa7146_extension budget_extension = { 733static struct saa7146_extension budget_extension = {
734 .name = "budget_patch dvb\0", 734 .name = "budget_patch dvb\0",
735 .flags = 0, 735 .flags = 0,
736 736
737 .module = THIS_MODULE, 737 .module = THIS_MODULE,
738 .pci_tbl = pci_tbl, 738 .pci_tbl = pci_tbl,
739 .attach = budget_patch_attach, 739 .attach = budget_patch_attach,
740 .detach = budget_patch_detach, 740 .detach = budget_patch_detach,
741 741
742 .irq_mask = MASK_10, 742 .irq_mask = MASK_10,
743 .irq_func = ttpci_budget_irq10_handler, 743 .irq_func = ttpci_budget_irq10_handler,
744}; 744};
745 745
746module_init(budget_patch_init); 746module_init(budget_patch_init);
@@ -749,4 +749,4 @@ module_exit(budget_patch_exit);
749MODULE_LICENSE("GPL"); 749MODULE_LICENSE("GPL");
750MODULE_AUTHOR("Emard, Roberto Deza, Holger Waechtler, Michael Hunold, others"); 750MODULE_AUTHOR("Emard, Roberto Deza, Holger Waechtler, Michael Hunold, others");
751MODULE_DESCRIPTION("Driver for full TS modified DVB-S SAA7146+AV7110 " 751MODULE_DESCRIPTION("Driver for full TS modified DVB-S SAA7146+AV7110 "
752 "based so-called Budget Patch cards"); 752 "based so-called Budget Patch cards");
diff --git a/drivers/media/dvb/ttpci/budget.c b/drivers/media/dvb/ttpci/budget.c
index bc4ce7559cbe..fafe6407b3d0 100644
--- a/drivers/media/dvb/ttpci/budget.c
+++ b/drivers/media/dvb/ttpci/budget.c
@@ -256,7 +256,7 @@ static int alps_bsrv2_pll_set(struct dvb_frontend* fe, struct dvb_frontend_param
256 buf[2] = ((div & 0x18000) >> 10) | 0x95; 256 buf[2] = ((div & 0x18000) >> 10) | 0x95;
257 buf[3] = (pwr << 6) | 0x30; 257 buf[3] = (pwr << 6) | 0x30;
258 258
259 // NOTE: since we're using a prescaler of 2, we set the 259 // NOTE: since we're using a prescaler of 2, we set the
260 // divisor frequency to 62.5kHz and divide by 125 above 260 // divisor frequency to 62.5kHz and divide by 125 above
261 261
262 if (i2c_transfer (&budget->i2c_adap, &msg, 1) != 1) return -EIO; 262 if (i2c_transfer (&budget->i2c_adap, &msg, 1) != 1) return -EIO;
@@ -565,7 +565,7 @@ static u8 read_pwm(struct budget* budget)
565 struct i2c_msg msg[] = { { .addr = 0x50,.flags = 0,.buf = &b,.len = 1 }, 565 struct i2c_msg msg[] = { { .addr = 0x50,.flags = 0,.buf = &b,.len = 1 },
566 { .addr = 0x50,.flags = I2C_M_RD,.buf = &pwm,.len = 1} }; 566 { .addr = 0x50,.flags = I2C_M_RD,.buf = &pwm,.len = 1} };
567 567
568 if ((i2c_transfer(&budget->i2c_adap, msg, 2) != 2) || (pwm == 0xff)) 568 if ((i2c_transfer(&budget->i2c_adap, msg, 2) != 2) || (pwm == 0xff))
569 pwm = 0x48; 569 pwm = 0x48;
570 570
571 return pwm; 571 return pwm;
@@ -593,7 +593,7 @@ static void frontend_init(struct budget *budget)
593 budget->dvb_frontend = ves1x93_attach(&alps_bsrv2_config, &budget->i2c_adap); 593 budget->dvb_frontend = ves1x93_attach(&alps_bsrv2_config, &budget->i2c_adap);
594 if (budget->dvb_frontend) { 594 if (budget->dvb_frontend) {
595 budget->dvb_frontend->ops->diseqc_send_master_cmd = budget_diseqc_send_master_cmd; 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; 596 budget->dvb_frontend->ops->diseqc_send_burst = budget_diseqc_send_burst;
597 budget->dvb_frontend->ops->set_tone = budget_set_tone; 597 budget->dvb_frontend->ops->set_tone = budget_set_tone;
598 break; 598 break;
599 } 599 }
diff --git a/drivers/media/dvb/ttpci/budget.h b/drivers/media/dvb/ttpci/budget.h
index c6ef496ba70a..fdaa3318ad3a 100644
--- a/drivers/media/dvb/ttpci/budget.h
+++ b/drivers/media/dvb/ttpci/budget.h
@@ -19,7 +19,7 @@ extern int budget_debug;
19#endif 19#endif
20 20
21#define dprintk(level,args...) \ 21#define dprintk(level,args...) \
22 do { if ((budget_debug & level)) { printk("%s: %s(): ",__stringify(KBUILD_MODNAME), __FUNCTION__); printk(args); } } while (0) 22 do { if ((budget_debug & level)) { printk("%s: %s(): ",__stringify(KBUILD_MODNAME), __FUNCTION__); printk(args); } } while (0)
23 23
24struct budget_info { 24struct budget_info {
25 char *name; 25 char *name;
diff --git a/drivers/media/dvb/ttpci/fdump.c b/drivers/media/dvb/ttpci/fdump.c
index 0b478db3e744..c90001d35e7d 100644
--- a/drivers/media/dvb/ttpci/fdump.c
+++ b/drivers/media/dvb/ttpci/fdump.c
@@ -36,7 +36,7 @@ int main(int argc, char **argv)
36 } 36 }
37 37
38 fprintf(fd_out, "\n};\n\n"); 38 fprintf(fd_out, "\n};\n\n");
39 39
40 fclose(fd_in); 40 fclose(fd_in);
41 fclose(fd_out); 41 fclose(fd_out);
42 42
diff --git a/drivers/media/dvb/ttpci/ttpci-eeprom.c b/drivers/media/dvb/ttpci/ttpci-eeprom.c
index ac79ef178c05..18aa22b5478d 100644
--- a/drivers/media/dvb/ttpci/ttpci-eeprom.c
+++ b/drivers/media/dvb/ttpci/ttpci-eeprom.c
@@ -13,7 +13,7 @@
13 Holger Waechtler Convergence 13 Holger Waechtler Convergence
14 14
15 Copyright (C) 2002-2003 Ralph Metzler <rjkm@metzlerbros.de> 15 Copyright (C) 2002-2003 Ralph Metzler <rjkm@metzlerbros.de>
16 Metzler Brothers Systementwicklung GbR 16 Metzler Brothers Systementwicklung GbR
17 17
18 This program is free software; you can redistribute it and/or modify 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 19 it under the terms of the GNU General Public License as published by
@@ -48,41 +48,41 @@
48 48
49static int check_mac_tt(u8 *buf) 49static int check_mac_tt(u8 *buf)
50{ 50{
51 int i; 51 int i;
52 u16 tmp = 0xffff; 52 u16 tmp = 0xffff;
53 53
54 for (i = 0; i < 8; i++) { 54 for (i = 0; i < 8; i++) {
55 tmp = (tmp << 8) | ((tmp >> 8) ^ buf[i]); 55 tmp = (tmp << 8) | ((tmp >> 8) ^ buf[i]);
56 tmp ^= (tmp >> 4) & 0x0f; 56 tmp ^= (tmp >> 4) & 0x0f;
57 tmp ^= (tmp << 12) ^ ((tmp & 0xff) << 5); 57 tmp ^= (tmp << 12) ^ ((tmp & 0xff) << 5);
58 } 58 }
59 tmp ^= 0xffff; 59 tmp ^= 0xffff;
60 return (((tmp >> 8) ^ buf[8]) | ((tmp & 0xff) ^ buf[9])); 60 return (((tmp >> 8) ^ buf[8]) | ((tmp & 0xff) ^ buf[9]));
61} 61}
62 62
63static int getmac_tt(u8 * decodedMAC, u8 * encodedMAC) 63static int getmac_tt(u8 * decodedMAC, u8 * encodedMAC)
64{ 64{
65 u8 xor[20] = { 0x72, 0x23, 0x68, 0x19, 0x5c, 0xa8, 0x71, 0x2c, 65 u8 xor[20] = { 0x72, 0x23, 0x68, 0x19, 0x5c, 0xa8, 0x71, 0x2c,
66 0x54, 0xd3, 0x7b, 0xf1, 0x9E, 0x23, 0x16, 0xf6, 66 0x54, 0xd3, 0x7b, 0xf1, 0x9E, 0x23, 0x16, 0xf6,
67 0x1d, 0x36, 0x64, 0x78}; 67 0x1d, 0x36, 0x64, 0x78};
68 u8 data[20]; 68 u8 data[20];
69 int i; 69 int i;
70 70
71 /* In case there is a sig check failure have the orig contents available */ 71 /* In case there is a sig check failure have the orig contents available */
72 memcpy(data, encodedMAC, 20); 72 memcpy(data, encodedMAC, 20);
73 73
74 for (i = 0; i < 20; i++) 74 for (i = 0; i < 20; i++)
75 data[i] ^= xor[i]; 75 data[i] ^= xor[i];
76 for (i = 0; i < 10; i++) 76 for (i = 0; i < 10; i++)
77 data[i] = ((data[2 * i + 1] << 8) | data[2 * i]) 77 data[i] = ((data[2 * i + 1] << 8) | data[2 * i])
78 >> ((data[2 * i + 1] >> 6) & 3); 78 >> ((data[2 * i + 1] >> 6) & 3);
79 79
80 if (check_mac_tt(data)) 80 if (check_mac_tt(data))
81 return -ENODEV; 81 return -ENODEV;
82 82
83 decodedMAC[0] = data[2]; decodedMAC[1] = data[1]; decodedMAC[2] = data[0]; 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]; 84 decodedMAC[3] = data[6]; decodedMAC[4] = data[5]; decodedMAC[5] = data[4];
85 return 0; 85 return 0;
86} 86}
87 87
88static int ttpci_eeprom_read_encodedMAC(struct i2c_adapter *adapter, u8 * encodedMAC) 88static int ttpci_eeprom_read_encodedMAC(struct i2c_adapter *adapter, u8 * encodedMAC)
diff --git a/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c b/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
index fd53d6010502..104df610dbe1 100644
--- a/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
+++ b/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
@@ -225,8 +225,8 @@ static int ttusb_i2c_msg(struct ttusb *ttusb,
225 225
226 err = ttusb_result(ttusb, b, 0x20); 226 err = ttusb_result(ttusb, b, 0x20);
227 227
228 /* check if the i2c transaction was successful */ 228 /* check if the i2c transaction was successful */
229 if ((snd_len != b[5]) || (rcv_len != b[6])) return -EREMOTEIO; 229 if ((snd_len != b[5]) || (rcv_len != b[6])) return -EREMOTEIO;
230 230
231 if (rcv_len > 0) { 231 if (rcv_len > 0) {
232 232
@@ -489,27 +489,27 @@ static int ttusb_send_diseqc(struct dvb_frontend* fe,
489 489
490static int lnbp21_set_voltage(struct dvb_frontend* fe, fe_sec_voltage_t voltage) 490static int lnbp21_set_voltage(struct dvb_frontend* fe, fe_sec_voltage_t voltage)
491{ 491{
492 struct ttusb* ttusb = (struct ttusb*) fe->dvb->priv; 492 struct ttusb* ttusb = (struct ttusb*) fe->dvb->priv;
493 int ret; 493 int ret;
494 u8 data[1]; 494 u8 data[1];
495 struct i2c_msg msg = { .addr = 0x08, .flags = 0, .buf = data, .len = sizeof(data) }; 495 struct i2c_msg msg = { .addr = 0x08, .flags = 0, .buf = data, .len = sizeof(data) };
496 496
497 switch(voltage) { 497 switch(voltage) {
498 case SEC_VOLTAGE_OFF: 498 case SEC_VOLTAGE_OFF:
499 data[0] = 0x00; 499 data[0] = 0x00;
500 break; 500 break;
501 case SEC_VOLTAGE_13: 501 case SEC_VOLTAGE_13:
502 data[0] = 0x44; 502 data[0] = 0x44;
503 break; 503 break;
504 case SEC_VOLTAGE_18: 504 case SEC_VOLTAGE_18:
505 data[0] = 0x4c; 505 data[0] = 0x4c;
506 break; 506 break;
507 default: 507 default:
508 return -EINVAL; 508 return -EINVAL;
509 }; 509 };
510 510
511 ret = i2c_transfer(&ttusb->i2c_adap, &msg, 1); 511 ret = i2c_transfer(&ttusb->i2c_adap, &msg, 1);
512 return (ret != 1) ? -EIO : 0; 512 return (ret != 1) ? -EIO : 0;
513} 513}
514 514
515static int ttusb_update_lnb(struct ttusb *ttusb) 515static int ttusb_update_lnb(struct ttusb *ttusb)
@@ -1184,45 +1184,45 @@ static struct tda1004x_config philips_tdm1316l_config = {
1184}; 1184};
1185 1185
1186static u8 alps_bsbe1_inittab[] = { 1186static u8 alps_bsbe1_inittab[] = {
1187 0x01, 0x15, 1187 0x01, 0x15,
1188 0x02, 0x30, 1188 0x02, 0x30,
1189 0x03, 0x00, 1189 0x03, 0x00,
1190 0x04, 0x7d, /* F22FR = 0x7d, F22 = f_VCO / 128 / 0x7d = 22 kHz */ 1190 0x04, 0x7d, /* F22FR = 0x7d, F22 = f_VCO / 128 / 0x7d = 22 kHz */
1191 0x05, 0x35, /* I2CT = 0, SCLT = 1, SDAT = 1 */ 1191 0x05, 0x35, /* I2CT = 0, SCLT = 1, SDAT = 1 */
1192 0x06, 0x40, /* DAC not used, set to high impendance mode */ 1192 0x06, 0x40, /* DAC not used, set to high impendance mode */
1193 0x07, 0x00, /* DAC LSB */ 1193 0x07, 0x00, /* DAC LSB */
1194 0x08, 0x40, /* DiSEqC off, LNB power on OP2/LOCK pin on */ 1194 0x08, 0x40, /* DiSEqC off, LNB power on OP2/LOCK pin on */
1195 0x09, 0x00, /* FIFO */ 1195 0x09, 0x00, /* FIFO */
1196 0x0c, 0x51, /* OP1 ctl = Normal, OP1 val = 1 (LNB Power ON) */ 1196 0x0c, 0x51, /* OP1 ctl = Normal, OP1 val = 1 (LNB Power ON) */
1197 0x0d, 0x82, /* DC offset compensation = ON, beta_agc1 = 2 */ 1197 0x0d, 0x82, /* DC offset compensation = ON, beta_agc1 = 2 */
1198 0x0e, 0x23, /* alpha_tmg = 2, beta_tmg = 3 */ 1198 0x0e, 0x23, /* alpha_tmg = 2, beta_tmg = 3 */
1199 0x10, 0x3f, // AGC2 0x3d 1199 0x10, 0x3f, // AGC2 0x3d
1200 0x11, 0x84, 1200 0x11, 0x84,
1201 0x12, 0xb9, 1201 0x12, 0xb9,
1202 0x15, 0xc9, // lock detector threshold 1202 0x15, 0xc9, // lock detector threshold
1203 0x16, 0x00, 1203 0x16, 0x00,
1204 0x17, 0x00, 1204 0x17, 0x00,
1205 0x18, 0x00, 1205 0x18, 0x00,
1206 0x19, 0x00, 1206 0x19, 0x00,
1207 0x1a, 0x00, 1207 0x1a, 0x00,
1208 0x1f, 0x50, 1208 0x1f, 0x50,
1209 0x20, 0x00, 1209 0x20, 0x00,
1210 0x21, 0x00, 1210 0x21, 0x00,
1211 0x22, 0x00, 1211 0x22, 0x00,
1212 0x23, 0x00, 1212 0x23, 0x00,
1213 0x28, 0x00, // out imp: normal out type: parallel FEC mode:0 1213 0x28, 0x00, // out imp: normal out type: parallel FEC mode:0
1214 0x29, 0x1e, // 1/2 threshold 1214 0x29, 0x1e, // 1/2 threshold
1215 0x2a, 0x14, // 2/3 threshold 1215 0x2a, 0x14, // 2/3 threshold
1216 0x2b, 0x0f, // 3/4 threshold 1216 0x2b, 0x0f, // 3/4 threshold
1217 0x2c, 0x09, // 5/6 threshold 1217 0x2c, 0x09, // 5/6 threshold
1218 0x2d, 0x05, // 7/8 threshold 1218 0x2d, 0x05, // 7/8 threshold
1219 0x2e, 0x01, 1219 0x2e, 0x01,
1220 0x31, 0x1f, // test all FECs 1220 0x31, 0x1f, // test all FECs
1221 0x32, 0x19, // viterbi and synchro search 1221 0x32, 0x19, // viterbi and synchro search
1222 0x33, 0xfc, // rs control 1222 0x33, 0xfc, // rs control
1223 0x34, 0x93, // error control 1223 0x34, 0x93, // error control
1224 0x0f, 0x92, 1224 0x0f, 0x92,
1225 0xff, 0xff 1225 0xff, 0xff
1226}; 1226};
1227 1227
1228static u8 alps_bsru6_inittab[] = { 1228static u8 alps_bsru6_inittab[] = {
@@ -1350,7 +1350,7 @@ static int ttusb_novas_grundig_29504_491_pll_set(struct dvb_frontend *fe, struct
1350 u32 div; 1350 u32 div;
1351 struct i2c_msg msg = {.addr = 0x61,.flags = 0,.buf = buf,.len = sizeof(buf) }; 1351 struct i2c_msg msg = {.addr = 0x61,.flags = 0,.buf = buf,.len = sizeof(buf) };
1352 1352
1353 div = params->frequency / 125; 1353 div = params->frequency / 125;
1354 1354
1355 buf[0] = (div >> 8) & 0x7f; 1355 buf[0] = (div >> 8) & 0x7f;
1356 buf[1] = div & 0xff; 1356 buf[1] = div & 0xff;
@@ -1487,7 +1487,7 @@ static int ttusb_probe(struct usb_interface *intf, const struct usb_device_id *i
1487 1487
1488 udev = interface_to_usbdev(intf); 1488 udev = interface_to_usbdev(intf);
1489 1489
1490 if (intf->altsetting->desc.bInterfaceNumber != 1) return -ENODEV; 1490 if (intf->altsetting->desc.bInterfaceNumber != 1) return -ENODEV;
1491 1491
1492 if (!(ttusb = kmalloc(sizeof(struct ttusb), GFP_KERNEL))) 1492 if (!(ttusb = kmalloc(sizeof(struct ttusb), GFP_KERNEL)))
1493 return -ENOMEM; 1493 return -ENOMEM;
diff --git a/drivers/media/dvb/ttusb-budget/dvb-ttusb-dspbootcode.h b/drivers/media/dvb/ttusb-budget/dvb-ttusb-dspbootcode.h
index 95ee7995455e..8c3cd545e8f4 100644
--- a/drivers/media/dvb/ttusb-budget/dvb-ttusb-dspbootcode.h
+++ b/drivers/media/dvb/ttusb-budget/dvb-ttusb-dspbootcode.h
@@ -2,1643 +2,1643 @@
2#include <asm/types.h> 2#include <asm/types.h>
3 3
4static u8 dsp_bootcode [] = { 4static u8 dsp_bootcode [] = {
5 0x08, 0xaa, 0x00, 0x18, 0x00, 0x03, 0x08, 0x00, 5 0x08, 0xaa, 0x00, 0x18, 0x00, 0x03, 0x08, 0x00,
6 0x00, 0x10, 0x00, 0x00, 0x01, 0x80, 0x18, 0x5f, 6 0x00, 0x10, 0x00, 0x00, 0x01, 0x80, 0x18, 0x5f,
7 0x00, 0x00, 0x01, 0x80, 0x77, 0x18, 0x2a, 0xeb, 7 0x00, 0x00, 0x01, 0x80, 0x77, 0x18, 0x2a, 0xeb,
8 0x6b, 0xf8, 0x00, 0x18, 0x03, 0xff, 0x68, 0xf8, 8 0x6b, 0xf8, 0x00, 0x18, 0x03, 0xff, 0x68, 0xf8,
9 0x00, 0x18, 0xff, 0xfe, 0xf7, 0xb8, 0xf7, 0xbe, 9 0x00, 0x18, 0xff, 0xfe, 0xf7, 0xb8, 0xf7, 0xbe,
10 0xf6, 0xb9, 0xf4, 0xa0, 0xf6, 0xb7, 0xf6, 0xb5, 10 0xf6, 0xb9, 0xf4, 0xa0, 0xf6, 0xb7, 0xf6, 0xb5,
11 0xf6, 0xb6, 0xf0, 0x20, 0x19, 0xdf, 0xf1, 0x00, 11 0xf6, 0xb6, 0xf0, 0x20, 0x19, 0xdf, 0xf1, 0x00,
12 0x00, 0x01, 0xf8, 0x4d, 0x01, 0xab, 0xf6, 0xb8, 12 0x00, 0x01, 0xf8, 0x4d, 0x01, 0xab, 0xf6, 0xb8,
13 0xf0, 0x20, 0x19, 0xdf, 0xf0, 0x73, 0x01, 0xa5, 13 0xf0, 0x20, 0x19, 0xdf, 0xf0, 0x73, 0x01, 0xa5,
14 0x7e, 0xf8, 0x00, 0x12, 0xf0, 0x00, 0x00, 0x01, 14 0x7e, 0xf8, 0x00, 0x12, 0xf0, 0x00, 0x00, 0x01,
15 0x47, 0xf8, 0x00, 0x11, 0x7e, 0x92, 0x00, 0xf8, 15 0x47, 0xf8, 0x00, 0x11, 0x7e, 0x92, 0x00, 0xf8,
16 0x00, 0x11, 0xf0, 0x00, 0x00, 0x01, 0x7e, 0xf8, 16 0x00, 0x11, 0xf0, 0x00, 0x00, 0x01, 0x7e, 0xf8,
17 0x00, 0x11, 0xf0, 0x00, 0x00, 0x01, 0x6c, 0x89, 17 0x00, 0x11, 0xf0, 0x00, 0x00, 0x01, 0x6c, 0x89,
18 0x01, 0x9a, 0xf7, 0xb8, 0xee, 0xfc, 0xf0, 0x20, 18 0x01, 0x9a, 0xf7, 0xb8, 0xee, 0xfc, 0xf0, 0x20,
19 0xff, 0xff, 0xf1, 0x00, 0x00, 0x01, 0xf8, 0x4d, 19 0xff, 0xff, 0xf1, 0x00, 0x00, 0x01, 0xf8, 0x4d,
20 0x01, 0xbf, 0xf2, 0x73, 0x01, 0xb9, 0x4e, 0x02, 20 0x01, 0xbf, 0xf2, 0x73, 0x01, 0xb9, 0x4e, 0x02,
21 0xf4, 0x95, 0xf5, 0xe3, 0x56, 0x02, 0x7e, 0x00, 21 0xf4, 0x95, 0xf5, 0xe3, 0x56, 0x02, 0x7e, 0x00,
22 0x11, 0x00, 0xfa, 0x4c, 0x01, 0xb7, 0x6b, 0x03, 22 0x11, 0x00, 0xfa, 0x4c, 0x01, 0xb7, 0x6b, 0x03,
23 0x00, 0x01, 0xf6, 0xb8, 0xee, 0x04, 0xf0, 0x74, 23 0x00, 0x01, 0xf6, 0xb8, 0xee, 0x04, 0xf0, 0x74,
24 0x0d, 0xa7, 0xf0, 0x74, 0x01, 0xc5, 0x4a, 0x11, 24 0x0d, 0xa7, 0xf0, 0x74, 0x01, 0xc5, 0x4a, 0x11,
25 0x4a, 0x16, 0x72, 0x11, 0x2a, 0xe6, 0x10, 0xf8, 25 0x4a, 0x16, 0x72, 0x11, 0x2a, 0xe6, 0x10, 0xf8,
26 0x00, 0x11, 0xfa, 0x45, 0x01, 0xdb, 0xf4, 0x95, 26 0x00, 0x11, 0xfa, 0x45, 0x01, 0xdb, 0xf4, 0x95,
27 0xee, 0xff, 0x48, 0x11, 0xf0, 0x00, 0x2a, 0xc6, 27 0xee, 0xff, 0x48, 0x11, 0xf0, 0x00, 0x2a, 0xc6,
28 0x88, 0x16, 0xf4, 0x95, 0xf4, 0x95, 0x10, 0xee, 28 0x88, 0x16, 0xf4, 0x95, 0xf4, 0x95, 0x10, 0xee,
29 0xff, 0xff, 0xf4, 0xe3, 0x6c, 0xe9, 0xff, 0xff, 29 0xff, 0xff, 0xf4, 0xe3, 0x6c, 0xe9, 0xff, 0xff,
30 0x01, 0xd5, 0x10, 0xf8, 0x2a, 0xe7, 0xf8, 0x45, 30 0x01, 0xd5, 0x10, 0xf8, 0x2a, 0xe7, 0xf8, 0x45,
31 0x01, 0xe2, 0x10, 0xf8, 0x2a, 0xe7, 0xf4, 0xe3, 31 0x01, 0xe2, 0x10, 0xf8, 0x2a, 0xe7, 0xf4, 0xe3,
32 0xf0, 0x74, 0x01, 0xff, 0xee, 0x01, 0x8a, 0x16, 32 0xf0, 0x74, 0x01, 0xff, 0xee, 0x01, 0x8a, 0x16,
33 0x8a, 0x11, 0xfc, 0x00, 0xf7, 0xb8, 0xe9, 0x20, 33 0x8a, 0x11, 0xfc, 0x00, 0xf7, 0xb8, 0xe9, 0x20,
34 0x4a, 0x11, 0x09, 0xf8, 0x2a, 0xe6, 0xf8, 0x4e, 34 0x4a, 0x11, 0x09, 0xf8, 0x2a, 0xe6, 0xf8, 0x4e,
35 0x01, 0xf3, 0xf2, 0x73, 0x01, 0xfd, 0xf4, 0x95, 35 0x01, 0xf3, 0xf2, 0x73, 0x01, 0xfd, 0xf4, 0x95,
36 0xe8, 0x01, 0x72, 0x11, 0x2a, 0xe6, 0x49, 0x11, 36 0xe8, 0x01, 0x72, 0x11, 0x2a, 0xe6, 0x49, 0x11,
37 0x80, 0xe1, 0x2a, 0xc6, 0xf3, 0x00, 0x00, 0x01, 37 0x80, 0xe1, 0x2a, 0xc6, 0xf3, 0x00, 0x00, 0x01,
38 0xe8, 0x00, 0x81, 0xf8, 0x2a, 0xe6, 0x8a, 0x11, 38 0xe8, 0x00, 0x81, 0xf8, 0x2a, 0xe6, 0x8a, 0x11,
39 0xfc, 0x00, 0xf4, 0x95, 0xf0, 0x73, 0x02, 0x00, 39 0xfc, 0x00, 0xf4, 0x95, 0xf0, 0x73, 0x02, 0x00,
40 0x10, 0xf8, 0x2a, 0x0f, 0xfc, 0x00, 0x4a, 0x11, 40 0x10, 0xf8, 0x2a, 0x0f, 0xfc, 0x00, 0x4a, 0x11,
41 0xf0, 0x74, 0x02, 0x02, 0x80, 0xf8, 0x2a, 0x10, 41 0xf0, 0x74, 0x02, 0x02, 0x80, 0xf8, 0x2a, 0x10,
42 0x73, 0x08, 0x00, 0x09, 0x40, 0xf8, 0x2a, 0x15, 42 0x73, 0x08, 0x00, 0x09, 0x40, 0xf8, 0x2a, 0x15,
43 0x82, 0xf8, 0x00, 0x11, 0xf4, 0x95, 0x77, 0x10, 43 0x82, 0xf8, 0x00, 0x11, 0xf4, 0x95, 0x77, 0x10,
44 0x03, 0xe8, 0xf5, 0xa9, 0xf8, 0x30, 0x02, 0x21, 44 0x03, 0xe8, 0xf5, 0xa9, 0xf8, 0x30, 0x02, 0x21,
45 0x71, 0xf8, 0x2a, 0x10, 0x2a, 0x15, 0x56, 0xf8, 45 0x71, 0xf8, 0x2a, 0x10, 0x2a, 0x15, 0x56, 0xf8,
46 0x2a, 0x0c, 0xf0, 0xe3, 0x4e, 0xf8, 0x2a, 0x16, 46 0x2a, 0x0c, 0xf0, 0xe3, 0x4e, 0xf8, 0x2a, 0x16,
47 0xe8, 0x00, 0x4e, 0xf8, 0x2a, 0x0c, 0x8a, 0x11, 47 0xe8, 0x00, 0x4e, 0xf8, 0x2a, 0x0c, 0x8a, 0x11,
48 0xfc, 0x00, 0x4a, 0x06, 0x4a, 0x07, 0x4a, 0x1d, 48 0xfc, 0x00, 0x4a, 0x06, 0x4a, 0x07, 0x4a, 0x1d,
49 0x68, 0xf8, 0x00, 0x07, 0x7d, 0x3f, 0x69, 0xf8, 49 0x68, 0xf8, 0x00, 0x07, 0x7d, 0x3f, 0x69, 0xf8,
50 0x00, 0x07, 0x40, 0x00, 0x68, 0xf8, 0x00, 0x1d, 50 0x00, 0x07, 0x40, 0x00, 0x68, 0xf8, 0x00, 0x1d,
51 0xff, 0xfc, 0x6b, 0xf8, 0x2a, 0x0f, 0x00, 0x01, 51 0xff, 0xfc, 0x6b, 0xf8, 0x2a, 0x0f, 0x00, 0x01,
52 0x8a, 0x1d, 0x8a, 0x07, 0x8a, 0x06, 0xf4, 0xeb, 52 0x8a, 0x1d, 0x8a, 0x07, 0x8a, 0x06, 0xf4, 0xeb,
53 0xee, 0xfd, 0x76, 0xf8, 0x2a, 0x0f, 0x00, 0x00, 53 0xee, 0xfd, 0x76, 0xf8, 0x2a, 0x0f, 0x00, 0x00,
54 0x76, 0x00, 0x00, 0x00, 0xfb, 0x80, 0x19, 0x4c, 54 0x76, 0x00, 0x00, 0x00, 0xfb, 0x80, 0x19, 0x4c,
55 0xf4, 0x95, 0xe8, 0x00, 0x80, 0xf8, 0x2a, 0x11, 55 0xf4, 0x95, 0xe8, 0x00, 0x80, 0xf8, 0x2a, 0x11,
56 0xf9, 0x80, 0x19, 0x07, 0x80, 0xf8, 0x2a, 0x0e, 56 0xf9, 0x80, 0x19, 0x07, 0x80, 0xf8, 0x2a, 0x0e,
57 0xf9, 0x80, 0x16, 0x66, 0x76, 0x00, 0x2a, 0x12, 57 0xf9, 0x80, 0x16, 0x66, 0x76, 0x00, 0x2a, 0x12,
58 0x10, 0xf8, 0x2a, 0x11, 0xf9, 0x80, 0x18, 0xe3, 58 0x10, 0xf8, 0x2a, 0x11, 0xf9, 0x80, 0x18, 0xe3,
59 0x10, 0xf8, 0x2a, 0x0e, 0xf9, 0x80, 0x16, 0x66, 59 0x10, 0xf8, 0x2a, 0x0e, 0xf9, 0x80, 0x16, 0x66,
60 0x10, 0xf8, 0x2a, 0x0e, 0xf9, 0x80, 0x16, 0x87, 60 0x10, 0xf8, 0x2a, 0x0e, 0xf9, 0x80, 0x16, 0x87,
61 0xee, 0x03, 0xfc, 0x00, 0x4a, 0x11, 0xf6, 0xb8, 61 0xee, 0x03, 0xfc, 0x00, 0x4a, 0x11, 0xf6, 0xb8,
62 0xf4, 0x95, 0xf0, 0x20, 0x80, 0x00, 0x11, 0xf8, 62 0xf4, 0x95, 0xf0, 0x20, 0x80, 0x00, 0x11, 0xf8,
63 0x2a, 0x5a, 0xf8, 0x4d, 0x02, 0x93, 0x11, 0xf8, 63 0x2a, 0x5a, 0xf8, 0x4d, 0x02, 0x93, 0x11, 0xf8,
64 0x2a, 0x9f, 0xf8, 0x4c, 0x02, 0x7c, 0x77, 0x12, 64 0x2a, 0x9f, 0xf8, 0x4c, 0x02, 0x7c, 0x77, 0x12,
65 0x2a, 0x39, 0x49, 0x12, 0x01, 0xf8, 0x2a, 0x9f, 65 0x2a, 0x39, 0x49, 0x12, 0x01, 0xf8, 0x2a, 0x9f,
66 0x89, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x71, 0x81, 66 0x89, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x71, 0x81,
67 0x00, 0x11, 0x6c, 0xe1, 0xff, 0xab, 0x02, 0x93, 67 0x00, 0x11, 0x6c, 0xe1, 0xff, 0xab, 0x02, 0x93,
68 0x6b, 0xf8, 0x2a, 0x9f, 0x00, 0x01, 0xe9, 0x05, 68 0x6b, 0xf8, 0x2a, 0x9f, 0x00, 0x01, 0xe9, 0x05,
69 0x01, 0xe2, 0x00, 0x03, 0x81, 0xf8, 0x2a, 0xa0, 69 0x01, 0xe2, 0x00, 0x03, 0x81, 0xf8, 0x2a, 0xa0,
70 0xf0, 0x73, 0x02, 0x95, 0x72, 0x11, 0x2a, 0x9f, 70 0xf0, 0x73, 0x02, 0x95, 0x72, 0x11, 0x2a, 0x9f,
71 0xf4, 0x95, 0x10, 0xe1, 0x2a, 0x39, 0x6b, 0xf8, 71 0xf4, 0x95, 0x10, 0xe1, 0x2a, 0x39, 0x6b, 0xf8,
72 0x2a, 0x9f, 0x00, 0x01, 0x11, 0xf8, 0x2a, 0x9f, 72 0x2a, 0x9f, 0x00, 0x01, 0x11, 0xf8, 0x2a, 0x9f,
73 0x09, 0xf8, 0x2a, 0xa0, 0xf8, 0x4c, 0x02, 0x93, 73 0x09, 0xf8, 0x2a, 0xa0, 0xf8, 0x4c, 0x02, 0x93,
74 0x76, 0xf8, 0x2a, 0x5a, 0x00, 0x00, 0x76, 0xf8, 74 0x76, 0xf8, 0x2a, 0x5a, 0x00, 0x00, 0x76, 0xf8,
75 0x2a, 0x9f, 0x00, 0x00, 0x76, 0xf8, 0x2a, 0xa0, 75 0x2a, 0x9f, 0x00, 0x00, 0x76, 0xf8, 0x2a, 0xa0,
76 0x00, 0x00, 0x88, 0x11, 0xf4, 0x95, 0x48, 0x11, 76 0x00, 0x00, 0x88, 0x11, 0xf4, 0x95, 0x48, 0x11,
77 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfe, 77 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfe,
78 0x10, 0xf8, 0x2a, 0x5a, 0xf8, 0x44, 0x02, 0xb2, 78 0x10, 0xf8, 0x2a, 0x5a, 0xf8, 0x44, 0x02, 0xb2,
79 0x76, 0xf8, 0x2a, 0x5a, 0x00, 0x01, 0xf0, 0x74, 79 0x76, 0xf8, 0x2a, 0x5a, 0x00, 0x01, 0xf0, 0x74,
80 0x02, 0x58, 0x88, 0x11, 0xf4, 0x95, 0x77, 0x10, 80 0x02, 0x58, 0x88, 0x11, 0xf4, 0x95, 0x77, 0x10,
81 0x80, 0x00, 0xf4, 0xa9, 0xf8, 0x30, 0x02, 0xb2, 81 0x80, 0x00, 0xf4, 0xa9, 0xf8, 0x30, 0x02, 0xb2,
82 0x48, 0x11, 0xf0, 0x30, 0x00, 0xff, 0x80, 0x00, 82 0x48, 0x11, 0xf0, 0x30, 0x00, 0xff, 0x80, 0x00,
83 0x10, 0xf8, 0x2a, 0x5b, 0xf9, 0x80, 0x18, 0xd6, 83 0x10, 0xf8, 0x2a, 0x5b, 0xf9, 0x80, 0x18, 0xd6,
84 0xee, 0x02, 0x8a, 0x11, 0xfc, 0x00, 0xf4, 0x95, 84 0xee, 0x02, 0x8a, 0x11, 0xfc, 0x00, 0xf4, 0x95,
85 0x4a, 0x08, 0x4a, 0x09, 0x4a, 0x0a, 0x4a, 0x0b, 85 0x4a, 0x08, 0x4a, 0x09, 0x4a, 0x0a, 0x4a, 0x0b,
86 0x4a, 0x0c, 0x4a, 0x0d, 0x4a, 0x10, 0x4a, 0x11, 86 0x4a, 0x0c, 0x4a, 0x0d, 0x4a, 0x10, 0x4a, 0x11,
87 0x4a, 0x12, 0x4a, 0x13, 0x4a, 0x14, 0x4a, 0x15, 87 0x4a, 0x12, 0x4a, 0x13, 0x4a, 0x14, 0x4a, 0x15,
88 0x4a, 0x16, 0x4a, 0x17, 0x4a, 0x17, 0x4a, 0x19, 88 0x4a, 0x16, 0x4a, 0x17, 0x4a, 0x17, 0x4a, 0x19,
89 0x4a, 0x0e, 0x4a, 0x06, 0x4a, 0x07, 0x4a, 0x1a, 89 0x4a, 0x0e, 0x4a, 0x06, 0x4a, 0x07, 0x4a, 0x1a,
90 0x4a, 0x1d, 0x4a, 0x1b, 0x4a, 0x1c, 0x68, 0xf8, 90 0x4a, 0x1d, 0x4a, 0x1b, 0x4a, 0x1c, 0x68, 0xf8,
91 0x00, 0x07, 0x7d, 0x3f, 0x69, 0xf8, 0x00, 0x07, 91 0x00, 0x07, 0x7d, 0x3f, 0x69, 0xf8, 0x00, 0x07,
92 0x40, 0x00, 0x68, 0xf8, 0x00, 0x1d, 0xff, 0xfc, 92 0x40, 0x00, 0x68, 0xf8, 0x00, 0x1d, 0xff, 0xfc,
93 0x48, 0x18, 0x68, 0xf8, 0x00, 0x18, 0xff, 0xfe, 93 0x48, 0x18, 0x68, 0xf8, 0x00, 0x18, 0xff, 0xfe,
94 0xf4, 0x95, 0xf4, 0x95, 0x4a, 0x08, 0xee, 0xfd, 94 0xf4, 0x95, 0xf4, 0x95, 0x4a, 0x08, 0xee, 0xfd,
95 0xf0, 0x74, 0x02, 0x58, 0x88, 0x11, 0xf4, 0x95, 95 0xf0, 0x74, 0x02, 0x58, 0x88, 0x11, 0xf4, 0x95,
96 0x77, 0x10, 0x80, 0x00, 0xf4, 0xa9, 0xf8, 0x30, 96 0x77, 0x10, 0x80, 0x00, 0xf4, 0xa9, 0xf8, 0x30,
97 0x02, 0xef, 0x48, 0x11, 0xf0, 0x30, 0x00, 0xff, 97 0x02, 0xef, 0x48, 0x11, 0xf0, 0x30, 0x00, 0xff,
98 0x80, 0x00, 0x10, 0xf8, 0x2a, 0x5b, 0xf9, 0x80, 98 0x80, 0x00, 0x10, 0xf8, 0x2a, 0x5b, 0xf9, 0x80,
99 0x18, 0xd6, 0xee, 0x03, 0x8a, 0x18, 0xf4, 0x95, 99 0x18, 0xd6, 0xee, 0x03, 0x8a, 0x18, 0xf4, 0x95,
100 0x8a, 0x1c, 0x8a, 0x1b, 0x8a, 0x1d, 0x8a, 0x1a, 100 0x8a, 0x1c, 0x8a, 0x1b, 0x8a, 0x1d, 0x8a, 0x1a,
101 0x8a, 0x07, 0x8a, 0x06, 0x8a, 0x0e, 0x8a, 0x19, 101 0x8a, 0x07, 0x8a, 0x06, 0x8a, 0x0e, 0x8a, 0x19,
102 0x8a, 0x17, 0x8a, 0x17, 0x8a, 0x16, 0x8a, 0x15, 102 0x8a, 0x17, 0x8a, 0x17, 0x8a, 0x16, 0x8a, 0x15,
103 0x8a, 0x14, 0x8a, 0x13, 0x8a, 0x12, 0x8a, 0x11, 103 0x8a, 0x14, 0x8a, 0x13, 0x8a, 0x12, 0x8a, 0x11,
104 0x8a, 0x10, 0x8a, 0x0d, 0x8a, 0x0c, 0x8a, 0x0b, 104 0x8a, 0x10, 0x8a, 0x0d, 0x8a, 0x0c, 0x8a, 0x0b,
105 0x8a, 0x0a, 0x8a, 0x09, 0x8a, 0x08, 0xf4, 0xeb, 105 0x8a, 0x0a, 0x8a, 0x09, 0x8a, 0x08, 0xf4, 0xeb,
106 0x4a, 0x11, 0x77, 0x11, 0x2a, 0x39, 0x76, 0x81, 106 0x4a, 0x11, 0x77, 0x11, 0x2a, 0x39, 0x76, 0x81,
107 0x00, 0x55, 0x77, 0x12, 0x2a, 0x18, 0x10, 0xe2, 107 0x00, 0x55, 0x77, 0x12, 0x2a, 0x18, 0x10, 0xe2,
108 0x00, 0x01, 0x80, 0xe1, 0x00, 0x01, 0x10, 0xe2, 108 0x00, 0x01, 0x80, 0xe1, 0x00, 0x01, 0x10, 0xe2,
109 0x00, 0x02, 0x80, 0xe1, 0x00, 0x02, 0x76, 0xe1, 109 0x00, 0x02, 0x80, 0xe1, 0x00, 0x02, 0x76, 0xe1,
110 0x00, 0x03, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x04, 110 0x00, 0x03, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x04,
111 0x00, 0xaa, 0xf0, 0x74, 0x02, 0x98, 0x8a, 0x11, 111 0x00, 0xaa, 0xf0, 0x74, 0x02, 0x98, 0x8a, 0x11,
112 0xfc, 0x00, 0x4a, 0x11, 0x88, 0x11, 0xf4, 0x95, 112 0xfc, 0x00, 0x4a, 0x11, 0x88, 0x11, 0xf4, 0x95,
113 0xf4, 0x95, 0x10, 0x81, 0x6f, 0xf8, 0x2a, 0x9e, 113 0xf4, 0x95, 0x10, 0x81, 0x6f, 0xf8, 0x2a, 0x9e,
114 0x0c, 0x88, 0xe8, 0xff, 0x18, 0xe1, 0x00, 0x01, 114 0x0c, 0x88, 0xe8, 0xff, 0x18, 0xe1, 0x00, 0x01,
115 0x1a, 0xf8, 0x2a, 0x9e, 0xf0, 0x30, 0x1f, 0xff, 115 0x1a, 0xf8, 0x2a, 0x9e, 0xf0, 0x30, 0x1f, 0xff,
116 0x80, 0xf8, 0x2a, 0x9e, 0x8a, 0x11, 0xfc, 0x00, 116 0x80, 0xf8, 0x2a, 0x9e, 0x8a, 0x11, 0xfc, 0x00,
117 0x4a, 0x11, 0x77, 0x11, 0x2a, 0x39, 0x76, 0x81, 117 0x4a, 0x11, 0x77, 0x11, 0x2a, 0x39, 0x76, 0x81,
118 0x00, 0x55, 0x77, 0x12, 0x2a, 0x18, 0x11, 0xe2, 118 0x00, 0x55, 0x77, 0x12, 0x2a, 0x18, 0x11, 0xe2,
119 0x00, 0x01, 0x81, 0xe1, 0x00, 0x01, 0x11, 0xe2, 119 0x00, 0x01, 0x81, 0xe1, 0x00, 0x01, 0x11, 0xe2,
120 0x00, 0x02, 0x81, 0xe1, 0x00, 0x02, 0x76, 0xe1, 120 0x00, 0x02, 0x81, 0xe1, 0x00, 0x02, 0x76, 0xe1,
121 0x00, 0x03, 0x00, 0x02, 0x48, 0x08, 0x6f, 0xe1, 121 0x00, 0x03, 0x00, 0x02, 0x48, 0x08, 0x6f, 0xe1,
122 0x00, 0x04, 0x0c, 0x98, 0xf0, 0x30, 0x00, 0xff, 122 0x00, 0x04, 0x0c, 0x98, 0xf0, 0x30, 0x00, 0xff,
123 0x80, 0xe1, 0x00, 0x05, 0x76, 0xe1, 0x00, 0x06, 123 0x80, 0xe1, 0x00, 0x05, 0x76, 0xe1, 0x00, 0x06,
124 0x00, 0xaa, 0xf0, 0x74, 0x02, 0x98, 0x8a, 0x11, 124 0x00, 0xaa, 0xf0, 0x74, 0x02, 0x98, 0x8a, 0x11,
125 0xfc, 0x00, 0x4a, 0x11, 0x77, 0x11, 0x2a, 0x39, 125 0xfc, 0x00, 0x4a, 0x11, 0x77, 0x11, 0x2a, 0x39,
126 0x76, 0x81, 0x00, 0x55, 0x77, 0x12, 0x2a, 0x18, 126 0x76, 0x81, 0x00, 0x55, 0x77, 0x12, 0x2a, 0x18,
127 0x10, 0xe2, 0x00, 0x01, 0x80, 0xe1, 0x00, 0x01, 127 0x10, 0xe2, 0x00, 0x01, 0x80, 0xe1, 0x00, 0x01,
128 0x10, 0xe2, 0x00, 0x02, 0x80, 0xe1, 0x00, 0x02, 128 0x10, 0xe2, 0x00, 0x02, 0x80, 0xe1, 0x00, 0x02,
129 0x76, 0xe1, 0x00, 0x03, 0x00, 0x04, 0x48, 0x11, 129 0x76, 0xe1, 0x00, 0x03, 0x00, 0x04, 0x48, 0x11,
130 0xf0, 0x00, 0x00, 0x04, 0x88, 0x12, 0xf4, 0x95, 130 0xf0, 0x00, 0x00, 0x04, 0x88, 0x12, 0xf4, 0x95,
131 0x77, 0x13, 0x2a, 0x76, 0xe9, 0x00, 0xe5, 0x98, 131 0x77, 0x13, 0x2a, 0x76, 0xe9, 0x00, 0xe5, 0x98,
132 0xf3, 0x00, 0x00, 0x01, 0xf6, 0xb8, 0x48, 0x0b, 132 0xf3, 0x00, 0x00, 0x01, 0xf6, 0xb8, 0x48, 0x0b,
133 0x08, 0xf8, 0x2a, 0x3c, 0xf8, 0x43, 0x03, 0x71, 133 0x08, 0xf8, 0x2a, 0x3c, 0xf8, 0x43, 0x03, 0x71,
134 0x76, 0x82, 0x00, 0xaa, 0xf0, 0x74, 0x02, 0x98, 134 0x76, 0x82, 0x00, 0xaa, 0xf0, 0x74, 0x02, 0x98,
135 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xf0, 135 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xf0,
136 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x71, 0x81, 136 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x71, 0x81,
137 0x00, 0x14, 0x71, 0xe1, 0x00, 0x01, 0x00, 0x15, 137 0x00, 0x14, 0x71, 0xe1, 0x00, 0x01, 0x00, 0x15,
138 0x49, 0x11, 0xf3, 0x00, 0x00, 0x02, 0x89, 0x11, 138 0x49, 0x11, 0xf3, 0x00, 0x00, 0x02, 0x89, 0x11,
139 0xe7, 0x82, 0x6d, 0xea, 0x00, 0x04, 0xe7, 0x83, 139 0xe7, 0x82, 0x6d, 0xea, 0x00, 0x04, 0xe7, 0x83,
140 0x6d, 0xeb, 0x00, 0x0a, 0x77, 0x1a, 0x00, 0x05, 140 0x6d, 0xeb, 0x00, 0x0a, 0x77, 0x1a, 0x00, 0x05,
141 0xf0, 0x72, 0x03, 0xaa, 0x11, 0x81, 0xf2, 0xe8, 141 0xf0, 0x72, 0x03, 0xaa, 0x11, 0x81, 0xf2, 0xe8,
142 0x80, 0x82, 0xe9, 0xff, 0x19, 0xe1, 0x00, 0x01, 142 0x80, 0x82, 0xe9, 0xff, 0x19, 0xe1, 0x00, 0x01,
143 0xf1, 0xa0, 0x81, 0x92, 0x11, 0xe1, 0x00, 0x0c, 143 0xf1, 0xa0, 0x81, 0x92, 0x11, 0xe1, 0x00, 0x0c,
144 0xf2, 0xe8, 0x80, 0x83, 0xe9, 0xff, 0x19, 0xe1, 144 0xf2, 0xe8, 0x80, 0x83, 0xe9, 0xff, 0x19, 0xe1,
145 0x00, 0x0d, 0xf1, 0xa0, 0x81, 0x93, 0x6d, 0xe9, 145 0x00, 0x0d, 0xf1, 0xa0, 0x81, 0x93, 0x6d, 0xe9,
146 0x00, 0x02, 0x48, 0x18, 0x49, 0x18, 0x70, 0x00, 146 0x00, 0x02, 0x48, 0x18, 0x49, 0x18, 0x70, 0x00,
147 0x00, 0x15, 0xf0, 0x00, 0x00, 0x04, 0xf3, 0x00, 147 0x00, 0x15, 0xf0, 0x00, 0x00, 0x04, 0xf3, 0x00,
148 0x00, 0x0a, 0x80, 0x01, 0x81, 0x02, 0xf2, 0x74, 148 0x00, 0x0a, 0x80, 0x01, 0x81, 0x02, 0xf2, 0x74,
149 0x0e, 0x54, 0xf4, 0x95, 0x48, 0x14, 0xee, 0x10, 149 0x0e, 0x54, 0xf4, 0x95, 0x48, 0x14, 0xee, 0x10,
150 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xf0, 0x74, 150 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xf0, 0x74,
151 0x0c, 0x5e, 0x80, 0xf8, 0x2a, 0x5c, 0x77, 0x12, 151 0x0c, 0x5e, 0x80, 0xf8, 0x2a, 0x5c, 0x77, 0x12,
152 0x2a, 0x39, 0x76, 0x82, 0x00, 0x55, 0x77, 0x11, 152 0x2a, 0x39, 0x76, 0x82, 0x00, 0x55, 0x77, 0x11,
153 0x2a, 0x18, 0x10, 0xe1, 0x00, 0x01, 0x80, 0xe2, 153 0x2a, 0x18, 0x10, 0xe1, 0x00, 0x01, 0x80, 0xe2,
154 0x00, 0x01, 0x10, 0xe1, 0x00, 0x02, 0x80, 0xe2, 154 0x00, 0x01, 0x10, 0xe1, 0x00, 0x02, 0x80, 0xe2,
155 0x00, 0x02, 0x76, 0xe2, 0x00, 0x03, 0x00, 0x1c, 155 0x00, 0x02, 0x76, 0xe2, 0x00, 0x03, 0x00, 0x1c,
156 0xf6, 0xb8, 0x56, 0xf8, 0x2a, 0x16, 0xf0, 0xf0, 156 0xf6, 0xb8, 0x56, 0xf8, 0x2a, 0x16, 0xf0, 0xf0,
157 0xf0, 0xf8, 0x80, 0xe2, 0x00, 0x07, 0x56, 0xf8, 157 0xf0, 0xf8, 0x80, 0xe2, 0x00, 0x07, 0x56, 0xf8,
158 0x2a, 0x16, 0xf1, 0xf0, 0xe8, 0xff, 0xf2, 0x80, 158 0x2a, 0x16, 0xf1, 0xf0, 0xe8, 0xff, 0xf2, 0x80,
159 0x80, 0xe2, 0x00, 0x06, 0x56, 0xf8, 0x2a, 0x16, 159 0x80, 0xe2, 0x00, 0x06, 0x56, 0xf8, 0x2a, 0x16,
160 0xf1, 0xf8, 0xe8, 0xff, 0xf2, 0x80, 0x80, 0xe2, 160 0xf1, 0xf8, 0xe8, 0xff, 0xf2, 0x80, 0x80, 0xe2,
161 0x00, 0x05, 0x57, 0xf8, 0x2a, 0x16, 0xe8, 0xff, 161 0x00, 0x05, 0x57, 0xf8, 0x2a, 0x16, 0xe8, 0xff,
162 0xf2, 0x80, 0x80, 0xe2, 0x00, 0x04, 0x56, 0xf8, 162 0xf2, 0x80, 0x80, 0xe2, 0x00, 0x04, 0x56, 0xf8,
163 0x27, 0x6c, 0xf0, 0xf0, 0xf0, 0xf8, 0x80, 0xe2, 163 0x27, 0x6c, 0xf0, 0xf0, 0xf0, 0xf8, 0x80, 0xe2,
164 0x00, 0x0b, 0x56, 0xf8, 0x27, 0x6c, 0xf1, 0xf0, 164 0x00, 0x0b, 0x56, 0xf8, 0x27, 0x6c, 0xf1, 0xf0,
165 0xe8, 0xff, 0xf2, 0x80, 0x80, 0xe2, 0x00, 0x0a, 165 0xe8, 0xff, 0xf2, 0x80, 0x80, 0xe2, 0x00, 0x0a,
166 0x56, 0xf8, 0x27, 0x6c, 0xf1, 0xf8, 0xe8, 0xff, 166 0x56, 0xf8, 0x27, 0x6c, 0xf1, 0xf8, 0xe8, 0xff,
167 0xf2, 0x80, 0x80, 0xe2, 0x00, 0x09, 0xe8, 0xff, 167 0xf2, 0x80, 0x80, 0xe2, 0x00, 0x09, 0xe8, 0xff,
168 0x57, 0xf8, 0x27, 0x6c, 0xf2, 0x80, 0x80, 0xe2, 168 0x57, 0xf8, 0x27, 0x6c, 0xf2, 0x80, 0x80, 0xe2,
169 0x00, 0x08, 0x56, 0xf8, 0x27, 0x6a, 0xf0, 0xf0, 169 0x00, 0x08, 0x56, 0xf8, 0x27, 0x6a, 0xf0, 0xf0,
170 0xf0, 0xf8, 0x80, 0xe2, 0x00, 0x0f, 0x56, 0xf8, 170 0xf0, 0xf8, 0x80, 0xe2, 0x00, 0x0f, 0x56, 0xf8,
171 0x27, 0x6a, 0xf1, 0xf0, 0xe8, 0xff, 0xf2, 0x80, 171 0x27, 0x6a, 0xf1, 0xf0, 0xe8, 0xff, 0xf2, 0x80,
172 0x80, 0xe2, 0x00, 0x0e, 0x56, 0xf8, 0x27, 0x6a, 172 0x80, 0xe2, 0x00, 0x0e, 0x56, 0xf8, 0x27, 0x6a,
173 0xf1, 0xf8, 0xe8, 0xff, 0xf2, 0x80, 0x80, 0xe2, 173 0xf1, 0xf8, 0xe8, 0xff, 0xf2, 0x80, 0x80, 0xe2,
174 0x00, 0x0d, 0x57, 0xf8, 0x27, 0x6a, 0xe8, 0xff, 174 0x00, 0x0d, 0x57, 0xf8, 0x27, 0x6a, 0xe8, 0xff,
175 0xf2, 0x80, 0x80, 0xe2, 0x00, 0x0c, 0x76, 0xe2, 175 0xf2, 0x80, 0x80, 0xe2, 0x00, 0x0c, 0x76, 0xe2,
176 0x00, 0x13, 0x00, 0x00, 0x76, 0xe2, 0x00, 0x12, 176 0x00, 0x13, 0x00, 0x00, 0x76, 0xe2, 0x00, 0x12,
177 0x00, 0x00, 0x6f, 0xf8, 0x2a, 0x5c, 0x0c, 0x58, 177 0x00, 0x00, 0x6f, 0xf8, 0x2a, 0x5c, 0x0c, 0x58,
178 0x80, 0xe2, 0x00, 0x11, 0xe8, 0xff, 0x18, 0xf8, 178 0x80, 0xe2, 0x00, 0x11, 0xe8, 0xff, 0x18, 0xf8,
179 0x2a, 0x5c, 0x80, 0xe2, 0x00, 0x10, 0x76, 0xe2, 179 0x2a, 0x5c, 0x80, 0xe2, 0x00, 0x10, 0x76, 0xe2,
180 0x00, 0x17, 0x00, 0x00, 0x76, 0xe2, 0x00, 0x16, 180 0x00, 0x17, 0x00, 0x00, 0x76, 0xe2, 0x00, 0x16,
181 0x00, 0x00, 0x6f, 0xf8, 0x2a, 0x9e, 0x0c, 0x58, 181 0x00, 0x00, 0x6f, 0xf8, 0x2a, 0x9e, 0x0c, 0x58,
182 0x80, 0xe2, 0x00, 0x15, 0xe8, 0xff, 0x18, 0xf8, 182 0x80, 0xe2, 0x00, 0x15, 0xe8, 0xff, 0x18, 0xf8,
183 0x2a, 0x9e, 0x80, 0xe2, 0x00, 0x14, 0x76, 0xe2, 183 0x2a, 0x9e, 0x80, 0xe2, 0x00, 0x14, 0x76, 0xe2,
184 0x00, 0x1b, 0x00, 0x00, 0x76, 0xe2, 0x00, 0x1a, 184 0x00, 0x1b, 0x00, 0x00, 0x76, 0xe2, 0x00, 0x1a,
185 0x00, 0x00, 0x76, 0xe2, 0x00, 0x19, 0x00, 0x00, 185 0x00, 0x00, 0x76, 0xe2, 0x00, 0x19, 0x00, 0x00,
186 0x70, 0xe2, 0x00, 0x18, 0x27, 0x6e, 0x76, 0xe2, 186 0x70, 0xe2, 0x00, 0x18, 0x27, 0x6e, 0x76, 0xe2,
187 0x00, 0x1f, 0x00, 0x00, 0x76, 0xe2, 0x00, 0x1e, 187 0x00, 0x1f, 0x00, 0x00, 0x76, 0xe2, 0x00, 0x1e,
188 0x00, 0x00, 0x76, 0xe2, 0x00, 0x1d, 0x00, 0x00, 188 0x00, 0x00, 0x76, 0xe2, 0x00, 0x1d, 0x00, 0x00,
189 0x76, 0xe2, 0x00, 0x1c, 0x00, 0x00, 0x76, 0xe2, 189 0x76, 0xe2, 0x00, 0x1c, 0x00, 0x00, 0x76, 0xe2,
190 0x00, 0x20, 0x00, 0xaa, 0xf0, 0x74, 0x02, 0x98, 190 0x00, 0x20, 0x00, 0xaa, 0xf0, 0x74, 0x02, 0x98,
191 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfe, 191 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfe,
192 0x10, 0xf8, 0x2a, 0x38, 0xf8, 0x45, 0x04, 0xed, 192 0x10, 0xf8, 0x2a, 0x38, 0xf8, 0x45, 0x04, 0xed,
193 0x77, 0x12, 0x2a, 0x18, 0x10, 0xe2, 0x00, 0x02, 193 0x77, 0x12, 0x2a, 0x18, 0x10, 0xe2, 0x00, 0x02,
194 0x88, 0x11, 0xf4, 0x95, 0x77, 0x10, 0x00, 0x08, 194 0x88, 0x11, 0xf4, 0x95, 0x77, 0x10, 0x00, 0x08,
195 0x6d, 0xe9, 0xff, 0xdf, 0xf6, 0xa9, 0xf8, 0x20, 195 0x6d, 0xe9, 0xff, 0xdf, 0xf6, 0xa9, 0xf8, 0x20,
196 0x04, 0x75, 0xf0, 0x73, 0x04, 0x7d, 0xf0, 0x10, 196 0x04, 0x75, 0xf0, 0x73, 0x04, 0x7d, 0xf0, 0x10,
197 0x00, 0x21, 0xf0, 0x00, 0x1a, 0x83, 0x48, 0x08, 197 0x00, 0x21, 0xf0, 0x00, 0x1a, 0x83, 0x48, 0x08,
198 0x7e, 0xf8, 0x00, 0x08, 0xf4, 0xe2, 0xf0, 0x74, 198 0x7e, 0xf8, 0x00, 0x08, 0xf4, 0xe2, 0xf0, 0x74,
199 0x03, 0x0a, 0xf0, 0x73, 0x04, 0xea, 0x48, 0x12, 199 0x03, 0x0a, 0xf0, 0x73, 0x04, 0xea, 0x48, 0x12,
200 0xf2, 0x74, 0x03, 0x23, 0xf0, 0x00, 0x00, 0x04, 200 0xf2, 0x74, 0x03, 0x23, 0xf0, 0x00, 0x00, 0x04,
201 0xf2, 0x74, 0x03, 0x36, 0xf4, 0x95, 0xe8, 0x00, 201 0xf2, 0x74, 0x03, 0x36, 0xf4, 0x95, 0xe8, 0x00,
202 0xf0, 0x73, 0x04, 0xea, 0x77, 0x11, 0x2a, 0x18, 202 0xf0, 0x73, 0x04, 0xea, 0x77, 0x11, 0x2a, 0x18,
203 0xe8, 0xff, 0x6f, 0xe1, 0x00, 0x04, 0x0d, 0x48, 203 0xe8, 0xff, 0x6f, 0xe1, 0x00, 0x04, 0x0d, 0x48,
204 0x18, 0xe1, 0x00, 0x05, 0xf2, 0x74, 0x09, 0x69, 204 0x18, 0xe1, 0x00, 0x05, 0xf2, 0x74, 0x09, 0x69,
205 0xf4, 0x95, 0xf2, 0xa0, 0xf0, 0x74, 0x03, 0x36, 205 0xf4, 0x95, 0xf2, 0xa0, 0xf0, 0x74, 0x03, 0x36,
206 0xf0, 0x73, 0x04, 0xea, 0x77, 0x11, 0x2a, 0x18, 206 0xf0, 0x73, 0x04, 0xea, 0x77, 0x11, 0x2a, 0x18,
207 0xe8, 0xff, 0x6f, 0xe1, 0x00, 0x04, 0x0d, 0x48, 207 0xe8, 0xff, 0x6f, 0xe1, 0x00, 0x04, 0x0d, 0x48,
208 0x18, 0xe1, 0x00, 0x05, 0xf2, 0x74, 0x09, 0x41, 208 0x18, 0xe1, 0x00, 0x05, 0xf2, 0x74, 0x09, 0x41,
209 0xf4, 0x95, 0xf2, 0xa0, 0xf0, 0x74, 0x03, 0x36, 209 0xf4, 0x95, 0xf2, 0xa0, 0xf0, 0x74, 0x03, 0x36,
210 0xf0, 0x73, 0x04, 0xea, 0xf0, 0x74, 0x03, 0x57, 210 0xf0, 0x73, 0x04, 0xea, 0xf0, 0x74, 0x03, 0x57,
211 0xf0, 0x73, 0x04, 0xea, 0x10, 0xf8, 0x2a, 0x1c, 211 0xf0, 0x73, 0x04, 0xea, 0x10, 0xf8, 0x2a, 0x1c,
212 0xf0, 0x74, 0x12, 0xa4, 0xf2, 0x74, 0x03, 0x36, 212 0xf0, 0x74, 0x12, 0xa4, 0xf2, 0x74, 0x03, 0x36,
213 0xf4, 0x95, 0xe8, 0x00, 0xf0, 0x73, 0x04, 0xea, 213 0xf4, 0x95, 0xe8, 0x00, 0xf0, 0x73, 0x04, 0xea,
214 0x48, 0x12, 0xf2, 0x74, 0x03, 0x80, 0xf0, 0x00, 214 0x48, 0x12, 0xf2, 0x74, 0x03, 0x80, 0xf0, 0x00,
215 0x00, 0x04, 0xf2, 0x74, 0x03, 0x36, 0xf4, 0x95, 215 0x00, 0x04, 0xf2, 0x74, 0x03, 0x36, 0xf4, 0x95,
216 0xe8, 0x00, 0xf0, 0x73, 0x04, 0xea, 0x10, 0xf8, 216 0xe8, 0x00, 0xf0, 0x73, 0x04, 0xea, 0x10, 0xf8,
217 0x2a, 0x1c, 0xf0, 0x74, 0x12, 0xc5, 0xf2, 0x74, 217 0x2a, 0x1c, 0xf0, 0x74, 0x12, 0xc5, 0xf2, 0x74,
218 0x03, 0x36, 0xf4, 0x95, 0xe8, 0x00, 0xf0, 0x73, 218 0x03, 0x36, 0xf4, 0x95, 0xe8, 0x00, 0xf0, 0x73,
219 0x04, 0xea, 0x77, 0x11, 0x2a, 0x18, 0xe8, 0xff, 219 0x04, 0xea, 0x77, 0x11, 0x2a, 0x18, 0xe8, 0xff,
220 0x6f, 0xe1, 0x00, 0x06, 0x0d, 0x48, 0x18, 0xe1, 220 0x6f, 0xe1, 0x00, 0x06, 0x0d, 0x48, 0x18, 0xe1,
221 0x00, 0x07, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 221 0x00, 0x07, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12,
222 0xf2, 0xa0, 0x70, 0x00, 0x00, 0x12, 0x80, 0x01, 222 0xf2, 0xa0, 0x70, 0x00, 0x00, 0x12, 0x80, 0x01,
223 0x10, 0xe1, 0x00, 0x04, 0xf0, 0x74, 0x0e, 0x7a, 223 0x10, 0xe1, 0x00, 0x04, 0xf0, 0x74, 0x0e, 0x7a,
224 0xf2, 0x74, 0x03, 0x36, 0xf4, 0x95, 0xe8, 0x00, 224 0xf2, 0x74, 0x03, 0x36, 0xf4, 0x95, 0xe8, 0x00,
225 0xf0, 0x73, 0x04, 0xea, 0xf0, 0x74, 0x03, 0xbc, 225 0xf0, 0x73, 0x04, 0xea, 0xf0, 0x74, 0x03, 0xbc,
226 0x76, 0xf8, 0x2a, 0x38, 0x00, 0x00, 0xee, 0x02, 226 0x76, 0xf8, 0x2a, 0x38, 0x00, 0x00, 0xee, 0x02,
227 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0x77, 0x11, 227 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0x77, 0x11,
228 0x2a, 0x39, 0x76, 0x81, 0x00, 0x55, 0x77, 0x12, 228 0x2a, 0x39, 0x76, 0x81, 0x00, 0x55, 0x77, 0x12,
229 0x2a, 0x18, 0x10, 0xe2, 0x00, 0x01, 0x80, 0xe1, 229 0x2a, 0x18, 0x10, 0xe2, 0x00, 0x01, 0x80, 0xe1,
230 0x00, 0x01, 0x10, 0xe2, 0x00, 0x02, 0x80, 0xe1, 230 0x00, 0x01, 0x10, 0xe2, 0x00, 0x02, 0x80, 0xe1,
231 0x00, 0x02, 0x76, 0xe1, 0x00, 0x03, 0x00, 0x09, 231 0x00, 0x02, 0x76, 0xe1, 0x00, 0x03, 0x00, 0x09,
232 0x48, 0x11, 0xf0, 0x00, 0x00, 0x04, 0x88, 0x12, 232 0x48, 0x11, 0xf0, 0x00, 0x00, 0x04, 0x88, 0x12,
233 0xf4, 0x95, 0x77, 0x13, 0x2a, 0x86, 0xe9, 0x00, 233 0xf4, 0x95, 0x77, 0x13, 0x2a, 0x86, 0xe9, 0x00,
234 0xe5, 0x98, 0xf3, 0x00, 0x00, 0x01, 0xf6, 0xb8, 234 0xe5, 0x98, 0xf3, 0x00, 0x00, 0x01, 0xf6, 0xb8,
235 0x48, 0x0b, 0x08, 0xf8, 0x2a, 0x3c, 0xf8, 0x43, 235 0x48, 0x0b, 0x08, 0xf8, 0x2a, 0x3c, 0xf8, 0x43,
236 0x05, 0x0a, 0x76, 0x82, 0x00, 0xaa, 0xf0, 0x74, 236 0x05, 0x0a, 0x76, 0x82, 0x00, 0xaa, 0xf0, 0x74,
237 0x02, 0x98, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 237 0x02, 0x98, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11,
238 0x77, 0x11, 0x2a, 0x39, 0x76, 0x81, 0x00, 0x55, 238 0x77, 0x11, 0x2a, 0x39, 0x76, 0x81, 0x00, 0x55,
239 0x77, 0x13, 0x2a, 0x18, 0x10, 0xe3, 0x00, 0x01, 239 0x77, 0x13, 0x2a, 0x18, 0x10, 0xe3, 0x00, 0x01,
240 0x80, 0xe1, 0x00, 0x01, 0x10, 0xe3, 0x00, 0x02, 240 0x80, 0xe1, 0x00, 0x01, 0x10, 0xe3, 0x00, 0x02,
241 0x80, 0xe1, 0x00, 0x02, 0x13, 0xe3, 0x00, 0x03, 241 0x80, 0xe1, 0x00, 0x02, 0x13, 0xe3, 0x00, 0x03,
242 0x81, 0xe1, 0x00, 0x03, 0x48, 0x11, 0x77, 0x11, 242 0x81, 0xe1, 0x00, 0x03, 0x48, 0x11, 0x77, 0x11,
243 0x00, 0x00, 0xf8, 0x4d, 0x05, 0x44, 0xf0, 0x00, 243 0x00, 0x00, 0xf8, 0x4d, 0x05, 0x44, 0xf0, 0x00,
244 0x00, 0x04, 0x88, 0x12, 0x48, 0x13, 0xf0, 0x00, 244 0x00, 0x04, 0x88, 0x12, 0x48, 0x13, 0xf0, 0x00,
245 0x00, 0x04, 0x88, 0x13, 0xf4, 0x95, 0xf4, 0x95, 245 0x00, 0x04, 0x88, 0x13, 0xf4, 0x95, 0xf4, 0x95,
246 0xe5, 0x98, 0x6d, 0x91, 0xf6, 0xb8, 0x48, 0x11, 246 0xe5, 0x98, 0x6d, 0x91, 0xf6, 0xb8, 0x48, 0x11,
247 0x08, 0xf8, 0x2a, 0x3c, 0xf8, 0x43, 0x05, 0x3a, 247 0x08, 0xf8, 0x2a, 0x3c, 0xf8, 0x43, 0x05, 0x3a,
248 0xf0, 0x20, 0x2a, 0x39, 0x49, 0x11, 0xf5, 0x00, 248 0xf0, 0x20, 0x2a, 0x39, 0x49, 0x11, 0xf5, 0x00,
249 0x89, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x76, 0xe1, 249 0x89, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x76, 0xe1,
250 0x00, 0x04, 0x00, 0xaa, 0xf0, 0x74, 0x02, 0x98, 250 0x00, 0x04, 0x00, 0xaa, 0xf0, 0x74, 0x02, 0x98,
251 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0x77, 0x11, 251 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0x77, 0x11,
252 0x2a, 0x39, 0x76, 0x81, 0x00, 0x55, 0x77, 0x12, 252 0x2a, 0x39, 0x76, 0x81, 0x00, 0x55, 0x77, 0x12,
253 0x2a, 0x18, 0x10, 0xe2, 0x00, 0x01, 0x80, 0xe1, 253 0x2a, 0x18, 0x10, 0xe2, 0x00, 0x01, 0x80, 0xe1,
254 0x00, 0x01, 0x10, 0xe2, 0x00, 0x02, 0x80, 0xe1, 254 0x00, 0x01, 0x10, 0xe2, 0x00, 0x02, 0x80, 0xe1,
255 0x00, 0x02, 0x76, 0xe1, 0x00, 0x03, 0x00, 0x0c, 255 0x00, 0x02, 0x76, 0xe1, 0x00, 0x03, 0x00, 0x0c,
256 0x48, 0x11, 0xf0, 0x00, 0x00, 0x04, 0x88, 0x12, 256 0x48, 0x11, 0xf0, 0x00, 0x00, 0x04, 0x88, 0x12,
257 0xf4, 0x95, 0x77, 0x13, 0x2a, 0x7a, 0xe9, 0x00, 257 0xf4, 0x95, 0x77, 0x13, 0x2a, 0x7a, 0xe9, 0x00,
258 0xe5, 0x98, 0xf3, 0x00, 0x00, 0x01, 0xf6, 0xb8, 258 0xe5, 0x98, 0xf3, 0x00, 0x00, 0x01, 0xf6, 0xb8,
259 0x48, 0x0b, 0x08, 0xf8, 0x2a, 0x3c, 0xf8, 0x43, 259 0x48, 0x0b, 0x08, 0xf8, 0x2a, 0x3c, 0xf8, 0x43,
260 0x05, 0x6a, 0x76, 0x82, 0x00, 0xaa, 0xf0, 0x74, 260 0x05, 0x6a, 0x76, 0x82, 0x00, 0xaa, 0xf0, 0x74,
261 0x02, 0x98, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 261 0x02, 0x98, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11,
262 0x77, 0x11, 0x2a, 0x39, 0x76, 0x81, 0x00, 0x55, 262 0x77, 0x11, 0x2a, 0x39, 0x76, 0x81, 0x00, 0x55,
263 0x77, 0x12, 0x2a, 0x18, 0x10, 0xe2, 0x00, 0x01, 263 0x77, 0x12, 0x2a, 0x18, 0x10, 0xe2, 0x00, 0x01,
264 0x80, 0xe1, 0x00, 0x01, 0x10, 0xe2, 0x00, 0x02, 264 0x80, 0xe1, 0x00, 0x01, 0x10, 0xe2, 0x00, 0x02,
265 0x80, 0xe1, 0x00, 0x02, 0x76, 0xe1, 0x00, 0x03, 265 0x80, 0xe1, 0x00, 0x02, 0x76, 0xe1, 0x00, 0x03,
266 0x00, 0x19, 0x48, 0x11, 0xf0, 0x00, 0x00, 0x04, 266 0x00, 0x19, 0x48, 0x11, 0xf0, 0x00, 0x00, 0x04,
267 0x88, 0x12, 0xf4, 0x95, 0x77, 0x13, 0x2a, 0x5d, 267 0x88, 0x12, 0xf4, 0x95, 0x77, 0x13, 0x2a, 0x5d,
268 0xe9, 0x00, 0xe5, 0x98, 0xf3, 0x00, 0x00, 0x01, 268 0xe9, 0x00, 0xe5, 0x98, 0xf3, 0x00, 0x00, 0x01,
269 0xf6, 0xb8, 0x48, 0x0b, 0x08, 0xf8, 0x2a, 0x3c, 269 0xf6, 0xb8, 0x48, 0x0b, 0x08, 0xf8, 0x2a, 0x3c,
270 0xf8, 0x43, 0x05, 0x93, 0x76, 0x82, 0x00, 0xaa, 270 0xf8, 0x43, 0x05, 0x93, 0x76, 0x82, 0x00, 0xaa,
271 0xf0, 0x74, 0x02, 0x98, 0x8a, 0x11, 0xfc, 0x00, 271 0xf0, 0x74, 0x02, 0x98, 0x8a, 0x11, 0xfc, 0x00,
272 0x4a, 0x11, 0x88, 0x11, 0x10, 0xf8, 0x2a, 0x38, 272 0x4a, 0x11, 0x88, 0x11, 0x10, 0xf8, 0x2a, 0x38,
273 0xf8, 0x44, 0x05, 0xe3, 0x10, 0xf8, 0x2a, 0xa1, 273 0xf8, 0x44, 0x05, 0xe3, 0x10, 0xf8, 0x2a, 0xa1,
274 0xf8, 0x44, 0x05, 0xba, 0x6c, 0xe1, 0xff, 0x56, 274 0xf8, 0x44, 0x05, 0xba, 0x6c, 0xe1, 0xff, 0x56,
275 0x05, 0xe3, 0x72, 0x12, 0x2a, 0xa1, 0xf4, 0x95, 275 0x05, 0xe3, 0x72, 0x12, 0x2a, 0xa1, 0xf4, 0x95,
276 0x70, 0xe2, 0x2a, 0x18, 0x00, 0x11, 0x6b, 0xf8, 276 0x70, 0xe2, 0x2a, 0x18, 0x00, 0x11, 0x6b, 0xf8,
277 0x2a, 0xa1, 0x00, 0x01, 0xf0, 0x73, 0x05, 0xe3, 277 0x2a, 0xa1, 0x00, 0x01, 0xf0, 0x73, 0x05, 0xe3,
278 0x72, 0x12, 0x2a, 0xa1, 0xf4, 0x95, 0x70, 0xe2, 278 0x72, 0x12, 0x2a, 0xa1, 0xf4, 0x95, 0x70, 0xe2,
279 0x2a, 0x18, 0x00, 0x11, 0x10, 0xf8, 0x2a, 0xa1, 279 0x2a, 0x18, 0x00, 0x11, 0x10, 0xf8, 0x2a, 0xa1,
280 0xf0, 0x00, 0x00, 0x01, 0x88, 0x12, 0xf4, 0x95, 280 0xf0, 0x00, 0x00, 0x01, 0x88, 0x12, 0xf4, 0x95,
281 0xf4, 0x95, 0x6e, 0xe2, 0xff, 0xfc, 0x05, 0xd1, 281 0xf4, 0x95, 0x6e, 0xe2, 0xff, 0xfc, 0x05, 0xd1,
282 0x73, 0x12, 0x2a, 0xa1, 0x48, 0x11, 0xf0, 0x00, 282 0x73, 0x12, 0x2a, 0xa1, 0x48, 0x11, 0xf0, 0x00,
283 0x00, 0x05, 0x80, 0xf8, 0x2a, 0xa2, 0x10, 0xf8, 283 0x00, 0x05, 0x80, 0xf8, 0x2a, 0xa2, 0x10, 0xf8,
284 0x2a, 0xa1, 0x08, 0xf8, 0x2a, 0xa2, 0xf8, 0x44, 284 0x2a, 0xa1, 0x08, 0xf8, 0x2a, 0xa2, 0xf8, 0x44,
285 0x05, 0xe3, 0x6c, 0xe1, 0xff, 0xab, 0x05, 0xdd, 285 0x05, 0xe3, 0x6c, 0xe1, 0xff, 0xab, 0x05, 0xdd,
286 0x76, 0xf8, 0x2a, 0x38, 0x00, 0x01, 0x76, 0xf8, 286 0x76, 0xf8, 0x2a, 0x38, 0x00, 0x01, 0x76, 0xf8,
287 0x2a, 0xa1, 0x00, 0x00, 0x76, 0xf8, 0x2a, 0xa2, 287 0x2a, 0xa1, 0x00, 0x00, 0x76, 0xf8, 0x2a, 0xa2,
288 0x00, 0x00, 0x8a, 0x11, 0xfc, 0x00, 0xf4, 0x95, 288 0x00, 0x00, 0x8a, 0x11, 0xfc, 0x00, 0xf4, 0x95,
289 0x4a, 0x08, 0x4a, 0x09, 0x4a, 0x0a, 0x4a, 0x0b, 289 0x4a, 0x08, 0x4a, 0x09, 0x4a, 0x0a, 0x4a, 0x0b,
290 0x4a, 0x0c, 0x4a, 0x0d, 0x4a, 0x10, 0x4a, 0x11, 290 0x4a, 0x0c, 0x4a, 0x0d, 0x4a, 0x10, 0x4a, 0x11,
291 0x4a, 0x12, 0x4a, 0x13, 0x4a, 0x14, 0x4a, 0x15, 291 0x4a, 0x12, 0x4a, 0x13, 0x4a, 0x14, 0x4a, 0x15,
292 0x4a, 0x16, 0x4a, 0x17, 0x4a, 0x17, 0x4a, 0x19, 292 0x4a, 0x16, 0x4a, 0x17, 0x4a, 0x17, 0x4a, 0x19,
293 0x4a, 0x0e, 0x4a, 0x06, 0x4a, 0x07, 0x4a, 0x1a, 293 0x4a, 0x0e, 0x4a, 0x06, 0x4a, 0x07, 0x4a, 0x1a,
294 0x4a, 0x1d, 0x4a, 0x1b, 0x4a, 0x1c, 0x68, 0xf8, 294 0x4a, 0x1d, 0x4a, 0x1b, 0x4a, 0x1c, 0x68, 0xf8,
295 0x00, 0x07, 0x7d, 0x3f, 0x69, 0xf8, 0x00, 0x07, 295 0x00, 0x07, 0x7d, 0x3f, 0x69, 0xf8, 0x00, 0x07,
296 0x40, 0x00, 0x68, 0xf8, 0x00, 0x1d, 0xff, 0xfc, 296 0x40, 0x00, 0x68, 0xf8, 0x00, 0x1d, 0xff, 0xfc,
297 0x48, 0x18, 0x68, 0xf8, 0x00, 0x18, 0xff, 0xfe, 297 0x48, 0x18, 0x68, 0xf8, 0x00, 0x18, 0xff, 0xfe,
298 0xf4, 0x95, 0xf4, 0x95, 0x4a, 0x08, 0xee, 0xff, 298 0xf4, 0x95, 0xf4, 0x95, 0x4a, 0x08, 0xee, 0xff,
299 0x10, 0xf8, 0x2a, 0x5b, 0xf9, 0x80, 0x18, 0x04, 299 0x10, 0xf8, 0x2a, 0x5b, 0xf9, 0x80, 0x18, 0x04,
300 0xf0, 0x74, 0x05, 0xa2, 0xee, 0x01, 0x8a, 0x18, 300 0xf0, 0x74, 0x05, 0xa2, 0xee, 0x01, 0x8a, 0x18,
301 0xf4, 0x95, 0x8a, 0x1c, 0x8a, 0x1b, 0x8a, 0x1d, 301 0xf4, 0x95, 0x8a, 0x1c, 0x8a, 0x1b, 0x8a, 0x1d,
302 0x8a, 0x1a, 0x8a, 0x07, 0x8a, 0x06, 0x8a, 0x0e, 302 0x8a, 0x1a, 0x8a, 0x07, 0x8a, 0x06, 0x8a, 0x0e,
303 0x8a, 0x19, 0x8a, 0x17, 0x8a, 0x17, 0x8a, 0x16, 303 0x8a, 0x19, 0x8a, 0x17, 0x8a, 0x17, 0x8a, 0x16,
304 0x8a, 0x15, 0x8a, 0x14, 0x8a, 0x13, 0x8a, 0x12, 304 0x8a, 0x15, 0x8a, 0x14, 0x8a, 0x13, 0x8a, 0x12,
305 0x8a, 0x11, 0x8a, 0x10, 0x8a, 0x0d, 0x8a, 0x0c, 305 0x8a, 0x11, 0x8a, 0x10, 0x8a, 0x0d, 0x8a, 0x0c,
306 0x8a, 0x0b, 0x8a, 0x0a, 0x8a, 0x09, 0x8a, 0x08, 306 0x8a, 0x0b, 0x8a, 0x0a, 0x8a, 0x09, 0x8a, 0x08,
307 0xf4, 0xeb, 0xee, 0xfd, 0x76, 0xf8, 0x2a, 0x38, 307 0xf4, 0xeb, 0xee, 0xfd, 0x76, 0xf8, 0x2a, 0x38,
308 0x00, 0x00, 0x76, 0xf8, 0x2a, 0x5a, 0x00, 0x00, 308 0x00, 0x00, 0x76, 0xf8, 0x2a, 0x5a, 0x00, 0x00,
309 0xe8, 0x01, 0x4e, 0x00, 0xfb, 0x80, 0x17, 0xd6, 309 0xe8, 0x01, 0x4e, 0x00, 0xfb, 0x80, 0x17, 0xd6,
310 0xf4, 0x95, 0xe8, 0x01, 0x80, 0xf8, 0x2a, 0x5b, 310 0xf4, 0x95, 0xe8, 0x01, 0x80, 0xf8, 0x2a, 0x5b,
311 0x76, 0x00, 0x2a, 0x8f, 0xf9, 0x80, 0x16, 0xaa, 311 0x76, 0x00, 0x2a, 0x8f, 0xf9, 0x80, 0x16, 0xaa,
312 0x10, 0xf8, 0x2a, 0x5b, 0xf9, 0x80, 0x17, 0x5c, 312 0x10, 0xf8, 0x2a, 0x5b, 0xf9, 0x80, 0x17, 0x5c,
313 0x10, 0xf8, 0x2a, 0x5b, 0xf9, 0x80, 0x17, 0x6f, 313 0x10, 0xf8, 0x2a, 0x5b, 0xf9, 0x80, 0x17, 0x6f,
314 0xfb, 0x80, 0x16, 0x66, 0xf4, 0x95, 0xe8, 0x1a, 314 0xfb, 0x80, 0x16, 0x66, 0xf4, 0x95, 0xe8, 0x1a,
315 0xfb, 0x80, 0x16, 0x87, 0xf4, 0x95, 0xe8, 0x1a, 315 0xfb, 0x80, 0x16, 0x87, 0xf4, 0x95, 0xe8, 0x1a,
316 0xfb, 0x80, 0x16, 0x66, 0xf4, 0x95, 0xe8, 0x1b, 316 0xfb, 0x80, 0x16, 0x66, 0xf4, 0x95, 0xe8, 0x1b,
317 0xfb, 0x80, 0x16, 0x87, 0xf4, 0x95, 0xe8, 0x1b, 317 0xfb, 0x80, 0x16, 0x87, 0xf4, 0x95, 0xe8, 0x1b,
318 0xee, 0x03, 0xfc, 0x00, 0x4a, 0x11, 0xf4, 0x95, 318 0xee, 0x03, 0xfc, 0x00, 0x4a, 0x11, 0xf4, 0x95,
319 0x13, 0x02, 0x88, 0x11, 0xe8, 0x00, 0xf8, 0x4d, 319 0x13, 0x02, 0x88, 0x11, 0xe8, 0x00, 0xf8, 0x4d,
320 0x06, 0x6a, 0xf3, 0x10, 0x00, 0x01, 0x89, 0x1a, 320 0x06, 0x6a, 0xf3, 0x10, 0x00, 0x01, 0x89, 0x1a,
321 0xf4, 0x95, 0xf0, 0x72, 0x06, 0x69, 0x1c, 0x91, 321 0xf4, 0x95, 0xf0, 0x72, 0x06, 0x69, 0x1c, 0x91,
322 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0x88, 0x11, 322 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0x88, 0x11,
323 0x12, 0x03, 0x11, 0x02, 0xf8, 0x45, 0x06, 0x79, 323 0x12, 0x03, 0x11, 0x02, 0xf8, 0x45, 0x06, 0x79,
324 0xf0, 0x10, 0x00, 0x01, 0x88, 0x1a, 0xf4, 0x95, 324 0xf0, 0x10, 0x00, 0x01, 0x88, 0x1a, 0xf4, 0x95,
325 0xf0, 0x72, 0x06, 0x78, 0x81, 0x91, 0x8a, 0x11, 325 0xf0, 0x72, 0x06, 0x78, 0x81, 0x91, 0x8a, 0x11,
326 0xfc, 0x00, 0x4a, 0x11, 0xf4, 0x95, 0x71, 0x02, 326 0xfc, 0x00, 0x4a, 0x11, 0xf4, 0x95, 0x71, 0x02,
327 0x00, 0x11, 0x11, 0x03, 0x61, 0xf8, 0x00, 0x11, 327 0x00, 0x11, 0x11, 0x03, 0x61, 0xf8, 0x00, 0x11,
328 0x00, 0x01, 0xf8, 0x30, 0x06, 0x91, 0xf6, 0xb8, 328 0x00, 0x01, 0xf8, 0x30, 0x06, 0x91, 0xf6, 0xb8,
329 0x6f, 0xf8, 0x00, 0x11, 0x0c, 0x1f, 0x88, 0x11, 329 0x6f, 0xf8, 0x00, 0x11, 0x0c, 0x1f, 0x88, 0x11,
330 0xf3, 0xe8, 0xe8, 0xff, 0x18, 0x81, 0xf1, 0xa0, 330 0xf3, 0xe8, 0xe8, 0xff, 0x18, 0x81, 0xf1, 0xa0,
331 0x81, 0x81, 0xf0, 0x73, 0x06, 0x9d, 0xf6, 0xb8, 331 0x81, 0x81, 0xf0, 0x73, 0x06, 0x9d, 0xf6, 0xb8,
332 0x6f, 0xf8, 0x00, 0x11, 0x0c, 0x1f, 0x88, 0x11, 332 0x6f, 0xf8, 0x00, 0x11, 0x0c, 0x1f, 0x88, 0x11,
333 0xf3, 0x30, 0x00, 0xff, 0xf0, 0x20, 0xff, 0x00, 333 0xf3, 0x30, 0x00, 0xff, 0xf0, 0x20, 0xff, 0x00,
334 0x18, 0x81, 0xf1, 0xa0, 0x81, 0x81, 0x8a, 0x11, 334 0x18, 0x81, 0xf1, 0xa0, 0x81, 0x81, 0x8a, 0x11,
335 0xfc, 0x00, 0x4a, 0x11, 0xf4, 0x95, 0x11, 0x02, 335 0xfc, 0x00, 0x4a, 0x11, 0xf4, 0x95, 0x11, 0x02,
336 0x61, 0xf8, 0x00, 0x0b, 0x00, 0x01, 0xf8, 0x20, 336 0x61, 0xf8, 0x00, 0x0b, 0x00, 0x01, 0xf8, 0x20,
337 0x06, 0xb1, 0x49, 0x0b, 0xf6, 0x1f, 0x88, 0x11, 337 0x06, 0xb1, 0x49, 0x0b, 0xf6, 0x1f, 0x88, 0x11,
338 0xf4, 0x95, 0xf4, 0x95, 0x10, 0x81, 0xf2, 0x73, 338 0xf4, 0x95, 0xf4, 0x95, 0x10, 0x81, 0xf2, 0x73,
339 0x06, 0xb8, 0xf0, 0x30, 0x00, 0xff, 0x49, 0x0b, 339 0x06, 0xb8, 0xf0, 0x30, 0x00, 0xff, 0x49, 0x0b,
340 0xf6, 0x1f, 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, 340 0xf6, 0x1f, 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95,
341 0x12, 0x81, 0xf4, 0x78, 0x8a, 0x11, 0xfc, 0x00, 341 0x12, 0x81, 0xf4, 0x78, 0x8a, 0x11, 0xfc, 0x00,
342 0x4a, 0x11, 0xf4, 0x95, 0x71, 0x02, 0x00, 0x12, 342 0x4a, 0x11, 0xf4, 0x95, 0x71, 0x02, 0x00, 0x12,
343 0x13, 0x03, 0x88, 0x11, 0xe8, 0x00, 0xf8, 0x4d, 343 0x13, 0x03, 0x88, 0x11, 0xe8, 0x00, 0xf8, 0x4d,
344 0x06, 0xcc, 0xf3, 0x10, 0x00, 0x01, 0x89, 0x1a, 344 0x06, 0xcc, 0xf3, 0x10, 0x00, 0x01, 0x89, 0x1a,
345 0xf4, 0x95, 0xf0, 0x72, 0x06, 0xcb, 0x11, 0x92, 345 0xf4, 0x95, 0xf0, 0x72, 0x06, 0xcb, 0x11, 0x92,
346 0xf2, 0xc0, 0x81, 0x91, 0x8a, 0x11, 0xfc, 0x00, 346 0xf2, 0xc0, 0x81, 0x91, 0x8a, 0x11, 0xfc, 0x00,
347 0x88, 0x12, 0x12, 0x02, 0x71, 0x01, 0x00, 0x13, 347 0x88, 0x12, 0x12, 0x02, 0x71, 0x01, 0x00, 0x13,
348 0xf8, 0x45, 0x06, 0xdb, 0xf0, 0x10, 0x00, 0x01, 348 0xf8, 0x45, 0x06, 0xdb, 0xf0, 0x10, 0x00, 0x01,
349 0x88, 0x1a, 0xf4, 0x95, 0xf0, 0x72, 0x06, 0xda, 349 0x88, 0x1a, 0xf4, 0x95, 0xf0, 0x72, 0x06, 0xda,
350 0xe5, 0x98, 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfe, 350 0xe5, 0x98, 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfe,
351 0x88, 0x11, 0x11, 0x04, 0x10, 0x06, 0x71, 0x05, 351 0x88, 0x11, 0x11, 0x04, 0x10, 0x06, 0x71, 0x05,
352 0x00, 0x12, 0x61, 0xf8, 0x00, 0x12, 0x00, 0x01, 352 0x00, 0x12, 0x61, 0xf8, 0x00, 0x12, 0x00, 0x01,
353 0xf8, 0x20, 0x06, 0xea, 0xf0, 0x00, 0x00, 0x01, 353 0xf8, 0x20, 0x06, 0xea, 0xf0, 0x00, 0x00, 0x01,
354 0xf6, 0xb8, 0xf0, 0x00, 0x00, 0x01, 0x6f, 0xf8, 354 0xf6, 0xb8, 0xf0, 0x00, 0x00, 0x01, 0x6f, 0xf8,
355 0x00, 0x12, 0x0f, 0x1f, 0x48, 0x08, 0x81, 0x00, 355 0x00, 0x12, 0x0f, 0x1f, 0x48, 0x08, 0x81, 0x00,
356 0xf4, 0x7f, 0x80, 0x01, 0xf2, 0x74, 0x06, 0xba, 356 0xf4, 0x7f, 0x80, 0x01, 0xf2, 0x74, 0x06, 0xba,
357 0xf4, 0x95, 0x48, 0x11, 0xee, 0x02, 0x8a, 0x11, 357 0xf4, 0x95, 0x48, 0x11, 0xee, 0x02, 0x8a, 0x11,
358 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfe, 0x88, 0x12, 358 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfe, 0x88, 0x12,
359 0x11, 0x04, 0x10, 0x06, 0x71, 0x05, 0x00, 0x13, 359 0x11, 0x04, 0x10, 0x06, 0x71, 0x05, 0x00, 0x13,
360 0x61, 0xf8, 0x00, 0x13, 0x00, 0x01, 0xf8, 0x20, 360 0x61, 0xf8, 0x00, 0x13, 0x00, 0x01, 0xf8, 0x20,
361 0x07, 0x09, 0xf0, 0x00, 0x00, 0x01, 0xf0, 0x00, 361 0x07, 0x09, 0xf0, 0x00, 0x00, 0x01, 0xf0, 0x00,
362 0x00, 0x01, 0x88, 0x11, 0xf6, 0xb8, 0x6f, 0xf8, 362 0x00, 0x01, 0x88, 0x11, 0xf6, 0xb8, 0x6f, 0xf8,
363 0x00, 0x13, 0x0f, 0x1f, 0x81, 0x00, 0x48, 0x11, 363 0x00, 0x13, 0x0f, 0x1f, 0x81, 0x00, 0x48, 0x11,
364 0xf4, 0x7f, 0x80, 0x01, 0xf2, 0x74, 0x06, 0xce, 364 0xf4, 0x7f, 0x80, 0x01, 0xf2, 0x74, 0x06, 0xce,
365 0xf4, 0x95, 0x48, 0x12, 0x48, 0x11, 0xf0, 0x30, 365 0xf4, 0x95, 0x48, 0x12, 0x48, 0x11, 0xf0, 0x30,
366 0xff, 0xfe, 0xee, 0x02, 0x8a, 0x11, 0xfc, 0x00, 366 0xff, 0xfe, 0xee, 0x02, 0x8a, 0x11, 0xfc, 0x00,
367 0x4a, 0x11, 0x4a, 0x16, 0x4a, 0x17, 0xee, 0xfc, 367 0x4a, 0x11, 0x4a, 0x16, 0x4a, 0x17, 0xee, 0xfc,
368 0xf4, 0x95, 0x80, 0x02, 0x71, 0x08, 0x00, 0x16, 368 0xf4, 0x95, 0x80, 0x02, 0x71, 0x08, 0x00, 0x16,
369 0x10, 0x09, 0x71, 0x0b, 0x00, 0x17, 0x80, 0x03, 369 0x10, 0x09, 0x71, 0x0b, 0x00, 0x17, 0x80, 0x03,
370 0x71, 0x0a, 0x00, 0x11, 0x48, 0x17, 0xf8, 0x45, 370 0x71, 0x0a, 0x00, 0x11, 0x48, 0x17, 0xf8, 0x45,
371 0x07, 0x3f, 0x70, 0x00, 0x00, 0x11, 0x10, 0x03, 371 0x07, 0x3f, 0x70, 0x00, 0x00, 0x11, 0x10, 0x03,
372 0xf0, 0x74, 0x06, 0x9f, 0x80, 0x01, 0x70, 0x00, 372 0xf0, 0x74, 0x06, 0x9f, 0x80, 0x01, 0x70, 0x00,
373 0x00, 0x16, 0x10, 0x02, 0xf0, 0x74, 0x06, 0x7b, 373 0x00, 0x16, 0x10, 0x02, 0xf0, 0x74, 0x06, 0x7b,
374 0x6d, 0x91, 0x6d, 0x96, 0x6c, 0xef, 0xff, 0xff, 374 0x6d, 0x91, 0x6d, 0x96, 0x6c, 0xef, 0xff, 0xff,
375 0x07, 0x2f, 0xee, 0x04, 0x8a, 0x17, 0x8a, 0x16, 375 0x07, 0x2f, 0xee, 0x04, 0x8a, 0x17, 0x8a, 0x16,
376 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfe, 376 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfe,
377 0x10, 0xf8, 0x2a, 0xe8, 0x08, 0xf8, 0x2a, 0xe9, 377 0x10, 0xf8, 0x2a, 0xe8, 0x08, 0xf8, 0x2a, 0xe9,
378 0xf8, 0x45, 0x07, 0x64, 0x76, 0x00, 0x00, 0x01, 378 0xf8, 0x45, 0x07, 0x64, 0x76, 0x00, 0x00, 0x01,
379 0x62, 0xf8, 0x2a, 0xe9, 0x00, 0x5e, 0xf2, 0x74, 379 0x62, 0xf8, 0x2a, 0xe9, 0x00, 0x5e, 0xf2, 0x74,
380 0x12, 0x0b, 0xf0, 0x00, 0x30, 0x40, 0x72, 0x11, 380 0x12, 0x0b, 0xf0, 0x00, 0x30, 0x40, 0x72, 0x11,
381 0x2a, 0xe9, 0x77, 0x10, 0x00, 0x0f, 0xf5, 0xa9, 381 0x2a, 0xe9, 0x77, 0x10, 0x00, 0x0f, 0xf5, 0xa9,
382 0xf8, 0x20, 0x07, 0x61, 0x6b, 0xf8, 0x2a, 0xe9, 382 0xf8, 0x20, 0x07, 0x61, 0x6b, 0xf8, 0x2a, 0xe9,
383 0x00, 0x01, 0xf0, 0x73, 0x07, 0x64, 0x76, 0xf8, 383 0x00, 0x01, 0xf0, 0x73, 0x07, 0x64, 0x76, 0xf8,
384 0x2a, 0xe9, 0x00, 0x00, 0xee, 0x02, 0x8a, 0x11, 384 0x2a, 0xe9, 0x00, 0x00, 0xee, 0x02, 0x8a, 0x11,
385 0xfc, 0x00, 0x4a, 0x11, 0x88, 0x11, 0xe8, 0x00, 385 0xfc, 0x00, 0x4a, 0x11, 0x88, 0x11, 0xe8, 0x00,
386 0x75, 0xf8, 0x00, 0x08, 0x00, 0x08, 0xe8, 0x00, 386 0x75, 0xf8, 0x00, 0x08, 0x00, 0x08, 0xe8, 0x00,
387 0x75, 0xf8, 0x00, 0x08, 0x00, 0x09, 0xf6, 0xb8, 387 0x75, 0xf8, 0x00, 0x08, 0x00, 0x09, 0xf6, 0xb8,
388 0xf4, 0x95, 0xf0, 0x20, 0xfc, 0x3f, 0x75, 0xf8, 388 0xf4, 0x95, 0xf0, 0x20, 0xfc, 0x3f, 0x75, 0xf8,
389 0x00, 0x08, 0x00, 0x0d, 0xf0, 0x20, 0x0c, 0x30, 389 0x00, 0x08, 0x00, 0x0d, 0xf0, 0x20, 0x0c, 0x30,
390 0x75, 0xf8, 0x00, 0x08, 0x00, 0x0c, 0x76, 0xf8, 390 0x75, 0xf8, 0x00, 0x08, 0x00, 0x0c, 0x76, 0xf8,
391 0x2a, 0xe8, 0x00, 0x00, 0x76, 0xf8, 0x2a, 0xe9, 391 0x2a, 0xe8, 0x00, 0x00, 0x76, 0xf8, 0x2a, 0xe9,
392 0x00, 0x00, 0x6c, 0x81, 0x07, 0x92, 0x76, 0xf8, 392 0x00, 0x00, 0x6c, 0x81, 0x07, 0x92, 0x76, 0xf8,
393 0x2a, 0xea, 0x00, 0x00, 0xfb, 0x80, 0x16, 0x76, 393 0x2a, 0xea, 0x00, 0x00, 0xfb, 0x80, 0x16, 0x76,
394 0xf4, 0x95, 0xe8, 0x10, 0xe8, 0x00, 0x75, 0xf8, 394 0xf4, 0x95, 0xe8, 0x10, 0xe8, 0x00, 0x75, 0xf8,
395 0x00, 0x08, 0x00, 0x00, 0xf0, 0x73, 0x07, 0xa8, 395 0x00, 0x08, 0x00, 0x00, 0xf0, 0x73, 0x07, 0xa8,
396 0x76, 0xf8, 0x2a, 0xea, 0x00, 0x01, 0xfb, 0x80, 396 0x76, 0xf8, 0x2a, 0xea, 0x00, 0x01, 0xfb, 0x80,
397 0x16, 0x66, 0xf4, 0x95, 0xe8, 0x10, 0xfb, 0x80, 397 0x16, 0x66, 0xf4, 0x95, 0xe8, 0x10, 0xfb, 0x80,
398 0x16, 0x87, 0xf4, 0x95, 0xe8, 0x10, 0xe8, 0x00, 398 0x16, 0x87, 0xf4, 0x95, 0xe8, 0x10, 0xe8, 0x00,
399 0x75, 0xf8, 0x00, 0x08, 0x00, 0x00, 0xf6, 0xb8, 399 0x75, 0xf8, 0x00, 0x08, 0x00, 0x00, 0xf6, 0xb8,
400 0xf4, 0x95, 0xf0, 0x20, 0xff, 0xff, 0x75, 0xf8, 400 0xf4, 0x95, 0xf0, 0x20, 0xff, 0xff, 0x75, 0xf8,
401 0x00, 0x08, 0x00, 0x00, 0x8a, 0x11, 0xfc, 0x00, 401 0x00, 0x08, 0x00, 0x00, 0x8a, 0x11, 0xfc, 0x00,
402 0xf4, 0x95, 0x4a, 0x08, 0x4a, 0x09, 0x4a, 0x0a, 402 0xf4, 0x95, 0x4a, 0x08, 0x4a, 0x09, 0x4a, 0x0a,
403 0x4a, 0x06, 0x4a, 0x07, 0x4a, 0x1d, 0x68, 0xf8, 403 0x4a, 0x06, 0x4a, 0x07, 0x4a, 0x1d, 0x68, 0xf8,
404 0x00, 0x07, 0x7d, 0x3f, 0x69, 0xf8, 0x00, 0x07, 404 0x00, 0x07, 0x7d, 0x3f, 0x69, 0xf8, 0x00, 0x07,
405 0x40, 0x00, 0x68, 0xf8, 0x00, 0x1d, 0xff, 0xfc, 405 0x40, 0x00, 0x68, 0xf8, 0x00, 0x1d, 0xff, 0xfc,
406 0x10, 0xf8, 0x2a, 0xea, 0xf8, 0x45, 0x07, 0xe1, 406 0x10, 0xf8, 0x2a, 0xea, 0xf8, 0x45, 0x07, 0xe1,
407 0x10, 0xf8, 0x2a, 0xe8, 0xf0, 0x00, 0x00, 0x01, 407 0x10, 0xf8, 0x2a, 0xe8, 0xf0, 0x00, 0x00, 0x01,
408 0xf0, 0x30, 0x00, 0x0f, 0x80, 0xf8, 0x2a, 0xe8, 408 0xf0, 0x30, 0x00, 0x0f, 0x80, 0xf8, 0x2a, 0xe8,
409 0x10, 0xf8, 0x2a, 0xe8, 0xf8, 0x44, 0x07, 0xd6, 409 0x10, 0xf8, 0x2a, 0xe8, 0xf8, 0x44, 0x07, 0xd6,
410 0xf6, 0xb8, 0xf4, 0x95, 0xf0, 0x20, 0xfc, 0x3f, 410 0xf6, 0xb8, 0xf4, 0x95, 0xf0, 0x20, 0xfc, 0x3f,
411 0x75, 0xf8, 0x00, 0x08, 0x00, 0x0d, 0xf0, 0x20, 411 0x75, 0xf8, 0x00, 0x08, 0x00, 0x0d, 0xf0, 0x20,
412 0x0c, 0x30, 0x75, 0xf8, 0x00, 0x08, 0x00, 0x0c, 412 0x0c, 0x30, 0x75, 0xf8, 0x00, 0x08, 0x00, 0x0c,
413 0xe8, 0x00, 0x75, 0xf8, 0x00, 0x08, 0x00, 0x00, 413 0xe8, 0x00, 0x75, 0xf8, 0x00, 0x08, 0x00, 0x00,
414 0xf6, 0xb8, 0xf4, 0x95, 0xf0, 0x20, 0xff, 0xff, 414 0xf6, 0xb8, 0xf4, 0x95, 0xf0, 0x20, 0xff, 0xff,
415 0x75, 0xf8, 0x00, 0x08, 0x00, 0x00, 0x8a, 0x1d, 415 0x75, 0xf8, 0x00, 0x08, 0x00, 0x00, 0x8a, 0x1d,
416 0x8a, 0x07, 0x8a, 0x06, 0x8a, 0x0a, 0x8a, 0x09, 416 0x8a, 0x07, 0x8a, 0x06, 0x8a, 0x0a, 0x8a, 0x09,
417 0x8a, 0x08, 0xf4, 0xeb, 0xee, 0xff, 0xf2, 0x74, 417 0x8a, 0x08, 0xf4, 0xeb, 0xee, 0xff, 0xf2, 0x74,
418 0x07, 0x67, 0xf4, 0x95, 0xe8, 0x01, 0xee, 0x01, 418 0x07, 0x67, 0xf4, 0x95, 0xe8, 0x01, 0xee, 0x01,
419 0xfc, 0x00, 0x4a, 0x07, 0x4a, 0x1d, 0x68, 0xf8, 419 0xfc, 0x00, 0x4a, 0x07, 0x4a, 0x1d, 0x68, 0xf8,
420 0x00, 0x07, 0x7d, 0x3f, 0x69, 0xf8, 0x00, 0x07, 420 0x00, 0x07, 0x7d, 0x3f, 0x69, 0xf8, 0x00, 0x07,
421 0x40, 0x00, 0x68, 0xf8, 0x00, 0x1d, 0xff, 0xfc, 421 0x40, 0x00, 0x68, 0xf8, 0x00, 0x1d, 0xff, 0xfc,
422 0x8a, 0x1d, 0x8a, 0x07, 0xf4, 0xeb, 0x4a, 0x11, 422 0x8a, 0x1d, 0x8a, 0x07, 0xf4, 0xeb, 0x4a, 0x11,
423 0x77, 0x11, 0x00, 0x28, 0x76, 0x81, 0x24, 0x00, 423 0x77, 0x11, 0x00, 0x28, 0x76, 0x81, 0x24, 0x00,
424 0xe8, 0x00, 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01, 424 0xe8, 0x00, 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01,
425 0xf2, 0x74, 0x07, 0x67, 0xf4, 0x95, 0xe8, 0x00, 425 0xf2, 0x74, 0x07, 0x67, 0xf4, 0x95, 0xe8, 0x00,
426 0x77, 0x11, 0x00, 0x1d, 0x68, 0x81, 0x00, 0x7f, 426 0x77, 0x11, 0x00, 0x1d, 0x68, 0x81, 0x00, 0x7f,
427 0xf6, 0xb8, 0xf4, 0x95, 0xf0, 0x20, 0xff, 0x80, 427 0xf6, 0xb8, 0xf4, 0x95, 0xf0, 0x20, 0xff, 0x80,
428 0x77, 0x11, 0x00, 0x1d, 0xf0, 0x30, 0x01, 0x00, 428 0x77, 0x11, 0x00, 0x1d, 0xf0, 0x30, 0x01, 0x00,
429 0x1a, 0x81, 0x80, 0x81, 0xf0, 0x74, 0x0a, 0x33, 429 0x1a, 0x81, 0x80, 0x81, 0xf0, 0x74, 0x0a, 0x33,
430 0xf0, 0x74, 0x11, 0xac, 0xf9, 0x80, 0x13, 0x25, 430 0xf0, 0x74, 0x11, 0xac, 0xf9, 0x80, 0x13, 0x25,
431 0xf9, 0x80, 0x16, 0x53, 0xf9, 0x80, 0x17, 0x82, 431 0xf9, 0x80, 0x16, 0x53, 0xf9, 0x80, 0x17, 0x82,
432 0xf0, 0x74, 0x06, 0x2f, 0xf9, 0x80, 0x14, 0xb2, 432 0xf0, 0x74, 0x06, 0x2f, 0xf9, 0x80, 0x14, 0xb2,
433 0xf9, 0x80, 0x19, 0x10, 0xf0, 0x74, 0x0d, 0xe3, 433 0xf9, 0x80, 0x19, 0x10, 0xf0, 0x74, 0x0d, 0xe3,
434 0xf0, 0x74, 0x07, 0xe8, 0xf0, 0x74, 0x02, 0x36, 434 0xf0, 0x74, 0x07, 0xe8, 0xf0, 0x74, 0x02, 0x36,
435 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0x60, 0xf8, 435 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0x60, 0xf8,
436 0x27, 0x7b, 0xff, 0xff, 0xf8, 0x30, 0x08, 0x39, 436 0x27, 0x7b, 0xff, 0xff, 0xf8, 0x30, 0x08, 0x39,
437 0x71, 0xf8, 0x27, 0x7b, 0x27, 0x79, 0x60, 0xf8, 437 0x71, 0xf8, 0x27, 0x7b, 0x27, 0x79, 0x60, 0xf8,
438 0x27, 0x79, 0xff, 0xff, 0xf8, 0x30, 0x08, 0xb2, 438 0x27, 0x79, 0xff, 0xff, 0xf8, 0x30, 0x08, 0xb2,
439 0x10, 0xf8, 0x29, 0x86, 0x08, 0xf8, 0x27, 0x79, 439 0x10, 0xf8, 0x29, 0x86, 0x08, 0xf8, 0x27, 0x79,
440 0xf0, 0x30, 0x7f, 0xff, 0x88, 0x11, 0xf4, 0x95, 440 0xf0, 0x30, 0x7f, 0xff, 0x88, 0x11, 0xf4, 0x95,
441 0x77, 0x10, 0x40, 0x00, 0xf6, 0xa9, 0xf8, 0x30, 441 0x77, 0x10, 0x40, 0x00, 0xf6, 0xa9, 0xf8, 0x30,
442 0x08, 0x58, 0x10, 0xf8, 0x27, 0x79, 0x08, 0xf8, 442 0x08, 0x58, 0x10, 0xf8, 0x27, 0x79, 0x08, 0xf8,
443 0x27, 0x7a, 0xf0, 0x30, 0x7f, 0xff, 0x88, 0x11, 443 0x27, 0x7a, 0xf0, 0x30, 0x7f, 0xff, 0x88, 0x11,
444 0xf4, 0x95, 0x77, 0x10, 0x40, 0x00, 0xf6, 0xa9, 444 0xf4, 0x95, 0x77, 0x10, 0x40, 0x00, 0xf6, 0xa9,
445 0xf8, 0x20, 0x08, 0x63, 0x76, 0xf8, 0x27, 0x79, 445 0xf8, 0x20, 0x08, 0x63, 0x76, 0xf8, 0x27, 0x79,
446 0xff, 0xff, 0x76, 0xf8, 0x27, 0x7b, 0xff, 0xff, 446 0xff, 0xff, 0x76, 0xf8, 0x27, 0x7b, 0xff, 0xff,
447 0xf7, 0xb8, 0xf2, 0x73, 0x08, 0xd9, 0xf0, 0x20, 447 0xf7, 0xb8, 0xf2, 0x73, 0x08, 0xd9, 0xf0, 0x20,
448 0xff, 0xff, 0xf6, 0xb8, 0x56, 0xf8, 0x27, 0x74, 448 0xff, 0xff, 0xf6, 0xb8, 0x56, 0xf8, 0x27, 0x74,
449 0xf0, 0xf9, 0x88, 0x11, 0x56, 0xf8, 0x27, 0x72, 449 0xf0, 0xf9, 0x88, 0x11, 0x56, 0xf8, 0x27, 0x72,
450 0xf0, 0xf9, 0x88, 0x12, 0xf4, 0x95, 0xf4, 0x95, 450 0xf0, 0xf9, 0x88, 0x12, 0xf4, 0x95, 0xf4, 0x95,
451 0xe7, 0x20, 0xf4, 0xa9, 0xf8, 0x30, 0x08, 0x8f, 451 0xe7, 0x20, 0xf4, 0xa9, 0xf8, 0x30, 0x08, 0x8f,
452 0xf1, 0x20, 0x27, 0x7c, 0x48, 0x11, 0xf6, 0x00, 452 0xf1, 0x20, 0x27, 0x7c, 0x48, 0x11, 0xf6, 0x00,
453 0x88, 0x13, 0xf4, 0x95, 0xf4, 0x95, 0x10, 0x83, 453 0x88, 0x13, 0xf4, 0x95, 0xf4, 0x95, 0x10, 0x83,
454 0x08, 0xf8, 0x27, 0x79, 0xf0, 0x30, 0x7f, 0xff, 454 0x08, 0xf8, 0x27, 0x79, 0xf0, 0x30, 0x7f, 0xff,
455 0x88, 0x13, 0xf4, 0x95, 0x77, 0x10, 0x40, 0x00, 455 0x88, 0x13, 0xf4, 0x95, 0x77, 0x10, 0x40, 0x00,
456 0xf5, 0xab, 0xf8, 0x30, 0x08, 0x8f, 0x6d, 0x91, 456 0xf5, 0xab, 0xf8, 0x30, 0x08, 0x8f, 0x6d, 0x91,
457 0x48, 0x11, 0xf0, 0x30, 0x01, 0xff, 0x88, 0x11, 457 0x48, 0x11, 0xf0, 0x30, 0x01, 0xff, 0x88, 0x11,
458 0xf4, 0x95, 0xe7, 0x20, 0xf7, 0xa9, 0xf8, 0x30, 458 0xf4, 0x95, 0xe7, 0x20, 0xf7, 0xa9, 0xf8, 0x30,
459 0x08, 0x74, 0x6d, 0x89, 0x48, 0x11, 0xf0, 0x30, 459 0x08, 0x74, 0x6d, 0x89, 0x48, 0x11, 0xf0, 0x30,
460 0x01, 0xff, 0xf0, 0xe7, 0xf4, 0x95, 0x48, 0x08, 460 0x01, 0xff, 0xf0, 0xe7, 0xf4, 0x95, 0x48, 0x08,
461 0x4e, 0xf8, 0x27, 0x74, 0x48, 0x08, 0xf1, 0xf9, 461 0x4e, 0xf8, 0x27, 0x74, 0x48, 0x08, 0xf1, 0xf9,
462 0x89, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x71, 0xe1, 462 0x89, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x71, 0xe1,
463 0x27, 0x7c, 0x27, 0x7a, 0x60, 0xf8, 0x27, 0x7b, 463 0x27, 0x7c, 0x27, 0x7a, 0x60, 0xf8, 0x27, 0x7b,
464 0xff, 0xff, 0xf8, 0x30, 0x08, 0xab, 0x48, 0x08, 464 0xff, 0xff, 0xf8, 0x30, 0x08, 0xab, 0x48, 0x08,
465 0x4e, 0xf8, 0x27, 0x72, 0x76, 0xf8, 0x27, 0x7b, 465 0x4e, 0xf8, 0x27, 0x72, 0x76, 0xf8, 0x27, 0x7b,
466 0xff, 0xff, 0x76, 0xf8, 0x27, 0x79, 0xff, 0xff, 466 0xff, 0xff, 0x76, 0xf8, 0x27, 0x79, 0xff, 0xff,
467 0xf2, 0x73, 0x08, 0xd9, 0xf4, 0x95, 0xe8, 0x00, 467 0xf2, 0x73, 0x08, 0xd9, 0xf4, 0x95, 0xe8, 0x00,
468 0x44, 0xf8, 0x27, 0x73, 0x40, 0xf8, 0x27, 0x75, 468 0x44, 0xf8, 0x27, 0x73, 0x40, 0xf8, 0x27, 0x75,
469 0x82, 0xf8, 0x00, 0x11, 0xf4, 0x95, 0x77, 0x10, 469 0x82, 0xf8, 0x00, 0x11, 0xf4, 0x95, 0x77, 0x10,
470 0x80, 0x00, 0xf6, 0xa9, 0xf8, 0x20, 0x08, 0xd8, 470 0x80, 0x00, 0xf6, 0xa9, 0xf8, 0x20, 0x08, 0xd8,
471 0xf6, 0xb8, 0x10, 0xf8, 0x27, 0x73, 0xf0, 0x00, 471 0xf6, 0xb8, 0x10, 0xf8, 0x27, 0x73, 0xf0, 0x00,
472 0x80, 0x00, 0x48, 0x08, 0x4e, 0xf8, 0x27, 0x74, 472 0x80, 0x00, 0x48, 0x08, 0x4e, 0xf8, 0x27, 0x74,
473 0x48, 0x08, 0xf0, 0xf9, 0x88, 0x11, 0xf4, 0x95, 473 0x48, 0x08, 0xf0, 0xf9, 0x88, 0x11, 0xf4, 0x95,
474 0xf4, 0x95, 0x71, 0xe1, 0x27, 0x7c, 0x27, 0x7a, 474 0xf4, 0x95, 0x71, 0xe1, 0x27, 0x7c, 0x27, 0x7a,
475 0xf7, 0xb8, 0x57, 0xf8, 0x27, 0x74, 0xf0, 0x62, 475 0xf7, 0xb8, 0x57, 0xf8, 0x27, 0x74, 0xf0, 0x62,
476 0xff, 0xff, 0xf0, 0x40, 0xff, 0x80, 0xf2, 0x80, 476 0xff, 0xff, 0xf0, 0x40, 0xff, 0x80, 0xf2, 0x80,
477 0x4e, 0xf8, 0x27, 0x74, 0xe8, 0x00, 0x8a, 0x11, 477 0x4e, 0xf8, 0x27, 0x74, 0xe8, 0x00, 0x8a, 0x11,
478 0xfc, 0x00, 0x4a, 0x11, 0x4a, 0x16, 0xee, 0xfb, 478 0xfc, 0x00, 0x4a, 0x11, 0x4a, 0x16, 0xee, 0xfb,
479 0x11, 0xf8, 0x27, 0x71, 0x09, 0xf8, 0x27, 0x73, 479 0x11, 0xf8, 0x27, 0x71, 0x09, 0xf8, 0x27, 0x73,
480 0x89, 0x11, 0x88, 0x10, 0xf4, 0x95, 0xf4, 0x95, 480 0x89, 0x11, 0x88, 0x10, 0xf4, 0x95, 0xf4, 0x95,
481 0xf6, 0xa9, 0xf8, 0x20, 0x08, 0xed, 0xf2, 0x73, 481 0xf6, 0xa9, 0xf8, 0x20, 0x08, 0xed, 0xf2, 0x73,
482 0x09, 0x0e, 0xf4, 0x95, 0xe8, 0x00, 0xf6, 0x20, 482 0x09, 0x0e, 0xf4, 0x95, 0xe8, 0x00, 0xf6, 0x20,
483 0x76, 0x00, 0x00, 0x41, 0xf0, 0x74, 0x12, 0xee, 483 0x76, 0x00, 0x00, 0x41, 0xf0, 0x74, 0x12, 0xee,
484 0x88, 0x16, 0xf4, 0x95, 0xf7, 0xb8, 0x6d, 0x96, 484 0x88, 0x16, 0xf4, 0x95, 0xf7, 0xb8, 0x6d, 0x96,
485 0x10, 0xf8, 0x00, 0x16, 0xf8, 0x47, 0x09, 0x0a, 485 0x10, 0xf8, 0x00, 0x16, 0xf8, 0x47, 0x09, 0x0a,
486 0xe7, 0x61, 0x76, 0x00, 0x00, 0x00, 0x76, 0x01, 486 0xe7, 0x61, 0x76, 0x00, 0x00, 0x00, 0x76, 0x01,
487 0x00, 0x80, 0x76, 0x02, 0x00, 0xff, 0x76, 0x03, 487 0x00, 0x80, 0x76, 0x02, 0x00, 0xff, 0x76, 0x03,
488 0x00, 0x00, 0xf2, 0x74, 0x0c, 0xb9, 0xf4, 0x95, 488 0x00, 0x00, 0xf2, 0x74, 0x0c, 0xb9, 0xf4, 0x95,
489 0xe8, 0x00, 0x6c, 0xe9, 0xff, 0xff, 0x08, 0xfb, 489 0xe8, 0x00, 0x6c, 0xe9, 0xff, 0xff, 0x08, 0xfb,
490 0x73, 0x16, 0x00, 0x0e, 0xf0, 0x66, 0x00, 0x41, 490 0x73, 0x16, 0x00, 0x0e, 0xf0, 0x66, 0x00, 0x41,
491 0xee, 0x05, 0x8a, 0x16, 0x8a, 0x11, 0xfc, 0x00, 491 0xee, 0x05, 0x8a, 0x16, 0x8a, 0x11, 0xfc, 0x00,
492 0x4a, 0x11, 0xf4, 0x95, 0x71, 0x02, 0x00, 0x13, 492 0x4a, 0x11, 0xf4, 0x95, 0x71, 0x02, 0x00, 0x13,
493 0xf6, 0xb8, 0x77, 0x11, 0x7f, 0xff, 0x57, 0xf8, 493 0xf6, 0xb8, 0x77, 0x11, 0x7f, 0xff, 0x57, 0xf8,
494 0x27, 0x72, 0x48, 0x11, 0xf2, 0x80, 0xf0, 0x00, 494 0x27, 0x72, 0x48, 0x11, 0xf2, 0x80, 0xf0, 0x00,
495 0x80, 0x00, 0x88, 0x11, 0xf6, 0x40, 0xf0, 0xe0, 495 0x80, 0x00, 0x88, 0x11, 0xf6, 0x40, 0xf0, 0xe0,
496 0xf1, 0xf1, 0xe8, 0x01, 0xf2, 0x80, 0x80, 0xf8, 496 0xf1, 0xf1, 0xe8, 0x01, 0xf2, 0x80, 0x80, 0xf8,
497 0x27, 0x78, 0x77, 0x12, 0x80, 0x00, 0x57, 0xf8, 497 0x27, 0x78, 0x77, 0x12, 0x80, 0x00, 0x57, 0xf8,
498 0x27, 0x72, 0x48, 0x12, 0xf2, 0x80, 0x88, 0x12, 498 0x27, 0x72, 0x48, 0x12, 0xf2, 0x80, 0x88, 0x12,
499 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x82, 0x09, 0x38, 499 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x82, 0x09, 0x38,
500 0xe8, 0x00, 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01, 500 0xe8, 0x00, 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01,
501 0xf0, 0x73, 0x09, 0x3d, 0xf0, 0x20, 0x80, 0x01, 501 0xf0, 0x73, 0x09, 0x3d, 0xf0, 0x20, 0x80, 0x01,
502 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01, 0x70, 0x81, 502 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01, 0x70, 0x81,
503 0x00, 0x13, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 503 0x00, 0x13, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11,
504 0xf0, 0x30, 0x7f, 0xff, 0x11, 0xf8, 0x29, 0x86, 504 0xf0, 0x30, 0x7f, 0xff, 0x11, 0xf8, 0x29, 0x86,
505 0xf5, 0x20, 0xf3, 0x30, 0x7f, 0xff, 0x89, 0x11, 505 0xf5, 0x20, 0xf3, 0x30, 0x7f, 0xff, 0x89, 0x11,
506 0xf4, 0x95, 0x77, 0x10, 0x40, 0x00, 0xf6, 0xa9, 506 0xf4, 0x95, 0x77, 0x10, 0x40, 0x00, 0xf6, 0xa9,
507 0xf8, 0x20, 0x09, 0x54, 0xf2, 0x73, 0x09, 0x67, 507 0xf8, 0x20, 0x09, 0x54, 0xf2, 0x73, 0x09, 0x67,
508 0xf4, 0x95, 0xe8, 0x02, 0x6f, 0xf8, 0x27, 0x7a, 508 0xf4, 0x95, 0xe8, 0x02, 0x6f, 0xf8, 0x27, 0x7a,
509 0x0d, 0x20, 0xf3, 0x30, 0x7f, 0xff, 0x89, 0x11, 509 0x0d, 0x20, 0xf3, 0x30, 0x7f, 0xff, 0x89, 0x11,
510 0xf4, 0x95, 0x77, 0x10, 0x40, 0x00, 0xf6, 0xa9, 510 0xf4, 0x95, 0x77, 0x10, 0x40, 0x00, 0xf6, 0xa9,
511 0xf8, 0x20, 0x09, 0x64, 0xf2, 0x73, 0x09, 0x67, 511 0xf8, 0x20, 0x09, 0x64, 0xf2, 0x73, 0x09, 0x67,
512 0xf4, 0x95, 0xe8, 0x01, 0x80, 0xf8, 0x27, 0x7b, 512 0xf4, 0x95, 0xe8, 0x01, 0x80, 0xf8, 0x27, 0x7b,
513 0xe8, 0x00, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 513 0xe8, 0x00, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11,
514 0x11, 0xf8, 0x29, 0x86, 0xf5, 0x20, 0xf3, 0x30, 514 0x11, 0xf8, 0x29, 0x86, 0xf5, 0x20, 0xf3, 0x30,
515 0x7f, 0xff, 0x89, 0x11, 0xf4, 0x95, 0x77, 0x10, 515 0x7f, 0xff, 0x89, 0x11, 0xf4, 0x95, 0x77, 0x10,
516 0x40, 0x00, 0xf6, 0xa9, 0xf8, 0x20, 0x09, 0x7a, 516 0x40, 0x00, 0xf6, 0xa9, 0xf8, 0x20, 0x09, 0x7a,
517 0xf2, 0x73, 0x09, 0x8d, 0xf4, 0x95, 0xe8, 0x02, 517 0xf2, 0x73, 0x09, 0x8d, 0xf4, 0x95, 0xe8, 0x02,
518 0x6f, 0xf8, 0x27, 0x7a, 0x0d, 0x20, 0xf3, 0x30, 518 0x6f, 0xf8, 0x27, 0x7a, 0x0d, 0x20, 0xf3, 0x30,
519 0x7f, 0xff, 0x89, 0x11, 0xf4, 0x95, 0x77, 0x10, 519 0x7f, 0xff, 0x89, 0x11, 0xf4, 0x95, 0x77, 0x10,
520 0x40, 0x00, 0xf6, 0xa9, 0xf8, 0x20, 0x09, 0x8a, 520 0x40, 0x00, 0xf6, 0xa9, 0xf8, 0x20, 0x09, 0x8a,
521 0xf2, 0x73, 0x09, 0x8d, 0xf4, 0x95, 0xe8, 0x01, 521 0xf2, 0x73, 0x09, 0x8d, 0xf4, 0x95, 0xe8, 0x01,
522 0x80, 0xf8, 0x27, 0x79, 0xe8, 0x00, 0x8a, 0x11, 522 0x80, 0xf8, 0x27, 0x79, 0xe8, 0x00, 0x8a, 0x11,
523 0xfc, 0x00, 0x4a, 0x11, 0xf4, 0x95, 0x71, 0x02, 523 0xfc, 0x00, 0x4a, 0x11, 0xf4, 0x95, 0x71, 0x02,
524 0x00, 0x12, 0x88, 0x11, 0xf6, 0xb8, 0x57, 0xf8, 524 0x00, 0x12, 0x88, 0x11, 0xf6, 0xb8, 0x57, 0xf8,
525 0x27, 0x72, 0xf0, 0x20, 0x7f, 0xff, 0xf2, 0x80, 525 0x27, 0x72, 0xf0, 0x20, 0x7f, 0xff, 0xf2, 0x80,
526 0xf0, 0x00, 0x80, 0x00, 0x80, 0x81, 0x57, 0xf8, 526 0xf0, 0x00, 0x80, 0x00, 0x80, 0x81, 0x57, 0xf8,
527 0x27, 0x72, 0xe8, 0x01, 0xf3, 0xf1, 0xf2, 0x80, 527 0x27, 0x72, 0xe8, 0x01, 0xf3, 0xf1, 0xf2, 0x80,
528 0x80, 0xf8, 0x27, 0x78, 0x77, 0x11, 0x80, 0x00, 528 0x80, 0xf8, 0x27, 0x78, 0x77, 0x11, 0x80, 0x00,
529 0x48, 0x11, 0x57, 0xf8, 0x27, 0x72, 0xf2, 0x80, 529 0x48, 0x11, 0x57, 0xf8, 0x27, 0x72, 0xf2, 0x80,
530 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x81, 530 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x81,
531 0x09, 0xb5, 0xe8, 0x00, 0x75, 0xf8, 0x00, 0x08, 531 0x09, 0xb5, 0xe8, 0x00, 0x75, 0xf8, 0x00, 0x08,
532 0x00, 0x01, 0xf0, 0x73, 0x09, 0xba, 0xf0, 0x20, 532 0x00, 0x01, 0xf0, 0x73, 0x09, 0xba, 0xf0, 0x20,
533 0x80, 0x01, 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01, 533 0x80, 0x01, 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01,
534 0x45, 0xf8, 0x27, 0x71, 0x43, 0xf8, 0x27, 0x73, 534 0x45, 0xf8, 0x27, 0x71, 0x43, 0xf8, 0x27, 0x73,
535 0x83, 0xf8, 0x00, 0x11, 0xf4, 0x95, 0xe7, 0x20, 535 0x83, 0xf8, 0x00, 0x11, 0xf4, 0x95, 0xe7, 0x20,
536 0xf6, 0xa9, 0xf8, 0x30, 0x09, 0xc9, 0xf2, 0x73, 536 0xf6, 0xa9, 0xf8, 0x30, 0x09, 0xc9, 0xf2, 0x73,
537 0x09, 0xe4, 0x77, 0x12, 0x00, 0x00, 0x57, 0xf8, 537 0x09, 0xe4, 0x77, 0x12, 0x00, 0x00, 0x57, 0xf8,
538 0x27, 0x72, 0xf0, 0x20, 0x7f, 0xff, 0xf2, 0x80, 538 0x27, 0x72, 0xf0, 0x20, 0x7f, 0xff, 0xf2, 0x80,
539 0x49, 0x12, 0xf5, 0x00, 0xf3, 0x00, 0x80, 0x00, 539 0x49, 0x12, 0xf5, 0x00, 0xf3, 0x00, 0x80, 0x00,
540 0x61, 0xf8, 0x00, 0x0b, 0x80, 0x00, 0xf8, 0x30, 540 0x61, 0xf8, 0x00, 0x0b, 0x80, 0x00, 0xf8, 0x30,
541 0x09, 0xdc, 0xf1, 0x20, 0x80, 0x00, 0xf5, 0x20, 541 0x09, 0xdc, 0xf1, 0x20, 0x80, 0x00, 0xf5, 0x20,
542 0x89, 0x12, 0xf4, 0x95, 0x48, 0x12, 0x6f, 0xf8, 542 0x89, 0x12, 0xf4, 0x95, 0x48, 0x12, 0x6f, 0xf8,
543 0x27, 0x73, 0x0d, 0x00, 0xf4, 0x95, 0x49, 0x0b, 543 0x27, 0x73, 0x0d, 0x00, 0xf4, 0x95, 0x49, 0x0b,
544 0x4f, 0xf8, 0x27, 0x72, 0x8a, 0x11, 0xfe, 0x00, 544 0x4f, 0xf8, 0x27, 0x72, 0x8a, 0x11, 0xfe, 0x00,
545 0x48, 0x12, 0xf4, 0x95, 0x4a, 0x11, 0x4a, 0x16, 545 0x48, 0x12, 0xf4, 0x95, 0x4a, 0x11, 0x4a, 0x16,
546 0x4a, 0x17, 0xee, 0xfc, 0xf4, 0x95, 0x71, 0x08, 546 0x4a, 0x17, 0xee, 0xfc, 0xf4, 0x95, 0x71, 0x08,
547 0x00, 0x16, 0x88, 0x17, 0xf0, 0x74, 0x08, 0x30, 547 0x00, 0x16, 0x88, 0x17, 0xf0, 0x74, 0x08, 0x30,
548 0x48, 0x18, 0x70, 0x00, 0x00, 0x16, 0xf2, 0x74, 548 0x48, 0x18, 0x70, 0x00, 0x00, 0x16, 0xf2, 0x74,
549 0x09, 0x8f, 0xf0, 0x00, 0x00, 0x02, 0x88, 0x11, 549 0x09, 0x8f, 0xf0, 0x00, 0x00, 0x02, 0x88, 0x11,
550 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x81, 0x0a, 0x0a, 550 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x81, 0x0a, 0x0a,
551 0xf2, 0x74, 0x08, 0xdb, 0xf4, 0x95, 0x48, 0x16, 551 0xf2, 0x74, 0x08, 0xdb, 0xf4, 0x95, 0x48, 0x16,
552 0x48, 0x18, 0x70, 0x00, 0x00, 0x16, 0xf2, 0x74, 552 0x48, 0x18, 0x70, 0x00, 0x00, 0x16, 0xf2, 0x74,
553 0x09, 0x8f, 0xf0, 0x00, 0x00, 0x02, 0x88, 0x11, 553 0x09, 0x8f, 0xf0, 0x00, 0x00, 0x02, 0x88, 0x11,
554 0x10, 0x02, 0x70, 0x01, 0x00, 0x11, 0x80, 0x00, 554 0x10, 0x02, 0x70, 0x01, 0x00, 0x11, 0x80, 0x00,
555 0xf2, 0x74, 0x06, 0xce, 0xf4, 0x95, 0x48, 0x17, 555 0xf2, 0x74, 0x06, 0xce, 0xf4, 0x95, 0x48, 0x17,
556 0x49, 0x11, 0x48, 0x17, 0xf6, 0x00, 0x88, 0x17, 556 0x49, 0x11, 0x48, 0x17, 0xf6, 0x00, 0x88, 0x17,
557 0xe7, 0x60, 0xf5, 0xa9, 0xf8, 0x20, 0x0a, 0x2d, 557 0xe7, 0x60, 0xf5, 0xa9, 0xf8, 0x20, 0x0a, 0x2d,
558 0x48, 0x16, 0xf6, 0x20, 0x88, 0x11, 0x48, 0x18, 558 0x48, 0x16, 0xf6, 0x20, 0x88, 0x11, 0x48, 0x18,
559 0x70, 0x00, 0x00, 0x11, 0xf2, 0x74, 0x09, 0x8f, 559 0x70, 0x00, 0x00, 0x11, 0xf2, 0x74, 0x09, 0x8f,
560 0xf0, 0x00, 0x00, 0x02, 0x88, 0x11, 0x70, 0x01, 560 0xf0, 0x00, 0x00, 0x02, 0x88, 0x11, 0x70, 0x01,
561 0x00, 0x11, 0x10, 0x02, 0x80, 0x00, 0xf2, 0x74, 561 0x00, 0x11, 0x10, 0x02, 0x80, 0x00, 0xf2, 0x74,
562 0x06, 0xce, 0xf4, 0x95, 0x48, 0x17, 0xee, 0x04, 562 0x06, 0xce, 0xf4, 0x95, 0x48, 0x17, 0xee, 0x04,
563 0x48, 0x16, 0x8a, 0x17, 0x8a, 0x16, 0x8a, 0x11, 563 0x48, 0x16, 0x8a, 0x17, 0x8a, 0x16, 0x8a, 0x11,
564 0xfc, 0x00, 0xee, 0xfd, 0xe8, 0x00, 0x4e, 0xf8, 564 0xfc, 0x00, 0xee, 0xfd, 0xe8, 0x00, 0x4e, 0xf8,
565 0x27, 0x70, 0xe8, 0x00, 0x4e, 0xf8, 0x27, 0x72, 565 0x27, 0x70, 0xe8, 0x00, 0x4e, 0xf8, 0x27, 0x72,
566 0xe8, 0x00, 0x4e, 0xf8, 0x27, 0x74, 0xe8, 0x00, 566 0xe8, 0x00, 0x4e, 0xf8, 0x27, 0x74, 0xe8, 0x00,
567 0x4e, 0xf8, 0x27, 0x76, 0x76, 0xf8, 0x27, 0x79, 567 0x4e, 0xf8, 0x27, 0x76, 0x76, 0xf8, 0x27, 0x79,
568 0xff, 0xff, 0x76, 0xf8, 0x27, 0x7a, 0x00, 0x00, 568 0xff, 0xff, 0x76, 0xf8, 0x27, 0x7a, 0x00, 0x00,
569 0x76, 0xf8, 0x27, 0x7b, 0xff, 0xff, 0x76, 0xf8, 569 0x76, 0xf8, 0x27, 0x7b, 0xff, 0xff, 0x76, 0xf8,
570 0x27, 0x78, 0x00, 0x00, 0xe8, 0x00, 0x75, 0xf8, 570 0x27, 0x78, 0x00, 0x00, 0xe8, 0x00, 0x75, 0xf8,
571 0x00, 0x08, 0x00, 0x01, 0x76, 0x00, 0x00, 0x00, 571 0x00, 0x08, 0x00, 0x01, 0x76, 0x00, 0x00, 0x00,
572 0x76, 0x01, 0x02, 0x00, 0xf2, 0x74, 0x12, 0xdc, 572 0x76, 0x01, 0x02, 0x00, 0xf2, 0x74, 0x12, 0xdc,
573 0xf0, 0x20, 0x27, 0x7c, 0xee, 0x03, 0xfc, 0x00, 573 0xf0, 0x20, 0x27, 0x7c, 0xee, 0x03, 0xfc, 0x00,
574 0x4a, 0x11, 0xee, 0xfc, 0xf4, 0x95, 0x4e, 0x00, 574 0x4a, 0x11, 0xee, 0xfc, 0xf4, 0x95, 0x4e, 0x00,
575 0x77, 0x12, 0x7f, 0xff, 0xf6, 0xb8, 0x49, 0x12, 575 0x77, 0x12, 0x7f, 0xff, 0xf6, 0xb8, 0x49, 0x12,
576 0xf1, 0x80, 0xf3, 0x00, 0x80, 0x00, 0x89, 0x12, 576 0xf1, 0x80, 0xf3, 0x00, 0x80, 0x00, 0x89, 0x12,
577 0xf0, 0xe0, 0xf1, 0xf1, 0x4f, 0x02, 0xe9, 0x01, 577 0xf0, 0xe0, 0xf1, 0xf1, 0x4f, 0x02, 0xe9, 0x01,
578 0xf4, 0x95, 0x48, 0x0b, 0xf5, 0x40, 0x56, 0x02, 578 0xf4, 0x95, 0x48, 0x0b, 0xf5, 0x40, 0x56, 0x02,
579 0xf1, 0x80, 0x81, 0xf8, 0x27, 0x78, 0x77, 0x11, 579 0xf1, 0x80, 0x81, 0xf8, 0x27, 0x78, 0x77, 0x11,
580 0x80, 0x00, 0x56, 0x00, 0x49, 0x11, 0xf1, 0x80, 580 0x80, 0x00, 0x56, 0x00, 0x49, 0x11, 0xf1, 0x80,
581 0x89, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x81, 581 0x89, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x81,
582 0x0a, 0x81, 0xe8, 0x00, 0x75, 0xf8, 0x00, 0x08, 582 0x0a, 0x81, 0xe8, 0x00, 0x75, 0xf8, 0x00, 0x08,
583 0x00, 0x01, 0xf0, 0x73, 0x0a, 0x86, 0xf0, 0x20, 583 0x00, 0x01, 0xf0, 0x73, 0x0a, 0x86, 0xf0, 0x20,
584 0x80, 0x01, 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01, 584 0x80, 0x01, 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01,
585 0x10, 0x82, 0xee, 0x04, 0x8a, 0x11, 0xfc, 0x00, 585 0x10, 0x82, 0xee, 0x04, 0x8a, 0x11, 0xfc, 0x00,
586 0x4a, 0x11, 0xee, 0xfe, 0xf4, 0x95, 0x4e, 0x00, 586 0x4a, 0x11, 0xee, 0xfe, 0xf4, 0x95, 0x4e, 0x00,
587 0x77, 0x11, 0x7f, 0xff, 0xf6, 0xb8, 0x49, 0x11, 587 0x77, 0x11, 0x7f, 0xff, 0xf6, 0xb8, 0x49, 0x11,
588 0xf1, 0x80, 0xf3, 0x00, 0x80, 0x00, 0x89, 0x11, 588 0xf1, 0x80, 0xf3, 0x00, 0x80, 0x00, 0x89, 0x11,
589 0xf0, 0xe0, 0xf1, 0xf1, 0xe8, 0x01, 0xf2, 0x80, 589 0xf0, 0xe0, 0xf1, 0xf1, 0xe8, 0x01, 0xf2, 0x80,
590 0x80, 0xf8, 0x27, 0x78, 0x56, 0x00, 0xf1, 0x20, 590 0x80, 0xf8, 0x27, 0x78, 0x56, 0x00, 0xf1, 0x20,
591 0x80, 0x00, 0xf1, 0x80, 0xf4, 0x95, 0x49, 0x0b, 591 0x80, 0x00, 0xf1, 0x80, 0xf4, 0x95, 0x49, 0x0b,
592 0xf8, 0x4d, 0x0a, 0xab, 0xf0, 0x20, 0x80, 0x01, 592 0xf8, 0x4d, 0x0a, 0xab, 0xf0, 0x20, 0x80, 0x01,
593 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01, 0xf0, 0x73, 593 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01, 0xf0, 0x73,
594 0x0a, 0xaf, 0xe8, 0x00, 0x75, 0xf8, 0x00, 0x08, 594 0x0a, 0xaf, 0xe8, 0x00, 0x75, 0xf8, 0x00, 0x08,
595 0x00, 0x01, 0xee, 0x02, 0x48, 0x11, 0x8a, 0x11, 595 0x00, 0x01, 0xee, 0x02, 0x48, 0x11, 0x8a, 0x11,
596 0xfc, 0x00, 0x4a, 0x11, 0x88, 0x12, 0x13, 0x02, 596 0xfc, 0x00, 0x4a, 0x11, 0x88, 0x12, 0x13, 0x02,
597 0x77, 0x11, 0x00, 0x00, 0xf8, 0x4d, 0x0a, 0xcb, 597 0x77, 0x11, 0x00, 0x00, 0xf8, 0x4d, 0x0a, 0xcb,
598 0xf3, 0x10, 0x00, 0x01, 0x89, 0x1a, 0xf4, 0x95, 598 0xf3, 0x10, 0x00, 0x01, 0x89, 0x1a, 0xf4, 0x95,
599 0xf0, 0x72, 0x0a, 0xca, 0x48, 0x11, 0x1c, 0xf8, 599 0xf0, 0x72, 0x0a, 0xca, 0x48, 0x11, 0x1c, 0xf8,
600 0x29, 0x7e, 0x88, 0x11, 0x11, 0xf8, 0x29, 0x7e, 600 0x29, 0x7e, 0x88, 0x11, 0x11, 0xf8, 0x29, 0x7e,
601 0xf2, 0x00, 0x00, 0x01, 0x80, 0xf8, 0x29, 0x7e, 601 0xf2, 0x00, 0x00, 0x01, 0x80, 0xf8, 0x29, 0x7e,
602 0x81, 0x92, 0x48, 0x11, 0x8a, 0x11, 0xfc, 0x00, 602 0x81, 0x92, 0x48, 0x11, 0x8a, 0x11, 0xfc, 0x00,
603 0x4a, 0x11, 0xf4, 0x95, 0x71, 0x02, 0x00, 0x11, 603 0x4a, 0x11, 0xf4, 0x95, 0x71, 0x02, 0x00, 0x11,
604 0x88, 0x12, 0xf6, 0xb8, 0xf0, 0x20, 0x7f, 0xff, 604 0x88, 0x12, 0xf6, 0xb8, 0xf0, 0x20, 0x7f, 0xff,
605 0x57, 0xf8, 0x27, 0x70, 0xf2, 0x80, 0xf0, 0x00, 605 0x57, 0xf8, 0x27, 0x70, 0xf2, 0x80, 0xf0, 0x00,
606 0x80, 0x00, 0x80, 0x82, 0x57, 0xf8, 0x27, 0x70, 606 0x80, 0x00, 0x80, 0x82, 0x57, 0xf8, 0x27, 0x70,
607 0xe8, 0x01, 0xf3, 0xf1, 0xf2, 0x80, 0x80, 0xf8, 607 0xe8, 0x01, 0xf3, 0xf1, 0xf2, 0x80, 0x80, 0xf8,
608 0x27, 0x78, 0x77, 0x12, 0x80, 0x00, 0x48, 0x12, 608 0x27, 0x78, 0x77, 0x12, 0x80, 0x00, 0x48, 0x12,
609 0x57, 0xf8, 0x27, 0x70, 0xf2, 0x80, 0x88, 0x12, 609 0x57, 0xf8, 0x27, 0x70, 0xf2, 0x80, 0x88, 0x12,
610 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x82, 0x0a, 0xf4, 610 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x82, 0x0a, 0xf4,
611 0xe8, 0x00, 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01, 611 0xe8, 0x00, 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01,
612 0xf0, 0x73, 0x0a, 0xf9, 0xf0, 0x20, 0x80, 0x01, 612 0xf0, 0x73, 0x0a, 0xf9, 0xf0, 0x20, 0x80, 0x01,
613 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01, 0x45, 0xf8, 613 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01, 0x45, 0xf8,
614 0x27, 0x75, 0xe7, 0x10, 0x43, 0xf8, 0x27, 0x71, 614 0x27, 0x75, 0xe7, 0x10, 0x43, 0xf8, 0x27, 0x71,
615 0x83, 0xf8, 0x00, 0x12, 0x6d, 0xe8, 0x00, 0x04, 615 0x83, 0xf8, 0x00, 0x12, 0x6d, 0xe8, 0x00, 0x04,
616 0x6d, 0x8a, 0xf6, 0xaa, 0xf8, 0x30, 0x0b, 0x0a, 616 0x6d, 0x8a, 0xf6, 0xaa, 0xf8, 0x30, 0x0b, 0x0a,
617 0xf2, 0x73, 0x0b, 0x25, 0x77, 0x11, 0x00, 0x00, 617 0xf2, 0x73, 0x0b, 0x25, 0x77, 0x11, 0x00, 0x00,
618 0x57, 0xf8, 0x27, 0x70, 0xf0, 0x20, 0x7f, 0xff, 618 0x57, 0xf8, 0x27, 0x70, 0xf0, 0x20, 0x7f, 0xff,
619 0xf2, 0x80, 0x49, 0x11, 0xf5, 0x00, 0xf3, 0x00, 619 0xf2, 0x80, 0x49, 0x11, 0xf5, 0x00, 0xf3, 0x00,
620 0x80, 0x00, 0x61, 0xf8, 0x00, 0x0b, 0x80, 0x00, 620 0x80, 0x00, 0x61, 0xf8, 0x00, 0x0b, 0x80, 0x00,
621 0xf8, 0x30, 0x0b, 0x1d, 0xf1, 0x20, 0x80, 0x00, 621 0xf8, 0x30, 0x0b, 0x1d, 0xf1, 0x20, 0x80, 0x00,
622 0xf5, 0x20, 0x89, 0x11, 0xf4, 0x95, 0x48, 0x11, 622 0xf5, 0x20, 0x89, 0x11, 0xf4, 0x95, 0x48, 0x11,
623 0x6f, 0xf8, 0x27, 0x71, 0x0d, 0x00, 0xf4, 0x95, 623 0x6f, 0xf8, 0x27, 0x71, 0x0d, 0x00, 0xf4, 0x95,
624 0x49, 0x0b, 0x4f, 0xf8, 0x27, 0x70, 0x48, 0x11, 624 0x49, 0x0b, 0x4f, 0xf8, 0x27, 0x70, 0x48, 0x11,
625 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0x4a, 0x16, 625 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0x4a, 0x16,
626 0x4a, 0x17, 0xee, 0xf0, 0x88, 0x17, 0x10, 0x17, 626 0x4a, 0x17, 0xee, 0xf0, 0x88, 0x17, 0x10, 0x17,
627 0x80, 0x05, 0x10, 0x16, 0x80, 0x06, 0x10, 0x15, 627 0x80, 0x05, 0x10, 0x16, 0x80, 0x06, 0x10, 0x15,
628 0x80, 0x07, 0x71, 0x14, 0x00, 0x11, 0x10, 0x05, 628 0x80, 0x07, 0x71, 0x14, 0x00, 0x11, 0x10, 0x05,
629 0xf0, 0x30, 0x00, 0x01, 0x88, 0x10, 0x10, 0x06, 629 0xf0, 0x30, 0x00, 0x01, 0x88, 0x10, 0x10, 0x06,
630 0xf0, 0x30, 0x00, 0x01, 0x80, 0x08, 0x49, 0x11, 630 0xf0, 0x30, 0x00, 0x01, 0x80, 0x08, 0x49, 0x11,
631 0x10, 0x05, 0xf6, 0x01, 0x80, 0x09, 0x10, 0x06, 631 0x10, 0x05, 0xf6, 0x01, 0x80, 0x09, 0x10, 0x06,
632 0x61, 0xf8, 0x00, 0x08, 0x00, 0x01, 0xf8, 0x20, 632 0x61, 0xf8, 0x00, 0x08, 0x00, 0x01, 0xf8, 0x20,
633 0x0b, 0x4b, 0x10, 0x09, 0xf0, 0x00, 0x00, 0x01, 633 0x0b, 0x4b, 0x10, 0x09, 0xf0, 0x00, 0x00, 0x01,
634 0x80, 0x09, 0x71, 0x08, 0x00, 0x12, 0xf4, 0xaa, 634 0x80, 0x09, 0x71, 0x08, 0x00, 0x12, 0xf4, 0xaa,
635 0xf8, 0x30, 0x0b, 0x54, 0x10, 0x09, 0xf0, 0x00, 635 0xf8, 0x30, 0x0b, 0x54, 0x10, 0x09, 0xf0, 0x00,
636 0x00, 0x01, 0x80, 0x09, 0x12, 0x09, 0x49, 0x11, 636 0x00, 0x01, 0x80, 0x09, 0x12, 0x09, 0x49, 0x11,
637 0xf4, 0x7f, 0x80, 0x09, 0xf6, 0x20, 0x80, 0x0a, 637 0xf4, 0x7f, 0x80, 0x09, 0xf6, 0x20, 0x80, 0x0a,
638 0x56, 0xf8, 0x27, 0x70, 0x4e, 0x0c, 0x10, 0x09, 638 0x56, 0xf8, 0x27, 0x70, 0x4e, 0x0c, 0x10, 0x09,
639 0x80, 0x00, 0x48, 0x18, 0xf2, 0x74, 0x0a, 0xce, 639 0x80, 0x00, 0x48, 0x18, 0xf2, 0x74, 0x0a, 0xce,
640 0xf0, 0x00, 0x00, 0x04, 0x88, 0x16, 0xf4, 0x95, 640 0xf0, 0x00, 0x00, 0x04, 0x88, 0x16, 0xf4, 0x95,
641 0xf4, 0x95, 0x6c, 0x86, 0x0b, 0x6d, 0xf2, 0x73, 641 0xf4, 0x95, 0x6c, 0x86, 0x0b, 0x6d, 0xf2, 0x73,
642 0x0c, 0x59, 0xf4, 0x95, 0xe8, 0x00, 0xf6, 0xb8, 642 0x0c, 0x59, 0xf4, 0x95, 0xe8, 0x00, 0xf6, 0xb8,
643 0xf4, 0x95, 0x56, 0x0c, 0xf0, 0xf9, 0x88, 0x12, 643 0xf4, 0x95, 0x56, 0x0c, 0xf0, 0xf9, 0x88, 0x12,
644 0xf4, 0x95, 0xf4, 0x95, 0x70, 0xe2, 0x27, 0x7c, 644 0xf4, 0x95, 0xf4, 0x95, 0x70, 0xe2, 0x27, 0x7c,
645 0x29, 0x86, 0xe8, 0x00, 0x80, 0x0e, 0x48, 0x11, 645 0x29, 0x86, 0xe8, 0x00, 0x80, 0x0e, 0x48, 0x11,
646 0xf8, 0x45, 0x0b, 0xcc, 0x77, 0x10, 0x00, 0x01, 646 0xf8, 0x45, 0x0b, 0xcc, 0x77, 0x10, 0x00, 0x01,
647 0xf4, 0xa9, 0xf8, 0x30, 0x0b, 0x89, 0x6c, 0xe1, 647 0xf4, 0xa9, 0xf8, 0x30, 0x0b, 0x89, 0x6c, 0xe1,
648 0xff, 0xfd, 0x0b, 0x8b, 0x10, 0xe7, 0x00, 0x02, 648 0xff, 0xfd, 0x0b, 0x8b, 0x10, 0xe7, 0x00, 0x02,
649 0x80, 0x0e, 0xf0, 0x73, 0x0b, 0x8b, 0x10, 0x87, 649 0x80, 0x0e, 0xf0, 0x73, 0x0b, 0x8b, 0x10, 0x87,
650 0x80, 0x0e, 0xe7, 0x10, 0xf5, 0xae, 0xf8, 0x20, 650 0x80, 0x0e, 0xe7, 0x10, 0xf5, 0xae, 0xf8, 0x20,
651 0x0b, 0xb2, 0x70, 0x00, 0x00, 0x17, 0x70, 0x01, 651 0x0b, 0xb2, 0x70, 0x00, 0x00, 0x17, 0x70, 0x01,
652 0x00, 0x16, 0x10, 0x04, 0xf0, 0x74, 0x06, 0xce, 652 0x00, 0x16, 0x10, 0x04, 0xf0, 0x74, 0x06, 0xce,
653 0x48, 0x17, 0x49, 0x16, 0xf6, 0x00, 0x88, 0x17, 653 0x48, 0x17, 0x49, 0x16, 0xf6, 0x00, 0x88, 0x17,
654 0x48, 0x11, 0xf6, 0x20, 0x88, 0x11, 0x10, 0x09, 654 0x48, 0x11, 0xf6, 0x20, 0x88, 0x11, 0x10, 0x09,
655 0xf6, 0x20, 0x80, 0x00, 0x48, 0x18, 0xf2, 0x74, 655 0xf6, 0x20, 0x80, 0x00, 0x48, 0x18, 0xf2, 0x74,
656 0x0a, 0xce, 0xf0, 0x00, 0x00, 0x04, 0x88, 0x16, 656 0x0a, 0xce, 0xf0, 0x00, 0x00, 0x04, 0x88, 0x16,
657 0x10, 0x04, 0x70, 0x00, 0x00, 0x17, 0x70, 0x01, 657 0x10, 0x04, 0x70, 0x00, 0x00, 0x17, 0x70, 0x01,
658 0x00, 0x11, 0xf0, 0x74, 0x06, 0xce, 0x48, 0x11, 658 0x00, 0x11, 0xf0, 0x74, 0x06, 0xce, 0x48, 0x11,
659 0x00, 0x04, 0x80, 0x04, 0xf0, 0x73, 0x0b, 0xbc, 659 0x00, 0x04, 0x80, 0x04, 0xf0, 0x73, 0x0b, 0xbc,
660 0x70, 0x00, 0x00, 0x17, 0x70, 0x01, 0x00, 0x11, 660 0x70, 0x00, 0x00, 0x17, 0x70, 0x01, 0x00, 0x11,
661 0x10, 0x04, 0xf0, 0x74, 0x06, 0xce, 0x48, 0x11, 661 0x10, 0x04, 0xf0, 0x74, 0x06, 0xce, 0x48, 0x11,
662 0x00, 0x04, 0x80, 0x04, 0x49, 0x11, 0x48, 0x16, 662 0x00, 0x04, 0x80, 0x04, 0x49, 0x11, 0x48, 0x16,
663 0xf6, 0x20, 0x88, 0x16, 0xf4, 0x95, 0xf4, 0x95, 663 0xf6, 0x20, 0x88, 0x16, 0xf4, 0x95, 0xf4, 0x95,
664 0x6c, 0x86, 0x0b, 0xcc, 0x10, 0x0a, 0x80, 0x00, 664 0x6c, 0x86, 0x0b, 0xcc, 0x10, 0x0a, 0x80, 0x00,
665 0x48, 0x18, 0xf2, 0x74, 0x0a, 0xce, 0xf0, 0x00, 665 0x48, 0x18, 0xf2, 0x74, 0x0a, 0xce, 0xf0, 0x00,
666 0x00, 0x04, 0x88, 0x16, 0x12, 0x0a, 0xf8, 0x45, 666 0x00, 0x04, 0x88, 0x16, 0x12, 0x0a, 0xf8, 0x45,
667 0x0c, 0x33, 0x71, 0x0a, 0x00, 0x10, 0xf4, 0xae, 667 0x0c, 0x33, 0x71, 0x0a, 0x00, 0x10, 0xf4, 0xae,
668 0xf8, 0x30, 0x0c, 0x1c, 0x48, 0x16, 0xf0, 0xe1, 668 0xf8, 0x30, 0x0c, 0x1c, 0x48, 0x16, 0xf0, 0xe1,
669 0x88, 0x11, 0x12, 0x08, 0xf8, 0x45, 0x0b, 0xdb, 669 0x88, 0x11, 0x12, 0x08, 0xf8, 0x45, 0x0b, 0xdb,
670 0x6d, 0x89, 0x12, 0x07, 0xf8, 0x45, 0x0b, 0xe9, 670 0x6d, 0x89, 0x12, 0x07, 0xf8, 0x45, 0x0b, 0xe9,
671 0x10, 0x07, 0x80, 0x00, 0x70, 0x02, 0x00, 0x11, 671 0x10, 0x07, 0x80, 0x00, 0x70, 0x02, 0x00, 0x11,
672 0x10, 0x06, 0x80, 0x01, 0x10, 0x04, 0xf0, 0x74, 672 0x10, 0x06, 0x80, 0x01, 0x10, 0x04, 0xf0, 0x74,
673 0x06, 0xdc, 0xf0, 0x73, 0x0b, 0xef, 0x48, 0x11, 673 0x06, 0xdc, 0xf0, 0x73, 0x0b, 0xef, 0x48, 0x11,
674 0x6f, 0x00, 0x0c, 0x9f, 0x10, 0x04, 0xf0, 0x74, 674 0x6f, 0x00, 0x0c, 0x9f, 0x10, 0x04, 0xf0, 0x74,
675 0x0a, 0xb3, 0x11, 0x0e, 0xf1, 0xc0, 0x81, 0x0e, 675 0x0a, 0xb3, 0x11, 0x0e, 0xf1, 0xc0, 0x81, 0x0e,
676 0x10, 0x06, 0x49, 0x11, 0xf6, 0x00, 0x80, 0x06, 676 0x10, 0x06, 0x49, 0x11, 0xf6, 0x00, 0x80, 0x06,
677 0x10, 0x05, 0xf6, 0x20, 0x88, 0x11, 0xf0, 0x00, 677 0x10, 0x05, 0xf6, 0x20, 0x88, 0x11, 0xf0, 0x00,
678 0x00, 0x01, 0x48, 0x08, 0x6f, 0x00, 0x0c, 0x9f, 678 0x00, 0x01, 0x48, 0x08, 0x6f, 0x00, 0x0c, 0x9f,
679 0x48, 0x18, 0xf2, 0x74, 0x0a, 0xce, 0xf0, 0x00, 679 0x48, 0x18, 0xf2, 0x74, 0x0a, 0xce, 0xf0, 0x00,
680 0x00, 0x04, 0x12, 0x07, 0xf8, 0x45, 0x0c, 0x11, 680 0x00, 0x04, 0x12, 0x07, 0xf8, 0x45, 0x0c, 0x11,
681 0x10, 0x07, 0x80, 0x00, 0x70, 0x02, 0x00, 0x11, 681 0x10, 0x07, 0x80, 0x00, 0x70, 0x02, 0x00, 0x11,
682 0x10, 0x06, 0x80, 0x01, 0x10, 0x04, 0xf0, 0x74, 682 0x10, 0x06, 0x80, 0x01, 0x10, 0x04, 0xf0, 0x74,
683 0x06, 0xdc, 0xf0, 0x73, 0x0c, 0x17, 0x48, 0x11, 683 0x06, 0xdc, 0xf0, 0x73, 0x0c, 0x17, 0x48, 0x11,
684 0x6f, 0x00, 0x0c, 0x9f, 0x10, 0x04, 0xf0, 0x74, 684 0x6f, 0x00, 0x0c, 0x9f, 0x10, 0x04, 0xf0, 0x74,
685 0x0a, 0xb3, 0x11, 0x0e, 0xf1, 0xc0, 0x81, 0x0e, 685 0x0a, 0xb3, 0x11, 0x0e, 0xf1, 0xc0, 0x81, 0x0e,
686 0xf0, 0x73, 0x0c, 0x33, 0x12, 0x07, 0xf8, 0x45, 686 0xf0, 0x73, 0x0c, 0x33, 0x12, 0x07, 0xf8, 0x45,
687 0x0c, 0x2a, 0x10, 0x07, 0x80, 0x00, 0x10, 0x06, 687 0x0c, 0x2a, 0x10, 0x07, 0x80, 0x00, 0x10, 0x06,
688 0x80, 0x01, 0x10, 0x05, 0x80, 0x02, 0x10, 0x04, 688 0x80, 0x01, 0x10, 0x05, 0x80, 0x02, 0x10, 0x04,
689 0xf0, 0x74, 0x06, 0xdc, 0xf0, 0x73, 0x0c, 0x30, 689 0xf0, 0x74, 0x06, 0xdc, 0xf0, 0x73, 0x0c, 0x30,
690 0x12, 0x05, 0x6f, 0x00, 0x0c, 0x9f, 0x10, 0x04, 690 0x12, 0x05, 0x6f, 0x00, 0x0c, 0x9f, 0x10, 0x04,
691 0xf0, 0x74, 0x0a, 0xb3, 0x11, 0x0e, 0xf1, 0xc0, 691 0xf0, 0x74, 0x0a, 0xb3, 0x11, 0x0e, 0xf1, 0xc0,
692 0x81, 0x0e, 0x76, 0x00, 0x00, 0x01, 0x48, 0x18, 692 0x81, 0x0e, 0x76, 0x00, 0x00, 0x01, 0x48, 0x18,
693 0xf2, 0x74, 0x0a, 0xce, 0xf0, 0x00, 0x00, 0x04, 693 0xf2, 0x74, 0x0a, 0xce, 0xf0, 0x00, 0x00, 0x04,
694 0x71, 0x04, 0x00, 0x11, 0x70, 0x81, 0x29, 0x86, 694 0x71, 0x04, 0x00, 0x11, 0x70, 0x81, 0x29, 0x86,
695 0x10, 0x0e, 0x1c, 0xf8, 0x29, 0x86, 0x80, 0x0e, 695 0x10, 0x0e, 0x1c, 0xf8, 0x29, 0x86, 0x80, 0x0e,
696 0x76, 0x00, 0x00, 0x01, 0x48, 0x18, 0xf2, 0x74, 696 0x76, 0x00, 0x00, 0x01, 0x48, 0x18, 0xf2, 0x74,
697 0x0a, 0xce, 0xf0, 0x00, 0x00, 0x04, 0x10, 0x0e, 697 0x0a, 0xce, 0xf0, 0x00, 0x00, 0x04, 0x10, 0x0e,
698 0x71, 0x04, 0x00, 0x11, 0x80, 0x81, 0x10, 0xf8, 698 0x71, 0x04, 0x00, 0x11, 0x80, 0x81, 0x10, 0xf8,
699 0x29, 0x86, 0xf0, 0x00, 0x00, 0x01, 0xf0, 0x30, 699 0x29, 0x86, 0xf0, 0x00, 0x00, 0x01, 0xf0, 0x30,
700 0x7f, 0xff, 0x80, 0xf8, 0x29, 0x86, 0x10, 0x09, 700 0x7f, 0xff, 0x80, 0xf8, 0x29, 0x86, 0x10, 0x09,
701 0xf0, 0x00, 0x00, 0x02, 0x80, 0x09, 0xee, 0x10, 701 0xf0, 0x00, 0x00, 0x02, 0x80, 0x09, 0xee, 0x10,
702 0x8a, 0x17, 0x8a, 0x16, 0x8a, 0x11, 0xfc, 0x00, 702 0x8a, 0x17, 0x8a, 0x16, 0x8a, 0x11, 0xfc, 0x00,
703 0x10, 0xf8, 0x27, 0x75, 0x08, 0xf8, 0x27, 0x71, 703 0x10, 0xf8, 0x27, 0x75, 0x08, 0xf8, 0x27, 0x71,
704 0xf0, 0x10, 0x00, 0x01, 0x48, 0x08, 0xfc, 0x00, 704 0xf0, 0x10, 0x00, 0x01, 0x48, 0x08, 0xfc, 0x00,
705 0x4a, 0x11, 0x4a, 0x16, 0xee, 0xff, 0xf4, 0x95, 705 0x4a, 0x11, 0x4a, 0x16, 0xee, 0xff, 0xf4, 0x95,
706 0x71, 0x04, 0x00, 0x16, 0xf0, 0x00, 0x00, 0x01, 706 0x71, 0x04, 0x00, 0x16, 0xf0, 0x00, 0x00, 0x01,
707 0x48, 0x08, 0x4e, 0xf8, 0x29, 0x7c, 0x6d, 0xee, 707 0x48, 0x08, 0x4e, 0xf8, 0x29, 0x7c, 0x6d, 0xee,
708 0xff, 0xfd, 0x48, 0x16, 0xf8, 0x45, 0x0c, 0x99, 708 0xff, 0xfd, 0x48, 0x16, 0xf8, 0x45, 0x0c, 0x99,
709 0x56, 0xf8, 0x29, 0x7c, 0xf0, 0x74, 0x0a, 0x5a, 709 0x56, 0xf8, 0x29, 0x7c, 0xf0, 0x74, 0x0a, 0x5a,
710 0x88, 0x11, 0x10, 0xf8, 0x29, 0x7d, 0xf0, 0x00, 710 0x88, 0x11, 0x10, 0xf8, 0x29, 0x7d, 0xf0, 0x00,
711 0x00, 0x01, 0x48, 0x08, 0x4e, 0xf8, 0x29, 0x7c, 711 0x00, 0x01, 0x48, 0x08, 0x4e, 0xf8, 0x29, 0x7c,
712 0x10, 0xf8, 0x29, 0x82, 0xf0, 0x00, 0x00, 0x01, 712 0x10, 0xf8, 0x29, 0x82, 0xf0, 0x00, 0x00, 0x01,
713 0x88, 0x10, 0xf4, 0x95, 0xf4, 0x95, 0xf4, 0xa9, 713 0x88, 0x10, 0xf4, 0x95, 0xf4, 0x95, 0xf4, 0xa9,
714 0xfa, 0x30, 0x0c, 0x96, 0x80, 0xf8, 0x29, 0x82, 714 0xfa, 0x30, 0x0c, 0x96, 0x80, 0xf8, 0x29, 0x82,
715 0x56, 0xf8, 0x29, 0x80, 0xf0, 0x00, 0x00, 0x01, 715 0x56, 0xf8, 0x29, 0x80, 0xf0, 0x00, 0x00, 0x01,
716 0x4e, 0xf8, 0x29, 0x80, 0x73, 0x11, 0x29, 0x82, 716 0x4e, 0xf8, 0x29, 0x80, 0x73, 0x11, 0x29, 0x82,
717 0x6c, 0xee, 0xff, 0xff, 0x0c, 0x76, 0xee, 0x01, 717 0x6c, 0xee, 0xff, 0xff, 0x0c, 0x76, 0xee, 0x01,
718 0x8a, 0x16, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 718 0x8a, 0x16, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11,
719 0x76, 0xf8, 0x29, 0x84, 0x00, 0x00, 0x76, 0xf8, 719 0x76, 0xf8, 0x29, 0x84, 0x00, 0x00, 0x76, 0xf8,
720 0x29, 0x85, 0x00, 0x01, 0xe8, 0x00, 0x4e, 0xf8, 720 0x29, 0x85, 0x00, 0x01, 0xe8, 0x00, 0x4e, 0xf8,
721 0x2a, 0x0c, 0x76, 0xf8, 0x29, 0x86, 0x00, 0x00, 721 0x2a, 0x0c, 0x76, 0xf8, 0x29, 0x86, 0x00, 0x00,
722 0x76, 0xf8, 0x29, 0x87, 0x00, 0x00, 0x77, 0x11, 722 0x76, 0xf8, 0x29, 0x87, 0x00, 0x00, 0x77, 0x11,
723 0x29, 0x88, 0x76, 0x81, 0xaa, 0xaa, 0x76, 0xe1, 723 0x29, 0x88, 0x76, 0x81, 0xaa, 0xaa, 0x76, 0xe1,
724 0x00, 0x01, 0xaa, 0xaa, 0x76, 0xe1, 0x00, 0x02, 724 0x00, 0x01, 0xaa, 0xaa, 0x76, 0xe1, 0x00, 0x02,
725 0x00, 0x00, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 725 0x00, 0x00, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11,
726 0xee, 0xfc, 0xf4, 0x95, 0x71, 0x06, 0x00, 0x14, 726 0xee, 0xfc, 0xf4, 0x95, 0x71, 0x06, 0x00, 0x14,
727 0x71, 0x07, 0x00, 0x13, 0x71, 0x08, 0x00, 0x12, 727 0x71, 0x07, 0x00, 0x13, 0x71, 0x08, 0x00, 0x12,
728 0x71, 0x09, 0x00, 0x15, 0x77, 0x10, 0x00, 0xff, 728 0x71, 0x09, 0x00, 0x15, 0x77, 0x10, 0x00, 0xff,
729 0xf4, 0xaa, 0xf8, 0x30, 0x0d, 0x44, 0x49, 0x13, 729 0xf4, 0xaa, 0xf8, 0x30, 0x0d, 0x44, 0x49, 0x13,
730 0x53, 0xf8, 0x2a, 0x0c, 0x4f, 0xf8, 0x2a, 0x0c, 730 0x53, 0xf8, 0x2a, 0x0c, 0x4f, 0xf8, 0x2a, 0x0c,
731 0x73, 0x12, 0x00, 0x0e, 0xf1, 0x66, 0x00, 0x0d, 731 0x73, 0x12, 0x00, 0x0e, 0xf1, 0x66, 0x00, 0x0d,
732 0x89, 0x11, 0xf4, 0x95, 0x77, 0x10, 0x00, 0x01, 732 0x89, 0x11, 0xf4, 0x95, 0x77, 0x10, 0x00, 0x01,
733 0x71, 0xe1, 0x24, 0x00, 0x00, 0x11, 0xf4, 0xa9, 733 0x71, 0xe1, 0x24, 0x00, 0x00, 0x11, 0xf4, 0xa9,
734 0xf8, 0x30, 0x0d, 0x17, 0x77, 0x10, 0x00, 0x02, 734 0xf8, 0x30, 0x0d, 0x17, 0x77, 0x10, 0x00, 0x02,
735 0xf4, 0xa9, 0xf8, 0x30, 0x0c, 0xec, 0x77, 0x11, 735 0xf4, 0xa9, 0xf8, 0x30, 0x0c, 0xec, 0x77, 0x11,
736 0x29, 0x8a, 0x76, 0x81, 0x00, 0x00, 0xe8, 0x00, 736 0x29, 0x8a, 0x76, 0x81, 0x00, 0x00, 0xe8, 0x00,
737 0x77, 0x14, 0x00, 0x00, 0x77, 0x13, 0x00, 0x00, 737 0x77, 0x14, 0x00, 0x00, 0x77, 0x13, 0x00, 0x00,
738 0xf0, 0x73, 0x0d, 0x48, 0x6c, 0x83, 0x0c, 0xfa, 738 0xf0, 0x73, 0x0d, 0x48, 0x6c, 0x83, 0x0c, 0xfa,
739 0x77, 0x11, 0x29, 0x8a, 0x48, 0x12, 0xf0, 0xe8, 739 0x77, 0x11, 0x29, 0x8a, 0x48, 0x12, 0xf0, 0xe8,
740 0xf0, 0x40, 0x80, 0x00, 0x80, 0x81, 0xe8, 0x00, 740 0xf0, 0x40, 0x80, 0x00, 0x80, 0x81, 0xe8, 0x00,
741 0x77, 0x14, 0x00, 0x00, 0xf0, 0x73, 0x0d, 0x48, 741 0x77, 0x14, 0x00, 0x00, 0xf0, 0x73, 0x0d, 0x48,
742 0x49, 0x13, 0xf3, 0x40, 0x80, 0x00, 0x81, 0xf8, 742 0x49, 0x13, 0xf3, 0x40, 0x80, 0x00, 0x81, 0xf8,
743 0x29, 0x8a, 0x61, 0xf8, 0x00, 0x15, 0x00, 0x01, 743 0x29, 0x8a, 0x61, 0xf8, 0x00, 0x15, 0x00, 0x01,
744 0xf8, 0x20, 0x0d, 0x07, 0x69, 0xf8, 0x29, 0x8a, 744 0xf8, 0x20, 0x0d, 0x07, 0x69, 0xf8, 0x29, 0x8a,
745 0x40, 0x00, 0x61, 0xf8, 0x00, 0x14, 0x00, 0x01, 745 0x40, 0x00, 0x61, 0xf8, 0x00, 0x14, 0x00, 0x01,
746 0xf8, 0x20, 0x0d, 0x0f, 0x69, 0xf8, 0x29, 0x8a, 746 0xf8, 0x20, 0x0d, 0x0f, 0x69, 0xf8, 0x29, 0x8a,
747 0x20, 0x00, 0x77, 0x11, 0x29, 0x8a, 0x49, 0x12, 747 0x20, 0x00, 0x77, 0x11, 0x29, 0x8a, 0x49, 0x12,
748 0xf3, 0xe8, 0x1b, 0x81, 0x81, 0x81, 0xf0, 0x73, 748 0xf3, 0xe8, 0x1b, 0x81, 0x81, 0x81, 0xf0, 0x73,
749 0x0d, 0x48, 0x11, 0xf8, 0x29, 0x84, 0xf8, 0x4c, 749 0x0d, 0x48, 0x11, 0xf8, 0x29, 0x84, 0xf8, 0x4c,
750 0x0d, 0x37, 0x77, 0x11, 0x29, 0x88, 0x76, 0x81, 750 0x0d, 0x37, 0x77, 0x11, 0x29, 0x88, 0x76, 0x81,
751 0xaa, 0xaa, 0x11, 0xf8, 0x29, 0x85, 0xf3, 0x10, 751 0xaa, 0xaa, 0x11, 0xf8, 0x29, 0x85, 0xf3, 0x10,
752 0x00, 0x01, 0xf3, 0x40, 0xaa, 0x00, 0x81, 0xe1, 752 0x00, 0x01, 0xf3, 0x40, 0xaa, 0x00, 0x81, 0xe1,
753 0x00, 0x01, 0x76, 0x00, 0x00, 0x02, 0x80, 0x01, 753 0x00, 0x01, 0x76, 0x00, 0x00, 0x02, 0x80, 0x01,
754 0x70, 0x02, 0x00, 0x14, 0x70, 0x03, 0x00, 0x13, 754 0x70, 0x02, 0x00, 0x14, 0x70, 0x03, 0x00, 0x13,
755 0xf2, 0x74, 0x0b, 0x28, 0xf4, 0x95, 0x48, 0x11, 755 0xf2, 0x74, 0x0b, 0x28, 0xf4, 0x95, 0x48, 0x11,
756 0x71, 0xf8, 0x29, 0x85, 0x29, 0x84, 0xf0, 0x73, 756 0x71, 0xf8, 0x29, 0x85, 0x29, 0x84, 0xf0, 0x73,
757 0x0d, 0x73, 0x76, 0x00, 0x00, 0x00, 0x80, 0x01, 757 0x0d, 0x73, 0x76, 0x00, 0x00, 0x00, 0x80, 0x01,
758 0x76, 0x02, 0x00, 0x00, 0x70, 0x03, 0x00, 0x13, 758 0x76, 0x02, 0x00, 0x00, 0x70, 0x03, 0x00, 0x13,
759 0xf2, 0x74, 0x0b, 0x28, 0xf4, 0x95, 0xe8, 0x00, 759 0xf2, 0x74, 0x0b, 0x28, 0xf4, 0x95, 0xe8, 0x00,
760 0xf0, 0x73, 0x0d, 0x73, 0x77, 0x11, 0x29, 0x8a, 760 0xf0, 0x73, 0x0d, 0x73, 0x77, 0x11, 0x29, 0x8a,
761 0x70, 0x81, 0x00, 0x13, 0x11, 0xf8, 0x29, 0x84, 761 0x70, 0x81, 0x00, 0x13, 0x11, 0xf8, 0x29, 0x84,
762 0xf8, 0x4c, 0x0d, 0x68, 0x77, 0x11, 0x29, 0x88, 762 0xf8, 0x4c, 0x0d, 0x68, 0x77, 0x11, 0x29, 0x88,
763 0x76, 0x81, 0xaa, 0xaa, 0x11, 0xf8, 0x29, 0x85, 763 0x76, 0x81, 0xaa, 0xaa, 0x11, 0xf8, 0x29, 0x85,
764 0xf3, 0x10, 0x00, 0x01, 0xf3, 0x40, 0xaa, 0x00, 764 0xf3, 0x10, 0x00, 0x01, 0xf3, 0x40, 0xaa, 0x00,
765 0x81, 0xe1, 0x00, 0x01, 0x76, 0x00, 0x00, 0x03, 765 0x81, 0xe1, 0x00, 0x01, 0x76, 0x00, 0x00, 0x03,
766 0x80, 0x01, 0x70, 0x02, 0x00, 0x14, 0x70, 0x03, 766 0x80, 0x01, 0x70, 0x02, 0x00, 0x14, 0x70, 0x03,
767 0x00, 0x13, 0xf2, 0x74, 0x0b, 0x28, 0xf4, 0x95, 767 0x00, 0x13, 0xf2, 0x74, 0x0b, 0x28, 0xf4, 0x95,
768 0x48, 0x11, 0x71, 0xf8, 0x29, 0x85, 0x29, 0x84, 768 0x48, 0x11, 0x71, 0xf8, 0x29, 0x85, 0x29, 0x84,
769 0xf0, 0x73, 0x0d, 0x73, 0x76, 0x00, 0x00, 0x01, 769 0xf0, 0x73, 0x0d, 0x73, 0x76, 0x00, 0x00, 0x01,
770 0x80, 0x01, 0x70, 0x02, 0x00, 0x14, 0x70, 0x03, 770 0x80, 0x01, 0x70, 0x02, 0x00, 0x14, 0x70, 0x03,
771 0x00, 0x13, 0xf2, 0x74, 0x0b, 0x28, 0xf4, 0x95, 771 0x00, 0x13, 0xf2, 0x74, 0x0b, 0x28, 0xf4, 0x95,
772 0x48, 0x11, 0x6b, 0xf8, 0x29, 0x84, 0xff, 0xff, 772 0x48, 0x11, 0x6b, 0xf8, 0x29, 0x84, 0xff, 0xff,
773 0xee, 0x04, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 773 0xee, 0x04, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11,
774 0xf5, 0x40, 0xf4, 0x95, 0x48, 0x0b, 0xf4, 0x78, 774 0xf5, 0x40, 0xf4, 0x95, 0x48, 0x0b, 0xf4, 0x78,
775 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0xe1, 775 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0xe1,
776 0xff, 0xb9, 0x0d, 0x88, 0xf2, 0x73, 0x0d, 0xa5, 776 0xff, 0xb9, 0x0d, 0x88, 0xf2, 0x73, 0x0d, 0xa5,
777 0xf4, 0x95, 0xe8, 0x60, 0xf2, 0x00, 0x00, 0x06, 777 0xf4, 0x95, 0xe8, 0x60, 0xf2, 0x00, 0x00, 0x06,
778 0x61, 0xf8, 0x00, 0x11, 0x00, 0x20, 0xf8, 0x30, 778 0x61, 0xf8, 0x00, 0x11, 0x00, 0x20, 0xf8, 0x30,
779 0x0d, 0x98, 0x61, 0xf8, 0x00, 0x0b, 0x00, 0x01, 779 0x0d, 0x98, 0x61, 0xf8, 0x00, 0x0b, 0x00, 0x01,
780 0xf8, 0x20, 0x0d, 0xa3, 0xf2, 0x00, 0x00, 0x07, 780 0xf8, 0x20, 0x0d, 0xa3, 0xf2, 0x00, 0x00, 0x07,
781 0xf0, 0x73, 0x0d, 0xa3, 0x61, 0xf8, 0x00, 0x0b, 781 0xf0, 0x73, 0x0d, 0xa3, 0x61, 0xf8, 0x00, 0x0b,
782 0x00, 0x01, 0xf8, 0x20, 0x0d, 0xa1, 0xf2, 0x73, 782 0x00, 0x01, 0xf8, 0x20, 0x0d, 0xa1, 0xf2, 0x73,
783 0x0d, 0xa3, 0xf0, 0x00, 0x00, 0x01, 0xf0, 0x00, 783 0x0d, 0xa3, 0xf0, 0x00, 0x00, 0x01, 0xf0, 0x00,
784 0x00, 0x02, 0x48, 0x08, 0xf4, 0x7f, 0x8a, 0x11, 784 0x00, 0x02, 0x48, 0x08, 0xf4, 0x7f, 0x8a, 0x11,
785 0xfc, 0x00, 0xee, 0xff, 0xf0, 0x74, 0x07, 0xfd, 785 0xfc, 0x00, 0xee, 0xff, 0xf0, 0x74, 0x07, 0xfd,
786 0xf0, 0x74, 0x07, 0x44, 0xf0, 0x74, 0x0d, 0xb4, 786 0xf0, 0x74, 0x07, 0x44, 0xf0, 0x74, 0x0d, 0xb4,
787 0xf0, 0x74, 0x02, 0x05, 0xf0, 0x74, 0x04, 0x60, 787 0xf0, 0x74, 0x02, 0x05, 0xf0, 0x74, 0x04, 0x60,
788 0xf0, 0x73, 0x0d, 0xaa, 0xee, 0xfd, 0x10, 0xf8, 788 0xf0, 0x73, 0x0d, 0xaa, 0xee, 0xfd, 0x10, 0xf8,
789 0x2a, 0xa3, 0xf8, 0x44, 0x0d, 0xcb, 0x10, 0xf8, 789 0x2a, 0xa3, 0xf8, 0x44, 0x0d, 0xcb, 0x10, 0xf8,
790 0x2a, 0xa4, 0xf8, 0x45, 0x0d, 0xd7, 0x76, 0x00, 790 0x2a, 0xa4, 0xf8, 0x45, 0x0d, 0xd7, 0x76, 0x00,
791 0x02, 0x00, 0xf2, 0x74, 0x09, 0xe8, 0xf0, 0x20, 791 0x02, 0x00, 0xf2, 0x74, 0x09, 0xe8, 0xf0, 0x20,
792 0x22, 0x00, 0x76, 0xf8, 0x2a, 0xa4, 0x00, 0x00, 792 0x22, 0x00, 0x76, 0xf8, 0x2a, 0xa4, 0x00, 0x00,
793 0x76, 0xf8, 0x2a, 0xa7, 0x00, 0x00, 0xf0, 0x73, 793 0x76, 0xf8, 0x2a, 0xa7, 0x00, 0x00, 0xf0, 0x73,
794 0x0d, 0xd7, 0x76, 0x00, 0x02, 0x00, 0xf2, 0x74, 794 0x0d, 0xd7, 0x76, 0x00, 0x02, 0x00, 0xf2, 0x74,
795 0x09, 0xe8, 0xf0, 0x20, 0x20, 0x00, 0x76, 0xf8, 795 0x09, 0xe8, 0xf0, 0x20, 0x20, 0x00, 0x76, 0xf8,
796 0x2a, 0xa3, 0x00, 0x00, 0x76, 0xf8, 0x2a, 0xa7, 796 0x2a, 0xa3, 0x00, 0x00, 0x76, 0xf8, 0x2a, 0xa7,
797 0x00, 0x01, 0xf0, 0x74, 0x0c, 0x5e, 0xf0, 0xe0, 797 0x00, 0x01, 0xf0, 0x74, 0x0c, 0x5e, 0xf0, 0xe0,
798 0xf0, 0x10, 0x3a, 0x98, 0xf8, 0x47, 0x0d, 0xe1, 798 0xf0, 0x10, 0x3a, 0x98, 0xf8, 0x47, 0x0d, 0xe1,
799 0x76, 0xf8, 0x27, 0x6e, 0x00, 0x00, 0xee, 0x03, 799 0x76, 0xf8, 0x27, 0x6e, 0x00, 0x00, 0xee, 0x03,
800 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfe, 0x77, 0x11, 800 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfe, 0x77, 0x11,
801 0x20, 0x00, 0x76, 0x00, 0xaa, 0xaa, 0x76, 0x01, 801 0x20, 0x00, 0x76, 0x00, 0xaa, 0xaa, 0x76, 0x01,
802 0x02, 0x00, 0xf2, 0x74, 0x06, 0x6c, 0xf4, 0x95, 802 0x02, 0x00, 0xf2, 0x74, 0x06, 0x6c, 0xf4, 0x95,
803 0x48, 0x11, 0x76, 0x00, 0x55, 0x55, 0x76, 0x01, 803 0x48, 0x11, 0x76, 0x00, 0x55, 0x55, 0x76, 0x01,
804 0x02, 0x00, 0x48, 0x11, 0xf2, 0x74, 0x06, 0x6c, 804 0x02, 0x00, 0x48, 0x11, 0xf2, 0x74, 0x06, 0x6c,
805 0xf0, 0x00, 0x02, 0x00, 0x76, 0xf8, 0x2a, 0xa3, 805 0xf0, 0x00, 0x02, 0x00, 0x76, 0xf8, 0x2a, 0xa3,
806 0x00, 0x00, 0x76, 0xf8, 0x2a, 0xa4, 0x00, 0x00, 806 0x00, 0x00, 0x76, 0xf8, 0x2a, 0xa4, 0x00, 0x00,
807 0xe8, 0x00, 0x4e, 0x00, 0xfb, 0x80, 0x15, 0x3e, 807 0xe8, 0x00, 0x4e, 0x00, 0xfb, 0x80, 0x15, 0x3e,
808 0xf4, 0x95, 0xe8, 0x04, 0x80, 0xf8, 0x2a, 0xa5, 808 0xf4, 0x95, 0xe8, 0x04, 0x80, 0xf8, 0x2a, 0xa5,
809 0x76, 0x00, 0x2a, 0xa8, 0xf9, 0x80, 0x14, 0x87, 809 0x76, 0x00, 0x2a, 0xa8, 0xf9, 0x80, 0x14, 0x87,
810 0x76, 0x00, 0x2a, 0xad, 0xfb, 0x80, 0x13, 0x62, 810 0x76, 0x00, 0x2a, 0xad, 0xfb, 0x80, 0x13, 0x62,
811 0xf4, 0x95, 0xe8, 0x02, 0x10, 0xf8, 0x2a, 0xa5, 811 0xf4, 0x95, 0xe8, 0x02, 0x10, 0xf8, 0x2a, 0xa5,
812 0xf9, 0x80, 0x14, 0x63, 0xfb, 0x80, 0x16, 0x66, 812 0xf9, 0x80, 0x14, 0x63, 0xfb, 0x80, 0x16, 0x66,
813 0xf4, 0x95, 0xe8, 0x1c, 0xfb, 0x80, 0x16, 0x87, 813 0xf4, 0x95, 0xe8, 0x1c, 0xfb, 0x80, 0x16, 0x87,
814 0xf4, 0x95, 0xe8, 0x1c, 0xe8, 0x01, 0x4e, 0x00, 814 0xf4, 0x95, 0xe8, 0x1c, 0xe8, 0x01, 0x4e, 0x00,
815 0xfb, 0x80, 0x17, 0xd6, 0xf4, 0x95, 0xe8, 0x00, 815 0xfb, 0x80, 0x17, 0xd6, 0xf4, 0x95, 0xe8, 0x00,
816 0x80, 0xf8, 0x2a, 0xa6, 0x76, 0x00, 0x2a, 0xb7, 816 0x80, 0xf8, 0x2a, 0xa6, 0x76, 0x00, 0x2a, 0xb7,
817 0xf9, 0x80, 0x16, 0xaa, 0x10, 0xf8, 0x2a, 0xa6, 817 0xf9, 0x80, 0x16, 0xaa, 0x10, 0xf8, 0x2a, 0xa6,
818 0xf9, 0x80, 0x17, 0x5c, 0x10, 0xf8, 0x2a, 0xa6, 818 0xf9, 0x80, 0x17, 0x5c, 0x10, 0xf8, 0x2a, 0xa6,
819 0xf9, 0x80, 0x17, 0x6f, 0xee, 0x02, 0x8a, 0x11, 819 0xf9, 0x80, 0x17, 0x6f, 0xee, 0x02, 0x8a, 0x11,
820 0xfc, 0x00, 0xf4, 0x95, 0x4a, 0x08, 0x4a, 0x09, 820 0xfc, 0x00, 0xf4, 0x95, 0x4a, 0x08, 0x4a, 0x09,
821 0x4a, 0x0a, 0x4a, 0x07, 0x4a, 0x1d, 0x68, 0xf8, 821 0x4a, 0x0a, 0x4a, 0x07, 0x4a, 0x1d, 0x68, 0xf8,
822 0x00, 0x07, 0x7d, 0x3f, 0x69, 0xf8, 0x00, 0x07, 822 0x00, 0x07, 0x7d, 0x3f, 0x69, 0xf8, 0x00, 0x07,
823 0x40, 0x00, 0x68, 0xf8, 0x00, 0x1d, 0xff, 0xfc, 823 0x40, 0x00, 0x68, 0xf8, 0x00, 0x1d, 0xff, 0xfc,
824 0x10, 0xf8, 0x2a, 0xa7, 0xf8, 0x44, 0x0e, 0x4b, 824 0x10, 0xf8, 0x2a, 0xa7, 0xf8, 0x44, 0x0e, 0x4b,
825 0x76, 0xf8, 0x2a, 0xa3, 0x00, 0x01, 0xf0, 0x73, 825 0x76, 0xf8, 0x2a, 0xa3, 0x00, 0x01, 0xf0, 0x73,
826 0x0e, 0x4e, 0x76, 0xf8, 0x2a, 0xa4, 0x00, 0x01, 826 0x0e, 0x4e, 0x76, 0xf8, 0x2a, 0xa4, 0x00, 0x01,
827 0x8a, 0x1d, 0x8a, 0x07, 0x8a, 0x0a, 0x8a, 0x09, 827 0x8a, 0x1d, 0x8a, 0x07, 0x8a, 0x0a, 0x8a, 0x09,
828 0x8a, 0x08, 0xf4, 0xeb, 0x4a, 0x11, 0x4a, 0x16, 828 0x8a, 0x08, 0xf4, 0xeb, 0x4a, 0x11, 0x4a, 0x16,
829 0x4a, 0x17, 0xee, 0xfe, 0x88, 0x0e, 0x71, 0x08, 829 0x4a, 0x17, 0xee, 0xfe, 0x88, 0x0e, 0x71, 0x08,
830 0x00, 0x16, 0x71, 0x06, 0x00, 0x17, 0x11, 0x07, 830 0x00, 0x16, 0x71, 0x06, 0x00, 0x17, 0x11, 0x07,
831 0xf0, 0x66, 0x00, 0x0d, 0xf0, 0x00, 0x25, 0xa0, 831 0xf0, 0x66, 0x00, 0x0d, 0xf0, 0x00, 0x25, 0xa0,
832 0x88, 0x11, 0x76, 0x01, 0x00, 0x06, 0x81, 0x00, 832 0x88, 0x11, 0x76, 0x01, 0x00, 0x06, 0x81, 0x00,
833 0xf2, 0x74, 0x06, 0xce, 0xf0, 0x00, 0x00, 0x01, 833 0xf2, 0x74, 0x06, 0xce, 0xf0, 0x00, 0x00, 0x01,
834 0x76, 0x01, 0x00, 0x06, 0x70, 0x00, 0x00, 0x16, 834 0x76, 0x01, 0x00, 0x06, 0x70, 0x00, 0x00, 0x16,
835 0x48, 0x11, 0xf2, 0x74, 0x06, 0xce, 0xf0, 0x00, 835 0x48, 0x11, 0xf2, 0x74, 0x06, 0xce, 0xf0, 0x00,
836 0x00, 0x07, 0x70, 0x81, 0x00, 0x17, 0xee, 0x02, 836 0x00, 0x07, 0x70, 0x81, 0x00, 0x17, 0xee, 0x02,
837 0x8a, 0x17, 0x8a, 0x16, 0x8a, 0x11, 0xfc, 0x00, 837 0x8a, 0x17, 0x8a, 0x16, 0x8a, 0x11, 0xfc, 0x00,
838 0x4a, 0x11, 0x88, 0x0e, 0x71, 0x02, 0x00, 0x12, 838 0x4a, 0x11, 0x88, 0x0e, 0x71, 0x02, 0x00, 0x12,
839 0x11, 0x03, 0xf0, 0x66, 0x00, 0x0d, 0xf0, 0x00, 839 0x11, 0x03, 0xf0, 0x66, 0x00, 0x0d, 0xf0, 0x00,
840 0x24, 0x00, 0x88, 0x11, 0xf4, 0x95, 0x70, 0x81, 840 0x24, 0x00, 0x88, 0x11, 0xf4, 0x95, 0x70, 0x81,
841 0x00, 0x12, 0x6e, 0xe2, 0xff, 0xfe, 0x0e, 0x8d, 841 0x00, 0x12, 0x6e, 0xe2, 0xff, 0xfe, 0x0e, 0x8d,
842 0xf4, 0x95, 0xe8, 0x00, 0xe8, 0x01, 0x80, 0xe1, 842 0xf4, 0x95, 0xe8, 0x00, 0xe8, 0x01, 0x80, 0xe1,
843 0x00, 0x02, 0x76, 0xe1, 0x00, 0x03, 0x00, 0xff, 843 0x00, 0x02, 0x76, 0xe1, 0x00, 0x03, 0x00, 0xff,
844 0x76, 0xe1, 0x00, 0x04, 0x00, 0x00, 0x76, 0xe1, 844 0x76, 0xe1, 0x00, 0x04, 0x00, 0x00, 0x76, 0xe1,
845 0x00, 0x0b, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x0c, 845 0x00, 0x0b, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x0c,
846 0x00, 0x00, 0x81, 0xe1, 0x00, 0x01, 0x8a, 0x11, 846 0x00, 0x00, 0x81, 0xe1, 0x00, 0x01, 0x8a, 0x11,
847 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfc, 0x88, 0x0e, 847 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfc, 0x88, 0x0e,
848 0xf4, 0x95, 0xf1, 0x66, 0x00, 0x0d, 0xf3, 0x00, 848 0xf4, 0x95, 0xf1, 0x66, 0x00, 0x0d, 0xf3, 0x00,
849 0x24, 0x00, 0x89, 0x11, 0xf4, 0x95, 0xf4, 0x95, 849 0x24, 0x00, 0x89, 0x11, 0xf4, 0x95, 0xf4, 0x95,
850 0x76, 0xe1, 0x00, 0x0c, 0x00, 0x00, 0x76, 0xe1, 850 0x76, 0xe1, 0x00, 0x0c, 0x00, 0x00, 0x76, 0xe1,
851 0x00, 0x0b, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x02, 851 0x00, 0x0b, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x02,
852 0x00, 0x01, 0x76, 0x00, 0x00, 0x00, 0x76, 0x01, 852 0x00, 0x01, 0x76, 0x00, 0x00, 0x00, 0x76, 0x01,
853 0x00, 0x00, 0x80, 0x02, 0x76, 0x03, 0x00, 0x00, 853 0x00, 0x00, 0x80, 0x02, 0x76, 0x03, 0x00, 0x00,
854 0xf2, 0x74, 0x0c, 0xb9, 0xf4, 0x95, 0xe8, 0x00, 854 0xf2, 0x74, 0x0c, 0xb9, 0xf4, 0x95, 0xe8, 0x00,
855 0xee, 0x04, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 855 0xee, 0x04, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11,
856 0x88, 0x19, 0xf4, 0x95, 0x73, 0x19, 0x00, 0x0e, 856 0x88, 0x19, 0xf4, 0x95, 0x73, 0x19, 0x00, 0x0e,
857 0xf1, 0x66, 0x00, 0x0d, 0xf2, 0x00, 0x24, 0x00, 857 0xf1, 0x66, 0x00, 0x0d, 0xf2, 0x00, 0x24, 0x00,
858 0x77, 0x15, 0x25, 0xa0, 0x77, 0x14, 0x00, 0x00, 858 0x77, 0x15, 0x25, 0xa0, 0x77, 0x14, 0x00, 0x00,
859 0x77, 0x1a, 0x00, 0x1f, 0xf0, 0x72, 0x0f, 0x14, 859 0x77, 0x1a, 0x00, 0x1f, 0xf0, 0x72, 0x0f, 0x14,
860 0xf6, 0xb8, 0x49, 0x19, 0x09, 0x85, 0xf8, 0x4c, 860 0xf6, 0xb8, 0x49, 0x19, 0x09, 0x85, 0xf8, 0x4c,
861 0x0f, 0x13, 0xf1, 0x00, 0x00, 0x05, 0x89, 0x11, 861 0x0f, 0x13, 0xf1, 0x00, 0x00, 0x05, 0x89, 0x11,
862 0x49, 0x15, 0xf3, 0x00, 0x00, 0x01, 0x89, 0x13, 862 0x49, 0x15, 0xf3, 0x00, 0x00, 0x01, 0x89, 0x13,
863 0x49, 0x15, 0xf3, 0x00, 0x00, 0x07, 0x89, 0x12, 863 0x49, 0x15, 0xf3, 0x00, 0x00, 0x07, 0x89, 0x12,
864 0x11, 0x93, 0x1d, 0x91, 0x19, 0x92, 0x89, 0x10, 864 0x11, 0x93, 0x1d, 0x91, 0x19, 0x92, 0x89, 0x10,
865 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x80, 0x0f, 0x13, 865 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x80, 0x0f, 0x13,
866 0x11, 0x93, 0x1d, 0x91, 0x19, 0x92, 0x89, 0x10, 866 0x11, 0x93, 0x1d, 0x91, 0x19, 0x92, 0x89, 0x10,
867 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x80, 0x0f, 0x13, 867 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x80, 0x0f, 0x13,
868 0x11, 0x93, 0x1d, 0x91, 0x19, 0x92, 0x89, 0x10, 868 0x11, 0x93, 0x1d, 0x91, 0x19, 0x92, 0x89, 0x10,
869 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x80, 0x0f, 0x13, 869 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x80, 0x0f, 0x13,
870 0x11, 0x93, 0x1d, 0x91, 0x19, 0x92, 0x89, 0x10, 870 0x11, 0x93, 0x1d, 0x91, 0x19, 0x92, 0x89, 0x10,
871 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x80, 0x0f, 0x13, 871 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x80, 0x0f, 0x13,
872 0x11, 0x93, 0x1d, 0x91, 0x19, 0x92, 0x89, 0x10, 872 0x11, 0x93, 0x1d, 0x91, 0x19, 0x92, 0x89, 0x10,
873 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x80, 0x0f, 0x13, 873 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x80, 0x0f, 0x13,
874 0x11, 0x93, 0x1d, 0x91, 0x19, 0x92, 0x89, 0x11, 874 0x11, 0x93, 0x1d, 0x91, 0x19, 0x92, 0x89, 0x11,
875 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x81, 0x0f, 0x13, 875 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x81, 0x0f, 0x13,
876 0x6d, 0x94, 0x6d, 0xed, 0x00, 0x0d, 0x48, 0x14, 876 0x6d, 0x94, 0x6d, 0xed, 0x00, 0x0d, 0x48, 0x14,
877 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0x4a, 0x16, 877 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0x4a, 0x16,
878 0x4a, 0x17, 0xee, 0xf8, 0x88, 0x17, 0x10, 0x0d, 878 0x4a, 0x17, 0xee, 0xf8, 0x88, 0x17, 0x10, 0x0d,
879 0x80, 0x04, 0x10, 0x0c, 0x80, 0x05, 0x71, 0x0e, 879 0x80, 0x04, 0x10, 0x0c, 0x80, 0x05, 0x71, 0x0e,
880 0x00, 0x16, 0x73, 0x17, 0x00, 0x0e, 0xf0, 0x66, 880 0x00, 0x16, 0x73, 0x17, 0x00, 0x0e, 0xf0, 0x66,
881 0x00, 0x0d, 0xf0, 0x00, 0x24, 0x00, 0x88, 0x11, 881 0x00, 0x0d, 0xf0, 0x00, 0x24, 0x00, 0x88, 0x11,
882 0x10, 0xf8, 0x27, 0x63, 0xf8, 0x45, 0x0f, 0x32, 882 0x10, 0xf8, 0x27, 0x63, 0xf8, 0x45, 0x0f, 0x32,
883 0xf2, 0x74, 0x0e, 0x9f, 0xf4, 0x95, 0x48, 0x17, 883 0xf2, 0x74, 0x0e, 0x9f, 0xf4, 0x95, 0x48, 0x17,
884 0x10, 0xf8, 0x27, 0x60, 0xf8, 0x44, 0x0f, 0x3d, 884 0x10, 0xf8, 0x27, 0x60, 0xf8, 0x44, 0x0f, 0x3d,
885 0x60, 0xe1, 0x00, 0x02, 0x00, 0x01, 0xf8, 0x20, 885 0x60, 0xe1, 0x00, 0x02, 0x00, 0x01, 0xf8, 0x20,
886 0x0f, 0x6d, 0xf0, 0x73, 0x11, 0x33, 0x10, 0x04, 886 0x0f, 0x6d, 0xf0, 0x73, 0x11, 0x33, 0x10, 0x04,
887 0x80, 0x00, 0x10, 0x05, 0xf0, 0x74, 0x06, 0x9f, 887 0x80, 0x00, 0x10, 0x05, 0xf0, 0x74, 0x06, 0x9f,
888 0x11, 0x04, 0xf3, 0x00, 0x00, 0x01, 0x81, 0x04, 888 0x11, 0x04, 0xf3, 0x00, 0x00, 0x01, 0x81, 0x04,
889 0x6d, 0x8e, 0x77, 0x10, 0x00, 0x01, 0x71, 0xe1, 889 0x6d, 0x8e, 0x77, 0x10, 0x00, 0x01, 0x71, 0xe1,
890 0x00, 0x02, 0x00, 0x12, 0xf4, 0xaa, 0xf8, 0x30, 890 0x00, 0x02, 0x00, 0x12, 0xf4, 0xaa, 0xf8, 0x30,
891 0x0f, 0x62, 0x77, 0x10, 0x00, 0x02, 0xf4, 0xaa, 891 0x0f, 0x62, 0x77, 0x10, 0x00, 0x02, 0xf4, 0xaa,
892 0xf8, 0x30, 0x0f, 0x6d, 0x45, 0xe1, 0x00, 0x0b, 892 0xf8, 0x30, 0x0f, 0x6d, 0x45, 0xe1, 0x00, 0x0b,
893 0x88, 0x10, 0x43, 0xe1, 0x00, 0x0c, 0x83, 0xf8, 893 0x88, 0x10, 0x43, 0xe1, 0x00, 0x0c, 0x83, 0xf8,
894 0x00, 0x12, 0xf4, 0x95, 0xf4, 0x95, 0xf4, 0xaa, 894 0x00, 0x12, 0xf4, 0x95, 0xf4, 0x95, 0xf4, 0xaa,
895 0xf8, 0x30, 0x0f, 0x6d, 0xf0, 0x73, 0x0f, 0x96, 895 0xf8, 0x30, 0x0f, 0x6d, 0xf0, 0x73, 0x0f, 0x96,
896 0xf5, 0x00, 0x81, 0x04, 0x49, 0x16, 0xf5, 0x20, 896 0xf5, 0x00, 0x81, 0x04, 0x49, 0x16, 0xf5, 0x20,
897 0x89, 0x16, 0x76, 0xe1, 0x00, 0x0c, 0x00, 0x00, 897 0x89, 0x16, 0x76, 0xe1, 0x00, 0x0c, 0x00, 0x00,
898 0x76, 0xe1, 0x00, 0x04, 0x00, 0x00, 0x48, 0x16, 898 0x76, 0xe1, 0x00, 0x04, 0x00, 0x00, 0x48, 0x16,
899 0xf8, 0x45, 0x11, 0x33, 0xf7, 0xb8, 0x71, 0xe1, 899 0xf8, 0x45, 0x11, 0x33, 0xf7, 0xb8, 0x71, 0xe1,
900 0x00, 0x02, 0x00, 0x12, 0x10, 0xf8, 0x00, 0x12, 900 0x00, 0x02, 0x00, 0x12, 0x10, 0xf8, 0x00, 0x12,
901 0xf0, 0x10, 0x00, 0x03, 0xf8, 0x46, 0x0f, 0x8c, 901 0xf0, 0x10, 0x00, 0x03, 0xf8, 0x46, 0x0f, 0x8c,
902 0x10, 0xf8, 0x00, 0x12, 0xf0, 0x10, 0x00, 0x03, 902 0x10, 0xf8, 0x00, 0x12, 0xf0, 0x10, 0x00, 0x03,
903 0xf8, 0x45, 0x10, 0x16, 0x77, 0x10, 0x00, 0x01, 903 0xf8, 0x45, 0x10, 0x16, 0x77, 0x10, 0x00, 0x01,
904 0xf4, 0xaa, 0xf8, 0x30, 0x0f, 0x9c, 0x77, 0x10, 904 0xf4, 0xaa, 0xf8, 0x30, 0x0f, 0x9c, 0x77, 0x10,
905 0x00, 0x02, 0xf4, 0xaa, 0xf8, 0x30, 0x0f, 0xa8, 905 0x00, 0x02, 0xf4, 0xaa, 0xf8, 0x30, 0x0f, 0xa8,
906 0xf0, 0x73, 0x0f, 0x96, 0x77, 0x10, 0x00, 0x04, 906 0xf0, 0x73, 0x0f, 0x96, 0x77, 0x10, 0x00, 0x04,
907 0xf4, 0xaa, 0xf8, 0x30, 0x10, 0xb7, 0x77, 0x10, 907 0xf4, 0xaa, 0xf8, 0x30, 0x10, 0xb7, 0x77, 0x10,
908 0x00, 0x05, 0xf4, 0xaa, 0xf8, 0x30, 0x10, 0xbc, 908 0x00, 0x05, 0xf4, 0xaa, 0xf8, 0x30, 0x10, 0xbc,
909 0xf2, 0x74, 0x0e, 0x9f, 0xf4, 0x95, 0x48, 0x17, 909 0xf2, 0x74, 0x0e, 0x9f, 0xf4, 0x95, 0x48, 0x17,
910 0xf0, 0x73, 0x11, 0x31, 0x76, 0xe1, 0x00, 0x0c, 910 0xf0, 0x73, 0x11, 0x31, 0x76, 0xe1, 0x00, 0x0c,
911 0x00, 0x00, 0x76, 0xe1, 0x00, 0x0b, 0x00, 0x00, 911 0x00, 0x00, 0x76, 0xe1, 0x00, 0x0b, 0x00, 0x00,
912 0x76, 0xe1, 0x00, 0x04, 0x00, 0x00, 0x76, 0xe1, 912 0x76, 0xe1, 0x00, 0x04, 0x00, 0x00, 0x76, 0xe1,
913 0x00, 0x02, 0x00, 0x02, 0x11, 0xe1, 0x00, 0x0c, 913 0x00, 0x02, 0x00, 0x02, 0x11, 0xe1, 0x00, 0x0c,
914 0xe8, 0x03, 0xf6, 0x20, 0x89, 0x12, 0xf4, 0x95, 914 0xe8, 0x03, 0xf6, 0x20, 0x89, 0x12, 0xf4, 0x95,
915 0x77, 0x10, 0x00, 0x03, 0xf5, 0xaa, 0xf8, 0x30, 915 0x77, 0x10, 0x00, 0x03, 0xf5, 0xaa, 0xf8, 0x30,
916 0x0f, 0xb6, 0x6b, 0xf8, 0x27, 0x6f, 0x00, 0x01, 916 0x0f, 0xb6, 0x6b, 0xf8, 0x27, 0x6f, 0x00, 0x01,
917 0x88, 0x10, 0xf4, 0x95, 0xf4, 0x95, 0xf5, 0xae, 917 0x88, 0x10, 0xf4, 0x95, 0xf4, 0x95, 0xf5, 0xae,
918 0xf8, 0x20, 0x0f, 0xbd, 0x48, 0x16, 0x80, 0x06, 918 0xf8, 0x20, 0x0f, 0xbd, 0x48, 0x16, 0x80, 0x06,
919 0x88, 0x13, 0xf4, 0x95, 0x77, 0x10, 0x00, 0x03, 919 0x88, 0x13, 0xf4, 0x95, 0x77, 0x10, 0x00, 0x03,
920 0xf6, 0xab, 0xf8, 0x20, 0x0f, 0xc8, 0x6b, 0xf8, 920 0xf6, 0xab, 0xf8, 0x20, 0x0f, 0xc8, 0x6b, 0xf8,
921 0x27, 0x6f, 0x00, 0x01, 0x12, 0x06, 0xf8, 0x45, 921 0x27, 0x6f, 0x00, 0x01, 0x12, 0x06, 0xf8, 0x45,
922 0x10, 0x00, 0x10, 0xe1, 0x00, 0x04, 0x80, 0x00, 922 0x10, 0x00, 0x10, 0xe1, 0x00, 0x04, 0x80, 0x00,
923 0x10, 0x05, 0x80, 0x01, 0x10, 0x04, 0x80, 0x02, 923 0x10, 0x05, 0x80, 0x01, 0x10, 0x04, 0x80, 0x02,
924 0x10, 0x06, 0x80, 0x03, 0x48, 0x11, 0xf2, 0x74, 924 0x10, 0x06, 0x80, 0x03, 0x48, 0x11, 0xf2, 0x74,
925 0x07, 0x1e, 0xf0, 0x00, 0x00, 0x05, 0x10, 0x06, 925 0x07, 0x1e, 0xf0, 0x00, 0x00, 0x05, 0x10, 0x06,
926 0x00, 0xe1, 0x00, 0x04, 0x80, 0xe1, 0x00, 0x04, 926 0x00, 0xe1, 0x00, 0x04, 0x80, 0xe1, 0x00, 0x04,
927 0x10, 0x06, 0x00, 0xe1, 0x00, 0x0c, 0x80, 0xe1, 927 0x10, 0x06, 0x00, 0xe1, 0x00, 0x0c, 0x80, 0xe1,
928 0x00, 0x0c, 0x88, 0x12, 0x11, 0x06, 0x10, 0x04, 928 0x00, 0x0c, 0x88, 0x12, 0x11, 0x06, 0x10, 0x04,
929 0xf6, 0x00, 0x80, 0x04, 0x48, 0x16, 0xf6, 0x20, 929 0xf6, 0x00, 0x80, 0x04, 0x48, 0x16, 0xf6, 0x20,
930 0x88, 0x16, 0x89, 0x13, 0xf4, 0x95, 0x77, 0x10, 930 0x88, 0x16, 0x89, 0x13, 0xf4, 0x95, 0x77, 0x10,
931 0x00, 0x03, 0xf6, 0xab, 0xf8, 0x20, 0x0f, 0xf5, 931 0x00, 0x03, 0xf6, 0xab, 0xf8, 0x20, 0x0f, 0xf5,
932 0x6b, 0xf8, 0x27, 0x6f, 0x00, 0x01, 0x77, 0x10, 932 0x6b, 0xf8, 0x27, 0x6f, 0x00, 0x01, 0x77, 0x10,
933 0x00, 0x0c, 0x71, 0xe1, 0x00, 0x04, 0x00, 0x13, 933 0x00, 0x0c, 0x71, 0xe1, 0x00, 0x04, 0x00, 0x13,
934 0xf6, 0xab, 0xf8, 0x20, 0x10, 0x00, 0x6b, 0xf8, 934 0xf6, 0xab, 0xf8, 0x20, 0x10, 0x00, 0x6b, 0xf8,
935 0x27, 0x6f, 0x00, 0x01, 0x6c, 0xe2, 0xff, 0xfd, 935 0x27, 0x6f, 0x00, 0x01, 0x6c, 0xe2, 0xff, 0xfd,
936 0x11, 0x31, 0xf6, 0xb8, 0x6f, 0xe1, 0x00, 0x05, 936 0x11, 0x31, 0xf6, 0xb8, 0x6f, 0xe1, 0x00, 0x05,
937 0x0c, 0x48, 0x6f, 0xe1, 0x00, 0x06, 0x0c, 0x18, 937 0x0c, 0x48, 0x6f, 0xe1, 0x00, 0x06, 0x0c, 0x18,
938 0xf0, 0x30, 0x0f, 0xff, 0xf0, 0x00, 0x00, 0x03, 938 0xf0, 0x30, 0x0f, 0xff, 0xf0, 0x00, 0x00, 0x03,
939 0x80, 0xe1, 0x00, 0x0b, 0x76, 0xe1, 0x00, 0x02, 939 0x80, 0xe1, 0x00, 0x0b, 0x76, 0xe1, 0x00, 0x02,
940 0x00, 0x03, 0x48, 0x16, 0xf8, 0x45, 0x11, 0x33, 940 0x00, 0x03, 0x48, 0x16, 0xf8, 0x45, 0x11, 0x33,
941 0x71, 0xe1, 0x00, 0x0c, 0x00, 0x12, 0x10, 0xe1, 941 0x71, 0xe1, 0x00, 0x0c, 0x00, 0x12, 0x10, 0xe1,
942 0x00, 0x0b, 0x49, 0x12, 0xf6, 0x20, 0x88, 0x13, 942 0x00, 0x0b, 0x49, 0x12, 0xf6, 0x20, 0x88, 0x13,
943 0xe8, 0x0c, 0xf6, 0x20, 0x88, 0x10, 0xf4, 0x95, 943 0xe8, 0x0c, 0xf6, 0x20, 0x88, 0x10, 0xf4, 0x95,
944 0xf4, 0x95, 0xf5, 0xab, 0xf8, 0x20, 0x10, 0x27, 944 0xf4, 0x95, 0xf5, 0xab, 0xf8, 0x20, 0x10, 0x27,
945 0x48, 0x13, 0x80, 0x06, 0x88, 0x10, 0xf4, 0x95, 945 0x48, 0x13, 0x80, 0x06, 0x88, 0x10, 0xf4, 0x95,
946 0xf4, 0x95, 0xf5, 0xae, 0xf8, 0x20, 0x10, 0x30, 946 0xf4, 0x95, 0xf5, 0xae, 0xf8, 0x20, 0x10, 0x30,
947 0x70, 0x06, 0x00, 0x16, 0x12, 0x06, 0xf8, 0x45, 947 0x70, 0x06, 0x00, 0x16, 0x12, 0x06, 0xf8, 0x45,
948 0x10, 0x5f, 0x10, 0xe1, 0x00, 0x04, 0x80, 0x00, 948 0x10, 0x5f, 0x10, 0xe1, 0x00, 0x04, 0x80, 0x00,
949 0x10, 0x05, 0x80, 0x01, 0x10, 0x04, 0x80, 0x02, 949 0x10, 0x05, 0x80, 0x01, 0x10, 0x04, 0x80, 0x02,
950 0x10, 0x06, 0x80, 0x03, 0x48, 0x11, 0xf2, 0x74, 950 0x10, 0x06, 0x80, 0x03, 0x48, 0x11, 0xf2, 0x74,
951 0x07, 0x1e, 0xf0, 0x00, 0x00, 0x05, 0x10, 0x06, 951 0x07, 0x1e, 0xf0, 0x00, 0x00, 0x05, 0x10, 0x06,
952 0x00, 0xe1, 0x00, 0x04, 0x80, 0xe1, 0x00, 0x04, 952 0x00, 0xe1, 0x00, 0x04, 0x80, 0xe1, 0x00, 0x04,
953 0x10, 0x06, 0x00, 0xe1, 0x00, 0x0c, 0x80, 0xe1, 953 0x10, 0x06, 0x00, 0xe1, 0x00, 0x0c, 0x80, 0xe1,
954 0x00, 0x0c, 0x88, 0x12, 0x11, 0x06, 0x10, 0x04, 954 0x00, 0x0c, 0x88, 0x12, 0x11, 0x06, 0x10, 0x04,
955 0xf6, 0x00, 0x80, 0x04, 0x48, 0x16, 0xf6, 0x20, 955 0xf6, 0x00, 0x80, 0x04, 0x48, 0x16, 0xf6, 0x20,
956 0x88, 0x16, 0xf4, 0x95, 0x77, 0x10, 0x00, 0x0c, 956 0x88, 0x16, 0xf4, 0x95, 0x77, 0x10, 0x00, 0x0c,
957 0x71, 0xe1, 0x00, 0x04, 0x00, 0x13, 0xf6, 0xab, 957 0x71, 0xe1, 0x00, 0x04, 0x00, 0x13, 0xf6, 0xab,
958 0xf8, 0x20, 0x10, 0x5f, 0x6b, 0xf8, 0x27, 0x6f, 958 0xf8, 0x20, 0x10, 0x5f, 0x6b, 0xf8, 0x27, 0x6f,
959 0x00, 0x01, 0x77, 0x10, 0x00, 0x0c, 0xf6, 0xaa, 959 0x00, 0x01, 0x77, 0x10, 0x00, 0x0c, 0xf6, 0xaa,
960 0xf8, 0x20, 0x10, 0x6b, 0xf2, 0x74, 0x0e, 0x9f, 960 0xf8, 0x20, 0x10, 0x6b, 0xf2, 0x74, 0x0e, 0x9f,
961 0xf4, 0x95, 0x48, 0x17, 0x71, 0xe1, 0x00, 0x0c, 961 0xf4, 0x95, 0x48, 0x17, 0x71, 0xe1, 0x00, 0x0c,
962 0x00, 0x12, 0x77, 0x10, 0x00, 0x0c, 0xf4, 0xaa, 962 0x00, 0x12, 0x77, 0x10, 0x00, 0x0c, 0xf4, 0xaa,
963 0xf8, 0x30, 0x10, 0x7c, 0x77, 0x10, 0x00, 0x0c, 963 0xf8, 0x30, 0x10, 0x7c, 0x77, 0x10, 0x00, 0x0c,
964 0x71, 0xe1, 0x00, 0x0b, 0x00, 0x13, 0xf6, 0xab, 964 0x71, 0xe1, 0x00, 0x0b, 0x00, 0x13, 0xf6, 0xab,
965 0xf8, 0x30, 0x10, 0xb4, 0xe7, 0x30, 0xf7, 0xaa, 965 0xf8, 0x30, 0x10, 0xb4, 0xe7, 0x30, 0xf7, 0xaa,
966 0xf8, 0x30, 0x10, 0xb4, 0xf2, 0x74, 0x0e, 0xc1, 966 0xf8, 0x30, 0x10, 0xb4, 0xf2, 0x74, 0x0e, 0xc1,
967 0xf4, 0x95, 0x48, 0x17, 0x88, 0x12, 0xf4, 0x95, 967 0xf4, 0x95, 0x48, 0x17, 0x88, 0x12, 0xf4, 0x95,
968 0xf4, 0x95, 0x6c, 0x82, 0x10, 0x8d, 0x76, 0xe1, 968 0xf4, 0x95, 0x6c, 0x82, 0x10, 0x8d, 0x76, 0xe1,
969 0x00, 0x04, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x02, 969 0x00, 0x04, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x02,
970 0x00, 0x05, 0xf0, 0x73, 0x10, 0xb4, 0x76, 0xe1, 970 0x00, 0x05, 0xf0, 0x73, 0x10, 0xb4, 0x76, 0xe1,
971 0x00, 0x02, 0x00, 0x04, 0x77, 0x10, 0x00, 0x0c, 971 0x00, 0x02, 0x00, 0x04, 0x77, 0x10, 0x00, 0x0c,
972 0x71, 0xe1, 0x00, 0x0b, 0x00, 0x12, 0xf5, 0xaa, 972 0x71, 0xe1, 0x00, 0x0b, 0x00, 0x12, 0xf5, 0xaa,
973 0xf8, 0x20, 0x10, 0x9a, 0xf0, 0x73, 0x10, 0x9c, 973 0xf8, 0x20, 0x10, 0x9a, 0xf0, 0x73, 0x10, 0x9c,
974 0x77, 0x12, 0x00, 0x0c, 0x76, 0x00, 0x00, 0x00, 974 0x77, 0x12, 0x00, 0x0c, 0x76, 0x00, 0x00, 0x00,
975 0x70, 0x01, 0x00, 0x12, 0x70, 0x02, 0x00, 0x17, 975 0x70, 0x01, 0x00, 0x12, 0x70, 0x02, 0x00, 0x17,
976 0x76, 0x03, 0x00, 0x01, 0x48, 0x11, 0xf2, 0x74, 976 0x76, 0x03, 0x00, 0x01, 0x48, 0x11, 0xf2, 0x74,
977 0x0c, 0xb9, 0xf0, 0x00, 0x00, 0x05, 0x76, 0xe1, 977 0x0c, 0xb9, 0xf0, 0x00, 0x00, 0x05, 0x76, 0xe1,
978 0x00, 0x04, 0x00, 0x00, 0x77, 0x10, 0x00, 0x0c, 978 0x00, 0x04, 0x00, 0x00, 0x77, 0x10, 0x00, 0x0c,
979 0x71, 0xe1, 0x00, 0x0b, 0x00, 0x12, 0xf6, 0xaa, 979 0x71, 0xe1, 0x00, 0x0b, 0x00, 0x12, 0xf6, 0xaa,
980 0xf8, 0x20, 0x11, 0x1c, 0x48, 0x16, 0xf8, 0x45, 980 0xf8, 0x20, 0x11, 0x1c, 0x48, 0x16, 0xf8, 0x45,
981 0x11, 0x33, 0x60, 0xe1, 0x00, 0x02, 0x00, 0x05, 981 0x11, 0x33, 0x60, 0xe1, 0x00, 0x02, 0x00, 0x05,
982 0xf8, 0x20, 0x10, 0xdf, 0x10, 0xe1, 0x00, 0x0b, 982 0xf8, 0x20, 0x10, 0xdf, 0x10, 0xe1, 0x00, 0x0b,
983 0x08, 0xe1, 0x00, 0x0c, 0x11, 0xe1, 0x00, 0x04, 983 0x08, 0xe1, 0x00, 0x0c, 0x11, 0xe1, 0x00, 0x04,
984 0xf8, 0x4d, 0x10, 0xc7, 0x6b, 0xf8, 0x27, 0x6f, 984 0xf8, 0x4d, 0x10, 0xc7, 0x6b, 0xf8, 0x27, 0x6f,
985 0x00, 0x01, 0x88, 0x10, 0xf4, 0x95, 0xf4, 0x95, 985 0x00, 0x01, 0x88, 0x10, 0xf4, 0x95, 0xf4, 0x95,
986 0xf5, 0xae, 0xf8, 0x20, 0x10, 0xcf, 0x48, 0x16, 986 0xf5, 0xae, 0xf8, 0x20, 0x10, 0xcf, 0x48, 0x16,
987 0xf4, 0x95, 0x48, 0x08, 0xf8, 0x45, 0x11, 0x16, 987 0xf4, 0x95, 0x48, 0x08, 0xf8, 0x45, 0x11, 0x16,
988 0x6f, 0xe1, 0x00, 0x0c, 0x0d, 0x00, 0x81, 0xe1, 988 0x6f, 0xe1, 0x00, 0x0c, 0x0d, 0x00, 0x81, 0xe1,
989 0x00, 0x0c, 0x11, 0x04, 0xf5, 0x00, 0x81, 0x04, 989 0x00, 0x0c, 0x11, 0x04, 0xf5, 0x00, 0x81, 0x04,
990 0x49, 0x16, 0xf5, 0x20, 0x89, 0x16, 0xf0, 0x73, 990 0x49, 0x16, 0xf5, 0x20, 0x89, 0x16, 0xf0, 0x73,
991 0x11, 0x0e, 0x10, 0xe1, 0x00, 0x0b, 0x71, 0xe1, 991 0x11, 0x0e, 0x10, 0xe1, 0x00, 0x0b, 0x71, 0xe1,
992 0x00, 0x0c, 0x00, 0x12, 0x88, 0x10, 0xf4, 0x95, 992 0x00, 0x0c, 0x00, 0x12, 0x88, 0x10, 0xf4, 0x95,
993 0xf4, 0x95, 0xf6, 0xaa, 0xf8, 0x30, 0x11, 0x16, 993 0xf4, 0x95, 0xf6, 0xaa, 0xf8, 0x30, 0x11, 0x16,
994 0x49, 0x12, 0xf6, 0x20, 0x88, 0x10, 0xf4, 0x95, 994 0x49, 0x12, 0xf6, 0x20, 0x88, 0x10, 0xf4, 0x95,
995 0xf4, 0x95, 0xf5, 0xae, 0xf8, 0x20, 0x10, 0xf3, 995 0xf4, 0x95, 0xf5, 0xae, 0xf8, 0x20, 0x10, 0xf3,
996 0x48, 0x16, 0x80, 0x06, 0x48, 0x08, 0xf8, 0x45, 996 0x48, 0x16, 0x80, 0x06, 0x48, 0x08, 0xf8, 0x45,
997 0x11, 0x16, 0x10, 0x04, 0x70, 0x02, 0x00, 0x17, 997 0x11, 0x16, 0x10, 0x04, 0x70, 0x02, 0x00, 0x17,
998 0x80, 0x00, 0x76, 0x03, 0x00, 0x00, 0x10, 0x06, 998 0x80, 0x00, 0x76, 0x03, 0x00, 0x00, 0x10, 0x06,
999 0x80, 0x01, 0x10, 0x05, 0xf0, 0x74, 0x0c, 0xb9, 999 0x80, 0x01, 0x10, 0x05, 0xf0, 0x74, 0x0c, 0xb9,
1000 0x10, 0x06, 0x00, 0xe1, 0x00, 0x0c, 0x80, 0xe1, 1000 0x10, 0x06, 0x00, 0xe1, 0x00, 0x0c, 0x80, 0xe1,
1001 0x00, 0x0c, 0x11, 0x06, 0x10, 0x04, 0xf6, 0x00, 1001 0x00, 0x0c, 0x11, 0x06, 0x10, 0x04, 0xf6, 0x00,
1002 0x80, 0x04, 0x48, 0x16, 0xf6, 0x20, 0x88, 0x16, 1002 0x80, 0x04, 0x48, 0x16, 0xf6, 0x20, 0x88, 0x16,
1003 0x10, 0xe1, 0x00, 0x0c, 0x08, 0xe1, 0x00, 0x0b, 1003 0x10, 0xe1, 0x00, 0x0c, 0x08, 0xe1, 0x00, 0x0b,
1004 0xf8, 0x45, 0x11, 0x1c, 0xf0, 0x73, 0x11, 0x31, 1004 0xf8, 0x45, 0x11, 0x1c, 0xf0, 0x73, 0x11, 0x31,
1005 0xf2, 0x74, 0x0e, 0x9f, 0xf4, 0x95, 0x48, 0x17, 1005 0xf2, 0x74, 0x0e, 0x9f, 0xf4, 0x95, 0x48, 0x17,
1006 0xf0, 0x73, 0x11, 0x33, 0x76, 0xe1, 0x00, 0x0c, 1006 0xf0, 0x73, 0x11, 0x33, 0x76, 0xe1, 0x00, 0x0c,
1007 0x00, 0x00, 0x76, 0xe1, 0x00, 0x0b, 0x00, 0x00, 1007 0x00, 0x00, 0x76, 0xe1, 0x00, 0x0b, 0x00, 0x00,
1008 0x76, 0xe1, 0x00, 0x02, 0x00, 0x01, 0x10, 0x04, 1008 0x76, 0xe1, 0x00, 0x02, 0x00, 0x01, 0x10, 0x04,
1009 0x80, 0x00, 0x10, 0x05, 0xf0, 0x74, 0x06, 0x9f, 1009 0x80, 0x00, 0x10, 0x05, 0xf0, 0x74, 0x06, 0x9f,
1010 0x88, 0x12, 0xf4, 0x95, 0x77, 0x10, 0x00, 0xff, 1010 0x88, 0x12, 0xf4, 0x95, 0x77, 0x10, 0x00, 0xff,
1011 0xf4, 0xaa, 0xf8, 0x30, 0x11, 0x33, 0x6c, 0x86, 1011 0xf4, 0xaa, 0xf8, 0x30, 0x11, 0x33, 0x6c, 0x86,
1012 0x0f, 0x70, 0xee, 0x08, 0x8a, 0x17, 0x8a, 0x16, 1012 0x0f, 0x70, 0xee, 0x08, 0x8a, 0x17, 0x8a, 0x16,
1013 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfc, 1013 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfc,
1014 0xf4, 0x95, 0x71, 0x06, 0x00, 0x12, 0x88, 0x11, 1014 0xf4, 0x95, 0x71, 0x06, 0x00, 0x12, 0x88, 0x11,
1015 0x73, 0x12, 0x00, 0x0e, 0xf1, 0x66, 0x00, 0x0d, 1015 0x73, 0x12, 0x00, 0x0e, 0xf1, 0x66, 0x00, 0x0d,
1016 0xf3, 0x00, 0x24, 0x00, 0x89, 0x14, 0x13, 0x81, 1016 0xf3, 0x00, 0x24, 0x00, 0x89, 0x14, 0x13, 0x81,
1017 0xf7, 0x7a, 0xf3, 0x30, 0x00, 0x01, 0x81, 0xf8, 1017 0xf7, 0x7a, 0xf3, 0x30, 0x00, 0x01, 0x81, 0xf8,
1018 0x27, 0x60, 0x13, 0xe1, 0x00, 0x01, 0xf7, 0x7c, 1018 0x27, 0x60, 0x13, 0xe1, 0x00, 0x01, 0xf7, 0x7c,
1019 0xf3, 0x30, 0x00, 0x03, 0x81, 0xf8, 0x27, 0x61, 1019 0xf3, 0x30, 0x00, 0x03, 0x81, 0xf8, 0x27, 0x61,
1020 0xe9, 0x0f, 0x19, 0xe1, 0x00, 0x01, 0x81, 0xf8, 1020 0xe9, 0x0f, 0x19, 0xe1, 0x00, 0x01, 0x81, 0xf8,
1021 0x27, 0x62, 0x71, 0xe4, 0x00, 0x03, 0x00, 0x13, 1021 0x27, 0x62, 0x71, 0xe4, 0x00, 0x03, 0x00, 0x13,
1022 0xf6, 0xb8, 0x49, 0x13, 0xf3, 0x00, 0x00, 0x01, 1022 0xf6, 0xb8, 0x49, 0x13, 0xf3, 0x00, 0x00, 0x01,
1023 0xf3, 0x30, 0x00, 0x0f, 0x49, 0x0b, 0x09, 0xf8, 1023 0xf3, 0x30, 0x00, 0x0f, 0x49, 0x0b, 0x09, 0xf8,
1024 0x27, 0x62, 0xf8, 0x4d, 0x11, 0x75, 0x77, 0x10, 1024 0x27, 0x62, 0xf8, 0x4d, 0x11, 0x75, 0x77, 0x10,
1025 0x00, 0xff, 0xf4, 0xab, 0xf8, 0x30, 0x11, 0x75, 1025 0x00, 0xff, 0xf4, 0xab, 0xf8, 0x30, 0x11, 0x75,
1026 0x57, 0xf8, 0x27, 0x6c, 0xf3, 0x00, 0x00, 0x01, 1026 0x57, 0xf8, 0x27, 0x6c, 0xf3, 0x00, 0x00, 0x01,
1027 0x4f, 0xf8, 0x27, 0x6c, 0x76, 0xf8, 0x27, 0x63, 1027 0x4f, 0xf8, 0x27, 0x6c, 0x76, 0xf8, 0x27, 0x63,
1028 0x00, 0x01, 0xf0, 0x73, 0x11, 0x78, 0x76, 0xf8, 1028 0x00, 0x01, 0xf0, 0x73, 0x11, 0x78, 0x76, 0xf8,
1029 0x27, 0x63, 0x00, 0x00, 0x70, 0xe4, 0x00, 0x03, 1029 0x27, 0x63, 0x00, 0x00, 0x70, 0xe4, 0x00, 0x03,
1030 0x27, 0x62, 0x76, 0xf8, 0x27, 0x64, 0x00, 0x00, 1030 0x27, 0x62, 0x76, 0xf8, 0x27, 0x64, 0x00, 0x00,
1031 0x11, 0xf8, 0x27, 0x61, 0x61, 0xf8, 0x00, 0x0b, 1031 0x11, 0xf8, 0x27, 0x61, 0x61, 0xf8, 0x00, 0x0b,
1032 0x00, 0x02, 0xf8, 0x20, 0x11, 0x8d, 0xe9, 0x01, 1032 0x00, 0x02, 0xf8, 0x20, 0x11, 0x8d, 0xe9, 0x01,
1033 0x6f, 0xe1, 0x00, 0x02, 0x0f, 0x18, 0x81, 0xf8, 1033 0x6f, 0xe1, 0x00, 0x02, 0x0f, 0x18, 0x81, 0xf8,
1034 0x27, 0x64, 0x11, 0xf8, 0x27, 0x61, 0x61, 0xf8, 1034 0x27, 0x64, 0x11, 0xf8, 0x27, 0x61, 0x61, 0xf8,
1035 0x00, 0x0b, 0x00, 0x01, 0xf8, 0x20, 0x11, 0xa9, 1035 0x00, 0x0b, 0x00, 0x01, 0xf8, 0x20, 0x11, 0xa9,
1036 0x10, 0xf8, 0x27, 0x64, 0xf1, 0x00, 0x00, 0x04, 1036 0x10, 0xf8, 0x27, 0x64, 0xf1, 0x00, 0x00, 0x04,
1037 0x89, 0x13, 0xe9, 0xb8, 0xf5, 0x20, 0x81, 0xf8, 1037 0x89, 0x13, 0xe9, 0xb8, 0xf5, 0x20, 0x81, 0xf8,
1038 0x27, 0x65, 0x60, 0x84, 0x00, 0x02, 0xf8, 0x20, 1038 0x27, 0x65, 0x60, 0x84, 0x00, 0x02, 0xf8, 0x20,
1039 0x11, 0xa9, 0x70, 0x00, 0x00, 0x11, 0x70, 0x01, 1039 0x11, 0xa9, 0x70, 0x00, 0x00, 0x11, 0x70, 0x01,
1040 0x00, 0x13, 0x70, 0x02, 0x27, 0x65, 0xf2, 0x74, 1040 0x00, 0x13, 0x70, 0x02, 0x27, 0x65, 0xf2, 0x74,
1041 0x0f, 0x18, 0xf4, 0x95, 0x48, 0x12, 0xee, 0x04, 1041 0x0f, 0x18, 0xf4, 0x95, 0x48, 0x12, 0xee, 0x04,
1042 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0x4a, 0x16, 1042 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0x4a, 0x16,
1043 0x4a, 0x17, 0xee, 0xfc, 0xe8, 0x00, 0x4e, 0xf8, 1043 0x4a, 0x17, 0xee, 0xfc, 0xe8, 0x00, 0x4e, 0xf8,
1044 0x27, 0x66, 0xe8, 0x00, 0x4e, 0xf8, 0x27, 0x68, 1044 0x27, 0x66, 0xe8, 0x00, 0x4e, 0xf8, 0x27, 0x68,
1045 0xe8, 0x00, 0x4e, 0xf8, 0x27, 0x6c, 0xe8, 0x00, 1045 0xe8, 0x00, 0x4e, 0xf8, 0x27, 0x6c, 0xe8, 0x00,
1046 0x4e, 0xf8, 0x27, 0x6a, 0x77, 0x12, 0x27, 0x40, 1046 0x4e, 0xf8, 0x27, 0x6a, 0x77, 0x12, 0x27, 0x40,
1047 0x77, 0x11, 0x24, 0x00, 0x77, 0x1a, 0x00, 0x1f, 1047 0x77, 0x11, 0x24, 0x00, 0x77, 0x1a, 0x00, 0x1f,
1048 0xf0, 0x72, 0x11, 0xdb, 0x70, 0x92, 0x00, 0x11, 1048 0xf0, 0x72, 0x11, 0xdb, 0x70, 0x92, 0x00, 0x11,
1049 0x76, 0xe1, 0x00, 0x01, 0xff, 0xff, 0x76, 0x81, 1049 0x76, 0xe1, 0x00, 0x01, 0xff, 0xff, 0x76, 0x81,
1050 0x00, 0x00, 0x76, 0xe1, 0x00, 0x02, 0x00, 0x00, 1050 0x00, 0x00, 0x76, 0xe1, 0x00, 0x02, 0x00, 0x00,
1051 0x76, 0xe1, 0x00, 0x03, 0x00, 0xff, 0x76, 0xe1, 1051 0x76, 0xe1, 0x00, 0x03, 0x00, 0xff, 0x76, 0xe1,
1052 0x00, 0x0c, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x0b, 1052 0x00, 0x0c, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x0b,
1053 0x00, 0x00, 0x76, 0xe1, 0x00, 0x04, 0x00, 0x00, 1053 0x00, 0x00, 0x76, 0xe1, 0x00, 0x04, 0x00, 0x00,
1054 0x6d, 0xe9, 0x00, 0x0d, 0xf0, 0x20, 0x25, 0xa0, 1054 0x6d, 0xe9, 0x00, 0x0d, 0xf0, 0x20, 0x25, 0xa0,
1055 0xf1, 0x00, 0x00, 0x07, 0x89, 0x11, 0xf1, 0x00, 1055 0xf1, 0x00, 0x00, 0x07, 0x89, 0x11, 0xf1, 0x00,
1056 0x00, 0x01, 0x81, 0x02, 0x88, 0x16, 0xf4, 0x95, 1056 0x00, 0x01, 0x81, 0x02, 0x88, 0x16, 0xf4, 0x95,
1057 0x77, 0x17, 0x00, 0x20, 0x76, 0x86, 0x00, 0xff, 1057 0x77, 0x17, 0x00, 0x20, 0x76, 0x86, 0x00, 0xff,
1058 0x76, 0x00, 0x00, 0x00, 0x76, 0x01, 0x00, 0x06, 1058 0x76, 0x00, 0x00, 0x00, 0x76, 0x01, 0x00, 0x06,
1059 0x10, 0x02, 0xf0, 0x74, 0x06, 0x6c, 0x76, 0x00, 1059 0x10, 0x02, 0xf0, 0x74, 0x06, 0x6c, 0x76, 0x00,
1060 0x00, 0x00, 0x76, 0x01, 0x00, 0x06, 0xf2, 0x74, 1060 0x00, 0x00, 0x76, 0x01, 0x00, 0x06, 0xf2, 0x74,
1061 0x06, 0x6c, 0xf4, 0x95, 0x48, 0x11, 0x10, 0x02, 1061 0x06, 0x6c, 0xf4, 0x95, 0x48, 0x11, 0x10, 0x02,
1062 0xf0, 0x00, 0x00, 0x0d, 0x80, 0x02, 0x6d, 0xe9, 1062 0xf0, 0x00, 0x00, 0x0d, 0x80, 0x02, 0x6d, 0xe9,
1063 0x00, 0x0d, 0x6d, 0xee, 0x00, 0x0d, 0x6c, 0xef, 1063 0x00, 0x0d, 0x6d, 0xee, 0x00, 0x0d, 0x6c, 0xef,
1064 0xff, 0xff, 0x11, 0xe8, 0xf0, 0x74, 0x0c, 0x9d, 1064 0xff, 0xff, 0x11, 0xe8, 0xf0, 0x74, 0x0c, 0x9d,
1065 0xee, 0x04, 0x8a, 0x17, 0x8a, 0x16, 0x8a, 0x11, 1065 0xee, 0x04, 0x8a, 0x17, 0x8a, 0x16, 0x8a, 0x11,
1066 0xfc, 0x00, 0x4a, 0x11, 0x4a, 0x16, 0x4a, 0x17, 1066 0xfc, 0x00, 0x4a, 0x11, 0x4a, 0x16, 0x4a, 0x17,
1067 0xee, 0xfa, 0x88, 0x11, 0x10, 0x0a, 0x49, 0x11, 1067 0xee, 0xfa, 0x88, 0x11, 0x10, 0x0a, 0x49, 0x11,
1068 0xf8, 0x4d, 0x12, 0x9f, 0x48, 0x08, 0xf8, 0x45, 1068 0xf8, 0x4d, 0x12, 0x9f, 0x48, 0x08, 0xf8, 0x45,
1069 0x12, 0x9f, 0x80, 0x04, 0x12, 0x81, 0xf5, 0x78, 1069 0x12, 0x9f, 0x80, 0x04, 0x12, 0x81, 0xf5, 0x78,
1070 0x89, 0x12, 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0xe2, 1070 0x89, 0x12, 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0xe2,
1071 0xff, 0xb9, 0x12, 0x8a, 0x61, 0xf8, 0x00, 0x08, 1071 0xff, 0xb9, 0x12, 0x8a, 0x61, 0xf8, 0x00, 0x08,
1072 0x00, 0x80, 0xf8, 0x30, 0x12, 0x8a, 0x13, 0xe1, 1072 0x00, 0x80, 0xf8, 0x30, 0x12, 0x8a, 0x13, 0xe1,
1073 0x00, 0x01, 0xf0, 0xe8, 0xf7, 0x78, 0xf1, 0xa0, 1073 0x00, 0x01, 0xf0, 0xe8, 0xf7, 0x78, 0xf1, 0xa0,
1074 0xf2, 0x30, 0x1f, 0xff, 0x88, 0x17, 0xf4, 0x95, 1074 0xf2, 0x30, 0x1f, 0xff, 0x88, 0x17, 0xf4, 0x95,
1075 0x77, 0x12, 0x24, 0x00, 0x77, 0x16, 0x00, 0x00, 1075 0x77, 0x12, 0x24, 0x00, 0x77, 0x16, 0x00, 0x00,
1076 0x77, 0x13, 0x00, 0x20, 0xf6, 0xb8, 0x48, 0x17, 1076 0x77, 0x13, 0x00, 0x20, 0xf6, 0xb8, 0x48, 0x17,
1077 0x08, 0xe2, 0x00, 0x01, 0xf8, 0x45, 0x12, 0x42, 1077 0x08, 0xe2, 0x00, 0x01, 0xf8, 0x45, 0x12, 0x42,
1078 0x6d, 0xea, 0x00, 0x0d, 0x6d, 0x96, 0x6c, 0xeb, 1078 0x6d, 0xea, 0x00, 0x0d, 0x6d, 0x96, 0x6c, 0xeb,
1079 0xff, 0xff, 0x12, 0x34, 0xf0, 0x73, 0x12, 0x90, 1079 0xff, 0xff, 0x12, 0x34, 0xf0, 0x73, 0x12, 0x90,
1080 0x56, 0xf8, 0x27, 0x6a, 0xf0, 0x00, 0x00, 0x01, 1080 0x56, 0xf8, 0x27, 0x6a, 0xf0, 0x00, 0x00, 0x01,
1081 0x4e, 0xf8, 0x27, 0x6a, 0x60, 0x82, 0x00, 0x01, 1081 0x4e, 0xf8, 0x27, 0x6a, 0x60, 0x82, 0x00, 0x01,
1082 0xf8, 0x30, 0x12, 0x54, 0x70, 0x00, 0x00, 0x16, 1082 0xf8, 0x30, 0x12, 0x54, 0x70, 0x00, 0x00, 0x16,
1083 0xf2, 0x74, 0x11, 0x38, 0xf4, 0x95, 0x48, 0x11, 1083 0xf2, 0x74, 0x11, 0x38, 0xf4, 0x95, 0x48, 0x11,
1084 0xf0, 0x73, 0x12, 0x90, 0x70, 0x00, 0x00, 0x16, 1084 0xf0, 0x73, 0x12, 0x90, 0x70, 0x00, 0x00, 0x16,
1085 0xf2, 0x74, 0x11, 0x38, 0xf4, 0x95, 0x48, 0x11, 1085 0xf2, 0x74, 0x11, 0x38, 0xf4, 0x95, 0x48, 0x11,
1086 0x72, 0x10, 0x2a, 0x9e, 0xf4, 0x95, 0xf4, 0xaf, 1086 0x72, 0x10, 0x2a, 0x9e, 0xf4, 0x95, 0xf4, 0xaf,
1087 0xf8, 0x30, 0x12, 0x6e, 0x76, 0x00, 0x00, 0x00, 1087 0xf8, 0x30, 0x12, 0x6e, 0x76, 0x00, 0x00, 0x00,
1088 0x76, 0x01, 0x00, 0xbc, 0x70, 0x02, 0x00, 0x16, 1088 0x76, 0x01, 0x00, 0xbc, 0x70, 0x02, 0x00, 0x16,
1089 0x76, 0x03, 0x00, 0x00, 0xf2, 0x74, 0x0c, 0xb9, 1089 0x76, 0x03, 0x00, 0x00, 0xf2, 0x74, 0x0c, 0xb9,
1090 0xf4, 0x95, 0x48, 0x11, 0xf0, 0x73, 0x12, 0x90, 1090 0xf4, 0x95, 0x48, 0x11, 0xf0, 0x73, 0x12, 0x90,
1091 0x10, 0xf8, 0x27, 0x6e, 0xf8, 0x44, 0x12, 0x90, 1091 0x10, 0xf8, 0x27, 0x6e, 0xf8, 0x44, 0x12, 0x90,
1092 0x76, 0x00, 0x00, 0x00, 0x76, 0x01, 0x00, 0xbc, 1092 0x76, 0x00, 0x00, 0x00, 0x76, 0x01, 0x00, 0xbc,
1093 0x70, 0x02, 0x00, 0x16, 0x76, 0x03, 0x00, 0x00, 1093 0x70, 0x02, 0x00, 0x16, 0x76, 0x03, 0x00, 0x00,
1094 0xf2, 0x74, 0x0c, 0xb9, 0xf4, 0x95, 0x48, 0x11, 1094 0xf2, 0x74, 0x0c, 0xb9, 0xf4, 0x95, 0x48, 0x11,
1095 0xf0, 0x74, 0x0c, 0x5e, 0xf0, 0xe0, 0xf0, 0x10, 1095 0xf0, 0x74, 0x0c, 0x5e, 0xf0, 0xe0, 0xf0, 0x10,
1096 0x13, 0x88, 0xf8, 0x42, 0x12, 0x90, 0x76, 0xf8, 1096 0x13, 0x88, 0xf8, 0x42, 0x12, 0x90, 0x76, 0xf8,
1097 0x27, 0x6e, 0x00, 0x01, 0xf0, 0x73, 0x12, 0x90, 1097 0x27, 0x6e, 0x00, 0x01, 0xf0, 0x73, 0x12, 0x90,
1098 0x56, 0xf8, 0x27, 0x66, 0xf0, 0x00, 0x00, 0x01, 1098 0x56, 0xf8, 0x27, 0x66, 0xf0, 0x00, 0x00, 0x01,
1099 0x4e, 0xf8, 0x27, 0x66, 0x6d, 0xe9, 0x00, 0x5e, 1099 0x4e, 0xf8, 0x27, 0x66, 0x6d, 0xe9, 0x00, 0x5e,
1100 0x56, 0xf8, 0x27, 0x68, 0xf0, 0x00, 0x00, 0x01, 1100 0x56, 0xf8, 0x27, 0x68, 0xf0, 0x00, 0x00, 0x01,
1101 0x4e, 0xf8, 0x27, 0x68, 0x71, 0x04, 0x00, 0x12, 1101 0x4e, 0xf8, 0x27, 0x68, 0x71, 0x04, 0x00, 0x12,
1102 0x6e, 0xea, 0xff, 0xff, 0x12, 0x18, 0x70, 0x04, 1102 0x6e, 0xea, 0xff, 0xff, 0x12, 0x18, 0x70, 0x04,
1103 0x00, 0x12, 0xee, 0x06, 0x8a, 0x17, 0x8a, 0x16, 1103 0x00, 0x12, 0xee, 0x06, 0x8a, 0x17, 0x8a, 0x16,
1104 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfe, 1104 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfe,
1105 0x88, 0x0e, 0xf4, 0x95, 0xf0, 0x66, 0x00, 0x0d, 1105 0x88, 0x0e, 0xf4, 0x95, 0xf0, 0x66, 0x00, 0x0d,
1106 0xf0, 0x00, 0x25, 0xa0, 0x88, 0x11, 0xf4, 0x95, 1106 0xf0, 0x00, 0x25, 0xa0, 0x88, 0x11, 0xf4, 0x95,
1107 0xf4, 0x95, 0x76, 0x81, 0x00, 0xff, 0x76, 0x00, 1107 0xf4, 0x95, 0x76, 0x81, 0x00, 0xff, 0x76, 0x00,
1108 0x00, 0x00, 0x76, 0x01, 0x00, 0x06, 0xf2, 0x74, 1108 0x00, 0x00, 0x76, 0x01, 0x00, 0x06, 0xf2, 0x74,
1109 0x06, 0x6c, 0xf0, 0x00, 0x00, 0x01, 0x76, 0x00, 1109 0x06, 0x6c, 0xf0, 0x00, 0x00, 0x01, 0x76, 0x00,
1110 0x00, 0x00, 0x76, 0x01, 0x00, 0x06, 0x48, 0x11, 1110 0x00, 0x00, 0x76, 0x01, 0x00, 0x06, 0x48, 0x11,
1111 0xf2, 0x74, 0x06, 0x6c, 0xf0, 0x00, 0x00, 0x07, 1111 0xf2, 0x74, 0x06, 0x6c, 0xf0, 0x00, 0x00, 0x07,
1112 0xee, 0x02, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 1112 0xee, 0x02, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11,
1113 0x88, 0x0e, 0xf4, 0x95, 0xf0, 0x66, 0x00, 0x0d, 1113 0x88, 0x0e, 0xf4, 0x95, 0xf0, 0x66, 0x00, 0x0d,
1114 0xf0, 0x00, 0x24, 0x00, 0x88, 0x11, 0xf4, 0x95, 1114 0xf0, 0x00, 0x24, 0x00, 0x88, 0x11, 0xf4, 0x95,
1115 0xf4, 0x95, 0x76, 0xe1, 0x00, 0x01, 0xff, 0xff, 1115 0xf4, 0x95, 0x76, 0xe1, 0x00, 0x01, 0xff, 0xff,
1116 0x76, 0x81, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x02, 1116 0x76, 0x81, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x02,
1117 0x00, 0x00, 0x76, 0xe1, 0x00, 0x03, 0x00, 0xff, 1117 0x00, 0x00, 0x76, 0xe1, 0x00, 0x03, 0x00, 0xff,
1118 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xf4, 0x95, 1118 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xf4, 0x95,
1119 0x13, 0x03, 0x88, 0x11, 0xfa, 0x4d, 0x12, 0xec, 1119 0x13, 0x03, 0x88, 0x11, 0xfa, 0x4d, 0x12, 0xec,
1120 0x71, 0x02, 0x00, 0x12, 0xf3, 0x10, 0x00, 0x01, 1120 0x71, 0x02, 0x00, 0x12, 0xf3, 0x10, 0x00, 0x01,
1121 0x89, 0x1a, 0xf4, 0x95, 0xf0, 0x72, 0x12, 0xeb, 1121 0x89, 0x1a, 0xf4, 0x95, 0xf0, 0x72, 0x12, 0xeb,
1122 0x70, 0x91, 0x00, 0x12, 0x8a, 0x11, 0xfc, 0x00, 1122 0x70, 0x91, 0x00, 0x12, 0x8a, 0x11, 0xfc, 0x00,
1123 0xf4, 0x95, 0x4a, 0x0b, 0x4a, 0x0c, 0x4a, 0x0d, 1123 0xf4, 0x95, 0x4a, 0x0b, 0x4a, 0x0c, 0x4a, 0x0d,
1124 0xf7, 0xb8, 0xee, 0xfe, 0x10, 0xf8, 0x00, 0x08, 1124 0xf7, 0xb8, 0xee, 0xfe, 0x10, 0xf8, 0x00, 0x08,
1125 0x11, 0x06, 0xf1, 0xc0, 0x83, 0x00, 0xf4, 0x85, 1125 0x11, 0x06, 0xf1, 0xc0, 0x83, 0x00, 0xf4, 0x85,
1126 0x11, 0x06, 0xf7, 0x85, 0x81, 0x06, 0xf6, 0xb8, 1126 0x11, 0x06, 0xf7, 0x85, 0x81, 0x06, 0xf6, 0xb8,
1127 0xec, 0x0f, 0x1e, 0x06, 0x61, 0x00, 0x80, 0x00, 1127 0xec, 0x0f, 0x1e, 0x06, 0x61, 0x00, 0x80, 0x00,
1128 0xf8, 0x20, 0x13, 0x05, 0xf4, 0x84, 0xee, 0x02, 1128 0xf8, 0x20, 0x13, 0x05, 0xf4, 0x84, 0xee, 0x02,
1129 0x8a, 0x0d, 0x8a, 0x0c, 0x8a, 0x0b, 0xfc, 0x00, 1129 0x8a, 0x0d, 0x8a, 0x0c, 0x8a, 0x0b, 0xfc, 0x00,
1130 0xf4, 0x95, 0x4a, 0x0b, 0x4a, 0x0c, 0x4a, 0x0d, 1130 0xf4, 0x95, 0x4a, 0x0b, 0x4a, 0x0c, 0x4a, 0x0d,
1131 0xee, 0xfe, 0xf7, 0xb8, 0x80, 0x00, 0x10, 0xf8, 1131 0xee, 0xfe, 0xf7, 0xb8, 0x80, 0x00, 0x10, 0xf8,
1132 0x00, 0x08, 0xf4, 0x85, 0x11, 0x06, 0xf7, 0x85, 1132 0x00, 0x08, 0xf4, 0x85, 0x11, 0x06, 0xf7, 0x85,
1133 0x81, 0x06, 0xf6, 0xb8, 0xec, 0x0f, 0x1e, 0x06, 1133 0x81, 0x06, 0xf6, 0xb8, 0xec, 0x0f, 0x1e, 0x06,
1134 0xf0, 0xf0, 0x61, 0x00, 0x80, 0x00, 0xf8, 0x20, 1134 0xf0, 0xf0, 0x61, 0x00, 0x80, 0x00, 0xf8, 0x20,
1135 0x13, 0x20, 0xf4, 0x84, 0xee, 0x02, 0x8a, 0x0d, 1135 0x13, 0x20, 0xf4, 0x84, 0xee, 0x02, 0x8a, 0x0d,
1136 0x8a, 0x0c, 0x8a, 0x0b, 0xfc, 0x00, 0x4a, 0x11, 1136 0x8a, 0x0c, 0x8a, 0x0b, 0xfc, 0x00, 0x4a, 0x11,
1137 0x77, 0x11, 0x00, 0x7b, 0x76, 0x81, 0x2e, 0xec, 1137 0x77, 0x11, 0x00, 0x7b, 0x76, 0x81, 0x2e, 0xec,
1138 0x77, 0x11, 0x00, 0x7b, 0xee, 0xff, 0x71, 0x81, 1138 0x77, 0x11, 0x00, 0x7b, 0xee, 0xff, 0x71, 0x81,
1139 0x00, 0x11, 0xee, 0x01, 0x76, 0xe1, 0x00, 0x01, 1139 0x00, 0x11, 0xee, 0x01, 0x76, 0xe1, 0x00, 0x01,
1140 0x00, 0x00, 0x76, 0xe1, 0x00, 0x04, 0x00, 0x00, 1140 0x00, 0x00, 0x76, 0xe1, 0x00, 0x04, 0x00, 0x00,
1141 0x76, 0xe1, 0x00, 0x06, 0x00, 0x00, 0x76, 0xe1, 1141 0x76, 0xe1, 0x00, 0x06, 0x00, 0x00, 0x76, 0xe1,
1142 0x00, 0x62, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x76, 1142 0x00, 0x62, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x76,
1143 0x00, 0x00, 0x76, 0xe1, 0x00, 0x92, 0x00, 0x00, 1143 0x00, 0x00, 0x76, 0xe1, 0x00, 0x92, 0x00, 0x00,
1144 0x76, 0xe1, 0x00, 0x94, 0x00, 0x00, 0x76, 0xe1, 1144 0x76, 0xe1, 0x00, 0x94, 0x00, 0x00, 0x76, 0xe1,
1145 0x00, 0xb0, 0x00, 0x00, 0x76, 0xe1, 0x00, 0xb3, 1145 0x00, 0xb0, 0x00, 0x00, 0x76, 0xe1, 0x00, 0xb3,
1146 0x00, 0x00, 0x76, 0xe1, 0x00, 0xbe, 0x00, 0x00, 1146 0x00, 0x00, 0x76, 0xe1, 0x00, 0xbe, 0x00, 0x00,
1147 0x76, 0xe1, 0x00, 0xbf, 0x00, 0x00, 0x76, 0xe1, 1147 0x76, 0xe1, 0x00, 0xbf, 0x00, 0x00, 0x76, 0xe1,
1148 0x00, 0xc1, 0x00, 0x00, 0x76, 0xe1, 0x00, 0xc3, 1148 0x00, 0xc1, 0x00, 0x00, 0x76, 0xe1, 0x00, 0xc3,
1149 0x00, 0x00, 0x76, 0xe1, 0x00, 0xc5, 0x00, 0x00, 1149 0x00, 0x00, 0x76, 0xe1, 0x00, 0xc5, 0x00, 0x00,
1150 0x76, 0xe1, 0x00, 0xc7, 0x00, 0x00, 0x76, 0x81, 1150 0x76, 0xe1, 0x00, 0xc7, 0x00, 0x00, 0x76, 0x81,
1151 0x00, 0x00, 0x8a, 0x11, 0xf4, 0x95, 0xf4, 0xe4, 1151 0x00, 0x00, 0x8a, 0x11, 0xf4, 0x95, 0xf4, 0xe4,
1152 0x4a, 0x11, 0x4a, 0x16, 0x4a, 0x17, 0xee, 0xff, 1152 0x4a, 0x11, 0x4a, 0x16, 0x4a, 0x17, 0xee, 0xff,
1153 0xf4, 0x95, 0x71, 0x06, 0x00, 0x16, 0xfb, 0x80, 1153 0xf4, 0x95, 0x71, 0x06, 0x00, 0x16, 0xfb, 0x80,
1154 0x16, 0xa2, 0x88, 0x17, 0xf4, 0x95, 0xf7, 0xb8, 1154 0x16, 0xa2, 0x88, 0x17, 0xf4, 0x95, 0xf7, 0xb8,
1155 0x10, 0xf8, 0x00, 0x17, 0xf0, 0x10, 0x00, 0x02, 1155 0x10, 0xf8, 0x00, 0x17, 0xf0, 0x10, 0x00, 0x02,
1156 0xfa, 0x46, 0x13, 0x88, 0x77, 0x11, 0x00, 0x00, 1156 0xfa, 0x46, 0x13, 0x88, 0x77, 0x11, 0x00, 0x00,
1157 0x10, 0xf8, 0x00, 0x17, 0xf0, 0x10, 0x00, 0x02, 1157 0x10, 0xf8, 0x00, 0x17, 0xf0, 0x10, 0x00, 0x02,
1158 0xf8, 0x45, 0x13, 0xf9, 0x10, 0xf8, 0x00, 0x17, 1158 0xf8, 0x45, 0x13, 0xf9, 0x10, 0xf8, 0x00, 0x17,
1159 0xf8, 0x45, 0x14, 0x39, 0x10, 0xf8, 0x00, 0x17, 1159 0xf8, 0x45, 0x14, 0x39, 0x10, 0xf8, 0x00, 0x17,
1160 0xf0, 0x10, 0x00, 0x01, 0xf8, 0x45, 0x14, 0x1f, 1160 0xf0, 0x10, 0x00, 0x01, 0xf8, 0x45, 0x14, 0x1f,
1161 0xf0, 0x73, 0x14, 0x52, 0x10, 0xf8, 0x00, 0x17, 1161 0xf0, 0x73, 0x14, 0x52, 0x10, 0xf8, 0x00, 0x17,
1162 0xf0, 0x10, 0x00, 0x03, 0xf8, 0x45, 0x13, 0xd3, 1162 0xf0, 0x10, 0x00, 0x03, 0xf8, 0x45, 0x13, 0xd3,
1163 0x10, 0xf8, 0x00, 0x17, 0xf0, 0x10, 0x00, 0x06, 1163 0x10, 0xf8, 0x00, 0x17, 0xf0, 0x10, 0x00, 0x06,
1164 0xf8, 0x44, 0x14, 0x52, 0x77, 0x12, 0x00, 0x7b, 1164 0xf8, 0x44, 0x14, 0x52, 0x77, 0x12, 0x00, 0x7b,
1165 0x71, 0x82, 0x00, 0x14, 0x61, 0xe4, 0x00, 0x07, 1165 0x71, 0x82, 0x00, 0x14, 0x61, 0xe4, 0x00, 0x07,
1166 0x00, 0x40, 0xf8, 0x30, 0x14, 0x52, 0x49, 0x14, 1166 0x00, 0x40, 0xf8, 0x30, 0x14, 0x52, 0x49, 0x14,
1167 0x48, 0x17, 0xf6, 0x00, 0x88, 0x12, 0xf4, 0x95, 1167 0x48, 0x17, 0xf6, 0x00, 0x88, 0x12, 0xf4, 0x95,
1168 0x77, 0x13, 0x00, 0x55, 0x77, 0x11, 0x00, 0x57, 1168 0x77, 0x13, 0x00, 0x55, 0x77, 0x11, 0x00, 0x57,
1169 0x6d, 0xea, 0x00, 0x3b, 0xe5, 0x01, 0x10, 0xe6, 1169 0x6d, 0xea, 0x00, 0x3b, 0xe5, 0x01, 0x10, 0xe6,
1170 0x00, 0x06, 0x80, 0x81, 0x48, 0x14, 0x00, 0xf8, 1170 0x00, 0x06, 0x80, 0x81, 0x48, 0x14, 0x00, 0xf8,
1171 0x00, 0x17, 0x88, 0x12, 0xf4, 0x95, 0x77, 0x11, 1171 0x00, 0x17, 0x88, 0x12, 0xf4, 0x95, 0x77, 0x11,
1172 0x00, 0x55, 0x10, 0xe2, 0x00, 0x40, 0x80, 0x81, 1172 0x00, 0x55, 0x10, 0xe2, 0x00, 0x40, 0x80, 0x81,
1173 0x77, 0x11, 0x00, 0x57, 0x10, 0xe6, 0x00, 0x07, 1173 0x77, 0x11, 0x00, 0x57, 0x10, 0xe6, 0x00, 0x07,
1174 0x80, 0x81, 0x77, 0x11, 0x00, 0x55, 0x10, 0xe2, 1174 0x80, 0x81, 0x77, 0x11, 0x00, 0x55, 0x10, 0xe2,
1175 0x00, 0x45, 0x80, 0x81, 0x10, 0xe6, 0x00, 0x08, 1175 0x00, 0x45, 0x80, 0x81, 0x10, 0xe6, 0x00, 0x08,
1176 0x77, 0x11, 0x00, 0x57, 0x80, 0x81, 0x77, 0x11, 1176 0x77, 0x11, 0x00, 0x57, 0x80, 0x81, 0x77, 0x11,
1177 0x00, 0x55, 0x10, 0xe2, 0x00, 0x4a, 0x80, 0x81, 1177 0x00, 0x55, 0x10, 0xe2, 0x00, 0x4a, 0x80, 0x81,
1178 0x77, 0x11, 0x00, 0x57, 0x10, 0xe6, 0x00, 0x09, 1178 0x77, 0x11, 0x00, 0x57, 0x10, 0xe6, 0x00, 0x09,
1179 0x80, 0x81, 0xf2, 0x73, 0x14, 0x52, 0x77, 0x11, 1179 0x80, 0x81, 0xf2, 0x73, 0x14, 0x52, 0x77, 0x11,
1180 0x03, 0xc0, 0x77, 0x12, 0x00, 0x7b, 0x10, 0x82, 1180 0x03, 0xc0, 0x77, 0x12, 0x00, 0x7b, 0x10, 0x82,
1181 0xf0, 0x00, 0x00, 0x07, 0x88, 0x13, 0xf4, 0x95, 1181 0xf0, 0x00, 0x00, 0x07, 0x88, 0x13, 0xf4, 0x95,
1182 0xf4, 0x95, 0x96, 0x1b, 0xf8, 0x30, 0x14, 0x52, 1182 0xf4, 0x95, 0x96, 0x1b, 0xf8, 0x30, 0x14, 0x52,
1183 0x10, 0xe3, 0x00, 0x35, 0x77, 0x12, 0x00, 0x55, 1183 0x10, 0xe3, 0x00, 0x35, 0x77, 0x12, 0x00, 0x55,
1184 0x80, 0x82, 0x77, 0x12, 0x00, 0x57, 0x10, 0xe6, 1184 0x80, 0x82, 0x77, 0x12, 0x00, 0x57, 0x10, 0xe6,
1185 0x00, 0x04, 0x80, 0x82, 0x77, 0x12, 0x00, 0x55, 1185 0x00, 0x04, 0x80, 0x82, 0x77, 0x12, 0x00, 0x55,
1186 0x10, 0xe3, 0x00, 0x37, 0x80, 0x82, 0x77, 0x12, 1186 0x10, 0xe3, 0x00, 0x37, 0x80, 0x82, 0x77, 0x12,
1187 0x00, 0x57, 0x10, 0xe6, 0x00, 0x05, 0x80, 0x82, 1187 0x00, 0x57, 0x10, 0xe6, 0x00, 0x05, 0x80, 0x82,
1188 0x48, 0x11, 0xf0, 0x40, 0x00, 0x10, 0xf2, 0x73, 1188 0x48, 0x11, 0xf0, 0x40, 0x00, 0x10, 0xf2, 0x73,
1189 0x14, 0x50, 0xf0, 0x40, 0x00, 0x20, 0x77, 0x12, 1189 0x14, 0x50, 0xf0, 0x40, 0x00, 0x20, 0x77, 0x12,
1190 0x00, 0x7b, 0x10, 0x82, 0xf0, 0x00, 0x00, 0x07, 1190 0x00, 0x7b, 0x10, 0x82, 0xf0, 0x00, 0x00, 0x07,
1191 0x88, 0x12, 0xf4, 0x95, 0xf4, 0x95, 0x96, 0x0d, 1191 0x88, 0x12, 0xf4, 0x95, 0xf4, 0x95, 0x96, 0x0d,
1192 0xf8, 0x30, 0x14, 0x52, 0x10, 0xe2, 0x00, 0x34, 1192 0xf8, 0x30, 0x14, 0x52, 0x10, 0xe2, 0x00, 0x34,
1193 0x77, 0x13, 0x00, 0x55, 0x80, 0x83, 0x77, 0x13, 1193 0x77, 0x13, 0x00, 0x55, 0x80, 0x83, 0x77, 0x13,
1194 0x00, 0x57, 0x10, 0xe6, 0x00, 0x02, 0x80, 0x83, 1194 0x00, 0x57, 0x10, 0xe6, 0x00, 0x02, 0x80, 0x83,
1195 0x10, 0xe2, 0x00, 0x36, 0x77, 0x12, 0x00, 0x55, 1195 0x10, 0xe2, 0x00, 0x36, 0x77, 0x12, 0x00, 0x55,
1196 0x80, 0x82, 0x77, 0x12, 0x00, 0x57, 0x10, 0xe6, 1196 0x80, 0x82, 0x77, 0x12, 0x00, 0x57, 0x10, 0xe6,
1197 0x00, 0x03, 0x80, 0x82, 0x48, 0x11, 0xf0, 0x40, 1197 0x00, 0x03, 0x80, 0x82, 0x48, 0x11, 0xf0, 0x40,
1198 0x00, 0x04, 0xf2, 0x73, 0x14, 0x50, 0xf0, 0x40, 1198 0x00, 0x04, 0xf2, 0x73, 0x14, 0x50, 0xf0, 0x40,
1199 0x00, 0x08, 0x77, 0x12, 0x00, 0x7b, 0x10, 0x82, 1199 0x00, 0x08, 0x77, 0x12, 0x00, 0x7b, 0x10, 0x82,
1200 0xf0, 0x00, 0x00, 0x07, 0x88, 0x12, 0xf4, 0x95, 1200 0xf0, 0x00, 0x00, 0x07, 0x88, 0x12, 0xf4, 0x95,
1201 0xf4, 0x95, 0x96, 0x0e, 0xf8, 0x30, 0x14, 0x52, 1201 0xf4, 0x95, 0x96, 0x0e, 0xf8, 0x30, 0x14, 0x52,
1202 0x10, 0xe2, 0x00, 0x33, 0x77, 0x12, 0x00, 0x55, 1202 0x10, 0xe2, 0x00, 0x33, 0x77, 0x12, 0x00, 0x55,
1203 0x80, 0x82, 0x77, 0x12, 0x00, 0x57, 0x10, 0xe6, 1203 0x80, 0x82, 0x77, 0x12, 0x00, 0x57, 0x10, 0xe6,
1204 0x00, 0x01, 0x80, 0x82, 0x48, 0x11, 0xf2, 0x73, 1204 0x00, 0x01, 0x80, 0x82, 0x48, 0x11, 0xf2, 0x73,
1205 0x14, 0x50, 0xf0, 0x40, 0x00, 0x02, 0x77, 0x12, 1205 0x14, 0x50, 0xf0, 0x40, 0x00, 0x02, 0x77, 0x12,
1206 0x00, 0x7b, 0x10, 0x82, 0xf0, 0x00, 0x00, 0x07, 1206 0x00, 0x7b, 0x10, 0x82, 0xf0, 0x00, 0x00, 0x07,
1207 0x88, 0x12, 0xf4, 0x95, 0xf4, 0x95, 0x96, 0x0f, 1207 0x88, 0x12, 0xf4, 0x95, 0xf4, 0x95, 0x96, 0x0f,
1208 0xf8, 0x30, 0x14, 0x52, 0x10, 0xe2, 0x00, 0x32, 1208 0xf8, 0x30, 0x14, 0x52, 0x10, 0xe2, 0x00, 0x32,
1209 0x77, 0x12, 0x00, 0x55, 0x77, 0x13, 0x00, 0x57, 1209 0x77, 0x12, 0x00, 0x55, 0x77, 0x13, 0x00, 0x57,
1210 0x80, 0x82, 0x48, 0x11, 0xe7, 0x62, 0xf0, 0x40, 1210 0x80, 0x82, 0x48, 0x11, 0xe7, 0x62, 0xf0, 0x40,
1211 0x00, 0x01, 0xe5, 0x01, 0x88, 0x11, 0xf4, 0x95, 1211 0x00, 0x01, 0xe5, 0x01, 0x88, 0x11, 0xf4, 0x95,
1212 0x77, 0x12, 0x00, 0x7b, 0x48, 0x11, 0x71, 0x82, 1212 0x77, 0x12, 0x00, 0x7b, 0x48, 0x11, 0x71, 0x82,
1213 0x00, 0x12, 0x1a, 0xe2, 0x00, 0x07, 0x80, 0xe2, 1213 0x00, 0x12, 0x1a, 0xe2, 0x00, 0x07, 0x80, 0xe2,
1214 0x00, 0x07, 0xf9, 0x80, 0x16, 0x9a, 0xee, 0x01, 1214 0x00, 0x07, 0xf9, 0x80, 0x16, 0x9a, 0xee, 0x01,
1215 0x8a, 0x17, 0x48, 0x11, 0x8a, 0x16, 0x8a, 0x11, 1215 0x8a, 0x17, 0x48, 0x11, 0x8a, 0x16, 0x8a, 0x11,
1216 0xf4, 0xe4, 0x4a, 0x11, 0x88, 0x11, 0x77, 0x0e, 1216 0xf4, 0xe4, 0x4a, 0x11, 0x88, 0x11, 0x77, 0x0e,
1217 0x00, 0x05, 0x77, 0x12, 0x00, 0x55, 0xe8, 0x04, 1217 0x00, 0x05, 0x77, 0x12, 0x00, 0x55, 0xe8, 0x04,
1218 0xf6, 0xb8, 0x28, 0xe1, 0x00, 0x02, 0xee, 0xff, 1218 0xf6, 0xb8, 0x28, 0xe1, 0x00, 0x02, 0xee, 0xff,
1219 0x80, 0x82, 0x77, 0x12, 0x00, 0x57, 0xf0, 0x20, 1219 0x80, 0x82, 0x77, 0x12, 0x00, 0x57, 0xf0, 0x20,
1220 0x80, 0x00, 0xee, 0x01, 0x1a, 0x82, 0x77, 0x12, 1220 0x80, 0x00, 0xee, 0x01, 0x1a, 0x82, 0x77, 0x12,
1221 0x00, 0x57, 0x80, 0x82, 0xe8, 0x01, 0x32, 0xe1, 1221 0x00, 0x57, 0x80, 0x82, 0xe8, 0x01, 0x32, 0xe1,
1222 0x00, 0x02, 0xf5, 0x82, 0x77, 0x11, 0x00, 0x54, 1222 0x00, 0x02, 0xf5, 0x82, 0x77, 0x11, 0x00, 0x54,
1223 0xf6, 0x93, 0x18, 0x81, 0x77, 0x11, 0x00, 0x54, 1223 0xf6, 0x93, 0x18, 0x81, 0x77, 0x11, 0x00, 0x54,
1224 0xf2, 0xa0, 0x80, 0x81, 0x8a, 0x11, 0xf4, 0x95, 1224 0xf2, 0xa0, 0x80, 0x81, 0x8a, 0x11, 0xf4, 0x95,
1225 0xf4, 0xe4, 0x4a, 0x11, 0x4a, 0x16, 0xf4, 0x95, 1225 0xf4, 0xe4, 0x4a, 0x11, 0x4a, 0x16, 0xf4, 0x95,
1226 0x71, 0x04, 0x00, 0x11, 0xfb, 0x80, 0x16, 0xa2, 1226 0x71, 0x04, 0x00, 0x11, 0xfb, 0x80, 0x16, 0xa2,
1227 0x88, 0x16, 0xf4, 0x95, 0x77, 0x12, 0x00, 0x55, 1227 0x88, 0x16, 0xf4, 0x95, 0x77, 0x12, 0x00, 0x55,
1228 0x10, 0xe6, 0x00, 0x03, 0x80, 0x82, 0x77, 0x12, 1228 0x10, 0xe6, 0x00, 0x03, 0x80, 0x82, 0x77, 0x12,
1229 0x00, 0x56, 0x10, 0xe1, 0x00, 0x02, 0x77, 0x13, 1229 0x00, 0x56, 0x10, 0xe1, 0x00, 0x02, 0x77, 0x13,
1230 0x00, 0x56, 0x80, 0x82, 0x77, 0x12, 0x00, 0x56, 1230 0x00, 0x56, 0x80, 0x82, 0x77, 0x12, 0x00, 0x56,
1231 0x10, 0xe1, 0x00, 0x03, 0x80, 0x82, 0x10, 0xe1, 1231 0x10, 0xe1, 0x00, 0x03, 0x80, 0x82, 0x10, 0xe1,
1232 0x00, 0x04, 0x77, 0x12, 0x00, 0x56, 0x80, 0x82, 1232 0x00, 0x04, 0x77, 0x12, 0x00, 0x56, 0x80, 0x82,
1233 0x77, 0x12, 0x00, 0x56, 0x10, 0xe1, 0x00, 0x01, 1233 0x77, 0x12, 0x00, 0x56, 0x10, 0xe1, 0x00, 0x01,
1234 0x80, 0x82, 0xe7, 0x12, 0xe5, 0x01, 0xf9, 0x80, 1234 0x80, 0x82, 0xe7, 0x12, 0xe5, 0x01, 0xf9, 0x80,
1235 0x16, 0x9a, 0x8a, 0x16, 0x8a, 0x11, 0xf4, 0xe4, 1235 0x16, 0x9a, 0x8a, 0x16, 0x8a, 0x11, 0xf4, 0xe4,
1236 0x4a, 0x11, 0x4a, 0x16, 0x4a, 0x17, 0xee, 0xf9, 1236 0x4a, 0x11, 0x4a, 0x16, 0x4a, 0x17, 0xee, 0xf9,
1237 0x77, 0x11, 0x00, 0x7b, 0x76, 0x00, 0x00, 0x16, 1237 0x77, 0x11, 0x00, 0x7b, 0x76, 0x00, 0x00, 0x16,
1238 0x76, 0x01, 0x00, 0x17, 0x76, 0x02, 0x00, 0x1a, 1238 0x76, 0x01, 0x00, 0x17, 0x76, 0x02, 0x00, 0x1a,
1239 0x76, 0x03, 0x00, 0x1b, 0x76, 0x04, 0x00, 0x1c, 1239 0x76, 0x03, 0x00, 0x1b, 0x76, 0x04, 0x00, 0x1c,
1240 0x76, 0x05, 0x00, 0x1d, 0x71, 0x81, 0x00, 0x17, 1240 0x76, 0x05, 0x00, 0x1d, 0x71, 0x81, 0x00, 0x17,
1241 0x71, 0xe7, 0x00, 0x06, 0x00, 0x11, 0x10, 0x81, 1241 0x71, 0xe7, 0x00, 0x06, 0x00, 0x11, 0x10, 0x81,
1242 0xf8, 0x44, 0x14, 0xdf, 0xf9, 0x80, 0x16, 0x53, 1242 0xf8, 0x44, 0x14, 0xdf, 0xf9, 0x80, 0x16, 0x53,
1243 0xf6, 0xb8, 0xfb, 0x80, 0x15, 0x85, 0xf0, 0x20, 1243 0xf6, 0xb8, 0xfb, 0x80, 0x15, 0x85, 0xf0, 0x20,
1244 0xff, 0xff, 0xf6, 0xb8, 0xfb, 0x80, 0x16, 0x08, 1244 0xff, 0xff, 0xf6, 0xb8, 0xfb, 0x80, 0x16, 0x08,
1245 0xf0, 0x20, 0xff, 0xff, 0x77, 0x11, 0x00, 0x7b, 1245 0xf0, 0x20, 0xff, 0xff, 0x77, 0x11, 0x00, 0x7b,
1246 0x71, 0x81, 0x00, 0x17, 0x76, 0xe7, 0x00, 0x06, 1246 0x71, 0x81, 0x00, 0x17, 0x76, 0xe7, 0x00, 0x06,
1247 0x00, 0x01, 0x48, 0x17, 0x77, 0x16, 0x00, 0x00, 1247 0x00, 0x01, 0x48, 0x17, 0x77, 0x16, 0x00, 0x00,
1248 0x77, 0x10, 0x00, 0x04, 0x77, 0x15, 0x00, 0x03, 1248 0x77, 0x10, 0x00, 0x04, 0x77, 0x15, 0x00, 0x03,
1249 0x77, 0x14, 0x00, 0x02, 0x77, 0x13, 0x00, 0x01, 1249 0x77, 0x14, 0x00, 0x02, 0x77, 0x13, 0x00, 0x01,
1250 0xf0, 0x00, 0x00, 0x39, 0x76, 0xe7, 0x00, 0x08, 1250 0xf0, 0x00, 0x00, 0x39, 0x76, 0xe7, 0x00, 0x08,
1251 0x00, 0x1f, 0x76, 0xe7, 0x00, 0x07, 0x00, 0x00, 1251 0x00, 0x1f, 0x76, 0xe7, 0x00, 0x07, 0x00, 0x00,
1252 0x88, 0x0e, 0x77, 0x1a, 0x00, 0x05, 0x48, 0x17, 1252 0x88, 0x0e, 0x77, 0x1a, 0x00, 0x05, 0x48, 0x17,
1253 0xf0, 0x00, 0x00, 0x09, 0x88, 0x12, 0x48, 0x18, 1253 0xf0, 0x00, 0x00, 0x09, 0x88, 0x12, 0x48, 0x18,
1254 0x88, 0x19, 0xe8, 0x00, 0xf0, 0x72, 0x15, 0x2c, 1254 0x88, 0x19, 0xe8, 0x00, 0xf0, 0x72, 0x15, 0x2c,
1255 0x73, 0x19, 0x00, 0x11, 0x76, 0x82, 0x00, 0x00, 1255 0x73, 0x19, 0x00, 0x11, 0x76, 0x82, 0x00, 0x00,
1256 0x11, 0x91, 0x73, 0x11, 0x00, 0x19, 0x70, 0xe2, 1256 0x11, 0x91, 0x73, 0x11, 0x00, 0x19, 0x70, 0xe2,
1257 0x00, 0x03, 0x00, 0x16, 0x70, 0xe2, 0x00, 0x04, 1257 0x00, 0x03, 0x00, 0x16, 0x70, 0xe2, 0x00, 0x04,
1258 0x00, 0x13, 0x70, 0xe2, 0x00, 0x05, 0x00, 0x14, 1258 0x00, 0x13, 0x70, 0xe2, 0x00, 0x05, 0x00, 0x14,
1259 0x81, 0xe2, 0x00, 0x01, 0x70, 0xe2, 0x00, 0x06, 1259 0x81, 0xe2, 0x00, 0x01, 0x70, 0xe2, 0x00, 0x06,
1260 0x00, 0x15, 0x70, 0xe2, 0x00, 0x07, 0x00, 0x10, 1260 0x00, 0x15, 0x70, 0xe2, 0x00, 0x07, 0x00, 0x10,
1261 0x80, 0xe2, 0x00, 0x02, 0x73, 0x0e, 0x00, 0x11, 1261 0x80, 0xe2, 0x00, 0x02, 0x73, 0x0e, 0x00, 0x11,
1262 0xf1, 0x00, 0x00, 0x1e, 0x6d, 0xee, 0x00, 0x05, 1262 0xf1, 0x00, 0x00, 0x1e, 0x6d, 0xee, 0x00, 0x05,
1263 0x6d, 0xeb, 0x00, 0x05, 0x6d, 0xec, 0x00, 0x05, 1263 0x6d, 0xeb, 0x00, 0x05, 0x6d, 0xec, 0x00, 0x05,
1264 0x6d, 0xed, 0x00, 0x05, 0x6d, 0xe8, 0x00, 0x05, 1264 0x6d, 0xed, 0x00, 0x05, 0x6d, 0xe8, 0x00, 0x05,
1265 0xf0, 0x00, 0x00, 0x01, 0x81, 0x91, 0x6d, 0xea, 1265 0xf0, 0x00, 0x00, 0x01, 0x81, 0x91, 0x6d, 0xea,
1266 0x00, 0x08, 0x73, 0x11, 0x00, 0x0e, 0xee, 0x07, 1266 0x00, 0x08, 0x73, 0x11, 0x00, 0x0e, 0xee, 0x07,
1267 0x76, 0xe7, 0x00, 0x41, 0x00, 0x24, 0x76, 0xe7, 1267 0x76, 0xe7, 0x00, 0x41, 0x00, 0x24, 0x76, 0xe7,
1268 0x00, 0x46, 0x00, 0x25, 0x76, 0xe7, 0x00, 0x4b, 1268 0x00, 0x46, 0x00, 0x25, 0x76, 0xe7, 0x00, 0x4b,
1269 0x00, 0x26, 0x76, 0xe7, 0x00, 0x50, 0x00, 0x27, 1269 0x00, 0x26, 0x76, 0xe7, 0x00, 0x50, 0x00, 0x27,
1270 0x8a, 0x17, 0x8a, 0x16, 0x8a, 0x11, 0xf4, 0xe4, 1270 0x8a, 0x17, 0x8a, 0x16, 0x8a, 0x11, 0xf4, 0xe4,
1271 0x4a, 0x11, 0x4a, 0x16, 0xee, 0xfe, 0x88, 0x11, 1271 0x4a, 0x11, 0x4a, 0x16, 0xee, 0xfe, 0x88, 0x11,
1272 0x56, 0x06, 0x4e, 0x00, 0xf9, 0x80, 0x16, 0xa2, 1272 0x56, 0x06, 0x4e, 0x00, 0xf9, 0x80, 0x16, 0xa2,
1273 0xf7, 0xb8, 0x10, 0xf8, 0x00, 0x11, 0xf0, 0x10, 1273 0xf7, 0xb8, 0x10, 0xf8, 0x00, 0x11, 0xf0, 0x10,
1274 0xff, 0xff, 0xfa, 0x45, 0x15, 0x60, 0x77, 0x16, 1274 0xff, 0xff, 0xfa, 0x45, 0x15, 0x60, 0x77, 0x16,
1275 0xff, 0xff, 0x77, 0x12, 0x00, 0x7b, 0x49, 0x11, 1275 0xff, 0xff, 0x77, 0x12, 0x00, 0x7b, 0x49, 0x11,
1276 0x10, 0x82, 0xf6, 0x03, 0xf0, 0x00, 0x00, 0x09, 1276 0x10, 0x82, 0xf6, 0x03, 0xf0, 0x00, 0x00, 0x09,
1277 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x10, 0x81, 1277 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x10, 0x81,
1278 0xf8, 0x44, 0x15, 0x71, 0xf2, 0x73, 0x15, 0x71, 1278 0xf8, 0x44, 0x15, 0x71, 0xf2, 0x73, 0x15, 0x71,
1279 0xf4, 0x95, 0xe7, 0x16, 0x77, 0x11, 0x00, 0x7b, 1279 0xf4, 0x95, 0xe7, 0x16, 0x77, 0x11, 0x00, 0x7b,
1280 0x10, 0x81, 0xf0, 0x00, 0x00, 0x09, 0x88, 0x11, 1280 0x10, 0x81, 0xf0, 0x00, 0x00, 0x09, 0x88, 0x11,
1281 0xf4, 0x95, 0x77, 0x12, 0x00, 0x06, 0x10, 0x81, 1281 0xf4, 0x95, 0x77, 0x12, 0x00, 0x06, 0x10, 0x81,
1282 0xf8, 0x45, 0x15, 0x5c, 0x6e, 0xea, 0xff, 0xff, 1282 0xf8, 0x45, 0x15, 0x5c, 0x6e, 0xea, 0xff, 0xff,
1283 0x15, 0x69, 0x6d, 0xe9, 0x00, 0x08, 0x76, 0x86, 1283 0x15, 0x69, 0x6d, 0xe9, 0x00, 0x08, 0x76, 0x86,
1284 0x00, 0x01, 0xe9, 0x01, 0x56, 0x00, 0xf1, 0x80, 1284 0x00, 0x01, 0xe9, 0x01, 0x56, 0x00, 0xf1, 0x80,
1285 0x10, 0xf8, 0x00, 0x0b, 0xf8, 0x45, 0x15, 0x7e, 1285 0x10, 0xf8, 0x00, 0x0b, 0xf8, 0x45, 0x15, 0x7e,
1286 0xfb, 0x80, 0x15, 0x85, 0xf4, 0x95, 0x48, 0x16, 1286 0xfb, 0x80, 0x15, 0x85, 0xf4, 0x95, 0x48, 0x16,
1287 0xf9, 0x80, 0x16, 0x9a, 0xee, 0x02, 0x48, 0x16, 1287 0xf9, 0x80, 0x16, 0x9a, 0xee, 0x02, 0x48, 0x16,
1288 0x8a, 0x16, 0x8a, 0x11, 0xf4, 0xe4, 0x4a, 0x11, 1288 0x8a, 0x16, 0x8a, 0x11, 0xf4, 0xe4, 0x4a, 0x11,
1289 0xee, 0xff, 0xfb, 0x80, 0x16, 0xa2, 0x88, 0x11, 1289 0xee, 0xff, 0xfb, 0x80, 0x16, 0xa2, 0x88, 0x11,
1290 0xf4, 0x95, 0x77, 0x10, 0xff, 0xff, 0xf4, 0xa9, 1290 0xf4, 0x95, 0x77, 0x10, 0xff, 0xff, 0xf4, 0xa9,
1291 0xf8, 0x30, 0x15, 0xc4, 0x10, 0xe1, 0x00, 0x03, 1291 0xf8, 0x30, 0x15, 0xc4, 0x10, 0xe1, 0x00, 0x03,
1292 0x77, 0x12, 0x00, 0x55, 0x80, 0x82, 0x77, 0x12, 1292 0x77, 0x12, 0x00, 0x55, 0x80, 0x82, 0x77, 0x12,
1293 0x00, 0x56, 0x76, 0x82, 0x00, 0x00, 0x77, 0x12, 1293 0x00, 0x56, 0x76, 0x82, 0x00, 0x00, 0x77, 0x12,
1294 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, 1295 0x00, 0x56, 0x76, 0x82, 0x00, 0x00, 0x77, 0x12,
1296 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, 1297 0x00, 0x56, 0x76, 0x82, 0x00, 0x00, 0x10, 0xe1,
1298 0x00, 0x02, 0xf0, 0x00, 0x00, 0x08, 0x32, 0xf8, 1298 0x00, 0x02, 0xf0, 0x00, 0x00, 0x08, 0x32, 0xf8,
1299 0x00, 0x08, 0x77, 0x12, 0x00, 0x54, 0xe8, 0x01, 1299 0x00, 0x08, 0x77, 0x12, 0x00, 0x54, 0xe8, 0x01,
1300 0xf4, 0x82, 0xf4, 0x93, 0x18, 0x82, 0x77, 0x12, 1300 0xf4, 0x82, 0xf4, 0x93, 0x18, 0x82, 0x77, 0x12,
1301 0x00, 0x54, 0xf0, 0x40, 0x00, 0x00, 0x80, 0x82, 1301 0x00, 0x54, 0xf0, 0x40, 0x00, 0x00, 0x80, 0x82,
1302 0x10, 0xe1, 0x00, 0x01, 0xf9, 0x80, 0x16, 0x76, 1302 0x10, 0xe1, 0x00, 0x01, 0xf9, 0x80, 0x16, 0x76,
1303 0x10, 0xe1, 0x00, 0x01, 0xf9, 0x80, 0x16, 0x66, 1303 0x10, 0xe1, 0x00, 0x01, 0xf9, 0x80, 0x16, 0x66,
1304 0xf0, 0x73, 0x16, 0x03, 0x77, 0x11, 0x00, 0x7b, 1304 0xf0, 0x73, 0x16, 0x03, 0x77, 0x11, 0x00, 0x7b,
1305 0x71, 0x81, 0x00, 0x11, 0x71, 0xe1, 0x00, 0x07, 1305 0x71, 0x81, 0x00, 0x11, 0x71, 0xe1, 0x00, 0x07,
1306 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x10, 0xe1, 1306 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x10, 0xe1,
1307 0x00, 0x09, 0xf9, 0x80, 0x15, 0x85, 0x77, 0x11, 1307 0x00, 0x09, 0xf9, 0x80, 0x15, 0x85, 0x77, 0x11,
1308 0x00, 0x7b, 0x71, 0x81, 0x00, 0x11, 0x10, 0xe1, 1308 0x00, 0x7b, 0x71, 0x81, 0x00, 0x11, 0x10, 0xe1,
1309 0x00, 0x09, 0xfb, 0x80, 0x15, 0x85, 0xf0, 0x00, 1309 0x00, 0x09, 0xfb, 0x80, 0x15, 0x85, 0xf0, 0x00,
1310 0x00, 0x08, 0x77, 0x11, 0x00, 0x7b, 0x71, 0x81, 1310 0x00, 0x08, 0x77, 0x11, 0x00, 0x7b, 0x71, 0x81,
1311 0x00, 0x11, 0x10, 0xe1, 0x00, 0x09, 0xfb, 0x80, 1311 0x00, 0x11, 0x10, 0xe1, 0x00, 0x09, 0xfb, 0x80,
1312 0x15, 0x85, 0xf0, 0x00, 0x00, 0x10, 0x77, 0x11, 1312 0x15, 0x85, 0xf0, 0x00, 0x00, 0x10, 0x77, 0x11,
1313 0x00, 0x7b, 0x71, 0x81, 0x00, 0x11, 0x10, 0xe1, 1313 0x00, 0x7b, 0x71, 0x81, 0x00, 0x11, 0x10, 0xe1,
1314 0x00, 0x09, 0xfb, 0x80, 0x15, 0x85, 0xf0, 0x00, 1314 0x00, 0x09, 0xfb, 0x80, 0x15, 0x85, 0xf0, 0x00,
1315 0x00, 0x18, 0x77, 0x11, 0x00, 0x7b, 0x71, 0x81, 1315 0x00, 0x18, 0x77, 0x11, 0x00, 0x7b, 0x71, 0x81,
1316 0x00, 0x11, 0x10, 0xe1, 0x00, 0x09, 0xfb, 0x80, 1316 0x00, 0x11, 0x10, 0xe1, 0x00, 0x09, 0xfb, 0x80,
1317 0x15, 0x85, 0xf0, 0x00, 0x00, 0x20, 0x77, 0x11, 1317 0x15, 0x85, 0xf0, 0x00, 0x00, 0x20, 0x77, 0x11,
1318 0x00, 0x7b, 0x71, 0x81, 0x00, 0x11, 0x10, 0xe1, 1318 0x00, 0x7b, 0x71, 0x81, 0x00, 0x11, 0x10, 0xe1,
1319 0x00, 0x09, 0xfb, 0x80, 0x15, 0x85, 0xf0, 0x00, 1319 0x00, 0x09, 0xfb, 0x80, 0x15, 0x85, 0xf0, 0x00,
1320 0x00, 0x28, 0xf9, 0x80, 0x16, 0x9a, 0xee, 0x01, 1320 0x00, 0x28, 0xf9, 0x80, 0x16, 0x9a, 0xee, 0x01,
1321 0x8a, 0x11, 0xf4, 0xe4, 0x4a, 0x11, 0xee, 0xff, 1321 0x8a, 0x11, 0xf4, 0xe4, 0x4a, 0x11, 0xee, 0xff,
1322 0xfb, 0x80, 0x16, 0xa2, 0x88, 0x11, 0xf4, 0x95, 1322 0xfb, 0x80, 0x16, 0xa2, 0x88, 0x11, 0xf4, 0x95,
1323 0x77, 0x10, 0xff, 0xff, 0xf4, 0xa9, 0xf8, 0x30, 1323 0x77, 0x10, 0xff, 0xff, 0xf4, 0xa9, 0xf8, 0x30,
1324 0x16, 0x41, 0x77, 0x11, 0x00, 0x55, 0x76, 0x81, 1324 0x16, 0x41, 0x77, 0x11, 0x00, 0x55, 0x76, 0x81,
1325 0x00, 0x1e, 0x77, 0x11, 0x00, 0x56, 0x76, 0x81, 1325 0x00, 0x1e, 0x77, 0x11, 0x00, 0x56, 0x76, 0x81,
1326 0x00, 0x00, 0x77, 0x11, 0x00, 0x56, 0x76, 0x81, 1326 0x00, 0x00, 0x77, 0x11, 0x00, 0x56, 0x76, 0x81,
1327 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, 1328 0x00, 0x00, 0x77, 0x11, 0x00, 0x56, 0x76, 0x81,
1329 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, 1330 0x00, 0x00, 0x77, 0x11, 0x00, 0x56, 0x76, 0x81,
1331 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, 1332 0x00, 0x00, 0x77, 0x11, 0x00, 0x56, 0x76, 0x81,
1333 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, 1334 0x00, 0x00, 0x77, 0x11, 0x00, 0x56, 0xf2, 0x73,
1335 0x16, 0x4e, 0x76, 0x81, 0x00, 0x00, 0x77, 0x11, 1335 0x16, 0x4e, 0x76, 0x81, 0x00, 0x00, 0x77, 0x11,
1336 0x00, 0x7b, 0x71, 0x81, 0x00, 0x11, 0x71, 0xe1, 1336 0x00, 0x7b, 0x71, 0x81, 0x00, 0x11, 0x71, 0xe1,
1337 0x00, 0x07, 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 1337 0x00, 0x07, 0x00, 0x12, 0x76, 0x82, 0x00, 0x00,
1338 0x10, 0xe1, 0x00, 0x39, 0xf9, 0x80, 0x16, 0x08, 1338 0x10, 0xe1, 0x00, 0x39, 0xf9, 0x80, 0x16, 0x08,
1339 0xf9, 0x80, 0x16, 0x9a, 0xee, 0x01, 0x8a, 0x11, 1339 0xf9, 0x80, 0x16, 0x9a, 0xee, 0x01, 0x8a, 0x11,
1340 0xf4, 0xe4, 0x4a, 0x11, 0x77, 0x11, 0x00, 0x7b, 1340 0xf4, 0xe4, 0x4a, 0x11, 0x77, 0x11, 0x00, 0x7b,
1341 0x10, 0x81, 0xf0, 0x00, 0x00, 0x04, 0x88, 0x11, 1341 0x10, 0x81, 0xf0, 0x00, 0x00, 0x04, 0x88, 0x11,
1342 0xf4, 0x95, 0xf4, 0x95, 0x10, 0x81, 0xfa, 0x44, 1342 0xf4, 0x95, 0xf4, 0x95, 0x10, 0x81, 0xfa, 0x44,
1343 0x16, 0x63, 0xf4, 0x95, 0xee, 0xff, 0x76, 0x81, 1343 0x16, 0x63, 0xf4, 0x95, 0xee, 0xff, 0x76, 0x81,
1344 0x00, 0x01, 0xee, 0x01, 0x8a, 0x11, 0xf4, 0xe4, 1344 0x00, 0x01, 0xee, 0x01, 0x8a, 0x11, 0xf4, 0xe4,
1345 0xf0, 0x10, 0x00, 0x10, 0x4a, 0x11, 0x32, 0xf8, 1345 0xf0, 0x10, 0x00, 0x10, 0x4a, 0x11, 0x32, 0xf8,
1346 0x00, 0x08, 0xee, 0xff, 0x77, 0x11, 0x00, 0x01, 1346 0x00, 0x08, 0xee, 0xff, 0x77, 0x11, 0x00, 0x01,
1347 0xe8, 0x01, 0xee, 0x01, 0xf4, 0x82, 0x1a, 0x81, 1347 0xe8, 0x01, 0xee, 0x01, 0xf4, 0x82, 0x1a, 0x81,
1348 0x80, 0x81, 0x8a, 0x11, 0xf4, 0x95, 0xf4, 0xe4, 1348 0x80, 0x81, 0x8a, 0x11, 0xf4, 0x95, 0xf4, 0xe4,
1349 0xf0, 0x10, 0x00, 0x10, 0x4a, 0x11, 0x32, 0xf8, 1349 0xf0, 0x10, 0x00, 0x10, 0x4a, 0x11, 0x32, 0xf8,
1350 0x00, 0x08, 0xee, 0xff, 0xe8, 0x01, 0x77, 0x11, 1350 0x00, 0x08, 0xee, 0xff, 0xe8, 0x01, 0x77, 0x11,
1351 0x00, 0x00, 0xf4, 0x82, 0xee, 0x01, 0xf4, 0x93, 1351 0x00, 0x00, 0xf4, 0x82, 0xee, 0x01, 0xf4, 0x93,
1352 0x18, 0x81, 0x80, 0x81, 0x8a, 0x11, 0xf4, 0x95, 1352 0x18, 0x81, 0x80, 0x81, 0x8a, 0x11, 0xf4, 0x95,
1353 0xf4, 0xe4, 0x4a, 0x11, 0xf0, 0x10, 0x00, 0x10, 1353 0xf4, 0xe4, 0x4a, 0x11, 0xf0, 0x10, 0x00, 0x10,
1354 0x77, 0x11, 0x00, 0x00, 0x32, 0xf8, 0x00, 0x08, 1354 0x77, 0x11, 0x00, 0x00, 0x32, 0xf8, 0x00, 0x08,
1355 0xee, 0xff, 0x11, 0x81, 0xe8, 0x01, 0xee, 0x01, 1355 0xee, 0xff, 0x11, 0x81, 0xe8, 0x01, 0xee, 0x01,
1356 0x77, 0x11, 0x00, 0x00, 0xf4, 0x82, 0xf2, 0xa0, 1356 0x77, 0x11, 0x00, 0x00, 0xf4, 0x82, 0xf2, 0xa0,
1357 0x80, 0x81, 0x8a, 0x11, 0xf4, 0x95, 0xf4, 0xe4, 1357 0x80, 0x81, 0x8a, 0x11, 0xf4, 0x95, 0xf4, 0xe4,
1358 0xf2, 0x73, 0x16, 0x9e, 0xf6, 0xbb, 0xf4, 0x95, 1358 0xf2, 0x73, 0x16, 0x9e, 0xf6, 0xbb, 0xf4, 0x95,
1359 0xf4, 0x95, 0xf4, 0x95, 0xf4, 0x95, 0xf4, 0xe4, 1359 0xf4, 0x95, 0xf4, 0x95, 0xf4, 0x95, 0xf4, 0xe4,
1360 0xf2, 0x73, 0x16, 0xa6, 0xf7, 0xbb, 0xf4, 0x95, 1360 0xf2, 0x73, 0x16, 0xa6, 0xf7, 0xbb, 0xf4, 0x95,
1361 0xf4, 0x95, 0xf4, 0x95, 0xf4, 0x95, 0xf4, 0xe4, 1361 0xf4, 0x95, 0xf4, 0x95, 0xf4, 0x95, 0xf4, 0xe4,
1362 0x4a, 0x11, 0x4a, 0x16, 0xf4, 0x95, 0x71, 0x04, 1362 0x4a, 0x11, 0x4a, 0x16, 0xf4, 0x95, 0x71, 0x04,
1363 0x00, 0x16, 0xfb, 0x80, 0x16, 0xa2, 0x88, 0x11, 1363 0x00, 0x16, 0xfb, 0x80, 0x16, 0xa2, 0x88, 0x11,
1364 0xf4, 0x95, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1364 0xf4, 0x95, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12,
1365 0x76, 0x82, 0x00, 0x0e, 0x10, 0xe6, 0x00, 0x0e, 1365 0x76, 0x82, 0x00, 0x0e, 0x10, 0xe6, 0x00, 0x0e,
1366 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x80, 0x82, 1366 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x80, 0x82,
1367 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 1367 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 0x76, 0x82,
1368 0x00, 0x0d, 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 1368 0x00, 0x0d, 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12,
1369 0x10, 0xe6, 0x00, 0x0d, 0x80, 0x82, 0x71, 0xe1, 1369 0x10, 0xe6, 0x00, 0x0d, 0x80, 0x82, 0x71, 0xe1,
1370 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x0c, 1370 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x0c,
1371 0x10, 0xe6, 0x00, 0x0c, 0x71, 0xe1, 0x00, 0x06, 1371 0x10, 0xe6, 0x00, 0x0c, 0x71, 0xe1, 0x00, 0x06,
1372 0x00, 0x12, 0x80, 0x82, 0x71, 0xe1, 0x00, 0x05, 1372 0x00, 0x12, 0x80, 0x82, 0x71, 0xe1, 0x00, 0x05,
1373 0x00, 0x12, 0x76, 0x82, 0x00, 0x0b, 0x10, 0xe6, 1373 0x00, 0x12, 0x76, 0x82, 0x00, 0x0b, 0x10, 0xe6,
1374 0x00, 0x0b, 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 1374 0x00, 0x0b, 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12,
1375 0x80, 0x82, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1375 0x80, 0x82, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12,
1376 0x76, 0x82, 0x00, 0x0a, 0x71, 0xe1, 0x00, 0x06, 1376 0x76, 0x82, 0x00, 0x0a, 0x71, 0xe1, 0x00, 0x06,
1377 0x00, 0x12, 0x10, 0xe6, 0x00, 0x0a, 0x80, 0x82, 1377 0x00, 0x12, 0x10, 0xe6, 0x00, 0x0a, 0x80, 0x82,
1378 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 1378 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 0x76, 0x82,
1379 0x00, 0x09, 0x10, 0xe6, 0x00, 0x09, 0x71, 0xe1, 1379 0x00, 0x09, 0x10, 0xe6, 0x00, 0x09, 0x71, 0xe1,
1380 0x00, 0x06, 0x00, 0x12, 0x80, 0x82, 0x71, 0xe1, 1380 0x00, 0x06, 0x00, 0x12, 0x80, 0x82, 0x71, 0xe1,
1381 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x08, 1381 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x08,
1382 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x10, 0xe6, 1382 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x10, 0xe6,
1383 0x00, 0x08, 0x80, 0x82, 0x71, 0xe1, 0x00, 0x05, 1383 0x00, 0x08, 0x80, 0x82, 0x71, 0xe1, 0x00, 0x05,
1384 0x00, 0x12, 0x76, 0x82, 0x00, 0x07, 0x10, 0xe6, 1384 0x00, 0x12, 0x76, 0x82, 0x00, 0x07, 0x10, 0xe6,
1385 0x00, 0x07, 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 1385 0x00, 0x07, 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12,
1386 0x80, 0x82, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1386 0x80, 0x82, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12,
1387 0x76, 0x82, 0x00, 0x06, 0x71, 0xe1, 0x00, 0x06, 1387 0x76, 0x82, 0x00, 0x06, 0x71, 0xe1, 0x00, 0x06,
1388 0x00, 0x12, 0x10, 0xe6, 0x00, 0x06, 0x80, 0x82, 1388 0x00, 0x12, 0x10, 0xe6, 0x00, 0x06, 0x80, 0x82,
1389 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 1389 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 0x76, 0x82,
1390 0x00, 0x05, 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 1390 0x00, 0x05, 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12,
1391 0x10, 0xe6, 0x00, 0x05, 0x80, 0x82, 0x71, 0xe1, 1391 0x10, 0xe6, 0x00, 0x05, 0x80, 0x82, 0x71, 0xe1,
1392 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x04, 1392 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x04,
1393 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x10, 0xe6, 1393 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x10, 0xe6,
1394 0x00, 0x04, 0x80, 0x82, 0x71, 0xe1, 0x00, 0x05, 1394 0x00, 0x04, 0x80, 0x82, 0x71, 0xe1, 0x00, 0x05,
1395 0x00, 0x12, 0x76, 0x82, 0x00, 0x03, 0x71, 0xe1, 1395 0x00, 0x12, 0x76, 0x82, 0x00, 0x03, 0x71, 0xe1,
1396 0x00, 0x06, 0x00, 0x12, 0x10, 0xe6, 0x00, 0x03, 1396 0x00, 0x06, 0x00, 0x12, 0x10, 0xe6, 0x00, 0x03,
1397 0x80, 0x82, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1397 0x80, 0x82, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12,
1398 0x76, 0x82, 0x00, 0x02, 0x10, 0xe6, 0x00, 0x02, 1398 0x76, 0x82, 0x00, 0x02, 0x10, 0xe6, 0x00, 0x02,
1399 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x80, 0x82, 1399 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x80, 0x82,
1400 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 1400 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 0x76, 0x82,
1401 0x00, 0x01, 0x10, 0xe6, 0x00, 0x01, 0x71, 0xe1, 1401 0x00, 0x01, 0x10, 0xe6, 0x00, 0x01, 0x71, 0xe1,
1402 0x00, 0x06, 0x00, 0x12, 0x80, 0x82, 0x71, 0xe1, 1402 0x00, 0x06, 0x00, 0x12, 0x80, 0x82, 0x71, 0xe1,
1403 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 1403 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x00,
1404 0x71, 0xe1, 0x00, 0x06, 0x00, 0x13, 0xe7, 0x62, 1404 0x71, 0xe1, 0x00, 0x06, 0x00, 0x13, 0xe7, 0x62,
1405 0xe5, 0x01, 0xf9, 0x80, 0x16, 0x9a, 0x8a, 0x16, 1405 0xe5, 0x01, 0xf9, 0x80, 0x16, 0x9a, 0x8a, 0x16,
1406 0x8a, 0x11, 0xf4, 0xe4, 0x4a, 0x11, 0x88, 0x11, 1406 0x8a, 0x11, 0xf4, 0xe4, 0x4a, 0x11, 0x88, 0x11,
1407 0xf4, 0x95, 0xf4, 0x95, 0x71, 0xe1, 0x00, 0x05, 1407 0xf4, 0x95, 0xf4, 0x95, 0x71, 0xe1, 0x00, 0x05,
1408 0x00, 0x12, 0xee, 0xff, 0x76, 0x82, 0x00, 0x00, 1408 0x00, 0x12, 0xee, 0xff, 0x76, 0x82, 0x00, 0x00,
1409 0xee, 0x01, 0x71, 0xe1, 0x00, 0x06, 0x00, 0x11, 1409 0xee, 0x01, 0x71, 0xe1, 0x00, 0x06, 0x00, 0x11,
1410 0x69, 0x81, 0x00, 0x01, 0x8a, 0x11, 0xf4, 0x95, 1410 0x69, 0x81, 0x00, 0x01, 0x8a, 0x11, 0xf4, 0x95,
1411 0xf4, 0xe4, 0x4a, 0x11, 0x88, 0x11, 0xf4, 0x95, 1411 0xf4, 0xe4, 0x4a, 0x11, 0x88, 0x11, 0xf4, 0x95,
1412 0xf4, 0x95, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1412 0xf4, 0x95, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12,
1413 0xee, 0xff, 0x76, 0x82, 0x00, 0x01, 0xee, 0x01, 1413 0xee, 0xff, 0x76, 0x82, 0x00, 0x01, 0xee, 0x01,
1414 0x71, 0xe1, 0x00, 0x06, 0x00, 0x11, 0x69, 0x81, 1414 0x71, 0xe1, 0x00, 0x06, 0x00, 0x11, 0x69, 0x81,
1415 0x00, 0x01, 0x8a, 0x11, 0xf4, 0x95, 0xf4, 0xe4, 1415 0x00, 0x01, 0x8a, 0x11, 0xf4, 0x95, 0xf4, 0xe4,
1416 0x4a, 0x11, 0x77, 0x11, 0x00, 0x7b, 0x10, 0x81, 1416 0x4a, 0x11, 0x77, 0x11, 0x00, 0x7b, 0x10, 0x81,
1417 0xf0, 0x00, 0x00, 0x94, 0x88, 0x11, 0xf4, 0x95, 1417 0xf0, 0x00, 0x00, 0x94, 0x88, 0x11, 0xf4, 0x95,
1418 0xf4, 0x95, 0x10, 0x81, 0xfa, 0x44, 0x17, 0x9c, 1418 0xf4, 0x95, 0x10, 0x81, 0xfa, 0x44, 0x17, 0x9c,
1419 0xf4, 0x95, 0xee, 0xff, 0xf9, 0x80, 0x16, 0x53, 1419 0xf4, 0x95, 0xee, 0xff, 0xf9, 0x80, 0x16, 0x53,
1420 0x77, 0x11, 0x00, 0x7b, 0x10, 0x81, 0xf0, 0x00, 1420 0x77, 0x11, 0x00, 0x7b, 0x10, 0x81, 0xf0, 0x00,
1421 0x00, 0x94, 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, 1421 0x00, 0x94, 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95,
1422 0x76, 0x81, 0x00, 0x01, 0xee, 0x01, 0x76, 0xe1, 1422 0x76, 0x81, 0x00, 0x01, 0xee, 0x01, 0x76, 0xe1,
1423 0x00, 0x01, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x02, 1423 0x00, 0x01, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x02,
1424 0x00, 0x21, 0x76, 0xe1, 0x00, 0x03, 0x00, 0x20, 1424 0x00, 0x21, 0x76, 0xe1, 0x00, 0x03, 0x00, 0x20,
1425 0x76, 0xe1, 0x00, 0x04, 0x00, 0x23, 0x76, 0xe1, 1425 0x76, 0xe1, 0x00, 0x04, 0x00, 0x23, 0x76, 0xe1,
1426 0x00, 0x05, 0x00, 0x22, 0x76, 0xe1, 0x00, 0x06, 1426 0x00, 0x05, 0x00, 0x22, 0x76, 0xe1, 0x00, 0x06,
1427 0x00, 0x38, 0x76, 0xe1, 0x00, 0x07, 0x00, 0x39, 1427 0x00, 0x38, 0x76, 0xe1, 0x00, 0x07, 0x00, 0x39,
1428 0x76, 0xe1, 0x00, 0x08, 0x00, 0x15, 0x76, 0xe1, 1428 0x76, 0xe1, 0x00, 0x08, 0x00, 0x15, 0x76, 0xe1,
1429 0x00, 0x09, 0x00, 0x14, 0x76, 0xe1, 0x00, 0x0a, 1429 0x00, 0x09, 0x00, 0x14, 0x76, 0xe1, 0x00, 0x0a,
1430 0x00, 0x00, 0x76, 0xe1, 0x00, 0x0b, 0x00, 0x41, 1430 0x00, 0x00, 0x76, 0xe1, 0x00, 0x0b, 0x00, 0x41,
1431 0x76, 0xe1, 0x00, 0x0c, 0x00, 0x40, 0x76, 0xe1, 1431 0x76, 0xe1, 0x00, 0x0c, 0x00, 0x40, 0x76, 0xe1,
1432 0x00, 0x0d, 0x00, 0x43, 0x76, 0xe1, 0x00, 0x0e, 1432 0x00, 0x0d, 0x00, 0x43, 0x76, 0xe1, 0x00, 0x0e,
1433 0x00, 0x42, 0x76, 0xe1, 0x00, 0x0f, 0x00, 0x48, 1433 0x00, 0x42, 0x76, 0xe1, 0x00, 0x0f, 0x00, 0x48,
1434 0x76, 0xe1, 0x00, 0x10, 0x00, 0x49, 0x76, 0xe1, 1434 0x76, 0xe1, 0x00, 0x10, 0x00, 0x49, 0x76, 0xe1,
1435 0x00, 0x11, 0x00, 0x1b, 0x76, 0xe1, 0x00, 0x12, 1435 0x00, 0x11, 0x00, 0x1b, 0x76, 0xe1, 0x00, 0x12,
1436 0x00, 0x1a, 0x8a, 0x11, 0xf4, 0x95, 0xf4, 0xe4, 1436 0x00, 0x1a, 0x8a, 0x11, 0xf4, 0x95, 0xf4, 0xe4,
1437 0x4a, 0x11, 0xee, 0xfd, 0x88, 0x11, 0x56, 0x06, 1437 0x4a, 0x11, 0xee, 0xfd, 0x88, 0x11, 0x56, 0x06,
1438 0x4e, 0x00, 0xf9, 0x80, 0x16, 0xa2, 0x77, 0x12, 1438 0x4e, 0x00, 0xf9, 0x80, 0x16, 0xa2, 0x77, 0x12,
1439 0x00, 0x7b, 0x77, 0x0e, 0x00, 0x09, 0x10, 0x82, 1439 0x00, 0x7b, 0x77, 0x0e, 0x00, 0x09, 0x10, 0x82,
1440 0x28, 0xf8, 0x00, 0x11, 0xf0, 0x00, 0x00, 0x95, 1440 0x28, 0xf8, 0x00, 0x11, 0xf0, 0x00, 0x00, 0x95,
1441 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x10, 0x81, 1441 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x10, 0x81,
1442 0xf8, 0x45, 0x17, 0xf0, 0xf2, 0x73, 0x17, 0xfd, 1442 0xf8, 0x45, 0x17, 0xf0, 0xf2, 0x73, 0x17, 0xfd,
1443 0x77, 0x11, 0xff, 0xff, 0x76, 0x81, 0x00, 0x01, 1443 0x77, 0x11, 0xff, 0xff, 0x76, 0x81, 0x00, 0x01,
1444 0xe9, 0x01, 0x56, 0x00, 0xf1, 0x80, 0x10, 0xf8, 1444 0xe9, 0x01, 0x56, 0x00, 0xf1, 0x80, 0x10, 0xf8,
1445 0x00, 0x0b, 0xf8, 0x45, 0x17, 0xfd, 0xfb, 0x80, 1445 0x00, 0x0b, 0xf8, 0x45, 0x17, 0xfd, 0xfb, 0x80,
1446 0x18, 0x10, 0xf4, 0x95, 0x48, 0x11, 0xf9, 0x80, 1446 0x18, 0x10, 0xf4, 0x95, 0x48, 0x11, 0xf9, 0x80,
1447 0x16, 0x9a, 0xee, 0x03, 0x48, 0x11, 0x8a, 0x11, 1447 0x16, 0x9a, 0xee, 0x03, 0x48, 0x11, 0x8a, 0x11,
1448 0xf4, 0x95, 0xf4, 0xe4, 0x4a, 0x11, 0x88, 0x11, 1448 0xf4, 0x95, 0xf4, 0xe4, 0x4a, 0x11, 0x88, 0x11,
1449 0xf4, 0x95, 0xee, 0xff, 0x71, 0xe1, 0x00, 0x01, 1449 0xf4, 0x95, 0xee, 0xff, 0x71, 0xe1, 0x00, 0x01,
1450 0x00, 0x11, 0xee, 0x01, 0x10, 0x81, 0x8a, 0x11, 1450 0x00, 0x11, 0xee, 0x01, 0x10, 0x81, 0x8a, 0x11,
1451 0xf4, 0x95, 0xf4, 0xe4, 0x4a, 0x11, 0xee, 0xff, 1451 0xf4, 0x95, 0xf4, 0xe4, 0x4a, 0x11, 0xee, 0xff,
1452 0xfb, 0x80, 0x16, 0xa2, 0x88, 0x11, 0xf4, 0x95, 1452 0xfb, 0x80, 0x16, 0xa2, 0x88, 0x11, 0xf4, 0x95,
1453 0x77, 0x10, 0xff, 0xff, 0xf4, 0xa9, 0xf8, 0x30, 1453 0x77, 0x10, 0xff, 0xff, 0xf4, 0xa9, 0xf8, 0x30,
1454 0x18, 0xc3, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1454 0x18, 0xc3, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12,
1455 0x76, 0x82, 0x00, 0x00, 0x71, 0xe1, 0x00, 0x06, 1455 0x76, 0x82, 0x00, 0x00, 0x71, 0xe1, 0x00, 0x06,
1456 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x71, 0xe1, 1456 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x71, 0xe1,
1457 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x01, 1457 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x01,
1458 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x76, 0x82, 1458 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x76, 0x82,
1459 0x00, 0x00, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1459 0x00, 0x00, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12,
1460 0x76, 0x82, 0x00, 0x02, 0x71, 0xe1, 0x00, 0x06, 1460 0x76, 0x82, 0x00, 0x02, 0x71, 0xe1, 0x00, 0x06,
1461 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x71, 0xe1, 1461 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x71, 0xe1,
1462 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x03, 1462 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x03,
1463 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x76, 0x82, 1463 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x76, 0x82,
1464 0x00, 0x00, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1464 0x00, 0x00, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12,
1465 0x76, 0x82, 0x00, 0x04, 0x71, 0xe1, 0x00, 0x06, 1465 0x76, 0x82, 0x00, 0x04, 0x71, 0xe1, 0x00, 0x06,
1466 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x71, 0xe1, 1466 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x71, 0xe1,
1467 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x05, 1467 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x05,
1468 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x76, 0x82, 1468 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x76, 0x82,
1469 0x00, 0x00, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1469 0x00, 0x00, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12,
1470 0x76, 0x82, 0x00, 0x06, 0x71, 0xe1, 0x00, 0x06, 1470 0x76, 0x82, 0x00, 0x06, 0x71, 0xe1, 0x00, 0x06,
1471 0x00, 0x12, 0x76, 0x82, 0x00, 0x01, 0x71, 0xe1, 1471 0x00, 0x12, 0x76, 0x82, 0x00, 0x01, 0x71, 0xe1,
1472 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x07, 1472 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x07,
1473 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x76, 0x82, 1473 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x76, 0x82,
1474 0x20, 0x00, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1474 0x20, 0x00, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12,
1475 0x76, 0x82, 0x00, 0x08, 0x71, 0xe1, 0x00, 0x06, 1475 0x76, 0x82, 0x00, 0x08, 0x71, 0xe1, 0x00, 0x06,
1476 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x71, 0xe1, 1476 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x71, 0xe1,
1477 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x09, 1477 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x09,
1478 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x76, 0x82, 1478 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x76, 0x82,
1479 0x00, 0x00, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1479 0x00, 0x00, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12,
1480 0x76, 0x82, 0x00, 0x0a, 0x71, 0xe1, 0x00, 0x06, 1480 0x76, 0x82, 0x00, 0x0a, 0x71, 0xe1, 0x00, 0x06,
1481 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x71, 0xe1, 1481 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x71, 0xe1,
1482 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x0b, 1482 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x0b,
1483 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x76, 0x82, 1483 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x76, 0x82,
1484 0x00, 0x00, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1484 0x00, 0x00, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12,
1485 0x76, 0x82, 0x00, 0x0c, 0x71, 0xe1, 0x00, 0x06, 1485 0x76, 0x82, 0x00, 0x0c, 0x71, 0xe1, 0x00, 0x06,
1486 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x71, 0xe1, 1486 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x71, 0xe1,
1487 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x0d, 1487 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x0d,
1488 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x76, 0x82, 1488 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x76, 0x82,
1489 0x00, 0x00, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 1489 0x00, 0x00, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12,
1490 0x76, 0x82, 0x00, 0x0e, 0x71, 0xe1, 0x00, 0x06, 1490 0x76, 0x82, 0x00, 0x0e, 0x71, 0xe1, 0x00, 0x06,
1491 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x10, 0xe1, 1491 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x10, 0xe1,
1492 0x00, 0x07, 0xf9, 0x80, 0x16, 0x76, 0x10, 0xe1, 1492 0x00, 0x07, 0xf9, 0x80, 0x16, 0x76, 0x10, 0xe1,
1493 0x00, 0x08, 0xf9, 0x80, 0x16, 0x76, 0x10, 0xe1, 1493 0x00, 0x08, 0xf9, 0x80, 0x16, 0x76, 0x10, 0xe1,
1494 0x00, 0x07, 0xf9, 0x80, 0x16, 0x66, 0x10, 0xe1, 1494 0x00, 0x07, 0xf9, 0x80, 0x16, 0x66, 0x10, 0xe1,
1495 0x00, 0x08, 0xf9, 0x80, 0x16, 0x66, 0xf0, 0x73, 1495 0x00, 0x08, 0xf9, 0x80, 0x16, 0x66, 0xf0, 0x73,
1496 0x18, 0xd1, 0x77, 0x11, 0x00, 0x7b, 0x10, 0x81, 1496 0x18, 0xd1, 0x77, 0x11, 0x00, 0x7b, 0x10, 0x81,
1497 0xfb, 0x80, 0x18, 0x10, 0xf0, 0x00, 0x00, 0x95, 1497 0xfb, 0x80, 0x18, 0x10, 0xf0, 0x00, 0x00, 0x95,
1498 0x77, 0x11, 0x00, 0x7b, 0x10, 0x81, 0xfb, 0x80, 1498 0x77, 0x11, 0x00, 0x7b, 0x10, 0x81, 0xfb, 0x80,
1499 0x18, 0x10, 0xf0, 0x00, 0x00, 0x9e, 0xf9, 0x80, 1499 0x18, 0x10, 0xf0, 0x00, 0x00, 0x9e, 0xf9, 0x80,
1500 0x16, 0x9a, 0xee, 0x01, 0x8a, 0x11, 0xf4, 0xe4, 1500 0x16, 0x9a, 0xee, 0x01, 0x8a, 0x11, 0xf4, 0xe4,
1501 0x4a, 0x11, 0x88, 0x11, 0xee, 0xff, 0xf4, 0x95, 1501 0x4a, 0x11, 0x88, 0x11, 0xee, 0xff, 0xf4, 0x95,
1502 0x10, 0x04, 0x71, 0xe1, 0x00, 0x03, 0x00, 0x11, 1502 0x10, 0x04, 0x71, 0xe1, 0x00, 0x03, 0x00, 0x11,
1503 0xee, 0x01, 0x80, 0x81, 0x8a, 0x11, 0xf4, 0x95, 1503 0xee, 0x01, 0x80, 0x81, 0x8a, 0x11, 0xf4, 0x95,
1504 0xf4, 0xe4, 0x4a, 0x11, 0x4a, 0x16, 0xf4, 0x95, 1504 0xf4, 0xe4, 0x4a, 0x11, 0x4a, 0x16, 0xf4, 0x95,
1505 0x71, 0x04, 0x00, 0x16, 0xfb, 0x80, 0x16, 0xa2, 1505 0x71, 0x04, 0x00, 0x16, 0xfb, 0x80, 0x16, 0xa2,
1506 0x88, 0x11, 0xf4, 0x95, 0x71, 0xe1, 0x00, 0x02, 1506 0x88, 0x11, 0xf4, 0x95, 0x71, 0xe1, 0x00, 0x02,
1507 0x00, 0x12, 0x76, 0x82, 0x00, 0x10, 0x10, 0xe6, 1507 0x00, 0x12, 0x76, 0x82, 0x00, 0x10, 0x10, 0xe6,
1508 0x00, 0x01, 0x71, 0xe1, 0x00, 0x03, 0x00, 0x12, 1508 0x00, 0x01, 0x71, 0xe1, 0x00, 0x03, 0x00, 0x12,
1509 0x80, 0x82, 0x71, 0xe1, 0x00, 0x04, 0x00, 0x12, 1509 0x80, 0x82, 0x71, 0xe1, 0x00, 0x04, 0x00, 0x12,
1510 0x10, 0xe6, 0x00, 0x02, 0x80, 0x82, 0xe7, 0x62, 1510 0x10, 0xe6, 0x00, 0x02, 0x80, 0x82, 0xe7, 0x62,
1511 0x71, 0xe1, 0x00, 0x02, 0x00, 0x13, 0xe5, 0x01, 1511 0x71, 0xe1, 0x00, 0x02, 0x00, 0x13, 0xe5, 0x01,
1512 0xf9, 0x80, 0x16, 0x9a, 0x8a, 0x16, 0x8a, 0x11, 1512 0xf9, 0x80, 0x16, 0x9a, 0x8a, 0x16, 0x8a, 0x11,
1513 0xf4, 0xe4, 0x4a, 0x11, 0x88, 0x11, 0xee, 0xff, 1513 0xf4, 0xe4, 0x4a, 0x11, 0x88, 0x11, 0xee, 0xff,
1514 0xee, 0x01, 0x10, 0xe1, 0x00, 0x01, 0x8a, 0x11, 1514 0xee, 0x01, 0x10, 0xe1, 0x00, 0x01, 0x8a, 0x11,
1515 0xf4, 0x95, 0xf4, 0xe4, 0x4a, 0x11, 0x77, 0x11, 1515 0xf4, 0x95, 0xf4, 0xe4, 0x4a, 0x11, 0x77, 0x11,
1516 0x00, 0x7b, 0x10, 0x81, 0xf0, 0x00, 0x00, 0xb3, 1516 0x00, 0x7b, 0x10, 0x81, 0xf0, 0x00, 0x00, 0xb3,
1517 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x10, 0x81, 1517 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x10, 0x81,
1518 0xfa, 0x44, 0x19, 0x2a, 0xf4, 0x95, 0xee, 0xff, 1518 0xfa, 0x44, 0x19, 0x2a, 0xf4, 0x95, 0xee, 0xff,
1519 0xf9, 0x80, 0x16, 0x53, 0x77, 0x11, 0x00, 0x7b, 1519 0xf9, 0x80, 0x16, 0x53, 0x77, 0x11, 0x00, 0x7b,
1520 0x10, 0x81, 0xf0, 0x00, 0x00, 0xb3, 0x88, 0x11, 1520 0x10, 0x81, 0xf0, 0x00, 0x00, 0xb3, 0x88, 0x11,
1521 0xf4, 0x95, 0xf4, 0x95, 0x76, 0x81, 0x00, 0x01, 1521 0xf4, 0x95, 0xf4, 0x95, 0x76, 0x81, 0x00, 0x01,
1522 0xee, 0x01, 0x76, 0xe1, 0x00, 0x01, 0x00, 0x00, 1522 0xee, 0x01, 0x76, 0xe1, 0x00, 0x01, 0x00, 0x00,
1523 0x76, 0xe1, 0x00, 0x02, 0x00, 0x13, 0x76, 0xe1, 1523 0x76, 0xe1, 0x00, 0x02, 0x00, 0x13, 0x76, 0xe1,
1524 0x00, 0x03, 0x00, 0x26, 0x76, 0xe1, 0x00, 0x04, 1524 0x00, 0x03, 0x00, 0x26, 0x76, 0xe1, 0x00, 0x04,
1525 0x00, 0x25, 0x76, 0xe1, 0x00, 0x05, 0x00, 0x24, 1525 0x00, 0x25, 0x76, 0xe1, 0x00, 0x05, 0x00, 0x24,
1526 0x76, 0xe1, 0x00, 0x06, 0x00, 0x00, 0x76, 0xe1, 1526 0x76, 0xe1, 0x00, 0x06, 0x00, 0x00, 0x76, 0xe1,
1527 0x00, 0x07, 0x00, 0x17, 0x76, 0xe1, 0x00, 0x08, 1527 0x00, 0x07, 0x00, 0x17, 0x76, 0xe1, 0x00, 0x08,
1528 0x00, 0x32, 0x76, 0xe1, 0x00, 0x09, 0x00, 0x31, 1528 0x00, 0x32, 0x76, 0xe1, 0x00, 0x09, 0x00, 0x31,
1529 0x76, 0xe1, 0x00, 0x0a, 0x00, 0x30, 0x8a, 0x11, 1529 0x76, 0xe1, 0x00, 0x0a, 0x00, 0x30, 0x8a, 0x11,
1530 0xf4, 0x95, 0xf4, 0xe4, 0x4a, 0x11, 0x4a, 0x16, 1530 0xf4, 0x95, 0xf4, 0xe4, 0x4a, 0x11, 0x4a, 0x16,
1531 0x4a, 0x17, 0xee, 0xff, 0xf4, 0x95, 0x71, 0x06, 1531 0x4a, 0x17, 0xee, 0xff, 0xf4, 0x95, 0x71, 0x06,
1532 0x00, 0x17, 0xfb, 0x80, 0x16, 0xa2, 0x88, 0x11, 1532 0x00, 0x17, 0xfb, 0x80, 0x16, 0xa2, 0x88, 0x11,
1533 0xf4, 0x95, 0xf7, 0xb8, 0x10, 0xf8, 0x00, 0x11, 1533 0xf4, 0x95, 0xf7, 0xb8, 0x10, 0xf8, 0x00, 0x11,
1534 0xf0, 0x10, 0xff, 0xff, 0xfa, 0x45, 0x19, 0x73, 1534 0xf0, 0x10, 0xff, 0xff, 0xfa, 0x45, 0x19, 0x73,
1535 0x77, 0x16, 0xff, 0xff, 0x77, 0x12, 0x00, 0x7b, 1535 0x77, 0x16, 0xff, 0xff, 0x77, 0x12, 0x00, 0x7b,
1536 0x77, 0x0e, 0x00, 0x05, 0x10, 0x82, 0x28, 0xf8, 1536 0x77, 0x0e, 0x00, 0x05, 0x10, 0x82, 0x28, 0xf8,
1537 0x00, 0x11, 0xf0, 0x00, 0x00, 0xb4, 0x88, 0x11, 1537 0x00, 0x11, 0xf0, 0x00, 0x00, 0xb4, 0x88, 0x11,
1538 0xf4, 0x95, 0xf4, 0x95, 0x10, 0x81, 0xf8, 0x44, 1538 0xf4, 0x95, 0xf4, 0x95, 0x10, 0x81, 0xf8, 0x44,
1539 0x19, 0x84, 0xf2, 0x73, 0x19, 0x84, 0xf4, 0x95, 1539 0x19, 0x84, 0xf2, 0x73, 0x19, 0x84, 0xf4, 0x95,
1540 0xe7, 0x16, 0x77, 0x11, 0x00, 0x7b, 0x10, 0x81, 1540 0xe7, 0x16, 0x77, 0x11, 0x00, 0x7b, 0x10, 0x81,
1541 0xf0, 0x00, 0x00, 0xb4, 0x88, 0x11, 0xf4, 0x95, 1541 0xf0, 0x00, 0x00, 0xb4, 0x88, 0x11, 0xf4, 0x95,
1542 0x77, 0x12, 0x00, 0x02, 0x10, 0x81, 0xf8, 0x45, 1542 0x77, 0x12, 0x00, 0x02, 0x10, 0x81, 0xf8, 0x45,
1543 0x19, 0x6f, 0x6e, 0xea, 0xff, 0xff, 0x19, 0x7c, 1543 0x19, 0x6f, 0x6e, 0xea, 0xff, 0xff, 0x19, 0x7c,
1544 0x6d, 0xe9, 0x00, 0x05, 0x61, 0xf8, 0x00, 0x17, 1544 0x6d, 0xe9, 0x00, 0x05, 0x61, 0xf8, 0x00, 0x17,
1545 0x00, 0x01, 0xfa, 0x20, 0x19, 0x8f, 0x76, 0x86, 1545 0x00, 0x01, 0xfa, 0x20, 0x19, 0x8f, 0x76, 0x86,
1546 0x00, 0x01, 0xfb, 0x80, 0x19, 0x97, 0xf4, 0x95, 1546 0x00, 0x01, 0xfb, 0x80, 0x19, 0x97, 0xf4, 0x95,
1547 0x48, 0x16, 0xf9, 0x80, 0x16, 0x9a, 0xee, 0x01, 1547 0x48, 0x16, 0xf9, 0x80, 0x16, 0x9a, 0xee, 0x01,
1548 0x8a, 0x17, 0x48, 0x16, 0x8a, 0x16, 0x8a, 0x11, 1548 0x8a, 0x17, 0x48, 0x16, 0x8a, 0x16, 0x8a, 0x11,
1549 0xf4, 0xe4, 0x4a, 0x11, 0xee, 0xff, 0xfb, 0x80, 1549 0xf4, 0xe4, 0x4a, 0x11, 0xee, 0xff, 0xfb, 0x80,
1550 0x16, 0xa2, 0x88, 0x11, 0xf4, 0x95, 0x77, 0x10, 1550 0x16, 0xa2, 0x88, 0x11, 0xf4, 0x95, 0x77, 0x10,
1551 0xff, 0xff, 0xf4, 0xa9, 0xf8, 0x30, 0x19, 0xcc, 1551 0xff, 0xff, 0xf4, 0xa9, 0xf8, 0x30, 0x19, 0xcc,
1552 0x71, 0xe1, 0x00, 0x02, 0x00, 0x12, 0x69, 0x82, 1552 0x71, 0xe1, 0x00, 0x02, 0x00, 0x12, 0x69, 0x82,
1553 0x00, 0x10, 0x71, 0xe1, 0x00, 0x02, 0x00, 0x12, 1553 0x00, 0x10, 0x71, 0xe1, 0x00, 0x02, 0x00, 0x12,
1554 0x68, 0x82, 0xf7, 0xff, 0x71, 0xe1, 0x00, 0x02, 1554 0x68, 0x82, 0xf7, 0xff, 0x71, 0xe1, 0x00, 0x02,
1555 0x00, 0x12, 0x68, 0x82, 0xfb, 0xff, 0x71, 0xe1, 1555 0x00, 0x12, 0x68, 0x82, 0xfb, 0xff, 0x71, 0xe1,
1556 0x00, 0x02, 0x00, 0x12, 0x68, 0x82, 0xff, 0xf0, 1556 0x00, 0x02, 0x00, 0x12, 0x68, 0x82, 0xff, 0xf0,
1557 0x71, 0xe1, 0x00, 0x03, 0x00, 0x12, 0x76, 0x82, 1557 0x71, 0xe1, 0x00, 0x03, 0x00, 0x12, 0x76, 0x82,
1558 0xff, 0xff, 0x71, 0xe1, 0x00, 0x04, 0x00, 0x12, 1558 0xff, 0xff, 0x71, 0xe1, 0x00, 0x04, 0x00, 0x12,
1559 0x76, 0x82, 0xff, 0xff, 0x71, 0xe1, 0x00, 0x02, 1559 0x76, 0x82, 0xff, 0xff, 0x71, 0xe1, 0x00, 0x02,
1560 0x00, 0x12, 0x69, 0x82, 0x00, 0x20, 0x71, 0xe1, 1560 0x00, 0x12, 0x69, 0x82, 0x00, 0x20, 0x71, 0xe1,
1561 0x00, 0x02, 0x00, 0x11, 0xf2, 0x73, 0x19, 0xda, 1561 0x00, 0x02, 0x00, 0x11, 0xf2, 0x73, 0x19, 0xda,
1562 0x68, 0x81, 0xff, 0xef, 0x77, 0x11, 0x00, 0x7b, 1562 0x68, 0x81, 0xff, 0xef, 0x77, 0x11, 0x00, 0x7b,
1563 0x10, 0x81, 0xfb, 0x80, 0x19, 0x97, 0xf0, 0x00, 1563 0x10, 0x81, 0xfb, 0x80, 0x19, 0x97, 0xf0, 0x00,
1564 0x00, 0xb4, 0x77, 0x11, 0x00, 0x7b, 0x10, 0x81, 1564 0x00, 0xb4, 0x77, 0x11, 0x00, 0x7b, 0x10, 0x81,
1565 0xfb, 0x80, 0x19, 0x97, 0xf0, 0x00, 0x00, 0xb9, 1565 0xfb, 0x80, 0x19, 0x97, 0xf0, 0x00, 0x00, 0xb9,
1566 0xf9, 0x80, 0x16, 0x9a, 0xee, 0x01, 0x8a, 0x11, 1566 0xf9, 0x80, 0x16, 0x9a, 0xee, 0x01, 0x8a, 0x11,
1567 0xf4, 0xe4, 0x00, 0xa4, 0x00, 0x00, 0x19, 0xdf, 1567 0xf4, 0xe4, 0x00, 0xa4, 0x00, 0x00, 0x19, 0xdf,
1568 0x00, 0x01, 0x2a, 0xe6, 0x00, 0x00, 0x00, 0x01, 1568 0x00, 0x01, 0x2a, 0xe6, 0x00, 0x00, 0x00, 0x01,
1569 0x2a, 0xe7, 0x00, 0x00, 0x00, 0x03, 0x2a, 0x12, 1569 0x2a, 0xe7, 0x00, 0x00, 0x00, 0x03, 0x2a, 0x12,
1570 0x0c, 0x01, 0xc3, 0x4f, 0x00, 0x00, 0x00, 0x01, 1570 0x0c, 0x01, 0xc3, 0x4f, 0x00, 0x00, 0x00, 0x01,
1571 0x2a, 0x15, 0x00, 0x00, 0x00, 0x02, 0x2a, 0x16, 1571 0x2a, 0x15, 0x00, 0x00, 0x00, 0x02, 0x2a, 0x16,
1572 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x2a, 0x5d, 1572 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x2a, 0x5d,
1573 0x00, 0x43, 0x00, 0x6f, 0x00, 0x70, 0x00, 0x79, 1573 0x00, 0x43, 0x00, 0x6f, 0x00, 0x70, 0x00, 0x79,
1574 0x00, 0x72, 0x00, 0x69, 0x00, 0x67, 0x00, 0x68, 1574 0x00, 0x72, 0x00, 0x69, 0x00, 0x67, 0x00, 0x68,
1575 0x00, 0x74, 0x00, 0x20, 0x00, 0x54, 0x00, 0x65, 1575 0x00, 0x74, 0x00, 0x20, 0x00, 0x54, 0x00, 0x65,
1576 0x00, 0x63, 0x00, 0x68, 0x00, 0x6e, 0x00, 0x6f, 1576 0x00, 0x63, 0x00, 0x68, 0x00, 0x6e, 0x00, 0x6f,
1577 0x00, 0x54, 0x00, 0x72, 0x00, 0x65, 0x00, 0x6e, 1577 0x00, 0x54, 0x00, 0x72, 0x00, 0x65, 0x00, 0x6e,
1578 0x00, 0x64, 0x00, 0x20, 0x00, 0x41, 0x00, 0x47, 1578 0x00, 0x64, 0x00, 0x20, 0x00, 0x41, 0x00, 0x47,
1579 0x00, 0x00, 0x00, 0x04, 0x2a, 0x76, 0x00, 0x30, 1579 0x00, 0x00, 0x00, 0x04, 0x2a, 0x76, 0x00, 0x30,
1580 0x00, 0x2e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x0c, 1580 0x00, 0x2e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x0c,
1581 0x2a, 0x7a, 0x00, 0x46, 0x00, 0x65, 0x00, 0x62, 1581 0x2a, 0x7a, 0x00, 0x46, 0x00, 0x65, 0x00, 0x62,
1582 0x00, 0x20, 0x00, 0x32, 0x00, 0x37, 0x00, 0x20, 1582 0x00, 0x20, 0x00, 0x32, 0x00, 0x37, 0x00, 0x20,
1583 0x00, 0x32, 0x00, 0x30, 0x00, 0x30, 0x00, 0x31, 1583 0x00, 0x32, 0x00, 0x30, 0x00, 0x30, 0x00, 0x31,
1584 0x00, 0x00, 0x00, 0x09, 0x2a, 0x86, 0x00, 0x31, 1584 0x00, 0x00, 0x00, 0x09, 0x2a, 0x86, 0x00, 0x31,
1585 0x00, 0x34, 0x00, 0x3a, 0x00, 0x33, 0x00, 0x35, 1585 0x00, 0x34, 0x00, 0x3a, 0x00, 0x33, 0x00, 0x35,
1586 0x00, 0x3a, 0x00, 0x33, 0x00, 0x33, 0x00, 0x00, 1586 0x00, 0x3a, 0x00, 0x33, 0x00, 0x33, 0x00, 0x00,
1587 0x00, 0x0f, 0x2a, 0x8f, 0x00, 0x00, 0x00, 0x00, 1587 0x00, 0x0f, 0x2a, 0x8f, 0x00, 0x00, 0x00, 0x00,
1588 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 1588 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
1589 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1589 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1590 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, 1591 0x00, 0x00, 0x00, 0x01, 0x2a, 0x9e, 0x00, 0x00,
1592 0x00, 0x01, 0x2a, 0x9f, 0x00, 0x00, 0x00, 0x01, 1592 0x00, 0x01, 0x2a, 0x9f, 0x00, 0x00, 0x00, 0x01,
1593 0x2a, 0xa0, 0x00, 0x00, 0x00, 0x01, 0x2a, 0xa1, 1593 0x2a, 0xa0, 0x00, 0x00, 0x00, 0x01, 0x2a, 0xa1,
1594 0x00, 0x00, 0x00, 0x01, 0x2a, 0xa2, 0x00, 0x00, 1594 0x00, 0x00, 0x00, 0x01, 0x2a, 0xa2, 0x00, 0x00,
1595 0x00, 0x01, 0x29, 0x7e, 0x00, 0x00, 0x00, 0x02, 1595 0x00, 0x01, 0x29, 0x7e, 0x00, 0x00, 0x00, 0x02,
1596 0x29, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 1596 0x29, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
1597 0x29, 0x82, 0xff, 0xff, 0x00, 0x01, 0x2a, 0xa7, 1597 0x29, 0x82, 0xff, 0xff, 0x00, 0x01, 0x2a, 0xa7,
1598 0x00, 0x00, 0x00, 0x05, 0x2a, 0xa8, 0x71, 0x41, 1598 0x00, 0x00, 0x00, 0x05, 0x2a, 0xa8, 0x71, 0x41,
1599 0x20, 0x00, 0x20, 0x00, 0x00, 0x23, 0x04, 0x00, 1599 0x20, 0x00, 0x20, 0x00, 0x00, 0x23, 0x04, 0x00,
1600 0x00, 0x0a, 0x2a, 0xad, 0x00, 0x00, 0x00, 0x00, 1600 0x00, 0x0a, 0x2a, 0xad, 0x00, 0x00, 0x00, 0x00,
1601 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1601 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1602 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, 1603 0x00, 0x0f, 0x2a, 0xb7, 0x00, 0x00, 0x00, 0x00,
1604 0x00, 0x00, 0x00, 0x40, 0x00, 0xa0, 0x82, 0x40, 1604 0x00, 0x00, 0x00, 0x40, 0x00, 0xa0, 0x82, 0x40,
1605 0x00, 0x08, 0x30, 0x7f, 0x00, 0x80, 0x01, 0x80, 1605 0x00, 0x08, 0x30, 0x7f, 0x00, 0x80, 0x01, 0x80,
1606 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1606 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1607 0x00, 0x00, 0x00, 0x01, 0x27, 0x6e, 0x00, 0x00, 1607 0x00, 0x00, 0x00, 0x01, 0x27, 0x6e, 0x00, 0x00,
1608 0x00, 0x01, 0x27, 0x6f, 0x00, 0x00, 0x00, 0x00, 1608 0x00, 0x01, 0x27, 0x6f, 0x00, 0x00, 0x00, 0x00,
1609 0x00, 0x09, 0x00, 0x00, 0x1a, 0x83, 0x04, 0xe8, 1609 0x00, 0x09, 0x00, 0x00, 0x1a, 0x83, 0x04, 0xe8,
1610 0x04, 0xcf, 0x04, 0xc5, 0x04, 0xba, 0x04, 0xb0, 1610 0x04, 0xcf, 0x04, 0xc5, 0x04, 0xba, 0x04, 0xb0,
1611 0x04, 0xac, 0x04, 0x9c, 0x04, 0x8c, 0x04, 0x81, 1611 0x04, 0xac, 0x04, 0x9c, 0x04, 0x8c, 0x04, 0x81,
1612 0x00, 0x78, 0x00, 0x00, 0x01, 0x00, 0xf2, 0x73, 1612 0x00, 0x78, 0x00, 0x00, 0x01, 0x00, 0xf2, 0x73,
1613 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1613 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73,
1614 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, 1615 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73,
1616 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, 1617 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73,
1618 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, 1619 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73,
1620 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, 1621 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73,
1622 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, 1623 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73,
1624 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, 1625 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73,
1626 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, 1627 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73,
1628 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, 1629 0x07, 0xaa, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73,
1630 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1630 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73,
1631 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, 1632 0x02, 0x23, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73,
1633 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1633 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73,
1634 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, 1635 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73,
1636 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, 1637 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73,
1638 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, 1639 0x05, 0xe5, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73,
1640 0x02, 0xb5, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1640 0x02, 0xb5, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73,
1641 0x0e, 0x33, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, 1641 0x0e, 0x33, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73,
1642 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0x00, 0x00, 1642 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0x00, 0x00,
1643}; 1643};
1644 1644
diff --git a/drivers/media/dvb/ttusb-dec/ttusb_dec.c b/drivers/media/dvb/ttusb-dec/ttusb_dec.c
index 832d179f26fa..8abc21890129 100644
--- a/drivers/media/dvb/ttusb-dec/ttusb_dec.c
+++ b/drivers/media/dvb/ttusb-dec/ttusb_dec.c
@@ -1203,7 +1203,7 @@ static int ttusb_init_rc(struct ttusb_dec *dec)
1203 input_dev->keycode = rc_keys; 1203 input_dev->keycode = rc_keys;
1204 1204
1205 for (i = 0; i < ARRAY_SIZE(rc_keys); i++) 1205 for (i = 0; i < ARRAY_SIZE(rc_keys); i++)
1206 set_bit(rc_keys[i], input_dev->keybit); 1206 set_bit(rc_keys[i], input_dev->keybit);
1207 1207
1208 input_register_device(input_dev); 1208 input_register_device(input_dev);
1209 1209
@@ -1529,7 +1529,7 @@ static void ttusb_dec_exit_rc(struct ttusb_dec *dec)
1529 usb_free_urb(dec->irq_urb); 1529 usb_free_urb(dec->irq_urb);
1530 1530
1531 usb_buffer_free(dec->udev,IRQ_PACKET_SIZE, 1531 usb_buffer_free(dec->udev,IRQ_PACKET_SIZE,
1532 dec->irq_buffer, dec->irq_dma_handle); 1532 dec->irq_buffer, dec->irq_dma_handle);
1533 1533
1534 if (dec->rc_input_dev) { 1534 if (dec->rc_input_dev) {
1535 input_unregister_device(dec->rc_input_dev); 1535 input_unregister_device(dec->rc_input_dev);
diff --git a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig
index cc4a723e24db..fc87efc5049c 100644
--- a/drivers/media/video/Kconfig
+++ b/drivers/media/video/Kconfig
@@ -188,7 +188,7 @@ config VIDEO_ZORAN
188 188
189 To compile this driver as a module, choose M here: the 189 To compile this driver as a module, choose M here: the
190 module will be called zr36067. 190 module will be called zr36067.
191 191
192config VIDEO_ZORAN_BUZ 192config VIDEO_ZORAN_BUZ
193 tristate "Iomega Buz support" 193 tristate "Iomega Buz support"
194 depends on VIDEO_ZORAN 194 depends on VIDEO_ZORAN
@@ -204,8 +204,8 @@ config VIDEO_ZORAN_DC10
204 204
205config VIDEO_ZORAN_DC30 205config VIDEO_ZORAN_DC30
206 tristate "Pinnacle/Miro DC30(+) support" 206 tristate "Pinnacle/Miro DC30(+) support"
207 depends on VIDEO_ZORAN 207 depends on VIDEO_ZORAN
208 help 208 help
209 Support for the Pinnacle/Miro DC30(+) MJPEG capture/playback 209 Support for the Pinnacle/Miro DC30(+) MJPEG capture/playback
210 card. This also supports really old DC10 cards based on the 210 card. This also supports really old DC10 cards based on the
211 zr36050 MJPEG codec and zr36016 VFE. 211 zr36050 MJPEG codec and zr36016 VFE.
@@ -260,7 +260,7 @@ config VIDEO_MXB
260 ---help--- 260 ---help---
261 This is a video4linux driver for the 'Multimedia eXtension Board' 261 This is a video4linux driver for the 'Multimedia eXtension Board'
262 TV card by Siemens-Nixdorf. 262 TV card by Siemens-Nixdorf.
263 263
264 To compile this driver as a module, choose M here: the 264 To compile this driver as a module, choose M here: the
265 module will be called mxb. 265 module will be called mxb.
266 266
@@ -274,7 +274,7 @@ config VIDEO_DPC
274 for SAA7146 bases boards, so if you have some unsupported 274 for SAA7146 bases boards, so if you have some unsupported
275 saa7146 based, analog video card, chances are good that it 275 saa7146 based, analog video card, chances are good that it
276 will work with this skeleton driver. 276 will work with this skeleton driver.
277 277
278 To compile this driver as a module, choose M here: the 278 To compile this driver as a module, choose M here: the
279 module will be called dpc7146. 279 module will be called dpc7146.
280 280
@@ -285,7 +285,7 @@ config VIDEO_HEXIUM_ORION
285 ---help--- 285 ---help---
286 This is a video4linux driver for the Hexium HV-PCI6 and 286 This is a video4linux driver for the Hexium HV-PCI6 and
287 Orion frame grabber cards by Hexium. 287 Orion frame grabber cards by Hexium.
288 288
289 To compile this driver as a module, choose M here: the 289 To compile this driver as a module, choose M here: the
290 module will be called hexium_orion. 290 module will be called hexium_orion.
291 291
@@ -297,7 +297,7 @@ config VIDEO_HEXIUM_GEMINI
297 This is a video4linux driver for the Hexium Gemini frame 297 This is a video4linux driver for the Hexium Gemini frame
298 grabber card by Hexium. Please note that the Gemini Dual 298 grabber card by Hexium. Please note that the Gemini Dual
299 card is *not* fully supported. 299 card is *not* fully supported.
300 300
301 To compile this driver as a module, choose M here: the 301 To compile this driver as a module, choose M here: the
302 module will be called hexium_gemini. 302 module will be called hexium_gemini.
303 303
diff --git a/drivers/media/video/bt832.c b/drivers/media/video/bt832.c
index e4063950ae57..3ca1d768bfd3 100644
--- a/drivers/media/video/bt832.c
+++ b/drivers/media/video/bt832.c
@@ -231,18 +231,18 @@ bt832_command(struct i2c_client *client, unsigned int cmd, void *arg)
231 231
232static struct i2c_driver driver = { 232static struct i2c_driver driver = {
233 .owner = THIS_MODULE, 233 .owner = THIS_MODULE,
234 .name = "i2c bt832 driver", 234 .name = "i2c bt832 driver",
235 .id = -1, /* FIXME */ 235 .id = -1, /* FIXME */
236 .flags = I2C_DF_NOTIFY, 236 .flags = I2C_DF_NOTIFY,
237 .attach_adapter = bt832_probe, 237 .attach_adapter = bt832_probe,
238 .detach_client = bt832_detach, 238 .detach_client = bt832_detach,
239 .command = bt832_command, 239 .command = bt832_command,
240}; 240};
241static struct i2c_client client_template = 241static struct i2c_client client_template =
242{ 242{
243 .name = "bt832", 243 .name = "bt832",
244 .flags = I2C_CLIENT_ALLOW_USE, 244 .flags = I2C_CLIENT_ALLOW_USE,
245 .driver = &driver, 245 .driver = &driver,
246}; 246};
247 247
248 248
diff --git a/drivers/media/video/bttv-driver.c b/drivers/media/video/bttv-driver.c
index 3c58a2a68906..1ddf9ba613ef 100644
--- a/drivers/media/video/bttv-driver.c
+++ b/drivers/media/video/bttv-driver.c
@@ -727,71 +727,71 @@ void free_btres(struct bttv *btv, struct bttv_fh *fh, int bits)
727 727
728static void set_pll_freq(struct bttv *btv, unsigned int fin, unsigned int fout) 728static void set_pll_freq(struct bttv *btv, unsigned int fin, unsigned int fout)
729{ 729{
730 unsigned char fl, fh, fi; 730 unsigned char fl, fh, fi;
731 731
732 /* prevent overflows */ 732 /* prevent overflows */
733 fin/=4; 733 fin/=4;
734 fout/=4; 734 fout/=4;
735 735
736 fout*=12; 736 fout*=12;
737 fi=fout/fin; 737 fi=fout/fin;
738 738
739 fout=(fout%fin)*256; 739 fout=(fout%fin)*256;
740 fh=fout/fin; 740 fh=fout/fin;
741 741
742 fout=(fout%fin)*256; 742 fout=(fout%fin)*256;
743 fl=fout/fin; 743 fl=fout/fin;
744 744
745 btwrite(fl, BT848_PLL_F_LO); 745 btwrite(fl, BT848_PLL_F_LO);
746 btwrite(fh, BT848_PLL_F_HI); 746 btwrite(fh, BT848_PLL_F_HI);
747 btwrite(fi|BT848_PLL_X, BT848_PLL_XCI); 747 btwrite(fi|BT848_PLL_X, BT848_PLL_XCI);
748} 748}
749 749
750static void set_pll(struct bttv *btv) 750static void set_pll(struct bttv *btv)
751{ 751{
752 int i; 752 int i;
753 753
754 if (!btv->pll.pll_crystal) 754 if (!btv->pll.pll_crystal)
755 return; 755 return;
756 756
757 if (btv->pll.pll_ofreq == btv->pll.pll_current) { 757 if (btv->pll.pll_ofreq == btv->pll.pll_current) {
758 dprintk("bttv%d: PLL: no change required\n",btv->c.nr); 758 dprintk("bttv%d: PLL: no change required\n",btv->c.nr);
759 return; 759 return;
760 } 760 }
761 761
762 if (btv->pll.pll_ifreq == btv->pll.pll_ofreq) { 762 if (btv->pll.pll_ifreq == btv->pll.pll_ofreq) {
763 /* no PLL needed */ 763 /* no PLL needed */
764 if (btv->pll.pll_current == 0) 764 if (btv->pll.pll_current == 0)
765 return; 765 return;
766 bttv_printk(KERN_INFO "bttv%d: PLL can sleep, using XTAL (%d).\n", 766 bttv_printk(KERN_INFO "bttv%d: PLL can sleep, using XTAL (%d).\n",
767 btv->c.nr,btv->pll.pll_ifreq); 767 btv->c.nr,btv->pll.pll_ifreq);
768 btwrite(0x00,BT848_TGCTRL); 768 btwrite(0x00,BT848_TGCTRL);
769 btwrite(0x00,BT848_PLL_XCI); 769 btwrite(0x00,BT848_PLL_XCI);
770 btv->pll.pll_current = 0; 770 btv->pll.pll_current = 0;
771 return; 771 return;
772 } 772 }
773 773
774 bttv_printk(KERN_INFO "bttv%d: PLL: %d => %d ",btv->c.nr, 774 bttv_printk(KERN_INFO "bttv%d: PLL: %d => %d ",btv->c.nr,
775 btv->pll.pll_ifreq, btv->pll.pll_ofreq); 775 btv->pll.pll_ifreq, btv->pll.pll_ofreq);
776 set_pll_freq(btv, btv->pll.pll_ifreq, btv->pll.pll_ofreq); 776 set_pll_freq(btv, btv->pll.pll_ifreq, btv->pll.pll_ofreq);
777 777
778 for (i=0; i<10; i++) { 778 for (i=0; i<10; i++) {
779 /* Let other people run while the PLL stabilizes */ 779 /* Let other people run while the PLL stabilizes */
780 bttv_printk("."); 780 bttv_printk(".");
781 msleep(10); 781 msleep(10);
782 782
783 if (btread(BT848_DSTATUS) & BT848_DSTATUS_PLOCK) { 783 if (btread(BT848_DSTATUS) & BT848_DSTATUS_PLOCK) {
784 btwrite(0,BT848_DSTATUS); 784 btwrite(0,BT848_DSTATUS);
785 } else { 785 } else {
786 btwrite(0x08,BT848_TGCTRL); 786 btwrite(0x08,BT848_TGCTRL);
787 btv->pll.pll_current = btv->pll.pll_ofreq; 787 btv->pll.pll_current = btv->pll.pll_ofreq;
788 bttv_printk(" ok\n"); 788 bttv_printk(" ok\n");
789 return; 789 return;
790 } 790 }
791 } 791 }
792 btv->pll.pll_current = -1; 792 btv->pll.pll_current = -1;
793 bttv_printk("failed\n"); 793 bttv_printk("failed\n");
794 return; 794 return;
795} 795}
796 796
797/* used to switch between the bt848's analog/digital video capture modes */ 797/* used to switch between the bt848's analog/digital video capture modes */
@@ -1964,7 +1964,7 @@ static int setup_window(struct bttv_fh *fh, struct bttv *btv,
1964 } 1964 }
1965 1965
1966 down(&fh->cap.lock); 1966 down(&fh->cap.lock);
1967 kfree(fh->ov.clips); 1967 kfree(fh->ov.clips);
1968 fh->ov.clips = clips; 1968 fh->ov.clips = clips;
1969 fh->ov.nclips = n; 1969 fh->ov.nclips = n;
1970 1970
@@ -2758,7 +2758,7 @@ static int bttv_do_ioctl(struct inode *inode, struct file *file,
2758 fh->ov.w.height = fb->fmt.height; 2758 fh->ov.w.height = fb->fmt.height;
2759 btv->init.ov.w.width = fb->fmt.width; 2759 btv->init.ov.w.width = fb->fmt.width;
2760 btv->init.ov.w.height = fb->fmt.height; 2760 btv->init.ov.w.height = fb->fmt.height;
2761 kfree(fh->ov.clips); 2761 kfree(fh->ov.clips);
2762 fh->ov.clips = NULL; 2762 fh->ov.clips = NULL;
2763 fh->ov.nclips = 0; 2763 fh->ov.nclips = 0;
2764 2764
diff --git a/drivers/media/video/bttvp.h b/drivers/media/video/bttvp.h
index 3aa9c6e4fc33..1e6a5632c3c7 100644
--- a/drivers/media/video/bttvp.h
+++ b/drivers/media/video/bttvp.h
@@ -45,6 +45,7 @@
45#include <media/tveeprom.h> 45#include <media/tveeprom.h>
46#include <media/ir-common.h> 46#include <media/ir-common.h>
47 47
48
48#include "bt848.h" 49#include "bt848.h"
49#include "bttv.h" 50#include "bttv.h"
50#include "btcx-risc.h" 51#include "btcx-risc.h"
diff --git a/drivers/media/video/cx25840/cx25840-core.c b/drivers/media/video/cx25840/cx25840-core.c
index aea3f038cff6..5b93723a1768 100644
--- a/drivers/media/video/cx25840/cx25840-core.c
+++ b/drivers/media/video/cx25840/cx25840-core.c
@@ -333,24 +333,30 @@ static int set_input(struct i2c_client *client, enum cx25840_input input)
333 333
334static int set_v4lstd(struct i2c_client *client, v4l2_std_id std) 334static int set_v4lstd(struct i2c_client *client, v4l2_std_id std)
335{ 335{
336 u8 fmt; 336 u8 fmt=0; /* zero is autodetect */
337 337
338 switch (std) { 338 /* First tests should be against specific std */
339 /* zero is autodetect */ 339 if (std & V4L2_STD_NTSC_M_JP) {
340 case 0: fmt = 0x0; break; 340 fmt=0x2;
341 /* default ntsc to ntsc-m */ 341 } else if (std & V4L2_STD_NTSC_443) {
342 case V4L2_STD_NTSC: 342 fmt=0x3;
343 case V4L2_STD_NTSC_M: fmt = 0x1; break; 343 } else if (std & V4L2_STD_PAL_M) {
344 case V4L2_STD_NTSC_M_JP: fmt = 0x2; break; 344 fmt=0x5;
345 case V4L2_STD_NTSC_443: fmt = 0x3; break; 345 } else if (std & V4L2_STD_PAL_N) {
346 case V4L2_STD_PAL: fmt = 0x4; break; 346 fmt=0x6;
347 case V4L2_STD_PAL_M: fmt = 0x5; break; 347 } else if (std & V4L2_STD_PAL_Nc) {
348 case V4L2_STD_PAL_N: fmt = 0x6; break; 348 fmt=0x7;
349 case V4L2_STD_PAL_Nc: fmt = 0x7; break; 349 } else if (std & V4L2_STD_PAL_60) {
350 case V4L2_STD_PAL_60: fmt = 0x8; break; 350 fmt=0x8;
351 case V4L2_STD_SECAM: fmt = 0xc; break; 351 } else {
352 default: 352 /* Then, test against generic ones */
353 return -ERANGE; 353 if (std & V4L2_STD_NTSC) {
354 fmt=0x1;
355 } else if (std & V4L2_STD_PAL) {
356 fmt=0x4;
357 } else if (std & V4L2_STD_SECAM) {
358 fmt=0xc;
359 }
354 } 360 }
355 361
356 cx25840_and_or(client, 0x400, ~0xf, fmt); 362 cx25840_and_or(client, 0x400, ~0xf, fmt);
diff --git a/drivers/media/video/cx88/cx88-blackbird.c b/drivers/media/video/cx88/cx88-blackbird.c
index 4ae3f78cccf2..74e57a53116f 100644
--- a/drivers/media/video/cx88/cx88-blackbird.c
+++ b/drivers/media/video/cx88/cx88-blackbird.c
@@ -616,6 +616,8 @@ static int blackbird_load_firmware(struct cx8802_dev *dev)
616 616
617 retval = request_firmware(&firmware, BLACKBIRD_FIRM_ENC_FILENAME, 617 retval = request_firmware(&firmware, BLACKBIRD_FIRM_ENC_FILENAME,
618 &dev->pci->dev); 618 &dev->pci->dev);
619
620
619 if (retval != 0) { 621 if (retval != 0) {
620 dprintk(0, "ERROR: Hotplug firmware request failed (%s).\n", 622 dprintk(0, "ERROR: Hotplug firmware request failed (%s).\n",
621 BLACKBIRD_FIRM_ENC_FILENAME); 623 BLACKBIRD_FIRM_ENC_FILENAME);
diff --git a/drivers/media/video/cx88/cx88-input.c b/drivers/media/video/cx88/cx88-input.c
index 38b12ebaa49e..461019dca901 100644
--- a/drivers/media/video/cx88/cx88-input.c
+++ b/drivers/media/video/cx88/cx88-input.c
@@ -453,7 +453,6 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci)
453 input_dev->id.product = pci->device; 453 input_dev->id.product = pci->device;
454 } 454 }
455 input_dev->cdev.dev = &pci->dev; 455 input_dev->cdev.dev = &pci->dev;
456
457 /* record handles to ourself */ 456 /* record handles to ourself */
458 ir->core = core; 457 ir->core = core;
459 core->ir = ir; 458 core->ir = ir;
@@ -586,7 +585,6 @@ void cx88_ir_irq(struct cx88_core *core)
586MODULE_AUTHOR("Gerd Knorr, Pavel Machek, Chris Pascoe"); 585MODULE_AUTHOR("Gerd Knorr, Pavel Machek, Chris Pascoe");
587MODULE_DESCRIPTION("input driver for cx88 GPIO-based IR remote controls"); 586MODULE_DESCRIPTION("input driver for cx88 GPIO-based IR remote controls");
588MODULE_LICENSE("GPL"); 587MODULE_LICENSE("GPL");
589
590/* 588/*
591 * Local variables: 589 * Local variables:
592 * c-basic-offset: 8 590 * c-basic-offset: 8
diff --git a/drivers/media/video/cx88/cx88.h b/drivers/media/video/cx88/cx88.h
index 27fb080fd7aa..77beafc5c327 100644
--- a/drivers/media/video/cx88/cx88.h
+++ b/drivers/media/video/cx88/cx88.h
@@ -411,7 +411,6 @@ struct cx8802_dev {
411 struct videobuf_dvb dvb; 411 struct videobuf_dvb dvb;
412 void* fe_handle; 412 void* fe_handle;
413 int (*fe_release)(void *handle); 413 int (*fe_release)(void *handle);
414
415 /* for switching modulation types */ 414 /* for switching modulation types */
416 unsigned char ts_gen_cntrl; 415 unsigned char ts_gen_cntrl;
417 416
diff --git a/drivers/media/video/em28xx/em28xx-core.c b/drivers/media/video/em28xx/em28xx-core.c
index 9f6e5e5355a1..0cfe75416ec6 100644
--- a/drivers/media/video/em28xx/em28xx-core.c
+++ b/drivers/media/video/em28xx/em28xx-core.c
@@ -116,47 +116,6 @@ void em28xx_print_ioctl(char *name, unsigned int cmd)
116 } 116 }
117} 117}
118 118
119static 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
142static 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 119
161/* 120/*
162 * em28xx_request_buffers() 121 * em28xx_request_buffers()
@@ -167,14 +126,16 @@ u32 em28xx_request_buffers(struct em28xx *dev, u32 count)
167 const size_t imagesize = PAGE_ALIGN(dev->frame_size); /*needs to be page aligned cause the buffers can be mapped individually! */ 126 const size_t imagesize = PAGE_ALIGN(dev->frame_size); /*needs to be page aligned cause the buffers can be mapped individually! */
168 void *buff = NULL; 127 void *buff = NULL;
169 u32 i; 128 u32 i;
170 em28xx_coredbg("requested %i buffers with size %i", count, imagesize); 129 em28xx_coredbg("requested %i buffers with size %zd", count, imagesize);
171 if (count > EM28XX_NUM_FRAMES) 130 if (count > EM28XX_NUM_FRAMES)
172 count = EM28XX_NUM_FRAMES; 131 count = EM28XX_NUM_FRAMES;
173 132
174 dev->num_frames = count; 133 dev->num_frames = count;
175 while (dev->num_frames > 0) { 134 while (dev->num_frames > 0) {
176 if ((buff = rvmalloc(dev->num_frames * imagesize))) 135 if ((buff = vmalloc_32(dev->num_frames * imagesize))) {
136 memset(buff, 0, dev->num_frames * imagesize);
177 break; 137 break;
138 }
178 dev->num_frames--; 139 dev->num_frames--;
179 } 140 }
180 141
@@ -217,8 +178,7 @@ void em28xx_queue_unusedframes(struct em28xx *dev)
217void em28xx_release_buffers(struct em28xx *dev) 178void em28xx_release_buffers(struct em28xx *dev)
218{ 179{
219 if (dev->num_frames) { 180 if (dev->num_frames) {
220 rvfree(dev->frame[0].bufmem, 181 vfree(dev->frame[0].bufmem);
221 dev->num_frames * PAGE_ALIGN(dev->frame[0].buf.length));
222 dev->num_frames = 0; 182 dev->num_frames = 0;
223 } 183 }
224} 184}
diff --git a/drivers/media/video/em28xx/em28xx-i2c.c b/drivers/media/video/em28xx/em28xx-i2c.c
index b32d9852f34c..7f5603054f02 100644
--- a/drivers/media/video/em28xx/em28xx-i2c.c
+++ b/drivers/media/video/em28xx/em28xx-i2c.c
@@ -41,7 +41,7 @@ module_param(i2c_debug, int, 0644);
41MODULE_PARM_DESC(i2c_debug, "enable debug messages [i2c]"); 41MODULE_PARM_DESC(i2c_debug, "enable debug messages [i2c]");
42 42
43#define dprintk1(lvl,fmt, args...) if (i2c_debug>=lvl) do {\ 43#define dprintk1(lvl,fmt, args...) if (i2c_debug>=lvl) do {\
44 printk(fmt , ##args); } while (0) 44 printk(fmt, ##args); } while (0)
45#define dprintk2(lvl,fmt, args...) if (i2c_debug>=lvl) do{ \ 45#define dprintk2(lvl,fmt, args...) if (i2c_debug>=lvl) do{ \
46 printk(KERN_DEBUG "%s at %s: " fmt, \ 46 printk(KERN_DEBUG "%s at %s: " fmt, \
47 dev->name, __FUNCTION__ , ##args); } while (0) 47 dev->name, __FUNCTION__ , ##args); } while (0)
diff --git a/drivers/media/video/em28xx/em28xx-video.c b/drivers/media/video/em28xx/em28xx-video.c
index abec32c175aa..06d76879bde2 100644
--- a/drivers/media/video/em28xx/em28xx-video.c
+++ b/drivers/media/video/em28xx/em28xx-video.c
@@ -189,16 +189,6 @@ static DECLARE_RWSEM(em28xx_disconnect);
189 189
190/********************* v4l2 interface ******************************************/ 190/********************* v4l2 interface ******************************************/
191 191
192static 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/* 192/*
203 * em28xx_config() 193 * em28xx_config()
204 * inits registers with sane defaults 194 * inits registers with sane defaults
@@ -616,7 +606,8 @@ static struct vm_operations_struct em28xx_vm_ops = {
616static int em28xx_v4l2_mmap(struct file *filp, struct vm_area_struct *vma) 606static int em28xx_v4l2_mmap(struct file *filp, struct vm_area_struct *vma)
617{ 607{
618 unsigned long size = vma->vm_end - vma->vm_start, 608 unsigned long size = vma->vm_end - vma->vm_start,
619 start = vma->vm_start, pos, page; 609 start = vma->vm_start;
610 void *pos;
620 u32 i; 611 u32 i;
621 612
622 struct em28xx *dev = filp->private_data; 613 struct em28xx *dev = filp->private_data;
@@ -657,12 +648,10 @@ static int em28xx_v4l2_mmap(struct file *filp, struct vm_area_struct *vma)
657 vma->vm_flags |= VM_IO; 648 vma->vm_flags |= VM_IO;
658 vma->vm_flags |= VM_RESERVED; /* avoid to swap out this VMA */ 649 vma->vm_flags |= VM_RESERVED; /* avoid to swap out this VMA */
659 650
660 pos = (unsigned long)dev->frame[i].bufmem; 651 pos = dev->frame[i].bufmem;
661 while (size > 0) { /* size is page-aligned */ 652 while (size > 0) { /* size is page-aligned */
662 page = vmalloc_to_pfn((void *)pos); 653 if (vm_insert_page(vma, start, vmalloc_to_page(pos))) {
663 if (remap_pfn_range(vma, start, page, PAGE_SIZE, 654 em28xx_videodbg("mmap: vm_insert_page failed\n");
664 vma->vm_page_prot)) {
665 em28xx_videodbg("mmap: rename page map failed\n");
666 up(&dev->fileop_lock); 655 up(&dev->fileop_lock);
667 return -EAGAIN; 656 return -EAGAIN;
668 } 657 }
diff --git a/drivers/media/video/ir-kbd-gpio.c b/drivers/media/video/ir-kbd-gpio.c
index 6345e29e4951..de1385e5d05e 100644
--- a/drivers/media/video/ir-kbd-gpio.c
+++ b/drivers/media/video/ir-kbd-gpio.c
@@ -291,13 +291,12 @@ struct IR {
291 u32 mask_keycode; 291 u32 mask_keycode;
292 u32 mask_keydown; 292 u32 mask_keydown;
293 u32 mask_keyup; 293 u32 mask_keyup;
294 u32 polling; 294 u32 polling;
295 u32 last_gpio; 295 u32 last_gpio;
296 struct work_struct work; 296 struct work_struct work;
297 struct timer_list timer; 297 struct timer_list timer;
298 298
299 /* RC5 gpio */ 299 /* RC5 gpio */
300
301 u32 rc5_gpio; 300 u32 rc5_gpio;
302 struct timer_list timer_end; /* timer_end for code completion */ 301 struct timer_list timer_end; /* timer_end for code completion */
303 struct timer_list timer_keyup; /* timer_end for key release */ 302 struct timer_list timer_keyup; /* timer_end for key release */
@@ -647,7 +646,7 @@ static int ir_probe(struct device *dev)
647 driver.any_irq = ir_rc5_irq; 646 driver.any_irq = ir_rc5_irq;
648 driver.gpio_irq = NULL; 647 driver.gpio_irq = NULL;
649 ir->rc5_gpio = 1; 648 ir->rc5_gpio = 1;
650 break; 649 break;
651 } 650 }
652 if (NULL == ir_codes) { 651 if (NULL == ir_codes) {
653 kfree(ir); 652 kfree(ir);
@@ -657,7 +656,7 @@ static int ir_probe(struct device *dev)
657 656
658 if (ir->rc5_gpio) { 657 if (ir->rc5_gpio) {
659 u32 gpio; 658 u32 gpio;
660 /* enable remote irq */ 659 /* enable remote irq */
661 bttv_gpio_inout(sub->core, (1 << 4), 1 << 4); 660 bttv_gpio_inout(sub->core, (1 << 4), 1 << 4);
662 gpio = bttv_gpio_read(sub->core); 661 gpio = bttv_gpio_read(sub->core);
663 bttv_gpio_write(sub->core, gpio & ~(1 << 4)); 662 bttv_gpio_write(sub->core, gpio & ~(1 << 4));
@@ -726,6 +725,7 @@ static int ir_remove(struct device *dev)
726 del_timer(&ir->timer); 725 del_timer(&ir->timer);
727 flush_scheduled_work(); 726 flush_scheduled_work();
728 } 727 }
728
729 if (ir->rc5_gpio) { 729 if (ir->rc5_gpio) {
730 u32 gpio; 730 u32 gpio;
731 731
diff --git a/drivers/media/video/ir-kbd-i2c.c b/drivers/media/video/ir-kbd-i2c.c
index 124c502ea1f3..740e543311af 100644
--- a/drivers/media/video/ir-kbd-i2c.c
+++ b/drivers/media/video/ir-kbd-i2c.c
@@ -40,6 +40,7 @@
40#include <linux/i2c.h> 40#include <linux/i2c.h>
41#include <linux/workqueue.h> 41#include <linux/workqueue.h>
42#include <asm/semaphore.h> 42#include <asm/semaphore.h>
43
43#include <media/ir-common.h> 44#include <media/ir-common.h>
44#include <media/ir-kbd-i2c.h> 45#include <media/ir-kbd-i2c.h>
45 46
@@ -278,7 +279,7 @@ static int ir_probe(struct i2c_adapter *adap);
278 279
279static struct i2c_driver driver = { 280static struct i2c_driver driver = {
280 .name = "ir remote kbd driver", 281 .name = "ir remote kbd driver",
281 .id = I2C_DRIVERID_I2C_IR, 282 .id = I2C_DRIVERID_INFRARED,
282 .flags = I2C_DF_NOTIFY, 283 .flags = I2C_DF_NOTIFY,
283 .attach_adapter = ir_probe, 284 .attach_adapter = ir_probe,
284 .detach_client = ir_detach, 285 .detach_client = ir_detach,
@@ -296,15 +297,15 @@ static int ir_attach(struct i2c_adapter *adap, int addr,
296 IR_KEYTAB_TYPE *ir_codes = NULL; 297 IR_KEYTAB_TYPE *ir_codes = NULL;
297 char *name; 298 char *name;
298 int ir_type; 299 int ir_type;
299 struct IR_i2c *ir; 300 struct IR_i2c *ir;
300 struct input_dev *input_dev; 301 struct input_dev *input_dev;
301 302
302 ir = kzalloc(sizeof(struct IR_i2c), GFP_KERNEL); 303 ir = kzalloc(sizeof(struct IR_i2c),GFP_KERNEL);
303 input_dev = input_allocate_device(); 304 input_dev = input_allocate_device();
304 if (!ir || !input_dev) { 305 if (!ir || !input_dev) {
305 kfree(ir); 306 kfree(ir);
306 input_free_device(input_dev); 307 input_free_device(input_dev);
307 return -ENOMEM; 308 return -ENOMEM;
308 } 309 }
309 310
310 ir->c = client_template; 311 ir->c = client_template;
@@ -360,7 +361,7 @@ static int ir_attach(struct i2c_adapter *adap, int addr,
360 /* register i2c device 361 /* register i2c device
361 * At device register, IR codes may be changed to be 362 * At device register, IR codes may be changed to be
362 * board dependent. 363 * board dependent.
363 */ 364 */
364 i2c_attach_client(&ir->c); 365 i2c_attach_client(&ir->c);
365 366
366 /* If IR not supported or disabled, unregisters driver */ 367 /* If IR not supported or disabled, unregisters driver */
diff --git a/drivers/media/video/msp3400.c b/drivers/media/video/msp3400.c
index a23fb0338986..d86f8e92e534 100644
--- a/drivers/media/video/msp3400.c
+++ b/drivers/media/video/msp3400.c
@@ -134,7 +134,7 @@ struct msp3400c {
134 int rxsubchans; 134 int rxsubchans;
135 135
136 int muted; 136 int muted;
137 int left, right; /* volume */ 137 int left, right; /* volume */
138 int bass, treble; 138 int bass, treble;
139 139
140 /* shadow register set */ 140 /* shadow register set */
@@ -882,6 +882,7 @@ static void watch_stereo(struct i2c_client *client)
882 msp->watch_stereo = 0; 882 msp->watch_stereo = 0;
883} 883}
884 884
885
885static int msp3400c_thread(void *data) 886static int msp3400c_thread(void *data)
886{ 887{
887 struct i2c_client *client = data; 888 struct i2c_client *client = data;
@@ -889,6 +890,7 @@ static int msp3400c_thread(void *data)
889 struct CARRIER_DETECT *cd; 890 struct CARRIER_DETECT *cd;
890 int count, max1,max2,val1,val2, val,this; 891 int count, max1,max2,val1,val2, val,this;
891 892
893
892 msp3400_info("msp3400 daemon started\n"); 894 msp3400_info("msp3400 daemon started\n");
893 for (;;) { 895 for (;;) {
894 msp3400_dbg_mediumvol("msp3400 thread: sleep\n"); 896 msp3400_dbg_mediumvol("msp3400 thread: sleep\n");
@@ -1162,6 +1164,7 @@ static int msp3410d_thread(void *data)
1162 int mode,val,i,std; 1164 int mode,val,i,std;
1163 1165
1164 msp3400_info("msp3410 daemon started\n"); 1166 msp3400_info("msp3410 daemon started\n");
1167
1165 for (;;) { 1168 for (;;) {
1166 msp3400_dbg_mediumvol("msp3410 thread: sleep\n"); 1169 msp3400_dbg_mediumvol("msp3410 thread: sleep\n");
1167 msp34xx_sleep(msp,-1); 1170 msp34xx_sleep(msp,-1);
@@ -1384,6 +1387,7 @@ static int msp34xxg_thread(void *data)
1384 int val, std, i; 1387 int val, std, i;
1385 1388
1386 msp3400_info("msp34xxg daemon started\n"); 1389 msp3400_info("msp34xxg daemon started\n");
1390
1387 msp->source = 1; /* default */ 1391 msp->source = 1; /* default */
1388 for (;;) { 1392 for (;;) {
1389 msp3400_dbg_mediumvol("msp34xxg thread: sleep\n"); 1393 msp3400_dbg_mediumvol("msp34xxg thread: sleep\n");
@@ -1559,11 +1563,11 @@ static void msp_wake_thread(struct i2c_client *client);
1559static struct i2c_driver driver = { 1563static struct i2c_driver driver = {
1560 .owner = THIS_MODULE, 1564 .owner = THIS_MODULE,
1561 .name = "msp3400", 1565 .name = "msp3400",
1562 .id = I2C_DRIVERID_MSP3400, 1566 .id = I2C_DRIVERID_MSP3400,
1563 .flags = I2C_DF_NOTIFY, 1567 .flags = I2C_DF_NOTIFY,
1564 .attach_adapter = msp_probe, 1568 .attach_adapter = msp_probe,
1565 .detach_client = msp_detach, 1569 .detach_client = msp_detach,
1566 .command = msp_command, 1570 .command = msp_command,
1567 .driver = { 1571 .driver = {
1568 .suspend = msp_suspend, 1572 .suspend = msp_suspend,
1569 .resume = msp_resume, 1573 .resume = msp_resume,
@@ -1574,7 +1578,7 @@ static struct i2c_client client_template =
1574{ 1578{
1575 .name = "(unset)", 1579 .name = "(unset)",
1576 .flags = I2C_CLIENT_ALLOW_USE, 1580 .flags = I2C_CLIENT_ALLOW_USE,
1577 .driver = &driver, 1581 .driver = &driver,
1578}; 1582};
1579 1583
1580static int msp_attach(struct i2c_adapter *adap, int addr, int kind) 1584static int msp_attach(struct i2c_adapter *adap, int addr, int kind)
diff --git a/drivers/media/video/saa6588.c b/drivers/media/video/saa6588.c
index dca3ddfd510f..923322503e8f 100644
--- a/drivers/media/video/saa6588.c
+++ b/drivers/media/video/saa6588.c
@@ -422,7 +422,6 @@ static int saa6588_attach(struct i2c_adapter *adap, int addr, int kind)
422 s->timer.function = saa6588_timer; 422 s->timer.function = saa6588_timer;
423 s->timer.data = (unsigned long)s; 423 s->timer.data = (unsigned long)s;
424 schedule_work(&s->work); 424 schedule_work(&s->work);
425
426 return 0; 425 return 0;
427} 426}
428 427
diff --git a/drivers/media/video/saa711x.c b/drivers/media/video/saa711x.c
index 59e13fdea780..31f7b950b01c 100644
--- a/drivers/media/video/saa711x.c
+++ b/drivers/media/video/saa711x.c
@@ -59,7 +59,7 @@ MODULE_PARM_DESC(debug, " Set the default Debug level. Default: 0 (Off) - (0-1)
59#define dprintk(num, format, args...) \ 59#define dprintk(num, format, args...) \
60 do { \ 60 do { \
61 if (debug >= num) \ 61 if (debug >= num) \
62 printk(format , ##args); \ 62 printk(format, ##args); \
63 } while (0) 63 } while (0)
64 64
65/* ----------------------------------------------------------------------- */ 65/* ----------------------------------------------------------------------- */
diff --git a/drivers/media/video/saa7134/saa6752hs.c b/drivers/media/video/saa7134/saa6752hs.c
index cdd1ed9c8065..a61d24f588f7 100644
--- a/drivers/media/video/saa7134/saa6752hs.c
+++ b/drivers/media/video/saa7134/saa6752hs.c
@@ -523,7 +523,8 @@ static int saa6752hs_attach(struct i2c_adapter *adap, int addr, int kind)
523 h->standard = 0; 523 h->standard = 0;
524 524
525 i2c_set_clientdata(&h->client, h); 525 i2c_set_clientdata(&h->client, h);
526 i2c_attach_client(&h->client); 526 i2c_attach_client(&h->client);
527
527 return 0; 528 return 0;
528} 529}
529 530
@@ -597,19 +598,19 @@ saa6752hs_command(struct i2c_client *client, unsigned int cmd, void *arg)
597 598
598static struct i2c_driver driver = { 599static struct i2c_driver driver = {
599 .owner = THIS_MODULE, 600 .owner = THIS_MODULE,
600 .name = "i2c saa6752hs MPEG encoder", 601 .name = "i2c saa6752hs MPEG encoder",
601 .id = I2C_DRIVERID_SAA6752HS, 602 .id = I2C_DRIVERID_SAA6752HS,
602 .flags = I2C_DF_NOTIFY, 603 .flags = I2C_DF_NOTIFY,
603 .attach_adapter = saa6752hs_probe, 604 .attach_adapter = saa6752hs_probe,
604 .detach_client = saa6752hs_detach, 605 .detach_client = saa6752hs_detach,
605 .command = saa6752hs_command, 606 .command = saa6752hs_command,
606}; 607};
607 608
608static struct i2c_client client_template = 609static struct i2c_client client_template =
609{ 610{
610 .name = "saa6752hs", 611 .name = "saa6752hs",
611 .flags = I2C_CLIENT_ALLOW_USE, 612 .flags = I2C_CLIENT_ALLOW_USE,
612 .driver = &driver, 613 .driver = &driver,
613}; 614};
614 615
615static int __init saa6752hs_init_module(void) 616static int __init saa6752hs_init_module(void)
diff --git a/drivers/media/video/saa7134/saa7134-alsa.c b/drivers/media/video/saa7134/saa7134-alsa.c
index 263c6e2e3e8e..953d5fec82d5 100644
--- a/drivers/media/video/saa7134/saa7134-alsa.c
+++ b/drivers/media/video/saa7134/saa7134-alsa.c
@@ -51,6 +51,7 @@ MODULE_PARM_DESC(debug,"enable debug messages [alsa]");
51#define MIXER_ADDR_LINE2 2 51#define MIXER_ADDR_LINE2 2
52#define MIXER_ADDR_LAST 2 52#define MIXER_ADDR_LAST 2
53 53
54
54static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-MAX */ 55static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-MAX */
55static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; /* ID for this card */ 56static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; /* ID for this card */
56static int enable[SNDRV_CARDS] = {1, [1 ... (SNDRV_CARDS - 1)] = 0}; 57static int enable[SNDRV_CARDS] = {1, [1 ... (SNDRV_CARDS - 1)] = 0};
@@ -59,11 +60,14 @@ module_param_array(index, int, NULL, 0444);
59MODULE_PARM_DESC(index, "Index value for SAA7134 capture interface(s)."); 60MODULE_PARM_DESC(index, "Index value for SAA7134 capture interface(s).");
60 61
61#define dprintk(fmt, arg...) if (debug) \ 62#define dprintk(fmt, arg...) if (debug) \
62 printk(KERN_DEBUG "%s/alsa: " fmt, dev->name , ## arg) 63 printk(KERN_DEBUG "%s/alsa: " fmt, dev->name , ##arg)
64
65
63 66
64/* 67/*
65 * Main chip structure 68 * Main chip structure
66 */ 69 */
70
67typedef struct snd_card_saa7134 { 71typedef struct snd_card_saa7134 {
68 snd_card_t *card; 72 snd_card_t *card;
69 spinlock_t mixer_lock; 73 spinlock_t mixer_lock;
@@ -208,8 +212,8 @@ static void saa7134_irq_alsa_done(struct saa7134_dev *dev,
208 212
209static irqreturn_t saa7134_alsa_irq(int irq, void *dev_id, struct pt_regs *regs) 213static irqreturn_t saa7134_alsa_irq(int irq, void *dev_id, struct pt_regs *regs)
210{ 214{
211 struct saa7134_dmasound *dmasound = dev_id; 215 struct saa7134_dmasound *dmasound = dev_id;
212 struct saa7134_dev *dev = dmasound->priv_data; 216 struct saa7134_dev *dev = dmasound->priv_data;
213 217
214 unsigned long report, status; 218 unsigned long report, status;
215 int loop, handled = 0; 219 int loop, handled = 0;
@@ -985,7 +989,7 @@ static int saa7134_alsa_init(void)
985 struct saa7134_dev *dev = NULL; 989 struct saa7134_dev *dev = NULL;
986 struct list_head *list; 990 struct list_head *list;
987 991
988 printk(KERN_INFO "saa7134 ALSA driver for DMA sound loaded\n"); 992 printk(KERN_INFO "saa7134 ALSA driver for DMA sound loaded\n");
989 993
990 list_for_each(list,&saa7134_devlist) { 994 list_for_each(list,&saa7134_devlist) {
991 dev = list_entry(list, struct saa7134_dev, devlist); 995 dev = list_entry(list, struct saa7134_dev, devlist);
@@ -1004,6 +1008,7 @@ static int saa7134_alsa_init(void)
1004 printk(KERN_INFO "saa7134 ALSA: no saa7134 cards found\n"); 1008 printk(KERN_INFO "saa7134 ALSA: no saa7134 cards found\n");
1005 1009
1006 return 0; 1010 return 0;
1011
1007} 1012}
1008 1013
1009/* 1014/*
@@ -1027,3 +1032,6 @@ module_init(saa7134_alsa_init);
1027module_exit(saa7134_alsa_exit); 1032module_exit(saa7134_alsa_exit);
1028MODULE_LICENSE("GPL"); 1033MODULE_LICENSE("GPL");
1029MODULE_AUTHOR("Ricardo Cerqueira"); 1034MODULE_AUTHOR("Ricardo Cerqueira");
1035
1036
1037
diff --git a/drivers/media/video/saa7134/saa7134-cards.c b/drivers/media/video/saa7134/saa7134-cards.c
index 75abc20b0ccd..672fb205959f 100644
--- a/drivers/media/video/saa7134/saa7134-cards.c
+++ b/drivers/media/video/saa7134/saa7134-cards.c
@@ -976,7 +976,7 @@ struct saa7134_board saa7134_boards[] = {
976 .radio_type = UNSET, 976 .radio_type = UNSET,
977 .tuner_addr = ADDR_UNSET, 977 .tuner_addr = ADDR_UNSET,
978 .radio_addr = ADDR_UNSET, 978 .radio_addr = ADDR_UNSET,
979 .tda9887_conf = TDA9887_PRESENT | TDA9887_INTERCARRIER, 979 .tda9887_conf = TDA9887_PRESENT | TDA9887_INTERCARRIER | TDA9887_PORT2_ACTIVE,
980 .inputs = {{ 980 .inputs = {{
981 .name = name_tv, 981 .name = name_tv,
982 .vmux = 3, 982 .vmux = 3,
diff --git a/drivers/media/video/saa7134/saa7134-core.c b/drivers/media/video/saa7134/saa7134-core.c
index 1a093bf176f3..23d8747338ed 100644
--- a/drivers/media/video/saa7134/saa7134-core.c
+++ b/drivers/media/video/saa7134/saa7134-core.c
@@ -71,6 +71,7 @@ static unsigned int radio_nr[] = {[0 ... (SAA7134_MAXBOARDS - 1)] = UNSET };
71static unsigned int tuner[] = {[0 ... (SAA7134_MAXBOARDS - 1)] = UNSET }; 71static unsigned int tuner[] = {[0 ... (SAA7134_MAXBOARDS - 1)] = UNSET };
72static unsigned int card[] = {[0 ... (SAA7134_MAXBOARDS - 1)] = UNSET }; 72static unsigned int card[] = {[0 ... (SAA7134_MAXBOARDS - 1)] = UNSET };
73 73
74
74module_param_array(video_nr, int, NULL, 0444); 75module_param_array(video_nr, int, NULL, 0444);
75module_param_array(vbi_nr, int, NULL, 0444); 76module_param_array(vbi_nr, int, NULL, 0444);
76module_param_array(radio_nr, int, NULL, 0444); 77module_param_array(radio_nr, int, NULL, 0444);
diff --git a/drivers/media/video/saa7134/saa7134-empress.c b/drivers/media/video/saa7134/saa7134-empress.c
index e9ec69efb4c9..575f3e835f91 100644
--- a/drivers/media/video/saa7134/saa7134-empress.c
+++ b/drivers/media/video/saa7134/saa7134-empress.c
@@ -36,6 +36,7 @@ MODULE_AUTHOR("Gerd Knorr <kraxel@bytesex.org> [SuSE Labs]");
36MODULE_LICENSE("GPL"); 36MODULE_LICENSE("GPL");
37 37
38static unsigned int empress_nr[] = {[0 ... (SAA7134_MAXBOARDS - 1)] = UNSET }; 38static unsigned int empress_nr[] = {[0 ... (SAA7134_MAXBOARDS - 1)] = UNSET };
39
39module_param_array(empress_nr, int, NULL, 0444); 40module_param_array(empress_nr, int, NULL, 0444);
40MODULE_PARM_DESC(empress_nr,"ts device number"); 41MODULE_PARM_DESC(empress_nr,"ts device number");
41 42
diff --git a/drivers/media/video/saa7134/saa7134-i2c.c b/drivers/media/video/saa7134/saa7134-i2c.c
index 7575043f0874..df9dd36721e0 100644
--- a/drivers/media/video/saa7134/saa7134-i2c.c
+++ b/drivers/media/video/saa7134/saa7134-i2c.c
@@ -333,7 +333,7 @@ static int attach_inform(struct i2c_client *client)
333 struct tuner_setup tun_setup; 333 struct tuner_setup tun_setup;
334 334
335 d1printk( "%s i2c attach [addr=0x%x,client=%s]\n", 335 d1printk( "%s i2c attach [addr=0x%x,client=%s]\n",
336 client->driver->name, client->addr, client->name); 336 client->driver->name, client->addr, client->name);
337 337
338 /* Am I an i2c remote control? */ 338 /* Am I an i2c remote control? */
339 339
diff --git a/drivers/media/video/saa7134/saa7134-oss.c b/drivers/media/video/saa7134/saa7134-oss.c
index 5a579194e455..513a699a6df2 100644
--- a/drivers/media/video/saa7134/saa7134-oss.c
+++ b/drivers/media/video/saa7134/saa7134-oss.c
@@ -782,36 +782,36 @@ struct file_operations saa7134_mixer_fops = {
782 782
783static irqreturn_t saa7134_oss_irq(int irq, void *dev_id, struct pt_regs *regs) 783static irqreturn_t saa7134_oss_irq(int irq, void *dev_id, struct pt_regs *regs)
784{ 784{
785 struct saa7134_dmasound *dmasound = dev_id; 785 struct saa7134_dmasound *dmasound = dev_id;
786 struct saa7134_dev *dev = dmasound->priv_data; 786 struct saa7134_dev *dev = dmasound->priv_data;
787 unsigned long report, status; 787 unsigned long report, status;
788 int loop, handled = 0; 788 int loop, handled = 0;
789 789
790 for (loop = 0; loop < 10; loop++) { 790 for (loop = 0; loop < 10; loop++) {
791 report = saa_readl(SAA7134_IRQ_REPORT); 791 report = saa_readl(SAA7134_IRQ_REPORT);
792 status = saa_readl(SAA7134_IRQ_STATUS); 792 status = saa_readl(SAA7134_IRQ_STATUS);
793 793
794 if (report & SAA7134_IRQ_REPORT_DONE_RA3) { 794 if (report & SAA7134_IRQ_REPORT_DONE_RA3) {
795 handled = 1; 795 handled = 1;
796 saa_writel(SAA7134_IRQ_REPORT,report); 796 saa_writel(SAA7134_IRQ_REPORT,report);
797 saa7134_irq_oss_done(dev, status); 797 saa7134_irq_oss_done(dev, status);
798 } else { 798 } else {
799 goto out; 799 goto out;
800 } 800 }
801 } 801 }
802 802
803 if (loop == 10) { 803 if (loop == 10) {
804 dprintk("error! looping IRQ!"); 804 dprintk("error! looping IRQ!");
805 } 805 }
806out: 806out:
807 return IRQ_RETVAL(handled); 807 return IRQ_RETVAL(handled);
808} 808}
809 809
810int saa7134_oss_init1(struct saa7134_dev *dev) 810int saa7134_oss_init1(struct saa7134_dev *dev)
811{ 811{
812 812
813 if ((request_irq(dev->pci->irq, saa7134_oss_irq, 813 if ((request_irq(dev->pci->irq, saa7134_oss_irq,
814 SA_SHIRQ | SA_INTERRUPT, dev->name, 814 SA_SHIRQ | SA_INTERRUPT, dev->name,
815 (void*) &dev->dmasound)) < 0) 815 (void*) &dev->dmasound)) < 0)
816 return -1; 816 return -1;
817 817
@@ -905,25 +905,25 @@ static int saa7134_dsp_create(struct saa7134_dev *dev)
905 905
906 err = dev->dmasound.minor_dsp = 906 err = dev->dmasound.minor_dsp =
907 register_sound_dsp(&saa7134_dsp_fops, 907 register_sound_dsp(&saa7134_dsp_fops,
908 dsp_nr[dev->nr]); 908 dsp_nr[dev->nr]);
909 if (err < 0) { 909 if (err < 0) {
910 goto fail; 910 goto fail;
911 } 911 }
912 printk(KERN_INFO "%s: registered device dsp%d\n", 912 printk(KERN_INFO "%s: registered device dsp%d\n",
913 dev->name,dev->dmasound.minor_dsp >> 4); 913 dev->name,dev->dmasound.minor_dsp >> 4);
914 914
915 err = dev->dmasound.minor_mixer = 915 err = dev->dmasound.minor_mixer =
916 register_sound_mixer(&saa7134_mixer_fops, 916 register_sound_mixer(&saa7134_mixer_fops,
917 mixer_nr[dev->nr]); 917 mixer_nr[dev->nr]);
918 if (err < 0) 918 if (err < 0)
919 goto fail; 919 goto fail;
920 printk(KERN_INFO "%s: registered device mixer%d\n", 920 printk(KERN_INFO "%s: registered device mixer%d\n",
921 dev->name,dev->dmasound.minor_mixer >> 4); 921 dev->name,dev->dmasound.minor_mixer >> 4);
922 922
923 return 0; 923 return 0;
924 924
925fail: 925fail:
926 unregister_sound_dsp(dev->dmasound.minor_dsp); 926 unregister_sound_dsp(dev->dmasound.minor_dsp);
927 return 0; 927 return 0;
928 928
929 929
@@ -956,49 +956,50 @@ static int oss_device_exit(struct saa7134_dev *dev)
956 956
957static int saa7134_oss_init(void) 957static int saa7134_oss_init(void)
958{ 958{
959 struct saa7134_dev *dev = NULL; 959 struct saa7134_dev *dev = NULL;
960 struct list_head *list; 960 struct list_head *list;
961 961
962 printk(KERN_INFO "saa7134 OSS driver for DMA sound loaded\n"); 962 printk(KERN_INFO "saa7134 OSS driver for DMA sound loaded\n");
963 963
964 list_for_each(list,&saa7134_devlist) { 964 list_for_each(list,&saa7134_devlist) {
965 dev = list_entry(list, struct saa7134_dev, devlist); 965 dev = list_entry(list, struct saa7134_dev, devlist);
966 if (dev->dmasound.priv_data == NULL) { 966 if (dev->dmasound.priv_data == NULL) {
967 oss_device_init(dev); 967 oss_device_init(dev);
968 } else { 968 } else {
969 printk(KERN_ERR "saa7134 OSS: DMA sound is being handled by ALSA, ignoring %s\n",dev->name); 969 printk(KERN_ERR "saa7134 OSS: DMA sound is being handled by ALSA, ignoring %s\n",dev->name);
970 return -EBUSY; 970 return -EBUSY;
971 } 971 }
972 } 972 }
973 973
974 if (dev == NULL) 974 if (dev == NULL)
975 printk(KERN_INFO "saa7134 OSS: no saa7134 cards found\n"); 975 printk(KERN_INFO "saa7134 OSS: no saa7134 cards found\n");
976 976
977 dmasound_init = oss_device_init; 977 dmasound_init = oss_device_init;
978 dmasound_exit = oss_device_exit; 978 dmasound_exit = oss_device_exit;
979 979
980 return 0; 980 return 0;
981 981
982} 982}
983 983
984static void saa7134_oss_exit(void) 984static void saa7134_oss_exit(void)
985{ 985{
986 struct saa7134_dev *dev = NULL; 986 struct saa7134_dev *dev = NULL;
987 struct list_head *list; 987 struct list_head *list;
988 988
989 list_for_each(list,&saa7134_devlist) { 989 list_for_each(list,&saa7134_devlist) {
990 dev = list_entry(list, struct saa7134_dev, devlist); 990 dev = list_entry(list, struct saa7134_dev, devlist);
991 991
992 /* Device isn't registered by OSS, probably ALSA's */ 992 /* Device isn't registered by OSS, probably ALSA's */
993 if (!dev->dmasound.minor_dsp) 993 if (!dev->dmasound.minor_dsp)
994 continue; 994 continue;
995 995
996 oss_device_exit(dev); 996 oss_device_exit(dev);
997 }
998 997
999 printk(KERN_INFO "saa7134 OSS driver for DMA sound unloaded\n"); 998 }
999
1000 printk(KERN_INFO "saa7134 OSS driver for DMA sound unloaded\n");
1000 1001
1001 return; 1002 return;
1002} 1003}
1003 1004
1004module_init(saa7134_oss_init); 1005module_init(saa7134_oss_init);
diff --git a/drivers/media/video/tda9887.c b/drivers/media/video/tda9887.c
index 4249127c0a1d..2f2414e90e8b 100644
--- a/drivers/media/video/tda9887.c
+++ b/drivers/media/video/tda9887.c
@@ -12,6 +12,7 @@
12#include <media/audiochip.h> 12#include <media/audiochip.h>
13#include <media/tuner.h> 13#include <media/tuner.h>
14 14
15
15/* Chips: 16/* Chips:
16 TDA9885 (PAL, NTSC) 17 TDA9885 (PAL, NTSC)
17 TDA9886 (PAL, SECAM, NTSC) 18 TDA9886 (PAL, SECAM, NTSC)
@@ -819,12 +820,12 @@ static int tda9887_resume(struct device * dev)
819 820
820static struct i2c_driver driver = { 821static struct i2c_driver driver = {
821 .owner = THIS_MODULE, 822 .owner = THIS_MODULE,
822 .name = "i2c tda9887 driver", 823 .name = "i2c tda9887 driver",
823 .id = -1, /* FIXME */ 824 .id = -1, /* FIXME */
824 .flags = I2C_DF_NOTIFY, 825 .flags = I2C_DF_NOTIFY,
825 .attach_adapter = tda9887_probe, 826 .attach_adapter = tda9887_probe,
826 .detach_client = tda9887_detach, 827 .detach_client = tda9887_detach,
827 .command = tda9887_command, 828 .command = tda9887_command,
828 .driver = { 829 .driver = {
829 .suspend = tda9887_suspend, 830 .suspend = tda9887_suspend,
830 .resume = tda9887_resume, 831 .resume = tda9887_resume,
@@ -834,7 +835,7 @@ static struct i2c_client client_template =
834{ 835{
835 .name = "tda9887", 836 .name = "tda9887",
836 .flags = I2C_CLIENT_ALLOW_USE, 837 .flags = I2C_CLIENT_ALLOW_USE,
837 .driver = &driver, 838 .driver = &driver,
838}; 839};
839 840
840static int __init tda9887_init_module(void) 841static int __init tda9887_init_module(void)
diff --git a/drivers/media/video/tvaudio.c b/drivers/media/video/tvaudio.c
index c31bf28b73fe..5b20e8177cad 100644
--- a/drivers/media/video/tvaudio.c
+++ b/drivers/media/video/tvaudio.c
@@ -188,7 +188,7 @@ static int chip_write(struct CHIPSTATE *chip, int subaddr, int val)
188 buffer[1] = val; 188 buffer[1] = val;
189 if (2 != i2c_master_send(&chip->c,buffer,2)) { 189 if (2 != i2c_master_send(&chip->c,buffer,2)) {
190 tvaudio_warn("%s: I/O error (write reg%d=0x%x)\n", 190 tvaudio_warn("%s: I/O error (write reg%d=0x%x)\n",
191 chip->c.name, subaddr, val); 191 chip->c.name, subaddr, val);
192 return -1; 192 return -1;
193 } 193 }
194 } 194 }
@@ -216,7 +216,7 @@ static int chip_read(struct CHIPSTATE *chip)
216 chip->c.name); 216 chip->c.name);
217 return -1; 217 return -1;
218 } 218 }
219 tvaudio_dbg("%s: chip_read: 0x%x\n",chip->c.name,buffer); 219 tvaudio_dbg("%s: chip_read: 0x%x\n",chip->c.name, buffer);
220 return buffer; 220 return buffer;
221} 221}
222 222
@@ -235,7 +235,7 @@ static int chip_read2(struct CHIPSTATE *chip, int subaddr)
235 return -1; 235 return -1;
236 } 236 }
237 tvaudio_dbg("%s: chip_read2: reg%d=0x%x\n", 237 tvaudio_dbg("%s: chip_read2: reg%d=0x%x\n",
238 chip->c.name,subaddr,read[0]); 238 chip->c.name, subaddr,read[0]);
239 return read[0]; 239 return read[0];
240} 240}
241 241
@@ -248,7 +248,7 @@ static int chip_cmd(struct CHIPSTATE *chip, char *name, audiocmd *cmd)
248 248
249 /* update our shadow register set; print bytes if (debug > 0) */ 249 /* update our shadow register set; print bytes if (debug > 0) */
250 tvaudio_dbg("%s: chip_cmd(%s): reg=%d, data:", 250 tvaudio_dbg("%s: chip_cmd(%s): reg=%d, data:",
251 chip->c.name,name,cmd->bytes[0]); 251 chip->c.name, name,cmd->bytes[0]);
252 for (i = 1; i < cmd->count; i++) { 252 for (i = 1; i < cmd->count; i++) {
253 if (debug) 253 if (debug)
254 printk(" 0x%x",cmd->bytes[i]); 254 printk(" 0x%x",cmd->bytes[i]);
@@ -322,7 +322,7 @@ static void generic_checkmode(struct CHIPSTATE *chip)
322 int mode = desc->getmode(chip); 322 int mode = desc->getmode(chip);
323 323
324 if (mode == chip->prevmode) 324 if (mode == chip->prevmode)
325 return; 325 return;
326 326
327 tvaudio_dbg("%s: thread checkmode\n", chip->c.name); 327 tvaudio_dbg("%s: thread checkmode\n", chip->c.name);
328 chip->prevmode = mode; 328 chip->prevmode = mode;
@@ -1506,18 +1506,18 @@ static int chip_attach(struct i2c_adapter *adap, int addr, int kind)
1506 return -EIO; 1506 return -EIO;
1507 } 1507 }
1508 tvaudio_info("%s found @ 0x%x (%s)\n", desc->name, addr<<1, adap->name); 1508 tvaudio_info("%s found @ 0x%x (%s)\n", desc->name, addr<<1, adap->name);
1509 if (desc->flags) { 1509 if (desc->flags) {
1510 tvaudio_dbg("matches:%s%s%s.\n", 1510 tvaudio_dbg("matches:%s%s%s.\n",
1511 (desc->flags & CHIP_HAS_VOLUME) ? " volume" : "", 1511 (desc->flags & CHIP_HAS_VOLUME) ? " volume" : "",
1512 (desc->flags & CHIP_HAS_BASSTREBLE) ? " bass/treble" : "", 1512 (desc->flags & CHIP_HAS_BASSTREBLE) ? " bass/treble" : "",
1513 (desc->flags & CHIP_HAS_INPUTSEL) ? " audiomux" : ""); 1513 (desc->flags & CHIP_HAS_INPUTSEL) ? " audiomux" : "");
1514 } 1514 }
1515 1515
1516 /* fill required data structures */ 1516 /* fill required data structures */
1517 strcpy(chip->c.name,desc->name); 1517 strcpy(chip->c.name, desc->name);
1518 chip->type = desc-chiplist; 1518 chip->type = desc-chiplist;
1519 chip->shadow.count = desc->registers+1; 1519 chip->shadow.count = desc->registers+1;
1520 chip->prevmode = -1; 1520 chip->prevmode = -1;
1521 /* register */ 1521 /* register */
1522 i2c_attach_client(&chip->c); 1522 i2c_attach_client(&chip->c);
1523 1523
@@ -1604,7 +1604,7 @@ static int chip_command(struct i2c_client *client,
1604 struct CHIPSTATE *chip = i2c_get_clientdata(client); 1604 struct CHIPSTATE *chip = i2c_get_clientdata(client);
1605 struct CHIPDESC *desc = chiplist + chip->type; 1605 struct CHIPDESC *desc = chiplist + chip->type;
1606 1606
1607 tvaudio_dbg("%s: chip_command 0x%x\n",chip->c.name,cmd); 1607 tvaudio_dbg("%s: chip_command 0x%x\n", chip->c.name, cmd);
1608 1608
1609 switch (cmd) { 1609 switch (cmd) {
1610 case AUDC_SET_INPUT: 1610 case AUDC_SET_INPUT:
@@ -1624,7 +1624,7 @@ static int chip_command(struct i2c_client *client,
1624 1624
1625 /* --- v4l ioctls --- */ 1625 /* --- v4l ioctls --- */
1626 /* take care: bttv does userspace copying, we'll get a 1626 /* take care: bttv does userspace copying, we'll get a
1627 kernel pointer here... */ 1627 kernel pointer here... */
1628 case VIDIOCGAUDIO: 1628 case VIDIOCGAUDIO:
1629 { 1629 {
1630 struct video_audio *va = arg; 1630 struct video_audio *va = arg;
diff --git a/drivers/media/video/tveeprom.c b/drivers/media/video/tveeprom.c
index d95aecebbda3..5ac235365dd8 100644
--- a/drivers/media/video/tveeprom.c
+++ b/drivers/media/video/tveeprom.c
@@ -206,7 +206,7 @@ hauppauge_tuner[] =
206 { TUNER_ABSENT, "TCL 2002MI_3H"}, 206 { TUNER_ABSENT, "TCL 2002MI_3H"},
207 { TUNER_TCL_2002N, "TCL 2002N 5H"}, 207 { TUNER_TCL_2002N, "TCL 2002N 5H"},
208 /* 100-109 */ 208 /* 100-109 */
209 { TUNER_ABSENT, "Philips FMD1216ME"}, 209 { TUNER_PHILIPS_FMD1216ME_MK3, "Philips FMD1216ME"},
210 { TUNER_TEA5767, "Philips TEA5768HL FM Radio"}, 210 { TUNER_TEA5767, "Philips TEA5768HL FM Radio"},
211 { TUNER_ABSENT, "Panasonic ENV57H12D5"}, 211 { TUNER_ABSENT, "Panasonic ENV57H12D5"},
212 { TUNER_PHILIPS_FM1236_MK3, "TCL MFNM05-4"}, 212 { TUNER_PHILIPS_FM1236_MK3, "TCL MFNM05-4"},
@@ -753,7 +753,8 @@ tveeprom_detect_client(struct i2c_adapter *adapter,
753 client->driver = &i2c_driver_tveeprom; 753 client->driver = &i2c_driver_tveeprom;
754 client->flags = I2C_CLIENT_ALLOW_USE; 754 client->flags = I2C_CLIENT_ALLOW_USE;
755 snprintf(client->name, sizeof(client->name), "tveeprom"); 755 snprintf(client->name, sizeof(client->name), "tveeprom");
756 i2c_attach_client(client); 756 i2c_attach_client(client);
757
757 return 0; 758 return 0;
758} 759}
759 760
diff --git a/drivers/media/video/tvp5150.c b/drivers/media/video/tvp5150.c
index 81e6d4494e7d..97431e26d229 100644
--- a/drivers/media/video/tvp5150.c
+++ b/drivers/media/video/tvp5150.c
@@ -31,7 +31,7 @@ MODULE_PARM_DESC(debug, "Debug level (0-1)");
31#define dprintk(num, format, args...) \ 31#define dprintk(num, format, args...) \
32 do { \ 32 do { \
33 if (debug >= num) \ 33 if (debug >= num) \
34 printk(format , ##args); \ 34 printk(format, ##args); \
35 } while (0) 35 } while (0)
36 36
37/* supported controls */ 37/* supported controls */
@@ -770,7 +770,6 @@ static int tvp5150_detect_client(struct i2c_adapter *adapter,
770 770
771 if (debug > 1) 771 if (debug > 1)
772 dump_reg(client); 772 dump_reg(client);
773
774 return 0; 773 return 0;
775} 774}
776 775
diff --git a/drivers/media/video/video-buf-dvb.c b/drivers/media/video/video-buf-dvb.c
index 55f129e964eb..0a4004a4393c 100644
--- a/drivers/media/video/video-buf-dvb.c
+++ b/drivers/media/video/video-buf-dvb.c
@@ -13,6 +13,7 @@
13 * (at your option) any later version. 13 * (at your option) any later version.
14 */ 14 */
15 15
16
16#include <linux/module.h> 17#include <linux/module.h>
17#include <linux/init.h> 18#include <linux/init.h>
18#include <linux/device.h> 19#include <linux/device.h>
@@ -247,3 +248,4 @@ EXPORT_SYMBOL(videobuf_dvb_unregister);
247 * compile-command: "make DVB=1" 248 * compile-command: "make DVB=1"
248 * End: 249 * End:
249 */ 250 */
251
diff --git a/drivers/message/i2o/pci.c b/drivers/message/i2o/pci.c
index 81ef306cb124..ee7075fa1ec3 100644
--- a/drivers/message/i2o/pci.c
+++ b/drivers/message/i2o/pci.c
@@ -303,6 +303,7 @@ static int __devinit i2o_pci_probe(struct pci_dev *pdev,
303 struct i2o_controller *c; 303 struct i2o_controller *c;
304 int rc; 304 int rc;
305 struct pci_dev *i960 = NULL; 305 struct pci_dev *i960 = NULL;
306 int pci_dev_busy = 0;
306 307
307 printk(KERN_INFO "i2o: Checking for PCI I2O controllers...\n"); 308 printk(KERN_INFO "i2o: Checking for PCI I2O controllers...\n");
308 309
@@ -395,6 +396,8 @@ static int __devinit i2o_pci_probe(struct pci_dev *pdev,
395 if ((rc = i2o_pci_alloc(c))) { 396 if ((rc = i2o_pci_alloc(c))) {
396 printk(KERN_ERR "%s: DMA / IO allocation for I2O controller " 397 printk(KERN_ERR "%s: DMA / IO allocation for I2O controller "
397 " failed\n", c->name); 398 " failed\n", c->name);
399 if (rc == -ENODEV)
400 pci_dev_busy = 1;
398 goto free_controller; 401 goto free_controller;
399 } 402 }
400 403
@@ -425,7 +428,8 @@ static int __devinit i2o_pci_probe(struct pci_dev *pdev,
425 i2o_iop_free(c); 428 i2o_iop_free(c);
426 429
427 disable: 430 disable:
428 pci_disable_device(pdev); 431 if (!pci_dev_busy)
432 pci_disable_device(pdev);
429 433
430 return rc; 434 return rc;
431} 435}
diff --git a/drivers/mfd/ucb1x00-ts.c b/drivers/mfd/ucb1x00-ts.c
index a984c0efabf0..551061c2eadf 100644
--- a/drivers/mfd/ucb1x00-ts.c
+++ b/drivers/mfd/ucb1x00-ts.c
@@ -59,16 +59,18 @@ static int adcsync;
59 59
60static inline void ucb1x00_ts_evt_add(struct ucb1x00_ts *ts, u16 pressure, u16 x, u16 y) 60static inline void ucb1x00_ts_evt_add(struct ucb1x00_ts *ts, u16 pressure, u16 x, u16 y)
61{ 61{
62 input_report_abs(ts->idev, ABS_X, x); 62 struct input_dev *idev = ts->idev;
63 input_report_abs(ts->idev, ABS_Y, y); 63 input_report_abs(idev, ABS_X, x);
64 input_report_abs(ts->idev, ABS_PRESSURE, pressure); 64 input_report_abs(idev, ABS_Y, y);
65 input_sync(ts->idev); 65 input_report_abs(idev, ABS_PRESSURE, pressure);
66 input_sync(idev);
66} 67}
67 68
68static inline void ucb1x00_ts_event_release(struct ucb1x00_ts *ts) 69static inline void ucb1x00_ts_event_release(struct ucb1x00_ts *ts)
69{ 70{
70 input_report_abs(ts->idev, ABS_PRESSURE, 0); 71 struct input_dev *idev = ts->idev;
71 input_sync(ts->idev); 72 input_report_abs(idev, ABS_PRESSURE, 0);
73 input_sync(idev);
72} 74}
73 75
74/* 76/*
@@ -297,7 +299,7 @@ static void ucb1x00_ts_irq(int idx, void *id)
297 299
298static int ucb1x00_ts_open(struct input_dev *idev) 300static int ucb1x00_ts_open(struct input_dev *idev)
299{ 301{
300 struct ucb1x00_ts *ts = (struct ucb1x00_ts *)idev; 302 struct ucb1x00_ts *ts = idev->private;
301 int ret = 0; 303 int ret = 0;
302 304
303 BUG_ON(ts->rtask); 305 BUG_ON(ts->rtask);
@@ -334,7 +336,7 @@ static int ucb1x00_ts_open(struct input_dev *idev)
334 */ 336 */
335static void ucb1x00_ts_close(struct input_dev *idev) 337static void ucb1x00_ts_close(struct input_dev *idev)
336{ 338{
337 struct ucb1x00_ts *ts = (struct ucb1x00_ts *)idev; 339 struct ucb1x00_ts *ts = idev->private;
338 340
339 if (ts->rtask) 341 if (ts->rtask)
340 kthread_stop(ts->rtask); 342 kthread_stop(ts->rtask);
@@ -386,6 +388,7 @@ static int ucb1x00_ts_add(struct ucb1x00_dev *dev)
386 ts->ucb = dev->ucb; 388 ts->ucb = dev->ucb;
387 ts->adcsync = adcsync ? UCB_SYNC : UCB_NOSYNC; 389 ts->adcsync = adcsync ? UCB_SYNC : UCB_NOSYNC;
388 390
391 ts->idev->private = ts;
389 ts->idev->name = "Touchscreen panel"; 392 ts->idev->name = "Touchscreen panel";
390 ts->idev->id.product = ts->ucb->id; 393 ts->idev->id.product = ts->ucb->id;
391 ts->idev->open = ucb1x00_ts_open; 394 ts->idev->open = ucb1x00_ts_open;
diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
index d336a1d65dc7..eb41391e06e9 100644
--- a/drivers/mmc/mmc.c
+++ b/drivers/mmc/mmc.c
@@ -679,7 +679,15 @@ static void mmc_idle_cards(struct mmc_host *host)
679} 679}
680 680
681/* 681/*
682 * Apply power to the MMC stack. 682 * Apply power to the MMC stack. This is a two-stage process.
683 * First, we enable power to the card without the clock running.
684 * We then wait a bit for the power to stabilise. Finally,
685 * enable the bus drivers and clock to the card.
686 *
687 * We must _NOT_ enable the clock prior to power stablising.
688 *
689 * If a host does all the power sequencing itself, ignore the
690 * initial MMC_POWER_UP stage.
683 */ 691 */
684static void mmc_power_up(struct mmc_host *host) 692static void mmc_power_up(struct mmc_host *host)
685{ 693{
@@ -932,8 +940,9 @@ static void mmc_read_scrs(struct mmc_host *host)
932 940
933 sg_init_one(&sg, (u8*)card->raw_scr, 8); 941 sg_init_one(&sg, (u8*)card->raw_scr, 8);
934 942
935 err = mmc_wait_for_req(host, &mrq); 943 mmc_wait_for_req(host, &mrq);
936 if (err != MMC_ERR_NONE) { 944
945 if (cmd.error != MMC_ERR_NONE || data.error != MMC_ERR_NONE) {
937 mmc_card_set_dead(card); 946 mmc_card_set_dead(card);
938 continue; 947 continue;
939 } 948 }
diff --git a/drivers/mtd/devices/blkmtd.c b/drivers/mtd/devices/blkmtd.c
index f9db52f6bf00..04f864d238db 100644
--- a/drivers/mtd/devices/blkmtd.c
+++ b/drivers/mtd/devices/blkmtd.c
@@ -113,7 +113,7 @@ static int bi_write_complete(struct bio *bio, unsigned int bytes_done, int error
113 ClearPageUptodate(page); 113 ClearPageUptodate(page);
114 SetPageError(page); 114 SetPageError(page);
115 } 115 }
116 ClearPageDirty(page); 116 clear_page_dirty(page);
117 unlock_page(page); 117 unlock_page(page);
118 page_cache_release(page); 118 page_cache_release(page);
119 } while (bvec >= bio->bi_io_vec); 119 } while (bvec >= bio->bi_io_vec);
@@ -289,7 +289,7 @@ static int write_pages(struct blkmtd_dev *dev, const u_char *buf, loff_t to,
289 BUG(); 289 BUG();
290 } 290 }
291 memcpy(page_address(page)+offset, buf, start_len); 291 memcpy(page_address(page)+offset, buf, start_len);
292 SetPageDirty(page); 292 set_page_dirty(page);
293 SetPageUptodate(page); 293 SetPageUptodate(page);
294 buf += start_len; 294 buf += start_len;
295 thislen = start_len; 295 thislen = start_len;
@@ -336,7 +336,7 @@ static int write_pages(struct blkmtd_dev *dev, const u_char *buf, loff_t to,
336 } 336 }
337 pagenr++; 337 pagenr++;
338 pagecnt--; 338 pagecnt--;
339 SetPageDirty(page); 339 set_page_dirty(page);
340 SetPageUptodate(page); 340 SetPageUptodate(page);
341 pagesc--; 341 pagesc--;
342 thislen += PAGE_SIZE; 342 thislen += PAGE_SIZE;
@@ -357,7 +357,7 @@ static int write_pages(struct blkmtd_dev *dev, const u_char *buf, loff_t to,
357 BUG(); 357 BUG();
358 } 358 }
359 memcpy(page_address(page), buf, end_len); 359 memcpy(page_address(page), buf, end_len);
360 SetPageDirty(page); 360 set_page_dirty(page);
361 SetPageUptodate(page); 361 SetPageUptodate(page);
362 DEBUG(3, "blkmtd: write: writing out partial end\n"); 362 DEBUG(3, "blkmtd: write: writing out partial end\n");
363 thislen += end_len; 363 thislen += end_len;
diff --git a/drivers/mtd/onenand/generic.c b/drivers/mtd/onenand/generic.c
index 48cce431f89f..45c077d0f063 100644
--- a/drivers/mtd/onenand/generic.c
+++ b/drivers/mtd/onenand/generic.c
@@ -12,9 +12,9 @@
12 * This is a device driver for the OneNAND flash for generic boards. 12 * This is a device driver for the OneNAND flash for generic boards.
13 */ 13 */
14 14
15#include <linux/device.h>
16#include <linux/module.h> 15#include <linux/module.h>
17#include <linux/init.h> 16#include <linux/init.h>
17#include <linux/platform_device.h>
18#include <linux/mtd/mtd.h> 18#include <linux/mtd/mtd.h>
19#include <linux/mtd/onenand.h> 19#include <linux/mtd/onenand.h>
20#include <linux/mtd/partitions.h> 20#include <linux/mtd/partitions.h>
@@ -39,7 +39,7 @@ static int __devinit generic_onenand_probe(struct device *dev)
39{ 39{
40 struct onenand_info *info; 40 struct onenand_info *info;
41 struct platform_device *pdev = to_platform_device(dev); 41 struct platform_device *pdev = to_platform_device(dev);
42 struct onenand_platform_data *pdata = pdev->dev.platform_data; 42 struct flash_platform_data *pdata = pdev->dev.platform_data;
43 struct resource *res = pdev->resource; 43 struct resource *res = pdev->resource;
44 unsigned long size = res->end - res->start + 1; 44 unsigned long size = res->end - res->start + 1;
45 int err; 45 int err;
diff --git a/drivers/mtd/onenand/onenand_base.c b/drivers/mtd/onenand/onenand_base.c
index f67d5d6eb9a6..a53a73fc2a5a 100644
--- a/drivers/mtd/onenand/onenand_base.c
+++ b/drivers/mtd/onenand/onenand_base.c
@@ -940,7 +940,7 @@ static int onenand_writev_ecc(struct mtd_info *mtd, const struct kvec *vecs,
940 u_char *eccbuf, struct nand_oobinfo *oobsel) 940 u_char *eccbuf, struct nand_oobinfo *oobsel)
941{ 941{
942 struct onenand_chip *this = mtd->priv; 942 struct onenand_chip *this = mtd->priv;
943 unsigned char buffer[MAX_ONENAND_PAGESIZE], *pbuf; 943 unsigned char *pbuf;
944 size_t total_len, len; 944 size_t total_len, len;
945 int i, written = 0; 945 int i, written = 0;
946 int ret = 0; 946 int ret = 0;
@@ -975,7 +975,7 @@ static int onenand_writev_ecc(struct mtd_info *mtd, const struct kvec *vecs,
975 /* Loop until all keve's data has been written */ 975 /* Loop until all keve's data has been written */
976 len = 0; 976 len = 0;
977 while (count) { 977 while (count) {
978 pbuf = buffer; 978 pbuf = this->page_buf;
979 /* 979 /*
980 * If the given tuple is >= pagesize then 980 * If the given tuple is >= pagesize then
981 * write it out from the iov 981 * write it out from the iov
@@ -995,7 +995,7 @@ static int onenand_writev_ecc(struct mtd_info *mtd, const struct kvec *vecs,
995 int cnt = 0, thislen; 995 int cnt = 0, thislen;
996 while (cnt < mtd->oobblock) { 996 while (cnt < mtd->oobblock) {
997 thislen = min_t(int, mtd->oobblock - cnt, vecs->iov_len - len); 997 thislen = min_t(int, mtd->oobblock - cnt, vecs->iov_len - len);
998 memcpy(buffer + cnt, vecs->iov_base + len, thislen); 998 memcpy(this->page_buf + cnt, vecs->iov_base + len, thislen);
999 cnt += thislen; 999 cnt += thislen;
1000 len += thislen; 1000 len += thislen;
1001 1001
@@ -1296,6 +1296,12 @@ static int onenand_unlock(struct mtd_info *mtd, loff_t ofs, size_t len)
1296 1296
1297 /* Block lock scheme */ 1297 /* Block lock scheme */
1298 for (block = start; block < end; block++) { 1298 for (block = start; block < end; block++) {
1299 /* Set block address */
1300 value = onenand_block_address(this, block);
1301 this->write_word(value, this->base + ONENAND_REG_START_ADDRESS1);
1302 /* Select DataRAM for DDP */
1303 value = onenand_bufferram_address(this, block);
1304 this->write_word(value, this->base + ONENAND_REG_START_ADDRESS2);
1299 /* Set start block address */ 1305 /* Set start block address */
1300 this->write_word(block, this->base + ONENAND_REG_START_BLOCK_ADDRESS); 1306 this->write_word(block, this->base + ONENAND_REG_START_BLOCK_ADDRESS);
1301 /* Write unlock command */ 1307 /* Write unlock command */
@@ -1309,10 +1315,6 @@ static int onenand_unlock(struct mtd_info *mtd, loff_t ofs, size_t len)
1309 & ONENAND_CTRL_ONGO) 1315 & ONENAND_CTRL_ONGO)
1310 continue; 1316 continue;
1311 1317
1312 /* Set block address for read block status */
1313 value = onenand_block_address(this, block);
1314 this->write_word(value, this->base + ONENAND_REG_START_ADDRESS1);
1315
1316 /* Check lock status */ 1318 /* Check lock status */
1317 status = this->read_word(this->base + ONENAND_REG_WP_STATUS); 1319 status = this->read_word(this->base + ONENAND_REG_WP_STATUS);
1318 if (!(status & ONENAND_WP_US)) 1320 if (!(status & ONENAND_WP_US))
@@ -1346,7 +1348,6 @@ static void onenand_print_device_info(int device)
1346 1348
1347static const struct onenand_manufacturers onenand_manuf_ids[] = { 1349static const struct onenand_manufacturers onenand_manuf_ids[] = {
1348 {ONENAND_MFR_SAMSUNG, "Samsung"}, 1350 {ONENAND_MFR_SAMSUNG, "Samsung"},
1349 {ONENAND_MFR_UNKNOWN, "Unknown"}
1350}; 1351};
1351 1352
1352/** 1353/**
@@ -1357,17 +1358,22 @@ static const struct onenand_manufacturers onenand_manuf_ids[] = {
1357 */ 1358 */
1358static int onenand_check_maf(int manuf) 1359static int onenand_check_maf(int manuf)
1359{ 1360{
1361 int size = ARRAY_SIZE(onenand_manuf_ids);
1362 char *name;
1360 int i; 1363 int i;
1361 1364
1362 for (i = 0; onenand_manuf_ids[i].id; i++) { 1365 for (i = 0; i < size; i++)
1363 if (manuf == onenand_manuf_ids[i].id) 1366 if (manuf == onenand_manuf_ids[i].id)
1364 break; 1367 break;
1365 }
1366 1368
1367 printk(KERN_DEBUG "OneNAND Manufacturer: %s (0x%0x)\n", 1369 if (i < size)
1368 onenand_manuf_ids[i].name, manuf); 1370 name = onenand_manuf_ids[i].name;
1371 else
1372 name = "Unknown";
1373
1374 printk(KERN_DEBUG "OneNAND Manufacturer: %s (0x%0x)\n", name, manuf);
1369 1375
1370 return (i != ONENAND_MFR_UNKNOWN); 1376 return (i == size);
1371} 1377}
1372 1378
1373/** 1379/**
@@ -1513,6 +1519,18 @@ int onenand_scan(struct mtd_info *mtd, int maxchips)
1513 this->read_bufferram = onenand_sync_read_bufferram; 1519 this->read_bufferram = onenand_sync_read_bufferram;
1514 } 1520 }
1515 1521
1522 /* Allocate buffers, if necessary */
1523 if (!this->page_buf) {
1524 size_t len;
1525 len = mtd->oobblock + mtd->oobsize;
1526 this->page_buf = kmalloc(len, GFP_KERNEL);
1527 if (!this->page_buf) {
1528 printk(KERN_ERR "onenand_scan(): Can't allocate page_buf\n");
1529 return -ENOMEM;
1530 }
1531 this->options |= ONENAND_PAGEBUF_ALLOC;
1532 }
1533
1516 this->state = FL_READY; 1534 this->state = FL_READY;
1517 init_waitqueue_head(&this->wq); 1535 init_waitqueue_head(&this->wq);
1518 spin_lock_init(&this->chip_lock); 1536 spin_lock_init(&this->chip_lock);
@@ -1574,12 +1592,21 @@ int onenand_scan(struct mtd_info *mtd, int maxchips)
1574 */ 1592 */
1575void onenand_release(struct mtd_info *mtd) 1593void onenand_release(struct mtd_info *mtd)
1576{ 1594{
1595 struct onenand_chip *this = mtd->priv;
1596
1577#ifdef CONFIG_MTD_PARTITIONS 1597#ifdef CONFIG_MTD_PARTITIONS
1578 /* Deregister partitions */ 1598 /* Deregister partitions */
1579 del_mtd_partitions (mtd); 1599 del_mtd_partitions (mtd);
1580#endif 1600#endif
1581 /* Deregister the device */ 1601 /* Deregister the device */
1582 del_mtd_device (mtd); 1602 del_mtd_device (mtd);
1603
1604 /* Free bad block table memory, if allocated */
1605 if (this->bbm)
1606 kfree(this->bbm);
1607 /* Buffer allocated by onenand_scan */
1608 if (this->options & ONENAND_PAGEBUF_ALLOC)
1609 kfree(this->page_buf);
1583} 1610}
1584 1611
1585EXPORT_SYMBOL_GPL(onenand_scan); 1612EXPORT_SYMBOL_GPL(onenand_scan);
diff --git a/drivers/mtd/onenand/onenand_bbt.c b/drivers/mtd/onenand/onenand_bbt.c
index f40190f499e1..4510d3361eaa 100644
--- a/drivers/mtd/onenand/onenand_bbt.c
+++ b/drivers/mtd/onenand/onenand_bbt.c
@@ -118,10 +118,10 @@ static int create_bbt(struct mtd_info *mtd, uint8_t *buf, struct nand_bbt_descr
118 */ 118 */
119static inline int onenand_memory_bbt (struct mtd_info *mtd, struct nand_bbt_descr *bd) 119static inline int onenand_memory_bbt (struct mtd_info *mtd, struct nand_bbt_descr *bd)
120{ 120{
121 unsigned char data_buf[MAX_ONENAND_PAGESIZE]; 121 struct onenand_chip *this = mtd->priv;
122 122
123 bd->options &= ~NAND_BBT_SCANEMPTY; 123 bd->options &= ~NAND_BBT_SCANEMPTY;
124 return create_bbt(mtd, data_buf, bd, -1); 124 return create_bbt(mtd, this->page_buf, bd, -1);
125} 125}
126 126
127/** 127/**
diff --git a/drivers/net/pcnet32.c b/drivers/net/pcnet32.c
index be319229f543..8f6cf8c896a4 100644
--- a/drivers/net/pcnet32.c
+++ b/drivers/net/pcnet32.c
@@ -1251,12 +1251,7 @@ pcnet32_probe1(unsigned long ioaddr, int shared, struct pci_dev *pdev)
1251 1251
1252 if (memcmp(promaddr, dev->dev_addr, 6) 1252 if (memcmp(promaddr, dev->dev_addr, 6)
1253 || !is_valid_ether_addr(dev->dev_addr)) { 1253 || !is_valid_ether_addr(dev->dev_addr)) {
1254#ifndef __powerpc__
1255 if (is_valid_ether_addr(promaddr)) { 1254 if (is_valid_ether_addr(promaddr)) {
1256#else
1257 if (!is_valid_ether_addr(dev->dev_addr)
1258 && is_valid_ether_addr(promaddr)) {
1259#endif
1260 if (pcnet32_debug & NETIF_MSG_PROBE) { 1255 if (pcnet32_debug & NETIF_MSG_PROBE) {
1261 printk(" warning: CSR address invalid,\n"); 1256 printk(" warning: CSR address invalid,\n");
1262 printk(KERN_INFO " using instead PROM address of"); 1257 printk(KERN_INFO " using instead PROM address of");
diff --git a/drivers/net/s2io.c b/drivers/net/s2io.c
index e57df8dfe6b4..669dd52c412a 100644
--- a/drivers/net/s2io.c
+++ b/drivers/net/s2io.c
@@ -3078,7 +3078,7 @@ int s2io_set_swapper(nic_t * sp)
3078 3078
3079static int wait_for_msix_trans(nic_t *nic, int i) 3079static int wait_for_msix_trans(nic_t *nic, int i)
3080{ 3080{
3081 XENA_dev_config_t *bar0 = (XENA_dev_config_t *) nic->bar0; 3081 XENA_dev_config_t __iomem *bar0 = nic->bar0;
3082 u64 val64; 3082 u64 val64;
3083 int ret = 0, cnt = 0; 3083 int ret = 0, cnt = 0;
3084 3084
@@ -3099,7 +3099,7 @@ static int wait_for_msix_trans(nic_t *nic, int i)
3099 3099
3100void restore_xmsi_data(nic_t *nic) 3100void restore_xmsi_data(nic_t *nic)
3101{ 3101{
3102 XENA_dev_config_t *bar0 = (XENA_dev_config_t *) nic->bar0; 3102 XENA_dev_config_t __iomem *bar0 = nic->bar0;
3103 u64 val64; 3103 u64 val64;
3104 int i; 3104 int i;
3105 3105
@@ -3117,7 +3117,7 @@ void restore_xmsi_data(nic_t *nic)
3117 3117
3118static void store_xmsi_data(nic_t *nic) 3118static void store_xmsi_data(nic_t *nic)
3119{ 3119{
3120 XENA_dev_config_t *bar0 = (XENA_dev_config_t *) nic->bar0; 3120 XENA_dev_config_t __iomem *bar0 = nic->bar0;
3121 u64 val64, addr, data; 3121 u64 val64, addr, data;
3122 int i; 3122 int i;
3123 3123
@@ -3140,7 +3140,7 @@ static void store_xmsi_data(nic_t *nic)
3140 3140
3141int s2io_enable_msi(nic_t *nic) 3141int s2io_enable_msi(nic_t *nic)
3142{ 3142{
3143 XENA_dev_config_t *bar0 = (XENA_dev_config_t *) nic->bar0; 3143 XENA_dev_config_t __iomem *bar0 = nic->bar0;
3144 u16 msi_ctrl, msg_val; 3144 u16 msi_ctrl, msg_val;
3145 struct config_param *config = &nic->config; 3145 struct config_param *config = &nic->config;
3146 struct net_device *dev = nic->dev; 3146 struct net_device *dev = nic->dev;
@@ -3190,7 +3190,7 @@ int s2io_enable_msi(nic_t *nic)
3190 3190
3191int s2io_enable_msi_x(nic_t *nic) 3191int s2io_enable_msi_x(nic_t *nic)
3192{ 3192{
3193 XENA_dev_config_t *bar0 = (XENA_dev_config_t *) nic->bar0; 3193 XENA_dev_config_t __iomem *bar0 = nic->bar0;
3194 u64 tx_mat, rx_mat; 3194 u64 tx_mat, rx_mat;
3195 u16 msi_control; /* Temp variable */ 3195 u16 msi_control; /* Temp variable */
3196 int ret, i, j, msix_indx = 1; 3196 int ret, i, j, msix_indx = 1;
diff --git a/drivers/net/sk98lin/skge.c b/drivers/net/sk98lin/skge.c
index 00c5d7f04c68..ae7343934758 100644
--- a/drivers/net/sk98lin/skge.c
+++ b/drivers/net/sk98lin/skge.c
@@ -818,7 +818,7 @@ uintptr_t VNextDescr; /* the virtual bus address of the next descriptor */
818 /* set the pointers right */ 818 /* set the pointers right */
819 pDescr->VNextRxd = VNextDescr & 0xffffffffULL; 819 pDescr->VNextRxd = VNextDescr & 0xffffffffULL;
820 pDescr->pNextRxd = pNextDescr; 820 pDescr->pNextRxd = pNextDescr;
821 pDescr->TcpSumStarts = 0; 821 if (!IsTx) pDescr->TcpSumStarts = ETH_HLEN << 16 | ETH_HLEN;
822 822
823 /* advance one step */ 823 /* advance one step */
824 pPrevDescr = pDescr; 824 pPrevDescr = pDescr;
@@ -2169,7 +2169,7 @@ rx_start:
2169 } /* frame > SK_COPY_TRESHOLD */ 2169 } /* frame > SK_COPY_TRESHOLD */
2170 2170
2171#ifdef USE_SK_RX_CHECKSUM 2171#ifdef USE_SK_RX_CHECKSUM
2172 pMsg->csum = pRxd->TcpSums; 2172 pMsg->csum = pRxd->TcpSums & 0xffff;
2173 pMsg->ip_summed = CHECKSUM_HW; 2173 pMsg->ip_summed = CHECKSUM_HW;
2174#else 2174#else
2175 pMsg->ip_summed = CHECKSUM_NONE; 2175 pMsg->ip_summed = CHECKSUM_NONE;
diff --git a/drivers/net/skge.c b/drivers/net/skge.c
index 716467879b9c..00d683063c01 100644
--- a/drivers/net/skge.c
+++ b/drivers/net/skge.c
@@ -2280,11 +2280,13 @@ static int skge_xmit_frame(struct sk_buff *skb, struct net_device *dev)
2280 } 2280 }
2281 2281
2282 if (unlikely(skge->tx_avail < skb_shinfo(skb)->nr_frags +1)) { 2282 if (unlikely(skge->tx_avail < skb_shinfo(skb)->nr_frags +1)) {
2283 netif_stop_queue(dev); 2283 if (!netif_queue_stopped(dev)) {
2284 spin_unlock_irqrestore(&skge->tx_lock, flags); 2284 netif_stop_queue(dev);
2285 2285
2286 printk(KERN_WARNING PFX "%s: ring full when queue awake!\n", 2286 printk(KERN_WARNING PFX "%s: ring full when queue awake!\n",
2287 dev->name); 2287 dev->name);
2288 }
2289 spin_unlock_irqrestore(&skge->tx_lock, flags);
2288 return NETDEV_TX_BUSY; 2290 return NETDEV_TX_BUSY;
2289 } 2291 }
2290 2292
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c
index 1828a6bf8458..cefb0c08a68d 100644
--- a/drivers/net/tg3.c
+++ b/drivers/net/tg3.c
@@ -68,8 +68,8 @@
68 68
69#define DRV_MODULE_NAME "tg3" 69#define DRV_MODULE_NAME "tg3"
70#define PFX DRV_MODULE_NAME ": " 70#define PFX DRV_MODULE_NAME ": "
71#define DRV_MODULE_VERSION "3.43" 71#define DRV_MODULE_VERSION "3.46"
72#define DRV_MODULE_RELDATE "Oct 24, 2005" 72#define DRV_MODULE_RELDATE "Dec 19, 2005"
73 73
74#define TG3_DEF_MAC_MODE 0 74#define TG3_DEF_MAC_MODE 0
75#define TG3_DEF_RX_MODE 0 75#define TG3_DEF_RX_MODE 0
@@ -341,6 +341,16 @@ static struct {
341 { "interrupt test (offline)" }, 341 { "interrupt test (offline)" },
342}; 342};
343 343
344static void tg3_write32(struct tg3 *tp, u32 off, u32 val)
345{
346 writel(val, tp->regs + off);
347}
348
349static u32 tg3_read32(struct tg3 *tp, u32 off)
350{
351 return (readl(tp->regs + off));
352}
353
344static void tg3_write_indirect_reg32(struct tg3 *tp, u32 off, u32 val) 354static void tg3_write_indirect_reg32(struct tg3 *tp, u32 off, u32 val)
345{ 355{
346 unsigned long flags; 356 unsigned long flags;
@@ -411,13 +421,29 @@ static u32 tg3_read_indirect_mbox(struct tg3 *tp, u32 off)
411 return val; 421 return val;
412} 422}
413 423
414static void _tw32_flush(struct tg3 *tp, u32 off, u32 val) 424/* usec_wait specifies the wait time in usec when writing to certain registers
425 * where it is unsafe to read back the register without some delay.
426 * GRC_LOCAL_CTRL is one example if the GPIOs are toggled to switch power.
427 * TG3PCI_CLOCK_CTRL is another example if the clock frequencies are changed.
428 */
429static void _tw32_flush(struct tg3 *tp, u32 off, u32 val, u32 usec_wait)
415{ 430{
416 tp->write32(tp, off, val); 431 if ((tp->tg3_flags & TG3_FLAG_PCIX_TARGET_HWBUG) ||
417 if (!(tp->tg3_flags & TG3_FLAG_PCIX_TARGET_HWBUG) && 432 (tp->tg3_flags2 & TG3_FLG2_ICH_WORKAROUND))
418 !(tp->tg3_flags & TG3_FLAG_5701_REG_WRITE_BUG) && 433 /* Non-posted methods */
419 !(tp->tg3_flags2 & TG3_FLG2_ICH_WORKAROUND)) 434 tp->write32(tp, off, val);
420 tp->read32(tp, off); /* flush */ 435 else {
436 /* Posted method */
437 tg3_write32(tp, off, val);
438 if (usec_wait)
439 udelay(usec_wait);
440 tp->read32(tp, off);
441 }
442 /* Wait again after the read for the posted method to guarantee that
443 * the wait time is met.
444 */
445 if (usec_wait)
446 udelay(usec_wait);
421} 447}
422 448
423static inline void tw32_mailbox_flush(struct tg3 *tp, u32 off, u32 val) 449static inline void tw32_mailbox_flush(struct tg3 *tp, u32 off, u32 val)
@@ -438,16 +464,6 @@ static void tg3_write32_tx_mbox(struct tg3 *tp, u32 off, u32 val)
438 readl(mbox); 464 readl(mbox);
439} 465}
440 466
441static void tg3_write32(struct tg3 *tp, u32 off, u32 val)
442{
443 writel(val, tp->regs + off);
444}
445
446static u32 tg3_read32(struct tg3 *tp, u32 off)
447{
448 return (readl(tp->regs + off));
449}
450
451#define tw32_mailbox(reg, val) tp->write32_mbox(tp, reg, val) 467#define tw32_mailbox(reg, val) tp->write32_mbox(tp, reg, val)
452#define tw32_mailbox_f(reg, val) tw32_mailbox_flush(tp, (reg), (val)) 468#define tw32_mailbox_f(reg, val) tw32_mailbox_flush(tp, (reg), (val))
453#define tw32_rx_mbox(reg, val) tp->write32_rx_mbox(tp, reg, val) 469#define tw32_rx_mbox(reg, val) tp->write32_rx_mbox(tp, reg, val)
@@ -455,7 +471,8 @@ static u32 tg3_read32(struct tg3 *tp, u32 off)
455#define tr32_mailbox(reg) tp->read32_mbox(tp, reg) 471#define tr32_mailbox(reg) tp->read32_mbox(tp, reg)
456 472
457#define tw32(reg,val) tp->write32(tp, reg, val) 473#define tw32(reg,val) tp->write32(tp, reg, val)
458#define tw32_f(reg,val) _tw32_flush(tp,(reg),(val)) 474#define tw32_f(reg,val) _tw32_flush(tp,(reg),(val), 0)
475#define tw32_wait_f(reg,val,us) _tw32_flush(tp,(reg),(val), (us))
459#define tr32(reg) tp->read32(tp, reg) 476#define tr32(reg) tp->read32(tp, reg)
460 477
461static void tg3_write_mem(struct tg3 *tp, u32 off, u32 val) 478static void tg3_write_mem(struct tg3 *tp, u32 off, u32 val)
@@ -595,21 +612,19 @@ static void tg3_switch_clocks(struct tg3 *tp)
595 612
596 if (tp->tg3_flags2 & TG3_FLG2_5705_PLUS) { 613 if (tp->tg3_flags2 & TG3_FLG2_5705_PLUS) {
597 if (orig_clock_ctrl & CLOCK_CTRL_625_CORE) { 614 if (orig_clock_ctrl & CLOCK_CTRL_625_CORE) {
598 tw32_f(TG3PCI_CLOCK_CTRL, 615 tw32_wait_f(TG3PCI_CLOCK_CTRL,
599 clock_ctrl | CLOCK_CTRL_625_CORE); 616 clock_ctrl | CLOCK_CTRL_625_CORE, 40);
600 udelay(40);
601 } 617 }
602 } else if ((orig_clock_ctrl & CLOCK_CTRL_44MHZ_CORE) != 0) { 618 } else if ((orig_clock_ctrl & CLOCK_CTRL_44MHZ_CORE) != 0) {
603 tw32_f(TG3PCI_CLOCK_CTRL, 619 tw32_wait_f(TG3PCI_CLOCK_CTRL,
604 clock_ctrl | 620 clock_ctrl |
605 (CLOCK_CTRL_44MHZ_CORE | CLOCK_CTRL_ALTCLK)); 621 (CLOCK_CTRL_44MHZ_CORE | CLOCK_CTRL_ALTCLK),
606 udelay(40); 622 40);
607 tw32_f(TG3PCI_CLOCK_CTRL, 623 tw32_wait_f(TG3PCI_CLOCK_CTRL,
608 clock_ctrl | (CLOCK_CTRL_ALTCLK)); 624 clock_ctrl | (CLOCK_CTRL_ALTCLK),
609 udelay(40); 625 40);
610 } 626 }
611 tw32_f(TG3PCI_CLOCK_CTRL, clock_ctrl); 627 tw32_wait_f(TG3PCI_CLOCK_CTRL, clock_ctrl, 40);
612 udelay(40);
613} 628}
614 629
615#define PHY_BUSY_LOOPS 5000 630#define PHY_BUSY_LOOPS 5000
@@ -1017,37 +1032,50 @@ static void tg3_frob_aux_power(struct tg3 *tp)
1017 if ((tp->tg3_flags & TG3_FLAG_EEPROM_WRITE_PROT) != 0) 1032 if ((tp->tg3_flags & TG3_FLAG_EEPROM_WRITE_PROT) != 0)
1018 return; 1033 return;
1019 1034
1020 if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5704) { 1035 if ((GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5704) ||
1021 tp_peer = pci_get_drvdata(tp->pdev_peer); 1036 (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5714)) {
1022 if (!tp_peer) 1037 struct net_device *dev_peer;
1038
1039 dev_peer = pci_get_drvdata(tp->pdev_peer);
1040 if (!dev_peer)
1023 BUG(); 1041 BUG();
1042 tp_peer = netdev_priv(dev_peer);
1024 } 1043 }
1025 1044
1026
1027 if ((tp->tg3_flags & TG3_FLAG_WOL_ENABLE) != 0 || 1045 if ((tp->tg3_flags & TG3_FLAG_WOL_ENABLE) != 0 ||
1028 (tp_peer->tg3_flags & TG3_FLAG_WOL_ENABLE) != 0) { 1046 (tp->tg3_flags & TG3_FLAG_ENABLE_ASF) != 0 ||
1047 (tp_peer->tg3_flags & TG3_FLAG_WOL_ENABLE) != 0 ||
1048 (tp_peer->tg3_flags & TG3_FLAG_ENABLE_ASF) != 0) {
1029 if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5700 || 1049 if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5700 ||
1030 GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5701) { 1050 GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5701) {
1031 tw32_f(GRC_LOCAL_CTRL, tp->grc_local_ctrl | 1051 tw32_wait_f(GRC_LOCAL_CTRL, tp->grc_local_ctrl |
1032 (GRC_LCLCTRL_GPIO_OE0 | 1052 (GRC_LCLCTRL_GPIO_OE0 |
1033 GRC_LCLCTRL_GPIO_OE1 | 1053 GRC_LCLCTRL_GPIO_OE1 |
1034 GRC_LCLCTRL_GPIO_OE2 | 1054 GRC_LCLCTRL_GPIO_OE2 |
1035 GRC_LCLCTRL_GPIO_OUTPUT0 | 1055 GRC_LCLCTRL_GPIO_OUTPUT0 |
1036 GRC_LCLCTRL_GPIO_OUTPUT1)); 1056 GRC_LCLCTRL_GPIO_OUTPUT1),
1037 udelay(100); 1057 100);
1038 } else { 1058 } else {
1039 u32 no_gpio2; 1059 u32 no_gpio2;
1040 u32 grc_local_ctrl; 1060 u32 grc_local_ctrl = 0;
1041 1061
1042 if (tp_peer != tp && 1062 if (tp_peer != tp &&
1043 (tp_peer->tg3_flags & TG3_FLAG_INIT_COMPLETE) != 0) 1063 (tp_peer->tg3_flags & TG3_FLAG_INIT_COMPLETE) != 0)
1044 return; 1064 return;
1045 1065
1066 /* Workaround to prevent overdrawing Amps. */
1067 if (GET_ASIC_REV(tp->pci_chip_rev_id) ==
1068 ASIC_REV_5714) {
1069 grc_local_ctrl |= GRC_LCLCTRL_GPIO_OE3;
1070 tw32_wait_f(GRC_LOCAL_CTRL, tp->grc_local_ctrl |
1071 grc_local_ctrl, 100);
1072 }
1073
1046 /* On 5753 and variants, GPIO2 cannot be used. */ 1074 /* On 5753 and variants, GPIO2 cannot be used. */
1047 no_gpio2 = tp->nic_sram_data_cfg & 1075 no_gpio2 = tp->nic_sram_data_cfg &
1048 NIC_SRAM_DATA_CFG_NO_GPIO2; 1076 NIC_SRAM_DATA_CFG_NO_GPIO2;
1049 1077
1050 grc_local_ctrl = GRC_LCLCTRL_GPIO_OE0 | 1078 grc_local_ctrl |= GRC_LCLCTRL_GPIO_OE0 |
1051 GRC_LCLCTRL_GPIO_OE1 | 1079 GRC_LCLCTRL_GPIO_OE1 |
1052 GRC_LCLCTRL_GPIO_OE2 | 1080 GRC_LCLCTRL_GPIO_OE2 |
1053 GRC_LCLCTRL_GPIO_OUTPUT1 | 1081 GRC_LCLCTRL_GPIO_OUTPUT1 |
@@ -1056,21 +1084,18 @@ static void tg3_frob_aux_power(struct tg3 *tp)
1056 grc_local_ctrl &= ~(GRC_LCLCTRL_GPIO_OE2 | 1084 grc_local_ctrl &= ~(GRC_LCLCTRL_GPIO_OE2 |
1057 GRC_LCLCTRL_GPIO_OUTPUT2); 1085 GRC_LCLCTRL_GPIO_OUTPUT2);
1058 } 1086 }
1059 tw32_f(GRC_LOCAL_CTRL, tp->grc_local_ctrl | 1087 tw32_wait_f(GRC_LOCAL_CTRL, tp->grc_local_ctrl |
1060 grc_local_ctrl); 1088 grc_local_ctrl, 100);
1061 udelay(100);
1062 1089
1063 grc_local_ctrl |= GRC_LCLCTRL_GPIO_OUTPUT0; 1090 grc_local_ctrl |= GRC_LCLCTRL_GPIO_OUTPUT0;
1064 1091
1065 tw32_f(GRC_LOCAL_CTRL, tp->grc_local_ctrl | 1092 tw32_wait_f(GRC_LOCAL_CTRL, tp->grc_local_ctrl |
1066 grc_local_ctrl); 1093 grc_local_ctrl, 100);
1067 udelay(100);
1068 1094
1069 if (!no_gpio2) { 1095 if (!no_gpio2) {
1070 grc_local_ctrl &= ~GRC_LCLCTRL_GPIO_OUTPUT2; 1096 grc_local_ctrl &= ~GRC_LCLCTRL_GPIO_OUTPUT2;
1071 tw32_f(GRC_LOCAL_CTRL, tp->grc_local_ctrl | 1097 tw32_wait_f(GRC_LOCAL_CTRL, tp->grc_local_ctrl |
1072 grc_local_ctrl); 1098 grc_local_ctrl, 100);
1073 udelay(100);
1074 } 1099 }
1075 } 1100 }
1076 } else { 1101 } else {
@@ -1080,19 +1105,16 @@ static void tg3_frob_aux_power(struct tg3 *tp)
1080 (tp_peer->tg3_flags & TG3_FLAG_INIT_COMPLETE) != 0) 1105 (tp_peer->tg3_flags & TG3_FLAG_INIT_COMPLETE) != 0)
1081 return; 1106 return;
1082 1107
1083 tw32_f(GRC_LOCAL_CTRL, tp->grc_local_ctrl | 1108 tw32_wait_f(GRC_LOCAL_CTRL, tp->grc_local_ctrl |
1084 (GRC_LCLCTRL_GPIO_OE1 | 1109 (GRC_LCLCTRL_GPIO_OE1 |
1085 GRC_LCLCTRL_GPIO_OUTPUT1)); 1110 GRC_LCLCTRL_GPIO_OUTPUT1), 100);
1086 udelay(100);
1087 1111
1088 tw32_f(GRC_LOCAL_CTRL, tp->grc_local_ctrl | 1112 tw32_wait_f(GRC_LOCAL_CTRL, tp->grc_local_ctrl |
1089 (GRC_LCLCTRL_GPIO_OE1)); 1113 GRC_LCLCTRL_GPIO_OE1, 100);
1090 udelay(100);
1091 1114
1092 tw32_f(GRC_LOCAL_CTRL, tp->grc_local_ctrl | 1115 tw32_wait_f(GRC_LOCAL_CTRL, tp->grc_local_ctrl |
1093 (GRC_LCLCTRL_GPIO_OE1 | 1116 (GRC_LCLCTRL_GPIO_OE1 |
1094 GRC_LCLCTRL_GPIO_OUTPUT1)); 1117 GRC_LCLCTRL_GPIO_OUTPUT1), 100);
1095 udelay(100);
1096 } 1118 }
1097 } 1119 }
1098} 1120}
@@ -1105,6 +1127,8 @@ static int tg3_setup_phy(struct tg3 *, int);
1105 1127
1106static void tg3_write_sig_post_reset(struct tg3 *, int); 1128static void tg3_write_sig_post_reset(struct tg3 *, int);
1107static int tg3_halt_cpu(struct tg3 *, u32); 1129static int tg3_halt_cpu(struct tg3 *, u32);
1130static int tg3_nvram_lock(struct tg3 *);
1131static void tg3_nvram_unlock(struct tg3 *);
1108 1132
1109static int tg3_set_power_state(struct tg3 *tp, int state) 1133static int tg3_set_power_state(struct tg3 *tp, int state)
1110{ 1134{
@@ -1133,10 +1157,8 @@ static int tg3_set_power_state(struct tg3 *tp, int state)
1133 udelay(100); /* Delay after power state change */ 1157 udelay(100); /* Delay after power state change */
1134 1158
1135 /* Switch out of Vaux if it is not a LOM */ 1159 /* Switch out of Vaux if it is not a LOM */
1136 if (!(tp->tg3_flags & TG3_FLAG_EEPROM_WRITE_PROT)) { 1160 if (!(tp->tg3_flags & TG3_FLAG_EEPROM_WRITE_PROT))
1137 tw32_f(GRC_LOCAL_CTRL, tp->grc_local_ctrl); 1161 tw32_wait_f(GRC_LOCAL_CTRL, tp->grc_local_ctrl, 100);
1138 udelay(100);
1139 }
1140 1162
1141 return 0; 1163 return 0;
1142 1164
@@ -1179,6 +1201,21 @@ static int tg3_set_power_state(struct tg3 *tp, int state)
1179 tg3_setup_phy(tp, 0); 1201 tg3_setup_phy(tp, 0);
1180 } 1202 }
1181 1203
1204 if (!(tp->tg3_flags & TG3_FLAG_ENABLE_ASF)) {
1205 int i;
1206 u32 val;
1207
1208 for (i = 0; i < 200; i++) {
1209 tg3_read_mem(tp, NIC_SRAM_FW_ASF_STATUS_MBOX, &val);
1210 if (val == ~NIC_SRAM_FIRMWARE_MBOX_MAGIC1)
1211 break;
1212 msleep(1);
1213 }
1214 }
1215 tg3_write_mem(tp, NIC_SRAM_WOL_MBOX, WOL_SIGNATURE |
1216 WOL_DRV_STATE_SHUTDOWN |
1217 WOL_DRV_WOL | WOL_SET_MAGIC_PKT);
1218
1182 pci_read_config_word(tp->pdev, pm + PCI_PM_PMC, &power_caps); 1219 pci_read_config_word(tp->pdev, pm + PCI_PM_PMC, &power_caps);
1183 1220
1184 if (tp->tg3_flags & TG3_FLAG_WOL_ENABLE) { 1221 if (tp->tg3_flags & TG3_FLAG_WOL_ENABLE) {
@@ -1220,10 +1257,8 @@ static int tg3_set_power_state(struct tg3 *tp, int state)
1220 base_val |= (CLOCK_CTRL_RXCLK_DISABLE | 1257 base_val |= (CLOCK_CTRL_RXCLK_DISABLE |
1221 CLOCK_CTRL_TXCLK_DISABLE); 1258 CLOCK_CTRL_TXCLK_DISABLE);
1222 1259
1223 tw32_f(TG3PCI_CLOCK_CTRL, base_val | 1260 tw32_wait_f(TG3PCI_CLOCK_CTRL, base_val | CLOCK_CTRL_ALTCLK |
1224 CLOCK_CTRL_ALTCLK | 1261 CLOCK_CTRL_PWRDOWN_PLL133, 40);
1225 CLOCK_CTRL_PWRDOWN_PLL133);
1226 udelay(40);
1227 } else if (tp->tg3_flags2 & TG3_FLG2_5780_CLASS) { 1262 } else if (tp->tg3_flags2 & TG3_FLG2_5780_CLASS) {
1228 /* do nothing */ 1263 /* do nothing */
1229 } else if (!((tp->tg3_flags2 & TG3_FLG2_5750_PLUS) && 1264 } else if (!((tp->tg3_flags2 & TG3_FLG2_5750_PLUS) &&
@@ -1244,11 +1279,11 @@ static int tg3_set_power_state(struct tg3 *tp, int state)
1244 newbits2 = newbits1 | CLOCK_CTRL_44MHZ_CORE; 1279 newbits2 = newbits1 | CLOCK_CTRL_44MHZ_CORE;
1245 } 1280 }
1246 1281
1247 tw32_f(TG3PCI_CLOCK_CTRL, tp->pci_clock_ctrl | newbits1); 1282 tw32_wait_f(TG3PCI_CLOCK_CTRL, tp->pci_clock_ctrl | newbits1,
1248 udelay(40); 1283 40);
1249 1284
1250 tw32_f(TG3PCI_CLOCK_CTRL, tp->pci_clock_ctrl | newbits2); 1285 tw32_wait_f(TG3PCI_CLOCK_CTRL, tp->pci_clock_ctrl | newbits2,
1251 udelay(40); 1286 40);
1252 1287
1253 if (!(tp->tg3_flags2 & TG3_FLG2_5705_PLUS)) { 1288 if (!(tp->tg3_flags2 & TG3_FLG2_5705_PLUS)) {
1254 u32 newbits3; 1289 u32 newbits3;
@@ -1262,9 +1297,20 @@ static int tg3_set_power_state(struct tg3 *tp, int state)
1262 newbits3 = CLOCK_CTRL_44MHZ_CORE; 1297 newbits3 = CLOCK_CTRL_44MHZ_CORE;
1263 } 1298 }
1264 1299
1265 tw32_f(TG3PCI_CLOCK_CTRL, 1300 tw32_wait_f(TG3PCI_CLOCK_CTRL,
1266 tp->pci_clock_ctrl | newbits3); 1301 tp->pci_clock_ctrl | newbits3, 40);
1267 udelay(40); 1302 }
1303 }
1304
1305 if (!(tp->tg3_flags & TG3_FLAG_WOL_ENABLE) &&
1306 !(tp->tg3_flags & TG3_FLAG_ENABLE_ASF)) {
1307 /* Turn off the PHY */
1308 if (!(tp->tg3_flags2 & TG3_FLG2_PHY_SERDES)) {
1309 tg3_writephy(tp, MII_TG3_EXT_CTRL,
1310 MII_TG3_EXT_CTRL_FORCE_LED_OFF);
1311 tg3_writephy(tp, MII_TG3_AUX_CTRL, 0x01b2);
1312 if (GET_ASIC_REV(tp->pci_chip_rev_id) != ASIC_REV_5700)
1313 tg3_writephy(tp, MII_BMCR, BMCR_PDOWN);
1268 } 1314 }
1269 } 1315 }
1270 1316
@@ -1277,8 +1323,12 @@ static int tg3_set_power_state(struct tg3 *tp, int state)
1277 1323
1278 val &= ~((1 << 16) | (1 << 4) | (1 << 2) | (1 << 1) | 1); 1324 val &= ~((1 << 16) | (1 << 4) | (1 << 2) | (1 << 1) | 1);
1279 tw32(0x7d00, val); 1325 tw32(0x7d00, val);
1280 if (!(tp->tg3_flags & TG3_FLAG_ENABLE_ASF)) 1326 if (!(tp->tg3_flags & TG3_FLAG_ENABLE_ASF)) {
1327 tg3_nvram_lock(tp);
1281 tg3_halt_cpu(tp, RX_CPU_BASE); 1328 tg3_halt_cpu(tp, RX_CPU_BASE);
1329 tw32_f(NVRAM_SWARB, SWARB_REQ_CLR0);
1330 tg3_nvram_unlock(tp);
1331 }
1282 } 1332 }
1283 1333
1284 /* Finally, set the new power state. */ 1334 /* Finally, set the new power state. */
@@ -1812,7 +1862,7 @@ static int tg3_setup_copper_phy(struct tg3 *tp, int force_reset)
1812 } 1862 }
1813 } 1863 }
1814relink: 1864relink:
1815 if (current_link_up == 0) { 1865 if (current_link_up == 0 || tp->link_config.phy_is_low_power) {
1816 u32 tmp; 1866 u32 tmp;
1817 1867
1818 tg3_phy_copper_begin(tp); 1868 tg3_phy_copper_begin(tp);
@@ -3565,12 +3615,15 @@ static int tg3_start_xmit(struct sk_buff *skb, struct net_device *dev)
3565 if (!spin_trylock(&tp->tx_lock)) 3615 if (!spin_trylock(&tp->tx_lock))
3566 return NETDEV_TX_LOCKED; 3616 return NETDEV_TX_LOCKED;
3567 3617
3568 /* This is a hard error, log it. */
3569 if (unlikely(TX_BUFFS_AVAIL(tp) <= (skb_shinfo(skb)->nr_frags + 1))) { 3618 if (unlikely(TX_BUFFS_AVAIL(tp) <= (skb_shinfo(skb)->nr_frags + 1))) {
3570 netif_stop_queue(dev); 3619 if (!netif_queue_stopped(dev)) {
3620 netif_stop_queue(dev);
3621
3622 /* This is a hard error, log it. */
3623 printk(KERN_ERR PFX "%s: BUG! Tx Ring full when "
3624 "queue awake!\n", dev->name);
3625 }
3571 spin_unlock(&tp->tx_lock); 3626 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; 3627 return NETDEV_TX_BUSY;
3575 } 3628 }
3576 3629
@@ -7922,13 +7975,12 @@ static int tg3_test_memory(struct tg3 *tp)
7922 u32 offset; 7975 u32 offset;
7923 u32 len; 7976 u32 len;
7924 } mem_tbl_570x[] = { 7977 } mem_tbl_570x[] = {
7925 { 0x00000000, 0x01000}, 7978 { 0x00000000, 0x00b50},
7926 { 0x00002000, 0x1c000}, 7979 { 0x00002000, 0x1c000},
7927 { 0xffffffff, 0x00000} 7980 { 0xffffffff, 0x00000}
7928 }, mem_tbl_5705[] = { 7981 }, mem_tbl_5705[] = {
7929 { 0x00000100, 0x0000c}, 7982 { 0x00000100, 0x0000c},
7930 { 0x00000200, 0x00008}, 7983 { 0x00000200, 0x00008},
7931 { 0x00000b50, 0x00400},
7932 { 0x00004000, 0x00800}, 7984 { 0x00004000, 0x00800},
7933 { 0x00006000, 0x01000}, 7985 { 0x00006000, 0x01000},
7934 { 0x00008000, 0x02000}, 7986 { 0x00008000, 0x02000},
@@ -8530,6 +8582,7 @@ static void __devinit tg3_nvram_init(struct tg3 *tp)
8530 GET_ASIC_REV(tp->pci_chip_rev_id) != ASIC_REV_5701) { 8582 GET_ASIC_REV(tp->pci_chip_rev_id) != ASIC_REV_5701) {
8531 tp->tg3_flags |= TG3_FLAG_NVRAM; 8583 tp->tg3_flags |= TG3_FLAG_NVRAM;
8532 8584
8585 tg3_nvram_lock(tp);
8533 tg3_enable_nvram_access(tp); 8586 tg3_enable_nvram_access(tp);
8534 8587
8535 if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5752) 8588 if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5752)
@@ -8540,6 +8593,7 @@ static void __devinit tg3_nvram_init(struct tg3 *tp)
8540 tg3_get_nvram_size(tp); 8593 tg3_get_nvram_size(tp);
8541 8594
8542 tg3_disable_nvram_access(tp); 8595 tg3_disable_nvram_access(tp);
8596 tg3_nvram_unlock(tp);
8543 8597
8544 } else { 8598 } else {
8545 tp->tg3_flags &= ~(TG3_FLAG_NVRAM | TG3_FLAG_NVRAM_BUFFERED); 8599 tp->tg3_flags &= ~(TG3_FLAG_NVRAM | TG3_FLAG_NVRAM_BUFFERED);
@@ -8637,10 +8691,10 @@ static int tg3_nvram_read(struct tg3 *tp, u32 offset, u32 *val)
8637 if (ret == 0) 8691 if (ret == 0)
8638 *val = swab32(tr32(NVRAM_RDDATA)); 8692 *val = swab32(tr32(NVRAM_RDDATA));
8639 8693
8640 tg3_nvram_unlock(tp);
8641
8642 tg3_disable_nvram_access(tp); 8694 tg3_disable_nvram_access(tp);
8643 8695
8696 tg3_nvram_unlock(tp);
8697
8644 return ret; 8698 return ret;
8645} 8699}
8646 8700
@@ -8725,6 +8779,10 @@ static int tg3_nvram_write_block_unbuffered(struct tg3 *tp, u32 offset, u32 len,
8725 8779
8726 offset = offset + (pagesize - page_off); 8780 offset = offset + (pagesize - page_off);
8727 8781
8782 /* Nvram lock released by tg3_nvram_read() above,
8783 * so need to get it again.
8784 */
8785 tg3_nvram_lock(tp);
8728 tg3_enable_nvram_access(tp); 8786 tg3_enable_nvram_access(tp);
8729 8787
8730 /* 8788 /*
@@ -10423,7 +10481,7 @@ static char * __devinit tg3_bus_string(struct tg3 *tp, char *str)
10423 return str; 10481 return str;
10424} 10482}
10425 10483
10426static struct pci_dev * __devinit tg3_find_5704_peer(struct tg3 *tp) 10484static struct pci_dev * __devinit tg3_find_peer(struct tg3 *tp)
10427{ 10485{
10428 struct pci_dev *peer; 10486 struct pci_dev *peer;
10429 unsigned int func, devnr = tp->pdev->devfn & ~7; 10487 unsigned int func, devnr = tp->pdev->devfn & ~7;
@@ -10434,8 +10492,13 @@ static struct pci_dev * __devinit tg3_find_5704_peer(struct tg3 *tp)
10434 break; 10492 break;
10435 pci_dev_put(peer); 10493 pci_dev_put(peer);
10436 } 10494 }
10437 if (!peer || peer == tp->pdev) 10495 /* 5704 can be configured in single-port mode, set peer to
10438 BUG(); 10496 * tp->pdev in that case.
10497 */
10498 if (!peer) {
10499 peer = tp->pdev;
10500 return peer;
10501 }
10439 10502
10440 /* 10503 /*
10441 * We don't need to keep the refcount elevated; there's no way 10504 * We don't need to keep the refcount elevated; there's no way
@@ -10671,8 +10734,9 @@ static int __devinit tg3_init_one(struct pci_dev *pdev,
10671 tp->rx_pending = 63; 10734 tp->rx_pending = 63;
10672 } 10735 }
10673 10736
10674 if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5704) 10737 if ((GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5704) ||
10675 tp->pdev_peer = tg3_find_5704_peer(tp); 10738 (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5714))
10739 tp->pdev_peer = tg3_find_peer(tp);
10676 10740
10677 err = tg3_get_device_address(tp); 10741 err = tg3_get_device_address(tp);
10678 if (err) { 10742 if (err) {
@@ -10817,12 +10881,14 @@ static int tg3_suspend(struct pci_dev *pdev, pm_message_t state)
10817 10881
10818 tg3_full_lock(tp, 0); 10882 tg3_full_lock(tp, 0);
10819 tg3_halt(tp, RESET_KIND_SHUTDOWN, 1); 10883 tg3_halt(tp, RESET_KIND_SHUTDOWN, 1);
10884 tp->tg3_flags &= ~TG3_FLAG_INIT_COMPLETE;
10820 tg3_full_unlock(tp); 10885 tg3_full_unlock(tp);
10821 10886
10822 err = tg3_set_power_state(tp, pci_choose_state(pdev, state)); 10887 err = tg3_set_power_state(tp, pci_choose_state(pdev, state));
10823 if (err) { 10888 if (err) {
10824 tg3_full_lock(tp, 0); 10889 tg3_full_lock(tp, 0);
10825 10890
10891 tp->tg3_flags |= TG3_FLAG_INIT_COMPLETE;
10826 tg3_init_hw(tp); 10892 tg3_init_hw(tp);
10827 10893
10828 tp->timer.expires = jiffies + tp->timer_offset; 10894 tp->timer.expires = jiffies + tp->timer_offset;
@@ -10856,6 +10922,7 @@ static int tg3_resume(struct pci_dev *pdev)
10856 10922
10857 tg3_full_lock(tp, 0); 10923 tg3_full_lock(tp, 0);
10858 10924
10925 tp->tg3_flags |= TG3_FLAG_INIT_COMPLETE;
10859 tg3_init_hw(tp); 10926 tg3_init_hw(tp);
10860 10927
10861 tp->timer.expires = jiffies + tp->timer_offset; 10928 tp->timer.expires = jiffies + tp->timer_offset;
diff --git a/drivers/net/tg3.h b/drivers/net/tg3.h
index fb7e2a5f4a08..94dbcf3537ec 100644
--- a/drivers/net/tg3.h
+++ b/drivers/net/tg3.h
@@ -1529,6 +1529,12 @@
1529#define NIC_SRAM_MAC_ADDR_HIGH_MBOX 0x00000c14 1529#define NIC_SRAM_MAC_ADDR_HIGH_MBOX 0x00000c14
1530#define NIC_SRAM_MAC_ADDR_LOW_MBOX 0x00000c18 1530#define NIC_SRAM_MAC_ADDR_LOW_MBOX 0x00000c18
1531 1531
1532#define NIC_SRAM_WOL_MBOX 0x00000d30
1533#define WOL_SIGNATURE 0x474c0000
1534#define WOL_DRV_STATE_SHUTDOWN 0x00000001
1535#define WOL_DRV_WOL 0x00000002
1536#define WOL_SET_MAGIC_PKT 0x00000004
1537
1532#define NIC_SRAM_DATA_CFG_2 0x00000d38 1538#define NIC_SRAM_DATA_CFG_2 0x00000d38
1533 1539
1534#define SHASTA_EXT_LED_MODE_MASK 0x00018000 1540#define SHASTA_EXT_LED_MODE_MASK 0x00018000
@@ -1565,6 +1571,7 @@
1565#define MII_TG3_EXT_CTRL 0x10 /* Extended control register */ 1571#define MII_TG3_EXT_CTRL 0x10 /* Extended control register */
1566#define MII_TG3_EXT_CTRL_FIFO_ELASTIC 0x0001 1572#define MII_TG3_EXT_CTRL_FIFO_ELASTIC 0x0001
1567#define MII_TG3_EXT_CTRL_LNK3_LED_MODE 0x0002 1573#define MII_TG3_EXT_CTRL_LNK3_LED_MODE 0x0002
1574#define MII_TG3_EXT_CTRL_FORCE_LED_OFF 0x0008
1568#define MII_TG3_EXT_CTRL_TBI 0x8000 1575#define MII_TG3_EXT_CTRL_TBI 0x8000
1569 1576
1570#define MII_TG3_EXT_STAT 0x11 /* Extended status register */ 1577#define MII_TG3_EXT_STAT 0x11 /* Extended status register */
diff --git a/drivers/pci/Makefile b/drivers/pci/Makefile
index 716df015f8d0..6707df968934 100644
--- a/drivers/pci/Makefile
+++ b/drivers/pci/Makefile
@@ -6,6 +6,9 @@ obj-y += access.o bus.o probe.o remove.o pci.o quirks.o \
6 pci-driver.o search.o pci-sysfs.o rom.o setup-res.o 6 pci-driver.o search.o pci-sysfs.o rom.o setup-res.o
7obj-$(CONFIG_PROC_FS) += proc.o 7obj-$(CONFIG_PROC_FS) += proc.o
8 8
9# Build PCI Express stuff if needed
10obj-$(CONFIG_PCIEPORTBUS) += pcie/
11
9obj-$(CONFIG_HOTPLUG) += hotplug.o 12obj-$(CONFIG_HOTPLUG) += hotplug.o
10 13
11# Build the PCI Hotplug drivers if we were asked to 14# Build the PCI Hotplug drivers if we were asked to
@@ -40,7 +43,3 @@ endif
40ifeq ($(CONFIG_PCI_DEBUG),y) 43ifeq ($(CONFIG_PCI_DEBUG),y)
41EXTRA_CFLAGS += -DDEBUG 44EXTRA_CFLAGS += -DDEBUG
42endif 45endif
43
44# Build PCI Express stuff if needed
45obj-$(CONFIG_PCIEPORTBUS) += pcie/
46
diff --git a/drivers/sbus/char/jsflash.c b/drivers/sbus/char/jsflash.c
index c12c5046e2fa..14631ac11bc7 100644
--- a/drivers/sbus/char/jsflash.c
+++ b/drivers/sbus/char/jsflash.c
@@ -249,11 +249,11 @@ static loff_t jsf_lseek(struct file * file, loff_t offset, int orig)
249/* 249/*
250 * OS SIMM Cannot be read in other size but a 32bits word. 250 * OS SIMM Cannot be read in other size but a 32bits word.
251 */ 251 */
252static ssize_t jsf_read(struct file * file, char * buf, 252static ssize_t jsf_read(struct file * file, char __user * buf,
253 size_t togo, loff_t *ppos) 253 size_t togo, loff_t *ppos)
254{ 254{
255 unsigned long p = *ppos; 255 unsigned long p = *ppos;
256 char *tmp = buf; 256 char __user *tmp = buf;
257 257
258 union byte4 { 258 union byte4 {
259 char s[4]; 259 char s[4];
@@ -305,7 +305,7 @@ static ssize_t jsf_read(struct file * file, char * buf,
305 return tmp-buf; 305 return tmp-buf;
306} 306}
307 307
308static ssize_t jsf_write(struct file * file, const char * buf, 308static ssize_t jsf_write(struct file * file, const char __user * buf,
309 size_t count, loff_t *ppos) 309 size_t count, loff_t *ppos)
310{ 310{
311 return -ENOSPC; 311 return -ENOSPC;
@@ -356,10 +356,10 @@ static int jsf_ioctl_erase(unsigned long arg)
356 * Program a block of flash. 356 * Program a block of flash.
357 * Very simple because we can do it byte by byte anyway. 357 * Very simple because we can do it byte by byte anyway.
358 */ 358 */
359static int jsf_ioctl_program(unsigned long arg) 359static int jsf_ioctl_program(void __user *arg)
360{ 360{
361 struct jsflash_program_arg abuf; 361 struct jsflash_program_arg abuf;
362 char *uptr; 362 char __user *uptr;
363 unsigned long p; 363 unsigned long p;
364 unsigned int togo; 364 unsigned int togo;
365 union { 365 union {
@@ -367,13 +367,13 @@ static int jsf_ioctl_program(unsigned long arg)
367 char s[4]; 367 char s[4];
368 } b; 368 } b;
369 369
370 if (copy_from_user(&abuf, (char *)arg, JSFPRGSZ)) 370 if (copy_from_user(&abuf, arg, JSFPRGSZ))
371 return -EFAULT; 371 return -EFAULT;
372 p = abuf.off; 372 p = abuf.off;
373 togo = abuf.size; 373 togo = abuf.size;
374 if ((togo & 3) || (p & 3)) return -EINVAL; 374 if ((togo & 3) || (p & 3)) return -EINVAL;
375 375
376 uptr = (char *) (unsigned long) abuf.data; 376 uptr = (char __user *) (unsigned long) abuf.data;
377 while (togo != 0) { 377 while (togo != 0) {
378 togo -= 4; 378 togo -= 4;
379 if (copy_from_user(&b.s[0], uptr, 4)) 379 if (copy_from_user(&b.s[0], uptr, 4))
@@ -390,19 +390,20 @@ static int jsf_ioctl(struct inode *inode, struct file *f, unsigned int cmd,
390 unsigned long arg) 390 unsigned long arg)
391{ 391{
392 int error = -ENOTTY; 392 int error = -ENOTTY;
393 void __user *argp = (void __user *)arg;
393 394
394 if (!capable(CAP_SYS_ADMIN)) 395 if (!capable(CAP_SYS_ADMIN))
395 return -EPERM; 396 return -EPERM;
396 switch (cmd) { 397 switch (cmd) {
397 case JSFLASH_IDENT: 398 case JSFLASH_IDENT:
398 if (copy_to_user((void *)arg, &jsf0.id, JSFIDSZ)) 399 if (copy_to_user(argp, &jsf0.id, JSFIDSZ))
399 return -EFAULT; 400 return -EFAULT;
400 break; 401 break;
401 case JSFLASH_ERASE: 402 case JSFLASH_ERASE:
402 error = jsf_ioctl_erase(arg); 403 error = jsf_ioctl_erase(arg);
403 break; 404 break;
404 case JSFLASH_PROGRAM: 405 case JSFLASH_PROGRAM:
405 error = jsf_ioctl_program(arg); 406 error = jsf_ioctl_program(argp);
406 break; 407 break;
407 } 408 }
408 409
diff --git a/drivers/sbus/char/uctrl.c b/drivers/sbus/char/uctrl.c
index 858cc683f85c..e2d9a7c85427 100644
--- a/drivers/sbus/char/uctrl.c
+++ b/drivers/sbus/char/uctrl.c
@@ -309,7 +309,7 @@ static void uctrl_do_txn(struct uctrl_txn *txn)
309 } 309 }
310} 310}
311 311
312void uctrl_get_event_status() 312void uctrl_get_event_status(void)
313{ 313{
314 struct uctrl_driver *driver = &drv; 314 struct uctrl_driver *driver = &drv;
315 struct uctrl_txn txn; 315 struct uctrl_txn txn;
@@ -318,7 +318,7 @@ void uctrl_get_event_status()
318 txn.opcode = READ_EVENT_STATUS; 318 txn.opcode = READ_EVENT_STATUS;
319 txn.inbits = 0; 319 txn.inbits = 0;
320 txn.outbits = 2; 320 txn.outbits = 2;
321 txn.inbuf = 0; 321 txn.inbuf = NULL;
322 txn.outbuf = outbits; 322 txn.outbuf = outbits;
323 323
324 uctrl_do_txn(&txn); 324 uctrl_do_txn(&txn);
@@ -329,7 +329,7 @@ void uctrl_get_event_status()
329 dprintk(("ev is %x\n", driver->status.event_status)); 329 dprintk(("ev is %x\n", driver->status.event_status));
330} 330}
331 331
332void uctrl_get_external_status() 332void uctrl_get_external_status(void)
333{ 333{
334 struct uctrl_driver *driver = &drv; 334 struct uctrl_driver *driver = &drv;
335 struct uctrl_txn txn; 335 struct uctrl_txn txn;
@@ -339,7 +339,7 @@ void uctrl_get_external_status()
339 txn.opcode = READ_EXTERNAL_STATUS; 339 txn.opcode = READ_EXTERNAL_STATUS;
340 txn.inbits = 0; 340 txn.inbits = 0;
341 txn.outbits = 2; 341 txn.outbits = 2;
342 txn.inbuf = 0; 342 txn.inbuf = NULL;
343 txn.outbuf = outbits; 343 txn.outbuf = outbits;
344 344
345 uctrl_do_txn(&txn); 345 uctrl_do_txn(&txn);
@@ -414,7 +414,7 @@ static void __exit ts102_uctrl_cleanup(void)
414 if (driver->irq) 414 if (driver->irq)
415 free_irq(driver->irq, driver); 415 free_irq(driver->irq, driver);
416 if (driver->regs) 416 if (driver->regs)
417 driver->regs = 0; 417 driver->regs = NULL;
418} 418}
419 419
420module_init(ts102_uctrl_init); 420module_init(ts102_uctrl_init);
diff --git a/drivers/sbus/char/vfc.h b/drivers/sbus/char/vfc.h
index a7782e7da42e..8045cd5e7cb3 100644
--- a/drivers/sbus/char/vfc.h
+++ b/drivers/sbus/char/vfc.h
@@ -125,7 +125,7 @@ struct vfc_regs {
125 125
126 126
127struct vfc_dev { 127struct vfc_dev {
128 volatile struct vfc_regs *regs; 128 volatile struct vfc_regs __iomem *regs;
129 struct vfc_regs *phys_regs; 129 struct vfc_regs *phys_regs;
130 unsigned int control_reg; 130 unsigned int control_reg;
131 struct semaphore device_lock_sem; 131 struct semaphore device_lock_sem;
diff --git a/drivers/sbus/char/vfc_dev.c b/drivers/sbus/char/vfc_dev.c
index 7a103698fa3c..dfdd6be551f3 100644
--- a/drivers/sbus/char/vfc_dev.c
+++ b/drivers/sbus/char/vfc_dev.c
@@ -149,7 +149,7 @@ int init_vfc_device(struct sbus_dev *sdev,struct vfc_dev *dev, int instance)
149 } 149 }
150 printk("Initializing vfc%d\n",instance); 150 printk("Initializing vfc%d\n",instance);
151 dev->regs = NULL; 151 dev->regs = NULL;
152 dev->regs = (volatile struct vfc_regs *) 152 dev->regs = (volatile struct vfc_regs __iomem *)
153 sbus_ioremap(&sdev->resource[0], 0, 153 sbus_ioremap(&sdev->resource[0], 0,
154 sizeof(struct vfc_regs), vfcstr); 154 sizeof(struct vfc_regs), vfcstr);
155 dev->which_io = sdev->reg_addrs[0].which_io; 155 dev->which_io = sdev->reg_addrs[0].which_io;
@@ -319,7 +319,7 @@ int vfc_capture_poll(struct vfc_dev *dev)
319 int timeout = 1000; 319 int timeout = 1000;
320 320
321 while (!timeout--) { 321 while (!timeout--) {
322 if (dev->regs->control & VFC_STATUS_CAPTURE) 322 if (sbus_readl(&dev->regs->control) & VFC_STATUS_CAPTURE)
323 break; 323 break;
324 vfc_i2c_delay_no_busy(dev, 100); 324 vfc_i2c_delay_no_busy(dev, 100);
325 } 325 }
@@ -718,7 +718,7 @@ static void deinit_vfc_device(struct vfc_dev *dev)
718 if(dev == NULL) 718 if(dev == NULL)
719 return; 719 return;
720 devfs_remove("vfc/%d", dev->instance); 720 devfs_remove("vfc/%d", dev->instance);
721 sbus_iounmap((unsigned long)dev->regs, sizeof(struct vfc_regs)); 721 sbus_iounmap(dev->regs, sizeof(struct vfc_regs));
722 kfree(dev); 722 kfree(dev);
723} 723}
724 724
diff --git a/drivers/scsi/dpt_i2o.c b/drivers/scsi/dpt_i2o.c
index 418fc7b896ac..6252b9ddc01e 100644
--- a/drivers/scsi/dpt_i2o.c
+++ b/drivers/scsi/dpt_i2o.c
@@ -660,7 +660,12 @@ static int adpt_abort(struct scsi_cmnd * cmd)
660 msg[2] = 0; 660 msg[2] = 0;
661 msg[3]= 0; 661 msg[3]= 0;
662 msg[4] = (u32)cmd; 662 msg[4] = (u32)cmd;
663 if( (rcode = adpt_i2o_post_wait(pHba, msg, sizeof(msg), FOREVER)) != 0){ 663 if (pHba->host)
664 spin_lock_irq(pHba->host->host_lock);
665 rcode = adpt_i2o_post_wait(pHba, msg, sizeof(msg), FOREVER);
666 if (pHba->host)
667 spin_unlock_irq(pHba->host->host_lock);
668 if (rcode != 0) {
664 if(rcode == -EOPNOTSUPP ){ 669 if(rcode == -EOPNOTSUPP ){
665 printk(KERN_INFO"%s: Abort cmd not supported\n",pHba->name); 670 printk(KERN_INFO"%s: Abort cmd not supported\n",pHba->name);
666 return FAILED; 671 return FAILED;
@@ -697,10 +702,15 @@ static int adpt_device_reset(struct scsi_cmnd* cmd)
697 msg[2] = 0; 702 msg[2] = 0;
698 msg[3] = 0; 703 msg[3] = 0;
699 704
705 if (pHba->host)
706 spin_lock_irq(pHba->host->host_lock);
700 old_state = d->state; 707 old_state = d->state;
701 d->state |= DPTI_DEV_RESET; 708 d->state |= DPTI_DEV_RESET;
702 if( (rcode = adpt_i2o_post_wait(pHba, msg,sizeof(msg), FOREVER)) ){ 709 rcode = adpt_i2o_post_wait(pHba, msg,sizeof(msg), FOREVER);
703 d->state = old_state; 710 d->state = old_state;
711 if (pHba->host)
712 spin_unlock_irq(pHba->host->host_lock);
713 if (rcode != 0) {
704 if(rcode == -EOPNOTSUPP ){ 714 if(rcode == -EOPNOTSUPP ){
705 printk(KERN_INFO"%s: Device reset not supported\n",pHba->name); 715 printk(KERN_INFO"%s: Device reset not supported\n",pHba->name);
706 return FAILED; 716 return FAILED;
@@ -708,7 +718,6 @@ static int adpt_device_reset(struct scsi_cmnd* cmd)
708 printk(KERN_INFO"%s: Device reset failed\n",pHba->name); 718 printk(KERN_INFO"%s: Device reset failed\n",pHba->name);
709 return FAILED; 719 return FAILED;
710 } else { 720 } else {
711 d->state = old_state;
712 printk(KERN_INFO"%s: Device reset successful\n",pHba->name); 721 printk(KERN_INFO"%s: Device reset successful\n",pHba->name);
713 return SUCCESS; 722 return SUCCESS;
714 } 723 }
@@ -721,6 +730,7 @@ static int adpt_bus_reset(struct scsi_cmnd* cmd)
721{ 730{
722 adpt_hba* pHba; 731 adpt_hba* pHba;
723 u32 msg[4]; 732 u32 msg[4];
733 u32 rcode;
724 734
725 pHba = (adpt_hba*)cmd->device->host->hostdata[0]; 735 pHba = (adpt_hba*)cmd->device->host->hostdata[0];
726 memset(msg, 0, sizeof(msg)); 736 memset(msg, 0, sizeof(msg));
@@ -729,7 +739,12 @@ static int adpt_bus_reset(struct scsi_cmnd* cmd)
729 msg[1] = (I2O_HBA_BUS_RESET<<24|HOST_TID<<12|pHba->channel[cmd->device->channel].tid); 739 msg[1] = (I2O_HBA_BUS_RESET<<24|HOST_TID<<12|pHba->channel[cmd->device->channel].tid);
730 msg[2] = 0; 740 msg[2] = 0;
731 msg[3] = 0; 741 msg[3] = 0;
732 if(adpt_i2o_post_wait(pHba, msg,sizeof(msg), FOREVER) ){ 742 if (pHba->host)
743 spin_lock_irq(pHba->host->host_lock);
744 rcode = adpt_i2o_post_wait(pHba, msg,sizeof(msg), FOREVER);
745 if (pHba->host)
746 spin_unlock_irq(pHba->host->host_lock);
747 if (rcode != 0) {
733 printk(KERN_WARNING"%s: Bus reset failed.\n",pHba->name); 748 printk(KERN_WARNING"%s: Bus reset failed.\n",pHba->name);
734 return FAILED; 749 return FAILED;
735 } else { 750 } else {
diff --git a/drivers/scsi/ibmvscsi/ibmvscsi.h b/drivers/scsi/ibmvscsi/ibmvscsi.h
index 8bec0438dc8a..5b0edd1f1921 100644
--- a/drivers/scsi/ibmvscsi/ibmvscsi.h
+++ b/drivers/scsi/ibmvscsi/ibmvscsi.h
@@ -100,7 +100,7 @@ int ibmvscsi_init_crq_queue(struct crq_queue *queue,
100void ibmvscsi_release_crq_queue(struct crq_queue *queue, 100void ibmvscsi_release_crq_queue(struct crq_queue *queue,
101 struct ibmvscsi_host_data *hostdata, 101 struct ibmvscsi_host_data *hostdata,
102 int max_requests); 102 int max_requests);
103void ibmvscsi_reset_crq_queue(struct crq_queue *queue, 103int ibmvscsi_reset_crq_queue(struct crq_queue *queue,
104 struct ibmvscsi_host_data *hostdata); 104 struct ibmvscsi_host_data *hostdata);
105 105
106void ibmvscsi_handle_crq(struct viosrp_crq *crq, 106void ibmvscsi_handle_crq(struct viosrp_crq *crq,
diff --git a/drivers/scsi/ibmvscsi/iseries_vscsi.c b/drivers/scsi/ibmvscsi/iseries_vscsi.c
index 1045872b0175..ce15d9e39621 100644
--- a/drivers/scsi/ibmvscsi/iseries_vscsi.c
+++ b/drivers/scsi/ibmvscsi/iseries_vscsi.c
@@ -117,9 +117,10 @@ void ibmvscsi_release_crq_queue(struct crq_queue *queue,
117 * 117 *
118 * no-op for iSeries 118 * no-op for iSeries
119 */ 119 */
120void ibmvscsi_reset_crq_queue(struct crq_queue *queue, 120int ibmvscsi_reset_crq_queue(struct crq_queue *queue,
121 struct ibmvscsi_host_data *hostdata) 121 struct ibmvscsi_host_data *hostdata)
122{ 122{
123 return 0;
123} 124}
124 125
125/** 126/**
diff --git a/drivers/scsi/ibmvscsi/rpa_vscsi.c b/drivers/scsi/ibmvscsi/rpa_vscsi.c
index 8bf5652f1060..75db2f5c545e 100644
--- a/drivers/scsi/ibmvscsi/rpa_vscsi.c
+++ b/drivers/scsi/ibmvscsi/rpa_vscsi.c
@@ -230,6 +230,11 @@ int ibmvscsi_init_crq_queue(struct crq_queue *queue,
230 rc = plpar_hcall_norets(H_REG_CRQ, 230 rc = plpar_hcall_norets(H_REG_CRQ,
231 vdev->unit_address, 231 vdev->unit_address,
232 queue->msg_token, PAGE_SIZE); 232 queue->msg_token, PAGE_SIZE);
233 if (rc == H_Resource)
234 /* maybe kexecing and resource is busy. try a reset */
235 rc = ibmvscsi_reset_crq_queue(queue,
236 hostdata);
237
233 if (rc == 2) { 238 if (rc == 2) {
234 /* Adapter is good, but other end is not ready */ 239 /* Adapter is good, but other end is not ready */
235 printk(KERN_WARNING "ibmvscsi: Partner adapter not ready\n"); 240 printk(KERN_WARNING "ibmvscsi: Partner adapter not ready\n");
@@ -281,7 +286,7 @@ int ibmvscsi_init_crq_queue(struct crq_queue *queue,
281 * @hostdata: ibmvscsi_host_data of host 286 * @hostdata: ibmvscsi_host_data of host
282 * 287 *
283 */ 288 */
284void ibmvscsi_reset_crq_queue(struct crq_queue *queue, 289int ibmvscsi_reset_crq_queue(struct crq_queue *queue,
285 struct ibmvscsi_host_data *hostdata) 290 struct ibmvscsi_host_data *hostdata)
286{ 291{
287 int rc; 292 int rc;
@@ -309,4 +314,5 @@ void ibmvscsi_reset_crq_queue(struct crq_queue *queue,
309 printk(KERN_WARNING 314 printk(KERN_WARNING
310 "ibmvscsi: couldn't register crq--rc 0x%x\n", rc); 315 "ibmvscsi: couldn't register crq--rc 0x%x\n", rc);
311 } 316 }
317 return rc;
312} 318}
diff --git a/drivers/scsi/iscsi_tcp.c b/drivers/scsi/iscsi_tcp.c
index 4fea3e4edaa7..3d8009f55342 100644
--- a/drivers/scsi/iscsi_tcp.c
+++ b/drivers/scsi/iscsi_tcp.c
@@ -3368,7 +3368,7 @@ iscsi_conn_set_param(iscsi_connh_t connh, enum iscsi_param param,
3368 switch(param) { 3368 switch(param) {
3369 case ISCSI_PARAM_MAX_RECV_DLENGTH: { 3369 case ISCSI_PARAM_MAX_RECV_DLENGTH: {
3370 char *saveptr = conn->data; 3370 char *saveptr = conn->data;
3371 int flags = GFP_KERNEL; 3371 gfp_t flags = GFP_KERNEL;
3372 3372
3373 if (conn->data_size >= value) { 3373 if (conn->data_size >= value) {
3374 conn->max_recv_dlength = value; 3374 conn->max_recv_dlength = value;
diff --git a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c
index 665ae79e1fd6..d0a0fdbd0fc4 100644
--- a/drivers/scsi/libata-core.c
+++ b/drivers/scsi/libata-core.c
@@ -2443,7 +2443,7 @@ static void ata_sg_clean(struct ata_queued_cmd *qc)
2443 struct scatterlist *psg = &qc->pad_sgent; 2443 struct scatterlist *psg = &qc->pad_sgent;
2444 void *addr = kmap_atomic(psg->page, KM_IRQ0); 2444 void *addr = kmap_atomic(psg->page, KM_IRQ0);
2445 memcpy(addr + psg->offset, pad_buf, qc->pad_len); 2445 memcpy(addr + psg->offset, pad_buf, qc->pad_len);
2446 kunmap_atomic(psg->page, KM_IRQ0); 2446 kunmap_atomic(addr, KM_IRQ0);
2447 } 2447 }
2448 } else { 2448 } else {
2449 if (sg_dma_len(&sg[0]) > 0) 2449 if (sg_dma_len(&sg[0]) > 0)
@@ -2717,7 +2717,7 @@ static int ata_sg_setup(struct ata_queued_cmd *qc)
2717 if (qc->tf.flags & ATA_TFLAG_WRITE) { 2717 if (qc->tf.flags & ATA_TFLAG_WRITE) {
2718 void *addr = kmap_atomic(psg->page, KM_IRQ0); 2718 void *addr = kmap_atomic(psg->page, KM_IRQ0);
2719 memcpy(pad_buf, addr + psg->offset, qc->pad_len); 2719 memcpy(pad_buf, addr + psg->offset, qc->pad_len);
2720 kunmap_atomic(psg->page, KM_IRQ0); 2720 kunmap_atomic(addr, KM_IRQ0);
2721 } 2721 }
2722 2722
2723 sg_dma_address(psg) = ap->pad_dma + (qc->tag * ATA_DMA_PAD_SZ); 2723 sg_dma_address(psg) = ap->pad_dma + (qc->tag * ATA_DMA_PAD_SZ);
diff --git a/drivers/scsi/libata-scsi.c b/drivers/scsi/libata-scsi.c
index 379e87089764..72ddba98f8fb 100644
--- a/drivers/scsi/libata-scsi.c
+++ b/drivers/scsi/libata-scsi.c
@@ -2173,9 +2173,12 @@ ata_scsi_find_dev(struct ata_port *ap, const struct scsi_device *scsidev)
2173 if (unlikely(!ata_dev_present(dev))) 2173 if (unlikely(!ata_dev_present(dev)))
2174 return NULL; 2174 return NULL;
2175 2175
2176 if (!atapi_enabled) { 2176 if (!atapi_enabled || (ap->flags & ATA_FLAG_NO_ATAPI)) {
2177 if (unlikely(dev->class == ATA_DEV_ATAPI)) 2177 if (unlikely(dev->class == ATA_DEV_ATAPI)) {
2178 printk(KERN_WARNING "ata%u(%u): WARNING: ATAPI is %s, device ignored.\n",
2179 ap->id, dev->devno, atapi_enabled ? "not supported with this driver" : "disabled");
2178 return NULL; 2180 return NULL;
2181 }
2179 } 2182 }
2180 2183
2181 return dev; 2184 return dev;
diff --git a/drivers/scsi/megaraid.c b/drivers/scsi/megaraid.c
index f9792528e33f..578143e93a6f 100644
--- a/drivers/scsi/megaraid.c
+++ b/drivers/scsi/megaraid.c
@@ -664,7 +664,7 @@ mega_build_cmd(adapter_t *adapter, Scsi_Cmnd *cmd, int *busy)
664 sg->offset; 664 sg->offset;
665 } else 665 } else
666 buf = cmd->request_buffer; 666 buf = cmd->request_buffer;
667 memset(cmd->request_buffer, 0, cmd->cmnd[4]); 667 memset(buf, 0, cmd->cmnd[4]);
668 if (cmd->use_sg) { 668 if (cmd->use_sg) {
669 struct scatterlist *sg; 669 struct scatterlist *sg;
670 670
diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h
index 7096945ea234..7b3efd531297 100644
--- a/drivers/scsi/qla2xxx/qla_def.h
+++ b/drivers/scsi/qla2xxx/qla_def.h
@@ -2476,17 +2476,9 @@ typedef struct scsi_qla_host {
2476 */ 2476 */
2477#define LOOP_TRANSITION(ha) \ 2477#define LOOP_TRANSITION(ha) \
2478 (test_bit(ISP_ABORT_NEEDED, &ha->dpc_flags) || \ 2478 (test_bit(ISP_ABORT_NEEDED, &ha->dpc_flags) || \
2479 test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags)) 2479 test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags) || \
2480
2481#define LOOP_NOT_READY(ha) \
2482 ((test_bit(ISP_ABORT_NEEDED, &ha->dpc_flags) || \
2483 test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags) || \
2484 test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags) || \
2485 test_bit(LOOP_RESYNC_ACTIVE, &ha->dpc_flags)) || \
2486 atomic_read(&ha->loop_state) == LOOP_DOWN) 2480 atomic_read(&ha->loop_state) == LOOP_DOWN)
2487 2481
2488#define LOOP_RDY(ha) (!LOOP_NOT_READY(ha))
2489
2490#define TGT_Q(ha, t) (ha->otgt[t]) 2482#define TGT_Q(ha, t) (ha->otgt[t])
2491 2483
2492#define to_qla_host(x) ((scsi_qla_host_t *) (x)->hostdata) 2484#define to_qla_host(x) ((scsi_qla_host_t *) (x)->hostdata)
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index 2d720121a0d3..c46d2469b85f 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -1259,7 +1259,7 @@ qla2x00_configure_hba(scsi_qla_host_t *ha)
1259 rval = qla2x00_get_adapter_id(ha, 1259 rval = qla2x00_get_adapter_id(ha,
1260 &loop_id, &al_pa, &area, &domain, &topo); 1260 &loop_id, &al_pa, &area, &domain, &topo);
1261 if (rval != QLA_SUCCESS) { 1261 if (rval != QLA_SUCCESS) {
1262 if (LOOP_NOT_READY(ha) || atomic_read(&ha->loop_down_timer) || 1262 if (LOOP_TRANSITION(ha) || atomic_read(&ha->loop_down_timer) ||
1263 (rval == QLA_COMMAND_ERROR && loop_id == 0x7)) { 1263 (rval == QLA_COMMAND_ERROR && loop_id == 0x7)) {
1264 DEBUG2(printk("%s(%ld) Loop is in a transition state\n", 1264 DEBUG2(printk("%s(%ld) Loop is in a transition state\n",
1265 __func__, ha->host_no)); 1265 __func__, ha->host_no));
@@ -1796,7 +1796,7 @@ qla2x00_configure_loop(scsi_qla_host_t *ha)
1796 } 1796 }
1797 1797
1798 if (rval == QLA_SUCCESS && test_bit(RSCN_UPDATE, &flags)) { 1798 if (rval == QLA_SUCCESS && test_bit(RSCN_UPDATE, &flags)) {
1799 if (LOOP_NOT_READY(ha)) { 1799 if (LOOP_TRANSITION(ha)) {
1800 rval = QLA_FUNCTION_FAILED; 1800 rval = QLA_FUNCTION_FAILED;
1801 } else { 1801 } else {
1802 rval = qla2x00_configure_fabric(ha); 1802 rval = qla2x00_configure_fabric(ha);
@@ -2369,7 +2369,7 @@ qla2x00_find_all_fabric_devs(scsi_qla_host_t *ha, struct list_head *new_fcports)
2369 if (qla2x00_is_reserved_id(ha, loop_id)) 2369 if (qla2x00_is_reserved_id(ha, loop_id))
2370 continue; 2370 continue;
2371 2371
2372 if (atomic_read(&ha->loop_down_timer) || LOOP_NOT_READY(ha)) 2372 if (atomic_read(&ha->loop_down_timer) || LOOP_TRANSITION(ha))
2373 break; 2373 break;
2374 2374
2375 if (swl != NULL) { 2375 if (swl != NULL) {
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
index 09afc0f06bd4..5181d966fecb 100644
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -909,6 +909,21 @@ qla2x00_status_entry(scsi_qla_host_t *ha, void *pkt)
909 resid = resid_len; 909 resid = resid_len;
910 cp->resid = resid; 910 cp->resid = resid;
911 CMD_RESID_LEN(cp) = resid; 911 CMD_RESID_LEN(cp) = resid;
912
913 if (!lscsi_status &&
914 ((unsigned)(cp->request_bufflen - resid) <
915 cp->underflow)) {
916 qla_printk(KERN_INFO, ha,
917 "scsi(%ld:%d:%d:%d): Mid-layer underflow "
918 "detected (%x of %x bytes)...returning "
919 "error status.\n", ha->host_no,
920 cp->device->channel, cp->device->id,
921 cp->device->lun, resid,
922 cp->request_bufflen);
923
924 cp->result = DID_ERROR << 16;
925 break;
926 }
912 } 927 }
913 cp->result = DID_OK << 16 | lscsi_status; 928 cp->result = DID_OK << 16 | lscsi_status;
914 929
diff --git a/drivers/scsi/sata_mv.c b/drivers/scsi/sata_mv.c
index ab7432a5778e..9321cdf45680 100644
--- a/drivers/scsi/sata_mv.c
+++ b/drivers/scsi/sata_mv.c
@@ -86,7 +86,8 @@ enum {
86 MV_FLAG_DUAL_HC = (1 << 30), /* two SATA Host Controllers */ 86 MV_FLAG_DUAL_HC = (1 << 30), /* two SATA Host Controllers */
87 MV_FLAG_IRQ_COALESCE = (1 << 29), /* IRQ coalescing capability */ 87 MV_FLAG_IRQ_COALESCE = (1 << 29), /* IRQ coalescing capability */
88 MV_COMMON_FLAGS = (ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY | 88 MV_COMMON_FLAGS = (ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY |
89 ATA_FLAG_SATA_RESET | ATA_FLAG_MMIO), 89 ATA_FLAG_SATA_RESET | ATA_FLAG_MMIO |
90 ATA_FLAG_NO_ATAPI),
90 MV_6XXX_FLAGS = MV_FLAG_IRQ_COALESCE, 91 MV_6XXX_FLAGS = MV_FLAG_IRQ_COALESCE,
91 92
92 CRQB_FLAG_READ = (1 << 0), 93 CRQB_FLAG_READ = (1 << 0),
diff --git a/drivers/scsi/sata_promise.c b/drivers/scsi/sata_promise.c
index 8a8e3e3ef0ed..2691625f9bce 100644
--- a/drivers/scsi/sata_promise.c
+++ b/drivers/scsi/sata_promise.c
@@ -70,6 +70,9 @@ enum {
70 PDC_HAS_PATA = (1 << 1), /* PDC20375 has PATA */ 70 PDC_HAS_PATA = (1 << 1), /* PDC20375 has PATA */
71 71
72 PDC_RESET = (1 << 11), /* HDMA reset */ 72 PDC_RESET = (1 << 11), /* HDMA reset */
73
74 PDC_COMMON_FLAGS = ATA_FLAG_NO_LEGACY | ATA_FLAG_SRST |
75 ATA_FLAG_MMIO | ATA_FLAG_NO_ATAPI,
73}; 76};
74 77
75 78
@@ -162,8 +165,7 @@ static struct ata_port_info pdc_port_info[] = {
162 /* board_2037x */ 165 /* board_2037x */
163 { 166 {
164 .sht = &pdc_ata_sht, 167 .sht = &pdc_ata_sht,
165 .host_flags = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY | 168 .host_flags = PDC_COMMON_FLAGS | ATA_FLAG_SATA,
166 ATA_FLAG_SRST | ATA_FLAG_MMIO,
167 .pio_mask = 0x1f, /* pio0-4 */ 169 .pio_mask = 0x1f, /* pio0-4 */
168 .mwdma_mask = 0x07, /* mwdma0-2 */ 170 .mwdma_mask = 0x07, /* mwdma0-2 */
169 .udma_mask = 0x7f, /* udma0-6 ; FIXME */ 171 .udma_mask = 0x7f, /* udma0-6 ; FIXME */
@@ -173,8 +175,7 @@ static struct ata_port_info pdc_port_info[] = {
173 /* board_20319 */ 175 /* board_20319 */
174 { 176 {
175 .sht = &pdc_ata_sht, 177 .sht = &pdc_ata_sht,
176 .host_flags = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY | 178 .host_flags = PDC_COMMON_FLAGS | ATA_FLAG_SATA,
177 ATA_FLAG_SRST | ATA_FLAG_MMIO,
178 .pio_mask = 0x1f, /* pio0-4 */ 179 .pio_mask = 0x1f, /* pio0-4 */
179 .mwdma_mask = 0x07, /* mwdma0-2 */ 180 .mwdma_mask = 0x07, /* mwdma0-2 */
180 .udma_mask = 0x7f, /* udma0-6 ; FIXME */ 181 .udma_mask = 0x7f, /* udma0-6 ; FIXME */
@@ -184,8 +185,7 @@ static struct ata_port_info pdc_port_info[] = {
184 /* board_20619 */ 185 /* board_20619 */
185 { 186 {
186 .sht = &pdc_ata_sht, 187 .sht = &pdc_ata_sht,
187 .host_flags = ATA_FLAG_NO_LEGACY | ATA_FLAG_SRST | 188 .host_flags = PDC_COMMON_FLAGS | ATA_FLAG_SLAVE_POSS,
188 ATA_FLAG_MMIO | ATA_FLAG_SLAVE_POSS,
189 .pio_mask = 0x1f, /* pio0-4 */ 189 .pio_mask = 0x1f, /* pio0-4 */
190 .mwdma_mask = 0x07, /* mwdma0-2 */ 190 .mwdma_mask = 0x07, /* mwdma0-2 */
191 .udma_mask = 0x7f, /* udma0-6 ; FIXME */ 191 .udma_mask = 0x7f, /* udma0-6 ; FIXME */
diff --git a/drivers/scsi/sata_sx4.c b/drivers/scsi/sata_sx4.c
index dcc3ad9a9d6e..ac7b0d819ebc 100644
--- a/drivers/scsi/sata_sx4.c
+++ b/drivers/scsi/sata_sx4.c
@@ -220,7 +220,8 @@ static struct ata_port_info pdc_port_info[] = {
220 { 220 {
221 .sht = &pdc_sata_sht, 221 .sht = &pdc_sata_sht,
222 .host_flags = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY | 222 .host_flags = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY |
223 ATA_FLAG_SRST | ATA_FLAG_MMIO, 223 ATA_FLAG_SRST | ATA_FLAG_MMIO |
224 ATA_FLAG_NO_ATAPI,
224 .pio_mask = 0x1f, /* pio0-4 */ 225 .pio_mask = 0x1f, /* pio0-4 */
225 .mwdma_mask = 0x07, /* mwdma0-2 */ 226 .mwdma_mask = 0x07, /* mwdma0-2 */
226 .udma_mask = 0x7f, /* udma0-6 ; FIXME */ 227 .udma_mask = 0x7f, /* udma0-6 ; FIXME */
diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c
index 18c5d2523014..c0ae9e965f6f 100644
--- a/drivers/scsi/scsi_error.c
+++ b/drivers/scsi/scsi_error.c
@@ -422,10 +422,15 @@ static int scsi_eh_completed_normally(struct scsi_cmnd *scmd)
422 **/ 422 **/
423static void scsi_eh_done(struct scsi_cmnd *scmd) 423static void scsi_eh_done(struct scsi_cmnd *scmd)
424{ 424{
425 struct completion *eh_action;
426
425 SCSI_LOG_ERROR_RECOVERY(3, 427 SCSI_LOG_ERROR_RECOVERY(3,
426 printk("%s scmd: %p result: %x\n", 428 printk("%s scmd: %p result: %x\n",
427 __FUNCTION__, scmd, scmd->result)); 429 __FUNCTION__, scmd, scmd->result));
428 complete(scmd->device->host->eh_action); 430
431 eh_action = scmd->device->host->eh_action;
432 if (eh_action)
433 complete(eh_action);
429} 434}
430 435
431/** 436/**
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index 4afef5cdcb17..dc249cb970ea 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -542,10 +542,17 @@ static void scsi_requeue_command(struct request_queue *q, struct scsi_cmnd *cmd)
542 542
543void scsi_next_command(struct scsi_cmnd *cmd) 543void scsi_next_command(struct scsi_cmnd *cmd)
544{ 544{
545 struct request_queue *q = cmd->device->request_queue; 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);
546 550
547 scsi_put_command(cmd); 551 scsi_put_command(cmd);
548 scsi_run_queue(q); 552 scsi_run_queue(q);
553
554 /* ok to remove device now */
555 put_device(&sdev->sdev_gendev);
549} 556}
550 557
551void scsi_run_host_queues(struct Scsi_Host *shost) 558void scsi_run_host_queues(struct Scsi_Host *shost)
@@ -1078,6 +1085,26 @@ static void scsi_generic_done(struct scsi_cmnd *cmd)
1078 scsi_io_completion(cmd, cmd->result == 0 ? cmd->bufflen : 0, 0); 1085 scsi_io_completion(cmd, cmd->result == 0 ? cmd->bufflen : 0, 0);
1079} 1086}
1080 1087
1088void scsi_setup_blk_pc_cmnd(struct scsi_cmnd *cmd, int retries)
1089{
1090 struct request *req = cmd->request;
1091
1092 BUG_ON(sizeof(req->cmd) > sizeof(cmd->cmnd));
1093 memcpy(cmd->cmnd, req->cmd, sizeof(cmd->cmnd));
1094 cmd->cmd_len = req->cmd_len;
1095 if (!req->data_len)
1096 cmd->sc_data_direction = DMA_NONE;
1097 else if (rq_data_dir(req) == WRITE)
1098 cmd->sc_data_direction = DMA_TO_DEVICE;
1099 else
1100 cmd->sc_data_direction = DMA_FROM_DEVICE;
1101
1102 cmd->transfersize = req->data_len;
1103 cmd->allowed = retries;
1104 cmd->timeout_per_command = req->timeout;
1105}
1106EXPORT_SYMBOL_GPL(scsi_setup_blk_pc_cmnd);
1107
1081static int scsi_prep_fn(struct request_queue *q, struct request *req) 1108static int scsi_prep_fn(struct request_queue *q, struct request *req)
1082{ 1109{
1083 struct scsi_device *sdev = q->queuedata; 1110 struct scsi_device *sdev = q->queuedata;
@@ -1213,18 +1240,7 @@ static int scsi_prep_fn(struct request_queue *q, struct request *req)
1213 goto kill; 1240 goto kill;
1214 } 1241 }
1215 } else { 1242 } else {
1216 memcpy(cmd->cmnd, req->cmd, sizeof(cmd->cmnd)); 1243 scsi_setup_blk_pc_cmnd(cmd, 3);
1217 cmd->cmd_len = req->cmd_len;
1218 if (rq_data_dir(req) == WRITE)
1219 cmd->sc_data_direction = DMA_TO_DEVICE;
1220 else if (req->data_len)
1221 cmd->sc_data_direction = DMA_FROM_DEVICE;
1222 else
1223 cmd->sc_data_direction = DMA_NONE;
1224
1225 cmd->transfersize = req->data_len;
1226 cmd->allowed = 3;
1227 cmd->timeout_per_command = req->timeout;
1228 cmd->done = scsi_generic_done; 1244 cmd->done = scsi_generic_done;
1229 } 1245 }
1230 } 1246 }
diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
index 374853df9cca..94e5167f260d 100644
--- a/drivers/scsi/scsi_scan.c
+++ b/drivers/scsi/scsi_scan.c
@@ -266,8 +266,6 @@ static struct scsi_device *scsi_alloc_sdev(struct scsi_target *starget,
266 /* 266 /*
267 * if LLDD reports slave not present, don't clutter 267 * if LLDD reports slave not present, don't clutter
268 * console with alloc failure messages 268 * console with alloc failure messages
269
270
271 */ 269 */
272 if (ret == -ENXIO) 270 if (ret == -ENXIO)
273 display_failure_msg = 0; 271 display_failure_msg = 0;
@@ -279,7 +277,6 @@ static struct scsi_device *scsi_alloc_sdev(struct scsi_target *starget,
279 277
280out_device_destroy: 278out_device_destroy:
281 transport_destroy_device(&sdev->sdev_gendev); 279 transport_destroy_device(&sdev->sdev_gendev);
282 scsi_free_queue(sdev->request_queue);
283 put_device(&sdev->sdev_gendev); 280 put_device(&sdev->sdev_gendev);
284out: 281out:
285 if (display_failure_msg) 282 if (display_failure_msg)
diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c
index 49fd18c1a9c6..e08462d50c97 100644
--- a/drivers/scsi/scsi_transport_iscsi.c
+++ b/drivers/scsi/scsi_transport_iscsi.c
@@ -249,7 +249,7 @@ static inline struct list_head *skb_to_lh(struct sk_buff *skb)
249} 249}
250 250
251static void* 251static void*
252mempool_zone_alloc_skb(unsigned int gfp_mask, void *pool_data) 252mempool_zone_alloc_skb(gfp_t gfp_mask, void *pool_data)
253{ 253{
254 struct mempool_zone *zone = pool_data; 254 struct mempool_zone *zone = pool_data;
255 255
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index 8613a1317712..03fcbab30033 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -245,24 +245,10 @@ static int sd_init_command(struct scsi_cmnd * SCpnt)
245 * SG_IO from block layer already setup, just copy cdb basically 245 * SG_IO from block layer already setup, just copy cdb basically
246 */ 246 */
247 if (blk_pc_request(rq)) { 247 if (blk_pc_request(rq)) {
248 if (sizeof(rq->cmd) > sizeof(SCpnt->cmnd)) 248 scsi_setup_blk_pc_cmnd(SCpnt, SD_PASSTHROUGH_RETRIES);
249 return 0;
250
251 memcpy(SCpnt->cmnd, rq->cmd, sizeof(SCpnt->cmnd));
252 SCpnt->cmd_len = rq->cmd_len;
253 if (rq_data_dir(rq) == WRITE)
254 SCpnt->sc_data_direction = DMA_TO_DEVICE;
255 else if (rq->data_len)
256 SCpnt->sc_data_direction = DMA_FROM_DEVICE;
257 else
258 SCpnt->sc_data_direction = DMA_NONE;
259
260 this_count = rq->data_len;
261 if (rq->timeout) 249 if (rq->timeout)
262 timeout = rq->timeout; 250 timeout = rq->timeout;
263 251
264 SCpnt->transfersize = rq->data_len;
265 SCpnt->allowed = SD_PASSTHROUGH_RETRIES;
266 goto queue; 252 goto queue;
267 } 253 }
268 254
diff --git a/drivers/scsi/sr.c b/drivers/scsi/sr.c
index d68cea753bb2..fb4012b5c188 100644
--- a/drivers/scsi/sr.c
+++ b/drivers/scsi/sr.c
@@ -320,25 +320,11 @@ static int sr_init_command(struct scsi_cmnd * SCpnt)
320 * these are already setup, just copy cdb basically 320 * these are already setup, just copy cdb basically
321 */ 321 */
322 if (SCpnt->request->flags & REQ_BLOCK_PC) { 322 if (SCpnt->request->flags & REQ_BLOCK_PC) {
323 struct request *rq = SCpnt->request; 323 scsi_setup_blk_pc_cmnd(SCpnt, MAX_RETRIES);
324 324
325 if (sizeof(rq->cmd) > sizeof(SCpnt->cmnd)) 325 if (SCpnt->timeout_per_command)
326 return 0; 326 timeout = SCpnt->timeout_per_command;
327
328 memcpy(SCpnt->cmnd, rq->cmd, sizeof(SCpnt->cmnd));
329 SCpnt->cmd_len = rq->cmd_len;
330 if (!rq->data_len)
331 SCpnt->sc_data_direction = DMA_NONE;
332 else if (rq_data_dir(rq) == WRITE)
333 SCpnt->sc_data_direction = DMA_TO_DEVICE;
334 else
335 SCpnt->sc_data_direction = DMA_FROM_DEVICE;
336
337 this_count = rq->data_len;
338 if (rq->timeout)
339 timeout = rq->timeout;
340 327
341 SCpnt->transfersize = rq->data_len;
342 goto queue; 328 goto queue;
343 } 329 }
344 330
diff --git a/drivers/scsi/st.c b/drivers/scsi/st.c
index 7ac6ea141fff..dd592f6a2529 100644
--- a/drivers/scsi/st.c
+++ b/drivers/scsi/st.c
@@ -4194,27 +4194,10 @@ static void st_intr(struct scsi_cmnd *SCpnt)
4194 */ 4194 */
4195static int st_init_command(struct scsi_cmnd *SCpnt) 4195static int st_init_command(struct scsi_cmnd *SCpnt)
4196{ 4196{
4197 struct request *rq;
4198
4199 if (!(SCpnt->request->flags & REQ_BLOCK_PC)) 4197 if (!(SCpnt->request->flags & REQ_BLOCK_PC))
4200 return 0; 4198 return 0;
4201 4199
4202 rq = SCpnt->request; 4200 scsi_setup_blk_pc_cmnd(SCpnt, 0);
4203 if (sizeof(rq->cmd) > sizeof(SCpnt->cmnd))
4204 return 0;
4205
4206 memcpy(SCpnt->cmnd, rq->cmd, sizeof(SCpnt->cmnd));
4207 SCpnt->cmd_len = rq->cmd_len;
4208
4209 if (rq_data_dir(rq) == WRITE)
4210 SCpnt->sc_data_direction = DMA_TO_DEVICE;
4211 else if (rq->data_len)
4212 SCpnt->sc_data_direction = DMA_FROM_DEVICE;
4213 else
4214 SCpnt->sc_data_direction = DMA_NONE;
4215
4216 SCpnt->timeout_per_command = rq->timeout;
4217 SCpnt->transfersize = rq->data_len;
4218 SCpnt->done = st_intr; 4201 SCpnt->done = st_intr;
4219 return 1; 4202 return 1;
4220} 4203}
diff --git a/drivers/scsi/sym53c8xx_2/sym_hipd.c b/drivers/scsi/sym53c8xx_2/sym_hipd.c
index a7420cad4547..1564ca203a3e 100644
--- a/drivers/scsi/sym53c8xx_2/sym_hipd.c
+++ b/drivers/scsi/sym53c8xx_2/sym_hipd.c
@@ -1405,7 +1405,6 @@ static void sym_check_goals(struct sym_hcb *np, struct scsi_target *starget,
1405 goal->iu = 0; 1405 goal->iu = 0;
1406 goal->dt = 0; 1406 goal->dt = 0;
1407 goal->qas = 0; 1407 goal->qas = 0;
1408 goal->period = 0;
1409 goal->offset = 0; 1408 goal->offset = 0;
1410 return; 1409 return;
1411 } 1410 }
@@ -1465,7 +1464,8 @@ static int sym_prepare_nego(struct sym_hcb *np, struct sym_ccb *cp, u_char *msgp
1465 * Many devices implement PPR in a buggy way, so only use it if we 1464 * Many devices implement PPR in a buggy way, so only use it if we
1466 * really want to. 1465 * really want to.
1467 */ 1466 */
1468 if (goal->iu || goal->dt || goal->qas || (goal->period < 0xa)) { 1467 if (goal->offset &&
1468 (goal->iu || goal->dt || goal->qas || (goal->period < 0xa))) {
1469 nego = NS_PPR; 1469 nego = NS_PPR;
1470 } else if (spi_width(starget) != goal->width) { 1470 } else if (spi_width(starget) != goal->width) {
1471 nego = NS_WIDE; 1471 nego = NS_WIDE;
diff --git a/drivers/serial/8250_pci.c b/drivers/serial/8250_pci.c
index 8d92adfbb8bd..8adca0ce267f 100644
--- a/drivers/serial/8250_pci.c
+++ b/drivers/serial/8250_pci.c
@@ -516,7 +516,7 @@ pci_timedia_setup(struct serial_private *priv, struct pciserial_board *board,
516 break; 516 break;
517 case 3: 517 case 3:
518 offset = board->uart_offset; 518 offset = board->uart_offset;
519 bar = 1; 519 /* FALLTHROUGH */
520 case 4: /* BAR 2 */ 520 case 4: /* BAR 2 */
521 case 5: /* BAR 3 */ 521 case 5: /* BAR 3 */
522 case 6: /* BAR 4 */ 522 case 6: /* BAR 4 */
diff --git a/drivers/usb/host/uhci-hcd.c b/drivers/usb/host/uhci-hcd.c
index ed550132db0b..79efaf7d86a3 100644
--- a/drivers/usb/host/uhci-hcd.c
+++ b/drivers/usb/host/uhci-hcd.c
@@ -717,6 +717,7 @@ static int uhci_suspend(struct usb_hcd *hcd, pm_message_t message)
717 * at the source, so we must turn off PIRQ. 717 * at the source, so we must turn off PIRQ.
718 */ 718 */
719 pci_write_config_word(to_pci_dev(uhci_dev(uhci)), USBLEGSUP, 0); 719 pci_write_config_word(to_pci_dev(uhci_dev(uhci)), USBLEGSUP, 0);
720 mb();
720 clear_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags); 721 clear_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
721 uhci->hc_inaccessible = 1; 722 uhci->hc_inaccessible = 1;
722 hcd->poll_rh = 0; 723 hcd->poll_rh = 0;
@@ -738,6 +739,7 @@ static int uhci_resume(struct usb_hcd *hcd)
738 * really don't want to keep a stale HCD_FLAG_HW_ACCESSIBLE=0 739 * really don't want to keep a stale HCD_FLAG_HW_ACCESSIBLE=0
739 */ 740 */
740 set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags); 741 set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
742 mb();
741 743
742 if (uhci->rh_state == UHCI_RH_RESET) /* Dead */ 744 if (uhci->rh_state == UHCI_RH_RESET) /* Dead */
743 return 0; 745 return 0;
diff --git a/drivers/usb/input/hid-core.c b/drivers/usb/input/hid-core.c
index 45f3130fadea..a3e44ef1df43 100644
--- a/drivers/usb/input/hid-core.c
+++ b/drivers/usb/input/hid-core.c
@@ -893,8 +893,10 @@ static int hid_input_report(int type, struct urb *urb, int interrupt, struct pt_
893 893
894 size = ((report->size - 1) >> 3) + 1; 894 size = ((report->size - 1) >> 3) + 1;
895 895
896 if (len < size) 896 if (len < size) {
897 dbg("report %d is too short, (%d < %d)", report->id, len, size); 897 dbg("report %d is too short, (%d < %d)", report->id, len, size);
898 memset(data + len, 0, size - len);
899 }
898 900
899 if (hid->claimed & HID_CLAIMED_HIDDEV) 901 if (hid->claimed & HID_CLAIMED_HIDDEV)
900 hiddev_report_event(hid, report); 902 hiddev_report_event(hid, report);
diff --git a/drivers/usb/input/hid-input.c b/drivers/usb/input/hid-input.c
index 9ff25eb520a6..1220a5004a5c 100644
--- a/drivers/usb/input/hid-input.c
+++ b/drivers/usb/input/hid-input.c
@@ -137,6 +137,7 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
137 switch (usage->hid & 0xffff) { 137 switch (usage->hid & 0xffff) {
138 case 0xba: map_abs(ABS_RUDDER); break; 138 case 0xba: map_abs(ABS_RUDDER); break;
139 case 0xbb: map_abs(ABS_THROTTLE); break; 139 case 0xbb: map_abs(ABS_THROTTLE); break;
140 default: goto ignore;
140 } 141 }
141 break; 142 break;
142 143
diff --git a/drivers/usb/misc/auerswald.c b/drivers/usb/misc/auerswald.c
index 2a28ceeaa66a..b293db3c28c3 100644
--- a/drivers/usb/misc/auerswald.c
+++ b/drivers/usb/misc/auerswald.c
@@ -1696,7 +1696,7 @@ static ssize_t auerchar_write (struct file *file, const char __user *buf, size_t
1696 int ret; 1696 int ret;
1697 wait_queue_t wait; 1697 wait_queue_t wait;
1698 1698
1699 dbg ("auerchar_write %d bytes", len); 1699 dbg ("auerchar_write %zd bytes", len);
1700 1700
1701 /* Error checking */ 1701 /* Error checking */
1702 if (!ccp) 1702 if (!ccp)
diff --git a/drivers/video/arcfb.c b/drivers/video/arcfb.c
index 080db812ca48..2784f0a9d693 100644
--- a/drivers/video/arcfb.c
+++ b/drivers/video/arcfb.c
@@ -441,7 +441,7 @@ static int arcfb_ioctl(struct inode *inode, struct file *file,
441 * the fb. it's inefficient for them to do anything less than 64*8 441 * the fb. it's inefficient for them to do anything less than 64*8
442 * writes since we update the lcd in each write() anyway. 442 * writes since we update the lcd in each write() anyway.
443 */ 443 */
444static ssize_t arcfb_write(struct file *file, const char *buf, size_t count, 444static ssize_t arcfb_write(struct file *file, const char __user *buf, size_t count,
445 loff_t *ppos) 445 loff_t *ppos)
446{ 446{
447 /* modded from epson 1355 */ 447 /* modded from epson 1355 */
diff --git a/drivers/video/bw2.c b/drivers/video/bw2.c
index d3728f60961e..9248fe1fbb1a 100644
--- a/drivers/video/bw2.c
+++ b/drivers/video/bw2.c
@@ -121,7 +121,6 @@ struct bw2_par {
121 unsigned long fbsize; 121 unsigned long fbsize;
122 122
123 struct sbus_dev *sdev; 123 struct sbus_dev *sdev;
124 struct list_head list;
125}; 124};
126 125
127/** 126/**
diff --git a/drivers/video/cfbcopyarea.c b/drivers/video/cfbcopyarea.c
index cdc71572cf35..74415325b016 100644
--- a/drivers/video/cfbcopyarea.c
+++ b/drivers/video/cfbcopyarea.c
@@ -64,8 +64,8 @@ bitcpy(unsigned long __iomem *dst, int dst_idx, const unsigned long __iomem *src
64 int const shift = dst_idx-src_idx; 64 int const shift = dst_idx-src_idx;
65 int left, right; 65 int left, right;
66 66
67 first = ~0UL >> dst_idx; 67 first = FB_SHIFT_HIGH(~0UL, dst_idx);
68 last = ~(~0UL >> ((dst_idx+n) % bits)); 68 last = ~(FB_SHIFT_HIGH(~0UL, (dst_idx+n) % bits));
69 69
70 if (!shift) { 70 if (!shift) {
71 // Same alignment for source and dest 71 // Same alignment for source and dest
@@ -216,8 +216,8 @@ bitcpy_rev(unsigned long __iomem *dst, int dst_idx, const unsigned long __iomem
216 216
217 shift = dst_idx-src_idx; 217 shift = dst_idx-src_idx;
218 218
219 first = ~0UL << (bits - 1 - dst_idx); 219 first = FB_SHIFT_LOW(~0UL, bits - 1 - dst_idx);
220 last = ~(~0UL << (bits - 1 - ((dst_idx-n) % bits))); 220 last = ~(FB_SHIFT_LOW(~0UL, bits - 1 - ((dst_idx-n) % bits)));
221 221
222 if (!shift) { 222 if (!shift) {
223 // Same alignment for source and dest 223 // Same alignment for source and dest
diff --git a/drivers/video/cfbfillrect.c b/drivers/video/cfbfillrect.c
index 167d9314e6eb..e5ff62e9cfb8 100644
--- a/drivers/video/cfbfillrect.c
+++ b/drivers/video/cfbfillrect.c
@@ -110,8 +110,8 @@ bitfill_aligned(unsigned long __iomem *dst, int dst_idx, unsigned long pat, unsi
110 if (!n) 110 if (!n)
111 return; 111 return;
112 112
113 first = ~0UL >> dst_idx; 113 first = FB_SHIFT_HIGH(~0UL, dst_idx);
114 last = ~(~0UL >> ((dst_idx+n) % bits)); 114 last = ~(FB_SHIFT_HIGH(~0UL, (dst_idx+n) % bits));
115 115
116 if (dst_idx+n <= bits) { 116 if (dst_idx+n <= bits) {
117 // Single word 117 // Single word
@@ -167,8 +167,8 @@ bitfill_unaligned(unsigned long __iomem *dst, int dst_idx, unsigned long pat,
167 if (!n) 167 if (!n)
168 return; 168 return;
169 169
170 first = ~0UL >> dst_idx; 170 first = FB_SHIFT_HIGH(~0UL, dst_idx);
171 last = ~(~0UL >> ((dst_idx+n) % bits)); 171 last = ~(FB_SHIFT_HIGH(~0UL, (dst_idx+n) % bits));
172 172
173 if (dst_idx+n <= bits) { 173 if (dst_idx+n <= bits) {
174 // Single word 174 // Single word
@@ -221,8 +221,8 @@ bitfill_aligned_rev(unsigned long __iomem *dst, int dst_idx, unsigned long pat,
221 if (!n) 221 if (!n)
222 return; 222 return;
223 223
224 first = ~0UL >> dst_idx; 224 first = FB_SHIFT_HIGH(~0UL, dst_idx);
225 last = ~(~0UL >> ((dst_idx+n) % bits)); 225 last = ~(FB_SHIFT_HIGH(~0UL, (dst_idx+n) % bits));
226 226
227 if (dst_idx+n <= bits) { 227 if (dst_idx+n <= bits) {
228 // Single word 228 // Single word
@@ -290,8 +290,8 @@ bitfill_unaligned_rev(unsigned long __iomem *dst, int dst_idx, unsigned long pat
290 if (!n) 290 if (!n)
291 return; 291 return;
292 292
293 first = ~0UL >> dst_idx; 293 first = FB_SHIFT_HIGH(~0UL, dst_idx);
294 last = ~(~0UL >> ((dst_idx+n) % bits)); 294 last = ~(FB_SHIFT_HIGH(~0UL, (dst_idx+n) % bits));
295 295
296 if (dst_idx+n <= bits) { 296 if (dst_idx+n <= bits) {
297 // Single word 297 // Single word
diff --git a/drivers/video/cfbimgblt.c b/drivers/video/cfbimgblt.c
index a7770c4f17d0..910e2338a27e 100644
--- a/drivers/video/cfbimgblt.c
+++ b/drivers/video/cfbimgblt.c
@@ -76,18 +76,6 @@ static u32 cfb_tab32[] = {
76#define FB_WRITEL fb_writel 76#define FB_WRITEL fb_writel
77#define FB_READL fb_readl 77#define FB_READL fb_readl
78 78
79#if defined (__BIG_ENDIAN)
80#define LEFT_POS(bpp) (32 - bpp)
81#define SHIFT_HIGH(val, bits) ((val) >> (bits))
82#define SHIFT_LOW(val, bits) ((val) << (bits))
83#define BIT_NR(b) (7 - (b))
84#else
85#define LEFT_POS(bpp) (0)
86#define SHIFT_HIGH(val, bits) ((val) << (bits))
87#define SHIFT_LOW(val, bits) ((val) >> (bits))
88#define BIT_NR(b) (b)
89#endif
90
91static inline void color_imageblit(const struct fb_image *image, 79static inline void color_imageblit(const struct fb_image *image,
92 struct fb_info *p, u8 __iomem *dst1, 80 struct fb_info *p, u8 __iomem *dst1,
93 u32 start_index, 81 u32 start_index,
@@ -109,7 +97,7 @@ static inline void color_imageblit(const struct fb_image *image,
109 val = 0; 97 val = 0;
110 98
111 if (start_index) { 99 if (start_index) {
112 u32 start_mask = ~(SHIFT_HIGH(~(u32)0, start_index)); 100 u32 start_mask = ~(FB_SHIFT_HIGH(~(u32)0, start_index));
113 val = FB_READL(dst) & start_mask; 101 val = FB_READL(dst) & start_mask;
114 shift = start_index; 102 shift = start_index;
115 } 103 }
@@ -119,20 +107,20 @@ static inline void color_imageblit(const struct fb_image *image,
119 color = palette[*src]; 107 color = palette[*src];
120 else 108 else
121 color = *src; 109 color = *src;
122 color <<= LEFT_POS(bpp); 110 color <<= FB_LEFT_POS(bpp);
123 val |= SHIFT_HIGH(color, shift); 111 val |= FB_SHIFT_HIGH(color, shift);
124 if (shift >= null_bits) { 112 if (shift >= null_bits) {
125 FB_WRITEL(val, dst++); 113 FB_WRITEL(val, dst++);
126 114
127 val = (shift == null_bits) ? 0 : 115 val = (shift == null_bits) ? 0 :
128 SHIFT_LOW(color, 32 - shift); 116 FB_SHIFT_LOW(color, 32 - shift);
129 } 117 }
130 shift += bpp; 118 shift += bpp;
131 shift &= (32 - 1); 119 shift &= (32 - 1);
132 src++; 120 src++;
133 } 121 }
134 if (shift) { 122 if (shift) {
135 u32 end_mask = SHIFT_HIGH(~(u32)0, shift); 123 u32 end_mask = FB_SHIFT_HIGH(~(u32)0, shift);
136 124
137 FB_WRITEL((FB_READL(dst) & end_mask) | val, dst); 125 FB_WRITEL((FB_READL(dst) & end_mask) | val, dst);
138 } 126 }
@@ -162,6 +150,8 @@ static inline void slow_imageblit(const struct fb_image *image, struct fb_info *
162 u32 i, j, l; 150 u32 i, j, l;
163 151
164 dst2 = (u32 __iomem *) dst1; 152 dst2 = (u32 __iomem *) dst1;
153 fgcolor <<= FB_LEFT_POS(bpp);
154 bgcolor <<= FB_LEFT_POS(bpp);
165 155
166 for (i = image->height; i--; ) { 156 for (i = image->height; i--; ) {
167 shift = val = 0; 157 shift = val = 0;
@@ -172,22 +162,21 @@ static inline void slow_imageblit(const struct fb_image *image, struct fb_info *
172 162
173 /* write leading bits */ 163 /* write leading bits */
174 if (start_index) { 164 if (start_index) {
175 u32 start_mask = ~(SHIFT_HIGH(~(u32)0, start_index)); 165 u32 start_mask = ~(FB_SHIFT_HIGH(~(u32)0,start_index));
176 val = FB_READL(dst) & start_mask; 166 val = FB_READL(dst) & start_mask;
177 shift = start_index; 167 shift = start_index;
178 } 168 }
179 169
180 while (j--) { 170 while (j--) {
181 l--; 171 l--;
182 color = (*s & 1 << (BIT_NR(l))) ? fgcolor : bgcolor; 172 color = (*s & 1 << (FB_BIT_NR(l))) ? fgcolor : bgcolor;
183 color <<= LEFT_POS(bpp); 173 val |= FB_SHIFT_HIGH(color, shift);
184 val |= SHIFT_HIGH(color, shift);
185 174
186 /* Did the bitshift spill bits to the next long? */ 175 /* Did the bitshift spill bits to the next long? */
187 if (shift >= null_bits) { 176 if (shift >= null_bits) {
188 FB_WRITEL(val, dst++); 177 FB_WRITEL(val, dst++);
189 val = (shift == null_bits) ? 0 : 178 val = (shift == null_bits) ? 0 :
190 SHIFT_LOW(color,32 - shift); 179 FB_SHIFT_LOW(color,32 - shift);
191 } 180 }
192 shift += bpp; 181 shift += bpp;
193 shift &= (32 - 1); 182 shift &= (32 - 1);
@@ -196,7 +185,7 @@ static inline void slow_imageblit(const struct fb_image *image, struct fb_info *
196 185
197 /* write trailing bits */ 186 /* write trailing bits */
198 if (shift) { 187 if (shift) {
199 u32 end_mask = SHIFT_HIGH(~(u32)0, shift); 188 u32 end_mask = FB_SHIFT_HIGH(~(u32)0, shift);
200 189
201 FB_WRITEL((FB_READL(dst) & end_mask) | val, dst); 190 FB_WRITEL((FB_READL(dst) & end_mask) | val, dst);
202 } 191 }
diff --git a/drivers/video/cg14.c b/drivers/video/cg14.c
index 1bed50f2a276..a56147102abb 100644
--- a/drivers/video/cg14.c
+++ b/drivers/video/cg14.c
@@ -206,7 +206,6 @@ struct cg14_par {
206 int mode; 206 int mode;
207 int ramsize; 207 int ramsize;
208 struct sbus_dev *sdev; 208 struct sbus_dev *sdev;
209 struct list_head list;
210}; 209};
211 210
212static void __cg14_reset(struct cg14_par *par) 211static void __cg14_reset(struct cg14_par *par)
diff --git a/drivers/video/cg3.c b/drivers/video/cg3.c
index a1354e7e0513..9fcd89608ed7 100644
--- a/drivers/video/cg3.c
+++ b/drivers/video/cg3.c
@@ -124,7 +124,6 @@ struct cg3_par {
124 unsigned long fbsize; 124 unsigned long fbsize;
125 125
126 struct sbus_dev *sdev; 126 struct sbus_dev *sdev;
127 struct list_head list;
128}; 127};
129 128
130/** 129/**
diff --git a/drivers/video/cg6.c b/drivers/video/cg6.c
index 9debe642fd2f..050835e39aa3 100644
--- a/drivers/video/cg6.c
+++ b/drivers/video/cg6.c
@@ -265,7 +265,6 @@ struct cg6_par {
265 unsigned long fbsize; 265 unsigned long fbsize;
266 266
267 struct sbus_dev *sdev; 267 struct sbus_dev *sdev;
268 struct list_head list;
269}; 268};
270 269
271static int cg6_sync(struct fb_info *info) 270static int cg6_sync(struct fb_info *info)
@@ -612,7 +611,7 @@ static void cg6_chip_init(struct fb_info *info)
612 struct cg6_par *par = (struct cg6_par *) info->par; 611 struct cg6_par *par = (struct cg6_par *) info->par;
613 struct cg6_tec __iomem *tec = par->tec; 612 struct cg6_tec __iomem *tec = par->tec;
614 struct cg6_fbc __iomem *fbc = par->fbc; 613 struct cg6_fbc __iomem *fbc = par->fbc;
615 u32 rev, conf, mode, tmp; 614 u32 rev, conf, mode;
616 int i; 615 int i;
617 616
618 /* Turn off stuff in the Transform Engine. */ 617 /* Turn off stuff in the Transform Engine. */
diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c
index bcea87c3cc06..3660e51b2612 100644
--- a/drivers/video/console/fbcon.c
+++ b/drivers/video/console/fbcon.c
@@ -2048,7 +2048,7 @@ static int fbcon_switch(struct vc_data *vc)
2048 struct fbcon_ops *ops; 2048 struct fbcon_ops *ops;
2049 struct display *p = &fb_display[vc->vc_num]; 2049 struct display *p = &fb_display[vc->vc_num];
2050 struct fb_var_screeninfo var; 2050 struct fb_var_screeninfo var;
2051 int i, prev_console; 2051 int i, prev_console, charcnt = 256;
2052 2052
2053 info = registered_fb[con2fb_map[vc->vc_num]]; 2053 info = registered_fb[con2fb_map[vc->vc_num]];
2054 ops = info->fbcon_par; 2054 ops = info->fbcon_par;
@@ -2103,7 +2103,8 @@ static int fbcon_switch(struct vc_data *vc)
2103 fb_set_var(info, &var); 2103 fb_set_var(info, &var);
2104 ops->var = info->var; 2104 ops->var = info->var;
2105 2105
2106 if (old_info != NULL && old_info != info) { 2106 if (old_info != NULL && (old_info != info ||
2107 info->flags & FBINFO_MISC_ALWAYS_SETPAR)) {
2107 if (info->fbops->fb_set_par) 2108 if (info->fbops->fb_set_par)
2108 info->fbops->fb_set_par(info); 2109 info->fbops->fb_set_par(info);
2109 fbcon_del_cursor_timer(old_info); 2110 fbcon_del_cursor_timer(old_info);
@@ -2120,6 +2121,13 @@ static int fbcon_switch(struct vc_data *vc)
2120 2121
2121 vc->vc_can_do_color = (fb_get_color_depth(&info->var, &info->fix)!=1); 2122 vc->vc_can_do_color = (fb_get_color_depth(&info->var, &info->fix)!=1);
2122 vc->vc_complement_mask = vc->vc_can_do_color ? 0x7700 : 0x0800; 2123 vc->vc_complement_mask = vc->vc_can_do_color ? 0x7700 : 0x0800;
2124
2125 if (p->userfont)
2126 charcnt = FNTCHARCNT(vc->vc_font.data);
2127
2128 if (charcnt > 256)
2129 vc->vc_complement_mask <<= 1;
2130
2123 updatescrollmode(p, info, vc); 2131 updatescrollmode(p, info, vc);
2124 2132
2125 switch (p->scrollmode) { 2133 switch (p->scrollmode) {
@@ -2139,8 +2147,12 @@ static int fbcon_switch(struct vc_data *vc)
2139 2147
2140 scrollback_max = 0; 2148 scrollback_max = 0;
2141 scrollback_current = 0; 2149 scrollback_current = 0;
2142 ops->var.xoffset = ops->var.yoffset = p->yscroll = 0; 2150
2143 ops->update_start(info); 2151 if (!fbcon_is_inactive(vc, info)) {
2152 ops->var.xoffset = ops->var.yoffset = p->yscroll = 0;
2153 ops->update_start(info);
2154 }
2155
2144 fbcon_set_palette(vc, color_table); 2156 fbcon_set_palette(vc, color_table);
2145 fbcon_clear_margins(vc, 0); 2157 fbcon_clear_margins(vc, 0);
2146 2158
@@ -2184,11 +2196,14 @@ static int fbcon_blank(struct vc_data *vc, int blank, int mode_switch)
2184 ops->graphics = 1; 2196 ops->graphics = 1;
2185 2197
2186 if (!blank) { 2198 if (!blank) {
2199 if (info->fbops->fb_save_state)
2200 info->fbops->fb_save_state(info);
2187 var.activate = FB_ACTIVATE_NOW | FB_ACTIVATE_FORCE; 2201 var.activate = FB_ACTIVATE_NOW | FB_ACTIVATE_FORCE;
2188 fb_set_var(info, &var); 2202 fb_set_var(info, &var);
2189 ops->graphics = 0; 2203 ops->graphics = 0;
2190 ops->var = info->var; 2204 ops->var = info->var;
2191 } 2205 } else if (info->fbops->fb_restore_state)
2206 info->fbops->fb_restore_state(info);
2192 } 2207 }
2193 2208
2194 if (!fbcon_is_inactive(vc, info)) { 2209 if (!fbcon_is_inactive(vc, info)) {
@@ -2736,8 +2751,12 @@ static void fbcon_modechanged(struct fb_info *info)
2736 updatescrollmode(p, info, vc); 2751 updatescrollmode(p, info, vc);
2737 scrollback_max = 0; 2752 scrollback_max = 0;
2738 scrollback_current = 0; 2753 scrollback_current = 0;
2739 ops->var.xoffset = ops->var.yoffset = p->yscroll = 0; 2754
2740 ops->update_start(info); 2755 if (!fbcon_is_inactive(vc, info)) {
2756 ops->var.xoffset = ops->var.yoffset = p->yscroll = 0;
2757 ops->update_start(info);
2758 }
2759
2741 fbcon_set_palette(vc, color_table); 2760 fbcon_set_palette(vc, color_table);
2742 update_screen(vc); 2761 update_screen(vc);
2743 if (softback_buf) 2762 if (softback_buf)
@@ -2774,8 +2793,13 @@ static void fbcon_set_all_vcs(struct fb_info *info)
2774 updatescrollmode(p, info, vc); 2793 updatescrollmode(p, info, vc);
2775 scrollback_max = 0; 2794 scrollback_max = 0;
2776 scrollback_current = 0; 2795 scrollback_current = 0;
2777 ops->var.xoffset = ops->var.yoffset = p->yscroll = 0; 2796
2778 ops->update_start(info); 2797 if (!fbcon_is_inactive(vc, info)) {
2798 ops->var.xoffset = ops->var.yoffset =
2799 p->yscroll = 0;
2800 ops->update_start(info);
2801 }
2802
2779 fbcon_set_palette(vc, color_table); 2803 fbcon_set_palette(vc, color_table);
2780 update_screen(vc); 2804 update_screen(vc);
2781 if (softback_buf) 2805 if (softback_buf)
diff --git a/drivers/video/console/fbcon_ud.c b/drivers/video/console/fbcon_ud.c
index c4d7c89212b4..9dd059e8b645 100644
--- a/drivers/video/console/fbcon_ud.c
+++ b/drivers/video/console/fbcon_ud.c
@@ -420,13 +420,15 @@ static void ud_cursor(struct vc_data *vc, struct fb_info *info,
420int ud_update_start(struct fb_info *info) 420int ud_update_start(struct fb_info *info)
421{ 421{
422 struct fbcon_ops *ops = info->fbcon_par; 422 struct fbcon_ops *ops = info->fbcon_par;
423 u32 xoffset, yoffset; 423 int xoffset, yoffset;
424 u32 vyres = GETVYRES(ops->p->scrollmode, info); 424 u32 vyres = GETVYRES(ops->p->scrollmode, info);
425 u32 vxres = GETVXRES(ops->p->scrollmode, info); 425 u32 vxres = GETVXRES(ops->p->scrollmode, info);
426 int err; 426 int err;
427 427
428 xoffset = (vxres - info->var.xres) - ops->var.xoffset; 428 xoffset = vxres - info->var.xres - ops->var.xoffset;
429 yoffset = (vyres - info->var.yres) - ops->var.yoffset; 429 yoffset = vyres - info->var.yres - ops->var.yoffset;
430 if (yoffset < 0)
431 yoffset += vyres;
430 ops->var.xoffset = xoffset; 432 ops->var.xoffset = xoffset;
431 ops->var.yoffset = yoffset; 433 ops->var.yoffset = yoffset;
432 err = fb_pan_display(info, &ops->var); 434 err = fb_pan_display(info, &ops->var);
diff --git a/drivers/video/cyber2000fb.c b/drivers/video/cyber2000fb.c
index c589d23e7f91..a9300f930ef2 100644
--- a/drivers/video/cyber2000fb.c
+++ b/drivers/video/cyber2000fb.c
@@ -1512,7 +1512,7 @@ static int cyberpro_pci_enable_mmio(struct cfb_info *cfb)
1512 * I/O cycles storing into a reserved memory space at 1512 * I/O cycles storing into a reserved memory space at
1513 * physical address 0x3000000 1513 * physical address 0x3000000
1514 */ 1514 */
1515 unsigned char *iop; 1515 unsigned char __iomem *iop;
1516 1516
1517 iop = ioremap(0x3000000, 0x5000); 1517 iop = ioremap(0x3000000, 0x5000);
1518 if (iop == NULL) { 1518 if (iop == NULL) {
@@ -1526,7 +1526,7 @@ static int cyberpro_pci_enable_mmio(struct cfb_info *cfb)
1526 writeb(EXT_BIU_MISC, iop + 0x3ce); 1526 writeb(EXT_BIU_MISC, iop + 0x3ce);
1527 writeb(EXT_BIU_MISC_LIN_ENABLE, iop + 0x3cf); 1527 writeb(EXT_BIU_MISC_LIN_ENABLE, iop + 0x3cf);
1528 1528
1529 iounmap((void *)iop); 1529 iounmap(iop);
1530#else 1530#else
1531 /* 1531 /*
1532 * Most other machine types are "normal", so 1532 * Most other machine types are "normal", so
diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
index 6240aedb4154..10dfdf035264 100644
--- a/drivers/video/fbmem.c
+++ b/drivers/video/fbmem.c
@@ -722,14 +722,30 @@ static void try_to_load(int fb)
722int 722int
723fb_pan_display(struct fb_info *info, struct fb_var_screeninfo *var) 723fb_pan_display(struct fb_info *info, struct fb_var_screeninfo *var)
724{ 724{
725 struct fb_fix_screeninfo *fix = &info->fix;
725 int xoffset = var->xoffset; 726 int xoffset = var->xoffset;
726 int yoffset = var->yoffset; 727 int yoffset = var->yoffset;
727 int err; 728 int err = 0, yres = info->var.yres;
729
730 if (var->yoffset > 0) {
731 if (var->vmode & FB_VMODE_YWRAP) {
732 if (!fix->ywrapstep || (var->yoffset % fix->ywrapstep))
733 err = -EINVAL;
734 else
735 yres = 0;
736 } else if (!fix->ypanstep || (var->yoffset % fix->ypanstep))
737 err = -EINVAL;
738 }
739
740 if (var->xoffset > 0 && (!fix->xpanstep ||
741 (var->xoffset % fix->xpanstep)))
742 err = -EINVAL;
743
744 if (err || !info->fbops->fb_pan_display || xoffset < 0 ||
745 yoffset < 0 || var->yoffset + yres > info->var.yres_virtual ||
746 var->xoffset + info->var.xres > info->var.xres_virtual)
747 return -EINVAL;
728 748
729 if (xoffset < 0 || yoffset < 0 || !info->fbops->fb_pan_display ||
730 xoffset + info->var.xres > info->var.xres_virtual ||
731 yoffset + info->var.yres > info->var.yres_virtual)
732 return -EINVAL;
733 if ((err = info->fbops->fb_pan_display(var, info))) 749 if ((err = info->fbops->fb_pan_display(var, info)))
734 return err; 750 return err;
735 info->var.xoffset = var->xoffset; 751 info->var.xoffset = var->xoffset;
diff --git a/drivers/video/ffb.c b/drivers/video/ffb.c
index 2584daec7bbf..c4870d559afc 100644
--- a/drivers/video/ffb.c
+++ b/drivers/video/ffb.c
@@ -359,7 +359,6 @@ struct ffb_par {
359 int prom_parent_node; 359 int prom_parent_node;
360 int dac_rev; 360 int dac_rev;
361 int board_type; 361 int board_type;
362 struct list_head list;
363}; 362};
364 363
365static void FFBFifo(struct ffb_par *par, int n) 364static void FFBFifo(struct ffb_par *par, int n)
diff --git a/drivers/video/intelfb/intelfb.h b/drivers/video/intelfb/intelfb.h
index f077ca34faba..da29d007f215 100644
--- a/drivers/video/intelfb/intelfb.h
+++ b/drivers/video/intelfb/intelfb.h
@@ -41,6 +41,10 @@
41 41
42/*** hw-related values ***/ 42/*** hw-related values ***/
43 43
44/* Resource Allocation */
45#define INTELFB_FB_ACQUIRED 1
46#define INTELFB_MMIO_ACQUIRED 2
47
44/* PCI ids for supported devices */ 48/* PCI ids for supported devices */
45#define PCI_DEVICE_ID_INTEL_830M 0x3577 49#define PCI_DEVICE_ID_INTEL_830M 0x3577
46#define PCI_DEVICE_ID_INTEL_845G 0x2562 50#define PCI_DEVICE_ID_INTEL_845G 0x2562
@@ -257,6 +261,7 @@ struct intelfb_info {
257 int hwcursor; 261 int hwcursor;
258 int fixed_mode; 262 int fixed_mode;
259 int ring_active; 263 int ring_active;
264 int flag;
260 265
261 /* hw cursor */ 266 /* hw cursor */
262 int cursor_on; 267 int cursor_on;
diff --git a/drivers/video/intelfb/intelfbdrv.c b/drivers/video/intelfb/intelfbdrv.c
index 427689e584da..0090544842f5 100644
--- a/drivers/video/intelfb/intelfbdrv.c
+++ b/drivers/video/intelfb/intelfbdrv.c
@@ -135,9 +135,6 @@
135static void __devinit get_initial_mode(struct intelfb_info *dinfo); 135static void __devinit get_initial_mode(struct intelfb_info *dinfo);
136static void update_dinfo(struct intelfb_info *dinfo, 136static void update_dinfo(struct intelfb_info *dinfo,
137 struct fb_var_screeninfo *var); 137 struct fb_var_screeninfo *var);
138static int intelfb_get_fix(struct fb_fix_screeninfo *fix,
139 struct fb_info *info);
140
141static int intelfb_check_var(struct fb_var_screeninfo *var, 138static int intelfb_check_var(struct fb_var_screeninfo *var,
142 struct fb_info *info); 139 struct fb_info *info);
143static int intelfb_set_par(struct fb_info *info); 140static int intelfb_set_par(struct fb_info *info);
@@ -473,9 +470,9 @@ cleanup(struct intelfb_info *dinfo)
473 if (dinfo->aperture.virtual) 470 if (dinfo->aperture.virtual)
474 iounmap((void __iomem *)dinfo->aperture.virtual); 471 iounmap((void __iomem *)dinfo->aperture.virtual);
475 472
476 if (dinfo->mmio_base_phys) 473 if (dinfo->flag & INTELFB_MMIO_ACQUIRED)
477 release_mem_region(dinfo->mmio_base_phys, INTEL_REG_SIZE); 474 release_mem_region(dinfo->mmio_base_phys, INTEL_REG_SIZE);
478 if (dinfo->aperture.physical) 475 if (dinfo->flag & INTELFB_FB_ACQUIRED)
479 release_mem_region(dinfo->aperture.physical, 476 release_mem_region(dinfo->aperture.physical,
480 dinfo->aperture.size); 477 dinfo->aperture.size);
481 framebuffer_release(dinfo->info); 478 framebuffer_release(dinfo->info);
@@ -572,6 +569,9 @@ intelfb_pci_register(struct pci_dev *pdev, const struct pci_device_id *ent)
572 cleanup(dinfo); 569 cleanup(dinfo);
573 return -ENODEV; 570 return -ENODEV;
574 } 571 }
572
573 dinfo->flag |= INTELFB_FB_ACQUIRED;
574
575 if (!request_mem_region(dinfo->mmio_base_phys, 575 if (!request_mem_region(dinfo->mmio_base_phys,
576 INTEL_REG_SIZE, 576 INTEL_REG_SIZE,
577 INTELFB_MODULE_NAME)) { 577 INTELFB_MODULE_NAME)) {
@@ -580,6 +580,8 @@ intelfb_pci_register(struct pci_dev *pdev, const struct pci_device_id *ent)
580 return -ENODEV; 580 return -ENODEV;
581 } 581 }
582 582
583 dinfo->flag |= INTELFB_MMIO_ACQUIRED;
584
583 /* Get the chipset info. */ 585 /* Get the chipset info. */
584 dinfo->pci_chipset = pdev->device; 586 dinfo->pci_chipset = pdev->device;
585 587
@@ -1091,7 +1093,17 @@ intelfb_set_fbinfo(struct intelfb_info *dinfo)
1091 return 1; 1093 return 1;
1092 1094
1093 info->pixmap.scan_align = 1; 1095 info->pixmap.scan_align = 1;
1094 1096 strcpy(info->fix.id, dinfo->name);
1097 info->fix.smem_start = dinfo->fb.physical;
1098 info->fix.smem_len = dinfo->fb.size;
1099 info->fix.type = FB_TYPE_PACKED_PIXELS;
1100 info->fix.type_aux = 0;
1101 info->fix.xpanstep = 8;
1102 info->fix.ypanstep = 1;
1103 info->fix.ywrapstep = 0;
1104 info->fix.mmio_start = dinfo->mmio_base_phys;
1105 info->fix.mmio_len = INTEL_REG_SIZE;
1106 info->fix.accel = FB_ACCEL_I830;
1095 update_dinfo(dinfo, &info->var); 1107 update_dinfo(dinfo, &info->var);
1096 1108
1097 return 0; 1109 return 0;
@@ -1109,7 +1121,8 @@ update_dinfo(struct intelfb_info *dinfo, struct fb_var_screeninfo *var)
1109 dinfo->yres = var->xres; 1121 dinfo->yres = var->xres;
1110 dinfo->pixclock = var->pixclock; 1122 dinfo->pixclock = var->pixclock;
1111 1123
1112 intelfb_get_fix(&dinfo->info->fix, dinfo->info); 1124 dinfo->info->fix.visual = dinfo->visual;
1125 dinfo->info->fix.line_length = dinfo->pitch;
1113 1126
1114 switch (dinfo->bpp) { 1127 switch (dinfo->bpp) {
1115 case 8: 1128 case 8:
@@ -1139,30 +1152,6 @@ update_dinfo(struct intelfb_info *dinfo, struct fb_var_screeninfo *var)
1139 1152
1140/* fbops functions */ 1153/* fbops functions */
1141 1154
1142static int
1143intelfb_get_fix(struct fb_fix_screeninfo *fix, struct fb_info *info)
1144{
1145 struct intelfb_info *dinfo = GET_DINFO(info);
1146
1147 DBG_MSG("intelfb_get_fix\n");
1148
1149 memset(fix, 0, sizeof(*fix));
1150 strcpy(fix->id, dinfo->name);
1151 fix->smem_start = dinfo->fb.physical;
1152 fix->smem_len = dinfo->fb.size;
1153 fix->type = FB_TYPE_PACKED_PIXELS;
1154 fix->type_aux = 0;
1155 fix->visual = dinfo->visual;
1156 fix->xpanstep = 8;
1157 fix->ypanstep = 1;
1158 fix->ywrapstep = 0;
1159 fix->line_length = dinfo->pitch;
1160 fix->mmio_start = dinfo->mmio_base_phys;
1161 fix->mmio_len = INTEL_REG_SIZE;
1162 fix->accel = FB_ACCEL_I830;
1163 return 0;
1164}
1165
1166/*************************************************************** 1155/***************************************************************
1167 * fbdev interface * 1156 * fbdev interface *
1168 ***************************************************************/ 1157 ***************************************************************/
diff --git a/drivers/video/leo.c b/drivers/video/leo.c
index 376d4a171ec7..494287f8f8bf 100644
--- a/drivers/video/leo.c
+++ b/drivers/video/leo.c
@@ -197,7 +197,6 @@ struct leo_par {
197 unsigned long fbsize; 197 unsigned long fbsize;
198 198
199 struct sbus_dev *sdev; 199 struct sbus_dev *sdev;
200 struct list_head list;
201}; 200};
202 201
203static void leo_wait(struct leo_lx_krn __iomem *lx_krn) 202static void leo_wait(struct leo_lx_krn __iomem *lx_krn)
diff --git a/drivers/video/p9100.c b/drivers/video/p9100.c
index 18bcda23d2cf..b251e754e16c 100644
--- a/drivers/video/p9100.c
+++ b/drivers/video/p9100.c
@@ -140,7 +140,6 @@ struct p9100_par {
140 unsigned long fbsize; 140 unsigned long fbsize;
141 141
142 struct sbus_dev *sdev; 142 struct sbus_dev *sdev;
143 struct list_head list;
144}; 143};
145 144
146/** 145/**
diff --git a/drivers/video/pxafb.c b/drivers/video/pxafb.c
index 7b4cd250bec8..9fc10b9e6f57 100644
--- a/drivers/video/pxafb.c
+++ b/drivers/video/pxafb.c
@@ -1396,7 +1396,8 @@ static struct platform_driver pxafb_driver = {
1396int __devinit pxafb_setup(char *options) 1396int __devinit pxafb_setup(char *options)
1397{ 1397{
1398# ifdef CONFIG_FB_PXA_PARAMETERS 1398# ifdef CONFIG_FB_PXA_PARAMETERS
1399 strlcpy(g_options, options, sizeof(g_options)); 1399 if (options)
1400 strlcpy(g_options, options, sizeof(g_options));
1400# endif 1401# endif
1401 return 0; 1402 return 0;
1402} 1403}
diff --git a/drivers/video/tcx.c b/drivers/video/tcx.c
index fe4f63f3849d..2b27b4474001 100644
--- a/drivers/video/tcx.c
+++ b/drivers/video/tcx.c
@@ -125,7 +125,6 @@ struct tcx_par {
125 int lowdepth; 125 int lowdepth;
126 126
127 struct sbus_dev *sdev; 127 struct sbus_dev *sdev;
128 struct list_head list;
129}; 128};
130 129
131/* Reset control plane so that WID is 8-bit plane. */ 130/* Reset control plane so that WID is 8-bit plane. */
@@ -444,7 +443,7 @@ static void tcx_init_one(struct sbus_dev *sdev)
444 443
445 tcx_reset(&all->info); 444 tcx_reset(&all->info);
446 445
447 tcx_blank(0, &all->info); 446 tcx_blank(FB_BLANK_UNBLANK, &all->info);
448 447
449 if (fb_alloc_cmap(&all->info.cmap, 256, 0)) { 448 if (fb_alloc_cmap(&all->info.cmap, 256, 0)) {
450 printk(KERN_ERR "tcx: Could not allocate color map.\n"); 449 printk(KERN_ERR "tcx: Could not allocate color map.\n");