mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-21 22:51:37 +00:00
net: altera_tse: factor out stop mac func
Factor out the stop mac function to prepare msgdma support. Signed-off-by: Thomas Chou <thomas@wytron.com.tw> Reviewed-by: Marek Vasut <marex@denx.de>
This commit is contained in:
parent
de99a17c9a
commit
acd71c320f
1 changed files with 21 additions and 15 deletions
|
@ -223,16 +223,33 @@ static int altera_tse_free_pkt(struct udevice *dev, uchar *packet,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void altera_tse_stop_mac(struct altera_tse_priv *priv)
|
||||||
|
{
|
||||||
|
struct alt_tse_mac *mac_dev = priv->mac_dev;
|
||||||
|
u32 status;
|
||||||
|
ulong ctime;
|
||||||
|
|
||||||
|
/* reset the mac */
|
||||||
|
writel(ALTERA_TSE_CMD_SW_RESET_MSK, &mac_dev->command_config);
|
||||||
|
ctime = get_timer(0);
|
||||||
|
while (1) {
|
||||||
|
status = readl(&mac_dev->command_config);
|
||||||
|
if (!(status & ALTERA_TSE_CMD_SW_RESET_MSK))
|
||||||
|
break;
|
||||||
|
if (get_timer(ctime) > ALT_TSE_SW_RESET_TIMEOUT) {
|
||||||
|
debug("Reset mac timeout\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void altera_tse_stop(struct udevice *dev)
|
static void altera_tse_stop(struct udevice *dev)
|
||||||
{
|
{
|
||||||
struct altera_tse_priv *priv = dev_get_priv(dev);
|
struct altera_tse_priv *priv = dev_get_priv(dev);
|
||||||
struct alt_tse_mac *mac_dev = priv->mac_dev;
|
|
||||||
struct alt_sgdma_registers *rx_sgdma = priv->sgdma_rx;
|
struct alt_sgdma_registers *rx_sgdma = priv->sgdma_rx;
|
||||||
struct alt_sgdma_registers *tx_sgdma = priv->sgdma_tx;
|
struct alt_sgdma_registers *tx_sgdma = priv->sgdma_tx;
|
||||||
struct alt_sgdma_descriptor *rx_desc = priv->rx_desc;
|
struct alt_sgdma_descriptor *rx_desc = priv->rx_desc;
|
||||||
u32 status;
|
|
||||||
int ret;
|
int ret;
|
||||||
ulong ctime;
|
|
||||||
|
|
||||||
/* clear rx desc & wait for sgdma to complete */
|
/* clear rx desc & wait for sgdma to complete */
|
||||||
rx_desc->descriptor_control = 0;
|
rx_desc->descriptor_control = 0;
|
||||||
|
@ -248,18 +265,7 @@ static void altera_tse_stop(struct udevice *dev)
|
||||||
writel(ALT_SGDMA_CONTROL_SOFTWARERESET_MSK,
|
writel(ALT_SGDMA_CONTROL_SOFTWARERESET_MSK,
|
||||||
&tx_sgdma->control);
|
&tx_sgdma->control);
|
||||||
|
|
||||||
/* reset the mac */
|
altera_tse_stop_mac(priv);
|
||||||
writel(ALTERA_TSE_CMD_SW_RESET_MSK, &mac_dev->command_config);
|
|
||||||
ctime = get_timer(0);
|
|
||||||
while (1) {
|
|
||||||
status = readl(&mac_dev->command_config);
|
|
||||||
if (!(status & ALTERA_TSE_CMD_SW_RESET_MSK))
|
|
||||||
break;
|
|
||||||
if (get_timer(ctime) > ALT_TSE_SW_RESET_TIMEOUT) {
|
|
||||||
debug("Reset mac timeout\n");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int tse_mdio_read(struct mii_dev *bus, int addr, int devad, int reg)
|
static int tse_mdio_read(struct mii_dev *bus, int addr, int devad, int reg)
|
||||||
|
|
Loading…
Add table
Reference in a new issue