| From 4bd8405257da717cd556f99e5fb68693d12c9766 Mon Sep 17 00:00:00 2001 |
| From: Joshua Yeong <joshua.yeong@starfivetech.com> |
| Date: Wed, 13 Sep 2023 11:17:45 +0800 |
| Subject: i3c: master: cdns: Fix reading status register |
| |
| From: Joshua Yeong <joshua.yeong@starfivetech.com> |
| |
| commit 4bd8405257da717cd556f99e5fb68693d12c9766 upstream. |
| |
| IBIR_DEPTH and CMDR_DEPTH should read from status0 instead of status1. |
| |
| Cc: stable@vger.kernel.org |
| Fixes: 603f2bee2c54 ("i3c: master: Add driver for Cadence IP") |
| Signed-off-by: Joshua Yeong <joshua.yeong@starfivetech.com> |
| Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com> |
| Link: https://lore.kernel.org/r/20230913031743.11439-2-joshua.yeong@starfivetech.com |
| Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/i3c/master/i3c-master-cdns.c | 6 +++--- |
| 1 file changed, 3 insertions(+), 3 deletions(-) |
| |
| --- a/drivers/i3c/master/i3c-master-cdns.c |
| +++ b/drivers/i3c/master/i3c-master-cdns.c |
| @@ -189,7 +189,7 @@ |
| #define SLV_STATUS1_HJ_DIS BIT(18) |
| #define SLV_STATUS1_MR_DIS BIT(17) |
| #define SLV_STATUS1_PROT_ERR BIT(16) |
| -#define SLV_STATUS1_DA(x) (((s) & GENMASK(15, 9)) >> 9) |
| +#define SLV_STATUS1_DA(s) (((s) & GENMASK(15, 9)) >> 9) |
| #define SLV_STATUS1_HAS_DA BIT(8) |
| #define SLV_STATUS1_DDR_RX_FULL BIT(7) |
| #define SLV_STATUS1_DDR_TX_FULL BIT(6) |
| @@ -1580,13 +1580,13 @@ static int cdns_i3c_master_probe(struct |
| /* Device ID0 is reserved to describe this master. */ |
| master->maxdevs = CONF_STATUS0_DEVS_NUM(val); |
| master->free_rr_slots = GENMASK(master->maxdevs, 1); |
| + master->caps.ibirfifodepth = CONF_STATUS0_IBIR_DEPTH(val); |
| + master->caps.cmdrfifodepth = CONF_STATUS0_CMDR_DEPTH(val); |
| |
| val = readl(master->regs + CONF_STATUS1); |
| master->caps.cmdfifodepth = CONF_STATUS1_CMD_DEPTH(val); |
| master->caps.rxfifodepth = CONF_STATUS1_RX_DEPTH(val); |
| master->caps.txfifodepth = CONF_STATUS1_TX_DEPTH(val); |
| - master->caps.ibirfifodepth = CONF_STATUS0_IBIR_DEPTH(val); |
| - master->caps.cmdrfifodepth = CONF_STATUS0_CMDR_DEPTH(val); |
| |
| spin_lock_init(&master->ibi.lock); |
| master->ibi.num_slots = CONF_STATUS1_IBI_HW_RES(val); |