mirror of https://github.com/thesofproject/sof.git
component: add comp drivers list to sof context
Adds component drivers list to sof context, so it can be accessed globally. Also adds global getter. Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
This commit is contained in:
parent
47917c1f3d
commit
5eea994a3a
|
@ -21,6 +21,7 @@ static struct comp_driver_list cd;
|
||||||
|
|
||||||
static struct comp_driver *get_drv(uint32_t type)
|
static struct comp_driver *get_drv(uint32_t type)
|
||||||
{
|
{
|
||||||
|
struct comp_driver_list *drivers = comp_drivers_get();
|
||||||
struct list_item *clist;
|
struct list_item *clist;
|
||||||
struct comp_driver *drv = NULL;
|
struct comp_driver *drv = NULL;
|
||||||
uint32_t flags;
|
uint32_t flags;
|
||||||
|
@ -28,7 +29,7 @@ static struct comp_driver *get_drv(uint32_t type)
|
||||||
irq_local_disable(flags);
|
irq_local_disable(flags);
|
||||||
|
|
||||||
/* search driver list for driver type */
|
/* search driver list for driver type */
|
||||||
list_for_item(clist, &cd.list) {
|
list_for_item(clist, &drivers->list) {
|
||||||
|
|
||||||
drv = container_of(clist, struct comp_driver, list);
|
drv = container_of(clist, struct comp_driver, list);
|
||||||
if (drv->type == type)
|
if (drv->type == type)
|
||||||
|
@ -79,10 +80,11 @@ struct comp_dev *comp_new(struct sof_ipc_comp *comp)
|
||||||
|
|
||||||
int comp_register(struct comp_driver *drv)
|
int comp_register(struct comp_driver *drv)
|
||||||
{
|
{
|
||||||
|
struct comp_driver_list *drivers = comp_drivers_get();
|
||||||
uint32_t flags;
|
uint32_t flags;
|
||||||
|
|
||||||
irq_local_disable(flags);
|
irq_local_disable(flags);
|
||||||
list_item_prepend(&drv->list, &cd.list);
|
list_item_prepend(&drv->list, &drivers->list);
|
||||||
irq_local_enable(flags);
|
irq_local_enable(flags);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -191,7 +193,9 @@ int comp_set_state(struct comp_dev *dev, int cmd)
|
||||||
|
|
||||||
void sys_comp_init(struct sof *sof)
|
void sys_comp_init(struct sof *sof)
|
||||||
{
|
{
|
||||||
list_init(&cd.list);
|
sof->comp_drivers = &cd;
|
||||||
|
|
||||||
|
list_init(&sof->comp_drivers->list);
|
||||||
}
|
}
|
||||||
|
|
||||||
int comp_get_copy_limits(struct comp_dev *dev, struct comp_copy_limits *cl)
|
int comp_get_copy_limits(struct comp_dev *dev, struct comp_copy_limits *cl)
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include <sof/debug/panic.h>
|
#include <sof/debug/panic.h>
|
||||||
#include <sof/list.h>
|
#include <sof/list.h>
|
||||||
#include <sof/math/numbers.h>
|
#include <sof/math/numbers.h>
|
||||||
|
#include <sof/sof.h>
|
||||||
#include <sof/trace/trace.h>
|
#include <sof/trace/trace.h>
|
||||||
#include <ipc/control.h>
|
#include <ipc/control.h>
|
||||||
#include <ipc/stream.h>
|
#include <ipc/stream.h>
|
||||||
|
@ -35,7 +36,6 @@
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
struct comp_dev;
|
struct comp_dev;
|
||||||
struct sof;
|
|
||||||
struct sof_ipc_dai_config;
|
struct sof_ipc_dai_config;
|
||||||
struct sof_ipc_stream_posn;
|
struct sof_ipc_stream_posn;
|
||||||
struct dai_hw_params;
|
struct dai_hw_params;
|
||||||
|
@ -718,6 +718,11 @@ static inline bool comp_is_scheduling_source(struct comp_dev *dev)
|
||||||
*/
|
*/
|
||||||
int comp_get_copy_limits(struct comp_dev *dev, struct comp_copy_limits *cl);
|
int comp_get_copy_limits(struct comp_dev *dev, struct comp_copy_limits *cl);
|
||||||
|
|
||||||
|
static inline struct comp_driver_list *comp_drivers_get(void)
|
||||||
|
{
|
||||||
|
return sof_get()->comp_drivers;
|
||||||
|
}
|
||||||
|
|
||||||
/** @}*/
|
/** @}*/
|
||||||
|
|
||||||
/** @}*/
|
/** @}*/
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
|
|
||||||
struct cascade_root;
|
struct cascade_root;
|
||||||
struct clock_info;
|
struct clock_info;
|
||||||
|
struct comp_driver_list;
|
||||||
struct dai_info;
|
struct dai_info;
|
||||||
struct dma_info;
|
struct dma_info;
|
||||||
struct dma_trace_data;
|
struct dma_trace_data;
|
||||||
|
@ -83,6 +84,9 @@ struct sof {
|
||||||
/* cascading interrupt controller root */
|
/* cascading interrupt controller root */
|
||||||
struct cascade_root *cascade_root;
|
struct cascade_root *cascade_root;
|
||||||
|
|
||||||
|
/* list of registered component drivers */
|
||||||
|
struct comp_driver_list *comp_drivers;
|
||||||
|
|
||||||
__aligned(PLATFORM_DCACHE_ALIGN) int alignment[0];
|
__aligned(PLATFORM_DCACHE_ALIGN) int alignment[0];
|
||||||
} __aligned(PLATFORM_DCACHE_ALIGN);
|
} __aligned(PLATFORM_DCACHE_ALIGN);
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,8 @@
|
||||||
|
|
||||||
TRACE_IMPL()
|
TRACE_IMPL()
|
||||||
|
|
||||||
|
static struct sof sof;
|
||||||
|
|
||||||
#if !CONFIG_LIBRARY
|
#if !CONFIG_LIBRARY
|
||||||
|
|
||||||
void *_zalloc(enum mem_zone zone, uint32_t flags, uint32_t caps, size_t bytes)
|
void *_zalloc(enum mem_zone zone, uint32_t flags, uint32_t caps, size_t bytes)
|
||||||
|
@ -45,4 +47,9 @@ void __panic(uint32_t p, char *filename, uint32_t linenum)
|
||||||
(void)linenum;
|
(void)linenum;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct sof *sof_get(void)
|
||||||
|
{
|
||||||
|
return &sof;
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue