Commit f24e482ae0b856fcf18e8e6956ab3f6b59f3693f
Committed by
Stefano Babic
1 parent
238a53c710
Exists in
smarc_8mq_lf_v2020.04
and in
17 other branches
net: fec: fix build warnings for 64bits support
When building for 64bits system, we get some warnings about type cast between pointer and integer. This patch eliminates the warnings by using ulong/long type which is 32bits on 32bits system or 64bits on 64bits system. Signed-off-by: Ye Li <ye.li@nxp.com> Signed-off-by: Peng Fan <peng.fan@nxp.com> Acked-by: Joe Hershberger <joe.hershberger@ni.com> Reviewed-by: Stefano Babic <sbabic@denx.de> Reviewed-by: Fabio Estevam <fabio.estevam@nxp.com>
Showing 1 changed file with 43 additions and 31 deletions Side-by-side Diff
drivers/net/fec_mxc.c
... | ... | @@ -284,7 +284,7 @@ |
284 | 284 | static void fec_rbd_init(struct fec_priv *fec, int count, int dsize) |
285 | 285 | { |
286 | 286 | uint32_t size; |
287 | - uint8_t *data; | |
287 | + ulong data; | |
288 | 288 | int i; |
289 | 289 | |
290 | 290 | /* |
... | ... | @@ -293,9 +293,9 @@ |
293 | 293 | */ |
294 | 294 | size = roundup(dsize, ARCH_DMA_MINALIGN); |
295 | 295 | for (i = 0; i < count; i++) { |
296 | - data = (uint8_t *)fec->rbd_base[i].data_pointer; | |
297 | - memset(data, 0, dsize); | |
298 | - flush_dcache_range((uint32_t)data, (uint32_t)data + size); | |
296 | + data = fec->rbd_base[i].data_pointer; | |
297 | + memset((void *)data, 0, dsize); | |
298 | + flush_dcache_range(data, data + size); | |
299 | 299 | |
300 | 300 | fec->rbd_base[i].status = FEC_RBD_EMPTY; |
301 | 301 | fec->rbd_base[i].data_length = 0; |
... | ... | @@ -305,8 +305,8 @@ |
305 | 305 | fec->rbd_base[i - 1].status = FEC_RBD_WRAP | FEC_RBD_EMPTY; |
306 | 306 | fec->rbd_index = 0; |
307 | 307 | |
308 | - flush_dcache_range((unsigned)fec->rbd_base, | |
309 | - (unsigned)fec->rbd_base + size); | |
308 | + flush_dcache_range((ulong)fec->rbd_base, | |
309 | + (ulong)fec->rbd_base + size); | |
310 | 310 | } |
311 | 311 | |
312 | 312 | /** |
... | ... | @@ -323,7 +323,7 @@ |
323 | 323 | */ |
324 | 324 | static void fec_tbd_init(struct fec_priv *fec) |
325 | 325 | { |
326 | - unsigned addr = (unsigned)fec->tbd_base; | |
326 | + ulong addr = (ulong)fec->tbd_base; | |
327 | 327 | unsigned size = roundup(2 * sizeof(struct fec_bd), |
328 | 328 | ARCH_DMA_MINALIGN); |
329 | 329 | |
... | ... | @@ -423,7 +423,7 @@ |
423 | 423 | struct fec_priv *fec = (struct fec_priv *)edev->priv; |
424 | 424 | #endif |
425 | 425 | int speed; |
426 | - uint32_t addr, size; | |
426 | + ulong addr, size; | |
427 | 427 | int i; |
428 | 428 | |
429 | 429 | debug("fec_open: fec_open(dev)\n"); |
... | ... | @@ -439,7 +439,7 @@ |
439 | 439 | /* Flush the descriptors into RAM */ |
440 | 440 | size = roundup(FEC_RBD_NUM * sizeof(struct fec_bd), |
441 | 441 | ARCH_DMA_MINALIGN); |
442 | - addr = (uint32_t)fec->rbd_base; | |
442 | + addr = (ulong)fec->rbd_base; | |
443 | 443 | flush_dcache_range(addr, addr + size); |
444 | 444 | |
445 | 445 | #ifdef FEC_QUIRK_ENET_MAC |
... | ... | @@ -533,8 +533,9 @@ |
533 | 533 | #else |
534 | 534 | struct fec_priv *fec = (struct fec_priv *)dev->priv; |
535 | 535 | #endif |
536 | - uint32_t mib_ptr = (uint32_t)&fec->eth->rmon_t_drop; | |
537 | - int i; | |
536 | + u8 *mib_ptr = (uint8_t *)&fec->eth->rmon_t_drop; | |
537 | + u8 *i; | |
538 | + ulong addr; | |
538 | 539 | |
539 | 540 | /* Initialize MAC address */ |
540 | 541 | #ifdef CONFIG_DM_ETH |
541 | 542 | |
... | ... | @@ -574,9 +575,13 @@ |
574 | 575 | |
575 | 576 | /* size and address of each buffer */ |
576 | 577 | writel(FEC_MAX_PKT_SIZE, &fec->eth->emrbr); |
577 | - writel((uint32_t)fec->tbd_base, &fec->eth->etdsr); | |
578 | - writel((uint32_t)fec->rbd_base, &fec->eth->erdsr); | |
579 | 578 | |
579 | + addr = (ulong)fec->tbd_base; | |
580 | + writel((uint32_t)addr, &fec->eth->etdsr); | |
581 | + | |
582 | + addr = (ulong)fec->rbd_base; | |
583 | + writel((uint32_t)addr, &fec->eth->erdsr); | |
584 | + | |
580 | 585 | #ifndef CONFIG_PHYLIB |
581 | 586 | if (fec->xcv_type != SEVENWIRE) |
582 | 587 | miiphy_restart_aneg(dev); |
... | ... | @@ -640,8 +645,8 @@ |
640 | 645 | #endif |
641 | 646 | { |
642 | 647 | unsigned int status; |
643 | - uint32_t size, end; | |
644 | - uint32_t addr; | |
648 | + u32 size; | |
649 | + ulong addr, end; | |
645 | 650 | int timeout = FEC_XFER_TIMEOUT; |
646 | 651 | int ret = 0; |
647 | 652 | |
648 | 653 | |
... | ... | @@ -672,13 +677,13 @@ |
672 | 677 | swap_packet((uint32_t *)packet, length); |
673 | 678 | #endif |
674 | 679 | |
675 | - addr = (uint32_t)packet; | |
680 | + addr = (ulong)packet; | |
676 | 681 | end = roundup(addr + length, ARCH_DMA_MINALIGN); |
677 | 682 | addr &= ~(ARCH_DMA_MINALIGN - 1); |
678 | 683 | flush_dcache_range(addr, end); |
679 | 684 | |
680 | 685 | writew(length, &fec->tbd_base[fec->tbd_index].data_length); |
681 | - writel(addr, &fec->tbd_base[fec->tbd_index].data_pointer); | |
686 | + writel((uint32_t)addr, &fec->tbd_base[fec->tbd_index].data_pointer); | |
682 | 687 | |
683 | 688 | /* |
684 | 689 | * update BD's status now |
... | ... | @@ -698,7 +703,7 @@ |
698 | 703 | * can start DMA. |
699 | 704 | */ |
700 | 705 | size = roundup(2 * sizeof(struct fec_bd), ARCH_DMA_MINALIGN); |
701 | - addr = (uint32_t)fec->tbd_base; | |
706 | + addr = (ulong)fec->tbd_base; | |
702 | 707 | flush_dcache_range(addr, addr + size); |
703 | 708 | |
704 | 709 | /* |
... | ... | @@ -799,7 +804,7 @@ |
799 | 804 | unsigned long ievent; |
800 | 805 | int frame_length, len = 0; |
801 | 806 | uint16_t bd_status; |
802 | - uint32_t addr, size, end; | |
807 | + ulong addr, size, end; | |
803 | 808 | int i; |
804 | 809 | ALLOC_CACHE_ALIGN_BUFFER(uchar, buff, FEC_MAX_PKT_SIZE); |
805 | 810 | |
... | ... | @@ -854,7 +859,7 @@ |
854 | 859 | * the descriptor. The solution is to mark the whole cache line when all |
855 | 860 | * descriptors in the cache line are processed. |
856 | 861 | */ |
857 | - addr = (uint32_t)rbd; | |
862 | + addr = (ulong)rbd; | |
858 | 863 | addr &= ~(ARCH_DMA_MINALIGN - 1); |
859 | 864 | size = roundup(sizeof(struct fec_bd), ARCH_DMA_MINALIGN); |
860 | 865 | invalidate_dcache_range(addr, addr + size); |
... | ... | @@ -882,8 +887,8 @@ |
882 | 887 | len = frame_length; |
883 | 888 | } else { |
884 | 889 | if (bd_status & FEC_RBD_ERR) |
885 | - debug("error frame: 0x%08x 0x%08x\n", | |
886 | - addr, bd_status); | |
890 | + debug("error frame: 0x%08lx 0x%08x\n", | |
891 | + addr, bd_status); | |
887 | 892 | } |
888 | 893 | |
889 | 894 | /* |
... | ... | @@ -895,7 +900,7 @@ |
895 | 900 | size = RXDESC_PER_CACHELINE - 1; |
896 | 901 | if ((fec->rbd_index & size) == size) { |
897 | 902 | i = fec->rbd_index - size; |
898 | - addr = (uint32_t)&fec->rbd_base[i]; | |
903 | + addr = (ulong)&fec->rbd_base[i]; | |
899 | 904 | for (; i <= fec->rbd_index ; i++) { |
900 | 905 | fec_rbd_clean(i == (FEC_RBD_NUM - 1), |
901 | 906 | &fec->rbd_base[i]); |
... | ... | @@ -922,6 +927,7 @@ |
922 | 927 | unsigned int size; |
923 | 928 | int i; |
924 | 929 | uint8_t *data; |
930 | + ulong addr; | |
925 | 931 | |
926 | 932 | /* Allocate TX descriptors. */ |
927 | 933 | size = roundup(2 * sizeof(struct fec_bd), ARCH_DMA_MINALIGN); |
928 | 934 | |
... | ... | @@ -950,11 +956,12 @@ |
950 | 956 | |
951 | 957 | memset(data, 0, size); |
952 | 958 | |
953 | - fec->rbd_base[i].data_pointer = (uint32_t)data; | |
959 | + addr = (ulong)data; | |
960 | + fec->rbd_base[i].data_pointer = (uint32_t)addr; | |
954 | 961 | fec->rbd_base[i].status = FEC_RBD_EMPTY; |
955 | 962 | fec->rbd_base[i].data_length = 0; |
956 | 963 | /* Flush the buffer to memory. */ |
957 | - flush_dcache_range((uint32_t)data, (uint32_t)data + size); | |
964 | + flush_dcache_range(addr, addr + size); | |
958 | 965 | } |
959 | 966 | |
960 | 967 | /* Mark the last RBD to close the ring. */ |
... | ... | @@ -966,8 +973,10 @@ |
966 | 973 | return 0; |
967 | 974 | |
968 | 975 | err_ring: |
969 | - for (; i >= 0; i--) | |
970 | - free((void *)fec->rbd_base[i].data_pointer); | |
976 | + for (; i >= 0; i--) { | |
977 | + addr = fec->rbd_base[i].data_pointer; | |
978 | + free((void *)addr); | |
979 | + } | |
971 | 980 | free(fec->rbd_base); |
972 | 981 | err_rx: |
973 | 982 | free(fec->tbd_base); |
974 | 983 | |
... | ... | @@ -978,9 +987,12 @@ |
978 | 987 | static void fec_free_descs(struct fec_priv *fec) |
979 | 988 | { |
980 | 989 | int i; |
990 | + ulong addr; | |
981 | 991 | |
982 | - for (i = 0; i < FEC_RBD_NUM; i++) | |
983 | - free((void *)fec->rbd_base[i].data_pointer); | |
992 | + for (i = 0; i < FEC_RBD_NUM; i++) { | |
993 | + addr = fec->rbd_base[i].data_pointer; | |
994 | + free((void *)addr); | |
995 | + } | |
984 | 996 | free(fec->rbd_base); |
985 | 997 | free(fec->tbd_base); |
986 | 998 | } |
... | ... | @@ -995,7 +1007,7 @@ |
995 | 1007 | struct fec_priv *priv = dev_get_priv(dev); |
996 | 1008 | struct ethernet_regs *eth = priv->eth; |
997 | 1009 | #else |
998 | - struct ethernet_regs *eth = (struct ethernet_regs *)base_addr; | |
1010 | + struct ethernet_regs *eth = (struct ethernet_regs *)(ulong)base_addr; | |
999 | 1011 | #endif |
1000 | 1012 | struct mii_dev *bus; |
1001 | 1013 | int ret; |
... | ... | @@ -1065,7 +1077,7 @@ |
1065 | 1077 | edev->halt = fec_halt; |
1066 | 1078 | edev->write_hwaddr = fec_set_hwaddr; |
1067 | 1079 | |
1068 | - fec->eth = (struct ethernet_regs *)base_addr; | |
1080 | + fec->eth = (struct ethernet_regs *)(ulong)base_addr; | |
1069 | 1081 | fec->bd = bd; |
1070 | 1082 | |
1071 | 1083 | fec->xcv_type = CONFIG_FEC_XCV_TYPE; |