mirror of
https://github.com/torvalds/linux.git
synced 2026-03-13 23:46:14 +01:00
i3c: mipi-i3c-hci: Introduce helper to restore DAT
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@intel.com> Reviewed-by: Frank Li <Frank.Li@nxp.com> Link: https://patch.msgid.link/20260113072702.16268-10-adrian.hunter@intel.com Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
This commit is contained in:
parent
a372cfac05
commit
f180524a48
2 changed files with 10 additions and 0 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue