
Dear Lucas Stach,
Avoid clutter in ueth_data. Individual drivers should not mess with structures belonging to the core like this.
Signed-off-by: Lucas Stach dev@lynxeye.de
Reviewed-by: Marek Vasut marex@denx.de Acked-by: Marek Vasut marex@denx.de
drivers/usb/eth/smsc95xx.c | 48 ++++++++++++++++++++++++++++++++-------------- include/usb_ether.h | 8 ++------ 2 Dateien geändert, 36 Zeilen hinzugefügt(+), 20 Zeilen entfernt(-)
You might want to fix your locale ... but I'm surprised git was localised at all :)
diff --git a/drivers/usb/eth/smsc95xx.c b/drivers/usb/eth/smsc95xx.c index c62a8c1..4bf2a16 100644 --- a/drivers/usb/eth/smsc95xx.c +++ b/drivers/usb/eth/smsc95xx.c @@ -25,6 +25,7 @@ #include <usb.h> #include <linux/mii.h> #include "usb_ether.h" +#include "malloc.h"
/* SMSC LAN95xx based USB 2.0 Ethernet Devices */
@@ -146,6 +147,12 @@ /* local vars */ static int curr_eth_dev; /* index for name of next device detected */
+/* driver private */ +struct smsc95xx_private {
- size_t rx_urb_size; /* maximum USB URB size */
- u32 mac_cr; /* MAC control register value */
- int have_hwaddr; /* 1 if we have a hardware MAC address */
+};
/*
- Smsc95xx infrastructure commands
@@ -377,6 +384,7 @@ static int smsc95xx_init_mac_address(struct eth_device *eth, static int smsc95xx_write_hwaddr(struct eth_device *eth) { struct ueth_data *dev = (struct ueth_data *)eth->priv;
- struct smsc95xx_private *priv = dev->dev_priv; u32 addr_lo = __get_unaligned_le32(ð->enetaddr[0]); u32 addr_hi = __get_unaligned_le16(ð->enetaddr[4]); int ret;
@@ -392,7 +400,7 @@ static int smsc95xx_write_hwaddr(struct eth_device *eth) return ret;
debug("MAC %pM\n", eth->enetaddr);
- dev->have_hwaddr = 1;
- priv->have_hwaddr = 1; return 0;
}
@@ -425,19 +433,22 @@ static int smsc95xx_set_csums(struct ueth_data *dev,
static void smsc95xx_set_multicast(struct ueth_data *dev) {
- struct smsc95xx_private *priv = dev->dev_priv;
- /* No multicast in u-boot */
- dev->mac_cr &= ~(MAC_CR_PRMS_ | MAC_CR_MCPAS_ | MAC_CR_HPFILT_);
- priv->mac_cr &= ~(MAC_CR_PRMS_ | MAC_CR_MCPAS_ | MAC_CR_HPFILT_);
}
/* starts the TX path */ static void smsc95xx_start_tx_path(struct ueth_data *dev) {
struct smsc95xx_private *priv = dev->dev_priv; u32 reg_val;
/* Enable Tx at MAC */
- dev->mac_cr |= MAC_CR_TXEN_;
- priv->mac_cr |= MAC_CR_TXEN_;
- smsc95xx_write_reg(dev, MAC_CR, dev->mac_cr);
smsc95xx_write_reg(dev, MAC_CR, priv->mac_cr);
/* Enable Tx at SCSRs */ reg_val = TX_CFG_ON_;
@@ -447,8 +458,10 @@ static void smsc95xx_start_tx_path(struct ueth_data *dev) /* Starts the Receive path */ static void smsc95xx_start_rx_path(struct ueth_data *dev) {
- dev->mac_cr |= MAC_CR_RXEN_;
- smsc95xx_write_reg(dev, MAC_CR, dev->mac_cr);
- struct smsc95xx_private *priv = dev->dev_priv;
- priv->mac_cr |= MAC_CR_RXEN_;
- smsc95xx_write_reg(dev, MAC_CR, priv->mac_cr);
}
/* @@ -462,6 +475,7 @@ static int smsc95xx_init(struct eth_device *eth, bd_t *bd) u32 burst_cap; int timeout; struct ueth_data *dev = (struct ueth_data *)eth->priv;
- struct smsc95xx_private *priv = (struct smsc95xx_private *)dev-
dev_priv; #define TIMEOUT_RESOLUTION 50 /* ms */ int link_detected;
@@ -504,9 +518,9 @@ static int smsc95xx_init(struct eth_device *eth, bd_t *bd) debug("timeout waiting for PHY Reset\n"); return -1; }
- if (!dev->have_hwaddr && smsc95xx_init_mac_address(eth, dev) == 0)
dev->have_hwaddr = 1;
- if (!dev->have_hwaddr) {
- if (!priv->have_hwaddr && smsc95xx_init_mac_address(eth, dev) == 0)
priv->have_hwaddr = 1;
- if (!priv->have_hwaddr) { puts("Error: SMSC95xx: No MAC address set - set usbethaddr\n"); return -1; }
@@ -532,16 +546,16 @@ static int smsc95xx_init(struct eth_device *eth, bd_t *bd) #ifdef TURBO_MODE if (dev->pusb_dev->speed == USB_SPEED_HIGH) { burst_cap = DEFAULT_HS_BURST_CAP_SIZE / HS_USB_PKT_SIZE;
dev->rx_urb_size = DEFAULT_HS_BURST_CAP_SIZE;
} else { burst_cap = DEFAULT_FS_BURST_CAP_SIZE / FS_USB_PKT_SIZE;priv->rx_urb_size = DEFAULT_HS_BURST_CAP_SIZE;
dev->rx_urb_size = DEFAULT_FS_BURST_CAP_SIZE;
}priv->rx_urb_size = DEFAULT_FS_BURST_CAP_SIZE;
#else burst_cap = 0;
- dev->rx_urb_size = MAX_SINGLE_PACKET_SIZE;
- priv->rx_urb_size = MAX_SINGLE_PACKET_SIZE;
#endif
- debug("rx_urb_size=%ld\n", (ulong)dev->rx_urb_size);
debug("rx_urb_size=%ld\n", (ulong)priv->rx_urb_size);
ret = smsc95xx_write_reg(dev, BURST_CAP, burst_cap); if (ret < 0)
@@ -606,7 +620,7 @@ static int smsc95xx_init(struct eth_device *eth, bd_t *bd) if (ret < 0) return ret;
- ret = smsc95xx_read_reg(dev, MAC_CR, &dev->mac_cr);
- ret = smsc95xx_read_reg(dev, MAC_CR, &priv->mac_cr); if (ret < 0) return ret;
@@ -857,6 +871,12 @@ int smsc95xx_eth_probe(struct usb_device *dev, unsigned int ifnum, return 0; } dev->privptr = (void *)ss;
- /* alloc driver private */
- ss->dev_priv = calloc(1, sizeof(struct smsc95xx_private));
- if (!ss->dev_priv)
return 0;
- return 1;
}
diff --git a/include/usb_ether.h b/include/usb_ether.h index a7fb26b..7c7aecb 100644 --- a/include/usb_ether.h +++ b/include/usb_ether.h @@ -50,12 +50,8 @@ struct ueth_data { unsigned char protocol; /* .............. */ unsigned char irqinterval; /* Intervall for IRQ Pipe */
- /* private fields for each driver can go here if needed */
-#ifdef CONFIG_USB_ETHER_SMSC95XX
- size_t rx_urb_size; /* maximum USB URB size */
- u32 mac_cr; /* MAC control register value */
- int have_hwaddr; /* 1 if we have a hardware MAC address */
-#endif
- /* driver private */
- void *dev_priv;
};
/*