aboutsummaryrefslogtreecommitdiff
path: root/drivers/spi/spi-omap2-mcspi.c
AgeCommit message (Collapse)AuthorFilesLines
2012-07-31spi: omap2-mcspi: add DMA engine supportRussell King1-31/+150
Add DMA engine support to the OMAP SPI driver. This supplements the private DMA API implementation contained within this driver, and the driver can be independently switched at build time between using DMA engine and the private DMA API for the transmit and receive sides. Tested-by: Shubhrajyoti <[email protected]> Acked-by: Grant Likely <[email protected]> Acked-by: Linus Walleij <[email protected]> Signed-off-by: Russell King <[email protected]>
2012-07-22spi/omap2: mark omap2_mcspi_master_setup as __devinitArnd Bergmann1-1/+1
This warning recently appeared with omap2plus_defconfig: WARNING: drivers/spi/built-in.o(.devinit.text+0x3c4): Section mismatch in reference from the function omap2_mcspi_probe() to the function .init.text:omap2_mcspi_master_setup() The function __devinit omap2_mcspi_probe() references a function __init omap2_mcspi_master_setup(). If omap2_mcspi_master_setup is only used by omap2_mcspi_probe then annotate omap2_mcspi_master_setup with a matching annotation. The fix is obviously to mark the omap2_mcspi_master_setup function as __devinit, rather than __init. Signed-off-by: Arnd Bergmann <[email protected]> Signed-off-by: Shubhrajyoti D <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2012-07-20spi: omap2-mcspi: Fix the below warningShubhrajyoti D1-2/+4
The dma_map and dma_unmap should have same parameter passed otherwise we get the below warn. ks8851 spi1.0: DMA-API: device driver tries to free DMA memory it has not allocated [device address=0x000000009f22] [ 2.066925] Modules linked in: [ 2.070312] [ 2.071929] [<c001c250>] (unwind_backtrace+0x0/0x130) from [<c0043d84>] (warn_slowpath_common+0x4c/0x64) [ 2.081909] [<c0043d84>] (warn_slowpath_common+0x4c/0x64) from [<c0043e30>] (warn_slowpath_fmt+0x30/0x40) [ 2.091949] [<c0043e30>] (warn_slowpath_fmt+0x30/0x40) from [<c0293824>] (check_unmap+0x6d0/0x7b0) [ 2.101348] [<c0293824>] (check_unmap+0x6d0/0x7b0) from [<c02939cc>] (debug_dma_unmap_page+0x64/0x70) [ 2.111053] [<c02939cc>] (debug_dma_unmap_page+0x64/0x70) from [<c03519a4>] (omap2_mcspi_txrx_dma+0x2d8/0x4fc) [ 2.121582] [<c03519a4>] (omap2_mcspi_txrx_dma+0x2d8/0x4fc) from [<c03524d8>] (omap2_mcspi_work.clone.4+0xf0/0x290) [ 2.132537] [<c03524d8>] (omap2_mcspi_work.clone.4+0xf0/0x290) from [<c0352900>] (omap2_mcspi_transfer_one_message+0x288/0x438) [ 2.144592] [<c0352900>] (omap2_mcspi_transfer_one_message+0x288/0x438) from [<c03503bc>] (spi_pump_messages+0x100/0x160) [ 2.156127] [<c03503bc>] (spi_pump_messages+0x100/0x160) from [<c006635c>] (kthread_worker_fn+0xac/0x180) [ 2.166168] [<c006635c>] (kthread_worker_fn+0xac/0x180) from [<c0066578>] (kthread+0x90/0x9c) [ 2.175140] [<c0066578>] (kthread+0x90/0x9c) from [<c00157fc>] (kernel_thread_exit+0x0/0x8) [ 2.183898] ---[ end trace d1830ce6e44292f2 ]--- Fix the warn by changing the unmap parameter. Reported-by: Russell King - ARM Linux <[email protected]> Signed-off-by: Shubhrajyoti D <[email protected]> Signed-off-by: Mark Brown <[email protected]>
2012-06-18SPI: fix over-eager devm_xxx() conversionRussell King1-1/+2
1a77b127ae (OMAP : SPI : use devm_* functions) converted the SPI device controller state to use devm_kzalloc(). Unfortunately, this is used against an unbound struct device, which results in the following when the device is bound to its driver: ------------[ cut here ]------------ WARNING: at /home/rmk/git/linux-rmk/drivers/base/dd.c:257 driver_probe_device+0x78/0x21c() Modules linked in: Backtrace: [<c0017d0c>] (dump_backtrace+0x0/0x10c) from [<c033e208>] (dump_stack+0x18/0x1c) r7:00000000 r6:c01ff28c r5:c040050c r4:00000101 [<c033e1f0>] (dump_stack+0x0/0x1c) from [<c00337ec>] (warn_slowpath_common+0x58/0x70) [<c0033794>] (warn_slowpath_common+0x0/0x70) from [<c0033828>] (warn_slowpath_null+0x24/0x2c) [<c0033804>] (warn_slowpath_null+0x0/0x2c) from [<c01ff28c>] (driver_probe_device+0x78/0x21c) [<c01ff214>] (driver_probe_device+0x0/0x21c) from [<c01ff49c>] (__driver_attach+0x6c/0x90) [<c01ff430>] (__driver_attach+0x0/0x90) from [<c01fda70>] (bus_for_each_dev+0x58/0x98) [<c01fda18>] (bus_for_each_dev+0x0/0x98) from [<c01ff0f4>] (driver_attach+0x20/0x28) [<c01ff0d4>] (driver_attach+0x0/0x28) from [<c01fe2f4>] (bus_add_driver+0xb4/0x230) [<c01fe240>] (bus_add_driver+0x0/0x230) from [<c01ffb24>] (driver_register+0xac/0x138) [<c01ffa78>] (driver_register+0x0/0x138) from [<c0215d4c>] (spi_register_driver+0x4c/0x60) [<c0215d00>] (spi_register_driver+0x0/0x60) from [<c045414c>] (ks8851_init+0x14/0x1c) [<c0454138>] (ks8851_init+0x0/0x1c) from [<c0008770>] (do_one_initcall+0x9c/0x164) [<c00086d4>] (do_one_initcall+0x0/0x164) from [<c0436410>] (kernel_init+0x128/0x210) [<c04362e8>] (kernel_init+0x0/0x210) from [<c0038754>] (do_exit+0x0/0x72c) ---[ end trace 4dcda79f5e89dd84 ]--- ks8851 spi1.0: message enable is 0 ks8851 spi1.0: eth0: revision 0, MAC 08:00:28:01:4d:c6, IRQ 194, has EEPROM Fix this by partially reverting the original commit. Signed-off-by: Russell King <[email protected]>
2012-05-19spi/omap2-mcspi: convert to the pump message infrastructureShubhrajyoti D1-133/+110
This patch converts the OMAP SPI driver to use the SPI infrastructure pump message queue.Also fixes the below warning. master is unqueued, this is deprecated Signed-off-by: Shubhrajyoti D <[email protected]> Acked-by: Linus Walleij <[email protected]> Signed-off-by: Grant Likely <[email protected]>
2012-04-10spi/omap2-mcspi: Trivial optimisationShubhrajyoti D1-4/+3
Trivial optimisation of tmp variable by directly writing the value to the register. Cc: Tarun Kanti DebBarma <[email protected]> Signed-off-by: Shubhrajyoti D <[email protected]>
2012-04-10spi: omap2-mcspi: add support for pm_runtime autosuspendShubhrajyoti D1-1/+5
Adds support for configuring the omap2-mcspi driver use autosuspend for runtime power management. This can reduce the latency in starting an spi transfer by not suspending the device immediately following completion of a transfer. If another transfer then takes place before the autosuspend timeout (2 secs), the call to resume the device can return immediately saving some save/ restore cycles. Acked-by: Govindraj.R <[email protected]> Signed-off-by: Shubhrajyoti D <[email protected]>
2012-04-10spi/omap: Remove bus_num usage for instance indexBenoit Cousson1-41/+34
bus_num was used to reference the mcspi controller instance in a fixed array. Remove this array and store this information directly inside drvdata structure. bus_num is now just set if the pdev->id is present or with -1 for dynamic allocation by SPI core, but the driver does not access it anymore. Clean some bad comments format, and remove un-needed space. Signed-off-by: Benoit Cousson <[email protected]> [Cleanup the OMAP2_MCSPI_MAX_CTRL macro as it is not needed anymore] Signed-off-by: Shubhrajyoti D <[email protected]>
2012-04-10Merge branch 'spi' of git://gitorious.org/linus-tree/linus-tree into spi/nextGrant Likely1-37/+9
2012-03-19OMAP : SPI : use devm_* functionsShubhrajyoti D1-20/+4
The various devm_* functions allocate memory that is released when a driver detaches. This patch uses devm_request_and_ioremap to request memory in probe function. Since the freeing is not needed the calls are deleted from remove function.Also use use devm_kzalloc for the cs memory allocation. Signed-off-by: Shubhrajyoti D <[email protected]>
2012-03-19spi: omap2-mcspi: convert to module_platform_driverFelipe Balbi1-14/+1
this will delete a few lines of code, no functional changes. Signed-off-by: Felipe Balbi <[email protected]> Signed-off-by: Shubhrajyoti D <[email protected]>
2012-03-19spi: omap2-mcspi: make it behave as a moduleFelipe Balbi1-4/+5
move probe away from __init section and use platform_driver_register() instead of platform_driver_probe(). Signed-off-by: Felipe Balbi <[email protected]> Signed-off-by: Shubhrajyoti D <[email protected]>
2012-02-15spi/omap: Add DT support to McSPI driverBenoit Cousson1-8/+48
Add device tree support to the OMAP2+ McSPI driver. Add the bindings documentation. Based on original code from Rajendra. Signed-off-by: Benoit Cousson <[email protected]> Cc: Grant Likely <[email protected]> Cc: Rajendra Nayak <[email protected]> Signed-off-by: Grant Likely <[email protected]>
2011-10-29spi/omap: Correct the error pathShubhrajyoti D1-12/+20
Currently McSPI driver doesnt follow correct failure fallback steps attempting to correct the same. Also: - label names changed to give meaningful names. - Setting the driver data to NULL in remove Signed-off-by: Hebbar, Gururaja <[email protected]> Signed-off-by: Shubhrajyoti D <[email protected]> Signed-off-by: Grant Likely <[email protected]>
2011-10-29spi/omap: call pm_runtime_disable in error path and removeShubhrajyoti D1-0/+2
omap mcspi probe() doesnt call pm_runtime disable functions in case of failure. remove() doesnt call pm_runtime disable. This could lead to warnings as below on subsequent insmod. ~# insmod spi-omap2-mcspi.ko [ 255.383671] omap2_mcspi omap2_mcspi.1: Unbalanced pm_runtime_enable! ... This patch adds the pm_runtime disable() at appropriate stages. Signed-off-by: Hebbar, Gururaja <[email protected]> Signed-off-by: Shubhrajyoti D <[email protected]> Signed-off-by: Grant Likely <[email protected]>
2011-10-29spi/omap: Use a workqueue per omap2_mcspi controllerShubhrajyoti D1-8/+11
Currently all the spi controllers share the work queue. This patch allocates a work queue per controller. Signed-off-by: Steve Wilkins <[email protected]> Signed-off-by: Shubhrajyoti D <[email protected]> Signed-off-by: Grant Likely <[email protected]>
2011-10-24OMAP: SPI: Fix the trying to free nonexistent resource errorShubhrajyoti D1-3/+4
Currently there is a request_mem_region(r->start, .. followed by r->start += pdata->regs_offset; And then in remove r = platform_get_resource(pdev, IORESOURCE_MEM, 0); release_mem_region(r->start, resource_size(r)); Here the offset addition is not taken care. Fix the code for the same. Signed-off-by: Shubhrajyoti D <[email protected]> Signed-off-by: Grant Likely <[email protected]>
2011-06-10spi: Convert uses of struct resource * to resource_size(ptr)Joe Perches1-5/+5
Done via coccinelle scripts like: @@ struct resource *ptr; @@ - ptr->end - ptr->start + 1 + resource_size(ptr) and some grep and typing. Mostly uncompiled, no cross-compilers. Signed-off-by: Joe Perches <[email protected]> Signed-off-by: Grant Likely <[email protected]>
2011-06-06spi: reorganize driversGrant Likely1-0/+1293
Sort the SPI makefile and enforce the naming convention spi_*.c for spi drivers. This change also rolls the contents of atmel_spi.h into the .c file since there is only one user of that particular include file. v2: - Use 'spi-' prefix instead of 'spi_' to match what seems to be be the predominant pattern for subsystem prefixes. - Clean up filenames in Kconfig and header comment blocks Signed-off-by: Grant Likely <[email protected]> Acked-by: Wolfram Sang <[email protected]> Acked-by: Linus Walleij <[email protected]>