• Christophe Leroy's avatar
    net/wan/fsl_ucc_hdlc: fix sparse warnings · 5cf46d8e
    Christophe Leroy authored
    CHECK   drivers/net/wan/fsl_ucc_hdlc.c
    drivers/net/wan/fsl_ucc_hdlc.c:309:57: warning: incorrect type in argument 2 (different address spaces)
    drivers/net/wan/fsl_ucc_hdlc.c:309:57:    expected void [noderef] __iomem *
    drivers/net/wan/fsl_ucc_hdlc.c:309:57:    got restricted __be16 *
    drivers/net/wan/fsl_ucc_hdlc.c:311:46: warning: incorrect type in argument 2 (different address spaces)
    drivers/net/wan/fsl_ucc_hdlc.c:311:46:    expected void [noderef] __iomem *
    drivers/net/wan/fsl_ucc_hdlc.c:311:46:    got restricted __be32 *
    drivers/net/wan/fsl_ucc_hdlc.c:320:57: warning: incorrect type in argument 2 (different address spaces)
    drivers/net/wan/fsl_ucc_hdlc.c:320:57:    expected void [noderef] __iomem *
    drivers/net/wan/fsl_ucc_hdlc.c:320:57:    got restricted __be16 *
    drivers/net/wan/fsl_ucc_hdlc.c:322:46: warning: incorrect type in argument 2 (different address spaces)
    drivers/net/wan/fsl_ucc_hdlc.c:322:46:    expected void [noderef] __iomem *
    drivers/net/wan/fsl_ucc_hdlc.c:322:46:    got restricted __be32 *
    drivers/net/wan/fsl_ucc_hdlc.c:372:29: warning: incorrect type in assignment (different base types)
    drivers/net/wan/fsl_ucc_hdlc.c:372:29:    expected unsigned short [usertype]
    drivers/net/wan/fsl_ucc_hdlc.c:372:29:    got restricted __be16 [usertype]
    drivers/net/wan/fsl_ucc_hdlc.c:379:36: warning: restricted __be16 degrades to integer
    drivers/net/wan/fsl_ucc_hdlc.c:402:12: warning: incorrect type in assignment (different address spaces)
    drivers/net/wan/fsl_ucc_hdlc.c:402:12:    expected struct qe_bd [noderef] __iomem *bd
    drivers/net/wan/fsl_ucc_hdlc.c:402:12:    got struct qe_bd *curtx_bd
    drivers/net/wan/fsl_ucc_hdlc.c:425:20: warning: incorrect type in assignment (different address spaces)
    drivers/net/wan/fsl_ucc_hdlc.c:425:20:    expected struct qe_bd [noderef] __iomem *[assigned] bd
    drivers/net/wan/fsl_ucc_hdlc.c:425:20:    got struct qe_bd *tx_bd_base
    drivers/net/wan/fsl_ucc_hdlc.c:427:16: error: incompatible types in comparison expression (different address spaces):
    drivers/net/wan/fsl_ucc_hdlc.c:427:16:    struct qe_bd [noderef] __iomem *
    drivers/net/wan/fsl_ucc_hdlc.c:427:16:    struct qe_bd *
    drivers/net/wan/fsl_ucc_hdlc.c:462:33: warning: incorrect type in argument 1 (different address spaces)
    drivers/net/wan/fsl_ucc_hdlc.c:506:41: warning: incorrect type in argument 1 (different address spaces)
    drivers/net/wan/fsl_ucc_hdlc.c:528:33: warning: incorrect type in argument 1 (different address spaces)
    drivers/net/wan/fsl_ucc_hdlc.c:552:38: warning: incorrect type in argument 1 (different address spaces)
    drivers/net/wan/fsl_ucc_hdlc.c:596:67: warning: incorrect type in argument 2 (different address spaces)
    drivers/net/wan/fsl_ucc_hdlc.c:611:41: warning: incorrect type in argument 1 (different address spaces)
    drivers/net/wan/fsl_ucc_hdlc.c:851:38: warning: incorrect type in initializer (different address spaces)
    drivers/net/wan/fsl_ucc_hdlc.c:854:40: warning: incorrect type in argument 1 (different address spaces)
    drivers/net/wan/fsl_ucc_hdlc.c:855:40: warning: incorrect type in argument 1 (different address spaces)
    drivers/net/wan/fsl_ucc_hdlc.c:858:39: warning: incorrect type in argument 1 (different address spaces)
    drivers/net/wan/fsl_ucc_hdlc.c:861:37: warning: incorrect type in argument 2 (different address spaces)
    drivers/net/wan/fsl_ucc_hdlc.c:866:38: warning: incorrect type in initializer (different address spaces)
    drivers/net/wan/fsl_ucc_hdlc.c:868:21: warning: incorrect type in argument 1 (different address spaces)
    drivers/net/wan/fsl_ucc_hdlc.c:870:40: warning: incorrect type in argument 2 (different address spaces)
    drivers/net/wan/fsl_ucc_hdlc.c:871:40: warning: incorrect type in argument 2 (different address spaces)
    drivers/net/wan/fsl_ucc_hdlc.c:873:39: warning: incorrect type in argument 2 (different address spaces)
    drivers/net/wan/fsl_ucc_hdlc.c:993:57: warning: incorrect type in argument 2 (different address spaces)
    drivers/net/wan/fsl_ucc_hdlc.c:995:46: warning: incorrect type in argument 2 (different address spaces)
    drivers/net/wan/fsl_ucc_hdlc.c:1004:57: warning: incorrect type in argument 2 (different address spaces)
    drivers/net/wan/fsl_ucc_hdlc.c:1006:46: warning: incorrect type in argument 2 (different address spaces)
    drivers/net/wan/fsl_ucc_hdlc.c:412:35: warning: dereference of noderef expression
    drivers/net/wan/fsl_ucc_hdlc.c:412:35: warning: dereference of noderef expression
    drivers/net/wan/fsl_ucc_hdlc.c:724:29: warning: dereference of noderef expression
    drivers/net/wan/fsl_ucc_hdlc.c:815:21: warning: dereference of noderef expression
    drivers/net/wan/fsl_ucc_hdlc.c:1021:29: warning: dereference of noderef expression
    
    Most of the warnings are due to DMA memory being incorrectly handled as IO memory.
    Fix it by doing direct read/write and doing proper dma_rmb() / dma_wmb().
    
    Other problems are type mismatches or lack of use of IO accessors.
    
    Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk>
    Reported-by: default avatarkernel test robot <lkp@intel.com>
    Link: https://lkml.org/lkml/2021/11/12/647Signed-off-by: default avatarChristophe Leroy <christophe.leroy@csgroup.eu>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    5cf46d8e
fsl_ucc_hdlc.c 30.9 KB