Hello David, On Sat, Jul 14, 2007 at 03:04:51PM -0700, David Brownell wrote: > Here's an updated version of the MMC-over-SPI patches, reworked to > address most of Pierre's issues (moving even more code into the MMC > core) and to clean up the I/O paths. > > To build/run these, you'll need the CRC7 patch from recent MM trees. > > - headers learn about SPI > > - mmc_block learns about SPI > > - mmc core updates > > - mmc_spi host driver > > The bits related to card lock/unlock aren't included here, since > those didn't go upstream yet.
Much thanks for the patches! Though, I still have some troubles with getting MMC(SD)-over-SPI to work. I'm using slightly patched spi_mpc83xx.c driver + these four mmc patches. spi_mpc83xx.c tested only in loopback mode and using oscilloscope. It _seem_ to work fine, but as I didn't tested it on real hardware (other than MMC/SD), I can't say if it's fault of spi_mpc83xx or mmc_spi. David, can you see anything helpful in these debug messages? - - - - mmc_spi spi1.0: ASSUMING unshared SPI bus! mmc_spi spi1.0: ASSUMING 3.2-3.4 V slot power mmc0: clock 0Hz busmode 0 powermode 0 cs 0 Vdd 0 width 0 timing 0 mmc_spi spi1.0: SD/MMC host mmc0, no DMA, no WP, no poweroff mmc0: clock 0Hz busmode 2 powermode 1 cs 1 Vdd 21 width 0 timing 0 mmc_spi spi1.0: mmc_spi: power up (21) mmc0: clock 400000Hz busmode 2 powermode 2 cs 1 Vdd 21 width 0 timing 0 mmc_spi spi1.0: mmc_spi: power on (21) mmc_spi spi1.0: mmc_spi: clock to 400000 Hz, 0 mmc0: starting CMD0 arg 00000000 flags 000000c0 mmc_spi spi1.0: mmc_spi: CMD0, MMC_SPI_R1 mmc0: req done (CMD0): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD8 arg 000001aa flags 000002f5 mmc_spi spi1.0: mmc_spi: CMD8, MMC_SPI_R3/R7 mmc_spi spi1.0: ... CMD8 response SPI_R3/R7: resp 0005 00000000 mmc0: req done (CMD8): 5/0/0: 00000005 00000000 00000000 00000000 mmc0: starting CMD55 arg 00000000 flags 000000f5 mmc_spi spi1.0: mmc_spi: CMD55, MMC_SPI_R1 mmc0: req done (CMD55): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD41 arg 00000000 flags 000000e1 mmc_spi spi1.0: mmc_spi: CMD41, MMC_SPI_R1 mmc0: req done (CMD41): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD55 arg 00000000 flags 000000f5 mmc_spi spi1.0: mmc_spi: CMD55, MMC_SPI_R1 mmc0: req done (CMD55): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD41 arg 00000000 flags 000000e1 mmc_spi spi1.0: mmc_spi: CMD41, MMC_SPI_R1 mmc0: req done (CMD41): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD55 arg 00000000 flags 000000f5 mmc_spi spi1.0: mmc_spi: CMD55, MMC_SPI_R1 mmc0: req done (CMD55): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD41 arg 00000000 flags 000000e1 mmc_spi spi1.0: mmc_spi: CMD41, MMC_SPI_R1 mmc0: req done (CMD41): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD55 arg 00000000 flags 000000f5 mmc_spi spi1.0: mmc_spi: CMD55, MMC_SPI_R1 mmc0: req done (CMD55): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD41 arg 00000000 flags 000000e1 mmc_spi spi1.0: mmc_spi: CMD41, MMC_SPI_R1 mmc0: req done (CMD41): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD55 arg 00000000 flags 000000f5 mmc_spi spi1.0: mmc_spi: CMD55, MMC_SPI_R1 mmc0: req done (CMD55): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD41 arg 00000000 flags 000000e1 mmc_spi spi1.0: mmc_spi: CMD41, MMC_SPI_R1 mmc0: req done (CMD41): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD55 arg 00000000 flags 000000f5 mmc_spi spi1.0: mmc_spi: CMD55, MMC_SPI_R1 mmc0: req done (CMD55): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD41 arg 00000000 flags 000000e1 mmc_spi spi1.0: mmc_spi: CMD41, MMC_SPI_R1 mmc0: req done (CMD41): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD55 arg 00000000 flags 000000f5 mmc_spi spi1.0: mmc_spi: CMD55, MMC_SPI_R1 mmc0: req done (CMD55): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD41 arg 00000000 flags 000000e1 mmc_spi spi1.0: mmc_spi: CMD41, MMC_SPI_R1 mmc0: req done (CMD41): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD55 arg 00000000 flags 000000f5 mmc_spi spi1.0: mmc_spi: CMD55, MMC_SPI_R1 mmc0: req done (CMD55): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD41 arg 00000000 flags 000000e1 mmc_spi spi1.0: mmc_spi: CMD41, MMC_SPI_R1 mmc0: req done (CMD41): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD55 arg 00000000 flags 000000f5 mmc_spi spi1.0: mmc_spi: CMD55, MMC_SPI_R1 mmc0: req done (CMD55): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD41 arg 00000000 flags 000000e1 mmc_spi spi1.0: mmc_spi: CMD41, MMC_SPI_R1 mmc0: req done (CMD41): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD55 arg 00000000 flags 000000f5 mmc_spi spi1.0: mmc_spi: CMD55, MMC_SPI_R1 mmc0: req done (CMD55): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD41 arg 00000000 flags 000000e1 mmc_spi spi1.0: mmc_spi: CMD41, MMC_SPI_R1 mmc0: req done (CMD41): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD55 arg 00000000 flags 000000f5 mmc_spi spi1.0: mmc_spi: CMD55, MMC_SPI_R1 mmc0: req done (CMD55): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD41 arg 00000000 flags 000000e1 mmc_spi spi1.0: mmc_spi: CMD41, MMC_SPI_R1 mmc0: req done (CMD41): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD55 arg 00000000 flags 000000f5 mmc_spi spi1.0: mmc_spi: CMD55, MMC_SPI_R1 mmc0: req done (CMD55): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD41 arg 00000000 flags 000000e1 mmc_spi spi1.0: mmc_spi: CMD41, MMC_SPI_R1 mmc0: req done (CMD41): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD55 arg 00000000 flags 000000f5 mmc_spi spi1.0: mmc_spi: CMD55, MMC_SPI_R1 mmc0: req done (CMD55): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD41 arg 00000000 flags 000000e1 mmc_spi spi1.0: mmc_spi: CMD41, MMC_SPI_R1 mmc0: req done (CMD41): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD55 arg 00000000 flags 000000f5 mmc_spi spi1.0: mmc_spi: CMD55, MMC_SPI_R1 mmc0: req done (CMD55): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD41 arg 00000000 flags 000000e1 mmc_spi spi1.0: mmc_spi: CMD41, MMC_SPI_R1 mmc0: req done (CMD41): 0/0/0: 00000000 00000000 00000000 00000000 mmc0: starting CMD58 arg 00000000 flags 00000280 mmc_spi spi1.0: mmc_spi: CMD58, MMC_SPI_R3/R7 mmc0: req done (CMD58): 0/0/0: 00000000 80ff8000 00000000 00000000 mmc0: clock 400000Hz busmode 2 powermode 2 cs 1 Vdd 20 width 0 timing 0 mmc0: starting CMD0 arg 00000000 flags 000000c0 mmc_spi spi1.0: mmc_spi: CMD0, MMC_SPI_R1 mmc0: req done (CMD0): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD8 arg 000001aa flags 000002f5 mmc_spi spi1.0: mmc_spi: CMD8, MMC_SPI_R3/R7 mmc_spi spi1.0: ... CMD8 response SPI_R3/R7: resp 0005 00000000 mmc0: req done (CMD8): 5/0/0: 00000005 00000000 00000000 00000000 mmc0: starting CMD55 arg 00000000 flags 000000f5 mmc_spi spi1.0: mmc_spi: CMD55, MMC_SPI_R1 mmc0: req done (CMD55): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD41 arg 00300000 flags 000000e1 mmc_spi spi1.0: mmc_spi: CMD41, MMC_SPI_R1 mmc0: req done (CMD41): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD55 arg 00000000 flags 000000f5 mmc_spi spi1.0: mmc_spi: CMD55, MMC_SPI_R1 mmc0: req done (CMD55): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD41 arg 00300000 flags 000000e1 mmc_spi spi1.0: mmc_spi: CMD41, MMC_SPI_R1 mmc0: req done (CMD41): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD55 arg 00000000 flags 000000f5 mmc_spi spi1.0: mmc_spi: CMD55, MMC_SPI_R1 mmc0: req done (CMD55): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD41 arg 00300000 flags 000000e1 mmc_spi spi1.0: mmc_spi: CMD41, MMC_SPI_R1 mmc0: req done (CMD41): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD55 arg 00000000 flags 000000f5 mmc_spi spi1.0: mmc_spi: CMD55, MMC_SPI_R1 mmc0: req done (CMD55): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD41 arg 00300000 flags 000000e1 mmc_spi spi1.0: mmc_spi: CMD41, MMC_SPI_R1 mmc0: req done (CMD41): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD55 arg 00000000 flags 000000f5 mmc_spi spi1.0: mmc_spi: CMD55, MMC_SPI_R1 mmc0: req done (CMD55): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD41 arg 00300000 flags 000000e1 mmc_spi spi1.0: mmc_spi: CMD41, MMC_SPI_R1 mmc0: req done (CMD41): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD55 arg 00000000 flags 000000f5 mmc_spi spi1.0: mmc_spi: CMD55, MMC_SPI_R1 mmc0: req done (CMD55): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD41 arg 00300000 flags 000000e1 mmc_spi spi1.0: mmc_spi: CMD41, MMC_SPI_R1 mmc0: req done (CMD41): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD55 arg 00000000 flags 000000f5 mmc_spi spi1.0: mmc_spi: CMD55, MMC_SPI_R1 mmc0: req done (CMD55): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD41 arg 00300000 flags 000000e1 mmc_spi spi1.0: mmc_spi: CMD41, MMC_SPI_R1 mmc0: req done (CMD41): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD55 arg 00000000 flags 000000f5 mmc_spi spi1.0: mmc_spi: CMD55, MMC_SPI_R1 mmc0: req done (CMD55): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD41 arg 00300000 flags 000000e1 mmc_spi spi1.0: mmc_spi: CMD41, MMC_SPI_R1 mmc0: req done (CMD41): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD55 arg 00000000 flags 000000f5 mmc_spi spi1.0: mmc_spi: CMD55, MMC_SPI_R1 mmc0: req done (CMD55): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD41 arg 00300000 flags 000000e1 mmc_spi spi1.0: mmc_spi: CMD41, MMC_SPI_R1 mmc0: req done (CMD41): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD55 arg 00000000 flags 000000f5 mmc_spi spi1.0: mmc_spi: CMD55, MMC_SPI_R1 mmc0: req done (CMD55): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD41 arg 00300000 flags 000000e1 mmc_spi spi1.0: mmc_spi: CMD41, MMC_SPI_R1 mmc0: req done (CMD41): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD55 arg 00000000 flags 000000f5 mmc_spi spi1.0: mmc_spi: CMD55, MMC_SPI_R1 mmc0: req done (CMD55): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD41 arg 00300000 flags 000000e1 mmc_spi spi1.0: mmc_spi: CMD41, MMC_SPI_R1 mmc0: req done (CMD41): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD55 arg 00000000 flags 000000f5 mmc_spi spi1.0: mmc_spi: CMD55, MMC_SPI_R1 mmc0: req done (CMD55): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD41 arg 00300000 flags 000000e1 mmc_spi spi1.0: mmc_spi: CMD41, MMC_SPI_R1 mmc0: req done (CMD41): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD55 arg 00000000 flags 000000f5 mmc_spi spi1.0: mmc_spi: CMD55, MMC_SPI_R1 mmc0: req done (CMD55): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD41 arg 00300000 flags 000000e1 mmc_spi spi1.0: mmc_spi: CMD41, MMC_SPI_R1 mmc0: req done (CMD41): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD55 arg 00000000 flags 000000f5 mmc_spi spi1.0: mmc_spi: CMD55, MMC_SPI_R1 mmc0: req done (CMD55): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD41 arg 00300000 flags 000000e1 mmc_spi spi1.0: mmc_spi: CMD41, MMC_SPI_R1 mmc0: req done (CMD41): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD55 arg 00000000 flags 000000f5 mmc_spi spi1.0: mmc_spi: CMD55, MMC_SPI_R1 mmc0: req done (CMD55): 0/0/0: 00000001 00000000 00000000 00000000 mmc0: starting CMD41 arg 00300000 flags 000000e1 mmc_spi spi1.0: mmc_spi: CMD41, MMC_SPI_R1 mmc0: req done (CMD41): 0/0/0: 00000000 00000000 00000000 00000000 mmc0: starting CMD59 arg 00000001 flags 00000080 mmc_spi spi1.0: mmc_spi: CMD59, MMC_SPI_R1 mmc0: req done (CMD59): 0/0/0: 00000000 00000000 00000000 00000000 mmc0: starting CMD10 arg 00000000 flags 000000b5 mmc_spi spi1.0: mmc_spi: CMD10, MMC_SPI_R1 mmc_spi spi1.0: mmc_spi: read block, 16 bytes mmc_spi spi1.0: read error f8 (248) mmc_spi spi1.0: read status -5 mmc0: req done (CMD10): 0/4/0: 00000001 00000000 00000000 00000000 mmc0: clock 0Hz busmode 2 powermode 0 cs 1 Vdd 0 width 0 timing 0 mmc_spi spi1.0: mmc_spi: power off (0) - - - - SD card is Kingston 1GB, 3.3V. Thanks! p.s. I've sent subscription request to this list, but SF still processing it. So please Cc me, just to be sure I'll not miss something. -- Anton Vorontsov email: [EMAIL PROTECTED] backup email: [EMAIL PROTECTED] irc://irc.freenode.net/bd2 ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ spi-devel-general mailing list spi-devel-general@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/spi-devel-general