xref: /dpdk/drivers/bus/platform/private.h (revision 2b843cac232eb3f2fa79e4254e21766817e2019f)
117c839f7STomasz Duszynski /* SPDX-License-Identifier: BSD-3-Clause
217c839f7STomasz Duszynski  * Copyright(C) 2023 Marvell.
317c839f7STomasz Duszynski  */
417c839f7STomasz Duszynski 
517c839f7STomasz Duszynski #ifndef PLATFORM_PRIVATE_H
617c839f7STomasz Duszynski #define PLATFORM_PRIVATE_H
717c839f7STomasz Duszynski 
817c839f7STomasz Duszynski #include <bus_driver.h>
917c839f7STomasz Duszynski #include <rte_bus.h>
1017c839f7STomasz Duszynski #include <rte_common.h>
1117c839f7STomasz Duszynski #include <rte_dev.h>
1217c839f7STomasz Duszynski #include <rte_log.h>
1317c839f7STomasz Duszynski #include <rte_os.h>
1417c839f7STomasz Duszynski 
1517c839f7STomasz Duszynski #include "bus_platform_driver.h"
1617c839f7STomasz Duszynski 
1717c839f7STomasz Duszynski extern struct rte_platform_bus platform_bus;
1817c839f7STomasz Duszynski 
1917c839f7STomasz Duszynski /* Platform bus iterators. */
2017c839f7STomasz Duszynski #define FOREACH_DEVICE_ON_PLATFORM_BUS(p) \
2117c839f7STomasz Duszynski 	RTE_TAILQ_FOREACH(p, &(platform_bus.device_list), next)
2217c839f7STomasz Duszynski 
2317c839f7STomasz Duszynski #define FOREACH_DRIVER_ON_PLATFORM_BUS(p) \
2417c839f7STomasz Duszynski 	RTE_TAILQ_FOREACH(p, &(platform_bus.driver_list), next)
2517c839f7STomasz Duszynski 
2617c839f7STomasz Duszynski /*
2717c839f7STomasz Duszynski  * Structure describing platform bus.
2817c839f7STomasz Duszynski  */
2917c839f7STomasz Duszynski struct rte_platform_bus {
3017c839f7STomasz Duszynski 	struct rte_bus bus; /* Core bus */
3117c839f7STomasz Duszynski 	RTE_TAILQ_HEAD(, rte_platform_device) device_list; /* List of bus devices */
3217c839f7STomasz Duszynski 	RTE_TAILQ_HEAD(, rte_platform_driver) driver_list; /* List of bus drivers */
3317c839f7STomasz Duszynski };
3417c839f7STomasz Duszynski 
35e99981afSDavid Marchand extern int platform_bus_logtype;
36e99981afSDavid Marchand #define RTE_LOGTYPE_PLATFORM_BUS platform_bus_logtype
37e99981afSDavid Marchand #define PLATFORM_LOG_LINE(level, ...) \
38*2b843cacSDavid Marchand 	RTE_LOG_LINE(level, PLATFORM_BUS, __VA_ARGS__)
3917c839f7STomasz Duszynski 
4017c839f7STomasz Duszynski /*
4117c839f7STomasz Duszynski  * Iterate registered platform devices and find one that matches provided string.
4217c839f7STomasz Duszynski  */
4317c839f7STomasz Duszynski void *
4417c839f7STomasz Duszynski platform_bus_dev_iterate(const void *start, const char *str,
4517c839f7STomasz Duszynski 			 const struct rte_dev_iterator *it __rte_unused);
4617c839f7STomasz Duszynski 
4717c839f7STomasz Duszynski #endif /* PLATFORM_PRIVATE_H */
48