01 Oct, 2016

1 commit


16 Sep, 2016

1 commit


18 Aug, 2016

1 commit

  • Recently a maximum transfer size was was introduced in struct spi_master.
    However there are also spi controllers with a maximum message size, e.g.
    fsl-espi has a max message size of 64KB.
    Introduce a hook max_message_size to deal with such limitations.

    Also make sure that spi_max_transfer_size doesn't return greater values
    than spi_max_message_size, even if hook max_transfer_size is not set.

    Signed-off-by: Heiner Kallweit
    Signed-off-by: Mark Brown

    Heiner Kallweit
     

25 Jul, 2016

1 commit

  • The current SPI code attempts to use bus_lock_mutex for two purposes. One
    is to implement spi_bus_lock() which grants exclusive access to the bus.
    The other is to serialize access to the physical hardware. This duplicate
    purpose causes confusion which leads to cases where access is not locked
    when a caller holds the bus lock mutex. Fix this by splitting out the I/O
    functionality into a new io_mutex.

    This means taking both mutexes in the DMA path, replacing the existing
    mutex with the new I/O one in the message pump (the mutex now always
    being taken in the message pump) and taking the bus lock mutex in
    spi_sync(), allowing __spi_sync() to have no mutex handling.

    While we're at it hoist the mutex further up the message pump before we
    power up the device so that all power up/down of the block is covered by
    it and there are no races with in-line pumping of messages.

    Reported-by: Rich Felker
    Tested-by: Rich Felker
    Signed-off-by: Mark Brown

    Mark Brown
     

08 Jun, 2016

1 commit

  • Few SPI devices provide accelerated read interfaces to read from
    SPI-NOR flash devices. These hardwares also support DMA to transfer data
    from flash to memory either via mem-to-mem DMA or dedicated slave DMA
    channels. Hence, add support for DMA in order to improve throughput and
    reduce CPU load.
    Use spi_map_buf() to get sg table for the buffer and pass it to SPI
    driver.

    Signed-off-by: Vignesh R
    Signed-off-by: Mark Brown

    Vignesh R
     

26 Apr, 2016

1 commit

  • If hook spi_flash_read is implemented the fast flash read feature
    is enabled for all devices attached to the respective master.

    In most cases there is just one flash chip, however there are also
    devices with more than one flash chip, namely some WiFi routers.
    Then the fast flash read feature can be used for the first chip only.
    OpenWRT implemented an own handling of this case, using controller_data
    element of spi_device to hold the information whether fast flash read
    can be used for a device.

    This patch adds hook flash_read_supported to spi_master which is
    used to extend spi_flash_read_supported() by checking whether the
    fast flash read feature can be used for a specific spi_device.

    If the hook is not implemented the default behavior is to allow
    fast flash read for all devices (if spi_flash_read is implemented).

    Signed-off-by: Heiner Kallweit
    Signed-off-by: Mark Brown

    Heiner Kallweit
     

18 Mar, 2016

