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 state.
239 static void ks8851_rx_skb(struct ks8851_net *ks, struct sk_buff *skb)
241 ks->rx_skb(ks, skb);
246 * @ks: The device information.
252 static void ks8851_rx_pkts(struct ks8851_net *ks)
260 rxfc = (ks8851_rdreg16(ks, KS_RXFCTR) >> 8) & 0xff;
262 netif_dbg(ks, rx_status, ks->netdev,
276 rxstat = ks8851_rdreg16(ks, KS_RXFHSR);
277 rxlen = ks8851_rdreg16(ks, KS_RXFHBCR) & RXFHBCR_CNT_MASK;
279 netif_dbg(ks, rx_status, ks->netdev,
285 ks8851_wrreg16(ks, KS_RXFDPR, RXFDPR_RXFPAI | 0x00);
288 ks8851_wrreg16(ks, KS_RXQCR, ks->rc_rxqcr | RXQCR_SDA);
295 skb = netdev_alloc_skb_ip_align(ks->netdev, rxalign);
306 ks->rdfifo(ks, rxpkt, rxalign + 8);
308 if (netif_msg_pktdata(ks))
309 ks8851_dbg_dumpkkt(ks, rxpkt);
311 skb->protocol = eth_type_trans(skb, ks->netdev);
312 ks8851_rx_skb(ks, skb);
314 ks->netdev->stats.rx_packets++;
315 ks->netdev->stats.rx_bytes += rxlen;
320 ks8851_wrreg16(ks, KS_RXQCR, ks->rc_rxqcr | RXQCR_RRXEF);
338 struct ks8851_net *ks = _ks;
343 ks8851_lock(ks, &flags);
345 status = ks8851_rdreg16(ks, KS_ISR);
347 netif_dbg(ks, intr, ks->netdev,
354 u16 pmecr = ks8851_rdreg16(ks, KS_PMECR);
356 ks8851_wrreg16(ks, KS_PMECR, pmecr | PMECR_WKEVT_LINK);
365 unsigned short tx_space = ks8851_rdreg16(ks, KS_TXMIR);
367 netif_dbg(ks, intr, ks->netdev,
370 spin_lock(&ks->statelock);
371 ks->tx_space = tx_space;
372 if (netif_queue_stopped(ks->netdev))
373 netif_wake_queue(ks->netdev);
374 spin_unlock(&ks->statelock);
383 netdev_err(ks->netdev, "%s: spi bus error\n", __func__);
387 ks8851_wrreg16(ks, KS_ISR, handled);
395 ks8851_rx_pkts(ks);
402 struct ks8851_rxctrl *rxc = &ks->rxctrl;
405 ks8851_wrreg16(ks, KS_MAHTR0, rxc->mchash[0]);
406 ks8851_wrreg16(ks, KS_MAHTR1, rxc->mchash[1]);
407 ks8851_wrreg16(ks, KS_MAHTR2, rxc->mchash[2]);
408 ks8851_wrreg16(ks, KS_MAHTR3, rxc->mchash[3]);
410 ks8851_wrreg16(ks, KS_RXCR2, rxc->rxcr2);
411 ks8851_wrreg16(ks, KS_RXCR1, rxc->rxcr1);
414 ks8851_unlock(ks, &flags);
417 mii_check_link(&ks->mii);
424 * @ks: The device state
426 static void ks8851_flush_tx_work(struct ks8851_net *ks)
428 if (ks->flush_tx_work)
429 ks->flush_tx_work(ks);
441 struct ks8851_net *ks = netdev_priv(dev);
447 dev->name, ks);
455 ks8851_lock(ks, &flags);
457 netif_dbg(ks, ifup, ks->netdev, "opening\n");
460 ks8851_set_powermode(ks, PMECR_PM_NORMAL);
464 ks8851_soft_reset(ks, GRR_QMU);
468 ks8851_wrreg16(ks, KS_TXCR, (TXCR_TXE | /* enable transmit process */
474 ks8851_wrreg16(ks, KS_TXFDPR, TXFDPR_TXFPAI);
478 ks8851_wrreg16(ks, KS_RXCR1, (RXCR1_RXPAFMA | /* from mac filter */
485 ks8851_wrreg16(ks, KS_RXCR2, RXCR2_SRDBL_FRAME);
488 ks8851_wrreg16(ks, KS_RXDTTR, 1000); /* 1ms after first frame to IRQ */
489 ks8851_wrreg16(ks, KS_RXDBCTR, 4096); /* >4Kbytes in buffer to IRQ */
490 ks8851_wrreg16(ks, KS_RXFCTR, 10); /* 10 frames to IRQ */
492 ks->rc_rxqcr = (RXQCR_RXFCTE | /* IRQ on frame count exceeded */
496 ks8851_wrreg16(ks, KS_RXQCR, ks->rc_rxqcr);
499 ks8851_wrreg16(ks, KS_ISR, ks->rc_ier);
500 ks8851_wrreg16(ks, KS_IER, ks->rc_ier);
502 ks->queued_len = 0;
503 netif_start_queue(ks->netdev);
505 netif_dbg(ks, ifup, ks->netdev, "network device up\n");
507 ks8851_unlock(ks, &flags);
508 mii_check_link(&ks->mii);
522 struct ks8851_net *ks = netdev_priv(dev);
525 netif_info(ks, ifdown, dev, "shutting down\n");
529 ks8851_lock(ks, &flags);
531 ks8851_wrreg16(ks, KS_IER, 0x0000);
532 ks8851_wrreg16(ks, KS_ISR, 0xffff);
533 ks8851_unlock(ks, &flags);
536 ks8851_flush_tx_work(ks);
537 flush_work(&ks->rxctrl_work);
539 ks8851_lock(ks, &flags);
541 ks8851_wrreg16(ks, KS_RXCR1, 0x0000);
544 ks8851_wrreg16(ks, KS_TXCR, 0x0000);
547 ks8851_set_powermode(ks, PMECR_PM_SOFTDOWN);
548 ks8851_unlock(ks, &flags);
551 while (!skb_queue_empty(&ks->txq)) {
552 struct sk_buff *txb = skb_dequeue(&ks->txq);
554 netif_dbg(ks, ifdown, ks->netdev,
560 free_irq(dev->irq, ks);
581 struct ks8851_net *ks = netdev_priv(dev);
583 return ks->start_xmit(skb, dev);
601 struct ks8851_net *ks = container_of(work, struct ks8851_net, rxctrl_work);
604 ks8851_lock(ks, &flags);
607 ks8851_wrreg16(ks, KS_RXCR1, 0x00);
609 ks8851_unlock(ks, &flags);
614 struct ks8851_net *ks = netdev_priv(dev);
656 spin_lock(&ks->statelock);
658 if (memcmp(&rxctrl, &ks->rxctrl, sizeof(rxctrl)) != 0) {
659 memcpy(&ks->rxctrl, &rxctrl, sizeof(ks->rxctrl));
660 schedule_work(&ks->rxctrl_work);
663 spin_unlock(&ks->statelock);
682 struct ks8851_net *ks = netdev_priv(dev);
687 return generic_mii_ioctl(&ks->mii, if_mii(req), cmd, NULL);
712 struct ks8851_net *ks = netdev_priv(dev);
713 return ks->msg_enable;
718 struct ks8851_net *ks = netdev_priv(dev);
719 ks->msg_enable = to;
725 struct ks8851_net *ks = netdev_priv(dev);
727 mii_ethtool_get_link_ksettings(&ks->mii, cmd);
735 struct ks8851_net *ks = netdev_priv(dev);
736 return mii_ethtool_set_link_ksettings(&ks->mii, cmd);
741 struct ks8851_net *ks = netdev_priv(dev);
742 return mii_link_ok(&ks->mii);
747 struct ks8851_net *ks = netdev_priv(dev);
748 return mii_nway_restart(&ks->mii);
755 struct ks8851_net *ks = ee->data;
758 val = ks8851_rdreg16(ks, KS_EEPCR);
767 struct ks8851_net *ks = ee->data;
779 ks8851_wrreg16(ks, KS_EEPCR, val);
784 * @ks: The network device state.
789 static int ks8851_eeprom_claim(struct ks8851_net *ks)
792 ks8851_wrreg16(ks, KS_EEPCR, EEPCR_EESA | EEPCR_EECS);
798 * @ks: The device state
802 static void ks8851_eeprom_release(struct ks8851_net *ks)
804 unsigned val = ks8851_rdreg16(ks, KS_EEPCR);
806 ks8851_wrreg16(ks, KS_EEPCR, val & ~EEPCR_EESA);
814 struct ks8851_net *ks = netdev_priv(dev);
827 if (!(ks->rc_ccr & CCR_EEPROM))
830 ks8851_lock(ks, &flags);
832 ks8851_eeprom_claim(ks);
834 eeprom_93cx6_wren(&ks->eeprom, true);
839 eeprom_93cx6_read(&ks->eeprom, offset/2, &tmp);
849 eeprom_93cx6_write(&ks->eeprom, offset/2, tmp);
850 eeprom_93cx6_wren(&ks->eeprom, false);
852 ks8851_eeprom_release(ks);
853 ks8851_unlock(ks, &flags);
861 struct ks8851_net *ks = netdev_priv(dev);
870 if (!(ks->rc_ccr & CCR_EEPROM))
873 ks8851_lock(ks, &flags);
875 ks8851_eeprom_claim(ks);
879 eeprom_93cx6_multiread(&ks->eeprom, offset/2, (__le16 *)data, len/2);
880 ks8851_eeprom_release(ks);
881 ks8851_unlock(ks, &flags);
888 struct ks8851_net *ks = netdev_priv(dev);
891 return ks->rc_ccr & CCR_EEPROM ? 128 : 0;
939 struct ks8851_net *ks = netdev_priv(dev);
948 ks8851_lock(ks, &flags);
949 result = ks8851_rdreg16(ks, ksreg);
950 ks8851_unlock(ks, &flags);
984 struct ks8851_net *ks = netdev_priv(dev);
990 ks8851_lock(ks, &flags);
991 ks8851_wrreg16(ks, ksreg, value);
992 ks8851_unlock(ks, &flags);
998 struct ks8851_net *ks = bus->priv;
1009 return ks8851_phy_read_common(ks->netdev, phy_id, reg);
1014 struct ks8851_net *ks = bus->priv;
1016 ks8851_phy_write(ks->netdev, phy_id, reg, val);
1022 * @ks: The device state
1026 static void ks8851_read_selftest(struct ks8851_net *ks)
1031 rd = ks8851_rdreg16(ks, KS_MBIR);
1034 netdev_warn(ks->netdev, "Memory selftest not finished\n");
1039 netdev_err(ks->netdev, "TX memory selftest fail\n");
1042 netdev_err(ks->netdev, "RX memory selftest fail\n");
1051 struct ks8851_net *ks = dev_get_drvdata(dev);
1052 struct net_device *netdev = ks->netdev;
1065 struct ks8851_net *ks = dev_get_drvdata(dev);
1066 struct net_device *netdev = ks->netdev;
1078 static int ks8851_register_mdiobus(struct ks8851_net *ks, struct device *dev)
1090 mii_bus->priv = ks;
1099 ks->mii_bus = mii_bus;
1108 static void ks8851_unregister_mdiobus(struct ks8851_net *ks)
1110 mdiobus_unregister(ks->mii_bus);
1111 mdiobus_free(ks->mii_bus);
1117 struct ks8851_net *ks = netdev_priv(netdev);
1121 ks->netdev = netdev;
1122 ks->tx_space = 6144;
1124 ks->gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_HIGH);
1125 ret = PTR_ERR_OR_ZERO(ks->gpio);
1132 ret = gpiod_set_consumer_name(ks->gpio, "ks8851_rst_n");
1138 ks->vdd_io = devm_regulator_get(dev, "vdd-io");
1139 if (IS_ERR(ks->vdd_io)) {
1140 ret = PTR_ERR(ks->vdd_io);
1144 ret = regulator_enable(ks->vdd_io);
1150 ks->vdd_reg = devm_regulator_get(dev, "vdd");
1151 if (IS_ERR(ks->vdd_reg)) {
1152 ret = PTR_ERR(ks->vdd_reg);
1156 ret = regulator_enable(ks->vdd_reg);
1162 if (ks->gpio) {
1164 gpiod_set_value_cansleep(ks->gpio, 0);
1167 spin_lock_init(&ks->statelock);
1169 INIT_WORK(&ks->rxctrl_work, ks8851_rxctrl_work);
1174 ks->eeprom.data = ks;
1175 ks->eeprom.width = PCI_EEPROM_WIDTH_93C46;
1176 ks->eeprom.register_read = ks8851_eeprom_regread;
1177 ks->eeprom.register_write = ks8851_eeprom_regwrite;
1180 ks->mii.dev = netdev;
1181 ks->mii.phy_id = 1;
1182 ks->mii.phy_id_mask = 1;
1183 ks->mii.reg_num_mask = 0xf;
1184 ks->mii.mdio_read = ks8851_phy_read;
1185 ks->mii.mdio_write = ks8851_phy_write;
1189 ret = ks8851_register_mdiobus(ks, dev);
1194 ks->msg_enable = netif_msg_init(msg_en, NETIF_MSG_DRV |
1198 skb_queue_head_init(&ks->txq);
1202 dev_set_drvdata(dev, ks);
1204 netif_carrier_off(ks->netdev);
1209 ks8851_soft_reset(ks, GRR_GSR);
1212 cider = ks8851_rdreg16(ks, KS_CIDER);
1220 ks->rc_ccr = ks8851_rdreg16(ks, KS_CCR);
1222 ks8851_read_selftest(ks);
1223 ks8851_init_mac(ks, dev->of_node);
1233 ks->rc_ccr & CCR_EEPROM ? "has" : "no");
1238 ks8851_unregister_mdiobus(ks);
1240 if (ks->gpio)
1241 gpiod_set_value_cansleep(ks->gpio, 1);
1242 regulator_disable(ks->vdd_reg);
1244 regulator_disable(ks->vdd_io);