Pull hotplug into release branch
authorLen Brown <len.brown@intel.com>
Fri, 14 Dec 2007 19:54:09 +0000 (14:54 -0500)
committerLen Brown <len.brown@intel.com>
Fri, 14 Dec 2007 19:54:09 +0000 (14:54 -0500)
986 files changed:
Documentation/00-INDEX
Documentation/DocBook/Makefile
Documentation/DocBook/uio-howto.tmpl
Documentation/i2c/summary
Documentation/lguest/lguest.c
Documentation/namespaces/compatibility-list.txt [new file with mode: 0644]
Documentation/networking/bonding.txt
Documentation/parport-lowlevel.txt
Documentation/powerpc/booting-without-of.txt
Documentation/thinkpad-acpi.txt
Documentation/tty.txt
Documentation/usb/power-management.txt
Documentation/x86_64/uefi.txt [new file with mode: 0644]
MAINTAINERS
Makefile
arch/alpha/kernel/pci-noop.c
arch/arm/common/uengine.c
arch/arm/kernel/entry-armv.S
arch/arm/kernel/traps.c
arch/arm/mach-at91/at91rm9200_devices.c
arch/arm/mach-at91/at91sam9260_devices.c
arch/arm/mach-at91/at91sam9261_devices.c
arch/arm/mach-at91/at91sam9263_devices.c
arch/arm/mach-at91/at91sam9rl_devices.c
arch/arm/mach-at91/board-carmeva.c
arch/arm/mach-at91/board-csb337.c
arch/arm/mach-at91/board-csb637.c
arch/arm/mach-at91/board-dk.c
arch/arm/mach-at91/board-eb9200.c
arch/arm/mach-at91/board-ek.c
arch/arm/mach-at91/board-kafa.c
arch/arm/mach-at91/board-kb9202.c
arch/arm/mach-at91/board-picotux200.c
arch/arm/mach-at91/board-sam9260ek.c
arch/arm/mach-at91/board-sam9261ek.c
arch/arm/mach-at91/board-sam9263ek.c
arch/arm/mach-at91/board-sam9rlek.c
arch/arm/mach-at91/clock.c
arch/arm/mach-imx/irq.c
arch/arm/mach-pxa/pxa27x.c
arch/arm/mach-pxa/pxa320.c
arch/arm/mach-pxa/ssp.c
arch/avr32/Kconfig
arch/avr32/kernel/Makefile
arch/avr32/kernel/asm-offsets.c
arch/avr32/kernel/entry-avr32b.S
arch/avr32/kernel/kprobes.c
arch/avr32/kernel/process.c
arch/avr32/kernel/ptrace.c
arch/avr32/kernel/stacktrace.c [new file with mode: 0644]
arch/avr32/kernel/traps.c
arch/avr32/kernel/vmlinux.lds.S
arch/avr32/mm/cache.c
arch/blackfin/Kconfig
arch/blackfin/Kconfig.debug [new file with mode: 0644]
arch/blackfin/Makefile
arch/blackfin/configs/BF527-EZKIT_defconfig
arch/blackfin/configs/BF533-EZKIT_defconfig
arch/blackfin/configs/BF533-STAMP_defconfig
arch/blackfin/configs/BF537-STAMP_defconfig
arch/blackfin/configs/BF548-EZKIT_defconfig
arch/blackfin/configs/BF561-EZKIT_defconfig
arch/blackfin/configs/H8606_defconfig [new file with mode: 0644]
arch/blackfin/configs/PNAV-10_defconfig
arch/blackfin/kernel/bfin_dma_5xx.c
arch/blackfin/kernel/bfin_ksyms.c
arch/blackfin/kernel/cplbinit.c
arch/blackfin/kernel/early_printk.c
arch/blackfin/kernel/process.c
arch/blackfin/kernel/setup.c
arch/blackfin/kernel/traps.c
arch/blackfin/lib/Makefile
arch/blackfin/lib/ins.S
arch/blackfin/lib/strcmp.c
arch/blackfin/lib/strcpy.c
arch/blackfin/lib/strncmp.c
arch/blackfin/lib/strncpy.c
arch/blackfin/lib/udivdi3.S [deleted file]
arch/blackfin/mach-bf527/Kconfig
arch/blackfin/mach-bf527/boards/Kconfig [new file with mode: 0644]
arch/blackfin/mach-bf527/boards/Makefile
arch/blackfin/mach-bf527/boards/eth_mac.c [deleted file]
arch/blackfin/mach-bf527/boards/ezkit.c
arch/blackfin/mach-bf533/Kconfig
arch/blackfin/mach-bf533/boards/H8606.c
arch/blackfin/mach-bf533/boards/Kconfig [new file with mode: 0644]
arch/blackfin/mach-bf533/boards/Makefile
arch/blackfin/mach-bf533/boards/cm_bf533.c
arch/blackfin/mach-bf533/boards/ezkit.c
arch/blackfin/mach-bf533/boards/generic_board.c
arch/blackfin/mach-bf533/boards/stamp.c
arch/blackfin/mach-bf537/Kconfig
arch/blackfin/mach-bf537/boards/Kconfig [new file with mode: 0644]
arch/blackfin/mach-bf537/boards/Makefile
arch/blackfin/mach-bf537/boards/cm_bf537.c
arch/blackfin/mach-bf537/boards/eth_mac.c [deleted file]
arch/blackfin/mach-bf537/boards/generic_board.c
arch/blackfin/mach-bf537/boards/pnav10.c
arch/blackfin/mach-bf537/boards/stamp.c
arch/blackfin/mach-bf548/Kconfig
arch/blackfin/mach-bf548/boards/Kconfig [new file with mode: 0644]
arch/blackfin/mach-bf548/boards/Makefile
arch/blackfin/mach-bf548/boards/ezkit.c
arch/blackfin/mach-bf548/head.S
arch/blackfin/mach-bf561/Kconfig
arch/blackfin/mach-bf561/boards/Kconfig [new file with mode: 0644]
arch/blackfin/mach-bf561/boards/Makefile
arch/blackfin/mach-bf561/boards/cm_bf561.c
arch/blackfin/mach-bf561/boards/ezkit.c
arch/blackfin/mach-bf561/boards/generic_board.c
arch/blackfin/mach-bf561/boards/tepla.c
arch/blackfin/mach-common/cplbinfo.c
arch/blackfin/mach-common/cplbmgr.S
arch/blackfin/mach-common/entry.S
arch/blackfin/mach-common/interrupt.S
arch/blackfin/mach-common/ints-priority-dc.c
arch/blackfin/mach-common/ints-priority-sc.c
arch/blackfin/mach-common/irqpanic.c
arch/blackfin/mm/blackfin_sram.c
arch/cris/arch-v10/drivers/Kconfig
arch/cris/arch-v32/drivers/Kconfig
arch/frv/kernel/break.S
arch/frv/kernel/entry.S
arch/frv/kernel/vmlinux.lds.S
arch/frv/mm/tlb-miss.S
arch/ia64/Makefile
arch/ia64/hp/sim/boot/Makefile
arch/ia64/hp/sim/boot/bootloader.lds
arch/ia64/kernel/acpi.c
arch/ia64/kernel/efi.c
arch/ia64/kernel/gate.lds.S
arch/ia64/kernel/ia64_ksyms.c
arch/ia64/kernel/iosapic.c
arch/ia64/kernel/kprobes.c
arch/ia64/kernel/setup.c
arch/ia64/kernel/signal.c
arch/ia64/kernel/vmlinux.lds.S
arch/ia64/lib/Makefile
arch/ia64/mm/tlb.c
arch/ia64/scripts/unwcheck.py [changed mode: 0755->0644]
arch/ia64/sn/kernel/io_common.c
arch/m32r/kernel/signal.c
arch/m32r/kernel/syscall_table.S
arch/m68k/atari/atakeyb.c
arch/mips/Kconfig
arch/mips/au1000/Kconfig
arch/mips/au1000/common/dbdma.c
arch/mips/au1000/common/irq.c
arch/mips/au1000/pb1200/irqmap.c
arch/mips/configs/bigsur_defconfig
arch/mips/configs/malta_defconfig
arch/mips/kernel/Makefile
arch/mips/kernel/cevt-r4k.c
arch/mips/kernel/csrc-r4k.c [new file with mode: 0644]
arch/mips/kernel/setup.c
arch/mips/kernel/smp-up.c [new file with mode: 0644]
arch/mips/kernel/time.c
arch/mips/kernel/vpe.c
arch/mips/math-emu/ieee754.c
arch/mips/math-emu/ieee754dp.c
arch/mips/math-emu/ieee754sp.c
arch/mips/mips-boards/generic/display.c
arch/mips/mipssim/sim_time.c
arch/mips/mm/dma-default.c
arch/mips/mm/init.c
arch/mips/oprofile/op_model_mipsxx.c
arch/mips/pci/pci-bcm1480.c
arch/mips/pmc-sierra/Kconfig
arch/mips/qemu/q-irq.c
arch/mips/sgi-ip22/ip22-eisa.c
arch/mips/sgi-ip22/ip22-nvram.c
arch/mips/sgi-ip22/ip22-setup.c
arch/mips/sgi-ip32/ip32-irq.c
arch/mips/vr41xx/Kconfig
arch/parisc/Makefile
arch/parisc/kernel/firmware.c
arch/parisc/kernel/irq.c
arch/parisc/kernel/parisc_ksyms.c
arch/parisc/kernel/pdc_cons.c
arch/parisc/lib/Makefile
arch/parisc/lib/libgcc/Makefile [deleted file]
arch/parisc/lib/libgcc/__ashldi3.c [deleted file]
arch/parisc/lib/libgcc/__ashrdi3.c [deleted file]
arch/parisc/lib/libgcc/__clzsi2.c [deleted file]
arch/parisc/lib/libgcc/__divdi3.c [deleted file]
arch/parisc/lib/libgcc/__divsi3.c [deleted file]
arch/parisc/lib/libgcc/__lshrdi3.c [deleted file]
arch/parisc/lib/libgcc/__moddi3.c [deleted file]
arch/parisc/lib/libgcc/__modsi3.c [deleted file]
arch/parisc/lib/libgcc/__muldi3.c [deleted file]
arch/parisc/lib/libgcc/__udivdi3.c [deleted file]
arch/parisc/lib/libgcc/__udivmoddi4.c [deleted file]
arch/parisc/lib/libgcc/__udivmodsi4.c [deleted file]
arch/parisc/lib/libgcc/__udivsi3.c [deleted file]
arch/parisc/lib/libgcc/__umoddi3.c [deleted file]
arch/parisc/lib/libgcc/__umodsi3.c [deleted file]
arch/parisc/lib/libgcc/__umulsidi3.c [deleted file]
arch/parisc/lib/libgcc/libgcc.h [deleted file]
arch/parisc/lib/milli/Makefile [deleted file]
arch/parisc/lib/milli/divI.S [deleted file]
arch/parisc/lib/milli/divU.S [deleted file]
arch/parisc/lib/milli/div_const.S [deleted file]
arch/parisc/lib/milli/dyncall.S [deleted file]
arch/parisc/lib/milli/milli.S [deleted file]
arch/parisc/lib/milli/milli.h [deleted file]
arch/parisc/lib/milli/mulI.S [deleted file]
arch/parisc/lib/milli/remI.S [deleted file]
arch/parisc/lib/milli/remU.S [deleted file]
arch/powerpc/Kconfig
arch/powerpc/boot/dts/mpc832x_mds.dts
arch/powerpc/boot/dts/mpc834x_mds.dts
arch/powerpc/boot/dts/mpc836x_mds.dts
arch/powerpc/boot/dts/mpc8544ds.dts
arch/powerpc/boot/dts/mpc8572ds.dts
arch/powerpc/boot/dts/mpc8641_hpcn.dts
arch/powerpc/boot/dts/sequoia.dts
arch/powerpc/configs/bamboo_defconfig
arch/powerpc/configs/cell_defconfig
arch/powerpc/configs/celleb_defconfig
arch/powerpc/configs/chrp32_defconfig
arch/powerpc/configs/ebony_defconfig
arch/powerpc/configs/ep88xc_defconfig
arch/powerpc/configs/g5_defconfig
arch/powerpc/configs/holly_defconfig
arch/powerpc/configs/iseries_defconfig
arch/powerpc/configs/kilauea_defconfig
arch/powerpc/configs/linkstation_defconfig
arch/powerpc/configs/lite5200_defconfig
arch/powerpc/configs/maple_defconfig
arch/powerpc/configs/mpc7448_hpc2_defconfig
arch/powerpc/configs/mpc8272_ads_defconfig
arch/powerpc/configs/mpc8313_rdb_defconfig
arch/powerpc/configs/mpc832x_mds_defconfig
arch/powerpc/configs/mpc832x_rdb_defconfig
arch/powerpc/configs/mpc834x_itx_defconfig
arch/powerpc/configs/mpc834x_itxgp_defconfig
arch/powerpc/configs/mpc834x_mds_defconfig
arch/powerpc/configs/mpc836x_mds_defconfig
arch/powerpc/configs/mpc8540_ads_defconfig
arch/powerpc/configs/mpc8544_ds_defconfig
arch/powerpc/configs/mpc8560_ads_defconfig
arch/powerpc/configs/mpc8568mds_defconfig
arch/powerpc/configs/mpc8572_ds_defconfig
arch/powerpc/configs/mpc85xx_cds_defconfig
arch/powerpc/configs/mpc8610_hpcd_defconfig
arch/powerpc/configs/mpc8641_hpcn_defconfig
arch/powerpc/configs/mpc866_ads_defconfig
arch/powerpc/configs/mpc885_ads_defconfig
arch/powerpc/configs/pasemi_defconfig
arch/powerpc/configs/pmac32_defconfig
arch/powerpc/configs/ppc64_defconfig
arch/powerpc/configs/pq2fads_defconfig
arch/powerpc/configs/prpmc2800_defconfig
arch/powerpc/configs/ps3_defconfig
arch/powerpc/configs/pseries_defconfig
arch/powerpc/configs/sequoia_defconfig
arch/powerpc/configs/walnut_defconfig
arch/powerpc/kernel/asm-offsets.c
arch/powerpc/kernel/head_32.S
arch/powerpc/kernel/head_40x.S
arch/powerpc/kernel/head_44x.S
arch/powerpc/kernel/head_fsl_booke.S
arch/powerpc/kernel/process.c
arch/powerpc/kernel/rtas.c
arch/powerpc/kernel/time.c
arch/powerpc/kernel/vdso.c
arch/powerpc/kernel/vdso32/cacheflush.S
arch/powerpc/kernel/vdso64/cacheflush.S
arch/powerpc/mm/mem.c
arch/powerpc/mm/mmu_decl.h
arch/powerpc/mm/stab.c
arch/powerpc/platforms/40x/walnut.c
arch/powerpc/platforms/44x/bamboo.c
arch/powerpc/platforms/44x/ebony.c
arch/powerpc/platforms/44x/sequoia.c
arch/powerpc/platforms/83xx/mpc832x_mds.c
arch/powerpc/platforms/83xx/mpc832x_rdb.c
arch/powerpc/platforms/83xx/mpc834x_mds.c
arch/powerpc/platforms/83xx/mpc836x_mds.c
arch/powerpc/platforms/83xx/usb.c
arch/powerpc/platforms/cell/spufs/inode.c
arch/powerpc/platforms/chrp/pci.c
arch/powerpc/platforms/embedded6xx/prpmc2800.c
arch/powerpc/platforms/pasemi/setup.c
arch/powerpc/platforms/powermac/pci.c
arch/powerpc/platforms/pseries/Kconfig
arch/powerpc/sysdev/uic.c
arch/ppc/configs/ml300_defconfig
arch/ppc/configs/ml403_defconfig
arch/ppc/kernel/setup.c
arch/ppc/mm/init.c
arch/ppc/mm/mmu_decl.h
arch/ppc/platforms/4xx/xparameters/xparameters.h
arch/ppc/platforms/4xx/yucca.c
arch/ppc/syslib/virtex_devices.c
arch/s390/appldata/appldata.h
arch/s390/appldata/appldata_base.c
arch/s390/appldata/appldata_mem.c
arch/s390/appldata/appldata_net_sum.c
arch/s390/appldata/appldata_os.c
arch/s390/kernel/early.c
arch/s390/kernel/entry.S
arch/s390/kernel/entry64.S
arch/s390/kernel/setup.c
arch/s390/kernel/smp.c
arch/s390/kernel/traps.c
arch/s390/mm/cmm.c
arch/sh/boards/renesas/rts7751r2d/setup.c
arch/sh/configs/r7780mp_defconfig
arch/sh/configs/r7785rp_defconfig
arch/sh/drivers/pci/ops-r7780rp.c
arch/sh/drivers/pci/ops-se7780.c
arch/sh/drivers/pci/pci-sh7780.h
arch/sh/mm/fault.c
arch/sparc/kernel/devices.c
arch/sparc/kernel/pcic.c
arch/sparc64/defconfig
arch/sparc64/kernel/chmc.c
arch/sparc64/kernel/isa.c
arch/sparc64/kernel/ldc.c
arch/sparc64/kernel/pci_sun4v.c
arch/sparc64/kernel/smp.c
arch/um/Kconfig.i386
arch/um/Makefile
arch/um/Makefile-i386
arch/um/drivers/chan_user.c
arch/um/drivers/net_kern.c
arch/um/drivers/ubd_kern.c
arch/um/os-Linux/time.c
arch/x86/Kconfig
arch/x86/Makefile
arch/x86/boot/header.S
arch/x86/kernel/acpi/processor.c
arch/x86/kernel/acpi/sleep_64.c
arch/x86/kernel/acpi/wakeup_32.S
arch/x86/kernel/apic_32.c
arch/x86/kernel/cpu/intel_cacheinfo.c
arch/x86/kernel/crash.c
arch/x86/kernel/head_32.S
arch/x86/kernel/hpet.c
arch/x86/kernel/i386_ksyms_32.c
arch/x86/kernel/io_apic_32.c
arch/x86/kernel/io_apic_64.c
arch/x86/kernel/kprobes_64.c
arch/x86/kernel/nmi_32.c
arch/x86/kernel/nmi_64.c
arch/x86/kernel/paravirt_32.c
arch/x86/kernel/pci-dma_64.c
arch/x86/kernel/reboot_32.c
arch/x86/kernel/reboot_64.c
arch/x86/kernel/topology.c
arch/x86/kernel/traps_32.c
arch/x86/kernel/traps_64.c
arch/x86/lguest/Kconfig
arch/x86/mm/init_64.c
arch/x86/pci/acpi.c
arch/x86/pci/common.c
arch/x86/xen/enlighten.c
arch/x86/xen/mmu.c
arch/xtensa/platform-iss/network.c
block/blktrace.c
block/genhd.c
block/ll_rw_blk.c
crypto/algapi.c
crypto/authenc.c
crypto/fcrypt.c
drivers/acpi/Kconfig
drivers/acpi/Makefile
drivers/acpi/ac.c
drivers/acpi/battery.c
drivers/acpi/dispatcher/dsobject.c
drivers/acpi/ec.c
drivers/acpi/numa.c
drivers/acpi/osl.c
drivers/acpi/processor_core.c
drivers/acpi/processor_idle.c
drivers/acpi/processor_throttling.c
drivers/acpi/sbs.c
drivers/acpi/tables/tbutils.c
drivers/acpi/video.c
drivers/ata/ahci.c
drivers/ata/ata_piix.c
drivers/ata/libata-core.c
drivers/ata/libata-eh.c
drivers/ata/libata-scsi.c
drivers/ata/pata_ali.c
drivers/ata/pata_amd.c
drivers/ata/pata_at32.c
drivers/ata/pata_bf54x.c
drivers/ata/pata_hpt37x.c
drivers/ata/pata_isapnp.c
drivers/ata/pata_jmicron.c
drivers/ata/pata_sil680.c
drivers/ata/pata_sis.c
drivers/ata/pata_via.c
drivers/ata/sata_mv.c
drivers/ata/sata_nv.c
drivers/ata/sata_sil24.c
drivers/atm/he.c
drivers/base/core.c
drivers/base/power/Makefile
drivers/base/power/main.c
drivers/base/power/power.h
drivers/block/aoe/aoeblk.c
drivers/block/umem.c
drivers/block/virtio_blk.c
drivers/char/Kconfig
drivers/char/apm-emulation.c
drivers/char/cs5535_gpio.c
drivers/char/sonypi.c
drivers/char/tpm/tpm_tis.c
drivers/crypto/Kconfig
drivers/dma/Kconfig
drivers/firewire/fw-ohci.c
drivers/hwmon/coretemp.c
drivers/i2c/busses/i2c-davinci.c
drivers/i2c/busses/i2c-gpio.c
drivers/i2c/busses/i2c-omap.c
drivers/i2c/chips/isp1301_omap.c
drivers/ide/Kconfig
drivers/ide/Makefile
drivers/ide/cris/ide-cris.c
drivers/ide/ide-dma.c
drivers/ide/ide-iops.c
drivers/ide/ide-probe.c
drivers/ide/legacy/ali14xx.c
drivers/ide/legacy/macide.c
drivers/ide/legacy/q40ide.c
drivers/ide/pci/aec62xx.c
drivers/ide/pci/alim15x3.c
drivers/ide/pci/piix.c
drivers/ide/pci/siimage.c
drivers/ide/pci/sis5513.c
drivers/ide/pci/trm290.c
drivers/ide/ppc/pmac.c
drivers/infiniband/hw/ehca/ehca_av.c
drivers/infiniband/hw/ehca/ehca_qp.c
drivers/infiniband/hw/ipath/ipath_cq.c
drivers/infiniband/hw/ipath/ipath_qp.c
drivers/infiniband/hw/ipath/ipath_srq.c
drivers/infiniband/hw/ipath/ipath_verbs.c
drivers/infiniband/ulp/ipoib/ipoib_main.c
drivers/infiniband/ulp/iser/iser_memory.c
drivers/input/keyboard/Kconfig
drivers/input/keyboard/gpio_keys.c
drivers/input/serio/Kconfig
drivers/input/serio/i8042-x86ia64io.h
drivers/input/touchscreen/ads7846.c
drivers/isdn/hisax/hfcscard.c
drivers/isdn/i4l/isdn_common.c
drivers/isdn/i4l/isdn_net.c
drivers/kvm/kvm_main.c
drivers/kvm/svm.c
drivers/kvm/x86_emulate.c
drivers/leds/led-class.c
drivers/leds/led-triggers.c
drivers/lguest/lguest_device.c
drivers/media/common/saa7146_video.c
drivers/media/dvb/dvb-usb/Makefile
drivers/media/dvb/dvb-usb/dibusb-common.c
drivers/media/dvb/frontends/tda10086.c
drivers/media/dvb/frontends/zl10353.c
drivers/media/dvb/frontends/zl10353.h
drivers/media/video/bt8xx/bttv-cards.c
drivers/media/video/bt8xx/bttv-driver.c
drivers/media/video/cx88/cx88-blackbird.c
drivers/media/video/cx88/cx88-video.c
drivers/media/video/em28xx/em28xx-video.c
drivers/media/video/ivtv/ivtv-i2c.c
drivers/media/video/ivtv/ivtv-i2c.h
drivers/media/video/ivtv/ivtv-streams.c
drivers/media/video/saa5246a.c
drivers/media/video/saa5249.c
drivers/media/video/saa7134/saa7134-alsa.c
drivers/media/video/saa7134/saa7134-cards.c
drivers/media/video/saa7134/saa7134-core.c
drivers/media/video/saa7134/saa7134-dvb.c
drivers/media/video/saa7134/saa7134-empress.c
drivers/media/video/saa7134/saa7134-video.c
drivers/media/video/tvp5150.c
drivers/media/video/videobuf-core.c
drivers/media/video/videobuf-vmalloc.c
drivers/media/video/vivi.c
drivers/mfd/sm501.c
drivers/misc/sony-laptop.c
drivers/misc/thinkpad_acpi.c
drivers/misc/thinkpad_acpi.h
drivers/mmc/card/block.c
drivers/mmc/card/queue.c
drivers/mmc/card/sdio_uart.c
drivers/mmc/host/mmc_spi.c
drivers/mmc/host/tifm_sd.c
drivers/net/Kconfig
drivers/net/amd8111e.c
drivers/net/bfin_mac.c
drivers/net/bfin_mac.h
drivers/net/bnx2.c
drivers/net/bnx2.h
drivers/net/bonding/bond_main.c
drivers/net/bonding/bond_sysfs.c
drivers/net/bonding/bonding.h
drivers/net/chelsio/cxgb2.c
drivers/net/chelsio/pm3393.c
drivers/net/chelsio/sge.c
drivers/net/chelsio/sge.h
drivers/net/cxgb3/regs.h
drivers/net/cxgb3/t3_hw.c
drivers/net/cxgb3/xgmac.c
drivers/net/e100.c
drivers/net/e1000/e1000_ethtool.c
drivers/net/e1000/e1000_main.c
drivers/net/e1000e/ethtool.c
drivers/net/ehea/ehea.h
drivers/net/ehea/ehea_main.c
drivers/net/ehea/ehea_qmr.h
drivers/net/fec_mpc52xx.c
drivers/net/forcedeth.c
drivers/net/gianfar.c
drivers/net/ibm_newemac/core.c
drivers/net/ibm_newemac/core.h
drivers/net/ibm_newemac/debug.c
drivers/net/ibm_newemac/debug.h
drivers/net/ibm_newemac/emac.h
drivers/net/ibm_newemac/mal.c
drivers/net/ibm_newemac/mal.h
drivers/net/ibm_newemac/phy.c
drivers/net/ibm_newemac/phy.h
drivers/net/ibm_newemac/rgmii.c
drivers/net/ibm_newemac/rgmii.h
drivers/net/ibm_newemac/tah.c
drivers/net/ibm_newemac/tah.h
drivers/net/ibm_newemac/zmii.c
drivers/net/ibm_newemac/zmii.h
drivers/net/lib82596.c
drivers/net/mlx4/qp.c
drivers/net/myri10ge/myri10ge.c
drivers/net/niu.c
drivers/net/pasemi_mac.c
drivers/net/phy/marvell.c
drivers/net/phy/mdio_bus.c
drivers/net/phy/phy.c
drivers/net/phy/phy_device.c
drivers/net/plip.c
drivers/net/s2io-regs.h
drivers/net/s2io.c
drivers/net/skge.c
drivers/net/sky2.c
drivers/net/sky2.h
drivers/net/smc911x.c
drivers/net/smc911x.h
drivers/net/smc91x.h
drivers/net/sungem.c
drivers/net/tulip/dmfe.c
drivers/net/ucc_geth.c
drivers/net/usb/dm9601.c
drivers/net/via-velocity.c
drivers/net/virtio_net.c
drivers/net/wireless/b43/main.c
drivers/net/wireless/b43/phy.c
drivers/net/wireless/b43legacy/dma.c
drivers/net/wireless/b43legacy/main.c
drivers/net/wireless/b43legacy/phy.c
drivers/net/wireless/bcm43xx/bcm43xx_phy.c
drivers/net/wireless/iwlwifi/iwl3945-base.c
drivers/net/wireless/iwlwifi/iwl4965-base.c
drivers/net/wireless/libertas/if_cs.c
drivers/net/wireless/libertas/main.c
drivers/net/wireless/libertas/wext.c
drivers/net/wireless/netwave_cs.c
drivers/net/wireless/p54usb.c
drivers/net/wireless/rt2x00/rt2500usb.c
drivers/net/wireless/rt2x00/rt2x00.h
drivers/net/wireless/rt2x00/rt2x00usb.c
drivers/net/wireless/rt2x00/rt73usb.c
drivers/parisc/lba_pci.c
drivers/pci/hotplug/acpiphp.h
drivers/pci/hotplug/acpiphp_core.c
drivers/pci/hotplug/acpiphp_glue.c
drivers/pci/hotplug/acpiphp_ibm.c
drivers/pci/hotplug/cpqphp_core.c
drivers/pci/hotplug/cpqphp_ctrl.c
drivers/pci/hotplug/fakephp.c
drivers/pci/hotplug/pciehp_ctrl.c
drivers/pci/hotplug/rpadlpar_core.c
drivers/pci/hotplug/rpaphp_core.c
drivers/pci/hotplug/rpaphp_pci.c
drivers/pci/hotplug/shpchp_ctrl.c
drivers/pci/pci-sysfs.c
drivers/pci/pcie/aer/aerdrv_core.c
drivers/pci/pcie/portdrv_pci.c
drivers/pci/probe.c
drivers/pcmcia/cs.c
drivers/pcmcia/ds.c
drivers/pcmcia/ti113x.h
drivers/pcmcia/yenta_socket.c
drivers/pnp/pnpacpi/rsparser.c
drivers/pnp/resource.c
drivers/ps3/Makefile
drivers/ps3/ps3-sys-manager.c [moved from drivers/ps3/sys-manager.c with 100% similarity]
drivers/ps3/ps3-vuart.c [moved from drivers/ps3/vuart.c with 100% similarity]
drivers/rtc/Kconfig
drivers/rtc/interface.c
drivers/rtc/rtc-dev.c
drivers/rtc/rtc-max6902.c
drivers/s390/block/dcssblk.c
drivers/s390/cio/css.c
drivers/s390/cio/device_fsm.c
drivers/s390/cio/device_id.c
drivers/s390/net/ctcmain.c
drivers/s390/net/netiucv.c
drivers/s390/scsi/zfcp_erp.c
drivers/scsi/aacraid/commsup.c
drivers/scsi/aacraid/linit.c
drivers/scsi/atari_scsi.c
drivers/scsi/dpt_i2o.c
drivers/scsi/dpti.h
drivers/scsi/dtc.c
drivers/scsi/esp_scsi.c
drivers/scsi/g_NCR5380.c
drivers/scsi/ide-scsi.c
drivers/scsi/iscsi_tcp.c
drivers/scsi/iscsi_tcp.h
drivers/scsi/libiscsi.c
drivers/scsi/mac_scsi.c
drivers/scsi/pas16.c
drivers/scsi/qla1280.c
drivers/scsi/scsi.c
drivers/scsi/sun3_scsi.c
drivers/scsi/sun3_scsi_vme.c
drivers/scsi/t128.c
drivers/scsi/zorro7xx.c
drivers/serial/Kconfig
drivers/serial/ip22zilog.c
drivers/serial/pxa.c
drivers/serial/suncore.c
drivers/serial/suncore.h
drivers/serial/sunhv.c
drivers/serial/sunsab.c
drivers/serial/sunsu.c
drivers/serial/sunzilog.c
drivers/serial/uartlite.c
drivers/spi/Kconfig
drivers/spi/at25.c
drivers/spi/atmel_spi.c
drivers/spi/pxa2xx_spi.c
drivers/spi/spi.c
drivers/spi/spi_bfin5xx.c
drivers/spi/spi_imx.c
drivers/spi/spi_s3c24xx_gpio.c
drivers/usb/README
drivers/usb/core/driver.c
drivers/usb/core/hcd.c
drivers/usb/core/hub.c
drivers/usb/core/message.c
drivers/usb/core/sysfs.c
drivers/usb/core/usb.c
drivers/usb/gadget/omap_udc.c
drivers/usb/gadget/s3c2410_udc.c
drivers/usb/host/Kconfig
drivers/usb/host/ehci-hcd.c
drivers/usb/image/microtek.c
drivers/usb/misc/adutux.c
drivers/usb/misc/usbled.c
drivers/usb/serial/generic.c
drivers/usb/serial/keyspan.c
drivers/usb/serial/mos7840.c
drivers/usb/serial/pl2303.c
drivers/usb/serial/pl2303.h
drivers/usb/serial/sierra.c
drivers/usb/storage/scsiglue.c
drivers/usb/storage/unusual_devs.h
drivers/video/Kconfig
drivers/video/Makefile
drivers/video/atmel_lcdfb.c
drivers/video/aty/radeon_base.c
drivers/video/console/Kconfig
drivers/video/efifb.c [new file with mode: 0644]
drivers/video/fb_ddc.c
drivers/video/imacfb.c
drivers/video/ps3fb.c
drivers/virtio/virtio.c
drivers/zorro/zorro-driver.c
fs/Kconfig
fs/aio.c
fs/bfs/inode.c
fs/cifs/CHANGES
fs/cifs/README
fs/cifs/TODO
fs/cifs/cifs_spnego.c
fs/cifs/cifs_spnego.h
fs/cifs/cifsacl.c
fs/cifs/cifsfs.c
fs/cifs/cifsglob.h
fs/cifs/cifsproto.h
fs/cifs/cifssmb.c
fs/cifs/connect.c
fs/cifs/file.c
fs/cifs/inode.c
fs/cifs/sess.c
fs/cifs/transport.c
fs/compat_ioctl.c
fs/exec.c
fs/ext2/ext2.h
fs/fuse/dir.c
fs/fuse/file.c
fs/fuse/fuse_i.h
fs/fuse/inode.c
fs/jbd/checkpoint.c
fs/jbd/commit.c
fs/jffs2/background.c
fs/nfs/dir.c
fs/nfs/direct.c
fs/nfs/getroot.c
fs/nfs/super.c
fs/nfs/write.c
fs/ocfs2/aops.c
fs/ocfs2/cluster/masklog.h
fs/ocfs2/cluster/tcp.c
fs/ocfs2/dcache.c
fs/ocfs2/dlm/dlmmaster.c
fs/ocfs2/file.c
fs/ocfs2/inode.c
fs/ocfs2/localalloc.c
fs/ocfs2/super.c
fs/proc/array.c
fs/proc/base.c
fs/proc/generic.c
fs/proc/inode.c
fs/proc/internal.h
fs/proc/proc_net.c
fs/proc/root.c
fs/reiserfs/procfs.c
fs/sysfs/file.c
fs/ufs/dir.c
fs/ufs/super.c
fs/xfs/linux-2.6/xfs_buf.c
fs/xfs/linux-2.6/xfs_file.c
fs/xfs/linux-2.6/xfs_ioctl.c
fs/xfs/linux-2.6/xfs_ioctl32.c
fs/xfs/linux-2.6/xfs_iops.c
fs/xfs/quota/xfs_qm.c
fs/xfs/xfs_iget.c
fs/xfs/xfs_itable.c
include/acpi/processor.h
include/asm-arm/arch-at91/board.h
include/asm-arm/arch-ixp23xx/irqs.h
include/asm-arm/arch-omap/board-innovator.h
include/asm-arm/arch-pxa/irqs.h
include/asm-arm/arch-pxa/mfp-pxa300.h
include/asm-arm/arch-pxa/mfp-pxa320.h
include/asm-arm/arch-pxa/mfp.h
include/asm-arm/arch-pxa/pxa-regs.h
include/asm-arm/arch-s3c2410/spi-gpio.h
include/asm-avr32/cacheflush.h
include/asm-avr32/ocd.h
include/asm-avr32/processor.h
include/asm-avr32/ptrace.h
include/asm-avr32/sysreg.h
include/asm-avr32/system.h
include/asm-avr32/thread_info.h
include/asm-blackfin/bfin-global.h
include/asm-blackfin/bfin5xx_spi.h
include/asm-blackfin/cplbinit.h
include/asm-blackfin/delay.h
include/asm-blackfin/io.h
include/asm-blackfin/mach-bf527/irq.h
include/asm-blackfin/mach-bf527/mem_map.h
include/asm-blackfin/mach-bf533/irq.h
include/asm-blackfin/mach-bf533/mem_map.h
include/asm-blackfin/mach-bf533/portmux.h
include/asm-blackfin/mach-bf537/irq.h
include/asm-blackfin/mach-bf537/mem_map.h
include/asm-blackfin/mach-bf548/bf548.h
include/asm-blackfin/mach-bf548/defBF544.h
include/asm-blackfin/mach-bf548/defBF548.h
include/asm-blackfin/mach-bf548/defBF54x_base.h
include/asm-blackfin/mach-bf548/irq.h
include/asm-blackfin/mach-bf548/mem_map.h
include/asm-blackfin/mach-bf561/bf561.h
include/asm-blackfin/mach-bf561/defBF561.h
include/asm-blackfin/mach-bf561/irq.h
include/asm-blackfin/mach-bf561/mem_map.h
include/asm-blackfin/mach-common/def_LPBlackfin.h
include/asm-blackfin/page_offset.h
include/asm-blackfin/string.h
include/asm-blackfin/traps.h
include/asm-generic/resource.h
include/asm-h8300/timex.h
include/asm-ia64/acpi.h
include/asm-ia64/iosapic.h
include/asm-m32r/thread_info.h
include/asm-m32r/unistd.h
include/asm-mips/8253pit.h [deleted file]
include/asm-mips/cpu-features.h
include/asm-mips/dma.h
include/asm-mips/futex.h
include/asm-mips/i8253.h
include/asm-mips/ip32/ip32_ints.h
include/asm-mips/mach-au1x00/au1000.h
include/asm-mips/mach-au1x00/au1100_mmc.h
include/asm-mips/system.h
include/asm-mips/time.h
include/asm-parisc/pdc.h
include/asm-powerpc/page_32.h
include/asm-powerpc/pci-bridge.h
include/asm-powerpc/pgtable-ppc32.h
include/asm-powerpc/time.h
include/asm-powerpc/vdso_datapage.h
include/asm-s390/system.h
include/asm-sh/cacheflush.h
include/asm-x86/acpi.h
include/asm-x86/apic_32.h
include/asm-x86/hpet.h
include/linux/acpi.h
include/linux/cgroup_subsys.h
include/linux/cpuidle.h
include/linux/ext2_fs.h
include/linux/fuse.h
include/linux/if_bonding.h
include/linux/inet_lro.h
include/linux/input.h
include/linux/jbd.h
include/linux/kd.h
include/linux/leds.h
include/linux/libata.h
include/linux/mm.h
include/linux/nfs_fs.h
include/linux/pci_ids.h
include/linux/phy.h
include/linux/pnp.h
include/linux/proc_fs.h
include/linux/rtc.h
include/linux/scatterlist.h
include/linux/sched.h
include/linux/screen_info.h
include/linux/serial_core.h
include/linux/skbuff.h
include/linux/sunrpc/debug.h
include/linux/sunrpc/xprtsock.h
include/linux/sysctl.h
include/linux/thread_info.h
include/linux/timex.h
include/linux/usb.h
include/linux/usbdevice_fs.h
include/media/videobuf-core.h
include/net/ieee80211.h
include/net/inet_hashtables.h
include/net/ip_vs.h
include/net/route.h
include/net/sctp/constants.h
include/net/sctp/structs.h
include/net/sock.h
include/net/tcp.h
include/scsi/scsi_device.h
include/sound/version.h
init/Kconfig
init/do_mounts_initrd.c
ipc/mqueue.c
kernel/Kconfig.instrumentation
kernel/acct.c
kernel/exit.c
kernel/fork.c
kernel/futex.c
kernel/hrtimer.c
kernel/kallsyms.c
kernel/lockdep.c
kernel/module.c
kernel/sched.c
kernel/sched_debug.c
kernel/sched_fair.c
kernel/sched_rt.c
kernel/sched_stats.h
kernel/sysctl.c
kernel/sysctl_check.c
kernel/time/clockevents.c
kernel/time/ntp.c
kernel/time/tick-sched.c
kernel/user.c
kernel/utsname_sysctl.c
lib/Kconfig.debug
lib/hexdump.c
lib/kobject.c
lib/textsearch.c
mm/backing-dev.c
mm/filemap_xip.c
mm/hugetlb.c
mm/mmap.c
mm/nommu.c
mm/page_alloc.c
mm/rmap.c
mm/shmem.c
mm/slab.c
mm/slob.c
mm/slub.c
mm/sparse-vmemmap.c
net/8021q/vlan.c
net/8021q/vlan_dev.c
net/bridge/br.c
net/bridge/br_fdb.c
net/bridge/br_input.c
net/bridge/netfilter/ebt_among.c
net/bridge/netfilter/ebtable_broute.c
net/core/dev.c
net/core/pktgen.c
net/core/skbuff.c
net/dccp/ccids/lib/loss_interval.c
net/decnet/dn_dev.c
net/ieee80211/ieee80211_crypt_ccmp.c
net/ieee80211/ieee80211_crypt_tkip.c
net/ieee80211/ieee80211_tx.c
net/ipv4/arp.c
net/ipv4/devinet.c
net/ipv4/esp4.c
net/ipv4/inet_diag.c
net/ipv4/inet_lro.c
net/ipv4/ipvs/ip_vs_core.c
net/ipv4/ipvs/ip_vs_ctl.c
net/ipv4/ipvs/ip_vs_lblc.c
net/ipv4/ipvs/ip_vs_lblcr.c
net/ipv4/ipvs/ip_vs_proto.c
net/ipv4/ipvs/ip_vs_sched.c
net/ipv4/netfilter/iptable_raw.c
net/ipv4/netfilter/nf_nat_core.c
net/ipv4/route.c
net/ipv4/sysctl_net_ipv4.c
net/ipv4/tcp_illinois.c
net/ipv4/tcp_input.c
net/ipv4/tcp_ipv4.c
net/ipv4/tcp_output.c
net/ipv6/addrconf.c
net/ipv6/esp6.c
net/ipv6/ip6_output.c
net/ipv6/tcp_ipv6.c
net/ipv6/xfrm6_policy.c
net/irda/ircomm/ircomm_tty.c
net/irda/iriap.c
net/irda/irlan/irlan_eth.c
net/iucv/iucv.c
net/key/af_key.c
net/mac80211/ieee80211.c
net/mac80211/ieee80211_sta.c
net/mac80211/rx.c
net/mac80211/wep.c
net/netfilter/xt_CONNMARK.c
net/netfilter/xt_CONNSECMARK.c
net/netfilter/xt_TCPMSS.c
net/rfkill/rfkill.c
net/rose/rose_dev.c
net/rxrpc/Kconfig
net/rxrpc/rxkad.c
net/sctp/Kconfig
net/sctp/auth.c
net/sctp/bind_addr.c
net/sctp/sm_make_chunk.c
net/sctp/sm_statefuns.c
net/sctp/socket.c
net/sunrpc/auth_gss/auth_gss.c
net/sunrpc/auth_gss/gss_krb5_mech.c
net/sunrpc/auth_gss/gss_krb5_seal.c
net/sunrpc/rpc_pipe.c
net/sunrpc/xprt.c
net/sunrpc/xprtrdma/transport.c
net/sunrpc/xprtsock.c
net/unix/af_unix.c
net/wireless/wext.c
net/xfrm/xfrm_policy.c
net/xfrm/xfrm_state.c
net/xfrm/xfrm_user.c
scripts/checkpatch.pl
scripts/mkmakefile
security/commoncap.c
security/dummy.c
security/selinux/selinuxfs.c
sound/drivers/mpu401/mpu401_uart.c
sound/drivers/portman2x4.c
sound/pci/ca0106/ca0106_mixer.c
sound/pci/ca0106/ca0106_proc.c
sound/pci/cmipci.c
sound/pci/emu10k1/emumixer.c
sound/pci/emu10k1/p16v.c
sound/pci/hda/hda_codec.c
sound/pci/hda/hda_local.h
sound/pci/hda/patch_analog.c
sound/pci/hda/patch_sigmatel.c
sound/soc/codecs/cs4270.c
sound/soc/s3c24xx/s3c2443-ac97.c

