Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net: korina: Make driver COMPILE_TESTable

Move structs/defines for ethernet/dma register into driver, since they
are only used for this driver and remove any MIPS specific includes.
This makes it possible to COMPILE_TEST the driver.

Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Thomas Bogendoerfer and committed by
David S. Miller
6ef92063 e4cd854e

+239 -12
+1 -1
drivers/net/ethernet/Kconfig
··· 99 99 100 100 config KORINA 101 101 tristate "Korina (IDT RC32434) Ethernet support" 102 - depends on MIKROTIK_RB532 102 + depends on MIKROTIK_RB532 || COMPILE_TEST 103 103 select MII 104 104 help 105 105 If you have a Mikrotik RouterBoard 500 or IDT RC32434
+238 -11
drivers/net/ethernet/korina.c
··· 59 59 #include <linux/pgtable.h> 60 60 #include <linux/clk.h> 61 61 62 - #include <asm/bootinfo.h> 63 - #include <asm/bitops.h> 64 - #include <asm/io.h> 65 - #include <asm/dma.h> 66 - 67 - #include <asm/mach-rc32434/eth.h> 68 - #include <asm/mach-rc32434/dma_v.h> 69 - 70 62 #define DRV_NAME "korina" 71 63 #define DRV_VERSION "0.20" 72 64 #define DRV_RELDATE "15Sep2017" 65 + 66 + struct eth_regs { 67 + u32 ethintfc; 68 + u32 ethfifott; 69 + u32 etharc; 70 + u32 ethhash0; 71 + u32 ethhash1; 72 + u32 ethu0[4]; /* Reserved. */ 73 + u32 ethpfs; 74 + u32 ethmcp; 75 + u32 eth_u1[10]; /* Reserved. */ 76 + u32 ethspare; 77 + u32 eth_u2[42]; /* Reserved. */ 78 + u32 ethsal0; 79 + u32 ethsah0; 80 + u32 ethsal1; 81 + u32 ethsah1; 82 + u32 ethsal2; 83 + u32 ethsah2; 84 + u32 ethsal3; 85 + u32 ethsah3; 86 + u32 ethrbc; 87 + u32 ethrpc; 88 + u32 ethrupc; 89 + u32 ethrfc; 90 + u32 ethtbc; 91 + u32 ethgpf; 92 + u32 eth_u9[50]; /* Reserved. */ 93 + u32 ethmac1; 94 + u32 ethmac2; 95 + u32 ethipgt; 96 + u32 ethipgr; 97 + u32 ethclrt; 98 + u32 ethmaxf; 99 + u32 eth_u10; /* Reserved. */ 100 + u32 ethmtest; 101 + u32 miimcfg; 102 + u32 miimcmd; 103 + u32 miimaddr; 104 + u32 miimwtd; 105 + u32 miimrdd; 106 + u32 miimind; 107 + u32 eth_u11; /* Reserved. */ 108 + u32 eth_u12; /* Reserved. */ 109 + u32 ethcfsa0; 110 + u32 ethcfsa1; 111 + u32 ethcfsa2; 112 + }; 113 + 114 + /* Ethernet interrupt registers */ 115 + #define ETH_INT_FC_EN BIT(0) 116 + #define ETH_INT_FC_ITS BIT(1) 117 + #define ETH_INT_FC_RIP BIT(2) 118 + #define ETH_INT_FC_JAM BIT(3) 119 + #define ETH_INT_FC_OVR BIT(4) 120 + #define ETH_INT_FC_UND BIT(5) 121 + #define ETH_INT_FC_IOC 0x000000c0 122 + 123 + /* Ethernet FIFO registers */ 124 + #define ETH_FIFI_TT_TTH_BIT 0 125 + #define ETH_FIFO_TT_TTH 0x0000007f 126 + 127 + /* Ethernet ARC/multicast registers */ 128 + #define ETH_ARC_PRO BIT(0) 129 + #define ETH_ARC_AM BIT(1) 130 + #define ETH_ARC_AFM BIT(2) 131 + #define ETH_ARC_AB BIT(3) 132 + 133 + /* Ethernet SAL registers */ 134 + #define ETH_SAL_BYTE_5 0x000000ff 135 + #define ETH_SAL_BYTE_4 0x0000ff00 136 + #define ETH_SAL_BYTE_3 0x00ff0000 137 + #define ETH_SAL_BYTE_2 0xff000000 138 + 139 + /* Ethernet SAH registers */ 140 + #define ETH_SAH_BYTE1 0x000000ff 141 + #define ETH_SAH_BYTE0 0x0000ff00 142 + 143 + /* Ethernet GPF register */ 144 + #define ETH_GPF_PTV 0x0000ffff 145 + 146 + /* Ethernet PFG register */ 147 + #define ETH_PFS_PFD BIT(0) 148 + 149 + /* Ethernet CFSA[0-3] registers */ 150 + #define ETH_CFSA0_CFSA4 0x000000ff 151 + #define ETH_CFSA0_CFSA5 0x0000ff00 152 + #define ETH_CFSA1_CFSA2 0x000000ff 153 + #define ETH_CFSA1_CFSA3 0x0000ff00 154 + #define ETH_CFSA1_CFSA0 0x000000ff 155 + #define ETH_CFSA1_CFSA1 0x0000ff00 156 + 157 + /* Ethernet MAC1 registers */ 158 + #define ETH_MAC1_RE BIT(0) 159 + #define ETH_MAC1_PAF BIT(1) 160 + #define ETH_MAC1_RFC BIT(2) 161 + #define ETH_MAC1_TFC BIT(3) 162 + #define ETH_MAC1_LB BIT(4) 163 + #define ETH_MAC1_MR BIT(31) 164 + 165 + /* Ethernet MAC2 registers */ 166 + #define ETH_MAC2_FD BIT(0) 167 + #define ETH_MAC2_FLC BIT(1) 168 + #define ETH_MAC2_HFE BIT(2) 169 + #define ETH_MAC2_DC BIT(3) 170 + #define ETH_MAC2_CEN BIT(4) 171 + #define ETH_MAC2_PE BIT(5) 172 + #define ETH_MAC2_VPE BIT(6) 173 + #define ETH_MAC2_APE BIT(7) 174 + #define ETH_MAC2_PPE BIT(8) 175 + #define ETH_MAC2_LPE BIT(9) 176 + #define ETH_MAC2_NB BIT(12) 177 + #define ETH_MAC2_BP BIT(13) 178 + #define ETH_MAC2_ED BIT(14) 179 + 180 + /* Ethernet IPGT register */ 181 + #define ETH_IPGT 0x0000007f 182 + 183 + /* Ethernet IPGR registers */ 184 + #define ETH_IPGR_IPGR2 0x0000007f 185 + #define ETH_IPGR_IPGR1 0x00007f00 186 + 187 + /* Ethernet CLRT registers */ 188 + #define ETH_CLRT_MAX_RET 0x0000000f 189 + #define ETH_CLRT_COL_WIN 0x00003f00 190 + 191 + /* Ethernet MAXF register */ 192 + #define ETH_MAXF 0x0000ffff 193 + 194 + /* Ethernet test registers */ 195 + #define ETH_TEST_REG BIT(2) 196 + #define ETH_MCP_DIV 0x000000ff 197 + 198 + /* MII registers */ 199 + #define ETH_MII_CFG_RSVD 0x0000000c 200 + #define ETH_MII_CMD_RD BIT(0) 201 + #define ETH_MII_CMD_SCN BIT(1) 202 + #define ETH_MII_REG_ADDR 0x0000001f 203 + #define ETH_MII_PHY_ADDR 0x00001f00 204 + #define ETH_MII_WTD_DATA 0x0000ffff 205 + #define ETH_MII_RDD_DATA 0x0000ffff 206 + #define ETH_MII_IND_BSY BIT(0) 207 + #define ETH_MII_IND_SCN BIT(1) 208 + #define ETH_MII_IND_NV BIT(2) 209 + 210 + /* Values for the DEVCS field of the Ethernet DMA Rx and Tx descriptors. */ 211 + #define ETH_RX_FD BIT(0) 212 + #define ETH_RX_LD BIT(1) 213 + #define ETH_RX_ROK BIT(2) 214 + #define ETH_RX_FM BIT(3) 215 + #define ETH_RX_MP BIT(4) 216 + #define ETH_RX_BP BIT(5) 217 + #define ETH_RX_VLT BIT(6) 218 + #define ETH_RX_CF BIT(7) 219 + #define ETH_RX_OVR BIT(8) 220 + #define ETH_RX_CRC BIT(9) 221 + #define ETH_RX_CV BIT(10) 222 + #define ETH_RX_DB BIT(11) 223 + #define ETH_RX_LE BIT(12) 224 + #define ETH_RX_LOR BIT(13) 225 + #define ETH_RX_CES BIT(14) 226 + #define ETH_RX_LEN_BIT 16 227 + #define ETH_RX_LEN 0xffff0000 228 + 229 + #define ETH_TX_FD BIT(0) 230 + #define ETH_TX_LD BIT(1) 231 + #define ETH_TX_OEN BIT(2) 232 + #define ETH_TX_PEN BIT(3) 233 + #define ETH_TX_CEN BIT(4) 234 + #define ETH_TX_HEN BIT(5) 235 + #define ETH_TX_TOK BIT(6) 236 + #define ETH_TX_MP BIT(7) 237 + #define ETH_TX_BP BIT(8) 238 + #define ETH_TX_UND BIT(9) 239 + #define ETH_TX_OF BIT(10) 240 + #define ETH_TX_ED BIT(11) 241 + #define ETH_TX_EC BIT(12) 242 + #define ETH_TX_LC BIT(13) 243 + #define ETH_TX_TD BIT(14) 244 + #define ETH_TX_CRC BIT(15) 245 + #define ETH_TX_LE BIT(16) 246 + #define ETH_TX_CC 0x001E0000 247 + 248 + /* DMA descriptor (in physical memory). */ 249 + struct dma_desc { 250 + u32 control; /* Control. use DMAD_* */ 251 + u32 ca; /* Current Address. */ 252 + u32 devcs; /* Device control and status. */ 253 + u32 link; /* Next descriptor in chain. */ 254 + }; 255 + 256 + #define DMA_DESC_COUNT_BIT 0 257 + #define DMA_DESC_COUNT_MSK 0x0003ffff 258 + #define DMA_DESC_DS_BIT 20 259 + #define DMA_DESC_DS_MSK 0x00300000 260 + 261 + #define DMA_DESC_DEV_CMD_BIT 22 262 + #define DMA_DESC_DEV_CMD_MSK 0x01c00000 263 + 264 + /* DMA descriptors interrupts */ 265 + #define DMA_DESC_COF BIT(25) /* Chain on finished */ 266 + #define DMA_DESC_COD BIT(26) /* Chain on done */ 267 + #define DMA_DESC_IOF BIT(27) /* Interrupt on finished */ 268 + #define DMA_DESC_IOD BIT(28) /* Interrupt on done */ 269 + #define DMA_DESC_TERM BIT(29) /* Terminated */ 270 + #define DMA_DESC_DONE BIT(30) /* Done */ 271 + #define DMA_DESC_FINI BIT(31) /* Finished */ 272 + 273 + /* DMA register (within Internal Register Map). */ 274 + struct dma_reg { 275 + u32 dmac; /* Control. */ 276 + u32 dmas; /* Status. */ 277 + u32 dmasm; /* Mask. */ 278 + u32 dmadptr; /* Descriptor pointer. */ 279 + u32 dmandptr; /* Next descriptor pointer. */ 280 + }; 281 + 282 + /* DMA channels specific registers */ 283 + #define DMA_CHAN_RUN_BIT BIT(0) 284 + #define DMA_CHAN_DONE_BIT BIT(1) 285 + #define DMA_CHAN_MODE_BIT BIT(2) 286 + #define DMA_CHAN_MODE_MSK 0x0000000c 287 + #define DMA_CHAN_MODE_AUTO 0 288 + #define DMA_CHAN_MODE_BURST 1 289 + #define DMA_CHAN_MODE_XFRT 2 290 + #define DMA_CHAN_MODE_RSVD 3 291 + #define DMA_CHAN_ACT_BIT BIT(4) 292 + 293 + /* DMA status registers */ 294 + #define DMA_STAT_FINI BIT(0) 295 + #define DMA_STAT_DONE BIT(1) 296 + #define DMA_STAT_CHAIN BIT(2) 297 + #define DMA_STAT_ERR BIT(3) 298 + #define DMA_STAT_HALT BIT(4) 73 299 74 300 #define STATION_ADDRESS_HIGH(dev) (((dev)->dev_addr[0] << 8) | \ 75 301 ((dev)->dev_addr[1])) ··· 326 100 desc_empty 327 101 }; 328 102 103 + #define DMA_COUNT(count) ((count) & DMA_DESC_COUNT_MSK) 329 104 #define IS_DMA_FINISHED(X) (((X) & (DMA_DESC_FINI)) != 0) 330 105 #define IS_DMA_DONE(X) (((X) & (DMA_DESC_DONE)) != 0) 331 106 #define RCVPKT_LENGTH(X) (((X) & ETH_RX_LEN) >> ETH_RX_LEN_BIT) ··· 680 453 681 454 lp->rx_next_done = (lp->rx_next_done + 1) & KORINA_RDS_MASK; 682 455 rd = &lp->rd_ring[lp->rx_next_done]; 683 - writel(~DMA_STAT_DONE, &lp->rx_dma_regs->dmas); 456 + writel((u32)~DMA_STAT_DONE, &lp->rx_dma_regs->dmas); 684 457 } 685 458 686 459 dmas = readl(&lp->rx_dma_regs->dmas); 687 460 688 461 if (dmas & DMA_STAT_HALT) { 689 - writel(~(DMA_STAT_HALT | DMA_STAT_ERR), 690 - &lp->rx_dma_regs->dmas); 462 + writel((u32)~(DMA_STAT_HALT | DMA_STAT_ERR), 463 + &lp->rx_dma_regs->dmas); 691 464 692 465 lp->dma_halt_cnt++; 693 466 rd->devcs = 0;