Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6a643bc4 authored by Naresh Tanniru's avatar Naresh Tanniru Committed by Satya Krishna Pindiproli
Browse files

hal: update adsp handler to handle multiple events

Update adsp handler logic to handle multiple events from ADSP

Change-Id: Icd2bf5ef7649e5781a8c3aae7aa0e3a42a43f11d
parent 928f0861
Loading
Loading
Loading
Loading
+302 −227

File changed.

Preview size limit exceeded, changes collapsed.

+8 −0
Original line number Diff line number Diff line
@@ -42,6 +42,9 @@ struct adsp_hdlr_stream_cfg {
};

#ifdef AUDIO_EXTN_ADSP_HDLR_ENABLED

typedef int (*adsp_event_callback_t)(void *handle, void *payload, void *cookie);

int audio_extn_adsp_hdlr_init(struct mixer *mixer);
int audio_extn_adsp_hdlr_deinit(void);
int audio_extn_adsp_hdlr_stream_open(void **handle,
@@ -53,6 +56,9 @@ int audio_extn_adsp_hdlr_stream_set_callback(void *handle,
int audio_extn_adsp_hdlr_stream_set_param(void *handle,
                    adsp_hdlr_cmd_t cmd,
                    void *param);
int audio_extn_adsp_hdlr_stream_register_event(void *handle,
                void *param, adsp_event_callback_t cb, void *cookie);
int audio_extn_adsp_hdlr_stream_deregister_event(void *handle, void *param);
#else
#define audio_extn_adsp_hdlr_init(mixer)                                     (0)
#define audio_extn_adsp_hdlr_deinit()                                        (0)
@@ -60,6 +66,8 @@ int audio_extn_adsp_hdlr_stream_set_param(void *handle,
#define audio_extn_adsp_hdlr_stream_close(handle)                            (0)
#define audio_extn_adsp_hdlr_stream_set_callback(handle, callback, cookie)   (0)
#define audio_extn_adsp_hdlr_stream_set_param(handle, cmd, param)            (0)
#define audio_extn_adsp_hdlr_stream_register_event(stream_data, param, cb)   (0)
#define audio_extn_adsp_hdlr_stream_deregister_event(handle, param)          (0)
#endif

#endif
+7 −1
Original line number Diff line number Diff line
@@ -199,12 +199,18 @@ typedef enum {
                                                 */
} audio_extn_callback_id;

#define AUDIO_MAX_ADSP_STREAM_CMD_PAYLOAD_LEN 508
#define AUDIO_MAX_ADSP_STREAM_CMD_PAYLOAD_LEN 504

typedef enum {
    AUDIO_STREAM_PP_EVENT = 0,
    AUDIO_STREAM_ENCDEC_EVENT = 1,
} audio_event_id;

/* payload format for HAL parameter
 * AUDIO_EXTN_PARAM_ADSP_STREAM_CMD
 */
struct audio_adsp_event {
 audio_event_id event_type;                  /* type of the event */
 uint32_t payload_length;                    /* length in bytes of the payload */
 void    *payload;                           /* the actual payload */
};
+6 −0
Original line number Diff line number Diff line
@@ -293,10 +293,16 @@ struct qahw_out_correct_drift {

#define QAHW_MAX_ADSP_STREAM_CMD_PAYLOAD_LEN 512

typedef enum {
    QAHW_STREAM_PP_EVENT = 0,
    QAHW_STREAM_ENCDEC_EVENT = 1,
} qahw_event_id;

/* payload format for HAL parameter
 * QAHW_PARAM_ADSP_STREAM_CMD
 */
struct qahw_adsp_event {
    qahw_event_id event_type;      /* type of the event */
    uint32_t payload_length;       /* length in bytes of the payload */
    void *payload;                 /* the actual payload */
};
+4 −2
Original line number Diff line number Diff line
@@ -422,8 +422,9 @@ int async_callback(qahw_stream_callback_event_t event, void *param,
    case QAHW_STREAM_CBK_EVENT_ADSP:
        fprintf(log_file, "stream %d: received event - QAHW_STREAM_CBK_EVENT_ADSP\n", params->stream_index);
        if (payload != NULL) {
            fprintf(log_file, "param_length %d\n", payload[0]);
            for (i=1; i* sizeof(uint32_t) <= payload[0]; i++)
            fprintf(log_file, "event_type %d\n", payload[0]);
            fprintf(log_file, "param_length %d\n", payload[1]);
            for (i=2; i* sizeof(uint32_t) <= payload[1]; i++)
                fprintf(log_file, "param[%d] = 0x%x\n", i, payload[i]);
        }
        break;
@@ -1239,6 +1240,7 @@ int tigger_event(qahw_stream_handle_t* out_handle)
    event_payload.module_id = 0x10940;
    event_payload.config_mask = 1;

    payload.adsp_event_params.event_type = QAHW_STREAM_PP_EVENT;
    payload.adsp_event_params.payload_length = sizeof(event_payload);
    payload.adsp_event_params.payload = &event_payload;