diff options
author | Andrey Smirnov <andrew.smirnov@gmail.com> | 2019-05-22 00:34:05 -0700 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2019-05-23 09:57:04 +0200 |
commit | 33cbdfb361b034782cc8abbcec203940b42f64ba (patch) | |
tree | 609534d83f4b510bf4c438b7b0bd9733c5b8d7f5 /drivers/usb | |
parent | 5d9954fdcee824be6a9163d1ffd99002558553bf (diff) | |
download | barebox-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.c | 6 |
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); |