Lines Matching full:ibi

213  * @ibi: IBI structure
214 * @ibi.num_slots: Number of slots available in @ibi.slots
215 * @ibi.slots: Available IBI slots
216 * @ibi.tbq_slot: To be queued IBI slot
217 * @ibi.lock: IBI lock
218 * @lock: Transfer lock, protect between IBI work thread and callbacks from master
220 * @enabled_events: Bit masks for enable events (IBI, HotJoin).
246 /* Prevent races within IBI handlers */
248 } ibi; member
258 * @ibi: IBI slot index in the master structure
259 * @ibi_pool: IBI pool associated to this device
263 int ibi; member
432 master->ibi.tbq_slot = slot; in svc_i3c_master_handle_ibi()
511 * cycle, leading to missed client IBI handlers. in svc_i3c_master_ibi_isr()
538 /* Handle the critical responses to IBI's */ in svc_i3c_master_ibi_isr()
566 if (master->ibi.tbq_slot) { in svc_i3c_master_ibi_isr()
569 master->ibi.tbq_slot); in svc_i3c_master_ibi_isr()
570 master->ibi.tbq_slot = NULL; in svc_i3c_master_ibi_isr()
583 i3c_master_queue_ibi(dev, master->ibi.tbq_slot); in svc_i3c_master_ibi_isr()
584 master->ibi.tbq_slot = NULL; in svc_i3c_master_ibi_isr()
843 data->ibi = -1; in svc_i3c_master_attach_i3c_dev()
1112 /* IBI rules cannot be applied to devices with MSb=1 */ in svc_i3c_update_ibirules()
1121 /* IBI rules cannot be applied to devices with MSb=1 */ in svc_i3c_update_ibirules()
1202 /* Configure IBI auto-rules */ in svc_i3c_master_do_daa()
1349 * Target may be initiating an IBI or a Controller Role Request. So, one of in svc_i3c_master_xfer()
1731 if (dev->ibi->max_payload_len > SVC_I3C_FIFO_SIZE) { in svc_i3c_master_request_ibi()
1732 dev_err(master->dev, "IBI max payload %d should be < %d\n", in svc_i3c_master_request_ibi()
1733 dev->ibi->max_payload_len, SVC_I3C_FIFO_SIZE); in svc_i3c_master_request_ibi()
1741 spin_lock_irqsave(&master->ibi.lock, flags); in svc_i3c_master_request_ibi()
1742 for (i = 0; i < master->ibi.num_slots; i++) { in svc_i3c_master_request_ibi()
1743 if (!master->ibi.slots[i]) { in svc_i3c_master_request_ibi()
1744 data->ibi = i; in svc_i3c_master_request_ibi()
1745 master->ibi.slots[i] = dev; in svc_i3c_master_request_ibi()
1749 spin_unlock_irqrestore(&master->ibi.lock, flags); in svc_i3c_master_request_ibi()
1751 if (i < master->ibi.num_slots) in svc_i3c_master_request_ibi()
1767 spin_lock_irqsave(&master->ibi.lock, flags); in svc_i3c_master_free_ibi()
1768 master->ibi.slots[data->ibi] = NULL; in svc_i3c_master_free_ibi()
1769 data->ibi = -1; in svc_i3c_master_free_ibi()
1770 spin_unlock_irqrestore(&master->ibi.lock, flags); in svc_i3c_master_free_ibi()
1930 spin_lock_init(&master->ibi.lock); in svc_i3c_master_probe()
1931 master->ibi.num_slots = SVC_I3C_MAX_DEVS; in svc_i3c_master_probe()
1932 master->ibi.slots = devm_kcalloc(&pdev->dev, master->ibi.num_slots, in svc_i3c_master_probe()
1933 sizeof(*master->ibi.slots), in svc_i3c_master_probe()
1935 if (!master->ibi.slots) { in svc_i3c_master_probe()