Re: [PATCH] [01/10] pasemi_mac: Abstract out register access

2007-08-31 Thread Jeff Garzik

applied


-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] [01/10] pasemi_mac: Abstract out register access

2007-08-22 Thread Olof Johansson
Abstract out the PCI config read/write accesses into reg read/write ones,
still calling the pci accessors on the back end.

Signed-off-by: Olof Johansson <[EMAIL PROTECTED]>


Index: mainline/drivers/net/pasemi_mac.c
===
--- mainline.orig/drivers/net/pasemi_mac.c
+++ mainline/drivers/net/pasemi_mac.c
@@ -81,6 +81,48 @@ MODULE_PARM_DESC(debug, "PA Semi MAC bit
 
 static struct pasdma_status *dma_status;
 
+static unsigned int read_iob_reg(struct pasemi_mac *mac, unsigned int reg)
+{
+   unsigned int val;
+
+   pci_read_config_dword(mac->iob_pdev, reg, &val);
+   return val;
+}
+
+static void write_iob_reg(struct pasemi_mac *mac, unsigned int reg,
+ unsigned int val)
+{
+   pci_write_config_dword(mac->iob_pdev, reg, val);
+}
+
+static unsigned int read_mac_reg(struct pasemi_mac *mac, unsigned int reg)
+{
+   unsigned int val;
+
+   pci_read_config_dword(mac->pdev, reg, &val);
+   return val;
+}
+
+static void write_mac_reg(struct pasemi_mac *mac, unsigned int reg,
+ unsigned int val)
+{
+   pci_write_config_dword(mac->pdev, reg, val);
+}
+
+static unsigned int read_dma_reg(struct pasemi_mac *mac, unsigned int reg)
+{
+   unsigned int val;
+
+   pci_read_config_dword(mac->dma_pdev, reg, &val);
+   return val;
+}
+
+static void write_dma_reg(struct pasemi_mac *mac, unsigned int reg,
+ unsigned int val)
+{
+   pci_write_config_dword(mac->dma_pdev, reg, val);
+}
+
 static int pasemi_get_mac_addr(struct pasemi_mac *mac)
 {
struct pci_dev *pdev = mac->pdev;
@@ -166,22 +208,21 @@ static int pasemi_mac_setup_rx_resources
 
memset(ring->buffers, 0, RX_RING_SIZE * sizeof(u64));
 
-   pci_write_config_dword(mac->dma_pdev, PAS_DMA_RXCHAN_BASEL(chan_id),
-  PAS_DMA_RXCHAN_BASEL_BRBL(ring->dma));
+   write_dma_reg(mac, PAS_DMA_RXCHAN_BASEL(chan_id), 
PAS_DMA_RXCHAN_BASEL_BRBL(ring->dma));
+
+   write_dma_reg(mac, PAS_DMA_RXCHAN_BASEU(chan_id),
+  PAS_DMA_RXCHAN_BASEU_BRBH(ring->dma >> 32) |
+  PAS_DMA_RXCHAN_BASEU_SIZ(RX_RING_SIZE >> 2));
+
+   write_dma_reg(mac, PAS_DMA_RXCHAN_CFG(chan_id),
+  PAS_DMA_RXCHAN_CFG_HBU(1));
 
-   pci_write_config_dword(mac->dma_pdev, PAS_DMA_RXCHAN_BASEU(chan_id),
-  PAS_DMA_RXCHAN_BASEU_BRBH(ring->dma >> 32) |
-  PAS_DMA_RXCHAN_BASEU_SIZ(RX_RING_SIZE >> 2));
-
-   pci_write_config_dword(mac->dma_pdev, PAS_DMA_RXCHAN_CFG(chan_id),
-  PAS_DMA_RXCHAN_CFG_HBU(1));
-
-   pci_write_config_dword(mac->dma_pdev, PAS_DMA_RXINT_BASEL(mac->dma_if),
-  PAS_DMA_RXINT_BASEL_BRBL(__pa(ring->buffers)));
-
-   pci_write_config_dword(mac->dma_pdev, PAS_DMA_RXINT_BASEU(mac->dma_if),
-  PAS_DMA_RXINT_BASEU_BRBH(__pa(ring->buffers) >> 
32) |
-  PAS_DMA_RXINT_BASEU_SIZ(RX_RING_SIZE >> 3));
+   write_dma_reg(mac, PAS_DMA_RXINT_BASEL(mac->dma_if),
+  PAS_DMA_RXINT_BASEL_BRBL(__pa(ring->buffers)));
+
+   write_dma_reg(mac, PAS_DMA_RXINT_BASEU(mac->dma_if),
+  PAS_DMA_RXINT_BASEU_BRBH(__pa(ring->buffers) >> 32) |
+  PAS_DMA_RXINT_BASEU_SIZ(RX_RING_SIZE >> 3));
 
ring->next_to_fill = 0;
ring->next_to_clean = 0;
@@ -233,18 +274,18 @@ static int pasemi_mac_setup_tx_resources
 
memset(ring->desc, 0, TX_RING_SIZE * sizeof(struct pas_dma_xct_descr));
 
-   pci_write_config_dword(mac->dma_pdev, PAS_DMA_TXCHAN_BASEL(chan_id),
-  PAS_DMA_TXCHAN_BASEL_BRBL(ring->dma));
+   write_dma_reg(mac, PAS_DMA_TXCHAN_BASEL(chan_id),
+  PAS_DMA_TXCHAN_BASEL_BRBL(ring->dma));
val = PAS_DMA_TXCHAN_BASEU_BRBH(ring->dma >> 32);
val |= PAS_DMA_TXCHAN_BASEU_SIZ(TX_RING_SIZE >> 2);
 
-   pci_write_config_dword(mac->dma_pdev, PAS_DMA_TXCHAN_BASEU(chan_id), 
val);
+   write_dma_reg(mac, PAS_DMA_TXCHAN_BASEU(chan_id), val);
 
-   pci_write_config_dword(mac->dma_pdev, PAS_DMA_TXCHAN_CFG(chan_id),
-  PAS_DMA_TXCHAN_CFG_TY_IFACE |
-  PAS_DMA_TXCHAN_CFG_TATTR(mac->dma_if) |
-  PAS_DMA_TXCHAN_CFG_UP |
-  PAS_DMA_TXCHAN_CFG_WT(2));
+   write_dma_reg(mac, PAS_DMA_TXCHAN_CFG(chan_id),
+  PAS_DMA_TXCHAN_CFG_TY_IFACE |
+  PAS_DMA_TXCHAN_CFG_TATTR(mac->dma_if) |
+  PAS_DMA_TXCHAN_CFG_UP |
+  PAS_DMA_TXCHAN_CFG_WT(2));
 
ring->next_to_use = 0;
ring->next_to_clean = 0;
@@ -383,12 +424,8 @@ static void pasemi_mac_replenish_rx_ring
 
wmb();
 
-   p