[PATCH 09/17] i3c: mipi-i3c-hci: Introduce helper to restore DAT
Frank Li
Frank.li at nxp.com
Fri Dec 19 08:37:20 PST 2025
On Fri, Dec 19, 2025 at 04:45:26PM +0200, Adrian Hunter wrote:
> Add a dedicated function to restore the Device Address Table (DAT) in
> preparation for Runtime PM support. This will allow reprogramming the DAT
> after the controller resumes from a low-power state.
>
> Signed-off-by: Adrian Hunter <adrian.hunter at intel.com>
> ---
Reviewed-by: Frank Li <Frank.Li at nxp.com>
> drivers/i3c/master/mipi-i3c-hci/dat.h | 1 +
> drivers/i3c/master/mipi-i3c-hci/dat_v1.c | 9 +++++++++
> 2 files changed, 10 insertions(+)
>
> diff --git a/drivers/i3c/master/mipi-i3c-hci/dat.h b/drivers/i3c/master/mipi-i3c-hci/dat.h
> index 5277c65fc601..6881f19da77f 100644
> --- a/drivers/i3c/master/mipi-i3c-hci/dat.h
> +++ b/drivers/i3c/master/mipi-i3c-hci/dat.h
> @@ -24,6 +24,7 @@ struct hci_dat_ops {
> void (*set_flags)(struct i3c_hci *hci, unsigned int dat_idx, u32 w0, u32 w1);
> void (*clear_flags)(struct i3c_hci *hci, unsigned int dat_idx, u32 w0, u32 w1);
> int (*get_index)(struct i3c_hci *hci, u8 address);
> + void (*restore)(struct i3c_hci *hci);
> };
>
> extern const struct hci_dat_ops mipi_i3c_hci_dat_v1;
> diff --git a/drivers/i3c/master/mipi-i3c-hci/dat_v1.c b/drivers/i3c/master/mipi-i3c-hci/dat_v1.c
> index 644ab939be1c..852966aa20d9 100644
> --- a/drivers/i3c/master/mipi-i3c-hci/dat_v1.c
> +++ b/drivers/i3c/master/mipi-i3c-hci/dat_v1.c
> @@ -181,6 +181,14 @@ static int hci_dat_v1_get_index(struct i3c_hci *hci, u8 dev_addr)
> return -ENODEV;
> }
>
> +static void hci_dat_v1_restore(struct i3c_hci *hci)
> +{
> + for (int i = 0; i < hci->DAT_entries; i++) {
> + writel(hci->DAT[i].w0, hci->DAT_regs + i * 8);
> + writel(hci->DAT[i].w1, hci->DAT_regs + i * 8 + 4);
> + }
> +}
> +
> const struct hci_dat_ops mipi_i3c_hci_dat_v1 = {
> .init = hci_dat_v1_init,
> .alloc_entry = hci_dat_v1_alloc_entry,
> @@ -190,4 +198,5 @@ const struct hci_dat_ops mipi_i3c_hci_dat_v1 = {
> .set_flags = hci_dat_v1_set_flags,
> .clear_flags = hci_dat_v1_clear_flags,
> .get_index = hci_dat_v1_get_index,
> + .restore = hci_dat_v1_restore,
> };
> --
> 2.51.0
>
>
> --
> linux-i3c mailing list
> linux-i3c at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-i3c
More information about the linux-i3c
mailing list