usb: chipidea: add identification registers access APIs
Using hw_write_id_reg and hw_read_id_reg to write and read identification registers contents, they can be used to get controller information, change some system configurations, and so on. Reviewed-by: Stefan Agner <stefan@agner.ch> Signed-off-by: Peter Chen <peter.chen@freescale.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
8721a752cc
commit
655d32e9b2
|
@ -29,6 +29,15 @@
|
|||
/******************************************************************************
|
||||
* REGISTERS
|
||||
*****************************************************************************/
|
||||
/* Identification Registers */
|
||||
#define ID_ID 0x0
|
||||
#define ID_HWGENERAL 0x4
|
||||
#define ID_HWHOST 0x8
|
||||
#define ID_HWDEVICE 0xc
|
||||
#define ID_HWTXBUF 0x10
|
||||
#define ID_HWRXBUF 0x14
|
||||
#define ID_SBUSCFG 0x90
|
||||
|
||||
/* register indices */
|
||||
enum ci_hw_regs {
|
||||
CAP_CAPLENGTH,
|
||||
|
@ -253,6 +262,36 @@ static inline void ci_role_stop(struct ci_hdrc *ci)
|
|||
ci->roles[role]->stop(ci);
|
||||
}
|
||||
|
||||
/**
|
||||
* hw_read_id_reg: reads from a identification register
|
||||
* @ci: the controller
|
||||
* @offset: offset from the beginning of identification registers region
|
||||
* @mask: bitfield mask
|
||||
*
|
||||
* This function returns register contents
|
||||
*/
|
||||
static inline u32 hw_read_id_reg(struct ci_hdrc *ci, u32 offset, u32 mask)
|
||||
{
|
||||
return ioread32(ci->hw_bank.abs + offset) & mask;
|
||||
}
|
||||
|
||||
/**
|
||||
* hw_write_id_reg: writes to a identification register
|
||||
* @ci: the controller
|
||||
* @offset: offset from the beginning of identification registers region
|
||||
* @mask: bitfield mask
|
||||
* @data: new value
|
||||
*/
|
||||
static inline void hw_write_id_reg(struct ci_hdrc *ci, u32 offset,
|
||||
u32 mask, u32 data)
|
||||
{
|
||||
if (~mask)
|
||||
data = (ioread32(ci->hw_bank.abs + offset) & ~mask)
|
||||
| (data & mask);
|
||||
|
||||
iowrite32(data, ci->hw_bank.abs + offset);
|
||||
}
|
||||
|
||||
/**
|
||||
* hw_read: reads from a hw register
|
||||
* @ci: the controller
|
||||
|
|
Loading…
Reference in a new issue