public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Ian Stirling <ian.stirling@mauve.plus.com>
To: Maximus <john.maximus@gmail.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: SDIO drivers?
Date: Fri, 25 Aug 2006 16:05:13 +0100	[thread overview]
Message-ID: <44EF11A9.7050000@mauve.plus.com> (raw)
In-Reply-To: <3634de740608250226r37f75230t2a1c39d3307fb044@mail.gmail.com>

Maximus wrote:
> Hi,
>   Just going through the linux kernel sources which has support  for
> SD and MMC.
> 
>   Wondering whats the difference between SD and SDIO.
> 
>   What is meant by SDIO ?.  (SD + IO) ?.
> 
>   what  is meant  by  IO part?.
> 
> Are any SDIO drivers open source?.

I found the PDF at 
http://www.windowsfordevices.com/articles/AT3451543568.html of great use 
for understanding the differences.

Basically - SD and MMC are not really 'normal' memory - due to their 
connection, they act more like USB, or even network attached stuff.

At the top level that you'd want to present to the user, you've got the 
logical SD and SDIO device.
This can be one of 8 functions in a SD/SDIO card.
A SDIO card is a SD-I/O card - it does input or output. An SD card is 
just memory, with some area that may be encrypted - see the S of SD.

Now, there are many ways to connect to an SD(I'll omit the I/O from here 
in). First, you've got the 'low speed' 400kbps serial mode - that is 
common to MMC and SD, now you've got 20Mhz 1 bit serial that is SDs base 
  mode, and 4 bit 25Mhz that's the faster mode - there may have been 
faster clocks released since the above doc - I haven't checkes.

Each card can now either be connected directly to the controller, or it 
can be connected to a bus, sharing access between cards. This mode is of 
course slower, and can slow all devices on the bus to the speed of the 
slowest, and is hard to do well.

This is not a 'traditional' memory/IO device, it's more like USB, or IO 
across the network.
For example, a single 8 byte write to a configuration register takes 
about 64 clocks, which can be many tens of microseconds. In the slowest 
mode, you can't even reliably run a 16550 (which is what one of the 
standard class drivers - GPS - is defined as, a 16550 in register space) 
at the highest baud rates, without losing chars.

So - briefly, an SD card can have up to 8 functions, with varying 
bandwidth back to the host, depending on card and connection from a 
shared 32KiB/s to unshared 25MiB/s. The controller can vary from 
_really_ dumb - practically bit-banging, to one that does scatter-gather 
  DMA, and much of the protocol work for you.
AIUI, all of the controllers available do not expose the device as a 
'simple' register/memory interface, but as a message passing interface - 
with the exception of DMA.

  reply	other threads:[~2006-08-25 15:05 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-08-25  9:26 SDIO drivers? Maximus
2006-08-25 15:05 ` Ian Stirling [this message]
  -- strict thread matches above, loose matches on Subject: below --
2006-04-04  8:30 SDIO Drivers? Ram
2006-04-07  8:55 ` Pierre Ossman
2006-04-07 14:43   ` Russell King
2006-04-07 18:07     ` Pierre Ossman
2006-04-09  6:55   ` Marcel Holtmann

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=44EF11A9.7050000@mauve.plus.com \
    --to=ian.stirling@mauve.plus.com \
    --cc=john.maximus@gmail.com \
    --cc=linux-kernel@vger.kernel.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