Lines Matching refs:ks

30  * @ks: The chip state
35 static void ks8851_lock(struct ks8851_net *ks, unsigned long *flags)
37 ks->lock(ks, flags);
42 * @ks: The chip state
47 static void ks8851_unlock(struct ks8851_net *ks, unsigned long *flags)
49 ks->unlock(ks, flags);
54 * @ks: The chip state
60 static void ks8851_wrreg16(struct ks8851_net *ks, unsigned int reg,
63 ks->wrreg16(ks, reg, val);
68 * @ks: The chip information
73 static unsigned int ks8851_rdreg16(struct ks8851_net *ks,
76 return ks->rdreg16(ks, reg);
81 * @ks: The device state.
92 static void ks8851_soft_reset(struct ks8851_net *ks, unsigned op)
94 ks8851_wrreg16(ks, KS_GRR, op);
96 ks8851_wrreg16(ks, KS_GRR, 0);
102 * @ks: The device state
107 static void ks8851_set_powermode(struct ks8851_net *ks, unsigned pwrmode)
111 netif_dbg(ks, hw, ks->netdev, "setting power mode %d\n", pwrmode);
113 pmecr = ks8851_rdreg16(ks, KS_PMECR);
117 ks8851_wrreg16(ks, KS_PMECR, pmecr);
131 struct ks8851_net *ks = netdev_priv(dev);
136 ks8851_lock(ks, &flags);
142 ks8851_set_powermode(ks, PMECR_PM_NORMAL);
146 ks8851_wrreg16(ks, KS_MAR(i), val);
150 ks8851_set_powermode(ks, PMECR_PM_SOFTDOWN);
152 ks8851_unlock(ks, &flags);
165 struct ks8851_net *ks = netdev_priv(dev);
171 ks8851_lock(ks, &flags);
174 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;
205 if (ks->rc_ccr & CCR_EEPROM) {
210 netdev_err(ks->netdev, "invalid mac address read %pM\n",
220 * @ks: The device state
225 static void ks8851_dbg_dumpkkt(struct ks8851_net *ks, u8 *rxpkt)
227 netdev_dbg(ks->netdev,
236 * @ks: The device information.
242 static void ks8851_rx_pkts(struct ks8851_net *ks)
250 rxfc = (ks8851_rdreg16(ks, KS_RXFCTR) >> 8) & 0xff;
252 netif_dbg(ks, rx_status, ks->netdev,
266 rxstat = ks8851_rdreg16(ks, KS_RXFHSR);
267 rxlen = ks8851_rdreg16(ks, KS_RXFHBCR) & RXFHBCR_CNT_MASK;
269 netif_dbg(ks, rx_status, ks->netdev,
275 ks8851_wrreg16(ks, KS_RXFDPR, RXFDPR_RXFPAI | 0x00);
278 ks8851_wrreg16(ks, KS_RXQCR, ks->rc_rxqcr | RXQCR_SDA);
285 skb = netdev_alloc_skb_ip_align(ks->netdev, rxalign);
296 ks->rdfifo(ks, rxpkt, rxalign + 8);
298 if (netif_msg_pktdata(ks))
299 ks8851_dbg_dumpkkt(ks, rxpkt);
301 skb->protocol = eth_type_trans(skb, ks->netdev);
304 ks->netdev->stats.rx_packets++;
305 ks->netdev->stats.rx_bytes += rxlen;
310 ks8851_wrreg16(ks, KS_RXQCR, ks->rc_rxqcr | RXQCR_RRXEF);
328 struct ks8851_net *ks = _ks;
335 ks8851_lock(ks, &flags);
337 status = ks8851_rdreg16(ks, KS_ISR);
339 netif_dbg(ks, intr, ks->netdev,
346 u16 pmecr = ks8851_rdreg16(ks, KS_PMECR);
348 ks8851_wrreg16(ks, KS_PMECR, pmecr | PMECR_WKEVT_LINK);
357 unsigned short tx_space = ks8851_rdreg16(ks, KS_TXMIR);
359 netif_dbg(ks, intr, ks->netdev,
362 spin_lock(&ks->statelock);
363 ks->tx_space = tx_space;
364 if (netif_queue_stopped(ks->netdev))
365 netif_wake_queue(ks->netdev);
366 spin_unlock(&ks->statelock);
375 netdev_err(ks->netdev, "%s: spi bus error\n", __func__);
379 ks8851_wrreg16(ks, KS_ISR, handled);
387 ks8851_rx_pkts(ks);
394 struct ks8851_rxctrl *rxc = &ks->rxctrl;
397 ks8851_wrreg16(ks, KS_MAHTR0, rxc->mchash[0]);
398 ks8851_wrreg16(ks, KS_MAHTR1, rxc->mchash[1]);
399 ks8851_wrreg16(ks, KS_MAHTR2, rxc->mchash[2]);
400 ks8851_wrreg16(ks, KS_MAHTR3, rxc->mchash[3]);
402 ks8851_wrreg16(ks, KS_RXCR2, rxc->rxcr2);
403 ks8851_wrreg16(ks, KS_RXCR1, rxc->rxcr1);
406 ks8851_unlock(ks, &flags);
409 mii_check_link(&ks->mii);
418 * @ks: The device state
420 static void ks8851_flush_tx_work(struct ks8851_net *ks)
422 if (ks->flush_tx_work)
423 ks->flush_tx_work(ks);
435 struct ks8851_net *ks = netdev_priv(dev);
441 dev->name, ks);
449 ks8851_lock(ks, &flags);
451 netif_dbg(ks, ifup, ks->netdev, "opening\n");
454 ks8851_set_powermode(ks, PMECR_PM_NORMAL);
458 ks8851_soft_reset(ks, GRR_QMU);
462 ks8851_wrreg16(ks, KS_TXCR, (TXCR_TXE | /* enable transmit process */
468 ks8851_wrreg16(ks, KS_TXFDPR, TXFDPR_TXFPAI);
472 ks8851_wrreg16(ks, KS_RXCR1, (RXCR1_RXPAFMA | /* from mac filter */
479 ks8851_wrreg16(ks, KS_RXCR2, RXCR2_SRDBL_FRAME);
482 ks8851_wrreg16(ks, KS_RXDTTR, 1000); /* 1ms after first frame to IRQ */
483 ks8851_wrreg16(ks, KS_RXDBCTR, 4096); /* >4Kbytes in buffer to IRQ */
484 ks8851_wrreg16(ks, KS_RXFCTR, 10); /* 10 frames to IRQ */
486 ks->rc_rxqcr = (RXQCR_RXFCTE | /* IRQ on frame count exceeded */
490 ks8851_wrreg16(ks, KS_RXQCR, ks->rc_rxqcr);
493 ks8851_wrreg16(ks, KS_ISR, ks->rc_ier);
494 ks8851_wrreg16(ks, KS_IER, ks->rc_ier);
496 ks->queued_len = 0;
497 netif_start_queue(ks->netdev);
499 netif_dbg(ks, ifup, ks->netdev, "network device up\n");
501 ks8851_unlock(ks, &flags);
502 mii_check_link(&ks->mii);
516 struct ks8851_net *ks = netdev_priv(dev);
519 netif_info(ks, ifdown, dev, "shutting down\n");
523 ks8851_lock(ks, &flags);
525 ks8851_wrreg16(ks, KS_IER, 0x0000);
526 ks8851_wrreg16(ks, KS_ISR, 0xffff);
527 ks8851_unlock(ks, &flags);
530 ks8851_flush_tx_work(ks);
531 flush_work(&ks->rxctrl_work);
533 ks8851_lock(ks, &flags);
535 ks8851_wrreg16(ks, KS_RXCR1, 0x0000);
538 ks8851_wrreg16(ks, KS_TXCR, 0x0000);
541 ks8851_set_powermode(ks, PMECR_PM_SOFTDOWN);
542 ks8851_unlock(ks, &flags);
545 while (!skb_queue_empty(&ks->txq)) {
546 struct sk_buff *txb = skb_dequeue(&ks->txq);
548 netif_dbg(ks, ifdown, ks->netdev,
554 free_irq(dev->irq, ks);
575 struct ks8851_net *ks = netdev_priv(dev);
577 return ks->start_xmit(skb, dev);
595 struct ks8851_net *ks = container_of(work, struct ks8851_net, rxctrl_work);
598 ks8851_lock(ks, &flags);
601 ks8851_wrreg16(ks, KS_RXCR1, 0x00);
603 ks8851_unlock(ks, &flags);
608 struct ks8851_net *ks = netdev_priv(dev);
650 spin_lock(&ks->statelock);
652 if (memcmp(&rxctrl, &ks->rxctrl, sizeof(rxctrl)) != 0) {
653 memcpy(&ks->rxctrl, &rxctrl, sizeof(ks->rxctrl));
654 schedule_work(&ks->rxctrl_work);
657 spin_unlock(&ks->statelock);
676 struct ks8851_net *ks = netdev_priv(dev);
681 return generic_mii_ioctl(&ks->mii, if_mii(req), cmd, NULL);
706 struct ks8851_net *ks = netdev_priv(dev);
707 return ks->msg_enable;
712 struct ks8851_net *ks = netdev_priv(dev);
713 ks->msg_enable = to;
719 struct ks8851_net *ks = netdev_priv(dev);
721 mii_ethtool_get_link_ksettings(&ks->mii, cmd);
729 struct ks8851_net *ks = netdev_priv(dev);
730 return mii_ethtool_set_link_ksettings(&ks->mii, cmd);
735 struct ks8851_net *ks = netdev_priv(dev);
736 return mii_link_ok(&ks->mii);
741 struct ks8851_net *ks = netdev_priv(dev);
742 return mii_nway_restart(&ks->mii);
749 struct ks8851_net *ks = ee->data;
752 val = ks8851_rdreg16(ks, KS_EEPCR);
761 struct ks8851_net *ks = ee->data;
773 ks8851_wrreg16(ks, KS_EEPCR, val);
778 * @ks: The network device state.
783 static int ks8851_eeprom_claim(struct ks8851_net *ks)
786 ks8851_wrreg16(ks, KS_EEPCR, EEPCR_EESA | EEPCR_EECS);
792 * @ks: The device state
796 static void ks8851_eeprom_release(struct ks8851_net *ks)
798 unsigned val = ks8851_rdreg16(ks, KS_EEPCR);
800 ks8851_wrreg16(ks, KS_EEPCR, val & ~EEPCR_EESA);
808 struct ks8851_net *ks = netdev_priv(dev);
821 if (!(ks->rc_ccr & CCR_EEPROM))
824 ks8851_lock(ks, &flags);
826 ks8851_eeprom_claim(ks);
828 eeprom_93cx6_wren(&ks->eeprom, true);
833 eeprom_93cx6_read(&ks->eeprom, offset/2, &tmp);
843 eeprom_93cx6_write(&ks->eeprom, offset/2, tmp);
844 eeprom_93cx6_wren(&ks->eeprom, false);
846 ks8851_eeprom_release(ks);
847 ks8851_unlock(ks, &flags);
855 struct ks8851_net *ks = netdev_priv(dev);
864 if (!(ks->rc_ccr & CCR_EEPROM))
867 ks8851_lock(ks, &flags);
869 ks8851_eeprom_claim(ks);
873 eeprom_93cx6_multiread(&ks->eeprom, offset/2, (__le16 *)data, len/2);
874 ks8851_eeprom_release(ks);
875 ks8851_unlock(ks, &flags);
882 struct ks8851_net *ks = netdev_priv(dev);
885 return ks->rc_ccr & CCR_EEPROM ? 128 : 0;
933 struct ks8851_net *ks = netdev_priv(dev);
942 ks8851_lock(ks, &flags);
943 result = ks8851_rdreg16(ks, ksreg);
944 ks8851_unlock(ks, &flags);
978 struct ks8851_net *ks = netdev_priv(dev);
984 ks8851_lock(ks, &flags);
985 ks8851_wrreg16(ks, ksreg, value);
986 ks8851_unlock(ks, &flags);
992 struct ks8851_net *ks = bus->priv;
1003 return ks8851_phy_read_common(ks->netdev, phy_id, reg);
1008 struct ks8851_net *ks = bus->priv;
1010 ks8851_phy_write(ks->netdev, phy_id, reg, val);
1016 * @ks: The device state
1020 static void ks8851_read_selftest(struct ks8851_net *ks)
1025 rd = ks8851_rdreg16(ks, KS_MBIR);
1028 netdev_warn(ks->netdev, "Memory selftest not finished\n");
1033 netdev_err(ks->netdev, "TX memory selftest fail\n");
1036 netdev_err(ks->netdev, "RX memory selftest fail\n");
1045 struct ks8851_net *ks = dev_get_drvdata(dev);
1046 struct net_device *netdev = ks->netdev;
1059 struct ks8851_net *ks = dev_get_drvdata(dev);
1060 struct net_device *netdev = ks->netdev;
1072 static int ks8851_register_mdiobus(struct ks8851_net *ks, struct device *dev)
1084 mii_bus->priv = ks;
1093 ks->mii_bus = mii_bus;
1102 static void ks8851_unregister_mdiobus(struct ks8851_net *ks)
1104 mdiobus_unregister(ks->mii_bus);
1105 mdiobus_free(ks->mii_bus);
1111 struct ks8851_net *ks = netdev_priv(netdev);
1115 ks->netdev = netdev;
1116 ks->tx_space = 6144;
1118 ks->gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_HIGH);
1119 ret = PTR_ERR_OR_ZERO(ks->gpio);
1126 ret = gpiod_set_consumer_name(ks->gpio, "ks8851_rst_n");
1132 ks->vdd_io = devm_regulator_get(dev, "vdd-io");
1133 if (IS_ERR(ks->vdd_io)) {
1134 ret = PTR_ERR(ks->vdd_io);
1138 ret = regulator_enable(ks->vdd_io);
1144 ks->vdd_reg = devm_regulator_get(dev, "vdd");
1145 if (IS_ERR(ks->vdd_reg)) {
1146 ret = PTR_ERR(ks->vdd_reg);
1150 ret = regulator_enable(ks->vdd_reg);
1156 if (ks->gpio) {
1158 gpiod_set_value_cansleep(ks->gpio, 0);
1161 spin_lock_init(&ks->statelock);
1163 INIT_WORK(&ks->rxctrl_work, ks8851_rxctrl_work);
1168 ks->eeprom.data = ks;
1169 ks->eeprom.width = PCI_EEPROM_WIDTH_93C46;
1170 ks->eeprom.register_read = ks8851_eeprom_regread;
1171 ks->eeprom.register_write = ks8851_eeprom_regwrite;
1174 ks->mii.dev = netdev;
1175 ks->mii.phy_id = 1;
1176 ks->mii.phy_id_mask = 1;
1177 ks->mii.reg_num_mask = 0xf;
1178 ks->mii.mdio_read = ks8851_phy_read;
1179 ks->mii.mdio_write = ks8851_phy_write;
1183 ret = ks8851_register_mdiobus(ks, dev);
1188 ks->msg_enable = netif_msg_init(msg_en, NETIF_MSG_DRV |
1192 skb_queue_head_init(&ks->txq);
1196 dev_set_drvdata(dev, ks);
1198 netif_carrier_off(ks->netdev);
1203 ks8851_soft_reset(ks, GRR_GSR);
1206 cider = ks8851_rdreg16(ks, KS_CIDER);
1214 ks->rc_ccr = ks8851_rdreg16(ks, KS_CCR);
1216 ks8851_read_selftest(ks);
1217 ks8851_init_mac(ks, dev->of_node);
1227 ks->rc_ccr & CCR_EEPROM ? "has" : "no");
1232 ks8851_unregister_mdiobus(ks);
1234 if (ks->gpio)
1235 gpiod_set_value_cansleep(ks->gpio, 1);
1236 regulator_disable(ks->vdd_reg);
1238 regulator_disable(ks->vdd_io);