linux-spi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: David Brownell <david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
To: avorontsov-hkdhdckH98+B+jHODAdFcQ@public.gmane.org
Cc: Hans-Peter Nilsson
	<hans-peter.nilsson-VrBV9hrLPhE@public.gmane.org>,
	Mikael Starvik <mikael.starvik-VrBV9hrLPhE@public.gmane.org>,
	Mike Lavender
	<mike-UTnDXsALFwNjMdQLN6DIHgC/G2K4zDHf@public.gmane.org>,
	spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org,
	Pierre Ossman
	<drzeus-mmc-p3sGCRWkH8CeZLLa646FqQ@public.gmane.org>
Subject: Re: [patch 2.6.22-git5 0/4] MMC-over-SPI
Date: Mon, 16 Jul 2007 11:54:54 -0700	[thread overview]
Message-ID: <200707161154.54728.david-b@pacbell.net> (raw)
In-Reply-To: <20070716164837.GA18707-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>

On Monday 16 July 2007, Anton Vorontsov wrote:
> 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.
> > 
> > ...
> 
> 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.

I can't say either, but my first thought is that it might be a
card-specific quirk.  I already found one in that particular place,
and the messages below look fine until the very end.


> 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

You should provide an ocr_mask in your platform data, saying what
voltage range you can supply ... even if it's only 3V3 !!


> 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

Looks fine:  reset card, R1_SPI_IDLE status is set in
the status word (00000001) ... it'll be resetting for
some time.


> 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

OK, it doesn't handle SEND_EXT_CSD at all (status R1_SPI_ILLEGAL_COMMAND
in addition to the idle status), so it comes as MMC_ERR_INVALID.
(Or SEND_IF_COND, if this were an SD 2.0+ card...)


> 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

ACMD41 == SD_SEND_OP_COND, it's still resetting.  Repeats..

> 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

Finally the reset completed, R1_SPI_IDLE bit clears.


> 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

Reads the OCR, fine.

> 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

Restarts the enumeration, now knowing it's an SD card.

> 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

... so here it's trying SEND_IF_COND (still failing) ...

> 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

Reset finished, IDLE status is no longer set ...

> 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

Enables CRC mode (arg == 1).

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

Hmm, the data block in the MMC_SEND_CID command didn't start
with a valid token ... it saw 0xf8, not 0xfe, which is a
lowlevel protocol error.

Maybe your scope can show whether or not this was the actual
data sent by the card... or you can otherwise verify that the
input data (from start of CMD10) was a bunch of 0xff values
then an 0xf8...


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

Rather than retrying that command, everything shuts down.
Which is annoying, but seems to be the intended behavior;
if that's bug, it's not a bug in the SPI support.


> - - - -
> 
> 
> SD card is Kingston 1GB, 3.3V.

I didn't try Kingston cards.  Since everything worked fine until
that last command, maybe a different card will behave better.

The driver does handle one protocol quirk.  A SanDisk SD card
would issue an 0x00 byte right after issuing the command, in
that SEND_CID case as well as the SEND_CSD case.  That should
be an 0xff byte ... depending on exactly where that 0xf8 showed
up, maybe the mmc_spi_readblock() code should be changed to skip
not just 0x00 but *ANY* non-{0xff,0xfe} byte in that slot.

