aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mmc
Commit message (Collapse)AuthorAgeFilesLines
* mmc: quirks: disable TEST_MMC_FW_PATCHINGZiyan2017-05-111-1/+1
| | | | | | | | | | | | | | I'm randomly getting broken kernels with this problematic emmc since switching to GCC 4.8. The problem seems to happen inside the mmc firmware patching procedure. We tried to disable GCC optimizations for these methods, but that didn't always fix the issue. By disabling TEST_MMC_FW_PATCHING, it seems like the kernel somewhat stabilized - we need to look into why it caused broken kernels/emmc lockups in the future. Change-Id: I7cf8fe14e7ab0358228a844c582e17d6bf9731a1
* mmc: omap_hsmmc: sync with p-android-omap-3.0-devZiyan2016-01-131-10/+8
| | | | Change-Id: I322dd6838daaa9fa2073da0e2317ee97b144d1bf
* OMAP_HSMMC: Migration to IRQ threaded handlerNaga Venkata Srikanth V2016-01-131-26/+7
| | | | | | | | | Changed the mmc card detect request_irq() to request_threaded_irq(). Removed sceduled work in the ISR and replaced with thread. Change-Id: I02c1fb0353bd3a7ce939a80e0f8cd57c4aafec8c Signed-off-by: Naga Venkata Srikanth V <vnv.srikanth@samsung.com> Signed-off-by: Oleg_Kosheliev <oleg.kosheliev@ti.com>
* mmc: quirks: change optimization levelZiyan2016-01-081-1/+1
| | | | | | For some reason, it's breaking with O0 right now but working with O1... Change-Id: Ib6f044b0137abf27f9348e2797cb271599b7fcd0
* block: separate priority boosting from REQ_METAChristoph Hellwig2015-05-021-0/+3
| | | | | | | | | | | | Add a new REQ_PRIO to let requests preempt others in the cfq I/O schedule, and lave REQ_META purely for marking requests as metadata in blktrace. All existing callers of REQ_META except for XFS are updated to also set REQ_PRIO for now. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Namhyung Kim <namhyung@gmail.com> Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
* mmc: quirks: Disable optimization on eMMC firmware patching if needed.Kyle Repinski2015-01-121-0/+11
| | | | | | | | | | | GCC 4.8 and above are breaking this code, even with as little as -Og. Signed-off-by: Kyle Repinski <repinski23@gmail.com> Conflicts: drivers/mmc/core/quirks.c Change-Id: Id165084ce96dfd825440b45dae8fc93230ce2862
* Revert "[REVIEW ME] tuna: temporary fix for gcc 4.8 build breakage"Ziyan2015-01-121-3/+0
| | | | This reverts commit f747c7de8f5a03987e9044dd56f2349b47e20bdc.
* [REVIEW ME] tuna: temporary fix for gcc 4.8 build breakageZiyann2014-11-261-0/+3
|
* [MMC] Provide access to Samsung's e-MMC Smart Report via sysfsScott Anderson2014-11-263-2/+181
| | | | | | | | | | | | | | | | | | | | | | | | | Added CONFIG_MMC_SAMSUNG_SMART which enables code that will expose Samsung's proprietary e-MMC health information to sysfs. Example output: $ cat /sys/devices/platform/*/*/mmc_host/mmc*/mmc*/samsung_smart version : 0 error mode : Normal super block size : 4194304 super page size : 32768 optimal write size : 32768 read reclaim count : 0 optimal trim size : 262144 number of banks : 2 initial bad blocks per bank : 10,4,0,0 runtime bad blocks per bank : 0,0,0,0 reserved blocks left per bank : 131,137,0,0 all erase counts (min,avg,max): 0,760,65535 SLC erase counts (min,avg,max): 0,5,74 MLC erase counts (min,avg,max): 0,790,65535 Change-Id: Ib476ea5d35264aa94b378f49121d31b20b751f04 Signed-off-by: Scott Anderson <saa@android.com>
* [MMC] Improve error handling of Samsung e-MMC wear leveling quirkScott Anderson2014-11-261-13/+28
| | | | | | | | | | | Prior to this change, errors when reading from the e-MMC during the handling of the quirk would not be detected. In addition, if an error did occur, the actual error code would be overwritten by the code that exits the special OEM mode. Change-Id: Ic470cf8ef4edb27119f0fdf1fa1b0cf44a2bf31e Signed-off-by: Scott Anderson <saa@android.com>
* Merge remote-tracking branch 'linux/linux-3.0.y' into stable-newpvrZiyann2014-11-261-1/+1
|\ | | | | | | | | Conflicts: arch/arm/include/asm/hardware/cache-l2x0.h
| * mmc: core: Fix bit width test failing on old eMMC cardsPhilip Rakity2013-05-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | commit 836dc2fe89c968c10cada87e0dfae6626f8f9da3 upstream. PARTITION_SUPPORT needs to be set before doing the compare on version number so the bit width test does not get invalid data. Before this patch, a Sandisk iNAND eMMC card would detect 1-bit width although the hardware supports 4-bit. Only affects old emmc devices - pre 4.4 devices. Reported-by: Elad Yi <elad.yi@gmail.com> Signed-off-by: Philip Rakity <prakity@yahoo.com> Signed-off-by: Chris Ball <cjb@laptop.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* | mmc: new api mmc_release_host_sync()Viswanath Puttagunta2014-10-015-6/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The current mmc API to release a specific mmc host mmc_release_host() does not call host specific disable() function immediately, but schedules it to be called with some delay. Sometimes, during suspend/resume operations, this is causing host->disable() function not to be called before suspend and so the resources associated with host are not released resulting in clocks not being released. The new API mmc_release_host_sync() calls mmc_host_disable() immediately instead of calling mmc_host_lazy_diable(). Change-Id: I64f3c8a96c29d9f4cff0382a3fe131faf48f2da1 Signed-off-by: Viswanath Puttagunta <vishp@ti.com> Signed-off-by: Leonid Iziumtsev <x0153368@ti.com> Conflicts: drivers/mmc/core/sdio.c drivers/mmc/host/omap_hsmmc.c
* | OMAP4: DPLL cascading: The HSMMC output clock handling to support DPLL cascadingMadhusudhan Chikkature2014-10-011-0/+101
| | | | | | | | | | | | | | | | | | | | | | | | | | The HSMMC1 output clock will change from 96MHz to 49MHz upon entry to DPLL cascading mode. This patch modifies the MMC1 divisor to handle the change in clock frequency. [Andrii Tseglytskyi <andrii.tseglytskyi@ti.com>: Ported and adapted to p-android-omap-3.0] Change-Id: Ia52425132bfcc80489b39cb5562dc86cc483cb83 Signed-off-by: Madhusudhan Chikkature <madhu.cr@ti.com> Signed-off-by: Andrii Tseglytskyi <andrii.tseglytskyi@ti.com>
* | omap-hsmmc: Implementation of i761 errataSemen Protsenko2014-10-011-0/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Errata description: Due to a bad behavior of an internal signal, the Card Error interrupt bit MMCHS_STAT[28] CERR may not be set sometimes when an error occurred in the card response. Workaround: After responses of type R1/R1b for all cards and responses of type R5/R5b/R6 for SD and SDIO cards, software must read two registers: MMCHS_RSP10 and MMCHS_CSRE. When a MMCHS_CSRE[i] bit is set to 1, if the corresponding bit at the same position in the response MMCHS_RSP10[i] is set to 1, the host controller indicates a card error and software should proceed in the same way as if a CERR interrupt would have been detected in the MMCHS_STAT register. Note: This errata is applicable for omap44xx. Change-Id: Ib024bfb0624df04b7d6c61c129cbd9a34f919814 Signed-off-by: Semen Protsenko <semen.protsenko@ti.com>
* | SDIO: Add support for CCCR version 3.0 and SDIO revision 3.0Pradeep Gurumath2014-10-011-1/+1
| | | | | | | | | | | | | | | | | | | | | | Add CCCR structure version 3 define in sdio.h and using it for check in API sdio_read_cccr Also added SDIO Revision number 3.0 in sdio.h which is referenced by the TI WiLink driver Change-Id: I309439a00d67b1ca97b11c332bc0ca5a54415356 Signed-off-by: Pradeep Gurumath <pradeepgurumath@ti.com> Signed-off-by: Panduranga Mallireddy <panduranga_mallireddy@ti.com>
* | mmc: omap: Increase number of blks we can handleViswanath Puttagunta2014-10-011-5/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The above block layer is doing a "min" of max_req_size and max_blk_count*512 before submitting each request. As a result, the maximum size of request we are getting is only 120*512 = 60KB even though each line in the ADMA table can handle can handle that data alone. So, we increase the max_blk_count we can handle. Also, note that worst case is when above block layer gives us 512 segments, in which there are 511 single block entries, but one large block that is of size mmc->max_req_size - (511*512) bytes. In this case, we use the reserved 512 table entries to break up the large request. Also adjust the max_segs accordingly. Change-Id: I733effdebea94f51a49bbf323950529afbb00dc4 Signed-off-by: Viswanath Puttagunta <vishp@ti.com>
* | mmc: omap: align adma and dma table entriesVenkatraman S2014-10-011-8/+16
| | | | | | | | | | | | | | | | | | | | | | | | mmc->max_segs to core layer was set to 1024, but adma table entry could only hold 512 entries. Increase adma table entry size to 1024 from 512 to avoid mismatch. Also set max_blk_count, max_req_size to what adma can handle. Change-Id: I8e08ee39bfa966bdf8a6c4374aea82b34fedcc62 Signed-off-by: Viswanath Puttagunta <vishp@ti.com>
* | mmc: core: Kill block requests if card is removedSujit Reddy Thumma2014-10-012-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Kill block requests when the host knows that the card is removed from the slot and is sure that subsequent requests are bound to fail. Do this silently so that the block layer doesn't output unnecessary error messages. This patch implements suggestion from Adrian Hunter, http://thread.gmane.org/gmane.linux.kernel.mmc/2714/focus=3474 Change-Id: I146299b4acbcce95f9cfac114ee3feb56d1a13bd Signed-off-by: Sujit Reddy Thumma <sthumma <at> codeaurora.org> Signed-off-by: David Taylor <x0158378@ti.com>
* | HSMMC:Set disable timeout to 1msMadhusudhan Chikkature2014-10-011-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | The disable timeout is reduced from 100ms to 1ms in order to obtain aggressive power saving. Cherry picked from p-android-omap-2.6.35 commit ID: 50df9d10a9b33c82ad02003686050b12b03d4dfe Change-Id: Ieaa47d51396e7b92f6c1ba71e62900c58a05a26c Signed-off-by: Madhusudhan Chikkature <madhu.cr@ti.com> Signed-off-by: Viswanath Puttagunta <vishp@ti.com>
* | omap_hsmmc: Errata: Fix SD card removal detectionViswanath Puttagunta2014-10-011-0/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | Because of OMAP4 Silicon errata (i705), we have to turn off the PBIAS and VMMC for SD card as soon as we get card disconnect interrupt. Because of this, we don't wait for all higher layer structures to be dismantled before turning off power. As a side effect of this, we might end up getting a mmc_request even after SD is removed and VMMC and PBIAS are turned off. In that case, just fail the mmc_request and return immediately Change-Id: I8f0000587ebf8209f065cb85f678657c919dd135 Signed-off-by: Viswanath Puttagunta <vishp@ti.com>
* | omap-hsmmc: Fix issue during SD card disconnectViswanath Puttagunta2014-10-011-3/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Turning off IO & PBIAS cells and then SD card VMMC as soon as we get disconnect interrupt. Failure to do so is causing current spikes (latch-up issue)which can potentially burn the I/O cells. Enabled Debounce logic in TWL6030 so that erroneous disconnect/connect interrupts will be suppressed. This will also fix issue where SD card disconnect event was not getting detected when SD card is very slowly plugged out. Change-Id: I13f55451718b8cce3448245395b8d1344d4a2790 Signed-off-by: Viswanath Puttagunta <vishp@ti.com>
* | mmc: OMAP HSMMC: Add cmd23 supportBalaji T K2014-10-011-5/+34
| | | | | | | | | | | | | | Add support for set block count, close ended transfer Change-Id: Iab7386e1171a42ebdf55306fbf291a3e6dd85b40 Signed-off-by: Viswanath Puttagunta <vishp@ti.com>
* | MMC: OMAP HSMMC: Enable Auto CMD12Balaji T K2014-10-011-3/+15
| | | | | | | | | | | | | | | | | | | | | | | | Configure OMAP HSMMC module to support Auto CMD12. This will increase throughput during multi-block command operations as CMD12 does not have to be explicitly sent each time by software intervention. Instead, hardware will send CMD12 after desired number of blocks are transferred. Change-Id: I37bf31399c80531d9fd76baa736a59a118c769b0 Signed-off-by: Viswanath Puttagunta <vishp@ti.com>
* | mmc: OMAP HSMMC: DDR support added.Balaji T K2014-10-011-0/+13
| | | | | | | | | | | | | | OMAP HSMMC updated to support DDR mode Change-Id: Ifb8643e264216edf514a7e31ec989316700ee322 Signed-off-by: Viswanath Puttagunta <vishp@ti.com>
* | omap4-hsmmc : Adding ADMA supportDavid Taylor2014-10-011-14/+179
| | | | | | | | | | | | | | | | | | | | | | Adds ADMA support for HSMMC controllers 1 & 2 on OMAP4 Ensure dma-sg list coming from block layer is unmapped after every transfer completion. Change-Id: I1b898f771a3119804920c5cd17ec9c4456c60916 Signed-off-by: Viswanath Puttagunta <vishp@ti.com> Signed-off-by: Kishore Kadiyala <kishore.kadiyala@ti.com> Signed-off-by: David Taylor <x0158378@ti.com>
* | MMC: increased write data timeout for SD cards to 500msAndrii Guriev2014-10-011-3/+4
| | | | | | | | | | | | | | | | | | According to SD Specifications version 3.01 application note, the recommended write timeout for SD hosts is atleast 500 ms. Change-Id: I3c00b588c1c875d04ad1b5c40fc4270dc54611dc Signed-off-by: Andrii Guriev <x0160204@ti.com> Signed-off-by: Viswanath Puttagunta <vishp@ti.com>
* | Merge branch 'android-omap-3.0' into android-omap-tuna-3.0Todd Poynor2013-01-168-16/+21
|\ \
| * \ Merge branch 'android-3.0' into android-omap-3.0Todd Poynor2013-01-168-16/+21
| |\ \ | | | | | | | | | | | | | | | | | | | | | | | | Fixup incompatible code in opp.c: omap_init_opp_table() Change-Id: Iac7d60b814a539285d00e0a3dbb6e3f0060cb683 Signed-off-by: Todd Poynor <toddpoynor@google.com>
| | * \ Merge commit 'v3.0.58' into android-3.0Todd Poynor2013-01-151-1/+1
| | |\ \ | | | |/ | | | | | | | | Change-Id: I05959ed26f71cf9197df59291e8e13f254b2115c
| | | * mmc: sdhci-s3c: fix the wrong number of max bus clocksJaehoon Chung2012-12-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | commit 5feb54a1ab91a237e247c013b8c4fb100ea347b1 upstream. We can use up to four bus-clocks; but on module remove, we didn't disable the fourth bus clock. Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Signed-off-by: Chris Ball <cjb@laptop.org> Cc: Ben Hutchings <ben@decadent.org.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| | * | Merge remote-tracking branch 'stable/linux-3.0.y' into android-3.0Todd Poynor2012-11-017-15/+20
| | |\ \ | | | |/ | | | | | | | | | | | | Change-Id: I9685feb9277b450da10d78a455b3c0674d6cfe18 Signed-off-by: Todd Poynor <toddpoynor@google.com>
| | | * mmc: Prevent 1.8V switch for SD hosts that don't support UHS modes.Al Cooper2012-10-021-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | commit 4188bba0e9e7ba58d231b528df495666f2742b74 upstream. The driver should not try to switch to 1.8V when the SD 3.0 host controller does not have any UHS capabilities bits set (SDR50, DDR50 or SDR104). See page 72 of "SD Specifications Part A2 SD Host Controller Simplified Specification Version 3.00" under "1.8V Signaling Enable". Instead of setting SDR12 and SDR25 in the host capabilities data structure for all V3.0 host controllers, only set them if SDR104, SDR50 or DDR50 is set in the host capabilities register. This will prevent the switch to 1.8V later. Signed-off-by: Al Cooper <acooper@gmail.com> Acked-by: Arindam Nath <arindam.nath@amd.com> Acked-by: Philip Rakity <prakity@marvell.com> Acked-by: Girish K S <girish.shivananjappa@linaro.org> Signed-off-by: Chris Ball <cjb@laptop.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| | | * mmc: sd: Handle SD3.0 cards not supporting UHS-I bus speed modeSubhash Jadavani2012-10-021-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | commit f2815f68dabbb373fd1c9f0fd4a609d486697c2b upstream. Here is Essential conditions to indicate Version 3.00 Card (SD_SPEC=2 and SD_SPEC3=1) : (1) The card shall support CMD6 (2) The card shall support CMD8 (3) The card shall support CMD42 (4) User area capacity shall be up to 2GB (SDSC) or 32GB (SDHC) User area capacity shall be more than or equal to 32GB and up to 2TB (SDXC) (5) Speed Class shall be supported (SDHC or SDXC) So even if SD card doesn't support any of the newly defined UHS-I bus speed mode, it can advertise itself as SD3.0 cards as long as it supports all the essential conditions of SD3.0 cards. Given this, these type of cards should atleast run in High Speed mode @50MHZ if it supports HS. But current initialization sequence for SD3.0 cards is such that these non-UHS-I SD3.0 cards runs in Default Speed mode @25MHz. This patch makes sure that these non-UHS-I SD3.0 cards run in High Speed Mode @50MHz. Tested this patch with SanDisk Extreme SDHC 8GB Class 10 card. Reported-by: "Hiremath, Vaibhav" <hvaibhav@ti.com> Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org> Signed-off-by: Chris Ball <cjb@laptop.org>
| | | * mmc: sdhci-esdhc: break out early if clock is 0Shawn Guo2012-10-021-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | commit 74f330bceaa7b88d06062e1cac3d519a3dfc041e upstream. Since commit 30832ab56 ("mmc: sdhci: Always pass clock request value zero to set_clock host op") was merged, esdhc_set_clock starts hitting "if (clock == 0)" where ESDHC_SYSTEM_CONTROL has been operated. This causes SDHCI card-detection function being broken. Fix the regression by moving "if (clock == 0)" above ESDHC_SYSTEM_CONTROL operation. Signed-off-by: Shawn Guo <shawn.guo@linaro.org> Signed-off-by: Chris Ball <cjb@laptop.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| | | * mmc: mxs-mmc: fix deadlock in SDIO IRQ caseLauri Hintsala2012-10-021-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | commit 1af36b2a993dddfa3d6860ec4879c9e8abc9b976 upstream. Release the lock before mmc_signal_sdio_irq is called by mxs_mmc_irq_handler. Backtrace: [ 79.660000] ============================================= [ 79.660000] [ INFO: possible recursive locking detected ] [ 79.660000] 3.4.0-00009-g3e96082-dirty #11 Not tainted [ 79.660000] --------------------------------------------- [ 79.660000] swapper/0 is trying to acquire lock: [ 79.660000] (&(&host->lock)->rlock#2){-.....}, at: [<c026ea3c>] mxs_mmc_enable_sdio_irq+0x18/0xd4 [ 79.660000] [ 79.660000] but task is already holding lock: [ 79.660000] (&(&host->lock)->rlock#2){-.....}, at: [<c026f744>] mxs_mmc_irq_handler+0x1c/0xe8 [ 79.660000] [ 79.660000] other info that might help us debug this: [ 79.660000] Possible unsafe locking scenario: [ 79.660000] [ 79.660000] CPU0 [ 79.660000] ---- [ 79.660000] lock(&(&host->lock)->rlock#2); [ 79.660000] lock(&(&host->lock)->rlock#2); [ 79.660000] [ 79.660000] *** DEADLOCK *** [ 79.660000] [ 79.660000] May be due to missing lock nesting notation [ 79.660000] [ 79.660000] 1 lock held by swapper/0: [ 79.660000] #0: (&(&host->lock)->rlock#2){-.....}, at: [<c026f744>] mxs_mmc_irq_handler+0x1c/0xe8 [ 79.660000] [ 79.660000] stack backtrace: [ 79.660000] [<c0014bd0>] (unwind_backtrace+0x0/0xf4) from [<c005f9c0>] (__lock_acquire+0x1948/0x1d48) [ 79.660000] [<c005f9c0>] (__lock_acquire+0x1948/0x1d48) from [<c005fea0>] (lock_acquire+0xe0/0xf8) [ 79.660000] [<c005fea0>] (lock_acquire+0xe0/0xf8) from [<c03a8460>] (_raw_spin_lock_irqsave+0x44/0x58) [ 79.660000] [<c03a8460>] (_raw_spin_lock_irqsave+0x44/0x58) from [<c026ea3c>] (mxs_mmc_enable_sdio_irq+0x18/0xd4) [ 79.660000] [<c026ea3c>] (mxs_mmc_enable_sdio_irq+0x18/0xd4) from [<c026f7fc>] (mxs_mmc_irq_handler+0xd4/0xe8) [ 79.660000] [<c026f7fc>] (mxs_mmc_irq_handler+0xd4/0xe8) from [<c006bdd8>] (handle_irq_event_percpu+0x70/0x254) [ 79.660000] [<c006bdd8>] (handle_irq_event_percpu+0x70/0x254) from [<c006bff8>] (handle_irq_event+0x3c/0x5c) [ 79.660000] [<c006bff8>] (handle_irq_event+0x3c/0x5c) from [<c006e6d0>] (handle_level_irq+0x90/0x110) [ 79.660000] [<c006e6d0>] (handle_level_irq+0x90/0x110) from [<c006b930>] (generic_handle_irq+0x38/0x50) [ 79.660000] [<c006b930>] (generic_handle_irq+0x38/0x50) from [<c00102fc>] (handle_IRQ+0x30/0x84) [ 79.660000] [<c00102fc>] (handle_IRQ+0x30/0x84) from [<c000f058>] (__irq_svc+0x38/0x60) [ 79.660000] [<c000f058>] (__irq_svc+0x38/0x60) from [<c0010520>] (default_idle+0x2c/0x40) [ 79.660000] [<c0010520>] (default_idle+0x2c/0x40) from [<c0010a90>] (cpu_idle+0x64/0xcc) [ 79.660000] [<c0010a90>] (cpu_idle+0x64/0xcc) from [<c04ff858>] (start_kernel+0x244/0x2c8) [ 79.660000] BUG: spinlock lockup on CPU#0, swapper/0 [ 79.660000] lock: c398cb2c, .magic: dead4ead, .owner: swapper/0, .owner_cpu: 0 [ 79.660000] [<c0014bd0>] (unwind_backtrace+0x0/0xf4) from [<c01ddb1c>] (do_raw_spin_lock+0xf0/0x144) [ 79.660000] [<c01ddb1c>] (do_raw_spin_lock+0xf0/0x144) from [<c03a8468>] (_raw_spin_lock_irqsave+0x4c/0x58) [ 79.660000] [<c03a8468>] (_raw_spin_lock_irqsave+0x4c/0x58) from [<c026ea3c>] (mxs_mmc_enable_sdio_irq+0x18/0xd4) [ 79.660000] [<c026ea3c>] (mxs_mmc_enable_sdio_irq+0x18/0xd4) from [<c026f7fc>] (mxs_mmc_irq_handler+0xd4/0xe8) [ 79.660000] [<c026f7fc>] (mxs_mmc_irq_handler+0xd4/0xe8) from [<c006bdd8>] (handle_irq_event_percpu+0x70/0x254) [ 79.660000] [<c006bdd8>] (handle_irq_event_percpu+0x70/0x254) from [<c006bff8>] (handle_irq_event+0x3c/0x5c) [ 79.660000] [<c006bff8>] (handle_irq_event+0x3c/0x5c) from [<c006e6d0>] (handle_level_irq+0x90/0x110) [ 79.660000] [<c006e6d0>] (handle_level_irq+0x90/0x110) from [<c006b930>] (generic_handle_irq+0x38/0x50) [ 79.660000] [<c006b930>] (generic_handle_irq+0x38/0x50) from [<c00102fc>] (handle_IRQ+0x30/0x84) [ 79.660000] [<c00102fc>] (handle_IRQ+0x30/0x84) from [<c000f058>] (__irq_svc+0x38/0x60) [ 79.660000] [<c000f058>] (__irq_svc+0x38/0x60) from [<c0010520>] (default_idle+0x2c/0x40) [ 79.660000] [<c0010520>] (default_idle+0x2c/0x40) from [<c0010a90>] (cpu_idle+0x64/0xcc) [ 79.660000] [<c0010a90>] (cpu_idle+0x64/0xcc) from [<c04ff858>] (start_kernel+0x244/0x2c8) Signed-off-by: Lauri Hintsala <lauri.hintsala@bluegiga.com> Acked-by: Shawn Guo <shawn.guo@linaro.org> Signed-off-by: Chris Ball <cjb@laptop.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| | | * mmc: sdhci-pci: CaFe has broken card detectionDaniel Drake2012-08-091-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | commit 55fc05b7414274f17795cd0e8a3b1546f3649d5e upstream. At http://dev.laptop.org/ticket/11980 we have determined that the Marvell CaFe SDHCI controller reports bad card presence during resume. It reports that no card is present even when it is. This is a regression -- resume worked back around 2.6.37. Around 400ms after resuming, a "card inserted" interrupt is generated, at which point it starts reporting presence. Work around this hardware oddity by setting the SDHCI_QUIRK_BROKEN_CARD_DETECTION flag. Thanks to Chris Ball for helping with diagnosis. Signed-off-by: Daniel Drake <dsd@laptop.org> Signed-off-by: Chris Ball <cjb@laptop.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| | | * mmc: sdio: avoid spurious calls to interrupt handlersNicolas Pitre2012-06-012-5/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | commit bbbc4c4d8c5face097d695f9bf3a39647ba6b7e7 upstream. Commit 06e8935feb ("optimized SDIO IRQ handling for single irq") introduced some spurious calls to SDIO function interrupt handlers, such as when the SDIO IRQ thread is started, or the safety check performed upon a system resume. Let's add a flag to perform the optimization only when a real interrupt is signaled by the host driver and we know there is no point confirming it. Reported-by: Sujit Reddy Thumma <sthumma@codeaurora.org> Signed-off-by: Nicolas Pitre <nico@linaro.org> Signed-off-by: Chris Ball <cjb@laptop.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* | | | Merge branch 'android-omap-3.0' into android-omap-tuna-3.0Todd Poynor2012-08-162-11/+7
|\ \ \ \ | |/ / /
| * | | Merge branch 'linux-omap-3.0' into android-omap-3.0Todd Poynor2012-08-161-11/+6
| |\ \ \
| | * | | OMAP4: hsmmc: fix race conditions in suspend/resume pathBalaji T K2012-08-161-11/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit a15bf22cba9eec27a008331c4b8a095fc43ea6b7. Change-Id: I92f37aaa0a5b323b229c2e51b4176f837a5e1494
| * | | | Merge branch 'android-3.0' into android-omap-3.0Todd Poynor2012-08-161-0/+1
| |\ \ \ \ | | | |/ / | | |/| |
| | * | | mmc: Make sure host is disabled on suspendDmitry Shmidt2012-08-161-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | Change-Id: Ie0bf2004e173cef8dad66722a152658d7727ab65 Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
* | | | | Merge branch 'android-omap-3.0' into android-omap-tuna-3.0Todd Poynor2012-08-141-6/+6
|\ \ \ \ \ | |/ / / /
| * | | | Merge branch 'linux-omap-3.0' into android-omap-3.0Todd Poynor2012-08-141-6/+6
| |\ \ \ \ | | | |/ / | | |/| |
| | * | | Revert "OMAP4: hsmmc: fix race conditions in suspend/resume path"Todd Poynor2012-08-141-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 1b8153cc8ca36697f4d1dbf36916fbe506d6cd95. Change-Id: I31ffd48debe6562a29d640554e6fe4a563aa4ad3 Signed-off-by: Todd Poynor <toddpoynor@google.com>
* | | | | Merge branch 'android-omap-3.0' into android-omap-tuna-3.0Todd Poynor2012-08-031-6/+6
|\ \ \ \ \ | |/ / / /
| * | | | Merge branch 'linux-omap-3.0' into android-omap-3.0Todd Poynor2012-08-031-6/+6
| |\ \ \ \ | | |/ / /
| | * | | OMAP4: hsmmc: fix race conditions in suspend/resume pathBalaji T K2012-06-191-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | using mmc_host_enable/disable causes race conditions. By using runtime pm framework during hsmmc suspend/resume, clock management integrity is kept, thereby avoid race conditions Change-Id: I34dac7d3aaacab82b82dedff610b3a5060cf72ce Signed-off-by: Mahesh Renduchintala <mahesh@ti.com>
| | * | | Merge commit 'v3.0.31' into linux-omap-3.0Todd Poynor2012-05-081-2/+1
| | |\ \ \ | | | | |/ | | | |/|