summaryrefslogtreecommitdiffstats
path: root/drivers/spi
AgeCommit message (Collapse)Author
2013-07-18driver: spi: Modify core to compute the message lengthSourav Poddar
Make spi core calculate the message length while populating the other transfer parameters. Usecase, driver can use it to populate framelength filed in their controller. Signed-off-by: Sourav Poddar <sourav.poddar@ti.com> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-17spi: spi-bitbang: Fix conversion of spi_bitbang_transfer_one()Fabio Estevam
Since commit 2025172e3 (spi/bitbang: Use core message pump), the following kernel crash is seen: Unable to handle kernel NULL pointer dereference at virtual address 0000000d pgd = 80004000 [0000000d] *pgd=00000000 Internal error: Oops: 5 [#1] SMP ARM Modules linked in: CPU: 1 PID: 48 Comm: spi32766 Not tainted 3.11.0-rc1+ #4 task: bfa3e580 ti: bfb90000 task.ti: bfb90000 PC is at spi_bitbang_transfer_one+0x50/0x248 LR is at spi_bitbang_transfer_one+0x20/0x248 ... ,and also the following build warning: drivers/spi/spi-bitbang.c: In function 'spi_bitbang_start': drivers/spi/spi-bitbang.c:436:31: warning: assignment from incompatible pointer type [enabled by default] In order to fix it, we need to change the first parameter of spi_bitbang_transfer_one() to 'struct spi_master *master'. Tested on a mx6qsabrelite by succesfully probing a SPI NOR flash. Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-17spi/xilinx: signedness issue checking platform_get_irq()Dan Carpenter
In xilinx_spi_probe() we use xspi->irq to store negative error codes so it has to be signed. We weren't going to use the upper bit any way so this is fine. Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-17spi/bitbang: Use core message pumpMark Brown
Convert drivers using bitbang to use the core mesasge pump infrastructure, saving some code and meaning that these drivers get to take advantage of work done on improving the core implementation. Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-17spi: spi-ep93xx: convert to the queued driver infrastructureH Hartley Sweeten
The SPI core provides infrastructure for standard message queueing. Use that instead of handling it in the driver. Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Acked-by: Mika Westerberg <mika.westerberg@iki.fi> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-17spi: atmel: prepare clk before calling enableBoris BREZILLON
Replace clk_enable/disable with clk_prepare_enable/disable_unprepare to avoid common clk framework warnings. Signed-off-by: Boris BREZILLON <b.brezillon@overkiz.com> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15Merge remote-tracking branch 'spi/fix/xilinx' into spi-linusMark Brown
2013-07-15Merge remote-tracking branch 'spi/fix/setup' into spi-linusMark Brown
2013-07-15Merge remote-tracking branch 'spi/fix/s3c64xx' into spi-linusMark Brown
2013-07-15spi/xilinx: Simplify irq allocationMichal Simek
Use devm_request_irq() for irq allocation which simplify driver code. Signed-off-by: Michal Simek <michal.simek@xilinx.com> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi/xilinx: Use of_property_read_u32 for reading value from nodeMichal Simek
It simplifies driver probing. Signed-off-by: Michal Simek <michal.simek@xilinx.com> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi/xilinx: Clean ioremap callingMichal Simek
devm_ioremap_resource() automatically checks that struct resource is initialized. Also group platform_get_resource() and devm_ioremap_resource() together. And remove mem resource from struct xilinx_spi. Signed-off-by: Michal Simek <michal.simek@xilinx.com> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi/xilinx: Remove CONFIG_OF from the driverMichal Simek
dev.of_node is in struct device all the time. Signed-off-by: Michal Simek <michal.simek@xilinx.com> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi/xilinx: Refer to platform device as pdev in probe() and remove()Mark Brown
This is a more traditional name and makes things a bit clearer when referring to actual struct devices as we do frequently during probe(). Signed-off-by: Mark Brown <broonie@linaro.org> Acked-by: Michal Simek <michal.simek@xilinx.com>
2013-07-15spi/xilinx: Remove remains of of_platform device registrationMark Brown
In the past there used to be a separate platform device type for device tree systems so the probe and removal functions were split into generic and bus sections. Since this is no longer the case simplify the code (and remove some unprototyped exports) by factoring everything into the bus probe() and remove(). Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi/xilinx: Convert to devm_ioremap_resource()Mark Brown
Saves code and reduces the possibility of error. Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi: tle62x0: dump small buffers using %*phAndy Shevchenko
We have nice specifier in kernel for that. It changes separator from ',' (comma) to space, though it's not a big deal since it's just a debug message. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi: tegra114: remove redundant dev_err call in tegra_spi_probe()Wei Yongjun
There is a error message within devm_ioremap_resource already, so remove the dev_err call to avoid redundant error message. Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi: sirf: add missed spi mode_bits that SiRFSoC hardware supportsQipan Li
Missing this will cause some user cases fail when they want to change spi transfer mode. Signed-off-by: Qipan Li <Qipan.Li@csr.com> Signed-off-by: Barry Song <Baohua.Song@csr.com> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi: s3c64xx: add missing check for polling modeGirish K S
Due to changes in mainline prior to submission the spi device detection in polling mode breaks. This revealed the missing check for polling during dma prepare. This patch adds the missing check. Signed-off-by: Girish K S <ks.giri@samsung.com> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi/pxa2xx: enable DMA on newer Intel LPSS siliconMika Westerberg
There is an additional bit in the Intel LPSS SPI private registers that needs to be set in order to be able to use DMA with the SPI controller. Enable this as well. Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi/omap-100k: Convert to module_platform_driver()Mark Brown
Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi/omap-100k: Prepare and unprepare clocksMark Brown
Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi/omap-100k: Convert to devm_clk_get()Mark Brown
Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi/omap-100k: Convert to use core message queue implementationMark Brown
Saves some code duplication and gets us the benefits of any improvements in the core code. Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi/omap-100k: Factor message transfer function out of work queueMark Brown
In preparation for removing the custom workqueue. Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi/omap-100k: Use core functionality to check validity of transfersMark Brown
Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi/omap-100k: Remove empty reset functionMark Brown
Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi: spi-mxs: Check the return value from stmp_reset_block()Fabio Estevam
stmp_reset_block() may fail, so let's check its return value and propagate it in the case of error. Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com> Acked-by: Marek Vasut <marex@denx.de> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi: spi-mxs: Check the return value from clk_prepare_enable()Fabio Estevam
clk_prepare_enable() may fail, so let's check its return value and propagate it in the case of error. While at it, rename 'out_free_dma' to 'out_disable_clk' so that it can properly describe its purpose. Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com> Acked-by: Marek Vasut <marex@denx.de> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi: spi-mxs: Fix the error path sequenceFabio Estevam
On mxs_spi_probe() the dma channels are requested prior to enabling the SSP clock, so in the error path we should disable the SSP clock first and release the DMA channels later. Same logic applies in mxs_spi_remove(). Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com> Acked-by: Marek Vasut <marex@denx.de> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi: spi-imx: Check the return value from clk_prepare_enable()Fabio Estevam
clk_prepare_enable() may fail, so let's check its return value and propagate it in the case of error. While at it, fix the order of clk_disable_unprepare calls: clk_ipg should be disabled first, followed by clk_per. Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi: spi-imx: Use devm functionsFabio Estevam
Using devm functions can make the code smaller and cleaner. Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi: spi-ep93xx: move the clock divider calcs into ep93xx_spi_chip_setup()H Hartley Sweeten
The divider values stored in the per chip data are only used to set the registers in the hardware to generate the desired SPI clock. Since these are calculated per transfer based on the t->speed_hz there is no reason keep them in the per chip data. Move the ep93xx_spi_calc_divisors() call into ep93xx_spi_chip_setup() and return the dividers thru pointers. Remove the divider values from the per chip data structure. Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Acked-by: Mika Westerberg <mika.westerberg@iki.fi> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi: spi-ep93xx: don't bother calculating the divisors in ep93xx_spi_setup()H Hartley Sweeten
The divisors needed to generate the SPI clock are calculated per transfer based on the t->speed_hz. There is no reason to calculate them in ep93xx_spi_setup(). Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Acked-by: Mika Westerberg <mika.westerberg@iki.fi> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi: spi-ep93xx: use devm_clk_get()H Hartley Sweeten
Use devm_clk_get() so that the clk_put() happens automatically when the last reference to this driver is dropped. Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Acked-by: Mika Westerberg <mika.westerberg@iki.fi> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi: spi-ep93xx: remove 'dss' from per chip private dataH Hartley Sweeten
This value is only needed to set the bits per word for each transfer of a message. There is no reason to set the value in ep93xx_spi_enable() because ep93xx_spi_process_transfer() sets it again for each transfer. Just pass the t->bits_per_word directly to ep93xx_spi_chip_setup() in ep93xx_spi_process_transfer() and remove 'dss' from the per chip private data. Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Acked-by: Mika Westerberg <mika.westerberg@iki.fi> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi: spi-ep93xx: remove dev_err() for kzalloc() failureH Hartley Sweeten
The kzalloc() failure will have already output a message. Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Acked-by: Mika Westerberg <mika.westerberg@iki.fi> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi: spi-ep93xx: get platform resources early in (*probe)H Hartley Sweeten
Get the platform resources early in the (*probe) to minimize the number of goto's in the error path. Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Acked-by: Mika Westerberg <mika.westerberg@iki.fi> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi: spi-ep93xx: remove bits_per_word() helperH Hartley Sweeten
Check t->bits_per_word directly and remove the inline helper function. Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Acked-by: Mika Westerberg <mika.westerberg@iki.fi> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi: spi-ep93xx: use read,write instead of __raw_* variantsH Hartley Sweeten
The memory resource used by this driver is ioremap()'d and the normal read,write calls can be used instead of the __raw_* variants. Also, remove the inline tag on the helper functions and let the compiler decide if they are inlined. Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Acked-by: Mika Westerberg <mika.westerberg@iki.fi> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi: spi-ep93xx: always handle transfer specific settingsH Hartley Sweeten
__spi_async(), which starts every SPI message transfer, initializes the bits_per_word and max speed for every transfer in the message. Since the conditional test in ep93xx_spi_process_transfer() will always succeed just remove it and always call ep93xx_spi_chip_setup() to configure the hardware for each transfer in the message. Remove the redundant ep93xx_spi_chp_setup() in ep93xx_spi_process_transfer() which just initializes the hardware to the "default" based on the SPI device. Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Acked-by: Mika Westerberg <mika.westerberg@iki.fi> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi/clps711x: Remove unneeded devm_ deallocationsMark Brown
The whole point of devm is that it'll do these automatically. Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi: More sanity checks for transfersMark Brown
Check that transfers are non-empty and that there is a completion for them. Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi: Support transfer speed checking in the coreMark Brown
Allow drivers to avoid implementing their own checks for simple rates by specifying the limits in the master structure. Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi/rspi: Add missing dependency on DMAEMark Brown
The filter function used by the rspi driver is part of the DMAE controller driver so if the DMA controller driver is somehow disabled then the rspi driver will fail to build. Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi: add spi controller v3 master driver for BlackfinScott Jiang
New spi controller(version 3) is integrated into Blackfin 60x processor. Comparing to bf5xx spi controller, we support 32 bits word size and independent receive and transmit DMA channels now. Also mode 0 and 2 (CPHA = 0) can get fully supported becasue cs line may be controlled by the software. Signed-off-by: Scott Jiang <scott.jiang.linux@gmail.com> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi/bitbang: Factor out message transfer from message pump loopMark Brown
In order to make it easier to convert to transfer_one_message() lift the code that does the actual message transfer out of the work function that implements the message pump. This should have no functional impact, it's just a simple code motion patch. Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15spi/bitbang: Unexport spi_bitbang_transfer()Mark Brown
Currently no drivers use the ability to override spi_bitbang_transfer() and if any started this would make it harder to convert the bitbang code to use transfer_one_message() so remove the export in order to prevent anyone starting. Signed-off-by: Mark Brown <broonie@linaro.org>
2013-07-15PTR_RET is now PTR_ERR_OR_ZERO(): Replace most.Rusty Russell
Sweep of the simple cases. Cc: netdev@vger.kernel.org Cc: linuxppc-dev@lists.ozlabs.org Cc: linux-arm-kernel@lists.infradead.org Cc: Julia Lawall <julia.lawall@lip6.fr> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Acked-by: David S. Miller <davem@davemloft.net> Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>