drivers/input/tablet/pegasus_notetaker.c
109
result = usb_control_msg(pegasus->usbdev,
drivers/input/tablet/pegasus_notetaker.c
110
usb_sndctrlpipe(pegasus->usbdev, 0),
drivers/input/tablet/pegasus_notetaker.c
120
dev_err(&pegasus->usbdev->dev, "control msg error: %d\n",
drivers/input/tablet/pegasus_notetaker.c
128
static int pegasus_set_mode(struct pegasus *pegasus, u8 mode, u8 led)
drivers/input/tablet/pegasus_notetaker.c
132
return pegasus_control_msg(pegasus, cmd, sizeof(cmd));
drivers/input/tablet/pegasus_notetaker.c
135
static void pegasus_parse_packet(struct pegasus *pegasus)
drivers/input/tablet/pegasus_notetaker.c
137
unsigned char *data = pegasus->data;
drivers/input/tablet/pegasus_notetaker.c
138
struct input_dev *dev = pegasus->dev;
drivers/input/tablet/pegasus_notetaker.c
145
schedule_work(&pegasus->init);
drivers/input/tablet/pegasus_notetaker.c
173
dev_warn_once(&pegasus->usbdev->dev,
drivers/input/tablet/pegasus_notetaker.c
180
struct pegasus *pegasus = urb->context;
drivers/input/tablet/pegasus_notetaker.c
181
struct usb_device *dev = pegasus->usbdev;
drivers/input/tablet/pegasus_notetaker.c
186
pegasus_parse_packet(pegasus);
drivers/input/tablet/pegasus_notetaker.c
187
usb_mark_last_busy(pegasus->usbdev);
drivers/input/tablet/pegasus_notetaker.c
211
struct pegasus *pegasus = container_of(work, struct pegasus, init);
drivers/input/tablet/pegasus_notetaker.c
214
error = pegasus_set_mode(pegasus, PEN_MODE_XY, NOTETAKER_LED_MOUSE);
drivers/input/tablet/pegasus_notetaker.c
216
dev_err(&pegasus->usbdev->dev, "pegasus_set_mode error: %d\n",
drivers/input/tablet/pegasus_notetaker.c
220
static int __pegasus_open(struct pegasus *pegasus)
drivers/input/tablet/pegasus_notetaker.c
224
guard(mutex)(&pegasus->pm_mutex);
drivers/input/tablet/pegasus_notetaker.c
226
pegasus->irq->dev = pegasus->usbdev;
drivers/input/tablet/pegasus_notetaker.c
227
if (usb_submit_urb(pegasus->irq, GFP_KERNEL))
drivers/input/tablet/pegasus_notetaker.c
230
error = pegasus_set_mode(pegasus, PEN_MODE_XY, NOTETAKER_LED_MOUSE);
drivers/input/tablet/pegasus_notetaker.c
232
usb_kill_urb(pegasus->irq);
drivers/input/tablet/pegasus_notetaker.c
233
cancel_work_sync(&pegasus->init);
drivers/input/tablet/pegasus_notetaker.c
237
pegasus->is_open = true;
drivers/input/tablet/pegasus_notetaker.c
244
struct pegasus *pegasus = input_get_drvdata(dev);
drivers/input/tablet/pegasus_notetaker.c
247
error = usb_autopm_get_interface(pegasus->intf);
drivers/input/tablet/pegasus_notetaker.c
251
error = __pegasus_open(pegasus);
drivers/input/tablet/pegasus_notetaker.c
253
usb_autopm_put_interface(pegasus->intf);
drivers/input/tablet/pegasus_notetaker.c
262
struct pegasus *pegasus = input_get_drvdata(dev);
drivers/input/tablet/pegasus_notetaker.c
264
scoped_guard(mutex, &pegasus->pm_mutex) {
drivers/input/tablet/pegasus_notetaker.c
265
usb_kill_urb(pegasus->irq);
drivers/input/tablet/pegasus_notetaker.c
266
cancel_work_sync(&pegasus->init);
drivers/input/tablet/pegasus_notetaker.c
268
pegasus->is_open = false;
drivers/input/tablet/pegasus_notetaker.c
271
usb_autopm_put_interface(pegasus->intf);
drivers/input/tablet/pegasus_notetaker.c
279
struct pegasus *pegasus;
drivers/input/tablet/pegasus_notetaker.c
296
pegasus = kzalloc_obj(*pegasus);
drivers/input/tablet/pegasus_notetaker.c
298
if (!pegasus || !input_dev) {
drivers/input/tablet/pegasus_notetaker.c
303
mutex_init(&pegasus->pm_mutex);
drivers/input/tablet/pegasus_notetaker.c
305
pegasus->usbdev = dev;
drivers/input/tablet/pegasus_notetaker.c
306
pegasus->dev = input_dev;
drivers/input/tablet/pegasus_notetaker.c
307
pegasus->intf = intf;
drivers/input/tablet/pegasus_notetaker.c
316
pegasus->data_len = usb_maxpacket(dev, pipe);
drivers/input/tablet/pegasus_notetaker.c
317
if (pegasus->data_len < NOTETAKER_PACKET_SIZE) {
drivers/input/tablet/pegasus_notetaker.c
319
pegasus->data_len);
drivers/input/tablet/pegasus_notetaker.c
324
pegasus->data = usb_alloc_coherent(dev, pegasus->data_len, GFP_KERNEL,
drivers/input/tablet/pegasus_notetaker.c
325
&pegasus->data_dma);
drivers/input/tablet/pegasus_notetaker.c
326
if (!pegasus->data) {
drivers/input/tablet/pegasus_notetaker.c
331
pegasus->irq = usb_alloc_urb(0, GFP_KERNEL);
drivers/input/tablet/pegasus_notetaker.c
332
if (!pegasus->irq) {
drivers/input/tablet/pegasus_notetaker.c
337
usb_fill_int_urb(pegasus->irq, dev, pipe,
drivers/input/tablet/pegasus_notetaker.c
338
pegasus->data, pegasus->data_len,
drivers/input/tablet/pegasus_notetaker.c
339
pegasus_irq, pegasus, endpoint->bInterval);
drivers/input/tablet/pegasus_notetaker.c
341
pegasus->irq->transfer_dma = pegasus->data_dma;
drivers/input/tablet/pegasus_notetaker.c
342
pegasus->irq->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
drivers/input/tablet/pegasus_notetaker.c
345
strscpy(pegasus->name, dev->manufacturer,
drivers/input/tablet/pegasus_notetaker.c
346
sizeof(pegasus->name));
drivers/input/tablet/pegasus_notetaker.c
350
strlcat(pegasus->name, " ", sizeof(pegasus->name));
drivers/input/tablet/pegasus_notetaker.c
351
strlcat(pegasus->name, dev->product, sizeof(pegasus->name));
drivers/input/tablet/pegasus_notetaker.c
354
if (!strlen(pegasus->name))
drivers/input/tablet/pegasus_notetaker.c
355
snprintf(pegasus->name, sizeof(pegasus->name),
drivers/input/tablet/pegasus_notetaker.c
360
usb_make_path(dev, pegasus->phys, sizeof(pegasus->phys));
drivers/input/tablet/pegasus_notetaker.c
361
strlcat(pegasus->phys, "/input0", sizeof(pegasus->phys));
drivers/input/tablet/pegasus_notetaker.c
363
INIT_WORK(&pegasus->init, pegasus_init);
drivers/input/tablet/pegasus_notetaker.c
365
usb_set_intfdata(intf, pegasus);
drivers/input/tablet/pegasus_notetaker.c
367
input_dev->name = pegasus->name;
drivers/input/tablet/pegasus_notetaker.c
368
input_dev->phys = pegasus->phys;
drivers/input/tablet/pegasus_notetaker.c
372
input_set_drvdata(input_dev, pegasus);
drivers/input/tablet/pegasus_notetaker.c
393
error = input_register_device(pegasus->dev);
drivers/input/tablet/pegasus_notetaker.c
400
usb_free_urb(pegasus->irq);
drivers/input/tablet/pegasus_notetaker.c
402
usb_free_coherent(dev, pegasus->data_len,
drivers/input/tablet/pegasus_notetaker.c
403
pegasus->data, pegasus->data_dma);
drivers/input/tablet/pegasus_notetaker.c
406
kfree(pegasus);
drivers/input/tablet/pegasus_notetaker.c
414
struct pegasus *pegasus = usb_get_intfdata(intf);
drivers/input/tablet/pegasus_notetaker.c
416
input_unregister_device(pegasus->dev);
drivers/input/tablet/pegasus_notetaker.c
418
usb_free_urb(pegasus->irq);
drivers/input/tablet/pegasus_notetaker.c
420
pegasus->data_len, pegasus->data,
drivers/input/tablet/pegasus_notetaker.c
421
pegasus->data_dma);
drivers/input/tablet/pegasus_notetaker.c
423
kfree(pegasus);
drivers/input/tablet/pegasus_notetaker.c
429
struct pegasus *pegasus = usb_get_intfdata(intf);
drivers/input/tablet/pegasus_notetaker.c
431
guard(mutex)(&pegasus->pm_mutex);
drivers/input/tablet/pegasus_notetaker.c
433
usb_kill_urb(pegasus->irq);
drivers/input/tablet/pegasus_notetaker.c
434
cancel_work_sync(&pegasus->init);
drivers/input/tablet/pegasus_notetaker.c
441
struct pegasus *pegasus = usb_get_intfdata(intf);
drivers/input/tablet/pegasus_notetaker.c
443
guard(mutex)(&pegasus->pm_mutex);
drivers/input/tablet/pegasus_notetaker.c
445
if (pegasus->is_open && usb_submit_urb(pegasus->irq, GFP_NOIO) < 0)
drivers/input/tablet/pegasus_notetaker.c
453
struct pegasus *pegasus = usb_get_intfdata(intf);
drivers/input/tablet/pegasus_notetaker.c
456
guard(mutex)(&pegasus->pm_mutex);
drivers/input/tablet/pegasus_notetaker.c
458
if (pegasus->is_open) {
drivers/input/tablet/pegasus_notetaker.c
459
error = pegasus_set_mode(pegasus, PEN_MODE_XY,
drivers/input/tablet/pegasus_notetaker.c
464
if (usb_submit_urb(pegasus->irq, GFP_NOIO) < 0)
drivers/input/tablet/pegasus_notetaker.c
94
static int pegasus_control_msg(struct pegasus *pegasus, u8 *data, int len)
drivers/net/usb/pegasus.c
1003
pegasus_t *pegasus = netdev_priv(dev);
drivers/net/usb/pegasus.c
1004
return pegasus->msg_enable;
drivers/net/usb/pegasus.c
1009
pegasus_t *pegasus = netdev_priv(dev);
drivers/net/usb/pegasus.c
1010
pegasus->msg_enable = v;
drivers/net/usb/pegasus.c
1029
pegasus_t *pegasus = netdev_priv(net);
drivers/net/usb/pegasus.c
1034
data[0] = pegasus->phy;
drivers/net/usb/pegasus.c
1037
res = read_mii_word(pegasus, data[0], data[1] & 0x1f, &data[3]);
drivers/net/usb/pegasus.c
1042
write_mii_word(pegasus, pegasus->phy, data[1] & 0x1f, &data[2]);
drivers/net/usb/pegasus.c
1053
pegasus_t *pegasus = netdev_priv(net);
drivers/net/usb/pegasus.c
1056
pegasus->eth_regs[EthCtrl2] |= RX_PROMISCUOUS;
drivers/net/usb/pegasus.c
1057
netif_info(pegasus, link, net, "Promiscuous mode enabled\n");
drivers/net/usb/pegasus.c
1059
pegasus->eth_regs[EthCtrl0] |= RX_MULTICAST;
drivers/net/usb/pegasus.c
1060
pegasus->eth_regs[EthCtrl2] &= ~RX_PROMISCUOUS;
drivers/net/usb/pegasus.c
1061
netif_dbg(pegasus, link, net, "set allmulti\n");
drivers/net/usb/pegasus.c
1063
pegasus->eth_regs[EthCtrl0] &= ~RX_MULTICAST;
drivers/net/usb/pegasus.c
1064
pegasus->eth_regs[EthCtrl2] &= ~RX_PROMISCUOUS;
drivers/net/usb/pegasus.c
1066
update_eth_regs_async(pegasus);
drivers/net/usb/pegasus.c
1069
static __u8 mii_phy_probe(pegasus_t *pegasus)
drivers/net/usb/pegasus.c
1075
ret = read_mii_word(pegasus, i, MII_BMSR, &tmp);
drivers/net/usb/pegasus.c
108
static int get_registers(pegasus_t *pegasus, __u16 indx, __u16 size, void *data)
drivers/net/usb/pegasus.c
1087
static inline void setup_pegasus_II(pegasus_t *pegasus)
drivers/net/usb/pegasus.c
1092
set_register(pegasus, Reg1d, 0);
drivers/net/usb/pegasus.c
1093
set_register(pegasus, Reg7b, 1);
drivers/net/usb/pegasus.c
1095
if ((pegasus->features & HAS_HOME_PNA) && mii_mode)
drivers/net/usb/pegasus.c
1096
set_register(pegasus, Reg7b, 0);
drivers/net/usb/pegasus.c
1098
set_register(pegasus, Reg7b, 2);
drivers/net/usb/pegasus.c
110
return usb_control_msg_recv(pegasus->usb, 0, PEGASUS_REQ_GET_REGS,
drivers/net/usb/pegasus.c
1100
set_register(pegasus, 0x83, data);
drivers/net/usb/pegasus.c
1101
ret = get_registers(pegasus, 0x83, 1, &data);
drivers/net/usb/pegasus.c
1106
pegasus->chip = 0x8513;
drivers/net/usb/pegasus.c
1108
pegasus->chip = 0;
drivers/net/usb/pegasus.c
1110
set_register(pegasus, 0x80, 0xc0);
drivers/net/usb/pegasus.c
1111
set_register(pegasus, 0x83, 0xff);
drivers/net/usb/pegasus.c
1112
set_register(pegasus, 0x84, 0x01);
drivers/net/usb/pegasus.c
1114
if (pegasus->features & HAS_HOME_PNA && mii_mode)
drivers/net/usb/pegasus.c
1115
set_register(pegasus, Reg81, 6);
drivers/net/usb/pegasus.c
1117
set_register(pegasus, Reg81, 2);
drivers/net/usb/pegasus.c
1121
netif_dbg(pegasus, drv, pegasus->net, "%s failed\n", __func__);
drivers/net/usb/pegasus.c
1126
pegasus_t *pegasus = container_of(work, pegasus_t, carrier_check.work);
drivers/net/usb/pegasus.c
1127
set_carrier(pegasus->net);
drivers/net/usb/pegasus.c
1128
if (!(pegasus->flags & PEGASUS_UNPLUG)) {
drivers/net/usb/pegasus.c
1129
queue_delayed_work(system_long_wq, &pegasus->carrier_check,
drivers/net/usb/pegasus.c
115
static int set_registers(pegasus_t *pegasus, __u16 indx, __u16 size,
drivers/net/usb/pegasus.c
1155
pegasus_t *pegasus;
drivers/net/usb/pegasus.c
1176
net = alloc_etherdev(sizeof(struct pegasus));
drivers/net/usb/pegasus.c
1180
pegasus = netdev_priv(net);
drivers/net/usb/pegasus.c
1181
pegasus->dev_index = dev_index;
drivers/net/usb/pegasus.c
1182
pegasus->intf = intf;
drivers/net/usb/pegasus.c
1184
res = alloc_urbs(pegasus);
drivers/net/usb/pegasus.c
1190
tasklet_setup(&pegasus->rx_tl, rx_fixup);
drivers/net/usb/pegasus.c
1192
INIT_DELAYED_WORK(&pegasus->carrier_check, check_carrier);
drivers/net/usb/pegasus.c
1194
pegasus->usb = dev;
drivers/net/usb/pegasus.c
1195
pegasus->net = net;
drivers/net/usb/pegasus.c
120
ret = usb_control_msg_send(pegasus->usb, 0, PEGASUS_REQ_SET_REGS,
drivers/net/usb/pegasus.c
1201
pegasus->mii.dev = net;
drivers/net/usb/pegasus.c
1202
pegasus->mii.mdio_read = mdio_read;
drivers/net/usb/pegasus.c
1203
pegasus->mii.mdio_write = mdio_write;
drivers/net/usb/pegasus.c
1204
pegasus->mii.phy_id_mask = 0x1f;
drivers/net/usb/pegasus.c
1205
pegasus->mii.reg_num_mask = 0x1f;
drivers/net/usb/pegasus.c
1206
pegasus->msg_enable = netif_msg_init(msg_level, NETIF_MSG_DRV
drivers/net/usb/pegasus.c
1209
pegasus->features = usb_dev_id[dev_index].private;
drivers/net/usb/pegasus.c
1210
res = get_interrupt_interval(pegasus);
drivers/net/usb/pegasus.c
1213
if (reset_mac(pegasus)) {
drivers/net/usb/pegasus.c
1218
set_ethernet_addr(pegasus);
drivers/net/usb/pegasus.c
1219
if (pegasus->features & PEGASUS_II) {
drivers/net/usb/pegasus.c
1221
setup_pegasus_II(pegasus);
drivers/net/usb/pegasus.c
1223
pegasus->phy = mii_phy_probe(pegasus);
drivers/net/usb/pegasus.c
1224
if (pegasus->phy == 0xff) {
drivers/net/usb/pegasus.c
1226
pegasus->phy = 1;
drivers/net/usb/pegasus.c
1228
pegasus->mii.phy_id = pegasus->phy;
drivers/net/usb/pegasus.c
1229
usb_set_intfdata(intf, pegasus);
drivers/net/usb/pegasus.c
1235
queue_delayed_work(system_long_wq, &pegasus->carrier_check,
drivers/net/usb/pegasus.c
124
netif_dbg(pegasus, drv, pegasus->net, "%s failed with %d\n", __func__, ret);
drivers/net/usb/pegasus.c
1244
free_all_urbs(pegasus);
drivers/net/usb/pegasus.c
1253
struct pegasus *pegasus = usb_get_intfdata(intf);
drivers/net/usb/pegasus.c
1256
if (!pegasus) {
drivers/net/usb/pegasus.c
1261
pegasus->flags |= PEGASUS_UNPLUG;
drivers/net/usb/pegasus.c
1262
cancel_delayed_work_sync(&pegasus->carrier_check);
drivers/net/usb/pegasus.c
1263
unregister_netdev(pegasus->net);
drivers/net/usb/pegasus.c
1264
unlink_all_urbs(pegasus);
drivers/net/usb/pegasus.c
1265
free_all_urbs(pegasus);
drivers/net/usb/pegasus.c
1266
if (pegasus->rx_skb != NULL) {
drivers/net/usb/pegasus.c
1267
dev_kfree_skb(pegasus->rx_skb);
drivers/net/usb/pegasus.c
1268
pegasus->rx_skb = NULL;
drivers/net/usb/pegasus.c
1270
free_netdev(pegasus->net);
drivers/net/usb/pegasus.c
1275
struct pegasus *pegasus = usb_get_intfdata(intf);
drivers/net/usb/pegasus.c
1277
netif_device_detach(pegasus->net);
drivers/net/usb/pegasus.c
1278
cancel_delayed_work_sync(&pegasus->carrier_check);
drivers/net/usb/pegasus.c
1279
if (netif_running(pegasus->net)) {
drivers/net/usb/pegasus.c
1280
usb_kill_urb(pegasus->rx_urb);
drivers/net/usb/pegasus.c
1281
usb_kill_urb(pegasus->intr_urb);
drivers/net/usb/pegasus.c
1288
struct pegasus *pegasus = usb_get_intfdata(intf);
drivers/net/usb/pegasus.c
1290
netif_device_attach(pegasus->net);
drivers/net/usb/pegasus.c
1291
if (netif_running(pegasus->net)) {
drivers/net/usb/pegasus.c
1292
pegasus->rx_urb->status = 0;
drivers/net/usb/pegasus.c
1293
pegasus->rx_urb->actual_length = 0;
drivers/net/usb/pegasus.c
1294
read_bulk_callback(pegasus->rx_urb);
drivers/net/usb/pegasus.c
1296
pegasus->intr_urb->status = 0;
drivers/net/usb/pegasus.c
1297
pegasus->intr_urb->actual_length = 0;
drivers/net/usb/pegasus.c
1298
intr_callback(pegasus->intr_urb);
drivers/net/usb/pegasus.c
1300
queue_delayed_work(system_long_wq, &pegasus->carrier_check,
drivers/net/usb/pegasus.c
134
static int set_register(pegasus_t *pegasus, __u16 indx, __u8 data)
drivers/net/usb/pegasus.c
139
ret = usb_control_msg_send(pegasus->usb, 0, PEGASUS_REQ_SET_REG,
drivers/net/usb/pegasus.c
143
netif_dbg(pegasus, drv, pegasus->net, "%s failed with %d\n", __func__, ret);
drivers/net/usb/pegasus.c
148
static int update_eth_regs_async(pegasus_t *pegasus)
drivers/net/usb/pegasus.c
169
usb_fill_control_urb(async_urb, pegasus->usb,
drivers/net/usb/pegasus.c
170
usb_sndctrlpipe(pegasus->usb, 0), (void *)req,
drivers/net/usb/pegasus.c
171
pegasus->eth_regs, 3, async_ctrl_callback, req);
drivers/net/usb/pegasus.c
176
netif_device_detach(pegasus->net);
drivers/net/usb/pegasus.c
177
netif_err(pegasus, drv, pegasus->net,
drivers/net/usb/pegasus.c
222
static int read_mii_word(pegasus_t *pegasus, __u8 phy, __u8 indx, __u16 *regd)
drivers/net/usb/pegasus.c
224
return __mii_op(pegasus, phy, indx, regd, PHY_READ);
drivers/net/usb/pegasus.c
228
static int write_mii_word(pegasus_t *pegasus, __u8 phy, __u8 indx, __u16 *regd)
drivers/net/usb/pegasus.c
230
return __mii_op(pegasus, phy, indx, regd, PHY_WRITE);
drivers/net/usb/pegasus.c
235
pegasus_t *pegasus = netdev_priv(dev);
drivers/net/usb/pegasus.c
239
ret = read_mii_word(pegasus, phy_id, loc, &res);
drivers/net/usb/pegasus.c
248
pegasus_t *pegasus = netdev_priv(dev);
drivers/net/usb/pegasus.c
251
write_mii_word(pegasus, phy_id, loc, &data);
drivers/net/usb/pegasus.c
254
static int read_eprom_word(pegasus_t *pegasus, __u8 index, __u16 *retdata)
drivers/net/usb/pegasus.c
260
set_register(pegasus, EpromCtrl, 0);
drivers/net/usb/pegasus.c
261
set_register(pegasus, EpromOffset, index);
drivers/net/usb/pegasus.c
262
set_register(pegasus, EpromCtrl, EPROM_READ);
drivers/net/usb/pegasus.c
265
ret = get_registers(pegasus, EpromCtrl, 1, &tmp);
drivers/net/usb/pegasus.c
276
ret = get_registers(pegasus, EpromData, 2, &retdatai);
drivers/net/usb/pegasus.c
283
netif_dbg(pegasus, drv, pegasus->net, "%s failed\n", __func__);
drivers/net/usb/pegasus.c
288
static inline void enable_eprom_write(pegasus_t *pegasus)
drivers/net/usb/pegasus.c
292
get_registers(pegasus, EthCtrl2, 1, &tmp);
drivers/net/usb/pegasus.c
293
set_register(pegasus, EthCtrl2, tmp | EPROM_WR_ENABLE);
drivers/net/usb/pegasus.c
296
static inline void disable_eprom_write(pegasus_t *pegasus)
drivers/net/usb/pegasus.c
300
get_registers(pegasus, EthCtrl2, 1, &tmp);
drivers/net/usb/pegasus.c
301
set_register(pegasus, EpromCtrl, 0);
drivers/net/usb/pegasus.c
302
set_register(pegasus, EthCtrl2, tmp & ~EPROM_WR_ENABLE);
drivers/net/usb/pegasus.c
305
static int write_eprom_word(pegasus_t *pegasus, __u8 index, __u16 data)
drivers/net/usb/pegasus.c
312
set_registers(pegasus, EpromOffset, 4, d);
drivers/net/usb/pegasus.c
313
enable_eprom_write(pegasus);
drivers/net/usb/pegasus.c
314
set_register(pegasus, EpromOffset, index);
drivers/net/usb/pegasus.c
315
set_registers(pegasus, EpromData, 2, &le_data);
drivers/net/usb/pegasus.c
316
set_register(pegasus, EpromCtrl, EPROM_WRITE);
drivers/net/usb/pegasus.c
319
ret = get_registers(pegasus, EpromCtrl, 1, &tmp);
drivers/net/usb/pegasus.c
325
disable_eprom_write(pegasus);
drivers/net/usb/pegasus.c
332
netif_dbg(pegasus, drv, pegasus->net, "%s failed\n", __func__);
drivers/net/usb/pegasus.c
337
static inline int get_node_id(pegasus_t *pegasus, u8 *id)
drivers/net/usb/pegasus.c
343
ret = read_eprom_word(pegasus, i, &w16);
drivers/net/usb/pegasus.c
352
static void set_ethernet_addr(pegasus_t *pegasus)
drivers/net/usb/pegasus.c
357
if (pegasus->features & PEGASUS_II) {
drivers/net/usb/pegasus.c
358
ret = get_registers(pegasus, 0x10, sizeof(node_id), node_id);
drivers/net/usb/pegasus.c
362
ret = get_node_id(pegasus, node_id);
drivers/net/usb/pegasus.c
365
ret = set_registers(pegasus, EthID, sizeof(node_id), node_id);
drivers/net/usb/pegasus.c
370
eth_hw_addr_set(pegasus->net, node_id);
drivers/net/usb/pegasus.c
374
eth_hw_addr_random(pegasus->net);
drivers/net/usb/pegasus.c
375
netif_dbg(pegasus, drv, pegasus->net, "software assigned MAC address.\n");
drivers/net/usb/pegasus.c
380
static inline int reset_mac(pegasus_t *pegasus)
drivers/net/usb/pegasus.c
385
set_register(pegasus, EthCtrl1, data);
drivers/net/usb/pegasus.c
387
ret = get_registers(pegasus, EthCtrl1, 1, &data);
drivers/net/usb/pegasus.c
393
if (mii_mode && (pegasus->features & HAS_HOME_PNA))
drivers/net/usb/pegasus.c
394
set_register(pegasus, Gpio1, 0x34);
drivers/net/usb/pegasus.c
396
set_register(pegasus, Gpio1, 0x26);
drivers/net/usb/pegasus.c
397
set_register(pegasus, Gpio0, pegasus->features);
drivers/net/usb/pegasus.c
398
set_register(pegasus, Gpio0, DEFAULT_GPIO_SET);
drivers/net/usb/pegasus.c
405
if (usb_dev_id[pegasus->dev_index].vendor == VENDOR_LINKSYS ||
drivers/net/usb/pegasus.c
406
usb_dev_id[pegasus->dev_index].vendor == VENDOR_DLINK) {
drivers/net/usb/pegasus.c
407
set_register(pegasus, Gpio0, 0x24);
drivers/net/usb/pegasus.c
408
set_register(pegasus, Gpio0, 0x26);
drivers/net/usb/pegasus.c
410
if (usb_dev_id[pegasus->dev_index].vendor == VENDOR_ELCON) {
drivers/net/usb/pegasus.c
412
ret = read_mii_word(pegasus, 3, 0x1b, &auxmode);
drivers/net/usb/pegasus.c
416
write_mii_word(pegasus, 3, 0x1b, &auxmode);
drivers/net/usb/pegasus.c
421
netif_dbg(pegasus, drv, pegasus->net, "%s failed\n", __func__);
drivers/net/usb/pegasus.c
427
pegasus_t *pegasus = netdev_priv(dev);
drivers/net/usb/pegasus.c
432
ret = read_mii_word(pegasus, pegasus->phy, MII_LPA, &linkpart);
drivers/net/usb/pegasus.c
445
memcpy(pegasus->eth_regs, data, sizeof(data));
drivers/net/usb/pegasus.c
446
ret = set_registers(pegasus, EthCtrl0, 3, data);
drivers/net/usb/pegasus.c
448
if (usb_dev_id[pegasus->dev_index].vendor == VENDOR_LINKSYS ||
drivers/net/usb/pegasus.c
449
usb_dev_id[pegasus->dev_index].vendor == VENDOR_LINKSYS2 ||
drivers/net/usb/pegasus.c
450
usb_dev_id[pegasus->dev_index].vendor == VENDOR_DLINK) {
drivers/net/usb/pegasus.c
452
ret = read_mii_word(pegasus, 0, 0x1b, &auxmode);
drivers/net/usb/pegasus.c
456
write_mii_word(pegasus, 0, 0x1b, &auxmode);
drivers/net/usb/pegasus.c
461
netif_dbg(pegasus, drv, pegasus->net, "%s failed\n", __func__);
drivers/net/usb/pegasus.c
467
pegasus_t *pegasus = urb->context;
drivers/net/usb/pegasus.c
474
if (!pegasus)
drivers/net/usb/pegasus.c
477
net = pegasus->net;
drivers/net/usb/pegasus.c
485
netif_dbg(pegasus, rx_err, net, "reset MAC\n");
drivers/net/usb/pegasus.c
486
pegasus->flags &= ~PEGASUS_RX_BUSY;
drivers/net/usb/pegasus.c
490
netif_warn(pegasus, rx_err, net, "no rx stall recovery\n");
drivers/net/usb/pegasus.c
495
netif_dbg(pegasus, ifdown, net, "rx unlink, %d\n", status);
drivers/net/usb/pegasus.c
498
netif_dbg(pegasus, rx_err, net, "RX status %d\n", status);
drivers/net/usb/pegasus.c
507
netif_dbg(pegasus, rx_err, net,
drivers/net/usb/pegasus.c
518
if (pegasus->chip == 0x8513) {
drivers/net/usb/pegasus.c
521
pegasus->rx_skb->data += 2;
drivers/net/usb/pegasus.c
540
skb_put(pegasus->rx_skb, pkt_len);
drivers/net/usb/pegasus.c
541
pegasus->rx_skb->protocol = eth_type_trans(pegasus->rx_skb, net);
drivers/net/usb/pegasus.c
542
netif_rx(pegasus->rx_skb);
drivers/net/usb/pegasus.c
546
if (pegasus->flags & PEGASUS_UNPLUG)
drivers/net/usb/pegasus.c
549
pegasus->rx_skb = __netdev_alloc_skb_ip_align(pegasus->net, PEGASUS_MTU,
drivers/net/usb/pegasus.c
552
if (pegasus->rx_skb == NULL)
drivers/net/usb/pegasus.c
555
usb_fill_bulk_urb(pegasus->rx_urb, pegasus->usb,
drivers/net/usb/pegasus.c
556
usb_rcvbulkpipe(pegasus->usb, PEGASUS_USB_EP_BULK_IN),
drivers/net/usb/pegasus.c
557
pegasus->rx_skb->data, PEGASUS_MTU,
drivers/net/usb/pegasus.c
558
read_bulk_callback, pegasus);
drivers/net/usb/pegasus.c
559
rx_status = usb_submit_urb(pegasus->rx_urb, GFP_ATOMIC);
drivers/net/usb/pegasus.c
561
netif_device_detach(pegasus->net);
drivers/net/usb/pegasus.c
563
pegasus->flags |= PEGASUS_RX_URB_FAIL;
drivers/net/usb/pegasus.c
566
pegasus->flags &= ~PEGASUS_RX_URB_FAIL;
drivers/net/usb/pegasus.c
572
tasklet_schedule(&pegasus->rx_tl);
drivers/net/usb/pegasus.c
577
pegasus_t *pegasus = from_tasklet(pegasus, t, rx_tl);
drivers/net/usb/pegasus.c
580
if (pegasus->flags & PEGASUS_UNPLUG)
drivers/net/usb/pegasus.c
583
if (pegasus->flags & PEGASUS_RX_URB_FAIL)
drivers/net/usb/pegasus.c
584
if (pegasus->rx_skb)
drivers/net/usb/pegasus.c
586
if (pegasus->rx_skb == NULL)
drivers/net/usb/pegasus.c
587
pegasus->rx_skb = __netdev_alloc_skb_ip_align(pegasus->net,
drivers/net/usb/pegasus.c
590
if (pegasus->rx_skb == NULL) {
drivers/net/usb/pegasus.c
591
netif_warn(pegasus, rx_err, pegasus->net, "low on memory\n");
drivers/net/usb/pegasus.c
592
tasklet_schedule(&pegasus->rx_tl);
drivers/net/usb/pegasus.c
595
usb_fill_bulk_urb(pegasus->rx_urb, pegasus->usb,
drivers/net/usb/pegasus.c
596
usb_rcvbulkpipe(pegasus->usb, PEGASUS_USB_EP_BULK_IN),
drivers/net/usb/pegasus.c
597
pegasus->rx_skb->data, PEGASUS_MTU,
drivers/net/usb/pegasus.c
598
read_bulk_callback, pegasus);
drivers/net/usb/pegasus.c
600
status = usb_submit_urb(pegasus->rx_urb, GFP_ATOMIC);
drivers/net/usb/pegasus.c
602
netif_device_detach(pegasus->net);
drivers/net/usb/pegasus.c
604
pegasus->flags |= PEGASUS_RX_URB_FAIL;
drivers/net/usb/pegasus.c
605
tasklet_schedule(&pegasus->rx_tl);
drivers/net/usb/pegasus.c
607
pegasus->flags &= ~PEGASUS_RX_URB_FAIL;
drivers/net/usb/pegasus.c
613
pegasus_t *pegasus = urb->context;
drivers/net/usb/pegasus.c
617
if (!pegasus)
drivers/net/usb/pegasus.c
620
net = pegasus->net;
drivers/net/usb/pegasus.c
629
netif_warn(pegasus, tx_err, net, "no tx stall recovery\n");
drivers/net/usb/pegasus.c
634
netif_dbg(pegasus, ifdown, net, "tx unlink, %d\n", status);
drivers/net/usb/pegasus.c
637
netif_info(pegasus, tx_err, net, "TX status %d\n", status);
drivers/net/usb/pegasus.c
649
pegasus_t *pegasus = urb->context;
drivers/net/usb/pegasus.c
653
if (!pegasus)
drivers/net/usb/pegasus.c
655
net = pegasus->net;
drivers/net/usb/pegasus.c
668
netif_dbg(pegasus, timer, net, "intr status %d\n", status);
drivers/net/usb/pegasus.c
697
netif_device_detach(pegasus->net);
drivers/net/usb/pegasus.c
699
netif_err(pegasus, timer, net,
drivers/net/usb/pegasus.c
705
pegasus_t *pegasus = netdev_priv(net);
drivers/net/usb/pegasus.c
706
netif_warn(pegasus, timer, net, "tx timeout\n");
drivers/net/usb/pegasus.c
707
usb_unlink_urb(pegasus->tx_urb);
drivers/net/usb/pegasus.c
714
pegasus_t *pegasus = netdev_priv(net);
drivers/net/usb/pegasus.c
721
((__le16 *) pegasus->tx_buff)[0] = cpu_to_le16(l16);
drivers/net/usb/pegasus.c
722
skb_copy_from_linear_data(skb, pegasus->tx_buff + 2, skb->len);
drivers/net/usb/pegasus.c
723
usb_fill_bulk_urb(pegasus->tx_urb, pegasus->usb,
drivers/net/usb/pegasus.c
724
usb_sndbulkpipe(pegasus->usb, PEGASUS_USB_EP_BULK_OUT),
drivers/net/usb/pegasus.c
725
pegasus->tx_buff, count,
drivers/net/usb/pegasus.c
726
write_bulk_callback, pegasus);
drivers/net/usb/pegasus.c
727
if ((res = usb_submit_urb(pegasus->tx_urb, GFP_ATOMIC))) {
drivers/net/usb/pegasus.c
728
netif_warn(pegasus, tx_err, net, "fail tx, %d\n", res);
drivers/net/usb/pegasus.c
735
netif_device_detach(pegasus->net);
drivers/net/usb/pegasus.c
750
static inline void disable_net_traffic(pegasus_t *pegasus)
drivers/net/usb/pegasus.c
754
set_registers(pegasus, EthCtrl0, sizeof(tmp), &tmp);
drivers/net/usb/pegasus.c
757
static inline int get_interrupt_interval(pegasus_t *pegasus)
drivers/net/usb/pegasus.c
763
ret = read_eprom_word(pegasus, 4, &data);
drivers/net/usb/pegasus.c
768
if (pegasus->usb->speed != USB_SPEED_HIGH) {
drivers/net/usb/pegasus.c
770
netif_info(pegasus, timer, pegasus->net,
drivers/net/usb/pegasus.c
776
write_eprom_word(pegasus, 4, data);
drivers/net/usb/pegasus.c
780
pegasus->intr_interval = interval;
drivers/net/usb/pegasus.c
787
pegasus_t *pegasus = netdev_priv(net);
drivers/net/usb/pegasus.c
790
if (read_mii_word(pegasus, pegasus->phy, MII_BMSR, &tmp))
drivers/net/usb/pegasus.c
799
static void free_all_urbs(pegasus_t *pegasus)
drivers/net/usb/pegasus.c
801
usb_free_urb(pegasus->intr_urb);
drivers/net/usb/pegasus.c
802
usb_free_urb(pegasus->tx_urb);
drivers/net/usb/pegasus.c
803
usb_free_urb(pegasus->rx_urb);
drivers/net/usb/pegasus.c
806
static void unlink_all_urbs(pegasus_t *pegasus)
drivers/net/usb/pegasus.c
808
usb_kill_urb(pegasus->intr_urb);
drivers/net/usb/pegasus.c
809
usb_kill_urb(pegasus->tx_urb);
drivers/net/usb/pegasus.c
810
usb_kill_urb(pegasus->rx_urb);
drivers/net/usb/pegasus.c
813
static int alloc_urbs(pegasus_t *pegasus)
drivers/net/usb/pegasus.c
824
if (!usb_check_bulk_endpoints(pegasus->intf, bulk_ep_addr) ||
drivers/net/usb/pegasus.c
825
!usb_check_int_endpoints(pegasus->intf, int_ep_addr))
drivers/net/usb/pegasus.c
828
pegasus->rx_urb = usb_alloc_urb(0, GFP_KERNEL);
drivers/net/usb/pegasus.c
829
if (!pegasus->rx_urb) {
drivers/net/usb/pegasus.c
832
pegasus->tx_urb = usb_alloc_urb(0, GFP_KERNEL);
drivers/net/usb/pegasus.c
833
if (!pegasus->tx_urb) {
drivers/net/usb/pegasus.c
834
usb_free_urb(pegasus->rx_urb);
drivers/net/usb/pegasus.c
837
pegasus->intr_urb = usb_alloc_urb(0, GFP_KERNEL);
drivers/net/usb/pegasus.c
838
if (!pegasus->intr_urb) {
drivers/net/usb/pegasus.c
839
usb_free_urb(pegasus->tx_urb);
drivers/net/usb/pegasus.c
840
usb_free_urb(pegasus->rx_urb);
drivers/net/usb/pegasus.c
849
pegasus_t *pegasus = netdev_priv(net);
drivers/net/usb/pegasus.c
852
if (pegasus->rx_skb == NULL)
drivers/net/usb/pegasus.c
853
pegasus->rx_skb = __netdev_alloc_skb_ip_align(pegasus->net,
drivers/net/usb/pegasus.c
856
if (!pegasus->rx_skb)
drivers/net/usb/pegasus.c
859
set_registers(pegasus, EthID, 6, net->dev_addr);
drivers/net/usb/pegasus.c
861
usb_fill_bulk_urb(pegasus->rx_urb, pegasus->usb,
drivers/net/usb/pegasus.c
862
usb_rcvbulkpipe(pegasus->usb, PEGASUS_USB_EP_BULK_IN),
drivers/net/usb/pegasus.c
863
pegasus->rx_skb->data, PEGASUS_MTU,
drivers/net/usb/pegasus.c
864
read_bulk_callback, pegasus);
drivers/net/usb/pegasus.c
865
if ((res = usb_submit_urb(pegasus->rx_urb, GFP_KERNEL))) {
drivers/net/usb/pegasus.c
867
netif_device_detach(pegasus->net);
drivers/net/usb/pegasus.c
868
netif_dbg(pegasus, ifup, net, "failed rx_urb, %d\n", res);
drivers/net/usb/pegasus.c
872
usb_fill_int_urb(pegasus->intr_urb, pegasus->usb,
drivers/net/usb/pegasus.c
873
usb_rcvintpipe(pegasus->usb, PEGASUS_USB_EP_INT_IN),
drivers/net/usb/pegasus.c
874
pegasus->intr_buff, sizeof(pegasus->intr_buff),
drivers/net/usb/pegasus.c
875
intr_callback, pegasus, pegasus->intr_interval);
drivers/net/usb/pegasus.c
876
if ((res = usb_submit_urb(pegasus->intr_urb, GFP_KERNEL))) {
drivers/net/usb/pegasus.c
878
netif_device_detach(pegasus->net);
drivers/net/usb/pegasus.c
879
netif_dbg(pegasus, ifup, net, "failed intr_urb, %d\n", res);
drivers/net/usb/pegasus.c
880
usb_kill_urb(pegasus->rx_urb);
drivers/net/usb/pegasus.c
883
res = enable_net_traffic(net, pegasus->usb);
drivers/net/usb/pegasus.c
885
netif_dbg(pegasus, ifup, net,
drivers/net/usb/pegasus.c
888
usb_kill_urb(pegasus->rx_urb);
drivers/net/usb/pegasus.c
889
usb_kill_urb(pegasus->intr_urb);
drivers/net/usb/pegasus.c
894
netif_dbg(pegasus, ifup, net, "open\n");
drivers/net/usb/pegasus.c
902
pegasus_t *pegasus = netdev_priv(net);
drivers/net/usb/pegasus.c
905
if (!(pegasus->flags & PEGASUS_UNPLUG))
drivers/net/usb/pegasus.c
906
disable_net_traffic(pegasus);
drivers/net/usb/pegasus.c
907
tasklet_kill(&pegasus->rx_tl);
drivers/net/usb/pegasus.c
908
unlink_all_urbs(pegasus);
drivers/net/usb/pegasus.c
916
pegasus_t *pegasus = netdev_priv(dev);
drivers/net/usb/pegasus.c
919
usb_make_path(pegasus->usb, info->bus_info, sizeof(info->bus_info));
drivers/net/usb/pegasus.c
928
pegasus_t *pegasus = netdev_priv(dev);
drivers/net/usb/pegasus.c
931
wol->wolopts = pegasus->wolopts;
drivers/net/usb/pegasus.c
937
pegasus_t *pegasus = netdev_priv(dev);
drivers/net/usb/pegasus.c
950
pegasus->eth_regs[0] |= 0x10;
drivers/net/usb/pegasus.c
952
pegasus->eth_regs[0] &= ~0x10;
drivers/net/usb/pegasus.c
953
pegasus->wolopts = wol->wolopts;
drivers/net/usb/pegasus.c
955
ret = set_register(pegasus, WakeupControl, reg78);
drivers/net/usb/pegasus.c
957
ret = device_set_wakeup_enable(&pegasus->usb->dev,
drivers/net/usb/pegasus.c
974
pegasus_t *pegasus;
drivers/net/usb/pegasus.c
976
pegasus = netdev_priv(dev);
drivers/net/usb/pegasus.c
977
mii_ethtool_get_link_ksettings(&pegasus->mii, ecmd);
drivers/net/usb/pegasus.c
985
pegasus_t *pegasus = netdev_priv(dev);
drivers/net/usb/pegasus.c
986
return mii_ethtool_set_link_ksettings(&pegasus->mii, ecmd);
drivers/net/usb/pegasus.c
991
pegasus_t *pegasus = netdev_priv(dev);
drivers/net/usb/pegasus.c
992
return mii_nway_restart(&pegasus->mii);
drivers/net/usb/pegasus.c
997
pegasus_t *pegasus = netdev_priv(dev);
drivers/net/usb/pegasus.c
998
return mii_link_ok(&pegasus->mii);