123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- /*
- * Copyright (c) 2024, Rockchip, Inc. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
- #ifndef PLAT_PM_HELPERS_H
- #define PLAT_PM_HELPERS_H
- #include <stdint.h>
- /**
- * Use this macro to define a register region.
- * start: start offset from the base address.
- * end: end offset from the base address.
- * stride: stride of registers in region.
- * base: base address of registers in region.
- * wmsk: write mask of registers in region.
- */
- #define REG_REGION(_start, _end, _stride, _base, _wmsk) \
- { \
- .start = (_base) + (_start), \
- .end = (_base) + (_end), \
- .stride = _stride, \
- .wmsk = _wmsk \
- }
- struct reg_region {
- /* Start address of region */
- uint32_t start;
- /* End address of region */
- uint32_t end;
- /* Stride of registers in region */
- uint32_t stride;
- /* Write mask of registers in region */
- uint32_t wmsk;
- /* Buffer to save/restore registers in region */
- uint32_t *buf;
- };
- void rockchip_alloc_region_mem(struct reg_region *rgns, uint32_t rgn_num);
- void rockchip_reg_rgn_save(struct reg_region *rgns, uint32_t rgn_num);
- void rockchip_reg_rgn_restore(struct reg_region *rgns, uint32_t rgn_num);
- void rockchip_reg_rgn_restore_reverse(struct reg_region *rgns, uint32_t rgn_num);
- void rockchip_regs_dump(uint32_t base,
- uint32_t start_offset,
- uint32_t end_offset,
- uint32_t stride);
- void rockchip_dump_reg_rgns(struct reg_region *rgns, uint32_t rgn_num);
- #endif /* PLAT_PM_HELPERS_H */
|