sunqe: Fix compiler warnings
authorTushar Dave <tushar.n.dave@oracle.com>
Mon, 17 Oct 2016 20:56:59 +0000 (13:56 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 18 Nov 2016 19:18:26 +0000 (11:18 -0800)
sunqe uses '__u32' for dma handle while invoking kernel DMA APIs,
instead of using dma_addr_t. This hasn't caused any 'incompatible
pointer type' warning on SPARC because until now dma_addr_t is of
type u32. However, recent changes in SPARC ATU (iommu) enables 64bit
DMA and therefore dma_addr_t becomes of type u64. This makes
'incompatible pointer type' warnings inevitable.

e.g.
drivers/net/ethernet/sun/sunqe.c: In function ‘qec_ether_init’:
drivers/net/ethernet/sun/sunqe.c:883: warning: passing argument 3 of ‘dma_alloc_coherent’ from incompatible pointer type
./include/linux/dma-mapping.h:445: note: expected ‘dma_addr_t *’ but argument is of type ‘__u32 *’
drivers/net/ethernet/sun/sunqe.c:885: warning: passing argument 3 of ‘dma_alloc_coherent’ from incompatible pointer type
./include/linux/dma-mapping.h:445: note: expected ‘dma_addr_t *’ but argument is of type ‘__u32 *’

This patch resolves above compiler warnings.

Signed-off-by: Tushar Dave <tushar.n.dave@oracle.com>
Reviewed-by: chris hyser <chris.hyser@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/sun/sunqe.c
drivers/net/ethernet/sun/sunqe.h

index 9b825780b3be02829b54799b0e287ed2c8976a09..9582948145c172826d5321274b59ae7a653b1132 100644 (file)
@@ -124,7 +124,7 @@ static void qe_init_rings(struct sunqe *qep)
 {
        struct qe_init_block *qb = qep->qe_block;
        struct sunqe_buffers *qbufs = qep->buffers;
-       __u32 qbufs_dvma = qep->buffers_dvma;
+       __u32 qbufs_dvma = (__u32)qep->buffers_dvma;
        int i;
 
        qep->rx_new = qep->rx_old = qep->tx_new = qep->tx_old = 0;
@@ -144,6 +144,7 @@ static int qe_init(struct sunqe *qep, int from_irq)
        void __iomem *mregs = qep->mregs;
        void __iomem *gregs = qecp->gregs;
        unsigned char *e = &qep->dev->dev_addr[0];
+       __u32 qblk_dvma = (__u32)qep->qblock_dvma;
        u32 tmp;
        int i;
 
@@ -152,8 +153,8 @@ static int qe_init(struct sunqe *qep, int from_irq)
                return -EAGAIN;
 
        /* Setup initial rx/tx init block pointers. */
-       sbus_writel(qep->qblock_dvma + qib_offset(qe_rxd, 0), cregs + CREG_RXDS);
-       sbus_writel(qep->qblock_dvma + qib_offset(qe_txd, 0), cregs + CREG_TXDS);
+       sbus_writel(qblk_dvma + qib_offset(qe_rxd, 0), cregs + CREG_RXDS);
+       sbus_writel(qblk_dvma + qib_offset(qe_txd, 0), cregs + CREG_TXDS);
 
        /* Enable/mask the various irq's. */
        sbus_writel(0, cregs + CREG_RIMASK);
@@ -413,7 +414,7 @@ static void qe_rx(struct sunqe *qep)
        struct net_device *dev = qep->dev;
        struct qe_rxd *this;
        struct sunqe_buffers *qbufs = qep->buffers;
-       __u32 qbufs_dvma = qep->buffers_dvma;
+       __u32 qbufs_dvma = (__u32)qep->buffers_dvma;
        int elem = qep->rx_new;
        u32 flags;
 
@@ -572,7 +573,7 @@ static int qe_start_xmit(struct sk_buff *skb, struct net_device *dev)
 {
        struct sunqe *qep = netdev_priv(dev);
        struct sunqe_buffers *qbufs = qep->buffers;
-       __u32 txbuf_dvma, qbufs_dvma = qep->buffers_dvma;
+       __u32 txbuf_dvma, qbufs_dvma = (__u32)qep->buffers_dvma;
        unsigned char *txbuf;
        int len, entry;
 
index 581781b6b2fac9d6bfb4bfae9735d674f6d46eec..ae190b77431b14b8f63b465155e9762727ccad77 100644 (file)
@@ -334,12 +334,12 @@ struct sunqe {
        void __iomem                    *qcregs;                /* QEC per-channel Registers   */
        void __iomem                    *mregs;         /* Per-channel MACE Registers  */
        struct qe_init_block            *qe_block;      /* RX and TX descriptors       */
-       __u32                           qblock_dvma;    /* RX and TX descriptors       */
+       dma_addr_t                      qblock_dvma;    /* RX and TX descriptors       */
        spinlock_t                      lock;           /* Protects txfull state       */
        int                             rx_new, rx_old; /* RX ring extents             */
        int                             tx_new, tx_old; /* TX ring extents             */
        struct sunqe_buffers            *buffers;       /* CPU visible address.        */
-       __u32                           buffers_dvma;   /* DVMA visible address.       */
+       dma_addr_t                      buffers_dvma;   /* DVMA visible address.       */
        struct sunqec                   *parent;
        u8                              mconfig;        /* Base MACE mconfig value     */
        struct platform_device          *op;            /* QE's OF device struct       */