2 commits

  • Pull input updates from Dmitry Torokhov:
    "The most notable item is addition of support for Synaptics RMI4
    protocol which is native protocol for all current Synaptics devices
    (touchscreens, touchpads). In later releases we'll switch devices
    using HID and PS/2 protocol emulation to RMI4.

    You will also get:
    - BYD PS/2 touchpad protocol support for psmouse
    - MELFAS MIP4 Touchscreen driver
    - rotary encoder was moved away from legacy platform data and to
    generic device properties API, devm_* API, and can now handle
    encoders using more than 2 GPIOs
    - Cypress touchpad driver was switched to devm_* API and device
    properties
    - other assorted driver fixes"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: (40 commits)
    ARM: pxa/raumfeld: use PROPERTY_ENTRY_INTEGER to define props
    Input: synaptics-rmi4 - using logical instead of bitwise AND
    Input: powermate - fix oops with malicious USB descriptors
    Input: snvs_pwrkey - fix returned value check of syscon_regmap_lookup_by_phandle()
    MAINTAINERS: add devicetree bindings to Input Drivers section
    Input: synaptics-rmi4 - add device tree support to the SPI transport driver
    Input: synaptics-rmi4 - add SPI transport driver
    Input: synaptics-rmi4 - add support for F30
    Input: synaptics-rmi4 - add support for F12
    Input: synaptics-rmi4 - add device tree support for 2d sensors and F11
    Input: synaptics-rmi4 - add support for 2D sensors and F11
    Input: synaptics-rmi4 - add device tree support for RMI4 I2C devices
    Input: synaptics-rmi4 - add I2C transport driver
    Input: synaptics-rmi4 - add support for Synaptics RMI4 devices
    Input: ad7879 - add device tree support
    Input: ad7879 - fix default x/y axis assignment
    Input: ad7879 - move header to platform_data directory
    Input: ts4800 - add hardware dependency
    Input: cyapa - fix for losing events during device power transitions
    Input: sh_keysc - remove dependency on SUPERH
    ...

    Linus Torvalds
     
  • Pull char/misc updates from Greg KH:
    "Here is the big char/misc driver update for 4.6-rc1.

    The majority of the patches here is hwtracing and some new mic
    drivers, but there's a lot of other driver updates as well. Full
    details in the shortlog.

    All have been in linux-next for a while with no reported issues"

    * tag 'char-misc-4.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: (238 commits)
    goldfish: Fix build error of missing ioremap on UM
    nvmem: mediatek: Fix later provider initialization
    nvmem: imx-ocotp: Fix return value of imx_ocotp_read
    nvmem: Fix dependencies for !HAS_IOMEM archs
    char: genrtc: replace blacklist with whitelist
    drivers/hwtracing: make coresight-etm-perf.c explicitly non-modular
    drivers: char: mem: fix IS_ERROR_VALUE usage
    char: xillybus: Fix internal data structure initialization
    pch_phub: return -ENODATA if ROM can't be mapped
    Drivers: hv: vmbus: Support kexec on ws2012 r2 and above
    Drivers: hv: vmbus: Support handling messages on multiple CPUs
    Drivers: hv: utils: Remove util transport handler from list if registration fails
    Drivers: hv: util: Pass the channel information during the init call
    Drivers: hv: vmbus: avoid unneeded compiler optimizations in vmbus_wait_for_unload()
    Drivers: hv: vmbus: remove code duplication in message handling
    Drivers: hv: vmbus: avoid wait_for_completion() on crash
    Drivers: hv: vmbus: don't loose HVMSG_TIMER_EXPIRED messages
    misc: at24: replace memory_accessor with nvmem_device_read
    eeprom: 93xx46: extend driver to plug into the NVMEM framework
    eeprom: at25: extend driver to plug into the NVMEM framework
    ...

    Linus Torvalds
     

16 Mar, 2016

1 commit


11 Mar, 2016

5 commits


09 Mar, 2016

1 commit


02 Mar, 2016

1 commit


19 Feb, 2016

1 commit

  • Fixes docbook parsing error because documentation
    is not directly followed by the structure, but typedef
    used in structure.

    Reordering should solve that issue.

    Signed-off-by: Martin Sperl
    Signed-off-by: Mark Brown

    Martin Sperl
     

10 Feb, 2016

5 commits

  • In addition to providing direct access to SPI bus, some spi controller
    hardwares (like ti-qspi) provide special port (like memory mapped port)
    that are optimized to improve SPI flash read performance.
    This means the controller can automatically send the SPI signals
    required to read data from the SPI flash device.
    For this, SPI controller needs to know flash specific information like
    read command to use, dummy bytes and address width.

    Introduce spi_flash_read() interface to support accelerated read
    over SPI flash devices. SPI master drivers can implement this callback to
    support interfaces such as memory mapped read etc. m25p80 flash driver
    and other flash drivers can call this make use of such interfaces. The
    interface should only be used with SPI flashes and cannot be used with
    other SPI devices.

    Signed-off-by: Vignesh R
    Signed-off-by: Mark Brown

    Vignesh R
     
  • Add spi_split_transfers_maxsize method that splits
    spi_transfers transparently into multiple transfers
    that are below the given max-size.

    This makes use of the spi_res framework via
    spi_replace_transfers to allocate/free the extra
    transfers as well as reverting back the changes applied
    while processing the spi_message.

    Signed-off-by: Martin Sperl
    Signed-off-by: Mark Brown

    Martin Sperl
     
  • Add the spi_replace_transfers method that can get used
    to replace some spi_transfers from a spi_message with other
    transfers.

    Signed-off-by: Martin Sperl
    Signed-off-by: Mark Brown

    Martin Sperl
     
  • SPI resource management framework used while processing a spi_message
    via the spi-core.

    The basic idea is taken from devres, but as the allocation may happen
    fairly frequently, some provisioning (in the form of an unused spi_device
    pointer argument to spi_res_alloc) has been made so that at a later stage
    we may implement reuse objects allocated earlier avoiding the repeated
    allocation by keeping a cache of objects that we can reuse.

    This framework can get used for:
    * rewriting spi_messages
    * to fullfill alignment requirements of the spi_master HW
    * to fullfill transfer length requirements
    (e.g: transfers need to be less than 64k)
    * consolidate spi_messages with multiple transfers into a single transfer
    when the total transfer length is below a threshold.
    * reimplement spi_unmap_buf without explicitly needing to check if it has
    been mapped

    Signed-off-by: Martin Sperl
    Signed-off-by: Mark Brown

    Martin Sperl
     
  • In Windows it is up to the SPI host controller driver to handle the ACPI
    DeviceSelection as it likes. The SPI core does not take any part in it.
    This is different in Linux because we always expect to have chip select in
    range of 0 .. master->num_chipselect - 1.

    In order to support this in Linux we need a way to allow the driver to
    translate between ACPI DeviceSelection field and Linux chip select number
    so provide a new optional hook ->fw_translate_cs() that can be used by a
    driver to handle translation and call this hook if set during SPI slave
    ACPI enumeration.

    Signed-off-by: Mika Westerberg
    Reviewed-by: Jarkko Nikula
    Signed-off-by: Mark Brown

    Mika Westerberg
     

