23 Feb, 2017

2 commits

  • There is official workaound for TKT238285, so remove the limitation
    for i.mx6dl.

    Signed-off-by: Robin Gong

    Robin Gong
     
  • We set both wartermark of txfifo and rxfifo 32 as half of fifo length 64.
    That will cause easy rxfifo overflow:
    If there is 31 bytes in rxfifo, rx script will wait the next dma request
    (the 32th data come into the rxfifo) and schedule out to tx script. Once
    tx script start to run, the rx script need to wait tx script finish even
    if its priority higher than tx. Meanwhile, spi slave device may input
    data continous, plus the rx data which triggered by new tx script(32 bytes).
    That will quickly consume whole 64 bytes fifo, so we keep 16bytes availbale
    even in the worst case new tx script triggered during two rx transfer. That
    may slow down tx slightly, but better than overflow and RX DMA timeout.

    Signed-off-by: Robin Gong
    (cherry picked from commit 16043ad0ad96aa04a90614e473aa17980af4b8af)
    (cherry picked from commit 819efee83b7b1f47685dca6fad6bbe17f1c42092)
    (cherry picked from commit 5c4c7d05bbba0ea2b26ef2f3ae83119d5eada235)

    Robin Gong
     

26 Jan, 2017

1 commit

  • commit a2dd8af00ca7fff4972425a4a6b19dd1840dc807 upstream.

    The commit 7c7289a40425 ("spi: pxa2xx: Default thresholds to PXA
    configuration") while splitting up CE4100 code obviously missed a break
    condition in one chunk. Add it here.

    Looks like we have no active user of CE4100, though better to fix this later
    than never.

    Fixes: commit 7c7289a40425 ("spi: pxa2xx: Default thresholds to PXA configuration")
    Signed-off-by: Andy Shevchenko
    Signed-off-by: Mark Brown
    Signed-off-by: Greg Kroah-Hartman

    Andy Shevchenko
     

15 Jan, 2017

1 commit

  • commit 7243e0b20729d372e97763617a7a9c89f29b33e1 upstream.

    The calculation of SPR and SPPR doesn't round correctly at several
    places which might result in baud rates that are too big. For example
    with tclk_hz = 250000001 and target rate 25000000 it determined a
    divider of 10 which is wrong.

    Instead of fixing all the corner cases replace the calculation by an
    algorithm without a loop which should even be quicker to execute apart
    from being correct.

    Fixes: df59fa7f4bca ("spi: orion: support armada extended baud rates")
    Signed-off-by: Uwe Kleine-König
    Signed-off-by: Mark Brown
    Signed-off-by: Greg Kroah-Hartman

    Uwe Kleine-König
     

30 Oct, 2016

2 commits


26 Oct, 2016

1 commit

  • When we get a spurious interrupt in fsl_espi_irq, we end up
    processing four uninitalized bytes of data, as shown in this
    warning message:

    drivers/spi/spi-fsl-espi.c: In function 'fsl_espi_irq':
    drivers/spi/spi-fsl-espi.c:462:4: warning: 'rx_data' may be used uninitialized in this function [-Wmaybe-uninitialized]

    This adds another check so we skip the data in this case.

    Fixes: 6319a68011b8 ("spi/fsl-espi: avoid infinite loops on fsl_espi_cpu_irq()")
    Signed-off-by: Arnd Bergmann
    Signed-off-by: Mark Brown
    Cc: stable@vger.kernel.org

    Arnd Bergmann
     

25 Oct, 2016

1 commit

  • Instantiated SPI device nodes are marked with OF_POPULATE. This was
    introduced in bd6c164. On unloading, loaded device nodes will of course
    be unmarked. The problem are nodes that fail during initialisation: If a
    node fails, it won't be unloaded and hence not be unmarked.

    If a SPI driver module is unloaded and reloaded, it will skip nodes that
    failed before.

    Skip device nodes that are already populated and mark them only in case
    of success.

    Note that the same issue exists for I2C.

    Fixes: bd6c164 ("spi: Mark instantiated device nodes with OF_POPULATE")
    Signed-off-by: Ralf Ramsauer
    Reviewed-by: Geert Uytterhoeven
    Acked-by: Pantelis Antoniou
    Signed-off-by: Mark Brown
    Cc: stable@vger.kernel.org

    Ralf Ramsauer
     

12 Oct, 2016

1 commit

  • A good practice is to prefix the names of functions by the name
    of the subsystem.

    The kthread worker API is a mix of classic kthreads and workqueues. Each
    worker has a dedicated kthread. It runs a generic function that process
    queued works. It is implemented as part of the kthread subsystem.

    This patch renames the existing kthread worker API to use
    the corresponding name from the workqueues API prefixed by
    kthread_:

    __init_kthread_worker() -> __kthread_init_worker()
    init_kthread_worker() -> kthread_init_worker()
    init_kthread_work() -> kthread_init_work()
    insert_kthread_work() -> kthread_insert_work()
    queue_kthread_work() -> kthread_queue_work()
    flush_kthread_work() -> kthread_flush_work()
    flush_kthread_worker() -> kthread_flush_worker()

    Note that the names of DEFINE_KTHREAD_WORK*() macros stay
    as they are. It is common that the "DEFINE_" prefix has
    precedence over the subsystem names.

    Note that INIT() macros and init() functions use different
    naming scheme. There is no good solution. There are several
    reasons for this solution:

    + "init" in the function names stands for the verb "initialize"
    aka "initialize worker". While "INIT" in the macro names
    stands for the noun "INITIALIZER" aka "worker initializer".

    + INIT() macros are used only in DEFINE() macros

    + init() functions are used close to the other kthread()
    functions. It looks much better if all the functions
    use the same scheme.

    + There will be also kthread_destroy_worker() that will
    be used close to kthread_cancel_work(). It is related
    to the init() function. Again it looks better if all
    functions use the same naming scheme.

    + there are several precedents for such init() function
    names, e.g. amd_iommu_init_device(), free_area_init_node(),
    jump_label_init_type(), regmap_init_mmio_clk(),

    + It is not an argument but it was inconsistent even before.

    [arnd@arndb.de: fix linux-next merge conflict]
    Link: http://lkml.kernel.org/r/20160908135724.1311726-1-arnd@arndb.de
    Link: http://lkml.kernel.org/r/1470754545-17632-3-git-send-email-pmladek@suse.com
    Suggested-by: Andrew Morton
    Signed-off-by: Petr Mladek
    Cc: Oleg Nesterov
    Cc: Tejun Heo
    Cc: Ingo Molnar
    Cc: Peter Zijlstra
    Cc: Steven Rostedt
    Cc: "Paul E. McKenney"
    Cc: Josh Triplett
    Cc: Thomas Gleixner
    Cc: Jiri Kosina
    Cc: Borislav Petkov
    Cc: Michal Hocko
    Cc: Vlastimil Babka
    Signed-off-by: Arnd Bergmann
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Petr Mladek
     

01 Oct, 2016

6 commits


30 Sep, 2016

2 commits


29 Sep, 2016

1 commit


27 Sep, 2016

2 commits

  • The driver uses custom chip_info coming from platform data for chip selects
    implemented as GPIOs. If the system lacks board files setting up the
    platform data, it is not possible to use GPIOs as chip selects.

    This adds support for GPIO descriptors so that regardless of the underlying
    firmware interface (DT, ACPI or platform data) the driver can request GPIOs
    used as chip selects and configure them accordingly.

    The custom chip_info GPIO support is still left there to make sure the
    existing systems keep working as expected.

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

    Mika Westerberg
     
  • It is possible that master->cs_gpios is NULL after spi_bitbang_start(),
    this happens if the master has no CS GPIOs specified in DT. Check for
    this case after spi_bitbang_start() to prevent NULL pointer dereference
    in the subsequent for loop, which accesses the master->cs_gpios field.

    Signed-off-by: Marek Vasut
    Cc: Martin Kaiser
    Cc: Mark Brown
    Signed-off-by: Mark Brown

    Marek Vasut
     

25 Sep, 2016

4 commits


17 Sep, 2016

2 commits


16 Sep, 2016

2 commits

  • The two power management functions are define inside of an #ifdef
    but referenced unconditionally, which is obviously broken when
    CONFIG_PM_SLEEP is not set:

    drivers/spi/spi-bcm-qspi.c:1300:13: error: 'bcm_qspi_suspend' undeclared here (not in a function)
    drivers/spi/spi-bcm-qspi.c:1301:13: error: 'bcm_qspi_resume' undeclared here (not in a function)

    This replaces the #ifdef with a __maybe_unused annotation that lets
    the compiler figure out whether to drop the functions itself,
    and uses SIMPLE_DEV_PM_OPS() to refer to the functions.

    This will also fill the freeze/thaw/poweroff/restore callback
    pointers in addition to suspend/resume, but as far as I can tell,
    this is what we want.

    Signed-off-by: Arnd Bergmann
    Fixes: fa236a7ef240 ("spi: bcm-qspi: Add Broadcom MSPI driver")
    Signed-off-by: Mark Brown

    Arnd Bergmann
     
  • The header isn't actually needed here, but including it leads
    to a build warning when CONFIG_MTD is disabled:

    include/linux/mtd/cfi.h:76:2: #warning No CONFIG_MTD_CFI_Ix selected. No NOR chip support can work. [-Werror=cpp]

    Fixes: fa236a7ef240 (spi: bcm-qspi: Add Broadcom MSPI driver)
    Signed-off-by: Arnd Bergmann
    Signed-off-by: Mark Brown

    Arnd Bergmann
     

15 Sep, 2016

9 commits


14 Sep, 2016

1 commit


13 Sep, 2016

2 commits