02 Oct, 2012

1 commit

  • Pull ARM soc driver specific changes from Olof Johansson:
    - A long-coming conversion of various platforms to a common LED
    infrastructure
    - AT91 is moved over to use the newer MCI driver for MMC
    - Pincontrol conversions for samsung platforms
    - DT bindings for gscaler on samsung
    - i2c driver fixes for tegra, acked by i2c maintainer

    Fix up conflicts as per Olof.

    * tag 'drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (48 commits)
    drivers: bus: omap_l3: use resources instead of hardcoded irqs
    pinctrl: exynos: Fix wakeup IRQ domain registration check
    pinctrl: samsung: Uninline samsung_pinctrl_get_soc_data
    pinctrl: exynos: Correct the detection of wakeup-eint node
    pinctrl: exynos: Mark exynos_irq_demux_eint as inline
    pinctrl: exynos: Handle only unmasked wakeup interrupts
    pinctrl: exynos: Fix typos in gpio/wkup _irq_mask
    pinctrl: exynos: Set pin function to EINT in irq_set_type of GPIO EINTa
    drivers: bus: Move the OMAP interconnect driver to drivers/bus/
    i2c: tegra: dynamically control fast clk
    i2c: tegra: I2_M_NOSTART functionality not supported in Tegra20
    ARM: tegra: clock: remove unused clock entry for i2c
    ARM: tegra: clock: add connection name in i2c clock entry
    i2c: tegra: pass proper name for getting clock
    ARM: tegra: clock: add i2c fast clock entry in clock table
    ARM: EXYNOS: Adds G-Scaler device from Device Tree
    ARM: EXYNOS: Add clock support for G-Scaler
    ARM: EXYNOS: Enable pinctrl driver support for EXYNOS4 device tree enabled platform
    ARM: dts: Add pinctrl node entries for SAMSUNG EXYNOS4210 SoC
    ARM: EXYNOS: skip wakeup interrupt setup if pinctrl driver is used
    ...

    Linus Torvalds
     

20 Sep, 2012

1 commit

  • The BCM2835 contains a custom interrupt controller, which supports 72
    interrupt sources using a 2-level register scheme. The interrupt
    controller, or the HW block containing it, is referred to occasionally
    as "armctrl" in the SoC documentation, hence the symbol naming in the
    code.

    This patch was extracted from git://github.com/lp0/linux.git branch
    rpi-split as of 2012/09/08, and modified as follows:

    * s/bcm2708/bcm2835/.
    * Modified device tree vendor prefix.
    * Moved implementation to drivers/irchip/.
    * Added devicetree documentation, and hence removed list of IRQs from
    bcm2835.dtsi.
    * Changed shift in MAKE_HWIRQ() and HWIRQ_BANK() from 8 to 5 to reduce
    the size of the hwirq space, and pass the total size of the hwirq space
    to irq_domain_add_linear(), rather than just the number of valid hwirqs;
    the two are different due to the hwirq space being sparse.
    * Added the interrupt controller DT node to the top-level of the DT,
    rather than nesting it inside a /axi node. Hence, changed the reg value
    since /axi had a ranges property. This seems simpler to me, but I'm not
    sure if everyone will like this change or not.
    * Don't set struct irq_domain_ops.map = irq_domain_simple_map, hence
    removing the need to patch include/linux/irqdomain.h or
    kernel/irq/irqdomain.c.
    * Simplified armctrl_of_init() using of_iomap().
    * Removed unused IS_VALID_BANK()/IS_VALID_IRQ() macros.
    * Renamed armctrl_handle_irq() to prevent possible symbol clashes.
    * Made armctrl_of_init() static.
    * Removed comment "Each bank is registered as a separate interrupt
    controller" since this is no longer true.
    * Removed FSF address from license header.
    * Added my name to copyright header.

    Signed-off-by: Chris Boot
    Signed-off-by: Simon Arlott
    Signed-off-by: Dom Cobley
    Signed-off-by: Dom Cobley
    Signed-off-by: Stephen Warren
    Acked-by: Arnd Bergmann

    Simon Arlott
     

22 Aug, 2012

1 commit

  • Adds a new driver *omap-ocp2scp*. This driver takes the responsibility of
    creating all the devices that is connected to OCP2SCP. In the case of OMAP4,
    USB2PHY is connected to ocp2scp.

    This also includes device tree support for ocp2scp driver and
    the documentation with device tree binding information is updated.

    Acked-by: Felipe Balbi
    Acked-by: Arnd Bergmann
    Signed-off-by: Kishon Vijay Abraham I
    Signed-off-by: Arnd Bergmann

    Kishon Vijay Abraham I
     

31 Jul, 2012

1 commit

  • VFIO is a secure user level driver for use with both virtual machines
    and user level drivers. VFIO makes use of IOMMU groups to ensure the
    isolation of devices in use, allowing unprivileged user access. It's
    intended that VFIO will replace KVM device assignment and UIO drivers
    (in cases where the target platform includes a sufficiently capable
    IOMMU).

    New in this version of VFIO is support for IOMMU groups managed
    through the IOMMU core as well as a rework of the API, removing the
    group merge interface. We now go back to a model more similar to
    original VFIO with UIOMMU support where the file descriptor obtained
    from /dev/vfio/vfio allows access to the IOMMU, but only after a
    group is added, avoiding the previous privilege issues with this type
    of model. IOMMU support is also now fully modular as IOMMUs have
    vastly different interface requirements on different platforms. VFIO
    users are able to query and initialize the IOMMU model of their
    choice.

    Please see the follow-on Documentation commit for further description
    and usage example.

    Signed-off-by: Alex Williamson

    Alex Williamson
     

15 Jun, 2012

