smsc95xx.c (404c3bc30cb1361e1b3533643326ab472d24a618) smsc95xx.c (9fa32e94dc4f08505934b9b015e2dfea9ae18555)
1 /***************************************************************************
2 *
3 * Copyright (C) 2007-2008 SMSC
4 *
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU General Public License
7 * as published by the Free Software Foundation; either version 2
8 * of the License, or (at your option) any later version.

--- 564 unchanged lines hidden (view full) ---

573 netdev_warn(dev->net, "EEPROM: magic value mismatch, magic = 0x%x\n",
574 ee->magic);
575 return -EINVAL;
576 }
577
578 return smsc95xx_write_eeprom(dev, ee->offset, ee->len, data);
579}
580
1 /***************************************************************************
2 *
3 * Copyright (C) 2007-2008 SMSC
4 *
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU General Public License
7 * as published by the Free Software Foundation; either version 2
8 * of the License, or (at your option) any later version.

--- 564 unchanged lines hidden (view full) ---

573 netdev_warn(dev->net, "EEPROM: magic value mismatch, magic = 0x%x\n",
574 ee->magic);
575 return -EINVAL;
576 }
577
578 return smsc95xx_write_eeprom(dev, ee->offset, ee->len, data);
579}
580
581static int smsc95xx_ethtool_getregslen(struct net_device *netdev)
582{
583 /* all smsc95xx registers */
584 return COE_CR - ID_REV + 1;
585}
586
587static void
588smsc95xx_ethtool_getregs(struct net_device *netdev, struct ethtool_regs *regs,
589 void *buf)
590{
591 struct usbnet *dev = netdev_priv(netdev);
592 unsigned int i, j, retval;
593 u32 *data = buf;
594
595 retval = smsc95xx_read_reg(dev, ID_REV, &regs->version);
596 if (retval < 0) {
597 netdev_warn(netdev, "REGS: cannot read ID_REV\n");
598 return;
599 }
600
601 for (i = ID_REV, j = 0; i <= COE_CR; i += (sizeof(u32)), j++) {
602 retval = smsc95xx_read_reg(dev, i, &data[j]);
603 if (retval < 0) {
604 netdev_warn(netdev, "REGS: cannot read reg[%x]\n", i);
605 return;
606 }
607 }
608}
609
581static const struct ethtool_ops smsc95xx_ethtool_ops = {
582 .get_link = usbnet_get_link,
583 .nway_reset = usbnet_nway_reset,
584 .get_drvinfo = usbnet_get_drvinfo,
585 .get_msglevel = usbnet_get_msglevel,
586 .set_msglevel = usbnet_set_msglevel,
587 .get_settings = usbnet_get_settings,
588 .set_settings = usbnet_set_settings,
589 .get_eeprom_len = smsc95xx_ethtool_get_eeprom_len,
590 .get_eeprom = smsc95xx_ethtool_get_eeprom,
591 .set_eeprom = smsc95xx_ethtool_set_eeprom,
610static const struct ethtool_ops smsc95xx_ethtool_ops = {
611 .get_link = usbnet_get_link,
612 .nway_reset = usbnet_nway_reset,
613 .get_drvinfo = usbnet_get_drvinfo,
614 .get_msglevel = usbnet_get_msglevel,
615 .set_msglevel = usbnet_set_msglevel,
616 .get_settings = usbnet_get_settings,
617 .set_settings = usbnet_set_settings,
618 .get_eeprom_len = smsc95xx_ethtool_get_eeprom_len,
619 .get_eeprom = smsc95xx_ethtool_get_eeprom,
620 .set_eeprom = smsc95xx_ethtool_set_eeprom,
621 .get_regs_len = smsc95xx_ethtool_getregslen,
622 .get_regs = smsc95xx_ethtool_getregs,
592};
593
594static int smsc95xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd)
595{
596 struct usbnet *dev = netdev_priv(netdev);
597
598 if (!netif_running(netdev))
599 return -EINVAL;

--- 709 unchanged lines hidden ---
623};
624
625static int smsc95xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd)
626{
627 struct usbnet *dev = netdev_priv(netdev);
628
629 if (!netif_running(netdev))
630 return -EINVAL;

--- 709 unchanged lines hidden ---