ixp4xx_eth: fix compile-testing
authorArnd Bergmann <arnd@arndb.de>
Sat, 28 Aug 2021 17:15:45 +0000 (19:15 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 30 Aug 2021 08:59:11 +0000 (09:59 +0100)
Change the driver to use portable integer types to avoid warnings
during compile testing, including:

drivers/net/ethernet/xscale/ixp4xx_eth.c:721:21: error: cast to 'u32 *' (aka 'unsigned int *') from smaller integer type 'int' [-Werror,-Wint-to-pointer-cast]
        memcpy_swab32(mem, (u32 *)((int)skb->data & ~3), bytes / 4);
                           ^
drivers/net/ethernet/xscale/ixp4xx_eth.c:963:12: error: incompatible pointer types passing 'u32 *' (aka 'unsigned int *') to parameter of type 'dma_addr_t *' (aka 'unsigned long long *') [-Werror,-Wincompatible-pointer-types]
                                              &port->desc_tab_phys)))
                                              ^~~~~~~~~~~~~~~~~~~~
include/linux/dmapool.h:27:20: note: passing argument to parameter 'handle' here
                     dma_addr_t *handle);
                                 ^

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/xscale/ixp4xx_eth.c

index 0bd22be..931494c 100644 (file)
@@ -37,7 +37,6 @@
 #include <linux/module.h>
 #include <linux/soc/ixp4xx/npe.h>
 #include <linux/soc/ixp4xx/qmgr.h>
-#include <mach/hardware.h>
 #include <linux/soc/ixp4xx/cpu.h>
 
 #include "ixp46x_ts.h"
@@ -177,7 +176,7 @@ struct port {
        struct eth_plat_info *plat;
        buffer_t *rx_buff_tab[RX_DESCS], *tx_buff_tab[TX_DESCS];
        struct desc *desc_tab;  /* coherent */
-       u32 desc_tab_phys;
+       dma_addr_t desc_tab_phys;
        int id;                 /* logical port ID */
        int speed, duplex;
        u8 firmware[4];
@@ -857,14 +856,14 @@ static int eth_xmit(struct sk_buff *skb, struct net_device *dev)
        bytes = len;
        mem = skb->data;
 #else
-       offset = (int)skb->data & 3; /* keep 32-bit alignment */
+       offset = (uintptr_t)skb->data & 3; /* keep 32-bit alignment */
        bytes = ALIGN(offset + len, 4);
        if (!(mem = kmalloc(bytes, GFP_ATOMIC))) {
                dev_kfree_skb(skb);
                dev->stats.tx_dropped++;
                return NETDEV_TX_OK;
        }
-       memcpy_swab32(mem, (u32 *)((int)skb->data & ~3), bytes / 4);
+       memcpy_swab32(mem, (u32 *)((uintptr_t)skb->data & ~3), bytes / 4);
 #endif
 
        phys = dma_map_single(&dev->dev, mem, bytes, DMA_TO_DEVICE);