[PATCH] MMC: wbsd update
Updates to the wbsd driver. * Fix to handle DAT3 card detection. * Fixed bug which could cause large writes to stall in FIFO mode. * Plug 'n Play support. In most cases you need ACPI PNP for this to work. * Uses generic DMA API (ISA dependency removed).
This commit is contained in:
parent
88d7bd8cb9
commit
85bcc13072
|
@ -51,7 +51,7 @@ config MMC_PXA
|
||||||
|
|
||||||
config MMC_WBSD
|
config MMC_WBSD
|
||||||
tristate "Winbond W83L51xD SD/MMC Card Interface support"
|
tristate "Winbond W83L51xD SD/MMC Card Interface support"
|
||||||
depends on MMC && ISA && ISA_DMA_API
|
depends on MMC && ISA_DMA_API
|
||||||
help
|
help
|
||||||
This selects the Winbond(R) W83L51xD Secure digital and
|
This selects the Winbond(R) W83L51xD Secure digital and
|
||||||
Multimedia card Interface.
|
Multimedia card Interface.
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -35,6 +35,12 @@ const int valid_ids[] = {
|
||||||
|
|
||||||
#define DEVICE_SD 0x03
|
#define DEVICE_SD 0x03
|
||||||
|
|
||||||
|
#define WBSD_PINS_DAT3_HI 0x20
|
||||||
|
#define WBSD_PINS_DAT3_OUT 0x10
|
||||||
|
#define WBSD_PINS_GP11_HI 0x04
|
||||||
|
#define WBSD_PINS_DETECT_GP11 0x02
|
||||||
|
#define WBSD_PINS_DETECT_DAT3 0x01
|
||||||
|
|
||||||
#define WBSD_CMDR 0x00
|
#define WBSD_CMDR 0x00
|
||||||
#define WBSD_DFR 0x01
|
#define WBSD_DFR 0x01
|
||||||
#define WBSD_EIR 0x02
|
#define WBSD_EIR 0x02
|
||||||
|
@ -133,6 +139,7 @@ const int valid_ids[] = {
|
||||||
#define WBSD_CRC_OK 0x05 /* S010E (00101) */
|
#define WBSD_CRC_OK 0x05 /* S010E (00101) */
|
||||||
#define WBSD_CRC_FAIL 0x0B /* S101E (01011) */
|
#define WBSD_CRC_FAIL 0x0B /* S101E (01011) */
|
||||||
|
|
||||||
|
#define WBSD_DMA_SIZE 65536
|
||||||
|
|
||||||
struct wbsd_host
|
struct wbsd_host
|
||||||
{
|
{
|
||||||
|
@ -140,6 +147,11 @@ struct wbsd_host
|
||||||
|
|
||||||
spinlock_t lock; /* Mutex */
|
spinlock_t lock; /* Mutex */
|
||||||
|
|
||||||
|
int flags; /* Driver states */
|
||||||
|
|
||||||
|
#define WBSD_FCARD_PRESENT (1<<0) /* Card is present */
|
||||||
|
#define WBSD_FIGNORE_DETECT (1<<1) /* Ignore card detection */
|
||||||
|
|
||||||
struct mmc_request* mrq; /* Current request */
|
struct mmc_request* mrq; /* Current request */
|
||||||
|
|
||||||
u8 isr; /* Accumulated ISR */
|
u8 isr; /* Accumulated ISR */
|
||||||
|
|
Reference in New Issue