13 Sep, 2016

1 commit

  • Most of the devices in the supported list have PXA configuration of FIFO. In
    particularly Intel Medfield and Merrifield have bigger FIFO, than it's defined
    for CE4100.

    Split CE4100 in the similar way how it was done for Intel Quark, i.e. prefix
    definitions by CE4100 and append necessary pieces of code to switch case
    conditions.

    We are on safe side since those bits are ignored on all LPSS IPs.

    Signed-off-by: Andy Shevchenko
    Reviewed-by: Jarkko Nikula
    Signed-off-by: Mark Brown

    Andy Shevchenko
     

10 Feb, 2016

1 commit

  • Intel Braswell LPSS SPI controller actually has two chip selects and there
    is no capabilities register where this could be found out. These two chip
    selects are controlled by bits which are in slightly differrent location
    than Broxton has.

    Braswell Windows driver also starts chip select (ACPI DeviceSelection)
    numbering from 1 so translate it to be suitable for Linux as well.

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

    Mika Westerberg
     

30 Oct, 2015

1 commit

  • LPSS SPI in Intel Broxton is otherwise the same than in Intel Sunrisepoint
    but it supports up to four chip selects per port and has different FIFO
    thresholds. Patch adds support for two Broxton SoC variants.

    Signed-off-by: Jarkko Nikula
    Signed-off-by: Mark Brown

    Jarkko Nikula
     

01 Aug, 2015

1 commit

  • Major difference in LPSS SPI between Intel Sunrisepoint PCH and earlier
    platforms is an integrated DMA (iDMA) engine. iDMA is an IP that is private
    for each LPSS host controller (UART/SPI/I2C). Other differences are private
    register space offset, a few private registers that are in different
    location and FIFO thresholds.

    Intel Sunrisepoint LPSS SPI and iDMA devices are probed and registered in
    MFD layer as platform devices. Here these compound devices are detected by
    matching against known PCI IDs. This allows us to share
    pxa2xx_spi_acpi_get_pdata() for setting up the platform data instead of
    duplicating it in MFD part.

    This patch adds configuration for Intel Sunrisepoint LPSS SPI, above
    detection and DMA filter function that picks the DMA channel only from an
    associated iDMA block.

    Signed-off-by: Jarkko Nikula
    Signed-off-by: Mark Brown

    Jarkko Nikula
     

05 Jun, 2015

2 commits

  • Some of the Intel LPSS SPI properties will be different in upcoming
    platforms compared to existing Lynxpoint and BayTrail/Braswell. LPSS SPI
    private registers will be at different offset and there will be changes in
    individual registers and default FIFO thresholds too.

    Add configuration for these differences and use them in runtime based on
    LPSS SSP type. With this change private registers offset autodetection
    becomes needless.

    Signed-off-by: Jarkko Nikula
    Signed-off-by: Mark Brown

    Jarkko Nikula
     
  • Intel LPSS SPI properties differ between between platforms. Now private
    registers offset 0x400 or 0x800 is autodetected but there is need to
    support also other offset and handle a few other differences.

    Prepare for that by splitting the LPSS_SSP type into compatible hardware
    types and set it now based on PCI or ACPI ID. That type will be used to set
    properties that differ between current and upcoming platforms.

    Signed-off-by: Jarkko Nikula
    Signed-off-by: Mark Brown

    Jarkko Nikula
     

23 Dec, 2014

1 commit


27 Nov, 2014

1 commit

  • There are two SPI controllers exported by PCI subsystem for Intel Quark X1000.
    The SPI memory mapped I/O registers supported by Quark are different from
    the current implementation, and Quark only supports the registers of 'SSCR0',
    'SSCR1', 'SSSR', 'SSDR', and 'DDS_RATE'. This patch is to enable the SPI for
    Intel Quark X1000.

    This piece of work is derived from Dan O'Donovan's initial work for Intel Quark
    X1000 SPI enabling.

    Reviewed-by: Andy Shevchenko
    Acked-by: Mika Westerberg
    Signed-off-by: Weike Chen
    Signed-off-by: Mark Brown

    Weike Chen
     

