On 10/15/18 10:58 PM, Joe Hershberger wrote: > On Wed, Oct 10, 2018 at 6:48 AM Cédric Le Goater <c...@kaod.org> wrote: >> >> Signed-off-by: Cédric Le Goater <c...@kaod.org> >> --- >> drivers/net/ftgmac100.c | 18 ++++++++++++++++++ >> 1 file changed, 18 insertions(+) >> >> diff --git a/drivers/net/ftgmac100.c b/drivers/net/ftgmac100.c >> index b46187b567c6..edf34c601c68 100644 >> --- a/drivers/net/ftgmac100.c >> +++ b/drivers/net/ftgmac100.c >> @@ -28,6 +28,9 @@ >> /* PKTBUFSTX/PKTBUFSRX must both be power of 2 */ >> #define PKTBUFSTX 4 /* must be power of 2 */ >> >> +/* Timeout for transmit */ >> +#define FTGMAC100_TX_TIMEOUT_MS 1000 >> + >> /* Timeout for a mdio read/write operation */ >> #define FTGMAC100_MDIO_TIMEOUT_USEC 10000 >> >> @@ -412,6 +415,7 @@ static int ftgmac100_send(struct udevice *dev, void >> *packet, int length) >> roundup(sizeof(*curr_des), ARCH_DMA_MINALIGN); >> ulong data_start; >> ulong data_end; >> + ulong start; >> >> invalidate_dcache_range(des_start, des_end); >> >> @@ -444,6 +448,20 @@ static int ftgmac100_send(struct udevice *dev, void >> *packet, int length) >> /* Start transmit */ >> writel(1, &ftgmac100->txpd); >> >> + /* Wait until packet is transmitted */ >> + start = get_timer(0); >> + while (get_timer(start) < FTGMAC100_TX_TIMEOUT_MS) { > > In general we prefer to use wait_bit.h for such things. Probably just > define a BUILD_WAIT_FOR_BIT() in your .c to handle your memory access.
OK. I will take a look for v4. Thanks for the review. C. > >> + invalidate_dcache_range(des_start, des_end); >> + if (!(curr_des->txdes0 & FTGMAC100_TXDES0_TXDMA_OWN)) >> + break; >> + udelay(10); >> + } >> + >> + if (get_timer(start) >= FTGMAC100_TX_TIMEOUT_MS) { >> + dev_err(dev, "transmit timeout\n"); >> + return -ETIMEDOUT; >> + } >> + >> debug("%s(): packet sent\n", __func__); >> >> /* Move to next descriptor */ >> -- >> 2.17.1 >> >> _______________________________________________ >> U-Boot mailing list >> U-Boot@lists.denx.de >> https://lists.denx.de/listinfo/u-boot _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot