08 Mar, 2011

1 commit

  • This patch implements PRUSS (Programmable Real-time Unit Sub System)
    UIO driver which exports SOC resources associated with PRUSS like
    I/O, memories and IRQs to user space. PRUSS is dual 32-bit RISC
    processors which is efficient in performing embedded tasks that
    require manipulation of packed memory mapped data structures and
    handling system events that have tight real time constraints. This
    driver is currently supported on Texas Instruments DA850, AM18xx and
    OMAP-L138 devices.
    For example, PRUSS runs firmware for real-time critical industrial
    communication data link layer and communicates with application stack
    running in user space via shared memory and IRQs.

    Signed-off-by: Pratheesh Gangadhar
    Reviewed-by: Thomas Gleixner
    Reviewed-by: Arnd Bergmann
    Signed-off-by: Hans J. Koch
    Signed-off-by: Greg Kroah-Hartman

    Pratheesh Gangadhar
     

08 Mar, 2010

2 commits

  • Ben Nizette, the author of this driver, told me in a private mail that this
    project has been cancelled. He suggested to remove the driver for now, and
    will come back with a new version should the hardware really exist.
    This patch completely removes the driver.

    Signed-off-by: Hans J. Koch
    Acked-by: Ben Nizette
    Signed-off-by: Greg Kroah-Hartman

    Hans J. Koch
     
  • This patch adds a Userspace IO driver for netX-based fieldbus cards by
    Hilscher (see http://www.hilscher.com). ATM, cifX and comX cards are
    supported. The userspace part for this driver is provided by Hilscher
    and should come with the card.
    The driver is in use for several months now and has been tested by
    people at Hilscher and Linutronix.

    Signed-off-by: Hans J. Koch
    Signed-off-by: Greg Kroah-Hartman

    Hans J. Koch
     

16 Sep, 2009

1 commit

  • This adds a generic uio driver that can bind to any PCI device. First
    user will be virtualization where a qemu userspace process needs to give
    guest OS access to the device.

    Interrupts are handled using the Interrupt Disable bit in the PCI
    command register and Interrupt Status bit in the PCI status register.
    All devices compliant to PCI 2.3 (circa 2002) and all compliant PCI
    Express devices should support these bits. Driver detects this support,
    and won't bind to devices which do not support the Interrupt Disable Bit
    in the command register.

    It's expected that more features of interest to virtualization will be
    added to this driver in the future. Possibilities are: mmap for device
    resources, MSI/MSI-X, eventfd (to interface with kvm), iommu.

    Signed-off-by: Michael S. Tsirkin
    Acked-by: Chris Wright
    Signed-off-by: Hans J. Koch
    Acked-by: Jesse Barnes
    Signed-off-by: Greg Kroah-Hartman

    Michael S. Tsirkin
     

25 Mar, 2009

1 commit

  • UIO driver for the Adrienne Electronics Corporation PCI time code
    device.

    This device differs from other UIO devices since it uses I/O ports instead of
    memory mapped I/O. In order to make it possible for UIO to work with this
    device a utility, uioport, can be used to read and write the ports.

    uioport is designed to be a setuid program and checks the permissions of
    the /dev/uio* node and if the user has write permissions it will use
    iopl and out*/in* to access the device.

    [1] git clone git://ifup.org/philips/uioport.git

    Signed-off-by: Brandon Philips
    Signed-off-by: Hans J. Koch
    Signed-off-by: Greg Kroah-Hartman

    Brandon Philips
     

17 Oct, 2008

1 commit

  • 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
    Signed-off-by: Hans J. Koch
    Signed-off-by: Greg Kroah-Hartman

    John Ogness
     

22 Aug, 2008

1 commit

  • 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
    Signed-off-by: Hans J. Koch
    Signed-off-by: Greg Kroah-Hartman

    Magnus Damm
     

22 Jul, 2008

1 commit

  • 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
    Signed-off-by: Hans J. Koch
    Signed-off-by: Greg Kroah-Hartman

    Uwe Kleine-König
     

20 Apr, 2008

1 commit

  • 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
    Acked-by: Paul Mundt
    Signed-off-by: Hans J Koch
    Signed-off-by: Greg Kroah-Hartman

    Ben Nizette
     

19 Jul, 2007

2 commits

  • 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
    Signed-off-by: Greg Kroah-Hartman

    Hans-Jürgen Koch
     
  • 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
    Cc: Thomas Gleixner
    Cc: Benedikt Spranger
    Signed-off-by: Greg Kroah-Hartman

    Hans J. Koch