1 /* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */ 2 /* 3 * Copyright (c) 2023 Rockchip Electronics Co., Ltd. 4 */ 5 6 #ifndef RKPM_HELPERS_H 7 #define RKPM_HELPERS_H 8 9 #define REG_MSK_SHIFT 16 10 11 #ifndef BIT 12 #define BIT(nr) (1U << (nr)) 13 #endif 14 15 #ifndef WMSK_BIT 16 #define WMSK_BIT(nr) BIT((nr) + REG_MSK_SHIFT) 17 #endif 18 19 /* set one bit with write mask */ 20 #ifndef BIT_WITH_WMSK 21 #define BIT_WITH_WMSK(nr) (BIT(nr) | WMSK_BIT(nr)) 22 #endif 23 24 #ifndef BITS_SHIFT 25 #define BITS_SHIFT(bits, shift) ((bits) << (shift)) 26 #endif 27 28 #ifndef BITS_WMSK 29 #define BITS_WMSK(msk, shift) \ 30 ((msk) << ((shift) + REG_MSK_SHIFT)) 31 #endif 32 33 #ifndef BITS_WITH_WMASK 34 #define BITS_WITH_WMASK(bits, msk, shift) \ 35 (BITS_SHIFT(bits, shift) | BITS_SHIFT(msk, ((shift) + REG_MSK_SHIFT))) 36 #endif 37 38 #ifndef BIT_SET_WMSK 39 #define BIT_SET_WMSK(nr) BIT_WITH_WMSK(nr) 40 #endif 41 42 #ifndef BIT_CLR_WMSK 43 #define BIT_CLR_WMSK(nr) WMSK_BIT(nr) 44 #endif 45 46 #ifndef WITH_16BITS_WMSK 47 #define WITH_16BITS_WMSK(bits) (0xffff0000 | (bits)) 48 #endif 49 50 #define REG_REGION(_start, _end, _stride, _base, _wmsk) \ 51 .start = (_start), \ 52 .end = (_end), \ 53 .stride = (_stride), \ 54 .wmsk = (_wmsk), \ 55 .base = (_base), 56 57 struct reg_region { 58 void __iomem **base; 59 u32 start; 60 u32 end; 61 u32 stride; 62 u32 wmsk; 63 u32 *buf; 64 }; 65 66 void rkpm_alloc_region_mem(struct reg_region *rgns, u32 rgn_num); 67 void rkpm_region_mem_init(u32 size); 68 void rkpm_reg_rgn_save(struct reg_region *rgns, u32 rgn_num); 69 void rkpm_reg_rgn_restore(struct reg_region *rgns, u32 rgn_num); 70 void rkpm_reg_rgn_restore_reverse(struct reg_region *rgns, u32 rgn_num); 71 void rkpm_dump_reg_rgns(struct reg_region *rgns, u32 rgn_num); 72 73 void rkpm_printch(int c); 74 void rkpm_printstr(const char *s); 75 void rkpm_printhex(u32 hex); 76 void rkpm_printdec(int dec); 77 void rkpm_regs_dump(void __iomem *base, 78 u32 start_offset, 79 u32 end_offset, 80 u32 stride); 81 82 void rkpm_raw_udelay(int us); 83 #endif 84