spi: rspi: Pass spi_master pointer to rspi_release_dma()

rspi_release_dma() doesn't need access to any fields in the driver private
data, except for the pointer to the SPI master object. Hence just pass the
needed pointer.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Mark Brown <broonie@linaro.org>
(cherry picked from commit afcc98dec91b7754e754670bdec0290aa07c3565)
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
spi: rspi: Handle dmaengine_prep_slave_sg() failures gracefully

As typically a shmobile SoC has less DMA channels than devices that can use
DMA, we may want to prioritize access to the DMA channels in the future.
This means that dmaengine_prep_slave_sg() may start failing arbitrarily.

Handle dmaengine_prep_slave_sg() failures gracefully by falling back to
PIO.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
(cherry picked from commit 85912a88c1ebcad04a5cfec971771195ce8d6691)
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
spi: rspi: Fix leaking of unused DMA descriptors

If dmaengine_prep_slave_sg() or dmaengine_submit() fail, we may leak
unused DMA descriptors.

As per Documentation/dmaengine.txt, once a DMA descriptor has been
obtained, it must be submitted. Hence:
  - First prepare and submit all DMA descriptors,
  - Prepare the SPI controller for DMA,
  - Start DMA by calling dma_async_issue_pending(),
  - Make sure to call dmaengine_terminate_all() on all descriptors that
    haven't completed.

Reported-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Mark Brown <broonie@linaro.org>
(cherry picked from commit 3819bc8752367eae0d72fa1c473dc88ea45631a7)
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
devres: Add devm_kasprintf and devm_kvasprintf API

devm_kasprintf() and devm_kvasprintf() are the managed counterparts
for kasprintf() and kvasprintf().

Signed-off-by: Himangi Saraogi <himangi774@gmail.com>
Acked-by: Julia Lawall <julia.lawall@lip6.fr>
Acked-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 75f2a4ead5d5890ada9c2663a70fb58613c0d9f2)
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>

Conflicts:
	include/linux/device.h
devres: Improve devm_kasprintf()/kvasprintf() support

  - Add devm_kasprintf()/kvasprintf(), introduced by commit
    75f2a4ead5d5890ada9c2663a70fb58613c0d9f2 ("devres: Add
    devm_kasprintf and devm_kvasprintf API"), to
    Documentation/driver-model/devres.txt,
  - Improve kernel doc: the string is not an existing formatted string,
    but is formatted into the newly-allocated buffer,
  - Add a __printf() annotation to devm_kasprintf(), so the compiler
    will verify the format string argument types.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit bef59c5024be687ef4f228915af9961307a779ab)
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>

Conflicts:
	Documentation/driver-model/devres.txt
	drivers/base/devres.c
spi: rspi: Remove unneeded semicolon

Introduced by commit 426ef76dd8a394a0e04d096941cd9acb49539a3e ("spi:
rspi: Add DT support").

Reported-by: kbuild test robot <fengguang.wu@intel.com>
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Mark Brown <broonie@linaro.org>
(cherry picked from commit d64b472678e17ef9afb251577f4f544793483fa9)
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
spi: rspi: Use devm_kasprintf()

Use the devm_kasprintf() helper function instead of open coding
error-prone buffer handling and string formatting.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Mark Brown <broonie@linaro.org>
(cherry picked from commit 43937455c9bf294cffc2f25c4a4d0a1b9bbd88e6)
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
spi: rspi: Configure DMA slave bus width to 8 bit

The new Renesas R-Car Gen2 DMA Controller driver (rcar-dmac) requires
explicit configuration of the DMA slave bus width.
Hardcode the DMA transfer size to 1 byte for both directions, as that's
the only supported configuration (16-bit DMA support was removed in
commit 9c5de2c1754c2bb3c69c4d7bf0d0edc0a61d8232 ("spi: rspi: Remove
unused 16-bit DMA support")).

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Mark Brown <broonie@linaro.org>
(cherry picked from commit a30b95a7d81cfc3442beb5a9635f22b19c97bbfc)
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
spi: rspi: Add DT support to DMA setup

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Mark Brown <broonie@linaro.org>
(cherry picked from commit e825b8dd2b363e9134006fb141825518a11b2bf4)
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>

Conflicts:
	Documentation/devicetree/bindings/spi/spi-rspi.txt
spi: rspi: Add support for new R-Car Gen2 SoCs

Add support for QSPI in:
  - r8a7792 (R-Car V2H)
  - r8a7793 (R-Car M2-N)
  - r8a7794 (R-Car E2)

r8a7791 is now called "R-Car M2-W".

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Mark Brown <broonie@linaro.org>
(cherry picked from commit 6089af775a4b4ea5237648de650dda548cb841c2)
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>

Conflicts:
	Documentation/devicetree/bindings/spi/spi-rspi.txt
Revert "ARM: shmobile: Remove cpuinit annotations for suspend"

This reverts commit 05ff52341efe14fe35bd868dbe0c7579b7d82e17.
Revert "ARM: Remove cpuinit annotation from secondary_startup"

This reverts commit 060066928ffdeec886b4c38a7cb476139548ddf0.