Messages in this thread | | | Date | Sun, 20 Apr 2008 18:33:11 -0700 (PDT) | From | Alex Dubov <> | Subject | Re: Smartmedia/xd card support - request for comments |
| |
> > > > I wonder if mtd shouldn't modified to handler more clever controller : > > I saw some raw nand controller where you can program a batch of > > command/read/write/ecc checking (that work on a internal RAM of the > > controller (and may be use DMA)) and all you have to do is to wait the > > controller do the job. > > These controllers are very hard to integrate in current nand layer > > because it is very low level controller oriented. > > The obvious solution is to have seperate io scheduling from io > completion. Requires an asynchronous interface to read/write and some > sort of request queue. > > Not quite as obvious is the question of whether to add all this to mtd > or to replace mtd with block devices, which already have it. >
I was thinking about it myself and it appears to be the only solution outright.
The interesting, but apparently hard way to do so is to define a couple of REQ_TYPE_SPECIAL mtd-specific commands and use the existing block device queue to manipulate them. This can even open the possibility of "static" request translation: mtd_blkdev can pop the block device request, put it through media specific translator and then push a necessary set of mtd operations back into the same queue, delegating the processing to raw mtd device.
The simpler approach I'm following with my xd_card_blk is to define a simplistic, block device like api. First, the translator is initialized with the request range (offset + length) and backend is notified to start processing. The backend then pulls flash requests (READ, WRITE, COPY, ERASE) from the translator, possibly putting them through additional, protocol/host specific translation layer.
____________________________________________________________________________________ Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try it now. http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ
| |