From da2b90adb690dfacd739b706d3528f243563a709 Mon Sep 17 00:00:00 2001 From: Patrick Mochel Date: Fri, 19 May 2006 16:54:32 -0400 Subject: [PATCH] --- yaml --- r: 31991 b: refs/heads/master c: af96179a8298832cc58be212d0e4988d8a1e11bf h: refs/heads/master i: 31989: 866671b76efcaa25f962c6762da1411e831e8fda 31987: b5455d325cadd64222bff5b08017d5a4d7c2e36d 31983: f0a16c633fda444a55ca6a9217e3acedd35c5308 v: v3 --- [refs] | 2 +- trunk/Documentation/DocBook/mtdnand.tmpl | 6 +- trunk/Documentation/IPMI.txt | 4 +- trunk/Documentation/arm/IXP4xx | 2 +- trunk/Documentation/digiepca.txt | 2 +- .../filesystems/configfs/configfs_example.c | 19 +- trunk/Documentation/memory-barriers.txt | 2 +- trunk/Documentation/networking/pktgen.txt | 2 +- trunk/Documentation/pcmcia/crc32hash.c | 32 - trunk/Documentation/pcmcia/devicetable.txt | 36 +- .../alsa/DocBook/writing-an-alsa-driver.tmpl | 2 +- trunk/Documentation/sysctl/vm.txt | 13 + trunk/Documentation/video4linux/CARDLIST.cx88 | 1 - trunk/MAINTAINERS | 21 +- trunk/Makefile | 11 +- trunk/arch/alpha/kernel/alpha_ksyms.c | 1 + trunk/arch/alpha/kernel/console.c | 1 + trunk/arch/alpha/kernel/entry.S | 1 + trunk/arch/alpha/kernel/gct.c | 1 + trunk/arch/alpha/kernel/head.S | 1 + trunk/arch/alpha/kernel/irq.c | 1 + trunk/arch/alpha/kernel/irq_alpha.c | 1 + trunk/arch/alpha/kernel/irq_i8259.c | 1 + trunk/arch/alpha/kernel/machvec_impl.h | 1 + trunk/arch/alpha/kernel/pci.c | 1 + trunk/arch/alpha/kernel/process.c | 1 + trunk/arch/alpha/kernel/proto.h | 1 + trunk/arch/alpha/kernel/smc37c93x.c | 1 + trunk/arch/alpha/kernel/srm_env.c | 1 + trunk/arch/alpha/kernel/srmcons.c | 1 + trunk/arch/alpha/kernel/sys_alcor.c | 1 + trunk/arch/alpha/kernel/sys_cabriolet.c | 1 + trunk/arch/alpha/kernel/sys_dp264.c | 1 + trunk/arch/alpha/kernel/sys_eb64p.c | 1 + trunk/arch/alpha/kernel/sys_mikasa.c | 1 + trunk/arch/alpha/kernel/sys_noritake.c | 1 + trunk/arch/alpha/kernel/sys_sable.c | 1 + trunk/arch/alpha/kernel/sys_sio.c | 1 + trunk/arch/alpha/kernel/sys_titan.c | 1 + trunk/arch/alpha/kernel/time.c | 1 + trunk/arch/alpha/kernel/traps.c | 1 + trunk/arch/alpha/kernel/vmlinux.lds.S | 1 + trunk/arch/alpha/lib/callback_srm.S | 1 + trunk/arch/alpha/lib/udelay.c | 1 + trunk/arch/alpha/mm/extable.c | 1 + trunk/arch/alpha/mm/fault.c | 1 + trunk/arch/alpha/mm/init.c | 1 + trunk/arch/alpha/mm/numa.c | 1 + .../arch/arm/boot/compressed/head-clps7500.S | 1 + trunk/arch/arm/boot/compressed/head-l7200.S | 1 + trunk/arch/arm/boot/compressed/head-sa1100.S | 1 + trunk/arch/arm/boot/compressed/head-sharpsl.S | 1 + trunk/arch/arm/boot/compressed/head-xscale.S | 1 + trunk/arch/arm/boot/compressed/head.S | 1 + trunk/arch/arm/common/locomo.c | 1 + trunk/arch/arm/common/sa1111.c | 1 + trunk/arch/arm/common/uengine.c | 1 + trunk/arch/arm/common/via82c505.c | 1 + trunk/arch/arm/kernel/apm.c | 1 + trunk/arch/arm/kernel/bios32.c | 1 + trunk/arch/arm/kernel/compat.c | 1 + trunk/arch/arm/kernel/debug.S | 1 + trunk/arch/arm/kernel/ecard.c | 1 + trunk/arch/arm/kernel/entry-armv.S | 1 + trunk/arch/arm/kernel/entry-common.S | 1 + trunk/arch/arm/kernel/entry-header.S | 1 + trunk/arch/arm/kernel/head-nommu.S | 1 + trunk/arch/arm/kernel/head.S | 1 + trunk/arch/arm/kernel/irq.c | 1 + trunk/arch/arm/kernel/module.c | 1 + trunk/arch/arm/kernel/process.c | 1 + trunk/arch/arm/kernel/ptrace.c | 1 + trunk/arch/arm/kernel/setup.c | 1 + trunk/arch/arm/kernel/signal.c | 1 + trunk/arch/arm/kernel/smp.c | 1 + trunk/arch/arm/kernel/time.c | 1 + trunk/arch/arm/kernel/traps.c | 1 + trunk/arch/arm/kernel/vmlinux.lds.S | 1 + trunk/arch/arm/lib/backtrace.S | 1 + trunk/arch/arm/lib/bitops.h | 1 + trunk/arch/arm/lib/ucmpdi2.S | 1 + trunk/arch/arm/mach-aaec2000/core.c | 1 + trunk/arch/arm/mach-at91rm9200/board-csb337.c | 1 + trunk/arch/arm/mach-at91rm9200/board-csb637.c | 1 + trunk/arch/arm/mach-at91rm9200/board-dk.c | 1 + trunk/arch/arm/mach-at91rm9200/board-ek.c | 1 + trunk/arch/arm/mach-at91rm9200/common.c | 1 + trunk/arch/arm/mach-at91rm9200/devices.c | 1 + trunk/arch/arm/mach-at91rm9200/irq.c | 1 + trunk/arch/arm/mach-at91rm9200/leds.c | 1 + trunk/arch/arm/mach-at91rm9200/time.c | 1 + trunk/arch/arm/mach-clps711x/fortunet.c | 1 + trunk/arch/arm/mach-clps711x/p720t.c | 1 + trunk/arch/arm/mach-ep93xx/core.c | 1 + trunk/arch/arm/mach-ep93xx/gesbc9312.c | 1 + trunk/arch/arm/mach-ep93xx/ts72xx.c | 1 + trunk/arch/arm/mach-footbridge/common.c | 1 + trunk/arch/arm/mach-footbridge/dma.c | 1 + trunk/arch/arm/mach-footbridge/ebsa285-leds.c | 1 + trunk/arch/arm/mach-footbridge/netwinder-hw.c | 1 + .../arch/arm/mach-footbridge/netwinder-leds.c | 1 + trunk/arch/arm/mach-h720x/h7201-eval.c | 1 + trunk/arch/arm/mach-h720x/h7202-eval.c | 1 + trunk/arch/arm/mach-imx/time.c | 1 + trunk/arch/arm/mach-integrator/pci_v3.c | 1 + trunk/arch/arm/mach-iop3xx/common.c | 1 + trunk/arch/arm/mach-iop3xx/iop321-setup.c | 1 + trunk/arch/arm/mach-iop3xx/iop331-setup.c | 1 + trunk/arch/arm/mach-ixp2000/core.c | 1 + trunk/arch/arm/mach-ixp2000/enp2611.c | 1 + trunk/arch/arm/mach-ixp2000/ixdp2400.c | 1 + trunk/arch/arm/mach-ixp2000/ixdp2800.c | 1 + trunk/arch/arm/mach-ixp2000/ixdp2x00.c | 1 + trunk/arch/arm/mach-ixp2000/ixdp2x01.c | 1 + trunk/arch/arm/mach-ixp23xx/core.c | 1 + trunk/arch/arm/mach-ixp23xx/espresso.c | 1 + trunk/arch/arm/mach-ixp23xx/ixdp2351.c | 1 + trunk/arch/arm/mach-ixp23xx/pci.c | 1 + trunk/arch/arm/mach-ixp23xx/roadrunner.c | 1 + trunk/arch/arm/mach-ixp4xx/common.c | 1 + trunk/arch/arm/mach-ixp4xx/ixdp425-pci.c | 1 + trunk/arch/arm/mach-ixp4xx/nas100d-pci.c | 1 + trunk/arch/arm/mach-ixp4xx/nslu2-pci.c | 1 + trunk/arch/arm/mach-lh7a40x/time.c | 1 + trunk/arch/arm/mach-omap1/board-h3.c | 1 + trunk/arch/arm/mach-omap1/devices.c | 1 + trunk/arch/arm/mach-omap1/fpga.c | 1 + trunk/arch/arm/mach-omap1/id.c | 1 + trunk/arch/arm/mach-omap1/io.c | 1 + trunk/arch/arm/mach-omap1/irq.c | 1 + trunk/arch/arm/mach-omap1/leds-h2p2-debug.c | 1 + trunk/arch/arm/mach-omap1/leds-innovator.c | 1 + trunk/arch/arm/mach-omap1/leds-osk.c | 1 + trunk/arch/arm/mach-omap1/mux.c | 1 + trunk/arch/arm/mach-omap1/serial.c | 1 + trunk/arch/arm/mach-omap1/sleep.S | 1 + trunk/arch/arm/mach-omap1/time.c | 1 + trunk/arch/arm/mach-omap2/clock.c | 1 + trunk/arch/arm/mach-omap2/devices.c | 1 + trunk/arch/arm/mach-omap2/id.c | 1 + trunk/arch/arm/mach-omap2/io.c | 1 + trunk/arch/arm/mach-omap2/irq.c | 1 + trunk/arch/arm/mach-omap2/memory.c | 1 + trunk/arch/arm/mach-omap2/mux.c | 1 + trunk/arch/arm/mach-omap2/prcm.c | 1 + trunk/arch/arm/mach-omap2/sleep.S | 1 + trunk/arch/arm/mach-omap2/sram-fn.S | 1 + trunk/arch/arm/mach-pxa/leds-idp.c | 1 + trunk/arch/arm/mach-pxa/leds-lubbock.c | 1 + trunk/arch/arm/mach-pxa/leds-mainstone.c | 1 + trunk/arch/arm/mach-pxa/pm.c | 1 + trunk/arch/arm/mach-pxa/pxa25x.c | 1 + trunk/arch/arm/mach-pxa/pxa27x.c | 1 + trunk/arch/arm/mach-pxa/sleep.S | 1 + trunk/arch/arm/mach-pxa/standby.S | 1 + trunk/arch/arm/mach-pxa/time.c | 1 + trunk/arch/arm/mach-realview/core.c | 1 + trunk/arch/arm/mach-realview/realview_eb.c | 1 + trunk/arch/arm/mach-s3c2410/devs.h | 1 + trunk/arch/arm/mach-s3c2410/dma.c | 1 + trunk/arch/arm/mach-s3c2410/pm.c | 1 + trunk/arch/arm/mach-s3c2410/sleep.S | 1 + trunk/arch/arm/mach-s3c2410/time.c | 1 + trunk/arch/arm/mach-sa1100/assabet.c | 1 + trunk/arch/arm/mach-sa1100/cerf.c | 1 + trunk/arch/arm/mach-sa1100/collie.c | 1 + trunk/arch/arm/mach-sa1100/generic.c | 1 + trunk/arch/arm/mach-sa1100/h3600.c | 1 + trunk/arch/arm/mach-sa1100/leds-assabet.c | 1 + trunk/arch/arm/mach-sa1100/leds-badge4.c | 1 + trunk/arch/arm/mach-sa1100/leds-cerf.c | 1 + trunk/arch/arm/mach-sa1100/leds-hackkit.c | 1 + trunk/arch/arm/mach-sa1100/leds-lart.c | 1 + trunk/arch/arm/mach-sa1100/leds-simpad.c | 1 + trunk/arch/arm/mach-sa1100/shannon.c | 1 + trunk/arch/arm/mach-sa1100/simpad.c | 1 + trunk/arch/arm/mach-shark/dma.c | 1 + trunk/arch/arm/mach-shark/leds.c | 1 + trunk/arch/arm/mach-versatile/core.c | 1 + trunk/arch/arm/mach-versatile/pci.c | 1 + trunk/arch/arm/mach-versatile/versatile_ab.c | 1 + trunk/arch/arm/mach-versatile/versatile_pb.c | 1 + trunk/arch/arm/mm/alignment.c | 1 + trunk/arch/arm/mm/cache-v4wb.S | 1 + trunk/arch/arm/mm/fault.c | 1 + trunk/arch/arm/mm/init.c | 1 + trunk/arch/arm/mm/mm-armv.c | 3 +- trunk/arch/arm/mm/mmap.c | 1 + trunk/arch/arm/mm/proc-arm1020.S | 1 + trunk/arch/arm/mm/proc-arm1020e.S | 1 + trunk/arch/arm/mm/proc-arm1022.S | 1 + trunk/arch/arm/mm/proc-arm1026.S | 1 + trunk/arch/arm/mm/proc-arm920.S | 1 + trunk/arch/arm/mm/proc-arm922.S | 1 + trunk/arch/arm/mm/proc-arm925.S | 1 + trunk/arch/arm/mm/proc-arm926.S | 1 + trunk/arch/arm/nwfpe/fpa11.c | 1 + trunk/arch/arm/nwfpe/fpa11.h | 1 + trunk/arch/arm/nwfpe/fpa11_cpdo.c | 1 + trunk/arch/arm/nwfpe/fpa11_cpdt.c | 1 + trunk/arch/arm/nwfpe/fpa11_cprt.c | 1 + trunk/arch/arm/nwfpe/fpmodule.c | 1 + trunk/arch/arm/nwfpe/fpopcode.c | 1 + trunk/arch/arm/nwfpe/fpopcode.h | 1 + trunk/arch/arm/nwfpe/softfloat.h | 1 + trunk/arch/arm/plat-omap/clock.c | 1 + trunk/arch/arm/plat-omap/common.c | 1 + trunk/arch/arm/plat-omap/devices.c | 1 + trunk/arch/arm/plat-omap/fb.c | 1 + trunk/arch/arm/plat-omap/gpio.c | 1 + trunk/arch/arm/plat-omap/mux.c | 1 + trunk/arch/arm/plat-omap/ocpi.c | 1 + trunk/arch/arm/plat-omap/sram-fn.S | 1 + trunk/arch/arm/plat-omap/sram.c | 1 + trunk/arch/arm/plat-omap/timer32k.c | 1 + trunk/arch/arm/plat-omap/usb.c | 1 + trunk/arch/arm/vfp/vfpmodule.c | 1 + trunk/arch/arm26/Kconfig | 6 +- trunk/arch/arm26/boot/compressed/head.S | 1 + trunk/arch/arm26/kernel/armksyms.c | 1 + trunk/arch/arm26/kernel/asm-offsets.c | 1 + trunk/arch/arm26/kernel/compat.c | 1 + trunk/arch/arm26/kernel/ecard.c | 1 + trunk/arch/arm26/kernel/fiq.c | 1 + trunk/arch/arm26/kernel/head.S | 1 + trunk/arch/arm26/kernel/irq.c | 1 + trunk/arch/arm26/kernel/process.c | 1 + trunk/arch/arm26/kernel/ptrace.c | 1 + trunk/arch/arm26/kernel/semaphore.c | 1 + trunk/arch/arm26/kernel/setup.c | 1 + trunk/arch/arm26/kernel/signal.c | 1 + trunk/arch/arm26/kernel/time.c | 1 + trunk/arch/arm26/kernel/traps.c | 1 + trunk/arch/arm26/kernel/vmlinux.lds.S | 1 + trunk/arch/arm26/lib/backtrace.S | 1 + trunk/arch/arm26/lib/csumpartialcopyuser.S | 1 + trunk/arch/arm26/lib/kbd.c | 1 + trunk/arch/arm26/lib/lib1funcs.S | 1 + trunk/arch/arm26/machine/dma.c | 1 + trunk/arch/arm26/machine/irq.c | 1 + trunk/arch/arm26/mm/extable.c | 1 + trunk/arch/arm26/mm/fault.c | 1 + trunk/arch/arm26/mm/init.c | 1 + trunk/arch/arm26/nwfpe/fpmodule.c | 1 + trunk/arch/arm26/nwfpe/fpmodule.h | 1 + .../arch/cris/arch-v10/boot/compressed/head.S | 1 + .../arch/cris/arch-v10/boot/compressed/misc.c | 1 + trunk/arch/cris/arch-v10/boot/rescue/head.S | 1 + .../cris/arch-v10/boot/rescue/kimagerescue.S | 1 + .../arch/cris/arch-v10/drivers/axisflashmap.c | 1 + trunk/arch/cris/arch-v10/drivers/ds1302.c | 1 + trunk/arch/cris/arch-v10/drivers/eeprom.c | 1 + trunk/arch/cris/arch-v10/drivers/gpio.c | 1 + trunk/arch/cris/arch-v10/drivers/i2c.c | 1 + trunk/arch/cris/arch-v10/drivers/pcf8563.c | 1 + trunk/arch/cris/arch-v10/kernel/crisksyms.c | 1 + trunk/arch/cris/arch-v10/kernel/debugport.c | 1 + trunk/arch/cris/arch-v10/kernel/entry.S | 1 + trunk/arch/cris/arch-v10/kernel/fasttimer.c | 1 + trunk/arch/cris/arch-v10/kernel/head.S | 1 + trunk/arch/cris/arch-v10/kernel/irq.c | 1 + trunk/arch/cris/arch-v10/kernel/process.c | 1 + trunk/arch/cris/arch-v10/kernel/setup.c | 1 + trunk/arch/cris/arch-v10/kernel/time.c | 1 + trunk/arch/cris/arch-v10/kernel/traps.c | 1 + trunk/arch/cris/arch-v10/lib/dram_init.S | 1 + trunk/arch/cris/arch-v10/mm/init.c | 1 + trunk/arch/cris/arch-v10/vmlinux.lds.S | 1 + .../arch/cris/arch-v32/boot/compressed/head.S | 1 + .../arch/cris/arch-v32/boot/compressed/misc.c | 1 + trunk/arch/cris/arch-v32/boot/rescue/head.S | 1 + .../arch/cris/arch-v32/drivers/axisflashmap.c | 1 + trunk/arch/cris/arch-v32/drivers/gpio.c | 1 + trunk/arch/cris/arch-v32/drivers/i2c.c | 1 + trunk/arch/cris/arch-v32/drivers/pcf8563.c | 1 + .../arch/cris/arch-v32/drivers/sync_serial.c | 1 + trunk/arch/cris/arch-v32/kernel/arbiter.c | 9 +- trunk/arch/cris/arch-v32/kernel/crisksyms.c | 1 + trunk/arch/cris/arch-v32/kernel/debugport.c | 1 + trunk/arch/cris/arch-v32/kernel/dma.c | 4 +- trunk/arch/cris/arch-v32/kernel/entry.S | 1 + trunk/arch/cris/arch-v32/kernel/fasttimer.c | 1 + trunk/arch/cris/arch-v32/kernel/head.S | 1 + trunk/arch/cris/arch-v32/kernel/io.c | 1 + trunk/arch/cris/arch-v32/kernel/irq.c | 1 + trunk/arch/cris/arch-v32/kernel/kgdb_asm.S | 1 + trunk/arch/cris/arch-v32/kernel/process.c | 1 + trunk/arch/cris/arch-v32/kernel/setup.c | 1 + trunk/arch/cris/arch-v32/kernel/time.c | 1 + trunk/arch/cris/arch-v32/kernel/traps.c | 1 + trunk/arch/cris/arch-v32/lib/dram_init.S | 1 + trunk/arch/cris/arch-v32/lib/hw_settings.S | 1 + trunk/arch/cris/arch-v32/lib/nand_init.S | 1 + trunk/arch/cris/arch-v32/mm/init.c | 2 + trunk/arch/cris/arch-v32/vmlinux.lds.S | 1 + trunk/arch/cris/kernel/crisksyms.c | 1 + trunk/arch/cris/kernel/irq.c | 1 + trunk/arch/cris/kernel/setup.c | 1 + trunk/arch/frv/kernel/break.S | 1 + trunk/arch/frv/kernel/cmode.S | 1 + trunk/arch/frv/kernel/entry-table.S | 1 + trunk/arch/frv/kernel/entry.S | 1 + trunk/arch/frv/kernel/frv_ksyms.c | 1 + trunk/arch/frv/kernel/head-mmu-fr451.S | 1 + trunk/arch/frv/kernel/head-uc-fr401.S | 1 + trunk/arch/frv/kernel/head-uc-fr451.S | 1 + trunk/arch/frv/kernel/head-uc-fr555.S | 1 + trunk/arch/frv/kernel/head.S | 1 + trunk/arch/frv/kernel/irq-mb93091.c | 1 + trunk/arch/frv/kernel/irq-mb93093.c | 1 + trunk/arch/frv/kernel/irq-mb93493.c | 1 + trunk/arch/frv/kernel/irq.c | 1 + trunk/arch/frv/kernel/pm-mb93093.c | 1 + trunk/arch/frv/kernel/pm.c | 1 + trunk/arch/frv/kernel/process.c | 1 + trunk/arch/frv/kernel/ptrace.c | 1 + trunk/arch/frv/kernel/semaphore.c | 1 + trunk/arch/frv/kernel/setup.c | 1 + trunk/arch/frv/kernel/sleep.S | 1 + trunk/arch/frv/kernel/switch_to.S | 1 + trunk/arch/frv/kernel/sysctl.c | 1 + trunk/arch/frv/kernel/traps.c | 1 + trunk/arch/frv/mb93090-mb00/pci-irq.c | 1 + trunk/arch/frv/mb93090-mb00/pci-vdk.c | 1 + trunk/arch/frv/mm/dma-alloc.c | 1 + trunk/arch/frv/mm/extable.c | 1 + trunk/arch/frv/mm/init.c | 1 + trunk/arch/frv/mm/kmap.c | 1 + trunk/arch/frv/mm/tlb-flush.S | 1 + trunk/arch/frv/mm/tlb-miss.S | 1 + trunk/arch/frv/mm/unaligned.c | 1 + trunk/arch/h8300/kernel/gpio.c | 1 + trunk/arch/h8300/kernel/h8300_ksyms.c | 1 + trunk/arch/h8300/kernel/process.c | 1 + trunk/arch/h8300/kernel/ptrace.c | 1 + trunk/arch/h8300/kernel/semaphore.c | 1 + trunk/arch/h8300/kernel/setup.c | 1 + trunk/arch/h8300/kernel/syscalls.S | 1 + trunk/arch/h8300/kernel/vmlinux.lds.S | 1 + trunk/arch/h8300/lib/romfs.S | 1 + trunk/arch/h8300/mm/init.c | 1 + trunk/arch/h8300/mm/kmap.c | 1 + trunk/arch/h8300/mm/memory.c | 1 + .../platform/h8300h/aki3068net/crt0_ram.S | 1 + .../h8300/platform/h8300h/aki3068net/timer.c | 1 + trunk/arch/h8300/platform/h8300h/entry.S | 1 + .../h8300/platform/h8300h/generic/crt0_ram.S | 1 + .../h8300/platform/h8300h/generic/crt0_rom.S | 1 + .../h8300/platform/h8300h/generic/timer.c | 1 + .../h8300/platform/h8300h/h8max/crt0_ram.S | 1 + .../arch/h8300/platform/h8300h/h8max/timer.c | 1 + .../arch/h8300/platform/h8300h/ints_h8300h.c | 1 + .../h8300/platform/h8s/edosk2674/crt0_ram.S | 1 + .../h8300/platform/h8s/edosk2674/crt0_rom.S | 1 + .../arch/h8300/platform/h8s/edosk2674/timer.c | 1 + trunk/arch/h8300/platform/h8s/entry.S | 1 + .../h8300/platform/h8s/generic/crt0_ram.S | 1 + .../h8300/platform/h8s/generic/crt0_rom.S | 1 + trunk/arch/h8300/platform/h8s/generic/timer.c | 1 + trunk/arch/h8300/platform/h8s/ints_h8s.c | 1 + trunk/arch/i386/Kconfig | 2 +- trunk/arch/i386/boot/setup.S | 1 + trunk/arch/i386/kernel/Makefile | 1 - trunk/arch/i386/kernel/acpi/boot.c | 1 + trunk/arch/i386/kernel/alternative.c | 6 - trunk/arch/i386/kernel/apic.c | 1 + trunk/arch/i386/kernel/apm.c | 1 + trunk/arch/i386/kernel/audit.c | 23 - trunk/arch/i386/kernel/bootflag.c | 1 + .../i386/kernel/cpu/cpufreq/acpi-cpufreq.c | 1 + .../i386/kernel/cpu/cpufreq/p4-clockmod.c | 1 + .../i386/kernel/cpu/cpufreq/powernow-k7.c | 1 + .../kernel/cpu/cpufreq/speedstep-centrino.c | 1 + trunk/arch/i386/kernel/cpu/intel.c | 1 + trunk/arch/i386/kernel/cpu/mcheck/k7.c | 1 + trunk/arch/i386/kernel/cpu/mcheck/mce.c | 1 + trunk/arch/i386/kernel/cpu/mcheck/non-fatal.c | 1 + trunk/arch/i386/kernel/cpu/mcheck/p4.c | 1 + trunk/arch/i386/kernel/cpuid.c | 1 + trunk/arch/i386/kernel/efi.c | 1 + trunk/arch/i386/kernel/efi_stub.S | 1 + trunk/arch/i386/kernel/entry.S | 1 + trunk/arch/i386/kernel/head.S | 1 + trunk/arch/i386/kernel/i386_ksyms.c | 1 + trunk/arch/i386/kernel/i387.c | 1 + trunk/arch/i386/kernel/i8259.c | 1 + trunk/arch/i386/kernel/io_apic.c | 1 + trunk/arch/i386/kernel/kprobes.c | 1 + trunk/arch/i386/kernel/mca.c | 1 + trunk/arch/i386/kernel/mpparse.c | 1 + trunk/arch/i386/kernel/msr.c | 10 +- trunk/arch/i386/kernel/numaq.c | 1 + trunk/arch/i386/kernel/process.c | 1 + trunk/arch/i386/kernel/quirks.c | 1 + trunk/arch/i386/kernel/reboot.c | 1 + trunk/arch/i386/kernel/scx200.c | 1 + trunk/arch/i386/kernel/semaphore.c | 1 + trunk/arch/i386/kernel/setup.c | 1 + trunk/arch/i386/kernel/smpboot.c | 1 + trunk/arch/i386/kernel/srat.c | 1 + trunk/arch/i386/kernel/time.c | 1 + trunk/arch/i386/kernel/time_hpet.c | 1 + trunk/arch/i386/kernel/traps.c | 1 + trunk/arch/i386/kernel/vm86.c | 1 + trunk/arch/i386/lib/checksum.S | 1 + trunk/arch/i386/lib/memcpy.c | 1 + trunk/arch/i386/lib/mmx.c | 1 + trunk/arch/i386/lib/usercopy.c | 1 + trunk/arch/i386/mach-default/setup.c | 1 + trunk/arch/i386/mach-generic/bigsmp.c | 1 + trunk/arch/i386/mach-generic/default.c | 1 + trunk/arch/i386/mach-generic/es7000.c | 1 + trunk/arch/i386/mach-generic/probe.c | 1 + trunk/arch/i386/mach-generic/summit.c | 1 + trunk/arch/i386/mach-visws/mpparse.c | 1 + trunk/arch/i386/mach-visws/traps.c | 1 + trunk/arch/i386/mach-visws/visws_apic.c | 1 + trunk/arch/i386/mach-voyager/setup.c | 1 + trunk/arch/i386/mach-voyager/voyager_basic.c | 1 + trunk/arch/i386/mach-voyager/voyager_cat.c | 1 + trunk/arch/i386/mach-voyager/voyager_smp.c | 7 +- trunk/arch/i386/mach-voyager/voyager_thread.c | 1 + trunk/arch/i386/mm/boot_ioremap.c | 1 + trunk/arch/i386/mm/discontig.c | 3 +- trunk/arch/i386/mm/extable.c | 1 + trunk/arch/i386/mm/fault.c | 2 +- trunk/arch/i386/mm/hugetlbpage.c | 1 + trunk/arch/i386/mm/init.c | 10 +- trunk/arch/i386/mm/pageattr.c | 1 + trunk/arch/i386/mm/pgtable.c | 15 +- trunk/arch/i386/pci/init.c | 1 + trunk/arch/i386/pci/irq.c | 1 + trunk/arch/i386/pci/visws.c | 1 + trunk/arch/i386/power/cpu.c | 1 + trunk/arch/ia64/Kconfig | 5 - trunk/arch/ia64/dig/setup.c | 1 + trunk/arch/ia64/hp/common/sba_iommu.c | 1 + trunk/arch/ia64/hp/sim/boot/bootloader.c | 1 + trunk/arch/ia64/hp/sim/boot/fw-emu.c | 1 + trunk/arch/ia64/hp/sim/hpsim_console.c | 1 + trunk/arch/ia64/hp/sim/hpsim_setup.c | 1 + trunk/arch/ia64/hp/sim/simeth.c | 1 + trunk/arch/ia64/hp/sim/simserial.c | 1 + trunk/arch/ia64/ia32/Makefile | 1 - trunk/arch/ia64/ia32/audit.c | 11 - trunk/arch/ia64/ia32/binfmt_elf32.c | 1 + trunk/arch/ia64/ia32/ia32priv.h | 1 + trunk/arch/ia64/ia32/sys_ia32.c | 1 + trunk/arch/ia64/kernel/Makefile | 1 - trunk/arch/ia64/kernel/acpi-ext.c | 3 +- trunk/arch/ia64/kernel/acpi.c | 13 +- trunk/arch/ia64/kernel/asm-offsets.c | 1 + trunk/arch/ia64/kernel/audit.c | 29 - trunk/arch/ia64/kernel/cpufreq/acpi-cpufreq.c | 1 + trunk/arch/ia64/kernel/efi.c | 1 + trunk/arch/ia64/kernel/entry.S | 1 + trunk/arch/ia64/kernel/entry.h | 1 + trunk/arch/ia64/kernel/gate.S | 1 + trunk/arch/ia64/kernel/gate.lds.S | 1 + trunk/arch/ia64/kernel/head.S | 1 + trunk/arch/ia64/kernel/ia64_ksyms.c | 1 + trunk/arch/ia64/kernel/iosapic.c | 1 + trunk/arch/ia64/kernel/irq_ia64.c | 1 + trunk/arch/ia64/kernel/ivt.S | 1 + trunk/arch/ia64/kernel/kprobes.c | 1 + trunk/arch/ia64/kernel/machvec.c | 1 + trunk/arch/ia64/kernel/mca.c | 1 + trunk/arch/ia64/kernel/mca_asm.S | 1 + trunk/arch/ia64/kernel/mca_drv.c | 1 + trunk/arch/ia64/kernel/mca_drv_asm.S | 1 + trunk/arch/ia64/kernel/minstate.h | 1 + trunk/arch/ia64/kernel/module.c | 1 + trunk/arch/ia64/kernel/numa.c | 1 + trunk/arch/ia64/kernel/palinfo.c | 1 + trunk/arch/ia64/kernel/perfmon.c | 1 + trunk/arch/ia64/kernel/perfmon_default_smpl.c | 1 + trunk/arch/ia64/kernel/process.c | 1 + trunk/arch/ia64/kernel/ptrace.c | 1 + trunk/arch/ia64/kernel/sal.c | 1 + trunk/arch/ia64/kernel/setup.c | 1 + trunk/arch/ia64/kernel/signal.c | 1 + trunk/arch/ia64/kernel/smpboot.c | 1 + trunk/arch/ia64/kernel/sys_ia64.c | 1 + trunk/arch/ia64/kernel/time.c | 1 + trunk/arch/ia64/kernel/topology.c | 1 + trunk/arch/ia64/kernel/traps.c | 1 + trunk/arch/ia64/kernel/vmlinux.lds.S | 1 + trunk/arch/ia64/lib/clear_page.S | 1 + trunk/arch/ia64/lib/io.c | 1 + trunk/arch/ia64/lib/memcpy_mck.S | 1 + trunk/arch/ia64/mm/contig.c | 1 + trunk/arch/ia64/mm/extable.c | 1 + trunk/arch/ia64/mm/hugetlbpage.c | 1 + trunk/arch/ia64/mm/init.c | 1 + trunk/arch/ia64/mm/numa.c | 1 + trunk/arch/ia64/mm/tlb.c | 1 + trunk/arch/ia64/oprofile/perfmon.c | 1 + trunk/arch/ia64/pci/pci.c | 1 + trunk/arch/ia64/sn/kernel/bte.c | 1 + trunk/arch/ia64/sn/kernel/setup.c | 1 + trunk/arch/ia64/sn/kernel/sn2/prominfo_proc.c | 1 + trunk/arch/ia64/sn/kernel/sn2/sn_proc_fs.c | 1 + trunk/arch/ia64/sn/kernel/xpnet.c | 1 + trunk/arch/m32r/boot/compressed/head.S | 1 + trunk/arch/m32r/boot/compressed/m32r_sio.c | 1 + trunk/arch/m32r/boot/compressed/misc.c | 1 + trunk/arch/m32r/boot/compressed/vmlinux.lds.S | 1 + trunk/arch/m32r/boot/setup.S | 1 + trunk/arch/m32r/kernel/align.c | 1 + trunk/arch/m32r/kernel/entry.S | 1 + trunk/arch/m32r/kernel/head.S | 1 + trunk/arch/m32r/kernel/io_m32104ut.c | 1 + trunk/arch/m32r/kernel/io_m32700ut.c | 1 + trunk/arch/m32r/kernel/io_mappi.c | 1 + trunk/arch/m32r/kernel/io_mappi2.c | 1 + trunk/arch/m32r/kernel/io_mappi3.c | 1 + trunk/arch/m32r/kernel/io_oaks32r.c | 1 + trunk/arch/m32r/kernel/io_opsput.c | 1 + trunk/arch/m32r/kernel/io_usrv.c | 1 + trunk/arch/m32r/kernel/m32r_ksyms.c | 1 + trunk/arch/m32r/kernel/module.c | 1 + trunk/arch/m32r/kernel/process.c | 1 + trunk/arch/m32r/kernel/ptrace.c | 1 + trunk/arch/m32r/kernel/semaphore.c | 1 + trunk/arch/m32r/kernel/setup.c | 1 + trunk/arch/m32r/kernel/setup_m32104ut.c | 1 + trunk/arch/m32r/kernel/setup_m32700ut.c | 1 + trunk/arch/m32r/kernel/setup_mappi.c | 1 + trunk/arch/m32r/kernel/setup_mappi2.c | 1 + trunk/arch/m32r/kernel/setup_mappi3.c | 1 + trunk/arch/m32r/kernel/setup_oaks32r.c | 1 + trunk/arch/m32r/kernel/setup_opsput.c | 1 + trunk/arch/m32r/kernel/setup_usrv.c | 1 + trunk/arch/m32r/kernel/signal.c | 1 + trunk/arch/m32r/kernel/smpboot.c | 1 + trunk/arch/m32r/kernel/sys_m32r.c | 1 + trunk/arch/m32r/kernel/time.c | 1 + trunk/arch/m32r/kernel/traps.c | 1 + trunk/arch/m32r/kernel/vmlinux.lds.S | 1 + trunk/arch/m32r/lib/ashxdi3.S | 1 + trunk/arch/m32r/lib/checksum.S | 1 + trunk/arch/m32r/lib/delay.c | 1 + trunk/arch/m32r/lib/memcpy.S | 1 + trunk/arch/m32r/lib/memset.S | 1 + trunk/arch/m32r/lib/strlen.S | 1 + trunk/arch/m32r/lib/usercopy.c | 1 + trunk/arch/m32r/mm/cache.c | 1 + trunk/arch/m32r/mm/discontig.c | 1 + trunk/arch/m32r/mm/fault-nommu.c | 1 + trunk/arch/m32r/mm/fault.c | 3 +- trunk/arch/m68k/amiga/amiga_ksyms.c | 1 + trunk/arch/m68k/amiga/amisound.c | 1 + trunk/arch/m68k/amiga/chipram.c | 1 + trunk/arch/m68k/amiga/config.c | 1 + trunk/arch/m68k/apollo/config.c | 1 + trunk/arch/m68k/atari/config.c | 1 + trunk/arch/m68k/atari/debug.c | 1 + trunk/arch/m68k/atari/hades-pci.c | 1 + trunk/arch/m68k/atari/stram.c | 1 + trunk/arch/m68k/hp300/config.c | 1 + trunk/arch/m68k/kernel/bios32.c | 1 + trunk/arch/m68k/kernel/entry.S | 1 + trunk/arch/m68k/kernel/head.S | 1 + trunk/arch/m68k/kernel/ints.c | 1 + trunk/arch/m68k/kernel/m68k_ksyms.c | 1 + trunk/arch/m68k/kernel/process.c | 1 + trunk/arch/m68k/kernel/ptrace.c | 1 + trunk/arch/m68k/kernel/semaphore.c | 1 + trunk/arch/m68k/kernel/setup.c | 1 + trunk/arch/m68k/kernel/traps.c | 1 + trunk/arch/m68k/kernel/vmlinux.lds.S | 1 + trunk/arch/m68k/mac/config.c | 1 + trunk/arch/m68k/mac/debug.c | 1 + trunk/arch/m68k/mac/iop.c | 1 + trunk/arch/m68k/mac/misc.c | 1 + trunk/arch/m68k/math-emu/fp_entry.S | 1 + trunk/arch/m68k/math-emu/fp_util.S | 1 + trunk/arch/m68k/mm/init.c | 1 + trunk/arch/m68k/mm/kmap.c | 1 + trunk/arch/m68k/mm/memory.c | 1 + trunk/arch/m68k/mm/motorola.c | 1 + trunk/arch/m68k/q40/config.c | 1 + trunk/arch/m68k/sun3/config.c | 1 + trunk/arch/m68k/sun3/prom/init.c | 1 + trunk/arch/m68k/sun3/prom/printf.c | 1 + trunk/arch/m68k/sun3/sun3dvma.c | 1 + trunk/arch/m68k/sun3/sun3ints.c | 1 + trunk/arch/m68k/sun3x/config.c | 1 + trunk/arch/m68knommu/kernel/comempci.c | 1 + trunk/arch/m68knommu/kernel/entry.S | 1 + trunk/arch/m68knommu/kernel/m68k_ksyms.c | 1 + trunk/arch/m68knommu/kernel/process.c | 1 + trunk/arch/m68knommu/kernel/ptrace.c | 1 + trunk/arch/m68knommu/kernel/semaphore.c | 1 + trunk/arch/m68knommu/kernel/setup.c | 1 + trunk/arch/m68knommu/kernel/syscalltable.S | 1 + trunk/arch/m68knommu/kernel/time.c | 1 + trunk/arch/m68knommu/kernel/traps.c | 1 + trunk/arch/m68knommu/kernel/vmlinux.lds.S | 1 + trunk/arch/m68knommu/lib/semaphore.S | 1 + trunk/arch/m68knommu/mm/init.c | 1 + trunk/arch/m68knommu/mm/kmap.c | 1 + trunk/arch/m68knommu/mm/memory.c | 1 + trunk/arch/m68knommu/platform/5206/config.c | 1 + trunk/arch/m68knommu/platform/5206e/config.c | 1 + trunk/arch/m68knommu/platform/520x/config.c | 1 + trunk/arch/m68knommu/platform/523x/config.c | 1 + trunk/arch/m68knommu/platform/5249/config.c | 1 + trunk/arch/m68knommu/platform/5272/config.c | 1 + trunk/arch/m68knommu/platform/527x/config.c | 1 + trunk/arch/m68knommu/platform/528x/config.c | 1 + trunk/arch/m68knommu/platform/5307/config.c | 1 + trunk/arch/m68knommu/platform/5307/entry.S | 1 + trunk/arch/m68knommu/platform/5307/head.S | 1 + trunk/arch/m68knommu/platform/5307/ints.c | 1 + trunk/arch/m68knommu/platform/5307/pit.c | 1 + trunk/arch/m68knommu/platform/5307/timers.c | 1 + trunk/arch/m68knommu/platform/5307/vectors.c | 1 + trunk/arch/m68knommu/platform/5407/config.c | 1 + trunk/arch/m68knommu/platform/68328/config.c | 1 + trunk/arch/m68knommu/platform/68328/entry.S | 1 + .../arch/m68knommu/platform/68328/head-de2.S | 1 + .../m68knommu/platform/68328/head-pilot.S | 1 + .../arch/m68knommu/platform/68328/head-ram.S | 1 + .../arch/m68knommu/platform/68328/head-rom.S | 1 + trunk/arch/m68knommu/platform/68328/timers.c | 1 + trunk/arch/m68knommu/platform/68360/config.c | 1 + trunk/arch/m68knommu/platform/68360/entry.S | 1 + .../arch/m68knommu/platform/68360/head-ram.S | 1 + .../arch/m68knommu/platform/68360/head-rom.S | 1 + trunk/arch/m68knommu/platform/68360/ints.c | 1 + .../arch/m68knommu/platform/68EZ328/config.c | 1 + .../arch/m68knommu/platform/68VZ328/config.c | 1 + trunk/arch/mips/arc/identify.c | 1 + trunk/arch/mips/au1000/common/au1xxx_irqmap.c | 1 + trunk/arch/mips/au1000/common/dbdma.c | 1 + trunk/arch/mips/au1000/common/dbg_io.c | 1 + trunk/arch/mips/au1000/common/dma.c | 1 + trunk/arch/mips/au1000/common/gpio.c | 1 + trunk/arch/mips/au1000/common/irq.c | 1 + trunk/arch/mips/au1000/common/pci.c | 1 + trunk/arch/mips/au1000/common/platform.c | 1 + trunk/arch/mips/au1000/common/power.c | 1 + trunk/arch/mips/au1000/common/reset.c | 1 + trunk/arch/mips/au1000/common/setup.c | 1 + trunk/arch/mips/au1000/common/time.c | 1 + trunk/arch/mips/au1000/csb250/board_setup.c | 1 + trunk/arch/mips/au1000/db1x00/board_setup.c | 1 + trunk/arch/mips/au1000/db1x00/init.c | 1 + trunk/arch/mips/au1000/db1x00/irqmap.c | 1 + trunk/arch/mips/au1000/db1x00/mirage_ts.c | 1 + .../arch/mips/au1000/hydrogen3/board_setup.c | 1 + trunk/arch/mips/au1000/hydrogen3/init.c | 1 + trunk/arch/mips/au1000/mtx-1/board_setup.c | 1 + trunk/arch/mips/au1000/pb1000/board_setup.c | 1 + trunk/arch/mips/au1000/pb1100/board_setup.c | 1 + trunk/arch/mips/au1000/pb1200/board_setup.c | 1 + trunk/arch/mips/au1000/pb1200/irqmap.c | 1 + trunk/arch/mips/au1000/pb1500/board_setup.c | 1 + trunk/arch/mips/au1000/xxs1500/board_setup.c | 1 + trunk/arch/mips/cobalt/console.c | 1 + trunk/arch/mips/cobalt/setup.c | 1 + trunk/arch/mips/ddb5xxx/common/prom.c | 1 + trunk/arch/mips/ddb5xxx/ddb5477/irq.c | 1 + trunk/arch/mips/ddb5xxx/ddb5477/setup.c | 1 + trunk/arch/mips/dec/int-handler.S | 1 + trunk/arch/mips/dec/prom/init.c | 1 + trunk/arch/mips/dec/prom/memory.c | 1 + .../arch/mips/galileo-boards/ev96100/setup.c | 1 + trunk/arch/mips/galileo-boards/ev96100/time.c | 1 + trunk/arch/mips/gt64120/common/time.c | 1 + .../arch/mips/gt64120/momenco_ocelot/dbg_io.c | 1 + trunk/arch/mips/ite-boards/generic/dbg_io.c | 1 + .../arch/mips/ite-boards/generic/it8172_cir.c | 1 + .../mips/ite-boards/generic/it8172_setup.c | 1 + .../arch/mips/ite-boards/generic/pmon_prom.c | 1 + trunk/arch/mips/jazz/setup.c | 1 + trunk/arch/mips/jmr3927/rbhma3100/init.c | 1 + trunk/arch/mips/jmr3927/rbhma3100/irq.c | 1 + trunk/arch/mips/jmr3927/rbhma3100/setup.c | 1 + trunk/arch/mips/kernel/asm-offsets.c | 1 + trunk/arch/mips/kernel/cpu-bugs64.c | 1 + trunk/arch/mips/kernel/cpu-probe.c | 1 + trunk/arch/mips/kernel/entry.S | 1 + trunk/arch/mips/kernel/gdb-low.S | 1 + trunk/arch/mips/kernel/gdb-stub.c | 1 + trunk/arch/mips/kernel/genex.S | 1 + trunk/arch/mips/kernel/head.S | 1 + trunk/arch/mips/kernel/irq.c | 1 + trunk/arch/mips/kernel/linux32.c | 1 + trunk/arch/mips/kernel/mips_ksyms.c | 1 + trunk/arch/mips/kernel/proc.c | 1 + trunk/arch/mips/kernel/process.c | 1 + trunk/arch/mips/kernel/ptrace.c | 1 + trunk/arch/mips/kernel/r2300_switch.S | 1 + trunk/arch/mips/kernel/r4k_fpu.S | 1 + trunk/arch/mips/kernel/r4k_switch.S | 1 + trunk/arch/mips/kernel/scall32-o32.S | 1 + trunk/arch/mips/kernel/scall64-64.S | 1 + trunk/arch/mips/kernel/scall64-n32.S | 1 + trunk/arch/mips/kernel/scall64-o32.S | 1 + trunk/arch/mips/kernel/setup.c | 1 + trunk/arch/mips/kernel/signal-common.h | 1 + trunk/arch/mips/kernel/signal.c | 1 + trunk/arch/mips/kernel/syscall.c | 1 + trunk/arch/mips/kernel/time.c | 1 + trunk/arch/mips/kernel/traps.c | 1 + trunk/arch/mips/kernel/unaligned.c | 1 + trunk/arch/mips/kernel/vmlinux.lds.S | 1 + trunk/arch/mips/lasat/lasat_board.c | 1 + trunk/arch/mips/lasat/reset.c | 1 + trunk/arch/mips/lasat/setup.c | 1 + trunk/arch/mips/lasat/sysctl.c | 1 + trunk/arch/mips/lib-32/dump_tlb.c | 1 + trunk/arch/mips/lib-64/dump_tlb.c | 1 + trunk/arch/mips/lib/memcpy.S | 1 + trunk/arch/mips/math-emu/kernel_linkage.c | 1 + .../arch/mips/mips-boards/atlas/atlas_setup.c | 1 + trunk/arch/mips/mips-boards/generic/init.c | 1 + trunk/arch/mips/mips-boards/generic/memory.c | 1 + trunk/arch/mips/mips-boards/generic/printf.c | 1 + trunk/arch/mips/mips-boards/generic/reset.c | 1 + trunk/arch/mips/mips-boards/generic/time.c | 1 + .../arch/mips/mips-boards/malta/malta_setup.c | 1 + trunk/arch/mips/mips-boards/sead/sead_setup.c | 1 + trunk/arch/mips/mips-boards/sim/sim_IRQ.c | 1 + trunk/arch/mips/mips-boards/sim/sim_irq.S | 1 + trunk/arch/mips/mips-boards/sim/sim_setup.c | 1 + trunk/arch/mips/mips-boards/sim/sim_smp.c | 1 + trunk/arch/mips/mips-boards/sim/sim_time.c | 1 + trunk/arch/mips/mm/c-r4k.c | 1 + trunk/arch/mips/mm/c-sb1.c | 1 + trunk/arch/mips/mm/cache.c | 1 + trunk/arch/mips/mm/cerr-sb1.c | 1 + trunk/arch/mips/mm/dma-coherent.c | 1 + trunk/arch/mips/mm/dma-noncoherent.c | 1 + trunk/arch/mips/mm/highmem.c | 1 + trunk/arch/mips/mm/init.c | 1 + trunk/arch/mips/mm/pg-sb1.c | 1 + trunk/arch/mips/mm/pgtable-32.c | 1 + trunk/arch/mips/mm/pgtable.c | 1 + trunk/arch/mips/mm/tlb-r4k.c | 1 + trunk/arch/mips/mm/tlb-r8k.c | 1 + trunk/arch/mips/mm/tlbex.c | 1 + trunk/arch/mips/momentum/jaguar_atx/dbg_io.c | 1 + trunk/arch/mips/momentum/jaguar_atx/prom.c | 1 + trunk/arch/mips/momentum/jaguar_atx/reset.c | 1 + trunk/arch/mips/momentum/jaguar_atx/setup.c | 1 + trunk/arch/mips/momentum/ocelot_3/prom.c | 1 + trunk/arch/mips/momentum/ocelot_c/dbg_io.c | 1 + .../mips/momentum/ocelot_c/ocelot_c_fpga.h | 1 + trunk/arch/mips/momentum/ocelot_c/prom.c | 1 + trunk/arch/mips/momentum/ocelot_c/reset.c | 1 + trunk/arch/mips/momentum/ocelot_c/setup.c | 1 + trunk/arch/mips/momentum/ocelot_g/dbg_io.c | 1 + trunk/arch/mips/momentum/ocelot_g/gt-irq.c | 1 + trunk/arch/mips/momentum/ocelot_g/prom.c | 1 + trunk/arch/mips/momentum/ocelot_g/setup.c | 1 + trunk/arch/mips/pci/fixup-atlas.c | 1 + trunk/arch/mips/pci/fixup-vr4133.c | 1 + trunk/arch/mips/pci/ops-au1000.c | 1 + trunk/arch/mips/pci/pci-bcm1480.c | 1 + trunk/arch/mips/pci/pci-bcm1480ht.c | 1 + trunk/arch/mips/pci/pci-ip32.c | 1 + trunk/arch/mips/pci/pci-sb1250.c | 1 + trunk/arch/mips/pci/pci.c | 1 + trunk/arch/mips/philips/pnx8550/common/int.c | 1 + .../arch/mips/philips/pnx8550/common/setup.c | 1 + trunk/arch/mips/pmc-sierra/yosemite/ht.c | 1 + trunk/arch/mips/pmc-sierra/yosemite/irq.c | 1 + trunk/arch/mips/pmc-sierra/yosemite/prom.c | 1 + trunk/arch/mips/sgi-ip22/ip22-eisa.c | 1 + trunk/arch/mips/sgi-ip22/ip22-int.c | 1 + trunk/arch/mips/sgi-ip22/ip22-setup.c | 1 + trunk/arch/mips/sgi-ip27/ip27-init.c | 1 + trunk/arch/mips/sgi-ip27/ip27-irq.c | 1 + trunk/arch/mips/sgi-ip27/ip27-klnuma.c | 1 + trunk/arch/mips/sgi-ip27/ip27-memory.c | 1 + trunk/arch/mips/sgi-ip27/ip27-reset.c | 1 + trunk/arch/mips/sgi-ip32/ip32-setup.c | 1 + trunk/arch/mips/sibyte/bcm1480/irq.c | 1 + trunk/arch/mips/sibyte/bcm1480/setup.c | 1 + trunk/arch/mips/sibyte/bcm1480/time.c | 1 + trunk/arch/mips/sibyte/cfe/console.c | 1 + trunk/arch/mips/sibyte/cfe/setup.c | 1 + trunk/arch/mips/sibyte/sb1250/bus_watcher.c | 1 + trunk/arch/mips/sibyte/sb1250/irq.c | 1 + trunk/arch/mips/sibyte/sb1250/prom.c | 1 + trunk/arch/mips/sibyte/sb1250/setup.c | 1 + trunk/arch/mips/sibyte/sb1250/time.c | 1 + trunk/arch/mips/sibyte/swarm/setup.c | 1 + trunk/arch/mips/sni/setup.c | 1 + trunk/arch/mips/tx4927/common/tx4927_irq.c | 1 + trunk/arch/mips/tx4927/common/tx4927_setup.c | 1 + .../toshiba_rbtx4927/toshiba_rbtx4927_irq.c | 1 + .../toshiba_rbtx4927/toshiba_rbtx4927_setup.c | 1 + .../arch/mips/tx4938/toshiba_rbtx4938/prom.c | 1 + .../arch/mips/tx4938/toshiba_rbtx4938/setup.c | 1 + .../mips/tx4938/toshiba_rbtx4938/spi_eeprom.c | 1 + trunk/arch/mips/vr41xx/nec-cmbvr4133/init.c | 1 + .../mips/vr41xx/nec-cmbvr4133/m1535plus.c | 1 + trunk/arch/mips/vr41xx/nec-cmbvr4133/setup.c | 1 + trunk/arch/parisc/kernel/entry.S | 1 + trunk/arch/parisc/kernel/irq.c | 1 + trunk/arch/parisc/kernel/pacache.S | 1 + trunk/arch/parisc/kernel/parisc_ksyms.c | 1 + trunk/arch/parisc/kernel/pci.c | 1 + trunk/arch/parisc/kernel/pdc_cons.c | 1 + trunk/arch/parisc/kernel/perf_asm.S | 1 + trunk/arch/parisc/kernel/processor.c | 1 + trunk/arch/parisc/kernel/real2.S | 1 + trunk/arch/parisc/kernel/setup.c | 1 + trunk/arch/parisc/kernel/smp.c | 1 + trunk/arch/parisc/kernel/sys_parisc32.c | 1 + trunk/arch/parisc/kernel/time.c | 1 + trunk/arch/parisc/kernel/traps.c | 1 + trunk/arch/parisc/kernel/unaligned.c | 1 + trunk/arch/parisc/kernel/unwind.c | 1 + trunk/arch/parisc/kernel/vmlinux.lds.S | 1 + trunk/arch/parisc/lib/bitops.c | 1 + trunk/arch/parisc/lib/fixup.S | 1 + trunk/arch/parisc/lib/memcpy.c | 1 + trunk/arch/parisc/mm/init.c | 5 +- trunk/arch/powerpc/kernel/asm-offsets.c | 1 + trunk/arch/powerpc/kernel/binfmt_elf32.c | 1 + trunk/arch/powerpc/kernel/btext.c | 1 + trunk/arch/powerpc/kernel/cpu_setup_6xx.S | 1 + trunk/arch/powerpc/kernel/cpu_setup_power4.S | 1 + trunk/arch/powerpc/kernel/cputable.c | 1 + trunk/arch/powerpc/kernel/entry_32.S | 1 + trunk/arch/powerpc/kernel/entry_64.S | 1 + trunk/arch/powerpc/kernel/firmware.c | 1 + trunk/arch/powerpc/kernel/fpu.S | 1 + trunk/arch/powerpc/kernel/head_32.S | 1 + trunk/arch/powerpc/kernel/head_44x.S | 1 + trunk/arch/powerpc/kernel/head_4xx.S | 1 + trunk/arch/powerpc/kernel/head_64.S | 1 + trunk/arch/powerpc/kernel/head_8xx.S | 1 + trunk/arch/powerpc/kernel/head_fsl_booke.S | 1 + trunk/arch/powerpc/kernel/idle.c | 1 + trunk/arch/powerpc/kernel/idle_6xx.S | 1 + trunk/arch/powerpc/kernel/idle_power4.S | 1 + trunk/arch/powerpc/kernel/iommu.c | 1 + trunk/arch/powerpc/kernel/irq.c | 1 + trunk/arch/powerpc/kernel/kprobes.c | 1 + trunk/arch/powerpc/kernel/l2cr_6xx.S | 1 + trunk/arch/powerpc/kernel/legacy_serial.c | 1 + trunk/arch/powerpc/kernel/lparcfg.c | 1 + trunk/arch/powerpc/kernel/misc_32.S | 1 + trunk/arch/powerpc/kernel/misc_64.S | 1 + trunk/arch/powerpc/kernel/of_device.c | 1 + trunk/arch/powerpc/kernel/paca.c | 1 + trunk/arch/powerpc/kernel/pci_32.c | 1 + trunk/arch/powerpc/kernel/pci_64.c | 1 + trunk/arch/powerpc/kernel/perfmon_fsl_booke.c | 1 + trunk/arch/powerpc/kernel/pmc.c | 1 + trunk/arch/powerpc/kernel/ppc_ksyms.c | 1 + trunk/arch/powerpc/kernel/proc_ppc64.c | 1 + trunk/arch/powerpc/kernel/process.c | 1 + trunk/arch/powerpc/kernel/prom.c | 1 + trunk/arch/powerpc/kernel/prom_init.c | 3 +- trunk/arch/powerpc/kernel/ptrace-common.h | 1 + trunk/arch/powerpc/kernel/ptrace.c | 1 + trunk/arch/powerpc/kernel/ptrace32.c | 1 + trunk/arch/powerpc/kernel/setup-common.c | 1 + trunk/arch/powerpc/kernel/setup_32.c | 1 + trunk/arch/powerpc/kernel/setup_64.c | 1 + trunk/arch/powerpc/kernel/signal_32.c | 1 + trunk/arch/powerpc/kernel/signal_64.c | 1 + trunk/arch/powerpc/kernel/smp-tbsync.c | 1 + trunk/arch/powerpc/kernel/smp.c | 1 + trunk/arch/powerpc/kernel/swsusp_32.S | 1 + trunk/arch/powerpc/kernel/sys_ppc32.c | 1 + trunk/arch/powerpc/kernel/sysfs.c | 1 + trunk/arch/powerpc/kernel/systbl.S | 1 + trunk/arch/powerpc/kernel/tau_6xx.c | 1 + trunk/arch/powerpc/kernel/time.c | 1 + trunk/arch/powerpc/kernel/traps.c | 1 + trunk/arch/powerpc/kernel/udbg.c | 1 + trunk/arch/powerpc/kernel/udbg_16550.c | 1 + trunk/arch/powerpc/kernel/vdso.c | 1 + trunk/arch/powerpc/kernel/vdso32/cacheflush.S | 1 + trunk/arch/powerpc/kernel/vdso32/datapage.S | 1 + .../arch/powerpc/kernel/vdso32/gettimeofday.S | 1 + trunk/arch/powerpc/kernel/vdso32/sigtramp.S | 1 + trunk/arch/powerpc/kernel/vdso64/cacheflush.S | 1 + trunk/arch/powerpc/kernel/vdso64/datapage.S | 1 + .../arch/powerpc/kernel/vdso64/gettimeofday.S | 1 + trunk/arch/powerpc/kernel/vdso64/sigtramp.S | 1 + trunk/arch/powerpc/kernel/vector.S | 1 + trunk/arch/powerpc/kernel/vmlinux.lds.S | 1 + trunk/arch/powerpc/lib/copy_32.S | 1 + trunk/arch/powerpc/lib/locks.c | 1 + trunk/arch/powerpc/lib/sstep.c | 1 + trunk/arch/powerpc/lib/string.S | 1 + trunk/arch/powerpc/math-emu/math.c | 1 + trunk/arch/powerpc/mm/44x_mmu.c | 1 + trunk/arch/powerpc/mm/4xx_mmu.c | 1 + trunk/arch/powerpc/mm/fault.c | 1 + trunk/arch/powerpc/mm/fsl_booke_mmu.c | 1 + trunk/arch/powerpc/mm/hash_low_32.S | 1 + trunk/arch/powerpc/mm/hash_low_64.S | 1 + trunk/arch/powerpc/mm/hash_utils_64.c | 1 + trunk/arch/powerpc/mm/init_32.c | 1 + trunk/arch/powerpc/mm/init_64.c | 1 + trunk/arch/powerpc/mm/lmb.c | 1 + trunk/arch/powerpc/mm/mem.c | 1 + trunk/arch/powerpc/mm/mmu_context_32.c | 1 + trunk/arch/powerpc/mm/mmu_context_64.c | 1 + trunk/arch/powerpc/mm/pgtable_32.c | 1 + trunk/arch/powerpc/mm/pgtable_64.c | 1 + trunk/arch/powerpc/mm/ppc_mmu_32.c | 1 + trunk/arch/powerpc/mm/slb.c | 1 + trunk/arch/powerpc/mm/slb_low.S | 1 + trunk/arch/powerpc/mm/stab.c | 1 + trunk/arch/powerpc/mm/tlb_32.c | 1 + trunk/arch/powerpc/mm/tlb_64.c | 1 + trunk/arch/powerpc/platforms/83xx/misc.c | 1 + .../arch/powerpc/platforms/83xx/mpc834x_sys.c | 1 + trunk/arch/powerpc/platforms/83xx/pci.c | 1 + .../arch/powerpc/platforms/85xx/mpc8540_ads.h | 1 + .../arch/powerpc/platforms/85xx/mpc85xx_ads.c | 1 + trunk/arch/powerpc/platforms/85xx/pci.c | 1 + trunk/arch/powerpc/platforms/cell/interrupt.c | 1 + trunk/arch/powerpc/platforms/cell/pervasive.c | 1 + trunk/arch/powerpc/platforms/cell/setup.c | 1 + trunk/arch/powerpc/platforms/cell/smp.c | 1 + .../platforms/cell/spufs/backing_ops.c | 1 + .../powerpc/platforms/cell/spufs/hw_ops.c | 1 + .../arch/powerpc/platforms/cell/spufs/sched.c | 1 + .../powerpc/platforms/cell/spufs/switch.c | 1 + trunk/arch/powerpc/platforms/chrp/pci.c | 1 + trunk/arch/powerpc/platforms/chrp/setup.c | 1 + trunk/arch/powerpc/platforms/chrp/smp.c | 1 + trunk/arch/powerpc/platforms/iseries/irq.c | 1 + .../arch/powerpc/platforms/iseries/lpardata.c | 1 + trunk/arch/powerpc/platforms/iseries/setup.c | 1 + trunk/arch/powerpc/platforms/iseries/smp.c | 1 + trunk/arch/powerpc/platforms/maple/setup.c | 1 + trunk/arch/powerpc/platforms/maple/time.c | 1 + .../powerpc/platforms/powermac/backlight.c | 1 + .../powerpc/platforms/powermac/bootx_init.c | 1 + trunk/arch/powerpc/platforms/powermac/cache.S | 1 + .../powerpc/platforms/powermac/cpufreq_32.c | 5 +- .../powerpc/platforms/powermac/cpufreq_64.c | 1 + .../arch/powerpc/platforms/powermac/feature.c | 1 + .../arch/powerpc/platforms/powermac/low_i2c.c | 1 + trunk/arch/powerpc/platforms/powermac/nvram.c | 1 + .../powerpc/platforms/powermac/pfunc_base.c | 1 + .../powerpc/platforms/powermac/pfunc_core.c | 1 + trunk/arch/powerpc/platforms/powermac/pic.c | 1 + trunk/arch/powerpc/platforms/powermac/setup.c | 1 + trunk/arch/powerpc/platforms/powermac/sleep.S | 1 + trunk/arch/powerpc/platforms/powermac/smp.c | 1 + trunk/arch/powerpc/platforms/powermac/time.c | 1 + .../powerpc/platforms/powermac/udbg_adb.c | 1 + .../powerpc/platforms/powermac/udbg_scc.c | 1 + .../powerpc/platforms/pseries/eeh_driver.c | 2 +- trunk/arch/powerpc/platforms/pseries/iommu.c | 1 + trunk/arch/powerpc/platforms/pseries/lpar.c | 1 + trunk/arch/powerpc/platforms/pseries/setup.c | 1 + trunk/arch/powerpc/platforms/pseries/smp.c | 1 + trunk/arch/powerpc/platforms/pseries/xics.c | 1 + trunk/arch/powerpc/sysdev/dart_iommu.c | 1 + trunk/arch/powerpc/sysdev/fsl_soc.c | 1 + trunk/arch/powerpc/sysdev/mpic.c | 1 + trunk/arch/powerpc/xmon/xmon.c | 1 + trunk/arch/ppc/4xx_io/serial_sicc.c | 1 + trunk/arch/ppc/8260_io/fcc_enet.c | 1 + trunk/arch/ppc/8xx_io/cs4218.h | 1 + trunk/arch/ppc/8xx_io/cs4218_tdm.c | 1 + trunk/arch/ppc/8xx_io/enet.c | 1 + trunk/arch/ppc/8xx_io/fec.c | 1 + trunk/arch/ppc/8xx_io/micropatch.c | 1 + trunk/arch/ppc/amiga/amiints.c | 1 + trunk/arch/ppc/amiga/config.c | 1 + trunk/arch/ppc/boot/common/crt0.S | 1 + trunk/arch/ppc/boot/common/misc-common.c | 1 + trunk/arch/ppc/boot/common/ns16550.c | 1 + trunk/arch/ppc/boot/simple/embed_config.c | 1 + trunk/arch/ppc/boot/simple/head.S | 1 + trunk/arch/ppc/boot/simple/m8xx_tty.c | 1 + trunk/arch/ppc/boot/simple/misc-chestnut.c | 1 + trunk/arch/ppc/boot/simple/misc-embedded.c | 1 + trunk/arch/ppc/boot/simple/misc-ev64260.c | 1 + trunk/arch/ppc/boot/simple/misc-ev64360.c | 1 + trunk/arch/ppc/boot/simple/misc-katana.c | 1 + trunk/arch/ppc/boot/simple/misc-mv64x60.c | 1 + trunk/arch/ppc/boot/simple/misc-prep.c | 1 + trunk/arch/ppc/boot/simple/misc-spruce.c | 1 + trunk/arch/ppc/boot/simple/misc.c | 1 + trunk/arch/ppc/boot/simple/mpc52xx_tty.c | 1 + trunk/arch/ppc/boot/simple/mv64x60_tty.c | 1 + trunk/arch/ppc/boot/simple/openbios.c | 1 + trunk/arch/ppc/boot/simple/pibs.c | 1 + trunk/arch/ppc/boot/simple/relocate.S | 1 + trunk/arch/ppc/kernel/asm-offsets.c | 1 + trunk/arch/ppc/kernel/cpu_setup_power4.S | 1 + trunk/arch/ppc/kernel/dma-mapping.c | 1 + trunk/arch/ppc/kernel/entry.S | 1 + trunk/arch/ppc/kernel/head.S | 1 + trunk/arch/ppc/kernel/head_44x.S | 1 + trunk/arch/ppc/kernel/head_4xx.S | 1 + trunk/arch/ppc/kernel/head_8xx.S | 1 + trunk/arch/ppc/kernel/head_fsl_booke.S | 1 + trunk/arch/ppc/kernel/misc.S | 1 + trunk/arch/ppc/kernel/pci.c | 1 + trunk/arch/ppc/kernel/ppc-stub.c | 1 + trunk/arch/ppc/kernel/ppc_htab.c | 1 + trunk/arch/ppc/kernel/ppc_ksyms.c | 1 + trunk/arch/ppc/kernel/setup.c | 1 + trunk/arch/ppc/kernel/smp-tbsync.c | 1 + trunk/arch/ppc/kernel/smp.c | 1 + trunk/arch/ppc/kernel/time.c | 1 + trunk/arch/ppc/kernel/traps.c | 1 + trunk/arch/ppc/lib/locks.c | 1 + trunk/arch/ppc/lib/string.S | 1 + trunk/arch/ppc/mm/44x_mmu.c | 1 + trunk/arch/ppc/mm/4xx_mmu.c | 1 + trunk/arch/ppc/mm/fault.c | 1 + trunk/arch/ppc/mm/fsl_booke_mmu.c | 1 + trunk/arch/ppc/mm/hashtable.S | 1 + trunk/arch/ppc/mm/init.c | 1 + trunk/arch/ppc/mm/mem_pieces.c | 1 + trunk/arch/ppc/mm/mmu_context.c | 1 + trunk/arch/ppc/mm/pgtable.c | 1 + trunk/arch/ppc/mm/ppc_mmu.c | 1 + trunk/arch/ppc/mm/tlb.c | 1 + trunk/arch/ppc/platforms/4xx/bamboo.c | 1 + trunk/arch/ppc/platforms/4xx/bamboo.h | 1 + trunk/arch/ppc/platforms/4xx/bubinga.c | 1 + trunk/arch/ppc/platforms/4xx/bubinga.h | 1 + trunk/arch/ppc/platforms/4xx/cpci405.c | 1 + trunk/arch/ppc/platforms/4xx/ebony.c | 1 + trunk/arch/ppc/platforms/4xx/ebony.h | 1 + trunk/arch/ppc/platforms/4xx/ep405.c | 1 + trunk/arch/ppc/platforms/4xx/ibm405ep.c | 1 + trunk/arch/ppc/platforms/4xx/ibm405ep.h | 1 + trunk/arch/ppc/platforms/4xx/ibm405gp.c | 1 + trunk/arch/ppc/platforms/4xx/ibm405gp.h | 1 + trunk/arch/ppc/platforms/4xx/ibm405gpr.c | 1 + trunk/arch/ppc/platforms/4xx/ibm405gpr.h | 1 + trunk/arch/ppc/platforms/4xx/ibm440ep.h | 1 + trunk/arch/ppc/platforms/4xx/ibm440gp.h | 1 + trunk/arch/ppc/platforms/4xx/ibm440gx.h | 1 + trunk/arch/ppc/platforms/4xx/ibm440sp.h | 1 + trunk/arch/ppc/platforms/4xx/ibmnp405h.c | 1 + trunk/arch/ppc/platforms/4xx/ibmnp405h.h | 1 + trunk/arch/ppc/platforms/4xx/ibmstb4.h | 1 + trunk/arch/ppc/platforms/4xx/ibmstbx25.h | 1 + trunk/arch/ppc/platforms/4xx/luan.c | 1 + trunk/arch/ppc/platforms/4xx/luan.h | 1 + trunk/arch/ppc/platforms/4xx/ocotea.c | 1 + trunk/arch/ppc/platforms/4xx/ocotea.h | 1 + trunk/arch/ppc/platforms/4xx/ppc440spe.h | 1 + trunk/arch/ppc/platforms/4xx/redwood5.c | 1 + trunk/arch/ppc/platforms/4xx/redwood6.c | 1 + trunk/arch/ppc/platforms/4xx/sycamore.c | 1 + trunk/arch/ppc/platforms/4xx/sycamore.h | 1 + trunk/arch/ppc/platforms/4xx/walnut.c | 1 + trunk/arch/ppc/platforms/4xx/walnut.h | 1 + trunk/arch/ppc/platforms/4xx/xilinx_ml300.c | 1 + trunk/arch/ppc/platforms/4xx/xilinx_ml403.c | 1 + .../platforms/4xx/xparameters/xparameters.h | 1 + trunk/arch/ppc/platforms/4xx/yucca.c | 1 + trunk/arch/ppc/platforms/4xx/yucca.h | 1 + trunk/arch/ppc/platforms/83xx/mpc834x_sys.c | 1 + trunk/arch/ppc/platforms/83xx/mpc834x_sys.h | 1 + trunk/arch/ppc/platforms/85xx/mpc8540_ads.c | 1 + trunk/arch/ppc/platforms/85xx/mpc8540_ads.h | 1 + trunk/arch/ppc/platforms/85xx/mpc8555_cds.h | 1 + trunk/arch/ppc/platforms/85xx/mpc8560_ads.c | 1 + trunk/arch/ppc/platforms/85xx/mpc8560_ads.h | 1 + .../ppc/platforms/85xx/mpc85xx_ads_common.c | 1 + .../ppc/platforms/85xx/mpc85xx_ads_common.h | 1 + .../ppc/platforms/85xx/mpc85xx_cds_common.c | 1 + .../ppc/platforms/85xx/mpc85xx_cds_common.h | 1 + trunk/arch/ppc/platforms/85xx/sbc8560.c | 1 + trunk/arch/ppc/platforms/85xx/sbc8560.h | 1 + trunk/arch/ppc/platforms/85xx/sbc85xx.c | 1 + trunk/arch/ppc/platforms/85xx/sbc85xx.h | 1 + trunk/arch/ppc/platforms/85xx/stx_gp3.c | 1 + trunk/arch/ppc/platforms/85xx/stx_gp3.h | 1 + trunk/arch/ppc/platforms/85xx/tqm85xx.c | 1 + trunk/arch/ppc/platforms/85xx/tqm85xx.h | 1 + trunk/arch/ppc/platforms/apus_pci.c | 1 + trunk/arch/ppc/platforms/apus_setup.c | 1 + trunk/arch/ppc/platforms/ccm.h | 1 + trunk/arch/ppc/platforms/chestnut.c | 1 + trunk/arch/ppc/platforms/cpci690.c | 1 + trunk/arch/ppc/platforms/ev64260.c | 1 + trunk/arch/ppc/platforms/ev64360.c | 1 + trunk/arch/ppc/platforms/fads.h | 1 + trunk/arch/ppc/platforms/gemini_prom.S | 1 + trunk/arch/ppc/platforms/gemini_serial.h | 1 + trunk/arch/ppc/platforms/gemini_setup.c | 1 + trunk/arch/ppc/platforms/hdpu.c | 1 + trunk/arch/ppc/platforms/hermes.h | 1 + trunk/arch/ppc/platforms/ip860.h | 1 + trunk/arch/ppc/platforms/ivms8.h | 1 + trunk/arch/ppc/platforms/katana.c | 1 + trunk/arch/ppc/platforms/lantec.h | 1 + trunk/arch/ppc/platforms/lite5200.c | 1 + trunk/arch/ppc/platforms/lopec.c | 1 + trunk/arch/ppc/platforms/lwmon.h | 1 + trunk/arch/ppc/platforms/mpc866ads_setup.c | 1 + trunk/arch/ppc/platforms/mpc885ads.h | 1 + trunk/arch/ppc/platforms/mpc885ads_setup.c | 1 + trunk/arch/ppc/platforms/mvme5100.c | 1 + trunk/arch/ppc/platforms/pal4_setup.c | 1 + trunk/arch/ppc/platforms/pcu_e.h | 1 + trunk/arch/ppc/platforms/powerpmc250.c | 1 + trunk/arch/ppc/platforms/pplus.c | 1 + trunk/arch/ppc/platforms/pq2ads.h | 1 + trunk/arch/ppc/platforms/prep_pci.c | 1 + trunk/arch/ppc/platforms/prep_setup.c | 1 + trunk/arch/ppc/platforms/prpmc750.c | 1 + trunk/arch/ppc/platforms/prpmc800.c | 1 + trunk/arch/ppc/platforms/radstone_ppc7d.c | 1 + trunk/arch/ppc/platforms/rpxclassic.h | 1 + trunk/arch/ppc/platforms/rpxlite.h | 1 + trunk/arch/ppc/platforms/sandpoint.c | 1 + trunk/arch/ppc/platforms/sbc82xx.c | 1 + trunk/arch/ppc/platforms/spruce.c | 1 + trunk/arch/ppc/platforms/tqm8260.h | 1 + trunk/arch/ppc/platforms/tqm8xx.h | 1 + trunk/arch/ppc/syslib/btext.c | 1 + trunk/arch/ppc/syslib/gen550_dbg.c | 1 + trunk/arch/ppc/syslib/gen550_kgdb.c | 1 + trunk/arch/ppc/syslib/ibm440gp_common.c | 1 + trunk/arch/ppc/syslib/ibm440gp_common.h | 1 + trunk/arch/ppc/syslib/ibm440gx_common.c | 1 + trunk/arch/ppc/syslib/ibm440gx_common.h | 1 + trunk/arch/ppc/syslib/ibm440sp_common.c | 1 + trunk/arch/ppc/syslib/ibm44x_common.c | 1 + trunk/arch/ppc/syslib/m8260_pci_erratum9.c | 1 + trunk/arch/ppc/syslib/m8260_setup.c | 1 + trunk/arch/ppc/syslib/m8xx_setup.c | 1 + trunk/arch/ppc/syslib/mpc52xx_pci.c | 1 + trunk/arch/ppc/syslib/mpc52xx_setup.c | 1 + trunk/arch/ppc/syslib/mv64x60_dbg.c | 1 + trunk/arch/ppc/syslib/ocp.c | 1 + trunk/arch/ppc/syslib/open_pic.c | 1 + trunk/arch/ppc/syslib/open_pic2.c | 1 + trunk/arch/ppc/syslib/ppc440spe_pcie.c | 1 + trunk/arch/ppc/syslib/ppc4xx_dma.c | 1 + trunk/arch/ppc/syslib/ppc4xx_pic.c | 1 + trunk/arch/ppc/syslib/ppc4xx_setup.c | 1 + trunk/arch/ppc/syslib/ppc4xx_sgdma.c | 1 + trunk/arch/ppc/syslib/ppc83xx_setup.c | 1 + trunk/arch/ppc/syslib/ppc83xx_setup.h | 1 + trunk/arch/ppc/syslib/ppc85xx_common.c | 1 + trunk/arch/ppc/syslib/ppc85xx_common.h | 1 + trunk/arch/ppc/syslib/ppc85xx_rio.c | 1 + trunk/arch/ppc/syslib/ppc85xx_rio.h | 1 + trunk/arch/ppc/syslib/ppc85xx_setup.c | 1 + trunk/arch/ppc/syslib/ppc85xx_setup.h | 1 + trunk/arch/ppc/syslib/ppc8xx_pic.c | 1 + trunk/arch/ppc/syslib/ppc8xx_pic.h | 1 + trunk/arch/ppc/syslib/qspan_pci.c | 1 + trunk/arch/ppc/xmon/privinst.h | 1 + trunk/arch/ppc/xmon/start.c | 1 + trunk/arch/ppc/xmon/xmon.c | 1 + trunk/arch/s390/appldata/appldata_base.c | 2 + trunk/arch/s390/appldata/appldata_mem.c | 24 +- trunk/arch/s390/appldata/appldata_net_sum.c | 1 + trunk/arch/s390/appldata/appldata_os.c | 1 + trunk/arch/s390/kernel/asm-offsets.c | 1 + trunk/arch/s390/kernel/binfmt_elf32.c | 1 + trunk/arch/s390/kernel/compat_linux.c | 1 + trunk/arch/s390/kernel/compat_linux.h | 1 + trunk/arch/s390/kernel/compat_signal.c | 1 + trunk/arch/s390/kernel/debug.c | 1 + trunk/arch/s390/kernel/entry.S | 10 +- trunk/arch/s390/kernel/entry64.S | 2 +- trunk/arch/s390/kernel/head.S | 1 + trunk/arch/s390/kernel/process.c | 1 + trunk/arch/s390/kernel/s390_ksyms.c | 1 + trunk/arch/s390/kernel/setup.c | 1 + trunk/arch/s390/kernel/signal.c | 1 + trunk/arch/s390/kernel/time.c | 1 + trunk/arch/s390/kernel/traps.c | 1 + trunk/arch/s390/kernel/vmlinux.lds.S | 1 + trunk/arch/s390/kernel/vtime.c | 1 + trunk/arch/s390/lib/delay.c | 1 + trunk/arch/s390/math-emu/math.c | 1 + trunk/arch/s390/mm/cmm.c | 1 + trunk/arch/s390/mm/fault.c | 1 + trunk/arch/s390/mm/init.c | 36 +- trunk/arch/sh/boards/adx/irq_maskreg.c | 1 + trunk/arch/sh/boards/bigsur/io.c | 1 + trunk/arch/sh/boards/bigsur/irq.c | 1 + trunk/arch/sh/boards/bigsur/led.c | 1 + trunk/arch/sh/boards/bigsur/setup.c | 1 + trunk/arch/sh/boards/cat68701/setup.c | 1 + trunk/arch/sh/boards/cqreek/setup.c | 1 + trunk/arch/sh/boards/harp/irq.c | 1 + trunk/arch/sh/boards/harp/led.c | 1 + trunk/arch/sh/boards/harp/setup.c | 1 + trunk/arch/sh/boards/hp6xx/setup.c | 1 + trunk/arch/sh/boards/mpc1211/led.c | 1 + trunk/arch/sh/boards/mpc1211/pci.c | 1 + trunk/arch/sh/boards/mpc1211/setup.c | 1 + trunk/arch/sh/boards/overdrive/fpga.c | 1 + trunk/arch/sh/boards/overdrive/galileo.c | 1 + trunk/arch/sh/boards/overdrive/io.c | 1 + trunk/arch/sh/boards/overdrive/irq.c | 1 + trunk/arch/sh/boards/overdrive/led.c | 1 + trunk/arch/sh/boards/overdrive/setup.c | 1 + .../arch/sh/boards/renesas/edosk7705/setup.c | 1 + trunk/arch/sh/boards/renesas/hs7751rvoip/io.c | 1 + .../arch/sh/boards/renesas/hs7751rvoip/irq.c | 1 + .../arch/sh/boards/renesas/hs7751rvoip/led.c | 1 + .../arch/sh/boards/renesas/hs7751rvoip/mach.c | 1 + .../arch/sh/boards/renesas/hs7751rvoip/pci.c | 1 + .../sh/boards/renesas/hs7751rvoip/setup.c | 1 + trunk/arch/sh/boards/renesas/rts7751r2d/irq.c | 1 + trunk/arch/sh/boards/renesas/rts7751r2d/led.c | 1 + .../arch/sh/boards/renesas/rts7751r2d/mach.c | 1 + trunk/arch/sh/boards/renesas/systemh/irq.c | 1 + trunk/arch/sh/boards/se/7300/io.c | 1 + trunk/arch/sh/boards/se/7300/irq.c | 1 + trunk/arch/sh/boards/se/7300/led.c | 1 + trunk/arch/sh/boards/se/7300/setup.c | 1 + trunk/arch/sh/boards/se/73180/io.c | 1 + trunk/arch/sh/boards/se/73180/irq.c | 1 + trunk/arch/sh/boards/se/73180/led.c | 1 + trunk/arch/sh/boards/se/73180/setup.c | 1 + trunk/arch/sh/boards/se/770x/irq.c | 1 + trunk/arch/sh/boards/se/770x/led.c | 1 + trunk/arch/sh/boards/se/770x/mach.c | 1 + trunk/arch/sh/boards/se/770x/setup.c | 1 + trunk/arch/sh/boards/se/7751/irq.c | 1 + trunk/arch/sh/boards/se/7751/led.c | 1 + trunk/arch/sh/boards/se/7751/mach.c | 1 + trunk/arch/sh/boards/se/7751/pci.c | 1 + trunk/arch/sh/boards/se/7751/setup.c | 1 + trunk/arch/sh/boards/sh03/led.c | 1 + trunk/arch/sh/boards/sh03/setup.c | 1 + trunk/arch/sh/boards/sh2000/setup.c | 1 + trunk/arch/sh/boards/snapgear/setup.c | 1 + trunk/arch/sh/boards/superh/microdev/io.c | 1 + trunk/arch/sh/boards/superh/microdev/irq.c | 1 + trunk/arch/sh/boards/superh/microdev/led.c | 1 + trunk/arch/sh/boards/superh/microdev/setup.c | 1 + trunk/arch/sh/boards/unknown/setup.c | 1 + trunk/arch/sh/boot/compressed/head.S | 1 + trunk/arch/sh/boot/compressed/misc.c | 1 + trunk/arch/sh/cchips/hd6446x/hd64461/io.c | 1 + trunk/arch/sh/cchips/hd6446x/hd64461/setup.c | 1 + trunk/arch/sh/cchips/hd6446x/hd64465/io.c | 1 + trunk/arch/sh/cchips/hd6446x/hd64465/setup.c | 1 + trunk/arch/sh/cchips/voyagergx/irq.c | 1 + trunk/arch/sh/drivers/dma/dma-sh.c | 1 + trunk/arch/sh/drivers/pci/dma-dreamcast.c | 1 + trunk/arch/sh/drivers/pci/fixups-dreamcast.c | 1 + trunk/arch/sh/drivers/pci/ops-bigsur.c | 1 + trunk/arch/sh/drivers/pci/ops-dreamcast.c | 1 + trunk/arch/sh/drivers/pci/ops-rts7751r2d.c | 1 + trunk/arch/sh/drivers/pci/ops-sh03.c | 1 + trunk/arch/sh/drivers/pci/ops-snapgear.c | 1 + trunk/arch/sh/drivers/pci/pci-sh7751.c | 1 + trunk/arch/sh/drivers/pci/pci-st40.c | 1 + trunk/arch/sh/kernel/cf-enabler.c | 1 + trunk/arch/sh/kernel/cpu/irq/ipr.c | 1 + trunk/arch/sh/kernel/cpu/irq/pint.c | 1 + trunk/arch/sh/kernel/cpu/sh3/ex.S | 1 + trunk/arch/sh/kernel/cpu/sh4/ex.S | 1 + trunk/arch/sh/kernel/cpu/sh4/sq.c | 1 + trunk/arch/sh/kernel/entry.S | 1 + trunk/arch/sh/kernel/ptrace.c | 1 + trunk/arch/sh/kernel/relocate_kernel.S | 1 + trunk/arch/sh/kernel/sh_ksyms.c | 1 + trunk/arch/sh/kernel/smp.c | 1 + trunk/arch/sh/kernel/time.c | 1 + trunk/arch/sh/kernel/traps.c | 1 + trunk/arch/sh/kernel/vmlinux.lds.S | 1 + trunk/arch/sh/lib/memcpy-sh4.S | 1 + trunk/arch/sh/mm/cache-sh4.c | 1 + trunk/arch/sh/mm/clear_page.S | 1 + trunk/arch/sh/mm/extable.c | 1 + trunk/arch/sh/mm/hugetlbpage.c | 1 + trunk/arch/sh/mm/init.c | 1 + trunk/arch/sh/mm/pg-sh4.c | 1 + trunk/arch/sh64/boot/compressed/misc.c | 1 + trunk/arch/sh64/boot/compressed/vmlinux.lds.S | 1 + trunk/arch/sh64/kernel/alphanum.c | 1 + trunk/arch/sh64/kernel/entry.S | 1 + trunk/arch/sh64/kernel/head.S | 1 + trunk/arch/sh64/kernel/irq.c | 1 + trunk/arch/sh64/kernel/irq_intc.c | 1 + trunk/arch/sh64/kernel/led.c | 1 + trunk/arch/sh64/kernel/pci_sh5.c | 1 + trunk/arch/sh64/kernel/process.c | 1 + trunk/arch/sh64/kernel/ptrace.c | 1 + trunk/arch/sh64/kernel/setup.c | 1 + trunk/arch/sh64/kernel/sh_ksyms.c | 1 + trunk/arch/sh64/kernel/time.c | 1 + trunk/arch/sh64/kernel/vmlinux.lds.S | 1 + trunk/arch/sh64/lib/c-checksum.c | 1 + trunk/arch/sh64/lib/dbg.c | 1 + trunk/arch/sh64/lib/io.c | 1 + trunk/arch/sh64/lib/iomap.c | 1 + trunk/arch/sh64/lib/memcpy.c | 1 + trunk/arch/sh64/lib/udelay.c | 1 + trunk/arch/sh64/mach-cayman/iomap.c | 1 + trunk/arch/sh64/mach-cayman/irq.c | 1 + trunk/arch/sh64/mach-cayman/setup.c | 1 + trunk/arch/sh64/mach-harp/setup.c | 1 + trunk/arch/sh64/mach-romram/setup.c | 1 + trunk/arch/sh64/mach-sim/setup.c | 1 + trunk/arch/sh64/mm/cache.c | 1 + trunk/arch/sh64/mm/extable.c | 1 + trunk/arch/sh64/mm/hugetlbpage.c | 1 + trunk/arch/sparc/kernel/asm-offsets.c | 1 + trunk/arch/sparc/kernel/auxio.c | 1 + trunk/arch/sparc/kernel/cpu.c | 1 + trunk/arch/sparc/kernel/devices.c | 1 + trunk/arch/sparc/kernel/ebus.c | 1 + trunk/arch/sparc/kernel/entry.S | 1 + trunk/arch/sparc/kernel/head.S | 1 + trunk/arch/sparc/kernel/idprom.c | 1 + trunk/arch/sparc/kernel/ioport.c | 17 - trunk/arch/sparc/kernel/irq.c | 1 + trunk/arch/sparc/kernel/of_device.c | 477 +--------- trunk/arch/sparc/kernel/pcic.c | 1 + trunk/arch/sparc/kernel/process.c | 1 + trunk/arch/sparc/kernel/prom.c | 30 - trunk/arch/sparc/kernel/setup.c | 1 + trunk/arch/sparc/kernel/signal.c | 1 + trunk/arch/sparc/kernel/sparc_ksyms.c | 1 + trunk/arch/sparc/kernel/sun4c_irq.c | 1 + trunk/arch/sparc/kernel/sun4d_irq.c | 1 + trunk/arch/sparc/kernel/sun4m_irq.c | 1 + trunk/arch/sparc/kernel/sys_solaris.c | 1 + trunk/arch/sparc/kernel/sys_sunos.c | 2 +- trunk/arch/sparc/kernel/systbls.S | 1 + trunk/arch/sparc/kernel/time.c | 110 ++- trunk/arch/sparc/kernel/traps.c | 1 + trunk/arch/sparc/lib/atomic.S | 1 + trunk/arch/sparc/lib/bitops.S | 1 + trunk/arch/sparc/lib/rwsem.S | 1 + trunk/arch/sparc/mm/btfixup.c | 1 + trunk/arch/sparc/mm/extable.c | 1 + trunk/arch/sparc/mm/hypersparc.S | 1 + trunk/arch/sparc/mm/init.c | 1 + trunk/arch/sparc/mm/io-unit.c | 1 + trunk/arch/sparc/mm/iommu.c | 1 + trunk/arch/sparc/mm/srmmu.c | 1 + trunk/arch/sparc/mm/sun4c.c | 1 + trunk/arch/sparc/mm/swift.S | 1 + trunk/arch/sparc/mm/tsunami.S | 1 + trunk/arch/sparc/mm/viking.S | 1 + trunk/arch/sparc/prom/init.c | 1 + trunk/arch/sparc/prom/memory.c | 1 + trunk/arch/sparc/prom/misc.c | 1 + trunk/arch/sparc64/kernel/auxio.c | 78 +- trunk/arch/sparc64/kernel/binfmt_elf32.c | 1 + trunk/arch/sparc64/kernel/cpu.c | 1 + trunk/arch/sparc64/kernel/devices.c | 98 ++ trunk/arch/sparc64/kernel/ebus.c | 151 ++- trunk/arch/sparc64/kernel/entry.S | 1 + trunk/arch/sparc64/kernel/etrap.S | 1 + trunk/arch/sparc64/kernel/head.S | 1 + trunk/arch/sparc64/kernel/irq.c | 5 +- trunk/arch/sparc64/kernel/isa.c | 101 +- trunk/arch/sparc64/kernel/kprobes.c | 1 + trunk/arch/sparc64/kernel/ktlb.S | 1 + trunk/arch/sparc64/kernel/of_device.c | 692 +------------- trunk/arch/sparc64/kernel/pci.c | 9 + trunk/arch/sparc64/kernel/pci_common.c | 291 +++++- trunk/arch/sparc64/kernel/pci_psycho.c | 165 +++- trunk/arch/sparc64/kernel/pci_sabre.c | 158 ++- trunk/arch/sparc64/kernel/pci_schizo.c | 311 ++++-- trunk/arch/sparc64/kernel/pci_sun4v.c | 10 + trunk/arch/sparc64/kernel/power.c | 60 +- trunk/arch/sparc64/kernel/process.c | 2 + trunk/arch/sparc64/kernel/prom.c | 810 +--------------- trunk/arch/sparc64/kernel/rtrap.S | 1 + trunk/arch/sparc64/kernel/sbus.c | 6 +- trunk/arch/sparc64/kernel/setup.c | 1 + trunk/arch/sparc64/kernel/signal.c | 1 + trunk/arch/sparc64/kernel/sparc64_ksyms.c | 1 + trunk/arch/sparc64/kernel/starfire.c | 4 +- trunk/arch/sparc64/kernel/sys32.S | 1 + trunk/arch/sparc64/kernel/sys_sparc.c | 1 + trunk/arch/sparc64/kernel/sys_sparc32.c | 1 + trunk/arch/sparc64/kernel/sys_sunos32.c | 2 +- trunk/arch/sparc64/kernel/systbls.S | 1 + trunk/arch/sparc64/kernel/time.c | 259 +++-- trunk/arch/sparc64/kernel/traps.c | 1 + trunk/arch/sparc64/kernel/tsb.S | 1 + trunk/arch/sparc64/kernel/ttable.S | 1 + trunk/arch/sparc64/kernel/unaligned.c | 4 +- trunk/arch/sparc64/lib/atomic.S | 1 + trunk/arch/sparc64/lib/bitops.S | 1 + trunk/arch/sparc64/lib/mcount.S | 1 + trunk/arch/sparc64/mm/hugetlbpage.c | 1 + trunk/arch/sparc64/mm/init.c | 1 + trunk/arch/sparc64/mm/ultra.S | 1 + trunk/arch/sparc64/prom/misc.c | 1 + trunk/arch/sparc64/solaris/misc.c | 1 + trunk/arch/um/Makefile-x86_64 | 7 +- trunk/arch/um/drivers/harddog_kern.c | 1 + trunk/arch/um/drivers/stderr_console.c | 22 +- .../um/include/sysdep-x86_64/kernel-offsets.h | 1 + trunk/arch/um/kernel/skas/mmu.c | 2 +- trunk/arch/um/kernel/skas/uaccess.c | 15 +- trunk/arch/um/kernel/time.c | 172 ++++ trunk/arch/um/kernel/time_kern.c | 32 +- trunk/arch/um/kernel/vmlinux.lds.S | 3 +- trunk/arch/um/os-Linux/mem.c | 21 +- trunk/arch/um/os-Linux/umid.c | 97 +- trunk/arch/um/scripts/Makefile.rules | 4 +- trunk/arch/um/sys-i386/checksum.S | 1 + trunk/arch/um/sys-i386/ptrace.c | 1 + trunk/arch/um/sys-i386/sys_call_table.S | 2 + trunk/arch/um/sys-ppc/misc.S | 1 + trunk/arch/um/sys-x86_64/syscall_table.c | 7 + trunk/arch/v850/kernel/anna.c | 1 + trunk/arch/v850/kernel/as85ep1.c | 1 + trunk/arch/v850/kernel/fpga85e2c.c | 1 + trunk/arch/v850/kernel/ma.c | 1 + trunk/arch/v850/kernel/me2.c | 1 + trunk/arch/v850/kernel/process.c | 1 + trunk/arch/v850/kernel/rte_cb.c | 1 + trunk/arch/v850/kernel/rte_cb_leds.c | 1 + trunk/arch/v850/kernel/rte_ma1_cb.c | 1 + trunk/arch/v850/kernel/rte_mb_a_pci.c | 1 + trunk/arch/v850/kernel/rte_me2_cb.c | 1 + trunk/arch/v850/kernel/rte_nb85e_cb.c | 1 + trunk/arch/v850/kernel/sim.c | 1 + trunk/arch/v850/kernel/sim85e2.c | 1 + trunk/arch/v850/kernel/syscalls.c | 1 + trunk/arch/v850/kernel/teg.c | 1 + trunk/arch/v850/kernel/v850_ksyms.c | 1 + trunk/arch/v850/kernel/vmlinux.lds.S | 1 + trunk/arch/x86_64/boot/setup.S | 1 + trunk/arch/x86_64/ia32/Makefile | 3 - trunk/arch/x86_64/ia32/audit.c | 11 - trunk/arch/x86_64/ia32/sys_ia32.c | 1 + trunk/arch/x86_64/kernel/Makefile | 1 - trunk/arch/x86_64/kernel/acpi/sleep.c | 1 + trunk/arch/x86_64/kernel/aperture.c | 1 + trunk/arch/x86_64/kernel/apic.c | 1 + trunk/arch/x86_64/kernel/audit.c | 29 - trunk/arch/x86_64/kernel/e820.c | 1 + trunk/arch/x86_64/kernel/entry.S | 1 + trunk/arch/x86_64/kernel/functionlist | 1 + trunk/arch/x86_64/kernel/genapic.c | 1 + trunk/arch/x86_64/kernel/genapic_cluster.c | 1 + trunk/arch/x86_64/kernel/genapic_flat.c | 1 + trunk/arch/x86_64/kernel/i387.c | 1 + trunk/arch/x86_64/kernel/i8259.c | 1 + trunk/arch/x86_64/kernel/io_apic.c | 1 + trunk/arch/x86_64/kernel/kprobes.c | 1 + trunk/arch/x86_64/kernel/mpparse.c | 1 + trunk/arch/x86_64/kernel/nmi.c | 1 + trunk/arch/x86_64/kernel/pci-gart.c | 1 + trunk/arch/x86_64/kernel/setup.c | 1 + trunk/arch/x86_64/kernel/setup64.c | 1 + trunk/arch/x86_64/kernel/smpboot.c | 1 + trunk/arch/x86_64/kernel/suspend.c | 1 + trunk/arch/x86_64/kernel/syscall.c | 1 + trunk/arch/x86_64/kernel/traps.c | 1 + trunk/arch/x86_64/kernel/vmlinux.lds.S | 1 + trunk/arch/x86_64/mm/extable.c | 1 + trunk/arch/x86_64/mm/fault.c | 3 +- trunk/arch/x86_64/mm/init.c | 8 +- trunk/arch/x86_64/mm/mmap.c | 1 + trunk/arch/x86_64/mm/pageattr.c | 1 + trunk/arch/xtensa/boot/boot-elf/bootstrap.S | 1 + trunk/arch/xtensa/kernel/coprocessor.S | 1 + trunk/arch/xtensa/kernel/head.S | 1 + trunk/arch/xtensa/kernel/pci.c | 1 + trunk/arch/xtensa/kernel/platform.c | 1 + trunk/arch/xtensa/kernel/process.c | 1 + trunk/arch/xtensa/kernel/ptrace.c | 1 + trunk/arch/xtensa/kernel/setup.c | 1 + trunk/arch/xtensa/kernel/syscalls.c | 1 + trunk/arch/xtensa/kernel/time.c | 1 + trunk/arch/xtensa/kernel/vmlinux.lds.S | 1 + trunk/arch/xtensa/kernel/xtensa_ksyms.c | 1 + trunk/arch/xtensa/mm/init.c | 1 + trunk/arch/xtensa/platform-iss/console.c | 1 + trunk/arch/xtensa/platform-iss/network.c | 1 + trunk/arch/xtensa/platform-iss/setup.c | 1 + trunk/block/as-iosched.c | 1 + trunk/block/blktrace.c | 1 + trunk/block/cfq-iosched.c | 1 + trunk/block/deadline-iosched.c | 1 + trunk/block/elevator.c | 1 + trunk/block/genhd.c | 1 + trunk/block/ll_rw_blk.c | 5 +- trunk/drivers/acorn/block/Kconfig | 2 +- trunk/drivers/acorn/block/mfmhd.c | 1 + trunk/drivers/acpi/ac.c | 6 +- trunk/drivers/acpi/acpi_memhotplug.c | 6 +- trunk/drivers/acpi/asus_acpi.c | 6 +- trunk/drivers/acpi/battery.c | 4 +- trunk/drivers/acpi/bus.c | 2 +- trunk/drivers/acpi/container.c | 2 +- trunk/drivers/acpi/glue.c | 8 +- trunk/drivers/acpi/namespace/nsxfeval.c | 2 +- trunk/drivers/acpi/numa.c | 1 + trunk/drivers/acpi/osl.c | 10 +- trunk/drivers/acpi/pci_irq.c | 1 + trunk/drivers/acpi/processor_idle.c | 2 +- trunk/drivers/acpi/processor_perflib.c | 6 +- trunk/drivers/acpi/scan.c | 6 +- trunk/drivers/acpi/system.c | 4 +- trunk/drivers/acpi/tables.c | 1 + trunk/drivers/acpi/utilities/utalloc.c | 4 +- trunk/drivers/acpi/utilities/utcache.c | 2 +- trunk/drivers/acpi/utils.c | 4 +- trunk/drivers/acpi/video.c | 2 +- trunk/drivers/atm/adummy.c | 1 + trunk/drivers/atm/ambassador.h | 1 + trunk/drivers/atm/eni.c | 1 + trunk/drivers/atm/fore200e.c | 1 + trunk/drivers/atm/fore200e.h | 1 + trunk/drivers/atm/he.c | 3 +- trunk/drivers/atm/horizon.h | 1 + trunk/drivers/atm/idt77105.c | 2 +- trunk/drivers/atm/idt77105.h | 2 +- trunk/drivers/atm/idt77252.c | 1 + trunk/drivers/atm/iphase.c | 4 +- trunk/drivers/atm/iphase.h | 1 + trunk/drivers/atm/nicstar.c | 1 + trunk/drivers/atm/suni.c | 2 +- trunk/drivers/atm/zatm.c | 1 + trunk/drivers/atm/zatm.h | 1 + trunk/drivers/base/bus.c | 1 + trunk/drivers/base/class.c | 1 + trunk/drivers/base/core.c | 1 + trunk/drivers/base/driver.c | 1 + trunk/drivers/base/node.c | 63 +- trunk/drivers/base/power/main.c | 1 + trunk/drivers/base/power/shutdown.c | 1 + trunk/drivers/base/sys.c | 1 + trunk/drivers/block/acsi.c | 1 + trunk/drivers/block/loop.c | 1 + trunk/drivers/block/nbd.c | 2 +- trunk/drivers/block/paride/paride.c | 1 + trunk/drivers/block/pktcdvd.c | 1 + trunk/drivers/block/ps2esdi.c | 1 + trunk/drivers/block/rd.c | 1 + trunk/drivers/block/swim3.c | 1 + trunk/drivers/block/umem.c | 1 + trunk/drivers/bluetooth/bcm203x.c | 1 + trunk/drivers/bluetooth/bfusb.c | 1 + trunk/drivers/bluetooth/bluecard_cs.c | 1 + trunk/drivers/bluetooth/bpa10x.c | 1 + trunk/drivers/bluetooth/bt3c_cs.c | 1 + trunk/drivers/bluetooth/btuart_cs.c | 1 + trunk/drivers/bluetooth/dtl1_cs.c | 1 + trunk/drivers/bluetooth/hci_bcsp.c | 1 + trunk/drivers/bluetooth/hci_h4.c | 1 + trunk/drivers/bluetooth/hci_ldisc.c | 1 + trunk/drivers/bluetooth/hci_usb.c | 1 + trunk/drivers/bluetooth/hci_vhci.c | 1 + trunk/drivers/cdrom/cdrom.c | 1 + trunk/drivers/cdrom/cm206.c | 9 +- trunk/drivers/cdrom/sbpcd.c | 1 + trunk/drivers/char/agp/amd64-agp.c | 1 + trunk/drivers/char/agp/generic.c | 1 + trunk/drivers/char/amiserial.c | 1 + trunk/drivers/char/consolemap.c | 1 + trunk/drivers/char/cyclades.c | 1 + trunk/drivers/char/decserial.c | 1 + trunk/drivers/char/drm/drm.h | 1 + trunk/drivers/char/drm/drmP.h | 1 + trunk/drivers/char/drm/drm_memory.c | 1 + trunk/drivers/char/drm/drm_memory.h | 1 + trunk/drivers/char/drm/drm_memory_debug.h | 1 + trunk/drivers/char/drm/drm_scatter.c | 1 + trunk/drivers/char/drm/drm_sysfs.c | 1 + trunk/drivers/char/drm/ffb_drv.c | 1 + trunk/drivers/char/drm/i810_drv.c | 1 + trunk/drivers/char/drm/i830_drv.c | 1 + trunk/drivers/char/drm/mga_drv.c | 1 + trunk/drivers/char/drm/r128_drv.c | 1 + trunk/drivers/char/drm/radeon_drv.c | 1 + trunk/drivers/char/drm/savage_drv.c | 1 + trunk/drivers/char/drm/sis_drv.c | 1 + trunk/drivers/char/drm/tdfx_drv.c | 1 + trunk/drivers/char/drm/via_drv.c | 1 + trunk/drivers/char/ds1302.c | 1 + trunk/drivers/char/ds1620.c | 1 + trunk/drivers/char/ec3104_keyb.c | 1 + trunk/drivers/char/epca.c | 1 + .../char/ftape/lowlevel/ftape-calibr.c | 1 + trunk/drivers/char/ftape/lowlevel/ftape-ctl.c | 1 + .../drivers/char/ftape/lowlevel/ftape-init.c | 1 + .../drivers/char/ftape/lowlevel/ftape-proc.c | 1 + .../drivers/char/ftape/lowlevel/ftape-setup.c | 1 + .../char/ftape/lowlevel/ftape-tracing.h | 1 + .../drivers/char/ftape/lowlevel/ftape_syms.c | 1 + trunk/drivers/char/ftape/zftape/zftape-ctl.c | 1 + trunk/drivers/char/ftape/zftape/zftape-ctl.h | 1 + trunk/drivers/char/ftape/zftape/zftape-init.c | 1 + trunk/drivers/char/genrtc.c | 1 + trunk/drivers/char/hpet.c | 1 + trunk/drivers/char/hvc_console.c | 1 + trunk/drivers/char/ip2/i2ellis.h | 1 + trunk/drivers/char/ip2/ip2main.c | 1 + trunk/drivers/char/ipmi/ipmi_devintf.c | 1 + trunk/drivers/char/ipmi/ipmi_msghandler.c | 1 + trunk/drivers/char/ipmi/ipmi_poweroff.c | 1 + trunk/drivers/char/ipmi/ipmi_si_intf.c | 1 + trunk/drivers/char/ipmi/ipmi_watchdog.c | 1 + trunk/drivers/char/isicom.c | 4 +- trunk/drivers/char/istallion.c | 18 +- trunk/drivers/char/keyboard.c | 1 + trunk/drivers/char/lcd.c | 1 + trunk/drivers/char/lp.c | 1 + trunk/drivers/char/mbcs.c | 1 + trunk/drivers/char/mem.c | 1 + trunk/drivers/char/misc.c | 1 + trunk/drivers/char/moxa.c | 1 + trunk/drivers/char/mwave/3780i.c | 1 + trunk/drivers/char/mxser.c | 1 + trunk/drivers/char/n_hdlc.c | 1 + trunk/drivers/char/nvram.c | 1 + trunk/drivers/char/nwbutton.c | 1 + trunk/drivers/char/pc8736x_gpio.c | 5 +- trunk/drivers/char/pcmcia/cm4000_cs.c | 7 +- trunk/drivers/char/pty.c | 1 + trunk/drivers/char/qtronix.c | 1 + trunk/drivers/char/random.c | 1 + trunk/drivers/char/rio/rio_linux.c | 1 + trunk/drivers/char/rio/rio_linux.h | 1 + trunk/drivers/char/rio/rioinit.c | 1 + trunk/drivers/char/rtc.c | 1 + trunk/drivers/char/scx200_gpio.c | 6 +- trunk/drivers/char/serial167.c | 1 + trunk/drivers/char/sonypi.c | 1 + trunk/drivers/char/specialix.c | 1 + trunk/drivers/char/stallion.c | 1 + trunk/drivers/char/synclink_gt.c | 1 + trunk/drivers/char/synclinkmp.c | 1 + trunk/drivers/char/sysrq.c | 1 + trunk/drivers/char/tipar.c | 1 + trunk/drivers/char/tlclk.c | 1 + trunk/drivers/char/tty_io.c | 1 + trunk/drivers/char/vc_screen.c | 1 + trunk/drivers/char/viocons.c | 1 + trunk/drivers/char/viotape.c | 1 + trunk/drivers/char/vme_scc.c | 1 + trunk/drivers/char/vt.c | 1 + trunk/drivers/char/vt_ioctl.c | 1 + trunk/drivers/char/watchdog/at91_wdt.c | 1 + trunk/drivers/char/watchdog/booke_wdt.c | 1 + trunk/drivers/char/watchdog/eurotechwdt.c | 1 + trunk/drivers/char/watchdog/ib700wdt.c | 1 + trunk/drivers/char/watchdog/ibmasr.c | 1 + trunk/drivers/char/watchdog/indydog.c | 1 + trunk/drivers/char/watchdog/ixp2000_wdt.c | 1 + trunk/drivers/char/watchdog/ixp4xx_wdt.c | 1 + trunk/drivers/char/watchdog/machzwd.c | 1 + trunk/drivers/char/watchdog/mixcomwd.c | 1 + trunk/drivers/char/watchdog/mpc83xx_wdt.c | 1 + trunk/drivers/char/watchdog/mpc8xx_wdt.c | 1 + trunk/drivers/char/watchdog/mpcore_wdt.c | 1 + trunk/drivers/char/watchdog/mv64x60_wdt.c | 1 + trunk/drivers/char/watchdog/pcwd_usb.c | 1 + trunk/drivers/char/watchdog/s3c2410_wdt.c | 1 + trunk/drivers/char/watchdog/sa1100_wdt.c | 1 + trunk/drivers/char/watchdog/sbc8360.c | 1 + trunk/drivers/char/watchdog/sbc_epx_c3.c | 1 + trunk/drivers/char/watchdog/sc1200wdt.c | 1 + trunk/drivers/char/watchdog/scx200_wdt.c | 1 + trunk/drivers/char/watchdog/shwdt.c | 1 + trunk/drivers/char/watchdog/softdog.c | 1 + trunk/drivers/char/watchdog/w83977f_wdt.c | 1 + trunk/drivers/char/watchdog/wd501p.h | 1 + trunk/drivers/char/watchdog/wdrtas.c | 1 + trunk/drivers/char/watchdog/wdt.c | 1 + trunk/drivers/char/watchdog/wdt977.c | 1 + trunk/drivers/char/watchdog/wdt_pci.c | 1 + trunk/drivers/cpufreq/cpufreq.c | 1 + trunk/drivers/cpufreq/cpufreq_stats.c | 1 + trunk/drivers/cpufreq/cpufreq_userspace.c | 1 + trunk/drivers/edac/amd76x_edac.c | 99 +- trunk/drivers/edac/e752x_edac.c | 346 +++---- trunk/drivers/edac/e7xxx_edac.c | 177 ++-- trunk/drivers/edac/edac_mc.c | 594 ++++++------ trunk/drivers/edac/edac_mc.h | 23 +- trunk/drivers/edac/i82860_edac.c | 133 ++- trunk/drivers/edac/i82875p_edac.c | 221 ++--- trunk/drivers/edac/r82600_edac.c | 144 ++- trunk/drivers/eisa/virtual_root.c | 1 + trunk/drivers/fc4/fc_syms.c | 1 + trunk/drivers/firmware/dell_rbu.c | 1 + trunk/drivers/firmware/efivars.c | 1 + trunk/drivers/firmware/pcdp.c | 1 + trunk/drivers/hwmon/hwmon-vid.c | 1 + trunk/drivers/hwmon/w83792d.c | 1 + trunk/drivers/i2c/busses/i2c-i801.c | 4 +- trunk/drivers/i2c/busses/i2c-ibm_iic.c | 1 + trunk/drivers/i2c/busses/i2c-iop3xx.c | 1 + trunk/drivers/i2c/busses/i2c-mpc.c | 1 + trunk/drivers/i2c/busses/i2c-powermac.c | 1 + trunk/drivers/i2c/busses/i2c-s3c2410.c | 1 + trunk/drivers/i2c/busses/scx200_i2c.c | 1 + trunk/drivers/i2c/chips/isp1301_omap.c | 1 + trunk/drivers/i2c/chips/tps65010.c | 1 + trunk/drivers/ide/arm/icside.c | 1 + trunk/drivers/ide/cris/ide-cris.c | 1 + trunk/drivers/ide/h8300/ide-h8300.c | 1 + trunk/drivers/ide/ide-cd.c | 1 + trunk/drivers/ide/ide-disk.c | 1 + trunk/drivers/ide/ide-dma.c | 1 + trunk/drivers/ide/ide-floppy.c | 1 + trunk/drivers/ide/ide-io.c | 1 + trunk/drivers/ide/ide-iops.c | 1 + trunk/drivers/ide/ide-lib.c | 1 + trunk/drivers/ide/ide-probe.c | 1 + trunk/drivers/ide/ide-proc.c | 1 + trunk/drivers/ide/ide-tape.c | 1 + trunk/drivers/ide/ide-taskfile.c | 1 + trunk/drivers/ide/ide.c | 1 + trunk/drivers/ide/legacy/ali14xx.c | 1 + trunk/drivers/ide/legacy/dtc2278.c | 1 + trunk/drivers/ide/legacy/gayle.c | 1 + trunk/drivers/ide/legacy/ht6560b.c | 1 + trunk/drivers/ide/legacy/ide-cs.c | 81 +- trunk/drivers/ide/legacy/macide.c | 1 + trunk/drivers/ide/legacy/qd65xx.c | 1 + trunk/drivers/ide/legacy/umc8672.c | 1 + trunk/drivers/ide/pci/aec62xx.c | 1 + trunk/drivers/ide/pci/alim15x3.c | 1 + trunk/drivers/ide/pci/amd74xx.c | 1 + trunk/drivers/ide/pci/atiixp.c | 1 + trunk/drivers/ide/pci/cmd640.c | 1 + trunk/drivers/ide/pci/cmd64x.c | 1 + trunk/drivers/ide/pci/cs5520.c | 1 + trunk/drivers/ide/pci/cs5530.c | 1 + trunk/drivers/ide/pci/cs5535.c | 1 + trunk/drivers/ide/pci/cy82c693.c | 1 + trunk/drivers/ide/pci/hpt34x.c | 1 + trunk/drivers/ide/pci/hpt366.c | 1 + trunk/drivers/ide/pci/it8172.c | 1 + trunk/drivers/ide/pci/it821x.c | 3 +- trunk/drivers/ide/pci/ns87415.c | 1 + trunk/drivers/ide/pci/pdc202xx_new.c | 1 + trunk/drivers/ide/pci/pdc202xx_old.c | 1 + trunk/drivers/ide/pci/piix.c | 1 + trunk/drivers/ide/pci/sc1200.c | 1 + trunk/drivers/ide/pci/serverworks.c | 1 + trunk/drivers/ide/pci/siimage.c | 1 + trunk/drivers/ide/pci/sis5513.c | 1 + trunk/drivers/ide/pci/sl82c105.c | 1 + trunk/drivers/ide/pci/slc90e66.c | 1 + trunk/drivers/ide/pci/triflex.c | 1 + trunk/drivers/ide/pci/trm290.c | 1 + trunk/drivers/ide/pci/via82cxxx.c | 1 + trunk/drivers/ide/ppc/mpc8xx.c | 1 + trunk/drivers/ide/ppc/pmac.c | 1 + trunk/drivers/ide/setup-pci.c | 1 + trunk/drivers/ieee1394/config_roms.c | 1 + trunk/drivers/ieee1394/dv1394.c | 1 + trunk/drivers/ieee1394/highlevel.c | 1 + trunk/drivers/ieee1394/hosts.c | 1 + trunk/drivers/ieee1394/ieee1394_core.c | 1 + trunk/drivers/ieee1394/nodemgr.c | 1 + trunk/drivers/ieee1394/ohci1394.c | 1 + trunk/drivers/ieee1394/oui2c.sh | 1 + trunk/drivers/ieee1394/pcilynx.c | 1 + trunk/drivers/ieee1394/pcilynx.h | 1 + trunk/drivers/ieee1394/sbp2.c | 1 + trunk/drivers/ieee1394/video1394.c | 1 + trunk/drivers/infiniband/core/cm.c | 1 - trunk/drivers/infiniband/core/uverbs_cmd.c | 2 +- trunk/drivers/infiniband/hw/ipath/Kconfig | 8 +- trunk/drivers/infiniband/hw/ipath/Makefile | 2 +- .../infiniband/hw/ipath/ipath_common.h | 158 +-- trunk/drivers/infiniband/hw/ipath/ipath_cq.c | 16 - .../drivers/infiniband/hw/ipath/ipath_debug.h | 1 - .../drivers/infiniband/hw/ipath/ipath_diag.c | 98 +- .../infiniband/hw/ipath/ipath_driver.c | 392 ++++---- .../infiniband/hw/ipath/ipath_eeprom.c | 28 +- .../infiniband/hw/ipath/ipath_file_ops.c | 400 ++++---- trunk/drivers/infiniband/hw/ipath/ipath_fs.c | 2 +- .../drivers/infiniband/hw/ipath/ipath_ht400.c | 2 +- .../infiniband/hw/ipath/ipath_init_chip.c | 68 +- .../drivers/infiniband/hw/ipath/ipath_intr.c | 256 ++--- .../infiniband/hw/ipath/ipath_kernel.h | 66 +- .../drivers/infiniband/hw/ipath/ipath_keys.c | 51 +- .../drivers/infiniband/hw/ipath/ipath_layer.c | 62 +- .../drivers/infiniband/hw/ipath/ipath_layer.h | 11 +- trunk/drivers/infiniband/hw/ipath/ipath_mad.c | 127 ++- trunk/drivers/infiniband/hw/ipath/ipath_mr.c | 6 - .../drivers/infiniband/hw/ipath/ipath_pe800.c | 5 +- trunk/drivers/infiniband/hw/ipath/ipath_qp.c | 108 +-- trunk/drivers/infiniband/hw/ipath/ipath_rc.c | 899 +++++++++++------- .../infiniband/hw/ipath/ipath_registers.h | 1 - trunk/drivers/infiniband/hw/ipath/ipath_ruc.c | 283 ++---- trunk/drivers/infiniband/hw/ipath/ipath_srq.c | 48 +- .../drivers/infiniband/hw/ipath/ipath_stats.c | 2 +- .../drivers/infiniband/hw/ipath/ipath_sysfs.c | 115 ++- trunk/drivers/infiniband/hw/ipath/ipath_uc.c | 165 +++- trunk/drivers/infiniband/hw/ipath/ipath_ud.c | 41 +- .../infiniband/hw/ipath/ipath_user_pages.c | 12 +- .../drivers/infiniband/hw/ipath/ipath_verbs.c | 183 +--- .../drivers/infiniband/hw/ipath/ipath_verbs.h | 82 +- .../infiniband/hw/ipath/ipath_verbs_mcast.c | 39 +- .../infiniband/hw/ipath/ipath_wc_x86_64.c | 1 - .../drivers/infiniband/hw/ipath/ips_common.h | 263 +++++ .../drivers/infiniband/hw/ipath/verbs_debug.h | 1 - .../drivers/infiniband/hw/mthca/mthca_main.c | 1 + .../drivers/infiniband/hw/mthca/mthca_reset.c | 1 + trunk/drivers/infiniband/ulp/ipoib/ipoib.h | 1 + .../drivers/infiniband/ulp/iser/iscsi_iser.c | 1 + trunk/drivers/input/gameport/emu10k1-gp.c | 1 + trunk/drivers/input/gameport/ns558.c | 1 + trunk/drivers/input/joystick/analog.c | 1 + trunk/drivers/input/joystick/iforce/iforce.h | 1 + trunk/drivers/input/keyboard/hilkbd.c | 1 + trunk/drivers/input/keyboard/locomokbd.c | 1 + trunk/drivers/input/misc/sparcspkr.c | 1 + trunk/drivers/input/mouse/inport.c | 1 + trunk/drivers/input/mouse/sermouse.c | 1 + trunk/drivers/input/mouse/vsxxxaa.c | 1 + trunk/drivers/input/mousedev.c | 1 + trunk/drivers/input/power.c | 1 + trunk/drivers/input/serio/ct82c710.c | 1 + trunk/drivers/input/serio/gscps2.c | 1 + trunk/drivers/input/serio/i8042-sparcio.h | 109 +-- trunk/drivers/input/serio/i8042.c | 1 + trunk/drivers/input/serio/i8042.h | 1 + trunk/drivers/input/tsdev.c | 1 + trunk/drivers/isdn/capi/capi.c | 1 + trunk/drivers/isdn/capi/capiutil.c | 1 + trunk/drivers/isdn/divert/divert_procfs.c | 1 + trunk/drivers/isdn/gigaset/gigaset.h | 1 + trunk/drivers/isdn/hardware/avm/b1dma.c | 1 + trunk/drivers/isdn/hardware/avm/b1pci.c | 1 + trunk/drivers/isdn/hardware/avm/c4.c | 1 + trunk/drivers/isdn/hardware/avm/t1pci.c | 1 + trunk/drivers/isdn/hardware/eicon/capimain.c | 1 + trunk/drivers/isdn/hardware/eicon/diva_didd.c | 1 + trunk/drivers/isdn/hardware/eicon/divamnt.c | 1 + trunk/drivers/isdn/hardware/eicon/divasi.c | 1 + trunk/drivers/isdn/hardware/eicon/divasmain.c | 1 + trunk/drivers/isdn/hardware/eicon/divasproc.c | 1 + trunk/drivers/isdn/hardware/eicon/platform.h | 1 + trunk/drivers/isdn/hisax/avm_pci.c | 1 + trunk/drivers/isdn/hisax/bkm_a4t.c | 1 + trunk/drivers/isdn/hisax/bkm_a8.c | 1 + trunk/drivers/isdn/hisax/config.c | 1 + trunk/drivers/isdn/hisax/diva.c | 1 + trunk/drivers/isdn/hisax/elsa.c | 1 + trunk/drivers/isdn/hisax/elsa_ser.c | 1 + trunk/drivers/isdn/hisax/enternow_pci.c | 1 + trunk/drivers/isdn/hisax/gazel.c | 1 + trunk/drivers/isdn/hisax/hfc4s8s_l1.c | 1 + trunk/drivers/isdn/hisax/hfc_pci.c | 1 + trunk/drivers/isdn/hisax/hfc_usb.c | 1 + trunk/drivers/isdn/hisax/hisax.h | 1 + trunk/drivers/isdn/hisax/hisax_debug.h | 1 + trunk/drivers/isdn/hisax/ipacx.c | 1 + trunk/drivers/isdn/hisax/isdnl3.c | 1 + trunk/drivers/isdn/hisax/l3dss1.c | 1 + trunk/drivers/isdn/hisax/niccy.c | 1 + trunk/drivers/isdn/hisax/nj_s.c | 1 + trunk/drivers/isdn/hisax/nj_u.c | 1 + trunk/drivers/isdn/hisax/sedlbauer.c | 1 + trunk/drivers/isdn/hisax/st5481.h | 1 + trunk/drivers/isdn/hisax/st5481_init.c | 1 + trunk/drivers/isdn/hisax/telespci.c | 1 + trunk/drivers/isdn/hisax/w6692.c | 1 + trunk/drivers/isdn/hysdn/boardergo.c | 1 + trunk/drivers/isdn/hysdn/hysdn_defs.h | 1 + trunk/drivers/isdn/hysdn/hysdn_init.c | 1 + trunk/drivers/isdn/hysdn/hysdn_sched.c | 1 + trunk/drivers/isdn/i4l/isdn_common.c | 1 + trunk/drivers/isdn/i4l/isdn_net.c | 1 + trunk/drivers/isdn/i4l/isdn_ppp.c | 1 + trunk/drivers/isdn/i4l/isdn_tty.c | 1 + trunk/drivers/isdn/i4l/isdn_tty.h | 1 + trunk/drivers/isdn/isdnloop/isdnloop.c | 1 + trunk/drivers/leds/led-class.c | 1 + trunk/drivers/leds/led-triggers.c | 1 + trunk/drivers/leds/leds-corgi.c | 1 + trunk/drivers/leds/leds-ixp4xx-gpio.c | 1 + trunk/drivers/leds/leds-locomo.c | 1 + trunk/drivers/leds/leds-s3c24xx.c | 1 + trunk/drivers/leds/leds-spitz.c | 1 + trunk/drivers/leds/leds-tosa.c | 1 + trunk/drivers/leds/ledtrig-timer.c | 1 + trunk/drivers/macintosh/adb.c | 1 + trunk/drivers/macintosh/adbhid.c | 1 + trunk/drivers/macintosh/apm_emu.c | 1 + trunk/drivers/macintosh/mac_hid.c | 1 + trunk/drivers/macintosh/macio_asic.c | 1 + trunk/drivers/macintosh/macio_sysfs.c | 1 + trunk/drivers/macintosh/mediabay.c | 1 + trunk/drivers/macintosh/smu.c | 1 + trunk/drivers/macintosh/therm_adt746x.c | 1 + trunk/drivers/macintosh/therm_pm72.c | 1 + trunk/drivers/macintosh/therm_pm72.h | 2 +- trunk/drivers/macintosh/therm_windtunnel.c | 1 + trunk/drivers/macintosh/via-cuda.c | 1 + trunk/drivers/macintosh/via-pmu.c | 1 + .../macintosh/windfarm_cpufreq_clamp.c | 1 + trunk/drivers/md/bitmap.c | 1 + trunk/drivers/md/dm-snap.c | 1 + trunk/drivers/md/kcopyd.c | 1 + trunk/drivers/md/md.c | 1 + trunk/drivers/md/raid5.c | 1 + trunk/drivers/media/common/saa7146_hlp.c | 2 +- trunk/drivers/media/dvb/b2c2/flexcop-common.h | 1 + trunk/drivers/media/dvb/cinergyT2/cinergyT2.c | 1 + .../drivers/media/dvb/dvb-core/dvb_frontend.c | 4 +- trunk/drivers/media/dvb/dvb-usb/dvb-usb.h | 1 + trunk/drivers/media/dvb/frontends/cx22700.c | 1 - trunk/drivers/media/dvb/frontends/cx24123.c | 4 +- trunk/drivers/media/dvb/frontends/dib3000mb.c | 1 + trunk/drivers/media/dvb/frontends/dib3000mc.c | 1 + trunk/drivers/media/dvb/frontends/lgdt330x.c | 2 +- trunk/drivers/media/dvb/frontends/tda10021.c | 1 + trunk/drivers/media/dvb/frontends/ves1820.c | 1 + trunk/drivers/media/dvb/ttpci/av7110.c | 1 + trunk/drivers/media/dvb/ttpci/budget-av.c | 15 +- .../media/dvb/ttusb-budget/dvb-ttusb-budget.c | 2 +- trunk/drivers/media/radio/radio-gemtek-pci.c | 1 + trunk/drivers/media/video/arv.c | 1 + trunk/drivers/media/video/bt8xx/bttv-cards.c | 6 + trunk/drivers/media/video/bt8xx/bttvp.h | 2 +- trunk/drivers/media/video/compat_ioctl32.c | 1 + trunk/drivers/media/video/cpia.c | 1 + trunk/drivers/media/video/cpia2/cpia2_v4l.c | 1 + trunk/drivers/media/video/cpia_pp.c | 1 + .../drivers/media/video/cx88/cx88-blackbird.c | 43 - trunk/drivers/media/video/cx88/cx88-cards.c | 19 - trunk/drivers/media/video/cx88/cx88-dvb.c | 28 - trunk/drivers/media/video/cx88/cx88-video.c | 61 +- trunk/drivers/media/video/cx88/cx88.h | 3 - .../drivers/media/video/em28xx/em28xx-video.c | 2 + trunk/drivers/media/video/meye.c | 1 + trunk/drivers/media/video/meye.h | 1 + trunk/drivers/media/video/msp3400-driver.h | 4 +- trunk/drivers/media/video/ov511.c | 1 + trunk/drivers/media/video/pvrusb2/Makefile | 2 +- .../media/video/pvrusb2/pvrusb2-audio.c | 4 +- .../media/video/pvrusb2/pvrusb2-context.c | 14 +- .../media/video/pvrusb2/pvrusb2-ctrl.c | 6 +- .../media/video/pvrusb2/pvrusb2-cx2584x-v4l.c | 6 +- .../media/video/pvrusb2/pvrusb2-debugifc.c | 6 +- .../media/video/pvrusb2/pvrusb2-demod.c | 126 +++ .../media/video/pvrusb2/pvrusb2-demod.h | 38 + .../media/video/pvrusb2/pvrusb2-eeprom.c | 4 +- .../media/video/pvrusb2/pvrusb2-encoder.c | 4 +- .../video/pvrusb2/pvrusb2-hdw-internal.h | 17 + .../drivers/media/video/pvrusb2/pvrusb2-hdw.c | 172 ++-- .../drivers/media/video/pvrusb2/pvrusb2-hdw.h | 32 + .../video/pvrusb2/pvrusb2-i2c-chips-v4l2.c | 6 + .../video/pvrusb2/pvrusb2-i2c-cmd-v4l2.c | 4 +- .../media/video/pvrusb2/pvrusb2-i2c-core.c | 34 +- .../media/video/pvrusb2/pvrusb2-i2c-core.h | 3 + .../drivers/media/video/pvrusb2/pvrusb2-io.c | 57 +- .../drivers/media/video/pvrusb2/pvrusb2-io.h | 13 + .../media/video/pvrusb2/pvrusb2-ioread.c | 34 +- .../media/video/pvrusb2/pvrusb2-ioread.h | 1 + .../media/video/pvrusb2/pvrusb2-main.c | 10 +- .../drivers/media/video/pvrusb2/pvrusb2-std.c | 6 +- .../media/video/pvrusb2/pvrusb2-sysfs.c | 14 +- .../media/video/pvrusb2/pvrusb2-tuner.c | 2 +- .../media/video/pvrusb2/pvrusb2-v4l2.c | 42 +- .../media/video/pvrusb2/pvrusb2-video-v4l.c | 4 +- .../media/video/pvrusb2/pvrusb2-wm8775.c | 2 +- .../drivers/media/video/pwc/pwc-uncompress.h | 1 + trunk/drivers/media/video/pwc/pwc.h | 1 + .../media/video/saa7134/saa7134-core.c | 3 + trunk/drivers/media/video/se401.c | 1 + trunk/drivers/media/video/stv680.c | 1 + trunk/drivers/media/video/tda9887.c | 4 +- trunk/drivers/media/video/tuner-core.c | 12 +- trunk/drivers/media/video/tuner-simple.c | 74 +- trunk/drivers/media/video/tuner-types.c | 38 - trunk/drivers/media/video/tvaudio.c | 1 + trunk/drivers/media/video/tveeprom.c | 18 +- trunk/drivers/media/video/usbvideo/usbvideo.h | 1 + trunk/drivers/media/video/v4l1-compat.c | 1 + trunk/drivers/media/video/v4l2-common.c | 1 + trunk/drivers/media/video/videocodec.c | 1 + trunk/drivers/media/video/videocodec.h | 16 +- trunk/drivers/media/video/w9968cf.h | 1 + trunk/drivers/media/video/zoran_card.c | 1 + trunk/drivers/media/video/zoran_device.c | 1 + trunk/drivers/media/video/zoran_driver.c | 1 + trunk/drivers/media/video/zoran_procfs.c | 1 + trunk/drivers/media/video/zr36120_mem.c | 1 + trunk/drivers/message/fusion/mptbase.c | 3 +- trunk/drivers/message/fusion/mptbase.h | 1 + trunk/drivers/message/i2o/debug.c | 1 + trunk/drivers/mfd/ucb1x00-core.c | 1 + trunk/drivers/mfd/ucb1x00-ts.c | 1 + trunk/drivers/misc/ibmasm/ibmasm.h | 1 + trunk/drivers/mmc/at91_mci.c | 1 + trunk/drivers/mmc/au1xmmc.c | 1 + trunk/drivers/mmc/imxmmc.c | 1 + trunk/drivers/mmc/mmc.c | 1 + trunk/drivers/mmc/mmci.c | 1 + trunk/drivers/mmc/omap.c | 1 + trunk/drivers/mmc/pxamci.c | 1 + trunk/drivers/mmc/wbsd.c | 1 + trunk/drivers/mtd/chips/cfi_cmdset_0002.c | 1 + trunk/drivers/mtd/chips/cfi_probe.c | 1 + trunk/drivers/mtd/chips/chipreg.c | 1 + trunk/drivers/mtd/chips/jedec_probe.c | 1 + trunk/drivers/mtd/devices/block2mtd.c | 1 + trunk/drivers/mtd/devices/docprobe.c | 1 + trunk/drivers/mtd/devices/mtd_dataflash.c | 1 + trunk/drivers/mtd/devices/mtdram.c | 1 + trunk/drivers/mtd/devices/pmc551.c | 1 + trunk/drivers/mtd/inftlcore.c | 1 + trunk/drivers/mtd/maps/alchemy-flash.c | 1 + trunk/drivers/mtd/maps/amd76xrom.c | 1 + trunk/drivers/mtd/maps/ceiva.c | 1 + trunk/drivers/mtd/maps/cstm_mips_ixx.c | 1 + trunk/drivers/mtd/maps/dbox2-flash.c | 1 + trunk/drivers/mtd/maps/dc21285.c | 1 + trunk/drivers/mtd/maps/dilnetpc.c | 1 + trunk/drivers/mtd/maps/dmv182.c | 1 + trunk/drivers/mtd/maps/ebony.c | 1 + trunk/drivers/mtd/maps/edb7312.c | 1 + trunk/drivers/mtd/maps/h720x-flash.c | 1 + trunk/drivers/mtd/maps/ichxrom.c | 1 + trunk/drivers/mtd/maps/impa7.c | 1 + trunk/drivers/mtd/maps/integrator-flash.c | 1 + trunk/drivers/mtd/maps/ipaq-flash.c | 1 + trunk/drivers/mtd/maps/l440gx.c | 1 + trunk/drivers/mtd/maps/lasat.c | 1 + trunk/drivers/mtd/maps/mpc1211.c | 1 + trunk/drivers/mtd/maps/mtx-1_flash.c | 1 + trunk/drivers/mtd/maps/ocotea.c | 1 + trunk/drivers/mtd/maps/omap-toto-flash.c | 1 + trunk/drivers/mtd/maps/physmap.c | 1 + trunk/drivers/mtd/maps/redwood.c | 1 + trunk/drivers/mtd/maps/sa1100-flash.c | 1 + trunk/drivers/mtd/maps/sbc8240.c | 1 + trunk/drivers/mtd/maps/sc520cdp.c | 1 + trunk/drivers/mtd/maps/scb2_flash.c | 1 + trunk/drivers/mtd/maps/scx200_docflash.c | 1 + trunk/drivers/mtd/maps/solutionengine.c | 1 + trunk/drivers/mtd/maps/tqm834x.c | 1 + trunk/drivers/mtd/maps/tqm8xxl.c | 1 + trunk/drivers/mtd/maps/ts5500_flash.c | 1 + trunk/drivers/mtd/maps/uclinux.c | 1 + trunk/drivers/mtd/maps/walnut.c | 1 + trunk/drivers/mtd/maps/wr_sbc82xx_flash.c | 1 + trunk/drivers/mtd/mtdblock.c | 1 + trunk/drivers/mtd/mtdchar.c | 1 + trunk/drivers/mtd/mtdcore.c | 1 + trunk/drivers/mtd/mtdpart.c | 1 + trunk/drivers/mtd/nand/nandsim.c | 1 + trunk/drivers/mtd/nftlcore.c | 1 + trunk/drivers/net/3c509.c | 1 + trunk/drivers/net/3c515.c | 1 + trunk/drivers/net/3c59x.c | 1 + trunk/drivers/net/8139cp.c | 1 + trunk/drivers/net/8139too.c | 1 + trunk/drivers/net/82596.c | 1 + trunk/drivers/net/8390.h | 1 + trunk/drivers/net/Space.c | 1 + trunk/drivers/net/a2065.c | 1 + trunk/drivers/net/acenic.c | 1 + trunk/drivers/net/acenic.h | 1 + trunk/drivers/net/acenic_firmware.h | 1 + trunk/drivers/net/amd8111e.c | 1 + trunk/drivers/net/appletalk/cops.c | 1 + trunk/drivers/net/appletalk/cops_ffdrv.h | 1 + trunk/drivers/net/appletalk/cops_ltdrv.h | 1 + trunk/drivers/net/appletalk/ipddp.c | 1 + trunk/drivers/net/arcnet/arcnet.c | 1 + trunk/drivers/net/arm/at91_ether.c | 1 + trunk/drivers/net/at1700.c | 1 + trunk/drivers/net/au1000_eth.c | 1 + trunk/drivers/net/bmac.c | 1 + trunk/drivers/net/bnx2.c | 33 +- trunk/drivers/net/bnx2.h | 1 - trunk/drivers/net/bonding/bond_main.c | 1 + trunk/drivers/net/bonding/bond_sysfs.c | 1 + trunk/drivers/net/cassini.c | 1 + trunk/drivers/net/chelsio/common.h | 1 + trunk/drivers/net/chelsio/cxgb2.c | 1 + trunk/drivers/net/chelsio/sge.c | 1 + trunk/drivers/net/cris/eth_v10.c | 1 + trunk/drivers/net/cs89x0.c | 1 + trunk/drivers/net/cs89x0.h | 1 + trunk/drivers/net/declance.c | 1 + trunk/drivers/net/depca.c | 1 + trunk/drivers/net/dl2k.c | 2 +- trunk/drivers/net/dummy.c | 1 + trunk/drivers/net/e100.c | 1 + trunk/drivers/net/e1000/e1000.h | 1 + trunk/drivers/net/eepro100.c | 1 + trunk/drivers/net/eexpress.c | 1 + trunk/drivers/net/epic100.c | 1 + trunk/drivers/net/fec.c | 1 + trunk/drivers/net/fec_8xx/fec_8xx-netta.c | 1 + trunk/drivers/net/fec_8xx/fec_main.c | 1 + trunk/drivers/net/fec_8xx/fec_mii.c | 1 + trunk/drivers/net/fs_enet/fs_enet-main.c | 1 + trunk/drivers/net/fs_enet/fs_enet-mii.c | 1 + trunk/drivers/net/fs_enet/mac-fcc.c | 1 + trunk/drivers/net/fs_enet/mac-fec.c | 1 + trunk/drivers/net/fs_enet/mac-scc.c | 1 + trunk/drivers/net/fs_enet/mii-bitbang.c | 1 + trunk/drivers/net/fs_enet/mii-fixed.c | 1 + trunk/drivers/net/gianfar.c | 1 + trunk/drivers/net/gianfar.h | 1 + trunk/drivers/net/gianfar_ethtool.c | 1 + trunk/drivers/net/gianfar_mii.c | 1 + trunk/drivers/net/gianfar_sysfs.c | 1 + trunk/drivers/net/gt96100eth.h | 1 + trunk/drivers/net/hamradio/6pack.c | 1 + trunk/drivers/net/hamradio/bpqether.c | 1 + trunk/drivers/net/hamradio/mkiss.c | 1 + trunk/drivers/net/hamradio/scc.c | 1 + trunk/drivers/net/hamradio/yam.c | 1 + trunk/drivers/net/ibm_emac/ibm_emac.h | 1 + trunk/drivers/net/ibm_emac/ibm_emac_core.c | 1 + trunk/drivers/net/ibm_emac/ibm_emac_core.h | 1 + trunk/drivers/net/ibm_emac/ibm_emac_debug.c | 1 + trunk/drivers/net/ibm_emac/ibm_emac_debug.h | 1 + trunk/drivers/net/ibm_emac/ibm_emac_mal.c | 1 + trunk/drivers/net/ibm_emac/ibm_emac_mal.h | 1 + trunk/drivers/net/ibm_emac/ibm_emac_phy.c | 1 + trunk/drivers/net/ibm_emac/ibm_emac_rgmii.c | 1 + trunk/drivers/net/ibm_emac/ibm_emac_rgmii.h | 1 + trunk/drivers/net/ibm_emac/ibm_emac_tah.c | 1 + trunk/drivers/net/ibm_emac/ibm_emac_tah.h | 1 + trunk/drivers/net/ibm_emac/ibm_emac_zmii.c | 1 + trunk/drivers/net/ibm_emac/ibm_emac_zmii.h | 1 + trunk/drivers/net/ibmveth.c | 1 + trunk/drivers/net/ifb.c | 1 + trunk/drivers/net/ioc3-eth.c | 1 + trunk/drivers/net/irda/Kconfig | 2 +- trunk/drivers/net/irda/au1k_ir.c | 1 + trunk/drivers/net/irda/mcs7780.c | 2 +- trunk/drivers/net/irda/pxaficp_ir.c | 1 + trunk/drivers/net/irda/sa1100_ir.c | 1 + trunk/drivers/net/irda/vlsi_ir.c | 1 + trunk/drivers/net/iseries_veth.c | 1 + trunk/drivers/net/ixgb/ixgb.h | 1 + trunk/drivers/net/ixp2000/caleb.c | 1 + trunk/drivers/net/ixp2000/enp2611.c | 1 + trunk/drivers/net/ixp2000/ixp2400-msf.c | 1 + trunk/drivers/net/ixp2000/ixpdev.c | 1 + trunk/drivers/net/ixp2000/pm3386.c | 1 + trunk/drivers/net/mace.c | 1 + trunk/drivers/net/mv643xx_eth.h | 2 +- trunk/drivers/net/myri_sbus.c | 1 + trunk/drivers/net/natsemi.c | 1 + trunk/drivers/net/ns83820.c | 1 + trunk/drivers/net/pci-skeleton.c | 1 + trunk/drivers/net/pcmcia/com20020_cs.c | 5 +- trunk/drivers/net/phy/cicada.c | 1 + trunk/drivers/net/phy/davicom.c | 1 + trunk/drivers/net/phy/lxt.c | 1 + trunk/drivers/net/phy/marvell.c | 1 + trunk/drivers/net/phy/mdio_bus.c | 1 + trunk/drivers/net/phy/phy.c | 1 + trunk/drivers/net/phy/phy_device.c | 1 + trunk/drivers/net/phy/qsemi.c | 1 + trunk/drivers/net/ppp_generic.c | 1 + trunk/drivers/net/ppp_mppe.c | 1 + trunk/drivers/net/rrunner.c | 1 + trunk/drivers/net/rrunner.h | 1 + trunk/drivers/net/s2io.c | 16 +- trunk/drivers/net/s2io.h | 2 +- trunk/drivers/net/sb1250-mac.c | 1 + trunk/drivers/net/shaper.c | 1 + trunk/drivers/net/sk98lin/skvpd.c | 2 +- trunk/drivers/net/skfp/h/sba.h | 2 +- trunk/drivers/net/skge.c | 1 + trunk/drivers/net/sky2.c | 1 + trunk/drivers/net/slhc.c | 1 + trunk/drivers/net/slip.c | 1 + trunk/drivers/net/slip.h | 1 + trunk/drivers/net/smc-ultra.c | 1 + trunk/drivers/net/smc91x.c | 1 + trunk/drivers/net/sonic.h | 1 + trunk/drivers/net/spider_net.c | 1 + trunk/drivers/net/starfire.c | 1 + trunk/drivers/net/stnic.c | 1 + trunk/drivers/net/sungem_phy.c | 1 + trunk/drivers/net/sunhme.c | 11 +- trunk/drivers/net/sunhme.h | 1 + trunk/drivers/net/sunlance.c | 1 + trunk/drivers/net/tg3.c | 108 +-- trunk/drivers/net/tg3.h | 5 +- trunk/drivers/net/tokenring/3c359.c | 1 + trunk/drivers/net/tokenring/lanstreamer.c | 1 + trunk/drivers/net/tokenring/olympic.c | 1 + trunk/drivers/net/tokenring/smctr.c | 1 + trunk/drivers/net/tokenring/smctr_firmware.h | 1 + trunk/drivers/net/tulip/de2104x.c | 1 + trunk/drivers/net/tulip/de4x5.c | 1 + trunk/drivers/net/tulip/interrupt.c | 1 + trunk/drivers/net/tulip/tulip.h | 1 + trunk/drivers/net/tulip/tulip_core.c | 1 + trunk/drivers/net/tulip/xircom_tulip_cb.c | 1 + trunk/drivers/net/tun.c | 1 + trunk/drivers/net/via-velocity.c | 2 + trunk/drivers/net/wan/cosa.c | 1 + trunk/drivers/net/wan/hdlc_generic.c | 1 + trunk/drivers/net/wan/lmc/lmc_media.c | 1 + trunk/drivers/net/wan/sbni.c | 1 + trunk/drivers/net/wan/syncppp.c | 1 + trunk/drivers/net/wireless/airo.c | 1 + trunk/drivers/net/wireless/airo_cs.c | 1 + trunk/drivers/net/wireless/airport.c | 1 + trunk/drivers/net/wireless/arlan-main.c | 1 + trunk/drivers/net/wireless/arlan-proc.c | 1 + trunk/drivers/net/wireless/arlan.h | 1 + trunk/drivers/net/wireless/atmel.c | 1 + trunk/drivers/net/wireless/atmel_cs.c | 1 + trunk/drivers/net/wireless/atmel_pci.c | 1 + trunk/drivers/net/wireless/hermes.c | 1 + trunk/drivers/net/wireless/hostap/hostap_cs.c | 3 +- trunk/drivers/net/wireless/hostap/hostap_hw.c | 1 + .../drivers/net/wireless/hostap/hostap_main.c | 1 + .../drivers/net/wireless/hostap/hostap_pci.c | 1 + .../drivers/net/wireless/hostap/hostap_plx.c | 1 + trunk/drivers/net/wireless/ipw2100.c | 3 +- trunk/drivers/net/wireless/ipw2200.h | 1 + trunk/drivers/net/wireless/netwave_cs.c | 1 + trunk/drivers/net/wireless/orinoco.c | 1 + trunk/drivers/net/wireless/orinoco_cs.c | 1 + trunk/drivers/net/wireless/orinoco_nortel.c | 1 + trunk/drivers/net/wireless/orinoco_pci.c | 1 + trunk/drivers/net/wireless/orinoco_plx.c | 1 + trunk/drivers/net/wireless/orinoco_tmd.c | 1 + .../drivers/net/wireless/prism54/islpci_mgt.c | 1 + .../net/wireless/prism54/prismcompat.h | 1 + trunk/drivers/net/wireless/ray_cs.c | 1 + trunk/drivers/net/wireless/spectrum_cs.c | 1 + trunk/drivers/net/wireless/strip.c | 1 + trunk/drivers/net/wireless/wavelan_cs.p.h | 1 + trunk/drivers/net/wireless/wl3501_cs.c | 1 + trunk/drivers/net/znet.c | 1 + trunk/drivers/nubus/nubus.c | 1 + trunk/drivers/nubus/nubus_syms.c | 1 + trunk/drivers/parisc/ccio-dma.c | 1 + trunk/drivers/parisc/dino.c | 1 + trunk/drivers/parisc/gsc.c | 1 + trunk/drivers/parisc/led.c | 12 +- trunk/drivers/parisc/power.c | 1 + trunk/drivers/parisc/sba_iommu.c | 1 + trunk/drivers/parport/ieee1284.c | 1 + trunk/drivers/parport/ieee1284_ops.c | 1 + trunk/drivers/parport/parport_pc.c | 1 + trunk/drivers/parport/procfs.c | 1 + trunk/drivers/parport/share.c | 1 + trunk/drivers/pci/hotplug/cpci_hotplug_core.c | 1 + trunk/drivers/pci/hotplug/cpci_hotplug_pci.c | 1 + trunk/drivers/pci/hotplug/cpcihp_generic.c | 1 + trunk/drivers/pci/hotplug/cpcihp_zt5550.c | 1 + trunk/drivers/pci/hotplug/cpqphp_core.c | 1 + trunk/drivers/pci/hotplug/cpqphp_ctrl.c | 1 + trunk/drivers/pci/hotplug/cpqphp_nvram.c | 1 + trunk/drivers/pci/hotplug/cpqphp_pci.c | 1 + trunk/drivers/pci/hotplug/cpqphp_sysfs.c | 1 + trunk/drivers/pci/hotplug/fakephp.c | 1 + trunk/drivers/pci/hotplug/pci_hotplug_core.c | 1 + trunk/drivers/pci/hotplug/pcihp_skeleton.c | 1 + trunk/drivers/pci/hotplug/rpaphp_core.c | 1 + trunk/drivers/pci/msi.c | 1 + trunk/drivers/pci/pci-sysfs.c | 1 + trunk/drivers/pci/quirks.c | 1 + trunk/drivers/pci/rom.c | 1 + trunk/drivers/pcmcia/at91_cf.c | 75 +- trunk/drivers/pcmcia/au1000_db1x00.c | 3 +- trunk/drivers/pcmcia/au1000_generic.c | 1 + trunk/drivers/pcmcia/au1000_generic.h | 1 + trunk/drivers/pcmcia/au1000_pb1x00.c | 1 + trunk/drivers/pcmcia/cs.c | 29 +- trunk/drivers/pcmcia/m32r_cfc.c | 1 + trunk/drivers/pcmcia/m32r_pcc.c | 1 + trunk/drivers/pcmcia/pcmcia_resource.c | 27 +- trunk/drivers/pcmcia/pxa2xx_base.c | 1 + trunk/drivers/pcmcia/sa1100_generic.c | 1 + trunk/drivers/pcmcia/sa1111_generic.c | 1 + trunk/drivers/pcmcia/sa11xx_base.c | 1 + trunk/drivers/pcmcia/soc_common.c | 1 + trunk/drivers/pcmcia/ti113x.h | 1 - trunk/drivers/pcmcia/yenta_socket.c | 83 +- trunk/drivers/pnp/card.c | 1 + trunk/drivers/pnp/driver.c | 1 + trunk/drivers/pnp/isapnp/compat.c | 1 + trunk/drivers/pnp/isapnp/core.c | 1 + trunk/drivers/pnp/isapnp/proc.c | 1 + trunk/drivers/pnp/manager.c | 1 + trunk/drivers/pnp/pnpacpi/core.c | 1 + trunk/drivers/pnp/pnpbios/rsparser.c | 1 + trunk/drivers/pnp/quirks.c | 1 + trunk/drivers/pnp/resource.c | 4 +- trunk/drivers/pnp/support.c | 1 + trunk/drivers/rapidio/rio-scan.c | 1 + trunk/drivers/rapidio/rio-sysfs.c | 1 + trunk/drivers/rapidio/rio.c | 1 + trunk/drivers/rtc/Kconfig | 18 +- trunk/drivers/rtc/Makefile | 1 - trunk/drivers/rtc/rtc-s3c.c | 607 ------------ trunk/drivers/s390/block/dasd.c | 1 + trunk/drivers/s390/block/dasd_devmap.c | 1 + trunk/drivers/s390/block/dasd_diag.c | 1 + trunk/drivers/s390/block/dasd_eckd.c | 1 + trunk/drivers/s390/block/dasd_erp.c | 1 + trunk/drivers/s390/block/dasd_fba.c | 1 + trunk/drivers/s390/block/dasd_genhd.c | 1 + trunk/drivers/s390/block/dasd_ioctl.c | 1 + trunk/drivers/s390/block/dasd_proc.c | 1 + trunk/drivers/s390/char/con3215.c | 1 + trunk/drivers/s390/char/con3270.c | 1 + trunk/drivers/s390/char/ctrlchar.c | 1 + trunk/drivers/s390/char/fs3270.c | 1 + trunk/drivers/s390/char/keyboard.c | 1 + trunk/drivers/s390/char/raw3270.c | 1 + trunk/drivers/s390/char/sclp_con.c | 1 + trunk/drivers/s390/char/sclp_cpi.c | 1 + trunk/drivers/s390/char/sclp_quiesce.c | 1 + trunk/drivers/s390/char/sclp_rw.c | 1 + trunk/drivers/s390/char/sclp_tty.c | 1 + trunk/drivers/s390/char/sclp_vt220.c | 1 + trunk/drivers/s390/char/tape.h | 1 + trunk/drivers/s390/char/tape_34xx.c | 1 + trunk/drivers/s390/char/tape_3590.c | 1 + trunk/drivers/s390/char/tape_block.c | 1 + trunk/drivers/s390/char/tape_char.c | 1 + trunk/drivers/s390/char/tape_core.c | 1 + trunk/drivers/s390/char/tape_proc.c | 1 + trunk/drivers/s390/char/tape_std.c | 1 + trunk/drivers/s390/char/tty3270.c | 1 + trunk/drivers/s390/cio/blacklist.c | 1 + trunk/drivers/s390/cio/chsc.c | 1 + trunk/drivers/s390/cio/cio.c | 1 + trunk/drivers/s390/cio/device.c | 1 + trunk/drivers/s390/cio/device_fsm.c | 1 + trunk/drivers/s390/cio/device_id.c | 1 + trunk/drivers/s390/cio/device_ops.c | 1 + trunk/drivers/s390/cio/device_pgid.c | 1 + trunk/drivers/s390/cio/device_status.c | 1 + trunk/drivers/s390/cio/qdio.c | 1 + trunk/drivers/s390/net/fsm.c | 1 + trunk/drivers/s390/net/iucv.c | 1 + trunk/drivers/s390/net/qeth_eddp.c | 1 + trunk/drivers/s390/net/qeth_main.c | 1 + trunk/drivers/s390/s390mach.c | 1 + trunk/drivers/s390/sysinfo.c | 1 + trunk/drivers/sbus/char/envctrl.c | 1 + trunk/drivers/sbus/char/flash.c | 1 + trunk/drivers/sbus/char/openprom.c | 1 + trunk/drivers/sbus/dvma.c | 1 + trunk/drivers/sbus/sbus.c | 1 + trunk/drivers/scsi/53c700.c | 1 + trunk/drivers/scsi/53c7xx.c | 1 + trunk/drivers/scsi/BusLogic.c | 1 + trunk/drivers/scsi/BusLogic.h | 1 + trunk/drivers/scsi/FlashPoint.c | 1 + trunk/drivers/scsi/NCR53C9x.c | 1 + trunk/drivers/scsi/NCR53C9x.h | 1 + trunk/drivers/scsi/advansys.c | 1 + trunk/drivers/scsi/aha1542.c | 1 + trunk/drivers/scsi/aic7xxx/aic79xx_osm.h | 1 + trunk/drivers/scsi/aic7xxx/aic7xxx_osm.h | 1 + trunk/drivers/scsi/aic7xxx_old/aic7xxx_proc.c | 1 + trunk/drivers/scsi/amiga7xx.c | 1 + trunk/drivers/scsi/arm/acornscsi.c | 1 + trunk/drivers/scsi/atari_NCR5380.c | 1 + trunk/drivers/scsi/atari_scsi.c | 1 + trunk/drivers/scsi/ch.c | 1 + trunk/drivers/scsi/constants.c | 1 + trunk/drivers/scsi/dpt/dpti_i2o.h | 1 + trunk/drivers/scsi/eata.c | 1 + trunk/drivers/scsi/eata_pio.c | 1 + trunk/drivers/scsi/esp.c | 1 + trunk/drivers/scsi/fcal.c | 1 + trunk/drivers/scsi/fdomain.c | 1 + trunk/drivers/scsi/g_NCR5380.c | 1 + trunk/drivers/scsi/g_NCR5380.h | 1 + trunk/drivers/scsi/ibmmca.c | 1 + trunk/drivers/scsi/ide-scsi.c | 1 + trunk/drivers/scsi/imm.c | 1 + trunk/drivers/scsi/initio.c | 1 + trunk/drivers/scsi/initio.h | 13 +- trunk/drivers/scsi/ipr.c | 1 + trunk/drivers/scsi/ips.c | 1 + trunk/drivers/scsi/libata-bmdma.c | 1 + trunk/drivers/scsi/libata-core.c | 1 + trunk/drivers/scsi/mesh.c | 1 + trunk/drivers/scsi/ncr53c8xx.h | 2 + trunk/drivers/scsi/oktagon_esp.c | 1 + trunk/drivers/scsi/oktagon_io.S | 1 + trunk/drivers/scsi/osst.h | 1 + trunk/drivers/scsi/pluto.c | 1 + trunk/drivers/scsi/ppa.c | 1 + trunk/drivers/scsi/qla1280.c | 1 + trunk/drivers/scsi/qla2xxx/qla_def.h | 2 +- trunk/drivers/scsi/sata_nv.c | 1 + trunk/drivers/scsi/sata_sis.c | 1 + trunk/drivers/scsi/sata_svw.c | 1 + trunk/drivers/scsi/sata_uli.c | 1 + trunk/drivers/scsi/scsi_debug.c | 1 + trunk/drivers/scsi/scsi_logging.h | 1 + trunk/drivers/scsi/scsi_priv.h | 1 + trunk/drivers/scsi/scsi_scan.c | 1 + trunk/drivers/scsi/scsi_sysfs.c | 1 + trunk/drivers/scsi/scsi_transport_spi.c | 1 + trunk/drivers/scsi/sd.c | 1 + trunk/drivers/scsi/sg.c | 1 + trunk/drivers/scsi/sim710.c | 1 + trunk/drivers/scsi/sr_vendor.c | 1 + trunk/drivers/scsi/sun3_NCR5380.c | 1 + trunk/drivers/scsi/sym53c8xx_2/sym53c8xx.h | 1 + trunk/drivers/scsi/sym53c8xx_2/sym_glue.h | 1 + trunk/drivers/scsi/tmscsim.c | 1 + trunk/drivers/scsi/tmscsim.h | 1 + trunk/drivers/scsi/u14-34f.c | 1 + trunk/drivers/scsi/wd33c93.c | 1 + trunk/drivers/scsi/wd33c93.h | 1 + trunk/drivers/serial/21285.c | 1 + trunk/drivers/serial/68328serial.c | 1 + trunk/drivers/serial/68328serial.h | 1 + trunk/drivers/serial/68360serial.c | 1 + trunk/drivers/serial/8250.c | 1 + trunk/drivers/serial/8250.h | 1 + trunk/drivers/serial/8250_mca.c | 1 + trunk/drivers/serial/amba-pl010.c | 1 + trunk/drivers/serial/amba-pl011.c | 1 + trunk/drivers/serial/at91_serial.c | 1 + trunk/drivers/serial/clps711x.c | 1 + trunk/drivers/serial/cpm_uart/cpm_uart_core.c | 1 + trunk/drivers/serial/cpm_uart/cpm_uart_cpm1.c | 1 + trunk/drivers/serial/cpm_uart/cpm_uart_cpm2.c | 1 + trunk/drivers/serial/crisv10.c | 1 + trunk/drivers/serial/crisv10.h | 1 + trunk/drivers/serial/dz.c | 1 + trunk/drivers/serial/icom.c | 1 + trunk/drivers/serial/imx.c | 1 + trunk/drivers/serial/ip22zilog.c | 1 + trunk/drivers/serial/m32r_sio.c | 1 + trunk/drivers/serial/m32r_sio.h | 1 + trunk/drivers/serial/m32r_sio_reg.h | 1 + trunk/drivers/serial/mcfserial.h | 1 + trunk/drivers/serial/mpc52xx_uart.c | 1 + trunk/drivers/serial/mpsc.c | 1 + trunk/drivers/serial/mux.c | 1 + trunk/drivers/serial/pmac_zilog.c | 1 + trunk/drivers/serial/pxa.c | 3 +- trunk/drivers/serial/s3c2410.c | 1 + trunk/drivers/serial/sa1100.c | 1 + trunk/drivers/serial/serial_core.c | 1 + trunk/drivers/serial/serial_cs.c | 1 - trunk/drivers/serial/serial_lh7a40x.c | 1 + trunk/drivers/serial/serial_txx9.c | 1 + trunk/drivers/serial/sh-sci.c | 1 + trunk/drivers/serial/sh-sci.h | 1 + trunk/drivers/serial/sn_console.c | 1 + trunk/drivers/serial/suncore.c | 1 + trunk/drivers/serial/sunhv.c | 166 ++-- trunk/drivers/serial/sunsab.c | 300 +++--- trunk/drivers/serial/sunsu.c | 498 ++++++---- trunk/drivers/serial/sunzilog.c | 794 ++++++++++------ trunk/drivers/serial/vr41xx_siu.c | 1 + trunk/drivers/sn/ioc3.c | 1 + trunk/drivers/spi/spi_bitbang.c | 1 + trunk/drivers/spi/spi_butterfly.c | 1 + trunk/drivers/tc/lk201.c | 1 + trunk/drivers/tc/zs.c | 1 + trunk/drivers/usb/core/buffer.c | 1 + trunk/drivers/usb/core/config.c | 1 + trunk/drivers/usb/core/devio.c | 6 +- trunk/drivers/usb/core/driver.c | 1 + trunk/drivers/usb/core/file.c | 1 + trunk/drivers/usb/core/hcd-pci.c | 1 + trunk/drivers/usb/core/hcd.c | 1 + trunk/drivers/usb/core/hub.c | 1 + trunk/drivers/usb/core/inode.c | 3 +- trunk/drivers/usb/core/message.c | 1 + trunk/drivers/usb/core/notify.c | 1 + trunk/drivers/usb/core/sysfs.c | 1 + trunk/drivers/usb/core/urb.c | 1 + trunk/drivers/usb/core/usb.c | 1 + trunk/drivers/usb/core/usb.h | 1 - trunk/drivers/usb/gadget/at91_udc.c | 1 + trunk/drivers/usb/gadget/dummy_hcd.c | 1 + trunk/drivers/usb/gadget/ether.c | 1 + trunk/drivers/usb/gadget/file_storage.c | 1 + trunk/drivers/usb/gadget/goku_udc.c | 1 + trunk/drivers/usb/gadget/lh7a40x_udc.h | 1 + trunk/drivers/usb/gadget/net2280.c | 1 + trunk/drivers/usb/gadget/omap_udc.c | 1 + trunk/drivers/usb/gadget/pxa2xx_udc.c | 1 + trunk/drivers/usb/gadget/rndis.c | 1 + trunk/drivers/usb/gadget/serial.c | 1 + trunk/drivers/usb/gadget/zero.c | 1 + trunk/drivers/usb/host/ehci-hcd.c | 1 + trunk/drivers/usb/host/hc_crisv10.c | 1 + trunk/drivers/usb/host/ohci-hcd.c | 1 + trunk/drivers/usb/host/pci-quirks.c | 1 + trunk/drivers/usb/host/sl811-hcd.c | 1 + trunk/drivers/usb/host/uhci-debug.c | 1 + trunk/drivers/usb/host/uhci-hcd.c | 1 + trunk/drivers/usb/input/appletouch.c | 1 + trunk/drivers/usb/input/ati_remote.c | 1 + trunk/drivers/usb/input/hiddev.c | 1 + trunk/drivers/usb/input/itmtouch.c | 1 + trunk/drivers/usb/input/keyspan_remote.c | 1 + trunk/drivers/usb/input/mtouchusb.c | 1 + trunk/drivers/usb/input/touchkitusb.c | 1 + trunk/drivers/usb/input/xpad.c | 1 + trunk/drivers/usb/input/yealink.c | 1 + trunk/drivers/usb/misc/cytherm.c | 1 + trunk/drivers/usb/misc/idmouse.c | 1 + trunk/drivers/usb/misc/ldusb.c | 1 + trunk/drivers/usb/misc/legousbtower.c | 1 + trunk/drivers/usb/misc/phidgetkit.c | 1 + trunk/drivers/usb/misc/phidgetservo.c | 1 + .../drivers/usb/misc/sisusbvga/sisusb_init.c | 1 + trunk/drivers/usb/misc/usbled.c | 1 + trunk/drivers/usb/misc/usbtest.c | 1 + trunk/drivers/usb/net/asix.c | 1 + trunk/drivers/usb/net/cdc_ether.c | 1 + trunk/drivers/usb/net/cdc_subset.c | 1 + trunk/drivers/usb/net/gl620a.c | 1 + trunk/drivers/usb/net/net1080.c | 1 + trunk/drivers/usb/net/plusb.c | 1 + trunk/drivers/usb/net/rndis_host.c | 1 + trunk/drivers/usb/net/rtl8150.c | 1 + trunk/drivers/usb/net/usbnet.c | 1 + trunk/drivers/usb/net/zaurus.c | 1 + trunk/drivers/usb/serial/belkin_sa.c | 1 + trunk/drivers/usb/serial/bus.c | 1 + trunk/drivers/usb/serial/console.c | 1 + trunk/drivers/usb/serial/cp2101.c | 1 + trunk/drivers/usb/serial/cyberjack.c | 1 + trunk/drivers/usb/serial/cypress_m8.c | 1 + trunk/drivers/usb/serial/digi_acceleport.c | 1 + trunk/drivers/usb/serial/empeg.c | 1 + trunk/drivers/usb/serial/ezusb.c | 1 + trunk/drivers/usb/serial/ftdi_sio.c | 1 + trunk/drivers/usb/serial/garmin_gps.c | 1 + trunk/drivers/usb/serial/generic.c | 1 + trunk/drivers/usb/serial/hp4x.c | 1 + trunk/drivers/usb/serial/io_edgeport.c | 1 + trunk/drivers/usb/serial/io_ti.c | 1 + trunk/drivers/usb/serial/ipaq.c | 1 + trunk/drivers/usb/serial/ir-usb.c | 1 + trunk/drivers/usb/serial/keyspan.c | 1 + trunk/drivers/usb/serial/keyspan_pda.c | 1 + trunk/drivers/usb/serial/kl5kusb105.c | 1 + trunk/drivers/usb/serial/kobil_sct.c | 1 + trunk/drivers/usb/serial/mct_u232.c | 1 + trunk/drivers/usb/serial/omninet.c | 1 + trunk/drivers/usb/serial/option.c | 1 + trunk/drivers/usb/serial/pl2303.c | 1 + trunk/drivers/usb/serial/safe_serial.c | 1 + trunk/drivers/usb/serial/ti_usb_3410_5052.c | 1 + trunk/drivers/usb/serial/usb-serial.c | 1 + trunk/drivers/usb/serial/usb-serial.h | 1 + trunk/drivers/usb/serial/visor.c | 1 + trunk/drivers/usb/serial/whiteheat.c | 1 + trunk/drivers/usb/storage/debug.h | 1 + trunk/drivers/usb/storage/dpcm.c | 1 + trunk/drivers/usb/storage/freecom.c | 1 + trunk/drivers/usb/storage/initializers.h | 1 + trunk/drivers/usb/storage/onetouch.c | 1 + trunk/drivers/usb/storage/transport.c | 1 + trunk/drivers/usb/storage/unusual_devs.h | 1 + trunk/drivers/usb/storage/usb.c | 1 + trunk/drivers/usb/usb-skeleton.c | 1 + trunk/drivers/video/S3triofb.c | 1 + trunk/drivers/video/acornfb.c | 1 + trunk/drivers/video/amifb.c | 1 + trunk/drivers/video/asiliantfb.c | 1 + trunk/drivers/video/aty/aty128fb.c | 1 + trunk/drivers/video/aty/atyfb.h | 1 + trunk/drivers/video/aty/atyfb_base.c | 1 + trunk/drivers/video/aty/radeon_base.c | 1 + trunk/drivers/video/aty/radeon_i2c.c | 1 + trunk/drivers/video/aty/radeonfb.h | 3 +- trunk/drivers/video/au1100fb.c | 1 + trunk/drivers/video/backlight/locomolcd.c | 1 + trunk/drivers/video/bw2.c | 213 +++-- trunk/drivers/video/cfbcopyarea.c | 1 + trunk/drivers/video/cfbfillrect.c | 1 + trunk/drivers/video/cfbimgblt.c | 1 + trunk/drivers/video/cg14.c | 326 ++++--- trunk/drivers/video/cg3.c | 217 +++-- trunk/drivers/video/cg6.c | 337 +++---- trunk/drivers/video/chipsfb.c | 1 + trunk/drivers/video/cirrusfb.c | 1 + trunk/drivers/video/console/bitblit.c | 1 + trunk/drivers/video/console/dummycon.c | 1 + trunk/drivers/video/console/fbcon.c | 1 + trunk/drivers/video/console/fbcon.h | 1 + trunk/drivers/video/console/fbcon_ccw.c | 1 + trunk/drivers/video/console/fbcon_cw.c | 1 + trunk/drivers/video/console/fbcon_rotate.c | 1 + trunk/drivers/video/console/fbcon_ud.c | 1 + trunk/drivers/video/console/font_acorn_8x8.c | 1 + trunk/drivers/video/console/fonts.c | 1 + trunk/drivers/video/console/promcon.c | 1 + trunk/drivers/video/console/sticore.c | 1 + trunk/drivers/video/console/tileblit.c | 1 + trunk/drivers/video/console/vgacon.c | 1 + trunk/drivers/video/controlfb.c | 1 + trunk/drivers/video/cyber2000fb.c | 1 + trunk/drivers/video/cyber2000fb.h | 1 + trunk/drivers/video/cyblafb.c | 1 + trunk/drivers/video/fbmem.c | 1 + trunk/drivers/video/ffb.c | 466 ++++----- trunk/drivers/video/gbefb.c | 1 + trunk/drivers/video/hitfb.c | 1 + trunk/drivers/video/i810/i810-i2c.c | 1 + trunk/drivers/video/i810/i810_main.c | 1 + trunk/drivers/video/imacfb.c | 4 + trunk/drivers/video/imsttfb.c | 1 + trunk/drivers/video/imxfb.c | 1 + trunk/drivers/video/intelfb/intelfbdrv.c | 1 + trunk/drivers/video/intelfb/intelfbhw.c | 1 + trunk/drivers/video/kyro/fbdev.c | 1 + trunk/drivers/video/leo.c | 294 +++--- trunk/drivers/video/logo/logo.c | 1 + trunk/drivers/video/macmodes.c | 1 + trunk/drivers/video/matrox/matroxfb_DAC1064.c | 1 + trunk/drivers/video/matrox/matroxfb_DAC1064.h | 1 + trunk/drivers/video/matrox/matroxfb_Ti3026.c | 1 + trunk/drivers/video/matrox/matroxfb_Ti3026.h | 1 + trunk/drivers/video/matrox/matroxfb_base.c | 1 + trunk/drivers/video/matrox/matroxfb_base.h | 1 + trunk/drivers/video/matrox/matroxfb_misc.c | 1 + trunk/drivers/video/neofb.c | 1 + trunk/drivers/video/nvidia/nv_i2c.c | 1 + trunk/drivers/video/nvidia/nv_of.c | 1 + trunk/drivers/video/nvidia/nvidia.c | 1 + trunk/drivers/video/offb.c | 1 + trunk/drivers/video/p9100.c | 251 +++-- trunk/drivers/video/platinumfb.c | 1 + trunk/drivers/video/pm2fb.c | 1 + trunk/drivers/video/pm3fb.c | 1 + trunk/drivers/video/pvr2fb.c | 1 + trunk/drivers/video/pxafb.c | 1 + trunk/drivers/video/riva/fbdev.c | 1 + trunk/drivers/video/riva/rivafb-i2c.c | 1 + trunk/drivers/video/riva/rivafb.h | 1 + trunk/drivers/video/s1d13xxxfb.c | 1 + trunk/drivers/video/sa1100fb.c | 1 + trunk/drivers/video/savage/savagefb-i2c.c | 1 + trunk/drivers/video/savage/savagefb_driver.c | 1 + trunk/drivers/video/sgivwfb.c | 1 + trunk/drivers/video/sis/init.h | 1 + trunk/drivers/video/sis/init301.c | 4 +- trunk/drivers/video/sis/init301.h | 1 + trunk/drivers/video/sis/initextlfb.c | 1 + trunk/drivers/video/sis/osdef.h | 1 + trunk/drivers/video/sis/sis.h | 1 + trunk/drivers/video/sis/sis_accel.c | 1 + trunk/drivers/video/sis/sis_main.c | 1 + trunk/drivers/video/sstfb.c | 1 + trunk/drivers/video/stifb.c | 1 + trunk/drivers/video/sun3fb.c | 1 + trunk/drivers/video/tcx.c | 224 ++--- trunk/drivers/video/tdfxfb.c | 1 + trunk/drivers/video/tridentfb.c | 1 + trunk/drivers/video/valkyriefb.c | 1 + trunk/drivers/video/vgastate.c | 1 + trunk/drivers/zorro/names.c | 1 + trunk/fs/9p/conv.c | 1 + trunk/fs/9p/error.c | 1 + trunk/fs/9p/fcall.c | 1 + trunk/fs/9p/fcprint.c | 1 + trunk/fs/9p/fid.c | 1 + trunk/fs/9p/mux.c | 1 + trunk/fs/9p/trans_fd.c | 1 + trunk/fs/9p/v9fs.c | 1 + trunk/fs/9p/vfs_addr.c | 1 + trunk/fs/9p/vfs_file.c | 1 + trunk/fs/9p/vfs_super.c | 1 + trunk/fs/Kconfig | 12 +- trunk/fs/adfs/dir.c | 1 + trunk/fs/befs/linuxvfs.c | 38 +- trunk/fs/binfmt_flat.c | 1 + trunk/fs/binfmt_som.c | 1 + trunk/fs/block_dev.c | 1 + trunk/fs/buffer.c | 3 +- trunk/fs/char_dev.c | 1 + trunk/fs/cifs/asn1.c | 1 + trunk/fs/cifs/file.c | 2 +- trunk/fs/coda/sysctl.c | 1 + trunk/fs/compat_ioctl.c | 1 + trunk/fs/configfs/dir.c | 6 +- trunk/fs/configfs/symlink.c | 2 +- trunk/fs/dcache.c | 1 + trunk/fs/dcookies.c | 1 + trunk/fs/debugfs/file.c | 1 + trunk/fs/debugfs/inode.c | 1 + trunk/fs/exec.c | 1 + trunk/fs/ext2/balloc.c | 1 + trunk/fs/ext2/ialloc.c | 1 + trunk/fs/ext2/super.c | 1 + trunk/fs/ext2/xattr.h | 1 + trunk/fs/ext3/balloc.c | 1 + trunk/fs/ext3/resize.c | 1 + trunk/fs/ext3/super.c | 1 + trunk/fs/ext3/xattr.h | 1 + trunk/fs/file_table.c | 1 + trunk/fs/fs-writeback.c | 4 +- trunk/fs/hfs/super.c | 1 + trunk/fs/hfsplus/super.c | 1 + trunk/fs/inode.c | 10 +- trunk/fs/ioctl.c | 1 + trunk/fs/ioprio.c | 29 +- trunk/fs/isofs/compress.c | 1 + trunk/fs/isofs/dir.c | 1 + trunk/fs/isofs/inode.c | 1 + trunk/fs/jffs/intrep.c | 1 + trunk/fs/jffs/jffs_fm.h | 1 + trunk/fs/jffs2/compr_zlib.c | 1 + trunk/fs/jffs2/debug.h | 1 + trunk/fs/jffs2/fs.c | 1 + trunk/fs/jffs2/nodelist.h | 1 + trunk/fs/jffs2/super.c | 1 + trunk/fs/jfs/jfs_txnmgr.c | 2 +- trunk/fs/jfs/super.c | 1 + trunk/fs/lockd/clntproc.c | 1 + trunk/fs/lockd/svc.c | 1 + trunk/fs/lockd/svclock.c | 1 + trunk/fs/lockd/svcproc.c | 1 + trunk/fs/lockd/svcsubs.c | 1 + trunk/fs/lockd/xdr.c | 1 + trunk/fs/namespace.c | 1 + trunk/fs/ncpfs/dir.c | 1 + trunk/fs/ncpfs/inode.c | 1 + trunk/fs/ncpfs/ioctl.c | 1 + trunk/fs/ncpfs/mmap.c | 2 +- trunk/fs/ncpfs/ncplib_kernel.c | 1 + trunk/fs/ncpfs/ncplib_kernel.h | 1 + trunk/fs/ncpfs/ncpsign_kernel.c | 1 + trunk/fs/ncpfs/sock.c | 1 + trunk/fs/ncpfs/symlink.c | 1 + trunk/fs/nfs/callback.c | 1 + trunk/fs/nfs/callback_proc.c | 1 + trunk/fs/nfs/callback_xdr.c | 1 + trunk/fs/nfs/delegation.c | 1 + trunk/fs/nfs/direct.c | 1 + trunk/fs/nfs/inode.c | 1 + trunk/fs/nfs/nfs4state.c | 1 + trunk/fs/nfs/pagelist.c | 2 +- trunk/fs/nfs/read.c | 1 + trunk/fs/nfs/sysctl.c | 1 + trunk/fs/nfs/write.c | 10 +- trunk/fs/nfsctl.c | 1 + trunk/fs/nfsd/export.c | 2 +- trunk/fs/nfsd/nfs4callback.c | 1 + trunk/fs/nfsd/nfs4idmap.c | 1 + trunk/fs/nfsd/nfs4state.c | 32 +- trunk/fs/nfsd/nfsctl.c | 1 + trunk/fs/nfsd/nfsfh.c | 27 +- trunk/fs/nfsd/nfssvc.c | 1 + trunk/fs/nfsd/vfs.c | 15 +- trunk/fs/nls/nls_base.c | 1 + trunk/fs/ntfs/sysctl.h | 1 + trunk/fs/ocfs2/aops.c | 9 +- trunk/fs/ocfs2/cluster/heartbeat.c | 20 - trunk/fs/ocfs2/cluster/masklog.h | 22 +- trunk/fs/ocfs2/cluster/ocfs2_heartbeat.h | 1 - trunk/fs/ocfs2/cluster/tcp.c | 14 +- trunk/fs/ocfs2/dir.c | 6 +- trunk/fs/ocfs2/dlm/dlmcommon.h | 2 + trunk/fs/ocfs2/dlm/dlmdomain.c | 9 +- trunk/fs/ocfs2/dlm/dlmrecovery.c | 8 +- trunk/fs/ocfs2/dlmglue.c | 3 +- trunk/fs/ocfs2/extent_map.c | 29 +- trunk/fs/ocfs2/journal.c | 5 +- trunk/fs/ocfs2/mmap.c | 4 +- trunk/fs/ocfs2/ocfs2.h | 4 + trunk/fs/ocfs2/slot_map.c | 2 +- trunk/fs/ocfs2/super.c | 49 +- trunk/fs/ocfs2/symlink.c | 2 +- trunk/fs/partitions/acorn.c | 1 + trunk/fs/partitions/efi.c | 1 + trunk/fs/partitions/efi.h | 1 + trunk/fs/partitions/ibm.c | 1 + trunk/fs/partitions/mac.c | 1 + trunk/fs/partitions/msdos.c | 1 + trunk/fs/proc/array.c | 1 + trunk/fs/proc/base.c | 1 + trunk/fs/proc/kcore.c | 1 + trunk/fs/proc/proc_misc.c | 24 +- trunk/fs/proc/root.c | 1 + trunk/fs/proc/vmcore.c | 1 + trunk/fs/qnx4/bitmap.c | 1 + trunk/fs/qnx4/dir.c | 1 + trunk/fs/qnx4/fsync.c | 1 + trunk/fs/qnx4/inode.c | 1 + trunk/fs/qnx4/namei.c | 1 + trunk/fs/qnx4/truncate.c | 1 + trunk/fs/reiserfs/bitmap.c | 1 + trunk/fs/reiserfs/dir.c | 1 + trunk/fs/reiserfs/do_balan.c | 1 + trunk/fs/reiserfs/fix_node.c | 1 + trunk/fs/reiserfs/ibalance.c | 1 + trunk/fs/reiserfs/inode.c | 6 +- trunk/fs/reiserfs/journal.c | 1 + trunk/fs/reiserfs/lbalance.c | 1 + trunk/fs/reiserfs/namei.c | 1 + trunk/fs/reiserfs/objectid.c | 1 + trunk/fs/reiserfs/prints.c | 1 + trunk/fs/reiserfs/procfs.c | 1 + trunk/fs/reiserfs/stree.c | 1 + trunk/fs/reiserfs/super.c | 1 + trunk/fs/reiserfs/tail_conversion.c | 1 + trunk/fs/smbfs/inode.c | 1 + trunk/fs/smbfs/smbiod.c | 1 + trunk/fs/stat.c | 1 + trunk/fs/super.c | 1 + trunk/fs/udf/super.c | 1 + trunk/fs/udf/udfdecl.h | 1 + trunk/fs/ufs/balloc.c | 48 +- trunk/fs/ufs/file.c | 4 + trunk/fs/ufs/inode.c | 7 +- trunk/fs/ufs/super.c | 1 + trunk/fs/ufs/truncate.c | 148 +-- trunk/fs/ufs/util.c | 54 -- trunk/fs/ufs/util.h | 8 - trunk/fs/xfs/linux-2.6/xfs_buf.h | 1 + trunk/fs/xfs/linux-2.6/xfs_ioctl32.c | 1 + trunk/fs/xfs/linux-2.6/xfs_linux.h | 1 + trunk/include/acpi/acmacros.h | 2 +- trunk/include/acpi/acpiosxf.h | 2 + trunk/include/asm-alpha/socket.h | 1 - trunk/include/asm-arm/arch-at91rm9200/board.h | 2 +- trunk/include/asm-arm/arch-ixp4xx/io.h | 2 +- trunk/include/asm-arm/bug.h | 1 + trunk/include/asm-arm/socket.h | 1 - trunk/include/asm-arm/thread_info.h | 2 +- trunk/include/asm-arm26/socket.h | 1 - trunk/include/asm-cris/arch-v32/arbiter.h | 4 +- trunk/include/asm-cris/socket.h | 1 - trunk/include/asm-frv/socket.h | 1 - trunk/include/asm-generic/audit_change_attr.h | 18 - trunk/include/asm-generic/audit_dir_write.h | 14 - trunk/include/asm-generic/sections.h | 1 - trunk/include/asm-h8300/socket.h | 1 - trunk/include/asm-i386/alternative.h | 8 - trunk/include/asm-i386/socket.h | 1 - trunk/include/asm-ia64/sn/tioca_provider.h | 2 +- trunk/include/asm-ia64/socket.h | 1 - trunk/include/asm-m32r/socket.h | 1 - trunk/include/asm-m68k/socket.h | 1 - trunk/include/asm-mips/socket.h | 1 - trunk/include/asm-parisc/socket.h | 1 - trunk/include/asm-powerpc/of_device.h | 2 +- trunk/include/asm-powerpc/pmac_pfunc.h | 2 +- trunk/include/asm-powerpc/socket.h | 1 - trunk/include/asm-ppc/page.h | 2 +- trunk/include/asm-s390/pgtable.h | 7 + trunk/include/asm-s390/socket.h | 1 - trunk/include/asm-sh/socket.h | 1 - trunk/include/asm-sparc/of_device.h | 20 +- trunk/include/asm-sparc/prom.h | 12 +- trunk/include/asm-sparc/socket.h | 1 - trunk/include/asm-sparc64/of_device.h | 20 +- trunk/include/asm-sparc64/pbm.h | 5 +- trunk/include/asm-sparc64/prom.h | 20 +- trunk/include/asm-sparc64/sbus.h | 1 + trunk/include/asm-sparc64/socket.h | 1 - trunk/include/asm-sparc64/starfire.h | 2 +- trunk/include/asm-sparc64/vdev.h | 17 + trunk/include/asm-um/io.h | 5 - trunk/include/asm-um/kmap_types.h | 20 +- trunk/include/asm-v850/socket.h | 1 - trunk/include/asm-x86_64/alternative.h | 9 - trunk/include/asm-x86_64/socket.h | 1 - trunk/include/asm-xtensa/socket.h | 1 - trunk/include/linux/atmdev.h | 4 +- trunk/include/linux/audit.h | 25 +- trunk/include/linux/cpu.h | 6 +- trunk/include/linux/dqblk_xfs.h | 4 +- trunk/include/linux/err.h | 4 +- trunk/include/linux/fb.h | 2 +- trunk/include/linux/mm.h | 6 +- trunk/include/linux/mmzone.h | 38 +- trunk/include/linux/net.h | 1 - trunk/include/linux/netdevice.h | 27 +- trunk/include/linux/nfs_fs.h | 1 + trunk/include/linux/page-flags.h | 149 ++- trunk/include/linux/pagemap.h | 45 + trunk/include/linux/pci_ids.h | 1 - trunk/include/linux/rcupdate.h | 24 +- trunk/include/linux/rtc.h | 4 +- trunk/include/linux/sched.h | 2 +- trunk/include/linux/security.h | 51 +- trunk/include/linux/skbuff.h | 13 +- trunk/include/linux/smp.h | 2 - trunk/include/linux/sunrpc/svc.h | 4 +- trunk/include/linux/swap.h | 1 + trunk/include/linux/udp.h | 2 +- trunk/include/linux/ufs_fs.h | 2 +- trunk/include/linux/vmstat.h | 215 ----- trunk/include/media/tuner-types.h | 55 -- trunk/include/net/af_unix.h | 6 - trunk/include/net/ip6_route.h | 2 +- trunk/include/net/pkt_sched.h | 18 +- trunk/include/net/protocol.h | 9 +- trunk/include/net/scm.h | 17 - trunk/include/net/sock.h | 16 +- trunk/include/net/tcp.h | 4 +- trunk/include/net/tcp_ecn.h | 4 +- trunk/init/Kconfig | 13 +- trunk/init/main.c | 8 +- trunk/ipc/compat.c | 1 + trunk/ipc/msg.c | 1 + trunk/ipc/sem.c | 1 + trunk/ipc/shm.c | 1 + trunk/ipc/util.c | 1 + trunk/kernel/acct.c | 1 + trunk/kernel/audit.c | 8 +- trunk/kernel/audit.h | 1 - trunk/kernel/auditfilter.c | 209 ++-- trunk/kernel/auditsc.c | 65 +- trunk/kernel/configs.c | 1 + trunk/kernel/cpuset.c | 3 +- trunk/kernel/exec_domain.c | 1 + trunk/kernel/exit.c | 1 + trunk/kernel/fork.c | 1 + trunk/kernel/futex.c | 8 +- trunk/kernel/irq/manage.c | 17 +- trunk/kernel/kmod.c | 1 + trunk/kernel/ksysfs.c | 1 + trunk/kernel/module.c | 1 + trunk/kernel/panic.c | 1 + trunk/kernel/params.c | 1 + trunk/kernel/power/Kconfig | 12 + trunk/kernel/printk.c | 1 + trunk/kernel/profile.c | 1 + trunk/kernel/resource.c | 1 + trunk/kernel/sched.c | 25 +- trunk/kernel/signal.c | 8 +- trunk/kernel/spinlock.c | 1 + trunk/kernel/sys.c | 1 + trunk/kernel/sysctl.c | 10 + trunk/kernel/wait.c | 1 + trunk/lib/bust_spinlocks.c | 1 + trunk/lib/extable.c | 1 + trunk/lib/semaphore-sleepers.c | 1 + trunk/lib/spinlock_debug.c | 1 + trunk/lib/textsearch.c | 1 + trunk/lib/ts_bm.c | 1 + trunk/lib/ts_fsm.c | 1 + trunk/lib/ts_kmp.c | 1 + trunk/mm/Makefile | 2 +- trunk/mm/filemap.c | 9 +- trunk/mm/highmem.c | 6 +- trunk/mm/memory.c | 8 +- trunk/mm/memory_hotplug.c | 1 + trunk/mm/mempolicy.c | 6 +- trunk/mm/mmap.c | 2 +- trunk/mm/mmzone.c | 1 + trunk/mm/nommu.c | 2 +- trunk/mm/page-writeback.c | 93 +- trunk/mm/page_alloc.c | 473 ++++++++- trunk/mm/page_io.c | 4 +- trunk/mm/rmap.c | 7 +- trunk/mm/shmem.c | 5 +- trunk/mm/slab.c | 124 +-- trunk/mm/slob.c | 1 + trunk/mm/sparse.c | 1 + trunk/mm/swap.c | 4 +- trunk/mm/swap_state.c | 4 +- trunk/mm/swapfile.c | 1 + trunk/mm/vmscan.c | 68 +- trunk/mm/vmstat.c | 614 ------------ trunk/net/802/fc.c | 1 + trunk/net/802/fddi.c | 1 + trunk/net/802/sysctl_net_802.c | 1 + trunk/net/802/tr.c | 1 + trunk/net/8021q/vlanproc.c | 1 + trunk/net/appletalk/aarp.c | 1 + trunk/net/appletalk/atalk_proc.c | 1 + trunk/net/appletalk/ddp.c | 1 + trunk/net/appletalk/sysctl_net_atalk.c | 1 + trunk/net/atm/Makefile | 2 +- trunk/net/atm/atm_sysfs.c | 176 ---- trunk/net/atm/br2684.c | 1 + trunk/net/atm/clip.c | 1 + trunk/net/atm/common.c | 8 +- trunk/net/atm/common.h | 2 - trunk/net/atm/ioctl.c | 1 + trunk/net/atm/lec.c | 1 + trunk/net/atm/lec.h | 1 + trunk/net/atm/mpc.c | 1 + trunk/net/atm/mpoa_proc.c | 1 + trunk/net/atm/pppoatm.c | 1 + trunk/net/atm/proc.c | 1 + trunk/net/atm/pvc.c | 1 + trunk/net/atm/resources.c | 23 +- trunk/net/atm/resources.h | 3 +- trunk/net/ax25/af_ax25.c | 1 + trunk/net/ax25/ax25_dev.c | 1 + trunk/net/ax25/ax25_iface.c | 1 + trunk/net/ax25/ax25_ip.c | 1 + trunk/net/ax25/ax25_out.c | 1 + trunk/net/ax25/ax25_timer.c | 1 + trunk/net/ax25/sysctl_net_ax25.c | 1 + trunk/net/bluetooth/af_bluetooth.c | 1 + trunk/net/bluetooth/bnep/core.c | 1 + trunk/net/bluetooth/bnep/netdev.c | 1 + trunk/net/bluetooth/bnep/sock.c | 1 + trunk/net/bluetooth/cmtp/capi.c | 1 + trunk/net/bluetooth/cmtp/core.c | 1 + trunk/net/bluetooth/cmtp/sock.c | 1 + trunk/net/bluetooth/hci_conn.c | 1 + trunk/net/bluetooth/hci_core.c | 1 + trunk/net/bluetooth/hci_event.c | 1 + trunk/net/bluetooth/hci_sock.c | 1 + trunk/net/bluetooth/hci_sysfs.c | 1 + trunk/net/bluetooth/hidp/core.c | 1 + trunk/net/bluetooth/hidp/sock.c | 1 + trunk/net/bluetooth/l2cap.c | 1 + trunk/net/bluetooth/lib.c | 1 + trunk/net/bluetooth/rfcomm/core.c | 1 + trunk/net/bluetooth/rfcomm/sock.c | 1 + trunk/net/bluetooth/rfcomm/tty.c | 1 + trunk/net/bluetooth/sco.c | 1 + trunk/net/bridge/br.c | 1 + trunk/net/bridge/br_device.c | 4 +- trunk/net/bridge/br_if.c | 3 +- trunk/net/bridge/netfilter/ebt_ulog.c | 1 + trunk/net/core/dev.c | 40 +- trunk/net/core/link_watch.c | 1 + trunk/net/core/neighbour.c | 1 + trunk/net/core/net-sysfs.c | 1 + trunk/net/core/rtnetlink.c | 3 +- trunk/net/core/skbuff.c | 8 +- trunk/net/core/sock.c | 12 +- trunk/net/core/sysctl_net_core.c | 1 + trunk/net/dccp/ackvec.h | 1 + trunk/net/dccp/ccids/ccid2.c | 1 + trunk/net/dccp/ccids/ccid3.c | 1 + trunk/net/dccp/ccids/ccid3.h | 1 + trunk/net/dccp/ccids/lib/loss_interval.c | 1 + trunk/net/dccp/ccids/lib/loss_interval.h | 1 + trunk/net/dccp/ccids/lib/packet_history.c | 1 + trunk/net/dccp/ccids/lib/packet_history.h | 1 + trunk/net/dccp/ccids/lib/tfrc_equation.c | 1 + trunk/net/dccp/dccp.h | 1 + trunk/net/dccp/diag.c | 1 + trunk/net/dccp/feat.c | 1 + trunk/net/dccp/input.c | 1 + trunk/net/dccp/ipv4.c | 1 + trunk/net/dccp/ipv6.c | 1 + trunk/net/dccp/ipv6.h | 1 + trunk/net/dccp/minisocks.c | 1 + trunk/net/dccp/options.c | 1 + trunk/net/dccp/output.c | 1 + trunk/net/dccp/proto.c | 1 + trunk/net/dccp/sysctl.c | 1 + trunk/net/dccp/timer.c | 1 + trunk/net/decnet/af_decnet.c | 1 + trunk/net/decnet/dn_dev.c | 1 + trunk/net/decnet/dn_fib.c | 1 + trunk/net/decnet/dn_neigh.c | 1 + trunk/net/decnet/dn_nsp_in.c | 1 + trunk/net/decnet/dn_route.c | 1 + trunk/net/decnet/dn_rules.c | 1 + trunk/net/decnet/dn_table.c | 1 + trunk/net/decnet/netfilter/dn_rtmsg.c | 2 +- trunk/net/decnet/sysctl_net_decnet.c | 1 + trunk/net/econet/af_econet.c | 1 + trunk/net/ethernet/eth.c | 1 + trunk/net/ieee80211/ieee80211_crypt_ccmp.c | 1 + trunk/net/ieee80211/ieee80211_crypt_tkip.c | 1 + trunk/net/ieee80211/ieee80211_crypt_wep.c | 1 + trunk/net/ieee80211/ieee80211_geo.c | 1 + trunk/net/ieee80211/ieee80211_module.c | 1 + trunk/net/ieee80211/ieee80211_rx.c | 1 + trunk/net/ieee80211/ieee80211_tx.c | 1 + trunk/net/ipv4/af_inet.c | 6 +- trunk/net/ipv4/ah4.c | 1 + trunk/net/ipv4/arp.c | 1 + trunk/net/ipv4/datagram.c | 1 + trunk/net/ipv4/devinet.c | 1 + trunk/net/ipv4/esp4.c | 1 + trunk/net/ipv4/fib_frontend.c | 1 + trunk/net/ipv4/fib_hash.c | 1 + trunk/net/ipv4/fib_rules.c | 1 + trunk/net/ipv4/fib_semantics.c | 1 + trunk/net/ipv4/fib_trie.c | 1 + trunk/net/ipv4/icmp.c | 1 + trunk/net/ipv4/igmp.c | 1 + trunk/net/ipv4/inet_connection_sock.c | 1 + trunk/net/ipv4/inet_diag.c | 1 + trunk/net/ipv4/inet_hashtables.c | 1 + trunk/net/ipv4/inet_timewait_sock.c | 1 + trunk/net/ipv4/ip_forward.c | 1 + trunk/net/ipv4/ip_fragment.c | 1 + trunk/net/ipv4/ip_gre.c | 1 + trunk/net/ipv4/ip_input.c | 1 + trunk/net/ipv4/ip_output.c | 5 +- trunk/net/ipv4/ip_sockglue.c | 1 + trunk/net/ipv4/ipcomp.c | 1 + trunk/net/ipv4/ipip.c | 1 + trunk/net/ipv4/ipmr.c | 1 + trunk/net/ipv4/ipvs/ip_vs_est.c | 1 + trunk/net/ipv4/multipath_drr.c | 1 + trunk/net/ipv4/multipath_random.c | 1 + trunk/net/ipv4/multipath_rr.c | 1 + trunk/net/ipv4/multipath_wrandom.c | 1 + trunk/net/ipv4/netfilter/Kconfig | 2 +- trunk/net/ipv4/netfilter/arp_tables.c | 4 +- trunk/net/ipv4/netfilter/ip_conntrack_core.c | 1 + trunk/net/ipv4/netfilter/ip_conntrack_ftp.c | 1 + .../ipv4/netfilter/ip_conntrack_helper_h323.c | 1 + .../ipv4/netfilter/ip_conntrack_helper_pptp.c | 1 + trunk/net/ipv4/netfilter/ip_conntrack_irc.c | 1 + .../ipv4/netfilter/ip_conntrack_proto_gre.c | 1 + .../ipv4/netfilter/ip_conntrack_proto_sctp.c | 2 +- .../ipv4/netfilter/ip_conntrack_proto_tcp.c | 1 + .../ipv4/netfilter/ip_conntrack_standalone.c | 1 + trunk/net/ipv4/netfilter/ip_nat_helper.c | 1 + trunk/net/ipv4/netfilter/ip_nat_helper_pptp.c | 1 + trunk/net/ipv4/netfilter/ip_nat_proto_gre.c | 1 + trunk/net/ipv4/netfilter/ip_nat_snmp_basic.c | 1 + trunk/net/ipv4/netfilter/ip_nat_standalone.c | 1 + trunk/net/ipv4/netfilter/ip_queue.c | 14 +- trunk/net/ipv4/netfilter/ip_tables.c | 4 +- trunk/net/ipv4/netfilter/ipt_CLUSTERIP.c | 1 + trunk/net/ipv4/netfilter/ipt_MASQUERADE.c | 1 + trunk/net/ipv4/netfilter/ipt_NETMAP.c | 1 + trunk/net/ipv4/netfilter/ipt_REJECT.c | 1 + trunk/net/ipv4/netfilter/ipt_ULOG.c | 1 + trunk/net/ipv4/netfilter/iptable_mangle.c | 1 + .../netfilter/nf_conntrack_l3proto_ipv4.c | 1 + trunk/net/ipv4/protocol.c | 1 + trunk/net/ipv4/route.c | 1 + trunk/net/ipv4/sysctl_net_ipv4.c | 1 + trunk/net/ipv4/tcp.c | 18 +- trunk/net/ipv4/tcp_bic.c | 1 + trunk/net/ipv4/tcp_cong.c | 1 + trunk/net/ipv4/tcp_cubic.c | 1 + trunk/net/ipv4/tcp_diag.c | 6 +- trunk/net/ipv4/tcp_highspeed.c | 1 + trunk/net/ipv4/tcp_htcp.c | 1 + trunk/net/ipv4/tcp_hybla.c | 1 + trunk/net/ipv4/tcp_input.c | 5 + trunk/net/ipv4/tcp_ipv4.c | 6 +- trunk/net/ipv4/tcp_minisocks.c | 3 + trunk/net/ipv4/tcp_output.c | 11 +- trunk/net/ipv4/tcp_scalable.c | 1 + trunk/net/ipv4/tcp_vegas.c | 1 + trunk/net/ipv4/tcp_westwood.c | 1 + trunk/net/ipv4/udp.c | 1 + trunk/net/ipv4/xfrm4_policy.c | 1 + trunk/net/ipv6/addrconf.c | 1 + trunk/net/ipv6/af_inet6.c | 3 + trunk/net/ipv6/ah6.c | 1 + trunk/net/ipv6/anycast.c | 1 + trunk/net/ipv6/esp6.c | 1 + trunk/net/ipv6/exthdrs.c | 4 +- trunk/net/ipv6/inet6_connection_sock.c | 3 + trunk/net/ipv6/inet6_hashtables.c | 1 + trunk/net/ipv6/ip6_fib.c | 1 + trunk/net/ipv6/ip6_flowlabel.c | 1 + trunk/net/ipv6/ip6_input.c | 7 +- trunk/net/ipv6/ip6_output.c | 5 +- trunk/net/ipv6/ip6_tunnel.c | 1 + trunk/net/ipv6/ipcomp6.c | 1 + trunk/net/ipv6/ipv6_sockglue.c | 63 +- trunk/net/ipv6/ipv6_syms.c | 1 + trunk/net/ipv6/mcast.c | 1 + trunk/net/ipv6/ndisc.c | 1 + trunk/net/ipv6/netfilter/ip6_queue.c | 2 +- trunk/net/ipv6/netfilter/ip6_tables.c | 4 +- trunk/net/ipv6/netfilter/ip6t_REJECT.c | 1 + .../netfilter/nf_conntrack_l3proto_ipv6.c | 1 + trunk/net/ipv6/netfilter/nf_conntrack_reasm.c | 1 + trunk/net/ipv6/proc.c | 1 + trunk/net/ipv6/reassembly.c | 1 + trunk/net/ipv6/route.c | 1 + trunk/net/ipv6/sit.c | 1 + trunk/net/ipv6/sysctl_net_ipv6.c | 1 + trunk/net/ipv6/tcp_ipv6.c | 11 +- trunk/net/ipv6/udp.c | 1 + trunk/net/ipv6/xfrm6_policy.c | 1 + trunk/net/ipv6/xfrm6_tunnel.c | 1 + trunk/net/ipx/af_ipx.c | 1 + trunk/net/ipx/ipx_proc.c | 1 + trunk/net/ipx/ipx_route.c | 1 + trunk/net/ipx/sysctl_net_ipx.c | 1 + trunk/net/irda/af_irda.c | 1 + trunk/net/irda/ircomm/ircomm_core.c | 1 + trunk/net/irda/ircomm/ircomm_tty.c | 1 + trunk/net/irda/irda_device.c | 1 + trunk/net/irda/iriap.c | 1 + trunk/net/irda/irlan/irlan_client.c | 3 +- trunk/net/irda/irlan/irlan_common.c | 1 + trunk/net/irda/irlan/irlan_eth.c | 1 + trunk/net/irda/irlap.c | 1 + trunk/net/irda/irlap_event.c | 1 + trunk/net/irda/irlmp.c | 1 + trunk/net/irda/irlmp_event.c | 1 + trunk/net/irda/irlmp_frame.c | 1 + trunk/net/irda/irmod.c | 1 + trunk/net/irda/irnet/irnet.h | 1 + trunk/net/irda/irsysctl.c | 1 + trunk/net/irda/irttp.c | 1 + trunk/net/irda/qos.c | 1 + trunk/net/irda/timer.c | 1 + trunk/net/key/af_key.c | 1 + trunk/net/llc/af_llc.c | 1 + trunk/net/llc/llc_if.c | 1 + trunk/net/llc/llc_proc.c | 1 + trunk/net/llc/llc_station.c | 1 + trunk/net/llc/sysctl_net_llc.c | 1 + trunk/net/netfilter/Kconfig | 5 +- trunk/net/netfilter/core.c | 1 + trunk/net/netfilter/nf_conntrack_core.c | 1 + trunk/net/netfilter/nf_conntrack_ftp.c | 1 + .../netfilter/nf_conntrack_l3proto_generic.c | 1 + trunk/net/netfilter/nf_conntrack_netlink.c | 1 - trunk/net/netfilter/nf_conntrack_proto_sctp.c | 4 +- trunk/net/netfilter/nf_conntrack_proto_tcp.c | 1 + trunk/net/netfilter/nf_conntrack_standalone.c | 1 + trunk/net/netfilter/nf_internals.h | 1 + trunk/net/netfilter/nf_log.c | 1 + trunk/net/netfilter/nf_queue.c | 1 + trunk/net/netfilter/nf_sockopt.c | 1 + trunk/net/netfilter/nfnetlink.c | 3 +- trunk/net/netfilter/nfnetlink_queue.c | 12 +- trunk/net/netfilter/x_tables.c | 1 + trunk/net/netfilter/xt_policy.c | 1 + trunk/net/netfilter/xt_sctp.c | 2 +- trunk/net/netfilter/xt_tcpudp.c | 2 +- trunk/net/netlink/af_netlink.c | 1 + trunk/net/netlink/attr.c | 1 + trunk/net/netlink/genetlink.c | 3 +- trunk/net/netrom/af_netrom.c | 1 + trunk/net/netrom/nr_dev.c | 1 + trunk/net/packet/af_packet.c | 1 + trunk/net/rose/af_rose.c | 1 + trunk/net/rose/rose_dev.c | 1 + trunk/net/rxrpc/rxrpc_syms.c | 1 + trunk/net/rxrpc/sysctl.c | 1 + trunk/net/sched/Kconfig | 8 +- trunk/net/sched/act_api.c | 1 + trunk/net/sched/act_gact.c | 1 + trunk/net/sched/act_ipt.c | 1 + trunk/net/sched/act_mirred.c | 1 + trunk/net/sched/act_pedit.c | 1 + trunk/net/sched/act_police.c | 1 + trunk/net/sched/act_simple.c | 1 + trunk/net/sched/cls_api.c | 1 + trunk/net/sched/cls_basic.c | 1 + trunk/net/sched/cls_fw.c | 1 + trunk/net/sched/cls_route.c | 1 + trunk/net/sched/cls_rsvp.h | 1 + trunk/net/sched/cls_tcindex.c | 1 + trunk/net/sched/cls_u32.c | 1 + trunk/net/sched/em_cmp.c | 1 + trunk/net/sched/em_meta.c | 1 + trunk/net/sched/em_nbyte.c | 1 + trunk/net/sched/em_text.c | 1 + trunk/net/sched/em_u32.c | 1 + trunk/net/sched/ematch.c | 1 + trunk/net/sched/sch_api.c | 1 + trunk/net/sched/sch_atm.c | 1 + trunk/net/sched/sch_blackhole.c | 1 + trunk/net/sched/sch_cbq.c | 1 + trunk/net/sched/sch_dsmark.c | 1 + trunk/net/sched/sch_fifo.c | 1 + trunk/net/sched/sch_generic.c | 1 + trunk/net/sched/sch_gred.c | 1 + trunk/net/sched/sch_hfsc.c | 1 + trunk/net/sched/sch_htb.c | 1 + trunk/net/sched/sch_ingress.c | 1 + trunk/net/sched/sch_netem.c | 1 + trunk/net/sched/sch_prio.c | 1 + trunk/net/sched/sch_red.c | 1 + trunk/net/sched/sch_sfq.c | 1 + trunk/net/sched/sch_tbf.c | 1 + trunk/net/sctp/socket.c | 1 + trunk/net/socket.c | 1 + trunk/net/sunrpc/auth_gss/gss_mech_switch.c | 6 +- trunk/net/sunrpc/auth_gss/svcauth_gss.c | 271 ++---- trunk/net/sunrpc/pmap_clnt.c | 1 + trunk/net/sunrpc/rpc_pipe.c | 1 + trunk/net/sunrpc/sunrpc_syms.c | 1 + trunk/net/sunrpc/svc.c | 3 - trunk/net/sunrpc/sysctl.c | 1 + trunk/net/sysctl_net.c | 1 + trunk/net/tipc/core.c | 3 +- trunk/net/tipc/link.c | 11 +- trunk/net/tipc/node.c | 26 +- trunk/net/tipc/zone.h | 4 +- trunk/net/unix/af_unix.c | 28 +- trunk/net/wanrouter/af_wanpipe.c | 1 + trunk/net/wanrouter/wanmain.c | 1 + trunk/net/wanrouter/wanproc.c | 1 + trunk/net/x25/af_x25.c | 1 + trunk/net/x25/x25_dev.c | 1 + trunk/net/x25/x25_proc.c | 1 + trunk/net/x25/x25_route.c | 1 + trunk/net/xfrm/xfrm_algo.c | 1 + trunk/net/xfrm/xfrm_policy.c | 1 + trunk/net/xfrm/xfrm_state.c | 2 + trunk/net/xfrm/xfrm_user.c | 2 +- trunk/scripts/Kbuild.include | 4 - trunk/scripts/Makefile.build | 2 +- trunk/scripts/Makefile.host | 6 +- trunk/scripts/Makefile.lib | 6 +- trunk/scripts/Makefile.modpost | 2 +- trunk/scripts/kconfig/lxdialog/checklist.c | 7 +- trunk/scripts/kernel-doc | 13 +- trunk/scripts/mod/modpost.c | 94 +- trunk/scripts/mod/modpost.h | 2 - trunk/security/capability.c | 1 + trunk/security/commoncap.c | 5 +- trunk/security/dummy.c | 17 +- trunk/security/inode.c | 1 + trunk/security/root_plug.c | 1 + trunk/security/seclvl.c | 1 + trunk/security/security.c | 1 + trunk/security/selinux/hooks.c | 64 +- trunk/security/selinux/selinuxfs.c | 1 + trunk/security/selinux/ss/services.c | 48 +- trunk/security/selinux/xfrm.c | 1 + trunk/sound/arm/sa11xx-uda1341.c | 1 + trunk/sound/core/memalloc.c | 1 + trunk/sound/core/sgbuf.c | 1 + trunk/sound/oss/ad1816.c | 1 + trunk/sound/oss/ad1848.c | 1 + trunk/sound/oss/ad1889.c | 1 + trunk/sound/oss/aedsp16.c | 1 + trunk/sound/oss/cs4232.c | 1 + trunk/sound/oss/dmabuf.c | 6 +- trunk/sound/oss/dmasound/dmasound.h | 1 + trunk/sound/oss/dmasound/dmasound_awacs.c | 1 + trunk/sound/oss/dmasound/dmasound_paula.c | 1 + trunk/sound/oss/kahlua.c | 1 + trunk/sound/oss/msnd_classic.h | 1 + trunk/sound/oss/msnd_pinnacle.c | 1 + trunk/sound/oss/msnd_pinnacle.h | 1 + trunk/sound/oss/opl3sa2.c | 1 + trunk/sound/oss/pas2_card.c | 1 + trunk/sound/oss/pss.c | 1 + trunk/sound/oss/sb_card.c | 1 + trunk/sound/oss/sb_common.c | 1 + trunk/sound/oss/sh_dac_audio.c | 1 + trunk/sound/oss/sound_config.h | 1 + trunk/sound/oss/soundcard.c | 1 + trunk/sound/oss/trident.c | 1 + trunk/sound/oss/via82cxxx_audio.c | 1 + trunk/sound/oss/vidc.c | 1 + trunk/sound/oss/waveartist.c | 1 + trunk/sound/sound_core.c | 1 + trunk/sound/sparc/cs4231.c | 1 + trunk/sound/sparc/dbri.c | 2 +- 3364 files changed, 12442 insertions(+), 12137 deletions(-) delete mode 100644 trunk/Documentation/pcmcia/crc32hash.c delete mode 100644 trunk/arch/i386/kernel/audit.c delete mode 100644 trunk/arch/ia64/ia32/audit.c delete mode 100644 trunk/arch/ia64/kernel/audit.c create mode 100644 trunk/arch/um/kernel/time.c delete mode 100644 trunk/arch/x86_64/ia32/audit.c delete mode 100644 trunk/arch/x86_64/kernel/audit.c create mode 100644 trunk/drivers/infiniband/hw/ipath/ips_common.h create mode 100644 trunk/drivers/media/video/pvrusb2/pvrusb2-demod.c create mode 100644 trunk/drivers/media/video/pvrusb2/pvrusb2-demod.h delete mode 100644 trunk/drivers/rtc/rtc-s3c.c delete mode 100644 trunk/include/asm-generic/audit_change_attr.h delete mode 100644 trunk/include/asm-generic/audit_dir_write.h create mode 100644 trunk/include/asm-sparc64/vdev.h delete mode 100644 trunk/include/linux/vmstat.h delete mode 100644 trunk/mm/vmstat.c delete mode 100644 trunk/net/atm/atm_sysfs.c diff --git a/[refs] b/[refs] index d437cb250412..31bb735990dc 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b197ba3c70638a3a2ae39296781912f26ac0f991 +refs/heads/master: af96179a8298832cc58be212d0e4988d8a1e11bf diff --git a/trunk/Documentation/DocBook/mtdnand.tmpl b/trunk/Documentation/DocBook/mtdnand.tmpl index 999afe1ca8cb..6e463d0db266 100644 --- a/trunk/Documentation/DocBook/mtdnand.tmpl +++ b/trunk/Documentation/DocBook/mtdnand.tmpl @@ -189,9 +189,9 @@ static unsigned long baseaddr; Partition defines - If you want to divide your device into partitions, then - enable the configuration switch CONFIG_MTD_PARTITIONS and define - a partitioning scheme suitable to your board. + If you want to divide your device into parititions, then + enable the configuration switch CONFIG_MTD_PARITIONS and define + a paritioning scheme suitable to your board. #define NUM_PARTITIONS 2 diff --git a/trunk/Documentation/IPMI.txt b/trunk/Documentation/IPMI.txt index 0256805b548f..bf1cf98d2a27 100644 --- a/trunk/Documentation/IPMI.txt +++ b/trunk/Documentation/IPMI.txt @@ -10,7 +10,7 @@ standard for controlling intelligent devices that monitor a system. It provides for dynamic discovery of sensors in the system and the ability to monitor the sensors and be informed when the sensor's values change or go outside certain boundaries. It also has a -standardized database for field-replaceable units (FRUs) and a watchdog +standardized database for field-replacable units (FRUs) and a watchdog timer. To use this, you need an interface to an IPMI controller in your @@ -64,7 +64,7 @@ situation, you need to read the section below named 'The SI Driver' or IPMI defines a standard watchdog timer. You can enable this with the 'IPMI Watchdog Timer' config option. If you compile the driver into the kernel, then via a kernel command-line option you can have the -watchdog timer start as soon as it initializes. It also have a lot +watchdog timer start as soon as it intitializes. It also have a lot of other options, see the 'Watchdog' section below for more details. Note that you can also have the watchdog continue to run if it is closed (by default it is disabled on close). Go into the 'Watchdog diff --git a/trunk/Documentation/arm/IXP4xx b/trunk/Documentation/arm/IXP4xx index 43edb4ecf27d..d4c6d3aa0c25 100644 --- a/trunk/Documentation/arm/IXP4xx +++ b/trunk/Documentation/arm/IXP4xx @@ -85,7 +85,7 @@ IXP4xx provides two methods of accessing PCI memory space: 2) If > 64MB of memory space is required, the IXP4xx can be configured to use indirect registers to access PCI This allows for up to 128MB (0x48000000 to 0x4fffffff) of memory on the bus. - The disadvantage of this is that every PCI access requires + The disadvantadge of this is that every PCI access requires three local register accesses plus a spinlock, but in some cases the performance hit is acceptable. In addition, you cannot mmap() PCI devices in this case due to the indirect nature diff --git a/trunk/Documentation/digiepca.txt b/trunk/Documentation/digiepca.txt index f2560e22f2c9..88820fe38dad 100644 --- a/trunk/Documentation/digiepca.txt +++ b/trunk/Documentation/digiepca.txt @@ -2,7 +2,7 @@ NOTE: This driver is obsolete. Digi provides a 2.6 driver (dgdm) at http://www.digi.com for PCI cards. They no longer maintain this driver, and have no 2.6 driver for ISA cards. -This driver requires a number of user-space tools. They can be acquired from +This driver requires a number of user-space tools. They can be aquired from http://www.digi.com, but only works with 2.4 kernels. diff --git a/trunk/Documentation/filesystems/configfs/configfs_example.c b/trunk/Documentation/filesystems/configfs/configfs_example.c index 2d6a14a463e0..3d4713a6c207 100644 --- a/trunk/Documentation/filesystems/configfs/configfs_example.c +++ b/trunk/Documentation/filesystems/configfs/configfs_example.c @@ -264,15 +264,6 @@ static struct config_item_type simple_child_type = { }; -struct simple_children { - struct config_group group; -}; - -static inline struct simple_children *to_simple_children(struct config_item *item) -{ - return item ? container_of(to_config_group(item), struct simple_children, group) : NULL; -} - static struct config_item *simple_children_make_item(struct config_group *group, const char *name) { struct simple_child *simple_child; @@ -313,13 +304,7 @@ static ssize_t simple_children_attr_show(struct config_item *item, "items have only one attribute that is readable and writeable.\n"); } -static void simple_children_release(struct config_item *item) -{ - kfree(to_simple_children(item)); -} - static struct configfs_item_operations simple_children_item_ops = { - .release = simple_children_release, .show_attribute = simple_children_attr_show, }; @@ -360,6 +345,10 @@ static struct configfs_subsystem simple_children_subsys = { * children of its own. */ +struct simple_children { + struct config_group group; +}; + static struct config_group *group_children_make_group(struct config_group *group, const char *name) { struct simple_children *simple_children; diff --git a/trunk/Documentation/memory-barriers.txt b/trunk/Documentation/memory-barriers.txt index 28d1bc3edb1c..cf0d5416a4c3 100644 --- a/trunk/Documentation/memory-barriers.txt +++ b/trunk/Documentation/memory-barriers.txt @@ -602,7 +602,7 @@ Consider the following sequence of events: This sequence of events is committed to the memory coherence system in an order that the rest of the system might perceive as the unordered set of { STORE A, -STORE B, STORE C } all occurring before the unordered set of { STORE D, STORE E +STORE B, STORE C } all occuring before the unordered set of { STORE D, STORE E }: +-------+ : : diff --git a/trunk/Documentation/networking/pktgen.txt b/trunk/Documentation/networking/pktgen.txt index 44f2f769e865..278771c9ad99 100644 --- a/trunk/Documentation/networking/pktgen.txt +++ b/trunk/Documentation/networking/pktgen.txt @@ -74,7 +74,7 @@ Examples: pgset "pkt_size 9014" sets packet size to 9014 pgset "frags 5" packet will consist of 5 fragments pgset "count 200000" sets number of packets to send, set to zero - for continuous sends until explicitly stopped. + for continious sends untill explicitl stopped. pgset "delay 5000" adds delay to hard_start_xmit(). nanoseconds diff --git a/trunk/Documentation/pcmcia/crc32hash.c b/trunk/Documentation/pcmcia/crc32hash.c deleted file mode 100644 index cbc36d299af8..000000000000 --- a/trunk/Documentation/pcmcia/crc32hash.c +++ /dev/null @@ -1,32 +0,0 @@ -/* crc32hash.c - derived from linux/lib/crc32.c, GNU GPL v2 */ -/* Usage example: -$ ./crc32hash "Dual Speed" -*/ - -#include -#include -#include -#include - -unsigned int crc32(unsigned char const *p, unsigned int len) -{ - int i; - unsigned int crc = 0; - while (len--) { - crc ^= *p++; - for (i = 0; i < 8; i++) - crc = (crc >> 1) ^ ((crc & 1) ? 0xedb88320 : 0); - } - return crc; -} - -int main(int argc, char **argv) { - unsigned int result; - if (argc != 2) { - printf("no string passed as argument\n"); - return -1; - } - result = crc32(argv[1], strlen(argv[1])); - printf("0x%x\n", result); - return 0; -} diff --git a/trunk/Documentation/pcmcia/devicetable.txt b/trunk/Documentation/pcmcia/devicetable.txt index 199afd100cf2..3351c0355143 100644 --- a/trunk/Documentation/pcmcia/devicetable.txt +++ b/trunk/Documentation/pcmcia/devicetable.txt @@ -27,7 +27,37 @@ pcmcia:m0149cC1ABf06pfn00fn00pa725B842DpbF1EFEE84pc0877B627pd00000000 The hex value after "pa" is the hash of product ID string 1, after "pb" for string 2 and so on. -Alternatively, you can use crc32hash (see Documentation/pcmcia/crc32hash.c) -to determine the crc32 hash. Simply pass the string you want to evaluate -as argument to this program, e.g.: +Alternatively, you can use this small tool to determine the crc32 hash. +simply pass the string you want to evaluate as argument to this program, +e.g. $ ./crc32hash "Dual Speed" + +------------------------------------------------------------------------- +/* crc32hash.c - derived from linux/lib/crc32.c, GNU GPL v2 */ +#include +#include +#include +#include + +unsigned int crc32(unsigned char const *p, unsigned int len) +{ + int i; + unsigned int crc = 0; + while (len--) { + crc ^= *p++; + for (i = 0; i < 8; i++) + crc = (crc >> 1) ^ ((crc & 1) ? 0xedb88320 : 0); + } + return crc; +} + +int main(int argc, char **argv) { + unsigned int result; + if (argc != 2) { + printf("no string passed as argument\n"); + return -1; + } + result = crc32(argv[1], strlen(argv[1])); + printf("0x%x\n", result); + return 0; +} diff --git a/trunk/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl b/trunk/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl index bb18115d5170..635cbb94357c 100644 --- a/trunk/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl +++ b/trunk/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl @@ -3048,7 +3048,7 @@ struct _snd_pcm_runtime { - If you acquire a spinlock in the interrupt handler, and the + If you aquire a spinlock in the interrupt handler, and the lock is used in other pcm callbacks, too, then you have to release the lock before calling snd_pcm_period_elapsed(), because diff --git a/trunk/Documentation/sysctl/vm.txt b/trunk/Documentation/sysctl/vm.txt index 86754eb390da..2dc246af4885 100644 --- a/trunk/Documentation/sysctl/vm.txt +++ b/trunk/Documentation/sysctl/vm.txt @@ -28,6 +28,7 @@ Currently, these files are in /proc/sys/vm: - block_dump - drop-caches - zone_reclaim_mode +- zone_reclaim_interval - panic_on_oom ============================================================== @@ -166,6 +167,18 @@ use of files and builds up large slab caches. However, the slab shrink operation is global, may take a long time and free slabs in all nodes of the system. +================================================================ + +zone_reclaim_interval: + +The time allowed for off node allocations after zone reclaim +has failed to reclaim enough pages to allow a local allocation. + +Time is set in seconds and set by default to 30 seconds. + +Reduce the interval if undesired off node allocations occur. However, too +frequent scans will have a negative impact onoff node allocation performance. + ============================================================= panic_on_oom diff --git a/trunk/Documentation/video4linux/CARDLIST.cx88 b/trunk/Documentation/video4linux/CARDLIST.cx88 index 00d9a1f2a54c..6cb63ddf6163 100644 --- a/trunk/Documentation/video4linux/CARDLIST.cx88 +++ b/trunk/Documentation/video4linux/CARDLIST.cx88 @@ -50,4 +50,3 @@ 49 -> PixelView PlayTV P7000 [1554:4813] 50 -> NPG Tech Real TV FM Top 10 [14f1:0842] 51 -> WinFast DTV2000 H [107d:665e] - 52 -> Geniatech DVB-S [14f1:0084] diff --git a/trunk/MAINTAINERS b/trunk/MAINTAINERS index 42be131139c8..31a13720f23c 100644 --- a/trunk/MAINTAINERS +++ b/trunk/MAINTAINERS @@ -925,21 +925,23 @@ S: Maintained EDAC-CORE P: Doug Thompson -M: norsk5@xmission.com +M: norsk5@xmission.com, dthompson@linuxnetworx.com +P: Dave Peterson +M: dsp@llnl.gov, dave_peterson@pobox.com L: bluesmoke-devel@lists.sourceforge.net W: bluesmoke.sourceforge.net -S: Supported +S: Maintained EDAC-E752X -P: Mark Gross -M: mark.gross@intel.com +P: Dave Peterson +M: dsp@llnl.gov, dave_peterson@pobox.com L: bluesmoke-devel@lists.sourceforge.net W: bluesmoke.sourceforge.net S: Maintained EDAC-E7XXX -P: Doug Thompson -M: norsk5@xmission.com +P: Dave Peterson +M: dsp@llnl.gov, dave_peterson@pobox.com L: bluesmoke-devel@lists.sourceforge.net W: bluesmoke.sourceforge.net S: Maintained @@ -2555,6 +2557,13 @@ M: thomas@winischhofer.net W: http://www.winischhofer.at/linuxsisusbvga.shtml S: Maintained +SMB FILESYSTEM +P: Urban Widmark +M: urban@teststation.com +W: http://samba.org/ +L: samba@samba.org +S: Maintained + SMC91x ETHERNET DRIVER P: Nicolas Pitre M: nico@cam.org diff --git a/trunk/Makefile b/trunk/Makefile index 4dcf25d43fa6..e9560c6f8156 100644 --- a/trunk/Makefile +++ b/trunk/Makefile @@ -41,9 +41,8 @@ ifndef KBUILD_VERBOSE KBUILD_VERBOSE = 0 endif -# Call checker as part of compilation of C files -# Use 'make C=1' to enable checking (sparse, by default) -# Override with 'make C=1 CHECK=checker_executable CHECKFLAGS=....' +# Call sparse as part of compilation of C files +# Use 'make C=1' to enable sparse checking ifdef C ifeq ("$(origin C)", "command line") @@ -1061,8 +1060,8 @@ help: @echo ' make V=0|1 [targets] 0 => quiet build (default), 1 => verbose build' @echo ' make O=dir [targets] Locate all output files in "dir", including .config' - @echo ' make C=1 [targets] Check all c source with $$CHECK (sparse by default)' - @echo ' make C=2 [targets] Force check of all c source with $$CHECK' + @echo ' make C=1 [targets] Check all c source with $$CHECK (sparse)' + @echo ' make C=2 [targets] Force check of all c source with $$CHECK (sparse)' @echo '' @echo 'Execute "make" or "make all" to build all targets marked with [*] ' @echo 'For further info see the ./README file' @@ -1353,7 +1352,7 @@ quiet_cmd_rmfiles = $(if $(wildcard $(rm-files)),CLEAN $(wildcard $(rm-files)) a_flags = -Wp,-MD,$(depfile) $(AFLAGS) $(AFLAGS_KERNEL) \ $(NOSTDINC_FLAGS) $(CPPFLAGS) \ - $(modkern_aflags) $(EXTRA_AFLAGS) $(AFLAGS_$(basetarget).o) + $(modkern_aflags) $(EXTRA_AFLAGS) $(AFLAGS_$(*F).o) quiet_cmd_as_o_S = AS $@ cmd_as_o_S = $(CC) $(a_flags) -c -o $@ $< diff --git a/trunk/arch/alpha/kernel/alpha_ksyms.c b/trunk/arch/alpha/kernel/alpha_ksyms.c index 425643762bf5..d3848c5b0d2b 100644 --- a/trunk/arch/alpha/kernel/alpha_ksyms.c +++ b/trunk/arch/alpha/kernel/alpha_ksyms.c @@ -5,6 +5,7 @@ * modules. */ +#include #include #include #include diff --git a/trunk/arch/alpha/kernel/console.c b/trunk/arch/alpha/kernel/console.c index f313b34939bb..cb3e739fbad8 100644 --- a/trunk/arch/alpha/kernel/console.c +++ b/trunk/arch/alpha/kernel/console.c @@ -5,6 +5,7 @@ * non-0 I/O hose */ +#include #include #include #include diff --git a/trunk/arch/alpha/kernel/entry.S b/trunk/arch/alpha/kernel/entry.S index 01ecd09d4a64..7af15bf7e5ab 100644 --- a/trunk/arch/alpha/kernel/entry.S +++ b/trunk/arch/alpha/kernel/entry.S @@ -4,6 +4,7 @@ * Kernel entry-points. */ +#include #include #include #include diff --git a/trunk/arch/alpha/kernel/gct.c b/trunk/arch/alpha/kernel/gct.c index c0c7155448e0..8827687b9f89 100644 --- a/trunk/arch/alpha/kernel/gct.c +++ b/trunk/arch/alpha/kernel/gct.c @@ -2,6 +2,7 @@ * linux/arch/alpha/kernel/gct.c */ +#include #include #include #include diff --git a/trunk/arch/alpha/kernel/head.S b/trunk/arch/alpha/kernel/head.S index 1e2a62a1f75f..0905721fcbca 100644 --- a/trunk/arch/alpha/kernel/head.S +++ b/trunk/arch/alpha/kernel/head.S @@ -7,6 +7,7 @@ * the kernel global pointer and jump to the kernel entry-point. */ +#include #include #include diff --git a/trunk/arch/alpha/kernel/irq.c b/trunk/arch/alpha/kernel/irq.c index bd193ffd6fe0..63af36cf7f6e 100644 --- a/trunk/arch/alpha/kernel/irq.c +++ b/trunk/arch/alpha/kernel/irq.c @@ -10,6 +10,7 @@ * should be easier. */ +#include #include #include #include diff --git a/trunk/arch/alpha/kernel/irq_alpha.c b/trunk/arch/alpha/kernel/irq_alpha.c index ffa4ac543cf2..f20f2dff9c43 100644 --- a/trunk/arch/alpha/kernel/irq_alpha.c +++ b/trunk/arch/alpha/kernel/irq_alpha.c @@ -2,6 +2,7 @@ * Alpha specific irq code. */ +#include #include #include #include diff --git a/trunk/arch/alpha/kernel/irq_i8259.c b/trunk/arch/alpha/kernel/irq_i8259.c index ebbadbc0c36a..ac893bd48036 100644 --- a/trunk/arch/alpha/kernel/irq_i8259.c +++ b/trunk/arch/alpha/kernel/irq_i8259.c @@ -7,6 +7,7 @@ * Started hacking from linux-2.3.30pre6/arch/i386/kernel/i8259.c. */ +#include #include #include #include diff --git a/trunk/arch/alpha/kernel/machvec_impl.h b/trunk/arch/alpha/kernel/machvec_impl.h index 08b8302e64ca..11f996f24fde 100644 --- a/trunk/arch/alpha/kernel/machvec_impl.h +++ b/trunk/arch/alpha/kernel/machvec_impl.h @@ -6,6 +6,7 @@ * This file has goodies to help simplify instantiation of machine vectors. */ +#include #include /* Whee. These systems don't have an HAE: diff --git a/trunk/arch/alpha/kernel/pci.c b/trunk/arch/alpha/kernel/pci.c index ffb7d5423cc0..4ea6711e55aa 100644 --- a/trunk/arch/alpha/kernel/pci.c +++ b/trunk/arch/alpha/kernel/pci.c @@ -12,6 +12,7 @@ * Nov 2000, Ivan Kokshaysky * PCI-PCI bridges cleanup */ +#include #include #include #include diff --git a/trunk/arch/alpha/kernel/process.c b/trunk/arch/alpha/kernel/process.c index 01c8c8b23337..c760a831fd1a 100644 --- a/trunk/arch/alpha/kernel/process.c +++ b/trunk/arch/alpha/kernel/process.c @@ -8,6 +8,7 @@ * This file handles the architecture-dependent parts of process handling. */ +#include #include #include #include diff --git a/trunk/arch/alpha/kernel/proto.h b/trunk/arch/alpha/kernel/proto.h index 2a6e3da8144f..e1560fb15610 100644 --- a/trunk/arch/alpha/kernel/proto.h +++ b/trunk/arch/alpha/kernel/proto.h @@ -1,3 +1,4 @@ +#include #include diff --git a/trunk/arch/alpha/kernel/smc37c93x.c b/trunk/arch/alpha/kernel/smc37c93x.c index 2636cc028d06..421e51ea6bb7 100644 --- a/trunk/arch/alpha/kernel/smc37c93x.c +++ b/trunk/arch/alpha/kernel/smc37c93x.c @@ -2,6 +2,7 @@ * SMC 37C93X initialization code */ +#include #include #include diff --git a/trunk/arch/alpha/kernel/srm_env.c b/trunk/arch/alpha/kernel/srm_env.c index 990ac61028f8..5c98fc83e238 100644 --- a/trunk/arch/alpha/kernel/srm_env.c +++ b/trunk/arch/alpha/kernel/srm_env.c @@ -57,6 +57,7 @@ */ #include +#include #include #include #include diff --git a/trunk/arch/alpha/kernel/srmcons.c b/trunk/arch/alpha/kernel/srmcons.c index 9d7dff27f815..3b30d4f1fc42 100644 --- a/trunk/arch/alpha/kernel/srmcons.c +++ b/trunk/arch/alpha/kernel/srmcons.c @@ -5,6 +5,7 @@ * (TTY driver and console driver) */ +#include #include #include #include diff --git a/trunk/arch/alpha/kernel/sys_alcor.c b/trunk/arch/alpha/kernel/sys_alcor.c index d6926b7b1e99..1a1a2c7a3d94 100644 --- a/trunk/arch/alpha/kernel/sys_alcor.c +++ b/trunk/arch/alpha/kernel/sys_alcor.c @@ -8,6 +8,7 @@ * Code supporting the ALCOR and XLT (XL-300/366/433). */ +#include #include #include #include diff --git a/trunk/arch/alpha/kernel/sys_cabriolet.c b/trunk/arch/alpha/kernel/sys_cabriolet.c index 25a215067da8..8c9e443d93ad 100644 --- a/trunk/arch/alpha/kernel/sys_cabriolet.c +++ b/trunk/arch/alpha/kernel/sys_cabriolet.c @@ -9,6 +9,7 @@ * PC164 and LX164. */ +#include #include #include #include diff --git a/trunk/arch/alpha/kernel/sys_dp264.c b/trunk/arch/alpha/kernel/sys_dp264.c index dd6103b867e7..b28c8f1c6e10 100644 --- a/trunk/arch/alpha/kernel/sys_dp264.c +++ b/trunk/arch/alpha/kernel/sys_dp264.c @@ -12,6 +12,7 @@ * Code supporting the DP264 (EV6+TSUNAMI). */ +#include #include #include #include diff --git a/trunk/arch/alpha/kernel/sys_eb64p.c b/trunk/arch/alpha/kernel/sys_eb64p.c index ed108b66ec09..aeb8e0277905 100644 --- a/trunk/arch/alpha/kernel/sys_eb64p.c +++ b/trunk/arch/alpha/kernel/sys_eb64p.c @@ -8,6 +8,7 @@ * Code supporting the EB64+ and EB66. */ +#include #include #include #include diff --git a/trunk/arch/alpha/kernel/sys_mikasa.c b/trunk/arch/alpha/kernel/sys_mikasa.c index cc4c58111366..b741600e3761 100644 --- a/trunk/arch/alpha/kernel/sys_mikasa.c +++ b/trunk/arch/alpha/kernel/sys_mikasa.c @@ -8,6 +8,7 @@ * Code supporting the MIKASA (AlphaServer 1000). */ +#include #include #include #include diff --git a/trunk/arch/alpha/kernel/sys_noritake.c b/trunk/arch/alpha/kernel/sys_noritake.c index 2d3cff7e8c5f..55db02d318d7 100644 --- a/trunk/arch/alpha/kernel/sys_noritake.c +++ b/trunk/arch/alpha/kernel/sys_noritake.c @@ -9,6 +9,7 @@ * CORELLE (AlphaServer 800), and ALCOR Primo (AlphaStation 600A). */ +#include #include #include #include diff --git a/trunk/arch/alpha/kernel/sys_sable.c b/trunk/arch/alpha/kernel/sys_sable.c index a7a14647b50e..24dea40c9bfe 100644 --- a/trunk/arch/alpha/kernel/sys_sable.c +++ b/trunk/arch/alpha/kernel/sys_sable.c @@ -8,6 +8,7 @@ * Code supporting the Sable, Sable-Gamma, and Lynx systems. */ +#include #include #include #include diff --git a/trunk/arch/alpha/kernel/sys_sio.c b/trunk/arch/alpha/kernel/sys_sio.c index cd85ef725e0e..131a2d9f79d3 100644 --- a/trunk/arch/alpha/kernel/sys_sio.c +++ b/trunk/arch/alpha/kernel/sys_sio.c @@ -10,6 +10,7 @@ * Kenetics's Platform 2000, Avanti (AlphaStation), XL, and AlphaBook1. */ +#include #include #include #include diff --git a/trunk/arch/alpha/kernel/sys_titan.c b/trunk/arch/alpha/kernel/sys_titan.c index a8bfc8c16a7d..13f3ed8ed7ac 100644 --- a/trunk/arch/alpha/kernel/sys_titan.c +++ b/trunk/arch/alpha/kernel/sys_titan.c @@ -12,6 +12,7 @@ * Granite */ +#include #include #include #include diff --git a/trunk/arch/alpha/kernel/time.c b/trunk/arch/alpha/kernel/time.c index 50eccde2dcd8..3859749810b4 100644 --- a/trunk/arch/alpha/kernel/time.c +++ b/trunk/arch/alpha/kernel/time.c @@ -27,6 +27,7 @@ * 2003-06-03 R. Scott Bailey * Tighten sanity in time_init from 1% (10,000 PPM) to 250 PPM */ +#include #include #include #include diff --git a/trunk/arch/alpha/kernel/traps.c b/trunk/arch/alpha/kernel/traps.c index d6e665d567bd..f9d12319e0fb 100644 --- a/trunk/arch/alpha/kernel/traps.c +++ b/trunk/arch/alpha/kernel/traps.c @@ -8,6 +8,7 @@ * This file initializes the trap entry points */ +#include #include #include #include diff --git a/trunk/arch/alpha/kernel/vmlinux.lds.S b/trunk/arch/alpha/kernel/vmlinux.lds.S index 71470e9d93ba..0922e0785ddb 100644 --- a/trunk/arch/alpha/kernel/vmlinux.lds.S +++ b/trunk/arch/alpha/kernel/vmlinux.lds.S @@ -1,3 +1,4 @@ +#include #include OUTPUT_FORMAT("elf64-alpha") diff --git a/trunk/arch/alpha/lib/callback_srm.S b/trunk/arch/alpha/lib/callback_srm.S index 8804bec2c644..0528acd0d9ad 100644 --- a/trunk/arch/alpha/lib/callback_srm.S +++ b/trunk/arch/alpha/lib/callback_srm.S @@ -2,6 +2,7 @@ * arch/alpha/lib/callback_srm.S */ +#include #include .text diff --git a/trunk/arch/alpha/lib/udelay.c b/trunk/arch/alpha/lib/udelay.c index 69d52aa37bae..1c879bbce419 100644 --- a/trunk/arch/alpha/lib/udelay.c +++ b/trunk/arch/alpha/lib/udelay.c @@ -4,6 +4,7 @@ * Delay routines, using a pre-computed "loops_per_jiffy" value. */ +#include #include #include /* for udelay's use of smp_processor_id */ #include diff --git a/trunk/arch/alpha/mm/extable.c b/trunk/arch/alpha/mm/extable.c index dc7aeda15773..c3849baebd57 100644 --- a/trunk/arch/alpha/mm/extable.c +++ b/trunk/arch/alpha/mm/extable.c @@ -2,6 +2,7 @@ * linux/arch/alpha/mm/extable.c */ +#include #include #include diff --git a/trunk/arch/alpha/mm/fault.c b/trunk/arch/alpha/mm/fault.c index 622dabd84680..64ace5a9cd3d 100644 --- a/trunk/arch/alpha/mm/fault.c +++ b/trunk/arch/alpha/mm/fault.c @@ -4,6 +4,7 @@ * Copyright (C) 1995 Linus Torvalds */ +#include #include #include #include diff --git a/trunk/arch/alpha/mm/init.c b/trunk/arch/alpha/mm/init.c index 917dad1b74c8..544ac5dc09eb 100644 --- a/trunk/arch/alpha/mm/init.c +++ b/trunk/arch/alpha/mm/init.c @@ -6,6 +6,7 @@ /* 2.3.x zone allocator, 1999 Andrea Arcangeli */ +#include #include #include #include diff --git a/trunk/arch/alpha/mm/numa.c b/trunk/arch/alpha/mm/numa.c index b826f58c6e72..bf6b65c81bef 100644 --- a/trunk/arch/alpha/mm/numa.c +++ b/trunk/arch/alpha/mm/numa.c @@ -6,6 +6,7 @@ * Copyright (C) 2001 Andrea Arcangeli SuSE */ +#include #include #include #include diff --git a/trunk/arch/arm/boot/compressed/head-clps7500.S b/trunk/arch/arm/boot/compressed/head-clps7500.S index 941c5f5cbacf..4a8a689d15e6 100644 --- a/trunk/arch/arm/boot/compressed/head-clps7500.S +++ b/trunk/arch/arm/boot/compressed/head-clps7500.S @@ -4,6 +4,7 @@ * Copyright (C) 1999, 2000, 2001 Nexus Electronics Ltd */ +#include /* There are three different ways the kernel can be booted on a 7500 system: from Angel (loaded in RAM), from diff --git a/trunk/arch/arm/boot/compressed/head-l7200.S b/trunk/arch/arm/boot/compressed/head-l7200.S index d0e3b20856cd..b08bd23f8d16 100644 --- a/trunk/arch/arm/boot/compressed/head-l7200.S +++ b/trunk/arch/arm/boot/compressed/head-l7200.S @@ -7,6 +7,7 @@ * is merged with head.S by the linker. */ +#include #include #ifndef CONFIG_ARCH_L7200 diff --git a/trunk/arch/arm/boot/compressed/head-sa1100.S b/trunk/arch/arm/boot/compressed/head-sa1100.S index 4c8c0e46027d..5aefffd46048 100644 --- a/trunk/arch/arm/boot/compressed/head-sa1100.S +++ b/trunk/arch/arm/boot/compressed/head-sa1100.S @@ -7,6 +7,7 @@ * */ +#include #include #include diff --git a/trunk/arch/arm/boot/compressed/head-sharpsl.S b/trunk/arch/arm/boot/compressed/head-sharpsl.S index eb0084ea1ec4..59ad69640d6b 100644 --- a/trunk/arch/arm/boot/compressed/head-sharpsl.S +++ b/trunk/arch/arm/boot/compressed/head-sharpsl.S @@ -12,6 +12,7 @@ * */ +#include #include #include diff --git a/trunk/arch/arm/boot/compressed/head-xscale.S b/trunk/arch/arm/boot/compressed/head-xscale.S index 73c5d9e0201c..d3fe2533907e 100644 --- a/trunk/arch/arm/boot/compressed/head-xscale.S +++ b/trunk/arch/arm/boot/compressed/head-xscale.S @@ -5,6 +5,7 @@ * */ +#include #include #include diff --git a/trunk/arch/arm/boot/compressed/head.S b/trunk/arch/arm/boot/compressed/head.S index f7b5c6db30f5..23016f6aa645 100644 --- a/trunk/arch/arm/boot/compressed/head.S +++ b/trunk/arch/arm/boot/compressed/head.S @@ -8,6 +8,7 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ +#include #include /* diff --git a/trunk/arch/arm/common/locomo.c b/trunk/arch/arm/common/locomo.c index fbc3ab0e1011..0dafba3a701d 100644 --- a/trunk/arch/arm/common/locomo.c +++ b/trunk/arch/arm/common/locomo.c @@ -15,6 +15,7 @@ * Based on sa1111.c */ +#include #include #include #include diff --git a/trunk/arch/arm/common/sa1111.c b/trunk/arch/arm/common/sa1111.c index fe06a36a2130..3f68db84e5e6 100644 --- a/trunk/arch/arm/common/sa1111.c +++ b/trunk/arch/arm/common/sa1111.c @@ -14,6 +14,7 @@ * All initialization functions provided here are intended to be called * from machine specific code with proper arguments when required. */ +#include #include #include #include diff --git a/trunk/arch/arm/common/uengine.c b/trunk/arch/arm/common/uengine.c index 95c8508c29b7..dfca596a9a27 100644 --- a/trunk/arch/arm/common/uengine.c +++ b/trunk/arch/arm/common/uengine.c @@ -11,6 +11,7 @@ * License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/arm/common/via82c505.c b/trunk/arch/arm/common/via82c505.c index ba2e62986a57..ef716a5b07ac 100644 --- a/trunk/arch/arm/common/via82c505.c +++ b/trunk/arch/arm/common/via82c505.c @@ -1,3 +1,4 @@ +#include #include #include #include diff --git a/trunk/arch/arm/kernel/apm.c b/trunk/arch/arm/kernel/apm.c index 33c55689f999..2bed290fec76 100644 --- a/trunk/arch/arm/kernel/apm.c +++ b/trunk/arch/arm/kernel/apm.c @@ -10,6 +10,7 @@ * [This document is available from Microsoft at: * http://www.microsoft.com/hwdev/busbios/amp_12.htm] */ +#include #include #include #include diff --git a/trunk/arch/arm/kernel/bios32.c b/trunk/arch/arm/kernel/bios32.c index 964faac104fb..45da06fc1ba1 100644 --- a/trunk/arch/arm/kernel/bios32.c +++ b/trunk/arch/arm/kernel/bios32.c @@ -5,6 +5,7 @@ * * Bits taken from various places. */ +#include #include #include #include diff --git a/trunk/arch/arm/kernel/compat.c b/trunk/arch/arm/kernel/compat.c index 0a1385442f43..60cfa7f3226c 100644 --- a/trunk/arch/arm/kernel/compat.c +++ b/trunk/arch/arm/kernel/compat.c @@ -15,6 +15,7 @@ * the kernel for 5 years from now (2001). This will allow boot loaders * to convert to the new struct tag way. */ +#include #include #include #include diff --git a/trunk/arch/arm/kernel/debug.S b/trunk/arch/arm/kernel/debug.S index a5747e58a9dc..da280bae3d07 100644 --- a/trunk/arch/arm/kernel/debug.S +++ b/trunk/arch/arm/kernel/debug.S @@ -9,6 +9,7 @@ * * 32-bit debugging code */ +#include #include .text diff --git a/trunk/arch/arm/kernel/ecard.c b/trunk/arch/arm/kernel/ecard.c index 68a257666d95..00aa225e8d95 100644 --- a/trunk/arch/arm/kernel/ecard.c +++ b/trunk/arch/arm/kernel/ecard.c @@ -27,6 +27,7 @@ */ #define ECARD_C +#include #include #include #include diff --git a/trunk/arch/arm/kernel/entry-armv.S b/trunk/arch/arm/kernel/entry-armv.S index 26f197afd204..6423a38839b8 100644 --- a/trunk/arch/arm/kernel/entry-armv.S +++ b/trunk/arch/arm/kernel/entry-armv.S @@ -14,6 +14,7 @@ * Note: there is a StrongARM bug in the STMIA rn, {regs}^ instruction that causes * it to save wrong values... Be aware! */ +#include #include #include diff --git a/trunk/arch/arm/kernel/entry-common.S b/trunk/arch/arm/kernel/entry-common.S index 6f5e7c50d42f..75af6d6e2f28 100644 --- a/trunk/arch/arm/kernel/entry-common.S +++ b/trunk/arch/arm/kernel/entry-common.S @@ -7,6 +7,7 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ +#include #include diff --git a/trunk/arch/arm/kernel/entry-header.S b/trunk/arch/arm/kernel/entry-header.S index 87ab4e157997..f1c2fd5b63e4 100644 --- a/trunk/arch/arm/kernel/entry-header.S +++ b/trunk/arch/arm/kernel/entry-header.S @@ -1,3 +1,4 @@ +#include #include #include diff --git a/trunk/arch/arm/kernel/head-nommu.S b/trunk/arch/arm/kernel/head-nommu.S index ac9eb3d30518..2af7e44218af 100644 --- a/trunk/arch/arm/kernel/head-nommu.S +++ b/trunk/arch/arm/kernel/head-nommu.S @@ -12,6 +12,7 @@ * for 32-bit CPUs which has a process ID register(CP15). * */ +#include #include #include diff --git a/trunk/arch/arm/kernel/head.S b/trunk/arch/arm/kernel/head.S index 518b80cd87de..330b9476c398 100644 --- a/trunk/arch/arm/kernel/head.S +++ b/trunk/arch/arm/kernel/head.S @@ -11,6 +11,7 @@ * * Kernel startup code for all 32-bit CPUs */ +#include #include #include diff --git a/trunk/arch/arm/kernel/irq.c b/trunk/arch/arm/kernel/irq.c index 4d31cf8d02d5..ec20f8935e8b 100644 --- a/trunk/arch/arm/kernel/irq.c +++ b/trunk/arch/arm/kernel/irq.c @@ -21,6 +21,7 @@ * IRQ's are in fact implemented a bit like signal handlers for the kernel. * Naturally it's not a 1:1 relation, but there are similarities. */ +#include #include #include #include diff --git a/trunk/arch/arm/kernel/module.c b/trunk/arch/arm/kernel/module.c index 298363d97047..055bf5d28894 100644 --- a/trunk/arch/arm/kernel/module.c +++ b/trunk/arch/arm/kernel/module.c @@ -9,6 +9,7 @@ * * Module allocation method suggested by Andi Kleen. */ +#include #include #include #include diff --git a/trunk/arch/arm/kernel/process.c b/trunk/arch/arm/kernel/process.c index c3258b763c5d..e1c77ee885a7 100644 --- a/trunk/arch/arm/kernel/process.c +++ b/trunk/arch/arm/kernel/process.c @@ -10,6 +10,7 @@ */ #include +#include #include #include #include diff --git a/trunk/arch/arm/kernel/ptrace.c b/trunk/arch/arm/kernel/ptrace.c index 9254ba2f46fc..c40bdc770054 100644 --- a/trunk/arch/arm/kernel/ptrace.c +++ b/trunk/arch/arm/kernel/ptrace.c @@ -9,6 +9,7 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/arch/arm/kernel/setup.c b/trunk/arch/arm/kernel/setup.c index 7447a1987322..6bdf70def01f 100644 --- a/trunk/arch/arm/kernel/setup.c +++ b/trunk/arch/arm/kernel/setup.c @@ -7,6 +7,7 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/arch/arm/kernel/signal.c b/trunk/arch/arm/kernel/signal.c index 48cf7fffddf2..83a8d3c95eb3 100644 --- a/trunk/arch/arm/kernel/signal.c +++ b/trunk/arch/arm/kernel/signal.c @@ -7,6 +7,7 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/arch/arm/kernel/smp.c b/trunk/arch/arm/kernel/smp.c index 68e9634d260a..1370d726dc10 100644 --- a/trunk/arch/arm/kernel/smp.c +++ b/trunk/arch/arm/kernel/smp.c @@ -7,6 +7,7 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/arch/arm/kernel/time.c b/trunk/arch/arm/kernel/time.c index 09a67d771857..9c12d4fefbd3 100644 --- a/trunk/arch/arm/kernel/time.c +++ b/trunk/arch/arm/kernel/time.c @@ -16,6 +16,7 @@ * 1998-12-20 Updated NTP code according to technical memorandum Jan '96 * "A Kernel Model for Precision Timekeeping" by Dave Mills */ +#include #include #include #include diff --git a/trunk/arch/arm/kernel/traps.c b/trunk/arch/arm/kernel/traps.c index 35a052fc177a..35230a060108 100644 --- a/trunk/arch/arm/kernel/traps.c +++ b/trunk/arch/arm/kernel/traps.c @@ -12,6 +12,7 @@ * 'linux/arch/arm/lib/traps.S'. Mostly a debugging aid, but will probably * kill the offending process. */ +#include #include #include #include diff --git a/trunk/arch/arm/kernel/vmlinux.lds.S b/trunk/arch/arm/kernel/vmlinux.lds.S index 3ca574ee2772..2df9688a7028 100644 --- a/trunk/arch/arm/kernel/vmlinux.lds.S +++ b/trunk/arch/arm/kernel/vmlinux.lds.S @@ -4,6 +4,7 @@ */ #include +#include #include #include diff --git a/trunk/arch/arm/lib/backtrace.S b/trunk/arch/arm/lib/backtrace.S index 74230083cbf4..91f993f2e9db 100644 --- a/trunk/arch/arm/lib/backtrace.S +++ b/trunk/arch/arm/lib/backtrace.S @@ -10,6 +10,7 @@ * 27/03/03 Ian Molton Clean up CONFIG_CPU * */ +#include #include #include .text diff --git a/trunk/arch/arm/lib/bitops.h b/trunk/arch/arm/lib/bitops.h index 542251021744..b8c14e936697 100644 --- a/trunk/arch/arm/lib/bitops.h +++ b/trunk/arch/arm/lib/bitops.h @@ -1,3 +1,4 @@ +#include #if __LINUX_ARM_ARCH__ >= 6 && defined(CONFIG_CPU_32v6K) .macro bitop, instr diff --git a/trunk/arch/arm/lib/ucmpdi2.S b/trunk/arch/arm/lib/ucmpdi2.S index f76de07ac182..d847a62834cb 100644 --- a/trunk/arch/arm/lib/ucmpdi2.S +++ b/trunk/arch/arm/lib/ucmpdi2.S @@ -10,6 +10,7 @@ * published by the Free Software Foundation. */ +#include #include #ifdef __ARMEB__ diff --git a/trunk/arch/arm/mach-aaec2000/core.c b/trunk/arch/arm/mach-aaec2000/core.c index aa01d6753d6e..65be5efd633c 100644 --- a/trunk/arch/arm/mach-aaec2000/core.c +++ b/trunk/arch/arm/mach-aaec2000/core.c @@ -9,6 +9,7 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-at91rm9200/board-csb337.c b/trunk/arch/arm/mach-at91rm9200/board-csb337.c index 794d3fbb449b..e94645d77f7a 100644 --- a/trunk/arch/arm/mach-at91rm9200/board-csb337.c +++ b/trunk/arch/arm/mach-at91rm9200/board-csb337.c @@ -18,6 +18,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-at91rm9200/board-csb637.c b/trunk/arch/arm/mach-at91rm9200/board-csb637.c index c8b6f334246a..67d5f7786cdb 100644 --- a/trunk/arch/arm/mach-at91rm9200/board-csb637.c +++ b/trunk/arch/arm/mach-at91rm9200/board-csb637.c @@ -18,6 +18,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-at91rm9200/board-dk.c b/trunk/arch/arm/mach-at91rm9200/board-dk.c index 65873037e02a..48d7390fa584 100644 --- a/trunk/arch/arm/mach-at91rm9200/board-dk.c +++ b/trunk/arch/arm/mach-at91rm9200/board-dk.c @@ -21,6 +21,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-at91rm9200/board-ek.c b/trunk/arch/arm/mach-at91rm9200/board-ek.c index 868192351dda..72202ed830ad 100644 --- a/trunk/arch/arm/mach-at91rm9200/board-ek.c +++ b/trunk/arch/arm/mach-at91rm9200/board-ek.c @@ -21,6 +21,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-at91rm9200/common.c b/trunk/arch/arm/mach-at91rm9200/common.c index cc55f4c28d95..e836f8537a1d 100644 --- a/trunk/arch/arm/mach-at91rm9200/common.c +++ b/trunk/arch/arm/mach-at91rm9200/common.c @@ -10,6 +10,7 @@ * */ +#include #include #include diff --git a/trunk/arch/arm/mach-at91rm9200/devices.c b/trunk/arch/arm/mach-at91rm9200/devices.c index 4352acb88178..1cf85d231baa 100644 --- a/trunk/arch/arm/mach-at91rm9200/devices.c +++ b/trunk/arch/arm/mach-at91rm9200/devices.c @@ -13,6 +13,7 @@ #include #include +#include #include #include diff --git a/trunk/arch/arm/mach-at91rm9200/irq.c b/trunk/arch/arm/mach-at91rm9200/irq.c index dcd560dbcfb7..70f4d7ac1533 100644 --- a/trunk/arch/arm/mach-at91rm9200/irq.c +++ b/trunk/arch/arm/mach-at91rm9200/irq.c @@ -20,6 +20,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-at91rm9200/leds.c b/trunk/arch/arm/mach-at91rm9200/leds.c index 1a333730466e..28150e8905ba 100644 --- a/trunk/arch/arm/mach-at91rm9200/leds.c +++ b/trunk/arch/arm/mach-at91rm9200/leds.c @@ -9,6 +9,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-at91rm9200/time.c b/trunk/arch/arm/mach-at91rm9200/time.c index f2f080350ccb..fc2d7d5e4637 100644 --- a/trunk/arch/arm/mach-at91rm9200/time.c +++ b/trunk/arch/arm/mach-at91rm9200/time.c @@ -19,6 +19,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-clps711x/fortunet.c b/trunk/arch/arm/mach-clps711x/fortunet.c index 3792ab4f0996..ff26a85aa4ba 100644 --- a/trunk/arch/arm/mach-clps711x/fortunet.c +++ b/trunk/arch/arm/mach-clps711x/fortunet.c @@ -19,6 +19,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-clps711x/p720t.c b/trunk/arch/arm/mach-clps711x/p720t.c index c8ecd2480c27..9ba45f4d5a7e 100644 --- a/trunk/arch/arm/mach-clps711x/p720t.c +++ b/trunk/arch/arm/mach-clps711x/p720t.c @@ -17,6 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-ep93xx/core.c b/trunk/arch/arm/mach-ep93xx/core.c index 26df3b666b56..1fe73c0a9d01 100644 --- a/trunk/arch/arm/mach-ep93xx/core.c +++ b/trunk/arch/arm/mach-ep93xx/core.c @@ -13,6 +13,7 @@ * your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-ep93xx/gesbc9312.c b/trunk/arch/arm/mach-ep93xx/gesbc9312.c index e760fd4f3655..2c28d66d260e 100644 --- a/trunk/arch/arm/mach-ep93xx/gesbc9312.c +++ b/trunk/arch/arm/mach-ep93xx/gesbc9312.c @@ -10,6 +10,7 @@ * your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-ep93xx/ts72xx.c b/trunk/arch/arm/mach-ep93xx/ts72xx.c index df315f2e9beb..0b3b875b1875 100644 --- a/trunk/arch/arm/mach-ep93xx/ts72xx.c +++ b/trunk/arch/arm/mach-ep93xx/ts72xx.c @@ -10,6 +10,7 @@ * your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-footbridge/common.c b/trunk/arch/arm/mach-footbridge/common.c index af900f4755a4..bbe6e4a0bf6a 100644 --- a/trunk/arch/arm/mach-footbridge/common.c +++ b/trunk/arch/arm/mach-footbridge/common.c @@ -7,6 +7,7 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-footbridge/dma.c b/trunk/arch/arm/mach-footbridge/dma.c index 1f9b09b8ed88..7a54578b51af 100644 --- a/trunk/arch/arm/mach-footbridge/dma.c +++ b/trunk/arch/arm/mach-footbridge/dma.c @@ -10,6 +10,7 @@ * 17-Mar-1999 RMK Allow any EBSA285-like architecture to have * ISA DMA controllers. */ +#include #include #include diff --git a/trunk/arch/arm/mach-footbridge/ebsa285-leds.c b/trunk/arch/arm/mach-footbridge/ebsa285-leds.c index a64e22226515..2c7c3630401b 100644 --- a/trunk/arch/arm/mach-footbridge/ebsa285-leds.c +++ b/trunk/arch/arm/mach-footbridge/ebsa285-leds.c @@ -16,6 +16,7 @@ * Changelog: * 02-05-1999 RMK Various cleanups */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-footbridge/netwinder-hw.c b/trunk/arch/arm/mach-footbridge/netwinder-hw.c index a1f381c64a30..229bf0585e40 100644 --- a/trunk/arch/arm/mach-footbridge/netwinder-hw.c +++ b/trunk/arch/arm/mach-footbridge/netwinder-hw.c @@ -5,6 +5,7 @@ * * Copyright (C) 1998, 1999 Russell King, Phil Blundell */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-footbridge/netwinder-leds.c b/trunk/arch/arm/mach-footbridge/netwinder-leds.c index 8e9cac5a213b..7451fc07b85a 100644 --- a/trunk/arch/arm/mach-footbridge/netwinder-leds.c +++ b/trunk/arch/arm/mach-footbridge/netwinder-leds.c @@ -16,6 +16,7 @@ * Changelog: * 02-05-1999 RMK Various cleanups */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-h720x/h7201-eval.c b/trunk/arch/arm/mach-h720x/h7201-eval.c index 407cd4c0aa8a..193f968edac3 100644 --- a/trunk/arch/arm/mach-h720x/h7201-eval.c +++ b/trunk/arch/arm/mach-h720x/h7201-eval.c @@ -13,6 +13,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-h720x/h7202-eval.c b/trunk/arch/arm/mach-h720x/h7202-eval.c index bf2acdce62e5..36266896979c 100644 --- a/trunk/arch/arm/mach-h720x/h7202-eval.c +++ b/trunk/arch/arm/mach-h720x/h7202-eval.c @@ -13,6 +13,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-imx/time.c b/trunk/arch/arm/mach-imx/time.c index 294b1c450f21..ea805bfa5e54 100644 --- a/trunk/arch/arm/mach-imx/time.c +++ b/trunk/arch/arm/mach-imx/time.c @@ -8,6 +8,7 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-integrator/pci_v3.c b/trunk/arch/arm/mach-integrator/pci_v3.c index f9043592e299..229a63a525cd 100644 --- a/trunk/arch/arm/mach-integrator/pci_v3.c +++ b/trunk/arch/arm/mach-integrator/pci_v3.c @@ -20,6 +20,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-iop3xx/common.c b/trunk/arch/arm/mach-iop3xx/common.c index d7f50e57e753..fdeeef489a73 100644 --- a/trunk/arch/arm/mach-iop3xx/common.c +++ b/trunk/arch/arm/mach-iop3xx/common.c @@ -12,6 +12,7 @@ * warranty of any kind, whether express or implied. */ +#include #include #include diff --git a/trunk/arch/arm/mach-iop3xx/iop321-setup.c b/trunk/arch/arm/mach-iop3xx/iop321-setup.c index b6d096903c4a..0ebbcb20c6ae 100644 --- a/trunk/arch/arm/mach-iop3xx/iop321-setup.c +++ b/trunk/arch/arm/mach-iop3xx/iop321-setup.c @@ -12,6 +12,7 @@ */ #include #include +#include #include #include #include diff --git a/trunk/arch/arm/mach-iop3xx/iop331-setup.c b/trunk/arch/arm/mach-iop3xx/iop331-setup.c index 3cc98d892ad4..7b7b6eea3846 100644 --- a/trunk/arch/arm/mach-iop3xx/iop331-setup.c +++ b/trunk/arch/arm/mach-iop3xx/iop331-setup.c @@ -11,6 +11,7 @@ */ #include #include +#include #include #include #include diff --git a/trunk/arch/arm/mach-ixp2000/core.c b/trunk/arch/arm/mach-ixp2000/core.c index 3cfc5aab8259..ebe4391dd7f9 100644 --- a/trunk/arch/arm/mach-ixp2000/core.c +++ b/trunk/arch/arm/mach-ixp2000/core.c @@ -14,6 +14,7 @@ * warranty of any kind, whether express or implied. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-ixp2000/enp2611.c b/trunk/arch/arm/mach-ixp2000/enp2611.c index ac29298c5d3f..52fac89e95b5 100644 --- a/trunk/arch/arm/mach-ixp2000/enp2611.c +++ b/trunk/arch/arm/mach-ixp2000/enp2611.c @@ -18,6 +18,7 @@ * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-ixp2000/ixdp2400.c b/trunk/arch/arm/mach-ixp2000/ixdp2400.c index a6f14801872d..09101271298e 100644 --- a/trunk/arch/arm/mach-ixp2000/ixdp2400.c +++ b/trunk/arch/arm/mach-ixp2000/ixdp2400.c @@ -14,6 +14,7 @@ * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-ixp2000/ixdp2800.c b/trunk/arch/arm/mach-ixp2000/ixdp2800.c index 91d36d91dac0..076e3f8acc96 100644 --- a/trunk/arch/arm/mach-ixp2000/ixdp2800.c +++ b/trunk/arch/arm/mach-ixp2000/ixdp2800.c @@ -14,6 +14,7 @@ * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-ixp2000/ixdp2x00.c b/trunk/arch/arm/mach-ixp2000/ixdp2x00.c index 9b8ded259807..d628da56b4bc 100644 --- a/trunk/arch/arm/mach-ixp2000/ixdp2x00.c +++ b/trunk/arch/arm/mach-ixp2000/ixdp2x00.c @@ -14,6 +14,7 @@ * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-ixp2000/ixdp2x01.c b/trunk/arch/arm/mach-ixp2000/ixdp2x01.c index 8477ae1d8f72..66915282a463 100644 --- a/trunk/arch/arm/mach-ixp2000/ixdp2x01.c +++ b/trunk/arch/arm/mach-ixp2000/ixdp2x01.c @@ -15,6 +15,7 @@ * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-ixp23xx/core.c b/trunk/arch/arm/mach-ixp23xx/core.c index 82ad6ef90a38..051e3d70026e 100644 --- a/trunk/arch/arm/mach-ixp23xx/core.c +++ b/trunk/arch/arm/mach-ixp23xx/core.c @@ -14,6 +14,7 @@ * warranty of any kind, whether express or implied. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-ixp23xx/espresso.c b/trunk/arch/arm/mach-ixp23xx/espresso.c index 7a85ced56718..357351fbb1e2 100644 --- a/trunk/arch/arm/mach-ixp23xx/espresso.c +++ b/trunk/arch/arm/mach-ixp23xx/espresso.c @@ -10,6 +10,7 @@ * warranty of any kind, whether express or implied. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-ixp23xx/ixdp2351.c b/trunk/arch/arm/mach-ixp23xx/ixdp2351.c index bba9d9f08691..e0886871cc77 100644 --- a/trunk/arch/arm/mach-ixp23xx/ixdp2351.c +++ b/trunk/arch/arm/mach-ixp23xx/ixdp2351.c @@ -14,6 +14,7 @@ * warranty of any kind, whether express or implied. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-ixp23xx/pci.c b/trunk/arch/arm/mach-ixp23xx/pci.c index 3b34fa35e36b..ac72f94c5b4d 100644 --- a/trunk/arch/arm/mach-ixp23xx/pci.c +++ b/trunk/arch/arm/mach-ixp23xx/pci.c @@ -16,6 +16,7 @@ * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-ixp23xx/roadrunner.c b/trunk/arch/arm/mach-ixp23xx/roadrunner.c index d06e21b70de5..92ad18f41251 100644 --- a/trunk/arch/arm/mach-ixp23xx/roadrunner.c +++ b/trunk/arch/arm/mach-ixp23xx/roadrunner.c @@ -14,6 +14,7 @@ * warranty of any kind, whether express or implied. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-ixp4xx/common.c b/trunk/arch/arm/mach-ixp4xx/common.c index 13c7c629d037..bf25a76e9bdf 100644 --- a/trunk/arch/arm/mach-ixp4xx/common.c +++ b/trunk/arch/arm/mach-ixp4xx/common.c @@ -13,6 +13,7 @@ * warranty of any kind, whether express or implied. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-ixp4xx/ixdp425-pci.c b/trunk/arch/arm/mach-ixp4xx/ixdp425-pci.c index 8b8ca80c9449..da415d5d7f37 100644 --- a/trunk/arch/arm/mach-ixp4xx/ixdp425-pci.c +++ b/trunk/arch/arm/mach-ixp4xx/ixdp425-pci.c @@ -15,6 +15,7 @@ */ #include +#include #include #include #include diff --git a/trunk/arch/arm/mach-ixp4xx/nas100d-pci.c b/trunk/arch/arm/mach-ixp4xx/nas100d-pci.c index 2d3b770d9e82..26b7c001ff64 100644 --- a/trunk/arch/arm/mach-ixp4xx/nas100d-pci.c +++ b/trunk/arch/arm/mach-ixp4xx/nas100d-pci.c @@ -15,6 +15,7 @@ * */ +#include #include #include diff --git a/trunk/arch/arm/mach-ixp4xx/nslu2-pci.c b/trunk/arch/arm/mach-ixp4xx/nslu2-pci.c index 0de639d6e60a..ece860444d5b 100644 --- a/trunk/arch/arm/mach-ixp4xx/nslu2-pci.c +++ b/trunk/arch/arm/mach-ixp4xx/nslu2-pci.c @@ -15,6 +15,7 @@ * */ +#include #include #include diff --git a/trunk/arch/arm/mach-lh7a40x/time.c b/trunk/arch/arm/mach-lh7a40x/time.c index 1919835d9610..ef9af375fcc4 100644 --- a/trunk/arch/arm/mach-lh7a40x/time.c +++ b/trunk/arch/arm/mach-lh7a40x/time.c @@ -8,6 +8,7 @@ * version 2 as published by the Free Software Foundation. * */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-omap1/board-h3.c b/trunk/arch/arm/mach-omap1/board-h3.c index 7b206116cd03..4b8d0ec73cb7 100644 --- a/trunk/arch/arm/mach-omap1/board-h3.c +++ b/trunk/arch/arm/mach-omap1/board-h3.c @@ -14,6 +14,7 @@ * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-omap1/devices.c b/trunk/arch/arm/mach-omap1/devices.c index a611c3b63954..847329cafc5c 100644 --- a/trunk/arch/arm/mach-omap1/devices.c +++ b/trunk/arch/arm/mach-omap1/devices.c @@ -9,6 +9,7 @@ * (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-omap1/fpga.c b/trunk/arch/arm/mach-omap1/fpga.c index 880cd2d8f4aa..aca2a120813a 100644 --- a/trunk/arch/arm/mach-omap1/fpga.c +++ b/trunk/arch/arm/mach-omap1/fpga.c @@ -16,6 +16,7 @@ * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-omap1/id.c b/trunk/arch/arm/mach-omap1/id.c index da13c3e82850..5c637c048368 100644 --- a/trunk/arch/arm/mach-omap1/id.c +++ b/trunk/arch/arm/mach-omap1/id.c @@ -11,6 +11,7 @@ * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-omap1/io.c b/trunk/arch/arm/mach-omap1/io.c index fab8b0b27cfb..be3a2a4ee2b8 100644 --- a/trunk/arch/arm/mach-omap1/io.c +++ b/trunk/arch/arm/mach-omap1/io.c @@ -8,6 +8,7 @@ * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-omap1/irq.c b/trunk/arch/arm/mach-omap1/irq.c index 9e039845b50e..a0431c00fa81 100644 --- a/trunk/arch/arm/mach-omap1/irq.c +++ b/trunk/arch/arm/mach-omap1/irq.c @@ -36,6 +36,7 @@ * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-omap1/leds-h2p2-debug.c b/trunk/arch/arm/mach-omap1/leds-h2p2-debug.c index 8976fbb21f7c..650650815915 100644 --- a/trunk/arch/arm/mach-omap1/leds-h2p2-debug.c +++ b/trunk/arch/arm/mach-omap1/leds-h2p2-debug.c @@ -9,6 +9,7 @@ * The "surfer" expansion board and H2 sample board also have two-color * green+red LEDs (in parallel), used here for timer and idle indicators. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-omap1/leds-innovator.c b/trunk/arch/arm/mach-omap1/leds-innovator.c index a0cd001ac39a..c8ffd1ddcded 100644 --- a/trunk/arch/arm/mach-omap1/leds-innovator.c +++ b/trunk/arch/arm/mach-omap1/leds-innovator.c @@ -1,6 +1,7 @@ /* * linux/arch/arm/mach-omap1/leds-innovator.c */ +#include #include #include diff --git a/trunk/arch/arm/mach-omap1/leds-osk.c b/trunk/arch/arm/mach-omap1/leds-osk.c index 3b29e59b0e6f..2c8bda847c18 100644 --- a/trunk/arch/arm/mach-omap1/leds-osk.c +++ b/trunk/arch/arm/mach-omap1/leds-osk.c @@ -3,6 +3,7 @@ * * LED driver for OSK, and optionally Mistral QVGA, boards */ +#include #include #include diff --git a/trunk/arch/arm/mach-omap1/mux.c b/trunk/arch/arm/mach-omap1/mux.c index fa74ef7af15f..10fe0b3efcac 100644 --- a/trunk/arch/arm/mach-omap1/mux.c +++ b/trunk/arch/arm/mach-omap1/mux.c @@ -22,6 +22,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-omap1/serial.c b/trunk/arch/arm/mach-omap1/serial.c index 56319742aa1b..9b4cd698bec8 100644 --- a/trunk/arch/arm/mach-omap1/serial.c +++ b/trunk/arch/arm/mach-omap1/serial.c @@ -8,6 +8,7 @@ * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-omap1/sleep.S b/trunk/arch/arm/mach-omap1/sleep.S index abef33d10f01..e58295e2d3b2 100644 --- a/trunk/arch/arm/mach-omap1/sleep.S +++ b/trunk/arch/arm/mach-omap1/sleep.S @@ -32,6 +32,7 @@ * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-omap1/time.c b/trunk/arch/arm/mach-omap1/time.c index c2d3205bc592..a85fe6066bc4 100644 --- a/trunk/arch/arm/mach-omap1/time.c +++ b/trunk/arch/arm/mach-omap1/time.c @@ -33,6 +33,7 @@ * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-omap2/clock.c b/trunk/arch/arm/mach-omap2/clock.c index 7edf0f69da1e..72eb4bf571ac 100644 --- a/trunk/arch/arm/mach-omap2/clock.c +++ b/trunk/arch/arm/mach-omap2/clock.c @@ -15,6 +15,7 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-omap2/devices.c b/trunk/arch/arm/mach-omap2/devices.c index 4842ffe26705..fb7f91da1aad 100644 --- a/trunk/arch/arm/mach-omap2/devices.c +++ b/trunk/arch/arm/mach-omap2/devices.c @@ -9,6 +9,7 @@ * (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-omap2/id.c b/trunk/arch/arm/mach-omap2/id.c index 871ace4fccb8..76187300f2b6 100644 --- a/trunk/arch/arm/mach-omap2/id.c +++ b/trunk/arch/arm/mach-omap2/id.c @@ -11,6 +11,7 @@ * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-omap2/io.c b/trunk/arch/arm/mach-omap2/io.c index 20dd6e74e91d..7d5711611f2f 100644 --- a/trunk/arch/arm/mach-omap2/io.c +++ b/trunk/arch/arm/mach-omap2/io.c @@ -11,6 +11,7 @@ * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-omap2/irq.c b/trunk/arch/arm/mach-omap2/irq.c index 3eed6a737bf8..d7baff675cfe 100644 --- a/trunk/arch/arm/mach-omap2/irq.c +++ b/trunk/arch/arm/mach-omap2/irq.c @@ -12,6 +12,7 @@ */ #include #include +#include #include #include #include diff --git a/trunk/arch/arm/mach-omap2/memory.c b/trunk/arch/arm/mach-omap2/memory.c index 85cbc2a2e663..1d925d69fc35 100644 --- a/trunk/arch/arm/mach-omap2/memory.c +++ b/trunk/arch/arm/mach-omap2/memory.c @@ -14,6 +14,7 @@ * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-omap2/mux.c b/trunk/arch/arm/mach-omap2/mux.c index 4c5f2c04883e..1197dc38c20a 100644 --- a/trunk/arch/arm/mach-omap2/mux.c +++ b/trunk/arch/arm/mach-omap2/mux.c @@ -22,6 +22,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-omap2/prcm.c b/trunk/arch/arm/mach-omap2/prcm.c index c2bf57ef6825..8893479dc7e0 100644 --- a/trunk/arch/arm/mach-omap2/prcm.c +++ b/trunk/arch/arm/mach-omap2/prcm.c @@ -13,6 +13,7 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-omap2/sleep.S b/trunk/arch/arm/mach-omap2/sleep.S index 16247d557853..00299cbeb911 100644 --- a/trunk/arch/arm/mach-omap2/sleep.S +++ b/trunk/arch/arm/mach-omap2/sleep.S @@ -21,6 +21,7 @@ * MA 02111-1307 USA */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-omap2/sram-fn.S b/trunk/arch/arm/mach-omap2/sram-fn.S index a5ef7f611da9..d261e4ff4d9b 100644 --- a/trunk/arch/arm/mach-omap2/sram-fn.S +++ b/trunk/arch/arm/mach-omap2/sram-fn.S @@ -22,6 +22,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-pxa/leds-idp.c b/trunk/arch/arm/mach-pxa/leds-idp.c index 38aa9270540e..5eba6ea0b0f7 100644 --- a/trunk/arch/arm/mach-pxa/leds-idp.c +++ b/trunk/arch/arm/mach-pxa/leds-idp.c @@ -12,6 +12,7 @@ */ +#include #include #include diff --git a/trunk/arch/arm/mach-pxa/leds-lubbock.c b/trunk/arch/arm/mach-pxa/leds-lubbock.c index afbc6698e27c..05cf56059a0f 100644 --- a/trunk/arch/arm/mach-pxa/leds-lubbock.c +++ b/trunk/arch/arm/mach-pxa/leds-lubbock.c @@ -11,6 +11,7 @@ * namespace collision. Mostly adapted the Mainstone version. */ +#include #include #include diff --git a/trunk/arch/arm/mach-pxa/leds-mainstone.c b/trunk/arch/arm/mach-pxa/leds-mainstone.c index 065293eb0d82..c06d3d7a8dd4 100644 --- a/trunk/arch/arm/mach-pxa/leds-mainstone.c +++ b/trunk/arch/arm/mach-pxa/leds-mainstone.c @@ -10,6 +10,7 @@ * published by the Free Software Foundation. */ +#include #include #include diff --git a/trunk/arch/arm/mach-pxa/pm.c b/trunk/arch/arm/mach-pxa/pm.c index 2112c414f0e2..852ea72d8c80 100644 --- a/trunk/arch/arm/mach-pxa/pm.c +++ b/trunk/arch/arm/mach-pxa/pm.c @@ -10,6 +10,7 @@ * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-pxa/pxa25x.c b/trunk/arch/arm/mach-pxa/pxa25x.c index c1f21739bf71..573a5758e781 100644 --- a/trunk/arch/arm/mach-pxa/pxa25x.c +++ b/trunk/arch/arm/mach-pxa/pxa25x.c @@ -16,6 +16,7 @@ * initialization stuff for PXA machines which can be overridden later if * need be. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-pxa/pxa27x.c b/trunk/arch/arm/mach-pxa/pxa27x.c index 74eeada1e2fc..3baa70819f24 100644 --- a/trunk/arch/arm/mach-pxa/pxa27x.c +++ b/trunk/arch/arm/mach-pxa/pxa27x.c @@ -11,6 +11,7 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-pxa/sleep.S b/trunk/arch/arm/mach-pxa/sleep.S index 15874b360e51..0650bed3b96e 100644 --- a/trunk/arch/arm/mach-pxa/sleep.S +++ b/trunk/arch/arm/mach-pxa/sleep.S @@ -11,6 +11,7 @@ * modify it under the terms of the GNU General Public License. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-pxa/standby.S b/trunk/arch/arm/mach-pxa/standby.S index d774430d02c0..6f6dbbd08021 100644 --- a/trunk/arch/arm/mach-pxa/standby.S +++ b/trunk/arch/arm/mach-pxa/standby.S @@ -9,6 +9,7 @@ * or implied. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-pxa/time.c b/trunk/arch/arm/mach-pxa/time.c index 1ef85fcc6c06..b9b2057349eb 100644 --- a/trunk/arch/arm/mach-pxa/time.c +++ b/trunk/arch/arm/mach-pxa/time.c @@ -10,6 +10,7 @@ * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-realview/core.c b/trunk/arch/arm/mach-realview/core.c index eb09d3859d6d..d13270c5d7cd 100644 --- a/trunk/arch/arm/mach-realview/core.c +++ b/trunk/arch/arm/mach-realview/core.c @@ -18,6 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-realview/realview_eb.c b/trunk/arch/arm/mach-realview/realview_eb.c index 84a959530fb6..693fb1e396e0 100644 --- a/trunk/arch/arm/mach-realview/realview_eb.c +++ b/trunk/arch/arm/mach-realview/realview_eb.c @@ -19,6 +19,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-s3c2410/devs.h b/trunk/arch/arm/mach-s3c2410/devs.h index 726e2eaf8797..fa124ed920e0 100644 --- a/trunk/arch/arm/mach-s3c2410/devs.h +++ b/trunk/arch/arm/mach-s3c2410/devs.h @@ -14,6 +14,7 @@ * 27-Aug-2004 BJD Added timers 0 through 3 * 10-Feb-2005 BJD Added camera from guillaume.gourat@nexvision.tv */ +#include #include struct s3c24xx_uart_resources { diff --git a/trunk/arch/arm/mach-s3c2410/dma.c b/trunk/arch/arm/mach-s3c2410/dma.c index b0aaf4328732..4dbd8e758ea6 100644 --- a/trunk/arch/arm/mach-s3c2410/dma.c +++ b/trunk/arch/arm/mach-s3c2410/dma.c @@ -31,6 +31,7 @@ * possible DMA function */ +#include #ifdef CONFIG_S3C2410_DMA_DEBUG #define DEBUG diff --git a/trunk/arch/arm/mach-s3c2410/pm.c b/trunk/arch/arm/mach-s3c2410/pm.c index a589fe76d915..43e9a550a203 100644 --- a/trunk/arch/arm/mach-s3c2410/pm.c +++ b/trunk/arch/arm/mach-s3c2410/pm.c @@ -29,6 +29,7 @@ * 10-Mar-2005 LCVR Changed S3C2410_VA_UART to S3C24XX_VA_UART */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-s3c2410/sleep.S b/trunk/arch/arm/mach-s3c2410/sleep.S index a7561a79fc82..dc27167f4d59 100644 --- a/trunk/arch/arm/mach-s3c2410/sleep.S +++ b/trunk/arch/arm/mach-s3c2410/sleep.S @@ -24,6 +24,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-s3c2410/time.c b/trunk/arch/arm/mach-s3c2410/time.c index 47387c5b9723..9d7b799ea4a4 100644 --- a/trunk/arch/arm/mach-s3c2410/time.c +++ b/trunk/arch/arm/mach-s3c2410/time.c @@ -18,6 +18,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-sa1100/assabet.c b/trunk/arch/arm/mach-sa1100/assabet.c index be06d668a3c9..c58f12ba7a93 100644 --- a/trunk/arch/arm/mach-sa1100/assabet.c +++ b/trunk/arch/arm/mach-sa1100/assabet.c @@ -9,6 +9,7 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-sa1100/cerf.c b/trunk/arch/arm/mach-sa1100/cerf.c index e0f6d57b5065..8269a9ef9afe 100644 --- a/trunk/arch/arm/mach-sa1100/cerf.c +++ b/trunk/arch/arm/mach-sa1100/cerf.c @@ -10,6 +10,7 @@ * Jan-2004 : Removed io map for flash [FB] */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-sa1100/collie.c b/trunk/arch/arm/mach-sa1100/collie.c index a6bab50dab61..676b5c5b75bb 100644 --- a/trunk/arch/arm/mach-sa1100/collie.c +++ b/trunk/arch/arm/mach-sa1100/collie.c @@ -17,6 +17,7 @@ * 04-16-2001 Lineo Japan,Inc. ... */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-sa1100/generic.c b/trunk/arch/arm/mach-sa1100/generic.c index 4575f316e141..9ea71551fc04 100644 --- a/trunk/arch/arm/mach-sa1100/generic.c +++ b/trunk/arch/arm/mach-sa1100/generic.c @@ -9,6 +9,7 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-sa1100/h3600.c b/trunk/arch/arm/mach-sa1100/h3600.c index e727ba87b9f2..b04d92271020 100644 --- a/trunk/arch/arm/mach-sa1100/h3600.c +++ b/trunk/arch/arm/mach-sa1100/h3600.c @@ -19,6 +19,7 @@ * and abstracted EGPIO interface. * */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-sa1100/leds-assabet.c b/trunk/arch/arm/mach-sa1100/leds-assabet.c index ee9788989875..e9aa9dff211a 100644 --- a/trunk/arch/arm/mach-sa1100/leds-assabet.c +++ b/trunk/arch/arm/mach-sa1100/leds-assabet.c @@ -9,6 +9,7 @@ * - Green - toggles state every 50 timer interrupts * - Red - on if system is not idle */ +#include #include #include diff --git a/trunk/arch/arm/mach-sa1100/leds-badge4.c b/trunk/arch/arm/mach-sa1100/leds-badge4.c index 280929be972d..0a8f87bb6c4f 100644 --- a/trunk/arch/arm/mach-sa1100/leds-badge4.c +++ b/trunk/arch/arm/mach-sa1100/leds-badge4.c @@ -10,6 +10,7 @@ * */ +#include #include #include diff --git a/trunk/arch/arm/mach-sa1100/leds-cerf.c b/trunk/arch/arm/mach-sa1100/leds-cerf.c index f38eeddbef10..f6635a2d0e83 100644 --- a/trunk/arch/arm/mach-sa1100/leds-cerf.c +++ b/trunk/arch/arm/mach-sa1100/leds-cerf.c @@ -3,6 +3,7 @@ * * Author: ??? */ +#include #include #include diff --git a/trunk/arch/arm/mach-sa1100/leds-hackkit.c b/trunk/arch/arm/mach-sa1100/leds-hackkit.c index 7e91cc90b5ae..2e5fa14aa4eb 100644 --- a/trunk/arch/arm/mach-sa1100/leds-hackkit.c +++ b/trunk/arch/arm/mach-sa1100/leds-hackkit.c @@ -9,6 +9,7 @@ * The HackKit has two leds (GPIO 22/23). The red led (gpio 22) is used * as cpu led, the green one is used as timer led. */ +#include #include #include diff --git a/trunk/arch/arm/mach-sa1100/leds-lart.c b/trunk/arch/arm/mach-sa1100/leds-lart.c index 2d27d76cfc6b..187501490713 100644 --- a/trunk/arch/arm/mach-sa1100/leds-lart.c +++ b/trunk/arch/arm/mach-sa1100/leds-lart.c @@ -9,6 +9,7 @@ * time, but in that case the timer events will still dictate the * pace of the LED. */ +#include #include #include diff --git a/trunk/arch/arm/mach-sa1100/leds-simpad.c b/trunk/arch/arm/mach-sa1100/leds-simpad.c index def090a87385..6a27a2d32206 100644 --- a/trunk/arch/arm/mach-sa1100/leds-simpad.c +++ b/trunk/arch/arm/mach-sa1100/leds-simpad.c @@ -3,6 +3,7 @@ * * Author: Juergen Messerer */ +#include #include #include diff --git a/trunk/arch/arm/mach-sa1100/shannon.c b/trunk/arch/arm/mach-sa1100/shannon.c index 8acab7b1e4c2..5aafe0b56992 100644 --- a/trunk/arch/arm/mach-sa1100/shannon.c +++ b/trunk/arch/arm/mach-sa1100/shannon.c @@ -2,6 +2,7 @@ * linux/arch/arm/mach-sa1100/shannon.c */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-sa1100/simpad.c b/trunk/arch/arm/mach-sa1100/simpad.c index a9ae1b581aa6..d2c23b2c34d1 100644 --- a/trunk/arch/arm/mach-sa1100/simpad.c +++ b/trunk/arch/arm/mach-sa1100/simpad.c @@ -2,6 +2,7 @@ * linux/arch/arm/mach-sa1100/simpad.c */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-shark/dma.c b/trunk/arch/arm/mach-shark/dma.c index 6774b8d5d13d..835989a02918 100644 --- a/trunk/arch/arm/mach-shark/dma.c +++ b/trunk/arch/arm/mach-shark/dma.c @@ -8,6 +8,7 @@ * Copyright (C) 1998 Phil Blundell */ +#include #include #include diff --git a/trunk/arch/arm/mach-shark/leds.c b/trunk/arch/arm/mach-shark/leds.c index 7cd86d357a3c..7bdeb70a0c10 100644 --- a/trunk/arch/arm/mach-shark/leds.c +++ b/trunk/arch/arm/mach-shark/leds.c @@ -15,6 +15,7 @@ * * Changelog: */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-versatile/core.c b/trunk/arch/arm/mach-versatile/core.c index 08de8490fb69..cebd48a3dae4 100644 --- a/trunk/arch/arm/mach-versatile/core.c +++ b/trunk/arch/arm/mach-versatile/core.c @@ -18,6 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-versatile/pci.c b/trunk/arch/arm/mach-versatile/pci.c index 41b370090b60..722fbabc9cfb 100644 --- a/trunk/arch/arm/mach-versatile/pci.c +++ b/trunk/arch/arm/mach-versatile/pci.c @@ -14,6 +14,7 @@ * 14/04/2005 Initial version, colin.king@philips.com * */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-versatile/versatile_ab.c b/trunk/arch/arm/mach-versatile/versatile_ab.c index b257ef78ef45..1eb596782078 100644 --- a/trunk/arch/arm/mach-versatile/versatile_ab.c +++ b/trunk/arch/arm/mach-versatile/versatile_ab.c @@ -19,6 +19,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include #include #include diff --git a/trunk/arch/arm/mach-versatile/versatile_pb.c b/trunk/arch/arm/mach-versatile/versatile_pb.c index 503725b166fc..f17ab4fb548a 100644 --- a/trunk/arch/arm/mach-versatile/versatile_pb.c +++ b/trunk/arch/arm/mach-versatile/versatile_pb.c @@ -19,6 +19,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include #include #include diff --git a/trunk/arch/arm/mm/alignment.c b/trunk/arch/arm/mm/alignment.c index e0d21bbbe7d7..705c98921c37 100644 --- a/trunk/arch/arm/mm/alignment.c +++ b/trunk/arch/arm/mm/alignment.c @@ -11,6 +11,7 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/arch/arm/mm/cache-v4wb.S b/trunk/arch/arm/mm/cache-v4wb.S index 2ebc1b3bf856..54e3c5bb5186 100644 --- a/trunk/arch/arm/mm/cache-v4wb.S +++ b/trunk/arch/arm/mm/cache-v4wb.S @@ -7,6 +7,7 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/arch/arm/mm/fault.c b/trunk/arch/arm/mm/fault.c index c5e0622c7765..4a884baf3b9c 100644 --- a/trunk/arch/arm/mm/fault.c +++ b/trunk/arch/arm/mm/fault.c @@ -8,6 +8,7 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/arch/arm/mm/init.c b/trunk/arch/arm/mm/init.c index fe3f7f625008..989fd681c822 100644 --- a/trunk/arch/arm/mm/init.c +++ b/trunk/arch/arm/mm/init.c @@ -7,6 +7,7 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/arch/arm/mm/mm-armv.c b/trunk/arch/arm/mm/mm-armv.c index b0242c6ea066..95273de4f772 100644 --- a/trunk/arch/arm/mm/mm-armv.c +++ b/trunk/arch/arm/mm/mm-armv.c @@ -9,6 +9,7 @@ * * Page table sludge for ARM v3 and v4 processor architectures. */ +#include #include #include #include @@ -226,7 +227,7 @@ void free_pgd_slow(pgd_t *pgd) pte = pmd_page(*pmd); pmd_clear(pmd); - dec_zone_page_state(virt_to_page((unsigned long *)pgd), NR_PAGETABLE); + dec_page_state(nr_page_table_pages); pte_lock_deinit(pte); pte_free(pte); pmd_free(pmd); diff --git a/trunk/arch/arm/mm/mmap.c b/trunk/arch/arm/mm/mmap.c index 29e54807c5bc..3de7f84b53c2 100644 --- a/trunk/arch/arm/mm/mmap.c +++ b/trunk/arch/arm/mm/mmap.c @@ -1,6 +1,7 @@ /* * linux/arch/arm/mm/mmap.c */ +#include #include #include #include diff --git a/trunk/arch/arm/mm/proc-arm1020.S b/trunk/arch/arm/mm/proc-arm1020.S index cc609666df05..b9abbafca812 100644 --- a/trunk/arch/arm/mm/proc-arm1020.S +++ b/trunk/arch/arm/mm/proc-arm1020.S @@ -26,6 +26,7 @@ * CONFIG_CPU_ARM1020_CPU_IDLE -> nohlt */ #include +#include #include #include #include diff --git a/trunk/arch/arm/mm/proc-arm1020e.S b/trunk/arch/arm/mm/proc-arm1020e.S index 117a946c28c8..bcd5ee022e00 100644 --- a/trunk/arch/arm/mm/proc-arm1020e.S +++ b/trunk/arch/arm/mm/proc-arm1020e.S @@ -26,6 +26,7 @@ * CONFIG_CPU_ARM1020_CPU_IDLE -> nohlt */ #include +#include #include #include #include diff --git a/trunk/arch/arm/mm/proc-arm1022.S b/trunk/arch/arm/mm/proc-arm1022.S index 39b7c102180a..b0ccff4fadd2 100644 --- a/trunk/arch/arm/mm/proc-arm1022.S +++ b/trunk/arch/arm/mm/proc-arm1022.S @@ -15,6 +15,7 @@ * functions on the ARM1022E. */ #include +#include #include #include #include diff --git a/trunk/arch/arm/mm/proc-arm1026.S b/trunk/arch/arm/mm/proc-arm1026.S index 33e1ab8eb1d6..abe850c9a641 100644 --- a/trunk/arch/arm/mm/proc-arm1026.S +++ b/trunk/arch/arm/mm/proc-arm1026.S @@ -15,6 +15,7 @@ * functions on the ARM1026EJ-S. */ #include +#include #include #include #include diff --git a/trunk/arch/arm/mm/proc-arm920.S b/trunk/arch/arm/mm/proc-arm920.S index 6f0db29ab842..31dc839ba07c 100644 --- a/trunk/arch/arm/mm/proc-arm920.S +++ b/trunk/arch/arm/mm/proc-arm920.S @@ -26,6 +26,7 @@ * CONFIG_CPU_ARM920_CPU_IDLE -> nohlt */ #include +#include #include #include #include diff --git a/trunk/arch/arm/mm/proc-arm922.S b/trunk/arch/arm/mm/proc-arm922.S index 1ad464cc7bcb..9e57c34f5c09 100644 --- a/trunk/arch/arm/mm/proc-arm922.S +++ b/trunk/arch/arm/mm/proc-arm922.S @@ -27,6 +27,7 @@ * CONFIG_CPU_ARM922_CPU_IDLE -> nohlt */ #include +#include #include #include #include diff --git a/trunk/arch/arm/mm/proc-arm925.S b/trunk/arch/arm/mm/proc-arm925.S index a55d56ce2264..8d47c9f3f931 100644 --- a/trunk/arch/arm/mm/proc-arm925.S +++ b/trunk/arch/arm/mm/proc-arm925.S @@ -50,6 +50,7 @@ */ #include +#include #include #include #include diff --git a/trunk/arch/arm/mm/proc-arm926.S b/trunk/arch/arm/mm/proc-arm926.S index 20275967663d..cb4d8f33d2a3 100644 --- a/trunk/arch/arm/mm/proc-arm926.S +++ b/trunk/arch/arm/mm/proc-arm926.S @@ -26,6 +26,7 @@ * CONFIG_CPU_ARM926_CPU_IDLE -> nohlt */ #include +#include #include #include #include diff --git a/trunk/arch/arm/nwfpe/fpa11.c b/trunk/arch/arm/nwfpe/fpa11.c index cc60acde84d9..7b3d74d73c80 100644 --- a/trunk/arch/arm/nwfpe/fpa11.c +++ b/trunk/arch/arm/nwfpe/fpa11.c @@ -26,6 +26,7 @@ #include "fpmodule.h" #include "fpmodule.inl" +#include #include #include #include diff --git a/trunk/arch/arm/nwfpe/fpa11.h b/trunk/arch/arm/nwfpe/fpa11.h index 4a4d02c09112..28cd79a451d3 100644 --- a/trunk/arch/arm/nwfpe/fpa11.h +++ b/trunk/arch/arm/nwfpe/fpa11.h @@ -31,6 +31,7 @@ */ #define GET_USERREG() ((struct pt_regs *)(THREAD_START_SP + (unsigned long)current_thread_info()) - 1) +#include #include /* includes */ diff --git a/trunk/arch/arm/nwfpe/fpa11_cpdo.c b/trunk/arch/arm/nwfpe/fpa11_cpdo.c index 2cebb1529607..4a31dfd94068 100644 --- a/trunk/arch/arm/nwfpe/fpa11_cpdo.c +++ b/trunk/arch/arm/nwfpe/fpa11_cpdo.c @@ -20,6 +20,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include "fpa11.h" #include "fpopcode.h" diff --git a/trunk/arch/arm/nwfpe/fpa11_cpdt.c b/trunk/arch/arm/nwfpe/fpa11_cpdt.c index 79f8e67cc6c1..32859fa8dcfc 100644 --- a/trunk/arch/arm/nwfpe/fpa11_cpdt.c +++ b/trunk/arch/arm/nwfpe/fpa11_cpdt.c @@ -20,6 +20,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include "fpa11.h" #include "softfloat.h" #include "fpopcode.h" diff --git a/trunk/arch/arm/nwfpe/fpa11_cprt.c b/trunk/arch/arm/nwfpe/fpa11_cprt.c index 9843dc533047..7c67023655e4 100644 --- a/trunk/arch/arm/nwfpe/fpa11_cprt.c +++ b/trunk/arch/arm/nwfpe/fpa11_cprt.c @@ -20,6 +20,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include "fpa11.h" #include "fpopcode.h" #include "fpa11.inl" diff --git a/trunk/arch/arm/nwfpe/fpmodule.c b/trunk/arch/arm/nwfpe/fpmodule.c index 4c0ab50f399a..7d977d23f026 100644 --- a/trunk/arch/arm/nwfpe/fpmodule.c +++ b/trunk/arch/arm/nwfpe/fpmodule.c @@ -24,6 +24,7 @@ #include "fpa11.h" #include +#include /* XXX */ #include diff --git a/trunk/arch/arm/nwfpe/fpopcode.c b/trunk/arch/arm/nwfpe/fpopcode.c index 922b81107585..67ff2ab08ea0 100644 --- a/trunk/arch/arm/nwfpe/fpopcode.c +++ b/trunk/arch/arm/nwfpe/fpopcode.c @@ -19,6 +19,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include "fpa11.h" #include "softfloat.h" #include "fpopcode.h" diff --git a/trunk/arch/arm/nwfpe/fpopcode.h b/trunk/arch/arm/nwfpe/fpopcode.h index ec78e3517fc9..6528e081c83f 100644 --- a/trunk/arch/arm/nwfpe/fpopcode.h +++ b/trunk/arch/arm/nwfpe/fpopcode.h @@ -23,6 +23,7 @@ #ifndef __FPOPCODE_H__ #define __FPOPCODE_H__ +#include /* ARM Floating Point Instruction Classes diff --git a/trunk/arch/arm/nwfpe/softfloat.h b/trunk/arch/arm/nwfpe/softfloat.h index e1125bc39ee4..978c699673c6 100644 --- a/trunk/arch/arm/nwfpe/softfloat.h +++ b/trunk/arch/arm/nwfpe/softfloat.h @@ -32,6 +32,7 @@ this code that are retained. #ifndef __SOFTFLOAT_H__ #define __SOFTFLOAT_H__ +#include /* ------------------------------------------------------------------------------- diff --git a/trunk/arch/arm/plat-omap/clock.c b/trunk/arch/arm/plat-omap/clock.c index c520e9dcdd8a..32ec04c58bcd 100644 --- a/trunk/arch/arm/plat-omap/clock.c +++ b/trunk/arch/arm/plat-omap/clock.c @@ -11,6 +11,7 @@ * published by the Free Software Foundation. */ #include +#include #include #include #include diff --git a/trunk/arch/arm/plat-omap/common.c b/trunk/arch/arm/plat-omap/common.c index 57b7b93674a4..adffc5a859ee 100644 --- a/trunk/arch/arm/plat-omap/common.c +++ b/trunk/arch/arm/plat-omap/common.c @@ -7,6 +7,7 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/arch/arm/plat-omap/devices.c b/trunk/arch/arm/plat-omap/devices.c index ca486c9f36b5..5d5d6eb222dd 100644 --- a/trunk/arch/arm/plat-omap/devices.c +++ b/trunk/arch/arm/plat-omap/devices.c @@ -9,6 +9,7 @@ * (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/arm/plat-omap/fb.c b/trunk/arch/arm/plat-omap/fb.c index 56acb8720f78..305e9b990b71 100644 --- a/trunk/arch/arm/plat-omap/fb.c +++ b/trunk/arch/arm/plat-omap/fb.c @@ -1,3 +1,4 @@ +#include #include #include #include diff --git a/trunk/arch/arm/plat-omap/gpio.c b/trunk/arch/arm/plat-omap/gpio.c index 418b88fbea8e..d3c8ea7eecfd 100644 --- a/trunk/arch/arm/plat-omap/gpio.c +++ b/trunk/arch/arm/plat-omap/gpio.c @@ -11,6 +11,7 @@ * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/arch/arm/plat-omap/mux.c b/trunk/arch/arm/plat-omap/mux.c index 042105ac30b8..8c1c016aa689 100644 --- a/trunk/arch/arm/plat-omap/mux.c +++ b/trunk/arch/arm/plat-omap/mux.c @@ -22,6 +22,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */ +#include #include #include #include diff --git a/trunk/arch/arm/plat-omap/ocpi.c b/trunk/arch/arm/plat-omap/ocpi.c index b5d307026c82..37792d43738b 100644 --- a/trunk/arch/arm/plat-omap/ocpi.c +++ b/trunk/arch/arm/plat-omap/ocpi.c @@ -23,6 +23,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include #include #include diff --git a/trunk/arch/arm/plat-omap/sram-fn.S b/trunk/arch/arm/plat-omap/sram-fn.S index 85cffe2c6266..66414cc8e6e3 100644 --- a/trunk/arch/arm/plat-omap/sram-fn.S +++ b/trunk/arch/arm/plat-omap/sram-fn.S @@ -8,6 +8,7 @@ * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/arch/arm/plat-omap/sram.c b/trunk/arch/arm/plat-omap/sram.c index 72ce52ce815b..b7bf09b1b412 100644 --- a/trunk/arch/arm/plat-omap/sram.c +++ b/trunk/arch/arm/plat-omap/sram.c @@ -11,6 +11,7 @@ * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/arch/arm/plat-omap/timer32k.c b/trunk/arch/arm/plat-omap/timer32k.c index 053c18132ef4..3461a6c9665c 100644 --- a/trunk/arch/arm/plat-omap/timer32k.c +++ b/trunk/arch/arm/plat-omap/timer32k.c @@ -33,6 +33,7 @@ * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/arm/plat-omap/usb.c b/trunk/arch/arm/plat-omap/usb.c index 9b815327b6a5..00afc7a8c2ab 100644 --- a/trunk/arch/arm/plat-omap/usb.c +++ b/trunk/arch/arm/plat-omap/usb.c @@ -20,6 +20,7 @@ #undef DEBUG +#include #include #include #include diff --git a/trunk/arch/arm/vfp/vfpmodule.c b/trunk/arch/arm/vfp/vfpmodule.c index 9d265d5e748c..2476f4c2e760 100644 --- a/trunk/arch/arm/vfp/vfpmodule.c +++ b/trunk/arch/arm/vfp/vfpmodule.c @@ -9,6 +9,7 @@ * published by the Free Software Foundation. */ #include +#include #include #include #include diff --git a/trunk/arch/arm26/Kconfig b/trunk/arch/arm26/Kconfig index c14fe918bc4c..cf4ebf4c274d 100644 --- a/trunk/arch/arm26/Kconfig +++ b/trunk/arch/arm26/Kconfig @@ -79,7 +79,7 @@ config ARCH_A5K bool "A5000" select ARCH_MAY_HAVE_PC_FDC help - Say Y here to support the Acorn A5000. + Say Y here to to support the Acorn A5000. Linux can support the internal IDE disk and CD-ROM interface, serial and parallel port, @@ -129,7 +129,7 @@ config ZBOOT_ROM_BSS config XIP_KERNEL bool "Execute In Place (XIP) kernel image" help - Select this option to create a kernel that can be programmed into + Select this option to create a kernel that can be programed into the OS ROMs. comment "At least one math emulation must be selected" @@ -140,7 +140,7 @@ config FPE_NWFPE Say Y to include the NWFPE floating point emulator in the kernel. This is necessary to run most binaries. Linux does not currently support floating point hardware so you need to say Y here even if - your machine has an FPA or floating point co-processor module. + your machine has an FPA or floating point co-processor podule. It is also possible to say M to build the emulator as a module (nwfpe) or indeed to leave it out altogether. However, unless you diff --git a/trunk/arch/arm26/boot/compressed/head.S b/trunk/arch/arm26/boot/compressed/head.S index 2a2cda36d83b..0307804a6070 100644 --- a/trunk/arch/arm26/boot/compressed/head.S +++ b/trunk/arch/arm26/boot/compressed/head.S @@ -7,6 +7,7 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ +#include #include /* diff --git a/trunk/arch/arm26/kernel/armksyms.c b/trunk/arch/arm26/kernel/armksyms.c index 07907b6ecb63..9d66c27f2724 100644 --- a/trunk/arch/arm26/kernel/armksyms.c +++ b/trunk/arch/arm26/kernel/armksyms.c @@ -8,6 +8,7 @@ * published by the Free Software Foundation. */ #include +#include #include #include #include diff --git a/trunk/arch/arm26/kernel/asm-offsets.c b/trunk/arch/arm26/kernel/asm-offsets.c index 76d9d7d489a8..ac682d5fd039 100644 --- a/trunk/arch/arm26/kernel/asm-offsets.c +++ b/trunk/arch/arm26/kernel/asm-offsets.c @@ -12,6 +12,7 @@ * published by the Free Software Foundation. */ +#include #include #include diff --git a/trunk/arch/arm26/kernel/compat.c b/trunk/arch/arm26/kernel/compat.c index 21e966ff0aa7..db0310db8998 100644 --- a/trunk/arch/arm26/kernel/compat.c +++ b/trunk/arch/arm26/kernel/compat.c @@ -16,6 +16,7 @@ * the kernel for 5 years from now (2001). This will allow boot loaders * to convert to the new struct tag way. */ +#include #include #include #include diff --git a/trunk/arch/arm26/kernel/ecard.c b/trunk/arch/arm26/kernel/ecard.c index 047d0a408b9d..f2278aadac8a 100644 --- a/trunk/arch/arm26/kernel/ecard.c +++ b/trunk/arch/arm26/kernel/ecard.c @@ -24,6 +24,7 @@ */ #define ECARD_C +#include #include #include #include diff --git a/trunk/arch/arm26/kernel/fiq.c b/trunk/arch/arm26/kernel/fiq.c index c4776c96be6b..a24272b61f30 100644 --- a/trunk/arch/arm26/kernel/fiq.c +++ b/trunk/arch/arm26/kernel/fiq.c @@ -36,6 +36,7 @@ * - enables FIQ. * 6. Goto 3 */ +#include #include #include #include diff --git a/trunk/arch/arm26/kernel/head.S b/trunk/arch/arm26/kernel/head.S index 93575e0e58fe..8bfc62539ba6 100644 --- a/trunk/arch/arm26/kernel/head.S +++ b/trunk/arch/arm26/kernel/head.S @@ -10,6 +10,7 @@ * * 26-bit kernel startup code */ +#include #include #include diff --git a/trunk/arch/arm26/kernel/irq.c b/trunk/arch/arm26/kernel/irq.c index e08ba2955ec7..0934e6fba606 100644 --- a/trunk/arch/arm26/kernel/irq.c +++ b/trunk/arch/arm26/kernel/irq.c @@ -18,6 +18,7 @@ * IRQ's are in fact implemented a bit like signal handlers for the kernel. * Naturally it's not a 1:1 relation, but there are similarities. */ +#include #include #include #include diff --git a/trunk/arch/arm26/kernel/process.c b/trunk/arch/arm26/kernel/process.c index dcd81e62ff4e..386305659171 100644 --- a/trunk/arch/arm26/kernel/process.c +++ b/trunk/arch/arm26/kernel/process.c @@ -11,6 +11,7 @@ */ #include +#include #include #include #include diff --git a/trunk/arch/arm26/kernel/ptrace.c b/trunk/arch/arm26/kernel/ptrace.c index 9343889b27fe..282e24d79328 100644 --- a/trunk/arch/arm26/kernel/ptrace.c +++ b/trunk/arch/arm26/kernel/ptrace.c @@ -9,6 +9,7 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/arch/arm26/kernel/semaphore.c b/trunk/arch/arm26/kernel/semaphore.c index 5447a06db3fa..3023a53431ff 100644 --- a/trunk/arch/arm26/kernel/semaphore.c +++ b/trunk/arch/arm26/kernel/semaphore.c @@ -13,6 +13,7 @@ * published by the Free Software Foundation. */ #include +#include #include #include #include diff --git a/trunk/arch/arm26/kernel/setup.c b/trunk/arch/arm26/kernel/setup.c index 843c29fe9af5..4eb329e3828a 100644 --- a/trunk/arch/arm26/kernel/setup.c +++ b/trunk/arch/arm26/kernel/setup.c @@ -8,6 +8,7 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/arch/arm26/kernel/signal.c b/trunk/arch/arm26/kernel/signal.c index 6a8ef8da6dab..2a48c12100c0 100644 --- a/trunk/arch/arm26/kernel/signal.c +++ b/trunk/arch/arm26/kernel/signal.c @@ -10,6 +10,7 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/arch/arm26/kernel/time.c b/trunk/arch/arm26/kernel/time.c index 718de9bed950..335525339ad6 100644 --- a/trunk/arch/arm26/kernel/time.c +++ b/trunk/arch/arm26/kernel/time.c @@ -18,6 +18,7 @@ * "A Kernel Model for Precision Timekeeping" by Dave Mills */ +#include #include #include #include diff --git a/trunk/arch/arm26/kernel/traps.c b/trunk/arch/arm26/kernel/traps.c index d594fb59e945..a79de041b50e 100644 --- a/trunk/arch/arm26/kernel/traps.c +++ b/trunk/arch/arm26/kernel/traps.c @@ -15,6 +15,7 @@ */ #include +#include #include #include #include diff --git a/trunk/arch/arm26/kernel/vmlinux.lds.S b/trunk/arch/arm26/kernel/vmlinux.lds.S index 1fa39f02e07c..811a69048010 100644 --- a/trunk/arch/arm26/kernel/vmlinux.lds.S +++ b/trunk/arch/arm26/kernel/vmlinux.lds.S @@ -1,3 +1,4 @@ +#include #ifdef CONFIG_XIP_KERNEL diff --git a/trunk/arch/arm26/lib/backtrace.S b/trunk/arch/arm26/lib/backtrace.S index e27feb1e891d..d793fe4339fc 100644 --- a/trunk/arch/arm26/lib/backtrace.S +++ b/trunk/arch/arm26/lib/backtrace.S @@ -7,6 +7,7 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ +#include #include #include .text diff --git a/trunk/arch/arm26/lib/csumpartialcopyuser.S b/trunk/arch/arm26/lib/csumpartialcopyuser.S index a98eea74305a..261dd154c1a4 100644 --- a/trunk/arch/arm26/lib/csumpartialcopyuser.S +++ b/trunk/arch/arm26/lib/csumpartialcopyuser.S @@ -7,6 +7,7 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/arch/arm26/lib/kbd.c b/trunk/arch/arm26/lib/kbd.c index cb56e943e006..22d2c93aaf1a 100644 --- a/trunk/arch/arm26/lib/kbd.c +++ b/trunk/arch/arm26/lib/kbd.c @@ -1,3 +1,4 @@ +#include #include //#include #include diff --git a/trunk/arch/arm26/lib/lib1funcs.S b/trunk/arch/arm26/lib/lib1funcs.S index 0e29970b0e8a..b8f9518db871 100644 --- a/trunk/arch/arm26/lib/lib1funcs.S +++ b/trunk/arch/arm26/lib/lib1funcs.S @@ -39,6 +39,7 @@ Boston, MA 02111-1307, USA. */ #include #include #include +#include #define RET movs #define RETc(x) mov##x##s diff --git a/trunk/arch/arm26/machine/dma.c b/trunk/arch/arm26/machine/dma.c index 4402a5a1b78f..cbc7c61d5b32 100644 --- a/trunk/arch/arm26/machine/dma.c +++ b/trunk/arch/arm26/machine/dma.c @@ -10,6 +10,7 @@ * * DMA functions specific to Archimedes and A5000 architecture */ +#include #include #include diff --git a/trunk/arch/arm26/machine/irq.c b/trunk/arch/arm26/machine/irq.c index a60d543edecc..4361863f7ed2 100644 --- a/trunk/arch/arm26/machine/irq.c +++ b/trunk/arch/arm26/machine/irq.c @@ -16,6 +16,7 @@ * 08-09-2002 IM Brought up to date for 2.5 * 01-06-2003 JMA Removed arc_fiq_chip */ +#include #include #include diff --git a/trunk/arch/arm26/mm/extable.c b/trunk/arch/arm26/mm/extable.c index 38e1958d9538..2d9f5b5a78d6 100644 --- a/trunk/arch/arm26/mm/extable.c +++ b/trunk/arch/arm26/mm/extable.c @@ -2,6 +2,7 @@ * linux/arch/arm26/mm/extable.c */ +#include #include #include diff --git a/trunk/arch/arm26/mm/fault.c b/trunk/arch/arm26/mm/fault.c index 761938b56679..bd6f2db608b7 100644 --- a/trunk/arch/arm26/mm/fault.c +++ b/trunk/arch/arm26/mm/fault.c @@ -8,6 +8,7 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/arch/arm26/mm/init.c b/trunk/arch/arm26/mm/init.c index 562fac12eb95..7da8a5205678 100644 --- a/trunk/arch/arm26/mm/init.c +++ b/trunk/arch/arm26/mm/init.c @@ -7,6 +7,7 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/arch/arm26/nwfpe/fpmodule.c b/trunk/arch/arm26/nwfpe/fpmodule.c index a8fad92eb44f..5258c6096fb9 100644 --- a/trunk/arch/arm26/nwfpe/fpmodule.c +++ b/trunk/arch/arm26/nwfpe/fpmodule.c @@ -25,6 +25,7 @@ #include #include +#include /* XXX */ #include diff --git a/trunk/arch/arm26/nwfpe/fpmodule.h b/trunk/arch/arm26/nwfpe/fpmodule.h index f971ddd60cc1..ef71aab46a32 100644 --- a/trunk/arch/arm26/nwfpe/fpmodule.h +++ b/trunk/arch/arm26/nwfpe/fpmodule.h @@ -22,6 +22,7 @@ #ifndef __FPMODULE_H__ #define __FPMODULE_H__ +#include #define REG_ORIG_R0 16 #define REG_CPSR 15 diff --git a/trunk/arch/cris/arch-v10/boot/compressed/head.S b/trunk/arch/cris/arch-v10/boot/compressed/head.S index 610bdb237553..e73f44c998d9 100644 --- a/trunk/arch/cris/arch-v10/boot/compressed/head.S +++ b/trunk/arch/cris/arch-v10/boot/compressed/head.S @@ -8,6 +8,7 @@ * */ +#include #define ASSEMBLER_MACROS_ONLY #include diff --git a/trunk/arch/cris/arch-v10/boot/compressed/misc.c b/trunk/arch/cris/arch-v10/boot/compressed/misc.c index ffb8d21b2f83..1b5e83f1f846 100644 --- a/trunk/arch/cris/arch-v10/boot/compressed/misc.c +++ b/trunk/arch/cris/arch-v10/boot/compressed/misc.c @@ -20,6 +20,7 @@ #define KERNEL_LOAD_ADR 0x40004000 +#include #include #include diff --git a/trunk/arch/cris/arch-v10/boot/rescue/head.S b/trunk/arch/cris/arch-v10/boot/rescue/head.S index f223cc0c00bb..addb2194de0f 100644 --- a/trunk/arch/cris/arch-v10/boot/rescue/head.S +++ b/trunk/arch/cris/arch-v10/boot/rescue/head.S @@ -63,6 +63,7 @@ * Copyright (C) 1999, 2000, 2001, 2002, 2003 Axis Communications AB */ +#include #define ASSEMBLER_MACROS_ONLY #include diff --git a/trunk/arch/cris/arch-v10/boot/rescue/kimagerescue.S b/trunk/arch/cris/arch-v10/boot/rescue/kimagerescue.S index cbccd6316d39..264bf7afc9ad 100644 --- a/trunk/arch/cris/arch-v10/boot/rescue/kimagerescue.S +++ b/trunk/arch/cris/arch-v10/boot/rescue/kimagerescue.S @@ -6,6 +6,7 @@ * 4004000 and after a timeout jump to it. */ +#include #define ASSEMBLER_MACROS_ONLY #include diff --git a/trunk/arch/cris/arch-v10/drivers/axisflashmap.c b/trunk/arch/cris/arch-v10/drivers/axisflashmap.c index 4fa81abab0c7..56b038c8d482 100644 --- a/trunk/arch/cris/arch-v10/drivers/axisflashmap.c +++ b/trunk/arch/cris/arch-v10/drivers/axisflashmap.c @@ -138,6 +138,7 @@ #include #include #include +#include #include #include diff --git a/trunk/arch/cris/arch-v10/drivers/ds1302.c b/trunk/arch/cris/arch-v10/drivers/ds1302.c index 3cf4f23de1d0..b100f26497c4 100644 --- a/trunk/arch/cris/arch-v10/drivers/ds1302.c +++ b/trunk/arch/cris/arch-v10/drivers/ds1302.c @@ -139,6 +139,7 @@ *! *!***************************************************************************/ +#include #include #include diff --git a/trunk/arch/cris/arch-v10/drivers/eeprom.c b/trunk/arch/cris/arch-v10/drivers/eeprom.c index 037582028560..512f16dec060 100644 --- a/trunk/arch/cris/arch-v10/drivers/eeprom.c +++ b/trunk/arch/cris/arch-v10/drivers/eeprom.c @@ -93,6 +93,7 @@ *! (c) 1999 Axis Communications AB, Lund, Sweden *!*****************************************************************************/ +#include #include #include #include diff --git a/trunk/arch/cris/arch-v10/drivers/gpio.c b/trunk/arch/cris/arch-v10/drivers/gpio.c index 25df4ada951a..09963fe299a7 100644 --- a/trunk/arch/cris/arch-v10/drivers/gpio.c +++ b/trunk/arch/cris/arch-v10/drivers/gpio.c @@ -135,6 +135,7 @@ * */ +#include #include #include diff --git a/trunk/arch/cris/arch-v10/drivers/i2c.c b/trunk/arch/cris/arch-v10/drivers/i2c.c index 6114596c3b33..b38267d60d30 100644 --- a/trunk/arch/cris/arch-v10/drivers/i2c.c +++ b/trunk/arch/cris/arch-v10/drivers/i2c.c @@ -96,6 +96,7 @@ #include #include #include +#include #include diff --git a/trunk/arch/cris/arch-v10/drivers/pcf8563.c b/trunk/arch/cris/arch-v10/drivers/pcf8563.c index 8c830eefc89c..af517c210383 100644 --- a/trunk/arch/cris/arch-v10/drivers/pcf8563.c +++ b/trunk/arch/cris/arch-v10/drivers/pcf8563.c @@ -18,6 +18,7 @@ * $Id: pcf8563.c,v 1.11 2005/03/07 13:13:07 starvik Exp $ */ +#include #include #include #include diff --git a/trunk/arch/cris/arch-v10/kernel/crisksyms.c b/trunk/arch/cris/arch-v10/kernel/crisksyms.c index e6b80135502f..b332bf9b312b 100644 --- a/trunk/arch/cris/arch-v10/kernel/crisksyms.c +++ b/trunk/arch/cris/arch-v10/kernel/crisksyms.c @@ -1,3 +1,4 @@ +#include #include #include #include diff --git a/trunk/arch/cris/arch-v10/kernel/debugport.c b/trunk/arch/cris/arch-v10/kernel/debugport.c index 2b536ca6f444..dde813e16294 100644 --- a/trunk/arch/cris/arch-v10/kernel/debugport.c +++ b/trunk/arch/cris/arch-v10/kernel/debugport.c @@ -103,6 +103,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/cris/arch-v10/kernel/entry.S b/trunk/arch/cris/arch-v10/kernel/entry.S index ae45d4522e65..c808005e8457 100644 --- a/trunk/arch/cris/arch-v10/kernel/entry.S +++ b/trunk/arch/cris/arch-v10/kernel/entry.S @@ -263,6 +263,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/cris/arch-v10/kernel/fasttimer.c b/trunk/arch/cris/arch-v10/kernel/fasttimer.c index 8cbdf594b369..cac05a5e514c 100644 --- a/trunk/arch/cris/arch-v10/kernel/fasttimer.c +++ b/trunk/arch/cris/arch-v10/kernel/fasttimer.c @@ -111,6 +111,7 @@ #include #include +#include #include #include diff --git a/trunk/arch/cris/arch-v10/kernel/head.S b/trunk/arch/cris/arch-v10/kernel/head.S index d946d8b8d277..f00c145b43f1 100644 --- a/trunk/arch/cris/arch-v10/kernel/head.S +++ b/trunk/arch/cris/arch-v10/kernel/head.S @@ -183,6 +183,7 @@ * */ +#include #define ASSEMBLER_MACROS_ONLY /* The IO_* macros use the ## token concatenation operator, so -traditional must not be used when assembling this file. */ diff --git a/trunk/arch/cris/arch-v10/kernel/irq.c b/trunk/arch/cris/arch-v10/kernel/irq.c index 96094cbf1255..2d5be93b5197 100644 --- a/trunk/arch/cris/arch-v10/kernel/irq.c +++ b/trunk/arch/cris/arch-v10/kernel/irq.c @@ -15,6 +15,7 @@ #include #include #include +#include #define mask_irq(irq_nr) (*R_VECT_MASK_CLR = 1 << (irq_nr)); #define unmask_irq(irq_nr) (*R_VECT_MASK_SET = 1 << (irq_nr)); diff --git a/trunk/arch/cris/arch-v10/kernel/process.c b/trunk/arch/cris/arch-v10/kernel/process.c index b6831ceb6a62..0a675ce9e099 100644 --- a/trunk/arch/cris/arch-v10/kernel/process.c +++ b/trunk/arch/cris/arch-v10/kernel/process.c @@ -11,6 +11,7 @@ * This file handles the architecture-dependent parts of process handling.. */ +#include #include #include #include diff --git a/trunk/arch/cris/arch-v10/kernel/setup.c b/trunk/arch/cris/arch-v10/kernel/setup.c index 682ef955aec4..b668d7fb68ee 100644 --- a/trunk/arch/cris/arch-v10/kernel/setup.c +++ b/trunk/arch/cris/arch-v10/kernel/setup.c @@ -10,6 +10,7 @@ * This file handles the architecture-dependent parts of initialization */ +#include #include #include #include diff --git a/trunk/arch/cris/arch-v10/kernel/time.c b/trunk/arch/cris/arch-v10/kernel/time.c index fe65cb89f54c..dc3dfe9b4a1a 100644 --- a/trunk/arch/cris/arch-v10/kernel/time.c +++ b/trunk/arch/cris/arch-v10/kernel/time.c @@ -7,6 +7,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/cris/arch-v10/kernel/traps.c b/trunk/arch/cris/arch-v10/kernel/traps.c index 4becc1bcced9..34a27ea2052d 100644 --- a/trunk/arch/cris/arch-v10/kernel/traps.c +++ b/trunk/arch/cris/arch-v10/kernel/traps.c @@ -11,6 +11,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/cris/arch-v10/lib/dram_init.S b/trunk/arch/cris/arch-v10/lib/dram_init.S index 9cf83932cd5d..2ef4ad5706ef 100644 --- a/trunk/arch/cris/arch-v10/lib/dram_init.S +++ b/trunk/arch/cris/arch-v10/lib/dram_init.S @@ -70,6 +70,7 @@ * uses this code. */ +#include ;; WARNING! The registers r8 and r9 are used as parameters carrying ;; information from the decompressor (if the kernel was compressed). diff --git a/trunk/arch/cris/arch-v10/mm/init.c b/trunk/arch/cris/arch-v10/mm/init.c index e0fcd1a9bfd5..ff3481e76dd4 100644 --- a/trunk/arch/cris/arch-v10/mm/init.c +++ b/trunk/arch/cris/arch-v10/mm/init.c @@ -2,6 +2,7 @@ * linux/arch/cris/arch-v10/mm/init.c * */ +#include #include #include #include diff --git a/trunk/arch/cris/arch-v10/vmlinux.lds.S b/trunk/arch/cris/arch-v10/vmlinux.lds.S index 689729a7e66e..71ba736be8f0 100644 --- a/trunk/arch/cris/arch-v10/vmlinux.lds.S +++ b/trunk/arch/cris/arch-v10/vmlinux.lds.S @@ -8,6 +8,7 @@ * the kernel has booted. */ +#include #include jiffies = jiffies_64; diff --git a/trunk/arch/cris/arch-v32/boot/compressed/head.S b/trunk/arch/cris/arch-v32/boot/compressed/head.S index 34cea10a8998..0c55b83b8287 100644 --- a/trunk/arch/cris/arch-v32/boot/compressed/head.S +++ b/trunk/arch/cris/arch-v32/boot/compressed/head.S @@ -5,6 +5,7 @@ * Copyright (C) 1999 - 2003, Axis Communications AB */ +#include #define ASSEMBLER_MACROS_ONLY #include #include diff --git a/trunk/arch/cris/arch-v32/boot/compressed/misc.c b/trunk/arch/cris/arch-v32/boot/compressed/misc.c index 11902697196d..54644238ed59 100644 --- a/trunk/arch/cris/arch-v32/boot/compressed/misc.c +++ b/trunk/arch/cris/arch-v32/boot/compressed/misc.c @@ -20,6 +20,7 @@ #define KERNEL_LOAD_ADR 0x40004000 +#include #include #include diff --git a/trunk/arch/cris/arch-v32/boot/rescue/head.S b/trunk/arch/cris/arch-v32/boot/rescue/head.S index 8cdb4011bc16..61ede5f30f99 100644 --- a/trunk/arch/cris/arch-v32/boot/rescue/head.S +++ b/trunk/arch/cris/arch-v32/boot/rescue/head.S @@ -4,6 +4,7 @@ * RedBoot based RFL instead. Nothing to see here, move along. */ +#include #include #include diff --git a/trunk/arch/cris/arch-v32/drivers/axisflashmap.c b/trunk/arch/cris/arch-v32/drivers/axisflashmap.c index 41952320e00a..b679f983b90a 100644 --- a/trunk/arch/cris/arch-v32/drivers/axisflashmap.c +++ b/trunk/arch/cris/arch-v32/drivers/axisflashmap.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include diff --git a/trunk/arch/cris/arch-v32/drivers/gpio.c b/trunk/arch/cris/arch-v32/drivers/gpio.c index 113bdff4fd3c..a551237dcb5e 100644 --- a/trunk/arch/cris/arch-v32/drivers/gpio.c +++ b/trunk/arch/cris/arch-v32/drivers/gpio.c @@ -62,6 +62,7 @@ * */ +#include #include #include diff --git a/trunk/arch/cris/arch-v32/drivers/i2c.c b/trunk/arch/cris/arch-v32/drivers/i2c.c index 95f00188c628..440c20a94963 100644 --- a/trunk/arch/cris/arch-v32/drivers/i2c.c +++ b/trunk/arch/cris/arch-v32/drivers/i2c.c @@ -33,6 +33,7 @@ #include #include #include +#include #include diff --git a/trunk/arch/cris/arch-v32/drivers/pcf8563.c b/trunk/arch/cris/arch-v32/drivers/pcf8563.c index ffc6d2572f2b..d788bda3578c 100644 --- a/trunk/arch/cris/arch-v32/drivers/pcf8563.c +++ b/trunk/arch/cris/arch-v32/drivers/pcf8563.c @@ -17,6 +17,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/cris/arch-v32/drivers/sync_serial.c b/trunk/arch/cris/arch-v32/drivers/sync_serial.c index 7c29957f5f02..c85a6df8558f 100644 --- a/trunk/arch/cris/arch-v32/drivers/sync_serial.c +++ b/trunk/arch/cris/arch-v32/drivers/sync_serial.c @@ -9,6 +9,7 @@ #include #include +#include #include #include #include diff --git a/trunk/arch/cris/arch-v32/kernel/arbiter.c b/trunk/arch/cris/arch-v32/kernel/arbiter.c index 82d44c9afc1e..3870d2fd5160 100644 --- a/trunk/arch/cris/arch-v32/kernel/arbiter.c +++ b/trunk/arch/cris/arch-v32/kernel/arbiter.c @@ -1,14 +1,15 @@ /* - * Memory arbiter functions. Allocates bandwidth through the + * Memory arbiter functions. Allocates bandwith through the * arbiter and sets up arbiter breakpoints. * * The algorithm first assigns slots to the clients that has specified - * bandwidth (e.g. ethernet) and then the remaining slots are divided + * bandwith (e.g. ethernet) and then the remaining slots are divided * on all the active clients. * * Copyright (c) 2004, 2005 Axis Communications AB. */ +#include #include #include #include @@ -132,8 +133,8 @@ static void crisv32_arbiter_init(void) -int crisv32_arbiter_allocate_bandwidth(int client, int region, - unsigned long bandwidth) +int crisv32_arbiter_allocate_bandwith(int client, int region, + unsigned long bandwidth) { int i; int total_assigned = 0; diff --git a/trunk/arch/cris/arch-v32/kernel/crisksyms.c b/trunk/arch/cris/arch-v32/kernel/crisksyms.c index e513da711245..2c3bb9a0afe2 100644 --- a/trunk/arch/cris/arch-v32/kernel/crisksyms.c +++ b/trunk/arch/cris/arch-v32/kernel/crisksyms.c @@ -1,3 +1,4 @@ +#include #include #include #include diff --git a/trunk/arch/cris/arch-v32/kernel/debugport.c b/trunk/arch/cris/arch-v32/kernel/debugport.c index d1272ad92153..3dc587e6201a 100644 --- a/trunk/arch/cris/arch-v32/kernel/debugport.c +++ b/trunk/arch/cris/arch-v32/kernel/debugport.c @@ -2,6 +2,7 @@ * Copyright (C) 2003, Axis Communications AB. */ +#include #include #include #include diff --git a/trunk/arch/cris/arch-v32/kernel/dma.c b/trunk/arch/cris/arch-v32/kernel/dma.c index 570e19128ffd..b92e85799b44 100644 --- a/trunk/arch/cris/arch-v32/kernel/dma.c +++ b/trunk/arch/cris/arch-v32/kernel/dma.c @@ -25,8 +25,8 @@ int crisv32_request_dma(unsigned int dmanr, const char * device_id, reg_config_rw_clk_ctrl clk_ctrl; reg_strmux_rw_cfg strmux_cfg; - if (crisv32_arbiter_allocate_bandwidth(dmanr, - options & DMA_INT_MEM ? INT_REGION : EXT_REGION, + if (crisv32_arbiter_allocate_bandwith(dmanr, + options & DMA_INT_MEM ? INT_REGION : EXT_REGION, bandwidth)) return -ENOMEM; diff --git a/trunk/arch/cris/arch-v32/kernel/entry.S b/trunk/arch/cris/arch-v32/kernel/entry.S index f9d27807b914..3bd8503fec68 100644 --- a/trunk/arch/cris/arch-v32/kernel/entry.S +++ b/trunk/arch/cris/arch-v32/kernel/entry.S @@ -17,6 +17,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/cris/arch-v32/kernel/fasttimer.c b/trunk/arch/cris/arch-v32/kernel/fasttimer.c index caaa86bd5e87..ea2b4a97c8c7 100644 --- a/trunk/arch/cris/arch-v32/kernel/fasttimer.c +++ b/trunk/arch/cris/arch-v32/kernel/fasttimer.c @@ -120,6 +120,7 @@ #include #include +#include #include #include diff --git a/trunk/arch/cris/arch-v32/kernel/head.S b/trunk/arch/cris/arch-v32/kernel/head.S index 20bd80a84e48..3cfe57dc391d 100644 --- a/trunk/arch/cris/arch-v32/kernel/head.S +++ b/trunk/arch/cris/arch-v32/kernel/head.S @@ -4,6 +4,7 @@ * Copyright (C) 2003, Axis Communications AB */ +#include #define ASSEMBLER_MACROS_ONLY diff --git a/trunk/arch/cris/arch-v32/kernel/io.c b/trunk/arch/cris/arch-v32/kernel/io.c index dfbfcb8d2585..6bc9f263c3d6 100644 --- a/trunk/arch/cris/arch-v32/kernel/io.c +++ b/trunk/arch/cris/arch-v32/kernel/io.c @@ -4,6 +4,7 @@ * Copyright (c) 2004 Axis Communications AB. */ +#include #include #include #include diff --git a/trunk/arch/cris/arch-v32/kernel/irq.c b/trunk/arch/cris/arch-v32/kernel/irq.c index e2d2b3fdb5b1..06260874f018 100644 --- a/trunk/arch/cris/arch-v32/kernel/irq.c +++ b/trunk/arch/cris/arch-v32/kernel/irq.c @@ -6,6 +6,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/cris/arch-v32/kernel/kgdb_asm.S b/trunk/arch/cris/arch-v32/kernel/kgdb_asm.S index 3e7fa9ef8510..b350dd279ed2 100644 --- a/trunk/arch/cris/arch-v32/kernel/kgdb_asm.S +++ b/trunk/arch/cris/arch-v32/kernel/kgdb_asm.S @@ -5,6 +5,7 @@ * port exceptions for kernel debugging purposes. */ +#include #include ;; Exported functions. diff --git a/trunk/arch/cris/arch-v32/kernel/process.c b/trunk/arch/cris/arch-v32/kernel/process.c index 6326351af252..843513102d3c 100644 --- a/trunk/arch/cris/arch-v32/kernel/process.c +++ b/trunk/arch/cris/arch-v32/kernel/process.c @@ -8,6 +8,7 @@ * This file handles the architecture-dependent parts of process handling.. */ +#include #include #include #include diff --git a/trunk/arch/cris/arch-v32/kernel/setup.c b/trunk/arch/cris/arch-v32/kernel/setup.c index 4662f363df63..b17a39a2e164 100644 --- a/trunk/arch/cris/arch-v32/kernel/setup.c +++ b/trunk/arch/cris/arch-v32/kernel/setup.c @@ -4,6 +4,7 @@ * Copyright (C) 2003, Axis Communications AB. */ +#include #include #include #include diff --git a/trunk/arch/cris/arch-v32/kernel/time.c b/trunk/arch/cris/arch-v32/kernel/time.c index 4bac1d6c37fb..d48e397f5fa4 100644 --- a/trunk/arch/cris/arch-v32/kernel/time.c +++ b/trunk/arch/cris/arch-v32/kernel/time.c @@ -6,6 +6,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/cris/arch-v32/kernel/traps.c b/trunk/arch/cris/arch-v32/kernel/traps.c index 2462b1ef1fbb..6e3787045560 100644 --- a/trunk/arch/cris/arch-v32/kernel/traps.c +++ b/trunk/arch/cris/arch-v32/kernel/traps.c @@ -2,6 +2,7 @@ * Copyright (C) 2003, Axis Communications AB. */ +#include #include #include diff --git a/trunk/arch/cris/arch-v32/lib/dram_init.S b/trunk/arch/cris/arch-v32/lib/dram_init.S index 158b3dbb4d9d..47b6cf5f4afd 100644 --- a/trunk/arch/cris/arch-v32/lib/dram_init.S +++ b/trunk/arch/cris/arch-v32/lib/dram_init.S @@ -16,6 +16,7 @@ * uses this code. */ +#include #include #include diff --git a/trunk/arch/cris/arch-v32/lib/hw_settings.S b/trunk/arch/cris/arch-v32/lib/hw_settings.S index fff9443513d1..5182e8c2cff2 100644 --- a/trunk/arch/cris/arch-v32/lib/hw_settings.S +++ b/trunk/arch/cris/arch-v32/lib/hw_settings.S @@ -10,6 +10,7 @@ * Authors: Mikael Starvik (starvik@axis.com) */ +#include #include #include #include diff --git a/trunk/arch/cris/arch-v32/lib/nand_init.S b/trunk/arch/cris/arch-v32/lib/nand_init.S index e019816facd7..aba5c751c282 100644 --- a/trunk/arch/cris/arch-v32/lib/nand_init.S +++ b/trunk/arch/cris/arch-v32/lib/nand_init.S @@ -27,6 +27,7 @@ #include #include #include +#include ;; There are 8-bit NAND flashes and 16-bit NAND flashes. ;; We need to treat them slightly different. diff --git a/trunk/arch/cris/arch-v32/mm/init.c b/trunk/arch/cris/arch-v32/mm/init.c index a84ba7ff22d2..f2fba27d822c 100644 --- a/trunk/arch/cris/arch-v32/mm/init.c +++ b/trunk/arch/cris/arch-v32/mm/init.c @@ -6,10 +6,12 @@ * Authors: Bjorn Wesen * Tobias Anderberg , CRISv32 port. */ +#include #include #include #include #include +#include #include #include #include diff --git a/trunk/arch/cris/arch-v32/vmlinux.lds.S b/trunk/arch/cris/arch-v32/vmlinux.lds.S index 472d4b3c4cf4..adb94605d92a 100644 --- a/trunk/arch/cris/arch-v32/vmlinux.lds.S +++ b/trunk/arch/cris/arch-v32/vmlinux.lds.S @@ -8,6 +8,7 @@ * the kernel has booted. */ +#include #include jiffies = jiffies_64; diff --git a/trunk/arch/cris/kernel/crisksyms.c b/trunk/arch/cris/kernel/crisksyms.c index 1f20c16ac2a4..d57859053ce7 100644 --- a/trunk/arch/cris/kernel/crisksyms.c +++ b/trunk/arch/cris/kernel/crisksyms.c @@ -1,3 +1,4 @@ +#include #include #include #include diff --git a/trunk/arch/cris/kernel/irq.c b/trunk/arch/cris/kernel/irq.c index 1f9099627a72..6547bb646364 100644 --- a/trunk/arch/cris/kernel/irq.c +++ b/trunk/arch/cris/kernel/irq.c @@ -19,6 +19,7 @@ * Naturally it's not a 1:1 relation, but there are similarities. */ +#include #include #include #include diff --git a/trunk/arch/cris/kernel/setup.c b/trunk/arch/cris/kernel/setup.c index 6d941fb9f379..619a6eefd893 100644 --- a/trunk/arch/cris/kernel/setup.c +++ b/trunk/arch/cris/kernel/setup.c @@ -10,6 +10,7 @@ * This file handles the architecture-dependent parts of initialization */ +#include #include #include #include diff --git a/trunk/arch/frv/kernel/break.S b/trunk/arch/frv/kernel/break.S index ea161f0ca427..687c48d62dde 100644 --- a/trunk/arch/frv/kernel/break.S +++ b/trunk/arch/frv/kernel/break.S @@ -10,6 +10,7 @@ */ #include +#include #include #include #include diff --git a/trunk/arch/frv/kernel/cmode.S b/trunk/arch/frv/kernel/cmode.S index 81ba28ad2207..6591e6a37ae9 100644 --- a/trunk/arch/frv/kernel/cmode.S +++ b/trunk/arch/frv/kernel/cmode.S @@ -11,6 +11,7 @@ */ #include +#include #include #include #include diff --git a/trunk/arch/frv/kernel/entry-table.S b/trunk/arch/frv/kernel/entry-table.S index d3b9253d862a..81568acea9cd 100644 --- a/trunk/arch/frv/kernel/entry-table.S +++ b/trunk/arch/frv/kernel/entry-table.S @@ -11,6 +11,7 @@ */ #include +#include #include #include diff --git a/trunk/arch/frv/kernel/entry.S b/trunk/arch/frv/kernel/entry.S index 2a1ff1ff8692..81d94e41a189 100644 --- a/trunk/arch/frv/kernel/entry.S +++ b/trunk/arch/frv/kernel/entry.S @@ -28,6 +28,7 @@ */ #include +#include #include #include #include diff --git a/trunk/arch/frv/kernel/frv_ksyms.c b/trunk/arch/frv/kernel/frv_ksyms.c index f772704b3d28..dee637fffda5 100644 --- a/trunk/arch/frv/kernel/frv_ksyms.c +++ b/trunk/arch/frv/kernel/frv_ksyms.c @@ -7,6 +7,7 @@ #include #include #include +#include #include #include diff --git a/trunk/arch/frv/kernel/head-mmu-fr451.S b/trunk/arch/frv/kernel/head-mmu-fr451.S index c8f210d84ff5..a143c2f66ee5 100644 --- a/trunk/arch/frv/kernel/head-mmu-fr451.S +++ b/trunk/arch/frv/kernel/head-mmu-fr451.S @@ -9,6 +9,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/frv/kernel/head-uc-fr401.S b/trunk/arch/frv/kernel/head-uc-fr401.S index ee282be20fff..4ccf8414ae44 100644 --- a/trunk/arch/frv/kernel/head-uc-fr401.S +++ b/trunk/arch/frv/kernel/head-uc-fr401.S @@ -9,6 +9,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/frv/kernel/head-uc-fr451.S b/trunk/arch/frv/kernel/head-uc-fr451.S index b10d9c8295d2..31cb54a6f080 100644 --- a/trunk/arch/frv/kernel/head-uc-fr451.S +++ b/trunk/arch/frv/kernel/head-uc-fr451.S @@ -9,6 +9,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/frv/kernel/head-uc-fr555.S b/trunk/arch/frv/kernel/head-uc-fr555.S index 39937c19b460..d088db2699bf 100644 --- a/trunk/arch/frv/kernel/head-uc-fr555.S +++ b/trunk/arch/frv/kernel/head-uc-fr555.S @@ -9,6 +9,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/frv/kernel/head.S b/trunk/arch/frv/kernel/head.S index 47c990af2e06..29a5265489b7 100644 --- a/trunk/arch/frv/kernel/head.S +++ b/trunk/arch/frv/kernel/head.S @@ -9,6 +9,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/frv/kernel/irq-mb93091.c b/trunk/arch/frv/kernel/irq-mb93091.c index 1381abcd5cc9..9778e0ff7c1c 100644 --- a/trunk/arch/frv/kernel/irq-mb93091.c +++ b/trunk/arch/frv/kernel/irq-mb93091.c @@ -9,6 +9,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/frv/kernel/irq-mb93093.c b/trunk/arch/frv/kernel/irq-mb93093.c index 48b2a6420888..21ca2b298247 100644 --- a/trunk/arch/frv/kernel/irq-mb93093.c +++ b/trunk/arch/frv/kernel/irq-mb93093.c @@ -9,6 +9,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/frv/kernel/irq-mb93493.c b/trunk/arch/frv/kernel/irq-mb93493.c index 988d035640e1..c003ae5e2b30 100644 --- a/trunk/arch/frv/kernel/irq-mb93493.c +++ b/trunk/arch/frv/kernel/irq-mb93493.c @@ -9,6 +9,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/frv/kernel/irq.c b/trunk/arch/frv/kernel/irq.c index 5920f52bf9c8..8b112b361914 100644 --- a/trunk/arch/frv/kernel/irq.c +++ b/trunk/arch/frv/kernel/irq.c @@ -16,6 +16,7 @@ * Naturally it's not a 1:1 relation, but there are similarities. */ +#include #include #include #include diff --git a/trunk/arch/frv/kernel/pm-mb93093.c b/trunk/arch/frv/kernel/pm-mb93093.c index eaa7b582ef52..34d01d7dcc3b 100644 --- a/trunk/arch/frv/kernel/pm-mb93093.c +++ b/trunk/arch/frv/kernel/pm-mb93093.c @@ -10,6 +10,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/frv/kernel/pm.c b/trunk/arch/frv/kernel/pm.c index e65a9f1c0c26..43ce28a13a5d 100644 --- a/trunk/arch/frv/kernel/pm.c +++ b/trunk/arch/frv/kernel/pm.c @@ -11,6 +11,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/frv/kernel/process.c b/trunk/arch/frv/kernel/process.c index eeeb1e2641d5..489e6c489cbe 100644 --- a/trunk/arch/frv/kernel/process.c +++ b/trunk/arch/frv/kernel/process.c @@ -10,6 +10,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/frv/kernel/ptrace.c b/trunk/arch/frv/kernel/ptrace.c index fcff819b4340..f953484e7d59 100644 --- a/trunk/arch/frv/kernel/ptrace.c +++ b/trunk/arch/frv/kernel/ptrace.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include diff --git a/trunk/arch/frv/kernel/semaphore.c b/trunk/arch/frv/kernel/semaphore.c index f278cdf3a72f..7971d680ae29 100644 --- a/trunk/arch/frv/kernel/semaphore.c +++ b/trunk/arch/frv/kernel/semaphore.c @@ -10,6 +10,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/frv/kernel/setup.c b/trunk/arch/frv/kernel/setup.c index 5db3d4eff909..1f7d65f29e78 100644 --- a/trunk/arch/frv/kernel/setup.c +++ b/trunk/arch/frv/kernel/setup.c @@ -10,6 +10,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/frv/kernel/sleep.S b/trunk/arch/frv/kernel/sleep.S index c9b2d51ab9ad..e6079b8cac60 100644 --- a/trunk/arch/frv/kernel/sleep.S +++ b/trunk/arch/frv/kernel/sleep.S @@ -11,6 +11,7 @@ */ #include +#include #include #include #include diff --git a/trunk/arch/frv/kernel/switch_to.S b/trunk/arch/frv/kernel/switch_to.S index 9e5a583991a3..1703dc20174e 100644 --- a/trunk/arch/frv/kernel/switch_to.S +++ b/trunk/arch/frv/kernel/switch_to.S @@ -11,6 +11,7 @@ # 2 of the License, or (at your option) any later version. # ############################################################################### +#include #include #include #include diff --git a/trunk/arch/frv/kernel/sysctl.c b/trunk/arch/frv/kernel/sysctl.c index ce676803eb6f..b908863d6593 100644 --- a/trunk/arch/frv/kernel/sysctl.c +++ b/trunk/arch/frv/kernel/sysctl.c @@ -9,6 +9,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/frv/kernel/traps.c b/trunk/arch/frv/kernel/traps.c index 98ce3628ebde..9eb84b2e6abc 100644 --- a/trunk/arch/frv/kernel/traps.c +++ b/trunk/arch/frv/kernel/traps.c @@ -9,6 +9,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/frv/mb93090-mb00/pci-irq.c b/trunk/arch/frv/mb93090-mb00/pci-irq.c index 2278c80bd88c..45ae39d84b69 100644 --- a/trunk/arch/frv/mb93090-mb00/pci-irq.c +++ b/trunk/arch/frv/mb93090-mb00/pci-irq.c @@ -5,6 +5,7 @@ * derived from: arch/i386/kernel/pci-irq.c: (c) 1999--2000 Martin Mares */ +#include #include #include #include diff --git a/trunk/arch/frv/mb93090-mb00/pci-vdk.c b/trunk/arch/frv/mb93090-mb00/pci-vdk.c index fb98e90c5794..c8817f7b8605 100644 --- a/trunk/arch/frv/mb93090-mb00/pci-vdk.c +++ b/trunk/arch/frv/mb93090-mb00/pci-vdk.c @@ -9,6 +9,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/frv/mm/dma-alloc.c b/trunk/arch/frv/mm/dma-alloc.c index dc6522c464d4..636b2f8b5d98 100644 --- a/trunk/arch/frv/mm/dma-alloc.c +++ b/trunk/arch/frv/mm/dma-alloc.c @@ -21,6 +21,7 @@ * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/arch/frv/mm/extable.c b/trunk/arch/frv/mm/extable.c index 6aea124f574d..caacf030ac75 100644 --- a/trunk/arch/frv/mm/extable.c +++ b/trunk/arch/frv/mm/extable.c @@ -2,6 +2,7 @@ * linux/arch/frv/mm/extable.c */ +#include #include #include #include diff --git a/trunk/arch/frv/mm/init.c b/trunk/arch/frv/mm/init.c index b5b4286f9dd4..8899aa1a4f06 100644 --- a/trunk/arch/frv/mm/init.c +++ b/trunk/arch/frv/mm/init.c @@ -16,6 +16,7 @@ * - Copyright (C) 1995 Hamish Macdonald */ +#include #include #include #include diff --git a/trunk/arch/frv/mm/kmap.c b/trunk/arch/frv/mm/kmap.c index fb78be38ea02..40b62c5c2951 100644 --- a/trunk/arch/frv/mm/kmap.c +++ b/trunk/arch/frv/mm/kmap.c @@ -10,6 +10,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/frv/mm/tlb-flush.S b/trunk/arch/frv/mm/tlb-flush.S index 79b3c70910ac..6f43c74c5d95 100644 --- a/trunk/arch/frv/mm/tlb-flush.S +++ b/trunk/arch/frv/mm/tlb-flush.S @@ -10,6 +10,7 @@ */ #include +#include #include #include #include diff --git a/trunk/arch/frv/mm/tlb-miss.S b/trunk/arch/frv/mm/tlb-miss.S index 04da67468378..8729f7d7c6e0 100644 --- a/trunk/arch/frv/mm/tlb-miss.S +++ b/trunk/arch/frv/mm/tlb-miss.S @@ -10,6 +10,7 @@ */ #include +#include #include #include #include diff --git a/trunk/arch/frv/mm/unaligned.c b/trunk/arch/frv/mm/unaligned.c index 8f0375fc15a8..09b361443fc2 100644 --- a/trunk/arch/frv/mm/unaligned.c +++ b/trunk/arch/frv/mm/unaligned.c @@ -9,6 +9,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/h8300/kernel/gpio.c b/trunk/arch/h8300/kernel/gpio.c index 6a25dd5530e7..d195568ca8a2 100644 --- a/trunk/arch/h8300/kernel/gpio.c +++ b/trunk/arch/h8300/kernel/gpio.c @@ -9,6 +9,7 @@ * Internal I/O Port Management */ +#include #include #include #include diff --git a/trunk/arch/h8300/kernel/h8300_ksyms.c b/trunk/arch/h8300/kernel/h8300_ksyms.c index 9b4be053de3c..f8d6dee84781 100644 --- a/trunk/arch/h8300/kernel/h8300_ksyms.c +++ b/trunk/arch/h8300/kernel/h8300_ksyms.c @@ -7,6 +7,7 @@ #include #include #include +#include #include #include diff --git a/trunk/arch/h8300/kernel/process.c b/trunk/arch/h8300/kernel/process.c index e061b63a0038..16ccddc69c2b 100644 --- a/trunk/arch/h8300/kernel/process.c +++ b/trunk/arch/h8300/kernel/process.c @@ -22,6 +22,7 @@ * This file handles the architecture-dependent parts of process handling.. */ +#include #include #include #include diff --git a/trunk/arch/h8300/kernel/ptrace.c b/trunk/arch/h8300/kernel/ptrace.c index f6031373dc21..0ff6f79b0fed 100644 --- a/trunk/arch/h8300/kernel/ptrace.c +++ b/trunk/arch/h8300/kernel/ptrace.c @@ -23,6 +23,7 @@ #include #include #include +#include #include #include diff --git a/trunk/arch/h8300/kernel/semaphore.c b/trunk/arch/h8300/kernel/semaphore.c index d12cbbfe6ebd..1ebb79baaa8c 100644 --- a/trunk/arch/h8300/kernel/semaphore.c +++ b/trunk/arch/h8300/kernel/semaphore.c @@ -3,6 +3,7 @@ * specific changes in */ +#include #include #include #include diff --git a/trunk/arch/h8300/kernel/setup.c b/trunk/arch/h8300/kernel/setup.c index 1077b71d5226..f469d9160730 100644 --- a/trunk/arch/h8300/kernel/setup.c +++ b/trunk/arch/h8300/kernel/setup.c @@ -16,6 +16,7 @@ * This file handles the architecture-dependent parts of system setup */ +#include #include #include #include diff --git a/trunk/arch/h8300/kernel/syscalls.S b/trunk/arch/h8300/kernel/syscalls.S index dab98fd99e63..79b3bda5c6e3 100644 --- a/trunk/arch/h8300/kernel/syscalls.S +++ b/trunk/arch/h8300/kernel/syscalls.S @@ -1,4 +1,5 @@ /* Systemcall Entry Table */ +#include #include #include #include diff --git a/trunk/arch/h8300/kernel/vmlinux.lds.S b/trunk/arch/h8300/kernel/vmlinux.lds.S index 6406c388f88a..17fa11da1e4a 100644 --- a/trunk/arch/h8300/kernel/vmlinux.lds.S +++ b/trunk/arch/h8300/kernel/vmlinux.lds.S @@ -1,5 +1,6 @@ #define VMLINUX_SYMBOL(_sym_) _##_sym_ #include +#include /* target memory map */ #ifdef CONFIG_H8300H_GENERIC diff --git a/trunk/arch/h8300/lib/romfs.S b/trunk/arch/h8300/lib/romfs.S index 68910d8e1ff4..b72f93a47e31 100644 --- a/trunk/arch/h8300/lib/romfs.S +++ b/trunk/arch/h8300/lib/romfs.S @@ -1,6 +1,7 @@ /* romfs move to __ebss */ #include +#include #if defined(__H8300H__) .h8300h diff --git a/trunk/arch/h8300/mm/init.c b/trunk/arch/h8300/mm/init.c index d3d40bdc2d6a..09efc4b1f038 100644 --- a/trunk/arch/h8300/mm/init.c +++ b/trunk/arch/h8300/mm/init.c @@ -16,6 +16,7 @@ * DEC/2000 -- linux 2.4 support */ +#include #include #include #include diff --git a/trunk/arch/h8300/mm/kmap.c b/trunk/arch/h8300/mm/kmap.c index 26ab17286a53..4101ab54fc17 100644 --- a/trunk/arch/h8300/mm/kmap.c +++ b/trunk/arch/h8300/mm/kmap.c @@ -8,6 +8,7 @@ * Copyright (C) 2000-2002 David McCullough */ +#include #include #include #include diff --git a/trunk/arch/h8300/mm/memory.c b/trunk/arch/h8300/mm/memory.c index ccd6ade816dd..81eace93f867 100644 --- a/trunk/arch/h8300/mm/memory.c +++ b/trunk/arch/h8300/mm/memory.c @@ -17,6 +17,7 @@ * Copyright (C) 1995 Hamish Macdonald */ +#include #include #include #include diff --git a/trunk/arch/h8300/platform/h8300h/aki3068net/crt0_ram.S b/trunk/arch/h8300/platform/h8300h/aki3068net/crt0_ram.S index ecaeb31ae9a4..31c3703d8d60 100644 --- a/trunk/arch/h8300/platform/h8300h/aki3068net/crt0_ram.S +++ b/trunk/arch/h8300/platform/h8300h/aki3068net/crt0_ram.S @@ -10,6 +10,7 @@ #define ASSEMBLY +#include #include #if !defined(CONFIG_BLKDEV_RESERVE) diff --git a/trunk/arch/h8300/platform/h8300h/aki3068net/timer.c b/trunk/arch/h8300/platform/h8300h/aki3068net/timer.c index 27cd85d56128..086efb1fd283 100644 --- a/trunk/arch/h8300/platform/h8300h/aki3068net/timer.c +++ b/trunk/arch/h8300/platform/h8300h/aki3068net/timer.c @@ -7,6 +7,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/h8300/platform/h8300h/entry.S b/trunk/arch/h8300/platform/h8300h/entry.S index d2dea2432fb2..2052dbb9483f 100644 --- a/trunk/arch/h8300/platform/h8300h/entry.S +++ b/trunk/arch/h8300/platform/h8300h/entry.S @@ -14,6 +14,7 @@ */ #include +#include #include #include #include diff --git a/trunk/arch/h8300/platform/h8300h/generic/crt0_ram.S b/trunk/arch/h8300/platform/h8300h/generic/crt0_ram.S index 80d0e16a4499..b735042a7c3f 100644 --- a/trunk/arch/h8300/platform/h8300h/generic/crt0_ram.S +++ b/trunk/arch/h8300/platform/h8300h/generic/crt0_ram.S @@ -10,6 +10,7 @@ #define ASSEMBLY +#include #include #if !defined(CONFIG_BLKDEV_RESERVE) diff --git a/trunk/arch/h8300/platform/h8300h/generic/crt0_rom.S b/trunk/arch/h8300/platform/h8300h/generic/crt0_rom.S index 120add7ca832..2e32d8179db3 100644 --- a/trunk/arch/h8300/platform/h8300h/generic/crt0_rom.S +++ b/trunk/arch/h8300/platform/h8300h/generic/crt0_rom.S @@ -10,6 +10,7 @@ #define ASSEMBLY +#include #include .global SYMBOL_NAME(_start) diff --git a/trunk/arch/h8300/platform/h8300h/generic/timer.c b/trunk/arch/h8300/platform/h8300h/generic/timer.c index 6f5cefe0cceb..6590f89e521a 100644 --- a/trunk/arch/h8300/platform/h8300h/generic/timer.c +++ b/trunk/arch/h8300/platform/h8300h/generic/timer.c @@ -7,6 +7,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/h8300/platform/h8300h/h8max/crt0_ram.S b/trunk/arch/h8300/platform/h8300h/h8max/crt0_ram.S index efcbefb91b67..a5c5a9156e04 100644 --- a/trunk/arch/h8300/platform/h8300h/h8max/crt0_ram.S +++ b/trunk/arch/h8300/platform/h8300h/h8max/crt0_ram.S @@ -10,6 +10,7 @@ #define ASSEMBLY +#include #include #if !defined(CONFIG_BLKDEV_RESERVE) diff --git a/trunk/arch/h8300/platform/h8300h/h8max/timer.c b/trunk/arch/h8300/platform/h8300h/h8max/timer.c index 85a574afe9d0..9ac9fa6691c0 100644 --- a/trunk/arch/h8300/platform/h8300h/h8max/timer.c +++ b/trunk/arch/h8300/platform/h8300h/h8max/timer.c @@ -7,6 +7,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/h8300/platform/h8300h/ints_h8300h.c b/trunk/arch/h8300/platform/h8300h/ints_h8300h.c index f1777119b871..86a155479167 100644 --- a/trunk/arch/h8300/platform/h8300h/ints_h8300h.c +++ b/trunk/arch/h8300/platform/h8300h/ints_h8300h.c @@ -6,6 +6,7 @@ * */ +#include #include #include diff --git a/trunk/arch/h8300/platform/h8s/edosk2674/crt0_ram.S b/trunk/arch/h8300/platform/h8s/edosk2674/crt0_ram.S index d12b0debe478..8105dc17d735 100644 --- a/trunk/arch/h8300/platform/h8s/edosk2674/crt0_ram.S +++ b/trunk/arch/h8300/platform/h8s/edosk2674/crt0_ram.S @@ -10,6 +10,7 @@ #define ASSEMBLY +#include #include #include diff --git a/trunk/arch/h8300/platform/h8s/edosk2674/crt0_rom.S b/trunk/arch/h8300/platform/h8s/edosk2674/crt0_rom.S index c03d23c6fe12..65748bf18556 100644 --- a/trunk/arch/h8300/platform/h8s/edosk2674/crt0_rom.S +++ b/trunk/arch/h8300/platform/h8s/edosk2674/crt0_rom.S @@ -10,6 +10,7 @@ #define ASSEMBLY +#include #include #include diff --git a/trunk/arch/h8300/platform/h8s/edosk2674/timer.c b/trunk/arch/h8300/platform/h8s/edosk2674/timer.c index bfb1424482f4..9441a4f1631f 100644 --- a/trunk/arch/h8300/platform/h8s/edosk2674/timer.c +++ b/trunk/arch/h8300/platform/h8s/edosk2674/timer.c @@ -7,6 +7,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/h8300/platform/h8s/entry.S b/trunk/arch/h8300/platform/h8s/entry.S index aeb2e9faa9b2..a7a53c84c801 100644 --- a/trunk/arch/h8300/platform/h8s/entry.S +++ b/trunk/arch/h8300/platform/h8s/entry.S @@ -15,6 +15,7 @@ */ #include +#include #include #include #include diff --git a/trunk/arch/h8300/platform/h8s/generic/crt0_ram.S b/trunk/arch/h8300/platform/h8s/generic/crt0_ram.S index b04541069976..86f450178466 100644 --- a/trunk/arch/h8300/platform/h8s/generic/crt0_ram.S +++ b/trunk/arch/h8300/platform/h8s/generic/crt0_ram.S @@ -10,6 +10,7 @@ #define ASSEMBLY +#include #include #include diff --git a/trunk/arch/h8300/platform/h8s/generic/crt0_rom.S b/trunk/arch/h8300/platform/h8s/generic/crt0_rom.S index 95b6f2898f52..e18e41202282 100644 --- a/trunk/arch/h8300/platform/h8s/generic/crt0_rom.S +++ b/trunk/arch/h8300/platform/h8s/generic/crt0_rom.S @@ -10,6 +10,7 @@ #define ASSEMBLY +#include #include #include diff --git a/trunk/arch/h8300/platform/h8s/generic/timer.c b/trunk/arch/h8300/platform/h8s/generic/timer.c index c2211c6e79da..633cd8e1c21d 100644 --- a/trunk/arch/h8300/platform/h8s/generic/timer.c +++ b/trunk/arch/h8300/platform/h8s/generic/timer.c @@ -7,6 +7,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/h8300/platform/h8s/ints_h8s.c b/trunk/arch/h8300/platform/h8s/ints_h8s.c index 93395d2a8a07..8268dfd12f1f 100644 --- a/trunk/arch/h8300/platform/h8s/ints_h8s.c +++ b/trunk/arch/h8300/platform/h8s/ints_h8s.c @@ -6,6 +6,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/i386/Kconfig b/trunk/arch/i386/Kconfig index 27d8dddbaa47..1718429286d4 100644 --- a/trunk/arch/i386/Kconfig +++ b/trunk/arch/i386/Kconfig @@ -176,7 +176,7 @@ endchoice config ACPI_SRAT bool default y - depends on ACPI && NUMA && (X86_SUMMIT || X86_GENERICARCH) + depends on NUMA && (X86_SUMMIT || X86_GENERICARCH) select ACPI_NUMA config HAVE_ARCH_PARSE_SRAT diff --git a/trunk/arch/i386/boot/setup.S b/trunk/arch/i386/boot/setup.S index 0a5a3be6d69c..ca668d9df164 100644 --- a/trunk/arch/i386/boot/setup.S +++ b/trunk/arch/i386/boot/setup.S @@ -46,6 +46,7 @@ * by Robert Schwebel, December 2001 */ +#include #include #include #include diff --git a/trunk/arch/i386/kernel/Makefile b/trunk/arch/i386/kernel/Makefile index cbc1184e9473..5e70c2fb273a 100644 --- a/trunk/arch/i386/kernel/Makefile +++ b/trunk/arch/i386/kernel/Makefile @@ -38,7 +38,6 @@ obj-$(CONFIG_VM86) += vm86.o obj-$(CONFIG_EARLY_PRINTK) += early_printk.o obj-$(CONFIG_HPET_TIMER) += hpet.o obj-$(CONFIG_K8_NB) += k8.o -obj-$(CONFIG_AUDIT) += audit.o EXTRA_AFLAGS := -traditional diff --git a/trunk/arch/i386/kernel/acpi/boot.c b/trunk/arch/i386/kernel/acpi/boot.c index 0db6387025ca..97ca17189af5 100644 --- a/trunk/arch/i386/kernel/acpi/boot.c +++ b/trunk/arch/i386/kernel/acpi/boot.c @@ -24,6 +24,7 @@ */ #include +#include #include #include #include diff --git a/trunk/arch/i386/kernel/alternative.c b/trunk/arch/i386/kernel/alternative.c index 7b421b3a053e..50eb0e03777e 100644 --- a/trunk/arch/i386/kernel/alternative.c +++ b/trunk/arch/i386/kernel/alternative.c @@ -168,8 +168,6 @@ void apply_alternatives(struct alt_instr *start, struct alt_instr *end) } } -#ifdef CONFIG_SMP - static void alternatives_smp_save(struct alt_instr *start, struct alt_instr *end) { struct alt_instr *a; @@ -330,8 +328,6 @@ void alternatives_smp_switch(int smp) spin_unlock_irqrestore(&smp_alt, flags); } -#endif - void __init alternative_instructions(void) { if (no_replacement) { @@ -353,7 +349,6 @@ void __init alternative_instructions(void) smp_alt_once = 1; #endif -#ifdef CONFIG_SMP if (smp_alt_once) { if (1 == num_possible_cpus()) { printk(KERN_INFO "SMP alternatives: switching to UP code\n"); @@ -375,5 +370,4 @@ void __init alternative_instructions(void) _text, _etext); alternatives_smp_switch(0); } -#endif } diff --git a/trunk/arch/i386/kernel/apic.c b/trunk/arch/i386/kernel/apic.c index 8c844d07862f..7ce09492fc0c 100644 --- a/trunk/arch/i386/kernel/apic.c +++ b/trunk/arch/i386/kernel/apic.c @@ -14,6 +14,7 @@ * Mikael Pettersson : PM converted to driver model. */ +#include #include #include diff --git a/trunk/arch/i386/kernel/apm.c b/trunk/arch/i386/kernel/apm.c index 8591f2fa920c..7c5729d1fd06 100644 --- a/trunk/arch/i386/kernel/apm.c +++ b/trunk/arch/i386/kernel/apm.c @@ -201,6 +201,7 @@ * http://www.microsoft.com/hwdev/busbios/amp_12.htm] */ +#include #include #include diff --git a/trunk/arch/i386/kernel/audit.c b/trunk/arch/i386/kernel/audit.c deleted file mode 100644 index 5a53c6f371ff..000000000000 --- a/trunk/arch/i386/kernel/audit.c +++ /dev/null @@ -1,23 +0,0 @@ -#include -#include -#include -#include - -static unsigned dir_class[] = { -#include -~0U -}; - -static unsigned chattr_class[] = { -#include -~0U -}; - -static int __init audit_classes_init(void) -{ - audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); - audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); - return 0; -} - -__initcall(audit_classes_init); diff --git a/trunk/arch/i386/kernel/bootflag.c b/trunk/arch/i386/kernel/bootflag.c index 0b9860530a6b..4c30ed01f4e1 100644 --- a/trunk/arch/i386/kernel/bootflag.c +++ b/trunk/arch/i386/kernel/bootflag.c @@ -3,6 +3,7 @@ */ +#include #include #include #include diff --git a/trunk/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c b/trunk/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c index 567b39bea07e..cf0ddc9ee0cd 100644 --- a/trunk/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c +++ b/trunk/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c @@ -24,6 +24,7 @@ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ +#include #include #include #include diff --git a/trunk/arch/i386/kernel/cpu/cpufreq/p4-clockmod.c b/trunk/arch/i386/kernel/cpu/cpufreq/p4-clockmod.c index 304d2eaa4a1b..ab6504efd801 100644 --- a/trunk/arch/i386/kernel/cpu/cpufreq/p4-clockmod.c +++ b/trunk/arch/i386/kernel/cpu/cpufreq/p4-clockmod.c @@ -20,6 +20,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/i386/kernel/cpu/cpufreq/powernow-k7.c b/trunk/arch/i386/kernel/cpu/cpufreq/powernow-k7.c index 54382760983a..694d4793bf6a 100644 --- a/trunk/arch/i386/kernel/cpu/cpufreq/powernow-k7.c +++ b/trunk/arch/i386/kernel/cpu/cpufreq/powernow-k7.c @@ -12,6 +12,7 @@ * - We disable half multipliers if ACPI is used on A0 stepping CPUs. */ +#include #include #include #include diff --git a/trunk/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c b/trunk/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c index b77f1358bd79..8d765509ef59 100644 --- a/trunk/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c +++ b/trunk/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c @@ -17,6 +17,7 @@ #include #include #include +#include #include /* current */ #include #include diff --git a/trunk/arch/i386/kernel/cpu/intel.c b/trunk/arch/i386/kernel/cpu/intel.c index 5a2e270924b1..10afc645c540 100644 --- a/trunk/arch/i386/kernel/cpu/intel.c +++ b/trunk/arch/i386/kernel/cpu/intel.c @@ -1,3 +1,4 @@ +#include #include #include diff --git a/trunk/arch/i386/kernel/cpu/mcheck/k7.c b/trunk/arch/i386/kernel/cpu/mcheck/k7.c index b0862af595aa..fc5d5215e23d 100644 --- a/trunk/arch/i386/kernel/cpu/mcheck/k7.c +++ b/trunk/arch/i386/kernel/cpu/mcheck/k7.c @@ -6,6 +6,7 @@ #include #include #include +#include #include #include diff --git a/trunk/arch/i386/kernel/cpu/mcheck/mce.c b/trunk/arch/i386/kernel/cpu/mcheck/mce.c index d555bec0db99..afa0888f9a1e 100644 --- a/trunk/arch/i386/kernel/cpu/mcheck/mce.c +++ b/trunk/arch/i386/kernel/cpu/mcheck/mce.c @@ -6,6 +6,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/i386/kernel/cpu/mcheck/non-fatal.c b/trunk/arch/i386/kernel/cpu/mcheck/non-fatal.c index 1f9153ae5b03..82dffe0d4954 100644 --- a/trunk/arch/i386/kernel/cpu/mcheck/non-fatal.c +++ b/trunk/arch/i386/kernel/cpu/mcheck/non-fatal.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/i386/kernel/cpu/mcheck/p4.c b/trunk/arch/i386/kernel/cpu/mcheck/p4.c index b95f1b3d53aa..fd2c459a31ef 100644 --- a/trunk/arch/i386/kernel/cpu/mcheck/p4.c +++ b/trunk/arch/i386/kernel/cpu/mcheck/p4.c @@ -5,6 +5,7 @@ #include #include #include +#include #include #include diff --git a/trunk/arch/i386/kernel/cpuid.c b/trunk/arch/i386/kernel/cpuid.c index a8d3ecdc3897..f6dfa9fb675c 100644 --- a/trunk/arch/i386/kernel/cpuid.c +++ b/trunk/arch/i386/kernel/cpuid.c @@ -24,6 +24,7 @@ */ #include +#include #include #include diff --git a/trunk/arch/i386/kernel/efi.c b/trunk/arch/i386/kernel/efi.c index fe158042110b..8beb0f07d999 100644 --- a/trunk/arch/i386/kernel/efi.c +++ b/trunk/arch/i386/kernel/efi.c @@ -19,6 +19,7 @@ * Skip non-WB memory and ignore empty memory ranges. */ +#include #include #include #include diff --git a/trunk/arch/i386/kernel/efi_stub.S b/trunk/arch/i386/kernel/efi_stub.S index d3ee73a3eee3..08c0312d9b6c 100644 --- a/trunk/arch/i386/kernel/efi_stub.S +++ b/trunk/arch/i386/kernel/efi_stub.S @@ -5,6 +5,7 @@ * turned off. */ +#include #include #include #include diff --git a/trunk/arch/i386/kernel/entry.S b/trunk/arch/i386/kernel/entry.S index 787190c45fdb..fbdb933251b6 100644 --- a/trunk/arch/i386/kernel/entry.S +++ b/trunk/arch/i386/kernel/entry.S @@ -40,6 +40,7 @@ * "current" is in register %ebx during any slow entries. */ +#include #include #include #include diff --git a/trunk/arch/i386/kernel/head.S b/trunk/arch/i386/kernel/head.S index eb79aa2fa8bb..3debc2e26542 100644 --- a/trunk/arch/i386/kernel/head.S +++ b/trunk/arch/i386/kernel/head.S @@ -8,6 +8,7 @@ */ .text +#include #include #include #include diff --git a/trunk/arch/i386/kernel/i386_ksyms.c b/trunk/arch/i386/kernel/i386_ksyms.c index e3d4b73bfdb0..036a9857936f 100644 --- a/trunk/arch/i386/kernel/i386_ksyms.c +++ b/trunk/arch/i386/kernel/i386_ksyms.c @@ -1,3 +1,4 @@ +#include #include #include #include diff --git a/trunk/arch/i386/kernel/i387.c b/trunk/arch/i386/kernel/i387.c index 665847281ed2..c4351972d9af 100644 --- a/trunk/arch/i386/kernel/i387.c +++ b/trunk/arch/i386/kernel/i387.c @@ -8,6 +8,7 @@ * Gareth Hughes , May 2000 */ +#include #include #include #include diff --git a/trunk/arch/i386/kernel/i8259.c b/trunk/arch/i386/kernel/i8259.c index d4756d154f47..3c6063671a9f 100644 --- a/trunk/arch/i386/kernel/i8259.c +++ b/trunk/arch/i386/kernel/i8259.c @@ -1,3 +1,4 @@ +#include #include #include #include diff --git a/trunk/arch/i386/kernel/io_apic.c b/trunk/arch/i386/kernel/io_apic.c index 4fb32c551fe0..ec9ea0269d36 100644 --- a/trunk/arch/i386/kernel/io_apic.c +++ b/trunk/arch/i386/kernel/io_apic.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/i386/kernel/kprobes.c b/trunk/arch/i386/kernel/kprobes.c index de2e16e561c0..727e419ad78a 100644 --- a/trunk/arch/i386/kernel/kprobes.c +++ b/trunk/arch/i386/kernel/kprobes.c @@ -28,6 +28,7 @@ * added function-return probes. */ +#include #include #include #include diff --git a/trunk/arch/i386/kernel/mca.c b/trunk/arch/i386/kernel/mca.c index cd5456f14af4..558bb207720f 100644 --- a/trunk/arch/i386/kernel/mca.c +++ b/trunk/arch/i386/kernel/mca.c @@ -46,6 +46,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/i386/kernel/mpparse.c b/trunk/arch/i386/kernel/mpparse.c index a70b5fa0ef06..6b1392d33ed5 100644 --- a/trunk/arch/i386/kernel/mpparse.c +++ b/trunk/arch/i386/kernel/mpparse.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/i386/kernel/msr.c b/trunk/arch/i386/kernel/msr.c index d535cdbbfd25..d022cb8fd725 100644 --- a/trunk/arch/i386/kernel/msr.c +++ b/trunk/arch/i386/kernel/msr.c @@ -24,6 +24,7 @@ */ #include +#include #include #include @@ -250,9 +251,7 @@ static int msr_class_device_create(int i) return err; } -#ifdef CONFIG_HOTPLUG_CPU -static int msr_class_cpu_callback(struct notifier_block *nfb, - unsigned long action, void *hcpu) +static int msr_class_cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu = (unsigned long)hcpu; @@ -271,7 +270,6 @@ static struct notifier_block __cpuinitdata msr_class_cpu_notifier = { .notifier_call = msr_class_cpu_callback, }; -#endif static int __init msr_init(void) { @@ -294,7 +292,7 @@ static int __init msr_init(void) if (err != 0) goto out_class; } - register_hotcpu_notifier(&msr_class_cpu_notifier); + register_cpu_notifier(&msr_class_cpu_notifier); err = 0; goto out; @@ -317,7 +315,7 @@ static void __exit msr_exit(void) class_device_destroy(msr_class, MKDEV(MSR_MAJOR, cpu)); class_destroy(msr_class); unregister_chrdev(MSR_MAJOR, "cpu/msr"); - unregister_hotcpu_notifier(&msr_class_cpu_notifier); + unregister_cpu_notifier(&msr_class_cpu_notifier); } module_init(msr_init); diff --git a/trunk/arch/i386/kernel/numaq.c b/trunk/arch/i386/kernel/numaq.c index 9000d82c6dc0..0caf14652bad 100644 --- a/trunk/arch/i386/kernel/numaq.c +++ b/trunk/arch/i386/kernel/numaq.c @@ -23,6 +23,7 @@ * Send feedback to */ +#include #include #include #include diff --git a/trunk/arch/i386/kernel/process.c b/trunk/arch/i386/kernel/process.c index 94e2c87edeaa..6946b06e2784 100644 --- a/trunk/arch/i386/kernel/process.c +++ b/trunk/arch/i386/kernel/process.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/i386/kernel/quirks.c b/trunk/arch/i386/kernel/quirks.c index 9f6ab1789bb0..87ccdac84928 100644 --- a/trunk/arch/i386/kernel/quirks.c +++ b/trunk/arch/i386/kernel/quirks.c @@ -1,6 +1,7 @@ /* * This file contains work-arounds for x86 and x86_64 platform bugs. */ +#include #include #include diff --git a/trunk/arch/i386/kernel/reboot.c b/trunk/arch/i386/kernel/reboot.c index 54cfeabbc5e4..d207242976d3 100644 --- a/trunk/arch/i386/kernel/reboot.c +++ b/trunk/arch/i386/kernel/reboot.c @@ -2,6 +2,7 @@ * linux/arch/i386/kernel/reboot.c */ +#include #include #include #include diff --git a/trunk/arch/i386/kernel/scx200.c b/trunk/arch/i386/kernel/scx200.c index c7d3df23f589..9bf590cefc7d 100644 --- a/trunk/arch/i386/kernel/scx200.c +++ b/trunk/arch/i386/kernel/scx200.c @@ -4,6 +4,7 @@ National Semiconductor SCx200 support. */ +#include #include #include #include diff --git a/trunk/arch/i386/kernel/semaphore.c b/trunk/arch/i386/kernel/semaphore.c index 98352c374c76..967dc74df9ee 100644 --- a/trunk/arch/i386/kernel/semaphore.c +++ b/trunk/arch/i386/kernel/semaphore.c @@ -12,6 +12,7 @@ * * rw semaphores implemented November 1999 by Benjamin LaHaise */ +#include #include /* diff --git a/trunk/arch/i386/kernel/setup.c b/trunk/arch/i386/kernel/setup.c index 08c00d20f162..6712f0d2eb37 100644 --- a/trunk/arch/i386/kernel/setup.c +++ b/trunk/arch/i386/kernel/setup.c @@ -23,6 +23,7 @@ * This file handles the architecture-dependent parts of initialization */ +#include #include #include #include diff --git a/trunk/arch/i386/kernel/smpboot.c b/trunk/arch/i386/kernel/smpboot.c index 6f5fea05f1d7..89e7315e539c 100644 --- a/trunk/arch/i386/kernel/smpboot.c +++ b/trunk/arch/i386/kernel/smpboot.c @@ -34,6 +34,7 @@ * Rusty Russell : Hacked into shape for new "hotplug" boot process. */ #include +#include #include #include diff --git a/trunk/arch/i386/kernel/srat.c b/trunk/arch/i386/kernel/srat.c index b1809c9a0899..989c85255dbe 100644 --- a/trunk/arch/i386/kernel/srat.c +++ b/trunk/arch/i386/kernel/srat.c @@ -23,6 +23,7 @@ * * Send feedback to Pat Gaughen */ +#include #include #include #include diff --git a/trunk/arch/i386/kernel/time.c b/trunk/arch/i386/kernel/time.c index 316421a7f56f..5f43d0410122 100644 --- a/trunk/arch/i386/kernel/time.c +++ b/trunk/arch/i386/kernel/time.c @@ -60,6 +60,7 @@ #include "mach_time.h" #include +#include #include diff --git a/trunk/arch/i386/kernel/time_hpet.c b/trunk/arch/i386/kernel/time_hpet.c index 14a1376fedd1..a529f0cdce17 100644 --- a/trunk/arch/i386/kernel/time_hpet.c +++ b/trunk/arch/i386/kernel/time_hpet.c @@ -18,6 +18,7 @@ #include #include +#include #include #include diff --git a/trunk/arch/i386/kernel/traps.c b/trunk/arch/i386/kernel/traps.c index e8c6086b2aa1..78464097470a 100644 --- a/trunk/arch/i386/kernel/traps.c +++ b/trunk/arch/i386/kernel/traps.c @@ -11,6 +11,7 @@ * 'Traps.c' handles hardware traps and faults after we have saved some * state in 'asm.s'. */ +#include #include #include #include diff --git a/trunk/arch/i386/kernel/vm86.c b/trunk/arch/i386/kernel/vm86.c index 8355d8d87d18..00e0118e717c 100644 --- a/trunk/arch/i386/kernel/vm86.c +++ b/trunk/arch/i386/kernel/vm86.c @@ -31,6 +31,7 @@ */ #include +#include #include #include #include diff --git a/trunk/arch/i386/lib/checksum.S b/trunk/arch/i386/lib/checksum.S index 75ffd02654fc..94c7867ddc33 100644 --- a/trunk/arch/i386/lib/checksum.S +++ b/trunk/arch/i386/lib/checksum.S @@ -25,6 +25,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include /* diff --git a/trunk/arch/i386/lib/memcpy.c b/trunk/arch/i386/lib/memcpy.c index 8ac51b82a632..891b2359d18a 100644 --- a/trunk/arch/i386/lib/memcpy.c +++ b/trunk/arch/i386/lib/memcpy.c @@ -1,3 +1,4 @@ +#include #include #include diff --git a/trunk/arch/i386/lib/mmx.c b/trunk/arch/i386/lib/mmx.c index 28084d2e8dd4..2afda94dffd3 100644 --- a/trunk/arch/i386/lib/mmx.c +++ b/trunk/arch/i386/lib/mmx.c @@ -1,3 +1,4 @@ +#include #include #include #include diff --git a/trunk/arch/i386/lib/usercopy.c b/trunk/arch/i386/lib/usercopy.c index 4b75212ab6dd..c5aa65f7c02a 100644 --- a/trunk/arch/i386/lib/usercopy.c +++ b/trunk/arch/i386/lib/usercopy.c @@ -5,6 +5,7 @@ * Copyright 1997 Andi Kleen * Copyright 1997 Linus Torvalds */ +#include #include #include #include diff --git a/trunk/arch/i386/mach-default/setup.c b/trunk/arch/i386/mach-default/setup.c index 77c8c83815c1..004837c58793 100644 --- a/trunk/arch/i386/mach-default/setup.c +++ b/trunk/arch/i386/mach-default/setup.c @@ -2,6 +2,7 @@ * Machine specific setup for generic */ +#include #include #include #include diff --git a/trunk/arch/i386/mach-generic/bigsmp.c b/trunk/arch/i386/mach-generic/bigsmp.c index ef7a6e6fcb9f..037b2af1a1f4 100644 --- a/trunk/arch/i386/mach-generic/bigsmp.c +++ b/trunk/arch/i386/mach-generic/bigsmp.c @@ -3,6 +3,7 @@ * Drives the local APIC in "clustered mode". */ #define APIC_DEFINITION 1 +#include #include #include #include diff --git a/trunk/arch/i386/mach-generic/default.c b/trunk/arch/i386/mach-generic/default.c index 96c19821e47d..7da14e9a79c3 100644 --- a/trunk/arch/i386/mach-generic/default.c +++ b/trunk/arch/i386/mach-generic/default.c @@ -2,6 +2,7 @@ * Default generic APIC driver. This handles upto 8 CPUs. */ #define APIC_DEFINITION 1 +#include #include #include #include diff --git a/trunk/arch/i386/mach-generic/es7000.c b/trunk/arch/i386/mach-generic/es7000.c index 845cdd0b3593..48d3ec37241b 100644 --- a/trunk/arch/i386/mach-generic/es7000.c +++ b/trunk/arch/i386/mach-generic/es7000.c @@ -2,6 +2,7 @@ * APIC driver for the Unisys ES7000 chipset. */ #define APIC_DEFINITION 1 +#include #include #include #include diff --git a/trunk/arch/i386/mach-generic/probe.c b/trunk/arch/i386/mach-generic/probe.c index bcd1bcfaa723..d55fa7b187ab 100644 --- a/trunk/arch/i386/mach-generic/probe.c +++ b/trunk/arch/i386/mach-generic/probe.c @@ -3,6 +3,7 @@ * * Generic x86 APIC driver probe layer. */ +#include #include #include #include diff --git a/trunk/arch/i386/mach-generic/summit.c b/trunk/arch/i386/mach-generic/summit.c index b73501ddd653..65ddf74d7f25 100644 --- a/trunk/arch/i386/mach-generic/summit.c +++ b/trunk/arch/i386/mach-generic/summit.c @@ -2,6 +2,7 @@ * APIC driver for the IBM "Summit" chipset. */ #define APIC_DEFINITION 1 +#include #include #include #include diff --git a/trunk/arch/i386/mach-visws/mpparse.c b/trunk/arch/i386/mach-visws/mpparse.c index f3c74fab8b95..5f3d7e6de37b 100644 --- a/trunk/arch/i386/mach-visws/mpparse.c +++ b/trunk/arch/i386/mach-visws/mpparse.c @@ -1,4 +1,5 @@ +#include #include #include diff --git a/trunk/arch/i386/mach-visws/traps.c b/trunk/arch/i386/mach-visws/traps.c index 5199bd03254a..964353992031 100644 --- a/trunk/arch/i386/mach-visws/traps.c +++ b/trunk/arch/i386/mach-visws/traps.c @@ -1,5 +1,6 @@ /* VISWS traps */ +#include #include #include #include diff --git a/trunk/arch/i386/mach-visws/visws_apic.c b/trunk/arch/i386/mach-visws/visws_apic.c index 828522541a88..c418521dd554 100644 --- a/trunk/arch/i386/mach-visws/visws_apic.c +++ b/trunk/arch/i386/mach-visws/visws_apic.c @@ -16,6 +16,7 @@ * 25/11/2002 - Updated for 2.5 by Andrey Panin */ +#include #include #include #include diff --git a/trunk/arch/i386/mach-voyager/setup.c b/trunk/arch/i386/mach-voyager/setup.c index 9da9ef09068d..defc6ebbd565 100644 --- a/trunk/arch/i386/mach-voyager/setup.c +++ b/trunk/arch/i386/mach-voyager/setup.c @@ -2,6 +2,7 @@ * Machine specific setup for generic */ +#include #include #include #include diff --git a/trunk/arch/i386/mach-voyager/voyager_basic.c b/trunk/arch/i386/mach-voyager/voyager_basic.c index 80b7f2fc4f46..b584060ec004 100644 --- a/trunk/arch/i386/mach-voyager/voyager_basic.c +++ b/trunk/arch/i386/mach-voyager/voyager_basic.c @@ -12,6 +12,7 @@ * voyager_smp.c - Voyager SMP hal (emulates linux smp.c) */ +#include #include #include #include diff --git a/trunk/arch/i386/mach-voyager/voyager_cat.c b/trunk/arch/i386/mach-voyager/voyager_cat.c index f50c6c6ad680..10d21df14531 100644 --- a/trunk/arch/i386/mach-voyager/voyager_cat.c +++ b/trunk/arch/i386/mach-voyager/voyager_cat.c @@ -16,6 +16,7 @@ * of bit shift manipulations to send and receive packets on the * serial bus */ +#include #include #include #include diff --git a/trunk/arch/i386/mach-voyager/voyager_smp.c b/trunk/arch/i386/mach-voyager/voyager_smp.c index 6c86575ffdcb..5b8b579a079f 100644 --- a/trunk/arch/i386/mach-voyager/voyager_smp.c +++ b/trunk/arch/i386/mach-voyager/voyager_smp.c @@ -9,6 +9,7 @@ * This file provides all the same external entries as smp.c but uses * the voyager hal to provide the functionality */ +#include #include #include #include @@ -1937,9 +1938,3 @@ smp_cpus_done(unsigned int max_cpus) { zap_low_mappings(); } - -void __init -smp_setup_processor_id(void) -{ - current_thread_info()->cpu = hard_smp_processor_id(); -} diff --git a/trunk/arch/i386/mach-voyager/voyager_thread.c b/trunk/arch/i386/mach-voyager/voyager_thread.c index 50f6de6ff64d..2b03884fdb2a 100644 --- a/trunk/arch/i386/mach-voyager/voyager_thread.c +++ b/trunk/arch/i386/mach-voyager/voyager_thread.c @@ -14,6 +14,7 @@ * */ #include +#include #include #include #include diff --git a/trunk/arch/i386/mm/boot_ioremap.c b/trunk/arch/i386/mm/boot_ioremap.c index 5d44f4f5ff59..523b30634e0a 100644 --- a/trunk/arch/i386/mm/boot_ioremap.c +++ b/trunk/arch/i386/mm/boot_ioremap.c @@ -15,6 +15,7 @@ * boot_pte_t is defined only if this all works correctly */ +#include #undef CONFIG_X86_PAE #include #include diff --git a/trunk/arch/i386/mm/discontig.c b/trunk/arch/i386/mm/discontig.c index 7c392dc553b8..fe6eb901326e 100644 --- a/trunk/arch/i386/mm/discontig.c +++ b/trunk/arch/i386/mm/discontig.c @@ -22,6 +22,7 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include @@ -42,7 +43,7 @@ EXPORT_SYMBOL(node_data); bootmem_data_t node0_bdata; /* - * numa interface - we expect the numa architecture specific code to have + * numa interface - we expect the numa architecture specfic code to have * populated the following initialisation. * * 1) node_online_map - the map of all nodes configured (online) in the system diff --git a/trunk/arch/i386/mm/extable.c b/trunk/arch/i386/mm/extable.c index de03c5430abc..f706449319c4 100644 --- a/trunk/arch/i386/mm/extable.c +++ b/trunk/arch/i386/mm/extable.c @@ -2,6 +2,7 @@ * linux/arch/i386/mm/extable.c */ +#include #include #include #include diff --git a/trunk/arch/i386/mm/fault.c b/trunk/arch/i386/mm/fault.c index f7279468323a..6ee7faaf2c1b 100644 --- a/trunk/arch/i386/mm/fault.c +++ b/trunk/arch/i386/mm/fault.c @@ -389,7 +389,7 @@ fastcall void __kprobes do_page_fault(struct pt_regs *regs, /* When running in the kernel we expect faults to occur only to * addresses in user space. All other faults represent errors in the * kernel and should generate an OOPS. Unfortunatly, in the case of an - * erroneous fault occurring in a code path which already holds mmap_sem + * erroneous fault occuring in a code path which already holds mmap_sem * we will deadlock attempting to validate the fault against the * address space. Luckily the kernel only validly references user * space from well defined areas of code, which are listed in the diff --git a/trunk/arch/i386/mm/hugetlbpage.c b/trunk/arch/i386/mm/hugetlbpage.c index 1719a8141f81..a7d891585411 100644 --- a/trunk/arch/i386/mm/hugetlbpage.c +++ b/trunk/arch/i386/mm/hugetlbpage.c @@ -4,6 +4,7 @@ * Copyright (C) 2002, Rohit Seth */ +#include #include #include #include diff --git a/trunk/arch/i386/mm/init.c b/trunk/arch/i386/mm/init.c index 89e8486aac34..f84b16e007ff 100644 --- a/trunk/arch/i386/mm/init.c +++ b/trunk/arch/i386/mm/init.c @@ -6,6 +6,7 @@ * Support of BIGMEM added by Gerhard Wichert, Siemens AG, July 1999 */ +#include #include #include #include @@ -725,15 +726,16 @@ static int noinline do_test_wp_bit(void) #ifdef CONFIG_DEBUG_RODATA +extern char __start_rodata, __end_rodata; void mark_rodata_ro(void) { - unsigned long addr = (unsigned long)__start_rodata; + unsigned long addr = (unsigned long)&__start_rodata; - for (; addr < (unsigned long)__end_rodata; addr += PAGE_SIZE) + for (; addr < (unsigned long)&__end_rodata; addr += PAGE_SIZE) change_page_attr(virt_to_page(addr), 1, PAGE_KERNEL_RO); - printk("Write protecting the kernel read-only data: %uk\n", - (__end_rodata - __start_rodata) >> 10); + printk ("Write protecting the kernel read-only data: %luk\n", + (unsigned long)(&__end_rodata - &__start_rodata) >> 10); /* * change_page_attr() requires a global_flush_tlb() call after it. diff --git a/trunk/arch/i386/mm/pageattr.c b/trunk/arch/i386/mm/pageattr.c index 8564b6ae17e3..353a836ed63c 100644 --- a/trunk/arch/i386/mm/pageattr.c +++ b/trunk/arch/i386/mm/pageattr.c @@ -3,6 +3,7 @@ * Thanks to Ben LaHaise for precious feedback. */ +#include #include #include #include diff --git a/trunk/arch/i386/mm/pgtable.c b/trunk/arch/i386/mm/pgtable.c index bd98768d8764..2889567e21a1 100644 --- a/trunk/arch/i386/mm/pgtable.c +++ b/trunk/arch/i386/mm/pgtable.c @@ -2,6 +2,7 @@ * linux/arch/i386/mm/pgtable.c */ +#include #include #include #include @@ -29,6 +30,7 @@ void show_mem(void) struct page *page; pg_data_t *pgdat; unsigned long i; + struct page_state ps; unsigned long flags; printk(KERN_INFO "Mem-info:\n"); @@ -56,13 +58,12 @@ void show_mem(void) printk(KERN_INFO "%d pages shared\n", shared); printk(KERN_INFO "%d pages swap cached\n", cached); - printk(KERN_INFO "%lu pages dirty\n", global_page_state(NR_FILE_DIRTY)); - printk(KERN_INFO "%lu pages writeback\n", - global_page_state(NR_WRITEBACK)); - printk(KERN_INFO "%lu pages mapped\n", global_page_state(NR_FILE_MAPPED)); - printk(KERN_INFO "%lu pages slab\n", global_page_state(NR_SLAB)); - printk(KERN_INFO "%lu pages pagetables\n", - global_page_state(NR_PAGETABLE)); + get_page_state(&ps); + printk(KERN_INFO "%lu pages dirty\n", ps.nr_dirty); + printk(KERN_INFO "%lu pages writeback\n", ps.nr_writeback); + printk(KERN_INFO "%lu pages mapped\n", ps.nr_mapped); + printk(KERN_INFO "%lu pages slab\n", ps.nr_slab); + printk(KERN_INFO "%lu pages pagetables\n", ps.nr_page_table_pages); } /* diff --git a/trunk/arch/i386/pci/init.c b/trunk/arch/i386/pci/init.c index c7650a7e0b07..f9156d3ac723 100644 --- a/trunk/arch/i386/pci/init.c +++ b/trunk/arch/i386/pci/init.c @@ -1,3 +1,4 @@ +#include #include #include #include "pci.h" diff --git a/trunk/arch/i386/pci/irq.c b/trunk/arch/i386/pci/irq.c index bdb4896c56e6..8ce69508f3c7 100644 --- a/trunk/arch/i386/pci/irq.c +++ b/trunk/arch/i386/pci/irq.c @@ -4,6 +4,7 @@ * (c) 1999--2000 Martin Mares */ +#include #include #include #include diff --git a/trunk/arch/i386/pci/visws.c b/trunk/arch/i386/pci/visws.c index f1b486d4190b..6c17433fdf7d 100644 --- a/trunk/arch/i386/pci/visws.c +++ b/trunk/arch/i386/pci/visws.c @@ -4,6 +4,7 @@ * (c) 1999--2000 Martin Mares */ +#include #include #include #include diff --git a/trunk/arch/i386/power/cpu.c b/trunk/arch/i386/power/cpu.c index 5a1abeff033b..e6517915fe3e 100644 --- a/trunk/arch/i386/power/cpu.c +++ b/trunk/arch/i386/power/cpu.c @@ -7,6 +7,7 @@ * Copyright (c) 2001 Patrick Mochel */ +#include #include #include #include diff --git a/trunk/arch/ia64/Kconfig b/trunk/arch/ia64/Kconfig index 47de9ee6bcd6..b487e227a1f7 100644 --- a/trunk/arch/ia64/Kconfig +++ b/trunk/arch/ia64/Kconfig @@ -70,11 +70,6 @@ config DMA_IS_DMA32 bool default y -config DMA_IS_NORMAL - bool - depends on IA64_SGI_SN2 - default y - choice prompt "System type" default IA64_GENERIC diff --git a/trunk/arch/ia64/dig/setup.c b/trunk/arch/ia64/dig/setup.c index 5ab12b8351d0..38aa9c108857 100644 --- a/trunk/arch/ia64/dig/setup.c +++ b/trunk/arch/ia64/dig/setup.c @@ -8,6 +8,7 @@ * Copyright (C) 1999 Walt Drummond * Copyright (C) 1999 Vijay Chander */ +#include #include #include diff --git a/trunk/arch/ia64/hp/common/sba_iommu.c b/trunk/arch/ia64/hp/common/sba_iommu.c index db8e1fcfa047..5825ddee58d6 100644 --- a/trunk/arch/ia64/hp/common/sba_iommu.c +++ b/trunk/arch/ia64/hp/common/sba_iommu.c @@ -19,6 +19,7 @@ ** */ +#include #include #include #include diff --git a/trunk/arch/ia64/hp/sim/boot/bootloader.c b/trunk/arch/ia64/hp/sim/boot/bootloader.c index c5e9baafafe0..51a7b7b4dd0e 100644 --- a/trunk/arch/ia64/hp/sim/boot/bootloader.c +++ b/trunk/arch/ia64/hp/sim/boot/bootloader.c @@ -11,6 +11,7 @@ */ struct task_struct; /* forward declaration for elf.h */ +#include #include #include #include diff --git a/trunk/arch/ia64/hp/sim/boot/fw-emu.c b/trunk/arch/ia64/hp/sim/boot/fw-emu.c index 5a0a7afcfc3a..30fdfb1d0a53 100644 --- a/trunk/arch/ia64/hp/sim/boot/fw-emu.c +++ b/trunk/arch/ia64/hp/sim/boot/fw-emu.c @@ -4,6 +4,7 @@ * Copyright (C) 1998-2001 Hewlett-Packard Co * David Mosberger-Tang */ +#include #ifdef CONFIG_PCI # include diff --git a/trunk/arch/ia64/hp/sim/hpsim_console.c b/trunk/arch/ia64/hp/sim/hpsim_console.c index 6e149c8ab835..5deff21e5877 100644 --- a/trunk/arch/ia64/hp/sim/hpsim_console.c +++ b/trunk/arch/ia64/hp/sim/hpsim_console.c @@ -5,6 +5,7 @@ * David Mosberger-Tang * Copyright (C) 1999 Vijay Chander */ +#include #include #include diff --git a/trunk/arch/ia64/hp/sim/hpsim_setup.c b/trunk/arch/ia64/hp/sim/hpsim_setup.c index f2297192a582..694fc86bfbd5 100644 --- a/trunk/arch/ia64/hp/sim/hpsim_setup.c +++ b/trunk/arch/ia64/hp/sim/hpsim_setup.c @@ -5,6 +5,7 @@ * David Mosberger-Tang * Copyright (C) 1999 Vijay Chander */ +#include #include #include #include diff --git a/trunk/arch/ia64/hp/sim/simeth.c b/trunk/arch/ia64/hp/sim/simeth.c index b5195be62818..0639ec0ed015 100644 --- a/trunk/arch/ia64/hp/sim/simeth.c +++ b/trunk/arch/ia64/hp/sim/simeth.c @@ -4,6 +4,7 @@ * Copyright (C) 1999-2001, 2003 Hewlett-Packard Co * Stephane Eranian */ +#include #include #include #include diff --git a/trunk/arch/ia64/hp/sim/simserial.c b/trunk/arch/ia64/hp/sim/simserial.c index 33a3bbc8f67f..0e5c6ae50228 100644 --- a/trunk/arch/ia64/hp/sim/simserial.c +++ b/trunk/arch/ia64/hp/sim/simserial.c @@ -16,6 +16,7 @@ * 07/30/02 D. Mosberger Replace sti()/cli() with explicit spinlocks & local irq masking */ +#include #include #include #include diff --git a/trunk/arch/ia64/ia32/Makefile b/trunk/arch/ia64/ia32/Makefile index baad8c7699c0..61cb60affd95 100644 --- a/trunk/arch/ia64/ia32/Makefile +++ b/trunk/arch/ia64/ia32/Makefile @@ -4,7 +4,6 @@ obj-y := ia32_entry.o sys_ia32.o ia32_signal.o \ ia32_support.o ia32_traps.o binfmt_elf32.o ia32_ldt.o -obj-$(CONFIG_AUDIT) += audit.o # Don't let GCC uses f16-f31 so that save_ia32_fpstate_live() and # restore_ia32_fpstate_live() can be sure the live register contain user-level state. diff --git a/trunk/arch/ia64/ia32/audit.c b/trunk/arch/ia64/ia32/audit.c deleted file mode 100644 index ab94f2e58cdd..000000000000 --- a/trunk/arch/ia64/ia32/audit.c +++ /dev/null @@ -1,11 +0,0 @@ -#include - -unsigned ia32_dir_class[] = { -#include -~0U -}; - -unsigned ia32_chattr_class[] = { -#include -~0U -}; diff --git a/trunk/arch/ia64/ia32/binfmt_elf32.c b/trunk/arch/ia64/ia32/binfmt_elf32.c index daa6b91bc921..da03c06744f1 100644 --- a/trunk/arch/ia64/ia32/binfmt_elf32.c +++ b/trunk/arch/ia64/ia32/binfmt_elf32.c @@ -9,6 +9,7 @@ * 04/13/01 D. Mosberger dropped saving tssd in ar.k1---it's not needed * 09/14/01 D. Mosberger fixed memory management for gdt/tss page */ +#include #include #include diff --git a/trunk/arch/ia64/ia32/ia32priv.h b/trunk/arch/ia64/ia32/ia32priv.h index 703a67c934f8..ccb98ed48e58 100644 --- a/trunk/arch/ia64/ia32/ia32priv.h +++ b/trunk/arch/ia64/ia32/ia32priv.h @@ -1,6 +1,7 @@ #ifndef _ASM_IA64_IA32_PRIV_H #define _ASM_IA64_IA32_PRIV_H +#include #include diff --git a/trunk/arch/ia64/ia32/sys_ia32.c b/trunk/arch/ia64/ia32/sys_ia32.c index 6aa3c51619ca..5366b3b23d09 100644 --- a/trunk/arch/ia64/ia32/sys_ia32.c +++ b/trunk/arch/ia64/ia32/sys_ia32.c @@ -14,6 +14,7 @@ * environment. */ +#include #include #include #include diff --git a/trunk/arch/ia64/kernel/Makefile b/trunk/arch/ia64/kernel/Makefile index 0e4553f320bf..09a0dbc17fb6 100644 --- a/trunk/arch/ia64/kernel/Makefile +++ b/trunk/arch/ia64/kernel/Makefile @@ -29,7 +29,6 @@ obj-$(CONFIG_CPU_FREQ) += cpufreq/ obj-$(CONFIG_IA64_MCA_RECOVERY) += mca_recovery.o obj-$(CONFIG_KPROBES) += kprobes.o jprobes.o obj-$(CONFIG_IA64_UNCACHED_ALLOCATOR) += uncached.o -obj-$(CONFIG_AUDIT) += audit.o mca_recovery-y += mca_drv.o mca_drv_asm.o # The gate DSO image is built using a special linker script. diff --git a/trunk/arch/ia64/kernel/acpi-ext.c b/trunk/arch/ia64/kernel/acpi-ext.c index b7515bc808a8..fff82929d225 100644 --- a/trunk/arch/ia64/kernel/acpi-ext.c +++ b/trunk/arch/ia64/kernel/acpi-ext.c @@ -8,6 +8,7 @@ * published by the Free Software Foundation. */ +#include #include #include #include @@ -50,7 +51,7 @@ static acpi_status hp_ccsr_locate(acpi_handle obj, u64 *base, u64 *length) memcpy(length, vendor->byte_data + 8, sizeof(*length)); exit: - kfree(buffer.pointer); + acpi_os_free(buffer.pointer); return status; } diff --git a/trunk/arch/ia64/kernel/acpi.c b/trunk/arch/ia64/kernel/acpi.c index 99761b81db44..ca16d9556bde 100644 --- a/trunk/arch/ia64/kernel/acpi.c +++ b/trunk/arch/ia64/kernel/acpi.c @@ -32,6 +32,7 @@ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ +#include #include #include #include @@ -856,7 +857,7 @@ int acpi_map_lsapic(acpi_handle handle, int *pcpu) obj = buffer.pointer; if (obj->type != ACPI_TYPE_BUFFER || obj->buffer.length < sizeof(*lsapic)) { - kfree(buffer.pointer); + acpi_os_free(buffer.pointer); return -EINVAL; } @@ -864,13 +865,13 @@ int acpi_map_lsapic(acpi_handle handle, int *pcpu) if ((lsapic->header.type != ACPI_MADT_LSAPIC) || (!lsapic->flags.enabled)) { - kfree(buffer.pointer); + acpi_os_free(buffer.pointer); return -EINVAL; } physid = ((lsapic->id << 8) | (lsapic->eid)); - kfree(buffer.pointer); + acpi_os_free(buffer.pointer); buffer.length = ACPI_ALLOCATE_BUFFER; buffer.pointer = NULL; @@ -934,20 +935,20 @@ acpi_map_iosapic(acpi_handle handle, u32 depth, void *context, void **ret) obj = buffer.pointer; if (obj->type != ACPI_TYPE_BUFFER || obj->buffer.length < sizeof(*iosapic)) { - kfree(buffer.pointer); + acpi_os_free(buffer.pointer); return AE_OK; } iosapic = (struct acpi_table_iosapic *)obj->buffer.pointer; if (iosapic->header.type != ACPI_MADT_IOSAPIC) { - kfree(buffer.pointer); + acpi_os_free(buffer.pointer); return AE_OK; } gsi_base = iosapic->global_irq_base; - kfree(buffer.pointer); + acpi_os_free(buffer.pointer); /* * OK, it's an IOSAPIC MADT entry, look for a _PXM value to tell diff --git a/trunk/arch/ia64/kernel/asm-offsets.c b/trunk/arch/ia64/kernel/asm-offsets.c index 75a2a2c12258..16e7b6600ae6 100644 --- a/trunk/arch/ia64/kernel/asm-offsets.c +++ b/trunk/arch/ia64/kernel/asm-offsets.c @@ -5,6 +5,7 @@ */ #define ASM_OFFSETS_C 1 +#include #include diff --git a/trunk/arch/ia64/kernel/audit.c b/trunk/arch/ia64/kernel/audit.c deleted file mode 100644 index f2512931ccaf..000000000000 --- a/trunk/arch/ia64/kernel/audit.c +++ /dev/null @@ -1,29 +0,0 @@ -#include -#include -#include -#include - -static unsigned dir_class[] = { -#include -~0U -}; - -static unsigned chattr_class[] = { -#include -~0U -}; - -static int __init audit_classes_init(void) -{ -#ifdef CONFIG_IA32_SUPPORT - extern __u32 ia32_dir_class[]; - extern __u32 ia32_chattr_class[]; - audit_register_class(AUDIT_CLASS_DIR_WRITE_32, ia32_dir_class); - audit_register_class(AUDIT_CLASS_CHATTR_32, ia32_chattr_class); -#endif - audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); - audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); - return 0; -} - -__initcall(audit_classes_init); diff --git a/trunk/arch/ia64/kernel/cpufreq/acpi-cpufreq.c b/trunk/arch/ia64/kernel/cpufreq/acpi-cpufreq.c index 86faf221a070..5a1bf815282d 100644 --- a/trunk/arch/ia64/kernel/cpufreq/acpi-cpufreq.c +++ b/trunk/arch/ia64/kernel/cpufreq/acpi-cpufreq.c @@ -9,6 +9,7 @@ * Venkatesh Pallipadi */ +#include #include #include #include diff --git a/trunk/arch/ia64/kernel/efi.c b/trunk/arch/ia64/kernel/efi.c index b13c0555c3ba..c33d0ba7e300 100644 --- a/trunk/arch/ia64/kernel/efi.c +++ b/trunk/arch/ia64/kernel/efi.c @@ -20,6 +20,7 @@ * Goutham Rao: * Skip non-WB memory and ignore empty memory ranges. */ +#include #include #include #include diff --git a/trunk/arch/ia64/kernel/entry.S b/trunk/arch/ia64/kernel/entry.S index 12701cf32d99..32c999f58d12 100644 --- a/trunk/arch/ia64/kernel/entry.S +++ b/trunk/arch/ia64/kernel/entry.S @@ -31,6 +31,7 @@ * pNonSys: !pSys */ +#include #include #include diff --git a/trunk/arch/ia64/kernel/entry.h b/trunk/arch/ia64/kernel/entry.h index b83edac02965..ebc3dfb88826 100644 --- a/trunk/arch/ia64/kernel/entry.h +++ b/trunk/arch/ia64/kernel/entry.h @@ -1,3 +1,4 @@ +#include /* * Preserved registers that are shared between code in ivt.S and diff --git a/trunk/arch/ia64/kernel/gate.S b/trunk/arch/ia64/kernel/gate.S index 3274850cf272..86064ca98952 100644 --- a/trunk/arch/ia64/kernel/gate.S +++ b/trunk/arch/ia64/kernel/gate.S @@ -6,6 +6,7 @@ * David Mosberger-Tang */ +#include #include #include diff --git a/trunk/arch/ia64/kernel/gate.lds.S b/trunk/arch/ia64/kernel/gate.lds.S index cc35cddfd4cf..7c99e6ec3daf 100644 --- a/trunk/arch/ia64/kernel/gate.lds.S +++ b/trunk/arch/ia64/kernel/gate.lds.S @@ -4,6 +4,7 @@ * in one page). This script controls its layout. */ +#include #include diff --git a/trunk/arch/ia64/kernel/head.S b/trunk/arch/ia64/kernel/head.S index 561b8f1d3bc7..f1778a84ea61 100644 --- a/trunk/arch/ia64/kernel/head.S +++ b/trunk/arch/ia64/kernel/head.S @@ -19,6 +19,7 @@ * Support for CPU Hotplug */ +#include #include #include diff --git a/trunk/arch/ia64/kernel/ia64_ksyms.c b/trunk/arch/ia64/kernel/ia64_ksyms.c index b7cf651ceb14..bbcfd08378a6 100644 --- a/trunk/arch/ia64/kernel/ia64_ksyms.c +++ b/trunk/arch/ia64/kernel/ia64_ksyms.c @@ -5,6 +5,7 @@ * All other exports should be put directly after the definition. */ +#include #include #include diff --git a/trunk/arch/ia64/kernel/iosapic.c b/trunk/arch/ia64/kernel/iosapic.c index 9bf15fefa7e4..efc7df4b0fd2 100644 --- a/trunk/arch/ia64/kernel/iosapic.c +++ b/trunk/arch/ia64/kernel/iosapic.c @@ -79,6 +79,7 @@ * describeinterrupts. Now we use "IRQ" only for Linux IRQ's. ISA IRQ * (isa_irq) is the only exception in this source code. */ +#include #include #include diff --git a/trunk/arch/ia64/kernel/irq_ia64.c b/trunk/arch/ia64/kernel/irq_ia64.c index 3e6fcb056bcb..f5035304594e 100644 --- a/trunk/arch/ia64/kernel/irq_ia64.c +++ b/trunk/arch/ia64/kernel/irq_ia64.c @@ -14,6 +14,7 @@ * Added CPU Hotplug handling for IPF. */ +#include #include #include diff --git a/trunk/arch/ia64/kernel/ivt.S b/trunk/arch/ia64/kernel/ivt.S index 6b7fcbd3f6f1..829a43cab797 100644 --- a/trunk/arch/ia64/kernel/ivt.S +++ b/trunk/arch/ia64/kernel/ivt.S @@ -38,6 +38,7 @@ * Table is based upon EAS2.6 (Oct 1999) */ +#include #include #include diff --git a/trunk/arch/ia64/kernel/kprobes.c b/trunk/arch/ia64/kernel/kprobes.c index 00d9c83b8020..f9039f88d01d 100644 --- a/trunk/arch/ia64/kernel/kprobes.c +++ b/trunk/arch/ia64/kernel/kprobes.c @@ -23,6 +23,7 @@ * adapted from i386 */ +#include #include #include #include diff --git a/trunk/arch/ia64/kernel/machvec.c b/trunk/arch/ia64/kernel/machvec.c index d4a546aa5048..4b0b71d5aef4 100644 --- a/trunk/arch/ia64/kernel/machvec.c +++ b/trunk/arch/ia64/kernel/machvec.c @@ -1,3 +1,4 @@ +#include #include #include diff --git a/trunk/arch/ia64/kernel/mca.c b/trunk/arch/ia64/kernel/mca.c index 584df1772845..d7dc5e63de63 100644 --- a/trunk/arch/ia64/kernel/mca.c +++ b/trunk/arch/ia64/kernel/mca.c @@ -55,6 +55,7 @@ * 2005-10-07 Keith Owens * Add notify_die() hooks. */ +#include #include #include #include diff --git a/trunk/arch/ia64/kernel/mca_asm.S b/trunk/arch/ia64/kernel/mca_asm.S index 96047491d1b9..c1bd1feffab0 100644 --- a/trunk/arch/ia64/kernel/mca_asm.S +++ b/trunk/arch/ia64/kernel/mca_asm.S @@ -19,6 +19,7 @@ // 12/08/05 Keith Owens // Use per cpu MCA/INIT stacks for all data. // +#include #include #include diff --git a/trunk/arch/ia64/kernel/mca_drv.c b/trunk/arch/ia64/kernel/mca_drv.c index 8db6e0cedadc..ca6666b51ccb 100644 --- a/trunk/arch/ia64/kernel/mca_drv.c +++ b/trunk/arch/ia64/kernel/mca_drv.c @@ -8,6 +8,7 @@ * Copyright (C) 2005 Keith Owens * Copyright (C) 2006 Russ Anderson */ +#include #include #include #include diff --git a/trunk/arch/ia64/kernel/mca_drv_asm.S b/trunk/arch/ia64/kernel/mca_drv_asm.S index f2d4900751ba..e6a580d354b9 100644 --- a/trunk/arch/ia64/kernel/mca_drv_asm.S +++ b/trunk/arch/ia64/kernel/mca_drv_asm.S @@ -5,6 +5,7 @@ * Copyright (C) 2004 FUJITSU LIMITED * Copyright (C) Hidetoshi Seto (seto.hidetoshi@jp.fujitsu.com) */ +#include #include #include diff --git a/trunk/arch/ia64/kernel/minstate.h b/trunk/arch/ia64/kernel/minstate.h index c9ac8bada786..85ed54179afa 100644 --- a/trunk/arch/ia64/kernel/minstate.h +++ b/trunk/arch/ia64/kernel/minstate.h @@ -1,3 +1,4 @@ +#include #include diff --git a/trunk/arch/ia64/kernel/module.c b/trunk/arch/ia64/kernel/module.c index 158e3c51bb77..3a30cfc9574f 100644 --- a/trunk/arch/ia64/kernel/module.c +++ b/trunk/arch/ia64/kernel/module.c @@ -25,6 +25,7 @@ SEGREL64LSB */ +#include #include #include diff --git a/trunk/arch/ia64/kernel/numa.c b/trunk/arch/ia64/kernel/numa.c index 1cc360c83e7a..0766493d4d00 100644 --- a/trunk/arch/ia64/kernel/numa.c +++ b/trunk/arch/ia64/kernel/numa.c @@ -19,6 +19,7 @@ * Copyright (C) 2004 Silicon Graphics, Inc. * Jesse Barnes */ +#include #include #include #include diff --git a/trunk/arch/ia64/kernel/palinfo.c b/trunk/arch/ia64/kernel/palinfo.c index 3f5bac59209a..8a1208419138 100644 --- a/trunk/arch/ia64/kernel/palinfo.c +++ b/trunk/arch/ia64/kernel/palinfo.c @@ -17,6 +17,7 @@ * 10/23/2001 S.Eranian updated pal_perf_mon_info bug fixes * 03/24/2004 Ashok Raj updated to work with CPU Hotplug */ +#include #include #include #include diff --git a/trunk/arch/ia64/kernel/perfmon.c b/trunk/arch/ia64/kernel/perfmon.c index 92b815d13418..a0055d3d695c 100644 --- a/trunk/arch/ia64/kernel/perfmon.c +++ b/trunk/arch/ia64/kernel/perfmon.c @@ -19,6 +19,7 @@ * http://www.hpl.hp.com/research/linux/perfmon */ +#include #include #include #include diff --git a/trunk/arch/ia64/kernel/perfmon_default_smpl.c b/trunk/arch/ia64/kernel/perfmon_default_smpl.c index ff80eab83b38..344941db0a9e 100644 --- a/trunk/arch/ia64/kernel/perfmon_default_smpl.c +++ b/trunk/arch/ia64/kernel/perfmon_default_smpl.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/ia64/kernel/process.c b/trunk/arch/ia64/kernel/process.c index ea914cc6812a..b045c279136c 100644 --- a/trunk/arch/ia64/kernel/process.c +++ b/trunk/arch/ia64/kernel/process.c @@ -9,6 +9,7 @@ * Add notify_die() hooks. */ #define __KERNEL_SYSCALLS__ /* see */ +#include #include #include diff --git a/trunk/arch/ia64/kernel/ptrace.c b/trunk/arch/ia64/kernel/ptrace.c index aa705e46b974..e61e15e28d8b 100644 --- a/trunk/arch/ia64/kernel/ptrace.c +++ b/trunk/arch/ia64/kernel/ptrace.c @@ -6,6 +6,7 @@ * * Derived from the x86 and Alpha versions. */ +#include #include #include #include diff --git a/trunk/arch/ia64/kernel/sal.c b/trunk/arch/ia64/kernel/sal.c index 642fdc7b969d..77fa65903d94 100644 --- a/trunk/arch/ia64/kernel/sal.c +++ b/trunk/arch/ia64/kernel/sal.c @@ -6,6 +6,7 @@ * Copyright (C) 1999 VA Linux Systems * Copyright (C) 1999 Walt Drummond */ +#include #include #include diff --git a/trunk/arch/ia64/kernel/setup.c b/trunk/arch/ia64/kernel/setup.c index 6a33f414de58..6dba2d63f24d 100644 --- a/trunk/arch/ia64/kernel/setup.c +++ b/trunk/arch/ia64/kernel/setup.c @@ -22,6 +22,7 @@ * 06/24/99 W.Drummond added boot_cpu_data. * 05/28/05 Z. Menyhart Dynamic stride size for "flush_icache_range()" */ +#include #include #include diff --git a/trunk/arch/ia64/kernel/signal.c b/trunk/arch/ia64/kernel/signal.c index 77f8b49c7882..1d7903ee2126 100644 --- a/trunk/arch/ia64/kernel/signal.c +++ b/trunk/arch/ia64/kernel/signal.c @@ -7,6 +7,7 @@ * Derived from i386 and Alpha versions. */ +#include #include #include #include diff --git a/trunk/arch/ia64/kernel/smpboot.c b/trunk/arch/ia64/kernel/smpboot.c index e1960979be29..5203df78f150 100644 --- a/trunk/arch/ia64/kernel/smpboot.c +++ b/trunk/arch/ia64/kernel/smpboot.c @@ -21,6 +21,7 @@ * 05/01/30 Suresh Siddha * Setup cpu_sibling_map and cpu_core_map */ +#include #include #include diff --git a/trunk/arch/ia64/kernel/sys_ia64.c b/trunk/arch/ia64/kernel/sys_ia64.c index 40722d88607a..c7b943f10199 100644 --- a/trunk/arch/ia64/kernel/sys_ia64.c +++ b/trunk/arch/ia64/kernel/sys_ia64.c @@ -5,6 +5,7 @@ * Copyright (C) 1999-2000, 2002-2003, 2005 Hewlett-Packard Co * David Mosberger-Tang */ +#include #include #include #include diff --git a/trunk/arch/ia64/kernel/time.c b/trunk/arch/ia64/kernel/time.c index 71ccddabc715..49958904045b 100644 --- a/trunk/arch/ia64/kernel/time.c +++ b/trunk/arch/ia64/kernel/time.c @@ -8,6 +8,7 @@ * Copyright (C) 1999-2000 VA Linux Systems * Copyright (C) 1999-2000 Walt Drummond */ +#include #include #include diff --git a/trunk/arch/ia64/kernel/topology.c b/trunk/arch/ia64/kernel/topology.c index b146f1cfad31..5511d9c6c701 100644 --- a/trunk/arch/ia64/kernel/topology.c +++ b/trunk/arch/ia64/kernel/topology.c @@ -13,6 +13,7 @@ * Populate cpu cache entries in sysfs for cpu cache info */ +#include #include #include #include diff --git a/trunk/arch/ia64/kernel/traps.c b/trunk/arch/ia64/kernel/traps.c index e7bbb0f40aa2..7c1ddc8ac443 100644 --- a/trunk/arch/ia64/kernel/traps.c +++ b/trunk/arch/ia64/kernel/traps.c @@ -7,6 +7,7 @@ * 05/12/00 grao : added isr in siginfo for SIGFPE */ +#include #include #include #include diff --git a/trunk/arch/ia64/kernel/vmlinux.lds.S b/trunk/arch/ia64/kernel/vmlinux.lds.S index 5b0d5f64a9b1..783600fe52b2 100644 --- a/trunk/arch/ia64/kernel/vmlinux.lds.S +++ b/trunk/arch/ia64/kernel/vmlinux.lds.S @@ -1,3 +1,4 @@ +#include #include #include diff --git a/trunk/arch/ia64/lib/clear_page.S b/trunk/arch/ia64/lib/clear_page.S index 2d814e7ed191..d4987061dda7 100644 --- a/trunk/arch/ia64/lib/clear_page.S +++ b/trunk/arch/ia64/lib/clear_page.S @@ -8,6 +8,7 @@ * 2/12/02 kchen Tuned for both Itanium and McKinley * 3/08/02 davidm Some more tweaking */ +#include #include #include diff --git a/trunk/arch/ia64/lib/io.c b/trunk/arch/ia64/lib/io.c index bcd16f8ad9d9..8949e44091ac 100644 --- a/trunk/arch/ia64/lib/io.c +++ b/trunk/arch/ia64/lib/io.c @@ -1,3 +1,4 @@ +#include #include #include diff --git a/trunk/arch/ia64/lib/memcpy_mck.S b/trunk/arch/ia64/lib/memcpy_mck.S index ab0f87639729..9e534d52b1d5 100644 --- a/trunk/arch/ia64/lib/memcpy_mck.S +++ b/trunk/arch/ia64/lib/memcpy_mck.S @@ -13,6 +13,7 @@ * Copyright (C) 2002 Intel Corp. * Copyright (C) 2002 Ken Chen */ +#include #include #include diff --git a/trunk/arch/ia64/mm/contig.c b/trunk/arch/ia64/mm/contig.c index 2a88cdd6d924..84fd1c14c8a9 100644 --- a/trunk/arch/ia64/mm/contig.c +++ b/trunk/arch/ia64/mm/contig.c @@ -14,6 +14,7 @@ * Routines used by ia64 machines with contiguous (or virtually contiguous) * memory. */ +#include #include #include #include diff --git a/trunk/arch/ia64/mm/extable.c b/trunk/arch/ia64/mm/extable.c index 71c50dd8f870..6d259e34f359 100644 --- a/trunk/arch/ia64/mm/extable.c +++ b/trunk/arch/ia64/mm/extable.c @@ -5,6 +5,7 @@ * David Mosberger-Tang */ +#include #include #include diff --git a/trunk/arch/ia64/mm/hugetlbpage.c b/trunk/arch/ia64/mm/hugetlbpage.c index eee5c1cfbe32..8d506710fdbd 100644 --- a/trunk/arch/ia64/mm/hugetlbpage.c +++ b/trunk/arch/ia64/mm/hugetlbpage.c @@ -8,6 +8,7 @@ * Feb, 2004: dynamic hugetlb page size via boot parameter */ +#include #include #include #include diff --git a/trunk/arch/ia64/mm/init.c b/trunk/arch/ia64/mm/init.c index 2f50c064513c..38306e98f04b 100644 --- a/trunk/arch/ia64/mm/init.c +++ b/trunk/arch/ia64/mm/init.c @@ -4,6 +4,7 @@ * Copyright (C) 1998-2003 Hewlett-Packard Co * David Mosberger-Tang */ +#include #include #include diff --git a/trunk/arch/ia64/mm/numa.c b/trunk/arch/ia64/mm/numa.c index 64e4c21f311c..4e5c8b36ad93 100644 --- a/trunk/arch/ia64/mm/numa.c +++ b/trunk/arch/ia64/mm/numa.c @@ -10,6 +10,7 @@ * 2002/08/07 Erich Focht */ +#include #include #include #include diff --git a/trunk/arch/ia64/mm/tlb.c b/trunk/arch/ia64/mm/tlb.c index ffad7624436c..4dbbca0b5e9c 100644 --- a/trunk/arch/ia64/mm/tlb.c +++ b/trunk/arch/ia64/mm/tlb.c @@ -11,6 +11,7 @@ * Rohit Seth * Ken Chen */ +#include #include #include #include diff --git a/trunk/arch/ia64/oprofile/perfmon.c b/trunk/arch/ia64/oprofile/perfmon.c index bc41dd32fec6..b7975a469fb8 100644 --- a/trunk/arch/ia64/oprofile/perfmon.c +++ b/trunk/arch/ia64/oprofile/perfmon.c @@ -8,6 +8,7 @@ */ #include +#include #include #include #include diff --git a/trunk/arch/ia64/pci/pci.c b/trunk/arch/ia64/pci/pci.c index 276512fd8922..5bef0e3603f2 100644 --- a/trunk/arch/ia64/pci/pci.c +++ b/trunk/arch/ia64/pci/pci.c @@ -10,6 +10,7 @@ * * Note: Above list of copyright holders is incomplete... */ +#include #include #include diff --git a/trunk/arch/ia64/sn/kernel/bte.c b/trunk/arch/ia64/sn/kernel/bte.c index 27dee4584061..e952ef4f6d91 100644 --- a/trunk/arch/ia64/sn/kernel/bte.c +++ b/trunk/arch/ia64/sn/kernel/bte.c @@ -6,6 +6,7 @@ * Copyright (c) 2000-2006 Silicon Graphics, Inc. All Rights Reserved. */ +#include #include #include #include diff --git a/trunk/arch/ia64/sn/kernel/setup.c b/trunk/arch/ia64/sn/kernel/setup.c index dd6bcf4d58bf..3bfccf354343 100644 --- a/trunk/arch/ia64/sn/kernel/setup.c +++ b/trunk/arch/ia64/sn/kernel/setup.c @@ -6,6 +6,7 @@ * Copyright (C) 1999,2001-2006 Silicon Graphics, Inc. All rights reserved. */ +#include #include #include #include diff --git a/trunk/arch/ia64/sn/kernel/sn2/prominfo_proc.c b/trunk/arch/ia64/sn/kernel/sn2/prominfo_proc.c index 4dcce3d0e04c..6ae276d5d50c 100644 --- a/trunk/arch/ia64/sn/kernel/sn2/prominfo_proc.c +++ b/trunk/arch/ia64/sn/kernel/sn2/prominfo_proc.c @@ -8,6 +8,7 @@ * Module to export the system's Firmware Interface Tables, including * PROM revision numbers and banners, in /proc */ +#include #include #include #include diff --git a/trunk/arch/ia64/sn/kernel/sn2/sn_proc_fs.c b/trunk/arch/ia64/sn/kernel/sn2/sn_proc_fs.c index 43ddc2eccb96..5100261310f7 100644 --- a/trunk/arch/ia64/sn/kernel/sn2/sn_proc_fs.c +++ b/trunk/arch/ia64/sn/kernel/sn2/sn_proc_fs.c @@ -5,6 +5,7 @@ * * Copyright (C) 2000-2005 Silicon Graphics, Inc. All rights reserved. */ +#include #ifdef CONFIG_PROC_FS #include diff --git a/trunk/arch/ia64/sn/kernel/xpnet.c b/trunk/arch/ia64/sn/kernel/xpnet.c index 007703c494a4..e5c6d3c0a8e9 100644 --- a/trunk/arch/ia64/sn/kernel/xpnet.c +++ b/trunk/arch/ia64/sn/kernel/xpnet.c @@ -22,6 +22,7 @@ */ +#include #include #include #include diff --git a/trunk/arch/m32r/boot/compressed/head.S b/trunk/arch/m32r/boot/compressed/head.S index 95a0563ff076..234d8b1e0ac1 100644 --- a/trunk/arch/m32r/boot/compressed/head.S +++ b/trunk/arch/m32r/boot/compressed/head.S @@ -7,6 +7,7 @@ */ .text +#include #include #include #include diff --git a/trunk/arch/m32r/boot/compressed/m32r_sio.c b/trunk/arch/m32r/boot/compressed/m32r_sio.c index bce8af5e3bb2..8f9a57271f83 100644 --- a/trunk/arch/m32r/boot/compressed/m32r_sio.c +++ b/trunk/arch/m32r/boot/compressed/m32r_sio.c @@ -5,6 +5,7 @@ * */ +#include #include static void putc(char c); diff --git a/trunk/arch/m32r/boot/compressed/misc.c b/trunk/arch/m32r/boot/compressed/misc.c index 600d40e33495..70fa799005c3 100644 --- a/trunk/arch/m32r/boot/compressed/misc.c +++ b/trunk/arch/m32r/boot/compressed/misc.c @@ -12,6 +12,7 @@ * This is based on arch/sh/boot/compressed/misc.c. */ +#include #include /* diff --git a/trunk/arch/m32r/boot/compressed/vmlinux.lds.S b/trunk/arch/m32r/boot/compressed/vmlinux.lds.S index dd11963f6939..a18431759633 100644 --- a/trunk/arch/m32r/boot/compressed/vmlinux.lds.S +++ b/trunk/arch/m32r/boot/compressed/vmlinux.lds.S @@ -1,3 +1,4 @@ +#include OUTPUT_ARCH(m32r) ENTRY(startup) diff --git a/trunk/arch/m32r/boot/setup.S b/trunk/arch/m32r/boot/setup.S index ef843d63083d..398542507d84 100644 --- a/trunk/arch/m32r/boot/setup.S +++ b/trunk/arch/m32r/boot/setup.S @@ -11,6 +11,7 @@ #include #include +#include #include #include #include diff --git a/trunk/arch/m32r/kernel/align.c b/trunk/arch/m32r/kernel/align.c index ab871ccd33f8..48ec29714238 100644 --- a/trunk/arch/m32r/kernel/align.c +++ b/trunk/arch/m32r/kernel/align.c @@ -4,6 +4,7 @@ * Copyright (c) 2003 Hitoshi Yamamoto */ +#include #include #include diff --git a/trunk/arch/m32r/kernel/entry.S b/trunk/arch/m32r/kernel/entry.S index ac6d840b382b..920bb742b7a2 100644 --- a/trunk/arch/m32r/kernel/entry.S +++ b/trunk/arch/m32r/kernel/entry.S @@ -54,6 +54,7 @@ * @(0x6c,sp) - orig_r0 ditto */ +#include #include #include #include diff --git a/trunk/arch/m32r/kernel/head.S b/trunk/arch/m32r/kernel/head.S index 0d3c8ee0e03d..3e83173995cd 100644 --- a/trunk/arch/m32r/kernel/head.S +++ b/trunk/arch/m32r/kernel/head.S @@ -14,6 +14,7 @@ __INIT __INITDATA .text +#include #include #include #include diff --git a/trunk/arch/m32r/kernel/io_m32104ut.c b/trunk/arch/m32r/kernel/io_m32104ut.c index 2189eca30b56..d26adab9586c 100644 --- a/trunk/arch/m32r/kernel/io_m32104ut.c +++ b/trunk/arch/m32r/kernel/io_m32104ut.c @@ -8,6 +8,7 @@ * Naoto Sugai, Hayato Fujiwara */ +#include #include #include #include diff --git a/trunk/arch/m32r/kernel/io_m32700ut.c b/trunk/arch/m32r/kernel/io_m32700ut.c index 5898f4031a0c..939932d6cc00 100644 --- a/trunk/arch/m32r/kernel/io_m32700ut.c +++ b/trunk/arch/m32r/kernel/io_m32700ut.c @@ -11,6 +11,7 @@ * archive for more details. */ +#include #include #include #include diff --git a/trunk/arch/m32r/kernel/io_mappi.c b/trunk/arch/m32r/kernel/io_mappi.c index 31396789ab1b..a662b537c5ba 100644 --- a/trunk/arch/m32r/kernel/io_mappi.c +++ b/trunk/arch/m32r/kernel/io_mappi.c @@ -7,6 +7,7 @@ * Hitoshi Yamamoto */ +#include #include #include #include diff --git a/trunk/arch/m32r/kernel/io_mappi2.c b/trunk/arch/m32r/kernel/io_mappi2.c index ecc6aa88f9ac..e72d725606af 100644 --- a/trunk/arch/m32r/kernel/io_mappi2.c +++ b/trunk/arch/m32r/kernel/io_mappi2.c @@ -7,6 +7,7 @@ * Hitoshi Yamamoto, Mamoru Sakugawa */ +#include #include #include #include diff --git a/trunk/arch/m32r/kernel/io_mappi3.c b/trunk/arch/m32r/kernel/io_mappi3.c index a13b5f6b07e9..ed6da930bc64 100644 --- a/trunk/arch/m32r/kernel/io_mappi3.c +++ b/trunk/arch/m32r/kernel/io_mappi3.c @@ -7,6 +7,7 @@ * Hitoshi Yamamoto, Mamoru Sakugawa */ +#include #include #include #include diff --git a/trunk/arch/m32r/kernel/io_oaks32r.c b/trunk/arch/m32r/kernel/io_oaks32r.c index 068bf47060f8..910dd131c227 100644 --- a/trunk/arch/m32r/kernel/io_oaks32r.c +++ b/trunk/arch/m32r/kernel/io_oaks32r.c @@ -7,6 +7,7 @@ * Hitoshi Yamamoto, Mamoru Sakugawa */ +#include #include #include #include diff --git a/trunk/arch/m32r/kernel/io_opsput.c b/trunk/arch/m32r/kernel/io_opsput.c index da6c5f5c1f82..bec69297db3c 100644 --- a/trunk/arch/m32r/kernel/io_opsput.c +++ b/trunk/arch/m32r/kernel/io_opsput.c @@ -11,6 +11,7 @@ * archive for more details. */ +#include #include #include #include diff --git a/trunk/arch/m32r/kernel/io_usrv.c b/trunk/arch/m32r/kernel/io_usrv.c index a8c0e2eceb4d..39a379af40bc 100644 --- a/trunk/arch/m32r/kernel/io_usrv.c +++ b/trunk/arch/m32r/kernel/io_usrv.c @@ -12,6 +12,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/m32r/kernel/m32r_ksyms.c b/trunk/arch/m32r/kernel/m32r_ksyms.c index 8cbbb0b11e0c..c50330fa83b9 100644 --- a/trunk/arch/m32r/kernel/m32r_ksyms.c +++ b/trunk/arch/m32r/kernel/m32r_ksyms.c @@ -1,3 +1,4 @@ +#include #include #include #include diff --git a/trunk/arch/m32r/kernel/module.c b/trunk/arch/m32r/kernel/module.c index 8d4205794380..f6a79a016ce0 100644 --- a/trunk/arch/m32r/kernel/module.c +++ b/trunk/arch/m32r/kernel/module.c @@ -15,6 +15,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include #include #include diff --git a/trunk/arch/m32r/kernel/process.c b/trunk/arch/m32r/kernel/process.c index 44cbe0ce0f8f..065f5e719058 100644 --- a/trunk/arch/m32r/kernel/process.c +++ b/trunk/arch/m32r/kernel/process.c @@ -21,6 +21,7 @@ */ #include +#include #include #include #include diff --git a/trunk/arch/m32r/kernel/ptrace.c b/trunk/arch/m32r/kernel/ptrace.c index 5f02b3144875..340a3bf59b88 100644 --- a/trunk/arch/m32r/kernel/ptrace.c +++ b/trunk/arch/m32r/kernel/ptrace.c @@ -14,6 +14,7 @@ * Copyright (C) 2000 Russell King */ +#include #include #include #include diff --git a/trunk/arch/m32r/kernel/semaphore.c b/trunk/arch/m32r/kernel/semaphore.c index 940c2d37cfd1..9a6e6d754ddc 100644 --- a/trunk/arch/m32r/kernel/semaphore.c +++ b/trunk/arch/m32r/kernel/semaphore.c @@ -21,6 +21,7 @@ * * rw semaphores implemented November 1999 by Benjamin LaHaise */ +#include #include #include #include diff --git a/trunk/arch/m32r/kernel/setup.c b/trunk/arch/m32r/kernel/setup.c index 0a6c6e677afe..1ff483c8a4c9 100644 --- a/trunk/arch/m32r/kernel/setup.c +++ b/trunk/arch/m32r/kernel/setup.c @@ -7,6 +7,7 @@ * Hitoshi Yamamoto */ +#include #include #include #include diff --git a/trunk/arch/m32r/kernel/setup_m32104ut.c b/trunk/arch/m32r/kernel/setup_m32104ut.c index 1692b321f476..f9f56c270195 100644 --- a/trunk/arch/m32r/kernel/setup_m32104ut.c +++ b/trunk/arch/m32r/kernel/setup_m32104ut.c @@ -8,6 +8,7 @@ * Naoto Sugai, Hayato Fujiwara */ +#include #include #include #include diff --git a/trunk/arch/m32r/kernel/setup_m32700ut.c b/trunk/arch/m32r/kernel/setup_m32700ut.c index 7efc145c74c2..b6ab00eff580 100644 --- a/trunk/arch/m32r/kernel/setup_m32700ut.c +++ b/trunk/arch/m32r/kernel/setup_m32700ut.c @@ -11,6 +11,7 @@ * archive for more details. */ +#include #include #include #include diff --git a/trunk/arch/m32r/kernel/setup_mappi.c b/trunk/arch/m32r/kernel/setup_mappi.c index 67dbbdc9d111..c268044185f5 100644 --- a/trunk/arch/m32r/kernel/setup_mappi.c +++ b/trunk/arch/m32r/kernel/setup_mappi.c @@ -7,6 +7,7 @@ * Hitoshi Yamamoto */ +#include #include #include #include diff --git a/trunk/arch/m32r/kernel/setup_mappi2.c b/trunk/arch/m32r/kernel/setup_mappi2.c index 55abb2102750..bd2327d5cca2 100644 --- a/trunk/arch/m32r/kernel/setup_mappi2.c +++ b/trunk/arch/m32r/kernel/setup_mappi2.c @@ -7,6 +7,7 @@ * Hitoshi Yamamoto, Mamoru Sakugawa */ +#include #include #include #include diff --git a/trunk/arch/m32r/kernel/setup_mappi3.c b/trunk/arch/m32r/kernel/setup_mappi3.c index 93dc010c7fc3..014b51d17505 100644 --- a/trunk/arch/m32r/kernel/setup_mappi3.c +++ b/trunk/arch/m32r/kernel/setup_mappi3.c @@ -7,6 +7,7 @@ * Hitoshi Yamamoto, Mamoru Sakugawa */ +#include #include #include #include diff --git a/trunk/arch/m32r/kernel/setup_oaks32r.c b/trunk/arch/m32r/kernel/setup_oaks32r.c index cd62598e3cea..ea64831aef7a 100644 --- a/trunk/arch/m32r/kernel/setup_oaks32r.c +++ b/trunk/arch/m32r/kernel/setup_oaks32r.c @@ -7,6 +7,7 @@ * Hitoshi Yamamoto, Mamoru Sakugawa */ +#include #include #include #include diff --git a/trunk/arch/m32r/kernel/setup_opsput.c b/trunk/arch/m32r/kernel/setup_opsput.c index 61d3b01cbe07..55e8972d455a 100644 --- a/trunk/arch/m32r/kernel/setup_opsput.c +++ b/trunk/arch/m32r/kernel/setup_opsput.c @@ -12,6 +12,7 @@ * archive for more details. */ +#include #include #include #include diff --git a/trunk/arch/m32r/kernel/setup_usrv.c b/trunk/arch/m32r/kernel/setup_usrv.c index f5b4b5ac31e7..7fa12d8f66b4 100644 --- a/trunk/arch/m32r/kernel/setup_usrv.c +++ b/trunk/arch/m32r/kernel/setup_usrv.c @@ -7,6 +7,7 @@ * Hitoshi Yamamoto */ +#include #include #include #include diff --git a/trunk/arch/m32r/kernel/signal.c b/trunk/arch/m32r/kernel/signal.c index a9174efe80cb..6498ee70bb73 100644 --- a/trunk/arch/m32r/kernel/signal.c +++ b/trunk/arch/m32r/kernel/signal.c @@ -10,6 +10,7 @@ * 2000-06-20 Pentium III FXSR, SSE support by Gareth Hughes */ +#include #include #include #include diff --git a/trunk/arch/m32r/kernel/smpboot.c b/trunk/arch/m32r/kernel/smpboot.c index fa7865609495..840b4348bf0c 100644 --- a/trunk/arch/m32r/kernel/smpboot.c +++ b/trunk/arch/m32r/kernel/smpboot.c @@ -40,6 +40,7 @@ */ #include +#include #include #include #include diff --git a/trunk/arch/m32r/kernel/sys_m32r.c b/trunk/arch/m32r/kernel/sys_m32r.c index a9cea32eb824..670cb49210af 100644 --- a/trunk/arch/m32r/kernel/sys_m32r.c +++ b/trunk/arch/m32r/kernel/sys_m32r.c @@ -7,6 +7,7 @@ * Taken from i386 version. */ +#include #include #include #include diff --git a/trunk/arch/m32r/kernel/time.c b/trunk/arch/m32r/kernel/time.c index efff6f5151df..b8e68b542302 100644 --- a/trunk/arch/m32r/kernel/time.c +++ b/trunk/arch/m32r/kernel/time.c @@ -17,6 +17,7 @@ #undef DEBUG_TIMER +#include #include #include #include diff --git a/trunk/arch/m32r/kernel/traps.c b/trunk/arch/m32r/kernel/traps.c index c1daf2c40c7c..5fe8ed6d62dc 100644 --- a/trunk/arch/m32r/kernel/traps.c +++ b/trunk/arch/m32r/kernel/traps.c @@ -9,6 +9,7 @@ * 'traps.c' handles hardware traps and faults after we have saved some * state in 'entry.S'. */ +#include #include #include #include diff --git a/trunk/arch/m32r/kernel/vmlinux.lds.S b/trunk/arch/m32r/kernel/vmlinux.lds.S index 13c7bb698e37..729a2645a03f 100644 --- a/trunk/arch/m32r/kernel/vmlinux.lds.S +++ b/trunk/arch/m32r/kernel/vmlinux.lds.S @@ -1,6 +1,7 @@ /* ld script to make M32R Linux kernel */ +#include #include #include #include diff --git a/trunk/arch/m32r/lib/ashxdi3.S b/trunk/arch/m32r/lib/ashxdi3.S index 107594b65d58..78effca9d97a 100644 --- a/trunk/arch/m32r/lib/ashxdi3.S +++ b/trunk/arch/m32r/lib/ashxdi3.S @@ -6,6 +6,7 @@ */ /* $Id$ */ +#include ; ; input (r0,r1) src diff --git a/trunk/arch/m32r/lib/checksum.S b/trunk/arch/m32r/lib/checksum.S index cfbe00e5184a..f6fc1bdb87e4 100644 --- a/trunk/arch/m32r/lib/checksum.S +++ b/trunk/arch/m32r/lib/checksum.S @@ -28,6 +28,7 @@ /* $Id$ */ +#include #include #include #include diff --git a/trunk/arch/m32r/lib/delay.c b/trunk/arch/m32r/lib/delay.c index 06382a38c318..fb29632c7eaa 100644 --- a/trunk/arch/m32r/lib/delay.c +++ b/trunk/arch/m32r/lib/delay.c @@ -7,6 +7,7 @@ /* $Id$ */ +#include #include #ifdef CONFIG_SMP #include diff --git a/trunk/arch/m32r/lib/memcpy.S b/trunk/arch/m32r/lib/memcpy.S index 2089a215314e..800898a2d2e3 100644 --- a/trunk/arch/m32r/lib/memcpy.S +++ b/trunk/arch/m32r/lib/memcpy.S @@ -14,6 +14,7 @@ .text +#include #include #include diff --git a/trunk/arch/m32r/lib/memset.S b/trunk/arch/m32r/lib/memset.S index b47fa3537aa4..6e26df120acb 100644 --- a/trunk/arch/m32r/lib/memset.S +++ b/trunk/arch/m32r/lib/memset.S @@ -14,6 +14,7 @@ */ /* $Id$ */ +#include .text .global memset diff --git a/trunk/arch/m32r/lib/strlen.S b/trunk/arch/m32r/lib/strlen.S index 5f41aacd7b3e..8d23cfbd600c 100644 --- a/trunk/arch/m32r/lib/strlen.S +++ b/trunk/arch/m32r/lib/strlen.S @@ -9,6 +9,7 @@ /* $Id$ */ +#include #include #include diff --git a/trunk/arch/m32r/lib/usercopy.c b/trunk/arch/m32r/lib/usercopy.c index 896cef1aca5f..2d1dd2106c4d 100644 --- a/trunk/arch/m32r/lib/usercopy.c +++ b/trunk/arch/m32r/lib/usercopy.c @@ -6,6 +6,7 @@ * Copyright 1997 Linus Torvalds * Copyright 2001, 2002, 2004 Hirokazu Takata */ +#include #include #include #include diff --git a/trunk/arch/m32r/mm/cache.c b/trunk/arch/m32r/mm/cache.c index fac759584875..9f54dd937013 100644 --- a/trunk/arch/m32r/mm/cache.c +++ b/trunk/arch/m32r/mm/cache.c @@ -4,6 +4,7 @@ * Copyright (C) 2002-2005 Hirokazu Takata, Hayato Fujiwara */ +#include #include #undef MCCR diff --git a/trunk/arch/m32r/mm/discontig.c b/trunk/arch/m32r/mm/discontig.c index abb34ccd5986..cf610a7c5ff0 100644 --- a/trunk/arch/m32r/mm/discontig.c +++ b/trunk/arch/m32r/mm/discontig.c @@ -6,6 +6,7 @@ * Copyright (c) 2003 Hitoshi Yamamoto */ +#include #include #include #include diff --git a/trunk/arch/m32r/mm/fault-nommu.c b/trunk/arch/m32r/mm/fault-nommu.c index 03fc4c858e0e..d9d488d782e8 100644 --- a/trunk/arch/m32r/mm/fault-nommu.c +++ b/trunk/arch/m32r/mm/fault-nommu.c @@ -9,6 +9,7 @@ /* $Id: fault-nommu.c,v 1.1 2004/03/30 06:40:59 sakugawa Exp $ */ +#include #include #include #include diff --git a/trunk/arch/m32r/mm/fault.c b/trunk/arch/m32r/mm/fault.c index dc18a33eefef..bf7fb58ef02c 100644 --- a/trunk/arch/m32r/mm/fault.c +++ b/trunk/arch/m32r/mm/fault.c @@ -8,6 +8,7 @@ * Copyright (C) 1995 Linus Torvalds */ +#include #include #include #include @@ -147,7 +148,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long error_code, /* When running in the kernel we expect faults to occur only to * addresses in user space. All other faults represent errors in the * kernel and should generate an OOPS. Unfortunatly, in the case of an - * erroneous fault occurring in a code path which already holds mmap_sem + * erroneous fault occuring in a code path which already holds mmap_sem * we will deadlock attempting to validate the fault against the * address space. Luckily the kernel only validly references user * space from well defined areas of code, which are listed in the diff --git a/trunk/arch/m68k/amiga/amiga_ksyms.c b/trunk/arch/m68k/amiga/amiga_ksyms.c index 7fdcf6bf3ada..8f2e0587ae2f 100644 --- a/trunk/arch/m68k/amiga/amiga_ksyms.c +++ b/trunk/arch/m68k/amiga/amiga_ksyms.c @@ -1,3 +1,4 @@ +#include #include #include #include diff --git a/trunk/arch/m68k/amiga/amisound.c b/trunk/arch/m68k/amiga/amisound.c index 1f5bfb584297..ae94db5d93b2 100644 --- a/trunk/arch/m68k/amiga/amisound.c +++ b/trunk/arch/m68k/amiga/amisound.c @@ -8,6 +8,7 @@ * for more details. */ +#include #include #include #include diff --git a/trunk/arch/m68k/amiga/chipram.c b/trunk/arch/m68k/amiga/chipram.c index de1304c91112..558d5fd2d2ba 100644 --- a/trunk/arch/m68k/amiga/chipram.c +++ b/trunk/arch/m68k/amiga/chipram.c @@ -7,6 +7,7 @@ ** Rewritten 15/9/2000 by Geert to use resource management */ +#include #include #include #include diff --git a/trunk/arch/m68k/amiga/config.c b/trunk/arch/m68k/amiga/config.c index 092e50d2cb13..b5b8a416a07a 100644 --- a/trunk/arch/m68k/amiga/config.c +++ b/trunk/arch/m68k/amiga/config.c @@ -12,6 +12,7 @@ * Miscellaneous Amiga stuff */ +#include #include #include #include diff --git a/trunk/arch/m68k/apollo/config.c b/trunk/arch/m68k/apollo/config.c index 6f4581575fb4..99c70978aafa 100644 --- a/trunk/arch/m68k/apollo/config.c +++ b/trunk/arch/m68k/apollo/config.c @@ -1,3 +1,4 @@ +#include #include #include #include diff --git a/trunk/arch/m68k/atari/config.c b/trunk/arch/m68k/atari/config.c index b2079252a954..727289acad7e 100644 --- a/trunk/arch/m68k/atari/config.c +++ b/trunk/arch/m68k/atari/config.c @@ -24,6 +24,7 @@ * Miscellaneous atari stuff */ +#include #include #include #include diff --git a/trunk/arch/m68k/atari/debug.c b/trunk/arch/m68k/atari/debug.c index 4ae01004d8dd..ace05f79d968 100644 --- a/trunk/arch/m68k/atari/debug.c +++ b/trunk/arch/m68k/atari/debug.c @@ -10,6 +10,7 @@ * for more details. */ +#include #include #include #include diff --git a/trunk/arch/m68k/atari/hades-pci.c b/trunk/arch/m68k/atari/hades-pci.c index 6ca57b6564da..8888debf71ec 100644 --- a/trunk/arch/m68k/atari/hades-pci.c +++ b/trunk/arch/m68k/atari/hades-pci.c @@ -4,6 +4,7 @@ * Written by Wout Klaren. */ +#include #include #include #include diff --git a/trunk/arch/m68k/atari/stram.c b/trunk/arch/m68k/atari/stram.c index bf4588cbe371..22e0481a5f7b 100644 --- a/trunk/arch/m68k/atari/stram.c +++ b/trunk/arch/m68k/atari/stram.c @@ -8,6 +8,7 @@ * for more details. */ +#include #include #include #include diff --git a/trunk/arch/m68k/hp300/config.c b/trunk/arch/m68k/hp300/config.c index 1c05a6260546..2ef271cd818b 100644 --- a/trunk/arch/m68k/hp300/config.c +++ b/trunk/arch/m68k/hp300/config.c @@ -7,6 +7,7 @@ * called by setup.c. */ +#include #include #include #include diff --git a/trunk/arch/m68k/kernel/bios32.c b/trunk/arch/m68k/kernel/bios32.c index af170c2be735..a901685eb6a9 100644 --- a/trunk/arch/m68k/kernel/bios32.c +++ b/trunk/arch/m68k/kernel/bios32.c @@ -6,6 +6,7 @@ * Based on the DEC Alpha bios32.c by Dave Rusling and David Mosberger. */ +#include #include #include diff --git a/trunk/arch/m68k/kernel/entry.S b/trunk/arch/m68k/kernel/entry.S index 9083c8b7659f..449b62b30f45 100644 --- a/trunk/arch/m68k/kernel/entry.S +++ b/trunk/arch/m68k/kernel/entry.S @@ -33,6 +33,7 @@ * for 68040 */ +#include #include #include #include diff --git a/trunk/arch/m68k/kernel/head.S b/trunk/arch/m68k/kernel/head.S index 6739e87fe825..70002c146eed 100644 --- a/trunk/arch/m68k/kernel/head.S +++ b/trunk/arch/m68k/kernel/head.S @@ -255,6 +255,7 @@ * MAC_USE_SCC_B: Use the SCC port B (printer) for serial debug (default). */ +#include #include #include #include diff --git a/trunk/arch/m68k/kernel/ints.c b/trunk/arch/m68k/kernel/ints.c index e969f0477640..5a8344b93547 100644 --- a/trunk/arch/m68k/kernel/ints.c +++ b/trunk/arch/m68k/kernel/ints.c @@ -25,6 +25,7 @@ * which must be served /Roman Zippel */ +#include #include #include #include diff --git a/trunk/arch/m68k/kernel/m68k_ksyms.c b/trunk/arch/m68k/kernel/m68k_ksyms.c index aff26a52167c..1f5e1b5aeda4 100644 --- a/trunk/arch/m68k/kernel/m68k_ksyms.c +++ b/trunk/arch/m68k/kernel/m68k_ksyms.c @@ -7,6 +7,7 @@ #include #include #include +#include #include #include diff --git a/trunk/arch/m68k/kernel/process.c b/trunk/arch/m68k/kernel/process.c index 45a46646c1b3..33648efb772e 100644 --- a/trunk/arch/m68k/kernel/process.c +++ b/trunk/arch/m68k/kernel/process.c @@ -10,6 +10,7 @@ * This file handles the architecture-dependent parts of process handling.. */ +#include #include #include #include diff --git a/trunk/arch/m68k/kernel/ptrace.c b/trunk/arch/m68k/kernel/ptrace.c index ef89060ea328..540638ca81f9 100644 --- a/trunk/arch/m68k/kernel/ptrace.c +++ b/trunk/arch/m68k/kernel/ptrace.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include diff --git a/trunk/arch/m68k/kernel/semaphore.c b/trunk/arch/m68k/kernel/semaphore.c index d12cbbfe6ebd..1ebb79baaa8c 100644 --- a/trunk/arch/m68k/kernel/semaphore.c +++ b/trunk/arch/m68k/kernel/semaphore.c @@ -3,6 +3,7 @@ * specific changes in */ +#include #include #include #include diff --git a/trunk/arch/m68k/kernel/setup.c b/trunk/arch/m68k/kernel/setup.c index f2d7ee0ee18c..214a95f9f3ac 100644 --- a/trunk/arch/m68k/kernel/setup.c +++ b/trunk/arch/m68k/kernel/setup.c @@ -8,6 +8,7 @@ * This file handles the architecture-dependent parts of system setup */ +#include #include #include #include diff --git a/trunk/arch/m68k/kernel/traps.c b/trunk/arch/m68k/kernel/traps.c index 4569406a2e1f..e86de7b061cd 100644 --- a/trunk/arch/m68k/kernel/traps.c +++ b/trunk/arch/m68k/kernel/traps.c @@ -18,6 +18,7 @@ * Sets up all exception vectors */ +#include #include #include #include diff --git a/trunk/arch/m68k/kernel/vmlinux.lds.S b/trunk/arch/m68k/kernel/vmlinux.lds.S index 99ba315bd0a8..497b924f3c86 100644 --- a/trunk/arch/m68k/kernel/vmlinux.lds.S +++ b/trunk/arch/m68k/kernel/vmlinux.lds.S @@ -1,3 +1,4 @@ +#include PHDRS { text PT_LOAD FILEHDR PHDRS FLAGS (7); diff --git a/trunk/arch/m68k/mac/config.c b/trunk/arch/m68k/mac/config.c index 85dda1095b1f..5a9990e436bb 100644 --- a/trunk/arch/m68k/mac/config.c +++ b/trunk/arch/m68k/mac/config.c @@ -10,6 +10,7 @@ * Miscellaneous linux stuff */ +#include #include #include #include diff --git a/trunk/arch/m68k/mac/debug.c b/trunk/arch/m68k/mac/debug.c index 4eeb09dc0e8f..cc62ed61cda2 100644 --- a/trunk/arch/m68k/mac/debug.c +++ b/trunk/arch/m68k/mac/debug.c @@ -14,6 +14,7 @@ * for more details. */ +#include #include #include #include diff --git a/trunk/arch/m68k/mac/iop.c b/trunk/arch/m68k/mac/iop.c index bc657b1057a7..4c8ece7e64a3 100644 --- a/trunk/arch/m68k/mac/iop.c +++ b/trunk/arch/m68k/mac/iop.c @@ -104,6 +104,7 @@ * should execute quickly.) */ +#include #include #include #include diff --git a/trunk/arch/m68k/mac/misc.c b/trunk/arch/m68k/mac/misc.c index 56d1f5676ade..bbb0c3b95e9c 100644 --- a/trunk/arch/m68k/mac/misc.c +++ b/trunk/arch/m68k/mac/misc.c @@ -2,6 +2,7 @@ * Miscellaneous Mac68K-specific stuff */ +#include #include #include #include diff --git a/trunk/arch/m68k/math-emu/fp_entry.S b/trunk/arch/m68k/math-emu/fp_entry.S index 954b4f304a7d..5ec2d9101ea3 100644 --- a/trunk/arch/m68k/math-emu/fp_entry.S +++ b/trunk/arch/m68k/math-emu/fp_entry.S @@ -35,6 +35,7 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include #include #include diff --git a/trunk/arch/m68k/math-emu/fp_util.S b/trunk/arch/m68k/math-emu/fp_util.S index b093b85fcdd2..a9f7f0129067 100644 --- a/trunk/arch/m68k/math-emu/fp_util.S +++ b/trunk/arch/m68k/math-emu/fp_util.S @@ -35,6 +35,7 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include #include "fp_emu.h" /* diff --git a/trunk/arch/m68k/mm/init.c b/trunk/arch/m68k/mm/init.c index ab90213e5c54..a190e39c907a 100644 --- a/trunk/arch/m68k/mm/init.c +++ b/trunk/arch/m68k/mm/init.c @@ -7,6 +7,7 @@ * to motorola.c and sun3mmu.c */ +#include #include #include #include diff --git a/trunk/arch/m68k/mm/kmap.c b/trunk/arch/m68k/mm/kmap.c index f46f049d29ff..43ffab048724 100644 --- a/trunk/arch/m68k/mm/kmap.c +++ b/trunk/arch/m68k/mm/kmap.c @@ -7,6 +7,7 @@ * used by other architectures /Roman Zippel */ +#include #include #include #include diff --git a/trunk/arch/m68k/mm/memory.c b/trunk/arch/m68k/mm/memory.c index a0c095e17222..a226668f20c3 100644 --- a/trunk/arch/m68k/mm/memory.c +++ b/trunk/arch/m68k/mm/memory.c @@ -4,6 +4,7 @@ * Copyright (C) 1995 Hamish Macdonald */ +#include #include #include #include diff --git a/trunk/arch/m68k/mm/motorola.c b/trunk/arch/m68k/mm/motorola.c index 49015e32d8fc..bdb11103694b 100644 --- a/trunk/arch/m68k/mm/motorola.c +++ b/trunk/arch/m68k/mm/motorola.c @@ -8,6 +8,7 @@ * Moved 8/20/1999 Sam Creasey */ +#include #include #include #include diff --git a/trunk/arch/m68k/q40/config.c b/trunk/arch/m68k/q40/config.c index 9a1827876408..efa52d302d67 100644 --- a/trunk/arch/m68k/q40/config.c +++ b/trunk/arch/m68k/q40/config.c @@ -12,6 +12,7 @@ * for more details. */ +#include #include #include #include diff --git a/trunk/arch/m68k/sun3/config.c b/trunk/arch/m68k/sun3/config.c index d09d03b3d956..553c304aa2c5 100644 --- a/trunk/arch/m68k/sun3/config.c +++ b/trunk/arch/m68k/sun3/config.c @@ -8,6 +8,7 @@ * for more details. */ +#include #include #include #include diff --git a/trunk/arch/m68k/sun3/prom/init.c b/trunk/arch/m68k/sun3/prom/init.c index 202adfcc316e..2e6ae56aec12 100644 --- a/trunk/arch/m68k/sun3/prom/init.c +++ b/trunk/arch/m68k/sun3/prom/init.c @@ -5,6 +5,7 @@ * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) */ +#include #include #include diff --git a/trunk/arch/m68k/sun3/prom/printf.c b/trunk/arch/m68k/sun3/prom/printf.c index e7bfde377b5e..e6ee1006344e 100644 --- a/trunk/arch/m68k/sun3/prom/printf.c +++ b/trunk/arch/m68k/sun3/prom/printf.c @@ -8,6 +8,7 @@ * about or use it! It's simple and smelly anyway.... */ +#include #include #include diff --git a/trunk/arch/m68k/sun3/sun3dvma.c b/trunk/arch/m68k/sun3/sun3dvma.c index 6c265222cbcd..97c7bfde8ae8 100644 --- a/trunk/arch/m68k/sun3/sun3dvma.c +++ b/trunk/arch/m68k/sun3/sun3dvma.c @@ -6,6 +6,7 @@ * Contains common routines for sun3/sun3x DVMA management. */ +#include #include #include #include diff --git a/trunk/arch/m68k/sun3/sun3ints.c b/trunk/arch/m68k/sun3/sun3ints.c index f18b9d3ef16d..0912435e9e90 100644 --- a/trunk/arch/m68k/sun3/sun3ints.c +++ b/trunk/arch/m68k/sun3/sun3ints.c @@ -6,6 +6,7 @@ * for more details. */ +#include #include #include #include diff --git a/trunk/arch/m68k/sun3x/config.c b/trunk/arch/m68k/sun3x/config.c index 987891783a47..52fb17408869 100644 --- a/trunk/arch/m68k/sun3x/config.c +++ b/trunk/arch/m68k/sun3x/config.c @@ -6,6 +6,7 @@ * based on code from Oliver Jowett */ +#include #include #include #include diff --git a/trunk/arch/m68knommu/kernel/comempci.c b/trunk/arch/m68knommu/kernel/comempci.c index 6ee00effbad2..db7a0c1cebae 100644 --- a/trunk/arch/m68knommu/kernel/comempci.c +++ b/trunk/arch/m68knommu/kernel/comempci.c @@ -9,6 +9,7 @@ /*****************************************************************************/ +#include #include #include #include diff --git a/trunk/arch/m68knommu/kernel/entry.S b/trunk/arch/m68knommu/kernel/entry.S index 1e7ea6a3e1a1..8b1f47239b9a 100644 --- a/trunk/arch/m68knommu/kernel/entry.S +++ b/trunk/arch/m68knommu/kernel/entry.S @@ -24,6 +24,7 @@ * linux 2.4 support David McCullough */ +#include #include #include #include diff --git a/trunk/arch/m68knommu/kernel/m68k_ksyms.c b/trunk/arch/m68knommu/kernel/m68k_ksyms.c index 1e62150f3588..4320d5dcc9cb 100644 --- a/trunk/arch/m68knommu/kernel/m68k_ksyms.c +++ b/trunk/arch/m68knommu/kernel/m68k_ksyms.c @@ -7,6 +7,7 @@ #include #include #include +#include #include #include diff --git a/trunk/arch/m68knommu/kernel/process.c b/trunk/arch/m68knommu/kernel/process.c index c18a83306953..f861755ec88b 100644 --- a/trunk/arch/m68knommu/kernel/process.c +++ b/trunk/arch/m68knommu/kernel/process.c @@ -13,6 +13,7 @@ * This file handles the architecture-dependent parts of process handling.. */ +#include #include #include #include diff --git a/trunk/arch/m68knommu/kernel/ptrace.c b/trunk/arch/m68knommu/kernel/ptrace.c index 9130119537b9..382ca5797b97 100644 --- a/trunk/arch/m68knommu/kernel/ptrace.c +++ b/trunk/arch/m68knommu/kernel/ptrace.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include diff --git a/trunk/arch/m68knommu/kernel/semaphore.c b/trunk/arch/m68knommu/kernel/semaphore.c index bce2bc7d87c6..c083f4772add 100644 --- a/trunk/arch/m68knommu/kernel/semaphore.c +++ b/trunk/arch/m68knommu/kernel/semaphore.c @@ -3,6 +3,7 @@ * specific changes in */ +#include #include #include #include diff --git a/trunk/arch/m68knommu/kernel/setup.c b/trunk/arch/m68knommu/kernel/setup.c index bde9811cf98c..99d038e9ab31 100644 --- a/trunk/arch/m68knommu/kernel/setup.c +++ b/trunk/arch/m68knommu/kernel/setup.c @@ -16,6 +16,7 @@ * This file handles the architecture-dependent parts of system setup */ +#include #include #include #include diff --git a/trunk/arch/m68knommu/kernel/syscalltable.S b/trunk/arch/m68knommu/kernel/syscalltable.S index 617e43ec95ae..897deaa06b01 100644 --- a/trunk/arch/m68knommu/kernel/syscalltable.S +++ b/trunk/arch/m68knommu/kernel/syscalltable.S @@ -11,6 +11,7 @@ * Copyright (C) 1991, 1992 Linus Torvalds */ +#include #include #include #include diff --git a/trunk/arch/m68knommu/kernel/time.c b/trunk/arch/m68knommu/kernel/time.c index 1db987272220..b9d8abb45430 100644 --- a/trunk/arch/m68knommu/kernel/time.c +++ b/trunk/arch/m68knommu/kernel/time.c @@ -10,6 +10,7 @@ * "A Kernel Model for Precision Timekeeping" by Dave Mills */ +#include #include #include #include diff --git a/trunk/arch/m68knommu/kernel/traps.c b/trunk/arch/m68knommu/kernel/traps.c index 17649d2543ef..44ff74e643b1 100644 --- a/trunk/arch/m68knommu/kernel/traps.c +++ b/trunk/arch/m68knommu/kernel/traps.c @@ -16,6 +16,7 @@ /* * Sets up all exception vectors */ +#include #include #include #include diff --git a/trunk/arch/m68knommu/kernel/vmlinux.lds.S b/trunk/arch/m68knommu/kernel/vmlinux.lds.S index ccd2ceb05cfb..59ced831b792 100644 --- a/trunk/arch/m68knommu/kernel/vmlinux.lds.S +++ b/trunk/arch/m68knommu/kernel/vmlinux.lds.S @@ -7,6 +7,7 @@ * run kernels. */ +#include #include #if defined(CONFIG_RAMKERNEL) diff --git a/trunk/arch/m68knommu/lib/semaphore.S b/trunk/arch/m68knommu/lib/semaphore.S index 87c746034376..76765362fea6 100644 --- a/trunk/arch/m68knommu/lib/semaphore.S +++ b/trunk/arch/m68knommu/lib/semaphore.S @@ -9,6 +9,7 @@ */ #include +#include #include /* diff --git a/trunk/arch/m68knommu/mm/init.c b/trunk/arch/m68knommu/mm/init.c index e4c233eef195..70d1653be3da 100644 --- a/trunk/arch/m68knommu/mm/init.c +++ b/trunk/arch/m68knommu/mm/init.c @@ -15,6 +15,7 @@ * DEC/2000 -- linux 2.4 support */ +#include #include #include #include diff --git a/trunk/arch/m68knommu/mm/kmap.c b/trunk/arch/m68knommu/mm/kmap.c index bc32f38843f0..04213e1c1e57 100644 --- a/trunk/arch/m68knommu/mm/kmap.c +++ b/trunk/arch/m68knommu/mm/kmap.c @@ -5,6 +5,7 @@ * Copyright (C) 2000-2002 David McCullough */ +#include #include #include #include diff --git a/trunk/arch/m68knommu/mm/memory.c b/trunk/arch/m68knommu/mm/memory.c index 411e45248e5c..0eef72915e61 100644 --- a/trunk/arch/m68knommu/mm/memory.c +++ b/trunk/arch/m68knommu/mm/memory.c @@ -11,6 +11,7 @@ * Copyright (C) 1995 Hamish Macdonald */ +#include #include #include #include diff --git a/trunk/arch/m68knommu/platform/5206/config.c b/trunk/arch/m68knommu/platform/5206/config.c index 34657f85e702..987c91a9a206 100644 --- a/trunk/arch/m68knommu/platform/5206/config.c +++ b/trunk/arch/m68knommu/platform/5206/config.c @@ -9,6 +9,7 @@ /***************************************************************************/ +#include #include #include #include diff --git a/trunk/arch/m68knommu/platform/5206e/config.c b/trunk/arch/m68knommu/platform/5206e/config.c index 48e4d6266507..f35b8606c1ee 100644 --- a/trunk/arch/m68knommu/platform/5206e/config.c +++ b/trunk/arch/m68knommu/platform/5206e/config.c @@ -8,6 +8,7 @@ /***************************************************************************/ +#include #include #include #include diff --git a/trunk/arch/m68knommu/platform/520x/config.c b/trunk/arch/m68knommu/platform/520x/config.c index 823f561f35b0..71dea2e0f452 100644 --- a/trunk/arch/m68knommu/platform/520x/config.c +++ b/trunk/arch/m68knommu/platform/520x/config.c @@ -11,6 +11,7 @@ /***************************************************************************/ +#include #include #include #include diff --git a/trunk/arch/m68knommu/platform/523x/config.c b/trunk/arch/m68knommu/platform/523x/config.c index 85de817e9ec5..22767ce506e0 100644 --- a/trunk/arch/m68knommu/platform/523x/config.c +++ b/trunk/arch/m68knommu/platform/523x/config.c @@ -12,6 +12,7 @@ /***************************************************************************/ +#include #include #include #include diff --git a/trunk/arch/m68knommu/platform/5249/config.c b/trunk/arch/m68knommu/platform/5249/config.c index 9d19d5bdb8af..289c1821b841 100644 --- a/trunk/arch/m68knommu/platform/5249/config.c +++ b/trunk/arch/m68knommu/platform/5249/config.c @@ -8,6 +8,7 @@ /***************************************************************************/ +#include #include #include #include diff --git a/trunk/arch/m68knommu/platform/5272/config.c b/trunk/arch/m68knommu/platform/5272/config.c index d500e27eda57..cf36e7d007b9 100644 --- a/trunk/arch/m68knommu/platform/5272/config.c +++ b/trunk/arch/m68knommu/platform/5272/config.c @@ -9,6 +9,7 @@ /***************************************************************************/ +#include #include #include #include diff --git a/trunk/arch/m68knommu/platform/527x/config.c b/trunk/arch/m68knommu/platform/527x/config.c index bbae51597457..804de33cd6b7 100644 --- a/trunk/arch/m68knommu/platform/527x/config.c +++ b/trunk/arch/m68knommu/platform/527x/config.c @@ -12,6 +12,7 @@ /***************************************************************************/ +#include #include #include #include diff --git a/trunk/arch/m68knommu/platform/528x/config.c b/trunk/arch/m68knommu/platform/528x/config.c index 18dad9046144..a5d2aa38a27a 100644 --- a/trunk/arch/m68knommu/platform/528x/config.c +++ b/trunk/arch/m68knommu/platform/528x/config.c @@ -12,6 +12,7 @@ /***************************************************************************/ +#include #include #include #include diff --git a/trunk/arch/m68knommu/platform/5307/config.c b/trunk/arch/m68knommu/platform/5307/config.c index 8074ac56f479..7ed5782e9236 100644 --- a/trunk/arch/m68knommu/platform/5307/config.c +++ b/trunk/arch/m68knommu/platform/5307/config.c @@ -9,6 +9,7 @@ /***************************************************************************/ +#include #include #include #include diff --git a/trunk/arch/m68knommu/platform/5307/entry.S b/trunk/arch/m68knommu/platform/5307/entry.S index f0dba84d9101..9ddf5476ef8f 100644 --- a/trunk/arch/m68knommu/platform/5307/entry.S +++ b/trunk/arch/m68knommu/platform/5307/entry.S @@ -26,6 +26,7 @@ * Bug, speed and maintainability fixes by Philippe De Muyter */ +#include #include #include #include diff --git a/trunk/arch/m68knommu/platform/5307/head.S b/trunk/arch/m68knommu/platform/5307/head.S index f2edb6498cd9..1d9eb301d7ac 100644 --- a/trunk/arch/m68knommu/platform/5307/head.S +++ b/trunk/arch/m68knommu/platform/5307/head.S @@ -8,6 +8,7 @@ /*****************************************************************************/ +#include #include #include #include diff --git a/trunk/arch/m68knommu/platform/5307/ints.c b/trunk/arch/m68knommu/platform/5307/ints.c index b4b55093ae7e..a134fb2f0566 100644 --- a/trunk/arch/m68knommu/platform/5307/ints.c +++ b/trunk/arch/m68knommu/platform/5307/ints.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include diff --git a/trunk/arch/m68knommu/platform/5307/pit.c b/trunk/arch/m68knommu/platform/5307/pit.c index 994c893df1a4..ef174748825f 100644 --- a/trunk/arch/m68knommu/platform/5307/pit.c +++ b/trunk/arch/m68knommu/platform/5307/pit.c @@ -12,6 +12,7 @@ /***************************************************************************/ +#include #include #include #include diff --git a/trunk/arch/m68knommu/platform/5307/timers.c b/trunk/arch/m68knommu/platform/5307/timers.c index c3a9755c2d1f..83b8b89dfa09 100644 --- a/trunk/arch/m68knommu/platform/5307/timers.c +++ b/trunk/arch/m68knommu/platform/5307/timers.c @@ -8,6 +8,7 @@ /***************************************************************************/ +#include #include #include #include diff --git a/trunk/arch/m68knommu/platform/5307/vectors.c b/trunk/arch/m68knommu/platform/5307/vectors.c index 2a8b0d044ce5..ac313a160d8d 100644 --- a/trunk/arch/m68knommu/platform/5307/vectors.c +++ b/trunk/arch/m68knommu/platform/5307/vectors.c @@ -8,6 +8,7 @@ /***************************************************************************/ +#include #include #include #include diff --git a/trunk/arch/m68knommu/platform/5407/config.c b/trunk/arch/m68knommu/platform/5407/config.c index 5aad2645f0f1..f7c9018b85a7 100644 --- a/trunk/arch/m68knommu/platform/5407/config.c +++ b/trunk/arch/m68knommu/platform/5407/config.c @@ -9,6 +9,7 @@ /***************************************************************************/ +#include #include #include #include diff --git a/trunk/arch/m68knommu/platform/68328/config.c b/trunk/arch/m68knommu/platform/68328/config.c index 26ffeba28642..bcfa5d7fe1e2 100644 --- a/trunk/arch/m68knommu/platform/68328/config.c +++ b/trunk/arch/m68knommu/platform/68328/config.c @@ -17,6 +17,7 @@ #include #include +#include #include #include #include diff --git a/trunk/arch/m68knommu/platform/68328/entry.S b/trunk/arch/m68knommu/platform/68328/entry.S index f97862715450..7d8990d784a2 100644 --- a/trunk/arch/m68knommu/platform/68328/entry.S +++ b/trunk/arch/m68knommu/platform/68328/entry.S @@ -10,6 +10,7 @@ * Linux/m68k support by Hamish Macdonald */ +#include #include #include #include diff --git a/trunk/arch/m68knommu/platform/68328/head-de2.S b/trunk/arch/m68knommu/platform/68328/head-de2.S index 92d96456d363..94c5a1609a75 100644 --- a/trunk/arch/m68knommu/platform/68328/head-de2.S +++ b/trunk/arch/m68knommu/platform/68328/head-de2.S @@ -1,3 +1,4 @@ +#include #if defined(CONFIG_RAM32MB) #define MEM_END 0x02000000 /* Memory size 32Mb */ diff --git a/trunk/arch/m68knommu/platform/68328/head-pilot.S b/trunk/arch/m68knommu/platform/68328/head-pilot.S index 9e07faa3e81d..46b3604f999c 100644 --- a/trunk/arch/m68knommu/platform/68328/head-pilot.S +++ b/trunk/arch/m68knommu/platform/68328/head-pilot.S @@ -15,6 +15,7 @@ #define IMMED # #define DBG_PUTC(x) moveb IMMED x, 0xfffff907 +#include .global _stext .global _start diff --git a/trunk/arch/m68knommu/platform/68328/head-ram.S b/trunk/arch/m68knommu/platform/68328/head-ram.S index 252b80b02038..e8dc9241ff96 100644 --- a/trunk/arch/m68knommu/platform/68328/head-ram.S +++ b/trunk/arch/m68knommu/platform/68328/head-ram.S @@ -1,3 +1,4 @@ +#include .global __main .global __rom_start diff --git a/trunk/arch/m68knommu/platform/68328/head-rom.S b/trunk/arch/m68knommu/platform/68328/head-rom.S index 6ec77d3ea0b3..234430b9551c 100644 --- a/trunk/arch/m68knommu/platform/68328/head-rom.S +++ b/trunk/arch/m68knommu/platform/68328/head-rom.S @@ -1,3 +1,4 @@ +#include .global _start .global _stext diff --git a/trunk/arch/m68knommu/platform/68328/timers.c b/trunk/arch/m68knommu/platform/68328/timers.c index 438ef6ee9720..68c2cd6b0030 100644 --- a/trunk/arch/m68knommu/platform/68328/timers.c +++ b/trunk/arch/m68knommu/platform/68328/timers.c @@ -14,6 +14,7 @@ /***************************************************************************/ +#include #include #include #include diff --git a/trunk/arch/m68knommu/platform/68360/config.c b/trunk/arch/m68knommu/platform/68360/config.c index c5482e3622eb..69c670dfd62b 100644 --- a/trunk/arch/m68knommu/platform/68360/config.c +++ b/trunk/arch/m68knommu/platform/68360/config.c @@ -11,6 +11,7 @@ */ #include +#include #include #include #include diff --git a/trunk/arch/m68knommu/platform/68360/entry.S b/trunk/arch/m68knommu/platform/68360/entry.S index f1af8977f294..8ff48adf24ab 100644 --- a/trunk/arch/m68knommu/platform/68360/entry.S +++ b/trunk/arch/m68knommu/platform/68360/entry.S @@ -12,6 +12,7 @@ * M68360 Port by SED Systems, and Lineo. */ +#include #include #include #include diff --git a/trunk/arch/m68knommu/platform/68360/head-ram.S b/trunk/arch/m68knommu/platform/68360/head-ram.S index 2ea51479f13a..f497713a4ec7 100644 --- a/trunk/arch/m68knommu/platform/68360/head-ram.S +++ b/trunk/arch/m68knommu/platform/68360/head-ram.S @@ -12,6 +12,7 @@ * */ #define ASSEMBLY +#include .global _stext .global _start diff --git a/trunk/arch/m68knommu/platform/68360/head-rom.S b/trunk/arch/m68knommu/platform/68360/head-rom.S index 62ecf4144b3b..2d28c3e19a88 100644 --- a/trunk/arch/m68knommu/platform/68360/head-rom.S +++ b/trunk/arch/m68knommu/platform/68360/head-rom.S @@ -11,6 +11,7 @@ * Copyright (C) 1998 D. Jeff Dionne , * */ +#include .global _stext .global _sbss diff --git a/trunk/arch/m68knommu/platform/68360/ints.c b/trunk/arch/m68knommu/platform/68360/ints.c index 4df3c146eb74..0245fc4a4781 100644 --- a/trunk/arch/m68knommu/platform/68360/ints.c +++ b/trunk/arch/m68knommu/platform/68360/ints.c @@ -10,6 +10,7 @@ * Copyright (c) 1999 D. Jeff Dionne */ +#include #include #include #include diff --git a/trunk/arch/m68knommu/platform/68EZ328/config.c b/trunk/arch/m68knommu/platform/68EZ328/config.c index 659b80aca118..15a14a67c2bf 100644 --- a/trunk/arch/m68knommu/platform/68EZ328/config.c +++ b/trunk/arch/m68knommu/platform/68EZ328/config.c @@ -14,6 +14,7 @@ /***************************************************************************/ #include +#include #include #include #include diff --git a/trunk/arch/m68knommu/platform/68VZ328/config.c b/trunk/arch/m68knommu/platform/68VZ328/config.c index fcd100b7594d..4058de5c8fa2 100644 --- a/trunk/arch/m68knommu/platform/68VZ328/config.c +++ b/trunk/arch/m68knommu/platform/68VZ328/config.c @@ -14,6 +14,7 @@ /***************************************************************************/ +#include #include #include #include diff --git a/trunk/arch/mips/arc/identify.c b/trunk/arch/mips/arc/identify.c index 3ba7c47f9f23..1bd6199e174a 100644 --- a/trunk/arch/mips/arc/identify.c +++ b/trunk/arch/mips/arc/identify.c @@ -11,6 +11,7 @@ * * Copyright (C) 1996 David S. Miller (dm@engr.sgi.com) */ +#include #include #include #include diff --git a/trunk/arch/mips/au1000/common/au1xxx_irqmap.c b/trunk/arch/mips/au1000/common/au1xxx_irqmap.c index 7acfe9bf5fc3..5a1e3687cafa 100644 --- a/trunk/arch/mips/au1000/common/au1xxx_irqmap.c +++ b/trunk/arch/mips/au1000/common/au1xxx_irqmap.c @@ -25,6 +25,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/au1000/common/dbdma.c b/trunk/arch/mips/au1000/common/dbdma.c index 69cabb7463ff..a547e47dd5fd 100644 --- a/trunk/arch/mips/au1000/common/dbdma.c +++ b/trunk/arch/mips/au1000/common/dbdma.c @@ -30,6 +30,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/mips/au1000/common/dbg_io.c b/trunk/arch/mips/au1000/common/dbg_io.c index 0a50af7f34b8..7bc768e558db 100644 --- a/trunk/arch/mips/au1000/common/dbg_io.c +++ b/trunk/arch/mips/au1000/common/dbg_io.c @@ -1,4 +1,5 @@ +#include #include #include diff --git a/trunk/arch/mips/au1000/common/dma.c b/trunk/arch/mips/au1000/common/dma.c index fb7c47c1585d..1d82f2277517 100644 --- a/trunk/arch/mips/au1000/common/dma.c +++ b/trunk/arch/mips/au1000/common/dma.c @@ -30,6 +30,7 @@ * 675 Mass Ave, Cambridge, MA 02139, USA. * */ +#include #include #include #include diff --git a/trunk/arch/mips/au1000/common/gpio.c b/trunk/arch/mips/au1000/common/gpio.c index ce55297dcb8c..5f5915b83142 100644 --- a/trunk/arch/mips/au1000/common/gpio.c +++ b/trunk/arch/mips/au1000/common/gpio.c @@ -19,6 +19,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/au1000/common/irq.c b/trunk/arch/mips/au1000/common/irq.c index c0d56c130a59..12d6edee895e 100644 --- a/trunk/arch/mips/au1000/common/irq.c +++ b/trunk/arch/mips/au1000/common/irq.c @@ -26,6 +26,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/au1000/common/pci.c b/trunk/arch/mips/au1000/common/pci.c index da591f674893..b1392abac809 100644 --- a/trunk/arch/mips/au1000/common/pci.c +++ b/trunk/arch/mips/au1000/common/pci.c @@ -30,6 +30,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/au1000/common/platform.c b/trunk/arch/mips/au1000/common/platform.c index 8fd203d4a339..32702e5fbf67 100644 --- a/trunk/arch/mips/au1000/common/platform.c +++ b/trunk/arch/mips/au1000/common/platform.c @@ -7,6 +7,7 @@ * License version 2. This program is licensed "as is" without any * warranty of any kind, whether express or implied. */ +#include #include #include #include diff --git a/trunk/arch/mips/au1000/common/power.c b/trunk/arch/mips/au1000/common/power.c index 7504a6364616..b035513fe30a 100644 --- a/trunk/arch/mips/au1000/common/power.c +++ b/trunk/arch/mips/au1000/common/power.c @@ -29,6 +29,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/au1000/common/reset.c b/trunk/arch/mips/au1000/common/reset.c index de5447e83849..c93af224c1b3 100644 --- a/trunk/arch/mips/au1000/common/reset.c +++ b/trunk/arch/mips/au1000/common/reset.c @@ -27,6 +27,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/au1000/common/setup.c b/trunk/arch/mips/au1000/common/setup.c index cc5138ce9c95..97165b6b3894 100644 --- a/trunk/arch/mips/au1000/common/setup.c +++ b/trunk/arch/mips/au1000/common/setup.c @@ -25,6 +25,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/au1000/common/time.c b/trunk/arch/mips/au1000/common/time.c index 7e988b0b0130..842e1b5ac4a1 100644 --- a/trunk/arch/mips/au1000/common/time.c +++ b/trunk/arch/mips/au1000/common/time.c @@ -33,6 +33,7 @@ */ #include +#include #include #include #include diff --git a/trunk/arch/mips/au1000/csb250/board_setup.c b/trunk/arch/mips/au1000/csb250/board_setup.c index 348c3024d3d1..1c55c5f59d75 100644 --- a/trunk/arch/mips/au1000/csb250/board_setup.c +++ b/trunk/arch/mips/au1000/csb250/board_setup.c @@ -26,6 +26,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/au1000/db1x00/board_setup.c b/trunk/arch/mips/au1000/db1x00/board_setup.c index 7a79293f8527..f00ec3b175d8 100644 --- a/trunk/arch/mips/au1000/db1x00/board_setup.c +++ b/trunk/arch/mips/au1000/db1x00/board_setup.c @@ -27,6 +27,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/au1000/db1x00/init.c b/trunk/arch/mips/au1000/db1x00/init.c index 0a3f025eb023..41e0522f3cf1 100644 --- a/trunk/arch/mips/au1000/db1x00/init.c +++ b/trunk/arch/mips/au1000/db1x00/init.c @@ -33,6 +33,7 @@ #include #include #include +#include #include #include diff --git a/trunk/arch/mips/au1000/db1x00/irqmap.c b/trunk/arch/mips/au1000/db1x00/irqmap.c index 3e5729145c2b..0138c5b7c860 100644 --- a/trunk/arch/mips/au1000/db1x00/irqmap.c +++ b/trunk/arch/mips/au1000/db1x00/irqmap.c @@ -25,6 +25,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/au1000/db1x00/mirage_ts.c b/trunk/arch/mips/au1000/db1x00/mirage_ts.c index 0942dcf69518..c29852c24b4f 100644 --- a/trunk/arch/mips/au1000/db1x00/mirage_ts.c +++ b/trunk/arch/mips/au1000/db1x00/mirage_ts.c @@ -31,6 +31,7 @@ * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/au1000/hydrogen3/board_setup.c b/trunk/arch/mips/au1000/hydrogen3/board_setup.c index d081640e2e00..2efae1064647 100644 --- a/trunk/arch/mips/au1000/hydrogen3/board_setup.c +++ b/trunk/arch/mips/au1000/hydrogen3/board_setup.c @@ -27,6 +27,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/au1000/hydrogen3/init.c b/trunk/arch/mips/au1000/hydrogen3/init.c index 8f02bb80a55a..01ab28483959 100644 --- a/trunk/arch/mips/au1000/hydrogen3/init.c +++ b/trunk/arch/mips/au1000/hydrogen3/init.c @@ -34,6 +34,7 @@ #include #include #include +#include #include #include diff --git a/trunk/arch/mips/au1000/mtx-1/board_setup.c b/trunk/arch/mips/au1000/mtx-1/board_setup.c index e917e54fc683..638de7bb43f0 100644 --- a/trunk/arch/mips/au1000/mtx-1/board_setup.c +++ b/trunk/arch/mips/au1000/mtx-1/board_setup.c @@ -28,6 +28,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/au1000/pb1000/board_setup.c b/trunk/arch/mips/au1000/pb1000/board_setup.c index 1cf18e16ab54..0b4807dc9f44 100644 --- a/trunk/arch/mips/au1000/pb1000/board_setup.c +++ b/trunk/arch/mips/au1000/pb1000/board_setup.c @@ -23,6 +23,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/au1000/pb1100/board_setup.c b/trunk/arch/mips/au1000/pb1100/board_setup.c index db27b9331ff3..13c2f6ca7e33 100644 --- a/trunk/arch/mips/au1000/pb1100/board_setup.c +++ b/trunk/arch/mips/au1000/pb1100/board_setup.c @@ -23,6 +23,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/au1000/pb1200/board_setup.c b/trunk/arch/mips/au1000/pb1200/board_setup.c index 8b953b9fc25c..a45b17538ac9 100644 --- a/trunk/arch/mips/au1000/pb1200/board_setup.c +++ b/trunk/arch/mips/au1000/pb1200/board_setup.c @@ -23,6 +23,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/au1000/pb1200/irqmap.c b/trunk/arch/mips/au1000/pb1200/irqmap.c index 2d49f32f4622..5dd164fc1889 100644 --- a/trunk/arch/mips/au1000/pb1200/irqmap.c +++ b/trunk/arch/mips/au1000/pb1200/irqmap.c @@ -22,6 +22,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/au1000/pb1500/board_setup.c b/trunk/arch/mips/au1000/pb1500/board_setup.c index 1a9a293de6ab..30bb87282b1f 100644 --- a/trunk/arch/mips/au1000/pb1500/board_setup.c +++ b/trunk/arch/mips/au1000/pb1500/board_setup.c @@ -23,6 +23,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/au1000/xxs1500/board_setup.c b/trunk/arch/mips/au1000/xxs1500/board_setup.c index ae3d6b19e94d..1e59433dfd66 100644 --- a/trunk/arch/mips/au1000/xxs1500/board_setup.c +++ b/trunk/arch/mips/au1000/xxs1500/board_setup.c @@ -23,6 +23,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/cobalt/console.c b/trunk/arch/mips/cobalt/console.c index 46c23b66bc17..300797d5f558 100644 --- a/trunk/arch/mips/cobalt/console.c +++ b/trunk/arch/mips/cobalt/console.c @@ -2,6 +2,7 @@ * (C) P. Horton 2006 */ +#include #include #include #include diff --git a/trunk/arch/mips/cobalt/setup.c b/trunk/arch/mips/cobalt/setup.c index c99714587ce8..ca719d6398bd 100644 --- a/trunk/arch/mips/cobalt/setup.c +++ b/trunk/arch/mips/cobalt/setup.c @@ -9,6 +9,7 @@ * Copyright (C) 2001, 2002, 2003 by Liam Davies (ldavies@agile.tv) * */ +#include #include #include #include diff --git a/trunk/arch/mips/ddb5xxx/common/prom.c b/trunk/arch/mips/ddb5xxx/common/prom.c index efef0f57ce1e..20c845c84d4b 100644 --- a/trunk/arch/mips/ddb5xxx/common/prom.c +++ b/trunk/arch/mips/ddb5xxx/common/prom.c @@ -7,6 +7,7 @@ * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/mips/ddb5xxx/ddb5477/irq.c b/trunk/arch/mips/ddb5xxx/ddb5477/irq.c index 22fb94b7c440..de433cf9fb50 100644 --- a/trunk/arch/mips/ddb5xxx/ddb5477/irq.c +++ b/trunk/arch/mips/ddb5xxx/ddb5477/irq.c @@ -10,6 +10,7 @@ * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/mips/ddb5xxx/ddb5477/setup.c b/trunk/arch/mips/ddb5xxx/ddb5477/setup.c index 47ba0b6f210f..93167ecdb424 100644 --- a/trunk/arch/mips/ddb5xxx/ddb5477/setup.c +++ b/trunk/arch/mips/ddb5xxx/ddb5477/setup.c @@ -13,6 +13,7 @@ * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/mips/dec/int-handler.S b/trunk/arch/mips/dec/int-handler.S index 455a65b91cb0..e8ec93e33fe6 100644 --- a/trunk/arch/mips/dec/int-handler.S +++ b/trunk/arch/mips/dec/int-handler.S @@ -13,6 +13,7 @@ * Rewritten extensively for controller-driven IRQ support * by Maciej W. Rozycki. */ +#include #include #include diff --git a/trunk/arch/mips/dec/prom/init.c b/trunk/arch/mips/dec/prom/init.c index bf2858071f1f..32a7cc7e4c65 100644 --- a/trunk/arch/mips/dec/prom/init.c +++ b/trunk/arch/mips/dec/prom/init.c @@ -4,6 +4,7 @@ * Copyright (C) 1998 Harald Koerfgen * Copyright (C) 2002, 2004 Maciej W. Rozycki */ +#include #include #include #include diff --git a/trunk/arch/mips/dec/prom/memory.c b/trunk/arch/mips/dec/prom/memory.c index 3027ce782797..1edaf3074ee9 100644 --- a/trunk/arch/mips/dec/prom/memory.c +++ b/trunk/arch/mips/dec/prom/memory.c @@ -4,6 +4,7 @@ * Copyright (C) 1998 Harald Koerfgen, Frieder Streffer and Paul M. Antoine * Copyright (C) 2000, 2002 Maciej W. Rozycki */ +#include #include #include #include diff --git a/trunk/arch/mips/galileo-boards/ev96100/setup.c b/trunk/arch/mips/galileo-boards/ev96100/setup.c index 639ad5562c63..a04aea6123da 100644 --- a/trunk/arch/mips/galileo-boards/ev96100/setup.c +++ b/trunk/arch/mips/galileo-boards/ev96100/setup.c @@ -32,6 +32,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/galileo-boards/ev96100/time.c b/trunk/arch/mips/galileo-boards/ev96100/time.c index 8cbe8426491a..bff5b1c174e4 100644 --- a/trunk/arch/mips/galileo-boards/ev96100/time.c +++ b/trunk/arch/mips/galileo-boards/ev96100/time.c @@ -32,6 +32,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/gt64120/common/time.c b/trunk/arch/mips/gt64120/common/time.c index c64a7723cafb..2287b59536e5 100644 --- a/trunk/arch/mips/gt64120/common/time.c +++ b/trunk/arch/mips/gt64120/common/time.c @@ -8,6 +8,7 @@ */ #include #include +#include #include #include #include diff --git a/trunk/arch/mips/gt64120/momenco_ocelot/dbg_io.c b/trunk/arch/mips/gt64120/momenco_ocelot/dbg_io.c index 2128684584f5..f0a6a38fcf4d 100644 --- a/trunk/arch/mips/gt64120/momenco_ocelot/dbg_io.c +++ b/trunk/arch/mips/gt64120/momenco_ocelot/dbg_io.c @@ -1,3 +1,4 @@ +#include #ifdef CONFIG_KGDB diff --git a/trunk/arch/mips/ite-boards/generic/dbg_io.c b/trunk/arch/mips/ite-boards/generic/dbg_io.c index 8e9cd8a9670a..6a7ccaf93502 100644 --- a/trunk/arch/mips/ite-boards/generic/dbg_io.c +++ b/trunk/arch/mips/ite-boards/generic/dbg_io.c @@ -1,4 +1,5 @@ +#include #ifdef CONFIG_KGDB diff --git a/trunk/arch/mips/ite-boards/generic/it8172_cir.c b/trunk/arch/mips/ite-boards/generic/it8172_cir.c index bfc25adcfec6..19deb153d005 100644 --- a/trunk/arch/mips/ite-boards/generic/it8172_cir.c +++ b/trunk/arch/mips/ite-boards/generic/it8172_cir.c @@ -28,6 +28,7 @@ * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #ifdef CONFIG_IT8172_CIR diff --git a/trunk/arch/mips/ite-boards/generic/it8172_setup.c b/trunk/arch/mips/ite-boards/generic/it8172_setup.c index a4615a5904aa..da6ae0991199 100644 --- a/trunk/arch/mips/ite-boards/generic/it8172_setup.c +++ b/trunk/arch/mips/ite-boards/generic/it8172_setup.c @@ -26,6 +26,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/ite-boards/generic/pmon_prom.c b/trunk/arch/mips/ite-boards/generic/pmon_prom.c index 7d0a79be34d8..6e505af0cc08 100644 --- a/trunk/arch/mips/ite-boards/generic/pmon_prom.c +++ b/trunk/arch/mips/ite-boards/generic/pmon_prom.c @@ -35,6 +35,7 @@ * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/jazz/setup.c b/trunk/arch/mips/jazz/setup.c index 385413e30fdd..c8d0df7d0c36 100644 --- a/trunk/arch/mips/jazz/setup.c +++ b/trunk/arch/mips/jazz/setup.c @@ -8,6 +8,7 @@ * Copyright (C) 1996, 1997, 1998, 2001 by Ralf Baechle * Copyright (C) 2001 MIPS Technologies, Inc. */ +#include #include #include #include diff --git a/trunk/arch/mips/jmr3927/rbhma3100/init.c b/trunk/arch/mips/jmr3927/rbhma3100/init.c index a55cb4572ded..a0674d73962f 100644 --- a/trunk/arch/mips/jmr3927/rbhma3100/init.c +++ b/trunk/arch/mips/jmr3927/rbhma3100/init.c @@ -27,6 +27,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/jmr3927/rbhma3100/irq.c b/trunk/arch/mips/jmr3927/rbhma3100/irq.c index 9c43702e7a93..380046ea1db5 100644 --- a/trunk/arch/mips/jmr3927/rbhma3100/irq.c +++ b/trunk/arch/mips/jmr3927/rbhma3100/irq.c @@ -29,6 +29,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include diff --git a/trunk/arch/mips/jmr3927/rbhma3100/setup.c b/trunk/arch/mips/jmr3927/rbhma3100/setup.c index 6d4635d89d94..308e6cdcd245 100644 --- a/trunk/arch/mips/jmr3927/rbhma3100/setup.c +++ b/trunk/arch/mips/jmr3927/rbhma3100/setup.c @@ -33,6 +33,7 @@ *********************************************************************** */ +#include #include #include #include diff --git a/trunk/arch/mips/kernel/asm-offsets.c b/trunk/arch/mips/kernel/asm-offsets.c index ec28077d5ee2..f1bb6a2dc5fc 100644 --- a/trunk/arch/mips/kernel/asm-offsets.c +++ b/trunk/arch/mips/kernel/asm-offsets.c @@ -8,6 +8,7 @@ * Kevin Kissell, kevink@mips.com and Carsten Langgaard, carstenl@mips.com * Copyright (C) 2000 MIPS Technologies, Inc. */ +#include #include #include #include diff --git a/trunk/arch/mips/kernel/cpu-bugs64.c b/trunk/arch/mips/kernel/cpu-bugs64.c index c09337b947b9..d268827c62bd 100644 --- a/trunk/arch/mips/kernel/cpu-bugs64.c +++ b/trunk/arch/mips/kernel/cpu-bugs64.c @@ -6,6 +6,7 @@ * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/mips/kernel/cpu-probe.c b/trunk/arch/mips/kernel/cpu-probe.c index ba08f055feb2..e045aba4ebda 100644 --- a/trunk/arch/mips/kernel/cpu-probe.c +++ b/trunk/arch/mips/kernel/cpu-probe.c @@ -11,6 +11,7 @@ * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/mips/kernel/entry.S b/trunk/arch/mips/kernel/entry.S index ecfd637d702a..457565162dd5 100644 --- a/trunk/arch/mips/kernel/entry.S +++ b/trunk/arch/mips/kernel/entry.S @@ -7,6 +7,7 @@ * Copyright (C) 1999, 2000 Silicon Graphics, Inc. * Copyright (C) 2001 MIPS Technologies, Inc. */ +#include #include #include diff --git a/trunk/arch/mips/kernel/gdb-low.S b/trunk/arch/mips/kernel/gdb-low.S index 666bc9014cbd..8760131f89d9 100644 --- a/trunk/arch/mips/kernel/gdb-low.S +++ b/trunk/arch/mips/kernel/gdb-low.S @@ -3,6 +3,7 @@ * * Copyright (C) 1995 Andreas Busse */ +#include #include #include diff --git a/trunk/arch/mips/kernel/gdb-stub.c b/trunk/arch/mips/kernel/gdb-stub.c index 719d26968cb2..6ecbdc1fefd1 100644 --- a/trunk/arch/mips/kernel/gdb-stub.c +++ b/trunk/arch/mips/kernel/gdb-stub.c @@ -120,6 +120,7 @@ * breakpoints, single stepping, * printing variables, etc. */ +#include #include #include #include diff --git a/trunk/arch/mips/kernel/genex.S b/trunk/arch/mips/kernel/genex.S index 5254a2222d2b..6888cde560af 100644 --- a/trunk/arch/mips/kernel/genex.S +++ b/trunk/arch/mips/kernel/genex.S @@ -8,6 +8,7 @@ * Copyright (C) 2001 MIPS Technologies, Inc. * Copyright (C) 2002 Maciej W. Rozycki */ +#include #include #include diff --git a/trunk/arch/mips/kernel/head.S b/trunk/arch/mips/kernel/head.S index 476c1eb33c94..c018098c9a56 100644 --- a/trunk/arch/mips/kernel/head.S +++ b/trunk/arch/mips/kernel/head.S @@ -13,6 +13,7 @@ * Kevin Kissell, kevink@mips.com and Carsten Langgaard, carstenl@mips.com * Copyright (C) 2000 MIPS Technologies, Inc. All rights reserved. */ +#include #include #include diff --git a/trunk/arch/mips/kernel/irq.c b/trunk/arch/mips/kernel/irq.c index cde5e5afa179..5c9dcd5eed59 100644 --- a/trunk/arch/mips/kernel/irq.c +++ b/trunk/arch/mips/kernel/irq.c @@ -8,6 +8,7 @@ * Copyright (C) 1992 Linus Torvalds * Copyright (C) 1994 - 2000 Ralf Baechle */ +#include #include #include #include diff --git a/trunk/arch/mips/kernel/linux32.c b/trunk/arch/mips/kernel/linux32.c index 450ac592da57..a7d2bb3cf835 100644 --- a/trunk/arch/mips/kernel/linux32.c +++ b/trunk/arch/mips/kernel/linux32.c @@ -5,6 +5,7 @@ * Written by Ulf Carlsson (ulfc@engr.sgi.com) * sys32_execve from ia64/ia32 code, Feb 2000, Kanoj Sarcar (kanoj@sgi.com) */ +#include #include #include #include diff --git a/trunk/arch/mips/kernel/mips_ksyms.c b/trunk/arch/mips/kernel/mips_ksyms.c index f44a01357ada..0a71a4c33716 100644 --- a/trunk/arch/mips/kernel/mips_ksyms.c +++ b/trunk/arch/mips/kernel/mips_ksyms.c @@ -8,6 +8,7 @@ * Copyright (C) 1996, 97, 98, 99, 2000, 01, 03, 04, 05 by Ralf Baechle * Copyright (C) 1999, 2000, 01 Silicon Graphics, Inc. */ +#include #include #include #include diff --git a/trunk/arch/mips/kernel/proc.c b/trunk/arch/mips/kernel/proc.c index d8beef107902..9def554f335b 100644 --- a/trunk/arch/mips/kernel/proc.c +++ b/trunk/arch/mips/kernel/proc.c @@ -5,6 +5,7 @@ * Copyright (C) 2001, 2004 MIPS Technologies, Inc. * Copyright (C) 2004 Maciej W. Rozycki */ +#include #include #include #include diff --git a/trunk/arch/mips/kernel/process.c b/trunk/arch/mips/kernel/process.c index 7ab67f786bfe..199a06e873c6 100644 --- a/trunk/arch/mips/kernel/process.c +++ b/trunk/arch/mips/kernel/process.c @@ -8,6 +8,7 @@ * Copyright (C) 1999, 2000 Silicon Graphics, Inc. * Copyright (C) 2004 Thiemo Seufer */ +#include #include #include #include diff --git a/trunk/arch/mips/kernel/ptrace.c b/trunk/arch/mips/kernel/ptrace.c index 362d1728e531..1d44025188d8 100644 --- a/trunk/arch/mips/kernel/ptrace.c +++ b/trunk/arch/mips/kernel/ptrace.c @@ -14,6 +14,7 @@ * At this time Linux/MIPS64 only supports syscall tracing, even for 32-bit * binaries. */ +#include #include #include #include diff --git a/trunk/arch/mips/kernel/r2300_switch.S b/trunk/arch/mips/kernel/r2300_switch.S index 656bde2e11b1..0d9c4a32a9c2 100644 --- a/trunk/arch/mips/kernel/r2300_switch.S +++ b/trunk/arch/mips/kernel/r2300_switch.S @@ -10,6 +10,7 @@ * Further modifications to make this work: * Copyright (c) 1998-2000 Harald Koerfgen */ +#include #include #include #include diff --git a/trunk/arch/mips/kernel/r4k_fpu.S b/trunk/arch/mips/kernel/r4k_fpu.S index 880fa6e841ee..283a98508fc8 100644 --- a/trunk/arch/mips/kernel/r4k_fpu.S +++ b/trunk/arch/mips/kernel/r4k_fpu.S @@ -12,6 +12,7 @@ * Copyright (C) 2000 MIPS Technologies, Inc. * Copyright (C) 1999, 2001 Silicon Graphics, Inc. */ +#include #include #include #include diff --git a/trunk/arch/mips/kernel/r4k_switch.S b/trunk/arch/mips/kernel/r4k_switch.S index d5c8b82fed72..e1b85e6c486a 100644 --- a/trunk/arch/mips/kernel/r4k_switch.S +++ b/trunk/arch/mips/kernel/r4k_switch.S @@ -10,6 +10,7 @@ * Copyright (C) 2000 MIPS Technologies, Inc. * written by Carsten Langgaard, carstenl@mips.com */ +#include #include #include #include diff --git a/trunk/arch/mips/kernel/scall32-o32.S b/trunk/arch/mips/kernel/scall32-o32.S index 8f8101f878ca..6344be46ca8c 100644 --- a/trunk/arch/mips/kernel/scall32-o32.S +++ b/trunk/arch/mips/kernel/scall32-o32.S @@ -7,6 +7,7 @@ * Copyright (C) 2001 MIPS Technologies, Inc. * Copyright (C) 2004 Thiemo Seufer */ +#include #include #include #include diff --git a/trunk/arch/mips/kernel/scall64-64.S b/trunk/arch/mips/kernel/scall64-64.S index b4a34a625a2e..12d96c7d0bb2 100644 --- a/trunk/arch/mips/kernel/scall64-64.S +++ b/trunk/arch/mips/kernel/scall64-64.S @@ -7,6 +7,7 @@ * Copyright (C) 1999, 2000 Silicon Graphics, Inc. * Copyright (C) 2001 MIPS Technologies, Inc. */ +#include #include #include #include diff --git a/trunk/arch/mips/kernel/scall64-n32.S b/trunk/arch/mips/kernel/scall64-n32.S index df8c4f8ccd61..685698554a8a 100644 --- a/trunk/arch/mips/kernel/scall64-n32.S +++ b/trunk/arch/mips/kernel/scall64-n32.S @@ -7,6 +7,7 @@ * Copyright (C) 1999, 2000 Silicon Graphics, Inc. * Copyright (C) 2001 MIPS Technologies, Inc. */ +#include #include #include #include diff --git a/trunk/arch/mips/kernel/scall64-o32.S b/trunk/arch/mips/kernel/scall64-o32.S index f04fe4f085c3..0e632934cb76 100644 --- a/trunk/arch/mips/kernel/scall64-o32.S +++ b/trunk/arch/mips/kernel/scall64-o32.S @@ -13,6 +13,7 @@ * to ABI64 calling convention. 64-bit syscalls are also processed * here for now. */ +#include #include #include #include diff --git a/trunk/arch/mips/kernel/setup.c b/trunk/arch/mips/kernel/setup.c index 5edd8d4bb665..d3e087115023 100644 --- a/trunk/arch/mips/kernel/setup.c +++ b/trunk/arch/mips/kernel/setup.c @@ -10,6 +10,7 @@ * Copyright (C) 1999 Silicon Graphics, Inc. * Copyright (C) 2000 2001, 2002 Maciej W. Rozycki */ +#include #include #include #include diff --git a/trunk/arch/mips/kernel/signal-common.h b/trunk/arch/mips/kernel/signal-common.h index b1f09d54ebe6..ce6cb915c0a7 100644 --- a/trunk/arch/mips/kernel/signal-common.h +++ b/trunk/arch/mips/kernel/signal-common.h @@ -8,6 +8,7 @@ * Copyright (C) 1999, 2000 Silicon Graphics, Inc. */ +#include static inline int setup_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc) diff --git a/trunk/arch/mips/kernel/signal.c b/trunk/arch/mips/kernel/signal.c index 6b4d9be31615..402efd27c79e 100644 --- a/trunk/arch/mips/kernel/signal.c +++ b/trunk/arch/mips/kernel/signal.c @@ -7,6 +7,7 @@ * Copyright (C) 1994 - 2000 Ralf Baechle * Copyright (C) 1999, 2000 Silicon Graphics, Inc. */ +#include #include #include #include diff --git a/trunk/arch/mips/kernel/syscall.c b/trunk/arch/mips/kernel/syscall.c index 0721314db657..6da8c68e89db 100644 --- a/trunk/arch/mips/kernel/syscall.c +++ b/trunk/arch/mips/kernel/syscall.c @@ -7,6 +7,7 @@ * Copyright (C) 1999, 2000 Silicon Graphics, Inc. * Copyright (C) 2001 MIPS Technologies, Inc. */ +#include #include #include #include diff --git a/trunk/arch/mips/kernel/time.c b/trunk/arch/mips/kernel/time.c index c2b1fcf6024f..13ff4da598cd 100644 --- a/trunk/arch/mips/kernel/time.c +++ b/trunk/arch/mips/kernel/time.c @@ -11,6 +11,7 @@ * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/mips/kernel/traps.c b/trunk/arch/mips/kernel/traps.c index 8b95eca9ac74..67971938a2cb 100644 --- a/trunk/arch/mips/kernel/traps.c +++ b/trunk/arch/mips/kernel/traps.c @@ -11,6 +11,7 @@ * Copyright (C) 2000, 01 MIPS Technologies, Inc. * Copyright (C) 2002, 2003, 2004, 2005 Maciej W. Rozycki */ +#include #include #include #include diff --git a/trunk/arch/mips/kernel/unaligned.c b/trunk/arch/mips/kernel/unaligned.c index 7e7d54823486..5b5a3736cbbc 100644 --- a/trunk/arch/mips/kernel/unaligned.c +++ b/trunk/arch/mips/kernel/unaligned.c @@ -72,6 +72,7 @@ * A store crossing a page boundary might be executed only partially. * Undo the partial store in this case. */ +#include #include #include #include diff --git a/trunk/arch/mips/kernel/vmlinux.lds.S b/trunk/arch/mips/kernel/vmlinux.lds.S index 0bb9cd889456..b84d1f9ce28e 100644 --- a/trunk/arch/mips/kernel/vmlinux.lds.S +++ b/trunk/arch/mips/kernel/vmlinux.lds.S @@ -1,3 +1,4 @@ +#include #include #include diff --git a/trunk/arch/mips/lasat/lasat_board.c b/trunk/arch/mips/lasat/lasat_board.c index d425120b0282..fc9b0e2a6be1 100644 --- a/trunk/arch/mips/lasat/lasat_board.c +++ b/trunk/arch/mips/lasat/lasat_board.c @@ -17,6 +17,7 @@ * * Routines specific to the LASAT boards */ +#include #include #include #include diff --git a/trunk/arch/mips/lasat/reset.c b/trunk/arch/mips/lasat/reset.c index 9e22acf03083..181bf68175fc 100644 --- a/trunk/arch/mips/lasat/reset.c +++ b/trunk/arch/mips/lasat/reset.c @@ -17,6 +17,7 @@ * * Reset the LASAT board. */ +#include #include #include diff --git a/trunk/arch/mips/lasat/setup.c b/trunk/arch/mips/lasat/setup.c index 2187e63c6d88..3f64277429e4 100644 --- a/trunk/arch/mips/lasat/setup.c +++ b/trunk/arch/mips/lasat/setup.c @@ -22,6 +22,7 @@ * * Lasat specific setup. */ +#include #include #include #include diff --git a/trunk/arch/mips/lasat/sysctl.c b/trunk/arch/mips/lasat/sysctl.c index 6dd7ae1b7c25..e3d5aaa90f0d 100644 --- a/trunk/arch/mips/lasat/sysctl.c +++ b/trunk/arch/mips/lasat/sysctl.c @@ -20,6 +20,7 @@ #include #include +#include #include #include #include diff --git a/trunk/arch/mips/lib-32/dump_tlb.c b/trunk/arch/mips/lib-32/dump_tlb.c index 6a68deb51aae..c49a925d0169 100644 --- a/trunk/arch/mips/lib-32/dump_tlb.c +++ b/trunk/arch/mips/lib-32/dump_tlb.c @@ -4,6 +4,7 @@ * Copyright (C) 1994, 1995 by Waldorf Electronics, written by Ralf Baechle. * Copyright (C) 1999 by Silicon Graphics, Inc. */ +#include #include #include #include diff --git a/trunk/arch/mips/lib-64/dump_tlb.c b/trunk/arch/mips/lib-64/dump_tlb.c index be8261be679b..11a5f015f040 100644 --- a/trunk/arch/mips/lib-64/dump_tlb.c +++ b/trunk/arch/mips/lib-64/dump_tlb.c @@ -4,6 +4,7 @@ * Copyright (C) 1994, 1995 by Waldorf Electronics, written by Ralf Baechle. * Copyright (C) 1999 by Silicon Graphics, Inc. */ +#include #include #include #include diff --git a/trunk/arch/mips/lib/memcpy.S b/trunk/arch/mips/lib/memcpy.S index a526c62cb76a..7f9aafa4d80e 100644 --- a/trunk/arch/mips/lib/memcpy.S +++ b/trunk/arch/mips/lib/memcpy.S @@ -12,6 +12,7 @@ * * Mnemonic names for arguments to memcpy/__copy_user */ +#include /* * Hack to resolve longstanding prefetch issue diff --git a/trunk/arch/mips/math-emu/kernel_linkage.c b/trunk/arch/mips/math-emu/kernel_linkage.c index 5b3390f64917..56ca0c6a7178 100644 --- a/trunk/arch/mips/math-emu/kernel_linkage.c +++ b/trunk/arch/mips/math-emu/kernel_linkage.c @@ -19,6 +19,7 @@ * manipulation primitives for the Algorithmics MIPS * FPU Emulator */ +#include #include #include #include diff --git a/trunk/arch/mips/mips-boards/atlas/atlas_setup.c b/trunk/arch/mips/mips-boards/atlas/atlas_setup.c index 3a7c3d28aa0d..8cc9effcb832 100644 --- a/trunk/arch/mips/mips-boards/atlas/atlas_setup.c +++ b/trunk/arch/mips/mips-boards/atlas/atlas_setup.c @@ -15,6 +15,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/mips-boards/generic/init.c b/trunk/arch/mips/mips-boards/generic/init.c index 58a0fe883591..df4e94735604 100644 --- a/trunk/arch/mips/mips-boards/generic/init.c +++ b/trunk/arch/mips/mips-boards/generic/init.c @@ -19,6 +19,7 @@ * * PROM library initialisation code. */ +#include #include #include #include diff --git a/trunk/arch/mips/mips-boards/generic/memory.c b/trunk/arch/mips/mips-boards/generic/memory.c index c89fcf9e9c22..fd492562584a 100644 --- a/trunk/arch/mips/mips-boards/generic/memory.c +++ b/trunk/arch/mips/mips-boards/generic/memory.c @@ -18,6 +18,7 @@ * PROM library functions for acquiring/using memory descriptors given to * us from the YAMON. */ +#include #include #include #include diff --git a/trunk/arch/mips/mips-boards/generic/printf.c b/trunk/arch/mips/mips-boards/generic/printf.c index 1a711bd79b51..2c1ab1f19fdc 100644 --- a/trunk/arch/mips/mips-boards/generic/printf.c +++ b/trunk/arch/mips/mips-boards/generic/printf.c @@ -17,6 +17,7 @@ * * Putting things on the screen/serial line using YAMONs facilities. */ +#include #include #include #include diff --git a/trunk/arch/mips/mips-boards/generic/reset.c b/trunk/arch/mips/mips-boards/generic/reset.c index 0996ba368b2a..7213c395fb6b 100644 --- a/trunk/arch/mips/mips-boards/generic/reset.c +++ b/trunk/arch/mips/mips-boards/generic/reset.c @@ -22,6 +22,7 @@ * Reset the MIPS boards. * */ +#include #include #include diff --git a/trunk/arch/mips/mips-boards/generic/time.c b/trunk/arch/mips/mips-boards/generic/time.c index 5e207760826b..a9f6124b3a22 100644 --- a/trunk/arch/mips/mips-boards/generic/time.c +++ b/trunk/arch/mips/mips-boards/generic/time.c @@ -19,6 +19,7 @@ */ #include +#include #include #include #include diff --git a/trunk/arch/mips/mips-boards/malta/malta_setup.c b/trunk/arch/mips/mips-boards/malta/malta_setup.c index bc4ac6f01877..0766e434b6bd 100644 --- a/trunk/arch/mips/mips-boards/malta/malta_setup.c +++ b/trunk/arch/mips/mips-boards/malta/malta_setup.c @@ -15,6 +15,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/mips-boards/sead/sead_setup.c b/trunk/arch/mips/mips-boards/sead/sead_setup.c index a856bd664879..6430f11f3a95 100644 --- a/trunk/arch/mips/mips-boards/sead/sead_setup.c +++ b/trunk/arch/mips/mips-boards/sead/sead_setup.c @@ -17,6 +17,7 @@ * * SEAD specific setup. */ +#include #include #include #include diff --git a/trunk/arch/mips/mips-boards/sim/sim_IRQ.c b/trunk/arch/mips/mips-boards/sim/sim_IRQ.c index ec549f3e2011..5b84c7fe1022 100644 --- a/trunk/arch/mips/mips-boards/sim/sim_IRQ.c +++ b/trunk/arch/mips/mips-boards/sim/sim_IRQ.c @@ -17,6 +17,7 @@ * * Interrupt exception dispatch code. */ +#include #include #include diff --git a/trunk/arch/mips/mips-boards/sim/sim_irq.S b/trunk/arch/mips/mips-boards/sim/sim_irq.S index b7444e74a6a1..d16cf3822076 100644 --- a/trunk/arch/mips/mips-boards/sim/sim_irq.S +++ b/trunk/arch/mips/mips-boards/sim/sim_irq.S @@ -17,6 +17,7 @@ * Interrupt exception dispatch code. * */ +#include #include #include diff --git a/trunk/arch/mips/mips-boards/sim/sim_setup.c b/trunk/arch/mips/mips-boards/sim/sim_setup.c index 3d4a785b565a..15a5dac4ae19 100644 --- a/trunk/arch/mips/mips-boards/sim/sim_setup.c +++ b/trunk/arch/mips/mips-boards/sim/sim_setup.c @@ -16,6 +16,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/mips/mips-boards/sim/sim_smp.c b/trunk/arch/mips/mips-boards/sim/sim_smp.c index cb47863ecf10..004070956cca 100644 --- a/trunk/arch/mips/mips-boards/sim/sim_smp.c +++ b/trunk/arch/mips/mips-boards/sim/sim_smp.c @@ -18,6 +18,7 @@ /* * Simulator Platform-specific hooks for SMP operation */ +#include #include #include #include diff --git a/trunk/arch/mips/mips-boards/sim/sim_time.c b/trunk/arch/mips/mips-boards/sim/sim_time.c index e7f6003357f7..18b968c696d1 100644 --- a/trunk/arch/mips/mips-boards/sim/sim_time.c +++ b/trunk/arch/mips/mips-boards/sim/sim_time.c @@ -1,4 +1,5 @@ #include +#include #include #include #include diff --git a/trunk/arch/mips/mm/c-r4k.c b/trunk/arch/mips/mm/c-r4k.c index 857b726f4d41..75d887e89739 100644 --- a/trunk/arch/mips/mm/c-r4k.c +++ b/trunk/arch/mips/mm/c-r4k.c @@ -7,6 +7,7 @@ * Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Ralf Baechle (ralf@gnu.org) * Copyright (C) 1999, 2000 Silicon Graphics, Inc. */ +#include #include #include #include diff --git a/trunk/arch/mips/mm/c-sb1.c b/trunk/arch/mips/mm/c-sb1.c index 2d71efb82ac5..f9b129491b1e 100644 --- a/trunk/arch/mips/mm/c-sb1.c +++ b/trunk/arch/mips/mm/c-sb1.c @@ -18,6 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include #include #include diff --git a/trunk/arch/mips/mm/cache.c b/trunk/arch/mips/mm/cache.c index ddd3a2de1d73..83a56296be86 100644 --- a/trunk/arch/mips/mm/cache.c +++ b/trunk/arch/mips/mm/cache.c @@ -5,6 +5,7 @@ * * Copyright (C) 1994 - 2003 by Ralf Baechle */ +#include #include #include #include diff --git a/trunk/arch/mips/mm/cerr-sb1.c b/trunk/arch/mips/mm/cerr-sb1.c index e19fbb9ee47f..1cf3c6006ccd 100644 --- a/trunk/arch/mips/mm/cerr-sb1.c +++ b/trunk/arch/mips/mm/cerr-sb1.c @@ -15,6 +15,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/mm/dma-coherent.c b/trunk/arch/mips/mm/dma-coherent.c index 7fa5fd16e46b..f6b3c722230c 100644 --- a/trunk/arch/mips/mm/dma-coherent.c +++ b/trunk/arch/mips/mm/dma-coherent.c @@ -7,6 +7,7 @@ * Copyright (C) 2000, 2001 Ralf Baechle * swiped from i386, and cloned for MIPS by Geert, polished by Ralf. */ +#include #include #include #include diff --git a/trunk/arch/mips/mm/dma-noncoherent.c b/trunk/arch/mips/mm/dma-noncoherent.c index 2eeffe5c2a3a..cd4ea8474f89 100644 --- a/trunk/arch/mips/mm/dma-noncoherent.c +++ b/trunk/arch/mips/mm/dma-noncoherent.c @@ -7,6 +7,7 @@ * Copyright (C) 2000, 2001 Ralf Baechle * swiped from i386, and cloned for MIPS by Geert, polished by Ralf. */ +#include #include #include #include diff --git a/trunk/arch/mips/mm/highmem.c b/trunk/arch/mips/mm/highmem.c index 99ebf3ccc222..0c544375b856 100644 --- a/trunk/arch/mips/mm/highmem.c +++ b/trunk/arch/mips/mm/highmem.c @@ -1,3 +1,4 @@ +#include #include #include #include diff --git a/trunk/arch/mips/mm/init.c b/trunk/arch/mips/mm/init.c index 802bdd32aa2b..33f6e1cdfd5b 100644 --- a/trunk/arch/mips/mm/init.c +++ b/trunk/arch/mips/mm/init.c @@ -8,6 +8,7 @@ * Kevin D. Kissell, kevink@mips.com and Carsten Langgaard, carstenl@mips.com * Copyright (C) 2000 MIPS Technologies, Inc. All rights reserved. */ +#include #include #include #include diff --git a/trunk/arch/mips/mm/pg-sb1.c b/trunk/arch/mips/mm/pg-sb1.c index fc3c7878fb45..148c65b9cd8b 100644 --- a/trunk/arch/mips/mm/pg-sb1.c +++ b/trunk/arch/mips/mm/pg-sb1.c @@ -22,6 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/mm/pgtable-32.c b/trunk/arch/mips/mm/pgtable-32.c index 4bdaa05f485b..4a3c4919e314 100644 --- a/trunk/arch/mips/mm/pgtable-32.c +++ b/trunk/arch/mips/mm/pgtable-32.c @@ -5,6 +5,7 @@ * * Copyright (C) 2003 by Ralf Baechle */ +#include #include #include #include diff --git a/trunk/arch/mips/mm/pgtable.c b/trunk/arch/mips/mm/pgtable.c index 792c6eb44232..3fe94202da8c 100644 --- a/trunk/arch/mips/mm/pgtable.c +++ b/trunk/arch/mips/mm/pgtable.c @@ -1,3 +1,4 @@ +#include #include #include #include diff --git a/trunk/arch/mips/mm/tlb-r4k.c b/trunk/arch/mips/mm/tlb-r4k.c index 2cde1b772443..965cb4c4359d 100644 --- a/trunk/arch/mips/mm/tlb-r4k.c +++ b/trunk/arch/mips/mm/tlb-r4k.c @@ -8,6 +8,7 @@ * Carsten Langgaard, carstenl@mips.com * Copyright (C) 2002 MIPS Technologies, Inc. All rights reserved. */ +#include #include #include #include diff --git a/trunk/arch/mips/mm/tlb-r8k.c b/trunk/arch/mips/mm/tlb-r8k.c index 266a47d65eed..1bfb09198ce3 100644 --- a/trunk/arch/mips/mm/tlb-r8k.c +++ b/trunk/arch/mips/mm/tlb-r8k.c @@ -8,6 +8,7 @@ * Carsten Langgaard, carstenl@mips.com * Copyright (C) 2002 MIPS Technologies, Inc. All rights reserved. */ +#include #include #include #include diff --git a/trunk/arch/mips/mm/tlbex.c b/trunk/arch/mips/mm/tlbex.c index e1a8139fc8fb..54507be2ab5b 100644 --- a/trunk/arch/mips/mm/tlbex.c +++ b/trunk/arch/mips/mm/tlbex.c @@ -21,6 +21,7 @@ #include +#include #include #include #include diff --git a/trunk/arch/mips/momentum/jaguar_atx/dbg_io.c b/trunk/arch/mips/momentum/jaguar_atx/dbg_io.c index b85a6521f72d..d7dea0a136aa 100644 --- a/trunk/arch/mips/momentum/jaguar_atx/dbg_io.c +++ b/trunk/arch/mips/momentum/jaguar_atx/dbg_io.c @@ -1,3 +1,4 @@ +#include #if defined(CONFIG_REMOTE_DEBUG) diff --git a/trunk/arch/mips/momentum/jaguar_atx/prom.c b/trunk/arch/mips/momentum/jaguar_atx/prom.c index 3d2712929293..1cadaa92946a 100644 --- a/trunk/arch/mips/momentum/jaguar_atx/prom.c +++ b/trunk/arch/mips/momentum/jaguar_atx/prom.c @@ -16,6 +16,7 @@ * * Added changes for SMP - Manish Lachwani (lachwani@pmc-sierra.com) */ +#include #include #include #include diff --git a/trunk/arch/mips/momentum/jaguar_atx/reset.c b/trunk/arch/mips/momentum/jaguar_atx/reset.c index c73b0897dc52..ce9fb2e3d952 100644 --- a/trunk/arch/mips/momentum/jaguar_atx/reset.c +++ b/trunk/arch/mips/momentum/jaguar_atx/reset.c @@ -14,6 +14,7 @@ * Louis Hamilton, Red Hat, Inc. * hamilton@redhat.com [MIPS64 modifications] */ +#include #include #include #include diff --git a/trunk/arch/mips/momentum/jaguar_atx/setup.c b/trunk/arch/mips/momentum/jaguar_atx/setup.c index b08e6a0456c1..d0419480b097 100644 --- a/trunk/arch/mips/momentum/jaguar_atx/setup.c +++ b/trunk/arch/mips/momentum/jaguar_atx/setup.c @@ -39,6 +39,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/momentum/ocelot_3/prom.c b/trunk/arch/mips/momentum/ocelot_3/prom.c index 296d945bc248..9803daa2a792 100644 --- a/trunk/arch/mips/momentum/ocelot_3/prom.c +++ b/trunk/arch/mips/momentum/ocelot_3/prom.c @@ -21,6 +21,7 @@ * Author: Manish Lachwani, mlachwani@mvista.com * */ +#include #include #include #include diff --git a/trunk/arch/mips/momentum/ocelot_c/dbg_io.c b/trunk/arch/mips/momentum/ocelot_c/dbg_io.c index 2128684584f5..f0a6a38fcf4d 100644 --- a/trunk/arch/mips/momentum/ocelot_c/dbg_io.c +++ b/trunk/arch/mips/momentum/ocelot_c/dbg_io.c @@ -1,3 +1,4 @@ +#include #ifdef CONFIG_KGDB diff --git a/trunk/arch/mips/momentum/ocelot_c/ocelot_c_fpga.h b/trunk/arch/mips/momentum/ocelot_c/ocelot_c_fpga.h index 7228cd19e5ea..97fb77dad723 100644 --- a/trunk/arch/mips/momentum/ocelot_c/ocelot_c_fpga.h +++ b/trunk/arch/mips/momentum/ocelot_c/ocelot_c_fpga.h @@ -30,6 +30,7 @@ #ifndef __OCELOT_C_FPGA_H__ #define __OCELOT_C_FPGA_H__ +#include #ifdef CONFIG_64BIT #define OCELOT_C_CS0_ADDR (0xfffffffffc000000) diff --git a/trunk/arch/mips/momentum/ocelot_c/prom.c b/trunk/arch/mips/momentum/ocelot_c/prom.c index 4c50a147f429..e92364482c7b 100644 --- a/trunk/arch/mips/momentum/ocelot_c/prom.c +++ b/trunk/arch/mips/momentum/ocelot_c/prom.c @@ -14,6 +14,7 @@ * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/mips/momentum/ocelot_c/reset.c b/trunk/arch/mips/momentum/ocelot_c/reset.c index 3fdcb64ff1e6..9dcd154c7767 100644 --- a/trunk/arch/mips/momentum/ocelot_c/reset.c +++ b/trunk/arch/mips/momentum/ocelot_c/reset.c @@ -14,6 +14,7 @@ * Louis Hamilton, Red Hat, Inc. * hamilton@redhat.com [MIPS64 modifications] */ +#include #include #include #include diff --git a/trunk/arch/mips/momentum/ocelot_c/setup.c b/trunk/arch/mips/momentum/ocelot_c/setup.c index 6a4519936ee9..a0ee006d75cf 100644 --- a/trunk/arch/mips/momentum/ocelot_c/setup.c +++ b/trunk/arch/mips/momentum/ocelot_c/setup.c @@ -40,6 +40,7 @@ * 675 Mass Ave, Cambridge, MA 02139, USA. * */ +#include #include #include #include diff --git a/trunk/arch/mips/momentum/ocelot_g/dbg_io.c b/trunk/arch/mips/momentum/ocelot_g/dbg_io.c index 2128684584f5..f0a6a38fcf4d 100644 --- a/trunk/arch/mips/momentum/ocelot_g/dbg_io.c +++ b/trunk/arch/mips/momentum/ocelot_g/dbg_io.c @@ -1,3 +1,4 @@ +#include #ifdef CONFIG_KGDB diff --git a/trunk/arch/mips/momentum/ocelot_g/gt-irq.c b/trunk/arch/mips/momentum/ocelot_g/gt-irq.c index 047457f3b97a..8bd9b844fa9e 100644 --- a/trunk/arch/mips/momentum/ocelot_g/gt-irq.c +++ b/trunk/arch/mips/momentum/ocelot_g/gt-irq.c @@ -11,6 +11,7 @@ * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/mips/momentum/ocelot_g/prom.c b/trunk/arch/mips/momentum/ocelot_g/prom.c index 6509a9c9863c..6b4f577c2757 100644 --- a/trunk/arch/mips/momentum/ocelot_g/prom.c +++ b/trunk/arch/mips/momentum/ocelot_g/prom.c @@ -11,6 +11,7 @@ * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/mips/momentum/ocelot_g/setup.c b/trunk/arch/mips/momentum/ocelot_g/setup.c index c580b1de33bc..39da02b4e076 100644 --- a/trunk/arch/mips/momentum/ocelot_g/setup.c +++ b/trunk/arch/mips/momentum/ocelot_g/setup.c @@ -37,6 +37,7 @@ * 675 Mass Ave, Cambridge, MA 02139, USA. * */ +#include #include #include #include diff --git a/trunk/arch/mips/pci/fixup-atlas.c b/trunk/arch/mips/pci/fixup-atlas.c index 439510af3037..87920b245931 100644 --- a/trunk/arch/mips/pci/fixup-atlas.c +++ b/trunk/arch/mips/pci/fixup-atlas.c @@ -16,6 +16,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. */ +#include #include #include diff --git a/trunk/arch/mips/pci/fixup-vr4133.c b/trunk/arch/mips/pci/fixup-vr4133.c index 8e01d0c1b76b..a8a47b494b23 100644 --- a/trunk/arch/mips/pci/fixup-vr4133.c +++ b/trunk/arch/mips/pci/fixup-vr4133.c @@ -15,6 +15,7 @@ * Author: Manish Lachwani (mlachwani@mvista.com) * */ +#include #include #include diff --git a/trunk/arch/mips/pci/ops-au1000.c b/trunk/arch/mips/pci/ops-au1000.c index 0c0c1e6519f9..be1420126c42 100644 --- a/trunk/arch/mips/pci/ops-au1000.c +++ b/trunk/arch/mips/pci/ops-au1000.c @@ -28,6 +28,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/pci/pci-bcm1480.c b/trunk/arch/mips/pci/pci-bcm1480.c index f6774f54cd3c..f4ef1a35ca18 100644 --- a/trunk/arch/mips/pci/pci-bcm1480.c +++ b/trunk/arch/mips/pci/pci-bcm1480.c @@ -32,6 +32,7 @@ * * XXX: AT THIS TIME, ONLY the NATIVE PCI-X INTERFACE IS SUPPORTED. */ +#include #include #include #include diff --git a/trunk/arch/mips/pci/pci-bcm1480ht.c b/trunk/arch/mips/pci/pci-bcm1480ht.c index ba2e34b09231..a3eebe5890a7 100644 --- a/trunk/arch/mips/pci/pci-bcm1480ht.c +++ b/trunk/arch/mips/pci/pci-bcm1480ht.c @@ -31,6 +31,7 @@ * problem. * */ +#include #include #include #include diff --git a/trunk/arch/mips/pci/pci-ip32.c b/trunk/arch/mips/pci/pci-ip32.c index 17c7932cf0ae..180af89bcb1e 100644 --- a/trunk/arch/mips/pci/pci-ip32.c +++ b/trunk/arch/mips/pci/pci-ip32.c @@ -6,6 +6,7 @@ * Copyright (C) 2000, 2001 Keith M Wesolowski * Copyright (C) 2004 by Ralf Baechle (ralf@linux-mips.org) */ +#include #include #include #include diff --git a/trunk/arch/mips/pci/pci-sb1250.c b/trunk/arch/mips/pci/pci-sb1250.c index 80f5e8c4bcd4..7cca3bde59b2 100644 --- a/trunk/arch/mips/pci/pci-sb1250.c +++ b/trunk/arch/mips/pci/pci-sb1250.c @@ -30,6 +30,7 @@ * kernel mapped memory. Hopefully neither of these should be a huge * problem. */ +#include #include #include #include diff --git a/trunk/arch/mips/pci/pci.c b/trunk/arch/mips/pci/pci.c index 5ace368657ad..ba66f8c9bd4e 100644 --- a/trunk/arch/mips/pci/pci.c +++ b/trunk/arch/mips/pci/pci.c @@ -6,6 +6,7 @@ * * Copyright (C) 2003, 04 Ralf Baechle (ralf@linux-mips.org) */ +#include #include #include #include diff --git a/trunk/arch/mips/philips/pnx8550/common/int.c b/trunk/arch/mips/philips/pnx8550/common/int.c index 388a4df73040..8f18764a2359 100644 --- a/trunk/arch/mips/philips/pnx8550/common/int.c +++ b/trunk/arch/mips/philips/pnx8550/common/int.c @@ -23,6 +23,7 @@ * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. * */ +#include #include #include #include diff --git a/trunk/arch/mips/philips/pnx8550/common/setup.c b/trunk/arch/mips/philips/pnx8550/common/setup.c index 8ac81a9dc293..0e791f4f6ea3 100644 --- a/trunk/arch/mips/philips/pnx8550/common/setup.c +++ b/trunk/arch/mips/philips/pnx8550/common/setup.c @@ -17,6 +17,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/pmc-sierra/yosemite/ht.c b/trunk/arch/mips/pmc-sierra/yosemite/ht.c index 1f7c999eb7c6..fb523ebcafa8 100644 --- a/trunk/arch/mips/pmc-sierra/yosemite/ht.c +++ b/trunk/arch/mips/pmc-sierra/yosemite/ht.c @@ -23,6 +23,7 @@ * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/pmc-sierra/yosemite/irq.c b/trunk/arch/mips/pmc-sierra/yosemite/irq.c index b91d0aa3b7ed..a1f524fc4c10 100644 --- a/trunk/arch/mips/pmc-sierra/yosemite/irq.c +++ b/trunk/arch/mips/pmc-sierra/yosemite/irq.c @@ -26,6 +26,7 @@ * * Second level Interrupt handlers for the PMC-Sierra Titan/Yosemite board */ +#include #include #include #include diff --git a/trunk/arch/mips/pmc-sierra/yosemite/prom.c b/trunk/arch/mips/pmc-sierra/yosemite/prom.c index 9fe4973377c3..165275c00cbb 100644 --- a/trunk/arch/mips/pmc-sierra/yosemite/prom.c +++ b/trunk/arch/mips/pmc-sierra/yosemite/prom.c @@ -8,6 +8,7 @@ * Author: Manish Lachwani (lachwani@pmc-sierra.com) * Copyright (C) 2004 Ralf Baechle */ +#include #include #include #include diff --git a/trunk/arch/mips/sgi-ip22/ip22-eisa.c b/trunk/arch/mips/sgi-ip22/ip22-eisa.c index ce8e4a7869b0..989167b49ce9 100644 --- a/trunk/arch/mips/sgi-ip22/ip22-eisa.c +++ b/trunk/arch/mips/sgi-ip22/ip22-eisa.c @@ -19,6 +19,7 @@ * - Fix more bugs. */ +#include #include #include #include diff --git a/trunk/arch/mips/sgi-ip22/ip22-int.c b/trunk/arch/mips/sgi-ip22/ip22-int.c index aee567dc372a..18906af69691 100644 --- a/trunk/arch/mips/sgi-ip22/ip22-int.c +++ b/trunk/arch/mips/sgi-ip22/ip22-int.c @@ -9,6 +9,7 @@ * - Interrupt handling fixes * Copyright (C) 2001, 2003 Ladislav Michl (ladis@linux-mips.org) */ +#include #include #include #include diff --git a/trunk/arch/mips/sgi-ip22/ip22-setup.c b/trunk/arch/mips/sgi-ip22/ip22-setup.c index 25097ecc9baa..d7138906eb10 100644 --- a/trunk/arch/mips/sgi-ip22/ip22-setup.c +++ b/trunk/arch/mips/sgi-ip22/ip22-setup.c @@ -4,6 +4,7 @@ * Copyright (C) 1996 David S. Miller (dm@engr.sgi.com) * Copyright (C) 1997, 1998 Ralf Baechle (ralf@gnu.org) */ +#include #include #include #include diff --git a/trunk/arch/mips/sgi-ip27/ip27-init.c b/trunk/arch/mips/sgi-ip27/ip27-init.c index 9094baf31d0e..a6b490e99709 100644 --- a/trunk/arch/mips/sgi-ip27/ip27-init.c +++ b/trunk/arch/mips/sgi-ip27/ip27-init.c @@ -6,6 +6,7 @@ * Copyright (C) 2000 - 2001 by Kanoj Sarcar (kanoj@sgi.com) * Copyright (C) 2000 - 2001 by Silicon Graphics, Inc. */ +#include #include #include #include diff --git a/trunk/arch/mips/sgi-ip27/ip27-irq.c b/trunk/arch/mips/sgi-ip27/ip27-irq.c index a94e4c785805..869566c360ae 100644 --- a/trunk/arch/mips/sgi-ip27/ip27-irq.c +++ b/trunk/arch/mips/sgi-ip27/ip27-irq.c @@ -8,6 +8,7 @@ #undef DEBUG +#include #include #include #include diff --git a/trunk/arch/mips/sgi-ip27/ip27-klnuma.c b/trunk/arch/mips/sgi-ip27/ip27-klnuma.c index d777b7d1a9fe..41c3f405e00c 100644 --- a/trunk/arch/mips/sgi-ip27/ip27-klnuma.c +++ b/trunk/arch/mips/sgi-ip27/ip27-klnuma.c @@ -3,6 +3,7 @@ * Copyright 2000 - 2001 Silicon Graphics, Inc. * Copyright 2000 - 2001 Kanoj Sarcar (kanoj@sgi.com) */ +#include #include #include #include diff --git a/trunk/arch/mips/sgi-ip27/ip27-memory.c b/trunk/arch/mips/sgi-ip27/ip27-memory.c index efe6971fc800..6c00dce9f73f 100644 --- a/trunk/arch/mips/sgi-ip27/ip27-memory.c +++ b/trunk/arch/mips/sgi-ip27/ip27-memory.c @@ -10,6 +10,7 @@ * On SGI IP27 the ARC memory configuration data is completly bogus but * alternate easier to use mechanisms are available. */ +#include #include #include #include diff --git a/trunk/arch/mips/sgi-ip27/ip27-reset.c b/trunk/arch/mips/sgi-ip27/ip27-reset.c index c17076108d47..4322db57d3c1 100644 --- a/trunk/arch/mips/sgi-ip27/ip27-reset.c +++ b/trunk/arch/mips/sgi-ip27/ip27-reset.c @@ -8,6 +8,7 @@ * Copyright (C) 1997, 1998, 1999, 2000, 06 by Ralf Baechle * Copyright (C) 1999, 2000 Silicon Graphics, Inc. */ +#include #include #include #include diff --git a/trunk/arch/mips/sgi-ip32/ip32-setup.c b/trunk/arch/mips/sgi-ip32/ip32-setup.c index 240a2f981d08..acbdad06fac1 100644 --- a/trunk/arch/mips/sgi-ip32/ip32-setup.c +++ b/trunk/arch/mips/sgi-ip32/ip32-setup.c @@ -8,6 +8,7 @@ * Copyright (C) 2000 Harald Koerfgen * Copyright (C) 2002, 2003, 2005 Ilya A. Volynets */ +#include #include #include #include diff --git a/trunk/arch/mips/sibyte/bcm1480/irq.c b/trunk/arch/mips/sibyte/bcm1480/irq.c index 29d3bbb5847d..610df40cb820 100644 --- a/trunk/arch/mips/sibyte/bcm1480/irq.c +++ b/trunk/arch/mips/sibyte/bcm1480/irq.c @@ -15,6 +15,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/sibyte/bcm1480/setup.c b/trunk/arch/mips/sibyte/bcm1480/setup.c index 8236d0c48542..d90a0b87874c 100644 --- a/trunk/arch/mips/sibyte/bcm1480/setup.c +++ b/trunk/arch/mips/sibyte/bcm1480/setup.c @@ -15,6 +15,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/sibyte/bcm1480/time.c b/trunk/arch/mips/sibyte/bcm1480/time.c index 7e088f6c4a86..efaf83efd2e4 100644 --- a/trunk/arch/mips/sibyte/bcm1480/time.c +++ b/trunk/arch/mips/sibyte/bcm1480/time.c @@ -25,6 +25,7 @@ * code to do general bookkeeping (e.g. update jiffies, run * bottom halves, etc.) */ +#include #include #include #include diff --git a/trunk/arch/mips/sibyte/cfe/console.c b/trunk/arch/mips/sibyte/cfe/console.c index c6ec748175b0..7721100d0275 100644 --- a/trunk/arch/mips/sibyte/cfe/console.c +++ b/trunk/arch/mips/sibyte/cfe/console.c @@ -1,3 +1,4 @@ +#include #include #include #include diff --git a/trunk/arch/mips/sibyte/cfe/setup.c b/trunk/arch/mips/sibyte/cfe/setup.c index 6e8952da6e2a..ea308029450e 100644 --- a/trunk/arch/mips/sibyte/cfe/setup.c +++ b/trunk/arch/mips/sibyte/cfe/setup.c @@ -16,6 +16,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/sibyte/sb1250/bus_watcher.c b/trunk/arch/mips/sibyte/sb1250/bus_watcher.c index bb90649fbc48..482dee054e68 100644 --- a/trunk/arch/mips/sibyte/sb1250/bus_watcher.c +++ b/trunk/arch/mips/sibyte/sb1250/bus_watcher.c @@ -25,6 +25,7 @@ * /proc/bus_watcher if PROC_FS is on. */ +#include #include #include #include diff --git a/trunk/arch/mips/sibyte/sb1250/irq.c b/trunk/arch/mips/sibyte/sb1250/irq.c index 1d280aabcf6a..fcc61940f1ff 100644 --- a/trunk/arch/mips/sibyte/sb1250/irq.c +++ b/trunk/arch/mips/sibyte/sb1250/irq.c @@ -15,6 +15,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/sibyte/sb1250/prom.c b/trunk/arch/mips/sibyte/sb1250/prom.c index 3c33a4517bc3..742043f8d755 100644 --- a/trunk/arch/mips/sibyte/sb1250/prom.c +++ b/trunk/arch/mips/sibyte/sb1250/prom.c @@ -16,6 +16,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/sibyte/sb1250/setup.c b/trunk/arch/mips/sibyte/sb1250/setup.c index d0ee1d5b8223..fde4751c84fe 100644 --- a/trunk/arch/mips/sibyte/sb1250/setup.c +++ b/trunk/arch/mips/sibyte/sb1250/setup.c @@ -15,6 +15,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/sibyte/sb1250/time.c b/trunk/arch/mips/sibyte/sb1250/time.c index 4b669dc86ef4..1588f6debd90 100644 --- a/trunk/arch/mips/sibyte/sb1250/time.c +++ b/trunk/arch/mips/sibyte/sb1250/time.c @@ -25,6 +25,7 @@ * code to do general bookkeeping (e.g. update jiffies, run * bottom halves, etc.) */ +#include #include #include #include diff --git a/trunk/arch/mips/sibyte/swarm/setup.c b/trunk/arch/mips/sibyte/swarm/setup.c index a9a6dbc06849..f9e694988cdf 100644 --- a/trunk/arch/mips/sibyte/swarm/setup.c +++ b/trunk/arch/mips/sibyte/swarm/setup.c @@ -21,6 +21,7 @@ * Setup code for the SWARM board */ +#include #include #include #include diff --git a/trunk/arch/mips/sni/setup.c b/trunk/arch/mips/sni/setup.c index 870486d6cd75..a050bb6ae704 100644 --- a/trunk/arch/mips/sni/setup.c +++ b/trunk/arch/mips/sni/setup.c @@ -7,6 +7,7 @@ * * Copyright (C) 1996, 97, 98, 2000, 03, 04, 06 Ralf Baechle (ralf@linux-mips.org) */ +#include #include #include #include diff --git a/trunk/arch/mips/tx4927/common/tx4927_irq.c b/trunk/arch/mips/tx4927/common/tx4927_irq.c index ae9d5653a863..a42be00483e6 100644 --- a/trunk/arch/mips/tx4927/common/tx4927_irq.c +++ b/trunk/arch/mips/tx4927/common/tx4927_irq.c @@ -23,6 +23,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/tx4927/common/tx4927_setup.c b/trunk/arch/mips/tx4927/common/tx4927_setup.c index 64a1b394b252..81a5acfe8c42 100644 --- a/trunk/arch/mips/tx4927/common/tx4927_setup.c +++ b/trunk/arch/mips/tx4927/common/tx4927_setup.c @@ -24,6 +24,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c b/trunk/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c index ee943cb1328c..c67978b6dae4 100644 --- a/trunk/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c +++ b/trunk/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c @@ -111,6 +111,7 @@ SuperIO/PS2/Mouse, using INTR via ISA IRQ12 (mouse not currently supported) JP7 is not bus master -- do NOT use -- only 4 pci bus master's allowed -- SouthBridge, JP4, JP5, JP6 */ +#include #include #include #include diff --git a/trunk/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c b/trunk/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c index f0d70c476005..6dcf077f61a0 100644 --- a/trunk/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c +++ b/trunk/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c @@ -42,6 +42,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/mips/tx4938/toshiba_rbtx4938/prom.c b/trunk/arch/mips/tx4938/toshiba_rbtx4938/prom.c index e44daf30a7c1..7df8b32ba265 100644 --- a/trunk/arch/mips/tx4938/toshiba_rbtx4938/prom.c +++ b/trunk/arch/mips/tx4938/toshiba_rbtx4938/prom.c @@ -12,6 +12,7 @@ * Support for TX4938 in 2.6 - Manish Lachwani (mlachwani@mvista.com) */ +#include #include #include #include diff --git a/trunk/arch/mips/tx4938/toshiba_rbtx4938/setup.c b/trunk/arch/mips/tx4938/toshiba_rbtx4938/setup.c index 66163ba452c8..96e833cd4c14 100644 --- a/trunk/arch/mips/tx4938/toshiba_rbtx4938/setup.c +++ b/trunk/arch/mips/tx4938/toshiba_rbtx4938/setup.c @@ -11,6 +11,7 @@ * * Support for TX4938 in 2.6 - Manish Lachwani (mlachwani@mvista.com) */ +#include #include #include #include diff --git a/trunk/arch/mips/tx4938/toshiba_rbtx4938/spi_eeprom.c b/trunk/arch/mips/tx4938/toshiba_rbtx4938/spi_eeprom.c index 89596e62f909..951a208ee9b3 100644 --- a/trunk/arch/mips/tx4938/toshiba_rbtx4938/spi_eeprom.c +++ b/trunk/arch/mips/tx4938/toshiba_rbtx4938/spi_eeprom.c @@ -9,6 +9,7 @@ * * Support for TX4938 in 2.6 - Manish Lachwani (mlachwani@mvista.com) */ +#include #include #include #include diff --git a/trunk/arch/mips/vr41xx/nec-cmbvr4133/init.c b/trunk/arch/mips/vr41xx/nec-cmbvr4133/init.c index ae1af6b21c45..be590edb0b83 100644 --- a/trunk/arch/mips/vr41xx/nec-cmbvr4133/init.c +++ b/trunk/arch/mips/vr41xx/nec-cmbvr4133/init.c @@ -15,6 +15,7 @@ * Support for NEC-CMBVR4133 in 2.6 * Manish Lachwani (mlachwani@mvista.com) */ +#include #ifdef CONFIG_ROCKHOPPER #include diff --git a/trunk/arch/mips/vr41xx/nec-cmbvr4133/m1535plus.c b/trunk/arch/mips/vr41xx/nec-cmbvr4133/m1535plus.c index f45caccedc07..1f6b24ef8695 100644 --- a/trunk/arch/mips/vr41xx/nec-cmbvr4133/m1535plus.c +++ b/trunk/arch/mips/vr41xx/nec-cmbvr4133/m1535plus.c @@ -14,6 +14,7 @@ * Support for NEC-CMBVR4133 in 2.6 * Author: Manish Lachwani (mlachwani@mvista.com) */ +#include #include #include #include diff --git a/trunk/arch/mips/vr41xx/nec-cmbvr4133/setup.c b/trunk/arch/mips/vr41xx/nec-cmbvr4133/setup.c index b20b93b2b95e..53272a5c3cbe 100644 --- a/trunk/arch/mips/vr41xx/nec-cmbvr4133/setup.c +++ b/trunk/arch/mips/vr41xx/nec-cmbvr4133/setup.c @@ -14,6 +14,7 @@ * Support for CMBVR4133 board in 2.6 * Author: Manish Lachwani (mlachwani@mvista.com) */ +#include #include #include #include diff --git a/trunk/arch/parisc/kernel/entry.S b/trunk/arch/parisc/kernel/entry.S index 95c1b8ec4289..630730c32a5a 100644 --- a/trunk/arch/parisc/kernel/entry.S +++ b/trunk/arch/parisc/kernel/entry.S @@ -22,6 +22,7 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include /* we have the following possibilities to act on an interruption: diff --git a/trunk/arch/parisc/kernel/irq.c b/trunk/arch/parisc/kernel/irq.c index 52761d96f991..82fe6ba29727 100644 --- a/trunk/arch/parisc/kernel/irq.c +++ b/trunk/arch/parisc/kernel/irq.c @@ -22,6 +22,7 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include +#include #include #include #include diff --git a/trunk/arch/parisc/kernel/pacache.S b/trunk/arch/parisc/kernel/pacache.S index e81c9937d10a..f600556414d1 100644 --- a/trunk/arch/parisc/kernel/pacache.S +++ b/trunk/arch/parisc/kernel/pacache.S @@ -40,6 +40,7 @@ .level 2.0 #endif +#include #include #include diff --git a/trunk/arch/parisc/kernel/parisc_ksyms.c b/trunk/arch/parisc/kernel/parisc_ksyms.c index 6d57553d8ef8..fc107add627c 100644 --- a/trunk/arch/parisc/kernel/parisc_ksyms.c +++ b/trunk/arch/parisc/kernel/parisc_ksyms.c @@ -24,6 +24,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include #include #include diff --git a/trunk/arch/parisc/kernel/pci.c b/trunk/arch/parisc/kernel/pci.c index d3b8fc52dfc1..7d6967ee367c 100644 --- a/trunk/arch/parisc/kernel/pci.c +++ b/trunk/arch/parisc/kernel/pci.c @@ -9,6 +9,7 @@ * Copyright (C) 1999-2001 Hewlett-Packard Company * Copyright (C) 1999-2001 Grant Grundler */ +#include #include #include #include diff --git a/trunk/arch/parisc/kernel/pdc_cons.c b/trunk/arch/parisc/kernel/pdc_cons.c index ce78f412ff2e..215d78c87bc5 100644 --- a/trunk/arch/parisc/kernel/pdc_cons.c +++ b/trunk/arch/parisc/kernel/pdc_cons.c @@ -44,6 +44,7 @@ #define EARLY_BOOTUP_DEBUG +#include #include #include #include diff --git a/trunk/arch/parisc/kernel/perf_asm.S b/trunk/arch/parisc/kernel/perf_asm.S index 5e7bb90e7e08..adb3c6444910 100644 --- a/trunk/arch/parisc/kernel/perf_asm.S +++ b/trunk/arch/parisc/kernel/perf_asm.S @@ -19,6 +19,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include #ifdef CONFIG_64BIT diff --git a/trunk/arch/parisc/kernel/processor.c b/trunk/arch/parisc/kernel/processor.c index 99d7fca93104..6df9f62cecb5 100644 --- a/trunk/arch/parisc/kernel/processor.c +++ b/trunk/arch/parisc/kernel/processor.c @@ -26,6 +26,7 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ +#include #include #include #include diff --git a/trunk/arch/parisc/kernel/real2.S b/trunk/arch/parisc/kernel/real2.S index 789061f6ceb4..453d01a9f971 100644 --- a/trunk/arch/parisc/kernel/real2.S +++ b/trunk/arch/parisc/kernel/real2.S @@ -7,6 +7,7 @@ * Copyright (C) 2000 Hewlett Packard (Paul Bame bame@puffin.external.hp.com) * */ +#include #include #include diff --git a/trunk/arch/parisc/kernel/setup.c b/trunk/arch/parisc/kernel/setup.c index 3c7a3faf78ed..278f4b9f6a38 100644 --- a/trunk/arch/parisc/kernel/setup.c +++ b/trunk/arch/parisc/kernel/setup.c @@ -27,6 +27,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/parisc/kernel/smp.c b/trunk/arch/parisc/kernel/smp.c index 98e40959a564..d6ac1c60a471 100644 --- a/trunk/arch/parisc/kernel/smp.c +++ b/trunk/arch/parisc/kernel/smp.c @@ -18,6 +18,7 @@ */ #undef ENTRY_SYS_CPUS /* syscall support for iCOD-like functionality */ +#include #include #include diff --git a/trunk/arch/parisc/kernel/sys_parisc32.c b/trunk/arch/parisc/kernel/sys_parisc32.c index b74869803081..d286f68a3d3a 100644 --- a/trunk/arch/parisc/kernel/sys_parisc32.c +++ b/trunk/arch/parisc/kernel/sys_parisc32.c @@ -9,6 +9,7 @@ * environment. Based heavily on sys_ia32.c and sys_sparc32.c. */ +#include #include #include #include diff --git a/trunk/arch/parisc/kernel/time.c b/trunk/arch/parisc/kernel/time.c index 5facc9bff4ef..eb35e1c0bb53 100644 --- a/trunk/arch/parisc/kernel/time.c +++ b/trunk/arch/parisc/kernel/time.c @@ -10,6 +10,7 @@ * 1998-12-20 Updated NTP code according to technical memorandum Jan '96 * "A Kernel Model for Precision Timekeeping" by Dave Mills */ +#include #include #include #include diff --git a/trunk/arch/parisc/kernel/traps.c b/trunk/arch/parisc/kernel/traps.c index 77b28cb8aca6..348344a84bf7 100644 --- a/trunk/arch/parisc/kernel/traps.c +++ b/trunk/arch/parisc/kernel/traps.c @@ -10,6 +10,7 @@ * state in 'asm.s'. */ +#include #include #include #include diff --git a/trunk/arch/parisc/kernel/unaligned.c b/trunk/arch/parisc/kernel/unaligned.c index bd2230d6a2a6..92328fbddb3e 100644 --- a/trunk/arch/parisc/kernel/unaligned.c +++ b/trunk/arch/parisc/kernel/unaligned.c @@ -20,6 +20,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/parisc/kernel/unwind.c b/trunk/arch/parisc/kernel/unwind.c index 920bdbf8404f..cc1c1afc3187 100644 --- a/trunk/arch/parisc/kernel/unwind.c +++ b/trunk/arch/parisc/kernel/unwind.c @@ -8,6 +8,7 @@ * understand what is happening here */ +#include #include #include #include diff --git a/trunk/arch/parisc/kernel/vmlinux.lds.S b/trunk/arch/parisc/kernel/vmlinux.lds.S index 9989495a51dd..94dcc03a28ed 100644 --- a/trunk/arch/parisc/kernel/vmlinux.lds.S +++ b/trunk/arch/parisc/kernel/vmlinux.lds.S @@ -23,6 +23,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include /* needed for the processor specific cache alignment size */ #include diff --git a/trunk/arch/parisc/lib/bitops.c b/trunk/arch/parisc/lib/bitops.c index f352666b5b2f..90f400b10282 100644 --- a/trunk/arch/parisc/lib/bitops.c +++ b/trunk/arch/parisc/lib/bitops.c @@ -6,6 +6,7 @@ * Copyright 2000 Grant Grundler (grundler@cup.hp.com) */ +#include #include #include #include diff --git a/trunk/arch/parisc/lib/fixup.S b/trunk/arch/parisc/lib/fixup.S index ecce3d35401f..e0661c2978ed 100644 --- a/trunk/arch/parisc/lib/fixup.S +++ b/trunk/arch/parisc/lib/fixup.S @@ -19,6 +19,7 @@ * * Fixup routines for kernel exception handling. */ +#include #include #include #include diff --git a/trunk/arch/parisc/lib/memcpy.c b/trunk/arch/parisc/lib/memcpy.c index 5575e41f9d60..b7098035321f 100644 --- a/trunk/arch/parisc/lib/memcpy.c +++ b/trunk/arch/parisc/lib/memcpy.c @@ -53,6 +53,7 @@ */ #ifdef __KERNEL__ +#include #include #include #include diff --git a/trunk/arch/parisc/mm/init.c b/trunk/arch/parisc/mm/init.c index f2b96f1e0da7..631712562656 100644 --- a/trunk/arch/parisc/mm/init.c +++ b/trunk/arch/parisc/mm/init.c @@ -10,6 +10,7 @@ * */ +#include #include #include @@ -27,7 +28,6 @@ #include #include #include -#include DEFINE_PER_CPU(struct mmu_gather, mmu_gathers); @@ -418,10 +418,11 @@ void free_initmem(void) #ifdef CONFIG_DEBUG_RODATA void mark_rodata_ro(void) { + extern char __start_rodata, __end_rodata; /* rodata memory was already mapped with KERNEL_RO access rights by pagetable_init() and map_pages(). No need to do additional stuff here */ printk (KERN_INFO "Write protecting the kernel read-only data: %luk\n", - (unsigned long)(__end_rodata - __start_rodata) >> 10); + (unsigned long)(&__end_rodata - &__start_rodata) >> 10); } #endif diff --git a/trunk/arch/powerpc/kernel/asm-offsets.c b/trunk/arch/powerpc/kernel/asm-offsets.c index 7ee84968087b..ff2940548929 100644 --- a/trunk/arch/powerpc/kernel/asm-offsets.c +++ b/trunk/arch/powerpc/kernel/asm-offsets.c @@ -13,6 +13,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/binfmt_elf32.c b/trunk/arch/powerpc/kernel/binfmt_elf32.c index 5cb58757e1b1..8ad6b0f33651 100644 --- a/trunk/arch/powerpc/kernel/binfmt_elf32.c +++ b/trunk/arch/powerpc/kernel/binfmt_elf32.c @@ -19,6 +19,7 @@ #include #include +#include #include #include diff --git a/trunk/arch/powerpc/kernel/btext.c b/trunk/arch/powerpc/kernel/btext.c index a6920919d68e..6223d39177cb 100644 --- a/trunk/arch/powerpc/kernel/btext.c +++ b/trunk/arch/powerpc/kernel/btext.c @@ -3,6 +3,7 @@ * * Benjamin Herrenschmidt */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/cpu_setup_6xx.S b/trunk/arch/powerpc/kernel/cpu_setup_6xx.S index 8b4a4ee85eca..365381fcb27c 100644 --- a/trunk/arch/powerpc/kernel/cpu_setup_6xx.S +++ b/trunk/arch/powerpc/kernel/cpu_setup_6xx.S @@ -9,6 +9,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/cpu_setup_power4.S b/trunk/arch/powerpc/kernel/cpu_setup_power4.S index f69af2c5d7b3..1fc863261003 100644 --- a/trunk/arch/powerpc/kernel/cpu_setup_power4.S +++ b/trunk/arch/powerpc/kernel/cpu_setup_power4.S @@ -9,6 +9,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/cputable.c b/trunk/arch/powerpc/kernel/cputable.c index 272e43622fd6..abf7d42a8b07 100644 --- a/trunk/arch/powerpc/kernel/cputable.c +++ b/trunk/arch/powerpc/kernel/cputable.c @@ -10,6 +10,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/entry_32.S b/trunk/arch/powerpc/kernel/entry_32.S index c03e829fee3c..8866fd26c6b9 100644 --- a/trunk/arch/powerpc/kernel/entry_32.S +++ b/trunk/arch/powerpc/kernel/entry_32.S @@ -19,6 +19,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/entry_64.S b/trunk/arch/powerpc/kernel/entry_64.S index 54d9f5cdaab4..221062c960c9 100644 --- a/trunk/arch/powerpc/kernel/entry_64.S +++ b/trunk/arch/powerpc/kernel/entry_64.S @@ -18,6 +18,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/firmware.c b/trunk/arch/powerpc/kernel/firmware.c index 1679a70bbcad..0bfe9061720a 100644 --- a/trunk/arch/powerpc/kernel/firmware.c +++ b/trunk/arch/powerpc/kernel/firmware.c @@ -13,6 +13,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include diff --git a/trunk/arch/powerpc/kernel/fpu.S b/trunk/arch/powerpc/kernel/fpu.S index 7e2c9fe44ac1..01f71200c603 100644 --- a/trunk/arch/powerpc/kernel/fpu.S +++ b/trunk/arch/powerpc/kernel/fpu.S @@ -9,6 +9,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/head_32.S b/trunk/arch/powerpc/kernel/head_32.S index d88e182e40b3..b25b25902d15 100644 --- a/trunk/arch/powerpc/kernel/head_32.S +++ b/trunk/arch/powerpc/kernel/head_32.S @@ -22,6 +22,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/head_44x.S b/trunk/arch/powerpc/kernel/head_44x.S index accb39d49911..47c7fa148c9a 100644 --- a/trunk/arch/powerpc/kernel/head_44x.S +++ b/trunk/arch/powerpc/kernel/head_44x.S @@ -28,6 +28,7 @@ * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/head_4xx.S b/trunk/arch/powerpc/kernel/head_4xx.S index adc7f8097cd4..2590e97f5539 100644 --- a/trunk/arch/powerpc/kernel/head_4xx.S +++ b/trunk/arch/powerpc/kernel/head_4xx.S @@ -31,6 +31,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/head_64.S b/trunk/arch/powerpc/kernel/head_64.S index e16eb2a33173..8cfd040d1f50 100644 --- a/trunk/arch/powerpc/kernel/head_64.S +++ b/trunk/arch/powerpc/kernel/head_64.S @@ -21,6 +21,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/head_8xx.S b/trunk/arch/powerpc/kernel/head_8xx.S index 901be47a02a9..28941f5ce673 100644 --- a/trunk/arch/powerpc/kernel/head_8xx.S +++ b/trunk/arch/powerpc/kernel/head_8xx.S @@ -19,6 +19,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/head_fsl_booke.S b/trunk/arch/powerpc/kernel/head_fsl_booke.S index 66877bdfe0b7..dd86bbed7627 100644 --- a/trunk/arch/powerpc/kernel/head_fsl_booke.S +++ b/trunk/arch/powerpc/kernel/head_fsl_booke.S @@ -30,6 +30,7 @@ * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/idle.c b/trunk/arch/powerpc/kernel/idle.c index 4180c3998b39..d491052c8e0c 100644 --- a/trunk/arch/powerpc/kernel/idle.c +++ b/trunk/arch/powerpc/kernel/idle.c @@ -19,6 +19,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/idle_6xx.S b/trunk/arch/powerpc/kernel/idle_6xx.S index 01bcd52bbf8e..b45fa0e37212 100644 --- a/trunk/arch/powerpc/kernel/idle_6xx.S +++ b/trunk/arch/powerpc/kernel/idle_6xx.S @@ -13,6 +13,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/idle_power4.S b/trunk/arch/powerpc/kernel/idle_power4.S index 30de81da7b40..d85c7c938eed 100644 --- a/trunk/arch/powerpc/kernel/idle_power4.S +++ b/trunk/arch/powerpc/kernel/idle_power4.S @@ -7,6 +7,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/iommu.c b/trunk/arch/powerpc/kernel/iommu.c index ba0694071728..3d677ac99659 100644 --- a/trunk/arch/powerpc/kernel/iommu.c +++ b/trunk/arch/powerpc/kernel/iommu.c @@ -23,6 +23,7 @@ */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/irq.c b/trunk/arch/powerpc/kernel/irq.c index 525baab45d2d..24f6050aa4ab 100644 --- a/trunk/arch/powerpc/kernel/irq.c +++ b/trunk/arch/powerpc/kernel/irq.c @@ -38,6 +38,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/kprobes.c b/trunk/arch/powerpc/kernel/kprobes.c index 9f0898c89759..f78866367b70 100644 --- a/trunk/arch/powerpc/kernel/kprobes.c +++ b/trunk/arch/powerpc/kernel/kprobes.c @@ -26,6 +26,7 @@ * for PPC64 */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/l2cr_6xx.S b/trunk/arch/powerpc/kernel/l2cr_6xx.S index 858f28ac8a06..d7f4e982b539 100644 --- a/trunk/arch/powerpc/kernel/l2cr_6xx.S +++ b/trunk/arch/powerpc/kernel/l2cr_6xx.S @@ -40,6 +40,7 @@ Author: Terry Greeniaus (tgree@phys.ualberta.ca) Please e-mail updates to this file to me, thanks! */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/legacy_serial.c b/trunk/arch/powerpc/kernel/legacy_serial.c index 4cf0b971976b..3a9b78d03542 100644 --- a/trunk/arch/powerpc/kernel/legacy_serial.c +++ b/trunk/arch/powerpc/kernel/legacy_serial.c @@ -1,3 +1,4 @@ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/lparcfg.c b/trunk/arch/powerpc/kernel/lparcfg.c index 23f34daa044a..73edc3c16137 100644 --- a/trunk/arch/powerpc/kernel/lparcfg.c +++ b/trunk/arch/powerpc/kernel/lparcfg.c @@ -18,6 +18,7 @@ * keyword - value pairs that specify the configuration of the partition. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/misc_32.S b/trunk/arch/powerpc/kernel/misc_32.S index 58758d883361..c74774e2175d 100644 --- a/trunk/arch/powerpc/kernel/misc_32.S +++ b/trunk/arch/powerpc/kernel/misc_32.S @@ -16,6 +16,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/misc_64.S b/trunk/arch/powerpc/kernel/misc_64.S index 0c3c70d115c6..580891cb8ccb 100644 --- a/trunk/arch/powerpc/kernel/misc_64.S +++ b/trunk/arch/powerpc/kernel/misc_64.S @@ -14,6 +14,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/of_device.c b/trunk/arch/powerpc/kernel/of_device.c index 3262b73a3a68..9feeeef5a875 100644 --- a/trunk/arch/powerpc/kernel/of_device.c +++ b/trunk/arch/powerpc/kernel/of_device.c @@ -1,3 +1,4 @@ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/paca.c b/trunk/arch/powerpc/kernel/paca.c index c68741fed14b..a0bb354c1c08 100644 --- a/trunk/arch/powerpc/kernel/paca.c +++ b/trunk/arch/powerpc/kernel/paca.c @@ -7,6 +7,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/pci_32.c b/trunk/arch/powerpc/kernel/pci_32.c index 1333335c474e..8474355a1a4f 100644 --- a/trunk/arch/powerpc/kernel/pci_32.c +++ b/trunk/arch/powerpc/kernel/pci_32.c @@ -2,6 +2,7 @@ * Common pmac/prep/chrp pci routines. -- Cort */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/pci_64.c b/trunk/arch/powerpc/kernel/pci_64.c index bea8451fb57b..286aa52aae33 100644 --- a/trunk/arch/powerpc/kernel/pci_64.c +++ b/trunk/arch/powerpc/kernel/pci_64.c @@ -13,6 +13,7 @@ #undef DEBUG +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/perfmon_fsl_booke.c b/trunk/arch/powerpc/kernel/perfmon_fsl_booke.c index bdc3977a7b06..32455dfcc36b 100644 --- a/trunk/arch/powerpc/kernel/perfmon_fsl_booke.c +++ b/trunk/arch/powerpc/kernel/perfmon_fsl_booke.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/pmc.c b/trunk/arch/powerpc/kernel/pmc.c index a0a2efadeabf..e6fb194fe537 100644 --- a/trunk/arch/powerpc/kernel/pmc.c +++ b/trunk/arch/powerpc/kernel/pmc.c @@ -12,6 +12,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/ppc_ksyms.c b/trunk/arch/powerpc/kernel/ppc_ksyms.c index e3b80f71748e..4b052ae5dc34 100644 --- a/trunk/arch/powerpc/kernel/ppc_ksyms.c +++ b/trunk/arch/powerpc/kernel/ppc_ksyms.c @@ -1,3 +1,4 @@ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/proc_ppc64.c b/trunk/arch/powerpc/kernel/proc_ppc64.c index f598cb519539..2ab8f2be911e 100644 --- a/trunk/arch/powerpc/kernel/proc_ppc64.c +++ b/trunk/arch/powerpc/kernel/proc_ppc64.c @@ -16,6 +16,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/process.c b/trunk/arch/powerpc/kernel/process.c index a127a1e3c097..e4732459c485 100644 --- a/trunk/arch/powerpc/kernel/process.c +++ b/trunk/arch/powerpc/kernel/process.c @@ -14,6 +14,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/prom.c b/trunk/arch/powerpc/kernel/prom.c index 4c524cb52184..320c913435cd 100644 --- a/trunk/arch/powerpc/kernel/prom.c +++ b/trunk/arch/powerpc/kernel/prom.c @@ -16,6 +16,7 @@ #undef DEBUG #include +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/prom_init.c b/trunk/arch/powerpc/kernel/prom_init.c index 1e95a9f8cda1..8c28eb0cbdac 100644 --- a/trunk/arch/powerpc/kernel/prom_init.c +++ b/trunk/arch/powerpc/kernel/prom_init.c @@ -16,6 +16,7 @@ #undef DEBUG_PROM #include +#include #include #include #include @@ -987,7 +988,7 @@ static void reserve_mem(u64 base, u64 size) } /* - * Initialize memory allocation mechanism, parse "memory" nodes and + * Initialize memory allocation mecanism, parse "memory" nodes and * obtain that way the top of memory and RMO to setup out local allocator */ static void __init prom_init_mem(void) diff --git a/trunk/arch/powerpc/kernel/ptrace-common.h b/trunk/arch/powerpc/kernel/ptrace-common.h index 8797ae737a7b..c42a860c8d25 100644 --- a/trunk/arch/powerpc/kernel/ptrace-common.h +++ b/trunk/arch/powerpc/kernel/ptrace-common.h @@ -10,6 +10,7 @@ #ifndef _PPC64_PTRACE_COMMON_H #define _PPC64_PTRACE_COMMON_H +#include #include /* diff --git a/trunk/arch/powerpc/kernel/ptrace.c b/trunk/arch/powerpc/kernel/ptrace.c index dea75d73f983..5563e2e7d89c 100644 --- a/trunk/arch/powerpc/kernel/ptrace.c +++ b/trunk/arch/powerpc/kernel/ptrace.c @@ -15,6 +15,7 @@ * this archive for more details. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/ptrace32.c b/trunk/arch/powerpc/kernel/ptrace32.c index 9b9a230349bc..826ee3d056de 100644 --- a/trunk/arch/powerpc/kernel/ptrace32.c +++ b/trunk/arch/powerpc/kernel/ptrace32.c @@ -17,6 +17,7 @@ * this archive for more details. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/setup-common.c b/trunk/arch/powerpc/kernel/setup-common.c index c6d7b98af7d5..bd328123af75 100644 --- a/trunk/arch/powerpc/kernel/setup-common.c +++ b/trunk/arch/powerpc/kernel/setup-common.c @@ -12,6 +12,7 @@ #undef DEBUG +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/setup_32.c b/trunk/arch/powerpc/kernel/setup_32.c index ba7cd50d820d..0932a62a1c96 100644 --- a/trunk/arch/powerpc/kernel/setup_32.c +++ b/trunk/arch/powerpc/kernel/setup_32.c @@ -2,6 +2,7 @@ * Common prep/pmac/chrp boot and setup code. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/setup_64.c b/trunk/arch/powerpc/kernel/setup_64.c index ac7276c40685..175539c9afa0 100644 --- a/trunk/arch/powerpc/kernel/setup_64.c +++ b/trunk/arch/powerpc/kernel/setup_64.c @@ -12,6 +12,7 @@ #undef DEBUG +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/signal_32.c b/trunk/arch/powerpc/kernel/signal_32.c index 320353f0926f..d73b25e22fca 100644 --- a/trunk/arch/powerpc/kernel/signal_32.c +++ b/trunk/arch/powerpc/kernel/signal_32.c @@ -17,6 +17,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/signal_64.c b/trunk/arch/powerpc/kernel/signal_64.c index f72e8e823d78..6e75d7ab6d4d 100644 --- a/trunk/arch/powerpc/kernel/signal_64.c +++ b/trunk/arch/powerpc/kernel/signal_64.c @@ -12,6 +12,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/smp-tbsync.c b/trunk/arch/powerpc/kernel/smp-tbsync.c index f19e2e0e61e7..9adef3bddad4 100644 --- a/trunk/arch/powerpc/kernel/smp-tbsync.c +++ b/trunk/arch/powerpc/kernel/smp-tbsync.c @@ -5,6 +5,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/smp.c b/trunk/arch/powerpc/kernel/smp.c index 46c56cfd1b2f..c5d179d4f818 100644 --- a/trunk/arch/powerpc/kernel/smp.c +++ b/trunk/arch/powerpc/kernel/smp.c @@ -17,6 +17,7 @@ #undef DEBUG +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/swsusp_32.S b/trunk/arch/powerpc/kernel/swsusp_32.S index 7369f9a6ad25..69773cc1a85f 100644 --- a/trunk/arch/powerpc/kernel/swsusp_32.S +++ b/trunk/arch/powerpc/kernel/swsusp_32.S @@ -1,3 +1,4 @@ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/sys_ppc32.c b/trunk/arch/powerpc/kernel/sys_ppc32.c index 2e292863e982..ec274e688816 100644 --- a/trunk/arch/powerpc/kernel/sys_ppc32.c +++ b/trunk/arch/powerpc/kernel/sys_ppc32.c @@ -14,6 +14,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/sysfs.c b/trunk/arch/powerpc/kernel/sysfs.c index 010435095550..4662b580efa1 100644 --- a/trunk/arch/powerpc/kernel/sysfs.c +++ b/trunk/arch/powerpc/kernel/sysfs.c @@ -1,3 +1,4 @@ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/systbl.S b/trunk/arch/powerpc/kernel/systbl.S index 579de70e0b4d..ee75ccf1a802 100644 --- a/trunk/arch/powerpc/kernel/systbl.S +++ b/trunk/arch/powerpc/kernel/systbl.S @@ -14,6 +14,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #ifdef CONFIG_PPC64 diff --git a/trunk/arch/powerpc/kernel/tau_6xx.c b/trunk/arch/powerpc/kernel/tau_6xx.c index 368a4934f7ee..26bd8ea35a4e 100644 --- a/trunk/arch/powerpc/kernel/tau_6xx.c +++ b/trunk/arch/powerpc/kernel/tau_6xx.c @@ -11,6 +11,7 @@ * life in portables, and add a 'performance/watt' metric somewhere in /proc */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/time.c b/trunk/arch/powerpc/kernel/time.c index 774c0a3c5019..7dd5dab789a1 100644 --- a/trunk/arch/powerpc/kernel/time.c +++ b/trunk/arch/powerpc/kernel/time.c @@ -32,6 +32,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/traps.c b/trunk/arch/powerpc/kernel/traps.c index 3c668078e524..fa6bd97b6b9d 100644 --- a/trunk/arch/powerpc/kernel/traps.c +++ b/trunk/arch/powerpc/kernel/traps.c @@ -14,6 +14,7 @@ * This file handles the architecture-dependent parts of hardware exceptions */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/udbg.c b/trunk/arch/powerpc/kernel/udbg.c index 5730906b23d5..759afd5e0d8a 100644 --- a/trunk/arch/powerpc/kernel/udbg.c +++ b/trunk/arch/powerpc/kernel/udbg.c @@ -10,6 +10,7 @@ */ #include +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/udbg_16550.c b/trunk/arch/powerpc/kernel/udbg_16550.c index 0835b4841dea..5d29dcca523c 100644 --- a/trunk/arch/powerpc/kernel/udbg_16550.c +++ b/trunk/arch/powerpc/kernel/udbg_16550.c @@ -8,6 +8,7 @@ * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/vdso.c b/trunk/arch/powerpc/kernel/vdso.c index 1a7e19cdab39..bc3e15be3087 100644 --- a/trunk/arch/powerpc/kernel/vdso.c +++ b/trunk/arch/powerpc/kernel/vdso.c @@ -8,6 +8,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/vdso32/cacheflush.S b/trunk/arch/powerpc/kernel/vdso32/cacheflush.S index 9cb319992c38..09629aea3e47 100644 --- a/trunk/arch/powerpc/kernel/vdso32/cacheflush.S +++ b/trunk/arch/powerpc/kernel/vdso32/cacheflush.S @@ -9,6 +9,7 @@ * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/vdso32/datapage.S b/trunk/arch/powerpc/kernel/vdso32/datapage.S index dc21e891d2e7..4709f1d9542c 100644 --- a/trunk/arch/powerpc/kernel/vdso32/datapage.S +++ b/trunk/arch/powerpc/kernel/vdso32/datapage.S @@ -9,6 +9,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/vdso32/gettimeofday.S b/trunk/arch/powerpc/kernel/vdso32/gettimeofday.S index 05909f754307..7eebff03a041 100644 --- a/trunk/arch/powerpc/kernel/vdso32/gettimeofday.S +++ b/trunk/arch/powerpc/kernel/vdso32/gettimeofday.S @@ -10,6 +10,7 @@ * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/vdso32/sigtramp.S b/trunk/arch/powerpc/kernel/vdso32/sigtramp.S index 68d49dd71dcc..0c6a37b29dde 100644 --- a/trunk/arch/powerpc/kernel/vdso32/sigtramp.S +++ b/trunk/arch/powerpc/kernel/vdso32/sigtramp.S @@ -10,6 +10,7 @@ * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/vdso64/cacheflush.S b/trunk/arch/powerpc/kernel/vdso64/cacheflush.S index 66a36d3cc6ad..cb4ae0a5edd0 100644 --- a/trunk/arch/powerpc/kernel/vdso64/cacheflush.S +++ b/trunk/arch/powerpc/kernel/vdso64/cacheflush.S @@ -9,6 +9,7 @@ * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/vdso64/datapage.S b/trunk/arch/powerpc/kernel/vdso64/datapage.S index 79796de11737..3b2dd7d0c1eb 100644 --- a/trunk/arch/powerpc/kernel/vdso64/datapage.S +++ b/trunk/arch/powerpc/kernel/vdso64/datapage.S @@ -9,6 +9,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/vdso64/gettimeofday.S b/trunk/arch/powerpc/kernel/vdso64/gettimeofday.S index 56e76ff5498f..4ee871f1cadb 100644 --- a/trunk/arch/powerpc/kernel/vdso64/gettimeofday.S +++ b/trunk/arch/powerpc/kernel/vdso64/gettimeofday.S @@ -11,6 +11,7 @@ * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/vdso64/sigtramp.S b/trunk/arch/powerpc/kernel/vdso64/sigtramp.S index 17a83fa6dc52..7479edb101b8 100644 --- a/trunk/arch/powerpc/kernel/vdso64/sigtramp.S +++ b/trunk/arch/powerpc/kernel/vdso64/sigtramp.S @@ -10,6 +10,7 @@ * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/kernel/vector.S b/trunk/arch/powerpc/kernel/vector.S index 49ac3d6e1399..9416b4ab92ec 100644 --- a/trunk/arch/powerpc/kernel/vector.S +++ b/trunk/arch/powerpc/kernel/vector.S @@ -1,3 +1,4 @@ +#include #include #include diff --git a/trunk/arch/powerpc/kernel/vmlinux.lds.S b/trunk/arch/powerpc/kernel/vmlinux.lds.S index 02665a02130d..8b25953dc4f0 100644 --- a/trunk/arch/powerpc/kernel/vmlinux.lds.S +++ b/trunk/arch/powerpc/kernel/vmlinux.lds.S @@ -1,3 +1,4 @@ +#include #ifdef CONFIG_PPC64 #include #define PROVIDE32(x) PROVIDE(__unused__##x) diff --git a/trunk/arch/powerpc/lib/copy_32.S b/trunk/arch/powerpc/lib/copy_32.S index c657de59abca..bee51414812e 100644 --- a/trunk/arch/powerpc/lib/copy_32.S +++ b/trunk/arch/powerpc/lib/copy_32.S @@ -8,6 +8,7 @@ * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/lib/locks.c b/trunk/arch/powerpc/lib/locks.c index 077bed7dc52b..8362fa272ca5 100644 --- a/trunk/arch/powerpc/lib/locks.c +++ b/trunk/arch/powerpc/lib/locks.c @@ -12,6 +12,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/lib/sstep.c b/trunk/arch/powerpc/lib/sstep.c index 9590ba780b98..c251d9936612 100644 --- a/trunk/arch/powerpc/lib/sstep.c +++ b/trunk/arch/powerpc/lib/sstep.c @@ -10,6 +10,7 @@ */ #include #include +#include #include #include diff --git a/trunk/arch/powerpc/lib/string.S b/trunk/arch/powerpc/lib/string.S index c4c622d8e6ac..b9ca84ed8927 100644 --- a/trunk/arch/powerpc/lib/string.S +++ b/trunk/arch/powerpc/lib/string.S @@ -8,6 +8,7 @@ * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/math-emu/math.c b/trunk/arch/powerpc/math-emu/math.c index 69058b2873de..589153472761 100644 --- a/trunk/arch/powerpc/math-emu/math.c +++ b/trunk/arch/powerpc/math-emu/math.c @@ -2,6 +2,7 @@ * Copyright (C) 1999 Eddie C. Dost (ecd@atecom.com) */ +#include #include #include diff --git a/trunk/arch/powerpc/mm/44x_mmu.c b/trunk/arch/powerpc/mm/44x_mmu.c index 376829ed2211..3d79ce281b67 100644 --- a/trunk/arch/powerpc/mm/44x_mmu.c +++ b/trunk/arch/powerpc/mm/44x_mmu.c @@ -24,6 +24,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/powerpc/mm/4xx_mmu.c b/trunk/arch/powerpc/mm/4xx_mmu.c index 838e09db71d9..4d006aa1a0d1 100644 --- a/trunk/arch/powerpc/mm/4xx_mmu.c +++ b/trunk/arch/powerpc/mm/4xx_mmu.c @@ -21,6 +21,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/powerpc/mm/fault.c b/trunk/arch/powerpc/mm/fault.c index 78a0d59903ee..a0a9e1e0061e 100644 --- a/trunk/arch/powerpc/mm/fault.c +++ b/trunk/arch/powerpc/mm/fault.c @@ -15,6 +15,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/mm/fsl_booke_mmu.c b/trunk/arch/powerpc/mm/fsl_booke_mmu.c index 123da03ab118..5d581bb3aa12 100644 --- a/trunk/arch/powerpc/mm/fsl_booke_mmu.c +++ b/trunk/arch/powerpc/mm/fsl_booke_mmu.c @@ -26,6 +26,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/powerpc/mm/hash_low_32.S b/trunk/arch/powerpc/mm/hash_low_32.S index bd68df5fa78a..94255beeecd3 100644 --- a/trunk/arch/powerpc/mm/hash_low_32.S +++ b/trunk/arch/powerpc/mm/hash_low_32.S @@ -21,6 +21,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/powerpc/mm/hash_low_64.S b/trunk/arch/powerpc/mm/hash_low_64.S index 9bc0a9c2b9bc..52e914238959 100644 --- a/trunk/arch/powerpc/mm/hash_low_64.S +++ b/trunk/arch/powerpc/mm/hash_low_64.S @@ -10,6 +10,7 @@ * described in the kernel's COPYING file. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/mm/hash_utils_64.c b/trunk/arch/powerpc/mm/hash_utils_64.c index 1915661c2c81..3cc6d68f7117 100644 --- a/trunk/arch/powerpc/mm/hash_utils_64.c +++ b/trunk/arch/powerpc/mm/hash_utils_64.c @@ -21,6 +21,7 @@ #undef DEBUG #undef DEBUG_LOW +#include #include #include #include diff --git a/trunk/arch/powerpc/mm/init_32.c b/trunk/arch/powerpc/mm/init_32.c index 0e53ca8f02fb..b57fb3a2b7bb 100644 --- a/trunk/arch/powerpc/mm/init_32.c +++ b/trunk/arch/powerpc/mm/init_32.c @@ -18,6 +18,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/powerpc/mm/init_64.c b/trunk/arch/powerpc/mm/init_64.c index 3ff374697e34..d454caada265 100644 --- a/trunk/arch/powerpc/mm/init_64.c +++ b/trunk/arch/powerpc/mm/init_64.c @@ -22,6 +22,7 @@ #undef DEBUG +#include #include #include #include diff --git a/trunk/arch/powerpc/mm/lmb.c b/trunk/arch/powerpc/mm/lmb.c index 4b17a7359924..8b6f522655a6 100644 --- a/trunk/arch/powerpc/mm/lmb.c +++ b/trunk/arch/powerpc/mm/lmb.c @@ -10,6 +10,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/mm/mem.c b/trunk/arch/powerpc/mm/mem.c index eebd8b83a6b0..089d939a0b3e 100644 --- a/trunk/arch/powerpc/mm/mem.c +++ b/trunk/arch/powerpc/mm/mem.c @@ -18,6 +18,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/powerpc/mm/mmu_context_32.c b/trunk/arch/powerpc/mm/mmu_context_32.c index 792086b01000..e326e4249e1a 100644 --- a/trunk/arch/powerpc/mm/mmu_context_32.c +++ b/trunk/arch/powerpc/mm/mmu_context_32.c @@ -23,6 +23,7 @@ * */ +#include #include #include diff --git a/trunk/arch/powerpc/mm/mmu_context_64.c b/trunk/arch/powerpc/mm/mmu_context_64.c index 90a06ac02d5e..e2051efa09c5 100644 --- a/trunk/arch/powerpc/mm/mmu_context_64.c +++ b/trunk/arch/powerpc/mm/mmu_context_64.c @@ -10,6 +10,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/powerpc/mm/pgtable_32.c b/trunk/arch/powerpc/mm/pgtable_32.c index 8fcacb0239da..90628601fac7 100644 --- a/trunk/arch/powerpc/mm/pgtable_32.c +++ b/trunk/arch/powerpc/mm/pgtable_32.c @@ -20,6 +20,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/powerpc/mm/pgtable_64.c b/trunk/arch/powerpc/mm/pgtable_64.c index b1da03165496..7b278d83739e 100644 --- a/trunk/arch/powerpc/mm/pgtable_64.c +++ b/trunk/arch/powerpc/mm/pgtable_64.c @@ -22,6 +22,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/powerpc/mm/ppc_mmu_32.c b/trunk/arch/powerpc/mm/ppc_mmu_32.c index 7cceb2c44cb9..2ed43a493b31 100644 --- a/trunk/arch/powerpc/mm/ppc_mmu_32.c +++ b/trunk/arch/powerpc/mm/ppc_mmu_32.c @@ -23,6 +23,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/powerpc/mm/slb.c b/trunk/arch/powerpc/mm/slb.c index de0c8842415c..6a8bf6c6000e 100644 --- a/trunk/arch/powerpc/mm/slb.c +++ b/trunk/arch/powerpc/mm/slb.c @@ -16,6 +16,7 @@ #undef DEBUG +#include #include #include #include diff --git a/trunk/arch/powerpc/mm/slb_low.S b/trunk/arch/powerpc/mm/slb_low.S index dbc1abbde038..8548dcf8ef8b 100644 --- a/trunk/arch/powerpc/mm/slb_low.S +++ b/trunk/arch/powerpc/mm/slb_low.S @@ -14,6 +14,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/mm/stab.c b/trunk/arch/powerpc/mm/stab.c index eeeacab548e6..691320c90b78 100644 --- a/trunk/arch/powerpc/mm/stab.c +++ b/trunk/arch/powerpc/mm/stab.c @@ -12,6 +12,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/mm/tlb_32.c b/trunk/arch/powerpc/mm/tlb_32.c index 925ff70be8ba..02eb23e036d5 100644 --- a/trunk/arch/powerpc/mm/tlb_32.c +++ b/trunk/arch/powerpc/mm/tlb_32.c @@ -23,6 +23,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/powerpc/mm/tlb_64.c b/trunk/arch/powerpc/mm/tlb_64.c index f6eef78efd29..e7449b068c82 100644 --- a/trunk/arch/powerpc/mm/tlb_64.c +++ b/trunk/arch/powerpc/mm/tlb_64.c @@ -22,6 +22,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/83xx/misc.c b/trunk/arch/powerpc/platforms/83xx/misc.c index f0c6df61faa9..1455bcef4892 100644 --- a/trunk/arch/powerpc/platforms/83xx/misc.c +++ b/trunk/arch/powerpc/platforms/83xx/misc.c @@ -9,6 +9,7 @@ * option) any later version. */ +#include #include #include diff --git a/trunk/arch/powerpc/platforms/83xx/mpc834x_sys.c b/trunk/arch/powerpc/platforms/83xx/mpc834x_sys.c index 3e1c16eb4a63..7e789d2420ba 100644 --- a/trunk/arch/powerpc/platforms/83xx/mpc834x_sys.c +++ b/trunk/arch/powerpc/platforms/83xx/mpc834x_sys.c @@ -11,6 +11,7 @@ * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/83xx/pci.c b/trunk/arch/powerpc/platforms/83xx/pci.c index 3b5e563c279f..3baceb00fefa 100644 --- a/trunk/arch/powerpc/platforms/83xx/pci.c +++ b/trunk/arch/powerpc/platforms/83xx/pci.c @@ -9,6 +9,7 @@ * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/85xx/mpc8540_ads.h b/trunk/arch/powerpc/platforms/85xx/mpc8540_ads.h index c0d56d2bb5a5..f770cadb2080 100644 --- a/trunk/arch/powerpc/platforms/85xx/mpc8540_ads.h +++ b/trunk/arch/powerpc/platforms/85xx/mpc8540_ads.h @@ -17,6 +17,7 @@ #ifndef __MACH_MPC8540ADS_H__ #define __MACH_MPC8540ADS_H__ +#include #include #define BOARD_CCSRBAR ((uint)0xe0000000) diff --git a/trunk/arch/powerpc/platforms/85xx/mpc85xx_ads.c b/trunk/arch/powerpc/platforms/85xx/mpc85xx_ads.c index 06a497676c99..5eeff370f5fc 100644 --- a/trunk/arch/powerpc/platforms/85xx/mpc85xx_ads.c +++ b/trunk/arch/powerpc/platforms/85xx/mpc85xx_ads.c @@ -11,6 +11,7 @@ * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/85xx/pci.c b/trunk/arch/powerpc/platforms/85xx/pci.c index 1d51f3242ab1..48c8849c07ca 100644 --- a/trunk/arch/powerpc/platforms/85xx/pci.c +++ b/trunk/arch/powerpc/platforms/85xx/pci.c @@ -9,6 +9,7 @@ * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/cell/interrupt.c b/trunk/arch/powerpc/platforms/cell/interrupt.c index 880c8083d16f..7bff3cbc5723 100644 --- a/trunk/arch/powerpc/platforms/cell/interrupt.c +++ b/trunk/arch/powerpc/platforms/cell/interrupt.c @@ -20,6 +20,7 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/cell/pervasive.c b/trunk/arch/powerpc/platforms/cell/pervasive.c index 9f2e4ed20a57..695ac4e1617e 100644 --- a/trunk/arch/powerpc/platforms/cell/pervasive.c +++ b/trunk/arch/powerpc/platforms/cell/pervasive.c @@ -23,6 +23,7 @@ #undef DEBUG +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/cell/setup.c b/trunk/arch/powerpc/platforms/cell/setup.c index d8c2a29b3c15..00d112f92272 100644 --- a/trunk/arch/powerpc/platforms/cell/setup.c +++ b/trunk/arch/powerpc/platforms/cell/setup.c @@ -14,6 +14,7 @@ */ #undef DEBUG +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/cell/smp.c b/trunk/arch/powerpc/platforms/cell/smp.c index 46aef0640742..bdf6c5fe58c0 100644 --- a/trunk/arch/powerpc/platforms/cell/smp.c +++ b/trunk/arch/powerpc/platforms/cell/smp.c @@ -14,6 +14,7 @@ #undef DEBUG +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/cell/spufs/backing_ops.c b/trunk/arch/powerpc/platforms/cell/spufs/backing_ops.c index 2d22cd59d6fc..f1d35ddc9df3 100644 --- a/trunk/arch/powerpc/platforms/cell/spufs/backing_ops.c +++ b/trunk/arch/powerpc/platforms/cell/spufs/backing_ops.c @@ -21,6 +21,7 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/cell/spufs/hw_ops.c b/trunk/arch/powerpc/platforms/cell/spufs/hw_ops.c index c8670f519734..ede2cac46b6d 100644 --- a/trunk/arch/powerpc/platforms/cell/spufs/hw_ops.c +++ b/trunk/arch/powerpc/platforms/cell/spufs/hw_ops.c @@ -18,6 +18,7 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/cell/spufs/sched.c b/trunk/arch/powerpc/platforms/cell/spufs/sched.c index 1350294484b6..3dcc5d8d66b9 100644 --- a/trunk/arch/powerpc/platforms/cell/spufs/sched.c +++ b/trunk/arch/powerpc/platforms/cell/spufs/sched.c @@ -26,6 +26,7 @@ #undef DEBUG +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/cell/spufs/switch.c b/trunk/arch/powerpc/platforms/cell/spufs/switch.c index 9d9d82dd32ba..c7fea2cca534 100644 --- a/trunk/arch/powerpc/platforms/cell/spufs/switch.c +++ b/trunk/arch/powerpc/platforms/cell/spufs/switch.c @@ -32,6 +32,7 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/chrp/pci.c b/trunk/arch/powerpc/platforms/chrp/pci.c index 66c253498803..53515daf01b1 100644 --- a/trunk/arch/powerpc/platforms/chrp/pci.c +++ b/trunk/arch/powerpc/platforms/chrp/pci.c @@ -2,6 +2,7 @@ * CHRP pci routines. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/chrp/setup.c b/trunk/arch/powerpc/platforms/chrp/setup.c index 1f1771b212b4..18d89f38796b 100644 --- a/trunk/arch/powerpc/platforms/chrp/setup.c +++ b/trunk/arch/powerpc/platforms/chrp/setup.c @@ -8,6 +8,7 @@ * bootup setup stuff.. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/chrp/smp.c b/trunk/arch/powerpc/platforms/chrp/smp.c index c298ca1ea680..b616053bc331 100644 --- a/trunk/arch/powerpc/platforms/chrp/smp.c +++ b/trunk/arch/powerpc/platforms/chrp/smp.c @@ -8,6 +8,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/iseries/irq.c b/trunk/arch/powerpc/platforms/iseries/irq.c index f70e820e7304..33bb4aa0e1e8 100644 --- a/trunk/arch/powerpc/platforms/iseries/irq.c +++ b/trunk/arch/powerpc/platforms/iseries/irq.c @@ -23,6 +23,7 @@ * Created, December 13, 2000 by Wayne Holm * End Change Activity */ +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/iseries/lpardata.c b/trunk/arch/powerpc/platforms/iseries/lpardata.c index a7769445d6c7..438e2dba63b5 100644 --- a/trunk/arch/powerpc/platforms/iseries/lpardata.c +++ b/trunk/arch/powerpc/platforms/iseries/lpardata.c @@ -6,6 +6,7 @@ * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/iseries/setup.c b/trunk/arch/powerpc/platforms/iseries/setup.c index c877074745b2..66c77e4f8ec2 100644 --- a/trunk/arch/powerpc/platforms/iseries/setup.c +++ b/trunk/arch/powerpc/platforms/iseries/setup.c @@ -16,6 +16,7 @@ #undef DEBUG +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/iseries/smp.c b/trunk/arch/powerpc/platforms/iseries/smp.c index 2eb095edb472..6f9d407a709f 100644 --- a/trunk/arch/powerpc/platforms/iseries/smp.c +++ b/trunk/arch/powerpc/platforms/iseries/smp.c @@ -14,6 +14,7 @@ #undef DEBUG +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/maple/setup.c b/trunk/arch/powerpc/platforms/maple/setup.c index 5cf90c28b141..4e32a5417fd1 100644 --- a/trunk/arch/powerpc/platforms/maple/setup.c +++ b/trunk/arch/powerpc/platforms/maple/setup.c @@ -13,6 +13,7 @@ #define DEBUG +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/maple/time.c b/trunk/arch/powerpc/platforms/maple/time.c index 9f7579b38c72..b9a2b3d4bf33 100644 --- a/trunk/arch/powerpc/platforms/maple/time.c +++ b/trunk/arch/powerpc/platforms/maple/time.c @@ -11,6 +11,7 @@ #undef DEBUG +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/powermac/backlight.c b/trunk/arch/powerpc/platforms/powermac/backlight.c index 69f65e215a5c..c7a27eddca6d 100644 --- a/trunk/arch/powerpc/platforms/powermac/backlight.c +++ b/trunk/arch/powerpc/platforms/powermac/backlight.c @@ -7,6 +7,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/powermac/bootx_init.c b/trunk/arch/powerpc/platforms/powermac/bootx_init.c index cb257aeb91f6..eacbfd9beabc 100644 --- a/trunk/arch/powerpc/platforms/powermac/bootx_init.c +++ b/trunk/arch/powerpc/platforms/powermac/bootx_init.c @@ -9,6 +9,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/powermac/cache.S b/trunk/arch/powerpc/platforms/powermac/cache.S index 6be1a4af3359..fb977de6b704 100644 --- a/trunk/arch/powerpc/platforms/powermac/cache.S +++ b/trunk/arch/powerpc/platforms/powermac/cache.S @@ -14,6 +14,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/powermac/cpufreq_32.c b/trunk/arch/powerpc/platforms/powermac/cpufreq_32.c index 62926248bdb8..af2a8f9f1222 100644 --- a/trunk/arch/powerpc/platforms/powermac/cpufreq_32.c +++ b/trunk/arch/powerpc/platforms/powermac/cpufreq_32.c @@ -13,6 +13,7 @@ * */ +#include #include #include #include @@ -67,7 +68,7 @@ static unsigned int cur_freq; static unsigned int sleep_freq; /* - * Different models uses different mechanisms to switch the frequency + * Different models uses different mecanisms to switch the frequency */ static int (*set_speed_proc)(int low_speed); static unsigned int (*get_speed_proc)(void); @@ -267,7 +268,7 @@ static int pmu_set_cpu_speed(int low_speed) /* Make sure the decrementer won't interrupt us */ asm volatile("mtdec %0" : : "r" (0x7fffffff)); - /* Make sure any pending DEC interrupt occurring while we did + /* Make sure any pending DEC interrupt occuring while we did * the above didn't re-enable the DEC */ mb(); asm volatile("mtdec %0" : : "r" (0x7fffffff)); diff --git a/trunk/arch/powerpc/platforms/powermac/cpufreq_64.c b/trunk/arch/powerpc/platforms/powermac/cpufreq_64.c index f08a14516139..b57e465a1b71 100644 --- a/trunk/arch/powerpc/platforms/powermac/cpufreq_64.c +++ b/trunk/arch/powerpc/platforms/powermac/cpufreq_64.c @@ -10,6 +10,7 @@ * that is iMac G5 and latest single CPU desktop. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/powermac/feature.c b/trunk/arch/powerpc/platforms/powermac/feature.c index f8313bf9a9f7..85e00cb0006e 100644 --- a/trunk/arch/powerpc/platforms/powermac/feature.c +++ b/trunk/arch/powerpc/platforms/powermac/feature.c @@ -16,6 +16,7 @@ * - Split split split... * */ +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/powermac/low_i2c.c b/trunk/arch/powerpc/platforms/powermac/low_i2c.c index ceafaf52a668..c896ce83d412 100644 --- a/trunk/arch/powerpc/platforms/powermac/low_i2c.c +++ b/trunk/arch/powerpc/platforms/powermac/low_i2c.c @@ -30,6 +30,7 @@ #undef DEBUG #undef DEBUG_LOW +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/powermac/nvram.c b/trunk/arch/powerpc/platforms/powermac/nvram.c index 41fa2409482a..262f967b880a 100644 --- a/trunk/arch/powerpc/platforms/powermac/nvram.c +++ b/trunk/arch/powerpc/platforms/powermac/nvram.c @@ -8,6 +8,7 @@ * * Todo: - add support for the OF persistent properties */ +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/powermac/pfunc_base.c b/trunk/arch/powerpc/platforms/powermac/pfunc_base.c index d6eab8b3f7de..a3bd3e728fa3 100644 --- a/trunk/arch/powerpc/platforms/powermac/pfunc_base.c +++ b/trunk/arch/powerpc/platforms/powermac/pfunc_base.c @@ -1,3 +1,4 @@ +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/powermac/pfunc_core.c b/trunk/arch/powerpc/platforms/powermac/pfunc_core.c index b117adbf9571..93e7505debc5 100644 --- a/trunk/arch/powerpc/platforms/powermac/pfunc_core.c +++ b/trunk/arch/powerpc/platforms/powermac/pfunc_core.c @@ -5,6 +5,7 @@ * FIXME: LOCKING !!! */ +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/powermac/pic.c b/trunk/arch/powerpc/platforms/powermac/pic.c index 532bce57c0dc..9f6189af6dd6 100644 --- a/trunk/arch/powerpc/platforms/powermac/pic.c +++ b/trunk/arch/powerpc/platforms/powermac/pic.c @@ -15,6 +15,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/powermac/setup.c b/trunk/arch/powerpc/platforms/powermac/setup.c index 8654b5f07836..89c5775f83be 100644 --- a/trunk/arch/powerpc/platforms/powermac/setup.c +++ b/trunk/arch/powerpc/platforms/powermac/setup.c @@ -23,6 +23,7 @@ * bootup setup stuff.. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/powermac/sleep.S b/trunk/arch/powerpc/platforms/powermac/sleep.S index 1174ca128efa..22b113d19b24 100644 --- a/trunk/arch/powerpc/platforms/powermac/sleep.S +++ b/trunk/arch/powerpc/platforms/powermac/sleep.S @@ -10,6 +10,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/powermac/smp.c b/trunk/arch/powerpc/platforms/powermac/smp.c index 63affcb24219..1065d87fc279 100644 --- a/trunk/arch/powerpc/platforms/powermac/smp.c +++ b/trunk/arch/powerpc/platforms/powermac/smp.c @@ -21,6 +21,7 @@ * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/powermac/time.c b/trunk/arch/powerpc/platforms/powermac/time.c index a4173906e945..890758aa9667 100644 --- a/trunk/arch/powerpc/platforms/powermac/time.c +++ b/trunk/arch/powerpc/platforms/powermac/time.c @@ -9,6 +9,7 @@ * Copyright (C) 2003-2005 Benjamin Herrenschmidt. * */ +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/powermac/udbg_adb.c b/trunk/arch/powerpc/platforms/powermac/udbg_adb.c index 6124e59e1038..06c8265c2baf 100644 --- a/trunk/arch/powerpc/platforms/powermac/udbg_adb.c +++ b/trunk/arch/powerpc/platforms/powermac/udbg_adb.c @@ -1,3 +1,4 @@ +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/powermac/udbg_scc.c b/trunk/arch/powerpc/platforms/powermac/udbg_scc.c index 37e5b1eff911..b4fa9f03b461 100644 --- a/trunk/arch/powerpc/platforms/powermac/udbg_scc.c +++ b/trunk/arch/powerpc/platforms/powermac/udbg_scc.c @@ -8,6 +8,7 @@ * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/pseries/eeh_driver.c b/trunk/arch/powerpc/platforms/pseries/eeh_driver.c index aaad2c0afcbf..0ec9a5445b95 100644 --- a/trunk/arch/powerpc/platforms/pseries/eeh_driver.c +++ b/trunk/arch/powerpc/platforms/pseries/eeh_driver.c @@ -175,7 +175,7 @@ static void eeh_report_failure(struct pci_dev *dev, void *userdata) * * pSeries systems will isolate a PCI slot if the PCI-Host * bridge detects address or data parity errors, DMA's - * occurring to wild addresses (which usually happen due to + * occuring to wild addresses (which usually happen due to * bugs in device drivers or in PCI adapter firmware). * Slot isolations also occur if #SERR, #PERR or other misc * PCI-related errors are detected. diff --git a/trunk/arch/powerpc/platforms/pseries/iommu.c b/trunk/arch/powerpc/platforms/pseries/iommu.c index d67af2c65754..8cfb5706790e 100644 --- a/trunk/arch/powerpc/platforms/pseries/iommu.c +++ b/trunk/arch/powerpc/platforms/pseries/iommu.c @@ -24,6 +24,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/pseries/lpar.c b/trunk/arch/powerpc/platforms/pseries/lpar.c index 3aeb40699042..27480705996f 100644 --- a/trunk/arch/powerpc/platforms/pseries/lpar.c +++ b/trunk/arch/powerpc/platforms/pseries/lpar.c @@ -21,6 +21,7 @@ #undef DEBUG_LOW +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/pseries/setup.c b/trunk/arch/powerpc/platforms/pseries/setup.c index 999509d28af8..b3197ff156c6 100644 --- a/trunk/arch/powerpc/platforms/pseries/setup.c +++ b/trunk/arch/powerpc/platforms/pseries/setup.c @@ -18,6 +18,7 @@ #undef DEBUG +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/pseries/smp.c b/trunk/arch/powerpc/platforms/pseries/smp.c index 4ad144df49c2..3cf78a6cd27c 100644 --- a/trunk/arch/powerpc/platforms/pseries/smp.c +++ b/trunk/arch/powerpc/platforms/pseries/smp.c @@ -14,6 +14,7 @@ #undef DEBUG +#include #include #include #include diff --git a/trunk/arch/powerpc/platforms/pseries/xics.c b/trunk/arch/powerpc/platforms/pseries/xics.c index 4d935d0817f2..19c03dd43000 100644 --- a/trunk/arch/powerpc/platforms/pseries/xics.c +++ b/trunk/arch/powerpc/platforms/pseries/xics.c @@ -8,6 +8,7 @@ * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/sysdev/dart_iommu.c b/trunk/arch/powerpc/sysdev/dart_iommu.c index e32fadde1f77..7c7f34ce4986 100644 --- a/trunk/arch/powerpc/sysdev/dart_iommu.c +++ b/trunk/arch/powerpc/sysdev/dart_iommu.c @@ -27,6 +27,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include #include #include diff --git a/trunk/arch/powerpc/sysdev/fsl_soc.c b/trunk/arch/powerpc/sysdev/fsl_soc.c index e983972132d8..71a3275935ec 100644 --- a/trunk/arch/powerpc/sysdev/fsl_soc.c +++ b/trunk/arch/powerpc/sysdev/fsl_soc.c @@ -9,6 +9,7 @@ * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/powerpc/sysdev/mpic.c b/trunk/arch/powerpc/sysdev/mpic.c index 63ff89575cbb..28df9c827ca6 100644 --- a/trunk/arch/powerpc/sysdev/mpic.c +++ b/trunk/arch/powerpc/sysdev/mpic.c @@ -17,6 +17,7 @@ #undef DEBUG_IRQ #undef DEBUG_LOW +#include #include #include #include diff --git a/trunk/arch/powerpc/xmon/xmon.c b/trunk/arch/powerpc/xmon/xmon.c index 179b10ced8c7..0741df8c41b7 100644 --- a/trunk/arch/powerpc/xmon/xmon.c +++ b/trunk/arch/powerpc/xmon/xmon.c @@ -8,6 +8,7 @@ * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/ppc/4xx_io/serial_sicc.c b/trunk/arch/ppc/4xx_io/serial_sicc.c index b81a367dc278..1e113d0f59b8 100644 --- a/trunk/arch/ppc/4xx_io/serial_sicc.c +++ b/trunk/arch/ppc/4xx_io/serial_sicc.c @@ -28,6 +28,7 @@ * is compatible with normal ttyS* devices. */ +#include #include #include #include diff --git a/trunk/arch/ppc/8260_io/fcc_enet.c b/trunk/arch/ppc/8260_io/fcc_enet.c index cd5f3faa4b20..4edeede9ccfd 100644 --- a/trunk/arch/ppc/8260_io/fcc_enet.c +++ b/trunk/arch/ppc/8260_io/fcc_enet.c @@ -21,6 +21,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/ppc/8xx_io/cs4218.h b/trunk/arch/ppc/8xx_io/cs4218.h index e5f943045afa..f1c7392255f8 100644 --- a/trunk/arch/ppc/8xx_io/cs4218.h +++ b/trunk/arch/ppc/8xx_io/cs4218.h @@ -13,6 +13,7 @@ #define _cs4218_h_ #include +#include #define SND_NDEVS 256 /* Number of supported devices */ #define SND_DEV_CTL 0 /* Control port /dev/mixer */ diff --git a/trunk/arch/ppc/8xx_io/cs4218_tdm.c b/trunk/arch/ppc/8xx_io/cs4218_tdm.c index f5f300fc213d..a892356d5c3b 100644 --- a/trunk/arch/ppc/8xx_io/cs4218_tdm.c +++ b/trunk/arch/ppc/8xx_io/cs4218_tdm.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/ppc/8xx_io/enet.c b/trunk/arch/ppc/8xx_io/enet.c index a695375c3e4c..ece6a9fbe09b 100644 --- a/trunk/arch/ppc/8xx_io/enet.c +++ b/trunk/arch/ppc/8xx_io/enet.c @@ -22,6 +22,7 @@ * small packets. * */ +#include #include #include #include diff --git a/trunk/arch/ppc/8xx_io/fec.c b/trunk/arch/ppc/8xx_io/fec.c index 8b6295bbb564..62f68d6181c6 100644 --- a/trunk/arch/ppc/8xx_io/fec.c +++ b/trunk/arch/ppc/8xx_io/fec.c @@ -28,6 +28,7 @@ * Thomas Lange, thomas@corelatus.com */ +#include #include #include #include diff --git a/trunk/arch/ppc/8xx_io/micropatch.c b/trunk/arch/ppc/8xx_io/micropatch.c index cfad46ba17e3..312af0776c31 100644 --- a/trunk/arch/ppc/8xx_io/micropatch.c +++ b/trunk/arch/ppc/8xx_io/micropatch.c @@ -4,6 +4,7 @@ * also relocates SMC2, but this would require additional changes * to uart.c, so I am holding off on that for a moment. */ +#include #include #include #include diff --git a/trunk/arch/ppc/amiga/amiints.c b/trunk/arch/ppc/amiga/amiints.c index 265fcd3c6ab2..b2bba052ab93 100644 --- a/trunk/arch/ppc/amiga/amiints.c +++ b/trunk/arch/ppc/amiga/amiints.c @@ -35,6 +35,7 @@ * /Jes */ +#include #include #include #include diff --git a/trunk/arch/ppc/amiga/config.c b/trunk/arch/ppc/amiga/config.c index bc50ed11957d..bbe47c9bd707 100644 --- a/trunk/arch/ppc/amiga/config.c +++ b/trunk/arch/ppc/amiga/config.c @@ -12,6 +12,7 @@ * Miscellaneous Amiga stuff */ +#include #include #include #include diff --git a/trunk/arch/ppc/boot/common/crt0.S b/trunk/arch/ppc/boot/common/crt0.S index 8f0ef04b8de5..4d31b824bbd1 100644 --- a/trunk/arch/ppc/boot/common/crt0.S +++ b/trunk/arch/ppc/boot/common/crt0.S @@ -18,6 +18,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include .text diff --git a/trunk/arch/ppc/boot/common/misc-common.c b/trunk/arch/ppc/boot/common/misc-common.c index 8e1fccd96fc0..073830a8559a 100644 --- a/trunk/arch/ppc/boot/common/misc-common.c +++ b/trunk/arch/ppc/boot/common/misc-common.c @@ -13,6 +13,7 @@ */ #include /* for va_ bits */ +#include #include #include #include "nonstdio.h" diff --git a/trunk/arch/ppc/boot/common/ns16550.c b/trunk/arch/ppc/boot/common/ns16550.c index fc5b72041948..4f00c93ac870 100644 --- a/trunk/arch/ppc/boot/common/ns16550.c +++ b/trunk/arch/ppc/boot/common/ns16550.c @@ -2,6 +2,7 @@ * COM1 NS16550 support */ +#include #include #include #include diff --git a/trunk/arch/ppc/boot/simple/embed_config.c b/trunk/arch/ppc/boot/simple/embed_config.c index 840bff2a45fb..3a51b1062940 100644 --- a/trunk/arch/ppc/boot/simple/embed_config.c +++ b/trunk/arch/ppc/boot/simple/embed_config.c @@ -8,6 +8,7 @@ */ #include +#include #include #include #ifdef CONFIG_8xx diff --git a/trunk/arch/ppc/boot/simple/head.S b/trunk/arch/ppc/boot/simple/head.S index 1b4d7b1d4ec1..160da1006ff8 100644 --- a/trunk/arch/ppc/boot/simple/head.S +++ b/trunk/arch/ppc/boot/simple/head.S @@ -11,6 +11,7 @@ * or implied. */ +#include #include #include #include diff --git a/trunk/arch/ppc/boot/simple/m8xx_tty.c b/trunk/arch/ppc/boot/simple/m8xx_tty.c index cacc40fdbcfa..1d2778e248c6 100644 --- a/trunk/arch/ppc/boot/simple/m8xx_tty.c +++ b/trunk/arch/ppc/boot/simple/m8xx_tty.c @@ -8,6 +8,7 @@ * use COM1 instead of SMC1 as the console port. This kinda sucks * for the rest of the kernel, so here we force the use of SMC1 again. */ +#include #include #include #include diff --git a/trunk/arch/ppc/boot/simple/misc-chestnut.c b/trunk/arch/ppc/boot/simple/misc-chestnut.c index 14a4b56d4f84..b94e142ad892 100644 --- a/trunk/arch/ppc/boot/simple/misc-chestnut.c +++ b/trunk/arch/ppc/boot/simple/misc-chestnut.c @@ -9,6 +9,7 @@ * or implied. */ +#include #include #include #include diff --git a/trunk/arch/ppc/boot/simple/misc-embedded.c b/trunk/arch/ppc/boot/simple/misc-embedded.c index 10219eeca054..3865f3f8dcd1 100644 --- a/trunk/arch/ppc/boot/simple/misc-embedded.c +++ b/trunk/arch/ppc/boot/simple/misc-embedded.c @@ -6,6 +6,7 @@ * Currently maintained by: Tom Rini */ +#include #include #include #include diff --git a/trunk/arch/ppc/boot/simple/misc-ev64260.c b/trunk/arch/ppc/boot/simple/misc-ev64260.c index 0b3978632aca..2678c224af22 100644 --- a/trunk/arch/ppc/boot/simple/misc-ev64260.c +++ b/trunk/arch/ppc/boot/simple/misc-ev64260.c @@ -10,6 +10,7 @@ * or implied. */ +#include #include #include #include diff --git a/trunk/arch/ppc/boot/simple/misc-ev64360.c b/trunk/arch/ppc/boot/simple/misc-ev64360.c index 96eaebb78df5..a212b5b988cb 100644 --- a/trunk/arch/ppc/boot/simple/misc-ev64360.c +++ b/trunk/arch/ppc/boot/simple/misc-ev64360.c @@ -19,6 +19,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include #include #include #include diff --git a/trunk/arch/ppc/boot/simple/misc-katana.c b/trunk/arch/ppc/boot/simple/misc-katana.c index 79a1bbcbc6c5..d97f2ee6f04e 100644 --- a/trunk/arch/ppc/boot/simple/misc-katana.c +++ b/trunk/arch/ppc/boot/simple/misc-katana.c @@ -9,6 +9,7 @@ * or implied. */ +#include #include #include #include diff --git a/trunk/arch/ppc/boot/simple/misc-mv64x60.c b/trunk/arch/ppc/boot/simple/misc-mv64x60.c index 28b3108083ed..71ff20fd494a 100644 --- a/trunk/arch/ppc/boot/simple/misc-mv64x60.c +++ b/trunk/arch/ppc/boot/simple/misc-mv64x60.c @@ -9,6 +9,7 @@ * or implied. */ +#include #include #include #include diff --git a/trunk/arch/ppc/boot/simple/misc-prep.c b/trunk/arch/ppc/boot/simple/misc-prep.c index 0086e1cfb48c..63def9d13d70 100644 --- a/trunk/arch/ppc/boot/simple/misc-prep.c +++ b/trunk/arch/ppc/boot/simple/misc-prep.c @@ -4,6 +4,7 @@ * In the past: Gary Thomas, Cort Dougan */ +#include #include #include #include diff --git a/trunk/arch/ppc/boot/simple/misc-spruce.c b/trunk/arch/ppc/boot/simple/misc-spruce.c index 5b3a6c6f113b..0cad2f557a1e 100644 --- a/trunk/arch/ppc/boot/simple/misc-spruce.c +++ b/trunk/arch/ppc/boot/simple/misc-spruce.c @@ -13,6 +13,7 @@ */ #include +#include #include #include diff --git a/trunk/arch/ppc/boot/simple/misc.c b/trunk/arch/ppc/boot/simple/misc.c index a5df08963695..3d78571ad945 100644 --- a/trunk/arch/ppc/boot/simple/misc.c +++ b/trunk/arch/ppc/boot/simple/misc.c @@ -15,6 +15,7 @@ */ #include +#include #include #include diff --git a/trunk/arch/ppc/boot/simple/mpc52xx_tty.c b/trunk/arch/ppc/boot/simple/mpc52xx_tty.c index 7b5924cc3c02..1964493cf3bd 100644 --- a/trunk/arch/ppc/boot/simple/mpc52xx_tty.c +++ b/trunk/arch/ppc/boot/simple/mpc52xx_tty.c @@ -9,6 +9,7 @@ * "as is" without any warranty of any kind, whether express or implied. */ +#include #include #include #include diff --git a/trunk/arch/ppc/boot/simple/mv64x60_tty.c b/trunk/arch/ppc/boot/simple/mv64x60_tty.c index 781e040a97d1..0c52f5c784a2 100644 --- a/trunk/arch/ppc/boot/simple/mv64x60_tty.c +++ b/trunk/arch/ppc/boot/simple/mv64x60_tty.c @@ -12,6 +12,7 @@ /* This code assumes that the data cache has been disabled (L1, L2, L3). */ +#include #include #include #include diff --git a/trunk/arch/ppc/boot/simple/openbios.c b/trunk/arch/ppc/boot/simple/openbios.c index 6ff2701598f2..3f2ed53f793a 100644 --- a/trunk/arch/ppc/boot/simple/openbios.c +++ b/trunk/arch/ppc/boot/simple/openbios.c @@ -12,6 +12,7 @@ */ #include +#include #include #include #include diff --git a/trunk/arch/ppc/boot/simple/pibs.c b/trunk/arch/ppc/boot/simple/pibs.c index f39d01e0619d..67222d57c345 100644 --- a/trunk/arch/ppc/boot/simple/pibs.c +++ b/trunk/arch/ppc/boot/simple/pibs.c @@ -6,6 +6,7 @@ */ #include +#include #include #include #include diff --git a/trunk/arch/ppc/boot/simple/relocate.S b/trunk/arch/ppc/boot/simple/relocate.S index 0c021556d78e..2533113c1cc5 100644 --- a/trunk/arch/ppc/boot/simple/relocate.S +++ b/trunk/arch/ppc/boot/simple/relocate.S @@ -13,6 +13,7 @@ * or implied. */ +#include #include #include diff --git a/trunk/arch/ppc/kernel/asm-offsets.c b/trunk/arch/ppc/kernel/asm-offsets.c index 1f91eca2f3d7..2f5c5e157617 100644 --- a/trunk/arch/ppc/kernel/asm-offsets.c +++ b/trunk/arch/ppc/kernel/asm-offsets.c @@ -8,6 +8,7 @@ * #defines from the assembly-language output. */ +#include #include #include #include diff --git a/trunk/arch/ppc/kernel/cpu_setup_power4.S b/trunk/arch/ppc/kernel/cpu_setup_power4.S index 6a674e834eeb..d7bfd60e21fc 100644 --- a/trunk/arch/ppc/kernel/cpu_setup_power4.S +++ b/trunk/arch/ppc/kernel/cpu_setup_power4.S @@ -9,6 +9,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/ppc/kernel/dma-mapping.c b/trunk/arch/ppc/kernel/dma-mapping.c index 10fec7363962..61465ec88bc7 100644 --- a/trunk/arch/ppc/kernel/dma-mapping.c +++ b/trunk/arch/ppc/kernel/dma-mapping.c @@ -22,6 +22,7 @@ * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/arch/ppc/kernel/entry.S b/trunk/arch/ppc/kernel/entry.S index a9d455369dc6..1adc9145516f 100644 --- a/trunk/arch/ppc/kernel/entry.S +++ b/trunk/arch/ppc/kernel/entry.S @@ -19,6 +19,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/ppc/kernel/head.S b/trunk/arch/ppc/kernel/head.S index 100052aaea9a..01303efeddad 100644 --- a/trunk/arch/ppc/kernel/head.S +++ b/trunk/arch/ppc/kernel/head.S @@ -22,6 +22,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/ppc/kernel/head_44x.S b/trunk/arch/ppc/kernel/head_44x.S index 7e44de5a26db..0d8b88219d38 100644 --- a/trunk/arch/ppc/kernel/head_44x.S +++ b/trunk/arch/ppc/kernel/head_44x.S @@ -28,6 +28,7 @@ * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/ppc/kernel/head_4xx.S b/trunk/arch/ppc/kernel/head_4xx.S index 51da157a629e..10c261c67021 100644 --- a/trunk/arch/ppc/kernel/head_4xx.S +++ b/trunk/arch/ppc/kernel/head_4xx.S @@ -31,6 +31,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/ppc/kernel/head_8xx.S b/trunk/arch/ppc/kernel/head_8xx.S index 944c35c24278..7a2f20583be4 100644 --- a/trunk/arch/ppc/kernel/head_8xx.S +++ b/trunk/arch/ppc/kernel/head_8xx.S @@ -19,6 +19,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/ppc/kernel/head_fsl_booke.S b/trunk/arch/ppc/kernel/head_fsl_booke.S index 66877bdfe0b7..dd86bbed7627 100644 --- a/trunk/arch/ppc/kernel/head_fsl_booke.S +++ b/trunk/arch/ppc/kernel/head_fsl_booke.S @@ -30,6 +30,7 @@ * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/ppc/kernel/misc.S b/trunk/arch/ppc/kernel/misc.S index 2fa0075f2b5f..5a936566fd61 100644 --- a/trunk/arch/ppc/kernel/misc.S +++ b/trunk/arch/ppc/kernel/misc.S @@ -12,6 +12,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/ppc/kernel/pci.c b/trunk/arch/ppc/kernel/pci.c index 63808e01cb0b..242bb052be67 100644 --- a/trunk/arch/ppc/kernel/pci.c +++ b/trunk/arch/ppc/kernel/pci.c @@ -2,6 +2,7 @@ * Common prep/chrp pci routines. -- Cort */ +#include #include #include #include diff --git a/trunk/arch/ppc/kernel/ppc-stub.c b/trunk/arch/ppc/kernel/ppc-stub.c index 5f9ee7bb67ec..d61889c24046 100644 --- a/trunk/arch/ppc/kernel/ppc-stub.c +++ b/trunk/arch/ppc/kernel/ppc-stub.c @@ -99,6 +99,7 @@ * ****************************************************************************/ +#include #include #include #include diff --git a/trunk/arch/ppc/kernel/ppc_htab.c b/trunk/arch/ppc/kernel/ppc_htab.c index bd129d3c2cc1..75c645043746 100644 --- a/trunk/arch/ppc/kernel/ppc_htab.c +++ b/trunk/arch/ppc/kernel/ppc_htab.c @@ -10,6 +10,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/ppc/kernel/ppc_ksyms.c b/trunk/arch/ppc/kernel/ppc_ksyms.c index 50c1b4739ca7..b250b1b539b6 100644 --- a/trunk/arch/ppc/kernel/ppc_ksyms.c +++ b/trunk/arch/ppc/kernel/ppc_ksyms.c @@ -1,3 +1,4 @@ +#include #include #include #include diff --git a/trunk/arch/ppc/kernel/setup.c b/trunk/arch/ppc/kernel/setup.c index faf2940300b0..4b4607d89bfa 100644 --- a/trunk/arch/ppc/kernel/setup.c +++ b/trunk/arch/ppc/kernel/setup.c @@ -2,6 +2,7 @@ * Common prep boot and setup code. */ +#include #include #include #include diff --git a/trunk/arch/ppc/kernel/smp-tbsync.c b/trunk/arch/ppc/kernel/smp-tbsync.c index 1576758debaf..6a5694fcc711 100644 --- a/trunk/arch/ppc/kernel/smp-tbsync.c +++ b/trunk/arch/ppc/kernel/smp-tbsync.c @@ -5,6 +5,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/ppc/kernel/smp.c b/trunk/arch/ppc/kernel/smp.c index ca57e896a36c..f77795a64dae 100644 --- a/trunk/arch/ppc/kernel/smp.c +++ b/trunk/arch/ppc/kernel/smp.c @@ -8,6 +8,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/ppc/kernel/time.c b/trunk/arch/ppc/kernel/time.c index 6ab8cc7226ab..53ea723af60a 100644 --- a/trunk/arch/ppc/kernel/time.c +++ b/trunk/arch/ppc/kernel/time.c @@ -42,6 +42,7 @@ * "A Kernel Model for Precision Timekeeping" by Dave Mills */ +#include #include #include #include diff --git a/trunk/arch/ppc/kernel/traps.c b/trunk/arch/ppc/kernel/traps.c index d7a433049b48..1c0d68026abd 100644 --- a/trunk/arch/ppc/kernel/traps.c +++ b/trunk/arch/ppc/kernel/traps.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/ppc/lib/locks.c b/trunk/arch/ppc/lib/locks.c index ea4aee6b20e6..c450dc4b766e 100644 --- a/trunk/arch/ppc/lib/locks.c +++ b/trunk/arch/ppc/lib/locks.c @@ -4,6 +4,7 @@ * Written by Cort Dougan (cort@cs.nmt.edu) */ +#include #include #include #include diff --git a/trunk/arch/ppc/lib/string.S b/trunk/arch/ppc/lib/string.S index 84ed33ab4c2d..2e258c49e8be 100644 --- a/trunk/arch/ppc/lib/string.S +++ b/trunk/arch/ppc/lib/string.S @@ -8,6 +8,7 @@ * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/ppc/mm/44x_mmu.c b/trunk/arch/ppc/mm/44x_mmu.c index 0a0a0487b334..e0152a9b26e6 100644 --- a/trunk/arch/ppc/mm/44x_mmu.c +++ b/trunk/arch/ppc/mm/44x_mmu.c @@ -24,6 +24,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/ppc/mm/4xx_mmu.c b/trunk/arch/ppc/mm/4xx_mmu.c index 838e09db71d9..4d006aa1a0d1 100644 --- a/trunk/arch/ppc/mm/4xx_mmu.c +++ b/trunk/arch/ppc/mm/4xx_mmu.c @@ -21,6 +21,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/ppc/mm/fault.c b/trunk/arch/ppc/mm/fault.c index 5cdfb71fcb07..8e08ca32531a 100644 --- a/trunk/arch/ppc/mm/fault.c +++ b/trunk/arch/ppc/mm/fault.c @@ -13,6 +13,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/ppc/mm/fsl_booke_mmu.c b/trunk/arch/ppc/mm/fsl_booke_mmu.c index 123da03ab118..5d581bb3aa12 100644 --- a/trunk/arch/ppc/mm/fsl_booke_mmu.c +++ b/trunk/arch/ppc/mm/fsl_booke_mmu.c @@ -26,6 +26,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/ppc/mm/hashtable.S b/trunk/arch/ppc/mm/hashtable.S index e756942e65c4..31d0a924317c 100644 --- a/trunk/arch/ppc/mm/hashtable.S +++ b/trunk/arch/ppc/mm/hashtable.S @@ -21,6 +21,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/ppc/mm/init.c b/trunk/arch/ppc/mm/init.c index 523392d460fa..c9bd184a295a 100644 --- a/trunk/arch/ppc/mm/init.c +++ b/trunk/arch/ppc/mm/init.c @@ -18,6 +18,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/ppc/mm/mem_pieces.c b/trunk/arch/ppc/mm/mem_pieces.c index 6030a0ddfbb4..3d639052017e 100644 --- a/trunk/arch/ppc/mm/mem_pieces.c +++ b/trunk/arch/ppc/mm/mem_pieces.c @@ -14,6 +14,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/ppc/mm/mmu_context.c b/trunk/arch/ppc/mm/mmu_context.c index 85afa7f8aa78..8784f3715032 100644 --- a/trunk/arch/ppc/mm/mmu_context.c +++ b/trunk/arch/ppc/mm/mmu_context.c @@ -23,6 +23,7 @@ * */ +#include #include #include diff --git a/trunk/arch/ppc/mm/pgtable.c b/trunk/arch/ppc/mm/pgtable.c index 354a9408f024..706bca8eb144 100644 --- a/trunk/arch/ppc/mm/pgtable.c +++ b/trunk/arch/ppc/mm/pgtable.c @@ -20,6 +20,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/ppc/mm/ppc_mmu.c b/trunk/arch/ppc/mm/ppc_mmu.c index 973f1e6afa53..25bb6f3347c1 100644 --- a/trunk/arch/ppc/mm/ppc_mmu.c +++ b/trunk/arch/ppc/mm/ppc_mmu.c @@ -23,6 +23,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/ppc/mm/tlb.c b/trunk/arch/ppc/mm/tlb.c index fa29740a28f5..606b023196a2 100644 --- a/trunk/arch/ppc/mm/tlb.c +++ b/trunk/arch/ppc/mm/tlb.c @@ -23,6 +23,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/4xx/bamboo.c b/trunk/arch/ppc/platforms/4xx/bamboo.c index 349660b84a02..b940cfd646c2 100644 --- a/trunk/arch/ppc/platforms/4xx/bamboo.c +++ b/trunk/arch/ppc/platforms/4xx/bamboo.c @@ -10,6 +10,7 @@ * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/4xx/bamboo.h b/trunk/arch/ppc/platforms/4xx/bamboo.h index dcd3d09a0a71..31c0dd6a26cb 100644 --- a/trunk/arch/ppc/platforms/4xx/bamboo.h +++ b/trunk/arch/ppc/platforms/4xx/bamboo.h @@ -15,6 +15,7 @@ #ifndef __ASM_BAMBOO_H__ #define __ASM_BAMBOO_H__ +#include #include /* F/W TLB mapping used in bootloader glue to reset EMAC */ diff --git a/trunk/arch/ppc/platforms/4xx/bubinga.c b/trunk/arch/ppc/platforms/4xx/bubinga.c index 4009f4983ca6..ce48a4f08cbb 100644 --- a/trunk/arch/ppc/platforms/4xx/bubinga.c +++ b/trunk/arch/ppc/platforms/4xx/bubinga.c @@ -10,6 +10,7 @@ * or implied. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/4xx/bubinga.h b/trunk/arch/ppc/platforms/4xx/bubinga.h index 5c408060eb35..606aa9fa5caa 100644 --- a/trunk/arch/ppc/platforms/4xx/bubinga.h +++ b/trunk/arch/ppc/platforms/4xx/bubinga.h @@ -19,6 +19,7 @@ #ifndef __BUBINGA_H__ #define __BUBINGA_H__ +#include #include #include diff --git a/trunk/arch/ppc/platforms/4xx/cpci405.c b/trunk/arch/ppc/platforms/4xx/cpci405.c index 367430998fc5..970b69831e6f 100644 --- a/trunk/arch/ppc/platforms/4xx/cpci405.c +++ b/trunk/arch/ppc/platforms/4xx/cpci405.c @@ -15,6 +15,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/4xx/ebony.c b/trunk/arch/ppc/platforms/4xx/ebony.c index f0f9cc8480ca..b4ecb9c79854 100644 --- a/trunk/arch/ppc/platforms/4xx/ebony.c +++ b/trunk/arch/ppc/platforms/4xx/ebony.c @@ -13,6 +13,7 @@ * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/4xx/ebony.h b/trunk/arch/ppc/platforms/4xx/ebony.h index f40e33d39d76..27b2e77c7c83 100644 --- a/trunk/arch/ppc/platforms/4xx/ebony.h +++ b/trunk/arch/ppc/platforms/4xx/ebony.h @@ -15,6 +15,7 @@ #ifndef __ASM_EBONY_H__ #define __ASM_EBONY_H__ +#include #include /* F/W TLB mapping used in bootloader glue to reset EMAC */ diff --git a/trunk/arch/ppc/platforms/4xx/ep405.c b/trunk/arch/ppc/platforms/4xx/ep405.c index ae5c82081c95..6efa91ff9c07 100644 --- a/trunk/arch/ppc/platforms/4xx/ep405.c +++ b/trunk/arch/ppc/platforms/4xx/ep405.c @@ -9,6 +9,7 @@ * is licensed "as is" without any warranty of any kind, whether express * or implied. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/4xx/ibm405ep.c b/trunk/arch/ppc/platforms/4xx/ibm405ep.c index fb3630a1608d..55af769a6e70 100644 --- a/trunk/arch/ppc/platforms/4xx/ibm405ep.c +++ b/trunk/arch/ppc/platforms/4xx/ibm405ep.c @@ -10,6 +10,7 @@ * or implied. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/4xx/ibm405ep.h b/trunk/arch/ppc/platforms/4xx/ibm405ep.h index 3ef20a547080..fe46640de152 100644 --- a/trunk/arch/ppc/platforms/4xx/ibm405ep.h +++ b/trunk/arch/ppc/platforms/4xx/ibm405ep.h @@ -14,6 +14,7 @@ #ifndef __ASM_IBM405EP_H__ #define __ASM_IBM405EP_H__ +#include /* ibm405.h at bottom of this file */ diff --git a/trunk/arch/ppc/platforms/4xx/ibm405gp.c b/trunk/arch/ppc/platforms/4xx/ibm405gp.c index 2ac67a2f0ba6..e5700469a682 100644 --- a/trunk/arch/ppc/platforms/4xx/ibm405gp.c +++ b/trunk/arch/ppc/platforms/4xx/ibm405gp.c @@ -13,6 +13,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/4xx/ibm405gp.h b/trunk/arch/ppc/platforms/4xx/ibm405gp.h index 9f15e5518719..eaf0ef57028d 100644 --- a/trunk/arch/ppc/platforms/4xx/ibm405gp.h +++ b/trunk/arch/ppc/platforms/4xx/ibm405gp.h @@ -11,6 +11,7 @@ #ifndef __ASM_IBM405GP_H__ #define __ASM_IBM405GP_H__ +#include /* ibm405.h at bottom of this file */ diff --git a/trunk/arch/ppc/platforms/4xx/ibm405gpr.c b/trunk/arch/ppc/platforms/4xx/ibm405gpr.c index 9f4dacffdbb3..49da61f6854a 100644 --- a/trunk/arch/ppc/platforms/4xx/ibm405gpr.c +++ b/trunk/arch/ppc/platforms/4xx/ibm405gpr.c @@ -7,6 +7,7 @@ * or implied. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/4xx/ibm405gpr.h b/trunk/arch/ppc/platforms/4xx/ibm405gpr.h index 9e01f1515de3..e90c5dde01d3 100644 --- a/trunk/arch/ppc/platforms/4xx/ibm405gpr.h +++ b/trunk/arch/ppc/platforms/4xx/ibm405gpr.h @@ -11,6 +11,7 @@ #ifndef __ASM_IBM405GPR_H__ #define __ASM_IBM405GPR_H__ +#include /* ibm405.h at bottom of this file */ diff --git a/trunk/arch/ppc/platforms/4xx/ibm440ep.h b/trunk/arch/ppc/platforms/4xx/ibm440ep.h index d92572727d20..61717e8a799e 100644 --- a/trunk/arch/ppc/platforms/4xx/ibm440ep.h +++ b/trunk/arch/ppc/platforms/4xx/ibm440ep.h @@ -17,6 +17,7 @@ #ifndef __PPC_PLATFORMS_IBM440EP_H #define __PPC_PLATFORMS_IBM440EP_H +#include #include /* UART */ diff --git a/trunk/arch/ppc/platforms/4xx/ibm440gp.h b/trunk/arch/ppc/platforms/4xx/ibm440gp.h index 391c90e1f5ea..7b2763b6024f 100644 --- a/trunk/arch/ppc/platforms/4xx/ibm440gp.h +++ b/trunk/arch/ppc/platforms/4xx/ibm440gp.h @@ -18,6 +18,7 @@ #ifndef __PPC_PLATFORMS_IBM440GP_H #define __PPC_PLATFORMS_IBM440GP_H +#include /* UART */ #define PPC440GP_UART0_ADDR 0x0000000140000200ULL diff --git a/trunk/arch/ppc/platforms/4xx/ibm440gx.h b/trunk/arch/ppc/platforms/4xx/ibm440gx.h index 599c4289b9c2..070a34efe1c7 100644 --- a/trunk/arch/ppc/platforms/4xx/ibm440gx.h +++ b/trunk/arch/ppc/platforms/4xx/ibm440gx.h @@ -17,6 +17,7 @@ #ifndef __PPC_PLATFORMS_IBM440GX_H #define __PPC_PLATFORMS_IBM440GX_H +#include #include diff --git a/trunk/arch/ppc/platforms/4xx/ibm440sp.h b/trunk/arch/ppc/platforms/4xx/ibm440sp.h index 2978682f1720..77e8bb22c527 100644 --- a/trunk/arch/ppc/platforms/4xx/ibm440sp.h +++ b/trunk/arch/ppc/platforms/4xx/ibm440sp.h @@ -15,6 +15,7 @@ #ifndef __PPC_PLATFORMS_IBM440SP_H #define __PPC_PLATFORMS_IBM440SP_H +#include #include diff --git a/trunk/arch/ppc/platforms/4xx/ibmnp405h.c b/trunk/arch/ppc/platforms/4xx/ibmnp405h.c index 1afc3642e5b1..f1dcb0ac15b7 100644 --- a/trunk/arch/ppc/platforms/4xx/ibmnp405h.c +++ b/trunk/arch/ppc/platforms/4xx/ibmnp405h.c @@ -7,6 +7,7 @@ * or implied. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/4xx/ibmnp405h.h b/trunk/arch/ppc/platforms/4xx/ibmnp405h.h index 4aa8821b478b..2c683f6aaa66 100644 --- a/trunk/arch/ppc/platforms/4xx/ibmnp405h.h +++ b/trunk/arch/ppc/platforms/4xx/ibmnp405h.h @@ -11,6 +11,7 @@ #ifndef __ASM_IBMNP405H_H__ #define __ASM_IBMNP405H_H__ +#include /* ibm405.h at bottom of this file */ diff --git a/trunk/arch/ppc/platforms/4xx/ibmstb4.h b/trunk/arch/ppc/platforms/4xx/ibmstb4.h index 31a08abaa4a2..9de426597351 100644 --- a/trunk/arch/ppc/platforms/4xx/ibmstb4.h +++ b/trunk/arch/ppc/platforms/4xx/ibmstb4.h @@ -11,6 +11,7 @@ #ifndef __ASM_IBMSTB4_H__ #define __ASM_IBMSTB4_H__ +#include /* serial port defines */ #define STB04xxx_IO_BASE ((uint)0xe0000000) diff --git a/trunk/arch/ppc/platforms/4xx/ibmstbx25.h b/trunk/arch/ppc/platforms/4xx/ibmstbx25.h index 31b63343e641..6884a49d3482 100644 --- a/trunk/arch/ppc/platforms/4xx/ibmstbx25.h +++ b/trunk/arch/ppc/platforms/4xx/ibmstbx25.h @@ -11,6 +11,7 @@ #ifndef __ASM_IBMSTBX25_H__ #define __ASM_IBMSTBX25_H__ +#include /* serial port defines */ #define STBx25xx_IO_BASE ((uint)0xe0000000) diff --git a/trunk/arch/ppc/platforms/4xx/luan.c b/trunk/arch/ppc/platforms/4xx/luan.c index 61706ef37112..5c37de28e135 100644 --- a/trunk/arch/ppc/platforms/4xx/luan.c +++ b/trunk/arch/ppc/platforms/4xx/luan.c @@ -11,6 +11,7 @@ * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/4xx/luan.h b/trunk/arch/ppc/platforms/4xx/luan.h index 68dd46b0a5c4..e0db6a810feb 100644 --- a/trunk/arch/ppc/platforms/4xx/luan.h +++ b/trunk/arch/ppc/platforms/4xx/luan.h @@ -16,6 +16,7 @@ #ifndef __ASM_LUAN_H__ #define __ASM_LUAN_H__ +#include #include /* F/W TLB mapping used in bootloader glue to reset EMAC */ diff --git a/trunk/arch/ppc/platforms/4xx/ocotea.c b/trunk/arch/ppc/platforms/4xx/ocotea.c index 84e999d9a7bb..554776d4b8ac 100644 --- a/trunk/arch/ppc/platforms/4xx/ocotea.c +++ b/trunk/arch/ppc/platforms/4xx/ocotea.c @@ -11,6 +11,7 @@ * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/4xx/ocotea.h b/trunk/arch/ppc/platforms/4xx/ocotea.h index 89730ce2322c..7c799a9ff82b 100644 --- a/trunk/arch/ppc/platforms/4xx/ocotea.h +++ b/trunk/arch/ppc/platforms/4xx/ocotea.h @@ -16,6 +16,7 @@ #ifndef __ASM_OCOTEA_H__ #define __ASM_OCOTEA_H__ +#include #include /* F/W TLB mapping used in bootloader glue to reset EMAC */ diff --git a/trunk/arch/ppc/platforms/4xx/ppc440spe.h b/trunk/arch/ppc/platforms/4xx/ppc440spe.h index f1e867c4c9fc..d3a620ddcdee 100644 --- a/trunk/arch/ppc/platforms/4xx/ppc440spe.h +++ b/trunk/arch/ppc/platforms/4xx/ppc440spe.h @@ -17,6 +17,7 @@ #ifndef __PPC_PLATFORMS_PPC440SPE_H #define __PPC_PLATFORMS_PPC440SPE_H +#include #include diff --git a/trunk/arch/ppc/platforms/4xx/redwood5.c b/trunk/arch/ppc/platforms/4xx/redwood5.c index edf4d37d1a52..53da2b4f7c24 100644 --- a/trunk/arch/ppc/platforms/4xx/redwood5.c +++ b/trunk/arch/ppc/platforms/4xx/redwood5.c @@ -9,6 +9,7 @@ * or implied. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/4xx/redwood6.c b/trunk/arch/ppc/platforms/4xx/redwood6.c index 006e29f83a1a..41b27d106fa3 100644 --- a/trunk/arch/ppc/platforms/4xx/redwood6.c +++ b/trunk/arch/ppc/platforms/4xx/redwood6.c @@ -7,6 +7,7 @@ * or implied. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/4xx/sycamore.c b/trunk/arch/ppc/platforms/4xx/sycamore.c index c47493e344c2..bab31eb30687 100644 --- a/trunk/arch/ppc/platforms/4xx/sycamore.c +++ b/trunk/arch/ppc/platforms/4xx/sycamore.c @@ -9,6 +9,7 @@ * is licensed "as is" without any warranty of any kind, whether express * or implied. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/4xx/sycamore.h b/trunk/arch/ppc/platforms/4xx/sycamore.h index 69b169eac053..dae01620227d 100644 --- a/trunk/arch/ppc/platforms/4xx/sycamore.h +++ b/trunk/arch/ppc/platforms/4xx/sycamore.h @@ -19,6 +19,7 @@ #ifndef __ASM_SYCAMORE_H__ #define __ASM_SYCAMORE_H__ +#include #include #include diff --git a/trunk/arch/ppc/platforms/4xx/walnut.c b/trunk/arch/ppc/platforms/4xx/walnut.c index f414d2d4c58e..6bd77902b9a4 100644 --- a/trunk/arch/ppc/platforms/4xx/walnut.c +++ b/trunk/arch/ppc/platforms/4xx/walnut.c @@ -11,6 +11,7 @@ * is licensed "as is" without any warranty of any kind, whether express * or implied. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/4xx/walnut.h b/trunk/arch/ppc/platforms/4xx/walnut.h index d9c4eb788940..f13a577f0a41 100644 --- a/trunk/arch/ppc/platforms/4xx/walnut.h +++ b/trunk/arch/ppc/platforms/4xx/walnut.h @@ -21,6 +21,7 @@ #ifndef __ASM_WALNUT_H__ #define __ASM_WALNUT_H__ +#include #include #include diff --git a/trunk/arch/ppc/platforms/4xx/xilinx_ml300.c b/trunk/arch/ppc/platforms/4xx/xilinx_ml300.c index fb5f0b5e13d1..d97a7f269f97 100644 --- a/trunk/arch/ppc/platforms/4xx/xilinx_ml300.c +++ b/trunk/arch/ppc/platforms/4xx/xilinx_ml300.c @@ -9,6 +9,7 @@ * "as is" without any warranty of any kind, whether express or implied. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/4xx/xilinx_ml403.c b/trunk/arch/ppc/platforms/4xx/xilinx_ml403.c index cb3bf7a2bcbe..4c0c7e4c1114 100644 --- a/trunk/arch/ppc/platforms/4xx/xilinx_ml403.c +++ b/trunk/arch/ppc/platforms/4xx/xilinx_ml403.c @@ -13,6 +13,7 @@ * kind, whether express or implied. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/4xx/xparameters/xparameters.h b/trunk/arch/ppc/platforms/4xx/xparameters/xparameters.h index cd7d0e7d9863..4cf21f256356 100644 --- a/trunk/arch/ppc/platforms/4xx/xparameters/xparameters.h +++ b/trunk/arch/ppc/platforms/4xx/xparameters/xparameters.h @@ -12,6 +12,7 @@ * "as is" without any warranty of any kind, whether express or implied. */ +#include #if defined(CONFIG_XILINX_ML300) #include "xparameters_ml300.h" diff --git a/trunk/arch/ppc/platforms/4xx/yucca.c b/trunk/arch/ppc/platforms/4xx/yucca.c index 346787df0ddb..f287dcdbffce 100644 --- a/trunk/arch/ppc/platforms/4xx/yucca.c +++ b/trunk/arch/ppc/platforms/4xx/yucca.c @@ -12,6 +12,7 @@ * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/4xx/yucca.h b/trunk/arch/ppc/platforms/4xx/yucca.h index bc9684e66a84..7ae23012237a 100644 --- a/trunk/arch/ppc/platforms/4xx/yucca.h +++ b/trunk/arch/ppc/platforms/4xx/yucca.h @@ -17,6 +17,7 @@ #ifndef __ASM_YUCCA_H__ #define __ASM_YUCCA_H__ +#include #include /* F/W TLB mapping used in bootloader glue to reset EMAC */ diff --git a/trunk/arch/ppc/platforms/83xx/mpc834x_sys.c b/trunk/arch/ppc/platforms/83xx/mpc834x_sys.c index 3397f0de1592..11626dd9090f 100644 --- a/trunk/arch/ppc/platforms/83xx/mpc834x_sys.c +++ b/trunk/arch/ppc/platforms/83xx/mpc834x_sys.c @@ -11,6 +11,7 @@ * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/83xx/mpc834x_sys.h b/trunk/arch/ppc/platforms/83xx/mpc834x_sys.h index d2e06c95b083..6727bbdc36ec 100644 --- a/trunk/arch/ppc/platforms/83xx/mpc834x_sys.h +++ b/trunk/arch/ppc/platforms/83xx/mpc834x_sys.h @@ -15,6 +15,7 @@ #ifndef __MACH_MPC83XX_SYS_H__ #define __MACH_MPC83XX_SYS_H__ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/85xx/mpc8540_ads.c b/trunk/arch/ppc/platforms/85xx/mpc8540_ads.c index 4f839da6782f..9b014df516b9 100644 --- a/trunk/arch/ppc/platforms/85xx/mpc8540_ads.c +++ b/trunk/arch/ppc/platforms/85xx/mpc8540_ads.c @@ -11,6 +11,7 @@ * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/85xx/mpc8540_ads.h b/trunk/arch/ppc/platforms/85xx/mpc8540_ads.h index 7559f9e6fc28..0b5e7ff856f5 100644 --- a/trunk/arch/ppc/platforms/85xx/mpc8540_ads.h +++ b/trunk/arch/ppc/platforms/85xx/mpc8540_ads.h @@ -15,6 +15,7 @@ #ifndef __MACH_MPC8540ADS_H__ #define __MACH_MPC8540ADS_H__ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/85xx/mpc8555_cds.h b/trunk/arch/ppc/platforms/85xx/mpc8555_cds.h index 4f79c372c4e7..9754dbd5d18c 100644 --- a/trunk/arch/ppc/platforms/85xx/mpc8555_cds.h +++ b/trunk/arch/ppc/platforms/85xx/mpc8555_cds.h @@ -15,6 +15,7 @@ #ifndef __MACH_MPC8555CDS_H__ #define __MACH_MPC8555CDS_H__ +#include #include #include diff --git a/trunk/arch/ppc/platforms/85xx/mpc8560_ads.c b/trunk/arch/ppc/platforms/85xx/mpc8560_ads.c index 026ace320729..0cb2e86470e2 100644 --- a/trunk/arch/ppc/platforms/85xx/mpc8560_ads.c +++ b/trunk/arch/ppc/platforms/85xx/mpc8560_ads.c @@ -11,6 +11,7 @@ * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/85xx/mpc8560_ads.h b/trunk/arch/ppc/platforms/85xx/mpc8560_ads.h index 9f185ab2e019..c2247c21fc53 100644 --- a/trunk/arch/ppc/platforms/85xx/mpc8560_ads.h +++ b/trunk/arch/ppc/platforms/85xx/mpc8560_ads.h @@ -15,6 +15,7 @@ #ifndef __MACH_MPC8560ADS_H #define __MACH_MPC8560ADS_H +#include #include #include diff --git a/trunk/arch/ppc/platforms/85xx/mpc85xx_ads_common.c b/trunk/arch/ppc/platforms/85xx/mpc85xx_ads_common.c index 674806e001f6..8fd9d763f58d 100644 --- a/trunk/arch/ppc/platforms/85xx/mpc85xx_ads_common.c +++ b/trunk/arch/ppc/platforms/85xx/mpc85xx_ads_common.c @@ -11,6 +11,7 @@ * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/85xx/mpc85xx_ads_common.h b/trunk/arch/ppc/platforms/85xx/mpc85xx_ads_common.h index abf32281655d..de8d41aafe11 100644 --- a/trunk/arch/ppc/platforms/85xx/mpc85xx_ads_common.h +++ b/trunk/arch/ppc/platforms/85xx/mpc85xx_ads_common.h @@ -15,6 +15,7 @@ #ifndef __MACH_MPC85XX_ADS_H__ #define __MACH_MPC85XX_ADS_H__ +#include #include #include diff --git a/trunk/arch/ppc/platforms/85xx/mpc85xx_cds_common.c b/trunk/arch/ppc/platforms/85xx/mpc85xx_cds_common.c index 139cf0d00855..4368dc3f3c30 100644 --- a/trunk/arch/ppc/platforms/85xx/mpc85xx_cds_common.c +++ b/trunk/arch/ppc/platforms/85xx/mpc85xx_cds_common.c @@ -11,6 +11,7 @@ * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/85xx/mpc85xx_cds_common.h b/trunk/arch/ppc/platforms/85xx/mpc85xx_cds_common.h index 32c5455c8b82..62df54f61ae3 100644 --- a/trunk/arch/ppc/platforms/85xx/mpc85xx_cds_common.h +++ b/trunk/arch/ppc/platforms/85xx/mpc85xx_cds_common.h @@ -15,6 +15,7 @@ #ifndef __MACH_MPC85XX_CDS_H__ #define __MACH_MPC85XX_CDS_H__ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/85xx/sbc8560.c b/trunk/arch/ppc/platforms/85xx/sbc8560.c index 764d580ff535..b73778ecf827 100644 --- a/trunk/arch/ppc/platforms/85xx/sbc8560.c +++ b/trunk/arch/ppc/platforms/85xx/sbc8560.c @@ -11,6 +11,7 @@ * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/85xx/sbc8560.h b/trunk/arch/ppc/platforms/85xx/sbc8560.h index c7d61cf3a449..44ffaa2d2c87 100644 --- a/trunk/arch/ppc/platforms/85xx/sbc8560.h +++ b/trunk/arch/ppc/platforms/85xx/sbc8560.h @@ -13,6 +13,7 @@ #ifndef __MACH_SBC8560_H__ #define __MACH_SBC8560_H__ +#include #include #define CPM_MAP_ADDR (CCSRBAR + MPC85xx_CPM_OFFSET) diff --git a/trunk/arch/ppc/platforms/85xx/sbc85xx.c b/trunk/arch/ppc/platforms/85xx/sbc85xx.c index 2c587ca97bce..d3ff280510ff 100644 --- a/trunk/arch/ppc/platforms/85xx/sbc85xx.c +++ b/trunk/arch/ppc/platforms/85xx/sbc85xx.c @@ -10,6 +10,7 @@ * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/85xx/sbc85xx.h b/trunk/arch/ppc/platforms/85xx/sbc85xx.h index 21ea7a55639b..5dd8b6a98c9b 100644 --- a/trunk/arch/ppc/platforms/85xx/sbc85xx.h +++ b/trunk/arch/ppc/platforms/85xx/sbc85xx.h @@ -14,6 +14,7 @@ #ifndef __PLATFORMS_85XX_SBC85XX_H__ #define __PLATFORMS_85XX_SBC85XX_H__ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/85xx/stx_gp3.c b/trunk/arch/ppc/platforms/85xx/stx_gp3.c index 224612412cbe..8d7baa9a397a 100644 --- a/trunk/arch/ppc/platforms/85xx/stx_gp3.c +++ b/trunk/arch/ppc/platforms/85xx/stx_gp3.c @@ -16,6 +16,7 @@ * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/85xx/stx_gp3.h b/trunk/arch/ppc/platforms/85xx/stx_gp3.h index c6e34c09e979..3f71f8f59370 100644 --- a/trunk/arch/ppc/platforms/85xx/stx_gp3.h +++ b/trunk/arch/ppc/platforms/85xx/stx_gp3.h @@ -17,6 +17,7 @@ #ifndef __MACH_STX_GP3_H #define __MACH_STX_GP3_H +#include #include #include diff --git a/trunk/arch/ppc/platforms/85xx/tqm85xx.c b/trunk/arch/ppc/platforms/85xx/tqm85xx.c index 1c90f113cc8f..00af132262b3 100644 --- a/trunk/arch/ppc/platforms/85xx/tqm85xx.c +++ b/trunk/arch/ppc/platforms/85xx/tqm85xx.c @@ -14,6 +14,7 @@ * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/85xx/tqm85xx.h b/trunk/arch/ppc/platforms/85xx/tqm85xx.h index 57284e68f676..612d80504f9b 100644 --- a/trunk/arch/ppc/platforms/85xx/tqm85xx.h +++ b/trunk/arch/ppc/platforms/85xx/tqm85xx.h @@ -14,6 +14,7 @@ #ifndef __MACH_TQM85XX_H #define __MACH_TQM85XX_H +#include #include #include diff --git a/trunk/arch/ppc/platforms/apus_pci.c b/trunk/arch/ppc/platforms/apus_pci.c index dc165f0c8908..33dad6db8243 100644 --- a/trunk/arch/ppc/platforms/apus_pci.c +++ b/trunk/arch/ppc/platforms/apus_pci.c @@ -10,6 +10,7 @@ * */ +#include #ifdef CONFIG_AMIGA #include diff --git a/trunk/arch/ppc/platforms/apus_setup.c b/trunk/arch/ppc/platforms/apus_setup.c index 1d034ead2c9a..5c4118a459f3 100644 --- a/trunk/arch/ppc/platforms/apus_setup.c +++ b/trunk/arch/ppc/platforms/apus_setup.c @@ -11,6 +11,7 @@ * Amiga specific stuff into mach/amiga. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/ccm.h b/trunk/arch/ppc/platforms/ccm.h index 69000b1c7a4c..edb87b573831 100644 --- a/trunk/arch/ppc/platforms/ccm.h +++ b/trunk/arch/ppc/platforms/ccm.h @@ -7,6 +7,7 @@ #ifndef __MACH_CCM_H #define __MACH_CCM_H +#include #include diff --git a/trunk/arch/ppc/platforms/chestnut.c b/trunk/arch/ppc/platforms/chestnut.c index a764ae71cbcb..f324f757cae1 100644 --- a/trunk/arch/ppc/platforms/chestnut.c +++ b/trunk/arch/ppc/platforms/chestnut.c @@ -9,6 +9,7 @@ * or implied. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/cpci690.c b/trunk/arch/ppc/platforms/cpci690.c index e78bccf96c9d..790475c22fd7 100644 --- a/trunk/arch/ppc/platforms/cpci690.c +++ b/trunk/arch/ppc/platforms/cpci690.c @@ -8,6 +8,7 @@ * is licensed "as is" without any warranty of any kind, whether express * or implied. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/ev64260.c b/trunk/arch/ppc/platforms/ev64260.c index 4957a7bcde22..31e8e21e1d5c 100644 --- a/trunk/arch/ppc/platforms/ev64260.c +++ b/trunk/arch/ppc/platforms/ev64260.c @@ -20,6 +20,7 @@ * Note: The 750CXe and 7450 are not stable with a 125MHz or 133MHz TCLK/SYSCLK. * At 100MHz, they are solid. */ +#include #include #include diff --git a/trunk/arch/ppc/platforms/ev64360.c b/trunk/arch/ppc/platforms/ev64360.c index 90ed375c9b90..104ac9b16e8b 100644 --- a/trunk/arch/ppc/platforms/ev64360.c +++ b/trunk/arch/ppc/platforms/ev64360.c @@ -11,6 +11,7 @@ * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/fads.h b/trunk/arch/ppc/platforms/fads.h index 2f9f0f60e3f7..e1c0b1b6dcb3 100644 --- a/trunk/arch/ppc/platforms/fads.h +++ b/trunk/arch/ppc/platforms/fads.h @@ -19,6 +19,7 @@ #ifndef __ASM_FADS_H__ #define __ASM_FADS_H__ +#include #include diff --git a/trunk/arch/ppc/platforms/gemini_prom.S b/trunk/arch/ppc/platforms/gemini_prom.S index e8c84d24f01f..b181f2108001 100644 --- a/trunk/arch/ppc/platforms/gemini_prom.S +++ b/trunk/arch/ppc/platforms/gemini_prom.S @@ -6,6 +6,7 @@ * ---Dan */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/gemini_serial.h b/trunk/arch/ppc/platforms/gemini_serial.h index b915eff79fdb..69855aeec888 100644 --- a/trunk/arch/ppc/platforms/gemini_serial.h +++ b/trunk/arch/ppc/platforms/gemini_serial.h @@ -2,6 +2,7 @@ #ifndef __ASMPPC_GEMINI_SERIAL_H #define __ASMPPC_GEMINI_SERIAL_H +#include #include #ifdef CONFIG_SERIAL_MANY_PORTS diff --git a/trunk/arch/ppc/platforms/gemini_setup.c b/trunk/arch/ppc/platforms/gemini_setup.c index f48048f362a8..0090ff154608 100644 --- a/trunk/arch/ppc/platforms/gemini_setup.c +++ b/trunk/arch/ppc/platforms/gemini_setup.c @@ -6,6 +6,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/hdpu.c b/trunk/arch/ppc/platforms/hdpu.c index 71af4b488621..75dc2ee87d2f 100644 --- a/trunk/arch/ppc/platforms/hdpu.c +++ b/trunk/arch/ppc/platforms/hdpu.c @@ -12,6 +12,7 @@ * option) any later version. */ +#include #include #include diff --git a/trunk/arch/ppc/platforms/hermes.h b/trunk/arch/ppc/platforms/hermes.h index de91afff8ca1..198fc590b9f5 100644 --- a/trunk/arch/ppc/platforms/hermes.h +++ b/trunk/arch/ppc/platforms/hermes.h @@ -7,6 +7,7 @@ #ifndef __MACH_HERMES_H #define __MACH_HERMES_H +#include #include diff --git a/trunk/arch/ppc/platforms/ip860.h b/trunk/arch/ppc/platforms/ip860.h index 2f1f86ce1447..8c3836c5f054 100644 --- a/trunk/arch/ppc/platforms/ip860.h +++ b/trunk/arch/ppc/platforms/ip860.h @@ -7,6 +7,7 @@ #ifndef __MACH_IP860_H #define __MACH_IP860_H +#include #include diff --git a/trunk/arch/ppc/platforms/ivms8.h b/trunk/arch/ppc/platforms/ivms8.h index 9109e684ad9b..d4be310f8084 100644 --- a/trunk/arch/ppc/platforms/ivms8.h +++ b/trunk/arch/ppc/platforms/ivms8.h @@ -13,6 +13,7 @@ #ifndef __ASM_IVMS8_H__ #define __ASM_IVMS8_H__ +#include #include diff --git a/trunk/arch/ppc/platforms/katana.c b/trunk/arch/ppc/platforms/katana.c index 720f8b3e2fbc..ad21280e8920 100644 --- a/trunk/arch/ppc/platforms/katana.c +++ b/trunk/arch/ppc/platforms/katana.c @@ -16,6 +16,7 @@ * Supports the Artesyn 750i, 752i, and 3750. The 752i is virtually identical * to the 750i except that it has an mv64460 bridge. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/lantec.h b/trunk/arch/ppc/platforms/lantec.h index 5e5eb6d0f6aa..8c87642c510f 100644 --- a/trunk/arch/ppc/platforms/lantec.h +++ b/trunk/arch/ppc/platforms/lantec.h @@ -7,6 +7,7 @@ #ifndef __MACH_LANTEC_H #define __MACH_LANTEC_H +#include #include diff --git a/trunk/arch/ppc/platforms/lite5200.c b/trunk/arch/ppc/platforms/lite5200.c index b9e9db63f65b..fecbe9adc9e0 100644 --- a/trunk/arch/ppc/platforms/lite5200.c +++ b/trunk/arch/ppc/platforms/lite5200.c @@ -21,6 +21,7 @@ * kind, whether express or implied. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/lopec.c b/trunk/arch/ppc/platforms/lopec.c index 18dc6e8dd4f4..c6445a727ca3 100644 --- a/trunk/arch/ppc/platforms/lopec.c +++ b/trunk/arch/ppc/platforms/lopec.c @@ -10,6 +10,7 @@ * or implied. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/lwmon.h b/trunk/arch/ppc/platforms/lwmon.h index e63f3b07a5db..995bf5112df0 100644 --- a/trunk/arch/ppc/platforms/lwmon.h +++ b/trunk/arch/ppc/platforms/lwmon.h @@ -7,6 +7,7 @@ #ifndef __MACH_LWMON_H #define __MACH_LWMON_H +#include #include diff --git a/trunk/arch/ppc/platforms/mpc866ads_setup.c b/trunk/arch/ppc/platforms/mpc866ads_setup.c index f19b6167c770..d919dab61347 100644 --- a/trunk/arch/ppc/platforms/mpc866ads_setup.c +++ b/trunk/arch/ppc/platforms/mpc866ads_setup.c @@ -11,6 +11,7 @@ * kind, whether express or implied. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/mpc885ads.h b/trunk/arch/ppc/platforms/mpc885ads.h index d3bbbb3c9a1f..a80b7d116b49 100644 --- a/trunk/arch/ppc/platforms/mpc885ads.h +++ b/trunk/arch/ppc/platforms/mpc885ads.h @@ -15,6 +15,7 @@ #ifndef __ASM_MPC885ADS_H__ #define __ASM_MPC885ADS_H__ +#include #include diff --git a/trunk/arch/ppc/platforms/mpc885ads_setup.c b/trunk/arch/ppc/platforms/mpc885ads_setup.c index c1fc4a16fea9..4b88679cd31c 100644 --- a/trunk/arch/ppc/platforms/mpc885ads_setup.c +++ b/trunk/arch/ppc/platforms/mpc885ads_setup.c @@ -11,6 +11,7 @@ * kind, whether express or implied. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/mvme5100.c b/trunk/arch/ppc/platforms/mvme5100.c index bb8d4a45437a..c717cd92c028 100644 --- a/trunk/arch/ppc/platforms/mvme5100.c +++ b/trunk/arch/ppc/platforms/mvme5100.c @@ -9,6 +9,7 @@ * or implied. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/pal4_setup.c b/trunk/arch/ppc/platforms/pal4_setup.c index 3da47d9ec7a2..3c3d881df00d 100644 --- a/trunk/arch/ppc/platforms/pal4_setup.c +++ b/trunk/arch/ppc/platforms/pal4_setup.c @@ -9,6 +9,7 @@ * or implied. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/pcu_e.h b/trunk/arch/ppc/platforms/pcu_e.h index a2c03a22875e..91a820a6fbc4 100644 --- a/trunk/arch/ppc/platforms/pcu_e.h +++ b/trunk/arch/ppc/platforms/pcu_e.h @@ -7,6 +7,7 @@ #ifndef __MACH_PCU_E_H #define __MACH_PCU_E_H +#include #include diff --git a/trunk/arch/ppc/platforms/powerpmc250.c b/trunk/arch/ppc/platforms/powerpmc250.c index 4d46650e07fd..c3a86be11fb7 100644 --- a/trunk/arch/ppc/platforms/powerpmc250.c +++ b/trunk/arch/ppc/platforms/powerpmc250.c @@ -11,6 +11,7 @@ * or implied. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/pplus.c b/trunk/arch/ppc/platforms/pplus.c index 9778105d4dfe..de2761ebe0d9 100644 --- a/trunk/arch/ppc/platforms/pplus.c +++ b/trunk/arch/ppc/platforms/pplus.c @@ -13,6 +13,7 @@ * or implied. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/pq2ads.h b/trunk/arch/ppc/platforms/pq2ads.h index 2b287f4e0ca3..6b26dd36c640 100644 --- a/trunk/arch/ppc/platforms/pq2ads.h +++ b/trunk/arch/ppc/platforms/pq2ads.h @@ -9,6 +9,7 @@ #ifndef __MACH_ADS8260_DEFS #define __MACH_ADS8260_DEFS +#include #include diff --git a/trunk/arch/ppc/platforms/prep_pci.c b/trunk/arch/ppc/platforms/prep_pci.c index c627ba41335f..e50b9996848c 100644 --- a/trunk/arch/ppc/platforms/prep_pci.c +++ b/trunk/arch/ppc/platforms/prep_pci.c @@ -6,6 +6,7 @@ * The motherboard routes/maps will disappear shortly. -- Cort */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/prep_setup.c b/trunk/arch/ppc/platforms/prep_setup.c index 6436beffdc96..e86f6156d589 100644 --- a/trunk/arch/ppc/platforms/prep_setup.c +++ b/trunk/arch/ppc/platforms/prep_setup.c @@ -11,6 +11,7 @@ * bootup setup stuff.. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/prpmc750.c b/trunk/arch/ppc/platforms/prpmc750.c index fcab513e206d..cdd9cfb13ee9 100644 --- a/trunk/arch/ppc/platforms/prpmc750.c +++ b/trunk/arch/ppc/platforms/prpmc750.c @@ -9,6 +9,7 @@ * or implied. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/prpmc800.c b/trunk/arch/ppc/platforms/prpmc800.c index f4ade5cd7a88..e459a199fb1d 100644 --- a/trunk/arch/ppc/platforms/prpmc800.c +++ b/trunk/arch/ppc/platforms/prpmc800.c @@ -7,6 +7,7 @@ * or implied. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/radstone_ppc7d.c b/trunk/arch/ppc/platforms/radstone_ppc7d.c index 97d6c21091e0..bc26b6d71c1d 100644 --- a/trunk/arch/ppc/platforms/radstone_ppc7d.c +++ b/trunk/arch/ppc/platforms/radstone_ppc7d.c @@ -18,6 +18,7 @@ * SCSI / VGA. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/rpxclassic.h b/trunk/arch/ppc/platforms/rpxclassic.h index 57a2a55dab8c..6daa109491c4 100644 --- a/trunk/arch/ppc/platforms/rpxclassic.h +++ b/trunk/arch/ppc/platforms/rpxclassic.h @@ -8,6 +8,7 @@ #ifndef __MACH_RPX_DEFS #define __MACH_RPX_DEFS +#include #ifndef __ASSEMBLY__ /* A Board Information structure that is given to a program when diff --git a/trunk/arch/ppc/platforms/rpxlite.h b/trunk/arch/ppc/platforms/rpxlite.h index 719780646270..deee5bd36aa8 100644 --- a/trunk/arch/ppc/platforms/rpxlite.h +++ b/trunk/arch/ppc/platforms/rpxlite.h @@ -8,6 +8,7 @@ #ifndef __MACH_RPX_DEFS #define __MACH_RPX_DEFS +#include #ifndef __ASSEMBLY__ /* A Board Information structure that is given to a program when diff --git a/trunk/arch/ppc/platforms/sandpoint.c b/trunk/arch/ppc/platforms/sandpoint.c index a76002af686f..6dc459decb2d 100644 --- a/trunk/arch/ppc/platforms/sandpoint.c +++ b/trunk/arch/ppc/platforms/sandpoint.c @@ -60,6 +60,7 @@ * found, we can hopefully stop hardcoding 32MB of RAM. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/sbc82xx.c b/trunk/arch/ppc/platforms/sbc82xx.c index 8cff1e303349..41006d2b4b38 100644 --- a/trunk/arch/ppc/platforms/sbc82xx.c +++ b/trunk/arch/ppc/platforms/sbc82xx.c @@ -13,6 +13,7 @@ * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/spruce.c b/trunk/arch/ppc/platforms/spruce.c index 3c7842784876..3783deccd9b2 100644 --- a/trunk/arch/ppc/platforms/spruce.c +++ b/trunk/arch/ppc/platforms/spruce.c @@ -9,6 +9,7 @@ * or implied. */ +#include #include #include #include diff --git a/trunk/arch/ppc/platforms/tqm8260.h b/trunk/arch/ppc/platforms/tqm8260.h index 7f8c9a6928f8..c7a78a646c66 100644 --- a/trunk/arch/ppc/platforms/tqm8260.h +++ b/trunk/arch/ppc/platforms/tqm8260.h @@ -7,6 +7,7 @@ #ifndef __TQM8260_PLATFORM #define __TQM8260_PLATFORM +#include #include diff --git a/trunk/arch/ppc/platforms/tqm8xx.h b/trunk/arch/ppc/platforms/tqm8xx.h index 662131d0eb39..43ac064ebe5a 100644 --- a/trunk/arch/ppc/platforms/tqm8xx.h +++ b/trunk/arch/ppc/platforms/tqm8xx.h @@ -8,6 +8,7 @@ #ifndef __MACH_TQM8xx_H #define __MACH_TQM8xx_H +#include #include diff --git a/trunk/arch/ppc/syslib/btext.c b/trunk/arch/ppc/syslib/btext.c index 51ab6e90fe25..12fa83e6774a 100644 --- a/trunk/arch/ppc/syslib/btext.c +++ b/trunk/arch/ppc/syslib/btext.c @@ -3,6 +3,7 @@ * * Benjamin Herrenschmidt */ +#include #include #include #include diff --git a/trunk/arch/ppc/syslib/gen550_dbg.c b/trunk/arch/ppc/syslib/gen550_dbg.c index 9293f5c59099..9fcff74bfdd0 100644 --- a/trunk/arch/ppc/syslib/gen550_dbg.c +++ b/trunk/arch/ppc/syslib/gen550_dbg.c @@ -14,6 +14,7 @@ * or implied. */ +#include #include #include #include /* For linux/serial_core.h */ diff --git a/trunk/arch/ppc/syslib/gen550_kgdb.c b/trunk/arch/ppc/syslib/gen550_kgdb.c index 987cc0414e6e..874078a7664d 100644 --- a/trunk/arch/ppc/syslib/gen550_kgdb.c +++ b/trunk/arch/ppc/syslib/gen550_kgdb.c @@ -15,6 +15,7 @@ * or implied. */ +#include #include #include diff --git a/trunk/arch/ppc/syslib/ibm440gp_common.c b/trunk/arch/ppc/syslib/ibm440gp_common.c index a3927ec9b5d7..fbaae5f6d834 100644 --- a/trunk/arch/ppc/syslib/ibm440gp_common.c +++ b/trunk/arch/ppc/syslib/ibm440gp_common.c @@ -13,6 +13,7 @@ * option) any later version. * */ +#include #include #include #include diff --git a/trunk/arch/ppc/syslib/ibm440gp_common.h b/trunk/arch/ppc/syslib/ibm440gp_common.h index 94d7835038ad..f48529f3c23d 100644 --- a/trunk/arch/ppc/syslib/ibm440gp_common.h +++ b/trunk/arch/ppc/syslib/ibm440gp_common.h @@ -16,6 +16,7 @@ #ifndef __ASSEMBLY__ +#include #include #include diff --git a/trunk/arch/ppc/syslib/ibm440gx_common.c b/trunk/arch/ppc/syslib/ibm440gx_common.c index 0440d8f4ce16..f6cc16888527 100644 --- a/trunk/arch/ppc/syslib/ibm440gx_common.c +++ b/trunk/arch/ppc/syslib/ibm440gx_common.c @@ -10,6 +10,7 @@ * option) any later version. * */ +#include #include #include #include diff --git a/trunk/arch/ppc/syslib/ibm440gx_common.h b/trunk/arch/ppc/syslib/ibm440gx_common.h index 8d6f203e7a1d..a03ec6022e8f 100644 --- a/trunk/arch/ppc/syslib/ibm440gx_common.h +++ b/trunk/arch/ppc/syslib/ibm440gx_common.h @@ -16,6 +16,7 @@ #ifndef __ASSEMBLY__ +#include #include #include #include diff --git a/trunk/arch/ppc/syslib/ibm440sp_common.c b/trunk/arch/ppc/syslib/ibm440sp_common.c index 571f8bcf78e6..293e4138d172 100644 --- a/trunk/arch/ppc/syslib/ibm440sp_common.c +++ b/trunk/arch/ppc/syslib/ibm440sp_common.c @@ -13,6 +13,7 @@ * option) any later version. * */ +#include #include #include diff --git a/trunk/arch/ppc/syslib/ibm44x_common.c b/trunk/arch/ppc/syslib/ibm44x_common.c index 01f99b4a6649..14a981a5cea7 100644 --- a/trunk/arch/ppc/syslib/ibm44x_common.c +++ b/trunk/arch/ppc/syslib/ibm44x_common.c @@ -13,6 +13,7 @@ * option) any later version. * */ +#include #include #include #include diff --git a/trunk/arch/ppc/syslib/m8260_pci_erratum9.c b/trunk/arch/ppc/syslib/m8260_pci_erratum9.c index 974581ea4849..99e4bc0e42af 100644 --- a/trunk/arch/ppc/syslib/m8260_pci_erratum9.c +++ b/trunk/arch/ppc/syslib/m8260_pci_erratum9.c @@ -15,6 +15,7 @@ * or implied. */ #include +#include #include #include #include diff --git a/trunk/arch/ppc/syslib/m8260_setup.c b/trunk/arch/ppc/syslib/m8260_setup.c index 15f0d7323535..b7a6cb2d8d52 100644 --- a/trunk/arch/ppc/syslib/m8260_setup.c +++ b/trunk/arch/ppc/syslib/m8260_setup.c @@ -6,6 +6,7 @@ * Further modified for generic 8xx and 8260 by Dan. */ +#include #include #include #include diff --git a/trunk/arch/ppc/syslib/m8xx_setup.c b/trunk/arch/ppc/syslib/m8xx_setup.c index 54303a7b4e69..0c4c0de7c59f 100644 --- a/trunk/arch/ppc/syslib/m8xx_setup.c +++ b/trunk/arch/ppc/syslib/m8xx_setup.c @@ -10,6 +10,7 @@ * bootup setup stuff.. */ +#include #include #include #include diff --git a/trunk/arch/ppc/syslib/mpc52xx_pci.c b/trunk/arch/ppc/syslib/mpc52xx_pci.c index 20a0eac0dc3a..5a5a7a9cd248 100644 --- a/trunk/arch/ppc/syslib/mpc52xx_pci.c +++ b/trunk/arch/ppc/syslib/mpc52xx_pci.c @@ -11,6 +11,7 @@ * kind, whether express or implied. */ +#include #include diff --git a/trunk/arch/ppc/syslib/mpc52xx_setup.c b/trunk/arch/ppc/syslib/mpc52xx_setup.c index 80c609019bda..ee6379bb415e 100644 --- a/trunk/arch/ppc/syslib/mpc52xx_setup.c +++ b/trunk/arch/ppc/syslib/mpc52xx_setup.c @@ -15,6 +15,7 @@ * kind, whether express or implied. */ +#include #include #include diff --git a/trunk/arch/ppc/syslib/mv64x60_dbg.c b/trunk/arch/ppc/syslib/mv64x60_dbg.c index e1876261e5dc..9cf18764a1a1 100644 --- a/trunk/arch/ppc/syslib/mv64x60_dbg.c +++ b/trunk/arch/ppc/syslib/mv64x60_dbg.c @@ -18,6 +18,7 @@ */ +#include #include #include #include diff --git a/trunk/arch/ppc/syslib/ocp.c b/trunk/arch/ppc/syslib/ocp.c index 50c55622ece9..a4ecc2ee579f 100644 --- a/trunk/arch/ppc/syslib/ocp.c +++ b/trunk/arch/ppc/syslib/ocp.c @@ -36,6 +36,7 @@ */ #include +#include #include #include #include diff --git a/trunk/arch/ppc/syslib/open_pic.c b/trunk/arch/ppc/syslib/open_pic.c index 08973663fa24..767a0bc95817 100644 --- a/trunk/arch/ppc/syslib/open_pic.c +++ b/trunk/arch/ppc/syslib/open_pic.c @@ -6,6 +6,7 @@ * for more details. */ +#include #include #include #include diff --git a/trunk/arch/ppc/syslib/open_pic2.c b/trunk/arch/ppc/syslib/open_pic2.c index e1ff971539ea..b8154efff6ed 100644 --- a/trunk/arch/ppc/syslib/open_pic2.c +++ b/trunk/arch/ppc/syslib/open_pic2.c @@ -10,6 +10,7 @@ * register accesses */ +#include #include #include #include diff --git a/trunk/arch/ppc/syslib/ppc440spe_pcie.c b/trunk/arch/ppc/syslib/ppc440spe_pcie.c index dd5d4b958c31..1509fc1ddfb6 100644 --- a/trunk/arch/ppc/syslib/ppc440spe_pcie.c +++ b/trunk/arch/ppc/syslib/ppc440spe_pcie.c @@ -8,6 +8,7 @@ * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/ppc/syslib/ppc4xx_dma.c b/trunk/arch/ppc/syslib/ppc4xx_dma.c index 1eef4ffed4fb..b40b96a8c609 100644 --- a/trunk/arch/ppc/syslib/ppc4xx_dma.c +++ b/trunk/arch/ppc/syslib/ppc4xx_dma.c @@ -19,6 +19,7 @@ * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/ppc/syslib/ppc4xx_pic.c b/trunk/arch/ppc/syslib/ppc4xx_pic.c index 745685df5984..e669c1335d47 100644 --- a/trunk/arch/ppc/syslib/ppc4xx_pic.c +++ b/trunk/arch/ppc/syslib/ppc4xx_pic.c @@ -13,6 +13,7 @@ * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/ppc/syslib/ppc4xx_setup.c b/trunk/arch/ppc/syslib/ppc4xx_setup.c index debe14c083a1..e83a83fd95e1 100644 --- a/trunk/arch/ppc/syslib/ppc4xx_setup.c +++ b/trunk/arch/ppc/syslib/ppc4xx_setup.c @@ -13,6 +13,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/ppc/syslib/ppc4xx_sgdma.c b/trunk/arch/ppc/syslib/ppc4xx_sgdma.c index 2f83e162971f..280ea010a9c8 100644 --- a/trunk/arch/ppc/syslib/ppc4xx_sgdma.c +++ b/trunk/arch/ppc/syslib/ppc4xx_sgdma.c @@ -19,6 +19,7 @@ * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/arch/ppc/syslib/ppc83xx_setup.c b/trunk/arch/ppc/syslib/ppc83xx_setup.c index ec466db52114..26afd637dc81 100644 --- a/trunk/arch/ppc/syslib/ppc83xx_setup.c +++ b/trunk/arch/ppc/syslib/ppc83xx_setup.c @@ -22,6 +22,7 @@ * Added PCI support -- Tony Li */ +#include #include #include #include diff --git a/trunk/arch/ppc/syslib/ppc83xx_setup.h b/trunk/arch/ppc/syslib/ppc83xx_setup.h index b918a2d245ea..478b011cd963 100644 --- a/trunk/arch/ppc/syslib/ppc83xx_setup.h +++ b/trunk/arch/ppc/syslib/ppc83xx_setup.h @@ -23,6 +23,7 @@ #ifndef __PPC_SYSLIB_PPC83XX_SETUP_H #define __PPC_SYSLIB_PPC83XX_SETUP_H +#include #include extern unsigned long mpc83xx_find_end_of_memory(void) __init; diff --git a/trunk/arch/ppc/syslib/ppc85xx_common.c b/trunk/arch/ppc/syslib/ppc85xx_common.c index e5ac699e7316..0145c968f9ad 100644 --- a/trunk/arch/ppc/syslib/ppc85xx_common.c +++ b/trunk/arch/ppc/syslib/ppc85xx_common.c @@ -11,6 +11,7 @@ * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/ppc/syslib/ppc85xx_common.h b/trunk/arch/ppc/syslib/ppc85xx_common.h index 4fc405425113..182744a1321c 100644 --- a/trunk/arch/ppc/syslib/ppc85xx_common.h +++ b/trunk/arch/ppc/syslib/ppc85xx_common.h @@ -14,6 +14,7 @@ #ifndef __PPC_SYSLIB_PPC85XX_COMMON_H #define __PPC_SYSLIB_PPC85XX_COMMON_H +#include #include /* Provide access to ccsrbar for any modules, etc */ diff --git a/trunk/arch/ppc/syslib/ppc85xx_rio.c b/trunk/arch/ppc/syslib/ppc85xx_rio.c index d9b471b4d695..297f3b549177 100644 --- a/trunk/arch/ppc/syslib/ppc85xx_rio.c +++ b/trunk/arch/ppc/syslib/ppc85xx_rio.c @@ -10,6 +10,7 @@ * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/ppc/syslib/ppc85xx_rio.h b/trunk/arch/ppc/syslib/ppc85xx_rio.h index 6d3ff30b1579..c0827a2c3eec 100644 --- a/trunk/arch/ppc/syslib/ppc85xx_rio.h +++ b/trunk/arch/ppc/syslib/ppc85xx_rio.h @@ -13,6 +13,7 @@ #ifndef __PPC_SYSLIB_PPC85XX_RIO_H #define __PPC_SYSLIB_PPC85XX_RIO_H +#include #include extern void mpc85xx_rio_setup(int law_start, int law_size); diff --git a/trunk/arch/ppc/syslib/ppc85xx_setup.c b/trunk/arch/ppc/syslib/ppc85xx_setup.c index 2475ec6600fe..79b7089d7500 100644 --- a/trunk/arch/ppc/syslib/ppc85xx_setup.c +++ b/trunk/arch/ppc/syslib/ppc85xx_setup.c @@ -11,6 +11,7 @@ * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/ppc/syslib/ppc85xx_setup.h b/trunk/arch/ppc/syslib/ppc85xx_setup.h index 6ff79995210b..f55b8032d3d9 100644 --- a/trunk/arch/ppc/syslib/ppc85xx_setup.h +++ b/trunk/arch/ppc/syslib/ppc85xx_setup.h @@ -15,6 +15,7 @@ #ifndef __PPC_SYSLIB_PPC85XX_SETUP_H #define __PPC_SYSLIB_PPC85XX_SETUP_H +#include #include #include diff --git a/trunk/arch/ppc/syslib/ppc8xx_pic.c b/trunk/arch/ppc/syslib/ppc8xx_pic.c index d6c25fe25011..3e6f51a61d46 100644 --- a/trunk/arch/ppc/syslib/ppc8xx_pic.c +++ b/trunk/arch/ppc/syslib/ppc8xx_pic.c @@ -1,3 +1,4 @@ +#include #include #include #include diff --git a/trunk/arch/ppc/syslib/ppc8xx_pic.h b/trunk/arch/ppc/syslib/ppc8xx_pic.h index d7d9f651a91b..784935eac365 100644 --- a/trunk/arch/ppc/syslib/ppc8xx_pic.h +++ b/trunk/arch/ppc/syslib/ppc8xx_pic.h @@ -1,6 +1,7 @@ #ifndef _PPC_KERNEL_PPC8xx_H #define _PPC_KERNEL_PPC8xx_H +#include #include #include diff --git a/trunk/arch/ppc/syslib/qspan_pci.c b/trunk/arch/ppc/syslib/qspan_pci.c index 85053b2816a9..0970b5d30391 100644 --- a/trunk/arch/ppc/syslib/qspan_pci.c +++ b/trunk/arch/ppc/syslib/qspan_pci.c @@ -15,6 +15,7 @@ * we have switched the chip select. */ +#include #include #include #include diff --git a/trunk/arch/ppc/xmon/privinst.h b/trunk/arch/ppc/xmon/privinst.h index c492a35687bd..93978c027ca0 100644 --- a/trunk/arch/ppc/xmon/privinst.h +++ b/trunk/arch/ppc/xmon/privinst.h @@ -1,6 +1,7 @@ /* * Copyright (C) 1996 Paul Mackerras. */ +#include #define GETREG(reg) \ static inline int get_ ## reg (void) \ diff --git a/trunk/arch/ppc/xmon/start.c b/trunk/arch/ppc/xmon/start.c index f7e92986952a..cfc2d6ad464d 100644 --- a/trunk/arch/ppc/xmon/start.c +++ b/trunk/arch/ppc/xmon/start.c @@ -1,6 +1,7 @@ /* * Copyright (C) 1996 Paul Mackerras. */ +#include #include #include #include diff --git a/trunk/arch/ppc/xmon/xmon.c b/trunk/arch/ppc/xmon/xmon.c index 37d234f93394..06fa44b5c647 100644 --- a/trunk/arch/ppc/xmon/xmon.c +++ b/trunk/arch/ppc/xmon/xmon.c @@ -3,6 +3,7 @@ * * Copyright (C) 1996 Paul Mackerras. */ +#include #include #include #include diff --git a/trunk/arch/s390/appldata/appldata_base.c b/trunk/arch/s390/appldata/appldata_base.c index d0f82c995af6..61bc44626c04 100644 --- a/trunk/arch/s390/appldata/appldata_base.c +++ b/trunk/arch/s390/appldata/appldata_base.c @@ -10,6 +10,7 @@ * Author: Gerald Schaefer */ +#include #include #include #include @@ -765,6 +766,7 @@ unsigned long nr_iowait(void) #endif /* MODULE */ EXPORT_SYMBOL_GPL(si_swapinfo); EXPORT_SYMBOL_GPL(nr_threads); +EXPORT_SYMBOL_GPL(get_full_page_state); EXPORT_SYMBOL_GPL(nr_running); EXPORT_SYMBOL_GPL(nr_iowait); //EXPORT_SYMBOL_GPL(nr_context_switches); diff --git a/trunk/arch/s390/appldata/appldata_mem.c b/trunk/arch/s390/appldata/appldata_mem.c index ab3b0765a64e..7915a197d96d 100644 --- a/trunk/arch/s390/appldata/appldata_mem.c +++ b/trunk/arch/s390/appldata/appldata_mem.c @@ -9,6 +9,7 @@ * Author: Gerald Schaefer */ +#include #include #include #include @@ -106,21 +107,21 @@ static void appldata_get_mem_data(void *data) * serialized through the appldata_ops_lock and can use static */ static struct sysinfo val; - unsigned long ev[NR_VM_EVENT_ITEMS]; + static struct page_state ps; struct appldata_mem_data *mem_data; mem_data = data; mem_data->sync_count_1++; - all_vm_events(ev); - mem_data->pgpgin = ev[PGPGIN] >> 1; - mem_data->pgpgout = ev[PGPGOUT] >> 1; - mem_data->pswpin = ev[PSWPIN]; - mem_data->pswpout = ev[PSWPOUT]; - mem_data->pgalloc = ev[PGALLOC_HIGH] + ev[PGALLOC_NORMAL] + - ev[PGALLOC_DMA]; - mem_data->pgfault = ev[PGFAULT]; - mem_data->pgmajfault = ev[PGMAJFAULT]; + get_full_page_state(&ps); + mem_data->pgpgin = ps.pgpgin >> 1; + mem_data->pgpgout = ps.pgpgout >> 1; + mem_data->pswpin = ps.pswpin; + mem_data->pswpout = ps.pswpout; + mem_data->pgalloc = ps.pgalloc_high + ps.pgalloc_normal + + ps.pgalloc_dma; + mem_data->pgfault = ps.pgfault; + mem_data->pgmajfault = ps.pgmajfault; si_meminfo(&val); mem_data->sharedram = val.sharedram; @@ -129,8 +130,7 @@ static void appldata_get_mem_data(void *data) mem_data->totalhigh = P2K(val.totalhigh); mem_data->freehigh = P2K(val.freehigh); mem_data->bufferram = P2K(val.bufferram); - mem_data->cached = P2K(global_page_state(NR_FILE_PAGES) - - val.bufferram); + mem_data->cached = P2K(atomic_read(&nr_pagecache) - val.bufferram); si_swapinfo(&val); mem_data->totalswap = P2K(val.totalswap); diff --git a/trunk/arch/s390/appldata/appldata_net_sum.c b/trunk/arch/s390/appldata/appldata_net_sum.c index 075e619bf37d..39b7bdecbf05 100644 --- a/trunk/arch/s390/appldata/appldata_net_sum.c +++ b/trunk/arch/s390/appldata/appldata_net_sum.c @@ -10,6 +10,7 @@ * Author: Gerald Schaefer */ +#include #include #include #include diff --git a/trunk/arch/s390/appldata/appldata_os.c b/trunk/arch/s390/appldata/appldata_os.c index 161acc5c8a1b..f2b44a2f1dec 100644 --- a/trunk/arch/s390/appldata/appldata_os.c +++ b/trunk/arch/s390/appldata/appldata_os.c @@ -9,6 +9,7 @@ * Author: Gerald Schaefer */ +#include #include #include #include diff --git a/trunk/arch/s390/kernel/asm-offsets.c b/trunk/arch/s390/kernel/asm-offsets.c index ec514fe5ccd0..3f7018e9dbe4 100644 --- a/trunk/arch/s390/kernel/asm-offsets.c +++ b/trunk/arch/s390/kernel/asm-offsets.c @@ -4,6 +4,7 @@ * and format the required data. */ +#include #include /* Use marker if you need to separate the values later */ diff --git a/trunk/arch/s390/kernel/binfmt_elf32.c b/trunk/arch/s390/kernel/binfmt_elf32.c index 9565a2dcfadc..12a6311e9838 100644 --- a/trunk/arch/s390/kernel/binfmt_elf32.c +++ b/trunk/arch/s390/kernel/binfmt_elf32.c @@ -135,6 +135,7 @@ static inline int dump_task_fpu(struct task_struct *tsk, elf_fpregset_t *fpregs) #include #include +#include #include #include #include diff --git a/trunk/arch/s390/kernel/compat_linux.c b/trunk/arch/s390/kernel/compat_linux.c index cabb4ff54cd7..5e14de37c17b 100644 --- a/trunk/arch/s390/kernel/compat_linux.c +++ b/trunk/arch/s390/kernel/compat_linux.c @@ -16,6 +16,7 @@ */ +#include #include #include #include diff --git a/trunk/arch/s390/kernel/compat_linux.h b/trunk/arch/s390/kernel/compat_linux.h index 1a18e29668ef..3898f66d0b2f 100644 --- a/trunk/arch/s390/kernel/compat_linux.h +++ b/trunk/arch/s390/kernel/compat_linux.h @@ -1,6 +1,7 @@ #ifndef _ASM_S390X_S390_H #define _ASM_S390X_S390_H +#include #include #include #include diff --git a/trunk/arch/s390/kernel/compat_signal.c b/trunk/arch/s390/kernel/compat_signal.c index d49b876a83bf..b4c815d8ef75 100644 --- a/trunk/arch/s390/kernel/compat_signal.c +++ b/trunk/arch/s390/kernel/compat_signal.c @@ -10,6 +10,7 @@ * 1997-11-28 Modified for POSIX.1b signals by Richard Henderson */ +#include #include #include #include diff --git a/trunk/arch/s390/kernel/debug.c b/trunk/arch/s390/kernel/debug.c index 7ba20922a535..06a3fbc12536 100644 --- a/trunk/arch/s390/kernel/debug.c +++ b/trunk/arch/s390/kernel/debug.c @@ -10,6 +10,7 @@ * Bugreports to: */ +#include #include #include #include diff --git a/trunk/arch/s390/kernel/entry.S b/trunk/arch/s390/kernel/entry.S index d8948c342caf..aa8b52c2140f 100644 --- a/trunk/arch/s390/kernel/entry.S +++ b/trunk/arch/s390/kernel/entry.S @@ -11,6 +11,7 @@ #include #include +#include #include #include #include @@ -228,9 +229,8 @@ sysc_do_svc: sysc_nr_ok: mvc SP_ARGS(4,%r15),SP_R7(%r15) sysc_do_restart: - l %r8,BASED(.Lsysc_table) tm __TI_flags+3(%r9),(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT) - l %r8,0(%r7,%r8) # get system call addr. + l %r8,sys_call_table-system_call(%r7,%r13) # get system call addr. bnz BASED(sysc_tracesys) basr %r14,%r8 # call sys_xxxx st %r2,SP_R2(%r15) # store return value (change R2 on stack) @@ -331,10 +331,9 @@ sysc_tracesys: basr %r14,%r1 clc SP_R2(4,%r15),BASED(.Lnr_syscalls) bnl BASED(sysc_tracenogo) - l %r8,BASED(.Lsysc_table) l %r7,SP_R2(%r15) # strace might have changed the sll %r7,2 # system call - l %r8,0(%r7,%r8) + l %r8,sys_call_table-system_call(%r7,%r13) sysc_tracego: lm %r3,%r6,SP_R3(%r15) l %r2,SP_ORIG_R2(%r15) @@ -1011,7 +1010,6 @@ cleanup_io_leave_insn: .Ltrace: .long syscall_trace .Lvfork: .long sys_vfork .Lschedtail: .long schedule_tail -.Lsysc_table: .long sys_call_table .Lcritical_start: .long __critical_start + 0x80000000 @@ -1020,8 +1018,8 @@ cleanup_io_leave_insn: .Lcleanup_critical: .long cleanup_critical - .section .rodata, "a" #define SYSCALL(esa,esame,emu) .long esa sys_call_table: #include "syscalls.S" #undef SYSCALL + diff --git a/trunk/arch/s390/kernel/entry64.S b/trunk/arch/s390/kernel/entry64.S index 1ca499fa54b4..f3222a1b2861 100644 --- a/trunk/arch/s390/kernel/entry64.S +++ b/trunk/arch/s390/kernel/entry64.S @@ -11,6 +11,7 @@ #include #include +#include #include #include #include @@ -991,7 +992,6 @@ cleanup_io_leave_insn: .Lcritical_end: .quad __critical_end - .section .rodata, "a" #define SYSCALL(esa,esame,emu) .long esame sys_call_table: #include "syscalls.S" diff --git a/trunk/arch/s390/kernel/head.S b/trunk/arch/s390/kernel/head.S index adad8863ee2f..538c82da49b1 100644 --- a/trunk/arch/s390/kernel/head.S +++ b/trunk/arch/s390/kernel/head.S @@ -23,6 +23,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/s390/kernel/process.c b/trunk/arch/s390/kernel/process.c index 1f9399191794..4a0f5a1551ea 100644 --- a/trunk/arch/s390/kernel/process.c +++ b/trunk/arch/s390/kernel/process.c @@ -15,6 +15,7 @@ * This file handles the architecture-dependent parts of process handling.. */ +#include #include #include #include diff --git a/trunk/arch/s390/kernel/s390_ksyms.c b/trunk/arch/s390/kernel/s390_ksyms.c index c73a45467fa4..0886e739d122 100644 --- a/trunk/arch/s390/kernel/s390_ksyms.c +++ b/trunk/arch/s390/kernel/s390_ksyms.c @@ -3,6 +3,7 @@ * * S390 version */ +#include #include #include #include diff --git a/trunk/arch/s390/kernel/setup.c b/trunk/arch/s390/kernel/setup.c index 1ca34f54ea8a..2b2551e3510b 100644 --- a/trunk/arch/s390/kernel/setup.c +++ b/trunk/arch/s390/kernel/setup.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/s390/kernel/signal.c b/trunk/arch/s390/kernel/signal.c index a887b686f279..d48cfc726b68 100644 --- a/trunk/arch/s390/kernel/signal.c +++ b/trunk/arch/s390/kernel/signal.c @@ -11,6 +11,7 @@ * 1997-11-28 Modified for POSIX.1b signals by Richard Henderson */ +#include #include #include #include diff --git a/trunk/arch/s390/kernel/time.c b/trunk/arch/s390/kernel/time.c index f7fe9bc43397..2a6c6efb6865 100644 --- a/trunk/arch/s390/kernel/time.c +++ b/trunk/arch/s390/kernel/time.c @@ -12,6 +12,7 @@ * Copyright (C) 1991, 1992, 1995 Linus Torvalds */ +#include #include #include #include diff --git a/trunk/arch/s390/kernel/traps.c b/trunk/arch/s390/kernel/traps.c index 12240c03a6dd..b7630436f693 100644 --- a/trunk/arch/s390/kernel/traps.c +++ b/trunk/arch/s390/kernel/traps.c @@ -14,6 +14,7 @@ * 'Traps.c' handles hardware traps and faults after we have saved some * state in 'asm.s'. */ +#include #include #include #include diff --git a/trunk/arch/s390/kernel/vmlinux.lds.S b/trunk/arch/s390/kernel/vmlinux.lds.S index ff5f7bb34f75..9f34bb54c051 100644 --- a/trunk/arch/s390/kernel/vmlinux.lds.S +++ b/trunk/arch/s390/kernel/vmlinux.lds.S @@ -3,6 +3,7 @@ */ #include +#include #ifndef CONFIG_64BIT OUTPUT_FORMAT("elf32-s390", "elf32-s390", "elf32-s390") diff --git a/trunk/arch/s390/kernel/vtime.c b/trunk/arch/s390/kernel/vtime.c index 2306cd83fca1..1f0439dc245a 100644 --- a/trunk/arch/s390/kernel/vtime.c +++ b/trunk/arch/s390/kernel/vtime.c @@ -7,6 +7,7 @@ * Author(s): Jan Glauber */ +#include #include #include #include diff --git a/trunk/arch/s390/lib/delay.c b/trunk/arch/s390/lib/delay.c index 468f4ea33f99..71f0a2fb3078 100644 --- a/trunk/arch/s390/lib/delay.c +++ b/trunk/arch/s390/lib/delay.c @@ -11,6 +11,7 @@ * Copyright (C) 1997 Martin Mares */ +#include #include #include diff --git a/trunk/arch/s390/math-emu/math.c b/trunk/arch/s390/math-emu/math.c index b4957c84e4d6..648df7140335 100644 --- a/trunk/arch/s390/math-emu/math.c +++ b/trunk/arch/s390/math-emu/math.c @@ -9,6 +9,7 @@ * that does not have the IEEE fpu (all processors before G5). */ +#include #include #include #include diff --git a/trunk/arch/s390/mm/cmm.c b/trunk/arch/s390/mm/cmm.c index 81be2fec7dc5..51596f429235 100644 --- a/trunk/arch/s390/mm/cmm.c +++ b/trunk/arch/s390/mm/cmm.c @@ -8,6 +8,7 @@ * Collaborative memory management interface. */ +#include #include #include #include diff --git a/trunk/arch/s390/mm/fault.c b/trunk/arch/s390/mm/fault.c index 833d5941746a..81ade401b073 100644 --- a/trunk/arch/s390/mm/fault.c +++ b/trunk/arch/s390/mm/fault.c @@ -10,6 +10,7 @@ * Copyright (C) 1995 Linus Torvalds */ +#include #include #include #include diff --git a/trunk/arch/s390/mm/init.c b/trunk/arch/s390/mm/init.c index eb6ebfef134a..a055894f3bd8 100644 --- a/trunk/arch/s390/mm/init.c +++ b/trunk/arch/s390/mm/init.c @@ -9,6 +9,7 @@ * Copyright (C) 1995 Linus Torvalds */ +#include #include #include #include @@ -23,7 +24,6 @@ #include #include #include -#include #include #include @@ -34,7 +34,6 @@ #include #include #include -#include DEFINE_PER_CPU(struct mmu_gather, mmu_gathers); @@ -91,6 +90,17 @@ void show_mem(void) printk("%d pages swap cached\n",cached); } +/* References to section boundaries */ + +extern unsigned long _text; +extern unsigned long _etext; +extern unsigned long _edata; +extern unsigned long __bss_start; +extern unsigned long _end; + +extern unsigned long __init_begin; +extern unsigned long __init_end; + extern unsigned long __initdata zholes_size[]; /* * paging_init() sets up the page tables @@ -107,10 +117,6 @@ void __init paging_init(void) unsigned long pfn = 0; unsigned long pgdir_k = (__pa(swapper_pg_dir) & PAGE_MASK) | _KERNSEG_TABLE; static const int ssm_mask = 0x04000000L; - unsigned long ro_start_pfn, ro_end_pfn; - - ro_start_pfn = PFN_DOWN((unsigned long)&__start_rodata); - ro_end_pfn = PFN_UP((unsigned long)&__end_rodata); /* unmap whole virtual address space */ @@ -138,10 +144,7 @@ void __init paging_init(void) pg_dir++; for (tmp = 0 ; tmp < PTRS_PER_PTE ; tmp++,pg_table++) { - if (pfn >= ro_start_pfn && pfn < ro_end_pfn) - pte = pfn_pte(pfn, __pgprot(_PAGE_RO)); - else - pte = pfn_pte(pfn, PAGE_KERNEL); + pte = pfn_pte(pfn, PAGE_KERNEL); if (pfn >= max_low_pfn) pte_clear(&init_mm, 0, &pte); set_pte(pg_table, pte); @@ -173,7 +176,6 @@ void __init paging_init(void) } #else /* CONFIG_64BIT */ - void __init paging_init(void) { pgd_t * pg_dir; @@ -185,15 +187,13 @@ void __init paging_init(void) unsigned long pgdir_k = (__pa(swapper_pg_dir) & PAGE_MASK) | _KERN_REGION_TABLE; static const int ssm_mask = 0x04000000L; + unsigned long zones_size[MAX_NR_ZONES]; unsigned long dma_pfn, high_pfn; - unsigned long ro_start_pfn, ro_end_pfn; memset(zones_size, 0, sizeof(zones_size)); dma_pfn = MAX_DMA_ADDRESS >> PAGE_SHIFT; high_pfn = max_low_pfn; - ro_start_pfn = PFN_DOWN((unsigned long)&__start_rodata); - ro_end_pfn = PFN_UP((unsigned long)&__end_rodata); if (dma_pfn > high_pfn) zones_size[ZONE_DMA] = high_pfn; @@ -232,10 +232,7 @@ void __init paging_init(void) pmd_populate_kernel(&init_mm, pm_dir, pt_dir); for (k = 0 ; k < PTRS_PER_PTE ; k++,pt_dir++) { - if (pfn >= ro_start_pfn && pfn < ro_end_pfn) - pte = pfn_pte(pfn, __pgprot(_PAGE_RO)); - else - pte = pfn_pte(pfn, PAGE_KERNEL); + pte = pfn_pte(pfn, PAGE_KERNEL); if (pfn >= max_low_pfn) { pte_clear(&init_mm, 0, &pte); continue; @@ -286,9 +283,6 @@ void __init mem_init(void) reservedpages << (PAGE_SHIFT-10), datasize >>10, initsize >> 10); - printk("Write protected kernel read-only data: %#lx - %#lx\n", - (unsigned long)&__start_rodata, - PFN_ALIGN((unsigned long)&__end_rodata) - 1); } void free_initmem(void) diff --git a/trunk/arch/sh/boards/adx/irq_maskreg.c b/trunk/arch/sh/boards/adx/irq_maskreg.c index 4b2abe5eb165..357fab1bac2b 100644 --- a/trunk/arch/sh/boards/adx/irq_maskreg.c +++ b/trunk/arch/sh/boards/adx/irq_maskreg.c @@ -13,6 +13,7 @@ * Each bit of the register is for masking each interrupt. */ +#include #include #include #include diff --git a/trunk/arch/sh/boards/bigsur/io.c b/trunk/arch/sh/boards/bigsur/io.c index 6835381da5fd..a9fde781b21a 100644 --- a/trunk/arch/sh/boards/bigsur/io.c +++ b/trunk/arch/sh/boards/bigsur/io.c @@ -14,6 +14,7 @@ * IO functions for a Hitachi Big Sur Evaluation Board. */ +#include #include #include #include diff --git a/trunk/arch/sh/boards/bigsur/irq.c b/trunk/arch/sh/boards/bigsur/irq.c index ac946a2201c7..1d32425782c0 100644 --- a/trunk/arch/sh/boards/bigsur/irq.c +++ b/trunk/arch/sh/boards/bigsur/irq.c @@ -20,6 +20,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/sh/boards/bigsur/led.c b/trunk/arch/sh/boards/bigsur/led.c index 6b08c0e1c453..0a2339c69440 100644 --- a/trunk/arch/sh/boards/bigsur/led.c +++ b/trunk/arch/sh/boards/bigsur/led.c @@ -11,6 +11,7 @@ * This file contains Big Sur specific LED code. */ +#include #include #include diff --git a/trunk/arch/sh/boards/bigsur/setup.c b/trunk/arch/sh/boards/bigsur/setup.c index dfeede9da50f..e69be05195f5 100644 --- a/trunk/arch/sh/boards/bigsur/setup.c +++ b/trunk/arch/sh/boards/bigsur/setup.c @@ -20,6 +20,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/sh/boards/cat68701/setup.c b/trunk/arch/sh/boards/cat68701/setup.c index 90e5175df227..ae8a350ade53 100644 --- a/trunk/arch/sh/boards/cat68701/setup.c +++ b/trunk/arch/sh/boards/cat68701/setup.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/sh/boards/cqreek/setup.c b/trunk/arch/sh/boards/cqreek/setup.c index eff4ed93599f..29b537cd6546 100644 --- a/trunk/arch/sh/boards/cqreek/setup.c +++ b/trunk/arch/sh/boards/cqreek/setup.c @@ -8,6 +8,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/sh/boards/harp/irq.c b/trunk/arch/sh/boards/harp/irq.c index 96bb41c9fc55..701fa55d5297 100644 --- a/trunk/arch/sh/boards/harp/irq.c +++ b/trunk/arch/sh/boards/harp/irq.c @@ -9,6 +9,7 @@ * Bases on the IPR irq system */ +#include #include #include diff --git a/trunk/arch/sh/boards/harp/led.c b/trunk/arch/sh/boards/harp/led.c index aeb7b392b190..76ca4ccac703 100644 --- a/trunk/arch/sh/boards/harp/led.c +++ b/trunk/arch/sh/boards/harp/led.c @@ -9,6 +9,7 @@ * This file contains ST40STB1 HARP and compatible code. */ +#include #include #include diff --git a/trunk/arch/sh/boards/harp/setup.c b/trunk/arch/sh/boards/harp/setup.c index 886e450ab63e..05b01b8f40aa 100644 --- a/trunk/arch/sh/boards/harp/setup.c +++ b/trunk/arch/sh/boards/harp/setup.c @@ -9,6 +9,7 @@ * STMicroelectronics ST40STB1 HARP and compatible support. */ +#include #include #include #include diff --git a/trunk/arch/sh/boards/hp6xx/setup.c b/trunk/arch/sh/boards/hp6xx/setup.c index 71f315663cc9..6d94a8e2e67a 100644 --- a/trunk/arch/sh/boards/hp6xx/setup.c +++ b/trunk/arch/sh/boards/hp6xx/setup.c @@ -9,6 +9,7 @@ * Setup code for an HP680 (internal peripherials only) */ +#include #include #include #include diff --git a/trunk/arch/sh/boards/mpc1211/led.c b/trunk/arch/sh/boards/mpc1211/led.c index 1fe36927f691..0a31beec3465 100644 --- a/trunk/arch/sh/boards/mpc1211/led.c +++ b/trunk/arch/sh/boards/mpc1211/led.c @@ -6,6 +6,7 @@ * This file contains Interface MPC-1211 specific LED code. */ +#include static void mach_led(int position, int value) { diff --git a/trunk/arch/sh/boards/mpc1211/pci.c b/trunk/arch/sh/boards/mpc1211/pci.c index 4ed1a95c6d56..9f7ccd33ffb6 100644 --- a/trunk/arch/sh/boards/mpc1211/pci.c +++ b/trunk/arch/sh/boards/mpc1211/pci.c @@ -11,6 +11,7 @@ * License. See linux/COPYING for more information. * */ +#include #include #include #include diff --git a/trunk/arch/sh/boards/mpc1211/setup.c b/trunk/arch/sh/boards/mpc1211/setup.c index 2bfb221cc35c..b72f009c52c2 100644 --- a/trunk/arch/sh/boards/mpc1211/setup.c +++ b/trunk/arch/sh/boards/mpc1211/setup.c @@ -5,6 +5,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/sh/boards/overdrive/fpga.c b/trunk/arch/sh/boards/overdrive/fpga.c index 956c23901228..3a1ec9403441 100644 --- a/trunk/arch/sh/boards/overdrive/fpga.c +++ b/trunk/arch/sh/boards/overdrive/fpga.c @@ -10,6 +10,7 @@ */ +#include #include #include #include diff --git a/trunk/arch/sh/boards/overdrive/galileo.c b/trunk/arch/sh/boards/overdrive/galileo.c index 29e48971bba0..b055809d2ac1 100644 --- a/trunk/arch/sh/boards/overdrive/galileo.c +++ b/trunk/arch/sh/boards/overdrive/galileo.c @@ -9,6 +9,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/sh/boards/overdrive/io.c b/trunk/arch/sh/boards/overdrive/io.c index 4671b6b047bb..65f3fd0563d3 100644 --- a/trunk/arch/sh/boards/overdrive/io.c +++ b/trunk/arch/sh/boards/overdrive/io.c @@ -8,6 +8,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/sh/boards/overdrive/irq.c b/trunk/arch/sh/boards/overdrive/irq.c index 5d730c70389e..2c13a7de6b22 100644 --- a/trunk/arch/sh/boards/overdrive/irq.c +++ b/trunk/arch/sh/boards/overdrive/irq.c @@ -9,6 +9,7 @@ * Bases on the IPR irq system */ +#include #include #include diff --git a/trunk/arch/sh/boards/overdrive/led.c b/trunk/arch/sh/boards/overdrive/led.c index 860d7f204a4e..734742e92279 100644 --- a/trunk/arch/sh/boards/overdrive/led.c +++ b/trunk/arch/sh/boards/overdrive/led.c @@ -9,6 +9,7 @@ * This file contains an Overdrive specific LED feature. */ +#include #include #include #include diff --git a/trunk/arch/sh/boards/overdrive/setup.c b/trunk/arch/sh/boards/overdrive/setup.c index a3a7744c2047..94f6165d33b8 100644 --- a/trunk/arch/sh/boards/overdrive/setup.c +++ b/trunk/arch/sh/boards/overdrive/setup.c @@ -9,6 +9,7 @@ * STMicroelectronics Overdrive Support. */ +#include #include #include #include diff --git a/trunk/arch/sh/boards/renesas/edosk7705/setup.c b/trunk/arch/sh/boards/renesas/edosk7705/setup.c index ba143fa4afaa..8b6f0c2af092 100644 --- a/trunk/arch/sh/boards/renesas/edosk7705/setup.c +++ b/trunk/arch/sh/boards/renesas/edosk7705/setup.c @@ -9,6 +9,7 @@ * board by S. Dunn, 2003. */ +#include #include #include #include diff --git a/trunk/arch/sh/boards/renesas/hs7751rvoip/io.c b/trunk/arch/sh/boards/renesas/hs7751rvoip/io.c index 3a1abfa2fefb..456753d2649c 100644 --- a/trunk/arch/sh/boards/renesas/hs7751rvoip/io.c +++ b/trunk/arch/sh/boards/renesas/hs7751rvoip/io.c @@ -11,6 +11,7 @@ * expectation of later SuperIO and PCMCIA access. */ +#include #include #include #include diff --git a/trunk/arch/sh/boards/renesas/hs7751rvoip/irq.c b/trunk/arch/sh/boards/renesas/hs7751rvoip/irq.c index 705b7ddcb0d2..52a98b524e1f 100644 --- a/trunk/arch/sh/boards/renesas/hs7751rvoip/irq.c +++ b/trunk/arch/sh/boards/renesas/hs7751rvoip/irq.c @@ -10,6 +10,7 @@ * Lineo uSolutions, Inc. 2003. */ +#include #include #include #include diff --git a/trunk/arch/sh/boards/renesas/hs7751rvoip/led.c b/trunk/arch/sh/boards/renesas/hs7751rvoip/led.c index b6608fff9f38..18a13c8da8a4 100644 --- a/trunk/arch/sh/boards/renesas/hs7751rvoip/led.c +++ b/trunk/arch/sh/boards/renesas/hs7751rvoip/led.c @@ -10,6 +10,7 @@ * Lineo uSolutions, Inc. 2003. */ +#include #include #include diff --git a/trunk/arch/sh/boards/renesas/hs7751rvoip/mach.c b/trunk/arch/sh/boards/renesas/hs7751rvoip/mach.c index caf967f77c61..8bbed60220ca 100644 --- a/trunk/arch/sh/boards/renesas/hs7751rvoip/mach.c +++ b/trunk/arch/sh/boards/renesas/hs7751rvoip/mach.c @@ -9,6 +9,7 @@ * Machine vector for the Renesas Technology sales HS7751RVoIP */ +#include #include #include diff --git a/trunk/arch/sh/boards/renesas/hs7751rvoip/pci.c b/trunk/arch/sh/boards/renesas/hs7751rvoip/pci.c index 7e5786b58110..7a442d1eca46 100644 --- a/trunk/arch/sh/boards/renesas/hs7751rvoip/pci.c +++ b/trunk/arch/sh/boards/renesas/hs7751rvoip/pci.c @@ -11,6 +11,7 @@ * PCI initialization for the Renesas SH7751R HS7751RVoIP board */ +#include #include #include #include diff --git a/trunk/arch/sh/boards/renesas/hs7751rvoip/setup.c b/trunk/arch/sh/boards/renesas/hs7751rvoip/setup.c index 29fb5ff70fb5..f1a78b6c714c 100644 --- a/trunk/arch/sh/boards/renesas/hs7751rvoip/setup.c +++ b/trunk/arch/sh/boards/renesas/hs7751rvoip/setup.c @@ -10,6 +10,7 @@ * Lineo uSolutions, Inc. 2003. */ +#include #include #include diff --git a/trunk/arch/sh/boards/renesas/rts7751r2d/irq.c b/trunk/arch/sh/boards/renesas/rts7751r2d/irq.c index 154535440bbf..e16915d9cda4 100644 --- a/trunk/arch/sh/boards/renesas/rts7751r2d/irq.c +++ b/trunk/arch/sh/boards/renesas/rts7751r2d/irq.c @@ -9,6 +9,7 @@ * Atom Create Engineering Co., Ltd. 2002. */ +#include #include #include #include diff --git a/trunk/arch/sh/boards/renesas/rts7751r2d/led.c b/trunk/arch/sh/boards/renesas/rts7751r2d/led.c index 4d16de71fac1..9993259a894f 100644 --- a/trunk/arch/sh/boards/renesas/rts7751r2d/led.c +++ b/trunk/arch/sh/boards/renesas/rts7751r2d/led.c @@ -9,6 +9,7 @@ * This file contains Renesas Technology Sales RTS7751R2D specific LED code. */ +#include #include #include diff --git a/trunk/arch/sh/boards/renesas/rts7751r2d/mach.c b/trunk/arch/sh/boards/renesas/rts7751r2d/mach.c index 5ed9e97ea197..610740512d56 100644 --- a/trunk/arch/sh/boards/renesas/rts7751r2d/mach.c +++ b/trunk/arch/sh/boards/renesas/rts7751r2d/mach.c @@ -9,6 +9,7 @@ * Machine vector for the Renesas Technology sales RTS7751R2D */ +#include #include #include diff --git a/trunk/arch/sh/boards/renesas/systemh/irq.c b/trunk/arch/sh/boards/renesas/systemh/irq.c index 8372d967f601..845979181059 100644 --- a/trunk/arch/sh/boards/renesas/systemh/irq.c +++ b/trunk/arch/sh/boards/renesas/systemh/irq.c @@ -9,6 +9,7 @@ * Jonathan Short. */ +#include #include #include diff --git a/trunk/arch/sh/boards/se/7300/io.c b/trunk/arch/sh/boards/se/7300/io.c index f449a94ddffd..3c89def46480 100644 --- a/trunk/arch/sh/boards/se/7300/io.c +++ b/trunk/arch/sh/boards/se/7300/io.c @@ -8,6 +8,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/sh/boards/se/7300/irq.c b/trunk/arch/sh/boards/se/7300/irq.c index 216a78d1a108..96c8c23d6c93 100644 --- a/trunk/arch/sh/boards/se/7300/irq.c +++ b/trunk/arch/sh/boards/se/7300/irq.c @@ -7,6 +7,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/sh/boards/se/7300/led.c b/trunk/arch/sh/boards/se/7300/led.c index ad51f0a9c1e3..02c7f846c84c 100644 --- a/trunk/arch/sh/boards/se/7300/led.c +++ b/trunk/arch/sh/boards/se/7300/led.c @@ -11,6 +11,7 @@ * This file contains Solution Engine specific LED code. */ +#include #include #include diff --git a/trunk/arch/sh/boards/se/7300/setup.c b/trunk/arch/sh/boards/se/7300/setup.c index ebcd98d4c081..08536bc224dc 100644 --- a/trunk/arch/sh/boards/se/7300/setup.c +++ b/trunk/arch/sh/boards/se/7300/setup.c @@ -7,6 +7,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/sh/boards/se/73180/io.c b/trunk/arch/sh/boards/se/73180/io.c index 755df5ac4a4e..73648cbe3678 100644 --- a/trunk/arch/sh/boards/se/73180/io.c +++ b/trunk/arch/sh/boards/se/73180/io.c @@ -8,6 +8,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/sh/boards/se/73180/irq.c b/trunk/arch/sh/boards/se/73180/irq.c index 4344d0ef24aa..402735c7c898 100644 --- a/trunk/arch/sh/boards/se/73180/irq.c +++ b/trunk/arch/sh/boards/se/73180/irq.c @@ -10,6 +10,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/sh/boards/se/73180/led.c b/trunk/arch/sh/boards/se/73180/led.c index 610439fde6ee..1e8f1cf3e10f 100644 --- a/trunk/arch/sh/boards/se/73180/led.c +++ b/trunk/arch/sh/boards/se/73180/led.c @@ -11,6 +11,7 @@ * This file contains Solution Engine specific LED code. */ +#include #include #include diff --git a/trunk/arch/sh/boards/se/73180/setup.c b/trunk/arch/sh/boards/se/73180/setup.c index cdb7b5f8d942..07fa90c38a06 100644 --- a/trunk/arch/sh/boards/se/73180/setup.c +++ b/trunk/arch/sh/boards/se/73180/setup.c @@ -9,6 +9,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/sh/boards/se/770x/irq.c b/trunk/arch/sh/boards/se/770x/irq.c index 3e558716ce10..210897b315f4 100644 --- a/trunk/arch/sh/boards/se/770x/irq.c +++ b/trunk/arch/sh/boards/se/770x/irq.c @@ -7,6 +7,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/sh/boards/se/770x/led.c b/trunk/arch/sh/boards/se/770x/led.c index 3cddbda025fc..5c64e8ab2cfb 100644 --- a/trunk/arch/sh/boards/se/770x/led.c +++ b/trunk/arch/sh/boards/se/770x/led.c @@ -9,6 +9,7 @@ * This file contains Solution Engine specific LED code. */ +#include #include static void mach_led(int position, int value) diff --git a/trunk/arch/sh/boards/se/770x/mach.c b/trunk/arch/sh/boards/se/770x/mach.c index 6ec07bd3dcf1..f9b4c56cc47e 100644 --- a/trunk/arch/sh/boards/se/770x/mach.c +++ b/trunk/arch/sh/boards/se/770x/mach.c @@ -9,6 +9,7 @@ * Machine vector for the Hitachi SolutionEngine */ +#include #include #include diff --git a/trunk/arch/sh/boards/se/770x/setup.c b/trunk/arch/sh/boards/se/770x/setup.c index 7d1a071727cc..2bed46fb607d 100644 --- a/trunk/arch/sh/boards/se/770x/setup.c +++ b/trunk/arch/sh/boards/se/770x/setup.c @@ -8,6 +8,7 @@ * */ +#include #include #include diff --git a/trunk/arch/sh/boards/se/7751/irq.c b/trunk/arch/sh/boards/se/7751/irq.c index bf6c023615df..ad71f3e66c11 100644 --- a/trunk/arch/sh/boards/se/7751/irq.c +++ b/trunk/arch/sh/boards/se/7751/irq.c @@ -9,6 +9,7 @@ * Ian da Silva and Jeremy Siegel, 2001. */ +#include #include #include #include diff --git a/trunk/arch/sh/boards/se/7751/led.c b/trunk/arch/sh/boards/se/7751/led.c index a878726d3c7c..0c788230cf8f 100644 --- a/trunk/arch/sh/boards/se/7751/led.c +++ b/trunk/arch/sh/boards/se/7751/led.c @@ -9,6 +9,7 @@ * This file contains Solution Engine specific LED code. */ +#include #include static void mach_led(int position, int value) diff --git a/trunk/arch/sh/boards/se/7751/mach.c b/trunk/arch/sh/boards/se/7751/mach.c index 62d8d3e62590..16d386b7e3bf 100644 --- a/trunk/arch/sh/boards/se/7751/mach.c +++ b/trunk/arch/sh/boards/se/7751/mach.c @@ -9,6 +9,7 @@ * Machine vector for the Hitachi 7751 SolutionEngine */ +#include #include #include diff --git a/trunk/arch/sh/boards/se/7751/pci.c b/trunk/arch/sh/boards/se/7751/pci.c index 3ee03014dea3..1f273efd2cf5 100644 --- a/trunk/arch/sh/boards/se/7751/pci.c +++ b/trunk/arch/sh/boards/se/7751/pci.c @@ -11,6 +11,7 @@ * PCI initialization for the Hitachi SH7751 Solution Engine board (MS7751SE01) */ +#include #include #include #include diff --git a/trunk/arch/sh/boards/se/7751/setup.c b/trunk/arch/sh/boards/se/7751/setup.c index 48dc5aee67d4..9d111bb884f9 100644 --- a/trunk/arch/sh/boards/se/7751/setup.c +++ b/trunk/arch/sh/boards/se/7751/setup.c @@ -9,6 +9,7 @@ * Ian da Silva and Jeremy Siegel, 2001. */ +#include #include #include diff --git a/trunk/arch/sh/boards/sh03/led.c b/trunk/arch/sh/boards/sh03/led.c index d38562ad6be8..c851b0bec80f 100644 --- a/trunk/arch/sh/boards/sh03/led.c +++ b/trunk/arch/sh/boards/sh03/led.c @@ -6,6 +6,7 @@ * This file contains Interface CTP/PCI-SH03 specific LED code. */ +#include #include /* Cycle the LED's in the clasic Knightrider/Sun pattern */ diff --git a/trunk/arch/sh/boards/sh03/setup.c b/trunk/arch/sh/boards/sh03/setup.c index 60290f8f289c..d2a08ca5eb85 100644 --- a/trunk/arch/sh/boards/sh03/setup.c +++ b/trunk/arch/sh/boards/sh03/setup.c @@ -5,6 +5,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/sh/boards/sh2000/setup.c b/trunk/arch/sh/boards/sh2000/setup.c index 2fe6a11765e9..a290b1d09fb2 100644 --- a/trunk/arch/sh/boards/sh2000/setup.c +++ b/trunk/arch/sh/boards/sh2000/setup.c @@ -7,6 +7,7 @@ * */ +#include #include #include diff --git a/trunk/arch/sh/boards/snapgear/setup.c b/trunk/arch/sh/boards/snapgear/setup.c index 046b896d04f9..08fc98342a0b 100644 --- a/trunk/arch/sh/boards/snapgear/setup.c +++ b/trunk/arch/sh/boards/snapgear/setup.c @@ -14,6 +14,7 @@ */ /****************************************************************************/ +#include #include #include #include diff --git a/trunk/arch/sh/boards/superh/microdev/io.c b/trunk/arch/sh/boards/superh/microdev/io.c index 4836b9422e27..1ed7f880b8c7 100644 --- a/trunk/arch/sh/boards/superh/microdev/io.c +++ b/trunk/arch/sh/boards/superh/microdev/io.c @@ -11,6 +11,7 @@ * License. See linux/COPYING for more information. */ +#include #include #include #include diff --git a/trunk/arch/sh/boards/superh/microdev/irq.c b/trunk/arch/sh/boards/superh/microdev/irq.c index 236398fbc083..cb5999425d16 100644 --- a/trunk/arch/sh/boards/superh/microdev/irq.c +++ b/trunk/arch/sh/boards/superh/microdev/irq.c @@ -9,6 +9,7 @@ * License. See linux/COPYING for more information. */ +#include #include #include diff --git a/trunk/arch/sh/boards/superh/microdev/led.c b/trunk/arch/sh/boards/superh/microdev/led.c index a38f5351bd16..52a98e69d3f0 100644 --- a/trunk/arch/sh/boards/superh/microdev/led.c +++ b/trunk/arch/sh/boards/superh/microdev/led.c @@ -9,6 +9,7 @@ * */ +#include #include #define LED_REGISTER 0xa6104d20 diff --git a/trunk/arch/sh/boards/superh/microdev/setup.c b/trunk/arch/sh/boards/superh/microdev/setup.c index 61b402a3f5d7..892b14d31405 100644 --- a/trunk/arch/sh/boards/superh/microdev/setup.c +++ b/trunk/arch/sh/boards/superh/microdev/setup.c @@ -11,6 +11,7 @@ * License. See linux/COPYING for more information. */ +#include #include #include #include diff --git a/trunk/arch/sh/boards/unknown/setup.c b/trunk/arch/sh/boards/unknown/setup.c index c5e4ed10876b..02e84f03f45c 100644 --- a/trunk/arch/sh/boards/unknown/setup.c +++ b/trunk/arch/sh/boards/unknown/setup.c @@ -12,6 +12,7 @@ * method to start debugging a new board during bring-up until proper board * setup code is written. */ +#include #include #include #include diff --git a/trunk/arch/sh/boot/compressed/head.S b/trunk/arch/sh/boot/compressed/head.S index 4c26a192277d..88db04d325fb 100644 --- a/trunk/arch/sh/boot/compressed/head.S +++ b/trunk/arch/sh/boot/compressed/head.S @@ -7,6 +7,7 @@ .text +#include #include .global startup diff --git a/trunk/arch/sh/boot/compressed/misc.c b/trunk/arch/sh/boot/compressed/misc.c index f2fed5ce5cc3..211e9110074f 100644 --- a/trunk/arch/sh/boot/compressed/misc.c +++ b/trunk/arch/sh/boot/compressed/misc.c @@ -11,6 +11,7 @@ * Modified to use standard LinuxSH BIOS by Greg Banks 7Jul2000 */ +#include #include #ifdef CONFIG_SH_STANDARD_BIOS #include diff --git a/trunk/arch/sh/cchips/hd6446x/hd64461/io.c b/trunk/arch/sh/cchips/hd6446x/hd64461/io.c index ac3062671db7..4c062d6b7a97 100644 --- a/trunk/arch/sh/cchips/hd6446x/hd64461/io.c +++ b/trunk/arch/sh/cchips/hd6446x/hd64461/io.c @@ -4,6 +4,7 @@ * Typical I/O routines for HD64461 system. */ +#include #include #include diff --git a/trunk/arch/sh/cchips/hd6446x/hd64461/setup.c b/trunk/arch/sh/cchips/hd6446x/hd64461/setup.c index 9b361a91a1a6..724db04cb392 100644 --- a/trunk/arch/sh/cchips/hd6446x/hd64461/setup.c +++ b/trunk/arch/sh/cchips/hd6446x/hd64461/setup.c @@ -4,6 +4,7 @@ * Hitachi HD64461 companion chip support */ +#include #include #include #include diff --git a/trunk/arch/sh/cchips/hd6446x/hd64465/io.c b/trunk/arch/sh/cchips/hd6446x/hd64465/io.c index 58704d066ae2..84cb142def0b 100644 --- a/trunk/arch/sh/cchips/hd6446x/hd64465/io.c +++ b/trunk/arch/sh/cchips/hd6446x/hd64465/io.c @@ -9,6 +9,7 @@ * Typical I/O routines for HD64465 system. */ +#include #include #include #include diff --git a/trunk/arch/sh/cchips/hd6446x/hd64465/setup.c b/trunk/arch/sh/cchips/hd6446x/hd64465/setup.c index b2b0aa48a3a7..cf9142c620b7 100644 --- a/trunk/arch/sh/cchips/hd6446x/hd64465/setup.c +++ b/trunk/arch/sh/cchips/hd6446x/hd64465/setup.c @@ -9,6 +9,7 @@ * Copyright (C) 2000 YAEGASHI Takeshi */ +#include #include #include #include diff --git a/trunk/arch/sh/cchips/voyagergx/irq.c b/trunk/arch/sh/cchips/voyagergx/irq.c index 6a74464dab2d..892214bade19 100644 --- a/trunk/arch/sh/cchips/voyagergx/irq.c +++ b/trunk/arch/sh/cchips/voyagergx/irq.c @@ -21,6 +21,7 @@ #undef DEBUG +#include #include #include #include diff --git a/trunk/arch/sh/drivers/dma/dma-sh.c b/trunk/arch/sh/drivers/dma/dma-sh.c index fecd8f8d0466..cca26c4c9d1b 100644 --- a/trunk/arch/sh/drivers/dma/dma-sh.c +++ b/trunk/arch/sh/drivers/dma/dma-sh.c @@ -12,6 +12,7 @@ * for more details. */ +#include #include #include #include diff --git a/trunk/arch/sh/drivers/pci/dma-dreamcast.c b/trunk/arch/sh/drivers/pci/dma-dreamcast.c index 6acf02b9375b..e12418bb1fa5 100644 --- a/trunk/arch/sh/drivers/pci/dma-dreamcast.c +++ b/trunk/arch/sh/drivers/pci/dma-dreamcast.c @@ -15,6 +15,7 @@ * for more details. */ +#include #include #include #include diff --git a/trunk/arch/sh/drivers/pci/fixups-dreamcast.c b/trunk/arch/sh/drivers/pci/fixups-dreamcast.c index 63b1c6f4b8d2..cf30e2fa51be 100644 --- a/trunk/arch/sh/drivers/pci/fixups-dreamcast.c +++ b/trunk/arch/sh/drivers/pci/fixups-dreamcast.c @@ -15,6 +15,7 @@ * for more details. */ +#include #include #include #include diff --git a/trunk/arch/sh/drivers/pci/ops-bigsur.c b/trunk/arch/sh/drivers/pci/ops-bigsur.c index ae82c6ca05e5..9b43da67804b 100644 --- a/trunk/arch/sh/drivers/pci/ops-bigsur.c +++ b/trunk/arch/sh/drivers/pci/ops-bigsur.c @@ -11,6 +11,7 @@ * PCI initialization for the Hitachi Big Sur Evaluation Board */ +#include #include #include #include diff --git a/trunk/arch/sh/drivers/pci/ops-dreamcast.c b/trunk/arch/sh/drivers/pci/ops-dreamcast.c index 23d52791917e..69af80b93e3f 100644 --- a/trunk/arch/sh/drivers/pci/ops-dreamcast.c +++ b/trunk/arch/sh/drivers/pci/ops-dreamcast.c @@ -15,6 +15,7 @@ * for more details. */ +#include #include #include #include diff --git a/trunk/arch/sh/drivers/pci/ops-rts7751r2d.c b/trunk/arch/sh/drivers/pci/ops-rts7751r2d.c index 83171d10141a..beafa11f4d0c 100644 --- a/trunk/arch/sh/drivers/pci/ops-rts7751r2d.c +++ b/trunk/arch/sh/drivers/pci/ops-rts7751r2d.c @@ -11,6 +11,7 @@ * PCI initialization for the Renesas SH7751R RTS7751R2D board */ +#include #include #include #include diff --git a/trunk/arch/sh/drivers/pci/ops-sh03.c b/trunk/arch/sh/drivers/pci/ops-sh03.c index e58d556e5f94..df2199732348 100644 --- a/trunk/arch/sh/drivers/pci/ops-sh03.c +++ b/trunk/arch/sh/drivers/pci/ops-sh03.c @@ -4,6 +4,7 @@ * PCI initialization for the Interface CTP/PCI-SH03 board */ +#include #include #include #include diff --git a/trunk/arch/sh/drivers/pci/ops-snapgear.c b/trunk/arch/sh/drivers/pci/ops-snapgear.c index 3cbd14dd28fe..6fdb9765c99a 100644 --- a/trunk/arch/sh/drivers/pci/ops-snapgear.c +++ b/trunk/arch/sh/drivers/pci/ops-snapgear.c @@ -13,6 +13,7 @@ * PCI initialization for the SnapGear boards */ +#include #include #include #include diff --git a/trunk/arch/sh/drivers/pci/pci-sh7751.c b/trunk/arch/sh/drivers/pci/pci-sh7751.c index 682f3dae305d..30b14ac7ae5a 100644 --- a/trunk/arch/sh/drivers/pci/pci-sh7751.c +++ b/trunk/arch/sh/drivers/pci/pci-sh7751.c @@ -15,6 +15,7 @@ #undef DEBUG +#include #include #include #include diff --git a/trunk/arch/sh/drivers/pci/pci-st40.c b/trunk/arch/sh/drivers/pci/pci-st40.c index 21f3017e5c28..cb6752131156 100644 --- a/trunk/arch/sh/drivers/pci/pci-st40.c +++ b/trunk/arch/sh/drivers/pci/pci-st40.c @@ -7,6 +7,7 @@ * Support functions for the ST40 PCI hardware. */ +#include #include #include #include diff --git a/trunk/arch/sh/kernel/cf-enabler.c b/trunk/arch/sh/kernel/cf-enabler.c index f1f9ab87f0b0..7a3b18faa277 100644 --- a/trunk/arch/sh/kernel/cf-enabler.c +++ b/trunk/arch/sh/kernel/cf-enabler.c @@ -9,6 +9,7 @@ * Enable the CF configuration. */ +#include #include #include diff --git a/trunk/arch/sh/kernel/cpu/irq/ipr.c b/trunk/arch/sh/kernel/cpu/irq/ipr.c index 0f545941fb4f..0373b65c77f9 100644 --- a/trunk/arch/sh/kernel/cpu/irq/ipr.c +++ b/trunk/arch/sh/kernel/cpu/irq/ipr.c @@ -15,6 +15,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/sh/kernel/cpu/irq/pint.c b/trunk/arch/sh/kernel/cpu/irq/pint.c index 80cd8108d36a..714963a25bba 100644 --- a/trunk/arch/sh/kernel/cpu/irq/pint.c +++ b/trunk/arch/sh/kernel/cpu/irq/pint.c @@ -10,6 +10,7 @@ * for more details. */ +#include #include #include #include diff --git a/trunk/arch/sh/kernel/cpu/sh3/ex.S b/trunk/arch/sh/kernel/cpu/sh3/ex.S index cc04e9e239ff..966c0858b714 100644 --- a/trunk/arch/sh/kernel/cpu/sh3/ex.S +++ b/trunk/arch/sh/kernel/cpu/sh3/ex.S @@ -12,6 +12,7 @@ * */ #include +#include .align 2 .data diff --git a/trunk/arch/sh/kernel/cpu/sh4/ex.S b/trunk/arch/sh/kernel/cpu/sh4/ex.S index 26a27df06505..8221e9d15515 100644 --- a/trunk/arch/sh/kernel/cpu/sh4/ex.S +++ b/trunk/arch/sh/kernel/cpu/sh4/ex.S @@ -12,6 +12,7 @@ * */ #include +#include .align 2 .data diff --git a/trunk/arch/sh/kernel/cpu/sh4/sq.c b/trunk/arch/sh/kernel/cpu/sh4/sq.c index 781dbb11c038..83a4f91bce5a 100644 --- a/trunk/arch/sh/kernel/cpu/sh4/sq.c +++ b/trunk/arch/sh/kernel/cpu/sh4/sq.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/sh/kernel/entry.S b/trunk/arch/sh/kernel/entry.S index 7dfd2ba75f7f..a440d36ee618 100644 --- a/trunk/arch/sh/kernel/entry.S +++ b/trunk/arch/sh/kernel/entry.S @@ -13,6 +13,7 @@ #include #include +#include #include #include #include diff --git a/trunk/arch/sh/kernel/ptrace.c b/trunk/arch/sh/kernel/ptrace.c index f7eebbde3291..3887b4f6feb2 100644 --- a/trunk/arch/sh/kernel/ptrace.c +++ b/trunk/arch/sh/kernel/ptrace.c @@ -9,6 +9,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/sh/kernel/relocate_kernel.S b/trunk/arch/sh/kernel/relocate_kernel.S index 8221b37c9773..b0695cffec6e 100644 --- a/trunk/arch/sh/kernel/relocate_kernel.S +++ b/trunk/arch/sh/kernel/relocate_kernel.S @@ -8,6 +8,7 @@ * Version 2. See the file COPYING for more details. */ +#include #include #define PAGE_SIZE 4096 /* must be same value as in */ diff --git a/trunk/arch/sh/kernel/sh_ksyms.c b/trunk/arch/sh/kernel/sh_ksyms.c index 245ed8f945e8..d5d032533a8b 100644 --- a/trunk/arch/sh/kernel/sh_ksyms.c +++ b/trunk/arch/sh/kernel/sh_ksyms.c @@ -1,3 +1,4 @@ +#include #include #include #include diff --git a/trunk/arch/sh/kernel/smp.c b/trunk/arch/sh/kernel/smp.c index 6c0fb7c4af11..62c7d1c0ad7b 100644 --- a/trunk/arch/sh/kernel/smp.c +++ b/trunk/arch/sh/kernel/smp.c @@ -10,6 +10,7 @@ * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. */ +#include #include #include #include diff --git a/trunk/arch/sh/kernel/time.c b/trunk/arch/sh/kernel/time.c index a1589f85499d..314a275c04e0 100644 --- a/trunk/arch/sh/kernel/time.c +++ b/trunk/arch/sh/kernel/time.c @@ -10,6 +10,7 @@ * Copyright (C) 1991, 1992, 1995 Linus Torvalds */ +#include #include #include #include diff --git a/trunk/arch/sh/kernel/traps.c b/trunk/arch/sh/kernel/traps.c index d9db1180f770..7eb06719d844 100644 --- a/trunk/arch/sh/kernel/traps.c +++ b/trunk/arch/sh/kernel/traps.c @@ -12,6 +12,7 @@ * 'Traps.c' handles hardware traps and faults after we have saved some * state in 'entry.S'. */ +#include #include #include #include diff --git a/trunk/arch/sh/kernel/vmlinux.lds.S b/trunk/arch/sh/kernel/vmlinux.lds.S index 95fdd9135fcf..51bdc1cf7838 100644 --- a/trunk/arch/sh/kernel/vmlinux.lds.S +++ b/trunk/arch/sh/kernel/vmlinux.lds.S @@ -2,6 +2,7 @@ * ld script to make SuperH Linux kernel * Written by Niibe Yutaka */ +#include #include #ifdef CONFIG_CPU_LITTLE_ENDIAN diff --git a/trunk/arch/sh/lib/memcpy-sh4.S b/trunk/arch/sh/lib/memcpy-sh4.S index db6b736537ad..55f227441f9e 100644 --- a/trunk/arch/sh/lib/memcpy-sh4.S +++ b/trunk/arch/sh/lib/memcpy-sh4.S @@ -8,6 +8,7 @@ * */ #include +#include /* * void *memcpy(void *dst, const void *src, size_t n); diff --git a/trunk/arch/sh/mm/cache-sh4.c b/trunk/arch/sh/mm/cache-sh4.c index 524cea5b47f9..ab833adf28c3 100644 --- a/trunk/arch/sh/mm/cache-sh4.c +++ b/trunk/arch/sh/mm/cache-sh4.c @@ -10,6 +10,7 @@ * for more details. */ +#include #include #include #include diff --git a/trunk/arch/sh/mm/clear_page.S b/trunk/arch/sh/mm/clear_page.S index 08acead7b2a1..ae58a61f0e66 100644 --- a/trunk/arch/sh/mm/clear_page.S +++ b/trunk/arch/sh/mm/clear_page.S @@ -6,6 +6,7 @@ * Copyright (C) 2001, 2002 Niibe Yutaka * */ +#include #include /* diff --git a/trunk/arch/sh/mm/extable.c b/trunk/arch/sh/mm/extable.c index c1cf4463d09d..505ede7c21bf 100644 --- a/trunk/arch/sh/mm/extable.c +++ b/trunk/arch/sh/mm/extable.c @@ -4,6 +4,7 @@ * linux/arch/i386/mm/extable.c */ +#include #include #include diff --git a/trunk/arch/sh/mm/hugetlbpage.c b/trunk/arch/sh/mm/hugetlbpage.c index 2a85bc15a412..a3568fd51508 100644 --- a/trunk/arch/sh/mm/hugetlbpage.c +++ b/trunk/arch/sh/mm/hugetlbpage.c @@ -8,6 +8,7 @@ * Copyright (C) 2002, 2003 David S. Miller (davem@redhat.com) */ +#include #include #include #include diff --git a/trunk/arch/sh/mm/init.c b/trunk/arch/sh/mm/init.c index 8ea27ca4b700..77b4a838fe10 100644 --- a/trunk/arch/sh/mm/init.c +++ b/trunk/arch/sh/mm/init.c @@ -9,6 +9,7 @@ * Copyright (C) 1995 Linus Torvalds */ +#include #include #include #include diff --git a/trunk/arch/sh/mm/pg-sh4.c b/trunk/arch/sh/mm/pg-sh4.c index c776b60fc250..e5907c7330e5 100644 --- a/trunk/arch/sh/mm/pg-sh4.c +++ b/trunk/arch/sh/mm/pg-sh4.c @@ -6,6 +6,7 @@ * * Released under the terms of the GNU GPL v2.0. */ +#include #include #include #include diff --git a/trunk/arch/sh64/boot/compressed/misc.c b/trunk/arch/sh64/boot/compressed/misc.c index ee7a1b6acb83..89dbf45df3c8 100644 --- a/trunk/arch/sh64/boot/compressed/misc.c +++ b/trunk/arch/sh64/boot/compressed/misc.c @@ -9,6 +9,7 @@ * Adapted for SHmedia from sh by Stuart Menefy, May 2002 */ +#include #include /* cache.c */ diff --git a/trunk/arch/sh64/boot/compressed/vmlinux.lds.S b/trunk/arch/sh64/boot/compressed/vmlinux.lds.S index 59c2ef4aeda5..15a737d9bba8 100644 --- a/trunk/arch/sh64/boot/compressed/vmlinux.lds.S +++ b/trunk/arch/sh64/boot/compressed/vmlinux.lds.S @@ -4,6 +4,7 @@ * Modified by Stuart Menefy from arch/sh/vmlinux.lds.S written by Niibe Yutaka */ +#include #ifdef CONFIG_LITTLE_ENDIAN /* OUTPUT_FORMAT("elf32-sh64l-linux", "elf32-sh64l-linux", "elf32-sh64l-linux") */ diff --git a/trunk/arch/sh64/kernel/alphanum.c b/trunk/arch/sh64/kernel/alphanum.c index 9079d1e94f2b..56d6f9f71524 100644 --- a/trunk/arch/sh64/kernel/alphanum.c +++ b/trunk/arch/sh64/kernel/alphanum.c @@ -9,6 +9,7 @@ * Machine-independent functions for handling 8-digit alphanumeric display * (e.g. Agilent HDSP-253x) */ +#include #include #include diff --git a/trunk/arch/sh64/kernel/entry.S b/trunk/arch/sh64/kernel/entry.S index 40d45346248d..2e2cfe20b426 100644 --- a/trunk/arch/sh64/kernel/entry.S +++ b/trunk/arch/sh64/kernel/entry.S @@ -11,6 +11,7 @@ * */ +#include #include #include diff --git a/trunk/arch/sh64/kernel/head.S b/trunk/arch/sh64/kernel/head.S index f3740ddbc471..cc0b628a9ea7 100644 --- a/trunk/arch/sh64/kernel/head.S +++ b/trunk/arch/sh64/kernel/head.S @@ -20,6 +20,7 @@ * Add early SCIF console DTLB mapping. */ +#include #include #include diff --git a/trunk/arch/sh64/kernel/irq.c b/trunk/arch/sh64/kernel/irq.c index e7e07f8749c9..675776a5477e 100644 --- a/trunk/arch/sh64/kernel/irq.c +++ b/trunk/arch/sh64/kernel/irq.c @@ -15,6 +15,7 @@ * Naturally it's not a 1:1 relation, but there are similarities. */ +#include #include #include #include diff --git a/trunk/arch/sh64/kernel/irq_intc.c b/trunk/arch/sh64/kernel/irq_intc.c index 42c07d2e71d9..fa730f5fe2e6 100644 --- a/trunk/arch/sh64/kernel/irq_intc.c +++ b/trunk/arch/sh64/kernel/irq_intc.c @@ -15,6 +15,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/sh64/kernel/led.c b/trunk/arch/sh64/kernel/led.c index e35d3f667fb4..cf993c4a9fdc 100644 --- a/trunk/arch/sh64/kernel/led.c +++ b/trunk/arch/sh64/kernel/led.c @@ -8,6 +8,7 @@ * * Flash the LEDs */ +#include #include #include diff --git a/trunk/arch/sh64/kernel/pci_sh5.c b/trunk/arch/sh64/kernel/pci_sh5.c index 3c04951ff736..6197879e8578 100644 --- a/trunk/arch/sh64/kernel/pci_sh5.c +++ b/trunk/arch/sh64/kernel/pci_sh5.c @@ -9,6 +9,7 @@ * Support functions for the SH5 PCI hardware. */ +#include #include #include #include diff --git a/trunk/arch/sh64/kernel/process.c b/trunk/arch/sh64/kernel/process.c index dba8e14013b6..1da9c61d6823 100644 --- a/trunk/arch/sh64/kernel/process.c +++ b/trunk/arch/sh64/kernel/process.c @@ -35,6 +35,7 @@ #define __KERNEL_SYSCALLS__ #include +#include #include #include #include diff --git a/trunk/arch/sh64/kernel/ptrace.c b/trunk/arch/sh64/kernel/ptrace.c index 4e95e18b46d9..cd22e9471316 100644 --- a/trunk/arch/sh64/kernel/ptrace.c +++ b/trunk/arch/sh64/kernel/ptrace.c @@ -17,6 +17,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/sh64/kernel/setup.c b/trunk/arch/sh64/kernel/setup.c index 0359fa647bbc..da98d8dbcf95 100644 --- a/trunk/arch/sh64/kernel/setup.c +++ b/trunk/arch/sh64/kernel/setup.c @@ -39,6 +39,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/sh64/kernel/sh_ksyms.c b/trunk/arch/sh64/kernel/sh_ksyms.c index 6efdfa2c3994..6f3a1c946339 100644 --- a/trunk/arch/sh64/kernel/sh_ksyms.c +++ b/trunk/arch/sh64/kernel/sh_ksyms.c @@ -9,6 +9,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/sh64/kernel/time.c b/trunk/arch/sh64/kernel/time.c index ba9eb992f4a5..6b8f4d22abc6 100644 --- a/trunk/arch/sh64/kernel/time.c +++ b/trunk/arch/sh64/kernel/time.c @@ -15,6 +15,7 @@ * Copyright (C) 1991, 1992, 1995 Linus Torvalds */ +#include #include #include #include diff --git a/trunk/arch/sh64/kernel/vmlinux.lds.S b/trunk/arch/sh64/kernel/vmlinux.lds.S index a8fcc3a71585..7d9f7a6339a0 100644 --- a/trunk/arch/sh64/kernel/vmlinux.lds.S +++ b/trunk/arch/sh64/kernel/vmlinux.lds.S @@ -22,6 +22,7 @@ * Remove support for ancient toolchains. */ +#include #include #include #include diff --git a/trunk/arch/sh64/lib/c-checksum.c b/trunk/arch/sh64/lib/c-checksum.c index 53c1cabb3428..a82d8f1a7a64 100644 --- a/trunk/arch/sh64/lib/c-checksum.c +++ b/trunk/arch/sh64/lib/c-checksum.c @@ -7,6 +7,7 @@ #undef DEBUG +#include #include #include #include diff --git a/trunk/arch/sh64/lib/dbg.c b/trunk/arch/sh64/lib/dbg.c index 1326f45f31eb..58087331b8a6 100644 --- a/trunk/arch/sh64/lib/dbg.c +++ b/trunk/arch/sh64/lib/dbg.c @@ -8,6 +8,7 @@ -- Copyright 2004 Richard Curnow (evt_debug etc) -- --------------------------------------------------------------------------*/ +#include #include #include #include diff --git a/trunk/arch/sh64/lib/io.c b/trunk/arch/sh64/lib/io.c index 587baa3dffb9..277e11b10c2b 100644 --- a/trunk/arch/sh64/lib/io.c +++ b/trunk/arch/sh64/lib/io.c @@ -8,6 +8,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/sh64/lib/iomap.c b/trunk/arch/sh64/lib/iomap.c index 5cd3d5e9c762..83c5f0c04958 100644 --- a/trunk/arch/sh64/lib/iomap.c +++ b/trunk/arch/sh64/lib/iomap.c @@ -9,6 +9,7 @@ * License. See the file "COPYING" in the main directory of this archive * for more details. */ +#include #include #include diff --git a/trunk/arch/sh64/lib/memcpy.c b/trunk/arch/sh64/lib/memcpy.c index fba436a92bfa..c785d0aa194d 100644 --- a/trunk/arch/sh64/lib/memcpy.c +++ b/trunk/arch/sh64/lib/memcpy.c @@ -6,6 +6,7 @@ * */ +#include #include #include diff --git a/trunk/arch/sh64/lib/udelay.c b/trunk/arch/sh64/lib/udelay.c index 327653914007..dad2f254efee 100644 --- a/trunk/arch/sh64/lib/udelay.c +++ b/trunk/arch/sh64/lib/udelay.c @@ -10,6 +10,7 @@ * License. See the file "COPYING" in the main directory of this archive * for more details. */ +#include #include #include diff --git a/trunk/arch/sh64/mach-cayman/iomap.c b/trunk/arch/sh64/mach-cayman/iomap.c index 2d06e9a55137..d6a538c70709 100644 --- a/trunk/arch/sh64/mach-cayman/iomap.c +++ b/trunk/arch/sh64/mach-cayman/iomap.c @@ -9,6 +9,7 @@ * License. See the file "COPYING" in the main directory of this archive * for more details. */ +#include #include #include #include diff --git a/trunk/arch/sh64/mach-cayman/irq.c b/trunk/arch/sh64/mach-cayman/irq.c index cac94219dd5f..05eb7cdc26f0 100644 --- a/trunk/arch/sh64/mach-cayman/irq.c +++ b/trunk/arch/sh64/mach-cayman/irq.c @@ -12,6 +12,7 @@ * Copyright (C) 2002 Stuart Menefy */ +#include #include #include #include diff --git a/trunk/arch/sh64/mach-cayman/setup.c b/trunk/arch/sh64/mach-cayman/setup.c index d84895dda3cd..c793245629ad 100644 --- a/trunk/arch/sh64/mach-cayman/setup.c +++ b/trunk/arch/sh64/mach-cayman/setup.c @@ -21,6 +21,7 @@ #include #include +#include #include #include #include diff --git a/trunk/arch/sh64/mach-harp/setup.c b/trunk/arch/sh64/mach-harp/setup.c index fcd90afac297..3938a65c4b25 100644 --- a/trunk/arch/sh64/mach-harp/setup.c +++ b/trunk/arch/sh64/mach-harp/setup.c @@ -20,6 +20,7 @@ #include #include +#include #include #include #include diff --git a/trunk/arch/sh64/mach-romram/setup.c b/trunk/arch/sh64/mach-romram/setup.c index eb98a1640cc1..a9ba03fc5bed 100644 --- a/trunk/arch/sh64/mach-romram/setup.c +++ b/trunk/arch/sh64/mach-romram/setup.c @@ -23,6 +23,7 @@ #include #include +#include #include #include #include diff --git a/trunk/arch/sh64/mach-sim/setup.c b/trunk/arch/sh64/mach-sim/setup.c index f09400c1ad1b..a68639cb4e5a 100644 --- a/trunk/arch/sh64/mach-sim/setup.c +++ b/trunk/arch/sh64/mach-sim/setup.c @@ -17,6 +17,7 @@ #include #include +#include #include #include #include diff --git a/trunk/arch/sh64/mm/cache.c b/trunk/arch/sh64/mm/cache.c index 421487cfff4c..c0c1b21350d8 100644 --- a/trunk/arch/sh64/mm/cache.c +++ b/trunk/arch/sh64/mm/cache.c @@ -13,6 +13,7 @@ /****************************************************************************/ +#include #include #include #include diff --git a/trunk/arch/sh64/mm/extable.c b/trunk/arch/sh64/mm/extable.c index a2e6e0563772..9da50e28b3fa 100644 --- a/trunk/arch/sh64/mm/extable.c +++ b/trunk/arch/sh64/mm/extable.c @@ -10,6 +10,7 @@ * * Cloned from the 2.5 SH version.. */ +#include #include #include #include diff --git a/trunk/arch/sh64/mm/hugetlbpage.c b/trunk/arch/sh64/mm/hugetlbpage.c index 187cf01750b8..3d89f2a6c785 100644 --- a/trunk/arch/sh64/mm/hugetlbpage.c +++ b/trunk/arch/sh64/mm/hugetlbpage.c @@ -8,6 +8,7 @@ * Copyright (C) 2002, 2003 David S. Miller (davem@redhat.com) */ +#include #include #include #include diff --git a/trunk/arch/sparc/kernel/asm-offsets.c b/trunk/arch/sparc/kernel/asm-offsets.c index 29d7cfd1c970..1f55231f07de 100644 --- a/trunk/arch/sparc/kernel/asm-offsets.c +++ b/trunk/arch/sparc/kernel/asm-offsets.c @@ -10,6 +10,7 @@ * On sparc, thread_info data is static and TI_XXX offsets are computed by hand. */ +#include #include // #include diff --git a/trunk/arch/sparc/kernel/auxio.c b/trunk/arch/sparc/kernel/auxio.c index 118f3eca373e..d3b3648362c0 100644 --- a/trunk/arch/sparc/kernel/auxio.c +++ b/trunk/arch/sparc/kernel/auxio.c @@ -5,6 +5,7 @@ #include #include +#include #include #include #include diff --git a/trunk/arch/sparc/kernel/cpu.c b/trunk/arch/sparc/kernel/cpu.c index 259a559d4cea..d7bfc61d2879 100644 --- a/trunk/arch/sparc/kernel/cpu.c +++ b/trunk/arch/sparc/kernel/cpu.c @@ -4,6 +4,7 @@ * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) */ +#include #include #include #include diff --git a/trunk/arch/sparc/kernel/devices.c b/trunk/arch/sparc/kernel/devices.c index adba9dfee35e..fcb0c049c3fe 100644 --- a/trunk/arch/sparc/kernel/devices.c +++ b/trunk/arch/sparc/kernel/devices.c @@ -7,6 +7,7 @@ * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) */ +#include #include #include #include diff --git a/trunk/arch/sparc/kernel/ebus.c b/trunk/arch/sparc/kernel/ebus.c index 81c0cbd96ff0..a7a4892956c8 100644 --- a/trunk/arch/sparc/kernel/ebus.c +++ b/trunk/arch/sparc/kernel/ebus.c @@ -7,6 +7,7 @@ * Fixes for different platforms by Pete Zaitcev. */ +#include #include #include #include diff --git a/trunk/arch/sparc/kernel/entry.S b/trunk/arch/sparc/kernel/entry.S index a4edff4c3be3..887f6a160c58 100644 --- a/trunk/arch/sparc/kernel/entry.S +++ b/trunk/arch/sparc/kernel/entry.S @@ -8,6 +8,7 @@ * Copyright (C) 1997 Anton Blanchard (anton@progsoc.uts.edu.au) */ +#include #include #include diff --git a/trunk/arch/sparc/kernel/head.S b/trunk/arch/sparc/kernel/head.S index 9a219e8b5ddb..42d3de59d19b 100644 --- a/trunk/arch/sparc/kernel/head.S +++ b/trunk/arch/sparc/kernel/head.S @@ -11,6 +11,7 @@ */ #include +#include #include #include diff --git a/trunk/arch/sparc/kernel/idprom.c b/trunk/arch/sparc/kernel/idprom.c index 3a5bad525394..2e1b0f6e99d4 100644 --- a/trunk/arch/sparc/kernel/idprom.c +++ b/trunk/arch/sparc/kernel/idprom.c @@ -5,6 +5,7 @@ * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) */ +#include #include #include #include diff --git a/trunk/arch/sparc/kernel/ioport.c b/trunk/arch/sparc/kernel/ioport.c index 8654b446ac9e..79d177149fdb 100644 --- a/trunk/arch/sparc/kernel/ioport.c +++ b/trunk/arch/sparc/kernel/ioport.c @@ -26,7 +26,6 @@ */ #include -#include #include #include #include @@ -41,7 +40,6 @@ #include #include #include -#include #include #include #include @@ -145,21 +143,6 @@ void __iomem *sbus_ioremap(struct resource *phyres, unsigned long offset, phyres->start + offset, size, name); } -void __iomem *of_ioremap(struct resource *res, unsigned long offset, - unsigned long size, char *name) -{ - return _sparc_alloc_io(res->flags & 0xF, - res->start + offset, - size, name); -} -EXPORT_SYMBOL(of_ioremap); - -void of_iounmap(void __iomem *base, unsigned long size) -{ - iounmap(base); -} -EXPORT_SYMBOL(of_iounmap); - /* */ void sbus_iounmap(volatile void __iomem *addr, unsigned long size) diff --git a/trunk/arch/sparc/kernel/irq.c b/trunk/arch/sparc/kernel/irq.c index b81af076ef48..aac8af5aae51 100644 --- a/trunk/arch/sparc/kernel/irq.c +++ b/trunk/arch/sparc/kernel/irq.c @@ -11,6 +11,7 @@ * Copyright (C) 1998-2000 Anton Blanchard (anton@samba.org) */ +#include #include #include #include diff --git a/trunk/arch/sparc/kernel/of_device.c b/trunk/arch/sparc/kernel/of_device.c index bc956c530376..80a809478781 100644 --- a/trunk/arch/sparc/kernel/of_device.c +++ b/trunk/arch/sparc/kernel/of_device.c @@ -129,26 +129,6 @@ static int of_device_resume(struct device * dev) return error; } -static int node_match(struct device *dev, void *data) -{ - struct of_device *op = to_of_device(dev); - struct device_node *dp = data; - - return (op->node == dp); -} - -struct of_device *of_find_device_by_node(struct device_node *dp) -{ - struct device *dev = bus_find_device(&of_bus_type, NULL, - dp, node_match); - - if (dev) - return to_of_device(dev); - - return NULL; -} -EXPORT_SYMBOL(of_find_device_by_node); - #ifdef CONFIG_PCI struct bus_type ebus_bus_type = { .name = "ebus", @@ -173,459 +153,10 @@ struct bus_type sbus_bus_type = { EXPORT_SYMBOL(sbus_bus_type); #endif -struct bus_type of_bus_type = { - .name = "of", - .match = of_platform_bus_match, - .probe = of_device_probe, - .remove = of_device_remove, - .suspend = of_device_suspend, - .resume = of_device_resume, -}; -EXPORT_SYMBOL(of_bus_type); - -static inline u64 of_read_addr(u32 *cell, int size) -{ - u64 r = 0; - while (size--) - r = (r << 32) | *(cell++); - return r; -} - -static void __init get_cells(struct device_node *dp, - int *addrc, int *sizec) -{ - if (addrc) - *addrc = of_n_addr_cells(dp); - if (sizec) - *sizec = of_n_size_cells(dp); -} - -/* Max address size we deal with */ -#define OF_MAX_ADDR_CELLS 4 - -struct of_bus { - const char *name; - const char *addr_prop_name; - int (*match)(struct device_node *parent); - void (*count_cells)(struct device_node *child, - int *addrc, int *sizec); - u64 (*map)(u32 *addr, u32 *range, int na, int ns, int pna); - int (*translate)(u32 *addr, u64 offset, int na); - unsigned int (*get_flags)(u32 *addr); -}; - -/* - * Default translator (generic bus) - */ - -static void of_bus_default_count_cells(struct device_node *dev, - int *addrc, int *sizec) -{ - get_cells(dev, addrc, sizec); -} - -static u64 of_bus_default_map(u32 *addr, u32 *range, int na, int ns, int pna) -{ - u64 cp, s, da; - - cp = of_read_addr(range, na); - s = of_read_addr(range + na + pna, ns); - da = of_read_addr(addr, na); - - if (da < cp || da >= (cp + s)) - return OF_BAD_ADDR; - return da - cp; -} - -static int of_bus_default_translate(u32 *addr, u64 offset, int na) -{ - u64 a = of_read_addr(addr, na); - memset(addr, 0, na * 4); - a += offset; - if (na > 1) - addr[na - 2] = a >> 32; - addr[na - 1] = a & 0xffffffffu; - - return 0; -} - -static unsigned int of_bus_default_get_flags(u32 *addr) -{ - return IORESOURCE_MEM; -} - - -/* - * PCI bus specific translator - */ - -static int of_bus_pci_match(struct device_node *np) -{ - return !strcmp(np->type, "pci") || !strcmp(np->type, "pciex"); -} - -static void of_bus_pci_count_cells(struct device_node *np, - int *addrc, int *sizec) -{ - if (addrc) - *addrc = 3; - if (sizec) - *sizec = 2; -} - -static u64 of_bus_pci_map(u32 *addr, u32 *range, int na, int ns, int pna) -{ - u64 cp, s, da; - - /* Check address type match */ - if ((addr[0] ^ range[0]) & 0x03000000) - return OF_BAD_ADDR; - - /* Read address values, skipping high cell */ - cp = of_read_addr(range + 1, na - 1); - s = of_read_addr(range + na + pna, ns); - da = of_read_addr(addr + 1, na - 1); - - if (da < cp || da >= (cp + s)) - return OF_BAD_ADDR; - return da - cp; -} - -static int of_bus_pci_translate(u32 *addr, u64 offset, int na) -{ - return of_bus_default_translate(addr + 1, offset, na - 1); -} - -static unsigned int of_bus_pci_get_flags(u32 *addr) -{ - unsigned int flags = 0; - u32 w = addr[0]; - - switch((w >> 24) & 0x03) { - case 0x01: - flags |= IORESOURCE_IO; - case 0x02: /* 32 bits */ - case 0x03: /* 64 bits */ - flags |= IORESOURCE_MEM; - } - if (w & 0x40000000) - flags |= IORESOURCE_PREFETCH; - return flags; -} - -/* - * SBUS bus specific translator - */ - -static int of_bus_sbus_match(struct device_node *np) -{ - return !strcmp(np->name, "sbus") || - !strcmp(np->name, "sbi"); -} - -static void of_bus_sbus_count_cells(struct device_node *child, - int *addrc, int *sizec) -{ - if (addrc) - *addrc = 2; - if (sizec) - *sizec = 1; -} - -static u64 of_bus_sbus_map(u32 *addr, u32 *range, int na, int ns, int pna) -{ - return of_bus_default_map(addr, range, na, ns, pna); -} - -static int of_bus_sbus_translate(u32 *addr, u64 offset, int na) -{ - return of_bus_default_translate(addr, offset, na); -} - -static unsigned int of_bus_sbus_get_flags(u32 *addr) -{ - return IORESOURCE_MEM; -} - - -/* - * Array of bus specific translators - */ - -static struct of_bus of_busses[] = { - /* PCI */ - { - .name = "pci", - .addr_prop_name = "assigned-addresses", - .match = of_bus_pci_match, - .count_cells = of_bus_pci_count_cells, - .map = of_bus_pci_map, - .translate = of_bus_pci_translate, - .get_flags = of_bus_pci_get_flags, - }, - /* SBUS */ - { - .name = "sbus", - .addr_prop_name = "reg", - .match = of_bus_sbus_match, - .count_cells = of_bus_sbus_count_cells, - .map = of_bus_sbus_map, - .translate = of_bus_sbus_translate, - .get_flags = of_bus_sbus_get_flags, - }, - /* Default */ - { - .name = "default", - .addr_prop_name = "reg", - .match = NULL, - .count_cells = of_bus_default_count_cells, - .map = of_bus_default_map, - .translate = of_bus_default_translate, - .get_flags = of_bus_default_get_flags, - }, -}; - -static struct of_bus *of_match_bus(struct device_node *np) -{ - int i; - - for (i = 0; i < ARRAY_SIZE(of_busses); i ++) - if (!of_busses[i].match || of_busses[i].match(np)) - return &of_busses[i]; - BUG(); - return NULL; -} - -static int __init build_one_resource(struct device_node *parent, - struct of_bus *bus, - struct of_bus *pbus, - u32 *addr, - int na, int ns, int pna) -{ - u32 *ranges; - unsigned int rlen; - int rone; - u64 offset = OF_BAD_ADDR; - - ranges = of_get_property(parent, "ranges", &rlen); - if (ranges == NULL || rlen == 0) { - offset = of_read_addr(addr, na); - memset(addr, 0, pna * 4); - goto finish; - } - - /* Now walk through the ranges */ - rlen /= 4; - rone = na + pna + ns; - for (; rlen >= rone; rlen -= rone, ranges += rone) { - offset = bus->map(addr, ranges, na, ns, pna); - if (offset != OF_BAD_ADDR) - break; - } - if (offset == OF_BAD_ADDR) - return 1; - - memcpy(addr, ranges + na, 4 * pna); - -finish: - /* Translate it into parent bus space */ - return pbus->translate(addr, offset, pna); -} - -static void __init build_device_resources(struct of_device *op, - struct device *parent) -{ - struct of_device *p_op; - struct of_bus *bus; - int na, ns; - int index, num_reg; - void *preg; - - if (!parent) - return; - - p_op = to_of_device(parent); - bus = of_match_bus(p_op->node); - bus->count_cells(op->node, &na, &ns); - - preg = of_get_property(op->node, bus->addr_prop_name, &num_reg); - if (!preg || num_reg == 0) - return; - - /* Convert to num-cells. */ - num_reg /= 4; - - /* Conver to num-entries. */ - num_reg /= na + ns; - - for (index = 0; index < num_reg; index++) { - struct resource *r = &op->resource[index]; - u32 addr[OF_MAX_ADDR_CELLS]; - u32 *reg = (preg + (index * ((na + ns) * 4))); - struct device_node *dp = op->node; - struct device_node *pp = p_op->node; - struct of_bus *pbus; - u64 size, result = OF_BAD_ADDR; - unsigned long flags; - int dna, dns; - int pna, pns; - - size = of_read_addr(reg + na, ns); - flags = bus->get_flags(reg); - - memcpy(addr, reg, na * 4); - - /* If the immediate parent has no ranges property to apply, - * just use a 1<->1 mapping. - */ - if (of_find_property(pp, "ranges", NULL) == NULL) { - result = of_read_addr(addr, na); - goto build_res; - } - - dna = na; - dns = ns; - - while (1) { - dp = pp; - pp = dp->parent; - if (!pp) { - result = of_read_addr(addr, dna); - break; - } - - pbus = of_match_bus(pp); - pbus->count_cells(dp, &pna, &pns); - - if (build_one_resource(dp, bus, pbus, addr, dna, dns, pna)) - break; - - dna = pna; - dns = pns; - bus = pbus; - } - - build_res: - memset(r, 0, sizeof(*r)); - if (result != OF_BAD_ADDR) { - r->start = result & 0xffffffff; - r->end = result + size - 1; - r->flags = flags | ((result >> 32ULL) & 0xffUL); - } else { - r->start = ~0UL; - r->end = ~0UL; - } - r->name = op->node->name; - } -} - -static struct of_device * __init scan_one_device(struct device_node *dp, - struct device *parent) -{ - struct of_device *op = kzalloc(sizeof(*op), GFP_KERNEL); - struct linux_prom_irqs *intr; - int len, i; - - if (!op) - return NULL; - - op->node = dp; - - op->clock_freq = of_getintprop_default(dp, "clock-frequency", - (25*1000*1000)); - op->portid = of_getintprop_default(dp, "upa-portid", -1); - if (op->portid == -1) - op->portid = of_getintprop_default(dp, "portid", -1); - - intr = of_get_property(dp, "intr", &len); - if (intr) { - op->num_irqs = len / sizeof(struct linux_prom_irqs); - for (i = 0; i < op->num_irqs; i++) - op->irqs[i] = intr[i].pri; - } else { - unsigned int *irq = of_get_property(dp, "interrupts", &len); - - if (irq) { - op->num_irqs = len / sizeof(unsigned int); - for (i = 0; i < op->num_irqs; i++) - op->irqs[i] = irq[i]; - } else { - op->num_irqs = 0; - } - } - if (sparc_cpu_model == sun4d) { - static int pil_to_sbus[] = { - 0, 0, 1, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 0, - }; - struct device_node *busp = dp->parent; - struct linux_prom_registers *regs; - int board = of_getintprop_default(busp, "board#", 0); - int slot; - - regs = of_get_property(dp, "reg", NULL); - slot = regs->which_io; - - for (i = 0; i < op->num_irqs; i++) { - int this_irq = op->irqs[i]; - int sbusl = pil_to_sbus[this_irq]; - - if (sbusl) - this_irq = (((board + 1) << 5) + - (sbusl << 2) + - slot); - - op->irqs[i] = this_irq; - } - } - - build_device_resources(op, parent); - - op->dev.parent = parent; - op->dev.bus = &of_bus_type; - if (!parent) - strcpy(op->dev.bus_id, "root"); - else - strcpy(op->dev.bus_id, dp->path_component_name); - - if (of_device_register(op)) { - printk("%s: Could not register of device.\n", - dp->full_name); - kfree(op); - op = NULL; - } - - return op; -} - -static void __init scan_tree(struct device_node *dp, struct device *parent) -{ - while (dp) { - struct of_device *op = scan_one_device(dp, parent); - - if (op) - scan_tree(dp->child, &op->dev); - - dp = dp->sibling; - } -} - -static void __init scan_of_devices(void) -{ - struct device_node *root = of_find_node_by_path("/"); - struct of_device *parent; - - parent = scan_one_device(root, NULL); - if (!parent) - return; - - scan_tree(root->child, &parent->dev); -} - static int __init of_bus_driver_init(void) { - int err; + int err = 0; - err = bus_register(&of_bus_type); #ifdef CONFIG_PCI if (!err) err = bus_register(&ebus_bus_type); @@ -634,11 +165,7 @@ static int __init of_bus_driver_init(void) if (!err) err = bus_register(&sbus_bus_type); #endif - - if (!err) - scan_of_devices(); - - return err; + return 0; } postcore_initcall(of_bus_driver_init); diff --git a/trunk/arch/sparc/kernel/pcic.c b/trunk/arch/sparc/kernel/pcic.c index 22422ff10602..5df3ebdc0ab1 100644 --- a/trunk/arch/sparc/kernel/pcic.c +++ b/trunk/arch/sparc/kernel/pcic.c @@ -10,6 +10,7 @@ * CP-1200 by Eric Brower. */ +#include #include #include #include diff --git a/trunk/arch/sparc/kernel/process.c b/trunk/arch/sparc/kernel/process.c index 89a28cc018c9..118cac84a0f5 100644 --- a/trunk/arch/sparc/kernel/process.c +++ b/trunk/arch/sparc/kernel/process.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/sparc/kernel/prom.c b/trunk/arch/sparc/kernel/prom.c index 4b06dcb00ebd..946ce6d15819 100644 --- a/trunk/arch/sparc/kernel/prom.c +++ b/trunk/arch/sparc/kernel/prom.c @@ -190,36 +190,6 @@ int of_getintprop_default(struct device_node *np, const char *name, int def) } EXPORT_SYMBOL(of_getintprop_default); -int of_n_addr_cells(struct device_node *np) -{ - int* ip; - do { - if (np->parent) - np = np->parent; - ip = of_get_property(np, "#address-cells", NULL); - if (ip != NULL) - return *ip; - } while (np->parent); - /* No #address-cells property for the root node, default to 2 */ - return 2; -} -EXPORT_SYMBOL(of_n_addr_cells); - -int of_n_size_cells(struct device_node *np) -{ - int* ip; - do { - if (np->parent) - np = np->parent; - ip = of_get_property(np, "#size-cells", NULL); - if (ip != NULL) - return *ip; - } while (np->parent); - /* No #size-cells property for the root node, default to 1 */ - return 1; -} -EXPORT_SYMBOL(of_n_size_cells); - int of_set_property(struct device_node *dp, const char *name, void *val, int len) { struct property **prevp; diff --git a/trunk/arch/sparc/kernel/setup.c b/trunk/arch/sparc/kernel/setup.c index 8606ef4e52e9..2e5d08ce217b 100644 --- a/trunk/arch/sparc/kernel/setup.c +++ b/trunk/arch/sparc/kernel/setup.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/sparc/kernel/signal.c b/trunk/arch/sparc/kernel/signal.c index c9301b9143ca..0748d8147bbf 100644 --- a/trunk/arch/sparc/kernel/signal.c +++ b/trunk/arch/sparc/kernel/signal.c @@ -7,6 +7,7 @@ * Copyright (C) 1997 Eddie C. Dost (ecd@skynet.be) */ +#include #include #include #include diff --git a/trunk/arch/sparc/kernel/sparc_ksyms.c b/trunk/arch/sparc/kernel/sparc_ksyms.c index 5fb987fc3d63..fd7deabf9982 100644 --- a/trunk/arch/sparc/kernel/sparc_ksyms.c +++ b/trunk/arch/sparc/kernel/sparc_ksyms.c @@ -9,6 +9,7 @@ #define EXPORT_SYMTAB_STROPS #define PROMLIB_INTERNAL +#include #include #include #include diff --git a/trunk/arch/sparc/kernel/sun4c_irq.c b/trunk/arch/sparc/kernel/sun4c_irq.c index 50e988b9c8c3..0f2d8d9cbdba 100644 --- a/trunk/arch/sparc/kernel/sun4c_irq.c +++ b/trunk/arch/sparc/kernel/sun4c_irq.c @@ -9,6 +9,7 @@ * Copyright (C) 1996 Dave Redman (djhr@tadpole.co.uk) */ +#include #include #include #include diff --git a/trunk/arch/sparc/kernel/sun4d_irq.c b/trunk/arch/sparc/kernel/sun4d_irq.c index cbf8ee81cf5b..9c30e35c88f7 100644 --- a/trunk/arch/sparc/kernel/sun4d_irq.c +++ b/trunk/arch/sparc/kernel/sun4d_irq.c @@ -6,6 +6,7 @@ * Heavily based on arch/sparc/kernel/irq.c. */ +#include #include #include #include diff --git a/trunk/arch/sparc/kernel/sun4m_irq.c b/trunk/arch/sparc/kernel/sun4m_irq.c index 38ac672b1149..a296c13ac18f 100644 --- a/trunk/arch/sparc/kernel/sun4m_irq.c +++ b/trunk/arch/sparc/kernel/sun4m_irq.c @@ -9,6 +9,7 @@ * Copyright (C) 1996 Dave Redman (djhr@tadpole.co.uk) */ +#include #include #include #include diff --git a/trunk/arch/sparc/kernel/sys_solaris.c b/trunk/arch/sparc/kernel/sys_solaris.c index c09afd96dd9c..fb7578554c78 100644 --- a/trunk/arch/sparc/kernel/sys_solaris.c +++ b/trunk/arch/sparc/kernel/sys_solaris.c @@ -4,6 +4,7 @@ * Copyright (C) 1996 Miguel de Icaza (miguel@nuclecu.unam.mx) */ +#include #include #include #include diff --git a/trunk/arch/sparc/kernel/sys_sunos.c b/trunk/arch/sparc/kernel/sys_sunos.c index aa0fb2efb615..288de276d9ff 100644 --- a/trunk/arch/sparc/kernel/sys_sunos.c +++ b/trunk/arch/sparc/kernel/sys_sunos.c @@ -196,7 +196,7 @@ asmlinkage int sunos_brk(unsigned long brk) * simple, it hopefully works in most obvious cases.. Easy to * fool it, but this should catch most mistakes. */ - freepages = global_page_state(NR_FILE_PAGES); + freepages = get_page_cache_size(); freepages >>= 1; freepages += nr_free_pages(); freepages += nr_swap_pages; diff --git a/trunk/arch/sparc/kernel/systbls.S b/trunk/arch/sparc/kernel/systbls.S index 10df38eeae08..2856551bddf1 100644 --- a/trunk/arch/sparc/kernel/systbls.S +++ b/trunk/arch/sparc/kernel/systbls.S @@ -9,6 +9,7 @@ * Copyright (C) 1995 Adrian M. Rodriguez (adrian@remus.rutgers.edu) */ +#include .data .align 4 diff --git a/trunk/arch/sparc/kernel/time.c b/trunk/arch/sparc/kernel/time.c index 04eb1eab6e3e..7dadcdb4ca42 100644 --- a/trunk/arch/sparc/kernel/time.c +++ b/trunk/arch/sparc/kernel/time.c @@ -15,6 +15,7 @@ * 1997-09-10 Updated NTP code according to technical memorandum Jan '96 * "A Kernel Model for Precision Timekeeping" by Dave Mills */ +#include #include #include #include @@ -41,7 +42,6 @@ #include #include #include -#include extern unsigned long wall_jiffies; @@ -273,31 +273,83 @@ static __inline__ void sun4_clock_probe(void) #endif } -static int __devinit clock_probe(struct of_device *op, const struct of_device_id *match) +/* Probe for the mostek real time clock chip. */ +static __inline__ void clock_probe(void) { - struct device_node *dp = op->node; - char *model = of_get_property(dp, "model", NULL); + struct linux_prom_registers clk_reg[2]; + char model[128]; + register int node, cpuunit, bootbus; + struct resource r; - if (!model) - return -ENODEV; + cpuunit = bootbus = 0; + memset(&r, 0, sizeof(r)); - if (!strcmp(model, "mk48t02")) { - sp_clock_typ = MSTK48T02; + /* Determine the correct starting PROM node for the probe. */ + node = prom_getchild(prom_root_node); + switch (sparc_cpu_model) { + case sun4c: + break; + case sun4m: + node = prom_getchild(prom_searchsiblings(node, "obio")); + break; + case sun4d: + node = prom_getchild(bootbus = prom_searchsiblings(prom_getchild(cpuunit = prom_searchsiblings(node, "cpu-unit")), "bootbus")); + break; + default: + prom_printf("CLOCK: Unsupported architecture!\n"); + prom_halt(); + } + + /* Find the PROM node describing the real time clock. */ + sp_clock_typ = MSTK_INVALID; + node = prom_searchsiblings(node,"eeprom"); + if (!node) { + prom_printf("CLOCK: No clock found!\n"); + prom_halt(); + } + /* Get the model name and setup everything up. */ + model[0] = '\0'; + prom_getstring(node, "model", model, sizeof(model)); + if (strcmp(model, "mk48t02") == 0) { + sp_clock_typ = MSTK48T02; + if (prom_getproperty(node, "reg", (char *) clk_reg, sizeof(clk_reg)) == -1) { + prom_printf("clock_probe: FAILED!\n"); + prom_halt(); + } + if (sparc_cpu_model == sun4d) + prom_apply_generic_ranges (bootbus, cpuunit, clk_reg, 1); + else + prom_apply_obio_ranges(clk_reg, 1); /* Map the clock register io area read-only */ - mstk48t02_regs = of_ioremap(&op->resource[0], 0, - sizeof(struct mostek48t02), - "mk48t02"); + r.flags = clk_reg[0].which_io; + r.start = clk_reg[0].phys_addr; + mstk48t02_regs = sbus_ioremap(&r, 0, + sizeof(struct mostek48t02), "mk48t02"); mstk48t08_regs = NULL; /* To catch weirdness */ - } else if (!strcmp(model, "mk48t08")) { + } else if (strcmp(model, "mk48t08") == 0) { sp_clock_typ = MSTK48T08; - mstk48t08_regs = of_ioremap(&op->resource[0], 0, - sizeof(struct mostek48t08), - "mk48t08"); + if(prom_getproperty(node, "reg", (char *) clk_reg, + sizeof(clk_reg)) == -1) { + prom_printf("clock_probe: FAILED!\n"); + prom_halt(); + } + if (sparc_cpu_model == sun4d) + prom_apply_generic_ranges (bootbus, cpuunit, clk_reg, 1); + else + prom_apply_obio_ranges(clk_reg, 1); + /* Map the clock register io area read-only */ + /* XXX r/o attribute is somewhere in r.flags */ + r.flags = clk_reg[0].which_io; + r.start = clk_reg[0].phys_addr; + mstk48t08_regs = sbus_ioremap(&r, 0, + sizeof(struct mostek48t08), "mk48t08"); mstk48t02_regs = &mstk48t08_regs->regs; - } else - return -ENODEV; + } else { + prom_printf("CLOCK: Unknown model name '%s'\n",model); + prom_halt(); + } /* Report a low battery voltage condition. */ if (has_low_battery()) @@ -306,28 +358,6 @@ static int __devinit clock_probe(struct of_device *op, const struct of_device_id /* Kick start the clock if it is completely stopped. */ if (mostek_read(mstk48t02_regs + MOSTEK_SEC) & MSTK_STOP) kick_start_clock(); - - return 0; -} - -static struct of_device_id clock_match[] = { - { - .name = "eeprom", - }, - {}, -}; - -static struct of_platform_driver clock_driver = { - .name = "clock", - .match_table = clock_match, - .probe = clock_probe, -}; - - -/* Probe for the mostek real time clock chip. */ -static void clock_init(void) -{ - of_register_driver(&clock_driver, &of_bus_type); } void __init sbus_time_init(void) @@ -346,7 +376,7 @@ void __init sbus_time_init(void) if (ARCH_SUN4) sun4_clock_probe(); else - clock_init(); + clock_probe(); sparc_init_timers(timer_interrupt); diff --git a/trunk/arch/sparc/kernel/traps.c b/trunk/arch/sparc/kernel/traps.c index 6a70d215fd04..41d45c298fb2 100644 --- a/trunk/arch/sparc/kernel/traps.c +++ b/trunk/arch/sparc/kernel/traps.c @@ -9,6 +9,7 @@ * I hate traps on the sparc, grrr... */ +#include #include /* for jiffies */ #include #include diff --git a/trunk/arch/sparc/lib/atomic.S b/trunk/arch/sparc/lib/atomic.S index 178cbb8ae1b9..f48ad0c4dadb 100644 --- a/trunk/arch/sparc/lib/atomic.S +++ b/trunk/arch/sparc/lib/atomic.S @@ -3,6 +3,7 @@ * Copyright (C) 1996 David S. Miller (davem@caipfs.rutgers.edu) */ +#include #include #include diff --git a/trunk/arch/sparc/lib/bitops.S b/trunk/arch/sparc/lib/bitops.S index cb7fb66a40c8..3e9399769075 100644 --- a/trunk/arch/sparc/lib/bitops.S +++ b/trunk/arch/sparc/lib/bitops.S @@ -3,6 +3,7 @@ * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) */ +#include #include #include diff --git a/trunk/arch/sparc/lib/rwsem.S b/trunk/arch/sparc/lib/rwsem.S index 20657744c864..e7578dc600b8 100644 --- a/trunk/arch/sparc/lib/rwsem.S +++ b/trunk/arch/sparc/lib/rwsem.S @@ -4,6 +4,7 @@ * Copyright (C) 1999 Jakub Jelinek (jakub@redhat.com) */ +#include #include #include diff --git a/trunk/arch/sparc/mm/btfixup.c b/trunk/arch/sparc/mm/btfixup.c index ec4231c2855a..f147a44c9780 100644 --- a/trunk/arch/sparc/mm/btfixup.c +++ b/trunk/arch/sparc/mm/btfixup.c @@ -6,6 +6,7 @@ * Copyright (C) 1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz) */ +#include #include #include #include diff --git a/trunk/arch/sparc/mm/extable.c b/trunk/arch/sparc/mm/extable.c index 16cc28935e39..c9845c71f426 100644 --- a/trunk/arch/sparc/mm/extable.c +++ b/trunk/arch/sparc/mm/extable.c @@ -2,6 +2,7 @@ * linux/arch/sparc/mm/extable.c */ +#include #include #include diff --git a/trunk/arch/sparc/mm/hypersparc.S b/trunk/arch/sparc/mm/hypersparc.S index d29cc24c5bba..a231cca37216 100644 --- a/trunk/arch/sparc/mm/hypersparc.S +++ b/trunk/arch/sparc/mm/hypersparc.S @@ -10,6 +10,7 @@ #include #include #include +#include #include .text diff --git a/trunk/arch/sparc/mm/init.c b/trunk/arch/sparc/mm/init.c index c85ddf312747..cfa7d3456634 100644 --- a/trunk/arch/sparc/mm/init.c +++ b/trunk/arch/sparc/mm/init.c @@ -7,6 +7,7 @@ * Copyright (C) 2000 Anton Blanchard (anton@samba.org) */ +#include #include #include #include diff --git a/trunk/arch/sparc/mm/io-unit.c b/trunk/arch/sparc/mm/io-unit.c index 42c1c700c0a7..eefffa1dc5de 100644 --- a/trunk/arch/sparc/mm/io-unit.c +++ b/trunk/arch/sparc/mm/io-unit.c @@ -4,6 +4,7 @@ * Copyright (C) 1997,1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz) */ +#include #include #include #include diff --git a/trunk/arch/sparc/mm/iommu.c b/trunk/arch/sparc/mm/iommu.c index be042efd1ba4..7215849db392 100644 --- a/trunk/arch/sparc/mm/iommu.c +++ b/trunk/arch/sparc/mm/iommu.c @@ -7,6 +7,7 @@ * Copyright (C) 1997,1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz) */ +#include #include #include #include diff --git a/trunk/arch/sparc/mm/srmmu.c b/trunk/arch/sparc/mm/srmmu.c index 16e13f663ab0..58c65cc8d0d3 100644 --- a/trunk/arch/sparc/mm/srmmu.c +++ b/trunk/arch/sparc/mm/srmmu.c @@ -8,6 +8,7 @@ * Copyright (C) 1999,2000 Anton Blanchard (anton@samba.org) */ +#include #include #include #include diff --git a/trunk/arch/sparc/mm/sun4c.c b/trunk/arch/sparc/mm/sun4c.c index 7fdddf3c7e16..49f28c1bdc6d 100644 --- a/trunk/arch/sparc/mm/sun4c.c +++ b/trunk/arch/sparc/mm/sun4c.c @@ -10,6 +10,7 @@ #define NR_TASK_BUCKETS 512 +#include #include #include #include diff --git a/trunk/arch/sparc/mm/swift.S b/trunk/arch/sparc/mm/swift.S index 9f4cd396a0fa..cd90f3fdc4e7 100644 --- a/trunk/arch/sparc/mm/swift.S +++ b/trunk/arch/sparc/mm/swift.S @@ -4,6 +4,7 @@ * Copyright (C) 1999 David S. Miller (davem@redhat.com) */ +#include #include #include #include diff --git a/trunk/arch/sparc/mm/tsunami.S b/trunk/arch/sparc/mm/tsunami.S index 4988e6a310bb..697af617594a 100644 --- a/trunk/arch/sparc/mm/tsunami.S +++ b/trunk/arch/sparc/mm/tsunami.S @@ -4,6 +4,7 @@ * Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu) */ +#include #include #include #include diff --git a/trunk/arch/sparc/mm/viking.S b/trunk/arch/sparc/mm/viking.S index 754c622548a5..3cbd6de18dde 100644 --- a/trunk/arch/sparc/mm/viking.S +++ b/trunk/arch/sparc/mm/viking.S @@ -6,6 +6,7 @@ * Copyright (C) 1999 Pavel Semerad (semerad@ss1000.ms.mff.cuni.cz) */ +#include #include #include #include diff --git a/trunk/arch/sparc/prom/init.c b/trunk/arch/sparc/prom/init.c index 50abfb1b880e..b83409c81916 100644 --- a/trunk/arch/sparc/prom/init.c +++ b/trunk/arch/sparc/prom/init.c @@ -6,6 +6,7 @@ * Copyright (C) 1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz) */ +#include #include #include diff --git a/trunk/arch/sparc/prom/memory.c b/trunk/arch/sparc/prom/memory.c index b0c0f9c4fc14..c20e5309f8aa 100644 --- a/trunk/arch/sparc/prom/memory.c +++ b/trunk/arch/sparc/prom/memory.c @@ -6,6 +6,7 @@ * Copyright (C) 1997 Michael A. Griffith (grif@acm.org) */ +#include #include #include diff --git a/trunk/arch/sparc/prom/misc.c b/trunk/arch/sparc/prom/misc.c index 1942c7c05cb1..c840c2062342 100644 --- a/trunk/arch/sparc/prom/misc.c +++ b/trunk/arch/sparc/prom/misc.c @@ -5,6 +5,7 @@ * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) */ +#include #include #include #include diff --git a/trunk/arch/sparc64/kernel/auxio.c b/trunk/arch/sparc64/kernel/auxio.c index 718350aba1ec..c2c69c167d18 100644 --- a/trunk/arch/sparc64/kernel/auxio.c +++ b/trunk/arch/sparc64/kernel/auxio.c @@ -11,9 +11,10 @@ #include #include -#include -#include +#include #include +#include +#include #include void __iomem *auxio_register = NULL; @@ -110,6 +111,12 @@ void auxio_set_lte(int on) } } +static void __devinit auxio_report_dev(struct device_node *dp) +{ + printk(KERN_INFO "AUXIO: Found device at %s\n", + dp->full_name); +} + static struct of_device_id auxio_match[] = { { .name = "auxio", @@ -119,48 +126,67 @@ static struct of_device_id auxio_match[] = { MODULE_DEVICE_TABLE(of, auxio_match); -static int __devinit auxio_probe(struct of_device *dev, const struct of_device_id *match) +#ifdef CONFIG_SBUS +static int __devinit auxio_sbus_probe(struct of_device *dev, const struct of_device_id *match) { - struct device_node *dp = dev->node; - unsigned long size; - - if (!strcmp(dp->parent->name, "ebus")) { - auxio_devtype = AUXIO_TYPE_EBUS; - size = sizeof(u32); - } else if (!strcmp(dp->parent->name, "sbus")) { - auxio_devtype = AUXIO_TYPE_SBUS; - size = 1; - } else { - printk("auxio: Unknown parent bus type [%s]\n", - dp->parent->name); + struct sbus_dev *sdev = to_sbus_device(&dev->dev); + + auxio_devtype = AUXIO_TYPE_SBUS; + auxio_register = sbus_ioremap(&sdev->resource[0], 0, + sdev->reg_addrs[0].reg_size, + "auxiliaryIO"); + if (!auxio_register) return -ENODEV; - } - auxio_register = of_ioremap(&dev->resource[0], 0, size, "auxio"); + + auxio_report_dev(dev->node); + return 0; +} + +static struct of_platform_driver auxio_sbus_driver = { + .name = "auxio", + .match_table = auxio_match, + .probe = auxio_sbus_probe, +}; +#endif + +#ifdef CONFIG_PCI +static int __devinit auxio_ebus_probe(struct of_device *dev, const struct of_device_id *match) +{ + struct linux_ebus_device *edev = to_ebus_device(&dev->dev); + + auxio_devtype = AUXIO_TYPE_EBUS; + auxio_register = ioremap(edev->resource[0].start, sizeof(u32)); if (!auxio_register) return -ENODEV; - printk(KERN_INFO "AUXIO: Found device at %s\n", - dp->full_name); + auxio_report_dev(dev->node); - if (auxio_devtype == AUXIO_TYPE_EBUS) - auxio_set_led(AUXIO_LED_ON); + auxio_set_led(AUXIO_LED_ON); return 0; } -static struct of_platform_driver auxio_driver = { +static struct of_platform_driver auxio_ebus_driver = { .name = "auxio", .match_table = auxio_match, - .probe = auxio_probe, + .probe = auxio_ebus_probe, }; +#endif -static int __init auxio_init(void) +static int __init auxio_probe(void) { - return of_register_driver(&auxio_driver, &of_bus_type); +#ifdef CONFIG_SBUS + of_register_driver(&auxio_sbus_driver, &sbus_bus_type); +#endif +#ifdef CONFIG_PCI + of_register_driver(&auxio_ebus_driver, &ebus_bus_type); +#endif + + return 0; } /* Must be after subsys_initcall() so that busses are probed. Must * be before device_initcall() because things like the floppy driver * need to use the AUXIO register. */ -fs_initcall(auxio_init); +fs_initcall(auxio_probe); diff --git a/trunk/arch/sparc64/kernel/binfmt_elf32.c b/trunk/arch/sparc64/kernel/binfmt_elf32.c index a98f3ae175a3..8a2abcce2737 100644 --- a/trunk/arch/sparc64/kernel/binfmt_elf32.c +++ b/trunk/arch/sparc64/kernel/binfmt_elf32.c @@ -84,6 +84,7 @@ typedef struct { #include #include +#include #include #include diff --git a/trunk/arch/sparc64/kernel/cpu.c b/trunk/arch/sparc64/kernel/cpu.c index 7eb81d3954d9..11cc0caef592 100644 --- a/trunk/arch/sparc64/kernel/cpu.c +++ b/trunk/arch/sparc64/kernel/cpu.c @@ -4,6 +4,7 @@ * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) */ +#include #include #include #include diff --git a/trunk/arch/sparc64/kernel/devices.c b/trunk/arch/sparc64/kernel/devices.c index f8ef2f2b9b37..389301c95cb2 100644 --- a/trunk/arch/sparc64/kernel/devices.c +++ b/trunk/arch/sparc64/kernel/devices.c @@ -4,6 +4,7 @@ * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) */ +#include #include #include #include @@ -20,6 +21,8 @@ #include #include #include +#include +#include /* Used to synchronize acceses to NatSemi SUPER I/O chip configure * operations in asm/ns87303.h @@ -29,6 +32,100 @@ DEFINE_SPINLOCK(ns87303_lock); extern void cpu_probe(void); extern void central_probe(void); +u32 sun4v_vdev_devhandle; +struct device_node *sun4v_vdev_root; + +struct vdev_intmap { + unsigned int phys; + unsigned int irq; + unsigned int cnode; + unsigned int cinterrupt; +}; + +struct vdev_intmask { + unsigned int phys; + unsigned int interrupt; + unsigned int __unused; +}; + +static struct vdev_intmap *vdev_intmap; +static int vdev_num_intmap; +static struct vdev_intmask *vdev_intmask; + +static void __init sun4v_virtual_device_probe(void) +{ + struct linux_prom64_registers *regs; + struct property *prop; + struct device_node *dp; + int sz; + + if (tlb_type != hypervisor) + return; + + dp = of_find_node_by_name(NULL, "virtual-devices"); + if (!dp) { + prom_printf("SUN4V: Fatal error, no virtual-devices node.\n"); + prom_halt(); + } + + sun4v_vdev_root = dp; + + prop = of_find_property(dp, "reg", NULL); + regs = prop->value; + sun4v_vdev_devhandle = (regs[0].phys_addr >> 32UL) & 0x0fffffff; + + prop = of_find_property(dp, "interrupt-map", &sz); + vdev_intmap = prop->value; + vdev_num_intmap = sz / sizeof(struct vdev_intmap); + + prop = of_find_property(dp, "interrupt-map-mask", NULL); + vdev_intmask = prop->value; + + printk("%s: Virtual Device Bus devhandle[%x]\n", + dp->full_name, sun4v_vdev_devhandle); +} + +unsigned int sun4v_vdev_device_interrupt(struct device_node *dev_node) +{ + struct property *prop; + unsigned int irq, reg; + int i; + + prop = of_find_property(dev_node, "interrupts", NULL); + if (!prop) { + printk("VDEV: Cannot get \"interrupts\" " + "property for OBP node %s\n", + dev_node->full_name); + return 0; + } + irq = *(unsigned int *) prop->value; + + prop = of_find_property(dev_node, "reg", NULL); + if (!prop) { + printk("VDEV: Cannot get \"reg\" " + "property for OBP node %s\n", + dev_node->full_name); + return 0; + } + reg = *(unsigned int *) prop->value; + + for (i = 0; i < vdev_num_intmap; i++) { + if (vdev_intmap[i].phys == (reg & vdev_intmask->phys) && + vdev_intmap[i].irq == (irq & vdev_intmask->interrupt)) { + irq = vdev_intmap[i].cinterrupt; + break; + } + } + + if (i == vdev_num_intmap) { + printk("VDEV: No matching interrupt map entry " + "for OBP node %s\n", dev_node->full_name); + return 0; + } + + return sun4v_build_irq(sun4v_vdev_devhandle, irq); +} + static const char *cpu_mid_prop(void) { if (tlb_type == spitfire) @@ -193,6 +290,7 @@ void __init device_scan(void) } #endif + sun4v_virtual_device_probe(); central_probe(); cpu_probe(); diff --git a/trunk/arch/sparc64/kernel/ebus.c b/trunk/arch/sparc64/kernel/ebus.c index a1023bb1a217..98e0a8cbeecd 100644 --- a/trunk/arch/sparc64/kernel/ebus.c +++ b/trunk/arch/sparc64/kernel/ebus.c @@ -5,6 +5,7 @@ * Copyright (C) 1999 David S. Miller (davem@redhat.com) */ +#include #include #include #include @@ -19,8 +20,6 @@ #include #include #include -#include -#include #include #include @@ -280,12 +279,45 @@ static inline void *ebus_alloc(size_t size) return mem; } -static void __init fill_ebus_child(struct device_node *dp, - struct linux_ebus_child *dev, - int non_standard_regs) +int __init ebus_intmap_match(struct linux_ebus *ebus, + struct linux_prom_registers *reg, + int *interrupt) +{ + struct linux_prom_ebus_intmap *imap; + struct linux_prom_ebus_intmask *imask; + unsigned int hi, lo, irq; + int i, len, n_imap; + + imap = of_get_property(ebus->prom_node, "interrupt-map", &len); + if (!imap) + return 0; + n_imap = len / sizeof(imap[0]); + + imask = of_get_property(ebus->prom_node, "interrupt-map-mask", NULL); + if (!imask) + return 0; + + hi = reg->which_io & imask->phys_hi; + lo = reg->phys_addr & imask->phys_lo; + irq = *interrupt & imask->interrupt; + for (i = 0; i < n_imap; i++) { + if ((imap[i].phys_hi == hi) && + (imap[i].phys_lo == lo) && + (imap[i].interrupt == irq)) { + *interrupt = imap[i].cinterrupt; + return 0; + } + } + return -1; +} + +void __init fill_ebus_child(struct device_node *dp, + struct linux_prom_registers *preg, + struct linux_ebus_child *dev, + int non_standard_regs) { - struct of_device *op; int *regs; + int *irqs; int i, len; dev->prom_node = dp; @@ -322,16 +354,12 @@ static void __init fill_ebus_child(struct device_node *dp, } } - op = of_find_device_by_node(dp); - if (!op) { - dev->num_irqs = 0; - } else { - dev->num_irqs = op->num_irqs; - for (i = 0; i < dev->num_irqs; i++) - dev->irqs[i] = op->irqs[i]; - } + for (i = 0; i < PROMINTR_MAX; i++) + dev->irqs[i] = PCI_IRQ_NONE; - if (!dev->num_irqs) { + irqs = of_get_property(dp, "interrupts", &len); + if (!irqs) { + dev->num_irqs = 0; /* * Oh, well, some PROMs don't export interrupts * property to children of EBus devices... @@ -347,6 +375,23 @@ static void __init fill_ebus_child(struct device_node *dp, dev->irqs[0] = dev->parent->irqs[1]; } } + } else { + dev->num_irqs = len / sizeof(irqs[0]); + for (i = 0; i < dev->num_irqs; i++) { + struct pci_pbm_info *pbm = dev->bus->parent; + struct pci_controller_info *p = pbm->parent; + + if (ebus_intmap_match(dev->bus, preg, &irqs[i]) != -1) { + dev->irqs[i] = p->irq_build(pbm, + dev->bus->self, + irqs[i]); + } else { + /* If we get a bogus interrupt property, just + * record the raw value instead of punting. + */ + dev->irqs[i] = irqs[i]; + } + } } } @@ -358,32 +403,72 @@ static int __init child_regs_nonstandard(struct linux_ebus_device *dev) return 0; } -static void __init fill_ebus_device(struct device_node *dp, struct linux_ebus_device *dev) +void __init fill_ebus_device(struct device_node *dp, struct linux_ebus_device *dev) { + struct linux_prom_registers *regs; struct linux_ebus_child *child; - struct of_device *op; - int i, len; + int *irqs; + int i, n, len; dev->prom_node = dp; printk(" [%s", dp->name); - op = of_find_device_by_node(dp); - if (!op) { + regs = of_get_property(dp, "reg", &len); + if (!regs) { dev->num_addrs = 0; - dev->num_irqs = 0; - } else { - (void) of_get_property(dp, "reg", &len); - dev->num_addrs = len / sizeof(struct linux_prom_registers); + goto probe_interrupts; + } - for (i = 0; i < dev->num_addrs; i++) - memcpy(&dev->resource[i], - &op->resource[i], - sizeof(struct resource)); + if (len % sizeof(struct linux_prom_registers)) { + prom_printf("UGH: proplen for %s was %d, need multiple of %d\n", + dev->prom_node->name, len, + (int)sizeof(struct linux_prom_registers)); + prom_halt(); + } + dev->num_addrs = len / sizeof(struct linux_prom_registers); + + for (i = 0; i < dev->num_addrs; i++) { + /* XXX Learn how to interpret ebus ranges... -DaveM */ + if (regs[i].which_io >= 0x10) + n = (regs[i].which_io - 0x10) >> 2; + else + n = regs[i].which_io; + + dev->resource[i].start = dev->bus->self->resource[n].start; + dev->resource[i].start += (unsigned long)regs[i].phys_addr; + dev->resource[i].end = + (dev->resource[i].start + (unsigned long)regs[i].reg_size - 1UL); + dev->resource[i].flags = IORESOURCE_MEM; + dev->resource[i].name = dev->prom_node->name; + request_resource(&dev->bus->self->resource[n], + &dev->resource[i]); + } - dev->num_irqs = op->num_irqs; - for (i = 0; i < dev->num_irqs; i++) - dev->irqs[i] = op->irqs[i]; +probe_interrupts: + for (i = 0; i < PROMINTR_MAX; i++) + dev->irqs[i] = PCI_IRQ_NONE; + + irqs = of_get_property(dp, "interrupts", &len); + if (!irqs) { + dev->num_irqs = 0; + } else { + dev->num_irqs = len / sizeof(irqs[0]); + for (i = 0; i < dev->num_irqs; i++) { + struct pci_pbm_info *pbm = dev->bus->parent; + struct pci_controller_info *p = pbm->parent; + + if (ebus_intmap_match(dev->bus, ®s[0], &irqs[i]) != -1) { + dev->irqs[i] = p->irq_build(pbm, + dev->bus->self, + irqs[i]); + } else { + /* If we get a bogus interrupt property, just + * record the raw value instead of punting. + */ + dev->irqs[i] = irqs[i]; + } + } } dev->ofdev.node = dp; @@ -405,7 +490,7 @@ static void __init fill_ebus_device(struct device_node *dp, struct linux_ebus_de child->next = NULL; child->parent = dev; child->bus = dev->bus; - fill_ebus_child(dp, child, + fill_ebus_child(dp, regs, child, child_regs_nonstandard(dev)); while ((dp = dp->sibling) != NULL) { @@ -415,7 +500,7 @@ static void __init fill_ebus_device(struct device_node *dp, struct linux_ebus_de child->next = NULL; child->parent = dev; child->bus = dev->bus; - fill_ebus_child(dp, child, + fill_ebus_child(dp, regs, child, child_regs_nonstandard(dev)); } } diff --git a/trunk/arch/sparc64/kernel/entry.S b/trunk/arch/sparc64/kernel/entry.S index 0aaa35fc5a9c..be85ce2a4ad9 100644 --- a/trunk/arch/sparc64/kernel/entry.S +++ b/trunk/arch/sparc64/kernel/entry.S @@ -7,6 +7,7 @@ * Copyright (C) 1996,98,99 Jakub Jelinek (jj@sunsite.mff.cuni.cz) */ +#include #include #include diff --git a/trunk/arch/sparc64/kernel/etrap.S b/trunk/arch/sparc64/kernel/etrap.S index 4b2bf9eb447a..149383835c25 100644 --- a/trunk/arch/sparc64/kernel/etrap.S +++ b/trunk/arch/sparc64/kernel/etrap.S @@ -5,6 +5,7 @@ * Copyright (C) 1997, 1998, 1999 Jakub Jelinek (jj@ultra.linux.cz) */ +#include #include #include diff --git a/trunk/arch/sparc64/kernel/head.S b/trunk/arch/sparc64/kernel/head.S index 75684b56767e..31c5892f5acc 100644 --- a/trunk/arch/sparc64/kernel/head.S +++ b/trunk/arch/sparc64/kernel/head.S @@ -7,6 +7,7 @@ * Copyright (C) 1997 Miguel de Icaza (miguel@nuclecu.unam.mx) */ +#include #include #include #include diff --git a/trunk/arch/sparc64/kernel/irq.c b/trunk/arch/sparc64/kernel/irq.c index 4e64724cb9ae..ab9e640df228 100644 --- a/trunk/arch/sparc64/kernel/irq.c +++ b/trunk/arch/sparc64/kernel/irq.c @@ -6,6 +6,7 @@ * Copyright (C) 1998 Jakub Jelinek (jj@ultra.linux.cz) */ +#include #include #include #include @@ -413,10 +414,6 @@ void irq_install_pre_handler(int virt_irq, data->pre_handler_arg1 = arg1; data->pre_handler_arg2 = arg2; - if (desc->chip == &sun4u_irq_ack || - desc->chip == &sun4v_irq_ack) - return; - desc->chip = (desc->chip == &sun4u_irq ? &sun4u_irq_ack : &sun4v_irq_ack); } diff --git a/trunk/arch/sparc64/kernel/isa.c b/trunk/arch/sparc64/kernel/isa.c index 0f3aec72ef5f..6f16dee280a8 100644 --- a/trunk/arch/sparc64/kernel/isa.c +++ b/trunk/arch/sparc64/kernel/isa.c @@ -3,8 +3,6 @@ #include #include #include -#include -#include #include struct sparc_isa_bridge *isa_chain; @@ -48,16 +46,107 @@ isa_dev_get_resource(struct sparc_isa_device *isa_dev) return pregs; } +/* I can't believe they didn't put a real INO in the isa device + * interrupts property. The whole point of the OBP properties + * is to shield the kernel from IRQ routing details. + * + * The P1275 standard for ISA devices seems to also have been + * totally ignored. + * + * On later systems, an interrupt-map and interrupt-map-mask scheme + * akin to EBUS is used. + */ +static struct { + int obp_irq; + int pci_ino; +} grover_irq_table[] = { + { 1, 0x00 }, /* dma, unknown ino at this point */ + { 2, 0x27 }, /* floppy */ + { 3, 0x22 }, /* parallel */ + { 4, 0x2b }, /* serial */ + { 5, 0x25 }, /* acpi power management */ + + { 0, 0x00 } /* end of table */ +}; + +static int __init isa_dev_get_irq_using_imap(struct sparc_isa_device *isa_dev, + struct sparc_isa_bridge *isa_br, + int *interrupt, + struct linux_prom_registers *reg) +{ + struct linux_prom_ebus_intmap *imap; + struct linux_prom_ebus_intmap *imask; + unsigned int hi, lo, irq; + int i, len, n_imap; + + imap = of_get_property(isa_br->prom_node, "interrupt-map", &len); + if (!imap) + return 0; + n_imap = len / sizeof(imap[0]); + + imask = of_get_property(isa_br->prom_node, "interrupt-map-mask", NULL); + if (!imask) + return 0; + + hi = reg->which_io & imask->phys_hi; + lo = reg->phys_addr & imask->phys_lo; + irq = *interrupt & imask->interrupt; + for (i = 0; i < n_imap; i++) { + if ((imap[i].phys_hi == hi) && + (imap[i].phys_lo == lo) && + (imap[i].interrupt == irq)) { + *interrupt = imap[i].cinterrupt; + return 0; + } + } + return -1; +} + static void __init isa_dev_get_irq(struct sparc_isa_device *isa_dev, struct linux_prom_registers *pregs) { - struct of_device *op = of_find_device_by_node(isa_dev->prom_node); + int irq_prop; - if (!op || !op->num_irqs) { - isa_dev->irq = PCI_IRQ_NONE; + irq_prop = of_getintprop_default(isa_dev->prom_node, + "interrupts", -1); + if (irq_prop <= 0) { + goto no_irq; } else { - isa_dev->irq = op->irqs[0]; + struct pci_controller_info *pcic; + struct pci_pbm_info *pbm; + int i; + + if (of_find_property(isa_dev->bus->prom_node, + "interrupt-map", NULL)) { + if (!isa_dev_get_irq_using_imap(isa_dev, + isa_dev->bus, + &irq_prop, + pregs)) + goto route_irq; + } + + for (i = 0; grover_irq_table[i].obp_irq != 0; i++) { + if (grover_irq_table[i].obp_irq == irq_prop) { + int ino = grover_irq_table[i].pci_ino; + + if (ino == 0) + goto no_irq; + + irq_prop = ino; + goto route_irq; + } + } + goto no_irq; + +route_irq: + pbm = isa_dev->bus->parent; + pcic = pbm->parent; + isa_dev->irq = pcic->irq_build(pbm, NULL, irq_prop); + return; } + +no_irq: + isa_dev->irq = PCI_IRQ_NONE; } static void __init isa_fill_children(struct sparc_isa_device *parent_isa_dev) diff --git a/trunk/arch/sparc64/kernel/kprobes.c b/trunk/arch/sparc64/kernel/kprobes.c index 8e75ed762fd8..2e1c824c1cc9 100644 --- a/trunk/arch/sparc64/kernel/kprobes.c +++ b/trunk/arch/sparc64/kernel/kprobes.c @@ -3,6 +3,7 @@ * Copyright (C) 2004 David S. Miller */ +#include #include #include #include diff --git a/trunk/arch/sparc64/kernel/ktlb.S b/trunk/arch/sparc64/kernel/ktlb.S index e492db845ea3..31da1e564c95 100644 --- a/trunk/arch/sparc64/kernel/ktlb.S +++ b/trunk/arch/sparc64/kernel/ktlb.S @@ -6,6 +6,7 @@ * Copyright (C) 1996,98,99 Jakub Jelinek (jj@sunsite.mff.cuni.cz) */ +#include #include #include #include diff --git a/trunk/arch/sparc64/kernel/of_device.c b/trunk/arch/sparc64/kernel/of_device.c index 169b017eec0b..768475bbce82 100644 --- a/trunk/arch/sparc64/kernel/of_device.c +++ b/trunk/arch/sparc64/kernel/of_device.c @@ -129,43 +129,6 @@ static int of_device_resume(struct device * dev) return error; } -void __iomem *of_ioremap(struct resource *res, unsigned long offset, unsigned long size, char *name) -{ - unsigned long ret = res->start + offset; - - if (!request_region(ret, size, name)) - ret = 0; - - return (void __iomem *) ret; -} -EXPORT_SYMBOL(of_ioremap); - -void of_iounmap(void __iomem *base, unsigned long size) -{ - release_region((unsigned long) base, size); -} -EXPORT_SYMBOL(of_iounmap); - -static int node_match(struct device *dev, void *data) -{ - struct of_device *op = to_of_device(dev); - struct device_node *dp = data; - - return (op->node == dp); -} - -struct of_device *of_find_device_by_node(struct device_node *dp) -{ - struct device *dev = bus_find_device(&of_bus_type, NULL, - dp, node_match); - - if (dev) - return to_of_device(dev); - - return NULL; -} -EXPORT_SYMBOL(of_find_device_by_node); - #ifdef CONFIG_PCI struct bus_type isa_bus_type = { .name = "isa", @@ -200,657 +163,10 @@ struct bus_type sbus_bus_type = { EXPORT_SYMBOL(sbus_bus_type); #endif -struct bus_type of_bus_type = { - .name = "of", - .match = of_platform_bus_match, - .probe = of_device_probe, - .remove = of_device_remove, - .suspend = of_device_suspend, - .resume = of_device_resume, -}; -EXPORT_SYMBOL(of_bus_type); - -static inline u64 of_read_addr(u32 *cell, int size) -{ - u64 r = 0; - while (size--) - r = (r << 32) | *(cell++); - return r; -} - -static void __init get_cells(struct device_node *dp, - int *addrc, int *sizec) -{ - if (addrc) - *addrc = of_n_addr_cells(dp); - if (sizec) - *sizec = of_n_size_cells(dp); -} - -/* Max address size we deal with */ -#define OF_MAX_ADDR_CELLS 4 - -struct of_bus { - const char *name; - const char *addr_prop_name; - int (*match)(struct device_node *parent); - void (*count_cells)(struct device_node *child, - int *addrc, int *sizec); - u64 (*map)(u32 *addr, u32 *range, int na, int ns, int pna); - int (*translate)(u32 *addr, u64 offset, int na); - unsigned int (*get_flags)(u32 *addr); -}; - -/* - * Default translator (generic bus) - */ - -static void of_bus_default_count_cells(struct device_node *dev, - int *addrc, int *sizec) -{ - get_cells(dev, addrc, sizec); -} - -static u64 of_bus_default_map(u32 *addr, u32 *range, int na, int ns, int pna) -{ - u64 cp, s, da; - - cp = of_read_addr(range, na); - s = of_read_addr(range + na + pna, ns); - da = of_read_addr(addr, na); - - if (da < cp || da >= (cp + s)) - return OF_BAD_ADDR; - return da - cp; -} - -static int of_bus_default_translate(u32 *addr, u64 offset, int na) -{ - u64 a = of_read_addr(addr, na); - memset(addr, 0, na * 4); - a += offset; - if (na > 1) - addr[na - 2] = a >> 32; - addr[na - 1] = a & 0xffffffffu; - - return 0; -} - -static unsigned int of_bus_default_get_flags(u32 *addr) -{ - return IORESOURCE_MEM; -} - -/* - * PCI bus specific translator - */ - -static int of_bus_pci_match(struct device_node *np) -{ - return !strcmp(np->type, "pci") || !strcmp(np->type, "pciex"); -} - -static void of_bus_pci_count_cells(struct device_node *np, - int *addrc, int *sizec) -{ - if (addrc) - *addrc = 3; - if (sizec) - *sizec = 2; -} - -static u64 of_bus_pci_map(u32 *addr, u32 *range, int na, int ns, int pna) -{ - u64 cp, s, da; - - /* Check address type match */ - if ((addr[0] ^ range[0]) & 0x03000000) - return OF_BAD_ADDR; - - /* Read address values, skipping high cell */ - cp = of_read_addr(range + 1, na - 1); - s = of_read_addr(range + na + pna, ns); - da = of_read_addr(addr + 1, na - 1); - - if (da < cp || da >= (cp + s)) - return OF_BAD_ADDR; - return da - cp; -} - -static int of_bus_pci_translate(u32 *addr, u64 offset, int na) -{ - return of_bus_default_translate(addr + 1, offset, na - 1); -} - -static unsigned int of_bus_pci_get_flags(u32 *addr) -{ - unsigned int flags = 0; - u32 w = addr[0]; - - switch((w >> 24) & 0x03) { - case 0x01: - flags |= IORESOURCE_IO; - case 0x02: /* 32 bits */ - case 0x03: /* 64 bits */ - flags |= IORESOURCE_MEM; - } - if (w & 0x40000000) - flags |= IORESOURCE_PREFETCH; - return flags; -} - -/* - * ISA bus specific translator - */ - -static int of_bus_isa_match(struct device_node *np) -{ - return !strcmp(np->name, "isa"); -} - -static void of_bus_isa_count_cells(struct device_node *child, - int *addrc, int *sizec) -{ - if (addrc) - *addrc = 2; - if (sizec) - *sizec = 1; -} - -static u64 of_bus_isa_map(u32 *addr, u32 *range, int na, int ns, int pna) -{ - u64 cp, s, da; - - /* Check address type match */ - if ((addr[0] ^ range[0]) & 0x00000001) - return OF_BAD_ADDR; - - /* Read address values, skipping high cell */ - cp = of_read_addr(range + 1, na - 1); - s = of_read_addr(range + na + pna, ns); - da = of_read_addr(addr + 1, na - 1); - - if (da < cp || da >= (cp + s)) - return OF_BAD_ADDR; - return da - cp; -} - -static int of_bus_isa_translate(u32 *addr, u64 offset, int na) -{ - return of_bus_default_translate(addr + 1, offset, na - 1); -} - -static unsigned int of_bus_isa_get_flags(u32 *addr) -{ - unsigned int flags = 0; - u32 w = addr[0]; - - if (w & 1) - flags |= IORESOURCE_IO; - else - flags |= IORESOURCE_MEM; - return flags; -} - -/* - * SBUS bus specific translator - */ - -static int of_bus_sbus_match(struct device_node *np) -{ - return !strcmp(np->name, "sbus") || - !strcmp(np->name, "sbi"); -} - -static void of_bus_sbus_count_cells(struct device_node *child, - int *addrc, int *sizec) -{ - if (addrc) - *addrc = 2; - if (sizec) - *sizec = 1; -} - -static u64 of_bus_sbus_map(u32 *addr, u32 *range, int na, int ns, int pna) -{ - return of_bus_default_map(addr, range, na, ns, pna); -} - -static int of_bus_sbus_translate(u32 *addr, u64 offset, int na) -{ - return of_bus_default_translate(addr, offset, na); -} - -static unsigned int of_bus_sbus_get_flags(u32 *addr) -{ - return IORESOURCE_MEM; -} - - -/* - * Array of bus specific translators - */ - -static struct of_bus of_busses[] = { - /* PCI */ - { - .name = "pci", - .addr_prop_name = "assigned-addresses", - .match = of_bus_pci_match, - .count_cells = of_bus_pci_count_cells, - .map = of_bus_pci_map, - .translate = of_bus_pci_translate, - .get_flags = of_bus_pci_get_flags, - }, - /* ISA */ - { - .name = "isa", - .addr_prop_name = "reg", - .match = of_bus_isa_match, - .count_cells = of_bus_isa_count_cells, - .map = of_bus_isa_map, - .translate = of_bus_isa_translate, - .get_flags = of_bus_isa_get_flags, - }, - /* SBUS */ - { - .name = "sbus", - .addr_prop_name = "reg", - .match = of_bus_sbus_match, - .count_cells = of_bus_sbus_count_cells, - .map = of_bus_sbus_map, - .translate = of_bus_sbus_translate, - .get_flags = of_bus_sbus_get_flags, - }, - /* Default */ - { - .name = "default", - .addr_prop_name = "reg", - .match = NULL, - .count_cells = of_bus_default_count_cells, - .map = of_bus_default_map, - .translate = of_bus_default_translate, - .get_flags = of_bus_default_get_flags, - }, -}; - -static struct of_bus *of_match_bus(struct device_node *np) -{ - int i; - - for (i = 0; i < ARRAY_SIZE(of_busses); i ++) - if (!of_busses[i].match || of_busses[i].match(np)) - return &of_busses[i]; - BUG(); - return NULL; -} - -static int __init build_one_resource(struct device_node *parent, - struct of_bus *bus, - struct of_bus *pbus, - u32 *addr, - int na, int ns, int pna) -{ - u32 *ranges; - unsigned int rlen; - int rone; - u64 offset = OF_BAD_ADDR; - - ranges = of_get_property(parent, "ranges", &rlen); - if (ranges == NULL || rlen == 0) { - offset = of_read_addr(addr, na); - memset(addr, 0, pna * 4); - goto finish; - } - - /* Now walk through the ranges */ - rlen /= 4; - rone = na + pna + ns; - for (; rlen >= rone; rlen -= rone, ranges += rone) { - offset = bus->map(addr, ranges, na, ns, pna); - if (offset != OF_BAD_ADDR) - break; - } - if (offset == OF_BAD_ADDR) - return 1; - - memcpy(addr, ranges + na, 4 * pna); - -finish: - /* Translate it into parent bus space */ - return pbus->translate(addr, offset, pna); -} - -static void __init build_device_resources(struct of_device *op, - struct device *parent) -{ - struct of_device *p_op; - struct of_bus *bus; - int na, ns; - int index, num_reg; - void *preg; - - if (!parent) - return; - - p_op = to_of_device(parent); - bus = of_match_bus(p_op->node); - bus->count_cells(op->node, &na, &ns); - - preg = of_get_property(op->node, bus->addr_prop_name, &num_reg); - if (!preg || num_reg == 0) - return; - - /* Convert to num-cells. */ - num_reg /= 4; - - /* Conver to num-entries. */ - num_reg /= na + ns; - - for (index = 0; index < num_reg; index++) { - struct resource *r = &op->resource[index]; - u32 addr[OF_MAX_ADDR_CELLS]; - u32 *reg = (preg + (index * ((na + ns) * 4))); - struct device_node *dp = op->node; - struct device_node *pp = p_op->node; - struct of_bus *pbus; - u64 size, result = OF_BAD_ADDR; - unsigned long flags; - int dna, dns; - int pna, pns; - - size = of_read_addr(reg + na, ns); - flags = bus->get_flags(reg); - - memcpy(addr, reg, na * 4); - - /* If the immediate parent has no ranges property to apply, - * just use a 1<->1 mapping. Unless it is the 'dma' child - * of an isa bus, which must be passed up towards the root. - * - * Also, don't try to translate PMU bus device registers. - */ - if ((of_find_property(pp, "ranges", NULL) == NULL && - strcmp(pp->name, "dma") != 0) || - !strcmp(pp->name, "pmu")) { - result = of_read_addr(addr, na); - goto build_res; - } - - dna = na; - dns = ns; - - while (1) { - dp = pp; - pp = dp->parent; - if (!pp) { - result = of_read_addr(addr, dna); - break; - } - - pbus = of_match_bus(pp); - pbus->count_cells(dp, &pna, &pns); - - if (build_one_resource(dp, bus, pbus, addr, dna, dns, pna)) - break; - - dna = pna; - dns = pns; - bus = pbus; - } - - build_res: - memset(r, 0, sizeof(*r)); - if (result != OF_BAD_ADDR) { - if (tlb_type == hypervisor) - result &= 0x0fffffffffffffffUL; - - r->start = result; - r->end = result + size - 1; - r->flags = flags; - } else { - r->start = ~0UL; - r->end = ~0UL; - } - r->name = op->node->name; - } -} - -static struct device_node * __init -apply_interrupt_map(struct device_node *dp, struct device_node *pp, - u32 *imap, int imlen, u32 *imask, - unsigned int *irq_p) -{ - struct device_node *cp; - unsigned int irq = *irq_p; - struct of_bus *bus; - phandle handle; - u32 *reg; - int na, num_reg, i; - - bus = of_match_bus(pp); - bus->count_cells(dp, &na, NULL); - - reg = of_get_property(dp, "reg", &num_reg); - if (!reg || !num_reg) - return NULL; - - imlen /= ((na + 3) * 4); - handle = 0; - for (i = 0; i < imlen; i++) { - int j; - - for (j = 0; j < na; j++) { - if ((reg[j] & imask[j]) != imap[j]) - goto next; - } - if (imap[na] == irq) { - handle = imap[na + 1]; - irq = imap[na + 2]; - break; - } - - next: - imap += (na + 3); - } - if (i == imlen) - return NULL; - - *irq_p = irq; - cp = of_find_node_by_phandle(handle); - - return cp; -} - -static unsigned int __init pci_irq_swizzle(struct device_node *dp, - struct device_node *pp, - unsigned int irq) -{ - struct linux_prom_pci_registers *regs; - unsigned int devfn, slot, ret; - - if (irq < 1 || irq > 4) - return irq; - - regs = of_get_property(dp, "reg", NULL); - if (!regs) - return irq; - - devfn = (regs->phys_hi >> 8) & 0xff; - slot = (devfn >> 3) & 0x1f; - - ret = ((irq - 1 + (slot & 3)) & 3) + 1; - - return ret; -} - -static unsigned int __init build_one_device_irq(struct of_device *op, - struct device *parent, - unsigned int irq) -{ - struct device_node *dp = op->node; - struct device_node *pp, *ip; - unsigned int orig_irq = irq; - - if (irq == 0xffffffff) - return irq; - - if (dp->irq_trans) { - irq = dp->irq_trans->irq_build(dp, irq, - dp->irq_trans->data); -#if 1 - printk("%s: direct translate %x --> %x\n", - dp->full_name, orig_irq, irq); -#endif - return irq; - } - - /* Something more complicated. Walk up to the root, applying - * interrupt-map or bus specific translations, until we hit - * an IRQ translator. - * - * If we hit a bus type or situation we cannot handle, we - * stop and assume that the original IRQ number was in a - * format which has special meaning to it's immediate parent. - */ - pp = dp->parent; - ip = NULL; - while (pp) { - void *imap, *imsk; - int imlen; - - imap = of_get_property(pp, "interrupt-map", &imlen); - imsk = of_get_property(pp, "interrupt-map-mask", NULL); - if (imap && imsk) { - struct device_node *iret; - int this_orig_irq = irq; - - iret = apply_interrupt_map(dp, pp, - imap, imlen, imsk, - &irq); -#if 1 - printk("%s: Apply [%s:%x] imap --> [%s:%x]\n", - op->node->full_name, - pp->full_name, this_orig_irq, - (iret ? iret->full_name : "NULL"), irq); -#endif - if (!iret) - break; - - if (iret->irq_trans) { - ip = iret; - break; - } - } else { - if (!strcmp(pp->type, "pci") || - !strcmp(pp->type, "pciex")) { - unsigned int this_orig_irq = irq; - - irq = pci_irq_swizzle(dp, pp, irq); -#if 1 - printk("%s: PCI swizzle [%s] %x --> %x\n", - op->node->full_name, - pp->full_name, this_orig_irq, irq); -#endif - } - - if (pp->irq_trans) { - ip = pp; - break; - } - } - dp = pp; - pp = pp->parent; - } - if (!ip) - return orig_irq; - - irq = ip->irq_trans->irq_build(op->node, irq, - ip->irq_trans->data); -#if 1 - printk("%s: Apply IRQ trans [%s] %x --> %x\n", - op->node->full_name, ip->full_name, orig_irq, irq); -#endif - - return irq; -} - -static struct of_device * __init scan_one_device(struct device_node *dp, - struct device *parent) -{ - struct of_device *op = kzalloc(sizeof(*op), GFP_KERNEL); - unsigned int *irq; - int len, i; - - if (!op) - return NULL; - - op->node = dp; - - op->clock_freq = of_getintprop_default(dp, "clock-frequency", - (25*1000*1000)); - op->portid = of_getintprop_default(dp, "upa-portid", -1); - if (op->portid == -1) - op->portid = of_getintprop_default(dp, "portid", -1); - - irq = of_get_property(dp, "interrupts", &len); - if (irq) { - memcpy(op->irqs, irq, len); - op->num_irqs = len / 4; - } else { - op->num_irqs = 0; - } - - build_device_resources(op, parent); - for (i = 0; i < op->num_irqs; i++) - op->irqs[i] = build_one_device_irq(op, parent, op->irqs[i]); - - op->dev.parent = parent; - op->dev.bus = &of_bus_type; - if (!parent) - strcpy(op->dev.bus_id, "root"); - else - strcpy(op->dev.bus_id, dp->path_component_name); - - if (of_device_register(op)) { - printk("%s: Could not register of device.\n", - dp->full_name); - kfree(op); - op = NULL; - } - - return op; -} - -static void __init scan_tree(struct device_node *dp, struct device *parent) -{ - while (dp) { - struct of_device *op = scan_one_device(dp, parent); - - if (op) - scan_tree(dp->child, &op->dev); - - dp = dp->sibling; - } -} - -static void __init scan_of_devices(void) -{ - struct device_node *root = of_find_node_by_path("/"); - struct of_device *parent; - - parent = scan_one_device(root, NULL); - if (!parent) - return; - - scan_tree(root->child, &parent->dev); -} - static int __init of_bus_driver_init(void) { - int err; + int err = 0; - err = bus_register(&of_bus_type); #ifdef CONFIG_PCI if (!err) err = bus_register(&isa_bus_type); @@ -861,11 +177,7 @@ static int __init of_bus_driver_init(void) if (!err) err = bus_register(&sbus_bus_type); #endif - - if (!err) - scan_of_devices(); - - return err; + return 0; } postcore_initcall(of_bus_driver_init); diff --git a/trunk/arch/sparc64/kernel/pci.c b/trunk/arch/sparc64/kernel/pci.c index e02f01b644af..20ca9ec8fd3b 100644 --- a/trunk/arch/sparc64/kernel/pci.c +++ b/trunk/arch/sparc64/kernel/pci.c @@ -6,6 +6,7 @@ * Copyright (C) 1999 Jakub Jelinek (jj@ultra.linux.cz) */ +#include #include #include #include @@ -306,6 +307,7 @@ static void __init pci_scan_each_controller_bus(void) p->scan_bus(p); } +extern void clock_probe(void); extern void power_init(void); static int __init pcibios_init(void) @@ -318,6 +320,7 @@ static int __init pcibios_init(void) isa_init(); ebus_init(); + clock_probe(); power_init(); return 0; @@ -403,8 +406,14 @@ void pcibios_bus_to_resource(struct pci_dev *pdev, struct resource *res, } EXPORT_SYMBOL(pcibios_bus_to_resource); +extern int pci_irq_verbose; + char * __init pcibios_setup(char *str) { + if (!strcmp(str, "irq_verbose")) { + pci_irq_verbose = 1; + return NULL; + } return str; } diff --git a/trunk/arch/sparc64/kernel/pci_common.c b/trunk/arch/sparc64/kernel/pci_common.c index 7a59cc72c844..b06a2955bf5f 100644 --- a/trunk/arch/sparc64/kernel/pci_common.c +++ b/trunk/arch/sparc64/kernel/pci_common.c @@ -10,10 +10,12 @@ #include #include -#include #include "pci_impl.h" +/* Pass "pci=irq_verbose" on the kernel command line to enable this. */ +int pci_irq_verbose; + /* Fix self device of BUS and hook it into BUS->self. * The pci_scan_bus does not do this for the host bridge. */ @@ -167,7 +169,6 @@ static void __init pdev_cookie_fillin(struct pci_pbm_info *pbm, } pcp->pbm = pbm; pcp->prom_node = dp; - pcp->op = of_find_device_by_node(dp); memcpy(pcp->prom_regs, pregs, nregs * sizeof(struct linux_prom_pci_registers)); pcp->num_prom_regs = nregs; @@ -548,18 +549,296 @@ void __init pci_assign_unassigned(struct pci_pbm_info *pbm, pci_assign_unassigned(pbm, bus); } +static inline unsigned int pci_slot_swivel(struct pci_pbm_info *pbm, + struct pci_dev *toplevel_pdev, + struct pci_dev *pdev, + unsigned int interrupt) +{ + unsigned int ret; + + if (unlikely(interrupt < 1 || interrupt > 4)) { + printk("%s: Device %s interrupt value of %u is strange.\n", + pbm->name, pci_name(pdev), interrupt); + return interrupt; + } + + ret = ((interrupt - 1 + (PCI_SLOT(pdev->devfn) & 3)) & 3) + 1; + + if (pci_irq_verbose) + printk("%s: %s IRQ Swivel %s [%x:%x] -> [%x]\n", + pbm->name, pci_name(toplevel_pdev), pci_name(pdev), + interrupt, PCI_SLOT(pdev->devfn), ret); + + return ret; +} + +static inline unsigned int pci_apply_intmap(struct pci_pbm_info *pbm, + struct pci_dev *toplevel_pdev, + struct pci_dev *pbus, + struct pci_dev *pdev, + unsigned int interrupt, + struct device_node **cnode) +{ + struct linux_prom_pci_intmap *imap; + struct linux_prom_pci_intmask *imask; + struct pcidev_cookie *pbus_pcp = pbus->sysdata; + struct pcidev_cookie *pdev_pcp = pdev->sysdata; + struct linux_prom_pci_registers *pregs = pdev_pcp->prom_regs; + struct property *prop; + int plen, num_imap, i; + unsigned int hi, mid, lo, irq, orig_interrupt; + + *cnode = pbus_pcp->prom_node; + + prop = of_find_property(pbus_pcp->prom_node, "interrupt-map", &plen); + if (!prop || + (plen % sizeof(struct linux_prom_pci_intmap)) != 0) { + printk("%s: Device %s interrupt-map has bad len %d\n", + pbm->name, pci_name(pbus), plen); + goto no_intmap; + } + imap = prop->value; + num_imap = plen / sizeof(struct linux_prom_pci_intmap); + + prop = of_find_property(pbus_pcp->prom_node, "interrupt-map-mask", &plen); + if (!prop || + (plen % sizeof(struct linux_prom_pci_intmask)) != 0) { + printk("%s: Device %s interrupt-map-mask has bad len %d\n", + pbm->name, pci_name(pbus), plen); + goto no_intmap; + } + imask = prop->value; + + orig_interrupt = interrupt; + + hi = pregs->phys_hi & imask->phys_hi; + mid = pregs->phys_mid & imask->phys_mid; + lo = pregs->phys_lo & imask->phys_lo; + irq = interrupt & imask->interrupt; + + for (i = 0; i < num_imap; i++) { + if (imap[i].phys_hi == hi && + imap[i].phys_mid == mid && + imap[i].phys_lo == lo && + imap[i].interrupt == irq) { + *cnode = of_find_node_by_phandle(imap[i].cnode); + interrupt = imap[i].cinterrupt; + } + } + + if (pci_irq_verbose) + printk("%s: %s MAP BUS %s DEV %s [%x] -> [%x]\n", + pbm->name, pci_name(toplevel_pdev), + pci_name(pbus), pci_name(pdev), + orig_interrupt, interrupt); + +no_intmap: + return interrupt; +} + +/* For each PCI bus on the way to the root: + * 1) If it has an interrupt-map property, apply it. + * 2) Else, swivel the interrupt number based upon the PCI device number. + * + * Return the "IRQ controller" node. If this is the PBM's device node, + * all interrupt translations are complete, else we should use that node's + * "reg" property to apply the PBM's "interrupt-{map,mask}" to the interrupt. + */ +static struct device_node * __init +pci_intmap_match_to_root(struct pci_pbm_info *pbm, + struct pci_dev *pdev, + unsigned int *interrupt) +{ + struct pci_dev *toplevel_pdev = pdev; + struct pcidev_cookie *toplevel_pcp = toplevel_pdev->sysdata; + struct device_node *cnode = toplevel_pcp->prom_node; + + while (pdev->bus->number != pbm->pci_first_busno) { + struct pci_dev *pbus = pdev->bus->self; + struct pcidev_cookie *pcp = pbus->sysdata; + struct property *prop; + + prop = of_find_property(pcp->prom_node, "interrupt-map", NULL); + if (!prop) { + *interrupt = pci_slot_swivel(pbm, toplevel_pdev, + pdev, *interrupt); + cnode = pcp->prom_node; + } else { + *interrupt = pci_apply_intmap(pbm, toplevel_pdev, + pbus, pdev, + *interrupt, &cnode); + + while (pcp->prom_node != cnode && + pbus->bus->number != pbm->pci_first_busno) { + pbus = pbus->bus->self; + pcp = pbus->sysdata; + } + } + pdev = pbus; + + if (cnode == pbm->prom_node) + break; + } + + return cnode; +} + +static int __init pci_intmap_match(struct pci_dev *pdev, unsigned int *interrupt) +{ + struct pcidev_cookie *dev_pcp = pdev->sysdata; + struct pci_pbm_info *pbm = dev_pcp->pbm; + struct linux_prom_pci_registers *reg; + struct device_node *cnode; + struct property *prop; + unsigned int hi, mid, lo, irq; + int i, plen; + + cnode = pci_intmap_match_to_root(pbm, pdev, interrupt); + if (cnode == pbm->prom_node) + goto success; + + prop = of_find_property(cnode, "reg", &plen); + if (!prop || + (plen % sizeof(struct linux_prom_pci_registers)) != 0) { + printk("%s: OBP node %s reg property has bad len %d\n", + pbm->name, cnode->full_name, plen); + goto fail; + } + reg = prop->value; + + hi = reg[0].phys_hi & pbm->pbm_intmask->phys_hi; + mid = reg[0].phys_mid & pbm->pbm_intmask->phys_mid; + lo = reg[0].phys_lo & pbm->pbm_intmask->phys_lo; + irq = *interrupt & pbm->pbm_intmask->interrupt; + + for (i = 0; i < pbm->num_pbm_intmap; i++) { + struct linux_prom_pci_intmap *intmap; + + intmap = &pbm->pbm_intmap[i]; + + if (intmap->phys_hi == hi && + intmap->phys_mid == mid && + intmap->phys_lo == lo && + intmap->interrupt == irq) { + *interrupt = intmap->cinterrupt; + goto success; + } + } + +fail: + return 0; + +success: + if (pci_irq_verbose) + printk("%s: Routing bus[%2x] slot[%2x] to INO[%02x]\n", + pbm->name, + pdev->bus->number, PCI_SLOT(pdev->devfn), + *interrupt); + return 1; +} + static void __init pdev_fixup_irq(struct pci_dev *pdev) { struct pcidev_cookie *pcp = pdev->sysdata; - struct of_device *op = pcp->op; + struct pci_pbm_info *pbm = pcp->pbm; + struct pci_controller_info *p = pbm->parent; + unsigned int portid = pbm->portid; + unsigned int prom_irq; + struct device_node *dp = pcp->prom_node; + struct property *prop; + + /* If this is an empty EBUS device, sometimes OBP fails to + * give it a valid fully specified interrupts property. + * The EBUS hooked up to SunHME on PCI I/O boards of + * Ex000 systems is one such case. + * + * The interrupt is not important so just ignore it. + */ + if (pdev->vendor == PCI_VENDOR_ID_SUN && + pdev->device == PCI_DEVICE_ID_SUN_EBUS && + !dp->child) { + pdev->irq = 0; + return; + } - if (op->irqs[0] == 0xffffffff) { - pdev->irq = PCI_IRQ_NONE; + prop = of_find_property(dp, "interrupts", NULL); + if (!prop) { + pdev->irq = 0; return; } + prom_irq = *(unsigned int *) prop->value; + + if (tlb_type != hypervisor) { + /* Fully specified already? */ + if (((prom_irq & PCI_IRQ_IGN) >> 6) == portid) { + pdev->irq = p->irq_build(pbm, pdev, prom_irq); + goto have_irq; + } + + /* An onboard device? (bit 5 set) */ + if ((prom_irq & PCI_IRQ_INO) & 0x20) { + pdev->irq = p->irq_build(pbm, pdev, (portid << 6 | prom_irq)); + goto have_irq; + } + } + + /* Can we find a matching entry in the interrupt-map? */ + if (pci_intmap_match(pdev, &prom_irq)) { + pdev->irq = p->irq_build(pbm, pdev, (portid << 6) | prom_irq); + goto have_irq; + } + + /* Ok, we have to do it the hard way. */ + { + unsigned int bus, slot, line; + + bus = (pbm == &pbm->parent->pbm_B) ? (1 << 4) : 0; + + /* If we have a legal interrupt property, use it as + * the IRQ line. + */ + if (prom_irq > 0 && prom_irq < 5) { + line = ((prom_irq - 1) & 3); + } else { + u8 pci_irq_line; - pdev->irq = op->irqs[0]; + /* Else just directly consult PCI config space. */ + pci_read_config_byte(pdev, PCI_INTERRUPT_PIN, &pci_irq_line); + line = ((pci_irq_line - 1) & 3); + } + + /* Now figure out the slot. + * + * Basically, device number zero on the top-level bus is + * always the PCI host controller. Slot 0 is then device 1. + * PBM A supports two external slots (0 and 1), and PBM B + * supports 4 external slots (0, 1, 2, and 3). On-board PCI + * devices are wired to device numbers outside of these + * ranges. -DaveM + */ + if (pdev->bus->number == pbm->pci_first_busno) { + slot = PCI_SLOT(pdev->devfn) - pbm->pci_first_slot; + } else { + struct pci_dev *bus_dev; + + /* Underneath a bridge, use slot number of parent + * bridge which is closest to the PBM. + */ + bus_dev = pdev->bus->self; + while (bus_dev->bus && + bus_dev->bus->number != pbm->pci_first_busno) + bus_dev = bus_dev->bus->self; + + slot = PCI_SLOT(bus_dev->devfn) - pbm->pci_first_slot; + } + slot = slot << 2; + + pdev->irq = p->irq_build(pbm, pdev, + ((portid << 6) & PCI_IRQ_IGN) | + (bus | slot | line)); + } +have_irq: pci_write_config_byte(pdev, PCI_INTERRUPT_LINE, pdev->irq & PCI_IRQ_INO); } diff --git a/trunk/arch/sparc64/kernel/pci_psycho.c b/trunk/arch/sparc64/kernel/pci_psycho.c index bf7b32b36705..5b2261ebda6f 100644 --- a/trunk/arch/sparc64/kernel/pci_psycho.c +++ b/trunk/arch/sparc64/kernel/pci_psycho.c @@ -18,7 +18,6 @@ #include #include #include -#include #include "pci_impl.h" #include "iommu_common.h" @@ -209,6 +208,110 @@ static struct pci_ops psycho_ops = { .write = psycho_write_pci_cfg, }; +/* PSYCHO interrupt mapping support. */ +#define PSYCHO_IMAP_A_SLOT0 0x0c00UL +#define PSYCHO_IMAP_B_SLOT0 0x0c20UL +static unsigned long psycho_pcislot_imap_offset(unsigned long ino) +{ + unsigned int bus = (ino & 0x10) >> 4; + unsigned int slot = (ino & 0x0c) >> 2; + + if (bus == 0) + return PSYCHO_IMAP_A_SLOT0 + (slot * 8); + else + return PSYCHO_IMAP_B_SLOT0 + (slot * 8); +} + +#define PSYCHO_IMAP_SCSI 0x1000UL +#define PSYCHO_IMAP_ETH 0x1008UL +#define PSYCHO_IMAP_BPP 0x1010UL +#define PSYCHO_IMAP_AU_REC 0x1018UL +#define PSYCHO_IMAP_AU_PLAY 0x1020UL +#define PSYCHO_IMAP_PFAIL 0x1028UL +#define PSYCHO_IMAP_KMS 0x1030UL +#define PSYCHO_IMAP_FLPY 0x1038UL +#define PSYCHO_IMAP_SHW 0x1040UL +#define PSYCHO_IMAP_KBD 0x1048UL +#define PSYCHO_IMAP_MS 0x1050UL +#define PSYCHO_IMAP_SER 0x1058UL +#define PSYCHO_IMAP_TIM0 0x1060UL +#define PSYCHO_IMAP_TIM1 0x1068UL +#define PSYCHO_IMAP_UE 0x1070UL +#define PSYCHO_IMAP_CE 0x1078UL +#define PSYCHO_IMAP_A_ERR 0x1080UL +#define PSYCHO_IMAP_B_ERR 0x1088UL +#define PSYCHO_IMAP_PMGMT 0x1090UL +#define PSYCHO_IMAP_GFX 0x1098UL +#define PSYCHO_IMAP_EUPA 0x10a0UL + +static unsigned long __onboard_imap_off[] = { +/*0x20*/ PSYCHO_IMAP_SCSI, +/*0x21*/ PSYCHO_IMAP_ETH, +/*0x22*/ PSYCHO_IMAP_BPP, +/*0x23*/ PSYCHO_IMAP_AU_REC, +/*0x24*/ PSYCHO_IMAP_AU_PLAY, +/*0x25*/ PSYCHO_IMAP_PFAIL, +/*0x26*/ PSYCHO_IMAP_KMS, +/*0x27*/ PSYCHO_IMAP_FLPY, +/*0x28*/ PSYCHO_IMAP_SHW, +/*0x29*/ PSYCHO_IMAP_KBD, +/*0x2a*/ PSYCHO_IMAP_MS, +/*0x2b*/ PSYCHO_IMAP_SER, +/*0x2c*/ PSYCHO_IMAP_TIM0, +/*0x2d*/ PSYCHO_IMAP_TIM1, +/*0x2e*/ PSYCHO_IMAP_UE, +/*0x2f*/ PSYCHO_IMAP_CE, +/*0x30*/ PSYCHO_IMAP_A_ERR, +/*0x31*/ PSYCHO_IMAP_B_ERR, +/*0x32*/ PSYCHO_IMAP_PMGMT +}; +#define PSYCHO_ONBOARD_IRQ_BASE 0x20 +#define PSYCHO_ONBOARD_IRQ_LAST 0x32 +#define psycho_onboard_imap_offset(__ino) \ + __onboard_imap_off[(__ino) - PSYCHO_ONBOARD_IRQ_BASE] + +#define PSYCHO_ICLR_A_SLOT0 0x1400UL +#define PSYCHO_ICLR_SCSI 0x1800UL + +#define psycho_iclr_offset(ino) \ + ((ino & 0x20) ? (PSYCHO_ICLR_SCSI + (((ino) & 0x1f) << 3)) : \ + (PSYCHO_ICLR_A_SLOT0 + (((ino) & 0x1f)<<3))) + +static unsigned int psycho_irq_build(struct pci_pbm_info *pbm, + struct pci_dev *pdev, + unsigned int ino) +{ + unsigned long imap, iclr; + unsigned long imap_off, iclr_off; + int inofixup = 0; + + ino &= PCI_IRQ_INO; + if (ino < PSYCHO_ONBOARD_IRQ_BASE) { + /* PCI slot */ + imap_off = psycho_pcislot_imap_offset(ino); + } else { + /* Onboard device */ + if (ino > PSYCHO_ONBOARD_IRQ_LAST) { + prom_printf("psycho_irq_build: Wacky INO [%x]\n", ino); + prom_halt(); + } + imap_off = psycho_onboard_imap_offset(ino); + } + + /* Now build the IRQ bucket. */ + imap = pbm->controller_regs + imap_off; + imap += 4; + + iclr_off = psycho_iclr_offset(ino); + iclr = pbm->controller_regs + iclr_off; + iclr += 4; + + if ((ino & 0x20) == 0) + inofixup = ino & 0x03; + + return build_irq(inofixup, iclr, imap); +} + /* PSYCHO error handling support. */ enum psycho_error_type { UE_ERR, CE_ERR, PCI_ERR @@ -841,34 +944,51 @@ static irqreturn_t psycho_pcierr_intr(int irq, void *dev_id, struct pt_regs *reg #define PSYCHO_ECCCTRL_EE 0x8000000000000000UL /* Enable ECC Checking */ #define PSYCHO_ECCCTRL_UE 0x4000000000000000UL /* Enable UE Interrupts */ #define PSYCHO_ECCCTRL_CE 0x2000000000000000UL /* Enable CE INterrupts */ +#define PSYCHO_UE_INO 0x2e +#define PSYCHO_CE_INO 0x2f +#define PSYCHO_PCIERR_A_INO 0x30 +#define PSYCHO_PCIERR_B_INO 0x31 static void psycho_register_error_handlers(struct pci_controller_info *p) { struct pci_pbm_info *pbm = &p->pbm_A; /* arbitrary */ - struct of_device *op = of_find_device_by_node(pbm->prom_node); unsigned long base = p->pbm_A.controller_regs; + unsigned int irq, portid = pbm->portid; u64 tmp; - if (!op) - return; + /* Build IRQs and register handlers. */ + irq = psycho_irq_build(pbm, NULL, (portid << 6) | PSYCHO_UE_INO); + if (request_irq(irq, psycho_ue_intr, + SA_SHIRQ, "PSYCHO UE", p) < 0) { + prom_printf("PSYCHO%d: Cannot register UE interrupt.\n", + p->index); + prom_halt(); + } - /* Psycho interrupt property order is: - * 0: PCIERR PBM B INO - * 1: UE ERR - * 2: CE ERR - * 3: POWER FAIL - * 4: SPARE HARDWARE - * 5: PCIERR PBM A INO - */ + irq = psycho_irq_build(pbm, NULL, (portid << 6) | PSYCHO_CE_INO); + if (request_irq(irq, psycho_ce_intr, + SA_SHIRQ, "PSYCHO CE", p) < 0) { + prom_printf("PSYCHO%d: Cannot register CE interrupt.\n", + p->index); + prom_halt(); + } - if (op->num_irqs < 6) - return; + pbm = &p->pbm_A; + irq = psycho_irq_build(pbm, NULL, (portid << 6) | PSYCHO_PCIERR_A_INO); + if (request_irq(irq, psycho_pcierr_intr, + SA_SHIRQ, "PSYCHO PCIERR", &p->pbm_A) < 0) { + prom_printf("PSYCHO%d(PBMA): Cannot register PciERR interrupt.\n", + p->index); + prom_halt(); + } - request_irq(op->irqs[1], psycho_ue_intr, SA_SHIRQ, "PSYCHO UE", p); - request_irq(op->irqs[2], psycho_ce_intr, SA_SHIRQ, "PSYCHO CE", p); - request_irq(op->irqs[5], psycho_pcierr_intr, SA_SHIRQ, - "PSYCHO PCIERR-A", &p->pbm_A); - request_irq(op->irqs[0], psycho_pcierr_intr, SA_SHIRQ, - "PSYCHO PCIERR-B", &p->pbm_B); + pbm = &p->pbm_B; + irq = psycho_irq_build(pbm, NULL, (portid << 6) | PSYCHO_PCIERR_B_INO); + if (request_irq(irq, psycho_pcierr_intr, + SA_SHIRQ, "PSYCHO PCIERR", &p->pbm_B) < 0) { + prom_printf("PSYCHO%d(PBMB): Cannot register PciERR interrupt.\n", + p->index); + prom_halt(); + } /* Enable UE and CE interrupts for controller. */ psycho_write(base + PSYCHO_ECC_CTRL, @@ -1051,7 +1171,9 @@ static void psycho_iommu_init(struct pci_controller_info *p) /* If necessary, hook us up for starfire IRQ translations. */ if (this_is_starfire) - starfire_hookup(p->pbm_A.portid); + p->starfire_cookie = starfire_hookup(p->pbm_A.portid); + else + p->starfire_cookie = NULL; } #define PSYCHO_IRQ_RETRY 0x1a00UL @@ -1286,6 +1408,7 @@ void psycho_init(struct device_node *dp, char *model_name) p->index = pci_num_controllers++; p->pbms_same_domain = 0; p->scan_bus = psycho_scan_bus; + p->irq_build = psycho_irq_build; p->base_address_update = psycho_base_address_update; p->resource_adjust = psycho_resource_adjust; p->pci_ops = &psycho_ops; diff --git a/trunk/arch/sparc64/kernel/pci_sabre.c b/trunk/arch/sparc64/kernel/pci_sabre.c index 5e087b0fb4c9..26f194ce4400 100644 --- a/trunk/arch/sparc64/kernel/pci_sabre.c +++ b/trunk/arch/sparc64/kernel/pci_sabre.c @@ -485,6 +485,114 @@ static struct pci_ops sabre_ops = { .write = sabre_write_pci_cfg, }; +static unsigned long sabre_pcislot_imap_offset(unsigned long ino) +{ + unsigned int bus = (ino & 0x10) >> 4; + unsigned int slot = (ino & 0x0c) >> 2; + + if (bus == 0) + return SABRE_IMAP_A_SLOT0 + (slot * 8); + else + return SABRE_IMAP_B_SLOT0 + (slot * 8); +} + +static unsigned long __onboard_imap_off[] = { +/*0x20*/ SABRE_IMAP_SCSI, +/*0x21*/ SABRE_IMAP_ETH, +/*0x22*/ SABRE_IMAP_BPP, +/*0x23*/ SABRE_IMAP_AU_REC, +/*0x24*/ SABRE_IMAP_AU_PLAY, +/*0x25*/ SABRE_IMAP_PFAIL, +/*0x26*/ SABRE_IMAP_KMS, +/*0x27*/ SABRE_IMAP_FLPY, +/*0x28*/ SABRE_IMAP_SHW, +/*0x29*/ SABRE_IMAP_KBD, +/*0x2a*/ SABRE_IMAP_MS, +/*0x2b*/ SABRE_IMAP_SER, +/*0x2c*/ 0 /* reserved */, +/*0x2d*/ 0 /* reserved */, +/*0x2e*/ SABRE_IMAP_UE, +/*0x2f*/ SABRE_IMAP_CE, +/*0x30*/ SABRE_IMAP_PCIERR, +}; +#define SABRE_ONBOARD_IRQ_BASE 0x20 +#define SABRE_ONBOARD_IRQ_LAST 0x30 +#define sabre_onboard_imap_offset(__ino) \ + __onboard_imap_off[(__ino) - SABRE_ONBOARD_IRQ_BASE] + +#define sabre_iclr_offset(ino) \ + ((ino & 0x20) ? (SABRE_ICLR_SCSI + (((ino) & 0x1f) << 3)) : \ + (SABRE_ICLR_A_SLOT0 + (((ino) & 0x1f)<<3))) + +/* When a device lives behind a bridge deeper in the PCI bus topology + * than APB, a special sequence must run to make sure all pending DMA + * transfers at the time of IRQ delivery are visible in the coherency + * domain by the cpu. This sequence is to perform a read on the far + * side of the non-APB bridge, then perform a read of Sabre's DMA + * write-sync register. + */ +static void sabre_wsync_handler(unsigned int ino, void *_arg1, void *_arg2) +{ + struct pci_dev *pdev = _arg1; + unsigned long sync_reg = (unsigned long) _arg2; + u16 _unused; + + pci_read_config_word(pdev, PCI_VENDOR_ID, &_unused); + sabre_read(sync_reg); +} + +static unsigned int sabre_irq_build(struct pci_pbm_info *pbm, + struct pci_dev *pdev, + unsigned int ino) +{ + unsigned long imap, iclr; + unsigned long imap_off, iclr_off; + int inofixup = 0; + int virt_irq; + + ino &= PCI_IRQ_INO; + if (ino < SABRE_ONBOARD_IRQ_BASE) { + /* PCI slot */ + imap_off = sabre_pcislot_imap_offset(ino); + } else { + /* onboard device */ + if (ino > SABRE_ONBOARD_IRQ_LAST) { + prom_printf("sabre_irq_build: Wacky INO [%x]\n", ino); + prom_halt(); + } + imap_off = sabre_onboard_imap_offset(ino); + } + + /* Now build the IRQ bucket. */ + imap = pbm->controller_regs + imap_off; + imap += 4; + + iclr_off = sabre_iclr_offset(ino); + iclr = pbm->controller_regs + iclr_off; + iclr += 4; + + if ((ino & 0x20) == 0) + inofixup = ino & 0x03; + + virt_irq = build_irq(inofixup, iclr, imap); + + if (pdev) { + struct pcidev_cookie *pcp = pdev->sysdata; + + if (pdev->bus->number != pcp->pbm->pci_first_busno) { + struct pci_controller_info *p = pcp->pbm->parent; + + irq_install_pre_handler(virt_irq, + sabre_wsync_handler, + pdev, + (void *) + p->pbm_A.controller_regs + + SABRE_WRSYNC); + } + } + return virt_irq; +} + /* SABRE error handling support. */ static void sabre_check_iommu_error(struct pci_controller_info *p, unsigned long afsr, @@ -821,30 +929,17 @@ static irqreturn_t sabre_pcierr_intr(int irq, void *dev_id, struct pt_regs *regs return IRQ_HANDLED; } +/* XXX What about PowerFail/PowerManagement??? -DaveM */ +#define SABRE_UE_INO 0x2e +#define SABRE_CE_INO 0x2f +#define SABRE_PCIERR_INO 0x30 static void sabre_register_error_handlers(struct pci_controller_info *p) { struct pci_pbm_info *pbm = &p->pbm_A; /* arbitrary */ - struct device_node *dp = pbm->prom_node; - struct of_device *op; unsigned long base = pbm->controller_regs; + unsigned long irq, portid = pbm->portid; u64 tmp; - if (pbm->chip_type == PBM_CHIP_TYPE_SABRE) - dp = dp->parent; - - op = of_find_device_by_node(dp); - if (!op) - return; - - /* Sabre/Hummingbird IRQ property layout is: - * 0: PCI ERR - * 1: UE ERR - * 2: CE ERR - * 3: POWER FAIL - */ - if (op->num_irqs < 4) - return; - /* We clear the error bits in the appropriate AFSR before * registering the handler so that we don't get spurious * interrupts. @@ -853,16 +948,32 @@ static void sabre_register_error_handlers(struct pci_controller_info *p) (SABRE_UEAFSR_PDRD | SABRE_UEAFSR_PDWR | SABRE_UEAFSR_SDRD | SABRE_UEAFSR_SDWR | SABRE_UEAFSR_SDTE | SABRE_UEAFSR_PDTE)); - - request_irq(op->irqs[1], sabre_ue_intr, SA_SHIRQ, "SABRE UE", p); + irq = sabre_irq_build(pbm, NULL, (portid << 6) | SABRE_UE_INO); + if (request_irq(irq, sabre_ue_intr, + SA_SHIRQ, "SABRE UE", p) < 0) { + prom_printf("SABRE%d: Cannot register UE interrupt.\n", + p->index); + prom_halt(); + } sabre_write(base + SABRE_CE_AFSR, (SABRE_CEAFSR_PDRD | SABRE_CEAFSR_PDWR | SABRE_CEAFSR_SDRD | SABRE_CEAFSR_SDWR)); + irq = sabre_irq_build(pbm, NULL, (portid << 6) | SABRE_CE_INO); + if (request_irq(irq, sabre_ce_intr, + SA_SHIRQ, "SABRE CE", p) < 0) { + prom_printf("SABRE%d: Cannot register CE interrupt.\n", + p->index); + prom_halt(); + } - request_irq(op->irqs[2], sabre_ce_intr, SA_SHIRQ, "SABRE CE", p); - request_irq(op->irqs[0], sabre_pcierr_intr, SA_SHIRQ, - "SABRE PCIERR", p); + irq = sabre_irq_build(pbm, NULL, (portid << 6) | SABRE_PCIERR_INO); + if (request_irq(irq, sabre_pcierr_intr, + SA_SHIRQ, "SABRE PCIERR", p) < 0) { + prom_printf("SABRE%d: Cannot register PciERR interrupt.\n", + p->index); + prom_halt(); + } tmp = sabre_read(base + SABRE_PCICTRL); tmp |= SABRE_PCICTRL_ERREN; @@ -1381,6 +1492,7 @@ void sabre_init(struct device_node *dp, char *model_name) p->index = pci_num_controllers++; p->pbms_same_domain = 1; p->scan_bus = sabre_scan_bus; + p->irq_build = sabre_irq_build; p->base_address_update = sabre_base_address_update; p->resource_adjust = sabre_resource_adjust; p->pci_ops = &sabre_ops; diff --git a/trunk/arch/sparc64/kernel/pci_schizo.c b/trunk/arch/sparc64/kernel/pci_schizo.c index 5c6e2a9b91f8..f16449ccd7bc 100644 --- a/trunk/arch/sparc64/kernel/pci_schizo.c +++ b/trunk/arch/sparc64/kernel/pci_schizo.c @@ -217,6 +217,116 @@ static struct pci_ops schizo_ops = { .write = schizo_write_pci_cfg, }; +/* SCHIZO interrupt mapping support. Unlike Psycho, for this controller the + * imap/iclr registers are per-PBM. + */ +#define SCHIZO_IMAP_BASE 0x1000UL +#define SCHIZO_ICLR_BASE 0x1400UL + +static unsigned long schizo_imap_offset(unsigned long ino) +{ + return SCHIZO_IMAP_BASE + (ino * 8UL); +} + +static unsigned long schizo_iclr_offset(unsigned long ino) +{ + return SCHIZO_ICLR_BASE + (ino * 8UL); +} + +static void tomatillo_wsync_handler(unsigned int ino, void *_arg1, void *_arg2) +{ + unsigned long sync_reg = (unsigned long) _arg2; + u64 mask = 1UL << (ino & IMAP_INO); + u64 val; + int limit; + + schizo_write(sync_reg, mask); + + limit = 100000; + val = 0; + while (--limit) { + val = schizo_read(sync_reg); + if (!(val & mask)) + break; + } + if (limit <= 0) { + printk("tomatillo_wsync_handler: DMA won't sync [%lx:%lx]\n", + val, mask); + } + + if (_arg1) { + static unsigned char cacheline[64] + __attribute__ ((aligned (64))); + + __asm__ __volatile__("rd %%fprs, %0\n\t" + "or %0, %4, %1\n\t" + "wr %1, 0x0, %%fprs\n\t" + "stda %%f0, [%5] %6\n\t" + "wr %0, 0x0, %%fprs\n\t" + "membar #Sync" + : "=&r" (mask), "=&r" (val) + : "0" (mask), "1" (val), + "i" (FPRS_FEF), "r" (&cacheline[0]), + "i" (ASI_BLK_COMMIT_P)); + } +} + +static unsigned long schizo_ino_to_iclr(struct pci_pbm_info *pbm, + unsigned int ino) +{ + ino &= PCI_IRQ_INO; + return pbm->pbm_regs + schizo_iclr_offset(ino) + 4; +} + +static unsigned long schizo_ino_to_imap(struct pci_pbm_info *pbm, + unsigned int ino) +{ + ino &= PCI_IRQ_INO; + return pbm->pbm_regs + schizo_imap_offset(ino) + 4; +} + +static unsigned int schizo_irq_build(struct pci_pbm_info *pbm, + struct pci_dev *pdev, + unsigned int ino) +{ + unsigned long imap, iclr; + int ign_fixup; + int virt_irq; + + ino &= PCI_IRQ_INO; + + /* Now build the IRQ bucket. */ + imap = schizo_ino_to_imap(pbm, ino); + iclr = schizo_ino_to_iclr(pbm, ino); + + /* On Schizo, no inofixup occurs. This is because each + * INO has it's own IMAP register. On Psycho and Sabre + * there is only one IMAP register for each PCI slot even + * though four different INOs can be generated by each + * PCI slot. + * + * But, for JBUS variants (essentially, Tomatillo), we have + * to fixup the lowest bit of the interrupt group number. + */ + ign_fixup = 0; + if (pbm->chip_type == PBM_CHIP_TYPE_TOMATILLO) { + if (pbm->portid & 1) + ign_fixup = (1 << 6); + } + + virt_irq = build_irq(ign_fixup, iclr, imap); + + if (pdev && pbm->chip_type == PBM_CHIP_TYPE_TOMATILLO) { + irq_install_pre_handler(virt_irq, + tomatillo_wsync_handler, + ((pbm->chip_version <= 4) ? + (void *) 1 : (void *) 0), + (void *) pbm->sync_reg); + } + + return virt_irq; +} + /* SCHIZO error handling support. */ enum schizo_error_type { UE_ERR, CE_ERR, PCI_ERR, SAFARI_ERR @@ -252,6 +362,34 @@ struct pci_pbm_info *pbm_for_ino(struct pci_controller_info *p, u32 ino) return &p->pbm_A; } +static void schizo_clear_other_err_intr(struct pci_controller_info *p, int irq) +{ + struct pci_pbm_info *pbm; + unsigned long iclr; + + /* Do not clear the interrupt for the other PCI bus. + * + * This "ACK both PBM IRQs" only needs to be performed + * for chip-wide error interrupts. + */ + if ((irq & IMAP_INO) == SCHIZO_PCIERR_A_INO || + (irq & IMAP_INO) == SCHIZO_PCIERR_B_INO) + return; + + pbm = pbm_for_ino(p, irq); + if (pbm == &p->pbm_A) + pbm = &p->pbm_B; + else + pbm = &p->pbm_A; + + schizo_irq_build(pbm, NULL, + (pbm->portid << 6) | (irq & IMAP_INO)); + + iclr = schizo_ino_to_iclr(pbm, + (pbm->portid << 6) | (irq & IMAP_INO)); + upa_writel(ICLR_IDLE, iclr); +} + #define SCHIZO_STC_ERR 0xb800UL /* --> 0xba00 */ #define SCHIZO_STC_TAG 0xba00UL /* --> 0xba80 */ #define SCHIZO_STC_LINE 0xbb00UL /* --> 0xbb80 */ @@ -582,6 +720,8 @@ static irqreturn_t schizo_ue_intr(int irq, void *dev_id, struct pt_regs *regs) /* Interrogate IOMMU for error status. */ schizo_check_iommu_error(p, UE_ERR); + schizo_clear_other_err_intr(p, irq); + return IRQ_HANDLED; } @@ -671,6 +811,8 @@ static irqreturn_t schizo_ce_intr(int irq, void *dev_id, struct pt_regs *regs) printk("(none)"); printk("]\n"); + schizo_clear_other_err_intr(p, irq); + return IRQ_HANDLED; } @@ -891,6 +1033,8 @@ static irqreturn_t schizo_pcierr_intr(int irq, void *dev_id, struct pt_regs *reg if (error_bits & (SCHIZO_PCIAFSR_PPERR | SCHIZO_PCIAFSR_SPERR)) pci_scan_for_parity_error(p, pbm, pbm->pci_bus); + schizo_clear_other_err_intr(p, irq); + return IRQ_HANDLED; } @@ -946,6 +1090,7 @@ static irqreturn_t schizo_safarierr_intr(int irq, void *dev_id, struct pt_regs * printk("PCI%d: Unexpected Safari/JBUS error interrupt, errlog[%016lx]\n", p->index, errlog); + schizo_clear_other_err_intr(p, irq); return IRQ_HANDLED; } @@ -953,6 +1098,7 @@ static irqreturn_t schizo_safarierr_intr(int irq, void *dev_id, struct pt_regs * p->index); schizo_check_iommu_error(p, SAFARI_ERR); + schizo_clear_other_err_intr(p, irq); return IRQ_HANDLED; } @@ -984,47 +1130,74 @@ static irqreturn_t schizo_safarierr_intr(int irq, void *dev_id, struct pt_regs * static void tomatillo_register_error_handlers(struct pci_controller_info *p) { struct pci_pbm_info *pbm; - struct of_device *op; + unsigned int irq; u64 tmp, err_mask, err_no_mask; - /* Tomatillo IRQ property layout is: - * 0: PCIERR - * 1: UE ERR - * 2: CE ERR - * 3: SERR - * 4: POWER FAIL? - */ - + /* Build IRQs and register handlers. */ pbm = pbm_for_ino(p, SCHIZO_UE_INO); - op = of_find_device_by_node(pbm->prom_node); - if (op) - request_irq(op->irqs[1], schizo_ue_intr, SA_SHIRQ, - "TOMATILLO_UE", p); + irq = schizo_irq_build(pbm, NULL, (pbm->portid << 6) | SCHIZO_UE_INO); + if (request_irq(irq, schizo_ue_intr, + SA_SHIRQ, "TOMATILLO UE", p) < 0) { + prom_printf("%s: Cannot register UE interrupt.\n", + pbm->name); + prom_halt(); + } + tmp = upa_readl(schizo_ino_to_imap(pbm, (pbm->portid << 6) | SCHIZO_UE_INO)); + upa_writel(tmp, (pbm->pbm_regs + + schizo_imap_offset(SCHIZO_UE_INO) + 4)); pbm = pbm_for_ino(p, SCHIZO_CE_INO); - op = of_find_device_by_node(pbm->prom_node); - if (op) - request_irq(op->irqs[2], schizo_ce_intr, SA_SHIRQ, - "TOMATILLO CE", p); + irq = schizo_irq_build(pbm, NULL, (pbm->portid << 6) | SCHIZO_CE_INO); + if (request_irq(irq, schizo_ce_intr, + SA_SHIRQ, "TOMATILLO CE", p) < 0) { + prom_printf("%s: Cannot register CE interrupt.\n", + pbm->name); + prom_halt(); + } + tmp = upa_readl(schizo_ino_to_imap(pbm, (pbm->portid << 6) | SCHIZO_CE_INO)); + upa_writel(tmp, (pbm->pbm_regs + + schizo_imap_offset(SCHIZO_CE_INO) + 4)); pbm = pbm_for_ino(p, SCHIZO_PCIERR_A_INO); - op = of_find_device_by_node(pbm->prom_node); - if (op) - request_irq(op->irqs[0], schizo_pcierr_intr, SA_SHIRQ, - "TOMATILLO PCIERR-A", pbm); - + irq = schizo_irq_build(pbm, NULL, ((pbm->portid << 6) | + SCHIZO_PCIERR_A_INO)); + if (request_irq(irq, schizo_pcierr_intr, + SA_SHIRQ, "TOMATILLO PCIERR", pbm) < 0) { + prom_printf("%s: Cannot register PBM A PciERR interrupt.\n", + pbm->name); + prom_halt(); + } + tmp = upa_readl(schizo_ino_to_imap(pbm, ((pbm->portid << 6) | + SCHIZO_PCIERR_A_INO))); + upa_writel(tmp, (pbm->pbm_regs + + schizo_imap_offset(SCHIZO_PCIERR_A_INO) + 4)); pbm = pbm_for_ino(p, SCHIZO_PCIERR_B_INO); - op = of_find_device_by_node(pbm->prom_node); - if (op) - request_irq(op->irqs[0], schizo_pcierr_intr, SA_SHIRQ, - "TOMATILLO PCIERR-B", pbm); + irq = schizo_irq_build(pbm, NULL, ((pbm->portid << 6) | + SCHIZO_PCIERR_B_INO)); + if (request_irq(irq, schizo_pcierr_intr, + SA_SHIRQ, "TOMATILLO PCIERR", pbm) < 0) { + prom_printf("%s: Cannot register PBM B PciERR interrupt.\n", + pbm->name); + prom_halt(); + } + tmp = upa_readl(schizo_ino_to_imap(pbm, ((pbm->portid << 6) | + SCHIZO_PCIERR_B_INO))); + upa_writel(tmp, (pbm->pbm_regs + + schizo_imap_offset(SCHIZO_PCIERR_B_INO) + 4)); pbm = pbm_for_ino(p, SCHIZO_SERR_INO); - op = of_find_device_by_node(pbm->prom_node); - if (op) - request_irq(op->irqs[3], schizo_safarierr_intr, SA_SHIRQ, - "TOMATILLO SERR", p); + irq = schizo_irq_build(pbm, NULL, (pbm->portid << 6) | SCHIZO_SERR_INO); + if (request_irq(irq, schizo_safarierr_intr, + SA_SHIRQ, "TOMATILLO SERR", p) < 0) { + prom_printf("%s: Cannot register SafariERR interrupt.\n", + pbm->name); + prom_halt(); + } + tmp = upa_readl(schizo_ino_to_imap(pbm, ((pbm->portid << 6) | + SCHIZO_SERR_INO))); + upa_writel(tmp, (pbm->pbm_regs + + schizo_imap_offset(SCHIZO_SERR_INO) + 4)); /* Enable UE and CE interrupts for controller. */ schizo_write(p->pbm_A.controller_regs + SCHIZO_ECC_CTRL, @@ -1092,47 +1265,64 @@ static void tomatillo_register_error_handlers(struct pci_controller_info *p) static void schizo_register_error_handlers(struct pci_controller_info *p) { struct pci_pbm_info *pbm; - struct of_device *op; + unsigned int irq; u64 tmp, err_mask, err_no_mask; - /* Schizo IRQ property layout is: - * 0: PCIERR - * 1: UE ERR - * 2: CE ERR - * 3: SERR - * 4: POWER FAIL? - */ - + /* Build IRQs and register handlers. */ pbm = pbm_for_ino(p, SCHIZO_UE_INO); - op = of_find_device_by_node(pbm->prom_node); - if (op) - request_irq(op->irqs[1], schizo_ue_intr, SA_SHIRQ, - "SCHIZO_UE", p); + irq = schizo_irq_build(pbm, NULL, (pbm->portid << 6) | SCHIZO_UE_INO); + if (request_irq(irq, schizo_ue_intr, + SA_SHIRQ, "SCHIZO UE", p) < 0) { + prom_printf("%s: Cannot register UE interrupt.\n", + pbm->name); + prom_halt(); + } + tmp = upa_readl(schizo_ino_to_imap(pbm, (pbm->portid << 6) | SCHIZO_UE_INO)); + upa_writel(tmp, (pbm->pbm_regs + schizo_imap_offset(SCHIZO_UE_INO) + 4)); pbm = pbm_for_ino(p, SCHIZO_CE_INO); - op = of_find_device_by_node(pbm->prom_node); - if (op) - request_irq(op->irqs[2], schizo_ce_intr, SA_SHIRQ, - "SCHIZO CE", p); + irq = schizo_irq_build(pbm, NULL, (pbm->portid << 6) | SCHIZO_CE_INO); + if (request_irq(irq, schizo_ce_intr, + SA_SHIRQ, "SCHIZO CE", p) < 0) { + prom_printf("%s: Cannot register CE interrupt.\n", + pbm->name); + prom_halt(); + } + tmp = upa_readl(schizo_ino_to_imap(pbm, (pbm->portid << 6) | SCHIZO_CE_INO)); + upa_writel(tmp, (pbm->pbm_regs + schizo_imap_offset(SCHIZO_CE_INO) + 4)); pbm = pbm_for_ino(p, SCHIZO_PCIERR_A_INO); - op = of_find_device_by_node(pbm->prom_node); - if (op) - request_irq(op->irqs[0], schizo_pcierr_intr, SA_SHIRQ, - "SCHIZO PCIERR-A", pbm); - + irq = schizo_irq_build(pbm, NULL, (pbm->portid << 6) | SCHIZO_PCIERR_A_INO); + if (request_irq(irq, schizo_pcierr_intr, + SA_SHIRQ, "SCHIZO PCIERR", pbm) < 0) { + prom_printf("%s: Cannot register PBM A PciERR interrupt.\n", + pbm->name); + prom_halt(); + } + tmp = upa_readl(schizo_ino_to_imap(pbm, (pbm->portid << 6) | SCHIZO_PCIERR_A_INO)); + upa_writel(tmp, (pbm->pbm_regs + schizo_imap_offset(SCHIZO_PCIERR_A_INO) + 4)); pbm = pbm_for_ino(p, SCHIZO_PCIERR_B_INO); - op = of_find_device_by_node(pbm->prom_node); - if (op) - request_irq(op->irqs[0], schizo_pcierr_intr, SA_SHIRQ, - "SCHIZO PCIERR-B", pbm); + irq = schizo_irq_build(pbm, NULL, (pbm->portid << 6) | SCHIZO_PCIERR_B_INO); + if (request_irq(irq, schizo_pcierr_intr, + SA_SHIRQ, "SCHIZO PCIERR", &p->pbm_B) < 0) { + prom_printf("%s: Cannot register PBM B PciERR interrupt.\n", + pbm->name); + prom_halt(); + } + tmp = upa_readl(schizo_ino_to_imap(pbm, (pbm->portid << 6) | SCHIZO_PCIERR_B_INO)); + upa_writel(tmp, (pbm->pbm_regs + schizo_imap_offset(SCHIZO_PCIERR_B_INO) + 4)); pbm = pbm_for_ino(p, SCHIZO_SERR_INO); - op = of_find_device_by_node(pbm->prom_node); - if (op) - request_irq(op->irqs[3], schizo_safarierr_intr, SA_SHIRQ, - "SCHIZO SERR", p); + irq = schizo_irq_build(pbm, NULL, (pbm->portid << 6) | SCHIZO_SERR_INO); + if (request_irq(irq, schizo_safarierr_intr, + SA_SHIRQ, "SCHIZO SERR", p) < 0) { + prom_printf("%s: Cannot register SafariERR interrupt.\n", + pbm->name); + prom_halt(); + } + tmp = upa_readl(schizo_ino_to_imap(pbm, (pbm->portid << 6) | SCHIZO_SERR_INO)); + upa_writel(tmp, (pbm->pbm_regs + schizo_imap_offset(SCHIZO_SERR_INO) + 4)); /* Enable UE and CE interrupts for controller. */ schizo_write(p->pbm_A.controller_regs + SCHIZO_ECC_CTRL, @@ -1832,6 +2022,7 @@ static void __schizo_init(struct device_node *dp, char *model_name, int chip_typ p->scan_bus = (chip_type == PBM_CHIP_TYPE_TOMATILLO ? tomatillo_scan_bus : schizo_scan_bus); + p->irq_build = schizo_irq_build; p->base_address_update = schizo_base_address_update; p->resource_adjust = schizo_resource_adjust; p->pci_ops = &schizo_ops; diff --git a/trunk/arch/sparc64/kernel/pci_sun4v.c b/trunk/arch/sparc64/kernel/pci_sun4v.c index 03ad4c06758e..b69e2270a721 100644 --- a/trunk/arch/sparc64/kernel/pci_sun4v.c +++ b/trunk/arch/sparc64/kernel/pci_sun4v.c @@ -843,6 +843,15 @@ static void pci_sun4v_scan_bus(struct pci_controller_info *p) /* XXX register error interrupt handlers XXX */ } +static unsigned int pci_sun4v_irq_build(struct pci_pbm_info *pbm, + struct pci_dev *pdev, + unsigned int devino) +{ + u32 devhandle = pbm->devhandle; + + return sun4v_build_irq(devhandle, devino); +} + static void pci_sun4v_base_address_update(struct pci_dev *pdev, int resource) { struct pcidev_cookie *pcp = pdev->sysdata; @@ -1191,6 +1200,7 @@ void sun4v_pci_init(struct device_node *dp, char *model_name) p->pbms_same_domain = 0; p->scan_bus = pci_sun4v_scan_bus; + p->irq_build = pci_sun4v_irq_build; p->base_address_update = pci_sun4v_base_address_update; p->resource_adjust = pci_sun4v_resource_adjust; p->pci_ops = &pci_sun4v_ops; diff --git a/trunk/arch/sparc64/kernel/power.c b/trunk/arch/sparc64/kernel/power.c index e55466c77b61..9496c7734014 100644 --- a/trunk/arch/sparc64/kernel/power.c +++ b/trunk/arch/sparc64/kernel/power.c @@ -6,6 +6,7 @@ #define __KERNEL_SYSCALLS__ +#include #include #include #include @@ -16,10 +17,9 @@ #include #include +#include +#include #include -#include -#include -#include #include @@ -30,7 +30,6 @@ int scons_pwroff = 1; #ifdef CONFIG_PCI -#include static void __iomem *power_reg; static DECLARE_WAIT_QUEUE_HEAD(powerd_wait); @@ -116,33 +115,27 @@ static int __init has_button_interrupt(unsigned int irq, struct device_node *dp) return 1; } -static int __devinit power_probe(struct of_device *op, const struct of_device_id *match) +static void __devinit power_probe_common(struct of_device *dev, struct resource *res, unsigned int irq) { - struct resource *res = &op->resource[0]; - unsigned int irq= op->irqs[0]; + power_reg = ioremap(res->start, 0x4); - power_reg = of_ioremap(res, 0, 0x4, "power"); - - printk("%s: Control reg at %lx ... ", - op->node->name, res->start); + printk("power: Control reg at %p ... ", power_reg); poweroff_method = machine_halt; /* able to use the standard halt */ - if (has_button_interrupt(irq, op->node)) { + if (has_button_interrupt(irq, dev->node)) { if (kernel_thread(powerd, NULL, CLONE_FS) < 0) { printk("Failed to start power daemon.\n"); - return 0; + return; } printk("powerd running.\n"); if (request_irq(irq, - power_handler, 0, "power", NULL) < 0) + power_handler, SA_SHIRQ, "power", NULL) < 0) printk("power: Error, cannot register IRQ handler.\n"); } else { printk("not using powerd.\n"); } - - return 0; } static struct of_device_id power_match[] = { @@ -152,15 +145,44 @@ static struct of_device_id power_match[] = { {}, }; -static struct of_platform_driver power_driver = { +static int __devinit ebus_power_probe(struct of_device *dev, const struct of_device_id *match) +{ + struct linux_ebus_device *edev = to_ebus_device(&dev->dev); + struct resource *res = &edev->resource[0]; + unsigned int irq = edev->irqs[0]; + + power_probe_common(dev, res,irq); + + return 0; +} + +static struct of_platform_driver ebus_power_driver = { + .name = "power", + .match_table = power_match, + .probe = ebus_power_probe, +}; + +static int __devinit isa_power_probe(struct of_device *dev, const struct of_device_id *match) +{ + struct sparc_isa_device *idev = to_isa_device(&dev->dev); + struct resource *res = &idev->resource; + unsigned int irq = idev->irq; + + power_probe_common(dev, res,irq); + + return 0; +} + +static struct of_platform_driver isa_power_driver = { .name = "power", .match_table = power_match, - .probe = power_probe, + .probe = isa_power_probe, }; void __init power_init(void) { - of_register_driver(&power_driver, &of_bus_type); + of_register_driver(&ebus_power_driver, &ebus_bus_type); + of_register_driver(&isa_power_driver, &isa_bus_type); return; } #endif /* CONFIG_PCI */ diff --git a/trunk/arch/sparc64/kernel/process.c b/trunk/arch/sparc64/kernel/process.c index 7d75cd4eb297..1c7ca2f712d9 100644 --- a/trunk/arch/sparc64/kernel/process.c +++ b/trunk/arch/sparc64/kernel/process.c @@ -12,6 +12,7 @@ #include +#include #include #include #include @@ -25,6 +26,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/sparc64/kernel/prom.c b/trunk/arch/sparc64/kernel/prom.c index fa484d4f241e..8e87e7ea0325 100644 --- a/trunk/arch/sparc64/kernel/prom.c +++ b/trunk/arch/sparc64/kernel/prom.c @@ -15,7 +15,6 @@ * 2 of the License, or (at your option) any later version. */ -#include #include #include #include @@ -24,11 +23,7 @@ #include #include -#include #include -#include -#include -#include static struct device_node *allnodes; @@ -195,36 +190,6 @@ int of_getintprop_default(struct device_node *np, const char *name, int def) } EXPORT_SYMBOL(of_getintprop_default); -int of_n_addr_cells(struct device_node *np) -{ - int* ip; - do { - if (np->parent) - np = np->parent; - ip = of_get_property(np, "#address-cells", NULL); - if (ip != NULL) - return *ip; - } while (np->parent); - /* No #address-cells property for the root node, default to 2 */ - return 2; -} -EXPORT_SYMBOL(of_n_addr_cells); - -int of_n_size_cells(struct device_node *np) -{ - int* ip; - do { - if (np->parent) - np = np->parent; - ip = of_get_property(np, "#size-cells", NULL); - if (ip != NULL) - return *ip; - } while (np->parent); - /* No #size-cells property for the root node, default to 1 */ - return 1; -} -EXPORT_SYMBOL(of_n_size_cells); - int of_set_property(struct device_node *dp, const char *name, void *val, int len) { struct property **prevp; @@ -288,777 +253,6 @@ static void * __init prom_early_alloc(unsigned long size) return ret; } -#ifdef CONFIG_PCI -/* PSYCHO interrupt mapping support. */ -#define PSYCHO_IMAP_A_SLOT0 0x0c00UL -#define PSYCHO_IMAP_B_SLOT0 0x0c20UL -static unsigned long psycho_pcislot_imap_offset(unsigned long ino) -{ - unsigned int bus = (ino & 0x10) >> 4; - unsigned int slot = (ino & 0x0c) >> 2; - - if (bus == 0) - return PSYCHO_IMAP_A_SLOT0 + (slot * 8); - else - return PSYCHO_IMAP_B_SLOT0 + (slot * 8); -} - -#define PSYCHO_IMAP_SCSI 0x1000UL -#define PSYCHO_IMAP_ETH 0x1008UL -#define PSYCHO_IMAP_BPP 0x1010UL -#define PSYCHO_IMAP_AU_REC 0x1018UL -#define PSYCHO_IMAP_AU_PLAY 0x1020UL -#define PSYCHO_IMAP_PFAIL 0x1028UL -#define PSYCHO_IMAP_KMS 0x1030UL -#define PSYCHO_IMAP_FLPY 0x1038UL -#define PSYCHO_IMAP_SHW 0x1040UL -#define PSYCHO_IMAP_KBD 0x1048UL -#define PSYCHO_IMAP_MS 0x1050UL -#define PSYCHO_IMAP_SER 0x1058UL -#define PSYCHO_IMAP_TIM0 0x1060UL -#define PSYCHO_IMAP_TIM1 0x1068UL -#define PSYCHO_IMAP_UE 0x1070UL -#define PSYCHO_IMAP_CE 0x1078UL -#define PSYCHO_IMAP_A_ERR 0x1080UL -#define PSYCHO_IMAP_B_ERR 0x1088UL -#define PSYCHO_IMAP_PMGMT 0x1090UL -#define PSYCHO_IMAP_GFX 0x1098UL -#define PSYCHO_IMAP_EUPA 0x10a0UL - -static unsigned long __psycho_onboard_imap_off[] = { -/*0x20*/ PSYCHO_IMAP_SCSI, -/*0x21*/ PSYCHO_IMAP_ETH, -/*0x22*/ PSYCHO_IMAP_BPP, -/*0x23*/ PSYCHO_IMAP_AU_REC, -/*0x24*/ PSYCHO_IMAP_AU_PLAY, -/*0x25*/ PSYCHO_IMAP_PFAIL, -/*0x26*/ PSYCHO_IMAP_KMS, -/*0x27*/ PSYCHO_IMAP_FLPY, -/*0x28*/ PSYCHO_IMAP_SHW, -/*0x29*/ PSYCHO_IMAP_KBD, -/*0x2a*/ PSYCHO_IMAP_MS, -/*0x2b*/ PSYCHO_IMAP_SER, -/*0x2c*/ PSYCHO_IMAP_TIM0, -/*0x2d*/ PSYCHO_IMAP_TIM1, -/*0x2e*/ PSYCHO_IMAP_UE, -/*0x2f*/ PSYCHO_IMAP_CE, -/*0x30*/ PSYCHO_IMAP_A_ERR, -/*0x31*/ PSYCHO_IMAP_B_ERR, -/*0x32*/ PSYCHO_IMAP_PMGMT -}; -#define PSYCHO_ONBOARD_IRQ_BASE 0x20 -#define PSYCHO_ONBOARD_IRQ_LAST 0x32 -#define psycho_onboard_imap_offset(__ino) \ - __psycho_onboard_imap_off[(__ino) - PSYCHO_ONBOARD_IRQ_BASE] - -#define PSYCHO_ICLR_A_SLOT0 0x1400UL -#define PSYCHO_ICLR_SCSI 0x1800UL - -#define psycho_iclr_offset(ino) \ - ((ino & 0x20) ? (PSYCHO_ICLR_SCSI + (((ino) & 0x1f) << 3)) : \ - (PSYCHO_ICLR_A_SLOT0 + (((ino) & 0x1f)<<3))) - -static unsigned int psycho_irq_build(struct device_node *dp, - unsigned int ino, - void *_data) -{ - unsigned long controller_regs = (unsigned long) _data; - unsigned long imap, iclr; - unsigned long imap_off, iclr_off; - int inofixup = 0; - - ino &= 0x3f; - if (ino < PSYCHO_ONBOARD_IRQ_BASE) { - /* PCI slot */ - imap_off = psycho_pcislot_imap_offset(ino); - } else { - /* Onboard device */ - if (ino > PSYCHO_ONBOARD_IRQ_LAST) { - prom_printf("psycho_irq_build: Wacky INO [%x]\n", ino); - prom_halt(); - } - imap_off = psycho_onboard_imap_offset(ino); - } - - /* Now build the IRQ bucket. */ - imap = controller_regs + imap_off; - imap += 4; - - iclr_off = psycho_iclr_offset(ino); - iclr = controller_regs + iclr_off; - iclr += 4; - - if ((ino & 0x20) == 0) - inofixup = ino & 0x03; - - return build_irq(inofixup, iclr, imap); -} - -static void psycho_irq_trans_init(struct device_node *dp) -{ - struct linux_prom64_registers *regs; - - dp->irq_trans = prom_early_alloc(sizeof(struct of_irq_controller)); - dp->irq_trans->irq_build = psycho_irq_build; - - regs = of_get_property(dp, "reg", NULL); - dp->irq_trans->data = (void *) regs[2].phys_addr; -} - -#define sabre_read(__reg) \ -({ u64 __ret; \ - __asm__ __volatile__("ldxa [%1] %2, %0" \ - : "=r" (__ret) \ - : "r" (__reg), "i" (ASI_PHYS_BYPASS_EC_E) \ - : "memory"); \ - __ret; \ -}) - -struct sabre_irq_data { - unsigned long controller_regs; - unsigned int pci_first_busno; -}; -#define SABRE_CONFIGSPACE 0x001000000UL -#define SABRE_WRSYNC 0x1c20UL - -#define SABRE_CONFIG_BASE(CONFIG_SPACE) \ - (CONFIG_SPACE | (1UL << 24)) -#define SABRE_CONFIG_ENCODE(BUS, DEVFN, REG) \ - (((unsigned long)(BUS) << 16) | \ - ((unsigned long)(DEVFN) << 8) | \ - ((unsigned long)(REG))) - -/* When a device lives behind a bridge deeper in the PCI bus topology - * than APB, a special sequence must run to make sure all pending DMA - * transfers at the time of IRQ delivery are visible in the coherency - * domain by the cpu. This sequence is to perform a read on the far - * side of the non-APB bridge, then perform a read of Sabre's DMA - * write-sync register. - */ -static void sabre_wsync_handler(unsigned int ino, void *_arg1, void *_arg2) -{ - unsigned int phys_hi = (unsigned int) (unsigned long) _arg1; - struct sabre_irq_data *irq_data = _arg2; - unsigned long controller_regs = irq_data->controller_regs; - unsigned long sync_reg = controller_regs + SABRE_WRSYNC; - unsigned long config_space = controller_regs + SABRE_CONFIGSPACE; - unsigned int bus, devfn; - u16 _unused; - - config_space = SABRE_CONFIG_BASE(config_space); - - bus = (phys_hi >> 16) & 0xff; - devfn = (phys_hi >> 8) & 0xff; - - config_space |= SABRE_CONFIG_ENCODE(bus, devfn, 0x00); - - __asm__ __volatile__("membar #Sync\n\t" - "lduha [%1] %2, %0\n\t" - "membar #Sync" - : "=r" (_unused) - : "r" ((u16 *) config_space), - "i" (ASI_PHYS_BYPASS_EC_E_L) - : "memory"); - - sabre_read(sync_reg); -} - -#define SABRE_IMAP_A_SLOT0 0x0c00UL -#define SABRE_IMAP_B_SLOT0 0x0c20UL -#define SABRE_IMAP_SCSI 0x1000UL -#define SABRE_IMAP_ETH 0x1008UL -#define SABRE_IMAP_BPP 0x1010UL -#define SABRE_IMAP_AU_REC 0x1018UL -#define SABRE_IMAP_AU_PLAY 0x1020UL -#define SABRE_IMAP_PFAIL 0x1028UL -#define SABRE_IMAP_KMS 0x1030UL -#define SABRE_IMAP_FLPY 0x1038UL -#define SABRE_IMAP_SHW 0x1040UL -#define SABRE_IMAP_KBD 0x1048UL -#define SABRE_IMAP_MS 0x1050UL -#define SABRE_IMAP_SER 0x1058UL -#define SABRE_IMAP_UE 0x1070UL -#define SABRE_IMAP_CE 0x1078UL -#define SABRE_IMAP_PCIERR 0x1080UL -#define SABRE_IMAP_GFX 0x1098UL -#define SABRE_IMAP_EUPA 0x10a0UL -#define SABRE_ICLR_A_SLOT0 0x1400UL -#define SABRE_ICLR_B_SLOT0 0x1480UL -#define SABRE_ICLR_SCSI 0x1800UL -#define SABRE_ICLR_ETH 0x1808UL -#define SABRE_ICLR_BPP 0x1810UL -#define SABRE_ICLR_AU_REC 0x1818UL -#define SABRE_ICLR_AU_PLAY 0x1820UL -#define SABRE_ICLR_PFAIL 0x1828UL -#define SABRE_ICLR_KMS 0x1830UL -#define SABRE_ICLR_FLPY 0x1838UL -#define SABRE_ICLR_SHW 0x1840UL -#define SABRE_ICLR_KBD 0x1848UL -#define SABRE_ICLR_MS 0x1850UL -#define SABRE_ICLR_SER 0x1858UL -#define SABRE_ICLR_UE 0x1870UL -#define SABRE_ICLR_CE 0x1878UL -#define SABRE_ICLR_PCIERR 0x1880UL - -static unsigned long sabre_pcislot_imap_offset(unsigned long ino) -{ - unsigned int bus = (ino & 0x10) >> 4; - unsigned int slot = (ino & 0x0c) >> 2; - - if (bus == 0) - return SABRE_IMAP_A_SLOT0 + (slot * 8); - else - return SABRE_IMAP_B_SLOT0 + (slot * 8); -} - -static unsigned long __sabre_onboard_imap_off[] = { -/*0x20*/ SABRE_IMAP_SCSI, -/*0x21*/ SABRE_IMAP_ETH, -/*0x22*/ SABRE_IMAP_BPP, -/*0x23*/ SABRE_IMAP_AU_REC, -/*0x24*/ SABRE_IMAP_AU_PLAY, -/*0x25*/ SABRE_IMAP_PFAIL, -/*0x26*/ SABRE_IMAP_KMS, -/*0x27*/ SABRE_IMAP_FLPY, -/*0x28*/ SABRE_IMAP_SHW, -/*0x29*/ SABRE_IMAP_KBD, -/*0x2a*/ SABRE_IMAP_MS, -/*0x2b*/ SABRE_IMAP_SER, -/*0x2c*/ 0 /* reserved */, -/*0x2d*/ 0 /* reserved */, -/*0x2e*/ SABRE_IMAP_UE, -/*0x2f*/ SABRE_IMAP_CE, -/*0x30*/ SABRE_IMAP_PCIERR, -}; -#define SABRE_ONBOARD_IRQ_BASE 0x20 -#define SABRE_ONBOARD_IRQ_LAST 0x30 -#define sabre_onboard_imap_offset(__ino) \ - __sabre_onboard_imap_off[(__ino) - SABRE_ONBOARD_IRQ_BASE] - -#define sabre_iclr_offset(ino) \ - ((ino & 0x20) ? (SABRE_ICLR_SCSI + (((ino) & 0x1f) << 3)) : \ - (SABRE_ICLR_A_SLOT0 + (((ino) & 0x1f)<<3))) - -static unsigned int sabre_irq_build(struct device_node *dp, - unsigned int ino, - void *_data) -{ - struct sabre_irq_data *irq_data = _data; - unsigned long controller_regs = irq_data->controller_regs; - struct linux_prom_pci_registers *regs; - unsigned long imap, iclr; - unsigned long imap_off, iclr_off; - int inofixup = 0; - int virt_irq; - - ino &= 0x3f; - if (ino < SABRE_ONBOARD_IRQ_BASE) { - /* PCI slot */ - imap_off = sabre_pcislot_imap_offset(ino); - } else { - /* onboard device */ - if (ino > SABRE_ONBOARD_IRQ_LAST) { - prom_printf("sabre_irq_build: Wacky INO [%x]\n", ino); - prom_halt(); - } - imap_off = sabre_onboard_imap_offset(ino); - } - - /* Now build the IRQ bucket. */ - imap = controller_regs + imap_off; - imap += 4; - - iclr_off = sabre_iclr_offset(ino); - iclr = controller_regs + iclr_off; - iclr += 4; - - if ((ino & 0x20) == 0) - inofixup = ino & 0x03; - - virt_irq = build_irq(inofixup, iclr, imap); - - regs = of_get_property(dp, "reg", NULL); - if (regs && - ((regs->phys_hi >> 16) & 0xff) != irq_data->pci_first_busno) { - irq_install_pre_handler(virt_irq, - sabre_wsync_handler, - (void *) (long) regs->phys_hi, - (void *) - controller_regs + - SABRE_WRSYNC); - } - - return virt_irq; -} - -static void sabre_irq_trans_init(struct device_node *dp) -{ - struct linux_prom64_registers *regs; - struct sabre_irq_data *irq_data; - u32 *busrange; - - dp->irq_trans = prom_early_alloc(sizeof(struct of_irq_controller)); - dp->irq_trans->irq_build = sabre_irq_build; - - irq_data = prom_early_alloc(sizeof(struct sabre_irq_data)); - - regs = of_get_property(dp, "reg", NULL); - irq_data->controller_regs = regs[0].phys_addr; - - busrange = of_get_property(dp, "bus-range", NULL); - irq_data->pci_first_busno = busrange[0]; - - dp->irq_trans->data = irq_data; -} - -/* SCHIZO interrupt mapping support. Unlike Psycho, for this controller the - * imap/iclr registers are per-PBM. - */ -#define SCHIZO_IMAP_BASE 0x1000UL -#define SCHIZO_ICLR_BASE 0x1400UL - -static unsigned long schizo_imap_offset(unsigned long ino) -{ - return SCHIZO_IMAP_BASE + (ino * 8UL); -} - -static unsigned long schizo_iclr_offset(unsigned long ino) -{ - return SCHIZO_ICLR_BASE + (ino * 8UL); -} - -static unsigned long schizo_ino_to_iclr(unsigned long pbm_regs, - unsigned int ino) -{ - return pbm_regs + schizo_iclr_offset(ino) + 4; -} - -static unsigned long schizo_ino_to_imap(unsigned long pbm_regs, - unsigned int ino) -{ - return pbm_regs + schizo_imap_offset(ino) + 4; -} - -#define schizo_read(__reg) \ -({ u64 __ret; \ - __asm__ __volatile__("ldxa [%1] %2, %0" \ - : "=r" (__ret) \ - : "r" (__reg), "i" (ASI_PHYS_BYPASS_EC_E) \ - : "memory"); \ - __ret; \ -}) -#define schizo_write(__reg, __val) \ - __asm__ __volatile__("stxa %0, [%1] %2" \ - : /* no outputs */ \ - : "r" (__val), "r" (__reg), \ - "i" (ASI_PHYS_BYPASS_EC_E) \ - : "memory") - -static void tomatillo_wsync_handler(unsigned int ino, void *_arg1, void *_arg2) -{ - unsigned long sync_reg = (unsigned long) _arg2; - u64 mask = 1UL << (ino & IMAP_INO); - u64 val; - int limit; - - schizo_write(sync_reg, mask); - - limit = 100000; - val = 0; - while (--limit) { - val = schizo_read(sync_reg); - if (!(val & mask)) - break; - } - if (limit <= 0) { - printk("tomatillo_wsync_handler: DMA won't sync [%lx:%lx]\n", - val, mask); - } - - if (_arg1) { - static unsigned char cacheline[64] - __attribute__ ((aligned (64))); - - __asm__ __volatile__("rd %%fprs, %0\n\t" - "or %0, %4, %1\n\t" - "wr %1, 0x0, %%fprs\n\t" - "stda %%f0, [%5] %6\n\t" - "wr %0, 0x0, %%fprs\n\t" - "membar #Sync" - : "=&r" (mask), "=&r" (val) - : "0" (mask), "1" (val), - "i" (FPRS_FEF), "r" (&cacheline[0]), - "i" (ASI_BLK_COMMIT_P)); - } -} - -struct schizo_irq_data { - unsigned long pbm_regs; - unsigned long sync_reg; - u32 portid; - int chip_version; -}; - -static unsigned int schizo_irq_build(struct device_node *dp, - unsigned int ino, - void *_data) -{ - struct schizo_irq_data *irq_data = _data; - unsigned long pbm_regs = irq_data->pbm_regs; - unsigned long imap, iclr; - int ign_fixup; - int virt_irq; - int is_tomatillo; - - ino &= 0x3f; - - /* Now build the IRQ bucket. */ - imap = schizo_ino_to_imap(pbm_regs, ino); - iclr = schizo_ino_to_iclr(pbm_regs, ino); - - /* On Schizo, no inofixup occurs. This is because each - * INO has it's own IMAP register. On Psycho and Sabre - * there is only one IMAP register for each PCI slot even - * though four different INOs can be generated by each - * PCI slot. - * - * But, for JBUS variants (essentially, Tomatillo), we have - * to fixup the lowest bit of the interrupt group number. - */ - ign_fixup = 0; - - is_tomatillo = (irq_data->sync_reg != 0UL); - - if (is_tomatillo) { - if (irq_data->portid & 1) - ign_fixup = (1 << 6); - } - - virt_irq = build_irq(ign_fixup, iclr, imap); - - if (is_tomatillo) { - irq_install_pre_handler(virt_irq, - tomatillo_wsync_handler, - ((irq_data->chip_version <= 4) ? - (void *) 1 : (void *) 0), - (void *) irq_data->sync_reg); - } - - return virt_irq; -} - -static void schizo_irq_trans_init(struct device_node *dp) -{ - struct linux_prom64_registers *regs; - struct schizo_irq_data *irq_data; - - dp->irq_trans = prom_early_alloc(sizeof(struct of_irq_controller)); - dp->irq_trans->irq_build = schizo_irq_build; - - irq_data = prom_early_alloc(sizeof(struct schizo_irq_data)); - - regs = of_get_property(dp, "reg", NULL); - dp->irq_trans->data = irq_data; - - irq_data->pbm_regs = regs[0].phys_addr; - irq_data->sync_reg = regs[3].phys_addr + 0x1a18UL; - irq_data->portid = of_getintprop_default(dp, "portid", 0); - irq_data->chip_version = of_getintprop_default(dp, "version#", 0); -} - -static unsigned int pci_sun4v_irq_build(struct device_node *dp, - unsigned int devino, - void *_data) -{ - u32 devhandle = (u32) (unsigned long) _data; - - return sun4v_build_irq(devhandle, devino); -} - -static void pci_sun4v_irq_trans_init(struct device_node *dp) -{ - struct linux_prom64_registers *regs; - - dp->irq_trans = prom_early_alloc(sizeof(struct of_irq_controller)); - dp->irq_trans->irq_build = pci_sun4v_irq_build; - - regs = of_get_property(dp, "reg", NULL); - dp->irq_trans->data = (void *) (unsigned long) - ((regs->phys_addr >> 32UL) & 0x0fffffff); -} -#endif /* CONFIG_PCI */ - -#ifdef CONFIG_SBUS -/* INO number to IMAP register offset for SYSIO external IRQ's. - * This should conform to both Sunfire/Wildfire server and Fusion - * desktop designs. - */ -#define SYSIO_IMAP_SLOT0 0x2c04UL -#define SYSIO_IMAP_SLOT1 0x2c0cUL -#define SYSIO_IMAP_SLOT2 0x2c14UL -#define SYSIO_IMAP_SLOT3 0x2c1cUL -#define SYSIO_IMAP_SCSI 0x3004UL -#define SYSIO_IMAP_ETH 0x300cUL -#define SYSIO_IMAP_BPP 0x3014UL -#define SYSIO_IMAP_AUDIO 0x301cUL -#define SYSIO_IMAP_PFAIL 0x3024UL -#define SYSIO_IMAP_KMS 0x302cUL -#define SYSIO_IMAP_FLPY 0x3034UL -#define SYSIO_IMAP_SHW 0x303cUL -#define SYSIO_IMAP_KBD 0x3044UL -#define SYSIO_IMAP_MS 0x304cUL -#define SYSIO_IMAP_SER 0x3054UL -#define SYSIO_IMAP_TIM0 0x3064UL -#define SYSIO_IMAP_TIM1 0x306cUL -#define SYSIO_IMAP_UE 0x3074UL -#define SYSIO_IMAP_CE 0x307cUL -#define SYSIO_IMAP_SBERR 0x3084UL -#define SYSIO_IMAP_PMGMT 0x308cUL -#define SYSIO_IMAP_GFX 0x3094UL -#define SYSIO_IMAP_EUPA 0x309cUL - -#define bogon ((unsigned long) -1) -static unsigned long sysio_irq_offsets[] = { - /* SBUS Slot 0 --> 3, level 1 --> 7 */ - SYSIO_IMAP_SLOT0, SYSIO_IMAP_SLOT0, SYSIO_IMAP_SLOT0, SYSIO_IMAP_SLOT0, - SYSIO_IMAP_SLOT0, SYSIO_IMAP_SLOT0, SYSIO_IMAP_SLOT0, SYSIO_IMAP_SLOT0, - SYSIO_IMAP_SLOT1, SYSIO_IMAP_SLOT1, SYSIO_IMAP_SLOT1, SYSIO_IMAP_SLOT1, - SYSIO_IMAP_SLOT1, SYSIO_IMAP_SLOT1, SYSIO_IMAP_SLOT1, SYSIO_IMAP_SLOT1, - SYSIO_IMAP_SLOT2, SYSIO_IMAP_SLOT2, SYSIO_IMAP_SLOT2, SYSIO_IMAP_SLOT2, - SYSIO_IMAP_SLOT2, SYSIO_IMAP_SLOT2, SYSIO_IMAP_SLOT2, SYSIO_IMAP_SLOT2, - SYSIO_IMAP_SLOT3, SYSIO_IMAP_SLOT3, SYSIO_IMAP_SLOT3, SYSIO_IMAP_SLOT3, - SYSIO_IMAP_SLOT3, SYSIO_IMAP_SLOT3, SYSIO_IMAP_SLOT3, SYSIO_IMAP_SLOT3, - - /* Onboard devices (not relevant/used on SunFire). */ - SYSIO_IMAP_SCSI, - SYSIO_IMAP_ETH, - SYSIO_IMAP_BPP, - bogon, - SYSIO_IMAP_AUDIO, - SYSIO_IMAP_PFAIL, - bogon, - bogon, - SYSIO_IMAP_KMS, - SYSIO_IMAP_FLPY, - SYSIO_IMAP_SHW, - SYSIO_IMAP_KBD, - SYSIO_IMAP_MS, - SYSIO_IMAP_SER, - bogon, - bogon, - SYSIO_IMAP_TIM0, - SYSIO_IMAP_TIM1, - bogon, - bogon, - SYSIO_IMAP_UE, - SYSIO_IMAP_CE, - SYSIO_IMAP_SBERR, - SYSIO_IMAP_PMGMT, -}; - -#undef bogon - -#define NUM_SYSIO_OFFSETS ARRAY_SIZE(sysio_irq_offsets) - -/* Convert Interrupt Mapping register pointer to associated - * Interrupt Clear register pointer, SYSIO specific version. - */ -#define SYSIO_ICLR_UNUSED0 0x3400UL -#define SYSIO_ICLR_SLOT0 0x340cUL -#define SYSIO_ICLR_SLOT1 0x344cUL -#define SYSIO_ICLR_SLOT2 0x348cUL -#define SYSIO_ICLR_SLOT3 0x34ccUL -static unsigned long sysio_imap_to_iclr(unsigned long imap) -{ - unsigned long diff = SYSIO_ICLR_UNUSED0 - SYSIO_IMAP_SLOT0; - return imap + diff; -} - -static unsigned int sbus_of_build_irq(struct device_node *dp, - unsigned int ino, - void *_data) -{ - unsigned long reg_base = (unsigned long) _data; - struct linux_prom_registers *regs; - unsigned long imap, iclr; - int sbus_slot = 0; - int sbus_level = 0; - - ino &= 0x3f; - - regs = of_get_property(dp, "reg", NULL); - if (regs) - sbus_slot = regs->which_io; - - if (ino < 0x20) - ino += (sbus_slot * 8); - - imap = sysio_irq_offsets[ino]; - if (imap == ((unsigned long)-1)) { - prom_printf("get_irq_translations: Bad SYSIO INO[%x]\n", - ino); - prom_halt(); - } - imap += reg_base; - - /* SYSIO inconsistency. For external SLOTS, we have to select - * the right ICLR register based upon the lower SBUS irq level - * bits. - */ - if (ino >= 0x20) { - iclr = sysio_imap_to_iclr(imap); - } else { - sbus_level = ino & 0x7; - - switch(sbus_slot) { - case 0: - iclr = reg_base + SYSIO_ICLR_SLOT0; - break; - case 1: - iclr = reg_base + SYSIO_ICLR_SLOT1; - break; - case 2: - iclr = reg_base + SYSIO_ICLR_SLOT2; - break; - default: - case 3: - iclr = reg_base + SYSIO_ICLR_SLOT3; - break; - }; - - iclr += ((unsigned long)sbus_level - 1UL) * 8UL; - } - return build_irq(sbus_level, iclr, imap); -} - -static void sbus_irq_trans_init(struct device_node *dp) -{ - struct linux_prom64_registers *regs; - - dp->irq_trans = prom_early_alloc(sizeof(struct of_irq_controller)); - dp->irq_trans->irq_build = sbus_of_build_irq; - - regs = of_get_property(dp, "reg", NULL); - dp->irq_trans->data = (void *) (unsigned long) regs->phys_addr; -} -#endif /* CONFIG_SBUS */ - - -static unsigned int central_build_irq(struct device_node *dp, - unsigned int ino, - void *_data) -{ - struct device_node *central_dp = _data; - struct of_device *central_op = of_find_device_by_node(central_dp); - struct resource *res; - unsigned long imap, iclr; - u32 tmp; - - if (!strcmp(dp->name, "eeprom")) { - res = ¢ral_op->resource[5]; - } else if (!strcmp(dp->name, "zs")) { - res = ¢ral_op->resource[4]; - } else if (!strcmp(dp->name, "clock-board")) { - res = ¢ral_op->resource[3]; - } else { - return ino; - } - - imap = res->start + 0x00UL; - iclr = res->start + 0x10UL; - - /* Set the INO state to idle, and disable. */ - upa_writel(0, iclr); - upa_readl(iclr); - - tmp = upa_readl(imap); - tmp &= ~0x80000000; - upa_writel(tmp, imap); - - return build_irq(0, iclr, imap); -} - -static void central_irq_trans_init(struct device_node *dp) -{ - dp->irq_trans = prom_early_alloc(sizeof(struct of_irq_controller)); - dp->irq_trans->irq_build = central_build_irq; - - dp->irq_trans->data = dp; -} - -struct irq_trans { - const char *name; - void (*init)(struct device_node *); -}; - -#ifdef CONFIG_PCI -static struct irq_trans pci_irq_trans_table[] = { - { "SUNW,sabre", sabre_irq_trans_init }, - { "pci108e,a000", sabre_irq_trans_init }, - { "pci108e,a001", sabre_irq_trans_init }, - { "SUNW,psycho", psycho_irq_trans_init }, - { "pci108e,8000", psycho_irq_trans_init }, - { "SUNW,schizo", schizo_irq_trans_init }, - { "pci108e,8001", schizo_irq_trans_init }, - { "SUNW,schizo+", schizo_irq_trans_init }, - { "pci108e,8002", schizo_irq_trans_init }, - { "SUNW,tomatillo", schizo_irq_trans_init }, - { "pci108e,a801", schizo_irq_trans_init }, - { "SUNW,sun4v-pci", pci_sun4v_irq_trans_init }, -}; -#endif - -static unsigned int sun4v_vdev_irq_build(struct device_node *dp, - unsigned int devino, - void *_data) -{ - u32 devhandle = (u32) (unsigned long) _data; - - return sun4v_build_irq(devhandle, devino); -} - -static void sun4v_vdev_irq_trans_init(struct device_node *dp) -{ - struct linux_prom64_registers *regs; - - dp->irq_trans = prom_early_alloc(sizeof(struct of_irq_controller)); - dp->irq_trans->irq_build = sun4v_vdev_irq_build; - - regs = of_get_property(dp, "reg", NULL); - dp->irq_trans->data = (void *) (unsigned long) - ((regs->phys_addr >> 32UL) & 0x0fffffff); -} - -static void irq_trans_init(struct device_node *dp) -{ - const char *model; - int i; - - model = of_get_property(dp, "model", NULL); - if (!model) - model = of_get_property(dp, "compatible", NULL); - if (!model) - return; - -#ifdef CONFIG_PCI - for (i = 0; i < ARRAY_SIZE(pci_irq_trans_table); i++) { - struct irq_trans *t = &pci_irq_trans_table[i]; - - if (!strcmp(model, t->name)) - return t->init(dp); - } -#endif -#ifdef CONFIG_SBUS - if (!strcmp(dp->name, "sbus") || - !strcmp(dp->name, "sbi")) - return sbus_irq_trans_init(dp); -#endif - if (!strcmp(dp->name, "central")) - return central_irq_trans_init(dp->child); - if (!strcmp(dp->name, "virtual-devices")) - return sun4v_vdev_irq_trans_init(dp); -} - static int is_root_node(const struct device_node *dp) { if (!dp) @@ -1482,9 +676,9 @@ static struct device_node * __init create_node(phandle node) dp->type = get_one_property(node, "device_type"); dp->node = node; - dp->properties = build_prop_list(node); + /* Build interrupts later... */ - irq_trans_init(dp); + dp->properties = build_prop_list(node); return dp; } diff --git a/trunk/arch/sparc64/kernel/rtrap.S b/trunk/arch/sparc64/kernel/rtrap.S index 3522cd66f3bb..7130e866f935 100644 --- a/trunk/arch/sparc64/kernel/rtrap.S +++ b/trunk/arch/sparc64/kernel/rtrap.S @@ -5,6 +5,7 @@ * Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu) */ +#include #include #include diff --git a/trunk/arch/sparc64/kernel/sbus.c b/trunk/arch/sparc64/kernel/sbus.c index ef68aa4fec65..ac05e0f692ef 100644 --- a/trunk/arch/sparc64/kernel/sbus.c +++ b/trunk/arch/sparc64/kernel/sbus.c @@ -1221,7 +1221,9 @@ static void __init sbus_iommu_init(int __node, struct sbus_bus *sbus) /* Now some Xfire specific grot... */ if (this_is_starfire) - starfire_hookup(sbus->portid); + sbus->starfire_cookie = starfire_hookup(sbus->portid); + else + sbus->starfire_cookie = NULL; sysio_register_error_handlers(sbus); } @@ -1267,6 +1269,8 @@ int __init sbus_arch_preinit(void) void __init sbus_arch_postinit(void) { extern void firetruck_init(void); + extern void clock_probe(void); firetruck_init(); + clock_probe(); } diff --git a/trunk/arch/sparc64/kernel/setup.c b/trunk/arch/sparc64/kernel/setup.c index a73140466e01..116d9632002d 100644 --- a/trunk/arch/sparc64/kernel/setup.c +++ b/trunk/arch/sparc64/kernel/setup.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/sparc64/kernel/signal.c b/trunk/arch/sparc64/kernel/signal.c index 96d56a8410ad..ca11a4c457d4 100644 --- a/trunk/arch/sparc64/kernel/signal.c +++ b/trunk/arch/sparc64/kernel/signal.c @@ -8,6 +8,7 @@ * Copyright (C) 1997,1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz) */ +#include #ifdef CONFIG_SPARC32_COMPAT #include /* for compat_old_sigset_t */ #endif diff --git a/trunk/arch/sparc64/kernel/sparc64_ksyms.c b/trunk/arch/sparc64/kernel/sparc64_ksyms.c index 4173de425f09..4ac35dd2088b 100644 --- a/trunk/arch/sparc64/kernel/sparc64_ksyms.c +++ b/trunk/arch/sparc64/kernel/sparc64_ksyms.c @@ -10,6 +10,7 @@ #define EXPORT_SYMTAB_STROPS #define PROMLIB_INTERNAL +#include #include #include #include diff --git a/trunk/arch/sparc64/kernel/starfire.c b/trunk/arch/sparc64/kernel/starfire.c index b930fee7708a..ae859d40771e 100644 --- a/trunk/arch/sparc64/kernel/starfire.c +++ b/trunk/arch/sparc64/kernel/starfire.c @@ -54,7 +54,7 @@ struct starfire_irqinfo { static struct starfire_irqinfo *sflist = NULL; /* Beam me up Scott(McNeil)y... */ -void starfire_hookup(int upaid) +void *starfire_hookup(int upaid) { struct starfire_irqinfo *p; unsigned long treg_base, hwmid, i; @@ -81,6 +81,8 @@ void starfire_hookup(int upaid) p->upaid = upaid; p->next = sflist; sflist = p; + + return (void *) p; } unsigned int starfire_translate(unsigned long imap, diff --git a/trunk/arch/sparc64/kernel/sys32.S b/trunk/arch/sparc64/kernel/sys32.S index c09ab4b9431d..bdf1f4d02e3f 100644 --- a/trunk/arch/sparc64/kernel/sys32.S +++ b/trunk/arch/sparc64/kernel/sys32.S @@ -6,6 +6,7 @@ * Copyright (C) 1998 Jakub Jelinek (jj@ultra.linux.cz) */ +#include #include /* NOTE: call as jump breaks return stack, we have to avoid that */ diff --git a/trunk/arch/sparc64/kernel/sys_sparc.c b/trunk/arch/sparc64/kernel/sys_sparc.c index 51c056df528e..7a869138c37f 100644 --- a/trunk/arch/sparc64/kernel/sys_sparc.c +++ b/trunk/arch/sparc64/kernel/sys_sparc.c @@ -6,6 +6,7 @@ * platform. */ +#include #include #include #include diff --git a/trunk/arch/sparc64/kernel/sys_sparc32.c b/trunk/arch/sparc64/kernel/sys_sparc32.c index c88ae23ce812..31030bf00f1a 100644 --- a/trunk/arch/sparc64/kernel/sys_sparc32.c +++ b/trunk/arch/sparc64/kernel/sys_sparc32.c @@ -8,6 +8,7 @@ * environment. */ +#include #include #include #include diff --git a/trunk/arch/sparc64/kernel/sys_sunos32.c b/trunk/arch/sparc64/kernel/sys_sunos32.c index 87ebdf858a3a..ae5b32f817f0 100644 --- a/trunk/arch/sparc64/kernel/sys_sunos32.c +++ b/trunk/arch/sparc64/kernel/sys_sunos32.c @@ -155,7 +155,7 @@ asmlinkage int sunos_brk(u32 baddr) * simple, it hopefully works in most obvious cases.. Easy to * fool it, but this should catch most mistakes. */ - freepages = global_page_state(NR_FILE_PAGES); + freepages = get_page_cache_size(); freepages >>= 1; freepages += nr_free_pages(); freepages += nr_swap_pages; diff --git a/trunk/arch/sparc64/kernel/systbls.S b/trunk/arch/sparc64/kernel/systbls.S index 419a63fca172..1136fc465e37 100644 --- a/trunk/arch/sparc64/kernel/systbls.S +++ b/trunk/arch/sparc64/kernel/systbls.S @@ -10,6 +10,7 @@ * Copyright (C) 1995 Adrian M. Rodriguez (adrian@remus.rutgers.edu) */ +#include .text .align 4 diff --git a/trunk/arch/sparc64/kernel/time.c b/trunk/arch/sparc64/kernel/time.c index 8dcbfbffacc9..348b82035561 100644 --- a/trunk/arch/sparc64/kernel/time.c +++ b/trunk/arch/sparc64/kernel/time.c @@ -9,6 +9,7 @@ * Copyright (C) 1996 Thomas K. Dyas (tdyas@eden.rutgers.edu) */ +#include #include #include #include @@ -37,8 +38,11 @@ #include #include #include -#include -#include +#include +#include +#include +#include +#include #include #include #include @@ -766,105 +770,236 @@ static int __init clock_model_matches(char *model) return 1; } -static int __devinit clock_probe(struct of_device *op, const struct of_device_id *match) +static void __init __clock_assign_common(void __iomem *addr, char *model) { - struct device_node *dp = op->node; - char *model = of_get_property(dp, "model", NULL); - unsigned long size, flags; - void __iomem *regs; + if (model[5] == '0' && model[6] == '2') { + mstk48t02_regs = addr; + } else if(model[5] == '0' && model[6] == '8') { + mstk48t08_regs = addr; + mstk48t02_regs = mstk48t08_regs + MOSTEK_48T08_48T02; + } else { + mstk48t59_regs = addr; + mstk48t02_regs = mstk48t59_regs + MOSTEK_48T59_48T02; + } +} - if (!model || !clock_model_matches(model)) - return -ENODEV; +static void __init clock_assign_clk_reg(struct linux_prom_registers *clk_reg, + char *model) +{ + unsigned long addr; - /* On an Enterprise system there can be multiple mostek clocks. - * We should only match the one that is on the central FHC bus. - */ - if (!strcmp(dp->parent->name, "fhc") && - strcmp(dp->parent->parent->name, "central") != 0) - return -ENODEV; + addr = ((unsigned long) clk_reg[0].phys_addr | + (((unsigned long) clk_reg[0].which_io) << 32UL)); + + __clock_assign_common((void __iomem *) addr, model); +} + +static int __init clock_probe_central(void) +{ + struct linux_prom_registers clk_reg[2], *pr; + struct device_node *dp; + char *model; + + if (!central_bus) + return 0; + + /* Get Central FHC's prom node. */ + dp = central_bus->child->prom_node; + + /* Then get the first child device below it. */ + dp = dp->child; + + while (dp) { + model = of_get_property(dp, "model", NULL); + if (!model || !clock_model_matches(model)) + goto next_sibling; + + pr = of_get_property(dp, "reg", NULL); + memcpy(clk_reg, pr, sizeof(clk_reg)); + + apply_fhc_ranges(central_bus->child, clk_reg, 1); + apply_central_ranges(central_bus, clk_reg, 1); - size = (op->resource[0].end - op->resource[0].start) + 1; - regs = of_ioremap(&op->resource[0], 0, size, "clock"); - if (!regs) - return -ENOMEM; + clock_assign_clk_reg(clk_reg, model); + return 1; + next_sibling: + dp = dp->sibling; + } + + return 0; +} + +#ifdef CONFIG_PCI +static void __init clock_isa_ebus_assign_regs(struct resource *res, char *model) +{ if (!strcmp(model, "ds1287") || !strcmp(model, "m5819") || !strcmp(model, "m5819p") || !strcmp(model, "m5823")) { - ds1287_regs = (unsigned long) regs; - } else if (model[5] == '0' && model[6] == '2') { - mstk48t02_regs = regs; - } else if(model[5] == '0' && model[6] == '8') { - mstk48t08_regs = regs; - mstk48t02_regs = mstk48t08_regs + MOSTEK_48T08_48T02; + ds1287_regs = res->start; } else { - mstk48t59_regs = regs; + mstk48t59_regs = (void __iomem *) res->start; mstk48t02_regs = mstk48t59_regs + MOSTEK_48T59_48T02; } +} - printk(KERN_INFO "%s: Clock regs at %p\n", dp->full_name, regs); +static int __init clock_probe_one_ebus_dev(struct linux_ebus_device *edev) +{ + struct device_node *dp = edev->prom_node; + char *model; - local_irq_save(flags); + model = of_get_property(dp, "model", NULL); + if (!clock_model_matches(model)) + return 0; - if (mstk48t02_regs != NULL) { - /* Report a low battery voltage condition. */ - if (has_low_battery()) - prom_printf("NVRAM: Low battery voltage!\n"); + clock_isa_ebus_assign_regs(&edev->resource[0], model); - /* Kick start the clock if it is completely stopped. */ - if (mostek_read(mstk48t02_regs + MOSTEK_SEC) & MSTK_STOP) - kick_start_clock(); + return 1; +} + +static int __init clock_probe_ebus(void) +{ + struct linux_ebus *ebus; + + for_each_ebus(ebus) { + struct linux_ebus_device *edev; + + for_each_ebusdev(edev, ebus) { + if (clock_probe_one_ebus_dev(edev)) + return 1; + } } - set_system_time(); - - local_irq_restore(flags); + return 0; +} + +static int __init clock_probe_one_isa_dev(struct sparc_isa_device *idev) +{ + struct device_node *dp = idev->prom_node; + char *model; + + model = of_get_property(dp, "model", NULL); + if (!clock_model_matches(model)) + return 0; + + clock_isa_ebus_assign_regs(&idev->resource, model); + + return 1; +} + +static int __init clock_probe_isa(void) +{ + struct sparc_isa_bridge *isa_br; + + for_each_isa(isa_br) { + struct sparc_isa_device *isa_dev; + + for_each_isadev(isa_dev, isa_br) { + if (clock_probe_one_isa_dev(isa_dev)) + return 1; + } + } return 0; } +#endif /* CONFIG_PCI */ -static struct of_device_id clock_match[] = { - { - .name = "eeprom", - }, - { - .name = "rtc", - }, - {}, -}; +#ifdef CONFIG_SBUS +static int __init clock_probe_one_sbus_dev(struct sbus_bus *sbus, struct sbus_dev *sdev) +{ + struct resource *res; + char model[64]; + void __iomem *addr; -static struct of_platform_driver clock_driver = { - .name = "clock", - .match_table = clock_match, - .probe = clock_probe, -}; + prom_getstring(sdev->prom_node, "model", model, sizeof(model)); + if (!clock_model_matches(model)) + return 0; + + res = &sdev->resource[0]; + addr = sbus_ioremap(res, 0, 0x800UL, "eeprom"); + + __clock_assign_common(addr, model); + + return 1; +} + +static int __init clock_probe_sbus(void) +{ + struct sbus_bus *sbus; + + for_each_sbus(sbus) { + struct sbus_dev *sdev; + + for_each_sbusdev(sdev, sbus) { + if (clock_probe_one_sbus_dev(sbus, sdev)) + return 1; + } + } + + return 0; +} +#endif -static int __init clock_init(void) +void __init clock_probe(void) { + static int invoked; + unsigned long flags; + + if (invoked) + return; + invoked = 1; + if (this_is_starfire) { xtime.tv_sec = starfire_get_time(); xtime.tv_nsec = (INITIAL_JIFFIES % HZ) * (NSEC_PER_SEC / HZ); set_normalized_timespec(&wall_to_monotonic, -xtime.tv_sec, -xtime.tv_nsec); - return 0; + return; } if (tlb_type == hypervisor) { xtime.tv_sec = hypervisor_get_time(); xtime.tv_nsec = (INITIAL_JIFFIES % HZ) * (NSEC_PER_SEC / HZ); set_normalized_timespec(&wall_to_monotonic, -xtime.tv_sec, -xtime.tv_nsec); - return 0; + return; } - return of_register_driver(&clock_driver, &of_bus_type); -} + /* Check FHC Central then EBUSs then ISA bridges then SBUSs. + * That way we handle the presence of multiple properly. + * + * As a special case, machines with Central must provide the + * timer chip there. + */ + if (!clock_probe_central() && +#ifdef CONFIG_PCI + !clock_probe_ebus() && + !clock_probe_isa() && +#endif +#ifdef CONFIG_SBUS + !clock_probe_sbus() +#endif + ) { + printk(KERN_WARNING "No clock chip found.\n"); + return; + } -/* Must be after subsys_initcall() so that busses are probed. Must - * be before device_initcall() because things like the RTC driver - * need to see the clock registers. - */ -fs_initcall(clock_init); + local_irq_save(flags); + + if (mstk48t02_regs != NULL) { + /* Report a low battery voltage condition. */ + if (has_low_battery()) + prom_printf("NVRAM: Low battery voltage!\n"); + + /* Kick start the clock if it is completely stopped. */ + if (mostek_read(mstk48t02_regs + MOSTEK_SEC) & MSTK_STOP) + kick_start_clock(); + } + + set_system_time(); + + local_irq_restore(flags); +} /* This is gets the master TICK_INT timer going. */ static unsigned long sparc64_init_timers(void) diff --git a/trunk/arch/sparc64/kernel/traps.c b/trunk/arch/sparc64/kernel/traps.c index 68420e2dad0e..1ff34b019f3f 100644 --- a/trunk/arch/sparc64/kernel/traps.c +++ b/trunk/arch/sparc64/kernel/traps.c @@ -9,6 +9,7 @@ * I like traps on v9, :)))) */ +#include #include #include /* for jiffies */ #include diff --git a/trunk/arch/sparc64/kernel/tsb.S b/trunk/arch/sparc64/kernel/tsb.S index eedf94fa5664..a0c8ba58920b 100644 --- a/trunk/arch/sparc64/kernel/tsb.S +++ b/trunk/arch/sparc64/kernel/tsb.S @@ -3,6 +3,7 @@ * Copyright (C) 2006 David S. Miller */ +#include #include #include diff --git a/trunk/arch/sparc64/kernel/ttable.S b/trunk/arch/sparc64/kernel/ttable.S index d7d2a8bdc66e..ee45ca2d7a04 100644 --- a/trunk/arch/sparc64/kernel/ttable.S +++ b/trunk/arch/sparc64/kernel/ttable.S @@ -3,6 +3,7 @@ * Copyright (C) 1996, 2001, 2006 David S. Miller (davem@davemloft.net) */ +#include .globl sparc64_ttable_tl0, sparc64_ttable_tl1 .globl tl0_icpe, tl1_icpe diff --git a/trunk/arch/sparc64/kernel/unaligned.c b/trunk/arch/sparc64/kernel/unaligned.c index a9b765271b85..bb2d68577855 100644 --- a/trunk/arch/sparc64/kernel/unaligned.c +++ b/trunk/arch/sparc64/kernel/unaligned.c @@ -20,7 +20,6 @@ #include #include #include -#include #include /* #define DEBUG_MNA */ @@ -292,8 +291,7 @@ asmlinkage void kernel_unaligned_trap(struct pt_regs *regs, unsigned int insn) if (count < 5) { last_time = jiffies; count++; - printk("Kernel unaligned access at TPC[%lx] ", regs->tpc); - print_symbol("%s\n", regs->tpc); + printk("Kernel unaligned access at TPC[%lx]\n", regs->tpc); } if (!ok_for_kernel(insn) || dir == both) { diff --git a/trunk/arch/sparc64/lib/atomic.S b/trunk/arch/sparc64/lib/atomic.S index 9633750167d0..faf87c31598b 100644 --- a/trunk/arch/sparc64/lib/atomic.S +++ b/trunk/arch/sparc64/lib/atomic.S @@ -4,6 +4,7 @@ * Copyright (C) 1999 David S. Miller (davem@redhat.com) */ +#include #include .text diff --git a/trunk/arch/sparc64/lib/bitops.S b/trunk/arch/sparc64/lib/bitops.S index 892431a82131..31afbfe6c1e8 100644 --- a/trunk/arch/sparc64/lib/bitops.S +++ b/trunk/arch/sparc64/lib/bitops.S @@ -4,6 +4,7 @@ * Copyright (C) 2000 David S. Miller (davem@redhat.com) */ +#include #include .text diff --git a/trunk/arch/sparc64/lib/mcount.S b/trunk/arch/sparc64/lib/mcount.S index 9e4534b485c7..2ef2e268bdcf 100644 --- a/trunk/arch/sparc64/lib/mcount.S +++ b/trunk/arch/sparc64/lib/mcount.S @@ -5,6 +5,7 @@ * This can also be tweaked for kernel stack overflow detection. */ +#include #include #include diff --git a/trunk/arch/sparc64/mm/hugetlbpage.c b/trunk/arch/sparc64/mm/hugetlbpage.c index 53b9b1f528e5..fbbbebbad8a4 100644 --- a/trunk/arch/sparc64/mm/hugetlbpage.c +++ b/trunk/arch/sparc64/mm/hugetlbpage.c @@ -4,6 +4,7 @@ * Copyright (C) 2002, 2003, 2006 David S. Miller (davem@davemloft.net) */ +#include #include #include #include diff --git a/trunk/arch/sparc64/mm/init.c b/trunk/arch/sparc64/mm/init.c index dcba4e6ab570..cb75a27adb51 100644 --- a/trunk/arch/sparc64/mm/init.c +++ b/trunk/arch/sparc64/mm/init.c @@ -5,6 +5,7 @@ * Copyright (C) 1997-1999 Jakub Jelinek (jj@sunsite.mff.cuni.cz) */ +#include #include #include #include diff --git a/trunk/arch/sparc64/mm/ultra.S b/trunk/arch/sparc64/mm/ultra.S index d70b60a3bbcc..f8479fad4047 100644 --- a/trunk/arch/sparc64/mm/ultra.S +++ b/trunk/arch/sparc64/mm/ultra.S @@ -4,6 +4,7 @@ * Copyright (C) 1997, 2000 David S. Miller (davem@redhat.com) */ +#include #include #include #include diff --git a/trunk/arch/sparc64/prom/misc.c b/trunk/arch/sparc64/prom/misc.c index 0b4213720d43..577bde8b6647 100644 --- a/trunk/arch/sparc64/prom/misc.c +++ b/trunk/arch/sparc64/prom/misc.c @@ -6,6 +6,7 @@ * Copyright (C) 1996,1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz) */ +#include #include #include #include diff --git a/trunk/arch/sparc64/solaris/misc.c b/trunk/arch/sparc64/solaris/misc.c index 8135ec322c9c..719c90905a1e 100644 --- a/trunk/arch/sparc64/solaris/misc.c +++ b/trunk/arch/sparc64/solaris/misc.c @@ -4,6 +4,7 @@ * Copyright (C) 1997,1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz) */ +#include #include #include #include diff --git a/trunk/arch/um/Makefile-x86_64 b/trunk/arch/um/Makefile-x86_64 index dffd1184c956..dfd88b652fbe 100644 --- a/trunk/arch/um/Makefile-x86_64 +++ b/trunk/arch/um/Makefile-x86_64 @@ -6,11 +6,9 @@ START := 0x60000000 #We #undef __x86_64__ for kernelspace, not for userspace where #it's needed for headers to work! -CFLAGS += -U__$(SUBARCH)__ -fno-builtin -m64 -USER_CFLAGS += -fno-builtin -m64 +CFLAGS += -U__$(SUBARCH)__ -fno-builtin +USER_CFLAGS += -fno-builtin CHECKFLAGS += -m64 -AFLAGS += -m64 -LDFLAGS += -m elf_x86_64 ELF_ARCH := i386:x86-64 ELF_FORMAT := elf64-x86-64 @@ -18,4 +16,3 @@ ELF_FORMAT := elf64-x86-64 # Not on all 64-bit distros /lib is a symlink to /lib64. PLD is an example. LINK-$(CONFIG_LD_SCRIPT_DYN) += -Wl,-rpath,/lib64 -LINK-y += -m64 diff --git a/trunk/arch/um/drivers/harddog_kern.c b/trunk/arch/um/drivers/harddog_kern.c index 64ff22aa077b..d18a974735e6 100644 --- a/trunk/arch/um/drivers/harddog_kern.c +++ b/trunk/arch/um/drivers/harddog_kern.c @@ -35,6 +35,7 @@ */ #include +#include #include #include #include diff --git a/trunk/arch/um/drivers/stderr_console.c b/trunk/arch/um/drivers/stderr_console.c index 6d2cf32a9e8f..429ae8e6c7e5 100644 --- a/trunk/arch/um/drivers/stderr_console.c +++ b/trunk/arch/um/drivers/stderr_console.c @@ -8,7 +8,10 @@ /* * Don't register by default -- as this registeres very early in the - * boot process it becomes the default console. + * boot process it becomes the default console. And as this isn't a + * real tty driver init isn't able to open /dev/console then. + * + * In most cases this isn't what you want ... */ static int use_stderr_console = 0; @@ -40,20 +43,3 @@ static int stderr_setup(char *str) return 1; } __setup("stderr=", stderr_setup); - -/* The previous behavior of not unregistering led to /dev/console being - * impossible to open. My FC5 filesystem started having init die, and the - * system panicing because of this. Unregistering causes the real - * console to become the default console, and /dev/console can then be - * opened. Making this an initcall makes this happen late enough that - * there is no added value in dumping everything to stderr, and the - * normal console is good enough to show you all available output. - */ -static int __init unregister_stderr(void) -{ - unregister_console(&stderr_console); - - return 0; -} - -__initcall(unregister_stderr); diff --git a/trunk/arch/um/include/sysdep-x86_64/kernel-offsets.h b/trunk/arch/um/include/sysdep-x86_64/kernel-offsets.h index 91d129fb3930..939cc475757a 100644 --- a/trunk/arch/um/include/sysdep-x86_64/kernel-offsets.h +++ b/trunk/arch/um/include/sysdep-x86_64/kernel-offsets.h @@ -1,3 +1,4 @@ +#include #include #include #include diff --git a/trunk/arch/um/kernel/skas/mmu.c b/trunk/arch/um/kernel/skas/mmu.c index 624ca238d1fd..c5c9885a8297 100644 --- a/trunk/arch/um/kernel/skas/mmu.c +++ b/trunk/arch/um/kernel/skas/mmu.c @@ -152,7 +152,7 @@ void destroy_context_skas(struct mm_struct *mm) free_page(mmu->id.stack); pte_lock_deinit(virt_to_page(mmu->last_page_table)); pte_free_kernel((pte_t *) mmu->last_page_table); - dec_zone_page_state(virt_to_page(mmu->last_page_table), NR_PAGETABLE); + dec_page_state(nr_page_table_pages); #ifdef CONFIG_3_LEVEL_PGTABLES pmd_free((pmd_t *) mmu->last_pmd); #endif diff --git a/trunk/arch/um/kernel/skas/uaccess.c b/trunk/arch/um/kernel/skas/uaccess.c index 8912cec0fe43..5992c3257167 100644 --- a/trunk/arch/um/kernel/skas/uaccess.c +++ b/trunk/arch/um/kernel/skas/uaccess.c @@ -8,7 +8,6 @@ #include "linux/kernel.h" #include "linux/string.h" #include "linux/fs.h" -#include "linux/hardirq.h" #include "linux/highmem.h" #include "asm/page.h" #include "asm/pgtable.h" @@ -39,7 +38,7 @@ static unsigned long maybe_map(unsigned long virt, int is_write) return((unsigned long) phys); } -static int do_op_one_page(unsigned long addr, int len, int is_write, +static int do_op(unsigned long addr, int len, int is_write, int (*op)(unsigned long addr, int len, void *arg), void *arg) { struct page *page; @@ -50,11 +49,9 @@ static int do_op_one_page(unsigned long addr, int len, int is_write, return(-1); page = phys_to_page(addr); - addr = (unsigned long) kmap_atomic(page, KM_UML_USERCOPY) + (addr & ~PAGE_MASK); - + addr = (unsigned long) kmap(page) + (addr & ~PAGE_MASK); n = (*op)(addr, len, arg); - - kunmap_atomic(page, KM_UML_USERCOPY); + kunmap(page); return(n); } @@ -80,7 +77,7 @@ static void do_buffer_op(void *jmpbuf, void *arg_ptr) remain = len; current->thread.fault_catcher = jmpbuf; - n = do_op_one_page(addr, size, is_write, op, arg); + n = do_op(addr, size, is_write, op, arg); if(n != 0){ *res = (n < 0 ? remain : 0); goto out; @@ -94,7 +91,7 @@ static void do_buffer_op(void *jmpbuf, void *arg_ptr) } while(addr < ((addr + remain) & PAGE_MASK)){ - n = do_op_one_page(addr, PAGE_SIZE, is_write, op, arg); + n = do_op(addr, PAGE_SIZE, is_write, op, arg); if(n != 0){ *res = (n < 0 ? remain : 0); goto out; @@ -108,7 +105,7 @@ static void do_buffer_op(void *jmpbuf, void *arg_ptr) goto out; } - n = do_op_one_page(addr, remain, is_write, op, arg); + n = do_op(addr, remain, is_write, op, arg); if(n != 0) *res = (n < 0 ? remain : 0); else *res = 0; diff --git a/trunk/arch/um/kernel/time.c b/trunk/arch/um/kernel/time.c new file mode 100644 index 000000000000..8fa2ae7f3026 --- /dev/null +++ b/trunk/arch/um/kernel/time.c @@ -0,0 +1,172 @@ +/* + * Copyright (C) 2000, 2001, 2002 Jeff Dike (jdike@karaya.com) + * Licensed under the GPL + */ + +#include +#include +#include +#include +#include +#include +#include +#include "user_util.h" +#include "kern_util.h" +#include "user.h" +#include "process.h" +#include "time_user.h" +#include "kern_constants.h" +#include "os.h" + +/* XXX This really needs to be declared and initialized in a kernel file since + * it's in + */ +extern struct timespec wall_to_monotonic; + +extern struct timeval xtime; + +struct timeval local_offset = { 0, 0 }; + +void timer(void) +{ + gettimeofday(&xtime, NULL); + timeradd(&xtime, &local_offset, &xtime); +} + +static void set_interval(int timer_type) +{ + int usec = 1000000/hz(); + struct itimerval interval = ((struct itimerval) { { 0, usec }, + { 0, usec } }); + + if(setitimer(timer_type, &interval, NULL) == -1) + panic("setitimer failed - errno = %d\n", errno); +} + +void enable_timer(void) +{ + set_interval(ITIMER_VIRTUAL); +} + +void prepare_timer(void * ptr) +{ + int usec = 1000000/hz(); + *(struct itimerval *)ptr = ((struct itimerval) { { 0, usec }, + { 0, usec }}); +} + +void disable_timer(void) +{ + struct itimerval disable = ((struct itimerval) { { 0, 0 }, { 0, 0 }}); + if((setitimer(ITIMER_VIRTUAL, &disable, NULL) < 0) || + (setitimer(ITIMER_REAL, &disable, NULL) < 0)) + printk("disnable_timer - setitimer failed, errno = %d\n", + errno); + /* If there are signals already queued, after unblocking ignore them */ + set_handler(SIGALRM, SIG_IGN, 0, -1); + set_handler(SIGVTALRM, SIG_IGN, 0, -1); +} + +void switch_timers(int to_real) +{ + struct itimerval disable = ((struct itimerval) { { 0, 0 }, { 0, 0 }}); + struct itimerval enable = ((struct itimerval) { { 0, 1000000/hz() }, + { 0, 1000000/hz() }}); + int old, new; + + if(to_real){ + old = ITIMER_VIRTUAL; + new = ITIMER_REAL; + } + else { + old = ITIMER_REAL; + new = ITIMER_VIRTUAL; + } + + if((setitimer(old, &disable, NULL) < 0) || + (setitimer(new, &enable, NULL))) + printk("switch_timers - setitimer failed, errno = %d\n", + errno); +} + +void uml_idle_timer(void) +{ + if(signal(SIGVTALRM, SIG_IGN) == SIG_ERR) + panic("Couldn't unset SIGVTALRM handler"); + + set_handler(SIGALRM, (__sighandler_t) alarm_handler, + SA_RESTART, SIGUSR1, SIGIO, SIGWINCH, SIGVTALRM, -1); + set_interval(ITIMER_REAL); +} + +extern void ktime_get_ts(struct timespec *ts); +#define do_posix_clock_monotonic_gettime(ts) ktime_get_ts(ts) + +void time_init(void) +{ + struct timespec now; + + if(signal(SIGVTALRM, boot_timer_handler) == SIG_ERR) + panic("Couldn't set SIGVTALRM handler"); + set_interval(ITIMER_VIRTUAL); + + do_posix_clock_monotonic_gettime(&now); + wall_to_monotonic.tv_sec = -now.tv_sec; + wall_to_monotonic.tv_nsec = -now.tv_nsec; +} + +/* Defined in linux/ktimer.h, which can't be included here */ +#define clock_was_set() do { } while (0) + +void do_gettimeofday(struct timeval *tv) +{ + unsigned long flags; + + flags = time_lock(); + gettimeofday(tv, NULL); + timeradd(tv, &local_offset, tv); + time_unlock(flags); + clock_was_set(); +} + +int do_settimeofday(struct timespec *tv) +{ + struct timeval now; + unsigned long flags; + struct timeval tv_in; + + if ((unsigned long) tv->tv_nsec >= UM_NSEC_PER_SEC) + return -EINVAL; + + tv_in.tv_sec = tv->tv_sec; + tv_in.tv_usec = tv->tv_nsec / 1000; + + flags = time_lock(); + gettimeofday(&now, NULL); + timersub(&tv_in, &now, &local_offset); + time_unlock(flags); + + return(0); +} + +void idle_sleep(int secs) +{ + struct timespec ts; + + ts.tv_sec = secs; + ts.tv_nsec = 0; + nanosleep(&ts, NULL); +} + +/* XXX This partly duplicates init_irq_signals */ + +void user_time_init(void) +{ + set_handler(SIGVTALRM, (__sighandler_t) alarm_handler, + SA_ONSTACK | SA_RESTART, SIGUSR1, SIGIO, SIGWINCH, + SIGALRM, SIGUSR2, -1); + set_handler(SIGALRM, (__sighandler_t) alarm_handler, + SA_ONSTACK | SA_RESTART, SIGUSR1, SIGIO, SIGWINCH, + SIGVTALRM, SIGUSR2, -1); + set_interval(ITIMER_VIRTUAL); +} diff --git a/trunk/arch/um/kernel/time_kern.c b/trunk/arch/um/kernel/time_kern.c index 820fa3615a3f..87cdbc560d36 100644 --- a/trunk/arch/um/kernel/time_kern.c +++ b/trunk/arch/um/kernel/time_kern.c @@ -96,15 +96,11 @@ void time_init_kern(void) void do_boot_timer_handler(struct sigcontext * sc) { - unsigned long flags; struct pt_regs regs; CHOOSE_MODE((void) (UPT_SC(®s.regs) = sc), (void) (regs.regs.skas.is_user = 0)); - - write_seqlock_irqsave(&xtime_lock, flags); do_timer(®s); - write_sequnlock_irqrestore(&xtime_lock, flags); } static DEFINE_SPINLOCK(timer_spinlock); @@ -129,17 +125,25 @@ irqreturn_t um_timer(int irq, void *dev, struct pt_regs *regs) unsigned long long nsecs; unsigned long flags; - write_seqlock_irqsave(&xtime_lock, flags); - do_timer(regs); + write_seqlock_irqsave(&xtime_lock, flags); nsecs = get_time() + local_offset; xtime.tv_sec = nsecs / NSEC_PER_SEC; xtime.tv_nsec = nsecs - xtime.tv_sec * NSEC_PER_SEC; - write_sequnlock_irqrestore(&xtime_lock, flags); - return IRQ_HANDLED; + return(IRQ_HANDLED); +} + +long um_time(int __user *tloc) +{ + long ret = get_time() / NSEC_PER_SEC; + + if((tloc != NULL) && put_user(ret, tloc)) + return -EFAULT; + + return ret; } void do_gettimeofday(struct timeval *tv) @@ -170,6 +174,18 @@ static inline void set_time(unsigned long long nsecs) clock_was_set(); } +long um_stime(int __user *tptr) +{ + int value; + + if (get_user(value, tptr)) + return -EFAULT; + + set_time((unsigned long long) value * NSEC_PER_SEC); + + return 0; +} + int do_settimeofday(struct timespec *tv) { set_time((unsigned long long) tv->tv_sec * NSEC_PER_SEC + tv->tv_nsec); diff --git a/trunk/arch/um/kernel/vmlinux.lds.S b/trunk/arch/um/kernel/vmlinux.lds.S index 72acdce205e0..1660a769674b 100644 --- a/trunk/arch/um/kernel/vmlinux.lds.S +++ b/trunk/arch/um/kernel/vmlinux.lds.S @@ -1,5 +1,4 @@ -/* in case the preprocessor is a 32bit one */ -#undef i386 +#include #ifdef CONFIG_LD_SCRIPT_STATIC #include "uml.lds.S" #else diff --git a/trunk/arch/um/os-Linux/mem.c b/trunk/arch/um/os-Linux/mem.c index 560c8063c77c..c6432e729241 100644 --- a/trunk/arch/um/os-Linux/mem.c +++ b/trunk/arch/um/os-Linux/mem.c @@ -55,7 +55,7 @@ static void __init find_tempdir(void) */ static int next(int fd, char *buf, int size, char c) { - int n, len; + int n; char *ptr; while((ptr = strchr(buf, c)) == NULL){ @@ -69,17 +69,7 @@ static int next(int fd, char *buf, int size, char c) } ptr++; - len = strlen(ptr); - memmove(buf, ptr, len + 1); - - /* Refill the buffer so that if there's a partial string that we care - * about, it will be completed, and we can recognize it. - */ - n = read(fd, &buf[len], size - len - 1); - if(n < 0) - return -errno; - - buf[len + n] = '\0'; + memmove(buf, ptr, strlen(ptr) + 1); return 1; } @@ -210,11 +200,8 @@ int create_tmp_file(unsigned long long len) exit(1); } - /* Seek to len - 1 because writing a character there will - * increase the file size by one byte, to the desired length. - */ - if (lseek64(fd, len - 1, SEEK_SET) < 0) { - perror("os_seek_file"); + if (lseek64(fd, len, SEEK_SET) < 0) { + perror("os_seek_file"); exit(1); } diff --git a/trunk/arch/um/os-Linux/umid.c b/trunk/arch/um/os-Linux/umid.c index 48092b95c8ab..362db059fe30 100644 --- a/trunk/arch/um/os-Linux/umid.c +++ b/trunk/arch/um/os-Linux/umid.c @@ -67,53 +67,32 @@ static int __init make_uml_dir(void) return err; } -/* - * Unlinks the files contained in @dir and then removes @dir. - * Doesn't handle directory trees, so it's not like rm -rf, but almost such. We - * ignore ENOENT errors for anything (they happen, strangely enough - possibly due - * to races between multiple dying UML threads). - */ -static int remove_files_and_dir(char *dir) +static int actually_do_remove(char *dir) { DIR *directory; struct dirent *ent; int len; char file[256]; - int ret; directory = opendir(dir); - if (directory == NULL) { - if (errno != ENOENT) - return -errno; - else - return 0; - } + if(directory == NULL) + return -errno; - while ((ent = readdir(directory)) != NULL) { - if (!strcmp(ent->d_name, ".") || !strcmp(ent->d_name, "..")) + while((ent = readdir(directory)) != NULL){ + if(!strcmp(ent->d_name, ".") || !strcmp(ent->d_name, "..")) continue; len = strlen(dir) + sizeof("/") + strlen(ent->d_name) + 1; - if (len > sizeof(file)) { - ret = -E2BIG; - goto out; - } + if(len > sizeof(file)) + return -E2BIG; sprintf(file, "%s/%s", dir, ent->d_name); - if (unlink(file) < 0 && errno != ENOENT) { - ret = -errno; - goto out; - } - } - - if (rmdir(dir) < 0 && errno != ENOENT) { - ret = -errno; - goto out; + if(unlink(file) < 0) + return -errno; } + if(rmdir(dir) < 0) + return -errno; - ret = 0; -out: - closedir(directory); - return ret; + return 0; } /* This says that there isn't already a user of the specified directory even if @@ -124,10 +103,9 @@ static int remove_files_and_dir(char *dir) * something other than UML sticking stuff in the directory * this boot racing with a shutdown of the other UML * In any of these cases, the directory isn't useful for anything else. - * - * Boolean return: 1 if in use, 0 otherwise. */ -static inline int is_umdir_used(char *dir) + +static int not_dead_yet(char *dir) { char file[strlen(uml_dir) + UMID_LEN + sizeof("/pid\0")]; char pid[sizeof("nnnnn\0")], *end; @@ -135,7 +113,7 @@ static inline int is_umdir_used(char *dir) n = snprintf(file, sizeof(file), "%s/pid", dir); if(n >= sizeof(file)){ - printk("is_umdir_used - pid filename too long\n"); + printk("not_dead_yet - pid filename too long\n"); err = -E2BIG; goto out; } @@ -145,7 +123,7 @@ static inline int is_umdir_used(char *dir) if(fd < 0) { fd = -errno; if(fd != -ENOENT){ - printk("is_umdir_used : couldn't open pid file '%s', " + printk("not_dead_yet : couldn't open pid file '%s', " "err = %d\n", file, -fd); } goto out; @@ -154,18 +132,18 @@ static inline int is_umdir_used(char *dir) err = 0; n = read(fd, pid, sizeof(pid)); if(n < 0){ - printk("is_umdir_used : couldn't read pid file '%s', " + printk("not_dead_yet : couldn't read pid file '%s', " "err = %d\n", file, errno); goto out_close; } else if(n == 0){ - printk("is_umdir_used : couldn't read pid file '%s', " + printk("not_dead_yet : couldn't read pid file '%s', " "0-byte read\n", file); goto out_close; } p = strtoul(pid, &end, 0); if(end == pid){ - printk("is_umdir_used : couldn't parse pid file '%s', " + printk("not_dead_yet : couldn't parse pid file '%s', " "errno = %d\n", file, errno); goto out_close; } @@ -175,32 +153,19 @@ static inline int is_umdir_used(char *dir) return 1; } + err = actually_do_remove(dir); + if(err) + printk("not_dead_yet - actually_do_remove failed with " + "err = %d\n", err); + + return err; + out_close: close(fd); out: return 0; } -/* - * Try to remove the directory @dir unless it's in use. - * Precondition: @dir exists. - * Returns 0 for success, < 0 for failure in removal or if the directory is in - * use. - */ -static int umdir_take_if_dead(char *dir) -{ - int ret; - if (is_umdir_used(dir)) - return -EEXIST; - - ret = remove_files_and_dir(dir); - if (ret) { - printk("is_umdir_used - remove_files_and_dir failed with " - "err = %d\n", ret); - } - return ret; -} - static void __init create_pid_file(void) { char file[strlen(uml_dir) + UMID_LEN + sizeof("/pid\0")]; @@ -279,7 +244,11 @@ int __init make_umid(void) if(err != -EEXIST) goto err; - if (umdir_take_if_dead(tmp) < 0) + /* 1 -> this umid is already in use + * < 0 -> we couldn't remove the umid directory + * In either case, we can't use this umid, so return -EEXIST. + */ + if(not_dead_yet(tmp) != 0) goto err; err = mkdir(tmp, 0777); @@ -375,9 +344,9 @@ static void remove_umid_dir(void) char dir[strlen(uml_dir) + UMID_LEN + 1], err; sprintf(dir, "%s%s", uml_dir, umid); - err = remove_files_and_dir(dir); + err = actually_do_remove(dir); if(err) - printf("remove_umid_dir - remove_files_and_dir failed with " + printf("remove_umid_dir - actually_do_remove failed with " "err = %d\n", err); } diff --git a/trunk/arch/um/scripts/Makefile.rules b/trunk/arch/um/scripts/Makefile.rules index 813077fb1e5b..1347dc6d5218 100644 --- a/trunk/arch/um/scripts/Makefile.rules +++ b/trunk/arch/um/scripts/Makefile.rules @@ -8,7 +8,7 @@ USER_OBJS += $(filter %_user.o,$(obj-y) $(obj-m) $(USER_SINGLE_OBJS)) USER_OBJS := $(foreach file,$(USER_OBJS),$(obj)/$(file)) $(USER_OBJS:.o=.%): \ - c_flags = -Wp,-MD,$(depfile) $(USER_CFLAGS) $(CFLAGS_$(basetarget).o) + c_flags = -Wp,-MD,$(depfile) $(USER_CFLAGS) $(CFLAGS_$(*F).o) $(USER_OBJS) : CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ \ -Dunix -D__unix__ -D__$(SUBARCH)__ @@ -17,7 +17,7 @@ $(USER_OBJS) : CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ \ UNPROFILE_OBJS := $(foreach file,$(UNPROFILE_OBJS),$(obj)/$(file)) $(UNPROFILE_OBJS:.o=.%): \ - c_flags = -Wp,-MD,$(depfile) $(call unprofile,$(USER_CFLAGS)) $(CFLAGS_$(basetarget).o) + c_flags = -Wp,-MD,$(depfile) $(call unprofile,$(USER_CFLAGS)) $(CFLAGS_$(*F).o) $(UNPROFILE_OBJS) : CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ \ -Dunix -D__unix__ -D__$(SUBARCH)__ diff --git a/trunk/arch/um/sys-i386/checksum.S b/trunk/arch/um/sys-i386/checksum.S index 62c7e564f22e..d98b2fff3d08 100644 --- a/trunk/arch/um/sys-i386/checksum.S +++ b/trunk/arch/um/sys-i386/checksum.S @@ -25,6 +25,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include /* diff --git a/trunk/arch/um/sys-i386/ptrace.c b/trunk/arch/um/sys-i386/ptrace.c index 28bf01150323..6028bc7cc01b 100644 --- a/trunk/arch/um/sys-i386/ptrace.c +++ b/trunk/arch/um/sys-i386/ptrace.c @@ -3,6 +3,7 @@ * Licensed under the GPL */ +#include #include #include "linux/sched.h" #include "linux/mm.h" diff --git a/trunk/arch/um/sys-i386/sys_call_table.S b/trunk/arch/um/sys-i386/sys_call_table.S index 2497554b7b95..1ff61474b25c 100644 --- a/trunk/arch/um/sys-i386/sys_call_table.S +++ b/trunk/arch/um/sys-i386/sys_call_table.S @@ -7,6 +7,8 @@ #define sys_vm86old sys_ni_syscall #define sys_vm86 sys_ni_syscall +#define sys_stime um_stime +#define sys_time um_time #define old_mmap old_mmap_i386 #include "../../i386/kernel/syscall_table.S" diff --git a/trunk/arch/um/sys-ppc/misc.S b/trunk/arch/um/sys-ppc/misc.S index 1364b7da578c..f0c971db47e4 100644 --- a/trunk/arch/um/sys-ppc/misc.S +++ b/trunk/arch/um/sys-ppc/misc.S @@ -15,6 +15,7 @@ * */ +#include #include #include "ppc_asm.h" diff --git a/trunk/arch/um/sys-x86_64/syscall_table.c b/trunk/arch/um/sys-x86_64/syscall_table.c index 9e9ad72c2ba4..34b2e842864f 100644 --- a/trunk/arch/um/sys-x86_64/syscall_table.c +++ b/trunk/arch/um/sys-x86_64/syscall_table.c @@ -4,6 +4,7 @@ #include #include #include +#include #define __NO_STUBS @@ -19,6 +20,12 @@ /*#define sys_set_thread_area sys_ni_syscall #define sys_get_thread_area sys_ni_syscall*/ +/* For __NR_time. The x86-64 name hopefully will change from sys_time64 to + * sys_time (since the current situation is bogus). I've sent a patch to cleanup + * this. Remove below the obsoleted line. */ +#define sys_time64 um_time +#define sys_time um_time + /* On UML we call it this way ("old" means it's not mmap2) */ #define sys_mmap old_mmap /* On x86-64 sys_uname is actually sys_newuname plus a compatibility trick. diff --git a/trunk/arch/v850/kernel/anna.c b/trunk/arch/v850/kernel/anna.c index 40892d3e3c24..d0502e142437 100644 --- a/trunk/arch/v850/kernel/anna.c +++ b/trunk/arch/v850/kernel/anna.c @@ -11,6 +11,7 @@ * Written by Miles Bader */ +#include #include #include #include diff --git a/trunk/arch/v850/kernel/as85ep1.c b/trunk/arch/v850/kernel/as85ep1.c index 5352f8a5aa07..d78c5e4ea9bc 100644 --- a/trunk/arch/v850/kernel/as85ep1.c +++ b/trunk/arch/v850/kernel/as85ep1.c @@ -11,6 +11,7 @@ * Written by Miles Bader */ +#include #include #include #include diff --git a/trunk/arch/v850/kernel/fpga85e2c.c b/trunk/arch/v850/kernel/fpga85e2c.c index cb04a6954ccb..d8094519ad85 100644 --- a/trunk/arch/v850/kernel/fpga85e2c.c +++ b/trunk/arch/v850/kernel/fpga85e2c.c @@ -12,6 +12,7 @@ * Written by Miles Bader */ +#include #include #include #include diff --git a/trunk/arch/v850/kernel/ma.c b/trunk/arch/v850/kernel/ma.c index 2aa8ab0f7edc..b3dfbc5d2f40 100644 --- a/trunk/arch/v850/kernel/ma.c +++ b/trunk/arch/v850/kernel/ma.c @@ -11,6 +11,7 @@ * Written by Miles Bader */ +#include #include #include #include diff --git a/trunk/arch/v850/kernel/me2.c b/trunk/arch/v850/kernel/me2.c index 14b0c8858aa4..6527c218f91d 100644 --- a/trunk/arch/v850/kernel/me2.c +++ b/trunk/arch/v850/kernel/me2.c @@ -11,6 +11,7 @@ * Written by Miles Bader */ +#include #include #include #include diff --git a/trunk/arch/v850/kernel/process.c b/trunk/arch/v850/kernel/process.c index c4f844c86e50..57218c76925c 100644 --- a/trunk/arch/v850/kernel/process.c +++ b/trunk/arch/v850/kernel/process.c @@ -11,6 +11,7 @@ * Written by Miles Bader */ +#include #include #include #include diff --git a/trunk/arch/v850/kernel/rte_cb.c b/trunk/arch/v850/kernel/rte_cb.c index 0f7f6cd705a2..0c794b9e0f9b 100644 --- a/trunk/arch/v850/kernel/rte_cb.c +++ b/trunk/arch/v850/kernel/rte_cb.c @@ -11,6 +11,7 @@ * Written by Miles Bader */ +#include #include #include #include diff --git a/trunk/arch/v850/kernel/rte_cb_leds.c b/trunk/arch/v850/kernel/rte_cb_leds.c index f654088b2760..b662ad838940 100644 --- a/trunk/arch/v850/kernel/rte_cb_leds.c +++ b/trunk/arch/v850/kernel/rte_cb_leds.c @@ -11,6 +11,7 @@ * Written by Miles Bader */ +#include #include #include #include diff --git a/trunk/arch/v850/kernel/rte_ma1_cb.c b/trunk/arch/v850/kernel/rte_ma1_cb.c index 9a716f946421..3873e276392f 100644 --- a/trunk/arch/v850/kernel/rte_ma1_cb.c +++ b/trunk/arch/v850/kernel/rte_ma1_cb.c @@ -11,6 +11,7 @@ * Written by Miles Bader */ +#include #include #include #include diff --git a/trunk/arch/v850/kernel/rte_mb_a_pci.c b/trunk/arch/v850/kernel/rte_mb_a_pci.c index f36b778f1432..3a7c5c9c3ac6 100644 --- a/trunk/arch/v850/kernel/rte_mb_a_pci.c +++ b/trunk/arch/v850/kernel/rte_mb_a_pci.c @@ -11,6 +11,7 @@ * Written by Miles Bader */ +#include #include #include #include diff --git a/trunk/arch/v850/kernel/rte_me2_cb.c b/trunk/arch/v850/kernel/rte_me2_cb.c index df7027d85437..faaf3d95e6cf 100644 --- a/trunk/arch/v850/kernel/rte_me2_cb.c +++ b/trunk/arch/v850/kernel/rte_me2_cb.c @@ -11,6 +11,7 @@ * Written by Miles Bader */ +#include #include #include #include diff --git a/trunk/arch/v850/kernel/rte_nb85e_cb.c b/trunk/arch/v850/kernel/rte_nb85e_cb.c index b4a045da5d70..990b20bffe47 100644 --- a/trunk/arch/v850/kernel/rte_nb85e_cb.c +++ b/trunk/arch/v850/kernel/rte_nb85e_cb.c @@ -11,6 +11,7 @@ * Written by Miles Bader */ +#include #include #include #include diff --git a/trunk/arch/v850/kernel/sim.c b/trunk/arch/v850/kernel/sim.c index 467b4aa0acdd..17049aaa8f11 100644 --- a/trunk/arch/v850/kernel/sim.c +++ b/trunk/arch/v850/kernel/sim.c @@ -11,6 +11,7 @@ * Written by Miles Bader */ +#include #include #include #include diff --git a/trunk/arch/v850/kernel/sim85e2.c b/trunk/arch/v850/kernel/sim85e2.c index 566dde5e6070..9111613fb53a 100644 --- a/trunk/arch/v850/kernel/sim85e2.c +++ b/trunk/arch/v850/kernel/sim85e2.c @@ -12,6 +12,7 @@ * Written by Miles Bader */ +#include #include #include #include diff --git a/trunk/arch/v850/kernel/syscalls.c b/trunk/arch/v850/kernel/syscalls.c index 2ec0700fc46b..9224cb65f6ec 100644 --- a/trunk/arch/v850/kernel/syscalls.c +++ b/trunk/arch/v850/kernel/syscalls.c @@ -15,6 +15,7 @@ * and Paul Mackerras (paulus@cs.anu.edu.au). */ +#include #include #include #include diff --git a/trunk/arch/v850/kernel/teg.c b/trunk/arch/v850/kernel/teg.c index 290d50665016..495cf8f37bcb 100644 --- a/trunk/arch/v850/kernel/teg.c +++ b/trunk/arch/v850/kernel/teg.c @@ -11,6 +11,7 @@ * Written by Miles Bader */ +#include #include #include #include diff --git a/trunk/arch/v850/kernel/v850_ksyms.c b/trunk/arch/v850/kernel/v850_ksyms.c index c03ad6ed61cc..6bcfcfe88384 100644 --- a/trunk/arch/v850/kernel/v850_ksyms.c +++ b/trunk/arch/v850/kernel/v850_ksyms.c @@ -7,6 +7,7 @@ #include #include #include +#include #include #include diff --git a/trunk/arch/v850/kernel/vmlinux.lds.S b/trunk/arch/v850/kernel/vmlinux.lds.S index 63399219cd9f..5b2ffcc6e2b2 100644 --- a/trunk/arch/v850/kernel/vmlinux.lds.S +++ b/trunk/arch/v850/kernel/vmlinux.lds.S @@ -11,6 +11,7 @@ * Written by Miles Bader */ +#include #define VMLINUX_SYMBOL(_sym_) _##_sym_ #include diff --git a/trunk/arch/x86_64/boot/setup.S b/trunk/arch/x86_64/boot/setup.S index 7de8b8fd1685..12ea0b6c52e2 100644 --- a/trunk/arch/x86_64/boot/setup.S +++ b/trunk/arch/x86_64/boot/setup.S @@ -45,6 +45,7 @@ * Added long mode checking and SSE force. March 2003, Andi Kleen. */ +#include #include #include #include diff --git a/trunk/arch/x86_64/ia32/Makefile b/trunk/arch/x86_64/ia32/Makefile index 62bc5f56da9e..e9263b4975e0 100644 --- a/trunk/arch/x86_64/ia32/Makefile +++ b/trunk/arch/x86_64/ia32/Makefile @@ -11,9 +11,6 @@ obj-$(CONFIG_IA32_EMULATION) += $(sysv-y) obj-$(CONFIG_IA32_AOUT) += ia32_aout.o -audit-class-$(CONFIG_AUDIT) := audit.o -obj-$(CONFIG_IA32_EMULATION) += $(audit-class-y) - $(obj)/syscall32_syscall.o: \ $(foreach F,sysenter syscall,$(obj)/vsyscall-$F.so) diff --git a/trunk/arch/x86_64/ia32/audit.c b/trunk/arch/x86_64/ia32/audit.c deleted file mode 100644 index ab94f2e58cdd..000000000000 --- a/trunk/arch/x86_64/ia32/audit.c +++ /dev/null @@ -1,11 +0,0 @@ -#include - -unsigned ia32_dir_class[] = { -#include -~0U -}; - -unsigned ia32_chattr_class[] = { -#include -~0U -}; diff --git a/trunk/arch/x86_64/ia32/sys_ia32.c b/trunk/arch/x86_64/ia32/sys_ia32.c index 9c130993380d..dc88154c412b 100644 --- a/trunk/arch/x86_64/ia32/sys_ia32.c +++ b/trunk/arch/x86_64/ia32/sys_ia32.c @@ -20,6 +20,7 @@ * This should be fixed. */ +#include #include #include #include diff --git a/trunk/arch/x86_64/kernel/Makefile b/trunk/arch/x86_64/kernel/Makefile index 819e84ec5b64..aeb9c560be88 100644 --- a/trunk/arch/x86_64/kernel/Makefile +++ b/trunk/arch/x86_64/kernel/Makefile @@ -35,7 +35,6 @@ obj-$(CONFIG_KPROBES) += kprobes.o obj-$(CONFIG_X86_PM_TIMER) += pmtimer.o obj-$(CONFIG_X86_VSMP) += vsmp.o obj-$(CONFIG_K8_NB) += k8.o -obj-$(CONFIG_AUDIT) += audit.o obj-$(CONFIG_MODULES) += module.o diff --git a/trunk/arch/x86_64/kernel/acpi/sleep.c b/trunk/arch/x86_64/kernel/acpi/sleep.c index 5ebf62c7a3d2..091bc79c888f 100644 --- a/trunk/arch/x86_64/kernel/acpi/sleep.c +++ b/trunk/arch/x86_64/kernel/acpi/sleep.c @@ -26,6 +26,7 @@ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ +#include #include #include #include diff --git a/trunk/arch/x86_64/kernel/aperture.c b/trunk/arch/x86_64/kernel/aperture.c index 58af8e73738b..a195ef06ec55 100644 --- a/trunk/arch/x86_64/kernel/aperture.c +++ b/trunk/arch/x86_64/kernel/aperture.c @@ -9,6 +9,7 @@ * * Copyright 2002 Andi Kleen, SuSE Labs. */ +#include #include #include #include diff --git a/trunk/arch/x86_64/kernel/apic.c b/trunk/arch/x86_64/kernel/apic.c index 2b8cef037a65..b2ead91df218 100644 --- a/trunk/arch/x86_64/kernel/apic.c +++ b/trunk/arch/x86_64/kernel/apic.c @@ -14,6 +14,7 @@ * Mikael Pettersson : PM converted to driver model. */ +#include #include #include diff --git a/trunk/arch/x86_64/kernel/audit.c b/trunk/arch/x86_64/kernel/audit.c deleted file mode 100644 index a067aa468a85..000000000000 --- a/trunk/arch/x86_64/kernel/audit.c +++ /dev/null @@ -1,29 +0,0 @@ -#include -#include -#include -#include - -static unsigned dir_class[] = { -#include -~0U -}; - -static unsigned chattr_class[] = { -#include -~0U -}; - -static int __init audit_classes_init(void) -{ -#ifdef CONFIG_IA32_EMULATION - extern __u32 ia32_dir_class[]; - extern __u32 ia32_chattr_class[]; - audit_register_class(AUDIT_CLASS_DIR_WRITE_32, ia32_dir_class); - audit_register_class(AUDIT_CLASS_CHATTR_32, ia32_chattr_class); -#endif - audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); - audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); - return 0; -} - -__initcall(audit_classes_init); diff --git a/trunk/arch/x86_64/kernel/e820.c b/trunk/arch/x86_64/kernel/e820.c index b8eee4c7888b..9e94d834624b 100644 --- a/trunk/arch/x86_64/kernel/e820.c +++ b/trunk/arch/x86_64/kernel/e820.c @@ -8,6 +8,7 @@ * Venkatesh Pallipadi * */ +#include #include #include #include diff --git a/trunk/arch/x86_64/kernel/entry.S b/trunk/arch/x86_64/kernel/entry.S index ed92c2983606..22cac4487b57 100644 --- a/trunk/arch/x86_64/kernel/entry.S +++ b/trunk/arch/x86_64/kernel/entry.S @@ -28,6 +28,7 @@ */ #define ASSEMBLY 1 +#include #include #include #include diff --git a/trunk/arch/x86_64/kernel/functionlist b/trunk/arch/x86_64/kernel/functionlist index 01fa23580c85..2bcebdc3eedb 100644 --- a/trunk/arch/x86_64/kernel/functionlist +++ b/trunk/arch/x86_64/kernel/functionlist @@ -384,6 +384,7 @@ *(.text.__end_that_request_first) *(.text.wake_up_bit) *(.text.unuse_mm) +*(.text.skb_release_data) *(.text.shrink_icache_memory) *(.text.sched_balance_self) *(.text.__pmd_alloc) diff --git a/trunk/arch/x86_64/kernel/genapic.c b/trunk/arch/x86_64/kernel/genapic.c index 8e78a75d1866..7a64ea181788 100644 --- a/trunk/arch/x86_64/kernel/genapic.c +++ b/trunk/arch/x86_64/kernel/genapic.c @@ -8,6 +8,7 @@ * Martin Bligh, Andi Kleen, James Bottomley, John Stultz, and * James Cleverdon. */ +#include #include #include #include diff --git a/trunk/arch/x86_64/kernel/genapic_cluster.c b/trunk/arch/x86_64/kernel/genapic_cluster.c index 3020917546de..43fcf62fef0f 100644 --- a/trunk/arch/x86_64/kernel/genapic_cluster.c +++ b/trunk/arch/x86_64/kernel/genapic_cluster.c @@ -9,6 +9,7 @@ * Martin Bligh, Andi Kleen, James Bottomley, John Stultz, and * James Cleverdon. */ +#include #include #include #include diff --git a/trunk/arch/x86_64/kernel/genapic_flat.c b/trunk/arch/x86_64/kernel/genapic_flat.c index eb86d374813a..21c7066e236a 100644 --- a/trunk/arch/x86_64/kernel/genapic_flat.c +++ b/trunk/arch/x86_64/kernel/genapic_flat.c @@ -8,6 +8,7 @@ * Martin Bligh, Andi Kleen, James Bottomley, John Stultz, and * James Cleverdon. */ +#include #include #include #include diff --git a/trunk/arch/x86_64/kernel/i387.c b/trunk/arch/x86_64/kernel/i387.c index 3aa1e9bb781d..44ddb1ec808d 100644 --- a/trunk/arch/x86_64/kernel/i387.c +++ b/trunk/arch/x86_64/kernel/i387.c @@ -14,6 +14,7 @@ * the 64bit user space sees a FXSAVE frame directly. */ +#include #include #include #include diff --git a/trunk/arch/x86_64/kernel/i8259.c b/trunk/arch/x86_64/kernel/i8259.c index 0434b1f8e3dd..3dd1659427dc 100644 --- a/trunk/arch/x86_64/kernel/i8259.c +++ b/trunk/arch/x86_64/kernel/i8259.c @@ -1,4 +1,5 @@ #include +#include #include #include #include diff --git a/trunk/arch/x86_64/kernel/io_apic.c b/trunk/arch/x86_64/kernel/io_apic.c index 924a4a332954..401b687fef21 100644 --- a/trunk/arch/x86_64/kernel/io_apic.c +++ b/trunk/arch/x86_64/kernel/io_apic.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/x86_64/kernel/kprobes.c b/trunk/arch/x86_64/kernel/kprobes.c index ffc73ac72485..fa1d19ca700a 100644 --- a/trunk/arch/x86_64/kernel/kprobes.c +++ b/trunk/arch/x86_64/kernel/kprobes.c @@ -31,6 +31,7 @@ * Added function return probes functionality */ +#include #include #include #include diff --git a/trunk/arch/x86_64/kernel/mpparse.c b/trunk/arch/x86_64/kernel/mpparse.c index a1ab4197f8a1..083da7e606b1 100644 --- a/trunk/arch/x86_64/kernel/mpparse.c +++ b/trunk/arch/x86_64/kernel/mpparse.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/x86_64/kernel/nmi.c b/trunk/arch/x86_64/kernel/nmi.c index 476c1472fc07..0ef9cf2bc45e 100644 --- a/trunk/arch/x86_64/kernel/nmi.c +++ b/trunk/arch/x86_64/kernel/nmi.c @@ -12,6 +12,7 @@ * Mikael Pettersson : PM converted to driver model. Disable/enable API. */ +#include #include #include #include diff --git a/trunk/arch/x86_64/kernel/pci-gart.c b/trunk/arch/x86_64/kernel/pci-gart.c index 6d3e61baf7a0..4ca674d16b09 100644 --- a/trunk/arch/x86_64/kernel/pci-gart.c +++ b/trunk/arch/x86_64/kernel/pci-gart.c @@ -10,6 +10,7 @@ * Copyright 2002 Andi Kleen, SuSE Labs. */ +#include #include #include #include diff --git a/trunk/arch/x86_64/kernel/setup.c b/trunk/arch/x86_64/kernel/setup.c index 0925518b58d0..1129918ede82 100644 --- a/trunk/arch/x86_64/kernel/setup.c +++ b/trunk/arch/x86_64/kernel/setup.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/arch/x86_64/kernel/setup64.c b/trunk/arch/x86_64/kernel/setup64.c index 6fe58a634b5f..f5934cb4a2b6 100644 --- a/trunk/arch/x86_64/kernel/setup64.c +++ b/trunk/arch/x86_64/kernel/setup64.c @@ -4,6 +4,7 @@ * Copyright 2001, 2002, 2003 SuSE Labs / Andi Kleen. * See setup.c for older changelog. */ +#include #include #include #include diff --git a/trunk/arch/x86_64/kernel/smpboot.c b/trunk/arch/x86_64/kernel/smpboot.c index 9705a6a384f1..540c0ccbcccc 100644 --- a/trunk/arch/x86_64/kernel/smpboot.c +++ b/trunk/arch/x86_64/kernel/smpboot.c @@ -38,6 +38,7 @@ */ +#include #include #include diff --git a/trunk/arch/x86_64/kernel/suspend.c b/trunk/arch/x86_64/kernel/suspend.c index 91f7e678bae7..ecbd34c1093d 100644 --- a/trunk/arch/x86_64/kernel/suspend.c +++ b/trunk/arch/x86_64/kernel/suspend.c @@ -7,6 +7,7 @@ * Copyright (c) 2001 Patrick Mochel */ +#include #include #include #include diff --git a/trunk/arch/x86_64/kernel/syscall.c b/trunk/arch/x86_64/kernel/syscall.c index 213fd6ab789d..7c176b3edde0 100644 --- a/trunk/arch/x86_64/kernel/syscall.c +++ b/trunk/arch/x86_64/kernel/syscall.c @@ -3,6 +3,7 @@ #include #include #include +#include #define __NO_STUBS diff --git a/trunk/arch/x86_64/kernel/traps.c b/trunk/arch/x86_64/kernel/traps.c index 5a5311d3de0f..3d11a2fe45b7 100644 --- a/trunk/arch/x86_64/kernel/traps.c +++ b/trunk/arch/x86_64/kernel/traps.c @@ -12,6 +12,7 @@ * 'Traps.c' handles hardware traps and faults after we have saved some * state in 'entry.S'. */ +#include #include #include #include diff --git a/trunk/arch/x86_64/kernel/vmlinux.lds.S b/trunk/arch/x86_64/kernel/vmlinux.lds.S index 7c4de31471d4..1c6a5f322919 100644 --- a/trunk/arch/x86_64/kernel/vmlinux.lds.S +++ b/trunk/arch/x86_64/kernel/vmlinux.lds.S @@ -6,6 +6,7 @@ #include #include +#include #undef i386 /* in case the preprocessor is a 32bit one */ diff --git a/trunk/arch/x86_64/mm/extable.c b/trunk/arch/x86_64/mm/extable.c index 79ac6e7100af..2d78f9fb4035 100644 --- a/trunk/arch/x86_64/mm/extable.c +++ b/trunk/arch/x86_64/mm/extable.c @@ -2,6 +2,7 @@ * linux/arch/x86_64/mm/extable.c */ +#include #include #include #include diff --git a/trunk/arch/x86_64/mm/fault.c b/trunk/arch/x86_64/mm/fault.c index 5afcf6eb00fa..08dc696f54ee 100644 --- a/trunk/arch/x86_64/mm/fault.c +++ b/trunk/arch/x86_64/mm/fault.c @@ -5,6 +5,7 @@ * Copyright (C) 2001,2002 Andi Kleen, SuSE Labs. */ +#include #include #include #include @@ -417,7 +418,7 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs, /* When running in the kernel we expect faults to occur only to * addresses in user space. All other faults represent errors in the * kernel and should generate an OOPS. Unfortunatly, in the case of an - * erroneous fault occurring in a code path which already holds mmap_sem + * erroneous fault occuring in a code path which already holds mmap_sem * we will deadlock attempting to validate the fault against the * address space. Luckily the kernel only validly references user * space from well defined areas of code, which are listed in the diff --git a/trunk/arch/x86_64/mm/init.c b/trunk/arch/x86_64/mm/init.c index d14fb2dfbfc4..95bd232ff0cf 100644 --- a/trunk/arch/x86_64/mm/init.c +++ b/trunk/arch/x86_64/mm/init.c @@ -6,6 +6,7 @@ * Copyright (C) 2002,2003 Andi Kleen */ +#include #include #include #include @@ -678,15 +679,16 @@ void free_initmem(void) #ifdef CONFIG_DEBUG_RODATA +extern char __start_rodata, __end_rodata; void mark_rodata_ro(void) { - unsigned long addr = (unsigned long)__start_rodata; + unsigned long addr = (unsigned long)&__start_rodata; - for (; addr < (unsigned long)__end_rodata; addr += PAGE_SIZE) + for (; addr < (unsigned long)&__end_rodata; addr += PAGE_SIZE) change_page_attr_addr(addr, 1, PAGE_KERNEL_RO); printk ("Write protecting the kernel read-only data: %luk\n", - (__end_rodata - __start_rodata) >> 10); + (&__end_rodata - &__start_rodata) >> 10); /* * change_page_attr_addr() requires a global_flush_tlb() call after it. diff --git a/trunk/arch/x86_64/mm/mmap.c b/trunk/arch/x86_64/mm/mmap.c index 80bba0dc000e..43e9b99bdf25 100644 --- a/trunk/arch/x86_64/mm/mmap.c +++ b/trunk/arch/x86_64/mm/mmap.c @@ -1,6 +1,7 @@ /* Copyright 2005 Andi Kleen, SuSE Labs. * Licensed under GPL, v.2 */ +#include #include #include #include diff --git a/trunk/arch/x86_64/mm/pageattr.c b/trunk/arch/x86_64/mm/pageattr.c index 2685b1f3671c..531ad21447b1 100644 --- a/trunk/arch/x86_64/mm/pageattr.c +++ b/trunk/arch/x86_64/mm/pageattr.c @@ -3,6 +3,7 @@ * Thanks to Ben LaHaise for precious feedback. */ +#include #include #include #include diff --git a/trunk/arch/xtensa/boot/boot-elf/bootstrap.S b/trunk/arch/xtensa/boot/boot-elf/bootstrap.S index f857fc760aa8..7cba94abdab8 100644 --- a/trunk/arch/xtensa/boot/boot-elf/bootstrap.S +++ b/trunk/arch/xtensa/boot/boot-elf/bootstrap.S @@ -2,6 +2,7 @@ #include #include +#include #include diff --git a/trunk/arch/xtensa/kernel/coprocessor.S b/trunk/arch/xtensa/kernel/coprocessor.S index cf5a93fb6a2e..356192a4d39d 100644 --- a/trunk/arch/xtensa/kernel/coprocessor.S +++ b/trunk/arch/xtensa/kernel/coprocessor.S @@ -24,6 +24,7 @@ * assigned when the Xtensa processor is generated. */ +#include #include #include diff --git a/trunk/arch/xtensa/kernel/head.S b/trunk/arch/xtensa/kernel/head.S index c07cb2522993..6e9b5225b8f6 100644 --- a/trunk/arch/xtensa/kernel/head.S +++ b/trunk/arch/xtensa/kernel/head.S @@ -16,6 +16,7 @@ */ #include +#include #include #include diff --git a/trunk/arch/xtensa/kernel/pci.c b/trunk/arch/xtensa/kernel/pci.c index 8709f8249d02..eda029fc8972 100644 --- a/trunk/arch/xtensa/kernel/pci.c +++ b/trunk/arch/xtensa/kernel/pci.c @@ -17,6 +17,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/xtensa/kernel/platform.c b/trunk/arch/xtensa/kernel/platform.c index 69675f216062..a17930747f20 100644 --- a/trunk/arch/xtensa/kernel/platform.c +++ b/trunk/arch/xtensa/kernel/platform.c @@ -12,6 +12,7 @@ * Chris Zankel */ +#include #include #include #include diff --git a/trunk/arch/xtensa/kernel/process.c b/trunk/arch/xtensa/kernel/process.c index a7c4178c2a8c..64a649eb883f 100644 --- a/trunk/arch/xtensa/kernel/process.c +++ b/trunk/arch/xtensa/kernel/process.c @@ -16,6 +16,7 @@ * Kevin Chea */ +#include #include #include #include diff --git a/trunk/arch/xtensa/kernel/ptrace.c b/trunk/arch/xtensa/kernel/ptrace.c index 5064d9383963..4cc85285a70a 100644 --- a/trunk/arch/xtensa/kernel/ptrace.c +++ b/trunk/arch/xtensa/kernel/ptrace.c @@ -13,6 +13,7 @@ * Marc Gauthier */ +#include #include #include #include diff --git a/trunk/arch/xtensa/kernel/setup.c b/trunk/arch/xtensa/kernel/setup.c index edb29410d953..513ed8d67766 100644 --- a/trunk/arch/xtensa/kernel/setup.c +++ b/trunk/arch/xtensa/kernel/setup.c @@ -14,6 +14,7 @@ * Marc Gauthier */ +#include #include #include #include diff --git a/trunk/arch/xtensa/kernel/syscalls.c b/trunk/arch/xtensa/kernel/syscalls.c index 4688ba2db84d..f20c6494c518 100644 --- a/trunk/arch/xtensa/kernel/syscalls.c +++ b/trunk/arch/xtensa/kernel/syscalls.c @@ -18,6 +18,7 @@ #define DEBUG 0 +#include #include #include #include diff --git a/trunk/arch/xtensa/kernel/time.c b/trunk/arch/xtensa/kernel/time.c index 4a2c365ba684..fe14909f45e0 100644 --- a/trunk/arch/xtensa/kernel/time.c +++ b/trunk/arch/xtensa/kernel/time.c @@ -12,6 +12,7 @@ * Chris Zankel */ +#include #include #include #include diff --git a/trunk/arch/xtensa/kernel/vmlinux.lds.S b/trunk/arch/xtensa/kernel/vmlinux.lds.S index ab6cdbd5eb68..5ed71dfc8110 100644 --- a/trunk/arch/xtensa/kernel/vmlinux.lds.S +++ b/trunk/arch/xtensa/kernel/vmlinux.lds.S @@ -16,6 +16,7 @@ #include +#include #define _NOCLANGUAGE #include #include diff --git a/trunk/arch/xtensa/kernel/xtensa_ksyms.c b/trunk/arch/xtensa/kernel/xtensa_ksyms.c index 0b4cb93db5a3..a15b6e3e72c8 100644 --- a/trunk/arch/xtensa/kernel/xtensa_ksyms.c +++ b/trunk/arch/xtensa/kernel/xtensa_ksyms.c @@ -12,6 +12,7 @@ * Joe Taylor */ +#include #include #include #include diff --git a/trunk/arch/xtensa/mm/init.c b/trunk/arch/xtensa/mm/init.c index 660ef058c149..e1be4235f367 100644 --- a/trunk/arch/xtensa/mm/init.c +++ b/trunk/arch/xtensa/mm/init.c @@ -15,6 +15,7 @@ * Kevin Chea */ +#include #include #include #include diff --git a/trunk/arch/xtensa/platform-iss/console.c b/trunk/arch/xtensa/platform-iss/console.c index 22d3c571a7bc..2a580efb58ec 100644 --- a/trunk/arch/xtensa/platform-iss/console.c +++ b/trunk/arch/xtensa/platform-iss/console.c @@ -10,6 +10,7 @@ */ #include +#include #include #include #include diff --git a/trunk/arch/xtensa/platform-iss/network.c b/trunk/arch/xtensa/platform-iss/network.c index d96164e602fe..0dc55cc8691b 100644 --- a/trunk/arch/xtensa/platform-iss/network.c +++ b/trunk/arch/xtensa/platform-iss/network.c @@ -16,6 +16,7 @@ * */ +#include #include #include #include diff --git a/trunk/arch/xtensa/platform-iss/setup.c b/trunk/arch/xtensa/platform-iss/setup.c index c8a42b60c57a..23790a5610e2 100644 --- a/trunk/arch/xtensa/platform-iss/setup.c +++ b/trunk/arch/xtensa/platform-iss/setup.c @@ -15,6 +15,7 @@ * option) any later version. * */ +#include #include #include #include diff --git a/trunk/block/as-iosched.c b/trunk/block/as-iosched.c index 5da56d48fbd3..3af31ed49a9c 100644 --- a/trunk/block/as-iosched.c +++ b/trunk/block/as-iosched.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/block/blktrace.c b/trunk/block/blktrace.c index 92925e7d9e6c..36f3a172275f 100644 --- a/trunk/block/blktrace.c +++ b/trunk/block/blktrace.c @@ -15,6 +15,7 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * */ +#include #include #include #include diff --git a/trunk/block/cfq-iosched.c b/trunk/block/cfq-iosched.c index 102ebc2c5c34..e25223e147a2 100644 --- a/trunk/block/cfq-iosched.c +++ b/trunk/block/cfq-iosched.c @@ -6,6 +6,7 @@ * * Copyright (C) 2003 Jens Axboe */ +#include #include #include #include diff --git a/trunk/block/deadline-iosched.c b/trunk/block/deadline-iosched.c index c7ca9f0b6498..4469dd84623c 100644 --- a/trunk/block/deadline-iosched.c +++ b/trunk/block/deadline-iosched.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/block/elevator.c b/trunk/block/elevator.c index bc7baeec0d10..d00b283f31d2 100644 --- a/trunk/block/elevator.c +++ b/trunk/block/elevator.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/block/genhd.c b/trunk/block/genhd.c index 25d1f42568cc..8d7339511e5e 100644 --- a/trunk/block/genhd.c +++ b/trunk/block/genhd.c @@ -2,6 +2,7 @@ * gendisk handling */ +#include #include #include #include diff --git a/trunk/block/ll_rw_blk.c b/trunk/block/ll_rw_blk.c index 5813d63c20af..eee03a3876a3 100644 --- a/trunk/block/ll_rw_blk.c +++ b/trunk/block/ll_rw_blk.c @@ -10,6 +10,7 @@ /* * This handles all read/write requests to block devices */ +#include #include #include #include @@ -3116,9 +3117,9 @@ void submit_bio(int rw, struct bio *bio) BIO_BUG_ON(!bio->bi_io_vec); bio->bi_rw |= rw; if (rw & WRITE) - count_vm_events(PGPGOUT, count); + mod_page_state(pgpgout, count); else - count_vm_events(PGPGIN, count); + mod_page_state(pgpgin, count); if (unlikely(block_dump)) { char b[BDEVNAME_SIZE]; diff --git a/trunk/drivers/acorn/block/Kconfig b/trunk/drivers/acorn/block/Kconfig index a0ff25ea439f..073add35e66f 100644 --- a/trunk/drivers/acorn/block/Kconfig +++ b/trunk/drivers/acorn/block/Kconfig @@ -3,7 +3,7 @@ # menu "Acorn-specific block devices" - depends on ARCH_ARC || ARCH_A5K + depends on ARCH_ACORN config BLK_DEV_FD1772 tristate "Old Archimedes floppy (1772) support" diff --git a/trunk/drivers/acorn/block/mfmhd.c b/trunk/drivers/acorn/block/mfmhd.c index d9c9a35961b3..ce074f6f3369 100644 --- a/trunk/drivers/acorn/block/mfmhd.c +++ b/trunk/drivers/acorn/block/mfmhd.c @@ -99,6 +99,7 @@ */ #include +#include #include #include #include diff --git a/trunk/drivers/acpi/ac.c b/trunk/drivers/acpi/ac.c index 36ca365bcead..206f56d2aa3a 100644 --- a/trunk/drivers/acpi/ac.c +++ b/trunk/drivers/acpi/ac.c @@ -66,6 +66,7 @@ static struct acpi_driver acpi_ac_driver = { struct acpi_ac { acpi_handle handle; + struct acpi_device * device; unsigned long state; }; @@ -191,9 +192,7 @@ static void acpi_ac_notify(acpi_handle handle, u32 event, void *data) if (!ac) return; - if (acpi_bus_get_device(ac->handle, &device)) - return; - + device = ac->device; switch (event) { case ACPI_AC_NOTIFY_STATUS: acpi_ac_get_state(ac); @@ -224,6 +223,7 @@ static int acpi_ac_add(struct acpi_device *device) memset(ac, 0, sizeof(struct acpi_ac)); ac->handle = device->handle; + ac->device = device; strcpy(acpi_device_name(device), ACPI_AC_DEVICE_NAME); strcpy(acpi_device_class(device), ACPI_AC_CLASS); acpi_driver_data(device) = ac; diff --git a/trunk/drivers/acpi/acpi_memhotplug.c b/trunk/drivers/acpi/acpi_memhotplug.c index 84a68965c11a..6f5e395c78af 100644 --- a/trunk/drivers/acpi/acpi_memhotplug.c +++ b/trunk/drivers/acpi/acpi_memhotplug.c @@ -248,7 +248,7 @@ static int acpi_memory_enable_device(struct acpi_memory_device *mem_device) num_enabled++; } if (!num_enabled) { - printk(KERN_ERR PREFIX "add_memory failed\n"); + ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "\nadd_memory failed\n")); mem_device->state = MEMORY_INVALID_STATE; return -EINVAL; } @@ -466,7 +466,7 @@ static acpi_status is_memory_device(acpi_handle handle) info = buffer.pointer; if (!(info->valid & ACPI_VALID_HID)) { - kfree(buffer.pointer); + acpi_os_free(buffer.pointer); return AE_ERROR; } @@ -475,7 +475,7 @@ static acpi_status is_memory_device(acpi_handle handle) (strcmp(hardware_id, ACPI_MEMORY_DEVICE_HID))) status = AE_ERROR; - kfree(buffer.pointer); + acpi_os_free(buffer.pointer); return status; } diff --git a/trunk/drivers/acpi/asus_acpi.c b/trunk/drivers/acpi/asus_acpi.c index eb0b8fb837c6..055cfd5c8766 100644 --- a/trunk/drivers/acpi/asus_acpi.c +++ b/trunk/drivers/acpi/asus_acpi.c @@ -1017,7 +1017,7 @@ static int asus_hotk_get_info(void) } hotk->methods = &model_conf[hotk->model]; - kfree(model); + acpi_os_free(model); return AE_OK; } @@ -1096,7 +1096,7 @@ static int asus_hotk_get_info(void) /* S1300A reports L84F, but L1400B too, account for that */ } - kfree(model); + acpi_os_free(model); return AE_OK; } @@ -1256,7 +1256,7 @@ static void __exit asus_acpi_exit(void) acpi_bus_unregister_driver(&asus_hotk_driver); remove_proc_entry(PROC_ASUS, acpi_root_dir); - kfree(asus_info); + acpi_os_free(asus_info); return; } diff --git a/trunk/drivers/acpi/battery.c b/trunk/drivers/acpi/battery.c index 7d92f73b265f..00b0728efe82 100644 --- a/trunk/drivers/acpi/battery.c +++ b/trunk/drivers/acpi/battery.c @@ -171,7 +171,7 @@ acpi_battery_get_info(struct acpi_battery *battery, } end: - kfree(buffer.pointer); + acpi_os_free(buffer.pointer); if (!result) (*bif) = (struct acpi_battery_info *)data.pointer; @@ -231,7 +231,7 @@ acpi_battery_get_status(struct acpi_battery *battery, } end: - kfree(buffer.pointer); + acpi_os_free(buffer.pointer); if (!result) (*bst) = (struct acpi_battery_status *)data.pointer; diff --git a/trunk/drivers/acpi/bus.c b/trunk/drivers/acpi/bus.c index ea5a0496a4fd..dec044c04273 100644 --- a/trunk/drivers/acpi/bus.c +++ b/trunk/drivers/acpi/bus.c @@ -192,7 +192,7 @@ int acpi_bus_set_power(acpi_handle handle, int state) /* Make sure this is a valid target state */ if (!device->flags.power_manageable) { - printk(KERN_DEBUG "Device `[%s]' is not power manageable", + printk(KERN_DEBUG "Device `[%s]is not power manageable", device->kobj.name); return -ENODEV; } diff --git a/trunk/drivers/acpi/container.c b/trunk/drivers/acpi/container.c index 871aa520ece7..7f7e41d40a3b 100644 --- a/trunk/drivers/acpi/container.c +++ b/trunk/drivers/acpi/container.c @@ -236,7 +236,7 @@ container_walk_namespace_cb(acpi_handle handle, } end: - kfree(buffer.pointer); + acpi_os_free(buffer.pointer); return AE_OK; } diff --git a/trunk/drivers/acpi/glue.c b/trunk/drivers/acpi/glue.c index 10f160dc75b1..8daef57b994c 100644 --- a/trunk/drivers/acpi/glue.c +++ b/trunk/drivers/acpi/glue.c @@ -152,7 +152,7 @@ static int get_root_bridge_busnr(acpi_handle handle) bbn = bus; } exit: - kfree(buffer.pointer); + acpi_os_free(buffer.pointer); return (int)bbn; } @@ -192,7 +192,7 @@ find_pci_rootbridge(acpi_handle handle, u32 lvl, void *context, void **rv) find->handle = handle; status = AE_OK; exit: - kfree(buffer.pointer); + acpi_os_free(buffer.pointer); return status; } @@ -224,7 +224,7 @@ do_acpi_find_child(acpi_handle handle, u32 lvl, void *context, void **rv) info = buffer.pointer; if (info->address == find->address) find->handle = handle; - kfree(buffer.pointer); + acpi_os_free(buffer.pointer); } return AE_OK; } @@ -330,7 +330,7 @@ static int acpi_platform_notify(struct device *dev) acpi_get_name(dev->firmware_data, ACPI_FULL_PATHNAME, &buffer); DBG("Device %s -> %s\n", dev->bus_id, (char *)buffer.pointer); - kfree(buffer.pointer); + acpi_os_free(buffer.pointer); } else DBG("Device %s -> No ACPI support\n", dev->bus_id); #endif diff --git a/trunk/drivers/acpi/namespace/nsxfeval.c b/trunk/drivers/acpi/namespace/nsxfeval.c index dca6799ac678..6d9bd45af30a 100644 --- a/trunk/drivers/acpi/namespace/nsxfeval.c +++ b/trunk/drivers/acpi/namespace/nsxfeval.c @@ -133,7 +133,7 @@ acpi_evaluate_object_typed(acpi_handle handle, /* Caller used ACPI_ALLOCATE_BUFFER, free the return buffer */ - ACPI_FREE(return_buffer->pointer); + acpi_os_free(return_buffer->pointer); return_buffer->pointer = NULL; } diff --git a/trunk/drivers/acpi/numa.c b/trunk/drivers/acpi/numa.c index 4d622981f61a..13d6d5bdea26 100644 --- a/trunk/drivers/acpi/numa.c +++ b/trunk/drivers/acpi/numa.c @@ -23,6 +23,7 @@ * */ #include +#include #include #include #include diff --git a/trunk/drivers/acpi/osl.c b/trunk/drivers/acpi/osl.c index d4bd314d60ba..afd937b158b3 100644 --- a/trunk/drivers/acpi/osl.c +++ b/trunk/drivers/acpi/osl.c @@ -25,6 +25,7 @@ * */ +#include #include #include #include @@ -146,6 +147,13 @@ void *acpi_os_allocate(acpi_size size) return kmalloc(size, GFP_KERNEL); } +void acpi_os_free(void *ptr) +{ + kfree(ptr); +} + +EXPORT_SYMBOL(acpi_os_free); + acpi_status acpi_os_get_root_pointer(u32 flags, struct acpi_pointer *addr) { if (efi_enabled) { @@ -735,7 +743,7 @@ acpi_status acpi_os_delete_semaphore(acpi_handle handle) ACPI_DEBUG_PRINT((ACPI_DB_MUTEX, "Deleting semaphore[%p].\n", handle)); - kfree(sem); + acpi_os_free(sem); sem = NULL; return AE_OK; diff --git a/trunk/drivers/acpi/pci_irq.c b/trunk/drivers/acpi/pci_irq.c index feda0341f5a7..fb96e3bf969b 100644 --- a/trunk/drivers/acpi/pci_irq.c +++ b/trunk/drivers/acpi/pci_irq.c @@ -24,6 +24,7 @@ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ +#include #include #include diff --git a/trunk/drivers/acpi/processor_idle.c b/trunk/drivers/acpi/processor_idle.c index 8e9c26aae8fe..e439eb77d283 100644 --- a/trunk/drivers/acpi/processor_idle.c +++ b/trunk/drivers/acpi/processor_idle.c @@ -768,7 +768,7 @@ static int acpi_processor_get_power_info_cst(struct acpi_processor *pr) status = -EFAULT; end: - kfree(buffer.pointer); + acpi_os_free(buffer.pointer); return status; } diff --git a/trunk/drivers/acpi/processor_perflib.c b/trunk/drivers/acpi/processor_perflib.c index 7ba5e49ab302..14a00e5a8f6a 100644 --- a/trunk/drivers/acpi/processor_perflib.c +++ b/trunk/drivers/acpi/processor_perflib.c @@ -216,7 +216,7 @@ static int acpi_processor_get_performance_control(struct acpi_processor *pr) sizeof(struct acpi_pct_register)); end: - kfree(buffer.pointer); + acpi_os_free(buffer.pointer); return result; } @@ -294,7 +294,7 @@ static int acpi_processor_get_performance_states(struct acpi_processor *pr) } end: - kfree(buffer.pointer); + acpi_os_free(buffer.pointer); return result; } @@ -592,7 +592,7 @@ static int acpi_processor_get_psd(struct acpi_processor *pr) } end: - kfree(buffer.pointer); + acpi_os_free(buffer.pointer); return result; } diff --git a/trunk/drivers/acpi/scan.c b/trunk/drivers/acpi/scan.c index 5fcb50c7b778..401e723e6c66 100644 --- a/trunk/drivers/acpi/scan.c +++ b/trunk/drivers/acpi/scan.c @@ -319,7 +319,7 @@ static int acpi_bus_get_wakeup_device_flags(struct acpi_device *device) goto end; } - kfree(buffer.pointer); + acpi_os_free(buffer.pointer); device->wakeup.flags.valid = 1; /* Power button, Lid switch always enable wakeup */ @@ -854,7 +854,7 @@ static void acpi_device_set_id(struct acpi_device *device, printk(KERN_ERR "Memory allocation error\n"); } - kfree(buffer.pointer); + acpi_os_free(buffer.pointer); } static int acpi_device_set_context(struct acpi_device *device, int type) @@ -1433,7 +1433,7 @@ static int acpi_device_resume(struct device * dev) } -static struct bus_type acpi_bus_type = { +struct bus_type acpi_bus_type = { .name = "acpi", .suspend = acpi_device_suspend, .resume = acpi_device_resume, diff --git a/trunk/drivers/acpi/system.c b/trunk/drivers/acpi/system.c index c3bb7faad75e..c90bd2f70b3f 100644 --- a/trunk/drivers/acpi/system.c +++ b/trunk/drivers/acpi/system.c @@ -86,7 +86,7 @@ acpi_system_read_dsdt(struct file *file, res = simple_read_from_buffer(buffer, count, ppos, dsdt.pointer, dsdt.length); - kfree(dsdt.pointer); + acpi_os_free(dsdt.pointer); return res; } @@ -113,7 +113,7 @@ acpi_system_read_fadt(struct file *file, res = simple_read_from_buffer(buffer, count, ppos, fadt.pointer, fadt.length); - kfree(fadt.pointer); + acpi_os_free(fadt.pointer); return res; } diff --git a/trunk/drivers/acpi/tables.c b/trunk/drivers/acpi/tables.c index bfb3bfcf9e91..ed5e8816d83d 100644 --- a/trunk/drivers/acpi/tables.c +++ b/trunk/drivers/acpi/tables.c @@ -23,6 +23,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/acpi/utilities/utalloc.c b/trunk/drivers/acpi/utilities/utalloc.c index 5cff17dc78b3..7940fc1bd69e 100644 --- a/trunk/drivers/acpi/utilities/utalloc.c +++ b/trunk/drivers/acpi/utilities/utalloc.c @@ -166,10 +166,10 @@ acpi_status acpi_ut_delete_caches(void) /* Free memory lists */ - ACPI_FREE(acpi_gbl_global_list); + acpi_os_free(acpi_gbl_global_list); acpi_gbl_global_list = NULL; - ACPI_FREE(acpi_gbl_ns_node_list); + acpi_os_free(acpi_gbl_ns_node_list); acpi_gbl_ns_node_list = NULL; #endif diff --git a/trunk/drivers/acpi/utilities/utcache.c b/trunk/drivers/acpi/utilities/utcache.c index 1a1f8109159c..56270a30718a 100644 --- a/trunk/drivers/acpi/utilities/utcache.c +++ b/trunk/drivers/acpi/utilities/utcache.c @@ -162,7 +162,7 @@ acpi_status acpi_os_delete_cache(struct acpi_memory_list * cache) /* Now we can delete the cache object */ - ACPI_FREE(cache); + acpi_os_free(cache); return (AE_OK); } diff --git a/trunk/drivers/acpi/utils.c b/trunk/drivers/acpi/utils.c index f48227f4c8c9..1930e1a75b22 100644 --- a/trunk/drivers/acpi/utils.c +++ b/trunk/drivers/acpi/utils.c @@ -332,7 +332,7 @@ acpi_evaluate_string(acpi_handle handle, ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Return value [%s]\n", *data)); - kfree(buffer.pointer); + acpi_os_free(buffer.pointer); return AE_OK; } @@ -418,7 +418,7 @@ acpi_evaluate_reference(acpi_handle handle, //kfree(list->handles); } - kfree(buffer.pointer); + acpi_os_free(buffer.pointer); return status; } diff --git a/trunk/drivers/acpi/video.c b/trunk/drivers/acpi/video.c index 1f3ffb353299..9feb633087a9 100644 --- a/trunk/drivers/acpi/video.c +++ b/trunk/drivers/acpi/video.c @@ -1450,7 +1450,7 @@ static int acpi_video_device_enumerate(struct acpi_video_bus *video) video->attached_array = active_device_list; video->attached_count = count; out: - kfree(buffer.pointer); + acpi_os_free(buffer.pointer); return status; } diff --git a/trunk/drivers/atm/adummy.c b/trunk/drivers/atm/adummy.c index 6cc93de0b71d..d1387cfe2d30 100644 --- a/trunk/drivers/atm/adummy.c +++ b/trunk/drivers/atm/adummy.c @@ -2,6 +2,7 @@ * adummy.c: a dummy ATM driver */ +#include #include #include #include diff --git a/trunk/drivers/atm/ambassador.h b/trunk/drivers/atm/ambassador.h index 8296420ceaef..84a93063cfe1 100644 --- a/trunk/drivers/atm/ambassador.h +++ b/trunk/drivers/atm/ambassador.h @@ -23,6 +23,7 @@ #ifndef AMBASSADOR_H #define AMBASSADOR_H +#include #ifdef CONFIG_ATM_AMBASSADOR_DEBUG #define DEBUG_AMBASSADOR diff --git a/trunk/drivers/atm/eni.c b/trunk/drivers/atm/eni.c index 976ced1f019e..c13c4d736ef5 100644 --- a/trunk/drivers/atm/eni.c +++ b/trunk/drivers/atm/eni.c @@ -4,6 +4,7 @@ #include +#include #include #include #include diff --git a/trunk/drivers/atm/fore200e.c b/trunk/drivers/atm/fore200e.c index 9be9a4055199..92923bf27233 100644 --- a/trunk/drivers/atm/fore200e.c +++ b/trunk/drivers/atm/fore200e.c @@ -25,6 +25,7 @@ */ +#include #include #include #include diff --git a/trunk/drivers/atm/fore200e.h b/trunk/drivers/atm/fore200e.h index f9abfdac33e4..2558eb853235 100644 --- a/trunk/drivers/atm/fore200e.h +++ b/trunk/drivers/atm/fore200e.h @@ -3,6 +3,7 @@ #define _FORE200E_H #ifdef __KERNEL__ +#include /* rx buffer sizes */ diff --git a/trunk/drivers/atm/he.c b/trunk/drivers/atm/he.c index a5cbd3d6e50f..fde9334059af 100644 --- a/trunk/drivers/atm/he.c +++ b/trunk/drivers/atm/he.c @@ -55,6 +55,7 @@ */ +#include #include #include #include @@ -1017,7 +1018,7 @@ he_init_irq(struct he_dev *he_dev) return 0; } -static int __devinit +static int __init he_start(struct atm_dev *dev) { struct he_dev *he_dev; diff --git a/trunk/drivers/atm/horizon.h b/trunk/drivers/atm/horizon.h index 4461229f56a5..e2cc7020fa3b 100644 --- a/trunk/drivers/atm/horizon.h +++ b/trunk/drivers/atm/horizon.h @@ -30,6 +30,7 @@ #ifndef DRIVER_ATM_HORIZON_H #define DRIVER_ATM_HORIZON_H +#include #ifdef CONFIG_ATM_HORIZON_DEBUG #define DEBUG_HORIZON diff --git a/trunk/drivers/atm/idt77105.c b/trunk/drivers/atm/idt77105.c index 325325afabec..0aabfc2a59d9 100644 --- a/trunk/drivers/atm/idt77105.c +++ b/trunk/drivers/atm/idt77105.c @@ -358,7 +358,7 @@ static const struct atmphy_ops idt77105_ops = { }; -int __devinit idt77105_init(struct atm_dev *dev) +int idt77105_init(struct atm_dev *dev) { dev->phy = &idt77105_ops; return 0; diff --git a/trunk/drivers/atm/idt77105.h b/trunk/drivers/atm/idt77105.h index 3fd2bc899761..8ba8218aaefe 100644 --- a/trunk/drivers/atm/idt77105.h +++ b/trunk/drivers/atm/idt77105.h @@ -76,7 +76,7 @@ #define IDT77105_CTRSEL_RHEC 0x01 /* W, Rx HEC Error Counter */ #ifdef __KERNEL__ -int idt77105_init(struct atm_dev *dev); +int idt77105_init(struct atm_dev *dev) __init; #endif /* diff --git a/trunk/drivers/atm/idt77252.c b/trunk/drivers/atm/idt77252.c index 8fdb30116f99..b4a76cade646 100644 --- a/trunk/drivers/atm/idt77252.c +++ b/trunk/drivers/atm/idt77252.c @@ -34,6 +34,7 @@ static char const rcsid[] = #include +#include #include #include #include diff --git a/trunk/drivers/atm/iphase.c b/trunk/drivers/atm/iphase.c index 333a7bc609d2..2e2e50e1167a 100644 --- a/trunk/drivers/atm/iphase.c +++ b/trunk/drivers/atm/iphase.c @@ -2284,7 +2284,7 @@ static int reset_sar(struct atm_dev *dev) } -static int __devinit ia_init(struct atm_dev *dev) +static int __init ia_init(struct atm_dev *dev) { IADEV *iadev; unsigned long real_base; @@ -2480,7 +2480,7 @@ static void ia_free_rx(IADEV *iadev) iadev->rx_dle_dma); } -static int __devinit ia_start(struct atm_dev *dev) +static int __init ia_start(struct atm_dev *dev) { IADEV *iadev; int error; diff --git a/trunk/drivers/atm/iphase.h b/trunk/drivers/atm/iphase.h index 133eefcc0475..b8d0bd4d6c30 100644 --- a/trunk/drivers/atm/iphase.h +++ b/trunk/drivers/atm/iphase.h @@ -43,6 +43,7 @@ #ifndef IPHASE_H #define IPHASE_H +#include /************************ IADBG DEFINE *********************************/ /* IADebugFlag Bit Map */ diff --git a/trunk/drivers/atm/nicstar.c b/trunk/drivers/atm/nicstar.c index b78612d3fa46..074abc81ec3d 100644 --- a/trunk/drivers/atm/nicstar.c +++ b/trunk/drivers/atm/nicstar.c @@ -36,6 +36,7 @@ /* Header files ***************************************************************/ #include +#include #include #include #include diff --git a/trunk/drivers/atm/suni.c b/trunk/drivers/atm/suni.c index f04f39c00833..b1d063cc4fbe 100644 --- a/trunk/drivers/atm/suni.c +++ b/trunk/drivers/atm/suni.c @@ -289,7 +289,7 @@ static const struct atmphy_ops suni_ops = { }; -int __devinit suni_init(struct atm_dev *dev) +int suni_init(struct atm_dev *dev) { unsigned char mri; diff --git a/trunk/drivers/atm/zatm.c b/trunk/drivers/atm/zatm.c index 1699c934bad0..f484747f255e 100644 --- a/trunk/drivers/atm/zatm.c +++ b/trunk/drivers/atm/zatm.c @@ -3,6 +3,7 @@ /* Written 1995-2000 by Werner Almesberger, EPFL LRC/ICA */ +#include #include #include #include diff --git a/trunk/drivers/atm/zatm.h b/trunk/drivers/atm/zatm.h index ae9165ce15a0..416fe0fda60c 100644 --- a/trunk/drivers/atm/zatm.h +++ b/trunk/drivers/atm/zatm.h @@ -6,6 +6,7 @@ #ifndef DRIVER_ATM_ZATM_H #define DRIVER_ATM_ZATM_H +#include #include #include #include diff --git a/trunk/drivers/base/bus.c b/trunk/drivers/base/bus.c index 83fa8b291a59..050d86d0b872 100644 --- a/trunk/drivers/base/bus.c +++ b/trunk/drivers/base/bus.c @@ -8,6 +8,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/base/class.c b/trunk/drivers/base/class.c index de8908320f23..9aa127460262 100644 --- a/trunk/drivers/base/class.c +++ b/trunk/drivers/base/class.c @@ -10,6 +10,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/base/core.c b/trunk/drivers/base/core.c index b21f864c9ce8..27c2176895de 100644 --- a/trunk/drivers/base/core.c +++ b/trunk/drivers/base/core.c @@ -8,6 +8,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/base/driver.c b/trunk/drivers/base/driver.c index 562600dd540a..b400314e1c62 100644 --- a/trunk/drivers/base/driver.c +++ b/trunk/drivers/base/driver.c @@ -8,6 +8,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/base/node.c b/trunk/drivers/base/node.c index d7de1753e094..eae2bdc183bb 100644 --- a/trunk/drivers/base/node.c +++ b/trunk/drivers/base/node.c @@ -40,13 +40,24 @@ static ssize_t node_read_meminfo(struct sys_device * dev, char * buf) int n; int nid = dev->id; struct sysinfo i; + struct page_state ps; unsigned long inactive; unsigned long active; unsigned long free; si_meminfo_node(&i, nid); + get_page_state_node(&ps, nid); __get_zone_counts(&active, &inactive, &free, NODE_DATA(nid)); + /* Check for negative values in these approximate counters */ + if ((long)ps.nr_dirty < 0) + ps.nr_dirty = 0; + if ((long)ps.nr_writeback < 0) + ps.nr_writeback = 0; + if ((long)ps.nr_mapped < 0) + ps.nr_mapped = 0; + if ((long)ps.nr_slab < 0) + ps.nr_slab = 0; n = sprintf(buf, "\n" "Node %d MemTotal: %8lu kB\n" @@ -60,12 +71,7 @@ static ssize_t node_read_meminfo(struct sys_device * dev, char * buf) "Node %d LowFree: %8lu kB\n" "Node %d Dirty: %8lu kB\n" "Node %d Writeback: %8lu kB\n" - "Node %d FilePages: %8lu kB\n" "Node %d Mapped: %8lu kB\n" - "Node %d AnonPages: %8lu kB\n" - "Node %d PageTables: %8lu kB\n" - "Node %d NFS Unstable: %8lu kB\n" - "Node %d Bounce: %8lu kB\n" "Node %d Slab: %8lu kB\n", nid, K(i.totalram), nid, K(i.freeram), @@ -76,15 +82,10 @@ static ssize_t node_read_meminfo(struct sys_device * dev, char * buf) nid, K(i.freehigh), nid, K(i.totalram - i.totalhigh), nid, K(i.freeram - i.freehigh), - nid, K(node_page_state(nid, NR_FILE_DIRTY)), - nid, K(node_page_state(nid, NR_WRITEBACK)), - nid, K(node_page_state(nid, NR_FILE_PAGES)), - nid, K(node_page_state(nid, NR_FILE_MAPPED)), - nid, K(node_page_state(nid, NR_ANON_PAGES)), - nid, K(node_page_state(nid, NR_PAGETABLE)), - nid, K(node_page_state(nid, NR_UNSTABLE_NFS)), - nid, K(node_page_state(nid, NR_BOUNCE)), - nid, K(node_page_state(nid, NR_SLAB))); + nid, K(ps.nr_dirty), + nid, K(ps.nr_writeback), + nid, K(ps.nr_mapped), + nid, K(ps.nr_slab)); n += hugetlb_report_node_meminfo(nid, buf + n); return n; } @@ -94,6 +95,28 @@ static SYSDEV_ATTR(meminfo, S_IRUGO, node_read_meminfo, NULL); static ssize_t node_read_numastat(struct sys_device * dev, char * buf) { + unsigned long numa_hit, numa_miss, interleave_hit, numa_foreign; + unsigned long local_node, other_node; + int i, cpu; + pg_data_t *pg = NODE_DATA(dev->id); + numa_hit = 0; + numa_miss = 0; + interleave_hit = 0; + numa_foreign = 0; + local_node = 0; + other_node = 0; + for (i = 0; i < MAX_NR_ZONES; i++) { + struct zone *z = &pg->node_zones[i]; + for_each_online_cpu(cpu) { + struct per_cpu_pageset *ps = zone_pcp(z,cpu); + numa_hit += ps->numa_hit; + numa_miss += ps->numa_miss; + numa_foreign += ps->numa_foreign; + interleave_hit += ps->interleave_hit; + local_node += ps->local_node; + other_node += ps->other_node; + } + } return sprintf(buf, "numa_hit %lu\n" "numa_miss %lu\n" @@ -101,12 +124,12 @@ static ssize_t node_read_numastat(struct sys_device * dev, char * buf) "interleave_hit %lu\n" "local_node %lu\n" "other_node %lu\n", - node_page_state(dev->id, NUMA_HIT), - node_page_state(dev->id, NUMA_MISS), - node_page_state(dev->id, NUMA_FOREIGN), - node_page_state(dev->id, NUMA_INTERLEAVE_HIT), - node_page_state(dev->id, NUMA_LOCAL), - node_page_state(dev->id, NUMA_OTHER)); + numa_hit, + numa_miss, + numa_foreign, + interleave_hit, + local_node, + other_node); } static SYSDEV_ATTR(numastat, S_IRUGO, node_read_numastat, NULL); diff --git a/trunk/drivers/base/power/main.c b/trunk/drivers/base/power/main.c index fdfa3d0cf6af..0d2e101e4f15 100644 --- a/trunk/drivers/base/power/main.c +++ b/trunk/drivers/base/power/main.c @@ -19,6 +19,7 @@ * ancestral dependencies that the subsystem list maintains. */ +#include #include #include "power.h" diff --git a/trunk/drivers/base/power/shutdown.c b/trunk/drivers/base/power/shutdown.c index 3483ae4d57f5..8826a5b6673e 100644 --- a/trunk/drivers/base/power/shutdown.c +++ b/trunk/drivers/base/power/shutdown.c @@ -8,6 +8,7 @@ * */ +#include #include #include diff --git a/trunk/drivers/base/sys.c b/trunk/drivers/base/sys.c index 04e5db445c74..6858178b3aff 100644 --- a/trunk/drivers/base/sys.c +++ b/trunk/drivers/base/sys.c @@ -12,6 +12,7 @@ * add themselves as children of the system bus. */ +#include #include #include #include diff --git a/trunk/drivers/block/acsi.c b/trunk/drivers/block/acsi.c index 0b80fbb8dbfd..a317e4303952 100644 --- a/trunk/drivers/block/acsi.c +++ b/trunk/drivers/block/acsi.c @@ -43,6 +43,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/block/loop.c b/trunk/drivers/block/loop.c index 7b3b94ddddcc..013c5daddb0b 100644 --- a/trunk/drivers/block/loop.c +++ b/trunk/drivers/block/loop.c @@ -50,6 +50,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/block/nbd.c b/trunk/drivers/block/nbd.c index 0a1b1ea36ddc..39662f0c9cce 100644 --- a/trunk/drivers/block/nbd.c +++ b/trunk/drivers/block/nbd.c @@ -50,9 +50,9 @@ #define DBG_RX 0x0200 #define DBG_TX 0x0400 static unsigned int debugflags; +static unsigned int nbds_max = 16; #endif /* NDEBUG */ -static unsigned int nbds_max = 16; static struct nbd_device nbd_dev[MAX_NBD]; /* diff --git a/trunk/drivers/block/paride/paride.c b/trunk/drivers/block/paride/paride.c index 4b258f7836f3..ce94aa11f6a7 100644 --- a/trunk/drivers/block/paride/paride.c +++ b/trunk/drivers/block/paride/paride.c @@ -21,6 +21,7 @@ #define PI_VERSION "1.06" #include +#include #include #include #include diff --git a/trunk/drivers/block/pktcdvd.c b/trunk/drivers/block/pktcdvd.c index bde2c64b6346..3e4cce5e4736 100644 --- a/trunk/drivers/block/pktcdvd.c +++ b/trunk/drivers/block/pktcdvd.c @@ -44,6 +44,7 @@ *************************************************************************/ #include +#include #include #include #include diff --git a/trunk/drivers/block/ps2esdi.c b/trunk/drivers/block/ps2esdi.c index aef5a0ccabc9..a729013a3973 100644 --- a/trunk/drivers/block/ps2esdi.c +++ b/trunk/drivers/block/ps2esdi.c @@ -29,6 +29,7 @@ #define DEVICE_NAME "PS/2 ESDI" +#include #include #include #include diff --git a/trunk/drivers/block/rd.c b/trunk/drivers/block/rd.c index 3cf246abb5ec..a9e1c2524c2a 100644 --- a/trunk/drivers/block/rd.c +++ b/trunk/drivers/block/rd.c @@ -42,6 +42,7 @@ * and set blk_size for -ENOSPC, Werner Fink , Apr '99 */ +#include #include #include #include diff --git a/trunk/drivers/block/swim3.c b/trunk/drivers/block/swim3.c index 3721e12135d9..628877945f9b 100644 --- a/trunk/drivers/block/swim3.c +++ b/trunk/drivers/block/swim3.c @@ -16,6 +16,7 @@ * handle GCR disks */ +#include #include #include #include diff --git a/trunk/drivers/block/umem.c b/trunk/drivers/block/umem.c index f675f97f2a78..585197b95af7 100644 --- a/trunk/drivers/block/umem.c +++ b/trunk/drivers/block/umem.c @@ -35,6 +35,7 @@ */ //#define DEBUG /* uncomment if you want debugging info (pr_debug) */ +#include #include #include #include diff --git a/trunk/drivers/bluetooth/bcm203x.c b/trunk/drivers/bluetooth/bcm203x.c index 6f67141f4de0..3e7a067cc087 100644 --- a/trunk/drivers/bluetooth/bcm203x.c +++ b/trunk/drivers/bluetooth/bcm203x.c @@ -22,6 +22,7 @@ * */ +#include #include #include diff --git a/trunk/drivers/bluetooth/bfusb.c b/trunk/drivers/bluetooth/bfusb.c index 23f96213f4ac..8947c8837dac 100644 --- a/trunk/drivers/bluetooth/bfusb.c +++ b/trunk/drivers/bluetooth/bfusb.c @@ -21,6 +21,7 @@ * */ +#include #include #include diff --git a/trunk/drivers/bluetooth/bluecard_cs.c b/trunk/drivers/bluetooth/bluecard_cs.c index 2830f58d6f77..473a13b22b29 100644 --- a/trunk/drivers/bluetooth/bluecard_cs.c +++ b/trunk/drivers/bluetooth/bluecard_cs.c @@ -20,6 +20,7 @@ * */ +#include #include #include diff --git a/trunk/drivers/bluetooth/bpa10x.c b/trunk/drivers/bluetooth/bpa10x.c index e0231dc2cb1a..9446960ac742 100644 --- a/trunk/drivers/bluetooth/bpa10x.c +++ b/trunk/drivers/bluetooth/bpa10x.c @@ -21,6 +21,7 @@ * */ +#include #include #include diff --git a/trunk/drivers/bluetooth/bt3c_cs.c b/trunk/drivers/bluetooth/bt3c_cs.c index c9dba5565cac..b94ac2f9f7ba 100644 --- a/trunk/drivers/bluetooth/bt3c_cs.c +++ b/trunk/drivers/bluetooth/bt3c_cs.c @@ -21,6 +21,7 @@ * */ +#include #include #include diff --git a/trunk/drivers/bluetooth/btuart_cs.c b/trunk/drivers/bluetooth/btuart_cs.c index c889bf8109a1..9ce4c93467e5 100644 --- a/trunk/drivers/bluetooth/btuart_cs.c +++ b/trunk/drivers/bluetooth/btuart_cs.c @@ -20,6 +20,7 @@ * */ +#include #include #include diff --git a/trunk/drivers/bluetooth/dtl1_cs.c b/trunk/drivers/bluetooth/dtl1_cs.c index be6eed175aa3..ed8dca84ff69 100644 --- a/trunk/drivers/bluetooth/dtl1_cs.c +++ b/trunk/drivers/bluetooth/dtl1_cs.c @@ -20,6 +20,7 @@ * */ +#include #include #include diff --git a/trunk/drivers/bluetooth/hci_bcsp.c b/trunk/drivers/bluetooth/hci_bcsp.c index d0cface535fb..7bd4ef904115 100644 --- a/trunk/drivers/bluetooth/hci_bcsp.c +++ b/trunk/drivers/bluetooth/hci_bcsp.c @@ -22,6 +22,7 @@ * */ +#include #include #include diff --git a/trunk/drivers/bluetooth/hci_h4.c b/trunk/drivers/bluetooth/hci_h4.c index ad62abbbb739..4804d474dc87 100644 --- a/trunk/drivers/bluetooth/hci_h4.c +++ b/trunk/drivers/bluetooth/hci_h4.c @@ -23,6 +23,7 @@ * */ +#include #include #include diff --git a/trunk/drivers/bluetooth/hci_ldisc.c b/trunk/drivers/bluetooth/hci_ldisc.c index 1994270c16e1..613673b12fa6 100644 --- a/trunk/drivers/bluetooth/hci_ldisc.c +++ b/trunk/drivers/bluetooth/hci_ldisc.c @@ -23,6 +23,7 @@ * */ +#include #include #include diff --git a/trunk/drivers/bluetooth/hci_usb.c b/trunk/drivers/bluetooth/hci_usb.c index a7d9d7e99e72..92382e823285 100644 --- a/trunk/drivers/bluetooth/hci_usb.c +++ b/trunk/drivers/bluetooth/hci_usb.c @@ -31,6 +31,7 @@ * */ +#include #include #include diff --git a/trunk/drivers/bluetooth/hci_vhci.c b/trunk/drivers/bluetooth/hci_vhci.c index ea589007fa26..85738223ff0c 100644 --- a/trunk/drivers/bluetooth/hci_vhci.c +++ b/trunk/drivers/bluetooth/hci_vhci.c @@ -23,6 +23,7 @@ * */ +#include #include #include diff --git a/trunk/drivers/cdrom/cdrom.c b/trunk/drivers/cdrom/cdrom.c index ca27ee89240b..3170eaa25087 100644 --- a/trunk/drivers/cdrom/cdrom.c +++ b/trunk/drivers/cdrom/cdrom.c @@ -263,6 +263,7 @@ /* #define ERRLOGMASK (CD_WARNING|CD_OPEN|CD_COUNT_TRACKS|CD_CLOSE) */ /* #define ERRLOGMASK (CD_WARNING|CD_REG_UNREG|CD_DO_IOCTL|CD_OPEN|CD_CLOSE|CD_COUNT_TRACKS) */ +#include #include #include #include diff --git a/trunk/drivers/cdrom/cm206.c b/trunk/drivers/cdrom/cm206.c index 9b05ddd23141..4ee288688fed 100644 --- a/trunk/drivers/cdrom/cm206.c +++ b/trunk/drivers/cdrom/cm206.c @@ -914,7 +914,7 @@ static void seek(int lba) cd->dsb = wait_dsb(); } -static uch bcdbin(unsigned char bcd) +uch bcdbin(unsigned char bcd) { /* stolen from mcd.c! */ return (bcd >> 4) * 10 + (bcd & 0xf); } @@ -1532,7 +1532,7 @@ static void __init parse_options(void) } } -static int __init __cm206_init(void) +static int __cm206_init(void) { parse_options(); #if !defined(AUTO_PROBE_MODULE) @@ -1593,3 +1593,8 @@ __setup("cm206=", cm206_setup); #endif /* !MODULE */ MODULE_ALIAS_BLOCKDEV_MAJOR(CM206_CDROM_MAJOR); +/* + * Local variables: + * compile-command: "gcc -D__KERNEL__ -I/usr/src/linux/include -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -pipe -fno-strength-reduce -m486 -DMODULE -DMODVERSIONS -include /usr/src/linux/include/linux/modversions.h -c -o cm206.o cm206.c" + * End: + */ diff --git a/trunk/drivers/cdrom/sbpcd.c b/trunk/drivers/cdrom/sbpcd.c index ba50e5a712f2..2fc966c65a0e 100644 --- a/trunk/drivers/cdrom/sbpcd.c +++ b/trunk/drivers/cdrom/sbpcd.c @@ -381,6 +381,7 @@ #include #include #include +#include #include "sbpcd.h" #define MAJOR_NR MATSUSHITA_CDROM_MAJOR diff --git a/trunk/drivers/char/agp/amd64-agp.c b/trunk/drivers/char/agp/amd64-agp.c index 8cd52984cda5..f74eeeb8e377 100644 --- a/trunk/drivers/char/agp/amd64-agp.c +++ b/trunk/drivers/char/agp/amd64-agp.c @@ -8,6 +8,7 @@ * work is done in the northbridge(s). */ +#include #include #include #include diff --git a/trunk/drivers/char/agp/generic.c b/trunk/drivers/char/agp/generic.c index cc5ea347a8a7..a92ab53a1370 100644 --- a/trunk/drivers/char/agp/generic.c +++ b/trunk/drivers/char/agp/generic.c @@ -27,6 +27,7 @@ * TODO: * - Allocate more than order 0 pages to avoid too much linear map splitting. */ +#include #include #include #include diff --git a/trunk/drivers/char/amiserial.c b/trunk/drivers/char/amiserial.c index 3e7dc7cbd740..6602b3156df5 100644 --- a/trunk/drivers/char/amiserial.c +++ b/trunk/drivers/char/amiserial.c @@ -31,6 +31,7 @@ * ever possible. */ +#include #include #undef SERIAL_PARANOIA_CHECK diff --git a/trunk/drivers/char/consolemap.c b/trunk/drivers/char/consolemap.c index 04a12027a740..c85a4fa60da7 100644 --- a/trunk/drivers/char/consolemap.c +++ b/trunk/drivers/char/consolemap.c @@ -11,6 +11,7 @@ * Fix bug in inverse translation. Stanislav Voronyi , Dec 1998 */ +#include #include #include #include diff --git a/trunk/drivers/char/cyclades.c b/trunk/drivers/char/cyclades.c index 1f61a6744a26..2657eeba7da6 100644 --- a/trunk/drivers/char/cyclades.c +++ b/trunk/drivers/char/cyclades.c @@ -633,6 +633,7 @@ static char rcsid[] = /* * Include section */ +#include #include #include #include diff --git a/trunk/drivers/char/decserial.c b/trunk/drivers/char/decserial.c index 85f404e25c73..aa1440934e95 100644 --- a/trunk/drivers/char/decserial.c +++ b/trunk/drivers/char/decserial.c @@ -16,6 +16,7 @@ * console device I strongly recommend to use only one. */ +#include #include #include diff --git a/trunk/drivers/char/drm/drm.h b/trunk/drivers/char/drm/drm.h index 5642ac43e0f5..9da0ddb892b5 100644 --- a/trunk/drivers/char/drm/drm.h +++ b/trunk/drivers/char/drm/drm.h @@ -38,6 +38,7 @@ #if defined(__linux__) #if defined(__KERNEL__) +#include #endif #include /* For _IO* macros */ #define DRM_IOCTL_NR(n) _IOC_NR(n) diff --git a/trunk/drivers/char/drm/drmP.h b/trunk/drivers/char/drm/drmP.h index d2a56182bc35..cb76e5ca9a23 100644 --- a/trunk/drivers/char/drm/drmP.h +++ b/trunk/drivers/char/drm/drmP.h @@ -44,6 +44,7 @@ * can build the DRM (part of PI DRI). 4/21/2000 S + B */ #include #endif /* __alpha__ */ +#include #include #include #include diff --git a/trunk/drivers/char/drm/drm_memory.c b/trunk/drivers/char/drm/drm_memory.c index 5681cae1d404..7e3318e1d1c6 100644 --- a/trunk/drivers/char/drm/drm_memory.c +++ b/trunk/drivers/char/drm/drm_memory.c @@ -33,6 +33,7 @@ * OTHER DEALINGS IN THE SOFTWARE. */ +#include #include #include "drmP.h" diff --git a/trunk/drivers/char/drm/drm_memory.h b/trunk/drivers/char/drm/drm_memory.h index f1b97aff10cf..714d9aedcff5 100644 --- a/trunk/drivers/char/drm/drm_memory.h +++ b/trunk/drivers/char/drm/drm_memory.h @@ -33,6 +33,7 @@ * OTHER DEALINGS IN THE SOFTWARE. */ +#include #include #include #include "drmP.h" diff --git a/trunk/drivers/char/drm/drm_memory_debug.h b/trunk/drivers/char/drm/drm_memory_debug.h index 74581af806e1..d117cc997192 100644 --- a/trunk/drivers/char/drm/drm_memory_debug.h +++ b/trunk/drivers/char/drm/drm_memory_debug.h @@ -31,6 +31,7 @@ * OTHER DEALINGS IN THE SOFTWARE. */ +#include #include "drmP.h" typedef struct drm_mem_stats { diff --git a/trunk/drivers/char/drm/drm_scatter.c b/trunk/drivers/char/drm/drm_scatter.c index 06ef7ddbe67d..ce81bf248200 100644 --- a/trunk/drivers/char/drm/drm_scatter.c +++ b/trunk/drivers/char/drm/drm_scatter.c @@ -31,6 +31,7 @@ * DEALINGS IN THE SOFTWARE. */ +#include #include #include "drmP.h" diff --git a/trunk/drivers/char/drm/drm_sysfs.c b/trunk/drivers/char/drm/drm_sysfs.c index 51ad98c685c3..0b9f98a7eb10 100644 --- a/trunk/drivers/char/drm/drm_sysfs.c +++ b/trunk/drivers/char/drm/drm_sysfs.c @@ -12,6 +12,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/char/drm/ffb_drv.c b/trunk/drivers/char/drm/ffb_drv.c index dd45111a4854..c13f9abb41e9 100644 --- a/trunk/drivers/char/drm/ffb_drv.c +++ b/trunk/drivers/char/drm/ffb_drv.c @@ -4,6 +4,7 @@ * Copyright (C) 2000 David S. Miller (davem@redhat.com) */ +#include #include "ffb.h" #include "drmP.h" diff --git a/trunk/drivers/char/drm/i810_drv.c b/trunk/drivers/char/drm/i810_drv.c index fabb9a817966..dfe6ad2b6a6e 100644 --- a/trunk/drivers/char/drm/i810_drv.c +++ b/trunk/drivers/char/drm/i810_drv.c @@ -30,6 +30,7 @@ * Gareth Hughes */ +#include #include "drmP.h" #include "drm.h" #include "i810_drm.h" diff --git a/trunk/drivers/char/drm/i830_drv.c b/trunk/drivers/char/drm/i830_drv.c index 389597e4a623..722658188f5f 100644 --- a/trunk/drivers/char/drm/i830_drv.c +++ b/trunk/drivers/char/drm/i830_drv.c @@ -32,6 +32,7 @@ * Keith Whitwell */ +#include #include "drmP.h" #include "drm.h" #include "i830_drm.h" diff --git a/trunk/drivers/char/drm/mga_drv.c b/trunk/drivers/char/drm/mga_drv.c index e30f556b79f1..9f7ed0e0351b 100644 --- a/trunk/drivers/char/drm/mga_drv.c +++ b/trunk/drivers/char/drm/mga_drv.c @@ -29,6 +29,7 @@ * Gareth Hughes */ +#include #include "drmP.h" #include "drm.h" #include "mga_drm.h" diff --git a/trunk/drivers/char/drm/r128_drv.c b/trunk/drivers/char/drm/r128_drv.c index 6108e7587e12..e20450ae220e 100644 --- a/trunk/drivers/char/drm/r128_drv.c +++ b/trunk/drivers/char/drm/r128_drv.c @@ -29,6 +29,7 @@ * Gareth Hughes */ +#include #include "drmP.h" #include "drm.h" #include "r128_drm.h" diff --git a/trunk/drivers/char/drm/radeon_drv.c b/trunk/drivers/char/drm/radeon_drv.c index eb985c2a31e9..b04ed1b562b9 100644 --- a/trunk/drivers/char/drm/radeon_drv.c +++ b/trunk/drivers/char/drm/radeon_drv.c @@ -29,6 +29,7 @@ * OTHER DEALINGS IN THE SOFTWARE. */ +#include #include "drmP.h" #include "drm.h" #include "radeon_drm.h" diff --git a/trunk/drivers/char/drm/savage_drv.c b/trunk/drivers/char/drm/savage_drv.c index eee52aa92a7c..aa6c0d1a82f8 100644 --- a/trunk/drivers/char/drm/savage_drv.c +++ b/trunk/drivers/char/drm/savage_drv.c @@ -23,6 +23,7 @@ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +#include #include "drmP.h" #include "savage_drm.h" #include "savage_drv.h" diff --git a/trunk/drivers/char/drm/sis_drv.c b/trunk/drivers/char/drm/sis_drv.c index 5e9dc86f2956..6f6d7d613ede 100644 --- a/trunk/drivers/char/drm/sis_drv.c +++ b/trunk/drivers/char/drm/sis_drv.c @@ -25,6 +25,7 @@ * */ +#include #include "drmP.h" #include "sis_drm.h" #include "sis_drv.h" diff --git a/trunk/drivers/char/drm/tdfx_drv.c b/trunk/drivers/char/drm/tdfx_drv.c index 012ff2e356b2..baa4416032a8 100644 --- a/trunk/drivers/char/drm/tdfx_drv.c +++ b/trunk/drivers/char/drm/tdfx_drv.c @@ -30,6 +30,7 @@ * Gareth Hughes */ +#include #include "drmP.h" #include "tdfx_drv.h" diff --git a/trunk/drivers/char/drm/via_drv.c b/trunk/drivers/char/drm/via_drv.c index b3d364d793d7..3f012255d315 100644 --- a/trunk/drivers/char/drm/via_drv.c +++ b/trunk/drivers/char/drm/via_drv.c @@ -22,6 +22,7 @@ * DEALINGS IN THE SOFTWARE. */ +#include #include "drmP.h" #include "via_drm.h" #include "via_drv.h" diff --git a/trunk/drivers/char/ds1302.c b/trunk/drivers/char/ds1302.c index 625e8b517005..a75e8609be01 100644 --- a/trunk/drivers/char/ds1302.c +++ b/trunk/drivers/char/ds1302.c @@ -12,6 +12,7 @@ *! *!***************************************************************************/ +#include #include #include diff --git a/trunk/drivers/char/ds1620.c b/trunk/drivers/char/ds1620.c index 953e670dcd09..62cda25724e3 100644 --- a/trunk/drivers/char/ds1620.c +++ b/trunk/drivers/char/ds1620.c @@ -2,6 +2,7 @@ * linux/drivers/char/ds1620.c: Dallas Semiconductors DS1620 * thermometer driver (as used in the Rebel.com NetWinder) */ +#include #include #include #include diff --git a/trunk/drivers/char/ec3104_keyb.c b/trunk/drivers/char/ec3104_keyb.c index abac18b1871c..4aed66968821 100644 --- a/trunk/drivers/char/ec3104_keyb.c +++ b/trunk/drivers/char/ec3104_keyb.c @@ -26,6 +26,7 @@ * (prumpf@tux.org). */ +#include #include #include diff --git a/trunk/drivers/char/epca.c b/trunk/drivers/char/epca.c index 86d290e9f307..d0b3890d9302 100644 --- a/trunk/drivers/char/epca.c +++ b/trunk/drivers/char/epca.c @@ -30,6 +30,7 @@ /* See README.epca for change history --DAT*/ +#include #include #include #include diff --git a/trunk/drivers/char/ftape/lowlevel/ftape-calibr.c b/trunk/drivers/char/ftape/lowlevel/ftape-calibr.c index 8e50bfd35a52..956b2586e138 100644 --- a/trunk/drivers/char/ftape/lowlevel/ftape-calibr.c +++ b/trunk/drivers/char/ftape/lowlevel/ftape-calibr.c @@ -24,6 +24,7 @@ * functions. */ +#include #include #include #include diff --git a/trunk/drivers/char/ftape/lowlevel/ftape-ctl.c b/trunk/drivers/char/ftape/lowlevel/ftape-ctl.c index 5d7c1ce92d59..32e043911790 100644 --- a/trunk/drivers/char/ftape/lowlevel/ftape-ctl.c +++ b/trunk/drivers/char/ftape/lowlevel/ftape-ctl.c @@ -25,6 +25,7 @@ * QIC-40/80/3010/3020 floppy-tape driver "ftape" for Linux. */ +#include #include #include #include diff --git a/trunk/drivers/char/ftape/lowlevel/ftape-init.c b/trunk/drivers/char/ftape/lowlevel/ftape-init.c index 4998132a81d1..b54260d457c2 100644 --- a/trunk/drivers/char/ftape/lowlevel/ftape-init.c +++ b/trunk/drivers/char/ftape/lowlevel/ftape-init.c @@ -21,6 +21,7 @@ * for the QIC-40/80/3010/3020 floppy-tape driver for Linux. */ +#include #include #include #include diff --git a/trunk/drivers/char/ftape/lowlevel/ftape-proc.c b/trunk/drivers/char/ftape/lowlevel/ftape-proc.c index e805b15e0a12..c66251e997ed 100644 --- a/trunk/drivers/char/ftape/lowlevel/ftape-proc.c +++ b/trunk/drivers/char/ftape/lowlevel/ftape-proc.c @@ -26,6 +26,7 @@ * Old code removed, switched to dynamic proc entry. */ +#include #if defined(CONFIG_PROC_FS) && defined(CONFIG_FT_PROC_FS) diff --git a/trunk/drivers/char/ftape/lowlevel/ftape-setup.c b/trunk/drivers/char/ftape/lowlevel/ftape-setup.c index 678340acd0b7..280a1a55d87e 100644 --- a/trunk/drivers/char/ftape/lowlevel/ftape-setup.c +++ b/trunk/drivers/char/ftape/lowlevel/ftape-setup.c @@ -25,6 +25,7 @@ * "ftape" for Linux. */ +#include #include #include #include diff --git a/trunk/drivers/char/ftape/lowlevel/ftape-tracing.h b/trunk/drivers/char/ftape/lowlevel/ftape-tracing.h index 2950810c7085..fa7cd20ee66c 100644 --- a/trunk/drivers/char/ftape/lowlevel/ftape-tracing.h +++ b/trunk/drivers/char/ftape/lowlevel/ftape-tracing.h @@ -28,6 +28,7 @@ * QIC-40/80/3010/3020 floppy-tape driver "ftape" for Linux. */ +#include #include /* diff --git a/trunk/drivers/char/ftape/lowlevel/ftape_syms.c b/trunk/drivers/char/ftape/lowlevel/ftape_syms.c index 8e0dc4a07ca6..5dc3a380c9bf 100644 --- a/trunk/drivers/char/ftape/lowlevel/ftape_syms.c +++ b/trunk/drivers/char/ftape/lowlevel/ftape_syms.c @@ -25,6 +25,7 @@ * exports to its high level clients */ +#include #include #include diff --git a/trunk/drivers/char/ftape/zftape/zftape-ctl.c b/trunk/drivers/char/ftape/zftape/zftape-ctl.c index 22ba0f5d00cf..6c7874e5c199 100644 --- a/trunk/drivers/char/ftape/zftape/zftape-ctl.c +++ b/trunk/drivers/char/ftape/zftape/zftape-ctl.c @@ -24,6 +24,7 @@ * for the QIC-40/80/3010/3020 floppy-tape driver for Linux. */ +#include #include #include #include diff --git a/trunk/drivers/char/ftape/zftape/zftape-ctl.h b/trunk/drivers/char/ftape/zftape/zftape-ctl.h index 8e6f2d7ac74e..414159891990 100644 --- a/trunk/drivers/char/ftape/zftape/zftape-ctl.h +++ b/trunk/drivers/char/ftape/zftape/zftape-ctl.h @@ -27,6 +27,7 @@ * for the QIC-40/80 floppy-tape driver for Linux. */ +#include #include #include diff --git a/trunk/drivers/char/ftape/zftape/zftape-init.c b/trunk/drivers/char/ftape/zftape/zftape-init.c index 55272566b740..3eeb869a9a11 100644 --- a/trunk/drivers/char/ftape/zftape/zftape-init.c +++ b/trunk/drivers/char/ftape/zftape/zftape-init.c @@ -20,6 +20,7 @@ * to the ftape floppy tape driver for Linux */ +#include #include #include #include diff --git a/trunk/drivers/char/genrtc.c b/trunk/drivers/char/genrtc.c index bebd7e34f792..588fca542a98 100644 --- a/trunk/drivers/char/genrtc.c +++ b/trunk/drivers/char/genrtc.c @@ -43,6 +43,7 @@ #define RTC_VERSION "1.07" #include +#include #include #include #include diff --git a/trunk/drivers/char/hpet.c b/trunk/drivers/char/hpet.c index 8b6c76f8ef0e..07473cd84121 100644 --- a/trunk/drivers/char/hpet.c +++ b/trunk/drivers/char/hpet.c @@ -11,6 +11,7 @@ * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/drivers/char/hvc_console.c b/trunk/drivers/char/hvc_console.c index 859e5005c785..6e380aecea6a 100644 --- a/trunk/drivers/char/hvc_console.c +++ b/trunk/drivers/char/hvc_console.c @@ -22,6 +22,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include #include #include diff --git a/trunk/drivers/char/ip2/i2ellis.h b/trunk/drivers/char/ip2/i2ellis.h index 5eabe47b0bc8..510b026d7d26 100644 --- a/trunk/drivers/char/ip2/i2ellis.h +++ b/trunk/drivers/char/ip2/i2ellis.h @@ -47,6 +47,7 @@ //---------------------- // Mandatory Includes: //---------------------- +#include #include "ip2types.h" #include "i2hw.h" // The hardware definitions diff --git a/trunk/drivers/char/ip2/ip2main.c b/trunk/drivers/char/ip2/ip2main.c index f9aa53c76f99..8619542766cb 100644 --- a/trunk/drivers/char/ip2/ip2main.c +++ b/trunk/drivers/char/ip2/ip2main.c @@ -82,6 +82,7 @@ /************/ /* Includes */ /************/ +#include #include #include diff --git a/trunk/drivers/char/ipmi/ipmi_devintf.c b/trunk/drivers/char/ipmi/ipmi_devintf.c index 2fc894fef1cb..da637adbbfaa 100644 --- a/trunk/drivers/char/ipmi/ipmi_devintf.c +++ b/trunk/drivers/char/ipmi/ipmi_devintf.c @@ -31,6 +31,7 @@ * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/drivers/char/ipmi/ipmi_msghandler.c b/trunk/drivers/char/ipmi/ipmi_msghandler.c index 0aa5d608fe6f..ad26f4b997c5 100644 --- a/trunk/drivers/char/ipmi/ipmi_msghandler.c +++ b/trunk/drivers/char/ipmi/ipmi_msghandler.c @@ -31,6 +31,7 @@ * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/drivers/char/ipmi/ipmi_poweroff.c b/trunk/drivers/char/ipmi/ipmi_poweroff.c index 8d941db83457..d0b5c08e7b4e 100644 --- a/trunk/drivers/char/ipmi/ipmi_poweroff.c +++ b/trunk/drivers/char/ipmi/ipmi_poweroff.c @@ -31,6 +31,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/drivers/char/ipmi/ipmi_si_intf.c b/trunk/drivers/char/ipmi/ipmi_si_intf.c index c7f3e5c80666..bd4f2248b758 100644 --- a/trunk/drivers/char/ipmi/ipmi_si_intf.c +++ b/trunk/drivers/char/ipmi/ipmi_si_intf.c @@ -38,6 +38,7 @@ * and drives the real SMI state machine. */ +#include #include #include #include diff --git a/trunk/drivers/char/ipmi/ipmi_watchdog.c b/trunk/drivers/char/ipmi/ipmi_watchdog.c index 74a889c58333..1a0a19c53605 100644 --- a/trunk/drivers/char/ipmi/ipmi_watchdog.c +++ b/trunk/drivers/char/ipmi/ipmi_watchdog.c @@ -31,6 +31,7 @@ * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/drivers/char/isicom.c b/trunk/drivers/char/isicom.c index c105b9540ad8..478bf4d7d065 100644 --- a/trunk/drivers/char/isicom.c +++ b/trunk/drivers/char/isicom.c @@ -245,7 +245,7 @@ static int lock_card(struct isi_board *card) printk(KERN_WARNING "ISICOM: Failed to lock Card (0x%lx)\n", card->base); - return 0; /* Failed to acquire the card! */ + return 0; /* Failed to aquire the card! */ } static int lock_card_at_interrupt(struct isi_board *card) @@ -262,7 +262,7 @@ static int lock_card_at_interrupt(struct isi_board *card) spin_unlock_irqrestore(&card->card_lock, card->flags); } /* Failing in interrupt is an acceptable event */ - return 0; /* Failed to acquire the card! */ + return 0; /* Failed to aquire the card! */ } static void unlock_card(struct isi_board *card) diff --git a/trunk/drivers/char/istallion.c b/trunk/drivers/char/istallion.c index fbce2f0669d6..c74e5660a9b7 100644 --- a/trunk/drivers/char/istallion.c +++ b/trunk/drivers/char/istallion.c @@ -26,6 +26,7 @@ /*****************************************************************************/ +#include #include #include #include @@ -281,6 +282,7 @@ static char *stli_brdnames[] = { /*****************************************************************************/ +#ifdef MODULE /* * Define some string labels for arguments passed from the module * load line. These allow for easy board definitions, and easy @@ -379,6 +381,8 @@ MODULE_PARM_DESC(board2, "Board 2 config -> name[,ioaddr[,memaddr]"); module_param_array(board3, charp, NULL, 0); MODULE_PARM_DESC(board3, "Board 3 config -> name[,ioaddr[,memaddr]"); +#endif + /* * Set up a default memory address table for EISA board probing. * The default addresses are all bellow 1Mbyte, which has to be the @@ -639,8 +643,14 @@ static unsigned int stli_baudrates[] = { * Prototype all functions in this driver! */ +#ifdef MODULE +static void stli_argbrds(void); static int stli_parsebrd(stlconf_t *confp, char **argp); -static int stli_init(void); + +static unsigned long stli_atol(char *str); +#endif + +int stli_init(void); static int stli_open(struct tty_struct *tty, struct file *filp); static void stli_close(struct tty_struct *tty, struct file *filp); static int stli_write(struct tty_struct *tty, const unsigned char *buf, int count); @@ -776,6 +786,8 @@ static int stli_timeron; static struct class *istallion_class; +#ifdef MODULE + /* * Loadable module initialization stuff. */ @@ -942,6 +954,8 @@ static int stli_parsebrd(stlconf_t *confp, char **argp) return(1); } +#endif + /*****************************************************************************/ static int stli_open(struct tty_struct *tty, struct file *filp) @@ -4680,7 +4694,7 @@ static struct tty_operations stli_ops = { /*****************************************************************************/ -static int __init stli_init(void) +int __init stli_init(void) { int i; printk(KERN_INFO "%s: version %s\n", stli_drvtitle, stli_drvversion); diff --git a/trunk/drivers/char/keyboard.c b/trunk/drivers/char/keyboard.c index 056ebe84b81d..4bb3d2272604 100644 --- a/trunk/drivers/char/keyboard.c +++ b/trunk/drivers/char/keyboard.c @@ -24,6 +24,7 @@ * 21-08-02: Converted to input API, major cleanup. (Vojtech Pavlik) */ +#include #include #include #include diff --git a/trunk/drivers/char/lcd.c b/trunk/drivers/char/lcd.c index 7d49b241de56..29963d8be667 100644 --- a/trunk/drivers/char/lcd.c +++ b/trunk/drivers/char/lcd.c @@ -14,6 +14,7 @@ #define RTC_IO_EXTENT 0x10 /*Only really two ports, but... */ +#include #include #include #include diff --git a/trunk/drivers/char/lp.c b/trunk/drivers/char/lp.c index 582cdbdb0c42..b11a390581ba 100644 --- a/trunk/drivers/char/lp.c +++ b/trunk/drivers/char/lp.c @@ -114,6 +114,7 @@ #include #include +#include #include #include #include diff --git a/trunk/drivers/char/mbcs.c b/trunk/drivers/char/mbcs.c index bb07c2766b27..c268ee04b2aa 100644 --- a/trunk/drivers/char/mbcs.c +++ b/trunk/drivers/char/mbcs.c @@ -10,6 +10,7 @@ * MOATB Core Services driver. */ +#include #include #include #include diff --git a/trunk/drivers/char/mem.c b/trunk/drivers/char/mem.c index 70f3954d6dfd..6fe7b6c6c462 100644 --- a/trunk/drivers/char/mem.c +++ b/trunk/drivers/char/mem.c @@ -8,6 +8,7 @@ * Shared /dev/zero mmaping support, Feb 2000, Kanoj Sarcar */ +#include #include #include #include diff --git a/trunk/drivers/char/misc.c b/trunk/drivers/char/misc.c index d5fa19da330b..dfe1cede3916 100644 --- a/trunk/drivers/char/misc.c +++ b/trunk/drivers/char/misc.c @@ -34,6 +34,7 @@ */ #include +#include #include #include diff --git a/trunk/drivers/char/moxa.c b/trunk/drivers/char/moxa.c index 4ea7bd5f4f56..52ef61f54ba0 100644 --- a/trunk/drivers/char/moxa.c +++ b/trunk/drivers/char/moxa.c @@ -29,6 +29,7 @@ * version : 5.1 */ +#include #include #include #include diff --git a/trunk/drivers/char/mwave/3780i.c b/trunk/drivers/char/mwave/3780i.c index 4e4865e90e50..d1fe05e83882 100644 --- a/trunk/drivers/char/mwave/3780i.c +++ b/trunk/drivers/char/mwave/3780i.c @@ -46,6 +46,7 @@ * First release to the public */ +#include #include #include #include diff --git a/trunk/drivers/char/mxser.c b/trunk/drivers/char/mxser.c index eb1559fcb81a..72cfd09091e0 100644 --- a/trunk/drivers/char/mxser.c +++ b/trunk/drivers/char/mxser.c @@ -36,6 +36,7 @@ */ +#include #include #include #include diff --git a/trunk/drivers/char/n_hdlc.c b/trunk/drivers/char/n_hdlc.c index 337a87f86a3b..9f54733f1623 100644 --- a/trunk/drivers/char/n_hdlc.c +++ b/trunk/drivers/char/n_hdlc.c @@ -81,6 +81,7 @@ #define HDLC_MAGIC 0x239e #define HDLC_VERSION "$Revision: 4.8 $" +#include #include #include #include diff --git a/trunk/drivers/char/nvram.c b/trunk/drivers/char/nvram.c index 8c5f102622b6..3556ccd77570 100644 --- a/trunk/drivers/char/nvram.c +++ b/trunk/drivers/char/nvram.c @@ -37,6 +37,7 @@ #define NVRAM_VERSION "1.2" #include +#include #include #include #include diff --git a/trunk/drivers/char/nwbutton.c b/trunk/drivers/char/nwbutton.c index 94845dd12ca9..4083b781adbf 100644 --- a/trunk/drivers/char/nwbutton.c +++ b/trunk/drivers/char/nwbutton.c @@ -4,6 +4,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/char/pc8736x_gpio.c b/trunk/drivers/char/pc8736x_gpio.c index c860de6a6fde..1c706ccfdbb3 100644 --- a/trunk/drivers/char/pc8736x_gpio.c +++ b/trunk/drivers/char/pc8736x_gpio.c @@ -319,10 +319,9 @@ static int __init pc8736x_gpio_init(void) return 0; undo_platform_dev_add: - platform_device_del(pdev); -undo_platform_dev_alloc: platform_device_put(pdev); - +undo_platform_dev_alloc: + kfree(pdev); return rc; } diff --git a/trunk/drivers/char/pcmcia/cm4000_cs.c b/trunk/drivers/char/pcmcia/cm4000_cs.c index 31c8a21f9d87..eab5394da666 100644 --- a/trunk/drivers/char/pcmcia/cm4000_cs.c +++ b/trunk/drivers/char/pcmcia/cm4000_cs.c @@ -149,7 +149,12 @@ struct cm4000_dev { #define ZERO_DEV(dev) \ memset(&dev->atr_csum,0, \ sizeof(struct cm4000_dev) - \ - offsetof(struct cm4000_dev, atr_csum)) + /*link*/ sizeof(struct pcmcia_device *) - \ + /*node*/ sizeof(dev_node_t) - \ + /*atr*/ MAX_ATR*sizeof(char) - \ + /*rbuf*/ 512*sizeof(char) - \ + /*sbuf*/ 512*sizeof(char) - \ + /*queue*/ 4*sizeof(wait_queue_head_t)) static struct pcmcia_device *dev_table[CM4000_MAX_DEV]; static struct class *cmm_class; diff --git a/trunk/drivers/char/pty.c b/trunk/drivers/char/pty.c index 34dd4c38110e..9491e4307566 100644 --- a/trunk/drivers/char/pty.c +++ b/trunk/drivers/char/pty.c @@ -11,6 +11,7 @@ * */ +#include #include /* For EXPORT_SYMBOL */ #include diff --git a/trunk/drivers/char/qtronix.c b/trunk/drivers/char/qtronix.c index 1087530e5854..601d09baf9d7 100644 --- a/trunk/drivers/char/qtronix.c +++ b/trunk/drivers/char/qtronix.c @@ -33,6 +33,7 @@ * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include /* * NOTE: diff --git a/trunk/drivers/char/random.c b/trunk/drivers/char/random.c index 164bddae047f..58f3512c52e1 100644 --- a/trunk/drivers/char/random.c +++ b/trunk/drivers/char/random.c @@ -224,6 +224,7 @@ */ #include +#include #include #include #include diff --git a/trunk/drivers/char/rio/rio_linux.c b/trunk/drivers/char/rio/rio_linux.c index 5332d1d4b0e4..aa43436d5d1b 100644 --- a/trunk/drivers/char/rio/rio_linux.c +++ b/trunk/drivers/char/rio/rio_linux.c @@ -33,6 +33,7 @@ * */ #include +#include #include #include #include diff --git a/trunk/drivers/char/rio/rio_linux.h b/trunk/drivers/char/rio/rio_linux.h index dc3f005614a3..55b9c97e8477 100644 --- a/trunk/drivers/char/rio/rio_linux.h +++ b/trunk/drivers/char/rio/rio_linux.h @@ -23,6 +23,7 @@ * Version 1.0 -- July, 1999. * */ +#include #define RIO_NBOARDS 4 #define RIO_PORTSPERBOARD 128 diff --git a/trunk/drivers/char/rio/rioinit.c b/trunk/drivers/char/rio/rioinit.c index 99f3df02b61c..12e34bc3f7ce 100644 --- a/trunk/drivers/char/rio/rioinit.c +++ b/trunk/drivers/char/rio/rioinit.c @@ -33,6 +33,7 @@ static char *_rioinit_c_sccs_ = "@(#)rioinit.c 1.3"; #endif +#include #include #include #include diff --git a/trunk/drivers/char/rtc.c b/trunk/drivers/char/rtc.c index 37dc2edd8d75..0897b0c8d528 100644 --- a/trunk/drivers/char/rtc.c +++ b/trunk/drivers/char/rtc.c @@ -61,6 +61,7 @@ * this driver.) */ +#include #include #include #include diff --git a/trunk/drivers/char/scx200_gpio.c b/trunk/drivers/char/scx200_gpio.c index 45083e5dd23b..5a280a330401 100644 --- a/trunk/drivers/char/scx200_gpio.c +++ b/trunk/drivers/char/scx200_gpio.c @@ -126,10 +126,9 @@ static int __init scx200_gpio_init(void) undo_chrdev_region: unregister_chrdev_region(dev, num_pins); undo_platform_device_add: - platform_device_del(pdev); -undo_malloc: platform_device_put(pdev); - +undo_malloc: + kfree(pdev); return rc; } @@ -137,6 +136,7 @@ static void __exit scx200_gpio_cleanup(void) { kfree(scx200_devices); unregister_chrdev_region(MKDEV(major, 0), num_pins); + platform_device_put(pdev); platform_device_unregister(pdev); /* kfree(pdev); */ } diff --git a/trunk/drivers/char/serial167.c b/trunk/drivers/char/serial167.c index 21a710cb4bba..c851eeaa4069 100644 --- a/trunk/drivers/char/serial167.c +++ b/trunk/drivers/char/serial167.c @@ -44,6 +44,7 @@ * - replace bottom half handler with task queue handler */ +#include #include #include #include diff --git a/trunk/drivers/char/sonypi.c b/trunk/drivers/char/sonypi.c index e19d4856e9fc..43dfd8689dce 100644 --- a/trunk/drivers/char/sonypi.c +++ b/trunk/drivers/char/sonypi.c @@ -33,6 +33,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/char/specialix.c b/trunk/drivers/char/specialix.c index d4243fb80815..d2d6b01dcd05 100644 --- a/trunk/drivers/char/specialix.c +++ b/trunk/drivers/char/specialix.c @@ -75,6 +75,7 @@ * Documentation/specialix.txt */ +#include #include #include diff --git a/trunk/drivers/char/stallion.c b/trunk/drivers/char/stallion.c index f15df0e423e0..0f7a542d9041 100644 --- a/trunk/drivers/char/stallion.c +++ b/trunk/drivers/char/stallion.c @@ -26,6 +26,7 @@ /*****************************************************************************/ +#include #include #include #include diff --git a/trunk/drivers/char/synclink_gt.c b/trunk/drivers/char/synclink_gt.c index 03edccc8a823..4e35d4181224 100644 --- a/trunk/drivers/char/synclink_gt.c +++ b/trunk/drivers/char/synclink_gt.c @@ -46,6 +46,7 @@ //#define DBGRBUF(info) dump_rbufs(info) +#include #include #include #include diff --git a/trunk/drivers/char/synclinkmp.c b/trunk/drivers/char/synclinkmp.c index ba54df3cf60a..21bf15ad9980 100644 --- a/trunk/drivers/char/synclinkmp.c +++ b/trunk/drivers/char/synclinkmp.c @@ -34,6 +34,7 @@ #define MAX_DEVICES 12 +#include #include #include #include diff --git a/trunk/drivers/char/sysrq.c b/trunk/drivers/char/sysrq.c index a064ee9181c0..35082dc12eae 100644 --- a/trunk/drivers/char/sysrq.c +++ b/trunk/drivers/char/sysrq.c @@ -12,6 +12,7 @@ * based upon discusions in irc://irc.openprojects.net/#kernelnewbies */ +#include #include #include #include diff --git a/trunk/drivers/char/tipar.c b/trunk/drivers/char/tipar.c index e0633a119d29..f7802e5bd7ca 100644 --- a/trunk/drivers/char/tipar.c +++ b/trunk/drivers/char/tipar.c @@ -42,6 +42,7 @@ */ #undef DEBUG /* change to #define to get debugging * output - for pr_debug() */ +#include #include #include #include diff --git a/trunk/drivers/char/tlclk.c b/trunk/drivers/char/tlclk.c index dfc4437afefb..ef68d152d3e4 100644 --- a/trunk/drivers/char/tlclk.c +++ b/trunk/drivers/char/tlclk.c @@ -27,6 +27,7 @@ * MPCBL0010 ATCA computer. */ +#include #include #include #include diff --git a/trunk/drivers/char/tty_io.c b/trunk/drivers/char/tty_io.c index 615e934da05f..a1143238feca 100644 --- a/trunk/drivers/char/tty_io.c +++ b/trunk/drivers/char/tty_io.c @@ -65,6 +65,7 @@ * alloc_tty_struct() always uses kmalloc() -- Andrew Morton 17Mar01 */ +#include #include #include #include diff --git a/trunk/drivers/char/vc_screen.c b/trunk/drivers/char/vc_screen.c index 45e9bd81bc0e..234d7f3fb114 100644 --- a/trunk/drivers/char/vc_screen.c +++ b/trunk/drivers/char/vc_screen.c @@ -21,6 +21,7 @@ * - making it shorter - scr_readw are macros which expand in PRETTY long code */ +#include #include #include #include diff --git a/trunk/drivers/char/viocons.c b/trunk/drivers/char/viocons.c index 766f7864c6c6..07f5ce4b28e3 100644 --- a/trunk/drivers/char/viocons.c +++ b/trunk/drivers/char/viocons.c @@ -25,6 +25,7 @@ * along with this program; if not, write to the Free Software Foundation, * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include #include #include diff --git a/trunk/drivers/char/viotape.c b/trunk/drivers/char/viotape.c index 7d42c8ec8dbc..198f1505ae23 100644 --- a/trunk/drivers/char/viotape.c +++ b/trunk/drivers/char/viotape.c @@ -31,6 +31,7 @@ * the OS/400 partition. The format of the messages is defined in * iseries/vio.h */ +#include #include #include #include diff --git a/trunk/drivers/char/vme_scc.c b/trunk/drivers/char/vme_scc.c index b17a6e2bbca8..fe99fc1aba45 100644 --- a/trunk/drivers/char/vme_scc.c +++ b/trunk/drivers/char/vme_scc.c @@ -14,6 +14,7 @@ */ #include +#include #include #include #include diff --git a/trunk/drivers/char/vt.c b/trunk/drivers/char/vt.c index 3ef823d7d255..d6f65032649a 100644 --- a/trunk/drivers/char/vt.c +++ b/trunk/drivers/char/vt.c @@ -86,6 +86,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/char/vt_ioctl.c b/trunk/drivers/char/vt_ioctl.c index eccffaf26faa..24011e7c81ff 100644 --- a/trunk/drivers/char/vt_ioctl.c +++ b/trunk/drivers/char/vt_ioctl.c @@ -10,6 +10,7 @@ * Check put/get_user, cleanups - acme@conectiva.com.br - Jun 2001 */ +#include #include #include #include diff --git a/trunk/drivers/char/watchdog/at91_wdt.c b/trunk/drivers/char/watchdog/at91_wdt.c index f61dedc3c96c..00080655533d 100644 --- a/trunk/drivers/char/watchdog/at91_wdt.c +++ b/trunk/drivers/char/watchdog/at91_wdt.c @@ -9,6 +9,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/drivers/char/watchdog/booke_wdt.c b/trunk/drivers/char/watchdog/booke_wdt.c index 537f5c6729bf..b6640606b44d 100644 --- a/trunk/drivers/char/watchdog/booke_wdt.c +++ b/trunk/drivers/char/watchdog/booke_wdt.c @@ -14,6 +14,7 @@ * option) any later version. */ +#include #include #include #include diff --git a/trunk/drivers/char/watchdog/eurotechwdt.c b/trunk/drivers/char/watchdog/eurotechwdt.c index e89cda010b49..25c2f2575611 100644 --- a/trunk/drivers/char/watchdog/eurotechwdt.c +++ b/trunk/drivers/char/watchdog/eurotechwdt.c @@ -40,6 +40,7 @@ * Added Matt Domsch's nowayout module option. */ +#include #include #include #include diff --git a/trunk/drivers/char/watchdog/ib700wdt.c b/trunk/drivers/char/watchdog/ib700wdt.c index a2e53c715b36..cf60329eec85 100644 --- a/trunk/drivers/char/watchdog/ib700wdt.c +++ b/trunk/drivers/char/watchdog/ib700wdt.c @@ -31,6 +31,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/char/watchdog/ibmasr.c b/trunk/drivers/char/watchdog/ibmasr.c index b0741cbdc139..294c474ae485 100644 --- a/trunk/drivers/char/watchdog/ibmasr.c +++ b/trunk/drivers/char/watchdog/ibmasr.c @@ -10,6 +10,7 @@ * of the GNU Public License, incorporated herein by reference. */ +#include #include #include #include diff --git a/trunk/drivers/char/watchdog/indydog.c b/trunk/drivers/char/watchdog/indydog.c index d387979b2434..b4b94daba67e 100644 --- a/trunk/drivers/char/watchdog/indydog.c +++ b/trunk/drivers/char/watchdog/indydog.c @@ -13,6 +13,7 @@ #include #include +#include #include #include #include diff --git a/trunk/drivers/char/watchdog/ixp2000_wdt.c b/trunk/drivers/char/watchdog/ixp2000_wdt.c index aa29a7d68759..0cfb9b9c4a4b 100644 --- a/trunk/drivers/char/watchdog/ixp2000_wdt.c +++ b/trunk/drivers/char/watchdog/ixp2000_wdt.c @@ -16,6 +16,7 @@ * warranty of any kind, whether express or implied. */ +#include #include #include #include diff --git a/trunk/drivers/char/watchdog/ixp4xx_wdt.c b/trunk/drivers/char/watchdog/ixp4xx_wdt.c index e6a3fe83fa01..3800835ca8f3 100644 --- a/trunk/drivers/char/watchdog/ixp4xx_wdt.c +++ b/trunk/drivers/char/watchdog/ixp4xx_wdt.c @@ -13,6 +13,7 @@ * warranty of any kind, whether express or implied. */ +#include #include #include #include diff --git a/trunk/drivers/char/watchdog/machzwd.c b/trunk/drivers/char/watchdog/machzwd.c index b67b4878ae0f..a9a20aad61e7 100644 --- a/trunk/drivers/char/watchdog/machzwd.c +++ b/trunk/drivers/char/watchdog/machzwd.c @@ -28,6 +28,7 @@ * Added nowayout module option to override CONFIG_WATCHDOG_NOWAYOUT */ +#include #include #include #include diff --git a/trunk/drivers/char/watchdog/mixcomwd.c b/trunk/drivers/char/watchdog/mixcomwd.c index 433c27f98159..d8dede575402 100644 --- a/trunk/drivers/char/watchdog/mixcomwd.c +++ b/trunk/drivers/char/watchdog/mixcomwd.c @@ -37,6 +37,7 @@ #include #include +#include #include #include #include diff --git a/trunk/drivers/char/watchdog/mpc83xx_wdt.c b/trunk/drivers/char/watchdog/mpc83xx_wdt.c index dac1381af364..5d6f5061603a 100644 --- a/trunk/drivers/char/watchdog/mpc83xx_wdt.c +++ b/trunk/drivers/char/watchdog/mpc83xx_wdt.c @@ -15,6 +15,7 @@ * option) any later version. */ +#include #include #include #include diff --git a/trunk/drivers/char/watchdog/mpc8xx_wdt.c b/trunk/drivers/char/watchdog/mpc8xx_wdt.c index 11f0ccd4c4d4..b2fc71e20850 100644 --- a/trunk/drivers/char/watchdog/mpc8xx_wdt.c +++ b/trunk/drivers/char/watchdog/mpc8xx_wdt.c @@ -9,6 +9,7 @@ * or implied. */ +#include #include #include #include diff --git a/trunk/drivers/char/watchdog/mpcore_wdt.c b/trunk/drivers/char/watchdog/mpcore_wdt.c index 9c11d920add5..2c2c51773200 100644 --- a/trunk/drivers/char/watchdog/mpcore_wdt.c +++ b/trunk/drivers/char/watchdog/mpcore_wdt.c @@ -21,6 +21,7 @@ */ #include #include +#include #include #include #include diff --git a/trunk/drivers/char/watchdog/mv64x60_wdt.c b/trunk/drivers/char/watchdog/mv64x60_wdt.c index 20a6cbb0fbb8..f1b9cf89f153 100644 --- a/trunk/drivers/char/watchdog/mv64x60_wdt.c +++ b/trunk/drivers/char/watchdog/mv64x60_wdt.c @@ -15,6 +15,7 @@ * or implied. */ +#include #include #include #include diff --git a/trunk/drivers/char/watchdog/pcwd_usb.c b/trunk/drivers/char/watchdog/pcwd_usb.c index 92bf8c1a0f0d..0d072bed501d 100644 --- a/trunk/drivers/char/watchdog/pcwd_usb.c +++ b/trunk/drivers/char/watchdog/pcwd_usb.c @@ -24,6 +24,7 @@ * http://www.berkprod.com/ or http://www.pcwatchdog.com/ */ +#include #include #include #include diff --git a/trunk/drivers/char/watchdog/s3c2410_wdt.c b/trunk/drivers/char/watchdog/s3c2410_wdt.c index f267dad26071..1ea04e9b2b0b 100644 --- a/trunk/drivers/char/watchdog/s3c2410_wdt.c +++ b/trunk/drivers/char/watchdog/s3c2410_wdt.c @@ -37,6 +37,7 @@ #include #include +#include #include #include #include diff --git a/trunk/drivers/char/watchdog/sa1100_wdt.c b/trunk/drivers/char/watchdog/sa1100_wdt.c index b22e95c5470c..522a9370db94 100644 --- a/trunk/drivers/char/watchdog/sa1100_wdt.c +++ b/trunk/drivers/char/watchdog/sa1100_wdt.c @@ -17,6 +17,7 @@ * * 27/11/2000 Initial release */ +#include #include #include #include diff --git a/trunk/drivers/char/watchdog/sbc8360.c b/trunk/drivers/char/watchdog/sbc8360.c index 6562aa910ace..c6cbf808d8c2 100644 --- a/trunk/drivers/char/watchdog/sbc8360.c +++ b/trunk/drivers/char/watchdog/sbc8360.c @@ -36,6 +36,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/char/watchdog/sbc_epx_c3.c b/trunk/drivers/char/watchdog/sbc_epx_c3.c index 09867fadc720..837b1ec3ffe3 100644 --- a/trunk/drivers/char/watchdog/sbc_epx_c3.c +++ b/trunk/drivers/char/watchdog/sbc_epx_c3.c @@ -15,6 +15,7 @@ #include #include +#include #include #include #include diff --git a/trunk/drivers/char/watchdog/sc1200wdt.c b/trunk/drivers/char/watchdog/sc1200wdt.c index 78ef6333c181..20b88f9b7be2 100644 --- a/trunk/drivers/char/watchdog/sc1200wdt.c +++ b/trunk/drivers/char/watchdog/sc1200wdt.c @@ -27,6 +27,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/char/watchdog/scx200_wdt.c b/trunk/drivers/char/watchdog/scx200_wdt.c index c0b4754e8de0..b4a102a2d7e3 100644 --- a/trunk/drivers/char/watchdog/scx200_wdt.c +++ b/trunk/drivers/char/watchdog/scx200_wdt.c @@ -17,6 +17,7 @@ of any nature resulting due to the use of this software. This software is provided AS-IS with no warranties. */ +#include #include #include #include diff --git a/trunk/drivers/char/watchdog/shwdt.c b/trunk/drivers/char/watchdog/shwdt.c index 803701b675c0..1f4cab55b2ef 100644 --- a/trunk/drivers/char/watchdog/shwdt.c +++ b/trunk/drivers/char/watchdog/shwdt.c @@ -17,6 +17,7 @@ * Added expect close support, made emulated timeout runtime changeable * general cleanups, add some ioctls */ +#include #include #include #include diff --git a/trunk/drivers/char/watchdog/softdog.c b/trunk/drivers/char/watchdog/softdog.c index 79ce5c655428..a91edaf3a350 100644 --- a/trunk/drivers/char/watchdog/softdog.c +++ b/trunk/drivers/char/watchdog/softdog.c @@ -38,6 +38,7 @@ #include #include +#include #include #include #include diff --git a/trunk/drivers/char/watchdog/w83977f_wdt.c b/trunk/drivers/char/watchdog/w83977f_wdt.c index c31849e4c5c2..a7ff64c8921f 100644 --- a/trunk/drivers/char/watchdog/w83977f_wdt.c +++ b/trunk/drivers/char/watchdog/w83977f_wdt.c @@ -17,6 +17,7 @@ #include #include +#include #include #include #include diff --git a/trunk/drivers/char/watchdog/wd501p.h b/trunk/drivers/char/watchdog/wd501p.h index a4504f40394d..84e60eb74337 100644 --- a/trunk/drivers/char/watchdog/wd501p.h +++ b/trunk/drivers/char/watchdog/wd501p.h @@ -19,6 +19,7 @@ * */ +#include #define WDT_COUNT0 (io+0) #define WDT_COUNT1 (io+1) diff --git a/trunk/drivers/char/watchdog/wdrtas.c b/trunk/drivers/char/watchdog/wdrtas.c index 3a462c34b92a..dacfe31caccf 100644 --- a/trunk/drivers/char/watchdog/wdrtas.c +++ b/trunk/drivers/char/watchdog/wdrtas.c @@ -26,6 +26,7 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/drivers/char/watchdog/wdt.c b/trunk/drivers/char/watchdog/wdt.c index 2586e9e858e2..ec7e401228ee 100644 --- a/trunk/drivers/char/watchdog/wdt.c +++ b/trunk/drivers/char/watchdog/wdt.c @@ -31,6 +31,7 @@ * Matt Domsch : Added nowayout module option */ +#include #include #include #include diff --git a/trunk/drivers/char/watchdog/wdt977.c b/trunk/drivers/char/watchdog/wdt977.c index 3cde2b9bb763..3843900e94c4 100644 --- a/trunk/drivers/char/watchdog/wdt977.c +++ b/trunk/drivers/char/watchdog/wdt977.c @@ -24,6 +24,7 @@ #include #include +#include #include #include #include diff --git a/trunk/drivers/char/watchdog/wdt_pci.c b/trunk/drivers/char/watchdog/wdt_pci.c index c79cc9543d96..4b3311993d48 100644 --- a/trunk/drivers/char/watchdog/wdt_pci.c +++ b/trunk/drivers/char/watchdog/wdt_pci.c @@ -35,6 +35,7 @@ * Matt Domsch : nowayout module option */ +#include #include #include #include diff --git a/trunk/drivers/cpufreq/cpufreq.c b/trunk/drivers/cpufreq/cpufreq.c index 1ba4039777e8..35e0b9ceecf7 100644 --- a/trunk/drivers/cpufreq/cpufreq.c +++ b/trunk/drivers/cpufreq/cpufreq.c @@ -15,6 +15,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/cpufreq/cpufreq_stats.c b/trunk/drivers/cpufreq/cpufreq_stats.c index 25eee5394201..145061b8472a 100644 --- a/trunk/drivers/cpufreq/cpufreq_stats.c +++ b/trunk/drivers/cpufreq/cpufreq_stats.c @@ -9,6 +9,7 @@ * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/drivers/cpufreq/cpufreq_userspace.c b/trunk/drivers/cpufreq/cpufreq_userspace.c index 44ae5e5b94cf..071ee4f1bbf2 100644 --- a/trunk/drivers/cpufreq/cpufreq_userspace.c +++ b/trunk/drivers/cpufreq/cpufreq_userspace.c @@ -11,6 +11,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/edac/amd76x_edac.c b/trunk/drivers/edac/amd76x_edac.c index f79f6b587bfa..53423ad6d4a3 100644 --- a/trunk/drivers/edac/amd76x_edac.c +++ b/trunk/drivers/edac/amd76x_edac.c @@ -12,6 +12,7 @@ * */ +#include #include #include #include @@ -19,9 +20,6 @@ #include #include "edac_mc.h" -#define AMD76X_REVISION " Ver: 2.0.1 " __DATE__ -#define EDAC_MOD_STR "amd76x_edac" - #define amd76x_printk(level, fmt, arg...) \ edac_printk(level, "amd76x", fmt, ##arg) @@ -104,18 +102,15 @@ static const struct amd76x_dev_info amd76x_devs[] = { static void amd76x_get_error_info(struct mem_ctl_info *mci, struct amd76x_error_info *info) { - struct pci_dev *pdev; - - pdev = to_pci_dev(mci->dev); - pci_read_config_dword(pdev, AMD76X_ECC_MODE_STATUS, + pci_read_config_dword(mci->pdev, AMD76X_ECC_MODE_STATUS, &info->ecc_mode_status); if (info->ecc_mode_status & BIT(8)) - pci_write_bits32(pdev, AMD76X_ECC_MODE_STATUS, + pci_write_bits32(mci->pdev, AMD76X_ECC_MODE_STATUS, (u32) BIT(8), (u32) BIT(8)); if (info->ecc_mode_status & BIT(9)) - pci_write_bits32(pdev, AMD76X_ECC_MODE_STATUS, + pci_write_bits32(mci->pdev, AMD76X_ECC_MODE_STATUS, (u32) BIT(9), (u32) BIT(9)); } @@ -181,38 +176,6 @@ static void amd76x_check(struct mem_ctl_info *mci) amd76x_process_error_info(mci, &info, 1); } -static void amd76x_init_csrows(struct mem_ctl_info *mci, struct pci_dev *pdev, - enum edac_type edac_mode) -{ - struct csrow_info *csrow; - u32 mba, mba_base, mba_mask, dms; - int index; - - for (index = 0; index < mci->nr_csrows; index++) { - csrow = &mci->csrows[index]; - - /* find the DRAM Chip Select Base address and mask */ - pci_read_config_dword(pdev, - AMD76X_MEM_BASE_ADDR + (index * 4), - &mba); - - if (!(mba & BIT(0))) - continue; - - mba_base = mba & 0xff800000UL; - mba_mask = ((mba & 0xff80) << 16) | 0x7fffffUL; - pci_read_config_dword(pdev, AMD76X_DRAM_MODE_STATUS, &dms); - csrow->first_page = mba_base >> PAGE_SHIFT; - csrow->nr_pages = (mba_mask + 1) >> PAGE_SHIFT; - csrow->last_page = csrow->first_page + csrow->nr_pages - 1; - csrow->page_mask = mba_mask >> PAGE_SHIFT; - csrow->grain = csrow->nr_pages << PAGE_SHIFT; - csrow->mtype = MEM_RDDR; - csrow->dtype = ((dms >> index) & 0x1) ? DEV_X4 : DEV_UNKNOWN; - csrow->edac_mode = edac_mode; - } -} - /** * amd76x_probe1 - Perform set up for detected device * @pdev; PCI device detected @@ -224,13 +187,15 @@ static void amd76x_init_csrows(struct mem_ctl_info *mci, struct pci_dev *pdev, */ static int amd76x_probe1(struct pci_dev *pdev, int dev_idx) { - static const enum edac_type ems_modes[] = { + int rc = -ENODEV; + int index; + struct mem_ctl_info *mci = NULL; + enum edac_type ems_modes[] = { EDAC_NONE, EDAC_EC, EDAC_SECDED, EDAC_SECDED }; - struct mem_ctl_info *mci = NULL; u32 ems; u32 ems_mode; struct amd76x_error_info discard; @@ -241,28 +206,53 @@ static int amd76x_probe1(struct pci_dev *pdev, int dev_idx) mci = edac_mc_alloc(0, AMD76X_NR_CSROWS, AMD76X_NR_CHANS); if (mci == NULL) { - return -ENOMEM; + rc = -ENOMEM; + goto fail; } debugf0("%s(): mci = %p\n", __func__, mci); - mci->dev = &pdev->dev; + mci->pdev = pdev; mci->mtype_cap = MEM_FLAG_RDDR; mci->edac_ctl_cap = EDAC_FLAG_NONE | EDAC_FLAG_EC | EDAC_FLAG_SECDED; mci->edac_cap = ems_mode ? (EDAC_FLAG_EC | EDAC_FLAG_SECDED) : EDAC_FLAG_NONE; mci->mod_name = EDAC_MOD_STR; - mci->mod_ver = AMD76X_REVISION; + mci->mod_ver = "$Revision: 1.4.2.5 $"; mci->ctl_name = amd76x_devs[dev_idx].ctl_name; mci->edac_check = amd76x_check; mci->ctl_page_to_phys = NULL; - amd76x_init_csrows(mci, pdev, ems_modes[ems_mode]); + for (index = 0; index < mci->nr_csrows; index++) { + struct csrow_info *csrow = &mci->csrows[index]; + u32 mba; + u32 mba_base; + u32 mba_mask; + u32 dms; + + /* find the DRAM Chip Select Base address and mask */ + pci_read_config_dword(mci->pdev, + AMD76X_MEM_BASE_ADDR + (index * 4), &mba); + + if (!(mba & BIT(0))) + continue; + + mba_base = mba & 0xff800000UL; + mba_mask = ((mba & 0xff80) << 16) | 0x7fffffUL; + pci_read_config_dword(mci->pdev, AMD76X_DRAM_MODE_STATUS, + &dms); + csrow->first_page = mba_base >> PAGE_SHIFT; + csrow->nr_pages = (mba_mask + 1) >> PAGE_SHIFT; + csrow->last_page = csrow->first_page + csrow->nr_pages - 1; + csrow->page_mask = mba_mask >> PAGE_SHIFT; + csrow->grain = csrow->nr_pages << PAGE_SHIFT; + csrow->mtype = MEM_RDDR; + csrow->dtype = ((dms >> index) & 0x1) ? DEV_X4 : DEV_UNKNOWN; + csrow->edac_mode = ems_modes[ems_mode]; + } + amd76x_get_error_info(mci, &discard); /* clear counters */ - /* Here we assume that we will never see multiple instances of this - * type of memory controller. The ID is therefore hardcoded to 0. - */ - if (edac_mc_add_mc(mci,0)) { + if (edac_mc_add_mc(mci)) { debugf3("%s(): failed edac_mc_add_mc()\n", __func__); goto fail; } @@ -272,8 +262,9 @@ static int amd76x_probe1(struct pci_dev *pdev, int dev_idx) return 0; fail: - edac_mc_free(mci); - return -ENODEV; + if (mci != NULL) + edac_mc_free(mci); + return rc; } /* returns count (>= 0), or negative on error */ @@ -300,7 +291,7 @@ static void __devexit amd76x_remove_one(struct pci_dev *pdev) debugf0("%s()\n", __func__); - if ((mci = edac_mc_del_mc(&pdev->dev)) == NULL) + if ((mci = edac_mc_del_mc(pdev)) == NULL) return; edac_mc_free(mci); diff --git a/trunk/drivers/edac/e752x_edac.c b/trunk/drivers/edac/e752x_edac.c index c82bc0ed7f14..fce31936e6d7 100644 --- a/trunk/drivers/edac/e752x_edac.c +++ b/trunk/drivers/edac/e752x_edac.c @@ -17,6 +17,7 @@ * */ +#include #include #include #include @@ -24,9 +25,6 @@ #include #include "edac_mc.h" -#define E752X_REVISION " Ver: 2.0.1 " __DATE__ -#define EDAC_MOD_STR "e752x_edac" - static int force_function_unhide; #define e752x_printk(level, fmt, arg...) \ @@ -765,174 +763,22 @@ static void e752x_check(struct mem_ctl_info *mci) e752x_process_error_info(mci, &info, 1); } -/* Return 1 if dual channel mode is active. Else return 0. */ -static inline int dual_channel_active(u16 ddrcsr) -{ - return (((ddrcsr >> 12) & 3) == 3); -} - -static void e752x_init_csrows(struct mem_ctl_info *mci, struct pci_dev *pdev, - u16 ddrcsr) -{ - struct csrow_info *csrow; - unsigned long last_cumul_size; - int index, mem_dev, drc_chan; - int drc_drbg; /* DRB granularity 0=64mb, 1=128mb */ - int drc_ddim; /* DRAM Data Integrity Mode 0=none, 2=edac */ - u8 value; - u32 dra, drc, cumul_size; - - pci_read_config_dword(pdev, E752X_DRA, &dra); - pci_read_config_dword(pdev, E752X_DRC, &drc); - drc_chan = dual_channel_active(ddrcsr); - drc_drbg = drc_chan + 1; /* 128 in dual mode, 64 in single */ - drc_ddim = (drc >> 20) & 0x3; - - /* The dram row boundary (DRB) reg values are boundary address for - * each DRAM row with a granularity of 64 or 128MB (single/dual - * channel operation). DRB regs are cumulative; therefore DRB7 will - * contain the total memory contained in all eight rows. - */ - for (last_cumul_size = index = 0; index < mci->nr_csrows; index++) { - /* mem_dev 0=x8, 1=x4 */ - mem_dev = (dra >> (index * 4 + 2)) & 0x3; - csrow = &mci->csrows[index]; - - mem_dev = (mem_dev == 2); - pci_read_config_byte(pdev, E752X_DRB + index, &value); - /* convert a 128 or 64 MiB DRB to a page size. */ - cumul_size = value << (25 + drc_drbg - PAGE_SHIFT); - debugf3("%s(): (%d) cumul_size 0x%x\n", __func__, index, - cumul_size); - if (cumul_size == last_cumul_size) - continue; /* not populated */ - - csrow->first_page = last_cumul_size; - csrow->last_page = cumul_size - 1; - csrow->nr_pages = cumul_size - last_cumul_size; - last_cumul_size = cumul_size; - csrow->grain = 1 << 12; /* 4KiB - resolution of CELOG */ - csrow->mtype = MEM_RDDR; /* only one type supported */ - csrow->dtype = mem_dev ? DEV_X4 : DEV_X8; - - /* - * if single channel or x8 devices then SECDED - * if dual channel and x4 then S4ECD4ED - */ - if (drc_ddim) { - if (drc_chan && mem_dev) { - csrow->edac_mode = EDAC_S4ECD4ED; - mci->edac_cap |= EDAC_FLAG_S4ECD4ED; - } else { - csrow->edac_mode = EDAC_SECDED; - mci->edac_cap |= EDAC_FLAG_SECDED; - } - } else - csrow->edac_mode = EDAC_NONE; - } -} - -static void e752x_init_mem_map_table(struct pci_dev *pdev, - struct e752x_pvt *pvt) -{ - int index; - u8 value, last, row, stat8; - - last = 0; - row = 0; - - for (index = 0; index < 8; index += 2) { - pci_read_config_byte(pdev, E752X_DRB + index, &value); - /* test if there is a dimm in this slot */ - if (value == last) { - /* no dimm in the slot, so flag it as empty */ - pvt->map[index] = 0xff; - pvt->map[index + 1] = 0xff; - } else { /* there is a dimm in the slot */ - pvt->map[index] = row; - row++; - last = value; - /* test the next value to see if the dimm is double - * sided - */ - pci_read_config_byte(pdev, E752X_DRB + index + 1, - &value); - pvt->map[index + 1] = (value == last) ? - 0xff : /* the dimm is single sided, - so flag as empty */ - row; /* this is a double sided dimm - to save the next row # */ - row++; - last = value; - } - } - - /* set the map type. 1 = normal, 0 = reversed */ - pci_read_config_byte(pdev, E752X_DRM, &stat8); - pvt->map_type = ((stat8 & 0x0f) > ((stat8 >> 4) & 0x0f)); -} - -/* Return 0 on success or 1 on failure. */ -static int e752x_get_devs(struct pci_dev *pdev, int dev_idx, - struct e752x_pvt *pvt) -{ - struct pci_dev *dev; - - pvt->bridge_ck = pci_get_device(PCI_VENDOR_ID_INTEL, - pvt->dev_info->err_dev, - pvt->bridge_ck); - - if (pvt->bridge_ck == NULL) - pvt->bridge_ck = pci_scan_single_device(pdev->bus, - PCI_DEVFN(0, 1)); - - if (pvt->bridge_ck == NULL) { - e752x_printk(KERN_ERR, "error reporting device not found:" - "vendor %x device 0x%x (broken BIOS?)\n", - PCI_VENDOR_ID_INTEL, e752x_devs[dev_idx].err_dev); - return 1; - } - - dev = pci_get_device(PCI_VENDOR_ID_INTEL, e752x_devs[dev_idx].ctl_dev, - NULL); - - if (dev == NULL) - goto fail; - - pvt->dev_d0f0 = dev; - pvt->dev_d0f1 = pci_dev_get(pvt->bridge_ck); - - return 0; - -fail: - pci_dev_put(pvt->bridge_ck); - return 1; -} - -static void e752x_init_error_reporting_regs(struct e752x_pvt *pvt) -{ - struct pci_dev *dev; - - dev = pvt->dev_d0f1; - /* Turn off error disable & SMI in case the BIOS turned it on */ - pci_write_config_byte(dev, E752X_HI_ERRMASK, 0x00); - pci_write_config_byte(dev, E752X_HI_SMICMD, 0x00); - pci_write_config_word(dev, E752X_SYSBUS_ERRMASK, 0x00); - pci_write_config_word(dev, E752X_SYSBUS_SMICMD, 0x00); - pci_write_config_byte(dev, E752X_BUF_ERRMASK, 0x00); - pci_write_config_byte(dev, E752X_BUF_SMICMD, 0x00); - pci_write_config_byte(dev, E752X_DRAM_ERRMASK, 0x00); - pci_write_config_byte(dev, E752X_DRAM_SMICMD, 0x00); -} - static int e752x_probe1(struct pci_dev *pdev, int dev_idx) { + int rc = -ENODEV; + int index; u16 pci_data; u8 stat8; - struct mem_ctl_info *mci; - struct e752x_pvt *pvt; + struct mem_ctl_info *mci = NULL; + struct e752x_pvt *pvt = NULL; u16 ddrcsr; + u32 drc; int drc_chan; /* Number of channels 0=1chan,1=2chan */ + int drc_drbg; /* DRB granularity 0=64mb, 1=128mb */ + int drc_ddim; /* DRAM Data Integrity Mode 0=none,2=edac */ + u32 dra; + unsigned long last_cumul_size; + struct pci_dev *dev = NULL; struct e752x_error_info discard; debugf0("%s(): mci\n", __func__); @@ -946,20 +792,25 @@ static int e752x_probe1(struct pci_dev *pdev, int dev_idx) if (!force_function_unhide && !(stat8 & (1 << 5))) { printk(KERN_INFO "Contact your BIOS vendor to see if the " "E752x error registers can be safely un-hidden\n"); - return -ENOMEM; + goto fail; } stat8 |= (1 << 5); pci_write_config_byte(pdev, E752X_DEVPRES1, stat8); + /* need to find out the number of channels */ + pci_read_config_dword(pdev, E752X_DRC, &drc); pci_read_config_word(pdev, E752X_DDRCSR, &ddrcsr); /* FIXME: should check >>12 or 0xf, true for all? */ /* Dual channel = 1, Single channel = 0 */ - drc_chan = dual_channel_active(ddrcsr); + drc_chan = (((ddrcsr >> 12) & 3) == 3); + drc_drbg = drc_chan + 1; /* 128 in dual mode, 64 in single */ + drc_ddim = (drc >> 20) & 0x3; mci = edac_mc_alloc(sizeof(*pvt), E752X_NR_CSROWS, drc_chan + 1); if (mci == NULL) { - return -ENOMEM; + rc = -ENOMEM; + goto fail; } debugf3("%s(): init mci\n", __func__); @@ -968,54 +819,159 @@ static int e752x_probe1(struct pci_dev *pdev, int dev_idx) EDAC_FLAG_S4ECD4ED; /* FIXME - what if different memory types are in different csrows? */ mci->mod_name = EDAC_MOD_STR; - mci->mod_ver = E752X_REVISION; - mci->dev = &pdev->dev; + mci->mod_ver = "$Revision: 1.5.2.11 $"; + mci->pdev = pdev; debugf3("%s(): init pvt\n", __func__); pvt = (struct e752x_pvt *) mci->pvt_info; pvt->dev_info = &e752x_devs[dev_idx]; - pvt->mc_symmetric = ((ddrcsr & 0x10) != 0); + pvt->bridge_ck = pci_get_device(PCI_VENDOR_ID_INTEL, + pvt->dev_info->err_dev, + pvt->bridge_ck); - if (e752x_get_devs(pdev, dev_idx, pvt)) { - edac_mc_free(mci); - return -ENODEV; + if (pvt->bridge_ck == NULL) + pvt->bridge_ck = pci_scan_single_device(pdev->bus, + PCI_DEVFN(0, 1)); + + if (pvt->bridge_ck == NULL) { + e752x_printk(KERN_ERR, "error reporting device not found:" + "vendor %x device 0x%x (broken BIOS?)\n", + PCI_VENDOR_ID_INTEL, e752x_devs[dev_idx].err_dev); + goto fail; } + pvt->mc_symmetric = ((ddrcsr & 0x10) != 0); debugf3("%s(): more mci init\n", __func__); mci->ctl_name = pvt->dev_info->ctl_name; mci->edac_check = e752x_check; mci->ctl_page_to_phys = ctl_page_to_phys; - e752x_init_csrows(mci, pdev, ddrcsr); - e752x_init_mem_map_table(pdev, pvt); + /* find out the device types */ + pci_read_config_dword(pdev, E752X_DRA, &dra); + + /* + * The dram row boundary (DRB) reg values are boundary address for + * each DRAM row with a granularity of 64 or 128MB (single/dual + * channel operation). DRB regs are cumulative; therefore DRB7 will + * contain the total memory contained in all eight rows. + */ + for (last_cumul_size = index = 0; index < mci->nr_csrows; index++) { + u8 value; + u32 cumul_size; + + /* mem_dev 0=x8, 1=x4 */ + int mem_dev = (dra >> (index * 4 + 2)) & 0x3; + struct csrow_info *csrow = &mci->csrows[index]; + + mem_dev = (mem_dev == 2); + pci_read_config_byte(mci->pdev, E752X_DRB + index, &value); + /* convert a 128 or 64 MiB DRB to a page size. */ + cumul_size = value << (25 + drc_drbg - PAGE_SHIFT); + debugf3("%s(): (%d) cumul_size 0x%x\n", __func__, index, + cumul_size); + + if (cumul_size == last_cumul_size) + continue; /* not populated */ + + csrow->first_page = last_cumul_size; + csrow->last_page = cumul_size - 1; + csrow->nr_pages = cumul_size - last_cumul_size; + last_cumul_size = cumul_size; + csrow->grain = 1 << 12; /* 4KiB - resolution of CELOG */ + csrow->mtype = MEM_RDDR; /* only one type supported */ + csrow->dtype = mem_dev ? DEV_X4 : DEV_X8; + + /* + * if single channel or x8 devices then SECDED + * if dual channel and x4 then S4ECD4ED + */ + if (drc_ddim) { + if (drc_chan && mem_dev) { + csrow->edac_mode = EDAC_S4ECD4ED; + mci->edac_cap |= EDAC_FLAG_S4ECD4ED; + } else { + csrow->edac_mode = EDAC_SECDED; + mci->edac_cap |= EDAC_FLAG_SECDED; + } + } else + csrow->edac_mode = EDAC_NONE; + } + + /* Fill in the memory map table */ + { + u8 value; + u8 last = 0; + u8 row = 0; + + for (index = 0; index < 8; index += 2) { + pci_read_config_byte(mci->pdev, E752X_DRB + index, + &value); + + /* test if there is a dimm in this slot */ + if (value == last) { + /* no dimm in the slot, so flag it as empty */ + pvt->map[index] = 0xff; + pvt->map[index + 1] = 0xff; + } else { /* there is a dimm in the slot */ + pvt->map[index] = row; + row++; + last = value; + /* test the next value to see if the dimm is + double sided */ + pci_read_config_byte(mci->pdev, + E752X_DRB + index + 1, + &value); + pvt->map[index + 1] = (value == last) ? + 0xff : /* the dimm is single sided, + * so flag as empty + */ + row; /* this is a double sided dimm + * to save the next row # + */ + row++; + last = value; + } + } + } /* set the map type. 1 = normal, 0 = reversed */ - pci_read_config_byte(pdev, E752X_DRM, &stat8); + pci_read_config_byte(mci->pdev, E752X_DRM, &stat8); pvt->map_type = ((stat8 & 0x0f) > ((stat8 >> 4) & 0x0f)); mci->edac_cap |= EDAC_FLAG_NONE; debugf3("%s(): tolm, remapbase, remaplimit\n", __func__); /* load the top of low memory, remap base, and remap limit vars */ - pci_read_config_word(pdev, E752X_TOLM, &pci_data); + pci_read_config_word(mci->pdev, E752X_TOLM, &pci_data); pvt->tolm = ((u32) pci_data) << 4; - pci_read_config_word(pdev, E752X_REMAPBASE, &pci_data); + pci_read_config_word(mci->pdev, E752X_REMAPBASE, &pci_data); pvt->remapbase = ((u32) pci_data) << 14; - pci_read_config_word(pdev, E752X_REMAPLIMIT, &pci_data); + pci_read_config_word(mci->pdev, E752X_REMAPLIMIT, &pci_data); pvt->remaplimit = ((u32) pci_data) << 14; e752x_printk(KERN_INFO, "tolm = %x, remapbase = %x, remaplimit = %x\n", pvt->tolm, pvt->remapbase, pvt->remaplimit); - /* Here we assume that we will never see multiple instances of this - * type of memory controller. The ID is therefore hardcoded to 0. - */ - if (edac_mc_add_mc(mci,0)) { + if (edac_mc_add_mc(mci)) { debugf3("%s(): failed edac_mc_add_mc()\n", __func__); goto fail; } - e752x_init_error_reporting_regs(pvt); + dev = pci_get_device(PCI_VENDOR_ID_INTEL, e752x_devs[dev_idx].ctl_dev, + NULL); + pvt->dev_d0f0 = dev; + /* find the error reporting device and clear errors */ + dev = pvt->dev_d0f1 = pci_dev_get(pvt->bridge_ck); + /* Turn off error disable & SMI in case the BIOS turned it on */ + pci_write_config_byte(dev, E752X_HI_ERRMASK, 0x00); + pci_write_config_byte(dev, E752X_HI_SMICMD, 0x00); + pci_write_config_word(dev, E752X_SYSBUS_ERRMASK, 0x00); + pci_write_config_word(dev, E752X_SYSBUS_SMICMD, 0x00); + pci_write_config_byte(dev, E752X_BUF_ERRMASK, 0x00); + pci_write_config_byte(dev, E752X_BUF_SMICMD, 0x00); + pci_write_config_byte(dev, E752X_DRAM_ERRMASK, 0x00); + pci_write_config_byte(dev, E752X_DRAM_SMICMD, 0x00); + e752x_get_error_info(mci, &discard); /* clear other MCH errors */ /* get this far and it's successful */ @@ -1023,12 +979,20 @@ static int e752x_probe1(struct pci_dev *pdev, int dev_idx) return 0; fail: - pci_dev_put(pvt->dev_d0f0); - pci_dev_put(pvt->dev_d0f1); - pci_dev_put(pvt->bridge_ck); - edac_mc_free(mci); + if (mci) { + if (pvt->dev_d0f0) + pci_dev_put(pvt->dev_d0f0); + + if (pvt->dev_d0f1) + pci_dev_put(pvt->dev_d0f1); + + if (pvt->bridge_ck) + pci_dev_put(pvt->bridge_ck); + + edac_mc_free(mci); + } - return -ENODEV; + return rc; } /* returns count (>= 0), or negative on error */ @@ -1051,7 +1015,7 @@ static void __devexit e752x_remove_one(struct pci_dev *pdev) debugf0("%s()\n", __func__); - if ((mci = edac_mc_del_mc(&pdev->dev)) == NULL) + if ((mci = edac_mc_del_mc(pdev)) == NULL) return; pvt = (struct e752x_pvt *) mci->pvt_info; diff --git a/trunk/drivers/edac/e7xxx_edac.c b/trunk/drivers/edac/e7xxx_edac.c index 310d91b41c96..a9518d3e4be4 100644 --- a/trunk/drivers/edac/e7xxx_edac.c +++ b/trunk/drivers/edac/e7xxx_edac.c @@ -22,6 +22,7 @@ * */ +#include #include #include #include @@ -29,9 +30,6 @@ #include #include "edac_mc.h" -#define E7XXX_REVISION " Ver: 2.0.1 " __DATE__ -#define EDAC_MOD_STR "e7xxx_edac" - #define e7xxx_printk(level, fmt, arg...) \ edac_printk(level, "e7xxx", fmt, ##arg) @@ -335,61 +333,99 @@ static void e7xxx_check(struct mem_ctl_info *mci) e7xxx_process_error_info(mci, &info, 1); } -/* Return 1 if dual channel mode is active. Else return 0. */ -static inline int dual_channel_active(u32 drc, int dev_idx) +static int e7xxx_probe1(struct pci_dev *pdev, int dev_idx) { - return (dev_idx == E7501) ? ((drc >> 22) & 0x1) : 1; -} + int rc = -ENODEV; + int index; + u16 pci_data; + struct mem_ctl_info *mci = NULL; + struct e7xxx_pvt *pvt = NULL; + u32 drc; + int drc_chan = 1; /* Number of channels 0=1chan,1=2chan */ + int drc_drbg = 1; /* DRB granularity 0=32mb,1=64mb */ + int drc_ddim; /* DRAM Data Integrity Mode 0=none,2=edac */ + u32 dra; + unsigned long last_cumul_size; + struct e7xxx_error_info discard; + debugf0("%s(): mci\n", __func__); + + /* need to find out the number of channels */ + pci_read_config_dword(pdev, E7XXX_DRC, &drc); -/* Return DRB granularity (0=32mb, 1=64mb). */ -static inline int drb_granularity(u32 drc, int dev_idx) -{ /* only e7501 can be single channel */ - return (dev_idx == E7501) ? ((drc >> 18) & 0x3) : 1; -} + if (dev_idx == E7501) { + drc_chan = ((drc >> 22) & 0x1); + drc_drbg = (drc >> 18) & 0x3; + } + + drc_ddim = (drc >> 20) & 0x3; + mci = edac_mc_alloc(sizeof(*pvt), E7XXX_NR_CSROWS, drc_chan + 1); + if (mci == NULL) { + rc = -ENOMEM; + goto fail; + } -static void e7xxx_init_csrows(struct mem_ctl_info *mci, struct pci_dev *pdev, - int dev_idx, u32 drc) -{ - unsigned long last_cumul_size; - int index; - u8 value; - u32 dra, cumul_size; - int drc_chan, drc_drbg, drc_ddim, mem_dev; - struct csrow_info *csrow; + debugf3("%s(): init mci\n", __func__); + mci->mtype_cap = MEM_FLAG_RDDR; + mci->edac_ctl_cap = EDAC_FLAG_NONE | EDAC_FLAG_SECDED | + EDAC_FLAG_S4ECD4ED; + /* FIXME - what if different memory types are in different csrows? */ + mci->mod_name = EDAC_MOD_STR; + mci->mod_ver = "$Revision: 1.5.2.9 $"; + mci->pdev = pdev; + + debugf3("%s(): init pvt\n", __func__); + pvt = (struct e7xxx_pvt *) mci->pvt_info; + pvt->dev_info = &e7xxx_devs[dev_idx]; + pvt->bridge_ck = pci_get_device(PCI_VENDOR_ID_INTEL, + pvt->dev_info->err_dev, + pvt->bridge_ck); + + if (!pvt->bridge_ck) { + e7xxx_printk(KERN_ERR, "error reporting device not found:" + "vendor %x device 0x%x (broken BIOS?)\n", + PCI_VENDOR_ID_INTEL, e7xxx_devs[dev_idx].err_dev); + goto fail; + } + + debugf3("%s(): more mci init\n", __func__); + mci->ctl_name = pvt->dev_info->ctl_name; + mci->edac_check = e7xxx_check; + mci->ctl_page_to_phys = ctl_page_to_phys; + /* find out the device types */ pci_read_config_dword(pdev, E7XXX_DRA, &dra); - drc_chan = dual_channel_active(drc, dev_idx); - drc_drbg = drb_granularity(drc, dev_idx); - drc_ddim = (drc >> 20) & 0x3; - last_cumul_size = 0; - /* The dram row boundary (DRB) reg values are boundary address + /* + * The dram row boundary (DRB) reg values are boundary address * for each DRAM row with a granularity of 32 or 64MB (single/dual * channel operation). DRB regs are cumulative; therefore DRB7 will * contain the total memory contained in all eight rows. */ - for (index = 0; index < mci->nr_csrows; index++) { + for (last_cumul_size = index = 0; index < mci->nr_csrows; index++) { + u8 value; + u32 cumul_size; /* mem_dev 0=x8, 1=x4 */ - mem_dev = (dra >> (index * 4 + 3)) & 0x1; - csrow = &mci->csrows[index]; + int mem_dev = (dra >> (index * 4 + 3)) & 0x1; + struct csrow_info *csrow = &mci->csrows[index]; - pci_read_config_byte(pdev, E7XXX_DRB + index, &value); + pci_read_config_byte(mci->pdev, E7XXX_DRB + index, &value); /* convert a 64 or 32 MiB DRB to a page size. */ cumul_size = value << (25 + drc_drbg - PAGE_SHIFT); debugf3("%s(): (%d) cumul_size 0x%x\n", __func__, index, cumul_size); + if (cumul_size == last_cumul_size) - continue; /* not populated */ + continue; /* not populated */ csrow->first_page = last_cumul_size; csrow->last_page = cumul_size - 1; csrow->nr_pages = cumul_size - last_cumul_size; last_cumul_size = cumul_size; - csrow->grain = 1 << 12; /* 4KiB - resolution of CELOG */ - csrow->mtype = MEM_RDDR; /* only one type supported */ + csrow->grain = 1 << 12; /* 4KiB - resolution of CELOG */ + csrow->mtype = MEM_RDDR; /* only one type supported */ csrow->dtype = mem_dev ? DEV_X4 : DEV_X8; /* @@ -407,61 +443,16 @@ static void e7xxx_init_csrows(struct mem_ctl_info *mci, struct pci_dev *pdev, } else csrow->edac_mode = EDAC_NONE; } -} - -static int e7xxx_probe1(struct pci_dev *pdev, int dev_idx) -{ - u16 pci_data; - struct mem_ctl_info *mci = NULL; - struct e7xxx_pvt *pvt = NULL; - u32 drc; - int drc_chan; - struct e7xxx_error_info discard; - - debugf0("%s(): mci\n", __func__); - pci_read_config_dword(pdev, E7XXX_DRC, &drc); - - drc_chan = dual_channel_active(drc, dev_idx); - mci = edac_mc_alloc(sizeof(*pvt), E7XXX_NR_CSROWS, drc_chan + 1); - - if (mci == NULL) - return -ENOMEM; - - debugf3("%s(): init mci\n", __func__); - mci->mtype_cap = MEM_FLAG_RDDR; - mci->edac_ctl_cap = EDAC_FLAG_NONE | EDAC_FLAG_SECDED | - EDAC_FLAG_S4ECD4ED; - /* FIXME - what if different memory types are in different csrows? */ - mci->mod_name = EDAC_MOD_STR; - mci->mod_ver = E7XXX_REVISION; - mci->dev = &pdev->dev; - debugf3("%s(): init pvt\n", __func__); - pvt = (struct e7xxx_pvt *) mci->pvt_info; - pvt->dev_info = &e7xxx_devs[dev_idx]; - pvt->bridge_ck = pci_get_device(PCI_VENDOR_ID_INTEL, - pvt->dev_info->err_dev, - pvt->bridge_ck); - - if (!pvt->bridge_ck) { - e7xxx_printk(KERN_ERR, "error reporting device not found:" - "vendor %x device 0x%x (broken BIOS?)\n", - PCI_VENDOR_ID_INTEL, e7xxx_devs[dev_idx].err_dev); - goto fail0; - } - debugf3("%s(): more mci init\n", __func__); - mci->ctl_name = pvt->dev_info->ctl_name; - mci->edac_check = e7xxx_check; - mci->ctl_page_to_phys = ctl_page_to_phys; - e7xxx_init_csrows(mci, pdev, dev_idx, drc); mci->edac_cap |= EDAC_FLAG_NONE; + debugf3("%s(): tolm, remapbase, remaplimit\n", __func__); /* load the top of low memory, remap base, and remap limit vars */ - pci_read_config_word(pdev, E7XXX_TOLM, &pci_data); + pci_read_config_word(mci->pdev, E7XXX_TOLM, &pci_data); pvt->tolm = ((u32) pci_data) << 4; - pci_read_config_word(pdev, E7XXX_REMAPBASE, &pci_data); + pci_read_config_word(mci->pdev, E7XXX_REMAPBASE, &pci_data); pvt->remapbase = ((u32) pci_data) << 14; - pci_read_config_word(pdev, E7XXX_REMAPLIMIT, &pci_data); + pci_read_config_word(mci->pdev, E7XXX_REMAPLIMIT, &pci_data); pvt->remaplimit = ((u32) pci_data) << 14; e7xxx_printk(KERN_INFO, "tolm = %x, remapbase = %x, remaplimit = %x\n", pvt->tolm, @@ -470,25 +461,23 @@ static int e7xxx_probe1(struct pci_dev *pdev, int dev_idx) /* clear any pending errors, or initial state bits */ e7xxx_get_error_info(mci, &discard); - /* Here we assume that we will never see multiple instances of this - * type of memory controller. The ID is therefore hardcoded to 0. - */ - if (edac_mc_add_mc(mci,0)) { + if (edac_mc_add_mc(mci) != 0) { debugf3("%s(): failed edac_mc_add_mc()\n", __func__); - goto fail1; + goto fail; } /* get this far and it's successful */ debugf3("%s(): success\n", __func__); return 0; -fail1: - pci_dev_put(pvt->bridge_ck); - -fail0: - edac_mc_free(mci); +fail: + if (mci != NULL) { + if(pvt != NULL && pvt->bridge_ck) + pci_dev_put(pvt->bridge_ck); + edac_mc_free(mci); + } - return -ENODEV; + return rc; } /* returns count (>= 0), or negative on error */ @@ -509,7 +498,7 @@ static void __devexit e7xxx_remove_one(struct pci_dev *pdev) debugf0("%s()\n", __func__); - if ((mci = edac_mc_del_mc(&pdev->dev)) == NULL) + if ((mci = edac_mc_del_mc(pdev)) == NULL) return; pvt = (struct e7xxx_pvt *) mci->pvt_info; diff --git a/trunk/drivers/edac/edac_mc.c b/trunk/drivers/edac/edac_mc.c index 3a7cfe88b169..ea06e3a4dc35 100644 --- a/trunk/drivers/edac/edac_mc.c +++ b/trunk/drivers/edac/edac_mc.c @@ -12,6 +12,7 @@ * */ +#include #include #include #include @@ -53,17 +54,16 @@ static int log_ce = 1; static int panic_on_ue; static int poll_msec = 1000; +static int check_pci_parity = 0; /* default YES check PCI parity */ +static int panic_on_pci_parity; /* default no panic on PCI Parity */ +static atomic_t pci_parity_count = ATOMIC_INIT(0); + /* lock to memory controller's control array */ static DECLARE_MUTEX(mem_ctls_mutex); static struct list_head mc_devices = LIST_HEAD_INIT(mc_devices); static struct task_struct *edac_thread; -#ifdef CONFIG_PCI -static int check_pci_parity = 0; /* default YES check PCI parity */ -static int panic_on_pci_parity; /* default no panic on PCI Parity */ -static atomic_t pci_parity_count = ATOMIC_INIT(0); - /* Structure of the whitelist and blacklist arrays */ struct edac_pci_device_list { unsigned int vendor; /* Vendor ID */ @@ -80,12 +80,6 @@ static int pci_blacklist_count; static struct edac_pci_device_list pci_whitelist[MAX_LISTED_PCI_DEVICES]; static int pci_whitelist_count ; -#ifndef DISABLE_EDAC_SYSFS -static struct kobject edac_pci_kobj; /* /sys/devices/system/edac/pci */ -static struct completion edac_pci_kobj_complete; -#endif /* DISABLE_EDAC_SYSFS */ -#endif /* CONFIG_PCI */ - /* START sysfs data and methods */ #ifndef DISABLE_EDAC_SYSFS @@ -133,15 +127,18 @@ static struct sysdev_class edac_class = { set_kset_name("edac"), }; -/* sysfs object: +/* sysfs objects: * /sys/devices/system/edac/mc + * /sys/devices/system/edac/pci */ static struct kobject edac_memctrl_kobj; +static struct kobject edac_pci_kobj; /* We use these to wait for the reference counts on edac_memctrl_kobj and * edac_pci_kobj to reach 0. */ static struct completion edac_memctrl_kobj_complete; +static struct completion edac_pci_kobj_complete; /* * /sys/devices/system/edac/mc; @@ -327,8 +324,6 @@ static void edac_sysfs_memctrl_teardown(void) #endif /* DISABLE_EDAC_SYSFS */ } -#ifdef CONFIG_PCI - #ifndef DISABLE_EDAC_SYSFS /* @@ -625,255 +620,9 @@ static void edac_sysfs_pci_teardown(void) debugf0("%s()\n", __func__); init_completion(&edac_pci_kobj_complete); kobject_unregister(&edac_pci_kobj); - wait_for_completion(&edac_pci_kobj_complete); -#endif -} - - -static u16 get_pci_parity_status(struct pci_dev *dev, int secondary) -{ - int where; - u16 status; - - where = secondary ? PCI_SEC_STATUS : PCI_STATUS; - pci_read_config_word(dev, where, &status); - - /* If we get back 0xFFFF then we must suspect that the card has been - * pulled but the Linux PCI layer has not yet finished cleaning up. - * We don't want to report on such devices - */ - - if (status == 0xFFFF) { - u32 sanity; - - pci_read_config_dword(dev, 0, &sanity); - - if (sanity == 0xFFFFFFFF) - return 0; - } - - status &= PCI_STATUS_DETECTED_PARITY | PCI_STATUS_SIG_SYSTEM_ERROR | - PCI_STATUS_PARITY; - - if (status) - /* reset only the bits we are interested in */ - pci_write_config_word(dev, where, status); - - return status; -} - -typedef void (*pci_parity_check_fn_t) (struct pci_dev *dev); - -/* Clear any PCI parity errors logged by this device. */ -static void edac_pci_dev_parity_clear(struct pci_dev *dev) -{ - u8 header_type; - - get_pci_parity_status(dev, 0); - - /* read the device TYPE, looking for bridges */ - pci_read_config_byte(dev, PCI_HEADER_TYPE, &header_type); - - if ((header_type & 0x7F) == PCI_HEADER_TYPE_BRIDGE) - get_pci_parity_status(dev, 1); -} - -/* - * PCI Parity polling - * - */ -static void edac_pci_dev_parity_test(struct pci_dev *dev) -{ - u16 status; - u8 header_type; - - /* read the STATUS register on this device - */ - status = get_pci_parity_status(dev, 0); - - debugf2("PCI STATUS= 0x%04x %s\n", status, dev->dev.bus_id ); - - /* check the status reg for errors */ - if (status) { - if (status & (PCI_STATUS_SIG_SYSTEM_ERROR)) - edac_printk(KERN_CRIT, EDAC_PCI, - "Signaled System Error on %s\n", - pci_name(dev)); - - if (status & (PCI_STATUS_PARITY)) { - edac_printk(KERN_CRIT, EDAC_PCI, - "Master Data Parity Error on %s\n", - pci_name(dev)); - - atomic_inc(&pci_parity_count); - } - - if (status & (PCI_STATUS_DETECTED_PARITY)) { - edac_printk(KERN_CRIT, EDAC_PCI, - "Detected Parity Error on %s\n", - pci_name(dev)); - - atomic_inc(&pci_parity_count); - } - } - - /* read the device TYPE, looking for bridges */ - pci_read_config_byte(dev, PCI_HEADER_TYPE, &header_type); - - debugf2("PCI HEADER TYPE= 0x%02x %s\n", header_type, dev->dev.bus_id ); - - if ((header_type & 0x7F) == PCI_HEADER_TYPE_BRIDGE) { - /* On bridges, need to examine secondary status register */ - status = get_pci_parity_status(dev, 1); - - debugf2("PCI SEC_STATUS= 0x%04x %s\n", - status, dev->dev.bus_id ); - - /* check the secondary status reg for errors */ - if (status) { - if (status & (PCI_STATUS_SIG_SYSTEM_ERROR)) - edac_printk(KERN_CRIT, EDAC_PCI, "Bridge " - "Signaled System Error on %s\n", - pci_name(dev)); - - if (status & (PCI_STATUS_PARITY)) { - edac_printk(KERN_CRIT, EDAC_PCI, "Bridge " - "Master Data Parity Error on " - "%s\n", pci_name(dev)); - - atomic_inc(&pci_parity_count); - } - - if (status & (PCI_STATUS_DETECTED_PARITY)) { - edac_printk(KERN_CRIT, EDAC_PCI, "Bridge " - "Detected Parity Error on %s\n", - pci_name(dev)); - - atomic_inc(&pci_parity_count); - } - } - } -} - -/* - * check_dev_on_list: Scan for a PCI device on a white/black list - * @list: an EDAC &edac_pci_device_list white/black list pointer - * @free_index: index of next free entry on the list - * @pci_dev: PCI Device pointer - * - * see if list contains the device. - * - * Returns: 0 not found - * 1 found on list - */ -static int check_dev_on_list(struct edac_pci_device_list *list, - int free_index, struct pci_dev *dev) -{ - int i; - int rc = 0; /* Assume not found */ - unsigned short vendor=dev->vendor; - unsigned short device=dev->device; - - /* Scan the list, looking for a vendor/device match */ - for (i = 0; i < free_index; i++, list++ ) { - if ((list->vendor == vendor ) && (list->device == device )) { - rc = 1; - break; - } - } - - return rc; -} - -/* - * pci_dev parity list iterator - * Scan the PCI device list for one iteration, looking for SERRORs - * Master Parity ERRORS or Parity ERRORs on primary or secondary devices - */ -static inline void edac_pci_dev_parity_iterator(pci_parity_check_fn_t fn) -{ - struct pci_dev *dev = NULL; - - /* request for kernel access to the next PCI device, if any, - * and while we are looking at it have its reference count - * bumped until we are done with it - */ - while((dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev)) != NULL) { - /* if whitelist exists then it has priority, so only scan - * those devices on the whitelist - */ - if (pci_whitelist_count > 0 ) { - if (check_dev_on_list(pci_whitelist, - pci_whitelist_count, dev)) - fn(dev); - } else { - /* - * if no whitelist, then check if this devices is - * blacklisted - */ - if (!check_dev_on_list(pci_blacklist, - pci_blacklist_count, dev)) - fn(dev); - } - } -} - -static void do_pci_parity_check(void) -{ - unsigned long flags; - int before_count; - - debugf3("%s()\n", __func__); - - if (!check_pci_parity) - return; - - before_count = atomic_read(&pci_parity_count); - - /* scan all PCI devices looking for a Parity Error on devices and - * bridges - */ - local_irq_save(flags); - edac_pci_dev_parity_iterator(edac_pci_dev_parity_test); - local_irq_restore(flags); - - /* Only if operator has selected panic on PCI Error */ - if (panic_on_pci_parity) { - /* If the count is different 'after' from 'before' */ - if (before_count != atomic_read(&pci_parity_count)) - panic("EDAC: PCI Parity Error"); - } -} - -static inline void clear_pci_parity_errors(void) -{ - /* Clear any PCI bus parity errors that devices initially have logged - * in their registers. - */ - edac_pci_dev_parity_iterator(edac_pci_dev_parity_clear); -} - -#else /* CONFIG_PCI */ - -static inline void do_pci_parity_check(void) -{ - /* no-op */ -} - -static inline void clear_pci_parity_errors(void) -{ - /* no-op */ -} - -static void edac_sysfs_pci_teardown(void) -{ -} - -static int edac_sysfs_pci_setup(void) -{ - return 0; + wait_for_completion(&edac_pci_kobj_complete); +#endif } -#endif /* CONFIG_PCI */ #ifndef DISABLE_EDAC_SYSFS @@ -1383,7 +1132,7 @@ static int edac_create_sysfs_mci_device(struct mem_ctl_info *mci) return err; /* create a symlink for the device */ - err = sysfs_create_link(edac_mci_kobj, &mci->dev->kobj, + err = sysfs_create_link(edac_mci_kobj, &mci->pdev->dev.kobj, EDAC_DEVICE_SYMLINK); if (err) @@ -1489,7 +1238,7 @@ void edac_mc_dump_mci(struct mem_ctl_info *mci) debugf4("\tmci->edac_check = %p\n", mci->edac_check); debugf3("\tmci->nr_csrows = %d, csrows = %p\n", mci->nr_csrows, mci->csrows); - debugf3("\tdev = %p\n", mci->dev); + debugf3("\tpdev = %p\n", mci->pdev); debugf3("\tmod_name:ctl_name = %s:%s\n", mci->mod_name, mci->ctl_name); debugf3("\tpvt_info = %p\n\n", mci->pvt_info); @@ -1614,7 +1363,7 @@ void edac_mc_free(struct mem_ctl_info *mci) } EXPORT_SYMBOL_GPL(edac_mc_free); -static struct mem_ctl_info *find_mci_by_dev(struct device *dev) +static struct mem_ctl_info *find_mci_by_pdev(struct pci_dev *pdev) { struct mem_ctl_info *mci; struct list_head *item; @@ -1624,53 +1373,54 @@ static struct mem_ctl_info *find_mci_by_dev(struct device *dev) list_for_each(item, &mc_devices) { mci = list_entry(item, struct mem_ctl_info, link); - if (mci->dev == dev) + if (mci->pdev == pdev) return mci; } return NULL; } -/* Return 0 on success, 1 on failure. - * Before calling this function, caller must - * assign a unique value to mci->mc_idx. - */ -static int add_mc_to_global_list (struct mem_ctl_info *mci) +static int add_mc_to_global_list(struct mem_ctl_info *mci) { struct list_head *item, *insert_before; struct mem_ctl_info *p; + int i; - insert_before = &mc_devices; + if (list_empty(&mc_devices)) { + mci->mc_idx = 0; + insert_before = &mc_devices; + } else { + if (find_mci_by_pdev(mci->pdev)) { + edac_printk(KERN_WARNING, EDAC_MC, + "%s (%s) %s %s already assigned %d\n", + mci->pdev->dev.bus_id, + pci_name(mci->pdev), mci->mod_name, + mci->ctl_name, mci->mc_idx); + return 1; + } - if (unlikely((p = find_mci_by_dev(mci->dev)) != NULL)) - goto fail0; + insert_before = NULL; + i = 0; - list_for_each(item, &mc_devices) { - p = list_entry(item, struct mem_ctl_info, link); + list_for_each(item, &mc_devices) { + p = list_entry(item, struct mem_ctl_info, link); - if (p->mc_idx >= mci->mc_idx) { - if (unlikely(p->mc_idx == mci->mc_idx)) - goto fail1; + if (p->mc_idx != i) { + insert_before = item; + break; + } - insert_before = item; - break; + i++; } + + mci->mc_idx = i; + + if (insert_before == NULL) + insert_before = &mc_devices; } list_add_tail_rcu(&mci->link, insert_before); return 0; - -fail0: - edac_printk(KERN_WARNING, EDAC_MC, - "%s (%s) %s %s already assigned %d\n", p->dev->bus_id, - dev_name(p->dev), p->mod_name, p->ctl_name, p->mc_idx); - return 1; - -fail1: - edac_printk(KERN_WARNING, EDAC_MC, - "bug in low-level driver: attempt to assign\n" - " duplicate mc_idx %d in %s()\n", p->mc_idx, __func__); - return 1; } static void complete_mc_list_del(struct rcu_head *head) @@ -1694,7 +1444,6 @@ static void del_mc_from_global_list(struct mem_ctl_info *mci) * edac_mc_add_mc: Insert the 'mci' structure into the mci global list and * create sysfs entries associated with mci structure * @mci: pointer to the mci structure to be added to the list - * @mc_idx: A unique numeric identifier to be assigned to the 'mci' structure. * * Return: * 0 Success @@ -1702,10 +1451,9 @@ static void del_mc_from_global_list(struct mem_ctl_info *mci) */ /* FIXME - should a warning be printed if no error detection? correction? */ -int edac_mc_add_mc(struct mem_ctl_info *mci, int mc_idx) +int edac_mc_add_mc(struct mem_ctl_info *mci) { debugf0("%s()\n", __func__); - mci->mc_idx = mc_idx; #ifdef CONFIG_EDAC_DEBUG if (edac_debug_level >= 3) edac_mc_dump_mci(mci); @@ -1738,8 +1486,8 @@ int edac_mc_add_mc(struct mem_ctl_info *mci, int mc_idx) } /* Report action taken */ - edac_mc_printk(mci, KERN_INFO, "Giving out device to %s %s: DEV %s\n", - mci->mod_name, mci->ctl_name, dev_name(mci->dev)); + edac_mc_printk(mci, KERN_INFO, "Giving out device to %s %s: PCI %s\n", + mci->mod_name, mci->ctl_name, pci_name(mci->pdev)); up(&mem_ctls_mutex); return 0; @@ -1756,18 +1504,18 @@ EXPORT_SYMBOL_GPL(edac_mc_add_mc); /** * edac_mc_del_mc: Remove sysfs entries for specified mci structure and * remove mci structure from global list - * @pdev: Pointer to 'struct device' representing mci structure to remove. + * @pdev: Pointer to 'struct pci_dev' representing mci structure to remove. * * Return pointer to removed mci structure, or NULL if device not found. */ -struct mem_ctl_info * edac_mc_del_mc(struct device *dev) +struct mem_ctl_info * edac_mc_del_mc(struct pci_dev *pdev) { struct mem_ctl_info *mci; debugf0("MC: %s()\n", __func__); down(&mem_ctls_mutex); - if ((mci = find_mci_by_dev(dev)) == NULL) { + if ((mci = find_mci_by_pdev(pdev)) == NULL) { up(&mem_ctls_mutex); return NULL; } @@ -1776,8 +1524,8 @@ struct mem_ctl_info * edac_mc_del_mc(struct device *dev) del_mc_from_global_list(mci); up(&mem_ctls_mutex); edac_printk(KERN_INFO, EDAC_MC, - "Removed device %d for %s %s: DEV %s\n", mci->mc_idx, - mci->mod_name, mci->ctl_name, dev_name(mci->dev)); + "Removed device %d for %s %s: PCI %s\n", mci->mc_idx, + mci->mod_name, mci->ctl_name, pci_name(mci->pdev)); return mci; } EXPORT_SYMBOL_GPL(edac_mc_del_mc); @@ -1991,6 +1739,244 @@ void edac_mc_handle_ue_no_info(struct mem_ctl_info *mci, const char *msg) } EXPORT_SYMBOL_GPL(edac_mc_handle_ue_no_info); +#ifdef CONFIG_PCI + +static u16 get_pci_parity_status(struct pci_dev *dev, int secondary) +{ + int where; + u16 status; + + where = secondary ? PCI_SEC_STATUS : PCI_STATUS; + pci_read_config_word(dev, where, &status); + + /* If we get back 0xFFFF then we must suspect that the card has been + * pulled but the Linux PCI layer has not yet finished cleaning up. + * We don't want to report on such devices + */ + + if (status == 0xFFFF) { + u32 sanity; + + pci_read_config_dword(dev, 0, &sanity); + + if (sanity == 0xFFFFFFFF) + return 0; + } + + status &= PCI_STATUS_DETECTED_PARITY | PCI_STATUS_SIG_SYSTEM_ERROR | + PCI_STATUS_PARITY; + + if (status) + /* reset only the bits we are interested in */ + pci_write_config_word(dev, where, status); + + return status; +} + +typedef void (*pci_parity_check_fn_t) (struct pci_dev *dev); + +/* Clear any PCI parity errors logged by this device. */ +static void edac_pci_dev_parity_clear(struct pci_dev *dev) +{ + u8 header_type; + + get_pci_parity_status(dev, 0); + + /* read the device TYPE, looking for bridges */ + pci_read_config_byte(dev, PCI_HEADER_TYPE, &header_type); + + if ((header_type & 0x7F) == PCI_HEADER_TYPE_BRIDGE) + get_pci_parity_status(dev, 1); +} + +/* + * PCI Parity polling + * + */ +static void edac_pci_dev_parity_test(struct pci_dev *dev) +{ + u16 status; + u8 header_type; + + /* read the STATUS register on this device + */ + status = get_pci_parity_status(dev, 0); + + debugf2("PCI STATUS= 0x%04x %s\n", status, dev->dev.bus_id ); + + /* check the status reg for errors */ + if (status) { + if (status & (PCI_STATUS_SIG_SYSTEM_ERROR)) + edac_printk(KERN_CRIT, EDAC_PCI, + "Signaled System Error on %s\n", + pci_name(dev)); + + if (status & (PCI_STATUS_PARITY)) { + edac_printk(KERN_CRIT, EDAC_PCI, + "Master Data Parity Error on %s\n", + pci_name(dev)); + + atomic_inc(&pci_parity_count); + } + + if (status & (PCI_STATUS_DETECTED_PARITY)) { + edac_printk(KERN_CRIT, EDAC_PCI, + "Detected Parity Error on %s\n", + pci_name(dev)); + + atomic_inc(&pci_parity_count); + } + } + + /* read the device TYPE, looking for bridges */ + pci_read_config_byte(dev, PCI_HEADER_TYPE, &header_type); + + debugf2("PCI HEADER TYPE= 0x%02x %s\n", header_type, dev->dev.bus_id ); + + if ((header_type & 0x7F) == PCI_HEADER_TYPE_BRIDGE) { + /* On bridges, need to examine secondary status register */ + status = get_pci_parity_status(dev, 1); + + debugf2("PCI SEC_STATUS= 0x%04x %s\n", + status, dev->dev.bus_id ); + + /* check the secondary status reg for errors */ + if (status) { + if (status & (PCI_STATUS_SIG_SYSTEM_ERROR)) + edac_printk(KERN_CRIT, EDAC_PCI, "Bridge " + "Signaled System Error on %s\n", + pci_name(dev)); + + if (status & (PCI_STATUS_PARITY)) { + edac_printk(KERN_CRIT, EDAC_PCI, "Bridge " + "Master Data Parity Error on " + "%s\n", pci_name(dev)); + + atomic_inc(&pci_parity_count); + } + + if (status & (PCI_STATUS_DETECTED_PARITY)) { + edac_printk(KERN_CRIT, EDAC_PCI, "Bridge " + "Detected Parity Error on %s\n", + pci_name(dev)); + + atomic_inc(&pci_parity_count); + } + } + } +} + +/* + * check_dev_on_list: Scan for a PCI device on a white/black list + * @list: an EDAC &edac_pci_device_list white/black list pointer + * @free_index: index of next free entry on the list + * @pci_dev: PCI Device pointer + * + * see if list contains the device. + * + * Returns: 0 not found + * 1 found on list + */ +static int check_dev_on_list(struct edac_pci_device_list *list, + int free_index, struct pci_dev *dev) +{ + int i; + int rc = 0; /* Assume not found */ + unsigned short vendor=dev->vendor; + unsigned short device=dev->device; + + /* Scan the list, looking for a vendor/device match */ + for (i = 0; i < free_index; i++, list++ ) { + if ((list->vendor == vendor ) && (list->device == device )) { + rc = 1; + break; + } + } + + return rc; +} + +/* + * pci_dev parity list iterator + * Scan the PCI device list for one iteration, looking for SERRORs + * Master Parity ERRORS or Parity ERRORs on primary or secondary devices + */ +static inline void edac_pci_dev_parity_iterator(pci_parity_check_fn_t fn) +{ + struct pci_dev *dev = NULL; + + /* request for kernel access to the next PCI device, if any, + * and while we are looking at it have its reference count + * bumped until we are done with it + */ + while((dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev)) != NULL) { + /* if whitelist exists then it has priority, so only scan + * those devices on the whitelist + */ + if (pci_whitelist_count > 0 ) { + if (check_dev_on_list(pci_whitelist, + pci_whitelist_count, dev)) + fn(dev); + } else { + /* + * if no whitelist, then check if this devices is + * blacklisted + */ + if (!check_dev_on_list(pci_blacklist, + pci_blacklist_count, dev)) + fn(dev); + } + } +} + +static void do_pci_parity_check(void) +{ + unsigned long flags; + int before_count; + + debugf3("%s()\n", __func__); + + if (!check_pci_parity) + return; + + before_count = atomic_read(&pci_parity_count); + + /* scan all PCI devices looking for a Parity Error on devices and + * bridges + */ + local_irq_save(flags); + edac_pci_dev_parity_iterator(edac_pci_dev_parity_test); + local_irq_restore(flags); + + /* Only if operator has selected panic on PCI Error */ + if (panic_on_pci_parity) { + /* If the count is different 'after' from 'before' */ + if (before_count != atomic_read(&pci_parity_count)) + panic("EDAC: PCI Parity Error"); + } +} + +static inline void clear_pci_parity_errors(void) +{ + /* Clear any PCI bus parity errors that devices initially have logged + * in their registers. + */ + edac_pci_dev_parity_iterator(edac_pci_dev_parity_clear); +} + +#else /* CONFIG_PCI */ + +static inline void do_pci_parity_check(void) +{ + /* no-op */ +} + +static inline void clear_pci_parity_errors(void) +{ + /* no-op */ +} + +#endif /* CONFIG_PCI */ /* * Iterate over all MC instances and check for ECC, et al, errors @@ -2110,12 +2096,10 @@ MODULE_DESCRIPTION("Core library routines for MC reporting"); module_param(panic_on_ue, int, 0644); MODULE_PARM_DESC(panic_on_ue, "Panic on uncorrected error: 0=off 1=on"); -#ifdef CONFIG_PCI module_param(check_pci_parity, int, 0644); MODULE_PARM_DESC(check_pci_parity, "Check for PCI bus parity errors: 0=off 1=on"); module_param(panic_on_pci_parity, int, 0644); MODULE_PARM_DESC(panic_on_pci_parity, "Panic on PCI Bus Parity error: 0=off 1=on"); -#endif module_param(log_ue, int, 0644); MODULE_PARM_DESC(log_ue, "Log uncorrectable error to console: 0=off 1=on"); module_param(log_ce, int, 0644); diff --git a/trunk/drivers/edac/edac_mc.h b/trunk/drivers/edac/edac_mc.h index bf6ab8a8d5ed..8d9e83909b9c 100644 --- a/trunk/drivers/edac/edac_mc.h +++ b/trunk/drivers/edac/edac_mc.h @@ -18,6 +18,7 @@ #ifndef _EDAC_MC_H_ #define _EDAC_MC_H_ +#include #include #include #include @@ -78,17 +79,15 @@ extern int edac_debug_level; #endif /* !CONFIG_EDAC_DEBUG */ +#define edac_xstr(s) edac_str(s) +#define edac_str(s) #s +#define EDAC_MOD_STR edac_xstr(KBUILD_BASENAME) + #define BIT(x) (1 << (x)) #define PCI_VEND_DEV(vend, dev) PCI_VENDOR_ID_ ## vend, \ PCI_DEVICE_ID_ ## vend ## _ ## dev -#if defined(CONFIG_X86) && defined(CONFIG_PCI) -#define dev_name(dev) pci_name(to_pci_dev(dev)) -#else -#define dev_name(dev) to_platform_device(dev)->name -#endif - /* memory devices */ enum dev_type { DEV_UNKNOWN = 0, @@ -328,10 +327,10 @@ struct mem_ctl_info { struct csrow_info *csrows; /* * FIXME - what about controllers on other busses? - IDs must be - * unique. dev pointer should be sufficiently unique, but + * unique. pdev pointer should be sufficiently unique, but * BUS:SLOT.FUNC numbers may not be unique. */ - struct device *dev; + struct pci_dev *pdev; const char *mod_name; const char *mod_ver; const char *ctl_name; @@ -354,8 +353,6 @@ struct mem_ctl_info { struct completion kobj_complete; }; -#ifdef CONFIG_PCI - /* write all or some bits in a byte-register*/ static inline void pci_write_bits8(struct pci_dev *pdev, int offset, u8 value, u8 mask) @@ -404,16 +401,14 @@ static inline void pci_write_bits32(struct pci_dev *pdev, int offset, pci_write_config_dword(pdev, offset, value); } -#endif /* CONFIG_PCI */ - #ifdef CONFIG_EDAC_DEBUG void edac_mc_dump_channel(struct channel_info *chan); void edac_mc_dump_mci(struct mem_ctl_info *mci); void edac_mc_dump_csrow(struct csrow_info *csrow); #endif /* CONFIG_EDAC_DEBUG */ -extern int edac_mc_add_mc(struct mem_ctl_info *mci,int mc_idx); -extern struct mem_ctl_info * edac_mc_del_mc(struct device *dev); +extern int edac_mc_add_mc(struct mem_ctl_info *mci); +extern struct mem_ctl_info * edac_mc_del_mc(struct pci_dev *pdev); extern int edac_mc_find_csrow_by_page(struct mem_ctl_info *mci, unsigned long page); extern void edac_mc_scrub_block(unsigned long page, unsigned long offset, diff --git a/trunk/drivers/edac/i82860_edac.c b/trunk/drivers/edac/i82860_edac.c index e4bb298e613f..fd342163cf97 100644 --- a/trunk/drivers/edac/i82860_edac.c +++ b/trunk/drivers/edac/i82860_edac.c @@ -9,6 +9,7 @@ * by Thayne Harbaugh of Linux Networx. (http://lnxi.com) */ +#include #include #include #include @@ -16,9 +17,6 @@ #include #include "edac_mc.h" -#define I82860_REVISION " Ver: 2.0.1 " __DATE__ -#define EDAC_MOD_STR "i82860_edac" - #define i82860_printk(level, fmt, arg...) \ edac_printk(level, "i82860", fmt, ##arg) @@ -65,21 +63,17 @@ static struct pci_dev *mci_pdev = NULL; /* init dev: in case that AGP code static void i82860_get_error_info(struct mem_ctl_info *mci, struct i82860_error_info *info) { - struct pci_dev *pdev; - - pdev = to_pci_dev(mci->dev); - /* * This is a mess because there is no atomic way to read all the * registers at once and the registers can transition from CE being * overwritten by UE. */ - pci_read_config_word(pdev, I82860_ERRSTS, &info->errsts); - pci_read_config_dword(pdev, I82860_EAP, &info->eap); - pci_read_config_word(pdev, I82860_DERRCTL_STS, &info->derrsyn); - pci_read_config_word(pdev, I82860_ERRSTS, &info->errsts2); + pci_read_config_word(mci->pdev, I82860_ERRSTS, &info->errsts); + pci_read_config_dword(mci->pdev, I82860_EAP, &info->eap); + pci_read_config_word(mci->pdev, I82860_DERRCTL_STS, &info->derrsyn); + pci_read_config_word(mci->pdev, I82860_ERRSTS, &info->errsts2); - pci_write_bits16(pdev, I82860_ERRSTS, 0x0003, 0x0003); + pci_write_bits16(mci->pdev, I82860_ERRSTS, 0x0003, 0x0003); /* * If the error is the same for both reads then the first set of reads @@ -90,8 +84,8 @@ static void i82860_get_error_info(struct mem_ctl_info *mci, return; if ((info->errsts ^ info->errsts2) & 0x0003) { - pci_read_config_dword(pdev, I82860_EAP, &info->eap); - pci_read_config_word(pdev, I82860_DERRCTL_STS, + pci_read_config_dword(mci->pdev, I82860_EAP, &info->eap); + pci_read_config_word(mci->pdev, I82860_DERRCTL_STS, &info->derrsyn); } } @@ -133,51 +127,16 @@ static void i82860_check(struct mem_ctl_info *mci) i82860_process_error_info(mci, &info, 1); } -static void i82860_init_csrows(struct mem_ctl_info *mci, struct pci_dev *pdev) -{ - unsigned long last_cumul_size; - u16 mchcfg_ddim; /* DRAM Data Integrity Mode 0=none, 2=edac */ - u16 value; - u32 cumul_size; - struct csrow_info *csrow; - int index; - - pci_read_config_word(pdev, I82860_MCHCFG, &mchcfg_ddim); - mchcfg_ddim = mchcfg_ddim & 0x180; - last_cumul_size = 0; - - /* The group row boundary (GRA) reg values are boundary address - * for each DRAM row with a granularity of 16MB. GRA regs are - * cumulative; therefore GRA15 will contain the total memory contained - * in all eight rows. - */ - for (index = 0; index < mci->nr_csrows; index++) { - csrow = &mci->csrows[index]; - pci_read_config_word(pdev, I82860_GBA + index * 2, &value); - cumul_size = (value & I82860_GBA_MASK) << - (I82860_GBA_SHIFT - PAGE_SHIFT); - debugf3("%s(): (%d) cumul_size 0x%x\n", __func__, index, - cumul_size); - - if (cumul_size == last_cumul_size) - continue; /* not populated */ - - csrow->first_page = last_cumul_size; - csrow->last_page = cumul_size - 1; - csrow->nr_pages = cumul_size - last_cumul_size; - last_cumul_size = cumul_size; - csrow->grain = 1 << 12; /* I82860_EAP has 4KiB reolution */ - csrow->mtype = MEM_RMBS; - csrow->dtype = DEV_UNKNOWN; - csrow->edac_mode = mchcfg_ddim ? EDAC_SECDED : EDAC_NONE; - } -} - static int i82860_probe1(struct pci_dev *pdev, int dev_idx) { - struct mem_ctl_info *mci; + int rc = -ENODEV; + int index; + struct mem_ctl_info *mci = NULL; + unsigned long last_cumul_size; struct i82860_error_info discard; + u16 mchcfg_ddim; /* DRAM Data Integrity Mode 0=none,2=edac */ + /* RDRAM has channels but these don't map onto the abstractions that edac uses. The device groups from the GRA registers seem to map reasonably @@ -192,35 +151,67 @@ static int i82860_probe1(struct pci_dev *pdev, int dev_idx) return -ENOMEM; debugf3("%s(): init mci\n", __func__); - mci->dev = &pdev->dev; + mci->pdev = pdev; mci->mtype_cap = MEM_FLAG_DDR; + mci->edac_ctl_cap = EDAC_FLAG_NONE | EDAC_FLAG_SECDED; /* I"m not sure about this but I think that all RDRAM is SECDED */ mci->edac_cap = EDAC_FLAG_SECDED; + /* adjust FLAGS */ + mci->mod_name = EDAC_MOD_STR; - mci->mod_ver = I82860_REVISION; + mci->mod_ver = "$Revision: 1.1.2.6 $"; mci->ctl_name = i82860_devs[dev_idx].ctl_name; mci->edac_check = i82860_check; mci->ctl_page_to_phys = NULL; - i82860_init_csrows(mci, pdev); - i82860_get_error_info(mci, &discard); /* clear counters */ - /* Here we assume that we will never see multiple instances of this - * type of memory controller. The ID is therefore hardcoded to 0. + pci_read_config_word(mci->pdev, I82860_MCHCFG, &mchcfg_ddim); + mchcfg_ddim = mchcfg_ddim & 0x180; + + /* + * The group row boundary (GRA) reg values are boundary address + * for each DRAM row with a granularity of 16MB. GRA regs are + * cumulative; therefore GRA15 will contain the total memory contained + * in all eight rows. */ - if (edac_mc_add_mc(mci,0)) { - debugf3("%s(): failed edac_mc_add_mc()\n", __func__); - goto fail; + for (last_cumul_size = index = 0; index < mci->nr_csrows; index++) { + u16 value; + u32 cumul_size; + struct csrow_info *csrow = &mci->csrows[index]; + + pci_read_config_word(mci->pdev, I82860_GBA + index * 2, + &value); + + cumul_size = (value & I82860_GBA_MASK) << + (I82860_GBA_SHIFT - PAGE_SHIFT); + debugf3("%s(): (%d) cumul_size 0x%x\n", __func__, index, + cumul_size); + + if (cumul_size == last_cumul_size) + continue; /* not populated */ + + csrow->first_page = last_cumul_size; + csrow->last_page = cumul_size - 1; + csrow->nr_pages = cumul_size - last_cumul_size; + last_cumul_size = cumul_size; + csrow->grain = 1 << 12; /* I82860_EAP has 4KiB reolution */ + csrow->mtype = MEM_RMBS; + csrow->dtype = DEV_UNKNOWN; + csrow->edac_mode = mchcfg_ddim ? EDAC_SECDED : EDAC_NONE; } - /* get this far and it's successful */ - debugf3("%s(): success\n", __func__); + i82860_get_error_info(mci, &discard); /* clear counters */ - return 0; + if (edac_mc_add_mc(mci)) { + debugf3("%s(): failed edac_mc_add_mc()\n", __func__); + edac_mc_free(mci); + } else { + /* get this far and it's successful */ + debugf3("%s(): success\n", __func__); + rc = 0; + } -fail: - edac_mc_free(mci); - return -ENODEV; + return rc; } /* returns count (>= 0), or negative on error */ @@ -249,7 +240,7 @@ static void __devexit i82860_remove_one(struct pci_dev *pdev) debugf0("%s()\n", __func__); - if ((mci = edac_mc_del_mc(&pdev->dev)) == NULL) + if ((mci = edac_mc_del_mc(pdev)) == NULL) return; edac_mc_free(mci); diff --git a/trunk/drivers/edac/i82875p_edac.c b/trunk/drivers/edac/i82875p_edac.c index 161fe09a6d38..0aec92698f17 100644 --- a/trunk/drivers/edac/i82875p_edac.c +++ b/trunk/drivers/edac/i82875p_edac.c @@ -13,6 +13,7 @@ * Note: E7210 appears same as D82875P - zhenyu.z.wang at intel.com */ +#include #include #include #include @@ -20,9 +21,6 @@ #include #include "edac_mc.h" -#define I82875P_REVISION " Ver: 2.0.1 " __DATE__ -#define EDAC_MOD_STR "i82875p_edac" - #define i82875p_printk(level, fmt, arg...) \ edac_printk(level, "i82875p", fmt, ##arg) @@ -187,22 +185,18 @@ static int i82875p_registered = 1; static void i82875p_get_error_info(struct mem_ctl_info *mci, struct i82875p_error_info *info) { - struct pci_dev *pdev; - - pdev = to_pci_dev(mci->dev); - /* * This is a mess because there is no atomic way to read all the * registers at once and the registers can transition from CE being * overwritten by UE. */ - pci_read_config_word(pdev, I82875P_ERRSTS, &info->errsts); - pci_read_config_dword(pdev, I82875P_EAP, &info->eap); - pci_read_config_byte(pdev, I82875P_DES, &info->des); - pci_read_config_byte(pdev, I82875P_DERRSYN, &info->derrsyn); - pci_read_config_word(pdev, I82875P_ERRSTS, &info->errsts2); + pci_read_config_word(mci->pdev, I82875P_ERRSTS, &info->errsts); + pci_read_config_dword(mci->pdev, I82875P_EAP, &info->eap); + pci_read_config_byte(mci->pdev, I82875P_DES, &info->des); + pci_read_config_byte(mci->pdev, I82875P_DERRSYN, &info->derrsyn); + pci_read_config_word(mci->pdev, I82875P_ERRSTS, &info->errsts2); - pci_write_bits16(pdev, I82875P_ERRSTS, 0x0081, 0x0081); + pci_write_bits16(mci->pdev, I82875P_ERRSTS, 0x0081, 0x0081); /* * If the error is the same then we can for both reads then @@ -214,9 +208,9 @@ static void i82875p_get_error_info(struct mem_ctl_info *mci, return; if ((info->errsts ^ info->errsts2) & 0x0081) { - pci_read_config_dword(pdev, I82875P_EAP, &info->eap); - pci_read_config_byte(pdev, I82875P_DES, &info->des); - pci_read_config_byte(pdev, I82875P_DERRSYN, + pci_read_config_dword(mci->pdev, I82875P_EAP, &info->eap); + pci_read_config_byte(mci->pdev, I82875P_DES, &info->des); + pci_read_config_byte(mci->pdev, I82875P_DERRSYN, &info->derrsyn); } } @@ -265,109 +259,116 @@ static void i82875p_check(struct mem_ctl_info *mci) extern int pci_proc_attach_device(struct pci_dev *); #endif -/* Return 0 on success or 1 on failure. */ -static int i82875p_setup_overfl_dev(struct pci_dev *pdev, - struct pci_dev **ovrfl_pdev, void __iomem **ovrfl_window) +static int i82875p_probe1(struct pci_dev *pdev, int dev_idx) { - struct pci_dev *dev; - void __iomem *window; + int rc = -ENODEV; + int index; + struct mem_ctl_info *mci = NULL; + struct i82875p_pvt *pvt = NULL; + unsigned long last_cumul_size; + struct pci_dev *ovrfl_pdev; + void __iomem *ovrfl_window = NULL; + u32 drc; + u32 drc_chan; /* Number of channels 0=1chan,1=2chan */ + u32 nr_chans; + u32 drc_ddim; /* DRAM Data Integrity Mode 0=none,2=edac */ + struct i82875p_error_info discard; - *ovrfl_pdev = NULL; - *ovrfl_window = NULL; - dev = pci_get_device(PCI_VEND_DEV(INTEL, 82875_6), NULL); + debugf0("%s()\n", __func__); + ovrfl_pdev = pci_get_device(PCI_VEND_DEV(INTEL, 82875_6), NULL); - if (dev == NULL) { - /* Intel tells BIOS developers to hide device 6 which + if (!ovrfl_pdev) { + /* + * Intel tells BIOS developers to hide device 6 which * configures the overflow device access containing * the DRBs - this is where we expose device 6. * http://www.x86-secret.com/articles/tweak/pat/patsecrets-2.htm */ pci_write_bits8(pdev, 0xf4, 0x2, 0x2); - dev = pci_scan_single_device(pdev->bus, PCI_DEVFN(6, 0)); + ovrfl_pdev = + pci_scan_single_device(pdev->bus, PCI_DEVFN(6, 0)); - if (dev == NULL) - return 1; + if (!ovrfl_pdev) + return -ENODEV; } - *ovrfl_pdev = dev; - #ifdef CONFIG_PROC_FS - if ((dev->procent == NULL) && pci_proc_attach_device(dev)) { - i82875p_printk(KERN_ERR, "%s(): Failed to attach overflow " - "device\n", __func__); - return 1; + if (!ovrfl_pdev->procent && pci_proc_attach_device(ovrfl_pdev)) { + i82875p_printk(KERN_ERR, + "%s(): Failed to attach overflow device\n", __func__); + return -ENODEV; } -#endif /* CONFIG_PROC_FS */ - if (pci_enable_device(dev)) { - i82875p_printk(KERN_ERR, "%s(): Failed to enable overflow " - "device\n", __func__); - return 1; +#endif + /* CONFIG_PROC_FS */ + if (pci_enable_device(ovrfl_pdev)) { + i82875p_printk(KERN_ERR, + "%s(): Failed to enable overflow device\n", __func__); + return -ENODEV; } - if (pci_request_regions(dev, pci_name(dev))) { + if (pci_request_regions(ovrfl_pdev, pci_name(ovrfl_pdev))) { #ifdef CORRECT_BIOS goto fail0; #endif } /* cache is irrelevant for PCI bus reads/writes */ - window = ioremap_nocache(pci_resource_start(dev, 0), - pci_resource_len(dev, 0)); + ovrfl_window = ioremap_nocache(pci_resource_start(ovrfl_pdev, 0), + pci_resource_len(ovrfl_pdev, 0)); - if (window == NULL) { + if (!ovrfl_window) { i82875p_printk(KERN_ERR, "%s(): Failed to ioremap bar6\n", - __func__); + __func__); goto fail1; } - *ovrfl_window = window; - return 0; - -fail1: - pci_release_regions(dev); - -#ifdef CORRECT_BIOS -fail0: - pci_disable_device(dev); -#endif - /* NOTE: the ovrfl proc entry and pci_dev are intentionally left */ - return 1; -} - + /* need to find out the number of channels */ + drc = readl(ovrfl_window + I82875P_DRC); + drc_chan = ((drc >> 21) & 0x1); + nr_chans = drc_chan + 1; -/* Return 1 if dual channel mode is active. Else return 0. */ -static inline int dual_channel_active(u32 drc) -{ - return (drc >> 21) & 0x1; -} + drc_ddim = (drc >> 18) & 0x1; + mci = edac_mc_alloc(sizeof(*pvt), I82875P_NR_CSROWS(nr_chans), + nr_chans); + if (!mci) { + rc = -ENOMEM; + goto fail2; + } -static void i82875p_init_csrows(struct mem_ctl_info *mci, - struct pci_dev *pdev, void __iomem *ovrfl_window, u32 drc) -{ - struct csrow_info *csrow; - unsigned long last_cumul_size; - u8 value; - u32 drc_ddim; /* DRAM Data Integrity Mode 0=none,2=edac */ - u32 cumul_size; - int index; + debugf3("%s(): init mci\n", __func__); + mci->pdev = pdev; + mci->mtype_cap = MEM_FLAG_DDR; + mci->edac_ctl_cap = EDAC_FLAG_NONE | EDAC_FLAG_SECDED; + mci->edac_cap = EDAC_FLAG_UNKNOWN; + /* adjust FLAGS */ - drc_ddim = (drc >> 18) & 0x1; - last_cumul_size = 0; + mci->mod_name = EDAC_MOD_STR; + mci->mod_ver = "$Revision: 1.5.2.11 $"; + mci->ctl_name = i82875p_devs[dev_idx].ctl_name; + mci->edac_check = i82875p_check; + mci->ctl_page_to_phys = NULL; + debugf3("%s(): init pvt\n", __func__); + pvt = (struct i82875p_pvt *) mci->pvt_info; + pvt->ovrfl_pdev = ovrfl_pdev; + pvt->ovrfl_window = ovrfl_window; - /* The dram row boundary (DRB) reg values are boundary address + /* + * The dram row boundary (DRB) reg values are boundary address * for each DRAM row with a granularity of 32 or 64MB (single/dual * channel operation). DRB regs are cumulative; therefore DRB7 will * contain the total memory contained in all eight rows. */ - - for (index = 0; index < mci->nr_csrows; index++) { - csrow = &mci->csrows[index]; + for (last_cumul_size = index = 0; index < mci->nr_csrows; index++) { + u8 value; + u32 cumul_size; + struct csrow_info *csrow = &mci->csrows[index]; value = readb(ovrfl_window + I82875P_DRB + index); cumul_size = value << (I82875P_DRB_SHIFT - PAGE_SHIFT); debugf3("%s(): (%d) cumul_size 0x%x\n", __func__, index, cumul_size); + if (cumul_size == last_cumul_size) continue; /* not populated */ @@ -375,75 +376,35 @@ static void i82875p_init_csrows(struct mem_ctl_info *mci, csrow->last_page = cumul_size - 1; csrow->nr_pages = cumul_size - last_cumul_size; last_cumul_size = cumul_size; - csrow->grain = 1 << 12; /* I82875P_EAP has 4KiB reolution */ + csrow->grain = 1 << 12; /* I82875P_EAP has 4KiB reolution */ csrow->mtype = MEM_DDR; csrow->dtype = DEV_UNKNOWN; csrow->edac_mode = drc_ddim ? EDAC_SECDED : EDAC_NONE; } -} - -static int i82875p_probe1(struct pci_dev *pdev, int dev_idx) -{ - int rc = -ENODEV; - struct mem_ctl_info *mci; - struct i82875p_pvt *pvt; - struct pci_dev *ovrfl_pdev; - void __iomem *ovrfl_window; - u32 drc; - u32 nr_chans; - struct i82875p_error_info discard; - - debugf0("%s()\n", __func__); - ovrfl_pdev = pci_get_device(PCI_VEND_DEV(INTEL, 82875_6), NULL); - - if (i82875p_setup_overfl_dev(pdev, &ovrfl_pdev, &ovrfl_window)) - return -ENODEV; - drc = readl(ovrfl_window + I82875P_DRC); - nr_chans = dual_channel_active(drc) + 1; - mci = edac_mc_alloc(sizeof(*pvt), I82875P_NR_CSROWS(nr_chans), - nr_chans); - - if (!mci) { - rc = -ENOMEM; - goto fail0; - } - debugf3("%s(): init mci\n", __func__); - mci->dev = &pdev->dev; - mci->mtype_cap = MEM_FLAG_DDR; - mci->edac_ctl_cap = EDAC_FLAG_NONE | EDAC_FLAG_SECDED; - mci->edac_cap = EDAC_FLAG_UNKNOWN; - mci->mod_name = EDAC_MOD_STR; - mci->mod_ver = I82875P_REVISION; - mci->ctl_name = i82875p_devs[dev_idx].ctl_name; - mci->edac_check = i82875p_check; - mci->ctl_page_to_phys = NULL; - debugf3("%s(): init pvt\n", __func__); - pvt = (struct i82875p_pvt *) mci->pvt_info; - pvt->ovrfl_pdev = ovrfl_pdev; - pvt->ovrfl_window = ovrfl_window; - i82875p_init_csrows(mci, pdev, ovrfl_window, drc); i82875p_get_error_info(mci, &discard); /* clear counters */ - /* Here we assume that we will never see multiple instances of this - * type of memory controller. The ID is therefore hardcoded to 0. - */ - if (edac_mc_add_mc(mci,0)) { + if (edac_mc_add_mc(mci)) { debugf3("%s(): failed edac_mc_add_mc()\n", __func__); - goto fail1; + goto fail3; } /* get this far and it's successful */ debugf3("%s(): success\n", __func__); return 0; -fail1: +fail3: edac_mc_free(mci); -fail0: +fail2: iounmap(ovrfl_window); + +fail1: pci_release_regions(ovrfl_pdev); +#ifdef CORRECT_BIOS +fail0: +#endif pci_disable_device(ovrfl_pdev); /* NOTE: the ovrfl proc entry and pci_dev are intentionally left */ return rc; @@ -476,7 +437,7 @@ static void __devexit i82875p_remove_one(struct pci_dev *pdev) debugf0("%s()\n", __func__); - if ((mci = edac_mc_del_mc(&pdev->dev)) == NULL) + if ((mci = edac_mc_del_mc(pdev)) == NULL) return; pvt = (struct i82875p_pvt *) mci->pvt_info; diff --git a/trunk/drivers/edac/r82600_edac.c b/trunk/drivers/edac/r82600_edac.c index a49cf0a39398..2c29fafe67c7 100644 --- a/trunk/drivers/edac/r82600_edac.c +++ b/trunk/drivers/edac/r82600_edac.c @@ -15,6 +15,7 @@ * references to this document given in [] */ +#include #include #include #include @@ -22,9 +23,6 @@ #include #include "edac_mc.h" -#define R82600_REVISION " Ver: 2.0.1 " __DATE__ -#define EDAC_MOD_STR "r82600_edac" - #define r82600_printk(level, fmt, arg...) \ edac_printk(level, "r82600", fmt, ##arg) @@ -136,20 +134,17 @@ static unsigned int disable_hardware_scrub = 0; static void r82600_get_error_info (struct mem_ctl_info *mci, struct r82600_error_info *info) { - struct pci_dev *pdev; - - pdev = to_pci_dev(mci->dev); - pci_read_config_dword(pdev, R82600_EAP, &info->eapr); + pci_read_config_dword(mci->pdev, R82600_EAP, &info->eapr); if (info->eapr & BIT(0)) /* Clear error to allow next error to be reported [p.62] */ - pci_write_bits32(pdev, R82600_EAP, + pci_write_bits32(mci->pdev, R82600_EAP, ((u32) BIT(0) & (u32) BIT(1)), ((u32) BIT(0) & (u32) BIT(1))); if (info->eapr & BIT(1)) /* Clear error to allow next error to be reported [p.62] */ - pci_write_bits32(pdev, R82600_EAP, + pci_write_bits32(mci->pdev, R82600_EAP, ((u32) BIT(0) & (u32) BIT(1)), ((u32) BIT(0) & (u32) BIT(1))); } @@ -205,72 +200,25 @@ static void r82600_check(struct mem_ctl_info *mci) r82600_process_error_info(mci, &info, 1); } -static inline int ecc_enabled(u8 dramcr) -{ - return dramcr & BIT(5); -} - -static void r82600_init_csrows(struct mem_ctl_info *mci, struct pci_dev *pdev, - u8 dramcr) -{ - struct csrow_info *csrow; - int index; - u8 drbar; /* SDRAM Row Boundry Address Register */ - u32 row_high_limit, row_high_limit_last; - u32 reg_sdram, ecc_on, row_base; - - ecc_on = ecc_enabled(dramcr); - reg_sdram = dramcr & BIT(4); - row_high_limit_last = 0; - - for (index = 0; index < mci->nr_csrows; index++) { - csrow = &mci->csrows[index]; - - /* find the DRAM Chip Select Base address and mask */ - pci_read_config_byte(pdev, R82600_DRBA + index, &drbar); - - debugf1("%s() Row=%d DRBA = %#0x\n", __func__, index, drbar); - - row_high_limit = ((u32) drbar << 24); -/* row_high_limit = ((u32)drbar << 24) | 0xffffffUL; */ - - debugf1("%s() Row=%d, Boundry Address=%#0x, Last = %#0x\n", - __func__, index, row_high_limit, row_high_limit_last); - - /* Empty row [p.57] */ - if (row_high_limit == row_high_limit_last) - continue; - - row_base = row_high_limit_last; - - csrow->first_page = row_base >> PAGE_SHIFT; - csrow->last_page = (row_high_limit >> PAGE_SHIFT) - 1; - csrow->nr_pages = csrow->last_page - csrow->first_page + 1; - /* Error address is top 19 bits - so granularity is * - * 14 bits */ - csrow->grain = 1 << 14; - csrow->mtype = reg_sdram ? MEM_RDDR : MEM_DDR; - /* FIXME - check that this is unknowable with this chipset */ - csrow->dtype = DEV_UNKNOWN; - - /* Mode is global on 82600 */ - csrow->edac_mode = ecc_on ? EDAC_SECDED : EDAC_NONE; - row_high_limit_last = row_high_limit; - } -} - static int r82600_probe1(struct pci_dev *pdev, int dev_idx) { - struct mem_ctl_info *mci; + int rc = -ENODEV; + int index; + struct mem_ctl_info *mci = NULL; u8 dramcr; + u32 ecc_on; + u32 reg_sdram; u32 eapr; u32 scrub_disabled; u32 sdram_refresh_rate; + u32 row_high_limit_last = 0; struct r82600_error_info discard; debugf0("%s()\n", __func__); pci_read_config_byte(pdev, R82600_DRAMC, &dramcr); pci_read_config_dword(pdev, R82600_EAP, &eapr); + ecc_on = dramcr & BIT(5); + reg_sdram = dramcr & BIT(4); scrub_disabled = eapr & BIT(31); sdram_refresh_rate = dramcr & (BIT(0) | BIT(1)); debugf2("%s(): sdram refresh rate = %#0x\n", __func__, @@ -278,11 +226,13 @@ static int r82600_probe1(struct pci_dev *pdev, int dev_idx) debugf2("%s(): DRAMC register = %#0x\n", __func__, dramcr); mci = edac_mc_alloc(0, R82600_NR_CSROWS, R82600_NR_CHANS); - if (mci == NULL) - return -ENOMEM; + if (mci == NULL) { + rc = -ENOMEM; + goto fail; + } debugf0("%s(): mci = %p\n", __func__, mci); - mci->dev = &pdev->dev; + mci->pdev = pdev; mci->mtype_cap = MEM_FLAG_RDDR | MEM_FLAG_DDR; mci->edac_ctl_cap = EDAC_FLAG_NONE | EDAC_FLAG_EC | EDAC_FLAG_SECDED; /* FIXME try to work out if the chip leads have been used for COM2 @@ -295,7 +245,7 @@ static int r82600_probe1(struct pci_dev *pdev, int dev_idx) * is possible. */ mci->edac_cap = EDAC_FLAG_NONE | EDAC_FLAG_EC | EDAC_FLAG_SECDED; - if (ecc_enabled(dramcr)) { + if (ecc_on) { if (scrub_disabled) debugf3("%s(): mci = %p - Scrubbing disabled! EAP: " "%#0x\n", __func__, mci, eapr); @@ -303,17 +253,53 @@ static int r82600_probe1(struct pci_dev *pdev, int dev_idx) mci->edac_cap = EDAC_FLAG_NONE; mci->mod_name = EDAC_MOD_STR; - mci->mod_ver = R82600_REVISION; + mci->mod_ver = "$Revision: 1.1.2.6 $"; mci->ctl_name = "R82600"; mci->edac_check = r82600_check; mci->ctl_page_to_phys = NULL; - r82600_init_csrows(mci, pdev, dramcr); + + for (index = 0; index < mci->nr_csrows; index++) { + struct csrow_info *csrow = &mci->csrows[index]; + u8 drbar; /* sDram Row Boundry Address Register */ + u32 row_high_limit; + u32 row_base; + + /* find the DRAM Chip Select Base address and mask */ + pci_read_config_byte(mci->pdev, R82600_DRBA + index, &drbar); + + debugf1("MC%d: %s() Row=%d DRBA = %#0x\n", mci->mc_idx, + __func__, index, drbar); + + row_high_limit = ((u32) drbar << 24); +/* row_high_limit = ((u32)drbar << 24) | 0xffffffUL; */ + + debugf1("MC%d: %s() Row=%d, Boundry Address=%#0x, Last = " + "%#0x \n", mci->mc_idx, __func__, index, + row_high_limit, row_high_limit_last); + + /* Empty row [p.57] */ + if (row_high_limit == row_high_limit_last) + continue; + + row_base = row_high_limit_last; + csrow->first_page = row_base >> PAGE_SHIFT; + csrow->last_page = (row_high_limit >> PAGE_SHIFT) - 1; + csrow->nr_pages = csrow->last_page - csrow->first_page + 1; + /* Error address is top 19 bits - so granularity is * + * 14 bits */ + csrow->grain = 1 << 14; + csrow->mtype = reg_sdram ? MEM_RDDR : MEM_DDR; + /* FIXME - check that this is unknowable with this chipset */ + csrow->dtype = DEV_UNKNOWN; + + /* Mode is global on 82600 */ + csrow->edac_mode = ecc_on ? EDAC_SECDED : EDAC_NONE; + row_high_limit_last = row_high_limit; + } + r82600_get_error_info(mci, &discard); /* clear counters */ - /* Here we assume that we will never see multiple instances of this - * type of memory controller. The ID is therefore hardcoded to 0. - */ - if (edac_mc_add_mc(mci,0)) { + if (edac_mc_add_mc(mci)) { debugf3("%s(): failed edac_mc_add_mc()\n", __func__); goto fail; } @@ -323,15 +309,17 @@ static int r82600_probe1(struct pci_dev *pdev, int dev_idx) if (disable_hardware_scrub) { debugf3("%s(): Disabling Hardware Scrub (scrub on error)\n", __func__); - pci_write_bits32(pdev, R82600_EAP, BIT(31), BIT(31)); + pci_write_bits32(mci->pdev, R82600_EAP, BIT(31), BIT(31)); } debugf3("%s(): success\n", __func__); return 0; fail: - edac_mc_free(mci); - return -ENODEV; + if (mci) + edac_mc_free(mci); + + return rc; } /* returns count (>= 0), or negative on error */ @@ -350,7 +338,7 @@ static void __devexit r82600_remove_one(struct pci_dev *pdev) debugf0("%s()\n", __func__); - if ((mci = edac_mc_del_mc(&pdev->dev)) == NULL) + if ((mci = edac_mc_del_mc(pdev)) == NULL) return; edac_mc_free(mci); diff --git a/trunk/drivers/eisa/virtual_root.c b/trunk/drivers/eisa/virtual_root.c index 9b4fcac03ad5..0f97a0cb0ff4 100644 --- a/trunk/drivers/eisa/virtual_root.c +++ b/trunk/drivers/eisa/virtual_root.c @@ -7,6 +7,7 @@ * This code is released under the GPL version 2. */ +#include #include #include #include diff --git a/trunk/drivers/fc4/fc_syms.c b/trunk/drivers/fc4/fc_syms.c index 8700a8076d04..ed85dfcef69a 100644 --- a/trunk/drivers/fc4/fc_syms.c +++ b/trunk/drivers/fc4/fc_syms.c @@ -2,6 +2,7 @@ * We should not even be trying to compile this if we are not doing * a module. */ +#include #include #ifdef CONFIG_MODULES diff --git a/trunk/drivers/firmware/dell_rbu.c b/trunk/drivers/firmware/dell_rbu.c index 23b086685453..fdb8b042e64d 100644 --- a/trunk/drivers/firmware/dell_rbu.c +++ b/trunk/drivers/firmware/dell_rbu.c @@ -34,6 +34,7 @@ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ +#include #include #include #include diff --git a/trunk/drivers/firmware/efivars.c b/trunk/drivers/firmware/efivars.c index 8ebce1c03ad7..9b7e4d52ffd4 100644 --- a/trunk/drivers/firmware/efivars.c +++ b/trunk/drivers/firmware/efivars.c @@ -66,6 +66,7 @@ */ #include +#include #include #include #include diff --git a/trunk/drivers/firmware/pcdp.c b/trunk/drivers/firmware/pcdp.c index c2ad72fefd9d..c37baf9448bc 100644 --- a/trunk/drivers/firmware/pcdp.c +++ b/trunk/drivers/firmware/pcdp.c @@ -11,6 +11,7 @@ * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/drivers/hwmon/hwmon-vid.c b/trunk/drivers/hwmon/hwmon-vid.c index 9d67320e6840..a6764ff00803 100644 --- a/trunk/drivers/hwmon/hwmon-vid.c +++ b/trunk/drivers/hwmon/hwmon-vid.c @@ -22,6 +22,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/drivers/hwmon/w83792d.c b/trunk/drivers/hwmon/w83792d.c index 7576ec9426a3..e407c74bda35 100644 --- a/trunk/drivers/hwmon/w83792d.c +++ b/trunk/drivers/hwmon/w83792d.c @@ -35,6 +35,7 @@ w83792d 9 7 7 3 0x7a 0x5ca3 yes no */ +#include #include #include #include diff --git a/trunk/drivers/i2c/busses/i2c-i801.c b/trunk/drivers/i2c/busses/i2c-i801.c index 7be1d0a3e8f8..8b46ef7d9ff8 100644 --- a/trunk/drivers/i2c/busses/i2c-i801.c +++ b/trunk/drivers/i2c/busses/i2c-i801.c @@ -494,8 +494,8 @@ static int __devinit i801_probe(struct pci_dev *dev, const struct pci_device_id err = pci_request_region(dev, SMBBAR, i801_driver.name); if (err) { dev_err(&dev->dev, "Failed to request SMBus region " - "0x%lx-0x%Lx\n", i801_smba, - (unsigned long long)pci_resource_end(dev, SMBBAR)); + "0x%lx-0x%lx\n", i801_smba, + pci_resource_end(dev, SMBBAR)); goto exit; } diff --git a/trunk/drivers/i2c/busses/i2c-ibm_iic.c b/trunk/drivers/i2c/busses/i2c-ibm_iic.c index 0599bbd65d93..87fae937e666 100644 --- a/trunk/drivers/i2c/busses/i2c-ibm_iic.c +++ b/trunk/drivers/i2c/busses/i2c-ibm_iic.c @@ -28,6 +28,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/i2c/busses/i2c-iop3xx.c b/trunk/drivers/i2c/busses/i2c-iop3xx.c index aca7e1668605..d00a02fc23e4 100644 --- a/trunk/drivers/i2c/busses/i2c-iop3xx.c +++ b/trunk/drivers/i2c/busses/i2c-iop3xx.c @@ -26,6 +26,7 @@ * the Free Software Foundation, version 2. */ +#include #include #include #include diff --git a/trunk/drivers/i2c/busses/i2c-mpc.c b/trunk/drivers/i2c/busses/i2c-mpc.c index de93601de178..2721e4c8184a 100644 --- a/trunk/drivers/i2c/busses/i2c-mpc.c +++ b/trunk/drivers/i2c/busses/i2c-mpc.c @@ -13,6 +13,7 @@ * warranty of any kind, whether express or implied. */ +#include #include #include #include diff --git a/trunk/drivers/i2c/busses/i2c-powermac.c b/trunk/drivers/i2c/busses/i2c-powermac.c index 2a0b3be7cdd0..df786eb55295 100644 --- a/trunk/drivers/i2c/busses/i2c-powermac.c +++ b/trunk/drivers/i2c/busses/i2c-powermac.c @@ -20,6 +20,7 @@ */ +#include #include #include #include diff --git a/trunk/drivers/i2c/busses/i2c-s3c2410.c b/trunk/drivers/i2c/busses/i2c-s3c2410.c index 512b8791c328..f7d40f8e5f5c 100644 --- a/trunk/drivers/i2c/busses/i2c-s3c2410.c +++ b/trunk/drivers/i2c/busses/i2c-s3c2410.c @@ -20,6 +20,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include #include diff --git a/trunk/drivers/i2c/busses/scx200_i2c.c b/trunk/drivers/i2c/busses/scx200_i2c.c index cb3ef5ac99fd..27fbfecc414f 100644 --- a/trunk/drivers/i2c/busses/scx200_i2c.c +++ b/trunk/drivers/i2c/busses/scx200_i2c.c @@ -21,6 +21,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/drivers/i2c/chips/isp1301_omap.c b/trunk/drivers/i2c/chips/isp1301_omap.c index b638ac6e59f4..e6f1ab7b913c 100644 --- a/trunk/drivers/i2c/chips/isp1301_omap.c +++ b/trunk/drivers/i2c/chips/isp1301_omap.c @@ -21,6 +21,7 @@ #undef DEBUG #undef VERBOSE +#include #include #include #include diff --git a/trunk/drivers/i2c/chips/tps65010.c b/trunk/drivers/i2c/chips/tps65010.c index e27ee12245d3..179b1e022d80 100644 --- a/trunk/drivers/i2c/chips/tps65010.c +++ b/trunk/drivers/i2c/chips/tps65010.c @@ -19,6 +19,7 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/drivers/ide/arm/icside.c b/trunk/drivers/ide/arm/icside.c index 8a1c27f28692..308897e57e4d 100644 --- a/trunk/drivers/ide/arm/icside.c +++ b/trunk/drivers/ide/arm/icside.c @@ -6,6 +6,7 @@ * Please note that this platform does not support 32-bit IDE IO. */ +#include #include #include #include diff --git a/trunk/drivers/ide/cris/ide-cris.c b/trunk/drivers/ide/cris/ide-cris.c index 5797e0b5a132..cd15e6260510 100644 --- a/trunk/drivers/ide/cris/ide-cris.c +++ b/trunk/drivers/ide/cris/ide-cris.c @@ -19,6 +19,7 @@ #undef REALLY_SLOW_IO /* most systems can safely undef this */ +#include #include #include #include diff --git a/trunk/drivers/ide/h8300/ide-h8300.c b/trunk/drivers/ide/h8300/ide-h8300.c index 15955996a1f3..fb91cb8bf2d2 100644 --- a/trunk/drivers/ide/h8300/ide-h8300.c +++ b/trunk/drivers/ide/h8300/ide-h8300.c @@ -5,6 +5,7 @@ #include #include +#include #include #include diff --git a/trunk/drivers/ide/ide-cd.c b/trunk/drivers/ide/ide-cd.c index 654d4cd09847..bfafd4846a08 100644 --- a/trunk/drivers/ide/ide-cd.c +++ b/trunk/drivers/ide/ide-cd.c @@ -301,6 +301,7 @@ #define IDECD_VERSION "4.61" +#include #include #include #include diff --git a/trunk/drivers/ide/ide-disk.c b/trunk/drivers/ide/ide-disk.c index f712e4cfd9dc..d0227c39ced1 100644 --- a/trunk/drivers/ide/ide-disk.c +++ b/trunk/drivers/ide/ide-disk.c @@ -47,6 +47,7 @@ //#define DEBUG +#include #include #include #include diff --git a/trunk/drivers/ide/ide-dma.c b/trunk/drivers/ide/ide-dma.c index 98918fb6b2ce..783a2475ee8b 100644 --- a/trunk/drivers/ide/ide-dma.c +++ b/trunk/drivers/ide/ide-dma.c @@ -74,6 +74,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/ide/ide-floppy.c b/trunk/drivers/ide/ide-floppy.c index 6ca3476d02c7..68628327c0f5 100644 --- a/trunk/drivers/ide/ide-floppy.c +++ b/trunk/drivers/ide/ide-floppy.c @@ -82,6 +82,7 @@ #define IDEFLOPPY_VERSION "0.99.newide" +#include #include #include #include diff --git a/trunk/drivers/ide/ide-io.c b/trunk/drivers/ide/ide-io.c index 7dba9992ad30..26ceab1e90bb 100644 --- a/trunk/drivers/ide/ide-io.c +++ b/trunk/drivers/ide/ide-io.c @@ -24,6 +24,7 @@ */ +#include #include #include #include diff --git a/trunk/drivers/ide/ide-iops.c b/trunk/drivers/ide/ide-iops.c index 657165297dc7..32117f0ec5c0 100644 --- a/trunk/drivers/ide/ide-iops.c +++ b/trunk/drivers/ide/ide-iops.c @@ -6,6 +6,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/ide/ide-lib.c b/trunk/drivers/ide/ide-lib.c index 1feff23487d4..7ddb11828731 100644 --- a/trunk/drivers/ide/ide-lib.c +++ b/trunk/drivers/ide/ide-lib.c @@ -1,3 +1,4 @@ +#include #include #include #include diff --git a/trunk/drivers/ide/ide-probe.c b/trunk/drivers/ide/ide-probe.c index c5f71ac28d14..0d5038a28560 100644 --- a/trunk/drivers/ide/ide-probe.c +++ b/trunk/drivers/ide/ide-probe.c @@ -33,6 +33,7 @@ #undef REALLY_SLOW_IO /* most systems can safely undef this */ +#include #include #include #include diff --git a/trunk/drivers/ide/ide-proc.c b/trunk/drivers/ide/ide-proc.c index c12f1b71e934..84665e2ba3c8 100644 --- a/trunk/drivers/ide/ide-proc.c +++ b/trunk/drivers/ide/ide-proc.c @@ -22,6 +22,7 @@ * */ +#include #include #include diff --git a/trunk/drivers/ide/ide-tape.c b/trunk/drivers/ide/ide-tape.c index 7067ab997927..4b91101e12b7 100644 --- a/trunk/drivers/ide/ide-tape.c +++ b/trunk/drivers/ide/ide-tape.c @@ -424,6 +424,7 @@ #define IDETAPE_VERSION "1.19" +#include #include #include #include diff --git a/trunk/drivers/ide/ide-taskfile.c b/trunk/drivers/ide/ide-taskfile.c index 04547eb0833f..a839b2a8f6f4 100644 --- a/trunk/drivers/ide/ide-taskfile.c +++ b/trunk/drivers/ide/ide-taskfile.c @@ -27,6 +27,7 @@ * request. */ +#include #include #include #include diff --git a/trunk/drivers/ide/ide.c b/trunk/drivers/ide/ide.c index 05fbd9298db7..1cdf44205162 100644 --- a/trunk/drivers/ide/ide.c +++ b/trunk/drivers/ide/ide.c @@ -130,6 +130,7 @@ #define _IDE_C /* Tell ide.h it's really us */ +#include #include #include #include diff --git a/trunk/drivers/ide/legacy/ali14xx.c b/trunk/drivers/ide/legacy/ali14xx.c index 9c544467cb74..fb88711812e6 100644 --- a/trunk/drivers/ide/legacy/ali14xx.c +++ b/trunk/drivers/ide/legacy/ali14xx.c @@ -40,6 +40,7 @@ #undef REALLY_SLOW_IO /* most systems can safely undef this */ #include +#include #include #include #include diff --git a/trunk/drivers/ide/legacy/dtc2278.c b/trunk/drivers/ide/legacy/dtc2278.c index 3b1d33baaa2f..20eb5b872ca9 100644 --- a/trunk/drivers/ide/legacy/dtc2278.c +++ b/trunk/drivers/ide/legacy/dtc2278.c @@ -7,6 +7,7 @@ #undef REALLY_SLOW_IO /* most systems can safely undef this */ #include +#include #include #include #include diff --git a/trunk/drivers/ide/legacy/gayle.c b/trunk/drivers/ide/legacy/gayle.c index 64d42619ab06..3fac3e9ec47d 100644 --- a/trunk/drivers/ide/legacy/gayle.c +++ b/trunk/drivers/ide/legacy/gayle.c @@ -8,6 +8,7 @@ * more details. */ +#include #include #include #include diff --git a/trunk/drivers/ide/legacy/ht6560b.c b/trunk/drivers/ide/legacy/ht6560b.c index c48e87e512d3..a77fb249d5cf 100644 --- a/trunk/drivers/ide/legacy/ht6560b.c +++ b/trunk/drivers/ide/legacy/ht6560b.c @@ -39,6 +39,7 @@ #undef REALLY_SLOW_IO /* most systems can safely undef this */ #include +#include #include #include #include diff --git a/trunk/drivers/ide/legacy/ide-cs.c b/trunk/drivers/ide/legacy/ide-cs.c index b7e459e4f284..602797a44208 100644 --- a/trunk/drivers/ide/legacy/ide-cs.c +++ b/trunk/drivers/ide/legacy/ide-cs.c @@ -146,16 +146,7 @@ static void ide_detach(struct pcmcia_device *link) kfree(link->priv); } /* ide_detach */ -static void idecs_mmio_fixup(ide_hwif_t *hwif) -{ - default_hwif_mmiops(hwif); - hwif->mmio = 2; - - ide_undecoded_slave(hwif); -} - -static int idecs_register(unsigned long io, unsigned long ctl, - unsigned long irq, struct pcmcia_device *handle, int is_mmio) +static int idecs_register(unsigned long io, unsigned long ctl, unsigned long irq, struct pcmcia_device *handle) { hw_regs_t hw; memset(&hw, 0, sizeof(hw)); @@ -163,19 +154,7 @@ static int idecs_register(unsigned long io, unsigned long ctl, hw.irq = irq; hw.chipset = ide_pci; hw.dev = &handle->dev; - - if(is_mmio) - return ide_register_hw_with_fixup(&hw, NULL, idecs_mmio_fixup); - else - return ide_register_hw_with_fixup(&hw, NULL, ide_undecoded_slave); -} - -void outb_io(unsigned char value, unsigned long port) { - outb(value, port); -} - -void outb_mem(unsigned char value, unsigned long port) { - writeb(value, (void __iomem *) port); + return ide_register_hw_with_fixup(&hw, NULL, ide_undecoded_slave); } /*====================================================================== @@ -201,8 +180,7 @@ static int ide_config(struct pcmcia_device *link) } *stk = NULL; cistpl_cftable_entry_t *cfg; int i, pass, last_ret = 0, last_fn = 0, hd, is_kme = 0; - unsigned long io_base, ctl_base, is_mmio, try_slave; - void (*my_outb)(unsigned char, unsigned long); + unsigned long io_base, ctl_base; DEBUG(0, "ide_config(0x%p)\n", link); @@ -232,7 +210,7 @@ static int ide_config(struct pcmcia_device *link) /* Not sure if this is right... look up the current Vcc */ CS_CHECK(GetConfigurationInfo, pcmcia_get_configuration_info(link, &stk->conf)); - pass = io_base = ctl_base = is_mmio = try_slave = 0; + pass = io_base = ctl_base = 0; tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; tuple.Attributes = 0; CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(link, &tuple)); @@ -280,45 +258,11 @@ static int ide_config(struct pcmcia_device *link) goto next_entry; io_base = link->io.BasePort1; ctl_base = link->io.BasePort1 + 0x0e; - - if (io->win[0].len >= 0x20) - try_slave = 1; - } else goto next_entry; /* If we've got this far, we're done */ break; } - if ((cfg->mem.nwin > 0) || (stk->dflt.mem.nwin > 0)) { - win_req_t req; - memreq_t map; - cistpl_mem_t *mem = (cfg->mem.nwin) ? &cfg->mem : &stk->dflt.mem; - - if (mem->win[0].len < 16) - goto next_entry; - - req.Attributes = WIN_DATA_WIDTH_16|WIN_MEMORY_TYPE_CM; - req.Attributes |= WIN_ENABLE; - req.Base = mem->win[0].host_addr; - req.Size = 0; - - req.AccessSpeed = 0; - if (pcmcia_request_window(&link, &req, &link->win) != 0) - goto next_entry; - map.Page = 0; map.CardOffset = mem->win[0].card_addr; - if (pcmcia_map_mem_page(link->win, &map) != 0) - goto next_entry; - - io_base = (unsigned long) ioremap(req.Base, req.Size); - ctl_base = io_base + 0x0e; - is_mmio = 1; - - if (mem->win[0].len >= 0x20) - try_slave = 1; - - break; - } - next_entry: if (cfg->flags & CISTPL_CFTABLE_DEFAULT) memcpy(&stk->dflt, cfg, sizeof(stk->dflt)); @@ -334,26 +278,21 @@ static int ide_config(struct pcmcia_device *link) CS_CHECK(RequestIRQ, pcmcia_request_irq(link, &link->irq)); CS_CHECK(RequestConfiguration, pcmcia_request_configuration(link, &link->conf)); - if(is_mmio) - my_outb = outb_mem; - else - my_outb = outb_io; - /* disable drive interrupts during IDE probe */ - my_outb(0x02, ctl_base); + outb(0x02, ctl_base); /* special setup for KXLC005 card */ if (is_kme) - my_outb(0x81, ctl_base+1); + outb(0x81, ctl_base+1); /* retry registration in case device is still spinning up */ for (hd = -1, i = 0; i < 10; i++) { - hd = idecs_register(io_base, ctl_base, link->irq.AssignedIRQ, link, is_mmio); + hd = idecs_register(io_base, ctl_base, link->irq.AssignedIRQ, link); if (hd >= 0) break; - if (try_slave) { - my_outb(0x02, ctl_base + 0x10); + if (link->io.NumPorts1 == 0x20) { + outb(0x02, ctl_base + 0x10); hd = idecs_register(io_base + 0x10, ctl_base + 0x10, - link->irq.AssignedIRQ, link, is_mmio); + link->irq.AssignedIRQ, link); if (hd >= 0) { io_base += 0x10; ctl_base += 0x10; diff --git a/trunk/drivers/ide/legacy/macide.c b/trunk/drivers/ide/legacy/macide.c index d655da749144..90cac609d9cf 100644 --- a/trunk/drivers/ide/legacy/macide.c +++ b/trunk/drivers/ide/legacy/macide.c @@ -11,6 +11,7 @@ * more details. */ +#include #include #include #include diff --git a/trunk/drivers/ide/legacy/qd65xx.c b/trunk/drivers/ide/legacy/qd65xx.c index d3c3bc2640e7..563fab0098be 100644 --- a/trunk/drivers/ide/legacy/qd65xx.c +++ b/trunk/drivers/ide/legacy/qd65xx.c @@ -28,6 +28,7 @@ #undef REALLY_SLOW_IO /* most systems can safely undef this */ #include +#include #include #include #include diff --git a/trunk/drivers/ide/legacy/umc8672.c b/trunk/drivers/ide/legacy/umc8672.c index 6e2c58c5f6a2..cdbdb2ff9f15 100644 --- a/trunk/drivers/ide/legacy/umc8672.c +++ b/trunk/drivers/ide/legacy/umc8672.c @@ -40,6 +40,7 @@ #define REALLY_SLOW_IO /* some systems can safely undef this */ #include +#include #include #include #include diff --git a/trunk/drivers/ide/pci/aec62xx.c b/trunk/drivers/ide/pci/aec62xx.c index a7c725f8bf64..3edd7060510f 100644 --- a/trunk/drivers/ide/pci/aec62xx.c +++ b/trunk/drivers/ide/pci/aec62xx.c @@ -6,6 +6,7 @@ */ #include +#include #include #include #include diff --git a/trunk/drivers/ide/pci/alim15x3.c b/trunk/drivers/ide/pci/alim15x3.c index 351dab2fcacf..8b24b4f2a839 100644 --- a/trunk/drivers/ide/pci/alim15x3.c +++ b/trunk/drivers/ide/pci/alim15x3.c @@ -27,6 +27,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/ide/pci/amd74xx.c b/trunk/drivers/ide/pci/amd74xx.c index 2b0ea8b6608d..85007cb12c52 100644 --- a/trunk/drivers/ide/pci/amd74xx.c +++ b/trunk/drivers/ide/pci/amd74xx.c @@ -16,6 +16,7 @@ * the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/drivers/ide/pci/atiixp.c b/trunk/drivers/ide/pci/atiixp.c index a574de5f0835..900efd1da587 100644 --- a/trunk/drivers/ide/pci/atiixp.c +++ b/trunk/drivers/ide/pci/atiixp.c @@ -6,6 +6,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/ide/pci/cmd640.c b/trunk/drivers/ide/pci/cmd640.c index 61b5f9c0b2f4..11d035f1983d 100644 --- a/trunk/drivers/ide/pci/cmd640.c +++ b/trunk/drivers/ide/pci/cmd640.c @@ -103,6 +103,7 @@ //#define CMD640_DUMP_REGS +#include #include #include #include diff --git a/trunk/drivers/ide/pci/cmd64x.c b/trunk/drivers/ide/pci/cmd64x.c index 20c32716bbc4..92b7b1549b16 100644 --- a/trunk/drivers/ide/pci/cmd64x.c +++ b/trunk/drivers/ide/pci/cmd64x.c @@ -14,6 +14,7 @@ * Copyright (C) 1999-2002 Andre Hedrick */ +#include #include #include #include diff --git a/trunk/drivers/ide/pci/cs5520.c b/trunk/drivers/ide/pci/cs5520.c index 079f7c86726b..ea3c52cc8ac1 100644 --- a/trunk/drivers/ide/pci/cs5520.c +++ b/trunk/drivers/ide/pci/cs5520.c @@ -32,6 +32,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/ide/pci/cs5530.c b/trunk/drivers/ide/pci/cs5530.c index 380bb28c7c54..09269e574b3e 100644 --- a/trunk/drivers/ide/pci/cs5530.c +++ b/trunk/drivers/ide/pci/cs5530.c @@ -14,6 +14,7 @@ * CS5530 documentation available from National Semiconductor. */ +#include #include #include #include diff --git a/trunk/drivers/ide/pci/cs5535.c b/trunk/drivers/ide/pci/cs5535.c index 5c5aec28e671..6eb305197f3c 100644 --- a/trunk/drivers/ide/pci/cs5535.c +++ b/trunk/drivers/ide/pci/cs5535.c @@ -23,6 +23,7 @@ * CS5535 documentation available from AMD */ +#include #include #include #include diff --git a/trunk/drivers/ide/pci/cy82c693.c b/trunk/drivers/ide/pci/cy82c693.c index 120929fbe7a3..9f41ecd56338 100644 --- a/trunk/drivers/ide/pci/cy82c693.c +++ b/trunk/drivers/ide/pci/cy82c693.c @@ -44,6 +44,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/ide/pci/hpt34x.c b/trunk/drivers/ide/pci/hpt34x.c index b46cb042290a..7da550281cf2 100644 --- a/trunk/drivers/ide/pci/hpt34x.c +++ b/trunk/drivers/ide/pci/hpt34x.c @@ -24,6 +24,7 @@ * Non-bootable card or HPT343 :: pcicmd == 0x05 */ +#include #include #include #include diff --git a/trunk/drivers/ide/pci/hpt366.c b/trunk/drivers/ide/pci/hpt366.c index e993a51f250e..940bdd4c5784 100644 --- a/trunk/drivers/ide/pci/hpt366.c +++ b/trunk/drivers/ide/pci/hpt366.c @@ -55,6 +55,7 @@ */ +#include #include #include #include diff --git a/trunk/drivers/ide/pci/it8172.c b/trunk/drivers/ide/pci/it8172.c index 0fc89fafad65..93462926b9d5 100644 --- a/trunk/drivers/ide/pci/it8172.c +++ b/trunk/drivers/ide/pci/it8172.c @@ -28,6 +28,7 @@ * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/drivers/ide/pci/it821x.c b/trunk/drivers/ide/pci/it821x.c index 3cb04424d351..38f41b377ff6 100644 --- a/trunk/drivers/ide/pci/it821x.c +++ b/trunk/drivers/ide/pci/it821x.c @@ -62,6 +62,7 @@ * - Move to libata once it grows up */ +#include #include #include #include @@ -650,8 +651,6 @@ static void __devinit init_hwif_it821x(ide_hwif_t *hwif) } ide_set_hwifdata(hwif, idev); - hwif->atapi_dma = 1; - pci_read_config_byte(hwif->pci_dev, 0x50, &conf); if(conf & 1) { idev->smart = 1; diff --git a/trunk/drivers/ide/pci/ns87415.c b/trunk/drivers/ide/pci/ns87415.c index d95714bcee4e..fcd5142f5cfe 100644 --- a/trunk/drivers/ide/pci/ns87415.c +++ b/trunk/drivers/ide/pci/ns87415.c @@ -9,6 +9,7 @@ * Inspired by an earlier effort from David S. Miller */ +#include #include #include #include diff --git a/trunk/drivers/ide/pci/pdc202xx_new.c b/trunk/drivers/ide/pci/pdc202xx_new.c index 6c097e80b4df..5a8334d134fb 100644 --- a/trunk/drivers/ide/pci/pdc202xx_new.c +++ b/trunk/drivers/ide/pci/pdc202xx_new.c @@ -14,6 +14,7 @@ * Released under terms of General Public License */ +#include #include #include #include diff --git a/trunk/drivers/ide/pci/pdc202xx_old.c b/trunk/drivers/ide/pci/pdc202xx_old.c index b46022a11bef..1e209d8f9437 100644 --- a/trunk/drivers/ide/pci/pdc202xx_old.c +++ b/trunk/drivers/ide/pci/pdc202xx_old.c @@ -28,6 +28,7 @@ * Released under terms of General Public License */ +#include #include #include #include diff --git a/trunk/drivers/ide/pci/piix.c b/trunk/drivers/ide/pci/piix.c index 50332ddd5ddb..7fac6f57b5d6 100644 --- a/trunk/drivers/ide/pci/piix.c +++ b/trunk/drivers/ide/pci/piix.c @@ -90,6 +90,7 @@ * ICH3 errata #18 - Don't use native mode */ +#include #include #include #include diff --git a/trunk/drivers/ide/pci/sc1200.c b/trunk/drivers/ide/pci/sc1200.c index fc2b5496b6d2..778b82ae964d 100644 --- a/trunk/drivers/ide/pci/sc1200.c +++ b/trunk/drivers/ide/pci/sc1200.c @@ -11,6 +11,7 @@ * Available from National Semiconductor */ +#include #include #include #include diff --git a/trunk/drivers/ide/pci/serverworks.c b/trunk/drivers/ide/pci/serverworks.c index 03677bff0d72..5100b827a935 100644 --- a/trunk/drivers/ide/pci/serverworks.c +++ b/trunk/drivers/ide/pci/serverworks.c @@ -29,6 +29,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/ide/pci/siimage.c b/trunk/drivers/ide/pci/siimage.c index 25ceb4a39ed2..72dade14c725 100644 --- a/trunk/drivers/ide/pci/siimage.c +++ b/trunk/drivers/ide/pci/siimage.c @@ -27,6 +27,7 @@ * if neccessary */ +#include #include #include #include diff --git a/trunk/drivers/ide/pci/sis5513.c b/trunk/drivers/ide/pci/sis5513.c index 8a6c23ac8cc1..8e9d87701ce2 100644 --- a/trunk/drivers/ide/pci/sis5513.c +++ b/trunk/drivers/ide/pci/sis5513.c @@ -44,6 +44,7 @@ * 962/963. */ +#include #include #include #include diff --git a/trunk/drivers/ide/pci/sl82c105.c b/trunk/drivers/ide/pci/sl82c105.c index 0b4b60498515..900301e43818 100644 --- a/trunk/drivers/ide/pci/sl82c105.c +++ b/trunk/drivers/ide/pci/sl82c105.c @@ -13,6 +13,7 @@ * -- Benjamin Herrenschmidt (01/11/03) benh@kernel.crashing.org */ +#include #include #include #include diff --git a/trunk/drivers/ide/pci/slc90e66.c b/trunk/drivers/ide/pci/slc90e66.c index 4a1853af3bbb..0968f6bc669a 100644 --- a/trunk/drivers/ide/pci/slc90e66.c +++ b/trunk/drivers/ide/pci/slc90e66.c @@ -8,6 +8,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/ide/pci/triflex.c b/trunk/drivers/ide/pci/triflex.c index 56d84931d6de..f96b56838f33 100644 --- a/trunk/drivers/ide/pci/triflex.c +++ b/trunk/drivers/ide/pci/triflex.c @@ -27,6 +27,7 @@ * Not publically available. */ +#include #include #include #include diff --git a/trunk/drivers/ide/pci/trm290.c b/trunk/drivers/ide/pci/trm290.c index 2a282529bfc1..fe80295974e1 100644 --- a/trunk/drivers/ide/pci/trm290.c +++ b/trunk/drivers/ide/pci/trm290.c @@ -128,6 +128,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/ide/pci/via82cxxx.c b/trunk/drivers/ide/pci/via82cxxx.c index afdaee3c15c9..3e677c4f8c28 100644 --- a/trunk/drivers/ide/pci/via82cxxx.c +++ b/trunk/drivers/ide/pci/via82cxxx.c @@ -26,6 +26,7 @@ * the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/drivers/ide/ppc/mpc8xx.c b/trunk/drivers/ide/ppc/mpc8xx.c index 0ac9da3a7378..b80c6135ae93 100644 --- a/trunk/drivers/ide/ppc/mpc8xx.c +++ b/trunk/drivers/ide/ppc/mpc8xx.c @@ -11,6 +11,7 @@ * by Mathew Locke */ +#include #include #include #include diff --git a/trunk/drivers/ide/ppc/pmac.c b/trunk/drivers/ide/ppc/pmac.c index ebf961f1718d..e8ef3455ec35 100644 --- a/trunk/drivers/ide/ppc/pmac.c +++ b/trunk/drivers/ide/ppc/pmac.c @@ -22,6 +22,7 @@ * big table * */ +#include #include #include #include diff --git a/trunk/drivers/ide/setup-pci.c b/trunk/drivers/ide/setup-pci.c index eb0945284acc..c11e3b2e67a6 100644 --- a/trunk/drivers/ide/setup-pci.c +++ b/trunk/drivers/ide/setup-pci.c @@ -18,6 +18,7 @@ * configuration of all PCI IDE interfaces present in a system. */ +#include #include #include #include diff --git a/trunk/drivers/ieee1394/config_roms.c b/trunk/drivers/ieee1394/config_roms.c index e2de6fa0c9fe..1017fd717248 100644 --- a/trunk/drivers/ieee1394/config_roms.c +++ b/trunk/drivers/ieee1394/config_roms.c @@ -9,6 +9,7 @@ * directory of the kernel sources for details. */ +#include #include #include "csr1212.h" diff --git a/trunk/drivers/ieee1394/dv1394.c b/trunk/drivers/ieee1394/dv1394.c index 87532dd43374..85c2d4ca0def 100644 --- a/trunk/drivers/ieee1394/dv1394.c +++ b/trunk/drivers/ieee1394/dv1394.c @@ -83,6 +83,7 @@ */ +#include #include #include #include diff --git a/trunk/drivers/ieee1394/highlevel.c b/trunk/drivers/ieee1394/highlevel.c index 694da82d820b..25b22609e793 100644 --- a/trunk/drivers/ieee1394/highlevel.c +++ b/trunk/drivers/ieee1394/highlevel.c @@ -17,6 +17,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/ieee1394/hosts.c b/trunk/drivers/ieee1394/hosts.c index 2c669287f5bd..ad49c040b674 100644 --- a/trunk/drivers/ieee1394/hosts.c +++ b/trunk/drivers/ieee1394/hosts.c @@ -10,6 +10,7 @@ * directory of the kernel sources for details. */ +#include #include #include #include diff --git a/trunk/drivers/ieee1394/ieee1394_core.c b/trunk/drivers/ieee1394/ieee1394_core.c index f43739c5cab2..49354de9fb8a 100644 --- a/trunk/drivers/ieee1394/ieee1394_core.c +++ b/trunk/drivers/ieee1394/ieee1394_core.c @@ -20,6 +20,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/ieee1394/nodemgr.c b/trunk/drivers/ieee1394/nodemgr.c index d541b508a159..50c71e17de73 100644 --- a/trunk/drivers/ieee1394/nodemgr.c +++ b/trunk/drivers/ieee1394/nodemgr.c @@ -10,6 +10,7 @@ #include #include +#include #include #include #include diff --git a/trunk/drivers/ieee1394/ohci1394.c b/trunk/drivers/ieee1394/ohci1394.c index 8de81ecd3ba6..800c8d518430 100644 --- a/trunk/drivers/ieee1394/ohci1394.c +++ b/trunk/drivers/ieee1394/ohci1394.c @@ -82,6 +82,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/ieee1394/oui2c.sh b/trunk/drivers/ieee1394/oui2c.sh index b9d0e8f10abb..d50dc7a2d087 100644 --- a/trunk/drivers/ieee1394/oui2c.sh +++ b/trunk/drivers/ieee1394/oui2c.sh @@ -3,6 +3,7 @@ cat < #ifdef CONFIG_IEEE1394_OUI_DB struct oui_list_struct { diff --git a/trunk/drivers/ieee1394/pcilynx.c b/trunk/drivers/ieee1394/pcilynx.c index 5b48f6ac5c7f..e29dfd280bee 100644 --- a/trunk/drivers/ieee1394/pcilynx.c +++ b/trunk/drivers/ieee1394/pcilynx.c @@ -30,6 +30,7 @@ * Enhancements in async and iso send code */ +#include #include #include #include diff --git a/trunk/drivers/ieee1394/pcilynx.h b/trunk/drivers/ieee1394/pcilynx.h index ec27321f6724..d631aa8383ad 100644 --- a/trunk/drivers/ieee1394/pcilynx.h +++ b/trunk/drivers/ieee1394/pcilynx.h @@ -1,6 +1,7 @@ #ifndef __PCILYNX_H__ #define __PCILYNX_H__ +#include #define PCILYNX_DRIVER_NAME "pcilynx" #define PCILYNX_MAJOR 177 diff --git a/trunk/drivers/ieee1394/sbp2.c b/trunk/drivers/ieee1394/sbp2.c index aaa74f293aaf..1d5ceb7ecc83 100644 --- a/trunk/drivers/ieee1394/sbp2.c +++ b/trunk/drivers/ieee1394/sbp2.c @@ -38,6 +38,7 @@ * but the code needs additional debugging. */ +#include #include #include #include diff --git a/trunk/drivers/ieee1394/video1394.c b/trunk/drivers/ieee1394/video1394.c index c6e3f02bc6d7..295d0f8c3d06 100644 --- a/trunk/drivers/ieee1394/video1394.c +++ b/trunk/drivers/ieee1394/video1394.c @@ -28,6 +28,7 @@ * ENOTTY for unsupported ioctl request * */ +#include #include #include #include diff --git a/trunk/drivers/infiniband/core/cm.c b/trunk/drivers/infiniband/core/cm.c index 3f6705f3083a..450adfe0a4f1 100644 --- a/trunk/drivers/infiniband/core/cm.c +++ b/trunk/drivers/infiniband/core/cm.c @@ -3152,7 +3152,6 @@ static int cm_init_qp_rtr_attr(struct cm_id_private *cm_id_priv, } if (cm_id_priv->alt_av.ah_attr.dlid) { *qp_attr_mask |= IB_QP_ALT_PATH; - qp_attr->alt_port_num = cm_id_priv->alt_av.port->port_num; qp_attr->alt_ah_attr = cm_id_priv->alt_av.ah_attr; } ret = 0; diff --git a/trunk/drivers/infiniband/core/uverbs_cmd.c b/trunk/drivers/infiniband/core/uverbs_cmd.c index bdf5d5098190..a908a7bdcd7f 100644 --- a/trunk/drivers/infiniband/core/uverbs_cmd.c +++ b/trunk/drivers/infiniband/core/uverbs_cmd.c @@ -1963,7 +1963,7 @@ ssize_t ib_uverbs_create_srq(struct ib_uverbs_file *file, if (!obj) return -ENOMEM; - init_uobj(&obj->uobject, cmd.user_handle, file->ucontext); + init_uobj(&obj->uobject, 0, file->ucontext); down_write(&obj->uobject.mutex); pd = idr_read_pd(cmd.pd_handle, file->ucontext); diff --git a/trunk/drivers/infiniband/hw/ipath/Kconfig b/trunk/drivers/infiniband/hw/ipath/Kconfig index 1db9489f1e82..9ea67c409b6d 100644 --- a/trunk/drivers/infiniband/hw/ipath/Kconfig +++ b/trunk/drivers/infiniband/hw/ipath/Kconfig @@ -1,16 +1,16 @@ config IPATH_CORE - tristate "QLogic InfiniPath Driver" + tristate "PathScale InfiniPath Driver" depends on 64BIT && PCI_MSI && NET ---help--- - This is a low-level driver for QLogic InfiniPath host channel + This is a low-level driver for PathScale InfiniPath host channel adapters (HCAs) based on the HT-400 and PE-800 chips. config INFINIBAND_IPATH - tristate "QLogic InfiniPath Verbs Driver" + tristate "PathScale InfiniPath Verbs Driver" depends on IPATH_CORE && INFINIBAND ---help--- This is a driver that provides InfiniBand verbs support for - QLogic InfiniPath host channel adapters (HCAs). This + PathScale InfiniPath host channel adapters (HCAs). This allows these devices to be used with both kernel upper level protocols such as IP-over-InfiniBand as well as with userspace applications (in conjunction with InfiniBand userspace access). diff --git a/trunk/drivers/infiniband/hw/ipath/Makefile b/trunk/drivers/infiniband/hw/ipath/Makefile index b0bf72864130..b4d084abfd22 100644 --- a/trunk/drivers/infiniband/hw/ipath/Makefile +++ b/trunk/drivers/infiniband/hw/ipath/Makefile @@ -1,4 +1,4 @@ -EXTRA_CFLAGS += -DIPATH_IDSTR='"QLogic kernel.org driver"' \ +EXTRA_CFLAGS += -DIPATH_IDSTR='"PathScale kernel.org driver"' \ -DIPATH_KERN_TYPE=0 obj-$(CONFIG_IPATH_CORE) += ipath_core.o diff --git a/trunk/drivers/infiniband/hw/ipath/ipath_common.h b/trunk/drivers/infiniband/hw/ipath/ipath_common.h index 062bd392e7e5..48a55247b832 100644 --- a/trunk/drivers/infiniband/hw/ipath/ipath_common.h +++ b/trunk/drivers/infiniband/hw/ipath/ipath_common.h @@ -1,5 +1,4 @@ /* - * Copyright (c) 2006 QLogic, Inc. All rights reserved. * Copyright (c) 2003, 2004, 2005, 2006 PathScale, Inc. All rights reserved. * * This software is available to you under a choice of one of two @@ -39,8 +38,7 @@ * to communicate between kernel and user code. */ - -/* This is the IEEE-assigned OUI for QLogic Inc. InfiniPath */ +/* This is the IEEE-assigned OUI for PathScale, Inc. */ #define IPATH_SRC_OUI_1 0x00 #define IPATH_SRC_OUI_2 0x11 #define IPATH_SRC_OUI_3 0x75 @@ -98,8 +96,8 @@ struct infinipath_stats { __u64 sps_hwerrs; /* number of times IB link changed state unexpectedly */ __u64 sps_iblink; - /* kernel receive interrupts that didn't read intstat */ - __u64 sps_fastrcvint; + /* no longer used; left for compatibility */ + __u64 sps_unused3; /* number of kernel (port0) packets received */ __u64 sps_port0pkts; /* number of "ethernet" packets sent by driver */ @@ -123,7 +121,8 @@ struct infinipath_stats { __u64 sps_ports; /* list of pkeys (other than default) accepted (0 means not set) */ __u16 sps_pkeys[4]; - __u16 sps_unused16[4]; /* available; maintaining compatible layout */ + /* lids for up to 4 infinipaths, indexed by infinipath # */ + __u16 sps_lid[4]; /* number of user ports per chip (not IB ports) */ __u32 sps_nports; /* not our interrupt, or already handled */ @@ -141,8 +140,10 @@ struct infinipath_stats { * packets if ipath not configured, sma/mad, etc.) */ __u64 sps_krdrops; + /* mlids for up to 4 infinipaths, indexed by infinipath # */ + __u16 sps_mlid[4]; /* pad for future growth */ - __u64 __sps_pad[46]; + __u64 __sps_pad[45]; }; /* @@ -309,9 +310,6 @@ struct ipath_base_info { __u32 spi_rcv_egrchunksize; /* total size of mmap to cover full rcvegrbuffers */ __u32 spi_rcv_egrbuftotlen; - __u32 spi_filler_for_align; - /* address of readonly memory copy of the rcvhdrq tail register. */ - __u64 spi_rcvhdr_tailaddr; } __attribute__ ((aligned(8))); @@ -344,9 +342,9 @@ struct ipath_base_info { /* * Similarly, this is the kernel version going back to the user. It's * slightly different, in that we want to tell if the driver was built as - * part of a QLogic release, or from the driver from openfabrics.org, - * kernel.org, or a standard distribution, for support reasons. - * The high bit is 0 for non-QLogic and 1 for QLogic-built/supplied. + * part of a PathScale release, or from the driver from OpenIB, kernel.org, + * or a standard distribution, for support reasons. The high bit is 0 for + * non-PathScale, and 1 for PathScale-built/supplied. * * It's returned by the driver to the user code during initialization in the * spi_sw_version field of ipath_base_info, so the user code can in turn @@ -381,7 +379,13 @@ struct ipath_user_info { */ __u32 spu_rcvhdrsize; - __u64 spu_unused; /* kept for compatible layout */ + /* + * cache line aligned (64 byte) user address to + * which the rcvhdrtail register will be written by infinipath + * whenever it changes, so that no chip registers are read in + * the performance path. + */ + __u64 spu_rcvhdraddr; /* * address of struct base_info to write to @@ -477,7 +481,7 @@ struct ipath_sma_pkt * Data layout in I2C flash (for GUID, etc.) * All fields are little-endian binary unless otherwise stated */ -#define IPATH_FLASH_VERSION 2 +#define IPATH_FLASH_VERSION 1 struct ipath_flash { /* flash layout version (IPATH_FLASH_VERSION) */ __u8 if_fversion; @@ -485,14 +489,14 @@ struct ipath_flash { __u8 if_csum; /* * valid length (in use, protected by if_csum), including - * if_fversion and if_csum themselves) + * if_fversion and if_sum themselves) */ __u8 if_length; /* the GUID, in network order */ __u8 if_guid[8]; /* number of GUIDs to use, starting from if_guid */ __u8 if_numguid; - /* the (last 10 characters of) board serial number, in ASCII */ + /* the board serial number, in ASCII */ char if_serial[12]; /* board mfg date (YYYYMMDD ASCII) */ char if_mfgdate[8]; @@ -504,10 +508,8 @@ struct ipath_flash { __u8 if_powerhour[2]; /* ASCII free-form comment field */ char if_comment[32]; - /* Backwards compatible prefix for longer QLogic Serial Numbers */ - char if_sprefix[4]; - /* 82 bytes used, min flash size is 128 bytes */ - __u8 if_future[46]; + /* 78 bytes used, min flash size is 128 bytes */ + __u8 if_future[50]; }; /* @@ -601,118 +603,14 @@ struct infinipath_counters { #define INFINIPATH_KPF_INTR 0x1 /* SendPIO per-buffer control */ -#define INFINIPATH_SP_TEST 0x40 -#define INFINIPATH_SP_TESTEBP 0x20 +#define INFINIPATH_SP_LENGTHP1_MASK 0x3FF +#define INFINIPATH_SP_LENGTHP1_SHIFT 0 +#define INFINIPATH_SP_INTR 0x80000000 +#define INFINIPATH_SP_TEST 0x40000000 +#define INFINIPATH_SP_TESTEBP 0x20000000 /* SendPIOAvail bits */ #define INFINIPATH_SENDPIOAVAIL_BUSY_SHIFT 1 #define INFINIPATH_SENDPIOAVAIL_CHECK_SHIFT 0 -/* infinipath header format */ -struct ipath_header { - /* - * Version - 4 bits, Port - 4 bits, TID - 10 bits and Offset - - * 14 bits before ECO change ~28 Dec 03. After that, Vers 4, - * Port 3, TID 11, offset 14. - */ - __le32 ver_port_tid_offset; - __le16 chksum; - __le16 pkt_flags; -}; - -/* infinipath user message header format. - * This structure contains the first 4 fields common to all protocols - * that employ infinipath. - */ -struct ipath_message_header { - __be16 lrh[4]; - __be32 bth[3]; - /* fields below this point are in host byte order */ - struct ipath_header iph; - __u8 sub_opcode; -}; - -/* infinipath ethernet header format */ -struct ether_header { - __be16 lrh[4]; - __be32 bth[3]; - struct ipath_header iph; - __u8 sub_opcode; - __u8 cmd; - __be16 lid; - __u16 mac[3]; - __u8 frag_num; - __u8 seq_num; - __le32 len; - /* MUST be of word size due to PIO write requirements */ - __le32 csum; - __le16 csum_offset; - __le16 flags; - __u16 first_2_bytes; - __u8 unused[2]; /* currently unused */ -}; - - -/* IB - LRH header consts */ -#define IPATH_LRH_GRH 0x0003 /* 1. word of IB LRH - next header: GRH */ -#define IPATH_LRH_BTH 0x0002 /* 1. word of IB LRH - next header: BTH */ - -/* misc. */ -#define SIZE_OF_CRC 1 - -#define IPATH_DEFAULT_P_KEY 0xFFFF -#define IPATH_PERMISSIVE_LID 0xFFFF -#define IPATH_AETH_CREDIT_SHIFT 24 -#define IPATH_AETH_CREDIT_MASK 0x1F -#define IPATH_AETH_CREDIT_INVAL 0x1F -#define IPATH_PSN_MASK 0xFFFFFF -#define IPATH_MSN_MASK 0xFFFFFF -#define IPATH_QPN_MASK 0xFFFFFF -#define IPATH_MULTICAST_LID_BASE 0xC000 -#define IPATH_MULTICAST_QPN 0xFFFFFF - -/* Receive Header Queue: receive type (from infinipath) */ -#define RCVHQ_RCV_TYPE_EXPECTED 0 -#define RCVHQ_RCV_TYPE_EAGER 1 -#define RCVHQ_RCV_TYPE_NON_KD 2 -#define RCVHQ_RCV_TYPE_ERROR 3 - - -/* sub OpCodes - ith4x */ -#define IPATH_ITH4X_OPCODE_ENCAP 0x81 -#define IPATH_ITH4X_OPCODE_LID_ARP 0x82 - -#define IPATH_HEADER_QUEUE_WORDS 9 - -/* functions for extracting fields from rcvhdrq entries for the driver. - */ -static inline __u32 ipath_hdrget_err_flags(const __le32 * rbuf) -{ - return __le32_to_cpu(rbuf[1]); -} - -static inline __u32 ipath_hdrget_rcv_type(const __le32 * rbuf) -{ - return (__le32_to_cpu(rbuf[0]) >> INFINIPATH_RHF_RCVTYPE_SHIFT) - & INFINIPATH_RHF_RCVTYPE_MASK; -} - -static inline __u32 ipath_hdrget_length_in_bytes(const __le32 * rbuf) -{ - return ((__le32_to_cpu(rbuf[0]) >> INFINIPATH_RHF_LENGTH_SHIFT) - & INFINIPATH_RHF_LENGTH_MASK) << 2; -} - -static inline __u32 ipath_hdrget_index(const __le32 * rbuf) -{ - return (__le32_to_cpu(rbuf[0]) >> INFINIPATH_RHF_EGRINDEX_SHIFT) - & INFINIPATH_RHF_EGRINDEX_MASK; -} - -static inline __u32 ipath_hdrget_ipath_ver(__le32 hdrword) -{ - return (__le32_to_cpu(hdrword) >> INFINIPATH_I_VERS_SHIFT) - & INFINIPATH_I_VERS_MASK; -} - #endif /* _IPATH_COMMON_H */ diff --git a/trunk/drivers/infiniband/hw/ipath/ipath_cq.c b/trunk/drivers/infiniband/hw/ipath/ipath_cq.c index 3efee341c9bc..7ece1135ddfe 100644 --- a/trunk/drivers/infiniband/hw/ipath/ipath_cq.c +++ b/trunk/drivers/infiniband/hw/ipath/ipath_cq.c @@ -1,5 +1,4 @@ /* - * Copyright (c) 2006 QLogic, Inc. All rights reserved. * Copyright (c) 2005, 2006 PathScale, Inc. All rights reserved. * * This software is available to you under a choice of one of two @@ -158,21 +157,10 @@ struct ib_cq *ipath_create_cq(struct ib_device *ibdev, int entries, struct ib_ucontext *context, struct ib_udata *udata) { - struct ipath_ibdev *dev = to_idev(ibdev); struct ipath_cq *cq; struct ib_wc *wc; struct ib_cq *ret; - if (entries > ib_ipath_max_cqes) { - ret = ERR_PTR(-EINVAL); - goto bail; - } - - if (dev->n_cqs_allocated == ib_ipath_max_cqs) { - ret = ERR_PTR(-ENOMEM); - goto bail; - } - /* * Need to use vmalloc() if we want to support large #s of * entries. @@ -208,8 +196,6 @@ struct ib_cq *ipath_create_cq(struct ib_device *ibdev, int entries, ret = &cq->ibcq; - dev->n_cqs_allocated++; - bail: return ret; } @@ -224,11 +210,9 @@ struct ib_cq *ipath_create_cq(struct ib_device *ibdev, int entries, */ int ipath_destroy_cq(struct ib_cq *ibcq) { - struct ipath_ibdev *dev = to_idev(ibcq->device); struct ipath_cq *cq = to_icq(ibcq); tasklet_kill(&cq->comptask); - dev->n_cqs_allocated--; vfree(cq->queue); kfree(cq); diff --git a/trunk/drivers/infiniband/hw/ipath/ipath_debug.h b/trunk/drivers/infiniband/hw/ipath/ipath_debug.h index f415beda0d32..46762387f5f8 100644 --- a/trunk/drivers/infiniband/hw/ipath/ipath_debug.h +++ b/trunk/drivers/infiniband/hw/ipath/ipath_debug.h @@ -1,5 +1,4 @@ /* - * Copyright (c) 2006 QLogic, Inc. All rights reserved. * Copyright (c) 2003, 2004, 2005, 2006 PathScale, Inc. All rights reserved. * * This software is available to you under a choice of one of two diff --git a/trunk/drivers/infiniband/hw/ipath/ipath_diag.c b/trunk/drivers/infiniband/hw/ipath/ipath_diag.c index 147dd89e21c9..28ddceb260e8 100644 --- a/trunk/drivers/infiniband/hw/ipath/ipath_diag.c +++ b/trunk/drivers/infiniband/hw/ipath/ipath_diag.c @@ -1,5 +1,4 @@ /* - * Copyright (c) 2006 QLogic, Inc. All rights reserved. * Copyright (c) 2003, 2004, 2005, 2006 PathScale, Inc. All rights reserved. * * This software is available to you under a choice of one of two @@ -44,9 +43,10 @@ #include #include +#include "ipath_common.h" #include "ipath_kernel.h" +#include "ips_common.h" #include "ipath_layer.h" -#include "ipath_common.h" int ipath_diag_inuse; static int diag_set_link; @@ -66,20 +66,18 @@ static struct file_operations diag_file_ops = { .release = ipath_diag_release }; -int ipath_diag_add(struct ipath_devdata *dd) -{ - char name[16]; - - snprintf(name, sizeof(name), "ipath_diag%d", dd->ipath_unit); +static struct cdev *diag_cdev; +static struct class_device *diag_class_dev; - return ipath_cdev_init(IPATH_DIAG_MINOR_BASE + dd->ipath_unit, name, - &diag_file_ops, &dd->diag_cdev, - &dd->diag_class_dev); +int ipath_diag_init(void) +{ + return ipath_cdev_init(IPATH_DIAG_MINOR, "ipath_diag", + &diag_file_ops, &diag_cdev, &diag_class_dev); } -void ipath_diag_remove(struct ipath_devdata *dd) +void ipath_diag_cleanup(void) { - ipath_cdev_cleanup(&dd->diag_cdev, &dd->diag_class_dev); + ipath_cdev_cleanup(&diag_cdev, &diag_class_dev); } /** @@ -103,7 +101,8 @@ static int ipath_read_umem64(struct ipath_devdata *dd, void __user *uaddr, int ret; /* not very efficient, but it works for now */ - if (reg_addr < dd->ipath_kregbase || reg_end > dd->ipath_kregend) { + if (reg_addr < dd->ipath_kregbase || + reg_end > dd->ipath_kregend) { ret = -EINVAL; goto bail; } @@ -114,7 +113,7 @@ static int ipath_read_umem64(struct ipath_devdata *dd, void __user *uaddr, goto bail; } reg_addr++; - uaddr += sizeof(u64); + uaddr++; } ret = 0; bail: @@ -140,7 +139,8 @@ static int ipath_write_umem64(struct ipath_devdata *dd, void __iomem *caddr, int ret; /* not very efficient, but it works for now */ - if (reg_addr < dd->ipath_kregbase || reg_end > dd->ipath_kregend) { + if (reg_addr < dd->ipath_kregbase || + reg_end > dd->ipath_kregend) { ret = -EINVAL; goto bail; } @@ -153,7 +153,7 @@ static int ipath_write_umem64(struct ipath_devdata *dd, void __iomem *caddr, writeq(data, reg_addr); reg_addr++; - uaddr += sizeof(u64); + uaddr++; } ret = 0; bail: @@ -191,8 +191,7 @@ static int ipath_read_umem32(struct ipath_devdata *dd, void __user *uaddr, } reg_addr++; - uaddr += sizeof(u32); - + uaddr++; } ret = 0; bail: @@ -231,7 +230,7 @@ static int ipath_write_umem32(struct ipath_devdata *dd, void __iomem *caddr, writel(data, reg_addr); reg_addr++; - uaddr += sizeof(u32); + uaddr++; } ret = 0; bail: @@ -240,45 +239,59 @@ static int ipath_write_umem32(struct ipath_devdata *dd, void __iomem *caddr, static int ipath_diag_open(struct inode *in, struct file *fp) { - int unit = iminor(in) - IPATH_DIAG_MINOR_BASE; struct ipath_devdata *dd; + int unit = 0; /* XXX this is bogus */ + unsigned long flags; int ret; + dd = ipath_lookup(unit); + mutex_lock(&ipath_mutex); + spin_lock_irqsave(&ipath_devs_lock, flags); if (ipath_diag_inuse) { ret = -EBUSY; goto bail; } - dd = ipath_lookup(unit); - - if (dd == NULL || !(dd->ipath_flags & IPATH_PRESENT) || - !dd->ipath_kregbase) { - ret = -ENODEV; + list_for_each_entry(dd, &ipath_dev_list, ipath_list) { + /* + * we need at least one infinipath device to be present + * (don't use INITTED, because we want to be able to open + * even if device is in freeze mode, which cleared INITTED). + * There is a small amount of risk to this, which is why we + * also verify kregbase is set. + */ + + if (!(dd->ipath_flags & IPATH_PRESENT) || + !dd->ipath_kregbase) + continue; + + ipath_diag_inuse = 1; + diag_set_link = 0; + ret = 0; goto bail; } - fp->private_data = dd; - ipath_diag_inuse = 1; - diag_set_link = 0; - ret = 0; + ret = -ENODEV; + +bail: + spin_unlock_irqrestore(&ipath_devs_lock, flags); /* Only expose a way to reset the device if we make it into diag mode. */ - ipath_expose_reset(&dd->pcidev->dev); + if (ret == 0) + ipath_expose_reset(&dd->pcidev->dev); -bail: mutex_unlock(&ipath_mutex); return ret; } -static int ipath_diag_release(struct inode *in, struct file *fp) +static int ipath_diag_release(struct inode *i, struct file *f) { mutex_lock(&ipath_mutex); ipath_diag_inuse = 0; - fp->private_data = NULL; mutex_unlock(&ipath_mutex); return 0; } @@ -286,10 +299,17 @@ static int ipath_diag_release(struct inode *in, struct file *fp) static ssize_t ipath_diag_read(struct file *fp, char __user *data, size_t count, loff_t *off) { - struct ipath_devdata *dd = fp->private_data; + int unit = 0; /* XXX provide for reads on other units some day */ + struct ipath_devdata *dd; void __iomem *kreg_base; ssize_t ret; + dd = ipath_lookup(unit); + if (!dd) { + ret = -ENODEV; + goto bail; + } + kreg_base = dd->ipath_kregbase; if (count == 0) @@ -308,16 +328,23 @@ static ssize_t ipath_diag_read(struct file *fp, char __user *data, ret = count; } +bail: return ret; } static ssize_t ipath_diag_write(struct file *fp, const char __user *data, size_t count, loff_t *off) { - struct ipath_devdata *dd = fp->private_data; + int unit = 0; /* XXX this is bogus */ + struct ipath_devdata *dd; void __iomem *kreg_base; ssize_t ret; + dd = ipath_lookup(unit); + if (!dd) { + ret = -ENODEV; + goto bail; + } kreg_base = dd->ipath_kregbase; if (count == 0) @@ -336,5 +363,6 @@ static ssize_t ipath_diag_write(struct file *fp, const char __user *data, ret = count; } +bail: return ret; } diff --git a/trunk/drivers/infiniband/hw/ipath/ipath_driver.c b/trunk/drivers/infiniband/hw/ipath/ipath_driver.c index 6efc56bce921..e4b897fa569a 100644 --- a/trunk/drivers/infiniband/hw/ipath/ipath_driver.c +++ b/trunk/drivers/infiniband/hw/ipath/ipath_driver.c @@ -1,5 +1,4 @@ /* - * Copyright (c) 2006 QLogic, Inc. All rights reserved. * Copyright (c) 2003, 2004, 2005, 2006 PathScale, Inc. All rights reserved. * * This software is available to you under a choice of one of two @@ -39,8 +38,8 @@ #include #include "ipath_kernel.h" +#include "ips_common.h" #include "ipath_layer.h" -#include "ipath_common.h" static void ipath_update_pio_bufs(struct ipath_devdata *); @@ -53,7 +52,7 @@ const char *ipath_get_unit_name(int unit) EXPORT_SYMBOL_GPL(ipath_get_unit_name); -#define DRIVER_LOAD_MSG "QLogic " IPATH_DRV_NAME " loaded: " +#define DRIVER_LOAD_MSG "PathScale " IPATH_DRV_NAME " loaded: " #define PFX IPATH_DRV_NAME ": " /* @@ -75,8 +74,8 @@ MODULE_PARM_DESC(debug, "mask for debug prints"); EXPORT_SYMBOL_GPL(ipath_debug); MODULE_LICENSE("GPL"); -MODULE_AUTHOR("QLogic "); -MODULE_DESCRIPTION("QLogic InfiniPath driver"); +MODULE_AUTHOR("PathScale "); +MODULE_DESCRIPTION("Pathscale InfiniPath driver"); const char *ipath_ibcstatus_str[] = { "Disabled", @@ -131,6 +130,14 @@ static struct pci_driver ipath_driver = { .id_table = ipath_pci_tbl, }; +/* + * This is where port 0's rcvhdrtail register is written back; we also + * want nothing else sharing the cache line, so make it a cache line + * in size. Used for all units. + */ +volatile __le64 *ipath_port0_rcvhdrtail; +dma_addr_t ipath_port0_rcvhdrtail_dma; +static int port0_rcvhdrtail_refs; static inline void read_bars(struct ipath_devdata *dd, struct pci_dev *dev, u32 *bar0, u32 *bar1) @@ -163,13 +170,14 @@ static void ipath_free_devdata(struct pci_dev *pdev, list_del(&dd->ipath_list); spin_unlock_irqrestore(&ipath_devs_lock, flags); } - vfree(dd); + dma_free_coherent(&pdev->dev, sizeof(*dd), dd, dd->ipath_dma_addr); } static struct ipath_devdata *ipath_alloc_devdata(struct pci_dev *pdev) { unsigned long flags; struct ipath_devdata *dd; + dma_addr_t dma_addr; int ret; if (!idr_pre_get(&unit_table, GFP_KERNEL)) { @@ -177,12 +185,15 @@ static struct ipath_devdata *ipath_alloc_devdata(struct pci_dev *pdev) goto bail; } - dd = vmalloc(sizeof(*dd)); + dd = dma_alloc_coherent(&pdev->dev, sizeof(*dd), &dma_addr, + GFP_KERNEL); + if (!dd) { dd = ERR_PTR(-ENOMEM); goto bail; } - memset(dd, 0, sizeof(*dd)); + + dd->ipath_dma_addr = dma_addr; dd->ipath_unit = -1; spin_lock_irqsave(&ipath_devs_lock, flags); @@ -260,6 +271,47 @@ int ipath_count_units(int *npresentp, int *nupp, u32 *maxportsp) return nunits; } +static int init_port0_rcvhdrtail(struct pci_dev *pdev) +{ + int ret; + + mutex_lock(&ipath_mutex); + + if (!ipath_port0_rcvhdrtail) { + ipath_port0_rcvhdrtail = + dma_alloc_coherent(&pdev->dev, + IPATH_PORT0_RCVHDRTAIL_SIZE, + &ipath_port0_rcvhdrtail_dma, + GFP_KERNEL); + + if (!ipath_port0_rcvhdrtail) { + ret = -ENOMEM; + goto bail; + } + } + port0_rcvhdrtail_refs++; + ret = 0; + +bail: + mutex_unlock(&ipath_mutex); + + return ret; +} + +static void cleanup_port0_rcvhdrtail(struct pci_dev *pdev) +{ + mutex_lock(&ipath_mutex); + + if (!--port0_rcvhdrtail_refs) { + dma_free_coherent(&pdev->dev, IPATH_PORT0_RCVHDRTAIL_SIZE, + (void *) ipath_port0_rcvhdrtail, + ipath_port0_rcvhdrtail_dma); + ipath_port0_rcvhdrtail = NULL; + } + + mutex_unlock(&ipath_mutex); +} + /* * These next two routines are placeholders in case we don't have per-arch * code for controlling write combining. If explicit control of write @@ -284,12 +336,20 @@ static int __devinit ipath_init_one(struct pci_dev *pdev, u32 bar0 = 0, bar1 = 0; u8 rev; + ret = init_port0_rcvhdrtail(pdev); + if (ret < 0) { + printk(KERN_ERR IPATH_DRV_NAME + ": Could not allocate port0_rcvhdrtail: error %d\n", + -ret); + goto bail; + } + dd = ipath_alloc_devdata(pdev); if (IS_ERR(dd)) { ret = PTR_ERR(dd); printk(KERN_ERR IPATH_DRV_NAME ": Could not allocate devdata: error %d\n", -ret); - goto bail; + goto bail_rcvhdrtail; } ipath_cdbg(VERBOSE, "initializing unit #%u\n", dd->ipath_unit); @@ -364,29 +424,12 @@ static int __devinit ipath_init_one(struct pci_dev *pdev, */ ret = pci_set_dma_mask(pdev, DMA_32BIT_MASK); if (ret) { - dev_info(&pdev->dev, - "Unable to set DMA mask for unit %u: %d\n", - dd->ipath_unit, ret); + dev_info(&pdev->dev, "pci_set_dma_mask unit %u " + "fails: %d\n", dd->ipath_unit, ret); goto bail_regions; } - else { + else ipath_dbg("No 64bit DMA mask, used 32 bit mask\n"); - ret = pci_set_consistent_dma_mask(pdev, DMA_32BIT_MASK); - if (ret) - dev_info(&pdev->dev, - "Unable to set DMA consistent mask " - "for unit %u: %d\n", - dd->ipath_unit, ret); - - } - } - else { - ret = pci_set_consistent_dma_mask(pdev, DMA_64BIT_MASK); - if (ret) - dev_info(&pdev->dev, - "Unable to set DMA consistent mask " - "for unit %u: %d\n", - dd->ipath_unit, ret); } pci_set_master(pdev); @@ -409,7 +452,7 @@ static int __devinit ipath_init_one(struct pci_dev *pdev, ipath_init_pe800_funcs(dd); break; default: - ipath_dev_err(dd, "Found unknown QLogic deviceid 0x%x, " + ipath_dev_err(dd, "Found unknown PathScale deviceid 0x%x, " "failing\n", ent->device); return -ENODEV; } @@ -452,16 +495,16 @@ static int __devinit ipath_init_one(struct pci_dev *pdev, ((void __iomem *)dd->ipath_kregbase + len); dd->ipath_physaddr = addr; /* used for io_remap, etc. */ /* for user mmap */ - ipath_cdbg(VERBOSE, "mapped io addr %llx to kregbase %p\n", - addr, dd->ipath_kregbase); + dd->ipath_kregvirt = (u64 __iomem *) phys_to_virt(addr); + ipath_cdbg(VERBOSE, "mapped io addr %llx to kregbase %p " + "kregvirt %p\n", addr, dd->ipath_kregbase, + dd->ipath_kregvirt); /* * clear ipath_flags here instead of in ipath_init_chip as it is set * by ipath_setup_htconfig. */ dd->ipath_flags = 0; - dd->ipath_lli_counter = 0; - dd->ipath_lli_errors = 0; if (dd->ipath_f_bus(dd, pdev)) ipath_dev_err(dd, "Failed to setup config space; " @@ -502,7 +545,6 @@ static int __devinit ipath_init_one(struct pci_dev *pdev, ipath_device_create_group(&pdev->dev, dd); ipathfs_add_device(dd); ipath_user_add(dd); - ipath_diag_add(dd); ipath_layer_add(dd); goto bail; @@ -519,6 +561,9 @@ static int __devinit ipath_init_one(struct pci_dev *pdev, bail_devdata: ipath_free_devdata(pdev, dd); +bail_rcvhdrtail: + cleanup_port0_rcvhdrtail(pdev); + bail: return ret; } @@ -532,9 +577,8 @@ static void __devexit ipath_remove_one(struct pci_dev *pdev) return; dd = pci_get_drvdata(pdev); - ipath_layer_remove(dd); - ipath_diag_remove(dd); - ipath_user_remove(dd); + ipath_layer_del(dd); + ipath_user_del(dd); ipathfs_remove_device(dd); ipath_device_remove_group(&pdev->dev, dd); ipath_cdbg(VERBOSE, "Releasing pci memory regions, dd %p, " @@ -550,6 +594,7 @@ static void __devexit ipath_remove_one(struct pci_dev *pdev) pci_disable_device(pdev); ipath_free_devdata(pdev, dd); + cleanup_port0_rcvhdrtail(pdev); } /* general driver use */ @@ -823,8 +868,7 @@ static void ipath_rcv_layer(struct ipath_devdata *dd, u32 etail, u8 pad, *bthbytes; struct sk_buff *skb, *nskb; - if (dd->ipath_port0_skbs && - hdr->sub_opcode == IPATH_ITH4X_OPCODE_ENCAP) { + if (dd->ipath_port0_skbs && hdr->sub_opcode == OPCODE_ENCAP) { /* * Allocate a new sk_buff to replace the one we give * to the network stack. @@ -855,7 +899,7 @@ static void ipath_rcv_layer(struct ipath_devdata *dd, u32 etail, /* another ether packet received */ ipath_stats.sps_ether_rpkts++; } - else if (hdr->sub_opcode == IPATH_ITH4X_OPCODE_LID_ARP) + else if (hdr->sub_opcode == OPCODE_LID_ARP) __ipath_layer_rcv_lid(dd, hdr); } @@ -872,8 +916,8 @@ void ipath_kreceive(struct ipath_devdata *dd) const u32 rsize = dd->ipath_rcvhdrentsize; /* words */ const u32 maxcnt = dd->ipath_rcvhdrcnt * rsize; /* words */ u32 etail = -1, l, hdrqtail; - struct ipath_message_header *hdr; - u32 eflags, i, etype, tlen, pkttot = 0, updegr=0, reloop=0; + struct ips_message_header *hdr; + u32 eflags, i, etype, tlen, pkttot = 0; static u64 totcalls; /* stats, may eventually remove */ char emsg[128]; @@ -887,18 +931,24 @@ void ipath_kreceive(struct ipath_devdata *dd) if (test_and_set_bit(0, &dd->ipath_rcv_pending)) goto bail; - l = dd->ipath_port0head; - hdrqtail = (u32) le64_to_cpu(*dd->ipath_hdrqtailptr); - if (l == hdrqtail) + if (dd->ipath_port0head == + (u32)le64_to_cpu(*dd->ipath_hdrqtailptr)) goto done; -reloop: - for (i = 0; l != hdrqtail; i++) { +gotmore: + /* + * read only once at start. If in flood situation, this helps + * performance slightly. If more arrive while we are processing, + * we'll come back here and do them + */ + hdrqtail = (u32)le64_to_cpu(*dd->ipath_hdrqtailptr); + + for (i = 0, l = dd->ipath_port0head; l != hdrqtail; i++) { u32 qp; u8 *bthbytes; rc = (u64 *) (dd->ipath_pd[0]->port_rcvhdrq + (l << 2)); - hdr = (struct ipath_message_header *)&rc[1]; + hdr = (struct ips_message_header *)&rc[1]; /* * could make a network order version of IPATH_KD_QP, and * do the obvious shift before masking to speed this up. @@ -906,10 +956,10 @@ void ipath_kreceive(struct ipath_devdata *dd) qp = ntohl(hdr->bth[1]) & 0xffffff; bthbytes = (u8 *) hdr->bth; - eflags = ipath_hdrget_err_flags((__le32 *) rc); - etype = ipath_hdrget_rcv_type((__le32 *) rc); + eflags = ips_get_hdr_err_flags((__le32 *) rc); + etype = ips_get_rcv_type((__le32 *) rc); /* total length */ - tlen = ipath_hdrget_length_in_bytes((__le32 *) rc); + tlen = ips_get_length_in_bytes((__le32 *) rc); ebuf = NULL; if (etype != RCVHQ_RCV_TYPE_EXPECTED) { /* @@ -919,7 +969,7 @@ void ipath_kreceive(struct ipath_devdata *dd) * set ebuf (so we try to copy data) unless the * length requires it. */ - etail = ipath_hdrget_index((__le32 *) rc); + etail = ips_get_index((__le32 *) rc); if (tlen > sizeof(*hdr) || etype == RCVHQ_RCV_TYPE_NON_KD) ebuf = ipath_get_egrbuf(dd, etail, 0); @@ -931,7 +981,7 @@ void ipath_kreceive(struct ipath_devdata *dd) */ if (etype != RCVHQ_RCV_TYPE_NON_KD && etype != - RCVHQ_RCV_TYPE_ERROR && ipath_hdrget_ipath_ver( + RCVHQ_RCV_TYPE_ERROR && ips_get_ipath_ver( hdr->iph.ver_port_tid_offset) != IPS_PROTO_VERSION) { ipath_cdbg(PKT, "Bad InfiniPath protocol version " @@ -944,19 +994,7 @@ void ipath_kreceive(struct ipath_devdata *dd) ipath_cdbg(PKT, "RHFerrs %x hdrqtail=%x typ=%u " "tlen=%x opcode=%x egridx=%x: %s\n", eflags, l, etype, tlen, bthbytes[0], - ipath_hdrget_index((__le32 *) rc), emsg); - /* Count local link integrity errors. */ - if (eflags & (INFINIPATH_RHF_H_ICRCERR | - INFINIPATH_RHF_H_VCRCERR)) { - u8 n = (dd->ipath_ibcctrl >> - INFINIPATH_IBCC_PHYERRTHRESHOLD_SHIFT) & - INFINIPATH_IBCC_PHYERRTHRESHOLD_MASK; - - if (++dd->ipath_lli_counter > n) { - dd->ipath_lli_counter = 0; - dd->ipath_lli_errors++; - } - } + ips_get_index((__le32 *) rc), emsg); } else if (etype == RCVHQ_RCV_TYPE_NON_KD) { int ret = __ipath_verbs_rcv(dd, rc + 1, ebuf, tlen); @@ -964,9 +1002,6 @@ void ipath_kreceive(struct ipath_devdata *dd) ipath_cdbg(VERBOSE, "received IB packet, " "not SMA (QP=%x)\n", qp); - if (dd->ipath_lli_counter) - dd->ipath_lli_counter--; - } else if (etype == RCVHQ_RCV_TYPE_EAGER) { if (qp == IPATH_KD_QP && bthbytes[0] == ipath_layer_rcv_opcode && @@ -1019,49 +1054,25 @@ void ipath_kreceive(struct ipath_devdata *dd) l += rsize; if (l >= maxcnt) l = 0; - if (etype != RCVHQ_RCV_TYPE_EXPECTED) - updegr = 1; /* - * update head regs on last packet, and every 16 packets. - * Reduce bus traffic, while still trying to prevent - * rcvhdrq overflows, for when the queue is nearly full + * update for each packet, to help prevent overflows if we + * have lots of packets. */ - if (l == hdrqtail || (i && !(i&0xf))) { - u64 lval; - if (l == hdrqtail) /* PE-800 interrupt only on last */ - lval = dd->ipath_rhdrhead_intr_off | l; - else - lval = l; - (void)ipath_write_ureg(dd, ur_rcvhdrhead, lval, 0); - if (updegr) { - (void)ipath_write_ureg(dd, ur_rcvegrindexhead, - etail, 0); - updegr = 0; - } - } - } - - if (!dd->ipath_rhdrhead_intr_off && !reloop) { - /* HT-400 workaround; we can have a race clearing chip - * interrupt with another interrupt about to be delivered, - * and can clear it before it is delivered on the GPIO - * workaround. By doing the extra check here for the - * in-memory tail register updating while we were doing - * earlier packets, we "almost" guarantee we have covered - * that case. - */ - u32 hqtail = (u32)le64_to_cpu(*dd->ipath_hdrqtailptr); - if (hqtail != hdrqtail) { - hdrqtail = hqtail; - reloop = 1; /* loop 1 extra time at most */ - goto reloop; - } + (void)ipath_write_ureg(dd, ur_rcvhdrhead, + dd->ipath_rhdrhead_intr_off | l, 0); + if (etype != RCVHQ_RCV_TYPE_EXPECTED) + (void)ipath_write_ureg(dd, ur_rcvegrindexhead, + etail, 0); } pkttot += i; dd->ipath_port0head = l; + if (hdrqtail != (u32)le64_to_cpu(*dd->ipath_hdrqtailptr)) + /* more arrived while we handled first batch */ + goto gotmore; + if (pkttot > ipath_stats.sps_maxpkts_call) ipath_stats.sps_maxpkts_call = pkttot; ipath_stats.sps_port0pkts += pkttot; @@ -1358,20 +1369,26 @@ u32 __iomem *ipath_getpiobuf(struct ipath_devdata *dd, u32 * pbufnum) * @dd: the infinipath device * @pd: the port data * - * this must be contiguous memory (from an i/o perspective), and must be - * DMA'able (which means for some systems, it will go through an IOMMU, - * or be forced into a low address range). + * this *must* be physically contiguous memory, and for now, + * that limits it to what kmalloc can do. */ int ipath_create_rcvhdrq(struct ipath_devdata *dd, struct ipath_portdata *pd) { - int ret = 0; + int ret = 0, amt; + amt = ALIGN(dd->ipath_rcvhdrcnt * dd->ipath_rcvhdrentsize * + sizeof(u32), PAGE_SIZE); if (!pd->port_rcvhdrq) { - dma_addr_t phys_hdrqtail; + /* + * not using REPEAT isn't viable; at 128KB, we can easily + * fail this. The problem with REPEAT is we can block here + * "forever". There isn't an inbetween, unfortunately. We + * could reduce the risk by never freeing the rcvhdrq except + * at unload, but even then, the first time a port is used, + * we could delay for some time... + */ gfp_t gfp_flags = GFP_USER | __GFP_COMP; - int amt = ALIGN(dd->ipath_rcvhdrcnt * dd->ipath_rcvhdrentsize * - sizeof(u32), PAGE_SIZE); pd->port_rcvhdrq = dma_alloc_coherent( &dd->pcidev->dev, amt, &pd->port_rcvhdrq_phys, @@ -1384,16 +1401,6 @@ int ipath_create_rcvhdrq(struct ipath_devdata *dd, ret = -ENOMEM; goto bail; } - pd->port_rcvhdrtail_kvaddr = dma_alloc_coherent( - &dd->pcidev->dev, PAGE_SIZE, &phys_hdrqtail, GFP_KERNEL); - if (!pd->port_rcvhdrtail_kvaddr) { - ipath_dev_err(dd, "attempt to allocate 1 page " - "for port %u rcvhdrqtailaddr failed\n", - pd->port_port); - ret = -ENOMEM; - goto bail; - } - pd->port_rcvhdrqtailaddr_phys = phys_hdrqtail; pd->port_rcvhdrq_size = amt; @@ -1403,28 +1410,20 @@ int ipath_create_rcvhdrq(struct ipath_devdata *dd, (unsigned long) pd->port_rcvhdrq_phys, (unsigned long) pd->port_rcvhdrq_size, pd->port_port); - - ipath_cdbg(VERBOSE, "port %d hdrtailaddr, %llx physical\n", - pd->port_port, - (unsigned long long) phys_hdrqtail); + } else { + /* + * clear for security, sanity, and/or debugging, each + * time we reuse + */ + memset(pd->port_rcvhdrq, 0, amt); } - else - ipath_cdbg(VERBOSE, "reuse port %d rcvhdrq @%p %llx phys; " - "hdrtailaddr@%p %llx physical\n", - pd->port_port, pd->port_rcvhdrq, - pd->port_rcvhdrq_phys, pd->port_rcvhdrtail_kvaddr, - (unsigned long long)pd->port_rcvhdrqtailaddr_phys); - - /* clear for security and sanity on each use */ - memset(pd->port_rcvhdrq, 0, pd->port_rcvhdrq_size); - memset((void *)pd->port_rcvhdrtail_kvaddr, 0, PAGE_SIZE); /* * tell chip each time we init it, even if we are re-using previous - * memory (we zero the register at process close) + * memory (we zero it at process close) */ - ipath_write_kreg_port(dd, dd->ipath_kregs->kr_rcvhdrtailaddr, - pd->port_port, pd->port_rcvhdrqtailaddr_phys); + ipath_cdbg(VERBOSE, "writing port %d rcvhdraddr as %lx\n", + pd->port_port, (unsigned long) pd->port_rcvhdrq_phys); ipath_write_kreg_port(dd, dd->ipath_kregs->kr_rcvhdraddr, pd->port_port, pd->port_rcvhdrq_phys); @@ -1512,27 +1511,15 @@ void ipath_set_ib_lstate(struct ipath_devdata *dd, int which) [INFINIPATH_IBCC_LINKCMD_ARMED] = "ARMED", [INFINIPATH_IBCC_LINKCMD_ACTIVE] = "ACTIVE" }; - int linkcmd = (which >> INFINIPATH_IBCC_LINKCMD_SHIFT) & - INFINIPATH_IBCC_LINKCMD_MASK; - ipath_cdbg(SMA, "Trying to move unit %u to %s, current ltstate " "is %s\n", dd->ipath_unit, - what[linkcmd], + what[(which >> INFINIPATH_IBCC_LINKCMD_SHIFT) & + INFINIPATH_IBCC_LINKCMD_MASK], ipath_ibcstatus_str[ (ipath_read_kreg64 (dd, dd->ipath_kregs->kr_ibcstatus) >> INFINIPATH_IBCS_LINKTRAININGSTATE_SHIFT) & INFINIPATH_IBCS_LINKTRAININGSTATE_MASK]); - /* flush all queued sends when going to DOWN or INIT, to be sure that - * they don't block SMA and other MAD packets */ - if (!linkcmd || linkcmd == INFINIPATH_IBCC_LINKCMD_INIT) { - ipath_write_kreg(dd, dd->ipath_kregs->kr_sendctrl, - INFINIPATH_S_ABORT); - ipath_disarm_piobufs(dd, dd->ipath_lastport_piobuf, - (unsigned)(dd->ipath_piobcnt2k + - dd->ipath_piobcnt4k) - - dd->ipath_lastport_piobuf); - } ipath_write_kreg(dd, dd->ipath_kregs->kr_ibcctrl, dd->ipath_ibcctrl | which); @@ -1651,7 +1638,7 @@ void ipath_shutdown_device(struct ipath_devdata *dd) /* disable IBC */ dd->ipath_control &= ~INFINIPATH_C_LINKENABLE; ipath_write_kreg(dd, dd->ipath_kregs->kr_control, - dd->ipath_control | INFINIPATH_C_FREEZEMODE); + dd->ipath_control); /* * clear SerdesEnable and turn the leds off; do this here because @@ -1680,54 +1667,60 @@ void ipath_shutdown_device(struct ipath_devdata *dd) /** * ipath_free_pddata - free a port's allocated data * @dd: the infinipath device - * @pd: the portdata structure + * @port: the port + * @freehdrq: free the port data structure if true * - * free up any allocated data for a port - * This should not touch anything that would affect a simultaneous - * re-allocation of port data, because it is called after ipath_mutex - * is released (and can be called from reinit as well). - * It should never change any chip state, or global driver state. - * (The only exception to global state is freeing the port0 port0_skbs.) + * when closing, free up any allocated data for a port, if the + * reference count goes to zero + * Note: this also optionally frees the portdata itself! + * Any changes here have to be matched up with the reinit case + * of ipath_init_chip(), which calls this routine on reinit after reset. */ -void ipath_free_pddata(struct ipath_devdata *dd, struct ipath_portdata *pd) +void ipath_free_pddata(struct ipath_devdata *dd, u32 port, int freehdrq) { + struct ipath_portdata *pd = dd->ipath_pd[port]; + if (!pd) return; - - if (pd->port_rcvhdrq) { + if (freehdrq) + /* + * only clear and free portdata if we are going to also + * release the hdrq, otherwise we leak the hdrq on each + * open/close cycle + */ + dd->ipath_pd[port] = NULL; + if (freehdrq && pd->port_rcvhdrq) { ipath_cdbg(VERBOSE, "free closed port %d rcvhdrq @ %p " "(size=%lu)\n", pd->port_port, pd->port_rcvhdrq, (unsigned long) pd->port_rcvhdrq_size); dma_free_coherent(&dd->pcidev->dev, pd->port_rcvhdrq_size, pd->port_rcvhdrq, pd->port_rcvhdrq_phys); pd->port_rcvhdrq = NULL; - if (pd->port_rcvhdrtail_kvaddr) { - dma_free_coherent(&dd->pcidev->dev, PAGE_SIZE, - (void *)pd->port_rcvhdrtail_kvaddr, - pd->port_rcvhdrqtailaddr_phys); - pd->port_rcvhdrtail_kvaddr = NULL; - } } - if (pd->port_port && pd->port_rcvegrbuf) { - unsigned e; - - for (e = 0; e < pd->port_rcvegrbuf_chunks; e++) { - void *base = pd->port_rcvegrbuf[e]; - size_t size = pd->port_rcvegrbuf_size; - - ipath_cdbg(VERBOSE, "egrbuf free(%p, %lu), " - "chunk %u/%u\n", base, - (unsigned long) size, - e, pd->port_rcvegrbuf_chunks); - dma_free_coherent(&dd->pcidev->dev, size, - base, pd->port_rcvegrbuf_phys[e]); + if (port && pd->port_rcvegrbuf) { + /* always free this */ + if (pd->port_rcvegrbuf) { + unsigned e; + + for (e = 0; e < pd->port_rcvegrbuf_chunks; e++) { + void *base = pd->port_rcvegrbuf[e]; + size_t size = pd->port_rcvegrbuf_size; + + ipath_cdbg(VERBOSE, "egrbuf free(%p, %lu), " + "chunk %u/%u\n", base, + (unsigned long) size, + e, pd->port_rcvegrbuf_chunks); + dma_free_coherent( + &dd->pcidev->dev, size, base, + pd->port_rcvegrbuf_phys[e]); + } + vfree(pd->port_rcvegrbuf); + pd->port_rcvegrbuf = NULL; + vfree(pd->port_rcvegrbuf_phys); + pd->port_rcvegrbuf_phys = NULL; } - vfree(pd->port_rcvegrbuf); - pd->port_rcvegrbuf = NULL; - vfree(pd->port_rcvegrbuf_phys); - pd->port_rcvegrbuf_phys = NULL; pd->port_rcvegrbuf_chunks = 0; - } else if (pd->port_port == 0 && dd->ipath_port0_skbs) { + } else if (port == 0 && dd->ipath_port0_skbs) { unsigned e; struct sk_buff **skbs = dd->ipath_port0_skbs; @@ -1739,8 +1732,10 @@ void ipath_free_pddata(struct ipath_devdata *dd, struct ipath_portdata *pd) dev_kfree_skb(skbs[e]); vfree(skbs); } - kfree(pd->port_tid_pg_list); - kfree(pd); + if (freehdrq) { + kfree(pd->port_tid_pg_list); + kfree(pd); + } } static int __init infinipath_init(void) @@ -1811,6 +1806,7 @@ static void cleanup_device(struct ipath_devdata *dd) * re-init */ dd->ipath_kregbase = NULL; + dd->ipath_kregvirt = NULL; dd->ipath_uregbase = 0; dd->ipath_sregbase = 0; dd->ipath_cregbase = 0; @@ -1825,12 +1821,6 @@ static void cleanup_device(struct ipath_devdata *dd) dd->ipath_pioavailregs_phys); dd->ipath_pioavailregs_dma = NULL; } - if (dd->ipath_dummy_hdrq) { - dma_free_coherent(&dd->pcidev->dev, - dd->ipath_pd[0]->port_rcvhdrq_size, - dd->ipath_dummy_hdrq, dd->ipath_dummy_hdrq_phys); - dd->ipath_dummy_hdrq = NULL; - } if (dd->ipath_pageshadow) { struct page **tmpp = dd->ipath_pageshadow; @@ -1871,14 +1861,10 @@ static void cleanup_device(struct ipath_devdata *dd) /* * free any resources still in use (usually just kernel ports) - * at unload; we do for portcnt, not cfgports, because cfgports - * could have changed while we were loaded. + * at unload */ - for (port = 0; port < dd->ipath_portcnt; port++) { - struct ipath_portdata *pd = dd->ipath_pd[port]; - dd->ipath_pd[port] = NULL; - ipath_free_pddata(dd, pd); - } + for (port = 0; port < dd->ipath_cfgports; port++) + ipath_free_pddata(dd, port, 1); kfree(dd->ipath_pd); /* * debuggability, in case some cleanup path tries to use it diff --git a/trunk/drivers/infiniband/hw/ipath/ipath_eeprom.c b/trunk/drivers/infiniband/hw/ipath/ipath_eeprom.c index 3313356ab93a..a2f1ceafcca9 100644 --- a/trunk/drivers/infiniband/hw/ipath/ipath_eeprom.c +++ b/trunk/drivers/infiniband/hw/ipath/ipath_eeprom.c @@ -1,5 +1,4 @@ /* - * Copyright (c) 2006 QLogic, Inc. All rights reserved. * Copyright (c) 2003, 2004, 2005, 2006 PathScale, Inc. All rights reserved. * * This software is available to you under a choice of one of two @@ -601,31 +600,8 @@ void ipath_get_eeprom_info(struct ipath_devdata *dd) guid = *(__be64 *) ifp->if_guid; dd->ipath_guid = guid; dd->ipath_nguid = ifp->if_numguid; - /* - * Things are slightly complicated by the desire to transparently - * support both the Pathscale 10-digit serial number and the QLogic - * 13-character version. - */ - if ((ifp->if_fversion > 1) && ifp->if_sprefix[0] - && ((u8 *)ifp->if_sprefix)[0] != 0xFF) { - /* This board has a Serial-prefix, which is stored - * elsewhere for backward-compatibility. - */ - char *snp = dd->ipath_serial; - int len; - memcpy(snp, ifp->if_sprefix, sizeof ifp->if_sprefix); - snp[sizeof ifp->if_sprefix] = '\0'; - len = strlen(snp); - snp += len; - len = (sizeof dd->ipath_serial) - len; - if (len > sizeof ifp->if_serial) { - len = sizeof ifp->if_serial; - } - memcpy(snp, ifp->if_serial, len); - } else - memcpy(dd->ipath_serial, ifp->if_serial, - sizeof ifp->if_serial); - + memcpy(dd->ipath_serial, ifp->if_serial, + sizeof(ifp->if_serial)); ipath_cdbg(VERBOSE, "Initted GUID to %llx from eeprom\n", (unsigned long long) be64_to_cpu(dd->ipath_guid)); diff --git a/trunk/drivers/infiniband/hw/ipath/ipath_file_ops.c b/trunk/drivers/infiniband/hw/ipath/ipath_file_ops.c index bbaa70e57db1..ada267e41f6c 100644 --- a/trunk/drivers/infiniband/hw/ipath/ipath_file_ops.c +++ b/trunk/drivers/infiniband/hw/ipath/ipath_file_ops.c @@ -1,5 +1,4 @@ /* - * Copyright (c) 2006 QLogic, Inc. All rights reserved. * Copyright (c) 2003, 2004, 2005, 2006 PathScale, Inc. All rights reserved. * * This software is available to you under a choice of one of two @@ -39,8 +38,8 @@ #include #include "ipath_kernel.h" +#include "ips_common.h" #include "ipath_layer.h" -#include "ipath_common.h" static int ipath_open(struct inode *, struct file *); static int ipath_close(struct inode *, struct file *); @@ -123,7 +122,6 @@ static int ipath_get_base_info(struct ipath_portdata *pd, * on to yet another method of dealing with this */ kinfo->spi_rcvhdr_base = (u64) pd->port_rcvhdrq_phys; - kinfo->spi_rcvhdr_tailaddr = (u64)pd->port_rcvhdrqtailaddr_phys; kinfo->spi_rcv_egrbufs = (u64) pd->port_rcvegr_phys; kinfo->spi_pioavailaddr = (u64) dd->ipath_pioavailregs_phys; kinfo->spi_status = (u64) kinfo->spi_pioavailaddr + @@ -458,7 +456,7 @@ static int ipath_set_part_key(struct ipath_portdata *pd, u16 key) u16 lkey = key & 0x7FFF; int ret; - if (lkey == (IPATH_DEFAULT_P_KEY & 0x7FFF)) { + if (lkey == (IPS_DEFAULT_P_KEY & 0x7FFF)) { /* nothing to do; this key always valid */ ret = 0; goto bail; @@ -706,15 +704,6 @@ static int ipath_create_user_egr(struct ipath_portdata *pd) unsigned e, egrcnt, alloced, egrperchunk, chunk, egrsize, egroff; size_t size; int ret; - gfp_t gfp_flags; - - /* - * GFP_USER, but without GFP_FS, so buffer cache can be - * coalesced (we hope); otherwise, even at order 4, - * heavy filesystem activity makes these fail, and we can - * use compound pages. - */ - gfp_flags = __GFP_WAIT | __GFP_IO | __GFP_COMP; egrcnt = dd->ipath_rcvegrcnt; /* TID number offset for this port */ @@ -731,8 +720,10 @@ static int ipath_create_user_egr(struct ipath_portdata *pd) * memory pressure (creating large files and then copying them over * NFS while doing lots of MPI jobs), we hit some allocation * failures, even though we can sleep... (2.6.10) Still get - * failures at 64K. 32K is the lowest we can go without wasting - * additional memory. + * failures at 64K. 32K is the lowest we can go without waiting + * more memory again. It seems likely that the coalescing in + * free_pages, etc. still has issues (as it has had previously + * during 2.6.x development). */ size = 0x8000; alloced = ALIGN(egrsize * egrcnt, size); @@ -753,6 +744,12 @@ static int ipath_create_user_egr(struct ipath_portdata *pd) goto bail_rcvegrbuf; } for (e = 0; e < pd->port_rcvegrbuf_chunks; e++) { + /* + * GFP_USER, but without GFP_FS, so buffer cache can be + * coalesced (we hope); otherwise, even at order 4, + * heavy filesystem activity makes these fail + */ + gfp_t gfp_flags = __GFP_WAIT | __GFP_IO | __GFP_COMP; pd->port_rcvegrbuf[e] = dma_alloc_coherent( &dd->pcidev->dev, size, &pd->port_rcvegrbuf_phys[e], @@ -786,12 +783,11 @@ static int ipath_create_user_egr(struct ipath_portdata *pd) bail_rcvegrbuf_phys: for (e = 0; e < pd->port_rcvegrbuf_chunks && - pd->port_rcvegrbuf[e]; e++) { + pd->port_rcvegrbuf[e]; e++) dma_free_coherent(&dd->pcidev->dev, size, pd->port_rcvegrbuf[e], pd->port_rcvegrbuf_phys[e]); - } vfree(pd->port_rcvegrbuf_phys); pd->port_rcvegrbuf_phys = NULL; bail_rcvegrbuf: @@ -806,7 +802,10 @@ static int ipath_do_user_init(struct ipath_portdata *pd, { int ret = 0; struct ipath_devdata *dd = pd->port_dd; + u64 physaddr, uaddr, off, atmp; + struct page *pagep; u32 head32; + u64 head; /* for now, if major version is different, bail */ if ((uinfo->spu_userversion >> 16) != IPATH_USER_SWMAJOR) { @@ -831,6 +830,54 @@ static int ipath_do_user_init(struct ipath_portdata *pd, /* for now we do nothing with rcvhdrcnt: uinfo->spu_rcvhdrcnt */ + /* set up for the rcvhdr Q tail register writeback to user memory */ + if (!uinfo->spu_rcvhdraddr || + !access_ok(VERIFY_WRITE, (u64 __user *) (unsigned long) + uinfo->spu_rcvhdraddr, sizeof(u64))) { + ipath_dbg("Port %d rcvhdrtail addr %llx not valid\n", + pd->port_port, + (unsigned long long) uinfo->spu_rcvhdraddr); + ret = -EINVAL; + goto done; + } + + off = offset_in_page(uinfo->spu_rcvhdraddr); + uaddr = PAGE_MASK & (unsigned long) uinfo->spu_rcvhdraddr; + ret = ipath_get_user_pages_nocopy(uaddr, &pagep); + if (ret) { + dev_info(&dd->pcidev->dev, "Failed to lookup and lock " + "address %llx for rcvhdrtail: errno %d\n", + (unsigned long long) uinfo->spu_rcvhdraddr, -ret); + goto done; + } + ipath_stats.sps_pagelocks++; + pd->port_rcvhdrtail_uaddr = uaddr; + pd->port_rcvhdrtail_pagep = pagep; + pd->port_rcvhdrtail_kvaddr = + page_address(pagep); + pd->port_rcvhdrtail_kvaddr += off; + physaddr = page_to_phys(pagep) + off; + ipath_cdbg(VERBOSE, "port %d user addr %llx hdrtailaddr, %llx " + "physical (off=%llx)\n", + pd->port_port, + (unsigned long long) uinfo->spu_rcvhdraddr, + (unsigned long long) physaddr, (unsigned long long) off); + ipath_write_kreg_port(dd, dd->ipath_kregs->kr_rcvhdrtailaddr, + pd->port_port, physaddr); + atmp = ipath_read_kreg64_port(dd, + dd->ipath_kregs->kr_rcvhdrtailaddr, + pd->port_port); + if (physaddr != atmp) { + ipath_dev_err(dd, + "Catastrophic software error, " + "RcvHdrTailAddr%u written as %llx, " + "read back as %llx\n", pd->port_port, + (unsigned long long) physaddr, + (unsigned long long) atmp); + ret = -EINVAL; + goto done; + } + /* for right now, kernel piobufs are at end, so port 1 is at 0 */ pd->port_piobufs = dd->ipath_piobufbase + dd->ipath_pbufsport * (pd->port_port - @@ -849,18 +896,26 @@ static int ipath_do_user_init(struct ipath_portdata *pd, ret = ipath_create_user_egr(pd); if (ret) goto done; + /* enable receives now */ + /* atomically set enable bit for this port */ + set_bit(INFINIPATH_R_PORTENABLE_SHIFT + pd->port_port, + &dd->ipath_rcvctrl); /* - * set the eager head register for this port to the current values + * set the head registers for this port to the current values * of the tail pointers, since we don't know if they were * updated on last use of the port. */ + head32 = ipath_read_ureg32(dd, ur_rcvhdrtail, pd->port_port); + head = (u64) head32; + ipath_write_ureg(dd, ur_rcvhdrhead, head, pd->port_port); head32 = ipath_read_ureg32(dd, ur_rcvegrindextail, pd->port_port); ipath_write_ureg(dd, ur_rcvegrindexhead, head32, pd->port_port); dd->ipath_lastegrheads[pd->port_port] = -1; dd->ipath_lastrcvhdrqtails[pd->port_port] = -1; - ipath_cdbg(VERBOSE, "Wrote port%d egrhead %x from tail regs\n", - pd->port_port, head32); + ipath_cdbg(VERBOSE, "Wrote port%d head %llx, egrhead %x from " + "tail regs\n", pd->port_port, + (unsigned long long) head, head32); pd->port_tidcursor = 0; /* start at beginning after open */ /* * now enable the port; the tail registers will be written to memory @@ -869,62 +924,13 @@ static int ipath_do_user_init(struct ipath_portdata *pd, * transition from 0 to 1, so clear it first, then set it as part of * enabling the port. This will (very briefly) affect any other * open ports, but it shouldn't be long enough to be an issue. - * We explictly set the in-memory copy to 0 beforehand, so we don't - * have to wait to be sure the DMA update has happened. */ - *pd->port_rcvhdrtail_kvaddr = 0ULL; - set_bit(INFINIPATH_R_PORTENABLE_SHIFT + pd->port_port, - &dd->ipath_rcvctrl); ipath_write_kreg(dd, dd->ipath_kregs->kr_rcvctrl, dd->ipath_rcvctrl & ~INFINIPATH_R_TAILUPD); ipath_write_kreg(dd, dd->ipath_kregs->kr_rcvctrl, dd->ipath_rcvctrl); -done: - return ret; -} - - -/* common code for the mappings on dma_alloc_coherent mem */ -static int ipath_mmap_mem(struct vm_area_struct *vma, - struct ipath_portdata *pd, unsigned len, - int write_ok, dma_addr_t addr, char *what) -{ - struct ipath_devdata *dd = pd->port_dd; - unsigned pfn = (unsigned long)addr >> PAGE_SHIFT; - int ret; - - if ((vma->vm_end - vma->vm_start) > len) { - dev_info(&dd->pcidev->dev, - "FAIL on %s: len %lx > %x\n", what, - vma->vm_end - vma->vm_start, len); - ret = -EFAULT; - goto bail; - } - - if (!write_ok) { - if (vma->vm_flags & VM_WRITE) { - dev_info(&dd->pcidev->dev, - "%s must be mapped readonly\n", what); - ret = -EPERM; - goto bail; - } - /* don't allow them to later change with mprotect */ - vma->vm_flags &= ~VM_MAYWRITE; - } - - ret = remap_pfn_range(vma, vma->vm_start, pfn, - len, vma->vm_page_prot); - if (ret) - dev_info(&dd->pcidev->dev, - "%s port%u mmap of %lx, %x bytes r%c failed: %d\n", - what, pd->port_port, (unsigned long)addr, len, - write_ok?'w':'o', ret); - else - ipath_cdbg(VERBOSE, "%s port%u mmaped %lx, %x bytes r%c\n", - what, pd->port_port, (unsigned long)addr, len, - write_ok?'w':'o'); -bail: +done: return ret; } @@ -934,11 +940,8 @@ static int mmap_ureg(struct vm_area_struct *vma, struct ipath_devdata *dd, unsigned long phys; int ret; - /* - * This is real hardware, so use io_remap. This is the mechanism - * for the user process to update the head registers for their port - * in the chip. - */ + /* it's the real hardware, so io_remap works */ + if ((vma->vm_end - vma->vm_start) > PAGE_SIZE) { dev_info(&dd->pcidev->dev, "FAIL mmap userreg: reqlen " "%lx > PAGE\n", vma->vm_end - vma->vm_start); @@ -964,11 +967,10 @@ static int mmap_piobufs(struct vm_area_struct *vma, int ret; /* - * When we map the PIO buffers in the chip, we want to map them as - * writeonly, no read possible. This prevents access to previous - * process data, and catches users who might try to read the i/o - * space due to a bug. + * When we map the PIO buffers, we want to map them as writeonly, no + * read possible. */ + if ((vma->vm_end - vma->vm_start) > (dd->ipath_pbufsport * dd->ipath_palign)) { dev_info(&dd->pcidev->dev, "FAIL mmap piobufs: " @@ -979,10 +981,11 @@ static int mmap_piobufs(struct vm_area_struct *vma, } phys = dd->ipath_physaddr + pd->port_piobufs; - /* - * Don't mark this as non-cached, or we don't get the + * Do *NOT* mark this as non-cached (PWT bit), or we don't get the * write combining behavior we want on the PIO buffers! + * vma->vm_page_prot = + * pgprot_noncached(vma->vm_page_prot); */ if (vma->vm_flags & VM_READ) { @@ -994,7 +997,8 @@ static int mmap_piobufs(struct vm_area_struct *vma, } /* don't allow them to later change to readable with mprotect */ - vma->vm_flags &= ~VM_MAYREAD; + + vma->vm_flags &= ~VM_MAYWRITE; vma->vm_flags |= VM_DONTCOPY | VM_DONTEXPAND; ret = io_remap_pfn_range(vma, vma->vm_start, phys >> PAGE_SHIFT, @@ -1013,6 +1017,11 @@ static int mmap_rcvegrbufs(struct vm_area_struct *vma, dma_addr_t *phys; int ret; + if (!pd->port_rcvegrbuf) { + ret = -EFAULT; + goto bail; + } + size = pd->port_rcvegrbuf_size; total_size = pd->port_rcvegrbuf_chunks * size; if ((vma->vm_end - vma->vm_start) > total_size) { @@ -1030,12 +1039,13 @@ static int mmap_rcvegrbufs(struct vm_area_struct *vma, ret = -EPERM; goto bail; } - /* don't allow them to later change to writeable with mprotect */ - vma->vm_flags &= ~VM_MAYWRITE; start = vma->vm_start; phys = pd->port_rcvegrbuf_phys; + /* don't allow them to later change to writeable with mprotect */ + vma->vm_flags &= ~VM_MAYWRITE; + for (i = 0; i < pd->port_rcvegrbuf_chunks; i++, start += size) { ret = remap_pfn_range(vma, start, phys[i] >> PAGE_SHIFT, size, vma->vm_page_prot); @@ -1048,6 +1058,78 @@ static int mmap_rcvegrbufs(struct vm_area_struct *vma, return ret; } +static int mmap_rcvhdrq(struct vm_area_struct *vma, + struct ipath_portdata *pd) +{ + struct ipath_devdata *dd = pd->port_dd; + size_t total_size; + int ret; + + /* + * kmalloc'ed memory, physically contiguous; this is from + * spi_rcvhdr_base; we allow user to map read-write so they can + * write hdrq entries to allow protocol code to directly poll + * whether a hdrq entry has been written. + */ + total_size = ALIGN(dd->ipath_rcvhdrcnt * dd->ipath_rcvhdrentsize * + sizeof(u32), PAGE_SIZE); + if ((vma->vm_end - vma->vm_start) > total_size) { + dev_info(&dd->pcidev->dev, + "FAIL on rcvhdrq: reqlen %lx > actual %lx\n", + vma->vm_end - vma->vm_start, + (unsigned long) total_size); + ret = -EFAULT; + goto bail; + } + + ret = remap_pfn_range(vma, vma->vm_start, + pd->port_rcvhdrq_phys >> PAGE_SHIFT, + vma->vm_end - vma->vm_start, + vma->vm_page_prot); +bail: + return ret; +} + +static int mmap_pioavailregs(struct vm_area_struct *vma, + struct ipath_portdata *pd) +{ + struct ipath_devdata *dd = pd->port_dd; + int ret; + + /* + * when we map the PIO bufferavail registers, we want to map them as + * readonly, no write possible. + * + * kmalloc'ed memory, physically contiguous, one page only, readonly + */ + + if ((vma->vm_end - vma->vm_start) > PAGE_SIZE) { + dev_info(&dd->pcidev->dev, "FAIL on pioavailregs_dma: " + "reqlen %lx > actual %lx\n", + vma->vm_end - vma->vm_start, + (unsigned long) PAGE_SIZE); + ret = -EFAULT; + goto bail; + } + + if (vma->vm_flags & VM_WRITE) { + dev_info(&dd->pcidev->dev, + "Can't map pioavailregs as writable (flags=%lx)\n", + vma->vm_flags); + ret = -EPERM; + goto bail; + } + + /* don't allow them to later change with mprotect */ + vma->vm_flags &= ~VM_MAYWRITE; + + ret = remap_pfn_range(vma, vma->vm_start, + dd->ipath_pioavailregs_phys >> PAGE_SHIFT, + PAGE_SIZE, vma->vm_page_prot); +bail: + return ret; +} + /** * ipath_mmap - mmap various structures into user space * @fp: the file pointer @@ -1067,7 +1149,6 @@ static int ipath_mmap(struct file *fp, struct vm_area_struct *vma) pd = port_fp(fp); dd = pd->port_dd; - /* * This is the ipath_do_user_init() code, mapping the shared buffers * into the user process. The address referred to by vm_pgoff is the @@ -1077,59 +1158,28 @@ static int ipath_mmap(struct file *fp, struct vm_area_struct *vma) pgaddr = vma->vm_pgoff << PAGE_SHIFT; /* - * Must fit in 40 bits for our hardware; some checked elsewhere, - * but we'll be paranoid. Check for 0 is mostly in case one of the - * allocations failed, but user called mmap anyway. We want to catch - * that before it can match. + * note that ureg does *NOT* have the kregvirt as part of it, to be + * sure that for 32 bit programs, we don't end up trying to map a > + * 44 address. Has to match ipath_get_base_info() code that sets + * __spi_uregbase */ - if (!pgaddr || pgaddr >= (1ULL<<40)) { - ipath_dev_err(dd, "Bad phys addr %llx, start %lx, end %lx\n", - (unsigned long long)pgaddr, vma->vm_start, vma->vm_end); - return -EINVAL; - } - /* just the offset of the port user registers, not physical addr */ ureg = dd->ipath_uregbase + dd->ipath_palign * pd->port_port; ipath_cdbg(MM, "ushare: pgaddr %llx vm_start=%lx, vmlen %lx\n", (unsigned long long) pgaddr, vma->vm_start, vma->vm_end - vma->vm_start); - if (vma->vm_start & (PAGE_SIZE-1)) { - ipath_dev_err(dd, - "vm_start not aligned: %lx, end=%lx phys %lx\n", - vma->vm_start, vma->vm_end, (unsigned long)pgaddr); - ret = -EINVAL; - } - else if (pgaddr == ureg) + if (pgaddr == ureg) ret = mmap_ureg(vma, dd, ureg); else if (pgaddr == pd->port_piobufs) ret = mmap_piobufs(vma, dd, pd); else if (pgaddr == (u64) pd->port_rcvegr_phys) ret = mmap_rcvegrbufs(vma, pd); - else if (pgaddr == (u64) pd->port_rcvhdrq_phys) { - /* - * The rcvhdrq itself; readonly except on HT-400 (so have - * to allow writable mapping), multiple pages, contiguous - * from an i/o perspective. - */ - unsigned total_size = - ALIGN(dd->ipath_rcvhdrcnt * dd->ipath_rcvhdrentsize - * sizeof(u32), PAGE_SIZE); - ret = ipath_mmap_mem(vma, pd, total_size, 1, - pd->port_rcvhdrq_phys, - "rcvhdrq"); - } - else if (pgaddr == (u64)pd->port_rcvhdrqtailaddr_phys) - /* in-memory copy of rcvhdrq tail register */ - ret = ipath_mmap_mem(vma, pd, PAGE_SIZE, 0, - pd->port_rcvhdrqtailaddr_phys, - "rcvhdrq tail"); + else if (pgaddr == (u64) pd->port_rcvhdrq_phys) + ret = mmap_rcvhdrq(vma, pd); else if (pgaddr == dd->ipath_pioavailregs_phys) - /* in-memory copy of pioavail registers */ - ret = ipath_mmap_mem(vma, pd, PAGE_SIZE, 0, - dd->ipath_pioavailregs_phys, - "pioavail registers"); + ret = mmap_pioavailregs(vma, pd); else ret = -EINVAL; @@ -1392,16 +1442,16 @@ static int find_best_unit(struct file *fp) static int ipath_open(struct inode *in, struct file *fp) { - int ret, user_minor; + int ret, minor; mutex_lock(&ipath_mutex); - user_minor = iminor(in) - IPATH_USER_MINOR_BASE; + minor = iminor(in); ipath_cdbg(VERBOSE, "open on dev %lx (minor %d)\n", - (long)in->i_rdev, user_minor); + (long)in->i_rdev, minor); - if (user_minor) - ret = find_free_port(user_minor - 1, fp); + if (minor) + ret = find_free_port(minor - 1, fp); else ret = find_best_unit(fp); @@ -1486,54 +1536,53 @@ static int ipath_close(struct inode *in, struct file *fp) } if (dd->ipath_kregbase) { - int i; - /* atomically clear receive enable port. */ - clear_bit(INFINIPATH_R_PORTENABLE_SHIFT + port, - &dd->ipath_rcvctrl); - ipath_write_kreg( dd, dd->ipath_kregs->kr_rcvctrl, - dd->ipath_rcvctrl); - /* and read back from chip to be sure that nothing - * else is in flight when we do the rest */ - (void)ipath_read_kreg64(dd, dd->ipath_kregs->kr_scratch); + if (pd->port_rcvhdrtail_uaddr) { + pd->port_rcvhdrtail_uaddr = 0; + pd->port_rcvhdrtail_kvaddr = NULL; + ipath_release_user_pages_on_close( + &pd->port_rcvhdrtail_pagep, 1); + pd->port_rcvhdrtail_pagep = NULL; + ipath_stats.sps_pageunlocks++; + } + ipath_write_kreg_port( + dd, dd->ipath_kregs->kr_rcvhdrtailaddr, + port, 0ULL); + ipath_write_kreg_port( + dd, dd->ipath_kregs->kr_rcvhdraddr, + pd->port_port, 0); /* clean up the pkeys for this port user */ ipath_clean_part_key(pd, dd); + if (port < dd->ipath_cfgports) { + int i = dd->ipath_pbufsport * (port - 1); + ipath_disarm_piobufs(dd, i, dd->ipath_pbufsport); - /* - * be paranoid, and never write 0's to these, just use an - * unused part of the port 0 tail page. Of course, - * rcvhdraddr points to a large chunk of memory, so this - * could still trash things, but at least it won't trash - * page 0, and by disabling the port, it should stop "soon", - * even if a packet or two is in already in flight after we - * disabled the port. - */ - ipath_write_kreg_port(dd, - dd->ipath_kregs->kr_rcvhdrtailaddr, port, - dd->ipath_dummy_hdrq_phys); - ipath_write_kreg_port(dd, dd->ipath_kregs->kr_rcvhdraddr, - pd->port_port, dd->ipath_dummy_hdrq_phys); - - i = dd->ipath_pbufsport * (port - 1); - ipath_disarm_piobufs(dd, i, dd->ipath_pbufsport); - - if (dd->ipath_pageshadow) - unlock_expected_tids(pd); - ipath_stats.sps_ports--; - ipath_cdbg(PROC, "%s[%u] closed port %u:%u\n", - pd->port_comm, pd->port_pid, - dd->ipath_unit, port); - - dd->ipath_f_clear_tids(dd, pd->port_port); + /* atomically clear receive enable port. */ + clear_bit(INFINIPATH_R_PORTENABLE_SHIFT + port, + &dd->ipath_rcvctrl); + ipath_write_kreg( + dd, + dd->ipath_kregs->kr_rcvctrl, + dd->ipath_rcvctrl); + + if (dd->ipath_pageshadow) + unlock_expected_tids(pd); + ipath_stats.sps_ports--; + ipath_cdbg(PROC, "%s[%u] closed port %u:%u\n", + pd->port_comm, pd->port_pid, + dd->ipath_unit, port); + } } pd->port_cnt = 0; pd->port_pid = 0; - dd->ipath_pd[pd->port_port] = NULL; /* before releasing mutex */ + dd->ipath_f_clear_tids(dd, pd->port_port); + + ipath_free_pddata(dd, pd->port_port, 0); + mutex_unlock(&ipath_mutex); - ipath_free_pddata(dd, pd); /* after releasing the mutex */ return ret; } @@ -1810,12 +1859,19 @@ int ipath_user_add(struct ipath_devdata *dd) "error %d\n", -ret); goto bail; } + ret = ipath_diag_init(); + if (ret < 0) { + ipath_dev_err(dd, "Unable to set up diag support: " + "error %d\n", -ret); + goto bail_sma; + } + ret = init_cdev(0, "ipath", &ipath_file_ops, &wildcard_cdev, &wildcard_class_dev); if (ret < 0) { ipath_dev_err(dd, "Could not create wildcard " "minor: error %d\n", -ret); - goto bail_sma; + goto bail_diag; } atomic_set(&user_setup, 1); @@ -1824,28 +1880,31 @@ int ipath_user_add(struct ipath_devdata *dd) snprintf(name, sizeof(name), "ipath%d", dd->ipath_unit); ret = init_cdev(dd->ipath_unit + 1, name, &ipath_file_ops, - &dd->user_cdev, &dd->user_class_dev); + &dd->cdev, &dd->class_dev); if (ret < 0) ipath_dev_err(dd, "Could not create user minor %d, %s\n", dd->ipath_unit + 1, name); goto bail; +bail_diag: + ipath_diag_cleanup(); bail_sma: user_cleanup(); bail: return ret; } -void ipath_user_remove(struct ipath_devdata *dd) +void ipath_user_del(struct ipath_devdata *dd) { - cleanup_cdev(&dd->user_cdev, &dd->user_class_dev); + cleanup_cdev(&dd->cdev, &dd->class_dev); if (atomic_dec_return(&user_count) == 0) { if (atomic_read(&user_setup) == 0) goto bail; cleanup_cdev(&wildcard_cdev, &wildcard_class_dev); + ipath_diag_cleanup(); user_cleanup(); atomic_set(&user_setup, 0); @@ -1853,4 +1912,3 @@ void ipath_user_remove(struct ipath_devdata *dd) bail: return; } - diff --git a/trunk/drivers/infiniband/hw/ipath/ipath_fs.c b/trunk/drivers/infiniband/hw/ipath/ipath_fs.c index 0936d8e8d704..63de3046aff3 100644 --- a/trunk/drivers/infiniband/hw/ipath/ipath_fs.c +++ b/trunk/drivers/infiniband/hw/ipath/ipath_fs.c @@ -1,5 +1,4 @@ /* - * Copyright (c) 2006 QLogic, Inc. All rights reserved. * Copyright (c) 2006 PathScale, Inc. All rights reserved. * * This software is available to you under a choice of one of two @@ -32,6 +31,7 @@ */ #include +#include #include #include #include diff --git a/trunk/drivers/infiniband/hw/ipath/ipath_ht400.c b/trunk/drivers/infiniband/hw/ipath/ipath_ht400.c index 3db015da6e77..fac0a2b74de2 100644 --- a/trunk/drivers/infiniband/hw/ipath/ipath_ht400.c +++ b/trunk/drivers/infiniband/hw/ipath/ipath_ht400.c @@ -1,5 +1,4 @@ /* - * Copyright (c) 2006 QLogic, Inc. All rights reserved. * Copyright (c) 2003, 2004, 2005, 2006 PathScale, Inc. All rights reserved. * * This software is available to you under a choice of one of two @@ -1573,6 +1572,7 @@ void ipath_init_ht400_funcs(struct ipath_devdata *dd) dd->ipath_f_reset = ipath_setup_ht_reset; dd->ipath_f_get_boardname = ipath_ht_boardname; dd->ipath_f_init_hwerrors = ipath_ht_init_hwerrors; + dd->ipath_f_init_hwerrors = ipath_ht_init_hwerrors; dd->ipath_f_early_init = ipath_ht_early_init; dd->ipath_f_handle_hwerrors = ipath_ht_handle_hwerrors; dd->ipath_f_quiet_serdes = ipath_ht_quiet_serdes; diff --git a/trunk/drivers/infiniband/hw/ipath/ipath_init_chip.c b/trunk/drivers/infiniband/hw/ipath/ipath_init_chip.c index 414cdd1d80a6..dc83250d26a6 100644 --- a/trunk/drivers/infiniband/hw/ipath/ipath_init_chip.c +++ b/trunk/drivers/infiniband/hw/ipath/ipath_init_chip.c @@ -1,5 +1,4 @@ /* - * Copyright (c) 2006 QLogic, Inc. All rights reserved. * Copyright (c) 2003, 2004, 2005, 2006 PathScale, Inc. All rights reserved. * * This software is available to you under a choice of one of two @@ -36,7 +35,7 @@ #include #include "ipath_kernel.h" -#include "ipath_common.h" +#include "ips_common.h" /* * min buffers we want to have per port, after driver @@ -115,7 +114,6 @@ static int create_port0_egr(struct ipath_devdata *dd) "eager TID %u\n", e); while (e != 0) dev_kfree_skb(skbs[--e]); - vfree(skbs); ret = -ENOMEM; goto bail; } @@ -277,7 +275,7 @@ static int init_chip_first(struct ipath_devdata *dd, pd->port_port = 0; pd->port_cnt = 1; /* The port 0 pkey table is used by the layer interface. */ - pd->port_pkeys[0] = IPATH_DEFAULT_P_KEY; + pd->port_pkeys[0] = IPS_DEFAULT_P_KEY; dd->ipath_rcvtidcnt = ipath_read_kreg32(dd, dd->ipath_kregs->kr_rcvtidcnt); dd->ipath_rcvtidbase = @@ -411,8 +409,17 @@ static int init_pioavailregs(struct ipath_devdata *dd) /* and its length */ dd->ipath_freezelen = L1_CACHE_BYTES - sizeof(dd->ipath_statusp[0]); - ret = 0; + if (dd->ipath_unit * 64 > (IPATH_PORT0_RCVHDRTAIL_SIZE - 64)) { + ipath_dev_err(dd, "unit %u too large for port 0 " + "rcvhdrtail buffer size\n", dd->ipath_unit); + ret = -ENODEV; + } + else + ret = 0; + /* so we can get current tail in ipath_kreceive(), per chip */ + dd->ipath_hdrqtailptr = &ipath_port0_rcvhdrtail[ + dd->ipath_unit * (64 / sizeof(*ipath_port0_rcvhdrtail))]; done: return ret; } @@ -645,9 +652,8 @@ int ipath_init_chip(struct ipath_devdata *dd, int reinit) { int ret = 0, i; u32 val32, kpiobufs; - u64 val; + u64 val, atmp; struct ipath_portdata *pd = NULL; /* keep gcc4 happy */ - gfp_t gfp_flags = GFP_USER | __GFP_COMP; ret = init_housekeeping(dd, &pd, reinit); if (ret) @@ -769,6 +775,24 @@ int ipath_init_chip(struct ipath_devdata *dd, int reinit) goto done; } + val = ipath_port0_rcvhdrtail_dma + dd->ipath_unit * 64; + + /* verify that the alignment requirement was met */ + ipath_write_kreg_port(dd, dd->ipath_kregs->kr_rcvhdrtailaddr, + 0, val); + atmp = ipath_read_kreg64_port( + dd, dd->ipath_kregs->kr_rcvhdrtailaddr, 0); + if (val != atmp) { + ipath_dev_err(dd, "Catastrophic software error, " + "RcvHdrTailAddr0 written as %llx, " + "read back as %llx from %x\n", + (unsigned long long) val, + (unsigned long long) atmp, + dd->ipath_kregs->kr_rcvhdrtailaddr); + ret = -EINVAL; + goto done; + } + ipath_write_kreg(dd, dd->ipath_kregs->kr_rcvbthqp, IPATH_KD_QP); /* @@ -812,45 +836,25 @@ int ipath_init_chip(struct ipath_devdata *dd, int reinit) /* clear any interrups up to this point (ints still not enabled) */ ipath_write_kreg(dd, dd->ipath_kregs->kr_intclear, -1LL); + ipath_stats.sps_lid[dd->ipath_unit] = dd->ipath_lid; + /* * Set up the port 0 (kernel) rcvhdr q and egr TIDs. If doing * re-init, the simplest way to handle this is to free * existing, and re-allocate. */ - if (reinit) { - struct ipath_portdata *pd = dd->ipath_pd[0]; - dd->ipath_pd[0] = NULL; - ipath_free_pddata(dd, pd); - } + if (reinit) + ipath_free_pddata(dd, 0, 0); dd->ipath_f_tidtemplate(dd); ret = ipath_create_rcvhdrq(dd, pd); - if (!ret) { - dd->ipath_hdrqtailptr = - (volatile __le64 *)pd->port_rcvhdrtail_kvaddr; + if (!ret) ret = create_port0_egr(dd); - } if (ret) ipath_dev_err(dd, "failed to allocate port 0 (kernel) " "rcvhdrq and/or egr bufs\n"); else enable_chip(dd, pd, reinit); - - if (!ret && !reinit) { - /* used when we close a port, for DMA already in flight at close */ - dd->ipath_dummy_hdrq = dma_alloc_coherent( - &dd->pcidev->dev, pd->port_rcvhdrq_size, - &dd->ipath_dummy_hdrq_phys, - gfp_flags); - if (!dd->ipath_dummy_hdrq ) { - dev_info(&dd->pcidev->dev, - "Couldn't allocate 0x%lx bytes for dummy hdrq\n", - pd->port_rcvhdrq_size); - /* fallback to just 0'ing */ - dd->ipath_dummy_hdrq_phys = 0UL; - } - } - /* * cause retrigger of pending interrupts ignored during init, * even if we had errors diff --git a/trunk/drivers/infiniband/hw/ipath/ipath_intr.c b/trunk/drivers/infiniband/hw/ipath/ipath_intr.c index 280e732660a1..3e72a1fe3d73 100644 --- a/trunk/drivers/infiniband/hw/ipath/ipath_intr.c +++ b/trunk/drivers/infiniband/hw/ipath/ipath_intr.c @@ -1,5 +1,4 @@ /* - * Copyright (c) 2006 QLogic, Inc. All rights reserved. * Copyright (c) 2003, 2004, 2005, 2006 PathScale, Inc. All rights reserved. * * This software is available to you under a choice of one of two @@ -34,10 +33,9 @@ #include #include "ipath_kernel.h" +#include "ips_common.h" #include "ipath_layer.h" -#include "ipath_common.h" -/* These are all rcv-related errors which we want to count for stats */ #define E_SUM_PKTERRS \ (INFINIPATH_E_RHDRLEN | INFINIPATH_E_RBADTID | \ INFINIPATH_E_RBADVERSION | INFINIPATH_E_RHDR | \ @@ -46,7 +44,6 @@ INFINIPATH_E_RFORMATERR | INFINIPATH_E_RUNSUPVL | \ INFINIPATH_E_RUNEXPCHAR | INFINIPATH_E_REBP) -/* These are all send-related errors which we want to count for stats */ #define E_SUM_ERRS \ (INFINIPATH_E_SPIOARMLAUNCH | INFINIPATH_E_SUNEXPERRPKTNUM | \ INFINIPATH_E_SDROPPEDDATAPKT | INFINIPATH_E_SDROPPEDSMPPKT | \ @@ -54,18 +51,6 @@ INFINIPATH_E_SMINPKTLEN | INFINIPATH_E_SPKTLEN | \ INFINIPATH_E_INVALIDADDR) -/* - * these are errors that can occur when the link changes state while - * a packet is being sent or received. This doesn't cover things - * like EBP or VCRC that can be the result of a sending having the - * link change state, so we receive a "known bad" packet. - */ -#define E_SUM_LINK_PKTERRS \ - (INFINIPATH_E_SDROPPEDDATAPKT | INFINIPATH_E_SDROPPEDSMPPKT | \ - INFINIPATH_E_SMINPKTLEN | INFINIPATH_E_SPKTLEN | \ - INFINIPATH_E_RSHORTPKTLEN | INFINIPATH_E_RMINPKTLEN | \ - INFINIPATH_E_RUNEXPCHAR) - static u64 handle_e_sum_errs(struct ipath_devdata *dd, ipath_err_t errs) { unsigned long sbuf[4]; @@ -115,7 +100,9 @@ static u64 handle_e_sum_errs(struct ipath_devdata *dd, ipath_err_t errs) if (ipath_debug & __IPATH_PKTDBG) printk("\n"); } - if ((errs & E_SUM_LINK_PKTERRS) && + if ((errs & (INFINIPATH_E_SDROPPEDDATAPKT | + INFINIPATH_E_SDROPPEDSMPPKT | + INFINIPATH_E_SMINPKTLEN)) && !(dd->ipath_flags & IPATH_LINKACTIVE)) { /* * This can happen when SMA is trying to bring the link @@ -124,9 +111,11 @@ static u64 handle_e_sum_errs(struct ipath_devdata *dd, ipath_err_t errs) * valid. We don't want to confuse people, so we just * don't print them, except at debug */ - ipath_dbg("Ignoring packet errors %llx, because link not " - "ACTIVE\n", (unsigned long long) errs); - ignore_this_time = errs & E_SUM_LINK_PKTERRS; + ipath_dbg("Ignoring pktsend errors %llx, because not " + "yet active\n", (unsigned long long) errs); + ignore_this_time = INFINIPATH_E_SDROPPEDDATAPKT | + INFINIPATH_E_SDROPPEDSMPPKT | + INFINIPATH_E_SMINPKTLEN; } return ignore_this_time; @@ -167,29 +156,7 @@ static void handle_e_ibstatuschanged(struct ipath_devdata *dd, */ val = ipath_read_kreg64(dd, dd->ipath_kregs->kr_ibcstatus); lstate = val & IPATH_IBSTATE_MASK; - - /* - * this is confusing enough when it happens that I want to always put it - * on the console and in the logs. If it was a requested state change, - * we'll have already cleared the flags, so we won't print this warning - */ - if ((lstate != IPATH_IBSTATE_ARM && lstate != IPATH_IBSTATE_ACTIVE) - && (dd->ipath_flags & (IPATH_LINKARMED | IPATH_LINKACTIVE))) { - dev_info(&dd->pcidev->dev, "Link state changed from %s to %s\n", - (dd->ipath_flags & IPATH_LINKARMED) ? "ARM" : "ACTIVE", - ib_linkstate(lstate)); - /* - * Flush all queued sends when link went to DOWN or INIT, - * to be sure that they don't block SMA and other MAD packets - */ - ipath_write_kreg(dd, dd->ipath_kregs->kr_sendctrl, - INFINIPATH_S_ABORT); - ipath_disarm_piobufs(dd, dd->ipath_lastport_piobuf, - (unsigned)(dd->ipath_piobcnt2k + - dd->ipath_piobcnt4k) - - dd->ipath_lastport_piobuf); - } - else if (lstate == IPATH_IBSTATE_INIT || lstate == IPATH_IBSTATE_ARM || + if (lstate == IPATH_IBSTATE_INIT || lstate == IPATH_IBSTATE_ARM || lstate == IPATH_IBSTATE_ACTIVE) { /* * only print at SMA if there is a change, debug if not @@ -262,7 +229,6 @@ static void handle_e_ibstatuschanged(struct ipath_devdata *dd, | IPATH_LINKACTIVE | IPATH_LINKARMED); *dd->ipath_statusp &= ~IPATH_STATUS_IB_READY; - dd->ipath_lli_counter = 0; if (!noprint) { if (((dd->ipath_lastibcstat >> INFINIPATH_IBCS_LINKSTATE_SHIFT) & @@ -384,7 +350,7 @@ static unsigned handle_frequent_errors(struct ipath_devdata *dd, return supp_msgs; } -static int handle_errors(struct ipath_devdata *dd, ipath_err_t errs) +static void handle_errors(struct ipath_devdata *dd, ipath_err_t errs) { char msg[512]; u64 ignore_this_time = 0; @@ -413,19 +379,6 @@ static int handle_errors(struct ipath_devdata *dd, ipath_err_t errs) if (errs & E_SUM_ERRS) ignore_this_time = handle_e_sum_errs(dd, errs); - else if ((errs & E_SUM_LINK_PKTERRS) && - !(dd->ipath_flags & IPATH_LINKACTIVE)) { - /* - * This can happen when SMA is trying to bring the link - * up, but the IB link changes state at the "wrong" time. - * The IB logic then complains that the packet isn't - * valid. We don't want to confuse people, so we just - * don't print them, except at debug - */ - ipath_dbg("Ignoring packet errors %llx, because link not " - "ACTIVE\n", (unsigned long long) errs); - ignore_this_time = errs & E_SUM_LINK_PKTERRS; - } if (supp_msgs == 250000) { /* @@ -444,7 +397,7 @@ static int handle_errors(struct ipath_devdata *dd, ipath_err_t errs) if ((dd->ipath_maskederrs & ~dd->ipath_ignorederrs) & ~(INFINIPATH_E_RRCVEGRFULL | INFINIPATH_E_RRCVHDRFULL)) ipath_dev_err(dd, "Disabling error(s) %llx because " - "occurring too frequently (%s)\n", + "occuring too frequently (%s)\n", (unsigned long long) (dd->ipath_maskederrs & ~dd->ipath_ignorederrs), msg); @@ -481,7 +434,7 @@ static int handle_errors(struct ipath_devdata *dd, ipath_err_t errs) INFINIPATH_E_IBSTATUSCHANGED); } if (!errs) - return 0; + return; if (!noprint) /* @@ -540,10 +493,10 @@ static int handle_errors(struct ipath_devdata *dd, ipath_err_t errs) continue; if (hd == (tl + 1) || (!hd && tl == dd->ipath_hdrqlast)) { - if (i == 0) - chkerrpkts = 1; dd->ipath_lastrcvhdrqtails[i] = tl; pd->port_hdrqfull++; + if (i == 0) + chkerrpkts = 1; } } } @@ -605,7 +558,9 @@ static int handle_errors(struct ipath_devdata *dd, ipath_err_t errs) wake_up_interruptible(&ipath_sma_state_wait); } - return chkerrpkts; + if (chkerrpkts) + /* process possible error packets in hdrq */ + ipath_kreceive(dd); } /* this is separate to allow for better optimization of ipath_intr() */ @@ -723,12 +678,7 @@ static void handle_layer_pioavail(struct ipath_devdata *dd) dd->ipath_sendctrl); } -/* - * Handle receive interrupts for user ports; this means a user - * process was waiting for a packet to arrive, and didn't want - * to poll - */ -static void handle_urcv(struct ipath_devdata *dd, u32 istat) +static void handle_rcv(struct ipath_devdata *dd, u32 istat) { u64 portr; int i; @@ -738,17 +688,22 @@ static void handle_urcv(struct ipath_devdata *dd, u32 istat) infinipath_i_rcvavail_mask) | ((istat >> INFINIPATH_I_RCVURG_SHIFT) & infinipath_i_rcvurg_mask); - for (i = 1; i < dd->ipath_cfgports; i++) { + for (i = 0; i < dd->ipath_cfgports; i++) { struct ipath_portdata *pd = dd->ipath_pd[i]; - if (portr & (1 << i) && pd && pd->port_cnt && - test_bit(IPATH_PORT_WAITING_RCV, &pd->port_flag)) { - int rcbit; - clear_bit(IPATH_PORT_WAITING_RCV, - &pd->port_flag); - rcbit = i + INFINIPATH_R_INTRAVAIL_SHIFT; - clear_bit(1UL << rcbit, &dd->ipath_rcvctrl); - wake_up_interruptible(&pd->port_wait); - rcvdint = 1; + if (portr & (1 << i) && pd && + pd->port_cnt) { + if (i == 0) + ipath_kreceive(dd); + else if (test_bit(IPATH_PORT_WAITING_RCV, + &pd->port_flag)) { + int rcbit; + clear_bit(IPATH_PORT_WAITING_RCV, + &pd->port_flag); + rcbit = i + INFINIPATH_R_INTRAVAIL_SHIFT; + clear_bit(1UL << rcbit, &dd->ipath_rcvctrl); + wake_up_interruptible(&pd->port_wait); + rcvdint = 1; + } } } if (rcvdint) { @@ -764,19 +719,16 @@ static void handle_urcv(struct ipath_devdata *dd, u32 istat) irqreturn_t ipath_intr(int irq, void *data, struct pt_regs *regs) { struct ipath_devdata *dd = data; - u32 istat, chk0rcv = 0; + u32 istat; ipath_err_t estat = 0; - irqreturn_t ret; - u32 oldhead, curtail; static unsigned unexpected = 0; - static const u32 port0rbits = (1U<ipath_flags & IPATH_PRESENT)) { + if(!(dd->ipath_flags & IPATH_PRESENT)) { + /* this is mostly so we don't try to touch the chip while + * it is being reset */ /* - * This return value is not great, but we do not want the + * This return value is perhaps odd, but we do not want the * interrupt core code to remove our interrupt handler * because we don't appear to be handling an interrupt * during a chip reset. @@ -784,51 +736,7 @@ irqreturn_t ipath_intr(int irq, void *data, struct pt_regs *regs) return IRQ_HANDLED; } - /* - * this needs to be flags&initted, not statusp, so we keep - * taking interrupts even after link goes down, etc. - * Also, we *must* clear the interrupt at some point, or we won't - * take it again, which can be real bad for errors, etc... - */ - - if (!(dd->ipath_flags & IPATH_INITTED)) { - ipath_bad_intr(dd, &unexpected); - ret = IRQ_NONE; - goto bail; - } - - /* - * We try to avoid reading the interrupt status register, since - * that's a PIO read, and stalls the processor for up to about - * ~0.25 usec. The idea is that if we processed a port0 packet, - * we blindly clear the port 0 receive interrupt bits, and nothing - * else, then return. If other interrupts are pending, the chip - * will re-interrupt us as soon as we write the intclear register. - * We then won't process any more kernel packets (if not the 2nd - * time, then the 3rd or 4th) and we'll then handle the other - * interrupts. We clear the interrupts first so that we don't - * lose intr for later packets that arrive while we are processing. - */ - oldhead = dd->ipath_port0head; - curtail = (u32)le64_to_cpu(*dd->ipath_hdrqtailptr); - if (oldhead != curtail) { - if (dd->ipath_flags & IPATH_GPIO_INTR) { - ipath_write_kreg(dd, dd->ipath_kregs->kr_gpio_clear, - (u64) (1 << 2)); - istat = port0rbits | INFINIPATH_I_GPIO; - } - else - istat = port0rbits; - ipath_write_kreg(dd, dd->ipath_kregs->kr_intclear, istat); - ipath_kreceive(dd); - if (oldhead != dd->ipath_port0head) { - ipath_stats.sps_fastrcvint++; - goto done; - } - } - istat = ipath_read_kreg32(dd, dd->ipath_kregs->kr_intstatus); - if (unlikely(!istat)) { ipath_stats.sps_nullintr++; ret = IRQ_NONE; /* not our interrupt, or already handled */ @@ -841,17 +749,31 @@ irqreturn_t ipath_intr(int irq, void *data, struct pt_regs *regs) goto bail; } + ipath_stats.sps_ints++; + + /* + * this needs to be flags&initted, not statusp, so we keep + * taking interrupts even after link goes down, etc. + * Also, we *must* clear the interrupt at some point, or we won't + * take it again, which can be real bad for errors, etc... + */ + + if (!(dd->ipath_flags & IPATH_INITTED)) { + ipath_bad_intr(dd, &unexpected); + ret = IRQ_NONE; + goto bail; + } if (unexpected) unexpected = 0; - if (unlikely(istat & ~infinipath_i_bitsextant)) + ipath_cdbg(VERBOSE, "intr stat=0x%x\n", istat); + + if (istat & ~infinipath_i_bitsextant) ipath_dev_err(dd, "interrupt with unknown interrupts %x set\n", istat & (u32) ~ infinipath_i_bitsextant); - else - ipath_cdbg(VERBOSE, "intr stat=0x%x\n", istat); - if (unlikely(istat & INFINIPATH_I_ERROR)) { + if (istat & INFINIPATH_I_ERROR) { ipath_stats.sps_errints++; estat = ipath_read_kreg64(dd, dd->ipath_kregs->kr_errorstatus); @@ -866,18 +788,10 @@ irqreturn_t ipath_intr(int irq, void *data, struct pt_regs *regs) ipath_dev_err(dd, "Read of error status failed " "(all bits set); ignoring\n"); else - if (handle_errors(dd, estat)) - /* force calling ipath_kreceive() */ - chk0rcv = 1; + handle_errors(dd, estat); } if (istat & INFINIPATH_I_GPIO) { - /* - * Packets are available in the port 0 rcv queue. - * Eventually this needs to be generalized to check - * IPATH_GPIO_INTR, and the specific GPIO bit, if - * GPIO interrupts are used for anything else. - */ if (unlikely(!(dd->ipath_flags & IPATH_GPIO_INTR))) { u32 gpiostatus; gpiostatus = ipath_read_kreg32( @@ -890,39 +804,27 @@ irqreturn_t ipath_intr(int irq, void *data, struct pt_regs *regs) else { /* Clear GPIO status bit 2 */ ipath_write_kreg(dd, dd->ipath_kregs->kr_gpio_clear, - (u64) (1 << 2)); - chk0rcv = 1; + (u64) (1 << 2)); + + /* + * Packets are available in the port 0 rcv queue. + * Eventually this needs to be generalized to check + * IPATH_GPIO_INTR, and the specific GPIO bit, if + * GPIO interrupts are used for anything else. + */ + ipath_kreceive(dd); } } - chk0rcv |= istat & port0rbits; /* - * Clear the interrupt bits we found set, unless they are receive - * related, in which case we already cleared them above, and don't - * want to clear them again, because we might lose an interrupt. - * Clear it early, so we "know" know the chip will have seen this by - * the time we process the queue, and will re-interrupt if necessary. - * The processor itself won't take the interrupt again until we return. + * clear the ones we will deal with on this round + * We clear it early, mostly for receive interrupts, so we + * know the chip will have seen this by the time we process + * the queue, and will re-interrupt if necessary. The processor + * itself won't take the interrupt again until we return. */ ipath_write_kreg(dd, dd->ipath_kregs->kr_intclear, istat); - /* - * handle port0 receive before checking for pio buffers available, - * since receives can overflow; piobuf waiters can afford a few - * extra cycles, since they were waiting anyway, and user's waiting - * for receive are at the bottom. - */ - if (chk0rcv) { - ipath_kreceive(dd); - istat &= ~port0rbits; - } - - if (istat & ((infinipath_i_rcvavail_mask << - INFINIPATH_I_RCVAVAIL_SHIFT) - | (infinipath_i_rcvurg_mask << - INFINIPATH_I_RCVURG_SHIFT))) - handle_urcv(dd, istat); - if (istat & INFINIPATH_I_SPIOBUFAVAIL) { clear_bit(IPATH_S_PIOINTBUFAVAIL, &dd->ipath_sendctrl); ipath_write_kreg(dd, dd->ipath_kregs->kr_sendctrl, @@ -934,7 +836,17 @@ irqreturn_t ipath_intr(int irq, void *data, struct pt_regs *regs) handle_layer_pioavail(dd); } -done: + /* + * we check for both transition from empty to non-empty, and urgent + * packets (those with the interrupt bit set in the header) + */ + + if (istat & ((infinipath_i_rcvavail_mask << + INFINIPATH_I_RCVAVAIL_SHIFT) + | (infinipath_i_rcvurg_mask << + INFINIPATH_I_RCVURG_SHIFT))) + handle_rcv(dd, istat); + ret = IRQ_HANDLED; bail: diff --git a/trunk/drivers/infiniband/hw/ipath/ipath_kernel.h b/trunk/drivers/infiniband/hw/ipath/ipath_kernel.h index e9f374fb641e..5d92d57b6f54 100644 --- a/trunk/drivers/infiniband/hw/ipath/ipath_kernel.h +++ b/trunk/drivers/infiniband/hw/ipath/ipath_kernel.h @@ -1,7 +1,6 @@ #ifndef _IPATH_KERNEL_H #define _IPATH_KERNEL_H /* - * Copyright (c) 2006 QLogic, Inc. All rights reserved. * Copyright (c) 2003, 2004, 2005, 2006 PathScale, Inc. All rights reserved. * * This software is available to you under a choice of one of two @@ -62,7 +61,9 @@ struct ipath_portdata { /* rcvhdrq base, needs mmap before useful */ void *port_rcvhdrq; /* kernel virtual address where hdrqtail is updated */ - volatile __le64 *port_rcvhdrtail_kvaddr; + u64 *port_rcvhdrtail_kvaddr; + /* page * used for uaddr */ + struct page *port_rcvhdrtail_pagep; /* * temp buffer for expected send setup, allocated at open, instead * of each setup call @@ -77,7 +78,11 @@ struct ipath_portdata { dma_addr_t port_rcvegr_phys; /* mmap of hdrq, must fit in 44 bits */ dma_addr_t port_rcvhdrq_phys; - dma_addr_t port_rcvhdrqtailaddr_phys; + /* + * the actual user address that we ipath_mlock'ed, so we can + * ipath_munlock it at close + */ + unsigned long port_rcvhdrtail_uaddr; /* * number of opens on this instance (0 or 1; ignoring forks, dup, * etc. for now) @@ -152,11 +157,17 @@ struct ipath_devdata { unsigned long ipath_physaddr; /* base of memory alloced for ipath_kregbase, for free */ u64 *ipath_kregalloc; + /* + * version of kregbase that doesn't have high bits set (for 32 bit + * programs, so mmap64 44 bit works) + */ + u64 __iomem *ipath_kregvirt; /* * virtual address where port0 rcvhdrqtail updated for this unit. * only written to by the chip, not the driver. */ volatile __le64 *ipath_hdrqtailptr; + dma_addr_t ipath_dma_addr; /* ipath_cfgports pointers */ struct ipath_portdata **ipath_pd; /* sk_buffs used by port 0 eager receive queue */ @@ -343,17 +354,13 @@ struct ipath_devdata { char *ipath_freezemsg; /* pci access data structure */ struct pci_dev *pcidev; - struct cdev *user_cdev; - struct cdev *diag_cdev; - struct class_device *user_class_dev; - struct class_device *diag_class_dev; + struct cdev *cdev; + struct class_device *class_dev; /* timer used to prevent stats overflow, error throttling, etc. */ struct timer_list ipath_stats_timer; /* check for stale messages in rcv queue */ /* only allow one intr at a time. */ unsigned long ipath_rcv_pending; - void *ipath_dummy_hdrq; /* used after port close */ - dma_addr_t ipath_dummy_hdrq_phys; /* * Shadow copies of registers; size indicates read access size. @@ -493,11 +500,8 @@ struct ipath_devdata { u16 ipath_lid; /* list of pkeys programmed; 0 if not set */ u16 ipath_pkeys[4]; - /* - * ASCII serial number, from flash, large enough for original - * all digit strings, and longer QLogic serial number format - */ - u8 ipath_serial[16]; + /* ASCII serial number, from flash */ + u8 ipath_serial[12]; /* human readable board version */ u8 ipath_boardversion[80]; /* chip major rev, from ipath_revision */ @@ -512,13 +516,13 @@ struct ipath_devdata { u8 ipath_pci_cacheline; /* LID mask control */ u8 ipath_lmc; - - /* local link integrity counter */ - u32 ipath_lli_counter; - /* local link integrity errors */ - u32 ipath_lli_errors; }; +extern volatile __le64 *ipath_port0_rcvhdrtail; +extern dma_addr_t ipath_port0_rcvhdrtail_dma; + +#define IPATH_PORT0_RCVHDRTAIL_SIZE PAGE_SIZE + extern struct list_head ipath_dev_list; extern spinlock_t ipath_devs_lock; extern struct ipath_devdata *ipath_lookup(int unit); @@ -533,7 +537,7 @@ extern int __ipath_verbs_piobufavail(struct ipath_devdata *); extern int __ipath_verbs_rcv(struct ipath_devdata *, void *, void *, u32); void ipath_layer_add(struct ipath_devdata *); -void ipath_layer_remove(struct ipath_devdata *); +void ipath_layer_del(struct ipath_devdata *); int ipath_init_chip(struct ipath_devdata *, int); int ipath_enable_wc(struct ipath_devdata *dd); @@ -547,14 +551,14 @@ int ipath_cdev_init(int minor, char *name, struct file_operations *fops, void ipath_cdev_cleanup(struct cdev **cdevp, struct class_device **class_devp); -int ipath_diag_add(struct ipath_devdata *); -void ipath_diag_remove(struct ipath_devdata *); +int ipath_diag_init(void); +void ipath_diag_cleanup(void); void ipath_diag_bringup_link(struct ipath_devdata *); extern wait_queue_head_t ipath_sma_state_wait; int ipath_user_add(struct ipath_devdata *dd); -void ipath_user_remove(struct ipath_devdata *dd); +void ipath_user_del(struct ipath_devdata *dd); struct sk_buff *ipath_alloc_skb(struct ipath_devdata *dd, gfp_t); @@ -578,7 +582,7 @@ void ipath_disarm_piobufs(struct ipath_devdata *, unsigned first, unsigned cnt); int ipath_create_rcvhdrq(struct ipath_devdata *, struct ipath_portdata *); -void ipath_free_pddata(struct ipath_devdata *, struct ipath_portdata *); +void ipath_free_pddata(struct ipath_devdata *, u32, int); int ipath_parse_ushort(const char *str, unsigned short *valp); @@ -716,8 +720,13 @@ u64 ipath_read_kreg64_port(const struct ipath_devdata *, ipath_kreg, * @port: port number * * Return the contents of a register that is virtualized to be per port. - * Returns -1 on errors (not distinguishable from valid contents at - * runtime; we may add a separate error variable at some point). + * Prints a debug message and returns -1 on errors (not distinguishable from + * valid contents at runtime; we may add a separate error variable at some + * point). + * + * This is normally not used by the kernel, but may be for debugging, and + * has a different implementation than user mode, which is why it's not in + * _common.h. */ static inline u32 ipath_read_ureg32(const struct ipath_devdata *dd, ipath_ureg regno, int port) @@ -833,10 +842,9 @@ extern struct mutex ipath_mutex; #define IPATH_DRV_NAME "ipath_core" #define IPATH_MAJOR 233 -#define IPATH_USER_MINOR_BASE 0 #define IPATH_SMA_MINOR 128 -#define IPATH_DIAG_MINOR_BASE 129 -#define IPATH_NMINORS 255 +#define IPATH_DIAG_MINOR 129 +#define IPATH_NMINORS 130 #define ipath_dev_err(dd,fmt,...) \ do { \ diff --git a/trunk/drivers/infiniband/hw/ipath/ipath_keys.c b/trunk/drivers/infiniband/hw/ipath/ipath_keys.c index 46773c673a1a..5ae8761f9dd2 100644 --- a/trunk/drivers/infiniband/hw/ipath/ipath_keys.c +++ b/trunk/drivers/infiniband/hw/ipath/ipath_keys.c @@ -1,5 +1,4 @@ /* - * Copyright (c) 2006 QLogic, Inc. All rights reserved. * Copyright (c) 2005, 2006 PathScale, Inc. All rights reserved. * * This software is available to you under a choice of one of two @@ -121,7 +120,6 @@ int ipath_lkey_ok(struct ipath_lkey_table *rkt, struct ipath_sge *isge, struct ib_sge *sge, int acc) { struct ipath_mregion *mr; - unsigned n, m; size_t off; int ret; @@ -153,22 +151,20 @@ int ipath_lkey_ok(struct ipath_lkey_table *rkt, struct ipath_sge *isge, } off += mr->offset; - m = 0; - n = 0; - while (off >= mr->map[m]->segs[n].length) { - off -= mr->map[m]->segs[n].length; - n++; - if (n >= IPATH_SEGSZ) { - m++; - n = 0; + isge->mr = mr; + isge->m = 0; + isge->n = 0; + while (off >= mr->map[isge->m]->segs[isge->n].length) { + off -= mr->map[isge->m]->segs[isge->n].length; + isge->n++; + if (isge->n >= IPATH_SEGSZ) { + isge->m++; + isge->n = 0; } } - isge->mr = mr; - isge->vaddr = mr->map[m]->segs[n].vaddr + off; - isge->length = mr->map[m]->segs[n].length - off; + isge->vaddr = mr->map[isge->m]->segs[isge->n].vaddr + off; + isge->length = mr->map[isge->m]->segs[isge->n].length - off; isge->sge_length = sge->length; - isge->m = m; - isge->n = n; ret = 1; @@ -193,7 +189,6 @@ int ipath_rkey_ok(struct ipath_ibdev *dev, struct ipath_sge_state *ss, struct ipath_lkey_table *rkt = &dev->lk_table; struct ipath_sge *sge = &ss->sge; struct ipath_mregion *mr; - unsigned n, m; size_t off; int ret; @@ -211,22 +206,20 @@ int ipath_rkey_ok(struct ipath_ibdev *dev, struct ipath_sge_state *ss, } off += mr->offset; - m = 0; - n = 0; - while (off >= mr->map[m]->segs[n].length) { - off -= mr->map[m]->segs[n].length; - n++; - if (n >= IPATH_SEGSZ) { - m++; - n = 0; + sge->mr = mr; + sge->m = 0; + sge->n = 0; + while (off >= mr->map[sge->m]->segs[sge->n].length) { + off -= mr->map[sge->m]->segs[sge->n].length; + sge->n++; + if (sge->n >= IPATH_SEGSZ) { + sge->m++; + sge->n = 0; } } - sge->mr = mr; - sge->vaddr = mr->map[m]->segs[n].vaddr + off; - sge->length = mr->map[m]->segs[n].length - off; + sge->vaddr = mr->map[sge->m]->segs[sge->n].vaddr + off; + sge->length = mr->map[sge->m]->segs[sge->n].length - off; sge->sge_length = len; - sge->m = m; - sge->n = n; ss->sg_list = NULL; ss->num_sge = 1; diff --git a/trunk/drivers/infiniband/hw/ipath/ipath_layer.c b/trunk/drivers/infiniband/hw/ipath/ipath_layer.c index b28c6f81c731..9ec4ac77b87f 100644 --- a/trunk/drivers/infiniband/hw/ipath/ipath_layer.c +++ b/trunk/drivers/infiniband/hw/ipath/ipath_layer.c @@ -1,5 +1,4 @@ /* - * Copyright (c) 2006 QLogic, Inc. All rights reserved. * Copyright (c) 2003, 2004, 2005, 2006 PathScale, Inc. All rights reserved. * * This software is available to you under a choice of one of two @@ -41,8 +40,8 @@ #include #include "ipath_kernel.h" +#include "ips_common.h" #include "ipath_layer.h" -#include "ipath_common.h" /* Acquire before ipath_devs_lock. */ static DEFINE_MUTEX(ipath_layer_mutex); @@ -300,8 +299,9 @@ int ipath_layer_set_mtu(struct ipath_devdata *dd, u16 arg) EXPORT_SYMBOL_GPL(ipath_layer_set_mtu); -int ipath_set_lid(struct ipath_devdata *dd, u32 arg, u8 lmc) +int ipath_set_sps_lid(struct ipath_devdata *dd, u32 arg, u8 lmc) { + ipath_stats.sps_lid[dd->ipath_unit] = arg; dd->ipath_lid = arg; dd->ipath_lmc = lmc; @@ -315,7 +315,7 @@ int ipath_set_lid(struct ipath_devdata *dd, u32 arg, u8 lmc) return 0; } -EXPORT_SYMBOL_GPL(ipath_set_lid); +EXPORT_SYMBOL_GPL(ipath_set_sps_lid); int ipath_layer_set_guid(struct ipath_devdata *dd, __be64 guid) { @@ -340,26 +340,18 @@ u32 ipath_layer_get_nguid(struct ipath_devdata *dd) EXPORT_SYMBOL_GPL(ipath_layer_get_nguid); -u32 ipath_layer_get_majrev(struct ipath_devdata *dd) +int ipath_layer_query_device(struct ipath_devdata *dd, u32 * vendor, + u32 * boardrev, u32 * majrev, u32 * minrev) { - return dd->ipath_majrev; -} - -EXPORT_SYMBOL_GPL(ipath_layer_get_majrev); + *vendor = dd->ipath_vendorid; + *boardrev = dd->ipath_boardrev; + *majrev = dd->ipath_majrev; + *minrev = dd->ipath_minrev; -u32 ipath_layer_get_minrev(struct ipath_devdata *dd) -{ - return dd->ipath_minrev; -} - -EXPORT_SYMBOL_GPL(ipath_layer_get_minrev); - -u32 ipath_layer_get_pcirev(struct ipath_devdata *dd) -{ - return dd->ipath_pcirev; + return 0; } -EXPORT_SYMBOL_GPL(ipath_layer_get_pcirev); +EXPORT_SYMBOL_GPL(ipath_layer_query_device); u32 ipath_layer_get_flags(struct ipath_devdata *dd) { @@ -382,13 +374,6 @@ u16 ipath_layer_get_deviceid(struct ipath_devdata *dd) EXPORT_SYMBOL_GPL(ipath_layer_get_deviceid); -u32 ipath_layer_get_vendorid(struct ipath_devdata *dd) -{ - return dd->ipath_vendorid; -} - -EXPORT_SYMBOL_GPL(ipath_layer_get_vendorid); - u64 ipath_layer_get_lastibcstat(struct ipath_devdata *dd) { return dd->ipath_lastibcstat; @@ -418,7 +403,7 @@ void ipath_layer_add(struct ipath_devdata *dd) mutex_unlock(&ipath_layer_mutex); } -void ipath_layer_remove(struct ipath_devdata *dd) +void ipath_layer_del(struct ipath_devdata *dd) { mutex_lock(&ipath_layer_mutex); @@ -622,7 +607,7 @@ int ipath_layer_open(struct ipath_devdata *dd, u32 * pktmax) goto bail; } - ret = ipath_setrcvhdrsize(dd, IPATH_HEADER_QUEUE_WORDS); + ret = ipath_setrcvhdrsize(dd, NUM_OF_EXTRA_WORDS_IN_HEADER_QUEUE); if (ret < 0) goto bail; @@ -631,9 +616,9 @@ int ipath_layer_open(struct ipath_devdata *dd, u32 * pktmax) if (*dd->ipath_statusp & IPATH_STATUS_IB_READY) intval |= IPATH_LAYER_INT_IF_UP; - if (dd->ipath_lid) + if (ipath_stats.sps_lid[dd->ipath_unit]) intval |= IPATH_LAYER_INT_LID; - if (dd->ipath_mlid) + if (ipath_stats.sps_mlid[dd->ipath_unit]) intval |= IPATH_LAYER_INT_BCAST; /* * do this on open, in case low level is already up and @@ -899,7 +884,7 @@ static void copy_io(u32 __iomem *piobuf, struct ipath_sge_state *ss, /** * ipath_verbs_send - send a packet from the verbs layer * @dd: the infinipath device - * @hdrwords: the number of words in the header + * @hdrwords: the number of works in the header * @hdr: the packet header * @len: the length of the packet in bytes * @ss: the SGE to send @@ -1031,22 +1016,19 @@ int ipath_layer_get_counters(struct ipath_devdata *dd, ipath_snap_cntr(dd, dd->ipath_cregs->cr_ibsymbolerrcnt); cntrs->link_error_recovery_counter = ipath_snap_cntr(dd, dd->ipath_cregs->cr_iblinkerrrecovcnt); - /* - * The link downed counter counts when the other side downs the - * connection. We add in the number of times we downed the link - * due to local link integrity errors to compensate. - */ cntrs->link_downed_counter = ipath_snap_cntr(dd, dd->ipath_cregs->cr_iblinkdowncnt); cntrs->port_rcv_errors = ipath_snap_cntr(dd, dd->ipath_cregs->cr_rxdroppktcnt) + ipath_snap_cntr(dd, dd->ipath_cregs->cr_rcvovflcnt) + ipath_snap_cntr(dd, dd->ipath_cregs->cr_portovflcnt) + + ipath_snap_cntr(dd, dd->ipath_cregs->cr_errrcvflowctrlcnt) + ipath_snap_cntr(dd, dd->ipath_cregs->cr_err_rlencnt) + ipath_snap_cntr(dd, dd->ipath_cregs->cr_invalidrlencnt) + ipath_snap_cntr(dd, dd->ipath_cregs->cr_erricrccnt) + ipath_snap_cntr(dd, dd->ipath_cregs->cr_errvcrccnt) + ipath_snap_cntr(dd, dd->ipath_cregs->cr_errlpcrccnt) + + ipath_snap_cntr(dd, dd->ipath_cregs->cr_errlinkcnt) + ipath_snap_cntr(dd, dd->ipath_cregs->cr_badformatcnt); cntrs->port_rcv_remphys_errors = ipath_snap_cntr(dd, dd->ipath_cregs->cr_rcvebpcnt); @@ -1060,8 +1042,6 @@ int ipath_layer_get_counters(struct ipath_devdata *dd, ipath_snap_cntr(dd, dd->ipath_cregs->cr_pktsendcnt); cntrs->port_rcv_packets = ipath_snap_cntr(dd, dd->ipath_cregs->cr_pktrcvcnt); - cntrs->local_link_integrity_errors = dd->ipath_lli_errors; - cntrs->excessive_buffer_overrun_errors = 0; /* XXX */ ret = 0; @@ -1106,10 +1086,10 @@ int ipath_layer_send_hdr(struct ipath_devdata *dd, struct ether_header *hdr) } vlsllnh = *((__be16 *) hdr); - if (vlsllnh != htons(IPATH_LRH_BTH)) { + if (vlsllnh != htons(IPS_LRH_BTH)) { ipath_dbg("Warning: lrh[0] wrong (%x, not %x); " "not sending\n", be16_to_cpu(vlsllnh), - IPATH_LRH_BTH); + IPS_LRH_BTH); ret = -EINVAL; } if (ret) diff --git a/trunk/drivers/infiniband/hw/ipath/ipath_layer.h b/trunk/drivers/infiniband/hw/ipath/ipath_layer.h index 71485096fcac..6fefd15bd2da 100644 --- a/trunk/drivers/infiniband/hw/ipath/ipath_layer.h +++ b/trunk/drivers/infiniband/hw/ipath/ipath_layer.h @@ -1,5 +1,4 @@ /* - * Copyright (c) 2006 QLogic, Inc. All rights reserved. * Copyright (c) 2003, 2004, 2005, 2006 PathScale, Inc. All rights reserved. * * This software is available to you under a choice of one of two @@ -55,8 +54,6 @@ struct ipath_layer_counters { u64 port_rcv_data; u64 port_xmit_packets; u64 port_rcv_packets; - u32 local_link_integrity_errors; - u32 excessive_buffer_overrun_errors; }; /* @@ -129,7 +126,7 @@ u16 ipath_layer_get_bcast(struct ipath_devdata *dd); u32 ipath_layer_get_cr_errpkey(struct ipath_devdata *dd); int ipath_layer_set_linkstate(struct ipath_devdata *dd, u8 state); int ipath_layer_set_mtu(struct ipath_devdata *, u16); -int ipath_set_lid(struct ipath_devdata *, u32, u8); +int ipath_set_sps_lid(struct ipath_devdata *, u32, u8); int ipath_layer_send_hdr(struct ipath_devdata *dd, struct ether_header *hdr); int ipath_verbs_send(struct ipath_devdata *dd, u32 hdrwords, @@ -146,13 +143,11 @@ int ipath_layer_want_buffer(struct ipath_devdata *dd); int ipath_layer_set_guid(struct ipath_devdata *, __be64 guid); __be64 ipath_layer_get_guid(struct ipath_devdata *); u32 ipath_layer_get_nguid(struct ipath_devdata *); -u32 ipath_layer_get_majrev(struct ipath_devdata *); -u32 ipath_layer_get_minrev(struct ipath_devdata *); -u32 ipath_layer_get_pcirev(struct ipath_devdata *); +int ipath_layer_query_device(struct ipath_devdata *, u32 * vendor, + u32 * boardrev, u32 * majrev, u32 * minrev); u32 ipath_layer_get_flags(struct ipath_devdata *dd); struct device *ipath_layer_get_device(struct ipath_devdata *dd); u16 ipath_layer_get_deviceid(struct ipath_devdata *dd); -u32 ipath_layer_get_vendorid(struct ipath_devdata *); u64 ipath_layer_get_lastibcstat(struct ipath_devdata *dd); u32 ipath_layer_get_ibmtu(struct ipath_devdata *dd); int ipath_layer_enable_timer(struct ipath_devdata *dd); diff --git a/trunk/drivers/infiniband/hw/ipath/ipath_mad.c b/trunk/drivers/infiniband/hw/ipath/ipath_mad.c index d3402341b7d0..1a9d0a2c33c3 100644 --- a/trunk/drivers/infiniband/hw/ipath/ipath_mad.c +++ b/trunk/drivers/infiniband/hw/ipath/ipath_mad.c @@ -1,5 +1,4 @@ /* - * Copyright (c) 2006 QLogic, Inc. All rights reserved. * Copyright (c) 2005, 2006 PathScale, Inc. All rights reserved. * * This software is available to you under a choice of one of two @@ -35,7 +34,7 @@ #include "ipath_kernel.h" #include "ipath_verbs.h" -#include "ipath_common.h" +#include "ips_common.h" #define IB_SMP_UNSUP_VERSION __constant_htons(0x0004) #define IB_SMP_UNSUP_METHOD __constant_htons(0x0008) @@ -85,7 +84,7 @@ static int recv_subn_get_nodeinfo(struct ib_smp *smp, { struct nodeinfo *nip = (struct nodeinfo *)&smp->data; struct ipath_devdata *dd = to_idev(ibdev)->dd; - u32 vendor, majrev, minrev; + u32 vendor, boardid, majrev, minrev; if (smp->attr_mod) smp->status |= IB_SMP_INVALID_FIELD; @@ -105,11 +104,9 @@ static int recv_subn_get_nodeinfo(struct ib_smp *smp, nip->port_guid = nip->sys_guid; nip->partition_cap = cpu_to_be16(ipath_layer_get_npkeys(dd)); nip->device_id = cpu_to_be16(ipath_layer_get_deviceid(dd)); - majrev = ipath_layer_get_majrev(dd); - minrev = ipath_layer_get_minrev(dd); + ipath_layer_query_device(dd, &vendor, &boardid, &majrev, &minrev); nip->revision = cpu_to_be32((majrev << 16) | minrev); nip->local_port_num = port; - vendor = ipath_layer_get_vendorid(dd); nip->vendor_id[0] = 0; nip->vendor_id[1] = vendor >> 8; nip->vendor_id[2] = vendor; @@ -218,7 +215,7 @@ static int recv_subn_get_portinfo(struct ib_smp *smp, /* P_KeyViolations are counted by hardware. */ pip->pkey_violations = cpu_to_be16((ipath_layer_get_cr_errpkey(dev->dd) - - dev->z_pkey_violations) & 0xFFFF); + dev->n_pkey_violations) & 0xFFFF); pip->qkey_violations = cpu_to_be16(dev->qkey_violations); /* Only the hardware GUID is supported for now */ pip->guid_cap = 1; @@ -306,9 +303,9 @@ static int recv_subn_set_portinfo(struct ib_smp *smp, lid = be16_to_cpu(pip->lid); if (lid != ipath_layer_get_lid(dev->dd)) { /* Must be a valid unicast LID address. */ - if (lid == 0 || lid >= IPATH_MULTICAST_LID_BASE) + if (lid == 0 || lid >= IPS_MULTICAST_LID_BASE) goto err; - ipath_set_lid(dev->dd, lid, pip->mkeyprot_resv_lmc & 7); + ipath_set_sps_lid(dev->dd, lid, pip->mkeyprot_resv_lmc & 7); event.event = IB_EVENT_LID_CHANGE; ib_dispatch_event(&event); } @@ -316,7 +313,7 @@ static int recv_subn_set_portinfo(struct ib_smp *smp, smlid = be16_to_cpu(pip->sm_lid); if (smlid != dev->sm_lid) { /* Must be a valid unicast LID address. */ - if (smlid == 0 || smlid >= IPATH_MULTICAST_LID_BASE) + if (smlid == 0 || smlid >= IPS_MULTICAST_LID_BASE) goto err; dev->sm_lid = smlid; event.event = IB_EVENT_SM_CHANGE; @@ -392,7 +389,7 @@ static int recv_subn_set_portinfo(struct ib_smp *smp, * later. */ if (pip->pkey_violations == 0) - dev->z_pkey_violations = + dev->n_pkey_violations = ipath_layer_get_cr_errpkey(dev->dd); if (pip->qkey_violations == 0) @@ -613,9 +610,6 @@ struct ib_pma_portcounters { #define IB_PMA_SEL_PORT_RCV_ERRORS __constant_htons(0x0008) #define IB_PMA_SEL_PORT_RCV_REMPHYS_ERRORS __constant_htons(0x0010) #define IB_PMA_SEL_PORT_XMIT_DISCARDS __constant_htons(0x0040) -#define IB_PMA_SEL_LOCAL_LINK_INTEGRITY_ERRORS __constant_htons(0x0200) -#define IB_PMA_SEL_EXCESSIVE_BUFFER_OVERRUNS __constant_htons(0x0400) -#define IB_PMA_SEL_PORT_VL15_DROPPED __constant_htons(0x0800) #define IB_PMA_SEL_PORT_XMIT_DATA __constant_htons(0x1000) #define IB_PMA_SEL_PORT_RCV_DATA __constant_htons(0x2000) #define IB_PMA_SEL_PORT_XMIT_PACKETS __constant_htons(0x4000) @@ -850,22 +844,18 @@ static int recv_pma_get_portcounters(struct ib_perf *pmp, ipath_layer_get_counters(dev->dd, &cntrs); /* Adjust counters for any resets done. */ - cntrs.symbol_error_counter -= dev->z_symbol_error_counter; + cntrs.symbol_error_counter -= dev->n_symbol_error_counter; cntrs.link_error_recovery_counter -= - dev->z_link_error_recovery_counter; - cntrs.link_downed_counter -= dev->z_link_downed_counter; + dev->n_link_error_recovery_counter; + cntrs.link_downed_counter -= dev->n_link_downed_counter; cntrs.port_rcv_errors += dev->rcv_errors; - cntrs.port_rcv_errors -= dev->z_port_rcv_errors; - cntrs.port_rcv_remphys_errors -= dev->z_port_rcv_remphys_errors; - cntrs.port_xmit_discards -= dev->z_port_xmit_discards; - cntrs.port_xmit_data -= dev->z_port_xmit_data; - cntrs.port_rcv_data -= dev->z_port_rcv_data; - cntrs.port_xmit_packets -= dev->z_port_xmit_packets; - cntrs.port_rcv_packets -= dev->z_port_rcv_packets; - cntrs.local_link_integrity_errors -= - dev->z_local_link_integrity_errors; - cntrs.excessive_buffer_overrun_errors -= - dev->z_excessive_buffer_overrun_errors; + cntrs.port_rcv_errors -= dev->n_port_rcv_errors; + cntrs.port_rcv_remphys_errors -= dev->n_port_rcv_remphys_errors; + cntrs.port_xmit_discards -= dev->n_port_xmit_discards; + cntrs.port_xmit_data -= dev->n_port_xmit_data; + cntrs.port_rcv_data -= dev->n_port_rcv_data; + cntrs.port_xmit_packets -= dev->n_port_xmit_packets; + cntrs.port_rcv_packets -= dev->n_port_rcv_packets; memset(pmp->data, 0, sizeof(pmp->data)); @@ -903,16 +893,6 @@ static int recv_pma_get_portcounters(struct ib_perf *pmp, else p->port_xmit_discards = cpu_to_be16((u16)cntrs.port_xmit_discards); - if (cntrs.local_link_integrity_errors > 0xFUL) - cntrs.local_link_integrity_errors = 0xFUL; - if (cntrs.excessive_buffer_overrun_errors > 0xFUL) - cntrs.excessive_buffer_overrun_errors = 0xFUL; - p->lli_ebor_errors = (cntrs.local_link_integrity_errors << 4) | - cntrs.excessive_buffer_overrun_errors; - if (dev->n_vl15_dropped > 0xFFFFUL) - p->vl15_dropped = __constant_cpu_to_be16(0xFFFF); - else - p->vl15_dropped = cpu_to_be16((u16)dev->n_vl15_dropped); if (cntrs.port_xmit_data > 0xFFFFFFFFUL) p->port_xmit_data = __constant_cpu_to_be32(0xFFFFFFFF); else @@ -948,10 +928,10 @@ static int recv_pma_get_portcounters_ext(struct ib_perf *pmp, &rpkts, &xwait); /* Adjust counters for any resets done. */ - swords -= dev->z_port_xmit_data; - rwords -= dev->z_port_rcv_data; - spkts -= dev->z_port_xmit_packets; - rpkts -= dev->z_port_rcv_packets; + swords -= dev->n_port_xmit_data; + rwords -= dev->n_port_rcv_data; + spkts -= dev->n_port_xmit_packets; + rpkts -= dev->n_port_rcv_packets; memset(pmp->data, 0, sizeof(pmp->data)); @@ -987,48 +967,37 @@ static int recv_pma_set_portcounters(struct ib_perf *pmp, ipath_layer_get_counters(dev->dd, &cntrs); if (p->counter_select & IB_PMA_SEL_SYMBOL_ERROR) - dev->z_symbol_error_counter = cntrs.symbol_error_counter; + dev->n_symbol_error_counter = cntrs.symbol_error_counter; if (p->counter_select & IB_PMA_SEL_LINK_ERROR_RECOVERY) - dev->z_link_error_recovery_counter = + dev->n_link_error_recovery_counter = cntrs.link_error_recovery_counter; if (p->counter_select & IB_PMA_SEL_LINK_DOWNED) - dev->z_link_downed_counter = cntrs.link_downed_counter; + dev->n_link_downed_counter = cntrs.link_downed_counter; if (p->counter_select & IB_PMA_SEL_PORT_RCV_ERRORS) - dev->z_port_rcv_errors = + dev->n_port_rcv_errors = cntrs.port_rcv_errors + dev->rcv_errors; if (p->counter_select & IB_PMA_SEL_PORT_RCV_REMPHYS_ERRORS) - dev->z_port_rcv_remphys_errors = + dev->n_port_rcv_remphys_errors = cntrs.port_rcv_remphys_errors; if (p->counter_select & IB_PMA_SEL_PORT_XMIT_DISCARDS) - dev->z_port_xmit_discards = cntrs.port_xmit_discards; - - if (p->counter_select & IB_PMA_SEL_LOCAL_LINK_INTEGRITY_ERRORS) - dev->z_local_link_integrity_errors = - cntrs.local_link_integrity_errors; - - if (p->counter_select & IB_PMA_SEL_EXCESSIVE_BUFFER_OVERRUNS) - dev->z_excessive_buffer_overrun_errors = - cntrs.excessive_buffer_overrun_errors; - - if (p->counter_select & IB_PMA_SEL_PORT_VL15_DROPPED) - dev->n_vl15_dropped = 0; + dev->n_port_xmit_discards = cntrs.port_xmit_discards; if (p->counter_select & IB_PMA_SEL_PORT_XMIT_DATA) - dev->z_port_xmit_data = cntrs.port_xmit_data; + dev->n_port_xmit_data = cntrs.port_xmit_data; if (p->counter_select & IB_PMA_SEL_PORT_RCV_DATA) - dev->z_port_rcv_data = cntrs.port_rcv_data; + dev->n_port_rcv_data = cntrs.port_rcv_data; if (p->counter_select & IB_PMA_SEL_PORT_XMIT_PACKETS) - dev->z_port_xmit_packets = cntrs.port_xmit_packets; + dev->n_port_xmit_packets = cntrs.port_xmit_packets; if (p->counter_select & IB_PMA_SEL_PORT_RCV_PACKETS) - dev->z_port_rcv_packets = cntrs.port_rcv_packets; + dev->n_port_rcv_packets = cntrs.port_rcv_packets; return recv_pma_get_portcounters(pmp, ibdev, port); } @@ -1045,16 +1014,16 @@ static int recv_pma_set_portcounters_ext(struct ib_perf *pmp, &rpkts, &xwait); if (p->counter_select & IB_PMA_SELX_PORT_XMIT_DATA) - dev->z_port_xmit_data = swords; + dev->n_port_xmit_data = swords; if (p->counter_select & IB_PMA_SELX_PORT_RCV_DATA) - dev->z_port_rcv_data = rwords; + dev->n_port_rcv_data = rwords; if (p->counter_select & IB_PMA_SELX_PORT_XMIT_PACKETS) - dev->z_port_xmit_packets = spkts; + dev->n_port_xmit_packets = spkts; if (p->counter_select & IB_PMA_SELX_PORT_RCV_PACKETS) - dev->z_port_rcv_packets = rpkts; + dev->n_port_rcv_packets = rpkts; if (p->counter_select & IB_PMA_SELX_PORT_UNI_XMIT_PACKETS) dev->n_unicast_xmit = 0; @@ -1303,8 +1272,32 @@ int ipath_process_mad(struct ib_device *ibdev, int mad_flags, u8 port_num, struct ib_wc *in_wc, struct ib_grh *in_grh, struct ib_mad *in_mad, struct ib_mad *out_mad) { + struct ipath_ibdev *dev = to_idev(ibdev); int ret; + /* + * Snapshot current HW counters to "clear" them. + * This should be done when the driver is loaded except that for + * some reason we get a zillion errors when brining up the link. + */ + if (dev->rcv_errors == 0) { + struct ipath_layer_counters cntrs; + + ipath_layer_get_counters(to_idev(ibdev)->dd, &cntrs); + dev->rcv_errors++; + dev->n_symbol_error_counter = cntrs.symbol_error_counter; + dev->n_link_error_recovery_counter = + cntrs.link_error_recovery_counter; + dev->n_link_downed_counter = cntrs.link_downed_counter; + dev->n_port_rcv_errors = cntrs.port_rcv_errors + 1; + dev->n_port_rcv_remphys_errors = + cntrs.port_rcv_remphys_errors; + dev->n_port_xmit_discards = cntrs.port_xmit_discards; + dev->n_port_xmit_data = cntrs.port_xmit_data; + dev->n_port_rcv_data = cntrs.port_rcv_data; + dev->n_port_xmit_packets = cntrs.port_xmit_packets; + dev->n_port_rcv_packets = cntrs.port_rcv_packets; + } switch (in_mad->mad_hdr.mgmt_class) { case IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE: case IB_MGMT_CLASS_SUBN_LID_ROUTED: diff --git a/trunk/drivers/infiniband/hw/ipath/ipath_mr.c b/trunk/drivers/infiniband/hw/ipath/ipath_mr.c index 4ac31a5da330..69ffec66d45d 100644 --- a/trunk/drivers/infiniband/hw/ipath/ipath_mr.c +++ b/trunk/drivers/infiniband/hw/ipath/ipath_mr.c @@ -1,5 +1,4 @@ /* - * Copyright (c) 2006 QLogic, Inc. All rights reserved. * Copyright (c) 2005, 2006 PathScale, Inc. All rights reserved. * * This software is available to you under a choice of one of two @@ -170,11 +169,6 @@ struct ib_mr *ipath_reg_user_mr(struct ib_pd *pd, struct ib_umem *region, int n, m, i; struct ib_mr *ret; - if (region->length == 0) { - ret = ERR_PTR(-EINVAL); - goto bail; - } - n = 0; list_for_each_entry(chunk, ®ion->chunk_list, list) n += chunk->nents; diff --git a/trunk/drivers/infiniband/hw/ipath/ipath_pe800.c b/trunk/drivers/infiniband/hw/ipath/ipath_pe800.c index b83f66d8262c..02e8c75b24f6 100644 --- a/trunk/drivers/infiniband/hw/ipath/ipath_pe800.c +++ b/trunk/drivers/infiniband/hw/ipath/ipath_pe800.c @@ -1,5 +1,4 @@ /* - * Copyright (c) 2006 QLogic, Inc. All rights reserved. * Copyright (c) 2003, 2004, 2005, 2006 PathScale, Inc. All rights reserved. * * This software is available to you under a choice of one of two @@ -45,7 +44,7 @@ /* * This file contains all the chip-specific register information and - * access functions for the QLogic InfiniPath PE800, the PCI-Express chip. + * access functions for the PathScale PE800, the PCI-Express chip. * * This lists the InfiniPath PE800 registers, in the actual chip layout. * This structure should never be directly accessed. @@ -533,7 +532,7 @@ static int ipath_pe_boardname(struct ipath_devdata *dd, char *name, if (n) snprintf(name, namelen, "%s", n); - if (dd->ipath_majrev != 4 || !dd->ipath_minrev || dd->ipath_minrev>2) { + if (dd->ipath_majrev != 4 || dd->ipath_minrev != 1) { ipath_dev_err(dd, "Unsupported PE-800 revision %u.%u!\n", dd->ipath_majrev, dd->ipath_minrev); ret = 1; diff --git a/trunk/drivers/infiniband/hw/ipath/ipath_qp.c b/trunk/drivers/infiniband/hw/ipath/ipath_qp.c index 83e557be591e..9f8855d970c8 100644 --- a/trunk/drivers/infiniband/hw/ipath/ipath_qp.c +++ b/trunk/drivers/infiniband/hw/ipath/ipath_qp.c @@ -1,5 +1,4 @@ /* - * Copyright (c) 2006 QLogic, Inc. All rights reserved. * Copyright (c) 2005, 2006 PathScale, Inc. All rights reserved. * * This software is available to you under a choice of one of two @@ -35,7 +34,7 @@ #include #include "ipath_verbs.h" -#include "ipath_common.h" +#include "ips_common.h" #define BITS_PER_PAGE (PAGE_SIZE*BITS_PER_BYTE) #define BITS_PER_PAGE_MASK (BITS_PER_PAGE-1) @@ -333,11 +332,10 @@ static void ipath_reset_qp(struct ipath_qp *qp) qp->remote_qpn = 0; qp->qkey = 0; qp->qp_access_flags = 0; - clear_bit(IPATH_S_BUSY, &qp->s_flags); qp->s_hdrwords = 0; qp->s_psn = 0; qp->r_psn = 0; - qp->r_msn = 0; + atomic_set(&qp->msn, 0); if (qp->ibqp.qp_type == IB_QPT_RC) { qp->s_state = IB_OPCODE_RC_SEND_LAST; qp->r_state = IB_OPCODE_RC_SEND_LAST; @@ -346,8 +344,7 @@ static void ipath_reset_qp(struct ipath_qp *qp) qp->r_state = IB_OPCODE_UC_SEND_LAST; } qp->s_ack_state = IB_OPCODE_RC_ACKNOWLEDGE; - qp->r_ack_state = IB_OPCODE_RC_ACKNOWLEDGE; - qp->r_nak_state = 0; + qp->s_nak_state = 0; qp->s_rnr_timeout = 0; qp->s_head = 0; qp->s_tail = 0; @@ -365,10 +362,10 @@ static void ipath_reset_qp(struct ipath_qp *qp) * @qp: the QP to put into an error state * * Flushes both send and receive work queues. - * QP s_lock should be held and interrupts disabled. + * QP r_rq.lock and s_lock should be held. */ -void ipath_error_qp(struct ipath_qp *qp) +static void ipath_error_qp(struct ipath_qp *qp) { struct ipath_ibdev *dev = to_idev(qp->ibqp.device); struct ib_wc wc; @@ -411,14 +408,12 @@ void ipath_error_qp(struct ipath_qp *qp) qp->s_ack_state = IB_OPCODE_RC_ACKNOWLEDGE; wc.opcode = IB_WC_RECV; - spin_lock(&qp->r_rq.lock); while (qp->r_rq.tail != qp->r_rq.head) { wc.wr_id = get_rwqe_ptr(&qp->r_rq, qp->r_rq.tail)->wr_id; if (++qp->r_rq.tail >= qp->r_rq.size) qp->r_rq.tail = 0; ipath_cq_enter(to_icq(qp->ibqp.recv_cq), &wc, 1); } - spin_unlock(&qp->r_rq.lock); } /** @@ -438,7 +433,8 @@ int ipath_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr, unsigned long flags; int ret; - spin_lock_irqsave(&qp->s_lock, flags); + spin_lock_irqsave(&qp->r_rq.lock, flags); + spin_lock(&qp->s_lock); cur_state = attr_mask & IB_QP_CUR_STATE ? attr->cur_qp_state : qp->state; @@ -450,7 +446,7 @@ int ipath_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr, if (attr_mask & IB_QP_AV) if (attr->ah_attr.dlid == 0 || - attr->ah_attr.dlid >= IPATH_MULTICAST_LID_BASE) + attr->ah_attr.dlid >= IPS_MULTICAST_LID_BASE) goto inval; if (attr_mask & IB_QP_PKEY_INDEX) @@ -509,19 +505,34 @@ int ipath_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr, } if (attr_mask & IB_QP_MIN_RNR_TIMER) - qp->r_min_rnr_timer = attr->min_rnr_timer; + qp->s_min_rnr_timer = attr->min_rnr_timer; if (attr_mask & IB_QP_QKEY) qp->qkey = attr->qkey; + if (attr_mask & IB_QP_PKEY_INDEX) + qp->s_pkey_index = attr->pkey_index; + qp->state = new_state; - spin_unlock_irqrestore(&qp->s_lock, flags); + spin_unlock(&qp->s_lock); + spin_unlock_irqrestore(&qp->r_rq.lock, flags); + + /* + * If QP1 changed to the RTS state, try to move to the link to INIT + * even if it was ACTIVE so the SM will reinitialize the SMA's + * state. + */ + if (qp->ibqp.qp_num == 1 && new_state == IB_QPS_RTS) { + struct ipath_ibdev *dev = to_idev(ibqp->device); + ipath_layer_set_linkstate(dev->dd, IPATH_IB_LINKDOWN); + } ret = 0; goto bail; inval: - spin_unlock_irqrestore(&qp->s_lock, flags); + spin_unlock(&qp->s_lock); + spin_unlock_irqrestore(&qp->r_rq.lock, flags); ret = -EINVAL; bail: @@ -555,7 +566,7 @@ int ipath_query_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr, attr->sq_draining = 0; attr->max_rd_atomic = 1; attr->max_dest_rd_atomic = 1; - attr->min_rnr_timer = qp->r_min_rnr_timer; + attr->min_rnr_timer = qp->s_min_rnr_timer; attr->port_num = 1; attr->timeout = 0; attr->retry_cnt = qp->s_retry_cnt; @@ -582,17 +593,21 @@ int ipath_query_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr, * @qp: the queue pair to compute the AETH for * * Returns the AETH. + * + * The QP s_lock should be held. */ __be32 ipath_compute_aeth(struct ipath_qp *qp) { - u32 aeth = qp->r_msn & IPATH_MSN_MASK; + u32 aeth = atomic_read(&qp->msn) & IPS_MSN_MASK; - if (qp->ibqp.srq) { + if (qp->s_nak_state) { + aeth |= qp->s_nak_state << IPS_AETH_CREDIT_SHIFT; + } else if (qp->ibqp.srq) { /* * Shared receive queues don't generate credits. * Set the credit field to the invalid value. */ - aeth |= IPATH_AETH_CREDIT_INVAL << IPATH_AETH_CREDIT_SHIFT; + aeth |= IPS_AETH_CREDIT_INVAL << IPS_AETH_CREDIT_SHIFT; } else { u32 min, max, x; u32 credits; @@ -622,7 +637,7 @@ __be32 ipath_compute_aeth(struct ipath_qp *qp) else min = x; } - aeth |= x << IPATH_AETH_CREDIT_SHIFT; + aeth |= x << IPS_AETH_CREDIT_SHIFT; } return cpu_to_be32(aeth); } @@ -648,22 +663,12 @@ struct ib_qp *ipath_create_qp(struct ib_pd *ibpd, size_t sz; struct ib_qp *ret; - if (init_attr->cap.max_send_sge > ib_ipath_max_sges || - init_attr->cap.max_recv_sge > ib_ipath_max_sges || - init_attr->cap.max_send_wr > ib_ipath_max_qp_wrs || - init_attr->cap.max_recv_wr > ib_ipath_max_qp_wrs) { + if (init_attr->cap.max_send_sge > 255 || + init_attr->cap.max_recv_sge > 255) { ret = ERR_PTR(-ENOMEM); goto bail; } - if (init_attr->cap.max_send_sge + - init_attr->cap.max_recv_sge + - init_attr->cap.max_send_wr + - init_attr->cap.max_recv_wr == 0) { - ret = ERR_PTR(-EINVAL); - goto bail; - } - switch (init_attr->qp_type) { case IB_QPT_UC: case IB_QPT_RC: @@ -681,26 +686,18 @@ struct ib_qp *ipath_create_qp(struct ib_pd *ibpd, case IB_QPT_GSI: qp = kmalloc(sizeof(*qp), GFP_KERNEL); if (!qp) { - vfree(swq); ret = ERR_PTR(-ENOMEM); goto bail; } - if (init_attr->srq) { - qp->r_rq.size = 0; - qp->r_rq.max_sge = 0; - qp->r_rq.wq = NULL; - } else { - qp->r_rq.size = init_attr->cap.max_recv_wr + 1; - qp->r_rq.max_sge = init_attr->cap.max_recv_sge; - sz = (sizeof(struct ipath_sge) * qp->r_rq.max_sge) + - sizeof(struct ipath_rwqe); - qp->r_rq.wq = vmalloc(qp->r_rq.size * sz); - if (!qp->r_rq.wq) { - kfree(qp); - vfree(swq); - ret = ERR_PTR(-ENOMEM); - goto bail; - } + qp->r_rq.size = init_attr->cap.max_recv_wr + 1; + sz = sizeof(struct ipath_sge) * + init_attr->cap.max_recv_sge + + sizeof(struct ipath_rwqe); + qp->r_rq.wq = vmalloc(qp->r_rq.size * sz); + if (!qp->r_rq.wq) { + kfree(qp); + ret = ERR_PTR(-ENOMEM); + goto bail; } /* @@ -711,7 +708,9 @@ struct ib_qp *ipath_create_qp(struct ib_pd *ibpd, spin_lock_init(&qp->r_rq.lock); atomic_set(&qp->refcount, 0); init_waitqueue_head(&qp->wait); - tasklet_init(&qp->s_task, ipath_do_ruc_send, + tasklet_init(&qp->s_task, + init_attr->qp_type == IB_QPT_RC ? + ipath_do_rc_send : ipath_do_uc_send, (unsigned long)qp); INIT_LIST_HEAD(&qp->piowait); INIT_LIST_HEAD(&qp->timerwait); @@ -719,6 +718,7 @@ struct ib_qp *ipath_create_qp(struct ib_pd *ibpd, qp->s_wq = swq; qp->s_size = init_attr->cap.max_send_wr + 1; qp->s_max_sge = init_attr->cap.max_send_sge; + qp->r_rq.max_sge = init_attr->cap.max_recv_sge; qp->s_flags = init_attr->sq_sig_type == IB_SIGNAL_REQ_WR ? 1 << IPATH_S_SIGNAL_REQ_WR : 0; dev = to_idev(ibpd->device); @@ -888,18 +888,18 @@ void ipath_sqerror_qp(struct ipath_qp *qp, struct ib_wc *wc) */ void ipath_get_credit(struct ipath_qp *qp, u32 aeth) { - u32 credit = (aeth >> IPATH_AETH_CREDIT_SHIFT) & IPATH_AETH_CREDIT_MASK; + u32 credit = (aeth >> IPS_AETH_CREDIT_SHIFT) & IPS_AETH_CREDIT_MASK; /* * If the credit is invalid, we can send * as many packets as we like. Otherwise, we have to * honor the credit field. */ - if (credit == IPATH_AETH_CREDIT_INVAL) + if (credit == IPS_AETH_CREDIT_INVAL) { qp->s_lsn = (u32) -1; - else if (qp->s_lsn != (u32) -1) { + } else if (qp->s_lsn != (u32) -1) { /* Compute new LSN (i.e., MSN + credit) */ - credit = (aeth + credit_table[credit]) & IPATH_MSN_MASK; + credit = (aeth + credit_table[credit]) & IPS_MSN_MASK; if (ipath_cmp24(credit, qp->s_lsn) > 0) qp->s_lsn = credit; } diff --git a/trunk/drivers/infiniband/hw/ipath/ipath_rc.c b/trunk/drivers/infiniband/hw/ipath/ipath_rc.c index 774d1615ce2f..493b1821a934 100644 --- a/trunk/drivers/infiniband/hw/ipath/ipath_rc.c +++ b/trunk/drivers/infiniband/hw/ipath/ipath_rc.c @@ -1,5 +1,4 @@ /* - * Copyright (c) 2006 QLogic, Inc. All rights reserved. * Copyright (c) 2005, 2006 PathScale, Inc. All rights reserved. * * This software is available to you under a choice of one of two @@ -32,7 +31,7 @@ */ #include "ipath_verbs.h" -#include "ipath_common.h" +#include "ips_common.h" /* cut down ridiculously long IB macro names */ #define OP(x) IB_OPCODE_RC_##x @@ -42,14 +41,14 @@ * @qp: the QP who's SGE we're restarting * @wqe: the work queue to initialize the QP's SGE from * - * The QP s_lock should be held and interrupts disabled. + * The QP s_lock should be held. */ static void ipath_init_restart(struct ipath_qp *qp, struct ipath_swqe *wqe) { struct ipath_ibdev *dev; u32 len; - len = ((qp->s_psn - wqe->psn) & IPATH_PSN_MASK) * + len = ((qp->s_psn - wqe->psn) & IPS_PSN_MASK) * ib_mtu_enum_to_int(qp->path_mtu); qp->s_sge.sge = wqe->sg_list[0]; qp->s_sge.sg_list = wqe->sg_list + 1; @@ -73,10 +72,11 @@ static void ipath_init_restart(struct ipath_qp *qp, struct ipath_swqe *wqe) * Return bth0 if constructed; otherwise, return 0. * Note the QP s_lock must be held. */ -u32 ipath_make_rc_ack(struct ipath_qp *qp, - struct ipath_other_headers *ohdr, - u32 pmtu) +static inline u32 ipath_make_rc_ack(struct ipath_qp *qp, + struct ipath_other_headers *ohdr, + u32 pmtu) { + struct ipath_sge_state *ss; u32 hwords; u32 len; u32 bth0; @@ -90,12 +90,13 @@ u32 ipath_make_rc_ack(struct ipath_qp *qp, */ switch (qp->s_ack_state) { case OP(RDMA_READ_REQUEST): - qp->s_cur_sge = &qp->s_rdma_sge; + ss = &qp->s_rdma_sge; len = qp->s_rdma_len; if (len > pmtu) { len = pmtu; qp->s_ack_state = OP(RDMA_READ_RESPONSE_FIRST); - } else + } + else qp->s_ack_state = OP(RDMA_READ_RESPONSE_ONLY); qp->s_rdma_len -= len; bth0 = qp->s_ack_state << 24; @@ -107,7 +108,7 @@ u32 ipath_make_rc_ack(struct ipath_qp *qp, qp->s_ack_state = OP(RDMA_READ_RESPONSE_MIDDLE); /* FALLTHROUGH */ case OP(RDMA_READ_RESPONSE_MIDDLE): - qp->s_cur_sge = &qp->s_rdma_sge; + ss = &qp->s_rdma_sge; len = qp->s_rdma_len; if (len > pmtu) len = pmtu; @@ -126,50 +127,41 @@ u32 ipath_make_rc_ack(struct ipath_qp *qp, * We have to prevent new requests from changing * the r_sge state while a ipath_verbs_send() * is in progress. + * Changing r_state allows the receiver + * to continue processing new packets. + * We do it here now instead of above so + * that we are sure the packet was sent before + * changing the state. */ + qp->r_state = OP(RDMA_READ_RESPONSE_LAST); qp->s_ack_state = OP(ACKNOWLEDGE); - bth0 = 0; - goto bail; + return 0; case OP(COMPARE_SWAP): case OP(FETCH_ADD): - qp->s_cur_sge = NULL; + ss = NULL; len = 0; - /* - * Set the s_ack_state so the receive interrupt handler - * won't try to send an ACK (out of order) until this one - * is actually sent. - */ - qp->s_ack_state = OP(RDMA_READ_RESPONSE_LAST); - bth0 = OP(ATOMIC_ACKNOWLEDGE) << 24; + qp->r_state = OP(SEND_LAST); + qp->s_ack_state = OP(ACKNOWLEDGE); + bth0 = IB_OPCODE_ATOMIC_ACKNOWLEDGE << 24; ohdr->u.at.aeth = ipath_compute_aeth(qp); - ohdr->u.at.atomic_ack_eth = cpu_to_be64(qp->r_atomic_data); + ohdr->u.at.atomic_ack_eth = cpu_to_be64(qp->s_ack_atomic); hwords += sizeof(ohdr->u.at) / 4; break; default: /* Send a regular ACK. */ - qp->s_cur_sge = NULL; + ss = NULL; len = 0; - /* - * Set the s_ack_state so the receive interrupt handler - * won't try to send an ACK (out of order) until this one - * is actually sent. - */ - qp->s_ack_state = OP(RDMA_READ_RESPONSE_LAST); - bth0 = OP(ACKNOWLEDGE) << 24; - if (qp->s_nak_state) - ohdr->u.aeth = cpu_to_be32((qp->r_msn & IPATH_MSN_MASK) | - (qp->s_nak_state << - IPATH_AETH_CREDIT_SHIFT)); - else - ohdr->u.aeth = ipath_compute_aeth(qp); + qp->s_ack_state = OP(ACKNOWLEDGE); + bth0 = qp->s_ack_state << 24; + ohdr->u.aeth = ipath_compute_aeth(qp); hwords++; } qp->s_hdrwords = hwords; + qp->s_cur_sge = ss; qp->s_cur_size = len; -bail: return bth0; } @@ -182,11 +174,11 @@ u32 ipath_make_rc_ack(struct ipath_qp *qp, * @bth2p: pointer to the BTH PSN word * * Return 1 if constructed; otherwise, return 0. - * Note the QP s_lock must be held and interrupts disabled. + * Note the QP s_lock must be held. */ -int ipath_make_rc_req(struct ipath_qp *qp, - struct ipath_other_headers *ohdr, - u32 pmtu, u32 *bth0p, u32 *bth2p) +static inline int ipath_make_rc_req(struct ipath_qp *qp, + struct ipath_other_headers *ohdr, + u32 pmtu, u32 *bth0p, u32 *bth2p) { struct ipath_ibdev *dev = to_idev(qp->ibqp.device); struct ipath_sge_state *ss; @@ -265,7 +257,7 @@ int ipath_make_rc_req(struct ipath_qp *qp, break; case IB_WR_RDMA_WRITE: - if (newreq && qp->s_lsn != (u32) -1) + if (newreq) qp->s_lsn++; /* FALLTHROUGH */ case IB_WR_RDMA_WRITE_WITH_IMM: @@ -291,7 +283,8 @@ int ipath_make_rc_req(struct ipath_qp *qp, else { qp->s_state = OP(RDMA_WRITE_ONLY_WITH_IMMEDIATE); - /* Immediate data comes after RETH */ + /* Immediate data comes + * after RETH */ ohdr->u.rc.imm_data = wqe->wr.imm_data; hwords += 1; if (wqe->wr.send_flags & IB_SEND_SOLICITED) @@ -311,8 +304,7 @@ int ipath_make_rc_req(struct ipath_qp *qp, qp->s_state = OP(RDMA_READ_REQUEST); hwords += sizeof(ohdr->u.rc.reth) / 4; if (newreq) { - if (qp->s_lsn != (u32) -1) - qp->s_lsn++; + qp->s_lsn++; /* * Adjust s_next_psn to count the * expected number of responses. @@ -343,8 +335,7 @@ int ipath_make_rc_req(struct ipath_qp *qp, wqe->wr.wr.atomic.compare_add); hwords += sizeof(struct ib_atomic_eth) / 4; if (newreq) { - if (qp->s_lsn != (u32) -1) - qp->s_lsn++; + qp->s_lsn++; wqe->lpsn = wqe->psn; } if (++qp->s_cur == qp->s_size) @@ -361,14 +352,9 @@ int ipath_make_rc_req(struct ipath_qp *qp, if (qp->s_tail >= qp->s_size) qp->s_tail = 0; } - bth2 |= qp->s_psn++ & IPATH_PSN_MASK; + bth2 |= qp->s_psn++ & IPS_PSN_MASK; if ((int)(qp->s_psn - qp->s_next_psn) > 0) qp->s_next_psn = qp->s_psn; - /* - * Put the QP on the pending list so lost ACKs will cause - * a retry. More than one request can be pending so the - * QP may already be on the dev->pending list. - */ spin_lock(&dev->pending_lock); if (list_empty(&qp->timerwait)) list_add_tail(&qp->timerwait, @@ -378,8 +364,8 @@ int ipath_make_rc_req(struct ipath_qp *qp, case OP(RDMA_READ_RESPONSE_FIRST): /* - * This case can only happen if a send is restarted. - * See ipath_restart_rc(). + * This case can only happen if a send is restarted. See + * ipath_restart_rc(). */ ipath_init_restart(qp, wqe); /* FALLTHROUGH */ @@ -387,7 +373,7 @@ int ipath_make_rc_req(struct ipath_qp *qp, qp->s_state = OP(SEND_MIDDLE); /* FALLTHROUGH */ case OP(SEND_MIDDLE): - bth2 = qp->s_psn++ & IPATH_PSN_MASK; + bth2 = qp->s_psn++ & IPS_PSN_MASK; if ((int)(qp->s_psn - qp->s_next_psn) > 0) qp->s_next_psn = qp->s_psn; ss = &qp->s_sge; @@ -429,7 +415,7 @@ int ipath_make_rc_req(struct ipath_qp *qp, qp->s_state = OP(RDMA_WRITE_MIDDLE); /* FALLTHROUGH */ case OP(RDMA_WRITE_MIDDLE): - bth2 = qp->s_psn++ & IPATH_PSN_MASK; + bth2 = qp->s_psn++ & IPS_PSN_MASK; if ((int)(qp->s_psn - qp->s_next_psn) > 0) qp->s_next_psn = qp->s_psn; ss = &qp->s_sge; @@ -466,7 +452,7 @@ int ipath_make_rc_req(struct ipath_qp *qp, * See ipath_restart_rc(). */ ipath_init_restart(qp, wqe); - len = ((qp->s_psn - wqe->psn) & IPATH_PSN_MASK) * pmtu; + len = ((qp->s_psn - wqe->psn) & IPS_PSN_MASK) * pmtu; ohdr->u.rc.reth.vaddr = cpu_to_be64(wqe->wr.wr.rdma.remote_addr + len); ohdr->u.rc.reth.rkey = @@ -474,7 +460,7 @@ int ipath_make_rc_req(struct ipath_qp *qp, ohdr->u.rc.reth.length = cpu_to_be32(qp->s_len); qp->s_state = OP(RDMA_READ_REQUEST); hwords += sizeof(ohdr->u.rc.reth) / 4; - bth2 = qp->s_psn++ & IPATH_PSN_MASK; + bth2 = qp->s_psn++ & IPS_PSN_MASK; if ((int)(qp->s_psn - qp->s_next_psn) > 0) qp->s_next_psn = qp->s_psn; ss = NULL; @@ -510,169 +496,189 @@ int ipath_make_rc_req(struct ipath_qp *qp, return 0; } +static inline void ipath_make_rc_grh(struct ipath_qp *qp, + struct ib_global_route *grh, + u32 nwords) +{ + struct ipath_ibdev *dev = to_idev(qp->ibqp.device); + + /* GRH header size in 32-bit words. */ + qp->s_hdrwords += 10; + qp->s_hdr.u.l.grh.version_tclass_flow = + cpu_to_be32((6 << 28) | + (grh->traffic_class << 20) | + grh->flow_label); + qp->s_hdr.u.l.grh.paylen = + cpu_to_be16(((qp->s_hdrwords - 12) + nwords + + SIZE_OF_CRC) << 2); + /* next_hdr is defined by C8-7 in ch. 8.4.1 */ + qp->s_hdr.u.l.grh.next_hdr = 0x1B; + qp->s_hdr.u.l.grh.hop_limit = grh->hop_limit; + /* The SGID is 32-bit aligned. */ + qp->s_hdr.u.l.grh.sgid.global.subnet_prefix = dev->gid_prefix; + qp->s_hdr.u.l.grh.sgid.global.interface_id = + ipath_layer_get_guid(dev->dd); + qp->s_hdr.u.l.grh.dgid = grh->dgid; +} + /** - * send_rc_ack - Construct an ACK packet and send it - * @qp: a pointer to the QP + * ipath_do_rc_send - perform a send on an RC QP + * @data: contains a pointer to the QP * - * This is called from ipath_rc_rcv() and only uses the receive - * side QP state. - * Note that RDMA reads are handled in the send side QP state and tasklet. + * Process entries in the send work queue until credit or queue is + * exhausted. Only allow one CPU to send a packet per QP (tasklet). + * Otherwise, after we drop the QP s_lock, two threads could send + * packets out of order. */ -static void send_rc_ack(struct ipath_qp *qp) +void ipath_do_rc_send(unsigned long data) { + struct ipath_qp *qp = (struct ipath_qp *)data; struct ipath_ibdev *dev = to_idev(qp->ibqp.device); + unsigned long flags; u16 lrh0; + u32 nwords; + u32 extra_bytes; u32 bth0; - u32 hwords; - struct ipath_ib_header hdr; + u32 bth2; + u32 pmtu = ib_mtu_enum_to_int(qp->path_mtu); struct ipath_other_headers *ohdr; - /* Construct the header. */ - ohdr = &hdr.u.oth; - lrh0 = IPATH_LRH_BTH; - /* header size in 32-bit words LRH+BTH+AETH = (8+12+4)/4. */ - hwords = 6; - if (unlikely(qp->remote_ah_attr.ah_flags & IB_AH_GRH)) { - hwords += ipath_make_grh(dev, &hdr.u.l.grh, - &qp->remote_ah_attr.grh, - hwords, 0); - ohdr = &hdr.u.l.oth; - lrh0 = IPATH_LRH_GRH; - } - /* read pkey_index w/o lock (its atomic) */ - bth0 = ipath_layer_get_pkey(dev->dd, qp->s_pkey_index); - if (qp->r_nak_state) - ohdr->u.aeth = cpu_to_be32((qp->r_msn & IPATH_MSN_MASK) | - (qp->r_nak_state << - IPATH_AETH_CREDIT_SHIFT)); - else - ohdr->u.aeth = ipath_compute_aeth(qp); - if (qp->r_ack_state >= OP(COMPARE_SWAP)) { - bth0 |= OP(ATOMIC_ACKNOWLEDGE) << 24; - ohdr->u.at.atomic_ack_eth = cpu_to_be64(qp->r_atomic_data); - hwords += sizeof(ohdr->u.at.atomic_ack_eth) / 4; - } else - bth0 |= OP(ACKNOWLEDGE) << 24; - lrh0 |= qp->remote_ah_attr.sl << 4; - hdr.lrh[0] = cpu_to_be16(lrh0); - hdr.lrh[1] = cpu_to_be16(qp->remote_ah_attr.dlid); - hdr.lrh[2] = cpu_to_be16(hwords + SIZE_OF_CRC); - hdr.lrh[3] = cpu_to_be16(ipath_layer_get_lid(dev->dd)); - ohdr->bth[0] = cpu_to_be32(bth0); - ohdr->bth[1] = cpu_to_be32(qp->remote_qpn); - ohdr->bth[2] = cpu_to_be32(qp->r_ack_psn & IPATH_PSN_MASK); + if (test_and_set_bit(IPATH_S_BUSY, &qp->s_flags)) + goto bail; + + if (unlikely(qp->remote_ah_attr.dlid == + ipath_layer_get_lid(dev->dd))) { + struct ib_wc wc; - /* - * If we can send the ACK, clear the ACK state. - */ - if (ipath_verbs_send(dev->dd, hwords, (u32 *) &hdr, 0, NULL) == 0) { - qp->r_ack_state = OP(ACKNOWLEDGE); - dev->n_unicast_xmit++; - } else { /* - * We are out of PIO buffers at the moment. - * Pass responsibility for sending the ACK to the - * send tasklet so that when a PIO buffer becomes - * available, the ACK is sent ahead of other outgoing - * packets. + * Pass in an uninitialized ib_wc to be consistent with + * other places where ipath_ruc_loopback() is called. */ - dev->n_rc_qacks++; - spin_lock_irq(&qp->s_lock); - /* Don't coalesce if a RDMA read or atomic is pending. */ - if (qp->s_ack_state == OP(ACKNOWLEDGE) || - qp->s_ack_state < OP(RDMA_READ_REQUEST)) { - qp->s_ack_state = qp->r_ack_state; - qp->s_nak_state = qp->r_nak_state; - qp->s_ack_psn = qp->r_ack_psn; - qp->r_ack_state = OP(ACKNOWLEDGE); - } - spin_unlock_irq(&qp->s_lock); - - /* Call ipath_do_rc_send() in another thread. */ - tasklet_hi_schedule(&qp->s_task); - } -} - -/** - * reset_psn - reset the QP state to send starting from PSN - * @qp: the QP - * @psn: the packet sequence number to restart at - * - * This is called from ipath_rc_rcv() to process an incoming RC ACK - * for the given QP. - * Called at interrupt level with the QP s_lock held. - */ -static void reset_psn(struct ipath_qp *qp, u32 psn) -{ - u32 n = qp->s_last; - struct ipath_swqe *wqe = get_swqe_ptr(qp, n); - u32 opcode; - - qp->s_cur = n; - - /* - * If we are starting the request from the beginning, - * let the normal send code handle initialization. - */ - if (ipath_cmp24(psn, wqe->psn) <= 0) { - qp->s_state = OP(SEND_LAST); - goto done; + ipath_ruc_loopback(qp, &wc); + goto clear; } - /* Find the work request opcode corresponding to the given PSN. */ - opcode = wqe->wr.opcode; - for (;;) { - int diff; + ohdr = &qp->s_hdr.u.oth; + if (qp->remote_ah_attr.ah_flags & IB_AH_GRH) + ohdr = &qp->s_hdr.u.l.oth; - if (++n == qp->s_size) - n = 0; - if (n == qp->s_tail) - break; - wqe = get_swqe_ptr(qp, n); - diff = ipath_cmp24(psn, wqe->psn); - if (diff < 0) - break; - qp->s_cur = n; +again: + /* Check for a constructed packet to be sent. */ + if (qp->s_hdrwords != 0) { /* - * If we are starting the request from the beginning, - * let the normal send code handle initialization. + * If no PIO bufs are available, return. An interrupt will + * call ipath_ib_piobufavail() when one is available. */ - if (diff == 0) { - qp->s_state = OP(SEND_LAST); - goto done; + _VERBS_INFO("h %u %p\n", qp->s_hdrwords, &qp->s_hdr); + _VERBS_INFO("d %u %p %u %p %u %u %u %u\n", qp->s_cur_size, + qp->s_cur_sge->sg_list, + qp->s_cur_sge->num_sge, + qp->s_cur_sge->sge.vaddr, + qp->s_cur_sge->sge.sge_length, + qp->s_cur_sge->sge.length, + qp->s_cur_sge->sge.m, + qp->s_cur_sge->sge.n); + if (ipath_verbs_send(dev->dd, qp->s_hdrwords, + (u32 *) &qp->s_hdr, qp->s_cur_size, + qp->s_cur_sge)) { + ipath_no_bufs_available(qp, dev); + goto bail; } - opcode = wqe->wr.opcode; + dev->n_unicast_xmit++; + /* Record that we sent the packet and s_hdr is empty. */ + qp->s_hdrwords = 0; } /* - * Set the state to restart in the middle of a request. - * Don't change the s_sge, s_cur_sge, or s_cur_size. - * See ipath_do_rc_send(). + * The lock is needed to synchronize between setting + * qp->s_ack_state, resend timer, and post_send(). */ - switch (opcode) { - case IB_WR_SEND: - case IB_WR_SEND_WITH_IMM: - qp->s_state = OP(RDMA_READ_RESPONSE_FIRST); - break; + spin_lock_irqsave(&qp->s_lock, flags); - case IB_WR_RDMA_WRITE: - case IB_WR_RDMA_WRITE_WITH_IMM: - qp->s_state = OP(RDMA_READ_RESPONSE_LAST); - break; + /* Sending responses has higher priority over sending requests. */ + if (qp->s_ack_state != OP(ACKNOWLEDGE) && + (bth0 = ipath_make_rc_ack(qp, ohdr, pmtu)) != 0) + bth2 = qp->s_ack_psn++ & IPS_PSN_MASK; + else if (!ipath_make_rc_req(qp, ohdr, pmtu, &bth0, &bth2)) + goto done; - case IB_WR_RDMA_READ: - qp->s_state = OP(RDMA_READ_RESPONSE_MIDDLE); - break; + spin_unlock_irqrestore(&qp->s_lock, flags); - default: - /* - * This case shouldn't happen since its only - * one PSN per req. - */ - qp->s_state = OP(SEND_LAST); + /* Construct the header. */ + extra_bytes = (4 - qp->s_cur_size) & 3; + nwords = (qp->s_cur_size + extra_bytes) >> 2; + lrh0 = IPS_LRH_BTH; + if (unlikely(qp->remote_ah_attr.ah_flags & IB_AH_GRH)) { + ipath_make_rc_grh(qp, &qp->remote_ah_attr.grh, nwords); + lrh0 = IPS_LRH_GRH; } + lrh0 |= qp->remote_ah_attr.sl << 4; + qp->s_hdr.lrh[0] = cpu_to_be16(lrh0); + qp->s_hdr.lrh[1] = cpu_to_be16(qp->remote_ah_attr.dlid); + qp->s_hdr.lrh[2] = cpu_to_be16(qp->s_hdrwords + nwords + + SIZE_OF_CRC); + qp->s_hdr.lrh[3] = cpu_to_be16(ipath_layer_get_lid(dev->dd)); + bth0 |= ipath_layer_get_pkey(dev->dd, qp->s_pkey_index); + bth0 |= extra_bytes << 20; + ohdr->bth[0] = cpu_to_be32(bth0); + ohdr->bth[1] = cpu_to_be32(qp->remote_qpn); + ohdr->bth[2] = cpu_to_be32(bth2); + + /* Check for more work to do. */ + goto again; + done: - qp->s_psn = psn; + spin_unlock_irqrestore(&qp->s_lock, flags); +clear: + clear_bit(IPATH_S_BUSY, &qp->s_flags); +bail: + return; +} + +static void send_rc_ack(struct ipath_qp *qp) +{ + struct ipath_ibdev *dev = to_idev(qp->ibqp.device); + u16 lrh0; + u32 bth0; + struct ipath_other_headers *ohdr; + + /* Construct the header. */ + ohdr = &qp->s_hdr.u.oth; + lrh0 = IPS_LRH_BTH; + /* header size in 32-bit words LRH+BTH+AETH = (8+12+4)/4. */ + qp->s_hdrwords = 6; + if (unlikely(qp->remote_ah_attr.ah_flags & IB_AH_GRH)) { + ipath_make_rc_grh(qp, &qp->remote_ah_attr.grh, 0); + ohdr = &qp->s_hdr.u.l.oth; + lrh0 = IPS_LRH_GRH; + } + bth0 = ipath_layer_get_pkey(dev->dd, qp->s_pkey_index); + ohdr->u.aeth = ipath_compute_aeth(qp); + if (qp->s_ack_state >= OP(COMPARE_SWAP)) { + bth0 |= IB_OPCODE_ATOMIC_ACKNOWLEDGE << 24; + ohdr->u.at.atomic_ack_eth = cpu_to_be64(qp->s_ack_atomic); + qp->s_hdrwords += sizeof(ohdr->u.at.atomic_ack_eth) / 4; + } + else + bth0 |= OP(ACKNOWLEDGE) << 24; + lrh0 |= qp->remote_ah_attr.sl << 4; + qp->s_hdr.lrh[0] = cpu_to_be16(lrh0); + qp->s_hdr.lrh[1] = cpu_to_be16(qp->remote_ah_attr.dlid); + qp->s_hdr.lrh[2] = cpu_to_be16(qp->s_hdrwords + SIZE_OF_CRC); + qp->s_hdr.lrh[3] = cpu_to_be16(ipath_layer_get_lid(dev->dd)); + ohdr->bth[0] = cpu_to_be32(bth0); + ohdr->bth[1] = cpu_to_be32(qp->remote_qpn); + ohdr->bth[2] = cpu_to_be32(qp->s_ack_psn & IPS_PSN_MASK); + + /* + * If we can send the ACK, clear the ACK state. + */ + if (ipath_verbs_send(dev->dd, qp->s_hdrwords, (u32 *) &qp->s_hdr, + 0, NULL) == 0) { + qp->s_ack_state = OP(ACKNOWLEDGE); + dev->n_rc_qacks++; + dev->n_unicast_xmit++; + } } /** @@ -681,12 +687,13 @@ static void reset_psn(struct ipath_qp *qp, u32 psn) * @psn: packet sequence number for the request * @wc: the work completion request * - * The QP s_lock should be held and interrupts disabled. + * The QP s_lock should be held. */ void ipath_restart_rc(struct ipath_qp *qp, u32 psn, struct ib_wc *wc) { struct ipath_swqe *wqe = get_swqe_ptr(qp, qp->s_last); struct ipath_ibdev *dev; + u32 n; /* * If there are no requests pending, we are done. @@ -728,7 +735,62 @@ void ipath_restart_rc(struct ipath_qp *qp, u32 psn, struct ib_wc *wc) else dev->n_rc_resends += (int)qp->s_psn - (int)psn; - reset_psn(qp, psn); + /* + * If we are starting the request from the beginning, let the normal + * send code handle initialization. + */ + qp->s_cur = qp->s_last; + if (ipath_cmp24(psn, wqe->psn) <= 0) { + qp->s_state = OP(SEND_LAST); + qp->s_psn = wqe->psn; + } else { + n = qp->s_cur; + for (;;) { + if (++n == qp->s_size) + n = 0; + if (n == qp->s_tail) { + if (ipath_cmp24(psn, qp->s_next_psn) >= 0) { + qp->s_cur = n; + wqe = get_swqe_ptr(qp, n); + } + break; + } + wqe = get_swqe_ptr(qp, n); + if (ipath_cmp24(psn, wqe->psn) < 0) + break; + qp->s_cur = n; + } + qp->s_psn = psn; + + /* + * Reset the state to restart in the middle of a request. + * Don't change the s_sge, s_cur_sge, or s_cur_size. + * See ipath_do_rc_send(). + */ + switch (wqe->wr.opcode) { + case IB_WR_SEND: + case IB_WR_SEND_WITH_IMM: + qp->s_state = OP(RDMA_READ_RESPONSE_FIRST); + break; + + case IB_WR_RDMA_WRITE: + case IB_WR_RDMA_WRITE_WITH_IMM: + qp->s_state = OP(RDMA_READ_RESPONSE_LAST); + break; + + case IB_WR_RDMA_READ: + qp->s_state = + OP(RDMA_READ_RESPONSE_MIDDLE); + break; + + default: + /* + * This case shouldn't happen since its only + * one PSN per req. + */ + qp->s_state = OP(SEND_LAST); + } + } done: tasklet_hi_schedule(&qp->s_task); @@ -737,15 +799,77 @@ void ipath_restart_rc(struct ipath_qp *qp, u32 psn, struct ib_wc *wc) return; } +/** + * reset_psn - reset the QP state to send starting from PSN + * @qp: the QP + * @psn: the packet sequence number to restart at + * + * This is called from ipath_rc_rcv() to process an incoming RC ACK + * for the given QP. + * Called at interrupt level with the QP s_lock held. + */ +static void reset_psn(struct ipath_qp *qp, u32 psn) +{ + struct ipath_swqe *wqe; + u32 n; + + n = qp->s_cur; + wqe = get_swqe_ptr(qp, n); + for (;;) { + if (++n == qp->s_size) + n = 0; + if (n == qp->s_tail) { + if (ipath_cmp24(psn, qp->s_next_psn) >= 0) { + qp->s_cur = n; + wqe = get_swqe_ptr(qp, n); + } + break; + } + wqe = get_swqe_ptr(qp, n); + if (ipath_cmp24(psn, wqe->psn) < 0) + break; + qp->s_cur = n; + } + qp->s_psn = psn; + + /* + * Set the state to restart in the middle of a + * request. Don't change the s_sge, s_cur_sge, or + * s_cur_size. See ipath_do_rc_send(). + */ + switch (wqe->wr.opcode) { + case IB_WR_SEND: + case IB_WR_SEND_WITH_IMM: + qp->s_state = OP(RDMA_READ_RESPONSE_FIRST); + break; + + case IB_WR_RDMA_WRITE: + case IB_WR_RDMA_WRITE_WITH_IMM: + qp->s_state = OP(RDMA_READ_RESPONSE_LAST); + break; + + case IB_WR_RDMA_READ: + qp->s_state = OP(RDMA_READ_RESPONSE_MIDDLE); + break; + + default: + /* + * This case shouldn't happen since its only + * one PSN per req. + */ + qp->s_state = OP(SEND_LAST); + } +} + /** * do_rc_ack - process an incoming RC ACK * @qp: the QP the ACK came in on * @psn: the packet sequence number of the ACK * @opcode: the opcode of the request that resulted in the ACK * - * This is called from ipath_rc_rcv_resp() to process an incoming RC ACK + * This is called from ipath_rc_rcv() to process an incoming RC ACK * for the given QP. - * Called at interrupt level with the QP s_lock held and interrupts disabled. + * Called at interrupt level with the QP s_lock held. * Returns 1 if OK, 0 if current operation should be aborted (NAK). */ static int do_rc_ack(struct ipath_qp *qp, u32 aeth, u32 psn, int opcode) @@ -882,16 +1006,26 @@ static int do_rc_ack(struct ipath_qp *qp, u32 aeth, u32 psn, int opcode) if (qp->s_last == qp->s_tail) goto bail; - /* The last valid PSN is the previous PSN. */ - qp->s_last_psn = psn - 1; + /* The last valid PSN seen is the previous request's. */ + qp->s_last_psn = wqe->psn - 1; dev->n_rc_resends += (int)qp->s_psn - (int)psn; - reset_psn(qp, psn); + /* + * If we are starting the request from the beginning, let + * the normal send code handle initialization. + */ + qp->s_cur = qp->s_last; + wqe = get_swqe_ptr(qp, qp->s_cur); + if (ipath_cmp24(psn, wqe->psn) <= 0) { + qp->s_state = OP(SEND_LAST); + qp->s_psn = wqe->psn; + } else + reset_psn(qp, psn); qp->s_rnr_timeout = - ib_ipath_rnr_table[(aeth >> IPATH_AETH_CREDIT_SHIFT) & - IPATH_AETH_CREDIT_MASK]; + ib_ipath_rnr_table[(aeth >> IPS_AETH_CREDIT_SHIFT) & + IPS_AETH_CREDIT_MASK]; ipath_insert_rnr_queue(qp); goto bail; @@ -899,8 +1033,8 @@ static int do_rc_ack(struct ipath_qp *qp, u32 aeth, u32 psn, int opcode) /* The last valid PSN seen is the previous request's. */ if (qp->s_last != qp->s_tail) qp->s_last_psn = wqe->psn - 1; - switch ((aeth >> IPATH_AETH_CREDIT_SHIFT) & - IPATH_AETH_CREDIT_MASK) { + switch ((aeth >> IPS_AETH_CREDIT_SHIFT) & + IPS_AETH_CREDIT_MASK) { case 0: /* PSN sequence error */ dev->n_seq_naks++; /* @@ -1048,33 +1182,32 @@ static inline void ipath_rc_rcv_resp(struct ipath_ibdev *dev, goto ack_done; } rdma_read: - if (unlikely(qp->s_state != OP(RDMA_READ_REQUEST))) - goto ack_done; - if (unlikely(tlen != (hdrsize + pmtu + 4))) - goto ack_done; - if (unlikely(pmtu >= qp->s_len)) - goto ack_done; - /* We got a response so update the timeout. */ - if (unlikely(qp->s_last == qp->s_tail || - get_swqe_ptr(qp, qp->s_last)->wr.opcode != - IB_WR_RDMA_READ)) - goto ack_done; - spin_lock(&dev->pending_lock); - if (qp->s_rnr_timeout == 0 && !list_empty(&qp->timerwait)) - list_move_tail(&qp->timerwait, - &dev->pending[dev->pending_index]); - spin_unlock(&dev->pending_lock); - /* - * Update the RDMA receive state but do the copy w/o - * holding the locks and blocking interrupts. - * XXX Yet another place that affects relaxed RDMA order - * since we don't want s_sge modified. - */ - qp->s_len -= pmtu; - qp->s_last_psn = psn; - spin_unlock_irqrestore(&qp->s_lock, flags); - ipath_copy_sge(&qp->s_sge, data, pmtu); - goto bail; + if (unlikely(qp->s_state != OP(RDMA_READ_REQUEST))) + goto ack_done; + if (unlikely(tlen != (hdrsize + pmtu + 4))) + goto ack_done; + if (unlikely(pmtu >= qp->s_len)) + goto ack_done; + /* We got a response so update the timeout. */ + if (unlikely(qp->s_last == qp->s_tail || + get_swqe_ptr(qp, qp->s_last)->wr.opcode != + IB_WR_RDMA_READ)) + goto ack_done; + spin_lock(&dev->pending_lock); + if (qp->s_rnr_timeout == 0 && !list_empty(&qp->timerwait)) + list_move_tail(&qp->timerwait, + &dev->pending[dev->pending_index]); + spin_unlock(&dev->pending_lock); + /* + * Update the RDMA receive state but do the copy w/o holding the + * locks and blocking interrupts. XXX Yet another place that + * affects relaxed RDMA order since we don't want s_sge modified. + */ + qp->s_len -= pmtu; + qp->s_last_psn = psn; + spin_unlock_irqrestore(&qp->s_lock, flags); + ipath_copy_sge(&qp->s_sge, data, pmtu); + goto bail; case OP(RDMA_READ_RESPONSE_LAST): /* ACKs READ req. */ @@ -1097,12 +1230,18 @@ static inline void ipath_rc_rcv_resp(struct ipath_ibdev *dev, * ICRC (4). */ if (unlikely(tlen <= (hdrsize + pad + 8))) { - /* XXX Need to generate an error CQ entry. */ + /* + * XXX Need to generate an error CQ + * entry. + */ goto ack_done; } tlen -= hdrsize + pad + 8; if (unlikely(tlen != qp->s_len)) { - /* XXX Need to generate an error CQ entry. */ + /* + * XXX Need to generate an error CQ + * entry. + */ goto ack_done; } if (!header_in_data) @@ -1115,12 +1254,9 @@ static inline void ipath_rc_rcv_resp(struct ipath_ibdev *dev, if (do_rc_ack(qp, aeth, psn, OP(RDMA_READ_RESPONSE_LAST))) { /* * Change the state so we contimue - * processing new requests and wake up the - * tasklet if there are posted sends. + * processing new requests. */ qp->s_state = OP(SEND_LAST); - if (qp->s_tail != qp->s_head) - tasklet_hi_schedule(&qp->s_task); } goto ack_done; } @@ -1166,16 +1302,18 @@ static inline int ipath_rc_rcv_error(struct ipath_ibdev *dev, * Don't queue the NAK if a RDMA read, atomic, or * NAK is pending though. */ - if (qp->s_ack_state != OP(ACKNOWLEDGE) || - qp->r_nak_state != 0) + spin_lock(&qp->s_lock); + if ((qp->s_ack_state >= OP(RDMA_READ_REQUEST) && + qp->s_ack_state != IB_OPCODE_ACKNOWLEDGE) || + qp->s_nak_state != 0) { + spin_unlock(&qp->s_lock); goto done; - if (qp->r_ack_state < OP(COMPARE_SWAP)) { - qp->r_ack_state = OP(SEND_ONLY); - qp->r_nak_state = IB_NAK_PSN_ERROR; - /* Use the expected PSN. */ - qp->r_ack_psn = qp->r_psn; } - goto send_ack; + qp->s_ack_state = OP(SEND_ONLY); + qp->s_nak_state = IB_NAK_PSN_ERROR; + /* Use the expected PSN. */ + qp->s_ack_psn = qp->r_psn; + goto resched; } /* @@ -1189,7 +1327,27 @@ static inline int ipath_rc_rcv_error(struct ipath_ibdev *dev, * send the earliest so that RDMA reads can be restarted at * the requester's expected PSN. */ - if (opcode == OP(RDMA_READ_REQUEST)) { + spin_lock(&qp->s_lock); + if (qp->s_ack_state != IB_OPCODE_ACKNOWLEDGE && + ipath_cmp24(psn, qp->s_ack_psn) >= 0) { + if (qp->s_ack_state < IB_OPCODE_RDMA_READ_REQUEST) + qp->s_ack_psn = psn; + spin_unlock(&qp->s_lock); + goto done; + } + switch (opcode) { + case OP(RDMA_READ_REQUEST): + /* + * We have to be careful to not change s_rdma_sge + * while ipath_do_rc_send() is using it and not + * holding the s_lock. + */ + if (qp->s_ack_state != OP(ACKNOWLEDGE) && + qp->s_ack_state >= IB_OPCODE_RDMA_READ_REQUEST) { + spin_unlock(&qp->s_lock); + dev->n_rdma_dup_busy++; + goto done; + } /* RETH comes after BTH */ if (!header_in_data) reth = &ohdr->u.rc.reth; @@ -1197,22 +1355,6 @@ static inline int ipath_rc_rcv_error(struct ipath_ibdev *dev, reth = (struct ib_reth *)data; data += sizeof(*reth); } - /* - * If we receive a duplicate RDMA request, it means the - * requester saw a sequence error and needs to restart - * from an earlier point. We can abort the current - * RDMA read send in that case. - */ - spin_lock_irq(&qp->s_lock); - if (qp->s_ack_state != OP(ACKNOWLEDGE) && - (qp->s_hdrwords || ipath_cmp24(psn, qp->s_ack_psn) >= 0)) { - /* - * We are already sending earlier requested data. - * Don't abort it to send later out of sequence data. - */ - spin_unlock_irq(&qp->s_lock); - goto done; - } qp->s_rdma_len = be32_to_cpu(reth->length); if (qp->s_rdma_len != 0) { u32 rkey = be32_to_cpu(reth->rkey); @@ -1226,10 +1368,8 @@ static inline int ipath_rc_rcv_error(struct ipath_ibdev *dev, ok = ipath_rkey_ok(dev, &qp->s_rdma_sge, qp->s_rdma_len, vaddr, rkey, IB_ACCESS_REMOTE_READ); - if (unlikely(!ok)) { - spin_unlock_irq(&qp->s_lock); + if (unlikely(!ok)) goto done; - } } else { qp->s_rdma_sge.sg_list = NULL; qp->s_rdma_sge.num_sge = 0; @@ -1238,44 +1378,25 @@ static inline int ipath_rc_rcv_error(struct ipath_ibdev *dev, qp->s_rdma_sge.sge.length = 0; qp->s_rdma_sge.sge.sge_length = 0; } - qp->s_ack_state = opcode; - qp->s_ack_psn = psn; - spin_unlock_irq(&qp->s_lock); - tasklet_hi_schedule(&qp->s_task); - goto send_ack; - } - - /* - * A pending RDMA read will ACK anything before it so - * ignore earlier duplicate requests. - */ - if (qp->s_ack_state != OP(ACKNOWLEDGE)) - goto done; + break; - /* - * If an ACK is pending, don't replace the pending ACK - * with an earlier one since the later one will ACK the earlier. - * Also, if we already have a pending atomic, send it. - */ - if (qp->r_ack_state != OP(ACKNOWLEDGE) && - (ipath_cmp24(psn, qp->r_ack_psn) <= 0 || - qp->r_ack_state >= OP(COMPARE_SWAP))) - goto send_ack; - switch (opcode) { case OP(COMPARE_SWAP): case OP(FETCH_ADD): /* - * Check for the PSN of the last atomic operation + * Check for the PSN of the last atomic operations * performed and resend the result if found. */ - if ((psn & IPATH_PSN_MASK) != qp->r_atomic_psn) + if ((psn & IPS_PSN_MASK) != qp->r_atomic_psn) { + spin_unlock(&qp->s_lock); goto done; + } + qp->s_ack_atomic = qp->r_atomic_data; break; } - qp->r_ack_state = opcode; - qp->r_nak_state = 0; - qp->r_ack_psn = psn; -send_ack: + qp->s_ack_state = opcode; + qp->s_nak_state = 0; + qp->s_ack_psn = psn; +resched: return 0; done: @@ -1303,6 +1424,7 @@ void ipath_rc_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr, u32 hdrsize; u32 psn; u32 pad; + unsigned long flags; struct ib_wc wc; u32 pmtu = ib_mtu_enum_to_int(qp->path_mtu); int diff; @@ -1331,6 +1453,11 @@ void ipath_rc_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr, } else psn = be32_to_cpu(ohdr->bth[2]); } + /* + * The opcode is in the low byte when its in network order + * (top byte when in host order). + */ + opcode = be32_to_cpu(ohdr->bth[0]) >> 24; /* * Process responses (ACKs) before anything else. Note that the @@ -1338,21 +1465,22 @@ void ipath_rc_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr, * queue rather than the expected receive packet sequence number. * In other words, this QP is the requester. */ - opcode = be32_to_cpu(ohdr->bth[0]) >> 24; if (opcode >= OP(RDMA_READ_RESPONSE_FIRST) && opcode <= OP(ATOMIC_ACKNOWLEDGE)) { ipath_rc_rcv_resp(dev, ohdr, data, tlen, qp, opcode, psn, hdrsize, pmtu, header_in_data); - goto done; + goto bail; } + spin_lock_irqsave(&qp->r_rq.lock, flags); + /* Compute 24 bits worth of difference. */ diff = ipath_cmp24(psn, qp->r_psn); if (unlikely(diff)) { if (ipath_rc_rcv_error(dev, ohdr, data, qp, opcode, psn, diff, header_in_data)) goto done; - goto send_ack; + goto resched; } /* Check for opcode sequence errors. */ @@ -1364,19 +1492,22 @@ void ipath_rc_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr, opcode == OP(SEND_LAST_WITH_IMMEDIATE)) break; nack_inv: - /* - * A NAK will ACK earlier sends and RDMA writes. - * Don't queue the NAK if a RDMA read, atomic, or NAK - * is pending though. - */ - if (qp->r_ack_state >= OP(COMPARE_SWAP)) - goto send_ack; - /* XXX Flush WQEs */ - qp->state = IB_QPS_ERR; - qp->r_ack_state = OP(SEND_ONLY); - qp->r_nak_state = IB_NAK_INVALID_REQUEST; - qp->r_ack_psn = qp->r_psn; - goto send_ack; + /* + * A NAK will ACK earlier sends and RDMA writes. Don't queue the + * NAK if a RDMA read, atomic, or NAK is pending though. + */ + spin_lock(&qp->s_lock); + if (qp->s_ack_state >= OP(RDMA_READ_REQUEST) && + qp->s_ack_state != IB_OPCODE_ACKNOWLEDGE) { + spin_unlock(&qp->s_lock); + goto done; + } + /* XXX Flush WQEs */ + qp->state = IB_QPS_ERR; + qp->s_ack_state = OP(SEND_ONLY); + qp->s_nak_state = IB_NAK_INVALID_REQUEST; + qp->s_ack_psn = qp->r_psn; + goto resched; case OP(RDMA_WRITE_FIRST): case OP(RDMA_WRITE_MIDDLE): @@ -1386,6 +1517,20 @@ void ipath_rc_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr, break; goto nack_inv; + case OP(RDMA_READ_REQUEST): + case OP(COMPARE_SWAP): + case OP(FETCH_ADD): + /* + * Drop all new requests until a response has been sent. A + * new request then ACKs the RDMA response we sent. Relaxed + * ordering would allow new requests to be processed but we + * would need to keep a queue of rwqe's for all that are in + * progress. Note that we can't RNR NAK this request since + * the RDMA READ or atomic response is already queued to be + * sent (unless we implement a response send queue). + */ + goto done; + default: if (opcode == OP(SEND_MIDDLE) || opcode == OP(SEND_LAST) || @@ -1394,11 +1539,6 @@ void ipath_rc_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr, opcode == OP(RDMA_WRITE_LAST) || opcode == OP(RDMA_WRITE_LAST_WITH_IMMEDIATE)) goto nack_inv; - /* - * Note that it is up to the requester to not send a new - * RDMA read or atomic operation before receiving an ACK - * for the previous operation. - */ break; } @@ -1415,12 +1555,17 @@ void ipath_rc_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr, * Don't queue the NAK if a RDMA read or atomic * is pending though. */ - if (qp->r_ack_state >= OP(COMPARE_SWAP)) - goto send_ack; - qp->r_ack_state = OP(SEND_ONLY); - qp->r_nak_state = IB_RNR_NAK | qp->r_min_rnr_timer; - qp->r_ack_psn = qp->r_psn; - goto send_ack; + spin_lock(&qp->s_lock); + if (qp->s_ack_state >= + OP(RDMA_READ_REQUEST) && + qp->s_ack_state != IB_OPCODE_ACKNOWLEDGE) { + spin_unlock(&qp->s_lock); + goto done; + } + qp->s_ack_state = OP(SEND_ONLY); + qp->s_nak_state = IB_RNR_NAK | qp->s_min_rnr_timer; + qp->s_ack_psn = qp->r_psn; + goto resched; } qp->r_rcv_len = 0; /* FALLTHROUGH */ @@ -1477,7 +1622,7 @@ void ipath_rc_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr, if (unlikely(wc.byte_len > qp->r_len)) goto nack_inv; ipath_copy_sge(&qp->r_sge, data, tlen); - qp->r_msn++; + atomic_inc(&qp->msn); if (opcode == OP(RDMA_WRITE_LAST) || opcode == OP(RDMA_WRITE_ONLY)) break; @@ -1521,8 +1666,29 @@ void ipath_rc_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr, ok = ipath_rkey_ok(dev, &qp->r_sge, qp->r_len, vaddr, rkey, IB_ACCESS_REMOTE_WRITE); - if (unlikely(!ok)) - goto nack_acc; + if (unlikely(!ok)) { + nack_acc: + /* + * A NAK will ACK earlier sends and RDMA + * writes. Don't queue the NAK if a RDMA + * read, atomic, or NAK is pending though. + */ + spin_lock(&qp->s_lock); + if (qp->s_ack_state >= + OP(RDMA_READ_REQUEST) && + qp->s_ack_state != + IB_OPCODE_ACKNOWLEDGE) { + spin_unlock(&qp->s_lock); + goto done; + } + /* XXX Flush WQEs */ + qp->state = IB_QPS_ERR; + qp->s_ack_state = OP(RDMA_WRITE_ONLY); + qp->s_nak_state = + IB_NAK_REMOTE_ACCESS_ERROR; + qp->s_ack_psn = qp->r_psn; + goto resched; + } } else { qp->r_sge.sg_list = NULL; qp->r_sge.sge.mr = NULL; @@ -1549,10 +1715,12 @@ void ipath_rc_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr, reth = (struct ib_reth *)data; data += sizeof(*reth); } - if (unlikely(!(qp->qp_access_flags & - IB_ACCESS_REMOTE_READ))) - goto nack_acc; - spin_lock_irq(&qp->s_lock); + spin_lock(&qp->s_lock); + if (qp->s_ack_state != OP(ACKNOWLEDGE) && + qp->s_ack_state >= IB_OPCODE_RDMA_READ_REQUEST) { + spin_unlock(&qp->s_lock); + goto done; + } qp->s_rdma_len = be32_to_cpu(reth->length); if (qp->s_rdma_len != 0) { u32 rkey = be32_to_cpu(reth->rkey); @@ -1564,7 +1732,7 @@ void ipath_rc_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr, qp->s_rdma_len, vaddr, rkey, IB_ACCESS_REMOTE_READ); if (unlikely(!ok)) { - spin_unlock_irq(&qp->s_lock); + spin_unlock(&qp->s_lock); goto nack_acc; } /* @@ -1581,25 +1749,21 @@ void ipath_rc_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr, qp->s_rdma_sge.sge.length = 0; qp->s_rdma_sge.sge.sge_length = 0; } + if (unlikely(!(qp->qp_access_flags & + IB_ACCESS_REMOTE_READ))) + goto nack_acc; /* * We need to increment the MSN here instead of when we * finish sending the result since a duplicate request would * increment it more than once. */ - qp->r_msn++; - + atomic_inc(&qp->msn); qp->s_ack_state = opcode; + qp->s_nak_state = 0; qp->s_ack_psn = psn; - spin_unlock_irq(&qp->s_lock); - qp->r_psn++; qp->r_state = opcode; - qp->r_nak_state = 0; - - /* Call ipath_do_rc_send() in another thread. */ - tasklet_hi_schedule(&qp->s_task); - - goto done; + goto rdmadone; case OP(COMPARE_SWAP): case OP(FETCH_ADD): { @@ -1628,7 +1792,7 @@ void ipath_rc_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr, goto nack_acc; /* Perform atomic OP and save result. */ sdata = be64_to_cpu(ateth->swap_data); - spin_lock_irq(&dev->pending_lock); + spin_lock(&dev->pending_lock); qp->r_atomic_data = *(u64 *) qp->r_sge.sge.vaddr; if (opcode == OP(FETCH_ADD)) *(u64 *) qp->r_sge.sge.vaddr = @@ -1636,9 +1800,9 @@ void ipath_rc_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr, else if (qp->r_atomic_data == be64_to_cpu(ateth->compare_data)) *(u64 *) qp->r_sge.sge.vaddr = sdata; - spin_unlock_irq(&dev->pending_lock); - qp->r_msn++; - qp->r_atomic_psn = psn & IPATH_PSN_MASK; + spin_unlock(&dev->pending_lock); + atomic_inc(&qp->msn); + qp->r_atomic_psn = psn & IPS_PSN_MASK; psn |= 1 << 31; break; } @@ -1649,39 +1813,44 @@ void ipath_rc_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr, } qp->r_psn++; qp->r_state = opcode; - qp->r_nak_state = 0; /* Send an ACK if requested or required. */ if (psn & (1 << 31)) { /* * Coalesce ACKs unless there is a RDMA READ or * ATOMIC pending. */ - if (qp->r_ack_state < OP(COMPARE_SWAP)) { - qp->r_ack_state = opcode; - qp->r_ack_psn = psn; + spin_lock(&qp->s_lock); + if (qp->s_ack_state == OP(ACKNOWLEDGE) || + qp->s_ack_state < IB_OPCODE_RDMA_READ_REQUEST) { + qp->s_ack_state = opcode; + qp->s_nak_state = 0; + qp->s_ack_psn = psn; + qp->s_ack_atomic = qp->r_atomic_data; + goto resched; } - goto send_ack; + spin_unlock(&qp->s_lock); } - goto done; +done: + spin_unlock_irqrestore(&qp->r_rq.lock, flags); + goto bail; -nack_acc: +resched: /* - * A NAK will ACK earlier sends and RDMA writes. - * Don't queue the NAK if a RDMA read, atomic, or NAK - * is pending though. + * Try to send ACK right away but not if ipath_do_rc_send() is + * active. */ - if (qp->r_ack_state < OP(COMPARE_SWAP)) { - /* XXX Flush WQEs */ - qp->state = IB_QPS_ERR; - qp->r_ack_state = OP(RDMA_WRITE_ONLY); - qp->r_nak_state = IB_NAK_REMOTE_ACCESS_ERROR; - qp->r_ack_psn = qp->r_psn; - } -send_ack: - /* Send ACK right away unless the send tasklet has a pending ACK. */ - if (qp->s_ack_state == OP(ACKNOWLEDGE)) + if (qp->s_hdrwords == 0 && + (qp->s_ack_state < IB_OPCODE_RDMA_READ_REQUEST || + qp->s_ack_state >= IB_OPCODE_COMPARE_SWAP)) send_rc_ack(qp); -done: +rdmadone: + spin_unlock(&qp->s_lock); + spin_unlock_irqrestore(&qp->r_rq.lock, flags); + + /* Call ipath_do_rc_send() in another thread. */ + tasklet_hi_schedule(&qp->s_task); + +bail: return; } diff --git a/trunk/drivers/infiniband/hw/ipath/ipath_registers.h b/trunk/drivers/infiniband/hw/ipath/ipath_registers.h index 89df8f5ea998..402126eb79c9 100644 --- a/trunk/drivers/infiniband/hw/ipath/ipath_registers.h +++ b/trunk/drivers/infiniband/hw/ipath/ipath_registers.h @@ -1,5 +1,4 @@ /* - * Copyright (c) 2006 QLogic, Inc. All rights reserved. * Copyright (c) 2003, 2004, 2005, 2006 PathScale, Inc. All rights reserved. * * This software is available to you under a choice of one of two diff --git a/trunk/drivers/infiniband/hw/ipath/ipath_ruc.c b/trunk/drivers/infiniband/hw/ipath/ipath_ruc.c index 772bc59fb85c..d38f4f3cfd1d 100644 --- a/trunk/drivers/infiniband/hw/ipath/ipath_ruc.c +++ b/trunk/drivers/infiniband/hw/ipath/ipath_ruc.c @@ -1,5 +1,4 @@ /* - * Copyright (c) 2006 QLogic, Inc. All rights reserved. * Copyright (c) 2005, 2006 PathScale, Inc. All rights reserved. * * This software is available to you under a choice of one of two @@ -32,7 +31,6 @@ */ #include "ipath_verbs.h" -#include "ipath_common.h" /* * Convert the AETH RNR timeout code into the number of milliseconds. @@ -113,23 +111,20 @@ void ipath_insert_rnr_queue(struct ipath_qp *qp) * * Return 0 if no RWQE is available, otherwise return 1. * - * Can be called from interrupt level. + * Called at interrupt level with the QP r_rq.lock held. */ int ipath_get_rwqe(struct ipath_qp *qp, int wr_id_only) { - unsigned long flags; struct ipath_rq *rq; struct ipath_srq *srq; struct ipath_rwqe *wqe; - int ret = 1; + int ret; if (!qp->ibqp.srq) { rq = &qp->r_rq; - spin_lock_irqsave(&rq->lock, flags); - if (unlikely(rq->tail == rq->head)) { ret = 0; - goto done; + goto bail; } wqe = get_rwqe_ptr(rq, rq->tail); qp->r_wr_id = wqe->wr_id; @@ -141,16 +136,17 @@ int ipath_get_rwqe(struct ipath_qp *qp, int wr_id_only) } if (++rq->tail >= rq->size) rq->tail = 0; - goto done; + ret = 1; + goto bail; } srq = to_isrq(qp->ibqp.srq); rq = &srq->rq; - spin_lock_irqsave(&rq->lock, flags); - + spin_lock(&rq->lock); if (unlikely(rq->tail == rq->head)) { + spin_unlock(&rq->lock); ret = 0; - goto done; + goto bail; } wqe = get_rwqe_ptr(rq, rq->tail); qp->r_wr_id = wqe->wr_id; @@ -172,18 +168,18 @@ int ipath_get_rwqe(struct ipath_qp *qp, int wr_id_only) n = rq->head - rq->tail; if (n < srq->limit) { srq->limit = 0; - spin_unlock_irqrestore(&rq->lock, flags); + spin_unlock(&rq->lock); ev.device = qp->ibqp.device; ev.element.srq = qp->ibqp.srq; ev.event = IB_EVENT_SRQ_LIMIT_REACHED; srq->ibsrq.event_handler(&ev, srq->ibsrq.srq_context); - goto bail; - } - } + } else + spin_unlock(&rq->lock); + } else + spin_unlock(&rq->lock); + ret = 1; -done: - spin_unlock_irqrestore(&rq->lock, flags); bail: return ret; } @@ -191,6 +187,7 @@ int ipath_get_rwqe(struct ipath_qp *qp, int wr_id_only) /** * ipath_ruc_loopback - handle UC and RC lookback requests * @sqp: the loopback QP + * @wc: the work completion entry * * This is called from ipath_do_uc_send() or ipath_do_rc_send() to * forward a WQE addressed to the same HCA. @@ -199,14 +196,13 @@ int ipath_get_rwqe(struct ipath_qp *qp, int wr_id_only) * receive interrupts since this is a connected protocol and all packets * will pass through here. */ -static void ipath_ruc_loopback(struct ipath_qp *sqp) +void ipath_ruc_loopback(struct ipath_qp *sqp, struct ib_wc *wc) { struct ipath_ibdev *dev = to_idev(sqp->ibqp.device); struct ipath_qp *qp; struct ipath_swqe *wqe; struct ipath_sge *sge; unsigned long flags; - struct ib_wc wc; u64 sdata; qp = ipath_lookup_qpn(&dev->qp_table, sqp->remote_qpn); @@ -237,8 +233,8 @@ static void ipath_ruc_loopback(struct ipath_qp *sqp) wqe = get_swqe_ptr(sqp, sqp->s_last); spin_unlock_irqrestore(&sqp->s_lock, flags); - wc.wc_flags = 0; - wc.imm_data = 0; + wc->wc_flags = 0; + wc->imm_data = 0; sqp->s_sge.sge = wqe->sg_list[0]; sqp->s_sge.sg_list = wqe->sg_list + 1; @@ -246,34 +242,39 @@ static void ipath_ruc_loopback(struct ipath_qp *sqp) sqp->s_len = wqe->length; switch (wqe->wr.opcode) { case IB_WR_SEND_WITH_IMM: - wc.wc_flags = IB_WC_WITH_IMM; - wc.imm_data = wqe->wr.imm_data; + wc->wc_flags = IB_WC_WITH_IMM; + wc->imm_data = wqe->wr.imm_data; /* FALLTHROUGH */ case IB_WR_SEND: + spin_lock_irqsave(&qp->r_rq.lock, flags); if (!ipath_get_rwqe(qp, 0)) { rnr_nak: + spin_unlock_irqrestore(&qp->r_rq.lock, flags); /* Handle RNR NAK */ if (qp->ibqp.qp_type == IB_QPT_UC) goto send_comp; if (sqp->s_rnr_retry == 0) { - wc.status = IB_WC_RNR_RETRY_EXC_ERR; + wc->status = IB_WC_RNR_RETRY_EXC_ERR; goto err; } if (sqp->s_rnr_retry_cnt < 7) sqp->s_rnr_retry--; dev->n_rnr_naks++; sqp->s_rnr_timeout = - ib_ipath_rnr_table[sqp->r_min_rnr_timer]; + ib_ipath_rnr_table[sqp->s_min_rnr_timer]; ipath_insert_rnr_queue(sqp); goto done; } + spin_unlock_irqrestore(&qp->r_rq.lock, flags); break; case IB_WR_RDMA_WRITE_WITH_IMM: - wc.wc_flags = IB_WC_WITH_IMM; - wc.imm_data = wqe->wr.imm_data; + wc->wc_flags = IB_WC_WITH_IMM; + wc->imm_data = wqe->wr.imm_data; + spin_lock_irqsave(&qp->r_rq.lock, flags); if (!ipath_get_rwqe(qp, 1)) goto rnr_nak; + spin_unlock_irqrestore(&qp->r_rq.lock, flags); /* FALLTHROUGH */ case IB_WR_RDMA_WRITE: if (wqe->length == 0) @@ -283,20 +284,20 @@ static void ipath_ruc_loopback(struct ipath_qp *sqp) wqe->wr.wr.rdma.rkey, IB_ACCESS_REMOTE_WRITE))) { acc_err: - wc.status = IB_WC_REM_ACCESS_ERR; + wc->status = IB_WC_REM_ACCESS_ERR; err: - wc.wr_id = wqe->wr.wr_id; - wc.opcode = ib_ipath_wc_opcode[wqe->wr.opcode]; - wc.vendor_err = 0; - wc.byte_len = 0; - wc.qp_num = sqp->ibqp.qp_num; - wc.src_qp = sqp->remote_qpn; - wc.pkey_index = 0; - wc.slid = sqp->remote_ah_attr.dlid; - wc.sl = sqp->remote_ah_attr.sl; - wc.dlid_path_bits = 0; - wc.port_num = 0; - ipath_sqerror_qp(sqp, &wc); + wc->wr_id = wqe->wr.wr_id; + wc->opcode = ib_ipath_wc_opcode[wqe->wr.opcode]; + wc->vendor_err = 0; + wc->byte_len = 0; + wc->qp_num = sqp->ibqp.qp_num; + wc->src_qp = sqp->remote_qpn; + wc->pkey_index = 0; + wc->slid = sqp->remote_ah_attr.dlid; + wc->sl = sqp->remote_ah_attr.sl; + wc->dlid_path_bits = 0; + wc->port_num = 0; + ipath_sqerror_qp(sqp, wc); goto done; } break; @@ -372,22 +373,22 @@ static void ipath_ruc_loopback(struct ipath_qp *sqp) goto send_comp; if (wqe->wr.opcode == IB_WR_RDMA_WRITE_WITH_IMM) - wc.opcode = IB_WC_RECV_RDMA_WITH_IMM; + wc->opcode = IB_WC_RECV_RDMA_WITH_IMM; else - wc.opcode = IB_WC_RECV; - wc.wr_id = qp->r_wr_id; - wc.status = IB_WC_SUCCESS; - wc.vendor_err = 0; - wc.byte_len = wqe->length; - wc.qp_num = qp->ibqp.qp_num; - wc.src_qp = qp->remote_qpn; + wc->opcode = IB_WC_RECV; + wc->wr_id = qp->r_wr_id; + wc->status = IB_WC_SUCCESS; + wc->vendor_err = 0; + wc->byte_len = wqe->length; + wc->qp_num = qp->ibqp.qp_num; + wc->src_qp = qp->remote_qpn; /* XXX do we know which pkey matched? Only needed for GSI. */ - wc.pkey_index = 0; - wc.slid = qp->remote_ah_attr.dlid; - wc.sl = qp->remote_ah_attr.sl; - wc.dlid_path_bits = 0; + wc->pkey_index = 0; + wc->slid = qp->remote_ah_attr.dlid; + wc->sl = qp->remote_ah_attr.sl; + wc->dlid_path_bits = 0; /* Signal completion event if the solicited bit is set. */ - ipath_cq_enter(to_icq(qp->ibqp.recv_cq), &wc, + ipath_cq_enter(to_icq(qp->ibqp.recv_cq), wc, wqe->wr.send_flags & IB_SEND_SOLICITED); send_comp: @@ -395,19 +396,19 @@ static void ipath_ruc_loopback(struct ipath_qp *sqp) if (!test_bit(IPATH_S_SIGNAL_REQ_WR, &sqp->s_flags) || (wqe->wr.send_flags & IB_SEND_SIGNALED)) { - wc.wr_id = wqe->wr.wr_id; - wc.status = IB_WC_SUCCESS; - wc.opcode = ib_ipath_wc_opcode[wqe->wr.opcode]; - wc.vendor_err = 0; - wc.byte_len = wqe->length; - wc.qp_num = sqp->ibqp.qp_num; - wc.src_qp = 0; - wc.pkey_index = 0; - wc.slid = 0; - wc.sl = 0; - wc.dlid_path_bits = 0; - wc.port_num = 0; - ipath_cq_enter(to_icq(sqp->ibqp.send_cq), &wc, 0); + wc->wr_id = wqe->wr.wr_id; + wc->status = IB_WC_SUCCESS; + wc->opcode = ib_ipath_wc_opcode[wqe->wr.opcode]; + wc->vendor_err = 0; + wc->byte_len = wqe->length; + wc->qp_num = sqp->ibqp.qp_num; + wc->src_qp = 0; + wc->pkey_index = 0; + wc->slid = 0; + wc->sl = 0; + wc->dlid_path_bits = 0; + wc->port_num = 0; + ipath_cq_enter(to_icq(sqp->ibqp.send_cq), wc, 0); } /* Update s_last now that we are finished with the SWQE */ @@ -453,11 +454,11 @@ void ipath_no_bufs_available(struct ipath_qp *qp, struct ipath_ibdev *dev) } /** - * ipath_post_ruc_send - post RC and UC sends + * ipath_post_rc_send - post RC and UC sends * @qp: the QP to post on * @wr: the work request to send */ -int ipath_post_ruc_send(struct ipath_qp *qp, struct ib_send_wr *wr) +int ipath_post_rc_send(struct ipath_qp *qp, struct ib_send_wr *wr) { struct ipath_swqe *wqe; unsigned long flags; @@ -532,149 +533,13 @@ int ipath_post_ruc_send(struct ipath_qp *qp, struct ib_send_wr *wr) qp->s_head = next; spin_unlock_irqrestore(&qp->s_lock, flags); - ipath_do_ruc_send((unsigned long) qp); + if (qp->ibqp.qp_type == IB_QPT_UC) + ipath_do_uc_send((unsigned long) qp); + else + ipath_do_rc_send((unsigned long) qp); ret = 0; bail: return ret; } - -/** - * ipath_make_grh - construct a GRH header - * @dev: a pointer to the ipath device - * @hdr: a pointer to the GRH header being constructed - * @grh: the global route address to send to - * @hwords: the number of 32 bit words of header being sent - * @nwords: the number of 32 bit words of data being sent - * - * Return the size of the header in 32 bit words. - */ -u32 ipath_make_grh(struct ipath_ibdev *dev, struct ib_grh *hdr, - struct ib_global_route *grh, u32 hwords, u32 nwords) -{ - hdr->version_tclass_flow = - cpu_to_be32((6 << 28) | - (grh->traffic_class << 20) | - grh->flow_label); - hdr->paylen = cpu_to_be16((hwords - 2 + nwords + SIZE_OF_CRC) << 2); - /* next_hdr is defined by C8-7 in ch. 8.4.1 */ - hdr->next_hdr = 0x1B; - hdr->hop_limit = grh->hop_limit; - /* The SGID is 32-bit aligned. */ - hdr->sgid.global.subnet_prefix = dev->gid_prefix; - hdr->sgid.global.interface_id = ipath_layer_get_guid(dev->dd); - hdr->dgid = grh->dgid; - - /* GRH header size in 32-bit words. */ - return sizeof(struct ib_grh) / sizeof(u32); -} - -/** - * ipath_do_ruc_send - perform a send on an RC or UC QP - * @data: contains a pointer to the QP - * - * Process entries in the send work queue until credit or queue is - * exhausted. Only allow one CPU to send a packet per QP (tasklet). - * Otherwise, after we drop the QP s_lock, two threads could send - * packets out of order. - */ -void ipath_do_ruc_send(unsigned long data) -{ - struct ipath_qp *qp = (struct ipath_qp *)data; - struct ipath_ibdev *dev = to_idev(qp->ibqp.device); - unsigned long flags; - u16 lrh0; - u32 nwords; - u32 extra_bytes; - u32 bth0; - u32 bth2; - u32 pmtu = ib_mtu_enum_to_int(qp->path_mtu); - struct ipath_other_headers *ohdr; - - if (test_and_set_bit(IPATH_S_BUSY, &qp->s_flags)) - goto bail; - - if (unlikely(qp->remote_ah_attr.dlid == - ipath_layer_get_lid(dev->dd))) { - ipath_ruc_loopback(qp); - goto clear; - } - - ohdr = &qp->s_hdr.u.oth; - if (qp->remote_ah_attr.ah_flags & IB_AH_GRH) - ohdr = &qp->s_hdr.u.l.oth; - -again: - /* Check for a constructed packet to be sent. */ - if (qp->s_hdrwords != 0) { - /* - * If no PIO bufs are available, return. An interrupt will - * call ipath_ib_piobufavail() when one is available. - */ - if (ipath_verbs_send(dev->dd, qp->s_hdrwords, - (u32 *) &qp->s_hdr, qp->s_cur_size, - qp->s_cur_sge)) { - ipath_no_bufs_available(qp, dev); - goto bail; - } - dev->n_unicast_xmit++; - /* Record that we sent the packet and s_hdr is empty. */ - qp->s_hdrwords = 0; - } - - /* - * The lock is needed to synchronize between setting - * qp->s_ack_state, resend timer, and post_send(). - */ - spin_lock_irqsave(&qp->s_lock, flags); - - /* Sending responses has higher priority over sending requests. */ - if (qp->s_ack_state != IB_OPCODE_RC_ACKNOWLEDGE && - (bth0 = ipath_make_rc_ack(qp, ohdr, pmtu)) != 0) - bth2 = qp->s_ack_psn++ & IPATH_PSN_MASK; - else if (!((qp->ibqp.qp_type == IB_QPT_RC) ? - ipath_make_rc_req(qp, ohdr, pmtu, &bth0, &bth2) : - ipath_make_uc_req(qp, ohdr, pmtu, &bth0, &bth2))) { - /* - * Clear the busy bit before unlocking to avoid races with - * adding new work queue items and then failing to process - * them. - */ - clear_bit(IPATH_S_BUSY, &qp->s_flags); - spin_unlock_irqrestore(&qp->s_lock, flags); - goto bail; - } - - spin_unlock_irqrestore(&qp->s_lock, flags); - - /* Construct the header. */ - extra_bytes = (4 - qp->s_cur_size) & 3; - nwords = (qp->s_cur_size + extra_bytes) >> 2; - lrh0 = IPATH_LRH_BTH; - if (unlikely(qp->remote_ah_attr.ah_flags & IB_AH_GRH)) { - qp->s_hdrwords += ipath_make_grh(dev, &qp->s_hdr.u.l.grh, - &qp->remote_ah_attr.grh, - qp->s_hdrwords, nwords); - lrh0 = IPATH_LRH_GRH; - } - lrh0 |= qp->remote_ah_attr.sl << 4; - qp->s_hdr.lrh[0] = cpu_to_be16(lrh0); - qp->s_hdr.lrh[1] = cpu_to_be16(qp->remote_ah_attr.dlid); - qp->s_hdr.lrh[2] = cpu_to_be16(qp->s_hdrwords + nwords + - SIZE_OF_CRC); - qp->s_hdr.lrh[3] = cpu_to_be16(ipath_layer_get_lid(dev->dd)); - bth0 |= ipath_layer_get_pkey(dev->dd, qp->s_pkey_index); - bth0 |= extra_bytes << 20; - ohdr->bth[0] = cpu_to_be32(bth0); - ohdr->bth[1] = cpu_to_be32(qp->remote_qpn); - ohdr->bth[2] = cpu_to_be32(bth2); - - /* Check for more work to do. */ - goto again; - -clear: - clear_bit(IPATH_S_BUSY, &qp->s_flags); -bail: - return; -} diff --git a/trunk/drivers/infiniband/hw/ipath/ipath_srq.c b/trunk/drivers/infiniband/hw/ipath/ipath_srq.c index f760434660bd..01c4c6c56118 100644 --- a/trunk/drivers/infiniband/hw/ipath/ipath_srq.c +++ b/trunk/drivers/infiniband/hw/ipath/ipath_srq.c @@ -1,5 +1,4 @@ /* - * Copyright (c) 2006 QLogic, Inc. All rights reserved. * Copyright (c) 2005, 2006 PathScale, Inc. All rights reserved. * * This software is available to you under a choice of one of two @@ -126,23 +125,11 @@ struct ib_srq *ipath_create_srq(struct ib_pd *ibpd, struct ib_srq_init_attr *srq_init_attr, struct ib_udata *udata) { - struct ipath_ibdev *dev = to_idev(ibpd->device); struct ipath_srq *srq; u32 sz; struct ib_srq *ret; - if (dev->n_srqs_allocated == ib_ipath_max_srqs) { - ret = ERR_PTR(-ENOMEM); - goto bail; - } - - if (srq_init_attr->attr.max_wr == 0) { - ret = ERR_PTR(-EINVAL); - goto bail; - } - - if ((srq_init_attr->attr.max_sge > ib_ipath_max_srq_sges) || - (srq_init_attr->attr.max_wr > ib_ipath_max_srq_wrs)) { + if (srq_init_attr->attr.max_sge < 1) { ret = ERR_PTR(-EINVAL); goto bail; } @@ -177,8 +164,6 @@ struct ib_srq *ipath_create_srq(struct ib_pd *ibpd, ret = &srq->ibsrq; - dev->n_srqs_allocated++; - bail: return ret; } @@ -196,26 +181,24 @@ int ipath_modify_srq(struct ib_srq *ibsrq, struct ib_srq_attr *attr, unsigned long flags; int ret; - if (attr_mask & IB_SRQ_MAX_WR) - if ((attr->max_wr > ib_ipath_max_srq_wrs) || - (attr->max_sge > srq->rq.max_sge)) { - ret = -EINVAL; - goto bail; - } + if (attr_mask & IB_SRQ_LIMIT) { + spin_lock_irqsave(&srq->rq.lock, flags); + srq->limit = attr->srq_limit; + spin_unlock_irqrestore(&srq->rq.lock, flags); + } + if (attr_mask & IB_SRQ_MAX_WR) { + u32 size = attr->max_wr + 1; + struct ipath_rwqe *wq, *p; + u32 n; + u32 sz; - if (attr_mask & IB_SRQ_LIMIT) - if (attr->srq_limit >= srq->rq.size) { + if (attr->max_sge < srq->rq.max_sge) { ret = -EINVAL; goto bail; } - if (attr_mask & IB_SRQ_MAX_WR) { - struct ipath_rwqe *wq, *p; - u32 sz, size, n; - sz = sizeof(struct ipath_rwqe) + attr->max_sge * sizeof(struct ipath_sge); - size = attr->max_wr + 1; wq = vmalloc(size * sz); if (!wq) { ret = -ENOMEM; @@ -259,11 +242,6 @@ int ipath_modify_srq(struct ib_srq *ibsrq, struct ib_srq_attr *attr, spin_unlock_irqrestore(&srq->rq.lock, flags); } - if (attr_mask & IB_SRQ_LIMIT) { - spin_lock_irqsave(&srq->rq.lock, flags); - srq->limit = attr->srq_limit; - spin_unlock_irqrestore(&srq->rq.lock, flags); - } ret = 0; bail: @@ -287,9 +265,7 @@ int ipath_query_srq(struct ib_srq *ibsrq, struct ib_srq_attr *attr) int ipath_destroy_srq(struct ib_srq *ibsrq) { struct ipath_srq *srq = to_isrq(ibsrq); - struct ipath_ibdev *dev = to_idev(ibsrq->device); - dev->n_srqs_allocated--; vfree(srq->rq.wq); kfree(srq); diff --git a/trunk/drivers/infiniband/hw/ipath/ipath_stats.c b/trunk/drivers/infiniband/hw/ipath/ipath_stats.c index 70351b7e35c0..fe209137ee74 100644 --- a/trunk/drivers/infiniband/hw/ipath/ipath_stats.c +++ b/trunk/drivers/infiniband/hw/ipath/ipath_stats.c @@ -1,5 +1,4 @@ /* - * Copyright (c) 2006 QLogic, Inc. All rights reserved. * Copyright (c) 2003, 2004, 2005, 2006 PathScale, Inc. All rights reserved. * * This software is available to you under a choice of one of two @@ -186,6 +185,7 @@ static void ipath_qcheck(struct ipath_devdata *dd) dd->ipath_port0head, (unsigned long long) ipath_stats.sps_port0pkts); + ipath_kreceive(dd); } dd->ipath_lastport0rcv_cnt = ipath_stats.sps_port0pkts; } diff --git a/trunk/drivers/infiniband/hw/ipath/ipath_sysfs.c b/trunk/drivers/infiniband/hw/ipath/ipath_sysfs.c index b98821d7801d..f323791cc495 100644 --- a/trunk/drivers/infiniband/hw/ipath/ipath_sysfs.c +++ b/trunk/drivers/infiniband/hw/ipath/ipath_sysfs.c @@ -1,5 +1,4 @@ /* - * Copyright (c) 2006 QLogic, Inc. All rights reserved. * Copyright (c) 2006 PathScale, Inc. All rights reserved. * * This software is available to you under a choice of one of two @@ -35,8 +34,8 @@ #include #include "ipath_kernel.h" +#include "ips_common.h" #include "ipath_layer.h" -#include "ipath_common.h" /** * ipath_parse_ushort - parse an unsigned short value in an arbitrary base @@ -85,6 +84,99 @@ static ssize_t show_num_units(struct device_driver *dev, char *buf) ipath_count_units(NULL, NULL, NULL)); } +#define DRIVER_STAT(name, attr) \ + static ssize_t show_stat_##name(struct device_driver *dev, \ + char *buf) \ + { \ + return scnprintf( \ + buf, PAGE_SIZE, "%llu\n", \ + (unsigned long long) ipath_stats.sps_ ##attr); \ + } \ + static DRIVER_ATTR(name, S_IRUGO, show_stat_##name, NULL) + +DRIVER_STAT(intrs, ints); +DRIVER_STAT(err_intrs, errints); +DRIVER_STAT(errs, errs); +DRIVER_STAT(pkt_errs, pkterrs); +DRIVER_STAT(crc_errs, crcerrs); +DRIVER_STAT(hw_errs, hwerrs); +DRIVER_STAT(ib_link, iblink); +DRIVER_STAT(port0_pkts, port0pkts); +DRIVER_STAT(ether_spkts, ether_spkts); +DRIVER_STAT(ether_rpkts, ether_rpkts); +DRIVER_STAT(sma_spkts, sma_spkts); +DRIVER_STAT(sma_rpkts, sma_rpkts); +DRIVER_STAT(hdrq_full, hdrqfull); +DRIVER_STAT(etid_full, etidfull); +DRIVER_STAT(no_piobufs, nopiobufs); +DRIVER_STAT(ports, ports); +DRIVER_STAT(pkey0, pkeys[0]); +DRIVER_STAT(pkey1, pkeys[1]); +DRIVER_STAT(pkey2, pkeys[2]); +DRIVER_STAT(pkey3, pkeys[3]); +/* XXX fix the following when dynamic table of devices used */ +DRIVER_STAT(lid0, lid[0]); +DRIVER_STAT(lid1, lid[1]); +DRIVER_STAT(lid2, lid[2]); +DRIVER_STAT(lid3, lid[3]); + +DRIVER_STAT(nports, nports); +DRIVER_STAT(null_intr, nullintr); +DRIVER_STAT(max_pkts_call, maxpkts_call); +DRIVER_STAT(avg_pkts_call, avgpkts_call); +DRIVER_STAT(page_locks, pagelocks); +DRIVER_STAT(page_unlocks, pageunlocks); +DRIVER_STAT(krdrops, krdrops); +/* XXX fix the following when dynamic table of devices used */ +DRIVER_STAT(mlid0, mlid[0]); +DRIVER_STAT(mlid1, mlid[1]); +DRIVER_STAT(mlid2, mlid[2]); +DRIVER_STAT(mlid3, mlid[3]); + +static struct attribute *driver_stat_attributes[] = { + &driver_attr_intrs.attr, + &driver_attr_err_intrs.attr, + &driver_attr_errs.attr, + &driver_attr_pkt_errs.attr, + &driver_attr_crc_errs.attr, + &driver_attr_hw_errs.attr, + &driver_attr_ib_link.attr, + &driver_attr_port0_pkts.attr, + &driver_attr_ether_spkts.attr, + &driver_attr_ether_rpkts.attr, + &driver_attr_sma_spkts.attr, + &driver_attr_sma_rpkts.attr, + &driver_attr_hdrq_full.attr, + &driver_attr_etid_full.attr, + &driver_attr_no_piobufs.attr, + &driver_attr_ports.attr, + &driver_attr_pkey0.attr, + &driver_attr_pkey1.attr, + &driver_attr_pkey2.attr, + &driver_attr_pkey3.attr, + &driver_attr_lid0.attr, + &driver_attr_lid1.attr, + &driver_attr_lid2.attr, + &driver_attr_lid3.attr, + &driver_attr_nports.attr, + &driver_attr_null_intr.attr, + &driver_attr_max_pkts_call.attr, + &driver_attr_avg_pkts_call.attr, + &driver_attr_page_locks.attr, + &driver_attr_page_unlocks.attr, + &driver_attr_krdrops.attr, + &driver_attr_mlid0.attr, + &driver_attr_mlid1.attr, + &driver_attr_mlid2.attr, + &driver_attr_mlid3.attr, + NULL +}; + +static struct attribute_group driver_stat_attr_group = { + .name = "stats", + .attrs = driver_stat_attributes +}; + static ssize_t show_status(struct device *dev, struct device_attribute *attr, char *buf) @@ -180,23 +272,23 @@ static ssize_t store_lid(struct device *dev, size_t count) { struct ipath_devdata *dd = dev_get_drvdata(dev); - u16 lid = 0; + u16 lid; int ret; ret = ipath_parse_ushort(buf, &lid); if (ret < 0) goto invalid; - if (lid == 0 || lid >= IPATH_MULTICAST_LID_BASE) { + if (lid == 0 || lid >= 0xc000) { ret = -EINVAL; goto invalid; } - ipath_set_lid(dd, lid, 0); + ipath_set_sps_lid(dd, lid, 0); goto bail; invalid: - ipath_dev_err(dd, "attempt to set invalid LID 0x%x\n", lid); + ipath_dev_err(dd, "attempt to set invalid LID\n"); bail: return ret; } @@ -221,12 +313,13 @@ static ssize_t store_mlid(struct device *dev, int ret; ret = ipath_parse_ushort(buf, &mlid); - if (ret < 0 || mlid < IPATH_MULTICAST_LID_BASE) + if (ret < 0) goto invalid; unit = dd->ipath_unit; dd->ipath_mlid = mlid; + ipath_stats.sps_mlid[unit] = mlid; ipath_layer_intr(dd, IPATH_LAYER_INT_BCAST); goto bail; @@ -641,12 +734,20 @@ int ipath_driver_create_group(struct device_driver *drv) int ret; ret = sysfs_create_group(&drv->kobj, &driver_attr_group); + if (ret) + goto bail; + ret = sysfs_create_group(&drv->kobj, &driver_stat_attr_group); + if (ret) + sysfs_remove_group(&drv->kobj, &driver_attr_group); + +bail: return ret; } void ipath_driver_remove_group(struct device_driver *drv) { + sysfs_remove_group(&drv->kobj, &driver_stat_attr_group); sysfs_remove_group(&drv->kobj, &driver_attr_group); } diff --git a/trunk/drivers/infiniband/hw/ipath/ipath_uc.c b/trunk/drivers/infiniband/hw/ipath/ipath_uc.c index c33abea2d5a7..0d6dbc0a541e 100644 --- a/trunk/drivers/infiniband/hw/ipath/ipath_uc.c +++ b/trunk/drivers/infiniband/hw/ipath/ipath_uc.c @@ -1,5 +1,4 @@ /* - * Copyright (c) 2006 QLogic, Inc. All rights reserved. * Copyright (c) 2005, 2006 PathScale, Inc. All rights reserved. * * This software is available to you under a choice of one of two @@ -32,7 +31,7 @@ */ #include "ipath_verbs.h" -#include "ipath_common.h" +#include "ips_common.h" /* cut down ridiculously long IB macro names */ #define OP(x) IB_OPCODE_UC_##x @@ -62,40 +61,90 @@ static void complete_last_send(struct ipath_qp *qp, struct ipath_swqe *wqe, } /** - * ipath_make_uc_req - construct a request packet (SEND, RDMA write) - * @qp: a pointer to the QP - * @ohdr: a pointer to the IB header being constructed - * @pmtu: the path MTU - * @bth0p: pointer to the BTH opcode word - * @bth2p: pointer to the BTH PSN word + * ipath_do_uc_send - do a send on a UC queue + * @data: contains a pointer to the QP to send on * - * Return 1 if constructed; otherwise, return 0. - * Note the QP s_lock must be held and interrupts disabled. + * Process entries in the send work queue until the queue is exhausted. + * Only allow one CPU to send a packet per QP (tasklet). + * Otherwise, after we drop the QP lock, two threads could send + * packets out of order. + * This is similar to ipath_do_rc_send() below except we don't have + * timeouts or resends. */ -int ipath_make_uc_req(struct ipath_qp *qp, - struct ipath_other_headers *ohdr, - u32 pmtu, u32 *bth0p, u32 *bth2p) +void ipath_do_uc_send(unsigned long data) { + struct ipath_qp *qp = (struct ipath_qp *)data; + struct ipath_ibdev *dev = to_idev(qp->ibqp.device); struct ipath_swqe *wqe; + unsigned long flags; + u16 lrh0; u32 hwords; + u32 nwords; + u32 extra_bytes; u32 bth0; + u32 bth2; + u32 pmtu = ib_mtu_enum_to_int(qp->path_mtu); u32 len; + struct ipath_other_headers *ohdr; struct ib_wc wc; - if (!(ib_ipath_state_ops[qp->state] & IPATH_PROCESS_SEND_OK)) - goto done; + if (test_and_set_bit(IPATH_S_BUSY, &qp->s_flags)) + goto bail; + + if (unlikely(qp->remote_ah_attr.dlid == + ipath_layer_get_lid(dev->dd))) { + /* Pass in an uninitialized ib_wc to save stack space. */ + ipath_ruc_loopback(qp, &wc); + clear_bit(IPATH_S_BUSY, &qp->s_flags); + goto bail; + } + + ohdr = &qp->s_hdr.u.oth; + if (qp->remote_ah_attr.ah_flags & IB_AH_GRH) + ohdr = &qp->s_hdr.u.l.oth; +again: + /* Check for a constructed packet to be sent. */ + if (qp->s_hdrwords != 0) { + /* + * If no PIO bufs are available, return. + * An interrupt will call ipath_ib_piobufavail() + * when one is available. + */ + if (ipath_verbs_send(dev->dd, qp->s_hdrwords, + (u32 *) &qp->s_hdr, + qp->s_cur_size, + qp->s_cur_sge)) { + ipath_no_bufs_available(qp, dev); + goto bail; + } + dev->n_unicast_xmit++; + /* Record that we sent the packet and s_hdr is empty. */ + qp->s_hdrwords = 0; + } + + lrh0 = IPS_LRH_BTH; /* header size in 32-bit words LRH+BTH = (8+12)/4. */ hwords = 5; - bth0 = 0; - /* Get the next send request. */ + /* + * The lock is needed to synchronize between + * setting qp->s_ack_state and post_send(). + */ + spin_lock_irqsave(&qp->s_lock, flags); + + if (!(ib_ipath_state_ops[qp->state] & IPATH_PROCESS_SEND_OK)) + goto done; + + bth0 = ipath_layer_get_pkey(dev->dd, qp->s_pkey_index); + + /* Send a request. */ wqe = get_swqe_ptr(qp, qp->s_last); switch (qp->s_state) { default: /* - * Signal the completion of the last send - * (if there is one). + * Signal the completion of the last send (if there is + * one). */ if (qp->s_last != qp->s_tail) complete_last_send(qp, wqe, &wc); @@ -208,16 +257,61 @@ int ipath_make_uc_req(struct ipath_qp *qp, } break; } + bth2 = qp->s_next_psn++ & IPS_PSN_MASK; qp->s_len -= len; + bth0 |= qp->s_state << 24; + + spin_unlock_irqrestore(&qp->s_lock, flags); + + /* Construct the header. */ + extra_bytes = (4 - len) & 3; + nwords = (len + extra_bytes) >> 2; + if (unlikely(qp->remote_ah_attr.ah_flags & IB_AH_GRH)) { + /* Header size in 32-bit words. */ + hwords += 10; + lrh0 = IPS_LRH_GRH; + qp->s_hdr.u.l.grh.version_tclass_flow = + cpu_to_be32((6 << 28) | + (qp->remote_ah_attr.grh.traffic_class + << 20) | + qp->remote_ah_attr.grh.flow_label); + qp->s_hdr.u.l.grh.paylen = + cpu_to_be16(((hwords - 12) + nwords + + SIZE_OF_CRC) << 2); + /* next_hdr is defined by C8-7 in ch. 8.4.1 */ + qp->s_hdr.u.l.grh.next_hdr = 0x1B; + qp->s_hdr.u.l.grh.hop_limit = + qp->remote_ah_attr.grh.hop_limit; + /* The SGID is 32-bit aligned. */ + qp->s_hdr.u.l.grh.sgid.global.subnet_prefix = + dev->gid_prefix; + qp->s_hdr.u.l.grh.sgid.global.interface_id = + ipath_layer_get_guid(dev->dd); + qp->s_hdr.u.l.grh.dgid = qp->remote_ah_attr.grh.dgid; + } qp->s_hdrwords = hwords; qp->s_cur_sge = &qp->s_sge; qp->s_cur_size = len; - *bth0p = bth0 | (qp->s_state << 24); - *bth2p = qp->s_next_psn++ & IPATH_PSN_MASK; - return 1; + lrh0 |= qp->remote_ah_attr.sl << 4; + qp->s_hdr.lrh[0] = cpu_to_be16(lrh0); + /* DEST LID */ + qp->s_hdr.lrh[1] = cpu_to_be16(qp->remote_ah_attr.dlid); + qp->s_hdr.lrh[2] = cpu_to_be16(hwords + nwords + SIZE_OF_CRC); + qp->s_hdr.lrh[3] = cpu_to_be16(ipath_layer_get_lid(dev->dd)); + bth0 |= extra_bytes << 20; + ohdr->bth[0] = cpu_to_be32(bth0); + ohdr->bth[1] = cpu_to_be32(qp->remote_qpn); + ohdr->bth[2] = cpu_to_be32(bth2); + + /* Check for more work to do. */ + goto again; done: - return 0; + spin_unlock_irqrestore(&qp->s_lock, flags); + clear_bit(IPATH_S_BUSY, &qp->s_flags); + +bail: + return; } /** @@ -241,6 +335,7 @@ void ipath_uc_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr, u32 hdrsize; u32 psn; u32 pad; + unsigned long flags; struct ib_wc wc; u32 pmtu = ib_mtu_enum_to_int(qp->path_mtu); struct ib_reth *reth; @@ -278,6 +373,8 @@ void ipath_uc_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr, wc.imm_data = 0; wc.wc_flags = 0; + spin_lock_irqsave(&qp->r_rq.lock, flags); + /* Compare the PSN verses the expected PSN. */ if (unlikely(ipath_cmp24(psn, qp->r_psn) != 0)) { /* @@ -438,13 +535,12 @@ void ipath_uc_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr, if (qp->r_len != 0) { u32 rkey = be32_to_cpu(reth->rkey); u64 vaddr = be64_to_cpu(reth->vaddr); - int ok; /* Check rkey */ - ok = ipath_rkey_ok(dev, &qp->r_sge, qp->r_len, - vaddr, rkey, - IB_ACCESS_REMOTE_WRITE); - if (unlikely(!ok)) { + if (unlikely(!ipath_rkey_ok( + dev, &qp->r_sge, qp->r_len, + vaddr, rkey, + IB_ACCESS_REMOTE_WRITE))) { dev->n_pkt_drops++; goto done; } @@ -462,7 +558,8 @@ void ipath_uc_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr, } if (opcode == OP(RDMA_WRITE_ONLY)) goto rdma_last; - else if (opcode == OP(RDMA_WRITE_ONLY_WITH_IMMEDIATE)) + else if (opcode == + OP(RDMA_WRITE_ONLY_WITH_IMMEDIATE)) goto rdma_last_imm; /* FALLTHROUGH */ case OP(RDMA_WRITE_MIDDLE): @@ -495,9 +592,9 @@ void ipath_uc_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr, dev->n_pkt_drops++; goto done; } - if (qp->r_reuse_sge) + if (qp->r_reuse_sge) { qp->r_reuse_sge = 0; - else if (!ipath_get_rwqe(qp, 1)) { + } else if (!ipath_get_rwqe(qp, 1)) { dev->n_pkt_drops++; goto done; } @@ -534,11 +631,15 @@ void ipath_uc_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr, default: /* Drop packet for unknown opcodes. */ + spin_unlock_irqrestore(&qp->r_rq.lock, flags); dev->n_pkt_drops++; - goto done; + goto bail; } qp->r_psn++; qp->r_state = opcode; done: + spin_unlock_irqrestore(&qp->r_rq.lock, flags); + +bail: return; } diff --git a/trunk/drivers/infiniband/hw/ipath/ipath_ud.c b/trunk/drivers/infiniband/hw/ipath/ipath_ud.c index 3466129af804..e606daf83210 100644 --- a/trunk/drivers/infiniband/hw/ipath/ipath_ud.c +++ b/trunk/drivers/infiniband/hw/ipath/ipath_ud.c @@ -1,5 +1,4 @@ /* - * Copyright (c) 2006 QLogic, Inc. All rights reserved. * Copyright (c) 2005, 2006 PathScale, Inc. All rights reserved. * * This software is available to you under a choice of one of two @@ -34,7 +33,7 @@ #include #include "ipath_verbs.h" -#include "ipath_common.h" +#include "ips_common.h" /** * ipath_ud_loopback - handle send on loopback QPs @@ -275,11 +274,6 @@ int ipath_post_ud_send(struct ipath_qp *qp, struct ib_send_wr *wr) len += wr->sg_list[i].length; ss.num_sge++; } - /* Check for invalid packet size. */ - if (len > ipath_layer_get_ibmtu(dev->dd)) { - ret = -EINVAL; - goto bail; - } extra_bytes = (4 - len) & 3; nwords = (len + extra_bytes) >> 2; @@ -289,8 +283,8 @@ int ipath_post_ud_send(struct ipath_qp *qp, struct ib_send_wr *wr) ret = -EINVAL; goto bail; } - if (ah_attr->dlid >= IPATH_MULTICAST_LID_BASE) { - if (ah_attr->dlid != IPATH_PERMISSIVE_LID) + if (ah_attr->dlid >= IPS_MULTICAST_LID_BASE) { + if (ah_attr->dlid != IPS_PERMISSIVE_LID) dev->n_multicast_xmit++; else dev->n_unicast_xmit++; @@ -310,7 +304,7 @@ int ipath_post_ud_send(struct ipath_qp *qp, struct ib_send_wr *wr) if (ah_attr->ah_flags & IB_AH_GRH) { /* Header size in 32-bit words. */ hwords = 17; - lrh0 = IPATH_LRH_GRH; + lrh0 = IPS_LRH_GRH; ohdr = &qp->s_hdr.u.l.oth; qp->s_hdr.u.l.grh.version_tclass_flow = cpu_to_be32((6 << 28) | @@ -336,7 +330,7 @@ int ipath_post_ud_send(struct ipath_qp *qp, struct ib_send_wr *wr) } else { /* Header size in 32-bit words. */ hwords = 7; - lrh0 = IPATH_LRH_BTH; + lrh0 = IPS_LRH_BTH; ohdr = &qp->s_hdr.u.oth; } if (wr->opcode == IB_WR_SEND_WITH_IMM) { @@ -367,18 +361,18 @@ int ipath_post_ud_send(struct ipath_qp *qp, struct ib_send_wr *wr) if (wr->send_flags & IB_SEND_SOLICITED) bth0 |= 1 << 23; bth0 |= extra_bytes << 20; - bth0 |= qp->ibqp.qp_type == IB_QPT_SMI ? IPATH_DEFAULT_P_KEY : + bth0 |= qp->ibqp.qp_type == IB_QPT_SMI ? IPS_DEFAULT_P_KEY : ipath_layer_get_pkey(dev->dd, qp->s_pkey_index); ohdr->bth[0] = cpu_to_be32(bth0); /* * Use the multicast QP if the destination LID is a multicast LID. */ - ohdr->bth[1] = ah_attr->dlid >= IPATH_MULTICAST_LID_BASE && - ah_attr->dlid != IPATH_PERMISSIVE_LID ? - __constant_cpu_to_be32(IPATH_MULTICAST_QPN) : + ohdr->bth[1] = ah_attr->dlid >= IPS_MULTICAST_LID_BASE && + ah_attr->dlid != IPS_PERMISSIVE_LID ? + __constant_cpu_to_be32(IPS_MULTICAST_QPN) : cpu_to_be32(wr->wr.ud.remote_qpn); /* XXX Could lose a PSN count but not worth locking */ - ohdr->bth[2] = cpu_to_be32(qp->s_next_psn++ & IPATH_PSN_MASK); + ohdr->bth[2] = cpu_to_be32(qp->s_next_psn++ & IPS_PSN_MASK); /* * Qkeys with the high order bit set mean use the * qkey from the QP context instead of the WR (see 10.2.5). @@ -469,7 +463,7 @@ void ipath_ud_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr, src_qp = be32_to_cpu(ohdr->u.ud.deth[1]); } } - src_qp &= IPATH_QPN_MASK; + src_qp &= IPS_QPN_MASK; /* * Check that the permissive LID is only used on QP0 @@ -560,16 +554,7 @@ void ipath_ud_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr, spin_lock_irqsave(&rq->lock, flags); if (rq->tail == rq->head) { spin_unlock_irqrestore(&rq->lock, flags); - /* - * Count VL15 packets dropped due to no receive buffer. - * Otherwise, count them as buffer overruns since usually, - * the HW will be able to receive packets even if there are - * no QPs with posted receive buffers. - */ - if (qp->ibqp.qp_num == 0) - dev->n_vl15_dropped++; - else - dev->rcv_errors++; + dev->n_pkt_drops++; goto bail; } /* Silently drop packets which are too big. */ @@ -627,7 +612,7 @@ void ipath_ud_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr, /* * Save the LMC lower bits if the destination LID is a unicast LID. */ - wc.dlid_path_bits = dlid >= IPATH_MULTICAST_LID_BASE ? 0 : + wc.dlid_path_bits = dlid >= IPS_MULTICAST_LID_BASE ? 0 : dlid & ((1 << (dev->mkeyprot_resv_lmc & 7)) - 1); /* Signal completion event if the solicited bit is set. */ ipath_cq_enter(to_icq(qp->ibqp.recv_cq), &wc, diff --git a/trunk/drivers/infiniband/hw/ipath/ipath_user_pages.c b/trunk/drivers/infiniband/hw/ipath/ipath_user_pages.c index e32fca9faf80..2bb08afc86d0 100644 --- a/trunk/drivers/infiniband/hw/ipath/ipath_user_pages.c +++ b/trunk/drivers/infiniband/hw/ipath/ipath_user_pages.c @@ -1,5 +1,4 @@ /* - * Copyright (c) 2006 QLogic, Inc. All rights reserved. * Copyright (c) 2003, 2004, 2005, 2006 PathScale, Inc. All rights reserved. * * This software is available to you under a choice of one of two @@ -58,6 +57,17 @@ static int __get_user_pages(unsigned long start_page, size_t num_pages, size_t got; int ret; +#if 0 + /* + * XXX - causes MPI programs to fail, haven't had time to check + * yet + */ + if (!capable(CAP_IPC_LOCK)) { + ret = -EPERM; + goto bail; + } +#endif + lock_limit = current->signal->rlim[RLIMIT_MEMLOCK].rlim_cur >> PAGE_SHIFT; diff --git a/trunk/drivers/infiniband/hw/ipath/ipath_verbs.c b/trunk/drivers/infiniband/hw/ipath/ipath_verbs.c index 56ac336dd1ec..28fdbdaa789d 100644 --- a/trunk/drivers/infiniband/hw/ipath/ipath_verbs.c +++ b/trunk/drivers/infiniband/hw/ipath/ipath_verbs.c @@ -1,5 +1,4 @@ /* - * Copyright (c) 2006 QLogic, Inc. All rights reserved. * Copyright (c) 2005, 2006 PathScale, Inc. All rights reserved. * * This software is available to you under a choice of one of two @@ -37,7 +36,7 @@ #include "ipath_kernel.h" #include "ipath_verbs.h" -#include "ipath_common.h" +#include "ips_common.h" /* Not static, because we don't want the compiler removing it */ const char ipath_verbs_version[] = "ipath_verbs " IPATH_IDSTR; @@ -56,62 +55,9 @@ unsigned int ib_ipath_debug; /* debug mask */ module_param_named(debug, ib_ipath_debug, uint, S_IWUSR | S_IRUGO); MODULE_PARM_DESC(debug, "Verbs debug mask"); -static unsigned int ib_ipath_max_pds = 0xFFFF; -module_param_named(max_pds, ib_ipath_max_pds, uint, S_IWUSR | S_IRUGO); -MODULE_PARM_DESC(max_pds, - "Maximum number of protection domains to support"); - -static unsigned int ib_ipath_max_ahs = 0xFFFF; -module_param_named(max_ahs, ib_ipath_max_ahs, uint, S_IWUSR | S_IRUGO); -MODULE_PARM_DESC(max_ahs, "Maximum number of address handles to support"); - -unsigned int ib_ipath_max_cqes = 0x2FFFF; -module_param_named(max_cqes, ib_ipath_max_cqes, uint, S_IWUSR | S_IRUGO); -MODULE_PARM_DESC(max_cqes, - "Maximum number of completion queue entries to support"); - -unsigned int ib_ipath_max_cqs = 0x1FFFF; -module_param_named(max_cqs, ib_ipath_max_cqs, uint, S_IWUSR | S_IRUGO); -MODULE_PARM_DESC(max_cqs, "Maximum number of completion queues to support"); - -unsigned int ib_ipath_max_qp_wrs = 0x3FFF; -module_param_named(max_qp_wrs, ib_ipath_max_qp_wrs, uint, - S_IWUSR | S_IRUGO); -MODULE_PARM_DESC(max_qp_wrs, "Maximum number of QP WRs to support"); - -unsigned int ib_ipath_max_sges = 0x60; -module_param_named(max_sges, ib_ipath_max_sges, uint, S_IWUSR | S_IRUGO); -MODULE_PARM_DESC(max_sges, "Maximum number of SGEs to support"); - -unsigned int ib_ipath_max_mcast_grps = 16384; -module_param_named(max_mcast_grps, ib_ipath_max_mcast_grps, uint, - S_IWUSR | S_IRUGO); -MODULE_PARM_DESC(max_mcast_grps, - "Maximum number of multicast groups to support"); - -unsigned int ib_ipath_max_mcast_qp_attached = 16; -module_param_named(max_mcast_qp_attached, ib_ipath_max_mcast_qp_attached, - uint, S_IWUSR | S_IRUGO); -MODULE_PARM_DESC(max_mcast_qp_attached, - "Maximum number of attached QPs to support"); - -unsigned int ib_ipath_max_srqs = 1024; -module_param_named(max_srqs, ib_ipath_max_srqs, uint, S_IWUSR | S_IRUGO); -MODULE_PARM_DESC(max_srqs, "Maximum number of SRQs to support"); - -unsigned int ib_ipath_max_srq_sges = 128; -module_param_named(max_srq_sges, ib_ipath_max_srq_sges, - uint, S_IWUSR | S_IRUGO); -MODULE_PARM_DESC(max_srq_sges, "Maximum number of SRQ SGEs to support"); - -unsigned int ib_ipath_max_srq_wrs = 0x1FFFF; -module_param_named(max_srq_wrs, ib_ipath_max_srq_wrs, - uint, S_IWUSR | S_IRUGO); -MODULE_PARM_DESC(max_srq_wrs, "Maximum number of SRQ WRs support"); - MODULE_LICENSE("GPL"); -MODULE_AUTHOR("QLogic "); -MODULE_DESCRIPTION("QLogic InfiniPath driver"); +MODULE_AUTHOR("PathScale "); +MODULE_DESCRIPTION("Pathscale InfiniPath driver"); const int ib_ipath_state_ops[IB_QPS_ERR + 1] = { [IB_QPS_RESET] = 0, @@ -247,7 +193,7 @@ static int ipath_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr, switch (qp->ibqp.qp_type) { case IB_QPT_UC: case IB_QPT_RC: - err = ipath_post_ruc_send(qp, wr); + err = ipath_post_rc_send(qp, wr); break; case IB_QPT_SMI: @@ -429,7 +375,7 @@ static void ipath_ib_rcv(void *arg, void *rhdr, void *data, u32 tlen) /* Check for a valid destination LID (see ch. 7.11.1). */ lid = be16_to_cpu(hdr->lrh[1]); - if (lid < IPATH_MULTICAST_LID_BASE) { + if (lid < IPS_MULTICAST_LID_BASE) { lid &= ~((1 << (dev->mkeyprot_resv_lmc & 7)) - 1); if (unlikely(lid != ipath_layer_get_lid(dev->dd))) { dev->rcv_errors++; @@ -439,9 +385,9 @@ static void ipath_ib_rcv(void *arg, void *rhdr, void *data, u32 tlen) /* Check for GRH */ lnh = be16_to_cpu(hdr->lrh[0]) & 3; - if (lnh == IPATH_LRH_BTH) + if (lnh == IPS_LRH_BTH) ohdr = &hdr->u.oth; - else if (lnh == IPATH_LRH_GRH) + else if (lnh == IPS_LRH_GRH) ohdr = &hdr->u.l.oth; else { dev->rcv_errors++; @@ -453,8 +399,8 @@ static void ipath_ib_rcv(void *arg, void *rhdr, void *data, u32 tlen) dev->opstats[opcode].n_packets++; /* Get the destination QP number. */ - qp_num = be32_to_cpu(ohdr->bth[1]) & IPATH_QPN_MASK; - if (qp_num == IPATH_MULTICAST_QPN) { + qp_num = be32_to_cpu(ohdr->bth[1]) & IPS_QPN_MASK; + if (qp_num == IPS_MULTICAST_QPN) { struct ipath_mcast *mcast; struct ipath_mcast_qp *p; @@ -465,7 +411,7 @@ static void ipath_ib_rcv(void *arg, void *rhdr, void *data, u32 tlen) } dev->n_multicast_rcv++; list_for_each_entry_rcu(p, &mcast->qp_list, list) - ipath_qp_rcv(dev, hdr, lnh == IPATH_LRH_GRH, data, + ipath_qp_rcv(dev, hdr, lnh == IPS_LRH_GRH, data, tlen, p->qp); /* * Notify ipath_multicast_detach() if it is waiting for us @@ -477,7 +423,7 @@ static void ipath_ib_rcv(void *arg, void *rhdr, void *data, u32 tlen) qp = ipath_lookup_qpn(&dev->qp_table, qp_num); if (qp) { dev->n_unicast_rcv++; - ipath_qp_rcv(dev, hdr, lnh == IPATH_LRH_GRH, data, + ipath_qp_rcv(dev, hdr, lnh == IPS_LRH_GRH, data, tlen, qp); /* * Notify ipath_destroy_qp() if it is waiting @@ -621,38 +567,40 @@ static int ipath_query_device(struct ib_device *ibdev, struct ib_device_attr *props) { struct ipath_ibdev *dev = to_idev(ibdev); + u32 vendor, boardrev, majrev, minrev; memset(props, 0, sizeof(*props)); props->device_cap_flags = IB_DEVICE_BAD_PKEY_CNTR | IB_DEVICE_BAD_QKEY_CNTR | IB_DEVICE_SHUTDOWN_PORT | IB_DEVICE_SYS_IMAGE_GUID; - props->vendor_id = ipath_layer_get_vendorid(dev->dd); - props->vendor_part_id = ipath_layer_get_deviceid(dev->dd); - props->hw_ver = ipath_layer_get_pcirev(dev->dd); + ipath_layer_query_device(dev->dd, &vendor, &boardrev, + &majrev, &minrev); + props->vendor_id = vendor; + props->vendor_part_id = boardrev; + props->hw_ver = boardrev << 16 | majrev << 8 | minrev; props->sys_image_guid = dev->sys_image_guid; props->max_mr_size = ~0ull; - props->max_qp = dev->qp_table.max; - props->max_qp_wr = ib_ipath_max_qp_wrs; - props->max_sge = ib_ipath_max_sges; - props->max_cq = ib_ipath_max_cqs; - props->max_ah = ib_ipath_max_ahs; - props->max_cqe = ib_ipath_max_cqes; - props->max_mr = dev->lk_table.max; - props->max_pd = ib_ipath_max_pds; + props->max_qp = 0xffff; + props->max_qp_wr = 0xffff; + props->max_sge = 255; + props->max_cq = 0xffff; + props->max_cqe = 0xffff; + props->max_mr = 0xffff; + props->max_pd = 0xffff; props->max_qp_rd_atom = 1; props->max_qp_init_rd_atom = 1; /* props->max_res_rd_atom */ - props->max_srq = ib_ipath_max_srqs; - props->max_srq_wr = ib_ipath_max_srq_wrs; - props->max_srq_sge = ib_ipath_max_srq_sges; + props->max_srq = 0xffff; + props->max_srq_wr = 0xffff; + props->max_srq_sge = 255; /* props->local_ca_ack_delay */ props->atomic_cap = IB_ATOMIC_HCA; props->max_pkeys = ipath_layer_get_npkeys(dev->dd); - props->max_mcast_grp = ib_ipath_max_mcast_grps; - props->max_mcast_qp_attach = ib_ipath_max_mcast_qp_attached; + props->max_mcast_grp = 0xffff; + props->max_mcast_qp_attach = 0xffff; props->max_total_mcast_qp_attach = props->max_mcast_qp_attach * props->max_mcast_grp; @@ -695,10 +643,10 @@ static int ipath_query_port(struct ib_device *ibdev, ipath_layer_get_lastibcstat(dev->dd) & 0xf]; props->port_cap_flags = dev->port_cap_flags; props->gid_tbl_len = 1; - props->max_msg_sz = 0x80000000; + props->max_msg_sz = 4096; props->pkey_tbl_len = ipath_layer_get_npkeys(dev->dd); props->bad_pkey_cntr = ipath_layer_get_cr_errpkey(dev->dd) - - dev->z_pkey_violations; + dev->n_pkey_violations; props->qkey_viol_cntr = dev->qkey_violations; props->active_width = IB_WIDTH_4X; /* See rate_show() */ @@ -795,30 +743,15 @@ static struct ib_pd *ipath_alloc_pd(struct ib_device *ibdev, struct ib_ucontext *context, struct ib_udata *udata) { - struct ipath_ibdev *dev = to_idev(ibdev); struct ipath_pd *pd; struct ib_pd *ret; - /* - * This is actually totally arbitrary. Some correctness tests - * assume there's a maximum number of PDs that can be allocated. - * We don't actually have this limit, but we fail the test if - * we allow allocations of more than we report for this value. - */ - - if (dev->n_pds_allocated == ib_ipath_max_pds) { - ret = ERR_PTR(-ENOMEM); - goto bail; - } - pd = kmalloc(sizeof *pd, GFP_KERNEL); if (!pd) { ret = ERR_PTR(-ENOMEM); goto bail; } - dev->n_pds_allocated++; - /* ib_alloc_pd() will initialize pd->ibpd. */ pd->user = udata != NULL; @@ -831,9 +764,6 @@ static struct ib_pd *ipath_alloc_pd(struct ib_device *ibdev, static int ipath_dealloc_pd(struct ib_pd *ibpd) { struct ipath_pd *pd = to_ipd(ibpd); - struct ipath_ibdev *dev = to_idev(ibpd->device); - - dev->n_pds_allocated--; kfree(pd); @@ -852,40 +782,21 @@ static struct ib_ah *ipath_create_ah(struct ib_pd *pd, { struct ipath_ah *ah; struct ib_ah *ret; - struct ipath_ibdev *dev = to_idev(pd->device); - - if (dev->n_ahs_allocated == ib_ipath_max_ahs) { - ret = ERR_PTR(-ENOMEM); - goto bail; - } /* A multicast address requires a GRH (see ch. 8.4.1). */ - if (ah_attr->dlid >= IPATH_MULTICAST_LID_BASE && - ah_attr->dlid != IPATH_PERMISSIVE_LID && + if (ah_attr->dlid >= IPS_MULTICAST_LID_BASE && + ah_attr->dlid != IPS_PERMISSIVE_LID && !(ah_attr->ah_flags & IB_AH_GRH)) { ret = ERR_PTR(-EINVAL); goto bail; } - if (ah_attr->dlid == 0) { - ret = ERR_PTR(-EINVAL); - goto bail; - } - - if (ah_attr->port_num < 1 || - ah_attr->port_num > pd->device->phys_port_cnt) { - ret = ERR_PTR(-EINVAL); - goto bail; - } - ah = kmalloc(sizeof *ah, GFP_ATOMIC); if (!ah) { ret = ERR_PTR(-ENOMEM); goto bail; } - dev->n_ahs_allocated++; - /* ib_create_ah() will initialize ah->ibah. */ ah->attr = *ah_attr; @@ -903,11 +814,8 @@ static struct ib_ah *ipath_create_ah(struct ib_pd *pd, */ static int ipath_destroy_ah(struct ib_ah *ibah) { - struct ipath_ibdev *dev = to_idev(ibah->device); struct ipath_ah *ah = to_iah(ibah); - dev->n_ahs_allocated--; - kfree(ah); return 0; @@ -981,7 +889,6 @@ static int ipath_verbs_register_sysfs(struct ib_device *dev); */ static void *ipath_register_ib_device(int unit, struct ipath_devdata *dd) { - struct ipath_layer_counters cntrs; struct ipath_ibdev *idev; struct ib_device *dev; int ret; @@ -1032,25 +939,6 @@ static void *ipath_register_ib_device(int unit, struct ipath_devdata *dd) idev->pma_counter_select[5] = IB_PMA_PORT_XMIT_WAIT; idev->link_width_enabled = 3; /* 1x or 4x */ - /* Snapshot current HW counters to "clear" them. */ - ipath_layer_get_counters(dd, &cntrs); - idev->z_symbol_error_counter = cntrs.symbol_error_counter; - idev->z_link_error_recovery_counter = - cntrs.link_error_recovery_counter; - idev->z_link_downed_counter = cntrs.link_downed_counter; - idev->z_port_rcv_errors = cntrs.port_rcv_errors; - idev->z_port_rcv_remphys_errors = - cntrs.port_rcv_remphys_errors; - idev->z_port_xmit_discards = cntrs.port_xmit_discards; - idev->z_port_xmit_data = cntrs.port_xmit_data; - idev->z_port_rcv_data = cntrs.port_rcv_data; - idev->z_port_xmit_packets = cntrs.port_xmit_packets; - idev->z_port_rcv_packets = cntrs.port_rcv_packets; - idev->z_local_link_integrity_errors = - cntrs.local_link_integrity_errors; - idev->z_excessive_buffer_overrun_errors = - cntrs.excessive_buffer_overrun_errors; - /* * The system image GUID is supposed to be the same for all * IB HCAs in a single system but since there can be other @@ -1221,8 +1109,11 @@ static ssize_t show_rev(struct class_device *cdev, char *buf) { struct ipath_ibdev *dev = container_of(cdev, struct ipath_ibdev, ibdev.class_dev); + int vendor, boardrev, majrev, minrev; - return sprintf(buf, "%x\n", ipath_layer_get_pcirev(dev->dd)); + ipath_layer_query_device(dev->dd, &vendor, &boardrev, + &majrev, &minrev); + return sprintf(buf, "%d.%d\n", majrev, minrev); } static ssize_t show_hca(struct class_device *cdev, char *buf) diff --git a/trunk/drivers/infiniband/hw/ipath/ipath_verbs.h b/trunk/drivers/infiniband/hw/ipath/ipath_verbs.h index 2df684727dc1..4f8d59300e9b 100644 --- a/trunk/drivers/infiniband/hw/ipath/ipath_verbs.h +++ b/trunk/drivers/infiniband/hw/ipath/ipath_verbs.h @@ -1,5 +1,4 @@ /* - * Copyright (c) 2006 QLogic, Inc. All rights reserved. * Copyright (c) 2005, 2006 PathScale, Inc. All rights reserved. * * This software is available to you under a choice of one of two @@ -149,7 +148,6 @@ struct ipath_mcast { struct list_head qp_list; wait_queue_head_t wait; atomic_t refcount; - int n_attached; }; /* Memory region */ @@ -307,34 +305,32 @@ struct ipath_qp { u32 s_next_psn; /* PSN for next request */ u32 s_last_psn; /* last response PSN processed */ u32 s_psn; /* current packet sequence number */ - u32 s_ack_psn; /* PSN for RDMA_READ */ u32 s_rnr_timeout; /* number of milliseconds for RNR timeout */ - u32 r_ack_psn; /* PSN for next ACK or atomic ACK */ + u32 s_ack_psn; /* PSN for next ACK or RDMA_READ */ + u64 s_ack_atomic; /* data for atomic ACK */ u64 r_wr_id; /* ID for current receive WQE */ u64 r_atomic_data; /* data for last atomic op */ u32 r_atomic_psn; /* PSN of last atomic op */ u32 r_len; /* total length of r_sge */ u32 r_rcv_len; /* receive data len processed */ u32 r_psn; /* expected rcv packet sequence number */ - u32 r_msn; /* message sequence number */ u8 state; /* QP state */ u8 s_state; /* opcode of last packet sent */ u8 s_ack_state; /* opcode of packet to ACK */ u8 s_nak_state; /* non-zero if NAK is pending */ u8 r_state; /* opcode of last packet received */ - u8 r_ack_state; /* opcode of packet to ACK */ - u8 r_nak_state; /* non-zero if NAK is pending */ - u8 r_min_rnr_timer; /* retry timeout value for RNR NAKs */ u8 r_reuse_sge; /* for UC receive errors */ u8 r_sge_inx; /* current index into sg_list */ - u8 qp_access_flags; u8 s_max_sge; /* size of s_wq->sg_list */ + u8 qp_access_flags; u8 s_retry_cnt; /* number of times to retry */ u8 s_rnr_retry_cnt; + u8 s_min_rnr_timer; u8 s_retry; /* requester retry counter */ u8 s_rnr_retry; /* requester RNR retry counter */ u8 s_pkey_index; /* PKEY index to use */ enum ib_mtu path_mtu; + atomic_t msn; /* message sequence number */ u32 remote_qpn; u32 qkey; /* QKEY for this QP (for UD or RD) */ u32 s_size; /* send work queue size */ @@ -435,11 +431,6 @@ struct ipath_ibdev { __be64 sys_image_guid; /* in network order */ __be64 gid_prefix; /* in network order */ __be64 mkey; - u32 n_pds_allocated; /* number of PDs allocated for device */ - u32 n_ahs_allocated; /* number of AHs allocated for device */ - u32 n_cqs_allocated; /* number of CQs allocated for device */ - u32 n_srqs_allocated; /* number of SRQs allocated for device */ - u32 n_mcast_grps_allocated; /* number of mcast groups allocated */ u64 ipath_sword; /* total dwords sent (sample result) */ u64 ipath_rword; /* total dwords received (sample result) */ u64 ipath_spkts; /* total packets sent (sample result) */ @@ -451,19 +442,17 @@ struct ipath_ibdev { u64 n_unicast_rcv; /* total unicast packets received */ u64 n_multicast_xmit; /* total multicast packets sent */ u64 n_multicast_rcv; /* total multicast packets received */ - u64 z_symbol_error_counter; /* starting count for PMA */ - u64 z_link_error_recovery_counter; /* starting count for PMA */ - u64 z_link_downed_counter; /* starting count for PMA */ - u64 z_port_rcv_errors; /* starting count for PMA */ - u64 z_port_rcv_remphys_errors; /* starting count for PMA */ - u64 z_port_xmit_discards; /* starting count for PMA */ - u64 z_port_xmit_data; /* starting count for PMA */ - u64 z_port_rcv_data; /* starting count for PMA */ - u64 z_port_xmit_packets; /* starting count for PMA */ - u64 z_port_rcv_packets; /* starting count for PMA */ - u32 z_pkey_violations; /* starting count for PMA */ - u32 z_local_link_integrity_errors; /* starting count for PMA */ - u32 z_excessive_buffer_overrun_errors; /* starting count for PMA */ + u64 n_symbol_error_counter; /* starting count for PMA */ + u64 n_link_error_recovery_counter; /* starting count for PMA */ + u64 n_link_downed_counter; /* starting count for PMA */ + u64 n_port_rcv_errors; /* starting count for PMA */ + u64 n_port_rcv_remphys_errors; /* starting count for PMA */ + u64 n_port_xmit_discards; /* starting count for PMA */ + u64 n_port_xmit_data; /* starting count for PMA */ + u64 n_port_rcv_data; /* starting count for PMA */ + u64 n_port_xmit_packets; /* starting count for PMA */ + u64 n_port_rcv_packets; /* starting count for PMA */ + u32 n_pkey_violations; /* starting count for PMA */ u32 n_rc_resends; u32 n_rc_acks; u32 n_rc_qacks; @@ -473,7 +462,6 @@ struct ipath_ibdev { u32 n_other_naks; u32 n_timeouts; u32 n_pkt_drops; - u32 n_vl15_dropped; u32 n_wqe_errs; u32 n_rdma_dup_busy; u32 n_piowait; @@ -592,6 +580,10 @@ void ipath_sqerror_qp(struct ipath_qp *qp, struct ib_wc *wc); void ipath_get_credit(struct ipath_qp *qp, u32 aeth); +void ipath_do_rc_send(unsigned long data); + +void ipath_do_uc_send(unsigned long data); + void ipath_cq_enter(struct ipath_cq *cq, struct ib_wc *entry, int sig); int ipath_rkey_ok(struct ipath_ibdev *dev, struct ipath_sge_state *ss, @@ -604,7 +596,7 @@ void ipath_copy_sge(struct ipath_sge_state *ss, void *data, u32 length); void ipath_skip_sge(struct ipath_sge_state *ss, u32 length); -int ipath_post_ruc_send(struct ipath_qp *qp, struct ib_send_wr *wr); +int ipath_post_rc_send(struct ipath_qp *qp, struct ib_send_wr *wr); void ipath_uc_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr, int has_grh, void *data, u32 tlen, struct ipath_qp *qp); @@ -686,19 +678,7 @@ void ipath_insert_rnr_queue(struct ipath_qp *qp); int ipath_get_rwqe(struct ipath_qp *qp, int wr_id_only); -u32 ipath_make_grh(struct ipath_ibdev *dev, struct ib_grh *hdr, - struct ib_global_route *grh, u32 hwords, u32 nwords); - -void ipath_do_ruc_send(unsigned long data); - -u32 ipath_make_rc_ack(struct ipath_qp *qp, struct ipath_other_headers *ohdr, - u32 pmtu); - -int ipath_make_rc_req(struct ipath_qp *qp, struct ipath_other_headers *ohdr, - u32 pmtu, u32 *bth0p, u32 *bth2p); - -int ipath_make_uc_req(struct ipath_qp *qp, struct ipath_other_headers *ohdr, - u32 pmtu, u32 *bth0p, u32 *bth2p); +void ipath_ruc_loopback(struct ipath_qp *sqp, struct ib_wc *wc); extern const enum ib_wc_opcode ib_ipath_wc_opcode[]; @@ -708,24 +688,6 @@ extern const int ib_ipath_state_ops[]; extern unsigned int ib_ipath_lkey_table_size; -extern unsigned int ib_ipath_max_cqes; - -extern unsigned int ib_ipath_max_cqs; - -extern unsigned int ib_ipath_max_qp_wrs; - -extern unsigned int ib_ipath_max_sges; - -extern unsigned int ib_ipath_max_mcast_grps; - -extern unsigned int ib_ipath_max_mcast_qp_attached; - -extern unsigned int ib_ipath_max_srqs; - -extern unsigned int ib_ipath_max_srq_sges; - -extern unsigned int ib_ipath_max_srq_wrs; - extern const u32 ib_ipath_rnr_table[]; #endif /* IPATH_VERBS_H */ diff --git a/trunk/drivers/infiniband/hw/ipath/ipath_verbs_mcast.c b/trunk/drivers/infiniband/hw/ipath/ipath_verbs_mcast.c index ee0e1d96d723..10b31d2c4f20 100644 --- a/trunk/drivers/infiniband/hw/ipath/ipath_verbs_mcast.c +++ b/trunk/drivers/infiniband/hw/ipath/ipath_verbs_mcast.c @@ -1,5 +1,4 @@ /* - * Copyright (c) 2006 QLogic, Inc. All rights reserved. * Copyright (c) 2005, 2006 PathScale, Inc. All rights reserved. * * This software is available to you under a choice of one of two @@ -93,7 +92,6 @@ static struct ipath_mcast *ipath_mcast_alloc(union ib_gid *mgid) INIT_LIST_HEAD(&mcast->qp_list); init_waitqueue_head(&mcast->wait); atomic_set(&mcast->refcount, 0); - mcast->n_attached = 0; bail: return mcast; @@ -159,8 +157,7 @@ struct ipath_mcast *ipath_mcast_find(union ib_gid *mgid) * the table but the QP was added. Return ESRCH if the QP was already * attached and neither structure was added. */ -static int ipath_mcast_add(struct ipath_ibdev *dev, - struct ipath_mcast *mcast, +static int ipath_mcast_add(struct ipath_mcast *mcast, struct ipath_mcast_qp *mqp) { struct rb_node **n = &mcast_tree.rb_node; @@ -191,47 +188,34 @@ static int ipath_mcast_add(struct ipath_ibdev *dev, /* Search the QP list to see if this is already there. */ list_for_each_entry_rcu(p, &tmcast->qp_list, list) { if (p->qp == mqp->qp) { + spin_unlock_irqrestore(&mcast_lock, flags); ret = ESRCH; goto bail; } } - if (tmcast->n_attached == ib_ipath_max_mcast_qp_attached) { - ret = ENOMEM; - goto bail; - } - - tmcast->n_attached++; - list_add_tail_rcu(&mqp->list, &tmcast->qp_list); + spin_unlock_irqrestore(&mcast_lock, flags); ret = EEXIST; goto bail; } - if (dev->n_mcast_grps_allocated == ib_ipath_max_mcast_grps) { - ret = ENOMEM; - goto bail; - } - - dev->n_mcast_grps_allocated++; - list_add_tail_rcu(&mqp->list, &mcast->qp_list); atomic_inc(&mcast->refcount); rb_link_node(&mcast->rb_node, pn, n); rb_insert_color(&mcast->rb_node, &mcast_tree); + spin_unlock_irqrestore(&mcast_lock, flags); + ret = 0; bail: - spin_unlock_irqrestore(&mcast_lock, flags); - return ret; } int ipath_multicast_attach(struct ib_qp *ibqp, union ib_gid *gid, u16 lid) { struct ipath_qp *qp = to_iqp(ibqp); - struct ipath_ibdev *dev = to_idev(ibqp->device); struct ipath_mcast *mcast; struct ipath_mcast_qp *mqp; int ret; @@ -251,7 +235,7 @@ int ipath_multicast_attach(struct ib_qp *ibqp, union ib_gid *gid, u16 lid) ret = -ENOMEM; goto bail; } - switch (ipath_mcast_add(dev, mcast, mqp)) { + switch (ipath_mcast_add(mcast, mqp)) { case ESRCH: /* Neither was used: can't attach the same QP twice. */ ipath_mcast_qp_free(mqp); @@ -261,12 +245,6 @@ int ipath_multicast_attach(struct ib_qp *ibqp, union ib_gid *gid, u16 lid) case EEXIST: /* The mcast wasn't used */ ipath_mcast_free(mcast); break; - case ENOMEM: - /* Exceeded the maximum number of mcast groups. */ - ipath_mcast_qp_free(mqp); - ipath_mcast_free(mcast); - ret = -ENOMEM; - goto bail; default: break; } @@ -280,7 +258,6 @@ int ipath_multicast_attach(struct ib_qp *ibqp, union ib_gid *gid, u16 lid) int ipath_multicast_detach(struct ib_qp *ibqp, union ib_gid *gid, u16 lid) { struct ipath_qp *qp = to_iqp(ibqp); - struct ipath_ibdev *dev = to_idev(ibqp->device); struct ipath_mcast *mcast = NULL; struct ipath_mcast_qp *p, *tmp; struct rb_node *n; @@ -295,7 +272,7 @@ int ipath_multicast_detach(struct ib_qp *ibqp, union ib_gid *gid, u16 lid) while (1) { if (n == NULL) { spin_unlock_irqrestore(&mcast_lock, flags); - ret = -EINVAL; + ret = 0; goto bail; } @@ -319,7 +296,6 @@ int ipath_multicast_detach(struct ib_qp *ibqp, union ib_gid *gid, u16 lid) * link until we are sure there are no list walkers. */ list_del_rcu(&p->list); - mcast->n_attached--; /* If this was the last attached QP, remove the GID too. */ if (list_empty(&mcast->qp_list)) { @@ -343,7 +319,6 @@ int ipath_multicast_detach(struct ib_qp *ibqp, union ib_gid *gid, u16 lid) atomic_dec(&mcast->refcount); wait_event(mcast->wait, !atomic_read(&mcast->refcount)); ipath_mcast_free(mcast); - dev->n_mcast_grps_allocated--; } ret = 0; diff --git a/trunk/drivers/infiniband/hw/ipath/ipath_wc_x86_64.c b/trunk/drivers/infiniband/hw/ipath/ipath_wc_x86_64.c index f8f9e2e8cbdd..adc5322f15c1 100644 --- a/trunk/drivers/infiniband/hw/ipath/ipath_wc_x86_64.c +++ b/trunk/drivers/infiniband/hw/ipath/ipath_wc_x86_64.c @@ -1,5 +1,4 @@ /* - * Copyright (c) 2006 QLogic, Inc. All rights reserved. * Copyright (c) 2003, 2004, 2005, 2006 PathScale, Inc. All rights reserved. * * This software is available to you under a choice of one of two diff --git a/trunk/drivers/infiniband/hw/ipath/ips_common.h b/trunk/drivers/infiniband/hw/ipath/ips_common.h new file mode 100644 index 000000000000..ab7cbbbfd03a --- /dev/null +++ b/trunk/drivers/infiniband/hw/ipath/ips_common.h @@ -0,0 +1,263 @@ +#ifndef IPS_COMMON_H +#define IPS_COMMON_H +/* + * Copyright (c) 2003, 2004, 2005, 2006 PathScale, Inc. All rights reserved. + * + * This software is available to you under a choice of one of two + * licenses. You may choose to be licensed under the terms of the GNU + * General Public License (GPL) Version 2, available from the file + * COPYING in the main directory of this source tree, or the + * OpenIB.org BSD license below: + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * - Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * + * - Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include "ipath_common.h" + +struct ipath_header { + /* + * Version - 4 bits, Port - 4 bits, TID - 10 bits and Offset - + * 14 bits before ECO change ~28 Dec 03. After that, Vers 4, + * Port 3, TID 11, offset 14. + */ + __le32 ver_port_tid_offset; + __le16 chksum; + __le16 pkt_flags; +}; + +struct ips_message_header { + __be16 lrh[4]; + __be32 bth[3]; + /* fields below this point are in host byte order */ + struct ipath_header iph; + __u8 sub_opcode; + __u8 flags; + __u16 src_rank; + /* 24 bits. The upper 8 bit is available for other use */ + union { + struct { + unsigned ack_seq_num:24; + unsigned port:4; + unsigned unused:4; + }; + __u32 ack_seq_num_org; + }; + __u8 expected_tid_session_id; + __u8 tinylen; /* to aid MPI */ + union { + __u16 tag; /* to aid MPI */ + __u16 mqhdr; /* for PSM MQ */ + }; + union { + __u32 mpi[4]; /* to aid MPI */ + __u32 data[4]; + __u64 mq[2]; /* for PSM MQ */ + struct { + __u16 mtu; + __u8 major_ver; + __u8 minor_ver; + __u32 not_used; //free + __u32 run_id; + __u32 client_ver; + }; + }; +}; + +struct ether_header { + __be16 lrh[4]; + __be32 bth[3]; + struct ipath_header iph; + __u8 sub_opcode; + __u8 cmd; + __be16 lid; + __u16 mac[3]; + __u8 frag_num; + __u8 seq_num; + __le32 len; + /* MUST be of word size due to PIO write requirements */ + __le32 csum; + __le16 csum_offset; + __le16 flags; + __u16 first_2_bytes; + __u8 unused[2]; /* currently unused */ +}; + +/* + * The PIO buffer used for sending infinipath messages must only be written + * in 32-bit words, all the data must be written, and no writes can occur + * after the last word is written (which transfers "ownership" of the buffer + * to the chip and triggers the message to be sent). + * Since the Linux sk_buff structure can be recursive, non-aligned, and + * any number of bytes in each segment, we use the following structure + * to keep information about the overall state of the copy operation. + * This is used to save the information needed to store the checksum + * in the right place before sending the last word to the hardware and + * to buffer the last 0-3 bytes of non-word sized segments. + */ +struct copy_data_s { + struct ether_header *hdr; + /* addr of PIO buf to write csum to */ + __u32 __iomem *csum_pio; + __u32 __iomem *to; /* addr of PIO buf to write data to */ + __u32 device; /* which device to allocate PIO bufs from */ + __s32 error; /* set if there is an error. */ + __s32 extra; /* amount of data saved in u.buf below */ + __u32 len; /* total length to send in bytes */ + __u32 flen; /* frament length in words */ + __u32 csum; /* partial IP checksum */ + __u32 pos; /* position for partial checksum */ + __u32 offset; /* offset to where data currently starts */ + __s32 checksum_calc; /* set to 1 when csum has been calculated */ + struct sk_buff *skb; + union { + __u32 w; + __u8 buf[4]; + } u; +}; + +/* IB - LRH header consts */ +#define IPS_LRH_GRH 0x0003 /* 1. word of IB LRH - next header: GRH */ +#define IPS_LRH_BTH 0x0002 /* 1. word of IB LRH - next header: BTH */ + +#define IPS_OFFSET 0 + +/* + * defines the cut-off point between the header queue and eager/expected + * TID queue + */ +#define NUM_OF_EXTRA_WORDS_IN_HEADER_QUEUE \ + ((sizeof(struct ips_message_header) - \ + offsetof(struct ips_message_header, iph)) >> 2) + +/* OpCodes */ +#define OPCODE_IPS 0xC0 +#define OPCODE_ITH4X 0xC1 + +/* OpCode 30 is use by stand-alone test programs */ +#define OPCODE_RAW_DATA 0xDE +/* last OpCode (31) is reserved for test */ +#define OPCODE_TEST 0xDF + +/* sub OpCodes - ips */ +#define OPCODE_SEQ_DATA 0x01 +#define OPCODE_SEQ_CTRL 0x02 + +#define OPCODE_SEQ_MQ_DATA 0x03 +#define OPCODE_SEQ_MQ_CTRL 0x04 + +#define OPCODE_ACK 0x10 +#define OPCODE_NAK 0x11 + +#define OPCODE_ERR_CHK 0x20 +#define OPCODE_ERR_CHK_PLS 0x21 + +#define OPCODE_STARTUP 0x30 +#define OPCODE_STARTUP_ACK 0x31 +#define OPCODE_STARTUP_NAK 0x32 + +#define OPCODE_STARTUP_EXT 0x34 +#define OPCODE_STARTUP_ACK_EXT 0x35 +#define OPCODE_STARTUP_NAK_EXT 0x36 + +#define OPCODE_TIDS_RELEASE 0x40 +#define OPCODE_TIDS_RELEASE_CONFIRM 0x41 + +#define OPCODE_CLOSE 0x50 +#define OPCODE_CLOSE_ACK 0x51 +/* + * like OPCODE_CLOSE, but no complaint if other side has already closed. + * Used when doing abort(), MPI_Abort(), etc. + */ +#define OPCODE_ABORT 0x52 + +/* sub OpCodes - ith4x */ +#define OPCODE_ENCAP 0x81 +#define OPCODE_LID_ARP 0x82 + +/* Receive Header Queue: receive type (from infinipath) */ +#define RCVHQ_RCV_TYPE_EXPECTED 0 +#define RCVHQ_RCV_TYPE_EAGER 1 +#define RCVHQ_RCV_TYPE_NON_KD 2 +#define RCVHQ_RCV_TYPE_ERROR 3 + +/* misc. */ +#define SIZE_OF_CRC 1 + +#define EAGER_TID_ID INFINIPATH_I_TID_MASK + +#define IPS_DEFAULT_P_KEY 0xFFFF + +#define IPS_PERMISSIVE_LID 0xFFFF +#define IPS_MULTICAST_LID_BASE 0xC000 + +#define IPS_AETH_CREDIT_SHIFT 24 +#define IPS_AETH_CREDIT_MASK 0x1F +#define IPS_AETH_CREDIT_INVAL 0x1F + +#define IPS_PSN_MASK 0xFFFFFF +#define IPS_MSN_MASK 0xFFFFFF +#define IPS_QPN_MASK 0xFFFFFF +#define IPS_MULTICAST_QPN 0xFFFFFF + +/* functions for extracting fields from rcvhdrq entries */ +static inline __u32 ips_get_hdr_err_flags(const __le32 * rbuf) +{ + return __le32_to_cpu(rbuf[1]); +} + +static inline __u32 ips_get_index(const __le32 * rbuf) +{ + return (__le32_to_cpu(rbuf[0]) >> INFINIPATH_RHF_EGRINDEX_SHIFT) + & INFINIPATH_RHF_EGRINDEX_MASK; +} + +static inline __u32 ips_get_rcv_type(const __le32 * rbuf) +{ + return (__le32_to_cpu(rbuf[0]) >> INFINIPATH_RHF_RCVTYPE_SHIFT) + & INFINIPATH_RHF_RCVTYPE_MASK; +} + +static inline __u32 ips_get_length_in_bytes(const __le32 * rbuf) +{ + return ((__le32_to_cpu(rbuf[0]) >> INFINIPATH_RHF_LENGTH_SHIFT) + & INFINIPATH_RHF_LENGTH_MASK) << 2; +} + +static inline void *ips_get_first_protocol_header(const __u32 * rbuf) +{ + return (void *)&rbuf[2]; +} + +static inline struct ips_message_header *ips_get_ips_header(const __u32 * + rbuf) +{ + return (struct ips_message_header *)&rbuf[2]; +} + +static inline __u32 ips_get_ipath_ver(__le32 hdrword) +{ + return (__le32_to_cpu(hdrword) >> INFINIPATH_I_VERS_SHIFT) + & INFINIPATH_I_VERS_MASK; +} + +#endif /* IPS_COMMON_H */ diff --git a/trunk/drivers/infiniband/hw/ipath/verbs_debug.h b/trunk/drivers/infiniband/hw/ipath/verbs_debug.h index 6186676f2a16..40d693cf3f94 100644 --- a/trunk/drivers/infiniband/hw/ipath/verbs_debug.h +++ b/trunk/drivers/infiniband/hw/ipath/verbs_debug.h @@ -1,5 +1,4 @@ /* - * Copyright (c) 2006 QLogic, Inc. All rights reserved. * Copyright (c) 2003, 2004, 2005, 2006 PathScale, Inc. All rights reserved. * * This software is available to you under a choice of one of two diff --git a/trunk/drivers/infiniband/hw/mthca/mthca_main.c b/trunk/drivers/infiniband/hw/mthca/mthca_main.c index 557cde3a4563..465fd220569c 100644 --- a/trunk/drivers/infiniband/hw/mthca/mthca_main.c +++ b/trunk/drivers/infiniband/hw/mthca/mthca_main.c @@ -34,6 +34,7 @@ * $Id: mthca_main.c 1396 2004-12-28 04:10:27Z roland $ */ +#include #include #include #include diff --git a/trunk/drivers/infiniband/hw/mthca/mthca_reset.c b/trunk/drivers/infiniband/hw/mthca/mthca_reset.c index 91934f2d9dba..f4fddd5327f5 100644 --- a/trunk/drivers/infiniband/hw/mthca/mthca_reset.c +++ b/trunk/drivers/infiniband/hw/mthca/mthca_reset.c @@ -32,6 +32,7 @@ * $Id: mthca_reset.c 1349 2004-12-16 21:09:43Z roland $ */ +#include #include #include #include diff --git a/trunk/drivers/infiniband/ulp/ipoib/ipoib.h b/trunk/drivers/infiniband/ulp/ipoib/ipoib.h index 3f89f5e19036..491d2afaf5b4 100644 --- a/trunk/drivers/infiniband/ulp/ipoib/ipoib.h +++ b/trunk/drivers/infiniband/ulp/ipoib/ipoib.h @@ -42,6 +42,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/infiniband/ulp/iser/iscsi_iser.c b/trunk/drivers/infiniband/ulp/iser/iscsi_iser.c index b2c033edb03c..4c3f2de2a06e 100644 --- a/trunk/drivers/infiniband/ulp/iser/iscsi_iser.c +++ b/trunk/drivers/infiniband/ulp/iser/iscsi_iser.c @@ -54,6 +54,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/input/gameport/emu10k1-gp.c b/trunk/drivers/input/gameport/emu10k1-gp.c index 9793ac36d17f..462f8d300aae 100644 --- a/trunk/drivers/input/gameport/emu10k1-gp.c +++ b/trunk/drivers/input/gameport/emu10k1-gp.c @@ -32,6 +32,7 @@ #include #include +#include #include #include #include diff --git a/trunk/drivers/input/gameport/ns558.c b/trunk/drivers/input/gameport/ns558.c index f68dbe6f7f04..3e2d28f263e9 100644 --- a/trunk/drivers/input/gameport/ns558.c +++ b/trunk/drivers/input/gameport/ns558.c @@ -33,6 +33,7 @@ #include #include +#include #include #include #include diff --git a/trunk/drivers/input/joystick/analog.c b/trunk/drivers/input/joystick/analog.c index e9a02db36ecc..01dc0b195d59 100644 --- a/trunk/drivers/input/joystick/analog.c +++ b/trunk/drivers/input/joystick/analog.c @@ -28,6 +28,7 @@ * Vojtech Pavlik, Simunkova 1594, Prague 8, 182 00 Czech Republic */ +#include #include #include #include diff --git a/trunk/drivers/input/joystick/iforce/iforce.h b/trunk/drivers/input/joystick/iforce/iforce.h index e9924d6f01b3..668f24535ba0 100644 --- a/trunk/drivers/input/joystick/iforce/iforce.h +++ b/trunk/drivers/input/joystick/iforce/iforce.h @@ -35,6 +35,7 @@ #include #include #include +#include #include #include diff --git a/trunk/drivers/input/keyboard/hilkbd.c b/trunk/drivers/input/keyboard/hilkbd.c index d22c7c624296..33edd030aa75 100644 --- a/trunk/drivers/input/keyboard/hilkbd.c +++ b/trunk/drivers/input/keyboard/hilkbd.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/input/keyboard/locomokbd.c b/trunk/drivers/input/keyboard/locomokbd.c index 83906f80ba21..2c510881874a 100644 --- a/trunk/drivers/input/keyboard/locomokbd.c +++ b/trunk/drivers/input/keyboard/locomokbd.c @@ -25,6 +25,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/input/misc/sparcspkr.c b/trunk/drivers/input/misc/sparcspkr.c index 106c94f33b93..42c11fbf3c79 100644 --- a/trunk/drivers/input/misc/sparcspkr.c +++ b/trunk/drivers/input/misc/sparcspkr.c @@ -4,6 +4,7 @@ * Copyright (c) 2002 Vojtech Pavlik * Copyright (c) 2002, 2006 David S. Miller (davem@davemloft.net) */ +#include #include #include #include diff --git a/trunk/drivers/input/mouse/inport.c b/trunk/drivers/input/mouse/inport.c index 50f1fed10be4..afc66f56df43 100644 --- a/trunk/drivers/input/mouse/inport.c +++ b/trunk/drivers/input/mouse/inport.c @@ -36,6 +36,7 @@ #include #include +#include #include #include #include diff --git a/trunk/drivers/input/mouse/sermouse.c b/trunk/drivers/input/mouse/sermouse.c index 0023501a5b63..a89742431717 100644 --- a/trunk/drivers/input/mouse/sermouse.c +++ b/trunk/drivers/input/mouse/sermouse.c @@ -33,6 +33,7 @@ #include #include #include +#include #include #include diff --git a/trunk/drivers/input/mouse/vsxxxaa.c b/trunk/drivers/input/mouse/vsxxxaa.c index 47edcfd022ba..7b85bc21ae4a 100644 --- a/trunk/drivers/input/mouse/vsxxxaa.c +++ b/trunk/drivers/input/mouse/vsxxxaa.c @@ -81,6 +81,7 @@ #include #include #include +#include #include #include diff --git a/trunk/drivers/input/mousedev.c b/trunk/drivers/input/mousedev.c index 1f851acab30d..eb721b11ff37 100644 --- a/trunk/drivers/input/mousedev.c +++ b/trunk/drivers/input/mousedev.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/input/power.c b/trunk/drivers/input/power.c index 51a519e24b6d..526e6070600c 100644 --- a/trunk/drivers/input/power.c +++ b/trunk/drivers/input/power.c @@ -28,6 +28,7 @@ */ #include +#include #include #include #include diff --git a/trunk/drivers/input/serio/ct82c710.c b/trunk/drivers/input/serio/ct82c710.c index bc6e87add093..1ac739ef2ffa 100644 --- a/trunk/drivers/input/serio/ct82c710.c +++ b/trunk/drivers/input/serio/ct82c710.c @@ -31,6 +31,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/input/serio/gscps2.c b/trunk/drivers/input/serio/gscps2.c index 22d02d53eb16..c0b1e4becad3 100644 --- a/trunk/drivers/input/serio/gscps2.c +++ b/trunk/drivers/input/serio/gscps2.c @@ -22,6 +22,7 @@ * was usable/enabled ?) */ +#include #include #include #include diff --git a/trunk/drivers/input/serio/i8042-sparcio.h b/trunk/drivers/input/serio/i8042-sparcio.h index 7d9fafea9615..6d66351805a2 100644 --- a/trunk/drivers/input/serio/i8042-sparcio.h +++ b/trunk/drivers/input/serio/i8042-sparcio.h @@ -1,10 +1,13 @@ #ifndef _I8042_SPARCIO_H #define _I8042_SPARCIO_H +#include #include + +#ifdef CONFIG_PCI #include -#include -#include +#include +#endif static int i8042_kbd_irq = -1; static int i8042_aux_irq = -1; @@ -45,83 +48,54 @@ static inline void i8042_write_command(int val) #define OBP_PS2MS_NAME1 "kdmouse" #define OBP_PS2MS_NAME2 "mouse" -static int __devinit sparc_i8042_probe(struct of_device *op, const struct of_device_id *match) -{ - struct device_node *dp = op->node; - - dp = dp->child; - while (dp) { - if (!strcmp(dp->name, OBP_PS2KBD_NAME1) || - !strcmp(dp->name, OBP_PS2KBD_NAME2)) { - struct of_device *kbd = of_find_device_by_node(dp); - unsigned int irq = kbd->irqs[0]; - if (irq == 0xffffffff) - irq = op->irqs[0]; - i8042_kbd_irq = irq; - kbd_iobase = of_ioremap(&kbd->resource[0], - 0, 8, "kbd"); - } else if (!strcmp(dp->name, OBP_PS2MS_NAME1) || - !strcmp(dp->name, OBP_PS2MS_NAME2)) { - struct of_device *ms = of_find_device_by_node(dp); - unsigned int irq = ms->irqs[0]; - if (irq == 0xffffffff) - irq = op->irqs[0]; - i8042_aux_irq = irq; - } - - dp = dp->sibling; - } - - return 0; -} - -static int __devexit sparc_i8042_remove(struct of_device *op) -{ - of_iounmap(kbd_iobase, 8); - - return 0; -} - -static struct of_device_id sparc_i8042_match[] = { - { - .name = "8042", - }, - {}, -}; -MODULE_DEVICE_TABLE(of, i8042_match); - -static struct of_platform_driver sparc_i8042_driver = { - .name = "i8042", - .match_table = sparc_i8042_match, - .probe = sparc_i8042_probe, - .remove = __devexit_p(sparc_i8042_remove), -}; - static int __init i8042_platform_init(void) { #ifndef CONFIG_PCI return -ENODEV; #else - struct device_node *root = of_find_node_by_path("/"); + char prop[128]; + int len; - if (!strcmp(root->name, "SUNW,JavaStation-1")) { + len = prom_getproperty(prom_root_node, "name", prop, sizeof(prop)); + if (len < 0) { + printk("i8042: Cannot get name property of root OBP node.\n"); + return -ENODEV; + } + if (strncmp(prop, "SUNW,JavaStation-1", len) == 0) { /* Hardcoded values for MrCoffee. */ i8042_kbd_irq = i8042_aux_irq = 13 | 0x20; kbd_iobase = ioremap(0x71300060, 8); if (!kbd_iobase) return -ENODEV; } else { - int err = of_register_driver(&sparc_i8042_driver, - &of_bus_type); - if (err) - return err; - + struct linux_ebus *ebus; + struct linux_ebus_device *edev; + struct linux_ebus_child *child; + + for_each_ebus(ebus) { + for_each_ebusdev(edev, ebus) { + if (!strcmp(edev->prom_node->name, "8042")) + goto edev_found; + } + } + return -ENODEV; + + edev_found: + for_each_edevchild(edev, child) { + if (!strcmp(child->prom_node->name, OBP_PS2KBD_NAME1) || + !strcmp(child->prom_node->name, OBP_PS2KBD_NAME2)) { + i8042_kbd_irq = child->irqs[0]; + kbd_iobase = + ioremap(child->resource[0].start, 8); + } + if (!strcmp(child->prom_node->name, OBP_PS2MS_NAME1) || + !strcmp(child->prom_node->name, OBP_PS2MS_NAME2)) + i8042_aux_irq = child->irqs[0]; + } if (i8042_kbd_irq == -1 || i8042_aux_irq == -1) { - if (kbd_iobase) { - of_iounmap(kbd_iobase, 8); - kbd_iobase = (void __iomem *) NULL; - } + printk("i8042: Error, 8042 device lacks both kbd and " + "mouse nodes.\n"); return -ENODEV; } } @@ -135,10 +109,7 @@ static int __init i8042_platform_init(void) static inline void i8042_platform_exit(void) { #ifdef CONFIG_PCI - struct device_node *root = of_find_node_by_path("/"); - - if (strcmp(root->name, "SUNW,JavaStation-1")) - of_unregister_driver(&sparc_i8042_driver); + iounmap(kbd_iobase); #endif } diff --git a/trunk/drivers/input/serio/i8042.c b/trunk/drivers/input/serio/i8042.c index 7fa4bc222583..a7d91d5356a5 100644 --- a/trunk/drivers/input/serio/i8042.c +++ b/trunk/drivers/input/serio/i8042.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/input/serio/i8042.h b/trunk/drivers/input/serio/i8042.h index af526ab9ec04..cbbf3842da5b 100644 --- a/trunk/drivers/input/serio/i8042.h +++ b/trunk/drivers/input/serio/i8042.h @@ -1,6 +1,7 @@ #ifndef _I8042_H #define _I8042_H +#include /* * Copyright (c) 1999-2002 Vojtech Pavlik diff --git a/trunk/drivers/input/tsdev.c b/trunk/drivers/input/tsdev.c index 00e3929c6288..5f9ecad2ca75 100644 --- a/trunk/drivers/input/tsdev.c +++ b/trunk/drivers/input/tsdev.c @@ -48,6 +48,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/isdn/capi/capi.c b/trunk/drivers/isdn/capi/capi.c index 669f76393b5a..a518ec531021 100644 --- a/trunk/drivers/isdn/capi/capi.c +++ b/trunk/drivers/isdn/capi/capi.c @@ -9,6 +9,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/isdn/capi/capiutil.c b/trunk/drivers/isdn/capi/capiutil.c index c1b21552fc03..e7cf6bc286a6 100644 --- a/trunk/drivers/isdn/capi/capiutil.c +++ b/trunk/drivers/isdn/capi/capiutil.c @@ -17,6 +17,7 @@ #include #include #include +#include #include /* from CAPI2.0 DDK AVM Berlin GmbH */ diff --git a/trunk/drivers/isdn/divert/divert_procfs.c b/trunk/drivers/isdn/divert/divert_procfs.c index 399b316111f7..1b37d86d5ee1 100644 --- a/trunk/drivers/isdn/divert/divert_procfs.c +++ b/trunk/drivers/isdn/divert/divert_procfs.c @@ -9,6 +9,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/isdn/gigaset/gigaset.h b/trunk/drivers/isdn/gigaset/gigaset.h index 884bd72c1bf4..1ca3bfdef51d 100644 --- a/trunk/drivers/isdn/gigaset/gigaset.h +++ b/trunk/drivers/isdn/gigaset/gigaset.h @@ -16,6 +16,7 @@ #ifndef GIGASET_H #define GIGASET_H +#include #include #include #include diff --git a/trunk/drivers/isdn/hardware/avm/b1dma.c b/trunk/drivers/isdn/hardware/avm/b1dma.c index a4beeb46c859..4d64e5cbcdbf 100644 --- a/trunk/drivers/isdn/hardware/avm/b1dma.c +++ b/trunk/drivers/isdn/hardware/avm/b1dma.c @@ -9,6 +9,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/isdn/hardware/avm/b1pci.c b/trunk/drivers/isdn/hardware/avm/b1pci.c index 7edf19b32299..5435a6cfb5e7 100644 --- a/trunk/drivers/isdn/hardware/avm/b1pci.c +++ b/trunk/drivers/isdn/hardware/avm/b1pci.c @@ -9,6 +9,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/isdn/hardware/avm/c4.c b/trunk/drivers/isdn/hardware/avm/c4.c index e7924a545d49..f7253b2136ea 100644 --- a/trunk/drivers/isdn/hardware/avm/c4.c +++ b/trunk/drivers/isdn/hardware/avm/c4.c @@ -9,6 +9,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/isdn/hardware/avm/t1pci.c b/trunk/drivers/isdn/hardware/avm/t1pci.c index af85511600d0..2ceec8e8419f 100644 --- a/trunk/drivers/isdn/hardware/avm/t1pci.c +++ b/trunk/drivers/isdn/hardware/avm/t1pci.c @@ -9,6 +9,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/isdn/hardware/eicon/capimain.c b/trunk/drivers/isdn/hardware/eicon/capimain.c index 7a74ed35b1bf..8fe4f3f09353 100644 --- a/trunk/drivers/isdn/hardware/eicon/capimain.c +++ b/trunk/drivers/isdn/hardware/eicon/capimain.c @@ -10,6 +10,7 @@ * of the GNU General Public License, incorporated herein by reference. */ +#include #include #include #include diff --git a/trunk/drivers/isdn/hardware/eicon/diva_didd.c b/trunk/drivers/isdn/hardware/eicon/diva_didd.c index 14298b8c835f..27204f4b111a 100644 --- a/trunk/drivers/isdn/hardware/eicon/diva_didd.c +++ b/trunk/drivers/isdn/hardware/eicon/diva_didd.c @@ -11,6 +11,7 @@ * of the GNU General Public License, incorporated herein by reference. */ +#include #include #include #include diff --git a/trunk/drivers/isdn/hardware/eicon/divamnt.c b/trunk/drivers/isdn/hardware/eicon/divamnt.c index 77155d9f399b..b163c5909182 100644 --- a/trunk/drivers/isdn/hardware/eicon/divamnt.c +++ b/trunk/drivers/isdn/hardware/eicon/divamnt.c @@ -10,6 +10,7 @@ * of the GNU General Public License, incorporated herein by reference. */ +#include #include #include #include diff --git a/trunk/drivers/isdn/hardware/eicon/divasi.c b/trunk/drivers/isdn/hardware/eicon/divasi.c index fff0d89c806b..6e7d89a31c1d 100644 --- a/trunk/drivers/isdn/hardware/eicon/divasi.c +++ b/trunk/drivers/isdn/hardware/eicon/divasi.c @@ -10,6 +10,7 @@ * of the GNU General Public License, incorporated herein by reference. */ +#include #include #include #include diff --git a/trunk/drivers/isdn/hardware/eicon/divasmain.c b/trunk/drivers/isdn/hardware/eicon/divasmain.c index b05e35f7ccb1..9dee6a39104c 100644 --- a/trunk/drivers/isdn/hardware/eicon/divasmain.c +++ b/trunk/drivers/isdn/hardware/eicon/divasmain.c @@ -9,6 +9,7 @@ * of the GNU General Public License, incorporated herein by reference. */ +#include #include #include #include diff --git a/trunk/drivers/isdn/hardware/eicon/divasproc.c b/trunk/drivers/isdn/hardware/eicon/divasproc.c index 6a4373a4f1e8..c12efa6f8429 100644 --- a/trunk/drivers/isdn/hardware/eicon/divasproc.c +++ b/trunk/drivers/isdn/hardware/eicon/divasproc.c @@ -10,6 +10,7 @@ * of the GNU General Public License, incorporated herein by reference. */ +#include #include #include #include diff --git a/trunk/drivers/isdn/hardware/eicon/platform.h b/trunk/drivers/isdn/hardware/eicon/platform.h index a66836cf756c..12b8ff29e976 100644 --- a/trunk/drivers/isdn/hardware/eicon/platform.h +++ b/trunk/drivers/isdn/hardware/eicon/platform.h @@ -18,6 +18,7 @@ #define DIVA_BUILD "local" #endif +#include #include #include #include diff --git a/trunk/drivers/isdn/hisax/avm_pci.c b/trunk/drivers/isdn/hisax/avm_pci.c index 93f3a5343a74..4abe5ff10e72 100644 --- a/trunk/drivers/isdn/hisax/avm_pci.c +++ b/trunk/drivers/isdn/hisax/avm_pci.c @@ -12,6 +12,7 @@ * */ +#include #include #include "hisax.h" #include "isac.h" diff --git a/trunk/drivers/isdn/hisax/bkm_a4t.c b/trunk/drivers/isdn/hisax/bkm_a4t.c index de28cb54817d..dcb308aeb50c 100644 --- a/trunk/drivers/isdn/hisax/bkm_a4t.c +++ b/trunk/drivers/isdn/hisax/bkm_a4t.c @@ -11,6 +11,7 @@ */ +#include #include #include "hisax.h" #include "isac.h" diff --git a/trunk/drivers/isdn/hisax/bkm_a8.c b/trunk/drivers/isdn/hisax/bkm_a8.c index 9d1abfb93dde..5f21b82c8c8d 100644 --- a/trunk/drivers/isdn/hisax/bkm_a8.c +++ b/trunk/drivers/isdn/hisax/bkm_a8.c @@ -11,6 +11,7 @@ */ +#include #include #include "hisax.h" #include "isac.h" diff --git a/trunk/drivers/isdn/hisax/config.c b/trunk/drivers/isdn/hisax/config.c index 5333be5d2c47..27332506f9f7 100644 --- a/trunk/drivers/isdn/hisax/config.c +++ b/trunk/drivers/isdn/hisax/config.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include "hisax.h" #include diff --git a/trunk/drivers/isdn/hisax/diva.c b/trunk/drivers/isdn/hisax/diva.c index fbb9d02e3e29..b0ff1cc97d7c 100644 --- a/trunk/drivers/isdn/hisax/diva.c +++ b/trunk/drivers/isdn/hisax/diva.c @@ -16,6 +16,7 @@ */ #include +#include #include "hisax.h" #include "isac.h" #include "hscx.h" diff --git a/trunk/drivers/isdn/hisax/elsa.c b/trunk/drivers/isdn/hisax/elsa.c index 7a5cdb1dee1e..f8ca4b323331 100644 --- a/trunk/drivers/isdn/hisax/elsa.c +++ b/trunk/drivers/isdn/hisax/elsa.c @@ -19,6 +19,7 @@ */ #include +#include #include "hisax.h" #include "arcofi.h" #include "isac.h" diff --git a/trunk/drivers/isdn/hisax/elsa_ser.c b/trunk/drivers/isdn/hisax/elsa_ser.c index 0279fb323cb1..898ec0916195 100644 --- a/trunk/drivers/isdn/hisax/elsa_ser.c +++ b/trunk/drivers/isdn/hisax/elsa_ser.c @@ -7,6 +7,7 @@ * */ +#include #include #include diff --git a/trunk/drivers/isdn/hisax/enternow_pci.c b/trunk/drivers/isdn/hisax/enternow_pci.c index 5f4876184691..3341cf155531 100644 --- a/trunk/drivers/isdn/hisax/enternow_pci.c +++ b/trunk/drivers/isdn/hisax/enternow_pci.c @@ -60,6 +60,7 @@ */ +#include #include "hisax.h" #include "isac.h" #include "isdnl1.h" diff --git a/trunk/drivers/isdn/hisax/gazel.c b/trunk/drivers/isdn/hisax/gazel.c index 82a1d2e86cee..60b04c6d9e7d 100644 --- a/trunk/drivers/isdn/hisax/gazel.c +++ b/trunk/drivers/isdn/hisax/gazel.c @@ -11,6 +11,7 @@ * */ +#include #include #include "hisax.h" #include "isac.h" diff --git a/trunk/drivers/isdn/hisax/hfc4s8s_l1.c b/trunk/drivers/isdn/hisax/hfc4s8s_l1.c index 913fd27a1f55..e3866b0a97fd 100644 --- a/trunk/drivers/isdn/hisax/hfc4s8s_l1.c +++ b/trunk/drivers/isdn/hisax/hfc4s8s_l1.c @@ -22,6 +22,7 @@ #include #include +#include #include #include #include diff --git a/trunk/drivers/isdn/hisax/hfc_pci.c b/trunk/drivers/isdn/hisax/hfc_pci.c index fa9615747e26..3622720f0505 100644 --- a/trunk/drivers/isdn/hisax/hfc_pci.c +++ b/trunk/drivers/isdn/hisax/hfc_pci.c @@ -16,6 +16,7 @@ */ #include +#include #include "hisax.h" #include "hfc_pci.h" #include "isdnl1.h" diff --git a/trunk/drivers/isdn/hisax/hfc_usb.c b/trunk/drivers/isdn/hisax/hfc_usb.c index b5e571a52694..262c44127419 100644 --- a/trunk/drivers/isdn/hisax/hfc_usb.c +++ b/trunk/drivers/isdn/hisax/hfc_usb.c @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/isdn/hisax/hisax.h b/trunk/drivers/isdn/hisax/hisax.h index 75920aa0a3c5..11fe537e2f6f 100644 --- a/trunk/drivers/isdn/hisax/hisax.h +++ b/trunk/drivers/isdn/hisax/hisax.h @@ -6,6 +6,7 @@ * of the GNU General Public License, incorporated herein by reference. * */ +#include #include #include #include diff --git a/trunk/drivers/isdn/hisax/hisax_debug.h b/trunk/drivers/isdn/hisax/hisax_debug.h index ceafecdb1037..ba518a7a7fb7 100644 --- a/trunk/drivers/isdn/hisax/hisax_debug.h +++ b/trunk/drivers/isdn/hisax/hisax_debug.h @@ -22,6 +22,7 @@ #ifndef __HISAX_DEBUG_H__ #define __HISAX_DEBUG_H__ +#include #ifdef CONFIG_HISAX_DEBUG diff --git a/trunk/drivers/isdn/hisax/ipacx.c b/trunk/drivers/isdn/hisax/ipacx.c index df5fc92a89b2..2e9afae1254a 100644 --- a/trunk/drivers/isdn/hisax/ipacx.c +++ b/trunk/drivers/isdn/hisax/ipacx.c @@ -10,6 +10,7 @@ * */ #include +#include #include #include "hisax_if.h" #include "hisax.h" diff --git a/trunk/drivers/isdn/hisax/isdnl3.c b/trunk/drivers/isdn/hisax/isdnl3.c index 281fa27d9f00..c9917cd2132b 100644 --- a/trunk/drivers/isdn/hisax/isdnl3.c +++ b/trunk/drivers/isdn/hisax/isdnl3.c @@ -18,6 +18,7 @@ #include #include "hisax.h" #include "isdnl3.h" +#include const char *l3_revision = "$Revision: 2.22.2.3 $"; diff --git a/trunk/drivers/isdn/hisax/l3dss1.c b/trunk/drivers/isdn/hisax/l3dss1.c index 99feae8b9210..e96845cdd4f6 100644 --- a/trunk/drivers/isdn/hisax/l3dss1.c +++ b/trunk/drivers/isdn/hisax/l3dss1.c @@ -23,6 +23,7 @@ #include "isdnl3.h" #include "l3dss1.h" #include +#include extern char *HiSax_getrev(const char *revision); static const char *dss1_revision = "$Revision: 2.32.2.3 $"; diff --git a/trunk/drivers/isdn/hisax/niccy.c b/trunk/drivers/isdn/hisax/niccy.c index 868762cf76c6..68a2159cbd11 100644 --- a/trunk/drivers/isdn/hisax/niccy.c +++ b/trunk/drivers/isdn/hisax/niccy.c @@ -14,6 +14,7 @@ */ +#include #include #include "hisax.h" #include "isac.h" diff --git a/trunk/drivers/isdn/hisax/nj_s.c b/trunk/drivers/isdn/hisax/nj_s.c index 1b3ac46df52c..a7d3cd3f36fd 100644 --- a/trunk/drivers/isdn/hisax/nj_s.c +++ b/trunk/drivers/isdn/hisax/nj_s.c @@ -5,6 +5,7 @@ * */ +#include #include #include "hisax.h" #include "isac.h" diff --git a/trunk/drivers/isdn/hisax/nj_u.c b/trunk/drivers/isdn/hisax/nj_u.c index 7a6010eac60d..1ae7cac98a87 100644 --- a/trunk/drivers/isdn/hisax/nj_u.c +++ b/trunk/drivers/isdn/hisax/nj_u.c @@ -5,6 +5,7 @@ * */ +#include #include #include "hisax.h" #include "icc.h" diff --git a/trunk/drivers/isdn/hisax/sedlbauer.c b/trunk/drivers/isdn/hisax/sedlbauer.c index 11ea456626b6..8c044a6a7fe3 100644 --- a/trunk/drivers/isdn/hisax/sedlbauer.c +++ b/trunk/drivers/isdn/hisax/sedlbauer.c @@ -39,6 +39,7 @@ */ #include +#include #include "hisax.h" #include "isac.h" #include "ipac.h" diff --git a/trunk/drivers/isdn/hisax/st5481.h b/trunk/drivers/isdn/hisax/st5481.h index 04416bad611d..9ffaae7c657a 100644 --- a/trunk/drivers/isdn/hisax/st5481.h +++ b/trunk/drivers/isdn/hisax/st5481.h @@ -13,6 +13,7 @@ #ifndef _ST5481_H_ #define _ST5481_H_ +#include // USB IDs, the Product Id is in the range 0x4810-0x481F diff --git a/trunk/drivers/isdn/hisax/st5481_init.c b/trunk/drivers/isdn/hisax/st5481_init.c index 2716aa5c60f7..99cb0f3d59a1 100644 --- a/trunk/drivers/isdn/hisax/st5481_init.c +++ b/trunk/drivers/isdn/hisax/st5481_init.c @@ -24,6 +24,7 @@ * clean up debug */ +#include #include #include #include diff --git a/trunk/drivers/isdn/hisax/telespci.c b/trunk/drivers/isdn/hisax/telespci.c index a1bb73e28841..e82ab2251b82 100644 --- a/trunk/drivers/isdn/hisax/telespci.c +++ b/trunk/drivers/isdn/hisax/telespci.c @@ -13,6 +13,7 @@ */ #include +#include #include "hisax.h" #include "isac.h" #include "hscx.h" diff --git a/trunk/drivers/isdn/hisax/w6692.c b/trunk/drivers/isdn/hisax/w6692.c index 00e4fa2aef51..0352ee5f706c 100644 --- a/trunk/drivers/isdn/hisax/w6692.c +++ b/trunk/drivers/isdn/hisax/w6692.c @@ -10,6 +10,7 @@ * */ +#include #include #include "hisax.h" #include "w6692.h" diff --git a/trunk/drivers/isdn/hysdn/boardergo.c b/trunk/drivers/isdn/hysdn/boardergo.c index 89fd531fbce6..48d134be9908 100644 --- a/trunk/drivers/isdn/hysdn/boardergo.c +++ b/trunk/drivers/isdn/hysdn/boardergo.c @@ -14,6 +14,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/isdn/hysdn/hysdn_defs.h b/trunk/drivers/isdn/hysdn/hysdn_defs.h index 461e831592dd..3a9b29b38bc4 100644 --- a/trunk/drivers/isdn/hysdn/hysdn_defs.h +++ b/trunk/drivers/isdn/hysdn/hysdn_defs.h @@ -14,6 +14,7 @@ #ifndef HYSDN_DEFS_H #define HYSDN_DEFS_H +#include #include #include #include diff --git a/trunk/drivers/isdn/hysdn/hysdn_init.c b/trunk/drivers/isdn/hysdn/hysdn_init.c index b702ed27252b..b75ac5af236a 100644 --- a/trunk/drivers/isdn/hysdn/hysdn_init.c +++ b/trunk/drivers/isdn/hysdn/hysdn_init.c @@ -10,6 +10,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/isdn/hysdn/hysdn_sched.c b/trunk/drivers/isdn/hysdn/hysdn_sched.c index 1c0d54ac12ab..133032920ff8 100644 --- a/trunk/drivers/isdn/hysdn/hysdn_sched.c +++ b/trunk/drivers/isdn/hysdn/hysdn_sched.c @@ -11,6 +11,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/isdn/i4l/isdn_common.c b/trunk/drivers/isdn/i4l/isdn_common.c index 9f6c6375ff75..eb21063e6f63 100644 --- a/trunk/drivers/isdn/i4l/isdn_common.c +++ b/trunk/drivers/isdn/i4l/isdn_common.c @@ -11,6 +11,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/isdn/i4l/isdn_net.c b/trunk/drivers/isdn/i4l/isdn_net.c index 43da8ae1b2ad..96c115e13389 100644 --- a/trunk/drivers/isdn/i4l/isdn_net.c +++ b/trunk/drivers/isdn/i4l/isdn_net.c @@ -22,6 +22,7 @@ * http://i4l.zabbadoz.net/i4l/cisco-hdlc.txt */ +#include #include #include #include diff --git a/trunk/drivers/isdn/i4l/isdn_ppp.c b/trunk/drivers/isdn/i4l/isdn_ppp.c index 29e7667ec962..918742271c79 100644 --- a/trunk/drivers/isdn/i4l/isdn_ppp.c +++ b/trunk/drivers/isdn/i4l/isdn_ppp.c @@ -9,6 +9,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/isdn/i4l/isdn_tty.c b/trunk/drivers/isdn/i4l/isdn_tty.c index 9ab66e8960d5..0a53a990c100 100644 --- a/trunk/drivers/isdn/i4l/isdn_tty.c +++ b/trunk/drivers/isdn/i4l/isdn_tty.c @@ -11,6 +11,7 @@ */ #undef ISDN_TTY_STAT_DEBUG +#include #include #include #include "isdn_common.h" diff --git a/trunk/drivers/isdn/i4l/isdn_tty.h b/trunk/drivers/isdn/i4l/isdn_tty.h index 692c74d6b749..9f0fa9501f4d 100644 --- a/trunk/drivers/isdn/i4l/isdn_tty.h +++ b/trunk/drivers/isdn/i4l/isdn_tty.h @@ -10,6 +10,7 @@ * */ +#include #define DLE 0x10 #define ETX 0x03 diff --git a/trunk/drivers/isdn/isdnloop/isdnloop.c b/trunk/drivers/isdn/isdnloop/isdnloop.c index fabbd461603e..a67d31af797a 100644 --- a/trunk/drivers/isdn/isdnloop/isdnloop.c +++ b/trunk/drivers/isdn/isdnloop/isdnloop.c @@ -9,6 +9,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/leds/led-class.c b/trunk/drivers/leds/led-class.c index d424b4452028..c75d0ef1609c 100644 --- a/trunk/drivers/leds/led-class.c +++ b/trunk/drivers/leds/led-class.c @@ -9,6 +9,7 @@ * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/drivers/leds/led-triggers.c b/trunk/drivers/leds/led-triggers.c index 47f0ff196328..1b1ce6523960 100644 --- a/trunk/drivers/leds/led-triggers.c +++ b/trunk/drivers/leds/led-triggers.c @@ -11,6 +11,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/leds/leds-corgi.c b/trunk/drivers/leds/leds-corgi.c index cf1dcd719a28..bb7d84df0121 100644 --- a/trunk/drivers/leds/leds-corgi.c +++ b/trunk/drivers/leds/leds-corgi.c @@ -11,6 +11,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/leds/leds-ixp4xx-gpio.c b/trunk/drivers/leds/leds-ixp4xx-gpio.c index 7dcf0b92c460..30ced150e4cf 100644 --- a/trunk/drivers/leds/leds-ixp4xx-gpio.c +++ b/trunk/drivers/leds/leds-ixp4xx-gpio.c @@ -31,6 +31,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/leds/leds-locomo.c b/trunk/drivers/leds/leds-locomo.c index 3b87951aa555..8419e29b71f4 100644 --- a/trunk/drivers/leds/leds-locomo.c +++ b/trunk/drivers/leds/leds-locomo.c @@ -8,6 +8,7 @@ * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/drivers/leds/leds-s3c24xx.c b/trunk/drivers/leds/leds-s3c24xx.c index fb1edc1c9edb..650cf72dc675 100644 --- a/trunk/drivers/leds/leds-s3c24xx.c +++ b/trunk/drivers/leds/leds-s3c24xx.c @@ -11,6 +11,7 @@ * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/drivers/leds/leds-spitz.c b/trunk/drivers/leds/leds-spitz.c index 126d09cc96ec..65bbef4a5e09 100644 --- a/trunk/drivers/leds/leds-spitz.c +++ b/trunk/drivers/leds/leds-spitz.c @@ -11,6 +11,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/leds/leds-tosa.c b/trunk/drivers/leds/leds-tosa.c index fb2416a38303..c9e8cc1ec481 100644 --- a/trunk/drivers/leds/leds-tosa.c +++ b/trunk/drivers/leds/leds-tosa.c @@ -12,6 +12,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/leds/ledtrig-timer.c b/trunk/drivers/leds/ledtrig-timer.c index 179c2876b541..fbf141ef46ec 100644 --- a/trunk/drivers/leds/ledtrig-timer.c +++ b/trunk/drivers/leds/ledtrig-timer.c @@ -11,6 +11,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/macintosh/adb.c b/trunk/drivers/macintosh/adb.c index 360f93f6fcdb..9f1a049dc226 100644 --- a/trunk/drivers/macintosh/adb.c +++ b/trunk/drivers/macintosh/adb.c @@ -16,6 +16,7 @@ * - move bus probe to a kernel thread */ +#include #include #include #include diff --git a/trunk/drivers/macintosh/adbhid.c b/trunk/drivers/macintosh/adbhid.c index 545be1ed6927..cbfbbe2b150a 100644 --- a/trunk/drivers/macintosh/adbhid.c +++ b/trunk/drivers/macintosh/adbhid.c @@ -34,6 +34,7 @@ * Move to syfs */ +#include #include #include #include diff --git a/trunk/drivers/macintosh/apm_emu.c b/trunk/drivers/macintosh/apm_emu.c index 1293876a2ebd..e5a2bbf99399 100644 --- a/trunk/drivers/macintosh/apm_emu.c +++ b/trunk/drivers/macintosh/apm_emu.c @@ -18,6 +18,7 @@ * */ +#include #include #include diff --git a/trunk/drivers/macintosh/mac_hid.c b/trunk/drivers/macintosh/mac_hid.c index 6b129eef7987..a66636116f0b 100644 --- a/trunk/drivers/macintosh/mac_hid.c +++ b/trunk/drivers/macintosh/mac_hid.c @@ -8,6 +8,7 @@ * This file will soon be removed in favor of an uinput userspace tool. */ +#include #include #include #include diff --git a/trunk/drivers/macintosh/macio_asic.c b/trunk/drivers/macintosh/macio_asic.c index d832e109b1b1..c687ac703941 100644 --- a/trunk/drivers/macintosh/macio_asic.c +++ b/trunk/drivers/macintosh/macio_asic.c @@ -17,6 +17,7 @@ * sub-devices. */ +#include #include #include #include diff --git a/trunk/drivers/macintosh/macio_sysfs.c b/trunk/drivers/macintosh/macio_sysfs.c index cae24a13526a..7f7d4eaca870 100644 --- a/trunk/drivers/macintosh/macio_sysfs.c +++ b/trunk/drivers/macintosh/macio_sysfs.c @@ -1,3 +1,4 @@ +#include #include #include #include diff --git a/trunk/drivers/macintosh/mediabay.c b/trunk/drivers/macintosh/mediabay.c index 0acf2f7fd9d7..53c1c7909413 100644 --- a/trunk/drivers/macintosh/mediabay.c +++ b/trunk/drivers/macintosh/mediabay.c @@ -10,6 +10,7 @@ * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/drivers/macintosh/smu.c b/trunk/drivers/macintosh/smu.c index 030130570e0a..f4516ca7aa3a 100644 --- a/trunk/drivers/macintosh/smu.c +++ b/trunk/drivers/macintosh/smu.c @@ -19,6 +19,7 @@ * the userland interface */ +#include #include #include #include diff --git a/trunk/drivers/macintosh/therm_adt746x.c b/trunk/drivers/macintosh/therm_adt746x.c index 7f86478bdd36..5282fec17075 100644 --- a/trunk/drivers/macintosh/therm_adt746x.c +++ b/trunk/drivers/macintosh/therm_adt746x.c @@ -9,6 +9,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/macintosh/therm_pm72.c b/trunk/drivers/macintosh/therm_pm72.c index c1fe0b368f76..231146f439dd 100644 --- a/trunk/drivers/macintosh/therm_pm72.c +++ b/trunk/drivers/macintosh/therm_pm72.c @@ -97,6 +97,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/macintosh/therm_pm72.h b/trunk/drivers/macintosh/therm_pm72.h index fc7e9b7ecaf2..c17e61f9c418 100644 --- a/trunk/drivers/macintosh/therm_pm72.h +++ b/trunk/drivers/macintosh/therm_pm72.h @@ -93,7 +93,7 @@ static char * critical_overtemp_path = "/sbin/critical_overtemp"; * 0. This appear to be safe enough for this first version * of the driver, though I would accept any clean patch * doing a better use of the device-tree without turning the - * while i2c registration mechanism into a racy mess + * while i2c registration mecanism into a racy mess * * Note: Xserve changed this. We have some bits on the K2 bus, * which I arbitrarily set to 0x200. Ultimately, we really want diff --git a/trunk/drivers/macintosh/therm_windtunnel.c b/trunk/drivers/macintosh/therm_windtunnel.c index c7d1c290cb0c..3d9dd2e166aa 100644 --- a/trunk/drivers/macintosh/therm_windtunnel.c +++ b/trunk/drivers/macintosh/therm_windtunnel.c @@ -27,6 +27,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/macintosh/via-cuda.c b/trunk/drivers/macintosh/via-cuda.c index 6501db50fb83..2d9d79150403 100644 --- a/trunk/drivers/macintosh/via-cuda.c +++ b/trunk/drivers/macintosh/via-cuda.c @@ -9,6 +9,7 @@ * Copyright (C) 1996 Paul Mackerras. */ #include +#include #include #include #include diff --git a/trunk/drivers/macintosh/via-pmu.c b/trunk/drivers/macintosh/via-pmu.c index c1193d34ec9e..1ab4f16c08b9 100644 --- a/trunk/drivers/macintosh/via-pmu.c +++ b/trunk/drivers/macintosh/via-pmu.c @@ -21,6 +21,7 @@ * */ #include +#include #include #include #include diff --git a/trunk/drivers/macintosh/windfarm_cpufreq_clamp.c b/trunk/drivers/macintosh/windfarm_cpufreq_clamp.c index 900aade06198..81337cd16e80 100644 --- a/trunk/drivers/macintosh/windfarm_cpufreq_clamp.c +++ b/trunk/drivers/macintosh/windfarm_cpufreq_clamp.c @@ -1,3 +1,4 @@ +#include #include #include #include diff --git a/trunk/drivers/md/bitmap.c b/trunk/drivers/md/bitmap.c index ecc56765d949..ebbd2d856256 100644 --- a/trunk/drivers/md/bitmap.c +++ b/trunk/drivers/md/bitmap.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/md/dm-snap.c b/trunk/drivers/md/dm-snap.c index 1d0fafda0f76..8eea0ddbf5ec 100644 --- a/trunk/drivers/md/dm-snap.c +++ b/trunk/drivers/md/dm-snap.c @@ -7,6 +7,7 @@ */ #include +#include #include #include #include diff --git a/trunk/drivers/md/kcopyd.c b/trunk/drivers/md/kcopyd.c index f1db6eff4857..73ab875fb158 100644 --- a/trunk/drivers/md/kcopyd.c +++ b/trunk/drivers/md/kcopyd.c @@ -12,6 +12,7 @@ #include #include +#include #include #include #include diff --git a/trunk/drivers/md/md.c b/trunk/drivers/md/md.c index 2fe32c261922..2ec1b3520a0b 100644 --- a/trunk/drivers/md/md.c +++ b/trunk/drivers/md/md.c @@ -33,6 +33,7 @@ */ #include +#include #include #include #include diff --git a/trunk/drivers/md/raid5.c b/trunk/drivers/md/raid5.c index 7433871f4b3a..837ec4eb3d60 100644 --- a/trunk/drivers/md/raid5.c +++ b/trunk/drivers/md/raid5.c @@ -19,6 +19,7 @@ */ +#include #include #include #include diff --git a/trunk/drivers/media/common/saa7146_hlp.c b/trunk/drivers/media/common/saa7146_hlp.c index d2905720eb74..2092e6c33dd2 100644 --- a/trunk/drivers/media/common/saa7146_hlp.c +++ b/trunk/drivers/media/common/saa7146_hlp.c @@ -158,7 +158,7 @@ static int calculate_h_scale_registers(struct saa7146_dev *dev, } /* the horizontal scaling increment controls the UV filter - to reduce the bandwidth to improve the display quality, + to reduce the bandwith to improve the display quality, so set it ... */ if ( xsci == 0x400) pfuv = 0x00; diff --git a/trunk/drivers/media/dvb/b2c2/flexcop-common.h b/trunk/drivers/media/dvb/b2c2/flexcop-common.h index 5a6c4fe249e7..b3dd0603cd92 100644 --- a/trunk/drivers/media/dvb/b2c2/flexcop-common.h +++ b/trunk/drivers/media/dvb/b2c2/flexcop-common.h @@ -8,6 +8,7 @@ #ifndef __FLEXCOP_COMMON_H__ #define __FLEXCOP_COMMON_H__ +#include #include #include diff --git a/trunk/drivers/media/dvb/cinergyT2/cinergyT2.c b/trunk/drivers/media/dvb/cinergyT2/cinergyT2.c index 001c71b6be61..1b8953600425 100644 --- a/trunk/drivers/media/dvb/cinergyT2/cinergyT2.c +++ b/trunk/drivers/media/dvb/cinergyT2/cinergyT2.c @@ -22,6 +22,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/media/dvb/dvb-core/dvb_frontend.c b/trunk/drivers/media/dvb/dvb-core/dvb_frontend.c index 59ac35ddd51e..5e8bb41a088b 100644 --- a/trunk/drivers/media/dvb/dvb-core/dvb_frontend.c +++ b/trunk/drivers/media/dvb/dvb-core/dvb_frontend.c @@ -570,8 +570,7 @@ static int dvb_frontend_thread(void *data) dvb_frontend_add_event(fe, s); fepriv->status = s; } - } else - dvb_frontend_swzigzag(fe); + } } else dvb_frontend_swzigzag(fe); } @@ -976,7 +975,6 @@ static int dvb_frontend_ioctl(struct inode *inode, struct file *file, case FE_SET_FRONTEND_TUNE_MODE: fepriv->tune_mode_flags = (unsigned long) parg; - err = 0; break; }; diff --git a/trunk/drivers/media/dvb/dvb-usb/dvb-usb.h b/trunk/drivers/media/dvb/dvb-usb/dvb-usb.h index 97f8ea962438..4cf9f89c51bf 100644 --- a/trunk/drivers/media/dvb/dvb-usb/dvb-usb.h +++ b/trunk/drivers/media/dvb/dvb-usb/dvb-usb.h @@ -8,6 +8,7 @@ #ifndef __DVB_USB_H__ #define __DVB_USB_H__ +#include #include #include #include diff --git a/trunk/drivers/media/dvb/frontends/cx22700.c b/trunk/drivers/media/dvb/frontends/cx22700.c index 13ad1bfae663..3c7c09a362b2 100644 --- a/trunk/drivers/media/dvb/frontends/cx22700.c +++ b/trunk/drivers/media/dvb/frontends/cx22700.c @@ -134,7 +134,6 @@ static int cx22700_set_tps (struct cx22700_state *state, struct dvb_ofdm_paramet return -EINVAL; if (p->code_rate_LP < FEC_1_2 || p->code_rate_LP > FEC_7_8) - return -EINVAL; if (p->code_rate_HP == FEC_4_5 || p->code_rate_LP == FEC_4_5) return -EINVAL; diff --git a/trunk/drivers/media/dvb/frontends/cx24123.c b/trunk/drivers/media/dvb/frontends/cx24123.c index 274a87b7a5d5..f2f795cba56a 100644 --- a/trunk/drivers/media/dvb/frontends/cx24123.c +++ b/trunk/drivers/media/dvb/frontends/cx24123.c @@ -670,10 +670,10 @@ static int cx24123_set_voltage(struct dvb_frontend* fe, fe_sec_voltage_t voltage switch (voltage) { case SEC_VOLTAGE_13: dprintk("%s: setting voltage 13V\n", __FUNCTION__); - return cx24123_writereg(state, 0x29, val & 0x7f); + return cx24123_writereg(state, 0x29, val | 0x80); case SEC_VOLTAGE_18: dprintk("%s: setting voltage 18V\n", __FUNCTION__); - return cx24123_writereg(state, 0x29, val | 0x80); + return cx24123_writereg(state, 0x29, val & 0x7f); default: return -EINVAL; }; diff --git a/trunk/drivers/media/dvb/frontends/dib3000mb.c b/trunk/drivers/media/dvb/frontends/dib3000mb.c index 5302e11883a2..7c6dc7e30900 100644 --- a/trunk/drivers/media/dvb/frontends/dib3000mb.c +++ b/trunk/drivers/media/dvb/frontends/dib3000mb.c @@ -21,6 +21,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/media/dvb/frontends/dib3000mc.c b/trunk/drivers/media/dvb/frontends/dib3000mc.c index 98673474a140..6c3be2529980 100644 --- a/trunk/drivers/media/dvb/frontends/dib3000mc.c +++ b/trunk/drivers/media/dvb/frontends/dib3000mc.c @@ -20,6 +20,7 @@ * see Documentation/dvb/README.dibusb for more information * */ +#include #include #include #include diff --git a/trunk/drivers/media/dvb/frontends/lgdt330x.c b/trunk/drivers/media/dvb/frontends/lgdt330x.c index 9a354708bd20..6e8ad176e1a1 100644 --- a/trunk/drivers/media/dvb/frontends/lgdt330x.c +++ b/trunk/drivers/media/dvb/frontends/lgdt330x.c @@ -216,7 +216,7 @@ static int lgdt330x_init(struct dvb_frontend* fe) AGC_DELAY0, 0x07, AGC_DELAY2, 0xfe, /* Change the value of IAGCBW[15:8] - of inner AGC loop filter bandwidth */ + of inner AGC loop filter bandwith */ AGC_LOOP_BANDWIDTH0, 0x08, AGC_LOOP_BANDWIDTH1, 0x9a }; diff --git a/trunk/drivers/media/dvb/frontends/tda10021.c b/trunk/drivers/media/dvb/frontends/tda10021.c index 9cbd164aa281..e83ff2104c9b 100644 --- a/trunk/drivers/media/dvb/frontends/tda10021.c +++ b/trunk/drivers/media/dvb/frontends/tda10021.c @@ -21,6 +21,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/drivers/media/dvb/frontends/ves1820.c b/trunk/drivers/media/dvb/frontends/ves1820.c index 9b57576bfeb4..6bffe85c161c 100644 --- a/trunk/drivers/media/dvb/frontends/ves1820.c +++ b/trunk/drivers/media/dvb/frontends/ves1820.c @@ -18,6 +18,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/drivers/media/dvb/ttpci/av7110.c b/trunk/drivers/media/dvb/ttpci/av7110.c index 500f15c10aaf..7a5c99c200e8 100644 --- a/trunk/drivers/media/dvb/ttpci/av7110.c +++ b/trunk/drivers/media/dvb/ttpci/av7110.c @@ -30,6 +30,7 @@ */ +#include #include #include #include diff --git a/trunk/drivers/media/dvb/ttpci/budget-av.c b/trunk/drivers/media/dvb/ttpci/budget-av.c index 5f111d407730..6163cb03b8f4 100644 --- a/trunk/drivers/media/dvb/ttpci/budget-av.c +++ b/trunk/drivers/media/dvb/ttpci/budget-av.c @@ -1141,15 +1141,6 @@ static void frontend_init(struct budget_av *budget_av) break; case SUBID_DVBC_KNC1: - budget_av->reinitialise_demod = 1; - fe = tda10021_attach(&philips_cu1216_config, - &budget_av->budget.i2c_adap, - read_pwm(budget_av)); - if (fe) { - fe->ops.tuner_ops.set_params = philips_cu1216_tuner_set_params; - } - break; - case SUBID_DVBC_KNC1_PLUS: case SUBID_DVBC_CINERGY1200: budget_av->reinitialise_demod = 1; @@ -1302,7 +1293,11 @@ static int budget_av_attach(struct saa7146_dev *dev, struct saa7146_pci_extensio budget_av->budget.dvb_adapter.priv = budget_av; frontend_init(budget_av); - ciintf_init(budget_av); + + if (!budget_av->has_saa7113) { + ciintf_init(budget_av); + } + return 0; } diff --git a/trunk/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c b/trunk/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c index 04cef3023457..336b2fe1a5f2 100644 --- a/trunk/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c +++ b/trunk/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c @@ -43,7 +43,7 @@ is a bit braindead (no matching channel masks or no matching filter mask), we won't support this - yet. it doesn't event support negative filters, so the best way is maybe to keep TTUSB_HWSECTIONS undef'd and just - parse TS data. USB bandwidth will be a problem when having large + parse TS data. USB bandwith will be a problem when having large datastreams, especially for dvb-net, but hey, that's not my problem. TTUSB_DISEQC, TTUSB_TONE: diff --git a/trunk/drivers/media/radio/radio-gemtek-pci.c b/trunk/drivers/media/radio/radio-gemtek-pci.c index 4c82956390c1..9f249e7e60c9 100644 --- a/trunk/drivers/media/radio/radio-gemtek-pci.c +++ b/trunk/drivers/media/radio/radio-gemtek-pci.c @@ -37,6 +37,7 @@ *************************************************************************** */ +#include #include #include #include diff --git a/trunk/drivers/media/video/arv.c b/trunk/drivers/media/video/arv.c index 5c5e682a3004..ae14f5f32039 100644 --- a/trunk/drivers/media/video/arv.c +++ b/trunk/drivers/media/video/arv.c @@ -18,6 +18,7 @@ * 2003-09-01: Support w3cam by Takeo Takahashi */ +#include #include #include #include diff --git a/trunk/drivers/media/video/bt8xx/bttv-cards.c b/trunk/drivers/media/video/bt8xx/bttv-cards.c index de14818d5cc4..e68a6d2fff24 100644 --- a/trunk/drivers/media/video/bt8xx/bttv-cards.c +++ b/trunk/drivers/media/video/bt8xx/bttv-cards.c @@ -25,6 +25,7 @@ */ +#include #include #include #include @@ -3547,6 +3548,11 @@ void __devinit bttv_init_card2(struct bttv *btv) /* Hybrid DVB card, DOES have a tda9887 */ if (btv->c.type == BTTV_BOARD_DVICO_FUSIONHDTV_5_LITE) tda9887 = 1; + if((btv->tuner_type == TUNER_PHILIPS_FM1216ME_MK3) || + (btv->tuner_type == TUNER_PHILIPS_FM1236_MK3) || + (btv->tuner_type == TUNER_PHILIPS_FM1256_IH3) || + tda9887) + request_module("tda9887"); if (btv->tuner_type != UNSET) request_module("tuner"); } diff --git a/trunk/drivers/media/video/bt8xx/bttvp.h b/trunk/drivers/media/video/bt8xx/bttvp.h index 311c4c541e01..d2956010f763 100644 --- a/trunk/drivers/media/video/bt8xx/bttvp.h +++ b/trunk/drivers/media/video/bt8xx/bttvp.h @@ -360,7 +360,7 @@ struct bttv { int mbox_csel; /* risc memory management data - - must acquire s_lock before changing these + - must aquire s_lock before changing these - only the irq handler is supported to touch top + bottom + vcurr */ struct btcx_riscmem main; struct bttv_buffer *screen; /* overlay */ diff --git a/trunk/drivers/media/video/compat_ioctl32.c b/trunk/drivers/media/video/compat_ioctl32.c index 353d02b67c33..840fe0177121 100644 --- a/trunk/drivers/media/video/compat_ioctl32.c +++ b/trunk/drivers/media/video/compat_ioctl32.c @@ -12,6 +12,7 @@ * ioctls. */ +#include #include #include #include diff --git a/trunk/drivers/media/video/cpia.c b/trunk/drivers/media/video/cpia.c index 3b31a0dd2f0c..95c5aceecc5b 100644 --- a/trunk/drivers/media/video/cpia.c +++ b/trunk/drivers/media/video/cpia.c @@ -26,6 +26,7 @@ /* define _CPIA_DEBUG_ for verbose debug output (see cpia.h) */ /* #define _CPIA_DEBUG_ 1 */ +#include #include #include diff --git a/trunk/drivers/media/video/cpia2/cpia2_v4l.c b/trunk/drivers/media/video/cpia2/cpia2_v4l.c index d09f49950f2a..d129db57fcd4 100644 --- a/trunk/drivers/media/video/cpia2/cpia2_v4l.c +++ b/trunk/drivers/media/video/cpia2/cpia2_v4l.c @@ -31,6 +31,7 @@ #include +#include #include #include diff --git a/trunk/drivers/media/video/cpia_pp.c b/trunk/drivers/media/video/cpia_pp.c index 41f4b8d17559..4c89bd395d3e 100644 --- a/trunk/drivers/media/video/cpia_pp.c +++ b/trunk/drivers/media/video/cpia_pp.c @@ -25,6 +25,7 @@ /* define _CPIA_DEBUG_ for verbose debug output (see cpia.h) */ /* #define _CPIA_DEBUG_ 1 */ +#include #include #include diff --git a/trunk/drivers/media/video/cx88/cx88-blackbird.c b/trunk/drivers/media/video/cx88/cx88-blackbird.c index 349632b48e93..4ff81582ec56 100644 --- a/trunk/drivers/media/video/cx88/cx88-blackbird.c +++ b/trunk/drivers/media/video/cx88/cx88-blackbird.c @@ -686,39 +686,6 @@ static struct videobuf_queue_ops blackbird_qops = { /* ------------------------------------------------------------------ */ -static const u32 *ctrl_classes[] = { - cx88_user_ctrls, - cx2341x_mpeg_ctrls, - NULL -}; - -static int blackbird_queryctrl(struct cx8802_dev *dev, struct v4l2_queryctrl *qctrl) -{ - qctrl->id = v4l2_ctrl_next(ctrl_classes, qctrl->id); - if (qctrl->id == 0) - return -EINVAL; - - /* Standard V4L2 controls */ - if (cx8800_ctrl_query(qctrl) == 0) - return 0; - - /* MPEG V4L2 controls */ - if (cx2341x_ctrl_query(&dev->params, qctrl)) - qctrl->flags |= V4L2_CTRL_FLAG_DISABLED; - return 0; -} - -static int blackbird_querymenu(struct cx8802_dev *dev, struct v4l2_querymenu *qmenu) -{ - struct v4l2_queryctrl qctrl; - - qctrl.id = qmenu->id; - blackbird_queryctrl(dev, &qctrl); - return v4l2_ctrl_query_menu(qmenu, &qctrl, cx2341x_ctrl_get_menu(qmenu->id)); -} - -/* ------------------------------------------------------------------ */ - static int mpeg_do_ioctl(struct inode *inode, struct file *file, unsigned int cmd, void *arg) { @@ -899,16 +866,6 @@ static int mpeg_do_ioctl(struct inode *inode, struct file *file, core->name); return 0; } - case VIDIOC_QUERYMENU: - return blackbird_querymenu(dev, arg); - case VIDIOC_QUERYCTRL: - { - struct v4l2_queryctrl *c = arg; - - if (blackbird_queryctrl(dev, c) == 0) - return 0; - return cx88_do_ioctl(inode, file, 0, dev->core, cmd, arg, mpeg_do_ioctl); - } default: return cx88_do_ioctl(inode, file, 0, dev->core, cmd, arg, mpeg_do_ioctl); diff --git a/trunk/drivers/media/video/cx88/cx88-cards.c b/trunk/drivers/media/video/cx88/cx88-cards.c index 14bd4863d157..f9d68f20dc88 100644 --- a/trunk/drivers/media/video/cx88/cx88-cards.c +++ b/trunk/drivers/media/video/cx88/cx88-cards.c @@ -1194,21 +1194,6 @@ struct cx88_board cx88_boards[] = { }}, .dvb = 1, }, - [CX88_BOARD_GENIATECH_DVBS] = { - .name = "Geniatech DVB-S", - .tuner_type = TUNER_ABSENT, - .radio_type = UNSET, - .tuner_addr = ADDR_UNSET, - .radio_addr = ADDR_UNSET, - .input = {{ - .type = CX88_VMUX_DVB, - .vmux = 0, - },{ - .type = CX88_VMUX_COMPOSITE1, - .vmux = 1, - }}, - .dvb = 1, - }, }; const unsigned int cx88_bcount = ARRAY_SIZE(cx88_boards); @@ -1454,10 +1439,6 @@ struct cx88_subid cx88_subids[] = { .subvendor = 0x18ac, .subdevice = 0xd800, /* FusionHDTV 3 Gold (original revision) */ .card = CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_Q, - },{ - .subvendor = 0x14f1, - .subdevice = 0x0084, - .card = CX88_BOARD_GENIATECH_DVBS, }, }; const unsigned int cx88_idcount = ARRAY_SIZE(cx88_subids); diff --git a/trunk/drivers/media/video/cx88/cx88-dvb.c b/trunk/drivers/media/video/cx88/cx88-dvb.c index afde3789d702..dce1feddd55d 100644 --- a/trunk/drivers/media/video/cx88/cx88-dvb.c +++ b/trunk/drivers/media/video/cx88/cx88-dvb.c @@ -496,26 +496,6 @@ static int kworld_dvbs_100_set_voltage(struct dvb_frontend* fe, fe_sec_voltage_t return 0; } -static int geniatech_dvbs_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage) -{ - struct cx8802_dev *dev= fe->dvb->priv; - struct cx88_core *core = dev->core; - - if (voltage == SEC_VOLTAGE_OFF) { - dprintk(1,"LNB Voltage OFF\n"); - cx_write(MO_GP0_IO, 0x0000efff); - } - - if (core->prev_set_voltage) - return core->prev_set_voltage(fe, voltage); - return 0; -} - -static struct cx24123_config geniatech_dvbs_config = { - .demod_address = 0x55, - .set_ts_params = cx24123_set_ts_param, -}; - static struct cx24123_config hauppauge_novas_config = { .demod_address = 0x55, .set_ts_params = cx24123_set_ts_param, @@ -780,14 +760,6 @@ static int dvb_register(struct cx8802_dev *dev) dev->dvb.frontend->ops.set_voltage = kworld_dvbs_100_set_voltage; } break; - case CX88_BOARD_GENIATECH_DVBS: - dev->dvb.frontend = cx24123_attach(&geniatech_dvbs_config, - &dev->core->i2c_adap); - if (dev->dvb.frontend) { - dev->core->prev_set_voltage = dev->dvb.frontend->ops.set_voltage; - dev->dvb.frontend->ops.set_voltage = geniatech_dvbs_set_voltage; - } - break; #endif default: printk("%s: The frontend of your DVB/ATSC card isn't supported yet\n", diff --git a/trunk/drivers/media/video/cx88/cx88-video.c b/trunk/drivers/media/video/cx88/cx88-video.c index c538d99ec9f6..8d5cf474b68e 100644 --- a/trunk/drivers/media/video/cx88/cx88-video.c +++ b/trunk/drivers/media/video/cx88/cx88-video.c @@ -327,51 +327,6 @@ static struct cx88_ctrl cx8800_ctls[] = { }; static const int CX8800_CTLS = ARRAY_SIZE(cx8800_ctls); -const u32 cx88_user_ctrls[] = { - V4L2_CID_USER_CLASS, - V4L2_CID_BRIGHTNESS, - V4L2_CID_CONTRAST, - V4L2_CID_SATURATION, - V4L2_CID_HUE, - V4L2_CID_AUDIO_VOLUME, - V4L2_CID_AUDIO_BALANCE, - V4L2_CID_AUDIO_MUTE, - 0 -}; -EXPORT_SYMBOL(cx88_user_ctrls); - -static const u32 *ctrl_classes[] = { - cx88_user_ctrls, - NULL -}; - -int cx8800_ctrl_query(struct v4l2_queryctrl *qctrl) -{ - int i; - - if (qctrl->id < V4L2_CID_BASE || - qctrl->id >= V4L2_CID_LASTP1) - return -EINVAL; - for (i = 0; i < CX8800_CTLS; i++) - if (cx8800_ctls[i].v.id == qctrl->id) - break; - if (i == CX8800_CTLS) { - *qctrl = no_ctl; - return 0; - } - *qctrl = cx8800_ctls[i].v; - return 0; -} -EXPORT_SYMBOL(cx8800_ctrl_query); - -static int cx88_queryctrl(struct v4l2_queryctrl *qctrl) -{ - qctrl->id = v4l2_ctrl_next(ctrl_classes, qctrl->id); - if (qctrl->id == 0) - return -EINVAL; - return cx8800_ctrl_query(qctrl); -} - /* ------------------------------------------------------------------- */ /* resource management */ @@ -1407,8 +1362,20 @@ int cx88_do_ioctl(struct inode *inode, struct file *file, int radio, case VIDIOC_QUERYCTRL: { struct v4l2_queryctrl *c = arg; + int i; - return cx88_queryctrl(c); + if (c->id < V4L2_CID_BASE || + c->id >= V4L2_CID_LASTP1) + return -EINVAL; + for (i = 0; i < CX8800_CTLS; i++) + if (cx8800_ctls[i].v.id == c->id) + break; + if (i == CX8800_CTLS) { + *c = no_ctl; + return 0; + } + *c = cx8800_ctls[i].v; + return 0; } case VIDIOC_G_CTRL: return get_control(core,arg); @@ -1926,6 +1893,8 @@ static int __devinit cx8800_initdev(struct pci_dev *pci_dev, /* load and configure helper modules */ if (TUNER_ABSENT != core->tuner_type) request_module("tuner"); + if (core->tda9887_conf) + request_module("tda9887"); /* register v4l devices */ dev->video_dev = cx88_vdev_init(core,dev->pci, diff --git a/trunk/drivers/media/video/cx88/cx88.h b/trunk/drivers/media/video/cx88/cx88.h index e7810955dd4f..9a9a0fc7a41a 100644 --- a/trunk/drivers/media/video/cx88/cx88.h +++ b/trunk/drivers/media/video/cx88/cx88.h @@ -196,7 +196,6 @@ extern struct sram_channel cx88_sram_channels[]; #define CX88_BOARD_PIXELVIEW_PLAYTV_P7000 49 #define CX88_BOARD_NPGTECH_REALTV_TOP10FM 50 #define CX88_BOARD_WINFAST_DTV2000H 51 -#define CX88_BOARD_GENIATECH_DVBS 52 enum cx88_itype { CX88_VMUX_COMPOSITE1 = 1, @@ -591,8 +590,6 @@ int cx8802_resume_common(struct pci_dev *pci_dev); extern int cx88_do_ioctl(struct inode *inode, struct file *file, int radio, struct cx88_core *core, unsigned int cmd, void *arg, v4l2_kioctl driver_ioctl); -extern const u32 cx88_user_ctrls[]; -extern int cx8800_ctrl_query(struct v4l2_queryctrl *qctrl); /* * Local variables: diff --git a/trunk/drivers/media/video/em28xx/em28xx-video.c b/trunk/drivers/media/video/em28xx/em28xx-video.c index 2a461dde480c..9286090817cd 100644 --- a/trunk/drivers/media/video/em28xx/em28xx-video.c +++ b/trunk/drivers/media/video/em28xx/em28xx-video.c @@ -1574,6 +1574,8 @@ static int em28xx_init_dev(struct em28xx **devhandle, struct usb_device *udev, request_module("tvp5150"); if (dev->has_tuner) request_module("tuner"); + if (dev->tda9887_conf) + request_module("tda9887"); #endif errCode = em28xx_config(dev); if (errCode) { diff --git a/trunk/drivers/media/video/meye.c b/trunk/drivers/media/video/meye.c index ddd62214bee5..f68ca7d9f531 100644 --- a/trunk/drivers/media/video/meye.c +++ b/trunk/drivers/media/video/meye.c @@ -26,6 +26,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/drivers/media/video/meye.h b/trunk/drivers/media/video/meye.h index ea107cb5c845..0d09a0e3803c 100644 --- a/trunk/drivers/media/video/meye.h +++ b/trunk/drivers/media/video/meye.h @@ -36,6 +36,7 @@ #define MEYE_DRIVER_VERSION __stringify(MEYE_DRIVER_MAJORVERSION) "." \ __stringify(MEYE_DRIVER_MINORVERSION) +#include #include #include #include diff --git a/trunk/drivers/media/video/msp3400-driver.h b/trunk/drivers/media/video/msp3400-driver.h index 545e4ac094f2..4e451049013d 100644 --- a/trunk/drivers/media/video/msp3400-driver.h +++ b/trunk/drivers/media/video/msp3400-driver.h @@ -90,8 +90,8 @@ struct msp_state { /* thread */ struct task_struct *kthread; wait_queue_head_t wq; - unsigned int restart:1; - unsigned int watch_stereo:1; + int restart:1; + int watch_stereo:1; }; /* msp3400-driver.c */ diff --git a/trunk/drivers/media/video/ov511.c b/trunk/drivers/media/video/ov511.c index 1b07a61c2ebb..a988df226aab 100644 --- a/trunk/drivers/media/video/ov511.c +++ b/trunk/drivers/media/video/ov511.c @@ -35,6 +35,7 @@ * Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/drivers/media/video/pvrusb2/Makefile b/trunk/drivers/media/video/pvrusb2/Makefile index 02e414210dac..fed603ad0a67 100644 --- a/trunk/drivers/media/video/pvrusb2/Makefile +++ b/trunk/drivers/media/video/pvrusb2/Makefile @@ -8,7 +8,7 @@ obj-pvrusb2-24xxx-$(CONFIG_VIDEO_PVRUSB2_24XXX) := \ pvrusb2-objs := pvrusb2-i2c-core.o pvrusb2-i2c-cmd-v4l2.o \ pvrusb2-audio.o pvrusb2-i2c-chips-v4l2.o \ pvrusb2-encoder.o pvrusb2-video-v4l.o \ - pvrusb2-eeprom.o pvrusb2-tuner.o \ + pvrusb2-eeprom.o pvrusb2-tuner.o pvrusb2-demod.o \ pvrusb2-main.o pvrusb2-hdw.o pvrusb2-v4l2.o \ pvrusb2-ctrl.o pvrusb2-std.o \ pvrusb2-context.o pvrusb2-io.o pvrusb2-ioread.o \ diff --git a/trunk/drivers/media/video/pvrusb2/pvrusb2-audio.c b/trunk/drivers/media/video/pvrusb2/pvrusb2-audio.c index 9846c464ec80..313d2dcf9e4b 100644 --- a/trunk/drivers/media/video/pvrusb2/pvrusb2-audio.c +++ b/trunk/drivers/media/video/pvrusb2/pvrusb2-audio.c @@ -145,8 +145,8 @@ static int get_audio_status(struct pvr2_msp3400_handler *ctxt) static void pvr2_msp3400_detach(struct pvr2_msp3400_handler *ctxt) { - ctxt->client->handler = NULL; - ctxt->hdw->audio_stat = NULL; + ctxt->client->handler = 0; + ctxt->hdw->audio_stat = 0; kfree(ctxt); } diff --git a/trunk/drivers/media/video/pvrusb2/pvrusb2-context.c b/trunk/drivers/media/video/pvrusb2/pvrusb2-context.c index f129f316d20e..40dc59871a45 100644 --- a/trunk/drivers/media/video/pvrusb2/pvrusb2-context.c +++ b/trunk/drivers/media/video/pvrusb2/pvrusb2-context.c @@ -77,7 +77,7 @@ struct pvr2_context *pvr2_context_create( const struct usb_device_id *devid, void (*setup_func)(struct pvr2_context *)) { - struct pvr2_context *mp = NULL; + struct pvr2_context *mp = 0; mp = kmalloc(sizeof(*mp),GFP_KERNEL); if (!mp) goto done; memset(mp,0,sizeof(*mp)); @@ -87,7 +87,7 @@ struct pvr2_context *pvr2_context_create( mp->hdw = pvr2_hdw_create(intf,devid); if (!mp->hdw) { pvr2_context_destroy(mp); - mp = NULL; + mp = 0; goto done; } @@ -145,7 +145,7 @@ void pvr2_channel_init(struct pvr2_channel *cp,struct pvr2_context *mp) { cp->hdw = mp->hdw; cp->mc_head = mp; - cp->mc_next = NULL; + cp->mc_next = 0; cp->mc_prev = mp->mc_last; if (mp->mc_last) { mp->mc_last->mc_next = cp; @@ -160,8 +160,8 @@ static void pvr2_channel_disclaim_stream(struct pvr2_channel *cp) { if (!cp->stream) return; pvr2_stream_kill(cp->stream->stream); - cp->stream->user = NULL; - cp->stream = NULL; + cp->stream->user = 0; + cp->stream = 0; } @@ -179,7 +179,7 @@ void pvr2_channel_done(struct pvr2_channel *cp) } else { mp->mc_first = cp->mc_next; } - cp->hdw = NULL; + cp->hdw = 0; } @@ -212,7 +212,7 @@ struct pvr2_ioread *pvr2_channel_create_mpeg_stream( { struct pvr2_ioread *cp; cp = pvr2_ioread_create(); - if (!cp) return NULL; + if (!cp) return 0; pvr2_ioread_setup(cp,sp->stream); pvr2_ioread_set_sync_key(cp,stream_sync_key,sizeof(stream_sync_key)); return cp; diff --git a/trunk/drivers/media/video/pvrusb2/pvrusb2-ctrl.c b/trunk/drivers/media/video/pvrusb2/pvrusb2-ctrl.c index fb6198f1df98..d5df9fbeba2f 100644 --- a/trunk/drivers/media/video/pvrusb2/pvrusb2-ctrl.c +++ b/trunk/drivers/media/video/pvrusb2/pvrusb2-ctrl.c @@ -158,7 +158,7 @@ int pvr2_ctrl_get_mask(struct pvr2_ctrl *cptr) /* Retrieve the control's name */ const char *pvr2_ctrl_get_name(struct pvr2_ctrl *cptr) { - if (!cptr) return NULL; + if (!cptr) return 0; return cptr->info->name; } @@ -166,7 +166,7 @@ const char *pvr2_ctrl_get_name(struct pvr2_ctrl *cptr) /* Retrieve the control's desc */ const char *pvr2_ctrl_get_desc(struct pvr2_ctrl *cptr) { - if (!cptr) return NULL; + if (!cptr) return 0; return cptr->info->desc; } @@ -488,7 +488,7 @@ int pvr2_ctrl_sym_to_value(struct pvr2_ctrl *cptr, LOCK_TAKE(cptr->hdw->big_lock); do { if (cptr->info->type == pvr2_ctl_int) { - ret = parse_token(ptr,len,valptr,NULL,0); + ret = parse_token(ptr,len,valptr,0,0); if ((ret >= 0) && ((*valptr < cptr->info->def.type_int.min_value) || (*valptr > cptr->info->def.type_int.max_value))) { diff --git a/trunk/drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.c b/trunk/drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.c index c80c26be6e4d..27eadaff75a0 100644 --- a/trunk/drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.c +++ b/trunk/drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.c @@ -139,8 +139,8 @@ static const struct pvr2_v4l_cx2584x_ops decoder_ops[] = { static void decoder_detach(struct pvr2_v4l_cx2584x *ctxt) { - ctxt->client->handler = NULL; - ctxt->hdw->decoder_ctrl = NULL; + ctxt->client->handler = 0; + ctxt->hdw->decoder_ctrl = 0; kfree(ctxt); } @@ -221,7 +221,7 @@ static unsigned int decoder_describe(struct pvr2_v4l_cx2584x *ctxt, static void decoder_reset(struct pvr2_v4l_cx2584x *ctxt) { int ret; - ret = pvr2_i2c_client_cmd(ctxt->client,VIDIOC_INT_RESET,NULL); + ret = pvr2_i2c_client_cmd(ctxt->client,VIDIOC_INT_RESET,0); pvr2_trace(PVR2_TRACE_CHIPS,"i2c cx25840 decoder_reset (ret=%d)",ret); } diff --git a/trunk/drivers/media/video/pvrusb2/pvrusb2-debugifc.c b/trunk/drivers/media/video/pvrusb2/pvrusb2-debugifc.c index f985f00d885a..586900e365ff 100644 --- a/trunk/drivers/media/video/pvrusb2/pvrusb2-debugifc.c +++ b/trunk/drivers/media/video/pvrusb2/pvrusb2-debugifc.c @@ -82,7 +82,7 @@ static unsigned int debugifc_isolate_word(const char *buf,unsigned int count, unsigned int wlen; unsigned int scnt; - wptr = NULL; + wptr = 0; wlen = 0; scnt = debugifc_count_whitespace(buf,count); consume_cnt += scnt; count -= scnt; buf += scnt; @@ -337,8 +337,8 @@ int pvr2_debugifc_print_status(struct pvr2_hdw *hdw, } -static int pvr2_debugifc_do1cmd(struct pvr2_hdw *hdw,const char *buf, - unsigned int count) +int pvr2_debugifc_do1cmd(struct pvr2_hdw *hdw,const char *buf, + unsigned int count) { const char *wptr; unsigned int wlen; diff --git a/trunk/drivers/media/video/pvrusb2/pvrusb2-demod.c b/trunk/drivers/media/video/pvrusb2/pvrusb2-demod.c new file mode 100644 index 000000000000..9686569a11f6 --- /dev/null +++ b/trunk/drivers/media/video/pvrusb2/pvrusb2-demod.c @@ -0,0 +1,126 @@ +/* + * + * $Id$ + * + * Copyright (C) 2005 Mike Isely + * Copyright (C) 2004 Aurelien Alleaume + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include "pvrusb2.h" +#include "pvrusb2-util.h" +#include "pvrusb2-demod.h" +#include "pvrusb2-hdw-internal.h" +#include "pvrusb2-debug.h" +#include +#include +#include + + +struct pvr2_demod_handler { + struct pvr2_hdw *hdw; + struct pvr2_i2c_client *client; + struct pvr2_i2c_handler i2c_handler; + int type_update_fl; +}; + + +static void set_config(struct pvr2_demod_handler *ctxt) +{ + struct pvr2_hdw *hdw = ctxt->hdw; + int cfg = 0; + + switch (hdw->tuner_type) { + case TUNER_PHILIPS_FM1216ME_MK3: + case TUNER_PHILIPS_FM1236_MK3: + cfg = TDA9887_PORT1_ACTIVE|TDA9887_PORT2_ACTIVE; + break; + default: + break; + } + pvr2_trace(PVR2_TRACE_CHIPS,"i2c demod set_config(0x%x)",cfg); + pvr2_i2c_client_cmd(ctxt->client,TDA9887_SET_CONFIG,&cfg); + ctxt->type_update_fl = 0; +} + + +static int demod_check(struct pvr2_demod_handler *ctxt) +{ + struct pvr2_hdw *hdw = ctxt->hdw; + if (hdw->tuner_updated) ctxt->type_update_fl = !0; + return ctxt->type_update_fl != 0; +} + + +static void demod_update(struct pvr2_demod_handler *ctxt) +{ + if (ctxt->type_update_fl) set_config(ctxt); +} + + +static void demod_detach(struct pvr2_demod_handler *ctxt) +{ + ctxt->client->handler = 0; + kfree(ctxt); +} + + +static unsigned int demod_describe(struct pvr2_demod_handler *ctxt,char *buf,unsigned int cnt) +{ + return scnprintf(buf,cnt,"handler: pvrusb2-demod"); +} + + +const static struct pvr2_i2c_handler_functions tuner_funcs = { + .detach = (void (*)(void *))demod_detach, + .check = (int (*)(void *))demod_check, + .update = (void (*)(void *))demod_update, + .describe = (unsigned int (*)(void *,char *,unsigned int))demod_describe, +}; + + +int pvr2_i2c_demod_setup(struct pvr2_hdw *hdw,struct pvr2_i2c_client *cp) +{ + struct pvr2_demod_handler *ctxt; + if (cp->handler) return 0; + + ctxt = kmalloc(sizeof(*ctxt),GFP_KERNEL); + if (!ctxt) return 0; + memset(ctxt,0,sizeof(*ctxt)); + + ctxt->i2c_handler.func_data = ctxt; + ctxt->i2c_handler.func_table = &tuner_funcs; + ctxt->type_update_fl = !0; + ctxt->client = cp; + ctxt->hdw = hdw; + cp->handler = &ctxt->i2c_handler; + pvr2_trace(PVR2_TRACE_CHIPS,"i2c 0x%x tda9887 V4L2 handler set up", + cp->client->addr); + return !0; +} + + + + +/* + Stuff for Emacs to see, in order to encourage consistent editing style: + *** Local Variables: *** + *** mode: c *** + *** fill-column: 70 *** + *** tab-width: 8 *** + *** c-basic-offset: 8 *** + *** End: *** + */ diff --git a/trunk/drivers/media/video/pvrusb2/pvrusb2-demod.h b/trunk/drivers/media/video/pvrusb2/pvrusb2-demod.h new file mode 100644 index 000000000000..4c4e40ffbf03 --- /dev/null +++ b/trunk/drivers/media/video/pvrusb2/pvrusb2-demod.h @@ -0,0 +1,38 @@ +/* + * + * $Id$ + * + * Copyright (C) 2005 Mike Isely + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +#ifndef __PVRUSB2_DEMOD_H +#define __PVRUSB2_DEMOD_H + +#include "pvrusb2-i2c-core.h" + +int pvr2_i2c_demod_setup(struct pvr2_hdw *,struct pvr2_i2c_client *); + +#endif /* __PVRUSB2_DEMOD_H */ + +/* + Stuff for Emacs to see, in order to encourage consistent editing style: + *** Local Variables: *** + *** mode: c *** + *** fill-column: 70 *** + *** tab-width: 8 *** + *** c-basic-offset: 8 *** + *** End: *** + */ diff --git a/trunk/drivers/media/video/pvrusb2/pvrusb2-eeprom.c b/trunk/drivers/media/video/pvrusb2/pvrusb2-eeprom.c index 6cff8e75f426..94d383ff9889 100644 --- a/trunk/drivers/media/video/pvrusb2/pvrusb2-eeprom.c +++ b/trunk/drivers/media/video/pvrusb2/pvrusb2-eeprom.c @@ -58,7 +58,7 @@ static u8 *pvr2_eeprom_fetch(struct pvr2_hdw *hdw) pvr2_trace(PVR2_TRACE_ERROR_LEGS, "Failed to allocate memory" " required to read eeprom"); - return NULL; + return 0; } trace_eeprom("Value for eeprom addr from controller was 0x%x", @@ -108,7 +108,7 @@ static u8 *pvr2_eeprom_fetch(struct pvr2_hdw *hdw) pvr2_trace(PVR2_TRACE_ERROR_LEGS, "eeprom fetch set offs err=%d",ret); kfree(eeprom); - return NULL; + return 0; } } return eeprom; diff --git a/trunk/drivers/media/video/pvrusb2/pvrusb2-encoder.c b/trunk/drivers/media/video/pvrusb2/pvrusb2-encoder.c index 18a7073501c6..2cc31695b435 100644 --- a/trunk/drivers/media/video/pvrusb2/pvrusb2-encoder.c +++ b/trunk/drivers/media/video/pvrusb2/pvrusb2-encoder.c @@ -65,7 +65,7 @@ static int pvr2_encoder_write_words(struct pvr2_hdw *hdw, } ret = pvr2_send_request(hdw, hdw->cmd_buffer,1+(chunkCnt*7), - NULL,0); + 0,0); if (ret) return ret; data += chunkCnt; dlen -= chunkCnt; @@ -322,7 +322,7 @@ int pvr2_encoder_configure(struct pvr2_hdw *hdw) } ret = cx2341x_update(hdw,pvr2_encoder_cmd, - (hdw->enc_cur_valid ? &hdw->enc_cur_state : NULL), + (hdw->enc_cur_valid ? &hdw->enc_cur_state : 0), &hdw->enc_ctl_state); if (ret) { pvr2_trace(PVR2_TRACE_ERROR_LEGS, diff --git a/trunk/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h b/trunk/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h index 0d6dc33ca320..ba2afbfe32c5 100644 --- a/trunk/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h +++ b/trunk/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h @@ -354,6 +354,23 @@ struct pvr2_hdw { unsigned int control_cnt; }; +int pvr2_hdw_commit_ctl_internal(struct pvr2_hdw *hdw); + +unsigned int pvr2_hdw_get_signal_status_internal(struct pvr2_hdw *); + +void pvr2_hdw_subsys_bit_chg_no_lock(struct pvr2_hdw *hdw, + unsigned long msk,unsigned long val); +void pvr2_hdw_subsys_stream_bit_chg_no_lock(struct pvr2_hdw *hdw, + unsigned long msk, + unsigned long val); + +void pvr2_hdw_internal_find_stdenum(struct pvr2_hdw *hdw); +void pvr2_hdw_internal_set_std_avail(struct pvr2_hdw *hdw); + +int pvr2_i2c_basic_op(struct pvr2_hdw *,u8 i2c_addr, + u8 *wdata,u16 wlen, + u8 *rdata,u16 rlen); + #endif /* __PVRUSB2_HDW_INTERNAL_H */ /* diff --git a/trunk/drivers/media/video/pvrusb2/pvrusb2-hdw.c b/trunk/drivers/media/video/pvrusb2/pvrusb2-hdw.c index 9b48abcf6089..643c471375da 100644 --- a/trunk/drivers/media/video/pvrusb2/pvrusb2-hdw.c +++ b/trunk/drivers/media/video/pvrusb2/pvrusb2-hdw.c @@ -63,6 +63,7 @@ struct pvr2_string_table { static const char *pvr2_client_24xxx[] = { "cx25840", "tuner", + "tda9887", "wm8775", }; #endif @@ -72,6 +73,7 @@ static const char *pvr2_client_29xxx[] = { "msp3400", "saa7115", "tuner", + "tda9887", }; static struct pvr2_string_table pvr2_client_lists[] = { @@ -87,8 +89,8 @@ static struct pvr2_string_table pvr2_client_lists[] = { #endif }; -static struct pvr2_hdw *unit_pointers[PVR_NUM] = {[ 0 ... PVR_NUM-1 ] = NULL}; -static DECLARE_MUTEX(pvr2_unit_sem); +static struct pvr2_hdw *unit_pointers[PVR_NUM] = {[ 0 ... PVR_NUM-1 ] = 0}; +DECLARE_MUTEX(pvr2_unit_sem); static int ctlchg = 0; static int initusbreset = 1; @@ -261,25 +263,6 @@ static const char *control_values_subsystem[] = { [PVR2_SUBSYS_B_ENC_RUN] = "enc_run", }; -static int pvr2_hdw_cmd_usbstream(struct pvr2_hdw *hdw,int runFl); -static int pvr2_hdw_commit_ctl_internal(struct pvr2_hdw *hdw); -static int pvr2_hdw_get_eeprom_addr(struct pvr2_hdw *hdw); -static unsigned int pvr2_hdw_get_signal_status_internal(struct pvr2_hdw *hdw); -static void pvr2_hdw_internal_find_stdenum(struct pvr2_hdw *hdw); -static void pvr2_hdw_internal_set_std_avail(struct pvr2_hdw *hdw); -static void pvr2_hdw_render_useless_unlocked(struct pvr2_hdw *hdw); -static void pvr2_hdw_subsys_bit_chg_no_lock(struct pvr2_hdw *hdw, - unsigned long msk, - unsigned long val); -static void pvr2_hdw_subsys_stream_bit_chg_no_lock(struct pvr2_hdw *hdw, - unsigned long msk, - unsigned long val); -static int pvr2_send_request_ex(struct pvr2_hdw *hdw, - unsigned int timeout,int probe_fl, - void *write_data,unsigned int write_len, - void *read_data,unsigned int read_len); -static int pvr2_write_u16(struct pvr2_hdw *hdw, u16 data, int res); -static int pvr2_write_u8(struct pvr2_hdw *hdw, u8 data, int res); static int ctrl_channelfreq_get(struct pvr2_ctrl *cptr,int *vp) { @@ -422,7 +405,7 @@ static unsigned int ctrl_cx2341x_getv4lflags(struct pvr2_ctrl *cptr) info = (struct pvr2_ctl_info *)(cptr->info); if (qctrl.flags & V4L2_CTRL_FLAG_READ_ONLY) { if (info->set_value) { - info->set_value = NULL; + info->set_value = 0; } } else { if (!(info->set_value)) { @@ -853,6 +836,14 @@ unsigned long pvr2_hdw_get_sn(struct pvr2_hdw *hdw) } +struct pvr2_hdw *pvr2_hdw_find(int unit_number) +{ + if (unit_number < 0) return 0; + if (unit_number >= PVR_NUM) return 0; + return unit_pointers[unit_number]; +} + + int pvr2_hdw_get_unit_number(struct pvr2_hdw *hdw) { return hdw->unit_number; @@ -926,9 +917,9 @@ static int pvr2_locate_firmware(struct pvr2_hdw *hdw, * is not suitable for an usb transaction. * */ -static int pvr2_upload_firmware1(struct pvr2_hdw *hdw) +int pvr2_upload_firmware1(struct pvr2_hdw *hdw) { - const struct firmware *fw_entry = NULL; + const struct firmware *fw_entry = 0; void *fw_ptr; unsigned int pipe; int ret; @@ -1024,7 +1015,7 @@ static int pvr2_upload_firmware1(struct pvr2_hdw *hdw) int pvr2_upload_firmware2(struct pvr2_hdw *hdw) { - const struct firmware *fw_entry = NULL; + const struct firmware *fw_entry = 0; void *fw_ptr; unsigned int pipe, fw_len, fw_done; int actual_length; @@ -1175,9 +1166,8 @@ int pvr2_upload_firmware2(struct pvr2_hdw *hdw) reconfigure and start over. */ -static void pvr2_hdw_subsys_bit_chg_no_lock(struct pvr2_hdw *hdw, - unsigned long msk, - unsigned long val) +void pvr2_hdw_subsys_bit_chg_no_lock(struct pvr2_hdw *hdw, + unsigned long msk,unsigned long val) { unsigned long nmsk; unsigned long vmsk; @@ -1328,6 +1318,18 @@ void pvr2_hdw_subsys_bit_chg(struct pvr2_hdw *hdw, } +void pvr2_hdw_subsys_bit_set(struct pvr2_hdw *hdw,unsigned long msk) +{ + pvr2_hdw_subsys_bit_chg(hdw,msk,msk); +} + + +void pvr2_hdw_subsys_bit_clr(struct pvr2_hdw *hdw,unsigned long msk) +{ + pvr2_hdw_subsys_bit_chg(hdw,msk,0); +} + + unsigned long pvr2_hdw_subsys_get(struct pvr2_hdw *hdw) { return hdw->subsys_enabled_mask; @@ -1340,9 +1342,9 @@ unsigned long pvr2_hdw_subsys_stream_get(struct pvr2_hdw *hdw) } -static void pvr2_hdw_subsys_stream_bit_chg_no_lock(struct pvr2_hdw *hdw, - unsigned long msk, - unsigned long val) +void pvr2_hdw_subsys_stream_bit_chg_no_lock(struct pvr2_hdw *hdw, + unsigned long msk, + unsigned long val) { unsigned long val2; msk &= PVR2_SUBSYS_ALL; @@ -1364,7 +1366,7 @@ void pvr2_hdw_subsys_stream_bit_chg(struct pvr2_hdw *hdw, } -static int pvr2_hdw_set_streaming_no_lock(struct pvr2_hdw *hdw,int enableFl) +int pvr2_hdw_set_streaming_no_lock(struct pvr2_hdw *hdw,int enableFl) { if ((!enableFl) == !(hdw->flag_streaming_enabled)) return 0; if (enableFl) { @@ -1398,8 +1400,8 @@ int pvr2_hdw_set_streaming(struct pvr2_hdw *hdw,int enable_flag) } -static int pvr2_hdw_set_stream_type_no_lock(struct pvr2_hdw *hdw, - enum pvr2_config config) +int pvr2_hdw_set_stream_type_no_lock(struct pvr2_hdw *hdw, + enum pvr2_config config) { unsigned long sm = hdw->subsys_enabled_mask; if (!hdw->flag_ok) return -EIO; @@ -1739,7 +1741,7 @@ struct pvr2_hdw *pvr2_hdw_create(struct usb_interface *intf, sizeof(pvr2_device_names)/sizeof(pvr2_device_names[0])) { pvr2_trace(PVR2_TRACE_ERROR_LEGS, "Bogus device type of %u reported",hdw_type); - return NULL; + return 0; } hdw = kmalloc(sizeof(*hdw),GFP_KERNEL); @@ -1920,38 +1922,38 @@ struct pvr2_hdw *pvr2_hdw_create(struct usb_interface *intf, if (hdw->mpeg_ctrl_info) kfree(hdw->mpeg_ctrl_info); kfree(hdw); } - return NULL; + return 0; } /* Remove _all_ associations between this driver and the underlying USB layer. */ -static void pvr2_hdw_remove_usb_stuff(struct pvr2_hdw *hdw) +void pvr2_hdw_remove_usb_stuff(struct pvr2_hdw *hdw) { if (hdw->flag_disconnected) return; pvr2_trace(PVR2_TRACE_INIT,"pvr2_hdw_remove_usb_stuff: hdw=%p",hdw); if (hdw->ctl_read_urb) { usb_kill_urb(hdw->ctl_read_urb); usb_free_urb(hdw->ctl_read_urb); - hdw->ctl_read_urb = NULL; + hdw->ctl_read_urb = 0; } if (hdw->ctl_write_urb) { usb_kill_urb(hdw->ctl_write_urb); usb_free_urb(hdw->ctl_write_urb); - hdw->ctl_write_urb = NULL; + hdw->ctl_write_urb = 0; } if (hdw->ctl_read_buffer) { kfree(hdw->ctl_read_buffer); - hdw->ctl_read_buffer = NULL; + hdw->ctl_read_buffer = 0; } if (hdw->ctl_write_buffer) { kfree(hdw->ctl_write_buffer); - hdw->ctl_write_buffer = NULL; + hdw->ctl_write_buffer = 0; } pvr2_hdw_render_useless_unlocked(hdw); hdw->flag_disconnected = !0; - hdw->usb_dev = NULL; - hdw->usb_intf = NULL; + hdw->usb_dev = 0; + hdw->usb_intf = 0; } @@ -1961,11 +1963,11 @@ void pvr2_hdw_destroy(struct pvr2_hdw *hdw) pvr2_trace(PVR2_TRACE_INIT,"pvr2_hdw_destroy: hdw=%p",hdw); if (hdw->fw_buffer) { kfree(hdw->fw_buffer); - hdw->fw_buffer = NULL; + hdw->fw_buffer = 0; } if (hdw->vid_stream) { pvr2_stream_destroy(hdw->vid_stream); - hdw->vid_stream = NULL; + hdw->vid_stream = 0; } if (hdw->audio_stat) { hdw->audio_stat->detach(hdw->audio_stat->ctxt); @@ -1979,7 +1981,7 @@ void pvr2_hdw_destroy(struct pvr2_hdw *hdw) if ((hdw->unit_number >= 0) && (hdw->unit_number < PVR_NUM) && (unit_pointers[hdw->unit_number] == hdw)) { - unit_pointers[hdw->unit_number] = NULL; + unit_pointers[hdw->unit_number] = 0; } } while (0); up(&pvr2_unit_sem); if (hdw->controls) kfree(hdw->controls); @@ -2016,7 +2018,7 @@ void pvr2_hdw_disconnect(struct pvr2_hdw *hdw) // Attempt to autoselect an appropriate value for std_enum_cur given // whatever is currently in std_mask_cur -static void pvr2_hdw_internal_find_stdenum(struct pvr2_hdw *hdw) +void pvr2_hdw_internal_find_stdenum(struct pvr2_hdw *hdw) { unsigned int idx; for (idx = 1; idx < hdw->std_enum_cnt; idx++) { @@ -2031,7 +2033,7 @@ static void pvr2_hdw_internal_find_stdenum(struct pvr2_hdw *hdw) // Calculate correct set of enumerated standards based on currently known // set of available standards bits. -static void pvr2_hdw_internal_set_std_avail(struct pvr2_hdw *hdw) +void pvr2_hdw_internal_set_std_avail(struct pvr2_hdw *hdw) { struct v4l2_standard *newstd; unsigned int std_cnt; @@ -2041,12 +2043,12 @@ static void pvr2_hdw_internal_set_std_avail(struct pvr2_hdw *hdw) if (hdw->std_defs) { kfree(hdw->std_defs); - hdw->std_defs = NULL; + hdw->std_defs = 0; } hdw->std_enum_cnt = 0; if (hdw->std_enum_names) { kfree(hdw->std_enum_names); - hdw->std_enum_names = NULL; + hdw->std_enum_names = 0; } if (!std_cnt) { @@ -2097,7 +2099,7 @@ unsigned int pvr2_hdw_get_ctrl_count(struct pvr2_hdw *hdw) struct pvr2_ctrl *pvr2_hdw_get_ctrl_by_index(struct pvr2_hdw *hdw, unsigned int idx) { - if (idx >= hdw->control_cnt) return NULL; + if (idx >= hdw->control_cnt) return 0; return hdw->controls + idx; } @@ -2116,7 +2118,7 @@ struct pvr2_ctrl *pvr2_hdw_get_ctrl_by_id(struct pvr2_hdw *hdw, i = cptr->info->internal_id; if (i && (i == ctl_id)) return cptr; } - return NULL; + return 0; } @@ -2133,7 +2135,7 @@ struct pvr2_ctrl *pvr2_hdw_get_ctrl_v4l(struct pvr2_hdw *hdw,unsigned int ctl_id i = cptr->info->v4l_id; if (i && (i == ctl_id)) return cptr; } - return NULL; + return 0; } @@ -2147,7 +2149,7 @@ struct pvr2_ctrl *pvr2_hdw_get_ctrl_nextv4l(struct pvr2_hdw *hdw, int i; /* This could be made a lot more efficient, but for now... */ - cp2 = NULL; + cp2 = 0; for (idx = 0; idx < hdw->control_cnt; idx++) { cptr = hdw->controls + idx; i = cptr->info->v4l_id; @@ -2157,7 +2159,7 @@ struct pvr2_ctrl *pvr2_hdw_get_ctrl_nextv4l(struct pvr2_hdw *hdw, cp2 = cptr; } return cp2; - return NULL; + return 0; } @@ -2180,7 +2182,7 @@ static const char *get_ctrl_typename(enum pvr2_ctl_type tp) state(s) back to their previous value before this function was called. Thus we can automatically reconfigure affected pieces of the driver as controls are changed. */ -static int pvr2_hdw_commit_ctl_internal(struct pvr2_hdw *hdw) +int pvr2_hdw_commit_ctl_internal(struct pvr2_hdw *hdw) { unsigned long saved_subsys_mask = hdw->subsys_enabled_mask; unsigned long stale_subsys_mask = 0; @@ -2319,6 +2321,14 @@ void pvr2_hdw_poll_trigger_unlocked(struct pvr2_hdw *hdw) } +void pvr2_hdw_poll_trigger(struct pvr2_hdw *hdw) +{ + LOCK_TAKE(hdw->big_lock); do { + pvr2_hdw_poll_trigger_unlocked(hdw); + } while (0); LOCK_GIVE(hdw->big_lock); +} + + /* Return name for this driver instance */ const char *pvr2_hdw_get_driver_name(struct pvr2_hdw *hdw) { @@ -2327,7 +2337,7 @@ const char *pvr2_hdw_get_driver_name(struct pvr2_hdw *hdw) /* Return bit mask indicating signal status */ -static unsigned int pvr2_hdw_get_signal_status_internal(struct pvr2_hdw *hdw) +unsigned int pvr2_hdw_get_signal_status_internal(struct pvr2_hdw *hdw) { unsigned int msk = 0; switch (hdw->input_val) { @@ -2414,7 +2424,7 @@ void pvr2_hdw_cpufw_set_enabled(struct pvr2_hdw *hdw, int enable_flag) pvr2_trace(PVR2_TRACE_FIRMWARE, "Cleaning up after CPU firmware fetch"); kfree(hdw->fw_buffer); - hdw->fw_buffer = NULL; + hdw->fw_buffer = 0; hdw->fw_size = 0; /* Now release the CPU. It will disconnect and reconnect later. */ @@ -2509,6 +2519,22 @@ void pvr2_hdw_v4l_store_minor_number(struct pvr2_hdw *hdw,int v) } +void pvr2_reset_ctl_endpoints(struct pvr2_hdw *hdw) +{ + if (!hdw->usb_dev) return; + usb_settoggle(hdw->usb_dev, PVR2_CTL_WRITE_ENDPOINT & 0xf, + !(PVR2_CTL_WRITE_ENDPOINT & USB_DIR_IN), 0); + usb_settoggle(hdw->usb_dev, PVR2_CTL_READ_ENDPOINT & 0xf, + !(PVR2_CTL_READ_ENDPOINT & USB_DIR_IN), 0); + usb_clear_halt(hdw->usb_dev, + usb_rcvbulkpipe(hdw->usb_dev, + PVR2_CTL_READ_ENDPOINT & 0x7f)); + usb_clear_halt(hdw->usb_dev, + usb_sndbulkpipe(hdw->usb_dev, + PVR2_CTL_WRITE_ENDPOINT & 0x7f)); +} + + static void pvr2_ctl_write_complete(struct urb *urb, struct pt_regs *regs) { struct pvr2_hdw *hdw = urb->context; @@ -2542,10 +2568,10 @@ static void pvr2_ctl_timeout(unsigned long data) } -static int pvr2_send_request_ex(struct pvr2_hdw *hdw, - unsigned int timeout,int probe_fl, - void *write_data,unsigned int write_len, - void *read_data,unsigned int read_len) +int pvr2_send_request_ex(struct pvr2_hdw *hdw, + unsigned int timeout,int probe_fl, + void *write_data,unsigned int write_len, + void *read_data,unsigned int read_len) { unsigned int idx; int status = 0; @@ -2800,7 +2826,7 @@ int pvr2_write_register(struct pvr2_hdw *hdw, u16 reg, u32 data) } -static int pvr2_read_register(struct pvr2_hdw *hdw, u16 reg, u32 *data) +int pvr2_read_register(struct pvr2_hdw *hdw, u16 reg, u32 *data) { int ret = 0; @@ -2824,7 +2850,7 @@ static int pvr2_read_register(struct pvr2_hdw *hdw, u16 reg, u32 *data) } -static int pvr2_write_u16(struct pvr2_hdw *hdw, u16 data, int res) +int pvr2_write_u16(struct pvr2_hdw *hdw, u16 data, int res) { int ret; @@ -2841,7 +2867,7 @@ static int pvr2_write_u16(struct pvr2_hdw *hdw, u16 data, int res) } -static int pvr2_write_u8(struct pvr2_hdw *hdw, u8 data, int res) +int pvr2_write_u8(struct pvr2_hdw *hdw, u8 data, int res) { int ret; @@ -2857,13 +2883,13 @@ static int pvr2_write_u8(struct pvr2_hdw *hdw, u8 data, int res) } -static void pvr2_hdw_render_useless_unlocked(struct pvr2_hdw *hdw) +void pvr2_hdw_render_useless_unlocked(struct pvr2_hdw *hdw) { if (!hdw->flag_ok) return; pvr2_trace(PVR2_TRACE_INIT,"render_useless"); hdw->flag_ok = 0; if (hdw->vid_stream) { - pvr2_stream_setup(hdw->vid_stream,NULL,0,0); + pvr2_stream_setup(hdw->vid_stream,0,0,0); } hdw->flag_streaming_enabled = 0; hdw->subsys_enabled_mask = 0; @@ -2882,7 +2908,7 @@ void pvr2_hdw_device_reset(struct pvr2_hdw *hdw) { int ret; pvr2_trace(PVR2_TRACE_INIT,"Performing a device reset..."); - ret = usb_lock_device_for_reset(hdw->usb_dev,NULL); + ret = usb_lock_device_for_reset(hdw->usb_dev,0); if (ret == 1) { ret = usb_reset_device(hdw->usb_dev); usb_unlock_device(hdw->usb_dev); @@ -2931,7 +2957,7 @@ int pvr2_hdw_cmd_deep_reset(struct pvr2_hdw *hdw) pvr2_trace(PVR2_TRACE_INIT,"Requesting uproc hard reset"); hdw->flag_ok = !0; hdw->cmd_buffer[0] = 0xdd; - status = pvr2_send_request(hdw,hdw->cmd_buffer,1,NULL,0); + status = pvr2_send_request(hdw,hdw->cmd_buffer,1,0,0); } while (0); LOCK_GIVE(hdw->ctl_lock); return status; } @@ -2943,7 +2969,7 @@ int pvr2_hdw_cmd_powerup(struct pvr2_hdw *hdw) LOCK_TAKE(hdw->ctl_lock); do { pvr2_trace(PVR2_TRACE_INIT,"Requesting powerup"); hdw->cmd_buffer[0] = 0xde; - status = pvr2_send_request(hdw,hdw->cmd_buffer,1,NULL,0); + status = pvr2_send_request(hdw,hdw->cmd_buffer,1,0,0); } while (0); LOCK_GIVE(hdw->ctl_lock); return status; } @@ -2970,12 +2996,12 @@ int pvr2_hdw_cmd_decoder_reset(struct pvr2_hdw *hdw) } -static int pvr2_hdw_cmd_usbstream(struct pvr2_hdw *hdw,int runFl) +int pvr2_hdw_cmd_usbstream(struct pvr2_hdw *hdw,int runFl) { int status; LOCK_TAKE(hdw->ctl_lock); do { hdw->cmd_buffer[0] = (runFl ? 0x36 : 0x37); - status = pvr2_send_request(hdw,hdw->cmd_buffer,1,NULL,0); + status = pvr2_send_request(hdw,hdw->cmd_buffer,1,0,0); } while (0); LOCK_GIVE(hdw->ctl_lock); if (!status) { hdw->subsys_enabled_mask = @@ -3068,7 +3094,7 @@ int pvr2_hdw_gpio_chg_out(struct pvr2_hdw *hdw,u32 msk,u32 val) } -static int pvr2_hdw_get_eeprom_addr(struct pvr2_hdw *hdw) +int pvr2_hdw_get_eeprom_addr(struct pvr2_hdw *hdw) { int result; LOCK_TAKE(hdw->ctl_lock); do { diff --git a/trunk/drivers/media/video/pvrusb2/pvrusb2-hdw.h b/trunk/drivers/media/video/pvrusb2/pvrusb2-hdw.h index fd931b5da490..63f529154431 100644 --- a/trunk/drivers/media/video/pvrusb2/pvrusb2-hdw.h +++ b/trunk/drivers/media/video/pvrusb2/pvrusb2-hdw.h @@ -91,6 +91,7 @@ struct pvr2_hdw *pvr2_hdw_create(struct usb_interface *intf, void pvr2_hdw_poll(struct pvr2_hdw *); /* Trigger a poll to take place later at a convenient time */ +void pvr2_hdw_poll_trigger(struct pvr2_hdw *); void pvr2_hdw_poll_trigger_unlocked(struct pvr2_hdw *); /* Register a callback used to trigger a future poll */ @@ -98,6 +99,9 @@ void pvr2_hdw_setup_poll_trigger(struct pvr2_hdw *, void (*func)(void *), void *data); +/* Get pointer to structure given unit number */ +struct pvr2_hdw *pvr2_hdw_find(int unit_number); + /* Destroy hardware interaction structure */ void pvr2_hdw_destroy(struct pvr2_hdw *); @@ -176,6 +180,12 @@ int pvr2_hdw_get_stdenum_value(struct pvr2_hdw *hdw,struct v4l2_standard *std, void pvr2_hdw_subsys_bit_chg(struct pvr2_hdw *hdw, unsigned long msk,unsigned long val); +/* Shortcut for pvr2_hdw_subsys_bit_chg(hdw,msk,msk) */ +void pvr2_hdw_subsys_bit_set(struct pvr2_hdw *hdw,unsigned long msk); + +/* Shortcut for pvr2_hdw_subsys_bit_chg(hdw,msk,0) */ +void pvr2_hdw_subsys_bit_clr(struct pvr2_hdw *hdw,unsigned long msk); + /* Retrieve mask indicating which pieces of hardware are currently enabled / configured. */ unsigned long pvr2_hdw_subsys_get(struct pvr2_hdw *); @@ -215,18 +225,34 @@ void pvr2_hdw_v4l_store_minor_number(struct pvr2_hdw *,int); /* The following entry points are all lower level things you normally don't want to worry about. */ +/* Attempt to recover from a USB foul-up (in practice I find that if you + have to do this, then it's already too late). */ +void pvr2_reset_ctl_endpoints(struct pvr2_hdw *hdw); + /* Issue a command and get a response from the device. LOTS of higher level stuff is built on this. */ int pvr2_send_request(struct pvr2_hdw *, void *write_ptr,unsigned int write_len, void *read_ptr,unsigned int read_len); +/* Issue a command and get a response from the device. This extended + version includes a probe flag (which if set means that device errors + should not be logged or treated as fatal) and a timeout in jiffies. + This can be used to non-lethally probe the health of endpoint 1. */ +int pvr2_send_request_ex(struct pvr2_hdw *,unsigned int timeout,int probe_fl, + void *write_ptr,unsigned int write_len, + void *read_ptr,unsigned int read_len); + /* Slightly higher level device communication functions. */ int pvr2_write_register(struct pvr2_hdw *, u16, u32); +int pvr2_read_register(struct pvr2_hdw *, u16, u32 *); +int pvr2_write_u16(struct pvr2_hdw *, u16, int); +int pvr2_write_u8(struct pvr2_hdw *, u8, int); /* Call if for any reason we can't talk to the hardware anymore - this will cause the driver to stop flailing on the device. */ void pvr2_hdw_render_useless(struct pvr2_hdw *); +void pvr2_hdw_render_useless_unlocked(struct pvr2_hdw *); /* Set / clear 8051's reset bit */ void pvr2_hdw_cpureset_assert(struct pvr2_hdw *,int); @@ -245,6 +271,12 @@ int pvr2_hdw_cmd_powerup(struct pvr2_hdw *); /* Order decoder to reset */ int pvr2_hdw_cmd_decoder_reset(struct pvr2_hdw *); +/* Stop / start video stream transport */ +int pvr2_hdw_cmd_usbstream(struct pvr2_hdw *hdw,int runFl); + +/* Find I2C address of eeprom */ +int pvr2_hdw_get_eeprom_addr(struct pvr2_hdw *); + /* Direct manipulation of GPIO bits */ int pvr2_hdw_gpio_get_dir(struct pvr2_hdw *hdw,u32 *); int pvr2_hdw_gpio_get_out(struct pvr2_hdw *hdw,u32 *); diff --git a/trunk/drivers/media/video/pvrusb2/pvrusb2-i2c-chips-v4l2.c b/trunk/drivers/media/video/pvrusb2/pvrusb2-i2c-chips-v4l2.c index fbe6039aeb6a..1dd4f6249b99 100644 --- a/trunk/drivers/media/video/pvrusb2/pvrusb2-i2c-chips-v4l2.c +++ b/trunk/drivers/media/video/pvrusb2/pvrusb2-i2c-chips-v4l2.c @@ -25,6 +25,7 @@ #include "pvrusb2-i2c-cmd-v4l2.h" #include "pvrusb2-audio.h" #include "pvrusb2-tuner.h" +#include "pvrusb2-demod.h" #include "pvrusb2-video-v4l.h" #ifdef CONFIG_VIDEO_PVRUSB2_24XXX #include "pvrusb2-cx2584x-v4l.h" @@ -88,6 +89,11 @@ void pvr2_i2c_probe(struct pvr2_hdw *hdw,struct pvr2_i2c_client *cp) return; } } + if (id == I2C_DRIVERID_TDA9887) { + if (pvr2_i2c_demod_setup(hdw,cp)) { + return; + } + } } diff --git a/trunk/drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.c b/trunk/drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.c index 8a9933dec912..9f81aff2b38a 100644 --- a/trunk/drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.c +++ b/trunk/drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.c @@ -196,7 +196,7 @@ const struct pvr2_i2c_op pvr2_i2c_op_v4l2_size = { static void do_log(struct pvr2_hdw *hdw) { pvr2_trace(PVR2_TRACE_CHIPS,"i2c v4l2 do_log()"); - pvr2_i2c_core_cmd(hdw,VIDIOC_LOG_STATUS,NULL); + pvr2_i2c_core_cmd(hdw,VIDIOC_LOG_STATUS,0); } @@ -217,7 +217,7 @@ const struct pvr2_i2c_op pvr2_i2c_op_v4l2_log = { void pvr2_v4l2_cmd_stream(struct pvr2_i2c_client *cp,int fl) { pvr2_i2c_client_cmd(cp, - (fl ? VIDIOC_STREAMON : VIDIOC_STREAMOFF),NULL); + (fl ? VIDIOC_STREAMON : VIDIOC_STREAMOFF),0); } diff --git a/trunk/drivers/media/video/pvrusb2/pvrusb2-i2c-core.c b/trunk/drivers/media/video/pvrusb2/pvrusb2-i2c-core.c index 7fca47982277..c8d0bdee3ff1 100644 --- a/trunk/drivers/media/video/pvrusb2/pvrusb2-i2c-core.c +++ b/trunk/drivers/media/video/pvrusb2/pvrusb2-i2c-core.c @@ -37,10 +37,6 @@ static unsigned int i2c_scan = 0; module_param(i2c_scan, int, S_IRUGO|S_IWUSR); MODULE_PARM_DESC(i2c_scan,"scan i2c bus at insmod time"); -static unsigned int pvr2_i2c_client_describe(struct pvr2_i2c_client *cp, - unsigned int detail, - char *buf,unsigned int maxlen); - static int pvr2_i2c_write(struct pvr2_hdw *hdw, /* Context */ u8 i2c_addr, /* I2C address we're talking to */ u8 *data, /* Data to write */ @@ -169,12 +165,12 @@ static int pvr2_i2c_read(struct pvr2_hdw *hdw, /* Context */ /* This is the common low level entry point for doing I2C operations to the hardware. */ -static int pvr2_i2c_basic_op(struct pvr2_hdw *hdw, - u8 i2c_addr, - u8 *wdata, - u16 wlen, - u8 *rdata, - u16 rlen) +int pvr2_i2c_basic_op(struct pvr2_hdw *hdw, + u8 i2c_addr, + u8 *wdata, + u16 wlen, + u8 *rdata, + u16 rlen) { if (!rdata) rlen = 0; if (!wdata) wlen = 0; @@ -271,7 +267,7 @@ static int i2c_hack_cx25840(struct pvr2_hdw *hdw, "WARNING: Disabling further access to the device" " to prevent other foul-ups."); // This blocks all further communication with the part. - hdw->i2c_func[0x44] = NULL; + hdw->i2c_func[0x44] = 0; pvr2_hdw_render_useless(hdw); goto fail; } @@ -298,7 +294,7 @@ static int pvr2_i2c_xfer(struct i2c_adapter *i2c_adap, int num) { int ret = -ENOTSUPP; - pvr2_i2c_func funcp = NULL; + pvr2_i2c_func funcp = 0; struct pvr2_hdw *hdw = (struct pvr2_hdw *)(i2c_adap->algo_data); if (!num) { @@ -323,7 +319,7 @@ static int pvr2_i2c_xfer(struct i2c_adapter *i2c_adap, u16 tcnt,bcnt,offs; if (!msgs[0].len) { /* Length == 0 read. This is a probe. */ - if (funcp(hdw,msgs[0].addr,NULL,0,NULL,0)) { + if (funcp(hdw,msgs[0].addr,0,0,0,0)) { ret = -EIO; goto done; } @@ -340,7 +336,7 @@ static int pvr2_i2c_xfer(struct i2c_adapter *i2c_adap, if (bcnt > sizeof(hdw->cmd_buffer)-1) { bcnt = sizeof(hdw->cmd_buffer)-1; } - if (funcp(hdw,msgs[0].addr,NULL,0, + if (funcp(hdw,msgs[0].addr,0,0, msgs[0].buf+offs,bcnt)) { ret = -EIO; goto done; @@ -354,7 +350,7 @@ static int pvr2_i2c_xfer(struct i2c_adapter *i2c_adap, /* Simple write */ ret = 1; if (funcp(hdw,msgs[0].addr, - msgs[0].buf,msgs[0].len,NULL,0)) { + msgs[0].buf,msgs[0].len,0,0)) { ret = -EIO; } goto done; @@ -709,9 +705,9 @@ int pvr2_i2c_core_check_stale(struct pvr2_hdw *hdw) return (hdw->i2c_pend_types & PVR2_I2C_PEND_ALL) != 0; } -static unsigned int pvr2_i2c_client_describe(struct pvr2_i2c_client *cp, - unsigned int detail, - char *buf,unsigned int maxlen) +unsigned int pvr2_i2c_client_describe(struct pvr2_i2c_client *cp, + unsigned int detail, + char *buf,unsigned int maxlen) { unsigned int ccnt,bcnt; int spcfl = 0; @@ -875,7 +871,7 @@ static void do_i2c_scan(struct pvr2_hdw *hdw) msg[0].addr = 0; msg[0].flags = I2C_M_RD; msg[0].len = 0; - msg[0].buf = NULL; + msg[0].buf = 0; printk("%s: i2c scan beginning\n",hdw->name); for (i = 0; i < 128; i++) { msg[0].addr = i; diff --git a/trunk/drivers/media/video/pvrusb2/pvrusb2-i2c-core.h b/trunk/drivers/media/video/pvrusb2/pvrusb2-i2c-core.h index 6d7e25247576..e8af5b0ed3ce 100644 --- a/trunk/drivers/media/video/pvrusb2/pvrusb2-i2c-core.h +++ b/trunk/drivers/media/video/pvrusb2/pvrusb2-i2c-core.h @@ -75,6 +75,9 @@ unsigned int pvr2_i2c_report(struct pvr2_hdw *,char *buf,unsigned int maxlen); PVR2_I2C_DETAIL_DEBUG |\ PVR2_I2C_DETAIL_HANDLER |\ PVR2_I2C_DETAIL_CTLMASK) +unsigned int pvr2_i2c_client_describe(struct pvr2_i2c_client *, + unsigned int detail_mask, + char *buf,unsigned int maxlen); void pvr2_i2c_probe(struct pvr2_hdw *,struct pvr2_i2c_client *); const struct pvr2_i2c_op *pvr2_i2c_get_op(unsigned int idx); diff --git a/trunk/drivers/media/video/pvrusb2/pvrusb2-io.c b/trunk/drivers/media/video/pvrusb2/pvrusb2-io.c index 681f79c8064e..a984c91f571c 100644 --- a/trunk/drivers/media/video/pvrusb2/pvrusb2-io.c +++ b/trunk/drivers/media/video/pvrusb2/pvrusb2-io.c @@ -93,7 +93,7 @@ struct pvr2_buffer { struct urb *purb; }; -static const char *pvr2_buffer_state_decode(enum pvr2_buffer_state st) +const char *pvr2_buffer_state_decode(enum pvr2_buffer_state st) { switch (st) { case pvr2_buffer_state_none: return "none"; @@ -104,8 +104,7 @@ static const char *pvr2_buffer_state_decode(enum pvr2_buffer_state st) return "unknown"; } -#ifdef SANITY_CHECK_BUFFERS -static void pvr2_buffer_describe(struct pvr2_buffer *bp,const char *msg) +void pvr2_buffer_describe(struct pvr2_buffer *bp,const char *msg) { pvr2_trace(PVR2_TRACE_INFO, "buffer%s%s %p state=%s id=%d status=%d" @@ -116,11 +115,10 @@ static void pvr2_buffer_describe(struct pvr2_buffer *bp,const char *msg) (bp ? pvr2_buffer_state_decode(bp->state) : "(invalid)"), (bp ? bp->id : 0), (bp ? bp->status : 0), - (bp ? bp->stream : NULL), - (bp ? bp->purb : NULL), + (bp ? bp->stream : 0), + (bp ? bp->purb : 0), (bp ? bp->signature : 0)); } -#endif /* SANITY_CHECK_BUFFERS */ static void pvr2_buffer_remove(struct pvr2_buffer *bp) { @@ -286,7 +284,7 @@ static void pvr2_buffer_done(struct pvr2_buffer *bp) pvr2_buffer_wipe(bp); pvr2_buffer_set_none(bp); bp->signature = 0; - bp->stream = NULL; + bp->stream = 0; if (bp->purb) usb_free_urb(bp->purb); pvr2_trace(PVR2_TRACE_BUF_POOL,"/*---TRACE_FLOW---*/" " bufferDone %p",bp); @@ -341,13 +339,13 @@ static int pvr2_stream_buffer_count(struct pvr2_stream *sp,unsigned int cnt) struct pvr2_buffer *bp; bp = sp->buffers[sp->buffer_total_count - 1]; /* Paranoia */ - sp->buffers[sp->buffer_total_count - 1] = NULL; + sp->buffers[sp->buffer_total_count - 1] = 0; (sp->buffer_total_count)--; pvr2_buffer_done(bp); kfree(bp); } if (scnt < sp->buffer_slot_count) { - struct pvr2_buffer **nb = NULL; + struct pvr2_buffer **nb = 0; if (scnt) { nb = kmalloc(scnt * sizeof(*nb),GFP_KERNEL); if (!nb) return -ENOMEM; @@ -515,6 +513,10 @@ void pvr2_stream_set_callback(struct pvr2_stream *sp, } /* Query / set the nominal buffer count */ +int pvr2_stream_get_buffer_count(struct pvr2_stream *sp) +{ + return sp->buffer_target_count; +} int pvr2_stream_set_buffer_count(struct pvr2_stream *sp,unsigned int cnt) { @@ -530,21 +532,21 @@ int pvr2_stream_set_buffer_count(struct pvr2_stream *sp,unsigned int cnt) struct pvr2_buffer *pvr2_stream_get_idle_buffer(struct pvr2_stream *sp) { struct list_head *lp = sp->idle_list.next; - if (lp == &sp->idle_list) return NULL; + if (lp == &sp->idle_list) return 0; return list_entry(lp,struct pvr2_buffer,list_overhead); } struct pvr2_buffer *pvr2_stream_get_ready_buffer(struct pvr2_stream *sp) { struct list_head *lp = sp->ready_list.next; - if (lp == &sp->ready_list) return NULL; + if (lp == &sp->ready_list) return 0; return list_entry(lp,struct pvr2_buffer,list_overhead); } struct pvr2_buffer *pvr2_stream_get_buffer(struct pvr2_stream *sp,int id) { - if (id < 0) return NULL; - if (id >= sp->buffer_total_count) return NULL; + if (id < 0) return 0; + if (id >= sp->buffer_total_count) return 0; return sp->buffers[id]; } @@ -553,6 +555,17 @@ int pvr2_stream_get_ready_count(struct pvr2_stream *sp) return sp->r_count; } +int pvr2_stream_get_idle_count(struct pvr2_stream *sp) +{ + return sp->i_count; +} + +void pvr2_stream_flush(struct pvr2_stream *sp) +{ + mutex_lock(&sp->mutex); do { + pvr2_stream_internal_flush(sp); + } while(0); mutex_unlock(&sp->mutex); +} void pvr2_stream_kill(struct pvr2_stream *sp) { @@ -607,6 +620,20 @@ int pvr2_buffer_queue(struct pvr2_buffer *bp) return ret; } +int pvr2_buffer_idle(struct pvr2_buffer *bp) +{ + struct pvr2_stream *sp; + if (!bp) return -EINVAL; + sp = bp->stream; + mutex_lock(&sp->mutex); do { + pvr2_buffer_wipe(bp); + pvr2_buffer_set_idle(bp); + if (sp->buffer_total_count != sp->buffer_target_count) { + pvr2_stream_achieve_buffer_count(sp); + } + } while(0); mutex_unlock(&sp->mutex); + return 0; +} int pvr2_buffer_set_buffer(struct pvr2_buffer *bp,void *ptr,unsigned int cnt) { @@ -646,6 +673,10 @@ int pvr2_buffer_get_status(struct pvr2_buffer *bp) return bp->status; } +enum pvr2_buffer_state pvr2_buffer_get_state(struct pvr2_buffer *bp) +{ + return bp->state; +} int pvr2_buffer_get_id(struct pvr2_buffer *bp) { diff --git a/trunk/drivers/media/video/pvrusb2/pvrusb2-io.h b/trunk/drivers/media/video/pvrusb2/pvrusb2-io.h index 96285ad234a6..65e11385b2b3 100644 --- a/trunk/drivers/media/video/pvrusb2/pvrusb2-io.h +++ b/trunk/drivers/media/video/pvrusb2/pvrusb2-io.h @@ -36,6 +36,8 @@ enum pvr2_buffer_state { struct pvr2_stream; struct pvr2_buffer; +const char *pvr2_buffer_state_decode(enum pvr2_buffer_state); + /* Initialize / tear down stream structure */ struct pvr2_stream *pvr2_stream_create(void); void pvr2_stream_destroy(struct pvr2_stream *); @@ -47,6 +49,7 @@ void pvr2_stream_set_callback(struct pvr2_stream *, void *data); /* Query / set the nominal buffer count */ +int pvr2_stream_get_buffer_count(struct pvr2_stream *); int pvr2_stream_set_buffer_count(struct pvr2_stream *,unsigned int); /* Get a pointer to a buffer that is either idle, ready, or is specified @@ -56,8 +59,12 @@ struct pvr2_buffer *pvr2_stream_get_ready_buffer(struct pvr2_stream *); struct pvr2_buffer *pvr2_stream_get_buffer(struct pvr2_stream *sp,int id); /* Find out how many buffers are idle or ready */ +int pvr2_stream_get_idle_count(struct pvr2_stream *); int pvr2_stream_get_ready_count(struct pvr2_stream *); +/* Kill all pending operations */ +void pvr2_stream_flush(struct pvr2_stream *); + /* Kill all pending buffers and throw away any ready buffers as well */ void pvr2_stream_kill(struct pvr2_stream *); @@ -70,12 +77,18 @@ unsigned int pvr2_buffer_get_count(struct pvr2_buffer *); /* Retrieve completion code for given ready buffer */ int pvr2_buffer_get_status(struct pvr2_buffer *); +/* Retrieve state of given buffer */ +enum pvr2_buffer_state pvr2_buffer_get_state(struct pvr2_buffer *); + /* Retrieve ID of given buffer */ int pvr2_buffer_get_id(struct pvr2_buffer *); /* Start reading into given buffer (kill it if needed) */ int pvr2_buffer_queue(struct pvr2_buffer *); +/* Move buffer back to idle pool (kill it if needed) */ +int pvr2_buffer_idle(struct pvr2_buffer *); + #endif /* __PVRUSB2_IO_H */ /* diff --git a/trunk/drivers/media/video/pvrusb2/pvrusb2-ioread.c b/trunk/drivers/media/video/pvrusb2/pvrusb2-ioread.c index f7a2e225a002..49da062e3271 100644 --- a/trunk/drivers/media/video/pvrusb2/pvrusb2-ioread.c +++ b/trunk/drivers/media/video/pvrusb2/pvrusb2-ioread.c @@ -54,7 +54,7 @@ static int pvr2_ioread_init(struct pvr2_ioread *cp) { unsigned int idx; - cp->stream = NULL; + cp->stream = 0; mutex_init(&cp->mutex); for (idx = 0; idx < BUFFER_COUNT; idx++) { @@ -77,7 +77,7 @@ static void pvr2_ioread_done(struct pvr2_ioread *cp) { unsigned int idx; - pvr2_ioread_setup(cp,NULL); + pvr2_ioread_setup(cp,0); for (idx = 0; idx < BUFFER_COUNT; idx++) { if (!(cp->buffer_storage[idx])) continue; kfree(cp->buffer_storage[idx]); @@ -88,12 +88,12 @@ struct pvr2_ioread *pvr2_ioread_create(void) { struct pvr2_ioread *cp; cp = kmalloc(sizeof(*cp),GFP_KERNEL); - if (!cp) return NULL; + if (!cp) return 0; pvr2_trace(PVR2_TRACE_STRUCT,"pvr2_ioread_create id=%p",cp); memset(cp,0,sizeof(*cp)); if (pvr2_ioread_init(cp) < 0) { kfree(cp); - return NULL; + return 0; } return cp; } @@ -105,7 +105,7 @@ void pvr2_ioread_destroy(struct pvr2_ioread *cp) pvr2_trace(PVR2_TRACE_STRUCT,"pvr2_ioread_destroy id=%p",cp); if (cp->sync_key_ptr) { kfree(cp->sync_key_ptr); - cp->sync_key_ptr = NULL; + cp->sync_key_ptr = 0; } kfree(cp); } @@ -124,7 +124,7 @@ void pvr2_ioread_set_sync_key(struct pvr2_ioread *cp, if (sync_key_len != cp->sync_key_len) { if (cp->sync_key_ptr) { kfree(cp->sync_key_ptr); - cp->sync_key_ptr = NULL; + cp->sync_key_ptr = 0; } cp->sync_key_len = 0; if (sync_key_len) { @@ -144,8 +144,8 @@ static void pvr2_ioread_stop(struct pvr2_ioread *cp) pvr2_trace(PVR2_TRACE_START_STOP, "/*---TRACE_READ---*/ pvr2_ioread_stop id=%p",cp); pvr2_stream_kill(cp->stream); - cp->c_buf = NULL; - cp->c_data_ptr = NULL; + cp->c_buf = 0; + cp->c_data_ptr = 0; cp->c_data_len = 0; cp->c_data_offs = 0; cp->enabled = 0; @@ -179,8 +179,8 @@ static int pvr2_ioread_start(struct pvr2_ioread *cp) } } cp->enabled = !0; - cp->c_buf = NULL; - cp->c_data_ptr = NULL; + cp->c_buf = 0; + cp->c_data_ptr = 0; cp->c_data_len = 0; cp->c_data_offs = 0; cp->stream_running = 0; @@ -214,7 +214,7 @@ int pvr2_ioread_setup(struct pvr2_ioread *cp,struct pvr2_stream *sp) pvr2_ioread_stop(cp); pvr2_stream_kill(cp->stream); pvr2_stream_set_buffer_count(cp->stream,0); - cp->stream = NULL; + cp->stream = 0; } if (sp) { pvr2_trace(PVR2_TRACE_START_STOP, @@ -251,8 +251,12 @@ int pvr2_ioread_set_enabled(struct pvr2_ioread *cp,int fl) return ret; } +int pvr2_ioread_get_enabled(struct pvr2_ioread *cp) +{ + return cp->enabled != 0; +} -static int pvr2_ioread_get_buffer(struct pvr2_ioread *cp) +int pvr2_ioread_get_buffer(struct pvr2_ioread *cp) { int stat; @@ -270,8 +274,8 @@ static int pvr2_ioread_get_buffer(struct pvr2_ioread *cp) pvr2_ioread_stop(cp); return 0; } - cp->c_buf = NULL; - cp->c_data_ptr = NULL; + cp->c_buf = 0; + cp->c_data_ptr = 0; cp->c_data_len = 0; cp->c_data_offs = 0; } @@ -303,7 +307,7 @@ static int pvr2_ioread_get_buffer(struct pvr2_ioread *cp) return !0; } -static void pvr2_ioread_filter(struct pvr2_ioread *cp) +void pvr2_ioread_filter(struct pvr2_ioread *cp) { unsigned int idx; if (!cp->enabled) return; diff --git a/trunk/drivers/media/video/pvrusb2/pvrusb2-ioread.h b/trunk/drivers/media/video/pvrusb2/pvrusb2-ioread.h index 1d362f833588..6b002597f5de 100644 --- a/trunk/drivers/media/video/pvrusb2/pvrusb2-ioread.h +++ b/trunk/drivers/media/video/pvrusb2/pvrusb2-ioread.h @@ -33,6 +33,7 @@ void pvr2_ioread_set_sync_key(struct pvr2_ioread *, const char *sync_key_ptr, unsigned int sync_key_len); int pvr2_ioread_set_enabled(struct pvr2_ioread *,int fl); +int pvr2_ioread_get_enabled(struct pvr2_ioread *); int pvr2_ioread_read(struct pvr2_ioread *,void __user *buf,unsigned int cnt); int pvr2_ioread_avail(struct pvr2_ioread *); diff --git a/trunk/drivers/media/video/pvrusb2/pvrusb2-main.c b/trunk/drivers/media/video/pvrusb2/pvrusb2-main.c index 8f1a5afdd34e..b95248274ed0 100644 --- a/trunk/drivers/media/video/pvrusb2/pvrusb2-main.c +++ b/trunk/drivers/media/video/pvrusb2/pvrusb2-main.c @@ -54,7 +54,7 @@ module_param_named(debug,pvrusb2_debug,int,S_IRUGO|S_IWUSR); MODULE_PARM_DESC(debug, "Debug trace mask"); #ifdef CONFIG_VIDEO_PVRUSB2_SYSFS -static struct pvr2_sysfs_class *class_ptr = NULL; +static struct pvr2_sysfs_class *class_ptr = 0; #endif /* CONFIG_VIDEO_PVRUSB2_SYSFS */ static void pvr_setup_attach(struct pvr2_context *pvr) @@ -104,10 +104,10 @@ static void pvr_disconnect(struct usb_interface *intf) } static struct usb_driver pvr_driver = { - .name = "pvrusb2", - .id_table = pvr2_device_table, - .probe = pvr_probe, - .disconnect = pvr_disconnect + name: "pvrusb2", + id_table: pvr2_device_table, + probe: pvr_probe, + disconnect: pvr_disconnect }; /* diff --git a/trunk/drivers/media/video/pvrusb2/pvrusb2-std.c b/trunk/drivers/media/video/pvrusb2/pvrusb2-std.c index f95c598ff627..134063693643 100644 --- a/trunk/drivers/media/video/pvrusb2/pvrusb2-std.c +++ b/trunk/drivers/media/video/pvrusb2/pvrusb2-std.c @@ -121,7 +121,7 @@ static const struct std_name *find_std_name(const struct std_name *arrPtr, if (strlen(p->name) != bufSize) continue; if (!memcmp(bufPtr,p->name,bufSize)) return p; } - return NULL; + return 0; } @@ -289,7 +289,7 @@ static struct v4l2_standard *match_std(v4l2_std_id id) return generic_standards + idx; } } - return NULL; + return 0; } static int pvr2_std_fill(struct v4l2_standard *std,v4l2_std_id id) @@ -364,7 +364,7 @@ struct v4l2_standard *pvr2_std_create_enum(unsigned int *countptr, pvr2_trace(PVR2_TRACE_INIT,"Setting up %u unique standard(s)", std_cnt); - if (!std_cnt) return NULL; // paranoia + if (!std_cnt) return 0; // paranoia stddefs = kmalloc(sizeof(struct v4l2_standard) * std_cnt, GFP_KERNEL); diff --git a/trunk/drivers/media/video/pvrusb2/pvrusb2-sysfs.c b/trunk/drivers/media/video/pvrusb2/pvrusb2-sysfs.c index 6af55a8b6f05..c6e6523d74b4 100644 --- a/trunk/drivers/media/video/pvrusb2/pvrusb2-sysfs.c +++ b/trunk/drivers/media/video/pvrusb2/pvrusb2-sysfs.c @@ -504,7 +504,7 @@ static void pvr2_sysfs_add_control(struct pvr2_sysfs *sfp,int ctl_id) cip->cptr = cptr; cip->chptr = sfp; - cip->item_next = NULL; + cip->item_next = 0; if (sfp->item_last) { sfp->item_last->item_next = cip; } else { @@ -625,7 +625,7 @@ static void pvr2_sysfs_tear_down_debugifc(struct pvr2_sysfs *sfp) &sfp->debugifc->attr_debuginfo); class_device_remove_file(sfp->class_dev,&sfp->debugifc->attr_debugcmd); kfree(sfp->debugifc); - sfp->debugifc = NULL; + sfp->debugifc = 0; } #endif /* CONFIG_VIDEO_PVRUSB2_DEBUGIFC */ @@ -678,9 +678,9 @@ static void class_dev_destroy(struct pvr2_sysfs *sfp) class_device_remove_file(sfp->class_dev,&sfp->attr_v4l_minor_number); class_device_remove_file(sfp->class_dev,&sfp->attr_unit_number); pvr2_sysfs_trace("Destroying class_dev id=%p",sfp->class_dev); - sfp->class_dev->class_data = NULL; + sfp->class_dev->class_data = 0; class_device_unregister(sfp->class_dev); - sfp->class_dev = NULL; + sfp->class_dev = 0; } @@ -739,13 +739,13 @@ static void class_dev_create(struct pvr2_sysfs *sfp, sfp->attr_v4l_minor_number.attr.name = "v4l_minor_number"; sfp->attr_v4l_minor_number.attr.mode = S_IRUGO; sfp->attr_v4l_minor_number.show = v4l_minor_number_show; - sfp->attr_v4l_minor_number.store = NULL; + sfp->attr_v4l_minor_number.store = 0; class_device_create_file(sfp->class_dev,&sfp->attr_v4l_minor_number); sfp->attr_unit_number.attr.owner = THIS_MODULE; sfp->attr_unit_number.attr.name = "unit_number"; sfp->attr_unit_number.attr.mode = S_IRUGO; sfp->attr_unit_number.show = unit_number_show; - sfp->attr_unit_number.store = NULL; + sfp->attr_unit_number.store = 0; class_device_create_file(sfp->class_dev,&sfp->attr_unit_number); pvr2_sysfs_add_controls(sfp); @@ -806,7 +806,7 @@ struct pvr2_sysfs_class *pvr2_sysfs_class_create(void) pvr2_sysfs_trace( "Registration failed for pvr2_sysfs_class id=%p",clp); kfree(clp); - clp = NULL; + clp = 0; } return clp; } diff --git a/trunk/drivers/media/video/pvrusb2/pvrusb2-tuner.c b/trunk/drivers/media/video/pvrusb2/pvrusb2-tuner.c index af9f246f8d3f..f4aba8144ce0 100644 --- a/trunk/drivers/media/video/pvrusb2/pvrusb2-tuner.c +++ b/trunk/drivers/media/video/pvrusb2/pvrusb2-tuner.c @@ -69,7 +69,7 @@ static void tuner_update(struct pvr2_tuner_handler *ctxt) static void pvr2_tuner_detach(struct pvr2_tuner_handler *ctxt) { - ctxt->client->handler = NULL; + ctxt->client->handler = 0; kfree(ctxt); } diff --git a/trunk/drivers/media/video/pvrusb2/pvrusb2-v4l2.c b/trunk/drivers/media/video/pvrusb2/pvrusb2-v4l2.c index 0caf70b8c0de..961951010c27 100644 --- a/trunk/drivers/media/video/pvrusb2/pvrusb2-v4l2.c +++ b/trunk/drivers/media/video/pvrusb2/pvrusb2-v4l2.c @@ -81,7 +81,7 @@ static int video_nr[PVR_NUM] = {[0 ... PVR_NUM-1] = -1}; module_param_array(video_nr, int, NULL, 0444); MODULE_PARM_DESC(video_nr, "Offset for device's minor"); -static struct v4l2_capability pvr_capability ={ +struct v4l2_capability pvr_capability ={ .driver = "pvrusb2", .card = "Hauppauge WinTV pvr-usb2", .bus_info = "usb", @@ -111,7 +111,7 @@ static struct v4l2_tuner pvr_v4l2_tuners[]= { } }; -static struct v4l2_fmtdesc pvr_fmtdesc [] = { +struct v4l2_fmtdesc pvr_fmtdesc [] = { { .index = 0, .type = V4L2_BUF_TYPE_VIDEO_CAPTURE, @@ -127,7 +127,7 @@ static struct v4l2_fmtdesc pvr_fmtdesc [] = { #define PVR_FORMAT_PIX 0 #define PVR_FORMAT_VBI 1 -static struct v4l2_format pvr_format [] = { +struct v4l2_format pvr_format [] = { [PVR_FORMAT_PIX] = { .type = V4L2_BUF_TYPE_VIDEO_CAPTURE, .fmt = { @@ -701,8 +701,9 @@ static int pvr2_v4l2_do_ioctl(struct inode *inode, struct file *file, static void pvr2_v4l2_dev_destroy(struct pvr2_v4l2_dev *dip) { - printk(KERN_INFO "pvrusb2: unregistering device video%d [%s]\n", - dip->vdev->minor,pvr2_config_get_name(dip->config)); + pvr2_trace(PVR2_TRACE_INIT, + "unregistering device video%d [%s]", + dip->vdev->minor,pvr2_config_get_name(dip->config)); if (dip->ctxt_idx >= 0) { mutex_lock(&device_lock); devices[dip->ctxt_idx] = NULL; @@ -724,7 +725,7 @@ static void pvr2_v4l2_destroy_no_lock(struct pvr2_v4l2 *vp) } -static void pvr2_v4l2_internal_check(struct pvr2_channel *chp) +void pvr2_v4l2_internal_check(struct pvr2_channel *chp) { struct pvr2_v4l2 *vp; vp = container_of(chp,struct pvr2_v4l2,channel); @@ -734,8 +735,8 @@ static void pvr2_v4l2_internal_check(struct pvr2_channel *chp) } -static int pvr2_v4l2_ioctl(struct inode *inode, struct file *file, - unsigned int cmd, unsigned long arg) +int pvr2_v4l2_ioctl(struct inode *inode, struct file *file, + unsigned int cmd, unsigned long arg) { /* Temporary hack : use ivtv api until a v4l2 one is available. */ @@ -746,7 +747,7 @@ static int pvr2_v4l2_ioctl(struct inode *inode, struct file *file, } -static int pvr2_v4l2_release(struct inode *inode, struct file *file) +int pvr2_v4l2_release(struct inode *inode, struct file *file) { struct pvr2_v4l2_fh *fhp = file->private_data; struct pvr2_v4l2 *vp = fhp->vhead; @@ -760,9 +761,9 @@ static int pvr2_v4l2_release(struct inode *inode, struct file *file) hdw = fhp->channel.mc_head->hdw; pvr2_hdw_set_streaming(hdw,0); sp = pvr2_ioread_get_stream(fhp->rhp); - if (sp) pvr2_stream_set_callback(sp,NULL,NULL); + if (sp) pvr2_stream_set_callback(sp,0,0); pvr2_ioread_destroy(fhp->rhp); - fhp->rhp = NULL; + fhp->rhp = 0; } v4l2_prio_close(&vp->prio, &fhp->prio); file->private_data = NULL; @@ -778,9 +779,9 @@ static int pvr2_v4l2_release(struct inode *inode, struct file *file) } else { vp->vfirst = fhp->vnext; } - fhp->vnext = NULL; - fhp->vprev = NULL; - fhp->vhead = NULL; + fhp->vnext = 0; + fhp->vprev = 0; + fhp->vhead = 0; pvr2_channel_done(&fhp->channel); pvr2_trace(PVR2_TRACE_STRUCT, "Destroying pvr_v4l2_fh id=%p",fhp); @@ -793,9 +794,9 @@ static int pvr2_v4l2_release(struct inode *inode, struct file *file) } -static int pvr2_v4l2_open(struct inode *inode, struct file *file) +int pvr2_v4l2_open(struct inode *inode, struct file *file) { - struct pvr2_v4l2_dev *dip = NULL; /* Our own context pointer */ + struct pvr2_v4l2_dev *dip = 0; /* Our own context pointer */ struct pvr2_v4l2_fh *fhp; struct pvr2_v4l2 *vp; struct pvr2_hdw *hdw; @@ -853,7 +854,7 @@ static int pvr2_v4l2_open(struct inode *inode, struct file *file) pvr2_context_enter(vp->channel.mc_head); do { pvr2_trace(PVR2_TRACE_STRUCT,"Creating pvr_v4l2_fh id=%p",fhp); pvr2_channel_init(&fhp->channel,vp->channel.mc_head); - fhp->vnext = NULL; + fhp->vnext = 0; fhp->vprev = vp->vlast; if (vp->vlast) { vp->vlast->vnext = fhp; @@ -896,7 +897,7 @@ static int pvr2_v4l2_iosetup(struct pvr2_v4l2_fh *fh) fh->rhp = pvr2_channel_create_mpeg_stream(fh->dev_info->stream); if (!fh->rhp) { - pvr2_channel_claim_stream(&fh->channel,NULL); + pvr2_channel_claim_stream(&fh->channel,0); return -ENOMEM; } @@ -1077,8 +1078,9 @@ static void pvr2_v4l2_dev_init(struct pvr2_v4l2_dev *dip, (video_register_device(dip->vdev, v4l_type, -1) < 0)) { err("Failed to register pvrusb2 v4l video device"); } else { - printk(KERN_INFO "pvrusb2: registered device video%d [%s]\n", - dip->vdev->minor,pvr2_config_get_name(dip->config)); + pvr2_trace(PVR2_TRACE_INIT, + "registered device video%d [%s]", + dip->vdev->minor,pvr2_config_get_name(dip->config)); } if ((dip->vdev->minor < sizeof(devices)/sizeof(devices[0])) && diff --git a/trunk/drivers/media/video/pvrusb2/pvrusb2-video-v4l.c b/trunk/drivers/media/video/pvrusb2/pvrusb2-video-v4l.c index 05f2cddeb47b..e4ec7f25194c 100644 --- a/trunk/drivers/media/video/pvrusb2/pvrusb2-video-v4l.c +++ b/trunk/drivers/media/video/pvrusb2/pvrusb2-video-v4l.c @@ -126,8 +126,8 @@ static const struct pvr2_v4l_decoder_ops decoder_ops[] = { static void decoder_detach(struct pvr2_v4l_decoder *ctxt) { - ctxt->client->handler = NULL; - ctxt->hdw->decoder_ctrl = NULL; + ctxt->client->handler = 0; + ctxt->hdw->decoder_ctrl = 0; kfree(ctxt); } diff --git a/trunk/drivers/media/video/pvrusb2/pvrusb2-wm8775.c b/trunk/drivers/media/video/pvrusb2/pvrusb2-wm8775.c index 2413e5198e16..fcad346e3955 100644 --- a/trunk/drivers/media/video/pvrusb2/pvrusb2-wm8775.c +++ b/trunk/drivers/media/video/pvrusb2/pvrusb2-wm8775.c @@ -89,7 +89,7 @@ static unsigned int wm8775_describe(struct pvr2_v4l_wm8775 *ctxt, static void wm8775_detach(struct pvr2_v4l_wm8775 *ctxt) { - ctxt->client->handler = NULL; + ctxt->client->handler = 0; kfree(ctxt); } diff --git a/trunk/drivers/media/video/pwc/pwc-uncompress.h b/trunk/drivers/media/video/pwc/pwc-uncompress.h index 43028e74e9e0..041227f65246 100644 --- a/trunk/drivers/media/video/pwc/pwc-uncompress.h +++ b/trunk/drivers/media/video/pwc/pwc-uncompress.h @@ -30,6 +30,7 @@ #ifndef PWC_UNCOMPRESS_H #define PWC_UNCOMPRESS_H +#include #include diff --git a/trunk/drivers/media/video/pwc/pwc.h b/trunk/drivers/media/video/pwc/pwc.h index 7e9c4237d1e8..629f79e44fb6 100644 --- a/trunk/drivers/media/video/pwc/pwc.h +++ b/trunk/drivers/media/video/pwc/pwc.h @@ -25,6 +25,7 @@ #ifndef PWC_H #define PWC_H +#include #include #include #include diff --git a/trunk/drivers/media/video/saa7134/saa7134-core.c b/trunk/drivers/media/video/saa7134/saa7134-core.c index 535172f643b9..da3007d2f411 100644 --- a/trunk/drivers/media/video/saa7134/saa7134-core.c +++ b/trunk/drivers/media/video/saa7134/saa7134-core.c @@ -20,6 +20,7 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include @@ -941,6 +942,8 @@ static int __devinit saa7134_initdev(struct pci_dev *pci_dev, /* load i2c helpers */ if (TUNER_ABSENT != dev->tuner_type) request_module("tuner"); + if (dev->tda9887_conf) + request_module("tda9887"); if (card_is_empress(dev)) { request_module("saa6752hs"); request_module_depend("saa7134-empress",&need_empress); diff --git a/trunk/drivers/media/video/se401.c b/trunk/drivers/media/video/se401.c index 67987baee77a..a846ebc78cd7 100644 --- a/trunk/drivers/media/video/se401.c +++ b/trunk/drivers/media/video/se401.c @@ -27,6 +27,7 @@ static const char version[] = "0.24"; +#include #include #include #include diff --git a/trunk/drivers/media/video/stv680.c b/trunk/drivers/media/video/stv680.c index 2ba2991a214f..351b182d921f 100644 --- a/trunk/drivers/media/video/stv680.c +++ b/trunk/drivers/media/video/stv680.c @@ -58,6 +58,7 @@ * Fixed proc entry removal bug. */ +#include #include #include #include diff --git a/trunk/drivers/media/video/tda9887.c b/trunk/drivers/media/video/tda9887.c index 8dab481d384a..2fadabf99688 100644 --- a/trunk/drivers/media/video/tda9887.c +++ b/trunk/drivers/media/video/tda9887.c @@ -590,8 +590,8 @@ int tda9887_tuner_init(struct i2c_client *c) t->set_tv_freq = tda9887_set_freq; t->set_radio_freq = tda9887_set_freq; t->standby = tda9887_standby; - t->tuner_status = tda9887_tuner_status; - t->get_afc = tda9887_get_afc; + t->tuner_status=tda9887_tuner_status; + t->get_afc=tda9887_get_afc; return 0; } diff --git a/trunk/drivers/media/video/tuner-core.c b/trunk/drivers/media/video/tuner-core.c index f7eb402d5f2b..011413cf34a8 100644 --- a/trunk/drivers/media/video/tuner-core.c +++ b/trunk/drivers/media/video/tuner-core.c @@ -416,7 +416,7 @@ static void tuner_status(struct i2c_client *client) /* ---------------------------------------------------------------------- */ -/* static vars: used only in tuner_attach and tuner_probe */ +/* static var Used only in tuner_attach and tuner_probe */ static unsigned default_mode_mask; /* During client attach, set_type is called by adapter's attach_inform callback. @@ -608,13 +608,13 @@ static int tuner_command(struct i2c_client *client, unsigned int cmd, void *arg) tuner_dbg("VIDIOCSAUDIO not implemented.\n"); break; case TDA9887_SET_CONFIG: - if (t->type == TUNER_TDA9887) { - int *i = arg; + { + int *i = arg; - t->tda9887_config = *i; - set_freq(client, t->tv_freq); - } + t->tda9887_config = *i; + set_freq(client, t->tv_freq); break; + } /* --- v4l ioctls --- */ /* take care: bttv does userspace copying, we'll get a kernel pointer here... */ diff --git a/trunk/drivers/media/video/tuner-simple.c b/trunk/drivers/media/video/tuner-simple.c index d071c5cbf013..6da6f82b8c88 100644 --- a/trunk/drivers/media/video/tuner-simple.c +++ b/trunk/drivers/media/video/tuner-simple.c @@ -7,7 +7,6 @@ #include #include #include -#include static int offset = 0; module_param(offset, int, 0666); @@ -129,7 +128,6 @@ static void default_set_tv_freq(struct i2c_client *c, unsigned int freq) u8 buffer[4]; int rc, IFPCoff, i, j; enum param_type desired_type; - struct tuner_params *params; tun = &tuners[t->type]; @@ -171,20 +169,19 @@ static void default_set_tv_freq(struct i2c_client *c, unsigned int freq) IFPCoff,t->type); j = 0; } - params = &tun->params[j]; - for (i = 0; i < params->count; i++) { - if (freq > params->ranges[i].limit) + for (i = 0; i < tun->params[j].count; i++) { + if (freq > tun->params[j].ranges[i].limit) continue; break; } - if (i == params->count) { + if (i == tun->params[j].count) { tuner_dbg("TV frequency out of range (%d > %d)", - freq, params->ranges[i - 1].limit); - freq = params->ranges[--i].limit; + freq, tun->params[j].ranges[i - 1].limit); + freq = tun->params[j].ranges[--i].limit; } - config = params->ranges[i].config; - cb = params->ranges[i].cb; + config = tun->params[j].ranges[i].config; + cb = tun->params[j].ranges[i].cb; /* i == 0 -> VHF_LO * i == 1 -> VHF_HI * i == 2 -> UHF */ @@ -284,7 +281,7 @@ static void default_set_tv_freq(struct i2c_client *c, unsigned int freq) break; } - if (params->cb_first_if_lower_freq && div < t->last_div) { + if (tuners[t->type].params->cb_first_if_lower_freq && div < t->last_div) { buffer[0] = config; buffer[1] = cb; buffer[2] = (div>>8) & 0x7f; @@ -296,43 +293,6 @@ static void default_set_tv_freq(struct i2c_client *c, unsigned int freq) buffer[3] = cb; } t->last_div = div; - if (params->has_tda9887) { - int config = 0; - int is_secam_l = (t->std & (V4L2_STD_SECAM_L | V4L2_STD_SECAM_LC)) && - !(t->std & ~(V4L2_STD_SECAM_L | V4L2_STD_SECAM_LC)); - - if (t->std == V4L2_STD_SECAM_LC) { - if (params->port1_active ^ params->port1_invert_for_secam_lc) - config |= TDA9887_PORT1_ACTIVE; - if (params->port2_active ^ params->port2_invert_for_secam_lc) - config |= TDA9887_PORT2_ACTIVE; - } - else { - if (params->port1_active) - config |= TDA9887_PORT1_ACTIVE; - if (params->port2_active) - config |= TDA9887_PORT2_ACTIVE; - } - if (params->intercarrier_mode) - config |= TDA9887_INTERCARRIER; - if (is_secam_l) { - if (i == 0 && params->default_top_secam_low) - config |= TDA9887_TOP(params->default_top_secam_low); - else if (i == 1 && params->default_top_secam_mid) - config |= TDA9887_TOP(params->default_top_secam_mid); - else if (params->default_top_secam_high) - config |= TDA9887_TOP(params->default_top_secam_high); - } - else { - if (i == 0 && params->default_top_low) - config |= TDA9887_TOP(params->default_top_low); - else if (i == 1 && params->default_top_mid) - config |= TDA9887_TOP(params->default_top_mid); - else if (params->default_top_high) - config |= TDA9887_TOP(params->default_top_high); - } - i2c_clients_command(c->adapter, TDA9887_SET_CONFIG, &config); - } tuner_dbg("tv 0x%02x 0x%02x 0x%02x 0x%02x\n", buffer[0],buffer[1],buffer[2],buffer[3]); @@ -379,7 +339,6 @@ static void default_set_radio_freq(struct i2c_client *c, unsigned int freq) u16 div; int rc, j; enum param_type desired_type = TUNER_PARAM_TYPE_RADIO; - struct tuner_params *params; tun = &tuners[t->type]; @@ -393,8 +352,7 @@ static void default_set_radio_freq(struct i2c_client *c, unsigned int freq) j = 0; div = (20 * freq / 16000) + (int)(20*10.7); /* IF 10.7 MHz */ - params = &tun->params[j]; - buffer[2] = (params->ranges[0].config & ~TUNER_RATIO_MASK) | TUNER_RATIO_SELECT_50; /* 50 kHz step */ + buffer[2] = (tun->params[j].ranges[0].config & ~TUNER_RATIO_MASK) | TUNER_RATIO_SELECT_50; /* 50 kHz step */ switch (t->type) { case TUNER_TENA_9533_DI: @@ -426,7 +384,7 @@ static void default_set_radio_freq(struct i2c_client *c, unsigned int freq) } buffer[0] = (div>>8) & 0x7f; buffer[1] = div & 0xff; - if (params->cb_first_if_lower_freq && div < t->last_div) { + if (tuners[t->type].params->cb_first_if_lower_freq && div < t->last_div) { buffer[0] = buffer[2]; buffer[1] = buffer[3]; buffer[2] = (div>>8) & 0x7f; @@ -440,18 +398,6 @@ static void default_set_radio_freq(struct i2c_client *c, unsigned int freq) buffer[0],buffer[1],buffer[2],buffer[3]); t->last_div = div; - if (params->has_tda9887) { - int config = 0; - if (params->port1_active && !params->port1_fm_high_sensitivity) - config |= TDA9887_PORT1_ACTIVE; - if (params->port2_active && !params->port2_fm_high_sensitivity) - config |= TDA9887_PORT2_ACTIVE; - if (params->intercarrier_mode) - config |= TDA9887_INTERCARRIER; -/* if (params->port1_set_for_fm_mono) - config &= ~TDA9887_PORT1_ACTIVE;*/ - i2c_clients_command(c->adapter, TDA9887_SET_CONFIG, &config); - } if (4 != (rc = i2c_master_send(c,buffer,4))) tuner_warn("i2c i/o error: rc == %d (should be 4)\n",rc); } diff --git a/trunk/drivers/media/video/tuner-types.c b/trunk/drivers/media/video/tuner-types.c index a167e17c6dcd..9d9226cb6393 100644 --- a/trunk/drivers/media/video/tuner-types.c +++ b/trunk/drivers/media/video/tuner-types.c @@ -380,10 +380,6 @@ static struct tuner_params tuner_philips_fq1216me_params[] = { .type = TUNER_PARAM_TYPE_PAL, .ranges = tuner_lg_pal_ranges, .count = ARRAY_SIZE(tuner_lg_pal_ranges), - .has_tda9887 = 1, - .port1_active = 1, - .port2_active = 1, - .port2_invert_for_secam_lc = 1, }, }; @@ -546,14 +542,6 @@ static struct tuner_params tuner_fm1216me_mk3_params[] = { .ranges = tuner_fm1216me_mk3_pal_ranges, .count = ARRAY_SIZE(tuner_fm1216me_mk3_pal_ranges), .cb_first_if_lower_freq = 1, - .has_tda9887 = 1, - .port1_active = 1, - .port2_active = 1, - .port2_invert_for_secam_lc = 1, - .port1_fm_high_sensitivity = 1, - .default_top_mid = -2, - .default_top_secam_mid = -2, - .default_top_secam_high = -2, }, }; @@ -624,10 +612,6 @@ static struct tuner_params tuner_fm1236_mk3_params[] = { .ranges = tuner_fm1236_mk3_ntsc_ranges, .count = ARRAY_SIZE(tuner_fm1236_mk3_ntsc_ranges), .cb_first_if_lower_freq = 1, - .has_tda9887 = 1, - .port1_active = 1, - .port2_active = 1, - .port1_fm_high_sensitivity = 1, }, }; @@ -648,8 +632,6 @@ static struct tuner_params tuner_microtune_4049_fm5_params[] = { .type = TUNER_PARAM_TYPE_PAL, .ranges = tuner_temic_4009f_5_pal_ranges, .count = ARRAY_SIZE(tuner_temic_4009f_5_pal_ranges), - .has_tda9887 = 1, - .port1_invert_for_secam_lc = 1, }, }; @@ -666,8 +648,6 @@ static struct tuner_params tuner_panasonic_vp27_params[] = { .type = TUNER_PARAM_TYPE_NTSC, .ranges = tuner_panasonic_vp27_ntsc_ranges, .count = ARRAY_SIZE(tuner_panasonic_vp27_ntsc_ranges), - .has_tda9887 = 1, - .intercarrier_mode = 1, }, }; @@ -802,13 +782,6 @@ static struct tuner_params tuner_philips_fq1216ame_mk4_params[] = { .type = TUNER_PARAM_TYPE_PAL, .ranges = tuner_philips_fq12_6a___mk4_pal_ranges, .count = ARRAY_SIZE(tuner_philips_fq12_6a___mk4_pal_ranges), - .has_tda9887 = 1, - .port1_active = 1, - .port2_invert_for_secam_lc = 1, - .default_top_mid = -2, - .default_top_secam_low = -2, - .default_top_secam_mid = -2, - .default_top_secam_high = -2, }, }; @@ -897,12 +870,6 @@ static struct tuner_params tuner_philips_fmd1216me_mk3_params[] = { .type = TUNER_PARAM_TYPE_PAL, .ranges = tuner_philips_fmd1216me_mk3_pal_ranges, .count = ARRAY_SIZE(tuner_philips_fmd1216me_mk3_pal_ranges), - .has_tda9887 = 1, - .port1_active = 1, - .port2_active = 1, - .port2_fm_high_sensitivity = 1, - .port2_invert_for_secam_lc = 1, - .port1_set_for_fm_mono = 1, }, }; @@ -1038,7 +1005,6 @@ static struct tuner_params tuner_samsung_tcpn_2121p30a_params[] = { .type = TUNER_PARAM_TYPE_NTSC, .ranges = tuner_samsung_tcpn_2121p30a_ntsc_ranges, .count = ARRAY_SIZE(tuner_samsung_tcpn_2121p30a_ntsc_ranges), - .has_tda9887 = 1, }, }; @@ -1071,10 +1037,6 @@ static struct tuner_params tuner_samsung_tcpg_6121p30a_params[] = { .type = TUNER_PARAM_TYPE_PAL, .ranges = tuner_samsung_tcpg_6121p30a_pal_ranges, .count = ARRAY_SIZE(tuner_samsung_tcpg_6121p30a_pal_ranges), - .has_tda9887 = 1, - .port1_active = 1, - .port2_active = 1, - .port2_invert_for_secam_lc = 1, }, }; diff --git a/trunk/drivers/media/video/tvaudio.c b/trunk/drivers/media/video/tvaudio.c index 936e3f746fba..c2b756107548 100644 --- a/trunk/drivers/media/video/tvaudio.c +++ b/trunk/drivers/media/video/tvaudio.c @@ -14,6 +14,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/media/video/tveeprom.c b/trunk/drivers/media/video/tveeprom.c index d95529e8e513..30f8d80ddcaa 100644 --- a/trunk/drivers/media/video/tveeprom.c +++ b/trunk/drivers/media/video/tveeprom.c @@ -73,14 +73,14 @@ static struct HAUPPAUGE_TUNER_FMT } hauppauge_tuner_fmt[] = { - { V4L2_STD_UNKNOWN, " UNKNOWN" }, - { V4L2_STD_UNKNOWN, " FM" }, - { V4L2_STD_B|V4L2_STD_GH, " PAL(B/G)" }, - { V4L2_STD_MN, " NTSC(M)" }, - { V4L2_STD_PAL_I, " PAL(I)" }, - { V4L2_STD_SECAM_L|V4L2_STD_SECAM_LC, " SECAM(L/L')" }, - { V4L2_STD_DK, " PAL(D/D1/K)" }, - { V4L2_STD_ATSC, " ATSC/DVB Digital" }, + { V4L2_STD_UNKNOWN," UNKNOWN" }, + { V4L2_STD_UNKNOWN," FM" }, + { V4L2_STD_PAL_BG, " PAL(B/G)" }, + { V4L2_STD_NTSC_M, " NTSC(M)" }, + { V4L2_STD_PAL_I, " PAL(I)" }, + { V4L2_STD_SECAM_L," SECAM(L/L')" }, + { V4L2_STD_PAL_DK, " PAL(D/D1/K)" }, + { V4L2_STD_ATSC, " ATSC/DVB Digital" }, }; /* This is the full list of possible tuners. Many thanks to Hauppauge for @@ -219,7 +219,7 @@ hauppauge_tuner[] = { TUNER_ABSENT, "Thompson DTT75105"}, { TUNER_ABSENT, "Conexant_CX24109"}, { TUNER_TCL_2002N, "TCL M2523_5N_E"}, - { TUNER_TCL_2002MB, "TCL M2523_3DB_E"}, + { TUNER_ABSENT, "TCL M2523_3DB_E"}, { TUNER_ABSENT, "Philips 8275A"}, { TUNER_ABSENT, "Microtune MT2060"}, { TUNER_ABSENT, "Philips FM1236 MK5"}, diff --git a/trunk/drivers/media/video/usbvideo/usbvideo.h b/trunk/drivers/media/video/usbvideo/usbvideo.h index 051775d4c726..49dbee5f5628 100644 --- a/trunk/drivers/media/video/usbvideo/usbvideo.h +++ b/trunk/drivers/media/video/usbvideo/usbvideo.h @@ -16,6 +16,7 @@ #ifndef usbvideo_h #define usbvideo_h +#include #include #include #include diff --git a/trunk/drivers/media/video/v4l1-compat.c b/trunk/drivers/media/video/v4l1-compat.c index d83a2c84d233..19d3c20dc7ef 100644 --- a/trunk/drivers/media/video/v4l1-compat.c +++ b/trunk/drivers/media/video/v4l1-compat.c @@ -16,6 +16,7 @@ * */ +#include #include #include diff --git a/trunk/drivers/media/video/v4l2-common.c b/trunk/drivers/media/video/v4l2-common.c index f06dc19e504a..97f946db8597 100644 --- a/trunk/drivers/media/video/v4l2-common.c +++ b/trunk/drivers/media/video/v4l2-common.c @@ -44,6 +44,7 @@ * Added Gerd Knorrs v4l1 enhancements (Justin Schoeman) */ +#include #include #include #include diff --git a/trunk/drivers/media/video/videocodec.c b/trunk/drivers/media/video/videocodec.c index 2ae3fb250630..8f271de57fd6 100644 --- a/trunk/drivers/media/video/videocodec.c +++ b/trunk/drivers/media/video/videocodec.c @@ -36,6 +36,7 @@ #include // kernel config is here (procfs flag) +#include #ifdef CONFIG_PROC_FS #include diff --git a/trunk/drivers/media/video/videocodec.h b/trunk/drivers/media/video/videocodec.h index 97a3bbeda505..8c233720b6a5 100644 --- a/trunk/drivers/media/video/videocodec.h +++ b/trunk/drivers/media/video/videocodec.h @@ -222,14 +222,14 @@ M zr36055[1] 0001 0000c001 00000000 (zr36050[1]) /* ========================= */ struct vfe_polarity { - unsigned int vsync_pol:1; - unsigned int hsync_pol:1; - unsigned int field_pol:1; - unsigned int blank_pol:1; - unsigned int subimg_pol:1; - unsigned int poe_pol:1; - unsigned int pvalid_pol:1; - unsigned int vclk_pol:1; + int vsync_pol:1; + int hsync_pol:1; + int field_pol:1; + int blank_pol:1; + int subimg_pol:1; + int poe_pol:1; + int pvalid_pol:1; + int vclk_pol:1; }; struct vfe_settings { diff --git a/trunk/drivers/media/video/w9968cf.h b/trunk/drivers/media/video/w9968cf.h index ec7696e8f1fa..2836b45ec206 100644 --- a/trunk/drivers/media/video/w9968cf.h +++ b/trunk/drivers/media/video/w9968cf.h @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/media/video/zoran_card.c b/trunk/drivers/media/video/zoran_card.c index 33b32f3cf84e..958c1e6fc852 100644 --- a/trunk/drivers/media/video/zoran_card.c +++ b/trunk/drivers/media/video/zoran_card.c @@ -29,6 +29,7 @@ #include +#include #include #include #include diff --git a/trunk/drivers/media/video/zoran_device.c b/trunk/drivers/media/video/zoran_device.c index 3cbac2e8aed3..02168d9c2187 100644 --- a/trunk/drivers/media/video/zoran_device.c +++ b/trunk/drivers/media/video/zoran_device.c @@ -27,6 +27,7 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/drivers/media/video/zoran_driver.c b/trunk/drivers/media/video/zoran_driver.c index d9a5876eb386..9711f6248ef7 100644 --- a/trunk/drivers/media/video/zoran_driver.c +++ b/trunk/drivers/media/video/zoran_driver.c @@ -44,6 +44,7 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/drivers/media/video/zoran_procfs.c b/trunk/drivers/media/video/zoran_procfs.c index c7f6f6488360..f4ffe79bdc5b 100644 --- a/trunk/drivers/media/video/zoran_procfs.c +++ b/trunk/drivers/media/video/zoran_procfs.c @@ -27,6 +27,7 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/drivers/media/video/zr36120_mem.c b/trunk/drivers/media/video/zr36120_mem.c index 416eaa93b8a4..c87113d6cc60 100644 --- a/trunk/drivers/media/video/zr36120_mem.c +++ b/trunk/drivers/media/video/zr36120_mem.c @@ -18,6 +18,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/drivers/message/fusion/mptbase.c b/trunk/drivers/message/fusion/mptbase.c index 2544fc7af0f6..12dd8d493ee2 100644 --- a/trunk/drivers/message/fusion/mptbase.c +++ b/trunk/drivers/message/fusion/mptbase.c @@ -46,6 +46,7 @@ */ /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ +#include #include #include #include @@ -5591,7 +5592,7 @@ mpt_HardResetHandler(MPT_ADAPTER *ioc, int sleepFlag) /* The SCSI driver needs to adjust timeouts on all current * commands prior to the diagnostic reset being issued. - * Prevents timeouts occurring during a diagnostic reset...very bad. + * Prevents timeouts occuring during a diagnostic reset...very bad. * For all other protocol drivers, this is a no-op. */ { diff --git a/trunk/drivers/message/fusion/mptbase.h b/trunk/drivers/message/fusion/mptbase.h index 32ae4d664545..4720f9ae86aa 100644 --- a/trunk/drivers/message/fusion/mptbase.h +++ b/trunk/drivers/message/fusion/mptbase.h @@ -49,6 +49,7 @@ #define MPTBASE_H_INCLUDED /*{-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ +#include #include #include diff --git a/trunk/drivers/message/i2o/debug.c b/trunk/drivers/message/i2o/debug.c index 8abe45e49ad7..5a6cca8e8c45 100644 --- a/trunk/drivers/message/i2o/debug.c +++ b/trunk/drivers/message/i2o/debug.c @@ -1,3 +1,4 @@ +#include #include #include #include diff --git a/trunk/drivers/mfd/ucb1x00-core.c b/trunk/drivers/mfd/ucb1x00-core.c index 6fe2ff5a63db..c8426a9bf273 100644 --- a/trunk/drivers/mfd/ucb1x00-core.c +++ b/trunk/drivers/mfd/ucb1x00-core.c @@ -16,6 +16,7 @@ * Note that all locks are private to this file. Nothing else may * touch them. */ +#include #include #include #include diff --git a/trunk/drivers/mfd/ucb1x00-ts.c b/trunk/drivers/mfd/ucb1x00-ts.c index 02776814443e..79fd062ccb34 100644 --- a/trunk/drivers/mfd/ucb1x00-ts.c +++ b/trunk/drivers/mfd/ucb1x00-ts.c @@ -17,6 +17,7 @@ * pin should provide pulses even when the LCD is blanked, otherwise * a pen touch needed to unblank the LCD will never be read. */ +#include #include #include #include diff --git a/trunk/drivers/misc/ibmasm/ibmasm.h b/trunk/drivers/misc/ibmasm/ibmasm.h index 634d538ccd14..6aba41954448 100644 --- a/trunk/drivers/misc/ibmasm/ibmasm.h +++ b/trunk/drivers/misc/ibmasm/ibmasm.h @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/mmc/at91_mci.c b/trunk/drivers/mmc/at91_mci.c index 075a2a07924e..3228516b7d19 100644 --- a/trunk/drivers/mmc/at91_mci.c +++ b/trunk/drivers/mmc/at91_mci.c @@ -53,6 +53,7 @@ Gets the status of the write protect pin, if available. */ +#include #include #include #include diff --git a/trunk/drivers/mmc/au1xmmc.c b/trunk/drivers/mmc/au1xmmc.c index 41069908f4a7..5dc4bee7abeb 100644 --- a/trunk/drivers/mmc/au1xmmc.c +++ b/trunk/drivers/mmc/au1xmmc.c @@ -34,6 +34,7 @@ * So we use the timer to check the status manually. */ +#include #include #include #include diff --git a/trunk/drivers/mmc/imxmmc.c b/trunk/drivers/mmc/imxmmc.c index 7ca9e95bdf89..5c62f4e6ad06 100644 --- a/trunk/drivers/mmc/imxmmc.c +++ b/trunk/drivers/mmc/imxmmc.c @@ -25,6 +25,7 @@ * deficiencies * */ +#include #ifdef CONFIG_MMC_DEBUG #define DEBUG diff --git a/trunk/drivers/mmc/mmc.c b/trunk/drivers/mmc/mmc.c index 247ff2f23ac9..6201f3086a02 100644 --- a/trunk/drivers/mmc/mmc.c +++ b/trunk/drivers/mmc/mmc.c @@ -9,6 +9,7 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/drivers/mmc/mmci.c b/trunk/drivers/mmc/mmci.c index 9dfb34a857e3..8576a65ca1c3 100644 --- a/trunk/drivers/mmc/mmci.c +++ b/trunk/drivers/mmc/mmci.c @@ -7,6 +7,7 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/drivers/mmc/omap.c b/trunk/drivers/mmc/omap.c index 7a4840ec53b7..c25244b3657b 100644 --- a/trunk/drivers/mmc/omap.c +++ b/trunk/drivers/mmc/omap.c @@ -11,6 +11,7 @@ * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/drivers/mmc/pxamci.c b/trunk/drivers/mmc/pxamci.c index ef350908478c..b49368fd96b8 100644 --- a/trunk/drivers/mmc/pxamci.c +++ b/trunk/drivers/mmc/pxamci.c @@ -16,6 +16,7 @@ * 1 and 3 byte data transfers not supported * max block length up to 1023 */ +#include #include #include #include diff --git a/trunk/drivers/mmc/wbsd.c b/trunk/drivers/mmc/wbsd.c index 3fcd86c08ebd..8167332d4013 100644 --- a/trunk/drivers/mmc/wbsd.c +++ b/trunk/drivers/mmc/wbsd.c @@ -21,6 +21,7 @@ * - On APIC systems the FIFO empty interrupt is sometimes lost. */ +#include #include #include #include diff --git a/trunk/drivers/mtd/chips/cfi_cmdset_0002.c b/trunk/drivers/mtd/chips/cfi_cmdset_0002.c index 9885726a16e4..1e01ad38b26e 100644 --- a/trunk/drivers/mtd/chips/cfi_cmdset_0002.c +++ b/trunk/drivers/mtd/chips/cfi_cmdset_0002.c @@ -21,6 +21,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/mtd/chips/cfi_probe.c b/trunk/drivers/mtd/chips/cfi_probe.c index 60e11a0ada97..4bf9f8cac0dd 100644 --- a/trunk/drivers/mtd/chips/cfi_probe.c +++ b/trunk/drivers/mtd/chips/cfi_probe.c @@ -4,6 +4,7 @@ $Id: cfi_probe.c,v 1.86 2005/11/29 14:48:31 gleixner Exp $ */ +#include #include #include #include diff --git a/trunk/drivers/mtd/chips/chipreg.c b/trunk/drivers/mtd/chips/chipreg.c index 2174c97549f0..c2127840a183 100644 --- a/trunk/drivers/mtd/chips/chipreg.c +++ b/trunk/drivers/mtd/chips/chipreg.c @@ -6,6 +6,7 @@ */ #include +#include #include #include #include diff --git a/trunk/drivers/mtd/chips/jedec_probe.c b/trunk/drivers/mtd/chips/jedec_probe.c index 8f39d0a31438..517ea33e7260 100644 --- a/trunk/drivers/mtd/chips/jedec_probe.c +++ b/trunk/drivers/mtd/chips/jedec_probe.c @@ -8,6 +8,7 @@ Occasionally maintained by Thayne Harbaugh tharbaugh at lnxi dot com */ +#include #include #include #include diff --git a/trunk/drivers/mtd/devices/block2mtd.c b/trunk/drivers/mtd/devices/block2mtd.c index ede3561be870..be3f1c136d02 100644 --- a/trunk/drivers/mtd/devices/block2mtd.c +++ b/trunk/drivers/mtd/devices/block2mtd.c @@ -8,6 +8,7 @@ * * Licence: GPL */ +#include #include #include #include diff --git a/trunk/drivers/mtd/devices/docprobe.c b/trunk/drivers/mtd/devices/docprobe.c index 78872c3f3760..593bb033a3fa 100644 --- a/trunk/drivers/mtd/devices/docprobe.c +++ b/trunk/drivers/mtd/devices/docprobe.c @@ -40,6 +40,7 @@ */ #define DOC_SINGLE_DRIVER +#include #include #include #include diff --git a/trunk/drivers/mtd/devices/mtd_dataflash.c b/trunk/drivers/mtd/devices/mtd_dataflash.c index 5db716045927..04271d02b6b6 100644 --- a/trunk/drivers/mtd/devices/mtd_dataflash.c +++ b/trunk/drivers/mtd/devices/mtd_dataflash.c @@ -9,6 +9,7 @@ * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/drivers/mtd/devices/mtdram.c b/trunk/drivers/mtd/devices/mtdram.c index e427c82d5f4c..b4438eacfd80 100644 --- a/trunk/drivers/mtd/devices/mtdram.c +++ b/trunk/drivers/mtd/devices/mtdram.c @@ -10,6 +10,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/mtd/devices/pmc551.c b/trunk/drivers/mtd/devices/pmc551.c index 6f9bbf6fee4d..30f07b473ae2 100644 --- a/trunk/drivers/mtd/devices/pmc551.c +++ b/trunk/drivers/mtd/devices/pmc551.c @@ -82,6 +82,7 @@ * * Comb the init routine. It's still a bit cludgy on a few things. */ +#include #include #include #include diff --git a/trunk/drivers/mtd/inftlcore.c b/trunk/drivers/mtd/inftlcore.c index 4116535805f1..1e21a2c3dd29 100644 --- a/trunk/drivers/mtd/inftlcore.c +++ b/trunk/drivers/mtd/inftlcore.c @@ -24,6 +24,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include #include #include diff --git a/trunk/drivers/mtd/maps/alchemy-flash.c b/trunk/drivers/mtd/maps/alchemy-flash.c index 7fc8097e41d2..b933a2a27b18 100644 --- a/trunk/drivers/mtd/maps/alchemy-flash.c +++ b/trunk/drivers/mtd/maps/alchemy-flash.c @@ -7,6 +7,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/mtd/maps/amd76xrom.c b/trunk/drivers/mtd/maps/amd76xrom.c index 447955be18af..a50587005263 100644 --- a/trunk/drivers/mtd/maps/amd76xrom.c +++ b/trunk/drivers/mtd/maps/amd76xrom.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/mtd/maps/ceiva.c b/trunk/drivers/mtd/maps/ceiva.c index 0402c21e291d..5a95ab370a97 100644 --- a/trunk/drivers/mtd/maps/ceiva.c +++ b/trunk/drivers/mtd/maps/ceiva.c @@ -14,6 +14,7 @@ * $Id: ceiva.c,v 1.11 2004/09/16 23:27:12 gleixner Exp $ */ +#include #include #include #include diff --git a/trunk/drivers/mtd/maps/cstm_mips_ixx.c b/trunk/drivers/mtd/maps/cstm_mips_ixx.c index aa56defb94c8..a370953c1513 100644 --- a/trunk/drivers/mtd/maps/cstm_mips_ixx.c +++ b/trunk/drivers/mtd/maps/cstm_mips_ixx.c @@ -38,6 +38,7 @@ #include #include #include +#include #include #if defined(CONFIG_MIPS_ITE8172) || defined(CONFIG_MIPS_IVR) diff --git a/trunk/drivers/mtd/maps/dbox2-flash.c b/trunk/drivers/mtd/maps/dbox2-flash.c index 92a9c7fac993..85c2a9e22b1e 100644 --- a/trunk/drivers/mtd/maps/dbox2-flash.c +++ b/trunk/drivers/mtd/maps/dbox2-flash.c @@ -12,6 +12,7 @@ #include #include #include +#include #include /* partition_info gives details on the logical partitions that the split the diff --git a/trunk/drivers/mtd/maps/dc21285.c b/trunk/drivers/mtd/maps/dc21285.c index b32bb9347d71..8b3784e2de89 100644 --- a/trunk/drivers/mtd/maps/dc21285.c +++ b/trunk/drivers/mtd/maps/dc21285.c @@ -7,6 +7,7 @@ * * $Id: dc21285.c,v 1.24 2005/11/07 11:14:26 gleixner Exp $ */ +#include #include #include #include diff --git a/trunk/drivers/mtd/maps/dilnetpc.c b/trunk/drivers/mtd/maps/dilnetpc.c index b1104fe1f207..c299d10b33e6 100644 --- a/trunk/drivers/mtd/maps/dilnetpc.c +++ b/trunk/drivers/mtd/maps/dilnetpc.c @@ -25,6 +25,7 @@ * and http://www.ssv-embedded.de/ssv/pc104/p170.htm */ +#include #include #include #include diff --git a/trunk/drivers/mtd/maps/dmv182.c b/trunk/drivers/mtd/maps/dmv182.c index a43c49905cac..2bb3c0f0f970 100644 --- a/trunk/drivers/mtd/maps/dmv182.c +++ b/trunk/drivers/mtd/maps/dmv182.c @@ -16,6 +16,7 @@ * option) any later version. */ +#include #include #include #include diff --git a/trunk/drivers/mtd/maps/ebony.c b/trunk/drivers/mtd/maps/ebony.c index 641e1dd8479e..60a6e51d662f 100644 --- a/trunk/drivers/mtd/maps/ebony.c +++ b/trunk/drivers/mtd/maps/ebony.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/mtd/maps/edb7312.c b/trunk/drivers/mtd/maps/edb7312.c index 1c5b97c89685..b48a3473ffc1 100644 --- a/trunk/drivers/mtd/maps/edb7312.c +++ b/trunk/drivers/mtd/maps/edb7312.c @@ -17,6 +17,7 @@ #include #include #include +#include #ifdef CONFIG_MTD_PARTITIONS #include diff --git a/trunk/drivers/mtd/maps/h720x-flash.c b/trunk/drivers/mtd/maps/h720x-flash.c index 6dde3182d64a..0667101ccbe1 100644 --- a/trunk/drivers/mtd/maps/h720x-flash.c +++ b/trunk/drivers/mtd/maps/h720x-flash.c @@ -8,6 +8,7 @@ * 2003 Thomas Gleixner */ +#include #include #include #include diff --git a/trunk/drivers/mtd/maps/ichxrom.c b/trunk/drivers/mtd/maps/ichxrom.c index db4b570d874a..16732794edf3 100644 --- a/trunk/drivers/mtd/maps/ichxrom.c +++ b/trunk/drivers/mtd/maps/ichxrom.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/mtd/maps/impa7.c b/trunk/drivers/mtd/maps/impa7.c index a0b4dc7155dc..ba7f40311a7e 100644 --- a/trunk/drivers/mtd/maps/impa7.c +++ b/trunk/drivers/mtd/maps/impa7.c @@ -17,6 +17,7 @@ #include #include #include +#include #ifdef CONFIG_MTD_PARTITIONS #include diff --git a/trunk/drivers/mtd/maps/integrator-flash.c b/trunk/drivers/mtd/maps/integrator-flash.c index c8db01b3e45f..a3ba52fbd868 100644 --- a/trunk/drivers/mtd/maps/integrator-flash.c +++ b/trunk/drivers/mtd/maps/integrator-flash.c @@ -26,6 +26,7 @@ ======================================================================*/ +#include #include #include #include diff --git a/trunk/drivers/mtd/maps/ipaq-flash.c b/trunk/drivers/mtd/maps/ipaq-flash.c index f27c132794c3..b8ccb0a95789 100644 --- a/trunk/drivers/mtd/maps/ipaq-flash.c +++ b/trunk/drivers/mtd/maps/ipaq-flash.c @@ -8,6 +8,7 @@ * $Id: ipaq-flash.c,v 1.5 2005/11/07 11:14:27 gleixner Exp $ */ +#include #include #include #include diff --git a/trunk/drivers/mtd/maps/l440gx.c b/trunk/drivers/mtd/maps/l440gx.c index 6b784ef5ee70..851bf9576052 100644 --- a/trunk/drivers/mtd/maps/l440gx.c +++ b/trunk/drivers/mtd/maps/l440gx.c @@ -13,6 +13,7 @@ #include #include #include +#include #define PIIXE_IOBASE_RESOURCE 11 diff --git a/trunk/drivers/mtd/maps/lasat.c b/trunk/drivers/mtd/maps/lasat.c index 1c13d2dc0cdf..c658d4045ef2 100644 --- a/trunk/drivers/mtd/maps/lasat.c +++ b/trunk/drivers/mtd/maps/lasat.c @@ -19,6 +19,7 @@ #include #include #include +#include #include static struct mtd_info *lasat_mtd; diff --git a/trunk/drivers/mtd/maps/mpc1211.c b/trunk/drivers/mtd/maps/mpc1211.c index 45a00fac88ac..4685e8e13460 100644 --- a/trunk/drivers/mtd/maps/mpc1211.c +++ b/trunk/drivers/mtd/maps/mpc1211.c @@ -15,6 +15,7 @@ #include #include #include +#include static struct mtd_info *flash_mtd; static struct mtd_partition *parsed_parts; diff --git a/trunk/drivers/mtd/maps/mtx-1_flash.c b/trunk/drivers/mtd/maps/mtx-1_flash.c index d884f2be28f6..5c25d4e552c6 100644 --- a/trunk/drivers/mtd/maps/mtx-1_flash.c +++ b/trunk/drivers/mtd/maps/mtx-1_flash.c @@ -8,6 +8,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/mtd/maps/ocotea.c b/trunk/drivers/mtd/maps/ocotea.c index 2f07602ba940..a21fcd195ab4 100644 --- a/trunk/drivers/mtd/maps/ocotea.c +++ b/trunk/drivers/mtd/maps/ocotea.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/mtd/maps/omap-toto-flash.c b/trunk/drivers/mtd/maps/omap-toto-flash.c index e6e391efbeb6..dc3765270057 100644 --- a/trunk/drivers/mtd/maps/omap-toto-flash.c +++ b/trunk/drivers/mtd/maps/omap-toto-flash.c @@ -8,6 +8,7 @@ * $Id: omap-toto-flash.c,v 1.5 2005/11/07 11:14:27 gleixner Exp $ */ +#include #include #include #include diff --git a/trunk/drivers/mtd/maps/physmap.c b/trunk/drivers/mtd/maps/physmap.c index 7799a25a7f2a..d6301f08906d 100644 --- a/trunk/drivers/mtd/maps/physmap.c +++ b/trunk/drivers/mtd/maps/physmap.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/mtd/maps/redwood.c b/trunk/drivers/mtd/maps/redwood.c index ec8fdae1dd99..50b14033613f 100644 --- a/trunk/drivers/mtd/maps/redwood.c +++ b/trunk/drivers/mtd/maps/redwood.c @@ -13,6 +13,7 @@ * or implied. */ +#include #include #include #include diff --git a/trunk/drivers/mtd/maps/sa1100-flash.c b/trunk/drivers/mtd/maps/sa1100-flash.c index 950bf1c57841..5cefb015633c 100644 --- a/trunk/drivers/mtd/maps/sa1100-flash.c +++ b/trunk/drivers/mtd/maps/sa1100-flash.c @@ -5,6 +5,7 @@ * * $Id: sa1100-flash.c,v 1.51 2005/11/07 11:14:28 gleixner Exp $ */ +#include #include #include #include diff --git a/trunk/drivers/mtd/maps/sbc8240.c b/trunk/drivers/mtd/maps/sbc8240.c index 7d0fcf8f4f33..350286dc1d2e 100644 --- a/trunk/drivers/mtd/maps/sbc8240.c +++ b/trunk/drivers/mtd/maps/sbc8240.c @@ -18,6 +18,7 @@ * Both parts are JEDEC compatible. */ +#include #include #include #include diff --git a/trunk/drivers/mtd/maps/sc520cdp.c b/trunk/drivers/mtd/maps/sc520cdp.c index 9b50cfc355b1..e8c130e1efd3 100644 --- a/trunk/drivers/mtd/maps/sc520cdp.c +++ b/trunk/drivers/mtd/maps/sc520cdp.c @@ -25,6 +25,7 @@ * For details see http://www.amd.com/products/epd/desiging/evalboards/18.elansc520/520_cdp_brief/index.html */ +#include #include #include #include diff --git a/trunk/drivers/mtd/maps/scb2_flash.c b/trunk/drivers/mtd/maps/scb2_flash.c index dcfb85840d1e..97a8dfd69258 100644 --- a/trunk/drivers/mtd/maps/scb2_flash.c +++ b/trunk/drivers/mtd/maps/scb2_flash.c @@ -53,6 +53,7 @@ #include #include #include +#include #include #include diff --git a/trunk/drivers/mtd/maps/scx200_docflash.c b/trunk/drivers/mtd/maps/scx200_docflash.c index 7391fd544e86..331a15859d71 100644 --- a/trunk/drivers/mtd/maps/scx200_docflash.c +++ b/trunk/drivers/mtd/maps/scx200_docflash.c @@ -8,6 +8,7 @@ */ #include +#include #include #include #include diff --git a/trunk/drivers/mtd/maps/solutionengine.c b/trunk/drivers/mtd/maps/solutionengine.c index d76ceef453ce..c53c2c369c9d 100644 --- a/trunk/drivers/mtd/maps/solutionengine.c +++ b/trunk/drivers/mtd/maps/solutionengine.c @@ -16,6 +16,7 @@ #include #include #include +#include #include static struct mtd_info *flash_mtd; diff --git a/trunk/drivers/mtd/maps/tqm834x.c b/trunk/drivers/mtd/maps/tqm834x.c index 58e5912bd381..c7ae9a515c1a 100644 --- a/trunk/drivers/mtd/maps/tqm834x.c +++ b/trunk/drivers/mtd/maps/tqm834x.c @@ -11,6 +11,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/mtd/maps/tqm8xxl.c b/trunk/drivers/mtd/maps/tqm8xxl.c index 19578ba84ee8..a43517053e7c 100644 --- a/trunk/drivers/mtd/maps/tqm8xxl.c +++ b/trunk/drivers/mtd/maps/tqm8xxl.c @@ -22,6 +22,7 @@ * Thus, we choose CONFIG_MTD_CFI_I2 & CONFIG_MTD_CFI_B4 at * kernel configuration. */ +#include #include #include #include diff --git a/trunk/drivers/mtd/maps/ts5500_flash.c b/trunk/drivers/mtd/maps/ts5500_flash.c index b47270e850bc..a7422c200567 100644 --- a/trunk/drivers/mtd/maps/ts5500_flash.c +++ b/trunk/drivers/mtd/maps/ts5500_flash.c @@ -26,6 +26,7 @@ * $Id: ts5500_flash.c,v 1.5 2005/11/07 11:14:28 gleixner Exp $ */ +#include #include #include #include diff --git a/trunk/drivers/mtd/maps/uclinux.c b/trunk/drivers/mtd/maps/uclinux.c index 389fea28b9a6..f7264dc2ac9b 100644 --- a/trunk/drivers/mtd/maps/uclinux.c +++ b/trunk/drivers/mtd/maps/uclinux.c @@ -10,6 +10,7 @@ /****************************************************************************/ +#include #include #include #include diff --git a/trunk/drivers/mtd/maps/walnut.c b/trunk/drivers/mtd/maps/walnut.c index ec80eec376bf..f46bec66150f 100644 --- a/trunk/drivers/mtd/maps/walnut.c +++ b/trunk/drivers/mtd/maps/walnut.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/mtd/maps/wr_sbc82xx_flash.c b/trunk/drivers/mtd/maps/wr_sbc82xx_flash.c index ac5b8105b6ef..60c197ec455b 100644 --- a/trunk/drivers/mtd/maps/wr_sbc82xx_flash.c +++ b/trunk/drivers/mtd/maps/wr_sbc82xx_flash.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include diff --git a/trunk/drivers/mtd/mtdblock.c b/trunk/drivers/mtd/mtdblock.c index 04ed34694b14..e5c78463ebfd 100644 --- a/trunk/drivers/mtd/mtdblock.c +++ b/trunk/drivers/mtd/mtdblock.c @@ -7,6 +7,7 @@ * (C) 1999-2003 David Woodhouse */ +#include #include #include #include diff --git a/trunk/drivers/mtd/mtdchar.c b/trunk/drivers/mtd/mtdchar.c index fb8b4f7e48d3..9a4b59d92525 100644 --- a/trunk/drivers/mtd/mtdchar.c +++ b/trunk/drivers/mtd/mtdchar.c @@ -5,6 +5,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/mtd/mtdcore.c b/trunk/drivers/mtd/mtdcore.c index 168d3ba063c3..16a952dd486a 100644 --- a/trunk/drivers/mtd/mtdcore.c +++ b/trunk/drivers/mtd/mtdcore.c @@ -6,6 +6,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/mtd/mtdpart.c b/trunk/drivers/mtd/mtdpart.c index 06a930372b7a..77a7123a5c56 100644 --- a/trunk/drivers/mtd/mtdpart.c +++ b/trunk/drivers/mtd/mtdpart.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/mtd/nand/nandsim.c b/trunk/drivers/mtd/nand/nandsim.c index 545ff252d81e..ebd64abc8be8 100644 --- a/trunk/drivers/mtd/nand/nandsim.c +++ b/trunk/drivers/mtd/nand/nandsim.c @@ -25,6 +25,7 @@ * $Id: nandsim.c,v 1.8 2005/03/19 15:33:56 dedekind Exp $ */ +#include #include #include #include diff --git a/trunk/drivers/mtd/nftlcore.c b/trunk/drivers/mtd/nftlcore.c index dd5cea8b4a7a..dc7573501d8c 100644 --- a/trunk/drivers/mtd/nftlcore.c +++ b/trunk/drivers/mtd/nftlcore.c @@ -11,6 +11,7 @@ #define PRERELEASE +#include #include #include #include diff --git a/trunk/drivers/net/3c509.c b/trunk/drivers/net/3c509.c index cbdae54f715f..dc845f36fe49 100644 --- a/trunk/drivers/net/3c509.c +++ b/trunk/drivers/net/3c509.c @@ -68,6 +68,7 @@ /* Maximum events (Rx packets, etc.) to handle at each interrupt. */ static int max_interrupt_work = 10; +#include #include #ifdef CONFIG_MCA #include diff --git a/trunk/drivers/net/3c515.c b/trunk/drivers/net/3c515.c index ac60f3f62db8..91d1c4c24d9b 100644 --- a/trunk/drivers/net/3c515.c +++ b/trunk/drivers/net/3c515.c @@ -57,6 +57,7 @@ static int max_interrupt_work = 20; #define RX_RING_SIZE 16 #define PKT_BUF_SZ 1536 /* Size of each temporary Rx buffer. */ +#include #include #include #include diff --git a/trunk/drivers/net/3c59x.c b/trunk/drivers/net/3c59x.c index 45125db44177..d2f808979a2b 100644 --- a/trunk/drivers/net/3c59x.c +++ b/trunk/drivers/net/3c59x.c @@ -236,6 +236,7 @@ static int vortex_debug = VORTEX_DEBUG; static int vortex_debug = 1; #endif +#include #include #include #include diff --git a/trunk/drivers/net/8139cp.c b/trunk/drivers/net/8139cp.c index 1d7af760c2b1..d26dd6a7062d 100644 --- a/trunk/drivers/net/8139cp.c +++ b/trunk/drivers/net/8139cp.c @@ -52,6 +52,7 @@ #define DRV_RELDATE "Mar 22, 2004" +#include #include #include #include diff --git a/trunk/drivers/net/8139too.c b/trunk/drivers/net/8139too.c index d21e98f5adbc..ed2e3c03bc88 100644 --- a/trunk/drivers/net/8139too.c +++ b/trunk/drivers/net/8139too.c @@ -93,6 +93,7 @@ #define DRV_VERSION "0.9.27" +#include #include #include #include diff --git a/trunk/drivers/net/82596.c b/trunk/drivers/net/82596.c index 7e2ca9571467..8a9f7d61b9b1 100644 --- a/trunk/drivers/net/82596.c +++ b/trunk/drivers/net/82596.c @@ -40,6 +40,7 @@ */ +#include #include #include #include diff --git a/trunk/drivers/net/8390.h b/trunk/drivers/net/8390.h index a9a58f518f45..51e39dcd0603 100644 --- a/trunk/drivers/net/8390.h +++ b/trunk/drivers/net/8390.h @@ -7,6 +7,7 @@ #ifndef _8390_h #define _8390_h +#include #include #include #include diff --git a/trunk/drivers/net/Space.c b/trunk/drivers/net/Space.c index a8c245a82261..60304f7e7e5b 100644 --- a/trunk/drivers/net/Space.c +++ b/trunk/drivers/net/Space.c @@ -27,6 +27,7 @@ * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/drivers/net/a2065.c b/trunk/drivers/net/a2065.c index 519390c033c3..71165ac0257a 100644 --- a/trunk/drivers/net/a2065.c +++ b/trunk/drivers/net/a2065.c @@ -48,6 +48,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/net/acenic.c b/trunk/drivers/net/acenic.c index c290b5ae63b2..23ff22ba5d31 100644 --- a/trunk/drivers/net/acenic.c +++ b/trunk/drivers/net/acenic.c @@ -50,6 +50,7 @@ * Grant Grundler : PCI write posting fixes. */ +#include #include #include #include diff --git a/trunk/drivers/net/acenic.h b/trunk/drivers/net/acenic.h index 62ec8ceee698..a97107023495 100644 --- a/trunk/drivers/net/acenic.h +++ b/trunk/drivers/net/acenic.h @@ -1,6 +1,7 @@ #ifndef _ACENIC_H_ #define _ACENIC_H_ +#include /* * Generate TX index update each time, when TX ring is closed. diff --git a/trunk/drivers/net/acenic_firmware.h b/trunk/drivers/net/acenic_firmware.h index ec146f60d77b..d7882dd783c8 100644 --- a/trunk/drivers/net/acenic_firmware.h +++ b/trunk/drivers/net/acenic_firmware.h @@ -1,3 +1,4 @@ +#include /* * Declare these here even if Tigon I support is disabled to avoid * the compiler complaining about undefined symbols. diff --git a/trunk/drivers/net/amd8111e.c b/trunk/drivers/net/amd8111e.c index c017c4f6b3b5..d9ba8be72af8 100644 --- a/trunk/drivers/net/amd8111e.c +++ b/trunk/drivers/net/amd8111e.c @@ -69,6 +69,7 @@ Revision History: */ +#include #include #include #include diff --git a/trunk/drivers/net/appletalk/cops.c b/trunk/drivers/net/appletalk/cops.c index 1d01ac0000e4..9edaa183227a 100644 --- a/trunk/drivers/net/appletalk/cops.c +++ b/trunk/drivers/net/appletalk/cops.c @@ -48,6 +48,7 @@ static const char *version = * the driver figure it out. */ +#include #include #include #include diff --git a/trunk/drivers/net/appletalk/cops_ffdrv.h b/trunk/drivers/net/appletalk/cops_ffdrv.h index b02005087c1b..31cf8c9c947f 100644 --- a/trunk/drivers/net/appletalk/cops_ffdrv.h +++ b/trunk/drivers/net/appletalk/cops_ffdrv.h @@ -24,6 +24,7 @@ * - Jay Schulist */ +#include #ifdef CONFIG_COPS_DAYNA diff --git a/trunk/drivers/net/appletalk/cops_ltdrv.h b/trunk/drivers/net/appletalk/cops_ltdrv.h index c699b1ad31da..4afb8e18ba65 100644 --- a/trunk/drivers/net/appletalk/cops_ltdrv.h +++ b/trunk/drivers/net/appletalk/cops_ltdrv.h @@ -23,6 +23,7 @@ * - Jay Schulist */ +#include #ifdef CONFIG_COPS_TANGENT diff --git a/trunk/drivers/net/appletalk/ipddp.c b/trunk/drivers/net/appletalk/ipddp.c index 7f7dd450226a..1a44a79ed064 100644 --- a/trunk/drivers/net/appletalk/ipddp.c +++ b/trunk/drivers/net/appletalk/ipddp.c @@ -23,6 +23,7 @@ * of the GNU General Public License, incorporated herein by reference. */ +#include #include #include #include diff --git a/trunk/drivers/net/arcnet/arcnet.c b/trunk/drivers/net/arcnet/arcnet.c index 5a95005253fa..fabc0607b0f1 100644 --- a/trunk/drivers/net/arcnet/arcnet.c +++ b/trunk/drivers/net/arcnet/arcnet.c @@ -44,6 +44,7 @@ #define VERSION "arcnet: v3.93 BETA 2000/04/29 - by Avery Pennarun et al.\n" #include +#include #include #include #include diff --git a/trunk/drivers/net/arm/at91_ether.c b/trunk/drivers/net/arm/at91_ether.c index 85493b7b924f..613005a0285d 100644 --- a/trunk/drivers/net/arm/at91_ether.c +++ b/trunk/drivers/net/arm/at91_ether.c @@ -19,6 +19,7 @@ #include #include +#include #include #include #include diff --git a/trunk/drivers/net/at1700.c b/trunk/drivers/net/at1700.c index 5d7929c79bce..e613cc289749 100644 --- a/trunk/drivers/net/at1700.c +++ b/trunk/drivers/net/at1700.c @@ -35,6 +35,7 @@ response to inb()s from other device probes! */ +#include #include #include #include diff --git a/trunk/drivers/net/au1000_eth.c b/trunk/drivers/net/au1000_eth.c index 55f6e3f65b53..038d5fcb15e6 100644 --- a/trunk/drivers/net/au1000_eth.c +++ b/trunk/drivers/net/au1000_eth.c @@ -35,6 +35,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/net/bmac.c b/trunk/drivers/net/bmac.c index 6fad83f24c4f..bbca8ae8018c 100644 --- a/trunk/drivers/net/bmac.c +++ b/trunk/drivers/net/bmac.c @@ -7,6 +7,7 @@ * May 1999, Al Viro: proper release of /proc/net/bmac entry, switched to * dynamic procfs inode. */ +#include #include #include #include diff --git a/trunk/drivers/net/bnx2.c b/trunk/drivers/net/bnx2.c index 7e32d4ea71e2..7635736cc791 100644 --- a/trunk/drivers/net/bnx2.c +++ b/trunk/drivers/net/bnx2.c @@ -9,6 +9,7 @@ * Written by: Michael Chan (mchan@broadcom.com) */ +#include #include #include @@ -56,8 +57,8 @@ #define DRV_MODULE_NAME "bnx2" #define PFX DRV_MODULE_NAME ": " -#define DRV_MODULE_VERSION "1.4.43" -#define DRV_MODULE_RELDATE "June 28, 2006" +#define DRV_MODULE_VERSION "1.4.42" +#define DRV_MODULE_RELDATE "June 12, 2006" #define RUN_AT(x) (jiffies + (x)) @@ -1675,7 +1676,7 @@ bnx2_tx_int(struct bnx2 *bp) tx_free_bd += last + 1; - dev_kfree_skb(skb); + dev_kfree_skb_irq(skb); hw_cons = bp->hw_tx_cons = sblk->status_tx_quick_consumer_index0; @@ -1823,7 +1824,7 @@ bnx2_rx_int(struct bnx2 *bp, int budget) if ((len > (bp->dev->mtu + ETH_HLEN)) && (ntohs(skb->protocol) != 0x8100)) { - dev_kfree_skb(skb); + dev_kfree_skb_irq(skb); goto next_rx; } @@ -3642,7 +3643,7 @@ bnx2_free_tx_skbs(struct bnx2 *bp) skb_shinfo(skb)->frags[j].size, PCI_DMA_TODEVICE); } - dev_kfree_skb(skb); + dev_kfree_skb_any(skb); i += j + 1; } @@ -3668,7 +3669,7 @@ bnx2_free_rx_skbs(struct bnx2 *bp) rx_buf->skb = NULL; - dev_kfree_skb(skb); + dev_kfree_skb_any(skb); } } @@ -3998,7 +3999,7 @@ bnx2_run_loopback(struct bnx2 *bp, int loopback_mode) udelay(5); pci_unmap_single(bp->pdev, map, pkt_size, PCI_DMA_TODEVICE); - dev_kfree_skb(skb); + dev_kfree_skb_irq(skb); if (bp->status_blk->status_tx_quick_consumer_index0 != bp->tx_prod) { goto loopback_test_done; @@ -4540,7 +4541,7 @@ bnx2_close(struct net_device *dev) bnx2_netif_stop(bp); del_timer_sync(&bp->timer); if (bp->flags & NO_WOL_FLAG) - reset_code = BNX2_DRV_MSG_CODE_UNLOAD_LNK_DN; + reset_code = BNX2_DRV_MSG_CODE_UNLOAD; else if (bp->wol) reset_code = BNX2_DRV_MSG_CODE_SUSPEND_WOL; else @@ -5127,16 +5128,6 @@ bnx2_set_rx_csum(struct net_device *dev, u32 data) return 0; } -static int -bnx2_set_tso(struct net_device *dev, u32 data) -{ - if (data) - dev->features |= NETIF_F_TSO | NETIF_F_TSO_ECN; - else - dev->features &= ~(NETIF_F_TSO | NETIF_F_TSO_ECN); - return 0; -} - #define BNX2_NUM_STATS 46 static struct { @@ -5454,7 +5445,7 @@ static struct ethtool_ops bnx2_ethtool_ops = { .set_sg = ethtool_op_set_sg, #ifdef BCM_TSO .get_tso = ethtool_op_get_tso, - .set_tso = bnx2_set_tso, + .set_tso = ethtool_op_set_tso, #endif .self_test_count = bnx2_self_test_count, .self_test = bnx2_self_test, @@ -5935,7 +5926,7 @@ bnx2_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) dev->features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX; #endif #ifdef BCM_TSO - dev->features |= NETIF_F_TSO | NETIF_F_TSO_ECN; + dev->features |= NETIF_F_TSO; #endif netif_carrier_off(bp->dev); @@ -5977,7 +5968,7 @@ bnx2_suspend(struct pci_dev *pdev, pm_message_t state) netif_device_detach(dev); del_timer_sync(&bp->timer); if (bp->flags & NO_WOL_FLAG) - reset_code = BNX2_DRV_MSG_CODE_UNLOAD_LNK_DN; + reset_code = BNX2_DRV_MSG_CODE_UNLOAD; else if (bp->wol) reset_code = BNX2_DRV_MSG_CODE_SUSPEND_WOL; else diff --git a/trunk/drivers/net/bnx2.h b/trunk/drivers/net/bnx2.h index 658c5ee95c73..5845e334941b 100644 --- a/trunk/drivers/net/bnx2.h +++ b/trunk/drivers/net/bnx2.h @@ -4174,7 +4174,6 @@ struct fw_info { #define BNX2_DRV_MSG_CODE_PULSE 0x06000000 #define BNX2_DRV_MSG_CODE_DIAG 0x07000000 #define BNX2_DRV_MSG_CODE_SUSPEND_NO_WOL 0x09000000 -#define BNX2_DRV_MSG_CODE_UNLOAD_LNK_DN 0x0b000000 #define BNX2_DRV_MSG_DATA 0x00ff0000 #define BNX2_DRV_MSG_DATA_WAIT0 0x00010000 diff --git a/trunk/drivers/net/bonding/bond_main.c b/trunk/drivers/net/bonding/bond_main.c index 8b951238f3a2..8171cae06688 100644 --- a/trunk/drivers/net/bonding/bond_main.c +++ b/trunk/drivers/net/bonding/bond_main.c @@ -33,6 +33,7 @@ //#define BONDING_DEBUG 1 +#include #include #include #include diff --git a/trunk/drivers/net/bonding/bond_sysfs.c b/trunk/drivers/net/bonding/bond_sysfs.c index cfe4dc3a93a3..5a9bd95884be 100644 --- a/trunk/drivers/net/bonding/bond_sysfs.c +++ b/trunk/drivers/net/bonding/bond_sysfs.c @@ -20,6 +20,7 @@ * file called LICENSE. * */ +#include #include #include #include diff --git a/trunk/drivers/net/cassini.c b/trunk/drivers/net/cassini.c index b89c7bb2c591..565a54f1d06a 100644 --- a/trunk/drivers/net/cassini.c +++ b/trunk/drivers/net/cassini.c @@ -66,6 +66,7 @@ * by default, the selective clear mask is set up to process rx packets. */ +#include #include #include diff --git a/trunk/drivers/net/chelsio/common.h b/trunk/drivers/net/chelsio/common.h index 5d9dd14427c5..bf3e7b6a7a18 100644 --- a/trunk/drivers/net/chelsio/common.h +++ b/trunk/drivers/net/chelsio/common.h @@ -39,6 +39,7 @@ #ifndef _CXGB_COMMON_H_ #define _CXGB_COMMON_H_ +#include #include #include #include diff --git a/trunk/drivers/net/chelsio/cxgb2.c b/trunk/drivers/net/chelsio/cxgb2.c index c490a862e79c..7fe2638ae06d 100644 --- a/trunk/drivers/net/chelsio/cxgb2.c +++ b/trunk/drivers/net/chelsio/cxgb2.c @@ -37,6 +37,7 @@ ****************************************************************************/ #include "common.h" +#include #include #include #include diff --git a/trunk/drivers/net/chelsio/sge.c b/trunk/drivers/net/chelsio/sge.c index 87f94d939ff8..53efff6da784 100644 --- a/trunk/drivers/net/chelsio/sge.c +++ b/trunk/drivers/net/chelsio/sge.c @@ -39,6 +39,7 @@ #include "common.h" +#include #include #include #include diff --git a/trunk/drivers/net/cris/eth_v10.c b/trunk/drivers/net/cris/eth_v10.c index d3654fd71604..64105e4eaf31 100644 --- a/trunk/drivers/net/cris/eth_v10.c +++ b/trunk/drivers/net/cris/eth_v10.c @@ -218,6 +218,7 @@ * */ +#include #include diff --git a/trunk/drivers/net/cs89x0.c b/trunk/drivers/net/cs89x0.c index 47eecce35fa4..ef54ebeb29b8 100644 --- a/trunk/drivers/net/cs89x0.c +++ b/trunk/drivers/net/cs89x0.c @@ -100,6 +100,7 @@ /* Always include 'config.h' first in case the user wants to turn on or override something. */ +#include #include /* diff --git a/trunk/drivers/net/cs89x0.h b/trunk/drivers/net/cs89x0.h index 968fe11a0bf0..bd954aaa636f 100644 --- a/trunk/drivers/net/cs89x0.h +++ b/trunk/drivers/net/cs89x0.h @@ -14,6 +14,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #define PP_ChipID 0x0000 /* offset 0h -> Corp -ID */ /* offset 2h -> Model/Product Number */ diff --git a/trunk/drivers/net/declance.c b/trunk/drivers/net/declance.c index 2038ca7e49ce..d3d958e7ac56 100644 --- a/trunk/drivers/net/declance.c +++ b/trunk/drivers/net/declance.c @@ -42,6 +42,7 @@ * bits. macro */ +#include #include #include #include diff --git a/trunk/drivers/net/depca.c b/trunk/drivers/net/depca.c index b1cbe99249c1..e946c43d3b10 100644 --- a/trunk/drivers/net/depca.c +++ b/trunk/drivers/net/depca.c @@ -235,6 +235,7 @@ ========================================================================= */ +#include #include #include #include diff --git a/trunk/drivers/net/dl2k.c b/trunk/drivers/net/dl2k.c index 29778055223b..038447fb5c5e 100644 --- a/trunk/drivers/net/dl2k.c +++ b/trunk/drivers/net/dl2k.c @@ -390,7 +390,7 @@ parse_eeprom (struct net_device *dev) for (i = 0; i < 6; i++) dev->dev_addr[i] = psrom->mac_addr[i]; - /* Parse Software Information Block */ + /* Parse Software Infomation Block */ i = 0x30; psib = (u8 *) sromdata; do { diff --git a/trunk/drivers/net/dummy.c b/trunk/drivers/net/dummy.c index 36d511729f71..dd8c15ac5c77 100644 --- a/trunk/drivers/net/dummy.c +++ b/trunk/drivers/net/dummy.c @@ -28,6 +28,7 @@ Alan Cox, 30th May 1994 */ +#include #include #include #include diff --git a/trunk/drivers/net/e100.c b/trunk/drivers/net/e100.c index a1d676a0df7c..93a286570923 100644 --- a/trunk/drivers/net/e100.c +++ b/trunk/drivers/net/e100.c @@ -138,6 +138,7 @@ * - Stratus87247: protect MDI control register manipulations */ +#include #include #include #include diff --git a/trunk/drivers/net/e1000/e1000.h b/trunk/drivers/net/e1000/e1000.h index 3042d33e2d4d..2bc34fbfa69c 100644 --- a/trunk/drivers/net/e1000/e1000.h +++ b/trunk/drivers/net/e1000/e1000.h @@ -34,6 +34,7 @@ #define _E1000_H_ #include +#include #include #include #include diff --git a/trunk/drivers/net/eepro100.c b/trunk/drivers/net/eepro100.c index 1e2fbbbb966e..ecf5ad85a684 100644 --- a/trunk/drivers/net/eepro100.c +++ b/trunk/drivers/net/eepro100.c @@ -87,6 +87,7 @@ static int options[] = {-1, -1, -1, -1, -1, -1, -1, -1}; /* Size of an pre-allocated Rx buffer: + slack.*/ #define PKT_BUF_SZ 1536 +#include #include #include diff --git a/trunk/drivers/net/eexpress.c b/trunk/drivers/net/eexpress.c index 33291bcf6d4c..a74b20715755 100644 --- a/trunk/drivers/net/eexpress.c +++ b/trunk/drivers/net/eexpress.c @@ -97,6 +97,7 @@ #define LOCKUP16 0 #endif +#include #include #include #include diff --git a/trunk/drivers/net/epic100.c b/trunk/drivers/net/epic100.c index b160abed8dd7..ee34a16eb4e2 100644 --- a/trunk/drivers/net/epic100.c +++ b/trunk/drivers/net/epic100.c @@ -114,6 +114,7 @@ static int rx_copybreak; #define TX_FIFO_THRESH 256 #define RX_FIFO_THRESH 1 /* 0-3, 0==32, 64,96, or 3==128 bytes */ +#include #include #include #include diff --git a/trunk/drivers/net/fec.c b/trunk/drivers/net/fec.c index 9b4030031744..db694c832989 100644 --- a/trunk/drivers/net/fec.c +++ b/trunk/drivers/net/fec.c @@ -25,6 +25,7 @@ * Copyright (c) 2004-2006 Macq Electronique SA. */ +#include #include #include #include diff --git a/trunk/drivers/net/fec_8xx/fec_8xx-netta.c b/trunk/drivers/net/fec_8xx/fec_8xx-netta.c index 790d9dbe42dd..29c275e1d566 100644 --- a/trunk/drivers/net/fec_8xx/fec_8xx-netta.c +++ b/trunk/drivers/net/fec_8xx/fec_8xx-netta.c @@ -2,6 +2,7 @@ * FEC instantatiation file for NETTA */ +#include #include #include #include diff --git a/trunk/drivers/net/fec_8xx/fec_main.c b/trunk/drivers/net/fec_8xx/fec_main.c index 282b1452c39a..7e4338097139 100644 --- a/trunk/drivers/net/fec_8xx/fec_main.c +++ b/trunk/drivers/net/fec_8xx/fec_main.c @@ -10,6 +10,7 @@ * Released under the GPL */ +#include #include #include #include diff --git a/trunk/drivers/net/fec_8xx/fec_mii.c b/trunk/drivers/net/fec_8xx/fec_mii.c index d3c16b85d9a4..3b44ac1a7bfe 100644 --- a/trunk/drivers/net/fec_8xx/fec_mii.c +++ b/trunk/drivers/net/fec_8xx/fec_mii.c @@ -10,6 +10,7 @@ * Released under the GPL */ +#include #include #include #include diff --git a/trunk/drivers/net/fs_enet/fs_enet-main.c b/trunk/drivers/net/fs_enet/fs_enet-main.c index e96a93c94941..196298f33db8 100644 --- a/trunk/drivers/net/fs_enet/fs_enet-main.c +++ b/trunk/drivers/net/fs_enet/fs_enet-main.c @@ -15,6 +15,7 @@ * kind, whether express or implied. */ +#include #include #include #include diff --git a/trunk/drivers/net/fs_enet/fs_enet-mii.c b/trunk/drivers/net/fs_enet/fs_enet-mii.c index b7e6e21725cb..0cd07150bf4a 100644 --- a/trunk/drivers/net/fs_enet/fs_enet-mii.c +++ b/trunk/drivers/net/fs_enet/fs_enet-mii.c @@ -16,6 +16,7 @@ */ +#include #include #include #include diff --git a/trunk/drivers/net/fs_enet/mac-fcc.c b/trunk/drivers/net/fs_enet/mac-fcc.c index 64e20982c1fe..95e2bb8dd7b4 100644 --- a/trunk/drivers/net/fs_enet/mac-fcc.c +++ b/trunk/drivers/net/fs_enet/mac-fcc.c @@ -12,6 +12,7 @@ * kind, whether express or implied. */ +#include #include #include #include diff --git a/trunk/drivers/net/fs_enet/mac-fec.c b/trunk/drivers/net/fs_enet/mac-fec.c index e09547077529..3dad69dfdb2c 100644 --- a/trunk/drivers/net/fs_enet/mac-fec.c +++ b/trunk/drivers/net/fs_enet/mac-fec.c @@ -12,6 +12,7 @@ * kind, whether express or implied. */ +#include #include #include #include diff --git a/trunk/drivers/net/fs_enet/mac-scc.c b/trunk/drivers/net/fs_enet/mac-scc.c index eaa24fab645f..a772b286f96d 100644 --- a/trunk/drivers/net/fs_enet/mac-scc.c +++ b/trunk/drivers/net/fs_enet/mac-scc.c @@ -12,6 +12,7 @@ * kind, whether express or implied. */ +#include #include #include #include diff --git a/trunk/drivers/net/fs_enet/mii-bitbang.c b/trunk/drivers/net/fs_enet/mii-bitbang.c index 48f9cf83ab6f..24a5e2e23d18 100644 --- a/trunk/drivers/net/fs_enet/mii-bitbang.c +++ b/trunk/drivers/net/fs_enet/mii-bitbang.c @@ -13,6 +13,7 @@ */ +#include #include #include #include diff --git a/trunk/drivers/net/fs_enet/mii-fixed.c b/trunk/drivers/net/fs_enet/mii-fixed.c index ae4a9c3bb393..b3e192d612e5 100644 --- a/trunk/drivers/net/fs_enet/mii-fixed.c +++ b/trunk/drivers/net/fs_enet/mii-fixed.c @@ -13,6 +13,7 @@ */ +#include #include #include #include diff --git a/trunk/drivers/net/gianfar.c b/trunk/drivers/net/gianfar.c index ebbbd6ca6204..218d31764c52 100644 --- a/trunk/drivers/net/gianfar.c +++ b/trunk/drivers/net/gianfar.c @@ -64,6 +64,7 @@ * The driver then cleans up the buffer. */ +#include #include #include #include diff --git a/trunk/drivers/net/gianfar.h b/trunk/drivers/net/gianfar.h index f87bbc408dae..127c98cf3336 100644 --- a/trunk/drivers/net/gianfar.h +++ b/trunk/drivers/net/gianfar.h @@ -22,6 +22,7 @@ #ifndef __GIANFAR_H #define __GIANFAR_H +#include #include #include #include diff --git a/trunk/drivers/net/gianfar_ethtool.c b/trunk/drivers/net/gianfar_ethtool.c index e0f505285e50..d69698c695ef 100644 --- a/trunk/drivers/net/gianfar_ethtool.c +++ b/trunk/drivers/net/gianfar_ethtool.c @@ -15,6 +15,7 @@ * by reference. */ +#include #include #include #include diff --git a/trunk/drivers/net/gianfar_mii.c b/trunk/drivers/net/gianfar_mii.c index c92e65984fd0..c6b725529af5 100644 --- a/trunk/drivers/net/gianfar_mii.c +++ b/trunk/drivers/net/gianfar_mii.c @@ -16,6 +16,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/net/gianfar_sysfs.c b/trunk/drivers/net/gianfar_sysfs.c index e8a18f18d08c..a6d5c43199cb 100644 --- a/trunk/drivers/net/gianfar_sysfs.c +++ b/trunk/drivers/net/gianfar_sysfs.c @@ -19,6 +19,7 @@ * Sysfs file creation and management */ +#include #include #include #include diff --git a/trunk/drivers/net/gt96100eth.h b/trunk/drivers/net/gt96100eth.h index 2a8331938b84..395869c5ed3e 100644 --- a/trunk/drivers/net/gt96100eth.h +++ b/trunk/drivers/net/gt96100eth.h @@ -27,6 +27,7 @@ #ifndef _GT96100ETH_H #define _GT96100ETH_H +#include #include #define dbg(lvl, format, arg...) \ diff --git a/trunk/drivers/net/hamradio/6pack.c b/trunk/drivers/net/hamradio/6pack.c index 86b3bb9bec2d..d12605f0ac7c 100644 --- a/trunk/drivers/net/hamradio/6pack.c +++ b/trunk/drivers/net/hamradio/6pack.c @@ -12,6 +12,7 @@ * Fred N. van Kempen, */ +#include #include #include #include diff --git a/trunk/drivers/net/hamradio/bpqether.c b/trunk/drivers/net/hamradio/bpqether.c index 0641f54fc638..cb43a9d28774 100644 --- a/trunk/drivers/net/hamradio/bpqether.c +++ b/trunk/drivers/net/hamradio/bpqether.c @@ -54,6 +54,7 @@ * BPQ 004 Joerg(DL1BKE) Fixed to not lock up on ifconfig. */ +#include #include #include #include diff --git a/trunk/drivers/net/hamradio/mkiss.c b/trunk/drivers/net/hamradio/mkiss.c index d8715b200c17..3ebbbe56b6e9 100644 --- a/trunk/drivers/net/hamradio/mkiss.c +++ b/trunk/drivers/net/hamradio/mkiss.c @@ -16,6 +16,7 @@ * Copyright (C) 2004, 05 Ralf Baechle DL5RB * Copyright (C) 2004, 05 Thomas Osterried DL9SAU */ +#include #include #include #include diff --git a/trunk/drivers/net/hamradio/scc.c b/trunk/drivers/net/hamradio/scc.c index b9b10caa031c..5927784df3f9 100644 --- a/trunk/drivers/net/hamradio/scc.c +++ b/trunk/drivers/net/hamradio/scc.c @@ -148,6 +148,7 @@ /* ----------------------------------------------------------------------- */ +#include #include #include #include diff --git a/trunk/drivers/net/hamradio/yam.c b/trunk/drivers/net/hamradio/yam.c index dd2f11c98530..b49884048caa 100644 --- a/trunk/drivers/net/hamradio/yam.c +++ b/trunk/drivers/net/hamradio/yam.c @@ -42,6 +42,7 @@ /*****************************************************************************/ +#include #include #include #include diff --git a/trunk/drivers/net/ibm_emac/ibm_emac.h b/trunk/drivers/net/ibm_emac/ibm_emac.h index 97ed22bb4320..c2dae6092c4c 100644 --- a/trunk/drivers/net/ibm_emac/ibm_emac.h +++ b/trunk/drivers/net/ibm_emac/ibm_emac.h @@ -20,6 +20,7 @@ #ifndef __IBM_EMAC_H_ #define __IBM_EMAC_H_ +#include #include /* This is a simple check to prevent use of this driver on non-tested SoCs */ diff --git a/trunk/drivers/net/ibm_emac/ibm_emac_core.c b/trunk/drivers/net/ibm_emac/ibm_emac_core.c index 82468e2dc799..7e49522b8b3c 100644 --- a/trunk/drivers/net/ibm_emac/ibm_emac_core.c +++ b/trunk/drivers/net/ibm_emac/ibm_emac_core.c @@ -19,6 +19,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/net/ibm_emac/ibm_emac_core.h b/trunk/drivers/net/ibm_emac/ibm_emac_core.h index dabb94afeb98..f61273b2e94f 100644 --- a/trunk/drivers/net/ibm_emac/ibm_emac_core.h +++ b/trunk/drivers/net/ibm_emac/ibm_emac_core.h @@ -20,6 +20,7 @@ #ifndef __IBM_EMAC_CORE_H_ #define __IBM_EMAC_CORE_H_ +#include #include #include #include diff --git a/trunk/drivers/net/ibm_emac/ibm_emac_debug.c b/trunk/drivers/net/ibm_emac/ibm_emac_debug.c index c3645908034d..c7e1ecfa08fe 100644 --- a/trunk/drivers/net/ibm_emac/ibm_emac_debug.c +++ b/trunk/drivers/net/ibm_emac/ibm_emac_debug.c @@ -12,6 +12,7 @@ * option) any later version. * */ +#include #include #include #include diff --git a/trunk/drivers/net/ibm_emac/ibm_emac_debug.h b/trunk/drivers/net/ibm_emac/ibm_emac_debug.h index 5761389495d0..e85fbe0a8da9 100644 --- a/trunk/drivers/net/ibm_emac/ibm_emac_debug.h +++ b/trunk/drivers/net/ibm_emac/ibm_emac_debug.h @@ -15,6 +15,7 @@ #ifndef __IBM_EMAC_DEBUG_H_ #define __IBM_EMAC_DEBUG_H_ +#include #include #include "ibm_emac_core.h" #include "ibm_emac_mal.h" diff --git a/trunk/drivers/net/ibm_emac/ibm_emac_mal.c b/trunk/drivers/net/ibm_emac/ibm_emac_mal.c index af50e7b2e0d7..da88d43081cc 100644 --- a/trunk/drivers/net/ibm_emac/ibm_emac_mal.c +++ b/trunk/drivers/net/ibm_emac/ibm_emac_mal.c @@ -19,6 +19,7 @@ * option) any later version. * */ +#include #include #include #include diff --git a/trunk/drivers/net/ibm_emac/ibm_emac_mal.h b/trunk/drivers/net/ibm_emac/ibm_emac_mal.h index f73f10a0a562..2a2d3b24b037 100644 --- a/trunk/drivers/net/ibm_emac/ibm_emac_mal.h +++ b/trunk/drivers/net/ibm_emac/ibm_emac_mal.h @@ -19,6 +19,7 @@ #ifndef __IBM_EMAC_MAL_H_ #define __IBM_EMAC_MAL_H_ +#include #include #include #include diff --git a/trunk/drivers/net/ibm_emac/ibm_emac_phy.c b/trunk/drivers/net/ibm_emac/ibm_emac_phy.c index 4a97024061e5..67935dd33a65 100644 --- a/trunk/drivers/net/ibm_emac/ibm_emac_phy.c +++ b/trunk/drivers/net/ibm_emac/ibm_emac_phy.c @@ -12,6 +12,7 @@ * (c) 2004-2005, Eugene Surovegin * */ +#include #include #include #include diff --git a/trunk/drivers/net/ibm_emac/ibm_emac_rgmii.c b/trunk/drivers/net/ibm_emac/ibm_emac_rgmii.c index 53d281cb9a16..f0b1ffb2dbbf 100644 --- a/trunk/drivers/net/ibm_emac/ibm_emac_rgmii.c +++ b/trunk/drivers/net/ibm_emac/ibm_emac_rgmii.c @@ -16,6 +16,7 @@ * option) any later version. * */ +#include #include #include #include diff --git a/trunk/drivers/net/ibm_emac/ibm_emac_rgmii.h b/trunk/drivers/net/ibm_emac/ibm_emac_rgmii.h index 94abde55e2e9..7f03d536c9a3 100644 --- a/trunk/drivers/net/ibm_emac/ibm_emac_rgmii.h +++ b/trunk/drivers/net/ibm_emac/ibm_emac_rgmii.h @@ -21,6 +21,7 @@ #ifndef _IBM_EMAC_RGMII_H_ #define _IBM_EMAC_RGMII_H_ +#include /* RGMII bridge */ struct rgmii_regs { diff --git a/trunk/drivers/net/ibm_emac/ibm_emac_tah.c b/trunk/drivers/net/ibm_emac/ibm_emac_tah.c index e287b451bb44..af08afc22f9f 100644 --- a/trunk/drivers/net/ibm_emac/ibm_emac_tah.c +++ b/trunk/drivers/net/ibm_emac/ibm_emac_tah.c @@ -13,6 +13,7 @@ * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. */ +#include #include #include "ibm_emac_core.h" diff --git a/trunk/drivers/net/ibm_emac/ibm_emac_tah.h b/trunk/drivers/net/ibm_emac/ibm_emac_tah.h index 38153945a240..9299b5dd7eb1 100644 --- a/trunk/drivers/net/ibm_emac/ibm_emac_tah.h +++ b/trunk/drivers/net/ibm_emac/ibm_emac_tah.h @@ -17,6 +17,7 @@ #ifndef _IBM_EMAC_TAH_H #define _IBM_EMAC_TAH_H +#include #include #include diff --git a/trunk/drivers/net/ibm_emac/ibm_emac_zmii.c b/trunk/drivers/net/ibm_emac/ibm_emac_zmii.c index 37dc8f342868..e129e0aaa045 100644 --- a/trunk/drivers/net/ibm_emac/ibm_emac_zmii.c +++ b/trunk/drivers/net/ibm_emac/ibm_emac_zmii.c @@ -16,6 +16,7 @@ * option) any later version. * */ +#include #include #include #include diff --git a/trunk/drivers/net/ibm_emac/ibm_emac_zmii.h b/trunk/drivers/net/ibm_emac/ibm_emac_zmii.h index 972e3a44a09f..92c854410753 100644 --- a/trunk/drivers/net/ibm_emac/ibm_emac_zmii.h +++ b/trunk/drivers/net/ibm_emac/ibm_emac_zmii.h @@ -19,6 +19,7 @@ #ifndef _IBM_EMAC_ZMII_H_ #define _IBM_EMAC_ZMII_H_ +#include #include #include diff --git a/trunk/drivers/net/ibmveth.c b/trunk/drivers/net/ibmveth.c index 0464e78f733a..4c2e7279ba34 100644 --- a/trunk/drivers/net/ibmveth.c +++ b/trunk/drivers/net/ibmveth.c @@ -33,6 +33,7 @@ - possibly remove procfs support */ +#include #include #include #include diff --git a/trunk/drivers/net/ifb.c b/trunk/drivers/net/ifb.c index 3a42afab5036..2e222ef91e22 100644 --- a/trunk/drivers/net/ifb.c +++ b/trunk/drivers/net/ifb.c @@ -27,6 +27,7 @@ */ +#include #include #include #include diff --git a/trunk/drivers/net/ioc3-eth.c b/trunk/drivers/net/ioc3-eth.c index dbf67750d899..e76e6e7be0b1 100644 --- a/trunk/drivers/net/ioc3-eth.c +++ b/trunk/drivers/net/ioc3-eth.c @@ -30,6 +30,7 @@ #define IOC3_NAME "ioc3-eth" #define IOC3_VERSION "2.6.3-3" +#include #include #include #include diff --git a/trunk/drivers/net/irda/Kconfig b/trunk/drivers/net/irda/Kconfig index e9e6d99a9add..d2ce4896abff 100644 --- a/trunk/drivers/net/irda/Kconfig +++ b/trunk/drivers/net/irda/Kconfig @@ -350,7 +350,7 @@ config TOSHIBA_FIR config AU1000_FIR tristate "Alchemy Au1000 SIR/FIR" - depends on SOC_AU1000 && IRDA + depends on MIPS_AU1000 && IRDA config SMC_IRCC_FIR tristate "SMSC IrCC (EXPERIMENTAL)" diff --git a/trunk/drivers/net/irda/au1k_ir.c b/trunk/drivers/net/irda/au1k_ir.c index 7b2b4135bb23..e6b1985767c2 100644 --- a/trunk/drivers/net/irda/au1k_ir.c +++ b/trunk/drivers/net/irda/au1k_ir.c @@ -18,6 +18,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. */ +#include #include #include #include diff --git a/trunk/drivers/net/irda/mcs7780.c b/trunk/drivers/net/irda/mcs7780.c index 47f6f64d604c..754297fc8f22 100644 --- a/trunk/drivers/net/irda/mcs7780.c +++ b/trunk/drivers/net/irda/mcs7780.c @@ -101,7 +101,7 @@ static int transceiver_type = MCS_TSC_VISHAY; module_param(transceiver_type, int, 0444); MODULE_PARM_DESC(transceiver_type, "IR transceiver type, see mcs7780.h."); -static struct usb_driver mcs_driver = { +struct usb_driver mcs_driver = { .name = "mcs7780", .probe = mcs_probe, .disconnect = mcs_disconnect, diff --git a/trunk/drivers/net/irda/pxaficp_ir.c b/trunk/drivers/net/irda/pxaficp_ir.c index afb19e8d95c8..e1aa9910503b 100644 --- a/trunk/drivers/net/irda/pxaficp_ir.c +++ b/trunk/drivers/net/irda/pxaficp_ir.c @@ -12,6 +12,7 @@ * Infra-red driver (SIR/FIR) for the PXA2xx embedded microprocessor * */ +#include #include #include #include diff --git a/trunk/drivers/net/irda/sa1100_ir.c b/trunk/drivers/net/irda/sa1100_ir.c index 8d5a288d7976..f530686bd09f 100644 --- a/trunk/drivers/net/irda/sa1100_ir.c +++ b/trunk/drivers/net/irda/sa1100_ir.c @@ -18,6 +18,7 @@ * power_leve:level - set the transmitter power level * tx_lpm:0|1 - set transmit low power mode */ +#include #include #include #include diff --git a/trunk/drivers/net/irda/vlsi_ir.c b/trunk/drivers/net/irda/vlsi_ir.c index b9f28b14b3ae..d70b9e8d6e60 100644 --- a/trunk/drivers/net/irda/vlsi_ir.c +++ b/trunk/drivers/net/irda/vlsi_ir.c @@ -21,6 +21,7 @@ * ********************************************************************/ +#include #include #define DRIVER_NAME "vlsi_ir" diff --git a/trunk/drivers/net/iseries_veth.c b/trunk/drivers/net/iseries_veth.c index cdc14401cdbe..93394d76587a 100644 --- a/trunk/drivers/net/iseries_veth.c +++ b/trunk/drivers/net/iseries_veth.c @@ -56,6 +56,7 @@ * number of packets outstanding to a remote partition at a time. */ +#include #include #include #include diff --git a/trunk/drivers/net/ixgb/ixgb.h b/trunk/drivers/net/ixgb/ixgb.h index 82b67af54c94..a83ef28dadb0 100644 --- a/trunk/drivers/net/ixgb/ixgb.h +++ b/trunk/drivers/net/ixgb/ixgb.h @@ -30,6 +30,7 @@ #define _IXGB_H_ #include +#include #include #include #include diff --git a/trunk/drivers/net/ixp2000/caleb.c b/trunk/drivers/net/ixp2000/caleb.c index 7dea5b95012c..3595e107df22 100644 --- a/trunk/drivers/net/ixp2000/caleb.c +++ b/trunk/drivers/net/ixp2000/caleb.c @@ -9,6 +9,7 @@ * (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/drivers/net/ixp2000/enp2611.c b/trunk/drivers/net/ixp2000/enp2611.c index d3f4235c585d..b67f586d7392 100644 --- a/trunk/drivers/net/ixp2000/enp2611.c +++ b/trunk/drivers/net/ixp2000/enp2611.c @@ -9,6 +9,7 @@ * (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/drivers/net/ixp2000/ixp2400-msf.c b/trunk/drivers/net/ixp2000/ixp2400-msf.c index 9ec38eebfb56..48a3a891d3a4 100644 --- a/trunk/drivers/net/ixp2000/ixp2400-msf.c +++ b/trunk/drivers/net/ixp2000/ixp2400-msf.c @@ -11,6 +11,7 @@ * License, or (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/drivers/net/ixp2000/ixpdev.c b/trunk/drivers/net/ixp2000/ixpdev.c index 99229a0456d9..fbc2d21020f4 100644 --- a/trunk/drivers/net/ixp2000/ixpdev.c +++ b/trunk/drivers/net/ixp2000/ixpdev.c @@ -9,6 +9,7 @@ * (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/drivers/net/ixp2000/pm3386.c b/trunk/drivers/net/ixp2000/pm3386.c index e08d3f9863b8..5224651c9aac 100644 --- a/trunk/drivers/net/ixp2000/pm3386.c +++ b/trunk/drivers/net/ixp2000/pm3386.c @@ -9,6 +9,7 @@ * (at your option) any later version. */ +#include #include #include #include diff --git a/trunk/drivers/net/mace.c b/trunk/drivers/net/mace.c index f2c0bf89f0c7..77792b286027 100644 --- a/trunk/drivers/net/mace.c +++ b/trunk/drivers/net/mace.c @@ -5,6 +5,7 @@ * Copyright (C) 1996 Paul Mackerras. */ +#include #include #include #include diff --git a/trunk/drivers/net/mv643xx_eth.h b/trunk/drivers/net/mv643xx_eth.h index 33c5fafdbbd3..4262c1da6d4a 100644 --- a/trunk/drivers/net/mv643xx_eth.h +++ b/trunk/drivers/net/mv643xx_eth.h @@ -258,7 +258,7 @@ struct pkt_info { struct sk_buff *return_info; /* User resource return information */ }; -/* Ethernet port specific information */ +/* Ethernet port specific infomation */ struct mv643xx_mib_counters { u64 good_octets_received; diff --git a/trunk/drivers/net/myri_sbus.c b/trunk/drivers/net/myri_sbus.c index 19981065efb4..d9f616fea3d9 100644 --- a/trunk/drivers/net/myri_sbus.c +++ b/trunk/drivers/net/myri_sbus.c @@ -7,6 +7,7 @@ static char version[] = "myri_sbus.c:v2.0 June 23, 2006 David S. Miller (davem@davemloft.net)\n"; #include +#include #include #include #include diff --git a/trunk/drivers/net/natsemi.c b/trunk/drivers/net/natsemi.c index 438c63f940b9..5657049c2160 100644 --- a/trunk/drivers/net/natsemi.c +++ b/trunk/drivers/net/natsemi.c @@ -138,6 +138,7 @@ * big endian support with CFG:BEM instead of cpu_to_le32 */ +#include #include #include #include diff --git a/trunk/drivers/net/ns83820.c b/trunk/drivers/net/ns83820.c index deedd7b2af5d..706aed7d717f 100644 --- a/trunk/drivers/net/ns83820.c +++ b/trunk/drivers/net/ns83820.c @@ -96,6 +96,7 @@ //#define dprintk printk #define dprintk(x...) do { } while (0) +#include #include #include #include diff --git a/trunk/drivers/net/pci-skeleton.c b/trunk/drivers/net/pci-skeleton.c index 978b95afc721..a7bb54df75a8 100644 --- a/trunk/drivers/net/pci-skeleton.c +++ b/trunk/drivers/net/pci-skeleton.c @@ -85,6 +85,7 @@ IVc. Errata */ +#include #include #include #include diff --git a/trunk/drivers/net/pcmcia/com20020_cs.c b/trunk/drivers/net/pcmcia/com20020_cs.c index 48434d7924eb..441de824ab6b 100644 --- a/trunk/drivers/net/pcmcia/com20020_cs.c +++ b/trunk/drivers/net/pcmcia/com20020_cs.c @@ -387,10 +387,7 @@ static int com20020_resume(struct pcmcia_device *link) } static struct pcmcia_device_id com20020_ids[] = { - PCMCIA_DEVICE_PROD_ID12("Contemporary Control Systems, Inc.", - "PCM20 Arcnet Adapter", 0x59991666, 0x95dfffaf), - PCMCIA_DEVICE_PROD_ID12("SoHard AG", - "SH ARC PCMCIA", 0xf8991729, 0x69dff0c7), + PCMCIA_DEVICE_PROD_ID12("Contemporary Control Systems, Inc.", "PCM20 Arcnet Adapter", 0x59991666, 0x95dfffaf), PCMCIA_DEVICE_NULL }; MODULE_DEVICE_TABLE(pcmcia, com20020_ids); diff --git a/trunk/drivers/net/phy/cicada.c b/trunk/drivers/net/phy/cicada.c index 3efb715c28dc..7d8d534255c0 100644 --- a/trunk/drivers/net/phy/cicada.c +++ b/trunk/drivers/net/phy/cicada.c @@ -13,6 +13,7 @@ * option) any later version. * */ +#include #include #include #include diff --git a/trunk/drivers/net/phy/davicom.c b/trunk/drivers/net/phy/davicom.c index aa7983f55838..5e9002e444c5 100644 --- a/trunk/drivers/net/phy/davicom.c +++ b/trunk/drivers/net/phy/davicom.c @@ -13,6 +13,7 @@ * option) any later version. * */ +#include #include #include #include diff --git a/trunk/drivers/net/phy/lxt.c b/trunk/drivers/net/phy/lxt.c index 69d2325f848c..3f702c503afe 100644 --- a/trunk/drivers/net/phy/lxt.c +++ b/trunk/drivers/net/phy/lxt.c @@ -13,6 +13,7 @@ * option) any later version. * */ +#include #include #include #include diff --git a/trunk/drivers/net/phy/marvell.c b/trunk/drivers/net/phy/marvell.c index 0ad253282d0d..a2d6386d13bc 100644 --- a/trunk/drivers/net/phy/marvell.c +++ b/trunk/drivers/net/phy/marvell.c @@ -13,6 +13,7 @@ * option) any later version. * */ +#include #include #include #include diff --git a/trunk/drivers/net/phy/mdio_bus.c b/trunk/drivers/net/phy/mdio_bus.c index 1dde390c164d..1b236bdf6b92 100644 --- a/trunk/drivers/net/phy/mdio_bus.c +++ b/trunk/drivers/net/phy/mdio_bus.c @@ -13,6 +13,7 @@ * option) any later version. * */ +#include #include #include #include diff --git a/trunk/drivers/net/phy/phy.c b/trunk/drivers/net/phy/phy.c index 44bcd3eb2b83..33cec2dab942 100644 --- a/trunk/drivers/net/phy/phy.c +++ b/trunk/drivers/net/phy/phy.c @@ -14,6 +14,7 @@ * option) any later version. * */ +#include #include #include #include diff --git a/trunk/drivers/net/phy/phy_device.c b/trunk/drivers/net/phy/phy_device.c index 1bc1e032c5d6..7da0e3dd5fe3 100644 --- a/trunk/drivers/net/phy/phy_device.c +++ b/trunk/drivers/net/phy/phy_device.c @@ -14,6 +14,7 @@ * option) any later version. * */ +#include #include #include #include diff --git a/trunk/drivers/net/phy/qsemi.c b/trunk/drivers/net/phy/qsemi.c index 2b50e1739aa5..65d995b02b25 100644 --- a/trunk/drivers/net/phy/qsemi.c +++ b/trunk/drivers/net/phy/qsemi.c @@ -13,6 +13,7 @@ * option) any later version. * */ +#include #include #include #include diff --git a/trunk/drivers/net/ppp_generic.c b/trunk/drivers/net/ppp_generic.c index 0ec6e9d57b94..425ff5b117f1 100644 --- a/trunk/drivers/net/ppp_generic.c +++ b/trunk/drivers/net/ppp_generic.c @@ -22,6 +22,7 @@ * ==FILEVERSION 20041108== */ +#include #include #include #include diff --git a/trunk/drivers/net/ppp_mppe.c b/trunk/drivers/net/ppp_mppe.c index 51ff9a9d1bb5..1985d1b57c45 100644 --- a/trunk/drivers/net/ppp_mppe.c +++ b/trunk/drivers/net/ppp_mppe.c @@ -43,6 +43,7 @@ * deprecated in 2.6 */ +#include #include #include #include diff --git a/trunk/drivers/net/rrunner.c b/trunk/drivers/net/rrunner.c index 757c542ac40a..19c2df9c86fe 100644 --- a/trunk/drivers/net/rrunner.c +++ b/trunk/drivers/net/rrunner.c @@ -28,6 +28,7 @@ #define RX_DMA_SKBUFF 1 #define PKT_COPY_THRESHOLD 512 +#include #include #include #include diff --git a/trunk/drivers/net/rrunner.h b/trunk/drivers/net/rrunner.h index 2c3c91ebd99f..10baae55953a 100644 --- a/trunk/drivers/net/rrunner.h +++ b/trunk/drivers/net/rrunner.h @@ -1,6 +1,7 @@ #ifndef _RRUNNER_H_ #define _RRUNNER_H_ +#include #include #if ((BITS_PER_LONG != 32) && (BITS_PER_LONG != 64)) diff --git a/trunk/drivers/net/s2io.c b/trunk/drivers/net/s2io.c index 001344c0763e..3defe5d4f7d3 100644 --- a/trunk/drivers/net/s2io.c +++ b/trunk/drivers/net/s2io.c @@ -44,6 +44,7 @@ * aggregated as a single large packet ************************************************************************/ +#include #include #include #include @@ -3959,7 +3960,7 @@ static int s2io_xmit(struct sk_buff *skb, struct net_device *dev) txdp->Control_2 = 0; #ifdef NETIF_F_TSO mss = skb_shinfo(skb)->gso_size; - if (skb_shinfo(skb)->gso_type & (SKB_GSO_TCPV4 | SKB_GSO_TCPV6)) { + if (skb_shinfo(skb)->gso_type == SKB_GSO_TCPV4) { txdp->Control_1 |= TXD_TCP_LSO_EN; txdp->Control_1 |= TXD_TCP_LSO_MSS(mss); } @@ -3979,7 +3980,7 @@ static int s2io_xmit(struct sk_buff *skb, struct net_device *dev) } frg_len = skb->len - skb->data_len; - if (skb_shinfo(skb)->gso_type == SKB_GSO_UDP) { + if (skb_shinfo(skb)->gso_type == SKB_GSO_UDPV4) { int ufo_size; ufo_size = skb_shinfo(skb)->gso_size; @@ -4008,7 +4009,7 @@ static int s2io_xmit(struct sk_buff *skb, struct net_device *dev) txdp->Host_Control = (unsigned long) skb; txdp->Control_1 |= TXD_BUFFER0_SIZE(frg_len); - if (skb_shinfo(skb)->gso_type == SKB_GSO_UDP) + if (skb_shinfo(skb)->gso_type == SKB_GSO_UDPV4) txdp->Control_1 |= TXD_UFO_EN; frg_cnt = skb_shinfo(skb)->nr_frags; @@ -4023,12 +4024,12 @@ static int s2io_xmit(struct sk_buff *skb, struct net_device *dev) (sp->pdev, frag->page, frag->page_offset, frag->size, PCI_DMA_TODEVICE); txdp->Control_1 = TXD_BUFFER0_SIZE(frag->size); - if (skb_shinfo(skb)->gso_type == SKB_GSO_UDP) + if (skb_shinfo(skb)->gso_type == SKB_GSO_UDPV4) txdp->Control_1 |= TXD_UFO_EN; } txdp->Control_1 |= TXD_GATHER_CODE_LAST; - if (skb_shinfo(skb)->gso_type == SKB_GSO_UDP) + if (skb_shinfo(skb)->gso_type == SKB_GSO_UDPV4) frg_cnt++; /* as Txd0 was used for inband header */ tx_fifo = mac_control->tx_FIFO_start[queue]; @@ -4042,7 +4043,7 @@ static int s2io_xmit(struct sk_buff *skb, struct net_device *dev) if (mss) val64 |= TX_FIFO_SPECIAL_FUNC; #endif - if (skb_shinfo(skb)->gso_type == SKB_GSO_UDP) + if (skb_shinfo(skb)->gso_type == SKB_GSO_UDPV4) val64 |= TX_FIFO_SPECIAL_FUNC; writeq(val64, &tx_fifo->List_Control); @@ -7019,9 +7020,6 @@ s2io_init_nic(struct pci_dev *pdev, const struct pci_device_id *pre) dev->features |= NETIF_F_HIGHDMA; #ifdef NETIF_F_TSO dev->features |= NETIF_F_TSO; -#endif -#ifdef NETIF_F_TSO6 - dev->features |= NETIF_F_TSO6; #endif if (sp->device_type & XFRAME_II_DEVICE) { dev->features |= NETIF_F_UFO; diff --git a/trunk/drivers/net/s2io.h b/trunk/drivers/net/s2io.h index c43f52179708..3203732a668d 100644 --- a/trunk/drivers/net/s2io.h +++ b/trunk/drivers/net/s2io.h @@ -652,7 +652,7 @@ typedef struct fifo_info { nic_t *nic; }fifo_info_t; -/* Information related to the Tx and Rx FIFOs and Rings of Xena +/* Infomation related to the Tx and Rx FIFOs and Rings of Xena * is maintained in this structure. */ typedef struct mac_info { diff --git a/trunk/drivers/net/sb1250-mac.c b/trunk/drivers/net/sb1250-mac.c index c7b5f0004e54..f2be9f83f091 100644 --- a/trunk/drivers/net/sb1250-mac.c +++ b/trunk/drivers/net/sb1250-mac.c @@ -31,6 +31,7 @@ #include #include #include +#include #include #include /* Processor type for cache alignment. */ #include diff --git a/trunk/drivers/net/shaper.c b/trunk/drivers/net/shaper.c index c7832e69f177..88e212043a43 100644 --- a/trunk/drivers/net/shaper.c +++ b/trunk/drivers/net/shaper.c @@ -69,6 +69,7 @@ * 2000/03 Andi Kleen */ +#include #include #include #include diff --git a/trunk/drivers/net/sk98lin/skvpd.c b/trunk/drivers/net/sk98lin/skvpd.c index 1e662aaebf84..17786056c66a 100644 --- a/trunk/drivers/net/sk98lin/skvpd.c +++ b/trunk/drivers/net/sk98lin/skvpd.c @@ -22,7 +22,7 @@ ******************************************************************************/ /* - Please refer skvpd.txt for information how to include this module + Please refer skvpd.txt for infomation how to include this module */ static const char SysKonnectFileId[] = "@(#)$Id: skvpd.c,v 1.37 2003/01/13 10:42:45 rschmidt Exp $ (C) SK"; diff --git a/trunk/drivers/net/skfp/h/sba.h b/trunk/drivers/net/skfp/h/sba.h index 638cf0283bc4..df716cd5784a 100644 --- a/trunk/drivers/net/skfp/h/sba.h +++ b/trunk/drivers/net/skfp/h/sba.h @@ -13,7 +13,7 @@ ******************************************************************************/ /* - * Synchronous Bandwidth Allocation (SBA) structs + * Synchronous Bandwith Allocation (SBA) structs */ #ifndef _SBA_ diff --git a/trunk/drivers/net/skge.c b/trunk/drivers/net/skge.c index 82df13be3d40..1608efab4e3d 100644 --- a/trunk/drivers/net/skge.c +++ b/trunk/drivers/net/skge.c @@ -24,6 +24,7 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/drivers/net/sky2.c b/trunk/drivers/net/sky2.c index 3f1b0fef13e7..e122007e16da 100644 --- a/trunk/drivers/net/sky2.c +++ b/trunk/drivers/net/sky2.c @@ -23,6 +23,7 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/drivers/net/slhc.c b/trunk/drivers/net/slhc.c index 3a1b7131681c..c6fbb1ede0ed 100644 --- a/trunk/drivers/net/slhc.c +++ b/trunk/drivers/net/slhc.c @@ -50,6 +50,7 @@ * driver code belonging close to PPP and SLIP */ +#include #include #include #include diff --git a/trunk/drivers/net/slip.c b/trunk/drivers/net/slip.c index 1588cb7f6c83..b2e18d28850d 100644 --- a/trunk/drivers/net/slip.c +++ b/trunk/drivers/net/slip.c @@ -55,6 +55,7 @@ */ #define SL_CHECK_TRANSMIT +#include #include #include diff --git a/trunk/drivers/net/slip.h b/trunk/drivers/net/slip.h index 29d87dd45a24..ab3efe66a642 100644 --- a/trunk/drivers/net/slip.h +++ b/trunk/drivers/net/slip.h @@ -22,6 +22,7 @@ #ifndef _LINUX_SLIP_H #define _LINUX_SLIP_H +#include #if defined(CONFIG_INET) && defined(CONFIG_SLIP_COMPRESSED) # define SL_INCLUDE_CSLIP diff --git a/trunk/drivers/net/smc-ultra.c b/trunk/drivers/net/smc-ultra.c index 45449353a958..5b4e8529d4ab 100644 --- a/trunk/drivers/net/smc-ultra.c +++ b/trunk/drivers/net/smc-ultra.c @@ -57,6 +57,7 @@ static const char version[] = "smc-ultra.c:v2.02 2/3/98 Donald Becker (becker@cesdis.gsfc.nasa.gov)\n"; +#include #include #include #include diff --git a/trunk/drivers/net/smc91x.c b/trunk/drivers/net/smc91x.c index 3d8dcb6c8758..0e9833adf9fe 100644 --- a/trunk/drivers/net/smc91x.c +++ b/trunk/drivers/net/smc91x.c @@ -66,6 +66,7 @@ static const char version[] = #endif +#include #include #include #include diff --git a/trunk/drivers/net/sonic.h b/trunk/drivers/net/sonic.h index 7f5c4ebcc17a..cede969a8baa 100644 --- a/trunk/drivers/net/sonic.h +++ b/trunk/drivers/net/sonic.h @@ -22,6 +22,7 @@ #ifndef SONIC_H #define SONIC_H +#include /* * SONIC register offsets diff --git a/trunk/drivers/net/spider_net.c b/trunk/drivers/net/spider_net.c index e0b72676922c..394339d5e87c 100644 --- a/trunk/drivers/net/spider_net.c +++ b/trunk/drivers/net/spider_net.c @@ -21,6 +21,7 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/drivers/net/starfire.c b/trunk/drivers/net/starfire.c index f91be95356a4..c158eedc7813 100644 --- a/trunk/drivers/net/starfire.c +++ b/trunk/drivers/net/starfire.c @@ -146,6 +146,7 @@ TODO: - fix forced speed/duplexing code (broken a long time ago, when #define DRV_VERSION "1.03+LK1.4.2.1" #define DRV_RELDATE "October 3, 2005" +#include #include #include #include diff --git a/trunk/drivers/net/stnic.c b/trunk/drivers/net/stnic.c index 74228348995d..b6dfdf8f44da 100644 --- a/trunk/drivers/net/stnic.c +++ b/trunk/drivers/net/stnic.c @@ -7,6 +7,7 @@ * Copyright (C) 1999 kaz Kojima */ +#include #include #include #include diff --git a/trunk/drivers/net/sungem_phy.c b/trunk/drivers/net/sungem_phy.c index 278c7cb22216..9282b4b0c022 100644 --- a/trunk/drivers/net/sungem_phy.c +++ b/trunk/drivers/net/sungem_phy.c @@ -19,6 +19,7 @@ * of darwin, still need to reverse engineer that */ +#include #include diff --git a/trunk/drivers/net/sunhme.c b/trunk/drivers/net/sunhme.c index d85b83204f6b..c33ead3470db 100644 --- a/trunk/drivers/net/sunhme.c +++ b/trunk/drivers/net/sunhme.c @@ -13,6 +13,7 @@ * argument : macaddr=0x00,0x10,0x20,0x30,0x40,0x50 */ +#include #include #include #include @@ -2522,7 +2523,7 @@ static struct ethtool_ops hme_ethtool_ops = { static int hme_version_printed; #ifdef CONFIG_SBUS -void __devinit quattro_get_ranges(struct quattro *qp) +void __init quattro_get_ranges(struct quattro *qp) { struct sbus_dev *sdev = qp->quattro_dev; int err; @@ -2538,7 +2539,7 @@ void __devinit quattro_get_ranges(struct quattro *qp) qp->nranges = (err / sizeof(struct linux_prom_ranges)); } -static void __devinit quattro_apply_ranges(struct quattro *qp, struct happy_meal *hp) +static void __init quattro_apply_ranges(struct quattro *qp, struct happy_meal *hp) { struct sbus_dev *sdev = hp->happy_dev; int rng; @@ -2565,7 +2566,7 @@ static void __devinit quattro_apply_ranges(struct quattro *qp, struct happy_meal * * Return NULL on failure. */ -static struct quattro * __devinit quattro_sbus_find(struct sbus_dev *goal_sdev) +static struct quattro * __init quattro_sbus_find(struct sbus_dev *goal_sdev) { struct sbus_dev *sdev; struct quattro *qp; @@ -2617,7 +2618,7 @@ static void __init quattro_sbus_register_irqs(void) } } -static void quattro_sbus_free_irqs(void) +static void __devexit quattro_sbus_free_irqs(void) { struct quattro *qp; @@ -2661,7 +2662,7 @@ static struct quattro * __init quattro_pci_find(struct pci_dev *pdev) #endif /* CONFIG_PCI */ #ifdef CONFIG_SBUS -static int __devinit happy_meal_sbus_probe_one(struct sbus_dev *sdev, int is_qfe) +static int __init happy_meal_sbus_probe_one(struct sbus_dev *sdev, int is_qfe) { struct device_node *dp = sdev->ofdev.node; struct quattro *qp = NULL; diff --git a/trunk/drivers/net/sunhme.h b/trunk/drivers/net/sunhme.h index 90f446db9ba2..9b7ccaeeee89 100644 --- a/trunk/drivers/net/sunhme.h +++ b/trunk/drivers/net/sunhme.h @@ -8,6 +8,7 @@ #ifndef _SUNHME_H #define _SUNHME_H +#include #include /* Happy Meal global registers. */ diff --git a/trunk/drivers/net/sunlance.c b/trunk/drivers/net/sunlance.c index 5b0b60f4d20e..2c239ab63a80 100644 --- a/trunk/drivers/net/sunlance.c +++ b/trunk/drivers/net/sunlance.c @@ -71,6 +71,7 @@ static char lancestr[] = "LANCE"; +#include #include #include #include diff --git a/trunk/drivers/net/tg3.c b/trunk/drivers/net/tg3.c index 953255e92633..35f931638750 100644 --- a/trunk/drivers/net/tg3.c +++ b/trunk/drivers/net/tg3.c @@ -15,6 +15,7 @@ * notice is accompanying it. */ +#include #include #include @@ -68,8 +69,8 @@ #define DRV_MODULE_NAME "tg3" #define PFX DRV_MODULE_NAME ": " -#define DRV_MODULE_VERSION "3.61" -#define DRV_MODULE_RELDATE "June 29, 2006" +#define DRV_MODULE_VERSION "3.60" +#define DRV_MODULE_RELDATE "June 17, 2006" #define TG3_DEF_MAC_MODE 0 #define TG3_DEF_RX_MODE 0 @@ -3194,7 +3195,7 @@ static int tg3_vlan_rx(struct tg3 *tp, struct sk_buff *skb, u16 vlan_tag) */ static int tg3_rx(struct tg3 *tp, int budget) { - u32 work_mask, rx_std_posted = 0; + u32 work_mask; u32 sw_idx = tp->rx_rcb_ptr; u16 hw_idx; int received; @@ -3221,7 +3222,6 @@ static int tg3_rx(struct tg3 *tp, int budget) mapping); skb = tp->rx_std_buffers[desc_idx].skb; post_ptr = &tp->rx_std_ptr; - rx_std_posted++; } else if (opaque_key == RXD_OPAQUE_RING_JUMBO) { dma_addr = pci_unmap_addr(&tp->rx_jumbo_buffers[desc_idx], mapping); @@ -3309,15 +3309,6 @@ static int tg3_rx(struct tg3 *tp, int budget) next_pkt: (*post_ptr)++; - - if (unlikely(rx_std_posted >= tp->rx_std_max_post)) { - u32 idx = *post_ptr % TG3_RX_RING_SIZE; - - tw32_rx_mbox(MAILBOX_RCV_STD_PROD_IDX + - TG3_64BIT_REG_LOW, idx); - work_mask &= ~RXD_OPAQUE_RING_STD; - rx_std_posted = 0; - } next_pkt_nopost: sw_idx++; sw_idx %= TG3_RX_RCB_RING_SIZE(tp); @@ -3879,40 +3870,6 @@ static int tg3_start_xmit(struct sk_buff *skb, struct net_device *dev) return NETDEV_TX_OK; } -#if TG3_TSO_SUPPORT != 0 -static int tg3_start_xmit_dma_bug(struct sk_buff *, struct net_device *); - -/* Use GSO to workaround a rare TSO bug that may be triggered when the - * TSO header is greater than 80 bytes. - */ -static int tg3_tso_bug(struct tg3 *tp, struct sk_buff *skb) -{ - struct sk_buff *segs, *nskb; - - /* Estimate the number of fragments in the worst case */ - if (unlikely(TX_BUFFS_AVAIL(tp) <= (skb_shinfo(skb)->gso_segs * 3))) { - netif_stop_queue(tp->dev); - return NETDEV_TX_BUSY; - } - - segs = skb_gso_segment(skb, tp->dev->features & ~NETIF_F_TSO); - if (unlikely(IS_ERR(segs))) - goto tg3_tso_bug_end; - - do { - nskb = segs; - segs = segs->next; - nskb->next = NULL; - tg3_start_xmit_dma_bug(nskb, tp->dev); - } while (segs); - -tg3_tso_bug_end: - dev_kfree_skb(skb); - - return NETDEV_TX_OK; -} -#endif - /* hard_start_xmit for devices that have the 4G bug and/or 40-bit bug and * support TG3_FLG2_HW_TSO_1 or firmware TSO only. */ @@ -3949,7 +3906,7 @@ static int tg3_start_xmit_dma_bug(struct sk_buff *skb, struct net_device *dev) mss = 0; if (skb->len > (tp->dev->mtu + ETH_HLEN) && (mss = skb_shinfo(skb)->gso_size) != 0) { - int tcp_opt_len, ip_tcp_len, hdr_len; + int tcp_opt_len, ip_tcp_len; if (skb_header_cloned(skb) && pskb_expand_head(skb, 0, 0, GFP_ATOMIC)) { @@ -3960,16 +3917,11 @@ static int tg3_start_xmit_dma_bug(struct sk_buff *skb, struct net_device *dev) tcp_opt_len = ((skb->h.th->doff - 5) * 4); ip_tcp_len = (skb->nh.iph->ihl * 4) + sizeof(struct tcphdr); - hdr_len = ip_tcp_len + tcp_opt_len; - if (unlikely((ETH_HLEN + hdr_len) > 80) && - (tp->tg3_flags2 & TG3_FLG2_HW_TSO_1_BUG)) - return (tg3_tso_bug(tp, skb)); - base_flags |= (TXD_FLAG_CPU_PRE_DMA | TXD_FLAG_CPU_POST_DMA); skb->nh.iph->check = 0; - skb->nh.iph->tot_len = htons(mss + hdr_len); + skb->nh.iph->tot_len = htons(mss + ip_tcp_len + tcp_opt_len); if (tp->tg3_flags2 & TG3_FLG2_HW_TSO) { skb->h.th->check = 0; base_flags &= ~TXD_FLAG_TCPUDP_CSUM; @@ -6029,13 +5981,7 @@ static int tg3_reset_hw(struct tg3 *tp, int reset_phy) } /* Setup replenish threshold. */ - val = tp->rx_pending / 8; - if (val == 0) - val = 1; - else if (val > tp->rx_std_max_post) - val = tp->rx_std_max_post; - - tw32(RCVBDI_STD_THRESH, val); + tw32(RCVBDI_STD_THRESH, tp->rx_pending / 8); /* Initialize TG3_BDINFO's at: * RCVDBDI_STD_BD: standard eth size rx ring @@ -6195,12 +6141,8 @@ static int tg3_reset_hw(struct tg3 *tp, int reset_phy) #endif /* Receive/send statistics. */ - if (tp->tg3_flags2 & TG3_FLG2_5750_PLUS) { - val = tr32(RCVLPC_STATS_ENABLE); - val &= ~RCVLPC_STATSENAB_DACK_FIX; - tw32(RCVLPC_STATS_ENABLE, val); - } else if ((rdmac_mode & RDMAC_MODE_FIFO_SIZE_128) && - (tp->tg3_flags2 & TG3_FLG2_TSO_CAPABLE)) { + if ((rdmac_mode & RDMAC_MODE_FIFO_SIZE_128) && + (tp->tg3_flags2 & TG3_FLG2_TSO_CAPABLE)) { val = tr32(RCVLPC_STATS_ENABLE); val &= ~RCVLPC_STATSENAB_LNGBRST_RFIX; tw32(RCVLPC_STATS_ENABLE, val); @@ -8796,9 +8738,6 @@ static void tg3_vlan_rx_register(struct net_device *dev, struct vlan_group *grp) { struct tg3 *tp = netdev_priv(dev); - if (netif_running(dev)) - tg3_netif_stop(tp); - tg3_full_lock(tp, 0); tp->vlgrp = grp; @@ -8807,25 +8746,16 @@ static void tg3_vlan_rx_register(struct net_device *dev, struct vlan_group *grp) __tg3_set_rx_mode(dev); tg3_full_unlock(tp); - - if (netif_running(dev)) - tg3_netif_start(tp); } static void tg3_vlan_rx_kill_vid(struct net_device *dev, unsigned short vid) { struct tg3 *tp = netdev_priv(dev); - if (netif_running(dev)) - tg3_netif_stop(tp); - tg3_full_lock(tp, 0); if (tp->vlgrp) tp->vlgrp->vlan_devices[vid] = NULL; tg3_full_unlock(tp); - - if (netif_running(dev)) - tg3_netif_start(tp); } #endif @@ -10230,14 +10160,8 @@ static int __devinit tg3_get_invariants(struct tg3 *tp) GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5787) { tp->tg3_flags2 |= TG3_FLG2_HW_TSO_2; tp->tg3_flags2 |= TG3_FLG2_1SHOT_MSI; - } else { - tp->tg3_flags2 |= TG3_FLG2_HW_TSO_1 | - TG3_FLG2_HW_TSO_1_BUG; - if (GET_ASIC_REV(tp->pci_chip_rev_id) == - ASIC_REV_5750 && - tp->pci_chip_rev_id >= CHIPREV_ID_5750_C2) - tp->tg3_flags2 &= ~TG3_FLG2_HW_TSO_1_BUG; - } + } else + tp->tg3_flags2 |= TG3_FLG2_HW_TSO_1; } if (GET_ASIC_REV(tp->pci_chip_rev_id) != ASIC_REV_5705 && @@ -10609,16 +10533,6 @@ static int __devinit tg3_get_invariants(struct tg3 *tp) (tp->tg3_flags & TG3_FLAG_PCIX_MODE) != 0) tp->rx_offset = 0; - tp->rx_std_max_post = TG3_RX_RING_SIZE; - - /* Increment the rx prod index on the rx std ring by at most - * 8 for these chips to workaround hw errata. - */ - if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5750 || - GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5752 || - GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5755) - tp->rx_std_max_post = 8; - /* By default, disable wake-on-lan. User can change this * using ETHTOOL_SWOL. */ diff --git a/trunk/drivers/net/tg3.h b/trunk/drivers/net/tg3.h index ba2c98711c88..8209da5dd15f 100644 --- a/trunk/drivers/net/tg3.h +++ b/trunk/drivers/net/tg3.h @@ -125,7 +125,6 @@ #define CHIPREV_ID_5750_A0 0x4000 #define CHIPREV_ID_5750_A1 0x4001 #define CHIPREV_ID_5750_A3 0x4003 -#define CHIPREV_ID_5750_C2 0x4202 #define CHIPREV_ID_5752_A0_HW 0x5000 #define CHIPREV_ID_5752_A0 0x6000 #define CHIPREV_ID_5752_A1 0x6001 @@ -761,7 +760,6 @@ #define RCVLPC_STATSCTRL_ENABLE 0x00000001 #define RCVLPC_STATSCTRL_FASTUPD 0x00000002 #define RCVLPC_STATS_ENABLE 0x00002018 -#define RCVLPC_STATSENAB_DACK_FIX 0x00040000 #define RCVLPC_STATSENAB_LNGBRST_RFIX 0x00400000 #define RCVLPC_STATS_INCMASK 0x0000201c /* 0x2020 --> 0x2100 unused */ @@ -2139,7 +2137,6 @@ struct tg3 { struct tg3_rx_buffer_desc *rx_std; struct ring_info *rx_std_buffers; dma_addr_t rx_std_mapping; - u32 rx_std_max_post; struct tg3_rx_buffer_desc *rx_jumbo; struct ring_info *rx_jumbo_buffers; @@ -2194,7 +2191,7 @@ struct tg3 { #define TG3_FLAG_INIT_COMPLETE 0x80000000 u32 tg3_flags2; #define TG3_FLG2_RESTART_TIMER 0x00000001 -#define TG3_FLG2_HW_TSO_1_BUG 0x00000002 +/* 0x00000002 available */ #define TG3_FLG2_NO_ETH_WIRE_SPEED 0x00000004 #define TG3_FLG2_IS_5788 0x00000008 #define TG3_FLG2_MAX_RXPEND_64 0x00000010 diff --git a/trunk/drivers/net/tokenring/3c359.c b/trunk/drivers/net/tokenring/3c359.c index 77bb298129d7..41e0cd8f4786 100644 --- a/trunk/drivers/net/tokenring/3c359.c +++ b/trunk/drivers/net/tokenring/3c359.c @@ -42,6 +42,7 @@ #define XL_DEBUG 0 +#include #include #include #include diff --git a/trunk/drivers/net/tokenring/lanstreamer.c b/trunk/drivers/net/tokenring/lanstreamer.c index 30dcdaebf41a..c58a4c31d0dd 100644 --- a/trunk/drivers/net/tokenring/lanstreamer.c +++ b/trunk/drivers/net/tokenring/lanstreamer.c @@ -100,6 +100,7 @@ #define STREAMER_IOCTL 0 +#include #include #include #include diff --git a/trunk/drivers/net/tokenring/olympic.c b/trunk/drivers/net/tokenring/olympic.c index d7a30d99ae8f..c3cb8d26cfe3 100644 --- a/trunk/drivers/net/tokenring/olympic.c +++ b/trunk/drivers/net/tokenring/olympic.c @@ -80,6 +80,7 @@ #define OLYMPIC_DEBUG 0 +#include #include #include #include diff --git a/trunk/drivers/net/tokenring/smctr.c b/trunk/drivers/net/tokenring/smctr.c index f2807ab5a2be..67d2b596ce22 100644 --- a/trunk/drivers/net/tokenring/smctr.c +++ b/trunk/drivers/net/tokenring/smctr.c @@ -29,6 +29,7 @@ */ #include +#include #include #include #include diff --git a/trunk/drivers/net/tokenring/smctr_firmware.h b/trunk/drivers/net/tokenring/smctr_firmware.h index 292e50ddf01a..48994b043b7c 100644 --- a/trunk/drivers/net/tokenring/smctr_firmware.h +++ b/trunk/drivers/net/tokenring/smctr_firmware.h @@ -17,6 +17,7 @@ * - Jay Schulist */ +#include #if defined(CONFIG_SMCTR) || defined(CONFIG_SMCTR_MODULE) diff --git a/trunk/drivers/net/tulip/de2104x.c b/trunk/drivers/net/tulip/de2104x.c index 354294c6271e..fc2468ecce0b 100644 --- a/trunk/drivers/net/tulip/de2104x.c +++ b/trunk/drivers/net/tulip/de2104x.c @@ -31,6 +31,7 @@ #define DRV_VERSION "0.7" #define DRV_RELDATE "Mar 17, 2004" +#include #include #include #include diff --git a/trunk/drivers/net/tulip/de4x5.c b/trunk/drivers/net/tulip/de4x5.c index 2647a5bc5211..da8bd0d62a3f 100644 --- a/trunk/drivers/net/tulip/de4x5.c +++ b/trunk/drivers/net/tulip/de4x5.c @@ -443,6 +443,7 @@ ========================================================================= */ +#include #include #include #include diff --git a/trunk/drivers/net/tulip/interrupt.c b/trunk/drivers/net/tulip/interrupt.c index 99ccf2ebb342..da4f7593c50f 100644 --- a/trunk/drivers/net/tulip/interrupt.c +++ b/trunk/drivers/net/tulip/interrupt.c @@ -16,6 +16,7 @@ #include #include "tulip.h" +#include #include int tulip_rx_copybreak; diff --git a/trunk/drivers/net/tulip/tulip.h b/trunk/drivers/net/tulip/tulip.h index 3bcfbf3d23ed..d25020da6798 100644 --- a/trunk/drivers/net/tulip/tulip.h +++ b/trunk/drivers/net/tulip/tulip.h @@ -16,6 +16,7 @@ #ifndef __NET_TULIP_H__ #define __NET_TULIP_H__ +#include #include #include #include diff --git a/trunk/drivers/net/tulip/tulip_core.c b/trunk/drivers/net/tulip/tulip_core.c index 8f4f4840fc12..53fd9b56d0bd 100644 --- a/trunk/drivers/net/tulip/tulip_core.c +++ b/trunk/drivers/net/tulip/tulip_core.c @@ -14,6 +14,7 @@ */ +#include #define DRV_NAME "tulip" #ifdef CONFIG_TULIP_NAPI diff --git a/trunk/drivers/net/tulip/xircom_tulip_cb.c b/trunk/drivers/net/tulip/xircom_tulip_cb.c index aecafdabbc91..887d7245fe7b 100644 --- a/trunk/drivers/net/tulip/xircom_tulip_cb.c +++ b/trunk/drivers/net/tulip/xircom_tulip_cb.c @@ -98,6 +98,7 @@ static int csr0 = 0x00A00000 | 0x4800; /* PCI registers */ #define PCI_POWERMGMT 0x40 +#include #include #include #include diff --git a/trunk/drivers/net/tun.c b/trunk/drivers/net/tun.c index 329d9feb9b89..732c5edec2e5 100644 --- a/trunk/drivers/net/tun.c +++ b/trunk/drivers/net/tun.c @@ -39,6 +39,7 @@ #define DRV_DESCRIPTION "Universal TUN/TAP device driver" #define DRV_COPYRIGHT "(C) 1999-2004 Max Krasnyansky " +#include #include #include #include diff --git a/trunk/drivers/net/via-velocity.c b/trunk/drivers/net/via-velocity.c index 857d71c3c017..09e05fe40c38 100644 --- a/trunk/drivers/net/via-velocity.c +++ b/trunk/drivers/net/via-velocity.c @@ -47,6 +47,7 @@ #include #include +#include #include #include #include @@ -64,6 +65,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/net/wan/cosa.c b/trunk/drivers/net/wan/cosa.c index 1f95b4864ea1..be5e33814cb1 100644 --- a/trunk/drivers/net/wan/cosa.c +++ b/trunk/drivers/net/wan/cosa.c @@ -79,6 +79,7 @@ /* ---------- Headers, macros, data structures ---------- */ +#include #include #include #include diff --git a/trunk/drivers/net/wan/hdlc_generic.c b/trunk/drivers/net/wan/hdlc_generic.c index b7da55140fbd..57f9538b8fb5 100644 --- a/trunk/drivers/net/wan/hdlc_generic.c +++ b/trunk/drivers/net/wan/hdlc_generic.c @@ -22,6 +22,7 @@ * - proto.start() and stop() are called with spin_lock_irq held. */ +#include #include #include #include diff --git a/trunk/drivers/net/wan/lmc/lmc_media.c b/trunk/drivers/net/wan/lmc/lmc_media.c index ae01555d24cf..af8b55fdd9d9 100644 --- a/trunk/drivers/net/wan/lmc/lmc_media.c +++ b/trunk/drivers/net/wan/lmc/lmc_media.c @@ -1,5 +1,6 @@ /* $Id: lmc_media.c,v 1.13 2000/04/11 05:25:26 asj Exp $ */ +#include #include #include #include diff --git a/trunk/drivers/net/wan/sbni.c b/trunk/drivers/net/wan/sbni.c index f2d071272cee..175ba13bce41 100644 --- a/trunk/drivers/net/wan/sbni.c +++ b/trunk/drivers/net/wan/sbni.c @@ -37,6 +37,7 @@ * Known problem: this driver wasn't tested on multiprocessor machine. */ +#include #include #include #include diff --git a/trunk/drivers/net/wan/syncppp.c b/trunk/drivers/net/wan/syncppp.c index c13b459a0137..2d1bba06a085 100644 --- a/trunk/drivers/net/wan/syncppp.c +++ b/trunk/drivers/net/wan/syncppp.c @@ -37,6 +37,7 @@ */ #undef DEBUG +#include #include #include #include diff --git a/trunk/drivers/net/wireless/airo.c b/trunk/drivers/net/wireless/airo.c index 89328d119efa..4069b79d8259 100644 --- a/trunk/drivers/net/wireless/airo.c +++ b/trunk/drivers/net/wireless/airo.c @@ -19,6 +19,7 @@ ======================================================================*/ +#include #include #include diff --git a/trunk/drivers/net/wireless/airo_cs.c b/trunk/drivers/net/wireless/airo_cs.c index ac9437d497f0..af0cbb6c5c0c 100644 --- a/trunk/drivers/net/wireless/airo_cs.c +++ b/trunk/drivers/net/wireless/airo_cs.c @@ -20,6 +20,7 @@ ======================================================================*/ +#include #ifdef __IN_PCMCIA_PACKAGE__ #include #endif diff --git a/trunk/drivers/net/wireless/airport.c b/trunk/drivers/net/wireless/airport.c index 38fac3bbcd82..7b321f7cf358 100644 --- a/trunk/drivers/net/wireless/airport.c +++ b/trunk/drivers/net/wireless/airport.c @@ -14,6 +14,7 @@ #define DRIVER_NAME "airport" #define PFX DRIVER_NAME ": " +#include #include #include #include diff --git a/trunk/drivers/net/wireless/arlan-main.c b/trunk/drivers/net/wireless/arlan-main.c index bb6bea4f3233..bed6823d9809 100644 --- a/trunk/drivers/net/wireless/arlan-main.c +++ b/trunk/drivers/net/wireless/arlan-main.c @@ -5,6 +5,7 @@ * This module provides support for the Arlan 655 card made by Aironet */ +#include #include "arlan.h" #if BITS_PER_LONG != 32 diff --git a/trunk/drivers/net/wireless/arlan-proc.c b/trunk/drivers/net/wireless/arlan-proc.c index 5fa985435ffa..a2cca521f444 100644 --- a/trunk/drivers/net/wireless/arlan-proc.c +++ b/trunk/drivers/net/wireless/arlan-proc.c @@ -1,3 +1,4 @@ +#include #include "arlan.h" #include diff --git a/trunk/drivers/net/wireless/arlan.h b/trunk/drivers/net/wireless/arlan.h index 3ed1df75900f..70a6d7b83c4a 100644 --- a/trunk/drivers/net/wireless/arlan.h +++ b/trunk/drivers/net/wireless/arlan.h @@ -5,6 +5,7 @@ */ #include +#include #include #include #include diff --git a/trunk/drivers/net/wireless/atmel.c b/trunk/drivers/net/wireless/atmel.c index 54e31fa2d402..8606c88886fc 100644 --- a/trunk/drivers/net/wireless/atmel.c +++ b/trunk/drivers/net/wireless/atmel.c @@ -39,6 +39,7 @@ ******************************************************************************/ +#include #include #include diff --git a/trunk/drivers/net/wireless/atmel_cs.c b/trunk/drivers/net/wireless/atmel_cs.c index 785664090bb4..26bf1127524d 100644 --- a/trunk/drivers/net/wireless/atmel_cs.c +++ b/trunk/drivers/net/wireless/atmel_cs.c @@ -29,6 +29,7 @@ ******************************************************************************/ +#include #ifdef __IN_PCMCIA_PACKAGE__ #include #endif diff --git a/trunk/drivers/net/wireless/atmel_pci.c b/trunk/drivers/net/wireless/atmel_pci.c index d425c3cefded..a61b3bc6cccf 100644 --- a/trunk/drivers/net/wireless/atmel_pci.c +++ b/trunk/drivers/net/wireless/atmel_pci.c @@ -19,6 +19,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ +#include #include #include #include diff --git a/trunk/drivers/net/wireless/hermes.c b/trunk/drivers/net/wireless/hermes.c index 29d39105f5b8..2aa2f389c0d5 100644 --- a/trunk/drivers/net/wireless/hermes.c +++ b/trunk/drivers/net/wireless/hermes.c @@ -38,6 +38,7 @@ * under either the MPL or the GPL. */ +#include #include #include #include diff --git a/trunk/drivers/net/wireless/hostap/hostap_cs.c b/trunk/drivers/net/wireless/hostap/hostap_cs.c index 52e6df5c1a92..db03dc2646df 100644 --- a/trunk/drivers/net/wireless/hostap/hostap_cs.c +++ b/trunk/drivers/net/wireless/hostap/hostap_cs.c @@ -1,5 +1,6 @@ #define PRISM2_PCCARD +#include #include #include #include @@ -843,7 +844,7 @@ static struct pcmcia_device_id hostap_cs_ids[] = { PCMCIA_DEVICE_MANF_CARD(0x02d2, 0x0001), PCMCIA_DEVICE_MANF_CARD(0x50c2, 0x0001), PCMCIA_DEVICE_MANF_CARD(0x50c2, 0x7300), -/* PCMCIA_DEVICE_MANF_CARD(0xc00f, 0x0000), conflict with pcnet_cs */ + PCMCIA_DEVICE_MANF_CARD(0xc00f, 0x0000), PCMCIA_DEVICE_MANF_CARD(0xd601, 0x0002), PCMCIA_DEVICE_MANF_CARD(0xd601, 0x0005), PCMCIA_DEVICE_MANF_CARD(0xd601, 0x0010), diff --git a/trunk/drivers/net/wireless/hostap/hostap_hw.c b/trunk/drivers/net/wireless/hostap/hostap_hw.c index b764cfda6e84..328e9a1d13b5 100644 --- a/trunk/drivers/net/wireless/hostap/hostap_hw.c +++ b/trunk/drivers/net/wireless/hostap/hostap_hw.c @@ -30,6 +30,7 @@ */ +#include #include #include diff --git a/trunk/drivers/net/wireless/hostap/hostap_main.c b/trunk/drivers/net/wireless/hostap/hostap_main.c index 53374fcba77e..93786f4218f0 100644 --- a/trunk/drivers/net/wireless/hostap/hostap_main.c +++ b/trunk/drivers/net/wireless/hostap/hostap_main.c @@ -12,6 +12,7 @@ * more details. */ +#include #include #include #include diff --git a/trunk/drivers/net/wireless/hostap/hostap_pci.c b/trunk/drivers/net/wireless/hostap/hostap_pci.c index 5ea8ac835857..194f07097581 100644 --- a/trunk/drivers/net/wireless/hostap/hostap_pci.c +++ b/trunk/drivers/net/wireless/hostap/hostap_pci.c @@ -4,6 +4,7 @@ * driver patches from Reyk Floeter and * Andy Warner */ +#include #include #include #include diff --git a/trunk/drivers/net/wireless/hostap/hostap_plx.c b/trunk/drivers/net/wireless/hostap/hostap_plx.c index 4ee6abbc65ec..edaaa943eb8f 100644 --- a/trunk/drivers/net/wireless/hostap/hostap_plx.c +++ b/trunk/drivers/net/wireless/hostap/hostap_plx.c @@ -7,6 +7,7 @@ */ +#include #include #include #include diff --git a/trunk/drivers/net/wireless/ipw2100.c b/trunk/drivers/net/wireless/ipw2100.c index 27f744e43095..94aeb23a7729 100644 --- a/trunk/drivers/net/wireless/ipw2100.c +++ b/trunk/drivers/net/wireless/ipw2100.c @@ -134,6 +134,7 @@ that only one external action is invoked at a time. */ #include +#include #include #include #include @@ -5357,7 +5358,7 @@ static int ipw2100_set_key(struct ipw2100_priv *priv, idx, keylen, len); /* NOTE: We don't check cached values in case the firmware was reset - * or some other problem is occurring. If the user is setting the key, + * or some other problem is occuring. If the user is setting the key, * then we push the change */ wep_key->idx = idx; diff --git a/trunk/drivers/net/wireless/ipw2200.h b/trunk/drivers/net/wireless/ipw2200.h index 8b1cd7c749a4..ea12ad66b8e8 100644 --- a/trunk/drivers/net/wireless/ipw2200.h +++ b/trunk/drivers/net/wireless/ipw2200.h @@ -31,6 +31,7 @@ #include #include +#include #include #include diff --git a/trunk/drivers/net/wireless/netwave_cs.c b/trunk/drivers/net/wireless/netwave_cs.c index 36b5e004305e..9343d970537b 100644 --- a/trunk/drivers/net/wireless/netwave_cs.c +++ b/trunk/drivers/net/wireless/netwave_cs.c @@ -37,6 +37,7 @@ /* To have statistics (just packets sent) define this */ #undef NETWAVE_STATS +#include #include #include #include diff --git a/trunk/drivers/net/wireless/orinoco.c b/trunk/drivers/net/wireless/orinoco.c index d6ed5781b93a..8a31b591a901 100644 --- a/trunk/drivers/net/wireless/orinoco.c +++ b/trunk/drivers/net/wireless/orinoco.c @@ -76,6 +76,7 @@ #define DRIVER_NAME "orinoco" +#include #include #include #include diff --git a/trunk/drivers/net/wireless/orinoco_cs.c b/trunk/drivers/net/wireless/orinoco_cs.c index bc14689cbf24..b2aec4d9fbb1 100644 --- a/trunk/drivers/net/wireless/orinoco_cs.c +++ b/trunk/drivers/net/wireless/orinoco_cs.c @@ -13,6 +13,7 @@ #define DRIVER_NAME "orinoco_cs" #define PFX DRIVER_NAME ": " +#include #include #include #include diff --git a/trunk/drivers/net/wireless/orinoco_nortel.c b/trunk/drivers/net/wireless/orinoco_nortel.c index 4597fe1d1979..74b9d5b2ba9e 100644 --- a/trunk/drivers/net/wireless/orinoco_nortel.c +++ b/trunk/drivers/net/wireless/orinoco_nortel.c @@ -40,6 +40,7 @@ #define DRIVER_NAME "orinoco_nortel" #define PFX DRIVER_NAME ": " +#include #include #include #include diff --git a/trunk/drivers/net/wireless/orinoco_pci.c b/trunk/drivers/net/wireless/orinoco_pci.c index de3eae082a0d..1c105f40f8d5 100644 --- a/trunk/drivers/net/wireless/orinoco_pci.c +++ b/trunk/drivers/net/wireless/orinoco_pci.c @@ -44,6 +44,7 @@ #define DRIVER_NAME "orinoco_pci" #define PFX DRIVER_NAME ": " +#include #include #include #include diff --git a/trunk/drivers/net/wireless/orinoco_plx.c b/trunk/drivers/net/wireless/orinoco_plx.c index 3f928b8939f0..84f696c77551 100644 --- a/trunk/drivers/net/wireless/orinoco_plx.c +++ b/trunk/drivers/net/wireless/orinoco_plx.c @@ -86,6 +86,7 @@ #define DRIVER_NAME "orinoco_plx" #define PFX DRIVER_NAME ": " +#include #include #include #include diff --git a/trunk/drivers/net/wireless/orinoco_tmd.c b/trunk/drivers/net/wireless/orinoco_tmd.c index 160a642185f0..d2b4decb7a7d 100644 --- a/trunk/drivers/net/wireless/orinoco_tmd.c +++ b/trunk/drivers/net/wireless/orinoco_tmd.c @@ -40,6 +40,7 @@ #define DRIVER_NAME "orinoco_tmd" #define PFX DRIVER_NAME ": " +#include #include #include #include diff --git a/trunk/drivers/net/wireless/prism54/islpci_mgt.c b/trunk/drivers/net/wireless/prism54/islpci_mgt.c index 2e061a80b294..6a60c5970cb5 100644 --- a/trunk/drivers/net/wireless/prism54/islpci_mgt.c +++ b/trunk/drivers/net/wireless/prism54/islpci_mgt.c @@ -18,6 +18,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/net/wireless/prism54/prismcompat.h b/trunk/drivers/net/wireless/prism54/prismcompat.h index d71eca55a302..55541c01752e 100644 --- a/trunk/drivers/net/wireless/prism54/prismcompat.h +++ b/trunk/drivers/net/wireless/prism54/prismcompat.h @@ -29,6 +29,7 @@ #include #include +#include #include #include #include diff --git a/trunk/drivers/net/wireless/ray_cs.c b/trunk/drivers/net/wireless/ray_cs.c index 61b83a5e737a..a915fe6c6aa5 100644 --- a/trunk/drivers/net/wireless/ray_cs.c +++ b/trunk/drivers/net/wireless/ray_cs.c @@ -30,6 +30,7 @@ * =============================================================================*/ +#include #include #include #include diff --git a/trunk/drivers/net/wireless/spectrum_cs.c b/trunk/drivers/net/wireless/spectrum_cs.c index 15465278c789..7f9aa139c347 100644 --- a/trunk/drivers/net/wireless/spectrum_cs.c +++ b/trunk/drivers/net/wireless/spectrum_cs.c @@ -21,6 +21,7 @@ #define DRIVER_NAME "spectrum_cs" #define PFX DRIVER_NAME ": " +#include #include #include #include diff --git a/trunk/drivers/net/wireless/strip.c b/trunk/drivers/net/wireless/strip.c index fd31885c6844..18a44580b53b 100644 --- a/trunk/drivers/net/wireless/strip.c +++ b/trunk/drivers/net/wireless/strip.c @@ -81,6 +81,7 @@ static const char StripVersion[] = "1.3A-STUART.CHESHIRE"; /************************************************************************/ /* Header files */ +#include #include #include #include diff --git a/trunk/drivers/net/wireless/wavelan_cs.p.h b/trunk/drivers/net/wireless/wavelan_cs.p.h index f34a36b0c7b0..c65fe7a391ec 100644 --- a/trunk/drivers/net/wireless/wavelan_cs.p.h +++ b/trunk/drivers/net/wireless/wavelan_cs.p.h @@ -411,6 +411,7 @@ /***************************** INCLUDES *****************************/ /* Linux headers that we need */ +#include #include #include #include diff --git a/trunk/drivers/net/wireless/wl3501_cs.c b/trunk/drivers/net/wireless/wl3501_cs.c index c03e400facee..e52a650f6737 100644 --- a/trunk/drivers/net/wireless/wl3501_cs.c +++ b/trunk/drivers/net/wireless/wl3501_cs.c @@ -28,6 +28,7 @@ */ #undef REALLY_SLOW_IO /* most systems can safely undef this */ +#include #include #include #include diff --git a/trunk/drivers/net/znet.c b/trunk/drivers/net/znet.c index 9f0291f35290..a7c089df66e6 100644 --- a/trunk/drivers/net/znet.c +++ b/trunk/drivers/net/znet.c @@ -85,6 +85,7 @@ - Understand why some traffic patterns add a 1s latency... */ +#include #include #include #include diff --git a/trunk/drivers/nubus/nubus.c b/trunk/drivers/nubus/nubus.c index 3a0a3a734933..14cbe34eb897 100644 --- a/trunk/drivers/nubus/nubus.c +++ b/trunk/drivers/nubus/nubus.c @@ -7,6 +7,7 @@ * and others. */ +#include #include #include #include diff --git a/trunk/drivers/nubus/nubus_syms.c b/trunk/drivers/nubus/nubus_syms.c index 9204f04fbf0b..22c1dc9f87b3 100644 --- a/trunk/drivers/nubus/nubus_syms.c +++ b/trunk/drivers/nubus/nubus_syms.c @@ -2,6 +2,7 @@ (c) 1999 David Huggins-Daines */ +#include #include #include #include diff --git a/trunk/drivers/parisc/ccio-dma.c b/trunk/drivers/parisc/ccio-dma.c index 68cb3a080050..a5d826237b26 100644 --- a/trunk/drivers/parisc/ccio-dma.c +++ b/trunk/drivers/parisc/ccio-dma.c @@ -31,6 +31,7 @@ ** the coherency design originally worked out. Only PCX-W does. */ +#include #include #include #include diff --git a/trunk/drivers/parisc/dino.c b/trunk/drivers/parisc/dino.c index 0d96c50ffe9c..ce0a6ebcff15 100644 --- a/trunk/drivers/parisc/dino.c +++ b/trunk/drivers/parisc/dino.c @@ -43,6 +43,7 @@ ** for PCI drivers devices which implement/use MMIO registers. */ +#include #include #include #include diff --git a/trunk/drivers/parisc/gsc.c b/trunk/drivers/parisc/gsc.c index b45aa5c675a0..5476ba7709b3 100644 --- a/trunk/drivers/parisc/gsc.c +++ b/trunk/drivers/parisc/gsc.c @@ -14,6 +14,7 @@ */ #include +#include #include #include #include diff --git a/trunk/drivers/parisc/led.c b/trunk/drivers/parisc/led.c index bf00fa2537bb..298f2ddb2c17 100644 --- a/trunk/drivers/parisc/led.c +++ b/trunk/drivers/parisc/led.c @@ -23,6 +23,7 @@ * David Pye */ +#include #include #include /* for offsetof() */ #include @@ -410,17 +411,16 @@ static __inline__ int led_get_net_activity(void) static __inline__ int led_get_diskio_activity(void) { static unsigned long last_pgpgin, last_pgpgout; - unsigned long events[NR_VM_EVENT_ITEMS]; + struct page_state pgstat; int changed; - all_vm_events(events); + get_full_page_state(&pgstat); /* get no of sectors in & out */ /* Just use a very simple calculation here. Do not care about overflow, since we only want to know if there was activity or not. */ - changed = (events[PGPGIN] != last_pgpgin) || - (events[PGPGOUT] != last_pgpgout); - last_pgpgin = events[PGPGIN]; - last_pgpgout = events[PGPGOUT]; + changed = (pgstat.pgpgin != last_pgpgin) || (pgstat.pgpgout != last_pgpgout); + last_pgpgin = pgstat.pgpgin; + last_pgpgout = pgstat.pgpgout; return (changed ? LED_DISK_IO : 0); } diff --git a/trunk/drivers/parisc/power.c b/trunk/drivers/parisc/power.c index fad5a33bf0fa..0bcab83b4080 100644 --- a/trunk/drivers/parisc/power.c +++ b/trunk/drivers/parisc/power.c @@ -35,6 +35,7 @@ * runtime through the "/proc/sys/kernel/power" procfs entry. */ +#include #include #include #include diff --git a/trunk/drivers/parisc/sba_iommu.c b/trunk/drivers/parisc/sba_iommu.c index 8b4732815511..d09e39e39c60 100644 --- a/trunk/drivers/parisc/sba_iommu.c +++ b/trunk/drivers/parisc/sba_iommu.c @@ -19,6 +19,7 @@ ** FIXME: add DMA hint support programming in both sba and lba modules. */ +#include #include #include #include diff --git a/trunk/drivers/parport/ieee1284.c b/trunk/drivers/parport/ieee1284.c index 7ff09f0f858f..690b239ad3a7 100644 --- a/trunk/drivers/parport/ieee1284.c +++ b/trunk/drivers/parport/ieee1284.c @@ -16,6 +16,7 @@ * Various hacks, Fred Barnes , 04/2000 */ +#include #include #include #include diff --git a/trunk/drivers/parport/ieee1284_ops.c b/trunk/drivers/parport/ieee1284_ops.c index 525312f2fe9c..d6c77658231e 100644 --- a/trunk/drivers/parport/ieee1284_ops.c +++ b/trunk/drivers/parport/ieee1284_ops.c @@ -14,6 +14,7 @@ */ +#include #include #include #include diff --git a/trunk/drivers/parport/parport_pc.c b/trunk/drivers/parport/parport_pc.c index fe800dc0be9f..7318e4a9e436 100644 --- a/trunk/drivers/parport/parport_pc.c +++ b/trunk/drivers/parport/parport_pc.c @@ -42,6 +42,7 @@ * but rather will start at port->base_hi. */ +#include #include #include #include diff --git a/trunk/drivers/parport/procfs.c b/trunk/drivers/parport/procfs.c index 2e744a274517..8610ae88b92d 100644 --- a/trunk/drivers/parport/procfs.c +++ b/trunk/drivers/parport/procfs.c @@ -13,6 +13,7 @@ */ #include +#include #include #include #include diff --git a/trunk/drivers/parport/share.c b/trunk/drivers/parport/share.c index 94dc506b83d1..2cb22c8d3357 100644 --- a/trunk/drivers/parport/share.c +++ b/trunk/drivers/parport/share.c @@ -17,6 +17,7 @@ #undef PARPORT_DEBUG_SHARING /* undef for production */ +#include #include #include #include diff --git a/trunk/drivers/pci/hotplug/cpci_hotplug_core.c b/trunk/drivers/pci/hotplug/cpci_hotplug_core.c index 30d87143b5d9..037ce4c91687 100644 --- a/trunk/drivers/pci/hotplug/cpci_hotplug_core.c +++ b/trunk/drivers/pci/hotplug/cpci_hotplug_core.c @@ -25,6 +25,7 @@ * Send feedback to */ +#include #include #include #include diff --git a/trunk/drivers/pci/hotplug/cpci_hotplug_pci.c b/trunk/drivers/pci/hotplug/cpci_hotplug_pci.c index 02be74caa89f..225b5e551dd6 100644 --- a/trunk/drivers/pci/hotplug/cpci_hotplug_pci.c +++ b/trunk/drivers/pci/hotplug/cpci_hotplug_pci.c @@ -23,6 +23,7 @@ * Send feedback to */ +#include #include #include #include diff --git a/trunk/drivers/pci/hotplug/cpcihp_generic.c b/trunk/drivers/pci/hotplug/cpcihp_generic.c index e847f0d6c7fe..2d4639d6841f 100644 --- a/trunk/drivers/pci/hotplug/cpcihp_generic.c +++ b/trunk/drivers/pci/hotplug/cpcihp_generic.c @@ -34,6 +34,7 @@ * Send feedback to */ +#include #include #include #include diff --git a/trunk/drivers/pci/hotplug/cpcihp_zt5550.c b/trunk/drivers/pci/hotplug/cpcihp_zt5550.c index 584f8538da13..1ec165df8522 100644 --- a/trunk/drivers/pci/hotplug/cpcihp_zt5550.c +++ b/trunk/drivers/pci/hotplug/cpcihp_zt5550.c @@ -30,6 +30,7 @@ * Send feedback to */ +#include #include #include #include diff --git a/trunk/drivers/pci/hotplug/cpqphp_core.c b/trunk/drivers/pci/hotplug/cpqphp_core.c index e6e171f77c34..f8658d63f077 100644 --- a/trunk/drivers/pci/hotplug/cpqphp_core.c +++ b/trunk/drivers/pci/hotplug/cpqphp_core.c @@ -29,6 +29,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/pci/hotplug/cpqphp_ctrl.c b/trunk/drivers/pci/hotplug/cpqphp_ctrl.c index ae2dd36efef2..55d2dc7e39ca 100644 --- a/trunk/drivers/pci/hotplug/cpqphp_ctrl.c +++ b/trunk/drivers/pci/hotplug/cpqphp_ctrl.c @@ -26,6 +26,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/pci/hotplug/cpqphp_nvram.c b/trunk/drivers/pci/hotplug/cpqphp_nvram.c index cf0878917537..ac98a11bd1eb 100644 --- a/trunk/drivers/pci/hotplug/cpqphp_nvram.c +++ b/trunk/drivers/pci/hotplug/cpqphp_nvram.c @@ -26,6 +26,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/pci/hotplug/cpqphp_pci.c b/trunk/drivers/pci/hotplug/cpqphp_pci.c index 0d9688952f4a..00b81a7bdd26 100644 --- a/trunk/drivers/pci/hotplug/cpqphp_pci.c +++ b/trunk/drivers/pci/hotplug/cpqphp_pci.c @@ -26,6 +26,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/pci/hotplug/cpqphp_sysfs.c b/trunk/drivers/pci/hotplug/cpqphp_sysfs.c index 8b3da007e859..bbfeed767ff1 100644 --- a/trunk/drivers/pci/hotplug/cpqphp_sysfs.c +++ b/trunk/drivers/pci/hotplug/cpqphp_sysfs.c @@ -26,6 +26,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/pci/hotplug/fakephp.c b/trunk/drivers/pci/hotplug/fakephp.c index dd2b762777c4..71b80c23e8ce 100644 --- a/trunk/drivers/pci/hotplug/fakephp.c +++ b/trunk/drivers/pci/hotplug/fakephp.c @@ -32,6 +32,7 @@ * Enabling PCI devices is left as an exercise for the reader... * */ +#include #include #include #include diff --git a/trunk/drivers/pci/hotplug/pci_hotplug_core.c b/trunk/drivers/pci/hotplug/pci_hotplug_core.c index b7b378df89e3..c4282902cb52 100644 --- a/trunk/drivers/pci/hotplug/pci_hotplug_core.c +++ b/trunk/drivers/pci/hotplug/pci_hotplug_core.c @@ -27,6 +27,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/pci/hotplug/pcihp_skeleton.c b/trunk/drivers/pci/hotplug/pcihp_skeleton.c index 8ad446605f75..0a46f549676a 100644 --- a/trunk/drivers/pci/hotplug/pcihp_skeleton.c +++ b/trunk/drivers/pci/hotplug/pcihp_skeleton.c @@ -28,6 +28,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/pci/hotplug/rpaphp_core.c b/trunk/drivers/pci/hotplug/rpaphp_core.c index 076bd6dcafae..638004546700 100644 --- a/trunk/drivers/pci/hotplug/rpaphp_core.c +++ b/trunk/drivers/pci/hotplug/rpaphp_core.c @@ -22,6 +22,7 @@ * Send feedback to * */ +#include #include #include #include diff --git a/trunk/drivers/pci/msi.c b/trunk/drivers/pci/msi.c index 36bc7c415af7..76d023d8a33b 100644 --- a/trunk/drivers/pci/msi.c +++ b/trunk/drivers/pci/msi.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/pci/pci-sysfs.c b/trunk/drivers/pci/pci-sysfs.c index fdefa7dcd156..606f9b6f70eb 100644 --- a/trunk/drivers/pci/pci-sysfs.c +++ b/trunk/drivers/pci/pci-sysfs.c @@ -15,6 +15,7 @@ */ +#include #include #include #include diff --git a/trunk/drivers/pci/quirks.c b/trunk/drivers/pci/quirks.c index d1d7333bb71b..4364d793f73b 100644 --- a/trunk/drivers/pci/quirks.c +++ b/trunk/drivers/pci/quirks.c @@ -15,6 +15,7 @@ * use the PowerTweak utility (see http://powertweak.sourceforge.net). */ +#include #include #include #include diff --git a/trunk/drivers/pci/rom.c b/trunk/drivers/pci/rom.c index f5ee7ce16fa6..cbb69cf41311 100644 --- a/trunk/drivers/pci/rom.c +++ b/trunk/drivers/pci/rom.c @@ -6,6 +6,7 @@ * * PCI ROM access routines */ +#include #include #include #include diff --git a/trunk/drivers/pcmcia/at91_cf.c b/trunk/drivers/pcmcia/at91_cf.c index 5256342e8532..a4d50940ebeb 100644 --- a/trunk/drivers/pcmcia/at91_cf.c +++ b/trunk/drivers/pcmcia/at91_cf.c @@ -214,10 +214,11 @@ static struct pccard_operations at91_cf_ops = { /*--------------------------------------------------------------------------*/ -static int __init at91_cf_probe(struct platform_device *pdev) +static int __init at91_cf_probe(struct device *dev) { struct at91_cf_socket *cf; - struct at91_cf_data *board = pdev->dev.platform_data; + struct at91_cf_data *board = dev->platform_data; + struct platform_device *pdev = to_platform_device(dev); struct resource *io; unsigned int csa; int status; @@ -235,7 +236,7 @@ static int __init at91_cf_probe(struct platform_device *pdev) cf->board = board; cf->pdev = pdev; - platform_set_drvdata(pdev, cf); + dev_set_drvdata(dev, cf); /* CF takes over CS4, CS5, CS6 */ csa = at91_sys_read(AT91_EBI_CSA); @@ -270,7 +271,6 @@ static int __init at91_cf_probe(struct platform_device *pdev) SA_SAMPLE_RANDOM, driver_name, cf); if (status < 0) goto fail0; - device_init_wakeup(&pdev->dev, 1); /* * The card driver will request this irq later as needed. @@ -301,7 +301,7 @@ static int __init at91_cf_probe(struct platform_device *pdev) board->det_pin, board->irq_pin); cf->socket.owner = THIS_MODULE; - cf->socket.dev.dev = &pdev->dev; + cf->socket.dev.dev = dev; cf->socket.ops = &at91_cf_ops; cf->socket.resource_ops = &pccard_static_ops; cf->socket.features = SS_CAP_PCCARD | SS_CAP_STATIC_MAP @@ -323,25 +323,21 @@ static int __init at91_cf_probe(struct platform_device *pdev) free_irq(board->irq_pin, cf); fail0a: free_irq(board->det_pin, cf); - device_init_wakeup(&pdev->dev, 0); fail0: at91_sys_write(AT91_EBI_CSA, csa); kfree(cf); return status; } -static int __exit at91_cf_remove(struct platform_device *pdev) +static int __exit at91_cf_remove(struct device *dev) { - struct at91_cf_socket *cf = platform_get_drvdata(pdev); - struct at91_cf_data *board = cf->board; + struct at91_cf_socket *cf = dev_get_drvdata(dev); struct resource *io = cf->socket.io[0].res; unsigned int csa; pcmcia_unregister_socket(&cf->socket); - if (board->irq_pin) - free_irq(board->irq_pin, cf); - free_irq(board->det_pin, cf); - device_init_wakeup(&pdev->dev, 0); + free_irq(cf->board->irq_pin, cf); + free_irq(cf->board->det_pin, cf); iounmap((void __iomem *) cf->socket.io_offset); release_mem_region(io->start, io->end + 1 - io->start); @@ -352,65 +348,26 @@ static int __exit at91_cf_remove(struct platform_device *pdev) return 0; } -#ifdef CONFIG_PM - -static int at91_cf_suspend(struct platform_device *pdev, pm_message_t mesg) -{ - struct at91_cf_socket *cf = platform_get_drvdata(pdev); - struct at91_cf_data *board = cf->board; - - pcmcia_socket_dev_suspend(&pdev->dev, mesg); - if (device_may_wakeup(&pdev->dev)) - enable_irq_wake(board->det_pin); - else { - disable_irq_wake(board->det_pin); - disable_irq(board->det_pin); - } - if (board->irq_pin) - disable_irq(board->irq_pin); - return 0; -} - -static int at91_cf_resume(struct platform_device *pdev) -{ - struct at91_cf_socket *cf = platform_get_drvdata(pdev); - struct at91_cf_data *board = cf->board; - - if (board->irq_pin) - enable_irq(board->irq_pin); - if (!device_may_wakeup(&pdev->dev)) - enable_irq(board->det_pin); - pcmcia_socket_dev_resume(&pdev->dev); - return 0; -} - -#else -#define at91_cf_suspend NULL -#define at91_cf_resume NULL -#endif - -static struct platform_driver at91_cf_driver = { - .driver = { - .name = (char *) driver_name, - .owner = THIS_MODULE, - }, +static struct device_driver at91_cf_driver = { + .name = (char *) driver_name, + .bus = &platform_bus_type, .probe = at91_cf_probe, .remove = __exit_p(at91_cf_remove), - .suspend = at91_cf_suspend, - .resume = at91_cf_resume, + .suspend = pcmcia_socket_dev_suspend, + .resume = pcmcia_socket_dev_resume, }; /*--------------------------------------------------------------------------*/ static int __init at91_cf_init(void) { - return platform_driver_register(&at91_cf_driver); + return driver_register(&at91_cf_driver); } module_init(at91_cf_init); static void __exit at91_cf_exit(void) { - platform_driver_unregister(&at91_cf_driver); + driver_unregister(&at91_cf_driver); } module_exit(at91_cf_exit); diff --git a/trunk/drivers/pcmcia/au1000_db1x00.c b/trunk/drivers/pcmcia/au1000_db1x00.c index 74e051535d6c..abc13f28ba3f 100644 --- a/trunk/drivers/pcmcia/au1000_db1x00.c +++ b/trunk/drivers/pcmcia/au1000_db1x00.c @@ -30,6 +30,7 @@ * */ +#include #include #include #include @@ -295,7 +296,7 @@ struct pcmcia_low_level db1x00_pcmcia_ops = { .socket_suspend = db1x00_socket_suspend }; -int au1x_board_init(struct device *dev) +int __init au1x_board_init(struct device *dev) { int ret = -ENODEV; bcsr->pcmcia = 0; /* turn off power, if it's not already off */ diff --git a/trunk/drivers/pcmcia/au1000_generic.c b/trunk/drivers/pcmcia/au1000_generic.c index d5dd0ce65536..971a35281649 100644 --- a/trunk/drivers/pcmcia/au1000_generic.c +++ b/trunk/drivers/pcmcia/au1000_generic.c @@ -33,6 +33,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/pcmcia/au1000_generic.h b/trunk/drivers/pcmcia/au1000_generic.h index 1e467bb54077..f2c970b5f4ff 100644 --- a/trunk/drivers/pcmcia/au1000_generic.h +++ b/trunk/drivers/pcmcia/au1000_generic.h @@ -22,6 +22,7 @@ #define __ASM_AU1000_PCMCIA_H /* include the world */ +#include #include #include diff --git a/trunk/drivers/pcmcia/au1000_pb1x00.c b/trunk/drivers/pcmcia/au1000_pb1x00.c index 86c0808d6a05..fd5522ede867 100644 --- a/trunk/drivers/pcmcia/au1000_pb1x00.c +++ b/trunk/drivers/pcmcia/au1000_pb1x00.c @@ -21,6 +21,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. */ +#include #include #include #include diff --git a/trunk/drivers/pcmcia/cs.c b/trunk/drivers/pcmcia/cs.c index f9cd831a3f31..3162998579c1 100644 --- a/trunk/drivers/pcmcia/cs.c +++ b/trunk/drivers/pcmcia/cs.c @@ -28,7 +28,6 @@ #include #include #include -#include #include #include @@ -177,7 +176,6 @@ static int pccardd(void *__skt); */ int pcmcia_register_socket(struct pcmcia_socket *socket) { - struct task_struct *tsk; int ret; if (!socket || !socket->ops || !socket->dev.dev || !socket->resource_ops) @@ -241,18 +239,15 @@ int pcmcia_register_socket(struct pcmcia_socket *socket) mutex_init(&socket->skt_mutex); spin_lock_init(&socket->thread_lock); - tsk = kthread_run(pccardd, socket, "pccardd"); - if (IS_ERR(tsk)) { - ret = PTR_ERR(tsk); + ret = kernel_thread(pccardd, socket, CLONE_KERNEL); + if (ret < 0) goto err; - } wait_for_completion(&socket->thread_done); - if (!socket->thread) { + if(!socket->thread) { printk(KERN_WARNING "PCMCIA: warning: socket thread for socket %p did not start\n", socket); return -EIO; } - pcmcia_parse_events(socket, SS_DETECT); return 0; @@ -277,8 +272,10 @@ void pcmcia_unregister_socket(struct pcmcia_socket *socket) cs_dbg(socket, 0, "pcmcia_unregister_socket(0x%p)\n", socket->ops); if (socket->thread) { + init_completion(&socket->thread_done); + socket->thread = NULL; wake_up(&socket->thread_wait); - kthread_stop(socket->thread); + wait_for_completion(&socket->thread_done); } release_cis_mem(socket); @@ -633,6 +630,8 @@ static int pccardd(void *__skt) DECLARE_WAITQUEUE(wait, current); int ret; + daemonize("pccardd"); + skt->thread = current; skt->socket = dead_socket; skt->ops->init(skt); @@ -644,8 +643,7 @@ static int pccardd(void *__skt) printk(KERN_WARNING "PCMCIA: unable to register socket 0x%p\n", skt); skt->thread = NULL; - complete(&skt->thread_done); - return 0; + complete_and_exit(&skt->thread_done, 0); } add_wait_queue(&skt->thread_wait, &wait); @@ -676,7 +674,7 @@ static int pccardd(void *__skt) continue; } - if (kthread_should_stop()) + if (!skt->thread) break; schedule(); @@ -690,7 +688,7 @@ static int pccardd(void *__skt) /* remove from the device core */ class_device_unregister(&skt->dev); - return 0; + complete_and_exit(&skt->thread_done, 0); } /* @@ -699,12 +697,11 @@ static int pccardd(void *__skt) */ void pcmcia_parse_events(struct pcmcia_socket *s, u_int events) { - unsigned long flags; cs_dbg(s, 4, "parse_events: events %08x\n", events); if (s->thread) { - spin_lock_irqsave(&s->thread_lock, flags); + spin_lock(&s->thread_lock); s->thread_events |= events; - spin_unlock_irqrestore(&s->thread_lock, flags); + spin_unlock(&s->thread_lock); wake_up(&s->thread_wait); } diff --git a/trunk/drivers/pcmcia/m32r_cfc.c b/trunk/drivers/pcmcia/m32r_cfc.c index 9e768eaef17a..071cf485e1a3 100644 --- a/trunk/drivers/pcmcia/m32r_cfc.c +++ b/trunk/drivers/pcmcia/m32r_cfc.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/pcmcia/m32r_pcc.c b/trunk/drivers/pcmcia/m32r_pcc.c index 61d50b5620dd..70d5f0748d55 100644 --- a/trunk/drivers/pcmcia/m32r_pcc.c +++ b/trunk/drivers/pcmcia/m32r_pcc.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/pcmcia/pcmcia_resource.c b/trunk/drivers/pcmcia/pcmcia_resource.c index 3281e519e714..3131bb0a0095 100644 --- a/trunk/drivers/pcmcia/pcmcia_resource.c +++ b/trunk/drivers/pcmcia/pcmcia_resource.c @@ -788,7 +788,6 @@ int pcmcia_request_irq(struct pcmcia_device *p_dev, irq_req_t *req) struct pcmcia_socket *s = p_dev->socket; config_t *c; int ret = CS_IN_USE, irq = 0; - int type; if (!(s->state & SOCKET_PRESENT)) return CS_NO_CARD; @@ -798,13 +797,6 @@ int pcmcia_request_irq(struct pcmcia_device *p_dev, irq_req_t *req) if (c->state & CONFIG_IRQ_REQ) return CS_IN_USE; - /* Decide what type of interrupt we are registering */ - type = 0; - if (s->functions > 1) /* All of this ought to be handled higher up */ - type = SA_SHIRQ; - if (req->Attributes & IRQ_TYPE_DYNAMIC_SHARING) - type = SA_SHIRQ; - #ifdef CONFIG_PCMCIA_PROBE if (s->irq.AssignedIRQ != 0) { /* If the interrupt is already assigned, it must be the same */ @@ -830,7 +822,9 @@ int pcmcia_request_irq(struct pcmcia_device *p_dev, irq_req_t *req) * marked as used by the kernel resource management core */ ret = request_irq(irq, (req->Attributes & IRQ_HANDLE_PRESENT) ? req->Handler : test_action, - type, + ((req->Attributes & IRQ_TYPE_DYNAMIC_SHARING) || + (s->functions > 1) || + (irq == s->pci_irq)) ? SA_SHIRQ : 0, p_dev->devname, (req->Attributes & IRQ_HANDLE_PRESENT) ? req->Instance : data); if (!ret) { @@ -845,21 +839,18 @@ int pcmcia_request_irq(struct pcmcia_device *p_dev, irq_req_t *req) if (ret && !s->irq.AssignedIRQ) { if (!s->pci_irq) return ret; - type = SA_SHIRQ; irq = s->pci_irq; } - if (ret && (req->Attributes & IRQ_HANDLE_PRESENT)) { - if (request_irq(irq, req->Handler, type, p_dev->devname, req->Instance)) + if (ret && req->Attributes & IRQ_HANDLE_PRESENT) { + if (request_irq(irq, req->Handler, + ((req->Attributes & IRQ_TYPE_DYNAMIC_SHARING) || + (s->functions > 1) || + (irq == s->pci_irq)) ? SA_SHIRQ : 0, + p_dev->devname, req->Instance)) return CS_IN_USE; } - /* Make sure the fact the request type was overridden is passed back */ - if (type == SA_SHIRQ && !(req->Attributes & IRQ_TYPE_DYNAMIC_SHARING)) { - req->Attributes |= IRQ_TYPE_DYNAMIC_SHARING; - printk(KERN_WARNING "pcmcia: request for exclusive IRQ could not be fulfilled.\n"); - printk(KERN_WARNING "pcmcia: the driver needs updating to supported shared IRQ lines.\n"); - } c->irq.Attributes = req->Attributes; s->irq.AssignedIRQ = req->AssignedIRQ = irq; s->irq.Config++; diff --git a/trunk/drivers/pcmcia/pxa2xx_base.c b/trunk/drivers/pcmcia/pxa2xx_base.c index b3518131ea0d..7fa18fb814bc 100644 --- a/trunk/drivers/pcmcia/pxa2xx_base.c +++ b/trunk/drivers/pcmcia/pxa2xx_base.c @@ -18,6 +18,7 @@ #include #include +#include #include #include #include diff --git a/trunk/drivers/pcmcia/sa1100_generic.c b/trunk/drivers/pcmcia/sa1100_generic.c index c5b2a44b4c37..6d441ec75c6a 100644 --- a/trunk/drivers/pcmcia/sa1100_generic.c +++ b/trunk/drivers/pcmcia/sa1100_generic.c @@ -32,6 +32,7 @@ #include #include +#include #include #include diff --git a/trunk/drivers/pcmcia/sa1111_generic.c b/trunk/drivers/pcmcia/sa1111_generic.c index 658cddfbcf29..81ded52c8959 100644 --- a/trunk/drivers/pcmcia/sa1111_generic.c +++ b/trunk/drivers/pcmcia/sa1111_generic.c @@ -5,6 +5,7 @@ * basically means we handle everything except controlling the * power. Power is machine specific... */ +#include #include #include #include diff --git a/trunk/drivers/pcmcia/sa11xx_base.c b/trunk/drivers/pcmcia/sa11xx_base.c index 31a7abc55b23..59c5d968e9f6 100644 --- a/trunk/drivers/pcmcia/sa11xx_base.c +++ b/trunk/drivers/pcmcia/sa11xx_base.c @@ -32,6 +32,7 @@ #include #include +#include #include #include #include diff --git a/trunk/drivers/pcmcia/soc_common.c b/trunk/drivers/pcmcia/soc_common.c index ecf65d4c4e95..ea7d9ca160b2 100644 --- a/trunk/drivers/pcmcia/soc_common.c +++ b/trunk/drivers/pcmcia/soc_common.c @@ -31,6 +31,7 @@ ======================================================================*/ +#include #include #include #include diff --git a/trunk/drivers/pcmcia/ti113x.h b/trunk/drivers/pcmcia/ti113x.h index 62e9ebf967f9..7a3d1b8e16b9 100644 --- a/trunk/drivers/pcmcia/ti113x.h +++ b/trunk/drivers/pcmcia/ti113x.h @@ -647,7 +647,6 @@ static int ti12xx_2nd_slot_empty(struct yenta_socket *socket) */ break; - case PCI_DEVICE_ID_TI_XX12: case PCI_DEVICE_ID_TI_X515: case PCI_DEVICE_ID_TI_X420: case PCI_DEVICE_ID_TI_X620: diff --git a/trunk/drivers/pcmcia/yenta_socket.c b/trunk/drivers/pcmcia/yenta_socket.c index 47e57602d5ea..4145eb83b9b6 100644 --- a/trunk/drivers/pcmcia/yenta_socket.c +++ b/trunk/drivers/pcmcia/yenta_socket.c @@ -287,10 +287,7 @@ static int yenta_set_socket(struct pcmcia_socket *sock, socket_state_t *state) struct yenta_socket *socket = container_of(sock, struct yenta_socket, socket); u16 bridge; - /* if powering down: do it immediately */ - if (state->Vcc == 0) - yenta_set_power(socket, state); - + yenta_set_power(socket, state); socket->io_irq = state->io_irq; bridge = config_readw(socket, CB_BRIDGE_CONTROL) & ~(CB_BRIDGE_CRST | CB_BRIDGE_INTR); if (cb_readl(socket, CB_SOCKET_STATE) & CB_CBCARD) { @@ -342,10 +339,6 @@ static int yenta_set_socket(struct pcmcia_socket *sock, socket_state_t *state) /* Socket event mask: get card insert/remove events.. */ cb_writel(socket, CB_SOCKET_EVENT, -1); cb_writel(socket, CB_SOCKET_MASK, CB_CDMASK); - - /* if powering up: do it as the last step when the socket is configured */ - if (state->Vcc != 0) - yenta_set_power(socket, state); return 0; } @@ -1005,77 +998,6 @@ static void yenta_config_init(struct yenta_socket *socket) config_writew(socket, CB_BRIDGE_CONTROL, bridge); } -/** - * yenta_fixup_parent_bridge - Fix subordinate bus# of the parent bridge - * @cardbus_bridge: The PCI bus which the CardBus bridge bridges to - * - * Checks if devices on the bus which the CardBus bridge bridges to would be - * invisible during PCI scans because of a misconfigured subordinate number - * of the parent brige - some BIOSes seem to be too lazy to set it right. - * Does the fixup carefully by checking how far it can go without conflicts. - * See http://bugzilla.kernel.org/show_bug.cgi?id=2944 for more information. - */ -static void yenta_fixup_parent_bridge(struct pci_bus *cardbus_bridge) -{ - struct list_head *tmp; - unsigned char upper_limit; - /* - * We only check and fix the parent bridge: All systems which need - * this fixup that have been reviewed are laptops and the only bridge - * which needed fixing was the parent bridge of the CardBus bridge: - */ - struct pci_bus *bridge_to_fix = cardbus_bridge->parent; - - /* Check bus numbers are already set up correctly: */ - if (bridge_to_fix->subordinate >= cardbus_bridge->subordinate) - return; /* The subordinate number is ok, nothing to do */ - - if (!bridge_to_fix->parent) - return; /* Root bridges are ok */ - - /* stay within the limits of the bus range of the parent: */ - upper_limit = bridge_to_fix->parent->subordinate; - - /* check the bus ranges of all silbling bridges to prevent overlap */ - list_for_each(tmp, &bridge_to_fix->parent->children) { - struct pci_bus * silbling = pci_bus_b(tmp); - /* - * If the silbling has a higher secondary bus number - * and it's secondary is equal or smaller than our - * current upper limit, set the new upper limit to - * the bus number below the silbling's range: - */ - if (silbling->secondary > bridge_to_fix->subordinate - && silbling->secondary <= upper_limit) - upper_limit = silbling->secondary - 1; - } - - /* Show that the wanted subordinate number is not possible: */ - if (cardbus_bridge->subordinate > upper_limit) - printk(KERN_WARNING "Yenta: Upper limit for fixing this " - "bridge's parent bridge: #%02x\n", upper_limit); - - /* If we have room to increase the bridge's subordinate number, */ - if (bridge_to_fix->subordinate < upper_limit) { - - /* use the highest number of the hidden bus, within limits */ - unsigned char subordinate_to_assign = - min(cardbus_bridge->subordinate, upper_limit); - - printk(KERN_INFO "Yenta: Raising subordinate bus# of parent " - "bus (#%02x) from #%02x to #%02x\n", - bridge_to_fix->number, - bridge_to_fix->subordinate, subordinate_to_assign); - - /* Save the new subordinate in the bus struct of the bridge */ - bridge_to_fix->subordinate = subordinate_to_assign; - - /* and update the PCI config space with the new subordinate */ - pci_write_config_byte(bridge_to_fix->self, - PCI_SUBORDINATE_BUS, bridge_to_fix->subordinate); - } -} - /* * Initialize a cardbus controller. Make sure we have a usable * interrupt, and that we can map the cardbus area. Fill in the @@ -1191,8 +1113,6 @@ static int __devinit yenta_probe (struct pci_dev *dev, const struct pci_device_i yenta_get_socket_capabilities(socket, isa_interrupts); printk(KERN_INFO "Socket status: %08x\n", cb_readl(socket, CB_SOCKET_STATE)); - yenta_fixup_parent_bridge(dev->subordinate); - /* Register it with the pcmcia layer.. */ ret = pcmcia_register_socket(&socket->socket); if (ret == 0) { @@ -1312,7 +1232,6 @@ static struct pci_device_id yenta_table [] = { CB_ID(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_XX21_XX11, TI12XX), CB_ID(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_X515, TI12XX), - CB_ID(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_XX12, TI12XX), CB_ID(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_X420, TI12XX), CB_ID(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_X620, TI12XX), CB_ID(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_7410, TI12XX), diff --git a/trunk/drivers/pnp/card.c b/trunk/drivers/pnp/card.c index 227600cd6360..0b4adcb60df4 100644 --- a/trunk/drivers/pnp/card.c +++ b/trunk/drivers/pnp/card.c @@ -5,6 +5,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/pnp/driver.c b/trunk/drivers/pnp/driver.c index e161423b4300..e54c15383193 100644 --- a/trunk/drivers/pnp/driver.c +++ b/trunk/drivers/pnp/driver.c @@ -5,6 +5,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/pnp/isapnp/compat.c b/trunk/drivers/pnp/isapnp/compat.c index 0697ab88a9ac..3ff7e76b33bd 100644 --- a/trunk/drivers/pnp/isapnp/compat.c +++ b/trunk/drivers/pnp/isapnp/compat.c @@ -8,6 +8,7 @@ /* TODO: see if more isapnp functions are needed here */ +#include #include #include #include diff --git a/trunk/drivers/pnp/isapnp/core.c b/trunk/drivers/pnp/isapnp/core.c index f2e0179962e2..ac7c2bb6c69e 100644 --- a/trunk/drivers/pnp/isapnp/core.c +++ b/trunk/drivers/pnp/isapnp/core.c @@ -34,6 +34,7 @@ * 2003-08-11 Resource Management Updates - Adam Belay */ +#include #include #include #include diff --git a/trunk/drivers/pnp/isapnp/proc.c b/trunk/drivers/pnp/isapnp/proc.c index 958c11bedd0d..cf54b0a3628e 100644 --- a/trunk/drivers/pnp/isapnp/proc.c +++ b/trunk/drivers/pnp/isapnp/proc.c @@ -19,6 +19,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/pnp/manager.c b/trunk/drivers/pnp/manager.c index 5026b345cb30..1d7a5b87f4cb 100644 --- a/trunk/drivers/pnp/manager.c +++ b/trunk/drivers/pnp/manager.c @@ -6,6 +6,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/pnp/pnpacpi/core.c b/trunk/drivers/pnp/pnpacpi/core.c index 6cf34a63c790..f104577f73e0 100644 --- a/trunk/drivers/pnp/pnpacpi/core.c +++ b/trunk/drivers/pnp/pnpacpi/core.c @@ -19,6 +19,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include #include #include diff --git a/trunk/drivers/pnp/pnpbios/rsparser.c b/trunk/drivers/pnp/pnpbios/rsparser.c index ef508a4de557..c89c98a2cca8 100644 --- a/trunk/drivers/pnp/pnpbios/rsparser.c +++ b/trunk/drivers/pnp/pnpbios/rsparser.c @@ -3,6 +3,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/pnp/quirks.c b/trunk/drivers/pnp/quirks.c index e97ecefe8584..8936b0cb2ec3 100644 --- a/trunk/drivers/pnp/quirks.c +++ b/trunk/drivers/pnp/quirks.c @@ -11,6 +11,7 @@ * Copyright (c) 1999 Martin Mares */ +#include #include #include #include diff --git a/trunk/drivers/pnp/resource.c b/trunk/drivers/pnp/resource.c index 9fefe563f8fc..7bb892f58cc0 100644 --- a/trunk/drivers/pnp/resource.c +++ b/trunk/drivers/pnp/resource.c @@ -6,6 +6,7 @@ * */ +#include #include #include #include @@ -395,8 +396,7 @@ int pnp_check_irq(struct pnp_dev * dev, int idx) /* check if the resource is already in use, skip if the * device is active because it itself may be in use */ if(!dev->active) { - if (request_irq(*irq, pnp_test_handler, - SA_INTERRUPT|SA_PROBEIRQ, "pnp", NULL)) + if (request_irq(*irq, pnp_test_handler, SA_INTERRUPT, "pnp", NULL)) return 0; free_irq(*irq, NULL); } diff --git a/trunk/drivers/pnp/support.c b/trunk/drivers/pnp/support.c index 946a0dcd627d..61fe998944bd 100644 --- a/trunk/drivers/pnp/support.c +++ b/trunk/drivers/pnp/support.c @@ -5,6 +5,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/rapidio/rio-scan.c b/trunk/drivers/rapidio/rio-scan.c index 7bf7b2c88245..94e30fe4b8f3 100644 --- a/trunk/drivers/rapidio/rio-scan.c +++ b/trunk/drivers/rapidio/rio-scan.c @@ -10,6 +10,7 @@ * option) any later version. */ +#include #include #include diff --git a/trunk/drivers/rapidio/rio-sysfs.c b/trunk/drivers/rapidio/rio-sysfs.c index 5687b8fcbf93..bef9316e95df 100644 --- a/trunk/drivers/rapidio/rio-sysfs.c +++ b/trunk/drivers/rapidio/rio-sysfs.c @@ -10,6 +10,7 @@ * option) any later version. */ +#include #include #include #include diff --git a/trunk/drivers/rapidio/rio.c b/trunk/drivers/rapidio/rio.c index f644807da2f9..5e382470faa2 100644 --- a/trunk/drivers/rapidio/rio.c +++ b/trunk/drivers/rapidio/rio.c @@ -11,6 +11,7 @@ * option) any later version. */ +#include #include #include diff --git a/trunk/drivers/rtc/Kconfig b/trunk/drivers/rtc/Kconfig index f5b9f187a930..f2fc81a9074d 100644 --- a/trunk/drivers/rtc/Kconfig +++ b/trunk/drivers/rtc/Kconfig @@ -15,7 +15,7 @@ config RTC_CLASS help Generic RTC class support. If you say yes here, you will be allowed to plug one or more RTCs to your system. You will - probably want to enable one or more of the interfaces below. + probably want to enable one of more of the interfaces below. This driver can also be built as a module. If so, the module will be called rtc-class. @@ -182,22 +182,6 @@ config RTC_DRV_RS5C372 This driver can also be built as a module. If so, the module will be called rtc-rs5c372. -config RTC_DRV_S3C - tristate "Samsung S3C series SoC RTC" - depends on RTC_CLASS && ARCH_S3C2410 - help - RTC (Realtime Clock) driver for the clock inbuilt into the - Samsung S3C24XX series of SoCs. This can provide periodic - interrupt rates from 1Hz to 64Hz for user programs, and - wakeup from Alarm. - - The driver currently supports the common features on all the - S3C24XX range, such as the S3C2410, S3C2412, S3C2413, S3C2440 - and S3C2442. - - This driver can also be build as a module. If so, the module - will be called rtc-s3c. - config RTC_DRV_M48T86 tristate "ST M48T86/Dallas DS12887" depends on RTC_CLASS diff --git a/trunk/drivers/rtc/Makefile b/trunk/drivers/rtc/Makefile index 54220714ff49..da5e38774e13 100644 --- a/trunk/drivers/rtc/Makefile +++ b/trunk/drivers/rtc/Makefile @@ -19,7 +19,6 @@ obj-$(CONFIG_RTC_DRV_DS1742) += rtc-ds1742.o obj-$(CONFIG_RTC_DRV_PCF8563) += rtc-pcf8563.o obj-$(CONFIG_RTC_DRV_PCF8583) += rtc-pcf8583.o obj-$(CONFIG_RTC_DRV_RS5C372) += rtc-rs5c372.o -obj-$(CONFIG_RTC_DRV_S3C) += rtc-s3c.o obj-$(CONFIG_RTC_DRV_RS5C348) += rtc-rs5c348.o obj-$(CONFIG_RTC_DRV_M48T86) += rtc-m48t86.o obj-$(CONFIG_RTC_DRV_DS1553) += rtc-ds1553.o diff --git a/trunk/drivers/rtc/rtc-s3c.c b/trunk/drivers/rtc/rtc-s3c.c deleted file mode 100644 index d6d1bff52b8e..000000000000 --- a/trunk/drivers/rtc/rtc-s3c.c +++ /dev/null @@ -1,607 +0,0 @@ -/* drivers/rtc/rtc-s3c.c - * - * Copyright (c) 2004,2006 Simtec Electronics - * Ben Dooks, - * http://armlinux.simtec.co.uk/ - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * S3C2410/S3C2440/S3C24XX Internal RTC Driver -*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include - -#include - -/* I have yet to find an S3C implementation with more than one - * of these rtc blocks in */ - -static struct resource *s3c_rtc_mem; - -static void __iomem *s3c_rtc_base; -static int s3c_rtc_alarmno = NO_IRQ; -static int s3c_rtc_tickno = NO_IRQ; -static int s3c_rtc_freq = 1; - -static DEFINE_SPINLOCK(s3c_rtc_pie_lock); -static unsigned int tick_count; - -/* IRQ Handlers */ - -static irqreturn_t s3c_rtc_alarmirq(int irq, void *id, struct pt_regs *r) -{ - struct rtc_device *rdev = id; - - rtc_update_irq(&rdev->class_dev, 1, RTC_AF | RTC_IRQF); - return IRQ_HANDLED; -} - -static irqreturn_t s3c_rtc_tickirq(int irq, void *id, struct pt_regs *r) -{ - struct rtc_device *rdev = id; - - rtc_update_irq(&rdev->class_dev, tick_count++, RTC_PF | RTC_IRQF); - return IRQ_HANDLED; -} - -/* Update control registers */ -static void s3c_rtc_setaie(int to) -{ - unsigned int tmp; - - pr_debug("%s: aie=%d\n", __FUNCTION__, to); - - tmp = readb(S3C2410_RTCALM) & ~S3C2410_RTCALM_ALMEN; - - if (to) - tmp |= S3C2410_RTCALM_ALMEN; - - writeb(tmp, S3C2410_RTCALM); -} - -static void s3c_rtc_setpie(int to) -{ - unsigned int tmp; - - pr_debug("%s: pie=%d\n", __FUNCTION__, to); - - spin_lock_irq(&s3c_rtc_pie_lock); - tmp = readb(S3C2410_TICNT) & ~S3C2410_TICNT_ENABLE; - - if (to) - tmp |= S3C2410_TICNT_ENABLE; - - writeb(tmp, S3C2410_TICNT); - spin_unlock_irq(&s3c_rtc_pie_lock); -} - -static void s3c_rtc_setfreq(int freq) -{ - unsigned int tmp; - - spin_lock_irq(&s3c_rtc_pie_lock); - tmp = readb(S3C2410_TICNT) & S3C2410_TICNT_ENABLE; - - s3c_rtc_freq = freq; - - tmp |= (128 / freq)-1; - - writeb(tmp, S3C2410_TICNT); - spin_unlock_irq(&s3c_rtc_pie_lock); -} - -/* Time read/write */ - -static int s3c_rtc_gettime(struct device *dev, struct rtc_time *rtc_tm) -{ - unsigned int have_retried = 0; - - retry_get_time: - rtc_tm->tm_min = readb(S3C2410_RTCMIN); - rtc_tm->tm_hour = readb(S3C2410_RTCHOUR); - rtc_tm->tm_mday = readb(S3C2410_RTCDATE); - rtc_tm->tm_mon = readb(S3C2410_RTCMON); - rtc_tm->tm_year = readb(S3C2410_RTCYEAR); - rtc_tm->tm_sec = readb(S3C2410_RTCSEC); - - /* the only way to work out wether the system was mid-update - * when we read it is to check the second counter, and if it - * is zero, then we re-try the entire read - */ - - if (rtc_tm->tm_sec == 0 && !have_retried) { - have_retried = 1; - goto retry_get_time; - } - - pr_debug("read time %02x.%02x.%02x %02x/%02x/%02x\n", - rtc_tm->tm_year, rtc_tm->tm_mon, rtc_tm->tm_mday, - rtc_tm->tm_hour, rtc_tm->tm_min, rtc_tm->tm_sec); - - BCD_TO_BIN(rtc_tm->tm_sec); - BCD_TO_BIN(rtc_tm->tm_min); - BCD_TO_BIN(rtc_tm->tm_hour); - BCD_TO_BIN(rtc_tm->tm_mday); - BCD_TO_BIN(rtc_tm->tm_mon); - BCD_TO_BIN(rtc_tm->tm_year); - - rtc_tm->tm_year += 100; - rtc_tm->tm_mon -= 1; - - return 0; -} - -static int s3c_rtc_settime(struct device *dev, struct rtc_time *tm) -{ - /* the rtc gets round the y2k problem by just not supporting it */ - - if (tm->tm_year < 100) - return -EINVAL; - - writeb(BIN2BCD(tm->tm_sec), S3C2410_RTCSEC); - writeb(BIN2BCD(tm->tm_min), S3C2410_RTCMIN); - writeb(BIN2BCD(tm->tm_hour), S3C2410_RTCHOUR); - writeb(BIN2BCD(tm->tm_mday), S3C2410_RTCDATE); - writeb(BIN2BCD(tm->tm_mon + 1), S3C2410_RTCMON); - writeb(BIN2BCD(tm->tm_year - 100), S3C2410_RTCYEAR); - - return 0; -} - -static int s3c_rtc_getalarm(struct device *dev, struct rtc_wkalrm *alrm) -{ - struct rtc_time *alm_tm = &alrm->time; - unsigned int alm_en; - - alm_tm->tm_sec = readb(S3C2410_ALMSEC); - alm_tm->tm_min = readb(S3C2410_ALMMIN); - alm_tm->tm_hour = readb(S3C2410_ALMHOUR); - alm_tm->tm_mon = readb(S3C2410_ALMMON); - alm_tm->tm_mday = readb(S3C2410_ALMDATE); - alm_tm->tm_year = readb(S3C2410_ALMYEAR); - - alm_en = readb(S3C2410_RTCALM); - - pr_debug("read alarm %02x %02x.%02x.%02x %02x/%02x/%02x\n", - alm_en, - alm_tm->tm_year, alm_tm->tm_mon, alm_tm->tm_mday, - alm_tm->tm_hour, alm_tm->tm_min, alm_tm->tm_sec); - - - /* decode the alarm enable field */ - - if (alm_en & S3C2410_RTCALM_SECEN) - BCD_TO_BIN(alm_tm->tm_sec); - else - alm_tm->tm_sec = 0xff; - - if (alm_en & S3C2410_RTCALM_MINEN) - BCD_TO_BIN(alm_tm->tm_min); - else - alm_tm->tm_min = 0xff; - - if (alm_en & S3C2410_RTCALM_HOUREN) - BCD_TO_BIN(alm_tm->tm_hour); - else - alm_tm->tm_hour = 0xff; - - if (alm_en & S3C2410_RTCALM_DAYEN) - BCD_TO_BIN(alm_tm->tm_mday); - else - alm_tm->tm_mday = 0xff; - - if (alm_en & S3C2410_RTCALM_MONEN) { - BCD_TO_BIN(alm_tm->tm_mon); - alm_tm->tm_mon -= 1; - } else { - alm_tm->tm_mon = 0xff; - } - - if (alm_en & S3C2410_RTCALM_YEAREN) - BCD_TO_BIN(alm_tm->tm_year); - else - alm_tm->tm_year = 0xffff; - - return 0; -} - -static int s3c_rtc_setalarm(struct device *dev, struct rtc_wkalrm *alrm) -{ - struct rtc_time *tm = &alrm->time; - unsigned int alrm_en; - - pr_debug("s3c_rtc_setalarm: %d, %02x/%02x/%02x %02x.%02x.%02x\n", - alrm->enabled, - tm->tm_mday & 0xff, tm->tm_mon & 0xff, tm->tm_year & 0xff, - tm->tm_hour & 0xff, tm->tm_min & 0xff, tm->tm_sec); - - - alrm_en = readb(S3C2410_RTCALM) & S3C2410_RTCALM_ALMEN; - writeb(0x00, S3C2410_RTCALM); - - if (tm->tm_sec < 60 && tm->tm_sec >= 0) { - alrm_en |= S3C2410_RTCALM_SECEN; - writeb(BIN2BCD(tm->tm_sec), S3C2410_ALMSEC); - } - - if (tm->tm_min < 60 && tm->tm_min >= 0) { - alrm_en |= S3C2410_RTCALM_MINEN; - writeb(BIN2BCD(tm->tm_min), S3C2410_ALMMIN); - } - - if (tm->tm_hour < 24 && tm->tm_hour >= 0) { - alrm_en |= S3C2410_RTCALM_HOUREN; - writeb(BIN2BCD(tm->tm_hour), S3C2410_ALMHOUR); - } - - pr_debug("setting S3C2410_RTCALM to %08x\n", alrm_en); - - writeb(alrm_en, S3C2410_RTCALM); - - if (0) { - alrm_en = readb(S3C2410_RTCALM); - alrm_en &= ~S3C2410_RTCALM_ALMEN; - writeb(alrm_en, S3C2410_RTCALM); - disable_irq_wake(s3c_rtc_alarmno); - } - - if (alrm->enabled) - enable_irq_wake(s3c_rtc_alarmno); - else - disable_irq_wake(s3c_rtc_alarmno); - - return 0; -} - -static int s3c_rtc_ioctl(struct device *dev, - unsigned int cmd, unsigned long arg) -{ - unsigned int ret = -ENOIOCTLCMD; - - switch (cmd) { - case RTC_AIE_OFF: - case RTC_AIE_ON: - s3c_rtc_setaie((cmd == RTC_AIE_ON) ? 1 : 0); - ret = 0; - break; - - case RTC_PIE_OFF: - case RTC_PIE_ON: - tick_count = 0; - s3c_rtc_setpie((cmd == RTC_PIE_ON) ? 1 : 0); - ret = 0; - break; - - case RTC_IRQP_READ: - ret = put_user(s3c_rtc_freq, (unsigned long __user *)arg); - break; - - case RTC_IRQP_SET: - /* check for power of 2 */ - - if ((arg & (arg-1)) != 0 || arg < 1) { - ret = -EINVAL; - goto exit; - } - - pr_debug("s3c2410_rtc: setting frequency %ld\n", arg); - - s3c_rtc_setfreq(arg); - ret = 0; - break; - - case RTC_UIE_ON: - case RTC_UIE_OFF: - ret = -EINVAL; - } - - exit: - return ret; -} - -static int s3c_rtc_proc(struct device *dev, struct seq_file *seq) -{ - unsigned int rtcalm = readb(S3C2410_RTCALM); - unsigned int ticnt = readb (S3C2410_TICNT); - - seq_printf(seq, "alarm_IRQ\t: %s\n", - (rtcalm & S3C2410_RTCALM_ALMEN) ? "yes" : "no" ); - - seq_printf(seq, "periodic_IRQ\t: %s\n", - (ticnt & S3C2410_TICNT_ENABLE) ? "yes" : "no" ); - - seq_printf(seq, "periodic_freq\t: %d\n", s3c_rtc_freq); - - return 0; -} - -static int s3c_rtc_open(struct device *dev) -{ - struct platform_device *pdev = to_platform_device(dev); - struct rtc_device *rtc_dev = platform_get_drvdata(pdev); - int ret; - - ret = request_irq(s3c_rtc_alarmno, s3c_rtc_alarmirq, - SA_INTERRUPT, "s3c2410-rtc alarm", rtc_dev); - - if (ret) { - dev_err(dev, "IRQ%d error %d\n", s3c_rtc_alarmno, ret); - return ret; - } - - ret = request_irq(s3c_rtc_tickno, s3c_rtc_tickirq, - SA_INTERRUPT, "s3c2410-rtc tick", rtc_dev); - - if (ret) { - dev_err(dev, "IRQ%d error %d\n", s3c_rtc_tickno, ret); - goto tick_err; - } - - return ret; - - tick_err: - free_irq(s3c_rtc_alarmno, rtc_dev); - return ret; -} - -static void s3c_rtc_release(struct device *dev) -{ - struct platform_device *pdev = to_platform_device(dev); - struct rtc_device *rtc_dev = platform_get_drvdata(pdev); - - /* do not clear AIE here, it may be needed for wake */ - - s3c_rtc_setpie(0); - free_irq(s3c_rtc_alarmno, rtc_dev); - free_irq(s3c_rtc_tickno, rtc_dev); -} - -static struct rtc_class_ops s3c_rtcops = { - .open = s3c_rtc_open, - .release = s3c_rtc_release, - .ioctl = s3c_rtc_ioctl, - .read_time = s3c_rtc_gettime, - .set_time = s3c_rtc_settime, - .read_alarm = s3c_rtc_getalarm, - .set_alarm = s3c_rtc_setalarm, - .proc = s3c_rtc_proc, -}; - -static void s3c_rtc_enable(struct platform_device *pdev, int en) -{ - unsigned int tmp; - - if (s3c_rtc_base == NULL) - return; - - if (!en) { - tmp = readb(S3C2410_RTCCON); - writeb(tmp & ~S3C2410_RTCCON_RTCEN, S3C2410_RTCCON); - - tmp = readb(S3C2410_TICNT); - writeb(tmp & ~S3C2410_TICNT_ENABLE, S3C2410_TICNT); - } else { - /* re-enable the device, and check it is ok */ - - if ((readb(S3C2410_RTCCON) & S3C2410_RTCCON_RTCEN) == 0){ - dev_info(&pdev->dev, "rtc disabled, re-enabling\n"); - - tmp = readb(S3C2410_RTCCON); - writeb(tmp | S3C2410_RTCCON_RTCEN , S3C2410_RTCCON); - } - - if ((readb(S3C2410_RTCCON) & S3C2410_RTCCON_CNTSEL)){ - dev_info(&pdev->dev, "removing RTCCON_CNTSEL\n"); - - tmp = readb(S3C2410_RTCCON); - writeb(tmp& ~S3C2410_RTCCON_CNTSEL , S3C2410_RTCCON); - } - - if ((readb(S3C2410_RTCCON) & S3C2410_RTCCON_CLKRST)){ - dev_info(&pdev->dev, "removing RTCCON_CLKRST\n"); - - tmp = readb(S3C2410_RTCCON); - writeb(tmp & ~S3C2410_RTCCON_CLKRST, S3C2410_RTCCON); - } - } -} - -static int s3c_rtc_remove(struct platform_device *dev) -{ - struct rtc_device *rtc = platform_get_drvdata(dev); - - platform_set_drvdata(dev, NULL); - rtc_device_unregister(rtc); - - s3c_rtc_setpie(0); - s3c_rtc_setaie(0); - - iounmap(s3c_rtc_base); - release_resource(s3c_rtc_mem); - kfree(s3c_rtc_mem); - - return 0; -} - -static int s3c_rtc_probe(struct platform_device *pdev) -{ - struct rtc_device *rtc; - struct resource *res; - int ret; - - pr_debug("%s: probe=%p\n", __FUNCTION__, pdev); - - /* find the IRQs */ - - s3c_rtc_tickno = platform_get_irq(pdev, 1); - if (s3c_rtc_tickno < 0) { - dev_err(&pdev->dev, "no irq for rtc tick\n"); - return -ENOENT; - } - - s3c_rtc_alarmno = platform_get_irq(pdev, 0); - if (s3c_rtc_alarmno < 0) { - dev_err(&pdev->dev, "no irq for alarm\n"); - return -ENOENT; - } - - pr_debug("s3c2410_rtc: tick irq %d, alarm irq %d\n", - s3c_rtc_tickno, s3c_rtc_alarmno); - - /* get the memory region */ - - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - if (res == NULL) { - dev_err(&pdev->dev, "failed to get memory region resource\n"); - return -ENOENT; - } - - s3c_rtc_mem = request_mem_region(res->start, - res->end-res->start+1, - pdev->name); - - if (s3c_rtc_mem == NULL) { - dev_err(&pdev->dev, "failed to reserve memory region\n"); - ret = -ENOENT; - goto err_nores; - } - - s3c_rtc_base = ioremap(res->start, res->end - res->start + 1); - if (s3c_rtc_base == NULL) { - dev_err(&pdev->dev, "failed ioremap()\n"); - ret = -EINVAL; - goto err_nomap; - } - - /* check to see if everything is setup correctly */ - - s3c_rtc_enable(pdev, 1); - - pr_debug("s3c2410_rtc: RTCCON=%02x\n", readb(S3C2410_RTCCON)); - - s3c_rtc_setfreq(s3c_rtc_freq); - - /* register RTC and exit */ - - rtc = rtc_device_register("s3c", &pdev->dev, &s3c_rtcops, - THIS_MODULE); - - if (IS_ERR(rtc)) { - dev_err(&pdev->dev, "cannot attach rtc\n"); - ret = PTR_ERR(rtc); - goto err_nortc; - } - - rtc->max_user_freq = 128; - - platform_set_drvdata(pdev, rtc); - return 0; - - err_nortc: - s3c_rtc_enable(pdev, 0); - iounmap(s3c_rtc_base); - - err_nomap: - release_resource(s3c_rtc_mem); - - err_nores: - return ret; -} - -#ifdef CONFIG_PM - -/* RTC Power management control */ - -static struct timespec s3c_rtc_delta; - -static int ticnt_save; - -static int s3c_rtc_suspend(struct platform_device *pdev, pm_message_t state) -{ - struct rtc_time tm; - struct timespec time; - - time.tv_nsec = 0; - - /* save TICNT for anyone using periodic interrupts */ - - ticnt_save = readb(S3C2410_TICNT); - - /* calculate time delta for suspend */ - - s3c_rtc_gettime(&pdev->dev, &tm); - rtc_tm_to_time(&tm, &time.tv_sec); - save_time_delta(&s3c_rtc_delta, &time); - s3c_rtc_enable(pdev, 0); - - return 0; -} - -static int s3c_rtc_resume(struct platform_device *pdev) -{ - struct rtc_time tm; - struct timespec time; - - time.tv_nsec = 0; - - s3c_rtc_enable(pdev, 1); - s3c_rtc_gettime(&pdev->dev, &tm); - rtc_tm_to_time(&tm, &time.tv_sec); - restore_time_delta(&s3c_rtc_delta, &time); - - writeb(ticnt_save, S3C2410_TICNT); - return 0; -} -#else -#define s3c_rtc_suspend NULL -#define s3c_rtc_resume NULL -#endif - -static struct platform_driver s3c2410_rtcdrv = { - .probe = s3c_rtc_probe, - .remove = s3c_rtc_remove, - .suspend = s3c_rtc_suspend, - .resume = s3c_rtc_resume, - .driver = { - .name = "s3c2410-rtc", - .owner = THIS_MODULE, - }, -}; - -static char __initdata banner[] = "S3C24XX RTC, (c) 2004,2006 Simtec Electronics\n"; - -static int __init s3c_rtc_init(void) -{ - printk(banner); - return platform_driver_register(&s3c2410_rtcdrv); -} - -static void __exit s3c_rtc_exit(void) -{ - platform_driver_unregister(&s3c2410_rtcdrv); -} - -module_init(s3c_rtc_init); -module_exit(s3c_rtc_exit); - -MODULE_DESCRIPTION("Samsung S3C RTC Driver"); -MODULE_AUTHOR("Ben Dooks "); -MODULE_LICENSE("GPL"); diff --git a/trunk/drivers/s390/block/dasd.c b/trunk/drivers/s390/block/dasd.c index 4bf03fb67f8d..2dc179b14ce6 100644 --- a/trunk/drivers/s390/block/dasd.c +++ b/trunk/drivers/s390/block/dasd.c @@ -9,6 +9,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/s390/block/dasd_devmap.c b/trunk/drivers/s390/block/dasd_devmap.c index d7295386821c..9e9ae7179602 100644 --- a/trunk/drivers/s390/block/dasd_devmap.c +++ b/trunk/drivers/s390/block/dasd_devmap.c @@ -13,6 +13,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/s390/block/dasd_diag.c b/trunk/drivers/s390/block/dasd_diag.c index 23fa0b289173..4002f6c1c1b3 100644 --- a/trunk/drivers/s390/block/dasd_diag.c +++ b/trunk/drivers/s390/block/dasd_diag.c @@ -8,6 +8,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/s390/block/dasd_eckd.c b/trunk/drivers/s390/block/dasd_eckd.c index 2e655f466743..0dfab30e8089 100644 --- a/trunk/drivers/s390/block/dasd_eckd.c +++ b/trunk/drivers/s390/block/dasd_eckd.c @@ -9,6 +9,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/s390/block/dasd_erp.c b/trunk/drivers/s390/block/dasd_erp.c index 58a65097922b..4108d96f6a5a 100644 --- a/trunk/drivers/s390/block/dasd_erp.c +++ b/trunk/drivers/s390/block/dasd_erp.c @@ -9,6 +9,7 @@ * */ +#include #include #include diff --git a/trunk/drivers/s390/block/dasd_fba.c b/trunk/drivers/s390/block/dasd_fba.c index 808434d38526..bb7755b9b19d 100644 --- a/trunk/drivers/s390/block/dasd_fba.c +++ b/trunk/drivers/s390/block/dasd_fba.c @@ -6,6 +6,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/s390/block/dasd_genhd.c b/trunk/drivers/s390/block/dasd_genhd.c index 12c7d296eaa8..61ffde718a7a 100644 --- a/trunk/drivers/s390/block/dasd_genhd.c +++ b/trunk/drivers/s390/block/dasd_genhd.c @@ -11,6 +11,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/s390/block/dasd_ioctl.c b/trunk/drivers/s390/block/dasd_ioctl.c index e97f5316ad2d..302bcd0f28be 100644 --- a/trunk/drivers/s390/block/dasd_ioctl.c +++ b/trunk/drivers/s390/block/dasd_ioctl.c @@ -9,6 +9,7 @@ * * i/o controls for the dasd driver. */ +#include #include #include #include diff --git a/trunk/drivers/s390/block/dasd_proc.c b/trunk/drivers/s390/block/dasd_proc.c index bfa010f6dab2..ad23aede356c 100644 --- a/trunk/drivers/s390/block/dasd_proc.c +++ b/trunk/drivers/s390/block/dasd_proc.c @@ -11,6 +11,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/s390/char/con3215.c b/trunk/drivers/s390/char/con3215.c index f25c6d116f6f..606f6ad285a0 100644 --- a/trunk/drivers/s390/char/con3215.c +++ b/trunk/drivers/s390/char/con3215.c @@ -11,6 +11,7 @@ * Dan Morrison, IBM Corporation (dmorriso@cse.buffalo.edu) */ +#include #include #include #include diff --git a/trunk/drivers/s390/char/con3270.c b/trunk/drivers/s390/char/con3270.c index 7566be890688..ef607a1de55a 100644 --- a/trunk/drivers/s390/char/con3270.c +++ b/trunk/drivers/s390/char/con3270.c @@ -8,6 +8,7 @@ * -- Copyright (C) 2003 IBM Deutschland Entwicklung GmbH, IBM Corporation */ +#include #include #include #include diff --git a/trunk/drivers/s390/char/ctrlchar.c b/trunk/drivers/s390/char/ctrlchar.c index 0ea6f36a2527..be463242cf0f 100644 --- a/trunk/drivers/s390/char/ctrlchar.c +++ b/trunk/drivers/s390/char/ctrlchar.c @@ -7,6 +7,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/s390/char/fs3270.c b/trunk/drivers/s390/char/fs3270.c index 6099c14de429..a6415377bc73 100644 --- a/trunk/drivers/s390/char/fs3270.c +++ b/trunk/drivers/s390/char/fs3270.c @@ -8,6 +8,7 @@ * -- Copyright (C) 2003 IBM Deutschland Entwicklung GmbH, IBM Corporation */ +#include #include #include #include diff --git a/trunk/drivers/s390/char/keyboard.c b/trunk/drivers/s390/char/keyboard.c index 547ef906ae2c..d4d2ff0a9da2 100644 --- a/trunk/drivers/s390/char/keyboard.c +++ b/trunk/drivers/s390/char/keyboard.c @@ -7,6 +7,7 @@ * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com), */ +#include #include #include #include diff --git a/trunk/drivers/s390/char/raw3270.c b/trunk/drivers/s390/char/raw3270.c index e95b56f810db..3c1314b7391b 100644 --- a/trunk/drivers/s390/char/raw3270.c +++ b/trunk/drivers/s390/char/raw3270.c @@ -8,6 +8,7 @@ * -- Copyright (C) 2003 IBM Deutschland Entwicklung GmbH, IBM Corporation */ +#include #include #include #include diff --git a/trunk/drivers/s390/char/sclp_con.c b/trunk/drivers/s390/char/sclp_con.c index 86864f641716..10ef22f13541 100644 --- a/trunk/drivers/s390/char/sclp_con.c +++ b/trunk/drivers/s390/char/sclp_con.c @@ -8,6 +8,7 @@ * Martin Schwidefsky */ +#include #include #include #include diff --git a/trunk/drivers/s390/char/sclp_cpi.c b/trunk/drivers/s390/char/sclp_cpi.c index 732dfbdb85c4..80f7f31310e6 100644 --- a/trunk/drivers/s390/char/sclp_cpi.c +++ b/trunk/drivers/s390/char/sclp_cpi.c @@ -5,6 +5,7 @@ * SCLP Control-Program Identification. */ +#include #include #include #include diff --git a/trunk/drivers/s390/char/sclp_quiesce.c b/trunk/drivers/s390/char/sclp_quiesce.c index 32004aae95c1..a4c53c172db6 100644 --- a/trunk/drivers/s390/char/sclp_quiesce.c +++ b/trunk/drivers/s390/char/sclp_quiesce.c @@ -7,6 +7,7 @@ * Peter Oberparleiter */ +#include #include #include #include diff --git a/trunk/drivers/s390/char/sclp_rw.c b/trunk/drivers/s390/char/sclp_rw.c index 0c92d3909cca..91e93c78f57a 100644 --- a/trunk/drivers/s390/char/sclp_rw.c +++ b/trunk/drivers/s390/char/sclp_rw.c @@ -8,6 +8,7 @@ * Martin Schwidefsky */ +#include #include #include #include diff --git a/trunk/drivers/s390/char/sclp_tty.c b/trunk/drivers/s390/char/sclp_tty.c index f6cf9023039e..6cbf067f1a8f 100644 --- a/trunk/drivers/s390/char/sclp_tty.c +++ b/trunk/drivers/s390/char/sclp_tty.c @@ -8,6 +8,7 @@ * Martin Schwidefsky */ +#include #include #include #include diff --git a/trunk/drivers/s390/char/sclp_vt220.c b/trunk/drivers/s390/char/sclp_vt220.c index 54fba6f17188..9e02625c82cf 100644 --- a/trunk/drivers/s390/char/sclp_vt220.c +++ b/trunk/drivers/s390/char/sclp_vt220.c @@ -7,6 +7,7 @@ * Author(s): Peter Oberparleiter */ +#include #include #include #include diff --git a/trunk/drivers/s390/char/tape.h b/trunk/drivers/s390/char/tape.h index 1f4c89967be4..cd51ace8b610 100644 --- a/trunk/drivers/s390/char/tape.h +++ b/trunk/drivers/s390/char/tape.h @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/s390/char/tape_34xx.c b/trunk/drivers/s390/char/tape_34xx.c index 48b4d30a7256..d4f2da738078 100644 --- a/trunk/drivers/s390/char/tape_34xx.c +++ b/trunk/drivers/s390/char/tape_34xx.c @@ -8,6 +8,7 @@ * Martin Schwidefsky */ +#include #include #include #include diff --git a/trunk/drivers/s390/char/tape_3590.c b/trunk/drivers/s390/char/tape_3590.c index 928cbefc49d5..d71ef1adea59 100644 --- a/trunk/drivers/s390/char/tape_3590.c +++ b/trunk/drivers/s390/char/tape_3590.c @@ -8,6 +8,7 @@ * Martin Schwidefsky */ +#include #include #include #include diff --git a/trunk/drivers/s390/char/tape_block.c b/trunk/drivers/s390/char/tape_block.c index 3225fcd1dcb4..b70d92690242 100644 --- a/trunk/drivers/s390/char/tape_block.c +++ b/trunk/drivers/s390/char/tape_block.c @@ -11,6 +11,7 @@ */ #include +#include #include #include #include diff --git a/trunk/drivers/s390/char/tape_char.c b/trunk/drivers/s390/char/tape_char.c index 97f75237bed6..5ce7ca38ace0 100644 --- a/trunk/drivers/s390/char/tape_char.c +++ b/trunk/drivers/s390/char/tape_char.c @@ -10,6 +10,7 @@ * Martin Schwidefsky */ +#include #include #include #include diff --git a/trunk/drivers/s390/char/tape_core.c b/trunk/drivers/s390/char/tape_core.c index 122b4d8965c3..e6e4086d3224 100644 --- a/trunk/drivers/s390/char/tape_core.c +++ b/trunk/drivers/s390/char/tape_core.c @@ -11,6 +11,7 @@ * Stefan Bader */ +#include #include #include // for kernel parameters #include // for requesting modules diff --git a/trunk/drivers/s390/char/tape_proc.c b/trunk/drivers/s390/char/tape_proc.c index 655d375ab22b..5fec0a10cc3d 100644 --- a/trunk/drivers/s390/char/tape_proc.c +++ b/trunk/drivers/s390/char/tape_proc.c @@ -11,6 +11,7 @@ * PROCFS Functions */ +#include #include #include #include diff --git a/trunk/drivers/s390/char/tape_std.c b/trunk/drivers/s390/char/tape_std.c index 7a76ec413a3a..99cf881f41db 100644 --- a/trunk/drivers/s390/char/tape_std.c +++ b/trunk/drivers/s390/char/tape_std.c @@ -11,6 +11,7 @@ * Stefan Bader */ +#include #include #include #include diff --git a/trunk/drivers/s390/char/tty3270.c b/trunk/drivers/s390/char/tty3270.c index f496f236b9c0..7d26a3e4cb80 100644 --- a/trunk/drivers/s390/char/tty3270.c +++ b/trunk/drivers/s390/char/tty3270.c @@ -8,6 +8,7 @@ * -- Copyright (C) 2003 IBM Deutschland Entwicklung GmbH, IBM Corporation */ +#include #include #include #include diff --git a/trunk/drivers/s390/cio/blacklist.c b/trunk/drivers/s390/cio/blacklist.c index 12c2d6b746e6..15b895496a45 100644 --- a/trunk/drivers/s390/cio/blacklist.c +++ b/trunk/drivers/s390/cio/blacklist.c @@ -9,6 +9,7 @@ * Arnd Bergmann (arndb@de.ibm.com) */ +#include #include #include #include diff --git a/trunk/drivers/s390/cio/chsc.c b/trunk/drivers/s390/cio/chsc.c index a01f3bba4a7b..b00f3ed051a0 100644 --- a/trunk/drivers/s390/cio/chsc.c +++ b/trunk/drivers/s390/cio/chsc.c @@ -10,6 +10,7 @@ */ #include +#include #include #include #include diff --git a/trunk/drivers/s390/cio/cio.c b/trunk/drivers/s390/cio/cio.c index a3423267467f..5b20d8c9c025 100644 --- a/trunk/drivers/s390/cio/cio.c +++ b/trunk/drivers/s390/cio/cio.c @@ -11,6 +11,7 @@ */ #include +#include #include #include #include diff --git a/trunk/drivers/s390/cio/device.c b/trunk/drivers/s390/cio/device.c index 67f0de6aed33..eafde43e8410 100644 --- a/trunk/drivers/s390/cio/device.c +++ b/trunk/drivers/s390/cio/device.c @@ -8,6 +8,7 @@ * Cornelia Huck (cornelia.huck@de.ibm.com) * Martin Schwidefsky (schwidefsky@de.ibm.com) */ +#include #include #include #include diff --git a/trunk/drivers/s390/cio/device_fsm.c b/trunk/drivers/s390/cio/device_fsm.c index cb1af0b6f033..7d0dd72635eb 100644 --- a/trunk/drivers/s390/cio/device_fsm.c +++ b/trunk/drivers/s390/cio/device_fsm.c @@ -9,6 +9,7 @@ */ #include +#include #include #include #include diff --git a/trunk/drivers/s390/cio/device_id.c b/trunk/drivers/s390/cio/device_id.c index 438db483035d..e60b2d8103b8 100644 --- a/trunk/drivers/s390/cio/device_id.c +++ b/trunk/drivers/s390/cio/device_id.c @@ -10,6 +10,7 @@ */ #include +#include #include #include diff --git a/trunk/drivers/s390/cio/device_ops.c b/trunk/drivers/s390/cio/device_ops.c index a60124264bee..b266ad8e14ff 100644 --- a/trunk/drivers/s390/cio/device_ops.c +++ b/trunk/drivers/s390/cio/device_ops.c @@ -6,6 +6,7 @@ * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com) * Cornelia Huck (cornelia.huck@de.ibm.com) */ +#include #include #include #include diff --git a/trunk/drivers/s390/cio/device_pgid.c b/trunk/drivers/s390/cio/device_pgid.c index 54cb64ed0786..85b1020a1fcc 100644 --- a/trunk/drivers/s390/cio/device_pgid.c +++ b/trunk/drivers/s390/cio/device_pgid.c @@ -9,6 +9,7 @@ * Path Group ID functions. */ +#include #include #include diff --git a/trunk/drivers/s390/cio/device_status.c b/trunk/drivers/s390/cio/device_status.c index 14bef2c179bf..6c762b43f921 100644 --- a/trunk/drivers/s390/cio/device_status.c +++ b/trunk/drivers/s390/cio/device_status.c @@ -9,6 +9,7 @@ * Status accumulation and basic sense functions. */ +#include #include #include diff --git a/trunk/drivers/s390/cio/qdio.c b/trunk/drivers/s390/cio/qdio.c index b70039af70d6..96f519281d92 100644 --- a/trunk/drivers/s390/cio/qdio.c +++ b/trunk/drivers/s390/cio/qdio.c @@ -30,6 +30,7 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include diff --git a/trunk/drivers/s390/net/fsm.c b/trunk/drivers/s390/net/fsm.c index 2c1db8036b7c..7145e2134cf0 100644 --- a/trunk/drivers/s390/net/fsm.c +++ b/trunk/drivers/s390/net/fsm.c @@ -4,6 +4,7 @@ */ #include "fsm.h" +#include #include #include diff --git a/trunk/drivers/s390/net/iucv.c b/trunk/drivers/s390/net/iucv.c index 189a49275433..e0c7deb98831 100644 --- a/trunk/drivers/s390/net/iucv.c +++ b/trunk/drivers/s390/net/iucv.c @@ -33,6 +33,7 @@ #include #include +#include #include #include diff --git a/trunk/drivers/s390/net/qeth_eddp.c b/trunk/drivers/s390/net/qeth_eddp.c index 8491598f9149..38aad8321456 100644 --- a/trunk/drivers/s390/net/qeth_eddp.c +++ b/trunk/drivers/s390/net/qeth_eddp.c @@ -8,6 +8,7 @@ * Author(s): Thomas Spatzier * */ +#include #include #include #include diff --git a/trunk/drivers/s390/net/qeth_main.c b/trunk/drivers/s390/net/qeth_main.c index 36733b9823c6..56009d768326 100644 --- a/trunk/drivers/s390/net/qeth_main.c +++ b/trunk/drivers/s390/net/qeth_main.c @@ -27,6 +27,7 @@ */ +#include #include #include #include diff --git a/trunk/drivers/s390/s390mach.c b/trunk/drivers/s390/s390mach.c index 432136f96e64..8dc75002acbe 100644 --- a/trunk/drivers/s390/s390mach.c +++ b/trunk/drivers/s390/s390mach.c @@ -8,6 +8,7 @@ * Martin Schwidefsky (schwidefsky@de.ibm.com) */ +#include #include #include #include diff --git a/trunk/drivers/s390/sysinfo.c b/trunk/drivers/s390/sysinfo.c index d1c1e75bfd60..66da840c9316 100644 --- a/trunk/drivers/s390/sysinfo.c +++ b/trunk/drivers/s390/sysinfo.c @@ -5,6 +5,7 @@ * Author(s): Ulrich Weigand (Ulrich.Weigand@de.ibm.com) */ +#include #include #include #include diff --git a/trunk/drivers/sbus/char/envctrl.c b/trunk/drivers/sbus/char/envctrl.c index 063e676a3ac0..cf97e9efe9b6 100644 --- a/trunk/drivers/sbus/char/envctrl.c +++ b/trunk/drivers/sbus/char/envctrl.c @@ -22,6 +22,7 @@ #define __KERNEL_SYSCALLS__ static int errno; +#include #include #include #include diff --git a/trunk/drivers/sbus/char/flash.c b/trunk/drivers/sbus/char/flash.c index fa2418f7ad39..31b8a5f6116f 100644 --- a/trunk/drivers/sbus/char/flash.c +++ b/trunk/drivers/sbus/char/flash.c @@ -4,6 +4,7 @@ * Copyright (C) 1997 Eddie C. Dost (ecd@skynet.be) */ +#include #include #include #include diff --git a/trunk/drivers/sbus/char/openprom.c b/trunk/drivers/sbus/char/openprom.c index 293bb2fdb1d5..d7e4bb41bd79 100644 --- a/trunk/drivers/sbus/char/openprom.c +++ b/trunk/drivers/sbus/char/openprom.c @@ -29,6 +29,7 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/drivers/sbus/dvma.c b/trunk/drivers/sbus/dvma.c index 57e1526746a2..378a1d68024d 100644 --- a/trunk/drivers/sbus/dvma.c +++ b/trunk/drivers/sbus/dvma.c @@ -3,6 +3,7 @@ * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) */ +#include #include #include #include diff --git a/trunk/drivers/sbus/sbus.c b/trunk/drivers/sbus/sbus.c index 16b59773c0bb..387a6aa8c020 100644 --- a/trunk/drivers/sbus/sbus.c +++ b/trunk/drivers/sbus/sbus.c @@ -5,6 +5,7 @@ #include #include +#include #include #include diff --git a/trunk/drivers/scsi/53c700.c b/trunk/drivers/scsi/53c700.c index eb7a6a4ded75..3c683dc23541 100644 --- a/trunk/drivers/scsi/53c700.c +++ b/trunk/drivers/scsi/53c700.c @@ -114,6 +114,7 @@ * */ #define NCR_700_VERSION "2.8" +#include #include #include #include diff --git a/trunk/drivers/scsi/53c7xx.c b/trunk/drivers/scsi/53c7xx.c index c9bd0335995d..765769a629e4 100644 --- a/trunk/drivers/scsi/53c7xx.c +++ b/trunk/drivers/scsi/53c7xx.c @@ -232,6 +232,7 @@ #include +#include #include #include diff --git a/trunk/drivers/scsi/BusLogic.c b/trunk/drivers/scsi/BusLogic.c index 259b47ec4f54..bde3d5834ade 100644 --- a/trunk/drivers/scsi/BusLogic.c +++ b/trunk/drivers/scsi/BusLogic.c @@ -29,6 +29,7 @@ #define BusLogic_DriverVersion "2.1.16" #define BusLogic_DriverDate "18 July 2002" +#include #include #include #include diff --git a/trunk/drivers/scsi/BusLogic.h b/trunk/drivers/scsi/BusLogic.h index 9792e5af5252..1aaa6569edac 100644 --- a/trunk/drivers/scsi/BusLogic.h +++ b/trunk/drivers/scsi/BusLogic.h @@ -28,6 +28,7 @@ #ifndef _BUSLOGIC_H #define _BUSLOGIC_H +#include #ifndef PACKED #define PACKED __attribute__((packed)) diff --git a/trunk/drivers/scsi/FlashPoint.c b/trunk/drivers/scsi/FlashPoint.c index 7c0068049586..8e3d949b7118 100644 --- a/trunk/drivers/scsi/FlashPoint.c +++ b/trunk/drivers/scsi/FlashPoint.c @@ -15,6 +15,7 @@ */ +#include #ifndef CONFIG_SCSI_OMIT_FLASHPOINT diff --git a/trunk/drivers/scsi/NCR53C9x.c b/trunk/drivers/scsi/NCR53C9x.c index 8a4659e94105..c7dd0154d012 100644 --- a/trunk/drivers/scsi/NCR53C9x.c +++ b/trunk/drivers/scsi/NCR53C9x.c @@ -23,6 +23,7 @@ #include +#include #include #include #include diff --git a/trunk/drivers/scsi/NCR53C9x.h b/trunk/drivers/scsi/NCR53C9x.h index 481653c977cf..65a9b377a410 100644 --- a/trunk/drivers/scsi/NCR53C9x.h +++ b/trunk/drivers/scsi/NCR53C9x.h @@ -13,6 +13,7 @@ #ifndef NCR53C9X_H #define NCR53C9X_H +#include #include /* djweis for mac driver */ diff --git a/trunk/drivers/scsi/advansys.c b/trunk/drivers/scsi/advansys.c index 537136457ea0..dd9fb3d91000 100644 --- a/trunk/drivers/scsi/advansys.c +++ b/trunk/drivers/scsi/advansys.c @@ -754,6 +754,7 @@ * --- Linux Include Files */ +#include #include #if defined(CONFIG_X86) && !defined(CONFIG_ISA) diff --git a/trunk/drivers/scsi/aha1542.c b/trunk/drivers/scsi/aha1542.c index 24f0f5461792..86c6bd234591 100644 --- a/trunk/drivers/scsi/aha1542.c +++ b/trunk/drivers/scsi/aha1542.c @@ -25,6 +25,7 @@ * Added proper detection of the AHA-1640 (MCA version of AHA-1540) */ +#include #include #include #include diff --git a/trunk/drivers/scsi/aic7xxx/aic79xx_osm.h b/trunk/drivers/scsi/aic7xxx/aic79xx_osm.h index 92c6154575e7..2b8331649eeb 100644 --- a/trunk/drivers/scsi/aic7xxx/aic79xx_osm.h +++ b/trunk/drivers/scsi/aic7xxx/aic79xx_osm.h @@ -42,6 +42,7 @@ #ifndef _AIC79XX_LINUX_H_ #define _AIC79XX_LINUX_H_ +#include #include #include #include diff --git a/trunk/drivers/scsi/aic7xxx/aic7xxx_osm.h b/trunk/drivers/scsi/aic7xxx/aic7xxx_osm.h index d42a71ee076d..a20b08c9ff15 100644 --- a/trunk/drivers/scsi/aic7xxx/aic7xxx_osm.h +++ b/trunk/drivers/scsi/aic7xxx/aic7xxx_osm.h @@ -59,6 +59,7 @@ #ifndef _AIC7XXX_LINUX_H_ #define _AIC7XXX_LINUX_H_ +#include #include #include #include diff --git a/trunk/drivers/scsi/aic7xxx_old/aic7xxx_proc.c b/trunk/drivers/scsi/aic7xxx_old/aic7xxx_proc.c index b07e4f04fd00..3bf334931a8a 100644 --- a/trunk/drivers/scsi/aic7xxx_old/aic7xxx_proc.c +++ b/trunk/drivers/scsi/aic7xxx_old/aic7xxx_proc.c @@ -29,6 +29,7 @@ * $Id: aic7xxx_proc.c,v 4.1 1997/06/97 08:23:42 deang Exp $ *-M*************************************************************************/ +#include #define BLS (&aic7xxx_buffer[size]) #define HDRB \ diff --git a/trunk/drivers/scsi/amiga7xx.c b/trunk/drivers/scsi/amiga7xx.c index 9099d531d5a4..c0844fa32c5d 100644 --- a/trunk/drivers/scsi/amiga7xx.c +++ b/trunk/drivers/scsi/amiga7xx.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include diff --git a/trunk/drivers/scsi/arm/acornscsi.c b/trunk/drivers/scsi/arm/acornscsi.c index 1b9900b58956..dda5a5f79c53 100644 --- a/trunk/drivers/scsi/arm/acornscsi.c +++ b/trunk/drivers/scsi/arm/acornscsi.c @@ -129,6 +129,7 @@ #define STRx(x) STRINGIFY(x) #define NO_WRITE_STR STRx(NO_WRITE) +#include #include #include #include diff --git a/trunk/drivers/scsi/atari_NCR5380.c b/trunk/drivers/scsi/atari_NCR5380.c index 007a14e5c3fd..57295bcea3e7 100644 --- a/trunk/drivers/scsi/atari_NCR5380.c +++ b/trunk/drivers/scsi/atari_NCR5380.c @@ -524,6 +524,7 @@ static __inline__ void initialize_SCp(Scsi_Cmnd *cmd) } } +#include #include #if NDEBUG diff --git a/trunk/drivers/scsi/atari_scsi.c b/trunk/drivers/scsi/atari_scsi.c index e1be4a4387cd..f677c5a32a68 100644 --- a/trunk/drivers/scsi/atari_scsi.c +++ b/trunk/drivers/scsi/atari_scsi.c @@ -65,6 +65,7 @@ +#include #include #define NDEBUG (0) diff --git a/trunk/drivers/scsi/ch.c b/trunk/drivers/scsi/ch.c index f6caa4307768..d9abd1645d15 100644 --- a/trunk/drivers/scsi/ch.c +++ b/trunk/drivers/scsi/ch.c @@ -7,6 +7,7 @@ #define VERSION "0.25" +#include #include #include #include diff --git a/trunk/drivers/scsi/constants.c b/trunk/drivers/scsi/constants.c index dddd2acce76f..d92d5040a9fe 100644 --- a/trunk/drivers/scsi/constants.c +++ b/trunk/drivers/scsi/constants.c @@ -7,6 +7,7 @@ * Additions for SPC-3 T10/1416-D Rev 21 22 Sept 2004, D. Gilbert 20041025 */ +#include #include #include #include diff --git a/trunk/drivers/scsi/dpt/dpti_i2o.h b/trunk/drivers/scsi/dpt/dpti_i2o.h index d84a281ad944..a9585f5235d9 100644 --- a/trunk/drivers/scsi/dpt/dpti_i2o.h +++ b/trunk/drivers/scsi/dpt/dpti_i2o.h @@ -23,6 +23,7 @@ #include /* Needed for MUTEX init macros */ #include +#include #include #include diff --git a/trunk/drivers/scsi/eata.c b/trunk/drivers/scsi/eata.c index 67c419402d8a..059eeee4b554 100644 --- a/trunk/drivers/scsi/eata.c +++ b/trunk/drivers/scsi/eata.c @@ -477,6 +477,7 @@ * the driver sets host->wish_block = 1 for all ISA boards. */ +#include #include #include #include diff --git a/trunk/drivers/scsi/eata_pio.c b/trunk/drivers/scsi/eata_pio.c index d8c9ec21e0ef..23beb48c79c5 100644 --- a/trunk/drivers/scsi/eata_pio.c +++ b/trunk/drivers/scsi/eata_pio.c @@ -46,6 +46,7 @@ * last change: 2002/11/02 OS: Linux 2.5.45 * ************************************************************/ +#include #include #include #include diff --git a/trunk/drivers/scsi/esp.c b/trunk/drivers/scsi/esp.c index 36c50b61f94d..ddb512463b45 100644 --- a/trunk/drivers/scsi/esp.c +++ b/trunk/drivers/scsi/esp.c @@ -12,6 +12,7 @@ * 3) Add tagged queueing. */ +#include #include #include #include diff --git a/trunk/drivers/scsi/fcal.c b/trunk/drivers/scsi/fcal.c index 7f891023aa15..03416548f20c 100644 --- a/trunk/drivers/scsi/fcal.c +++ b/trunk/drivers/scsi/fcal.c @@ -13,6 +13,7 @@ #include #include #include +#include #ifdef CONFIG_KMOD #include #endif diff --git a/trunk/drivers/scsi/fdomain.c b/trunk/drivers/scsi/fdomain.c index 03356887202d..e16013f0ad6e 100644 --- a/trunk/drivers/scsi/fdomain.c +++ b/trunk/drivers/scsi/fdomain.c @@ -266,6 +266,7 @@ **************************************************************************/ +#include #include #include #include diff --git a/trunk/drivers/scsi/g_NCR5380.c b/trunk/drivers/scsi/g_NCR5380.c index fbc8e16c8d15..5f313c93b7a9 100644 --- a/trunk/drivers/scsi/g_NCR5380.c +++ b/trunk/drivers/scsi/g_NCR5380.c @@ -91,6 +91,7 @@ #define AUTOPROBE_IRQ #define AUTOSENSE +#include #ifdef CONFIG_SCSI_GENERIC_NCR53C400 #define NCR53C400_PSEUDO_DMA 1 diff --git a/trunk/drivers/scsi/g_NCR5380.h b/trunk/drivers/scsi/g_NCR5380.h index df0b3f69ef63..d60a89cb8052 100644 --- a/trunk/drivers/scsi/g_NCR5380.h +++ b/trunk/drivers/scsi/g_NCR5380.h @@ -32,6 +32,7 @@ #ifndef GENERIC_NCR5380_H #define GENERIC_NCR5380_H +#include #define GENERIC_NCR5380_PUBLIC_RELEASE 1 diff --git a/trunk/drivers/scsi/ibmmca.c b/trunk/drivers/scsi/ibmmca.c index 1cbc94842cc6..497f6642b2dc 100644 --- a/trunk/drivers/scsi/ibmmca.c +++ b/trunk/drivers/scsi/ibmmca.c @@ -17,6 +17,7 @@ */ +#include #include #include #include diff --git a/trunk/drivers/scsi/ide-scsi.c b/trunk/drivers/scsi/ide-scsi.c index f7b5d7372d26..988e6f7af01a 100644 --- a/trunk/drivers/scsi/ide-scsi.c +++ b/trunk/drivers/scsi/ide-scsi.c @@ -34,6 +34,7 @@ #define IDESCSI_VERSION "0.92" #include +#include #include #include #include diff --git a/trunk/drivers/scsi/imm.c b/trunk/drivers/scsi/imm.c index 2d95ac9c32c1..681bd18493f3 100644 --- a/trunk/drivers/scsi/imm.c +++ b/trunk/drivers/scsi/imm.c @@ -8,6 +8,7 @@ * future expansion to five letters. */ +#include #include #include #include diff --git a/trunk/drivers/scsi/initio.c b/trunk/drivers/scsi/initio.c index 43acb1fe90b4..913ba95f85bd 100644 --- a/trunk/drivers/scsi/initio.c +++ b/trunk/drivers/scsi/initio.c @@ -118,6 +118,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/scsi/initio.h b/trunk/drivers/scsi/initio.h index acb67a4af2cc..3efb1184fc39 100644 --- a/trunk/drivers/scsi/initio.h +++ b/trunk/drivers/scsi/initio.h @@ -54,6 +54,7 @@ **************************************************************************/ +#include #include #define ULONG unsigned long @@ -192,13 +193,13 @@ typedef struct { #define TSC_SEL_ATN_DIRECT_OUT 0x15 /* Select With ATN Sequence */ #define TSC_SEL_ATN3_DIRECT_IN 0xB5 /* Select With ATN3 Sequence */ #define TSC_SEL_ATN3_DIRECT_OUT 0x35 /* Select With ATN3 Sequence */ -#define TSC_XF_DMA_OUT_DIRECT 0x06 /* DMA Xfer Information out */ -#define TSC_XF_DMA_IN_DIRECT 0x86 /* DMA Xfer Information in */ +#define TSC_XF_DMA_OUT_DIRECT 0x06 /* DMA Xfer Infomation out */ +#define TSC_XF_DMA_IN_DIRECT 0x86 /* DMA Xfer Infomation in */ -#define TSC_XF_DMA_OUT 0x43 /* DMA Xfer Information out */ -#define TSC_XF_DMA_IN 0xC3 /* DMA Xfer Information in */ -#define TSC_XF_FIFO_OUT 0x03 /* FIFO Xfer Information out */ -#define TSC_XF_FIFO_IN 0x83 /* FIFO Xfer Information in */ +#define TSC_XF_DMA_OUT 0x43 /* DMA Xfer Infomation out */ +#define TSC_XF_DMA_IN 0xC3 /* DMA Xfer Infomation in */ +#define TSC_XF_FIFO_OUT 0x03 /* FIFO Xfer Infomation out */ +#define TSC_XF_FIFO_IN 0x83 /* FIFO Xfer Infomation in */ #define TSC_MSG_ACCEPT 0x0F /* Message Accept */ diff --git a/trunk/drivers/scsi/ipr.c b/trunk/drivers/scsi/ipr.c index e19bf690cdf1..96b65b307dd0 100644 --- a/trunk/drivers/scsi/ipr.c +++ b/trunk/drivers/scsi/ipr.c @@ -54,6 +54,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/scsi/ips.c b/trunk/drivers/scsi/ips.c index 7436793c3ad3..78f2ff736c3e 100644 --- a/trunk/drivers/scsi/ips.c +++ b/trunk/drivers/scsi/ips.c @@ -196,6 +196,7 @@ #include #include +#include #include #include diff --git a/trunk/drivers/scsi/libata-bmdma.c b/trunk/drivers/scsi/libata-bmdma.c index 38bfebf4fe8f..004e1a0d8b71 100644 --- a/trunk/drivers/scsi/libata-bmdma.c +++ b/trunk/drivers/scsi/libata-bmdma.c @@ -32,6 +32,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/scsi/libata-core.c b/trunk/drivers/scsi/libata-core.c index 82caba464291..d1c1c30d123f 100644 --- a/trunk/drivers/scsi/libata-core.c +++ b/trunk/drivers/scsi/libata-core.c @@ -32,6 +32,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/scsi/mesh.c b/trunk/drivers/scsi/mesh.c index c88717727be8..f852421002ef 100644 --- a/trunk/drivers/scsi/mesh.c +++ b/trunk/drivers/scsi/mesh.c @@ -18,6 +18,7 @@ * - retry arbitration if lost (unless higher levels do this for us) * - power down the chip when no device is detected */ +#include #include #include #include diff --git a/trunk/drivers/scsi/ncr53c8xx.h b/trunk/drivers/scsi/ncr53c8xx.h index 78818b6684f8..0e4e46a01336 100644 --- a/trunk/drivers/scsi/ncr53c8xx.h +++ b/trunk/drivers/scsi/ncr53c8xx.h @@ -53,8 +53,10 @@ #ifndef NCR53C8XX_H #define NCR53C8XX_H +#include #include +#include /* ** If you want a driver as small as possible, donnot define the diff --git a/trunk/drivers/scsi/oktagon_esp.c b/trunk/drivers/scsi/oktagon_esp.c index d7a0bcc6c670..dee426f8c07b 100644 --- a/trunk/drivers/scsi/oktagon_esp.c +++ b/trunk/drivers/scsi/oktagon_esp.c @@ -6,6 +6,7 @@ * Based on cyber_esp.c */ +#include #if defined(CONFIG_AMIGA) || defined(CONFIG_APUS) #define USE_BOTTOM_HALF diff --git a/trunk/drivers/scsi/oktagon_io.S b/trunk/drivers/scsi/oktagon_io.S index 8a7340b02707..08ce8d80d8f5 100644 --- a/trunk/drivers/scsi/oktagon_io.S +++ b/trunk/drivers/scsi/oktagon_io.S @@ -23,6 +23,7 @@ int oktag_from_io(long *addr,long *paddr,long len) * is moved to/from the IO register. */ +#include #ifdef CONFIG_APUS diff --git a/trunk/drivers/scsi/osst.h b/trunk/drivers/scsi/osst.h index 1e426f5d0ed8..011d4d6ca9f9 100644 --- a/trunk/drivers/scsi/osst.h +++ b/trunk/drivers/scsi/osst.h @@ -3,6 +3,7 @@ */ #include +#include #include /* FIXME - rename and use the following two types or delete them! diff --git a/trunk/drivers/scsi/pluto.c b/trunk/drivers/scsi/pluto.c index 7abf64d1bfc9..83a671799934 100644 --- a/trunk/drivers/scsi/pluto.c +++ b/trunk/drivers/scsi/pluto.c @@ -13,6 +13,7 @@ #include #include #include +#include #ifdef CONFIG_KMOD #include #endif diff --git a/trunk/drivers/scsi/ppa.c b/trunk/drivers/scsi/ppa.c index b0eba39f208a..d58ac5ad509d 100644 --- a/trunk/drivers/scsi/ppa.c +++ b/trunk/drivers/scsi/ppa.c @@ -8,6 +8,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/scsi/qla1280.c b/trunk/drivers/scsi/qla1280.c index a7e4183462b8..680f6063954b 100644 --- a/trunk/drivers/scsi/qla1280.c +++ b/trunk/drivers/scsi/qla1280.c @@ -331,6 +331,7 @@ *****************************************************************************/ +#include #include #include diff --git a/trunk/drivers/scsi/qla2xxx/qla_def.h b/trunk/drivers/scsi/qla2xxx/qla_def.h index 6734453ea28a..d6f6579cfd27 100644 --- a/trunk/drivers/scsi/qla2xxx/qla_def.h +++ b/trunk/drivers/scsi/qla2xxx/qla_def.h @@ -2134,7 +2134,7 @@ typedef struct scsi_qla_host { mempool_t *srb_mempool; /* This spinlock is used to protect "io transactions", you must - * acquire it before doing any IO to the card, eg with RD_REG*() and + * aquire it before doing any IO to the card, eg with RD_REG*() and * WRT_REG*() for the duration of your entire commandtransaction. * * This spinlock is of lower priority than the io request lock. diff --git a/trunk/drivers/scsi/sata_nv.c b/trunk/drivers/scsi/sata_nv.c index 56da25581f31..5cc42c6054eb 100644 --- a/trunk/drivers/scsi/sata_nv.c +++ b/trunk/drivers/scsi/sata_nv.c @@ -31,6 +31,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/scsi/sata_sis.c b/trunk/drivers/scsi/sata_sis.c index ee6b5df41d30..809d337ed641 100644 --- a/trunk/drivers/scsi/sata_sis.c +++ b/trunk/drivers/scsi/sata_sis.c @@ -30,6 +30,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/scsi/sata_svw.c b/trunk/drivers/scsi/sata_svw.c index a958b45e597c..7566c2cabaf7 100644 --- a/trunk/drivers/scsi/sata_svw.c +++ b/trunk/drivers/scsi/sata_svw.c @@ -36,6 +36,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/scsi/sata_uli.c b/trunk/drivers/scsi/sata_uli.c index 33cdb4867ef1..64f3c1aeed21 100644 --- a/trunk/drivers/scsi/sata_uli.c +++ b/trunk/drivers/scsi/sata_uli.c @@ -24,6 +24,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/scsi/scsi_debug.c b/trunk/drivers/scsi/scsi_debug.c index e1168860045c..5a5d2af8ee43 100644 --- a/trunk/drivers/scsi/scsi_debug.c +++ b/trunk/drivers/scsi/scsi_debug.c @@ -24,6 +24,7 @@ * module options to "modprobe scsi_debug num_tgts=2" [20021221] */ +#include #include #include diff --git a/trunk/drivers/scsi/scsi_logging.h b/trunk/drivers/scsi/scsi_logging.h index 1f65139e14f8..a3e2af6a846c 100644 --- a/trunk/drivers/scsi/scsi_logging.h +++ b/trunk/drivers/scsi/scsi_logging.h @@ -1,6 +1,7 @@ #ifndef _SCSI_LOGGING_H #define _SCSI_LOGGING_H +#include /* * This defines the scsi logging feature. It is a means by which the user diff --git a/trunk/drivers/scsi/scsi_priv.h b/trunk/drivers/scsi/scsi_priv.h index 015c90cf3abc..a1727a0e1bdd 100644 --- a/trunk/drivers/scsi/scsi_priv.h +++ b/trunk/drivers/scsi/scsi_priv.h @@ -1,6 +1,7 @@ #ifndef _SCSI_PRIV_H #define _SCSI_PRIV_H +#include #include struct request_queue; diff --git a/trunk/drivers/scsi/scsi_scan.c b/trunk/drivers/scsi/scsi_scan.c index 1341608e9e3b..0f7e6f94d66b 100644 --- a/trunk/drivers/scsi/scsi_scan.c +++ b/trunk/drivers/scsi/scsi_scan.c @@ -25,6 +25,7 @@ * or a LUN is seen that cannot have a device attached to it. */ +#include #include #include #include diff --git a/trunk/drivers/scsi/scsi_sysfs.c b/trunk/drivers/scsi/scsi_sysfs.c index e7fe565b96de..5ec7a4fb0145 100644 --- a/trunk/drivers/scsi/scsi_sysfs.c +++ b/trunk/drivers/scsi/scsi_sysfs.c @@ -6,6 +6,7 @@ * Created to pull SCSI mid layer sysfs routines into one file. */ +#include #include #include #include diff --git a/trunk/drivers/scsi/scsi_transport_spi.c b/trunk/drivers/scsi/scsi_transport_spi.c index 29a9a53cdd1a..ace49d5bd9c4 100644 --- a/trunk/drivers/scsi/scsi_transport_spi.c +++ b/trunk/drivers/scsi/scsi_transport_spi.c @@ -18,6 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include #include #include diff --git a/trunk/drivers/scsi/sd.c b/trunk/drivers/scsi/sd.c index ea38757d12e5..354199011246 100644 --- a/trunk/drivers/scsi/sd.c +++ b/trunk/drivers/scsi/sd.c @@ -32,6 +32,7 @@ * than the level indicated above to trigger output. */ +#include #include #include #include diff --git a/trunk/drivers/scsi/sg.c b/trunk/drivers/scsi/sg.c index 4e607d3065bc..98b9312ba8da 100644 --- a/trunk/drivers/scsi/sg.c +++ b/trunk/drivers/scsi/sg.c @@ -28,6 +28,7 @@ static int sg_version_num = 30533; /* 2 digits for each component */ * (otherwise the macros compile to empty statements). * */ +#include #include #include diff --git a/trunk/drivers/scsi/sim710.c b/trunk/drivers/scsi/sim710.c index 2b2789345c13..255886a9ac55 100644 --- a/trunk/drivers/scsi/sim710.c +++ b/trunk/drivers/scsi/sim710.c @@ -26,6 +26,7 @@ * */ +#include #include #include diff --git a/trunk/drivers/scsi/sr_vendor.c b/trunk/drivers/scsi/sr_vendor.c index a3e9d0f2eb5b..9dde8df2f5c9 100644 --- a/trunk/drivers/scsi/sr_vendor.c +++ b/trunk/drivers/scsi/sr_vendor.c @@ -34,6 +34,7 @@ * HP 6020 writers now supported. */ +#include #include #include #include diff --git a/trunk/drivers/scsi/sun3_NCR5380.c b/trunk/drivers/scsi/sun3_NCR5380.c index 2ebe0d663899..25cced91c8a6 100644 --- a/trunk/drivers/scsi/sun3_NCR5380.c +++ b/trunk/drivers/scsi/sun3_NCR5380.c @@ -535,6 +535,7 @@ static __inline__ void initialize_SCp(Scsi_Cmnd *cmd) } +#include #include #if 1 diff --git a/trunk/drivers/scsi/sym53c8xx_2/sym53c8xx.h b/trunk/drivers/scsi/sym53c8xx_2/sym53c8xx.h index 7519728dfc38..481103769729 100644 --- a/trunk/drivers/scsi/sym53c8xx_2/sym53c8xx.h +++ b/trunk/drivers/scsi/sym53c8xx_2/sym53c8xx.h @@ -40,6 +40,7 @@ #ifndef SYM53C8XX_H #define SYM53C8XX_H +#include /* * DMA addressing mode. diff --git a/trunk/drivers/scsi/sym53c8xx_2/sym_glue.h b/trunk/drivers/scsi/sym53c8xx_2/sym_glue.h index e022d3c71b59..a446cda3f64c 100644 --- a/trunk/drivers/scsi/sym53c8xx_2/sym_glue.h +++ b/trunk/drivers/scsi/sym53c8xx_2/sym_glue.h @@ -40,6 +40,7 @@ #ifndef SYM_GLUE_H #define SYM_GLUE_H +#include #include #include #include diff --git a/trunk/drivers/scsi/tmscsim.c b/trunk/drivers/scsi/tmscsim.c index 7540f6a7529f..91322aff241d 100644 --- a/trunk/drivers/scsi/tmscsim.c +++ b/trunk/drivers/scsi/tmscsim.c @@ -218,6 +218,7 @@ #endif #define DCBDEBUG1(x) C_NOP +#include #include #include #include diff --git a/trunk/drivers/scsi/tmscsim.h b/trunk/drivers/scsi/tmscsim.h index 9b66fa8d38d9..d4495272fb40 100644 --- a/trunk/drivers/scsi/tmscsim.h +++ b/trunk/drivers/scsi/tmscsim.h @@ -9,6 +9,7 @@ #define _TMSCSIM_H #include +#include #define SCSI_IRQ_NONE 255 diff --git a/trunk/drivers/scsi/u14-34f.c b/trunk/drivers/scsi/u14-34f.c index 35c043e38ed4..33cd90fc657b 100644 --- a/trunk/drivers/scsi/u14-34f.c +++ b/trunk/drivers/scsi/u14-34f.c @@ -405,6 +405,7 @@ * the driver sets host->wish_block = TRUE for all ISA boards. */ +#include #include #include #include diff --git a/trunk/drivers/scsi/wd33c93.c b/trunk/drivers/scsi/wd33c93.c index 680f38ab60d8..27307fe5a4c8 100644 --- a/trunk/drivers/scsi/wd33c93.c +++ b/trunk/drivers/scsi/wd33c93.c @@ -71,6 +71,7 @@ * Richard Hirst August 2000 */ +#include #include #include diff --git a/trunk/drivers/scsi/wd33c93.h b/trunk/drivers/scsi/wd33c93.h index edcb0365cf0c..193ec517d252 100644 --- a/trunk/drivers/scsi/wd33c93.h +++ b/trunk/drivers/scsi/wd33c93.h @@ -22,6 +22,7 @@ #ifndef WD33C93_H #define WD33C93_H +#include #define PROC_INTERFACE /* add code for /proc/scsi/wd33c93/xxx interface */ #ifdef PROC_INTERFACE diff --git a/trunk/drivers/serial/21285.c b/trunk/drivers/serial/21285.c index 57438326b07f..9fd0de4b7afd 100644 --- a/trunk/drivers/serial/21285.c +++ b/trunk/drivers/serial/21285.c @@ -7,6 +7,7 @@ * * $Id: 21285.c,v 1.37 2002/07/28 10:03:27 rmk Exp $ */ +#include #include #include #include diff --git a/trunk/drivers/serial/68328serial.c b/trunk/drivers/serial/68328serial.c index 993a702422ec..bff94541991c 100644 --- a/trunk/drivers/serial/68328serial.c +++ b/trunk/drivers/serial/68328serial.c @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/serial/68328serial.h b/trunk/drivers/serial/68328serial.h index 58aa2154655b..978f8a609f3d 100644 --- a/trunk/drivers/serial/68328serial.h +++ b/trunk/drivers/serial/68328serial.h @@ -11,6 +11,7 @@ #ifndef _MC683XX_SERIAL_H #define _MC683XX_SERIAL_H +#include struct serial_struct { int type; diff --git a/trunk/drivers/serial/68360serial.c b/trunk/drivers/serial/68360serial.c index e80e70e9b126..9843ae3d420e 100644 --- a/trunk/drivers/serial/68360serial.c +++ b/trunk/drivers/serial/68360serial.c @@ -20,6 +20,7 @@ * int rs_360_init(void); */ +#include #include #include #include diff --git a/trunk/drivers/serial/8250.c b/trunk/drivers/serial/8250.c index 9c5d36f50140..f361b356bd1d 100644 --- a/trunk/drivers/serial/8250.c +++ b/trunk/drivers/serial/8250.c @@ -19,6 +19,7 @@ * mapbase is the physical address of the IO port. * membase is an 'ioremapped' cookie. */ +#include #if defined(CONFIG_SERIAL_8250_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) #define SUPPORT_SYSRQ diff --git a/trunk/drivers/serial/8250.h b/trunk/drivers/serial/8250.h index 91bd28f2bb47..490606b87095 100644 --- a/trunk/drivers/serial/8250.h +++ b/trunk/drivers/serial/8250.h @@ -15,6 +15,7 @@ * $Id: 8250.h,v 1.8 2002/07/21 21:32:30 rmk Exp $ */ +#include #include struct old_serial_port { diff --git a/trunk/drivers/serial/8250_mca.c b/trunk/drivers/serial/8250_mca.c index d10be944ad44..ac205256d5f3 100644 --- a/trunk/drivers/serial/8250_mca.c +++ b/trunk/drivers/serial/8250_mca.c @@ -8,6 +8,7 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/drivers/serial/amba-pl010.c b/trunk/drivers/serial/amba-pl010.c index 7311d8487c96..e920d196d0b1 100644 --- a/trunk/drivers/serial/amba-pl010.c +++ b/trunk/drivers/serial/amba-pl010.c @@ -31,6 +31,7 @@ * required, these have to be supplied via some other means (eg, GPIO) * and hooked into this driver. */ +#include #if defined(CONFIG_SERIAL_AMBA_PL010_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) #define SUPPORT_SYSRQ diff --git a/trunk/drivers/serial/amba-pl011.c b/trunk/drivers/serial/amba-pl011.c index a8d7124e84a1..3d966cfc9a38 100644 --- a/trunk/drivers/serial/amba-pl011.c +++ b/trunk/drivers/serial/amba-pl011.c @@ -31,6 +31,7 @@ * required, these have to be supplied via some other means (eg, GPIO) * and hooked into this driver. */ +#include #if defined(CONFIG_SERIAL_AMBA_PL011_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) #define SUPPORT_SYSRQ diff --git a/trunk/drivers/serial/at91_serial.c b/trunk/drivers/serial/at91_serial.c index 7b3b3f3d5101..df9500bdaded 100644 --- a/trunk/drivers/serial/at91_serial.c +++ b/trunk/drivers/serial/at91_serial.c @@ -22,6 +22,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */ +#include #include #include #include diff --git a/trunk/drivers/serial/clps711x.c b/trunk/drivers/serial/clps711x.c index f27d852ce50d..2691112c84ad 100644 --- a/trunk/drivers/serial/clps711x.c +++ b/trunk/drivers/serial/clps711x.c @@ -25,6 +25,7 @@ * $Id: clps711x.c,v 1.42 2002/07/28 10:03:28 rmk Exp $ * */ +#include #if defined(CONFIG_SERIAL_CLPS711X_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) #define SUPPORT_SYSRQ diff --git a/trunk/drivers/serial/cpm_uart/cpm_uart_core.c b/trunk/drivers/serial/cpm_uart/cpm_uart_core.c index 90ff96e3339b..5cba59ad7dc5 100644 --- a/trunk/drivers/serial/cpm_uart/cpm_uart_core.c +++ b/trunk/drivers/serial/cpm_uart/cpm_uart_core.c @@ -31,6 +31,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/serial/cpm_uart/cpm_uart_cpm1.c b/trunk/drivers/serial/cpm_uart/cpm_uart_cpm1.c index 95afc37297a8..17406a05ce1f 100644 --- a/trunk/drivers/serial/cpm_uart/cpm_uart_cpm1.c +++ b/trunk/drivers/serial/cpm_uart/cpm_uart_cpm1.c @@ -27,6 +27,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/serial/cpm_uart/cpm_uart_cpm2.c b/trunk/drivers/serial/cpm_uart/cpm_uart_cpm2.c index ef3bb476c432..cdba128250a9 100644 --- a/trunk/drivers/serial/cpm_uart/cpm_uart_cpm2.c +++ b/trunk/drivers/serial/cpm_uart/cpm_uart_cpm2.c @@ -27,6 +27,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/serial/crisv10.c b/trunk/drivers/serial/crisv10.c index 901be3483455..b84137cdeb2b 100644 --- a/trunk/drivers/serial/crisv10.c +++ b/trunk/drivers/serial/crisv10.c @@ -425,6 +425,7 @@ static char *serial_version = "$Revision: 1.25 $"; +#include #include #include #include diff --git a/trunk/drivers/serial/crisv10.h b/trunk/drivers/serial/crisv10.h index f30b93d6ef79..1800c0e7531a 100644 --- a/trunk/drivers/serial/crisv10.h +++ b/trunk/drivers/serial/crisv10.h @@ -7,6 +7,7 @@ #ifndef _ETRAX_SERIAL_H #define _ETRAX_SERIAL_H +#include #include #include diff --git a/trunk/drivers/serial/dz.c b/trunk/drivers/serial/dz.c index ecf824bd2d4e..466d06cc7d37 100644 --- a/trunk/drivers/serial/dz.c +++ b/trunk/drivers/serial/dz.c @@ -26,6 +26,7 @@ #undef DEBUG_DZ +#include #include #include #include diff --git a/trunk/drivers/serial/icom.c b/trunk/drivers/serial/icom.c index ad1e753cbc53..144a7a352b28 100644 --- a/trunk/drivers/serial/icom.c +++ b/trunk/drivers/serial/icom.c @@ -24,6 +24,7 @@ */ #define SERIAL_DO_RESTART #include +#include #include #include #include diff --git a/trunk/drivers/serial/imx.c b/trunk/drivers/serial/imx.c index 0b5f39d038b9..da85bafa0942 100644 --- a/trunk/drivers/serial/imx.c +++ b/trunk/drivers/serial/imx.c @@ -25,6 +25,7 @@ * [29-Mar-2005] Mike Lee * Added hardware handshake */ +#include #if defined(CONFIG_SERIAL_IMX_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) #define SUPPORT_SYSRQ diff --git a/trunk/drivers/serial/ip22zilog.c b/trunk/drivers/serial/ip22zilog.c index 342042889f6e..56b093ecd779 100644 --- a/trunk/drivers/serial/ip22zilog.c +++ b/trunk/drivers/serial/ip22zilog.c @@ -12,6 +12,7 @@ * Copyright (C) 2002 Ralf Baechle (ralf@linux-mips.org) * Copyright (C) 2002 David S. Miller (davem@redhat.com) */ +#include #include #include #include diff --git a/trunk/drivers/serial/m32r_sio.c b/trunk/drivers/serial/m32r_sio.c index fbaae96f4c93..6a2a25d9b596 100644 --- a/trunk/drivers/serial/m32r_sio.c +++ b/trunk/drivers/serial/m32r_sio.c @@ -25,6 +25,7 @@ * membase is an 'ioremapped' cookie. This is compatible with the old * serial.c driver, and is currently the preferred form. */ +#include #if defined(CONFIG_SERIAL_M32R_SIO_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) #define SUPPORT_SYSRQ diff --git a/trunk/drivers/serial/m32r_sio.h b/trunk/drivers/serial/m32r_sio.h index 849f1b2c2531..7c3ec24f7e50 100644 --- a/trunk/drivers/serial/m32r_sio.h +++ b/trunk/drivers/serial/m32r_sio.h @@ -15,6 +15,7 @@ * (at your option) any later version. */ +#include struct m32r_sio_probe { struct module *owner; diff --git a/trunk/drivers/serial/m32r_sio_reg.h b/trunk/drivers/serial/m32r_sio_reg.h index 4671473793e3..9c864529451b 100644 --- a/trunk/drivers/serial/m32r_sio_reg.h +++ b/trunk/drivers/serial/m32r_sio_reg.h @@ -15,6 +15,7 @@ #ifndef _M32R_SIO_REG_H #define _M32R_SIO_REG_H +#include #ifdef CONFIG_SERIAL_M32R_PLDSIO diff --git a/trunk/drivers/serial/mcfserial.h b/trunk/drivers/serial/mcfserial.h index 56420e2cb110..a2b28e8629f9 100644 --- a/trunk/drivers/serial/mcfserial.h +++ b/trunk/drivers/serial/mcfserial.h @@ -14,6 +14,7 @@ #ifndef _MCF_SERIAL_H #define _MCF_SERIAL_H +#include #include #ifdef __KERNEL__ diff --git a/trunk/drivers/serial/mpc52xx_uart.c b/trunk/drivers/serial/mpc52xx_uart.c index 1b8e554f674f..1aa34844218c 100644 --- a/trunk/drivers/serial/mpc52xx_uart.c +++ b/trunk/drivers/serial/mpc52xx_uart.c @@ -44,6 +44,7 @@ * will be mapped to. */ +#include #include #include #include diff --git a/trunk/drivers/serial/mpsc.c b/trunk/drivers/serial/mpsc.c index 8c498f785e21..1cd102f84bfa 100644 --- a/trunk/drivers/serial/mpsc.c +++ b/trunk/drivers/serial/mpsc.c @@ -50,6 +50,7 @@ * 4) AFAICT, hardware flow control isn't supported by the controller --MAG. */ +#include #if defined(CONFIG_SERIAL_MPSC_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) #define SUPPORT_SYSRQ diff --git a/trunk/drivers/serial/mux.c b/trunk/drivers/serial/mux.c index 4a1c9983f38f..64c0e89124c9 100644 --- a/trunk/drivers/serial/mux.c +++ b/trunk/drivers/serial/mux.c @@ -16,6 +16,7 @@ ** */ +#include #include #include #include diff --git a/trunk/drivers/serial/pmac_zilog.c b/trunk/drivers/serial/pmac_zilog.c index 4d9435451f4a..e3ba7e17a240 100644 --- a/trunk/drivers/serial/pmac_zilog.c +++ b/trunk/drivers/serial/pmac_zilog.c @@ -42,6 +42,7 @@ #undef DEBUG_HARD #undef USE_CTRL_O_SYSRQ +#include #include #include diff --git a/trunk/drivers/serial/pxa.c b/trunk/drivers/serial/pxa.c index a720953a404e..0fa0ccc9ed27 100644 --- a/trunk/drivers/serial/pxa.c +++ b/trunk/drivers/serial/pxa.c @@ -24,6 +24,7 @@ * with the serial core maintainer satisfaction to appear soon. */ +#include #if defined(CONFIG_SERIAL_PXA_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) #define SUPPORT_SYSRQ @@ -389,7 +390,7 @@ static int serial_pxa_startup(struct uart_port *port) /* * Finally, enable interrupts. Note: Modem status interrupts - * are set via set_termios(), which will be occurring imminently + * are set via set_termios(), which will be occuring imminently * anyway, so we don't enable them here. */ up->ier = UART_IER_RLSI | UART_IER_RDI | UART_IER_RTOIE | UART_IER_UUE; diff --git a/trunk/drivers/serial/s3c2410.c b/trunk/drivers/serial/s3c2410.c index 392bffcf96e8..4c62ab949ecc 100644 --- a/trunk/drivers/serial/s3c2410.c +++ b/trunk/drivers/serial/s3c2410.c @@ -55,6 +55,7 @@ * BJD, 04-Nov-2004 */ +#include #if defined(CONFIG_SERIAL_S3C2410_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) #define SUPPORT_SYSRQ diff --git a/trunk/drivers/serial/sa1100.c b/trunk/drivers/serial/sa1100.c index db3486d33870..8bbd8567669c 100644 --- a/trunk/drivers/serial/sa1100.c +++ b/trunk/drivers/serial/sa1100.c @@ -24,6 +24,7 @@ * $Id: sa1100.c,v 1.50 2002/07/29 14:41:04 rmk Exp $ * */ +#include #if defined(CONFIG_SERIAL_SA1100_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) #define SUPPORT_SYSRQ diff --git a/trunk/drivers/serial/serial_core.c b/trunk/drivers/serial/serial_core.c index c54af8774393..7dc1e67b6851 100644 --- a/trunk/drivers/serial/serial_core.c +++ b/trunk/drivers/serial/serial_core.c @@ -22,6 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include #include #include diff --git a/trunk/drivers/serial/serial_cs.c b/trunk/drivers/serial/serial_cs.c index cbf260bc225d..2c70773543e0 100644 --- a/trunk/drivers/serial/serial_cs.c +++ b/trunk/drivers/serial/serial_cs.c @@ -786,7 +786,6 @@ static struct pcmcia_device_id serial_ids[] = { PCMCIA_DEVICE_CIS_PROD_ID12("ADVANTECH", "COMpad-32/85B-4", 0x96913a85, 0xcec8f102, "COMpad4.cis"), PCMCIA_DEVICE_CIS_PROD_ID123("ADVANTECH", "COMpad-32/85", "1.0", 0x96913a85, 0x8fbe92ae, 0x0877b627, "COMpad2.cis"), PCMCIA_DEVICE_CIS_PROD_ID2("RS-COM 2P", 0xad20b156, "RS-COM-2P.cis"), - PCMCIA_DEVICE_CIS_MANF_CARD(0x0013, 0x0000, "GLOBETROTTER.cis"), /* too generic */ /* PCMCIA_MFC_DEVICE_MANF_CARD(0, 0x0160, 0x0002), */ /* PCMCIA_MFC_DEVICE_MANF_CARD(1, 0x0160, 0x0002), */ diff --git a/trunk/drivers/serial/serial_lh7a40x.c b/trunk/drivers/serial/serial_lh7a40x.c index 23ddedbaec08..776d4ff06084 100644 --- a/trunk/drivers/serial/serial_lh7a40x.c +++ b/trunk/drivers/serial/serial_lh7a40x.c @@ -27,6 +27,7 @@ * */ +#include #if defined(CONFIG_SERIAL_LH7A40X_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) #define SUPPORT_SYSRQ diff --git a/trunk/drivers/serial/serial_txx9.c b/trunk/drivers/serial/serial_txx9.c index 28c1881a6691..a901a7e446f3 100644 --- a/trunk/drivers/serial/serial_txx9.c +++ b/trunk/drivers/serial/serial_txx9.c @@ -38,6 +38,7 @@ * Fix some spin_locks. * Do not call uart_add_one_port for absent ports. */ +#include #if defined(CONFIG_SERIAL_TXX9_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) #define SUPPORT_SYSRQ diff --git a/trunk/drivers/serial/sh-sci.c b/trunk/drivers/serial/sh-sci.c index 2509c3237e87..d97f3ca6cc29 100644 --- a/trunk/drivers/serial/sh-sci.c +++ b/trunk/drivers/serial/sh-sci.c @@ -20,6 +20,7 @@ #undef DEBUG +#include #include #include #include diff --git a/trunk/drivers/serial/sh-sci.h b/trunk/drivers/serial/sh-sci.h index ab320fa3237c..1f14bb4382f6 100644 --- a/trunk/drivers/serial/sh-sci.h +++ b/trunk/drivers/serial/sh-sci.h @@ -10,6 +10,7 @@ * Modified to support SH7300(SH-Mobile) SCIF. Takashi Kusuda (Jun 2003). * Modified to support H8/300 Series Yoshinori Sato (Feb 2004). */ +#include #include #if defined(__H8300H__) || defined(__H8300S__) diff --git a/trunk/drivers/serial/sn_console.c b/trunk/drivers/serial/sn_console.c index 4b0afc8f12b9..60ea4a3f0713 100644 --- a/trunk/drivers/serial/sn_console.c +++ b/trunk/drivers/serial/sn_console.c @@ -37,6 +37,7 @@ * http://oss.sgi.com/projects/GenInfo/NoticeExplan */ +#include #include #include #include diff --git a/trunk/drivers/serial/suncore.c b/trunk/drivers/serial/suncore.c index e35d9ab359f1..fa4ae94243c2 100644 --- a/trunk/drivers/serial/suncore.c +++ b/trunk/drivers/serial/suncore.c @@ -10,6 +10,7 @@ * Copyright (C) 2002 David S. Miller (davem@redhat.com) */ +#include #include #include #include diff --git a/trunk/drivers/serial/sunhv.c b/trunk/drivers/serial/sunhv.c index f851f0f44f9b..d36bc4003399 100644 --- a/trunk/drivers/serial/sunhv.c +++ b/trunk/drivers/serial/sunhv.c @@ -20,8 +20,8 @@ #include #include -#include -#include +#include +#include #include #if defined(CONFIG_MAGIC_SYSRQ) @@ -407,120 +407,144 @@ static inline struct console *SUNHV_CONSOLE(void) return &sunhv_console; } -static int __devinit hv_probe(struct of_device *op, const struct of_device_id *match) +static int __init hv_console_compatible(char *buf, int len) +{ + while (len) { + int this_len; + + if (!strcmp(buf, "qcn")) + return 1; + + this_len = strlen(buf) + 1; + + buf += this_len; + len -= this_len; + } + + return 0; +} + +static unsigned int __init get_interrupt(void) +{ + struct device_node *dev_node; + + dev_node = sun4v_vdev_root->child; + while (dev_node != NULL) { + struct property *prop; + + if (strcmp(dev_node->name, "console")) + goto next_sibling; + + prop = of_find_property(dev_node, "compatible", NULL); + if (!prop) + goto next_sibling; + + if (hv_console_compatible(prop->value, prop->length)) + break; + + next_sibling: + dev_node = dev_node->sibling; + } + if (!dev_node) + return 0; + + /* Ok, the this is the OBP node for the sun4v hypervisor + * console device. Decode the interrupt. + */ + return sun4v_vdev_device_interrupt(dev_node); +} + +static int __init sunhv_init(void) { struct uart_port *port; - int err; + int ret; - if (op->irqs[0] == 0xffffffff) + if (tlb_type != hypervisor) return -ENODEV; - port = kzalloc(sizeof(struct uart_port), GFP_KERNEL); + port = kmalloc(sizeof(struct uart_port), GFP_KERNEL); if (unlikely(!port)) return -ENOMEM; - sunhv_port = port; + memset(port, 0, sizeof(struct uart_port)); port->line = 0; port->ops = &sunhv_pops; port->type = PORT_SUNHV; port->uartclk = ( 29491200 / 16 ); /* arbitrary */ + /* Set this just to make uart_configure_port() happy. */ port->membase = (unsigned char __iomem *) __pa(port); - port->irq = op->irqs[0]; - - port->dev = &op->dev; + port->irq = get_interrupt(); + if (!port->irq) { + kfree(port); + return -ENODEV; + } sunhv_reg.minor = sunserial_current_minor; sunhv_reg.nr = 1; - err = uart_register_driver(&sunhv_reg); - if (err) - goto out_free_port; + ret = uart_register_driver(&sunhv_reg); + if (ret < 0) { + printk(KERN_ERR "SUNHV: uart_register_driver() failed %d\n", + ret); + kfree(port); + + return ret; + } sunhv_reg.tty_driver->name_base = sunhv_reg.minor - 64; sunserial_current_minor += 1; sunhv_reg.cons = SUNHV_CONSOLE(); - err = uart_add_one_port(&sunhv_reg, port); - if (err) - goto out_unregister_driver; + sunhv_port = port; - err = request_irq(port->irq, sunhv_interrupt, 0, "hvcons", port); - if (err) - goto out_remove_port; + ret = uart_add_one_port(&sunhv_reg, port); + if (ret < 0) { + printk(KERN_ERR "SUNHV: uart_add_one_port() failed %d\n", ret); + sunserial_current_minor -= 1; + uart_unregister_driver(&sunhv_reg); + kfree(port); + sunhv_port = NULL; + return -ENODEV; + } - dev_set_drvdata(&op->dev, port); + if (request_irq(port->irq, sunhv_interrupt, + SA_SHIRQ, "serial(sunhv)", port)) { + printk(KERN_ERR "sunhv: Cannot register IRQ\n"); + uart_remove_one_port(&sunhv_reg, port); + sunserial_current_minor -= 1; + uart_unregister_driver(&sunhv_reg); + kfree(port); + sunhv_port = NULL; + return -ENODEV; + } return 0; - -out_remove_port: - uart_remove_one_port(&sunhv_reg, port); - -out_unregister_driver: - sunserial_current_minor -= 1; - uart_unregister_driver(&sunhv_reg); - -out_free_port: - kfree(port); - sunhv_port = NULL; - return err; } -static int __devexit hv_remove(struct of_device *dev) +static void __exit sunhv_exit(void) { - struct uart_port *port = dev_get_drvdata(&dev->dev); + struct uart_port *port = sunhv_port; + + BUG_ON(!port); free_irq(port->irq, port); uart_remove_one_port(&sunhv_reg, port); - sunserial_current_minor -= 1; + uart_unregister_driver(&sunhv_reg); - kfree(port); + kfree(sunhv_port); sunhv_port = NULL; - - dev_set_drvdata(&dev->dev, NULL); - - return 0; -} - -static struct of_device_id hv_match[] = { - { - .name = "console", - .compatible = "qcn", - }, - {}, -}; -MODULE_DEVICE_TABLE(of, hv_match); - -static struct of_platform_driver hv_driver = { - .name = "hv", - .match_table = hv_match, - .probe = hv_probe, - .remove = __devexit_p(hv_remove), -}; - -static int __init sunhv_init(void) -{ - if (tlb_type != hypervisor) - return -ENODEV; - - return of_register_driver(&hv_driver, &of_bus_type); -} - -static void __exit sunhv_exit(void) -{ - of_unregister_driver(&hv_driver); } module_init(sunhv_init); module_exit(sunhv_exit); MODULE_AUTHOR("David S. Miller"); -MODULE_DESCRIPTION("SUN4V Hypervisor console driver"); -MODULE_VERSION("2.0"); +MODULE_DESCRIPTION("SUN4V Hypervisor console driver") MODULE_LICENSE("GPL"); diff --git a/trunk/drivers/serial/sunsab.c b/trunk/drivers/serial/sunsab.c index 20a48697727c..7da02d11c364 100644 --- a/trunk/drivers/serial/sunsab.c +++ b/trunk/drivers/serial/sunsab.c @@ -1,7 +1,7 @@ /* sunsab.c: ASYNC Driver for the SIEMENS SAB82532 DUSCC. * * Copyright (C) 1997 Eddie C. Dost (ecd@skynet.be) - * Copyright (C) 2002, 2006 David S. Miller (davem@davemloft.net) + * Copyright (C) 2002 David S. Miller (davem@redhat.com) * * Rewrote buffer handling to use CIRC(Circular Buffer) macros. * Maxim Krasnyanskiy @@ -12,9 +12,10 @@ * Theodore Ts'o , 2001-Oct-12 * * Ported to new 2.5.x UART layer. - * David S. Miller + * David S. Miller */ +#include #include #include #include @@ -36,8 +37,8 @@ #include #include -#include -#include +#include +#include #if defined(CONFIG_SERIAL_SUNZILOG_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) #define SUPPORT_SYSRQ @@ -975,188 +976,199 @@ static inline struct console *SUNSAB_CONSOLE(void) #define sunsab_console_init() do { } while (0) #endif -static int __devinit sunsab_init_one(struct uart_sunsab_port *up, - struct of_device *op, - unsigned long offset, - int line) +static void __init for_each_sab_edev(void (*callback)(struct linux_ebus_device *, void *), void *arg) { - up->port.line = line; - up->port.dev = &op->dev; - - up->port.mapbase = op->resource[0].start + offset; - up->port.membase = of_ioremap(&op->resource[0], offset, - sizeof(union sab82532_async_regs), - "sab"); - if (!up->port.membase) - return -ENOMEM; - up->regs = (union sab82532_async_regs __iomem *) up->port.membase; + struct linux_ebus *ebus; + struct linux_ebus_device *edev = NULL; + + for_each_ebus(ebus) { + for_each_ebusdev(edev, ebus) { + if (!strcmp(edev->prom_node->name, "se")) { + callback(edev, arg); + continue; + } else if (!strcmp(edev->prom_node->name, "serial")) { + char *compat; + int clen; + + /* On RIO this can be an SE, check it. We could + * just check ebus->is_rio, but this is more portable. + */ + compat = of_get_property(edev->prom_node, + "compatible", &clen); + if (compat && clen > 0) { + if (strncmp(compat, "sab82532", 8) == 0) { + callback(edev, arg); + continue; + } + } + } + } + } +} - up->port.irq = op->irqs[0]; +static void __init sab_count_callback(struct linux_ebus_device *edev, void *arg) +{ + int *count_p = arg; - up->port.fifosize = SAB82532_XMIT_FIFO_SIZE; - up->port.iotype = UPIO_MEM; + (*count_p)++; +} - writeb(SAB82532_IPC_IC_ACT_LOW, &up->regs->w.ipc); +static void __init sab_attach_callback(struct linux_ebus_device *edev, void *arg) +{ + int *instance_p = arg; + struct uart_sunsab_port *up; + unsigned long regs, offset; + int i; - up->port.ops = &sunsab_pops; - up->port.type = PORT_SUNSAB; - up->port.uartclk = SAB_BASE_BAUD; + /* Note: ports are located in reverse order */ + regs = edev->resource[0].start; + offset = sizeof(union sab82532_async_regs); + for (i = 0; i < 2; i++) { + up = &sunsab_ports[(*instance_p * 2) + 1 - i]; - up->type = readb(&up->regs->r.vstr) & 0x0f; - writeb(~((1 << 1) | (1 << 2) | (1 << 4)), &up->regs->w.pcr); - writeb(0xff, &up->regs->w.pim); - if ((up->port.line & 0x1) == 0) { - up->pvr_dsr_bit = (1 << 0); - up->pvr_dtr_bit = (1 << 1); - } else { - up->pvr_dsr_bit = (1 << 3); - up->pvr_dtr_bit = (1 << 2); - } - up->cached_pvr = (1 << 1) | (1 << 2) | (1 << 4); - writeb(up->cached_pvr, &up->regs->w.pvr); - up->cached_mode = readb(&up->regs->rw.mode); - up->cached_mode |= SAB82532_MODE_FRTS; - writeb(up->cached_mode, &up->regs->rw.mode); - up->cached_mode |= SAB82532_MODE_RTS; - writeb(up->cached_mode, &up->regs->rw.mode); + memset(up, 0, sizeof(*up)); + up->regs = ioremap(regs + offset, sizeof(union sab82532_async_regs)); + up->port.irq = edev->irqs[0]; + up->port.fifosize = SAB82532_XMIT_FIFO_SIZE; + up->port.mapbase = (unsigned long)up->regs; + up->port.iotype = UPIO_MEM; - up->tec_timeout = SAB82532_MAX_TEC_TIMEOUT; - up->cec_timeout = SAB82532_MAX_CEC_TIMEOUT; + writeb(SAB82532_IPC_IC_ACT_LOW, &up->regs->w.ipc); - if (!(up->port.line & 0x01)) { - int err; - - err = request_irq(up->port.irq, sunsab_interrupt, - SA_SHIRQ, "sab", up); - if (err) { - of_iounmap(up->port.membase, - sizeof(union sab82532_async_regs)); - return err; - } + offset -= sizeof(union sab82532_async_regs); } - - return 0; + + (*instance_p)++; } -static int __devinit sab_probe(struct of_device *op, const struct of_device_id *match) +static int __init probe_for_sabs(void) { - static int inst; - struct uart_sunsab_port *up; - int err; - - up = &sunsab_ports[inst * 2]; - - err = sunsab_init_one(&up[0], op, - sizeof(union sab82532_async_regs), - (inst * 2) + 0); - if (err) - return err; - - err = sunsab_init_one(&up[0], op, 0, - (inst * 2) + 1); - if (err) { - of_iounmap(up[0].port.membase, - sizeof(union sab82532_async_regs)); - free_irq(up[0].port.irq, &up[0]); - return err; - } + int this_sab = 0; - uart_add_one_port(&sunsab_reg, &up[0].port); - uart_add_one_port(&sunsab_reg, &up[1].port); + /* Find device instances. */ + for_each_sab_edev(&sab_count_callback, &this_sab); + if (!this_sab) + return -ENODEV; - dev_set_drvdata(&op->dev, &up[0]); + /* Allocate tables. */ + sunsab_ports = kmalloc(sizeof(struct uart_sunsab_port) * this_sab * 2, + GFP_KERNEL); + if (!sunsab_ports) + return -ENOMEM; - inst++; + num_channels = this_sab * 2; + this_sab = 0; + for_each_sab_edev(&sab_attach_callback, &this_sab); return 0; } -static void __devexit sab_remove_one(struct uart_sunsab_port *up) +static void __init sunsab_init_hw(void) { - uart_remove_one_port(&sunsab_reg, &up->port); - if (!(up->port.line & 1)) - free_irq(up->port.irq, up); - of_iounmap(up->port.membase, - sizeof(union sab82532_async_regs)); + int i; + + for (i = 0; i < num_channels; i++) { + struct uart_sunsab_port *up = &sunsab_ports[i]; + + up->port.line = i; + up->port.ops = &sunsab_pops; + up->port.type = PORT_SUNSAB; + up->port.uartclk = SAB_BASE_BAUD; + + up->type = readb(&up->regs->r.vstr) & 0x0f; + writeb(~((1 << 1) | (1 << 2) | (1 << 4)), &up->regs->w.pcr); + writeb(0xff, &up->regs->w.pim); + if (up->port.line == 0) { + up->pvr_dsr_bit = (1 << 0); + up->pvr_dtr_bit = (1 << 1); + } else { + up->pvr_dsr_bit = (1 << 3); + up->pvr_dtr_bit = (1 << 2); + } + up->cached_pvr = (1 << 1) | (1 << 2) | (1 << 4); + writeb(up->cached_pvr, &up->regs->w.pvr); + up->cached_mode = readb(&up->regs->rw.mode); + up->cached_mode |= SAB82532_MODE_FRTS; + writeb(up->cached_mode, &up->regs->rw.mode); + up->cached_mode |= SAB82532_MODE_RTS; + writeb(up->cached_mode, &up->regs->rw.mode); + + up->tec_timeout = SAB82532_MAX_TEC_TIMEOUT; + up->cec_timeout = SAB82532_MAX_CEC_TIMEOUT; + + if (!(up->port.line & 0x01)) { + if (request_irq(up->port.irq, sunsab_interrupt, + SA_SHIRQ, "serial(sab82532)", up)) { + printk("sunsab%d: can't get IRQ %x\n", + i, up->port.irq); + continue; + } + } + } } -static int __devexit sab_remove(struct of_device *op) +static int __init sunsab_init(void) { - struct uart_sunsab_port *up = dev_get_drvdata(&op->dev); + int ret = probe_for_sabs(); + int i; - sab_remove_one(&up[0]); - sab_remove_one(&up[1]); + if (ret < 0) + return ret; - dev_set_drvdata(&op->dev, NULL); + sunsab_init_hw(); - return 0; -} + sunsab_reg.minor = sunserial_current_minor; + sunsab_reg.nr = num_channels; -static struct of_device_id sab_match[] = { - { - .name = "se", - }, - { - .name = "serial", - .compatible = "sab82532", - }, - {}, -}; -MODULE_DEVICE_TABLE(of, sab_match); + ret = uart_register_driver(&sunsab_reg); + if (ret < 0) { + int i; -static struct of_platform_driver sab_driver = { - .name = "sab", - .match_table = sab_match, - .probe = sab_probe, - .remove = __devexit_p(sab_remove), -}; + for (i = 0; i < num_channels; i++) { + struct uart_sunsab_port *up = &sunsab_ports[i]; -static int __init sunsab_init(void) -{ - struct device_node *dp; - int err; - - num_channels = 0; - for_each_node_by_name(dp, "su") - num_channels += 2; - for_each_node_by_name(dp, "serial") { - if (of_device_is_compatible(dp, "sab82532")) - num_channels += 2; - } + if (!(up->port.line & 0x01)) + free_irq(up->port.irq, up); + iounmap(up->regs); + } + kfree(sunsab_ports); + sunsab_ports = NULL; - if (num_channels) { - sunsab_ports = kzalloc(sizeof(struct uart_sunsab_port) * - num_channels, GFP_KERNEL); - if (!sunsab_ports) - return -ENOMEM; + return ret; + } - sunsab_reg.minor = sunserial_current_minor; - sunsab_reg.nr = num_channels; + sunsab_reg.tty_driver->name_base = sunsab_reg.minor - 64; - err = uart_register_driver(&sunsab_reg); - if (err) { - kfree(sunsab_ports); - sunsab_ports = NULL; + sunsab_reg.cons = SUNSAB_CONSOLE(); - return err; - } + sunserial_current_minor += num_channels; + + for (i = 0; i < num_channels; i++) { + struct uart_sunsab_port *up = &sunsab_ports[i]; - sunsab_reg.tty_driver->name_base = sunsab_reg.minor - 64; - sunsab_reg.cons = SUNSAB_CONSOLE(); - sunserial_current_minor += num_channels; + uart_add_one_port(&sunsab_reg, &up->port); } - return of_register_driver(&sab_driver, &of_bus_type); + return 0; } static void __exit sunsab_exit(void) { - of_unregister_driver(&sab_driver); - if (num_channels) { - sunserial_current_minor -= num_channels; - uart_unregister_driver(&sunsab_reg); + int i; + + for (i = 0; i < num_channels; i++) { + struct uart_sunsab_port *up = &sunsab_ports[i]; + + uart_remove_one_port(&sunsab_reg, &up->port); + + if (!(up->port.line & 0x01)) + free_irq(up->port.irq, up); + iounmap(up->regs); } + sunserial_current_minor -= num_channels; + uart_unregister_driver(&sunsab_reg); + kfree(sunsab_ports); sunsab_ports = NULL; } diff --git a/trunk/drivers/serial/sunsu.c b/trunk/drivers/serial/sunsu.c index eabf477fee95..6e28c25138cf 100644 --- a/trunk/drivers/serial/sunsu.c +++ b/trunk/drivers/serial/sunsu.c @@ -12,9 +12,10 @@ * Theodore Ts'o , 2001-Oct-12 * * Converted to new 2.5.x UART layer. - * David S. Miller (davem@davemloft.net), 2002-Jul-29 + * David S. Miller (davem@redhat.com), 2002-Jul-29 */ +#include #include #include #include @@ -39,8 +40,11 @@ #include #include -#include -#include +#include +#include +#ifdef CONFIG_SPARC64 +#include +#endif #if defined(CONFIG_SERIAL_SUNSU_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) #define SUPPORT_SYSRQ @@ -90,10 +94,10 @@ struct uart_sunsu_port { /* Probing information. */ enum su_type su_type; unsigned int type_probed; /* XXX Stupid */ - unsigned long reg_size; + int port_node; #ifdef CONFIG_SERIO - struct serio serio; + struct serio *serio; int serio_open; #endif }; @@ -505,7 +509,7 @@ static void receive_kbd_ms_chars(struct uart_sunsu_port *up, struct pt_regs *reg /* Stop-A is handled by drivers/char/keyboard.c now. */ if (up->su_type == SU_PORT_KBD) { #ifdef CONFIG_SERIO - serio_interrupt(&up->serio, ch, 0, regs); + serio_interrupt(up->serio, ch, 0, regs); #endif } else if (up->su_type == SU_PORT_MS) { int ret = suncore_mouse_baud_detection(ch, is_break); @@ -519,7 +523,7 @@ static void receive_kbd_ms_chars(struct uart_sunsu_port *up, struct pt_regs *reg case 0: #ifdef CONFIG_SERIO - serio_interrupt(&up->serio, ch, 0, regs); + serio_interrupt(up->serio, ch, 0, regs); #endif break; }; @@ -1027,14 +1031,99 @@ static void sunsu_autoconfig(struct uart_sunsu_port *up) { unsigned char status1, status2, scratch, scratch2, scratch3; unsigned char save_lcr, save_mcr; + struct linux_ebus_device *dev = NULL; + struct linux_ebus *ebus; +#ifdef CONFIG_SPARC64 + struct sparc_isa_bridge *isa_br; + struct sparc_isa_device *isa_dev; +#endif +#ifndef CONFIG_SPARC64 + struct linux_prom_registers reg0; +#endif unsigned long flags; - if (up->su_type == SU_PORT_NONE) + if (!up->port_node || !up->su_type) return; up->type_probed = PORT_UNKNOWN; up->port.iotype = UPIO_MEM; + /* + * First we look for Ebus-bases su's + */ + for_each_ebus(ebus) { + for_each_ebusdev(dev, ebus) { + if (dev->prom_node->node == up->port_node) { + /* + * The EBus is broken on sparc; it delivers + * virtual addresses in resources. Oh well... + * This is correct on sparc64, though. + */ + up->port.membase = (char *) dev->resource[0].start; + /* + * This is correct on both architectures. + */ + up->port.mapbase = dev->resource[0].start; + up->port.irq = dev->irqs[0]; + goto ebus_done; + } + } + } + +#ifdef CONFIG_SPARC64 + for_each_isa(isa_br) { + for_each_isadev(isa_dev, isa_br) { + if (isa_dev->prom_node->node == up->port_node) { + /* Same on sparc64. Cool architecure... */ + up->port.membase = (char *) isa_dev->resource.start; + up->port.mapbase = isa_dev->resource.start; + up->port.irq = isa_dev->irq; + goto ebus_done; + } + } + } +#endif + +#ifdef CONFIG_SPARC64 + /* + * Not on Ebus, bailing. + */ + return; +#else + /* + * Not on Ebus, must be OBIO. + */ + if (prom_getproperty(up->port_node, "reg", + (char *)®0, sizeof(reg0)) == -1) { + prom_printf("sunsu: no \"reg\" property\n"); + return; + } + prom_apply_obio_ranges(®0, 1); + if (reg0.which_io != 0) { /* Just in case... */ + prom_printf("sunsu: bus number nonzero: 0x%x:%x\n", + reg0.which_io, reg0.phys_addr); + return; + } + up->port.mapbase = reg0.phys_addr; + if ((up->port.membase = ioremap(reg0.phys_addr, reg0.reg_size)) == 0) { + prom_printf("sunsu: Cannot map registers.\n"); + return; + } + + /* + * 0x20 is sun4m thing, Dave Redman heritage. + * See arch/sparc/kernel/irq.c. + */ +#define IRQ_4M(n) ((n)|0x20) + + /* + * There is no intr property on MrCoffee, so hardwire it. + */ + up->port.irq = IRQ_4M(13); +#endif + +ebus_done: + spin_lock_irqsave(&up->port.lock, flags); if (!(up->port.flags & UPF_BUGGY_UART)) { @@ -1180,13 +1269,18 @@ static struct uart_driver sunsu_reg = { .major = TTY_MAJOR, }; -static int __init sunsu_kbd_ms_init(struct uart_sunsu_port *up) +static int __init sunsu_kbd_ms_init(struct uart_sunsu_port *up, int channel) { int quot, baud; #ifdef CONFIG_SERIO struct serio *serio; #endif + spin_lock_init(&up->port.lock); + up->port.line = channel; + up->port.type = PORT_UNKNOWN; + up->port.uartclk = (SU_BASE_BAUD * 16); + if (up->su_type == SU_PORT_KBD) { up->cflag = B1200 | CS8 | CLOCAL | CREAD; baud = 1200; @@ -1198,31 +1292,41 @@ static int __init sunsu_kbd_ms_init(struct uart_sunsu_port *up) sunsu_autoconfig(up); if (up->port.type == PORT_UNKNOWN) - return -ENODEV; + return -1; + + printk(KERN_INFO "su%d at 0x%p (irq = %d) is a %s\n", + channel, + up->port.membase, up->port.irq, + sunsu_type(&up->port)); #ifdef CONFIG_SERIO - serio = &up->serio; - serio->port_data = up; + up->serio = serio = kmalloc(sizeof(struct serio), GFP_KERNEL); + if (serio) { + memset(serio, 0, sizeof(*serio)); - serio->id.type = SERIO_RS232; - if (up->su_type == SU_PORT_KBD) { - serio->id.proto = SERIO_SUNKBD; - strlcpy(serio->name, "sukbd", sizeof(serio->name)); - } else { - serio->id.proto = SERIO_SUN; - serio->id.extra = 1; - strlcpy(serio->name, "sums", sizeof(serio->name)); - } - strlcpy(serio->phys, - (!(up->port.line & 1) ? "su/serio0" : "su/serio1"), - sizeof(serio->phys)); + serio->port_data = up; + + serio->id.type = SERIO_RS232; + if (up->su_type == SU_PORT_KBD) { + serio->id.proto = SERIO_SUNKBD; + strlcpy(serio->name, "sukbd", sizeof(serio->name)); + } else { + serio->id.proto = SERIO_SUN; + serio->id.extra = 1; + strlcpy(serio->name, "sums", sizeof(serio->name)); + } + strlcpy(serio->phys, (channel == 0 ? "su/serio0" : "su/serio1"), + sizeof(serio->phys)); - serio->write = sunsu_serio_write; - serio->open = sunsu_serio_open; - serio->close = sunsu_serio_close; - serio->dev.parent = up->port.dev; + serio->write = sunsu_serio_write; + serio->open = sunsu_serio_open; + serio->close = sunsu_serio_close; - serio_register_port(serio); + serio_register_port(serio); + } else { + printk(KERN_WARNING "su%d: not enough memory for serio port\n", + channel); + } #endif sunsu_change_speed(&up->port, up->cflag, 0, quot); @@ -1354,20 +1458,22 @@ static struct console sunsu_cons = { * Register console. */ -static inline struct console *SUNSU_CONSOLE(int num_uart) +static inline struct console *SUNSU_CONSOLE(void) { int i; if (con_is_present()) return NULL; - for (i = 0; i < num_uart; i++) { + for (i = 0; i < UART_NR; i++) { int this_minor = sunsu_reg.minor + i; if ((this_minor - 64) == (serial_console - 1)) break; } - if (i == num_uart) + if (i == UART_NR) + return NULL; + if (sunsu_ports[i].port_node == 0) return NULL; sunsu_cons.index = i; @@ -1375,186 +1481,252 @@ static inline struct console *SUNSU_CONSOLE(int num_uart) return &sunsu_cons; } #else -#define SUNSU_CONSOLE(num_uart) (NULL) +#define SUNSU_CONSOLE() (NULL) #define sunsu_serial_console_init() do { } while (0) #endif -static enum su_type __devinit su_get_type(struct device_node *dp) +static int __init sunsu_serial_init(void) { - struct device_node *ap = of_find_node_by_path("/aliases"); + int instance, ret, i; - if (ap) { - char *keyb = of_get_property(ap, "keyboard", NULL); - char *ms = of_get_property(ap, "mouse", NULL); + /* How many instances do we need? */ + instance = 0; + for (i = 0; i < UART_NR; i++) { + struct uart_sunsu_port *up = &sunsu_ports[i]; - if (keyb) { - if (dp == of_find_node_by_path(keyb)) - return SU_PORT_KBD; - } - if (ms) { - if (dp == of_find_node_by_path(ms)) - return SU_PORT_MS; - } - } + if (up->su_type == SU_PORT_MS || + up->su_type == SU_PORT_KBD) + continue; - return SU_PORT_PORT; -} + spin_lock_init(&up->port.lock); + up->port.flags |= UPF_BOOT_AUTOCONF; + up->port.type = PORT_UNKNOWN; + up->port.uartclk = (SU_BASE_BAUD * 16); -static int __devinit su_probe(struct of_device *op, const struct of_device_id *match) -{ - static int inst; - struct device_node *dp = op->node; - struct uart_sunsu_port *up; - struct resource *rp; - int err; + sunsu_autoconfig(up); + if (up->port.type == PORT_UNKNOWN) + continue; - if (inst >= UART_NR) - return -EINVAL; + up->port.line = instance++; + up->port.ops = &sunsu_pops; + } - up = &sunsu_ports[inst]; - up->port.line = inst; + sunsu_reg.minor = sunserial_current_minor; - spin_lock_init(&up->port.lock); + sunsu_reg.nr = instance; - up->su_type = su_get_type(dp); + ret = uart_register_driver(&sunsu_reg); + if (ret < 0) + return ret; - rp = &op->resource[0]; - up->port.mapbase = op->resource[0].start; + sunsu_reg.tty_driver->name_base = sunsu_reg.minor - 64; - up->reg_size = (rp->end - rp->start) + 1; - up->port.membase = of_ioremap(rp, 0, up->reg_size, "su"); - if (!up->port.membase) - return -ENOMEM; + sunserial_current_minor += instance; - up->port.irq = op->irqs[0]; + sunsu_reg.cons = SUNSU_CONSOLE(); - up->port.dev = &op->dev; + for (i = 0; i < UART_NR; i++) { + struct uart_sunsu_port *up = &sunsu_ports[i]; - up->port.type = PORT_UNKNOWN; - up->port.uartclk = (SU_BASE_BAUD * 16); + /* Do not register Keyboard/Mouse lines with UART + * layer. + */ + if (up->su_type == SU_PORT_MS || + up->su_type == SU_PORT_KBD) + continue; - err = 0; - if (up->su_type == SU_PORT_KBD || up->su_type == SU_PORT_MS) { - err = sunsu_kbd_ms_init(up); - if (err) - goto out_unmap; + if (up->port.type == PORT_UNKNOWN) + continue; - return 0; + uart_add_one_port(&sunsu_reg, &up->port); } - up->port.flags |= UPF_BOOT_AUTOCONF; - - sunsu_autoconfig(up); + return 0; +} - err = -ENODEV; - if (up->port.type == PORT_UNKNOWN) - goto out_unmap; +static int su_node_ok(int node, char *name, int namelen) +{ + if (strncmp(name, "su", namelen) == 0 || + strncmp(name, "su_pnp", namelen) == 0) + return 1; + + if (strncmp(name, "serial", namelen) == 0) { + char compat[32]; + int clen; + + /* Is it _really_ a 'su' device? */ + clen = prom_getproperty(node, "compatible", compat, sizeof(compat)); + if (clen > 0) { + if (strncmp(compat, "sab82532", 8) == 0) { + /* Nope, Siemens serial, not for us. */ + return 0; + } + } + return 1; + } - up->port.ops = &sunsu_pops; + return 0; +} - err = uart_add_one_port(&sunsu_reg, &up->port); - if (err) - goto out_unmap; +#define SU_PROPSIZE 128 - dev_set_drvdata(&op->dev, up); +/* + * Scan status structure. + * "prop" is a local variable but it eats stack to keep it in each + * stack frame of a recursive procedure. + */ +struct su_probe_scan { + int msnode, kbnode; /* PROM nodes for mouse and keyboard */ + int msx, kbx; /* minors for mouse and keyboard */ + int devices; /* scan index */ + char prop[SU_PROPSIZE]; +}; - inst++; +/* + * We have several platforms which present 'su' in different parts + * of the device tree. 'su' may be found under obio, ebus, isa and pci. + * We walk over the tree and find them wherever PROM hides them. + */ +static void __init su_probe_any(struct su_probe_scan *t, int sunode) +{ + struct uart_sunsu_port *up; + int len; - return 0; + if (t->devices >= UART_NR) + return; -out_unmap: - of_iounmap(up->port.membase, up->reg_size); - return err; + for (; sunode != 0; sunode = prom_getsibling(sunode)) { + len = prom_getproperty(sunode, "name", t->prop, SU_PROPSIZE); + if (len <= 1) + continue; /* Broken PROM node */ + + if (su_node_ok(sunode, t->prop, len)) { + up = &sunsu_ports[t->devices]; + if (t->kbnode != 0 && sunode == t->kbnode) { + t->kbx = t->devices; + up->su_type = SU_PORT_KBD; + } else if (t->msnode != 0 && sunode == t->msnode) { + t->msx = t->devices; + up->su_type = SU_PORT_MS; + } else { +#ifdef CONFIG_SPARC64 + /* + * Do not attempt to use the truncated + * keyboard/mouse ports as serial ports + * on Ultras with PC keyboard attached. + */ + if (prom_getbool(sunode, "mouse")) + continue; + if (prom_getbool(sunode, "keyboard")) + continue; +#endif + up->su_type = SU_PORT_PORT; + } + up->port_node = sunode; + ++t->devices; + } else { + su_probe_any(t, prom_getchild(sunode)); + } + } } -static int __devexit su_remove(struct of_device *dev) +static int __init sunsu_probe(void) { - struct uart_sunsu_port *up = dev_get_drvdata(&dev->dev);; + int node; + int len; + struct su_probe_scan scan; - if (up->su_type == SU_PORT_MS || - up->su_type == SU_PORT_KBD) { -#ifdef CONFIG_SERIO - serio_unregister_port(&up->serio); -#endif - } else if (up->port.type != PORT_UNKNOWN) - uart_remove_one_port(&sunsu_reg, &up->port); + /* + * First, we scan the tree. + */ + scan.devices = 0; + scan.msx = -1; + scan.kbx = -1; + scan.kbnode = 0; + scan.msnode = 0; - return 0; -} + /* + * Get the nodes for keyboard and mouse from 'aliases'... + */ + node = prom_getchild(prom_root_node); + node = prom_searchsiblings(node, "aliases"); + if (node != 0) { + len = prom_getproperty(node, "keyboard", scan.prop, SU_PROPSIZE); + if (len > 0) { + scan.prop[len] = 0; + scan.kbnode = prom_finddevice(scan.prop); + } -static struct of_device_id su_match[] = { - { - .name = "su", - }, - { - .name = "su_pnp", - }, - { - .name = "serial", - .compatible = "su", - }, - {}, -}; -MODULE_DEVICE_TABLE(of, su_match); + len = prom_getproperty(node, "mouse", scan.prop, SU_PROPSIZE); + if (len > 0) { + scan.prop[len] = 0; + scan.msnode = prom_finddevice(scan.prop); + } + } -static struct of_platform_driver su_driver = { - .name = "su", - .match_table = su_match, - .probe = su_probe, - .remove = __devexit_p(su_remove), -}; + su_probe_any(&scan, prom_getchild(prom_root_node)); -static int num_uart; + /* + * Second, we process the special case of keyboard and mouse. + * + * Currently if we got keyboard and mouse hooked to "su" ports + * we do not use any possible remaining "su" as a serial port. + * Thus, we ignore values of .msx and .kbx, then compact ports. + */ + if (scan.msx != -1 && scan.kbx != -1) { + sunsu_ports[0].su_type = SU_PORT_MS; + sunsu_ports[0].port_node = scan.msnode; + sunsu_kbd_ms_init(&sunsu_ports[0], 0); -static int __init sunsu_init(void) -{ - struct device_node *dp; - int err; + sunsu_ports[1].su_type = SU_PORT_KBD; + sunsu_ports[1].port_node = scan.kbnode; + sunsu_kbd_ms_init(&sunsu_ports[1], 1); - num_uart = 0; - for_each_node_by_name(dp, "su") { - if (su_get_type(dp) == SU_PORT_PORT) - num_uart++; - } - for_each_node_by_name(dp, "su_pnp") { - if (su_get_type(dp) == SU_PORT_PORT) - num_uart++; - } - for_each_node_by_name(dp, "serial") { - if (of_device_is_compatible(dp, "su")) { - if (su_get_type(dp) == SU_PORT_PORT) - num_uart++; - } + return 0; } - if (num_uart) { - sunsu_reg.minor = sunserial_current_minor; - sunsu_reg.nr = num_uart; - err = uart_register_driver(&sunsu_reg); - if (err) - return err; - sunsu_reg.tty_driver->name_base = sunsu_reg.minor - 64; - sunserial_current_minor += num_uart; - sunsu_reg.cons = SUNSU_CONSOLE(num_uart); + if (scan.msx != -1 || scan.kbx != -1) { + printk("sunsu_probe: cannot match keyboard and mouse, confused\n"); + return -ENODEV; } - err = of_register_driver(&su_driver, &of_bus_type); - if (err && num_uart) - uart_unregister_driver(&sunsu_reg); + if (scan.devices == 0) + return -ENODEV; + + /* + * Console must be initiated after the generic initialization. + */ + sunsu_serial_init(); - return err; + return 0; } static void __exit sunsu_exit(void) { - if (num_uart) + int i, saw_uart; + + saw_uart = 0; + for (i = 0; i < UART_NR; i++) { + struct uart_sunsu_port *up = &sunsu_ports[i]; + + if (up->su_type == SU_PORT_MS || + up->su_type == SU_PORT_KBD) { +#ifdef CONFIG_SERIO + if (up->serio) { + serio_unregister_port(up->serio); + up->serio = NULL; + } +#endif + } else if (up->port.type != PORT_UNKNOWN) { + uart_remove_one_port(&sunsu_reg, &up->port); + saw_uart++; + } + } + + if (saw_uart) uart_unregister_driver(&sunsu_reg); } -module_init(sunsu_init); +module_init(sunsu_probe); module_exit(sunsu_exit); - -MODULE_AUTHOR("Eddie C. Dost, Peter Zaitcev, and David S. Miller"); -MODULE_DESCRIPTION("Sun SU serial port driver"); -MODULE_VERSION("2.0"); MODULE_LICENSE("GPL"); diff --git a/trunk/drivers/serial/sunzilog.c b/trunk/drivers/serial/sunzilog.c index 9ee7f3af9ae2..9f42677287ad 100644 --- a/trunk/drivers/serial/sunzilog.c +++ b/trunk/drivers/serial/sunzilog.c @@ -1,4 +1,5 @@ -/* sunzilog.c: Zilog serial driver for Sparc systems. +/* + * sunzilog.c * * Driver for Zilog serial chips found on Sun workstations and * servers. This driver could actually be made more generic. @@ -9,9 +10,10 @@ * C. Dost, Pete Zaitcev, Ted Ts'o and Alex Buell for their * work there. * - * Copyright (C) 2002, 2006 David S. Miller (davem@davemloft.net) + * Copyright (C) 2002 David S. Miller (davem@redhat.com) */ +#include #include #include #include @@ -36,8 +38,10 @@ #include #include -#include -#include +#ifdef CONFIG_SPARC64 +#include +#endif +#include #if defined(CONFIG_SERIAL_SUNZILOG_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) #define SUPPORT_SYSRQ @@ -61,7 +65,7 @@ #define ZSDELAY() #define ZSDELAY_LONG() #define ZS_WSYNC(__channel) \ - readb(&((__channel)->control)) + sbus_readb(&((__channel)->control)) #endif static int num_sunzilog; @@ -103,7 +107,7 @@ struct uart_sunzilog_port { unsigned char prev_status; #ifdef CONFIG_SERIO - struct serio serio; + struct serio *serio; int serio_open; #endif }; @@ -134,9 +138,9 @@ static unsigned char read_zsreg(struct zilog_channel __iomem *channel, { unsigned char retval; - writeb(reg, &channel->control); + sbus_writeb(reg, &channel->control); ZSDELAY(); - retval = readb(&channel->control); + retval = sbus_readb(&channel->control); ZSDELAY(); return retval; @@ -145,9 +149,9 @@ static unsigned char read_zsreg(struct zilog_channel __iomem *channel, static void write_zsreg(struct zilog_channel __iomem *channel, unsigned char reg, unsigned char value) { - writeb(reg, &channel->control); + sbus_writeb(reg, &channel->control); ZSDELAY(); - writeb(value, &channel->control); + sbus_writeb(value, &channel->control); ZSDELAY(); } @@ -158,17 +162,17 @@ static void sunzilog_clear_fifo(struct zilog_channel __iomem *channel) for (i = 0; i < 32; i++) { unsigned char regval; - regval = readb(&channel->control); + regval = sbus_readb(&channel->control); ZSDELAY(); if (regval & Rx_CH_AV) break; regval = read_zsreg(channel, R1); - readb(&channel->data); + sbus_readb(&channel->data); ZSDELAY(); if (regval & (PAR_ERR | Rx_OVR | CRC_ERR)) { - writeb(ERR_RES, &channel->control); + sbus_writeb(ERR_RES, &channel->control); ZSDELAY(); ZS_WSYNC(channel); } @@ -190,7 +194,7 @@ static void __load_zsregs(struct zilog_channel __iomem *channel, unsigned char * udelay(100); } - writeb(ERR_RES, &channel->control); + sbus_writeb(ERR_RES, &channel->control); ZSDELAY(); ZS_WSYNC(channel); @@ -287,7 +291,7 @@ static void sunzilog_kbdms_receive_chars(struct uart_sunzilog_port *up, /* Stop-A is handled by drivers/char/keyboard.c now. */ #ifdef CONFIG_SERIO if (up->serio_open) - serio_interrupt(&up->serio, ch, 0, regs); + serio_interrupt(up->serio, ch, 0, regs); #endif } else if (ZS_IS_MOUSE(up)) { int ret = suncore_mouse_baud_detection(ch, is_break); @@ -302,7 +306,7 @@ static void sunzilog_kbdms_receive_chars(struct uart_sunzilog_port *up, case 0: #ifdef CONFIG_SERIO if (up->serio_open) - serio_interrupt(&up->serio, ch, 0, regs); + serio_interrupt(up->serio, ch, 0, regs); #endif break; }; @@ -326,12 +330,12 @@ sunzilog_receive_chars(struct uart_sunzilog_port *up, r1 = read_zsreg(channel, R1); if (r1 & (PAR_ERR | Rx_OVR | CRC_ERR)) { - writeb(ERR_RES, &channel->control); + sbus_writeb(ERR_RES, &channel->control); ZSDELAY(); ZS_WSYNC(channel); } - ch = readb(&channel->control); + ch = sbus_readb(&channel->control); ZSDELAY(); /* This funny hack depends upon BRK_ABRT not interfering @@ -343,7 +347,7 @@ sunzilog_receive_chars(struct uart_sunzilog_port *up, if (!(ch & Rx_CH_AV)) break; - ch = readb(&channel->data); + ch = sbus_readb(&channel->data); ZSDELAY(); ch &= up->parity_mask; @@ -402,10 +406,10 @@ static void sunzilog_status_handle(struct uart_sunzilog_port *up, { unsigned char status; - status = readb(&channel->control); + status = sbus_readb(&channel->control); ZSDELAY(); - writeb(RES_EXT_INT, &channel->control); + sbus_writeb(RES_EXT_INT, &channel->control); ZSDELAY(); ZS_WSYNC(channel); @@ -417,7 +421,7 @@ static void sunzilog_status_handle(struct uart_sunzilog_port *up, * confusing the PROM. */ while (1) { - status = readb(&channel->control); + status = sbus_readb(&channel->control); ZSDELAY(); if (!(status & BRK_ABRT)) break; @@ -454,7 +458,7 @@ static void sunzilog_transmit_chars(struct uart_sunzilog_port *up, struct circ_buf *xmit; if (ZS_IS_CONS(up)) { - unsigned char status = readb(&channel->control); + unsigned char status = sbus_readb(&channel->control); ZSDELAY(); /* TX still busy? Just wait for the next TX done interrupt. @@ -483,7 +487,7 @@ static void sunzilog_transmit_chars(struct uart_sunzilog_port *up, if (up->port.x_char) { up->flags |= SUNZILOG_FLAG_TX_ACTIVE; - writeb(up->port.x_char, &channel->data); + sbus_writeb(up->port.x_char, &channel->data); ZSDELAY(); ZS_WSYNC(channel); @@ -502,7 +506,7 @@ static void sunzilog_transmit_chars(struct uart_sunzilog_port *up, goto ack_tx_int; up->flags |= SUNZILOG_FLAG_TX_ACTIVE; - writeb(xmit->buf[xmit->tail], &channel->data); + sbus_writeb(xmit->buf[xmit->tail], &channel->data); ZSDELAY(); ZS_WSYNC(channel); @@ -515,7 +519,7 @@ static void sunzilog_transmit_chars(struct uart_sunzilog_port *up, return; ack_tx_int: - writeb(RES_Tx_P, &channel->control); + sbus_writeb(RES_Tx_P, &channel->control); ZSDELAY(); ZS_WSYNC(channel); } @@ -536,7 +540,7 @@ static irqreturn_t sunzilog_interrupt(int irq, void *dev_id, struct pt_regs *reg /* Channel A */ tty = NULL; if (r3 & (CHAEXT | CHATxIP | CHARxIP)) { - writeb(RES_H_IUS, &channel->control); + sbus_writeb(RES_H_IUS, &channel->control); ZSDELAY(); ZS_WSYNC(channel); @@ -559,7 +563,7 @@ static irqreturn_t sunzilog_interrupt(int irq, void *dev_id, struct pt_regs *reg spin_lock(&up->port.lock); tty = NULL; if (r3 & (CHBEXT | CHBTxIP | CHBRxIP)) { - writeb(RES_H_IUS, &channel->control); + sbus_writeb(RES_H_IUS, &channel->control); ZSDELAY(); ZS_WSYNC(channel); @@ -590,7 +594,7 @@ static __inline__ unsigned char sunzilog_read_channel_status(struct uart_port *p unsigned char status; channel = ZILOG_CHANNEL_FROM_PORT(port); - status = readb(&channel->control); + status = sbus_readb(&channel->control); ZSDELAY(); return status; @@ -678,7 +682,7 @@ static void sunzilog_start_tx(struct uart_port *port) up->flags |= SUNZILOG_FLAG_TX_ACTIVE; up->flags &= ~SUNZILOG_FLAG_TX_STOPPED; - status = readb(&channel->control); + status = sbus_readb(&channel->control); ZSDELAY(); /* TX busy? Just wait for the TX done interrupt. */ @@ -689,7 +693,7 @@ static void sunzilog_start_tx(struct uart_port *port) * IRQ sending engine. */ if (port->x_char) { - writeb(port->x_char, &channel->data); + sbus_writeb(port->x_char, &channel->data); ZSDELAY(); ZS_WSYNC(channel); @@ -698,7 +702,7 @@ static void sunzilog_start_tx(struct uart_port *port) } else { struct circ_buf *xmit = &port->info->xmit; - writeb(xmit->buf[xmit->tail], &channel->data); + sbus_writeb(xmit->buf[xmit->tail], &channel->data); ZSDELAY(); ZS_WSYNC(channel); @@ -775,7 +779,7 @@ static void __sunzilog_startup(struct uart_sunzilog_port *up) struct zilog_channel __iomem *channel; channel = ZILOG_CHANNEL_FROM_PORT(&up->port); - up->prev_status = readb(&channel->control); + up->prev_status = sbus_readb(&channel->control); /* Enable receiver and transmitter. */ up->curregs[R3] |= RxENAB; @@ -959,7 +963,7 @@ sunzilog_set_termios(struct uart_port *port, struct termios *termios, static const char *sunzilog_type(struct uart_port *port) { - return "zs"; + return "SunZilog"; } /* We do not request/release mappings of the registers here, this @@ -1008,6 +1012,7 @@ static struct uart_sunzilog_port *sunzilog_port_table; static struct zilog_layout __iomem **sunzilog_chip_regs; static struct uart_sunzilog_port *sunzilog_irq_chain; +static int zilog_irq = -1; static struct uart_driver sunzilog_reg = { .owner = THIS_MODULE, @@ -1016,47 +1021,232 @@ static struct uart_driver sunzilog_reg = { .major = TTY_MAJOR, }; -static int __init sunzilog_alloc_tables(void) +static void * __init alloc_one_table(unsigned long size) { - struct uart_sunzilog_port *up; - unsigned long size; - int i; + void *ret; - size = NUM_CHANNELS * sizeof(struct uart_sunzilog_port); - sunzilog_port_table = kzalloc(size, GFP_KERNEL); - if (!sunzilog_port_table) - return -ENOMEM; + ret = kmalloc(size, GFP_KERNEL); + if (ret != NULL) + memset(ret, 0, size); - for (i = 0; i < NUM_CHANNELS; i++) { - up = &sunzilog_port_table[i]; + return ret; +} + +static void __init sunzilog_alloc_tables(void) +{ + sunzilog_port_table = + alloc_one_table(NUM_CHANNELS * sizeof(struct uart_sunzilog_port)); + sunzilog_chip_regs = + alloc_one_table(NUM_SUNZILOG * sizeof(struct zilog_layout __iomem *)); + + if (sunzilog_port_table == NULL || sunzilog_chip_regs == NULL) { + prom_printf("SunZilog: Cannot allocate tables.\n"); + prom_halt(); + } +} - spin_lock_init(&up->port.lock); +#ifdef CONFIG_SPARC64 - if (i == 0) - sunzilog_irq_chain = up; +/* We used to attempt to use the address property of the Zilog device node + * but that totally is not necessary on sparc64. + */ +static struct zilog_layout __iomem * __init get_zs_sun4u(int chip, int zsnode) +{ + void __iomem *mapped_addr; + unsigned int sun4u_ino; + struct sbus_bus *sbus = NULL; + struct sbus_dev *sdev = NULL; + int err; - if (i < NUM_CHANNELS - 1) - up->next = up + 1; - else - up->next = NULL; + if (central_bus == NULL) { + for_each_sbus(sbus) { + for_each_sbusdev(sdev, sbus) { + if (sdev->prom_node == zsnode) + goto found; + } + } + } + found: + if (sdev == NULL && central_bus == NULL) { + prom_printf("SunZilog: sdev&¢ral == NULL for " + "Zilog %d in get_zs_sun4u.\n", chip); + prom_halt(); + } + if (central_bus == NULL) { + mapped_addr = + sbus_ioremap(&sdev->resource[0], 0, + PAGE_SIZE, + "Zilog Registers"); + } else { + struct linux_prom_registers zsregs[1]; + + err = prom_getproperty(zsnode, "reg", + (char *) &zsregs[0], + sizeof(zsregs)); + if (err == -1) { + prom_printf("SunZilog: Cannot map " + "Zilog %d regs on " + "central bus.\n", chip); + prom_halt(); + } + apply_fhc_ranges(central_bus->child, + &zsregs[0], 1); + apply_central_ranges(central_bus, &zsregs[0], 1); + mapped_addr = (void __iomem *) + ((((u64)zsregs[0].which_io)<<32UL) | + ((u64)zsregs[0].phys_addr)); } - size = NUM_SUNZILOG * sizeof(struct zilog_layout __iomem *); - sunzilog_chip_regs = kzalloc(size, GFP_KERNEL); - if (!sunzilog_chip_regs) { - kfree(sunzilog_port_table); - sunzilog_irq_chain = NULL; - return -ENOMEM; + if (zilog_irq == -1) { + if (central_bus) { + unsigned long iclr, imap; + + iclr = central_bus->child->fhc_regs.uregs + + FHC_UREGS_ICLR; + imap = central_bus->child->fhc_regs.uregs + + FHC_UREGS_IMAP; + zilog_irq = build_irq(0, iclr, imap); + } else { + err = prom_getproperty(zsnode, "interrupts", + (char *) &sun4u_ino, + sizeof(sun4u_ino)); + zilog_irq = sbus_build_irq(sbus_root, sun4u_ino); + } } - return 0; + return (struct zilog_layout __iomem *) mapped_addr; } +#else /* CONFIG_SPARC64 */ -static void sunzilog_free_tables(void) +/* + * XXX The sun4d case is utterly screwed: it tries to re-walk the tree + * (for the 3rd time) in order to find bootbus and cpu. Streamline it. + */ +static struct zilog_layout __iomem * __init get_zs_sun4cmd(int chip, int node) { - kfree(sunzilog_port_table); - sunzilog_irq_chain = NULL; - kfree(sunzilog_chip_regs); + struct linux_prom_irqs irq_info[2]; + void __iomem *mapped_addr = NULL; + int zsnode, cpunode, bbnode; + struct linux_prom_registers zsreg[4]; + struct resource res; + + if (sparc_cpu_model == sun4d) { + int walk; + + zsnode = 0; + bbnode = 0; + cpunode = 0; + for (walk = prom_getchild(prom_root_node); + (walk = prom_searchsiblings(walk, "cpu-unit")) != 0; + walk = prom_getsibling(walk)) { + bbnode = prom_getchild(walk); + if (bbnode && + (bbnode = prom_searchsiblings(bbnode, "bootbus"))) { + if ((zsnode = prom_getchild(bbnode)) == node) { + cpunode = walk; + break; + } + } + } + if (!walk) { + prom_printf("SunZilog: Cannot find the %d'th bootbus on sun4d.\n", + (chip / 2)); + prom_halt(); + } + + if (prom_getproperty(zsnode, "reg", + (char *) zsreg, sizeof(zsreg)) == -1) { + prom_printf("SunZilog: Cannot map Zilog %d\n", chip); + prom_halt(); + } + /* XXX Looks like an off by one? */ + prom_apply_generic_ranges(bbnode, cpunode, zsreg, 1); + res.start = zsreg[0].phys_addr; + res.end = res.start + (8 - 1); + res.flags = zsreg[0].which_io | IORESOURCE_IO; + mapped_addr = sbus_ioremap(&res, 0, 8, "Zilog Serial"); + + } else { + zsnode = node; + +#if 0 /* XXX When was this used? */ + if (prom_getintdefault(zsnode, "slave", -1) != chipid) { + zsnode = prom_getsibling(zsnode); + continue; + } +#endif + + /* + * "address" is only present on ports that OBP opened + * (from Mitch Bradley's "Hitchhiker's Guide to OBP"). + * We do not use it. + */ + + if (prom_getproperty(zsnode, "reg", + (char *) zsreg, sizeof(zsreg)) == -1) { + prom_printf("SunZilog: Cannot map Zilog %d\n", chip); + prom_halt(); + } + if (sparc_cpu_model == sun4m) /* Crude. Pass parent. XXX */ + prom_apply_obio_ranges(zsreg, 1); + res.start = zsreg[0].phys_addr; + res.end = res.start + (8 - 1); + res.flags = zsreg[0].which_io | IORESOURCE_IO; + mapped_addr = sbus_ioremap(&res, 0, 8, "Zilog Serial"); + } + + if (prom_getproperty(zsnode, "intr", + (char *) irq_info, sizeof(irq_info)) + % sizeof(struct linux_prom_irqs)) { + prom_printf("SunZilog: Cannot get IRQ property for Zilog %d.\n", + chip); + prom_halt(); + } + if (zilog_irq == -1) { + zilog_irq = irq_info[0].pri; + } else if (zilog_irq != irq_info[0].pri) { + /* XXX. Dumb. Should handle per-chip IRQ, for add-ons. */ + prom_printf("SunZilog: Inconsistent IRQ layout for Zilog %d.\n", + chip); + prom_halt(); + } + + return (struct zilog_layout __iomem *) mapped_addr; +} +#endif /* !(CONFIG_SPARC64) */ + +/* Get the address of the registers for SunZilog instance CHIP. */ +static struct zilog_layout __iomem * __init get_zs(int chip, int node) +{ + if (chip < 0 || chip >= NUM_SUNZILOG) { + prom_printf("SunZilog: Illegal chip number %d in get_zs.\n", chip); + prom_halt(); + } + +#ifdef CONFIG_SPARC64 + return get_zs_sun4u(chip, node); +#else + + if (sparc_cpu_model == sun4) { + struct resource res; + + /* Not probe-able, hard code it. */ + switch (chip) { + case 0: + res.start = 0xf1000000; + break; + case 1: + res.start = 0xf0000000; + break; + }; + zilog_irq = 12; + res.end = (res.start + (8 - 1)); + res.flags = IORESOURCE_IO; + return sbus_ioremap(&res, 0, 8, "SunZilog"); + } + + return get_zs_sun4cmd(chip, node); +#endif } #define ZS_PUT_CHAR_MAX_DELAY 2000 /* 10 ms */ @@ -1070,7 +1260,7 @@ static void sunzilog_putchar(struct uart_port *port, int ch) * udelay with ZSDELAY as that is a NOP on some platforms. -DaveM */ do { - unsigned char val = readb(&channel->control); + unsigned char val = sbus_readb(&channel->control); if (val & Tx_BUF_EMP) { ZSDELAY(); break; @@ -1078,7 +1268,7 @@ static void sunzilog_putchar(struct uart_port *port, int ch) udelay(5); } while (--loops); - writeb(ch, &channel->data); + sbus_writeb(ch, &channel->data); ZSDELAY(); ZS_WSYNC(channel); } @@ -1195,6 +1385,28 @@ static struct console sunzilog_console = { .data = &sunzilog_reg, }; +static int __init sunzilog_console_init(void) +{ + int i; + + if (con_is_present()) + return 0; + + for (i = 0; i < NUM_CHANNELS; i++) { + int this_minor = sunzilog_reg.minor + i; + + if ((this_minor - 64) == (serial_console - 1)) + break; + } + if (i == NUM_CHANNELS) + return 0; + + sunzilog_console.index = i; + sunzilog_port_table[i].flags |= SUNZILOG_FLAG_IS_CONS; + register_console(&sunzilog_console); + return 0; +} + static inline struct console *SUNZILOG_CONSOLE(void) { int i; @@ -1219,8 +1431,101 @@ static inline struct console *SUNZILOG_CONSOLE(void) #else #define SUNZILOG_CONSOLE() (NULL) +#define sunzilog_console_init() do { } while (0) #endif +/* + * We scan the PROM tree recursively. This is the most reliable way + * to find Zilog nodes on various platforms. However, we face an extreme + * shortage of kernel stack, so we must be very careful. To that end, + * we scan only to a certain depth, and we use a common property buffer + * in the scan structure. + */ +#define ZS_PROPSIZE 128 +#define ZS_SCAN_DEPTH 5 + +struct zs_probe_scan { + int depth; + void (*scanner)(struct zs_probe_scan *t, int node); + + int devices; + char prop[ZS_PROPSIZE]; +}; + +static int __inline__ sunzilog_node_ok(int node, const char *name, int len) +{ + if (strncmp(name, "zs", len) == 0) + return 1; + /* Don't fold this procedure just yet. Compare to su_node_ok(). */ + return 0; +} + +static void __init sunzilog_scan(struct zs_probe_scan *t, int node) +{ + int len; + + for (; node != 0; node = prom_getsibling(node)) { + len = prom_getproperty(node, "name", t->prop, ZS_PROPSIZE); + if (len <= 1) + continue; /* Broken PROM node */ + if (sunzilog_node_ok(node, t->prop, len)) { + (*t->scanner)(t, node); + } else { + if (t->depth < ZS_SCAN_DEPTH) { + t->depth++; + sunzilog_scan(t, prom_getchild(node)); + --t->depth; + } + } + } +} + +static void __init sunzilog_prepare(void) +{ + struct uart_sunzilog_port *up; + struct zilog_layout __iomem *rp; + int channel, chip; + + /* + * Temporary fix. + */ + for (channel = 0; channel < NUM_CHANNELS; channel++) + spin_lock_init(&sunzilog_port_table[channel].port.lock); + + sunzilog_irq_chain = up = &sunzilog_port_table[0]; + for (channel = 0; channel < NUM_CHANNELS - 1; channel++) + up[channel].next = &up[channel + 1]; + up[channel].next = NULL; + + for (chip = 0; chip < NUM_SUNZILOG; chip++) { + rp = sunzilog_chip_regs[chip]; + up[(chip * 2) + 0].port.membase = (void __iomem *)&rp->channelA; + up[(chip * 2) + 1].port.membase = (void __iomem *)&rp->channelB; + + /* Channel A */ + up[(chip * 2) + 0].port.iotype = UPIO_MEM; + up[(chip * 2) + 0].port.irq = zilog_irq; + up[(chip * 2) + 0].port.uartclk = ZS_CLOCK; + up[(chip * 2) + 0].port.fifosize = 1; + up[(chip * 2) + 0].port.ops = &sunzilog_pops; + up[(chip * 2) + 0].port.type = PORT_SUNZILOG; + up[(chip * 2) + 0].port.flags = 0; + up[(chip * 2) + 0].port.line = (chip * 2) + 0; + up[(chip * 2) + 0].flags |= SUNZILOG_FLAG_IS_CHANNEL_A; + + /* Channel B */ + up[(chip * 2) + 1].port.iotype = UPIO_MEM; + up[(chip * 2) + 1].port.irq = zilog_irq; + up[(chip * 2) + 1].port.uartclk = ZS_CLOCK; + up[(chip * 2) + 1].port.fifosize = 1; + up[(chip * 2) + 1].port.ops = &sunzilog_pops; + up[(chip * 2) + 1].port.type = PORT_SUNZILOG; + up[(chip * 2) + 1].port.flags = 0; + up[(chip * 2) + 1].port.line = (chip * 2) + 1; + up[(chip * 2) + 1].flags |= 0; + } +} + static void __init sunzilog_init_kbdms(struct uart_sunzilog_port *up, int channel) { int baud, brg; @@ -1234,6 +1539,8 @@ static void __init sunzilog_init_kbdms(struct uart_sunzilog_port *up, int channe up->cflag = B4800 | CS8 | CLOCAL | CREAD; baud = 4800; } + printk(KERN_INFO "zs%d at 0x%p (irq = %d) is a SunZilog\n", + channel, up->port.membase, zilog_irq); up->curregs[R15] = BRKIE; brg = BPS_TO_BRG(baud, ZS_CLOCK / ZS_CLOCK_DIVISOR); @@ -1245,268 +1552,216 @@ static void __init sunzilog_init_kbdms(struct uart_sunzilog_port *up, int channe #ifdef CONFIG_SERIO static void __init sunzilog_register_serio(struct uart_sunzilog_port *up, int channel) { - struct serio *serio = &up->serio; + struct serio *serio; - serio->port_data = up; + up->serio = serio = kmalloc(sizeof(struct serio), GFP_KERNEL); + if (serio) { + memset(serio, 0, sizeof(*serio)); - serio->id.type = SERIO_RS232; - if (channel == KEYBOARD_LINE) { - serio->id.proto = SERIO_SUNKBD; - strlcpy(serio->name, "zskbd", sizeof(serio->name)); - } else { - serio->id.proto = SERIO_SUN; - serio->id.extra = 1; - strlcpy(serio->name, "zsms", sizeof(serio->name)); - } - strlcpy(serio->phys, - (channel == KEYBOARD_LINE ? "zs/serio0" : "zs/serio1"), - sizeof(serio->phys)); + serio->port_data = up; + + serio->id.type = SERIO_RS232; + if (channel == KEYBOARD_LINE) { + serio->id.proto = SERIO_SUNKBD; + strlcpy(serio->name, "zskbd", sizeof(serio->name)); + } else { + serio->id.proto = SERIO_SUN; + serio->id.extra = 1; + strlcpy(serio->name, "zsms", sizeof(serio->name)); + } + strlcpy(serio->phys, + (channel == KEYBOARD_LINE ? "zs/serio0" : "zs/serio1"), + sizeof(serio->phys)); - serio->write = sunzilog_serio_write; - serio->open = sunzilog_serio_open; - serio->close = sunzilog_serio_close; - serio->dev.parent = up->port.dev; + serio->write = sunzilog_serio_write; + serio->open = sunzilog_serio_open; + serio->close = sunzilog_serio_close; - serio_register_port(serio); + serio_register_port(serio); + } else { + printk(KERN_WARNING "zs%d: not enough memory for serio port\n", + channel); + } } #endif -static void __init sunzilog_init_hw(struct uart_sunzilog_port *up) +static void __init sunzilog_init_hw(void) { - struct zilog_channel __iomem *channel; - unsigned long flags; - int baud, brg; + int i; - channel = ZILOG_CHANNEL_FROM_PORT(&up->port); + for (i = 0; i < NUM_CHANNELS; i++) { + struct uart_sunzilog_port *up = &sunzilog_port_table[i]; + struct zilog_channel __iomem *channel = ZILOG_CHANNEL_FROM_PORT(&up->port); + unsigned long flags; + int baud, brg; - spin_lock_irqsave(&up->port.lock, flags); - if (ZS_IS_CHANNEL_A(up)) { - write_zsreg(channel, R9, FHWRES); - ZSDELAY_LONG(); - (void) read_zsreg(channel, R0); - } + spin_lock_irqsave(&up->port.lock, flags); - if (up->port.line == KEYBOARD_LINE || - up->port.line == MOUSE_LINE) { - sunzilog_init_kbdms(up, up->port.line); - up->curregs[R9] |= (NV | MIE); - write_zsreg(channel, R9, up->curregs[R9]); - } else { - /* Normal serial TTY. */ - up->parity_mask = 0xff; - up->curregs[R1] = EXT_INT_ENAB | INT_ALL_Rx | TxINT_ENAB; - up->curregs[R4] = PAR_EVEN | X16CLK | SB1; - up->curregs[R3] = RxENAB | Rx8; - up->curregs[R5] = TxENAB | Tx8; - up->curregs[R9] = NV | MIE; - up->curregs[R10] = NRZ; - up->curregs[R11] = TCBR | RCBR; - baud = 9600; - brg = BPS_TO_BRG(baud, ZS_CLOCK / ZS_CLOCK_DIVISOR); - up->curregs[R12] = (brg & 0xff); - up->curregs[R13] = (brg >> 8) & 0xff; - up->curregs[R14] = BRSRC | BRENAB; - __load_zsregs(channel, up->curregs); - write_zsreg(channel, R9, up->curregs[R9]); - } + if (ZS_IS_CHANNEL_A(up)) { + write_zsreg(channel, R9, FHWRES); + ZSDELAY_LONG(); + (void) read_zsreg(channel, R0); + } - spin_unlock_irqrestore(&up->port.lock, flags); + if (i == KEYBOARD_LINE || i == MOUSE_LINE) { + sunzilog_init_kbdms(up, i); + up->curregs[R9] |= (NV | MIE); + write_zsreg(channel, R9, up->curregs[R9]); + } else { + /* Normal serial TTY. */ + up->parity_mask = 0xff; + up->curregs[R1] = EXT_INT_ENAB | INT_ALL_Rx | TxINT_ENAB; + up->curregs[R4] = PAR_EVEN | X16CLK | SB1; + up->curregs[R3] = RxENAB | Rx8; + up->curregs[R5] = TxENAB | Tx8; + up->curregs[R9] = NV | MIE; + up->curregs[R10] = NRZ; + up->curregs[R11] = TCBR | RCBR; + baud = 9600; + brg = BPS_TO_BRG(baud, ZS_CLOCK / ZS_CLOCK_DIVISOR); + up->curregs[R12] = (brg & 0xff); + up->curregs[R13] = (brg >> 8) & 0xff; + up->curregs[R14] = BRSRC | BRENAB; + __load_zsregs(channel, up->curregs); + write_zsreg(channel, R9, up->curregs[R9]); + } + + spin_unlock_irqrestore(&up->port.lock, flags); #ifdef CONFIG_SERIO - if (up->port.line == KEYBOARD_LINE || up->port.line == MOUSE_LINE) - sunzilog_register_serio(up, up->port.line); + if (i == KEYBOARD_LINE || i == MOUSE_LINE) + sunzilog_register_serio(up, i); #endif + } } -static int __devinit zs_get_instance(struct device_node *dp) +static struct zilog_layout __iomem * __init get_zs(int chip, int node); + +static void __init sunzilog_scan_probe(struct zs_probe_scan *t, int node) { - int ret; + sunzilog_chip_regs[t->devices] = get_zs(t->devices, node); + t->devices++; +} - ret = of_getintprop_default(dp, "slave", -1); - if (ret != -1) - return ret; +static int __init sunzilog_ports_init(void) +{ + struct zs_probe_scan scan; + int ret; + int uart_count; + int i; - if (of_find_property(dp, "keyboard", NULL)) - ret = 1; - else - ret = 0; + printk(KERN_DEBUG "SunZilog: %d chips.\n", NUM_SUNZILOG); - return ret; -} + scan.scanner = sunzilog_scan_probe; + scan.depth = 0; + scan.devices = 0; + sunzilog_scan(&scan, prom_getchild(prom_root_node)); -static int zilog_irq = -1; + sunzilog_prepare(); -static int __devinit zs_probe(struct of_device *dev, const struct of_device_id *match) -{ - struct of_device *op = to_of_device(&dev->dev); - struct uart_sunzilog_port *up; - struct zilog_layout __iomem *rp; - int inst = zs_get_instance(dev->node); - int err; + if (request_irq(zilog_irq, sunzilog_interrupt, SA_SHIRQ, + "SunZilog", sunzilog_irq_chain)) { + prom_printf("SunZilog: Unable to register zs interrupt handler.\n"); + prom_halt(); + } - sunzilog_chip_regs[inst] = of_ioremap(&op->resource[0], 0, - sizeof(struct zilog_layout), - "zs"); - if (!sunzilog_chip_regs[inst]) - return -ENOMEM; + sunzilog_init_hw(); - rp = sunzilog_chip_regs[inst]; + /* We can only init this once we have probed the Zilogs + * in the system. Do not count channels assigned to keyboards + * or mice when we are deciding how many ports to register. + */ + uart_count = 0; + for (i = 0; i < NUM_CHANNELS; i++) { + struct uart_sunzilog_port *up = &sunzilog_port_table[i]; - if (zilog_irq == -1) { - zilog_irq = op->irqs[0]; - err = request_irq(zilog_irq, sunzilog_interrupt, SA_SHIRQ, - "zs", sunzilog_irq_chain); - if (err) { - of_iounmap(rp, sizeof(struct zilog_layout)); + if (ZS_IS_KEYB(up) || ZS_IS_MOUSE(up)) + continue; - return err; - } + uart_count++; } + + sunzilog_reg.nr = uart_count; + sunzilog_reg.minor = sunserial_current_minor; - up = &sunzilog_port_table[inst * 2]; - - /* Channel A */ - up[0].port.mapbase = op->resource[0].start + 0x00; - up[0].port.membase = (void __iomem *) &rp->channelA; - up[0].port.iotype = UPIO_MEM; - up[0].port.irq = op->irqs[0]; - up[0].port.uartclk = ZS_CLOCK; - up[0].port.fifosize = 1; - up[0].port.ops = &sunzilog_pops; - up[0].port.type = PORT_SUNZILOG; - up[0].port.flags = 0; - up[0].port.line = (inst * 2) + 0; - up[0].port.dev = &op->dev; - up[0].flags |= SUNZILOG_FLAG_IS_CHANNEL_A; - if (inst == 1) - up[0].flags |= SUNZILOG_FLAG_CONS_KEYB; - sunzilog_init_hw(&up[0]); - - /* Channel B */ - up[1].port.mapbase = op->resource[0].start + 0x04; - up[1].port.membase = (void __iomem *) &rp->channelB; - up[1].port.iotype = UPIO_MEM; - up[1].port.irq = op->irqs[0]; - up[1].port.uartclk = ZS_CLOCK; - up[1].port.fifosize = 1; - up[1].port.ops = &sunzilog_pops; - up[1].port.type = PORT_SUNZILOG; - up[1].port.flags = 0; - up[1].port.line = (inst * 2) + 1; - up[1].port.dev = &op->dev; - up[1].flags |= 0; - if (inst == 1) - up[1].flags |= SUNZILOG_FLAG_CONS_MOUSE; - sunzilog_init_hw(&up[1]); - - if (inst != 1) { - err = uart_add_one_port(&sunzilog_reg, &up[0].port); - if (err) { - of_iounmap(rp, sizeof(struct zilog_layout)); - return err; - } - err = uart_add_one_port(&sunzilog_reg, &up[1].port); - if (err) { - uart_remove_one_port(&sunzilog_reg, &up[0].port); - of_iounmap(rp, sizeof(struct zilog_layout)); - return err; + ret = uart_register_driver(&sunzilog_reg); + if (ret == 0) { + sunzilog_reg.tty_driver->name_base = sunzilog_reg.minor - 64; + sunzilog_reg.cons = SUNZILOG_CONSOLE(); + + sunserial_current_minor += uart_count; + + for (i = 0; i < NUM_CHANNELS; i++) { + struct uart_sunzilog_port *up = &sunzilog_port_table[i]; + + if (ZS_IS_KEYB(up) || ZS_IS_MOUSE(up)) + continue; + + if (uart_add_one_port(&sunzilog_reg, &up->port)) { + printk(KERN_ERR + "SunZilog: failed to add port zs%d\n", i); + } } } - dev_set_drvdata(&dev->dev, &up[0]); - - return 0; + return ret; } -static void __devexit zs_remove_one(struct uart_sunzilog_port *up) +static void __init sunzilog_scan_count(struct zs_probe_scan *t, int node) { - if (ZS_IS_KEYB(up) || ZS_IS_MOUSE(up)) { -#ifdef CONFIG_SERIO - serio_unregister_port(&up->serio); -#endif - } else - uart_remove_one_port(&sunzilog_reg, &up->port); + t->devices++; } -static int __devexit zs_remove(struct of_device *dev) +static int __init sunzilog_ports_count(void) { - struct uart_sunzilog_port *up = dev_get_drvdata(&dev->dev); - struct zilog_layout __iomem *regs; + struct zs_probe_scan scan; - zs_remove_one(&up[0]); - zs_remove_one(&up[1]); + /* Sun4 Zilog setup is hard coded, no probing to do. */ + if (sparc_cpu_model == sun4) + return 2; - regs = sunzilog_chip_regs[up[0].port.line / 2]; - of_iounmap(regs, sizeof(struct zilog_layout)); + scan.scanner = sunzilog_scan_count; + scan.depth = 0; + scan.devices = 0; - dev_set_drvdata(&dev->dev, NULL); + sunzilog_scan(&scan, prom_getchild(prom_root_node)); - return 0; + return scan.devices; } -static struct of_device_id zs_match[] = { - { - .name = "zs", - }, - {}, -}; -MODULE_DEVICE_TABLE(of, zs_match); - -static struct of_platform_driver zs_driver = { - .name = "zs", - .match_table = zs_match, - .probe = zs_probe, - .remove = __devexit_p(zs_remove), -}; - static int __init sunzilog_init(void) { - struct device_node *dp; - int err; - - NUM_SUNZILOG = 0; - for_each_node_by_name(dp, "zs") - NUM_SUNZILOG++; - if (NUM_SUNZILOG) { - int uart_count; + NUM_SUNZILOG = sunzilog_ports_count(); + if (NUM_SUNZILOG == 0) + return -ENODEV; - err = sunzilog_alloc_tables(); - if (err) - return err; + sunzilog_alloc_tables(); - /* Subtract 1 for keyboard, 1 for mouse. */ - uart_count = (NUM_SUNZILOG * 2) - 2; + sunzilog_ports_init(); - sunzilog_reg.nr = uart_count; - sunzilog_reg.minor = sunserial_current_minor; - err = uart_register_driver(&sunzilog_reg); - if (err) { - sunzilog_free_tables(); - return err; - } - sunzilog_reg.tty_driver->name_base = sunzilog_reg.minor - 64; - sunzilog_reg.cons = SUNZILOG_CONSOLE(); - - sunserial_current_minor += uart_count; - } - - return of_register_driver(&zs_driver, &of_bus_type); + return 0; } static void __exit sunzilog_exit(void) { - of_unregister_driver(&zs_driver); + int i; - if (zilog_irq != -1) { - free_irq(zilog_irq, sunzilog_irq_chain); - zilog_irq = -1; - } + for (i = 0; i < NUM_CHANNELS; i++) { + struct uart_sunzilog_port *up = &sunzilog_port_table[i]; - if (NUM_SUNZILOG) { - uart_unregister_driver(&sunzilog_reg); - sunzilog_free_tables(); + if (ZS_IS_KEYB(up) || ZS_IS_MOUSE(up)) { +#ifdef CONFIG_SERIO + if (up->serio) { + serio_unregister_port(up->serio); + up->serio = NULL; + } +#endif + } else + uart_remove_one_port(&sunzilog_reg, &up->port); } + + uart_unregister_driver(&sunzilog_reg); } module_init(sunzilog_init); @@ -1514,5 +1769,4 @@ module_exit(sunzilog_exit); MODULE_AUTHOR("David S. Miller"); MODULE_DESCRIPTION("Sun Zilog serial port driver"); -MODULE_VERSION("2.0"); MODULE_LICENSE("GPL"); diff --git a/trunk/drivers/serial/vr41xx_siu.c b/trunk/drivers/serial/vr41xx_siu.c index e93d0edc2e08..017571ffa19c 100644 --- a/trunk/drivers/serial/vr41xx_siu.c +++ b/trunk/drivers/serial/vr41xx_siu.c @@ -19,6 +19,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #if defined(CONFIG_SERIAL_VR41XX_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) #define SUPPORT_SYSRQ diff --git a/trunk/drivers/sn/ioc3.c b/trunk/drivers/sn/ioc3.c index 0040f10c9e39..ed946311d3a4 100644 --- a/trunk/drivers/sn/ioc3.c +++ b/trunk/drivers/sn/ioc3.c @@ -7,6 +7,7 @@ * Pat Gefre - IOC3 serial port IRQ demuxer */ +#include #include #include #include diff --git a/trunk/drivers/spi/spi_bitbang.c b/trunk/drivers/spi/spi_bitbang.c index a23862ef72b2..dd2f950b21a7 100644 --- a/trunk/drivers/spi/spi_bitbang.c +++ b/trunk/drivers/spi/spi_bitbang.c @@ -16,6 +16,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include #include #include diff --git a/trunk/drivers/spi/spi_butterfly.c b/trunk/drivers/spi/spi_butterfly.c index 39d9b20f2038..a006a1ee27ac 100644 --- a/trunk/drivers/spi/spi_butterfly.c +++ b/trunk/drivers/spi/spi_butterfly.c @@ -17,6 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/drivers/tc/lk201.c b/trunk/drivers/tc/lk201.c index 757dec9c7ee9..cf10d5cdfb93 100644 --- a/trunk/drivers/tc/lk201.c +++ b/trunk/drivers/tc/lk201.c @@ -8,6 +8,7 @@ * Copyright (C) 2001, 2002, 2003, 2004 Maciej W. Rozycki */ +#include #include #include diff --git a/trunk/drivers/tc/zs.c b/trunk/drivers/tc/zs.c index 93bc90b8ff92..7f27b356eaf7 100644 --- a/trunk/drivers/tc/zs.c +++ b/trunk/drivers/tc/zs.c @@ -39,6 +39,7 @@ * is shared with DSRS(DTE) at pin 23. */ +#include #include #include #include diff --git a/trunk/drivers/usb/core/buffer.c b/trunk/drivers/usb/core/buffer.c index f4f4ef0f377a..ad742cec94fa 100644 --- a/trunk/drivers/usb/core/buffer.c +++ b/trunk/drivers/usb/core/buffer.c @@ -5,6 +5,7 @@ * and should work with all USB controllers, regardles of bus type. */ +#include #include #include #include diff --git a/trunk/drivers/usb/core/config.c b/trunk/drivers/usb/core/config.c index 4c9e63e665b6..a9d89c78cc20 100644 --- a/trunk/drivers/usb/core/config.c +++ b/trunk/drivers/usb/core/config.c @@ -1,3 +1,4 @@ +#include #include #include #include diff --git a/trunk/drivers/usb/core/devio.c b/trunk/drivers/usb/core/devio.c index f7bdd94b3aa8..bcbeaf7101d1 100644 --- a/trunk/drivers/usb/core/devio.c +++ b/trunk/drivers/usb/core/devio.c @@ -47,7 +47,6 @@ #include #include #include -#include #include #include #include @@ -69,7 +68,6 @@ struct async { void __user *userbuffer; void __user *userurb; struct urb *urb; - u32 secid; }; static int usbfs_snoop = 0; @@ -314,7 +312,7 @@ static void async_completed(struct urb *urb, struct pt_regs *regs) sinfo.si_code = SI_ASYNCIO; sinfo.si_addr = as->userurb; kill_proc_info_as_uid(as->signr, &sinfo, as->pid, as->uid, - as->euid, as->secid); + as->euid); } snoop(&urb->dev->dev, "urb complete\n"); snoop_urb(urb, as->userurb); @@ -574,7 +572,6 @@ static int usbdev_open(struct inode *inode, struct file *file) ps->disc_euid = current->euid; ps->disccontext = NULL; ps->ifclaimed = 0; - security_task_getsecid(current, &ps->secid); wmb(); list_add_tail(&ps->list, &dev->filelist); file->private_data = ps; @@ -1056,7 +1053,6 @@ static int proc_do_submiturb(struct dev_state *ps, struct usbdevfs_urb *uurb, as->pid = current->pid; as->uid = current->uid; as->euid = current->euid; - security_task_getsecid(current, &as->secid); if (!(uurb->endpoint & USB_DIR_IN)) { if (copy_from_user(as->urb->transfer_buffer, uurb->buffer, as->urb->transfer_buffer_length)) { free_async(as); diff --git a/trunk/drivers/usb/core/driver.c b/trunk/drivers/usb/core/driver.c index ec8906501415..c196f3845305 100644 --- a/trunk/drivers/usb/core/driver.c +++ b/trunk/drivers/usb/core/driver.c @@ -21,6 +21,7 @@ * */ +#include #include #include #include "hcd.h" diff --git a/trunk/drivers/usb/core/file.c b/trunk/drivers/usb/core/file.c index abee0f5b6a66..f65b193cde3d 100644 --- a/trunk/drivers/usb/core/file.c +++ b/trunk/drivers/usb/core/file.c @@ -15,6 +15,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/usb/core/hcd-pci.c b/trunk/drivers/usb/core/hcd-pci.c index 9d16716d166e..66b78404ab34 100644 --- a/trunk/drivers/usb/core/hcd-pci.c +++ b/trunk/drivers/usb/core/hcd-pci.c @@ -16,6 +16,7 @@ * Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/drivers/usb/core/hcd.c b/trunk/drivers/usb/core/hcd.c index fb4d058bbde0..4bf914d00a14 100644 --- a/trunk/drivers/usb/core/hcd.c +++ b/trunk/drivers/usb/core/hcd.c @@ -22,6 +22,7 @@ * Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/drivers/usb/core/hub.c b/trunk/drivers/usb/core/hub.c index 875596e98e42..e1731ff8af4d 100644 --- a/trunk/drivers/usb/core/hub.c +++ b/trunk/drivers/usb/core/hub.c @@ -8,6 +8,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/usb/core/inode.c b/trunk/drivers/usb/core/inode.c index e47e3a8ed6e4..bfc9b28a7242 100644 --- a/trunk/drivers/usb/core/inode.c +++ b/trunk/drivers/usb/core/inode.c @@ -27,6 +27,7 @@ /*****************************************************************************/ +#include #include #include #include @@ -699,7 +700,7 @@ static void usbfs_remove_device(struct usb_device *dev) sinfo.si_errno = EPIPE; sinfo.si_code = SI_ASYNCIO; sinfo.si_addr = ds->disccontext; - kill_proc_info_as_uid(ds->discsignr, &sinfo, ds->disc_pid, ds->disc_uid, ds->disc_euid, ds->secid); + kill_proc_info_as_uid(ds->discsignr, &sinfo, ds->disc_pid, ds->disc_uid, ds->disc_euid); } } } diff --git a/trunk/drivers/usb/core/message.c b/trunk/drivers/usb/core/message.c index 4cc8d3e67db7..8569600f3130 100644 --- a/trunk/drivers/usb/core/message.c +++ b/trunk/drivers/usb/core/message.c @@ -2,6 +2,7 @@ * message.c - synchronous message handling */ +#include #include /* for scatterlist macros */ #include #include diff --git a/trunk/drivers/usb/core/notify.c b/trunk/drivers/usb/core/notify.c index b042676af0a5..fe0ed54fa0ae 100644 --- a/trunk/drivers/usb/core/notify.c +++ b/trunk/drivers/usb/core/notify.c @@ -9,6 +9,7 @@ */ +#include #include #include #include diff --git a/trunk/drivers/usb/core/sysfs.c b/trunk/drivers/usb/core/sysfs.c index dec973affb0f..3f49bf51cff7 100644 --- a/trunk/drivers/usb/core/sysfs.c +++ b/trunk/drivers/usb/core/sysfs.c @@ -10,6 +10,7 @@ */ +#include #include #include #include "usb.h" diff --git a/trunk/drivers/usb/core/urb.c b/trunk/drivers/usb/core/urb.c index 9864988377c7..dad4d8fd8180 100644 --- a/trunk/drivers/usb/core/urb.c +++ b/trunk/drivers/usb/core/urb.c @@ -1,3 +1,4 @@ +#include #include #include #include diff --git a/trunk/drivers/usb/core/usb.c b/trunk/drivers/usb/core/usb.c index 184c24660a4c..fb488c8a860c 100644 --- a/trunk/drivers/usb/core/usb.c +++ b/trunk/drivers/usb/core/usb.c @@ -21,6 +21,7 @@ * are evil. */ +#include #include #include #include diff --git a/trunk/drivers/usb/core/usb.h b/trunk/drivers/usb/core/usb.h index 49f69236b420..7a650c763a62 100644 --- a/trunk/drivers/usb/core/usb.h +++ b/trunk/drivers/usb/core/usb.h @@ -80,7 +80,6 @@ struct dev_state { uid_t disc_uid, disc_euid; void __user *disccontext; unsigned long ifclaimed; - u32 secid; }; /* internal notify stuff */ diff --git a/trunk/drivers/usb/gadget/at91_udc.c b/trunk/drivers/usb/gadget/at91_udc.c index acb3c3d2e888..b8d0b7825bf3 100644 --- a/trunk/drivers/usb/gadget/at91_udc.c +++ b/trunk/drivers/usb/gadget/at91_udc.c @@ -25,6 +25,7 @@ #undef VERBOSE #undef PACKET_TRACE +#include #include #include #include diff --git a/trunk/drivers/usb/gadget/dummy_hcd.c b/trunk/drivers/usb/gadget/dummy_hcd.c index 4be47195bd38..42ce41d71b7f 100644 --- a/trunk/drivers/usb/gadget/dummy_hcd.c +++ b/trunk/drivers/usb/gadget/dummy_hcd.c @@ -36,6 +36,7 @@ #define DEBUG +#include #include #include #include diff --git a/trunk/drivers/usb/gadget/ether.c b/trunk/drivers/usb/gadget/ether.c index 8320fcef0425..078daa026718 100644 --- a/trunk/drivers/usb/gadget/ether.c +++ b/trunk/drivers/usb/gadget/ether.c @@ -23,6 +23,7 @@ // #define DEBUG 1 // #define VERBOSE +#include #include #include #include diff --git a/trunk/drivers/usb/gadget/file_storage.c b/trunk/drivers/usb/gadget/file_storage.c index b1a9cf06f3e6..a43dc908ac59 100644 --- a/trunk/drivers/usb/gadget/file_storage.c +++ b/trunk/drivers/usb/gadget/file_storage.c @@ -221,6 +221,7 @@ #undef VERBOSE #undef DUMP_MSGS +#include #include #include diff --git a/trunk/drivers/usb/gadget/goku_udc.c b/trunk/drivers/usb/gadget/goku_udc.c index 3f827ded8cdf..5378c1757292 100644 --- a/trunk/drivers/usb/gadget/goku_udc.c +++ b/trunk/drivers/usb/gadget/goku_udc.c @@ -24,6 +24,7 @@ // #define VERBOSE /* extra debug messages (success too) */ // #define USB_TRACE /* packet-level success messages */ +#include #include #include #include diff --git a/trunk/drivers/usb/gadget/lh7a40x_udc.h b/trunk/drivers/usb/gadget/lh7a40x_udc.h index e3bb78524c88..9b2e6f7cbb8b 100644 --- a/trunk/drivers/usb/gadget/lh7a40x_udc.h +++ b/trunk/drivers/usb/gadget/lh7a40x_udc.h @@ -24,6 +24,7 @@ #ifndef __LH7A40X_H_ #define __LH7A40X_H_ +#include #include #include #include diff --git a/trunk/drivers/usb/gadget/net2280.c b/trunk/drivers/usb/gadget/net2280.c index 570996d7eb34..1facdea56a8a 100644 --- a/trunk/drivers/usb/gadget/net2280.c +++ b/trunk/drivers/usb/gadget/net2280.c @@ -46,6 +46,7 @@ #undef DEBUG /* messages on error and most fault paths */ #undef VERBOSE /* extra debug messages (success too) */ +#include #include #include #include diff --git a/trunk/drivers/usb/gadget/omap_udc.c b/trunk/drivers/usb/gadget/omap_udc.c index 0d642ac70055..fbea51448909 100644 --- a/trunk/drivers/usb/gadget/omap_udc.c +++ b/trunk/drivers/usb/gadget/omap_udc.c @@ -22,6 +22,7 @@ #undef DEBUG #undef VERBOSE +#include #include #include #include diff --git a/trunk/drivers/usb/gadget/pxa2xx_udc.c b/trunk/drivers/usb/gadget/pxa2xx_udc.c index c88650dffdeb..735e9dbd39fd 100644 --- a/trunk/drivers/usb/gadget/pxa2xx_udc.c +++ b/trunk/drivers/usb/gadget/pxa2xx_udc.c @@ -27,6 +27,7 @@ #undef DEBUG // #define VERBOSE DBG_VERBOSE +#include #include #include #include diff --git a/trunk/drivers/usb/gadget/rndis.c b/trunk/drivers/usb/gadget/rndis.c index 354670d12308..3ff6db7828a0 100644 --- a/trunk/drivers/usb/gadget/rndis.c +++ b/trunk/drivers/usb/gadget/rndis.c @@ -23,6 +23,7 @@ * updates to merge with Linux 2.6, better match RNDIS spec */ +#include #include #include #include diff --git a/trunk/drivers/usb/gadget/serial.c b/trunk/drivers/usb/gadget/serial.c index 30d7664d449d..416acac879df 100644 --- a/trunk/drivers/usb/gadget/serial.c +++ b/trunk/drivers/usb/gadget/serial.c @@ -17,6 +17,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/usb/gadget/zero.c b/trunk/drivers/usb/gadget/zero.c index 3a08a7ab4ce0..68e3d8f5da89 100644 --- a/trunk/drivers/usb/gadget/zero.c +++ b/trunk/drivers/usb/gadget/zero.c @@ -62,6 +62,7 @@ #define DEBUG 1 // #define VERBOSE +#include #include #include #include diff --git a/trunk/drivers/usb/host/ehci-hcd.c b/trunk/drivers/usb/host/ehci-hcd.c index cee6f538de0a..9b37e508ada3 100644 --- a/trunk/drivers/usb/host/ehci-hcd.c +++ b/trunk/drivers/usb/host/ehci-hcd.c @@ -16,6 +16,7 @@ * Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/drivers/usb/host/hc_crisv10.c b/trunk/drivers/usb/host/hc_crisv10.c index 61e571782cf7..4a22909518f5 100644 --- a/trunk/drivers/usb/host/hc_crisv10.c +++ b/trunk/drivers/usb/host/hc_crisv10.c @@ -4,6 +4,7 @@ * Copyright (c) 2002, 2003 Axis Communications AB. */ +#include #include #include #include diff --git a/trunk/drivers/usb/host/ohci-hcd.c b/trunk/drivers/usb/host/ohci-hcd.c index 8fb842ed5f6e..73f5a379d9b3 100644 --- a/trunk/drivers/usb/host/ohci-hcd.c +++ b/trunk/drivers/usb/host/ohci-hcd.c @@ -74,6 +74,7 @@ * This file is licenced under the GPL. */ +#include #include #include #include diff --git a/trunk/drivers/usb/host/pci-quirks.c b/trunk/drivers/usb/host/pci-quirks.c index dff60568b4a1..1045f846fbe2 100644 --- a/trunk/drivers/usb/host/pci-quirks.c +++ b/trunk/drivers/usb/host/pci-quirks.c @@ -8,6 +8,7 @@ * (and others) */ +#include #include #include #include diff --git a/trunk/drivers/usb/host/sl811-hcd.c b/trunk/drivers/usb/host/sl811-hcd.c index c327168255cd..89bcda5a3298 100644 --- a/trunk/drivers/usb/host/sl811-hcd.c +++ b/trunk/drivers/usb/host/sl811-hcd.c @@ -31,6 +31,7 @@ #undef VERBOSE #undef PACKET_TRACE +#include #include #include #include diff --git a/trunk/drivers/usb/host/uhci-debug.c b/trunk/drivers/usb/host/uhci-debug.c index dc286a48cafd..6637a0e49978 100644 --- a/trunk/drivers/usb/host/uhci-debug.c +++ b/trunk/drivers/usb/host/uhci-debug.c @@ -9,6 +9,7 @@ * (C) Copyright 1999-2001 Johannes Erdfelt */ +#include #include #include #include diff --git a/trunk/drivers/usb/host/uhci-hcd.c b/trunk/drivers/usb/host/uhci-hcd.c index 4151f618602d..7b48567622ef 100644 --- a/trunk/drivers/usb/host/uhci-hcd.c +++ b/trunk/drivers/usb/host/uhci-hcd.c @@ -22,6 +22,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/usb/input/appletouch.c b/trunk/drivers/usb/input/appletouch.c index 9e3f13903371..36855062eacc 100644 --- a/trunk/drivers/usb/input/appletouch.c +++ b/trunk/drivers/usb/input/appletouch.c @@ -27,6 +27,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/usb/input/ati_remote.c b/trunk/drivers/usb/input/ati_remote.c index 05d2d6012eb2..07c8c0e665dd 100644 --- a/trunk/drivers/usb/input/ati_remote.c +++ b/trunk/drivers/usb/input/ati_remote.c @@ -85,6 +85,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/usb/input/hiddev.c b/trunk/drivers/usb/input/hiddev.c index 70477f02cc29..c4670e1d4654 100644 --- a/trunk/drivers/usb/input/hiddev.c +++ b/trunk/drivers/usb/input/hiddev.c @@ -25,6 +25,7 @@ * e-mail - mail your message to Paul Stewart */ +#include #include #include #include diff --git a/trunk/drivers/usb/input/itmtouch.c b/trunk/drivers/usb/input/itmtouch.c index 86acb5f1907a..5c570cc703f3 100644 --- a/trunk/drivers/usb/input/itmtouch.c +++ b/trunk/drivers/usb/input/itmtouch.c @@ -39,6 +39,7 @@ * *****************************************************************************/ +#include #include #include #include diff --git a/trunk/drivers/usb/input/keyspan_remote.c b/trunk/drivers/usb/input/keyspan_remote.c index 4723b310f277..70af985b5db9 100644 --- a/trunk/drivers/usb/input/keyspan_remote.c +++ b/trunk/drivers/usb/input/keyspan_remote.c @@ -11,6 +11,7 @@ * and Keyspan, Inc the manufacturers of the Keyspan USB DMR product. */ +#include #include #include #include diff --git a/trunk/drivers/usb/input/mtouchusb.c b/trunk/drivers/usb/input/mtouchusb.c index a9ccda8810e0..4fdee4db0729 100644 --- a/trunk/drivers/usb/input/mtouchusb.c +++ b/trunk/drivers/usb/input/mtouchusb.c @@ -39,6 +39,7 @@ * *****************************************************************************/ +#include #include #include #include diff --git a/trunk/drivers/usb/input/touchkitusb.c b/trunk/drivers/usb/input/touchkitusb.c index 0149043ffb97..da7b0bf51aff 100644 --- a/trunk/drivers/usb/input/touchkitusb.c +++ b/trunk/drivers/usb/input/touchkitusb.c @@ -24,6 +24,7 @@ //#define DEBUG +#include #include #include #include diff --git a/trunk/drivers/usb/input/xpad.c b/trunk/drivers/usb/input/xpad.c index 9889b1cda05b..cfd4a4e04334 100644 --- a/trunk/drivers/usb/input/xpad.c +++ b/trunk/drivers/usb/input/xpad.c @@ -54,6 +54,7 @@ * 2002-07-17 - 0.0.5 : simplified d-pad handling */ +#include #include #include #include diff --git a/trunk/drivers/usb/input/yealink.c b/trunk/drivers/usb/input/yealink.c index 575a4e672e96..24aedbb20f03 100644 --- a/trunk/drivers/usb/input/yealink.c +++ b/trunk/drivers/usb/input/yealink.c @@ -46,6 +46,7 @@ * 20050816 henk Merge 2.6.13-rc6 */ +#include #include #include #include diff --git a/trunk/drivers/usb/misc/cytherm.c b/trunk/drivers/usb/misc/cytherm.c index b20bec445552..a04204292aa3 100644 --- a/trunk/drivers/usb/misc/cytherm.c +++ b/trunk/drivers/usb/misc/cytherm.c @@ -14,6 +14,7 @@ */ +#include #include #include #include diff --git a/trunk/drivers/usb/misc/idmouse.c b/trunk/drivers/usb/misc/idmouse.c index fcd69c52aea9..d0b167256699 100644 --- a/trunk/drivers/usb/misc/idmouse.c +++ b/trunk/drivers/usb/misc/idmouse.c @@ -16,6 +16,7 @@ */ +#include #include #include #include diff --git a/trunk/drivers/usb/misc/ldusb.c b/trunk/drivers/usb/misc/ldusb.c index f30ab1fbb3c8..966acb474f67 100644 --- a/trunk/drivers/usb/misc/ldusb.c +++ b/trunk/drivers/usb/misc/ldusb.c @@ -27,6 +27,7 @@ * V0.13 (mh) Added support for LD X-Ray and Machine Test System */ +#include #include #include #include diff --git a/trunk/drivers/usb/misc/legousbtower.c b/trunk/drivers/usb/misc/legousbtower.c index 7699d970e680..779bcf0373ad 100644 --- a/trunk/drivers/usb/misc/legousbtower.c +++ b/trunk/drivers/usb/misc/legousbtower.c @@ -75,6 +75,7 @@ * - move reset into open to clean out spurious data */ +#include #include #include #include diff --git a/trunk/drivers/usb/misc/phidgetkit.c b/trunk/drivers/usb/misc/phidgetkit.c index bfbbbfbb92bc..13aeea2026cc 100644 --- a/trunk/drivers/usb/misc/phidgetkit.c +++ b/trunk/drivers/usb/misc/phidgetkit.c @@ -13,6 +13,7 @@ * This is a driver for the USB PhidgetInterfaceKit. */ +#include #include #include #include diff --git a/trunk/drivers/usb/misc/phidgetservo.c b/trunk/drivers/usb/misc/phidgetservo.c index c0df79c96538..5a040c205eed 100644 --- a/trunk/drivers/usb/misc/phidgetservo.c +++ b/trunk/drivers/usb/misc/phidgetservo.c @@ -25,6 +25,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/usb/misc/sisusbvga/sisusb_init.c b/trunk/drivers/usb/misc/sisusbvga/sisusb_init.c index 9b30f8962814..968f0d38cff7 100644 --- a/trunk/drivers/usb/misc/sisusbvga/sisusb_init.c +++ b/trunk/drivers/usb/misc/sisusbvga/sisusb_init.c @@ -36,6 +36,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/usb/misc/usbled.c b/trunk/drivers/usb/misc/usbled.c index 0c5ee0ad6bb9..f441964132c0 100644 --- a/trunk/drivers/usb/misc/usbled.c +++ b/trunk/drivers/usb/misc/usbled.c @@ -9,6 +9,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/usb/misc/usbtest.c b/trunk/drivers/usb/misc/usbtest.c index 786e1dbe88ec..81ba14c73dc7 100644 --- a/trunk/drivers/usb/misc/usbtest.c +++ b/trunk/drivers/usb/misc/usbtest.c @@ -1,3 +1,4 @@ +#include #include #include #include diff --git a/trunk/drivers/usb/net/asix.c b/trunk/drivers/usb/net/asix.c index 2e2bbc003e93..37111acec875 100644 --- a/trunk/drivers/usb/net/asix.c +++ b/trunk/drivers/usb/net/asix.c @@ -22,6 +22,7 @@ // #define DEBUG // error path messages, extra info // #define VERBOSE // more; success messages +#include #include #include #include diff --git a/trunk/drivers/usb/net/cdc_ether.c b/trunk/drivers/usb/net/cdc_ether.c index 82ce0358d9a3..efd195b5912c 100644 --- a/trunk/drivers/usb/net/cdc_ether.c +++ b/trunk/drivers/usb/net/cdc_ether.c @@ -20,6 +20,7 @@ // #define DEBUG // error path messages, extra info // #define VERBOSE // more; success messages +#include #include #include #include diff --git a/trunk/drivers/usb/net/cdc_subset.c b/trunk/drivers/usb/net/cdc_subset.c index e2fae85851a3..ec801e8bb1bb 100644 --- a/trunk/drivers/usb/net/cdc_subset.c +++ b/trunk/drivers/usb/net/cdc_subset.c @@ -17,6 +17,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include #include #include diff --git a/trunk/drivers/usb/net/gl620a.c b/trunk/drivers/usb/net/gl620a.c index 3155f25f1d48..faf1e86be687 100644 --- a/trunk/drivers/usb/net/gl620a.c +++ b/trunk/drivers/usb/net/gl620a.c @@ -21,6 +21,7 @@ // #define DEBUG // error path messages, extra info // #define VERBOSE // more; success messages +#include #include #include #include diff --git a/trunk/drivers/usb/net/net1080.c b/trunk/drivers/usb/net/net1080.c index a9b6eeac3e3f..78e6a43b1087 100644 --- a/trunk/drivers/usb/net/net1080.c +++ b/trunk/drivers/usb/net/net1080.c @@ -20,6 +20,7 @@ // #define DEBUG // error path messages, extra info // #define VERBOSE // more; success messages +#include #include #include #include diff --git a/trunk/drivers/usb/net/plusb.c b/trunk/drivers/usb/net/plusb.c index 5d17cdfc7bab..4fe863389cb7 100644 --- a/trunk/drivers/usb/net/plusb.c +++ b/trunk/drivers/usb/net/plusb.c @@ -20,6 +20,7 @@ // #define DEBUG // error path messages, extra info // #define VERBOSE // more; success messages +#include #include #include #include diff --git a/trunk/drivers/usb/net/rndis_host.c b/trunk/drivers/usb/net/rndis_host.c index c2a28d88ef3c..f551546d7521 100644 --- a/trunk/drivers/usb/net/rndis_host.c +++ b/trunk/drivers/usb/net/rndis_host.c @@ -20,6 +20,7 @@ // #define DEBUG // error path messages, extra info // #define VERBOSE // more; success messages +#include #include #include #include diff --git a/trunk/drivers/usb/net/rtl8150.c b/trunk/drivers/usb/net/rtl8150.c index 718f8e2b552b..1bbbae283c0b 100644 --- a/trunk/drivers/usb/net/rtl8150.c +++ b/trunk/drivers/usb/net/rtl8150.c @@ -6,6 +6,7 @@ * version 2 as published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/drivers/usb/net/usbnet.c b/trunk/drivers/usb/net/usbnet.c index 54183e173a6d..362d6907c9bb 100644 --- a/trunk/drivers/usb/net/usbnet.c +++ b/trunk/drivers/usb/net/usbnet.c @@ -33,6 +33,7 @@ // #define DEBUG // error path messages, extra info // #define VERBOSE // more; success messages +#include #include #include #include diff --git a/trunk/drivers/usb/net/zaurus.c b/trunk/drivers/usb/net/zaurus.c index 144566bda583..813e470d0600 100644 --- a/trunk/drivers/usb/net/zaurus.c +++ b/trunk/drivers/usb/net/zaurus.c @@ -20,6 +20,7 @@ // #define DEBUG // error path messages, extra info // #define VERBOSE // more; success messages +#include #include #include #include diff --git a/trunk/drivers/usb/serial/belkin_sa.c b/trunk/drivers/usb/serial/belkin_sa.c index 3faa7aa0111a..4144777ea18b 100644 --- a/trunk/drivers/usb/serial/belkin_sa.c +++ b/trunk/drivers/usb/serial/belkin_sa.c @@ -63,6 +63,7 @@ * UsbSnoop on Windows2000 and from examining the other USB drivers. */ +#include #include #include #include diff --git a/trunk/drivers/usb/serial/bus.c b/trunk/drivers/usb/serial/bus.c index f2d993b70c18..e9f9f4bafa17 100644 --- a/trunk/drivers/usb/serial/bus.c +++ b/trunk/drivers/usb/serial/bus.c @@ -8,6 +8,7 @@ * 2 as published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/drivers/usb/serial/console.c b/trunk/drivers/usb/serial/console.c index 3d456b32c316..f3404e10afb4 100644 --- a/trunk/drivers/usb/serial/console.c +++ b/trunk/drivers/usb/serial/console.c @@ -11,6 +11,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/usb/serial/cp2101.c b/trunk/drivers/usb/serial/cp2101.c index df0a4f98b4ae..f8c0cb287736 100644 --- a/trunk/drivers/usb/serial/cp2101.c +++ b/trunk/drivers/usb/serial/cp2101.c @@ -17,6 +17,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/usb/serial/cyberjack.c b/trunk/drivers/usb/serial/cyberjack.c index 49b51ab0d4cb..1fd5c5a9f2ef 100644 --- a/trunk/drivers/usb/serial/cyberjack.c +++ b/trunk/drivers/usb/serial/cyberjack.c @@ -28,6 +28,7 @@ */ +#include #include #include #include diff --git a/trunk/drivers/usb/serial/cypress_m8.c b/trunk/drivers/usb/serial/cypress_m8.c index 4ff2dfb299bd..5de76efe1b37 100644 --- a/trunk/drivers/usb/serial/cypress_m8.c +++ b/trunk/drivers/usb/serial/cypress_m8.c @@ -48,6 +48,7 @@ /* Code originates and was built up from ftdi_sio, belkin, pl2303 and others. */ +#include #include #include #include diff --git a/trunk/drivers/usb/serial/digi_acceleport.c b/trunk/drivers/usb/serial/digi_acceleport.c index 6953d3ef5738..b3f776a90c93 100644 --- a/trunk/drivers/usb/serial/digi_acceleport.c +++ b/trunk/drivers/usb/serial/digi_acceleport.c @@ -233,6 +233,7 @@ * $Id: digi_acceleport.c,v 1.80.1.2 2000/11/02 05:45:08 root Exp $ */ +#include #include #include #include diff --git a/trunk/drivers/usb/serial/empeg.c b/trunk/drivers/usb/serial/empeg.c index 1e2b31eeb497..afca1eae5fb5 100644 --- a/trunk/drivers/usb/serial/empeg.c +++ b/trunk/drivers/usb/serial/empeg.c @@ -51,6 +51,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/usb/serial/ezusb.c b/trunk/drivers/usb/serial/ezusb.c index debc3b0f9662..1e419c8d7392 100644 --- a/trunk/drivers/usb/serial/ezusb.c +++ b/trunk/drivers/usb/serial/ezusb.c @@ -8,6 +8,7 @@ * 2 as published by the Free Software Foundation. */ +#include #include #include #include diff --git a/trunk/drivers/usb/serial/ftdi_sio.c b/trunk/drivers/usb/serial/ftdi_sio.c index 8a74b19f1283..b2bfea7c815a 100644 --- a/trunk/drivers/usb/serial/ftdi_sio.c +++ b/trunk/drivers/usb/serial/ftdi_sio.c @@ -245,6 +245,7 @@ /* to talk to the device */ /* Thanx to gkh and the rest of the usb dev group for all code I have assimilated :-) */ +#include #include #include #include diff --git a/trunk/drivers/usb/serial/garmin_gps.c b/trunk/drivers/usb/serial/garmin_gps.c index 1f5d1620baa1..04767759cf8a 100644 --- a/trunk/drivers/usb/serial/garmin_gps.c +++ b/trunk/drivers/usb/serial/garmin_gps.c @@ -23,6 +23,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA */ +#include #include #include #include diff --git a/trunk/drivers/usb/serial/generic.c b/trunk/drivers/usb/serial/generic.c index 945b8bb38c92..07a478c59fb2 100644 --- a/trunk/drivers/usb/serial/generic.c +++ b/trunk/drivers/usb/serial/generic.c @@ -9,6 +9,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/usb/serial/hp4x.c b/trunk/drivers/usb/serial/hp4x.c index 7e06358b0310..e9719da2aca1 100644 --- a/trunk/drivers/usb/serial/hp4x.c +++ b/trunk/drivers/usb/serial/hp4x.c @@ -12,6 +12,7 @@ * See Documentation/usb/usb-serial.txt for more information on using this driver */ +#include #include #include #include diff --git a/trunk/drivers/usb/serial/io_edgeport.c b/trunk/drivers/usb/serial/io_edgeport.c index bd2c05dac2a9..b85d2156dfdc 100644 --- a/trunk/drivers/usb/serial/io_edgeport.c +++ b/trunk/drivers/usb/serial/io_edgeport.c @@ -29,6 +29,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/usb/serial/io_ti.c b/trunk/drivers/usb/serial/io_ti.c index 723a12ae87b5..8e1e2253748b 100644 --- a/trunk/drivers/usb/serial/io_ti.c +++ b/trunk/drivers/usb/serial/io_ti.c @@ -24,6 +24,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/usb/serial/ipaq.c b/trunk/drivers/usb/serial/ipaq.c index dbcfe172a5cc..9da6d2a8f2b0 100644 --- a/trunk/drivers/usb/serial/ipaq.c +++ b/trunk/drivers/usb/serial/ipaq.c @@ -44,6 +44,7 @@ * Thanks to info from Heath Robinson and Arieh Davidoff. */ +#include #include #include #include diff --git a/trunk/drivers/usb/serial/ir-usb.c b/trunk/drivers/usb/serial/ir-usb.c index 2cf1fed3de43..d7f3f736a692 100644 --- a/trunk/drivers/usb/serial/ir-usb.c +++ b/trunk/drivers/usb/serial/ir-usb.c @@ -46,6 +46,7 @@ * initial version released. */ +#include #include #include #include diff --git a/trunk/drivers/usb/serial/keyspan.c b/trunk/drivers/usb/serial/keyspan.c index d7c58f1bc960..2cf6ade704e4 100644 --- a/trunk/drivers/usb/serial/keyspan.c +++ b/trunk/drivers/usb/serial/keyspan.c @@ -95,6 +95,7 @@ */ +#include #include #include #include diff --git a/trunk/drivers/usb/serial/keyspan_pda.c b/trunk/drivers/usb/serial/keyspan_pda.c index 03ab3c0f3cce..b0441c35f98f 100644 --- a/trunk/drivers/usb/serial/keyspan_pda.c +++ b/trunk/drivers/usb/serial/keyspan_pda.c @@ -66,6 +66,7 @@ */ +#include #include #include #include diff --git a/trunk/drivers/usb/serial/kl5kusb105.c b/trunk/drivers/usb/serial/kl5kusb105.c index b45ff3e7ab40..65d79f630fa4 100644 --- a/trunk/drivers/usb/serial/kl5kusb105.c +++ b/trunk/drivers/usb/serial/kl5kusb105.c @@ -45,6 +45,7 @@ */ +#include #include #include #include diff --git a/trunk/drivers/usb/serial/kobil_sct.c b/trunk/drivers/usb/serial/kobil_sct.c index 457733374772..87dfcd89ffab 100644 --- a/trunk/drivers/usb/serial/kobil_sct.c +++ b/trunk/drivers/usb/serial/kobil_sct.c @@ -35,6 +35,7 @@ */ +#include #include #include #include diff --git a/trunk/drivers/usb/serial/mct_u232.c b/trunk/drivers/usb/serial/mct_u232.c index ca05d3275f3e..35bd29b6c408 100644 --- a/trunk/drivers/usb/serial/mct_u232.c +++ b/trunk/drivers/usb/serial/mct_u232.c @@ -64,6 +64,7 @@ * (via linux-usb-devel). */ +#include #include #include #include diff --git a/trunk/drivers/usb/serial/omninet.c b/trunk/drivers/usb/serial/omninet.c index cfb711a21a45..6dcdb5f598b8 100644 --- a/trunk/drivers/usb/serial/omninet.c +++ b/trunk/drivers/usb/serial/omninet.c @@ -35,6 +35,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/usb/serial/option.c b/trunk/drivers/usb/serial/option.c index 78ad4b3126a6..b0861b61bba7 100644 --- a/trunk/drivers/usb/serial/option.c +++ b/trunk/drivers/usb/serial/option.c @@ -57,6 +57,7 @@ #define DRIVER_AUTHOR "Matthias Urlichs " #define DRIVER_DESC "USB Driver for GSM modems" +#include #include #include #include diff --git a/trunk/drivers/usb/serial/pl2303.c b/trunk/drivers/usb/serial/pl2303.c index de93a2b909e7..d88704387202 100644 --- a/trunk/drivers/usb/serial/pl2303.c +++ b/trunk/drivers/usb/serial/pl2303.c @@ -14,6 +14,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/usb/serial/safe_serial.c b/trunk/drivers/usb/serial/safe_serial.c index 897d8447252b..f0215f850d2d 100644 --- a/trunk/drivers/usb/serial/safe_serial.c +++ b/trunk/drivers/usb/serial/safe_serial.c @@ -60,6 +60,7 @@ */ +#include #include #include #include diff --git a/trunk/drivers/usb/serial/ti_usb_3410_5052.c b/trunk/drivers/usb/serial/ti_usb_3410_5052.c index a9afff31a921..c3a2071b802d 100644 --- a/trunk/drivers/usb/serial/ti_usb_3410_5052.c +++ b/trunk/drivers/usb/serial/ti_usb_3410_5052.c @@ -68,6 +68,7 @@ * fi */ +#include #include #include #include diff --git a/trunk/drivers/usb/serial/usb-serial.c b/trunk/drivers/usb/serial/usb-serial.c index b59a0536ea5c..f466f89eeb6d 100644 --- a/trunk/drivers/usb/serial/usb-serial.c +++ b/trunk/drivers/usb/serial/usb-serial.c @@ -16,6 +16,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/usb/serial/usb-serial.h b/trunk/drivers/usb/serial/usb-serial.h index 0f2802a60194..d53ea9b11e81 100644 --- a/trunk/drivers/usb/serial/usb-serial.h +++ b/trunk/drivers/usb/serial/usb-serial.h @@ -14,6 +14,7 @@ #ifndef __LINUX_USB_SERIAL_H #define __LINUX_USB_SERIAL_H +#include #include #include diff --git a/trunk/drivers/usb/serial/visor.c b/trunk/drivers/usb/serial/visor.c index 95a2936e902e..9e89b8d54f72 100644 --- a/trunk/drivers/usb/serial/visor.c +++ b/trunk/drivers/usb/serial/visor.c @@ -13,6 +13,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/usb/serial/whiteheat.c b/trunk/drivers/usb/serial/whiteheat.c index 540438c3f381..56ffc81302fc 100644 --- a/trunk/drivers/usb/serial/whiteheat.c +++ b/trunk/drivers/usb/serial/whiteheat.c @@ -65,6 +65,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/usb/storage/debug.h b/trunk/drivers/usb/storage/debug.h index 77e244a8c376..cd2096acc723 100644 --- a/trunk/drivers/usb/storage/debug.h +++ b/trunk/drivers/usb/storage/debug.h @@ -44,6 +44,7 @@ #ifndef _DEBUG_H_ #define _DEBUG_H_ +#include #include #define USB_STORAGE "usb-storage: " diff --git a/trunk/drivers/usb/storage/dpcm.c b/trunk/drivers/usb/storage/dpcm.c index 1628cb258562..92b69e4c8047 100644 --- a/trunk/drivers/usb/storage/dpcm.c +++ b/trunk/drivers/usb/storage/dpcm.c @@ -29,6 +29,7 @@ * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/drivers/usb/storage/freecom.c b/trunk/drivers/usb/storage/freecom.c index 88aa59ab7563..30e96050fe0c 100644 --- a/trunk/drivers/usb/storage/freecom.c +++ b/trunk/drivers/usb/storage/freecom.c @@ -28,6 +28,7 @@ * (http://www.freecom.de/) */ +#include #include #include diff --git a/trunk/drivers/usb/storage/initializers.h b/trunk/drivers/usb/storage/initializers.h index 927f7781080f..f9907a5cf129 100644 --- a/trunk/drivers/usb/storage/initializers.h +++ b/trunk/drivers/usb/storage/initializers.h @@ -37,6 +37,7 @@ * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include "usb.h" #include "transport.h" diff --git a/trunk/drivers/usb/storage/onetouch.c b/trunk/drivers/usb/storage/onetouch.c index 313920d980c9..026a587eb8dd 100644 --- a/trunk/drivers/usb/storage/onetouch.c +++ b/trunk/drivers/usb/storage/onetouch.c @@ -28,6 +28,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/usb/storage/transport.c b/trunk/drivers/usb/storage/transport.c index eb7188b3565c..19b25c5cafd4 100644 --- a/trunk/drivers/usb/storage/transport.c +++ b/trunk/drivers/usb/storage/transport.c @@ -45,6 +45,7 @@ * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/drivers/usb/storage/unusual_devs.h b/trunk/drivers/usb/storage/unusual_devs.h index c7e84e653df9..543244d421c1 100644 --- a/trunk/drivers/usb/storage/unusual_devs.h +++ b/trunk/drivers/usb/storage/unusual_devs.h @@ -31,6 +31,7 @@ * the following thing for it to work: * The macro UNUSUAL_DEV() must be defined before this file is included */ +#include /* If you edit this file, please try to keep it sorted first by VendorID, * then by ProductID. diff --git a/trunk/drivers/usb/storage/usb.c b/trunk/drivers/usb/storage/usb.c index 1185acac4b21..e232c7c89909 100644 --- a/trunk/drivers/usb/storage/usb.c +++ b/trunk/drivers/usb/storage/usb.c @@ -47,6 +47,7 @@ * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/drivers/usb/usb-skeleton.c b/trunk/drivers/usb/usb-skeleton.c index b362039792b3..4de9fb56ebfc 100644 --- a/trunk/drivers/usb/usb-skeleton.c +++ b/trunk/drivers/usb/usb-skeleton.c @@ -13,6 +13,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/video/S3triofb.c b/trunk/drivers/video/S3triofb.c index e714e8449c1d..455fda990ff7 100644 --- a/trunk/drivers/video/S3triofb.c +++ b/trunk/drivers/video/S3triofb.c @@ -23,6 +23,7 @@ */ +#include #include #include #include diff --git a/trunk/drivers/video/acornfb.c b/trunk/drivers/video/acornfb.c index 61a8bf159cb0..98baecccb3fd 100644 --- a/trunk/drivers/video/acornfb.c +++ b/trunk/drivers/video/acornfb.c @@ -17,6 +17,7 @@ * - Blanking 8bpp displays with VIDC */ +#include #include #include #include diff --git a/trunk/drivers/video/amifb.c b/trunk/drivers/video/amifb.c index f9bc9f777e75..3033c72dea20 100644 --- a/trunk/drivers/video/amifb.c +++ b/trunk/drivers/video/amifb.c @@ -48,6 +48,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/video/asiliantfb.c b/trunk/drivers/video/asiliantfb.c index eaeaf4d1a094..29f9f0dfe3b4 100644 --- a/trunk/drivers/video/asiliantfb.c +++ b/trunk/drivers/video/asiliantfb.c @@ -29,6 +29,7 @@ * more details. */ +#include #include #include #include diff --git a/trunk/drivers/video/aty/aty128fb.c b/trunk/drivers/video/aty/aty128fb.c index 72c589109471..11cf7fcb1d55 100644 --- a/trunk/drivers/video/aty/aty128fb.c +++ b/trunk/drivers/video/aty/aty128fb.c @@ -46,6 +46,7 @@ */ +#include #include #include #include diff --git a/trunk/drivers/video/aty/atyfb.h b/trunk/drivers/video/aty/atyfb.h index 55fb8b04489b..43d2cb58af87 100644 --- a/trunk/drivers/video/aty/atyfb.h +++ b/trunk/drivers/video/aty/atyfb.h @@ -2,6 +2,7 @@ * ATI Frame Buffer Device Driver Core Definitions */ +#include #include #include /* diff --git a/trunk/drivers/video/aty/atyfb_base.c b/trunk/drivers/video/aty/atyfb_base.c index 85fcd22e6ed5..22e720611bf6 100644 --- a/trunk/drivers/video/aty/atyfb_base.c +++ b/trunk/drivers/video/aty/atyfb_base.c @@ -49,6 +49,7 @@ ******************************************************************************/ +#include #include #include #include diff --git a/trunk/drivers/video/aty/radeon_base.c b/trunk/drivers/video/aty/radeon_base.c index 51b78f8de949..68b15645b893 100644 --- a/trunk/drivers/video/aty/radeon_base.c +++ b/trunk/drivers/video/aty/radeon_base.c @@ -52,6 +52,7 @@ #define RADEON_VERSION "0.2.0" +#include #include #include #include diff --git a/trunk/drivers/video/aty/radeon_i2c.c b/trunk/drivers/video/aty/radeon_i2c.c index 9aaca58c074a..a9d0414e4655 100644 --- a/trunk/drivers/video/aty/radeon_i2c.c +++ b/trunk/drivers/video/aty/radeon_i2c.c @@ -1,3 +1,4 @@ +#include #include #include #include diff --git a/trunk/drivers/video/aty/radeonfb.h b/trunk/drivers/video/aty/radeonfb.h index 38657b2d10eb..1645943b1123 100644 --- a/trunk/drivers/video/aty/radeonfb.h +++ b/trunk/drivers/video/aty/radeonfb.h @@ -1,6 +1,7 @@ #ifndef __RADEONFB_H__ #define __RADEONFB_H__ +#include #include #include #include @@ -381,7 +382,7 @@ struct radeonfb_info { /* Note about this function: we have some rare cases where we must not schedule, * this typically happen with our special "wake up early" hook which allows us to * wake up the graphic chip (and thus get the console back) before everything else - * on some machines that support that mechanism. At this point, interrupts are off + * on some machines that support that mecanism. At this point, interrupts are off * and scheduling is not permitted */ static inline void _radeon_msleep(struct radeonfb_info *rinfo, unsigned long ms) diff --git a/trunk/drivers/video/au1100fb.c b/trunk/drivers/video/au1100fb.c index a92a91fef16f..9ef68cd83bb4 100644 --- a/trunk/drivers/video/au1100fb.c +++ b/trunk/drivers/video/au1100fb.c @@ -40,6 +40,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include diff --git a/trunk/drivers/video/backlight/locomolcd.c b/trunk/drivers/video/backlight/locomolcd.c index caf1eca199b0..bd879b7ec119 100644 --- a/trunk/drivers/video/backlight/locomolcd.c +++ b/trunk/drivers/video/backlight/locomolcd.c @@ -11,6 +11,7 @@ */ /* LCD power functions */ +#include #include #include #include diff --git a/trunk/drivers/video/bw2.c b/trunk/drivers/video/bw2.c index c66e3d52cbf3..6577fdfdfc16 100644 --- a/trunk/drivers/video/bw2.c +++ b/trunk/drivers/video/bw2.c @@ -1,6 +1,6 @@ /* bw2.c: BWTWO frame buffer driver * - * Copyright (C) 2003, 2006 David S. Miller (davem@davemloft.net) + * Copyright (C) 2003 David S. Miller (davem@redhat.com) * Copyright (C) 1996,1998 Jakub Jelinek (jj@ultra.linux.cz) * Copyright (C) 1996 Miguel de Icaza (miguel@nuclecu.unam.mx) * Copyright (C) 1997 Eddie C. Dost (ecd@skynet.be) @@ -19,11 +19,14 @@ #include #include +#include #include -#include -#include #include +#ifdef CONFIG_SPARC32 +#include +#endif + #include "sbuslib.h" /* @@ -56,30 +59,30 @@ static struct fb_ops bw2_ops = { #define BWTWO_REGISTER_OFFSET 0x400000 struct bt_regs { - u32 addr; - u32 color_map; - u32 control; - u32 cursor; + volatile u32 addr; + volatile u32 color_map; + volatile u32 control; + volatile u32 cursor; }; struct bw2_regs { struct bt_regs cmap; - u8 control; - u8 status; - u8 cursor_start; - u8 cursor_end; - u8 h_blank_start; - u8 h_blank_end; - u8 h_sync_start; - u8 h_sync_end; - u8 comp_sync_end; - u8 v_blank_start_high; - u8 v_blank_start_low; - u8 v_blank_end; - u8 v_sync_start; - u8 v_sync_end; - u8 xfer_holdoff_start; - u8 xfer_holdoff_end; + volatile u8 control; + volatile u8 status; + volatile u8 cursor_start; + volatile u8 cursor_end; + volatile u8 h_blank_start; + volatile u8 h_blank_end; + volatile u8 h_sync_start; + volatile u8 h_sync_end; + volatile u8 comp_sync_end; + volatile u8 v_blank_start_high; + volatile u8 v_blank_start_low; + volatile u8 v_blank_end; + volatile u8 v_sync_start; + volatile u8 v_sync_end; + volatile u8 xfer_holdoff_start; + volatile u8 xfer_holdoff_end; }; /* Status Register Constants */ @@ -114,8 +117,9 @@ struct bw2_par { #define BW2_FLAG_BLANKED 0x00000001 unsigned long physbase; - unsigned long which_io; unsigned long fbsize; + + struct sbus_dev *sdev; }; /** @@ -170,7 +174,9 @@ static int bw2_mmap(struct fb_info *info, struct vm_area_struct *vma) return sbusfb_mmap_helper(bw2_mmap_map, par->physbase, par->fbsize, - par->which_io, + (par->sdev ? + par->sdev->reg_addrs[0].which_io : + 0), vma); } @@ -282,124 +288,139 @@ static void bw2_do_default_mode(struct bw2_par *par, struct fb_info *info, struct all_info { struct fb_info info; struct bw2_par par; + struct list_head list; }; +static LIST_HEAD(bw2_list); -static int __devinit bw2_init_one(struct of_device *op) +static void bw2_init_one(struct sbus_dev *sdev) { - struct device_node *dp = op->node; struct all_info *all; - int linebytes, err; - - all = kzalloc(sizeof(*all), GFP_KERNEL); - if (!all) - return -ENOMEM; - - spin_lock_init(&all->par.lock); + struct resource *resp; +#ifdef CONFIG_SUN4 + struct resource res; +#endif + int linebytes; - all->par.physbase = op->resource[0].start; - all->par.which_io = op->resource[0].flags & IORESOURCE_BITS; + all = kmalloc(sizeof(*all), GFP_KERNEL); + if (!all) { + printk(KERN_ERR "bw2: Cannot allocate memory.\n"); + return; + } + memset(all, 0, sizeof(*all)); - sbusfb_fill_var(&all->info.var, dp->node, 1); - linebytes = of_getintprop_default(dp, "linebytes", - all->info.var.xres); + INIT_LIST_HEAD(&all->list); + spin_lock_init(&all->par.lock); + all->par.sdev = sdev; + +#ifdef CONFIG_SUN4 + if (!sdev) { + all->par.physbase = sun4_bwtwo_physaddr; + res.start = sun4_bwtwo_physaddr; + res.end = res.start + BWTWO_REGISTER_OFFSET + sizeof(struct bw2_regs) - 1; + res.flags = IORESOURCE_IO; + resp = &res; + all->info.var.xres = all->info.var.xres_virtual = 1152; + all->info.var.yres = all->info.var.yres_virtual = 900; + all->info.var.bits_per_pixel = 1; + linebytes = 1152 / 8; + } else +#else + { + BUG_ON(!sdev); + all->par.physbase = sdev->reg_addrs[0].phys_addr; + resp = &sdev->resource[0]; + sbusfb_fill_var(&all->info.var, (sdev ? sdev->prom_node : 0), 1); + linebytes = prom_getintdefault(sdev->prom_node, "linebytes", + all->info.var.xres); + } +#endif all->info.var.red.length = all->info.var.green.length = all->info.var.blue.length = all->info.var.bits_per_pixel; all->info.var.red.offset = all->info.var.green.offset = all->info.var.blue.offset = 0; - all->par.regs = of_ioremap(&op->resource[0], BWTWO_REGISTER_OFFSET, - sizeof(struct bw2_regs), "bw2 regs"); + all->par.regs = sbus_ioremap(resp, BWTWO_REGISTER_OFFSET, + sizeof(struct bw2_regs), "bw2 regs"); - if (!of_find_property(dp, "width", NULL)) + if (sdev && !prom_getbool(sdev->prom_node, "width")) bw2_do_default_mode(&all->par, &all->info, &linebytes); all->par.fbsize = PAGE_ALIGN(linebytes * all->info.var.yres); all->info.flags = FBINFO_DEFAULT; all->info.fbops = &bw2_ops; - - all->info.screen_base = - sbus_ioremap(&op->resource[0], 0, all->par.fbsize, "bw2 ram"); +#if defined(CONFIG_SPARC32) + if (sdev) + all->info.screen_base = (char __iomem *) + prom_getintdefault(sdev->prom_node, "address", 0); +#endif + if (!all->info.screen_base) + all->info.screen_base = + sbus_ioremap(resp, 0, all->par.fbsize, "bw2 ram"); all->info.par = &all->par; bw2_blank(0, &all->info); bw2_init_fix(&all->info, linebytes); - err= register_framebuffer(&all->info); - if (err < 0) { - of_iounmap(all->par.regs, sizeof(struct bw2_regs)); - of_iounmap(all->info.screen_base, all->par.fbsize); + if (register_framebuffer(&all->info) < 0) { + printk(KERN_ERR "bw2: Could not register framebuffer.\n"); kfree(all); - return err; + return; } - dev_set_drvdata(&op->dev, all); - - printk("%s: bwtwo at %lx:%lx\n", - dp->full_name, - all->par.which_io, all->par.physbase); - - return 0; -} - -static int __devinit bw2_probe(struct of_device *dev, const struct of_device_id *match) -{ - struct of_device *op = to_of_device(&dev->dev); + list_add(&all->list, &bw2_list); - return bw2_init_one(op); + printk("bw2: bwtwo at %lx:%lx\n", + (long) (sdev ? sdev->reg_addrs[0].which_io : 0), + (long) all->par.physbase); } -static int __devexit bw2_remove(struct of_device *dev) +int __init bw2_init(void) { - struct all_info *all = dev_get_drvdata(&dev->dev); + struct sbus_bus *sbus; + struct sbus_dev *sdev; - unregister_framebuffer(&all->info); - - of_iounmap(all->par.regs, sizeof(struct bw2_regs)); - of_iounmap(all->info.screen_base, all->par.fbsize); - - kfree(all); + if (fb_get_options("bw2fb", NULL)) + return -ENODEV; - dev_set_drvdata(&dev->dev, NULL); +#ifdef CONFIG_SUN4 + bw2_init_one(NULL); +#endif + for_all_sbusdev(sdev, sbus) { + if (!strcmp(sdev->prom_name, "bwtwo")) + bw2_init_one(sdev); + } return 0; } -static struct of_device_id bw2_match[] = { - { - .name = "bwtwo", - }, - {}, -}; -MODULE_DEVICE_TABLE(of, bw2_match); - -static struct of_platform_driver bw2_driver = { - .name = "bw2", - .match_table = bw2_match, - .probe = bw2_probe, - .remove = __devexit_p(bw2_remove), -}; - -static int __init bw2_init(void) +void __exit bw2_exit(void) { - if (fb_get_options("bw2fb", NULL)) - return -ENODEV; + struct list_head *pos, *tmp; - return of_register_driver(&bw2_driver, &of_bus_type); + list_for_each_safe(pos, tmp, &bw2_list) { + struct all_info *all = list_entry(pos, typeof(*all), list); + + unregister_framebuffer(&all->info); + kfree(all); + } } -static void __exit bw2_exit(void) +int __init +bw2_setup(char *arg) { - return of_unregister_driver(&bw2_driver); + /* No cmdline options yet... */ + return 0; } - module_init(bw2_init); + +#ifdef MODULE module_exit(bw2_exit); +#endif MODULE_DESCRIPTION("framebuffer driver for BWTWO chipsets"); -MODULE_AUTHOR("David S. Miller "); -MODULE_VERSION("2.0"); +MODULE_AUTHOR("David S. Miller "); MODULE_LICENSE("GPL"); diff --git a/trunk/drivers/video/cfbcopyarea.c b/trunk/drivers/video/cfbcopyarea.c index 6faea4034e3d..74415325b016 100644 --- a/trunk/drivers/video/cfbcopyarea.c +++ b/trunk/drivers/video/cfbcopyarea.c @@ -24,6 +24,7 @@ +#include #include #include #include diff --git a/trunk/drivers/video/cfbfillrect.c b/trunk/drivers/video/cfbfillrect.c index f00b50aab606..e5ff62e9cfb8 100644 --- a/trunk/drivers/video/cfbfillrect.c +++ b/trunk/drivers/video/cfbfillrect.c @@ -17,6 +17,7 @@ * the native cpu endians. I also need to deal with MSB position in the word. * */ +#include #include #include #include diff --git a/trunk/drivers/video/cfbimgblt.c b/trunk/drivers/video/cfbimgblt.c index 51d35386a945..ad8a89bf8eae 100644 --- a/trunk/drivers/video/cfbimgblt.c +++ b/trunk/drivers/video/cfbimgblt.c @@ -29,6 +29,7 @@ * Also need to add code to deal with cards endians that are different than * the native cpu endians. I also need to deal with MSB position in the word. */ +#include #include #include #include diff --git a/trunk/drivers/video/cg14.c b/trunk/drivers/video/cg14.c index 7f926c619b61..63b6c79c8a0a 100644 --- a/trunk/drivers/video/cg14.c +++ b/trunk/drivers/video/cg14.c @@ -1,6 +1,6 @@ /* cg14.c: CGFOURTEEN frame buffer driver * - * Copyright (C) 2003, 2006 David S. Miller (davem@davemloft.net) + * Copyright (C) 2003 David S. Miller (davem@redhat.com) * Copyright (C) 1996,1998 Jakub Jelinek (jj@ultra.linux.cz) * Copyright (C) 1995 Miguel de Icaza (miguel@nuclecu.unam.mx) * @@ -18,8 +18,8 @@ #include #include -#include -#include +#include +#include #include #include "sbuslib.h" @@ -99,73 +99,73 @@ static struct fb_ops cg14_ops = { #define CG14_MCR_PIXMODE_32 3 struct cg14_regs{ - u8 mcr; /* Master Control Reg */ - u8 ppr; /* Packed Pixel Reg */ - u8 tms[2]; /* Test Mode Status Regs */ - u8 msr; /* Master Status Reg */ - u8 fsr; /* Fault Status Reg */ - u8 rev; /* Revision & Impl */ - u8 ccr; /* Clock Control Reg */ - u32 tmr; /* Test Mode Read Back */ - u8 mod; /* Monitor Operation Data Reg */ - u8 acr; /* Aux Control */ + volatile u8 mcr; /* Master Control Reg */ + volatile u8 ppr; /* Packed Pixel Reg */ + volatile u8 tms[2]; /* Test Mode Status Regs */ + volatile u8 msr; /* Master Status Reg */ + volatile u8 fsr; /* Fault Status Reg */ + volatile u8 rev; /* Revision & Impl */ + volatile u8 ccr; /* Clock Control Reg */ + volatile u32 tmr; /* Test Mode Read Back */ + volatile u8 mod; /* Monitor Operation Data Reg */ + volatile u8 acr; /* Aux Control */ u8 xxx0[6]; - u16 hct; /* Hor Counter */ - u16 vct; /* Vert Counter */ - u16 hbs; /* Hor Blank Start */ - u16 hbc; /* Hor Blank Clear */ - u16 hss; /* Hor Sync Start */ - u16 hsc; /* Hor Sync Clear */ - u16 csc; /* Composite Sync Clear */ - u16 vbs; /* Vert Blank Start */ - u16 vbc; /* Vert Blank Clear */ - u16 vss; /* Vert Sync Start */ - u16 vsc; /* Vert Sync Clear */ - u16 xcs; - u16 xcc; - u16 fsa; /* Fault Status Address */ - u16 adr; /* Address Registers */ + volatile u16 hct; /* Hor Counter */ + volatile u16 vct; /* Vert Counter */ + volatile u16 hbs; /* Hor Blank Start */ + volatile u16 hbc; /* Hor Blank Clear */ + volatile u16 hss; /* Hor Sync Start */ + volatile u16 hsc; /* Hor Sync Clear */ + volatile u16 csc; /* Composite Sync Clear */ + volatile u16 vbs; /* Vert Blank Start */ + volatile u16 vbc; /* Vert Blank Clear */ + volatile u16 vss; /* Vert Sync Start */ + volatile u16 vsc; /* Vert Sync Clear */ + volatile u16 xcs; + volatile u16 xcc; + volatile u16 fsa; /* Fault Status Address */ + volatile u16 adr; /* Address Registers */ u8 xxx1[0xce]; - u8 pcg[0x100]; /* Pixel Clock Generator */ - u32 vbr; /* Frame Base Row */ - u32 vmcr; /* VBC Master Control */ - u32 vcr; /* VBC refresh */ - u32 vca; /* VBC Config */ + volatile u8 pcg[0x100]; /* Pixel Clock Generator */ + volatile u32 vbr; /* Frame Base Row */ + volatile u32 vmcr; /* VBC Master Control */ + volatile u32 vcr; /* VBC refresh */ + volatile u32 vca; /* VBC Config */ }; #define CG14_CCR_ENABLE 0x04 #define CG14_CCR_SELECT 0x02 /* HW/Full screen */ struct cg14_cursor { - u32 cpl0[32]; /* Enable plane 0 */ - u32 cpl1[32]; /* Color selection plane */ - u8 ccr; /* Cursor Control Reg */ + volatile u32 cpl0[32]; /* Enable plane 0 */ + volatile u32 cpl1[32]; /* Color selection plane */ + volatile u8 ccr; /* Cursor Control Reg */ u8 xxx0[3]; - u16 cursx; /* Cursor x,y position */ - u16 cursy; /* Cursor x,y position */ - u32 color0; - u32 color1; + volatile u16 cursx; /* Cursor x,y position */ + volatile u16 cursy; /* Cursor x,y position */ + volatile u32 color0; + volatile u32 color1; u32 xxx1[0x1bc]; - u32 cpl0i[32]; /* Enable plane 0 autoinc */ - u32 cpl1i[32]; /* Color selection autoinc */ + volatile u32 cpl0i[32]; /* Enable plane 0 autoinc */ + volatile u32 cpl1i[32]; /* Color selection autoinc */ }; struct cg14_dac { - u8 addr; /* Address Register */ + volatile u8 addr; /* Address Register */ u8 xxx0[255]; - u8 glut; /* Gamma table */ + volatile u8 glut; /* Gamma table */ u8 xxx1[255]; - u8 select; /* Register Select */ + volatile u8 select; /* Register Select */ u8 xxx2[255]; - u8 mode; /* Mode Register */ + volatile u8 mode; /* Mode Register */ }; struct cg14_xlut{ - u8 x_xlut [256]; - u8 x_xlutd [256]; + volatile u8 x_xlut [256]; + volatile u8 x_xlutd [256]; u8 xxx0[0x600]; - u8 x_xlut_inc [256]; - u8 x_xlutd_inc [256]; + volatile u8 x_xlut_inc [256]; + volatile u8 x_xlutd_inc [256]; }; /* Color look up table (clut) */ @@ -204,6 +204,7 @@ struct cg14_par { int mode; int ramsize; + struct sbus_dev *sdev; }; static void __cg14_reset(struct cg14_par *par) @@ -354,9 +355,14 @@ static int cg14_ioctl(struct fb_info *info, unsigned int cmd, unsigned long arg) * Initialisation */ -static void cg14_init_fix(struct fb_info *info, int linebytes, struct device_node *dp) +static void cg14_init_fix(struct fb_info *info, int linebytes) { - const char *name = dp->name; + struct cg14_par *par = (struct cg14_par *)info->par; + const char *name; + + name = "cgfourteen"; + if (par->sdev) + name = par->sdev->prom_name; strlcpy(info->fix.id, name, sizeof(info->fix.id)); @@ -450,81 +456,98 @@ static struct sbus_mmap_map __cg14_mmap_map[CG14_MMAP_ENTRIES] __initdata = { struct all_info { struct fb_info info; struct cg14_par par; + struct list_head list; }; +static LIST_HEAD(cg14_list); -static void cg14_unmap_regs(struct all_info *all) -{ - if (all->par.regs) - of_iounmap(all->par.regs, sizeof(struct cg14_regs)); - if (all->par.clut) - of_iounmap(all->par.clut, sizeof(struct cg14_clut)); - if (all->par.cursor) - of_iounmap(all->par.cursor, sizeof(struct cg14_cursor)); - if (all->info.screen_base) - of_iounmap(all->info.screen_base, all->par.fbsize); -} - -static int __devinit cg14_init_one(struct of_device *op) +static void cg14_init_one(struct sbus_dev *sdev, int node, int parent_node) { - struct device_node *dp = op->node; struct all_info *all; - int is_8mb, linebytes, i, err; + unsigned long phys, rphys; + u32 bases[6]; + int is_8mb, linebytes, i; + + if (!sdev) { + if (prom_getproperty(node, "address", + (char *) &bases[0], sizeof(bases)) <= 0 + || !bases[0]) { + printk(KERN_ERR "cg14: Device is not mapped.\n"); + return; + } + if (__get_iospace(bases[0]) != __get_iospace(bases[1])) { + printk(KERN_ERR "cg14: I/O spaces don't match.\n"); + return; + } + } + + all = kmalloc(sizeof(*all), GFP_KERNEL); + if (!all) { + printk(KERN_ERR "cg14: Cannot allocate memory.\n"); + return; + } + memset(all, 0, sizeof(*all)); - all = kzalloc(sizeof(*all), GFP_KERNEL); - if (!all) - return -ENOMEM; + INIT_LIST_HEAD(&all->list); spin_lock_init(&all->par.lock); - sbusfb_fill_var(&all->info.var, dp->node, 8); + sbusfb_fill_var(&all->info.var, node, 8); all->info.var.red.length = 8; all->info.var.green.length = 8; all->info.var.blue.length = 8; - linebytes = of_getintprop_default(dp, "linebytes", - all->info.var.xres); + linebytes = prom_getintdefault(node, "linebytes", + all->info.var.xres); all->par.fbsize = PAGE_ALIGN(linebytes * all->info.var.yres); - if (!strcmp(dp->parent->name, "sbus") || - !strcmp(dp->parent->name, "sbi")) { - all->par.physbase = op->resource[0].start; - all->par.iospace = op->resource[0].flags & IORESOURCE_BITS; + all->par.sdev = sdev; + if (sdev) { + rphys = sdev->reg_addrs[0].phys_addr; + all->par.physbase = phys = sdev->reg_addrs[1].phys_addr; + all->par.iospace = sdev->reg_addrs[0].which_io; + + all->par.regs = sbus_ioremap(&sdev->resource[0], 0, + sizeof(struct cg14_regs), + "cg14 regs"); + all->par.clut = sbus_ioremap(&sdev->resource[0], CG14_CLUT1, + sizeof(struct cg14_clut), + "cg14 clut"); + all->par.cursor = sbus_ioremap(&sdev->resource[0], CG14_CURSORREGS, + sizeof(struct cg14_cursor), + "cg14 cursor"); + all->info.screen_base = sbus_ioremap(&sdev->resource[1], 0, + all->par.fbsize, "cg14 ram"); } else { - all->par.physbase = op->resource[1].start; - all->par.iospace = op->resource[0].flags & IORESOURCE_BITS; + rphys = __get_phys(bases[0]); + all->par.physbase = phys = __get_phys(bases[1]); + all->par.iospace = __get_iospace(bases[0]); + all->par.regs = (struct cg14_regs __iomem *)(unsigned long)bases[0]; + all->par.clut = (struct cg14_clut __iomem *)((unsigned long)bases[0] + + CG14_CLUT1); + all->par.cursor = + (struct cg14_cursor __iomem *)((unsigned long)bases[0] + + CG14_CURSORREGS); + + all->info.screen_base = (char __iomem *)(unsigned long)bases[1]; } - all->par.regs = of_ioremap(&op->resource[0], 0, - sizeof(struct cg14_regs), "cg14 regs"); - all->par.clut = of_ioremap(&op->resource[0], CG14_CLUT1, - sizeof(struct cg14_clut), "cg14 clut"); - all->par.cursor = of_ioremap(&op->resource[0], CG14_CURSORREGS, - sizeof(struct cg14_cursor), "cg14 cursor"); + prom_getproperty(node, "reg", (char *) &bases[0], sizeof(bases)); + is_8mb = (bases[5] == 0x800000); - all->info.screen_base = of_ioremap(&op->resource[1], 0, - all->par.fbsize, "cg14 ram"); + if (sizeof(all->par.mmap_map) != sizeof(__cg14_mmap_map)) { + extern void __cg14_mmap_sized_wrongly(void); - if (!all->par.regs || !all->par.clut || !all->par.cursor || - !all->info.screen_base) - cg14_unmap_regs(all); - - is_8mb = (((op->resource[1].end - op->resource[1].start) + 1) == - (8 * 1024 * 1024)); - - BUILD_BUG_ON(sizeof(all->par.mmap_map) != sizeof(__cg14_mmap_map)); + __cg14_mmap_sized_wrongly(); + } - memcpy(&all->par.mmap_map, &__cg14_mmap_map, - sizeof(all->par.mmap_map)); - + memcpy(&all->par.mmap_map, &__cg14_mmap_map, sizeof(all->par.mmap_map)); for (i = 0; i < CG14_MMAP_ENTRIES; i++) { struct sbus_mmap_map *map = &all->par.mmap_map[i]; if (!map->size) break; if (map->poff & 0x80000000) - map->poff = (map->poff & 0x7fffffff) + - (op->resource[0].start - - op->resource[1].start); + map->poff = (map->poff & 0x7fffffff) + rphys - phys; if (is_8mb && map->size >= 0x100000 && map->size <= 0x400000) @@ -541,87 +564,84 @@ static int __devinit cg14_init_one(struct of_device *op) __cg14_reset(&all->par); if (fb_alloc_cmap(&all->info.cmap, 256, 0)) { - cg14_unmap_regs(all); + printk(KERN_ERR "cg14: Could not allocate color map.\n"); kfree(all); - return -ENOMEM; + return; } fb_set_cmap(&all->info.cmap, &all->info); - cg14_init_fix(&all->info, linebytes, dp); + cg14_init_fix(&all->info, linebytes); - err = register_framebuffer(&all->info); - if (err < 0) { + if (register_framebuffer(&all->info) < 0) { + printk(KERN_ERR "cg14: Could not register framebuffer.\n"); fb_dealloc_cmap(&all->info.cmap); - cg14_unmap_regs(all); kfree(all); - return err; + return; } - dev_set_drvdata(&op->dev, all); - - printk("%s: cgfourteen at %lx:%lx, %dMB\n", - dp->full_name, - all->par.iospace, all->par.physbase, - all->par.ramsize >> 20); - - return 0; -} + list_add(&all->list, &cg14_list); -static int __devinit cg14_probe(struct of_device *dev, const struct of_device_id *match) -{ - struct of_device *op = to_of_device(&dev->dev); + printk("cg14: cgfourteen at %lx:%lx, %dMB\n", + all->par.iospace, all->par.physbase, all->par.ramsize >> 20); - return cg14_init_one(op); } -static int __devexit cg14_remove(struct of_device *dev) +int __init cg14_init(void) { - struct all_info *all = dev_get_drvdata(&dev->dev); - - unregister_framebuffer(&all->info); - fb_dealloc_cmap(&all->info.cmap); - - cg14_unmap_regs(all); + struct sbus_bus *sbus; + struct sbus_dev *sdev; - kfree(all); + if (fb_get_options("cg14fb", NULL)) + return -ENODEV; - dev_set_drvdata(&dev->dev, NULL); +#ifdef CONFIG_SPARC32 + { + int root, node; + + root = prom_getchild(prom_root_node); + root = prom_searchsiblings(root, "obio"); + if (root) { + node = prom_searchsiblings(prom_getchild(root), + "cgfourteen"); + if (node) + cg14_init_one(NULL, node, root); + } + } +#endif + for_all_sbusdev(sdev, sbus) { + if (!strcmp(sdev->prom_name, "cgfourteen")) + cg14_init_one(sdev, sdev->prom_node, sbus->prom_node); + } return 0; } -static struct of_device_id cg14_match[] = { - { - .name = "cgfourteen", - }, - {}, -}; -MODULE_DEVICE_TABLE(of, cg14_match); - -static struct of_platform_driver cg14_driver = { - .name = "cg14", - .match_table = cg14_match, - .probe = cg14_probe, - .remove = __devexit_p(cg14_remove), -}; - -int __init cg14_init(void) +void __exit cg14_exit(void) { - if (fb_get_options("cg14fb", NULL)) - return -ENODEV; + struct list_head *pos, *tmp; - return of_register_driver(&cg14_driver, &of_bus_type); + list_for_each_safe(pos, tmp, &cg14_list) { + struct all_info *all = list_entry(pos, typeof(*all), list); + + unregister_framebuffer(&all->info); + fb_dealloc_cmap(&all->info.cmap); + kfree(all); + } } -void __exit cg14_exit(void) +int __init +cg14_setup(char *arg) { - of_unregister_driver(&cg14_driver); + /* No cmdline options yet... */ + return 0; } module_init(cg14_init); + +#ifdef MODULE module_exit(cg14_exit); +#endif MODULE_DESCRIPTION("framebuffer driver for CGfourteen chipsets"); -MODULE_AUTHOR("David S. Miller "); -MODULE_VERSION("2.0"); +MODULE_AUTHOR("David S. Miller "); MODULE_LICENSE("GPL"); diff --git a/trunk/drivers/video/cg3.c b/trunk/drivers/video/cg3.c index 9c8c753ef454..3de6e1b5ab2f 100644 --- a/trunk/drivers/video/cg3.c +++ b/trunk/drivers/video/cg3.c @@ -1,6 +1,6 @@ /* cg3.c: CGTHREE frame buffer driver * - * Copyright (C) 2003, 2006 David S. Miller (davem@davemloft.net) + * Copyright (C) 2003 David S. Miller (davem@redhat.com) * Copyright (C) 1996,1998 Jakub Jelinek (jj@ultra.linux.cz) * Copyright (C) 1996 Miguel de Icaza (miguel@nuclecu.unam.mx) * Copyright (C) 1997 Eddie C. Dost (ecd@skynet.be) @@ -19,9 +19,8 @@ #include #include +#include #include -#include -#include #include #include "sbuslib.h" @@ -81,30 +80,30 @@ enum cg3_type { }; struct bt_regs { - u32 addr; - u32 color_map; - u32 control; - u32 cursor; + volatile u32 addr; + volatile u32 color_map; + volatile u32 control; + volatile u32 cursor; }; struct cg3_regs { struct bt_regs cmap; - u8 control; - u8 status; - u8 cursor_start; - u8 cursor_end; - u8 h_blank_start; - u8 h_blank_end; - u8 h_sync_start; - u8 h_sync_end; - u8 comp_sync_end; - u8 v_blank_start_high; - u8 v_blank_start_low; - u8 v_blank_end; - u8 v_sync_start; - u8 v_sync_end; - u8 xfer_holdoff_start; - u8 xfer_holdoff_end; + volatile u8 control; + volatile u8 status; + volatile u8 cursor_start; + volatile u8 cursor_end; + volatile u8 h_blank_start; + volatile u8 h_blank_end; + volatile u8 h_sync_start; + volatile u8 h_sync_end; + volatile u8 comp_sync_end; + volatile u8 v_blank_start_high; + volatile u8 v_blank_start_low; + volatile u8 v_blank_end; + volatile u8 v_sync_start; + volatile u8 v_sync_end; + volatile u8 xfer_holdoff_start; + volatile u8 xfer_holdoff_end; }; /* Offset of interesting structures in the OBIO space */ @@ -121,8 +120,9 @@ struct cg3_par { #define CG3_FLAG_RDI 0x00000002 unsigned long physbase; - unsigned long which_io; unsigned long fbsize; + + struct sbus_dev *sdev; }; /** @@ -235,7 +235,7 @@ static int cg3_mmap(struct fb_info *info, struct vm_area_struct *vma) return sbusfb_mmap_helper(cg3_mmap_map, par->physbase, par->fbsize, - par->which_io, + par->sdev->reg_addrs[0].which_io, vma); } @@ -252,9 +252,11 @@ static int cg3_ioctl(struct fb_info *info, unsigned int cmd, unsigned long arg) */ static void -cg3_init_fix(struct fb_info *info, int linebytes, struct device_node *dp) +cg3_init_fix(struct fb_info *info, int linebytes) { - strlcpy(info->fix.id, dp->name, sizeof(info->fix.id)); + struct cg3_par *par = (struct cg3_par *)info->par; + + strlcpy(info->fix.id, par->sdev->prom_name, sizeof(info->fix.id)); info->fix.type = FB_TYPE_PACKED_PIXELS; info->fix.visual = FB_VISUAL_PSEUDOCOLOR; @@ -265,15 +267,16 @@ cg3_init_fix(struct fb_info *info, int linebytes, struct device_node *dp) } static void cg3_rdi_maybe_fixup_var(struct fb_var_screeninfo *var, - struct device_node *dp) + struct sbus_dev *sdev) { - char *params; + char buffer[40]; char *p; int ww, hh; - params = of_get_property(dp, "params", NULL); - if (params) { - ww = simple_strtoul(params, &p, 10); + *buffer = 0; + prom_getstring(sdev->prom_node, "params", buffer, sizeof(buffer)); + if (*buffer) { + ww = simple_strtoul(buffer, &p, 10); if (ww && *p == 'x') { hh = simple_strtoul(p + 1, &p, 10); if (hh && *p == '-') { @@ -345,11 +348,11 @@ static void cg3_do_default_mode(struct cg3_par *par) sbus_writeb(p[1], regp); } for (p = cg3_dacvals; *p; p += 2) { - u8 __iomem *regp; + volatile u8 __iomem *regp; - regp = (u8 __iomem *)&par->regs->cmap.addr; + regp = (volatile u8 __iomem *)&par->regs->cmap.addr; sbus_writeb(p[0], regp); - regp = (u8 __iomem *)&par->regs->cmap.control; + regp = (volatile u8 __iomem *)&par->regs->cmap.control; sbus_writeb(p[1], regp); } } @@ -357,137 +360,129 @@ static void cg3_do_default_mode(struct cg3_par *par) struct all_info { struct fb_info info; struct cg3_par par; + struct list_head list; }; +static LIST_HEAD(cg3_list); -static int __devinit cg3_init_one(struct of_device *op) +static void cg3_init_one(struct sbus_dev *sdev) { - struct device_node *dp = op->node; struct all_info *all; - int linebytes, err; + int linebytes; + + all = kmalloc(sizeof(*all), GFP_KERNEL); + if (!all) { + printk(KERN_ERR "cg3: Cannot allocate memory.\n"); + return; + } + memset(all, 0, sizeof(*all)); - all = kzalloc(sizeof(*all), GFP_KERNEL); - if (!all) - return -ENOMEM; + INIT_LIST_HEAD(&all->list); spin_lock_init(&all->par.lock); + all->par.sdev = sdev; - all->par.physbase = op->resource[0].start; - all->par.which_io = op->resource[0].flags & IORESOURCE_BITS; + all->par.physbase = sdev->reg_addrs[0].phys_addr; - sbusfb_fill_var(&all->info.var, dp->node, 8); + sbusfb_fill_var(&all->info.var, sdev->prom_node, 8); all->info.var.red.length = 8; all->info.var.green.length = 8; all->info.var.blue.length = 8; - if (!strcmp(dp->name, "cgRDI")) + if (!strcmp(sdev->prom_name, "cgRDI")) all->par.flags |= CG3_FLAG_RDI; if (all->par.flags & CG3_FLAG_RDI) - cg3_rdi_maybe_fixup_var(&all->info.var, dp); + cg3_rdi_maybe_fixup_var(&all->info.var, sdev); - linebytes = of_getintprop_default(dp, "linebytes", - all->info.var.xres); + linebytes = prom_getintdefault(sdev->prom_node, "linebytes", + all->info.var.xres); all->par.fbsize = PAGE_ALIGN(linebytes * all->info.var.yres); - all->par.regs = of_ioremap(&op->resource[0], CG3_REGS_OFFSET, - sizeof(struct cg3_regs), "cg3 regs"); + all->par.regs = sbus_ioremap(&sdev->resource[0], CG3_REGS_OFFSET, + sizeof(struct cg3_regs), "cg3 regs"); all->info.flags = FBINFO_DEFAULT; all->info.fbops = &cg3_ops; - all->info.screen_base = - of_ioremap(&op->resource[0], CG3_RAM_OFFSET, - all->par.fbsize, "cg3 ram"); +#ifdef CONFIG_SPARC32 + all->info.screen_base = (char __iomem *) + prom_getintdefault(sdev->prom_node, "address", 0); +#endif + if (!all->info.screen_base) + all->info.screen_base = + sbus_ioremap(&sdev->resource[0], CG3_RAM_OFFSET, + all->par.fbsize, "cg3 ram"); all->info.par = &all->par; cg3_blank(0, &all->info); - if (!of_find_property(dp, "width", NULL)) + if (!prom_getbool(sdev->prom_node, "width")) cg3_do_default_mode(&all->par); if (fb_alloc_cmap(&all->info.cmap, 256, 0)) { - of_iounmap(all->par.regs, sizeof(struct cg3_regs)); - of_iounmap(all->info.screen_base, all->par.fbsize); + printk(KERN_ERR "cg3: Could not allocate color map.\n"); kfree(all); - return -ENOMEM; + return; } fb_set_cmap(&all->info.cmap, &all->info); - cg3_init_fix(&all->info, linebytes, dp); + cg3_init_fix(&all->info, linebytes); - err = register_framebuffer(&all->info); - if (err < 0) { + if (register_framebuffer(&all->info) < 0) { + printk(KERN_ERR "cg3: Could not register framebuffer.\n"); fb_dealloc_cmap(&all->info.cmap); - of_iounmap(all->par.regs, sizeof(struct cg3_regs)); - of_iounmap(all->info.screen_base, all->par.fbsize); kfree(all); - return err; + return; } - dev_set_drvdata(&op->dev, all); - - printk("%s: cg3 at %lx:%lx\n", - dp->full_name, all->par.which_io, all->par.physbase); + list_add(&all->list, &cg3_list); - return 0; + printk("cg3: %s at %lx:%lx\n", + sdev->prom_name, + (long) sdev->reg_addrs[0].which_io, + (long) sdev->reg_addrs[0].phys_addr); } -static int __devinit cg3_probe(struct of_device *dev, const struct of_device_id *match) +int __init cg3_init(void) { - struct of_device *op = to_of_device(&dev->dev); + struct sbus_bus *sbus; + struct sbus_dev *sdev; - return cg3_init_one(op); -} - -static int __devexit cg3_remove(struct of_device *dev) -{ - struct all_info *all = dev_get_drvdata(&dev->dev); - - unregister_framebuffer(&all->info); - fb_dealloc_cmap(&all->info.cmap); - - of_iounmap(all->par.regs, sizeof(struct cg3_regs)); - of_iounmap(all->info.screen_base, all->par.fbsize); - - kfree(all); + if (fb_get_options("cg3fb", NULL)) + return -ENODEV; - dev_set_drvdata(&dev->dev, NULL); + for_all_sbusdev(sdev, sbus) { + if (!strcmp(sdev->prom_name, "cgthree") || + !strcmp(sdev->prom_name, "cgRDI")) + cg3_init_one(sdev); + } return 0; } -static struct of_device_id cg3_match[] = { - { - .name = "cgthree", - }, - { - .name = "cgRDI", - }, - {}, -}; -MODULE_DEVICE_TABLE(of, cg3_match); - -static struct of_platform_driver cg3_driver = { - .name = "cg3", - .match_table = cg3_match, - .probe = cg3_probe, - .remove = __devexit_p(cg3_remove), -}; - -static int __init cg3_init(void) +void __exit cg3_exit(void) { - if (fb_get_options("cg3fb", NULL)) - return -ENODEV; + struct list_head *pos, *tmp; + + list_for_each_safe(pos, tmp, &cg3_list) { + struct all_info *all = list_entry(pos, typeof(*all), list); - return of_register_driver(&cg3_driver, &of_bus_type); + unregister_framebuffer(&all->info); + fb_dealloc_cmap(&all->info.cmap); + kfree(all); + } } -static void __exit cg3_exit(void) +int __init +cg3_setup(char *arg) { - of_unregister_driver(&cg3_driver); + /* No cmdline options yet... */ + return 0; } module_init(cg3_init); + +#ifdef MODULE module_exit(cg3_exit); +#endif MODULE_DESCRIPTION("framebuffer driver for CGthree chipsets"); -MODULE_AUTHOR("David S. Miller "); -MODULE_VERSION("2.0"); +MODULE_AUTHOR("David S. Miller "); MODULE_LICENSE("GPL"); diff --git a/trunk/drivers/video/cg6.c b/trunk/drivers/video/cg6.c index 64146be2eeb0..7aab91ead681 100644 --- a/trunk/drivers/video/cg6.c +++ b/trunk/drivers/video/cg6.c @@ -1,6 +1,6 @@ /* cg6.c: CGSIX (GX, GXplus, TGX) frame buffer driver * - * Copyright (C) 2003, 2006 David S. Miller (davem@davemloft.net) + * Copyright (C) 2003 David S. Miller (davem@redhat.com) * Copyright (C) 1996,1998 Jakub Jelinek (jj@ultra.linux.cz) * Copyright (C) 1996 Miguel de Icaza (miguel@nuclecu.unam.mx) * Copyright (C) 1996 Eddie C. Dost (ecd@skynet.be) @@ -19,8 +19,8 @@ #include #include -#include -#include +#include +#include #include #include "sbuslib.h" @@ -164,89 +164,89 @@ static struct fb_ops cg6_ops = { /* The contents are unknown */ struct cg6_tec { - int tec_matrix; - int tec_clip; - int tec_vdc; + volatile int tec_matrix; + volatile int tec_clip; + volatile int tec_vdc; }; struct cg6_thc { - u32 thc_pad0[512]; - u32 thc_hs; /* hsync timing */ - u32 thc_hsdvs; - u32 thc_hd; - u32 thc_vs; /* vsync timing */ - u32 thc_vd; - u32 thc_refresh; - u32 thc_misc; - u32 thc_pad1[56]; - u32 thc_cursxy; /* cursor x,y position (16 bits each) */ - u32 thc_cursmask[32]; /* cursor mask bits */ - u32 thc_cursbits[32]; /* what to show where mask enabled */ + uint thc_pad0[512]; + volatile uint thc_hs; /* hsync timing */ + volatile uint thc_hsdvs; + volatile uint thc_hd; + volatile uint thc_vs; /* vsync timing */ + volatile uint thc_vd; + volatile uint thc_refresh; + volatile uint thc_misc; + uint thc_pad1[56]; + volatile uint thc_cursxy; /* cursor x,y position (16 bits each) */ + volatile uint thc_cursmask[32]; /* cursor mask bits */ + volatile uint thc_cursbits[32]; /* what to show where mask enabled */ }; struct cg6_fbc { - u32 xxx0[1]; - u32 mode; - u32 clip; - u32 xxx1[1]; - u32 s; - u32 draw; - u32 blit; - u32 font; - u32 xxx2[24]; - u32 x0, y0, z0, color0; - u32 x1, y1, z1, color1; - u32 x2, y2, z2, color2; - u32 x3, y3, z3, color3; - u32 offx, offy; - u32 xxx3[2]; - u32 incx, incy; - u32 xxx4[2]; - u32 clipminx, clipminy; - u32 xxx5[2]; - u32 clipmaxx, clipmaxy; - u32 xxx6[2]; - u32 fg; - u32 bg; - u32 alu; - u32 pm; - u32 pixelm; - u32 xxx7[2]; - u32 patalign; - u32 pattern[8]; - u32 xxx8[432]; - u32 apointx, apointy, apointz; - u32 xxx9[1]; - u32 rpointx, rpointy, rpointz; - u32 xxx10[5]; - u32 pointr, pointg, pointb, pointa; - u32 alinex, aliney, alinez; - u32 xxx11[1]; - u32 rlinex, rliney, rlinez; - u32 xxx12[5]; - u32 liner, lineg, lineb, linea; - u32 atrix, atriy, atriz; - u32 xxx13[1]; - u32 rtrix, rtriy, rtriz; - u32 xxx14[5]; - u32 trir, trig, trib, tria; - u32 aquadx, aquady, aquadz; - u32 xxx15[1]; - u32 rquadx, rquady, rquadz; - u32 xxx16[5]; - u32 quadr, quadg, quadb, quada; - u32 arectx, arecty, arectz; - u32 xxx17[1]; - u32 rrectx, rrecty, rrectz; - u32 xxx18[5]; - u32 rectr, rectg, rectb, recta; + u32 xxx0[1]; + volatile u32 mode; + volatile u32 clip; + u32 xxx1[1]; + volatile u32 s; + volatile u32 draw; + volatile u32 blit; + volatile u32 font; + u32 xxx2[24]; + volatile u32 x0, y0, z0, color0; + volatile u32 x1, y1, z1, color1; + volatile u32 x2, y2, z2, color2; + volatile u32 x3, y3, z3, color3; + volatile u32 offx, offy; + u32 xxx3[2]; + volatile u32 incx, incy; + u32 xxx4[2]; + volatile u32 clipminx, clipminy; + u32 xxx5[2]; + volatile u32 clipmaxx, clipmaxy; + u32 xxx6[2]; + volatile u32 fg; + volatile u32 bg; + volatile u32 alu; + volatile u32 pm; + volatile u32 pixelm; + u32 xxx7[2]; + volatile u32 patalign; + volatile u32 pattern[8]; + u32 xxx8[432]; + volatile u32 apointx, apointy, apointz; + u32 xxx9[1]; + volatile u32 rpointx, rpointy, rpointz; + u32 xxx10[5]; + volatile u32 pointr, pointg, pointb, pointa; + volatile u32 alinex, aliney, alinez; + u32 xxx11[1]; + volatile u32 rlinex, rliney, rlinez; + u32 xxx12[5]; + volatile u32 liner, lineg, lineb, linea; + volatile u32 atrix, atriy, atriz; + u32 xxx13[1]; + volatile u32 rtrix, rtriy, rtriz; + u32 xxx14[5]; + volatile u32 trir, trig, trib, tria; + volatile u32 aquadx, aquady, aquadz; + u32 xxx15[1]; + volatile u32 rquadx, rquady, rquadz; + u32 xxx16[5]; + volatile u32 quadr, quadg, quadb, quada; + volatile u32 arectx, arecty, arectz; + u32 xxx17[1]; + volatile u32 rrectx, rrecty, rrectz; + u32 xxx18[5]; + volatile u32 rectr, rectg, rectb, recta; }; struct bt_regs { - u32 addr; - u32 color_map; - u32 control; - u32 cursor; + volatile u32 addr; + volatile u32 color_map; + volatile u32 control; + volatile u32 cursor; }; struct cg6_par { @@ -255,14 +255,15 @@ struct cg6_par { struct cg6_fbc __iomem *fbc; struct cg6_thc __iomem *thc; struct cg6_tec __iomem *tec; - u32 __iomem *fhc; + volatile u32 __iomem *fhc; u32 flags; #define CG6_FLAG_BLANKED 0x00000001 unsigned long physbase; - unsigned long which_io; unsigned long fbsize; + + struct sbus_dev *sdev; }; static int cg6_sync(struct fb_info *info) @@ -528,7 +529,8 @@ static int cg6_mmap(struct fb_info *info, struct vm_area_struct *vma) return sbusfb_mmap_helper(cg6_mmap_map, par->physbase, par->fbsize, - par->which_io, vma); + par->sdev->reg_addrs[0].which_io, + vma); } static int cg6_ioctl(struct fb_info *info, unsigned int cmd, unsigned long arg) @@ -656,75 +658,62 @@ static void cg6_chip_init(struct fb_info *info) struct all_info { struct fb_info info; struct cg6_par par; + struct list_head list; }; +static LIST_HEAD(cg6_list); -static void cg6_unmap_regs(struct all_info *all) -{ - if (all->par.fbc) - of_iounmap(all->par.fbc, 4096); - if (all->par.tec) - of_iounmap(all->par.tec, sizeof(struct cg6_tec)); - if (all->par.thc) - of_iounmap(all->par.thc, sizeof(struct cg6_thc)); - if (all->par.bt) - of_iounmap(all->par.bt, sizeof(struct bt_regs)); - if (all->par.fhc) - of_iounmap(all->par.fhc, sizeof(u32)); - - if (all->info.screen_base) - of_iounmap(all->info.screen_base, all->par.fbsize); -} - -static int __devinit cg6_init_one(struct of_device *op) +static void cg6_init_one(struct sbus_dev *sdev) { - struct device_node *dp = op->node; struct all_info *all; - int linebytes, err; + int linebytes; - all = kzalloc(sizeof(*all), GFP_KERNEL); - if (!all) - return -ENOMEM; + all = kmalloc(sizeof(*all), GFP_KERNEL); + if (!all) { + printk(KERN_ERR "cg6: Cannot allocate memory.\n"); + return; + } + memset(all, 0, sizeof(*all)); + + INIT_LIST_HEAD(&all->list); spin_lock_init(&all->par.lock); + all->par.sdev = sdev; - all->par.physbase = op->resource[0].start; - all->par.which_io = op->resource[0].flags & IORESOURCE_BITS; + all->par.physbase = sdev->reg_addrs[0].phys_addr; - sbusfb_fill_var(&all->info.var, dp->node, 8); + sbusfb_fill_var(&all->info.var, sdev->prom_node, 8); all->info.var.red.length = 8; all->info.var.green.length = 8; all->info.var.blue.length = 8; - linebytes = of_getintprop_default(dp, "linebytes", - all->info.var.xres); + linebytes = prom_getintdefault(sdev->prom_node, "linebytes", + all->info.var.xres); all->par.fbsize = PAGE_ALIGN(linebytes * all->info.var.yres); - if (of_find_property(dp, "dblbuf", NULL)) + if (prom_getbool(sdev->prom_node, "dblbuf")) all->par.fbsize *= 4; - all->par.fbc = of_ioremap(&op->resource[0], CG6_FBC_OFFSET, - 4096, "cgsix fbc"); - all->par.tec = of_ioremap(&op->resource[0], CG6_TEC_OFFSET, - sizeof(struct cg6_tec), "cgsix tec"); - all->par.thc = of_ioremap(&op->resource[0], CG6_THC_OFFSET, - sizeof(struct cg6_thc), "cgsix thc"); - all->par.bt = of_ioremap(&op->resource[0], CG6_BROOKTREE_OFFSET, - sizeof(struct bt_regs), "cgsix dac"); - all->par.fhc = of_ioremap(&op->resource[0], CG6_FHC_OFFSET, - sizeof(u32), "cgsix fhc"); + all->par.fbc = sbus_ioremap(&sdev->resource[0], CG6_FBC_OFFSET, + 4096, "cgsix fbc"); + all->par.tec = sbus_ioremap(&sdev->resource[0], CG6_TEC_OFFSET, + sizeof(struct cg6_tec), "cgsix tec"); + all->par.thc = sbus_ioremap(&sdev->resource[0], CG6_THC_OFFSET, + sizeof(struct cg6_thc), "cgsix thc"); + all->par.bt = sbus_ioremap(&sdev->resource[0], CG6_BROOKTREE_OFFSET, + sizeof(struct bt_regs), "cgsix dac"); + all->par.fhc = sbus_ioremap(&sdev->resource[0], CG6_FHC_OFFSET, + sizeof(u32), "cgsix fhc"); all->info.flags = FBINFO_DEFAULT | FBINFO_HWACCEL_IMAGEBLIT | FBINFO_HWACCEL_COPYAREA | FBINFO_HWACCEL_FILLRECT; all->info.fbops = &cg6_ops; - - all->info.screen_base = of_ioremap(&op->resource[0], CG6_RAM_OFFSET, - all->par.fbsize, "cgsix ram"); - if (!all->par.fbc || !all->par.tec || !all->par.thc || - !all->par.bt || !all->par.fhc || !all->info.screen_base) { - cg6_unmap_regs(all); - kfree(all); - return -ENOMEM; - } - +#ifdef CONFIG_SPARC32 + all->info.screen_base = (char __iomem *) + prom_getintdefault(sdev->prom_node, "address", 0); +#endif + if (!all->info.screen_base) + all->info.screen_base = + sbus_ioremap(&sdev->resource[0], CG6_RAM_OFFSET, + all->par.fbsize, "cgsix ram"); all->info.par = &all->par; all->info.var.accel_flags = FB_ACCELF_TEXT; @@ -734,90 +723,72 @@ static int __devinit cg6_init_one(struct of_device *op) cg6_blank(0, &all->info); if (fb_alloc_cmap(&all->info.cmap, 256, 0)) { - cg6_unmap_regs(all); + printk(KERN_ERR "cg6: Could not allocate color map.\n"); kfree(all); - return -ENOMEM; + return; } fb_set_cmap(&all->info.cmap, &all->info); cg6_init_fix(&all->info, linebytes); - err = register_framebuffer(&all->info); - if (err < 0) { - cg6_unmap_regs(all); + if (register_framebuffer(&all->info) < 0) { + printk(KERN_ERR "cg6: Could not register framebuffer.\n"); fb_dealloc_cmap(&all->info.cmap); kfree(all); - return err; + return; } - dev_set_drvdata(&op->dev, all); + list_add(&all->list, &cg6_list); - printk("%s: CGsix [%s] at %lx:%lx\n", - dp->full_name, + printk("cg6: CGsix [%s] at %lx:%lx\n", all->info.fix.id, - all->par.which_io, all->par.physbase); - - return 0; + (long) sdev->reg_addrs[0].which_io, + (long) sdev->reg_addrs[0].phys_addr); } -static int __devinit cg6_probe(struct of_device *dev, const struct of_device_id *match) +int __init cg6_init(void) { - struct of_device *op = to_of_device(&dev->dev); - - return cg6_init_one(op); -} - -static int __devexit cg6_remove(struct of_device *dev) -{ - struct all_info *all = dev_get_drvdata(&dev->dev); - - unregister_framebuffer(&all->info); - fb_dealloc_cmap(&all->info.cmap); + struct sbus_bus *sbus; + struct sbus_dev *sdev; - cg6_unmap_regs(all); - - kfree(all); + if (fb_get_options("cg6fb", NULL)) + return -ENODEV; - dev_set_drvdata(&dev->dev, NULL); + for_all_sbusdev(sdev, sbus) { + if (!strcmp(sdev->prom_name, "cgsix") || + !strcmp(sdev->prom_name, "cgthree+")) + cg6_init_one(sdev); + } return 0; } -static struct of_device_id cg6_match[] = { - { - .name = "cgsix", - }, - { - .name = "cgthree+", - }, - {}, -}; -MODULE_DEVICE_TABLE(of, cg6_match); - -static struct of_platform_driver cg6_driver = { - .name = "cg6", - .match_table = cg6_match, - .probe = cg6_probe, - .remove = __devexit_p(cg6_remove), -}; - -static int __init cg6_init(void) +void __exit cg6_exit(void) { - if (fb_get_options("cg6fb", NULL)) - return -ENODEV; + struct list_head *pos, *tmp; - return of_register_driver(&cg6_driver, &of_bus_type); + list_for_each_safe(pos, tmp, &cg6_list) { + struct all_info *all = list_entry(pos, typeof(*all), list); + + unregister_framebuffer(&all->info); + fb_dealloc_cmap(&all->info.cmap); + kfree(all); + } } -static void __exit cg6_exit(void) +int __init +cg6_setup(char *arg) { - of_unregister_driver(&cg6_driver); + /* No cmdline options yet... */ + return 0; } module_init(cg6_init); + +#ifdef MODULE module_exit(cg6_exit); +#endif MODULE_DESCRIPTION("framebuffer driver for CGsix chipsets"); -MODULE_AUTHOR("David S. Miller "); -MODULE_VERSION("2.0"); +MODULE_AUTHOR("David S. Miller "); MODULE_LICENSE("GPL"); diff --git a/trunk/drivers/video/chipsfb.c b/trunk/drivers/video/chipsfb.c index 0e465c80ef24..d76bbfac92cc 100644 --- a/trunk/drivers/video/chipsfb.c +++ b/trunk/drivers/video/chipsfb.c @@ -14,6 +14,7 @@ * more details. */ +#include #include #include #include diff --git a/trunk/drivers/video/cirrusfb.c b/trunk/drivers/video/cirrusfb.c index 7355da09c721..dda240eb7360 100644 --- a/trunk/drivers/video/cirrusfb.c +++ b/trunk/drivers/video/cirrusfb.c @@ -36,6 +36,7 @@ #define CIRRUSFB_VERSION "2.0-pre2" +#include #include #include #include diff --git a/trunk/drivers/video/console/bitblit.c b/trunk/drivers/video/console/bitblit.c index 308850df16fe..eea422eb1ab5 100644 --- a/trunk/drivers/video/console/bitblit.c +++ b/trunk/drivers/video/console/bitblit.c @@ -10,6 +10,7 @@ * more details. */ +#include #include #include #include diff --git a/trunk/drivers/video/console/dummycon.c b/trunk/drivers/video/console/dummycon.c index 878707a04398..1ecda91e5a9c 100644 --- a/trunk/drivers/video/console/dummycon.c +++ b/trunk/drivers/video/console/dummycon.c @@ -22,6 +22,7 @@ #define DUMMY_ROWS ORIG_VIDEO_LINES #elif defined(__hppa__) /* set by Kconfig. Use 80x25 for 640x480 and 160x64 for 1280x1024 */ +#include #define DUMMY_COLUMNS CONFIG_DUMMY_CONSOLE_COLUMNS #define DUMMY_ROWS CONFIG_DUMMY_CONSOLE_ROWS #else diff --git a/trunk/drivers/video/console/fbcon.c b/trunk/drivers/video/console/fbcon.c index 94e9f7069bef..5dc4083552d8 100644 --- a/trunk/drivers/video/console/fbcon.c +++ b/trunk/drivers/video/console/fbcon.c @@ -58,6 +58,7 @@ #undef FBCONDEBUG +#include #include #include #include diff --git a/trunk/drivers/video/console/fbcon.h b/trunk/drivers/video/console/fbcon.h index f244ad066d68..3487a636370a 100644 --- a/trunk/drivers/video/console/fbcon.h +++ b/trunk/drivers/video/console/fbcon.h @@ -11,6 +11,7 @@ #ifndef _VIDEO_FBCON_H #define _VIDEO_FBCON_H +#include #include #include #include diff --git a/trunk/drivers/video/console/fbcon_ccw.c b/trunk/drivers/video/console/fbcon_ccw.c index 4481c80b8b2a..990289a69b78 100644 --- a/trunk/drivers/video/console/fbcon_ccw.c +++ b/trunk/drivers/video/console/fbcon_ccw.c @@ -8,6 +8,7 @@ * more details. */ +#include #include #include #include diff --git a/trunk/drivers/video/console/fbcon_cw.c b/trunk/drivers/video/console/fbcon_cw.c index 7f92c06afea7..d44c5fa515fb 100644 --- a/trunk/drivers/video/console/fbcon_cw.c +++ b/trunk/drivers/video/console/fbcon_cw.c @@ -8,6 +8,7 @@ * more details. */ +#include #include #include #include diff --git a/trunk/drivers/video/console/fbcon_rotate.c b/trunk/drivers/video/console/fbcon_rotate.c index 00884e013f0f..2dc091fbd5c9 100644 --- a/trunk/drivers/video/console/fbcon_rotate.c +++ b/trunk/drivers/video/console/fbcon_rotate.c @@ -8,6 +8,7 @@ * more details. */ +#include #include #include #include diff --git a/trunk/drivers/video/console/fbcon_ud.c b/trunk/drivers/video/console/fbcon_ud.c index ab91005e64dc..f56ed068a5bc 100644 --- a/trunk/drivers/video/console/fbcon_ud.c +++ b/trunk/drivers/video/console/fbcon_ud.c @@ -8,6 +8,7 @@ * more details. */ +#include #include #include #include diff --git a/trunk/drivers/video/console/font_acorn_8x8.c b/trunk/drivers/video/console/font_acorn_8x8.c index 40f3d4eeb198..2d2e39632e2d 100644 --- a/trunk/drivers/video/console/font_acorn_8x8.c +++ b/trunk/drivers/video/console/font_acorn_8x8.c @@ -1,5 +1,6 @@ /* Acorn-like font definition, with PC graphics characters */ +#include #include static const unsigned char acorndata_8x8[] = { diff --git a/trunk/drivers/video/console/fonts.c b/trunk/drivers/video/console/fonts.c index c960728b7e82..0cc1bfda76a6 100644 --- a/trunk/drivers/video/console/fonts.c +++ b/trunk/drivers/video/console/fonts.c @@ -12,6 +12,7 @@ * for more details. */ +#include #include #include #include diff --git a/trunk/drivers/video/console/promcon.c b/trunk/drivers/video/console/promcon.c index 5cd5e114d1e6..d6e6ad537f9f 100644 --- a/trunk/drivers/video/console/promcon.c +++ b/trunk/drivers/video/console/promcon.c @@ -5,6 +5,7 @@ * Copyright (C) 1998 Jakub Jelinek (jj@ultra.linux.cz) */ +#include #include #include #include diff --git a/trunk/drivers/video/console/sticore.c b/trunk/drivers/video/console/sticore.c index 88e7038eab88..74ac2acaf72c 100644 --- a/trunk/drivers/video/console/sticore.c +++ b/trunk/drivers/video/console/sticore.c @@ -13,6 +13,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/video/console/tileblit.c b/trunk/drivers/video/console/tileblit.c index d981fe4d86c6..153352ca9461 100644 --- a/trunk/drivers/video/console/tileblit.c +++ b/trunk/drivers/video/console/tileblit.c @@ -8,6 +8,7 @@ * more details. */ +#include #include #include #include diff --git a/trunk/drivers/video/console/vgacon.c b/trunk/drivers/video/console/vgacon.c index 05735ff4e9c5..01401cd63ac0 100644 --- a/trunk/drivers/video/console/vgacon.c +++ b/trunk/drivers/video/console/vgacon.c @@ -33,6 +33,7 @@ * more details. */ +#include #include #include #include diff --git a/trunk/drivers/video/controlfb.c b/trunk/drivers/video/controlfb.c index acdd6a103dbb..655301a8671c 100644 --- a/trunk/drivers/video/controlfb.c +++ b/trunk/drivers/video/controlfb.c @@ -31,6 +31,7 @@ * more details. */ +#include #include #include #include diff --git a/trunk/drivers/video/cyber2000fb.c b/trunk/drivers/video/cyber2000fb.c index 2e2924957d8f..55a3514157ed 100644 --- a/trunk/drivers/video/cyber2000fb.c +++ b/trunk/drivers/video/cyber2000fb.c @@ -36,6 +36,7 @@ * (which, incidentally, is about the same saving as a 2.5in hard disk * entering standby mode.) */ +#include #include #include #include diff --git a/trunk/drivers/video/cyber2000fb.h b/trunk/drivers/video/cyber2000fb.h index de4fc43e51c1..bd7e1c040781 100644 --- a/trunk/drivers/video/cyber2000fb.h +++ b/trunk/drivers/video/cyber2000fb.h @@ -9,6 +9,7 @@ * * Integraphics Cyber2000 frame buffer device */ +#include /* * Internal CyberPro sizes and offsets. diff --git a/trunk/drivers/video/cyblafb.c b/trunk/drivers/video/cyblafb.c index 94a66c2d2cf5..0ae0a97b0fed 100644 --- a/trunk/drivers/video/cyblafb.c +++ b/trunk/drivers/video/cyblafb.c @@ -14,6 +14,7 @@ #define CYBLAFB_PIXMAPSIZE 8192 +#include #include #include #include diff --git a/trunk/drivers/video/fbmem.c b/trunk/drivers/video/fbmem.c index 33034f81114d..a171daab0ad0 100644 --- a/trunk/drivers/video/fbmem.c +++ b/trunk/drivers/video/fbmem.c @@ -11,6 +11,7 @@ * for more details. */ +#include #include #include diff --git a/trunk/drivers/video/ffb.c b/trunk/drivers/video/ffb.c index 2a0e8210d398..7633e41adda1 100644 --- a/trunk/drivers/video/ffb.c +++ b/trunk/drivers/video/ffb.c @@ -1,6 +1,6 @@ /* ffb.c: Creator/Elite3D frame buffer driver * - * Copyright (C) 2003, 2006 David S. Miller (davem@davemloft.net) + * Copyright (C) 2003 David S. Miller (davem@redhat.com) * Copyright (C) 1997,1998,1999 Jakub Jelinek (jj@ultra.linux.cz) * * Driver layout based loosely on tgafb.c, see that file for credits. @@ -19,8 +19,7 @@ #include #include -#include -#include +#include #include #include "sbuslib.h" @@ -185,161 +184,161 @@ static struct fb_ops ffb_ops = { struct ffb_fbc { /* Next vertex registers */ - u32 xxx1[3]; - u32 alpha; - u32 red; - u32 green; - u32 blue; - u32 depth; - u32 y; - u32 x; - u32 xxx2[2]; - u32 ryf; - u32 rxf; - u32 xxx3[2]; + u32 xxx1[3]; + volatile u32 alpha; + volatile u32 red; + volatile u32 green; + volatile u32 blue; + volatile u32 depth; + volatile u32 y; + volatile u32 x; + u32 xxx2[2]; + volatile u32 ryf; + volatile u32 rxf; + u32 xxx3[2]; - u32 dmyf; - u32 dmxf; - u32 xxx4[2]; - u32 ebyi; - u32 ebxi; - u32 xxx5[2]; - u32 by; - u32 bx; - u32 dy; - u32 dx; - u32 bh; - u32 bw; - u32 xxx6[2]; + volatile u32 dmyf; + volatile u32 dmxf; + u32 xxx4[2]; + volatile u32 ebyi; + volatile u32 ebxi; + u32 xxx5[2]; + volatile u32 by; + volatile u32 bx; + u32 dy; + u32 dx; + volatile u32 bh; + volatile u32 bw; + u32 xxx6[2]; - u32 xxx7[32]; + u32 xxx7[32]; /* Setup unit vertex state register */ - u32 suvtx; - u32 xxx8[63]; + volatile u32 suvtx; + u32 xxx8[63]; /* Control registers */ - u32 ppc; - u32 wid; - u32 fg; - u32 bg; - u32 consty; - u32 constz; - u32 xclip; - u32 dcss; - u32 vclipmin; - u32 vclipmax; - u32 vclipzmin; - u32 vclipzmax; - u32 dcsf; - u32 dcsb; - u32 dczf; - u32 dczb; + volatile u32 ppc; + volatile u32 wid; + volatile u32 fg; + volatile u32 bg; + volatile u32 consty; + volatile u32 constz; + volatile u32 xclip; + volatile u32 dcss; + volatile u32 vclipmin; + volatile u32 vclipmax; + volatile u32 vclipzmin; + volatile u32 vclipzmax; + volatile u32 dcsf; + volatile u32 dcsb; + volatile u32 dczf; + volatile u32 dczb; - u32 xxx9; - u32 blendc; - u32 blendc1; - u32 blendc2; - u32 fbramitc; - u32 fbc; - u32 rop; - u32 cmp; - u32 matchab; - u32 matchc; - u32 magnab; - u32 magnc; - u32 fbcfg0; - u32 fbcfg1; - u32 fbcfg2; - u32 fbcfg3; + u32 xxx9; + volatile u32 blendc; + volatile u32 blendc1; + volatile u32 blendc2; + volatile u32 fbramitc; + volatile u32 fbc; + volatile u32 rop; + volatile u32 cmp; + volatile u32 matchab; + volatile u32 matchc; + volatile u32 magnab; + volatile u32 magnc; + volatile u32 fbcfg0; + volatile u32 fbcfg1; + volatile u32 fbcfg2; + volatile u32 fbcfg3; - u32 ppcfg; - u32 pick; - u32 fillmode; - u32 fbramwac; - u32 pmask; - u32 xpmask; - u32 ypmask; - u32 zpmask; - u32 clip0min; - u32 clip0max; - u32 clip1min; - u32 clip1max; - u32 clip2min; - u32 clip2max; - u32 clip3min; - u32 clip3max; + u32 ppcfg; + volatile u32 pick; + volatile u32 fillmode; + volatile u32 fbramwac; + volatile u32 pmask; + volatile u32 xpmask; + volatile u32 ypmask; + volatile u32 zpmask; + volatile u32 clip0min; + volatile u32 clip0max; + volatile u32 clip1min; + volatile u32 clip1max; + volatile u32 clip2min; + volatile u32 clip2max; + volatile u32 clip3min; + volatile u32 clip3max; /* New 3dRAM III support regs */ - u32 rawblend2; - u32 rawpreblend; - u32 rawstencil; - u32 rawstencilctl; - u32 threedram1; - u32 threedram2; - u32 passin; - u32 rawclrdepth; - u32 rawpmask; - u32 rawcsrc; - u32 rawmatch; - u32 rawmagn; - u32 rawropblend; - u32 rawcmp; - u32 rawwac; - u32 fbramid; + volatile u32 rawblend2; + volatile u32 rawpreblend; + volatile u32 rawstencil; + volatile u32 rawstencilctl; + volatile u32 threedram1; + volatile u32 threedram2; + volatile u32 passin; + volatile u32 rawclrdepth; + volatile u32 rawpmask; + volatile u32 rawcsrc; + volatile u32 rawmatch; + volatile u32 rawmagn; + volatile u32 rawropblend; + volatile u32 rawcmp; + volatile u32 rawwac; + volatile u32 fbramid; - u32 drawop; - u32 xxx10[2]; - u32 fontlpat; - u32 xxx11; - u32 fontxy; - u32 fontw; - u32 fontinc; - u32 font; - u32 xxx12[3]; - u32 blend2; - u32 preblend; - u32 stencil; - u32 stencilctl; - - u32 xxx13[4]; - u32 dcss1; - u32 dcss2; - u32 dcss3; - u32 widpmask; - u32 dcs2; - u32 dcs3; - u32 dcs4; - u32 xxx14; - u32 dcd2; - u32 dcd3; - u32 dcd4; - u32 xxx15; + volatile u32 drawop; + u32 xxx10[2]; + volatile u32 fontlpat; + u32 xxx11; + volatile u32 fontxy; + volatile u32 fontw; + volatile u32 fontinc; + volatile u32 font; + u32 xxx12[3]; + volatile u32 blend2; + volatile u32 preblend; + volatile u32 stencil; + volatile u32 stencilctl; + + u32 xxx13[4]; + volatile u32 dcss1; + volatile u32 dcss2; + volatile u32 dcss3; + volatile u32 widpmask; + volatile u32 dcs2; + volatile u32 dcs3; + volatile u32 dcs4; + u32 xxx14; + volatile u32 dcd2; + volatile u32 dcd3; + volatile u32 dcd4; + u32 xxx15; - u32 pattern[32]; + volatile u32 pattern[32]; - u32 xxx16[256]; + u32 xxx16[256]; - u32 devid; - u32 xxx17[63]; + volatile u32 devid; + u32 xxx17[63]; - u32 ucsr; - u32 xxx18[31]; + volatile u32 ucsr; + u32 xxx18[31]; - u32 mer; + volatile u32 mer; }; struct ffb_dac { - u32 type; - u32 value; - u32 type2; - u32 value2; + volatile u32 type; + volatile u32 value; + volatile u32 type2; + volatile u32 value2; }; struct ffb_par { spinlock_t lock; - struct ffb_fbc __iomem *fbc; - struct ffb_dac __iomem *dac; + struct ffb_fbc *fbc; + struct ffb_dac *dac; u32 flags; #define FFB_FLAG_AFB 0x00000001 @@ -354,13 +353,16 @@ struct ffb_par { unsigned long physbase; unsigned long fbsize; + char name[64]; + int prom_node; + int prom_parent_node; int dac_rev; int board_type; }; static void FFBFifo(struct ffb_par *par, int n) { - struct ffb_fbc __iomem *fbc; + struct ffb_fbc *fbc; int cache = par->fifo_cache; if (cache - n < 0) { @@ -373,7 +375,7 @@ static void FFBFifo(struct ffb_par *par, int n) static void FFBWait(struct ffb_par *par) { - struct ffb_fbc __iomem *fbc; + struct ffb_fbc *fbc; int limit = 10000; fbc = par->fbc; @@ -406,8 +408,8 @@ static __inline__ void ffb_rop(struct ffb_par *par, u32 rop) static void ffb_switch_from_graph(struct ffb_par *par) { - struct ffb_fbc __iomem *fbc = par->fbc; - struct ffb_dac __iomem *dac = par->dac; + struct ffb_fbc *fbc = par->fbc; + struct ffb_dac *dac = par->dac; unsigned long flags; spin_lock_irqsave(&par->lock, flags); @@ -460,7 +462,7 @@ static int ffb_pan_display(struct fb_var_screeninfo *var, struct fb_info *info) static void ffb_fillrect(struct fb_info *info, const struct fb_fillrect *rect) { struct ffb_par *par = (struct ffb_par *) info->par; - struct ffb_fbc __iomem *fbc = par->fbc; + struct ffb_fbc *fbc = par->fbc; unsigned long flags; u32 fg; @@ -503,7 +505,7 @@ static void ffb_copyarea(struct fb_info *info, const struct fb_copyarea *area) { struct ffb_par *par = (struct ffb_par *) info->par; - struct ffb_fbc __iomem *fbc = par->fbc; + struct ffb_fbc *fbc = par->fbc; unsigned long flags; if (area->dx != area->sx || @@ -539,7 +541,7 @@ ffb_copyarea(struct fb_info *info, const struct fb_copyarea *area) static void ffb_imageblit(struct fb_info *info, const struct fb_image *image) { struct ffb_par *par = (struct ffb_par *) info->par; - struct ffb_fbc __iomem *fbc = par->fbc; + struct ffb_fbc *fbc = par->fbc; const u8 *data = image->data; unsigned long flags; u32 fg, bg, xy; @@ -662,7 +664,7 @@ static int ffb_blank(int blank, struct fb_info *info) { struct ffb_par *par = (struct ffb_par *) info->par; - struct ffb_dac __iomem *dac = par->dac; + struct ffb_dac *dac = par->dac; unsigned long flags; u32 tmp; @@ -881,42 +883,78 @@ ffb_init_fix(struct fb_info *info) info->fix.accel = FB_ACCEL_SUN_CREATOR; } +static int ffb_apply_upa_parent_ranges(int parent, + struct linux_prom64_registers *regs) +{ + struct linux_prom64_ranges ranges[PROMREG_MAX]; + char name[128]; + int len, i; + + prom_getproperty(parent, "name", name, sizeof(name)); + if (strcmp(name, "upa") != 0) + return 0; + + len = prom_getproperty(parent, "ranges", (void *) ranges, sizeof(ranges)); + if (len <= 0) + return 1; + + len /= sizeof(struct linux_prom64_ranges); + for (i = 0; i < len; i++) { + struct linux_prom64_ranges *rng = &ranges[i]; + u64 phys_addr = regs->phys_addr; + + if (phys_addr >= rng->ot_child_base && + phys_addr < (rng->ot_child_base + rng->or_size)) { + regs->phys_addr -= rng->ot_child_base; + regs->phys_addr += rng->ot_parent_base; + return 0; + } + } + + return 1; +} + struct all_info { struct fb_info info; struct ffb_par par; u32 pseudo_palette[256]; + struct list_head list; }; +static LIST_HEAD(ffb_list); -static int ffb_init_one(struct of_device *op) +static void ffb_init_one(int node, int parent) { - struct device_node *dp = op->node; - struct ffb_fbc __iomem *fbc; - struct ffb_dac __iomem *dac; + struct linux_prom64_registers regs[2*PROMREG_MAX]; + struct ffb_fbc *fbc; + struct ffb_dac *dac; struct all_info *all; - int err; - all = kzalloc(sizeof(*all), GFP_KERNEL); - if (!all) - return -ENOMEM; + if (prom_getproperty(node, "reg", (void *) regs, sizeof(regs)) <= 0) { + printk("ffb: Cannot get reg device node property.\n"); + return; + } - spin_lock_init(&all->par.lock); - all->par.fbc = of_ioremap(&op->resource[2], 0, - sizeof(struct ffb_fbc), "ffb fbc"); - if (!all->par.fbc) { - kfree(all); - return -ENOMEM; + if (ffb_apply_upa_parent_ranges(parent, ®s[0])) { + printk("ffb: Cannot apply parent ranges to regs.\n"); + return; } - all->par.dac = of_ioremap(&op->resource[1], 0, - sizeof(struct ffb_dac), "ffb dac"); - if (!all->par.dac) { - of_iounmap(all->par.fbc, sizeof(struct ffb_fbc)); - kfree(all); - return -ENOMEM; + all = kmalloc(sizeof(*all), GFP_KERNEL); + if (!all) { + printk(KERN_ERR "ffb: Cannot allocate memory.\n"); + return; } + memset(all, 0, sizeof(*all)); + + INIT_LIST_HEAD(&all->list); + spin_lock_init(&all->par.lock); + all->par.fbc = (struct ffb_fbc *)(regs[0].phys_addr + FFB_FBC_REGS_POFF); + all->par.dac = (struct ffb_dac *)(regs[0].phys_addr + FFB_DAC_POFF); all->par.rop_cache = FFB_ROP_NEW; - all->par.physbase = op->resource[0].start; + all->par.physbase = regs[0].phys_addr; + all->par.prom_node = node; + all->par.prom_parent_node = parent; /* Don't mention copyarea, so SCROLL_REDRAW is always * used. It is the fastest on this chip. @@ -930,7 +968,7 @@ static int ffb_init_one(struct of_device *op) all->info.par = &all->par; all->info.pseudo_palette = all->pseudo_palette; - sbusfb_fill_var(&all->info.var, dp->node, 32); + sbusfb_fill_var(&all->info.var, all->par.prom_node, 32); all->par.fbsize = PAGE_ALIGN(all->info.var.xres * all->info.var.yres * 4); @@ -938,13 +976,14 @@ static int ffb_init_one(struct of_device *op) all->info.var.accel_flags = FB_ACCELF_TEXT; - if (!strcmp(dp->name, "SUNW,afb")) + prom_getstring(node, "name", all->par.name, sizeof(all->par.name)); + if (!strcmp(all->par.name, "SUNW,afb")) all->par.flags |= FFB_FLAG_AFB; - all->par.board_type = of_getintprop_default(dp, "board_type", 0); + all->par.board_type = prom_getintdefault(node, "board_type", 0); fbc = all->par.fbc; - if ((upa_readl(&fbc->ucsr) & FFB_UCSR_ALL_ERRORS) != 0) + if((upa_readl(&fbc->ucsr) & FFB_UCSR_ALL_ERRORS) != 0) upa_writel(FFB_UCSR_ALL_ERRORS, &fbc->ucsr); ffb_switch_from_graph(&all->par); @@ -969,88 +1008,81 @@ static int ffb_init_one(struct of_device *op) if (fb_alloc_cmap(&all->info.cmap, 256, 0)) { printk(KERN_ERR "ffb: Could not allocate color map.\n"); kfree(all); - return -ENOMEM; + return; } ffb_init_fix(&all->info); - err = register_framebuffer(&all->info); - if (err < 0) { + if (register_framebuffer(&all->info) < 0) { printk(KERN_ERR "ffb: Could not register framebuffer.\n"); fb_dealloc_cmap(&all->info.cmap); kfree(all); - return err; + return; } - dev_set_drvdata(&op->dev, all); + list_add(&all->list, &ffb_list); - printk("%s: %s at %016lx, type %d, DAC revision %d\n", - dp->full_name, + printk("ffb: %s at %016lx type %d DAC %d\n", ((all->par.flags & FFB_FLAG_AFB) ? "AFB" : "FFB"), - all->par.physbase, all->par.board_type, all->par.dac_rev); - - return 0; + regs[0].phys_addr, all->par.board_type, all->par.dac_rev); } -static int __devinit ffb_probe(struct of_device *dev, const struct of_device_id *match) +static void ffb_scan_siblings(int root) { - struct of_device *op = to_of_device(&dev->dev); - - return ffb_init_one(op); + int node, child; + + child = prom_getchild(root); + for (node = prom_searchsiblings(child, "SUNW,ffb"); node; + node = prom_searchsiblings(prom_getsibling(node), "SUNW,ffb")) + ffb_init_one(node, root); + for (node = prom_searchsiblings(child, "SUNW,afb"); node; + node = prom_searchsiblings(prom_getsibling(node), "SUNW,afb")) + ffb_init_one(node, root); } -static int __devexit ffb_remove(struct of_device *dev) +int __init ffb_init(void) { - struct all_info *all = dev_get_drvdata(&dev->dev); - - unregister_framebuffer(&all->info); - fb_dealloc_cmap(&all->info.cmap); + int root; - of_iounmap(all->par.fbc, sizeof(struct ffb_fbc)); - of_iounmap(all->par.dac, sizeof(struct ffb_dac)); + if (fb_get_options("ffb", NULL)) + return -ENODEV; - kfree(all); + ffb_scan_siblings(prom_root_node); - dev_set_drvdata(&dev->dev, NULL); + root = prom_getchild(prom_root_node); + for (root = prom_searchsiblings(root, "upa"); root; + root = prom_searchsiblings(prom_getsibling(root), "upa")) + ffb_scan_siblings(root); return 0; } -static struct of_device_id ffb_match[] = { - { - .name = "SUNW,ffb", - }, - { - .name = "SUNW,afb", - }, - {}, -}; -MODULE_DEVICE_TABLE(of, ffb_match); - -static struct of_platform_driver ffb_driver = { - .name = "ffb", - .match_table = ffb_match, - .probe = ffb_probe, - .remove = __devexit_p(ffb_remove), -}; - -int __init ffb_init(void) +void __exit ffb_exit(void) { - if (fb_get_options("ffb", NULL)) - return -ENODEV; + struct list_head *pos, *tmp; + + list_for_each_safe(pos, tmp, &ffb_list) { + struct all_info *all = list_entry(pos, typeof(*all), list); - return of_register_driver(&ffb_driver, &of_bus_type); + unregister_framebuffer(&all->info); + fb_dealloc_cmap(&all->info.cmap); + kfree(all); + } } -void __exit ffb_exit(void) +int __init +ffb_setup(char *arg) { - of_unregister_driver(&ffb_driver); + /* No cmdline options yet... */ + return 0; } module_init(ffb_init); + +#ifdef MODULE module_exit(ffb_exit); +#endif MODULE_DESCRIPTION("framebuffer driver for Creator/Elite3D chipsets"); -MODULE_AUTHOR("David S. Miller "); -MODULE_VERSION("2.0"); +MODULE_AUTHOR("David S. Miller "); MODULE_LICENSE("GPL"); diff --git a/trunk/drivers/video/gbefb.c b/trunk/drivers/video/gbefb.c index bf0e60b5a3b6..5e25b9860196 100644 --- a/trunk/drivers/video/gbefb.c +++ b/trunk/drivers/video/gbefb.c @@ -9,6 +9,7 @@ * more details. */ +#include #include #include #include diff --git a/trunk/drivers/video/hitfb.c b/trunk/drivers/video/hitfb.c index 01864767450d..f04ca721f94c 100644 --- a/trunk/drivers/video/hitfb.c +++ b/trunk/drivers/video/hitfb.c @@ -11,6 +11,7 @@ * more details. */ +#include #include #include #include diff --git a/trunk/drivers/video/i810/i810-i2c.c b/trunk/drivers/video/i810/i810-i2c.c index c1f7b49975dd..3fe3ae1aff12 100644 --- a/trunk/drivers/video/i810/i810-i2c.c +++ b/trunk/drivers/video/i810/i810-i2c.c @@ -8,6 +8,7 @@ * License. See the file COPYING in the main directory of this archive for * more details. */ +#include #include #include #include diff --git a/trunk/drivers/video/i810/i810_main.c b/trunk/drivers/video/i810/i810_main.c index fbe8a2c4b04c..a1f7d80f0ac1 100644 --- a/trunk/drivers/video/i810/i810_main.c +++ b/trunk/drivers/video/i810/i810_main.c @@ -29,6 +29,7 @@ */ #include +#include #include #include #include diff --git a/trunk/drivers/video/imacfb.c b/trunk/drivers/video/imacfb.c index cdbae173d69a..7b1c168c834d 100644 --- a/trunk/drivers/video/imacfb.c +++ b/trunk/drivers/video/imacfb.c @@ -207,6 +207,10 @@ static int __init imacfb_probe(struct platform_device *dev) size_remap = size_total; imacfb_fix.smem_len = size_remap; +#ifndef __i386__ + screen_info.imacpm_seg = 0; +#endif + if (!request_mem_region(imacfb_fix.smem_start, size_total, "imacfb")) { printk(KERN_WARNING "imacfb: cannot reserve video memory at 0x%lx\n", diff --git a/trunk/drivers/video/imsttfb.c b/trunk/drivers/video/imsttfb.c index 5f393d985b11..f73c642b50c2 100644 --- a/trunk/drivers/video/imsttfb.c +++ b/trunk/drivers/video/imsttfb.c @@ -16,6 +16,7 @@ * more details. */ +#include #include #include #include diff --git a/trunk/drivers/video/imxfb.c b/trunk/drivers/video/imxfb.c index 0f9b2fdc28b1..1718baaeed2a 100644 --- a/trunk/drivers/video/imxfb.c +++ b/trunk/drivers/video/imxfb.c @@ -18,6 +18,7 @@ //#define DEBUG 1 +#include #include #include #include diff --git a/trunk/drivers/video/intelfb/intelfbdrv.c b/trunk/drivers/video/intelfb/intelfbdrv.c index 3f39d84015f1..0a0a8b199ecc 100644 --- a/trunk/drivers/video/intelfb/intelfbdrv.c +++ b/trunk/drivers/video/intelfb/intelfbdrv.c @@ -108,6 +108,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/video/intelfb/intelfbhw.c b/trunk/drivers/video/intelfb/intelfbhw.c index 3b78a57924f0..7533b3dd08ac 100644 --- a/trunk/drivers/video/intelfb/intelfbhw.c +++ b/trunk/drivers/video/intelfb/intelfbhw.c @@ -19,6 +19,7 @@ /* $DHD: intelfb/intelfbhw.c,v 1.9 2003/06/27 15:06:25 dawes Exp $ */ +#include #include #include #include diff --git a/trunk/drivers/video/kyro/fbdev.c b/trunk/drivers/video/kyro/fbdev.c index 2fdbe9b2b04b..477ad297de4e 100644 --- a/trunk/drivers/video/kyro/fbdev.c +++ b/trunk/drivers/video/kyro/fbdev.c @@ -9,6 +9,7 @@ * for more details. */ +#include #include #include #include diff --git a/trunk/drivers/video/leo.c b/trunk/drivers/video/leo.c index f3a24338d9ac..a23cfdb9d826 100644 --- a/trunk/drivers/video/leo.c +++ b/trunk/drivers/video/leo.c @@ -1,6 +1,6 @@ /* leo.c: LEO frame buffer driver * - * Copyright (C) 2003, 2006 David S. Miller (davem@davemloft.net) + * Copyright (C) 2003 David S. Miller (davem@redhat.com) * Copyright (C) 1996-1999 Jakub Jelinek (jj@ultra.linux.cz) * Copyright (C) 1997 Michal Rehacek (Michal.Rehacek@st.mff.cuni.cz) * @@ -18,8 +18,8 @@ #include #include -#include -#include +#include +#include #include #include "sbuslib.h" @@ -80,10 +80,10 @@ static struct fb_ops leo_ops = { struct leo_cursor { u8 xxx0[16]; - u32 cur_type; - u32 cur_misc; - u32 cur_cursxy; - u32 cur_data; + volatile u32 cur_type; + volatile u32 cur_misc; + volatile u32 cur_cursxy; + volatile u32 cur_data; }; #define LEO_KRN_TYPE_CLUT0 0x00001000 @@ -99,27 +99,27 @@ struct leo_cursor { #define LEO_KRN_CSR_UNK2 0x00000001 struct leo_lx_krn { - u32 krn_type; - u32 krn_csr; - u32 krn_value; + volatile u32 krn_type; + volatile u32 krn_csr; + volatile u32 krn_value; }; struct leo_lc_ss0_krn { - u32 misc; + volatile u32 misc; u8 xxx0[0x800-4]; - u32 rev; + volatile u32 rev; }; struct leo_lc_ss0_usr { - u32 csr; - u32 addrspace; - u32 fontmsk; - u32 fontt; - u32 extent; - u32 src; + volatile u32 csr; + volatile u32 addrspace; + volatile u32 fontmsk; + volatile u32 fontt; + volatile u32 extent; + volatile u32 src; u32 dst; - u32 copy; - u32 fill; + volatile u32 copy; + volatile u32 fill; }; struct leo_lc_ss1_krn { @@ -132,47 +132,47 @@ struct leo_lc_ss1_usr { struct leo_ld { u8 xxx0[0xe00]; - u32 csr; - u32 wid; - u32 wmask; - u32 widclip; - u32 vclipmin; - u32 vclipmax; - u32 pickmin; /* SS1 only */ - u32 pickmax; /* SS1 only */ - u32 fg; - u32 bg; - u32 src; /* Copy/Scroll (SS0 only) */ - u32 dst; /* Copy/Scroll/Fill (SS0 only) */ - u32 extent; /* Copy/Scroll/Fill size (SS0 only) */ + volatile u32 csr; + volatile u32 wid; + volatile u32 wmask; + volatile u32 widclip; + volatile u32 vclipmin; + volatile u32 vclipmax; + volatile u32 pickmin; /* SS1 only */ + volatile u32 pickmax; /* SS1 only */ + volatile u32 fg; + volatile u32 bg; + volatile u32 src; /* Copy/Scroll (SS0 only) */ + volatile u32 dst; /* Copy/Scroll/Fill (SS0 only) */ + volatile u32 extent; /* Copy/Scroll/Fill size (SS0 only) */ u32 xxx1[3]; - u32 setsem; /* SS1 only */ - u32 clrsem; /* SS1 only */ - u32 clrpick; /* SS1 only */ - u32 clrdat; /* SS1 only */ - u32 alpha; /* SS1 only */ + volatile u32 setsem; /* SS1 only */ + volatile u32 clrsem; /* SS1 only */ + volatile u32 clrpick; /* SS1 only */ + volatile u32 clrdat; /* SS1 only */ + volatile u32 alpha; /* SS1 only */ u8 xxx2[0x2c]; - u32 winbg; - u32 planemask; - u32 rop; - u32 z; - u32 dczf; /* SS1 only */ - u32 dczb; /* SS1 only */ - u32 dcs; /* SS1 only */ - u32 dczs; /* SS1 only */ - u32 pickfb; /* SS1 only */ - u32 pickbb; /* SS1 only */ - u32 dcfc; /* SS1 only */ - u32 forcecol; /* SS1 only */ - u32 door[8]; /* SS1 only */ - u32 pick[5]; /* SS1 only */ + volatile u32 winbg; + volatile u32 planemask; + volatile u32 rop; + volatile u32 z; + volatile u32 dczf; /* SS1 only */ + volatile u32 dczb; /* SS1 only */ + volatile u32 dcs; /* SS1 only */ + volatile u32 dczs; /* SS1 only */ + volatile u32 pickfb; /* SS1 only */ + volatile u32 pickbb; /* SS1 only */ + volatile u32 dcfc; /* SS1 only */ + volatile u32 forcecol; /* SS1 only */ + volatile u32 door[8]; /* SS1 only */ + volatile u32 pick[5]; /* SS1 only */ }; #define LEO_SS1_MISC_ENABLE 0x00000001 #define LEO_SS1_MISC_STEREO 0x00000002 struct leo_ld_ss1 { - u8 xxx0[0xef4]; - u32 ss1_misc; + u8 xxx0[0xef4]; + volatile u32 ss1_misc; }; struct leo_ld_gbl { @@ -193,8 +193,9 @@ struct leo_par { #define LEO_FLAG_BLANKED 0x00000001 unsigned long physbase; - unsigned long which_io; unsigned long fbsize; + + struct sbus_dev *sdev; }; static void leo_wait(struct leo_lx_krn __iomem *lx_krn) @@ -367,7 +368,8 @@ static int leo_mmap(struct fb_info *info, struct vm_area_struct *vma) return sbusfb_mmap_helper(leo_mmap_map, par->physbase, par->fbsize, - par->which_io, vma); + par->sdev->reg_addrs[0].which_io, + vma); } static int leo_ioctl(struct fb_info *info, unsigned int cmd, unsigned long arg) @@ -383,9 +385,11 @@ static int leo_ioctl(struct fb_info *info, unsigned int cmd, unsigned long arg) */ static void -leo_init_fix(struct fb_info *info, struct device_node *dp) +leo_init_fix(struct fb_info *info) { - strlcpy(info->fix.id, dp->name, sizeof(info->fix.id)); + struct leo_par *par = (struct leo_par *)info->par; + + strlcpy(info->fix.id, par->sdev->prom_name, sizeof(info->fix.id)); info->fix.type = FB_TYPE_PACKED_PIXELS; info->fix.visual = FB_VISUAL_TRUECOLOR; @@ -528,74 +532,60 @@ static void leo_fixup_var_rgb(struct fb_var_screeninfo *var) struct all_info { struct fb_info info; struct leo_par par; + struct list_head list; }; +static LIST_HEAD(leo_list); -static void leo_unmap_regs(struct all_info *all) -{ - if (all->par.lc_ss0_usr) - of_iounmap(all->par.lc_ss0_usr, 0x1000); - if (all->par.ld_ss0) - of_iounmap(all->par.ld_ss0, 0x1000); - if (all->par.ld_ss1) - of_iounmap(all->par.ld_ss1, 0x1000); - if (all->par.lx_krn) - of_iounmap(all->par.lx_krn, 0x1000); - if (all->par.cursor) - of_iounmap(all->par.cursor, sizeof(struct leo_cursor)); - if (all->info.screen_base) - of_iounmap(all->info.screen_base, 0x800000); -} - -static int __devinit leo_init_one(struct of_device *op) +static void leo_init_one(struct sbus_dev *sdev) { - struct device_node *dp = op->node; struct all_info *all; - int linebytes, err; + int linebytes; + + all = kmalloc(sizeof(*all), GFP_KERNEL); + if (!all) { + printk(KERN_ERR "leo: Cannot allocate memory.\n"); + return; + } + memset(all, 0, sizeof(*all)); - all = kzalloc(sizeof(*all), GFP_KERNEL); - if (!all) - return -ENOMEM; + INIT_LIST_HEAD(&all->list); spin_lock_init(&all->par.lock); + all->par.sdev = sdev; - all->par.physbase = op->resource[0].start; - all->par.which_io = op->resource[0].flags & IORESOURCE_BITS; + all->par.physbase = sdev->reg_addrs[0].phys_addr; - sbusfb_fill_var(&all->info.var, dp->node, 32); + sbusfb_fill_var(&all->info.var, sdev->prom_node, 32); leo_fixup_var_rgb(&all->info.var); - linebytes = of_getintprop_default(dp, "linebytes", - all->info.var.xres); + linebytes = prom_getintdefault(sdev->prom_node, "linebytes", + all->info.var.xres); all->par.fbsize = PAGE_ALIGN(linebytes * all->info.var.yres); +#ifdef CONFIG_SPARC32 + all->info.screen_base = (char __iomem *) + prom_getintdefault(sdev->prom_node, "address", 0); +#endif + if (!all->info.screen_base) + all->info.screen_base = + sbus_ioremap(&sdev->resource[0], LEO_OFF_SS0, + 0x800000, "leo ram"); + all->par.lc_ss0_usr = - of_ioremap(&op->resource[0], LEO_OFF_LC_SS0_USR, - 0x1000, "leolc ss0usr"); + sbus_ioremap(&sdev->resource[0], LEO_OFF_LC_SS0_USR, + 0x1000, "leolc ss0usr"); all->par.ld_ss0 = - of_ioremap(&op->resource[0], LEO_OFF_LD_SS0, - 0x1000, "leold ss0"); + sbus_ioremap(&sdev->resource[0], LEO_OFF_LD_SS0, + 0x1000, "leold ss0"); all->par.ld_ss1 = - of_ioremap(&op->resource[0], LEO_OFF_LD_SS1, - 0x1000, "leold ss1"); + sbus_ioremap(&sdev->resource[0], LEO_OFF_LD_SS1, + 0x1000, "leold ss1"); all->par.lx_krn = - of_ioremap(&op->resource[0], LEO_OFF_LX_KRN, - 0x1000, "leolx krn"); + sbus_ioremap(&sdev->resource[0], LEO_OFF_LX_KRN, + 0x1000, "leolx krn"); all->par.cursor = - of_ioremap(&op->resource[0], LEO_OFF_LX_CURSOR, - sizeof(struct leo_cursor), "leolx cursor"); - all->info.screen_base = - of_ioremap(&op->resource[0], LEO_OFF_SS0, - 0x800000, "leo ram"); - if (!all->par.lc_ss0_usr || - !all->par.ld_ss0 || - !all->par.ld_ss1 || - !all->par.lx_krn || - !all->par.cursor || - !all->info.screen_base) { - leo_unmap_regs(all); - kfree(all); - return -ENOMEM; - } + sbus_ioremap(&sdev->resource[0], LEO_OFF_LX_CURSOR, + sizeof(struct leo_cursor), "leolx cursor"); all->info.flags = FBINFO_DEFAULT | FBINFO_HWACCEL_YPAN; all->info.fbops = &leo_ops; @@ -607,85 +597,69 @@ static int __devinit leo_init_one(struct of_device *op) leo_blank(0, &all->info); if (fb_alloc_cmap(&all->info.cmap, 256, 0)) { - leo_unmap_regs(all); + printk(KERN_ERR "leo: Could not allocate color map.\n"); kfree(all); - return -ENOMEM;; + return; } - leo_init_fix(&all->info, dp); + leo_init_fix(&all->info); - err = register_framebuffer(&all->info); - if (err < 0) { + if (register_framebuffer(&all->info) < 0) { + printk(KERN_ERR "leo: Could not register framebuffer.\n"); fb_dealloc_cmap(&all->info.cmap); - leo_unmap_regs(all); kfree(all); - return err; + return; } - dev_set_drvdata(&op->dev, all); - - printk("%s: leo at %lx:%lx\n", - dp->full_name, - all->par.which_io, all->par.physbase); + list_add(&all->list, &leo_list); - return 0; + printk("leo: %s at %lx:%lx\n", + sdev->prom_name, + (long) sdev->reg_addrs[0].which_io, + (long) sdev->reg_addrs[0].phys_addr); } -static int __devinit leo_probe(struct of_device *dev, const struct of_device_id *match) +int __init leo_init(void) { - struct of_device *op = to_of_device(&dev->dev); - - return leo_init_one(op); -} - -static int __devexit leo_remove(struct of_device *dev) -{ - struct all_info *all = dev_get_drvdata(&dev->dev); - - unregister_framebuffer(&all->info); - fb_dealloc_cmap(&all->info.cmap); + struct sbus_bus *sbus; + struct sbus_dev *sdev; - leo_unmap_regs(all); - - kfree(all); + if (fb_get_options("leofb", NULL)) + return -ENODEV; - dev_set_drvdata(&dev->dev, NULL); + for_all_sbusdev(sdev, sbus) { + if (!strcmp(sdev->prom_name, "leo")) + leo_init_one(sdev); + } return 0; } -static struct of_device_id leo_match[] = { - { - .name = "leo", - }, - {}, -}; -MODULE_DEVICE_TABLE(of, leo_match); - -static struct of_platform_driver leo_driver = { - .name = "leo", - .match_table = leo_match, - .probe = leo_probe, - .remove = __devexit_p(leo_remove), -}; - -static int __init leo_init(void) +void __exit leo_exit(void) { - if (fb_get_options("leofb", NULL)) - return -ENODEV; + struct list_head *pos, *tmp; - return of_register_driver(&leo_driver, &of_bus_type); + list_for_each_safe(pos, tmp, &leo_list) { + struct all_info *all = list_entry(pos, typeof(*all), list); + + unregister_framebuffer(&all->info); + fb_dealloc_cmap(&all->info.cmap); + kfree(all); + } } -static void __exit leo_exit(void) +int __init +leo_setup(char *arg) { - of_unregister_driver(&leo_driver); + /* No cmdline options yet... */ + return 0; } module_init(leo_init); +#ifdef MODULE module_exit(leo_exit); +#endif MODULE_DESCRIPTION("framebuffer driver for LEO chipsets"); -MODULE_AUTHOR("David S. Miller "); -MODULE_VERSION("2.0"); +MODULE_AUTHOR("David S. Miller "); MODULE_LICENSE("GPL"); diff --git a/trunk/drivers/video/logo/logo.c b/trunk/drivers/video/logo/logo.c index 80c03618eb53..788fa812c871 100644 --- a/trunk/drivers/video/logo/logo.c +++ b/trunk/drivers/video/logo/logo.c @@ -9,6 +9,7 @@ * Copyright (C) 2003 Geert Uytterhoeven */ +#include #include #include #include diff --git a/trunk/drivers/video/macmodes.c b/trunk/drivers/video/macmodes.c index ab2149531a04..d21321ca7c39 100644 --- a/trunk/drivers/video/macmodes.c +++ b/trunk/drivers/video/macmodes.c @@ -15,6 +15,7 @@ * more details. */ +#include #include #include #include diff --git a/trunk/drivers/video/matrox/matroxfb_DAC1064.c b/trunk/drivers/video/matrox/matroxfb_DAC1064.c index c4b570b4a4df..a456e67a5b00 100644 --- a/trunk/drivers/video/matrox/matroxfb_DAC1064.c +++ b/trunk/drivers/video/matrox/matroxfb_DAC1064.c @@ -12,6 +12,7 @@ * */ +#include #include "matroxfb_DAC1064.h" #include "matroxfb_misc.h" diff --git a/trunk/drivers/video/matrox/matroxfb_DAC1064.h b/trunk/drivers/video/matrox/matroxfb_DAC1064.h index df39c3193735..56513a5d220b 100644 --- a/trunk/drivers/video/matrox/matroxfb_DAC1064.h +++ b/trunk/drivers/video/matrox/matroxfb_DAC1064.h @@ -1,6 +1,7 @@ #ifndef __MATROXFB_DAC1064_H__ #define __MATROXFB_DAC1064_H__ +#include #include "matroxfb_base.h" diff --git a/trunk/drivers/video/matrox/matroxfb_Ti3026.c b/trunk/drivers/video/matrox/matroxfb_Ti3026.c index a5690a5f29d5..23ebad0a12d8 100644 --- a/trunk/drivers/video/matrox/matroxfb_Ti3026.c +++ b/trunk/drivers/video/matrox/matroxfb_Ti3026.c @@ -78,6 +78,7 @@ * */ +#include #include "matroxfb_Ti3026.h" #include "matroxfb_misc.h" diff --git a/trunk/drivers/video/matrox/matroxfb_Ti3026.h b/trunk/drivers/video/matrox/matroxfb_Ti3026.h index 27872aaa0a17..536e5f69de9f 100644 --- a/trunk/drivers/video/matrox/matroxfb_Ti3026.h +++ b/trunk/drivers/video/matrox/matroxfb_Ti3026.h @@ -1,6 +1,7 @@ #ifndef __MATROXFB_TI3026_H__ #define __MATROXFB_TI3026_H__ +#include #include "matroxfb_base.h" diff --git a/trunk/drivers/video/matrox/matroxfb_base.c b/trunk/drivers/video/matrox/matroxfb_base.c index 8b5bf7972ee3..f4ddd3431f17 100644 --- a/trunk/drivers/video/matrox/matroxfb_base.c +++ b/trunk/drivers/video/matrox/matroxfb_base.c @@ -99,6 +99,7 @@ * */ +#include #include #define __OLD_VIDIOC_ diff --git a/trunk/drivers/video/matrox/matroxfb_base.h b/trunk/drivers/video/matrox/matroxfb_base.h index b95779b57c06..b71737178d0d 100644 --- a/trunk/drivers/video/matrox/matroxfb_base.h +++ b/trunk/drivers/video/matrox/matroxfb_base.h @@ -25,6 +25,7 @@ /* Guard accelerator accesses with spin_lock_irqsave... */ #undef MATROXFB_USE_SPINLOCKS +#include #include #include #include diff --git a/trunk/drivers/video/matrox/matroxfb_misc.c b/trunk/drivers/video/matrox/matroxfb_misc.c index 18886b629cb1..263d801ef78f 100644 --- a/trunk/drivers/video/matrox/matroxfb_misc.c +++ b/trunk/drivers/video/matrox/matroxfb_misc.c @@ -84,6 +84,7 @@ * */ +#include #include "matroxfb_misc.h" #include diff --git a/trunk/drivers/video/neofb.c b/trunk/drivers/video/neofb.c index 773855a311e8..2f156b724d1c 100644 --- a/trunk/drivers/video/neofb.c +++ b/trunk/drivers/video/neofb.c @@ -54,6 +54,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/video/nvidia/nv_i2c.c b/trunk/drivers/video/nvidia/nv_i2c.c index 19eef3a09023..1edb1c432b75 100644 --- a/trunk/drivers/video/nvidia/nv_i2c.c +++ b/trunk/drivers/video/nvidia/nv_i2c.c @@ -10,6 +10,7 @@ * for more details. */ +#include #include #include #include diff --git a/trunk/drivers/video/nvidia/nv_of.c b/trunk/drivers/video/nvidia/nv_of.c index 8209106e26ee..7a03d040b1a3 100644 --- a/trunk/drivers/video/nvidia/nv_of.c +++ b/trunk/drivers/video/nvidia/nv_of.c @@ -10,6 +10,7 @@ * for more details. */ +#include #include #include #include diff --git a/trunk/drivers/video/nvidia/nvidia.c b/trunk/drivers/video/nvidia/nvidia.c index b02d6033cc0c..7b5cffb27851 100644 --- a/trunk/drivers/video/nvidia/nvidia.c +++ b/trunk/drivers/video/nvidia/nvidia.c @@ -9,6 +9,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/video/offb.c b/trunk/drivers/video/offb.c index bfeb11bd4712..ad1434e3f227 100644 --- a/trunk/drivers/video/offb.c +++ b/trunk/drivers/video/offb.c @@ -12,6 +12,7 @@ * more details. */ +#include #include #include #include diff --git a/trunk/drivers/video/p9100.c b/trunk/drivers/video/p9100.c index 56ac51d6a7f3..0d1957505359 100644 --- a/trunk/drivers/video/p9100.c +++ b/trunk/drivers/video/p9100.c @@ -1,6 +1,6 @@ /* p9100.c: P9100 frame buffer driver * - * Copyright (C) 2003, 2006 David S. Miller (davem@davemloft.net) + * Copyright (C) 2003 David S. Miller (davem@redhat.com) * Copyright 1999 Derrick J Brashear (shadow@dementia.org) * * Driver layout based loosely on tgafb.c, see that file for credits. @@ -17,8 +17,8 @@ #include #include -#include -#include +#include +#include #include #include "sbuslib.h" @@ -72,60 +72,60 @@ static struct fb_ops p9100_ops = { struct p9100_regs { /* Registers for the system control */ - u32 sys_base; - u32 sys_config; - u32 sys_intr; - u32 sys_int_ena; - u32 sys_alt_rd; - u32 sys_alt_wr; - u32 sys_xxx[58]; + volatile u32 sys_base; + volatile u32 sys_config; + volatile u32 sys_intr; + volatile u32 sys_int_ena; + volatile u32 sys_alt_rd; + volatile u32 sys_alt_wr; + volatile u32 sys_xxx[58]; /* Registers for the video control */ - u32 vid_base; - u32 vid_hcnt; - u32 vid_htotal; - u32 vid_hsync_rise; - u32 vid_hblank_rise; - u32 vid_hblank_fall; - u32 vid_hcnt_preload; - u32 vid_vcnt; - u32 vid_vlen; - u32 vid_vsync_rise; - u32 vid_vblank_rise; - u32 vid_vblank_fall; - u32 vid_vcnt_preload; - u32 vid_screenpaint_addr; - u32 vid_screenpaint_timectl1; - u32 vid_screenpaint_qsfcnt; - u32 vid_screenpaint_timectl2; - u32 vid_xxx[15]; + volatile u32 vid_base; + volatile u32 vid_hcnt; + volatile u32 vid_htotal; + volatile u32 vid_hsync_rise; + volatile u32 vid_hblank_rise; + volatile u32 vid_hblank_fall; + volatile u32 vid_hcnt_preload; + volatile u32 vid_vcnt; + volatile u32 vid_vlen; + volatile u32 vid_vsync_rise; + volatile u32 vid_vblank_rise; + volatile u32 vid_vblank_fall; + volatile u32 vid_vcnt_preload; + volatile u32 vid_screenpaint_addr; + volatile u32 vid_screenpaint_timectl1; + volatile u32 vid_screenpaint_qsfcnt; + volatile u32 vid_screenpaint_timectl2; + volatile u32 vid_xxx[15]; /* Registers for the video control */ - u32 vram_base; - u32 vram_memcfg; - u32 vram_refresh_pd; - u32 vram_refresh_cnt; - u32 vram_raslo_max; - u32 vram_raslo_cur; - u32 pwrup_cfg; - u32 vram_xxx[25]; + volatile u32 vram_base; + volatile u32 vram_memcfg; + volatile u32 vram_refresh_pd; + volatile u32 vram_refresh_cnt; + volatile u32 vram_raslo_max; + volatile u32 vram_raslo_cur; + volatile u32 pwrup_cfg; + volatile u32 vram_xxx[25]; /* Registers for IBM RGB528 Palette */ - u32 ramdac_cmap_wridx; - u32 ramdac_palette_data; - u32 ramdac_pixel_mask; - u32 ramdac_palette_rdaddr; - u32 ramdac_idx_lo; - u32 ramdac_idx_hi; - u32 ramdac_idx_data; - u32 ramdac_idx_ctl; - u32 ramdac_xxx[1784]; + volatile u32 ramdac_cmap_wridx; + volatile u32 ramdac_palette_data; + volatile u32 ramdac_pixel_mask; + volatile u32 ramdac_palette_rdaddr; + volatile u32 ramdac_idx_lo; + volatile u32 ramdac_idx_hi; + volatile u32 ramdac_idx_data; + volatile u32 ramdac_idx_ctl; + volatile u32 ramdac_xxx[1784]; }; struct p9100_cmd_parameng { - u32 parameng_status; - u32 parameng_bltcmd; - u32 parameng_quadcmd; + volatile u32 parameng_status; + volatile u32 parameng_bltcmd; + volatile u32 parameng_quadcmd; }; struct p9100_par { @@ -136,8 +136,9 @@ struct p9100_par { #define P9100_FLAG_BLANKED 0x00000001 unsigned long physbase; - unsigned long which_io; unsigned long fbsize; + + struct sbus_dev *sdev; }; /** @@ -226,7 +227,8 @@ static int p9100_mmap(struct fb_info *info, struct vm_area_struct *vma) return sbusfb_mmap_helper(p9100_mmap_map, par->physbase, par->fbsize, - par->which_io, vma); + par->sdev->reg_addrs[0].which_io, + vma); } static int p9100_ioctl(struct fb_info *info, unsigned int cmd, @@ -243,9 +245,12 @@ static int p9100_ioctl(struct fb_info *info, unsigned int cmd, * Initialisation */ -static void p9100_init_fix(struct fb_info *info, int linebytes, struct device_node *dp) +static void +p9100_init_fix(struct fb_info *info, int linebytes) { - strlcpy(info->fix.id, dp->name, sizeof(info->fix.id)); + struct p9100_par *par = (struct p9100_par *)info->par; + + strlcpy(info->fix.id, par->sdev->prom_name, sizeof(info->fix.id)); info->fix.type = FB_TYPE_PACKED_PIXELS; info->fix.visual = FB_VISUAL_PSEUDOCOLOR; @@ -258,137 +263,121 @@ static void p9100_init_fix(struct fb_info *info, int linebytes, struct device_no struct all_info { struct fb_info info; struct p9100_par par; + struct list_head list; }; +static LIST_HEAD(p9100_list); -static int __devinit p9100_init_one(struct of_device *op) +static void p9100_init_one(struct sbus_dev *sdev) { - struct device_node *dp = op->node; struct all_info *all; - int linebytes, err; + int linebytes; + + all = kmalloc(sizeof(*all), GFP_KERNEL); + if (!all) { + printk(KERN_ERR "p9100: Cannot allocate memory.\n"); + return; + } + memset(all, 0, sizeof(*all)); - all = kzalloc(sizeof(*all), GFP_KERNEL); - if (!all) - return -ENOMEM; + INIT_LIST_HEAD(&all->list); spin_lock_init(&all->par.lock); + all->par.sdev = sdev; /* This is the framebuffer and the only resource apps can mmap. */ - all->par.physbase = op->resource[2].start; - all->par.which_io = op->resource[2].flags & IORESOURCE_BITS; + all->par.physbase = sdev->reg_addrs[2].phys_addr; - sbusfb_fill_var(&all->info.var, dp->node, 8); + sbusfb_fill_var(&all->info.var, sdev->prom_node, 8); all->info.var.red.length = 8; all->info.var.green.length = 8; all->info.var.blue.length = 8; - linebytes = of_getintprop_default(dp, "linebytes", - all->info.var.xres); + linebytes = prom_getintdefault(sdev->prom_node, "linebytes", + all->info.var.xres); all->par.fbsize = PAGE_ALIGN(linebytes * all->info.var.yres); - all->par.regs = of_ioremap(&op->resource[0], 0, - sizeof(struct p9100_regs), "p9100 regs"); - if (!all->par.regs) { - kfree(all); - return -ENOMEM; - } + all->par.regs = sbus_ioremap(&sdev->resource[0], 0, + sizeof(struct p9100_regs), "p9100 regs"); all->info.flags = FBINFO_DEFAULT; all->info.fbops = &p9100_ops; - all->info.screen_base = of_ioremap(&op->resource[2], 0, - all->par.fbsize, "p9100 ram"); - if (!all->info.screen_base) { - of_iounmap(all->par.regs, sizeof(struct p9100_regs)); - kfree(all); - return -ENOMEM; - } +#ifdef CONFIG_SPARC32 + all->info.screen_base = (char __iomem *) + prom_getintdefault(sdev->prom_node, "address", 0); +#endif + if (!all->info.screen_base) + all->info.screen_base = sbus_ioremap(&sdev->resource[2], 0, + all->par.fbsize, "p9100 ram"); all->info.par = &all->par; p9100_blank(0, &all->info); if (fb_alloc_cmap(&all->info.cmap, 256, 0)) { - of_iounmap(all->par.regs, sizeof(struct p9100_regs)); - of_iounmap(all->info.screen_base, all->par.fbsize); + printk(KERN_ERR "p9100: Could not allocate color map.\n"); kfree(all); - return -ENOMEM; + return; } - p9100_init_fix(&all->info, linebytes, dp); + p9100_init_fix(&all->info, linebytes); - err = register_framebuffer(&all->info); - if (err < 0) { + if (register_framebuffer(&all->info) < 0) { + printk(KERN_ERR "p9100: Could not register framebuffer.\n"); fb_dealloc_cmap(&all->info.cmap); - of_iounmap(all->par.regs, sizeof(struct p9100_regs)); - of_iounmap(all->info.screen_base, all->par.fbsize); kfree(all); - return err; + return; } fb_set_cmap(&all->info.cmap, &all->info); - dev_set_drvdata(&op->dev, all); - - printk("%s: p9100 at %lx:%lx\n", - dp->full_name, - all->par.which_io, all->par.physbase); - - return 0; -} - -static int __devinit p9100_probe(struct of_device *dev, const struct of_device_id *match) -{ - struct of_device *op = to_of_device(&dev->dev); + list_add(&all->list, &p9100_list); - return p9100_init_one(op); + printk("p9100: %s at %lx:%lx\n", + sdev->prom_name, + (long) sdev->reg_addrs[0].which_io, + (long) sdev->reg_addrs[0].phys_addr); } -static int __devexit p9100_remove(struct of_device *dev) +int __init p9100_init(void) { - struct all_info *all = dev_get_drvdata(&dev->dev); - - unregister_framebuffer(&all->info); - fb_dealloc_cmap(&all->info.cmap); + struct sbus_bus *sbus; + struct sbus_dev *sdev; - of_iounmap(all->par.regs, sizeof(struct p9100_regs)); - of_iounmap(all->info.screen_base, all->par.fbsize); - - kfree(all); + if (fb_get_options("p9100fb", NULL)) + return -ENODEV; - dev_set_drvdata(&dev->dev, NULL); + for_all_sbusdev(sdev, sbus) { + if (!strcmp(sdev->prom_name, "p9100")) + p9100_init_one(sdev); + } return 0; } -static struct of_device_id p9100_match[] = { - { - .name = "p9100", - }, - {}, -}; -MODULE_DEVICE_TABLE(of, p9100_match); - -static struct of_platform_driver p9100_driver = { - .name = "p9100", - .match_table = p9100_match, - .probe = p9100_probe, - .remove = __devexit_p(p9100_remove), -}; - -static int __init p9100_init(void) +void __exit p9100_exit(void) { - if (fb_get_options("p9100fb", NULL)) - return -ENODEV; + struct list_head *pos, *tmp; + + list_for_each_safe(pos, tmp, &p9100_list) { + struct all_info *all = list_entry(pos, typeof(*all), list); - return of_register_driver(&p9100_driver, &of_bus_type); + unregister_framebuffer(&all->info); + fb_dealloc_cmap(&all->info.cmap); + kfree(all); + } } -static void __exit p9100_exit(void) +int __init +p9100_setup(char *arg) { - of_unregister_driver(&p9100_driver); + /* No cmdline options yet... */ + return 0; } module_init(p9100_init); + +#ifdef MODULE module_exit(p9100_exit); +#endif MODULE_DESCRIPTION("framebuffer driver for P9100 chipsets"); -MODULE_AUTHOR("David S. Miller "); -MODULE_VERSION("2.0"); +MODULE_AUTHOR("David S. Miller "); MODULE_LICENSE("GPL"); diff --git a/trunk/drivers/video/platinumfb.c b/trunk/drivers/video/platinumfb.c index 450e802e0aa8..335e37465559 100644 --- a/trunk/drivers/video/platinumfb.c +++ b/trunk/drivers/video/platinumfb.c @@ -17,6 +17,7 @@ * more details. */ +#include #include #include #include diff --git a/trunk/drivers/video/pm2fb.c b/trunk/drivers/video/pm2fb.c index 49a203e1591c..4e963930b50a 100644 --- a/trunk/drivers/video/pm2fb.c +++ b/trunk/drivers/video/pm2fb.c @@ -27,6 +27,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/video/pm3fb.c b/trunk/drivers/video/pm3fb.c index 0e0f977b05ee..52c18a35fb41 100644 --- a/trunk/drivers/video/pm3fb.c +++ b/trunk/drivers/video/pm3fb.c @@ -52,6 +52,7 @@ * Wed Feb 21 14:47:06 CET 2001, v 1.0.0: First working version */ +#include #include #include #include diff --git a/trunk/drivers/video/pvr2fb.c b/trunk/drivers/video/pvr2fb.c index 4a1e0e856920..ec4bacf9dd2e 100644 --- a/trunk/drivers/video/pvr2fb.c +++ b/trunk/drivers/video/pvr2fb.c @@ -56,6 +56,7 @@ #include #include #include +#include #include #include #include diff --git a/trunk/drivers/video/pxafb.c b/trunk/drivers/video/pxafb.c index 54663a9baf43..809fc5eefc15 100644 --- a/trunk/drivers/video/pxafb.c +++ b/trunk/drivers/video/pxafb.c @@ -22,6 +22,7 @@ * */ +#include #include #include #include diff --git a/trunk/drivers/video/riva/fbdev.c b/trunk/drivers/video/riva/fbdev.c index 2788655e6e7d..12af58c5cf1f 100644 --- a/trunk/drivers/video/riva/fbdev.c +++ b/trunk/drivers/video/riva/fbdev.c @@ -29,6 +29,7 @@ * doublescan modes are broken */ +#include #include #include #include diff --git a/trunk/drivers/video/riva/rivafb-i2c.c b/trunk/drivers/video/riva/rivafb-i2c.c index 9751c37c0bfd..8b1967fc116a 100644 --- a/trunk/drivers/video/riva/rivafb-i2c.c +++ b/trunk/drivers/video/riva/rivafb-i2c.c @@ -12,6 +12,7 @@ * for more details. */ +#include #include #include #include diff --git a/trunk/drivers/video/riva/rivafb.h b/trunk/drivers/video/riva/rivafb.h index 7fa13fc9c413..440ff445689b 100644 --- a/trunk/drivers/video/riva/rivafb.h +++ b/trunk/drivers/video/riva/rivafb.h @@ -1,6 +1,7 @@ #ifndef __RIVAFB_H #define __RIVAFB_H +#include #include #include