index 299615d821ac73ab81a0e18d28331f869f03629a..c3014df066c4e3ee61b12397cb6e964131630427 100644 (file)
@@ -262,6 +262,8 @@ mtrr.txt
        - how to use PPro Memory Type Range Registers to increase performance.
 mutex-design.txt
        - info on the generic mutex subsystem.
+namespaces/
+       - directory with various information about namespaces
 nbd.txt
        - info on a TCP implementation of a network block device.
 netlabel/
index 054a7ecf64c6257551db24c986671f06a7e3d772..4953bc258729bd641e3fbdf33bd6efe8368e7803 100644 (file)
@@ -11,7 +11,7 @@ DOCBOOKS := wanbook.xml z8530book.xml mcabook.xml videobook.xml \
            procfs-guide.xml writing_usb_driver.xml \
            kernel-api.xml filesystems.xml lsm.xml usb.xml \
            gadget.xml libata.xml mtdnand.xml librs.xml rapidio.xml \
-           genericirq.xml s390-drivers.xml
+           genericirq.xml s390-drivers.xml uio-howto.xml
 
 ###
 # The build process is as follows (targets):
index c119484258b8428d59b07b3046a5c5d48def9519..fdd7f4f887b75ba7bc96b7ab81b9abc7d3348d73 100644 (file)
 </abstract>
 
 <revhistory>
