From: kernel test robot <lkp@intel.com>
To: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: oe-kbuild-all@lists.linux.dev
Subject: [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_'?
Date: Sat, 28 Oct 2023 20:39:56 +0800 [thread overview]
Message-ID: <202310282057.PPRTx1h5-lkp@intel.com> (raw)
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
reply other threads:[~2023-10-28 12:40 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202310282057.PPRTx1h5-lkp@intel.com \
--to=lkp@intel.com \
--cc=laurent.pinchart@ideasonboard.com \
--cc=oe-kbuild-all@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.