1 commit

  • This patch adds framework support for PWM (pulse width modulation) devices.

    The is a barebone PWM API already in the kernel under include/linux/pwm.h,
    but it does not allow for multiple drivers as each of them implements the
    pwm_*() functions.

    There are other PWM framework patches around from Bill Gatliff. Unlike
    his framework this one does not change the existing API for PWMs so that
    this framework can act as a drop in replacement for the existing API.

    Why another framework?

    Several people argue that there should not be another framework for PWMs
    but they should be integrated into one of the existing frameworks like led
    or hwmon. Unlike these frameworks the PWM framework is agnostic to the
    purpose of the PWM. In fact, a PWM can drive a LED, but this makes the
    LED framework a user of a PWM, like already done in leds-pwm.c. The gpio
    framework also is not suitable for PWMs. Every gpio could be turned into
    a PWM using timer based toggling, but on the other hand not every PWM hardware
    device can be turned into a gpio due to the lack of hardware capabilities.

    This patch does not try to improve the PWM API yet, this could be done in
    subsequent patches.

    Signed-off-by: Sascha Hauer
    Acked-by: Kurt Van Dijck
    Reviewed-by: Arnd Bergmann
    Reviewed-by: Matthias Kaehlcke
    Reviewed-by: Mark Brown
    Reviewed-by: Shawn Guo
    [thierry.reding@avionic-design.de: fixup typos, kerneldoc comments]
    Signed-off-by: Thierry Reding

    Sascha Hauer
     

23 May, 2012

1 commit

  • Pull staging tree changes from Greg Kroah-Hartman:
    "Here is the big staging tree pull request for the 3.5-rc1 merge
    window.

    Loads of changes here, and we just narrowly added more lines than we
    added:
    622 files changed, 28356 insertions(+), 26059 deletions(-)

    But, good news is that there is a number of subsystems that moved out
    of the staging tree, to their respective "real" portions of the
    kernel.

    Code that moved out was:
    - iio core code
    - mei driver
    - vme core and bridge drivers

    There was one broken network driver that moved into staging as a step
    before it is removed from the tree (pc300), and there was a few new
    drivers added to the tree:
    - new iio drivers
    - gdm72xx wimax USB driver
    - ipack subsystem and 2 drivers

    All of the movements around have acks from the various subsystem
    maintainers, and all of this has been in the linux-next tree for a
    while.

    Signed-off-by: Greg Kroah-Hartman "

    Fixed up various trivial conflicts, along with a non-trivial one found
    in -next and pointed out by Olof Johanssen: a clean - but incorrect -
    merge of the arch/arm/boot/dts/at91sam9g20.dtsi file. Fix up manually
    as per Stephen Rothwell.

    * tag 'staging-3.5-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging: (536 commits)
    Staging: bcm: Remove two unused variables from Adapter.h
    Staging: bcm: Removes the volatile type definition from Adapter.h
    Staging: bcm: Rename all "INT" to "int" in Adapter.h
    Staging: bcm: Fix warning: __packed vs. __attribute__((packed)) in Adapter.h
    Staging: bcm: Correctly format all comments in Adapter.h
    Staging: bcm: Fix all whitespace issues in Adapter.h
    Staging: bcm: Properly format braces in Adapter.h
    Staging: ipack/bridges/tpci200: remove unneeded casts
    Staging: ipack/bridges/tpci200: remove TPCI200_SHORTNAME constant
    Staging: ipack: remove board_name and bus_name fields from struct ipack_device
    Staging: ipack: improve the register of a bus and a device in the bus.
    staging: comedi: cleanup all the comedi_driver 'detach' functions
    staging: comedi: remove all 'default N' in Kconfig
    staging: line6/config.h: Delete unused header
    staging: gdm72xx depends on NET
    staging: gdm72xx: Set up parent link in sysfs for gdm72xx devices
    staging: drm/omap: initial dmabuf/prime import support
    staging: drm/omap: dmabuf/prime mmap support
    pstore/ram: Add ECC support
    pstore/ram: Switch to persistent_ram routines
    ...

    Linus Torvalds
     

02 May, 2012

1 commit

  • EMIF is an SDRAM controller used in various Texas Instruments
    SoCs. EMIF supports, based on its revision, one or more of
    LPDDR2/DDR2/DDR3 protocols.

    Add the basic infrastructure for EMIF driver that includes
    driver registration, probe, parsing of platform data etc.

    Signed-off-by: Aneesh V
    Reviewed-by: Santosh Shilimkar
    Reviewed-by: Benoit Cousson
    [santosh.shilimkar@ti.com: Moved to drivers/memory from drivers/misc]
    Signed-off-by: Santosh Shilimkar
    Tested-by: Lokesh Vutla
    Signed-off-by: Greg Kroah-Hartman

    Aneesh V
     

27 Apr, 2012

1 commit

  • This moves the VME core, VME board drivers, and VME bridge drivers out
    of the drivers/staging/vme/ area to drivers/vme/.

    The VME device drivers have not moved out yet due to some API questions
    they are still working through, that should happen soon, hopefully.

    Cc: Martyn Welch
    Cc: Manohar Vanga
    Cc: Vincent Bossier
    Cc: "Emilio G. Cota"
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

26 Apr, 2012

1 commit

  • Take the core support + the kfifo buffer implentation out of
    staging. Whilst we are far from done in improving this subsystem
    it is now at a stage where the userspae interfaces (provided by
    the core) can be considered stable.

    Drivers will follow over a longer time scale.

    Signed-off-by: Jonathan Cameron
    Signed-off-by: Greg Kroah-Hartman

    Jonathan Cameron
     

21 Apr, 2012

