Lines Matching refs:ks
32 * @ks: The chip state
37 static void ks8851_lock(struct ks8851_net *ks, unsigned long *flags)
39 ks->lock(ks, flags);
44 * @ks: The chip state
49 static void ks8851_unlock(struct ks8851_net *ks, unsigned long *flags)
51 ks->unlock(ks, flags);
56 * @ks: The chip state
62 static void ks8851_wrreg16(struct ks8851_net *ks, unsigned int reg,
65 ks->wrreg16(ks, reg, val);
70 * @ks: The chip information
75 static unsigned int ks8851_rdreg16(struct ks8851_net *ks,
78 return ks->rdreg16(ks, reg);
83 * @ks: The device state.
94 static void ks8851_soft_reset(struct ks8851_net *ks, unsigned op)
96 ks8851_wrreg16(ks, KS_GRR, op);
98 ks8851_wrreg16(ks, KS_GRR, 0);
104 * @ks: The device state
109 static void ks8851_set_powermode(struct ks8851_net *ks, unsigned pwrmode)
113 netif_dbg(ks, hw, ks->netdev, "setting power mode %d\n", pwrmode);
115 pmecr = ks8851_rdreg16(ks, KS_PMECR);
119 ks8851_wrreg16(ks, KS_PMECR, pmecr);
133 struct ks8851_net *ks = netdev_priv(dev);
138 ks8851_lock(ks, &flags);
144 ks8851_set_powermode(ks, PMECR_PM_NORMAL);
148 ks8851_wrreg16(ks, KS_MAR(i), val);
152 ks8851_set_powermode(ks, PMECR_PM_SOFTDOWN);
154 ks8851_unlock(ks, &flags);
167 struct ks8851_net *ks = netdev_priv(dev);
172 ks8851_lock(ks, &flags);
175 reg = ks8851_rdreg16(ks, KS_MAR(i));
180 ks8851_unlock(ks, &flags);
185 * @ks: The device structure
194 static void ks8851_init_mac(struct ks8851_net *ks, struct device_node *np)
196 struct net_device *dev = ks->netdev;
206 if (ks->rc_ccr & CCR_EEPROM) {
211 netdev_err(ks->netdev, "invalid mac address read %pM\n",
221 * @ks: The device state
226 static void ks8851_dbg_dumpkkt(struct ks8851_net *ks, u8 *rxpkt)
228 netdev_dbg(ks->netdev,
237 * @ks: The device state.
240 static void ks8851_rx_skb(struct ks8851_net *ks, struct sk_buff *skb)
242 ks->rx_skb(ks, skb);
247 * @ks: The device information.
253 static void ks8851_rx_pkts(struct ks8851_net *ks)
261 rxfc = (ks8851_rdreg16(ks, KS_RXFCTR) >> 8) & 0xff;
263 netif_dbg(ks, rx_status, ks->netdev,
277 rxstat = ks8851_rdreg16(ks, KS_RXFHSR);
278 rxlen = ks8851_rdreg16(ks, KS_RXFHBCR) & RXFHBCR_CNT_MASK;
280 netif_dbg(ks, rx_status, ks->netdev,
286 ks8851_wrreg16(ks, KS_RXFDPR, RXFDPR_RXFPAI | 0x00);
289 ks8851_wrreg16(ks, KS_RXQCR, ks->rc_rxqcr | RXQCR_SDA);
296 skb = netdev_alloc_skb_ip_align(ks->netdev, rxalign);
307 ks->rdfifo(ks, rxpkt, rxalign + 8);
309 if (netif_msg_pktdata(ks))
310 ks8851_dbg_dumpkkt(ks, rxpkt);
312 skb->protocol = eth_type_trans(skb, ks->netdev);
313 ks8851_rx_skb(ks, skb);
315 ks->netdev->stats.rx_packets++;
316 ks->netdev->stats.rx_bytes += rxlen;
321 ks8851_wrreg16(ks, KS_RXQCR, ks->rc_rxqcr | RXQCR_RRXEF);
339 struct ks8851_net *ks = _ks;
344 ks8851_lock(ks, &flags);
346 status = ks8851_rdreg16(ks, KS_ISR);
348 netif_dbg(ks, intr, ks->netdev,
355 u16 pmecr = ks8851_rdreg16(ks, KS_PMECR);
357 ks8851_wrreg16(ks, KS_PMECR, pmecr | PMECR_WKEVT_LINK);
366 unsigned short tx_space = ks8851_rdreg16(ks, KS_TXMIR);
368 netif_dbg(ks, intr, ks->netdev,
371 spin_lock(&ks->statelock);
372 ks->tx_space = tx_space;
373 if (netif_queue_stopped(ks->netdev))
374 netif_wake_queue(ks->netdev);
375 spin_unlock(&ks->statelock);
384 netdev_err(ks->netdev, "%s: spi bus error\n", __func__);
388 ks8851_wrreg16(ks, KS_ISR, handled);
396 ks8851_rx_pkts(ks);
403 struct ks8851_rxctrl *rxc = &ks->rxctrl;
406 ks8851_wrreg16(ks, KS_MAHTR0, rxc->mchash[0]);
407 ks8851_wrreg16(ks, KS_MAHTR1, rxc->mchash[1]);
408 ks8851_wrreg16(ks, KS_MAHTR2, rxc->mchash[2]);
409 ks8851_wrreg16(ks, KS_MAHTR3, rxc->mchash[3]);
411 ks8851_wrreg16(ks, KS_RXCR2, rxc->rxcr2);
412 ks8851_wrreg16(ks, KS_RXCR1, rxc->rxcr1);
415 ks8851_unlock(ks, &flags);
418 mii_check_link(&ks->mii);
425 * @ks: The device state
427 static void ks8851_flush_tx_work(struct ks8851_net *ks)
429 if (ks->flush_tx_work)
430 ks->flush_tx_work(ks);
442 struct ks8851_net *ks = netdev_priv(dev);
448 dev->name, ks);
456 ks8851_lock(ks, &flags);
458 netif_dbg(ks, ifup, ks->netdev, "opening\n");
461 ks8851_set_powermode(ks, PMECR_PM_NORMAL);
465 ks8851_soft_reset(ks, GRR_QMU);
469 ks8851_wrreg16(ks, KS_TXCR, (TXCR_TXE | /* enable transmit process */
475 ks8851_wrreg16(ks, KS_TXFDPR, TXFDPR_TXFPAI);
479 ks8851_wrreg16(ks, KS_RXCR1, (RXCR1_RXPAFMA | /* from mac filter */
486 ks8851_wrreg16(ks, KS_RXCR2, RXCR2_SRDBL_FRAME);
489 ks8851_wrreg16(ks, KS_RXDTTR, 1000); /* 1ms after first frame to IRQ */
490 ks8851_wrreg16(ks, KS_RXDBCTR, 4096); /* >4Kbytes in buffer to IRQ */
491 ks8851_wrreg16(ks, KS_RXFCTR, 10); /* 10 frames to IRQ */
493 ks->rc_rxqcr = (RXQCR_RXFCTE | /* IRQ on frame count exceeded */
497 ks8851_wrreg16(ks, KS_RXQCR, ks->rc_rxqcr);
500 ks8851_wrreg16(ks, KS_ISR, ks->rc_ier);
501 ks8851_wrreg16(ks, KS_IER, ks->rc_ier);
503 ks->queued_len = 0;
504 netif_start_queue(ks->netdev);
506 netif_dbg(ks, ifup, ks->netdev, "network device up\n");
508 ks8851_unlock(ks, &flags);
509 mii_check_link(&ks->mii);
523 struct ks8851_net *ks = netdev_priv(dev);
526 netif_info(ks, ifdown, dev, "shutting down\n");
530 ks8851_lock(ks, &flags);
532 ks8851_wrreg16(ks, KS_IER, 0x0000);
533 ks8851_wrreg16(ks, KS_ISR, 0xffff);
534 ks8851_unlock(ks, &flags);
537 ks8851_flush_tx_work(ks);
538 flush_work(&ks->rxctrl_work);
540 ks8851_lock(ks, &flags);
542 ks8851_wrreg16(ks, KS_RXCR1, 0x0000);
545 ks8851_wrreg16(ks, KS_TXCR, 0x0000);
548 ks8851_set_powermode(ks, PMECR_PM_SOFTDOWN);
549 ks8851_unlock(ks, &flags);
552 while (!skb_queue_empty(&ks->txq)) {
553 struct sk_buff *txb = skb_dequeue(&ks->txq);
555 netif_dbg(ks, ifdown, ks->netdev,
561 free_irq(dev->irq, ks);
582 struct ks8851_net *ks = netdev_priv(dev);
584 return ks->start_xmit(skb, dev);
602 struct ks8851_net *ks = container_of(work, struct ks8851_net, rxctrl_work);
605 ks8851_lock(ks, &flags);
608 ks8851_wrreg16(ks, KS_RXCR1, 0x00);
610 ks8851_unlock(ks, &flags);
615 struct ks8851_net *ks = netdev_priv(dev);
657 spin_lock(&ks->statelock);
659 if (memcmp(&rxctrl, &ks->rxctrl, sizeof(rxctrl)) != 0) {
660 memcpy(&ks->rxctrl, &rxctrl, sizeof(ks->rxctrl));
661 schedule_work(&ks->rxctrl_work);
664 spin_unlock(&ks->statelock);
683 struct ks8851_net *ks = netdev_priv(dev);
688 return generic_mii_ioctl(&ks->mii, if_mii(req), cmd, NULL);
713 struct ks8851_net *ks = netdev_priv(dev);
714 return ks->msg_enable;
719 struct ks8851_net *ks = netdev_priv(dev);
720 ks->msg_enable = to;
726 struct ks8851_net *ks = netdev_priv(dev);
728 mii_ethtool_get_link_ksettings(&ks->mii, cmd);
736 struct ks8851_net *ks = netdev_priv(dev);
737 return mii_ethtool_set_link_ksettings(&ks->mii, cmd);
742 struct ks8851_net *ks = netdev_priv(dev);
743 return mii_link_ok(&ks->mii);
748 struct ks8851_net *ks = netdev_priv(dev);
749 return mii_nway_restart(&ks->mii);
756 struct ks8851_net *ks = ee->data;
759 val = ks8851_rdreg16(ks, KS_EEPCR);
768 struct ks8851_net *ks = ee->data;
780 ks8851_wrreg16(ks, KS_EEPCR, val);
785 * @ks: The network device state.
790 static int ks8851_eeprom_claim(struct ks8851_net *ks)
793 ks8851_wrreg16(ks, KS_EEPCR, EEPCR_EESA | EEPCR_EECS);
799 * @ks: The device state
803 static void ks8851_eeprom_release(struct ks8851_net *ks)
805 unsigned val = ks8851_rdreg16(ks, KS_EEPCR);
807 ks8851_wrreg16(ks, KS_EEPCR, val & ~EEPCR_EESA);
815 struct ks8851_net *ks = netdev_priv(dev);
828 if (!(ks->rc_ccr & CCR_EEPROM))
831 ks8851_lock(ks, &flags);
833 ks8851_eeprom_claim(ks);
835 eeprom_93cx6_wren(&ks->eeprom, true);
840 eeprom_93cx6_read(&ks->eeprom, offset/2, &tmp);
850 eeprom_93cx6_write(&ks->eeprom, offset/2, tmp);
851 eeprom_93cx6_wren(&ks->eeprom, false);
853 ks8851_eeprom_release(ks);
854 ks8851_unlock(ks, &flags);
862 struct ks8851_net *ks = netdev_priv(dev);
871 if (!(ks->rc_ccr & CCR_EEPROM))
874 ks8851_lock(ks, &flags);
876 ks8851_eeprom_claim(ks);
880 eeprom_93cx6_multiread(&ks->eeprom, offset/2, (__le16 *)data, len/2);
881 ks8851_eeprom_release(ks);
882 ks8851_unlock(ks, &flags);
889 struct ks8851_net *ks = netdev_priv(dev);
892 return ks->rc_ccr & CCR_EEPROM ? 128 : 0;
955 struct ks8851_net *ks = netdev_priv(dev);
964 ks8851_lock(ks, &flags);
965 result = ks8851_rdreg16(ks, ksreg);
966 ks8851_unlock(ks, &flags);
974 struct ks8851_net *ks = netdev_priv(dev);
980 ks8851_lock(ks, &flags);
981 ks8851_wrreg16(ks, ksreg, value);
982 ks8851_unlock(ks, &flags);
988 * @ks: The device state
992 static int ks8851_read_selftest(struct ks8851_net *ks)
998 rd = ks8851_rdreg16(ks, KS_MBIR);
1001 netdev_warn(ks->netdev, "Memory selftest not finished\n");
1006 netdev_err(ks->netdev, "TX memory selftest fail\n");
1011 netdev_err(ks->netdev, "RX memory selftest fail\n");
1024 struct ks8851_net *ks = dev_get_drvdata(dev);
1025 struct net_device *netdev = ks->netdev;
1038 struct ks8851_net *ks = dev_get_drvdata(dev);
1039 struct net_device *netdev = ks->netdev;
1054 struct ks8851_net *ks = netdev_priv(netdev);
1059 ks->netdev = netdev;
1060 ks->tx_space = 6144;
1066 ks->gpio = gpio;
1076 ks->vdd_io = devm_regulator_get(dev, "vdd-io");
1077 if (IS_ERR(ks->vdd_io)) {
1078 ret = PTR_ERR(ks->vdd_io);
1082 ret = regulator_enable(ks->vdd_io);
1088 ks->vdd_reg = devm_regulator_get(dev, "vdd");
1089 if (IS_ERR(ks->vdd_reg)) {
1090 ret = PTR_ERR(ks->vdd_reg);
1094 ret = regulator_enable(ks->vdd_reg);
1105 spin_lock_init(&ks->statelock);
1107 INIT_WORK(&ks->rxctrl_work, ks8851_rxctrl_work);
1110 ks->eeprom.data = ks;
1111 ks->eeprom.width = PCI_EEPROM_WIDTH_93C46;
1112 ks->eeprom.register_read = ks8851_eeprom_regread;
1113 ks->eeprom.register_write = ks8851_eeprom_regwrite;
1116 ks->mii.dev = netdev;
1117 ks->mii.phy_id = 1,
1118 ks->mii.phy_id_mask = 1;
1119 ks->mii.reg_num_mask = 0xf;
1120 ks->mii.mdio_read = ks8851_phy_read;
1121 ks->mii.mdio_write = ks8851_phy_write;
1126 ks->msg_enable = netif_msg_init(msg_en, NETIF_MSG_DRV |
1130 skb_queue_head_init(&ks->txq);
1135 dev_set_drvdata(dev, ks);
1137 netif_carrier_off(ks->netdev);
1142 ks8851_soft_reset(ks, GRR_GSR);
1145 cider = ks8851_rdreg16(ks, KS_CIDER);
1153 ks->rc_ccr = ks8851_rdreg16(ks, KS_CCR);
1155 ks8851_read_selftest(ks);
1156 ks8851_init_mac(ks, dev->of_node);
1166 ks->rc_ccr & CCR_EEPROM ? "has" : "no");
1174 regulator_disable(ks->vdd_reg);
1176 regulator_disable(ks->vdd_io);