tree:
https://github.com/afaerber/linux.git rtd1295-next
head: cc9d1d90869a1d7a6e44c5dd739a2f25d6f13213
commit: db741fe9096b40e500ed9eb1fd7cb115b5ccf57c [53/166] soc: realtek: Add SB2 driver
reproduce:
# apt-get install sparse
# sparse version:
git checkout db741fe9096b40e500ed9eb1fd7cb115b5ccf57c
make ARCH=x86_64 allmodconfig
make C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>):
> drivers/soc/realtek/sb2.c:25:15: sparse: warning: incorrect type
in argument 1 (different address spaces)
drivers/soc/realtek/sb2.c:25:15: sparse:
expected void const volatile [noderef] <asn:2> *addr
drivers/soc/realtek/sb2.c:25:15: sparse: got void *
drivers/soc/realtek/sb2.c:30:17: sparse: warning: incorrect type in argument 2
(different address spaces)
drivers/soc/realtek/sb2.c:30:17: sparse: expected void volatile [noderef]
<asn:2> *addr
drivers/soc/realtek/sb2.c:30:17: sparse: got void *
drivers/soc/realtek/sb2.c:32:25: sparse: warning: incorrect type in argument 1
(different address spaces)
drivers/soc/realtek/sb2.c:32:25: sparse: expected void const volatile [noderef]
<asn:2> *addr
drivers/soc/realtek/sb2.c:32:25: sparse: got void *
drivers/soc/realtek/sb2.c:35:32: sparse: warning: incorrect type in argument 1
(different address spaces)
drivers/soc/realtek/sb2.c:35:32: sparse: expected void const volatile [noderef]
<asn:2> *addr
drivers/soc/realtek/sb2.c:35:32: sparse: got void *
drivers/soc/realtek/sb2.c:38:32: sparse: warning: incorrect type in argument 1
(different address spaces)
drivers/soc/realtek/sb2.c:38:32: sparse: expected void const volatile [noderef]
<asn:2> *addr
drivers/soc/realtek/sb2.c:38:32: sparse: got void *
drivers/soc/realtek/sb2.c:72:72: sparse: warning: incorrect type in argument 5
(different address spaces)
drivers/soc/realtek/sb2.c:72:72: sparse: expected void *dev
drivers/soc/realtek/sb2.c:72:72: sparse: got void [noderef] <asn:2>
*[assigned] base
sparse warnings: (new ones prefixed by >>)
drivers/soc/realtek/sb2.c:25:15: sparse: warning: incorrect type in argument 1
(different address spaces)
> drivers/soc/realtek/sb2.c:25:15: sparse: expected void const
volatile [noderef] <asn:2> *addr
> drivers/soc/realtek/sb2.c:25:15: sparse: got void *
drivers/soc/realtek/sb2.c:30:17: sparse: warning: incorrect type in argument 2 (different
address spaces)
> drivers/soc/realtek/sb2.c:30:17: sparse: expected void
volatile [noderef] <asn:2> *addr
drivers/soc/realtek/sb2.c:30:17: sparse:
got void *
drivers/soc/realtek/sb2.c:32:25: sparse: warning: incorrect type in argument 1
(different address spaces)
drivers/soc/realtek/sb2.c:32:25: sparse: expected void const volatile [noderef]
<asn:2> *addr
drivers/soc/realtek/sb2.c:32:25: sparse: got void *
drivers/soc/realtek/sb2.c:35:32: sparse: warning: incorrect type in argument 1
(different address spaces)
drivers/soc/realtek/sb2.c:35:32: sparse: expected void const volatile [noderef]
<asn:2> *addr
drivers/soc/realtek/sb2.c:35:32: sparse: got void *
drivers/soc/realtek/sb2.c:38:32: sparse: warning: incorrect type in argument 1
(different address spaces)
drivers/soc/realtek/sb2.c:38:32: sparse: expected void const volatile [noderef]
<asn:2> *addr
drivers/soc/realtek/sb2.c:38:32: sparse: got void *
drivers/soc/realtek/sb2.c:72:72: sparse: warning: incorrect type in argument 5
(different address spaces)
> drivers/soc/realtek/sb2.c:72:72: sparse: expected void *dev
> drivers/soc/realtek/sb2.c:72:72: sparse: got void [noderef] <asn:2>
*[assigned] base
vim +25 drivers/soc/realtek/sb2.c
20
21 static irqreturn_t rtd_sb2_handle_irq(int irq, void *base)
22 {
23 u32 val;
24
25 val = readl_relaxed(base + SB2_DBG_INT);
26 pr_info("sb2 interrupt 0x%0x08x\n", val);
27 if (val & (SB2_DBG_INT_ACPU_INT | SB2_DBG_INT_SCPU_INT |
SB2_DBG_INT_ACPU_NEG_INT | SB2_DBG_INT_SCPU_NEG_INT)) {
28 u32 addr, cause;
29
30 writel_relaxed(SB2_DBG_INT_ACPU_INT_EN | SB2_DBG_INT_SCPU_INT_EN
| SB2_DBG_INT_WRITE_DATA, base + SB2_DBG_INT);
31
32 cause = readl_relaxed(base + SB2_DBG_ADDR1);
33
34 if (val & SB2_DBG_INT_SCPU_INT) {
35 addr = readl_relaxed(base + SB2_DBG_ADDR_SYSTEM);
36 cause = (cause >> 2) & 0x3;
37 } else {
38 addr = readl_relaxed(base + SB2_DBG_ADDR_AUDIO);
39 cause = (cause >> 4) & 0x3;
40 }
41
42 pr_warn("Memory 0x%08x trashed by %s with %s %s\n", addr,
43 (val & SB2_DBG_INT_SCPU_INT) ? "SCPU" : "ACPU",
44 (cause & 1) ? "D" : "I",
45 (cause & 2) ? "W" : "R");
46
47 return IRQ_HANDLED;
48 }
49
50 return IRQ_NONE;
51 }
52
53 static const struct of_device_id rtd_sb2_dt_ids[] = {
54 { .compatible = "realtek,rtd1195-sb2" },
55 { .compatible = "realtek,rtd1295-sb2" },
56 { }
57 };
58
59 static int rtd_sb2_probe(struct platform_device *pdev)
60 {
61 void __iomem *base;
62 int irq, ret;
63
64 base = of_iomap(pdev->dev.of_node, 0);
65 if (IS_ERR(base))
66 return PTR_ERR(base);
67
68 irq = platform_get_irq(pdev, 0);
69 if (irq <= 0)
70 return -EINVAL;
71
72 ret = request_irq(irq, rtd_sb2_handle_irq, IRQF_SHARED,
"sb2", base);
73 if (ret) {
74 dev_err(&pdev->dev, "requesting irq %u failed\n", irq);
75 return -EINVAL;
76 }
77
78 writel_relaxed(SB2_DBG_INT_ACPU_INT_EN | SB2_DBG_INT_SCPU_INT_EN |
SB2_DBG_INT_WRITE_DATA, base + SB2_DBG_INT);
79
80 dev_info(&pdev->dev, "probed\n");
81
82 return 0;
83 }
84
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org