summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPons, Jean-Marie <jm-pons@ti.com>2012-07-30 13:04:40 +0800
committerAndy Green <andy.green@linaro.org>2012-07-30 13:04:40 +0800
commite9a283315f425e89f8fbed2e97f8d506d9e9171b (patch)
treea05f55e339f1b79677919ab2ae394bf9a5d70a07
parent61ac75c56dc8a59c7a24949d60032c045c601a5b (diff)
HACK: usb: mass_storage: Increase write throughput by 2x on musb
Currently the musb controller driver relies on short_not_ok flag in the usb request to use DMA mode 1 which gives a performance boost. We set this flag in the mass storage gadget to take benefit of DMA mode 1. This would give us 2x performance boost in PC to device transfers in mass storage mode. This patch is a HACK because it is not a generic solution and would break USB3.0 controllers using mass storage mode. We intend to revert it and use a proper solution when it is ready. Signed-off-by: Roger Quadros <rogerq@ti.com>
-rw-r--r--drivers/usb/gadget/f_mass_storage.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/usb/gadget/f_mass_storage.c b/drivers/usb/gadget/f_mass_storage.c
index cb8c162cae5..66bc4d9d9a8 100644
--- a/drivers/usb/gadget/f_mass_storage.c
+++ b/drivers/usb/gadget/f_mass_storage.c
@@ -960,6 +960,7 @@ static int do_write(struct fsg_common *common)
* the bulk-out maxpacket size.
*/
set_bulk_out_req_length(common, bh, amount);
+ bh->outreq->short_not_ok = 1;
if (!start_out_transfer(common, bh))
/* Dunno what to do if common->fsg is NULL */
return -EIO;
@@ -1617,6 +1618,7 @@ static int throw_away_data(struct fsg_common *common)
* the bulk-out maxpacket size.
*/
set_bulk_out_req_length(common, bh, amount);
+ bh->outreq->short_not_ok = 1;
if (!start_out_transfer(common, bh))
/* Dunno what to do if common->fsg is NULL */
return -EIO;
@@ -2303,6 +2305,7 @@ static int get_next_command(struct fsg_common *common)
/* Queue a request to read a Bulk-only CBW */
set_bulk_out_req_length(common, bh, US_BULK_CB_WRAP_LEN);
+ bh->outreq->short_not_ok = 1;
if (!start_out_transfer(common, bh))
/* Don't know what to do if common->fsg is NULL */
return -EIO;