On Fri, May 15, 2020 at 4:25 PM Andy Shevchenko <andy.shevchenko@xxxxxxxxx> wrote: > > On Fri, May 15, 2020 at 4:48 PM kbuild test robot <lkp@xxxxxxxxx> wrote: > > > sparse warnings: (new ones prefixed by >>) > > > > >> drivers/mtd/nand/raw/intel-nand-controller.c:441:24: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int val @@ got restricted __be32 [assignedunsigned int val @@ > > >> drivers/mtd/nand/raw/intel-nand-controller.c:441:24: sparse: expected unsigned int val > > >> drivers/mtd/nand/raw/intel-nand-controller.c:441:24: sparse: got restricted __be32 [assigned] [usertype] reg > > drivers/mtd/nand/raw/intel-nand-controller.c:444:24: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int val @@ got restricted __be32 [assignedunsigned int val @@ > > drivers/mtd/nand/raw/intel-nand-controller.c:444:24: sparse: expected unsigned int val > > drivers/mtd/nand/raw/intel-nand-controller.c:444:24: sparse: got restricted __be32 [assigned] [usertype] reg > > > > 440 reg = cpu_to_be32(*pdata++); > > > 441 writel(reg, ebu_host->hsnand + HSNAND_CMSG_0); > > 442 > > 443 reg = cpu_to_be32(*pdata); > > 444 writel(reg, ebu_host->hsnand + HSNAND_CMSG_1); > > On BE: > cpu_to_be32 -> no-op > writel() -> converts reg to LE > > On LE: > cpu_to_be32 -> converts to BE > writel() -> no-op (in terms of conversion) > > Seems to me that the proper API (if above is intended) should be swab32(). > But something tells me that above is broken (or my understanding is wrong). iowrite_be32() is the correct way to store word into a big-endian mmio register, if that is the intention here. Arnd