Lines Matching refs:evt_ring_id
232 static void gsi_irq_ieob_enable(struct gsi *gsi, u32 evt_ring_id) in gsi_irq_ieob_enable() argument
236 gsi->event_enable_bitmap |= BIT(evt_ring_id); in gsi_irq_ieob_enable()
241 static void gsi_irq_ieob_disable(struct gsi *gsi, u32 evt_ring_id) in gsi_irq_ieob_disable() argument
245 gsi->event_enable_bitmap &= ~BIT(evt_ring_id); in gsi_irq_ieob_disable()
324 gsi_evt_ring_state(struct gsi *gsi, u32 evt_ring_id) in gsi_evt_ring_state() argument
328 val = ioread32(gsi->virt + GSI_EV_CH_E_CNTXT_0_OFFSET(evt_ring_id)); in gsi_evt_ring_state()
334 static int evt_ring_command(struct gsi *gsi, u32 evt_ring_id, in evt_ring_command() argument
337 struct gsi_evt_ring *evt_ring = &gsi->evt_ring[evt_ring_id]; in evt_ring_command()
342 val = u32_encode_bits(evt_ring_id, EV_CHID_FMASK); in evt_ring_command()
349 opcode, evt_ring_id, evt_ring->state); in evt_ring_command()
355 static int gsi_evt_ring_alloc_command(struct gsi *gsi, u32 evt_ring_id) in gsi_evt_ring_alloc_command() argument
357 struct gsi_evt_ring *evt_ring = &gsi->evt_ring[evt_ring_id]; in gsi_evt_ring_alloc_command()
361 evt_ring->state = gsi_evt_ring_state(gsi, evt_ring_id); in gsi_evt_ring_alloc_command()
368 ret = evt_ring_command(gsi, evt_ring_id, GSI_EVT_ALLOCATE); in gsi_evt_ring_alloc_command()
379 static void gsi_evt_ring_reset_command(struct gsi *gsi, u32 evt_ring_id) in gsi_evt_ring_reset_command() argument
381 struct gsi_evt_ring *evt_ring = &gsi->evt_ring[evt_ring_id]; in gsi_evt_ring_reset_command()
392 ret = evt_ring_command(gsi, evt_ring_id, GSI_EVT_RESET); in gsi_evt_ring_reset_command()
399 static void gsi_evt_ring_de_alloc_command(struct gsi *gsi, u32 evt_ring_id) in gsi_evt_ring_de_alloc_command() argument
401 struct gsi_evt_ring *evt_ring = &gsi->evt_ring[evt_ring_id]; in gsi_evt_ring_de_alloc_command()
410 ret = evt_ring_command(gsi, evt_ring_id, GSI_EVT_DE_ALLOC); in gsi_evt_ring_de_alloc_command()
591 static void gsi_evt_ring_doorbell(struct gsi *gsi, u32 evt_ring_id, u32 index) in gsi_evt_ring_doorbell() argument
593 struct gsi_ring *ring = &gsi->evt_ring[evt_ring_id].ring; in gsi_evt_ring_doorbell()
600 iowrite32(val, gsi->virt + GSI_EV_CH_E_DOORBELL_0_OFFSET(evt_ring_id)); in gsi_evt_ring_doorbell()
604 static void gsi_evt_ring_program(struct gsi *gsi, u32 evt_ring_id) in gsi_evt_ring_program() argument
606 struct gsi_evt_ring *evt_ring = &gsi->evt_ring[evt_ring_id]; in gsi_evt_ring_program()
613 iowrite32(val, gsi->virt + GSI_EV_CH_E_CNTXT_0_OFFSET(evt_ring_id)); in gsi_evt_ring_program()
616 iowrite32(val, gsi->virt + GSI_EV_CH_E_CNTXT_1_OFFSET(evt_ring_id)); in gsi_evt_ring_program()
623 iowrite32(val, gsi->virt + GSI_EV_CH_E_CNTXT_2_OFFSET(evt_ring_id)); in gsi_evt_ring_program()
626 iowrite32(val, gsi->virt + GSI_EV_CH_E_CNTXT_3_OFFSET(evt_ring_id)); in gsi_evt_ring_program()
631 iowrite32(val, gsi->virt + GSI_EV_CH_E_CNTXT_8_OFFSET(evt_ring_id)); in gsi_evt_ring_program()
634 iowrite32(0, gsi->virt + GSI_EV_CH_E_CNTXT_9_OFFSET(evt_ring_id)); in gsi_evt_ring_program()
635 iowrite32(0, gsi->virt + GSI_EV_CH_E_CNTXT_10_OFFSET(evt_ring_id)); in gsi_evt_ring_program()
636 iowrite32(0, gsi->virt + GSI_EV_CH_E_CNTXT_11_OFFSET(evt_ring_id)); in gsi_evt_ring_program()
639 iowrite32(0, gsi->virt + GSI_EV_CH_E_CNTXT_12_OFFSET(evt_ring_id)); in gsi_evt_ring_program()
640 iowrite32(0, gsi->virt + GSI_EV_CH_E_CNTXT_13_OFFSET(evt_ring_id)); in gsi_evt_ring_program()
643 gsi_evt_ring_doorbell(gsi, evt_ring_id, 0); in gsi_evt_ring_program()
692 gsi_irq_ieob_disable(channel->gsi, channel->evt_ring_id); in gsi_channel_freeze()
698 gsi_irq_ieob_enable(channel->gsi, channel->evt_ring_id); in gsi_channel_thaw()
721 val |= u32_encode_bits(channel->evt_ring_id, ERINDEX_FMASK); in gsi_channel_program()
976 u32 evt_ring_id = __ffs(event_mask); in gsi_isr_evt_ctrl() local
979 event_mask ^= BIT(evt_ring_id); in gsi_isr_evt_ctrl()
981 evt_ring = &gsi->evt_ring[evt_ring_id]; in gsi_isr_evt_ctrl()
982 evt_ring->state = gsi_evt_ring_state(gsi, evt_ring_id); in gsi_isr_evt_ctrl()
1005 gsi_isr_glob_evt_err(struct gsi *gsi, u32 err_ee, u32 evt_ring_id, u32 code) in gsi_isr_glob_evt_err() argument
1008 struct gsi_evt_ring *evt_ring = &gsi->evt_ring[evt_ring_id]; in gsi_isr_glob_evt_err()
1019 evt_ring_id, err_ee, code); in gsi_isr_glob_evt_err()
1095 u32 evt_ring_id = __ffs(event_mask); in gsi_isr_ieob() local
1097 event_mask ^= BIT(evt_ring_id); in gsi_isr_ieob()
1099 gsi_irq_ieob_disable(gsi, evt_ring_id); in gsi_isr_ieob()
1100 napi_schedule(&gsi->evt_ring[evt_ring_id].channel->napi); in gsi_isr_ieob()
1283 u32 evt_ring_id; in gsi_evt_ring_id_alloc() local
1290 evt_ring_id = ffz(gsi->event_bitmap); in gsi_evt_ring_id_alloc()
1291 gsi->event_bitmap |= BIT(evt_ring_id); in gsi_evt_ring_id_alloc()
1293 return (int)evt_ring_id; in gsi_evt_ring_id_alloc()
1297 static void gsi_evt_ring_id_free(struct gsi *gsi, u32 evt_ring_id) in gsi_evt_ring_id_free() argument
1299 gsi->event_bitmap &= ~BIT(evt_ring_id); in gsi_evt_ring_id_free()
1318 u32 evt_ring_id = channel->evt_ring_id; in gsi_channel_update() local
1326 evt_ring = &gsi->evt_ring[evt_ring_id]; in gsi_channel_update()
1332 offset = GSI_EV_CH_E_CNTXT_4_OFFSET(evt_ring_id); in gsi_channel_update()
1357 gsi_evt_ring_doorbell(channel->gsi, channel->evt_ring_id, index); in gsi_channel_update()
1422 gsi_irq_ieob_enable(channel->gsi, channel->evt_ring_id); in gsi_channel_poll()
1459 u32 evt_ring_id = channel->evt_ring_id; in gsi_channel_setup_one() local
1465 ret = gsi_evt_ring_alloc_command(gsi, evt_ring_id); in gsi_channel_setup_one()
1469 gsi_evt_ring_program(gsi, evt_ring_id); in gsi_channel_setup_one()
1488 gsi_evt_ring_de_alloc_command(gsi, evt_ring_id); in gsi_channel_setup_one()
1497 u32 evt_ring_id = channel->evt_ring_id; in gsi_channel_teardown_one() local
1506 gsi_evt_ring_reset_command(gsi, evt_ring_id); in gsi_channel_teardown_one()
1507 gsi_evt_ring_de_alloc_command(gsi, evt_ring_id); in gsi_channel_teardown_one()
1713 channel->evt_ring_id = ret; in gsi_channel_evt_ring_init()
1715 evt_ring = &gsi->evt_ring[channel->evt_ring_id]; in gsi_channel_evt_ring_init()
1725 gsi_evt_ring_id_free(gsi, channel->evt_ring_id); in gsi_channel_evt_ring_init()
1733 u32 evt_ring_id = channel->evt_ring_id; in gsi_channel_evt_ring_exit() local
1737 evt_ring = &gsi->evt_ring[evt_ring_id]; in gsi_channel_evt_ring_exit()
1739 gsi_evt_ring_id_free(gsi, evt_ring_id); in gsi_channel_evt_ring_exit()
1745 u32 evt_ring_id = 0; in gsi_evt_ring_init() local
1750 init_completion(&gsi->evt_ring[evt_ring_id].completion); in gsi_evt_ring_init()
1751 while (++evt_ring_id < GSI_EVT_RING_COUNT_MAX); in gsi_evt_ring_init()