Lines Matching refs:dev

65 	struct usbnet *dev;  member
77 struct usbnet *dev; member
84 static int __must_check __smsc75xx_read_reg(struct usbnet *dev, u32 index, in __smsc75xx_read_reg() argument
91 BUG_ON(!dev); in __smsc75xx_read_reg()
98 ret = fn(dev, USB_VENDOR_REQUEST_READ_REGISTER, USB_DIR_IN in __smsc75xx_read_reg()
102 netdev_warn(dev->net, "Failed to read reg index 0x%08x: %d\n", in __smsc75xx_read_reg()
111 static int __must_check __smsc75xx_write_reg(struct usbnet *dev, u32 index, in __smsc75xx_write_reg() argument
118 BUG_ON(!dev); in __smsc75xx_write_reg()
128 ret = fn(dev, USB_VENDOR_REQUEST_WRITE_REGISTER, USB_DIR_OUT in __smsc75xx_write_reg()
132 netdev_warn(dev->net, "Failed to write reg index 0x%08x: %d\n", in __smsc75xx_write_reg()
138 static int __must_check smsc75xx_read_reg_nopm(struct usbnet *dev, u32 index, in smsc75xx_read_reg_nopm() argument
141 return __smsc75xx_read_reg(dev, index, data, 1); in smsc75xx_read_reg_nopm()
144 static int __must_check smsc75xx_write_reg_nopm(struct usbnet *dev, u32 index, in smsc75xx_write_reg_nopm() argument
147 return __smsc75xx_write_reg(dev, index, data, 1); in smsc75xx_write_reg_nopm()
150 static int __must_check smsc75xx_read_reg(struct usbnet *dev, u32 index, in smsc75xx_read_reg() argument
153 return __smsc75xx_read_reg(dev, index, data, 0); in smsc75xx_read_reg()
156 static int __must_check smsc75xx_write_reg(struct usbnet *dev, u32 index, in smsc75xx_write_reg() argument
159 return __smsc75xx_write_reg(dev, index, data, 0); in smsc75xx_write_reg()
164 static __must_check int __smsc75xx_phy_wait_not_busy(struct usbnet *dev, in __smsc75xx_phy_wait_not_busy() argument
172 ret = __smsc75xx_read_reg(dev, MII_ACCESS, &val, in_pm); in __smsc75xx_phy_wait_not_busy()
174 netdev_warn(dev->net, "Error reading MII_ACCESS\n"); in __smsc75xx_phy_wait_not_busy()
188 struct usbnet *dev = netdev_priv(netdev); in __smsc75xx_mdio_read() local
192 mutex_lock(&dev->phy_mutex); in __smsc75xx_mdio_read()
195 ret = __smsc75xx_phy_wait_not_busy(dev, in_pm); in __smsc75xx_mdio_read()
197 netdev_warn(dev->net, "MII is busy in smsc75xx_mdio_read\n"); in __smsc75xx_mdio_read()
202 phy_id &= dev->mii.phy_id_mask; in __smsc75xx_mdio_read()
203 idx &= dev->mii.reg_num_mask; in __smsc75xx_mdio_read()
207 ret = __smsc75xx_write_reg(dev, MII_ACCESS, addr, in_pm); in __smsc75xx_mdio_read()
209 netdev_warn(dev->net, "Error writing MII_ACCESS\n"); in __smsc75xx_mdio_read()
213 ret = __smsc75xx_phy_wait_not_busy(dev, in_pm); in __smsc75xx_mdio_read()
215 netdev_warn(dev->net, "Timed out reading MII reg %02X\n", idx); in __smsc75xx_mdio_read()
219 ret = __smsc75xx_read_reg(dev, MII_DATA, &val, in_pm); in __smsc75xx_mdio_read()
221 netdev_warn(dev->net, "Error reading MII_DATA\n"); in __smsc75xx_mdio_read()
228 mutex_unlock(&dev->phy_mutex); in __smsc75xx_mdio_read()
235 struct usbnet *dev = netdev_priv(netdev); in __smsc75xx_mdio_write() local
239 mutex_lock(&dev->phy_mutex); in __smsc75xx_mdio_write()
242 ret = __smsc75xx_phy_wait_not_busy(dev, in_pm); in __smsc75xx_mdio_write()
244 netdev_warn(dev->net, "MII is busy in smsc75xx_mdio_write\n"); in __smsc75xx_mdio_write()
249 ret = __smsc75xx_write_reg(dev, MII_DATA, val, in_pm); in __smsc75xx_mdio_write()
251 netdev_warn(dev->net, "Error writing MII_DATA\n"); in __smsc75xx_mdio_write()
256 phy_id &= dev->mii.phy_id_mask; in __smsc75xx_mdio_write()
257 idx &= dev->mii.reg_num_mask; in __smsc75xx_mdio_write()
261 ret = __smsc75xx_write_reg(dev, MII_ACCESS, addr, in_pm); in __smsc75xx_mdio_write()
263 netdev_warn(dev->net, "Error writing MII_ACCESS\n"); in __smsc75xx_mdio_write()
267 ret = __smsc75xx_phy_wait_not_busy(dev, in_pm); in __smsc75xx_mdio_write()
269 netdev_warn(dev->net, "Timed out writing MII reg %02X\n", idx); in __smsc75xx_mdio_write()
274 mutex_unlock(&dev->phy_mutex); in __smsc75xx_mdio_write()
300 static int smsc75xx_wait_eeprom(struct usbnet *dev) in smsc75xx_wait_eeprom() argument
307 ret = smsc75xx_read_reg(dev, E2P_CMD, &val); in smsc75xx_wait_eeprom()
309 netdev_warn(dev->net, "Error reading E2P_CMD\n"); in smsc75xx_wait_eeprom()
319 netdev_warn(dev->net, "EEPROM read operation timeout\n"); in smsc75xx_wait_eeprom()
326 static int smsc75xx_eeprom_confirm_not_busy(struct usbnet *dev) in smsc75xx_eeprom_confirm_not_busy() argument
333 ret = smsc75xx_read_reg(dev, E2P_CMD, &val); in smsc75xx_eeprom_confirm_not_busy()
335 netdev_warn(dev->net, "Error reading E2P_CMD\n"); in smsc75xx_eeprom_confirm_not_busy()
345 netdev_warn(dev->net, "EEPROM is busy\n"); in smsc75xx_eeprom_confirm_not_busy()
349 static int smsc75xx_read_eeprom(struct usbnet *dev, u32 offset, u32 length, in smsc75xx_read_eeprom() argument
355 BUG_ON(!dev); in smsc75xx_read_eeprom()
358 ret = smsc75xx_eeprom_confirm_not_busy(dev); in smsc75xx_read_eeprom()
364 ret = smsc75xx_write_reg(dev, E2P_CMD, val); in smsc75xx_read_eeprom()
366 netdev_warn(dev->net, "Error writing E2P_CMD\n"); in smsc75xx_read_eeprom()
370 ret = smsc75xx_wait_eeprom(dev); in smsc75xx_read_eeprom()
374 ret = smsc75xx_read_reg(dev, E2P_DATA, &val); in smsc75xx_read_eeprom()
376 netdev_warn(dev->net, "Error reading E2P_DATA\n"); in smsc75xx_read_eeprom()
387 static int smsc75xx_write_eeprom(struct usbnet *dev, u32 offset, u32 length, in smsc75xx_write_eeprom() argument
393 BUG_ON(!dev); in smsc75xx_write_eeprom()
396 ret = smsc75xx_eeprom_confirm_not_busy(dev); in smsc75xx_write_eeprom()
402 ret = smsc75xx_write_reg(dev, E2P_CMD, val); in smsc75xx_write_eeprom()
404 netdev_warn(dev->net, "Error writing E2P_CMD\n"); in smsc75xx_write_eeprom()
408 ret = smsc75xx_wait_eeprom(dev); in smsc75xx_write_eeprom()
416 ret = smsc75xx_write_reg(dev, E2P_DATA, val); in smsc75xx_write_eeprom()
418 netdev_warn(dev->net, "Error writing E2P_DATA\n"); in smsc75xx_write_eeprom()
424 ret = smsc75xx_write_reg(dev, E2P_CMD, val); in smsc75xx_write_eeprom()
426 netdev_warn(dev->net, "Error writing E2P_CMD\n"); in smsc75xx_write_eeprom()
430 ret = smsc75xx_wait_eeprom(dev); in smsc75xx_write_eeprom()
440 static int smsc75xx_dataport_wait_not_busy(struct usbnet *dev) in smsc75xx_dataport_wait_not_busy() argument
446 ret = smsc75xx_read_reg(dev, DP_SEL, &dp_sel); in smsc75xx_dataport_wait_not_busy()
448 netdev_warn(dev->net, "Error reading DP_SEL\n"); in smsc75xx_dataport_wait_not_busy()
458 netdev_warn(dev->net, "smsc75xx_dataport_wait_not_busy timed out\n"); in smsc75xx_dataport_wait_not_busy()
463 static int smsc75xx_dataport_write(struct usbnet *dev, u32 ram_select, u32 addr, in smsc75xx_dataport_write() argument
466 struct smsc75xx_priv *pdata = (struct smsc75xx_priv *)(dev->data[0]); in smsc75xx_dataport_write()
472 ret = smsc75xx_dataport_wait_not_busy(dev); in smsc75xx_dataport_write()
474 netdev_warn(dev->net, "smsc75xx_dataport_write busy on entry\n"); in smsc75xx_dataport_write()
478 ret = smsc75xx_read_reg(dev, DP_SEL, &dp_sel); in smsc75xx_dataport_write()
480 netdev_warn(dev->net, "Error reading DP_SEL\n"); in smsc75xx_dataport_write()
486 ret = smsc75xx_write_reg(dev, DP_SEL, dp_sel); in smsc75xx_dataport_write()
488 netdev_warn(dev->net, "Error writing DP_SEL\n"); in smsc75xx_dataport_write()
493 ret = smsc75xx_write_reg(dev, DP_ADDR, addr + i); in smsc75xx_dataport_write()
495 netdev_warn(dev->net, "Error writing DP_ADDR\n"); in smsc75xx_dataport_write()
499 ret = smsc75xx_write_reg(dev, DP_DATA, buf[i]); in smsc75xx_dataport_write()
501 netdev_warn(dev->net, "Error writing DP_DATA\n"); in smsc75xx_dataport_write()
505 ret = smsc75xx_write_reg(dev, DP_CMD, DP_CMD_WRITE); in smsc75xx_dataport_write()
507 netdev_warn(dev->net, "Error writing DP_CMD\n"); in smsc75xx_dataport_write()
511 ret = smsc75xx_dataport_wait_not_busy(dev); in smsc75xx_dataport_write()
513 netdev_warn(dev->net, "smsc75xx_dataport_write timeout\n"); in smsc75xx_dataport_write()
533 struct usbnet *dev = pdata->dev; in smsc75xx_deferred_multicast_write() local
536 netif_dbg(dev, drv, dev->net, "deferred multicast write 0x%08x\n", in smsc75xx_deferred_multicast_write()
539 smsc75xx_dataport_write(dev, DP_SEL_VHF, DP_SEL_VHF_VLAN_LEN, in smsc75xx_deferred_multicast_write()
542 ret = smsc75xx_write_reg(dev, RFE_CTL, pdata->rfe_ctl); in smsc75xx_deferred_multicast_write()
544 netdev_warn(dev->net, "Error writing RFE_CRL\n"); in smsc75xx_deferred_multicast_write()
549 struct usbnet *dev = netdev_priv(netdev); in smsc75xx_set_multicast() local
550 struct smsc75xx_priv *pdata = (struct smsc75xx_priv *)(dev->data[0]); in smsc75xx_set_multicast()
563 if (dev->net->flags & IFF_PROMISC) { in smsc75xx_set_multicast()
564 netif_dbg(dev, drv, dev->net, "promiscuous mode enabled\n"); in smsc75xx_set_multicast()
566 } else if (dev->net->flags & IFF_ALLMULTI) { in smsc75xx_set_multicast()
567 netif_dbg(dev, drv, dev->net, "receive all multicast enabled\n"); in smsc75xx_set_multicast()
569 } else if (!netdev_mc_empty(dev->net)) { in smsc75xx_set_multicast()
572 netif_dbg(dev, drv, dev->net, "receive multicast hash filter\n"); in smsc75xx_set_multicast()
582 netif_dbg(dev, drv, dev->net, "receive own packets only\n"); in smsc75xx_set_multicast()
592 static int smsc75xx_update_flowcontrol(struct usbnet *dev, u8 duplex, in smsc75xx_update_flowcontrol() argument
610 netif_dbg(dev, link, dev->net, "rx pause %s, tx pause %s\n", in smsc75xx_update_flowcontrol()
614 netif_dbg(dev, link, dev->net, "half duplex\n"); in smsc75xx_update_flowcontrol()
617 ret = smsc75xx_write_reg(dev, FLOW, flow); in smsc75xx_update_flowcontrol()
619 netdev_warn(dev->net, "Error writing FLOW\n"); in smsc75xx_update_flowcontrol()
623 ret = smsc75xx_write_reg(dev, FCT_FLOW, fct_flow); in smsc75xx_update_flowcontrol()
625 netdev_warn(dev->net, "Error writing FCT_FLOW\n"); in smsc75xx_update_flowcontrol()
632 static int smsc75xx_link_reset(struct usbnet *dev) in smsc75xx_link_reset() argument
634 struct mii_if_info *mii = &dev->mii; in smsc75xx_link_reset()
640 smsc75xx_mdio_write(dev->net, mii->phy_id, PHY_INT_SRC, in smsc75xx_link_reset()
643 ret = smsc75xx_write_reg(dev, INT_STS, INT_STS_CLEAR_ALL); in smsc75xx_link_reset()
645 netdev_warn(dev->net, "Error writing INT_STS\n"); in smsc75xx_link_reset()
650 mii_ethtool_gset(&dev->mii, &ecmd); in smsc75xx_link_reset()
651 lcladv = smsc75xx_mdio_read(dev->net, mii->phy_id, MII_ADVERTISE); in smsc75xx_link_reset()
652 rmtadv = smsc75xx_mdio_read(dev->net, mii->phy_id, MII_LPA); in smsc75xx_link_reset()
654 netif_dbg(dev, link, dev->net, "speed: %u duplex: %d lcladv: %04x rmtadv: %04x\n", in smsc75xx_link_reset()
657 return smsc75xx_update_flowcontrol(dev, ecmd.duplex, lcladv, rmtadv); in smsc75xx_link_reset()
660 static void smsc75xx_status(struct usbnet *dev, struct urb *urb) in smsc75xx_status() argument
665 netdev_warn(dev->net, "unexpected urb length %d\n", in smsc75xx_status()
673 netif_dbg(dev, link, dev->net, "intdata: 0x%08X\n", intdata); in smsc75xx_status()
676 usbnet_defer_kevent(dev, EVENT_LINK_RESET); in smsc75xx_status()
678 netdev_warn(dev->net, "unexpected interrupt, intdata=0x%08X\n", in smsc75xx_status()
690 struct usbnet *dev = netdev_priv(netdev); in smsc75xx_ethtool_get_eeprom() local
694 return smsc75xx_read_eeprom(dev, ee->offset, ee->len, data); in smsc75xx_ethtool_get_eeprom()
700 struct usbnet *dev = netdev_priv(netdev); in smsc75xx_ethtool_set_eeprom() local
703 netdev_warn(dev->net, "EEPROM: magic value mismatch: 0x%x\n", in smsc75xx_ethtool_set_eeprom()
708 return smsc75xx_write_eeprom(dev, ee->offset, ee->len, data); in smsc75xx_ethtool_set_eeprom()
714 struct usbnet *dev = netdev_priv(net); in smsc75xx_ethtool_get_wol() local
715 struct smsc75xx_priv *pdata = (struct smsc75xx_priv *)(dev->data[0]); in smsc75xx_ethtool_get_wol()
724 struct usbnet *dev = netdev_priv(net); in smsc75xx_ethtool_set_wol() local
725 struct smsc75xx_priv *pdata = (struct smsc75xx_priv *)(dev->data[0]); in smsc75xx_ethtool_set_wol()
730 ret = device_set_wakeup_enable(&dev->udev->dev, pdata->wolopts); in smsc75xx_ethtool_set_wol()
732 netdev_warn(dev->net, "device_set_wakeup_enable error %d\n", ret); in smsc75xx_ethtool_set_wol()
754 struct usbnet *dev = netdev_priv(netdev); in smsc75xx_ioctl() local
759 return generic_mii_ioctl(&dev->mii, if_mii(rq), cmd, NULL); in smsc75xx_ioctl()
762 static void smsc75xx_init_mac_address(struct usbnet *dev) in smsc75xx_init_mac_address() argument
765 if (smsc75xx_read_eeprom(dev, EEPROM_MAC_OFFSET, ETH_ALEN, in smsc75xx_init_mac_address()
766 dev->net->dev_addr) == 0) { in smsc75xx_init_mac_address()
767 if (is_valid_ether_addr(dev->net->dev_addr)) { in smsc75xx_init_mac_address()
769 netif_dbg(dev, ifup, dev->net, in smsc75xx_init_mac_address()
776 eth_hw_addr_random(dev->net); in smsc75xx_init_mac_address()
777 netif_dbg(dev, ifup, dev->net, "MAC address set to eth_random_addr\n"); in smsc75xx_init_mac_address()
780 static int smsc75xx_set_mac_address(struct usbnet *dev) in smsc75xx_set_mac_address() argument
782 u32 addr_lo = dev->net->dev_addr[0] | dev->net->dev_addr[1] << 8 | in smsc75xx_set_mac_address()
783 dev->net->dev_addr[2] << 16 | dev->net->dev_addr[3] << 24; in smsc75xx_set_mac_address()
784 u32 addr_hi = dev->net->dev_addr[4] | dev->net->dev_addr[5] << 8; in smsc75xx_set_mac_address()
786 int ret = smsc75xx_write_reg(dev, RX_ADDRH, addr_hi); in smsc75xx_set_mac_address()
788 netdev_warn(dev->net, "Failed to write RX_ADDRH: %d\n", ret); in smsc75xx_set_mac_address()
792 ret = smsc75xx_write_reg(dev, RX_ADDRL, addr_lo); in smsc75xx_set_mac_address()
794 netdev_warn(dev->net, "Failed to write RX_ADDRL: %d\n", ret); in smsc75xx_set_mac_address()
799 ret = smsc75xx_write_reg(dev, ADDR_FILTX, addr_hi); in smsc75xx_set_mac_address()
801 netdev_warn(dev->net, "Failed to write ADDR_FILTX: %d\n", ret); in smsc75xx_set_mac_address()
805 ret = smsc75xx_write_reg(dev, ADDR_FILTX + 4, addr_lo); in smsc75xx_set_mac_address()
807 netdev_warn(dev->net, "Failed to write ADDR_FILTX+4: %d\n", ret); in smsc75xx_set_mac_address()
812 static int smsc75xx_phy_initialize(struct usbnet *dev) in smsc75xx_phy_initialize() argument
817 dev->mii.dev = dev->net; in smsc75xx_phy_initialize()
818 dev->mii.mdio_read = smsc75xx_mdio_read; in smsc75xx_phy_initialize()
819 dev->mii.mdio_write = smsc75xx_mdio_write; in smsc75xx_phy_initialize()
820 dev->mii.phy_id_mask = 0x1f; in smsc75xx_phy_initialize()
821 dev->mii.reg_num_mask = 0x1f; in smsc75xx_phy_initialize()
822 dev->mii.supports_gmii = 1; in smsc75xx_phy_initialize()
823 dev->mii.phy_id = SMSC75XX_INTERNAL_PHY_ID; in smsc75xx_phy_initialize()
826 smsc75xx_mdio_write(dev->net, dev->mii.phy_id, MII_BMCR, BMCR_RESET); in smsc75xx_phy_initialize()
830 bmcr = smsc75xx_mdio_read(dev->net, dev->mii.phy_id, MII_BMCR); in smsc75xx_phy_initialize()
832 netdev_warn(dev->net, "Error reading MII_BMCR\n"); in smsc75xx_phy_initialize()
839 netdev_warn(dev->net, "timeout on PHY Reset\n"); in smsc75xx_phy_initialize()
843 smsc75xx_mdio_write(dev->net, dev->mii.phy_id, MII_ADVERTISE, in smsc75xx_phy_initialize()
846 smsc75xx_mdio_write(dev->net, dev->mii.phy_id, MII_CTRL1000, in smsc75xx_phy_initialize()
850 ret = smsc75xx_mdio_read(dev->net, dev->mii.phy_id, PHY_INT_SRC); in smsc75xx_phy_initialize()
852 netdev_warn(dev->net, "Error reading PHY_INT_SRC\n"); in smsc75xx_phy_initialize()
856 smsc75xx_mdio_write(dev->net, dev->mii.phy_id, PHY_INT_SRC, 0xffff); in smsc75xx_phy_initialize()
858 smsc75xx_mdio_write(dev->net, dev->mii.phy_id, PHY_INT_MASK, in smsc75xx_phy_initialize()
860 mii_nway_restart(&dev->mii); in smsc75xx_phy_initialize()
862 netif_dbg(dev, ifup, dev->net, "phy initialised successfully\n"); in smsc75xx_phy_initialize()
866 static int smsc75xx_set_rx_max_frame_length(struct usbnet *dev, int size) in smsc75xx_set_rx_max_frame_length() argument
872 ret = smsc75xx_read_reg(dev, MAC_RX, &buf); in smsc75xx_set_rx_max_frame_length()
874 netdev_warn(dev->net, "Failed to read MAC_RX: %d\n", ret); in smsc75xx_set_rx_max_frame_length()
882 ret = smsc75xx_write_reg(dev, MAC_RX, buf); in smsc75xx_set_rx_max_frame_length()
884 netdev_warn(dev->net, "Failed to write MAC_RX: %d\n", ret); in smsc75xx_set_rx_max_frame_length()
893 ret = smsc75xx_write_reg(dev, MAC_RX, buf); in smsc75xx_set_rx_max_frame_length()
895 netdev_warn(dev->net, "Failed to write MAC_RX: %d\n", ret); in smsc75xx_set_rx_max_frame_length()
901 ret = smsc75xx_write_reg(dev, MAC_RX, buf); in smsc75xx_set_rx_max_frame_length()
903 netdev_warn(dev->net, "Failed to write MAC_RX: %d\n", ret); in smsc75xx_set_rx_max_frame_length()
913 struct usbnet *dev = netdev_priv(netdev); in smsc75xx_change_mtu() local
919 ret = smsc75xx_set_rx_max_frame_length(dev, new_mtu + ETH_HLEN); in smsc75xx_change_mtu()
921 netdev_warn(dev->net, "Failed to set mac rx frame length\n"); in smsc75xx_change_mtu()
932 struct usbnet *dev = netdev_priv(netdev); in smsc75xx_set_features() local
933 struct smsc75xx_priv *pdata = (struct smsc75xx_priv *)(dev->data[0]); in smsc75xx_set_features()
947 ret = smsc75xx_write_reg(dev, RFE_CTL, pdata->rfe_ctl); in smsc75xx_set_features()
949 netdev_warn(dev->net, "Error writing RFE_CTL\n"); in smsc75xx_set_features()
954 static int smsc75xx_wait_ready(struct usbnet *dev, int in_pm) in smsc75xx_wait_ready() argument
962 ret = __smsc75xx_read_reg(dev, PMT_CTL, &buf, in_pm); in smsc75xx_wait_ready()
965 netdev_warn(dev->net, "Failed to read PMT_CTL: %d\n", ret); in smsc75xx_wait_ready()
976 netdev_warn(dev->net, "timeout waiting for device ready\n"); in smsc75xx_wait_ready()
980 static int smsc75xx_reset(struct usbnet *dev) in smsc75xx_reset() argument
982 struct smsc75xx_priv *pdata = (struct smsc75xx_priv *)(dev->data[0]); in smsc75xx_reset()
986 netif_dbg(dev, ifup, dev->net, "entering smsc75xx_reset\n"); in smsc75xx_reset()
988 ret = smsc75xx_wait_ready(dev, 0); in smsc75xx_reset()
990 netdev_warn(dev->net, "device not ready in smsc75xx_reset\n"); in smsc75xx_reset()
994 ret = smsc75xx_read_reg(dev, HW_CFG, &buf); in smsc75xx_reset()
996 netdev_warn(dev->net, "Failed to read HW_CFG: %d\n", ret); in smsc75xx_reset()
1002 ret = smsc75xx_write_reg(dev, HW_CFG, buf); in smsc75xx_reset()
1004 netdev_warn(dev->net, "Failed to write HW_CFG: %d\n", ret); in smsc75xx_reset()
1011 ret = smsc75xx_read_reg(dev, HW_CFG, &buf); in smsc75xx_reset()
1013 netdev_warn(dev->net, "Failed to read HW_CFG: %d\n", ret); in smsc75xx_reset()
1020 netdev_warn(dev->net, "timeout on completion of Lite Reset\n"); in smsc75xx_reset()
1024 netif_dbg(dev, ifup, dev->net, "Lite reset complete, resetting PHY\n"); in smsc75xx_reset()
1026 ret = smsc75xx_read_reg(dev, PMT_CTL, &buf); in smsc75xx_reset()
1028 netdev_warn(dev->net, "Failed to read PMT_CTL: %d\n", ret); in smsc75xx_reset()
1034 ret = smsc75xx_write_reg(dev, PMT_CTL, buf); in smsc75xx_reset()
1036 netdev_warn(dev->net, "Failed to write PMT_CTL: %d\n", ret); in smsc75xx_reset()
1043 ret = smsc75xx_read_reg(dev, PMT_CTL, &buf); in smsc75xx_reset()
1045 netdev_warn(dev->net, "Failed to read PMT_CTL: %d\n", ret); in smsc75xx_reset()
1052 netdev_warn(dev->net, "timeout waiting for PHY Reset\n"); in smsc75xx_reset()
1056 netif_dbg(dev, ifup, dev->net, "PHY reset complete\n"); in smsc75xx_reset()
1058 ret = smsc75xx_set_mac_address(dev); in smsc75xx_reset()
1060 netdev_warn(dev->net, "Failed to set mac address\n"); in smsc75xx_reset()
1064 netif_dbg(dev, ifup, dev->net, "MAC Address: %pM\n", in smsc75xx_reset()
1065 dev->net->dev_addr); in smsc75xx_reset()
1067 ret = smsc75xx_read_reg(dev, HW_CFG, &buf); in smsc75xx_reset()
1069 netdev_warn(dev->net, "Failed to read HW_CFG: %d\n", ret); in smsc75xx_reset()
1073 netif_dbg(dev, ifup, dev->net, "Read Value from HW_CFG : 0x%08x\n", in smsc75xx_reset()
1078 ret = smsc75xx_write_reg(dev, HW_CFG, buf); in smsc75xx_reset()
1080 netdev_warn(dev->net, "Failed to write HW_CFG: %d\n", ret); in smsc75xx_reset()
1084 ret = smsc75xx_read_reg(dev, HW_CFG, &buf); in smsc75xx_reset()
1086 netdev_warn(dev->net, "Failed to read HW_CFG: %d\n", ret); in smsc75xx_reset()
1090 netif_dbg(dev, ifup, dev->net, "Read Value from HW_CFG after writing HW_CFG_BIR: 0x%08x\n", in smsc75xx_reset()
1095 dev->rx_urb_size = MAX_SINGLE_PACKET_SIZE; in smsc75xx_reset()
1096 } else if (dev->udev->speed == USB_SPEED_HIGH) { in smsc75xx_reset()
1098 dev->rx_urb_size = DEFAULT_HS_BURST_CAP_SIZE; in smsc75xx_reset()
1101 dev->rx_urb_size = DEFAULT_FS_BURST_CAP_SIZE; in smsc75xx_reset()
1104 netif_dbg(dev, ifup, dev->net, "rx_urb_size=%ld\n", in smsc75xx_reset()
1105 (ulong)dev->rx_urb_size); in smsc75xx_reset()
1107 ret = smsc75xx_write_reg(dev, BURST_CAP, buf); in smsc75xx_reset()
1109 netdev_warn(dev->net, "Failed to write BURST_CAP: %d\n", ret); in smsc75xx_reset()
1113 ret = smsc75xx_read_reg(dev, BURST_CAP, &buf); in smsc75xx_reset()
1115 netdev_warn(dev->net, "Failed to read BURST_CAP: %d\n", ret); in smsc75xx_reset()
1119 netif_dbg(dev, ifup, dev->net, in smsc75xx_reset()
1122 ret = smsc75xx_write_reg(dev, BULK_IN_DLY, DEFAULT_BULK_IN_DELAY); in smsc75xx_reset()
1124 netdev_warn(dev->net, "Failed to write BULK_IN_DLY: %d\n", ret); in smsc75xx_reset()
1128 ret = smsc75xx_read_reg(dev, BULK_IN_DLY, &buf); in smsc75xx_reset()
1130 netdev_warn(dev->net, "Failed to read BULK_IN_DLY: %d\n", ret); in smsc75xx_reset()
1134 netif_dbg(dev, ifup, dev->net, in smsc75xx_reset()
1138 ret = smsc75xx_read_reg(dev, HW_CFG, &buf); in smsc75xx_reset()
1140 netdev_warn(dev->net, "Failed to read HW_CFG: %d\n", ret); in smsc75xx_reset()
1144 netif_dbg(dev, ifup, dev->net, "HW_CFG: 0x%08x\n", buf); in smsc75xx_reset()
1148 ret = smsc75xx_write_reg(dev, HW_CFG, buf); in smsc75xx_reset()
1150 netdev_warn(dev->net, "Failed to write HW_CFG: %d\n", ret); in smsc75xx_reset()
1154 ret = smsc75xx_read_reg(dev, HW_CFG, &buf); in smsc75xx_reset()
1156 netdev_warn(dev->net, "Failed to read HW_CFG: %d\n", ret); in smsc75xx_reset()
1160 netif_dbg(dev, ifup, dev->net, "HW_CFG: 0x%08x\n", buf); in smsc75xx_reset()
1165 ret = smsc75xx_write_reg(dev, FCT_RX_FIFO_END, buf); in smsc75xx_reset()
1167 netdev_warn(dev->net, "Failed to write FCT_RX_FIFO_END: %d\n", ret); in smsc75xx_reset()
1171 netif_dbg(dev, ifup, dev->net, "FCT_RX_FIFO_END set to 0x%08x\n", buf); in smsc75xx_reset()
1174 ret = smsc75xx_write_reg(dev, FCT_TX_FIFO_END, buf); in smsc75xx_reset()
1176 netdev_warn(dev->net, "Failed to write FCT_TX_FIFO_END: %d\n", ret); in smsc75xx_reset()
1180 netif_dbg(dev, ifup, dev->net, "FCT_TX_FIFO_END set to 0x%08x\n", buf); in smsc75xx_reset()
1182 ret = smsc75xx_write_reg(dev, INT_STS, INT_STS_CLEAR_ALL); in smsc75xx_reset()
1184 netdev_warn(dev->net, "Failed to write INT_STS: %d\n", ret); in smsc75xx_reset()
1188 ret = smsc75xx_read_reg(dev, ID_REV, &buf); in smsc75xx_reset()
1190 netdev_warn(dev->net, "Failed to read ID_REV: %d\n", ret); in smsc75xx_reset()
1194 netif_dbg(dev, ifup, dev->net, "ID_REV = 0x%08x\n", buf); in smsc75xx_reset()
1196 ret = smsc75xx_read_reg(dev, E2P_CMD, &buf); in smsc75xx_reset()
1198 netdev_warn(dev->net, "Failed to read E2P_CMD: %d\n", ret); in smsc75xx_reset()
1204 ret = smsc75xx_read_reg(dev, LED_GPIO_CFG, &buf); in smsc75xx_reset()
1206 netdev_warn(dev->net, "Failed to read LED_GPIO_CFG: %d\n", ret); in smsc75xx_reset()
1213 ret = smsc75xx_write_reg(dev, LED_GPIO_CFG, buf); in smsc75xx_reset()
1215 netdev_warn(dev->net, "Failed to write LED_GPIO_CFG: %d\n", ret); in smsc75xx_reset()
1220 ret = smsc75xx_write_reg(dev, FLOW, 0); in smsc75xx_reset()
1222 netdev_warn(dev->net, "Failed to write FLOW: %d\n", ret); in smsc75xx_reset()
1226 ret = smsc75xx_write_reg(dev, FCT_FLOW, 0); in smsc75xx_reset()
1228 netdev_warn(dev->net, "Failed to write FCT_FLOW: %d\n", ret); in smsc75xx_reset()
1233 ret = smsc75xx_read_reg(dev, RFE_CTL, &pdata->rfe_ctl); in smsc75xx_reset()
1235 netdev_warn(dev->net, "Failed to read RFE_CTL: %d\n", ret); in smsc75xx_reset()
1241 ret = smsc75xx_write_reg(dev, RFE_CTL, pdata->rfe_ctl); in smsc75xx_reset()
1243 netdev_warn(dev->net, "Failed to write RFE_CTL: %d\n", ret); in smsc75xx_reset()
1247 ret = smsc75xx_read_reg(dev, RFE_CTL, &pdata->rfe_ctl); in smsc75xx_reset()
1249 netdev_warn(dev->net, "Failed to read RFE_CTL: %d\n", ret); in smsc75xx_reset()
1253 netif_dbg(dev, ifup, dev->net, "RFE_CTL set to 0x%08x\n", in smsc75xx_reset()
1257 smsc75xx_set_features(dev->net, dev->net->features); in smsc75xx_reset()
1259 smsc75xx_set_multicast(dev->net); in smsc75xx_reset()
1261 ret = smsc75xx_phy_initialize(dev); in smsc75xx_reset()
1263 netdev_warn(dev->net, "Failed to initialize PHY: %d\n", ret); in smsc75xx_reset()
1267 ret = smsc75xx_read_reg(dev, INT_EP_CTL, &buf); in smsc75xx_reset()
1269 netdev_warn(dev->net, "Failed to read INT_EP_CTL: %d\n", ret); in smsc75xx_reset()
1276 ret = smsc75xx_write_reg(dev, INT_EP_CTL, buf); in smsc75xx_reset()
1278 netdev_warn(dev->net, "Failed to write INT_EP_CTL: %d\n", ret); in smsc75xx_reset()
1283 ret = smsc75xx_read_reg(dev, MAC_CR, &buf); in smsc75xx_reset()
1285 netdev_warn(dev->net, "Failed to read MAC_CR: %d\n", ret); in smsc75xx_reset()
1290 ret = smsc75xx_write_reg(dev, MAC_CR, buf); in smsc75xx_reset()
1292 netdev_warn(dev->net, "Failed to write MAC_CR: %d\n", ret); in smsc75xx_reset()
1296 ret = smsc75xx_read_reg(dev, MAC_TX, &buf); in smsc75xx_reset()
1298 netdev_warn(dev->net, "Failed to read MAC_TX: %d\n", ret); in smsc75xx_reset()
1304 ret = smsc75xx_write_reg(dev, MAC_TX, buf); in smsc75xx_reset()
1306 netdev_warn(dev->net, "Failed to write MAC_TX: %d\n", ret); in smsc75xx_reset()
1310 netif_dbg(dev, ifup, dev->net, "MAC_TX set to 0x%08x\n", buf); in smsc75xx_reset()
1312 ret = smsc75xx_read_reg(dev, FCT_TX_CTL, &buf); in smsc75xx_reset()
1314 netdev_warn(dev->net, "Failed to read FCT_TX_CTL: %d\n", ret); in smsc75xx_reset()
1320 ret = smsc75xx_write_reg(dev, FCT_TX_CTL, buf); in smsc75xx_reset()
1322 netdev_warn(dev->net, "Failed to write FCT_TX_CTL: %d\n", ret); in smsc75xx_reset()
1326 netif_dbg(dev, ifup, dev->net, "FCT_TX_CTL set to 0x%08x\n", buf); in smsc75xx_reset()
1328 ret = smsc75xx_set_rx_max_frame_length(dev, dev->net->mtu + ETH_HLEN); in smsc75xx_reset()
1330 netdev_warn(dev->net, "Failed to set max rx frame length\n"); in smsc75xx_reset()
1334 ret = smsc75xx_read_reg(dev, MAC_RX, &buf); in smsc75xx_reset()
1336 netdev_warn(dev->net, "Failed to read MAC_RX: %d\n", ret); in smsc75xx_reset()
1342 ret = smsc75xx_write_reg(dev, MAC_RX, buf); in smsc75xx_reset()
1344 netdev_warn(dev->net, "Failed to write MAC_RX: %d\n", ret); in smsc75xx_reset()
1348 netif_dbg(dev, ifup, dev->net, "MAC_RX set to 0x%08x\n", buf); in smsc75xx_reset()
1350 ret = smsc75xx_read_reg(dev, FCT_RX_CTL, &buf); in smsc75xx_reset()
1352 netdev_warn(dev->net, "Failed to read FCT_RX_CTL: %d\n", ret); in smsc75xx_reset()
1358 ret = smsc75xx_write_reg(dev, FCT_RX_CTL, buf); in smsc75xx_reset()
1360 netdev_warn(dev->net, "Failed to write FCT_RX_CTL: %d\n", ret); in smsc75xx_reset()
1364 netif_dbg(dev, ifup, dev->net, "FCT_RX_CTL set to 0x%08x\n", buf); in smsc75xx_reset()
1366 netif_dbg(dev, ifup, dev->net, "smsc75xx_reset, return 0\n"); in smsc75xx_reset()
1383 static int smsc75xx_bind(struct usbnet *dev, struct usb_interface *intf) in smsc75xx_bind() argument
1390 ret = usbnet_get_endpoints(dev, intf); in smsc75xx_bind()
1392 netdev_warn(dev->net, "usbnet_get_endpoints failed: %d\n", ret); in smsc75xx_bind()
1396 dev->data[0] = (unsigned long)kzalloc(sizeof(struct smsc75xx_priv), in smsc75xx_bind()
1399 pdata = (struct smsc75xx_priv *)(dev->data[0]); in smsc75xx_bind()
1403 pdata->dev = dev; in smsc75xx_bind()
1411 dev->net->features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM; in smsc75xx_bind()
1414 dev->net->features |= NETIF_F_RXCSUM; in smsc75xx_bind()
1416 dev->net->hw_features = NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | in smsc75xx_bind()
1419 ret = smsc75xx_wait_ready(dev, 0); in smsc75xx_bind()
1421 netdev_warn(dev->net, "device not ready in smsc75xx_bind\n"); in smsc75xx_bind()
1425 smsc75xx_init_mac_address(dev); in smsc75xx_bind()
1428 ret = smsc75xx_reset(dev); in smsc75xx_bind()
1430 netdev_warn(dev->net, "smsc75xx_reset error %d\n", ret); in smsc75xx_bind()
1434 dev->net->netdev_ops = &smsc75xx_netdev_ops; in smsc75xx_bind()
1435 dev->net->ethtool_ops = &smsc75xx_ethtool_ops; in smsc75xx_bind()
1436 dev->net->flags |= IFF_MULTICAST; in smsc75xx_bind()
1437 dev->net->hard_header_len += SMSC75XX_TX_OVERHEAD; in smsc75xx_bind()
1438 dev->hard_mtu = dev->net->mtu + dev->net->hard_header_len; in smsc75xx_bind()
1442 static void smsc75xx_unbind(struct usbnet *dev, struct usb_interface *intf) in smsc75xx_unbind() argument
1444 struct smsc75xx_priv *pdata = (struct smsc75xx_priv *)(dev->data[0]); in smsc75xx_unbind()
1446 netif_dbg(dev, ifdown, dev->net, "free pdata\n"); in smsc75xx_unbind()
1449 dev->data[0] = 0; in smsc75xx_unbind()
1458 static int smsc75xx_write_wuff(struct usbnet *dev, int filter, u32 wuf_cfg, in smsc75xx_write_wuff() argument
1465 ret = smsc75xx_write_reg(dev, cfg_base, wuf_cfg); in smsc75xx_write_wuff()
1467 netdev_warn(dev->net, "Error writing WUF_CFGX\n"); in smsc75xx_write_wuff()
1471 ret = smsc75xx_write_reg(dev, mask_base, wuf_mask1); in smsc75xx_write_wuff()
1473 netdev_warn(dev->net, "Error writing WUF_MASKX\n"); in smsc75xx_write_wuff()
1477 ret = smsc75xx_write_reg(dev, mask_base + 4, 0); in smsc75xx_write_wuff()
1479 netdev_warn(dev->net, "Error writing WUF_MASKX\n"); in smsc75xx_write_wuff()
1483 ret = smsc75xx_write_reg(dev, mask_base + 8, 0); in smsc75xx_write_wuff()
1485 netdev_warn(dev->net, "Error writing WUF_MASKX\n"); in smsc75xx_write_wuff()
1489 ret = smsc75xx_write_reg(dev, mask_base + 12, 0); in smsc75xx_write_wuff()
1491 netdev_warn(dev->net, "Error writing WUF_MASKX\n"); in smsc75xx_write_wuff()
1498 static int smsc75xx_enter_suspend0(struct usbnet *dev) in smsc75xx_enter_suspend0() argument
1500 struct smsc75xx_priv *pdata = (struct smsc75xx_priv *)(dev->data[0]); in smsc75xx_enter_suspend0()
1504 ret = smsc75xx_read_reg_nopm(dev, PMT_CTL, &val); in smsc75xx_enter_suspend0()
1506 netdev_warn(dev->net, "Error reading PMT_CTL\n"); in smsc75xx_enter_suspend0()
1513 ret = smsc75xx_write_reg_nopm(dev, PMT_CTL, val); in smsc75xx_enter_suspend0()
1515 netdev_warn(dev->net, "Error writing PMT_CTL\n"); in smsc75xx_enter_suspend0()
1524 static int smsc75xx_enter_suspend1(struct usbnet *dev) in smsc75xx_enter_suspend1() argument
1526 struct smsc75xx_priv *pdata = (struct smsc75xx_priv *)(dev->data[0]); in smsc75xx_enter_suspend1()
1530 ret = smsc75xx_read_reg_nopm(dev, PMT_CTL, &val); in smsc75xx_enter_suspend1()
1532 netdev_warn(dev->net, "Error reading PMT_CTL\n"); in smsc75xx_enter_suspend1()
1539 ret = smsc75xx_write_reg_nopm(dev, PMT_CTL, val); in smsc75xx_enter_suspend1()
1541 netdev_warn(dev->net, "Error writing PMT_CTL\n"); in smsc75xx_enter_suspend1()
1549 ret = smsc75xx_write_reg_nopm(dev, PMT_CTL, val); in smsc75xx_enter_suspend1()
1551 netdev_warn(dev->net, "Error writing PMT_CTL\n"); in smsc75xx_enter_suspend1()
1560 static int smsc75xx_enter_suspend2(struct usbnet *dev) in smsc75xx_enter_suspend2() argument
1562 struct smsc75xx_priv *pdata = (struct smsc75xx_priv *)(dev->data[0]); in smsc75xx_enter_suspend2()
1566 ret = smsc75xx_read_reg_nopm(dev, PMT_CTL, &val); in smsc75xx_enter_suspend2()
1568 netdev_warn(dev->net, "Error reading PMT_CTL\n"); in smsc75xx_enter_suspend2()
1575 ret = smsc75xx_write_reg_nopm(dev, PMT_CTL, val); in smsc75xx_enter_suspend2()
1577 netdev_warn(dev->net, "Error writing PMT_CTL\n"); in smsc75xx_enter_suspend2()
1586 static int smsc75xx_enter_suspend3(struct usbnet *dev) in smsc75xx_enter_suspend3() argument
1588 struct smsc75xx_priv *pdata = (struct smsc75xx_priv *)(dev->data[0]); in smsc75xx_enter_suspend3()
1592 ret = smsc75xx_read_reg_nopm(dev, FCT_RX_CTL, &val); in smsc75xx_enter_suspend3()
1594 netdev_warn(dev->net, "Error reading FCT_RX_CTL\n"); in smsc75xx_enter_suspend3()
1599 netdev_dbg(dev->net, "rx fifo not empty in autosuspend\n"); in smsc75xx_enter_suspend3()
1603 ret = smsc75xx_read_reg_nopm(dev, PMT_CTL, &val); in smsc75xx_enter_suspend3()
1605 netdev_warn(dev->net, "Error reading PMT_CTL\n"); in smsc75xx_enter_suspend3()
1612 ret = smsc75xx_write_reg_nopm(dev, PMT_CTL, val); in smsc75xx_enter_suspend3()
1614 netdev_warn(dev->net, "Error writing PMT_CTL\n"); in smsc75xx_enter_suspend3()
1622 ret = smsc75xx_write_reg_nopm(dev, PMT_CTL, val); in smsc75xx_enter_suspend3()
1624 netdev_warn(dev->net, "Error writing PMT_CTL\n"); in smsc75xx_enter_suspend3()
1633 static int smsc75xx_enable_phy_wakeup_interrupts(struct usbnet *dev, u16 mask) in smsc75xx_enable_phy_wakeup_interrupts() argument
1635 struct mii_if_info *mii = &dev->mii; in smsc75xx_enable_phy_wakeup_interrupts()
1638 netdev_dbg(dev->net, "enabling PHY wakeup interrupts\n"); in smsc75xx_enable_phy_wakeup_interrupts()
1641 ret = smsc75xx_mdio_read_nopm(dev->net, mii->phy_id, PHY_INT_SRC); in smsc75xx_enable_phy_wakeup_interrupts()
1643 netdev_warn(dev->net, "Error reading PHY_INT_SRC\n"); in smsc75xx_enable_phy_wakeup_interrupts()
1648 ret = smsc75xx_mdio_read_nopm(dev->net, mii->phy_id, PHY_INT_MASK); in smsc75xx_enable_phy_wakeup_interrupts()
1650 netdev_warn(dev->net, "Error reading PHY_INT_MASK\n"); in smsc75xx_enable_phy_wakeup_interrupts()
1656 smsc75xx_mdio_write_nopm(dev->net, mii->phy_id, PHY_INT_MASK, ret); in smsc75xx_enable_phy_wakeup_interrupts()
1661 static int smsc75xx_link_ok_nopm(struct usbnet *dev) in smsc75xx_link_ok_nopm() argument
1663 struct mii_if_info *mii = &dev->mii; in smsc75xx_link_ok_nopm()
1667 ret = smsc75xx_mdio_read_nopm(dev->net, mii->phy_id, MII_BMSR); in smsc75xx_link_ok_nopm()
1669 netdev_warn(dev->net, "Error reading MII_BMSR\n"); in smsc75xx_link_ok_nopm()
1673 ret = smsc75xx_mdio_read_nopm(dev->net, mii->phy_id, MII_BMSR); in smsc75xx_link_ok_nopm()
1675 netdev_warn(dev->net, "Error reading MII_BMSR\n"); in smsc75xx_link_ok_nopm()
1682 static int smsc75xx_autosuspend(struct usbnet *dev, u32 link_up) in smsc75xx_autosuspend() argument
1686 if (!netif_running(dev->net)) { in smsc75xx_autosuspend()
1688 netdev_dbg(dev->net, "autosuspend entering SUSPEND2\n"); in smsc75xx_autosuspend()
1689 return smsc75xx_enter_suspend2(dev); in smsc75xx_autosuspend()
1694 netdev_dbg(dev->net, "autosuspend entering SUSPEND1\n"); in smsc75xx_autosuspend()
1697 ret = smsc75xx_enable_phy_wakeup_interrupts(dev, in smsc75xx_autosuspend()
1700 netdev_warn(dev->net, "error enabling PHY wakeup ints\n"); in smsc75xx_autosuspend()
1704 netdev_info(dev->net, "entering SUSPEND1 mode\n"); in smsc75xx_autosuspend()
1705 return smsc75xx_enter_suspend1(dev); in smsc75xx_autosuspend()
1709 ret = smsc75xx_enable_phy_wakeup_interrupts(dev, in smsc75xx_autosuspend()
1712 netdev_warn(dev->net, "error enabling PHY wakeup ints\n"); in smsc75xx_autosuspend()
1716 netdev_dbg(dev->net, "autosuspend entering SUSPEND3\n"); in smsc75xx_autosuspend()
1717 return smsc75xx_enter_suspend3(dev); in smsc75xx_autosuspend()
1722 struct usbnet *dev = usb_get_intfdata(intf); in smsc75xx_suspend() local
1723 struct smsc75xx_priv *pdata = (struct smsc75xx_priv *)(dev->data[0]); in smsc75xx_suspend()
1729 netdev_warn(dev->net, "usbnet_suspend error\n"); in smsc75xx_suspend()
1734 netdev_warn(dev->net, "error during last resume\n"); in smsc75xx_suspend()
1739 link_up = smsc75xx_link_ok_nopm(dev); in smsc75xx_suspend()
1742 ret = smsc75xx_autosuspend(dev, link_up); in smsc75xx_suspend()
1752 netdev_info(dev->net, "entering SUSPEND2 mode\n"); in smsc75xx_suspend()
1755 ret = smsc75xx_read_reg_nopm(dev, WUCSR, &val); in smsc75xx_suspend()
1757 netdev_warn(dev->net, "Error reading WUCSR\n"); in smsc75xx_suspend()
1763 ret = smsc75xx_write_reg_nopm(dev, WUCSR, val); in smsc75xx_suspend()
1765 netdev_warn(dev->net, "Error writing WUCSR\n"); in smsc75xx_suspend()
1769 ret = smsc75xx_read_reg_nopm(dev, PMT_CTL, &val); in smsc75xx_suspend()
1771 netdev_warn(dev->net, "Error reading PMT_CTL\n"); in smsc75xx_suspend()
1777 ret = smsc75xx_write_reg_nopm(dev, PMT_CTL, val); in smsc75xx_suspend()
1779 netdev_warn(dev->net, "Error writing PMT_CTL\n"); in smsc75xx_suspend()
1783 ret = smsc75xx_enter_suspend2(dev); in smsc75xx_suspend()
1788 ret = smsc75xx_enable_phy_wakeup_interrupts(dev, in smsc75xx_suspend()
1791 netdev_warn(dev->net, "error enabling PHY wakeup ints\n"); in smsc75xx_suspend()
1799 struct mii_if_info *mii = &dev->mii; in smsc75xx_suspend()
1800 netdev_info(dev->net, "entering SUSPEND1 mode\n"); in smsc75xx_suspend()
1803 ret = smsc75xx_mdio_read_nopm(dev->net, mii->phy_id, in smsc75xx_suspend()
1806 netdev_warn(dev->net, "Error reading PHY_MODE_CTRL_STS\n"); in smsc75xx_suspend()
1812 smsc75xx_mdio_write_nopm(dev->net, mii->phy_id, in smsc75xx_suspend()
1816 ret = smsc75xx_enter_suspend1(dev); in smsc75xx_suspend()
1826 ret = smsc75xx_write_reg_nopm(dev, WUF_CFGX + i * 4, 0); in smsc75xx_suspend()
1828 netdev_warn(dev->net, "Error writing WUF_CFGX\n"); in smsc75xx_suspend()
1835 netdev_info(dev->net, "enabling multicast detection\n"); in smsc75xx_suspend()
1839 ret = smsc75xx_write_wuff(dev, filter++, val, 0x0007); in smsc75xx_suspend()
1841 netdev_warn(dev->net, "Error writing wakeup filter\n"); in smsc75xx_suspend()
1848 netdev_info(dev->net, "enabling ARP detection\n"); in smsc75xx_suspend()
1852 ret = smsc75xx_write_wuff(dev, filter++, val, 0x0003); in smsc75xx_suspend()
1854 netdev_warn(dev->net, "Error writing wakeup filter\n"); in smsc75xx_suspend()
1860 ret = smsc75xx_read_reg_nopm(dev, WUCSR, &val); in smsc75xx_suspend()
1862 netdev_warn(dev->net, "Error reading WUCSR\n"); in smsc75xx_suspend()
1868 ret = smsc75xx_write_reg_nopm(dev, WUCSR, val); in smsc75xx_suspend()
1870 netdev_warn(dev->net, "Error writing WUCSR\n"); in smsc75xx_suspend()
1874 netdev_info(dev->net, "enabling packet match detection\n"); in smsc75xx_suspend()
1875 ret = smsc75xx_read_reg_nopm(dev, WUCSR, &val); in smsc75xx_suspend()
1877 netdev_warn(dev->net, "Error reading WUCSR\n"); in smsc75xx_suspend()
1883 ret = smsc75xx_write_reg_nopm(dev, WUCSR, val); in smsc75xx_suspend()
1885 netdev_warn(dev->net, "Error writing WUCSR\n"); in smsc75xx_suspend()
1889 netdev_info(dev->net, "disabling packet match detection\n"); in smsc75xx_suspend()
1890 ret = smsc75xx_read_reg_nopm(dev, WUCSR, &val); in smsc75xx_suspend()
1892 netdev_warn(dev->net, "Error reading WUCSR\n"); in smsc75xx_suspend()
1898 ret = smsc75xx_write_reg_nopm(dev, WUCSR, val); in smsc75xx_suspend()
1900 netdev_warn(dev->net, "Error writing WUCSR\n"); in smsc75xx_suspend()
1906 ret = smsc75xx_read_reg_nopm(dev, WUCSR, &val); in smsc75xx_suspend()
1908 netdev_warn(dev->net, "Error reading WUCSR\n"); in smsc75xx_suspend()
1914 ret = smsc75xx_write_reg_nopm(dev, WUCSR, val); in smsc75xx_suspend()
1916 netdev_warn(dev->net, "Error writing WUCSR\n"); in smsc75xx_suspend()
1921 netdev_info(dev->net, "enabling PHY wakeup\n"); in smsc75xx_suspend()
1923 ret = smsc75xx_read_reg_nopm(dev, PMT_CTL, &val); in smsc75xx_suspend()
1925 netdev_warn(dev->net, "Error reading PMT_CTL\n"); in smsc75xx_suspend()
1933 ret = smsc75xx_write_reg_nopm(dev, PMT_CTL, val); in smsc75xx_suspend()
1935 netdev_warn(dev->net, "Error writing PMT_CTL\n"); in smsc75xx_suspend()
1941 netdev_info(dev->net, "enabling magic packet wakeup\n"); in smsc75xx_suspend()
1942 ret = smsc75xx_read_reg_nopm(dev, WUCSR, &val); in smsc75xx_suspend()
1944 netdev_warn(dev->net, "Error reading WUCSR\n"); in smsc75xx_suspend()
1951 ret = smsc75xx_write_reg_nopm(dev, WUCSR, val); in smsc75xx_suspend()
1953 netdev_warn(dev->net, "Error writing WUCSR\n"); in smsc75xx_suspend()
1959 netdev_info(dev->net, "enabling broadcast detection\n"); in smsc75xx_suspend()
1960 ret = smsc75xx_read_reg_nopm(dev, WUCSR, &val); in smsc75xx_suspend()
1962 netdev_warn(dev->net, "Error reading WUCSR\n"); in smsc75xx_suspend()
1968 ret = smsc75xx_write_reg_nopm(dev, WUCSR, val); in smsc75xx_suspend()
1970 netdev_warn(dev->net, "Error writing WUCSR\n"); in smsc75xx_suspend()
1976 netdev_info(dev->net, "enabling unicast detection\n"); in smsc75xx_suspend()
1977 ret = smsc75xx_read_reg_nopm(dev, WUCSR, &val); in smsc75xx_suspend()
1979 netdev_warn(dev->net, "Error reading WUCSR\n"); in smsc75xx_suspend()
1985 ret = smsc75xx_write_reg_nopm(dev, WUCSR, val); in smsc75xx_suspend()
1987 netdev_warn(dev->net, "Error writing WUCSR\n"); in smsc75xx_suspend()
1993 ret = smsc75xx_read_reg_nopm(dev, MAC_RX, &val); in smsc75xx_suspend()
1995 netdev_warn(dev->net, "Failed to read MAC_RX: %d\n", ret); in smsc75xx_suspend()
2001 ret = smsc75xx_write_reg_nopm(dev, MAC_RX, val); in smsc75xx_suspend()
2003 netdev_warn(dev->net, "Failed to write MAC_RX: %d\n", ret); in smsc75xx_suspend()
2008 netdev_info(dev->net, "entering SUSPEND0 mode\n"); in smsc75xx_suspend()
2009 ret = smsc75xx_enter_suspend0(dev); in smsc75xx_suspend()
2023 struct usbnet *dev = usb_get_intfdata(intf); in smsc75xx_resume() local
2024 struct smsc75xx_priv *pdata = (struct smsc75xx_priv *)(dev->data[0]); in smsc75xx_resume()
2029 netdev_dbg(dev->net, "resume suspend_flags=0x%02x\n", suspend_flags); in smsc75xx_resume()
2036 ret = smsc75xx_read_reg_nopm(dev, WUCSR, &val); in smsc75xx_resume()
2038 netdev_warn(dev->net, "Error reading WUCSR\n"); in smsc75xx_resume()
2045 ret = smsc75xx_write_reg_nopm(dev, WUCSR, val); in smsc75xx_resume()
2047 netdev_warn(dev->net, "Error writing WUCSR\n"); in smsc75xx_resume()
2052 ret = smsc75xx_read_reg_nopm(dev, PMT_CTL, &val); in smsc75xx_resume()
2054 netdev_warn(dev->net, "Error reading PMT_CTL\n"); in smsc75xx_resume()
2061 ret = smsc75xx_write_reg_nopm(dev, PMT_CTL, val); in smsc75xx_resume()
2063 netdev_warn(dev->net, "Error writing PMT_CTL\n"); in smsc75xx_resume()
2069 netdev_info(dev->net, "resuming from SUSPEND2\n"); in smsc75xx_resume()
2071 ret = smsc75xx_read_reg_nopm(dev, PMT_CTL, &val); in smsc75xx_resume()
2073 netdev_warn(dev->net, "Error reading PMT_CTL\n"); in smsc75xx_resume()
2079 ret = smsc75xx_write_reg_nopm(dev, PMT_CTL, val); in smsc75xx_resume()
2081 netdev_warn(dev->net, "Error writing PMT_CTL\n"); in smsc75xx_resume()
2086 ret = smsc75xx_wait_ready(dev, 1); in smsc75xx_resume()
2088 netdev_warn(dev->net, "device not ready in smsc75xx_resume\n"); in smsc75xx_resume()
2095 static void smsc75xx_rx_csum_offload(struct usbnet *dev, struct sk_buff *skb, in smsc75xx_rx_csum_offload() argument
2098 if (!(dev->net->features & NETIF_F_RXCSUM) || in smsc75xx_rx_csum_offload()
2107 static int smsc75xx_rx_fixup(struct usbnet *dev, struct sk_buff *skb) in smsc75xx_rx_fixup() argument
2110 if (skb->len < dev->net->hard_header_len) in smsc75xx_rx_fixup()
2133 netif_dbg(dev, rx_err, dev->net, in smsc75xx_rx_fixup()
2135 dev->net->stats.rx_errors++; in smsc75xx_rx_fixup()
2136 dev->net->stats.rx_dropped++; in smsc75xx_rx_fixup()
2139 dev->net->stats.rx_crc_errors++; in smsc75xx_rx_fixup()
2141 dev->net->stats.rx_frame_errors++; in smsc75xx_rx_fixup()
2145 netif_dbg(dev, rx_err, dev->net, in smsc75xx_rx_fixup()
2153 smsc75xx_rx_csum_offload(dev, skb, rx_cmd_a, in smsc75xx_rx_fixup()
2164 netdev_warn(dev->net, "Error allocating skb\n"); in smsc75xx_rx_fixup()
2172 smsc75xx_rx_csum_offload(dev, ax_skb, rx_cmd_a, in smsc75xx_rx_fixup()
2178 usbnet_skb_return(dev, ax_skb); in smsc75xx_rx_fixup()
2191 static struct sk_buff *smsc75xx_tx_fixup(struct usbnet *dev, in smsc75xx_tx_fixup() argument
2230 static int smsc75xx_manage_power(struct usbnet *dev, int on) in smsc75xx_manage_power() argument
2232 dev->intf->needs_remote_wakeup = on; in smsc75xx_manage_power()