• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6/drivers/net/

Lines Matching refs:ks

149  * @ks: The chip state
155 static void ks8851_wrreg16(struct ks8851_net *ks, unsigned reg, unsigned val)
157 struct spi_transfer *xfer = &ks->spi_xfer1;
158 struct spi_message *msg = &ks->spi_msg1;
169 ret = spi_sync(ks->spidev, msg);
171 netdev_err(ks->netdev, "spi_sync() failed\n");
176 * @ks: The chip state
182 static void ks8851_wrreg8(struct ks8851_net *ks, unsigned reg, unsigned val)
184 struct spi_transfer *xfer = &ks->spi_xfer1;
185 struct spi_message *msg = &ks->spi_msg1;
199 ret = spi_sync(ks->spidev, msg);
201 netdev_err(ks->netdev, "spi_sync() failed\n");
206 * @ks: The device structure
218 static inline bool ks8851_rx_1msg(struct ks8851_net *ks)
225 * @ks: The device state
233 static void ks8851_rdreg(struct ks8851_net *ks, unsigned op,
238 __le16 *txb = (__le16 *)ks->txd;
239 u8 *trx = ks->rxd;
244 if (ks8851_rx_1msg(ks)) {
245 msg = &ks->spi_msg1;
246 xfer = &ks->spi_xfer1;
252 msg = &ks->spi_msg2;
253 xfer = ks->spi_xfer2;
265 ret = spi_sync(ks->spidev, msg);
267 netdev_err(ks->netdev, "read: spi_sync() failed\n");
268 else if (ks8851_rx_1msg(ks))
276 * @ks: The chip information
281 static unsigned ks8851_rdreg8(struct ks8851_net *ks, unsigned reg)
285 ks8851_rdreg(ks, MK_OP(1 << (reg & 3), reg), rxb, 1);
291 * @ks: The chip information
296 static unsigned ks8851_rdreg16(struct ks8851_net *ks, unsigned reg)
300 ks8851_rdreg(ks, MK_OP(reg & 2 ? 0xC : 0x3, reg), (u8 *)&rx, 2);
306 * @ks: The chip information
313 static unsigned ks8851_rdreg32(struct ks8851_net *ks, unsigned reg)
319 ks8851_rdreg(ks, MK_OP(0xf, reg), (u8 *)&rx, 4);
325 * @ks: The device state.
336 static void ks8851_soft_reset(struct ks8851_net *ks, unsigned op)
338 ks8851_wrreg16(ks, KS_GRR, op);
340 ks8851_wrreg16(ks, KS_GRR, 0);
355 struct ks8851_net *ks = netdev_priv(dev);
358 mutex_lock(&ks->lock);
361 ks8851_wrreg8(ks, KS_MAR(i), dev->dev_addr[i]);
363 mutex_unlock(&ks->lock);
370 * @ks: The device structure
380 static void ks8851_init_mac(struct ks8851_net *ks)
382 struct net_device *dev = ks->netdev;
398 struct ks8851_net *ks = pw;
401 schedule_work(&ks->irq_work);
407 * @ks: The device state.
414 static void ks8851_rdfifo(struct ks8851_net *ks, u8 *buff, unsigned len)
416 struct spi_transfer *xfer = ks->spi_xfer2;
417 struct spi_message *msg = &ks->spi_msg2;
421 netif_dbg(ks, rx_status, ks->netdev,
436 ret = spi_sync(ks->spidev, msg);
438 netdev_err(ks->netdev, "%s: spi_sync() failed\n", __func__);
443 * @ks: The device state
448 static void ks8851_dbg_dumpkkt(struct ks8851_net *ks, u8 *rxpkt)
450 netdev_dbg(ks->netdev,
459 * @ks: The device information.
465 static void ks8851_rx_pkts(struct ks8851_net *ks)
474 rxfc = ks8851_rdreg8(ks, KS_RXFC);
476 netif_dbg(ks, rx_status, ks->netdev,
490 rxh = ks8851_rdreg32(ks, KS_RXFHSR);
494 netif_dbg(ks, rx_status, ks->netdev,
500 ks8851_wrreg16(ks, KS_RXFDPR, RXFDPR_RXFPAI | 0x00);
503 ks8851_wrreg16(ks, KS_RXQCR,
504 ks->rc_rxqcr | RXQCR_SDA | RXQCR_ADRFE);
511 skb = netdev_alloc_skb_ip_align(ks->netdev, rxalign);
522 ks8851_rdfifo(ks, rxpkt, rxalign + 8);
524 if (netif_msg_pktdata(ks))
525 ks8851_dbg_dumpkkt(ks, rxpkt);
527 skb->protocol = eth_type_trans(skb, ks->netdev);
530 ks->netdev->stats.rx_packets++;
531 ks->netdev->stats.rx_bytes += rxlen;
535 ks8851_wrreg16(ks, KS_RXQCR, ks->rc_rxqcr);
552 struct ks8851_net *ks = container_of(work, struct ks8851_net, irq_work);
556 mutex_lock(&ks->lock);
558 status = ks8851_rdreg16(ks, KS_ISR);
560 netif_dbg(ks, intr, ks->netdev,
569 u16 pmecr = ks8851_rdreg16(ks, KS_PMECR);
571 ks8851_wrreg16(ks, KS_PMECR, pmecr | PMECR_WKEVT_LINK);
586 ks->tx_space = ks8851_rdreg16(ks, KS_TXMIR);
588 netif_dbg(ks, intr, ks->netdev,
589 "%s: txspace %d\n", __func__, ks->tx_space);
596 dev_err(&ks->spidev->dev, "%s: spi bus error\n", __func__);
600 ks8851_wrreg16(ks, KS_ISR, handled);
608 ks8851_rx_pkts(ks);
615 struct ks8851_rxctrl *rxc = &ks->rxctrl;
618 ks8851_wrreg16(ks, KS_MAHTR0, rxc->mchash[0]);
619 ks8851_wrreg16(ks, KS_MAHTR1, rxc->mchash[1]);
620 ks8851_wrreg16(ks, KS_MAHTR2, rxc->mchash[2]);
621 ks8851_wrreg16(ks, KS_MAHTR3, rxc->mchash[3]);
623 ks8851_wrreg16(ks, KS_RXCR2, rxc->rxcr2);
624 ks8851_wrreg16(ks, KS_RXCR1, rxc->rxcr1);
627 mutex_unlock(&ks->lock);
630 netif_wake_queue(ks->netdev);
632 enable_irq(ks->netdev->irq);
649 * @ks: The device state.
658 static void ks8851_wrpkt(struct ks8851_net *ks, struct sk_buff *txp, bool irq)
660 struct spi_transfer *xfer = ks->spi_xfer2;
661 struct spi_message *msg = &ks->spi_msg2;
665 netif_dbg(ks, tx_queued, ks->netdev, "%s: skb %p, %d@%p, irq %d\n",
668 fid = ks->fid++;
675 ks->txh.txb[1] = KS_SPIOP_TXFIFO;
676 ks->txh.txw[1] = cpu_to_le16(fid);
677 ks->txh.txw[2] = cpu_to_le16(txp->len);
679 xfer->tx_buf = &ks->txh.txb[1];
688 ret = spi_sync(ks->spidev, msg);
690 netdev_err(ks->netdev, "%s: spi_sync() failed\n", __func__);
695 * @ks: The device state
698 static void ks8851_done_tx(struct ks8851_net *ks, struct sk_buff *txb)
700 struct net_device *dev = ks->netdev;
717 struct ks8851_net *ks = container_of(work, struct ks8851_net, tx_work);
719 bool last = skb_queue_empty(&ks->txq);
721 mutex_lock(&ks->lock);
724 txb = skb_dequeue(&ks->txq);
725 last = skb_queue_empty(&ks->txq);
728 ks8851_wrreg16(ks, KS_RXQCR, ks->rc_rxqcr | RXQCR_SDA);
729 ks8851_wrpkt(ks, txb, last);
730 ks8851_wrreg16(ks, KS_RXQCR, ks->rc_rxqcr);
731 ks8851_wrreg16(ks, KS_TXQCR, TXQCR_METFE);
733 ks8851_done_tx(ks, txb);
737 mutex_unlock(&ks->lock);
742 * @ks: The device state
747 static void ks8851_set_powermode(struct ks8851_net *ks, unsigned pwrmode)
751 netif_dbg(ks, hw, ks->netdev, "setting power mode %d\n", pwrmode);
753 pmecr = ks8851_rdreg16(ks, KS_PMECR);
757 ks8851_wrreg16(ks, KS_PMECR, pmecr);
769 struct ks8851_net *ks = netdev_priv(dev);
773 mutex_lock(&ks->lock);
775 netif_dbg(ks, ifup, ks->netdev, "opening\n");
778 ks8851_set_powermode(ks, PMECR_PM_NORMAL);
782 ks8851_soft_reset(ks, GRR_QMU);
786 ks8851_wrreg16(ks, KS_TXCR, (TXCR_TXE | /* enable transmit process */
792 ks8851_wrreg16(ks, KS_TXFDPR, TXFDPR_TXFPAI);
796 ks8851_wrreg16(ks, KS_RXCR1, (RXCR1_RXPAFMA | /* from mac filter */
803 ks8851_wrreg16(ks, KS_RXCR2, RXCR2_SRDBL_FRAME);
806 ks8851_wrreg16(ks, KS_RXDTTR, 1000); /* 1ms after first frame to IRQ */
807 ks8851_wrreg16(ks, KS_RXDBCTR, 4096); /* >4Kbytes in buffer to IRQ */
808 ks8851_wrreg16(ks, KS_RXFCTR, 10); /* 10 frames to IRQ */
810 ks->rc_rxqcr = (RXQCR_RXFCTE | /* IRQ on frame count exceeded */
814 ks8851_wrreg16(ks, KS_RXQCR, ks->rc_rxqcr);
825 ks->rc_ier = STD_IRQ;
826 ks8851_wrreg16(ks, KS_ISR, STD_IRQ);
827 ks8851_wrreg16(ks, KS_IER, STD_IRQ);
829 netif_start_queue(ks->netdev);
831 netif_dbg(ks, ifup, ks->netdev, "network device up\n");
833 mutex_unlock(&ks->lock);
847 struct ks8851_net *ks = netdev_priv(dev);
849 netif_info(ks, ifdown, dev, "shutting down\n");
853 mutex_lock(&ks->lock);
856 flush_work(&ks->irq_work);
857 flush_work(&ks->tx_work);
858 flush_work(&ks->rxctrl_work);
861 ks8851_wrreg16(ks, KS_IER, 0x0000);
862 ks8851_wrreg16(ks, KS_ISR, 0xffff);
865 ks8851_wrreg16(ks, KS_RXCR1, 0x0000);
868 ks8851_wrreg16(ks, KS_TXCR, 0x0000);
871 ks8851_set_powermode(ks, PMECR_PM_SOFTDOWN);
874 while (!skb_queue_empty(&ks->txq)) {
875 struct sk_buff *txb = skb_dequeue(&ks->txq);
877 netif_dbg(ks, ifdown, ks->netdev,
883 mutex_unlock(&ks->lock);
903 struct ks8851_net *ks = netdev_priv(dev);
907 netif_dbg(ks, tx_queued, ks->netdev,
910 spin_lock(&ks->statelock);
912 if (needed > ks->tx_space) {
916 ks->tx_space -= needed;
917 skb_queue_tail(&ks->txq, skb);
920 spin_unlock(&ks->statelock);
921 schedule_work(&ks->tx_work);
941 struct ks8851_net *ks = container_of(work, struct ks8851_net, rxctrl_work);
943 mutex_lock(&ks->lock);
946 ks8851_wrreg16(ks, KS_RXCR1, 0x00);
948 mutex_unlock(&ks->lock);
953 struct ks8851_net *ks = netdev_priv(dev);
995 spin_lock(&ks->statelock);
997 if (memcmp(&rxctrl, &ks->rxctrl, sizeof(rxctrl)) != 0) {
998 memcpy(&ks->rxctrl, &rxctrl, sizeof(ks->rxctrl));
999 schedule_work(&ks->rxctrl_work);
1002 spin_unlock(&ks->statelock);
1021 struct ks8851_net *ks = netdev_priv(dev);
1026 return generic_mii_ioctl(&ks->mii, if_mii(req), cmd, NULL);
1067 struct ks8851_net *ks = netdev_priv(dev);
1076 addr_len = (ks->eeprom_size == 128) ? 6 : 8;
1079 mutex_lock(&ks->lock);
1081 ks8851_wrreg16(ks, KS_EEPCR, eepcr);
1083 ks8851_wrreg16(ks, KS_EEPCR, eepcr);
1084 mutex_unlock(&ks->lock);
1111 mutex_lock(&ks->lock);
1112 ks8851_wrreg16(ks, KS_EEPCR, eepcr);
1113 mutex_unlock(&ks->lock);
1121 mutex_lock(&ks->lock);
1123 ks8851_wrreg16(ks, KS_EEPCR, eepcr);
1124 mutex_unlock(&ks->lock);
1135 mutex_lock(&ks->lock);
1136 dummy = ks8851_rdreg16(ks, KS_EEPCR);
1137 mutex_unlock(&ks->lock);
1149 mutex_lock(&ks->lock);
1151 ks8851_wrreg16(ks, KS_EEPCR, eepcr);
1153 ks8851_wrreg16(ks, KS_EEPCR, eepcr);
1154 mutex_unlock(&ks->lock);
1181 struct ks8851_net *ks = netdev_priv(dev);
1187 addr_len = (ks->eeprom_size == 128) ? 6 : 8;
1199 mutex_lock(&ks->lock);
1201 ks8851_wrreg16(ks, KS_EEPCR, eepcr);
1203 ks8851_wrreg16(ks, KS_EEPCR, eepcr);
1204 mutex_unlock(&ks->lock);
1239 mutex_lock(&ks->lock);
1240 ks8851_wrreg16(ks, KS_EEPCR, eepcr);
1241 mutex_unlock(&ks->lock);
1250 mutex_lock(&ks->lock);
1251 ks8851_wrreg16(ks, KS_EEPCR, eepcr);
1252 mutex_unlock(&ks->lock);
1259 mutex_lock(&ks->lock);
1261 ks8851_wrreg16(ks, KS_EEPCR, eepcr);
1263 ks8851_wrreg16(ks, KS_EEPCR, eepcr);
1264 mutex_unlock(&ks->lock);
1280 struct ks8851_net *ks = netdev_priv(dev);
1281 return ks->msg_enable;
1286 struct ks8851_net *ks = netdev_priv(dev);
1287 ks->msg_enable = to;
1292 struct ks8851_net *ks = netdev_priv(dev);
1293 return mii_ethtool_gset(&ks->mii, cmd);
1298 struct ks8851_net *ks = netdev_priv(dev);
1299 return mii_ethtool_sset(&ks->mii, cmd);
1304 struct ks8851_net *ks = netdev_priv(dev);
1305 return mii_link_ok(&ks->mii);
1310 struct ks8851_net *ks = netdev_priv(dev);
1311 return mii_nway_restart(&ks->mii);
1316 struct ks8851_net *ks = netdev_priv(dev);
1317 return ks->eeprom_size;
1323 struct ks8851_net *ks = netdev_priv(dev);
1333 if (eeprom->len > ks->eeprom_size)
1336 eeprom->magic = ks8851_rdreg16(ks, KS_CIDER);
1362 struct ks8851_net *ks = netdev_priv(dev);
1374 if (eeprom->len > ks->eeprom_size)
1377 if (eeprom->magic != ks8851_rdreg16(ks, KS_CIDER))
1485 struct ks8851_net *ks = netdev_priv(dev);
1493 mutex_lock(&ks->lock);
1494 result = ks8851_rdreg16(ks, ksreg);
1495 mutex_unlock(&ks->lock);
1503 struct ks8851_net *ks = netdev_priv(dev);
1508 mutex_lock(&ks->lock);
1509 ks8851_wrreg16(ks, ksreg, value);
1510 mutex_unlock(&ks->lock);
1516 * @ks: The device state
1520 static int ks8851_read_selftest(struct ks8851_net *ks)
1526 rd = ks8851_rdreg16(ks, KS_MBIR);
1529 netdev_warn(ks->netdev, "Memory selftest not finished\n");
1534 netdev_err(ks->netdev, "TX memory selftest fail\n");
1539 netdev_err(ks->netdev, "RX memory selftest fail\n");
1551 struct ks8851_net *ks;
1562 ks = netdev_priv(ndev);
1564 ks->netdev = ndev;
1565 ks->spidev = spi;
1566 ks->tx_space = 6144;
1568 mutex_init(&ks->lock);
1569 spin_lock_init(&ks->statelock);
1571 INIT_WORK(&ks->tx_work, ks8851_tx_work);
1572 INIT_WORK(&ks->irq_work, ks8851_irq_work);
1573 INIT_WORK(&ks->rxctrl_work, ks8851_rxctrl_work);
1577 spi_message_init(&ks->spi_msg1);
1578 spi_message_add_tail(&ks->spi_xfer1, &ks->spi_msg1);
1580 spi_message_init(&ks->spi_msg2);
1581 spi_message_add_tail(&ks->spi_xfer2[0], &ks->spi_msg2);
1582 spi_message_add_tail(&ks->spi_xfer2[1], &ks->spi_msg2);
1585 ks->mii.dev = ndev;
1586 ks->mii.phy_id = 1,
1587 ks->mii.phy_id_mask = 1;
1588 ks->mii.reg_num_mask = 0xf;
1589 ks->mii.mdio_read = ks8851_phy_read;
1590 ks->mii.mdio_write = ks8851_phy_write;
1595 ks->msg_enable = netif_msg_init(msg_enable, (NETIF_MSG_DRV |
1599 skb_queue_head_init(&ks->txq);
1604 dev_set_drvdata(&spi->dev, ks);
1611 ks8851_soft_reset(ks, GRR_GSR);
1615 if ((ks8851_rdreg16(ks, KS_CIDER) & ~CIDER_REV_MASK) != CIDER_ID) {
1622 ks->rc_ccr = ks8851_rdreg16(ks, KS_CCR);
1624 if (ks->rc_ccr & CCR_EEPROM)
1625 ks->eeprom_size = 128;
1627 ks->eeprom_size = 0;
1629 ks8851_read_selftest(ks);
1630 ks8851_init_mac(ks);
1633 ndev->name, ks);
1646 CIDER_REV_GET(ks8851_rdreg16(ks, KS_CIDER)),