mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-27 10:14:57 +00:00
baytrail: use common code for iosf accessors
The same sequence is used regardless of the port
being read or written. Therefore, use the same
implementation for reading or writing to a port.
BUG=None
BRANCH=None
TEST=Built and booted through depthcharge. Dev and recovery
screens still work. Nothing bizarre in console output.
Change-Id: I1a64b54b50472fa7d601e199653eb4a76accf910
Signed-off-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/175441
Reviewed-by: Duncan Laurie <dlaurie@chromium.org>
Reviewed-on: http://review.coreboot.org/4922
Reviewed-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
Tested-by: build bot (Jenkins)
This commit is contained in:
committed by
Aaron Durbin
parent
bc69ae9823
commit
4a082c669c
@@ -42,35 +42,42 @@ static inline uint32_t read_iosf_reg(int reg)
|
||||
}
|
||||
#endif
|
||||
|
||||
uint32_t iosf_bunit_read(int reg)
|
||||
/* Common sequences for all the port accesses. */
|
||||
static uint32_t iosf_read_port(uint32_t cr, int reg)
|
||||
{
|
||||
uint32_t cr = IOSF_OPCODE(IOSF_OP_READ_BUNIT) |
|
||||
IOSF_PORT(IOSF_PORT_BUNIT) | IOSF_REG(reg) | IOSF_BYTE_EN;
|
||||
|
||||
cr |= IOSF_REG(reg) | IOSF_BYTE_EN;
|
||||
write_iosf_reg(MCRX_REG, IOSF_REG_UPPER(reg));
|
||||
write_iosf_reg(MCR_REG, cr);
|
||||
return read_iosf_reg(MDR_REG);
|
||||
}
|
||||
|
||||
void iosf_bunit_write(int reg, uint32_t val)
|
||||
static void iosf_write_port(uint32_t cr, int reg, uint32_t val)
|
||||
{
|
||||
uint32_t cr = IOSF_OPCODE(IOSF_OP_WRITE_BUNIT) |
|
||||
IOSF_PORT(IOSF_PORT_BUNIT) | IOSF_REG(reg) | IOSF_BYTE_EN;
|
||||
|
||||
cr |= IOSF_REG(reg) | IOSF_BYTE_EN;
|
||||
write_iosf_reg(MDR_REG, val);
|
||||
write_iosf_reg(MCRX_REG, IOSF_REG_UPPER(reg));
|
||||
write_iosf_reg(MCR_REG, cr);
|
||||
}
|
||||
|
||||
uint32_t iosf_bunit_read(int reg)
|
||||
{
|
||||
uint32_t cr = IOSF_OPCODE(IOSF_OP_READ_BUNIT) |
|
||||
IOSF_PORT(IOSF_PORT_BUNIT);
|
||||
return iosf_read_port(cr, reg);
|
||||
}
|
||||
|
||||
void iosf_bunit_write(int reg, uint32_t val)
|
||||
{
|
||||
uint32_t cr = IOSF_OPCODE(IOSF_OP_WRITE_BUNIT) |
|
||||
IOSF_PORT(IOSF_PORT_BUNIT);
|
||||
iosf_write_port(cr, reg, val);
|
||||
}
|
||||
|
||||
uint32_t iosf_dunit_read(int reg)
|
||||
{
|
||||
uint32_t cr = IOSF_OPCODE(IOSF_OP_READ_SYSMEMC) |
|
||||
IOSF_PORT(IOSF_PORT_SYSMEMC) | IOSF_REG(reg) |
|
||||
IOSF_BYTE_EN;
|
||||
|
||||
write_iosf_reg(MCRX_REG, IOSF_REG_UPPER(reg));
|
||||
write_iosf_reg(MCR_REG, cr);
|
||||
return read_iosf_reg(MDR_REG);
|
||||
IOSF_PORT(IOSF_PORT_SYSMEMC);
|
||||
return iosf_read_port(cr, reg);
|
||||
}
|
||||
|
||||
uint32_t iosf_dunit_ch0_read(int reg)
|
||||
@@ -81,109 +88,69 @@ uint32_t iosf_dunit_ch0_read(int reg)
|
||||
uint32_t iosf_dunit_ch1_read(int reg)
|
||||
{
|
||||
uint32_t cr = IOSF_OPCODE(IOSF_OP_READ_SYSMEMC) |
|
||||
IOSF_PORT(IOSF_PORT_DUNIT_CH1) | IOSF_REG(reg) |
|
||||
IOSF_BYTE_EN;
|
||||
|
||||
write_iosf_reg(MCRX_REG, IOSF_REG_UPPER(reg));
|
||||
write_iosf_reg(MCR_REG, cr);
|
||||
return read_iosf_reg(MDR_REG);
|
||||
IOSF_PORT(IOSF_PORT_DUNIT_CH1);
|
||||
return iosf_read_port(cr, reg);
|
||||
}
|
||||
|
||||
void iosf_dunit_write(int reg, uint32_t val)
|
||||
{
|
||||
uint32_t cr = IOSF_OPCODE(IOSF_OP_WRITE_SYSMEMC) |
|
||||
IOSF_PORT(IOSF_PORT_SYSMEMC) | IOSF_REG(reg) |
|
||||
IOSF_BYTE_EN;
|
||||
|
||||
write_iosf_reg(MDR_REG, val);
|
||||
write_iosf_reg(MCRX_REG, IOSF_REG_UPPER(reg));
|
||||
write_iosf_reg(MCR_REG, cr);
|
||||
IOSF_PORT(IOSF_PORT_SYSMEMC);
|
||||
iosf_write_port(cr, reg, val);
|
||||
}
|
||||
|
||||
uint32_t iosf_punit_read(int reg)
|
||||
{
|
||||
uint32_t cr = IOSF_OPCODE(IOSF_OP_READ_PMC) |
|
||||
IOSF_PORT(IOSF_PORT_PMC) | IOSF_REG(reg) |
|
||||
IOSF_BYTE_EN;
|
||||
|
||||
write_iosf_reg(MCRX_REG, IOSF_REG_UPPER(reg));
|
||||
write_iosf_reg(MCR_REG, cr);
|
||||
return read_iosf_reg(MDR_REG);
|
||||
IOSF_PORT(IOSF_PORT_PMC);
|
||||
return iosf_read_port(cr, reg);
|
||||
}
|
||||
|
||||
void iosf_punit_write(int reg, uint32_t val)
|
||||
{
|
||||
uint32_t cr = IOSF_OPCODE(IOSF_OP_WRITE_PMC) |
|
||||
IOSF_PORT(IOSF_PORT_PMC) | IOSF_REG(reg) |
|
||||
IOSF_BYTE_EN;
|
||||
|
||||
write_iosf_reg(MDR_REG, val);
|
||||
write_iosf_reg(MCRX_REG, IOSF_REG_UPPER(reg));
|
||||
write_iosf_reg(MCR_REG, cr);
|
||||
IOSF_PORT(IOSF_PORT_PMC);
|
||||
iosf_write_port(cr, reg, val);
|
||||
}
|
||||
|
||||
uint32_t iosf_usbphy_read(int reg)
|
||||
{
|
||||
uint32_t cr = IOSF_OPCODE(IOSF_OP_READ_USBPHY) |
|
||||
IOSF_PORT(IOSF_PORT_USBPHY) | IOSF_REG(reg) |
|
||||
IOSF_BYTE_EN;
|
||||
|
||||
write_iosf_reg(MCRX_REG, IOSF_REG_UPPER(reg));
|
||||
write_iosf_reg(MCR_REG, cr);
|
||||
return read_iosf_reg(MDR_REG);
|
||||
IOSF_PORT(IOSF_PORT_USBPHY);
|
||||
return iosf_read_port(cr, reg);
|
||||
}
|
||||
|
||||
void iosf_usbphy_write(int reg, uint32_t val)
|
||||
{
|
||||
uint32_t cr = IOSF_OPCODE(IOSF_OP_WRITE_USBPHY) |
|
||||
IOSF_PORT(IOSF_PORT_USBPHY) | IOSF_REG(reg) |
|
||||
IOSF_BYTE_EN;
|
||||
|
||||
write_iosf_reg(MDR_REG, val);
|
||||
write_iosf_reg(MCRX_REG, IOSF_REG_UPPER(reg));
|
||||
write_iosf_reg(MCR_REG, cr);
|
||||
IOSF_PORT(IOSF_PORT_USBPHY);
|
||||
return iosf_write_port(cr, reg, val);
|
||||
}
|
||||
|
||||
uint32_t iosf_ushphy_read(int reg)
|
||||
{
|
||||
uint32_t cr = IOSF_OPCODE(IOSF_OP_READ_USHPHY) |
|
||||
IOSF_PORT(IOSF_PORT_USHPHY) | IOSF_REG(reg) |
|
||||
IOSF_BYTE_EN;
|
||||
|
||||
write_iosf_reg(MCRX_REG, IOSF_REG_UPPER(reg));
|
||||
write_iosf_reg(MCR_REG, cr);
|
||||
return read_iosf_reg(MDR_REG);
|
||||
IOSF_PORT(IOSF_PORT_USHPHY);
|
||||
return iosf_read_port(cr, reg);
|
||||
}
|
||||
|
||||
void iosf_ushphy_write(int reg, uint32_t val)
|
||||
{
|
||||
uint32_t cr = IOSF_OPCODE(IOSF_OP_WRITE_USHPHY) |
|
||||
IOSF_PORT(IOSF_PORT_USHPHY) | IOSF_REG(reg) |
|
||||
IOSF_BYTE_EN;
|
||||
|
||||
write_iosf_reg(MDR_REG, val);
|
||||
write_iosf_reg(MCRX_REG, IOSF_REG_UPPER(reg));
|
||||
write_iosf_reg(MCR_REG, cr);
|
||||
IOSF_PORT(IOSF_PORT_USHPHY);
|
||||
return iosf_write_port(cr, reg, val);
|
||||
}
|
||||
|
||||
uint32_t iosf_lpss_read(int reg)
|
||||
{
|
||||
uint32_t cr = IOSF_OPCODE(IOSF_OP_READ_LPSS) |
|
||||
IOSF_PORT(IOSF_PORT_LPSS) | IOSF_REG(reg) |
|
||||
IOSF_BYTE_EN;
|
||||
|
||||
write_iosf_reg(MCRX_REG, IOSF_REG_UPPER(reg));
|
||||
write_iosf_reg(MCR_REG, cr);
|
||||
return read_iosf_reg(MDR_REG);
|
||||
IOSF_PORT(IOSF_PORT_LPSS);
|
||||
return iosf_read_port(cr, reg);
|
||||
}
|
||||
|
||||
void iosf_lpss_write(int reg, uint32_t val)
|
||||
{
|
||||
uint32_t cr = IOSF_OPCODE(IOSF_OP_WRITE_LPSS) |
|
||||
IOSF_PORT(IOSF_PORT_LPSS) | IOSF_REG(reg) |
|
||||
IOSF_BYTE_EN;
|
||||
|
||||
write_iosf_reg(MDR_REG, val);
|
||||
write_iosf_reg(MCRX_REG, IOSF_REG_UPPER(reg));
|
||||
write_iosf_reg(MCR_REG, cr);
|
||||
IOSF_PORT(IOSF_PORT_LPSS);
|
||||
return iosf_write_port(cr, reg, val);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user