summaryrefslogtreecommitdiffstats
path: root/drivers/usb
diff options
context:
space:
mode:
authorAndrey Smirnov <andrew.smirnov@gmail.com>2019-05-22 00:34:05 -0700
committerSascha Hauer <s.hauer@pengutronix.de>2019-05-23 09:57:04 +0200
commit33cbdfb361b034782cc8abbcec203940b42f64ba (patch)
tree609534d83f4b510bf4c438b7b0bd9733c5b8d7f5 /drivers/usb
parent5d9954fdcee824be6a9163d1ffd99002558553bf (diff)
downloadbarebox-33cbdfb361b034782cc8abbcec203940b42f64ba.tar.gz
barebox-33cbdfb361b034782cc8abbcec203940b42f64ba.tar.xz
usb: host: ehci: Initialize qTDs explicitly
Convert the code to initialize only used qTDs as well as initializing all of the fields explicitly without doing a wholesale memset() first. Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/host/ehci-hcd.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
index 6742a67de9..2b890cbc9f 100644
--- a/drivers/usb/host/ehci-hcd.c
+++ b/drivers/usb/host/ehci-hcd.c
@@ -206,6 +206,9 @@ static int ehci_td_buffer(struct qTD *td, dma_addr_t addr, size_t sz)
return -ENOMEM;
}
+ for (idx++; idx < buffer_count; idx++)
+ td->qt_buffer[idx] = 0;
+
return 0;
}
@@ -233,6 +236,8 @@ static int ehci_prepare_qtd(struct device_d *dev,
ret = ehci_td_buffer(td, *buffer_dma, length);
if (ret)
return ret;
+ } else {
+ memset(td->qt_buffer, 0, sizeof(td->qt_buffer));
}
return 0;
@@ -281,7 +286,6 @@ ehci_submit_async(struct usb_device *dev, unsigned long pipe, void *buffer,
le16_to_cpu(req->index));
memset(&ehci->qh_list[1], 0, sizeof(struct QH));
- memset(ehci->td, 0, sizeof(struct qTD) * NUM_TD);
qh = &ehci->qh_list[1];
qh->qh_link = cpu_to_hc32((uint32_t)ehci->qh_list | QH_LINK_TYPE_QH);