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
120 padlen = ((skb->len + 4) % (dev->maxpacket - 1)) ? 0 : 4; in sr_tx_fixup()
150 static void sr_status(struct usbnet *dev, struct urb *urb) in sr_status() argument
160 if (netif_carrier_ok(dev->net) != link) { in sr_status()
161 usbnet_link_change(dev, link, 1); in sr_status()
162 netdev_dbg(dev->net, "Link Status is: %d\n", link); in sr_status()
168 static inline int sr_set_sw_mii(struct usbnet *dev) in sr_set_sw_mii() argument
172 ret = sr_write_cmd(dev, SR_CMD_SET_SW_MII, 0x0000, 0, 0, NULL); in sr_set_sw_mii()
174 netdev_err(dev->net, "Failed to enable software MII access\n"); in sr_set_sw_mii()
178 static inline int sr_set_hw_mii(struct usbnet *dev) in sr_set_hw_mii() argument
182 ret = sr_write_cmd(dev, SR_CMD_SET_HW_MII, 0x0000, 0, 0, NULL); in sr_set_hw_mii()
184 netdev_err(dev->net, "Failed to enable hardware MII access\n"); in sr_set_hw_mii()
188 static inline int sr_get_phy_addr(struct usbnet *dev) in sr_get_phy_addr() argument
193 ret = sr_read_cmd(dev, SR_CMD_READ_PHY_ID, 0, 0, 2, buf); in sr_get_phy_addr()
195 netdev_err(dev->net, "%s : Error reading PHYID register:%02x\n", in sr_get_phy_addr()
199 netdev_dbg(dev->net, "%s : returning 0x%04x\n", __func__, in sr_get_phy_addr()
208 static int sr_sw_reset(struct usbnet *dev, u8 flags) in sr_sw_reset() argument
212 ret = sr_write_cmd(dev, SR_CMD_SW_RESET, flags, 0, 0, NULL); in sr_sw_reset()
214 netdev_err(dev->net, "Failed to send software reset:%02x\n", in sr_sw_reset()
220 static u16 sr_read_rx_ctl(struct usbnet *dev) in sr_read_rx_ctl() argument
225 ret = sr_read_cmd(dev, SR_CMD_READ_RX_CTL, 0, 0, 2, &v); in sr_read_rx_ctl()
227 netdev_err(dev->net, "Error reading RX_CTL register:%02x\n", in sr_read_rx_ctl()
237 static int sr_write_rx_ctl(struct usbnet *dev, u16 mode) in sr_write_rx_ctl() argument
241 netdev_dbg(dev->net, "%s : mode = 0x%04x\n", __func__, mode); in sr_write_rx_ctl()
242 ret = sr_write_cmd(dev, SR_CMD_WRITE_RX_CTL, mode, 0, 0, NULL); in sr_write_rx_ctl()
244 netdev_err(dev->net, in sr_write_rx_ctl()
251 static u16 sr_read_medium_status(struct usbnet *dev) in sr_read_medium_status() argument
256 ret = sr_read_cmd(dev, SR_CMD_READ_MEDIUM_STATUS, 0, 0, 2, &v); in sr_read_medium_status()
258 netdev_err(dev->net, in sr_read_medium_status()
266 static int sr_write_medium_mode(struct usbnet *dev, u16 mode) in sr_write_medium_mode() argument
270 netdev_dbg(dev->net, "%s : mode = 0x%04x\n", __func__, mode); in sr_write_medium_mode()
271 ret = sr_write_cmd(dev, SR_CMD_WRITE_MEDIUM_MODE, mode, 0, 0, NULL); in sr_write_medium_mode()
273 netdev_err(dev->net, in sr_write_medium_mode()
279 static int sr_write_gpio(struct usbnet *dev, u16 value, int sleep) in sr_write_gpio() argument
283 netdev_dbg(dev->net, "%s : value = 0x%04x\n", __func__, value); in sr_write_gpio()
284 ret = sr_write_cmd(dev, SR_CMD_WRITE_GPIOS, value, 0, 0, NULL); in sr_write_gpio()
286 netdev_err(dev->net, "Failed to write GPIO value 0x%04x:%02x\n", in sr_write_gpio()
297 struct usbnet *dev = netdev_priv(net); in sr_set_multicast() local
298 struct sr_data *data = (struct sr_data *)&dev->data; in sr_set_multicast()
326 sr_write_cmd_async(dev, SR_CMD_WRITE_MULTI_FILTER, 0, 0, in sr_set_multicast()
332 sr_write_cmd_async(dev, SR_CMD_WRITE_RX_CTL, rx_ctl, 0, 0, NULL); in sr_set_multicast()
337 struct usbnet *dev = netdev_priv(net); in sr_mdio_read() local
340 mutex_lock(&dev->phy_mutex); in sr_mdio_read()
341 sr_set_sw_mii(dev); in sr_mdio_read()
342 sr_read_cmd(dev, SR_CMD_READ_MII_REG, phy_id, (__u16)loc, 2, &res); in sr_mdio_read()
343 sr_set_hw_mii(dev); in sr_mdio_read()
344 mutex_unlock(&dev->phy_mutex); in sr_mdio_read()
346 netdev_dbg(dev->net, in sr_mdio_read()
356 struct usbnet *dev = netdev_priv(net); in sr_mdio_write() local
359 netdev_dbg(dev->net, in sr_mdio_write()
362 mutex_lock(&dev->phy_mutex); in sr_mdio_write()
363 sr_set_sw_mii(dev); in sr_mdio_write()
364 sr_write_cmd(dev, SR_CMD_WRITE_MII_REG, phy_id, (__u16)loc, 2, &res); in sr_mdio_write()
365 sr_set_hw_mii(dev); in sr_mdio_write()
366 mutex_unlock(&dev->phy_mutex); in sr_mdio_write()
370 static u32 sr_get_phyid(struct usbnet *dev) in sr_get_phyid() argument
378 phy_reg = sr_mdio_read(dev->net, dev->mii.phy_id, MII_PHYSID1); in sr_get_phyid()
389 phy_reg = sr_mdio_read(dev->net, dev->mii.phy_id, MII_PHYSID2); in sr_get_phyid()
401 struct usbnet *dev = netdev_priv(net); in sr_get_wol() local
404 if (sr_read_cmd(dev, SR_CMD_READ_MONITOR_MODE, 0, 0, 1, &opt) < 0) { in sr_get_wol()
420 struct usbnet *dev = netdev_priv(net); in sr_set_wol() local
431 if (sr_write_cmd(dev, SR_CMD_WRITE_MONITOR_MODE, in sr_set_wol()
440 struct usbnet *dev = netdev_priv(net); in sr_get_eeprom_len() local
441 struct sr_data *data = (struct sr_data *)&dev->data; in sr_get_eeprom_len()
449 struct usbnet *dev = netdev_priv(net); in sr_get_eeprom() local
464 ret = sr_read_cmd(dev, SR_CMD_READ_EEPROM, eeprom->offset + i, in sr_get_eeprom()
483 struct usbnet *dev = netdev_priv(net); in sr_get_link() local
485 return mii_link_ok(&dev->mii); in sr_get_link()
490 struct usbnet *dev = netdev_priv(net); in sr_ioctl() local
492 return generic_mii_ioctl(&dev->mii, if_mii(rq), cmd, NULL); in sr_ioctl()
497 struct usbnet *dev = netdev_priv(net); in sr_set_mac_address() local
498 struct sr_data *data = (struct sr_data *)&dev->data; in sr_set_mac_address()
514 sr_write_cmd_async(dev, SR_CMD_WRITE_NODE_ID, 0, 0, ETH_ALEN, in sr_set_mac_address()
534 static int sr9800_link_reset(struct usbnet *dev) in sr9800_link_reset() argument
539 mii_check_media(&dev->mii, 1, 1); in sr9800_link_reset()
540 mii_ethtool_gset(&dev->mii, &ecmd); in sr9800_link_reset()
549 netdev_dbg(dev->net, "%s : speed: %u duplex: %d mode: 0x%04x\n", in sr9800_link_reset()
552 sr_write_medium_mode(dev, mode); in sr9800_link_reset()
558 static int sr9800_set_default_mode(struct usbnet *dev) in sr9800_set_default_mode() argument
563 sr_mdio_write(dev->net, dev->mii.phy_id, MII_BMCR, BMCR_RESET); in sr9800_set_default_mode()
564 sr_mdio_write(dev->net, dev->mii.phy_id, MII_ADVERTISE, in sr9800_set_default_mode()
566 mii_nway_restart(&dev->mii); in sr9800_set_default_mode()
568 ret = sr_write_medium_mode(dev, SR9800_MEDIUM_DEFAULT); in sr9800_set_default_mode()
572 ret = sr_write_cmd(dev, SR_CMD_WRITE_IPG012, in sr9800_set_default_mode()
576 netdev_dbg(dev->net, "Write IPG,IPG1,IPG2 failed: %d\n", ret); in sr9800_set_default_mode()
581 ret = sr_write_rx_ctl(dev, SR_DEFAULT_RX_CTL); in sr9800_set_default_mode()
585 rx_ctl = sr_read_rx_ctl(dev); in sr9800_set_default_mode()
586 netdev_dbg(dev->net, "RX_CTL is 0x%04x after all initializations\n", in sr9800_set_default_mode()
589 rx_ctl = sr_read_medium_status(dev); in sr9800_set_default_mode()
590 netdev_dbg(dev->net, "Medium Status:0x%04x after all initializations\n", in sr9800_set_default_mode()
598 static int sr9800_reset(struct usbnet *dev) in sr9800_reset() argument
600 struct sr_data *data = (struct sr_data *)&dev->data; in sr9800_reset()
604 ret = sr_write_gpio(dev, in sr9800_reset()
609 embd_phy = ((sr_get_phy_addr(dev) & 0x1f) == 0x10 ? 1 : 0); in sr9800_reset()
611 ret = sr_write_cmd(dev, SR_CMD_SW_PHY_SELECT, embd_phy, 0, 0, NULL); in sr9800_reset()
613 netdev_dbg(dev->net, "Select PHY #1 failed: %d\n", ret); in sr9800_reset()
617 ret = sr_sw_reset(dev, SR_SWRESET_IPPD | SR_SWRESET_PRL); in sr9800_reset()
623 ret = sr_sw_reset(dev, SR_SWRESET_CLEAR); in sr9800_reset()
630 ret = sr_sw_reset(dev, SR_SWRESET_IPRL); in sr9800_reset()
634 ret = sr_sw_reset(dev, SR_SWRESET_PRTE); in sr9800_reset()
640 rx_ctl = sr_read_rx_ctl(dev); in sr9800_reset()
641 netdev_dbg(dev->net, "RX_CTL is 0x%04x after software reset\n", rx_ctl); in sr9800_reset()
642 ret = sr_write_rx_ctl(dev, 0x0000); in sr9800_reset()
646 rx_ctl = sr_read_rx_ctl(dev); in sr9800_reset()
647 netdev_dbg(dev->net, "RX_CTL is 0x%04x setting to 0x0000\n", rx_ctl); in sr9800_reset()
649 ret = sr_sw_reset(dev, SR_SWRESET_PRL); in sr9800_reset()
655 ret = sr_sw_reset(dev, SR_SWRESET_IPRL | SR_SWRESET_PRL); in sr9800_reset()
661 ret = sr9800_set_default_mode(dev); in sr9800_reset()
666 memcpy(data->mac_addr, dev->net->dev_addr, ETH_ALEN); in sr9800_reset()
667 ret = sr_write_cmd(dev, SR_CMD_WRITE_NODE_ID, 0, 0, ETH_ALEN, in sr9800_reset()
691 static int sr9800_phy_powerup(struct usbnet *dev) in sr9800_phy_powerup() argument
696 ret = sr_sw_reset(dev, SR_SWRESET_IPPD | SR_SWRESET_IPRL); in sr9800_phy_powerup()
698 netdev_err(dev->net, "Failed to power down PHY : %d\n", ret); in sr9800_phy_powerup()
704 ret = sr_sw_reset(dev, SR_SWRESET_IPRL); in sr9800_phy_powerup()
706 netdev_err(dev->net, "Failed to reset PHY: %d\n", ret); in sr9800_phy_powerup()
712 ret = sr_sw_reset(dev, SR_SWRESET_CLEAR); in sr9800_phy_powerup()
714 netdev_err(dev->net, "Failed to power up PHY: %d\n", ret); in sr9800_phy_powerup()
720 ret = sr_sw_reset(dev, SR_SWRESET_IPRL); in sr9800_phy_powerup()
722 netdev_err(dev->net, "Failed to reset PHY: %d\n", ret); in sr9800_phy_powerup()
729 static int sr9800_bind(struct usbnet *dev, struct usb_interface *intf) in sr9800_bind() argument
731 struct sr_data *data = (struct sr_data *)&dev->data; in sr9800_bind()
740 ret = usbnet_get_endpoints(dev, intf); in sr9800_bind()
753 ret = sr_write_cmd(dev, SR_CMD_LED_MUX, led01_mux, led23_mux, 0, NULL); in sr9800_bind()
755 netdev_err(dev->net, "set LINK LED failed : %d\n", ret); in sr9800_bind()
760 ret = sr_read_cmd(dev, SR_CMD_READ_NODE_ID, 0, 0, ETH_ALEN, addr); in sr9800_bind()
762 netdev_dbg(dev->net, "Failed to read MAC address: %d\n", ret); in sr9800_bind()
765 eth_hw_addr_set(dev->net, addr); in sr9800_bind()
766 netdev_dbg(dev->net, "mac addr : %pM\n", dev->net->dev_addr); in sr9800_bind()
769 dev->mii.dev = dev->net; in sr9800_bind()
770 dev->mii.mdio_read = sr_mdio_read; in sr9800_bind()
771 dev->mii.mdio_write = sr_mdio_write; in sr9800_bind()
772 dev->mii.phy_id_mask = 0x1f; in sr9800_bind()
773 dev->mii.reg_num_mask = 0x1f; in sr9800_bind()
774 dev->mii.phy_id = sr_get_phy_addr(dev); in sr9800_bind()
776 dev->net->netdev_ops = &sr9800_netdev_ops; in sr9800_bind()
777 dev->net->ethtool_ops = &sr9800_ethtool_ops; in sr9800_bind()
779 embd_phy = ((dev->mii.phy_id & 0x1f) == 0x10 ? 1 : 0); in sr9800_bind()
781 ret = sr_write_cmd(dev, SR_CMD_SW_PHY_SELECT, embd_phy, 0, 0, NULL); in sr9800_bind()
783 netdev_dbg(dev->net, "Select PHY #1 failed: %d\n", ret); in sr9800_bind()
788 ret = sr9800_phy_powerup(dev); in sr9800_bind()
792 rx_ctl = sr_read_rx_ctl(dev); in sr9800_bind()
793 netdev_dbg(dev->net, "RX_CTL is 0x%04x after software reset\n", rx_ctl); in sr9800_bind()
794 ret = sr_write_rx_ctl(dev, 0x0000); in sr9800_bind()
798 rx_ctl = sr_read_rx_ctl(dev); in sr9800_bind()
799 netdev_dbg(dev->net, "RX_CTL is 0x%04x setting to 0x0000\n", rx_ctl); in sr9800_bind()
802 phyid = sr_get_phyid(dev); in sr9800_bind()
803 netdev_dbg(dev->net, "PHYID=0x%08x\n", phyid); in sr9800_bind()
806 ret = sr9800_set_default_mode(dev); in sr9800_bind()
810 if (dev->udev->speed == USB_SPEED_HIGH) { in sr9800_bind()
811 ret = sr_write_cmd(dev, SR_CMD_BULKIN_SIZE, in sr9800_bind()
816 netdev_err(dev->net, "Reset RX_CTL failed: %d\n", ret); in sr9800_bind()
819 dev->rx_urb_size = in sr9800_bind()
822 ret = sr_write_cmd(dev, SR_CMD_BULKIN_SIZE, in sr9800_bind()
827 netdev_err(dev->net, "Reset RX_CTL failed: %d\n", ret); in sr9800_bind()
830 dev->rx_urb_size = in sr9800_bind()
833 netdev_dbg(dev->net, "%s : setting rx_urb_size with : %zu\n", __func__, in sr9800_bind()
834 dev->rx_urb_size); in sr9800_bind()