|
|
|
@ -145,51 +145,6 @@ typedef volatile struct |
|
|
|
|
#define SET_VCC_VPP(VCC, VPP, SLOT)\ |
|
|
|
|
((((VCC) << 2) | ((VPP) << 0)) << ((SLOT) * 8)) |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* SD controller macros |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
/* Detect card. */ |
|
|
|
|
#define mmc_card_inserted(_n_, _res_) \ |
|
|
|
|
do { \
|
|
|
|
|
BCSR * const bcsr = (BCSR *)0xAE000000; \
|
|
|
|
|
unsigned long mmc_wp, board_specific; \
|
|
|
|
|
if ((_n_)) { \
|
|
|
|
|
mmc_wp = BCSR_BOARD_SD1_WP; \
|
|
|
|
|
} else { \
|
|
|
|
|
mmc_wp = BCSR_BOARD_SD0_WP; \
|
|
|
|
|
} \
|
|
|
|
|
board_specific = au_readl((unsigned long)(&bcsr->specific)); \
|
|
|
|
|
if (!(board_specific & mmc_wp)) {/* low means card present */ \
|
|
|
|
|
*(int *)(_res_) = 1; \
|
|
|
|
|
} else { \
|
|
|
|
|
*(int *)(_res_) = 0; \
|
|
|
|
|
} \
|
|
|
|
|
} while (0) |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Apply power to card slot(s). |
|
|
|
|
*/ |
|
|
|
|
#define mmc_power_on(_n_) \ |
|
|
|
|
do { \
|
|
|
|
|
BCSR * const bcsr = (BCSR *)0xAE000000; \
|
|
|
|
|
unsigned long mmc_pwr, mmc_wp, board_specific; \
|
|
|
|
|
if ((_n_)) { \
|
|
|
|
|
mmc_pwr = BCSR_BOARD_SD1_PWR; \
|
|
|
|
|
mmc_wp = BCSR_BOARD_SD1_WP; \
|
|
|
|
|
} else { \
|
|
|
|
|
mmc_pwr = BCSR_BOARD_SD0_PWR; \
|
|
|
|
|
mmc_wp = BCSR_BOARD_SD0_WP; \
|
|
|
|
|
} \
|
|
|
|
|
board_specific = au_readl((unsigned long)(&bcsr->specific)); \
|
|
|
|
|
if (!(board_specific & mmc_wp)) {/* low means card present */ \
|
|
|
|
|
board_specific |= mmc_pwr; \
|
|
|
|
|
au_writel(board_specific, (int)(&bcsr->specific)); \
|
|
|
|
|
au_sync(); \
|
|
|
|
|
} \
|
|
|
|
|
} while (0) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* NAND defines |
|
|
|
|
* |
|
|
|
|