aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/spi/spi-ti-qspi.c
Commit message (Collapse)AuthorAgeFilesLines
...
* spi: ti-qspi: cleanup wait_for_completion return handlingNicholas Mc Guire2015-02-051-8/+6
| | | | | | | | | return type of wait_for_completion_timeout is unsigned long not int, this patch uses the return value of wait_for_completion_timeout in the condition directly rather than assigning it to an incorrect type variable. Signed-off-by: Nicholas Mc Guire <[email protected]> Signed-off-by: Mark Brown <[email protected]>
* spi: drop owner assignment from platform_driversWolfram Sang2014-10-201-1/+0
| | | | | | | A platform_driver does not need to set an owner, it will be populated by the driver core. Signed-off-by: Wolfram Sang <[email protected]>
*-. Merge remote-tracking branches 'spi/topic/sunxi', 'spi/topic/tegra114', ↵Mark Brown2014-03-301-1/+0
|\ \ | | | | | | | | | 'spi/topic/ti-qspi', 'spi/topic/ti-ssp', 'spi/topic/topcliff-pch', 'spi/topic/txx9', 'spi/topic/xcomm' and 'spi/topic/xfer' into spi-next
| | * spi/ti-qspi: Fix return from mmap pathSourav Poddar2014-03-101-1/+0
| |/ | | | | | | | | | | | | | | | | mmap resource requirement is only for memory mapped operations. If the user does not populate mmap resource, dont call return, instead we go on for normal spi mode operations. Signed-off-by: Sourav Poddar <[email protected]> Signed-off-by: Mark Brown <[email protected]>
| |
| \
*-. | Merge remote-tracking branches 'spi/topic/bus-num', 'spi/topic/cleanup', ↵Mark Brown2014-03-301-1/+0
|\ \| | | | | | | | | | 'spi/topic/clps711x', 'spi/topic/coldfire', 'spi/topic/completion' and 'spi/topic/davinci' into spi-next
| * | spi: Remove explictly set bus_num and num_chipselect to default settingAxel Lin2014-02-161-1/+0
| |/ | | | | | | | | | | | | | | | | | | | | | | | | The purpose of commit 1e8a52e18cfb "spi: By default setup spi_masters with 1 chipselect and dynamics bus number" is to avoid setting default value for bus_num and num_chipselect in spi master drivers. So let's remove the duplicate code. Signed-off-by: Axel Lin <[email protected]> Acked-by: Uwe Kleine-König <[email protected]> Acked-By: David Daney <[email protected]> Acked-by: Stephen Warren <[email protected]> Signed-off-by: Mark Brown <[email protected]>
* / spi: Use SPI_BPW_MASK macro at appropriate placesAxel Lin2014-02-071-1/+2
|/ | | | | Signed-off-by: Axel Lin <[email protected]> Signed-off-by: Mark Brown <[email protected]>
*-. Merge remote-tracking branches 'spi/topic/pxa2xx', 'spi/topic/qspi', ↵Mark Brown2014-01-231-44/+73
|\ \ | | | | | | | | | 'spi/topic/s3c24xx', 'spi/topic/s3c64xx', 'spi/topic/sh', 'spi/topic/tegra114', 'spi/topic/tegra20-sflash', 'spi/topic/tegra20-slink', 'spi/topic/txx9' and 'spi/topic/xcomm' into spi-linus
| | * spi: ti-qspi: Fixup driver nameAxel Lin2014-01-131-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The driver name in current code looks like a compatible string which is not the naming convention for platform drivers. Fix it and also add modalias since this driver can be built as a module. Signed-off-by: Axel Lin <[email protected]> Acked-by: Sourav Poddar <[email protected]> Signed-off-by: Mark Brown <[email protected]>
| | * spi: ti-qspi: Simplify qspi_write_msg and qspi_read_msg implementationAxel Lin2014-01-131-41/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | Make the unit of wlen to be byte, and simplify the code to avoid duplicate code for different wlen cases. Signed-off-by: Axel Lin <[email protected]> Acked-by: Sourav Poddar <[email protected]> Signed-off-by: Mark Brown <[email protected]>
| | * spi/qspi: parse register by name.Sourav Poddar2013-12-191-2/+51
| |/ | | | | | | | | | | | | | | | | Modify the qspi driver to parse reg information by name. If "reg names" is not found, then revert back to normal get resource. Signed-off-by: Sourav Poddar <[email protected]> Signed-off-by: Mark Brown <[email protected]>
* | spi: ti-qspi: Fix getting correct address for qspiAxel Lin2014-01-071-7/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now platform_get_drvdata() returns the address of qspi rather than master. Also drop unneeded spi_unregister_master() call in ti_qspi_remove() because we use devm_spi_register_master() in probe. commit cbcabb7a300b "spi/qspi: Fix qspi remove path" assumes platform_get_drvdata() returns address of master. However, commit 160a061301c7 "spi/qspi: set correct platform drvdata in ti_qspi_probe()" pass qspi to platform_set_drvdata(). Signed-off-by: Axel Lin <[email protected]> Reviewed-by: Sourav Poddar <[email protected]> Signed-off-by: Mark Brown <[email protected]>
* | spi/qspi: Fix runtime resume pathSourav Poddar2013-12-311-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Due to the following commit commit 160a061301c7adf54c40696e7ceedc73f6b747dd Author: Wei Yongjun <[email protected]> Date: Mon Nov 11 14:13:41 2013 +0800 spi/qspi: set correct platform drvdata in ti_qspi_probe() The ti_qspi_remove() use the platform drvdata as a type of struct ti_qspi, we should pass correct platform drvdata to platform_set_drvdata() in ti_qspi_probe(). Signed-off-by: Wei Yongjun <[email protected]> Signed-off-by: Mark Brown <[email protected]> platform_set_drvdata was changed in the probe, so we need to correspondingly change deferencing of qspi in runtime resume path. Else, this will lead to a NULL dereference pointer. Based on v3.13-rc3 Signed-off-by: Sourav Poddar <[email protected]> Signed-off-by: Mark Brown <[email protected]>
* | spi/qspi: Fix qspi remove path.Sourav Poddar2013-11-241-1/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There is a bug in qspi removal path, as a result of which qspi cannot be removed when used as a module. The patch solves the bug and qspi can be removed cleanly. The bugs fixed are: -pm_runtime used around register access. - pm_runtime_disable need to be done before removal. - spi_unregister_master need to be called to unregister the spi device. Tested on DRA7 board. Signed-off-by: Sourav Poddar <[email protected]> Signed-off-by: Mark Brown <[email protected]>
* | spi/qspi: cleanup pm_runtime error check.Sourav Poddar2013-11-241-1/+1
| | | | | | | | | | | | | | | | clean up pm_runtime error check in accordance with rest of the check in the driver. Signed-off-by: Sourav Poddar <[email protected]> Signed-off-by: Mark Brown <[email protected]>
* | spi/qspi: set correct platform drvdata in ti_qspi_probe()Wei Yongjun2013-11-241-2/+1
|/ | | | | | | | | The ti_qspi_remove() use the platform drvdata as a type of struct ti_qspi, we should pass correct platform drvdata to platform_set_drvdata() in ti_qspi_probe(). Signed-off-by: Wei Yongjun <[email protected]> Signed-off-by: Mark Brown <[email protected]>
* Merge remote-tracking branch 'spi/topic/devm' into spi-qspiMark Brown2013-10-071-3/+2
|\ | | | | | | | | Conflicts: drivers/spi/spi-ti-qspi.c
| * spi: ti-qspi: use devm_spi_register_master()Jingoo Han2013-09-261-11/+1
| | | | | | | | | | | | | | | | Use devm_spi_register_master() to make cleanup paths simpler, and remove unnecessary remove(). Signed-off-by: Jingoo Han <[email protected]> Signed-off-by: Mark Brown <[email protected]>
* | spi: ti-qspi: one only one interrupt handlerSebastian Andrzej Siewior2013-10-071-33/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The here used irq and threaded irq handler is a complete non-sense. After the status register is read and the source disabled it schedules a thread (the irq thread) to read the status from the variable, invoke complete() and then renable the interrupt. Again: schedule a thread which invokes _only_ complete(). This patch removes this non-sense and we remain with one handler which invokes complete() if needed. The device remove path should now disable the interupts. This has been compile time tested. Signed-off-by: Sebastian Andrzej Siewior <[email protected]> Tested-by: Sourav Poddar <[email protected]> Signed-off-by: Mark Brown <[email protected]>
* | spi/qspi: Add dual/quad read mode bit.Sourav Poddar2013-09-261-1/+1
|/ | | | | | | | | Add dual/quad read mode bit flag for the master controller. These check will be used in the spi framework to determine whether the master controller can do dual/quad read respectively. Signed-off-by: Sourav Poddar <[email protected]> Signed-off-by: Mark Brown <[email protected]>
* spi/qspi: fix missing unlock on error in ti_qspi_start_transfer_one()Wei Yongjun2013-09-011-0/+1
| | | | | | | | Add the missing unlock before return from function ti_qspi_start_transfer_one() in the error handling case. Signed-off-by: Wei Yongjun <[email protected]> Signed-off-by: Mark Brown <[email protected]>
* spi/qspi: Add compatible string for am4372.Sourav Poddar2013-08-271-0/+1
| | | | | | | Add a compatible string for am4372. Signed-off-by: Sourav Poddar <[email protected]> Signed-off-by: Mark Brown <[email protected]>
* spi/qspi: Fix device table entrySourav Poddar2013-08-271-1/+1
| | | | | | | | Fix module device table entry. Without this, there will be a build failure while trying to build qspi as a module. Signed-off-by: Sourav Poddar <[email protected]> Signed-off-by: Mark Brown <[email protected]>
* spi/qspi: Add dual/quad spi read supportSourav Poddar2013-08-231-1/+12
| | | | | | | | | | Support for multiple lines in SPI framework has been picked[1]. [1]: http://comments.gmane.org/gmane.linux.kernel.spi.devel/14420 Hence, adapting ti qspi driver to support multiple data lines for read. Signed-off-by: Sourav Poddar <[email protected]> Signed-off-by: Mark Brown <[email protected]>
* spi/qspi: Add qspi flash controllerSourav Poddar2013-08-221-0/+561
The patch add basic support for the quad spi controller. QSPI is a kind of spi module that allows single, dual and quad read access to external spi devices. The module has a memory mapped interface which provide direct interface for accessing data form external spi devices. The patch will configure controller clocks, device control register and for defining low level transfer apis which will be used by the spi framework to transfer data to the slave spi device(flash in this case). Test details: ------------- Tested this on dra7 board. Test1: Ran mtd_stesstest for 40000 iterations. - All iterations went through without failure. Test2: Use mtd utilities: - flash_erase to erase the flash device - mtd_debug read to read data back. - mtd_debug write to write to the data flash. diff between the write and read data shows zero. Acked-by: Felipe Balbi<[email protected]> Reviewed-by: Felipe Balbi<[email protected]> Signed-off-by: Sourav Poddar <[email protected]> Signed-off-by: Mark Brown <[email protected]>