lynxpoint: Add configuration option for SATA gen3 DTLE registers.
Allow DTLE DATA / EDGE registers to be configured in board-specific devicetree. BUG=chrome-os-partner:21712. TEST=Manual. Set DTLE configuration on Peppy, read back registers to verify. BRANCH=FalcoPeppy. Change-Id: I82307d08c9cf73461db3ac7fb875a4fe70d6f9ea Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/65716 Reviewed-by: Marc Jones <marc.jones@se-eng.com>
This commit is contained in:
parent
7d0edf607e
commit
03e7fa4261
3 changed files with 36 additions and 0 deletions
|
|
@ -72,6 +72,9 @@ struct southbridge_intel_lynxpoint_config {
|
|||
uint8_t sata_port_map;
|
||||
uint32_t sata_port0_gen3_tx;
|
||||
uint32_t sata_port1_gen3_tx;
|
||||
uint32_t sata_port0_gen3_dtle;
|
||||
uint32_t sata_port1_gen3_dtle;
|
||||
|
||||
/* SATA DEVSLP Mux
|
||||
* 0 = port 0 DEVSLP on DEVSLP0/GPIO33
|
||||
* 1 = port 3 DEVSLP on DEVSLP0/GPIO33
|
||||
|
|
|
|||
|
|
@ -350,6 +350,14 @@ int early_pch_init(const void *gpio_map,
|
|||
/* SATA IOBP Registers */
|
||||
#define SATA_IOBP_SP0G3IR 0xea000151
|
||||
#define SATA_IOBP_SP1G3IR 0xea000051
|
||||
#define SATA_IOBP_SP0DTLE_DATA 0xea002550
|
||||
#define SATA_IOBP_SP0DTLE_EDGE 0xea002554
|
||||
#define SATA_IOBP_SP1DTLE_DATA 0xea002750
|
||||
#define SATA_IOBP_SP1DTLE_EDGE 0xea002754
|
||||
|
||||
#define SATA_DTLE_MASK 0xF
|
||||
#define SATA_DTLE_DATA_SHIFT 24
|
||||
#define SATA_DTLE_EDGE_SHIFT 16
|
||||
|
||||
/* EHCI PCI Registers */
|
||||
#define EHCI_PWR_CTL_STS 0x54
|
||||
|
|
|
|||
|
|
@ -233,6 +233,31 @@ static void sata_init(struct device *dev)
|
|||
pch_iobp_update(SATA_IOBP_SP1G3IR, 0,
|
||||
config->sata_port1_gen3_tx);
|
||||
|
||||
/* Set Gen3 DTLE DATA / EDGE registers if needed */
|
||||
if (config->sata_port0_gen3_dtle) {
|
||||
pch_iobp_update(SATA_IOBP_SP0DTLE_DATA,
|
||||
~(SATA_DTLE_MASK << SATA_DTLE_DATA_SHIFT),
|
||||
(config->sata_port0_gen3_dtle & SATA_DTLE_MASK)
|
||||
<< SATA_DTLE_DATA_SHIFT);
|
||||
|
||||
pch_iobp_update(SATA_IOBP_SP0DTLE_EDGE,
|
||||
~(SATA_DTLE_MASK << SATA_DTLE_EDGE_SHIFT),
|
||||
(config->sata_port0_gen3_dtle & SATA_DTLE_MASK)
|
||||
<< SATA_DTLE_EDGE_SHIFT);
|
||||
}
|
||||
|
||||
if (config->sata_port1_gen3_dtle) {
|
||||
pch_iobp_update(SATA_IOBP_SP1DTLE_DATA,
|
||||
~(SATA_DTLE_MASK << SATA_DTLE_DATA_SHIFT),
|
||||
(config->sata_port1_gen3_dtle & SATA_DTLE_MASK)
|
||||
<< SATA_DTLE_DATA_SHIFT);
|
||||
|
||||
pch_iobp_update(SATA_IOBP_SP1DTLE_EDGE,
|
||||
~(SATA_DTLE_MASK << SATA_DTLE_EDGE_SHIFT),
|
||||
(config->sata_port1_gen3_dtle & SATA_DTLE_MASK)
|
||||
<< SATA_DTLE_EDGE_SHIFT);
|
||||
}
|
||||
|
||||
/* Additional Programming Requirements */
|
||||
/* Power Optimizer */
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue