* [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.