+       <revision>
+       <revnumber>0.4</revnumber>
+       <date>2007-11-26</date>
+       <authorinitials>hjk</authorinitials>
+       <revremark>Removed section about uio_dummy.</revremark>
+       </revision>
        <revision>
        <revnumber>0.3</revnumber>
        <date>2007-04-29</date>
@@ -94,6 +100,26 @@ interested in translating it, please email me
        user space. This simplifies development and reduces the risk of
        serious bugs within a kernel module.
        </para>
+       <para>
+       Please note that UIO is not an universal driver interface. Devices
+       that are already handled well by other kernel subsystems (like
+       networking or serial or USB) are no candidates for an UIO driver.
+       Hardware that is ideally suited for an UIO driver fulfills all of
+       the following:
+       </para>
+<itemizedlist>
+<listitem>
+       <para>The device has memory that can be mapped. The device can be
+       controlled completely by writing to this memory.</para>
+</listitem>
+<listitem>
+       <para>The device usually generates interrupts.</para>
+</listitem>
+<listitem>
+       <para>The device does not fit into one of the standard kernel
+       subsystems.</para>
+</listitem>
+</itemizedlist>
 </sect1>
 
 <sect1 id="thanks">
@@ -174,8 +200,9 @@ interested in translating it, please email me
        For cards that don't generate interrupts but need to be
        polled, there is the possibility to set up a timer that
        triggers the interrupt handler at configurable time intervals.
-       See <filename>drivers/uio/uio_dummy.c</filename> for an
-       example of this technique.
+       This interrupt simulation is done by calling
+       <function>uio_event_notify()</function>
+       from the timer's event handler.
        </para>
 
        <para>
@@ -263,63 +290,11 @@ offset = N * getpagesize();
 </sect1>
 </chapter>
 
-<chapter id="using-uio_dummy" xreflabel="Using uio_dummy">
-<?dbhtml filename="using-uio_dummy.html"?>
-<title>Using uio_dummy</title>
-       <para>
-       Well, there is no real use for uio_dummy. Its only purpose is
-       to test most parts of the UIO system (everything except
-       hardware interrupts), and to serve as an example for the
-       kernel module that you will have to write yourself.
-       </para>
-
-<sect1 id="what_uio_dummy_does">
-<title>What uio_dummy does</title>
-       <para>
-       The kernel module <filename>uio_dummy.ko</filename> creates a
-       device that uses a timer to generate periodic interrupts. The
-       interrupt handler does nothing but increment a counter. The
-       driver adds two custom attributes, <varname>count</varname>
-       and <varname>freq</varname>, that appear under
-       <filename>/sys/devices/platform/uio_dummy/</filename>.
-       </para>
-
-       <para>
-       The attribute <varname>count</varname> can be read and
-       written.  The associated file
-       <filename>/sys/devices/platform/uio_dummy/count</filename>
-       appears as a normal text file and contains the total number of
-       timer interrupts. If you look at it (e.g. using
-       <function>cat</function>), you'll notice it is slowly counting
-       up.
-       </para>
-
-       <para>
-       The attribute <varname>freq</varname> can be read and written.
-       The content of
-       <filename>/sys/devices/platform/uio_dummy/freq</filename>
-       represents the number of system timer ticks between two timer
-       interrupts. The default value of <varname>freq</varname> is
-       the value of the kernel variable <varname>HZ</varname>, which
-       gives you an interval of one second. Lower values will
-       increase the frequency. Try the following:
-       </para>
-<programlisting format="linespecific">
-cd /sys/devices/platform/uio_dummy/
-echo 100 > freq
-</programlisting>
-       <para>
-       Use <function>cat count</function> to see how the interrupt
-       frequency changes.
-       </para>
-</sect1>
-</chapter>
-
 <chapter id="custom_kernel_module" xreflabel="Writing your own kernel module">
 <?dbhtml filename="custom_kernel_module.html"?>
 <title>Writing your own kernel module</title>
        <para>
-       Please have a look at <filename>uio_dummy.c</filename> as an
+       Please have a look at <filename>uio_cif.c</filename> as an
        example. The following paragraphs explain the different
        sections of this file.
        </para>
@@ -354,9 +329,8 @@ See the description below for details.
 interrupt, it's your modules task to determine the irq number during
 initialization. If you don't have a hardware generated interrupt but
 want to trigger the interrupt handler in some other way, set
-<varname>irq</varname> to <varname>UIO_IRQ_CUSTOM</varname>. The
-uio_dummy module does this as it triggers the event mechanism in a timer
-routine. If you had no interrupt at all, you could set
+<varname>irq</varname> to <varname>UIO_IRQ_CUSTOM</varname>.
+If you had no interrupt at all, you could set
 <varname>irq</varname> to <varname>UIO_IRQ_NONE</varname>, though this
 rarely makes sense.
 </para></listitem>
index 003c7319b8c7a6dbae0881ae513474eea86f727b..13ab076dcd92484149eec9ef9e8bc1fc33031397 100644 (file)
@@ -1,5 +1,3 @@
-This is an explanation of what i2c is, and what is supported in this package.
-
 I2C and SMBus
 =============
 
@@ -33,52 +31,17 @@ When we talk about I2C, we use the following terms:
             Client
 
 An Algorithm driver contains general code that can be used for a whole class
