mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-30 14:33:24 -04:00
i3c: master: Reject IBI requests from non-IBI-capable devices
i3c_device_request_ibi() does not verify that a device advertises IBI support before attempting to set up IBI handling. Add a check for I3C_BCR_IBI_REQ_CAP and fail with -EOPNOTSUPP when IBI support is not reported by the device. This keeps IBI setup consistent with other IBI-related functionality, such as exposing wakeup capability only for IBI-capable devices. Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Reviewed-by: Frank Li <Frank.Li@nxp.com> Link: https://patch.msgid.link/20260807145638.168865-12-adrian.hunter@intel.com Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
This commit is contained in:
committed by
Alexandre Belloni
parent
60ff731f06
commit
087efc8e88
@@ -204,12 +204,14 @@ int i3c_device_request_ibi(struct i3c_device *dev,
|
||||
return ret;
|
||||
|
||||
i3c_bus_normaluse_lock(dev->bus);
|
||||
if (dev->desc) {
|
||||
if (!dev->desc) {
|
||||
ret = -ENOENT;
|
||||
} else if (!(dev->desc->info.bcr & I3C_BCR_IBI_REQ_CAP)) {
|
||||
ret = -EOPNOTSUPP;
|
||||
} else {
|
||||
mutex_lock(&dev->desc->ibi_lock);
|
||||
ret = i3c_dev_request_ibi_locked(dev->desc, req);
|
||||
mutex_unlock(&dev->desc->ibi_lock);
|
||||
} else {
|
||||
ret = -ENOENT;
|
||||
}
|
||||
i3c_bus_normaluse_unlock(dev->bus);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user