On 3 December 2014 at 00:42, Doug Anderson <dianders@xxxxxxxxxxxx> wrote: > Bing Zhao at Marvell found a problem with dw_mmc where interrupts > weren't firing sometimes. He tracked it down to a read-modify-write > problem with the INTMASK. These patches fix the problem. > > Note: I've picked up a > 1-year old series here to make another > attempt at landing it upstream. These patches have been in shipping > Chromebooks for the last year. Note that v3 to v4 has no changes > other than a rebase and a small commit message update. > > The first two patches extend the "init_card()" mechanism of MMC core > to actually be called for all card types, not just SDIO. That could > be applied any time and should fix at least one longstanding bug > (untested). > > The third patch is a cleanup patch to use init_card() to move things > around a bit so we don't need to handle SDIO cards in such a strange > place. On earlier versions of this patch Seungwon brought up a few > points which I have _not_ addressed. See > <https://patchwork.kernel.org/patch/3049071/>. Other than talk of > cards with out of band interrupts maybe being able to gate their > clocks, he wanted to use MMC_QUIRK_BROKEN_CLK_GATING. I didn't do > that because of the ordering of init_card() and when the quirks are > set. Some users of init_card() like pandora_wl1251_init_card() rely > on it being called very early in the process. > pandora_wl1251_init_card() hardcodes a vendor and device and thus need > to be called super early. On the other hand the code that adds quirks > _reads_ the vendor and device. It can't possibly move before > init_card(). If folks are willing to take an additional host op of > init_card_late() I can certainly go that way, though. > > The fourth patch is (I think) reviewed and ready to go assuming the > other two land. I have queued this up for 3.20. It was a bit hard to follow the updated the revisions, please don't send patches "in-reply-to" for future sets. In v5, I don't find a patch 1/4. Anyway, I have taken patch 2->4. Kind regards Uffe > > Changes in v5: > - Split fixup to pandora_wl1251_init_card() into its own patch. > > Changes in v3: > - Add fixup to pandora_wl1251_init_card(). > > Changes in v2: > - mmc core change new for this version. > - Fixed "|" to "&". > - intmask_lock renamed to irq_lock > > Doug Anderson (4): > ARM: OMAP2+: Make sure pandora_wl1251_init_card() applies to SDIO only > mmc: core: Support the optional init_card() callback for MMC and SD > mmc: dw_mmc: Cleanup disable of low power mode w/ SDIO interrupts > mmc: dw_mmc: Protect read-modify-write of INTMASK with a lock > > arch/arm/mach-omap2/board-omap3pandora.c | 14 +++--- > drivers/mmc/core/mmc.c | 6 +++ > drivers/mmc/core/sd.c | 7 ++- > drivers/mmc/host/dw_mmc.c | 80 +++++++++++++++++++------------- > drivers/mmc/host/dw_mmc.h | 1 + > include/linux/mmc/dw_mmc.h | 6 +++ > 6 files changed, 74 insertions(+), 40 deletions(-) > > -- > 2.2.0.rc0.207.ga3a616c > -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html