lib: irqchip/plic: Add priority save/restore helpers

These can be used by platform code to save the PLIC priority state, if
it would otherwise be lost during non-retentive suspend. The platform
is responsible for allocating all necessary storage.

As a space optimization, store the saved priority values as 8-bit
integers, since that is large enough to hold any priority value on the
relevant platforms.

Reviewed-by: Anup Patel <anup@brainfault.org>
Signed-off-by: Samuel Holland <samuel@sholland.org>
This commit is contained in:
Samuel Holland
2022-06-12 20:03:52 -05:00
committed by Anup Patel
parent 415ecf28f7
commit 2b79b694a8
2 changed files with 24 additions and 0 deletions

View File

@@ -17,6 +17,11 @@ struct plic_data {
unsigned long num_src;
};
/* So far, priorities on all consumers of these functions fit in 8 bits. */
void plic_priority_save(const struct plic_data *plic, u8 *priority);
void plic_priority_restore(const struct plic_data *plic, const u8 *priority);
void plic_context_save(const struct plic_data *plic, int context_id,
u32 *enable, u32 *threshold);