Hi all,

  I'm currently writing a driver for some Carry USB 
CompactFlash/SmartMedia/MemoryStick Card readers (www.carry.com.tw, 
USB-Vendor 0x7CC). I have some doc's under NDA and the CompactFlash part is 
already working quite nicely under 2.4.2.

Now I'm doing the SSFDC stuff. Of course I could just copy sddr09  and 
fudge in the differences USB protocol stuff, but I would prefer to transfer 
all the SSFDC-things into a separate ssfdc_mgr.c which could be used by all 
SSFDC devices, regardless of the bus/device there connected to. An of 
course we're still missing write-access ?

Now:
* does sddr09.c work with 1&2 MB Cards ?
   These cards would show up as 256bytes/sector devices to the scsi layer ?
   From all specs/docs I've seen, one should really hide this detail from 
other layers ?

* do we really need a full two-way pba<-->lba mapping for read-only ?
    SSFDC Block 0 (not Page/Sector 0 !) can't contain any user data anyway
    (always card info there).
    for write-access we definitely need them: finding free blocks,...


My plans for the ssfdc_mgr are something like:

struct ssfdc_abstract_manager {

         void    *connected_via_device;  // for read/write calls

         int     vendorID,deviceID;

         ssfdc_geometry          geo;

         int     *lba2pba;

                 // Functions to read/write/copy complete 256+8/512+16 
sectors (data+redundancy)
                 //
         int     (*read_raw_sector_func)(ssfdc_abstract_manager *mgr,int 
block,int page,char *data,int size);
         int     (*write_raw_sector_func)(ssfdc_abstract_manager *mgr,int 
block,int page,char *data,int size);
         int     (*copy_raw_sector_func)(ssfdc_abstract_manager *mgr,int 
sourceblock,int sourcepage,int destblock);

                 // Erase a block after it's been copied somewhere else..
                 //
         int     (*erase_block_func)(ssfdc_abstract_manager *mgr,int block);

                 // Read data only or redundancy only.
                 //
                 // Multiple sectors ok, but don't cross block boundarys.
                 //
         int     (*read_data_func)(ssfdc_abstract_manager *mgr,int 
block,int page,char *data,int size);
         int     (*read_redundancy_func)(ssfdc_abstract_manager *mgr,int 
block,int page,char *data,int size);
};

I'm not familiar with the SCM commands for writing, therefor: will this 
match the SCM Command-set ?

I remember Matt asking about this in some other groups: was this your idea ?

Can we use the SMIL stuff published by Toshiba/SSFDC (see 
http://www.ssfdc.or.jp/english/smil/down.htm) ?
I guess not.


sda


_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
http://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to