F: drivers/platform/x86/acerhdf.c
ACER WMI LAPTOP EXTRAS
- M: Joey Lee <jlee@novell.com>
+ M: "Lee, Chun-Yi" <jlee@suse.com>
S: Maintained
F: drivers/platform/x86/acer-wmi.c
S: Maintained
F: drivers/char/agp/
F: include/linux/agp*
+ F: include/uapi/linux/agp*
AHA152X SCSI DRIVER
S: Odd fixes
F: arch/x86/kernel/apm_32.c
F: include/linux/apm_bios.h
+ F: include/uapi/linux/apm_bios.h
F: drivers/char/apm-emulation.c
APPLE BCM5974 MULTITOUCH DRIVER
ARM SUB-ARCHITECTURES
- S: MAINTAINED
+ S: Maintained
F: arch/arm/mach-*/
F: arch/arm/plat-*/
T: git git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc.git
F: drivers/mmc/host/msm_sdcc.h
F: drivers/tty/serial/msm_serial.h
F: drivers/tty/serial/msm_serial.c
- F: drivers/platform/msm/
F: drivers/*/pm8???-*
F: include/linux/mfd/pm8xxx/
T: git git://git.kernel.org/pub/scm/linux/kernel/git/davidb/linux-msm.git
W: http://www.arm.linux.org.uk/
S: Maintained
- F: arch/arm/common/time-acorn.c
F: arch/arm/include/asm/hardware/entry-macro-iomd.S
F: arch/arm/include/asm/hardware/ioc.h
F: arch/arm/include/asm/hardware/iomd.h
S: Maintained
F: arch/arm/plat-samsung/
F: arch/arm/plat-s3c24xx/
- F: arch/arm/plat-s5p/
F: arch/arm/mach-s3c24*/
F: arch/arm/mach-s3c64xx/
F: drivers/*/*s3c2410*
S: Maintained
- F: arch/arm/plat-s5p/dev-fimc*
F: arch/arm/plat-samsung/include/plat/*fimc*
F: drivers/media/platform/s5p-fimc/
S: Maintained
- F: arch/arm/plat-s5p/dev-mfc.c
+ F: arch/arm/plat-samsung/s5p-dev-mfc.c
F: drivers/media/platform/s5p-mfc/
ARM/SAMSUNG S5P SERIES TV SUBSYSTEM SUPPORT
F: drivers/video/wm8505fb*
F: drivers/video/wmt_ge_rops.*
F: drivers/tty/serial/vt8500_serial.c
- F: drivers/rtc/rtc-vt8500-c
+ F: drivers/rtc/rtc-vt8500.c
F: drivers/mmc/host/wmt-sdmmc.c
ARM/ZIPIT Z2 SUPPORT
S: Supported
F: drivers/net/wireless/ath/ath9k/
+ WILOCITY WIL6210 WIRELESS DRIVER
+ S: Supported
+ W: http://wireless.kernel.org/en/users/Drivers/wil6210
+ F: drivers/net/wireless/ath/wil6210/
+
CARL9170 LINUX COMMUNITY WIRELESS DRIVER
S: Maintained
F: drivers/atm/
F: include/linux/atm*
+ F: include/uapi/linux/atm*
ATMEL AT91 / AT32 MCI DRIVER
S: Supported
F: drivers/dma/at_hdmac.c
F: drivers/dma/at_hdmac_regs.h
- F: arch/arm/mach-at91/include/mach/at_hdmac.h
+ F: include/linux/platform_data/dma-atmel.h
ATMEL ISI DRIVER
S: Supported
- F: drivers/media/platform/atmel-isi.c
+ F: drivers/media/platform/soc_camera/atmel-isi.c
F: include/media/atmel-isi.h
ATMEL LCDFB DRIVER
T: git git://git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current.git
S: Maintained
F: include/linux/audit.h
+ F: include/uapi/linux/audit.h
F: kernel/audit*
AUXILIARY DISPLAY DRIVERS
W: http://www.linux-ax25.org/
S: Maintained
- F: include/linux/ax25.h
+ F: include/uapi/linux/ax25.h
F: include/net/ax25.h
F: net/ax25/
S: Maintained
F: Documentation/filesystems/bfs.txt
F: fs/bfs/
- F: include/linux/bfs_fs.h
+ F: include/uapi/linux/bfs_fs.h
BLACKFIN ARCHITECTURE
W: http://sourceforge.net/projects/bonding/
S: Supported
F: drivers/net/bonding/
- F: include/linux/if_bonding.h
+ F: include/uapi/linux/if_bonding.h
BROADCOM B44 10/100 ETHERNET DRIVER
S: Supported
F: block/bsg.c
F: include/linux/bsg.h
+ F: include/uapi/linux/bsg.h
BT87X AUDIO DRIVER
S: Supported
F: Documentation/networking/caif/
F: drivers/net/caif/
- F: include/linux/caif/
+ F: include/uapi/linux/caif/
F: include/net/caif/
F: net/caif/
T: git git://gitorious.org/linux-can/linux-can-next.git
S: Maintained
F: net/can/
- F: include/linux/can.h
F: include/linux/can/core.h
- F: include/linux/can/bcm.h
- F: include/linux/can/raw.h
- F: include/linux/can/gw.h
+ F: include/uapi/linux/can.h
+ F: include/uapi/linux/can/bcm.h
+ F: include/uapi/linux/can/raw.h
+ F: include/uapi/linux/can/gw.h
CAN NETWORK DRIVERS
S: Maintained
F: drivers/net/can/
F: include/linux/can/dev.h
- F: include/linux/can/error.h
- F: include/linux/can/netlink.h
F: include/linux/can/platform/
+ F: include/uapi/linux/can/error.h
+ F: include/uapi/linux/can/netlink.h
CAPABILITIES
S: Supported
F: include/linux/capability.h
+ F: include/uapi/linux/capability.h
F: security/capability.c
F: security/commoncap.c
F: kernel/capability.c
S: Supported
F: arch/powerpc/include/asm/cell*.h
F: arch/powerpc/include/asm/spu*.h
+ F: arch/powerpc/include/uapi/asm/spu*.h
F: arch/powerpc/oprofile/*cell*
F: arch/powerpc/platforms/cell/
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git
S: Maintained
- F: include/linux/nl80211.h
+ F: include/uapi/linux/nl80211.h
F: include/net/cfg80211.h
F: net/wireless/*
X: net/wireless/wext*
F: drivers/usb/host/ohci-ep93xx.c
CIRRUS LOGIC CS4270 SOUND DRIVER
- M: Timur Tabi <timur@freescale.com>
+ M: Timur Tabi <timur@tabi.org>
- S: Supported
+ S: Odd Fixes
F: sound/soc/codecs/cs4270*
CLEANCACHE API
F: Documentation/filesystems/coda.txt
F: fs/coda/
F: include/linux/coda*.h
+ F: include/uapi/linux/coda*.h
COMMON CLK FRAMEWORK
S: Orphan
F: drivers/tty/cyclades.c
F: include/linux/cyclades.h
+ F: include/uapi/linux/cyclades.h
CYCLADES PC300 DRIVER
W: http://www.cyclades.com/
W: http://www.linuxfoundation.org/collaborate/workgroups/networking/dccp
S: Maintained
F: include/linux/dccp.h
+ F: include/uapi/linux/dccp.h
F: include/linux/tfrc.h
F: net/dccp/
W: http://www.debian.org/~dz/i8k/
S: Maintained
F: drivers/char/i8k.c
- F: include/linux/i8k.h
+ F: include/uapi/linux/i8k.h
DELL SYSTEMS MANAGEMENT BASE DRIVER (dcdbas)
F: Documentation/filesystems/quota.txt
F: fs/quota/
F: include/linux/quota*.h
+ F: include/uapi/linux/quota*.h
DISPLAYLINK USB 2.0 FRAMEBUFFER DRIVER (UDLFB)
S: Maintained
F: drivers/gpu/drm/
F: include/drm/
+ F: include/uapi/drm/
INTEL DRM DRIVERS (excluding Poulsbo, Moorestown and derivative chipsets)
S: Supported
F: drivers/gpu/drm/i915
F: include/drm/i915*
+ F: include/uapi/drm/i915*
DRM DRIVERS FOR EXYNOS
S: Supported
F: drivers/gpu/drm/exynos
F: include/drm/exynos*
+ F: include/uapi/drm/exynos*
DRM DRIVERS FOR NVIDIA TEGRA
Q: http://patchwork.linuxtv.org/project/linux-media/list/
T: git git://linuxtv.org/media_tree.git
S: Maintained
- F: drivers/media/usb/dvb-usb-v2/cxusb*
+ F: drivers/media/usb/dvb-usb/cxusb*
DVB_USB_CYPRESS_FIRMWARE MEDIA DRIVER
W: http://ebtables.sourceforge.net/
S: Maintained
F: include/linux/netfilter_bridge/ebt_*.h
+ F: include/uapi/linux/netfilter_bridge/ebt_*.h
F: net/bridge/netfilter/ebt*.c
EC100 MEDIA DRIVER
S: Maintained
F: drivers/media/rc/ene_ir.*
- EPSON 1355 FRAMEBUFFER DRIVER
- S: Maintained
- F: drivers/video/epson1355fb.c
-
EPSON S1D13XXX FRAMEBUFFER DRIVER
S: Maintained
S: Maintained
F: fs/notify/fanotify/
F: include/linux/fanotify.h
+ F: include/uapi/linux/fanotify.h
FARSYNC SYNCHRONOUS DRIVER
F: include/scsi/fc/
F: include/scsi/libfc.h
F: include/scsi/libfcoe.h
+ F: include/uapi/scsi/fc/
FILE LOCKING (flock() and fcntl()/lockf())
S: Maintained
F: include/linux/fcntl.h
F: include/linux/fs.h
+ F: include/uapi/linux/fcntl.h
+ F: include/uapi/linux/fs.h
F: fs/fcntl.c
F: fs/locks.c
F: drivers/video/
F: include/video/
F: include/linux/fb.h
+ F: include/uapi/video/
+ F: include/uapi/linux/fb.h
FREESCALE DIU FRAMEBUFFER DRIVER
- M: Timur Tabi <timur@freescale.com>
+ M: Timur Tabi <timur@tabi.org>
- S: Supported
+ S: Maintained
F: drivers/video/fsl-diu-fb.*
FREESCALE DMA DRIVER
S: Maintained
- F: arch/arm/plat-mxc/include/mach/imxfb.h
+ F: include/linux/platform_data/video-imxfb.h
F: drivers/video/imxfb.c
FREESCALE SOC FS_ENET DRIVER
F: include/linux/fs_enet_pd.h
FREESCALE QUICC ENGINE LIBRARY
- S: Supported
+ S: Orphan
F: arch/powerpc/sysdev/qe_lib/
F: arch/powerpc/include/asm/*qe.h
F: drivers/net/ethernet/freescale/ucc_geth*
FREESCALE QUICC ENGINE UCC UART DRIVER
- M: Timur Tabi <timur@freescale.com>
+ M: Timur Tabi <timur@tabi.org>
- S: Supported
+ S: Maintained
F: drivers/tty/serial/ucc_uart.c
FREESCALE SOC SOUND DRIVERS
- M: Timur Tabi <timur@freescale.com>
+ M: Timur Tabi <timur@tabi.org>
- S: Supported
+ S: Maintained
F: sound/soc/fsl/fsl*
F: sound/soc/fsl/mpc8610_hpcd.c
F: fs/fscache/
F: include/linux/fscache*.h
+ F2FS FILE SYSTEM
+ W: http://en.wikipedia.org/wiki/F2FS
+ T: git git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git
+ S: Maintained
+ F: Documentation/filesystems/f2fs.txt
+ F: fs/f2fs/
+ F: include/linux/f2fs_fs.h
+
FUJITSU FR-V (FRV) PORT
S: Maintained
W: http://fuse.sourceforge.net/
S: Maintained
F: fs/fuse/
- F: include/linux/fuse.h
+ F: include/uapi/linux/fuse.h
FUTURE DOMAIN TMC-16x0 SCSI DRIVER (16-bit)
T: git git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic.git
S: Maintained
F: include/asm-generic
+ F: include/uapi/asm-generic
GENERIC UIO DRIVER FOR PCI DEVICES
S: Supported
F: Documentation/filesystems/gfs2*.txt
F: fs/gfs2/
- F: include/linux/gfs2_ondisk.h
+ F: include/uapi/linux/gfs2_ondisk.h
GIGASET ISDN DRIVERS
S: Maintained
F: Documentation/isdn/README.gigaset
F: drivers/isdn/gigaset/
- F: include/linux/gigaset_dev.h
+ F: include/uapi/linux/gigaset_dev.h
GPIO SUBSYSTEM
F: Documentation/scsi/hpsa.txt
F: drivers/scsi/hpsa*.[ch]
F: include/linux/cciss*.h
+ F: include/uapi/linux/cciss*.h
HEWLETT-PACKARD SMART CISS RAID DRIVER (cciss)
F: Documentation/blockdev/cciss.txt
F: drivers/block/cciss*
F: include/linux/cciss_ioctl.h
+ F: include/uapi/linux/cciss_ioctl.h
HFS FILESYSTEM
S: Maintained
F: drivers/hid/
F: include/linux/hid*
+ F: include/uapi/linux/hid*
HIGH-RESOLUTION TIMERS, CLOCKEVENTS, DYNTICKS
S: Maintained
F: include/linux/hippidevice.h
- F: include/linux/if_hippi.h
+ F: include/uapi/linux/if_hippi.h
F: net/802/hippi.c
F: drivers/net/hippi/
F: Documentation/timers/hpet.txt
F: drivers/char/hpet.c
F: include/linux/hpet.h
+ F: include/uapi/linux/hpet.h
HPET: x86
F: drivers/i2c/
F: include/linux/i2c.h
F: include/linux/i2c-*.h
+ F: include/uapi/linux/i2c.h
+ F: include/uapi/linux/i2c-*.h
I2C-TAOS-EVM DRIVER
S: Maintained
F: net/ieee802154/
F: net/mac802154/
- F: drivers/ieee802154/
+ F: drivers/net/ieee802154/
IGUANAWORKS USB IR TRANSCEIVER
S: Supported
F: Documentation/infiniband/
F: drivers/infiniband/
- F: include/linux/if_infiniband.h
+ F: include/uapi/linux/if_infiniband.h
INOTIFY
F: Documentation/filesystems/inotify.txt
F: fs/notify/inotify/
F: include/linux/inotify.h
+ F: include/uapi/linux/inotify.h
INPUT (KEYBOARD, MOUSE, JOYSTICK, TOUCHSCREEN) DRIVERS
S: Maintained
F: drivers/input/
F: include/linux/input.h
+ F: include/uapi/linux/input.h
F: include/linux/input/
INPUT MULTITOUCH (MT) PROTOCOL
T: git git://git.code.sf.net/p/intel-sas/isci
S: Supported
F: drivers/scsi/isci/
- F: firmware/isci/
INTEL IDLE DRIVER
F: Documentation/networking/ixgbevf.txt
F: drivers/net/ethernet/intel/
- INTEL MRST PMU DRIVER
- S: Supported
- F: arch/x86/platform/mrst/pmu.*
-
INTEL PRO/WIRELESS 2100, 2200BG, 2915ABG NETWORK CONNECTION SUPPORT
W: http://linuxwimax.org
F: Documentation/wimax/README.i2400m
F: drivers/net/wimax/i2400m/
- F: include/linux/wimax/i2400m.h
+ F: include/uapi/linux/wimax/i2400m.h
INTEL WIRELESS 3945ABG/BG, 4965AGN (iwlegacy)
S: Supported
- F: include/linux/mei.h
+ F: include/uapi/linux/mei.h
F: drivers/misc/mei/*
- F: Documentation/mei/*
+ F: Documentation/misc-devices/mei/*
IOC3 ETHERNET DRIVER
F: Documentation/IPMI.txt
F: drivers/char/ipmi/
F: include/linux/ipmi*
+ F: include/uapi/linux/ipmi*
IPS SCSI RAID DRIVER
S: Maintained
F: Documentation/networking/ipvs-sysctl.txt
F: include/net/ip_vs.h
- F: include/linux/ip_vs.h
+ F: include/uapi/linux/ip_vs.h
F: net/netfilter/ipvs/
IPWIRELESS DRIVER
S: Maintained
- F: include/linux/ipx.h
F: include/net/ipx.h
+ F: include/uapi/linux/ipx.h
F: net/ipx/
IRDA SUBSYSTEM
F: drivers/isdn/
F: include/linux/isdn.h
F: include/linux/isdn/
+ F: include/uapi/linux/isdn.h
+ F: include/uapi/linux/isdn/
ISDN SUBSYSTEM (Eicon active card driver)
S: Maintained
F: Documentation/video4linux/*.ivtv
F: drivers/media/pci/ivtv/
- F: include/linux/ivtv*
+ F: include/uapi/linux/ivtv*
IX2505V MEDIA DRIVER
W: http://www.linux-mtd.infradead.org/doc/jffs2.html
S: Maintained
F: fs/jffs2/
- F: include/linux/jffs2.h
+ F: include/uapi/linux/jffs2.h
JOURNALLING LAYER FOR BLOCK DEVICES (JBD)
S: Supported
F: fs/nfsd/
F: include/linux/nfsd/
+ F: include/uapi/linux/nfsd/
F: fs/lockd/
F: fs/nfs_common/
F: net/sunrpc/
F: include/linux/lockd/
F: include/linux/sunrpc/
+ F: include/uapi/linux/sunrpc/
KERNEL VIRTUAL MACHINE (KVM)
F: arch/*/kvm/
F: arch/*/include/asm/kvm*
F: include/linux/kvm*
+ F: include/uapi/linux/kvm*
F: virt/kvm/
KERNEL VIRTUAL MACHINE (KVM) FOR AMD-V
S: Maintained
F: include/linux/kexec.h
+ F: include/uapi/linux/kexec.h
F: kernel/kexec.c
KEYS/KEYRINGS:
S: Maintained
F: include/linux/llc.h
+ F: include/uapi/linux/llc.h
F: include/net/llc*
F: net/llc/
S: Orphan
F: drivers/video/matrox/matroxfb_*
- F: include/linux/matroxfb.h
+ F: include/uapi/linux/matroxfb.h
MAX16065 HARDWARE MONITOR DRIVER
S: Maintained
F: drivers/mtd/
F: include/linux/mtd/
- F: include/mtd/
+ F: include/uapi/mtd/
MICROBLAZE ARCHITECTURE
F: drivers/media/pci/meye/
F: include/uapi/linux/meye.h
- MOTOROLA IMX MMC/SD HOST CONTROLLER INTERFACE DRIVER
- S: Maintained
- F: drivers/mmc/host/imxmmc.*
-
MOXA SMARTIO/INDUSTIO/INTELLIO SERIAL CARD
S: Maintained
F: drivers/media/radio/radio-mr800.c
MSI LAPTOP SUPPORT
- M: "Lee, Chun-Yi" <jlee@novell.com>
+ M: "Lee, Chun-Yi" <jlee@suse.com>
S: Maintained
F: drivers/platform/x86/msi-laptop.c
S: Maintained
F: drivers/mmc/
F: include/linux/mmc/
+ F: include/uapi/linux/mmc/
MULTIMEDIA CARD (MMC) ETC. OVER SPI
S: Orphan
F: include/linux/netfilter*
F: include/linux/netfilter/
F: include/net/netfilter/
+ F: include/uapi/linux/netfilter*
+ F: include/uapi/linux/netfilter/
F: net/*/netfilter.c
F: net/*/netfilter/
F: net/netfilter/
W: http://www.linux-ax25.org/
S: Maintained
- F: include/linux/netrom.h
F: include/net/netrom.h
+ F: include/uapi/linux/netrom.h
F: net/netrom/
NETWORK BLOCK DEVICE (NBD)
F: Documentation/blockdev/nbd.txt
F: drivers/block/nbd.c
F: include/linux/nbd.h
+ F: include/uapi/linux/nbd.h
NETWORK DROP MONITOR
F: include/linux/in.h
F: include/linux/net.h
F: include/linux/netdevice.h
+ F: include/uapi/linux/in.h
+ F: include/uapi/linux/net.h
+ F: include/uapi/linux/netdevice.h
NETWORKING [IPv4/IPv6]
F: net/wireless/
F: include/net/ieee80211*
F: include/linux/wireless.h
+ F: include/uapi/linux/wireless.h
F: include/net/iw_handler.h
F: drivers/net/wireless/
F: include/linux/fddidevice.h
F: include/linux/hippidevice.h
F: include/linux/inetdevice.h
+ F: include/uapi/linux/if_*
+ F: include/uapi/linux/netdevice.h
NETXEN (1/10) GbE SUPPORT
S: Maintained
F: net/nfc/
- F: include/linux/nfc.h
F: include/net/nfc/
+ F: include/uapi/linux/nfc.h
F: drivers/nfc/
F: include/linux/platform_data/pn544.h
F: include/linux/lockd/
F: include/linux/nfs*
F: include/linux/sunrpc/
+ F: include/uapi/linux/nfs*
+ F: include/uapi/linux/sunrpc/
NI5010 NETWORK DRIVER
S: Maintained
- F: arch/arm/mach-omap2/omap_hwmod.c
- F: arch/arm/plat-omap/include/plat/omap_hwmod.h
+ F: arch/arm/mach-omap2/omap_hwmod.*
OMAP HWMOD DATA FOR OMAP4-BASED DEVICES
S: Maintained
F: drivers/char/pcmcia/cm4000_cs.c
F: include/linux/cm4000_cs.h
+ F: include/uapi/linux/cm4000_cs.h
OMNIKEY CARDMAN 4040 DRIVER
F: drivers/parport/
F: include/linux/parport*.h
F: drivers/char/ppdev.c
- F: include/linux/ppdev.h
+ F: include/uapi/linux/ppdev.h
PARAVIRT_OPS INTERFACE
S: Supported
F: kernel/events/*
F: include/linux/perf_event.h
+ F: include/uapi/linux/perf_event.h
F: arch/*/kernel/perf_event*.c
F: arch/*/kernel/*/perf_event*.c
F: arch/*/kernel/*/*/perf_event*.c
F: arch/*/include/asm/perf_event.h
- F: arch/*/lib/perf_event*.c
F: arch/*/kernel/perf_callchain.c
F: tools/perf/
S: Maintained
F: include/linux/personality.h
+ F: include/uapi/linux/personality.h
PHONET PROTOCOL
F: Documentation/networking/phonet.txt
F: include/linux/phonet.h
F: include/net/phonet/
+ F: include/uapi/linux/phonet.h
F: net/phonet/
PHRAM MTD DRIVER
S: Maintained
F: drivers/block/pktcdvd.c
F: include/linux/pktcdvd.h
+ F: include/uapi/linux/pktcdvd.h
PKUNITY SOC DRIVERS
S: Maintained
F: net/atm/pppoatm.c
- F: include/linux/atmppp.h
+ F: include/uapi/linux/atmppp.h
PPP OVER ETHERNET
S: Maintained
F: net/l2tp/l2tp_ppp.c
F: include/linux/if_pppol2tp.h
+ F: include/uapi/linux/if_pppol2tp.h
PPS SUPPORT
F: include/linux/ptrace.h
F: include/linux/regset.h
F: include/linux/tracehook.h
+ F: include/uapi/linux/ptrace.h
F: kernel/ptrace.c
PVRUSB2 VIDEO4LINUX DRIVER
F: Documentation/pwm.txt
F: Documentation/devicetree/bindings/pwm/
F: include/linux/pwm.h
- F: include/linux/of_pwm.h
F: drivers/pwm/
F: drivers/video/backlight/pwm_bl.c
F: include/linux/pwm_backlight.h
W: http://www.alarsen.net/linux/qnx4fs/
S: Maintained
F: fs/qnx4/
- F: include/linux/qnx4_fs.h
- F: include/linux/qnxtypes.h
+ F: include/uapi/linux/qnx4_fs.h
+ F: include/uapi/linux/qnxtypes.h
QT1010 MEDIA DRIVER
S: Maintained
F: drivers/video/aty/radeon*
- F: include/linux/radeonfb.h
+ F: include/uapi/linux/radeonfb.h
RADIOSHARK RADIO DRIVER
F: Documentation/rtc.txt
F: drivers/rtc/
F: include/linux/rtc.h
+ F: include/uapi/linux/rtc.h
REISERFS FILE SYSTEM
W: http://www.linux-ax25.org/
S: Maintained
- F: include/linux/rose.h
F: include/net/rose.h
+ F: include/uapi/linux/rose.h
F: net/rose/
RTL2830 MEDIA DRIVER
F: include/media/s3c_camif.h
SERIAL DRIVERS
S: Maintained
F: drivers/tty/serial
F: include/linux/clocksource.h
F: include/linux/time.h
F: include/linux/timex.h
+ F: include/uapi/linux/time.h
+ F: include/uapi/linux/timex.h
F: kernel/time/clocksource.c
F: kernel/time/time*.c
F: kernel/time/ntp.c
S: Maintained
F: kernel/sched/
F: include/linux/sched.h
+ F: include/uapi/linux/sched.h
SCORE ARCHITECTURE
S: Maintained
F: drivers/misc/phantom.c
- F: include/linux/phantom.h
+ F: include/uapi/linux/phantom.h
SERIAL ATA (SATA) SUBSYSTEM
S: Supported
F: drivers/md/
F: include/linux/raid/
+ F: include/uapi/linux/raid/
SONIC NETWORK DRIVER
S: Maintained
F: Documentation/sound/
F: include/sound/
+ F: include/uapi/sound/
F: sound/
SOUND - SOC LAYER / DYNAMIC AUDIO POWER MANAGEMENT (ASoC)
F: Documentation/spi/
F: drivers/spi/
F: include/linux/spi/
+ F: include/uapi/linux/spi/
SPIDERNET NETWORK DRIVER for CELL
F: drivers/staging/olpc_dcon/
STAGING - OZMO DEVICES USB OVER WIFI DRIVER
S: Maintained
F: drivers/staging/ozwpan/
STAGING - SILICON MOTION SM7XX FRAME BUFFER DRIVER
S: Odd Fixes
- F: drivers/staging/sm7xx/
+ F: drivers/staging/sm7xxfb/
STAGING - SOFTLOGIC 6x10 MPEG CODEC
F: drivers/staging/speakup/
STAGING - TI DSP BRIDGE DRIVERS
- M: Omar Ramirez Luna <omar.ramirez@ti.com>
+ M: Omar Ramirez Luna <omar.ramirez@copitl.com>
S: Odd Fixes
F: drivers/staging/tidspbridge/
S: Maintained
- F: include/linux/pkt_cls.h
F: include/net/pkt_cls.h
+ F: include/uapi/linux/pkt_cls.h
F: net/sched/
TCP LOW PRIORITY MODULE
S: Supported
F: drivers/net/team/
F: include/linux/if_team.h
+ F: include/uapi/linux/if_team.h
TECHNOTREND USB IR RECEIVER
W: http://tipc.sourceforge.net/
S: Maintained
- F: include/linux/tipc*.h
+ F: include/uapi/linux/tipc*.h
F: net/tipc/
TILE ARCHITECTURE
S: Maintained
F: drivers/char/toshiba.c
F: include/linux/toshiba.h
+ F: include/uapi/linux/toshiba.h
TMIO MMC DRIVER
F: include/linux/serial_core.h
F: include/linux/serial.h
F: include/linux/tty.h
+ F: include/uapi/linux/serial_core.h
+ F: include/uapi/linux/serial.h
+ F: include/uapi/linux/tty.h
TUA9001 MEDIA DRIVER
S: Maintained
F: drivers/hid/uhid.c
- F: include/linux/uhid.h
+ F: include/uapi/linux/uhid.h
ULTRA-WIDEBAND (UWB) SUBSYSTEM:
F: Documentation/cdrom/
F: drivers/cdrom/cdrom.c
F: include/linux/cdrom.h
+ F: include/uapi/linux/cdrom.h
UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER
S: Maintained
F: drivers/mtd/ubi/
F: include/linux/mtd/ubi.h
- F: include/mtd/ubi-user.h
+ F: include/uapi/mtd/ubi-user.h
UNSORTED BLOCK IMAGES (UBI) Fastmap
S: Maintained
F: drivers/net/usb/cdc_*.c
- F: include/linux/usb/cdc.h
+ F: include/uapi/linux/usb/cdc.h
USB CYPRESS C67X00 DRIVER
F: Documentation/vfio.txt
F: drivers/vfio/
F: include/linux/vfio.h
+ F: include/uapi/linux/vfio.h
VIDEOBUF2 FRAMEWORK
S: Maintained
F: drivers/char/virtio_console.c
F: include/linux/virtio_console.h
+ F: include/uapi/linux/virtio_console.h
VIRTIO CORE, NET AND BLOCK DRIVERS
S: Maintained
F: drivers/vhost/
- F: include/linux/vhost.h
+ F: include/uapi/linux/vhost.h
VIA RHINE NETWORK DRIVER
F: Documentation/watchdog/
F: drivers/watchdog/
F: include/linux/watchdog.h
+ F: include/uapi/linux/watchdog.h
WD7000 SCSI DRIVER
S: Supported
W: http://linuxwimax.org
F: Documentation/wimax/README.wimax
- F: include/linux/wimax.h
F: include/linux/wimax/debug.h
F: include/net/wimax.h
+ F: include/uapi/linux/wimax.h
F: net/wimax/
WISTRON LAPTOP BUTTON DRIVER
F: arch/x86/
X86 PLATFORM DRIVERS
- M: Matthew Garrett <mjg@redhat.com>
+ M: Matthew Garrett <matthew.garrett@nebula.com>
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mjg59/platform-drivers-x86.git
S: Maintained
F: drivers/xen/
F: arch/x86/include/asm/xen/
F: include/xen/
+ F: include/uapi/xen/
XEN HYPERVISOR ARM
#include <linux/iio/buffer.h>
#include <linux/iio/trigger_consumer.h>
#include <linux/iio/triggered_buffer.h>
-#include "../common/hid-sensors/hid-sensor-attributes.h"
#include "../common/hid-sensors/hid-sensor-trigger.h"
/*Format: HID-SENSOR-usage_id_in_hex*/
struct accel_3d_state {
struct hid_sensor_hub_callbacks callbacks;
- struct hid_sensor_iio_common common_attributes;
+ struct hid_sensor_common common_attributes;
struct hid_sensor_hub_attribute_info accel[ACCEL_3D_CHANNEL_MAX];
u32 accel_val[ACCEL_3D_CHANNEL_MAX];
};
}
/* Function to initialize the processing for usage id */
- static int __devinit hid_accel_3d_probe(struct platform_device *pdev)
+ static int hid_accel_3d_probe(struct platform_device *pdev)
{
int ret = 0;
static const char *name = "accel_3d";
}
/* Function to deinitialize the processing for usage id */
- static int __devinit hid_accel_3d_remove(struct platform_device *pdev)
+ static int hid_accel_3d_remove(struct platform_device *pdev)
{
struct hid_sensor_hub_device *hsdev = pdev->dev.platform_data;
struct iio_dev *indio_dev = platform_get_drvdata(pdev);
ret = iio_map_array_register(indio_dev, map);
if (ret) {
- dev_err(adc->lp->dev, "iio map err: %d\n", ret);
+ dev_err(&indio_dev->dev, "iio map err: %d\n", ret);
return ret;
}
iio_map_array_unregister(indio_dev, adc->map);
}
- static int __devinit lp8788_adc_probe(struct platform_device *pdev)
+ static int lp8788_adc_probe(struct platform_device *pdev)
{
struct lp8788 *lp = dev_get_drvdata(pdev->dev.parent);
struct iio_dev *indio_dev;
mutex_init(&adc->lock);
- indio_dev->dev.parent = lp->dev;
+ indio_dev->dev.parent = &pdev->dev;
indio_dev->name = pdev->name;
indio_dev->modes = INDIO_DIRECT_MODE;
indio_dev->info = &lp8788_adc_info;
ret = iio_device_register(indio_dev);
if (ret) {
- dev_err(lp->dev, "iio dev register err: %d\n", ret);
+ dev_err(&pdev->dev, "iio dev register err: %d\n", ret);
goto err_iio_device;
}
return ret;
}
- static int __devexit lp8788_adc_remove(struct platform_device *pdev)
+ static int lp8788_adc_remove(struct platform_device *pdev)
{
struct iio_dev *indio_dev = platform_get_drvdata(pdev);
struct lp8788_adc *adc = iio_priv(indio_dev);
static struct platform_driver lp8788_adc_driver = {
.probe = lp8788_adc_probe,
- .remove = __devexit_p(lp8788_adc_remove),
+ .remove = lp8788_adc_remove,
.driver = {
.name = LP8788_DEV_ADC,
.owner = THIS_MODULE,
#include <linux/iio/driver.h>
#include <linux/iio/kfifo_buf.h>
#include <linux/iio/trigger_consumer.h>
+#include <linux/iio/triggered_buffer.h>
#define MAX1363_SETUP_BYTE(a) ((a) | 0x80)
#define MAX1363_SETUP_POWER_UP_INT_REF 0x10
#define MAX1363_SETUP_POWER_DOWN_INT_REF 0x00
-/* think about includeing max11600 etc - more settings */
+/* think about including max11600 etc - more settings */
#define MAX1363_SETUP_EXT_CLOCK 0x08
#define MAX1363_SETUP_INT_CLOCK 0x00
#define MAX1363_SETUP_UNIPOLAR 0x00
/* max123{6-9} only */
#define MAX1236_SCAN_MID_TO_CHANNEL 0x40
-/* max1363 only - merely part of channel selects or don't care for others*/
+/* max1363 only - merely part of channel selects or don't care for others */
#define MAX1363_CONFIG_EN_MON_MODE_READ 0x18
#define MAX1363_CHANNEL_SEL(a) ((a) << 1)
* @mode_list: array of available scan modes
* @default_mode: the scan mode in which the chip starts up
* @int_vref_mv: the internal reference voltage
- * @num_channels: number of channels
+ * @num_modes: number of modes
* @bits: accuracy of the adc in bits
*/
struct max1363_chip_info {
* @client: i2c_client
* @setupbyte: cache of current device setup byte
* @configbyte: cache of current device config byte
- * @chip_info: chip model specific constants, available modes etc
+ * @chip_info: chip model specific constants, available modes, etc.
* @current_mode: the scan mode of this chip
* @requestedmask: a valid requested set of channels
* @reg: supply regulator
static const struct max1363_mode
*max1363_match_mode(const unsigned long *mask,
-const struct max1363_chip_info *ci)
+ const struct max1363_chip_info *ci)
{
int i;
if (mask)
| MAX1363_SETUP_UNIPOLAR
| MAX1363_SETUP_NORESET;
- /* Set scan mode writes the config anyway so wait until then*/
+ /* Set scan mode writes the config anyway so wait until then */
st->setupbyte = MAX1363_SETUP_BYTE(st->setupbyte);
st->current_mode = &max1363_mode_table[st->chip_info->default_mode];
st->configbyte = MAX1363_CONFIG_BYTE(st->configbyte);
return max1363_set_scan_mode(st);
}
- static int __devinit max1363_alloc_scan_masks(struct iio_dev *indio_dev)
+ static int max1363_alloc_scan_masks(struct iio_dev *indio_dev)
{
struct max1363_state *st = iio_priv(indio_dev);
unsigned long *masks;
return 0;
}
-
static irqreturn_t max1363_trigger_handler(int irq, void *p)
{
struct iio_poll_func *pf = p;
.predisable = &iio_triggered_buffer_predisable,
};
- static int __devinit max1363_probe(struct i2c_client *client,
- const struct i2c_device_id *id)
+ static int max1363_register_buffered_funcs_and_init(struct iio_dev *indio_dev)
+ {
+ struct max1363_state *st = iio_priv(indio_dev);
+ int ret = 0;
+
+ indio_dev->buffer = iio_kfifo_allocate(indio_dev);
+ if (!indio_dev->buffer) {
+ ret = -ENOMEM;
+ goto error_ret;
+ }
+ indio_dev->pollfunc = iio_alloc_pollfunc(NULL,
+ &max1363_trigger_handler,
+ IRQF_ONESHOT,
+ indio_dev,
+ "%s_consumer%d",
+ st->client->name,
+ indio_dev->id);
+ if (indio_dev->pollfunc == NULL) {
+ ret = -ENOMEM;
+ goto error_deallocate_sw_rb;
+ }
+ /* Buffer functions - here trigger setup related */
+ indio_dev->setup_ops = &max1363_buffered_setup_ops;
+
+ /* Flag that polled buffering is possible */
+ indio_dev->modes |= INDIO_BUFFER_TRIGGERED;
+
+ return 0;
+
+ error_deallocate_sw_rb:
+ iio_kfifo_free(indio_dev->buffer);
+ error_ret:
+ return ret;
+ }
+
+ static void max1363_buffer_cleanup(struct iio_dev *indio_dev)
+ {
+ /* ensure that the trigger has been detached */
+ iio_dealloc_pollfunc(indio_dev->pollfunc);
+ iio_kfifo_free(indio_dev->buffer);
+ }
+
+ static int max1363_probe(struct i2c_client *client,
+ const struct i2c_device_id *id)
{
int ret;
struct max1363_state *st;
if (ret)
goto error_disable_reg;
- /* Estabilish that the iio_dev is a child of the i2c device */
+ /* Establish that the iio_dev is a child of the i2c device */
indio_dev->dev.parent = &client->dev;
indio_dev->name = id->name;
indio_dev->channels = st->chip_info->channels;
if (ret < 0)
goto error_free_available_scan_masks;
- ret = max1363_register_buffered_funcs_and_init(indio_dev);
+ ret = iio_triggered_buffer_setup(indio_dev, NULL,
+ &max1363_trigger_handler, &max1363_buffered_setup_ops);
if (ret)
goto error_free_available_scan_masks;
- ret = iio_buffer_register(indio_dev,
- st->chip_info->channels,
- st->chip_info->num_channels);
- if (ret)
- goto error_cleanup_buffer;
-
if (client->irq) {
ret = request_threaded_irq(st->client->irq,
NULL,
if (client->irq)
free_irq(st->client->irq, indio_dev);
error_uninit_buffer:
- iio_buffer_unregister(indio_dev);
-error_cleanup_buffer:
- max1363_buffer_cleanup(indio_dev);
+ iio_triggered_buffer_cleanup(indio_dev);
error_free_available_scan_masks:
kfree(indio_dev->available_scan_masks);
error_disable_reg:
return ret;
}
- static int __devexit max1363_remove(struct i2c_client *client)
+ static int max1363_remove(struct i2c_client *client)
{
struct iio_dev *indio_dev = i2c_get_clientdata(client);
struct max1363_state *st = iio_priv(indio_dev);
iio_device_unregister(indio_dev);
if (client->irq)
free_irq(st->client->irq, indio_dev);
- iio_buffer_unregister(indio_dev);
- max1363_buffer_cleanup(indio_dev);
+ iio_triggered_buffer_cleanup(indio_dev);
kfree(indio_dev->available_scan_masks);
regulator_disable(st->reg);
regulator_put(st->reg);
.name = "max1363",
},
.probe = max1363_probe,
- .remove = __devexit_p(max1363_remove),
+ .remove = max1363_remove,
.id_table = max1363_id,
};
module_i2c_driver(max1363_driver);
#include <linux/iio/buffer.h>
#include <linux/iio/trigger_consumer.h>
#include <linux/iio/triggered_buffer.h>
-#include "../common/hid-sensors/hid-sensor-attributes.h"
#include "../common/hid-sensors/hid-sensor-trigger.h"
/*Format: HID-SENSOR-usage_id_in_hex*/
struct gyro_3d_state {
struct hid_sensor_hub_callbacks callbacks;
- struct hid_sensor_iio_common common_attributes;
+ struct hid_sensor_common common_attributes;
struct hid_sensor_hub_attribute_info gyro[GYRO_3D_CHANNEL_MAX];
u32 gyro_val[GYRO_3D_CHANNEL_MAX];
};
}
/* Function to initialize the processing for usage id */
- static int __devinit hid_gyro_3d_probe(struct platform_device *pdev)
+ static int hid_gyro_3d_probe(struct platform_device *pdev)
{
int ret = 0;
static const char *name = "gyro_3d";
}
/* Function to deinitialize the processing for usage id */
- static int __devinit hid_gyro_3d_remove(struct platform_device *pdev)
+ static int hid_gyro_3d_remove(struct platform_device *pdev)
{
struct hid_sensor_hub_device *hsdev = pdev->dev.platform_data;
struct iio_dev *indio_dev = platform_get_drvdata(pdev);
#include <linux/iio/buffer.h>
#include <linux/iio/trigger_consumer.h>
#include <linux/iio/triggered_buffer.h>
-#include "../common/hid-sensors/hid-sensor-attributes.h"
#include "../common/hid-sensors/hid-sensor-trigger.h"
/*Format: HID-SENSOR-usage_id_in_hex*/
struct als_state {
struct hid_sensor_hub_callbacks callbacks;
- struct hid_sensor_iio_common common_attributes;
+ struct hid_sensor_common common_attributes;
struct hid_sensor_hub_attribute_info als_illum;
u32 illum;
};
}
/* Function to initialize the processing for usage id */
- static int __devinit hid_als_probe(struct platform_device *pdev)
+ static int hid_als_probe(struct platform_device *pdev)
{
int ret = 0;
static const char *name = "als";
}
/* Function to deinitialize the processing for usage id */
- static int __devinit hid_als_remove(struct platform_device *pdev)
+ static int hid_als_remove(struct platform_device *pdev)
{
struct hid_sensor_hub_device *hsdev = pdev->dev.platform_data;
struct iio_dev *indio_dev = platform_get_drvdata(pdev);
#include <linux/iio/buffer.h>
#include <linux/iio/trigger_consumer.h>
#include <linux/iio/triggered_buffer.h>
-#include "../common/hid-sensors/hid-sensor-attributes.h"
#include "../common/hid-sensors/hid-sensor-trigger.h"
/*Format: HID-SENSOR-usage_id_in_hex*/
struct magn_3d_state {
struct hid_sensor_hub_callbacks callbacks;
- struct hid_sensor_iio_common common_attributes;
+ struct hid_sensor_common common_attributes;
struct hid_sensor_hub_attribute_info magn[MAGN_3D_CHANNEL_MAX];
u32 magn_val[MAGN_3D_CHANNEL_MAX];
};
}
/* Function to initialize the processing for usage id */
- static int __devinit hid_magn_3d_probe(struct platform_device *pdev)
+ static int hid_magn_3d_probe(struct platform_device *pdev)
{
int ret = 0;
static char *name = "magn_3d";
}
/* Function to deinitialize the processing for usage id */
- static int __devinit hid_magn_3d_remove(struct platform_device *pdev)
+ static int hid_magn_3d_remove(struct platform_device *pdev)
{
struct hid_sensor_hub_device *hsdev = pdev->dev.platform_data;
struct iio_dev *indio_dev = platform_get_drvdata(pdev);
This driver can also be built as a module. If so, the module
will be called rtc-twl.
+ config RTC_DRV_TPS6586X
+ tristate "TI TPS6586X RTC driver"
+ depends on MFD_TPS6586X
+ help
+ TI Power Managment IC TPS6586X supports RTC functionality
+ along with alarm. This driver supports the RTC driver for
+ the TPS6586X RTC module.
+
config RTC_DRV_TPS65910
tristate "TI TPS65910 RTC driver"
depends on RTC_CLASS && MFD_TPS65910
This driver can also be built as a module, if so, the module
will be called "rtc-snvs".
+comment "HID Sensor RTC drivers"
+
+config RTC_DRV_HID_SENSOR_TIME
+ tristate "HID Sensor Time"
+ depends on USB_HID
+ select IIO
+ select HID_SENSOR_HUB
+ select HID_SENSOR_IIO_COMMON
+ help
+ Say yes here to build support for the HID Sensors of type Time.
+ This drivers makes such sensors available as RTCs.
+
+ If this driver is compiled as a module, it will be named
+ rtc-hid-sensor-time.
+
+
endif # RTC_CLASS
obj-$(CONFIG_RTC_DRV_EP93XX) += rtc-ep93xx.o
obj-$(CONFIG_RTC_DRV_FM3130) += rtc-fm3130.o
obj-$(CONFIG_RTC_DRV_GENERIC) += rtc-generic.o
+obj-$(CONFIG_RTC_DRV_HID_SENSOR_TIME) += rtc-hid-sensor-time.o
obj-$(CONFIG_RTC_DRV_IMXDI) += rtc-imxdi.o
obj-$(CONFIG_RTC_DRV_ISL1208) += rtc-isl1208.o
obj-$(CONFIG_RTC_DRV_ISL12022) += rtc-isl12022.o
obj-$(CONFIG_RTC_DRV_TEST) += rtc-test.o
obj-$(CONFIG_RTC_DRV_TILE) += rtc-tile.o
obj-$(CONFIG_RTC_DRV_TWL4030) += rtc-twl.o
+ obj-$(CONFIG_RTC_DRV_TPS6586X) += rtc-tps6586x.o
obj-$(CONFIG_RTC_DRV_TPS65910) += rtc-tps65910.o
obj-$(CONFIG_RTC_DRV_TX4939) += rtc-tx4939.o
obj-$(CONFIG_RTC_DRV_V3020) += rtc-v3020.o
"mxs-lradc-button1",
};
-struct mxs_lradc_chan {
- uint8_t slot;
- uint8_t flags;
-};
-
struct mxs_lradc {
struct device *dev;
void __iomem *base;
struct mutex lock;
- uint8_t enable;
-
struct completion completion;
};
struct mxs_lradc *lradc = iio_priv(iio);
const uint32_t chan_value = LRADC_CH_ACCUMULATE |
((LRADC_DELAY_TIMER_LOOP - 1) << LRADC_CH_NUM_SAMPLES_OFFSET);
- int i, j = 0;
+ unsigned int i, j = 0;
for_each_set_bit(i, iio->active_scan_mask, iio->masklength) {
lradc->buffer[j] = readl(lradc->base + LRADC_CH(j));
/* this should be after _get_paddr() to ensure we have pages attached */
omap_gem_dma_sync(obj, dir);
-out:
- if (ret)
- return ERR_PTR(ret);
return sg;
+out:
+ kfree(sg);
+ return ERR_PTR(ret);
}
static void omap_gem_unmap_dma_buf(struct dma_buf_attachment *attachment,
obj = buffer->priv;
/* is it from our device? */
if (obj->dev == dev) {
+ /*
+ * Importing dmabuf exported from out own gem increases
+ * refcount on gem itself instead of f_count of dmabuf.
+ */
drm_gem_object_reference(obj);
+ dma_buf_put(buffer);
return obj;
}
}
state = uart_get(drv, line);
- mtpt = (struct mp_port *)state->port;
-
if (IS_ERR(state)) {
retval = PTR_ERR(state);
goto fail;
}
+ mtpt = (struct mp_port *)state->port;
+
tty->driver_data = state;
tty->low_latency = (state->port->flags & UPF_LOW_LATENCY) ? 1 : 0;
tty->alt_speed = 0;
printk("IIR_RET = %x\n",b_ret);
}
- if(IIR_RS232 == (b_ret & IIR_RS232))
- {
- mtpt->interface = RS232;
- }
- if(IIR_RS422 == (b_ret & IIR_RS422))
- {
+ /* default to RS232 */
+ mtpt->interface = RS232;
+ if (IIR_RS422 == (b_ret & IIR_TYPE_MASK))
mtpt->interface = RS422PTP;
- }
- if(IIR_RS485 == (b_ret & IIR_RS485))
- {
+ if (IIR_RS485 == (b_ret & IIR_TYPE_MASK))
mtpt->interface = RS485NE;
- }
}
}
}
sbdev->nr_ports = ((portnum_hex/16)*10) + (portnum_hex % 16);
}
break;
- #ifdef CONFIG_PARPORT
+ #ifdef CONFIG_PARPORT_PC
case PCI_DEVICE_ID_MP2S1P :
sbdev->nr_ports = 2;
} SRSNCapObject, *PSRSNCapObject;
// BSS info(AP)
- #pragma pack(1)
typedef struct tagKnownBSS {
// BSS info
BOOL bActive;
unsigned int uClearCount;
// BYTE abyIEs[WLAN_BEACON_FR_MAXLEN];
unsigned int uIELength;
- QWORD qwBSSTimestamp;
- QWORD qwLocalTSF; // local TSF timer
+ u64 qwBSSTimestamp;
+ u64 qwLocalTSF;/* local TSF timer */
CARD_PHY_TYPE eNetworkTypeInUse;
/*--------------------- Export Functions --------------------------*/
-PKnownBSS BSSpSearchBSSList(void *hDeviceContext,
- PBYTE pbyDesireBSSID,
- PBYTE pbyDesireSSID,
- CARD_PHY_TYPE ePhyType);
-
-PKnownBSS BSSpAddrIsInBSSList(void *hDeviceContext,
- PBYTE abyBSSID,
- PWLAN_IE_SSID pSSID);
-
-void BSSvClearBSSList(void *hDeviceContext, BOOL bKeepCurrBSSID);
-
-BOOL BSSbInsertToBSSList(void *hDeviceContext,
- PBYTE abyBSSIDAddr,
- QWORD qwTimestamp,
- WORD wBeaconInterval,
- WORD wCapInfo,
- BYTE byCurrChannel,
- PWLAN_IE_SSID pSSID,
- PWLAN_IE_SUPP_RATES pSuppRates,
- PWLAN_IE_SUPP_RATES pExtSuppRates,
- PERPObject psERP,
- PWLAN_IE_RSN pRSN,
- PWLAN_IE_RSN_EXT pRSNWPA,
- PWLAN_IE_COUNTRY pIE_Country,
- PWLAN_IE_QUIET pIE_Quiet,
- unsigned int uIELength,
- PBYTE pbyIEs,
- void *pRxPacketContext);
-
-BOOL BSSbUpdateToBSSList(void *hDeviceContext,
- QWORD qwTimestamp,
- WORD wBeaconInterval,
- WORD wCapInfo,
- BYTE byCurrChannel,
- BOOL bChannelHit,
- PWLAN_IE_SSID pSSID,
- PWLAN_IE_SUPP_RATES pSuppRates,
- PWLAN_IE_SUPP_RATES pExtSuppRates,
- PERPObject psERP,
- PWLAN_IE_RSN pRSN,
- PWLAN_IE_RSN_EXT pRSNWPA,
- PWLAN_IE_COUNTRY pIE_Country,
- PWLAN_IE_QUIET pIE_Quiet,
- PKnownBSS pBSSList,
- unsigned int uIELength,
- PBYTE pbyIEs,
- void *pRxPacketContext);
-
-BOOL BSSbIsSTAInNodeDB(void *hDeviceContext,
- PBYTE abyDstAddr,
- unsigned int *puNodeIndex);
-
-void BSSvCreateOneNode(void *hDeviceContext, unsigned int *puNodeIndex);
-
-void BSSvUpdateAPNode(void *hDeviceContext,
- PWORD pwCapInfo,
- PWLAN_IE_SUPP_RATES pItemRates,
- PWLAN_IE_SUPP_RATES pExtSuppRates);
-
-void BSSvSecondCallBack(void *hDeviceContext);
-
-void BSSvUpdateNodeTxCounter(void *hDeviceContext,
- PSStatCounter pStatistic,
- BYTE byTSR,
- BYTE byPktNO);
-
-void BSSvRemoveOneNode(void *hDeviceContext,
- unsigned int uNodeIndex);
-
-void BSSvAddMulticastNode(void *hDeviceContext);
-
-void BSSvClearNodeDBTable(void *hDeviceContext,
- unsigned int uStartIndex);
-
-void BSSvClearAnyBSSJoinRecord(void *hDeviceContext);
+PKnownBSS BSSpSearchBSSList(struct vnt_private *, u8 *pbyDesireBSSID,
+ u8 *pbyDesireSSID, CARD_PHY_TYPE ePhyType);
+
+PKnownBSS BSSpAddrIsInBSSList(struct vnt_private *, u8 *abyBSSID,
+ PWLAN_IE_SSID pSSID);
+
+void BSSvClearBSSList(struct vnt_private *, int bKeepCurrBSSID);
+
+int BSSbInsertToBSSList(struct vnt_private *,
+ u8 *abyBSSIDAddr,
+ u64 qwTimestamp,
+ u16 wBeaconInterval,
+ u16 wCapInfo,
+ u8 byCurrChannel,
+ PWLAN_IE_SSID pSSID,
+ PWLAN_IE_SUPP_RATES pSuppRates,
+ PWLAN_IE_SUPP_RATES pExtSuppRates,
+ PERPObject psERP,
+ PWLAN_IE_RSN pRSN,
+ PWLAN_IE_RSN_EXT pRSNWPA,
+ PWLAN_IE_COUNTRY pIE_Country,
+ PWLAN_IE_QUIET pIE_Quiet,
+ u32 uIELength,
+ u8 *pbyIEs,
+ void *pRxPacketContext);
+
+int BSSbUpdateToBSSList(struct vnt_private *,
+ u64 qwTimestamp,
+ u16 wBeaconInterval,
+ u16 wCapInfo,
+ u8 byCurrChannel,
+ int bChannelHit,
+ PWLAN_IE_SSID pSSID,
+ PWLAN_IE_SUPP_RATES pSuppRates,
+ PWLAN_IE_SUPP_RATES pExtSuppRates,
+ PERPObject psERP,
+ PWLAN_IE_RSN pRSN,
+ PWLAN_IE_RSN_EXT pRSNWPA,
+ PWLAN_IE_COUNTRY pIE_Country,
+ PWLAN_IE_QUIET pIE_Quiet,
+ PKnownBSS pBSSList,
+ u32 uIELength,
+ u8 *pbyIEs,
+ void *pRxPacketContext);
+
+int BSSbIsSTAInNodeDB(struct vnt_private *, PBYTE abyDstAddr,
+ u32 *puNodeIndex);
+
+void BSSvCreateOneNode(struct vnt_private *, u32 *puNodeIndex);
+
+void BSSvUpdateAPNode(struct vnt_private *, u16 *pwCapInfo,
+ PWLAN_IE_SUPP_RATES pItemRates, PWLAN_IE_SUPP_RATES pExtSuppRates);
+
+void BSSvSecondCallBack(struct vnt_private *);
+
+void BSSvUpdateNodeTxCounter(struct vnt_private *, PSStatCounter pStatistic,
+ u8 byTSR, u8 byPktNO);
+
+void BSSvRemoveOneNode(struct vnt_private *, u32 uNodeIndex);
+
+void BSSvAddMulticastNode(struct vnt_private *);
+
+void BSSvClearNodeDBTable(struct vnt_private *, u32 uStartIndex);
+
+void BSSvClearAnyBSSJoinRecord(struct vnt_private *);
#endif /* __BSSDB_H__ */
#include "device.h"
/*--------------------- Export Definitions -------------------------*/
- #pragma pack(1)
typedef struct tagSINTData {
BYTE byTSR0;
BYTE byPkt0;
BYTE byTSR3;
BYTE byPkt3;
WORD wTime3;
- u32 dwLoTSF;
- u32 dwHiTSF;
+ u64 qwTSF;
BYTE byISR0;
BYTE byISR1;
BYTE byRTSSuccess;
/*--------------------- Export Functions --------------------------*/
-void INTvWorkItem(void *Context);
-void INTnsProcessData(PSDevice pDevice);
+void INTvWorkItem(struct vnt_private *);
+void INTnsProcessData(struct vnt_private *);
#endif /* __INT_H__ */
/* SSID */
req->ssid.status = P80211ENUM_msgitem_status_data_ok;
req->ssid.data.len = le16_to_cpu(item->ssid.len);
- req->ssid.data.len = min_t(u16, req->ssid.data.len, WLAN_BSSID_LEN);
+ req->ssid.data.len = min_t(u16, req->ssid.data.len, WLAN_SSID_MAXLEN);
memcpy(req->ssid.data.data, item->ssid.data, req->ssid.data.len);
/* supported rates */
break;
#define REQBASICRATE(N) \
- if ((count >= N) && DOT11_RATE5_ISBASIC_GET(item->supprates[(N)-1])) { \
- req->basicrate ## N .data = item->supprates[(N)-1]; \
- req->basicrate ## N .status = \
- P80211ENUM_msgitem_status_data_ok; \
- }
+ do { \
+ if ((count >= N) && DOT11_RATE5_ISBASIC_GET( \
+ item->supprates[(N)-1])) { \
+ req->basicrate ## N .data = item->supprates[(N)-1]; \
+ req->basicrate ## N .status = \
+ P80211ENUM_msgitem_status_data_ok; \
+ } \
+ } while (0)
REQBASICRATE(1);
REQBASICRATE(2);
REQBASICRATE(8);
#define REQSUPPRATE(N) \
- if (count >= N) { \
- req->supprate ## N .data = item->supprates[(N)-1]; \
- req->supprate ## N .status = \
- P80211ENUM_msgitem_status_data_ok; \
- }
+ do { \
+ if (count >= N) { \
+ req->supprate ## N .data = item->supprates[(N)-1]; \
+ req->supprate ## N .status = \
+ P80211ENUM_msgitem_status_data_ok; \
+ } \
+ } while (0)
REQSUPPRATE(1);
REQSUPPRATE(2);
/* Enable the port */
result = hfa384x_drvr_enable(hw, 0);
if (result) {
- pr_debug
- ("failed to enable port to presniff setting, result=%d\n",
- result);
+ pr_debug("failed to enable port to presniff setting, result=%d\n",
+ result);
goto failed;
}
} else {
hfa384x_drvr_stop(hw);
result = hfa384x_drvr_start(hw);
if (result) {
- pr_debug
- ("failed to restart the card for sniffing, result=%d\n",
- result);
+ pr_debug("failed to restart the card for sniffing, result=%d\n",
+ result);
goto failed;
}
} else {
/* Disable the port */
result = hfa384x_drvr_disable(hw, 0);
if (result) {
- pr_debug
- ("failed to enable port for sniffing, result=%d\n",
- result);
+ pr_debug("failed to enable port for sniffing, result=%d\n",
+ result);
goto failed;
}
}
struct zram *zram_devices;
/* Module params (documentation at end) */
-static unsigned int num_devices;
-
-static void zram_stat_inc(u32 *v)
-{
- *v = *v + 1;
-}
-
-static void zram_stat_dec(u32 *v)
-{
- *v = *v - 1;
-}
+static unsigned int num_devices = 1;
static void zram_stat64_add(struct zram *zram, u64 *v, u64 inc)
{
"\tMemory Size: %zu kB\n"
"\tSize you selected: %llu kB\n"
"Continuing anyway ...\n",
- totalram_bytes >> 10, zram->disksize
- );
+ totalram_bytes >> 10, zram->disksize >> 10);
}
zram->disksize &= PAGE_MASK;
*/
if (zram_test_flag(zram, index, ZRAM_ZERO)) {
zram_clear_flag(zram, index, ZRAM_ZERO);
- zram_stat_dec(&zram->stats.pages_zero);
+ zram->stats.pages_zero--;
}
return;
}
if (unlikely(size > max_zpage_size))
- zram_stat_dec(&zram->stats.bad_compress);
+ zram->stats.bad_compress--;
zs_free(zram->mem_pool, handle);
if (size <= PAGE_SIZE / 2)
- zram_stat_dec(&zram->stats.good_compress);
+ zram->stats.good_compress--;
zram_stat64_sub(zram, &zram->stats.compr_size,
zram->table[index].size);
- zram_stat_dec(&zram->stats.pages_stored);
+ zram->stats.pages_stored--;
zram->table[index].handle = 0;
zram->table[index].size = 0;
static int zram_bvec_write(struct zram *zram, struct bio_vec *bvec, u32 index,
int offset)
{
- int ret;
+ int ret = 0;
size_t clen;
unsigned long handle;
struct page *page;
goto out;
}
ret = zram_decompress_page(zram, uncmem, index);
- if (ret) {
- kfree(uncmem);
+ if (ret)
goto out;
- }
}
/*
user_mem = kmap_atomic(page);
- if (is_partial_io(bvec))
+ if (is_partial_io(bvec)) {
memcpy(uncmem + offset, user_mem + bvec->bv_offset,
bvec->bv_len);
- else
+ kunmap_atomic(user_mem);
+ user_mem = NULL;
+ } else {
uncmem = user_mem;
+ }
if (page_zero_filled(uncmem)) {
- if (!is_partial_io(bvec))
- kunmap_atomic(user_mem);
- zram_stat_inc(&zram->stats.pages_zero);
+ kunmap_atomic(user_mem);
+ if (is_partial_io(bvec))
+ kfree(uncmem);
+ zram->stats.pages_zero++;
zram_set_flag(zram, index, ZRAM_ZERO);
ret = 0;
goto out;
ret = lzo1x_1_compress(uncmem, PAGE_SIZE, src, &clen,
zram->compress_workmem);
- kunmap_atomic(user_mem);
- if (is_partial_io(bvec))
- kfree(uncmem);
+ if (!is_partial_io(bvec)) {
+ kunmap_atomic(user_mem);
+ user_mem = NULL;
+ uncmem = NULL;
+ }
if (unlikely(ret != LZO_E_OK)) {
pr_err("Compression failed! err=%d\n", ret);
}
if (unlikely(clen > max_zpage_size)) {
- zram_stat_inc(&zram->stats.bad_compress);
+ zram->stats.bad_compress++;
- src = uncmem;
clen = PAGE_SIZE;
+ src = NULL;
+ if (is_partial_io(bvec))
+ src = uncmem;
}
handle = zs_malloc(zram->mem_pool, clen);
}
cmem = zs_map_object(zram->mem_pool, handle, ZS_MM_WO);
+ if ((clen == PAGE_SIZE) && !is_partial_io(bvec))
+ src = kmap_atomic(page);
memcpy(cmem, src, clen);
+ if ((clen == PAGE_SIZE) && !is_partial_io(bvec))
+ kunmap_atomic(src);
zs_unmap_object(zram->mem_pool, handle);
/* Update stats */
zram_stat64_add(zram, &zram->stats.compr_size, clen);
- zram_stat_inc(&zram->stats.pages_stored);
+ zram->stats.pages_stored++;
if (clen <= PAGE_SIZE / 2)
- zram_stat_inc(&zram->stats.good_compress);
+ zram->stats.good_compress++;
- return 0;
-
out:
+ if (is_partial_io(bvec))
+ kfree(uncmem);
+
if (ret)
zram_stat64_inc(zram, &zram->stats.failed_writes);
return ret;
goto out;
}
- if (!num_devices) {
- pr_info("num_devices not specified. Using default: 1\n");
- num_devices = 1;
- }
-
/* Allocate the device array and initialize each one */
- pr_info("Creating %u devices ...\n", num_devices);
zram_devices = kzalloc(num_devices * sizeof(struct zram), GFP_KERNEL);
if (!zram_devices) {
ret = -ENOMEM;
goto free_devices;
}
+ pr_info("Created %u device(s) ...\n", num_devices);
+
return 0;
free_devices: