1 /* 2 * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. 3 * 4 * Permission to use, copy, modify, and/or distribute this software for any 5 * purpose with or without fee is hereby granted, provided that the above 6 * copyright notice and this permission notice appear in all copies. 7 * 8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15 */ 16 17 #ifndef __SEQ_H__ 18 #define __SEQ_H__ 19 20 #include "HALhwio.h" 21 22 23 24 /**** Register Ref Read ****/ 25 #define SEQ_INH(base, regtype, reg) \ 26 SEQ_##regtype##_INH(base, reg) 27 28 /**** Masked Register Read ****/ 29 #define SEQ_INMH(base, regtype, reg, mask) \ 30 SEQ_##regtype##_INMH(base, reg, mask) 31 32 33 /**** Ref Reg Field Read ****/ 34 #define SEQ_INFH(base, regtype, reg, fld) \ 35 (SEQ_##regtype##_INMH(base, reg, HWIO_FMSK(regtype, fld)) >> HWIO_SHFT(regtype, fld)) 36 37 38 /**** Ref Register Write ****/ 39 #define SEQ_OUTH(base, regtype, reg, val) \ 40 SEQ_##regtype##_OUTH(base, reg, val) 41 42 /**** Ref Register Masked Write ****/ 43 #define SEQ_OUTMH(base, regtype, reg, mask, val) \ 44 SEQ_##regtype##_OUTMH(base, reg, mask, val) 45 46 47 /**** Ref Register Field Write ****/ 48 #define SEQ_OUTFH(base, regtype, reg, fld, val) \ 49 SEQ_##regtype##_OUTMH(base, reg, HWIO_FMSK(regtype, fld), val << HWIO_SHFT(regtype, fld)) 50 51 52 /**** seq_msg() **** 53 54 typedef enum { 55 DEBUG, 56 INFO, 57 WARNING, 58 ERROR, 59 FATAL 60 } SeverityLevel ; 61 62 void seq_msg(SeverityLevel severity, unsigned int msg_id, const char *format_str, ... ); 63 64 */ 65 66 /************ seq_wait() ************/ 67 68 typedef enum { 69 SEC, 70 MS, 71 US, 72 NS 73 } SEQ_TimeUnit; 74 75 extern void seq_wait(uint32 time_value, SEQ_TimeUnit time_unit); 76 77 78 /************ seq_poll() ************/ 79 extern uint32 seq_poll(uint32 reg_offset, uint32 expect_value, uint32 value_mask, uint32 value_shift, uint32 max_poll_cnt); 80 81 #endif /* __SEQ_H__ */ 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101