Sound Open Firmware
Loading...
Searching...
No Matches
data_blob.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-3-Clause
2 *
3 * Copyright(c) 2022 Intel Corporation. All rights reserved.
4 *
5 * Author: Jyri Sarha <jyri.sarha@intel.com>
6 */
7
8#ifndef __SOF_AUDIO_DATA_BLOB_H__
9#define __SOF_AUDIO_DATA_BLOB_H__
10
12#include <rtos/sof.h>
13
14struct comp_dev;
15
16struct comp_data_blob_handler;
17
26void *comp_get_data_blob(struct comp_data_blob_handler *blob_handler,
27 size_t *size, uint32_t *crc);
28
36bool comp_is_new_data_blob_available(struct comp_data_blob_handler
37 *blob_handler);
38
44bool comp_is_current_data_blob_valid(struct comp_data_blob_handler
45 *blob_handler);
46
55int comp_init_data_blob(struct comp_data_blob_handler *blob_handler,
56 uint32_t size, const void *init_data);
57
64int comp_data_blob_set_cmd(struct comp_data_blob_handler *blob_handler,
65 struct sof_ipc_ctrl_data *cdata);
66
76int comp_data_blob_set(struct comp_data_blob_handler *blob_handler,
77 enum module_cfg_fragment_position pos, uint32_t data_offset_size,
78 const uint8_t *fragment, size_t fragment_size);
79
89int ipc4_comp_data_blob_set(struct comp_data_blob_handler *blob_handler,
90 bool first_block, bool last_block,
91 uint32_t data_offset, const char *data);
98int comp_data_blob_get_cmd(struct comp_data_blob_handler *blob_handler,
99 struct sof_ipc_ctrl_data *cdata, int size);
100
117struct comp_data_blob_handler *
118comp_data_blob_handler_new_ext(struct comp_dev *dev, bool single_blob,
119 void *(*alloc)(size_t size),
120 void (*free)(void *buf));
121
130static inline
131struct comp_data_blob_handler *comp_data_blob_handler_new(struct comp_dev *dev)
132{
133 return comp_data_blob_handler_new_ext(dev, false, NULL, NULL);
134}
135
141void comp_data_blob_handler_free(struct comp_data_blob_handler *blob_handler);
142
151void comp_data_blob_set_validator(struct comp_data_blob_handler *blob_handler,
152 int (*validator)(struct comp_dev *dev, void *new_data,
153 uint32_t new_data_size));
154
155#endif /* __SOF_AUDIO_DATA_BLOB_H__ */
static struct comp_data_blob_handler * comp_data_blob_handler_new(struct comp_dev *dev)
Returns new data blob handler.
Definition data_blob.h:131
int comp_data_blob_set_cmd(struct comp_data_blob_handler *blob_handler, struct sof_ipc_ctrl_data *cdata)
Handles IPC set command.
void comp_data_blob_handler_free(struct comp_data_blob_handler *blob_handler)
Free data blob handler.
int comp_data_blob_set(struct comp_data_blob_handler *blob_handler, enum module_cfg_fragment_position pos, uint32_t data_offset_size, const uint8_t *fragment, size_t fragment_size)
Handles IPC set command.
bool comp_is_current_data_blob_valid(struct comp_data_blob_handler *blob_handler)
Checks whether there is a valid data blob is available.
void comp_data_blob_set_validator(struct comp_data_blob_handler *blob_handler, int(*validator)(struct comp_dev *dev, void *new_data, uint32_t new_data_size))
Add a validator to check that the new data blob is valid for the given component.
struct comp_data_blob_handler * comp_data_blob_handler_new_ext(struct comp_dev *dev, bool single_blob, void *(*alloc)(size_t size), void(*free)(void *buf))
Returns new data blob handler.
void * comp_get_data_blob(struct comp_data_blob_handler *blob_handler, size_t *size, uint32_t *crc)
Returns data blob.
int comp_data_blob_get_cmd(struct comp_data_blob_handler *blob_handler, struct sof_ipc_ctrl_data *cdata, int size)
Handles IPC get command.
bool comp_is_new_data_blob_available(struct comp_data_blob_handler *blob_handler)
Checks whether new data blob is available.
int comp_init_data_blob(struct comp_data_blob_handler *blob_handler, uint32_t size, const void *init_data)
Initializes data blob with given value.
int ipc4_comp_data_blob_set(struct comp_data_blob_handler *blob_handler, bool first_block, bool last_block, uint32_t data_offset, const char *data)
Handles IPC4 set large config.
uint32_t data[]
Definition debug_stream_slot.h:2
Audio component base device "class".
Definition component.h:645
Generic control data.
Definition control.h:120