Lines Matching defs: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 information.
227 static void ks8851_rx_pkts(struct ks8851_net *ks, struct sk_buff_head *rxq)
235 rxfc = (ks8851_rdreg16(ks, KS_RXFCTR) >> 8) & 0xff;
237 netif_dbg(ks, rx_status, ks->netdev,
251 rxstat = ks8851_rdreg16(ks, KS_RXFHSR);
252 rxlen = ks8851_rdreg16(ks, KS_RXFHBCR) & RXFHBCR_CNT_MASK;
254 netif_dbg(ks, rx_status, ks->netdev,
260 ks8851_wrreg16(ks, KS_RXFDPR, RXFDPR_RXFPAI | 0x00);
263 ks8851_wrreg16(ks, KS_RXQCR, ks->rc_rxqcr | RXQCR_SDA);
270 skb = netdev_alloc_skb_ip_align(ks->netdev, rxalign);
281 ks->rdfifo(ks, rxpkt, rxalign + 8);
283 netif_dbg(ks, pktdata, ks->netdev,
286 skb->protocol = eth_type_trans(skb, ks->netdev);
289 ks->netdev->stats.rx_packets++;
290 ks->netdev->stats.rx_bytes += rxlen;
295 ks8851_wrreg16(ks, KS_RXQCR, ks->rc_rxqcr | RXQCR_RRXEF);
313 struct ks8851_net *ks = _ks;
319 ks8851_lock(ks, &flags);
321 status = ks8851_rdreg16(ks, KS_ISR);
322 ks8851_wrreg16(ks, KS_ISR, status);
324 netif_dbg(ks, intr, ks->netdev,
328 u16 pmecr = ks8851_rdreg16(ks, KS_PMECR);
330 ks8851_wrreg16(ks, KS_PMECR, pmecr | PMECR_WKEVT_LINK);
334 unsigned short tx_space = ks8851_rdreg16(ks, KS_TXMIR);
336 netif_dbg(ks, intr, ks->netdev,
339 spin_lock_bh(&ks->statelock);
340 ks->tx_space = tx_space;
341 if (netif_queue_stopped(ks->netdev))
342 netif_wake_queue(ks->netdev);
343 spin_unlock_bh(&ks->statelock);
347 netdev_err(ks->netdev, "%s: spi bus error\n", __func__);
357 ks8851_rx_pkts(ks, &rxq);
364 struct ks8851_rxctrl *rxc = &ks->rxctrl;
367 ks8851_wrreg16(ks, KS_MAHTR0, rxc->mchash[0]);
368 ks8851_wrreg16(ks, KS_MAHTR1, rxc->mchash[1]);
369 ks8851_wrreg16(ks, KS_MAHTR2, rxc->mchash[2]);
370 ks8851_wrreg16(ks, KS_MAHTR3, rxc->mchash[3]);
372 ks8851_wrreg16(ks, KS_RXCR2, rxc->rxcr2);
373 ks8851_wrreg16(ks, KS_RXCR1, rxc->rxcr1);
376 ks8851_unlock(ks, &flags);
379 mii_check_link(&ks->mii);
390 * @ks: The device state
392 static void ks8851_flush_tx_work(struct ks8851_net *ks)
394 if (ks->flush_tx_work)
395 ks->flush_tx_work(ks);
407 struct ks8851_net *ks = netdev_priv(dev);
413 dev->name, ks);
421 ks8851_lock(ks, &flags);
423 netif_dbg(ks, ifup, ks->netdev, "opening\n");
426 ks8851_set_powermode(ks, PMECR_PM_NORMAL);
430 ks8851_soft_reset(ks, GRR_QMU);
434 ks8851_wrreg16(ks, KS_TXCR, (TXCR_TXE | /* enable transmit process */
440 ks8851_wrreg16(ks, KS_TXFDPR, TXFDPR_TXFPAI);
444 ks8851_wrreg16(ks, KS_RXCR1, (RXCR1_RXPAFMA | /* from mac filter */
451 ks8851_wrreg16(ks, KS_RXCR2, RXCR2_SRDBL_FRAME);
454 ks8851_wrreg16(ks, KS_RXDTTR, 1000); /* 1ms after first frame to IRQ */
455 ks8851_wrreg16(ks, KS_RXDBCTR, 4096); /* >4Kbytes in buffer to IRQ */
456 ks8851_wrreg16(ks, KS_RXFCTR, 10); /* 10 frames to IRQ */
458 ks->rc_rxqcr = (RXQCR_RXFCTE | /* IRQ on frame count exceeded */
462 ks8851_wrreg16(ks, KS_RXQCR, ks->rc_rxqcr);
465 ks8851_wrreg16(ks, KS_ISR, ks->rc_ier);
466 ks8851_wrreg16(ks, KS_IER, ks->rc_ier);
468 ks->queued_len = 0;
469 ks->tx_space = ks8851_rdreg16(ks, KS_TXMIR);
470 netif_start_queue(ks->netdev);
472 netif_dbg(ks, ifup, ks->netdev, "network device up\n");
474 ks8851_unlock(ks, &flags);
475 mii_check_link(&ks->mii);
489 struct ks8851_net *ks = netdev_priv(dev);
492 netif_info(ks, ifdown, dev, "shutting down\n");
496 ks8851_lock(ks, &flags);
498 ks8851_wrreg16(ks, KS_IER, 0x0000);
499 ks8851_wrreg16(ks, KS_ISR, 0xffff);
500 ks8851_unlock(ks, &flags);
503 ks8851_flush_tx_work(ks);
504 flush_work(&ks->rxctrl_work);
506 ks8851_lock(ks, &flags);
508 ks8851_wrreg16(ks, KS_RXCR1, 0x0000);
511 ks8851_wrreg16(ks, KS_TXCR, 0x0000);
514 ks8851_set_powermode(ks, PMECR_PM_SOFTDOWN);
515 ks8851_unlock(ks, &flags);
518 while (!skb_queue_empty(&ks->txq)) {
519 struct sk_buff *txb = skb_dequeue(&ks->txq);
521 netif_dbg(ks, ifdown, ks->netdev,
527 free_irq(dev->irq, ks);
548 struct ks8851_net *ks = netdev_priv(dev);
550 return ks->start_xmit(skb, dev);
568 struct ks8851_net *ks = container_of(work, struct ks8851_net, rxctrl_work);
571 ks8851_lock(ks, &flags);
574 ks8851_wrreg16(ks, KS_RXCR1, 0x00);
576 ks8851_unlock(ks, &flags);
581 struct ks8851_net *ks = netdev_priv(dev);
623 spin_lock_bh(&ks->statelock);
625 if (memcmp(&rxctrl, &ks->rxctrl, sizeof(rxctrl)) != 0) {
626 memcpy(&ks->rxctrl, &rxctrl, sizeof(ks->rxctrl));
627 schedule_work(&ks->rxctrl_work);
630 spin_unlock_bh(&ks->statelock);
649 struct ks8851_net *ks = netdev_priv(dev);
654 return generic_mii_ioctl(&ks->mii, if_mii(req), cmd, NULL);
679 struct ks8851_net *ks = netdev_priv(dev);
680 return ks->msg_enable;
685 struct ks8851_net *ks = netdev_priv(dev);
686 ks->msg_enable = to;
692 struct ks8851_net *ks = netdev_priv(dev);
694 mii_ethtool_get_link_ksettings(&ks->mii, cmd);
702 struct ks8851_net *ks = netdev_priv(dev);
703 return mii_ethtool_set_link_ksettings(&ks->mii, cmd);
708 struct ks8851_net *ks = netdev_priv(dev);
709 return mii_link_ok(&ks->mii);
714 struct ks8851_net *ks = netdev_priv(dev);
715 return mii_nway_restart(&ks->mii);
722 struct ks8851_net *ks = ee->data;
725 val = ks8851_rdreg16(ks, KS_EEPCR);
734 struct ks8851_net *ks = ee->data;
746 ks8851_wrreg16(ks, KS_EEPCR, val);
751 * @ks: The network device state.
756 static int ks8851_eeprom_claim(struct ks8851_net *ks)
759 ks8851_wrreg16(ks, KS_EEPCR, EEPCR_EESA | EEPCR_EECS);
765 * @ks: The device state
769 static void ks8851_eeprom_release(struct ks8851_net *ks)
771 unsigned val = ks8851_rdreg16(ks, KS_EEPCR);
773 ks8851_wrreg16(ks, KS_EEPCR, val & ~EEPCR_EESA);
781 struct ks8851_net *ks = netdev_priv(dev);
794 if (!(ks->rc_ccr & CCR_EEPROM))
797 ks8851_lock(ks, &flags);
799 ks8851_eeprom_claim(ks);
801 eeprom_93cx6_wren(&ks->eeprom, true);
806 eeprom_93cx6_read(&ks->eeprom, offset/2, &tmp);
816 eeprom_93cx6_write(&ks->eeprom, offset/2, tmp);
817 eeprom_93cx6_wren(&ks->eeprom, false);
819 ks8851_eeprom_release(ks);
820 ks8851_unlock(ks, &flags);
828 struct ks8851_net *ks = netdev_priv(dev);
837 if (!(ks->rc_ccr & CCR_EEPROM))
840 ks8851_lock(ks, &flags);
842 ks8851_eeprom_claim(ks);
846 eeprom_93cx6_multiread(&ks->eeprom, offset/2, (__le16 *)data, len/2);
847 ks8851_eeprom_release(ks);
848 ks8851_unlock(ks, &flags);
855 struct ks8851_net *ks = netdev_priv(dev);
858 return ks->rc_ccr & CCR_EEPROM ? 128 : 0;
906 struct ks8851_net *ks = netdev_priv(dev);
915 ks8851_lock(ks, &flags);
916 result = ks8851_rdreg16(ks, ksreg);
917 ks8851_unlock(ks, &flags);
951 struct ks8851_net *ks = netdev_priv(dev);
957 ks8851_lock(ks, &flags);
958 ks8851_wrreg16(ks, ksreg, value);
959 ks8851_unlock(ks, &flags);
965 struct ks8851_net *ks = bus->priv;
976 return ks8851_phy_read_common(ks->netdev, phy_id, reg);
981 struct ks8851_net *ks = bus->priv;
983 ks8851_phy_write(ks->netdev, phy_id, reg, val);
989 * @ks: The device state
993 static void 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");
1009 netdev_err(ks->netdev, "RX memory selftest fail\n");
1018 struct ks8851_net *ks = dev_get_drvdata(dev);
1019 struct net_device *netdev = ks->netdev;
1032 struct ks8851_net *ks = dev_get_drvdata(dev);
1033 struct net_device *netdev = ks->netdev;
1045 static int ks8851_register_mdiobus(struct ks8851_net *ks, struct device *dev)
1057 mii_bus->priv = ks;
1066 ks->mii_bus = mii_bus;
1075 static void ks8851_unregister_mdiobus(struct ks8851_net *ks)
1077 mdiobus_unregister(ks->mii_bus);
1078 mdiobus_free(ks->mii_bus);
1084 struct ks8851_net *ks = netdev_priv(netdev);
1088 ks->netdev = netdev;
1090 ks->gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_HIGH);
1091 ret = PTR_ERR_OR_ZERO(ks->gpio);
1098 ret = gpiod_set_consumer_name(ks->gpio, "ks8851_rst_n");
1104 ks->vdd_io = devm_regulator_get(dev, "vdd-io");
1105 if (IS_ERR(ks->vdd_io)) {
1106 ret = PTR_ERR(ks->vdd_io);
1110 ret = regulator_enable(ks->vdd_io);
1116 ks->vdd_reg = devm_regulator_get(dev, "vdd");
1117 if (IS_ERR(ks->vdd_reg)) {
1118 ret = PTR_ERR(ks->vdd_reg);
1122 ret = regulator_enable(ks->vdd_reg);
1128 if (ks->gpio) {
1130 gpiod_set_value_cansleep(ks->gpio, 0);
1133 spin_lock_init(&ks->statelock);
1135 INIT_WORK(&ks->rxctrl_work, ks8851_rxctrl_work);
1140 ks->eeprom.data = ks;
1141 ks->eeprom.width = PCI_EEPROM_WIDTH_93C46;
1142 ks->eeprom.register_read = ks8851_eeprom_regread;
1143 ks->eeprom.register_write = ks8851_eeprom_regwrite;
1146 ks->mii.dev = netdev;
1147 ks->mii.phy_id = 1;
1148 ks->mii.phy_id_mask = 1;
1149 ks->mii.reg_num_mask = 0xf;
1150 ks->mii.mdio_read = ks8851_phy_read;
1151 ks->mii.mdio_write = ks8851_phy_write;
1155 ret = ks8851_register_mdiobus(ks, dev);
1160 ks->msg_enable = netif_msg_init(msg_en, NETIF_MSG_DRV |
1164 skb_queue_head_init(&ks->txq);
1168 dev_set_drvdata(dev, ks);
1170 netif_carrier_off(ks->netdev);
1175 ks8851_soft_reset(ks, GRR_GSR);
1178 cider = ks8851_rdreg16(ks, KS_CIDER);
1186 ks->rc_ccr = ks8851_rdreg16(ks, KS_CCR);
1188 ks8851_read_selftest(ks);
1189 ks8851_init_mac(ks, dev->of_node);
1199 ks->rc_ccr & CCR_EEPROM ? "has" : "no");
1204 ks8851_unregister_mdiobus(ks);
1206 if (ks->gpio)
1207 gpiod_set_value_cansleep(ks->gpio, 1);
1208 regulator_disable(ks->vdd_reg);
1210 regulator_disable(ks->vdd_io);