MMC: Adjust unaligned write accesses.

Adjust unaligned write accesses spanning preferred align
size into two accesses - an unaligned and an aligned access.
This is meant to be used for card quirks, and is off
by default. A limiting value in transfer size
for this adjustment is available, as on some cards there is a
perf decrease for larger transfers.

Signed-off-by: Andrei Warkentin <andreiw@vmware.com>
MMC: Add block quirks support.

Quirks are card-specific workarounds. Usually they involve
tuning mmcblk parameters at mmc_blk_probe time.

Signed-off-by: Andrei Warkentin <andreiw@vmware.com>
MMC: Toshiba eMMC - Split 8K-unaligned accesses.

These cards show abysmal write performance when
writes < 12K that are 8K unaligned cross an 8K barrier.

Signed-off-by: Andrei Warkentin <andreiw@vmware.com>
MMC: Block quirks request adjust support.

Lets a card specific quirk affect how MMC requests are made.
Necessary for Toshiba block-splitting part reliability workaround.

Change-Id: Iceb4b0e45c40e8f5d84236404ef6db08c31b159c
Signed-off-by: Andrei Warkentin <andreiw@vmware.com>
MMC: Toshiba eMMC - Part reliability improvement.

Split-up accesses into smaller chunks, to improve
lifespan, by using 8K reliable writes into 8K Buffer A,
instead of 4MB Buffer B, reducing number of 4MB write-erase
cycles. Upper and lower bounds should be experimentally
found to match the desired performance/reliability
characteristics.

Change-Id: I14b22e1383fe277946967425c21fd13e17dcedda
Signed-off-by: Andrei Warkentin <andreiw@vmware.com>
Enable MMC quirks

Change-Id: I24598bb4c207953a0b70334166b86628b81966b3