aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/lguest/lguest.c12
-rw-r--r--arch/powerpc/boot/dts/mpc8610_hpcd.dts10
-rw-r--r--arch/powerpc/configs/pasemi_defconfig172
-rw-r--r--arch/ppc/kernel/ppc_ksyms.c2
-rw-r--r--arch/x86/lguest/boot.c5
-rw-r--r--drivers/ata/ahci.c8
-rw-r--r--drivers/ata/ata_piix.c7
-rw-r--r--drivers/ata/libata-core.c2
-rw-r--r--drivers/ata/libata-pmp.c7
-rw-r--r--drivers/ata/libata-scsi.c3
-rw-r--r--drivers/ata/sata_fsl.c224
-rw-r--r--drivers/ata/sata_mv.c83
-rw-r--r--drivers/block/virtio_blk.c7
-rw-r--r--drivers/char/hw_random/Kconfig9
-rw-r--r--drivers/char/hw_random/Makefile1
-rw-r--r--drivers/char/hw_random/virtio-rng.c155
-rw-r--r--drivers/input/keyboard/atkbd.c2
-rw-r--r--drivers/input/keyboard/pxa27x_keypad.c38
-rw-r--r--drivers/input/misc/apanel.c1
-rw-r--r--drivers/input/serio/i8042-x86ia64io.h7
-rw-r--r--drivers/input/serio/i8042.c33
-rw-r--r--drivers/input/tablet/gtco.c17
-rw-r--r--drivers/input/touchscreen/wm9713.c22
-rw-r--r--drivers/input/touchscreen/wm97xx-core.c25
-rw-r--r--drivers/lguest/lguest_device.c25
-rw-r--r--drivers/pci/hotplug/rpadlpar_sysfs.c8
-rw-r--r--drivers/pcmcia/electra_cf.c1
-rw-r--r--drivers/s390/kvm/kvm_virtio.c18
-rw-r--r--drivers/virtio/virtio.c8
-rw-r--r--drivers/virtio/virtio_pci.c7
-rw-r--r--drivers/virtio/virtio_ring.c8
-rw-r--r--drivers/watchdog/geodewdt.c3
-rw-r--r--include/asm-powerpc/io.h12
-rw-r--r--include/linux/input.h4
-rw-r--r--include/linux/virtio_blk.h9
-rw-r--r--include/linux/virtio_config.h6
-rw-r--r--include/linux/virtio_rng.h8
-rw-r--r--include/linux/wm97xx.h1
-rwxr-xr-x[-rw-r--r--]scripts/decodecode0
39 files changed, 680 insertions, 290 deletions
diff --git a/Documentation/lguest/lguest.c b/Documentation/lguest/lguest.c
index 3be8ab2a886a..82fafe0429fe 100644
--- a/Documentation/lguest/lguest.c
+++ b/Documentation/lguest/lguest.c
@@ -157,6 +157,9 @@ struct virtqueue
157 157
158 /* The routine to call when the Guest pings us. */ 158 /* The routine to call when the Guest pings us. */
159 void (*handle_output)(int fd, struct virtqueue *me); 159 void (*handle_output)(int fd, struct virtqueue *me);
160
161 /* Outstanding buffers */
162 unsigned int inflight;
160}; 163};
161 164
162/* Remember the arguments to the program so we can "reboot" */ 165/* Remember the arguments to the program so we can "reboot" */
@@ -702,6 +705,7 @@ static unsigned get_vq_desc(struct virtqueue *vq,
702 errx(1, "Looped descriptor"); 705 errx(1, "Looped descriptor");
703 } while ((i = next_desc(vq, i)) != vq->vring.num); 706 } while ((i = next_desc(vq, i)) != vq->vring.num);
704 707
708 vq->inflight++;
705 return head; 709 return head;
706} 710}
707 711
@@ -719,6 +723,7 @@ static void add_used(struct virtqueue *vq, unsigned int head, int len)
719 /* Make sure buffer is written before we update index. */ 723 /* Make sure buffer is written before we update index. */
720 wmb(); 724 wmb();
721 vq->vring.used->idx++; 725 vq->vring.used->idx++;
726 vq->inflight--;
722} 727}
723 728
724/* This actually sends the interrupt for this virtqueue */ 729/* This actually sends the interrupt for this virtqueue */
@@ -726,8 +731,9 @@ static void trigger_irq(int fd, struct virtqueue *vq)
726{ 731{
727 unsigned long buf[] = { LHREQ_IRQ, vq->config.irq }; 732 unsigned long buf[] = { LHREQ_IRQ, vq->config.irq };
728 733
729 /* If they don't want an interrupt, don't send one. */ 734 /* If they don't want an interrupt, don't send one, unless empty. */
730 if (vq->vring.avail->flags & VRING_AVAIL_F_NO_INTERRUPT) 735 if ((vq->vring.avail->flags & VRING_AVAIL_F_NO_INTERRUPT)
736 && vq->inflight)
731 return; 737 return;
732 738
733 /* Send the Guest an interrupt tell them we used something up. */ 739 /* Send the Guest an interrupt tell them we used something up. */
@@ -1107,6 +1113,7 @@ static void add_virtqueue(struct device *dev, unsigned int num_descs,
1107 vq->next = NULL; 1113 vq->next = NULL;
1108 vq->last_avail_idx = 0; 1114 vq->last_avail_idx = 0;
1109 vq->dev = dev; 1115 vq->dev = dev;
1116 vq->inflight = 0;
1110 1117
1111 /* Initialize the configuration. */ 1118 /* Initialize the configuration. */
1112 vq->config.num = num_descs; 1119 vq->config.num = num_descs;
@@ -1368,6 +1375,7 @@ static void setup_tun_net(const char *arg)
1368 1375
1369 /* Tell Guest what MAC address to use. */ 1376 /* Tell Guest what MAC address to use. */
1370 add_feature(dev, VIRTIO_NET_F_MAC); 1377 add_feature(dev, VIRTIO_NET_F_MAC);
1378 add_feature(dev, VIRTIO_F_NOTIFY_ON_EMPTY);
1371 set_config(dev, sizeof(conf), &conf); 1379 set_config(dev, sizeof(conf), &conf);
1372 1380
1373 /* We don't need the socket any more; setup is done. */ 1381 /* We don't need the socket any more; setup is done. */
diff --git a/arch/powerpc/boot/dts/mpc8610_hpcd.dts b/arch/powerpc/boot/dts/mpc8610_hpcd.dts
index 08a780d89807..fa9b6bbeb5af 100644
--- a/arch/powerpc/boot/dts/mpc8610_hpcd.dts
+++ b/arch/powerpc/boot/dts/mpc8610_hpcd.dts
@@ -251,14 +251,14 @@
251 dma@c300 { 251 dma@c300 {
252 #address-cells = <1>; 252 #address-cells = <1>;
253 #size-cells = <1>; 253 #size-cells = <1>;
254 compatible = "fsl,mpc8610-dma", "fsl,mpc8540-dma"; 254 compatible = "fsl,mpc8610-dma", "fsl,eloplus-dma";
255 cell-index = <1>; 255 cell-index = <1>;
256 reg = <0xc300 0x4>; /* DMA general status register */ 256 reg = <0xc300 0x4>; /* DMA general status register */
257 ranges = <0x0 0xc100 0x200>; 257 ranges = <0x0 0xc100 0x200>;
258 258
259 dma-channel@0 { 259 dma-channel@0 {
260 compatible = "fsl,mpc8610-dma-channel", 260 compatible = "fsl,mpc8610-dma-channel",
261 "fsl,mpc8540-dma-channel"; 261 "fsl,eloplus-dma-channel";
262 cell-index = <0>; 262 cell-index = <0>;
263 reg = <0x0 0x80>; 263 reg = <0x0 0x80>;
264 interrupt-parent = <&mpic>; 264 interrupt-parent = <&mpic>;
@@ -266,7 +266,7 @@
266 }; 266 };
267 dma-channel@1 { 267 dma-channel@1 {
268 compatible = "fsl,mpc8610-dma-channel", 268 compatible = "fsl,mpc8610-dma-channel",
269 "fsl,mpc8540-dma-channel"; 269 "fsl,eloplus-dma-channel";
270 cell-index = <1>; 270 cell-index = <1>;
271 reg = <0x80 0x80>; 271 reg = <0x80 0x80>;
272 interrupt-parent = <&mpic>; 272 interrupt-parent = <&mpic>;
@@ -274,7 +274,7 @@
274 }; 274 };
275 dma-channel@2 { 275 dma-channel@2 {
276 compatible = "fsl,mpc8610-dma-channel", 276 compatible = "fsl,mpc8610-dma-channel",
277 "fsl,mpc8540-dma-channel"; 277 "fsl,eloplus-dma-channel";
278 cell-index = <2>; 278 cell-index = <2>;
279 reg = <0x100 0x80>; 279 reg = <0x100 0x80>;
280 interrupt-parent = <&mpic>; 280 interrupt-parent = <&mpic>;
@@ -282,7 +282,7 @@
282 }; 282 };
283 dma-channel@3 { 283 dma-channel@3 {
284 compatible = "fsl,mpc8610-dma-channel", 284 compatible = "fsl,mpc8610-dma-channel",
285 "fsl,mpc8540-dma-channel"; 285 "fsl,eloplus-dma-channel";
286 cell-index = <3>; 286 cell-index = <3>;
287 reg = <0x180 0x80>; 287 reg = <0x180 0x80>;
288 interrupt-parent = <&mpic>; 288 interrupt-parent = <&mpic>;
diff --git a/arch/powerpc/configs/pasemi_defconfig b/arch/powerpc/configs/pasemi_defconfig
index 09f306248f2e..199e5f59d7a6 100644
--- a/arch/powerpc/configs/pasemi_defconfig
+++ b/arch/powerpc/configs/pasemi_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc6 3# Linux kernel version: 2.6.26-rc3
4# Tue Mar 25 10:25:48 2008 4# Tue May 27 16:08:06 2008
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7 7
@@ -29,6 +29,9 @@ CONFIG_GENERIC_CLOCKEVENTS=y
29CONFIG_GENERIC_HARDIRQS=y 29CONFIG_GENERIC_HARDIRQS=y
30CONFIG_HAVE_SETUP_PER_CPU_AREA=y 30CONFIG_HAVE_SETUP_PER_CPU_AREA=y
31CONFIG_IRQ_PER_CPU=y 31CONFIG_IRQ_PER_CPU=y
32CONFIG_STACKTRACE_SUPPORT=y
33CONFIG_TRACE_IRQFLAGS_SUPPORT=y
34CONFIG_LOCKDEP_SUPPORT=y
32CONFIG_RWSEM_XCHGADD_ALGORITHM=y 35CONFIG_RWSEM_XCHGADD_ALGORITHM=y
33CONFIG_ARCH_HAS_ILOG2_U32=y 36CONFIG_ARCH_HAS_ILOG2_U32=y
34CONFIG_ARCH_HAS_ILOG2_U64=y 37CONFIG_ARCH_HAS_ILOG2_U64=y
@@ -87,6 +90,7 @@ CONFIG_INITRAMFS_SOURCE=""
87CONFIG_SYSCTL=y 90CONFIG_SYSCTL=y
88# CONFIG_EMBEDDED is not set 91# CONFIG_EMBEDDED is not set
89CONFIG_SYSCTL_SYSCALL=y 92CONFIG_SYSCTL_SYSCALL=y
93CONFIG_SYSCTL_SYSCALL_CHECK=y
90CONFIG_KALLSYMS=y 94CONFIG_KALLSYMS=y
91# CONFIG_KALLSYMS_ALL is not set 95# CONFIG_KALLSYMS_ALL is not set
92# CONFIG_KALLSYMS_EXTRA_PASS is not set 96# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -115,12 +119,14 @@ CONFIG_HAVE_OPROFILE=y
115# CONFIG_KPROBES is not set 119# CONFIG_KPROBES is not set
116CONFIG_HAVE_KPROBES=y 120CONFIG_HAVE_KPROBES=y
117CONFIG_HAVE_KRETPROBES=y 121CONFIG_HAVE_KRETPROBES=y
122# CONFIG_HAVE_DMA_ATTRS is not set
118CONFIG_PROC_PAGE_MONITOR=y 123CONFIG_PROC_PAGE_MONITOR=y
119CONFIG_SLABINFO=y 124CONFIG_SLABINFO=y
120CONFIG_RT_MUTEXES=y 125CONFIG_RT_MUTEXES=y
121# CONFIG_TINY_SHMEM is not set 126# CONFIG_TINY_SHMEM is not set
122CONFIG_BASE_SMALL=0 127CONFIG_BASE_SMALL=0
123CONFIG_MODULES=y 128CONFIG_MODULES=y
129# CONFIG_MODULE_FORCE_LOAD is not set
124CONFIG_MODULE_UNLOAD=y 130CONFIG_MODULE_UNLOAD=y
125# CONFIG_MODULE_FORCE_UNLOAD is not set 131# CONFIG_MODULE_FORCE_UNLOAD is not set
126# CONFIG_MODVERSIONS is not set 132# CONFIG_MODVERSIONS is not set
@@ -167,11 +173,11 @@ CONFIG_PPC_PASEMI=y
167CONFIG_PPC_PASEMI_IOMMU=y 173CONFIG_PPC_PASEMI_IOMMU=y
168# CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE is not set 174# CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE is not set
169CONFIG_PPC_PASEMI_MDIO=y 175CONFIG_PPC_PASEMI_MDIO=y
170# CONFIG_PPC_CELLEB is not set
171# CONFIG_PPC_PS3 is not set 176# CONFIG_PPC_PS3 is not set
172# CONFIG_PPC_CELL is not set 177# CONFIG_PPC_CELL is not set
173# CONFIG_PPC_CELL_NATIVE is not set 178# CONFIG_PPC_CELL_NATIVE is not set
174# CONFIG_PPC_IBM_CELL_BLADE is not set 179# CONFIG_PPC_IBM_CELL_BLADE is not set
180# CONFIG_PPC_CELLEB is not set
175# CONFIG_PQ2ADS is not set 181# CONFIG_PQ2ADS is not set
176CONFIG_PPC_NATIVE=y 182CONFIG_PPC_NATIVE=y
177# CONFIG_IPIC is not set 183# CONFIG_IPIC is not set
@@ -192,6 +198,7 @@ CONFIG_CPU_FREQ_DEBUG=y
192CONFIG_CPU_FREQ_STAT=y 198CONFIG_CPU_FREQ_STAT=y
193# CONFIG_CPU_FREQ_STAT_DETAILS is not set 199# CONFIG_CPU_FREQ_STAT_DETAILS is not set
194CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y 200CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
201# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
195# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set 202# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
196# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set 203# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
197# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set 204# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
@@ -226,7 +233,6 @@ CONFIG_PREEMPT_NONE=y
226CONFIG_BINFMT_ELF=y 233CONFIG_BINFMT_ELF=y
227CONFIG_COMPAT_BINFMT_ELF=y 234CONFIG_COMPAT_BINFMT_ELF=y
228# CONFIG_BINFMT_MISC is not set 235# CONFIG_BINFMT_MISC is not set
229CONFIG_FORCE_MAX_ZONEORDER=9
230CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y 236CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y
231CONFIG_IOMMU_VMERGE=y 237CONFIG_IOMMU_VMERGE=y
232CONFIG_IOMMU_HELPER=y 238CONFIG_IOMMU_HELPER=y
@@ -249,12 +255,14 @@ CONFIG_FLATMEM=y
249CONFIG_FLAT_NODE_MEM_MAP=y 255CONFIG_FLAT_NODE_MEM_MAP=y
250# CONFIG_SPARSEMEM_STATIC is not set 256# CONFIG_SPARSEMEM_STATIC is not set
251CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y 257CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
258CONFIG_PAGEFLAGS_EXTENDED=y
252CONFIG_SPLIT_PTLOCK_CPUS=4 259CONFIG_SPLIT_PTLOCK_CPUS=4
253CONFIG_RESOURCES_64BIT=y 260CONFIG_RESOURCES_64BIT=y
254CONFIG_ZONE_DMA_FLAG=1 261CONFIG_ZONE_DMA_FLAG=1
255CONFIG_BOUNCE=y 262CONFIG_BOUNCE=y
256CONFIG_PPC_HAS_HASH_64K=y 263CONFIG_PPC_HAS_HASH_64K=y
257CONFIG_PPC_64K_PAGES=y 264CONFIG_PPC_64K_PAGES=y
265CONFIG_FORCE_MAX_ZONEORDER=9
258# CONFIG_PPC_SUBPAGE_PROT is not set 266# CONFIG_PPC_SUBPAGE_PROT is not set
259# CONFIG_SCHED_SMT is not set 267# CONFIG_SCHED_SMT is not set
260CONFIG_PROC_DEVICETREE=y 268CONFIG_PROC_DEVICETREE=y
@@ -290,9 +298,12 @@ CONFIG_CARDBUS=y
290# CONFIG_YENTA is not set 298# CONFIG_YENTA is not set
291# CONFIG_PD6729 is not set 299# CONFIG_PD6729 is not set
292# CONFIG_I82092 is not set 300# CONFIG_I82092 is not set
293# CONFIG_ELECTRA_CF is not set 301CONFIG_ELECTRA_CF=y
294# CONFIG_HOTPLUG_PCI is not set 302# CONFIG_HOTPLUG_PCI is not set
303# CONFIG_HAS_RAPIDIO is not set
304CONFIG_PAGE_OFFSET=0xc000000000000000
295CONFIG_KERNEL_START=0xc000000000000000 305CONFIG_KERNEL_START=0xc000000000000000
306CONFIG_PHYSICAL_START=0x00000000
296 307
297# 308#
298# Networking 309# Networking
@@ -341,8 +352,6 @@ CONFIG_TCP_CONG_CUBIC=y
341CONFIG_DEFAULT_TCP_CONG="cubic" 352CONFIG_DEFAULT_TCP_CONG="cubic"
342# CONFIG_TCP_MD5SIG is not set 353# CONFIG_TCP_MD5SIG is not set
343# CONFIG_IPV6 is not set 354# CONFIG_IPV6 is not set
344# CONFIG_INET6_XFRM_TUNNEL is not set
345# CONFIG_INET6_TUNNEL is not set
346# CONFIG_NETWORK_SECMARK is not set 355# CONFIG_NETWORK_SECMARK is not set
347# CONFIG_NETFILTER is not set 356# CONFIG_NETFILTER is not set
348# CONFIG_IP_DCCP is not set 357# CONFIG_IP_DCCP is not set
@@ -473,6 +482,7 @@ CONFIG_MTD_NAND_PASEMI=y
473# 482#
474# CONFIG_MTD_UBI is not set 483# CONFIG_MTD_UBI is not set
475CONFIG_OF_DEVICE=y 484CONFIG_OF_DEVICE=y
485CONFIG_OF_I2C=y
476# CONFIG_PARPORT is not set 486# CONFIG_PARPORT is not set
477CONFIG_BLK_DEV=y 487CONFIG_BLK_DEV=y
478# CONFIG_BLK_DEV_FD is not set 488# CONFIG_BLK_DEV_FD is not set
@@ -520,7 +530,6 @@ CONFIG_IDE_PROC_FS=y
520# 530#
521# IDE chipset support/bugfixes 531# IDE chipset support/bugfixes
522# 532#
523# CONFIG_IDE_GENERIC is not set
524# CONFIG_BLK_DEV_PLATFORM is not set 533# CONFIG_BLK_DEV_PLATFORM is not set
525 534
526# 535#
@@ -554,7 +563,7 @@ CONFIG_IDE_PROC_FS=y
554# CONFIG_BLK_DEV_VIA82CXXX is not set 563# CONFIG_BLK_DEV_VIA82CXXX is not set
555# CONFIG_BLK_DEV_TC86C001 is not set 564# CONFIG_BLK_DEV_TC86C001 is not set
556# CONFIG_BLK_DEV_IDEDMA is not set 565# CONFIG_BLK_DEV_IDEDMA is not set
557CONFIG_IDE_ARCH_OBSOLETE_INIT=y 566# CONFIG_BLK_DEV_HD_ONLY is not set
558# CONFIG_BLK_DEV_HD is not set 567# CONFIG_BLK_DEV_HD is not set
559 568
560# 569#
@@ -632,7 +641,10 @@ CONFIG_SCSI_LOWLEVEL=y
632# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set 641# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
633CONFIG_ATA=y 642CONFIG_ATA=y
634# CONFIG_ATA_NONSTANDARD is not set 643# CONFIG_ATA_NONSTANDARD is not set
644CONFIG_SATA_PMP=y
635# CONFIG_SATA_AHCI is not set 645# CONFIG_SATA_AHCI is not set
646CONFIG_SATA_SIL24=y
647CONFIG_ATA_SFF=y
636# CONFIG_SATA_SVW is not set 648# CONFIG_SATA_SVW is not set
637# CONFIG_ATA_PIIX is not set 649# CONFIG_ATA_PIIX is not set
638CONFIG_SATA_MV=y 650CONFIG_SATA_MV=y
@@ -642,7 +654,6 @@ CONFIG_SATA_MV=y
642# CONFIG_SATA_PROMISE is not set 654# CONFIG_SATA_PROMISE is not set
643# CONFIG_SATA_SX4 is not set 655# CONFIG_SATA_SX4 is not set
644# CONFIG_SATA_SIL is not set 656# CONFIG_SATA_SIL is not set
645CONFIG_SATA_SIL24=y
646# CONFIG_SATA_SIS is not set 657# CONFIG_SATA_SIS is not set
647# CONFIG_SATA_ULI is not set 658# CONFIG_SATA_ULI is not set
648# CONFIG_SATA_VIA is not set 659# CONFIG_SATA_VIA is not set
@@ -689,6 +700,7 @@ CONFIG_PATA_PCMCIA=y
689# CONFIG_PATA_WINBOND is not set 700# CONFIG_PATA_WINBOND is not set
690CONFIG_PATA_PLATFORM=y 701CONFIG_PATA_PLATFORM=y
691CONFIG_PATA_OF_PLATFORM=y 702CONFIG_PATA_OF_PLATFORM=y
703# CONFIG_PATA_SCH is not set
692CONFIG_MD=y 704CONFIG_MD=y
693CONFIG_BLK_DEV_MD=y 705CONFIG_BLK_DEV_MD=y
694CONFIG_MD_LINEAR=y 706CONFIG_MD_LINEAR=y
@@ -791,7 +803,6 @@ CONFIG_E1000_NAPI=y
791# CONFIG_SIS190 is not set 803# CONFIG_SIS190 is not set
792# CONFIG_SKGE is not set 804# CONFIG_SKGE is not set
793# CONFIG_SKY2 is not set 805# CONFIG_SKY2 is not set
794# CONFIG_SK98LIN is not set
795# CONFIG_VIA_VELOCITY is not set 806# CONFIG_VIA_VELOCITY is not set
796CONFIG_TIGON3=y 807CONFIG_TIGON3=y
797# CONFIG_BNX2 is not set 808# CONFIG_BNX2 is not set
@@ -810,6 +821,7 @@ CONFIG_PASEMI_MAC=y
810# CONFIG_MLX4_CORE is not set 821# CONFIG_MLX4_CORE is not set
811# CONFIG_TEHUTI is not set 822# CONFIG_TEHUTI is not set
812# CONFIG_BNX2X is not set 823# CONFIG_BNX2X is not set
824# CONFIG_SFC is not set
813# CONFIG_TR is not set 825# CONFIG_TR is not set
814 826
815# 827#
@@ -817,6 +829,7 @@ CONFIG_PASEMI_MAC=y
817# 829#
818# CONFIG_WLAN_PRE80211 is not set 830# CONFIG_WLAN_PRE80211 is not set
819# CONFIG_WLAN_80211 is not set 831# CONFIG_WLAN_80211 is not set
832# CONFIG_IWLWIFI_LEDS is not set
820 833
821# 834#
822# USB Network Adapters 835# USB Network Adapters
@@ -890,6 +903,7 @@ CONFIG_VT=y
890CONFIG_VT_CONSOLE=y 903CONFIG_VT_CONSOLE=y
891CONFIG_HW_CONSOLE=y 904CONFIG_HW_CONSOLE=y
892# CONFIG_VT_HW_CONSOLE_BINDING is not set 905# CONFIG_VT_HW_CONSOLE_BINDING is not set
906CONFIG_DEVKMEM=y
893# CONFIG_SERIAL_NONSTANDARD is not set 907# CONFIG_SERIAL_NONSTANDARD is not set
894# CONFIG_NOZOMI is not set 908# CONFIG_NOZOMI is not set
895 909
@@ -917,7 +931,6 @@ CONFIG_LEGACY_PTY_COUNT=4
917# CONFIG_IPMI_HANDLER is not set 931# CONFIG_IPMI_HANDLER is not set
918CONFIG_HW_RANDOM=y 932CONFIG_HW_RANDOM=y
919CONFIG_HW_RANDOM_PASEMI=y 933CONFIG_HW_RANDOM_PASEMI=y
920# CONFIG_GEN_RTC is not set
921# CONFIG_R3964 is not set 934# CONFIG_R3964 is not set
922# CONFIG_APPLICOM is not set 935# CONFIG_APPLICOM is not set
923 936
@@ -936,13 +949,7 @@ CONFIG_DEVPORT=y
936CONFIG_I2C=y 949CONFIG_I2C=y
937CONFIG_I2C_BOARDINFO=y 950CONFIG_I2C_BOARDINFO=y
938CONFIG_I2C_CHARDEV=y 951CONFIG_I2C_CHARDEV=y
939
940#
941# I2C Algorithms
942#
943CONFIG_I2C_ALGOBIT=y 952CONFIG_I2C_ALGOBIT=y
944CONFIG_I2C_ALGOPCF=y
945CONFIG_I2C_ALGOPCA=y
946 953
947# 954#
948# I2C Hardware Bus support 955# I2C Hardware Bus support
@@ -971,6 +978,7 @@ CONFIG_I2C_PASEMI=y
971# CONFIG_I2C_VIA is not set 978# CONFIG_I2C_VIA is not set
972# CONFIG_I2C_VIAPRO is not set 979# CONFIG_I2C_VIAPRO is not set
973# CONFIG_I2C_VOODOO3 is not set 980# CONFIG_I2C_VOODOO3 is not set
981# CONFIG_I2C_PCA_PLATFORM is not set
974 982
975# 983#
976# Miscellaneous I2C Chip support 984# Miscellaneous I2C Chip support
@@ -980,19 +988,13 @@ CONFIG_SENSORS_EEPROM=y
980# CONFIG_SENSORS_PCF8574 is not set 988# CONFIG_SENSORS_PCF8574 is not set
981# CONFIG_PCF8575 is not set 989# CONFIG_PCF8575 is not set
982# CONFIG_SENSORS_PCF8591 is not set 990# CONFIG_SENSORS_PCF8591 is not set
983# CONFIG_TPS65010 is not set
984# CONFIG_SENSORS_MAX6875 is not set 991# CONFIG_SENSORS_MAX6875 is not set
985# CONFIG_SENSORS_TSL2550 is not set 992# CONFIG_SENSORS_TSL2550 is not set
986# CONFIG_I2C_DEBUG_CORE is not set 993# CONFIG_I2C_DEBUG_CORE is not set
987# CONFIG_I2C_DEBUG_ALGO is not set 994# CONFIG_I2C_DEBUG_ALGO is not set
988# CONFIG_I2C_DEBUG_BUS is not set 995# CONFIG_I2C_DEBUG_BUS is not set
989# CONFIG_I2C_DEBUG_CHIP is not set 996# CONFIG_I2C_DEBUG_CHIP is not set
990
991#
992# SPI support
993#
994# CONFIG_SPI is not set 997# CONFIG_SPI is not set
995# CONFIG_SPI_MASTER is not set
996# CONFIG_W1 is not set 998# CONFIG_W1 is not set
997# CONFIG_POWER_SUPPLY is not set 999# CONFIG_POWER_SUPPLY is not set
998CONFIG_HWMON=y 1000CONFIG_HWMON=y
@@ -1062,12 +1064,22 @@ CONFIG_SSB_POSSIBLE=y
1062# Multifunction device drivers 1064# Multifunction device drivers
1063# 1065#
1064# CONFIG_MFD_SM501 is not set 1066# CONFIG_MFD_SM501 is not set
1067# CONFIG_HTC_PASIC3 is not set
1065 1068
1066# 1069#
1067# Multimedia devices 1070# Multimedia devices
1068# 1071#
1072
1073#
1074# Multimedia core support
1075#
1069# CONFIG_VIDEO_DEV is not set 1076# CONFIG_VIDEO_DEV is not set
1070# CONFIG_DVB_CORE is not set 1077# CONFIG_DVB_CORE is not set
1078# CONFIG_VIDEO_MEDIA is not set
1079
1080#
1081# Multimedia drivers
1082#
1071CONFIG_DAB=y 1083CONFIG_DAB=y
1072# CONFIG_USB_DABUSB is not set 1084# CONFIG_USB_DABUSB is not set
1073 1085
@@ -1094,8 +1106,8 @@ CONFIG_FB_CFB_IMAGEBLIT=y
1094# CONFIG_FB_SYS_FILLRECT is not set 1106# CONFIG_FB_SYS_FILLRECT is not set
1095# CONFIG_FB_SYS_COPYAREA is not set 1107# CONFIG_FB_SYS_COPYAREA is not set
1096# CONFIG_FB_SYS_IMAGEBLIT is not set 1108# CONFIG_FB_SYS_IMAGEBLIT is not set
1109# CONFIG_FB_FOREIGN_ENDIAN is not set
1097# CONFIG_FB_SYS_FOPS is not set 1110# CONFIG_FB_SYS_FOPS is not set
1098CONFIG_FB_DEFERRED_IO=y
1099# CONFIG_FB_SVGALIB is not set 1111# CONFIG_FB_SVGALIB is not set
1100CONFIG_FB_MACMODES=y 1112CONFIG_FB_MACMODES=y
1101CONFIG_FB_BACKLIGHT=y 1113CONFIG_FB_BACKLIGHT=y
@@ -1213,6 +1225,7 @@ CONFIG_SND_VERBOSE_PROCFS=y
1213# CONFIG_SND_AU8810 is not set 1225# CONFIG_SND_AU8810 is not set
1214# CONFIG_SND_AU8820 is not set 1226# CONFIG_SND_AU8820 is not set
1215# CONFIG_SND_AU8830 is not set 1227# CONFIG_SND_AU8830 is not set
1228# CONFIG_SND_AW2 is not set
1216# CONFIG_SND_AZT3328 is not set 1229# CONFIG_SND_AZT3328 is not set
1217# CONFIG_SND_BT87X is not set 1230# CONFIG_SND_BT87X is not set
1218# CONFIG_SND_CA0106 is not set 1231# CONFIG_SND_CA0106 is not set
@@ -1292,11 +1305,11 @@ CONFIG_SND_USB_USX2Y=y
1292# CONFIG_SND_SOC is not set 1305# CONFIG_SND_SOC is not set
1293 1306
1294# 1307#
1295# SoC Audio support for SuperH 1308# ALSA SoC audio for Freescale SOCs
1296# 1309#
1297 1310
1298# 1311#
1299# ALSA SoC audio for Freescale SOCs 1312# SoC Audio for the Texas Instruments OMAP
1300# 1313#
1301 1314
1302# 1315#
@@ -1334,11 +1347,13 @@ CONFIG_USB_DEVICEFS=y
1334# 1347#
1335# USB Host Controller Drivers 1348# USB Host Controller Drivers
1336# 1349#
1350# CONFIG_USB_C67X00_HCD is not set
1337CONFIG_USB_EHCI_HCD=y 1351CONFIG_USB_EHCI_HCD=y
1338# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1352# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1339# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1353# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1340CONFIG_USB_EHCI_HCD_PPC_OF=y 1354CONFIG_USB_EHCI_HCD_PPC_OF=y
1341# CONFIG_USB_ISP116X_HCD is not set 1355# CONFIG_USB_ISP116X_HCD is not set
1356# CONFIG_USB_ISP1760_HCD is not set
1342CONFIG_USB_OHCI_HCD=y 1357CONFIG_USB_OHCI_HCD=y
1343# CONFIG_USB_OHCI_HCD_PPC_OF is not set 1358# CONFIG_USB_OHCI_HCD_PPC_OF is not set
1344# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set 1359# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
@@ -1354,6 +1369,7 @@ CONFIG_USB_SL811_HCD=y
1354# 1369#
1355# CONFIG_USB_ACM is not set 1370# CONFIG_USB_ACM is not set
1356# CONFIG_USB_PRINTER is not set 1371# CONFIG_USB_PRINTER is not set
1372# CONFIG_USB_WDM is not set
1357 1373
1358# 1374#
1359# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1375# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -1375,6 +1391,7 @@ CONFIG_USB_STORAGE=y
1375# CONFIG_USB_STORAGE_ALAUDA is not set 1391# CONFIG_USB_STORAGE_ALAUDA is not set
1376# CONFIG_USB_STORAGE_ONETOUCH is not set 1392# CONFIG_USB_STORAGE_ONETOUCH is not set
1377# CONFIG_USB_STORAGE_KARMA is not set 1393# CONFIG_USB_STORAGE_KARMA is not set
1394# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
1378CONFIG_USB_LIBUSUAL=y 1395CONFIG_USB_LIBUSUAL=y
1379 1396
1380# 1397#
@@ -1416,6 +1433,7 @@ CONFIG_USB_LIBUSUAL=y
1416# CONFIG_MMC is not set 1433# CONFIG_MMC is not set
1417# CONFIG_MEMSTICK is not set 1434# CONFIG_MEMSTICK is not set
1418# CONFIG_NEW_LEDS is not set 1435# CONFIG_NEW_LEDS is not set
1436# CONFIG_ACCESSIBILITY is not set
1419# CONFIG_INFINIBAND is not set 1437# CONFIG_INFINIBAND is not set
1420CONFIG_EDAC=y 1438CONFIG_EDAC=y
1421 1439
@@ -1475,10 +1493,6 @@ CONFIG_RTC_DRV_DS1307=y
1475# on-CPU RTC drivers 1493# on-CPU RTC drivers
1476# 1494#
1477# CONFIG_DMADEVICES is not set 1495# CONFIG_DMADEVICES is not set
1478
1479#
1480# Userspace I/O
1481#
1482# CONFIG_UIO is not set 1496# CONFIG_UIO is not set
1483 1497
1484# 1498#
@@ -1576,12 +1590,10 @@ CONFIG_NFS_FS=y
1576CONFIG_NFS_V3=y 1590CONFIG_NFS_V3=y
1577# CONFIG_NFS_V3_ACL is not set 1591# CONFIG_NFS_V3_ACL is not set
1578# CONFIG_NFS_V4 is not set 1592# CONFIG_NFS_V4 is not set
1579# CONFIG_NFS_DIRECTIO is not set
1580CONFIG_NFSD=y 1593CONFIG_NFSD=y
1581CONFIG_NFSD_V3=y 1594CONFIG_NFSD_V3=y
1582# CONFIG_NFSD_V3_ACL is not set 1595# CONFIG_NFSD_V3_ACL is not set
1583CONFIG_NFSD_V4=y 1596CONFIG_NFSD_V4=y
1584CONFIG_NFSD_TCP=y
1585CONFIG_ROOT_NFS=y 1597CONFIG_ROOT_NFS=y
1586CONFIG_LOCKD=y 1598CONFIG_LOCKD=y
1587CONFIG_LOCKD_V4=y 1599CONFIG_LOCKD_V4=y
@@ -1665,9 +1677,10 @@ CONFIG_NLS_ISO8859_1=y
1665# Library routines 1677# Library routines
1666# 1678#
1667CONFIG_BITREVERSE=y 1679CONFIG_BITREVERSE=y
1680# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1668CONFIG_CRC_CCITT=y 1681CONFIG_CRC_CCITT=y
1669# CONFIG_CRC16 is not set 1682# CONFIG_CRC16 is not set
1670# CONFIG_CRC_ITU_T is not set 1683CONFIG_CRC_ITU_T=y
1671CONFIG_CRC32=y 1684CONFIG_CRC32=y
1672# CONFIG_CRC7 is not set 1685# CONFIG_CRC7 is not set
1673CONFIG_LIBCRC32C=m 1686CONFIG_LIBCRC32C=m
@@ -1677,6 +1690,7 @@ CONFIG_PLIST=y
1677CONFIG_HAS_IOMEM=y 1690CONFIG_HAS_IOMEM=y
1678CONFIG_HAS_IOPORT=y 1691CONFIG_HAS_IOPORT=y
1679CONFIG_HAS_DMA=y 1692CONFIG_HAS_DMA=y
1693CONFIG_HAVE_LMB=y
1680 1694
1681# 1695#
1682# Kernel hacking 1696# Kernel hacking
@@ -1684,6 +1698,7 @@ CONFIG_HAS_DMA=y
1684# CONFIG_PRINTK_TIME is not set 1698# CONFIG_PRINTK_TIME is not set
1685CONFIG_ENABLE_WARN_DEPRECATED=y 1699CONFIG_ENABLE_WARN_DEPRECATED=y
1686CONFIG_ENABLE_MUST_CHECK=y 1700CONFIG_ENABLE_MUST_CHECK=y
1701CONFIG_FRAME_WARN=2048
1687CONFIG_MAGIC_SYSRQ=y 1702CONFIG_MAGIC_SYSRQ=y
1688# CONFIG_UNUSED_SYMBOLS is not set 1703# CONFIG_UNUSED_SYMBOLS is not set
1689# CONFIG_DEBUG_FS is not set 1704# CONFIG_DEBUG_FS is not set
@@ -1694,18 +1709,23 @@ CONFIG_DETECT_SOFTLOCKUP=y
1694# CONFIG_SCHED_DEBUG is not set 1709# CONFIG_SCHED_DEBUG is not set
1695# CONFIG_SCHEDSTATS is not set 1710# CONFIG_SCHEDSTATS is not set
1696# CONFIG_TIMER_STATS is not set 1711# CONFIG_TIMER_STATS is not set
1712# CONFIG_DEBUG_OBJECTS is not set
1697# CONFIG_SLUB_DEBUG_ON is not set 1713# CONFIG_SLUB_DEBUG_ON is not set
1698# CONFIG_SLUB_STATS is not set 1714# CONFIG_SLUB_STATS is not set
1699# CONFIG_DEBUG_RT_MUTEXES is not set 1715# CONFIG_DEBUG_RT_MUTEXES is not set
1700# CONFIG_RT_MUTEX_TESTER is not set 1716# CONFIG_RT_MUTEX_TESTER is not set
1701# CONFIG_DEBUG_SPINLOCK is not set 1717# CONFIG_DEBUG_SPINLOCK is not set
1702# CONFIG_DEBUG_MUTEXES is not set 1718# CONFIG_DEBUG_MUTEXES is not set
1719# CONFIG_DEBUG_LOCK_ALLOC is not set
1720# CONFIG_PROVE_LOCKING is not set
1721# CONFIG_LOCK_STAT is not set
1703# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1722# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1704# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1723# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1705# CONFIG_DEBUG_KOBJECT is not set 1724# CONFIG_DEBUG_KOBJECT is not set
1706CONFIG_DEBUG_BUGVERBOSE=y 1725CONFIG_DEBUG_BUGVERBOSE=y
1707# CONFIG_DEBUG_INFO is not set 1726# CONFIG_DEBUG_INFO is not set
1708# CONFIG_DEBUG_VM is not set 1727# CONFIG_DEBUG_VM is not set
1728# CONFIG_DEBUG_WRITECOUNT is not set
1709# CONFIG_DEBUG_LIST is not set 1729# CONFIG_DEBUG_LIST is not set
1710# CONFIG_DEBUG_SG is not set 1730# CONFIG_DEBUG_SG is not set
1711# CONFIG_BOOT_PRINTK_DELAY is not set 1731# CONFIG_BOOT_PRINTK_DELAY is not set
@@ -1735,53 +1755,83 @@ CONFIG_ASYNC_CORE=y
1735CONFIG_ASYNC_MEMCPY=y 1755CONFIG_ASYNC_MEMCPY=y
1736CONFIG_ASYNC_XOR=y 1756CONFIG_ASYNC_XOR=y
1737CONFIG_CRYPTO=y 1757CONFIG_CRYPTO=y
1758
1759#
1760# Crypto core or helper
1761#
1738CONFIG_CRYPTO_ALGAPI=y 1762CONFIG_CRYPTO_ALGAPI=y
1739CONFIG_CRYPTO_AEAD=y 1763CONFIG_CRYPTO_AEAD=y
1740CONFIG_CRYPTO_BLKCIPHER=y 1764CONFIG_CRYPTO_BLKCIPHER=y
1741# CONFIG_CRYPTO_SEQIV is not set
1742CONFIG_CRYPTO_HASH=y 1765CONFIG_CRYPTO_HASH=y
1743CONFIG_CRYPTO_MANAGER=y 1766CONFIG_CRYPTO_MANAGER=y
1767# CONFIG_CRYPTO_GF128MUL is not set
1768# CONFIG_CRYPTO_NULL is not set
1769# CONFIG_CRYPTO_CRYPTD is not set
1770CONFIG_CRYPTO_AUTHENC=y
1771# CONFIG_CRYPTO_TEST is not set
1772
1773#
1774# Authenticated Encryption with Associated Data
1775#
1776# CONFIG_CRYPTO_CCM is not set
1777# CONFIG_CRYPTO_GCM is not set
1778# CONFIG_CRYPTO_SEQIV is not set
1779
1780#
1781# Block modes
1782#
1783CONFIG_CRYPTO_CBC=y
1784# CONFIG_CRYPTO_CTR is not set
1785# CONFIG_CRYPTO_CTS is not set
1786# CONFIG_CRYPTO_ECB is not set
1787# CONFIG_CRYPTO_LRW is not set
1788# CONFIG_CRYPTO_PCBC is not set
1789# CONFIG_CRYPTO_XTS is not set
1790
1791#
1792# Hash modes
1793#
1744CONFIG_CRYPTO_HMAC=y 1794CONFIG_CRYPTO_HMAC=y
1745# CONFIG_CRYPTO_XCBC is not set 1795# CONFIG_CRYPTO_XCBC is not set
1746# CONFIG_CRYPTO_NULL is not set 1796
1797#
1798# Digest
1799#
1800# CONFIG_CRYPTO_CRC32C is not set
1747CONFIG_CRYPTO_MD4=y 1801CONFIG_CRYPTO_MD4=y
1748CONFIG_CRYPTO_MD5=y 1802CONFIG_CRYPTO_MD5=y
1803# CONFIG_CRYPTO_MICHAEL_MIC is not set
1749CONFIG_CRYPTO_SHA1=y 1804CONFIG_CRYPTO_SHA1=y
1750CONFIG_CRYPTO_SHA256=y 1805CONFIG_CRYPTO_SHA256=y
1751CONFIG_CRYPTO_SHA512=y 1806CONFIG_CRYPTO_SHA512=y
1752# CONFIG_CRYPTO_WP512 is not set
1753# CONFIG_CRYPTO_TGR192 is not set 1807# CONFIG_CRYPTO_TGR192 is not set
1754# CONFIG_CRYPTO_GF128MUL is not set 1808# CONFIG_CRYPTO_WP512 is not set
1755# CONFIG_CRYPTO_ECB is not set 1809
1756CONFIG_CRYPTO_CBC=y 1810#
1757# CONFIG_CRYPTO_PCBC is not set 1811# Ciphers
1758# CONFIG_CRYPTO_LRW is not set 1812#
1759# CONFIG_CRYPTO_XTS is not set
1760# CONFIG_CRYPTO_CTR is not set
1761# CONFIG_CRYPTO_GCM is not set
1762# CONFIG_CRYPTO_CCM is not set
1763# CONFIG_CRYPTO_CRYPTD is not set
1764CONFIG_CRYPTO_DES=y
1765# CONFIG_CRYPTO_FCRYPT is not set
1766CONFIG_CRYPTO_BLOWFISH=y
1767# CONFIG_CRYPTO_TWOFISH is not set
1768# CONFIG_CRYPTO_SERPENT is not set
1769CONFIG_CRYPTO_AES=y 1813CONFIG_CRYPTO_AES=y
1814# CONFIG_CRYPTO_ANUBIS is not set
1815# CONFIG_CRYPTO_ARC4 is not set
1816CONFIG_CRYPTO_BLOWFISH=y
1817# CONFIG_CRYPTO_CAMELLIA is not set
1770# CONFIG_CRYPTO_CAST5 is not set 1818# CONFIG_CRYPTO_CAST5 is not set
1771# CONFIG_CRYPTO_CAST6 is not set 1819# CONFIG_CRYPTO_CAST6 is not set
1772# CONFIG_CRYPTO_TEA is not set 1820CONFIG_CRYPTO_DES=y
1773# CONFIG_CRYPTO_ARC4 is not set 1821# CONFIG_CRYPTO_FCRYPT is not set
1774# CONFIG_CRYPTO_KHAZAD is not set 1822# CONFIG_CRYPTO_KHAZAD is not set
1775# CONFIG_CRYPTO_ANUBIS is not set
1776# CONFIG_CRYPTO_SEED is not set
1777# CONFIG_CRYPTO_SALSA20 is not set 1823# CONFIG_CRYPTO_SALSA20 is not set
1824# CONFIG_CRYPTO_SEED is not set
1825# CONFIG_CRYPTO_SERPENT is not set
1826# CONFIG_CRYPTO_TEA is not set
1827# CONFIG_CRYPTO_TWOFISH is not set
1828
1829#
1830# Compression
1831#
1778# CONFIG_CRYPTO_DEFLATE is not set 1832# CONFIG_CRYPTO_DEFLATE is not set
1779# CONFIG_CRYPTO_MICHAEL_MIC is not set
1780# CONFIG_CRYPTO_CRC32C is not set
1781# CONFIG_CRYPTO_CAMELLIA is not set
1782# CONFIG_CRYPTO_TEST is not set
1783CONFIG_CRYPTO_AUTHENC=y
1784# CONFIG_CRYPTO_LZO is not set 1833# CONFIG_CRYPTO_LZO is not set
1785CONFIG_CRYPTO_HW=y 1834CONFIG_CRYPTO_HW=y
1786# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1835# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1787# CONFIG_PPC_CLOCK is not set 1836# CONFIG_PPC_CLOCK is not set
1837# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/ppc/kernel/ppc_ksyms.c b/arch/ppc/kernel/ppc_ksyms.c
index 602c268fc8a2..5d529bcbeee9 100644
--- a/arch/ppc/kernel/ppc_ksyms.c
+++ b/arch/ppc/kernel/ppc_ksyms.c
@@ -60,8 +60,10 @@ long long __ashrdi3(long long, int);
60long long __ashldi3(long long, int); 60long long __ashldi3(long long, int);
61long long __lshrdi3(long long, int); 61long long __lshrdi3(long long, int);
62 62
63EXPORT_SYMBOL(empty_zero_page);
63EXPORT_SYMBOL(clear_pages); 64EXPORT_SYMBOL(clear_pages);
64EXPORT_SYMBOL(clear_user_page); 65EXPORT_SYMBOL(clear_user_page);
66EXPORT_SYMBOL(copy_page);
65EXPORT_SYMBOL(transfer_to_handler); 67EXPORT_SYMBOL(transfer_to_handler);
66EXPORT_SYMBOL(do_IRQ); 68EXPORT_SYMBOL(do_IRQ);
67EXPORT_SYMBOL(machine_check_exception); 69EXPORT_SYMBOL(machine_check_exception);
diff --git a/arch/x86/lguest/boot.c b/arch/x86/lguest/boot.c
index af65b2da3ba0..5c7e2fd52075 100644
--- a/arch/x86/lguest/boot.c
+++ b/arch/x86/lguest/boot.c
@@ -582,8 +582,9 @@ static void __init lguest_init_IRQ(void)
582 int vector = FIRST_EXTERNAL_VECTOR + i; 582 int vector = FIRST_EXTERNAL_VECTOR + i;
583 if (vector != SYSCALL_VECTOR) { 583 if (vector != SYSCALL_VECTOR) {
584 set_intr_gate(vector, interrupt[i]); 584 set_intr_gate(vector, interrupt[i]);
585 set_irq_chip_and_handler(i, &lguest_irq_controller, 585 set_irq_chip_and_handler_name(i, &lguest_irq_controller,
586 handle_level_irq); 586 handle_level_irq,
587 "level");
587 } 588 }
588 } 589 }
589 /* This call is required to set up for 4k stacks, where we have 590 /* This call is required to set up for 4k stacks, where we have
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index 97f83fb2ee2e..544b7d6c617c 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -502,10 +502,10 @@ static const struct pci_device_id ahci_pci_tbl[] = {
502 { PCI_VDEVICE(NVIDIA, 0x0bcd), board_ahci }, /* MCP7B */ 502 { PCI_VDEVICE(NVIDIA, 0x0bcd), board_ahci }, /* MCP7B */
503 { PCI_VDEVICE(NVIDIA, 0x0bce), board_ahci }, /* MCP7B */ 503 { PCI_VDEVICE(NVIDIA, 0x0bce), board_ahci }, /* MCP7B */
504 { PCI_VDEVICE(NVIDIA, 0x0bcf), board_ahci }, /* MCP7B */ 504 { PCI_VDEVICE(NVIDIA, 0x0bcf), board_ahci }, /* MCP7B */
505 { PCI_VDEVICE(NVIDIA, 0x0bd0), board_ahci }, /* MCP7B */ 505 { PCI_VDEVICE(NVIDIA, 0x0bc4), board_ahci }, /* MCP7B */
506 { PCI_VDEVICE(NVIDIA, 0x0bd1), board_ahci }, /* MCP7B */ 506 { PCI_VDEVICE(NVIDIA, 0x0bc5), board_ahci }, /* MCP7B */
507 { PCI_VDEVICE(NVIDIA, 0x0bd2), board_ahci }, /* MCP7B */ 507 { PCI_VDEVICE(NVIDIA, 0x0bc6), board_ahci }, /* MCP7B */
508 { PCI_VDEVICE(NVIDIA, 0x0bd3), board_ahci }, /* MCP7B */ 508 { PCI_VDEVICE(NVIDIA, 0x0bc7), board_ahci }, /* MCP7B */
509 509
510 /* SiS */ 510 /* SiS */
511 { PCI_VDEVICE(SI, 0x1184), board_ahci }, /* SiS 966 */ 511 { PCI_VDEVICE(SI, 0x1184), board_ahci }, /* SiS 966 */
diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c
index a9027b8fbdd5..3548ee7014ca 100644
--- a/drivers/ata/ata_piix.c
+++ b/drivers/ata/ata_piix.c
@@ -247,10 +247,11 @@ static const struct pci_device_id piix_pci_tbl[] = {
247 { 0x8086, 0x2820, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata }, 247 { 0x8086, 0x2820, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata },
248 /* SATA Controller 2 IDE (ICH8) */ 248 /* SATA Controller 2 IDE (ICH8) */
249 { 0x8086, 0x2825, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata }, 249 { 0x8086, 0x2825, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata },
250 /* Mobile SATA Controller IDE (ICH8M) */
251 { 0x8086, 0x2828, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata },
252 /* Mobile SATA Controller IDE (ICH8M), Apple */ 250 /* Mobile SATA Controller IDE (ICH8M), Apple */
253 { 0x8086, 0x2828, 0x106b, 0x00a0, 0, 0, ich8m_apple_sata }, 251 { 0x8086, 0x2828, 0x106b, 0x00a0, 0, 0, ich8m_apple_sata },
252 { 0x8086, 0x2828, 0x106b, 0x00a1, 0, 0, ich8m_apple_sata },
253 /* Mobile SATA Controller IDE (ICH8M) */
254 { 0x8086, 0x2828, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata },
254 /* SATA Controller IDE (ICH9) */ 255 /* SATA Controller IDE (ICH9) */
255 { 0x8086, 0x2920, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata }, 256 { 0x8086, 0x2920, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata },
256 /* SATA Controller IDE (ICH9) */ 257 /* SATA Controller IDE (ICH9) */
@@ -526,7 +527,7 @@ static struct ata_port_info piix_port_info[] = {
526 527
527 [ich8m_apple_sata] = 528 [ich8m_apple_sata] =
528 { 529 {
529 .flags = PIIX_SATA_FLAGS | PIIX_FLAG_SIDPR, 530 .flags = PIIX_SATA_FLAGS,
530 .pio_mask = 0x1f, /* pio0-4 */ 531 .pio_mask = 0x1f, /* pio0-4 */
531 .mwdma_mask = 0x07, /* mwdma0-2 */ 532 .mwdma_mask = 0x07, /* mwdma0-2 */
532 .udma_mask = ATA_UDMA6, 533 .udma_mask = ATA_UDMA6,
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 3c89f205c83f..cc816ca623d3 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -5403,7 +5403,7 @@ static void ata_host_stop(struct device *gendev, void *res)
5403 */ 5403 */
5404static void ata_finalize_port_ops(struct ata_port_operations *ops) 5404static void ata_finalize_port_ops(struct ata_port_operations *ops)
5405{ 5405{
5406 static spinlock_t lock = SPIN_LOCK_UNLOCKED; 5406 static DEFINE_SPINLOCK(lock);
5407 const struct ata_port_operations *cur; 5407 const struct ata_port_operations *cur;
5408 void **begin = (void **)ops; 5408 void **begin = (void **)ops;
5409 void **end = (void **)&ops->inherits; 5409 void **end = (void **)&ops->inherits;
diff --git a/drivers/ata/libata-pmp.c b/drivers/ata/libata-pmp.c
index 0f9386d4a5a0..7daf4c0f6216 100644
--- a/drivers/ata/libata-pmp.c
+++ b/drivers/ata/libata-pmp.c
@@ -322,9 +322,12 @@ static void sata_pmp_quirks(struct ata_port *ap)
322 if (vendor == 0x1095 && devid == 0x3726) { 322 if (vendor == 0x1095 && devid == 0x3726) {
323 /* sil3726 quirks */ 323 /* sil3726 quirks */
324 ata_port_for_each_link(link, ap) { 324 ata_port_for_each_link(link, ap) {
325 /* class code report is unreliable */ 325 /* Class code report is unreliable and SRST
326 * times out under certain configurations.
327 */
326 if (link->pmp < 5) 328 if (link->pmp < 5)
327 link->flags |= ATA_LFLAG_ASSUME_ATA; 329 link->flags |= ATA_LFLAG_NO_SRST |
330 ATA_LFLAG_ASSUME_ATA;
328 331
329 /* port 5 is for SEMB device and it doesn't like SRST */ 332 /* port 5 is for SEMB device and it doesn't like SRST */
330 if (link->pmp == 5) 333 if (link->pmp == 5)
diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c
index aeb6e01d82ce..2e6e1622dc6d 100644
--- a/drivers/ata/libata-scsi.c
+++ b/drivers/ata/libata-scsi.c
@@ -1637,6 +1637,7 @@ defer:
1637 1637
1638/** 1638/**
1639 * ata_scsi_rbuf_get - Map response buffer. 1639 * ata_scsi_rbuf_get - Map response buffer.
1640 * @cmd: SCSI command containing buffer to be mapped.
1640 * @flags: unsigned long variable to store irq enable status 1641 * @flags: unsigned long variable to store irq enable status
1641 * @copy_in: copy in from user buffer 1642 * @copy_in: copy in from user buffer
1642 * 1643 *
@@ -1954,7 +1955,7 @@ static unsigned int ata_msense_ctl_mode(u8 *buf)
1954 1955
1955/** 1956/**
1956 * ata_msense_rw_recovery - Simulate MODE SENSE r/w error recovery page 1957 * ata_msense_rw_recovery - Simulate MODE SENSE r/w error recovery page
1957 * @bufp: output buffer 1958 * @buf: output buffer
1958 * 1959 *
1959 * Generate a generic MODE SENSE r/w error recovery page. 1960 * Generate a generic MODE SENSE r/w error recovery page.
1960 * 1961 *
diff --git a/drivers/ata/sata_fsl.c b/drivers/ata/sata_fsl.c
index 853559e32315..3924e7209a44 100644
--- a/drivers/ata/sata_fsl.c
+++ b/drivers/ata/sata_fsl.c
@@ -34,7 +34,7 @@ enum {
34 34
35 SATA_FSL_HOST_FLAGS = (ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY | 35 SATA_FSL_HOST_FLAGS = (ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY |
36 ATA_FLAG_MMIO | ATA_FLAG_PIO_DMA | 36 ATA_FLAG_MMIO | ATA_FLAG_PIO_DMA |
37 ATA_FLAG_NCQ), 37 ATA_FLAG_PMP | ATA_FLAG_NCQ),
38 38
39 SATA_FSL_MAX_CMDS = SATA_FSL_QUEUE_DEPTH, 39 SATA_FSL_MAX_CMDS = SATA_FSL_QUEUE_DEPTH,
40 SATA_FSL_CMD_HDR_SIZE = 16, /* 4 DWORDS */ 40 SATA_FSL_CMD_HDR_SIZE = 16, /* 4 DWORDS */
@@ -395,7 +395,7 @@ static void sata_fsl_qc_prep(struct ata_queued_cmd *qc)
395 cd = (struct command_desc *)pp->cmdentry + tag; 395 cd = (struct command_desc *)pp->cmdentry + tag;
396 cd_paddr = pp->cmdentry_paddr + tag * SATA_FSL_CMD_DESC_SIZE; 396 cd_paddr = pp->cmdentry_paddr + tag * SATA_FSL_CMD_DESC_SIZE;
397 397
398 ata_tf_to_fis(&qc->tf, 0, 1, (u8 *) &cd->cfis); 398 ata_tf_to_fis(&qc->tf, qc->dev->link->pmp, 1, (u8 *) &cd->cfis);
399 399
400 VPRINTK("Dumping cfis : 0x%x, 0x%x, 0x%x\n", 400 VPRINTK("Dumping cfis : 0x%x, 0x%x, 0x%x\n",
401 cd->cfis[0], cd->cfis[1], cd->cfis[2]); 401 cd->cfis[0], cd->cfis[1], cd->cfis[2]);
@@ -438,6 +438,8 @@ static unsigned int sata_fsl_qc_issue(struct ata_queued_cmd *qc)
438 ioread32(CA + hcr_base), 438 ioread32(CA + hcr_base),
439 ioread32(CE + hcr_base), ioread32(CC + hcr_base)); 439 ioread32(CE + hcr_base), ioread32(CC + hcr_base));
440 440
441 iowrite32(qc->dev->link->pmp, CQPMP + hcr_base);
442
441 /* Simply queue command to the controller/device */ 443 /* Simply queue command to the controller/device */
442 iowrite32(1 << tag, CQ + hcr_base); 444 iowrite32(1 << tag, CQ + hcr_base);
443 445
@@ -558,11 +560,36 @@ static void sata_fsl_thaw(struct ata_port *ap)
558 ioread32(hcr_base + HCONTROL), ioread32(hcr_base + HSTATUS)); 560 ioread32(hcr_base + HCONTROL), ioread32(hcr_base + HSTATUS));
559} 561}
560 562
563static void sata_fsl_pmp_attach(struct ata_port *ap)
564{
565 struct sata_fsl_host_priv *host_priv = ap->host->private_data;
566 void __iomem *hcr_base = host_priv->hcr_base;
567 u32 temp;
568
569 temp = ioread32(hcr_base + HCONTROL);
570 iowrite32((temp | HCONTROL_PMP_ATTACHED), hcr_base + HCONTROL);
571}
572
573static void sata_fsl_pmp_detach(struct ata_port *ap)
574{
575 struct sata_fsl_host_priv *host_priv = ap->host->private_data;
576 void __iomem *hcr_base = host_priv->hcr_base;
577 u32 temp;
578
579 temp = ioread32(hcr_base + HCONTROL);
580 temp &= ~HCONTROL_PMP_ATTACHED;
581 iowrite32(temp, hcr_base + HCONTROL);
582
583 /* enable interrupts on the controller/port */
584 temp = ioread32(hcr_base + HCONTROL);
585 iowrite32((temp | DEFAULT_PORT_IRQ_ENABLE_MASK), hcr_base + HCONTROL);
586
587}
588
561static int sata_fsl_port_start(struct ata_port *ap) 589static int sata_fsl_port_start(struct ata_port *ap)
562{ 590{
563 struct device *dev = ap->host->dev; 591 struct device *dev = ap->host->dev;
564 struct sata_fsl_port_priv *pp; 592 struct sata_fsl_port_priv *pp;
565 int retval;
566 void *mem; 593 void *mem;
567 dma_addr_t mem_dma; 594 dma_addr_t mem_dma;
568 struct sata_fsl_host_priv *host_priv = ap->host->private_data; 595 struct sata_fsl_host_priv *host_priv = ap->host->private_data;
@@ -688,12 +715,13 @@ static int sata_fsl_prereset(struct ata_link *link, unsigned long deadline)
688} 715}
689 716
690static int sata_fsl_softreset(struct ata_link *link, unsigned int *class, 717static int sata_fsl_softreset(struct ata_link *link, unsigned int *class,
691 unsigned long deadline) 718 unsigned long deadline)
692{ 719{
693 struct ata_port *ap = link->ap; 720 struct ata_port *ap = link->ap;
694 struct sata_fsl_port_priv *pp = ap->private_data; 721 struct sata_fsl_port_priv *pp = ap->private_data;
695 struct sata_fsl_host_priv *host_priv = ap->host->private_data; 722 struct sata_fsl_host_priv *host_priv = ap->host->private_data;
696 void __iomem *hcr_base = host_priv->hcr_base; 723 void __iomem *hcr_base = host_priv->hcr_base;
724 int pmp = sata_srst_pmp(link);
697 u32 temp; 725 u32 temp;
698 struct ata_taskfile tf; 726 struct ata_taskfile tf;
699 u8 *cfis; 727 u8 *cfis;
@@ -703,6 +731,9 @@ static int sata_fsl_softreset(struct ata_link *link, unsigned int *class,
703 731
704 DPRINTK("in xx_softreset\n"); 732 DPRINTK("in xx_softreset\n");
705 733
734 if (pmp != SATA_PMP_CTRL_PORT)
735 goto issue_srst;
736
706try_offline_again: 737try_offline_again:
707 /* 738 /*
708 * Force host controller to go off-line, aborting current operations 739 * Force host controller to go off-line, aborting current operations
@@ -746,6 +777,7 @@ try_offline_again:
746 777
747 temp = ioread32(hcr_base + HCONTROL); 778 temp = ioread32(hcr_base + HCONTROL);
748 temp |= (HCONTROL_ONLINE_PHY_RST | HCONTROL_SNOOP_ENABLE); 779 temp |= (HCONTROL_ONLINE_PHY_RST | HCONTROL_SNOOP_ENABLE);
780 temp |= HCONTROL_PMP_ATTACHED;
749 iowrite32(temp, hcr_base + HCONTROL); 781 iowrite32(temp, hcr_base + HCONTROL);
750 782
751 temp = ata_wait_register(hcr_base + HSTATUS, ONLINE, 0, 1, 500); 783 temp = ata_wait_register(hcr_base + HSTATUS, ONLINE, 0, 1, 500);
@@ -771,7 +803,8 @@ try_offline_again:
771 ata_port_printk(ap, KERN_WARNING, 803 ata_port_printk(ap, KERN_WARNING,
772 "No Device OR PHYRDY change,Hstatus = 0x%x\n", 804 "No Device OR PHYRDY change,Hstatus = 0x%x\n",
773 ioread32(hcr_base + HSTATUS)); 805 ioread32(hcr_base + HSTATUS));
774 goto err; 806 *class = ATA_DEV_NONE;
807 goto out;
775 } 808 }
776 809
777 /* 810 /*
@@ -783,7 +816,8 @@ try_offline_again:
783 816
784 if ((temp & 0xFF) != 0x18) { 817 if ((temp & 0xFF) != 0x18) {
785 ata_port_printk(ap, KERN_WARNING, "No Signature Update\n"); 818 ata_port_printk(ap, KERN_WARNING, "No Signature Update\n");
786 goto err; 819 *class = ATA_DEV_NONE;
820 goto out;
787 } else { 821 } else {
788 ata_port_printk(ap, KERN_INFO, 822 ata_port_printk(ap, KERN_INFO,
789 "Signature Update detected @ %d msecs\n", 823 "Signature Update detected @ %d msecs\n",
@@ -798,6 +832,7 @@ try_offline_again:
798 * reached here, we can send a command to the target device 832 * reached here, we can send a command to the target device
799 */ 833 */
800 834
835issue_srst:
801 DPRINTK("Sending SRST/device reset\n"); 836 DPRINTK("Sending SRST/device reset\n");
802 837
803 ata_tf_init(link->device, &tf); 838 ata_tf_init(link->device, &tf);
@@ -808,7 +843,7 @@ try_offline_again:
808 SRST_CMD | CMD_DESC_SNOOP_ENABLE, 0, 0, 5); 843 SRST_CMD | CMD_DESC_SNOOP_ENABLE, 0, 0, 5);
809 844
810 tf.ctl |= ATA_SRST; /* setup SRST bit in taskfile control reg */ 845 tf.ctl |= ATA_SRST; /* setup SRST bit in taskfile control reg */
811 ata_tf_to_fis(&tf, 0, 0, cfis); 846 ata_tf_to_fis(&tf, pmp, 0, cfis);
812 847
813 DPRINTK("Dumping cfis : 0x%x, 0x%x, 0x%x, 0x%x\n", 848 DPRINTK("Dumping cfis : 0x%x, 0x%x, 0x%x, 0x%x\n",
814 cfis[0], cfis[1], cfis[2], cfis[3]); 849 cfis[0], cfis[1], cfis[2], cfis[3]);
@@ -854,8 +889,10 @@ try_offline_again:
854 sata_fsl_setup_cmd_hdr_entry(pp, 0, CMD_DESC_SNOOP_ENABLE, 0, 0, 5); 889 sata_fsl_setup_cmd_hdr_entry(pp, 0, CMD_DESC_SNOOP_ENABLE, 0, 0, 5);
855 890
856 tf.ctl &= ~ATA_SRST; /* 2nd H2D Ctl. register FIS */ 891 tf.ctl &= ~ATA_SRST; /* 2nd H2D Ctl. register FIS */
857 ata_tf_to_fis(&tf, 0, 0, cfis); 892 ata_tf_to_fis(&tf, pmp, 0, cfis);
858 893
894 if (pmp != SATA_PMP_CTRL_PORT)
895 iowrite32(pmp, CQPMP + hcr_base);
859 iowrite32(1, CQ + hcr_base); 896 iowrite32(1, CQ + hcr_base);
860 msleep(150); /* ?? */ 897 msleep(150); /* ?? */
861 898
@@ -886,12 +923,21 @@ try_offline_again:
886 VPRINTK("cereg = 0x%x\n", ioread32(hcr_base + CE)); 923 VPRINTK("cereg = 0x%x\n", ioread32(hcr_base + CE));
887 } 924 }
888 925
926out:
889 return 0; 927 return 0;
890 928
891err: 929err:
892 return -EIO; 930 return -EIO;
893} 931}
894 932
933static void sata_fsl_error_handler(struct ata_port *ap)
934{
935
936 DPRINTK("in xx_error_handler\n");
937 sata_pmp_error_handler(ap);
938
939}
940
895static void sata_fsl_post_internal_cmd(struct ata_queued_cmd *qc) 941static void sata_fsl_post_internal_cmd(struct ata_queued_cmd *qc)
896{ 942{
897 if (qc->flags & ATA_QCFLAG_FAILED) 943 if (qc->flags & ATA_QCFLAG_FAILED)
@@ -905,18 +951,21 @@ static void sata_fsl_post_internal_cmd(struct ata_queued_cmd *qc)
905 951
906static void sata_fsl_error_intr(struct ata_port *ap) 952static void sata_fsl_error_intr(struct ata_port *ap)
907{ 953{
908 struct ata_link *link = &ap->link;
909 struct ata_eh_info *ehi = &link->eh_info;
910 struct sata_fsl_host_priv *host_priv = ap->host->private_data; 954 struct sata_fsl_host_priv *host_priv = ap->host->private_data;
911 void __iomem *hcr_base = host_priv->hcr_base; 955 void __iomem *hcr_base = host_priv->hcr_base;
912 u32 hstatus, dereg, cereg = 0, SError = 0; 956 u32 hstatus, dereg=0, cereg = 0, SError = 0;
913 unsigned int err_mask = 0, action = 0; 957 unsigned int err_mask = 0, action = 0;
914 struct ata_queued_cmd *qc; 958 int freeze = 0, abort=0;
915 int freeze = 0; 959 struct ata_link *link = NULL;
960 struct ata_queued_cmd *qc = NULL;
961 struct ata_eh_info *ehi;
916 962
917 hstatus = ioread32(hcr_base + HSTATUS); 963 hstatus = ioread32(hcr_base + HSTATUS);
918 cereg = ioread32(hcr_base + CE); 964 cereg = ioread32(hcr_base + CE);
919 965
966 /* first, analyze and record host port events */
967 link = &ap->link;
968 ehi = &link->eh_info;
920 ata_ehi_clear_desc(ehi); 969 ata_ehi_clear_desc(ehi);
921 970
922 /* 971 /*
@@ -926,42 +975,28 @@ static void sata_fsl_error_intr(struct ata_port *ap)
926 sata_fsl_scr_read(ap, SCR_ERROR, &SError); 975 sata_fsl_scr_read(ap, SCR_ERROR, &SError);
927 if (unlikely(SError & 0xFFFF0000)) { 976 if (unlikely(SError & 0xFFFF0000)) {
928 sata_fsl_scr_write(ap, SCR_ERROR, SError); 977 sata_fsl_scr_write(ap, SCR_ERROR, SError);
929 err_mask |= AC_ERR_ATA_BUS;
930 } 978 }
931 979
932 DPRINTK("error_intr,hStat=0x%x,CE=0x%x,DE =0x%x,SErr=0x%x\n", 980 DPRINTK("error_intr,hStat=0x%x,CE=0x%x,DE =0x%x,SErr=0x%x\n",
933 hstatus, cereg, ioread32(hcr_base + DE), SError); 981 hstatus, cereg, ioread32(hcr_base + DE), SError);
934 982
935 /* handle single device errors */ 983 /* handle fatal errors */
936 if (cereg) { 984 if (hstatus & FATAL_ERROR_DECODE) {
937 /* 985 ehi->err_mask |= AC_ERR_ATA_BUS;
938 * clear the command error, also clears queue to the device 986 ehi->action |= ATA_EH_SOFTRESET;
939 * in error, and we can (re)issue commands to this device.
940 * When a device is in error all commands queued into the
941 * host controller and at the device are considered aborted
942 * and the queue for that device is stopped. Now, after
943 * clearing the device error, we can issue commands to the
944 * device to interrogate it to find the source of the error.
945 */
946 dereg = ioread32(hcr_base + DE);
947 iowrite32(dereg, hcr_base + DE);
948 iowrite32(cereg, hcr_base + CE);
949 987
950 DPRINTK("single device error, CE=0x%x, DE=0x%x\n",
951 ioread32(hcr_base + CE), ioread32(hcr_base + DE));
952 /* 988 /*
953 * We should consider this as non fatal error, and TF must 989 * Ignore serror in case of fatal errors as we always want
954 * be updated as done below. 990 * to do a soft-reset of the FSL SATA controller. Analyzing
991 * serror may cause libata to schedule a hard-reset action,
992 * and hard-reset currently does not do controller
993 * offline/online, causing command timeouts and leads to an
994 * un-recoverable state, hence make libATA ignore
995 * autopsy in case of fatal errors.
955 */ 996 */
956 997
957 err_mask |= AC_ERR_DEV; 998 ehi->flags |= ATA_EHI_NO_AUTOPSY;
958 }
959 999
960 /* handle fatal errors */
961 if (hstatus & FATAL_ERROR_DECODE) {
962 err_mask |= AC_ERR_ATA_BUS;
963 action |= ATA_EH_RESET;
964 /* how will fatal error interrupts be completed ?? */
965 freeze = 1; 1000 freeze = 1;
966 } 1001 }
967 1002
@@ -971,30 +1006,83 @@ static void sata_fsl_error_intr(struct ata_port *ap)
971 1006
972 /* Setup a soft-reset EH action */ 1007 /* Setup a soft-reset EH action */
973 ata_ehi_hotplugged(ehi); 1008 ata_ehi_hotplugged(ehi);
1009 ata_ehi_push_desc(ehi, "%s", "PHY RDY changed");
974 freeze = 1; 1010 freeze = 1;
975 } 1011 }
976 1012
977 /* record error info */ 1013 /* handle single device errors */
978 qc = ata_qc_from_tag(ap, link->active_tag); 1014 if (cereg) {
1015 /*
1016 * clear the command error, also clears queue to the device
1017 * in error, and we can (re)issue commands to this device.
1018 * When a device is in error all commands queued into the
1019 * host controller and at the device are considered aborted
1020 * and the queue for that device is stopped. Now, after
1021 * clearing the device error, we can issue commands to the
1022 * device to interrogate it to find the source of the error.
1023 */
1024 abort = 1;
1025
1026 DPRINTK("single device error, CE=0x%x, DE=0x%x\n",
1027 ioread32(hcr_base + CE), ioread32(hcr_base + DE));
979 1028
980 if (qc) 1029 /* find out the offending link and qc */
1030 if (ap->nr_pmp_links) {
1031 dereg = ioread32(hcr_base + DE);
1032 iowrite32(dereg, hcr_base + DE);
1033 iowrite32(cereg, hcr_base + CE);
1034
1035 if (dereg < ap->nr_pmp_links) {
1036 link = &ap->pmp_link[dereg];
1037 ehi = &link->eh_info;
1038 qc = ata_qc_from_tag(ap, link->active_tag);
1039 /*
1040 * We should consider this as non fatal error,
1041 * and TF must be updated as done below.
1042 */
1043
1044 err_mask |= AC_ERR_DEV;
1045
1046 } else {
1047 err_mask |= AC_ERR_HSM;
1048 action |= ATA_EH_HARDRESET;
1049 freeze = 1;
1050 }
1051 } else {
1052 dereg = ioread32(hcr_base + DE);
1053 iowrite32(dereg, hcr_base + DE);
1054 iowrite32(cereg, hcr_base + CE);
1055
1056 qc = ata_qc_from_tag(ap, link->active_tag);
1057 /*
1058 * We should consider this as non fatal error,
1059 * and TF must be updated as done below.
1060 */
1061 err_mask |= AC_ERR_DEV;
1062 }
1063 }
1064
1065 /* record error info */
1066 if (qc) {
981 qc->err_mask |= err_mask; 1067 qc->err_mask |= err_mask;
982 else 1068 } else
983 ehi->err_mask |= err_mask; 1069 ehi->err_mask |= err_mask;
984 1070
985 ehi->action |= action; 1071 ehi->action |= action;
986 ehi->serror |= SError;
987 1072
988 /* freeze or abort */ 1073 /* freeze or abort */
989 if (freeze) 1074 if (freeze)
990 ata_port_freeze(ap); 1075 ata_port_freeze(ap);
991 else 1076 else if (abort) {
992 ata_port_abort(ap); 1077 if (qc)
1078 ata_link_abort(qc->dev->link);
1079 else
1080 ata_port_abort(ap);
1081 }
993} 1082}
994 1083
995static void sata_fsl_host_intr(struct ata_port *ap) 1084static void sata_fsl_host_intr(struct ata_port *ap)
996{ 1085{
997 struct ata_link *link = &ap->link;
998 struct sata_fsl_host_priv *host_priv = ap->host->private_data; 1086 struct sata_fsl_host_priv *host_priv = ap->host->private_data;
999 void __iomem *hcr_base = host_priv->hcr_base; 1087 void __iomem *hcr_base = host_priv->hcr_base;
1000 u32 hstatus, qc_active = 0; 1088 u32 hstatus, qc_active = 0;
@@ -1017,10 +1105,19 @@ static void sata_fsl_host_intr(struct ata_port *ap)
1017 return; 1105 return;
1018 } 1106 }
1019 1107
1020 if (link->sactive) { /* only true for NCQ commands */ 1108 /* Read command completed register */
1109 qc_active = ioread32(hcr_base + CC);
1110
1111 VPRINTK("Status of all queues :\n");
1112 VPRINTK("qc_active/CC = 0x%x, CA = 0x%x, CE=0x%x,CQ=0x%x,apqa=0x%x\n",
1113 qc_active,
1114 ioread32(hcr_base + CA),
1115 ioread32(hcr_base + CE),
1116 ioread32(hcr_base + CQ),
1117 ap->qc_active);
1118
1119 if (qc_active & ap->qc_active) {
1021 int i; 1120 int i;
1022 /* Read command completed register */
1023 qc_active = ioread32(hcr_base + CC);
1024 /* clear CC bit, this will also complete the interrupt */ 1121 /* clear CC bit, this will also complete the interrupt */
1025 iowrite32(qc_active, hcr_base + CC); 1122 iowrite32(qc_active, hcr_base + CC);
1026 1123
@@ -1032,8 +1129,9 @@ static void sata_fsl_host_intr(struct ata_port *ap)
1032 for (i = 0; i < SATA_FSL_QUEUE_DEPTH; i++) { 1129 for (i = 0; i < SATA_FSL_QUEUE_DEPTH; i++) {
1033 if (qc_active & (1 << i)) { 1130 if (qc_active & (1 << i)) {
1034 qc = ata_qc_from_tag(ap, i); 1131 qc = ata_qc_from_tag(ap, i);
1035 if (qc) 1132 if (qc) {
1036 ata_qc_complete(qc); 1133 ata_qc_complete(qc);
1134 }
1037 DPRINTK 1135 DPRINTK
1038 ("completing ncq cmd,tag=%d,CC=0x%x,CA=0x%x\n", 1136 ("completing ncq cmd,tag=%d,CC=0x%x,CA=0x%x\n",
1039 i, ioread32(hcr_base + CC), 1137 i, ioread32(hcr_base + CC),
@@ -1042,19 +1140,21 @@ static void sata_fsl_host_intr(struct ata_port *ap)
1042 } 1140 }
1043 return; 1141 return;
1044 1142
1045 } else if (ap->qc_active) { 1143 } else if ((ap->qc_active & (1 << ATA_TAG_INTERNAL))) {
1046 iowrite32(1, hcr_base + CC); 1144 iowrite32(1, hcr_base + CC);
1047 qc = ata_qc_from_tag(ap, link->active_tag); 1145 qc = ata_qc_from_tag(ap, ATA_TAG_INTERNAL);
1048 1146
1049 DPRINTK("completing non-ncq cmd, tag=%d,CC=0x%x\n", 1147 DPRINTK("completing non-ncq cmd, CC=0x%x\n",
1050 link->active_tag, ioread32(hcr_base + CC)); 1148 ioread32(hcr_base + CC));
1051 1149
1052 if (qc) 1150 if (qc) {
1053 ata_qc_complete(qc); 1151 ata_qc_complete(qc);
1152 }
1054 } else { 1153 } else {
1055 /* Spurious Interrupt!! */ 1154 /* Spurious Interrupt!! */
1056 DPRINTK("spurious interrupt!!, CC = 0x%x\n", 1155 DPRINTK("spurious interrupt!!, CC = 0x%x\n",
1057 ioread32(hcr_base + CC)); 1156 ioread32(hcr_base + CC));
1157 iowrite32(qc_active, hcr_base + CC);
1058 return; 1158 return;
1059 } 1159 }
1060} 1160}
@@ -1130,9 +1230,6 @@ static int sata_fsl_init_controller(struct ata_host *host)
1130 iowrite32(0x00000FFFF, hcr_base + CE); 1230 iowrite32(0x00000FFFF, hcr_base + CE);
1131 iowrite32(0x00000FFFF, hcr_base + DE); 1231 iowrite32(0x00000FFFF, hcr_base + DE);
1132 1232
1133 /* initially assuming no Port multiplier, set CQPMP to 0 */
1134 iowrite32(0x0, hcr_base + CQPMP);
1135
1136 /* 1233 /*
1137 * host controller will be brought on-line, during xx_port_start() 1234 * host controller will be brought on-line, during xx_port_start()
1138 * callback, that should also initiate the OOB, COMINIT sequence 1235 * callback, that should also initiate the OOB, COMINIT sequence
@@ -1154,8 +1251,8 @@ static struct scsi_host_template sata_fsl_sht = {
1154 .dma_boundary = ATA_DMA_BOUNDARY, 1251 .dma_boundary = ATA_DMA_BOUNDARY,
1155}; 1252};
1156 1253
1157static const struct ata_port_operations sata_fsl_ops = { 1254static struct ata_port_operations sata_fsl_ops = {
1158 .inherits = &sata_port_ops, 1255 .inherits = &sata_pmp_port_ops,
1159 1256
1160 .qc_prep = sata_fsl_qc_prep, 1257 .qc_prep = sata_fsl_qc_prep,
1161 .qc_issue = sata_fsl_qc_issue, 1258 .qc_issue = sata_fsl_qc_issue,
@@ -1168,10 +1265,15 @@ static const struct ata_port_operations sata_fsl_ops = {
1168 .thaw = sata_fsl_thaw, 1265 .thaw = sata_fsl_thaw,
1169 .prereset = sata_fsl_prereset, 1266 .prereset = sata_fsl_prereset,
1170 .softreset = sata_fsl_softreset, 1267 .softreset = sata_fsl_softreset,
1268 .pmp_softreset = sata_fsl_softreset,
1269 .error_handler = sata_fsl_error_handler,
1171 .post_internal_cmd = sata_fsl_post_internal_cmd, 1270 .post_internal_cmd = sata_fsl_post_internal_cmd,
1172 1271
1173 .port_start = sata_fsl_port_start, 1272 .port_start = sata_fsl_port_start,
1174 .port_stop = sata_fsl_port_stop, 1273 .port_stop = sata_fsl_port_stop,
1274
1275 .pmp_attach = sata_fsl_pmp_attach,
1276 .pmp_detach = sata_fsl_pmp_detach,
1175}; 1277};
1176 1278
1177static const struct ata_port_info sata_fsl_port_info[] = { 1279static const struct ata_port_info sata_fsl_port_info[] = {
diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c
index fb81f0c7a8c2..acf347f71a2f 100644
--- a/drivers/ata/sata_mv.c
+++ b/drivers/ata/sata_mv.c
@@ -72,7 +72,7 @@
72#include <linux/libata.h> 72#include <linux/libata.h>
73 73
74#define DRV_NAME "sata_mv" 74#define DRV_NAME "sata_mv"
75#define DRV_VERSION "1.21" 75#define DRV_VERSION "1.24"
76 76
77enum { 77enum {
78 /* BAR's are enumerated in terms of pci_resource_start() terms */ 78 /* BAR's are enumerated in terms of pci_resource_start() terms */
@@ -122,8 +122,6 @@ enum {
122 /* Host Flags */ 122 /* Host Flags */
123 MV_FLAG_DUAL_HC = (1 << 30), /* two SATA Host Controllers */ 123 MV_FLAG_DUAL_HC = (1 << 30), /* two SATA Host Controllers */
124 MV_FLAG_IRQ_COALESCE = (1 << 29), /* IRQ coalescing capability */ 124 MV_FLAG_IRQ_COALESCE = (1 << 29), /* IRQ coalescing capability */
125 /* SoC integrated controllers, no PCI interface */
126 MV_FLAG_SOC = (1 << 28),
127 125
128 MV_COMMON_FLAGS = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY | 126 MV_COMMON_FLAGS = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY |
129 ATA_FLAG_MMIO | ATA_FLAG_NO_ATAPI | 127 ATA_FLAG_MMIO | ATA_FLAG_NO_ATAPI |
@@ -356,12 +354,12 @@ enum {
356 MV_HP_ERRATA_50XXB2 = (1 << 2), 354 MV_HP_ERRATA_50XXB2 = (1 << 2),
357 MV_HP_ERRATA_60X1B2 = (1 << 3), 355 MV_HP_ERRATA_60X1B2 = (1 << 3),
358 MV_HP_ERRATA_60X1C0 = (1 << 4), 356 MV_HP_ERRATA_60X1C0 = (1 << 4),
359 MV_HP_ERRATA_XX42A0 = (1 << 5),
360 MV_HP_GEN_I = (1 << 6), /* Generation I: 50xx */ 357 MV_HP_GEN_I = (1 << 6), /* Generation I: 50xx */
361 MV_HP_GEN_II = (1 << 7), /* Generation II: 60xx */ 358 MV_HP_GEN_II = (1 << 7), /* Generation II: 60xx */
362 MV_HP_GEN_IIE = (1 << 8), /* Generation IIE: 6042/7042 */ 359 MV_HP_GEN_IIE = (1 << 8), /* Generation IIE: 6042/7042 */
363 MV_HP_PCIE = (1 << 9), /* PCIe bus/regs: 7042 */ 360 MV_HP_PCIE = (1 << 9), /* PCIe bus/regs: 7042 */
364 MV_HP_CUT_THROUGH = (1 << 10), /* can use EDMA cut-through */ 361 MV_HP_CUT_THROUGH = (1 << 10), /* can use EDMA cut-through */
362 MV_HP_FLAG_SOC = (1 << 11), /* SystemOnChip, no PCI */
365 363
366 /* Port private flags (pp_flags) */ 364 /* Port private flags (pp_flags) */
367 MV_PP_FLAG_EDMA_EN = (1 << 0), /* is EDMA engine enabled? */ 365 MV_PP_FLAG_EDMA_EN = (1 << 0), /* is EDMA engine enabled? */
@@ -374,7 +372,7 @@ enum {
374#define IS_GEN_II(hpriv) ((hpriv)->hp_flags & MV_HP_GEN_II) 372#define IS_GEN_II(hpriv) ((hpriv)->hp_flags & MV_HP_GEN_II)
375#define IS_GEN_IIE(hpriv) ((hpriv)->hp_flags & MV_HP_GEN_IIE) 373#define IS_GEN_IIE(hpriv) ((hpriv)->hp_flags & MV_HP_GEN_IIE)
376#define IS_PCIE(hpriv) ((hpriv)->hp_flags & MV_HP_PCIE) 374#define IS_PCIE(hpriv) ((hpriv)->hp_flags & MV_HP_PCIE)
377#define HAS_PCI(host) (!((host)->ports[0]->flags & MV_FLAG_SOC)) 375#define IS_SOC(hpriv) ((hpriv)->hp_flags & MV_HP_FLAG_SOC)
378 376
379#define WINDOW_CTRL(i) (0x20030 + ((i) << 4)) 377#define WINDOW_CTRL(i) (0x20030 + ((i) << 4))
380#define WINDOW_BASE(i) (0x20034 + ((i) << 4)) 378#define WINDOW_BASE(i) (0x20034 + ((i) << 4))
@@ -652,7 +650,7 @@ static const struct ata_port_info mv_port_info[] = {
652 .port_ops = &mv_iie_ops, 650 .port_ops = &mv_iie_ops,
653 }, 651 },
654 { /* chip_soc */ 652 { /* chip_soc */
655 .flags = MV_GENIIE_FLAGS | MV_FLAG_SOC, 653 .flags = MV_GENIIE_FLAGS,
656 .pio_mask = 0x1f, /* pio0-4 */ 654 .pio_mask = 0x1f, /* pio0-4 */
657 .udma_mask = ATA_UDMA6, 655 .udma_mask = ATA_UDMA6,
658 .port_ops = &mv_iie_ops, 656 .port_ops = &mv_iie_ops,
@@ -812,12 +810,7 @@ static void mv_set_edma_ptrs(void __iomem *port_mmio,
812 writel((pp->crqb_dma >> 16) >> 16, port_mmio + EDMA_REQ_Q_BASE_HI_OFS); 810 writel((pp->crqb_dma >> 16) >> 16, port_mmio + EDMA_REQ_Q_BASE_HI_OFS);
813 writelfl((pp->crqb_dma & EDMA_REQ_Q_BASE_LO_MASK) | index, 811 writelfl((pp->crqb_dma & EDMA_REQ_Q_BASE_LO_MASK) | index,
814 port_mmio + EDMA_REQ_Q_IN_PTR_OFS); 812 port_mmio + EDMA_REQ_Q_IN_PTR_OFS);
815 813 writelfl(index, port_mmio + EDMA_REQ_Q_OUT_PTR_OFS);
816 if (hpriv->hp_flags & MV_HP_ERRATA_XX42A0)
817 writelfl((pp->crqb_dma & 0xffffffff) | index,
818 port_mmio + EDMA_REQ_Q_OUT_PTR_OFS);
819 else
820 writelfl(index, port_mmio + EDMA_REQ_Q_OUT_PTR_OFS);
821 814
822 /* 815 /*
823 * initialize response queue 816 * initialize response queue
@@ -827,13 +820,7 @@ static void mv_set_edma_ptrs(void __iomem *port_mmio,
827 820
828 WARN_ON(pp->crpb_dma & 0xff); 821 WARN_ON(pp->crpb_dma & 0xff);
829 writel((pp->crpb_dma >> 16) >> 16, port_mmio + EDMA_RSP_Q_BASE_HI_OFS); 822 writel((pp->crpb_dma >> 16) >> 16, port_mmio + EDMA_RSP_Q_BASE_HI_OFS);
830 823 writelfl(index, port_mmio + EDMA_RSP_Q_IN_PTR_OFS);
831 if (hpriv->hp_flags & MV_HP_ERRATA_XX42A0)
832 writelfl((pp->crpb_dma & 0xffffffff) | index,
833 port_mmio + EDMA_RSP_Q_IN_PTR_OFS);
834 else
835 writelfl(index, port_mmio + EDMA_RSP_Q_IN_PTR_OFS);
836
837 writelfl((pp->crpb_dma & EDMA_RSP_Q_BASE_LO_MASK) | index, 824 writelfl((pp->crpb_dma & EDMA_RSP_Q_BASE_LO_MASK) | index,
838 port_mmio + EDMA_RSP_Q_OUT_PTR_OFS); 825 port_mmio + EDMA_RSP_Q_OUT_PTR_OFS);
839} 826}
@@ -1254,7 +1241,7 @@ static void mv_edma_cfg(struct ata_port *ap, int want_ncq)
1254 1241
1255 cfg |= (1 << 23); /* do not mask PM field in rx'd FIS */ 1242 cfg |= (1 << 23); /* do not mask PM field in rx'd FIS */
1256 cfg |= (1 << 22); /* enab 4-entry host queue cache */ 1243 cfg |= (1 << 22); /* enab 4-entry host queue cache */
1257 if (HAS_PCI(ap->host)) 1244 if (!IS_SOC(hpriv))
1258 cfg |= (1 << 18); /* enab early completion */ 1245 cfg |= (1 << 18); /* enab early completion */
1259 if (hpriv->hp_flags & MV_HP_CUT_THROUGH) 1246 if (hpriv->hp_flags & MV_HP_CUT_THROUGH)
1260 cfg |= (1 << 17); /* enab cut-thru (dis stor&forwrd) */ 1247 cfg |= (1 << 17); /* enab cut-thru (dis stor&forwrd) */
@@ -2225,7 +2212,7 @@ static irqreturn_t mv_interrupt(int irq, void *dev_instance)
2225 * a bogus register value which can indicate HW removal or PCI fault. 2212 * a bogus register value which can indicate HW removal or PCI fault.
2226 */ 2213 */
2227 if (pending_irqs && main_irq_cause != 0xffffffffU) { 2214 if (pending_irqs && main_irq_cause != 0xffffffffU) {
2228 if (unlikely((pending_irqs & PCI_ERR) && HAS_PCI(host))) 2215 if (unlikely((pending_irqs & PCI_ERR) && !IS_SOC(hpriv)))
2229 handled = mv_pci_error(host, hpriv->base); 2216 handled = mv_pci_error(host, hpriv->base);
2230 else 2217 else
2231 handled = mv_host_intr(host, pending_irqs); 2218 handled = mv_host_intr(host, pending_irqs);
@@ -2547,7 +2534,7 @@ static void mv6_phy_errata(struct mv_host_priv *hpriv, void __iomem *mmio,
2547 hp_flags & (MV_HP_ERRATA_60X1B2 | MV_HP_ERRATA_60X1C0); 2534 hp_flags & (MV_HP_ERRATA_60X1B2 | MV_HP_ERRATA_60X1C0);
2548 int fix_phy_mode4 = 2535 int fix_phy_mode4 =
2549 hp_flags & (MV_HP_ERRATA_60X1B2 | MV_HP_ERRATA_60X1C0); 2536 hp_flags & (MV_HP_ERRATA_60X1B2 | MV_HP_ERRATA_60X1C0);
2550 u32 m2, tmp; 2537 u32 m2, m3;
2551 2538
2552 if (fix_phy_mode2) { 2539 if (fix_phy_mode2) {
2553 m2 = readl(port_mmio + PHY_MODE2); 2540 m2 = readl(port_mmio + PHY_MODE2);
@@ -2564,28 +2551,37 @@ static void mv6_phy_errata(struct mv_host_priv *hpriv, void __iomem *mmio,
2564 udelay(200); 2551 udelay(200);
2565 } 2552 }
2566 2553
2567 /* who knows what this magic does */ 2554 /*
2568 tmp = readl(port_mmio + PHY_MODE3); 2555 * Gen-II/IIe PHY_MODE3 errata RM#2:
2569 tmp &= ~0x7F800000; 2556 * Achieves better receiver noise performance than the h/w default:
2570 tmp |= 0x2A800000; 2557 */
2571 writel(tmp, port_mmio + PHY_MODE3); 2558 m3 = readl(port_mmio + PHY_MODE3);
2559 m3 = (m3 & 0x1f) | (0x5555601 << 5);
2560
2561 /* Guideline 88F5182 (GL# SATA-S11) */
2562 if (IS_SOC(hpriv))
2563 m3 &= ~0x1c;
2572 2564
2573 if (fix_phy_mode4) { 2565 if (fix_phy_mode4) {
2574 u32 m4; 2566 u32 m4;
2575 2567
2576 m4 = readl(port_mmio + PHY_MODE4); 2568 m4 = readl(port_mmio + PHY_MODE4);
2577 2569
2578 if (hp_flags & MV_HP_ERRATA_60X1B2)
2579 tmp = readl(port_mmio + PHY_MODE3);
2580
2581 /* workaround for errata FEr SATA#10 (part 1) */ 2570 /* workaround for errata FEr SATA#10 (part 1) */
2582 m4 = (m4 & ~(1 << 1)) | (1 << 0); 2571 m4 = (m4 & ~(1 << 1)) | (1 << 0);
2583 2572
2584 writel(m4, port_mmio + PHY_MODE4); 2573 /* enforce bit restrictions on GenIIe devices */
2574 if (IS_GEN_IIE(hpriv))
2575 m4 = (m4 & ~0x5DE3FFFC) | (1 << 2);
2585 2576
2586 if (hp_flags & MV_HP_ERRATA_60X1B2) 2577 writel(m4, port_mmio + PHY_MODE4);
2587 writel(tmp, port_mmio + PHY_MODE3);
2588 } 2578 }
2579 /*
2580 * Workaround for 60x1-B2 errata SATA#13:
2581 * Any write to PHY_MODE4 (above) may corrupt PHY_MODE3,
2582 * so we must always rewrite PHY_MODE3 after PHY_MODE4.
2583 */
2584 writel(m3, port_mmio + PHY_MODE3);
2589 2585
2590 /* Revert values of pre-emphasis and signal amps to the saved ones */ 2586 /* Revert values of pre-emphasis and signal amps to the saved ones */
2591 m2 = readl(port_mmio + PHY_MODE2); 2587 m2 = readl(port_mmio + PHY_MODE2);
@@ -2876,7 +2872,7 @@ static unsigned int mv_in_pcix_mode(struct ata_host *host)
2876 void __iomem *mmio = hpriv->base; 2872 void __iomem *mmio = hpriv->base;
2877 u32 reg; 2873 u32 reg;
2878 2874
2879 if (!HAS_PCI(host) || !IS_PCIE(hpriv)) 2875 if (IS_SOC(hpriv) || !IS_PCIE(hpriv))
2880 return 0; /* not PCI-X capable */ 2876 return 0; /* not PCI-X capable */
2881 reg = readl(mmio + MV_PCI_MODE_OFS); 2877 reg = readl(mmio + MV_PCI_MODE_OFS);
2882 if ((reg & MV_PCI_MODE_MASK) == 0) 2878 if ((reg & MV_PCI_MODE_MASK) == 0)
@@ -3003,10 +2999,7 @@ static int mv_chip_id(struct ata_host *host, unsigned int board_idx)
3003 hp_flags |= MV_HP_CUT_THROUGH; 2999 hp_flags |= MV_HP_CUT_THROUGH;
3004 3000
3005 switch (pdev->revision) { 3001 switch (pdev->revision) {
3006 case 0x0: 3002 case 0x2: /* Rev.B0: the first/only public release */
3007 hp_flags |= MV_HP_ERRATA_XX42A0;
3008 break;
3009 case 0x1:
3010 hp_flags |= MV_HP_ERRATA_60X1C0; 3003 hp_flags |= MV_HP_ERRATA_60X1C0;
3011 break; 3004 break;
3012 default: 3005 default:
@@ -3018,7 +3011,7 @@ static int mv_chip_id(struct ata_host *host, unsigned int board_idx)
3018 break; 3011 break;
3019 case chip_soc: 3012 case chip_soc:
3020 hpriv->ops = &mv_soc_ops; 3013 hpriv->ops = &mv_soc_ops;
3021 hp_flags |= MV_HP_ERRATA_60X1C0; 3014 hp_flags |= MV_HP_FLAG_SOC | MV_HP_ERRATA_60X1C0;
3022 break; 3015 break;
3023 3016
3024 default: 3017 default:
@@ -3062,12 +3055,12 @@ static int mv_init_host(struct ata_host *host, unsigned int board_idx)
3062 if (rc) 3055 if (rc)
3063 goto done; 3056 goto done;
3064 3057
3065 if (HAS_PCI(host)) { 3058 if (IS_SOC(hpriv)) {
3066 hpriv->main_irq_cause_addr = mmio + PCI_HC_MAIN_IRQ_CAUSE_OFS;
3067 hpriv->main_irq_mask_addr = mmio + PCI_HC_MAIN_IRQ_MASK_OFS;
3068 } else {
3069 hpriv->main_irq_cause_addr = mmio + SOC_HC_MAIN_IRQ_CAUSE_OFS; 3059 hpriv->main_irq_cause_addr = mmio + SOC_HC_MAIN_IRQ_CAUSE_OFS;
3070 hpriv->main_irq_mask_addr = mmio + SOC_HC_MAIN_IRQ_MASK_OFS; 3060 hpriv->main_irq_mask_addr = mmio + SOC_HC_MAIN_IRQ_MASK_OFS;
3061 } else {
3062 hpriv->main_irq_cause_addr = mmio + PCI_HC_MAIN_IRQ_CAUSE_OFS;
3063 hpriv->main_irq_mask_addr = mmio + PCI_HC_MAIN_IRQ_MASK_OFS;
3071 } 3064 }
3072 3065
3073 /* global interrupt mask: 0 == mask everything */ 3066 /* global interrupt mask: 0 == mask everything */
@@ -3093,7 +3086,7 @@ static int mv_init_host(struct ata_host *host, unsigned int board_idx)
3093 mv_port_init(&ap->ioaddr, port_mmio); 3086 mv_port_init(&ap->ioaddr, port_mmio);
3094 3087
3095#ifdef CONFIG_PCI 3088#ifdef CONFIG_PCI
3096 if (HAS_PCI(host)) { 3089 if (!IS_SOC(hpriv)) {
3097 unsigned int offset = port_mmio - mmio; 3090 unsigned int offset = port_mmio - mmio;
3098 ata_port_pbar_desc(ap, MV_PRIMARY_BAR, -1, "mmio"); 3091 ata_port_pbar_desc(ap, MV_PRIMARY_BAR, -1, "mmio");
3099 ata_port_pbar_desc(ap, MV_PRIMARY_BAR, offset, "port"); 3092 ata_port_pbar_desc(ap, MV_PRIMARY_BAR, offset, "port");
@@ -3113,7 +3106,7 @@ static int mv_init_host(struct ata_host *host, unsigned int board_idx)
3113 writelfl(0, hc_mmio + HC_IRQ_CAUSE_OFS); 3106 writelfl(0, hc_mmio + HC_IRQ_CAUSE_OFS);
3114 } 3107 }
3115 3108
3116 if (HAS_PCI(host)) { 3109 if (!IS_SOC(hpriv)) {
3117 /* Clear any currently outstanding host interrupt conditions */ 3110 /* Clear any currently outstanding host interrupt conditions */
3118 writelfl(0, mmio + hpriv->irq_cause_ofs); 3111 writelfl(0, mmio + hpriv->irq_cause_ofs);
3119 3112
diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
index 84e064ffee52..dd7ea203f940 100644
--- a/drivers/block/virtio_blk.c
+++ b/drivers/block/virtio_blk.c
@@ -260,6 +260,10 @@ static int virtblk_probe(struct virtio_device *vdev)
260 if (virtio_has_feature(vdev, VIRTIO_BLK_F_BARRIER)) 260 if (virtio_has_feature(vdev, VIRTIO_BLK_F_BARRIER))
261 blk_queue_ordered(vblk->disk->queue, QUEUE_ORDERED_TAG, NULL); 261 blk_queue_ordered(vblk->disk->queue, QUEUE_ORDERED_TAG, NULL);
262 262
263 /* If disk is read-only in the host, the guest should obey */
264 if (virtio_has_feature(vdev, VIRTIO_BLK_F_RO))
265 set_disk_ro(vblk->disk, 1);
266
263 /* Host must always specify the capacity. */ 267 /* Host must always specify the capacity. */
264 vdev->config->get(vdev, offsetof(struct virtio_blk_config, capacity), 268 vdev->config->get(vdev, offsetof(struct virtio_blk_config, capacity),
265 &cap, sizeof(cap)); 269 &cap, sizeof(cap));
@@ -311,6 +315,7 @@ static void virtblk_remove(struct virtio_device *vdev)
311 /* Stop all the virtqueues. */ 315 /* Stop all the virtqueues. */
312 vdev->config->reset(vdev); 316 vdev->config->reset(vdev);
313 317
318 del_gendisk(vblk->disk);
314 blk_cleanup_queue(vblk->disk->queue); 319 blk_cleanup_queue(vblk->disk->queue);
315 put_disk(vblk->disk); 320 put_disk(vblk->disk);
316 mempool_destroy(vblk->pool); 321 mempool_destroy(vblk->pool);
@@ -325,7 +330,7 @@ static struct virtio_device_id id_table[] = {
325 330
326static unsigned int features[] = { 331static unsigned int features[] = {
327 VIRTIO_BLK_F_BARRIER, VIRTIO_BLK_F_SEG_MAX, VIRTIO_BLK_F_SIZE_MAX, 332 VIRTIO_BLK_F_BARRIER, VIRTIO_BLK_F_SEG_MAX, VIRTIO_BLK_F_SIZE_MAX,
328 VIRTIO_BLK_F_GEOMETRY, 333 VIRTIO_BLK_F_GEOMETRY, VIRTIO_BLK_F_RO,
329}; 334};
330 335
331static struct virtio_driver virtio_blk = { 336static struct virtio_driver virtio_blk = {
diff --git a/drivers/char/hw_random/Kconfig b/drivers/char/hw_random/Kconfig
index 8d6c2089d2a8..efd0b4db7c8e 100644
--- a/drivers/char/hw_random/Kconfig
+++ b/drivers/char/hw_random/Kconfig
@@ -112,3 +112,12 @@ config HW_RANDOM_PASEMI
112 112
113 If unsure, say Y. 113 If unsure, say Y.
114 114
115config HW_RANDOM_VIRTIO
116 tristate "VirtIO Random Number Generator support"
117 depends on HW_RANDOM && VIRTIO
118 ---help---
119 This driver provides kernel-side support for the virtual Random Number
120 Generator hardware.
121
122 To compile this driver as a module, choose M here: the
123 module will be called virtio-rng. If unsure, say N.
diff --git a/drivers/char/hw_random/Makefile b/drivers/char/hw_random/Makefile
index c8b7300e2fb1..b4940ddbb35f 100644
--- a/drivers/char/hw_random/Makefile
+++ b/drivers/char/hw_random/Makefile
@@ -11,3 +11,4 @@ obj-$(CONFIG_HW_RANDOM_VIA) += via-rng.o
11obj-$(CONFIG_HW_RANDOM_IXP4XX) += ixp4xx-rng.o 11obj-$(CONFIG_HW_RANDOM_IXP4XX) += ixp4xx-rng.o
12obj-$(CONFIG_HW_RANDOM_OMAP) += omap-rng.o 12obj-$(CONFIG_HW_RANDOM_OMAP) += omap-rng.o
13obj-$(CONFIG_HW_RANDOM_PASEMI) += pasemi-rng.o 13obj-$(CONFIG_HW_RANDOM_PASEMI) += pasemi-rng.o
14obj-$(CONFIG_HW_RANDOM_VIRTIO) += virtio-rng.o
diff --git a/drivers/char/hw_random/virtio-rng.c b/drivers/char/hw_random/virtio-rng.c
new file mode 100644
index 000000000000..d0e563e4fc39
--- /dev/null
+++ b/drivers/char/hw_random/virtio-rng.c
@@ -0,0 +1,155 @@
1/*
2 * Randomness driver for virtio
3 * Copyright (C) 2007, 2008 Rusty Russell IBM Corporation
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18 */
19#include <linux/err.h>
20#include <linux/hw_random.h>
21#include <linux/scatterlist.h>
22#include <linux/spinlock.h>
23#include <linux/virtio.h>
24#include <linux/virtio_rng.h>
25
26/* The host will fill any buffer we give it with sweet, sweet randomness. We
27 * give it 64 bytes at a time, and the hwrng framework takes it 4 bytes at a
28 * time. */
29#define RANDOM_DATA_SIZE 64
30
31static struct virtqueue *vq;
32static u32 *random_data;
33static unsigned int data_left;
34static DECLARE_COMPLETION(have_data);
35
36static void random_recv_done(struct virtqueue *vq)
37{
38 int len;
39
40 /* We never get spurious callbacks. */
41 if (!vq->vq_ops->get_buf(vq, &len))
42 BUG();
43
44 data_left = len / sizeof(random_data[0]);
45 complete(&have_data);
46}
47
48static void register_buffer(void)
49{
50 struct scatterlist sg;
51
52 sg_init_one(&sg, random_data, RANDOM_DATA_SIZE);
53 /* There should always be room for one buffer. */
54 if (vq->vq_ops->add_buf(vq, &sg, 0, 1, random_data) != 0)
55 BUG();
56 vq->vq_ops->kick(vq);
57}
58
59/* At least we don't udelay() in a loop like some other drivers. */
60static int virtio_data_present(struct hwrng *rng, int wait)
61{
62 if (data_left)
63 return 1;
64
65 if (!wait)
66 return 0;
67
68 wait_for_completion(&have_data);
69 return 1;
70}
71
72/* virtio_data_present() must have succeeded before this is called. */
73static int virtio_data_read(struct hwrng *rng, u32 *data)
74{
75 BUG_ON(!data_left);
76
77 *data = random_data[--data_left];
78
79 if (!data_left) {
80 init_completion(&have_data);
81 register_buffer();
82 }
83 return sizeof(*data);
84}
85
86static struct hwrng virtio_hwrng = {
87 .name = "virtio",
88 .data_present = virtio_data_present,
89 .data_read = virtio_data_read,
90};
91
92static int virtrng_probe(struct virtio_device *vdev)
93{
94 int err;
95
96 /* We expect a single virtqueue. */
97 vq = vdev->config->find_vq(vdev, 0, random_recv_done);
98 if (IS_ERR(vq))
99 return PTR_ERR(vq);
100
101 err = hwrng_register(&virtio_hwrng);
102 if (err) {
103 vdev->config->del_vq(vq);
104 return err;
105 }
106
107 register_buffer();
108 return 0;
109}
110
111static void virtrng_remove(struct virtio_device *vdev)
112{
113 vdev->config->reset(vdev);
114 hwrng_unregister(&virtio_hwrng);
115 vdev->config->del_vq(vq);
116}
117
118static struct virtio_device_id id_table[] = {
119 { VIRTIO_ID_RNG, VIRTIO_DEV_ANY_ID },
120 { 0 },
121};
122
123static struct virtio_driver virtio_rng = {
124 .driver.name = KBUILD_MODNAME,
125 .driver.owner = THIS_MODULE,
126 .id_table = id_table,
127 .probe = virtrng_probe,
128 .remove = __devexit_p(virtrng_remove),
129};
130
131static int __init init(void)
132{
133 int err;
134
135 random_data = kmalloc(RANDOM_DATA_SIZE, GFP_KERNEL);
136 if (!random_data)
137 return -ENOMEM;
138
139 err = register_virtio_driver(&virtio_rng);
140 if (err)
141 kfree(random_data);
142 return err;
143}
144
145static void __exit fini(void)
146{
147 kfree(random_data);
148 unregister_virtio_driver(&virtio_rng);
149}
150module_init(init);
151module_exit(fini);
152
153MODULE_DEVICE_TABLE(virtio, id_table);
154MODULE_DESCRIPTION("Virtio random number driver");
155MODULE_LICENSE("GPL");
diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
index 4a95adc4cc78..af58a6f1e898 100644
--- a/drivers/input/keyboard/atkbd.c
+++ b/drivers/input/keyboard/atkbd.c
@@ -807,6 +807,8 @@ static int atkbd_activate(struct atkbd *atkbd)
807static void atkbd_cleanup(struct serio *serio) 807static void atkbd_cleanup(struct serio *serio)
808{ 808{
809 struct atkbd *atkbd = serio_get_drvdata(serio); 809 struct atkbd *atkbd = serio_get_drvdata(serio);
810
811 atkbd_disable(atkbd);
810 ps2_command(&atkbd->ps2dev, NULL, ATKBD_CMD_RESET_BAT); 812 ps2_command(&atkbd->ps2dev, NULL, ATKBD_CMD_RESET_BAT);
811} 813}
812 814
diff --git a/drivers/input/keyboard/pxa27x_keypad.c b/drivers/input/keyboard/pxa27x_keypad.c
index 3dea0c5077a9..45767e73f071 100644
--- a/drivers/input/keyboard/pxa27x_keypad.c
+++ b/drivers/input/keyboard/pxa27x_keypad.c
@@ -136,6 +136,9 @@ static void pxa27x_keypad_build_keycode(struct pxa27x_keypad *keypad)
136 set_bit(code, input_dev->keybit); 136 set_bit(code, input_dev->keybit);
137 } 137 }
138 138
139 for (i = 0; i < pdata->direct_key_num; i++)
140 set_bit(pdata->direct_key_map[i], input_dev->keybit);
141
139 keypad->rotary_up_key[0] = pdata->rotary0_up_key; 142 keypad->rotary_up_key[0] = pdata->rotary0_up_key;
140 keypad->rotary_up_key[1] = pdata->rotary1_up_key; 143 keypad->rotary_up_key[1] = pdata->rotary1_up_key;
141 keypad->rotary_down_key[0] = pdata->rotary0_down_key; 144 keypad->rotary_down_key[0] = pdata->rotary0_down_key;
@@ -143,17 +146,21 @@ static void pxa27x_keypad_build_keycode(struct pxa27x_keypad *keypad)
143 keypad->rotary_rel_code[0] = pdata->rotary0_rel_code; 146 keypad->rotary_rel_code[0] = pdata->rotary0_rel_code;
144 keypad->rotary_rel_code[1] = pdata->rotary1_rel_code; 147 keypad->rotary_rel_code[1] = pdata->rotary1_rel_code;
145 148
146 if (pdata->rotary0_up_key && pdata->rotary0_down_key) { 149 if (pdata->enable_rotary0) {
147 set_bit(pdata->rotary0_up_key, input_dev->keybit); 150 if (pdata->rotary0_up_key && pdata->rotary0_down_key) {
148 set_bit(pdata->rotary0_down_key, input_dev->keybit); 151 set_bit(pdata->rotary0_up_key, input_dev->keybit);
149 } else 152 set_bit(pdata->rotary0_down_key, input_dev->keybit);
150 set_bit(pdata->rotary0_rel_code, input_dev->relbit); 153 } else
151 154 set_bit(pdata->rotary0_rel_code, input_dev->relbit);
152 if (pdata->rotary1_up_key && pdata->rotary1_down_key) { 155 }
153 set_bit(pdata->rotary1_up_key, input_dev->keybit); 156
154 set_bit(pdata->rotary1_down_key, input_dev->keybit); 157 if (pdata->enable_rotary1) {
155 } else 158 if (pdata->rotary1_up_key && pdata->rotary1_down_key) {
156 set_bit(pdata->rotary1_rel_code, input_dev->relbit); 159 set_bit(pdata->rotary1_up_key, input_dev->keybit);
160 set_bit(pdata->rotary1_down_key, input_dev->keybit);
161 } else
162 set_bit(pdata->rotary1_rel_code, input_dev->relbit);
163 }
157} 164}
158 165
159static inline unsigned int lookup_matrix_keycode( 166static inline unsigned int lookup_matrix_keycode(
@@ -484,8 +491,13 @@ static int __devinit pxa27x_keypad_probe(struct platform_device *pdev)
484 keypad->input_dev = input_dev; 491 keypad->input_dev = input_dev;
485 input_set_drvdata(input_dev, keypad); 492 input_set_drvdata(input_dev, keypad);
486 493
487 input_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REP) | 494 input_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REP);
488 BIT_MASK(EV_REL); 495 if ((keypad->pdata->enable_rotary0 &&
496 keypad->pdata->rotary0_rel_code) ||
497 (keypad->pdata->enable_rotary1 &&
498 keypad->pdata->rotary1_rel_code)) {
499 input_dev->evbit[0] |= BIT_MASK(EV_REL);
500 }
489 501
490 pxa27x_keypad_build_keycode(keypad); 502 pxa27x_keypad_build_keycode(keypad);
491 platform_set_drvdata(pdev, keypad); 503 platform_set_drvdata(pdev, keypad);
diff --git a/drivers/input/misc/apanel.c b/drivers/input/misc/apanel.c
index 9531d8c7444f..d82f7f727f7a 100644
--- a/drivers/input/misc/apanel.c
+++ b/drivers/input/misc/apanel.c
@@ -20,7 +20,6 @@
20#include <linux/module.h> 20#include <linux/module.h>
21#include <linux/ioport.h> 21#include <linux/ioport.h>
22#include <linux/io.h> 22#include <linux/io.h>
23#include <linux/module.h>
24#include <linux/input-polldev.h> 23#include <linux/input-polldev.h>
25#include <linux/i2c.h> 24#include <linux/i2c.h>
26#include <linux/workqueue.h> 25#include <linux/workqueue.h>
diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h
index 5ece9f56babc..9aafa96cb746 100644
--- a/drivers/input/serio/i8042-x86ia64io.h
+++ b/drivers/input/serio/i8042-x86ia64io.h
@@ -331,6 +331,13 @@ static struct dmi_system_id __initdata i8042_dmi_dritek_table[] = {
331 }, 331 },
332 }, 332 },
333 { 333 {
334 .ident = "Acer TravelMate 660",
335 .matches = {
336 DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
337 DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 660"),
338 },
339 },
340 {
334 .ident = "Acer TravelMate 2490", 341 .ident = "Acer TravelMate 2490",
335 .matches = { 342 .matches = {
336 DMI_MATCH(DMI_SYS_VENDOR, "Acer"), 343 DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
index 65a74cfc187b..592ff55b62d0 100644
--- a/drivers/input/serio/i8042.c
+++ b/drivers/input/serio/i8042.c
@@ -885,6 +885,20 @@ static long i8042_panic_blink(long count)
885 885
886#undef DELAY 886#undef DELAY
887 887
888#ifdef CONFIG_X86
889static void i8042_dritek_enable(void)
890{
891 char param = 0x90;
892 int error;
893
894 error = i8042_command(&param, 0x1059);
895 if (error)
896 printk(KERN_WARNING
897 "Failed to enable DRITEK extension: %d\n",
898 error);
899}
900#endif
901
888#ifdef CONFIG_PM 902#ifdef CONFIG_PM
889/* 903/*
890 * Here we try to restore the original BIOS settings. We only want to 904 * Here we try to restore the original BIOS settings. We only want to
@@ -942,6 +956,12 @@ static int i8042_resume(struct platform_device *dev)
942 return -EIO; 956 return -EIO;
943 } 957 }
944 958
959
960#ifdef CONFIG_X86
961 if (i8042_dritek)
962 i8042_dritek_enable();
963#endif
964
945 if (i8042_mux_present) { 965 if (i8042_mux_present) {
946 if (i8042_set_mux_mode(1, NULL) || i8042_enable_mux_ports()) 966 if (i8042_set_mux_mode(1, NULL) || i8042_enable_mux_ports())
947 printk(KERN_WARNING 967 printk(KERN_WARNING
@@ -1160,6 +1180,11 @@ static int __devinit i8042_probe(struct platform_device *dev)
1160 if (error) 1180 if (error)
1161 return error; 1181 return error;
1162 1182
1183#ifdef CONFIG_X86
1184 if (i8042_dritek)
1185 i8042_dritek_enable();
1186#endif
1187
1163 if (!i8042_noaux) { 1188 if (!i8042_noaux) {
1164 error = i8042_setup_aux(); 1189 error = i8042_setup_aux();
1165 if (error && error != -ENODEV && error != -EBUSY) 1190 if (error && error != -ENODEV && error != -EBUSY)
@@ -1171,14 +1196,6 @@ static int __devinit i8042_probe(struct platform_device *dev)
1171 if (error) 1196 if (error)
1172 goto out_fail; 1197 goto out_fail;
1173 } 1198 }
1174#ifdef CONFIG_X86
1175 if (i8042_dritek) {
1176 char param = 0x90;
1177 error = i8042_command(&param, 0x1059);
1178 if (error)
1179 goto out_fail;
1180 }
1181#endif
1182/* 1199/*
1183 * Ok, everything is ready, let's register all serio ports 1200 * Ok, everything is ready, let's register all serio ports
1184 */ 1201 */
diff --git a/drivers/input/tablet/gtco.c b/drivers/input/tablet/gtco.c
index c5a8661a1baa..1e748e46d12e 100644
--- a/drivers/input/tablet/gtco.c
+++ b/drivers/input/tablet/gtco.c
@@ -830,7 +830,7 @@ static int gtco_probe(struct usb_interface *usbinterface,
830 struct gtco *gtco; 830 struct gtco *gtco;
831 struct input_dev *input_dev; 831 struct input_dev *input_dev;
832 struct hid_descriptor *hid_desc; 832 struct hid_descriptor *hid_desc;
833 char *report = NULL; 833 char *report;
834 int result = 0, retry; 834 int result = 0, retry;
835 int error; 835 int error;
836 struct usb_endpoint_descriptor *endpoint; 836 struct usb_endpoint_descriptor *endpoint;
@@ -916,12 +916,16 @@ static int gtco_probe(struct usb_interface *usbinterface,
916 le16_to_cpu(hid_desc->wDescriptorLength), 916 le16_to_cpu(hid_desc->wDescriptorLength),
917 5000); /* 5 secs */ 917 5000); /* 5 secs */
918 918
919 if (result == le16_to_cpu(hid_desc->wDescriptorLength)) 919 dbg("usb_control_msg result: %d", result);
920 if (result == le16_to_cpu(hid_desc->wDescriptorLength)) {
921 parse_hid_report_descriptor(gtco, report, result);
920 break; 922 break;
923 }
921 } 924 }
922 925
926 kfree(report);
927
923 /* If we didn't get the report, fail */ 928 /* If we didn't get the report, fail */
924 dbg("usb_control_msg result: :%d", result);
925 if (result != le16_to_cpu(hid_desc->wDescriptorLength)) { 929 if (result != le16_to_cpu(hid_desc->wDescriptorLength)) {
926 err("Failed to get HID Report Descriptor of size: %d", 930 err("Failed to get HID Report Descriptor of size: %d",
927 hid_desc->wDescriptorLength); 931 hid_desc->wDescriptorLength);
@@ -929,12 +933,6 @@ static int gtco_probe(struct usb_interface *usbinterface,
929 goto err_free_urb; 933 goto err_free_urb;
930 } 934 }
931 935
932 /* Now we parse the report */
933 parse_hid_report_descriptor(gtco, report, result);
934
935 /* Now we delete it */
936 kfree(report);
937
938 /* Create a device file node */ 936 /* Create a device file node */
939 usb_make_path(gtco->usbdev, gtco->usbpath, sizeof(gtco->usbpath)); 937 usb_make_path(gtco->usbdev, gtco->usbpath, sizeof(gtco->usbpath));
940 strlcat(gtco->usbpath, "/input0", sizeof(gtco->usbpath)); 938 strlcat(gtco->usbpath, "/input0", sizeof(gtco->usbpath));
@@ -988,7 +986,6 @@ static int gtco_probe(struct usb_interface *usbinterface,
988 usb_buffer_free(gtco->usbdev, REPORT_MAX_SIZE, 986 usb_buffer_free(gtco->usbdev, REPORT_MAX_SIZE,
989 gtco->buffer, gtco->buf_dma); 987 gtco->buffer, gtco->buf_dma);
990 err_free_devs: 988 err_free_devs:
991 kfree(report);
992 input_free_device(input_dev); 989 input_free_device(input_dev);
993 kfree(gtco); 990 kfree(gtco);
994 return error; 991 return error;
diff --git a/drivers/input/touchscreen/wm9713.c b/drivers/input/touchscreen/wm9713.c
index 01278bd7e65c..838458792ea0 100644
--- a/drivers/input/touchscreen/wm9713.c
+++ b/drivers/input/touchscreen/wm9713.c
@@ -85,6 +85,15 @@ module_param(delay, int, 0);
85MODULE_PARM_DESC(delay, "Set adc sample delay."); 85MODULE_PARM_DESC(delay, "Set adc sample delay.");
86 86
87/* 87/*
88 * Set five_wire = 1 to use a 5 wire touchscreen.
89 *
90 * NOTE: Five wire mode does not allow for readback of pressure.
91 */
92static int five_wire;
93module_param(five_wire, int, 0);
94MODULE_PARM_DESC(five_wire, "Set to '1' to use 5-wire touchscreen.");
95
96/*
88 * Set adc mask function. 97 * Set adc mask function.
89 * 98 *
90 * Sources of glitch noise, such as signals driving an LCD display, may feed 99 * Sources of glitch noise, such as signals driving an LCD display, may feed
@@ -162,6 +171,19 @@ static void wm9713_phy_init(struct wm97xx *wm)
162 64000 / rpu); 171 64000 / rpu);
163 } 172 }
164 173
174 /* Five wire panel? */
175 if (five_wire) {
176 dig3 |= WM9713_45W;
177 dev_info(wm->dev, "setting 5-wire touchscreen mode.");
178
179 if (pil) {
180 dev_warn(wm->dev,
181 "Pressure measurement not supported in 5 "
182 "wire mode, disabling\n");
183 pil = 0;
184 }
185 }
186
165 /* touchpanel pressure */ 187 /* touchpanel pressure */
166 if (pil == 2) { 188 if (pil == 2) {
167 dig3 |= WM9712_PIL; 189 dig3 |= WM9712_PIL;
diff --git a/drivers/input/touchscreen/wm97xx-core.c b/drivers/input/touchscreen/wm97xx-core.c
index e9c7ea46b6e3..cdc24ad314e0 100644
--- a/drivers/input/touchscreen/wm97xx-core.c
+++ b/drivers/input/touchscreen/wm97xx-core.c
@@ -608,6 +608,17 @@ static int wm97xx_probe(struct device *dev)
608 goto alloc_err; 608 goto alloc_err;
609 } 609 }
610 610
611 /* set up physical characteristics */
612 wm->codec->phy_init(wm);
613
614 /* load gpio cache */
615 wm->gpio[0] = wm97xx_reg_read(wm, AC97_GPIO_CFG);
616 wm->gpio[1] = wm97xx_reg_read(wm, AC97_GPIO_POLARITY);
617 wm->gpio[2] = wm97xx_reg_read(wm, AC97_GPIO_STICKY);
618 wm->gpio[3] = wm97xx_reg_read(wm, AC97_GPIO_WAKEUP);
619 wm->gpio[4] = wm97xx_reg_read(wm, AC97_GPIO_STATUS);
620 wm->gpio[5] = wm97xx_reg_read(wm, AC97_MISC_AFE);
621
611 wm->input_dev = input_allocate_device(); 622 wm->input_dev = input_allocate_device();
612 if (wm->input_dev == NULL) { 623 if (wm->input_dev == NULL) {
613 ret = -ENOMEM; 624 ret = -ENOMEM;
@@ -616,6 +627,7 @@ static int wm97xx_probe(struct device *dev)
616 627
617 /* set up touch configuration */ 628 /* set up touch configuration */
618 wm->input_dev->name = "wm97xx touchscreen"; 629 wm->input_dev->name = "wm97xx touchscreen";
630 wm->input_dev->phys = "wm97xx";
619 wm->input_dev->open = wm97xx_ts_input_open; 631 wm->input_dev->open = wm97xx_ts_input_open;
620 wm->input_dev->close = wm97xx_ts_input_close; 632 wm->input_dev->close = wm97xx_ts_input_close;
621 set_bit(EV_ABS, wm->input_dev->evbit); 633 set_bit(EV_ABS, wm->input_dev->evbit);
@@ -634,17 +646,6 @@ static int wm97xx_probe(struct device *dev)
634 if (ret < 0) 646 if (ret < 0)
635 goto dev_alloc_err; 647 goto dev_alloc_err;
636 648
637 /* set up physical characteristics */
638 wm->codec->phy_init(wm);
639
640 /* load gpio cache */
641 wm->gpio[0] = wm97xx_reg_read(wm, AC97_GPIO_CFG);
642 wm->gpio[1] = wm97xx_reg_read(wm, AC97_GPIO_POLARITY);
643 wm->gpio[2] = wm97xx_reg_read(wm, AC97_GPIO_STICKY);
644 wm->gpio[3] = wm97xx_reg_read(wm, AC97_GPIO_WAKEUP);
645 wm->gpio[4] = wm97xx_reg_read(wm, AC97_GPIO_STATUS);
646 wm->gpio[5] = wm97xx_reg_read(wm, AC97_MISC_AFE);
647
648 /* register our battery device */ 649 /* register our battery device */
649 wm->battery_dev = platform_device_alloc("wm97xx-battery", -1); 650 wm->battery_dev = platform_device_alloc("wm97xx-battery", -1);
650 if (!wm->battery_dev) { 651 if (!wm->battery_dev) {
@@ -801,7 +802,7 @@ void wm97xx_unregister_mach_ops(struct wm97xx *wm)
801EXPORT_SYMBOL_GPL(wm97xx_unregister_mach_ops); 802EXPORT_SYMBOL_GPL(wm97xx_unregister_mach_ops);
802 803
803static struct device_driver wm97xx_driver = { 804static struct device_driver wm97xx_driver = {
804 .name = "ac97", 805 .name = "wm97xx-ts",
805 .bus = &ac97_bus_type, 806 .bus = &ac97_bus_type,
806 .owner = THIS_MODULE, 807 .owner = THIS_MODULE,
807 .probe = wm97xx_probe, 808 .probe = wm97xx_probe,
diff --git a/drivers/lguest/lguest_device.c b/drivers/lguest/lguest_device.c
index 8080249957af..1a8de57289eb 100644
--- a/drivers/lguest/lguest_device.c
+++ b/drivers/lguest/lguest_device.c
@@ -20,14 +20,11 @@
20/* The pointer to our (page) of device descriptions. */ 20/* The pointer to our (page) of device descriptions. */
21static void *lguest_devices; 21static void *lguest_devices;
22 22
23/* Unique numbering for lguest devices. */
24static unsigned int dev_index;
25
26/* For Guests, device memory can be used as normal memory, so we cast away the 23/* For Guests, device memory can be used as normal memory, so we cast away the
27 * __iomem to quieten sparse. */ 24 * __iomem to quieten sparse. */
28static inline void *lguest_map(unsigned long phys_addr, unsigned long pages) 25static inline void *lguest_map(unsigned long phys_addr, unsigned long pages)
29{ 26{
30 return (__force void *)ioremap(phys_addr, PAGE_SIZE*pages); 27 return (__force void *)ioremap_cache(phys_addr, PAGE_SIZE*pages);
31} 28}
32 29
33static inline void lguest_unmap(void *addr) 30static inline void lguest_unmap(void *addr)
@@ -325,8 +322,10 @@ static struct device lguest_root = {
325 * As Andrew Tridgell says, "Untested code is buggy code". 322 * As Andrew Tridgell says, "Untested code is buggy code".
326 * 323 *
327 * It's worth reading this carefully: we start with a pointer to the new device 324 * It's worth reading this carefully: we start with a pointer to the new device
328 * descriptor in the "lguest_devices" page. */ 325 * descriptor in the "lguest_devices" page, and the offset into the device
329static void add_lguest_device(struct lguest_device_desc *d) 326 * descriptor page so we can uniquely identify it if things go badly wrong. */
327static void add_lguest_device(struct lguest_device_desc *d,
328 unsigned int offset)
330{ 329{
331 struct lguest_device *ldev; 330 struct lguest_device *ldev;
332 331
@@ -334,18 +333,14 @@ static void add_lguest_device(struct lguest_device_desc *d)
334 * it. */ 333 * it. */
335 ldev = kzalloc(sizeof(*ldev), GFP_KERNEL); 334 ldev = kzalloc(sizeof(*ldev), GFP_KERNEL);
336 if (!ldev) { 335 if (!ldev) {
337 printk(KERN_EMERG "Cannot allocate lguest dev %u\n", 336 printk(KERN_EMERG "Cannot allocate lguest dev %u type %u\n",
338 dev_index++); 337 offset, d->type);
339 return; 338 return;
340 } 339 }
341 340
342 /* This devices' parent is the lguest/ dir. */ 341 /* This devices' parent is the lguest/ dir. */
343 ldev->vdev.dev.parent = &lguest_root; 342 ldev->vdev.dev.parent = &lguest_root;
344 /* We have a unique device index thanks to the dev_index counter. */ 343 /* We have a unique device index thanks to the dev_index counter. */
345 ldev->vdev.index = dev_index++;
346 /* The device type comes straight from the descriptor. There's also a
347 * device vendor field in the virtio_device struct, which we leave as
348 * 0. */
349 ldev->vdev.id.device = d->type; 344 ldev->vdev.id.device = d->type;
350 /* We have a simple set of routines for querying the device's 345 /* We have a simple set of routines for querying the device's
351 * configuration information and setting its status. */ 346 * configuration information and setting its status. */
@@ -357,8 +352,8 @@ static void add_lguest_device(struct lguest_device_desc *d)
357 * virtio_device and calls device_register(). This makes the bus 352 * virtio_device and calls device_register(). This makes the bus
358 * infrastructure look for a matching driver. */ 353 * infrastructure look for a matching driver. */
359 if (register_virtio_device(&ldev->vdev) != 0) { 354 if (register_virtio_device(&ldev->vdev) != 0) {
360 printk(KERN_ERR "Failed to register lguest device %u\n", 355 printk(KERN_ERR "Failed to register lguest dev %u type %u\n",
361 ldev->vdev.index); 356 offset, d->type);
362 kfree(ldev); 357 kfree(ldev);
363 } 358 }
364} 359}
@@ -379,7 +374,7 @@ static void scan_devices(void)
379 break; 374 break;
380 375
381 printk("Device at %i has size %u\n", i, desc_size(d)); 376 printk("Device at %i has size %u\n", i, desc_size(d));
382 add_lguest_device(d); 377 add_lguest_device(d, i);
383 } 378 }
384} 379}
385 380
diff --git a/drivers/pci/hotplug/rpadlpar_sysfs.c b/drivers/pci/hotplug/rpadlpar_sysfs.c
index e32148a8fa12..779c5db71be4 100644
--- a/drivers/pci/hotplug/rpadlpar_sysfs.c
+++ b/drivers/pci/hotplug/rpadlpar_sysfs.c
@@ -18,8 +18,12 @@
18#include "rpadlpar.h" 18#include "rpadlpar.h"
19 19
20#define DLPAR_KOBJ_NAME "control" 20#define DLPAR_KOBJ_NAME "control"
21#define ADD_SLOT_ATTR_NAME "add_slot" 21
22#define REMOVE_SLOT_ATTR_NAME "remove_slot" 22/* Those two have no quotes because they are passed to __ATTR() which
23 * stringifies the argument (yuck !)
24 */
25#define ADD_SLOT_ATTR_NAME add_slot
26#define REMOVE_SLOT_ATTR_NAME remove_slot
23 27
24#define MAX_DRC_NAME_LEN 64 28#define MAX_DRC_NAME_LEN 64
25 29
diff --git a/drivers/pcmcia/electra_cf.c b/drivers/pcmcia/electra_cf.c
index 0a6cea1316b4..52d0aa8c2e7a 100644
--- a/drivers/pcmcia/electra_cf.c
+++ b/drivers/pcmcia/electra_cf.c
@@ -352,6 +352,7 @@ static struct of_device_id electra_cf_match[] = {
352 }, 352 },
353 {}, 353 {},
354}; 354};
355MODULE_DEVICE_TABLE(of, electra_cf_match);
355 356
356static struct of_platform_driver electra_cf_driver = { 357static struct of_platform_driver electra_cf_driver = {
357 .name = (char *)driver_name, 358 .name = (char *)driver_name,
diff --git a/drivers/s390/kvm/kvm_virtio.c b/drivers/s390/kvm/kvm_virtio.c
index 9f55ce6f3c78..5ab34340919b 100644
--- a/drivers/s390/kvm/kvm_virtio.c
+++ b/drivers/s390/kvm/kvm_virtio.c
@@ -31,11 +31,6 @@
31 */ 31 */
32static void *kvm_devices; 32static void *kvm_devices;
33 33
34/*
35 * Unique numbering for kvm devices.
36 */
37static unsigned int dev_index;
38
39struct kvm_device { 34struct kvm_device {
40 struct virtio_device vdev; 35 struct virtio_device vdev;
41 struct kvm_device_desc *desc; 36 struct kvm_device_desc *desc;
@@ -250,26 +245,25 @@ static struct device kvm_root = {
250 * adds a new device and register it with virtio 245 * adds a new device and register it with virtio
251 * appropriate drivers are loaded by the device model 246 * appropriate drivers are loaded by the device model
252 */ 247 */
253static void add_kvm_device(struct kvm_device_desc *d) 248static void add_kvm_device(struct kvm_device_desc *d, unsigned int offset)
254{ 249{
255 struct kvm_device *kdev; 250 struct kvm_device *kdev;
256 251
257 kdev = kzalloc(sizeof(*kdev), GFP_KERNEL); 252 kdev = kzalloc(sizeof(*kdev), GFP_KERNEL);
258 if (!kdev) { 253 if (!kdev) {
259 printk(KERN_EMERG "Cannot allocate kvm dev %u\n", 254 printk(KERN_EMERG "Cannot allocate kvm dev %u type %u\n",
260 dev_index++); 255 offset, d->type);
261 return; 256 return;
262 } 257 }
263 258
264 kdev->vdev.dev.parent = &kvm_root; 259 kdev->vdev.dev.parent = &kvm_root;
265 kdev->vdev.index = dev_index++;
266 kdev->vdev.id.device = d->type; 260 kdev->vdev.id.device = d->type;
267 kdev->vdev.config = &kvm_vq_configspace_ops; 261 kdev->vdev.config = &kvm_vq_configspace_ops;
268 kdev->desc = d; 262 kdev->desc = d;
269 263
270 if (register_virtio_device(&kdev->vdev) != 0) { 264 if (register_virtio_device(&kdev->vdev) != 0) {
271 printk(KERN_ERR "Failed to register kvm device %u\n", 265 printk(KERN_ERR "Failed to register kvm device %u type %u\n",
272 kdev->vdev.index); 266 offset, d->type);
273 kfree(kdev); 267 kfree(kdev);
274 } 268 }
275} 269}
@@ -289,7 +283,7 @@ static void scan_devices(void)
289 if (d->type == 0) 283 if (d->type == 0)
290 break; 284 break;
291 285
292 add_kvm_device(d); 286 add_kvm_device(d, i);
293 } 287 }
294} 288}
295 289
diff --git a/drivers/virtio/virtio.c b/drivers/virtio/virtio.c
index 13866789b356..0f3c2bb7bf35 100644
--- a/drivers/virtio/virtio.c
+++ b/drivers/virtio/virtio.c
@@ -2,6 +2,9 @@
2#include <linux/spinlock.h> 2#include <linux/spinlock.h>
3#include <linux/virtio_config.h> 3#include <linux/virtio_config.h>
4 4
5/* Unique numbering for virtio devices. */
6static unsigned int dev_index;
7
5static ssize_t device_show(struct device *_d, 8static ssize_t device_show(struct device *_d,
6 struct device_attribute *attr, char *buf) 9 struct device_attribute *attr, char *buf)
7{ 10{
@@ -166,7 +169,10 @@ int register_virtio_device(struct virtio_device *dev)
166 int err; 169 int err;
167 170
168 dev->dev.bus = &virtio_bus; 171 dev->dev.bus = &virtio_bus;
169 sprintf(dev->dev.bus_id, "%u", dev->index); 172
173 /* Assign a unique device index and hence name. */
174 dev->index = dev_index++;
175 sprintf(dev->dev.bus_id, "virtio%u", dev->index);
170 176
171 /* We always start by resetting the device, in case a previous 177 /* We always start by resetting the device, in case a previous
172 * driver messed it up. This also tests that code path a little. */ 178 * driver messed it up. This also tests that code path a little. */
diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c
index 27e9fc9117cd..eae7236310e4 100644
--- a/drivers/virtio/virtio_pci.c
+++ b/drivers/virtio/virtio_pci.c
@@ -78,9 +78,6 @@ static struct device virtio_pci_root = {
78 .bus_id = "virtio-pci", 78 .bus_id = "virtio-pci",
79}; 79};
80 80
81/* Unique numbering for devices under the kvm root */
82static unsigned int dev_index;
83
84/* Convert a generic virtio device to our structure */ 81/* Convert a generic virtio device to our structure */
85static struct virtio_pci_device *to_vp_device(struct virtio_device *vdev) 82static struct virtio_pci_device *to_vp_device(struct virtio_device *vdev)
86{ 83{
@@ -325,10 +322,6 @@ static int __devinit virtio_pci_probe(struct pci_dev *pci_dev,
325 if (vp_dev == NULL) 322 if (vp_dev == NULL)
326 return -ENOMEM; 323 return -ENOMEM;
327 324
328 snprintf(vp_dev->vdev.dev.bus_id, BUS_ID_SIZE, "virtio%d", dev_index);
329 vp_dev->vdev.index = dev_index;
330 dev_index++;
331
332 vp_dev->vdev.dev.parent = &virtio_pci_root; 325 vp_dev->vdev.dev.parent = &virtio_pci_root;
333 vp_dev->vdev.config = &virtio_pci_config_ops; 326 vp_dev->vdev.config = &virtio_pci_config_ops;
334 vp_dev->pci_dev = pci_dev; 327 vp_dev->pci_dev = pci_dev;
diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
index 937a49d6772c..72bf8bc09014 100644
--- a/drivers/virtio/virtio_ring.c
+++ b/drivers/virtio/virtio_ring.c
@@ -227,7 +227,6 @@ static bool vring_enable_cb(struct virtqueue *_vq)
227 struct vring_virtqueue *vq = to_vvq(_vq); 227 struct vring_virtqueue *vq = to_vvq(_vq);
228 228
229 START_USE(vq); 229 START_USE(vq);
230 BUG_ON(!(vq->vring.avail->flags & VRING_AVAIL_F_NO_INTERRUPT));
231 230
232 /* We optimistically turn back on interrupts, then check if there was 231 /* We optimistically turn back on interrupts, then check if there was
233 * more to do. */ 232 * more to do. */
@@ -254,13 +253,6 @@ irqreturn_t vring_interrupt(int irq, void *_vq)
254 if (unlikely(vq->broken)) 253 if (unlikely(vq->broken))
255 return IRQ_HANDLED; 254 return IRQ_HANDLED;
256 255
257 /* Other side may have missed us turning off the interrupt,
258 * but we should preserve disable semantic for virtio users. */
259 if (unlikely(vq->vring.avail->flags & VRING_AVAIL_F_NO_INTERRUPT)) {
260 pr_debug("virtqueue interrupt after disable for %p\n", vq);
261 return IRQ_HANDLED;
262 }
263
264 pr_debug("virtqueue callback for %p (%p)\n", vq, vq->vq.callback); 256 pr_debug("virtqueue callback for %p (%p)\n", vq, vq->vq.callback);
265 if (vq->vq.callback) 257 if (vq->vq.callback)
266 vq->vq.callback(&vq->vq); 258 vq->vq.callback(&vq->vq);
diff --git a/drivers/watchdog/geodewdt.c b/drivers/watchdog/geodewdt.c
index f85b19625f97..30d09cbbad94 100644
--- a/drivers/watchdog/geodewdt.c
+++ b/drivers/watchdog/geodewdt.c
@@ -221,8 +221,7 @@ geodewdt_probe(struct platform_device *dev)
221{ 221{
222 int ret, timer; 222 int ret, timer;
223 223
224 timer = geode_mfgpt_alloc_timer(MFGPT_TIMER_ANY, 224 timer = geode_mfgpt_alloc_timer(MFGPT_TIMER_ANY, MFGPT_DOMAIN_WORKING);
225 MFGPT_DOMAIN_WORKING, THIS_MODULE);
226 225
227 if (timer == -1) { 226 if (timer == -1) {
228 printk(KERN_ERR "geodewdt: No timers were available\n"); 227 printk(KERN_ERR "geodewdt: No timers were available\n");
diff --git a/include/asm-powerpc/io.h b/include/asm-powerpc/io.h
index e0062d73db1c..89189488e286 100644
--- a/include/asm-powerpc/io.h
+++ b/include/asm-powerpc/io.h
@@ -100,7 +100,7 @@ static inline type name(const volatile type __iomem *addr) \
100{ \ 100{ \
101 type ret; \ 101 type ret; \
102 __asm__ __volatile__("sync;" insn ";twi 0,%0,0;isync" \ 102 __asm__ __volatile__("sync;" insn ";twi 0,%0,0;isync" \
103 : "=r" (ret) : "r" (addr), "m" (*addr)); \ 103 : "=r" (ret) : "r" (addr), "m" (*addr) : "memory"); \
104 return ret; \ 104 return ret; \
105} 105}
106 106
@@ -108,8 +108,8 @@ static inline type name(const volatile type __iomem *addr) \
108static inline void name(volatile type __iomem *addr, type val) \ 108static inline void name(volatile type __iomem *addr, type val) \
109{ \ 109{ \
110 __asm__ __volatile__("sync;" insn \ 110 __asm__ __volatile__("sync;" insn \
111 : "=m" (*addr) : "r" (val), "r" (addr)); \ 111 : "=m" (*addr) : "r" (val), "r" (addr) : "memory"); \
112 IO_SET_SYNC_FLAG(); \ 112 IO_SET_SYNC_FLAG(); \
113} 113}
114 114
115 115
@@ -333,7 +333,8 @@ static inline unsigned int name(unsigned int port) \
333 " .long 3b,5b\n" \ 333 " .long 3b,5b\n" \
334 ".previous" \ 334 ".previous" \
335 : "=&r" (x) \ 335 : "=&r" (x) \
336 : "r" (port + _IO_BASE)); \ 336 : "r" (port + _IO_BASE) \
337 : "memory"); \
337 return x; \ 338 return x; \
338} 339}
339 340
@@ -350,7 +351,8 @@ static inline void name(unsigned int val, unsigned int port) \
350 " .long 0b,2b\n" \ 351 " .long 0b,2b\n" \
351 " .long 1b,2b\n" \ 352 " .long 1b,2b\n" \
352 ".previous" \ 353 ".previous" \
353 : : "r" (val), "r" (port + _IO_BASE)); \ 354 : : "r" (val), "r" (port + _IO_BASE) \
355 : "memory"); \
354} 356}
355 357
356__do_in_asm(_rec_inb, "lbzx") 358__do_in_asm(_rec_inb, "lbzx")
diff --git a/include/linux/input.h b/include/linux/input.h
index 28a094fcfe20..e075c4b762fb 100644
--- a/include/linux/input.h
+++ b/include/linux/input.h
@@ -637,7 +637,9 @@ struct input_absinfo {
637#define SW_LID 0x00 /* set = lid shut */ 637#define SW_LID 0x00 /* set = lid shut */
638#define SW_TABLET_MODE 0x01 /* set = tablet mode */ 638#define SW_TABLET_MODE 0x01 /* set = tablet mode */
639#define SW_HEADPHONE_INSERT 0x02 /* set = inserted */ 639#define SW_HEADPHONE_INSERT 0x02 /* set = inserted */
640#define SW_RADIO 0x03 /* set = radio enabled */ 640#define SW_RFKILL_ALL 0x03 /* rfkill master switch, type "any"
641 set = radio enabled */
642#define SW_RADIO SW_RFKILL_ALL /* deprecated */
641#define SW_MAX 0x0f 643#define SW_MAX 0x0f
642#define SW_CNT (SW_MAX+1) 644#define SW_CNT (SW_MAX+1)
643 645
diff --git a/include/linux/virtio_blk.h b/include/linux/virtio_blk.h
index d4695a3356d0..5f79a5f9de79 100644
--- a/include/linux/virtio_blk.h
+++ b/include/linux/virtio_blk.h
@@ -10,18 +10,19 @@
10#define VIRTIO_BLK_F_SIZE_MAX 1 /* Indicates maximum segment size */ 10#define VIRTIO_BLK_F_SIZE_MAX 1 /* Indicates maximum segment size */
11#define VIRTIO_BLK_F_SEG_MAX 2 /* Indicates maximum # of segments */ 11#define VIRTIO_BLK_F_SEG_MAX 2 /* Indicates maximum # of segments */
12#define VIRTIO_BLK_F_GEOMETRY 4 /* Legacy geometry available */ 12#define VIRTIO_BLK_F_GEOMETRY 4 /* Legacy geometry available */
13#define VIRTIO_BLK_F_RO 5 /* Disk is read-only */
13 14
14struct virtio_blk_config 15struct virtio_blk_config
15{ 16{
16 /* The capacity (in 512-byte sectors). */ 17 /* The capacity (in 512-byte sectors). */
17 __le64 capacity; 18 __u64 capacity;
18 /* The maximum segment size (if VIRTIO_BLK_F_SIZE_MAX) */ 19 /* The maximum segment size (if VIRTIO_BLK_F_SIZE_MAX) */
19 __le32 size_max; 20 __u32 size_max;
20 /* The maximum number of segments (if VIRTIO_BLK_F_SEG_MAX) */ 21 /* The maximum number of segments (if VIRTIO_BLK_F_SEG_MAX) */
21 __le32 seg_max; 22 __u32 seg_max;
22 /* geometry the device (if VIRTIO_BLK_F_GEOMETRY) */ 23 /* geometry the device (if VIRTIO_BLK_F_GEOMETRY) */
23 struct virtio_blk_geometry { 24 struct virtio_blk_geometry {
24 __le16 cylinders; 25 __u16 cylinders;
25 __u8 heads; 26 __u8 heads;
26 __u8 sectors; 27 __u8 sectors;
27 } geometry; 28 } geometry;
diff --git a/include/linux/virtio_config.h b/include/linux/virtio_config.h
index 50db245c81ad..f364bbf63c34 100644
--- a/include/linux/virtio_config.h
+++ b/include/linux/virtio_config.h
@@ -15,6 +15,10 @@
15/* We've given up on this device. */ 15/* We've given up on this device. */
16#define VIRTIO_CONFIG_S_FAILED 0x80 16#define VIRTIO_CONFIG_S_FAILED 0x80
17 17
18/* Do we get callbacks when the ring is completely used, even if we've
19 * suppressed them? */
20#define VIRTIO_F_NOTIFY_ON_EMPTY 24
21
18#ifdef __KERNEL__ 22#ifdef __KERNEL__
19#include <linux/virtio.h> 23#include <linux/virtio.h>
20 24
@@ -99,7 +103,7 @@ static inline bool virtio_has_feature(const struct virtio_device *vdev,
99 * The return value is -ENOENT if the feature doesn't exist. Otherwise 103 * The return value is -ENOENT if the feature doesn't exist. Otherwise
100 * the config value is copied into whatever is pointed to by v. */ 104 * the config value is copied into whatever is pointed to by v. */
101#define virtio_config_val(vdev, fbit, offset, v) \ 105#define virtio_config_val(vdev, fbit, offset, v) \
102 virtio_config_buf((vdev), (fbit), (offset), (v), sizeof(v)) 106 virtio_config_buf((vdev), (fbit), (offset), (v), sizeof(*v))
103 107
104static inline int virtio_config_buf(struct virtio_device *vdev, 108static inline int virtio_config_buf(struct virtio_device *vdev,
105 unsigned int fbit, 109 unsigned int fbit,
diff --git a/include/linux/virtio_rng.h b/include/linux/virtio_rng.h
new file mode 100644
index 000000000000..331afb6c9f62
--- /dev/null
+++ b/include/linux/virtio_rng.h
@@ -0,0 +1,8 @@
1#ifndef _LINUX_VIRTIO_RNG_H
2#define _LINUX_VIRTIO_RNG_H
3#include <linux/virtio_config.h>
4
5/* The ID for virtio_rng */
6#define VIRTIO_ID_RNG 4
7
8#endif /* _LINUX_VIRTIO_RNG_H */
diff --git a/include/linux/wm97xx.h b/include/linux/wm97xx.h
index 4d13732e9cf0..6f69968eab24 100644
--- a/include/linux/wm97xx.h
+++ b/include/linux/wm97xx.h
@@ -100,6 +100,7 @@
100#define WM9713_ADCSEL_Y 0x0004 /* Y measurement */ 100#define WM9713_ADCSEL_Y 0x0004 /* Y measurement */
101#define WM9713_ADCSEL_PRES 0x0008 /* Pressure measurement */ 101#define WM9713_ADCSEL_PRES 0x0008 /* Pressure measurement */
102#define WM9713_COO 0x0001 /* enable coordinate mode */ 102#define WM9713_COO 0x0001 /* enable coordinate mode */
103#define WM9713_45W 0x1000 /* set for 5 wire panel */
103#define WM9713_PDEN 0x0800 /* measure only when pen down */ 104#define WM9713_PDEN 0x0800 /* measure only when pen down */
104#define WM9713_ADCSEL_MASK 0x00fe /* ADC selection mask */ 105#define WM9713_ADCSEL_MASK 0x00fe /* ADC selection mask */
105#define WM9713_WAIT 0x0200 /* coordinate wait */ 106#define WM9713_WAIT 0x0200 /* coordinate wait */
diff --git a/scripts/decodecode b/scripts/decodecode
index 235d3938529d..235d3938529d 100644..100755
--- a/scripts/decodecode
+++ b/scripts/decodecode