Lines Matching refs:dev

109 static int mcs7830_get_reg(struct usbnet *dev, u16 index, u16 size, void *data)  in mcs7830_get_reg()  argument
113 ret = usbnet_read_cmd(dev, MCS7830_RD_BREQ, MCS7830_RD_BMREQ, in mcs7830_get_reg()
123 static int mcs7830_set_reg(struct usbnet *dev, u16 index, u16 size, const void *data) in mcs7830_set_reg() argument
125 return usbnet_write_cmd(dev, MCS7830_WR_BREQ, MCS7830_WR_BMREQ, in mcs7830_set_reg()
129 static void mcs7830_set_reg_async(struct usbnet *dev, u16 index, u16 size, void *data) in mcs7830_set_reg_async() argument
131 usbnet_write_cmd_async(dev, MCS7830_WR_BREQ, MCS7830_WR_BMREQ, in mcs7830_set_reg_async()
135 static int mcs7830_hif_get_mac_address(struct usbnet *dev, unsigned char *addr) in mcs7830_hif_get_mac_address() argument
137 int ret = mcs7830_get_reg(dev, HIF_REG_ETHERNET_ADDR, ETH_ALEN, addr); in mcs7830_hif_get_mac_address()
143 static int mcs7830_hif_set_mac_address(struct usbnet *dev, in mcs7830_hif_set_mac_address() argument
146 int ret = mcs7830_set_reg(dev, HIF_REG_ETHERNET_ADDR, ETH_ALEN, addr); in mcs7830_hif_set_mac_address()
156 struct usbnet *dev = netdev_priv(netdev); in mcs7830_set_mac_address() local
165 ret = mcs7830_hif_set_mac_address(dev, addr->sa_data); in mcs7830_set_mac_address()
176 static int mcs7830_read_phy(struct usbnet *dev, u8 index) in mcs7830_read_phy() argument
187 mutex_lock(&dev->phy_mutex); in mcs7830_read_phy()
189 ret = mcs7830_set_reg(dev, HIF_REG_PHY_CMD1, 2, cmd); in mcs7830_read_phy()
195 ret = mcs7830_get_reg(dev, HIF_REG_PHY_CMD1, 2, cmd); in mcs7830_read_phy()
205 ret = mcs7830_get_reg(dev, HIF_REG_PHY_DATA, 2, &val); in mcs7830_read_phy()
209 dev_dbg(&dev->udev->dev, "read PHY reg %02x: %04x (%d tries)\n", in mcs7830_read_phy()
212 mutex_unlock(&dev->phy_mutex); in mcs7830_read_phy()
216 static int mcs7830_write_phy(struct usbnet *dev, u8 index, u16 val) in mcs7830_write_phy() argument
227 mutex_lock(&dev->phy_mutex); in mcs7830_write_phy()
231 ret = mcs7830_set_reg(dev, HIF_REG_PHY_DATA, 2, &le_val); in mcs7830_write_phy()
236 ret = mcs7830_set_reg(dev, HIF_REG_PHY_CMD1, 2, cmd); in mcs7830_write_phy()
242 ret = mcs7830_get_reg(dev, HIF_REG_PHY_CMD1, 2, cmd); in mcs7830_write_phy()
252 dev_dbg(&dev->udev->dev, "write PHY reg %02x: %04x (%d tries)\n", in mcs7830_write_phy()
255 mutex_unlock(&dev->phy_mutex); in mcs7830_write_phy()
263 static int mcs7830_set_autoneg(struct usbnet *dev, int ptrUserPhyMode) in mcs7830_set_autoneg() argument
267 ret = mcs7830_write_phy(dev, MII_ADVERTISE, MCS7830_MII_ADVERTISE); in mcs7830_set_autoneg()
271 ret = mcs7830_write_phy(dev, MII_BMCR, 0x0000); in mcs7830_set_autoneg()
274 ret = mcs7830_write_phy(dev, MII_BMCR, BMCR_ANENABLE); in mcs7830_set_autoneg()
277 ret = mcs7830_write_phy(dev, MII_BMCR, in mcs7830_set_autoneg()
286 static int mcs7830_get_rev(struct usbnet *dev) in mcs7830_get_rev() argument
290 ret = mcs7830_get_reg(dev, HIF_REG_FRAME_DROP_COUNTER, 2, dummy); in mcs7830_get_rev()
299 static void mcs7830_rev_C_fixup(struct usbnet *dev) in mcs7830_rev_C_fixup() argument
305 if (mcs7830_get_rev(dev) == 2) { in mcs7830_rev_C_fixup()
306 dev_info(&dev->udev->dev, "applying rev.C fixup\n"); in mcs7830_rev_C_fixup()
307 mcs7830_set_reg(dev, HIF_REG_PAUSE_THRESHOLD, in mcs7830_rev_C_fixup()
317 struct usbnet *dev = netdev_priv(netdev); in mcs7830_mdio_read() local
318 return mcs7830_read_phy(dev, location); in mcs7830_mdio_read()
324 struct usbnet *dev = netdev_priv(netdev); in mcs7830_mdio_write() local
325 mcs7830_write_phy(dev, location, val); in mcs7830_mdio_write()
330 struct usbnet *dev = netdev_priv(net); in mcs7830_ioctl() local
331 return generic_mii_ioctl(&dev->mii, if_mii(rq), cmd, NULL); in mcs7830_ioctl()
334 static inline struct mcs7830_data *mcs7830_get_data(struct usbnet *dev) in mcs7830_get_data() argument
336 return (struct mcs7830_data *)&dev->data; in mcs7830_get_data()
339 static void mcs7830_hif_update_multicast_hash(struct usbnet *dev) in mcs7830_hif_update_multicast_hash() argument
341 struct mcs7830_data *data = mcs7830_get_data(dev); in mcs7830_hif_update_multicast_hash()
342 mcs7830_set_reg_async(dev, HIF_REG_MULTICAST_HASH, in mcs7830_hif_update_multicast_hash()
347 static void mcs7830_hif_update_config(struct usbnet *dev) in mcs7830_hif_update_config() argument
351 struct mcs7830_data *data = mcs7830_get_data(dev); in mcs7830_hif_update_config()
352 mcs7830_set_reg_async(dev, HIF_REG_CONFIG, 1, &data->config); in mcs7830_hif_update_config()
357 struct usbnet *dev = netdev_priv(net); in mcs7830_data_set_multicast() local
358 struct mcs7830_data *data = mcs7830_get_data(dev); in mcs7830_data_set_multicast()
390 static int mcs7830_apply_base_config(struct usbnet *dev) in mcs7830_apply_base_config() argument
395 ret = mcs7830_hif_set_mac_address(dev, dev->net->dev_addr); in mcs7830_apply_base_config()
397 dev_info(&dev->udev->dev, "Cannot set MAC address\n"); in mcs7830_apply_base_config()
402 ret = mcs7830_set_autoneg(dev, 0); in mcs7830_apply_base_config()
404 dev_info(&dev->udev->dev, "Cannot set autoneg\n"); in mcs7830_apply_base_config()
408 mcs7830_hif_update_multicast_hash(dev); in mcs7830_apply_base_config()
409 mcs7830_hif_update_config(dev); in mcs7830_apply_base_config()
411 mcs7830_rev_C_fixup(dev); in mcs7830_apply_base_config()
420 struct usbnet *dev = netdev_priv(net); in mcs7830_set_multicast() local
424 mcs7830_hif_update_multicast_hash(dev); in mcs7830_set_multicast()
425 mcs7830_hif_update_config(dev); in mcs7830_set_multicast()
430 struct usbnet *dev = netdev_priv(net); in mcs7830_get_regs_len() local
432 switch (mcs7830_get_rev(dev)) { in mcs7830_get_regs_len()
448 struct usbnet *dev = netdev_priv(net); in mcs7830_get_regs() local
450 regs->version = mcs7830_get_rev(dev); in mcs7830_get_regs()
451 mcs7830_get_reg(dev, 0, regs->len, data); in mcs7830_get_regs()
481 static int mcs7830_bind(struct usbnet *dev, struct usb_interface *udev) in mcs7830_bind() argument
483 struct net_device *net = dev->net; in mcs7830_bind()
491 ret = mcs7830_hif_get_mac_address(dev, addr); in mcs7830_bind()
493 dev_warn(&dev->udev->dev, "Cannot read MAC address\n"); in mcs7830_bind()
500 ret = mcs7830_apply_base_config(dev); in mcs7830_bind()
508 dev->rx_urb_size = ETH_FRAME_LEN + 1; in mcs7830_bind()
510 dev->mii.mdio_read = mcs7830_mdio_read; in mcs7830_bind()
511 dev->mii.mdio_write = mcs7830_mdio_write; in mcs7830_bind()
512 dev->mii.dev = net; in mcs7830_bind()
513 dev->mii.phy_id_mask = 0x3f; in mcs7830_bind()
514 dev->mii.reg_num_mask = 0x1f; in mcs7830_bind()
515 dev->mii.phy_id = *((u8 *) net->dev_addr + 1); in mcs7830_bind()
517 ret = usbnet_get_endpoints(dev, udev); in mcs7830_bind()
523 static int mcs7830_rx_fixup(struct usbnet *dev, struct sk_buff *skb) in mcs7830_rx_fixup() argument
528 if (skb->len < dev->net->hard_header_len) { in mcs7830_rx_fixup()
529 dev_err(&dev->udev->dev, "unexpected tiny rx frame\n"); in mcs7830_rx_fixup()
537 dev_dbg(&dev->udev->dev, "rx fixup status %x\n", status); in mcs7830_rx_fixup()
541 dev->net->stats.rx_errors++; in mcs7830_rx_fixup()
546 dev->net->stats.rx_length_errors++; in mcs7830_rx_fixup()
548 dev->net->stats.rx_frame_errors++; in mcs7830_rx_fixup()
550 dev->net->stats.rx_crc_errors++; in mcs7830_rx_fixup()
556 static void mcs7830_status(struct usbnet *dev, struct urb *urb) in mcs7830_status() argument
565 link_changed = netif_carrier_ok(dev->net) != link; in mcs7830_status()
567 usbnet_link_change(dev, link, 0); in mcs7830_status()
568 netdev_dbg(dev->net, "Link Status is: %d\n", link); in mcs7830_status()
618 struct usbnet *dev = usb_get_intfdata(intf); in mcs7830_reset_resume() local
620 mcs7830_apply_base_config(dev); in mcs7830_reset_resume()