Re: [U-Boot] CFI: flash_write_cfiword() slow

2008-12-12 Thread Jens Gehrlein
Hi Wolfgang,

Wolfgang Denk schrieb:
 Dear Jens Gehrlein,
 
 In message 490edd63.1010...@tqs.de you wrote:
 find_sector() loops through the sector table from the last sector to
 the current sector. And the more sectors the device has, the slower
 the algorithm becomes. And this process for every sector to be 
 programmed. And yes, there are still devices around without (standard) 
 write buffer, e.g. the Samsung K8P2815UQB.
 
 A classic (and  trivial  to  implement)  approach  is  not  to  start
 searching  at  the  end, but at the last used sector (assuming search
 driection and direction of growth are  identical). 

Okay. Because I never have seen, that a flash has been written
backwards, as a prerequisite I have to change the loop from counting 
down to counting up. Any objections?

 This  way,  you
 will  typically  find  the  match either immediately or with a single
 step.
 
 Maybe you want to give that a try...

I'm currently trying :-) Had some other projects in the meantime.

Kind regards,
Jens
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] CFI: flash_write_cfiword() slow

2008-11-03 Thread Jens Gehrlein
Hi list,

having a look at function 
drivers/mtd/cfi_flash.c::flash_write_cfiword(), I found that 
find_sector() is called twice when having AMD standard, extended or 
legacy device. The first time, when writing the command. The second 
time, when calling flash_full_status_check().

Maybe this is the reason, why this programming mode is so slow.
find_sector() loops through the sector table from the last sector to
the current sector. And the more sectors the device has, the slower
the algorithm becomes. And this process for every sector to be 
programmed. And yes, there are still devices around without (standard) 
write buffer, e.g. the Samsung K8P2815UQB.

Before spending time to create a patch, I would like to read your 
opinion about this proposal/question:
Would it be sufficient to just add a flag, that indicates, that the 
sector number has already been calculated for AMD flashes or would it be 
better to pass parameters to flash_full_status_check() dependent on the 
command set?
Other proposals?
Do you see any unwanted side effects?

-- 
Kind regards,
Jens
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] CFI: flash_write_cfiword() slow

2008-11-03 Thread Wolfgang Denk
Dear Jens Gehrlein,

In message [EMAIL PROTECTED] you wrote:
 
 find_sector() loops through the sector table from the last sector to
 the current sector. And the more sectors the device has, the slower
 the algorithm becomes. And this process for every sector to be 
 programmed. And yes, there are still devices around without (standard) 
 write buffer, e.g. the Samsung K8P2815UQB.

A classic (and  trivial  to  implement)  approach  is  not  to  start
searching  at  the  end, but at the last used sector (assuming search
driection and direction of growth are  identical).  This  way,  you
will  typically  find  the  match either immediately or with a single
step.

Maybe you want to give that a try...

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH, MD: Wolfgang Denk  Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: [EMAIL PROTECTED]
A verbal contract isn't worth the paper it's written on.
-- Samuel Goldwyn
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot