summaryrefslogtreecommitdiff
path: root/drivers/i3c
diff options
context:
space:
mode:
authorIwona Winiarska <iwona.winiarska@intel.com>2022-02-20 23:59:24 +0300
committerIwona Winiarska <iwona.winiarska@intel.com>2022-03-03 22:12:31 +0300
commit4e36b22c7f85525a2fd7a4afecc12f7d3c84de04 (patch)
tree6ece81f89e1904318defbc3190a8c46fe28589ec /drivers/i3c
parent91ca2b03ff453bb6e4d5091bf038f72963bc7afa (diff)
downloadlinux-4e36b22c7f85525a2fd7a4afecc12f7d3c84de04.tar.xz
i3c: master: dw: Set IBI_WITH_DATA based on Target's BCR[2] bit
The Active Controller should set the IBI Payload Control to 1 only when the Target device supports the mandatory byte (BCR[2]=1). Otherwise, when the Target device doesn't support MDB (BCR[2]=0), the IBI Payload Control bit should set to 0. Fixes: ee31c3564a25 ("i3c: master: dw: add IBI support") Signed-off-by: Iwona Winiarska <iwona.winiarska@intel.com>
Diffstat (limited to 'drivers/i3c')
-rw-r--r--drivers/i3c/master/dw-i3c-master.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/i3c/master/dw-i3c-master.c b/drivers/i3c/master/dw-i3c-master.c
index f883256665a6..ef648d25da46 100644
--- a/drivers/i3c/master/dw-i3c-master.c
+++ b/drivers/i3c/master/dw-i3c-master.c
@@ -1323,7 +1323,8 @@ static int dw_i3c_master_enable_ibi(struct i3c_dev_desc *dev)
dat_loc = DEV_ADDR_TABLE_LOC(master->datstartaddr, pos);
reg = readl(master->regs + dat_loc);
reg &= ~DEV_ADDR_TABLE_SIR_REJECT;
- reg |= DEV_ADDR_TABLE_IBI_WITH_DATA;
+ if (dev->info.bcr & I3C_BCR_IBI_PAYLOAD)
+ reg |= DEV_ADDR_TABLE_IBI_WITH_DATA;
writel(reg, master->regs + dat_loc);
spin_unlock_irq(&master->ibi.lock);