aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2011-07-20mmc: omap_hsmmc: add support for pre_req and post_reqPer Forlin1-4/+83
pre_req() runs dma_map_sg(), post_req() runs dma_unmap_sg. If not calling pre_req() before omap_hsmmc_request(), dma_map_sg will be issued before starting the transfer. It is optional to use pre_req(). If issuing pre_req(), post_req() must be called as well. Signed-off-by: Per Forlin <[email protected]> Reviewed-by: Venkatraman S <[email protected]> Tested-by: Sourav Poddar <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: core: add non-blocking mmc request functionPer Forlin3-11/+129
Previously there has only been one function mmc_wait_for_req() to start and wait for a request. This patch adds: * mmc_start_req() - starts a request wihtout waiting If there is on ongoing request wait for completion of that request and start the new one and return. Does not wait for the new command to complete. This patch also adds new function members in struct mmc_host_ops only called from core.c: * pre_req - asks the host driver to prepare for the next job * post_req - asks the host driver to clean up after a completed job The intention is to use pre_req() and post_req() to do cache maintenance while a request is active. pre_req() can be called while a request is active to minimize latency to start next job. post_req() can be used after the next job is started to clean up the request. This will minimize the host driver request end latency. post_req() is typically used before ending the block request and handing over the buffer to the block layer. Add a host-private member in mmc_data to be used by pre_req to mark the data. The host driver will then check this mark to see if the data is prepared or not. Signed-off-by: Per Forlin <[email protected]> Acked-by: Kyungmin Park <[email protected]> Acked-by: Arnd Bergmann <[email protected]> Reviewed-by: Venkatraman S <[email protected]> Tested-by: Sourav Poddar <[email protected]> Tested-by: Linus Walleij <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: MAINTAINERS: change omap_hsmmc maintainence to orphanMadhusudhan Chikkature1-2/+1
Update the OMAP HSMMC entry from the MAINTAINERS file as I will no longer be able to maintain this driver. Signed-off-by: Madhusudhan Chikkature <[email protected]> [[email protected]: change to Orphan rather than complete removal] Signed-off-by: Kevin Hilman <[email protected]> Acked-by: Venkatraman S <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: kconfig: remove EXPERIMENTAL from the DMA selection of atmel-mciNicolas Ferre1-4/+3
This driver has been used for years with this option enabled. Signed-off-by: Nicolas Ferre <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: atmel-mci: add suspend/resume supportNicolas Ferre1-0/+63
Take care of slots while going to suspend state. Signed-off-by: Nicolas Ferre <[email protected]> Reviewed-by: Felipe Balbi <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: sdhci-pci: allow 8-bit bus width for Intel Medfield eMMCsAdrian Hunter1-5/+16
Unless MMC_CAP_8_BIT_DATA is set, the bus width defaults to 4. Signed-off-by: Adrian Hunter <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: sdhci-pci: add 8-bit bus width support for mrst hc0Major Lee1-0/+33
And hook platform_8bit_width to support 8-bit bus width. Signed-off-by: Major Lee <[email protected]> Signed-off-by: Alan Cox <[email protected]> Signed-off-by: Dirk Brandewie <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: dw_mmc: reset FIFO after an errorJames Hogan1-1/+11
If an error occurs mid way through a transaction (such as a missing CRC status response after the 2nd block written out of 3), then the FIFO may still contain data which will interfere with the next transaction. Therefore after an error has been detected, reset the fifo using the CTRL register. Signed-off-by: James Hogan <[email protected]> Acked-by: Will Newton <[email protected]> Tested-by: Jaehoon Chung <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: dw_mmc: handle "no CRC status" errorJames Hogan1-4/+15
When a data write isn't acknowledged by the card (so no CRC status token is detected after the data), the error -EIO is returned instead of the -ETIMEDOUT expected by mmc_test 15 - "Correct xfer_size at write (start failure)" and 17 "Correct xfer_size at write (midway failure)". In PIO mode the reported number of bytes transferred is also exaggerated since the last block actually failed. Handle the "Write no CRC" error specially, setting the error to -ETIMEDOUT and setting the bytes_xferred to 0. Signed-off-by: James Hogan <[email protected]> Acked-by: Will Newton <[email protected]> Tested-by: Jaehoon Chung <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: dw_mmc: remove unnecessary error messagesJames Hogan1-4/+0
Remove error messages for timeout and CRC failure, since the error code already indicates the problem. Signed-off-by: James Hogan <[email protected]> Acked-by: Will Newton <[email protected]> Tested-by: Jaehoon Chung <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: dw_mmc: fix stop when fallen back to PIOJames Hogan2-1/+7
There are several situations when dw_mci_submit_data_dma() decides to fall back to PIO mode instead of using DMA, due to a short (to avoid overhead) or "complex" (e.g. with unaligned buffers) transaction, even though host->use_dma is set. However dw_mci_stop_dma() decides whether to stop DMA or set the EVENT_XFER_COMPLETE event based on host->use_dma. When falling back to PIO mode this results in data timeout errors getting missed and the driver locking up. Therefore add host->using_dma to indicate whether the current transaction is using dma or not, and adjust dw_mci_stop_dma() to use that instead. Signed-off-by: James Hogan <[email protected]> Acked-by: Will Newton <[email protected]> Tested-by: Jaehoon Chung <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: sdhci-s3c: Fix return value in sdhci_s3c_suspend/resume()Wonil Choi1-4/+2
Signed-off-by: Wonil Choi <[email protected]> Signed-off-by: Minho Ban <[email protected]> Cc: Ben Dooks <[email protected]> Signed-off-by: Kukjin Kim <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: sdhci: specify maximum discard timeoutAdrian Hunter1-0/+5
In general, SDHC hardware timeout cannot be avoided. Accordingly, the maximum timeout is specified to limit the maximum discard size. Signed-off-by: Adrian Hunter <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: queue: let host controllers specify maximum discard timeoutAdrian Hunter4-10/+101
Some host controllers will not operate without a hardware timeout that is limited in value. However large discards require large timeouts, so there needs to be a way to specify the maximum discard size. A host controller driver may now specify the maximum discard timeout possible so that max_discard_sectors can be calculated. However, for eMMC when the High Capacity Erase Group Size is not in use, the timeout calculation depends on clock rate which may change. For that case Preferred Erase Size is used instead. Signed-off-by: Adrian Hunter <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: sdhci-esdhc-imx: remove "WP" from flag ESDHC_FLAG_GPIO_FOR_CD_WPShawn Guo1-4/+4
The use of flag ESDHC_FLAG_GPIO_FOR_CD_WP is all CD related. It does not necessarily need to bother WP in the flag name. Signed-off-by: Shawn Guo <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: sdhci-esdhc-imx: SDHCI_CARD_PRESENT does not get clearedShawn Guo1-1/+1
The function esdhc_readl_le intends to clear bit SDHCI_CARD_PRESENT, when the card detect gpio tells there is no card. But it does not clear the bit actually. The patch gives a fix on that. Signed-off-by: Shawn Guo <[email protected]> Acked-by: Wolfram Sang <[email protected]> Cc: <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: sdhci: fix interrupt storm from card detectionShawn Guo1-4/+25
The issue was initially found by Eric Benard as below. http://permalink.gmane.org/gmane.linux.ports.arm.kernel/108031 Not sure about other SDHCI based controller, but on Freescale eSDHC, the SDHCI_INT_CARD_INSERT bits will be immediately set again when it gets cleared, if a card is inserted. The driver need to mask the irq to prevent interrupt storm which will freeze the system. And the SDHCI_INT_CARD_REMOVE gets the same situation. The patch fixes the problem based on the initial idea from Eric Benard. Signed-off-by: Shawn Guo <[email protected]> Cc: Eric Benard <[email protected]> Tested-by: Arnaud Patard <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: tmio: Fix race condition resulting in spurious interruptsPaul Parsons1-44/+32
There is a race condition in the tmio_mmc_irq() interrupt handler, caused by the presence of a while loop, which results in warnings of spurious interrupts. This was found on an HP iPAQ hx4700 whose HTC ASIC3 reportedly incorporates the Toshiba TC6380AF controller. Towards the end of a multiple read (CMD18) operation the handler clears the final RXRDY status bit in the first loop iteration, sees the DATAEND status bit at the bottom of the loop, and so clears the DATAEND status bit in the second loop iteration. However the DATAEND interrupt is still queued in the system somewhere and can't be delivered until the handler has returned. This second interrupt is then reported as spurious in the next call to the handler. Likewise for single read (CMD17) operations. And something similar occurs for multiple write (CMD25) and single write (CMD24) operations, where CMDRESPEND and TXRQ status bits are cleared in a single call. In these cases the interrupt handler clears two separate interrupts when it should only clear the one interrupt for which it was invoked. The fix is to remove the while loop. Signed-off-by: Paul Parsons <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: tmio: Fix build error without CONFIG_MMC_SDHIPaul Parsons1-3/+1
Only compile tmio_mmc_dma.o when CONFIG_MMC_SDHI is selected (as y or m). Signed-off-by: Paul Parsons <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: dw_mmc: handle unaligned buffers and sizesJames Hogan2-57/+262
Update functions for PIO pushing and pulling data to and from the FIFO so that they can handle unaligned output buffers and unaligned buffer lengths. This makes more of the tests in mmc_test pass. Unaligned lengths in pulls are handled by reading the full FIFO item, and storing the remaining bytes in a small internal buffer (part_buf). The next data pull will copy data out of this buffer first before accessing the FIFO again. Similarly, for pushes the final bytes that don't fill a FIFO item are stored in the part_buf (or sent anyway if it's the last transfer), and then the part_buf is included at the beginning of the next buffer pushed. Unaligned buffers in pulls are handled specially if the architecture cannot do efficient unaligned accesses, by reading FIFO items into a aligned local buffer, and memcpy'ing them into the output buffer, again storing any remaining bytes in the internal buffer. Similarly for pushes the buffer is memcpy'd into an aligned local buffer then written to the FIFO. Signed-off-by: James Hogan <[email protected]> Acked-by: Will Newton <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: dw_mmc: don't hard code fifo depth, fix usageJames Hogan3-6/+26
The FIFO_DEPTH hardware configuration parameter can be found from the power-on value of RX_WMark in the FIFOTH register. This is used to initialise the watermarks, but when calculating the number of free fifo spaces a preprocessor definition is used which is hard coded to 32. Fix reading the value out of FIFOTH (the default value in the RX_WMark field is FIFO_DEPTH-1 not FIFO_DEPTH). Allow the fifo depth to be overriden by platform data (since a bootloader may have changed FIFOTH making auto-detection unreliable). Store the fifo_depth for later use. Also fix the calculation to find the number of free bytes in the fifo to include the fifo depth in the left shift by the data shift, since the fifo depth is measured in fifo items not bytes. Signed-off-by: James Hogan <[email protected]> Acked-by: Will Newton <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: dw_mmc: brackets in register access macrosJames Hogan1-8/+8
Add brackets around use of the dev argument to the mci_{read,write}{w,l,q}() macros, for extra safety. Signed-off-by: James Hogan <[email protected]> Acked-by: Will Newton <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: dw_mmc: convert card tasklet to workqueueJames Hogan2-20/+32
Convert the card insert/remove tasklet to a workqueue, and call the setpower platform specific callback without the spinlock held. This means neither of the setpower or get_cd callbacks are called from atomic context which allows them to sleep. Signed-off-by: James Hogan <[email protected]> Acked-by: Will Newton <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: dw_mmc: fix race with request and removalJames Hogan1-4/+11
When a request is made, the card presence is checked and the request is queued. These two parts must be atomic with respect to card removal, or a card removal could be handled in between, and the new request wouldn't get cancelled until another card was inserted. Therefore move the spinlock protection from dw_mci_queue_request() up into dw_mci_request() to cover the presence check. Note that the test_bit() used for the presence check isn't atomic itself, so should have been protected by a spinlock anyway. Signed-off-by: James Hogan <[email protected]> Acked-by: Will Newton <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: dw_mmc: clear TXDR/RXDR ints before enablingJames Hogan1-2/+3
DMA is only used for transactions exceeding a certain length, otherwise PIO is used. The TXDR and RXDR interrupts are masked when in DMA mode but still fire. When switching to PIO mode (e.g. to get SCR field when an SD card is inserted) these interrupts are not cleared and so they trigger the ISR as soon as they are unmasked. If the previous DMA did a write, then the ISR will handle the TXDR interrupt even if the transaction is a read, completing the transaction without modifying the read buffer. This is fixed primarily by clearing these two interrupts before unmasking them when setting up PIO mode, and also by making the ISR more robust by only handling TXDR/RXDR in the correct read/write direction. Signed-off-by: James Hogan <[email protected]> Acked-by: Will Newton <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: sdhi: Add write16_hookSimon Horman4-0/+50
Some controllers require waiting for the bus to become idle before writing to some registers. I have implemented this by adding a hook to sd_ctrl_write16() and implementing a hook for SDHI which waits for the bus to become idle. Cc: Guennadi Liakhovetski <[email protected]> Cc: Magnus Damm <[email protected]> Signed-off-by: Simon Horman <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: tmio: Share register access functionsSimon Horman3-35/+36
Move register access functions into a shared header. Use sd_ctrl_write16 in tmio_mmc_dma.c:tmio_mmc_enable_dma(). Other than avoiding (trivial) open-coding, the motivation for this is to allow platform-hooks in access functions to be applied across all applicable accesses. Cc: Guennadi Liakhovetski <[email protected]> Cc: Magnus Damm <[email protected]> Signed-off-by: Simon Horman <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: tmio: name 0xd8 as CTL_DMA_ENABLESimon Horman2-1/+2
This reflects at least the current usage of this register and I think it improves the readability of the code ever so slightly. Cc: Guennadi Liakhovetski <[email protected]> Cc: Magnus Damm <[email protected]> Signed-off-by: Simon Horman <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: block: add checking of r/w command responseRussell King - ARM Linux1-1/+25
Check the status bits in the r/w command response for any errors. If error bits are set, then we won't have seen any data transferred, so it's pointless doing any further checking. Signed-off-by: Russell King <[email protected]> Acked-by: Linus Walleij <[email protected]> Tested-by: Pawel Moll <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: block: improve error recovery from command channel errorsRussell King - ARM Linux1-48/+182
Command channel errors fall into four classes: 1. The command was issued with the card in the wrong state 2. The command failed to be received by the card correctly 3. The cards response failed to be received by the host (CRC error) 4. The card failed to respond to the card For (1), in theory we should know that the card is in the correct state. However, a failed stop command (or other failure) may result in the card remaining in a data transfer state from the previous command. If we detect this condition, we try to recover by sending a stop command. For the initial commands (set block count and the read/write command) no data will have been transferred. All that we need deal with is retrying at this point. A failed stop command can be remedied as above. If we are unable to recover the card (eg, the card ignores our requests for status, or we don't recognise the error code) then we immediately fail the request. Signed-off-by: Russell King <[email protected]> Acked-by: Linus Walleij <[email protected]> Tested-by: Pawel Moll <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: block: allow get_card_status() to return error statusRussell King - ARM Linux2-24/+19
If the MMC_SEND_STATUS command is not successful, we should not return a zero status word, but instead allow the caller to know positively that an error occurred. Convert the open-coded get_card_status() to use the helper function, and provide definitions for the card state field. Signed-off-by: Russell King <[email protected]> Acked-by: Linus Walleij <[email protected]> Tested-by: Pawel Moll <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: dw_mmc: protect a sequence of request and request-done.Seungwon Jeon1-2/+3
Response timeout (RTO), Response crc error (RCRC) and Response error (RE) signals come with command done (CD) and can be raised preceding command done (CD). That is these error interrupts and CD can be handled in separate dw_mci_interrupt(). If mmc_request_done() is called because of a response timeout before command done has occured, we might send the next request before the CD of current request is finished. This can bring about a broken sequence of request and request-done. And Data error interrupt (DRTO, DCRC, SBE, EBE) and data transfer over (DTO) have the same problem. Signed-off-by: Seungwon Jeon <[email protected]> Acked-by: Will Newton <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: dw_mmc: set the card_width bit per card.Seungwon Jeon1-1/+1
This patch sets the card_width bit of CTYPE for the corresponding card. CTYPE[31] and CTYPE[16] correspond respectively to card[15] and card[0] for 8-bit mode. And CTYPE[15] and CTYPE[0] correspond respectively to card[15] and CTYPE[0] for 1-bit or 4-bit mode. Signed-off-by: Seungwon Jeon <[email protected]> Acked-by: Will Newton <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20ARM: mmp2: update mmp2_defconfig to support mmcZhangfei Gao1-1/+8
1. support brownstone 2. support mmc 3. support basic filesystem and language 4. remove dynamic_debug, since too many log during access sd Signed-off-by: Zhangfei Gao <[email protected]> Acked-by: Philip Rakity <[email protected]> Acked-by: Mark F. Brown <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: sdhci-pxa: move platform data to include/linux/platform_dataZhangfei Gao4-8/+8
As suggested by Arnd, move platform data to include/linux/platform_data in order to improve build coverage for the driver. Signed-off-by: Zhangfei Gao <[email protected]> Acked-by: Arnd Bergmann <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: host: delete obsolete sdhci-pxa.cZhangfei Gao3-316/+0
Delete obsolete sdhci-pxa.c, which was previously shared amongst the entire PXA series. Instead we now use sdhci-pxav3.c for mmp2 and sdhci-pxav2.c for pxa9xx. Signed-off-by: Zhangfei Gao <[email protected]> Acked-by: Philip Rakity <[email protected]> Acked-by: Mark F. Brown <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: update mmp2 mmc resources in arch/armZhangfei Gao3-10/+18
Update MMP2 platform code to "sdhci-pxav3", following the driver rename. Signed-off-by: Zhangfei Gao <[email protected]> Acked-by: Philip Rakity <[email protected]> Acked-by: Mark F. Brown <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: host: split up sdhci-pxa, create sdhci-pxav2.cZhangfei Gao3-0/+258
sdhci-pltfm driver for PXAV2 SoCs, such as pxa910. Signed-off-by: Zhangfei Gao <[email protected]> Signed-off-by: Jun Nie <[email protected]> Signed-off-by: Qiming Wu <[email protected]> Acked-by: Philip Rakity <[email protected]> Acked-by: Mark F. Brown <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: host: split up sdhci-pxa, create sdhci-pxav3.cZhangfei Gao4-5/+333
sdhci-pltfm driver for PXAV3 SoCs, such as MMP2. Signed-off-by: Zhangfei Gao <[email protected]> Signed-off-by: Philip Rakity <[email protected]> Acked-by: Philip Rakity <[email protected]> Acked-by: Mark F. Brown <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: sdhci: change sdhci-pltfm into a moduleShawn Guo10-87/+112
There are a couple of problems left from the sdhci pltfm and OF consolidation changes. * When building more than one sdhci-pltfm based drivers in the same image, linker will give multiple definition error on the sdhci-pltfm helper functions. For example right now, building sdhci-of-esdhc and sdhci-of-hlwd together is a valid combination from Kconfig view. * With the current build method, there is error with building the drivers as module, but module installation fails with modprobe. The patch fixes above problems by changing sdhci-pltfm into a module. To avoid EXPORT_SYMBOL on so many big endian IO accessors, it moves these accessors into sdhci-pltfm.h as the 'static inline' functions. As a result, sdhci.h needs to be included in sdhci-pltfm.h, and in turn can be removed from individual drivers which already include sdhci-pltfm.h. Signed-off-by: Shawn Guo <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: Standardize header file inclusion checks.Robert P. J. Day17-46/+41
Standardize the checks for multiple MMC header file inclusion, including adding comments to terminating #endif's, and fixing one incorrect comment. Signed-off-by: Robert P. J. Day <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: sdhci: merge two sdhci-pltfm.h into oneShawn Guo4-32/+5
The structure sdhci_pltfm_data is not necessarily to be in a public header like include/linux/mmc/sdhci-pltfm.h, so the patch moves it into drivers/mmc/host/sdhci-pltfm.h and eliminates the former one. Signed-off-by: Shawn Guo <[email protected]> Reviewed-by: Grant Likely <[email protected]> Reviewed-by: Wolfram Sang <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: sdhci: make sdhci-of device drivers self registeredShawn Guo7-54/+227
The patch turns the sdhci-of-core common stuff into helper functions added into sdhci-pltfm.c, and makes sdhci-of device drviers self registered using the same pair of .probe and .remove used by sdhci-pltfm device drivers. As a result, sdhci-of-core.c and sdhci-of.h can be eliminated with those common things merged into sdhci-pltfm.c and sdhci-pltfm.h respectively. Signed-off-by: Shawn Guo <[email protected]> Acked-by: Anton Vorontsov <[email protected]> Reviewed-by: Wolfram Sang <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: sdhci: eliminate sdhci_of_host and sdhci_of_dataShawn Guo5-291/+37
The patch migrates the use of sdhci_of_host and sdhci_of_data to sdhci_pltfm_host and sdhci_pltfm_data, so that the former pair can be eliminated. Signed-off-by: Shawn Guo <[email protected]> Reviewed-by: Grant Likely <[email protected]> Reviewed-by: Wolfram Sang <[email protected]> Acked-by: Anton Vorontsov <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20mmc: sdhci: make sdhci-pltfm device drivers self registeredShawn Guo9-223/+313
The patch turns the common stuff in sdhci-pltfm.c into functions, and add device drivers their own .probe and .remove which in turn call into the common functions, so that those sdhci-pltfm device drivers register itself and keep all device specific things away from common sdhci-pltfm file. Signed-off-by: Shawn Guo <[email protected]> Reviewed-by: Grant Likely <[email protected]> Acked-by: Arnd Bergmann <[email protected]> Acked-by: Anton Vorontsov <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2011-07-20rcu: Fix wrong check in list_splice_init_rcu()Jan H. Schönherr1-1/+1
If the list to be spliced is empty, then list_splice_init_rcu() has nothing to do. Unfortunately, list_splice_init_rcu() does not check the list to be spliced; it instead checks the list to be spliced into. This results in memory leaks given current usage. This commit therefore fixes the empty-list check. Signed-off-by: Jan H. Schönherr <[email protected]> Signed-off-by: Paul E. McKenney <[email protected]>
2011-07-20net,rcu: Convert call_rcu(xt_rateest_free_rcu) to kfree_rcu()Paul E. McKenney1-7/+1
The RCU callback xt_rateest_free_rcu() just calls kfree(), so we can use kfree_rcu() instead of call_rcu(). This also allows us to dispense with an rcu_barrier() call, speeding up unloading of this module. Signed-off-by: Paul E. McKenney <[email protected]> Cc: Patrick McHardy <[email protected]> Reviewed-by: Josh Triplett <[email protected]>
2011-07-20sysctl,rcu: Convert call_rcu(free_head) to kfreePaul E. McKenney1-8/+3
The RCU callback free_head just calls kfree(), so we can use kfree_rcu() instead of call_rcu(). Signed-off-by: Paul E. McKenney <[email protected]> Cc: Andrew Morton <[email protected]> Reviewed-by: Josh Triplett <[email protected]>
2011-07-20vmalloc,rcu: Convert call_rcu(rcu_free_vb) to kfree_rcu()Lai Jiangshan1-8/+1
The rcu callback rcu_free_vb() just calls a kfree(), so we use kfree_rcu() instead of the call_rcu(rcu_free_vb). Signed-off-by: Lai Jiangshan <[email protected]> Signed-off-by: Paul E. McKenney <[email protected]> Cc: Andrew Morton <[email protected]> Cc: Namhyung Kim <[email protected]> Cc: David Rientjes <[email protected]> Reviewed-by: Josh Triplett <[email protected]>
2011-07-20vmalloc,rcu: Convert call_rcu(rcu_free_va) to kfree_rcu()Lai Jiangshan1-8/+1
The rcu callback rcu_free_va() just calls a kfree(), so we use kfree_rcu() instead of the call_rcu(rcu_free_va). Signed-off-by: Lai Jiangshan <[email protected]> Signed-off-by: Paul E. McKenney <[email protected]> Cc: Andrew Morton <[email protected]> Cc: Namhyung Kim <[email protected]> Cc: David Rientjes <[email protected]> Reviewed-by: Josh Triplett <[email protected]>