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>
This commit is contained in:
Jani Nikula 2015-04-28 11:52:42 +03:00
parent 30e84df0c1
commit 23b7f08920
2 changed files with 76 additions and 5 deletions

View File

@ -43,7 +43,11 @@ void intel_register_write(uint32_t reg, uint32_t val);
int intel_register_access_needs_fakewake(void); int intel_register_access_needs_fakewake(void);
uint32_t INREG(uint32_t reg); 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 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 */ /* sideband access functions from intel_iosf.c */
uint32_t intel_dpio_reg_read(uint32_t reg, int phy); uint32_t intel_dpio_reg_read(uint32_t reg, int phy);

View File

@ -311,8 +311,8 @@ write_out:
* INREG: * INREG:
* @reg: register offset * @reg: register offset
* *
* 32-bit read of the register at @offset. This function only works when the new * 32-bit read of the register at offset @reg. This function only works when the
* register access helper is initialized with intel_register_access_init(). * new register access helper is initialized with intel_register_access_init().
* *
* This function directly accesses the #mmio without safety checks. * 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 * @reg: register offset
* @val: value to write * @val: value to write
* *
* 32-bit write to the register at @offset. This function only works when the new * 32-bit write of @val to the register at offset @reg. This function only works
* register access helper is initialized with intel_register_access_init(). * when the new register access helper is initialized with
* intel_register_access_init().
* *
* This function directly accesses the #mmio without safety checks. * 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; *(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;
}