The Linux Kernel Mailing List
 help / color / mirror / Atom feed
* drivers/media/platform/ti/vpe/vip.c:3236:undefined reference to `v4l2_async_nf_unregister'
@ 2026-07-03 10:58 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-07-03 10:58 UTC (permalink / raw)
  To: Dale Farnsworth
  Cc: oe-kbuild-all, linux-kernel, Hans Verkuil, Benoit Parrot,
	Sukrut Bellary, Yemike Abhilash Chandra

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   d2c9a99135da931377240942d44f3dea104cedb8
commit: fc2873aa4a21355593b55eb49ff534d31f81c584 media: ti: vpe: Add the VIP driver
date:   6 months ago
config: mips-randconfig-r061-20260703 (https://download.01.org/0day-ci/archive/20260703/202607031826.vOPABT39-lkp@intel.com/config)
compiler: mips64-linux-gcc (GCC) 13.4.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260703/202607031826.vOPABT39-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
| Fixes: fc2873aa4a21 ("media: ti: vpe: Add the VIP driver")
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202607031826.vOPABT39-lkp@intel.com/

All errors (new ones prefixed by >>):

   mips64-linux-ld: drivers/media/platform/ti/vpe/vip.o: in function `free_port':
>> drivers/media/platform/ti/vpe/vip.c:3236:(.text+0x31b8): undefined reference to `v4l2_async_nf_unregister'
>> mips64-linux-ld: drivers/media/platform/ti/vpe/vip.c:3237:(.text+0x31c0): undefined reference to `v4l2_async_nf_cleanup'
>> mips64-linux-ld: drivers/media/platform/ti/vpe/vip.c:3236:(.text+0x31e8): undefined reference to `v4l2_async_nf_unregister'
   mips64-linux-ld: drivers/media/platform/ti/vpe/vip.c:3237:(.text+0x31f0): undefined reference to `v4l2_async_nf_cleanup'
   mips64-linux-ld: drivers/media/platform/ti/vpe/vip.o: in function `vip_register_subdev_notify':
>> drivers/media/platform/ti/vpe/vip.c:3339:(.text.unlikely+0x9a8): undefined reference to `v4l2_fwnode_endpoint_parse'
>> mips64-linux-ld: drivers/media/platform/ti/vpe/vip.c:3346:(.text.unlikely+0xa44): undefined reference to `v4l2_async_nf_init'
>> mips64-linux-ld: drivers/media/platform/ti/vpe/vip.c:3348:(.text.unlikely+0xa54): undefined reference to `__v4l2_async_nf_add_fwnode'
>> mips64-linux-ld: drivers/media/platform/ti/vpe/vip.c:3352:(.text.unlikely+0xadc): undefined reference to `v4l2_async_nf_cleanup'
>> mips64-linux-ld: drivers/media/platform/ti/vpe/vip.c:3357:(.text.unlikely+0xb08): undefined reference to `v4l2_async_nf_register'
   mips64-linux-ld: drivers/media/platform/ti/vpe/vip.c:3360:(.text.unlikely+0xb80): undefined reference to `v4l2_async_nf_cleanup'


vim +3236 drivers/media/platform/ti/vpe/vip.c

  3230	
  3231	static void free_port(struct vip_port *port)
  3232	{
  3233		if (!port)
  3234			return;
  3235	
> 3236		v4l2_async_nf_unregister(&port->notifier);
> 3237		v4l2_async_nf_cleanup(&port->notifier);
  3238		free_stream(port->cap_streams[0]);
  3239	}
  3240	
  3241	static int get_field(u32 value, u32 mask, int shift)
  3242	{
  3243		return (value & (mask << shift)) >> shift;
  3244	}
  3245	
  3246	static int vip_probe_complete(struct platform_device *pdev);
  3247	static void vip_vpdma_fw_cb(struct platform_device *pdev)
  3248	{
  3249		dev_info(&pdev->dev, "VPDMA firmware loaded\n");
  3250	
  3251		if (pdev->dev.of_node)
  3252			vip_probe_complete(pdev);
  3253	}
  3254	
  3255	static int vip_create_streams(struct vip_port *port,
  3256				      struct v4l2_subdev *subdev)
  3257	{
  3258		int i;
  3259	
  3260		for (i = 0; i < VIP_CAP_STREAMS_PER_PORT; i++)
  3261			free_stream(port->cap_streams[i]);
  3262	
  3263		if (get_subdev_active_format(port, subdev))
  3264			return -ENODEV;
  3265	
  3266		port->subdev = subdev;
  3267	
  3268		if (port->endpoint.bus_type == V4L2_MBUS_PARALLEL) {
  3269			port->flags |= FLAG_MULT_PORT;
  3270			port->num_streams_configured = 1;
  3271			alloc_stream(port, 0, VFL_TYPE_VIDEO);
  3272		} else if (port->endpoint.bus_type == V4L2_MBUS_BT656) {
  3273			port->flags |= FLAG_MULT_PORT;
  3274			port->num_streams_configured = 1;
  3275			alloc_stream(port, 0, VFL_TYPE_VIDEO);
  3276		}
  3277		return 0;
  3278	}
  3279	
  3280	static int vip_async_bound(struct v4l2_async_notifier *notifier,
  3281				   struct v4l2_subdev *subdev,
  3282				   struct v4l2_async_connection *asd)
  3283	{
  3284		struct vip_port *port = notifier_to_vip_port(notifier);
  3285		int ret;
  3286	
  3287		if (port->subdev) {
  3288			v4l2_info(&port->dev->v4l2_dev, "Rejecting subdev %s (Already set!!)",
  3289				  subdev->name);
  3290			return 0;
  3291		}
  3292	
  3293		v4l2_info(&port->dev->v4l2_dev, "Port %c: Using subdev %s for capture\n",
  3294			  port->port_id == VIP_PORTA ? 'A' : 'B', subdev->name);
  3295	
  3296		ret = vip_create_streams(port, subdev);
  3297		if (ret)
  3298			return ret;
  3299	
  3300		return 0;
  3301	}
  3302	
  3303	static int vip_async_complete(struct v4l2_async_notifier *notifier)
  3304	{
  3305		return 0;
  3306	}
  3307	
  3308	static const struct v4l2_async_notifier_operations vip_async_ops = {
  3309		.bound = vip_async_bound,
  3310		.complete = vip_async_complete,
  3311	};
  3312	
  3313	static struct fwnode_handle *
  3314	fwnode_graph_get_next_endpoint_by_regs(const struct fwnode_handle *fwnode,
  3315					       int port_reg, int reg)
  3316	{
  3317		return of_fwnode_handle(of_graph_get_endpoint_by_regs(to_of_node(fwnode),
  3318								      port_reg, reg));
  3319	}
  3320	
  3321	static int vip_register_subdev_notify(struct vip_port *port,
  3322					      struct fwnode_handle *ep)
  3323	{
  3324		struct v4l2_async_notifier *notifier = &port->notifier;
  3325		struct fwnode_handle *subdev;
  3326		struct v4l2_fwnode_endpoint *vep;
  3327		struct v4l2_async_connection *asd;
  3328		int ret;
  3329		struct vip_dev *dev = port->dev;
  3330	
  3331		vep = &port->endpoint;
  3332	
  3333		subdev = fwnode_graph_get_remote_port_parent(ep);
  3334		if (!subdev) {
  3335			v4l2_dbg(3, debug, &dev->v4l2_dev, "can't get remote parent\n");
  3336			return -EINVAL;
  3337		}
  3338	
> 3339		ret = v4l2_fwnode_endpoint_parse(ep, vep);
  3340		if (ret) {
  3341			v4l2_dbg(3, debug, &dev->v4l2_dev, "Failed to parse endpoint:\n");
  3342			fwnode_handle_put(subdev);
  3343			return -EINVAL;
  3344		}
  3345	
> 3346		v4l2_async_nf_init(notifier, &port->dev->shared->v4l2_dev);
  3347	
> 3348		asd = v4l2_async_nf_add_fwnode(notifier, subdev, struct v4l2_async_connection);
  3349		if (IS_ERR(asd)) {
  3350			v4l2_dbg(1, debug, &dev->v4l2_dev, "Error adding asd\n");
  3351			fwnode_handle_put(subdev);
> 3352			v4l2_async_nf_cleanup(notifier);
  3353			return -EINVAL;
  3354		}
  3355	
  3356		notifier->ops = &vip_async_ops;
> 3357		ret = v4l2_async_nf_register(notifier);
  3358		if (ret) {
  3359			v4l2_dbg(1, debug, &dev->v4l2_dev, "Error registering async notifier\n");
  3360			v4l2_async_nf_cleanup(notifier);
  3361			ret = -EINVAL;
  3362		}
  3363	
  3364		return ret;
  3365	}
  3366	

--
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:[~2026-07-03 10:58 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-03 10:58 drivers/media/platform/ti/vpe/vip.c:3236:undefined reference to `v4l2_async_nf_unregister' kernel test robot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox