aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/uio
Commit message (Collapse)AuthorAge
* saner FASYNC handling on file closeAl Viro2008-11-01
| | | | | | | | | | | | | | As it is, all instances of ->release() for files that have ->fasync() need to remember to evict file from fasync lists; forgetting that creates a hole and we actually have a bunch that *does* forget. So let's keep our lives simple - let __fput() check FASYNC in file->f_flags and call ->fasync() there if it's been set. And lose that crap in ->release() instances - leaving it there is still valid, but we don't have to bother anymore. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* Merge branch 'bkl-removal' of git://git.lwn.net/linux-2.6Linus Torvalds2008-10-20
|\ | | | | | | | | * 'bkl-removal' of git://git.lwn.net/linux-2.6: UIO: BKL removal
| * UIO: BKL removalJonathan Corbet2008-10-16
| | | | | | | | | | | | | | | | | | | | Fill in needed locking around idr accesses, then remove the big kernel lock from the UIO driver. Since there are no in-tree UIO drivers with open() methods, no further BKL pushdown is required. Acked-by: Hans J. Koch <hjk@linutronix.de> Acked-by: Greg Kroah-Hartman <gregkh@suse.de> Signed-off-by: Jonathan Corbet <corbet@lwn.net>
* | UIO: Fix mapping of logical and virtual memoryAndrew G. Harvey2008-10-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | mmap() doesn't work as expected for UIO_MEM_LOGICAL or UIO_MEM_VIRTUAL mappings. The offset into the memory needs to be added, otherwise uio_vma_fault always returns the first page only. Note that for UIO userspace calls mmap() with offset = N * getpagesize() to access mapping N. This must be compensated when calculating the offset. A comment was added to explain this since it is not obvious. Signed-off-by: Andrew G. Harvey <agh@cisco.com> Signed-off-by: Hans J. Koch <hjk@linutronix.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* | UIO: add automata sercos3 pci card supportJohn Ogness2008-10-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Here is a new version of the patch to support the Automata Sercos III PCI card driver. I now check that the IRQ is enabled before accepting the interrupt. I still use a logical OR to store the enabled interrupts and I've added a second use of a logical OR when restoring the enabled interrupts. I added an explanation of why I do this in comments at the top of the source file. Since I use a logical OR, I also removed the extra checks if the Interrupt Enable Register and ier0_cache are 0. Signed-off-by: John Ogness <john.ogness@linutronix.de> Signed-off-by: Hans J. Koch <hjk@linutronix.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* | UIO: Change driver name of uio_pdrvHans J. Koch2008-10-16
| | | | | | | | | | | | | | | | | | | | | | The generic UIO platform device driver should be given a unique driver ID and not just "uio". This is especially important since we now have a similar driver named uio_pdrv_genirq. Currently, there's no user of this driver in the mainline kernel. Signed-off-by: Hans J. Koch <hjk@linutronix.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* | UIO: Add alignment warnings for uio-memHans J. Koch2008-10-16
| | | | | | | | | | | | | | | | | | | | This patch adds an "offset" attribute for UIO mappings. It shows the difference between the actual start address of the memory and the start address of the page. Signed-off-by: Hans J. Koch <hjk@linutronix.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* | device create: misc: convert device_create_drvdata to device_createGreg Kroah-Hartman2008-10-16
|/ | | | | | | | Now that device_create() has been audited, rename things back to the original call to be sane. Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* UIO: generic irq handling for some uio platform devicesMagnus Damm2008-08-21
| | | | | | | | | | | | | | | | | | | | | | | This is V3 of uio_pdrv_genirq.c, a platform driver for UIO with generic IRQ handling code. This driver is very similar to the regular UIO platform driver, but is only suitable for devices that are connected to the interrupt controller using unique interrupt lines. The uio_pdrv_genirq driver includes generic interrupt handling code which disables the serviced interrupt in the interrupt controller and makes the user space driver responsible for acknowledging the interrupt in the device and reenabling the interrupt in the interrupt controller. Shared interrupts are not supported since the in-kernel interrupt handler will disable the interrupt line in the interrupt controller, and in a shared interrupt configuration this will stop other devices from delivering interrupts. Signed-off-by: Magnus Damm <damm@igel.co.jp> Signed-off-by: Hans J. Koch <hjk@linutronix.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* UIO: uio_pdrv: fix license specificationUwe Kleine-König2008-08-21
| | | | | | | | | | Thanks to Magnus Damm for pointing that out. Signed-off-by: Uwe Kleine-König <Uwe.Kleine-Koenig@digi.com> Cc: Magnus Damm <magnus.damm@gmail.com> Acked-by: Hans J. Koch <hjk@linutronix.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* UIO: uio_pdrv: fix memory leakUwe Kleine-König2008-08-21
| | | | | | | | | | Thanks to Magnus Damm for pointing that out. Signed-off-by: Uwe Kleine-König <Uwe.Kleine-Koenig@digi.com> Cc: Magnus Damm <magnus.damm@gmail.com> Acked-by: Hans J. Koch <hjk@linutronix.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* UIO: add generic UIO platform driverUwe Kleine-König2008-07-22
| | | | | | | | | | | | | This patch adds a generic UIO platform driver. It eliminates the need for a dedicated kernel module for simple platform devices. Users only need to implement their irq handler in platform code and fill a struct uio_info there. This helps avoiding code duplication as UIO platform drivers often share a lot of common code. Signed-off-by: Uwe Kleine-König <Uwe.Kleine-Koenig@digi.com> Signed-off-by: Hans J. Koch <hjk@linutronix.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* UIO: Add write function to allow irq maskingHans J. Koch2008-07-22
| | | | | | | | | | | | | | Sometimes it is necessary to enable/disable the interrupt of a UIO device from the userspace part of the driver. With this patch, the UIO kernel driver can implement an "irqcontrol()" function that does this. Userspace can write an s32 value to /dev/uioX (usually 0 or 1 to turn the irq off or on). The UIO core will then call the driver's irqcontrol function. Signed-off-by: Hans J. Koch <hjk@linutronix.de> Acked-by: Uwe Kleine-König <Uwe.Kleine-Koenig@digi.com> Acked-by: Magnus Damm <damm@igel.co.jp> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* UIO: fix UIO Kconfig dependenciesUwe Kleine-König2008-07-22
| | | | | | | | | | | ae210f188614bb3d1ee3f19c64e28e3cdd44877c introduced a big "if UIO"/"endif" where all uio drivers are defined. So know there is no need for them to depend explicitly on UIO. Signed-off-by: Uwe Kleine-König <Uwe.Kleine-Koenig@digi.com> Signed-off-by: Hans J. Koch <hjk@linutronix.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* Merge commit 'v2.6.26' into bkl-removalJonathan Corbet2008-07-14
|\
| * UIO: fix race in device_createGreg Kroah-Hartman2008-05-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There is a race from when a device is created with device_create() and then the drvdata is set with a call to dev_set_drvdata() in which a sysfs file could be open, yet the drvdata will be NULL, causing all sorts of bad things to happen. This patch fixes the problem by using the new function, device_create_drvdata(). Cc: Kay Sievers <kay.sievers@vrfy.org> Cc: Hans J. Koch <hjk@linutronix.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* | UIO: cdev lock_kernel() pushdownJonathan Corbet2008-06-20
|/ | | | Signed-off-by: Jonathan Corbet <corbet@lwn.net>
* UIO: hold a reference to the device's owner while the device is openUwe Kleine-König2008-04-19
| | | | | | | | | | Otherwise the device might just disappear while /dev/uioX is being used which results in an Oops. Signed-off-by: Uwe Kleine-König <Uwe.Kleine-Koenig@digi.com> Signed-off-by: Hans J Koch <hjk@linutronix.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* UIO: Implement a UIO interface for the SMX CryptengineBen Nizette2008-04-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch implements a UIO interface for the SMX Cryptengine. The Cryptengine found on the Nias Digital SMX board is best suited for a UIO interface. It is not wired in to the cryptographic API as the engine handles it's own keys, algorithms, everything. All that we know about is that if there's room in the buffer, you can write data to it and when there's data ready, you read it out again. There isn't necessarily even any direct correlation between data going in and data coming out again, the engine may consume or generate data all on its own. This driver is for proprietary hardware but we're always told to submit the drivers anyway; here you are. :-) This is version 4 of this patch and addresses all issues raised by Hans-Jürgen Koch and Paul Mundt in their reviews. Slightly altered is Paul's suggestion to use DRV_NAME and DRV_VERSION as the UIO version and name. While at the moment they are the same, there is no reason for them to stay that way. Nevertheless we now at least provide a MODULE_VERSION macro to keep modinfo happy. Signed-off-by: Ben Nizette <bn@niasdigital.com> Acked-by: Paul Mundt <lethal@linux-sh.org> Signed-off-by: Hans J Koch <hjk@linutronix.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* UIO: Remove needless PCI_DEVICE_ID definition from uio_cif.cHans-Jürgen Koch2008-04-19
| | | | | | | | | | | Meanwhile, PCI_DEVICE_ID_PLX_9030 is defined in pci_ids.h, no need to define it again in the driver. Signed-off-by: Hans J. Koch <hjk@linutronix.de> CC: Benedikt Spranger <b.spranger@linutronix.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* uio: mark pci_device_id hilscher_pci_ids[] __devinitdataDenis Cheng2008-04-19
| | | | | | | Signed-off-by: Denis Cheng <crquan@gmail.com> Signed-off-by: Hans J. Koch <hjk@linutronix.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* uio: Kconfig improvementsDenis Cheng2008-04-19
| | | | | | | Signed-off-by: Denis Cheng <crquan@gmail.com> Signed-off-by: Hans J. Koch <hjk@linutronix.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* UIO: add pgprot_noncached() to UIO mmap codeJean-Samuel Chenard2008-03-25
| | | | | | | | | | | | Mapping of physical memory in UIO needs pgprot_noncached() to ensure that IO memory is not cached. Without pgprot_noncached(), it (accidentally) works on x86 and arm, but fails on PPC. Signed-off-by: Jean-Samuel Chenard <jsamch@gmail.com> Signed-off-by: Hans J Koch <hjk@linutronix.de> Cc: stable <stable@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* UIO: fix Greg's stupid changesBrandon Philips2008-02-21
| | | | | | | | | | | | | | | | | This fixes two bugs with UIO that cropped up recently in -rc1 1) WARNING: at fs/sysfs/file.c:334 sysfs_open_file when trying to open a map addr/size file - complaining about missing sysfs_ops for ktype 2) Permission denied when reading uio/uio0/maps/map0/{addr,size} when files are mode S_IRUGO Also fix a typo: attr_attribute -> addr_attribute Signed-off-by: Brandon Philips <bphilips@suse.de> Signed-off-by: Hans J. Koch <hjk@linutronix.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* uio: nopageNick Piggin2008-02-06
| | | | | | | | | Convert uio from nopage to fault. Signed-off-by: Nick Piggin <npiggin@suse.de> Acked-by: Hans J Koch <hjk@linutronix.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* UIO: constify function pointer tablesJan Engelhardt2008-01-24
| | | | | | Signed-off-by: Jan Engelhardt <jengelh@computergmbh.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* Kobject: convert drivers/* from kobject_unregister() to kobject_put()Greg Kroah-Hartman2008-01-24
| | | | | | | | | | | There is no need for kobject_unregister() anymore, thanks to Kay's kobject cleanup changes, so replace all instances of it with kobject_put(). Cc: Kay Sievers <kay.sievers@vrfy.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* Kobject: rename kobject_init_ng() to kobject_init()Greg Kroah-Hartman2008-01-24
| | | | | | | | | Now that the old kobject_init() function is gone, rename kobject_init_ng() to kobject_init() to clean up the namespace. Cc: Kay Sievers <kay.sievers@vrfy.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* Kobject: rename kobject_add_ng() to kobject_add()Greg Kroah-Hartman2008-01-24
| | | | | | | | | Now that the old kobject_add() function is gone, rename kobject_add_ng() to kobject_add() to clean up the namespace. Cc: Kay Sievers <kay.sievers@vrfy.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* UIO: fix kobject usageGreg Kroah-Hartman2008-01-24
| | | | | | | | | | | | | The uio kobject code is "wierd". This patch should hopefully fix it up to be sane and not leak memory anymore. Cc: Kay Sievers <kay.sievers@vrfy.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Benedikt Spranger <b.spranger@linutronix.de> Signed-off-by: Hans J. Koch <hjk@linutronix.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* kobject: remove struct kobj_type from struct ksetGreg Kroah-Hartman2008-01-24
| | | | | | | | | | | | | | | | | We don't need a "default" ktype for a kset. We should set this explicitly every time for each kset. This change is needed so that we can make ksets dynamic, and cleans up one of the odd, undocumented assumption that the kset/kobject/ktype model has. This patch is based on a lot of help from Kay Sievers. Nasty bug in the block code was found by Dave Young <hidave.darkstar@gmail.com> Cc: Kay Sievers <kay.sievers@vrfy.org> Cc: Dave Young <hidave.darkstar@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* UIO: Hilscher CIF card driverHans-Jürgen Koch2007-07-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | this is a patch that adds support for Hilscher CIF DeviceNet and Profibus cards. I tested it on a Kontron CPX board, and Thomas reviewed it. You can find the user space part here: http://www.osadl.org/projects/downloads/UIO/user/cif-0.1.0.tar.gz Notes: cif_api.c is the main file you want to look at. It contains the functions to open, close, mmap and so on. cif_dps.c adds functions specific to Profibus cards, and cif_dn.c contains functions for DeviceNet cards. cif.c is a universal playground, it's just a small test program. The user space part of this UIO driver is still work in progress, and not everything is tested yet. At the moment, the thread in cif_api.c contains some code that artificially makes the card generate interrupts, this was added for testing and will be removed later. But the driver already contains all the functions needed for useful operation, so it gives a good idea of how such a thing looks like. For comparison, here's what you get from the manufacturer (www.hilscher.com) when you ask for a Linux 2.6 driver: http://www.tglx.de/private/hjk/cif-orig-2.6.tar.bz2 WARNING: Don't look at the code for too long, you might become sick :-) Signed-off-by: Hans-Jürgen Koch <hjk@linutronix.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* UIO: Add the User IO core codeHans J. Koch2007-07-18
This interface allows the ability to write the majority of a driver in userspace with only a very small shell of a driver in the kernel itself. It uses a char device and sysfs to interact with a userspace process to process interrupts and control memory accesses. See the docbook documentation for more details on how to use this interface. From: Hans J. Koch <hjk@linutronix.de> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Benedikt Spranger <b.spranger@linutronix.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>