- Dave

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

  parent reply	other threads:[~2007-07-16 18:54 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-07-14 22:04 [patch 2.6.22-git5 0/4] MMC-over-SPI David Brownell
     [not found] ` <200707141504.51950.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2007-07-14 22:05   ` [patch 2.6.22-git5 1/4] MMC headers learn about SPI David Brownell
     [not found]     ` <200707141506.00262.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2007-07-26 16:31       ` Pierre Ossman
     [not found]         ` <20070726183150.024930aa-mgABNEgzgxm+PRNnhPf8W5YgPPQkE1Si@public.gmane.org>
2007-07-26 16:55           ` David Brownell
     [not found]             ` <200707260955.22967.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2007-07-26 18:05               ` Pierre Ossman
     [not found]                 ` <20070726200525.6a5b7d72-mgABNEgzgxm+PRNnhPf8W5YgPPQkE1Si@public.gmane.org>
2007-07-26 20:08                   ` David Brownell
2007-07-14 22:06   ` [patch 2.6.22-git5 2/4] MMC block learns " David Brownell
     [not found]     ` <200707141506.42880.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2007-07-26 16:33       ` Pierre Ossman
     [not found]         ` <20070726183339.6631243f-mgABNEgzgxm+PRNnhPf8W5YgPPQkE1Si@public.gmane.org>
2007-07-26 17:00           ` David Brownell
     [not found]             ` <200707261000.17339.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2007-07-26 18:06               ` Pierre Ossman
     [not found]                 ` <20070726200639.06242858-mgABNEgzgxm+PRNnhPf8W5YgPPQkE1Si@public.gmane.org>
2007-07-26 20:15                   ` David Brownell
2007-07-14 22:07   ` [patch 2.6.22-git5 3/4] MMC core " David Brownell
     [not found]     ` <200707141507.17484.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2007-07-26 17:18       ` Pierre Ossman
     [not found]         ` <20070726191824.569542fd-mgABNEgzgxm+PRNnhPf8W5YgPPQkE1Si@public.gmane.org>
2007-07-26 21:58           ` David Brownell
     [not found]             ` <200707261458.55558.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2007-07-26 22:22               ` David Brownell
2007-08-01 15:02               ` Pierre Ossman
     [not found]                 ` <20070801170220.3c5ccff6-mgABNEgzgxm+PRNnhPf8W5YgPPQkE1Si@public.gmane.org>
2007-08-01 17:02                   ` David Brownell
     [not found]                     ` <200708011002.28801.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2007-08-02 12:54                       ` Pierre Ossman
     [not found]                         ` <20070802145445.1118d1e7-mgABNEgzgxm+PRNnhPf8W5YgPPQkE1Si@public.gmane.org>
2007-08-02 19:23                           ` David Brownell
2007-07-14 22:08   ` [patch 2.6.22-git5 4/4] mmc_spi host driver David Brownell
     [not found]     ` <200707141508.07555.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2007-07-26 18:02       ` Pierre Ossman
     [not found]         ` <20070726200202.5e5dcf62-mgABNEgzgxm+PRNnhPf8W5YgPPQkE1Si@public.gmane.org>
2007-07-26 23:32           ` David Brownell
     [not found]             ` <200707261632.37011.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2007-08-01 15:12               ` Pierre Ossman
     [not found]                 ` <20070801171217.1478267b-mgABNEgzgxm+PRNnhPf8W5YgPPQkE1Si@public.gmane.org>
2007-08-01 18:17                   ` David Brownell
     [not found]                     ` <200708011117.24664.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2007-08-02 13:06                       ` Pierre Ossman
     [not found]                         ` <20070802150615.36e073c6-mgABNEgzgxm+PRNnhPf8W5YgPPQkE1Si@public.gmane.org>
2007-08-02 20:34                           ` David Brownell
     [not found]                             ` <200708021334.50670.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2007-08-04 13:14                               ` Pierre Ossman
     [not found]                                 ` <20070804151452.0efaa5a9-mgABNEgzgxm+PRNnhPf8W5YgPPQkE1Si@public.gmane.org>
2007-08-04 17:32                                   ` David Brownell
     [not found]                                     ` <200708041032.10001.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2007-08-04 21:32                                       ` Pierre Ossman
2007-08-07 12:35                               ` Pierre Ossman
2007-08-01 18:40                   ` David Brownell
2007-07-16 16:48   ` [patch 2.6.22-git5 0/4] MMC-over-SPI Anton Vorontsov
     [not found]     ` <20070716164837.GA18707-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2007-07-16 18:54       ` David Brownell [this message]
     [not found]         ` <200707161154.54728.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2007-07-17 15:13           ` Anton Vorontsov
     [not found]             ` <20070717151350.GA3752-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2007-07-17 16:11               ` David Brownell
     [not found]                 ` <200707170911.16715.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2007-07-18  7:35                   ` Jan Nikitenko
     [not found]                     ` <469DC2BC.5070305-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2007-07-18 17:06                       ` David Brownell
2007-07-18 10:00                   ` Anton Vorontsov
     [not found]                     ` <20070718100047.GA9544-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2007-07-18 14:05                       ` Anton Vorontsov
2007-07-18 14:44                   ` Pierre Ossman
     [not found]                     ` <20070718164409.56ca0019-mgABNEgzgxm+PRNnhPf8W5YgPPQkE1Si@public.gmane.org>
2007-07-18 17:27                       ` David Brownell
     [not found]                         ` <200707181027.17819.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2007-07-19 16:15                           ` Anton Vorontsov
     [not found]                             ` <20070719161553.GA15756-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2007-07-19 20:28                               ` David Brownell
     [not found]                                 ` <200707191328.18846.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2007-07-23 14:29                                   ` Anton Vorontsov
     [not found]                                     ` <20070723142923.GA28979-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2007-07-23 17:33                                       ` David Brownell
     [not found]                                         ` <200707231033.31717.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2007-07-24 10:23                                           ` Anton Vorontsov
2007-08-07  3:21                                           ` David Brownell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200707161154.54728.david-b@pacbell.net \
    --to=david-b-ybekhbn/0ldr7s880joybq@public.gmane.org \
    --cc=avorontsov-hkdhdckH98+B+jHODAdFcQ@public.gmane.org \
    --cc=drzeus-mmc-p3sGCRWkH8CeZLLa646FqQ@public.gmane.org \
    --cc=hans-peter.nilsson-VrBV9hrLPhE@public.gmane.org \
    --cc=mikael.starvik-VrBV9hrLPhE@public.gmane.org \
    --cc=mike-UTnDXsALFwNjMdQLN6DIHgC/G2K4zDHf@public.gmane.org \
    --cc=spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).