Lines Matching refs:ibi
1911 if (olddev->ibi) {
1912 ibireq.handler = olddev->ibi->handler;
1913 ibireq.max_payload_len = olddev->ibi->max_payload_len;
1914 ibireq.num_slots = olddev->ibi->num_slots;
1916 if (olddev->ibi->enabled) {
2374 atomic_inc(&dev->ibi->pending_ibis);
2391 dev->ibi->handler(dev->dev, &payload);
2394 if (atomic_dec_and_test(&dev->ibi->pending_ibis))
2395 complete(&dev->ibi->all_ibis_handled);
2767 if (!dev->ibi)
2775 reinit_completion(&dev->ibi->all_ibis_handled);
2776 if (atomic_read(&dev->ibi->pending_ibis))
2777 wait_for_completion(&dev->ibi->all_ibis_handled);
2779 dev->ibi->enabled = false;
2789 if (!dev->ibi)
2794 dev->ibi->enabled = true;
2803 struct i3c_device_ibi_info *ibi;
2809 if (dev->ibi)
2812 ibi = kzalloc(sizeof(*ibi), GFP_KERNEL);
2813 if (!ibi)
2816 atomic_set(&ibi->pending_ibis, 0);
2817 init_completion(&ibi->all_ibis_handled);
2818 ibi->handler = req->handler;
2819 ibi->max_payload_len = req->max_payload_len;
2820 ibi->num_slots = req->num_slots;
2822 dev->ibi = ibi;
2825 kfree(ibi);
2826 dev->ibi = NULL;
2836 if (!dev->ibi)
2839 if (WARN_ON(dev->ibi->enabled))
2843 kfree(dev->ibi);
2844 dev->ibi = NULL;