[Help] SST39VF6401B Support

yidong zhang zhangyd6 at gmail.com
Fri Oct 22 04:46:30 EDT 2010


On Fri, Oct 22, 2010 at 3:52 PM, Guillaume LECERF <glecerf at gmail.com> wrote:
> 2010/10/22 yidong zhang <zhangyd6 at gmail.com>:
>>>> Yes, i did test both SST39VF6401B and SST38VF6401 a moment ago; The
>>>> SST39VF6401B works fine. But the SST38VF6401 couldn't work because of
>>>> the sector-size.It was 64KByte when i displayed the erase size.
>>>
>>> Could you send me your log with SST38VF6401 please ?
>>> I need to investigate on this.
>>
>> Typical byte/word write timeout: 8 µs
>> Maximum byte/word write timeout: 16 µs
>> Typical full buffer write timeout: 8 µs
>> Maximum full buffer write timeout: 64 µs
>> Typical block erase timeout: 16 ms
>> Maximum block erase timeout: 32 ms
>> Typical chip erase timeout: 32 ms
>> Maximum chip erase timeout: 64 ms
>> Device size: 0x800000 bytes (8 MiB)
>> Flash Device Interface description: 0x0001
>>  - x16-only asynchronous interface
>> Max. bytes in buffer write: 0x20
>> Number of Erase Block Regions: 2
>
> You didn't applied my latest patch, you would have only 1 erase region
> if you did.
  It was printed by the print_cfi_ident function. And the region
number is readed from the flash. So there was 2 erase region

>>  Erase Region #0: BlockSize 0x10000 bytes, 1024 blocks
>> cif->cfiq->EraseRegionInfo[i] = 10003ff
>>  Erase Region #1: BlockSize 0x10000 bytes, 128 blocks
>> cif->cfiq->EraseRegionInfo[i] = 100007f
>> mb86hxx_pflash: Found 1 x16 devices at 0x0 in 16-bit bank
>> number of CFI chips: 1
>> ersize is 10000, ernum is 400
>> Sum of regions (4000000) != total size of set of interleaved chips (800000)
>
> This is the typical error with SST chips when the
> fixup_sst39vf_rev_b() fixup function isn't called.

   It did call the fixup_sst39vf_recv_b() function, so you can see
 >>number of CFI chips: 1
When we take the 1st erase region, we will get the wrong flash size
because of the wrong information(ersize is 10000, ernum is 400).

>
> Could you try and report me which patches you applied and what results
> you have with SST38VF6401 ?

Sorry, my current kernel version is not the latest one. My kernel
version is 2.6.31. I changed the code as your patch.  But i can
confirm that the flash(SST39VF6401B) works fine. But the SST38VF6401
flash couldn't pass the probe. Please see the log below

>>  Erase Region #0: BlockSize 0x10000 bytes, 1024 blocks
>> cif->cfiq->EraseRegionInfo[i] = 10003ff
>>  Erase Region #1: BlockSize 0x10000 bytes, 128 blocks
>> cif->cfiq->EraseRegionInfo[i] = 100007f

I think the information we get from the flash is wrong. So we
shuoldn't take the 1st Erase Region. We can not  get the right
description of the flash in the CFI mode. Maybe they should be moved
to JEDEC mode.

> --
> Guillaume LECERF
> GeeXboX developer - www.geexbox.org
>



More information about the linux-mtd mailing list