Block request processing for MMC/SD over SPI bus

Hans Eklund
2006-08-01T08:36:52Z

(CC to hans@rubico.se)

After trying other forums and irc for help on this matter i hope someone on
the LKML can help.

-Background(skip if short of time).
First linux driver for me and first post on LKML, but in short, i have been
developing a MMC/SD card driver in SPI mode for uClinux on the Analog Devices
Blackfin based platform. However, since the 2.6.15 version im moving over to
the common SPI framework and all code will probably be platform independent
soon. The driver is working quite well but need some tuning in the request
processing.

The driver is also independent of any previous MMC related work at this point
since MMC over SPI mode differs somewhat from the MMC mode.

I have implemeted the request processing from scratch. I have followed the
Linux Device Drivers and the Understanding Linux Kernel as far as possible,
but they are not very extensive on error handling. I have also had a look at
the ATA and SCSI drivers.

-Questions
A snip of my current request processing can be found here: with comments and
some questions.

http://hasse.yohoo.nu/strat.txt

The big issue is error handling and how i report back to the user space
processes that the device is dead(if hardware fails for example), basically
how to gracefully handle critical issues. At this point, if retries on broken
sectors fails im not sure how to report back to the I/O scheduler and block
layer so the device can be halted. Now, the kernel actually hangs(or retries
same sector forever). Im really at a dead end here. Could really use some
help at this point.

Also, Is there any work done similar to mine?
Would there be interest in incorporating the driver in future kernels?

Answers/CC to hans@rubico.se since i did not dare to plunge into the lkml
traffic just yet.

Best regards
Hans Eklund
Rubico AB
Sweden.