• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/net/

Lines Matching refs:adapter

158 #define KS8842_USE_DMA(adapter) (((adapter)->dma_tx.channel != -1) && \
159 ((adapter)->dma_rx.channel != -1))
177 static inline void ks8842_resume_dma(struct ks8842_adapter *adapter)
179 iowrite32(1, adapter->hw_addr + REQ_TIMB_DMA_RESUME);
182 static inline void ks8842_select_bank(struct ks8842_adapter *adapter, u16 bank)
184 iowrite16(bank, adapter->hw_addr + REG_SELECT_BANK);
187 static inline void ks8842_write8(struct ks8842_adapter *adapter, u16 bank,
190 ks8842_select_bank(adapter, bank);
191 iowrite8(value, adapter->hw_addr + offset);
194 static inline void ks8842_write16(struct ks8842_adapter *adapter, u16 bank,
197 ks8842_select_bank(adapter, bank);
198 iowrite16(value, adapter->hw_addr + offset);
201 static inline void ks8842_enable_bits(struct ks8842_adapter *adapter, u16 bank,
205 ks8842_select_bank(adapter, bank);
206 reg = ioread16(adapter->hw_addr + offset);
208 iowrite16(reg, adapter->hw_addr + offset);
211 static inline void ks8842_clear_bits(struct ks8842_adapter *adapter, u16 bank,
215 ks8842_select_bank(adapter, bank);
216 reg = ioread16(adapter->hw_addr + offset);
218 iowrite16(reg, adapter->hw_addr + offset);
221 static inline void ks8842_write32(struct ks8842_adapter *adapter, u16 bank,
224 ks8842_select_bank(adapter, bank);
225 iowrite32(value, adapter->hw_addr + offset);
228 static inline u8 ks8842_read8(struct ks8842_adapter *adapter, u16 bank,
231 ks8842_select_bank(adapter, bank);
232 return ioread8(adapter->hw_addr + offset);
235 static inline u16 ks8842_read16(struct ks8842_adapter *adapter, u16 bank,
238 ks8842_select_bank(adapter, bank);
239 return ioread16(adapter->hw_addr + offset);
242 static inline u32 ks8842_read32(struct ks8842_adapter *adapter, u16 bank,
245 ks8842_select_bank(adapter, bank);
246 return ioread32(adapter->hw_addr + offset);
249 static void ks8842_reset(struct ks8842_adapter *adapter)
251 if (adapter->conf_flags & MICREL_KS884X) {
252 ks8842_write16(adapter, 3, 1, REG_GRR);
254 iowrite16(0, adapter->hw_addr + REG_GRR);
256 iowrite32(0x1, adapter->hw_addr + REG_TIMB_RST);
262 struct ks8842_adapter *adapter)
265 if (ks8842_read16(adapter, 45, REG_P1MBSR) & 0x4) {
274 static void ks8842_enable_tx(struct ks8842_adapter *adapter)
276 ks8842_enable_bits(adapter, 16, 0x01, REG_TXCR);
279 static void ks8842_disable_tx(struct ks8842_adapter *adapter)
281 ks8842_clear_bits(adapter, 16, 0x01, REG_TXCR);
284 static void ks8842_enable_rx(struct ks8842_adapter *adapter)
286 ks8842_enable_bits(adapter, 16, 0x01, REG_RXCR);
289 static void ks8842_disable_rx(struct ks8842_adapter *adapter)
291 ks8842_clear_bits(adapter, 16, 0x01, REG_RXCR);
294 static void ks8842_reset_hw(struct ks8842_adapter *adapter)
297 ks8842_reset(adapter);
300 ks8842_write16(adapter, 16, 0x000E, REG_TXCR);
304 ks8842_write16(adapter, 16, 0x8 | 0x20 | 0x40 | 0x80 | 0x400,
308 ks8842_write16(adapter, 17, 0x4000, REG_TXFDPR);
311 ks8842_write16(adapter, 17, 0x4000, REG_RXFDPR);
314 ks8842_write16(adapter, 0, 0x1000, REG_QRFCR);
317 ks8842_enable_bits(adapter, 32, 1 << 8, REG_SGCR1);
320 ks8842_enable_bits(adapter, 32, 1 << 3, REG_SGCR2);
323 ks8842_write16(adapter, 48, 0x1E07, REG_P1CR2);
326 ks8842_enable_bits(adapter, 49, 1 << 13, REG_P1CR4);
329 ks8842_enable_tx(adapter);
332 ks8842_enable_rx(adapter);
335 ks8842_write16(adapter, 18, 0xffff, REG_ISR);
338 if (KS8842_USE_DMA(adapter)) {
343 iowrite16(ENABLED_IRQS_DMA_IP, adapter->hw_addr + REG_TIMB_IER);
344 ks8842_write16(adapter, 18, ENABLED_IRQS_DMA, REG_IER);
346 if (!(adapter->conf_flags & MICREL_KS884X))
348 adapter->hw_addr + REG_TIMB_IER);
349 ks8842_write16(adapter, 18, ENABLED_IRQS, REG_IER);
352 ks8842_write16(adapter, 32, 0x1, REG_SW_ID_AND_ENABLE);
355 static void ks8842_read_mac_addr(struct ks8842_adapter *adapter, u8 *dest)
361 dest[ETH_ALEN - i - 1] = ks8842_read8(adapter, 2, REG_MARL + i);
363 if (adapter->conf_flags & MICREL_KS884X) {
369 mac = ks8842_read16(adapter, 2, REG_MARL);
370 ks8842_write16(adapter, 39, mac, REG_MACAR3);
371 mac = ks8842_read16(adapter, 2, REG_MARM);
372 ks8842_write16(adapter, 39, mac, REG_MACAR2);
373 mac = ks8842_read16(adapter, 2, REG_MARH);
374 ks8842_write16(adapter, 39, mac, REG_MACAR1);
378 mac = ks8842_read16(adapter, 2, REG_MARL);
379 ks8842_write16(adapter, 39, mac, REG_MACAR1);
380 mac = ks8842_read16(adapter, 2, REG_MARM);
381 ks8842_write16(adapter, 39, mac, REG_MACAR2);
382 mac = ks8842_read16(adapter, 2, REG_MARH);
383 ks8842_write16(adapter, 39, mac, REG_MACAR3);
387 static void ks8842_write_mac_addr(struct ks8842_adapter *adapter, u8 *mac)
392 spin_lock_irqsave(&adapter->lock, flags);
394 ks8842_write8(adapter, 2, mac[ETH_ALEN - i - 1], REG_MARL + i);
395 if (!(adapter->conf_flags & MICREL_KS884X))
396 ks8842_write8(adapter, 39, mac[ETH_ALEN - i - 1],
400 if (adapter->conf_flags & MICREL_KS884X) {
408 mac = ks8842_read16(adapter, 2, REG_MARL);
409 ks8842_write16(adapter, 39, mac, REG_MACAR3);
410 mac = ks8842_read16(adapter, 2, REG_MARM);
411 ks8842_write16(adapter, 39, mac, REG_MACAR2);
412 mac = ks8842_read16(adapter, 2, REG_MARH);
413 ks8842_write16(adapter, 39, mac, REG_MACAR1);
415 spin_unlock_irqrestore(&adapter->lock, flags);
418 static inline u16 ks8842_tx_fifo_space(struct ks8842_adapter *adapter)
420 return ks8842_read16(adapter, 16, REG_TXMIR) & 0x1fff;
425 struct ks8842_adapter *adapter = netdev_priv(netdev);
426 struct ks8842_tx_dma_ctl *ctl = &adapter->dma_tx;
445 dma_sync_single_range_for_device(adapter->dev,
472 struct ks8842_adapter *adapter = netdev_priv(netdev);
480 if (ks8842_tx_fifo_space(adapter) < len + 8)
483 if (adapter->conf_flags & KS884X_16BIT) {
485 ks8842_write16(adapter, 17, 0x8000 | 0x100, REG_QMU_DATA_LO);
486 ks8842_write16(adapter, 17, (u16)len, REG_QMU_DATA_HI);
491 iowrite16(*ptr16++, adapter->hw_addr + REG_QMU_DATA_LO);
492 iowrite16(*ptr16++, adapter->hw_addr + REG_QMU_DATA_HI);
501 ks8842_write32(adapter, 17, ctrl, REG_QMU_DATA_LO);
507 iowrite32(*ptr, adapter->hw_addr + REG_QMU_DATA_LO);
514 ks8842_write16(adapter, 17, 1, REG_TXQCR);
547 struct ks8842_adapter *adapter = netdev_priv(netdev);
548 struct ks8842_rx_dma_ctl *ctl = &adapter->dma_rx;
555 sg_dma_address(sg) = dma_map_single(adapter->dev,
557 err = dma_mapping_error(adapter->dev, sg_dma_address(sg));
584 dma_unmap_single(adapter->dev, sg_dma_address(sg),
599 struct ks8842_adapter *adapter = netdev_priv(netdev);
600 struct ks8842_rx_dma_ctl *ctl = &adapter->dma_rx;
611 dma_unmap_single(adapter->dev, addr, DMA_BUFFER_SIZE, DMA_FROM_DEVICE);
637 struct ks8842_adapter *adapter)
642 if (adapter->conf_flags & KS884X_16BIT) {
643 status = ks8842_read16(adapter, 17, REG_QMU_DATA_LO);
644 len = ks8842_read16(adapter, 17, REG_QMU_DATA_HI);
648 status = ks8842_read32(adapter, 17, REG_QMU_DATA_LO);
663 if (adapter->conf_flags & KS884X_16BIT) {
665 ks8842_select_bank(adapter, 17);
667 *data16++ = ioread16(adapter->hw_addr +
669 *data16++ = ioread16(adapter->hw_addr +
676 ks8842_select_bank(adapter, 17);
678 *data++ = ioread32(adapter->hw_addr +
691 ks8842_clear_bits(adapter, 0, 1 << 12, REG_QRFCR);
694 ks8842_write16(adapter, 17, 0x01, REG_RXQCR);
697 ks8842_enable_bits(adapter, 0, 1 << 12, REG_QRFCR);
700 void ks8842_handle_rx(struct net_device *netdev, struct ks8842_adapter *adapter)
702 u16 rx_data = ks8842_read16(adapter, 16, REG_RXMIR) & 0x1fff;
705 ks8842_rx_frame(netdev, adapter);
706 rx_data = ks8842_read16(adapter, 16, REG_RXMIR) & 0x1fff;
710 void ks8842_handle_tx(struct net_device *netdev, struct ks8842_adapter *adapter)
712 u16 sr = ks8842_read16(adapter, 16, REG_TXSR);
720 struct ks8842_adapter *adapter)
730 struct ks8842_adapter *adapter = netdev_priv(netdev);
736 spin_lock_irqsave(&adapter->lock, flags);
737 entry_bank = ioread16(adapter->hw_addr + REG_SELECT_BANK);
738 spin_unlock_irqrestore(&adapter->lock, flags);
740 isr = ks8842_read16(adapter, 18, REG_ISR);
746 if (KS8842_USE_DMA(adapter))
750 ks8842_write16(adapter, 18, isr, REG_ISR);
752 if (!(adapter->conf_flags & MICREL_KS884X))
754 iowrite32(0x1, adapter->hw_addr + REG_TIMB_IAR);
760 ks8842_update_link_status(netdev, adapter);
763 if (isr & (IRQ_RX | IRQ_RX_ERROR) && !KS8842_USE_DMA(adapter))
764 ks8842_handle_rx(netdev, adapter);
768 ks8842_handle_tx(netdev, adapter);
771 ks8842_handle_rx_overrun(netdev, adapter);
774 ks8842_disable_tx(adapter);
775 ks8842_enable_tx(adapter);
779 ks8842_disable_rx(adapter);
780 ks8842_enable_rx(adapter);
784 spin_lock_irqsave(&adapter->lock, flags);
785 if (KS8842_USE_DMA(adapter))
786 ks8842_write16(adapter, 18, ENABLED_IRQS_DMA, REG_IER);
788 ks8842_write16(adapter, 18, ENABLED_IRQS, REG_IER);
789 iowrite16(entry_bank, adapter->hw_addr + REG_SELECT_BANK);
793 if (KS8842_USE_DMA(adapter))
794 ks8842_resume_dma(adapter);
796 spin_unlock_irqrestore(&adapter->lock, flags);
802 struct ks8842_adapter *adapter = netdev_priv(netdev);
804 u16 entry_bank = ioread16(adapter->hw_addr + REG_SELECT_BANK);
807 isr = ks8842_read16(adapter, 18, REG_ISR);
811 if (KS8842_USE_DMA(adapter))
813 ks8842_write16(adapter, 18, IRQ_RX, REG_IER);
816 ks8842_write16(adapter, 18, 0x00, REG_IER);
819 tasklet_schedule(&adapter->tasklet);
824 iowrite16(entry_bank, adapter->hw_addr + REG_SELECT_BANK);
829 ks8842_resume_dma(adapter);
837 struct ks8842_adapter *adapter = netdev_priv(netdev);
841 if (adapter->dma_rx.adesc)
842 tasklet_schedule(&adapter->dma_rx.tasklet);
848 struct ks8842_adapter *adapter = netdev_priv(netdev);
849 struct ks8842_tx_dma_ctl *ctl = &adapter->dma_tx;
863 static void ks8842_stop_dma(struct ks8842_adapter *adapter)
865 struct ks8842_tx_dma_ctl *tx_ctl = &adapter->dma_tx;
866 struct ks8842_rx_dma_ctl *rx_ctl = &adapter->dma_rx;
879 dma_unmap_single(adapter->dev, sg_dma_address(&rx_ctl->sg),
887 static void ks8842_dealloc_dma_bufs(struct ks8842_adapter *adapter)
889 struct ks8842_tx_dma_ctl *tx_ctl = &adapter->dma_tx;
890 struct ks8842_rx_dma_ctl *rx_ctl = &adapter->dma_rx;
892 ks8842_stop_dma(adapter);
905 dma_unmap_single(adapter->dev, sg_dma_address(&tx_ctl->sg),
920 struct ks8842_adapter *adapter = netdev_priv(netdev);
921 struct ks8842_tx_dma_ctl *tx_ctl = &adapter->dma_tx;
922 struct ks8842_rx_dma_ctl *rx_ctl = &adapter->dma_rx;
947 sg_dma_address(&tx_ctl->sg) = dma_map_single(adapter->dev,
949 err = dma_mapping_error(adapter->dev,
968 ks8842_dealloc_dma_bufs(adapter);
976 struct ks8842_adapter *adapter = netdev_priv(netdev);
981 if (KS8842_USE_DMA(adapter)) {
988 ks8842_dealloc_dma_bufs(adapter);
994 ks8842_dealloc_dma_bufs(adapter);
995 adapter->dma_rx.channel = -1;
996 adapter->dma_tx.channel = -1;
1001 ks8842_reset_hw(adapter);
1003 ks8842_write_mac_addr(adapter, netdev->dev_addr);
1005 ks8842_update_link_status(netdev, adapter);
1007 err = request_irq(adapter->irq, ks8842_irq, IRQF_SHARED, DRV_NAME,
1010 pr_err("Failed to request IRQ: %d: %d\n", adapter->irq, err);
1019 struct ks8842_adapter *adapter = netdev_priv(netdev);
1023 cancel_work_sync(&adapter->timeout_work);
1025 if (KS8842_USE_DMA(adapter))
1026 ks8842_dealloc_dma_bufs(adapter);
1029 free_irq(adapter->irq, netdev);
1032 ks8842_write16(adapter, 32, 0x0, REG_SW_ID_AND_ENABLE);
1041 struct ks8842_adapter *adapter = netdev_priv(netdev);
1045 if (KS8842_USE_DMA(adapter)) {
1049 spin_lock_irqsave(&adapter->lock, flags);
1050 if (adapter->dma_tx.adesc)
1052 spin_unlock_irqrestore(&adapter->lock, flags);
1058 if (ks8842_tx_fifo_space(adapter) < netdev->mtu + 8)
1066 struct ks8842_adapter *adapter = netdev_priv(netdev);
1077 ks8842_write_mac_addr(adapter, mac);
1083 struct ks8842_adapter *adapter =
1085 struct net_device *netdev = adapter->netdev;
1090 spin_lock_irqsave(&adapter->lock, flags);
1092 if (KS8842_USE_DMA(adapter))
1093 ks8842_stop_dma(adapter);
1096 ks8842_write16(adapter, 18, 0, REG_IER);
1097 ks8842_write16(adapter, 18, 0xFFFF, REG_ISR);
1101 spin_unlock_irqrestore(&adapter->lock, flags);
1103 ks8842_reset_hw(adapter);
1105 ks8842_write_mac_addr(adapter, netdev->dev_addr);
1107 ks8842_update_link_status(netdev, adapter);
1109 if (KS8842_USE_DMA(adapter))
1115 struct ks8842_adapter *adapter = netdev_priv(netdev);
1119 schedule_work(&adapter->timeout_work);
1140 struct ks8842_adapter *adapter;
1155 adapter = netdev_priv(netdev);
1156 adapter->netdev = netdev;
1157 INIT_WORK(&adapter->timeout_work, ks8842_tx_timeout_work);
1158 adapter->hw_addr = ioremap(iomem->start, resource_size(iomem));
1159 adapter->conf_flags = iomem->flags;
1161 if (!adapter->hw_addr)
1164 adapter->irq = platform_get_irq(pdev, 0);
1165 if (adapter->irq < 0) {
1166 err = adapter->irq;
1170 adapter->dev = (pdev->dev.parent) ? pdev->dev.parent : &pdev->dev;
1173 if (!(adapter->conf_flags & MICREL_KS884X) && pdata &&
1176 adapter->dma_rx.channel = pdata->rx_dma_channel;
1177 adapter->dma_tx.channel = pdata->tx_dma_channel;
1179 adapter->dma_rx.channel = -1;
1180 adapter->dma_tx.channel = -1;
1183 tasklet_init(&adapter->tasklet, ks8842_tasklet, (unsigned long)netdev);
1184 spin_lock_init(&adapter->lock);
1203 ks8842_read_mac_addr(adapter, netdev->dev_addr);
1209 id = ks8842_read16(adapter, 32, REG_SW_ID_AND_ENABLE);
1225 iounmap(adapter->hw_addr);
1237 struct ks8842_adapter *adapter = netdev_priv(netdev);
1241 tasklet_kill(&adapter->tasklet);
1242 iounmap(adapter->hw_addr);