[PATCH 3/3] mailbox: sophgo: add mailbox driver for cv18x SoCs
kernel test robot
lkp at intel.com
Wed Jun 19 11:15:34 PDT 2024
Hi Yuntao,
kernel test robot noticed the following build warnings:
[auto build test WARNING on robh/for-next]
[also build test WARNING on linus/master v6.10-rc4 next-20240619]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Yuntao-Dai/dt-bindings-mailbox-add-Sophgo-cv18x-SoCs-mailbox/20240618-232307
base: https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next
patch link: https://lore.kernel.org/r/SYBP282MB2238F93AB57A398E322644C3C4CE2%40SYBP282MB2238.AUSP282.PROD.OUTLOOK.COM
patch subject: [PATCH 3/3] mailbox: sophgo: add mailbox driver for cv18x SoCs
config: loongarch-allmodconfig (https://download.01.org/0day-ci/archive/20240620/202406200221.v3RvI4Qb-lkp@intel.com/config)
compiler: loongarch64-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240620/202406200221.v3RvI4Qb-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp at intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202406200221.v3RvI4Qb-lkp@intel.com/
All warnings (new ones prefixed by >>):
drivers/mailbox/cv1800b-mailbox.c: In function 'cv1800b_mbox_send_data':
>> drivers/mailbox/cv1800b-mailbox.c:83:19: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
83 | int idx = (int)chan->con_priv;
| ^
drivers/mailbox/cv1800b-mailbox.c: In function 'cv1800b_mbox_probe':
>> drivers/mailbox/cv1800b-mailbox.c:160:48: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
160 | mb->mbox.chans[idx].con_priv = (void *)idx;
| ^
vim +83 drivers/mailbox/cv1800b-mailbox.c
79
80 static int cv1800b_mbox_send_data(struct mbox_chan *chan, void *data)
81 {
82 struct cv1800b_mbox *mbox = dev_get_drvdata(chan->mbox->dev);
> 83 int idx = (int)chan->con_priv;
84 u8 en, valid;
85 u64 *addr = (u64 *)(mbox->mbox_base + MAILBOX_CONTEXT_OFFSET) + idx;
86
87 memcpy_toio(addr, data, 8);
88
89 valid = 1 << idx;
90 writeb(valid, mbox->mbox_base + MBOX_SET_CLR_REG(mbox->sendto));
91 en = readb(mbox->mbox_base + MBOX_EN_REG(mbox->sendto));
92 writeb(en | valid, mbox->mbox_base + MBOX_EN_REG(mbox->sendto));
93 writeb(valid, mbox->mbox_base + MBOX_SET_REG);
94
95 return 0;
96 }
97
98 static bool cv1800b_last_tx_done(struct mbox_chan *chan)
99 {
100 return true;
101 }
102
103 static const struct mbox_chan_ops cv1800b_mbox_chan_ops = {
104 .send_data = cv1800b_mbox_send_data,
105 .last_tx_done = cv1800b_last_tx_done,
106 };
107
108 static const struct of_device_id cv1800b_mbox_of_match[] = {
109 { .compatible = "sophgo,cv1800b-mailbox", },
110 {},
111 };
112 MODULE_DEVICE_TABLE(of, cv1800b_mbox_of_match);
113
114 static int cv1800b_mbox_probe(struct platform_device *pdev)
115 {
116 struct device *dev = &pdev->dev;
117 struct cv1800b_mbox *mb;
118 int irq, idx, err, cpu;
119
120 if (!dev->of_node)
121 return -ENODEV;
122
123 mb = devm_kzalloc(dev, sizeof(*mb), GFP_KERNEL);
124 if (!mb)
125 return -ENOMEM;
126
127 mb->mbox_base = devm_of_iomap(dev, dev->of_node, 0, NULL);
128 if (IS_ERR(mb->mbox_base))
129 return dev_err_probe(dev, PTR_ERR(mb->mbox_base),
130 "Failed to map resource\n");
131
132 err = of_property_read_s32(dev->of_node, "sendto", &cpu);
133 if (err)
134 return dev_err_probe(dev, err,
135 "Failed to find <sendto> in of_node\n");
136
137 mb->sendto = cpu;
138
139 err = of_property_read_s32(dev->of_node, "recvid", &cpu);
140 if (err) {
141 return dev_err_probe(dev, err,
142 "Failed to find <recvid> in of_node\n");
143 }
144 mb->recvid = cpu;
145
146 mb->mbox.dev = dev;
147 mb->mbox.num_chans = MAILBOX_MAX_CHAN;
148 mb->mbox.chans = mb->chans;
149 mb->mbox.ops = &cv1800b_mbox_chan_ops;
150 mb->mbox.txdone_poll = true;
151
152 irq = platform_get_irq_byname(pdev, "mailbox");
153 err = devm_request_threaded_irq(dev, irq, cv1800b_mbox_irq,
154 cv1800b_mbox_isr, IRQF_ONESHOT,
155 dev_name(&pdev->dev), mb);
156 if (err < 0)
157 return dev_err_probe(dev, err, "Failed to register irq\n");
158
159 for (idx = 0; idx < MAILBOX_MAX_CHAN; idx++)
> 160 mb->mbox.chans[idx].con_priv = (void *)idx;
161
162 err = devm_mbox_controller_register(dev, &mb->mbox);
163 if (err)
164 return dev_err_probe(dev, err, "Failed to register mailbox\n");
165
166 platform_set_drvdata(pdev, mb);
167 return 0;
168 }
169
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
More information about the linux-riscv
mailing list