09 Feb, 2016

1 commit

  • Fix kernel-doc warning for missing struct field notation.

    ..//include/linux/spi/spi.h:540: warning: No description found for parameter 'max_transfer_size'

    [Meaningful subject -- broonie]

    Signed-off-by: Randy Dunlap
    Signed-off-by: Mark Brown

    Randy Dunlap
     

12 Jan, 2016

2 commits


06 Jan, 2016

1 commit

  • On some SPI controllers it is not feasible to transfer arbitrary amount
    of data at once.

    When the limit on transfer size is a few kilobytes at least it makes
    sense to use the SPI hardware rather than reverting to gpio driver.

    The protocol drivers need a way to check that they do not sent overly
    long messages, though.

    Signed-off-by: Michal Suchanek
    Signed-off-by: Mark Brown

    Michal Suchanek
     

13 Dec, 2015

1 commit

  • In the spi_loopback_test driver there is the need to initialize
    a spi_message that is filled with values from a static structure.

    Applying spi_message_init to such a prefilled structure results in
    all the settings getting reset to zero, which is not what we want.
    Copying each field of spi_message separately instead always includes
    the risk that some new fields have not been implemented in the copying
    code.

    So here we introduce a version of spi_message_init called
    spi_message_init_no_memset that does not fill the structure
    with zero first, but only initializes the relevant list_heads.

    Signed-off-by: Martin Sperl
    Signed-off-by: Mark Brown

    Martin Sperl
     

02 Dec, 2015

1 commit


11 Nov, 2015

1 commit

  • Pull ARM SoC cleanups from Olof Johansson:
    "Again we have a sizable (but not huge) cleanup branch with a net delta
    of about -3k lines.

    Main contents here is:

    - A bunch of development/cleanup of a few PXA boards
    - Removal of bockw platforms on shmobile, since the platform has now
    gone completely multiplatform. Whee!
    - move of the 32kHz timer on OMAP to a proper timesource
    - Misc cleanup of older OMAP material (incl removal of one board
    file)
    - Switch over to new common PWM lookup support for several platforms

    There's also a handful of other cleanups across the tree, but the
    above are the major pieces"

    * tag 'armsoc-cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (103 commits)
    ARM: OMAP3: hwmod data: Remove legacy mailbox data and addrs
    ARM: DRA7: hwmod data: Remove spinlock hwmod addrs
    ARM: OMAP4: hwmod data: Remove spinlock hwmod addrs
    ARM: DRA7/AM335x/AM437x: hwmod: Remove gpmc address space from hwmod data
    ARM: Remove __ref on hotplug cpu die path
    ARM: Remove open-coded version of IRQCHIP_DECLARE
    arm: omap2: board-generic: use omap4_local_timer_init for AM437x
    ARM: DRA7/AM335x/AM437x: hwmod: Remove elm address space from hwmod data
    ARM: OMAP: Remove duplicated operand in OR operation
    clocksource: ti-32k: make it depend on GENERIC_CLOCKSOURCE
    ARM: pxa: remove incorrect __init annotation on pxa27x_set_pwrmode
    ARM: pxa: raumfeld: make some variables static
    ARM: OMAP: Change all cpu_is_* occurences to soc_is_* for id.c
    ARM: OMAP2+: Rename cpu_is macros to soc_is
    arm: omap2: timer: limit hwmod usage to non-DT boots
    arm: omap2+: select 32k clocksource driver
    clocksource: add TI 32.768 Hz counter driver
    arm: omap2: timer: rename omap_sync32k_timer_init()
    arm: omap2: timer: always call clocksource_of_init() when DT
    arm: omap2: timer: move realtime_counter_init() around
    ...

    Linus Torvalds
     

04 Nov, 2015

2 commits


