All of lore.kernel.org
 help / color / mirror / Atom feed
* [pinchartl:mtk/v6.6/dev/intervals 37/38] include/media/v4l2-subdev.h:1576:9: error: implicit declaration of function '__v4l2_subdev_state_get_interval___VA_OPT__'; did you mean '__v4l2_subdev_state_get_interval_'?
@ 2023-10-28 12:39 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2023-10-28 12:39 UTC (permalink / raw)
  To: Laurent Pinchart; +Cc: oe-kbuild-all

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/pinchartl/linux.git mtk/v6.6/dev/intervals
head:   358c0c0ab9826452f42f79daa9ffbf1018246ad9
commit: ad832384c41f409f8647bff877d4fa600fe42948 [37/38] media: v4l2-subdev: Store frame interval in subdev state
config: x86_64-buildonly-randconfig-003-20231028 (https://download.01.org/0day-ci/archive/20231028/202310282057.PPRTx1h5-lkp@intel.com/config)
compiler: gcc-7 (Ubuntu 7.5.0-6ubuntu2) 7.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231028/202310282057.PPRTx1h5-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/202310282057.PPRTx1h5-lkp@intel.com/

All errors (new ones prefixed by >>):

   In file included from include/media/v4l2-device.h:13:0,
                    from drivers/media/v4l2-core/v4l2-subdev.c:24:
   drivers/media/v4l2-core/v4l2-subdev.c: In function 'v4l2_subdev_get_frame_interval':
>> include/media/v4l2-subdev.h:1576:9: error: implicit declaration of function '__v4l2_subdev_state_get_interval___VA_OPT__'; did you mean '__v4l2_subdev_state_get_interval_'? [-Werror=implicit-function-declaration]
            __v4l2_subdev_state_get_interval_ ## __VA_OPT__(stream) \
            ^
   include/media/v4l2-subdev.h:1576:9: note: in definition of macro 'v4l2_subdev_state_get_interval'
            __v4l2_subdev_state_get_interval_ ## __VA_OPT__(stream) \
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/media/v4l2-subdev.h:1576:57: error: 'stream' undeclared (first use in this function); did you mean 'strim'?
            __v4l2_subdev_state_get_interval_ ## __VA_OPT__(stream) \
                                                            ^
   drivers/media/v4l2-core/v4l2-subdev.c:1624:13: note: in expansion of macro 'v4l2_subdev_state_get_interval'
     interval = v4l2_subdev_state_get_interval(state, fi->pad, fi->stream);
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/media/v4l2-subdev.h:1576:57: note: each undeclared identifier is reported only once for each function it appears in
            __v4l2_subdev_state_get_interval_ ## __VA_OPT__(stream) \
                                                            ^
   drivers/media/v4l2-core/v4l2-subdev.c:1624:13: note: in expansion of macro 'v4l2_subdev_state_get_interval'
     interval = v4l2_subdev_state_get_interval(state, fi->pad, fi->stream);
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/media/v4l2-subdev.h:1577:21: error: expected ')' before '__VA_OPT__'
            (state, pad __VA_OPT__(,) __VA_ARGS__)
                        ^
   drivers/media/v4l2-core/v4l2-subdev.c:1624:13: note: in expansion of macro 'v4l2_subdev_state_get_interval'
     interval = v4l2_subdev_state_get_interval(state, fi->pad, fi->stream);
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors


vim +1576 include/media/v4l2-subdev.h

  1404	
  1405	/**
  1406	 * v4l2_subdev_get_fmt() - Fill format based on state
  1407	 * @sd: subdevice
  1408	 * @state: subdevice state
  1409	 * @format: pointer to &struct v4l2_subdev_format
  1410	 *
  1411	 * Fill @format->format field based on the information in the @format struct.
  1412	 *
  1413	 * This function can be used by the subdev drivers which support active state to
  1414	 * implement v4l2_subdev_pad_ops.get_fmt if the subdev driver does not need to
  1415	 * do anything special in their get_fmt op.
  1416	 *
  1417	 * Returns 0 on success, error value otherwise.
  1418	 */
  1419	int v4l2_subdev_get_fmt(struct v4l2_subdev *sd, struct v4l2_subdev_state *state,
  1420				struct v4l2_subdev_format *format);
  1421	
  1422	/**
  1423	 * v4l2_subdev_get_frame_interval() - Fill frame interval based on state
  1424	 * @sd: subdevice
  1425	 * @state: subdevice state
  1426	 * @fi: pointer to &struct v4l2_subdev_frame_interval
  1427	 *
  1428	 * Fill @fi->interval field based on the information in the @fi struct.
  1429	 *
  1430	 * This function can be used by the subdev drivers which support active state to
  1431	 * implement v4l2_subdev_pad_ops.get_frame_interval if the subdev driver does
  1432	 * not need to do anything special in their get_frame_interval op.
  1433	 *
  1434	 * Returns 0 on success, error value otherwise.
  1435	 */
  1436	int v4l2_subdev_get_frame_interval(struct v4l2_subdev *sd,
  1437					   struct v4l2_subdev_state *state,
  1438					   struct v4l2_subdev_frame_interval *fi);
  1439	
  1440	/**
  1441	 * v4l2_subdev_set_routing() - Set given routing to subdev state
  1442	 * @sd: The subdevice
  1443	 * @state: The subdevice state
  1444	 * @routing: Routing that will be copied to subdev state
  1445	 *
  1446	 * This will release old routing table (if any) from the state, allocate
  1447	 * enough space for the given routing, and copy the routing.
  1448	 *
  1449	 * This can be used from the subdev driver's set_routing op, after validating
  1450	 * the routing.
  1451	 */
  1452	int v4l2_subdev_set_routing(struct v4l2_subdev *sd,
  1453				    struct v4l2_subdev_state *state,
  1454				    const struct v4l2_subdev_krouting *routing);
  1455	
  1456	struct v4l2_subdev_route *
  1457	__v4l2_subdev_next_active_route(const struct v4l2_subdev_krouting *routing,
  1458					struct v4l2_subdev_route *route);
  1459	
  1460	/**
  1461	 * for_each_active_route - iterate on all active routes of a routing table
  1462	 * @routing: The routing table
  1463	 * @route: The route iterator
  1464	 */
  1465	#define for_each_active_route(routing, route) \
  1466		for ((route) = NULL;                  \
  1467		     ((route) = __v4l2_subdev_next_active_route((routing), (route)));)
  1468	
  1469	/**
  1470	 * v4l2_subdev_set_routing_with_fmt() - Set given routing and format to subdev
  1471	 *					state
  1472	 * @sd: The subdevice
  1473	 * @state: The subdevice state
  1474	 * @routing: Routing that will be copied to subdev state
  1475	 * @fmt: Format used to initialize all the streams
  1476	 *
  1477	 * This is the same as v4l2_subdev_set_routing, but additionally initializes
  1478	 * all the streams using the given format.
  1479	 */
  1480	int v4l2_subdev_set_routing_with_fmt(struct v4l2_subdev *sd,
  1481					     struct v4l2_subdev_state *state,
  1482					     const struct v4l2_subdev_krouting *routing,
  1483					     const struct v4l2_mbus_framefmt *fmt);
  1484	
  1485	/**
  1486	 * v4l2_subdev_state_get_format() - Get pointer to a stream format
  1487	 * @state: subdevice state
  1488	 * @pad: pad id
  1489	 * @...: stream id (optional argument)
  1490	 *
  1491	 * This returns a pointer to &struct v4l2_mbus_framefmt for the given pad +
  1492	 * stream in the subdev state.
  1493	 *
  1494	 * For stream-unaware drivers the format for the corresponding pad is returned.
  1495	 * If the pad does not exist, NULL is returned.
  1496	 */
  1497	/*
  1498	 * Wrap v4l2_subdev_state_get_format(), allowing the function to be called with
  1499	 * two or three arguments. The purpose of the __v4l2_subdev_state_get_format()
  1500	 * macro below is to come up with the name of the function or macro to call,
  1501	 * using the last two arguments (_stream and _pad). The selected function or
  1502	 * macro is then called using the arguments specified by the caller. A similar
  1503	 * arrangement is used for v4l2_subdev_state_crop() and
  1504	 * v4l2_subdev_state_compose() below.
  1505	 */
  1506	#define v4l2_subdev_state_get_format(...)				\
  1507		__v4l2_subdev_state_get_format(__VA_ARGS__,			\
  1508					       _stream, _pad)(__VA_ARGS__)
  1509	#define __v4l2_subdev_state_get_format(_1, _2, _3, ARG, ...)	\
  1510		__v4l2_subdev_state_get_format ## ARG
  1511	#define __v4l2_subdev_state_get_format_pad(state, pad)		\
  1512		__v4l2_subdev_state_get_format_stream(state, pad, 0)
  1513	struct v4l2_mbus_framefmt *
  1514	__v4l2_subdev_state_get_format_stream(struct v4l2_subdev_state *state,
  1515					      unsigned int pad, u32 stream);
  1516	
  1517	/**
  1518	 * v4l2_subdev_state_get_crop() - Get pointer to a stream crop rectangle
  1519	 * @state: subdevice state
  1520	 * @pad: pad id
  1521	 * @...: stream id (optional argument)
  1522	 *
  1523	 * This returns a pointer to crop rectangle for the given pad + stream in the
  1524	 * subdev state.
  1525	 *
  1526	 * For stream-unaware drivers the crop rectangle for the corresponding pad is
  1527	 * returned. If the pad does not exist, NULL is returned.
  1528	 */
  1529	#define v4l2_subdev_state_get_crop(...)					\
  1530		__v4l2_subdev_state_get_crop(__VA_ARGS__,			\
  1531					     _stream, _pad)(__VA_ARGS__)
  1532	#define __v4l2_subdev_state_get_crop(_1, _2, _3, ARG, ...)	\
  1533		__v4l2_subdev_state_get_crop ## ARG
  1534	#define __v4l2_subdev_state_get_crop_pad(state, pad)		\
  1535		__v4l2_subdev_state_get_crop_stream(state, pad, 0)
  1536	struct v4l2_rect *
  1537	__v4l2_subdev_state_get_crop_stream(struct v4l2_subdev_state *state,
  1538					    unsigned int pad, u32 stream);
  1539	
  1540	/**
  1541	 * v4l2_subdev_state_get_compose() - Get pointer to a stream compose rectangle
  1542	 * @state: subdevice state
  1543	 * @pad: pad id
  1544	 * @...: stream id (optional argument)
  1545	 *
  1546	 * This returns a pointer to compose rectangle for the given pad + stream in the
  1547	 * subdev state.
  1548	 *
  1549	 * For stream-unaware drivers the compose rectangle for the corresponding pad is
  1550	 * returned. If the pad does not exist, NULL is returned.
  1551	 */
  1552	#define v4l2_subdev_state_get_compose(...)				\
  1553		__v4l2_subdev_state_get_compose(__VA_ARGS__,		\
  1554						_stream, _pad)(__VA_ARGS__)
  1555	#define __v4l2_subdev_state_get_compose(_1, _2, _3, ARG, ...)	\
  1556		__v4l2_subdev_state_get_compose ## ARG
  1557	#define __v4l2_subdev_state_get_compose_pad(state, pad)		\
  1558		__v4l2_subdev_state_get_compose_stream(state, pad, 0)
  1559	struct v4l2_rect *
  1560	__v4l2_subdev_state_get_compose_stream(struct v4l2_subdev_state *state,
  1561					       unsigned int pad, u32 stream);
  1562	
  1563	/**
  1564	 * v4l2_subdev_state_get_interval() - Get pointer to a stream frame interval
  1565	 * @state: subdevice state
  1566	 * @pad: pad id
  1567	 * @...: stream id (optional argument)
  1568	 *
  1569	 * This returns a pointer to the frame interval for the given pad + stream in
  1570	 * the subdev state.
  1571	 *
  1572	 * For stream-unaware drivers the frame interval for the corresponding pad is
  1573	 * returned. If the pad does not exist, NULL is returned.
  1574	 */
  1575	#define v4l2_subdev_state_get_interval(state, pad, ...)         \
> 1576	        __v4l2_subdev_state_get_interval_ ## __VA_OPT__(stream) \
  1577	        (state, pad __VA_OPT__(,) __VA_ARGS__)
  1578	#define __v4l2_subdev_state_get_interval_(state, pad)	\
  1579	        __v4l2_subdev_state_get_interval(state, pad, 0)
  1580	#define __v4l2_subdev_state_get_interval_stream(state, pad, stream)	\
  1581	        __v4l2_subdev_state_get_interval(state, pad, stream)
  1582	struct v4l2_fract *
  1583	__v4l2_subdev_state_get_interval(struct v4l2_subdev_state *state,
  1584					 unsigned int pad, u32 stream);
  1585	

-- 
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:[~2023-10-28 12:40 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-10-28 12:39 [pinchartl:mtk/v6.6/dev/intervals 37/38] include/media/v4l2-subdev.h:1576:9: error: implicit declaration of function '__v4l2_subdev_state_get_interval___VA_OPT__'; did you mean '__v4l2_subdev_state_get_interval_'? 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.