All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sascha Sommer <saschasommer@freenet.de>
To: LKML <linux-kernel@vger.kernel.org>
Cc: rmk+mmc@arm.linux.org.uk
Subject: Experimental driver for Ricoh Bay1Controller SD Card readers
Date: Sun, 7 Jan 2007 00:32:26 +0100	[thread overview]
Message-ID: <200701070032.27234.saschasommer@freenet.de> (raw)

[-- Attachment #1: Type: text/plain, Size: 1654 bytes --]

Hi,

Attached is a very experimental driver for a Ricoh SD Card reader that can be 
found in some notebooks like the Samsung P35.

Whenever a sd card is inserted into one of these notebooks, a virtual pcmcia 
card will show up:

Socket 0:
  product info: "RICOH", "Bay1Controller", "", ""
  manfid: 0x0000, 0x0000

In order to write this driver I hacked qemu to have access to the cardbus 
bridge containing this card. I then logged the register accesses of the 
windows xp driver and tryed to analyse them.

As the meanings of most of the register are still unknown to me, I consider 
this driver very experimental. It is possible that this driver might destroy 
your data or your hardware. Use at your own risk! 

Other problems:
- I only implemented reading support
- I only tested with a 128 MB SD card, no idea what would be needed to support
  other card types
- irqs are not supported
- dma is not supported
- it is very slow
- the registers can be found on the cardbus bridge and not on the virtual 
  pcmcia card. The cardbus bridge is already claimed by yenta_socket. 
  Therefore the driver currently uses pci_find_device to find the cardbus
  bridge containing the sd card reader registers.
- it will probably crash when you remove the sd card without unmounting first
- the ios stuff is not really understood
- there are a bunch of extra MMC_APP_CMDs inside the driver
- only tested with kernel 2.6.18

apart from all these problems reading an image from my sd card seems to have 
worked ;) 

If you are still brave enough to try it out make at least a backup of the data 
on your sd card.

Feedback is highly appreciated.

Regards

Sascha


[-- Attachment #2: Makefile --]
[-- Type: text/x-makefile, Size: 406 bytes --]

KERNEL_VERSION = $(shell uname -r)
KERNEL_DIR = /lib/modules/$(KERNEL_VERSION)/build
MDIR = /lib/modules/$(KERNEL_VERSION)/kernel/drivers/mmc

obj-m += sdricoh_cs.o

default:
	$(MAKE) -C $(KERNEL_DIR) SUBDIRS=$(PWD) modules

install:
	if test ! -d $(MDIR) ; then mkdir -p $(MDIR) ; fi
	install -D -m 644 *.ko $(MDIR)
	depmod -a

clean:
	rm -f *.o *.ko *.mod.c .*o.cmd .*o.d .*o.flags
	rm -rf .tmp_versions

[-- Attachment #3: sdricoh_cs.c.gz --]
[-- Type: application/x-gzip, Size: 4197 bytes --]

             reply	other threads:[~2007-01-07  0:15 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-01-06 23:32 Sascha Sommer [this message]
2007-01-07  9:56 ` Experimental driver for Ricoh Bay1Controller SD Card readers Jiri Slaby
2007-02-11 20:22   ` Sascha Sommer
2007-02-13  5:47     ` Pierre Ossman
2007-02-13  9:48       ` Samuel Thibault
2007-02-13 11:42       ` Sascha Sommer
2007-01-09 20:57 ` Samuel Thibault
2007-01-10 20:10 ` Pierre Ossman
2007-02-15 22:34 Ivan Babkin
2007-03-09 13:23 ` James

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=200701070032.27234.saschasommer@freenet.de \
    --to=saschasommer@freenet.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rmk+mmc@arm.linux.org.uk \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.