• Grazvydas Ignotas's avatar
    sdio: allow non-standard SDIO cards · 6f51be3d
    Grazvydas Ignotas authored
    There are some chips (like TI WL12xx series) that can be interfaced over
    SDIO but don't support the SDIO specification, meaning that they are
    missing CIA (Common I/O Area) with all it's registers.  Current Linux SDIO
    implementation relies on those registers to identify and configure the
    card, so non-standard cards can not function and cause lots of warnings
    from the core when it reads invalid data from non-existent registers.
    
    After this patch, init_card() host callback can now set new quirk
    MMC_QUIRK_NONSTD_SDIO, which means that SDIO core should not try to access
    any standard SDIO registers and rely on init_card() to fill all SDIO
    structures instead.  As those cards are usually embedded chips, all the
    required information can be obtained from machine board files by the host
    driver when it's called through init_card() callback.
    Signed-off-by: default avatarGrazvydas Ignotas <notasas@gmail.com>
    Cc: Adrian Hunter <adrian.hunter@nokia.com>
    Cc: Tony Lindgren <tony@atomide.com>
    Cc: Bob Copeland <me@bobcopeland.com>
    Cc: Kalle Valo <kvalo@adurom.com>
    Cc: Madhusudhan Chikkature <madhu.cr@ti.com>
    Cc: Kishore Kadiyala <kishore.kadiyala@ti.com>
    Cc: Russell King <linux@arm.linux.org.uk>
    Cc: <linux-mmc@vger.kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    6f51be3d
sdio.c 15.1 KB