Lines Matching refs:sdev

88 static unsigned int slic_next_compl_idx(struct slic_device *sdev)  in slic_next_compl_idx()  argument
90 struct slic_stat_queue *stq = &sdev->stq; in slic_next_compl_idx()
112 slic_write(sdev, SLIC_REG_RBAR, lower_32_bits(paddr) | in slic_next_compl_idx()
115 slic_flush_write(sdev); in slic_next_compl_idx()
149 static void slic_start_upr(struct slic_device *sdev, struct slic_upr *upr) in slic_start_upr() argument
155 slic_write(sdev, reg, lower_32_bits(upr->paddr)); in slic_start_upr()
156 slic_flush_write(sdev); in slic_start_upr()
159 static void slic_queue_upr(struct slic_device *sdev, struct slic_upr *upr) in slic_queue_upr() argument
161 struct slic_upr_list *upr_list = &sdev->upr_list; in slic_queue_upr()
172 slic_start_upr(sdev, upr); in slic_queue_upr()
175 static struct slic_upr *slic_dequeue_upr(struct slic_device *sdev) in slic_dequeue_upr() argument
177 struct slic_upr_list *upr_list = &sdev->upr_list; in slic_dequeue_upr()
195 slic_start_upr(sdev, next_upr); in slic_dequeue_upr()
200 static int slic_new_upr(struct slic_device *sdev, unsigned int type, in slic_new_upr() argument
211 slic_queue_upr(sdev, upr); in slic_new_upr()
232 static void slic_configure_rcv(struct slic_device *sdev) in slic_configure_rcv() argument
239 if (sdev->duplex == DUPLEX_FULL) in slic_configure_rcv()
242 if (sdev->promisc) in slic_configure_rcv()
245 slic_write(sdev, SLIC_REG_WRCFG, val); in slic_configure_rcv()
249 static void slic_configure_xmt(struct slic_device *sdev) in slic_configure_xmt() argument
255 if (sdev->duplex == DUPLEX_FULL) in slic_configure_xmt()
258 slic_write(sdev, SLIC_REG_WXCFG, val); in slic_configure_xmt()
262 static void slic_configure_mac(struct slic_device *sdev) in slic_configure_mac() argument
266 if (sdev->speed == SPEED_1000) { in slic_configure_mac()
277 if (sdev->duplex == DUPLEX_FULL) in slic_configure_mac()
280 slic_write(sdev, SLIC_REG_WMCFG, val); in slic_configure_mac()
283 static void slic_configure_link_locked(struct slic_device *sdev, int speed, in slic_configure_link_locked() argument
286 struct net_device *dev = sdev->netdev; in slic_configure_link_locked()
288 if (sdev->speed == speed && sdev->duplex == duplex) in slic_configure_link_locked()
291 sdev->speed = speed; in slic_configure_link_locked()
292 sdev->duplex = duplex; in slic_configure_link_locked()
294 if (sdev->speed == SPEED_UNKNOWN) { in slic_configure_link_locked()
299 slic_configure_mac(sdev); in slic_configure_link_locked()
300 slic_configure_xmt(sdev); in slic_configure_link_locked()
301 slic_configure_rcv(sdev); in slic_configure_link_locked()
302 slic_flush_write(sdev); in slic_configure_link_locked()
309 static void slic_configure_link(struct slic_device *sdev, int speed, in slic_configure_link() argument
312 spin_lock_bh(&sdev->link_lock); in slic_configure_link()
313 slic_configure_link_locked(sdev, speed, duplex); in slic_configure_link()
314 spin_unlock_bh(&sdev->link_lock); in slic_configure_link()
319 struct slic_device *sdev = netdev_priv(dev); in slic_set_rx_mode() local
339 slic_write(sdev, SLIC_REG_MCASTLOW, lower_32_bits(mcmask)); in slic_set_rx_mode()
340 slic_write(sdev, SLIC_REG_MCASTHIGH, upper_32_bits(mcmask)); in slic_set_rx_mode()
344 spin_lock_bh(&sdev->link_lock); in slic_set_rx_mode()
345 if (sdev->promisc != set_promisc) { in slic_set_rx_mode()
346 sdev->promisc = set_promisc; in slic_set_rx_mode()
347 slic_configure_rcv(sdev); in slic_set_rx_mode()
351 spin_unlock_bh(&sdev->link_lock); in slic_set_rx_mode()
354 static void slic_xmit_complete(struct slic_device *sdev) in slic_xmit_complete() argument
356 struct slic_tx_queue *txq = &sdev->txq; in slic_xmit_complete()
357 struct net_device *dev = sdev->netdev; in slic_xmit_complete()
367 idx = slic_next_compl_idx(sdev); in slic_xmit_complete()
379 dma_unmap_single(&sdev->pdev->dev, in slic_xmit_complete()
392 u64_stats_update_begin(&sdev->stats.syncp); in slic_xmit_complete()
393 sdev->stats.tx_bytes += bytes; in slic_xmit_complete()
394 sdev->stats.tx_packets += frames; in slic_xmit_complete()
395 u64_stats_update_end(&sdev->stats.syncp); in slic_xmit_complete()
404 static void slic_refill_rx_queue(struct slic_device *sdev, gfp_t gfp) in slic_refill_rx_queue() argument
408 struct slic_rx_queue *rxq = &sdev->rxq; in slic_refill_rx_queue()
409 struct net_device *dev = sdev->netdev; in slic_refill_rx_queue()
422 paddr = dma_map_single(&sdev->pdev->dev, skb->data, maplen, in slic_refill_rx_queue()
424 if (dma_mapping_error(&sdev->pdev->dev, paddr)) { in slic_refill_rx_queue()
440 dma_sync_single_for_cpu(&sdev->pdev->dev, paddr, in slic_refill_rx_queue()
445 dma_sync_single_for_device(&sdev->pdev->dev, paddr, in slic_refill_rx_queue()
457 slic_write(sdev, SLIC_REG_HBAR, lower_32_bits(paddr) + offset); in slic_refill_rx_queue()
462 static void slic_handle_frame_error(struct slic_device *sdev, in slic_handle_frame_error() argument
465 struct slic_stats *stats = &sdev->stats; in slic_handle_frame_error()
467 if (sdev->model == SLIC_MODEL_OASIS) { in slic_handle_frame_error()
558 static void slic_handle_receive(struct slic_device *sdev, unsigned int todo, in slic_handle_receive() argument
561 struct slic_rx_queue *rxq = &sdev->rxq; in slic_handle_receive()
562 struct net_device *dev = sdev->netdev; in slic_handle_receive()
580 dma_sync_single_for_cpu(&sdev->pdev->dev, in slic_handle_receive()
587 dma_sync_single_for_device(&sdev->pdev->dev, in slic_handle_receive()
598 dma_unmap_single(&sdev->pdev->dev, in slic_handle_receive()
607 slic_handle_frame_error(sdev, skb); in slic_handle_receive()
613 SLIC_INC_STATS_COUNTER(&sdev->stats, rx_mcasts); in slic_handle_receive()
620 napi_gro_receive(&sdev->napi, skb); in slic_handle_receive()
629 u64_stats_update_begin(&sdev->stats.syncp); in slic_handle_receive()
630 sdev->stats.rx_bytes += bytes; in slic_handle_receive()
631 sdev->stats.rx_packets += frames; in slic_handle_receive()
632 u64_stats_update_end(&sdev->stats.syncp); in slic_handle_receive()
634 slic_refill_rx_queue(sdev, GFP_ATOMIC); in slic_handle_receive()
637 static void slic_handle_link_irq(struct slic_device *sdev) in slic_handle_link_irq() argument
639 struct slic_shmem *sm = &sdev->shmem; in slic_handle_link_irq()
661 slic_configure_link(sdev, speed, duplex); in slic_handle_link_irq()
664 static void slic_handle_upr_irq(struct slic_device *sdev, u32 irqs) in slic_handle_upr_irq() argument
669 upr = slic_dequeue_upr(sdev); in slic_handle_upr_irq()
671 netdev_warn(sdev->netdev, "no upr found on list\n"); in slic_handle_upr_irq()
678 slic_queue_upr(sdev, upr); in slic_handle_upr_irq()
681 slic_handle_link_irq(sdev); in slic_handle_upr_irq()
686 static int slic_handle_link_change(struct slic_device *sdev) in slic_handle_link_change() argument
688 return slic_new_upr(sdev, SLIC_UPR_LSTAT, sdev->shmem.link_paddr); in slic_handle_link_change()
691 static void slic_handle_err_irq(struct slic_device *sdev, u32 isr) in slic_handle_err_irq() argument
693 struct slic_stats *stats = &sdev->stats; in slic_handle_err_irq()
703 static void slic_handle_irq(struct slic_device *sdev, u32 isr, in slic_handle_irq() argument
707 slic_handle_err_irq(sdev, isr); in slic_handle_irq()
710 slic_handle_link_change(sdev); in slic_handle_irq()
713 slic_handle_upr_irq(sdev, isr); in slic_handle_irq()
716 slic_handle_receive(sdev, todo, done); in slic_handle_irq()
719 slic_xmit_complete(sdev); in slic_handle_irq()
724 struct slic_device *sdev = container_of(napi, struct slic_device, napi); in slic_poll() local
725 struct slic_shmem *sm = &sdev->shmem; in slic_poll()
730 slic_handle_irq(sdev, isr, todo, &done); in slic_poll()
738 slic_write(sdev, SLIC_REG_ISR, 0); in slic_poll()
739 slic_flush_write(sdev); in slic_poll()
747 struct slic_device *sdev = dev_id; in slic_irq() local
748 struct slic_shmem *sm = &sdev->shmem; in slic_irq()
751 slic_write(sdev, SLIC_REG_ICR, SLIC_ICR_INT_MASK); in slic_irq()
752 slic_flush_write(sdev); in slic_irq()
759 slic_write(sdev, SLIC_REG_ISR, 0); in slic_irq()
760 slic_flush_write(sdev); in slic_irq()
764 napi_schedule_irqoff(&sdev->napi); in slic_irq()
769 static void slic_card_reset(struct slic_device *sdev) in slic_card_reset() argument
773 slic_write(sdev, SLIC_REG_RESET, SLIC_RESET_MAGIC); in slic_card_reset()
775 pci_read_config_word(sdev->pdev, PCI_COMMAND, &cmd); in slic_card_reset()
779 static int slic_init_stat_queue(struct slic_device *sdev) in slic_init_stat_queue() argument
782 struct slic_stat_queue *stq = &sdev->stq; in slic_init_stat_queue()
798 descs = dma_zalloc_coherent(&sdev->pdev->dev, size, &paddr, in slic_init_stat_queue()
801 netdev_err(sdev->netdev, in slic_init_stat_queue()
815 slic_write(sdev, SLIC_REG_RBAR, lower_32_bits(paddr) | in slic_init_stat_queue()
828 dma_free_coherent(&sdev->pdev->dev, stq->mem_size, in slic_init_stat_queue()
836 static void slic_free_stat_queue(struct slic_device *sdev) in slic_free_stat_queue() argument
838 struct slic_stat_queue *stq = &sdev->stq; in slic_free_stat_queue()
842 dma_free_coherent(&sdev->pdev->dev, stq->mem_size, in slic_free_stat_queue()
848 static int slic_init_tx_queue(struct slic_device *sdev) in slic_init_tx_queue() argument
850 struct slic_tx_queue *txq = &sdev->txq; in slic_init_tx_queue()
864 txq->dma_pool = dma_pool_create("slic_pool", &sdev->pdev->dev, in slic_init_tx_queue()
869 netdev_err(sdev->netdev, "failed to create dma pool\n"); in slic_init_tx_queue()
878 netdev_err(sdev->netdev, in slic_init_tx_queue()
906 static void slic_free_tx_queue(struct slic_device *sdev) in slic_free_tx_queue() argument
908 struct slic_tx_queue *txq = &sdev->txq; in slic_free_tx_queue()
918 dma_unmap_single(&sdev->pdev->dev, in slic_free_tx_queue()
928 static int slic_init_rx_queue(struct slic_device *sdev) in slic_init_rx_queue() argument
930 struct slic_rx_queue *rxq = &sdev->rxq; in slic_init_rx_queue()
942 slic_refill_rx_queue(sdev, GFP_KERNEL); in slic_init_rx_queue()
947 static void slic_free_rx_queue(struct slic_device *sdev) in slic_free_rx_queue() argument
949 struct slic_rx_queue *rxq = &sdev->rxq; in slic_free_rx_queue()
960 dma_unmap_single(&sdev->pdev->dev, in slic_free_rx_queue()
969 static void slic_set_link_autoneg(struct slic_device *sdev) in slic_set_link_autoneg() argument
971 unsigned int subid = sdev->pdev->subsystem_device; in slic_set_link_autoneg()
974 if (sdev->is_fiber) { in slic_set_link_autoneg()
982 slic_write(sdev, SLIC_REG_WPHY, val); in slic_set_link_autoneg()
986 slic_write(sdev, SLIC_REG_WPHY, val); in slic_set_link_autoneg()
998 slic_write(sdev, SLIC_REG_WPHY, val); in slic_set_link_autoneg()
1002 slic_write(sdev, SLIC_REG_WPHY, val); in slic_set_link_autoneg()
1007 slic_write(sdev, SLIC_REG_WPHY, val); in slic_set_link_autoneg()
1012 slic_write(sdev, SLIC_REG_WPHY, val); in slic_set_link_autoneg()
1016 slic_write(sdev, SLIC_REG_WPHY, val); in slic_set_link_autoneg()
1021 static void slic_set_mac_address(struct slic_device *sdev) in slic_set_mac_address() argument
1023 u8 *addr = sdev->netdev->dev_addr; in slic_set_mac_address()
1028 slic_write(sdev, SLIC_REG_WRADDRAL, val); in slic_set_mac_address()
1029 slic_write(sdev, SLIC_REG_WRADDRBL, val); in slic_set_mac_address()
1033 slic_write(sdev, SLIC_REG_WRADDRAH, val); in slic_set_mac_address()
1034 slic_write(sdev, SLIC_REG_WRADDRBH, val); in slic_set_mac_address()
1035 slic_flush_write(sdev); in slic_set_mac_address()
1053 static int slic_load_rcvseq_firmware(struct slic_device *sdev) in slic_load_rcvseq_firmware() argument
1063 file = (sdev->model == SLIC_MODEL_OASIS) ? SLIC_RCV_FIRMWARE_OASIS : in slic_load_rcvseq_firmware()
1065 err = request_firmware(&fw, file, &sdev->pdev->dev); in slic_load_rcvseq_firmware()
1067 dev_err(&sdev->pdev->dev, in slic_load_rcvseq_firmware()
1075 dev_err(&sdev->pdev->dev, in slic_load_rcvseq_firmware()
1086 dev_err(&sdev->pdev->dev, in slic_load_rcvseq_firmware()
1093 slic_write(sdev, SLIC_REG_RCV_WCS, SLIC_RCVWCS_BEGIN); in slic_load_rcvseq_firmware()
1097 slic_write(sdev, SLIC_REG_RCV_WCS, addr); in slic_load_rcvseq_firmware()
1101 slic_write(sdev, SLIC_REG_RCV_WCS, instr); in slic_load_rcvseq_firmware()
1107 slic_write(sdev, SLIC_REG_RCV_WCS, instr); in slic_load_rcvseq_firmware()
1110 slic_write(sdev, SLIC_REG_RCV_WCS, SLIC_RCVWCS_FINISH); in slic_load_rcvseq_firmware()
1111 slic_flush_write(sdev); in slic_load_rcvseq_firmware()
1121 static int slic_load_firmware(struct slic_device *sdev) in slic_load_firmware() argument
1138 file = (sdev->model == SLIC_MODEL_OASIS) ? SLIC_FIRMWARE_OASIS : in slic_load_firmware()
1140 err = request_firmware(&fw, file, &sdev->pdev->dev); in slic_load_firmware()
1142 dev_err(&sdev->pdev->dev, "failed to load firmware %s\n", file); in slic_load_firmware()
1149 dev_err(&sdev->pdev->dev, in slic_load_firmware()
1158 dev_err(&sdev->pdev->dev, in slic_load_firmware()
1172 dev_err(&sdev->pdev->dev, in slic_load_firmware()
1192 slic_write(sdev, SLIC_REG_WCS, base + addr); in slic_load_firmware()
1194 slic_write(sdev, SLIC_REG_WCS, instr); in slic_load_firmware()
1197 slic_write(sdev, SLIC_REG_WCS, instr); in slic_load_firmware()
1214 slic_write(sdev, SLIC_REG_WCS, in slic_load_firmware()
1217 slic_write(sdev, SLIC_REG_WCS, instr); in slic_load_firmware()
1220 slic_write(sdev, SLIC_REG_WCS, instr); in slic_load_firmware()
1224 slic_flush_write(sdev); in slic_load_firmware()
1227 slic_write(sdev, SLIC_REG_WCS, SLIC_WCS_START); in slic_load_firmware()
1228 slic_flush_write(sdev); in slic_load_firmware()
1237 static int slic_init_shmem(struct slic_device *sdev) in slic_init_shmem() argument
1239 struct slic_shmem *sm = &sdev->shmem; in slic_init_shmem()
1243 sm_data = dma_zalloc_coherent(&sdev->pdev->dev, sizeof(*sm_data), in slic_init_shmem()
1246 dev_err(&sdev->pdev->dev, "failed to allocate shared memory\n"); in slic_init_shmem()
1257 static void slic_free_shmem(struct slic_device *sdev) in slic_free_shmem() argument
1259 struct slic_shmem *sm = &sdev->shmem; in slic_free_shmem()
1262 dma_free_coherent(&sdev->pdev->dev, sizeof(*sm_data), sm_data, in slic_free_shmem()
1266 static int slic_init_iface(struct slic_device *sdev) in slic_init_iface() argument
1268 struct slic_shmem *sm = &sdev->shmem; in slic_init_iface()
1271 sdev->upr_list.pending = false; in slic_init_iface()
1273 err = slic_init_shmem(sdev); in slic_init_iface()
1275 netdev_err(sdev->netdev, "failed to init shared memory\n"); in slic_init_iface()
1279 err = slic_load_firmware(sdev); in slic_init_iface()
1281 netdev_err(sdev->netdev, "failed to load firmware\n"); in slic_init_iface()
1285 err = slic_load_rcvseq_firmware(sdev); in slic_init_iface()
1287 netdev_err(sdev->netdev, in slic_init_iface()
1292 slic_write(sdev, SLIC_REG_ICR, SLIC_ICR_INT_OFF); in slic_init_iface()
1293 slic_flush_write(sdev); in slic_init_iface()
1296 err = slic_init_rx_queue(sdev); in slic_init_iface()
1298 netdev_err(sdev->netdev, "failed to init rx queue: %u\n", err); in slic_init_iface()
1302 err = slic_init_tx_queue(sdev); in slic_init_iface()
1304 netdev_err(sdev->netdev, "failed to init tx queue: %u\n", err); in slic_init_iface()
1308 err = slic_init_stat_queue(sdev); in slic_init_iface()
1310 netdev_err(sdev->netdev, "failed to init status queue: %u\n", in slic_init_iface()
1315 slic_write(sdev, SLIC_REG_ISP, lower_32_bits(sm->isr_paddr)); in slic_init_iface()
1316 napi_enable(&sdev->napi); in slic_init_iface()
1318 slic_write(sdev, SLIC_REG_INTAGG, 0); in slic_init_iface()
1319 slic_write(sdev, SLIC_REG_ISR, 0); in slic_init_iface()
1320 slic_flush_write(sdev); in slic_init_iface()
1322 slic_set_mac_address(sdev); in slic_init_iface()
1324 spin_lock_bh(&sdev->link_lock); in slic_init_iface()
1325 sdev->duplex = DUPLEX_UNKNOWN; in slic_init_iface()
1326 sdev->speed = SPEED_UNKNOWN; in slic_init_iface()
1327 spin_unlock_bh(&sdev->link_lock); in slic_init_iface()
1329 slic_set_link_autoneg(sdev); in slic_init_iface()
1331 err = request_irq(sdev->pdev->irq, slic_irq, IRQF_SHARED, DRV_NAME, in slic_init_iface()
1332 sdev); in slic_init_iface()
1334 netdev_err(sdev->netdev, "failed to request irq: %u\n", err); in slic_init_iface()
1338 slic_write(sdev, SLIC_REG_ICR, SLIC_ICR_INT_ON); in slic_init_iface()
1339 slic_flush_write(sdev); in slic_init_iface()
1341 err = slic_handle_link_change(sdev); in slic_init_iface()
1343 netdev_warn(sdev->netdev, in slic_init_iface()
1348 napi_disable(&sdev->napi); in slic_init_iface()
1349 slic_free_stat_queue(sdev); in slic_init_iface()
1351 slic_free_tx_queue(sdev); in slic_init_iface()
1353 slic_free_rx_queue(sdev); in slic_init_iface()
1355 slic_free_shmem(sdev); in slic_init_iface()
1356 slic_card_reset(sdev); in slic_init_iface()
1363 struct slic_device *sdev = netdev_priv(dev); in slic_open() local
1368 err = slic_init_iface(sdev); in slic_open()
1381 struct slic_device *sdev = netdev_priv(dev); in slic_close() local
1387 napi_disable(&sdev->napi); in slic_close()
1388 slic_write(sdev, SLIC_REG_ICR, SLIC_ICR_INT_OFF); in slic_close()
1389 slic_write(sdev, SLIC_REG_ISR, 0); in slic_close()
1390 slic_flush_write(sdev); in slic_close()
1392 free_irq(sdev->pdev->irq, sdev); in slic_close()
1395 slic_write(sdev, SLIC_REG_WXCFG, val); in slic_close()
1399 slic_write(sdev, SLIC_REG_WRCFG, val); in slic_close()
1402 slic_write(sdev, SLIC_REG_WPHY, val); in slic_close()
1403 slic_flush_write(sdev); in slic_close()
1405 slic_clear_upr_list(&sdev->upr_list); in slic_close()
1406 slic_write(sdev, SLIC_REG_QUIESCE, 0); in slic_close()
1408 slic_free_stat_queue(sdev); in slic_close()
1409 slic_free_tx_queue(sdev); in slic_close()
1410 slic_free_rx_queue(sdev); in slic_close()
1411 slic_free_shmem(sdev); in slic_close()
1413 slic_card_reset(sdev); in slic_close()
1421 struct slic_device *sdev = netdev_priv(dev); in slic_xmit() local
1422 struct slic_tx_queue *txq = &sdev->txq; in slic_xmit()
1436 paddr = dma_map_single(&sdev->pdev->dev, skb->data, maplen, in slic_xmit()
1438 if (dma_mapping_error(&sdev->pdev->dev, paddr)) { in slic_xmit()
1460 slic_write(sdev, SLIC_REG_CBAR, cbar_val); in slic_xmit()
1477 struct slic_device *sdev = netdev_priv(dev); in slic_get_stats() local
1478 struct slic_stats *stats = &sdev->stats; in slic_get_stats()
1507 struct slic_device *sdev = netdev_priv(dev); in slic_get_ethtool_stats() local
1508 struct slic_stats *stats = &sdev->stats; in slic_get_ethtool_stats()
1546 struct slic_device *sdev = netdev_priv(dev); in slic_get_drvinfo() local
1550 strlcpy(info->bus_info, pci_name(sdev->pdev), sizeof(info->bus_info)); in slic_get_drvinfo()
1610 static int slic_read_eeprom(struct slic_device *sdev) in slic_read_eeprom() argument
1612 unsigned int devfn = PCI_FUNC(sdev->pdev->devfn); in slic_read_eeprom()
1613 struct slic_shmem *sm = &sdev->shmem; in slic_read_eeprom()
1624 eeprom = dma_zalloc_coherent(&sdev->pdev->dev, SLIC_EEPROM_SIZE, in slic_read_eeprom()
1629 slic_write(sdev, SLIC_REG_ICR, SLIC_ICR_INT_OFF); in slic_read_eeprom()
1631 slic_write(sdev, SLIC_REG_ISP, lower_32_bits(sm->isr_paddr)); in slic_read_eeprom()
1633 err = slic_new_upr(sdev, SLIC_UPR_CONFIG, paddr); in slic_read_eeprom()
1641 dev_err(&sdev->pdev->dev, in slic_read_eeprom()
1645 upr = slic_dequeue_upr(sdev); in slic_read_eeprom()
1649 slic_write(sdev, SLIC_REG_ISP, 0); in slic_read_eeprom()
1650 slic_write(sdev, SLIC_REG_ISR, 0); in slic_read_eeprom()
1651 slic_flush_write(sdev); in slic_read_eeprom()
1656 if (sdev->model == SLIC_MODEL_OASIS) { in slic_read_eeprom()
1673 dev_err(&sdev->pdev->dev, "invalid checksum in eeprom\n"); in slic_read_eeprom()
1678 ether_addr_copy(sdev->netdev->dev_addr, mac[devfn]); in slic_read_eeprom()
1680 dma_free_coherent(&sdev->pdev->dev, SLIC_EEPROM_SIZE, eeprom, paddr); in slic_read_eeprom()
1685 static int slic_init(struct slic_device *sdev) in slic_init() argument
1689 spin_lock_init(&sdev->upper_lock); in slic_init()
1690 spin_lock_init(&sdev->link_lock); in slic_init()
1691 INIT_LIST_HEAD(&sdev->upr_list.list); in slic_init()
1692 spin_lock_init(&sdev->upr_list.lock); in slic_init()
1693 u64_stats_init(&sdev->stats.syncp); in slic_init()
1695 slic_card_reset(sdev); in slic_init()
1697 err = slic_load_firmware(sdev); in slic_init()
1699 dev_err(&sdev->pdev->dev, "failed to load firmware\n"); in slic_init()
1704 err = slic_init_shmem(sdev); in slic_init()
1706 dev_err(&sdev->pdev->dev, "failed to init shared memory\n"); in slic_init()
1710 err = slic_read_eeprom(sdev); in slic_init()
1712 dev_err(&sdev->pdev->dev, "failed to read eeprom\n"); in slic_init()
1716 slic_card_reset(sdev); in slic_init()
1717 slic_free_shmem(sdev); in slic_init()
1721 slic_free_shmem(sdev); in slic_init()
1756 struct slic_device *sdev; in slic_probe() local
1785 dev = alloc_etherdev(sizeof(*sdev)); in slic_probe()
1801 sdev = netdev_priv(dev); in slic_probe()
1802 sdev->model = (pdev->device == PCI_DEVICE_ID_ALACRITECH_OASIS) ? in slic_probe()
1804 sdev->is_fiber = slic_is_fiber(pdev->subsystem_device); in slic_probe()
1805 sdev->pdev = pdev; in slic_probe()
1806 sdev->netdev = dev; in slic_probe()
1807 sdev->regs = ioremap_nocache(pci_resource_start(pdev, 0), in slic_probe()
1809 if (!sdev->regs) { in slic_probe()
1815 err = slic_init(sdev); in slic_probe()
1821 netif_napi_add(dev, &sdev->napi, slic_poll, SLIC_NAPI_WEIGHT); in slic_probe()
1833 iounmap(sdev->regs); in slic_probe()
1847 struct slic_device *sdev = netdev_priv(dev); in slic_remove() local
1850 iounmap(sdev->regs); in slic_remove()