diff options
author | Iwona Winiarska <iwona.winiarska@intel.com> | 2022-02-20 23:59:24 +0300 |
---|---|---|
committer | Iwona Winiarska <iwona.winiarska@intel.com> | 2022-03-03 22:12:31 +0300 |
commit | 4e36b22c7f85525a2fd7a4afecc12f7d3c84de04 (patch) | |
tree | 6ece81f89e1904318defbc3190a8c46fe28589ec /drivers/i3c | |
parent | 91ca2b03ff453bb6e4d5091bf038f72963bc7afa (diff) | |
download | linux-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.c | 3 |
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); |