its happening somewhere here, because i never prints 'mmc card init *2* static int mmc_card_init(void) { unsigned char r = 0; short i, j; unsigned long flags; save_flags(flags); cli(); printk("mmc Card init\n"); mmc_spi_cs_high(); for (i = 0; i < 20; i++) mmc_spi_io(0xff); mmc_spi_cs_low(); mmc_spi_io(0x40); for (i = 0; i < 4; i++) mmc_spi_io(0x00); mmc_spi_io(0x95); for (i = 0; i < 8; i++) { r = mmc_spi_io(0xff); if (r == 0x01) break; } mmc_spi_cs_high(); mmc_spi_io(0xff); if (r != 0x01) { restore_flags(flags); return(1); } printk("mmc Card init *1*\n");