Lines Matching refs:dev
28 static int sr_read_cmd(struct usbnet *dev, u8 cmd, u16 value, u16 index, in sr_read_cmd() argument
33 err = usbnet_read_cmd(dev, cmd, SR_REQ_RD_REG, value, index, in sr_read_cmd()
41 static int sr_write_cmd(struct usbnet *dev, u8 cmd, u16 value, u16 index, in sr_write_cmd() argument
46 err = usbnet_write_cmd(dev, cmd, SR_REQ_WR_REG, value, index, in sr_write_cmd()
55 sr_write_cmd_async(struct usbnet *dev, u8 cmd, u16 value, u16 index, in sr_write_cmd_async() argument
58 usbnet_write_cmd_async(dev, cmd, SR_REQ_WR_REG, value, index, data, in sr_write_cmd_async()
62 static int sr_rx_fixup(struct usbnet *dev, struct sk_buff *skb) in sr_rx_fixup() argument
67 if (skb->len < dev->net->hard_header_len) in sr_rx_fixup()
79 netdev_err(dev->net, "%s : Bad Header Length\n", in sr_rx_fixup()
84 if ((size > dev->net->mtu + ETH_HLEN + VLAN_HLEN) || in sr_rx_fixup()
86 netdev_err(dev->net, "%s : Bad RX Length %d\n", in sr_rx_fixup()
90 sr_skb = netdev_alloc_skb_ip_align(dev->net, size); in sr_rx_fixup()
96 usbnet_skb_return(dev, sr_skb); in sr_rx_fixup()
102 netdev_err(dev->net, "%s : Bad SKB Length %d\n", __func__, in sr_rx_fixup()
110 static struct sk_buff *sr_tx_fixup(struct usbnet *dev, struct sk_buff *skb, in sr_tx_fixup() argument
119 padlen = ((skb->len + 4) % (dev->maxpacket - 1)) ? 0 : 4; in sr_tx_fixup()
151 static void sr_status(struct usbnet *dev, struct urb *urb) in sr_status() argument
161 if (netif_carrier_ok(dev->net) != link) { in sr_status()
162 usbnet_link_change(dev, link, 1); in sr_status()
163 netdev_dbg(dev->net, "Link Status is: %d\n", link); in sr_status()
169 static inline int sr_set_sw_mii(struct usbnet *dev) in sr_set_sw_mii() argument
173 ret = sr_write_cmd(dev, SR_CMD_SET_SW_MII, 0x0000, 0, 0, NULL); in sr_set_sw_mii()
175 netdev_err(dev->net, "Failed to enable software MII access\n"); in sr_set_sw_mii()
179 static inline int sr_set_hw_mii(struct usbnet *dev) in sr_set_hw_mii() argument
183 ret = sr_write_cmd(dev, SR_CMD_SET_HW_MII, 0x0000, 0, 0, NULL); in sr_set_hw_mii()
185 netdev_err(dev->net, "Failed to enable hardware MII access\n"); in sr_set_hw_mii()
189 static inline int sr_get_phy_addr(struct usbnet *dev) in sr_get_phy_addr() argument
194 ret = sr_read_cmd(dev, SR_CMD_READ_PHY_ID, 0, 0, 2, buf); in sr_get_phy_addr()
196 netdev_err(dev->net, "%s : Error reading PHYID register:%02x\n", in sr_get_phy_addr()
200 netdev_dbg(dev->net, "%s : returning 0x%04x\n", __func__, in sr_get_phy_addr()
209 static int sr_sw_reset(struct usbnet *dev, u8 flags) in sr_sw_reset() argument
213 ret = sr_write_cmd(dev, SR_CMD_SW_RESET, flags, 0, 0, NULL); in sr_sw_reset()
215 netdev_err(dev->net, "Failed to send software reset:%02x\n", in sr_sw_reset()
221 static u16 sr_read_rx_ctl(struct usbnet *dev) in sr_read_rx_ctl() argument
226 ret = sr_read_cmd(dev, SR_CMD_READ_RX_CTL, 0, 0, 2, &v); in sr_read_rx_ctl()
228 netdev_err(dev->net, "Error reading RX_CTL register:%02x\n", in sr_read_rx_ctl()
238 static int sr_write_rx_ctl(struct usbnet *dev, u16 mode) in sr_write_rx_ctl() argument
242 netdev_dbg(dev->net, "%s : mode = 0x%04x\n", __func__, mode); in sr_write_rx_ctl()
243 ret = sr_write_cmd(dev, SR_CMD_WRITE_RX_CTL, mode, 0, 0, NULL); in sr_write_rx_ctl()
245 netdev_err(dev->net, in sr_write_rx_ctl()
252 static u16 sr_read_medium_status(struct usbnet *dev) in sr_read_medium_status() argument
257 ret = sr_read_cmd(dev, SR_CMD_READ_MEDIUM_STATUS, 0, 0, 2, &v); in sr_read_medium_status()
259 netdev_err(dev->net, in sr_read_medium_status()
267 static int sr_write_medium_mode(struct usbnet *dev, u16 mode) in sr_write_medium_mode() argument
271 netdev_dbg(dev->net, "%s : mode = 0x%04x\n", __func__, mode); in sr_write_medium_mode()
272 ret = sr_write_cmd(dev, SR_CMD_WRITE_MEDIUM_MODE, mode, 0, 0, NULL); in sr_write_medium_mode()
274 netdev_err(dev->net, in sr_write_medium_mode()
280 static int sr_write_gpio(struct usbnet *dev, u16 value, int sleep) in sr_write_gpio() argument
284 netdev_dbg(dev->net, "%s : value = 0x%04x\n", __func__, value); in sr_write_gpio()
285 ret = sr_write_cmd(dev, SR_CMD_WRITE_GPIOS, value, 0, 0, NULL); in sr_write_gpio()
287 netdev_err(dev->net, "Failed to write GPIO value 0x%04x:%02x\n", in sr_write_gpio()
298 struct usbnet *dev = netdev_priv(net); in sr_set_multicast() local
299 struct sr_data *data = (struct sr_data *)&dev->data; in sr_set_multicast()
327 sr_write_cmd_async(dev, SR_CMD_WRITE_MULTI_FILTER, 0, 0, in sr_set_multicast()
333 sr_write_cmd_async(dev, SR_CMD_WRITE_RX_CTL, rx_ctl, 0, 0, NULL); in sr_set_multicast()
338 struct usbnet *dev = netdev_priv(net); in sr_mdio_read() local
341 mutex_lock(&dev->phy_mutex); in sr_mdio_read()
342 sr_set_sw_mii(dev); in sr_mdio_read()
343 sr_read_cmd(dev, SR_CMD_READ_MII_REG, phy_id, (__u16)loc, 2, &res); in sr_mdio_read()
344 sr_set_hw_mii(dev); in sr_mdio_read()
345 mutex_unlock(&dev->phy_mutex); in sr_mdio_read()
347 netdev_dbg(dev->net, in sr_mdio_read()
357 struct usbnet *dev = netdev_priv(net); in sr_mdio_write() local
360 netdev_dbg(dev->net, in sr_mdio_write()
363 mutex_lock(&dev->phy_mutex); in sr_mdio_write()
364 sr_set_sw_mii(dev); in sr_mdio_write()
365 sr_write_cmd(dev, SR_CMD_WRITE_MII_REG, phy_id, (__u16)loc, 2, &res); in sr_mdio_write()
366 sr_set_hw_mii(dev); in sr_mdio_write()
367 mutex_unlock(&dev->phy_mutex); in sr_mdio_write()
371 static u32 sr_get_phyid(struct usbnet *dev) in sr_get_phyid() argument
379 phy_reg = sr_mdio_read(dev->net, dev->mii.phy_id, MII_PHYSID1); in sr_get_phyid()
390 phy_reg = sr_mdio_read(dev->net, dev->mii.phy_id, MII_PHYSID2); in sr_get_phyid()
402 struct usbnet *dev = netdev_priv(net); in sr_get_wol() local
405 if (sr_read_cmd(dev, SR_CMD_READ_MONITOR_MODE, 0, 0, 1, &opt) < 0) { in sr_get_wol()
421 struct usbnet *dev = netdev_priv(net); in sr_set_wol() local
429 if (sr_write_cmd(dev, SR_CMD_WRITE_MONITOR_MODE, in sr_set_wol()
438 struct usbnet *dev = netdev_priv(net); in sr_get_eeprom_len() local
439 struct sr_data *data = (struct sr_data *)&dev->data; in sr_get_eeprom_len()
447 struct usbnet *dev = netdev_priv(net); in sr_get_eeprom() local
462 ret = sr_read_cmd(dev, SR_CMD_READ_EEPROM, eeprom->offset + i, in sr_get_eeprom()
481 struct usbnet *dev = netdev_priv(net); in sr_get_link() local
483 return mii_link_ok(&dev->mii); in sr_get_link()
488 struct usbnet *dev = netdev_priv(net); in sr_ioctl() local
490 return generic_mii_ioctl(&dev->mii, if_mii(rq), cmd, NULL); in sr_ioctl()
495 struct usbnet *dev = netdev_priv(net); in sr_set_mac_address() local
496 struct sr_data *data = (struct sr_data *)&dev->data; in sr_set_mac_address()
512 sr_write_cmd_async(dev, SR_CMD_WRITE_NODE_ID, 0, 0, ETH_ALEN, in sr_set_mac_address()
532 static int sr9800_link_reset(struct usbnet *dev) in sr9800_link_reset() argument
537 mii_check_media(&dev->mii, 1, 1); in sr9800_link_reset()
538 mii_ethtool_gset(&dev->mii, &ecmd); in sr9800_link_reset()
547 netdev_dbg(dev->net, "%s : speed: %u duplex: %d mode: 0x%04x\n", in sr9800_link_reset()
550 sr_write_medium_mode(dev, mode); in sr9800_link_reset()
556 static int sr9800_set_default_mode(struct usbnet *dev) in sr9800_set_default_mode() argument
561 sr_mdio_write(dev->net, dev->mii.phy_id, MII_BMCR, BMCR_RESET); in sr9800_set_default_mode()
562 sr_mdio_write(dev->net, dev->mii.phy_id, MII_ADVERTISE, in sr9800_set_default_mode()
564 mii_nway_restart(&dev->mii); in sr9800_set_default_mode()
566 ret = sr_write_medium_mode(dev, SR9800_MEDIUM_DEFAULT); in sr9800_set_default_mode()
570 ret = sr_write_cmd(dev, SR_CMD_WRITE_IPG012, in sr9800_set_default_mode()
574 netdev_dbg(dev->net, "Write IPG,IPG1,IPG2 failed: %d\n", ret); in sr9800_set_default_mode()
579 ret = sr_write_rx_ctl(dev, SR_DEFAULT_RX_CTL); in sr9800_set_default_mode()
583 rx_ctl = sr_read_rx_ctl(dev); in sr9800_set_default_mode()
584 netdev_dbg(dev->net, "RX_CTL is 0x%04x after all initializations\n", in sr9800_set_default_mode()
587 rx_ctl = sr_read_medium_status(dev); in sr9800_set_default_mode()
588 netdev_dbg(dev->net, "Medium Status:0x%04x after all initializations\n", in sr9800_set_default_mode()
596 static int sr9800_reset(struct usbnet *dev) in sr9800_reset() argument
598 struct sr_data *data = (struct sr_data *)&dev->data; in sr9800_reset()
602 ret = sr_write_gpio(dev, in sr9800_reset()
607 embd_phy = ((sr_get_phy_addr(dev) & 0x1f) == 0x10 ? 1 : 0); in sr9800_reset()
609 ret = sr_write_cmd(dev, SR_CMD_SW_PHY_SELECT, embd_phy, 0, 0, NULL); in sr9800_reset()
611 netdev_dbg(dev->net, "Select PHY #1 failed: %d\n", ret); in sr9800_reset()
615 ret = sr_sw_reset(dev, SR_SWRESET_IPPD | SR_SWRESET_PRL); in sr9800_reset()
621 ret = sr_sw_reset(dev, SR_SWRESET_CLEAR); in sr9800_reset()
628 ret = sr_sw_reset(dev, SR_SWRESET_IPRL); in sr9800_reset()
632 ret = sr_sw_reset(dev, SR_SWRESET_PRTE); in sr9800_reset()
638 rx_ctl = sr_read_rx_ctl(dev); in sr9800_reset()
639 netdev_dbg(dev->net, "RX_CTL is 0x%04x after software reset\n", rx_ctl); in sr9800_reset()
640 ret = sr_write_rx_ctl(dev, 0x0000); in sr9800_reset()
644 rx_ctl = sr_read_rx_ctl(dev); in sr9800_reset()
645 netdev_dbg(dev->net, "RX_CTL is 0x%04x setting to 0x0000\n", rx_ctl); in sr9800_reset()
647 ret = sr_sw_reset(dev, SR_SWRESET_PRL); in sr9800_reset()
653 ret = sr_sw_reset(dev, SR_SWRESET_IPRL | SR_SWRESET_PRL); in sr9800_reset()
659 ret = sr9800_set_default_mode(dev); in sr9800_reset()
664 memcpy(data->mac_addr, dev->net->dev_addr, ETH_ALEN); in sr9800_reset()
665 ret = sr_write_cmd(dev, SR_CMD_WRITE_NODE_ID, 0, 0, ETH_ALEN, in sr9800_reset()
688 static int sr9800_phy_powerup(struct usbnet *dev) in sr9800_phy_powerup() argument
693 ret = sr_sw_reset(dev, SR_SWRESET_IPPD | SR_SWRESET_IPRL); in sr9800_phy_powerup()
695 netdev_err(dev->net, "Failed to power down PHY : %d\n", ret); in sr9800_phy_powerup()
701 ret = sr_sw_reset(dev, SR_SWRESET_IPRL); in sr9800_phy_powerup()
703 netdev_err(dev->net, "Failed to reset PHY: %d\n", ret); in sr9800_phy_powerup()
709 ret = sr_sw_reset(dev, SR_SWRESET_CLEAR); in sr9800_phy_powerup()
711 netdev_err(dev->net, "Failed to power up PHY: %d\n", ret); in sr9800_phy_powerup()
717 ret = sr_sw_reset(dev, SR_SWRESET_IPRL); in sr9800_phy_powerup()
719 netdev_err(dev->net, "Failed to reset PHY: %d\n", ret); in sr9800_phy_powerup()
726 static int sr9800_bind(struct usbnet *dev, struct usb_interface *intf) in sr9800_bind() argument
728 struct sr_data *data = (struct sr_data *)&dev->data; in sr9800_bind()
736 usbnet_get_endpoints(dev, intf); in sr9800_bind()
747 ret = sr_write_cmd(dev, SR_CMD_LED_MUX, led01_mux, led23_mux, 0, NULL); in sr9800_bind()
749 netdev_err(dev->net, "set LINK LED failed : %d\n", ret); in sr9800_bind()
754 ret = sr_read_cmd(dev, SR_CMD_READ_NODE_ID, 0, 0, ETH_ALEN, in sr9800_bind()
755 dev->net->dev_addr); in sr9800_bind()
757 netdev_dbg(dev->net, "Failed to read MAC address: %d\n", ret); in sr9800_bind()
760 netdev_dbg(dev->net, "mac addr : %pM\n", dev->net->dev_addr); in sr9800_bind()
763 dev->mii.dev = dev->net; in sr9800_bind()
764 dev->mii.mdio_read = sr_mdio_read; in sr9800_bind()
765 dev->mii.mdio_write = sr_mdio_write; in sr9800_bind()
766 dev->mii.phy_id_mask = 0x1f; in sr9800_bind()
767 dev->mii.reg_num_mask = 0x1f; in sr9800_bind()
768 dev->mii.phy_id = sr_get_phy_addr(dev); in sr9800_bind()
770 dev->net->netdev_ops = &sr9800_netdev_ops; in sr9800_bind()
771 dev->net->ethtool_ops = &sr9800_ethtool_ops; in sr9800_bind()
773 embd_phy = ((dev->mii.phy_id & 0x1f) == 0x10 ? 1 : 0); in sr9800_bind()
775 ret = sr_write_cmd(dev, SR_CMD_SW_PHY_SELECT, embd_phy, 0, 0, NULL); in sr9800_bind()
777 netdev_dbg(dev->net, "Select PHY #1 failed: %d\n", ret); in sr9800_bind()
782 ret = sr9800_phy_powerup(dev); in sr9800_bind()
786 rx_ctl = sr_read_rx_ctl(dev); in sr9800_bind()
787 netdev_dbg(dev->net, "RX_CTL is 0x%04x after software reset\n", rx_ctl); in sr9800_bind()
788 ret = sr_write_rx_ctl(dev, 0x0000); in sr9800_bind()
792 rx_ctl = sr_read_rx_ctl(dev); in sr9800_bind()
793 netdev_dbg(dev->net, "RX_CTL is 0x%04x setting to 0x0000\n", rx_ctl); in sr9800_bind()
796 phyid = sr_get_phyid(dev); in sr9800_bind()
797 netdev_dbg(dev->net, "PHYID=0x%08x\n", phyid); in sr9800_bind()
800 ret = sr9800_set_default_mode(dev); in sr9800_bind()
804 if (dev->udev->speed == USB_SPEED_HIGH) { in sr9800_bind()
805 ret = sr_write_cmd(dev, SR_CMD_BULKIN_SIZE, in sr9800_bind()
810 netdev_err(dev->net, "Reset RX_CTL failed: %d\n", ret); in sr9800_bind()
813 dev->rx_urb_size = in sr9800_bind()
816 ret = sr_write_cmd(dev, SR_CMD_BULKIN_SIZE, in sr9800_bind()
821 netdev_err(dev->net, "Reset RX_CTL failed: %d\n", ret); in sr9800_bind()
824 dev->rx_urb_size = in sr9800_bind()
827 netdev_dbg(dev->net, "%s : setting rx_urb_size with : %zu\n", __func__, in sr9800_bind()
828 dev->rx_urb_size); in sr9800_bind()