All of lore.kernel.org
 help / color / mirror / Atom feed
* [chrome-os:chromeos-6.6 5/5] drivers/firmware/arm_scmi/tinysys.c:180:22: sparse: sparse: incorrect type in assignment (different base types)
@ 2025-02-16  8:25 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2025-02-16  8:25 UTC (permalink / raw)
  To: cros-kernel-buildreports; +Cc: oe-kbuild-all

tree:   https://chromium.googlesource.com/chromiumos/third_party/kernel chromeos-6.6
head:   0d96e807079196f870dcef51ecf4bd53fb5472c1
commit: f1e104ed61ffbb353b91e2a25e09f96ac805bd4c [5/5] CHROMIUM: firmware: arm_scmi: Porting tinysys_scmi driver
config: arm-randconfig-r123-20250216 (https://download.01.org/0day-ci/archive/20250216/202502161650.kdbFs608-lkp@intel.com/config)
compiler: clang version 21.0.0git (https://github.com/llvm/llvm-project 910be4ff90d7d07bd4518ea03b85c0974672bf9c)
reproduce: (https://download.01.org/0day-ci/archive/20250216/202502161650.kdbFs608-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@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202502161650.kdbFs608-lkp@intel.com/

sparse warnings: (new ones prefixed by >>)
>> drivers/firmware/arm_scmi/tinysys.c:180:22: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] f_id @@     got unsigned int [usertype] src_id @@
   drivers/firmware/arm_scmi/tinysys.c:180:22: sparse:     expected restricted __le32 [usertype] f_id
   drivers/firmware/arm_scmi/tinysys.c:180:22: sparse:     got unsigned int [usertype] src_id
>> drivers/firmware/arm_scmi/tinysys.c:223:17: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] @@     got restricted __le32 const [usertype] f_id @@
   drivers/firmware/arm_scmi/tinysys.c:223:17: sparse:     expected unsigned int [usertype]
   drivers/firmware/arm_scmi/tinysys.c:223:17: sparse:     got restricted __le32 const [usertype] f_id
>> drivers/firmware/arm_scmi/tinysys.c:308:28: sparse: sparse: symbol 'scmi_tinysys_protocol' was not declared. Should it be static?
--
>> drivers/firmware/arm_scmi/tinysys-scmi-drv.c:71:5: sparse: sparse: symbol 'scmi_tinysys_notifier_fn' was not declared. Should it be static?

vim +180 drivers/firmware/arm_scmi/tinysys.c

   166	
   167	static int _scmi_tinysys_request_notify(const struct scmi_protocol_handle *ph,
   168						 u32 src_id, bool enable)
   169	{
   170		int ret;
   171		struct scmi_xfer *t;
   172		struct scmi_tinysys_notify *notify;
   173	
   174		ret = ph->xops->xfer_get_init(ph, TINYSYS_POWER_STATE_NOTIFY,
   175				sizeof(*notify), 0, &t);
   176		if (ret)
   177			return ret;
   178	
   179		notify = t->tx.buf;
 > 180		notify->f_id = src_id;
   181		notify->notify_enable = enable ? cpu_to_le32(BIT(0)) : 0;
   182	
   183		ret = ph->xops->do_xfer(ph, t);
   184	
   185		ph->xops->xfer_put(ph, t);
   186		return ret;
   187	}
   188	
   189	static int _scmi_tinysys_set_notify_enabled(const struct scmi_protocol_handle *ph,
   190						  u8 evt_id, u32 src_id, bool enable)
   191	{
   192		int ret;
   193		struct scmi_tinysys_info_st *t_info;
   194	
   195		ret = _scmi_tinysys_request_notify(ph, src_id, enable);
   196		if (ret) {
   197			t_info = get_scmi_tinysys_info();
   198			dev_dbg(&(t_info->sdev->dev), "FAIL_ENABLE - evt[%X] - ret:%d\n", evt_id, ret);
   199		}
   200	
   201		return ret;
   202	}
   203	
   204	static void *_scmi_tinysys_fill_custom_report(const struct scmi_protocol_handle *ph,
   205							u8 evt_id, ktime_t timestamp,
   206							const void *payld, size_t payld_sz,
   207							void *report, u32 *src_id)
   208	{
   209		const struct scmi_tinysys_notifier_payld *p = payld;
   210		struct scmi_tinysys_notifier_report *r = report;
   211	
   212		if (evt_id != SCMI_EVENT_TINYSYS_NOTIFIER ||
   213			sizeof(*p) != payld_sz)
   214			return NULL;
   215	
   216		r->timestamp = timestamp;
   217		r->f_id = le32_to_cpu(p->f_id);
   218		r->p1_status = le32_to_cpu(p->p1);
   219		r->p2_status = le32_to_cpu(p->p2);
   220		r->p3_status = le32_to_cpu(p->p3);
   221		r->p4_status = le32_to_cpu(p->p4);
   222	
 > 223		*src_id = p->f_id;
   224	
   225		return r;
   226	}
   227	
   228	static int _scmi_tinysys_attributes_get(const struct scmi_protocol_handle *ph,
   229						 struct scmi_tinysys_info *pi)
   230	{
   231		int ret;
   232		struct scmi_xfer *t;
   233		u32 attr;
   234	
   235		ret = ph->xops->xfer_get_init(ph, PROTOCOL_ATTRIBUTES,
   236						  0, sizeof(attr), &t);
   237		if (ret)
   238			return ret;
   239	
   240		ret = ph->xops->do_xfer(ph, t);
   241		if (!ret) {
   242			attr = get_unaligned_le32(t->rx.buf);
   243			pi->num_domains = attr;
   244		}
   245	
   246		ph->xops->xfer_put(ph, t);
   247		return ret;
   248	}
   249	
   250	static int _scmi_tinysys_get_num_sources(const struct scmi_protocol_handle *ph)
   251	{
   252		struct scmi_tinysys_info *pinfo = ph->get_priv(ph);
   253	
   254		if (!pinfo)
   255			return -EINVAL;
   256	
   257		return pinfo->num_domains;
   258	}
   259	
   260	static const struct scmi_event tinysys_events[] = {
   261		{
   262			.id = SCMI_EVENT_TINYSYS_NOTIFIER,
   263			.max_payld_sz =	sizeof(struct scmi_tinysys_notifier_payld),
   264			.max_report_sz = sizeof(struct scmi_tinysys_notifier_report),
   265		},
   266	};
   267	
   268	static const struct scmi_tinysys_proto_ops tinysys_proto_ops = {
   269			.common_set = _scmi_tinysys_common_set,
   270			.common_get = _scmi_tinysys_common_get,
   271			.slbc_ctrl = _scmi_tinysys_slbc_ctrl,
   272	};
   273	
   274	static const struct scmi_event_ops tinysys_event_ops = {
   275		.get_num_sources = _scmi_tinysys_get_num_sources,
   276		.set_notify_enabled = _scmi_tinysys_set_notify_enabled,
   277		.fill_custom_report = _scmi_tinysys_fill_custom_report,
   278	};
   279	
   280	static const struct scmi_protocol_events tinysys_protocol_events = {
   281		.queue_sz = 4 * SCMI_PROTO_QUEUE_SZ,
   282		.ops = &tinysys_event_ops,
   283		.evts = tinysys_events,
   284		.num_events = ARRAY_SIZE(tinysys_events),
   285	};
   286	
   287	static int _scmi_tinysys_protocol_init(const struct scmi_protocol_handle *ph)
   288	{
   289		u32 version;
   290		struct scmi_tinysys_info *pinfo;
   291	
   292		ph->xops->version_get(ph, &version);
   293	
   294		dev_dbg(ph->dev, "Tinysys Protocol Version %d.%d\n",
   295			PROTOCOL_REV_MAJOR(version), PROTOCOL_REV_MINOR(version));
   296	
   297		pinfo = devm_kzalloc(ph->dev, sizeof(*pinfo), GFP_KERNEL);
   298		if (!pinfo)
   299			return -ENOMEM;
   300	
   301		_scmi_tinysys_attributes_get(ph, pinfo);
   302	
   303		pinfo->version = version;
   304	
   305		return ph->set_priv(ph, pinfo);
   306	}
   307	
 > 308	const struct scmi_protocol scmi_tinysys_protocol = {
   309		.id = SCMI_PROTOCOL_TINYSYS,
   310		.owner = THIS_MODULE,
   311		.instance_init = &_scmi_tinysys_protocol_init,
   312		.ops = &tinysys_proto_ops,
   313		.events = &tinysys_protocol_events,
   314	};
   315	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2025-02-16  8:25 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-02-16  8:25 [chrome-os:chromeos-6.6 5/5] drivers/firmware/arm_scmi/tinysys.c:180:22: sparse: sparse: incorrect type in assignment (different base types) kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.