Hi Reinhard, On Mon, Sep 6, 2010 at 7:50 PM, Reinhard Meyer <[email protected]> wrote: > 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...
I know that maybe the mmc specific hardware may have no such limitation, but for our hardware it is sd&mmc cocompatible one, which should follow both spec and their limitation. > >> >>> 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? My hardware is pxa168, which has sdhci controller for control both mmc and sd. > > 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. > Although the common code is named as mmc.c, I think a lot of people use it to work for sd too, since they are compatible in most case. I also try to put this limitation in the driver level, but no lucky, without the generic change, the driver cannot do nothing unless a mess change. For multi-write, it should first send multi-write command, then follow stop transmission command. If I implement the seperation in driver, I need to send the stop transmission command by self... Then the "generic" one would make no sense... > 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) > I am ok with set a macro for this. Best regards, Lei _______________________________________________ U-Boot mailing list [email protected] http://lists.denx.de/mailman/listinfo/u-boot