28 Oct, 2015

1 commit


24 Oct, 2015

3 commits

  • This is the pxa changes for v4.4 cycle.

    This cycle is bigger than usual :
    - magician was greatly enhanced (new IPs discovered, ...)
    - almost all legacy board files have been updated to the
    new PWM API (mostly for backlight control)
    - some minor fixes in raumfeld, z2 and mioa701

    * tag 'pxa-for-4.4' of https://github.com/rjarzmik/linux: (44 commits)
    ARM: pxa: remove incorrect __init annotation on pxa27x_set_pwrmode
    ARM: pxa: raumfeld: make some variables static
    ARM: pxa: magician: Remove pdata for pasic3-leds
    ARM: pxa: magician: Add support for PXA27x UDC
    ARM: pxa: magician: Add support for MAX1587A Vcore regulator
    ARM: pxa: magician: Change comments to be more informative
    ARM: pxa: magician: Move platform_add_devices() to the end of magician_init()
    ARM: pxa: magician: Add missing regulator for PWM backlight
    ARM: pxa: magician: Add debug message for backlight brightness function
    ARM: pxa: magician: Remove definition of the STUART port
    ARM: pxa: magician: Fix wrongly enabled USB host ports
    ARM: pxa: magician: Fix support for Intel Strata NOR Flash
    ARM: pxa: magician: Fix redundant GPIO request for pxaficp_ir
    ARM: pxa: magician: Fix platform data for both PXA27x I2C controllers
    ARM: pxa: magician: Fix and add charging detection functions
    ARM: pxa: magician: Optimize Samsung LCD refresh to 50Hz
    ARM: pxa: magician: Rename charger cable detection EGPIOs
    ARM: pxa: magician: Optimize powerup delays for Samsung LCD
    ARM: pxa: magician: Rename abstract LCD GPIOs
    ARM: pxa: magician: Add new discovered EGPIO pins
    ...

    Signed-off-by: Olof Johansson

    Olof Johansson
     
  • When building docs with make htmldocs, warnings about not having
    a description for the return value are reported, i.e:

    warning: No description found for return value of 'spi_write'

    Fix these by following the kernel-doc conventions explained in
    Documentation/kernel-doc-nano-HOWTO.txt.

    Signed-off-by: Javier Martinez Canillas
    Signed-off-by: Mark Brown

    Javier Martinez Canillas
     
  • …nux/kernel/git/broonie/spi into spi-doc

    Mark Brown
     

21 Sep, 2015

1 commit


20 Sep, 2015

1 commit


17 Sep, 2015

2 commits

  • chipselect (in the case of spi-gpio: spi_gpio_chipselect, which
    calls gpiod_set_raw_value_cansleep) can sleep, so we should not
    hold a spinlock while calling it from spi_bitbang_setup.

    This issue was introduced by this commit, which converted spi-gpio
    to cansleep variants:
    d9dda5a191 "spi: spi-gpio: Use 'cansleep' variants to access GPIO"

    Replacing the lock variable by a mutex fixes the issue: This is
    safe as all instances where the lock is used are called from
    contexts that can sleep.

    Finally, update spi-ppc4xx and and spi-s3c24xx to use mutex
    functions, as they directly hold the lock for similar purpose.

    Signed-off-by: Nicolas Boichat
    Signed-off-by: Mark Brown

    Nicolas Boichat
     
  • Fix the following 'make htmldocs' warnings:

    .//include/linux/spi/spi.h:71: warning: No description found for parameter 'lock'
    .//include/linux/spi/spi.h:71: warning: Excess struct/union/enum/typedef member 'clock' description in 'spi_statistics'

    Signed-off-by: Geliang Tang
    Signed-off-by: Mark Brown

    Geliang Tang
     

07 Jul, 2015

1 commit

  • per spi-master statistics accessible as:
    /sys/class/spi_master/spi*/statistics/*

    per spi-device statistics accessible via:
    /sys/class/spi_master/spi*/spi*.*/statistics/*

    The following statistics are exposed as separate "files" inside
    these directories:
    * messages number of spi_messages
    * transfers number of spi_transfers
    * bytes number of bytes transferred
    * bytes_rx number of bytes transmitted
    * bytes_tx number of bytes received
    * errors number of errors encounterd
    * timedout number of messages that have timed out
    * spi_async number of spi_messages submitted using spi_async
    * spi_sync number of spi_messages submitted using spi_sync
    * spi_sync_immediate number of spi_messages submitted using spi_sync,
    that are handled immediately without a context switch
    to the spi_pump worker-thread

    Signed-off-by: Martin Sperl
    Signed-off-by: Mark Brown

    Martin Sperl