diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/xscom.h | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/include/xscom.h b/include/xscom.h index f955021..bad9140 100644 --- a/include/xscom.h +++ b/include/xscom.h @@ -208,9 +208,22 @@ * Error codes TBD, 0 = success */ +/* Use only in select places where multiple SCOMs are time/latency sensitive */ +extern void _xscom_lock(void); +extern int _xscom_read(uint32_t partid, uint64_t pcb_addr, uint64_t *val, bool take_lock); +extern int _xscom_write(uint32_t partid, uint64_t pcb_addr, uint64_t val, bool take_lock); +extern void _xscom_unlock(void); + + /* Targeted SCOM access */ -extern int xscom_read(uint32_t partid, uint64_t pcb_addr, uint64_t *val); -extern int xscom_write(uint32_t partid, uint64_t pcb_addr, uint64_t val); +static inline int xscom_read(uint32_t partid, uint64_t pcb_addr, uint64_t *val) +{ + return _xscom_read(partid, pcb_addr, val, true); +} +static inline int xscom_write(uint32_t partid, uint64_t pcb_addr, uint64_t val) { + return _xscom_write(partid, pcb_addr, val, true); +} + /* This chip SCOM access */ extern int xscom_readme(uint64_t pcb_addr, uint64_t *val); |