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.

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???

Reinhard
_______________________________________________
U-Boot mailing list
[email protected]
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to