| /* |
| * Copyright (c) 2020 Nuvoton Technology Corporation. |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #ifndef _NUVOTON_NPCX_REG_ACCESS_H |
| #define _NUVOTON_NPCX_REG_ACCESS_H |
| |
| /* |
| * NPCX register bit/field access operations |
| */ |
| #define IS_BIT_SET(reg, bit) (((reg >> bit) & (0x1)) != 0) |
| |
| #define GET_POS_FIELD(pos, size) pos |
| #define GET_SIZE_FIELD(pos, size) size |
| #define FIELD_POS(field) GET_POS_##field |
| #define FIELD_SIZE(field) GET_SIZE_##field |
| |
| #define GET_FIELD(reg, field) \ |
| _GET_FIELD_(reg, FIELD_POS(field), FIELD_SIZE(field)) |
| #define _GET_FIELD_(reg, f_pos, f_size) (((reg)>>(f_pos)) & ((1<<(f_size))-1)) |
| |
| #define SET_FIELD(reg, field, value) \ |
| _SET_FIELD_(reg, FIELD_POS(field), FIELD_SIZE(field), value) |
| #define _SET_FIELD_(reg, f_pos, f_size, value) \ |
| ((reg) = ((reg) & (~(((1 << (f_size))-1) << (f_pos)))) \ |
| | ((value) << (f_pos))) |
| |
| #endif /* _NUVOTON_NPCX_REG_ACCESS_H */ |