-of I2C adapters. Each specific adapter driver depends on one algorithm
-driver.
+of I2C adapters. Each specific adapter driver either depends on one algorithm
+driver, or includes its own implementation.
 
 A Driver driver (yes, this sounds ridiculous, sorry) contains the general
 code to access some type of device. Each detected device gets its own
 data in the Client structure. Usually, Driver and Client are more closely
 integrated than Algorithm and Adapter.
 
-For a given configuration, you will need a driver for your I2C bus (usually
-a separate Adapter and Algorithm driver), and drivers for your I2C devices
-(usually one driver for each device). There are no I2C device drivers
-in this package. See the lm_sensors project http://www.lm-sensors.nu
-for device drivers.
+For a given configuration, you will need a driver for your I2C bus, and
+drivers for your I2C devices (usually one driver for each device).
 
 At this time, Linux only operates I2C (or SMBus) in master mode; you can't
 use these APIs to make a Linux system behave as a slave/device, either to
 speak a custom protocol or to emulate some other device.
-
-
-Included Bus Drivers
-====================
-Note that only stable drivers are patched into the kernel by 'mkpatch'.
-
-
-Base modules
-------------
-
-i2c-core: The basic I2C code, including the /proc/bus/i2c* interface
-i2c-dev:  The /dev/i2c-* interface
-i2c-proc: The /proc/sys/dev/sensors interface for device (client) drivers
-
-Algorithm drivers
------------------
-
-i2c-algo-bit:    A bit-banging algorithm
-i2c-algo-pcf:    A PCF 8584 style algorithm
-i2c-algo-ibm_ocp: An algorithm for the I2C device in IBM 4xx processors (NOT BUILT BY DEFAULT)
-
-Adapter drivers
----------------
-
-i2c-elektor:     Elektor ISA card (uses i2c-algo-pcf)
-i2c-elv:         ELV parallel port adapter (uses i2c-algo-bit)
-i2c-pcf-epp:     PCF8584 on a EPP parallel port (uses i2c-algo-pcf) (NOT mkpatched)
-i2c-philips-par: Philips style parallel port adapter (uses i2c-algo-bit)
-i2c-adap-ibm_ocp: IBM 4xx processor I2C device (uses i2c-algo-ibm_ocp) (NOT BUILT BY DEFAULT)
-i2c-pport:       Primitive parallel port adapter (uses i2c-algo-bit)
-i2c-velleman:    Velleman K8000 parallel port adapter (uses i2c-algo-bit)
-
index 42008395534d67c39dfc1da086ee9f35eaa95c3a..9b0e322118b5402eb83868c70266f8afdf420ed1 100644 (file)
@@ -1040,6 +1040,11 @@ static void add_virtqueue(struct device *dev, unsigned int num_descs,
                / getpagesize();
        p = get_pages(pages);
 
+       /* Initialize the virtqueue */
+       vq->next = NULL;
+       vq->last_avail_idx = 0;
+       vq->dev = dev;
+
        /* Initialize the configuration. */
        vq->config.num = num_descs;
        vq->config.irq = devices.next_irq++;
@@ -1057,9 +1062,6 @@ static void add_virtqueue(struct device *dev, unsigned int num_descs,
        for (i = &dev->vq; *i; i = &(*i)->next);
        *i = vq;
 
-       /* Link virtqueue back to device. */
-       vq->dev = dev;
-
        /* Set the routine to call when the Guest does something to this
         * virtqueue. */
        vq->handle_output = handle_output;
@@ -1093,6 +1095,7 @@ static struct device *new_device(const char *name, u16 type, int fd,
        dev->desc = new_dev_desc(type);
        dev->handle_input = handle_input;
        dev->name = name;
+       dev->vq = NULL;
        return dev;
 }
 
diff --git a/Documentation/namespaces/compatibility-list.txt b/Documentation/namespaces/compatibility-list.txt
new file mode 100644 (file)
index 0000000..defc558
--- /dev/null
@@ -0,0 +1,39 @@
+       Namespaces compatibility list
+
+This document contains the information about the problems user
+may have when creating tasks living in different namespaces.
+
+Here's the summary. This matrix shows the known problems, that
+occur when tasks share some namespace (the columns) while living
+in different other namespaces (the rows):
+
+       UTS     IPC     VFS     PID     User    Net
+UTS     X
+IPC             X       1
+VFS                     X
+PID             1       1       X
+User            2       2               X
+Net                                             X
+
+1. Both the IPC and the PID namespaces provide IDs to address
+   object inside the kernel. E.g. semaphore with IPCID or
+   process group with pid.
+
+   In both cases, tasks shouldn't try exposing this ID to some
+   other task living in a different namespace via a shared filesystem
+   or IPC shmem/message. The fact is that this ID is only valid
+   within the namespace it was obtained in and may refer to some
+   other object in another namespace.
+
+2. Intentionally, two equal user IDs in different user namespaces
+   should not be equal from the VFS point of view. In other
+   words, user 10 in one user namespace shouldn't have the same
+   access permissions to files, belonging to user 10 in another
+   namespace.
+
+   The same is true for the IPC namespaces being shared - two users
+   from different user namespaces should not access the same IPC objects
+   even having equal UIDs.
+
+   But currently this is not so.
+
index 11340625e363cbb122b3b61bea966249ed8dcca2..6cc30e0d5795ce8e598190fb32edf1624a58a203 100644 (file)
@@ -554,6 +554,30 @@ xmit_hash_policy
 
                This algorithm is 802.3ad compliant.
 
+       layer2+3
+
+               This policy uses a combination of layer2 and layer3
+               protocol information to generate the hash.
+
+               Uses XOR of hardware MAC addresses and IP addresses to
+               generate the hash.  The formula is
+
+               (((source IP XOR dest IP) AND 0xffff) XOR
+                       ( source MAC XOR destination MAC ))
+                               modulo slave count
+
+               This algorithm will place all traffic to a particular
+               network peer on the same slave.  For non-IP traffic,
+               the formula is the same as for the layer2 transmit
+               hash policy.
+
+               This policy is intended to provide a more balanced
+               distribution of traffic than layer2 alone, especially
+               in environments where a layer3 gateway device is
+               required to reach most destinations.
+
+               This algorithm is 802.3ad complient.
+
        layer3+4
 
                This policy uses upper layer protocol information,
@@ -589,8 +613,9 @@ xmit_hash_policy
                or may not tolerate this noncompliance.
 
        The default value is layer2.  This option was added in bonding
-version 2.6.3.  In earlier versions of bonding, this parameter does
-not exist, and the layer2 policy is the only policy.
+       version 2.6.3.  In earlier versions of bonding, this parameter
+       does not exist, and the layer2 policy is the only policy.  The
+       layer2+3 value was added for bonding version 3.2.2.
 
 
 3. Configuring Bonding Devices
index 265fcdcb8e5f3cdc4a0826697be57ae7ebda3c54..120eb20dbb09199afc1628a2ca1187812789bde9 100644 (file)
@@ -339,6 +339,10 @@ Use this function to register your device driver on a parallel port
 ('port').  Once you have done that, you will be able to use
 parport_claim and parport_release in order to use the port.
 
+The ('name') argument is the name of the device that appears in /proc
+filesystem. The string must be valid for the whole lifetime of the
+device (until parport_unregister_device is called).
+
 This function will register three callbacks into your driver:
 'preempt', 'wakeup' and 'irq'.  Each of these may be NULL in order to
 indicate that you do not want a callback.
index ac1be25c1e253e7711ecfeb5d542f471fe7eba69..e9a3cb1d6b06b18a3e0bba0d5a0bf85dc3fde77f 100644 (file)
@@ -1645,8 +1645,9 @@ platforms are moved over to use the flattened-device-tree model.
      MAC addresses passed by the firmware when no information other
      than indices is available to associate an address with a device.
    - phy-connection-type : a string naming the controller/PHY interface type,
-     i.e., "mii" (default), "rmii", "gmii", "rgmii", "rgmii-id", "tbi",
-     or "rtbi".
+     i.e., "mii" (default), "rmii", "gmii", "rgmii", "rgmii-id" (Internal
+     Delay), "rgmii-txid" (delay on TX only), "rgmii-rxid" (delay on RX only),
+     "tbi", or "rtbi".
 
    Example:
        ucc@2000 {
index ec499265decaa45b7c2495e51bdc660f1959dc6f..10c041ca13c70c8f0e8d9c44a1e3118f34e9d793 100644 (file)
@@ -1,7 +1,7 @@
                     ThinkPad ACPI Extras Driver
 
-                            Version 0.16
-                          August 2nd, 2007
+                            Version 0.17
+                         October 04th, 2007
 
                Borislav Deianov <borislav@users.sf.net>
              Henrique de Moraes Holschuh <hmh@hmh.eng.br>
@@ -923,19 +923,34 @@ sysfs backlight device "thinkpad_screen"
 This feature allows software control of the LCD brightness on ThinkPad
 models which don't have a hardware brightness slider.
 
-It has some limitations: the LCD backlight cannot be actually turned on or off
-by this interface, and in many ThinkPad models, the "dim while on battery"
-functionality will be enabled by the BIOS when this interface is used, and
-cannot be controlled.
-
-The backlight control has eight levels, ranging from 0 to 7.  Some of the
-levels may not be distinct.
-
-There are two interfaces to the firmware for brightness control, EC and CMOS.
-To select which one should be used, use the brightness_mode module parameter:
-brightness_mode=1 selects EC mode, brightness_mode=2 selects CMOS mode,
-brightness_mode=3 selects both EC and CMOS.  The driver tries to autodetect
-which interface to use.
+It has some limitations: the LCD backlight cannot be actually turned on or
+off by this interface, and in many ThinkPad models, the "dim while on
+battery" functionality will be enabled by the BIOS when this interface is
+used, and cannot be controlled.
+
+On IBM (and some of the earlier Lenovo) ThinkPads, the backlight control
+has eight brightness levels, ranging from 0 to 7.  Some of the levels
+may not be distinct.  Later Lenovo models that implement the ACPI
+display backlight brightness control methods have 16 levels, ranging
+from 0 to 15.
+
+There are two interfaces to the firmware for direct brightness control,
+EC and CMOS.  To select which one should be used, use the
+brightness_mode module parameter: brightness_mode=1 selects EC mode,
+brightness_mode=2 selects CMOS mode, brightness_mode=3 selects both EC
+and CMOS.  The driver tries to autodetect which interface to use.
+
+When display backlight brightness controls are available through the
+standard ACPI interface, it is best to use it instead of this direct
+ThinkPad-specific interface.  The driver will disable its native
+backlight brightness control interface if it detects that the standard
+ACPI interface is available in the ThinkPad.
+
+The brightness_enable module parameter can be used to control whether
+the LCD brightness control feature will be enabled when available.
+brightness_enable=0 forces it to be disabled.  brightness_enable=1
+forces it to be enabled when available, even if the standard ACPI
+interface is also available.
 
 Procfs notes:
 
@@ -947,11 +962,11 @@ Procfs notes:
 
 Sysfs notes:
 
-The interface is implemented through the backlight sysfs class, which is poorly
-documented at this time.
+The interface is implemented through the backlight sysfs class, which is
+poorly documented at this time.
 
-Locate the thinkpad_screen device under /sys/class/backlight, and inside it
-there will be the following attributes:
+Locate the thinkpad_screen device under /sys/class/backlight, and inside
+it there will be the following attributes:
 
        max_brightness:
                Reads the maximum brightness the hardware can be set to.
@@ -961,17 +976,19 @@ there will be the following attributes:
                Reads what brightness the screen is set to at this instant.
 
        brightness:
-               Writes request the driver to change brightness to the given
-               value.  Reads will tell you what brightness the driver is trying
-               to set the display to when "power" is set to zero and the display
-               has not been dimmed by a kernel power management event.
+               Writes request the driver to change brightness to the
+               given value.  Reads will tell you what brightness the
+               driver is trying to set the display to when "power" is set
+               to zero and the display has not been dimmed by a kernel
+               power management event.
 
        power:
-               power management mode, where 0 is "display on", and 1 to 3 will
-               dim the display backlight to brightness level 0 because
-               thinkpad-acpi cannot really turn the backlight off.  Kernel
-               power management events can temporarily increase the current
-               power management level, i.e. they can dim the display.
+               power management mode, where 0 is "display on", and 1 to 3
+               will dim the display backlight to brightness level 0
+               because thinkpad-acpi cannot really turn the backlight
+               off.  Kernel power management events can temporarily
+               increase the current power management level, i.e. they can
+               dim the display.
 
 
 Volume control -- /proc/acpi/ibm/volume
index 048a8762cfb548fbe2b2078ea8527a7a9c50bc01..8e65c4498c521259d93061e0a94a2d3652eaef98 100644 (file)
@@ -132,6 +132,14 @@ set_termios()              Notify the tty driver that the device's termios
                        tty->termios. Previous settings should be passed in
                        the "old" argument.
 
+                       The API is defined such that the driver should return
+                       the actual modes selected. This means that the
+                       driver function is responsible for modifying any
+                       bits in the request it cannot fulfill to indicate
+                       the actual modes being used. A device with no
+                       hardware capability for change (eg a USB dongle or
+                       virtual port) can provide NULL for this method.
+
 throttle()             Notify the tty driver that input buffers for the
                        line discipline are close to full, and it should
                        somehow signal that no more characters should be
index 97842deec47170dee0617d8767e5ebb5d8fa099e..b2fc4d4a99177be7bd48dce560d1f28417c60aa9 100644 (file)
@@ -278,6 +278,14 @@ optional.  The methods' jobs are quite simple:
        (although the interfaces will be in the same altsettings as
        before the suspend).
 
+If the device is disconnected or powered down while it is suspended,
+the disconnect method will be called instead of the resume or
+reset_resume method.  This is also quite likely to happen when
+waking up from hibernation, as many systems do not maintain suspend
+current to the USB host controllers during hibernation.  (It's
+possible to work around the hibernation-forces-disconnect problem by
+using the USB Persist facility.)
+
 The reset_resume method is used by the USB Persist facility (see
 Documentation/usb/persist.txt) and it can also be used under certain
 circumstances when CONFIG_USB_PERSIST is not enabled.  Currently, if a
diff --git a/Documentation/x86_64/uefi.txt b/Documentation/x86_64/uefi.txt
new file mode 100644 (file)
index 0000000..91a98ed
--- /dev/null
@@ -0,0 +1,29 @@
+General note on [U]EFI x86_64 support
+-------------------------------------
+
+The nomenclature EFI and UEFI are used interchangeably in this document.
+
+Although the tools below are _not_ needed for building the kernel,
+the needed bootloader support and associated tools for x86_64 platforms
+with EFI firmware and specifications are listed below.
+
+1. UEFI specification:  http://www.uefi.org
+
+2. Booting Linux kernel on UEFI x86_64 platform requires bootloader
+   support. Elilo with x86_64 support can be used.
+
+3. x86_64 platform with EFI/UEFI firmware.
+
+Mechanics:
+---------
+- Build the kernel with the following configuration.
+       CONFIG_FB_EFI=y
+       CONFIG_FRAMEBUFFER_CONSOLE=y
+- Create a VFAT partition on the disk
+- Copy the following to the VFAT partition:
+       elilo bootloader with x86_64 support, elilo configuration file,
+       kernel image built in first step and corresponding
+       initrd. Instructions on building elilo  and its dependencies
+       can be found in the elilo sourceforge project.
+- Boot to EFI shell and invoke elilo choosing the kernel image built
+  in first step.
index cad0882754a68ebee704d42e2ec34cb1155a6b14..9507b42075128b4072e0c834218c644546bde116 100644 (file)
@@ -88,7 +88,6 @@ S: Status, one of the following:
 P:     Mike Phillips
 M:     mikep@linuxtr.net
 L:     netdev@vger.kernel.org
-L:     linux-tr@linuxtr.net
 W:     http://www.linuxtr.net
 S:     Maintained
 
@@ -167,7 +166,6 @@ S:  Maintained
 
 A2232 SERIAL BOARD DRIVER
 P:     Enver Haase
-M:     ehaase@inf.fu-berlin.de
 M:     A2232@gmx.net
 L:     linux-m68k@lists.linux-m68k.org
 S:     Maintained
@@ -323,8 +321,7 @@ S:  Maintained
 ALCATEL SPEEDTOUCH USB DRIVER
 P:     Duncan Sands
 M:     duncan.sands@free.fr
-L:     linux-usb-users@lists.sourceforge.net
-L:     linux-usb-devel@lists.sourceforge.net
+L:     linux-usb@vger.kernel.org
 W:     http://www.linux-usb.org/SpeedTouch/
 S:     Maintained
 
@@ -1043,7 +1040,7 @@ S:        Maintained
 CIRRUS LOGIC EP93XX OHCI USB HOST DRIVER
 P:     Lennert Buytenhek
 M:     kernel@wantstofly.org
-L:     linux-usb-devel@lists.sourceforge.net
+L:     linux-usb@vger.kernel.org
 S:     Maintained
 
 CIRRUS LOGIC CS4280/CS461x SOUNDDRIVER
@@ -1552,7 +1549,7 @@ S:        Maintained
 FREESCALE HIGHSPEED USB DEVICE DRIVER
 P:     Li Yang
 M:     leoli@freescale.com
-L:     linux-usb-devel@lists.sourceforge.net
+L:     linux-usb@vger.kernel.org
 L:     linuxppc-dev@ozlabs.org
 S:     Maintained
 
@@ -1682,8 +1679,7 @@ S:        Maintained
 HARMONY SOUND DRIVER
 P:     Kyle McMartin
 M:     kyle@parisc-linux.org
-W:     http://www.parisc-linux.org/~kyle/harmony/
-L:     parisc-linux@lists.parisc-linux.org
+L:     linux-parisc@vger.kernel.org
 S:     Maintained
 
 HAYES ESP SERIAL DRIVER
@@ -1914,10 +1910,8 @@ L:       linux1394-devel@lists.sourceforge.net
 S:     Maintained
 
 IMS TWINTURBO FRAMEBUFFER DRIVER
-P:     Paul Mundt
-M:     lethal@chaoticdreams.org
 L:     linux-fbdev-devel@lists.sourceforge.net (subscribers-only)
-S:     Maintained
+S:     Orphan
 
 INFINIBAND SUBSYSTEM
 P:     Roland Dreier
@@ -2068,7 +2062,7 @@ S:        Maintained
 IOC3 SERIAL DRIVER
 P:     Pat Gefre
 M:     pfg@sgi.com
-L:     linux-kernel@linux-mips.org
+L:     linux-mips@linux-mips.org
 S:     Maintained
 
 IP MASQUERADING:
@@ -2113,6 +2107,14 @@ L:       irda-users@lists.sourceforge.net (subscribers-only)
 W:     http://irda.sourceforge.net/
 S:     Maintained
 
+ISCSI
+P:     Mike Christie
+M:     michaelc@cs.wisc.edu
+L:     open-iscsi@googlegroups.com
+W:     www.open-iscsi.org
+T:     git kernel.org:/pub/scm/linux/kernel/mnc/linux-2.6-iscsi.git
+S:     Maintained
+
 ISAPNP
 P:     Jaroslav Kysela
 M:     perex@perex.cz
@@ -2168,7 +2170,7 @@ S:        Maintained
 
 KDUMP
 P:     Vivek Goyal
-M:     vgoyal@in.ibm.com
+M:     vgoyal@redhat.com
 P:     Haren Myneni
 M:     hbabu@us.ibm.com
 L:     kexec@lists.infradead.org
@@ -2446,7 +2448,7 @@ M68K ON APPLE MACINTOSH
 P:     Joshua Thompson
 M:     funaho@jurai.org
 W:     http://www.mac.linux-m68k.org/
-L:     linux-mac68k@mac.linux-m68k.org
+L:     linux-m68k@lists.linux-m68k.org
 S:     Maintained
 
 M68K ON HP9000/300
@@ -2593,13 +2595,6 @@ L:       https://tango.0pointer.de/mailman/listinfo/s270-linux
 W:     http://0pointer.de/lennart/tchibo.html
 S:     Maintained
 
-MTRR AND SIMILAR SUPPORT [i386]
-P:     Richard Gooch
-M:     rgooch@atnf.csiro.au
-L:     linux-kernel@vger.kernel.org
-W:     http://www.atnf.csiro.au/~rgooch/linux/kernel-patches.html
-S:     Maintained
-
 MULTIMEDIA CARD (MMC), SECURE DIGITAL (SD) AND SDIO SUBSYSTEM
 P:     Pierre Ossman
 M:     drzeus-mmc@drzeus.cx
@@ -2818,7 +2813,6 @@ M:        p2@ace.ulyssis.student.kuleuven.ac.be
 P:     Mike Phillips
 M:     mikep@linuxtr.net
 L:     netdev@vger.kernel.org
-L:     linux-tr@linuxtr.net
 W:     http://www.linuxtr.net
 S:     Maintained
 
@@ -2892,16 +2886,15 @@ W:      http://www.torque.net/linux-pp.html
 S:     Maintained
 
 PARISC ARCHITECTURE
+P:     Kyle McMartin
+M:     kyle@parisc-linux.org
 P:     Matthew Wilcox
 M:     matthew@wil.cx
 P:     Grant Grundler
 M:     grundler@parisc-linux.org
-P:     Kyle McMartin
-M:     kyle@parisc-linux.org
-L:     parisc-linux@parisc-linux.org
+L:     linux-parisc@vger.kernel.org
 W:     http://www.parisc-linux.org/
 T:     git kernel.org:/pub/scm/linux/kernel/git/kyle/parisc-2.6.git
-T:     cvs cvs.parisc-linux.org:/var/cvs/linux-2.6
 S:     Maintained
 
 PARAVIRT_OPS INTERFACE
@@ -2957,7 +2950,7 @@ S:        Supported
 PCMCIA SUBSYSTEM
 P:     Linux PCMCIA Team
 L:     linux-pcmcia@lists.infradead.org
-L:     http://lists.infradead.org/mailman/listinfo/linux-pcmcia
+W:     http://lists.infradead.org/mailman/listinfo/linux-pcmcia
 T:     git kernel.org:/pub/scm/linux/kernel/git/brodo/pcmcia-2.6.git
 S:     Maintained
 
@@ -3636,18 +3629,12 @@ M:      laredo@gnu.org
 W:     http://www.stradis.com/
 S:     Maintained
 
-SUPERH (sh)
-P:     Paul Mundt
-M:     lethal@linux-sh.org
-L:     linuxsh-dev@lists.sourceforge.net (subscribers-only)
-W:     http://www.linux-sh.org
-S:     Maintained
-
-SUPERH64 (sh64)
+SUPERH
 P:     Paul Mundt
 M:     lethal@linux-sh.org
-L:     linuxsh-shmedia-dev@lists.sourceforge.net
+L:     linux-sh@vger.kernel.org
 W:     http://www.linux-sh.org
+T:     git kernel.org:/pub/scm/linux/kernel/git/lethal/sh-2.6.git
 S:     Maintained
 
 SUN3/3X
@@ -3733,7 +3720,7 @@ S:        Maintained
 TLAN NETWORK DRIVER
 P:     Samuel Chessman
 M:     chessman@tux.org
-L:     tlan-devel@lists.sourceforge.net
+L:     tlan-devel@lists.sourceforge.net (subscribers-only)
 W:     http://sourceforge.net/projects/tlan/
 S:     Maintained
 
@@ -3741,7 +3728,6 @@ TOKEN-RING NETWORK DRIVER
 P:     Mike Phillips
 M:     mikep@linuxtr.net
 L:     netdev@vger.kernel.org
-L:     linux-tr@linuxtr.net
 W:     http://www.linuxtr.net
 S:     Maintained
 
@@ -3818,22 +3804,20 @@ S:      Maintained
 USB ACM DRIVER
 P:     Oliver Neukum
 M:     oliver@neukum.name
-L:     linux-usb-users@lists.sourceforge.net
-L:     linux-usb-devel@lists.sourceforge.net
+L:     linux-usb@vger.kernel.org
 S:     Maintained
 
 USB BLOCK DRIVER (UB ub)
 P:     Pete Zaitcev
 M:     zaitcev@redhat.com
 L:     linux-kernel@vger.kernel.org
-L:     linux-usb-devel@lists.sourceforge.net
+L:      linux-usb@vger.kernel.org
 S:     Supported
 
 USB CDC ETHERNET DRIVER
 P:     Greg Kroah-Hartman
 M:     greg@kroah.com
-L:     linux-usb-users@lists.sourceforge.net
-L:     linux-usb-devel@lists.sourceforge.net
+L:      linux-usb@vger.kernel.org
 S:     Maintained
 W:     http://www.kroah.com/linux-usb/
 
@@ -3847,13 +3831,13 @@ S:      Maintained
 USB EHCI DRIVER
 P:     David Brownell
 M:     dbrownell@users.sourceforge.net
-L:     linux-usb-devel@lists.sourceforge.net
+L:      linux-usb@vger.kernel.org
 S:     Odd Fixes
 
 USB ET61X[12]51 DRIVER
 P:     Luca Risolia
 M:     luca.risolia@studio.unibo.it
-L:     linux-usb-devel@lists.sourceforge.net
+L:      linux-usb@vger.kernel.org
 L:     video4linux-list@redhat.com
 W:     http://www.linux-projects.org
 S:     Maintained
@@ -3861,41 +3845,33 @@ S:      Maintained
 USB GADGET/PERIPHERAL SUBSYSTEM
 P:     David Brownell
 M:     dbrownell@users.sourceforge.net
-L:     linux-usb-devel@lists.sourceforge.net
+L:      linux-usb@vger.kernel.org
 W:     http://www.linux-usb.org/gadget
 S:     Maintained
 
 USB HID/HIDBP DRIVERS (USB KEYBOARDS, MICE, REMOTE CONTROLS, ...)
 P:     Jiri Kosina
 M:     jkosina@suse.cz
-L:     linux-usb-devel@lists.sourceforge.net
+L:      linux-usb@vger.kernel.org
 T:     git kernel.org:/pub/scm/linux/kernel/git/jikos/hid.git
 S:     Maintained
 
-USB HUB DRIVER
-P:     Johannes Erdfelt
-M:     johannes@erdfelt.com
-L:     linux-usb-users@lists.sourceforge.net
-L:     linux-usb-devel@lists.sourceforge.net
-S:     Maintained
-
 USB ISP116X DRIVER
 P:     Olav Kongas
 M:     ok@artecdesign.ee
-L:     linux-usb-devel@lists.sourceforge.net
+L:      linux-usb@vger.kernel.org
 S:     Maintained
 
 USB KAWASAKI LSI DRIVER
 P:     Oliver Neukum
 M:     oliver@neukum.name
-L:     linux-usb-users@lists.sourceforge.net
-L:     linux-usb-devel@lists.sourceforge.net
+L:      linux-usb@vger.kernel.org
 S:     Maintained
 
 USB MASS STORAGE DRIVER
 P:     Matthew Dharm
 M:     mdharm-usb@one-eyed-alien.net
-L:     linux-usb-users@lists.sourceforge.net
+L:      linux-usb@vger.kernel.org
 L:     usb-storage@lists.one-eyed-alien.net
 S:     Maintained
 W:     http://www.one-eyed-alien.net/~mdharm/linux-usb/
@@ -3903,28 +3879,26 @@ W:      http://www.one-eyed-alien.net/~mdharm/linux-usb/
 USB OHCI DRIVER
 P:     David Brownell
 M:     dbrownell@users.sourceforge.net
-L:     linux-usb-users@lists.sourceforge.net
-L:     linux-usb-devel@lists.sourceforge.net
+L:      linux-usb@vger.kernel.org
 S:     Odd Fixes
 
 USB OPTION-CARD DRIVER
 P:     Matthias Urlichs
 M:     smurf@smurf.noris.de
-L:     linux-usb-devel@lists.sourceforge.net
+L:      linux-usb@vger.kernel.org
 S:     Maintained
 
 USB OV511 DRIVER
 P:     Mark McClelland
 M:     mmcclell@bigfoot.com
-L:     linux-usb-users@lists.sourceforge.net
-L:     linux-usb-devel@lists.sourceforge.net
+L:      linux-usb@vger.kernel.org
 W:     http://alpha.dyndns.org/ov511/
 S:     Maintained
 
 USB PEGASUS DRIVER
 P:     Petko Manolov
 M:     petkan@users.sourceforge.net
-L:     linux-usb-devel@lists.sourceforge.net
+L:      linux-usb@vger.kernel.org
 L:     netdev@vger.kernel.org
 W:     http://pegasus2.sourceforge.net/
 S:     Maintained
@@ -3932,14 +3906,13 @@ S:      Maintained
 USB PRINTER DRIVER (usblp)
 P:     Pete Zaitcev
 M:     zaitcev@redhat.com
-L:     linux-usb-users@lists.sourceforge.net
-L:     linux-usb-devel@lists.sourceforge.net
+L:      linux-usb@vger.kernel.org
 S:     Supported
 
 USB RTL8150 DRIVER
 P:     Petko Manolov
 M:     petkan@users.sourceforge.net
-L:     linux-usb-devel@lists.sourceforge.net
+L:      linux-usb@vger.kernel.org
 L:     netdev@vger.kernel.org
 W:     http://pegasus2.sourceforge.net/
 S:     Maintained
@@ -3947,8 +3920,7 @@ S:        Maintained
 USB SE401 DRIVER
 P:     Jeroen Vreeken
 M:     pe1rxq@amsat.org
-L:     linux-usb-users@lists.sourceforge.net
-L:     linux-usb-devel@lists.sourceforge.net
+L:      linux-usb@vger.kernel.org
 W:     http://www.chello.nl/~j.vreeken/se401/
 S:     Maintained
 
@@ -3962,72 +3934,59 @@ USB SERIAL DIGI ACCELEPORT DRIVER
 P:     Peter Berger and Al Borchers
 M:     pberger@brimson.com
 M:     alborchers@steinerpoint.com
-L:     linux-usb-users@lists.sourceforge.net
-L:     linux-usb-devel@lists.sourceforge.net
+L:      linux-usb@vger.kernel.org
 S:     Maintained
 
 USB SERIAL DRIVER
 P:     Greg Kroah-Hartman
 M:     gregkh@suse.de
-L:     linux-usb-users@lists.sourceforge.net
-L:     linux-usb-devel@lists.sourceforge.net
+L:      linux-usb@vger.kernel.org
 S:     Supported
 
 USB SERIAL BELKIN F5U103 DRIVER
 P:     William Greathouse
 M:     wgreathouse@smva.com
-L:     linux-usb-users@lists.sourceforge.net
-L:     linux-usb-devel@lists.sourceforge.net
+L:      linux-usb@vger.kernel.org
 S:     Maintained
 
 USB SERIAL CYPRESS M8 DRIVER
 P:     Lonnie Mendez
 M:     dignome@gmail.com
-L:     linux-usb-users@lists.sourceforge.net
-L:     linux-usb-devel@lists.sourceforge.net
+L:      linux-usb@vger.kernel.org
 S:     Maintained
 W:     http://geocities.com/i0xox0i
 W:     http://firstlight.net/cvs
 
-USB SERIAL CYBERJACK PINPAD/E-COM DRIVER
-L:     linux-usb-users@lists.sourceforge.net
-L:     linux-usb-devel@lists.sourceforge.net
-S:     Maintained
-
 USB AUERSWALD DRIVER
 P:     Wolfgang Muees
 M:     wolfgang@iksw-muees.de
-L:     linux-usb-users@lists.sourceforge.net
-L:     linux-usb-devel@lists.sourceforge.net
+L:      linux-usb@vger.kernel.org
 S:     Maintained
 
 USB SERIAL EMPEG EMPEG-CAR MARK I/II DRIVER
 P:     Gary Brubaker
 M:     xavyer@ix.netcom.com
-L:     linux-usb-users@lists.sourceforge.net
-L:     linux-usb-devel@lists.sourceforge.net
+L:      linux-usb@vger.kernel.org
 S:     Maintained
 
 USB SERIAL KEYSPAN DRIVER
 P:     Greg Kroah-Hartman
 M:     greg@kroah.com
-L:     linux-usb-users@lists.sourceforge.net
-L:     linux-usb-devel@lists.sourceforge.net
+L:      linux-usb@vger.kernel.org
 W:     http://www.kroah.com/linux/
 S:     Maintained
 
 USB SERIAL WHITEHEAT DRIVER
 P:     Support Department
 M:     support@connecttech.com
-L:     linux-usb-users@lists.sourceforge.net
-L:     linux-usb-devel@lists.sourceforge.net
+L:      linux-usb@vger.kernel.org
 W:     http://www.connecttech.com
 S:     Supported
 
 USB SN9C1xx DRIVER
 P:     Luca Risolia
 M:     luca.risolia@studio.unibo.it
-L:     linux-usb-devel@lists.sourceforge.net
+L:      linux-usb@vger.kernel.org
 L:     video4linux-list@redhat.com
 W:     http://www.linux-projects.org
 S:     Maintained
@@ -4035,8 +3994,7 @@ S:        Maintained
 USB SUBSYSTEM
 P:     Greg Kroah-Hartman
 M:     gregkh@suse.de
-L:     linux-usb-users@lists.sourceforge.net
-L:     linux-usb-devel@lists.sourceforge.net
+L:      linux-usb@vger.kernel.org
 W:     http://www.linux-usb.org
 T:     quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
 S:     Supported
@@ -4044,8 +4002,7 @@ S:        Supported
 USB UHCI DRIVER
 P:     Alan Stern
 M:     stern@rowland.harvard.edu
-L:     linux-usb-users@lists.sourceforge.net
-L:     linux-usb-devel@lists.sourceforge.net
+L:      linux-usb@vger.kernel.org
 S:     Maintained
 
 USB "USBNET" DRIVER FRAMEWORK
@@ -4058,7 +4015,7 @@ S:        Maintained
 USB W996[87]CF DRIVER
 P:     Luca Risolia
 M:     luca.risolia@studio.unibo.it
-L:     linux-usb-devel@lists.sourceforge.net
+L:      linux-usb@vger.kernel.org
 L:     video4linux-list@redhat.com
 W:     http://www.linux-projects.org
 S:     Maintained
@@ -4066,7 +4023,7 @@ S:        Maintained
 USB ZC0301 DRIVER
 P:     Luca Risolia
 M:     luca.risolia@studio.unibo.it
-L:     linux-usb-devel@lists.sourceforge.net
+L:      linux-usb@vger.kernel.org
 L:     video4linux-list@redhat.com
 W:     http://www.linux-projects.org
 S:     Maintained
@@ -4074,22 +4031,21 @@ S:      Maintained
 USB ZD1201 DRIVER
 P:     Jeroen Vreeken
 M:     pe1rxq@amsat.org
-L:     linux-usb-users@lists.sourceforge.net
-L:     linux-usb-devel@lists.sourceforge.net
+L:      linux-usb@vger.kernel.org
 W:     http://linux-lc100020.sourceforge.net
 S:     Maintained
 
 USB ZR364XX DRIVER
 P:     Antoine Jacquet
 M:     royale@zerezo.com
-L:     linux-usb-devel@lists.sourceforge.net
+L:      linux-usb@vger.kernel.org
 L:     video4linux-list@redhat.com
 W:     http://royale.zerezo.com/zr364xx/
 S:     Maintained
 
 USER-MODE LINUX
 P:     Jeff Dike
-M:     jdike@karaya.com
+M:     jdike@addtoit.com
 L:     user-mode-linux-devel@lists.sourceforge.net
 L:     user-mode-linux-user@lists.sourceforge.net
 W:     http://user-mode-linux.sourceforge.net
@@ -4320,13 +4276,6 @@ L:       mjpeg-users@lists.sourceforge.net
 W:     http://mjpeg.sourceforge.net/driver-zoran/
 S:     Maintained
 
-ZR36120 VIDEO FOR LINUX DRIVER
-P:     Pauline Middelink
-M:     middelin@polyware.nl
-W:     http://www.polyware.nl/~middelin/En/hobbies.html
-W:     http://www.polyware.nl/~middelin/hobbies.html
-S:     Maintained
-
 ZS DECSTATION Z85C30 SERIAL DRIVER
 P:     Maciej W. Rozycki
 M:     macro@linux-mips.org
index a65ffd27de6b5f6786f2d17cc716f003efa628b9..c1825aab77e882b4fdd7bcf89fcf3c8e80b8b6ee 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 6
 SUBLEVEL = 24
-EXTRAVERSION = -rc3
+EXTRAVERSION = -rc5
 NAME = Arr Matey! A Hairy Bilge Rat!
 
 # *DOCUMENTATION*
@@ -108,6 +108,9 @@ endif
 PHONY := _all
 _all:
 
+# Cancel implicit rules on top Makefile
+$(CURDIR)/Makefile Makefile: ;
+
 ifneq ($(KBUILD_OUTPUT),)
 # Invoke a second make in the output directory, passing relevant variables
 # check that the output directory actually exists
@@ -115,13 +118,10 @@ saved-output := $(KBUILD_OUTPUT)
 KBUILD_OUTPUT := $(shell cd $(KBUILD_OUTPUT) && /bin/pwd)
 $(if $(KBUILD_OUTPUT),, \
      $(error output directory "$(saved-output)" does not exist))
-# Check that OUTPUT directory is not the same as where we have kernel src
-$(if $(filter-out $(KBUILD_OUTPUT),$(shell /bin/pwd)),, \
-     $(error Output directory (O=...) specifies kernel src dir))
 
 PHONY += $(MAKECMDGOALS) sub-make
 
-$(filter-out _all sub-make,$(MAKECMDGOALS)) _all: sub-make
+$(filter-out _all sub-make $(CURDIR)/Makefile, $(MAKECMDGOALS)) _all: sub-make
        $(Q)@:
 
 sub-make: FORCE
@@ -291,7 +291,8 @@ export quiet Q KBUILD_VERBOSE
 # Look for make include files relative to root of kernel src
 MAKEFLAGS += --include-dir=$(srctree)
 
-# We need some generic definitions.
+# We need some generic definitions (do not try to remake the file).
+$(srctree)/scripts/Kbuild.include: ;
 include $(srctree)/scripts/Kbuild.include
 
 # Make variables (CC, etc...)
@@ -1560,9 +1561,6 @@ endif     # skip-makefile
 PHONY += FORCE
 FORCE:
 
-# Cancel implicit rules on top Makefile, `-rR' will apply to sub-makes.
-Makefile: ;
-
 # Declare the contents of the .PHONY variable as phony.  We keep that
 # information in a variable se we can use it in if_changed and friends.
 .PHONY: $(PHONY)
index 174b729c504b274084c10bd78ff9e4465f3a9cda..468b76ce66a1304e4eeddc48663effbe8545f83e 100644 (file)
@@ -12,6 +12,7 @@
 #include <linux/errno.h>
 #include <linux/sched.h>
 #include <linux/dma-mapping.h>
+#include <linux/scatterlist.h>
 
 #include "proto.h"
 
@@ -172,18 +173,19 @@ dma_alloc_coherent(struct device *dev, size_t size,
 EXPORT_SYMBOL(dma_alloc_coherent);
 
 int
-dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,
+dma_map_sg(struct device *dev, struct scatterlist *sgl, int nents,
           enum dma_data_direction direction)
 {
        int i;
+       struct scatterlist *sg;
 
-       for (i = 0; i < nents; i++ ) {
+       for_each_sg(sgl, sg, nents, i) {
                void *va;
 
-               BUG_ON(!sg[i].page);
-               va = page_address(sg[i].page) + sg[i].offset;
-               sg_dma_address(sg + i) = (dma_addr_t)virt_to_bus(va);
-               sg_dma_len(sg + i) = sg[i].length;
+               BUG_ON(!sg_page(sg));
+               va = sg_virt(sg);
+               sg_dma_address(sg) = (dma_addr_t)virt_to_bus(va);
+               sg_dma_len(sg) = sg->length;
        }
 
        return nents;
index 95c8508c29b7125a1ac93bc0a6fd4e4f00d39f9e..117cab30bd36ca4e232fab5243b43ee81bc4b22c 100644 (file)
@@ -374,8 +374,8 @@ static int set_initial_registers(int uengine, struct ixp2000_uengine_code *c)
        u8 *ucode;
        int i;
 
-       gpr_a = kmalloc(128 * sizeof(u32), GFP_KERNEL);
-       gpr_b = kmalloc(128 * sizeof(u32), GFP_KERNEL);
+       gpr_a = kzalloc(128 * sizeof(u32), GFP_KERNEL);
+       gpr_b = kzalloc(128 * sizeof(u32), GFP_KERNEL);
        ucode = kmalloc(513 * 5, GFP_KERNEL);
        if (gpr_a == NULL || gpr_b == NULL || ucode == NULL) {
                kfree(ucode);
@@ -388,8 +388,6 @@ static int set_initial_registers(int uengine, struct ixp2000_uengine_code *c)
        if (c->uengine_parameters & IXP2000_UENGINE_4_CONTEXTS)
                per_ctx_regs = 32;
 
-       memset(gpr_a, 0, sizeof(gpr_a));
-       memset(gpr_b, 0, sizeof(gpr_b));
        for (i = 0; i < 256; i++) {
                struct ixp2000_reg_value *r = c->initial_reg_values + i;
                u32 *bank;
index d645897652c2d50a073bc529533127beff369c8d..29dec080a60431dd88bfa7b732940449054374ad 100644 (file)
@@ -339,16 +339,6 @@ __pabt_svc:
        str     r1, [sp]                @ save the "real" r0 copied
                                        @ from the exception stack
 
-#if __LINUX_ARM_ARCH__ < 6 && !defined(CONFIG_NEEDS_SYSCALL_FOR_CMPXCHG)
-#ifndef CONFIG_MMU
-#warning "NPTL on non MMU needs fixing"
-#else
-       @ make sure our user space atomic helper is aborted
-       cmp     r2, #TASK_SIZE
-       bichs   r3, r3, #PSR_Z_BIT
-#endif
-#endif
-
        @
        @ We are now ready to fill in the remaining blanks on the stack:
        @
@@ -372,9 +362,25 @@ __pabt_svc:
        zero_fp
        .endm
 
+       .macro  kuser_cmpxchg_check
+#if __LINUX_ARM_ARCH__ < 6 && !defined(CONFIG_NEEDS_SYSCALL_FOR_CMPXCHG)
+#ifndef CONFIG_MMU
+#warning "NPTL on non MMU needs fixing"
+#else
+       @ Make sure our user space atomic helper is restarted
+       @ if it was interrupted in a critical region.  Here we
+       @ perform a quick test inline since it should be false
+       @ 99.9999% of the time.  The rest is done out of line.
+       cmp     r2, #TASK_SIZE
+       blhs    kuser_cmpxchg_fixup
+#endif
+#endif
+       .endm
+
        .align  5
 __dabt_usr:
        usr_entry
+       kuser_cmpxchg_check
 
        @
        @ Call the processor-specific abort handler:
@@ -404,6 +410,7 @@ __dabt_usr:
        .align  5
 __irq_usr:
        usr_entry
+       kuser_cmpxchg_check
 
 #ifdef CONFIG_TRACE_IRQFLAGS
        bl      trace_hardirqs_off
@@ -446,9 +453,9 @@ __und_usr:
        @
        @  r0 - instruction
        @
-1:     ldrt    r0, [r4]
        adr     r9, ret_from_exception
        adr     lr, __und_usr_unknown
+1:     ldrt    r0, [r4]
        @
        @ fallthrough to call_fpe
        @
@@ -669,7 +676,7 @@ __kuser_helper_start:
  *
  * Clobbered:
  *
- *     the Z flag might be lost
+ *     none
  *
  * Definition and user space usage example:
  *
@@ -730,9 +737,6 @@ __kuser_memory_barrier:                             @ 0xffff0fa0
  *
  *    - This routine already includes memory barriers as needed.
  *
- *    - A failure might be transient, i.e. it is possible, although unlikely,
- *      that "failure" be returned even if *ptr == oldval.
- *
  * For example, a user space atomic_add implementation could look like this:
  *
  * #define atomic_add(ptr, val) \
@@ -769,46 +773,62 @@ __kuser_cmpxchg:                          @ 0xffff0fc0
 
 #elif __LINUX_ARM_ARCH__ < 6
 
+#ifdef CONFIG_MMU
+
        /*
-        * Theory of operation:
-        *
-        * We set the Z flag before loading oldval. If ever an exception
-        * occurs we can not be sure the loaded value will still be the same
-        * when the exception returns, therefore the user exception handler
-        * will clear the Z flag whenever the interrupted user code was
-        * actually from the kernel address space (see the usr_entry macro).
-        *
-        * The post-increment on the str is used to prevent a race with an
-        * exception happening just after the str instruction which would
-        * clear the Z flag although the exchange was done.
+        * The only thing that can break atomicity in this cmpxchg
+        * implementation is either an IRQ or a data abort exception
+        * causing another process/thread to be scheduled in the middle
+        * of the critical sequence.  To prevent this, code is added to
+        * the IRQ and data abort exception handlers to set the pc back
+        * to the beginning of the critical section if it is found to be
+        * within that critical section (see kuser_cmpxchg_fixup).
         */
-#ifdef CONFIG_MMU
-       teq     ip, ip                  @ set Z flag
-       ldr     ip, [r2]                @ load current val
-       add     r3, r2, #1              @ prepare store ptr
-       teqeq   ip, r0                  @ compare with oldval if still allowed
-       streq   r1, [r3, #-1]!          @ store newval if still allowed
-       subs    r0, r2, r3              @ if r2 == r3 the str occured
+1:     ldr     r3, [r2]                        @ load current val
+       subs    r3, r3, r0                      @ compare with oldval
+2:     streq   r1, [r2]                        @ store newval if eq
+       rsbs    r0, r3, #0                      @ set return val and C flag
+       usr_ret lr
+
+       .text
+kuser_cmpxchg_fixup:
+       @ Called from kuser_cmpxchg_check macro.
+       @ r2 = address of interrupted insn (must be preserved).
+       @ sp = saved regs. r7 and r8 are clobbered.
+       @ 1b = first critical insn, 2b = last critical insn.
+       @ If r2 >= 1b and r2 <= 2b then saved pc_usr is set to 1b.
+       mov     r7, #0xffff0fff
+       sub     r7, r7, #(0xffff0fff - (0xffff0fc0 + (1b - __kuser_cmpxchg)))
+       subs    r8, r2, r7
+       rsbcss  r8, r8, #(2b - 1b)
+       strcs   r7, [sp, #S_PC]
+       mov     pc, lr
+       .previous
+
 #else
 #warning "NPTL on non MMU needs fixing"
        mov     r0, #-1
        adds    r0, r0, #0
-#endif
        usr_ret lr
+#endif
 
 #else
 
 #ifdef CONFIG_SMP
        mcr     p15, 0, r0, c7, c10, 5  @ dmb
 #endif
-       ldrex   r3, [r2]
+1:     ldrex   r3, [r2]
        subs    r3, r3, r0
        strexeq r3, r1, [r2]
+       teqeq   r3, #1
+       beq     1b
        rsbs    r0, r3, #0
+       /* beware -- each __kuser slot must be 8 instructions max */
 #ifdef CONFIG_SMP
-       mcr     p15, 0, r0, c7, c10, 5  @ dmb
-#endif
+       b       __kuser_memory_barrier
+#else
        usr_ret lr
+#endif
 
 #endif
 
@@ -829,7 +849,7 @@ __kuser_cmpxchg:                            @ 0xffff0fc0
  *
  * Clobbered:
  *
- *     the Z flag might be lost
+ *     none
  *
  * Definition and user space usage example:
  *
index 4764bd9ccee801ced5838d9043a5923c9e931cb8..c34db4e868fa530c50b0e6baa7123c88eab76ec8 100644 (file)
@@ -327,7 +327,7 @@ asmlinkage void __exception do_undefinstr(struct pt_regs *regs)
                if ((instr & hook->instr_mask) == hook->instr_val &&
                    (regs->ARM_cpsr & hook->cpsr_mask) == hook->cpsr_val) {
                        if (hook->fn(regs, instr) == 0) {
-                               spin_unlock_irq(&undef_lock);
+                               spin_unlock_irqrestore(&undef_lock, flags);
                                return;
                        }
                }
@@ -509,7 +509,7 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs)
         * existence.  Don't ever use this from user code.
         */
        case 0xfff0:
-       {
+       for (;;) {
                extern void do_DataAbort(unsigned long addr, unsigned int fsr,
                                         struct pt_regs *regs);
                unsigned long val;
@@ -545,7 +545,6 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs)
                up_read(&mm->mmap_sem);
                /* simulate a write access fault */
                do_DataAbort(addr, 15 + (1 << 11), regs);
-               return -1;
        }
 #endif
 
index 0417c165d50d0a8e732b60b5ad767cddbe757851..9296833f91ccd576c7c5dbbacffbf94cb7a28518 100644 (file)
@@ -14,6 +14,7 @@
 #include <asm/mach/map.h>
 
 #include <linux/platform_device.h>
+#include <linux/i2c-gpio.h>
 
 #include <asm/arch/board.h>
 #include <asm/arch/gpio.h>
@@ -435,7 +436,40 @@ void __init at91_add_device_nand(struct at91_nand_data *data) {}
  *  TWI (i2c)
  * -------------------------------------------------------------------- */
 
-#if defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE)
+/*
+ * Prefer the GPIO code since the TWI controller isn't robust
+ * (gets overruns and underruns under load) and can only issue
+ * repeated STARTs in one scenario (the driver doesn't yet handle them).
+ */
+#if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE)
+
+static struct i2c_gpio_platform_data pdata = {
+       .sda_pin                = AT91_PIN_PA25,
+       .sda_is_open_drain      = 1,
+       .scl_pin                = AT91_PIN_PA26,
+       .scl_is_open_drain      = 1,
+       .udelay                 = 2,            /* ~100 kHz */
+};
+
+static struct platform_device at91rm9200_twi_device = {
+       .name                   = "i2c-gpio",
+       .id                     = -1,
+       .dev.platform_data      = &pdata,
+};
+
+void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices)
+{
+       at91_set_GPIO_periph(AT91_PIN_PA25, 1);         /* TWD (SDA) */
+       at91_set_multi_drive(AT91_PIN_PA25, 1);
+
+       at91_set_GPIO_periph(AT91_PIN_PA26, 1);         /* TWCK (SCL) */
+       at91_set_multi_drive(AT91_PIN_PA26, 1);
+
+       i2c_register_board_info(0, devices, nr_devices);
+       platform_device_register(&at91rm9200_twi_device);
+}
+
+#elif defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE)
 
 static struct resource twi_resources[] = {
        [0] = {
@@ -457,7 +491,7 @@ static struct platform_device at91rm9200_twi_device = {
        .num_resources  = ARRAY_SIZE(twi_resources),
 };
 
-void __init at91_add_device_i2c(void)
+void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices)
 {
        /* pins used for TWI interface */
        at91_set_A_periph(AT91_PIN_PA25, 0);            /* TWD */
@@ -466,10 +500,11 @@ void __init at91_add_device_i2c(void)
        at91_set_A_periph(AT91_PIN_PA26, 0);            /* TWCK */
        at91_set_multi_drive(AT91_PIN_PA26, 1);
 
+       i2c_register_board_info(0, devices, nr_devices);
        platform_device_register(&at91rm9200_twi_device);
 }
 #else
-void __init at91_add_device_i2c(void) {}
+void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) {}
 #endif
 
 
index ffd3154c1e5404f2a305b4b4e8ece8b739ad8b02..3091bf47d8c96dafb90e694005c3d2f99df7e1df 100644 (file)
@@ -13,6 +13,7 @@
 #include <asm/mach/map.h>
 
 #include <linux/platform_device.h>
+#include <linux/i2c-gpio.h>
 
 #include <asm/arch/board.h>
 #include <asm/arch/gpio.h>
@@ -352,7 +353,41 @@ void __init at91_add_device_nand(struct at91_nand_data *data) {}
  *  TWI (i2c)
  * -------------------------------------------------------------------- */
 
-#if defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE)
+/*
+ * Prefer the GPIO code since the TWI controller isn't robust
+ * (gets overruns and underruns under load) and can only issue
+ * repeated STARTs in one scenario (the driver doesn't yet handle them).
+ */
+
+#if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE)
+
+static struct i2c_gpio_platform_data pdata = {
+       .sda_pin                = AT91_PIN_PA23,
+       .sda_is_open_drain      = 1,
+       .scl_pin                = AT91_PIN_PA24,
+       .scl_is_open_drain      = 1,
+       .udelay                 = 2,            /* ~100 kHz */
+};
+
+static struct platform_device at91sam9260_twi_device = {
+       .name                   = "i2c-gpio",
+       .id                     = -1,
+       .dev.platform_data      = &pdata,
+};
+
+void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices)
+{
+       at91_set_GPIO_periph(AT91_PIN_PA23, 1);         /* TWD (SDA) */
+       at91_set_multi_drive(AT91_PIN_PA23, 1);
+
+       at91_set_GPIO_periph(AT91_PIN_PA24, 1);         /* TWCK (SCL) */
+       at91_set_multi_drive(AT91_PIN_PA24, 1);
+
+       i2c_register_board_info(0, devices, nr_devices);
+       platform_device_register(&at91sam9260_twi_device);
+}
+
+#elif defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE)
 
 static struct resource twi_resources[] = {
        [0] = {
@@ -374,7 +409,7 @@ static struct platform_device at91sam9260_twi_device = {
        .num_resources  = ARRAY_SIZE(twi_resources),
 };
 
-void __init at91_add_device_i2c(void)
+void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices)
 {
        /* pins used for TWI interface */
        at91_set_A_periph(AT91_PIN_PA23, 0);            /* TWD */
@@ -383,10 +418,11 @@ void __init at91_add_device_i2c(void)
        at91_set_A_periph(AT91_PIN_PA24, 0);            /* TWCK */
        at91_set_multi_drive(AT91_PIN_PA24, 1);
 
+       i2c_register_board_info(0, devices, nr_devices);
        platform_device_register(&at91sam9260_twi_device);
 }
 #else
-void __init at91_add_device_i2c(void) {}
+void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) {}
 #endif
 
 
index 3576595b4941b7ecefcf75b0ab1ec0128f1bc261..64979a9023c2cb4e0a674cbb8cc9303ae0066074 100644 (file)
@@ -14,7 +14,9 @@
 #include <asm/mach/map.h>
 
 #include <linux/platform_device.h>
+#include <linux/i2c-gpio.h>
 
+#include <linux/fb.h>
 #include <video/atmel_lcdc.h>
 
 #include <asm/arch/board.h>
@@ -275,7 +277,40 @@ void __init at91_add_device_nand(struct at91_nand_data *data) {}
  *  TWI (i2c)
  * -------------------------------------------------------------------- */
 
-#if defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE)
+/*
+ * Prefer the GPIO code since the TWI controller isn't robust
+ * (gets overruns and underruns under load) and can only issue
+ * repeated STARTs in one scenario (the driver doesn't yet handle them).
+ */
+#if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE)
+
+static struct i2c_gpio_platform_data pdata = {
+       .sda_pin                = AT91_PIN_PA7,
+       .sda_is_open_drain      = 1,
+       .scl_pin                = AT91_PIN_PA8,
+       .scl_is_open_drain      = 1,
+       .udelay                 = 2,            /* ~100 kHz */
+};
+
+static struct platform_device at91sam9261_twi_device = {
+       .name                   = "i2c-gpio",
+       .id                     = -1,
+       .dev.platform_data      = &pdata,
+};
+
+void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices)
+{
+       at91_set_GPIO_periph(AT91_PIN_PA7, 1);          /* TWD (SDA) */
+       at91_set_multi_drive(AT91_PIN_PA7, 1);
+
+       at91_set_GPIO_periph(AT91_PIN_PA8, 1);          /* TWCK (SCL) */
+       at91_set_multi_drive(AT91_PIN_PA8, 1);
+
+       i2c_register_board_info(0, devices, nr_devices);
+       platform_device_register(&at91sam9261_twi_device);
+}
+
+#elif defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE)
 
 static struct resource twi_resources[] = {
        [0] = {
@@ -297,7 +332,7 @@ static struct platform_device at91sam9261_twi_device = {
        .num_resources  = ARRAY_SIZE(twi_resources),
 };
 
-void __init at91_add_device_i2c(void)
+void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices)
 {
        /* pins used for TWI interface */
        at91_set_A_periph(AT91_PIN_PA7, 0);             /* TWD */
@@ -306,10 +341,11 @@ void __init at91_add_device_i2c(void)
        at91_set_A_periph(AT91_PIN_PA8, 0);             /* TWCK */
        at91_set_multi_drive(AT91_PIN_PA8, 1);
 
+       i2c_register_board_info(0, devices, nr_devices);
        platform_device_register(&at91sam9261_twi_device);
 }
 #else
-void __init at91_add_device_i2c(void) {}
+void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) {}
 #endif
 
 
index f924bd5017de19ef1efac43b5dc125fdcc65ee13..ac329a98e9596ce1e56e784cab86b0c4f1fdab62 100644 (file)
@@ -13,7 +13,9 @@
 #include <asm/mach/map.h>
 
 #include <linux/platform_device.h>
+#include <linux/i2c-gpio.h>
 
+#include <linux/fb.h>
 #include <video/atmel_lcdc.h>
 
 #include <asm/arch/board.h>
@@ -421,7 +423,40 @@ void __init at91_add_device_nand(struct at91_nand_data *data) {}
  *  TWI (i2c)
  * -------------------------------------------------------------------- */
 
-#if defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE)
+/*
+ * Prefer the GPIO code since the TWI controller isn't robust
+ * (gets overruns and underruns under load) and can only issue
+ * repeated STARTs in one scenario (the driver doesn't yet handle them).
+ */
+#if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE)
+
+static struct i2c_gpio_platform_data pdata = {
+       .sda_pin                = AT91_PIN_PB4,
+       .sda_is_open_drain      = 1,
+       .scl_pin                = AT91_PIN_PB5,
+       .scl_is_open_drain      = 1,
+       .udelay                 = 2,            /* ~100 kHz */
+};
+
+static struct platform_device at91sam9263_twi_device = {
+       .name                   = "i2c-gpio",
+       .id                     = -1,
+       .dev.platform_data      = &pdata,
+};
+
+void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices)
+{
+       at91_set_GPIO_periph(AT91_PIN_PB4, 1);          /* TWD (SDA) */
+       at91_set_multi_drive(AT91_PIN_PB4, 1);
+
+       at91_set_GPIO_periph(AT91_PIN_PB5, 1);          /* TWCK (SCL) */
+       at91_set_multi_drive(AT91_PIN_PB5, 1);
+
+       i2c_register_board_info(0, devices, nr_devices);
+       platform_device_register(&at91sam9263_twi_device);
+}
+
+#elif defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE)
 
 static struct resource twi_resources[] = {
        [0] = {
@@ -443,7 +478,7 @@ static struct platform_device at91sam9263_twi_device = {
        .num_resources  = ARRAY_SIZE(twi_resources),
 };
 
-void __init at91_add_device_i2c(void)
+void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices)
 {
        /* pins used for TWI interface */
        at91_set_A_periph(AT91_PIN_PB4, 0);             /* TWD */
@@ -452,10 +487,11 @@ void __init at91_add_device_i2c(void)
        at91_set_A_periph(AT91_PIN_PB5, 0);             /* TWCK */
        at91_set_multi_drive(AT91_PIN_PB5, 1);
 
+       i2c_register_board_info(0, devices, nr_devices);
        platform_device_register(&at91sam9263_twi_device);
 }
 #else
-void __init at91_add_device_i2c(void) {}
+void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) {}
 #endif
 
 
index cd7532bcd4e5ea92a74aa2e4c5caec83fe519c04..2bd60a3dc6233cac740694121785f8edac22f81a 100644 (file)
@@ -10,8 +10,9 @@
 #include <asm/mach/map.h>
 
 #include <linux/platform_device.h>
-#include <linux/fb.h>
+#include <linux/i2c-gpio.h>
 
+#include <linux/fb.h>
 #include <video/atmel_lcdc.h>
 
 #include <asm/arch/board.h>
@@ -169,7 +170,40 @@ void __init at91_add_device_nand(struct at91_nand_data *data) {}
  *  TWI (i2c)
  * -------------------------------------------------------------------- */
 
-#if defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE)
+/*
+ * Prefer the GPIO code since the TWI controller isn't robust
+ * (gets overruns and underruns under load) and can only issue
+ * repeated STARTs in one scenario (the driver doesn't yet handle them).
+ */
+#if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE)
+
+static struct i2c_gpio_platform_data pdata = {
+       .sda_pin                = AT91_PIN_PA23,
+       .sda_is_open_drain      = 1,
+       .scl_pin                = AT91_PIN_PA24,
+       .scl_is_open_drain      = 1,
+       .udelay                 = 2,            /* ~100 kHz */
+};
+
+static struct platform_device at91sam9rl_twi_device = {
+       .name                   = "i2c-gpio",
+       .id                     = -1,
+       .dev.platform_data      = &pdata,
+};
+
+void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices)
+{
+       at91_set_GPIO_periph(AT91_PIN_PA23, 1);         /* TWD (SDA) */
+       at91_set_multi_drive(AT91_PIN_PA23, 1);
+
+       at91_set_GPIO_periph(AT91_PIN_PA24, 1);         /* TWCK (SCL) */
+       at91_set_multi_drive(AT91_PIN_PA24, 1);
+
+       i2c_register_board_info(0, devices, nr_devices);
+       platform_device_register(&at91sam9rl_twi_device);
+}
+
+#elif defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE)
 
 static struct resource twi_resources[] = {
        [0] = {
@@ -191,7 +225,7 @@ static struct platform_device at91sam9rl_twi_device = {
        .num_resources  = ARRAY_SIZE(twi_resources),
 };
 
-void __init at91_add_device_i2c(void)
+void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices)
 {
        /* pins used for TWI interface */
        at91_set_A_periph(AT91_PIN_PA23, 0);            /* TWD */
@@ -200,10 +234,11 @@ void __init at91_add_device_i2c(void)
        at91_set_A_periph(AT91_PIN_PA24, 0);            /* TWCK */
        at91_set_multi_drive(AT91_PIN_PA24, 1);
 
+       i2c_register_board_info(0, devices, nr_devices);
        platform_device_register(&at91sam9rl_twi_device);
 }
 #else
-void __init at91_add_device_i2c(void) {}
+void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) {}
 #endif
 
 
index 76ec856cd4f9fb0ee8ad54f1a54eba769172804d..0f0878294a67c660a8bb2e3b291f5c85212cd3f6 100644 (file)
@@ -128,7 +128,7 @@ static void __init carmeva_board_init(void)
        /* USB Device */
        at91_add_device_udc(&carmeva_udc_data);
        /* I2C */
-       at91_add_device_i2c();
+       at91_add_device_i2c(NULL, 0);
        /* SPI */
        at91_add_device_spi(carmeva_spi_devices, ARRAY_SIZE(carmeva_spi_devices));
        /* Compact Flash */
index dde089922e3bda6afaad9efed6335d38efe7c172..d0aa20c9383e355da4e313e35fd533cb49269263 100644 (file)
@@ -23,7 +23,6 @@
 #include <linux/mm.h>
 #include <linux/module.h>
 #include <linux/platform_device.h>
-#include <linux/i2c.h>
 #include <linux/spi/spi.h>
 #include <linux/mtd/physmap.h>
 
@@ -85,12 +84,12 @@ static struct at91_udc_data __initdata csb337_udc_data = {
 };
 
 static struct i2c_board_info __initdata csb337_i2c_devices[] = {
-       { I2C_BOARD_INFO("rtc-ds1307", 0x68),
-         .type = "ds1307",
+       {
+               I2C_BOARD_INFO("rtc-ds1307", 0x68),
+               .type   = "ds1307",
        },
 };
 
-
 static struct at91_cf_data __initdata csb337_cf_data = {
        /*
         * connector P4 on the CSB 337 mates to
@@ -168,9 +167,7 @@ static void __init csb337_board_init(void)
        /* USB Device */
        at91_add_device_udc(&csb337_udc_data);
        /* I2C */
-       at91_add_device_i2c();
-       i2c_register_board_info(0, csb337_i2c_devices,
-                       ARRAY_SIZE(csb337_i2c_devices));
+       at91_add_device_i2c(csb337_i2c_devices, ARRAY_SIZE(csb337_i2c_devices));
        /* Compact Flash */
        at91_set_gpio_input(AT91_PIN_PB22, 1);          /* IOIS16 */
        at91_add_device_cf(&csb337_cf_data);
index 77f04b935b3ab9753110ab15678acdca7a402718..c5c721d27f429291d2f86efb925f2fa1e1dd07be 100644 (file)
@@ -129,7 +129,7 @@ static void __init csb637_board_init(void)
        /* USB Device */
        at91_add_device_udc(&csb637_udc_data);
        /* I2C */
-       at91_add_device_i2c();
+       at91_add_device_i2c(NULL, 0);
        /* SPI */
        at91_add_device_spi(NULL, 0);
        /* NOR flash */
index af497896a96ce761dcb6a45281a7148e1c7e3bd6..40c9e4331706b0a32cac592603bfba036ccefa88 100644 (file)
@@ -124,6 +124,19 @@ static struct spi_board_info dk_spi_devices[] = {
 #endif
 };
 
+static struct i2c_board_info __initdata dk_i2c_devices[] = {
+       {
+               I2C_BOARD_INFO("ics1523", 0x26),
+       },
+       {
+               I2C_BOARD_INFO("x9429", 0x28),
+       },
+       {
+               I2C_BOARD_INFO("at24c", 0x50),
+               .type   = "24c1024",
+       }
+};
+
 static struct mtd_partition __initdata dk_nand_partition[] = {
        {
                .name   = "NAND Partition 1",
@@ -185,7 +198,7 @@ static void __init dk_board_init(void)
        /* Compact Flash */
        at91_add_device_cf(&dk_cf_data);
        /* I2C */
-       at91_add_device_i2c();
+       at91_add_device_i2c(dk_i2c_devices, ARRAY_SIZE(dk_i2c_devices));
        /* SPI */
        at91_add_device_spi(dk_spi_devices, ARRAY_SIZE(dk_spi_devices));
 #ifdef CONFIG_MTD_AT91_DATAFLASH_CARD
index 20458b5548f0669708eeab4f64baf2ceec1301d7..b7b79bb9d6c4b09bd464225adb1e15a415ff16d8 100644 (file)
@@ -91,6 +91,14 @@ static struct at91_mmc_data __initdata eb9200_mmc_data = {
        .wire4          = 1,
 };
 
+static struct i2c_board_info __initdata eb9200_i2c_devices[] = {
+       {
+               I2C_BOARD_INFO("at24c", 0x50),
+               .type   = "24c512",
+       },
+};
+
+
 static void __init eb9200_board_init(void)
 {
        /* Serial */
@@ -102,7 +110,7 @@ static void __init eb9200_board_init(void)
        /* USB Device */
        at91_add_device_udc(&eb9200_udc_data);
        /* I2C */
-       at91_add_device_i2c();
+       at91_add_device_i2c(eb9200_i2c_devices, ARRAY_SIZE(eb9200_i2c_devices));
        /* Compact Flash */
        at91_add_device_cf(&eb9200_cf_data);
        /* SPI */
index 322fdd75a1e431863729b478988cef8d7d8e708d..d05b1b2be9fbe34fd70a0c2912a8372f999f13bc 100644 (file)
@@ -145,7 +145,7 @@ static void __init ek_board_init(void)
        at91_add_device_udc(&ek_udc_data);
        at91_set_multi_drive(ek_udc_data.pullup_pin, 1);        /* pullup_pin is connected to reset */
        /* I2C */
-       at91_add_device_i2c();
+       at91_add_device_i2c(ek_i2c_devices, ARRAY_SIZE(ek_i2c_devices));
        /* SPI */
        at91_add_device_spi(ek_spi_devices, ARRAY_SIZE(ek_spi_devices));
 #ifdef CONFIG_MTD_AT91_DATAFLASH_CARD
index c77d84ce9cae89878b81f68648f49619fab768d6..cf1b7b2f76fbe180a3f8a9537ac4c58c728c798c 100644 (file)
@@ -92,7 +92,7 @@ static void __init kafa_board_init(void)
        /* USB Device */
        at91_add_device_udc(&kafa_udc_data);
        /* I2C */
-       at91_add_device_i2c();
+       at91_add_device_i2c(NULL, 0);
        /* SPI */
        at91_add_device_spi(NULL, 0);
 }
index 7d9b1a278fd63feb961e3ff21466952bae530dd2..4b39b9cda75b48e84b9f49bae5c4f302efa27480 100644 (file)
@@ -124,7 +124,7 @@ static void __init kb9202_board_init(void)
        /* MMC */
        at91_add_device_mmc(0, &kb9202_mmc_data);
        /* I2C */
-       at91_add_device_i2c();
+       at91_add_device_i2c(NULL, 0);
        /* SPI */
        at91_add_device_spi(NULL, 0);
        /* NAND */
index 49cfe7ab4a85652206bf8b4ac6f21b88f16166fb..6acb55c09ae5d384c5e28b9483d0193bbdabe7a1 100644 (file)
@@ -139,7 +139,7 @@ static void __init picotux200_board_init(void)
        // at91_add_device_udc(&picotux200_udc_data);
        // at91_set_multi_drive(picotux200_udc_data.pullup_pin, 1);     /* pullup_pin is connected to reset */
        /* I2C */
-       at91_add_device_i2c();
+       at91_add_device_i2c(NULL, 0);
        /* SPI */
        // at91_add_device_spi(picotux200_spi_devices, ARRAY_SIZE(picotux200_spi_devices));
 #ifdef CONFIG_MTD_AT91_DATAFLASH_CARD
index 65fa532bb4acd134e0945affbe336d33187f7a40..b343a6c28120b2824597d11ab8754a2a699107da 100644 (file)
@@ -189,7 +189,7 @@ static void __init ek_board_init(void)
        /* MMC */
        at91_add_device_mmc(0, &ek_mmc_data);
        /* I2C */
-       at91_add_device_i2c();
+       at91_add_device_i2c(NULL, 0);
 }
 
 MACHINE_START(AT91SAM9260EK, "Atmel AT91SAM9260-EK")
index 42e172cb0f49bfe2d0e40d9382d574234f712f3e..550ae59a3aca89524def4fdf310d9ce015c848a7 100644 (file)
@@ -382,14 +382,14 @@ static struct platform_device ek_button_device = {
 
 static void __init ek_add_device_buttons(void)
 {
-       at91_set_gpio_input(AT91_PIN_PB27, 0);  /* btn0 */
-       at91_set_deglitch(AT91_PIN_PB27, 1);
-       at91_set_gpio_input(AT91_PIN_PB26, 0);  /* btn1 */
-       at91_set_deglitch(AT91_PIN_PB26, 1);
-       at91_set_gpio_input(AT91_PIN_PB25, 0);  /* btn2 */
-       at91_set_deglitch(AT91_PIN_PB25, 1);
-       at91_set_gpio_input(AT91_PIN_PB24, 0);  /* btn3 */
-       at91_set_deglitch(AT91_PIN_PB24, 1);
+       at91_set_gpio_input(AT91_PIN_PA27, 0);  /* btn0 */
+       at91_set_deglitch(AT91_PIN_PA27, 1);
+       at91_set_gpio_input(AT91_PIN_PA26, 0);  /* btn1 */
+       at91_set_deglitch(AT91_PIN_PA26, 1);
+       at91_set_gpio_input(AT91_PIN_PA25, 0);  /* btn2 */
+       at91_set_deglitch(AT91_PIN_PA25, 1);
+       at91_set_gpio_input(AT91_PIN_PA24, 0);  /* btn3 */
+       at91_set_deglitch(AT91_PIN_PA24, 1);
 
        platform_device_register(&ek_button_device);
 }
@@ -406,7 +406,7 @@ static void __init ek_board_init(void)
        /* USB Device */
        at91_add_device_udc(&ek_udc_data);
        /* I2C */
-       at91_add_device_i2c();
+       at91_add_device_i2c(NULL, 0);
        /* NAND */
        at91_add_device_nand(&ek_nand_data);
        /* DM9000 ethernet */
index 2a1cc73390b79cd88943d7718c3fd3454d3c65fa..ab9dcc0754541f5f952e934c439e525beebf6b7a 100644 (file)
@@ -291,7 +291,7 @@ static void __init ek_board_init(void)
        /* NAND */
        at91_add_device_nand(&ek_nand_data);
        /* I2C */
-       at91_add_device_i2c();
+       at91_add_device_i2c(NULL, 0);
        /* LCD Controller */
        at91_add_device_lcdc(&ek_lcdc_data);
        /* AC97 */
index 9b61320f295aca158355be2ad7ead7596a2cb385..bc0546d7245f7b7df7f125ee4545335cbc1a0586 100644 (file)
@@ -181,7 +181,7 @@ static void __init ek_board_init(void)
        /* Serial */
        at91_add_device_serial();
        /* I2C */
-       at91_add_device_i2c();
+       at91_add_device_i2c(NULL, 0);
        /* NAND */
        at91_add_device_nand(&ek_nand_data);
        /* SPI */
index 848efb2a4ebfbc14cc7bf9426dadc04ca5c194e1..57c3b647ce834f06a790f04f48d18b11e7fd5d65 100644 (file)
@@ -351,7 +351,7 @@ static void init_programmable_clock(struct clk *clk)
        pckr = at91_sys_read(AT91_PMC_PCKR(clk->id));
        parent = at91_css_to_clk(pckr & AT91_PMC_CSS);
        clk->parent = parent;
-       clk->rate_hz = parent->rate_hz / (1 << ((pckr >> 2) & 3));
+       clk->rate_hz = parent->rate_hz / (1 << ((pckr & AT91_PMC_PRES) >> 2));
 }
 
 #endif /* CONFIG_AT91_PROGRAMMABLE_CLOCKS */
@@ -587,8 +587,11 @@ int __init at91_clock_init(unsigned long main_clock)
        mckr = at91_sys_read(AT91_PMC_MCKR);
        mck.parent = at91_css_to_clk(mckr & AT91_PMC_CSS);
        freq = mck.parent->rate_hz;
-       freq /= (1 << ((mckr >> 2) & 3));               /* prescale */
-       mck.rate_hz = freq / (1 + ((mckr >> 8) & 3));   /* mdiv */
+       freq /= (1 << ((mckr & AT91_PMC_PRES) >> 2));                           /* prescale */
+       if (cpu_is_at91rm9200())
+               mck.rate_hz = freq / (1 + ((mckr & AT91_PMC_MDIV) >> 8));       /* mdiv */
+       else
+               mck.rate_hz = freq / (1 << ((mckr & AT91_PMC_MDIV) >> 8));      /* mdiv */
 
        /* Register the PMC's standard clocks */
        for (i = 0; i < ARRAY_SIZE(standard_pmc_clocks); i++)
index 0791b56caeccf827b8405426f23506b9327fce25..a7465db8489373a54bc785a4d0a72a809698c327 100644 (file)
  *
  */
 
-#define INTENNUM_OFF              0x8
-#define INTDISNUM_OFF             0xC
+#define INTCNTL_OFF               0x00
+#define NIMASK_OFF                0x04
+#define INTENNUM_OFF              0x08
+#define INTDISNUM_OFF             0x0C
+#define INTENABLEH_OFF            0x10
+#define INTENABLEL_OFF            0x14
+#define INTTYPEH_OFF              0x18
+#define INTTYPEL_OFF              0x1C
+#define NIPRIORITY_OFF(x)         (0x20+4*(7-(x)))
+#define NIVECSR_OFF               0x40
+#define FIVECSR_OFF               0x44
+#define INTSRCH_OFF               0x48
+#define INTSRCL_OFF               0x4C
+#define INTFRCH_OFF               0x50
+#define INTFRCL_OFF               0x54
+#define NIPNDH_OFF                0x58
+#define NIPNDL_OFF                0x5C
+#define FIPNDH_OFF                0x60
+#define FIPNDL_OFF                0x64
 
 #define VA_AITC_BASE              IO_ADDRESS(IMX_AITC_BASE)
-#define IMX_AITC_INTDISNUM       (VA_AITC_BASE + INTDISNUM_OFF)
+#define IMX_AITC_INTCNTL         (VA_AITC_BASE + INTCNTL_OFF)
+#define IMX_AITC_NIMASK          (VA_AITC_BASE + NIMASK_OFF)
 #define IMX_AITC_INTENNUM        (VA_AITC_BASE + INTENNUM_OFF)
+#define IMX_AITC_INTDISNUM       (VA_AITC_BASE + INTDISNUM_OFF)
+#define IMX_AITC_INTENABLEH      (VA_AITC_BASE + INTENABLEH_OFF)
+#define IMX_AITC_INTENABLEL      (VA_AITC_BASE + INTENABLEL_OFF)
+#define IMX_AITC_INTTYPEH        (VA_AITC_BASE + INTTYPEH_OFF)
+#define IMX_AITC_INTTYPEL        (VA_AITC_BASE + INTTYPEL_OFF)
+#define IMX_AITC_NIPRIORITY(x)   (VA_AITC_BASE + NIPRIORITY_OFF(x))
+#define IMX_AITC_NIVECSR         (VA_AITC_BASE + NIVECSR_OFF)
+#define IMX_AITC_FIVECSR         (VA_AITC_BASE + FIVECSR_OFF)
+#define IMX_AITC_INTSRCH         (VA_AITC_BASE + INTSRCH_OFF)
+#define IMX_AITC_INTSRCL         (VA_AITC_BASE + INTSRCL_OFF)
+#define IMX_AITC_INTFRCH         (VA_AITC_BASE + INTFRCH_OFF)
+#define IMX_AITC_INTFRCL         (VA_AITC_BASE + INTFRCL_OFF)
+#define IMX_AITC_NIPNDH          (VA_AITC_BASE + NIPNDH_OFF)
+#define IMX_AITC_NIPNDL          (VA_AITC_BASE + NIPNDL_OFF)
+#define IMX_AITC_FIPNDH          (VA_AITC_BASE + FIPNDH_OFF)
+#define IMX_AITC_FIPNDL          (VA_AITC_BASE + FIPNDL_OFF)
 
 #if 0
 #define DEBUG_IRQ(fmt...)      printk(fmt)
@@ -222,7 +256,12 @@ imx_init_irq(void)
 
        DEBUG_IRQ("Initializing imx interrupts\n");
 
-       /* Mask all interrupts initially */
+       /* Disable all interrupts initially. */
+       /* Do not rely on the bootloader. */
+       __raw_writel(0, IMX_AITC_INTENABLEH);
+       __raw_writel(0, IMX_AITC_INTENABLEL);
+
+       /* Mask all GPIO interrupts as well */
        IMR(0) = 0;
        IMR(1) = 0;
        IMR(2) = 0;
@@ -245,6 +284,6 @@ imx_init_irq(void)
        set_irq_chained_handler(GPIO_INT_PORTC, imx_gpioc_demux_handler);
        set_irq_chained_handler(GPIO_INT_PORTD, imx_gpiod_demux_handler);
 
-       /* Disable all interrupts initially. */
-       /* In IMX this is done in the bootloader. */
+       /* Release masking of interrupts according to priority */
+       __raw_writel(-1, IMX_AITC_NIMASK);
 }
index d0f2b597db12541ae15514dcf86d8e8d479e8490..8e126e6b74c31be9e7f34cad14334ae70363dd7b 100644 (file)
@@ -146,7 +146,7 @@ static struct clk pxa27x_clks[] = {
        INIT_CKEN("MMCCLK",  MMC,  19500000, 0, &pxa_device_mci.dev),
        INIT_CKEN("FICPCLK", FICP, 48000000, 0, &pxa_device_ficp.dev),
 
-       INIT_CKEN("USBCLK", USB,    48000000, 0, &pxa27x_device_ohci.dev),
+       INIT_CKEN("USBCLK", USBHOST, 48000000, 0, &pxa27x_device_ohci.dev),
        INIT_CKEN("I2CCLK", PWRI2C, 13000000, 0, &pxa27x_device_i2c_power.dev),
        INIT_CKEN("KBDCLK", KEYPAD, 32768, 0, NULL),
 
index 1010f77d977a480ea8295aa359277ae9e44f0a4d..74128eb8f8d0dd5983585c89203e45410e53cfbc 100644 (file)
 static struct pxa3xx_mfp_addr_map pxa320_mfp_addr_map[] __initdata = {
 
        MFP_ADDR_X(GPIO0,  GPIO4,   0x0124),
-       MFP_ADDR_X(GPIO5,  GPIO26,  0x028C),
-       MFP_ADDR_X(GPIO27, GPIO62,  0x0400),
+       MFP_ADDR_X(GPIO5,  GPIO9,   0x028C),
+       MFP_ADDR(GPIO10, 0x0458),
+       MFP_ADDR_X(GPIO11, GPIO26,  0x02A0),
+       MFP_ADDR_X(GPIO27, GPIO48,  0x0400),
+       MFP_ADDR_X(GPIO49, GPIO62,  0x045C),
        MFP_ADDR_X(GPIO63, GPIO73,  0x04B4),
        MFP_ADDR_X(GPIO74, GPIO98,  0x04F0),
        MFP_ADDR_X(GPIO99, GPIO127, 0x0600),
index 71766ac0328b1378f23afde4a656143fd4ba4d2e..422afee88169414dbd5cb74f57f481b7cbc240e5 100644 (file)
@@ -309,6 +309,7 @@ void ssp_exit(struct ssp_dev *dev)
 
        if (dev->port > PXA_SSP_PORTS || dev->port == 0) {
                printk(KERN_WARNING "SSP: tried to close invalid port\n");
+               mutex_unlock(&mutex);
                return;
        }
 
index 4f402c92450496342bd0ea4a92bd2c09b4478b68..b77abce10c7aa895689f6210944d0d5b780bba83 100644 (file)
@@ -6,8 +6,7 @@
 mainmenu "Linux Kernel Configuration"
 
 config AVR32
-       bool
-       default y
+       def_bool y
        # With EMBEDDED=n, we get lots of stuff automatically selected
        # that we usually don't need on AVR32.
        select EMBEDDED
@@ -20,51 +19,49 @@ config AVR32
          http://avr32linux.org/.
 
 config GENERIC_GPIO
-       bool
-       default y
+       def_bool y
 
 config GENERIC_HARDIRQS
-       bool
-       default y
+       def_bool y
+
+config STACKTRACE_SUPPORT
+       def_bool y
+
+config LOCKDEP_SUPPORT
+       def_bool y
+
+config TRACE_IRQFLAGS_SUPPORT
+       def_bool&