dect
/
linux-2.6
Archived
13
0
Fork 0

[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:
Pierre Ossman 2005-05-08 19:35:27 +01:00 committed by Russell King
parent 88d7bd8cb9
commit 85bcc13072
3 changed files with 598 additions and 240 deletions

View File

@ -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

View File

@ -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 */