Lines Matching refs:ipc_device
115 static int32_t check_ipc_available(IN sedi_ipc_t ipc_device) in check_ipc_available() argument
117 DBG_CHECK(ipc_device < SEDI_IPC_NUM, SEDI_DRIVER_ERROR_PARAMETER); in check_ipc_available()
118 if (!ipc_contexts[ipc_device].initialized) { in check_ipc_available()
131 int32_t sedi_ipc_get_capabilities(IN sedi_ipc_t ipc_device, INOUT sedi_ipc_capabilities_t *cap) in sedi_ipc_get_capabilities() argument
133 DBG_CHECK(ipc_device < SEDI_IPC_NUM, SEDI_DRIVER_ERROR_PARAMETER); in sedi_ipc_get_capabilities()
136 driver_capabilities[ipc_device].is_available = 1; in sedi_ipc_get_capabilities()
137 *cap = driver_capabilities[ipc_device]; in sedi_ipc_get_capabilities()
141 int32_t sedi_ipc_init(IN sedi_ipc_t ipc_device, IN sedi_ipc_event_cb_t cb, INOUT void *param) in sedi_ipc_init() argument
143 DBG_CHECK(ipc_device < SEDI_IPC_NUM, SEDI_DRIVER_ERROR_PARAMETER); in sedi_ipc_init()
144 volatile sedi_ipc_regs_t *regs = ipc_resource[ipc_device].reg_base_addr; in sedi_ipc_init()
145 vnn_id_t write_vnn = ipc_resource[ipc_device].write_vnn; in sedi_ipc_init()
147 ipc_contexts[ipc_device].initialized = false; in sedi_ipc_init()
148 ipc_contexts[ipc_device].csr_saved = 0; in sedi_ipc_init()
149 ipc_contexts[ipc_device].cb_event = cb; in sedi_ipc_init()
150 ipc_contexts[ipc_device].usr_params = param; in sedi_ipc_init()
151 ipc_contexts[ipc_device].in_msg_count = 0; in sedi_ipc_init()
152 ipc_contexts[ipc_device].out_msg_count = 0; in sedi_ipc_init()
155 sideband_param_t *sb = ipc_resource[ipc_device].sb; in sedi_ipc_init()
168 ipc_contexts[ipc_device].initialized = true; in sedi_ipc_init()
186 int32_t sedi_ipc_uninit(IN sedi_ipc_t ipc_device) in sedi_ipc_uninit() argument
188 DBG_CHECK(ipc_device < SEDI_IPC_NUM, SEDI_DRIVER_ERROR_PARAMETER); in sedi_ipc_uninit()
189 volatile sedi_ipc_regs_t *regs = ipc_resource[ipc_device].reg_base_addr; in sedi_ipc_uninit()
195 ipc_contexts[ipc_device].cb_event = NULL; in sedi_ipc_uninit()
196 ipc_contexts[ipc_device].initialized = false; in sedi_ipc_uninit()
198 sideband_param_t *sb = ipc_resource[ipc_device].sb; in sedi_ipc_uninit()
211 int32_t sedi_ipc_set_power(IN sedi_ipc_t ipc_device, IN sedi_power_state_t state) in sedi_ipc_set_power() argument
215 ret = check_ipc_available(ipc_device); in sedi_ipc_set_power()
225 int32_t sedi_ipc_write_msg(IN sedi_ipc_t ipc_device, IN uint8_t *msg, IN int32_t size) in sedi_ipc_write_msg() argument
230 ret = check_ipc_available(ipc_device); in sedi_ipc_write_msg()
235 volatile sedi_ipc_regs_t *regs = ipc_resource[ipc_device].reg_base_addr; in sedi_ipc_write_msg()
236 sideband_param_t *sb = ipc_resource[ipc_device].sb; in sedi_ipc_write_msg()
265 int32_t sedi_ipc_write_dbl(IN sedi_ipc_t ipc_device, IN uint32_t doorbell) in sedi_ipc_write_dbl() argument
269 ret = check_ipc_available(ipc_device); in sedi_ipc_write_dbl()
274 vnn_id_t write_vnn = ipc_resource[ipc_device].write_vnn; in sedi_ipc_write_dbl()
275 sideband_param_t *sb = ipc_resource[ipc_device].sb; in sedi_ipc_write_dbl()
276 volatile sedi_ipc_regs_t *regs = ipc_resource[ipc_device].reg_base_addr; in sedi_ipc_write_dbl()
297 int32_t sedi_ipc_write_csr(IN sedi_ipc_t ipc_device, IN uint32_t csr) in sedi_ipc_write_csr() argument
301 ret = check_ipc_available(ipc_device); in sedi_ipc_write_csr()
306 sideband_param_t *sb = ipc_resource[ipc_device].sb; in sedi_ipc_write_csr()
318 int32_t sedi_ipc_read_csr(IN sedi_ipc_t ipc_device, OUT uint32_t *csr) in sedi_ipc_read_csr() argument
322 ret = check_ipc_available(ipc_device); in sedi_ipc_read_csr()
328 *csr = ipc_contexts[ipc_device].csr_saved; in sedi_ipc_read_csr()
336 int32_t sedi_ipc_read_msg(IN sedi_ipc_t ipc_device, OUT uint8_t *msg, IN int32_t size) in sedi_ipc_read_msg() argument
341 ret = check_ipc_available(ipc_device); in sedi_ipc_read_msg()
346 volatile sedi_ipc_regs_t *regs = ipc_resource[ipc_device].reg_base_addr; in sedi_ipc_read_msg()
366 int32_t sedi_ipc_read_dbl(IN sedi_ipc_t ipc_device, OUT uint32_t *doorbell) in sedi_ipc_read_dbl() argument
370 ret = check_ipc_available(ipc_device); in sedi_ipc_read_dbl()
375 volatile sedi_ipc_regs_t *regs = ipc_resource[ipc_device].reg_base_addr; in sedi_ipc_read_dbl()
380 int32_t sedi_ipc_send_ack_drbl(IN sedi_ipc_t ipc_device, IN uint32_t ack) in sedi_ipc_send_ack_drbl() argument
384 ret = check_ipc_available(ipc_device); in sedi_ipc_send_ack_drbl()
389 sideband_param_t *sb = ipc_resource[ipc_device].sb; in sedi_ipc_send_ack_drbl()
395 volatile sedi_ipc_regs_t *regs = ipc_resource[ipc_device].reg_base_addr; in sedi_ipc_send_ack_drbl()
396 vnn_id_t read_vnn = ipc_resource[ipc_device].read_vnn; in sedi_ipc_send_ack_drbl()
413 int32_t sedi_ipc_read_ack_drbl(IN sedi_ipc_t ipc_device, OUT uint32_t *ack) in sedi_ipc_read_ack_drbl() argument
417 ret = check_ipc_available(ipc_device); in sedi_ipc_read_ack_drbl()
423 volatile sedi_ipc_regs_t *regs = ipc_resource[ipc_device].reg_base_addr; in sedi_ipc_read_ack_drbl()
430 int32_t sedi_ipc_send_ack_msg(IN sedi_ipc_t ipc_device, IN uint8_t *msg, IN int32_t size) in sedi_ipc_send_ack_msg() argument
435 ret = check_ipc_available(ipc_device); in sedi_ipc_send_ack_msg()
440 volatile sedi_ipc_regs_t *regs = ipc_resource[ipc_device].reg_base_addr; in sedi_ipc_send_ack_msg()
459 int32_t sedi_ipc_read_ack_msg(IN sedi_ipc_t ipc_device, OUT uint8_t *msg, IN int32_t size) in sedi_ipc_read_ack_msg() argument
464 ret = check_ipc_available(ipc_device); in sedi_ipc_read_ack_msg()
469 volatile sedi_ipc_regs_t *regs = ipc_resource[ipc_device].reg_base_addr; in sedi_ipc_read_ack_msg()
474 if (ipc_device == SEDI_IPC_HOST) { in sedi_ipc_read_ack_msg()
488 sideband_param_t *sb = ipc_resource[ipc_device].sb; in sedi_ipc_read_ack_msg()
503 void sedi_ipc_isr(IN sedi_ipc_t ipc_device) in sedi_ipc_isr() argument
506 volatile sedi_ipc_regs_t *regs = ipc_resource[ipc_device].reg_base_addr; in sedi_ipc_isr()
508 ret = check_ipc_available(ipc_device); in sedi_ipc_isr()
519 if (ipc_device == SEDI_IPC_HOST) { in sedi_ipc_isr()
520 PM_VNN_DRIVER_REQ(ipc_resource[ipc_device].read_vnn); in sedi_ipc_isr()
522 if (ipc_contexts[ipc_device].cb_event) { in sedi_ipc_isr()
523 ipc_contexts[ipc_device].in_msg_count++; in sedi_ipc_isr()
524 ipc_contexts[ipc_device].cb_event(ipc_device, SEDI_IPC_EVENT_MSG_IN, in sedi_ipc_isr()
525 ipc_contexts[ipc_device].usr_params); in sedi_ipc_isr()
535 if ((ipc_contexts[ipc_device].initialized == true) && in sedi_ipc_isr()
536 (ipc_contexts[ipc_device].cb_event)) { in sedi_ipc_isr()
537 ipc_contexts[ipc_device].out_msg_count++; in sedi_ipc_isr()
538 ipc_contexts[ipc_device].cb_event(ipc_device, SEDI_IPC_EVENT_MSG_PEER_ACKED, in sedi_ipc_isr()
539 ipc_contexts[ipc_device].usr_params); in sedi_ipc_isr()
541 if (ipc_device == SEDI_IPC_HOST) { in sedi_ipc_isr()
542 PM_VNN_DRIVER_DEREQ(ipc_resource[ipc_device].write_vnn); in sedi_ipc_isr()
547 if ((ipc_device != SEDI_IPC_HOST) && (regs->agent2ish_csr_agent != 0)) { in sedi_ipc_isr()
548 ipc_contexts[ipc_device].csr_saved = regs->agent2ish_csr_agent; in sedi_ipc_isr()
550 regs->agent2ish_csr_agent = ipc_contexts[ipc_device].csr_saved; in sedi_ipc_isr()
551 if ((ipc_contexts[ipc_device].initialized == true) && in sedi_ipc_isr()
552 (ipc_contexts[ipc_device].cb_event)) { in sedi_ipc_isr()
553 ipc_contexts[ipc_device].cb_event(ipc_device, SEDI_IPC_EVENT_CSR_ACK, in sedi_ipc_isr()
554 ipc_contexts[ipc_device].usr_params); in sedi_ipc_isr()