Lines Matching defs:ibi
2307 if (olddev->ibi) {
2308 ibireq.handler = olddev->ibi->handler;
2309 ibireq.max_payload_len = olddev->ibi->max_payload_len;
2310 ibireq.num_slots = olddev->ibi->num_slots;
2312 if (olddev->ibi->enabled)
2318 * So, update the olddev->ibi->enabled flag to false
2321 olddev->ibi->enabled = false;
2787 if (!dev->ibi || !slot)
2790 atomic_inc(&dev->ibi->pending_ibis);
2791 queue_work(dev->ibi->wq, &slot->work);
2807 dev->ibi->handler(dev->dev, &payload);
2810 if (atomic_dec_and_test(&dev->ibi->pending_ibis))
2811 complete(&dev->ibi->all_ibis_handled);
3203 if (!dev->ibi)
3211 reinit_completion(&dev->ibi->all_ibis_handled);
3212 if (atomic_read(&dev->ibi->pending_ibis))
3213 wait_for_completion(&dev->ibi->all_ibis_handled);
3215 dev->ibi->enabled = false;
3225 if (!dev->ibi)
3230 dev->ibi->enabled = true;
3239 struct i3c_device_ibi_info *ibi;
3245 if (dev->ibi)
3248 ibi = kzalloc_obj(*ibi);
3249 if (!ibi)
3252 ibi->wq = alloc_ordered_workqueue(dev_name(i3cdev_to_dev(dev->dev)), WQ_MEM_RECLAIM);
3253 if (!ibi->wq) {
3254 kfree(ibi);
3258 atomic_set(&ibi->pending_ibis, 0);
3259 init_completion(&ibi->all_ibis_handled);
3260 ibi->handler = req->handler;
3261 ibi->max_payload_len = req->max_payload_len;
3262 ibi->num_slots = req->num_slots;
3264 dev->ibi = ibi;
3267 kfree(ibi);
3268 dev->ibi = NULL;
3278 if (!dev->ibi)
3281 if (dev->ibi->enabled) {
3296 if (dev->ibi->wq) {
3297 destroy_workqueue(dev->ibi->wq);
3298 dev->ibi->wq = NULL;
3301 kfree(dev->ibi);
3302 dev->ibi = NULL;