From mboxrd@z Thu Jan 1 00:00:00 1970 From: Reinhard Meyer Date: Sun, 10 Oct 2010 11:33:31 +0200 Subject: [U-Boot] [PATCH] mmc: seperate block number into small parts for multi-write cmd In-Reply-To: <20101010092257.154CE1508A2@gemini.denx.de> References: <1283757567-15161-1-git-send-email-leiwen@marvell.com> <4C84B322.1000500@emk-elektronik.de> <4C84BF66.8080704@emk-elektronik.de> <4C84D599.4030100@emk-elektronik.de> <20101010064822.ED08C14F310@gemini.denx.de> <20101010092257.154CE1508A2@gemini.denx.de> Message-ID: <4CB1886B.8090209@emk-elektronik.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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