mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-11 07:34:31 +00:00
usb: musb: only write CLRDATATOG when appropriate
This is a change similar to what is already in the Linux driver. We should only program the CLRDATATOG bit when the current mode indicates that it is needed. Signed-off-by: Bryan Wu <bryan.wu@analog.com> Signed-off-by: Cliff Cai <cliff.cai@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
This commit is contained in:
parent
99e9ed1f49
commit
4ee691f6ac
1 changed files with 16 additions and 7 deletions
|
@ -144,19 +144,28 @@ static void write_toggle(struct usb_device *dev, u8 ep, u8 dir_out)
|
|||
u16 csr;
|
||||
|
||||
if (dir_out) {
|
||||
if (!toggle)
|
||||
writew(MUSB_TXCSR_CLRDATATOG, &musbr->txcsr);
|
||||
else {
|
||||
csr = readw(&musbr->txcsr);
|
||||
csr = readw(&musbr->txcsr);
|
||||
if (!toggle) {
|
||||
if (csr & MUSB_TXCSR_MODE)
|
||||
csr = MUSB_TXCSR_CLRDATATOG;
|
||||
else
|
||||
csr = 0;
|
||||
writew(csr, &musbr->txcsr);
|
||||
} else {
|
||||
csr |= MUSB_TXCSR_H_WR_DATATOGGLE;
|
||||
writew(csr, &musbr->txcsr);
|
||||
csr |= (toggle << MUSB_TXCSR_H_DATATOGGLE_SHIFT);
|
||||
writew(csr, &musbr->txcsr);
|
||||
}
|
||||
} else {
|
||||
if (!toggle)
|
||||
writew(MUSB_RXCSR_CLRDATATOG, &musbr->rxcsr);
|
||||
else {
|
||||
if (!toggle) {
|
||||
csr = readw(&musbr->txcsr);
|
||||
if (csr & MUSB_TXCSR_MODE)
|
||||
csr = MUSB_RXCSR_CLRDATATOG;
|
||||
else
|
||||
csr = 0;
|
||||
writew(csr, &musbr->rxcsr);
|
||||
} else {
|
||||
csr = readw(&musbr->rxcsr);
|
||||
csr |= MUSB_RXCSR_H_WR_DATATOGGLE;
|
||||
writew(csr, &musbr->rxcsr);
|
||||
|
|
Loading…
Reference in a new issue