1 commit

  • External connector class (extcon) is based on and an extension of
    Android kernel's switch class located at linux/drivers/switch/.

    This patch provides the before-extension switch class moved to the
    location where the extcon will be located (linux/drivers/extcon/) and
    updates to handle class properly.

    The before-extension class, switch class of Android kernel, commits
    imported are:

    switch: switch class and GPIO drivers. (splitted)
    Author: Mike Lockwood

    switch: Use device_create instead of device_create_drvdata.
    Author: Arve Hjønnevåg

    In this patch, upon the commits of Android kernel, we have added:
    - Relocated and renamed for extcon.
    - Comments, module name, and author information are updated
    - Code clean for successing patches
    - Bugfix: enabling write access without write functions
    - Class/device/sysfs create/remove handling
    - Added comments about uevents
    - Format changes for extcon_dev_register() to have a parent dev.

    Signed-off-by: MyungJoo Ham
    Signed-off-by: Kyungmin Park
    Reviewed-by: Mark Brown

    --
    Changes from v7
    - Compiler error fixed when it is compiled as a module.
    - Removed out-of-date Kconfig entry

    Changes from v6
    - Updated comment/strings
    - Revised "Android-compatible" mode.
    * Automatically activated if CONFIG_ANDROID && !CONFIG_ANDROID_SWITCH
    * Creates /sys/class/switch/*, which is a copy of /sys/class/extcon/*

    Changes from v5
    - Split the patch
    - Style fixes
    - "Android-compatible" mode is enabled by Kconfig option.

    Changes from v2
    - Updated name_show
    - Sysfs entries are handled by class itself.
    - Updated the method to add/remove devices for the class
    - Comments on uevent send
    - Able to become a module
    - Compatible with Android platform

    Changes from RFC
    - Renamed to extcon (external connector) from multistate switch
    - Added a seperated directory (drivers/extcon)
    - Added kerneldoc comments
    - Removed unused variables from extcon_gpio.c
    - Added ABI Documentation.
    Signed-off-by: Greg Kroah-Hartman

    MyungJoo Ham
     

03 Apr, 2012

1 commit

  • Pull HSI (High Speed Synchronous Serial Interface) framework from Carlos Chinea:
    "The High Speed Synchronous Serial Interface (HSI) is a serial
    interface mainly used for connecting application engines (APE) with
    cellular modem engines (CMT) in cellular handsets.

    The framework is currently being used for some people and we would
    like to see it integrated into the kernel for 3.3. There is no HW
    controller drivers in this pull, but some people have already some of
    them pending which they would like to push as soon as this integrated.
    I am also working on the acceptance for an TI OMAP one, based on a
    compatible legacy version of the interface called SSI."

    Ok, so it didn't get into 3.3, but here it is pulled into 3.4.

    Several people piped up to say "yeah, we want this".

    * 'for-next' of git://gitorious.org/kernel-hsi/kernel-hsi:
    HSI: hsi_char: Update ioctl-number.txt
    HSI: Add HSI API documentation
    HSI: hsi_char: Add HSI char device kernel configuration
    HSI: hsi_char: Add HSI char device driver
    HSI: hsi: Introducing HSI framework

    Linus Torvalds
     

28 Mar, 2012

1 commit

  • Pull "remoteproc/rpmsg: new subsystem" from Arnd Bergmann:
    "This new subsystem provides a common way to talk to secondary
    processors on an SoC, e.g. a DSP, GPU or service processor, using
    virtio as the transport. In the long run, it should replace a few
    dozen vendor specific ways to do the same thing, which all never made
    it into the upstream kernel. There is a broad agreement that rpmsg is
    the way to go here and several vendors have started working on
    replacing their own subsystems.

    Two branches each add one virtio protocol number. Fortunately the
    numbers were agreed upon in advance, so there are only context
    changes.

    Signed-off-by: Arnd Bergmann "

    Fixed up trivial protocol number conflict due to the mentioned additions
    next to each other.

    * tag 'rpmsg' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (32 commits)
    remoteproc: cleanup resource table parsing paths
    remoteproc: remove the hardcoded vring alignment
    remoteproc/omap: remove the mbox_callback limitation
    remoteproc: remove the single rpmsg vdev limitation
    remoteproc: safer boot/shutdown order
    remoteproc: remoteproc_rpmsg -> remoteproc_virtio
    remoteproc: resource table overhaul
    rpmsg: fix build warning when dma_addr_t is 64-bit
    rpmsg: fix published buffer length in rpmsg_recv_done
    rpmsg: validate incoming message length before propagating
    rpmsg: fix name service endpoint leak
    remoteproc/omap: two Kconfig fixes
    remoteproc: make sure we're parsing a 32bit firmware
    remoteproc: s/big switch/lookup table/
    remoteproc: bail out if firmware has different endianess
    remoteproc: don't use virtio's weak barriers
    rpmsg: rename virtqueue_add_buf_gfp to virtqueue_add_buf
    rpmsg: depend on EXPERIMENTAL
    remoteproc: depend on EXPERIMENTAL
    rpmsg: add Kconfig menu
    ...

    Conflicts:
    include/linux/virtio_ids.h

    Linus Torvalds
     

09 Feb, 2012

3 commits

  • This stuff is really old and in quite poor shape.
    Does anyone still use it?

    If not, I think it's appropriate to let it simmer
    in staging for a few releases.

    Signed-off-by: Joe Perches
    Signed-off-by: Greg Kroah-Hartman

    Joe Perches
     
  • Add a virtio-based inter-processor communication bus, which enables
    kernel drivers to communicate with entities, running on remote
    processors, over shared memory using a simple messaging protocol.

    Every pair of AMP processors share two vrings, which are used to send
    and receive the messages over shared memory.

    The header of every message sent on the rpmsg bus contains src and dst
    addresses, which make it possible to multiplex several rpmsg channels on
    the same vring.

    Every rpmsg channel is a device on this bus. When a channel is added,
    and an appropriate rpmsg driver is found and probed, it is also assigned
    a local rpmsg address, which is then bound to the driver's callback.

    When inbound messages carry the local address of a bound driver,
    its callback is invoked by the bus.

    This patch provides a kernel interface only; user space interfaces
    will be later exposed by kernel users of this rpmsg bus.

    Designed with Brian Swetland .

    Signed-off-by: Ohad Ben-Cohen
    Acked-by: Rusty Russell (virtio_ids.h)
    Cc: Brian Swetland
    Cc: Arnd Bergmann
    Cc: Grant Likely
    Cc: Tony Lindgren
    Cc: Russell King
    Cc: Andrew Morton
    Cc: Greg KH
    Cc: Stephen Boyd

    Ohad Ben-Cohen
     
  • Modern SoCs typically employ a central symmetric multiprocessing (SMP)
    application processor running Linux, with several other asymmetric
    multiprocessing (AMP) heterogeneous processors running different instances
    of operating system, whether Linux or any other flavor of real-time OS.

    Booting a remote processor in an AMP configuration typically involves:
    - Loading a firmware which contains the OS image
    - Allocating and providing it required system resources (e.g. memory)
    - Programming an IOMMU (when relevant)
    - Powering on the device

    This patch introduces a generic framework that allows drivers to do
    that. In the future, this framework will also include runtime power
    management and error recovery.

    Based on (but now quite far from) work done by Fernando Guzman Lugo
    .

    ELF loader was written by Mark Grosen , based on
    msm's Peripheral Image Loader (PIL) by Stephen Boyd .

    Designed with Brian Swetland .

    Signed-off-by: Ohad Ben-Cohen
    Acked-by: Grant Likely
    Cc: Brian Swetland
    Cc: Arnd Bergmann
    Cc: Tony Lindgren
    Cc: Russell King
    Cc: Rusty Russell
    Cc: Andrew Morton
    Cc: Greg KH
    Cc: Stephen Boyd

    Ohad Ben-Cohen
     

05 Jan, 2012

1 commit

  • Adds HSI framework in to the linux kernel.

    High Speed Synchronous Serial Interface (HSI) is a
    serial interface mainly used for connecting application
    engines (APE) with cellular modem engines (CMT) in cellular
    handsets.

    HSI provides multiplexing for up to 16 logical channels,
    low-latency and full duplex communication.

    Signed-off-by: Carlos Chinea
    Acked-by: Linus Walleij

    Carlos Chinea
     

27 Nov, 2011

1 commit

  • Move the "Device Drivers/Microsoft Hyper-V guest support"
    menu entry up such that it appears immediately below virtio
    (KVM and lguest guest driver support) instead of after a
    hypervisor driver menu entry.

    Signed-off-by: Bart Van Assche
    Cc: Greg Kroah-Hartman
    Cc: James Bottomley
    Cc: K. Y. Srinivasan
    Signed-off-by: Greg Kroah-Hartman

    Bart Van Assche
     

26 Oct, 2011

1 commit

  • * 'staging-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging: (1519 commits)
    staging: et131x: Remove redundant check and return statement
    staging: et131x: Mainly whitespace changes to appease checkpatch
    staging: et131x: Remove last of the forward declarations
    staging: et131x: Remove even more forward declarations
    staging: et131x: Remove yet more forward declarations
    staging: et131x: Remove more forward declarations
    staging: et131x: Remove forward declaration of et131x_adapter_setup
    staging: et131x: Remove some forward declarations
    staging: et131x: Remove unused rx_ring.recv_packet_pool
    staging: et131x: Remove call to find pci pm capability
    staging: et131x: Remove redundant et131x_reset_recv() call
    staging: et131x: Remove unused rx_ring.recv_buffer_pool
    Staging: bcm: Fix three initialization errors in InterfaceDld.c
    Staging: bcm: Fix coding style issues in InterfaceDld.c
    staging:iio:dac: Add AD5360 driver
    staging:iio:trigger:bfin-timer: Fix compile error
    Staging: vt6655: add some range checks before memcpy()
    Staging: vt6655: whitespace fixes to iotcl.c
    Staging: vt6656: add some range checks before memcpy()
    Staging: vt6656: whitespace cleanups in ioctl.c
    ...

    Fix up conflicts in:
    - drivers/{Kconfig,Makefile}, drivers/staging/{Kconfig,Makefile}:
    vg driver movement
    - drivers/staging/brcm80211/brcmfmac/{dhd_linux.c,mac80211_if.c}:
    driver removal vs now stale changes
    - drivers/staging/rtl8192e/r8192E_core.c:
    driver removal vs now stale changes
    - drivers/staging/et131x/et131*:
    driver consolidation into one file, tried to do fixups

    Linus Torvalds
     

25 Oct, 2011

1 commit

  • * 'pm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (63 commits)
    PM / Clocks: Remove redundant NULL checks before kfree()
    PM / Documentation: Update docs about suspend and CPU hotplug
    ACPI / PM: Add Sony VGN-FW21E to nonvs blacklist.
    ARM: mach-shmobile: sh7372 A4R support (v4)
    ARM: mach-shmobile: sh7372 A3SP support (v4)
    PM / Sleep: Mark devices involved in wakeup signaling during suspend
    PM / Hibernate: Improve performance of LZO/plain hibernation, checksum image
    PM / Hibernate: Do not initialize static and extern variables to 0
    PM / Freezer: Make fake_signal_wake_up() wake TASK_KILLABLE tasks too
    PM / Hibernate: Add resumedelay kernel param in addition to resumewait
    MAINTAINERS: Update linux-pm list address
    PM / ACPI: Blacklist Vaio VGN-FW520F machine known to require acpi_sleep=nonvs
    PM / ACPI: Blacklist Sony Vaio known to require acpi_sleep=nonvs
    PM / Hibernate: Add resumewait param to support MMC-like devices as resume file
    PM / Hibernate: Fix typo in a kerneldoc comment
    PM / Hibernate: Freeze kernel threads after preallocating memory
    PM: Update the policy on default wakeup settings
    PM / VT: Cleanup #if defined uglyness and fix compile error
    PM / Suspend: Off by one in pm_suspend()
    PM / Hibernate: Include storage keys in hibernation image on s390
    ...

    Linus Torvalds
     

13 Oct, 2011

1 commit

  • This creates a subsystem for handling of pin control devices.
    These are devices that control different aspects of package
    pins.

    Currently it handles pinmuxing, i.e. assigning electronic
    functions to groups of pins on primarily PGA and BGA type of
    chip packages which are common in embedded systems.

    The plan is to also handle other I/O pin control aspects
    such as biasing, driving, input properties such as
    schmitt-triggering, load capacitance etc within this
    subsystem, to remove a lot of ARM arch code as well as
    feature-creepy GPIO drivers which are implementing the same
    thing over and over again.

    This is being done to depopulate the arch/arm/* directory
    of such custom drivers and try to abstract the infrastructure
    they all need. See the Documentation/pinctrl.txt file that is
    part of this patch for more details.

    ChangeLog v1->v2:

    - Various minor fixes from Joe's and Stephens review comments
    - Added a pinmux_config() that can invoke custom configuration
    with arbitrary data passed in or out to/from the pinmux driver

    ChangeLog v2->v3:

    - Renamed subsystem folder to "pinctrl" since we will likely
    want to keep other pin control such as biasing in this
    subsystem too, so let us keep to something generic even though
    we're mainly doing pinmux now.
    - As a consequence, register pins as an abstract entity separate
    from the pinmux. The muxing functions will claim pins out of the
    pin pool and make sure they do not collide. Pins can now be
    named by the pinctrl core.
    - Converted the pin lookup from a static array into a radix tree,
    I agreed with Grant Likely to try to avoid any static allocation
    (which is crap for device tree stuff) so I just rewrote this
    to be dynamic, just like irq number descriptors. The
    platform-wide definition of number of pins goes away - this is
    now just the sum total of the pins registered to the subsystem.
    - Make sure mappings with only a function name and no device
    works properly.

    ChangeLog v3->v4:

    - Define a number space per controller instead of globally,
    Stephen and Grant requested the same thing so now maps need to
    define target controller, and the radix tree of pin descriptors
    is a property on each pin controller device.
    - Add a compulsory pinctrl device entry to the pinctrl mapping
    table. This must match the pinctrl device, like "pinctrl.0"
    - Split the file core.c in two: core.c and pinmux.c where the
    latter carry all pinmux stuff, the core is for generic pin
    control, and use local headers to access functionality between
    files. It is now possible to implement a "blank" pin controller
    without pinmux capabilities. This split will make new additions
    like pindrive.c, pinbias.c etc possible for combined drivers
    and chunks of functionality which is a GoodThing(TM).
    - Rewrite the interaction with the GPIO subsystem - the pin
    controller descriptor now handles this by defining an offset
    into the GPIO numberspace for its handled pin range. This is
    used to look up the apropriate pin controller for a GPIO pin.
    Then that specific GPIO range is matched 1-1 for the target
    controller instance.
    - Fixed a number of review comments from Joe Perches.
    - Broke out a header file pinctrl.h for the core pin handling
    stuff that will be reused by other stuff than pinmux.
    - Fixed some erroneous EXPORT() stuff.
    - Remove mispatched U300 Kconfig and Makefile entries
    - Fixed a number of review comments from Stephen Warren, not all
    of them - still WIP. But I think the new mapping that will
    specify which function goes to which pin mux controller address
    50% of your concerns (else beat me up).

    ChangeLog v4->v5:

    - Defined a "position" for each function, so the pin controller now
    tracks a function in a certain position, and the pinmux maps define
    what position you want the function in. (Feedback from Stephen
    Warren and Sascha Hauer).
    - Since we now need to request a combined function+position from
    the machine mapping table that connect mux settings to drivers,
    it was extended with a position field and a name field. The
    name field is now used if you e.g. need to switch between two
    mux map settings at runtime.
    - Switched from a class device to using struct bus_type for this
    subsystem. Verified sysfs functionality: seems to work fine.
    (Feedback from Arnd Bergmann and Greg Kroah-Hartman)
    - Define a per pincontroller list of GPIO ranges from the GPIO
    pin space that can be handled by the pin controller. These can
    be added one by one at runtime. (Feedback from Barry Song)
    - Expanded documentation of regulator_[get|enable|disable|put]
    semantics.
    - Fixed a number of review comments from Barry Song. (Thanks!)

    ChangeLog v5->v6:

    - Create an abstract pin group concept that can sort pins into
    named and enumerated groups no matter what the use of these
    groups may be, one possible usecase is a group of pins being
    muxed in or so. The intention is however to also use these
    groups for other pin control activities.
    - Make it compulsory for pinmux functions to associate with
    at least one group, so the abstract pin group concept is used
    to define the groups of pins affected by a pinmux function.
    The pinmux driver interface has been altered so as to enforce
    a function to list applicable groups per function.
    - Provide an optional .group entry in the pinmux machine map
    so the map can select beteween different available groups
    to be used with a certain function.
    - Consequent changes all over the place so that e.g. debugfs
    present reasonable information about the world.
    - Drop the per-pin mux (*config) function in the pinmux_ops
    struct - I was afraid that this would start to be used for
    things totally unrelated to muxing, we can introduce that to
    the generic struct pinctrl_ops if needed. I want to keep
    muxing orthogonal to other pin control subjects and not mix
    these things up.

    ChangeLog v6->v7:

    - Make it possible to have several map entries matching the
    same device, pin controller and function, but using
    a different group, and alter the semantics so that
    pinmux_get() will pick all matching map entries, and
    store the associated groups in a list. The list will
    then be iterated over at pinmux_enable()/pinmux_disable()
    and corresponding driver functions called for each
    defined group. Notice that you're only allowed to map
    multiple *groups* to the same
    { device, pin controller, function } triplet, attempts
    to map the same device to multiple pin controllers will
    for example fail. This is hopefully the crucial feature
    requested by Stephen Warren.
    - Add a pinmux hogging field to the pinmux mapping entries,
    and enable the pinmux core to hog pinmux map entries.
    This currently only works for pinmuxes without assigned
    devices as it looks now, but with device trees we can
    look up the corresponding struct device * entries when
    we register the pinmux driver, and have it hog each
    pinmux map in turn, for a simple approach to
    non-dynamic pin muxing. This addresses an issue from
    Grant Likely that the machine should take care of as
    much of the pinmux setup as possible, not the devices.
    By supplying a list of hogs, it can now instruct the
    core to take care of any static mappings.
    - Switch pinmux group retrieveal function to grab an
    array of strings representing the groups rather than an
    array of unsigned and rewrite accordingly.
    - Alter debugfs to show the grouplist handled by each
    pinmux. Also add a list of hogs.
    - Dynamically allocate a struct pinmux at pinmux_get() and
    free it at pinmux_put(), then add these to the global
    list of pinmuxes active as we go along.
    - Go over the list of pinmux maps at pinmux_get() time
    and repeatedly apply matches.
    - Retrieve applicable groups per function from the driver
    as a string array rather than a unsigned array, then
    lookup the enumerators.
    - Make the device to pinmux map a singleton - only allow the
    mapping table to be registered once and even tag the
    registration function with __init so it surely won't be
    abused.
    - Create a separate debugfs file to view the pinmux map at
    runtime.
    - Introduce a spin lock to the pin descriptor struct, lock it
    when modifying pin status entries. Reported by Stijn Devriendt.
    - Fix up the documentation after review from Stephen Warren.
    - Let the GPIO ranges give names as const char * instead of some
    fixed-length string.
    - add a function to unregister GPIO ranges to mirror the
    registration function.
    - Privatized the struct pinctrl_device and removed it from the
    API, the drivers do not need to know
    the members of this struct. It is now in the local header
    "core.h".
    - Rename the concept of "anonymous" mux maps to "system" muxes
    and add convenience macros and documentation.

    ChangeLog v7->v8:

    - Delete the leftover pinmux_config() function from the
    header.
    - Fix a race condition found by Stijn Devriendt in pin_request()

    ChangeLog v8->v9:

    - Drop the bus_type and the sysfs attributes and all, we're not on
    the clear about how this should be used for e.g. userspace
    interfaces so let us save this for the future.
    - Use the right name in MAINTAINERS, PIN CONTROL rather than
    PINMUX
    - Don't kfree() the device state holder, let the .remove() callback
    handle this.
    - Fix up numerous kerneldoc headers to have one line for the function
    description and more verbose documentation below the parameters

    ChangeLog v9->v10:
    - pinctrl: EXPORT_SYMBOL needs export.h, folded in a patch
    from Steven Rothwell
    - fix pinctrl_register error handling, folded in a patch from
    Axel Lin
    - Various fixes to documentation text so that it's consistent.
    - Removed pointless comment from drivers/Kconfig
    - Removed dependency on SYSFS since we removed the bus in
    v9.
    - Renamed hopelessly abbreviated pctldev_* functions to the
    more verbose pinctrl_dev_*
    - Drop mutex properly when looking up GPIO ranges
    - Return NULL instead of ERR_PTR() errors on registration of
    pin controllers, using cast pointers is fragile. We can
    live without the detailed error codes for sure.

    Cc: Stijn Devriendt
    Cc: Joe Perches
    Cc: Russell King
    Acked-by: Grant Likely
    Acked-by: Stephen Warren
    Tested-by: Barry Song
    Signed-off-by: Linus Walleij

    Linus Walleij
     

11 Oct, 2011

1 commit

  • After many years wandering the desert, it is finally time for the
    Microsoft HyperV code to move out of the staging directory. Or at least
    the core hyperv bus code, and the utility driver, the rest still have
    some review to get through by the various subsystem maintainers.

    Signed-off-by: Greg Kroah-Hartman
    Signed-off-by: K. Y. Srinivasan

    Greg Kroah-Hartman
     

02 Oct, 2011

1 commit

  • With OPPs, a device may have multiple operable frequency and voltage
    sets. However, there can be multiple possible operable sets and a system
    will need to choose one from them. In order to reduce the power
    consumption (by reducing frequency and voltage) without affecting the
    performance too much, a Dynamic Voltage and Frequency Scaling (DVFS)
    scheme may be used.

    This patch introduces the DVFS capability to non-CPU devices with OPPs.
    DVFS is a techique whereby the frequency and supplied voltage of a
    device is adjusted on-the-fly. DVFS usually sets the frequency as low
    as possible with given conditions (such as QoS assurance) and adjusts
    voltage according to the chosen frequency in order to reduce power
    consumption and heat dissipation.

    The generic DVFS for devices, devfreq, may appear quite similar with
    /drivers/cpufreq. However, cpufreq does not allow to have multiple
    devices registered and is not suitable to have multiple heterogenous
    devices with different (but simple) governors.

    Normally, DVFS mechanism controls frequency based on the demand for
    the device, and then, chooses voltage based on the chosen frequency.
    devfreq also controls the frequency based on the governor's frequency
    recommendation and let OPP pick up the pair of frequency and voltage
    based on the recommended frequency. Then, the chosen OPP is passed to
    device driver's "target" callback.

    When PM QoS is going to be used with the devfreq device, the device
    driver should enable OPPs that are appropriate with the current PM QoS
    requests. In order to do so, the device driver may call opp_enable and
    opp_disable at the notifier callback of PM QoS so that PM QoS's
    update_target() call enables the appropriate OPPs. Note that at least
    one of OPPs should be enabled at any time; be careful when there is a
    transition.

    Signed-off-by: MyungJoo Ham
    Signed-off-by: Kyungmin Park
    Reviewed-by: Mike Turquette
    Acked-by: Kevin Hilman
    Signed-off-by: Rafael J. Wysocki

    MyungJoo Ham
     

26 Jul, 2011

1 commit

  • * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc: (99 commits)
    drivers/virt: add missing linux/interrupt.h to fsl_hypervisor.c
    powerpc/85xx: fix mpic configuration in CAMP mode
    powerpc: Copy back TIF flags on return from softirq stack
    powerpc/64: Make server perfmon only built on ppc64 server devices
    powerpc/pseries: Fix hvc_vio.c build due to recent changes
    powerpc: Exporting boot_cpuid_phys
    powerpc: Add CFAR to oops output
    hvc_console: Add kdb support
    powerpc/pseries: Fix hvterm_raw_get_chars to accept < 16 chars, fixing xmon
    powerpc/irq: Quieten irq mapping printks
    powerpc: Enable lockup and hung task detectors in pseries and ppc64 defeconfigs
    powerpc: Add mpt2sas driver to pseries and ppc64 defconfig
    powerpc: Disable IRQs off tracer in ppc64 defconfig
    powerpc: Sync pseries and ppc64 defconfigs
    powerpc/pseries/hvconsole: Fix dropped console output
    hvc_console: Improve tty/console put_chars handling
    powerpc/kdump: Fix timeout in crash_kexec_wait_realmode
    powerpc/mm: Fix output of total_ram.
    powerpc/cpufreq: Add cpufreq driver for Momentum Maple boards
    powerpc: Correct annotations of pmu registration functions
    ...

    Fix up trivial Kconfig/Makefile conflicts in arch/powerpc, drivers, and
    drivers/cpufreq

    Linus Torvalds
     

23 Jul, 2011

2 commits

  • virtio has been so far used only in the context of virtualization,
    and the virtio Kconfig was sourced directly by the relevant arch
    Kconfigs when VIRTUALIZATION was selected.

    Now that we start using virtio for inter-processor communications,
    we need to source the virtio Kconfig outside of the virtualization
    scope too.

    Moreover, some architectures might use virtio for both virtualization
    and inter-processor communications, so directly sourcing virtio
    might yield unexpected results due to conflicting selections.

    The simple solution offered by this patch is to always source virtio's
    Kconfig in drivers/Kconfig, and remove it from the appropriate arch
    Kconfigs. Additionally, a virtio menu entry has been added so virtio
    drivers don't show up in the general drivers menu.

    This way anyone can use virtio, though it's arguably less accessible
    (and neat!) for virtualization users now.

    Note: some architectures (mips and sh) seem to have a VIRTUALIZATION
    menu merely for sourcing virtio's Kconfig, so that menu is removed too.

    Signed-off-by: Ohad Ben-Cohen
    Signed-off-by: Rusty Russell

    Ohad Ben-Cohen
     
  • …/git/tip/linux-2.6-tip

    * 'core-iommu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    iommu/core: Fix build with INTR_REMAP=y && CONFIG_DMAR=n
    iommu/amd: Don't use MSI address range for DMA addresses
    iommu/amd: Move missing parts to drivers/iommu
    iommu: Move iommu Kconfig entries to submenu
    x86/ia64: intel-iommu: move to drivers/iommu/
    x86: amd_iommu: move to drivers/iommu/
    msm: iommu: move to drivers/iommu/
    drivers: iommu: move to a dedicated folder
    x86/amd-iommu: Store device alias as dev_data pointer
    x86/amd-iommu: Search for existind dev_data before allocting a new one
    x86/amd-iommu: Allow dev_data->alias to be NULL
    x86/amd-iommu: Use only dev_data in low-level domain attach/detach functions
    x86/amd-iommu: Use only dev_data for dte and iotlb flushing routines
    x86/amd-iommu: Store ATS state in dev_data
    x86/amd-iommu: Store devid in dev_data
    x86/amd-iommu: Introduce global dev_data_list
    x86/amd-iommu: Remove redundant device_flush_dte() calls
    iommu-api: Add missing header file

    Fix up trivial conflicts (independent additions close to each other) in
    drivers/Makefile and include/linux/pci.h

    Linus Torvalds
     

08 Jul, 2011

2 commits


06 Jul, 2011

1 commit

  • The NFC subsystem core is responsible for providing the device driver
    interface. It is also responsible for providing an interface to the control
    operations and data exchange.

    Signed-off-by: Lauro Ramos Venancio
    Signed-off-by: Aloisio Almeida Jr
    Signed-off-by: Samuel Ortiz
    Signed-off-by: John W. Linville

    Lauro Ramos Venancio
     

14 Jun, 2011

1 commit

  • Create a dedicated folder for iommu drivers, and move the base
    iommu implementation over there.

    Grouping the various iommu drivers in a single location will help
    finding similar problems shared by different platforms, so they
    could be solved once, in the iommu framework, instead of solved
    differently (or duplicated) in each driver.

    Signed-off-by: Ohad Ben-Cohen
    Signed-off-by: Joerg Roedel

    Ohad Ben-Cohen
     

24 May, 2011

1 commit

  • This patch adds an infrastructure for hardware clocks that implement
    IEEE 1588, the Precision Time Protocol (PTP). A class driver offers a
    registration method to particular hardware clock drivers. Each clock is
    presented as a standard POSIX clock.

    The ancillary clock features are exposed in two different ways, via
    the sysfs and by a character device.

    Signed-off-by: Richard Cochran
    Acked-by: Arnd Bergmann
    Acked-by: David S. Miller
    Signed-off-by: John Stultz

    Richard Cochran
     

21 May, 2011

1 commit

  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1446 commits)
    macvlan: fix panic if lowerdev in a bond
    tg3: Add braces around 5906 workaround.
    tg3: Fix NETIF_F_LOOPBACK error
    macvlan: remove one synchronize_rcu() call
    networking: NET_CLS_ROUTE4 depends on INET
    irda: Fix error propagation in ircomm_lmp_connect_response()
    irda: Kill set but unused variable 'bytes' in irlan_check_command_param()
    irda: Kill set but unused variable 'clen' in ircomm_connect_indication()
    rxrpc: Fix set but unused variable 'usage' in rxrpc_get_transport()
    be2net: Kill set but unused variable 'req' in lancer_fw_download()
    irda: Kill set but unused vars 'saddr' and 'daddr' in irlan_provider_connect_indication()
    atl1c: atl1c_resume() is only used when CONFIG_PM_SLEEP is defined.
    rxrpc: Fix set but unused variable 'usage' in rxrpc_get_peer().
    rxrpc: Kill set but unused variable 'local' in rxrpc_UDP_error_handler()
    rxrpc: Kill set but unused variable 'sp' in rxrpc_process_connection()
    rxrpc: Kill set but unused variable 'sp' in rxrpc_rotate_tx_window()
    pkt_sched: Kill set but unused variable 'protocol' in tc_classify()
    isdn: capi: Use pr_debug() instead of ifdefs.
    tg3: Update version to 3.119
    tg3: Apply rx_discards fix to 5719/5720
    ...

    Fix up trivial conflicts in arch/x86/Kconfig and net/mac80211/agg-tx.c
    as per Davem.

    Linus Torvalds
     

14 May, 2011

1 commit


11 May, 2011

1 commit

  • Broadcom has released cards based on a new AMBA-based bus type. From a
    programming point of view, this new bus type differs from AMBA and does
    not use AMBA common registers. It also differs enough from SSB. We
    decided that a new bus driver is needed to keep the code clean.

    In its current form, the driver detects devices present on the bus and
    registers them in the system. It allows registering BCMA drivers for
    specified bus devices and provides them basic operations. The bus driver
    itself includes two important bus managing drivers: ChipCommon core
    driver and PCI(c) core driver. They are early used to allow correct
    initialization.

    Currently code is limited to supporting buses on PCI(e) devices, however
    the driver is designed to be used also on other hosts. The host
    abstraction layer is implemented and already used for PCI(e).

    Support for PCI(e) hosts is working and seems to be stable (access to
    80211 core was tested successfully on a few devices). We can still
    optimize it by using some fixed windows, but this can be done later
    without affecting any external code. Windows are just ranges in MMIO
    used for accessing cores on the bus.

    Cc: Greg KH
    Cc: Michael Büsch
    Cc: Larry Finger
    Cc: George Kashperko
    Cc: Arend van Spriel
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: Russell King
    Cc: Arnd Bergmann
    Cc: Andy Botting
    Cc: linuxdriverproject
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Rafał Miłecki
    Signed-off-by: John W. Linville

    Rafał Miłecki
     

18 Feb, 2011

1 commit

  • Add a platform-independent hwspinlock framework.

    Hardware spinlock devices are needed, e.g., in order to access data
    that is shared between remote processors, that otherwise have no
    alternative mechanism to accomplish synchronization and mutual exclusion
    operations.

    Signed-off-by: Ohad Ben-Cohen
    Cc: Hari Kanigeri
    Cc: Benoit Cousson
    Cc: Kevin Hilman
    Cc: Grant Likely
    Cc: Paul Walmsley
    Cc: Russell King
    Acked-by: Arnd Bergmann
    Signed-off-by: Tony Lindgren

    Ohad Ben-Cohen
     

15 Jan, 2011

1 commit

  • LIO target is a full featured in-kernel target framework with the
    following feature set:

    High-performance, non-blocking, multithreaded architecture with SIMD
    support.

    Advanced SCSI feature set:

    * Persistent Reservations (PRs)
    * Asymmetric Logical Unit Assignment (ALUA)
    * Protocol and intra-nexus multiplexing, load-balancing and failover (MC/S)
    * Full Error Recovery (ERL=0,1,2)
    * Active/active task migration and session continuation (ERL=2)
    * Thin LUN provisioning (UNMAP and WRITE_SAMExx)

    Multiprotocol target plugins

    Storage media independence:

    * Virtualization of all storage media; transparent mapping of IO to LUNs
    * No hard limits on number of LUNs per Target; maximum LUN size ~750 TB
    * Backstores: SATA, SAS, SCSI, BluRay, DVD, FLASH, USB, ramdisk, etc.

    Standards compliance:

    * Full compliance with IETF (RFC 3720)
    * Full implementation of SPC-4 PRs and ALUA

    Significant code cleanups done by Christoph Hellwig.

    [jejb: fix up for new block bdev exclusive interface. Minor fixes from
    Randy Dunlap and Dan Carpenter.]
    Signed-off-by: Nicholas A. Bellinger
    Signed-off-by: James Bottomley

    Nicholas Bellinger
     

14 Jan, 2011

1 commit

  • Creates a new "Near Field Communication" subsystem in drivers/nfc.
    http://en.wikipedia.org/wiki/Near_Field_Communication is useful ;)

    This is a driver for the pn544 NFC device. The driver transfers
    ETSI messages between the device and the user space.

    Signed-off-by: Matti J. Aaltonen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matti J. Aaltonen
     

26 Nov, 2010

1 commit


07 Mar, 2010

1 commit

  • Move the CS5535 MFGPT hrtimer kconfig option to be with the other MFGPT
    options. This makes it easier to find and also removes it from the main
    "Device Drivers" menu, where it should not have been.

    Signed-off-by: Randy Dunlap
    Acked-by: Andres Salomon
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     

30 Dec, 2009

1 commit

  • Update the Kconfig help texts of both stacks to encourage a general move
    from the older to the newer drivers. However, do not label ieee1394 as
    "Obsolete" yet, as the newer drivers have not been deployed as default
    stack in the majority of Linux distributions yet, and those who start
    doing so now may still want to install the old drivers as fallback for
    unforeseen issues.

    Since Linux 2.6.32, FireWire audio devices can be driven by the newer
    firewire driver stack too, hence remove an outdated comment about audio
    devices. Also remove comments about library versions since the 2nd
    generation of libraw1394 and libdc1394 is now in common use; details on
    library versions can be read at the wiki link from the help texts.

    Signed-off-by: Stefan Richter

    Stefan Richter
     

16 Dec, 2009

1 commit

  • This is based on the old code in arch/x86/kernel/mfgpt_32.c, but is
    modular and not Geode-specific. There's no reason why the clock event
    device needs to be registered so early at boot; the clockevent code is
    perfectly capable of dynamic switching.

    [akpm@linux-foundation.org: add linux/irq.h include]
    Signed-off-by: Andres Salomon
    Cc: Jordan Crouse
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Cc: john stultz
    Cc: Chris Ball
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andres Salomon