22 Mar, 2014

1 commit

  • The functions declared in include/linux/pxa2xx_ssp.h are
    defined in plat-pxa/ssp.c, which can also be built for
    PLAT_MMP, but may be disabled there. This can lead to
    both unresolved symbols at link time and to duplicate
    symbols at compile time for random configurations.

    Changing the #ifdef in the header file to match the
    Kconfig symbol that decides if the file is built solves
    both problems.

    Signed-off-by: Arnd Bergmann
    Cc: Eric Miao
    Cc: Russell King
    Cc: Haojian Zhuang
    Cc: Daniel Mack

    Arnd Bergmann
     

15 Aug, 2013

1 commit


08 Feb, 2013

1 commit

  • Intel LPSS SPI is pretty much the same as the PXA27xx SPI except that it
    has few additional features over the original:

    o FIFO depth is 256 entries
    o RX FIFO has one watermark
    o TX FIFO has two watermarks, low and high
    o chip select can be controlled by writing to a register

    The new FIFO registers follow immediately the PXA27xx registers but then there
    are some additional LPSS private registers at offset 1k or 2k from the base
    address. For these private registers we add new accessors that take advantage
    of drv_data->lpss_base once it is resolved.

    We add a new type LPSS_SSP that can be used to distinguish the LPSS devices
    from others.

    Signed-off-by: Mika Westerberg
    Tested-by: Lu Cao
    Signed-off-by: Mark Brown

    Mika Westerberg
     

08 Jan, 2013

1 commit

  • The spi-pxa2xx-pci glue driver had to implement pxa_ssp_request()/free() in
    order to support the spi-pxa2xx platform driver. Since the ACPI enabled
    platforms can use the same platform driver we would need to implement
    pxa_ssp_request()/free() in some central place that can be shared by the
    ACPI and PCI glue code.

    Instead of doing that we can make pxa_ssp_request()/free() to be available
    only when CONFIG_ARCH_PXA is set. On other arches these are being stubbed
    out in preference to passing the ssp_device from the platform data
    directly.

    We also change the SPI bus number to be taken from ssp->port_id instead of
    platform device id. This way the supporting code that passes the ssp can
    decide the number (or it can set it to the same as pdev->id).

    Signed-off-by: Mika Westerberg
    Signed-off-by: Mark Brown

    Mika Westerberg
     

11 Jun, 2012

2 commits


31 Mar, 2011

1 commit


03 Dec, 2010

1 commit

  • The SPI core on Sodaville supports chip selects. Its configuration
    moved into the SSSR register at bit 0 and 1. Thus Sodaville can be hooked
    up with up to 4 devices.
    This patch ensures that the bits which are otherwiese reserved are only
    touched on Sodaville and not on any other PXAs. Also it makes sure that
    the status register does not lose the CS information while clearing the
    ROR bit.

    Signed-off-by: Sebastian Andrzej Siewior
    Signed-off-by: Dirk Brandewie

    Sebastian Andrzej Siewior
     

01 Dec, 2010

2 commits

  • For PXA the default threshold is FIFO_DEPTH / 2. Adjust this value for
    CE4100.

    Signed-off-by: Sebastian Andrzej Siewior
    Signed-off-by: Dirk Brandewie

    Sebastian Andrzej Siewior
     
  • The PXA-SPI driver relies on some files / defines which are arm specific
    and are within the ARM tree. The CE4100 SoC which is x86 has also the
    SPI core.
    This patch moves the ssp and spi files from arm/mach-pxa and plat-pxa to
    include/linux where the CE4100 can access them.

    This move got verified by building the following defconfigs:
    cm_x2xx_defconfig corgi_defconfig em_x270_defconfig ezx_defconfig
    imote2_defconfig pxa3xx_defconfig spitz_defconfig zeus_defconfig
    raumfeld_defconfig magician_defconfig

    Signed-off-by: Sebastian Andrzej Siewior
    Signed-off-by: Dirk Brandewie

    Sebastian Andrzej Siewior