Lines Matching +full:wait +full:- +full:retry +full:- +full:us

1 // SPDX-License-Identifier: GPL-2.0+
13 * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
21 * target board. Anything with a CL-PS7111 or EP7211 should be able to run
53 struct cs8900_priv *priv = (struct cs8900_priv *)(dev->priv); in get_reg_init_bus()
54 uint8_t volatile * const iob = (uint8_t volatile * const)dev->iobase; in get_reg_init_bus()
62 REG_WRITE(regno, &priv->regs->pptr); in get_reg_init_bus()
63 return REG_READ(&priv->regs->pdata); in get_reg_init_bus()
69 struct cs8900_priv *priv = (struct cs8900_priv *)(dev->priv); in get_reg()
70 REG_WRITE(regno, &priv->regs->pptr); in get_reg()
71 return REG_READ(&priv->regs->pdata); in get_reg()
77 struct cs8900_priv *priv = (struct cs8900_priv *)(dev->priv); in put_reg()
78 REG_WRITE(regno, &priv->regs->pptr); in put_reg()
79 REG_WRITE(val, &priv->regs->pdata); in put_reg()
85 u16 us; in cs8900_reset() local
90 /* wait for 200ms */ in cs8900_reset()
92 /* Wait until the chip is reset */ in cs8900_reset()
95 while ((((us = get_reg_init_bus(dev, PP_SelfSTAT)) & in cs8900_reset()
132 dev->enetaddr[i * 2] = Addr & 0xFF; in cs8900_get_enetaddr()
133 dev->enetaddr[i * 2 + 1] = Addr >> 8; in cs8900_get_enetaddr()
149 uchar *enetaddr = dev->enetaddr; in cs8900_init()
178 struct cs8900_priv *priv = (struct cs8900_priv *)(dev->priv); in cs8900_recv()
185 status = REG_READ(&priv->regs->rtdata); in cs8900_recv()
186 rxlen = REG_READ(&priv->regs->rtdata); in cs8900_recv()
190 for (addr = (u16 *)net_rx_packets[0], i = rxlen >> 1; i > 0; i--) in cs8900_recv()
191 *addr++ = REG_READ(&priv->regs->rtdata); in cs8900_recv()
193 *addr++ = REG_READ(&priv->regs->rtdata); in cs8900_recv()
206 struct cs8900_priv *priv = (struct cs8900_priv *)(dev->priv); in cs8900_send()
208 retry: in cs8900_send()
210 REG_WRITE(PP_TxCmd_TxStart_Full, &priv->regs->txcmd); in cs8900_send()
211 REG_WRITE(length, &priv->regs->txlen); in cs8900_send()
222 goto retry; in cs8900_send()
227 for (addr = packet; length > 0; length -= 2) in cs8900_send()
228 REG_WRITE(*addr++, &priv->regs->rtdata); in cs8900_send()
230 /* wait for transfer to succeed */ in cs8900_send()
252 /* read a 16-bit word out of the EEPROM */
268 /* write a 16-bit word into the EEPROM */
302 priv->regs = (struct cs8900_regs *)base_addr; in cs8900_initialize()
304 dev->iobase = base_addr; in cs8900_initialize()
305 dev->priv = priv; in cs8900_initialize()
306 dev->init = cs8900_init; in cs8900_initialize()
307 dev->halt = cs8900_halt; in cs8900_initialize()
308 dev->send = cs8900_send; in cs8900_initialize()
309 dev->recv = cs8900_recv; in cs8900_initialize()
314 sprintf(dev->name, "%s-%hu", CS8900_DRIVERNAME, dev_num); in cs8900_initialize()