Hi! In db1x00/db1x00.h are two macros (mmc_card_inserted, mmc_power_on) that are not used and partially buggy. The 'bug' in them is that they use 0xAE000000 directly instead of BCSR_KSEG1_ADDR, possibly breaking db1550 which has its BCSRs at a different address. Another thing I stumbled across is the definitions of NAND_* in the same file. These are repeated in a few other board-specific headers, but always with the same values. The final NAND_TIMING is also only used once in drivers/mtd/nand/au1550nd.c. I don't know if that is intentional, but maybe someone that knows what's going on there could take a look at it. This patch removes only the mmc_* macros, I didn't touch the others. The patch is against the 2.6 sources, but I found that these macros also exist under 2.4.29 (not sure if this is from l-m.org or from kernel.org) and are unused there as well. cheers Uli --- Index: include/asm/mach-db1x00/db1x00.h =================================================================== RCS file: /home/cvs/linux/include/asm-mips/mach-db1x00/db1x00.h,v retrieving revision 1.7 diff -u -w -r1.7 db1x00.h --- include/asm/mach-db1x00/db1x00.h 15 Jan 2005 01:31:04 -0000 1.7 +++ include/asm/mach-db1x00/db1x00.h 31 Mar 2005 12:45:51 -0000 @@ -59,7 +59,6 @@ unsigned short reserved6; /*1C*/ unsigned short swreset; unsigned short reserved7; - } BCSR; @@ -134,50 +133,6 @@ #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 */ /* Timing values as described in databook, * ns value stripped of * lower 2 bits.