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()
473 struct usbnet *dev = netdev_priv(net); in sr_get_drvinfo() local
474 struct sr_data *data = (struct sr_data *)&dev->data; in sr_get_drvinfo()
485 struct usbnet *dev = netdev_priv(net); in sr_get_link() local
487 return mii_link_ok(&dev->mii); in sr_get_link()
492 struct usbnet *dev = netdev_priv(net); in sr_ioctl() local
494 return generic_mii_ioctl(&dev->mii, if_mii(rq), cmd, NULL); in sr_ioctl()
499 struct usbnet *dev = netdev_priv(net); in sr_set_mac_address() local
500 struct sr_data *data = (struct sr_data *)&dev->data; in sr_set_mac_address()
516 sr_write_cmd_async(dev, SR_CMD_WRITE_NODE_ID, 0, 0, ETH_ALEN, in sr_set_mac_address()
536 static int sr9800_link_reset(struct usbnet *dev) in sr9800_link_reset() argument
541 mii_check_media(&dev->mii, 1, 1); in sr9800_link_reset()
542 mii_ethtool_gset(&dev->mii, &ecmd); in sr9800_link_reset()
551 netdev_dbg(dev->net, "%s : speed: %u duplex: %d mode: 0x%04x\n", in sr9800_link_reset()
554 sr_write_medium_mode(dev, mode); in sr9800_link_reset()
560 static int sr9800_set_default_mode(struct usbnet *dev) in sr9800_set_default_mode() argument
565 sr_mdio_write(dev->net, dev->mii.phy_id, MII_BMCR, BMCR_RESET); in sr9800_set_default_mode()
566 sr_mdio_write(dev->net, dev->mii.phy_id, MII_ADVERTISE, in sr9800_set_default_mode()
568 mii_nway_restart(&dev->mii); in sr9800_set_default_mode()
570 ret = sr_write_medium_mode(dev, SR9800_MEDIUM_DEFAULT); in sr9800_set_default_mode()
574 ret = sr_write_cmd(dev, SR_CMD_WRITE_IPG012, in sr9800_set_default_mode()
578 netdev_dbg(dev->net, "Write IPG,IPG1,IPG2 failed: %d\n", ret); in sr9800_set_default_mode()
583 ret = sr_write_rx_ctl(dev, SR_DEFAULT_RX_CTL); in sr9800_set_default_mode()
587 rx_ctl = sr_read_rx_ctl(dev); in sr9800_set_default_mode()
588 netdev_dbg(dev->net, "RX_CTL is 0x%04x after all initializations\n", in sr9800_set_default_mode()
591 rx_ctl = sr_read_medium_status(dev); in sr9800_set_default_mode()
592 netdev_dbg(dev->net, "Medium Status:0x%04x after all initializations\n", in sr9800_set_default_mode()
600 static int sr9800_reset(struct usbnet *dev) in sr9800_reset() argument
602 struct sr_data *data = (struct sr_data *)&dev->data; in sr9800_reset()
606 ret = sr_write_gpio(dev, in sr9800_reset()
611 embd_phy = ((sr_get_phy_addr(dev) & 0x1f) == 0x10 ? 1 : 0); in sr9800_reset()
613 ret = sr_write_cmd(dev, SR_CMD_SW_PHY_SELECT, embd_phy, 0, 0, NULL); in sr9800_reset()
615 netdev_dbg(dev->net, "Select PHY #1 failed: %d\n", ret); in sr9800_reset()
619 ret = sr_sw_reset(dev, SR_SWRESET_IPPD | SR_SWRESET_PRL); in sr9800_reset()
625 ret = sr_sw_reset(dev, SR_SWRESET_CLEAR); in sr9800_reset()
632 ret = sr_sw_reset(dev, SR_SWRESET_IPRL); in sr9800_reset()
636 ret = sr_sw_reset(dev, SR_SWRESET_PRTE); in sr9800_reset()
642 rx_ctl = sr_read_rx_ctl(dev); in sr9800_reset()
643 netdev_dbg(dev->net, "RX_CTL is 0x%04x after software reset\n", rx_ctl); in sr9800_reset()
644 ret = sr_write_rx_ctl(dev, 0x0000); in sr9800_reset()
648 rx_ctl = sr_read_rx_ctl(dev); in sr9800_reset()
649 netdev_dbg(dev->net, "RX_CTL is 0x%04x setting to 0x0000\n", rx_ctl); in sr9800_reset()
651 ret = sr_sw_reset(dev, SR_SWRESET_PRL); in sr9800_reset()
657 ret = sr_sw_reset(dev, SR_SWRESET_IPRL | SR_SWRESET_PRL); in sr9800_reset()
663 ret = sr9800_set_default_mode(dev); in sr9800_reset()
668 memcpy(data->mac_addr, dev->net->dev_addr, ETH_ALEN); in sr9800_reset()
669 ret = sr_write_cmd(dev, SR_CMD_WRITE_NODE_ID, 0, 0, ETH_ALEN, in sr9800_reset()
692 static int sr9800_phy_powerup(struct usbnet *dev) in sr9800_phy_powerup() argument
697 ret = sr_sw_reset(dev, SR_SWRESET_IPPD | SR_SWRESET_IPRL); in sr9800_phy_powerup()
699 netdev_err(dev->net, "Failed to power down PHY : %d\n", ret); in sr9800_phy_powerup()
705 ret = sr_sw_reset(dev, SR_SWRESET_IPRL); in sr9800_phy_powerup()
707 netdev_err(dev->net, "Failed to reset PHY: %d\n", ret); in sr9800_phy_powerup()
713 ret = sr_sw_reset(dev, SR_SWRESET_CLEAR); in sr9800_phy_powerup()
715 netdev_err(dev->net, "Failed to power up PHY: %d\n", ret); in sr9800_phy_powerup()
721 ret = sr_sw_reset(dev, SR_SWRESET_IPRL); in sr9800_phy_powerup()
723 netdev_err(dev->net, "Failed to reset PHY: %d\n", ret); in sr9800_phy_powerup()
730 static int sr9800_bind(struct usbnet *dev, struct usb_interface *intf) in sr9800_bind() argument
732 struct sr_data *data = (struct sr_data *)&dev->data; in sr9800_bind()
740 usbnet_get_endpoints(dev, intf); in sr9800_bind()
751 ret = sr_write_cmd(dev, SR_CMD_LED_MUX, led01_mux, led23_mux, 0, NULL); in sr9800_bind()
753 netdev_err(dev->net, "set LINK LED failed : %d\n", ret); in sr9800_bind()
758 ret = sr_read_cmd(dev, SR_CMD_READ_NODE_ID, 0, 0, ETH_ALEN, in sr9800_bind()
759 dev->net->dev_addr); in sr9800_bind()
761 netdev_dbg(dev->net, "Failed to read MAC address: %d\n", ret); in sr9800_bind()
764 netdev_dbg(dev->net, "mac addr : %pM\n", dev->net->dev_addr); in sr9800_bind()
767 dev->mii.dev = dev->net; in sr9800_bind()
768 dev->mii.mdio_read = sr_mdio_read; in sr9800_bind()
769 dev->mii.mdio_write = sr_mdio_write; in sr9800_bind()
770 dev->mii.phy_id_mask = 0x1f; in sr9800_bind()
771 dev->mii.reg_num_mask = 0x1f; in sr9800_bind()
772 dev->mii.phy_id = sr_get_phy_addr(dev); in sr9800_bind()
774 dev->net->netdev_ops = &sr9800_netdev_ops; in sr9800_bind()
775 dev->net->ethtool_ops = &sr9800_ethtool_ops; in sr9800_bind()
777 embd_phy = ((dev->mii.phy_id & 0x1f) == 0x10 ? 1 : 0); in sr9800_bind()
779 ret = sr_write_cmd(dev, SR_CMD_SW_PHY_SELECT, embd_phy, 0, 0, NULL); in sr9800_bind()
781 netdev_dbg(dev->net, "Select PHY #1 failed: %d\n", ret); in sr9800_bind()
786 ret = sr9800_phy_powerup(dev); in sr9800_bind()
790 rx_ctl = sr_read_rx_ctl(dev); in sr9800_bind()
791 netdev_dbg(dev->net, "RX_CTL is 0x%04x after software reset\n", rx_ctl); in sr9800_bind()
792 ret = sr_write_rx_ctl(dev, 0x0000); in sr9800_bind()
796 rx_ctl = sr_read_rx_ctl(dev); in sr9800_bind()
797 netdev_dbg(dev->net, "RX_CTL is 0x%04x setting to 0x0000\n", rx_ctl); in sr9800_bind()
800 phyid = sr_get_phyid(dev); in sr9800_bind()
801 netdev_dbg(dev->net, "PHYID=0x%08x\n", phyid); in sr9800_bind()
804 ret = sr9800_set_default_mode(dev); in sr9800_bind()
808 if (dev->udev->speed == USB_SPEED_HIGH) { in sr9800_bind()
809 ret = sr_write_cmd(dev, SR_CMD_BULKIN_SIZE, in sr9800_bind()
814 netdev_err(dev->net, "Reset RX_CTL failed: %d\n", ret); in sr9800_bind()
817 dev->rx_urb_size = in sr9800_bind()
820 ret = sr_write_cmd(dev, SR_CMD_BULKIN_SIZE, in sr9800_bind()
825 netdev_err(dev->net, "Reset RX_CTL failed: %d\n", ret); in sr9800_bind()
828 dev->rx_urb_size = in sr9800_bind()
831 netdev_dbg(dev->net, "%s : setting rx_urb_size with : %zu\n", __func__, in sr9800_bind()
832 dev->rx_urb_size); in sr9800_bind()