]> www.infradead.org Git - nvme.git/commitdiff
i3c: mipi-i3c-hci: Set IBI Status and Data Ring base addresses
authorJarkko Nikula <jarkko.nikula@linux.intel.com>
Fri, 28 Jun 2024 13:15:57 +0000 (16:15 +0300)
committerAlexandre Belloni <alexandre.belloni@bootlin.com>
Fri, 26 Jul 2024 12:21:29 +0000 (14:21 +0200)
IBI Status and Data Ring base address registers are not set so HW
obviously cannot update those rings after In-Band Interrupt.

Set them to already allocated and mapped ring addresses.

Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Link: https://lore.kernel.org/r/20240628131559.502822-2-jarkko.nikula@linux.intel.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
drivers/i3c/master/mipi-i3c-hci/dma.c

index 6c5964e727b3269085b66f3197bc622bd428ab59..7a56ae4a5ddf116245137d16fd7f4214479347ea 100644 (file)
@@ -300,6 +300,11 @@ static int hci_dma_init(struct i3c_hci *hci)
                        goto err_out;
                }
 
+               rh_reg_write(IBI_STATUS_RING_BASE_LO, lower_32_bits(rh->ibi_status_dma));
+               rh_reg_write(IBI_STATUS_RING_BASE_HI, upper_32_bits(rh->ibi_status_dma));
+               rh_reg_write(IBI_DATA_RING_BASE_LO, lower_32_bits(rh->ibi_data_dma));
+               rh_reg_write(IBI_DATA_RING_BASE_HI, upper_32_bits(rh->ibi_data_dma));
+
                regval = FIELD_PREP(IBI_STATUS_RING_SIZE,
                                    rh->ibi_status_entries) |
                         FIELD_PREP(IBI_DATA_CHUNK_SIZE,