[U-Boot] [PATCH] mmc: seperate block number into small parts for multi-write cmd
Lei Wen
adrian.wenl at gmail.com
Sun Oct 10 11:42:36 CEST 2010
Hi Reinhard,
On Sun, Oct 10, 2010 at 5:33 PM, Reinhard Meyer
<u-boot at emk-elektronik.de> wrote:
> Dear all concerned,
>>
>> But my (limited!) understanding is that it's not a platform problem
>> you are solving, but one of this special kind of controller, which
>> nobody else would ever run into.
>
> I would vouch to extend
>
> struct mmc {
> struct list_head link;
> char name[32];
> void *priv;
> uint voltages;
> uint version;
> uint f_min;
> uint f_max;
> int high_capacity;
> uint bus_width;
> uint clock;
> uint card_caps;
> uint host_caps;
> + uint host_maxblk;
> + uint host_maxdmalen;
> uint ocr;
> uint scr[2];
> uint csd[4];
> uint cid[4];
> ushort rca;
> uint tran_speed;
> uint read_bl_len;
> uint write_bl_len;
> u64 capacity;
> block_dev_desc_t block_dev;
> int (*send_cmd)(struct mmc *mmc,
> struct mmc_cmd *cmd, struct mmc_data *data);
> void (*set_ios)(struct mmc *mmc);
> int (*init)(struct mmc *mmc);
> };
>
> have the driver fill those values and the common mmc part act upon them,
> provided they are non-zero. Zero means no limitation on the host side.
I like this modification.
>
> This should not break existing code.
>
> I fail, however, to understand the 512 KiB limit on that hardware. It
> would allow for only 1024 blocks, despite the 65535 allowed by the register.
> Also I assume that limit is about a 512k boundary, not a 512k length???
>
Yes, the 512KiB is intend to be a dma boudary.
The 512 KiB is used by Linux, for it didn't want to handle the DMA
interrupt, I guess so.
Best regards,
Lei
More information about the U-Boot
mailing list