Skip to content

Commit

Permalink
ASoC: Intel: avs: Add ROM requests
Browse files Browse the repository at this point in the history
ROM requests are messages initiated by Host to alter firmware early boot
process. They specify whether the next boot should be a fresh start or if
IMR can be used to speed things up.

Signed-off-by: Amadeusz Sławiński <[email protected]>
Signed-off-by: Cezary Rojewski <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Mark Brown <[email protected]>
  • Loading branch information
crojewsk-intel authored and broonie committed Mar 11, 2022
1 parent 469e87c commit 25f414f
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 0 deletions.
18 changes: 18 additions & 0 deletions sound/soc/intel/avs/messages.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,24 @@

#define AVS_CL_TIMEOUT_MS 5000

int avs_ipc_set_boot_config(struct avs_dev *adev, u32 dma_id, u32 purge)
{
union avs_global_msg msg = AVS_GLOBAL_REQUEST(ROM_CONTROL);
struct avs_ipc_msg request = {{0}};
int ret;

msg.boot_cfg.rom_ctrl_msg_type = AVS_ROM_SET_BOOT_CONFIG;
msg.boot_cfg.dma_id = dma_id;
msg.boot_cfg.purge_request = purge;
request.header = msg.val;

ret = avs_dsp_send_rom_msg(adev, &request);
if (ret)
avs_ipc_err(adev, &request, "set boot config", ret);

return ret;
}

int avs_ipc_load_modules(struct avs_dev *adev, u16 *mod_ids, u32 num_mod_ids)
{
union avs_global_msg msg = AVS_GLOBAL_REQUEST(LOAD_MULTIPLE_MODULES);
Expand Down
14 changes: 14 additions & 0 deletions sound/soc/intel/avs/messages.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ enum avs_msg_direction {
};

enum avs_global_msg_type {
AVS_GLB_ROM_CONTROL = 1,
AVS_GLB_LOAD_MULTIPLE_MODULES = 15,
AVS_GLB_UNLOAD_MULTIPLE_MODULES = 16,
AVS_GLB_CREATE_PIPELINE = 17,
Expand All @@ -45,6 +46,12 @@ union avs_global_msg {
u32 msg_direction:1;
u32 msg_target:1;
};
/* set boot config */
struct {
u32 rom_ctrl_msg_type:9;
u32 dma_id:5;
u32 purge_request:1;
} boot_cfg;
/* module loading */
struct {
u32 mod_cnt:8;
Expand Down Expand Up @@ -255,6 +262,13 @@ struct avs_notify_mod_data {
u32 data[];
} __packed;

/* ROM messages */
enum avs_rom_control_msg_type {
AVS_ROM_SET_BOOT_CONFIG = 0,
};

int avs_ipc_set_boot_config(struct avs_dev *adev, u32 dma_id, u32 purge);

/* Code loading messages */
int avs_ipc_load_modules(struct avs_dev *adev, u16 *mod_ids, u32 num_mod_ids);
int avs_ipc_unload_modules(struct avs_dev *adev, u16 *mod_ids, u32 num_mod_ids);
Expand Down

0 comments on commit 25f414f

Please sign in to comment.