* 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