diff options
| author | Jani Nikula <jani.nikula@intel.com> | 2015-04-28 11:52:42 +0300 |
|---|---|---|
| committer | Jani Nikula <jani.nikula@intel.com> | 2015-05-05 13:08:34 +0300 |
| commit | 23b7f089207e44244ecc5757a2be5263db08581b (patch) | |
| tree | 38861f292c783a970851258e83c4098576744c3d | |
| parent | 30e84df0c110971cc07cc81fdbf66aa9e7840bc6 (diff) | |
lib: add 16 and 8 bit versions of INREG and OUTREG
Add INREG8, INREG16, OUTREG8, and OUTREG16. While at it, cleanup doc
comments of INREG and OUTREG.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
| -rw-r--r-- | lib/intel_io.h | 4 | ||||
| -rw-r--r-- | lib/intel_mmio.c | 77 |
2 files changed, 76 insertions, 5 deletions
diff --git a/lib/intel_io.h b/lib/intel_io.h index 04aa3fd4..1c3b4445 100644 --- a/lib/intel_io.h +++ b/lib/intel_io.h @@ -43,7 +43,11 @@ void intel_register_write(uint32_t reg, uint32_t val); int intel_register_access_needs_fakewake(void); uint32_t INREG(uint32_t reg); +uint16_t INREG16(uint32_t reg); +uint8_t INREG8(uint32_t reg); void OUTREG(uint32_t reg, uint32_t val); +void OUTREG16(uint32_t reg, uint16_t val); +void OUTREG8(uint32_t reg, uint8_t val); /* sideband access functions from intel_iosf.c */ uint32_t intel_dpio_reg_read(uint32_t reg, int phy); diff --git a/lib/intel_mmio.c b/lib/intel_mmio.c index 9a2ee27b..be8f7d77 100644 --- a/lib/intel_mmio.c +++ b/lib/intel_mmio.c @@ -311,8 +311,8 @@ write_out: * INREG: * @reg: register offset * - * 32-bit read of the register at @offset. This function only works when the new - * register access helper is initialized with intel_register_access_init(). + * 32-bit read of the register at offset @reg. This function only works when the + * new register access helper is initialized with intel_register_access_init(). * * This function directly accesses the #mmio without safety checks. * @@ -325,12 +325,47 @@ uint32_t INREG(uint32_t reg) } /** - * OUTRET: + * INREG16: + * @reg: register offset + * + * 16-bit read of the register at offset @reg. This function only works when the + * new register access helper is initialized with intel_register_access_init(). + * + * This function directly accesses the #mmio without safety checks. + * + * Returns: + * The value read from the register. + */ +uint16_t INREG16(uint32_t reg) +{ + return *(volatile uint16_t *)((volatile char *)mmio + reg); +} + +/** + * INREG8: + * @reg: register offset + * + * 8-bit read of the register at offset @reg. This function only works when the + * new register access helper is initialized with intel_register_access_init(). + * + * This function directly accesses the #mmio without safety checks. + * + * Returns: + * The value read from the register. + */ +uint8_t INREG8(uint32_t reg) +{ + return *((volatile uint8_t *)mmio + reg); +} + +/** + * OUTREG: * @reg: register offset * @val: value to write * - * 32-bit write to the register at @offset. This function only works when the new - * register access helper is initialized with intel_register_access_init(). + * 32-bit write of @val to the register at offset @reg. This function only works + * when the new register access helper is initialized with + * intel_register_access_init(). * * This function directly accesses the #mmio without safety checks. */ @@ -338,3 +373,35 @@ void OUTREG(uint32_t reg, uint32_t val) { *(volatile uint32_t *)((volatile char *)mmio + reg) = val; } + +/** + * OUTREG16: + * @reg: register offset + * @val: value to write + * + * 16-bit write of @val to the register at offset @reg. This function only works + * when the new register access helper is initialized with + * intel_register_access_init(). + * + * This function directly accesses the #mmio without safety checks. + */ +void OUTREG16(uint32_t reg, uint16_t val) +{ + *(volatile uint16_t *)((volatile char *)mmio + reg) = val; +} + +/** + * OUTREG8: + * @reg: register offset + * @val: value to write + * + * 8-bit write of @val to the register at offset @reg. This function only works + * when the new register access helper is initialized with + * intel_register_access_init(). + * + * This function directly accesses the #mmio without safety checks. + */ +void OUTREG8(uint32_t reg, uint8_t val) +{ + *((volatile uint8_t *)mmio + reg) = val; +} |
