diff options
Diffstat (limited to 'drivers/net/ucc_geth.c')
| -rw-r--r-- | drivers/net/ucc_geth.c | 276 |
1 files changed, 144 insertions, 132 deletions
diff --git a/drivers/net/ucc_geth.c b/drivers/net/ucc_geth.c index 281ce3d39532..b3bbb2dc5cfa 100644 --- a/drivers/net/ucc_geth.c +++ b/drivers/net/ucc_geth.c | |||
| @@ -62,7 +62,6 @@ | |||
| 62 | #endif /* UGETH_VERBOSE_DEBUG */ | 62 | #endif /* UGETH_VERBOSE_DEBUG */ |
| 63 | #define UGETH_MSG_DEFAULT (NETIF_MSG_IFUP << 1 ) - 1 | 63 | #define UGETH_MSG_DEFAULT (NETIF_MSG_IFUP << 1 ) - 1 |
| 64 | 64 | ||
| 65 | void uec_set_ethtool_ops(struct net_device *netdev); | ||
| 66 | 65 | ||
| 67 | static DEFINE_SPINLOCK(ugeth_lock); | 66 | static DEFINE_SPINLOCK(ugeth_lock); |
| 68 | 67 | ||
| @@ -216,7 +215,8 @@ static struct list_head *dequeue(struct list_head *lh) | |||
| 216 | } | 215 | } |
| 217 | } | 216 | } |
| 218 | 217 | ||
| 219 | static struct sk_buff *get_new_skb(struct ucc_geth_private *ugeth, u8 *bd) | 218 | static struct sk_buff *get_new_skb(struct ucc_geth_private *ugeth, |
| 219 | u8 __iomem *bd) | ||
| 220 | { | 220 | { |
| 221 | struct sk_buff *skb = NULL; | 221 | struct sk_buff *skb = NULL; |
| 222 | 222 | ||
| @@ -236,21 +236,22 @@ static struct sk_buff *get_new_skb(struct ucc_geth_private *ugeth, u8 *bd) | |||
| 236 | 236 | ||
| 237 | skb->dev = ugeth->dev; | 237 | skb->dev = ugeth->dev; |
| 238 | 238 | ||
| 239 | out_be32(&((struct qe_bd *)bd)->buf, | 239 | out_be32(&((struct qe_bd __iomem *)bd)->buf, |
| 240 | dma_map_single(NULL, | 240 | dma_map_single(NULL, |
| 241 | skb->data, | 241 | skb->data, |
| 242 | ugeth->ug_info->uf_info.max_rx_buf_length + | 242 | ugeth->ug_info->uf_info.max_rx_buf_length + |
| 243 | UCC_GETH_RX_DATA_BUF_ALIGNMENT, | 243 | UCC_GETH_RX_DATA_BUF_ALIGNMENT, |
| 244 | DMA_FROM_DEVICE)); | 244 | DMA_FROM_DEVICE)); |
| 245 | 245 | ||
| 246 | out_be32((u32 *)bd, (R_E | R_I | (in_be32((u32 *)bd) & R_W))); | 246 | out_be32((u32 __iomem *)bd, |
| 247 | (R_E | R_I | (in_be32((u32 __iomem*)bd) & R_W))); | ||
| 247 | 248 | ||
| 248 | return skb; | 249 | return skb; |
| 249 | } | 250 | } |
| 250 | 251 | ||
| 251 | static int rx_bd_buffer_set(struct ucc_geth_private *ugeth, u8 rxQ) | 252 | static int rx_bd_buffer_set(struct ucc_geth_private *ugeth, u8 rxQ) |
| 252 | { | 253 | { |
| 253 | u8 *bd; | 254 | u8 __iomem *bd; |
| 254 | u32 bd_status; | 255 | u32 bd_status; |
| 255 | struct sk_buff *skb; | 256 | struct sk_buff *skb; |
| 256 | int i; | 257 | int i; |
| @@ -259,7 +260,7 @@ static int rx_bd_buffer_set(struct ucc_geth_private *ugeth, u8 rxQ) | |||
| 259 | i = 0; | 260 | i = 0; |
| 260 | 261 | ||
| 261 | do { | 262 | do { |
| 262 | bd_status = in_be32((u32*)bd); | 263 | bd_status = in_be32((u32 __iomem *)bd); |
| 263 | skb = get_new_skb(ugeth, bd); | 264 | skb = get_new_skb(ugeth, bd); |
| 264 | 265 | ||
| 265 | if (!skb) /* If can not allocate data buffer, | 266 | if (!skb) /* If can not allocate data buffer, |
| @@ -277,7 +278,7 @@ static int rx_bd_buffer_set(struct ucc_geth_private *ugeth, u8 rxQ) | |||
| 277 | } | 278 | } |
| 278 | 279 | ||
| 279 | static int fill_init_enet_entries(struct ucc_geth_private *ugeth, | 280 | static int fill_init_enet_entries(struct ucc_geth_private *ugeth, |
| 280 | volatile u32 *p_start, | 281 | u32 *p_start, |
| 281 | u8 num_entries, | 282 | u8 num_entries, |
| 282 | u32 thread_size, | 283 | u32 thread_size, |
| 283 | u32 thread_alignment, | 284 | u32 thread_alignment, |
| @@ -316,7 +317,7 @@ static int fill_init_enet_entries(struct ucc_geth_private *ugeth, | |||
| 316 | } | 317 | } |
| 317 | 318 | ||
| 318 | static int return_init_enet_entries(struct ucc_geth_private *ugeth, | 319 | static int return_init_enet_entries(struct ucc_geth_private *ugeth, |
| 319 | volatile u32 *p_start, | 320 | u32 *p_start, |
| 320 | u8 num_entries, | 321 | u8 num_entries, |
| 321 | enum qe_risc_allocation risc, | 322 | enum qe_risc_allocation risc, |
| 322 | int skip_page_for_first_entry) | 323 | int skip_page_for_first_entry) |
| @@ -326,21 +327,22 @@ static int return_init_enet_entries(struct ucc_geth_private *ugeth, | |||
| 326 | int snum; | 327 | int snum; |
| 327 | 328 | ||
| 328 | for (i = 0; i < num_entries; i++) { | 329 | for (i = 0; i < num_entries; i++) { |
| 330 | u32 val = *p_start; | ||
| 331 | |||
| 329 | /* Check that this entry was actually valid -- | 332 | /* Check that this entry was actually valid -- |
| 330 | needed in case failed in allocations */ | 333 | needed in case failed in allocations */ |
| 331 | if ((*p_start & ENET_INIT_PARAM_RISC_MASK) == risc) { | 334 | if ((val & ENET_INIT_PARAM_RISC_MASK) == risc) { |
| 332 | snum = | 335 | snum = |
| 333 | (u32) (*p_start & ENET_INIT_PARAM_SNUM_MASK) >> | 336 | (u32) (val & ENET_INIT_PARAM_SNUM_MASK) >> |
| 334 | ENET_INIT_PARAM_SNUM_SHIFT; | 337 | ENET_INIT_PARAM_SNUM_SHIFT; |
| 335 | qe_put_snum((u8) snum); | 338 | qe_put_snum((u8) snum); |
| 336 | if (!((i == 0) && skip_page_for_first_entry)) { | 339 | if (!((i == 0) && skip_page_for_first_entry)) { |
| 337 | /* First entry of Rx does not have page */ | 340 | /* First entry of Rx does not have page */ |
| 338 | init_enet_offset = | 341 | init_enet_offset = |
| 339 | (in_be32(p_start) & | 342 | (val & ENET_INIT_PARAM_PTR_MASK); |
| 340 | ENET_INIT_PARAM_PTR_MASK); | ||
| 341 | qe_muram_free(init_enet_offset); | 343 | qe_muram_free(init_enet_offset); |
| 342 | } | 344 | } |
| 343 | *(p_start++) = 0; /* Just for cosmetics */ | 345 | *p_start++ = 0; |
| 344 | } | 346 | } |
| 345 | } | 347 | } |
| 346 | 348 | ||
| @@ -349,7 +351,7 @@ static int return_init_enet_entries(struct ucc_geth_private *ugeth, | |||
| 349 | 351 | ||
| 350 | #ifdef DEBUG | 352 | #ifdef DEBUG |
| 351 | static int dump_init_enet_entries(struct ucc_geth_private *ugeth, | 353 | static int dump_init_enet_entries(struct ucc_geth_private *ugeth, |
| 352 | volatile u32 *p_start, | 354 | u32 __iomem *p_start, |
| 353 | u8 num_entries, | 355 | u8 num_entries, |
| 354 | u32 thread_size, | 356 | u32 thread_size, |
| 355 | enum qe_risc_allocation risc, | 357 | enum qe_risc_allocation risc, |
| @@ -360,11 +362,13 @@ static int dump_init_enet_entries(struct ucc_geth_private *ugeth, | |||
| 360 | int snum; | 362 | int snum; |
| 361 | 363 | ||
| 362 | for (i = 0; i < num_entries; i++) { | 364 | for (i = 0; i < num_entries; i++) { |
| 365 | u32 val = in_be32(p_start); | ||
| 366 | |||
| 363 | /* Check that this entry was actually valid -- | 367 | /* Check that this entry was actually valid -- |
| 364 | needed in case failed in allocations */ | 368 | needed in case failed in allocations */ |
| 365 | if ((*p_start & ENET_INIT_PARAM_RISC_MASK) == risc) { | 369 | if ((val & ENET_INIT_PARAM_RISC_MASK) == risc) { |
| 366 | snum = | 370 | snum = |
| 367 | (u32) (*p_start & ENET_INIT_PARAM_SNUM_MASK) >> | 371 | (u32) (val & ENET_INIT_PARAM_SNUM_MASK) >> |
| 368 | ENET_INIT_PARAM_SNUM_SHIFT; | 372 | ENET_INIT_PARAM_SNUM_SHIFT; |
| 369 | qe_put_snum((u8) snum); | 373 | qe_put_snum((u8) snum); |
| 370 | if (!((i == 0) && skip_page_for_first_entry)) { | 374 | if (!((i == 0) && skip_page_for_first_entry)) { |
| @@ -440,7 +444,7 @@ static int hw_add_addr_in_paddr(struct ucc_geth_private *ugeth, | |||
| 440 | 444 | ||
| 441 | static int hw_clear_addr_in_paddr(struct ucc_geth_private *ugeth, u8 paddr_num) | 445 | static int hw_clear_addr_in_paddr(struct ucc_geth_private *ugeth, u8 paddr_num) |
| 442 | { | 446 | { |
| 443 | struct ucc_geth_82xx_address_filtering_pram *p_82xx_addr_filt; | 447 | struct ucc_geth_82xx_address_filtering_pram __iomem *p_82xx_addr_filt; |
| 444 | 448 | ||
| 445 | if (!(paddr_num < NUM_OF_PADDRS)) { | 449 | if (!(paddr_num < NUM_OF_PADDRS)) { |
| 446 | ugeth_warn("%s: Illagel paddr_num.", __FUNCTION__); | 450 | ugeth_warn("%s: Illagel paddr_num.", __FUNCTION__); |
| @@ -448,7 +452,7 @@ static int hw_clear_addr_in_paddr(struct ucc_geth_private *ugeth, u8 paddr_num) | |||
| 448 | } | 452 | } |
| 449 | 453 | ||
| 450 | p_82xx_addr_filt = | 454 | p_82xx_addr_filt = |
| 451 | (struct ucc_geth_82xx_address_filtering_pram *) ugeth->p_rx_glbl_pram-> | 455 | (struct ucc_geth_82xx_address_filtering_pram __iomem *) ugeth->p_rx_glbl_pram-> |
| 452 | addressfiltering; | 456 | addressfiltering; |
| 453 | 457 | ||
| 454 | /* Writing address ff.ff.ff.ff.ff.ff disables address | 458 | /* Writing address ff.ff.ff.ff.ff.ff disables address |
| @@ -463,11 +467,11 @@ static int hw_clear_addr_in_paddr(struct ucc_geth_private *ugeth, u8 paddr_num) | |||
| 463 | static void hw_add_addr_in_hash(struct ucc_geth_private *ugeth, | 467 | static void hw_add_addr_in_hash(struct ucc_geth_private *ugeth, |
| 464 | u8 *p_enet_addr) | 468 | u8 *p_enet_addr) |
| 465 | { | 469 | { |
| 466 | struct ucc_geth_82xx_address_filtering_pram *p_82xx_addr_filt; | 470 | struct ucc_geth_82xx_address_filtering_pram __iomem *p_82xx_addr_filt; |
| 467 | u32 cecr_subblock; | 471 | u32 cecr_subblock; |
| 468 | 472 | ||
| 469 | p_82xx_addr_filt = | 473 | p_82xx_addr_filt = |
| 470 | (struct ucc_geth_82xx_address_filtering_pram *) ugeth->p_rx_glbl_pram-> | 474 | (struct ucc_geth_82xx_address_filtering_pram __iomem *) ugeth->p_rx_glbl_pram-> |
| 471 | addressfiltering; | 475 | addressfiltering; |
| 472 | 476 | ||
| 473 | cecr_subblock = | 477 | cecr_subblock = |
| @@ -487,7 +491,7 @@ static void hw_add_addr_in_hash(struct ucc_geth_private *ugeth, | |||
| 487 | static void magic_packet_detection_enable(struct ucc_geth_private *ugeth) | 491 | static void magic_packet_detection_enable(struct ucc_geth_private *ugeth) |
| 488 | { | 492 | { |
| 489 | struct ucc_fast_private *uccf; | 493 | struct ucc_fast_private *uccf; |
| 490 | struct ucc_geth *ug_regs; | 494 | struct ucc_geth __iomem *ug_regs; |
| 491 | u32 maccfg2, uccm; | 495 | u32 maccfg2, uccm; |
| 492 | 496 | ||
| 493 | uccf = ugeth->uccf; | 497 | uccf = ugeth->uccf; |
| @@ -507,7 +511,7 @@ static void magic_packet_detection_enable(struct ucc_geth_private *ugeth) | |||
| 507 | static void magic_packet_detection_disable(struct ucc_geth_private *ugeth) | 511 | static void magic_packet_detection_disable(struct ucc_geth_private *ugeth) |
| 508 | { | 512 | { |
| 509 | struct ucc_fast_private *uccf; | 513 | struct ucc_fast_private *uccf; |
| 510 | struct ucc_geth *ug_regs; | 514 | struct ucc_geth __iomem *ug_regs; |
| 511 | u32 maccfg2, uccm; | 515 | u32 maccfg2, uccm; |
| 512 | 516 | ||
| 513 | uccf = ugeth->uccf; | 517 | uccf = ugeth->uccf; |
| @@ -538,13 +542,13 @@ static void get_statistics(struct ucc_geth_private *ugeth, | |||
| 538 | rx_firmware_statistics, | 542 | rx_firmware_statistics, |
| 539 | struct ucc_geth_hardware_statistics *hardware_statistics) | 543 | struct ucc_geth_hardware_statistics *hardware_statistics) |
| 540 | { | 544 | { |
| 541 | struct ucc_fast *uf_regs; | 545 | struct ucc_fast __iomem *uf_regs; |
| 542 | struct ucc_geth *ug_regs; | 546 | struct ucc_geth __iomem *ug_regs; |
| 543 | struct ucc_geth_tx_firmware_statistics_pram *p_tx_fw_statistics_pram; | 547 | struct ucc_geth_tx_firmware_statistics_pram *p_tx_fw_statistics_pram; |
| 544 | struct ucc_geth_rx_firmware_statistics_pram *p_rx_fw_statistics_pram; | 548 | struct ucc_geth_rx_firmware_statistics_pram *p_rx_fw_statistics_pram; |
| 545 | 549 | ||
| 546 | ug_regs = ugeth->ug_regs; | 550 | ug_regs = ugeth->ug_regs; |
| 547 | uf_regs = (struct ucc_fast *) ug_regs; | 551 | uf_regs = (struct ucc_fast __iomem *) ug_regs; |
| 548 | p_tx_fw_statistics_pram = ugeth->p_tx_fw_statistics_pram; | 552 | p_tx_fw_statistics_pram = ugeth->p_tx_fw_statistics_pram; |
| 549 | p_rx_fw_statistics_pram = ugeth->p_rx_fw_statistics_pram; | 553 | p_rx_fw_statistics_pram = ugeth->p_rx_fw_statistics_pram; |
| 550 | 554 | ||
| @@ -1132,9 +1136,9 @@ static void dump_regs(struct ucc_geth_private *ugeth) | |||
| 1132 | } | 1136 | } |
| 1133 | #endif /* DEBUG */ | 1137 | #endif /* DEBUG */ |
| 1134 | 1138 | ||
| 1135 | static void init_default_reg_vals(volatile u32 *upsmr_register, | 1139 | static void init_default_reg_vals(u32 __iomem *upsmr_register, |
| 1136 | volatile u32 *maccfg1_register, | 1140 | u32 __iomem *maccfg1_register, |
| 1137 | volatile u32 *maccfg2_register) | 1141 | u32 __iomem *maccfg2_register) |
| 1138 | { | 1142 | { |
| 1139 | out_be32(upsmr_register, UCC_GETH_UPSMR_INIT); | 1143 | out_be32(upsmr_register, UCC_GETH_UPSMR_INIT); |
| 1140 | out_be32(maccfg1_register, UCC_GETH_MACCFG1_INIT); | 1144 | out_be32(maccfg1_register, UCC_GETH_MACCFG1_INIT); |
| @@ -1148,7 +1152,7 @@ static int init_half_duplex_params(int alt_beb, | |||
| 1148 | u8 alt_beb_truncation, | 1152 | u8 alt_beb_truncation, |
| 1149 | u8 max_retransmissions, | 1153 | u8 max_retransmissions, |
| 1150 | u8 collision_window, | 1154 | u8 collision_window, |
| 1151 | volatile u32 *hafdup_register) | 1155 | u32 __iomem *hafdup_register) |
| 1152 | { | 1156 | { |
| 1153 | u32 value = 0; | 1157 | u32 value = 0; |
| 1154 | 1158 | ||
| @@ -1180,7 +1184,7 @@ static int init_inter_frame_gap_params(u8 non_btb_cs_ipg, | |||
| 1180 | u8 non_btb_ipg, | 1184 | u8 non_btb_ipg, |
| 1181 | u8 min_ifg, | 1185 | u8 min_ifg, |
| 1182 | u8 btb_ipg, | 1186 | u8 btb_ipg, |
| 1183 | volatile u32 *ipgifg_register) | 1187 | u32 __iomem *ipgifg_register) |
| 1184 | { | 1188 | { |
| 1185 | u32 value = 0; | 1189 | u32 value = 0; |
| 1186 | 1190 | ||
| @@ -1215,9 +1219,9 @@ int init_flow_control_params(u32 automatic_flow_control_mode, | |||
| 1215 | int tx_flow_control_enable, | 1219 | int tx_flow_control_enable, |
| 1216 | u16 pause_period, | 1220 | u16 pause_period, |
| 1217 | u16 extension_field, | 1221 | u16 extension_field, |
| 1218 | volatile u32 *upsmr_register, | 1222 | u32 __iomem *upsmr_register, |
| 1219 | volatile u32 *uempr_register, | 1223 | u32 __iomem *uempr_register, |
| 1220 | volatile u32 *maccfg1_register) | 1224 | u32 __iomem *maccfg1_register) |
| 1221 | { | 1225 | { |
| 1222 | u32 value = 0; | 1226 | u32 value = 0; |
| 1223 | 1227 | ||
| @@ -1243,8 +1247,8 @@ int init_flow_control_params(u32 automatic_flow_control_mode, | |||
| 1243 | 1247 | ||
| 1244 | static int init_hw_statistics_gathering_mode(int enable_hardware_statistics, | 1248 | static int init_hw_statistics_gathering_mode(int enable_hardware_statistics, |
| 1245 | int auto_zero_hardware_statistics, | 1249 | int auto_zero_hardware_statistics, |
| 1246 | volatile u32 *upsmr_register, | 1250 | u32 __iomem *upsmr_register, |
| 1247 | volatile u16 *uescr_register) | 1251 | u16 __iomem *uescr_register) |
| 1248 | { | 1252 | { |
| 1249 | u32 upsmr_value = 0; | 1253 | u32 upsmr_value = 0; |
| 1250 | u16 uescr_value = 0; | 1254 | u16 uescr_value = 0; |
| @@ -1270,12 +1274,12 @@ static int init_hw_statistics_gathering_mode(int enable_hardware_statistics, | |||
| 1270 | static int init_firmware_statistics_gathering_mode(int | 1274 | static int init_firmware_statistics_gathering_mode(int |
| 1271 | enable_tx_firmware_statistics, | 1275 | enable_tx_firmware_statistics, |
| 1272 | int enable_rx_firmware_statistics, | 1276 | int enable_rx_firmware_statistics, |
| 1273 | volatile u32 *tx_rmon_base_ptr, | 1277 | u32 __iomem *tx_rmon_base_ptr, |
| 1274 | u32 tx_firmware_statistics_structure_address, | 1278 | u32 tx_firmware_statistics_structure_address, |
| 1275 | volatile u32 *rx_rmon_base_ptr, | 1279 | u32 __iomem *rx_rmon_base_ptr, |
| 1276 | u32 rx_firmware_statistics_structure_address, | 1280 | u32 rx_firmware_statistics_structure_address, |
| 1277 | volatile u16 *temoder_register, | 1281 | u16 __iomem *temoder_register, |
| 1278 | volatile u32 *remoder_register) | 1282 | u32 __iomem *remoder_register) |
| 1279 | { | 1283 | { |
| 1280 | /* Note: this function does not check if */ | 1284 | /* Note: this function does not check if */ |
| 1281 | /* the parameters it receives are NULL */ | 1285 | /* the parameters it receives are NULL */ |
| @@ -1307,8 +1311,8 @@ static int init_mac_station_addr_regs(u8 address_byte_0, | |||
| 1307 | u8 address_byte_3, | 1311 | u8 address_byte_3, |
| 1308 | u8 address_byte_4, | 1312 | u8 address_byte_4, |
| 1309 | u8 address_byte_5, | 1313 | u8 address_byte_5, |
| 1310 | volatile u32 *macstnaddr1_register, | 1314 | u32 __iomem *macstnaddr1_register, |
| 1311 | volatile u32 *macstnaddr2_register) | 1315 | u32 __iomem *macstnaddr2_register) |
| 1312 | { | 1316 | { |
| 1313 | u32 value = 0; | 1317 | u32 value = 0; |
| 1314 | 1318 | ||
| @@ -1344,7 +1348,7 @@ static int init_mac_station_addr_regs(u8 address_byte_0, | |||
| 1344 | } | 1348 | } |
| 1345 | 1349 | ||
| 1346 | static int init_check_frame_length_mode(int length_check, | 1350 | static int init_check_frame_length_mode(int length_check, |
| 1347 | volatile u32 *maccfg2_register) | 1351 | u32 __iomem *maccfg2_register) |
| 1348 | { | 1352 | { |
| 1349 | u32 value = 0; | 1353 | u32 value = 0; |
| 1350 | 1354 | ||
| @@ -1360,7 +1364,7 @@ static int init_check_frame_length_mode(int length_check, | |||
| 1360 | } | 1364 | } |
| 1361 | 1365 | ||
| 1362 | static int init_preamble_length(u8 preamble_length, | 1366 | static int init_preamble_length(u8 preamble_length, |
| 1363 | volatile u32 *maccfg2_register) | 1367 | u32 __iomem *maccfg2_register) |
| 1364 | { | 1368 | { |
| 1365 | u32 value = 0; | 1369 | u32 value = 0; |
| 1366 | 1370 | ||
| @@ -1376,7 +1380,7 @@ static int init_preamble_length(u8 preamble_length, | |||
| 1376 | 1380 | ||
| 1377 | static int init_rx_parameters(int reject_broadcast, | 1381 | static int init_rx_parameters(int reject_broadcast, |
| 1378 | int receive_short_frames, | 1382 | int receive_short_frames, |
| 1379 | int promiscuous, volatile u32 *upsmr_register) | 1383 | int promiscuous, u32 __iomem *upsmr_register) |
| 1380 | { | 1384 | { |
| 1381 | u32 value = 0; | 1385 | u32 value = 0; |
| 1382 | 1386 | ||
| @@ -1403,7 +1407,7 @@ static int init_rx_parameters(int reject_broadcast, | |||
| 1403 | } | 1407 | } |
| 1404 | 1408 | ||
| 1405 | static int init_max_rx_buff_len(u16 max_rx_buf_len, | 1409 | static int init_max_rx_buff_len(u16 max_rx_buf_len, |
| 1406 | volatile u16 *mrblr_register) | 1410 | u16 __iomem *mrblr_register) |
| 1407 | { | 1411 | { |
| 1408 | /* max_rx_buf_len value must be a multiple of 128 */ | 1412 | /* max_rx_buf_len value must be a multiple of 128 */ |
| 1409 | if ((max_rx_buf_len == 0) | 1413 | if ((max_rx_buf_len == 0) |
| @@ -1415,8 +1419,8 @@ static int init_max_rx_buff_len(u16 max_rx_buf_len, | |||
| 1415 | } | 1419 | } |
| 1416 | 1420 | ||
| 1417 | static int init_min_frame_len(u16 min_frame_length, | 1421 | static int init_min_frame_len(u16 min_frame_length, |
| 1418 | volatile u16 *minflr_register, | 1422 | u16 __iomem *minflr_register, |
| 1419 | volatile u16 *mrblr_register) | 1423 | u16 __iomem *mrblr_register) |
| 1420 | { | 1424 | { |
| 1421 | u16 mrblr_value = 0; | 1425 | u16 mrblr_value = 0; |
| 1422 | 1426 | ||
| @@ -1431,8 +1435,8 @@ static int init_min_frame_len(u16 min_frame_length, | |||
| 1431 | static int adjust_enet_interface(struct ucc_geth_private *ugeth) | 1435 | static int adjust_enet_interface(struct ucc_geth_private *ugeth) |
| 1432 | { | 1436 | { |
| 1433 | struct ucc_geth_info *ug_info; | 1437 | struct ucc_geth_info *ug_info; |
| 1434 | struct ucc_geth *ug_regs; | 1438 | struct ucc_geth __iomem *ug_regs; |
| 1435 | struct ucc_fast *uf_regs; | 1439 | struct ucc_fast __iomem *uf_regs; |
| 1436 | int ret_val; | 1440 | int ret_val; |
| 1437 | u32 upsmr, maccfg2, tbiBaseAddress; | 1441 | u32 upsmr, maccfg2, tbiBaseAddress; |
| 1438 | u16 value; | 1442 | u16 value; |
| @@ -1517,8 +1521,8 @@ static int adjust_enet_interface(struct ucc_geth_private *ugeth) | |||
| 1517 | static void adjust_link(struct net_device *dev) | 1521 | static void adjust_link(struct net_device *dev) |
| 1518 | { | 1522 | { |
| 1519 | struct ucc_geth_private *ugeth = netdev_priv(dev); | 1523 | struct ucc_geth_private *ugeth = netdev_priv(dev); |
| 1520 | struct ucc_geth *ug_regs; | 1524 | struct ucc_geth __iomem *ug_regs; |
| 1521 | struct ucc_fast *uf_regs; | 1525 | struct ucc_fast __iomem *uf_regs; |
| 1522 | struct phy_device *phydev = ugeth->phydev; | 1526 | struct phy_device *phydev = ugeth->phydev; |
| 1523 | unsigned long flags; | 1527 | unsigned long flags; |
| 1524 | int new_state = 0; | 1528 | int new_state = 0; |
| @@ -1678,9 +1682,9 @@ static int ugeth_graceful_stop_rx(struct ucc_geth_private * ugeth) | |||
| 1678 | uccf = ugeth->uccf; | 1682 | uccf = ugeth->uccf; |
| 1679 | 1683 | ||
| 1680 | /* Clear acknowledge bit */ | 1684 | /* Clear acknowledge bit */ |
| 1681 | temp = ugeth->p_rx_glbl_pram->rxgstpack; | 1685 | temp = in_8(&ugeth->p_rx_glbl_pram->rxgstpack); |
| 1682 | temp &= ~GRACEFUL_STOP_ACKNOWLEDGE_RX; | 1686 | temp &= ~GRACEFUL_STOP_ACKNOWLEDGE_RX; |
| 1683 | ugeth->p_rx_glbl_pram->rxgstpack = temp; | 1687 | out_8(&ugeth->p_rx_glbl_pram->rxgstpack, temp); |
| 1684 | 1688 | ||
| 1685 | /* Keep issuing command and checking acknowledge bit until | 1689 | /* Keep issuing command and checking acknowledge bit until |
| 1686 | it is asserted, according to spec */ | 1690 | it is asserted, according to spec */ |
| @@ -1692,7 +1696,7 @@ static int ugeth_graceful_stop_rx(struct ucc_geth_private * ugeth) | |||
| 1692 | qe_issue_cmd(QE_GRACEFUL_STOP_RX, cecr_subblock, | 1696 | qe_issue_cmd(QE_GRACEFUL_STOP_RX, cecr_subblock, |
| 1693 | QE_CR_PROTOCOL_ETHERNET, 0); | 1697 | QE_CR_PROTOCOL_ETHERNET, 0); |
| 1694 | 1698 | ||
| 1695 | temp = ugeth->p_rx_glbl_pram->rxgstpack; | 1699 | temp = in_8(&ugeth->p_rx_glbl_pram->rxgstpack); |
| 1696 | } while (!(temp & GRACEFUL_STOP_ACKNOWLEDGE_RX)); | 1700 | } while (!(temp & GRACEFUL_STOP_ACKNOWLEDGE_RX)); |
| 1697 | 1701 | ||
| 1698 | uccf->stopped_rx = 1; | 1702 | uccf->stopped_rx = 1; |
| @@ -1991,19 +1995,20 @@ static int ugeth_82xx_filtering_clear_all_addr_in_hash(struct ucc_geth_private * | |||
| 1991 | enum enet_addr_type | 1995 | enum enet_addr_type |
| 1992 | enet_addr_type) | 1996 | enet_addr_type) |
| 1993 | { | 1997 | { |
| 1994 | struct ucc_geth_82xx_address_filtering_pram *p_82xx_addr_filt; | 1998 | struct ucc_geth_82xx_address_filtering_pram __iomem *p_82xx_addr_filt; |
| 1995 | struct ucc_fast_private *uccf; | 1999 | struct ucc_fast_private *uccf; |
| 1996 | enum comm_dir comm_dir; | 2000 | enum comm_dir comm_dir; |
| 1997 | struct list_head *p_lh; | 2001 | struct list_head *p_lh; |
| 1998 | u16 i, num; | 2002 | u16 i, num; |
| 1999 | u32 *addr_h, *addr_l; | 2003 | u32 __iomem *addr_h; |
| 2004 | u32 __iomem *addr_l; | ||
| 2000 | u8 *p_counter; | 2005 | u8 *p_counter; |
| 2001 | 2006 | ||
| 2002 | uccf = ugeth->uccf; | 2007 | uccf = ugeth->uccf; |
| 2003 | 2008 | ||
| 2004 | p_82xx_addr_filt = | 2009 | p_82xx_addr_filt = |
| 2005 | (struct ucc_geth_82xx_address_filtering_pram *) ugeth->p_rx_glbl_pram-> | 2010 | (struct ucc_geth_82xx_address_filtering_pram __iomem *) |
| 2006 | addressfiltering; | 2011 | ugeth->p_rx_glbl_pram->addressfiltering; |
| 2007 | 2012 | ||
| 2008 | if (enet_addr_type == ENET_ADDR_TYPE_GROUP) { | 2013 | if (enet_addr_type == ENET_ADDR_TYPE_GROUP) { |
| 2009 | addr_h = &(p_82xx_addr_filt->gaddr_h); | 2014 | addr_h = &(p_82xx_addr_filt->gaddr_h); |
| @@ -2079,7 +2084,7 @@ static int ugeth_82xx_filtering_clear_addr_in_paddr(struct ucc_geth_private *uge | |||
| 2079 | static void ucc_geth_memclean(struct ucc_geth_private *ugeth) | 2084 | static void ucc_geth_memclean(struct ucc_geth_private *ugeth) |
| 2080 | { | 2085 | { |
| 2081 | u16 i, j; | 2086 | u16 i, j; |
| 2082 | u8 *bd; | 2087 | u8 __iomem *bd; |
| 2083 | 2088 | ||
| 2084 | if (!ugeth) | 2089 | if (!ugeth) |
| 2085 | return; | 2090 | return; |
| @@ -2154,8 +2159,8 @@ static void ucc_geth_memclean(struct ucc_geth_private *ugeth) | |||
| 2154 | for (j = 0; j < ugeth->ug_info->bdRingLenTx[i]; j++) { | 2159 | for (j = 0; j < ugeth->ug_info->bdRingLenTx[i]; j++) { |
| 2155 | if (ugeth->tx_skbuff[i][j]) { | 2160 | if (ugeth->tx_skbuff[i][j]) { |
| 2156 | dma_unmap_single(NULL, | 2161 | dma_unmap_single(NULL, |
| 2157 | ((struct qe_bd *)bd)->buf, | 2162 | in_be32(&((struct qe_bd __iomem *)bd)->buf), |
| 2158 | (in_be32((u32 *)bd) & | 2163 | (in_be32((u32 __iomem *)bd) & |
| 2159 | BD_LENGTH_MASK), | 2164 | BD_LENGTH_MASK), |
| 2160 | DMA_TO_DEVICE); | 2165 | DMA_TO_DEVICE); |
| 2161 | dev_kfree_skb_any(ugeth->tx_skbuff[i][j]); | 2166 | dev_kfree_skb_any(ugeth->tx_skbuff[i][j]); |
| @@ -2182,7 +2187,7 @@ static void ucc_geth_memclean(struct ucc_geth_private *ugeth) | |||
| 2182 | for (j = 0; j < ugeth->ug_info->bdRingLenRx[i]; j++) { | 2187 | for (j = 0; j < ugeth->ug_info->bdRingLenRx[i]; j++) { |
| 2183 | if (ugeth->rx_skbuff[i][j]) { | 2188 | if (ugeth->rx_skbuff[i][j]) { |
| 2184 | dma_unmap_single(NULL, | 2189 | dma_unmap_single(NULL, |
| 2185 | ((struct qe_bd *)bd)->buf, | 2190 | in_be32(&((struct qe_bd __iomem *)bd)->buf), |
| 2186 | ugeth->ug_info-> | 2191 | ugeth->ug_info-> |
| 2187 | uf_info.max_rx_buf_length + | 2192 | uf_info.max_rx_buf_length + |
| 2188 | UCC_GETH_RX_DATA_BUF_ALIGNMENT, | 2193 | UCC_GETH_RX_DATA_BUF_ALIGNMENT, |
| @@ -2218,8 +2223,8 @@ static void ucc_geth_set_multi(struct net_device *dev) | |||
| 2218 | { | 2223 | { |
| 2219 | struct ucc_geth_private *ugeth; | 2224 | struct ucc_geth_private *ugeth; |
| 2220 | struct dev_mc_list *dmi; | 2225 | struct dev_mc_list *dmi; |
| 2221 | struct ucc_fast *uf_regs; | 2226 | struct ucc_fast __iomem *uf_regs; |
| 2222 | struct ucc_geth_82xx_address_filtering_pram *p_82xx_addr_filt; | 2227 | struct ucc_geth_82xx_address_filtering_pram __iomem *p_82xx_addr_filt; |
| 2223 | int i; | 2228 | int i; |
| 2224 | 2229 | ||
| 2225 | ugeth = netdev_priv(dev); | 2230 | ugeth = netdev_priv(dev); |
| @@ -2228,14 +2233,14 @@ static void ucc_geth_set_multi(struct net_device *dev) | |||
| 2228 | 2233 | ||
| 2229 | if (dev->flags & IFF_PROMISC) { | 2234 | if (dev->flags & IFF_PROMISC) { |
| 2230 | 2235 | ||
| 2231 | uf_regs->upsmr |= UPSMR_PRO; | 2236 | out_be32(&uf_regs->upsmr, in_be32(&uf_regs->upsmr) | UPSMR_PRO); |
| 2232 | 2237 | ||
| 2233 | } else { | 2238 | } else { |
| 2234 | 2239 | ||
| 2235 | uf_regs->upsmr &= ~UPSMR_PRO; | 2240 | out_be32(&uf_regs->upsmr, in_be32(&uf_regs->upsmr)&~UPSMR_PRO); |
| 2236 | 2241 | ||
| 2237 | p_82xx_addr_filt = | 2242 | p_82xx_addr_filt = |
| 2238 | (struct ucc_geth_82xx_address_filtering_pram *) ugeth-> | 2243 | (struct ucc_geth_82xx_address_filtering_pram __iomem *) ugeth-> |
| 2239 | p_rx_glbl_pram->addressfiltering; | 2244 | p_rx_glbl_pram->addressfiltering; |
| 2240 | 2245 | ||
| 2241 | if (dev->flags & IFF_ALLMULTI) { | 2246 | if (dev->flags & IFF_ALLMULTI) { |
| @@ -2270,7 +2275,7 @@ static void ucc_geth_set_multi(struct net_device *dev) | |||
| 2270 | 2275 | ||
| 2271 | static void ucc_geth_stop(struct ucc_geth_private *ugeth) | 2276 | static void ucc_geth_stop(struct ucc_geth_private *ugeth) |
| 2272 | { | 2277 | { |
| 2273 | struct ucc_geth *ug_regs = ugeth->ug_regs; | 2278 | struct ucc_geth __iomem *ug_regs = ugeth->ug_regs; |
| 2274 | struct phy_device *phydev = ugeth->phydev; | 2279 | struct phy_device *phydev = ugeth->phydev; |
| 2275 | u32 tempval; | 2280 | u32 tempval; |
| 2276 | 2281 | ||
| @@ -2419,20 +2424,20 @@ static int ucc_struct_init(struct ucc_geth_private *ugeth) | |||
| 2419 | return -ENOMEM; | 2424 | return -ENOMEM; |
| 2420 | } | 2425 | } |
| 2421 | 2426 | ||
| 2422 | ugeth->ug_regs = (struct ucc_geth *) ioremap(uf_info->regs, sizeof(struct ucc_geth)); | 2427 | ugeth->ug_regs = (struct ucc_geth __iomem *) ioremap(uf_info->regs, sizeof(struct ucc_geth)); |
| 2423 | 2428 | ||
| 2424 | return 0; | 2429 | return 0; |
| 2425 | } | 2430 | } |
| 2426 | 2431 | ||
| 2427 | static int ucc_geth_startup(struct ucc_geth_private *ugeth) | 2432 | static int ucc_geth_startup(struct ucc_geth_private *ugeth) |
| 2428 | { | 2433 | { |
| 2429 | struct ucc_geth_82xx_address_filtering_pram *p_82xx_addr_filt; | 2434 | struct ucc_geth_82xx_address_filtering_pram __iomem *p_82xx_addr_filt; |
| 2430 | struct ucc_geth_init_pram *p_init_enet_pram; | 2435 | struct ucc_geth_init_pram __iomem *p_init_enet_pram; |
| 2431 | struct ucc_fast_private *uccf; | 2436 | struct ucc_fast_private *uccf; |
| 2432 | struct ucc_geth_info *ug_info; | 2437 | struct ucc_geth_info *ug_info; |
| 2433 | struct ucc_fast_info *uf_info; | 2438 | struct ucc_fast_info *uf_info; |
| 2434 | struct ucc_fast *uf_regs; | 2439 | struct ucc_fast __iomem *uf_regs; |
| 2435 | struct ucc_geth *ug_regs; | 2440 | struct ucc_geth __iomem *ug_regs; |
| 2436 | int ret_val = -EINVAL; | 2441 | int ret_val = -EINVAL; |
| 2437 | u32 remoder = UCC_GETH_REMODER_INIT; | 2442 | u32 remoder = UCC_GETH_REMODER_INIT; |
| 2438 | u32 init_enet_pram_offset, cecr_subblock, command, maccfg1; | 2443 | u32 init_enet_pram_offset, cecr_subblock, command, maccfg1; |
| @@ -2440,7 +2445,8 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) | |||
| 2440 | u16 temoder = UCC_GETH_TEMODER_INIT; | 2445 | u16 temoder = UCC_GETH_TEMODER_INIT; |
| 2441 | u16 test; | 2446 | u16 test; |
| 2442 | u8 function_code = 0; | 2447 | u8 function_code = 0; |
| 2443 | u8 *bd, *endOfRing; | 2448 | u8 __iomem *bd; |
| 2449 | u8 __iomem *endOfRing; | ||
| 2444 | u8 numThreadsRxNumerical, numThreadsTxNumerical; | 2450 | u8 numThreadsRxNumerical, numThreadsTxNumerical; |
| 2445 | 2451 | ||
| 2446 | ugeth_vdbg("%s: IN", __FUNCTION__); | 2452 | ugeth_vdbg("%s: IN", __FUNCTION__); |
| @@ -2602,11 +2608,11 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) | |||
| 2602 | if (UCC_GETH_TX_BD_RING_ALIGNMENT > 4) | 2608 | if (UCC_GETH_TX_BD_RING_ALIGNMENT > 4) |
| 2603 | align = UCC_GETH_TX_BD_RING_ALIGNMENT; | 2609 | align = UCC_GETH_TX_BD_RING_ALIGNMENT; |
| 2604 | ugeth->tx_bd_ring_offset[j] = | 2610 | ugeth->tx_bd_ring_offset[j] = |
| 2605 | kmalloc((u32) (length + align), GFP_KERNEL); | 2611 | (u32) kmalloc((u32) (length + align), GFP_KERNEL); |
| 2606 | 2612 | ||
| 2607 | if (ugeth->tx_bd_ring_offset[j] != 0) | 2613 | if (ugeth->tx_bd_ring_offset[j] != 0) |
| 2608 | ugeth->p_tx_bd_ring[j] = | 2614 | ugeth->p_tx_bd_ring[j] = |
| 2609 | (void*)((ugeth->tx_bd_ring_offset[j] + | 2615 | (u8 __iomem *)((ugeth->tx_bd_ring_offset[j] + |
| 2610 | align) & ~(align - 1)); | 2616 | align) & ~(align - 1)); |
| 2611 | } else if (uf_info->bd_mem_part == MEM_PART_MURAM) { | 2617 | } else if (uf_info->bd_mem_part == MEM_PART_MURAM) { |
| 2612 | ugeth->tx_bd_ring_offset[j] = | 2618 | ugeth->tx_bd_ring_offset[j] = |
| @@ -2614,7 +2620,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) | |||
| 2614 | UCC_GETH_TX_BD_RING_ALIGNMENT); | 2620 | UCC_GETH_TX_BD_RING_ALIGNMENT); |
| 2615 | if (!IS_ERR_VALUE(ugeth->tx_bd_ring_offset[j])) | 2621 | if (!IS_ERR_VALUE(ugeth->tx_bd_ring_offset[j])) |
| 2616 | ugeth->p_tx_bd_ring[j] = | 2622 | ugeth->p_tx_bd_ring[j] = |
| 2617 | (u8 *) qe_muram_addr(ugeth-> | 2623 | (u8 __iomem *) qe_muram_addr(ugeth-> |
| 2618 | tx_bd_ring_offset[j]); | 2624 | tx_bd_ring_offset[j]); |
| 2619 | } | 2625 | } |
| 2620 | if (!ugeth->p_tx_bd_ring[j]) { | 2626 | if (!ugeth->p_tx_bd_ring[j]) { |
| @@ -2626,8 +2632,8 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) | |||
| 2626 | return -ENOMEM; | 2632 | return -ENOMEM; |
| 2627 | } | 2633 | } |
| 2628 | /* Zero unused end of bd ring, according to spec */ | 2634 | /* Zero unused end of bd ring, according to spec */ |
| 2629 | memset(ugeth->p_tx_bd_ring[j] + | 2635 | memset_io((void __iomem *)(ugeth->p_tx_bd_ring[j] + |
| 2630 | ug_info->bdRingLenTx[j] * sizeof(struct qe_bd), 0, | 2636 | ug_info->bdRingLenTx[j] * sizeof(struct qe_bd)), 0, |
| 2631 | length - ug_info->bdRingLenTx[j] * sizeof(struct qe_bd)); | 2637 | length - ug_info->bdRingLenTx[j] * sizeof(struct qe_bd)); |
| 2632 | } | 2638 | } |
| 2633 | 2639 | ||
| @@ -2639,10 +2645,10 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) | |||
| 2639 | if (UCC_GETH_RX_BD_RING_ALIGNMENT > 4) | 2645 | if (UCC_GETH_RX_BD_RING_ALIGNMENT > 4) |
| 2640 | align = UCC_GETH_RX_BD_RING_ALIGNMENT; | 2646 | align = UCC_GETH_RX_BD_RING_ALIGNMENT; |
| 2641 | ugeth->rx_bd_ring_offset[j] = | 2647 | ugeth->rx_bd_ring_offset[j] = |
| 2642 | kmalloc((u32) (length + align), GFP_KERNEL); | 2648 | (u32) kmalloc((u32) (length + align), GFP_KERNEL); |
| 2643 | if (ugeth->rx_bd_ring_offset[j] != 0) | 2649 | if (ugeth->rx_bd_ring_offset[j] != 0) |
| 2644 | ugeth->p_rx_bd_ring[j] = | 2650 | ugeth->p_rx_bd_ring[j] = |
| 2645 | (void*)((ugeth->rx_bd_ring_offset[j] + | 2651 | (u8 __iomem *)((ugeth->rx_bd_ring_offset[j] + |
| 2646 | align) & ~(align - 1)); | 2652 | align) & ~(align - 1)); |
| 2647 | } else if (uf_info->bd_mem_part == MEM_PART_MURAM) { | 2653 | } else if (uf_info->bd_mem_part == MEM_PART_MURAM) { |
| 2648 | ugeth->rx_bd_ring_offset[j] = | 2654 | ugeth->rx_bd_ring_offset[j] = |
| @@ -2650,7 +2656,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) | |||
| 2650 | UCC_GETH_RX_BD_RING_ALIGNMENT); | 2656 | UCC_GETH_RX_BD_RING_ALIGNMENT); |
| 2651 | if (!IS_ERR_VALUE(ugeth->rx_bd_ring_offset[j])) | 2657 | if (!IS_ERR_VALUE(ugeth->rx_bd_ring_offset[j])) |
| 2652 | ugeth->p_rx_bd_ring[j] = | 2658 | ugeth->p_rx_bd_ring[j] = |
| 2653 | (u8 *) qe_muram_addr(ugeth-> | 2659 | (u8 __iomem *) qe_muram_addr(ugeth-> |
| 2654 | rx_bd_ring_offset[j]); | 2660 | rx_bd_ring_offset[j]); |
| 2655 | } | 2661 | } |
| 2656 | if (!ugeth->p_rx_bd_ring[j]) { | 2662 | if (!ugeth->p_rx_bd_ring[j]) { |
| @@ -2685,14 +2691,14 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) | |||
| 2685 | bd = ugeth->confBd[j] = ugeth->txBd[j] = ugeth->p_tx_bd_ring[j]; | 2691 | bd = ugeth->confBd[j] = ugeth->txBd[j] = ugeth->p_tx_bd_ring[j]; |
| 2686 | for (i = 0; i < ug_info->bdRingLenTx[j]; i++) { | 2692 | for (i = 0; i < ug_info->bdRingLenTx[j]; i++) { |
| 2687 | /* clear bd buffer */ | 2693 | /* clear bd buffer */ |
| 2688 | out_be32(&((struct qe_bd *)bd)->buf, 0); | 2694 | out_be32(&((struct qe_bd __iomem *)bd)->buf, 0); |
| 2689 | /* set bd status and length */ | 2695 | /* set bd status and length */ |
| 2690 | out_be32((u32 *)bd, 0); | 2696 | out_be32((u32 __iomem *)bd, 0); |
| 2691 | bd += sizeof(struct qe_bd); | 2697 | bd += sizeof(struct qe_bd); |
| 2692 | } | 2698 | } |
| 2693 | bd -= sizeof(struct qe_bd); | 2699 | bd -= sizeof(struct qe_bd); |
| 2694 | /* set bd status and length */ | 2700 | /* set bd status and length */ |
| 2695 | out_be32((u32 *)bd, T_W); /* for last BD set Wrap bit */ | 2701 | out_be32((u32 __iomem *)bd, T_W); /* for last BD set Wrap bit */ |
| 2696 | } | 2702 | } |
| 2697 | 2703 | ||
| 2698 | /* Init Rx bds */ | 2704 | /* Init Rx bds */ |
| @@ -2717,14 +2723,14 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) | |||
| 2717 | bd = ugeth->rxBd[j] = ugeth->p_rx_bd_ring[j]; | 2723 | bd = ugeth->rxBd[j] = ugeth->p_rx_bd_ring[j]; |
| 2718 | for (i = 0; i < ug_info->bdRingLenRx[j]; i++) { | 2724 | for (i = 0; i < ug_info->bdRingLenRx[j]; i++) { |
| 2719 | /* set bd status and length */ | 2725 | /* set bd status and length */ |
| 2720 | out_be32((u32 *)bd, R_I); | 2726 | out_be32((u32 __iomem *)bd, R_I); |
| 2721 | /* clear bd buffer */ | 2727 | /* clear bd buffer */ |
| 2722 | out_be32(&((struct qe_bd *)bd)->buf, 0); | 2728 | out_be32(&((struct qe_bd __iomem *)bd)->buf, 0); |
| 2723 | bd += sizeof(struct qe_bd); | 2729 | bd += sizeof(struct qe_bd); |
| 2724 | } | 2730 | } |
| 2725 | bd -= sizeof(struct qe_bd); | 2731 | bd -= sizeof(struct qe_bd); |
| 2726 | /* set bd status and length */ | 2732 | /* set bd status and length */ |
| 2727 | out_be32((u32 *)bd, R_W); /* for last BD set Wrap bit */ | 2733 | out_be32((u32 __iomem *)bd, R_W); /* for last BD set Wrap bit */ |
| 2728 | } | 2734 | } |
| 2729 | 2735 | ||
| 2730 | /* | 2736 | /* |
| @@ -2744,10 +2750,10 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) | |||
| 2744 | return -ENOMEM; | 2750 | return -ENOMEM; |
| 2745 | } | 2751 | } |
| 2746 | ugeth->p_tx_glbl_pram = | 2752 | ugeth->p_tx_glbl_pram = |
| 2747 | (struct ucc_geth_tx_global_pram *) qe_muram_addr(ugeth-> | 2753 | (struct ucc_geth_tx_global_pram __iomem *) qe_muram_addr(ugeth-> |
| 2748 | tx_glbl_pram_offset); | 2754 | tx_glbl_pram_offset); |
| 2749 | /* Zero out p_tx_glbl_pram */ | 2755 | /* Zero out p_tx_glbl_pram */ |
| 2750 | memset(ugeth->p_tx_glbl_pram, 0, sizeof(struct ucc_geth_tx_global_pram)); | 2756 | memset_io((void __iomem *)ugeth->p_tx_glbl_pram, 0, sizeof(struct ucc_geth_tx_global_pram)); |
| 2751 | 2757 | ||
| 2752 | /* Fill global PRAM */ | 2758 | /* Fill global PRAM */ |
| 2753 | 2759 | ||
| @@ -2768,7 +2774,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) | |||
| 2768 | } | 2774 | } |
| 2769 | 2775 | ||
| 2770 | ugeth->p_thread_data_tx = | 2776 | ugeth->p_thread_data_tx = |
| 2771 | (struct ucc_geth_thread_data_tx *) qe_muram_addr(ugeth-> | 2777 | (struct ucc_geth_thread_data_tx __iomem *) qe_muram_addr(ugeth-> |
| 2772 | thread_dat_tx_offset); | 2778 | thread_dat_tx_offset); |
| 2773 | out_be32(&ugeth->p_tx_glbl_pram->tqptr, ugeth->thread_dat_tx_offset); | 2779 | out_be32(&ugeth->p_tx_glbl_pram->tqptr, ugeth->thread_dat_tx_offset); |
| 2774 | 2780 | ||
| @@ -2779,7 +2785,8 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) | |||
| 2779 | 2785 | ||
| 2780 | /* iphoffset */ | 2786 | /* iphoffset */ |
| 2781 | for (i = 0; i < TX_IP_OFFSET_ENTRY_MAX; i++) | 2787 | for (i = 0; i < TX_IP_OFFSET_ENTRY_MAX; i++) |
| 2782 | ugeth->p_tx_glbl_pram->iphoffset[i] = ug_info->iphoffset[i]; | 2788 | out_8(&ugeth->p_tx_glbl_pram->iphoffset[i], |
| 2789 | ug_info->iphoffset[i]); | ||
| 2783 | 2790 | ||
| 2784 | /* SQPTR */ | 2791 | /* SQPTR */ |
| 2785 | /* Size varies with number of Tx queues */ | 2792 | /* Size varies with number of Tx queues */ |
| @@ -2797,7 +2804,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) | |||
| 2797 | } | 2804 | } |
| 2798 | 2805 | ||
| 2799 | ugeth->p_send_q_mem_reg = | 2806 | ugeth->p_send_q_mem_reg = |
| 2800 | (struct ucc_geth_send_queue_mem_region *) qe_muram_addr(ugeth-> | 2807 | (struct ucc_geth_send_queue_mem_region __iomem *) qe_muram_addr(ugeth-> |
| 2801 | send_q_mem_reg_offset); | 2808 | send_q_mem_reg_offset); |
| 2802 | out_be32(&ugeth->p_tx_glbl_pram->sqptr, ugeth->send_q_mem_reg_offset); | 2809 | out_be32(&ugeth->p_tx_glbl_pram->sqptr, ugeth->send_q_mem_reg_offset); |
| 2803 | 2810 | ||
| @@ -2841,25 +2848,26 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) | |||
| 2841 | } | 2848 | } |
| 2842 | 2849 | ||
| 2843 | ugeth->p_scheduler = | 2850 | ugeth->p_scheduler = |
| 2844 | (struct ucc_geth_scheduler *) qe_muram_addr(ugeth-> | 2851 | (struct ucc_geth_scheduler __iomem *) qe_muram_addr(ugeth-> |
| 2845 | scheduler_offset); | 2852 | scheduler_offset); |
| 2846 | out_be32(&ugeth->p_tx_glbl_pram->schedulerbasepointer, | 2853 | out_be32(&ugeth->p_tx_glbl_pram->schedulerbasepointer, |
| 2847 | ugeth->scheduler_offset); | 2854 | ugeth->scheduler_offset); |
| 2848 | /* Zero out p_scheduler */ | 2855 | /* Zero out p_scheduler */ |
| 2849 | memset(ugeth->p_scheduler, 0, sizeof(struct ucc_geth_scheduler)); | 2856 | memset_io((void __iomem *)ugeth->p_scheduler, 0, sizeof(struct ucc_geth_scheduler)); |
| 2850 | 2857 | ||
| 2851 | /* Set values in scheduler */ | 2858 | /* Set values in scheduler */ |
| 2852 | out_be32(&ugeth->p_scheduler->mblinterval, | 2859 | out_be32(&ugeth->p_scheduler->mblinterval, |
| 2853 | ug_info->mblinterval); | 2860 | ug_info->mblinterval); |
| 2854 | out_be16(&ugeth->p_scheduler->nortsrbytetime, | 2861 | out_be16(&ugeth->p_scheduler->nortsrbytetime, |
| 2855 | ug_info->nortsrbytetime); | 2862 | ug_info->nortsrbytetime); |
| 2856 | ugeth->p_scheduler->fracsiz = ug_info->fracsiz; | 2863 | out_8(&ugeth->p_scheduler->fracsiz, ug_info->fracsiz); |
| 2857 | ugeth->p_scheduler->strictpriorityq = ug_info->strictpriorityq; | 2864 | out_8(&ugeth->p_scheduler->strictpriorityq, |
| 2858 | ugeth->p_scheduler->txasap = ug_info->txasap; | 2865 | ug_info->strictpriorityq); |
| 2859 | ugeth->p_scheduler->extrabw = ug_info->extrabw; | 2866 | out_8(&ugeth->p_scheduler->txasap, ug_info->txasap); |
| 2867 | out_8(&ugeth->p_scheduler->extrabw, ug_info->extrabw); | ||
| 2860 | for (i = 0; i < NUM_TX_QUEUES; i++) | 2868 | for (i = 0; i < NUM_TX_QUEUES; i++) |
| 2861 | ugeth->p_scheduler->weightfactor[i] = | 2869 | out_8(&ugeth->p_scheduler->weightfactor[i], |
| 2862 | ug_info->weightfactor[i]; | 2870 | ug_info->weightfactor[i]); |
| 2863 | 2871 | ||
| 2864 | /* Set pointers to cpucount registers in scheduler */ | 2872 | /* Set pointers to cpucount registers in scheduler */ |
| 2865 | ugeth->p_cpucount[0] = &(ugeth->p_scheduler->cpucount0); | 2873 | ugeth->p_cpucount[0] = &(ugeth->p_scheduler->cpucount0); |
| @@ -2890,10 +2898,10 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) | |||
| 2890 | return -ENOMEM; | 2898 | return -ENOMEM; |
| 2891 | } | 2899 | } |
| 2892 | ugeth->p_tx_fw_statistics_pram = | 2900 | ugeth->p_tx_fw_statistics_pram = |
| 2893 | (struct ucc_geth_tx_firmware_statistics_pram *) | 2901 | (struct ucc_geth_tx_firmware_statistics_pram __iomem *) |
| 2894 | qe_muram_addr(ugeth->tx_fw_statistics_pram_offset); | 2902 | qe_muram_addr(ugeth->tx_fw_statistics_pram_offset); |
| 2895 | /* Zero out p_tx_fw_statistics_pram */ | 2903 | /* Zero out p_tx_fw_statistics_pram */ |
| 2896 | memset(ugeth->p_tx_fw_statistics_pram, | 2904 | memset_io((void __iomem *)ugeth->p_tx_fw_statistics_pram, |
| 2897 | 0, sizeof(struct ucc_geth_tx_firmware_statistics_pram)); | 2905 | 0, sizeof(struct ucc_geth_tx_firmware_statistics_pram)); |
| 2898 | } | 2906 | } |
| 2899 | 2907 | ||
| @@ -2930,10 +2938,10 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) | |||
| 2930 | return -ENOMEM; | 2938 | return -ENOMEM; |
| 2931 | } | 2939 | } |
| 2932 | ugeth->p_rx_glbl_pram = | 2940 | ugeth->p_rx_glbl_pram = |
| 2933 | (struct ucc_geth_rx_global_pram *) qe_muram_addr(ugeth-> | 2941 | (struct ucc_geth_rx_global_pram __iomem *) qe_muram_addr(ugeth-> |
| 2934 | rx_glbl_pram_offset); | 2942 | rx_glbl_pram_offset); |
| 2935 | /* Zero out p_rx_glbl_pram */ | 2943 | /* Zero out p_rx_glbl_pram */ |
| 2936 | memset(ugeth->p_rx_glbl_pram, 0, sizeof(struct ucc_geth_rx_global_pram)); | 2944 | memset_io((void __iomem *)ugeth->p_rx_glbl_pram, 0, sizeof(struct ucc_geth_rx_global_pram)); |
| 2937 | 2945 | ||
| 2938 | /* Fill global PRAM */ | 2946 | /* Fill global PRAM */ |
| 2939 | 2947 | ||
| @@ -2953,7 +2961,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) | |||
| 2953 | } | 2961 | } |
| 2954 | 2962 | ||
| 2955 | ugeth->p_thread_data_rx = | 2963 | ugeth->p_thread_data_rx = |
| 2956 | (struct ucc_geth_thread_data_rx *) qe_muram_addr(ugeth-> | 2964 | (struct ucc_geth_thread_data_rx __iomem *) qe_muram_addr(ugeth-> |
| 2957 | thread_dat_rx_offset); | 2965 | thread_dat_rx_offset); |
| 2958 | out_be32(&ugeth->p_rx_glbl_pram->rqptr, ugeth->thread_dat_rx_offset); | 2966 | out_be32(&ugeth->p_rx_glbl_pram->rqptr, ugeth->thread_dat_rx_offset); |
| 2959 | 2967 | ||
| @@ -2976,10 +2984,10 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) | |||
| 2976 | return -ENOMEM; | 2984 | return -ENOMEM; |
| 2977 | } | 2985 | } |
| 2978 | ugeth->p_rx_fw_statistics_pram = | 2986 | ugeth->p_rx_fw_statistics_pram = |
| 2979 | (struct ucc_geth_rx_firmware_statistics_pram *) | 2987 | (struct ucc_geth_rx_firmware_statistics_pram __iomem *) |
| 2980 | qe_muram_addr(ugeth->rx_fw_statistics_pram_offset); | 2988 | qe_muram_addr(ugeth->rx_fw_statistics_pram_offset); |
| 2981 | /* Zero out p_rx_fw_statistics_pram */ | 2989 | /* Zero out p_rx_fw_statistics_pram */ |
| 2982 | memset(ugeth->p_rx_fw_statistics_pram, 0, | 2990 | memset_io((void __iomem *)ugeth->p_rx_fw_statistics_pram, 0, |
| 2983 | sizeof(struct ucc_geth_rx_firmware_statistics_pram)); | 2991 | sizeof(struct ucc_geth_rx_firmware_statistics_pram)); |
| 2984 | } | 2992 | } |
| 2985 | 2993 | ||
| @@ -3000,7 +3008,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) | |||
| 3000 | } | 3008 | } |
| 3001 | 3009 | ||
| 3002 | ugeth->p_rx_irq_coalescing_tbl = | 3010 | ugeth->p_rx_irq_coalescing_tbl = |
| 3003 | (struct ucc_geth_rx_interrupt_coalescing_table *) | 3011 | (struct ucc_geth_rx_interrupt_coalescing_table __iomem *) |
| 3004 | qe_muram_addr(ugeth->rx_irq_coalescing_tbl_offset); | 3012 | qe_muram_addr(ugeth->rx_irq_coalescing_tbl_offset); |
| 3005 | out_be32(&ugeth->p_rx_glbl_pram->intcoalescingptr, | 3013 | out_be32(&ugeth->p_rx_glbl_pram->intcoalescingptr, |
| 3006 | ugeth->rx_irq_coalescing_tbl_offset); | 3014 | ugeth->rx_irq_coalescing_tbl_offset); |
| @@ -3069,11 +3077,11 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) | |||
| 3069 | } | 3077 | } |
| 3070 | 3078 | ||
| 3071 | ugeth->p_rx_bd_qs_tbl = | 3079 | ugeth->p_rx_bd_qs_tbl = |
| 3072 | (struct ucc_geth_rx_bd_queues_entry *) qe_muram_addr(ugeth-> | 3080 | (struct ucc_geth_rx_bd_queues_entry __iomem *) qe_muram_addr(ugeth-> |
| 3073 | rx_bd_qs_tbl_offset); | 3081 | rx_bd_qs_tbl_offset); |
| 3074 | out_be32(&ugeth->p_rx_glbl_pram->rbdqptr, ugeth->rx_bd_qs_tbl_offset); | 3082 | out_be32(&ugeth->p_rx_glbl_pram->rbdqptr, ugeth->rx_bd_qs_tbl_offset); |
| 3075 | /* Zero out p_rx_bd_qs_tbl */ | 3083 | /* Zero out p_rx_bd_qs_tbl */ |
| 3076 | memset(ugeth->p_rx_bd_qs_tbl, | 3084 | memset_io((void __iomem *)ugeth->p_rx_bd_qs_tbl, |
| 3077 | 0, | 3085 | 0, |
| 3078 | ug_info->numQueuesRx * (sizeof(struct ucc_geth_rx_bd_queues_entry) + | 3086 | ug_info->numQueuesRx * (sizeof(struct ucc_geth_rx_bd_queues_entry) + |
| 3079 | sizeof(struct ucc_geth_rx_prefetched_bds))); | 3087 | sizeof(struct ucc_geth_rx_prefetched_bds))); |
| @@ -3133,7 +3141,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) | |||
| 3133 | &ugeth->p_rx_glbl_pram->remoder); | 3141 | &ugeth->p_rx_glbl_pram->remoder); |
| 3134 | 3142 | ||
| 3135 | /* function code register */ | 3143 | /* function code register */ |
| 3136 | ugeth->p_rx_glbl_pram->rstate = function_code; | 3144 | out_8(&ugeth->p_rx_glbl_pram->rstate, function_code); |
| 3137 | 3145 | ||
| 3138 | /* initialize extended filtering */ | 3146 | /* initialize extended filtering */ |
| 3139 | if (ug_info->rxExtendedFiltering) { | 3147 | if (ug_info->rxExtendedFiltering) { |
| @@ -3160,7 +3168,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) | |||
| 3160 | } | 3168 | } |
| 3161 | 3169 | ||
| 3162 | ugeth->p_exf_glbl_param = | 3170 | ugeth->p_exf_glbl_param = |
| 3163 | (struct ucc_geth_exf_global_pram *) qe_muram_addr(ugeth-> | 3171 | (struct ucc_geth_exf_global_pram __iomem *) qe_muram_addr(ugeth-> |
| 3164 | exf_glbl_param_offset); | 3172 | exf_glbl_param_offset); |
| 3165 | out_be32(&ugeth->p_rx_glbl_pram->exfGlobalParam, | 3173 | out_be32(&ugeth->p_rx_glbl_pram->exfGlobalParam, |
| 3166 | ugeth->exf_glbl_param_offset); | 3174 | ugeth->exf_glbl_param_offset); |
| @@ -3175,7 +3183,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) | |||
| 3175 | ugeth_82xx_filtering_clear_addr_in_paddr(ugeth, (u8) j); | 3183 | ugeth_82xx_filtering_clear_addr_in_paddr(ugeth, (u8) j); |
| 3176 | 3184 | ||
| 3177 | p_82xx_addr_filt = | 3185 | p_82xx_addr_filt = |
| 3178 | (struct ucc_geth_82xx_address_filtering_pram *) ugeth-> | 3186 | (struct ucc_geth_82xx_address_filtering_pram __iomem *) ugeth-> |
| 3179 | p_rx_glbl_pram->addressfiltering; | 3187 | p_rx_glbl_pram->addressfiltering; |
| 3180 | 3188 | ||
| 3181 | ugeth_82xx_filtering_clear_all_addr_in_hash(ugeth, | 3189 | ugeth_82xx_filtering_clear_all_addr_in_hash(ugeth, |
| @@ -3307,17 +3315,21 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) | |||
| 3307 | return -ENOMEM; | 3315 | return -ENOMEM; |
| 3308 | } | 3316 | } |
| 3309 | p_init_enet_pram = | 3317 | p_init_enet_pram = |
| 3310 | (struct ucc_geth_init_pram *) qe_muram_addr(init_enet_pram_offset); | 3318 | (struct ucc_geth_init_pram __iomem *) qe_muram_addr(init_enet_pram_offset); |
| 3311 | 3319 | ||
| 3312 | /* Copy shadow InitEnet command parameter structure into PRAM */ | 3320 | /* Copy shadow InitEnet command parameter structure into PRAM */ |
| 3313 | p_init_enet_pram->resinit1 = ugeth->p_init_enet_param_shadow->resinit1; | 3321 | out_8(&p_init_enet_pram->resinit1, |
| 3314 | p_init_enet_pram->resinit2 = ugeth->p_init_enet_param_shadow->resinit2; | 3322 | ugeth->p_init_enet_param_shadow->resinit1); |
| 3315 | p_init_enet_pram->resinit3 = ugeth->p_init_enet_param_shadow->resinit3; | 3323 | out_8(&p_init_enet_pram->resinit2, |
| 3316 | p_init_enet_pram->resinit4 = ugeth->p_init_enet_param_shadow->resinit4; | 3324 | ugeth->p_init_enet_param_shadow->resinit2); |
| 3325 | out_8(&p_init_enet_pram->resinit3, | ||
| 3326 | ugeth->p_init_enet_param_shadow->resinit3); | ||
| 3327 | out_8(&p_init_enet_pram->resinit4, | ||
| 3328 | ugeth->p_init_enet_param_shadow->resinit4); | ||
| 3317 | out_be16(&p_init_enet_pram->resinit5, | 3329 | out_be16(&p_init_enet_pram->resinit5, |
| 3318 | ugeth->p_init_enet_param_shadow->resinit5); | 3330 | ugeth->p_init_enet_param_shadow->resinit5); |
| 3319 | p_init_enet_pram->largestexternallookupkeysize = | 3331 | out_8(&p_init_enet_pram->largestexternallookupkeysize, |
| 3320 | ugeth->p_init_enet_param_shadow->largestexternallookupkeysize; | 3332 | ugeth->p_init_enet_param_shadow->largestexternallookupkeysize); |
| 3321 | out_be32(&p_init_enet_pram->rgftgfrxglobal, | 3333 | out_be32(&p_init_enet_pram->rgftgfrxglobal, |
| 3322 | ugeth->p_init_enet_param_shadow->rgftgfrxglobal); | 3334 | ugeth->p_init_enet_param_shadow->rgftgfrxglobal); |
| 3323 | for (i = 0; i < ENET_INIT_PARAM_MAX_ENTRIES_RX; i++) | 3335 | for (i = 0; i < ENET_INIT_PARAM_MAX_ENTRIES_RX; i++) |
| @@ -3371,7 +3383,7 @@ static int ucc_geth_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
| 3371 | #ifdef CONFIG_UGETH_TX_ON_DEMAND | 3383 | #ifdef CONFIG_UGETH_TX_ON_DEMAND |
| 3372 | struct ucc_fast_private *uccf; | 3384 | struct ucc_fast_private *uccf; |
| 3373 | #endif | 3385 | #endif |
| 3374 | u8 *bd; /* BD pointer */ | 3386 | u8 __iomem *bd; /* BD pointer */ |
| 3375 | u32 bd_status; | 3387 | u32 bd_status; |
| 3376 | u8 txQ = 0; | 3388 | u8 txQ = 0; |
| 3377 | 3389 | ||
| @@ -3383,7 +3395,7 @@ static int ucc_geth_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
| 3383 | 3395 | ||
| 3384 | /* Start from the next BD that should be filled */ | 3396 | /* Start from the next BD that should be filled */ |
| 3385 | bd = ugeth->txBd[txQ]; | 3397 | bd = ugeth->txBd[txQ]; |
| 3386 | bd_status = in_be32((u32 *)bd); | 3398 | bd_status = in_be32((u32 __iomem *)bd); |
| 3387 | /* Save the skb pointer so we can free it later */ | 3399 | /* Save the skb pointer so we can free it later */ |
| 3388 | ugeth->tx_skbuff[txQ][ugeth->skb_curtx[txQ]] = skb; | 3400 | ugeth->tx_skbuff[txQ][ugeth->skb_curtx[txQ]] = skb; |
| 3389 | 3401 | ||
| @@ -3393,7 +3405,7 @@ static int ucc_geth_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
| 3393 | 1) & TX_RING_MOD_MASK(ugeth->ug_info->bdRingLenTx[txQ]); | 3405 | 1) & TX_RING_MOD_MASK(ugeth->ug_info->bdRingLenTx[txQ]); |
| 3394 | 3406 | ||
| 3395 | /* set up the buffer descriptor */ | 3407 | /* set up the buffer descriptor */ |
| 3396 | out_be32(&((struct qe_bd *)bd)->buf, | 3408 | out_be32(&((struct qe_bd __iomem *)bd)->buf, |
| 3397 | dma_map_single(NULL, skb->data, skb->len, DMA_TO_DEVICE)); | 3409 | dma_map_single(NULL, skb->data, skb->len, DMA_TO_DEVICE)); |
| 3398 | 3410 | ||
| 3399 | /* printk(KERN_DEBUG"skb->data is 0x%x\n",skb->data); */ | 3411 | /* printk(KERN_DEBUG"skb->data is 0x%x\n",skb->data); */ |
| @@ -3401,7 +3413,7 @@ static int ucc_geth_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
| 3401 | bd_status = (bd_status & T_W) | T_R | T_I | T_L | skb->len; | 3413 | bd_status = (bd_status & T_W) | T_R | T_I | T_L | skb->len; |
| 3402 | 3414 | ||
| 3403 | /* set bd status and length */ | 3415 | /* set bd status and length */ |
| 3404 | out_be32((u32 *)bd, bd_status); | 3416 | out_be32((u32 __iomem *)bd, bd_status); |
| 3405 | 3417 | ||
| 3406 | dev->trans_start = jiffies; | 3418 | dev->trans_start = jiffies; |
| 3407 | 3419 | ||
| @@ -3441,7 +3453,7 @@ static int ucc_geth_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
| 3441 | static int ucc_geth_rx(struct ucc_geth_private *ugeth, u8 rxQ, int rx_work_limit) | 3453 | static int ucc_geth_rx(struct ucc_geth_private *ugeth, u8 rxQ, int rx_work_limit) |
| 3442 | { | 3454 | { |
| 3443 | struct sk_buff *skb; | 3455 | struct sk_buff *skb; |
| 3444 | u8 *bd; | 3456 | u8 __iomem *bd; |
| 3445 | u16 length, howmany = 0; | 3457 | u16 length, howmany = 0; |
| 3446 | u32 bd_status; | 3458 | u32 bd_status; |
| 3447 | u8 *bdBuffer; | 3459 | u8 *bdBuffer; |
| @@ -3454,11 +3466,11 @@ static int ucc_geth_rx(struct ucc_geth_private *ugeth, u8 rxQ, int rx_work_limit | |||
| 3454 | /* collect received buffers */ | 3466 | /* collect received buffers */ |
| 3455 | bd = ugeth->rxBd[rxQ]; | 3467 | bd = ugeth->rxBd[rxQ]; |
| 3456 | 3468 | ||
| 3457 | bd_status = in_be32((u32 *)bd); | 3469 | bd_status = in_be32((u32 __iomem *)bd); |
| 3458 | 3470 | ||
| 3459 | /* while there are received buffers and BD is full (~R_E) */ | 3471 | /* while there are received buffers and BD is full (~R_E) */ |
| 3460 | while (!((bd_status & (R_E)) || (--rx_work_limit < 0))) { | 3472 | while (!((bd_status & (R_E)) || (--rx_work_limit < 0))) { |
| 3461 | bdBuffer = (u8 *) in_be32(&((struct qe_bd *)bd)->buf); | 3473 | bdBuffer = (u8 *) in_be32(&((struct qe_bd __iomem *)bd)->buf); |
| 3462 | length = (u16) ((bd_status & BD_LENGTH_MASK) - 4); | 3474 | length = (u16) ((bd_status & BD_LENGTH_MASK) - 4); |
| 3463 | skb = ugeth->rx_skbuff[rxQ][ugeth->skb_currx[rxQ]]; | 3475 | skb = ugeth->rx_skbuff[rxQ][ugeth->skb_currx[rxQ]]; |
| 3464 | 3476 | ||
| @@ -3516,7 +3528,7 @@ static int ucc_geth_rx(struct ucc_geth_private *ugeth, u8 rxQ, int rx_work_limit | |||
| 3516 | else | 3528 | else |
| 3517 | bd += sizeof(struct qe_bd); | 3529 | bd += sizeof(struct qe_bd); |
| 3518 | 3530 | ||
| 3519 | bd_status = in_be32((u32 *)bd); | 3531 | bd_status = in_be32((u32 __iomem *)bd); |
| 3520 | } | 3532 | } |
| 3521 | 3533 | ||
| 3522 | ugeth->rxBd[rxQ] = bd; | 3534 | ugeth->rxBd[rxQ] = bd; |
| @@ -3527,11 +3539,11 @@ static int ucc_geth_tx(struct net_device *dev, u8 txQ) | |||
| 3527 | { | 3539 | { |
| 3528 | /* Start from the next BD that should be filled */ | 3540 | /* Start from the next BD that should be filled */ |
| 3529 | struct ucc_geth_private *ugeth = netdev_priv(dev); | 3541 | struct ucc_geth_private *ugeth = netdev_priv(dev); |
| 3530 | u8 *bd; /* BD pointer */ | 3542 | u8 __iomem *bd; /* BD pointer */ |
| 3531 | u32 bd_status; | 3543 | u32 bd_status; |
| 3532 | 3544 | ||
| 3533 | bd = ugeth->confBd[txQ]; | 3545 | bd = ugeth->confBd[txQ]; |
| 3534 | bd_status = in_be32((u32 *)bd); | 3546 | bd_status = in_be32((u32 __iomem *)bd); |
| 3535 | 3547 | ||
| 3536 | /* Normal processing. */ | 3548 | /* Normal processing. */ |
| 3537 | while ((bd_status & T_R) == 0) { | 3549 | while ((bd_status & T_R) == 0) { |
| @@ -3561,7 +3573,7 @@ static int ucc_geth_tx(struct net_device *dev, u8 txQ) | |||
| 3561 | bd += sizeof(struct qe_bd); | 3573 | bd += sizeof(struct qe_bd); |
| 3562 | else | 3574 | else |
| 3563 | bd = ugeth->p_tx_bd_ring[txQ]; | 3575 | bd = ugeth->p_tx_bd_ring[txQ]; |
| 3564 | bd_status = in_be32((u32 *)bd); | 3576 | bd_status = in_be32((u32 __iomem *)bd); |
| 3565 | } | 3577 | } |
| 3566 | ugeth->confBd[txQ] = bd; | 3578 | ugeth->confBd[txQ] = bd; |
| 3567 | return 0; | 3579 | return 0; |
