diff options
author | Pons, Jean-Marie <jm-pons@ti.com> | 2012-07-30 13:04:40 +0800 |
---|---|---|
committer | Andy Green <andy.green@linaro.org> | 2012-07-30 13:04:40 +0800 |
commit | e9a283315f425e89f8fbed2e97f8d506d9e9171b (patch) | |
tree | a05f55e339f1b79677919ab2ae394bf9a5d70a07 | |
parent | 61ac75c56dc8a59c7a24949d60032c045c601a5b (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.c | 3 |
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; |