
Lei Wen schrieb:
Where does this limitation supposedly come from?
This limitation comes from the SD/MMC sepc. You could find one and check the 0x6 offset register(BLOCK COUNT REGISTER).
This might refer to certain HOST controllers, but not to Cards!
You are right, this comes from HOST, not card. But since the host spec define so, then is there any host don't follow the sepc? ...
Any that use bit banging, or SPI, and at least: ATMELs MCI. Probably any number of others that do not copy Intel/PC centered register structures...
If you had read my first mail on this, there was an example of a 98304 blocks transfer...
And you still do not explain why the buffer size shall be limited to 512KB?
The 512 KB comes from the SDMA boundary, and this value is also adopt by Linux. You could refer to drivers/mmc/host/sdhci.c in Linux code.
What hardware, again? sdhci.c? SDMA?
You are trying to change a GENERIC function of U-Boot here to suit a particular hardware, not a particular hardware driver.
As such, changes should be generic/configurable and not suited to a specific hardware.
If a specific hardware needs the generic part to obey some limitations, those limitations should be configurable, like maybe:
#define CONFIG_SYS_MMC_BLOCKLIMIT 65535 #define CONFIG_SYS_MMC_BUFFERLIMIT (512<<10)
Or maybe the splitting/chunking could be resolved in the hardware driver?
Also a clarification of those reasons in the patch comment would be appropriate.
That's my 2 cents for this. Let the community decide if there shall be a general limitation be put into the generic part...
Best Regards, Reinhard