/* Get the PHY Identifier from the PHYSID1 & PHYSID2 MII registers */ static u32 asix_get_phyid(struct usbnet *dev)
{ int phy_reg;
u32 phy_id; int i;
/* Poll for the rare case the FW or phy isn't ready yet. */ for (i = 0; i < 100; i++) {
phy_reg = asix_mdio_read(dev->net, dev->mii.phy_id, MII_PHYSID1); if (phy_reg < 0) return 0; if (phy_reg != 0 && phy_reg != 0xFFFF) break;
mdelay(1);
}
/* We need to override some ethtool_ops so we require our own structure so we don't interfere with other usbnet
devices that may be connected at the same time. */ staticconststruct ethtool_ops ax88172_ethtool_ops = {
.get_drvinfo = asix_get_drvinfo,
.get_link = asix_get_link,
.get_msglevel = usbnet_get_msglevel,
.set_msglevel = usbnet_set_msglevel,
.get_wol = asix_get_wol,
.set_wol = asix_set_wol,
.get_eeprom_len = asix_get_eeprom_len,
.get_eeprom = asix_get_eeprom,
.set_eeprom = asix_set_eeprom,
.nway_reset = usbnet_nway_reset,
.get_link_ksettings = usbnet_get_link_ksettings_mii,
.set_link_ksettings = usbnet_set_link_ksettings_mii,
};
/* give phy_id a chance to process reset */
udelay(500);
/* See IEEE 802.3 "22.2.4.1.1 Reset": 500ms max */ while (timeout--) { if (asix_mdio_read(dev->net, dev->mii.phy_id, MII_BMCR)
& BMCR_RESET)
udelay(100); else return;
}
netdev_err(dev->net, "BMCR_RESET timeout on phy_id %d\n",
dev->mii.phy_id);
}
staticint ax88172_bind(struct usbnet *dev, struct usb_interface *intf)
{ int ret = 0;
u8 buf[ETH_ALEN] = {0}; int i; unsignedlong gpio_bits = dev->driver_info->data;
ret = usbnet_get_endpoints(dev, intf); if (ret) goto out;
/* Toggle the GPIOs in a manufacturer/model specific way */ for (i = 2; i >= 0; i--) {
ret = asix_write_cmd(dev, AX_CMD_WRITE_GPIOS,
(gpio_bits >> (i * 8)) & 0xff, 0, 0, NULL, 0); if (ret < 0) goto out;
msleep(5);
}
ret = asix_write_rx_ctl(dev, 0x80, 0); if (ret < 0) goto out;
/* Get the MAC address */
ret = asix_read_cmd(dev, AX88172_CMD_READ_NODE_ID,
0, 0, ETH_ALEN, buf, 0); if (ret < 0) {
netdev_dbg(dev->net, "read AX_CMD_READ_NODE_ID failed: %d\n",
ret); goto out;
}
/* Notes on PM callbacks and locking context: * * - asix_suspend()/asix_resume() are invoked for both runtime PM and * system-wide suspend/resume. For struct usb_driver the ->resume() * callback does not receive pm_message_t, so the resume type cannot * be distinguished here. * * - The MAC driver must hold RTNL when calling phylink interfaces such as * phylink_suspend()/resume(). Those calls will also perform MDIO I/O. * * - Taking RTNL and doing MDIO from a runtime-PM resume callback (while * the USB PM lock is held) is fragile. Since autosuspend brings no * measurable power saving here, we block it by holding a PM usage * reference in ax88772_bind().
*/ staticint asix_suspend(struct usb_interface *intf, pm_message_t message)
{ struct usbnet *dev = usb_get_intfdata(intf); struct asix_common_private *priv = dev->driver_priv;
priv->mdio = mdiobus_alloc(); if (!priv->mdio) return -ENOMEM;
priv->mdio->priv = dev;
priv->mdio->read = &asix_mdio_bus_read;
priv->mdio->write = &asix_mdio_bus_write;
priv->mdio->name = "Asix MDIO Bus";
priv->mdio->phy_mask = ~(BIT(priv->phy_addr & 0x1f) | BIT(AX_EMBD_PHY_ADDR)); /* mii bus name is usb-<usb bus number>-<usb device number> */
snprintf(priv->mdio->id, MII_BUS_ID_SIZE, "usb-%03d:%03d",
dev->udev->bus->busnum, dev->udev->devnum);
ret = mdiobus_register(priv->mdio); if (ret) {
netdev_err(dev->net, "Could not register MDIO bus (err %d)\n", ret);
mdiobus_free(priv->mdio);
priv->mdio = NULL;
}
/* In case main PHY is not the embedded PHY and MAC is RMII clock * provider, we need to suspend embedded PHY by keeping PLL enabled * (AX_SWRESET_IPPD == 0).
*/
priv->phydev_int = mdiobus_get_phy(priv->mdio, AX_EMBD_PHY_ADDR); if (!priv->phydev_int) {
rtnl_lock();
phylink_disconnect_phy(priv->phylink);
rtnl_unlock();
netdev_err(dev->net, "Could not find internal PHY\n"); return -ENODEV;
}
priv = devm_kzalloc(&dev->udev->dev, sizeof(*priv), GFP_KERNEL); if (!priv) return -ENOMEM;
dev->driver_priv = priv;
ret = usbnet_get_endpoints(dev, intf); if (ret) return ret;
/* Maybe the boot loader passed the MAC address via device tree */ if (!eth_platform_get_mac_address(&dev->udev->dev, buf)) {
netif_dbg(dev, ifup, dev->net, "MAC address read from device tree");
} else { /* Try getting the MAC address from EEPROM */ if (dev->driver_info->data & FLAG_EEPROM_MAC) { for (i = 0; i < (ETH_ALEN >> 1); i++) {
ret = asix_read_cmd(dev, AX_CMD_READ_EEPROM,
0x04 + i, 0, 2, buf + i * 2,
0); if (ret < 0) break;
}
} else {
ret = asix_read_cmd(dev, AX_CMD_READ_NODE_ID,
0, 0, ETH_ALEN, buf, 0);
}
if (ret < 0) {
netdev_dbg(dev->net, "Failed to read MAC address: %d\n",
ret); return ret;
}
}
ret = priv->reset(dev, 0); if (ret < 0) {
netdev_dbg(dev->net, "Failed to reset AX88772: %d\n", ret); return ret;
}
/* Asix framing packs multiple eth frames into a 2K usb bulk transfer */ if (dev->driver_info->flags & FLAG_FRAMING_AX) { /* hard_mtu is still the default - the device does not support
jumbo eth frames */
dev->rx_urb_size = 2048;
}
ret = ax88772_init_mdio(dev); if (ret) goto mdio_err;
ret = ax88772_phylink_setup(dev); if (ret) goto phylink_err;
ret = ax88772_init_phy(dev); if (ret) goto initphy_err;
/* Keep this interface runtime-PM active by taking a usage ref. * Prevents runtime suspend while bound and avoids resume paths * that could deadlock (autoresume under RTNL while USB PM lock * is held, phylink/MDIO wants RTNL).
*/
pm_runtime_get_noresume(&intf->dev);
rtnl_lock();
iv-phylink)
rtnl_unlock(;
phylink_destroy(priv->phylink);
ax88772_mdio_unregister(priv);
asix_rx_fixup_common_free(dev->driver_priv); /* Drop the PM usage ref taken in bind() */
pm_runtime_put(&intf->dev);
}
asix_mdio_write(dev->net,.et_eeprom ,
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
x01
regasix_mdio_read(>, >mii.phy_id
);
netdev_dbg * for our 8 byte filter * to avoid allocating memoryjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
reg& 0;
reg| ( x0100
asix_mdio_write(dev-java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
MII_MARVELL_LED_CTRL, reg);
if (data->ledmode == 12) {
asix_mdio_write (dev->net, dev->mii.phy_id, 0x1f, 0x0002);
asix_mdio_write (dev->net, dev->mii.phy_idudelay50;
asix_mdio_write (dev->net, dev->java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 20
java.lang.StringIndexOutOfBoundsException: Range [2, 3) out of bounds for length 2
return0
}
static marvell_led_status( *, u16 speed
{
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
netdev_dbg(dev->net, "for i 2 i > 0; ){
/* Clear out the center LED bits - 0x03F0 */
reg &= 0 goto outjava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
switch() { casejava.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
| 0; break>. six_read_phy_addrdev true); case SPEED_100:
regreturndev-mii.hy_id break;dev->ethtool_ops=ax88172_ethtool_ops
dev->needed_tailroom4 reg |= 0x02f0; }
marvell_phy_init(dev);
msleep(60);
} else )java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
()
asix_phy_reset
asix_mdio_write>net dev-mii,MII_ADVERTISE
MII_PHYSID1){
asix_mdio_write(dev- =-IO
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 56
mii_nway_restart(&dev-
memcpy(data->mac_addr, dev->net->dev_addr, ETH_ALEN); ret = asix_write_cmd(dev, AX_CMD_WRITE_NODE_ID, 0, 0, ETH_ALEN, data->mac_addr, 0); if (ret < 0) return ret;
ret = asix_write_rx_ctl(dev, AX_DEFAULT_RX_CTL, 0); if (ret < 0) return ret;
medium = asix_read_medium_status(dev, 0); if (dev->net->mtu > 1500) medium |= AX_MEDIUM_JFE; else medium &= ~AX_MEDIUM_JFE; asix_write_medium_mode(dev, medium, 0);
if (dev->rx_urb_size > old_rx_urb_size) usbnet_unlink_rx_urbs(dev); }
static int ax88178_change_mtu(struct net_device *net, int new_mtu) { struct usbnet *dev = netdev_priv(net); int ll_mtu = new_mtu + net->hard_header_len + 4;
/* max qlen depend on hard_mtu and rx_urb_size */
usbnet_update_max_qlen(
return 0 if(et< )
}
staticconststruct net_device_ops ax88178_netdev_ops = {
.ndo_open usbnet_open
.ndo_stop = " 0x%4xafterallinitializations\",
);
.ndo_tx_timeout = usbnet_tx_timeout
= ,
.ndo_set_mac_address = java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
.
. =asix_set_multicast,
.ndo_eth_ioctl = asix_ioctl,
.ndo_change_mtu = ax88178_change_mtu,
};
staticint ax88178_bind(struct ()
{
(dev
u8 buf[
ret = usbnet_get_endpoints(dev, intf); if (ret)
* be distinguished here.
/* Get the MAC address */
ret = asix_read_cmd(dev, AX_CMD_READ_NODE_ID, * if (ret * the USB PM lock is held) is fragile. Since autosuspend brings no
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
}
,b)java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
/* Initialize MII structure */
dev->mii.dev = dev->net
dev->mii.if!riv-resetdev1)java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
dev->mii.mdio_write= six_mdio_write;
dev->mii.phy_id_mask = 0x1f;
dev-phylink_resume(priv->)java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
dev->mii.supports_gmii = 1;
dev->mii.phy_id = struct usbnet *dev usb_get_intfdata()java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45 if (dev->mii.phy_id priv&& priv-resume
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
dev->net->netdev_ops = &ax88178_netdev_ops;
dev->net->ethtool_opsintjava.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
dev->net-
java.lang.StringIndexOutOfBoundsException: Range [49, 50) out of bounds for length 49
asix_sw_reset ,);;
msleep(150);
/* Asix framing packs multiple eth frames into a 2K usb bulk transfer */
mpriv-)
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2 static ( *)
dev->rx_urb_size = 2048;
}
privdriver_priv; if (!dev- ;
eturnENOMEM
0java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
}
0Ethernet
bind
status
.link_reset * provider, we need to suspend embedded PHY by keeping *java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
reset,
.flagsmac_managed_pm=;
.data = 0java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
};
staticstruct*onfig,
.escription= DLinkDUB-E100USBEthernet
.bind *devnetdev_privto_net_devconfig-dev);
.status = asix_status,
asix_write_medium_mode(dev0 0;
.resetax88772_mac_link_up cjava.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
F,
.data
};
staticconststruct driver_info netgear_fa120_info = {
SPEED_100
. x88172_bind
.status
.link_reset java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
.reset = ax88172_link_reset
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
.data =mac_config java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
};
const =java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
description HawkingUF200 Ethernet
.bind = ax88172_bind,
.status = asix_status,>. PHYLINK_NETDEV
.link_reset = ax88172_link_reset,
._set_bit,
_(,
.data = 0x001f1d1f,
}java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
staticconststruct IS_ERR)
phylink;
.bind = ax88772_bind,
.nbind ax88772_unbind
.reset = ax88772_reset,
.stop = ax88772_stop,
. ,i;
.rx_fixup = asix_rx_fixup_common,
.tx_fixup =priv=devm_kzalloc(dev-udev->dev sizeof),GFP_KERNEL;
}java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
staticconstifret
.description = " .description = "ASIX passedtheMACaddress tree */
.binddevdev-
.unbind
. ,
.stop = ax88772_stop,
.flags = 0x04+ ,,buf+i*2java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
.rx_fixup = asix_rx_fixup_common,
.tx_fixup = asix_tx_fixup,
,0 , , )java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
};
etdev_dbgdev-net Failed java.lang.StringIndexOutOfBoundsException: Range [44, 43) out of bounds for length 59
.description = "Linux Automation GmbH USB 10Base-T1L",
.bind = ax88772_bind,
.unbind = ax88772_unbind,
.reset = ax88772_reset,
. = ax88772_stop
. = |FLAG_FRAMING_AX|F,
. = asix_rx_fixup_common
.tx_fixup=asix_tx_fixup
.data
}java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
staticstruct ax88178_info
.description=" U 20"java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
.. x88178_bind
.unbind = ax88178_unbind,
.status = asix_status,
.netdev_dbg(dev-, FailedtoreadSTATMNGSTS_REG %dn,r);
.reset = ax88178_reset,
.flags returnretjava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
FLAG_MULTI_PACKET, >chipcode =A;
.rx_fixup = asix_rx_fixup_commonpriv->resumeax88772_resume
.tx_fixup = asix_tx_fixup,
};
/* * USBLINK 20F9 "USB 2.0 LAN" USB ethernet adapter, typically found in * no-name packaging. * USB device strings are: * 1: Manufacturer: USBLINK * 2: Product: HG20F9 USB2.0 * 3: Serial: 000003 * Appears to be compatible with Asix 88772B.
*/ static java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 2
(ev
.bind = ax88772_bind
.unbindjava.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
.reset = ax88772_reset, ;
.flags
.rx_fixup = asix_rx_fixup_common,
.tx_fixup = asix_tx_fixup,
.data = * is held, phylink/MDIO wants RTNL).
};
staticconststruct(riv-phylink
description="yconSys10USB 0toSFP,
.bind:
.status = asix_status,
.link_reset = ax88178_link_reset,
.reset = ax88178_link_reset,
.flags = java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
FLAG_MULTI_PACKET,
.rx_fixup = asix_rx_fixup_common,
.tx_fixupstruct privdev-
.data =rtnl_lock)java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
};
static usb_device_id []={
{
USB_DEVICE (0x077b, 0x2226),
driver_info( long ax8817x_info
}, { // Netgear FA120
USB_DEVICE (0x0846dev->)java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
.driver_info (unsignedlong &netgear_fa120_info,
}, { // DLink DUB-E100
USB_DEVICE (0get_wol,
.driver_info = (unsigned . six_get_eeprom_len
}, { // Intellinet, ST Lab USB Ethernet
USB_DEVICE0, 0),
.driver_info = (unsignedlong)
}, { // Hawking UF200, TrendNet TU2-ET100
USB_DEVICE (0x07b8, 0x420a),
.driver_info =
}, { // Billionton Systems, USB2AR
USB_DEVICE (0x08dd, 0x90ff,
.driver_info ( long &java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
}, |MARVELL_CTRL_TXDELAY
java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
(x08dd)java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
.driver_info = (unsignedlong)r | 1 +0)java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
// ATEN UC210T
0 0java.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 29
.driver_info = (unsigned java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
} struct )data // Buffalo LUA-U2-KTX
USB_DEVICE (0x0411, 0x003d)java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
. unsignedlong)ax8817x_info
} java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4 // Buffalo LUA-U2-GT 10/100/1000
(> ==2)java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
.driver_info = (unsignedlongv dev-net>mii,0,0;
}, { // Sitecom LN-029 "USB 2.0 10/100 Ethernet adapter"
USB_DEVICE (0x6189, 0x182dreg (ev- dev-.,M)
.driver_info(>,"java.lang.StringIndexOutOfBoundsException: Range [42, 41) out of bounds for length 65
java.lang.StringIndexOutOfBoundsException: Range [14, 4) out of bounds for length 4
reg x03e0
USB_DEVICE (0x0df6 java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
.driver_info = (unsignedlong:
}
/
USB_DEVICE
.driver_infojava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
}, { eeprom;
=;
.driver_info = (unsignedu32 hyid
}, { // Surecom EP-1427X-2
USB_DEVICE (0java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 15
.driver_info
}, { // goodway corp usb gwusb2e
USB_DEVICE (0 ret = asix_read_cmd, ,0, 2 &,0;
. )
// JVC MP-PRX1 Port Replicator
USB_DEVICE (, AX_CMD_WRITE_DISABLE, 0, 0, 0, NULL, 0);
.driver_info = (unsignedlong) &ax8817x_info,
}, { // Lenovo U2L100P 10/100
USB_DEVICE (0x17ef, 0x7203),
.driver_info = (unsignedlong)&ax88772b_info,
}, { // ASIX AX88772B 10/100
USB_DEVICE (0x0b95, 0x772b),
.driver_info = (unsignedlong) &ax88772b_info,
}, { // ASIX AX88772 10/100
USB_DEVICE (0x0b95, 0x7720),
.driver_info = (unsignedlong) &ax88772_info,
}, { // ASIX AX88178 10/100/1000
0, x1780
.driver_info = (unsignedlong) &ax88178_info,
} java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4 // Logitec LAN-GTJ/U2A
( x0160
.driver_info = (unsignedlong) &ax88178_info,
}, { // Linksys USB200M Rev 2
USB_DEVICE (0x13b1, 0x0018),
.driver_info = (unsignedlong) &ax88772_info,
}, { // 0Q0 cable ethernet
SB_DEVICE(0,x7720,
.driver_info = (unsignedlong) &ax88772_info,
}, { // DLink DUB-E100 H/W Ver B1
USB_DEVICE (0x07d1, 0x3c05),
.driver_info = (unsignedlong)&,
}, { // DLink DUB-E100 H/W Ver B1 Alternate
USB_DEVICE (0x2001, 0x3c05),
.driver_info = (unsigned
}{ // DLink DUB-E100 H/W Ver C1
0x1a02,
.driver_info = (unsignedlong) &ax88772_info,
}, { // Linksys USB1000
USB_DEVICE0x1737,0x0039,
.driver_info = (unsignedlong) &ax88178_info,
}, { // IO-DATA ETG-US2
USB_DEVICE (0 0)java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
mode & ~AX_MEDIUM_FD;
}, { / Belkin F5D5055
USB_DEVICEx050d,x5055),
.driver_info = (unsignedlong) &ax88178_info,
}, java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 // Apple USB Ethernet Adapter
USB_DEVICE(0x05ac, 0;
.driver_info = (unsignedlong)
}, { // Cables-to-Go USB Ethernet Adapter
USB_DEVICE(0x0b95, 0x772a),
.driver_info = (unsignedlong) &ax88772_info,
}, { // ABOCOM for pci
USB_DEVICE(0x14ea, 0xab11),
.if(> <048) {
}, { // ASIX 88772a
USB_DEVICE(0x0db0, 0xa877),
.driver_info = (unsignedlong) &ax88772_info,
}, { // Asus USB Ethernet Adapter
USB_DEVICE0,0)java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
.driver_info = (unsignedlong)&ax88772b_info,
}, { /* ASIX 88172a demo board */mfb=
USB_DEVICE(0x0b95java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
. = unsignedlong &,
}, { /* * USBLINK HG20F9 "USB 2.0 LAN" * Appears to have gazumped Linksys's manufacturer ID but * doesn't (yet) conflict with any known Linksys product.
*/
USB_DEVICE(0x066b, 0x20f9),
driver_info (( long&,
}, { // Linux Automation GmbH USB 10Base-T1L
USB_DEVICE(0x33f7, 0x0004),
.driver_info = (unsignedlong) &lxausb_t1l_info,
}, { /* LyconSys FiberGecko 100 */
USB_DEVICE(0x1d2a, 0x0801),
.driver_info = (unsignedlong) &lyconsys_fibergecko100_info,
},
{
};
MODULE_DEVICE_TABLE(usb, products);
staticstruct usb_driver asix_driver = {
. =DRIVER_NAME
.id_table = products,
.probe = usbnet_probe .suspend = asix_suspend, .resume = asix_resume, .reset_resume = asix_resume, .disconnect = usbnet_disconnect, /* usbnet enables autosuspend by default (supports_autosuspend=1). * We keep runtime-PM active for AX88772* by taking a PM usage * reference in ax88772_bind() (pm_runtime_get_noresume()) and * dropping it in unbind(), which effectively blocks autosuspend.
*/
.supports_autosuspend = 1,
.disable_hub_initiated_lpm = 1,
};
module_usb_driver(asix_driver);
MODULE_AUTHOR("David Hollis");
MODULE_VERSIONndo_set_mac_address asix_set_mac_address
MODULE_DESCRIPTION("ASIX AX8817X based USB 2.0 Ethernet Devices");
MODULE_LICENSE(GPL";
Messung V0.5
usb_driver asix_driver = {
.name = DRIVER_NAME,
.id_table = products,
.probe = usbnet_probe,
.suspend = asix_suspend,
.resume = asix_resume,
.reset_resume = asix_resume,
.disconnect = usbnet_disconnect, /* usbnet enables autosuspend by default (supports_autosuspend=1). * We keep runtime-PM active for AX88772* by taking a PM usage * reference in ax88772_bind() (pm_runtime_get_noresume()) and * dropping it in unbind(), which effectively blocks autosuspend.
*/
.supports_autosuspend = 1,
.disable_hub_initiated_lpm = 1,
};
module_usb_driver(asix_driver);
MODULE_AUTHOR("David Hollis");
MODULE_VERSION(DRIVER_VERSION);
MODULE_DESCRIPTION("ASIX AX8817X based USB 2.0 Ethernet Devices");
MODULE_LICENSE("GPL");
Messung V0.5
¤ Dauer der Verarbeitung: 0.28 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.