Messages in this thread | | | Date | Mon, 06 Aug 2007 16:32:40 +0100 | From | David Vrabel <> | Subject | Re: sdio: enhance IO_RW_EXTENDED support |
| |
Pierre Ossman wrote: > On Mon, 06 Aug 2007 11:31:19 +0100 > David Vrabel <david.vrabel@csr.com> wrote: > >> I would expect the block size to be set once per card, and never be >> changed and thus it's not logically a per-transfer operation. We >> certainly wouldn't want to change the block size willy-nilly as it's >> an expensive operation. >> > > Indeed. It would of course be optimized so that it doesn't change the > size needlessly.
Drivers may care about the block size though so you can't have it changing behind their backs. e.g., they may need to pad data to a multiple of the block size.
>>> I suspect that some transactions might require a certain block size. >>> But we could satisfy that by stating that any transfer small enough >>> to fit into one block will not be split up. >> I consider it unlikely that any card would want to do anything other >> than always use the largest possible block size. >> > > I have a counter example. I have here a Marvell wifi card which needs a > firmware upload. And it seems to be rather picky about parameters > during that upload. > > I'm still experimenting with a clean way to do things for this card. > I'll get back to you. :)
sdio_set_block_size(func, 64); /* ew, this card is fussy */
download_firmware();
sdio_set_block_size(func, func->max_blksize); /* Ahhh, back to the card's default */
If a card is fussy about the block size I don't think there's anything cleaner than specifying directly in the driver.
David -- David Vrabel, Software Engineer, Drivers group Tel: +44 (0)1223 692562 CSR plc, Churchill House, Cambridge Business Park, Cowley Road, CB4 0WZ
. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |