ec/it*: Add ESPI definitions
This commit is contained in:
parent
87e16205d6
commit
b0c196d4b9
61
src/ec/it5570e/espi.c
Normal file
61
src/ec/it5570e/espi.c
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
#include <common/debug.h>
|
||||||
|
#include <ec/espi.h>
|
||||||
|
|
||||||
|
// Not all wires are defined or implemented
|
||||||
|
// Index 2 - AP to EC
|
||||||
|
struct VirtualWire __code VW_SLP_S3_N = VIRTUAL_WIRE(2, 0);
|
||||||
|
struct VirtualWire __code VW_SLP_S4_N = VIRTUAL_WIRE(2, 1);
|
||||||
|
struct VirtualWire __code VW_SLP_S5_N = VIRTUAL_WIRE(2, 2);
|
||||||
|
// Index 3 - AP to EC
|
||||||
|
struct VirtualWire __code VW_SUS_STAT_N = VIRTUAL_WIRE(3, 0);
|
||||||
|
struct VirtualWire __code VW_PLTRST_N = VIRTUAL_WIRE(3, 1);
|
||||||
|
struct VirtualWire __code VW_OOB_RST_WARN = VIRTUAL_WIRE(3, 2);
|
||||||
|
// Index 4 - EC to AP
|
||||||
|
struct VirtualWire __code VW_OOB_RST_ACK = VIRTUAL_WIRE(4, 0);
|
||||||
|
struct VirtualWire __code VW_WAKE_N = VIRTUAL_WIRE(4, 2);
|
||||||
|
struct VirtualWire __code VW_PME_N = VIRTUAL_WIRE(4, 3);
|
||||||
|
// Index 5 - EC to AP
|
||||||
|
struct VirtualWire __code VW_BOOT_LOAD_DONE = VIRTUAL_WIRE(5, 0);
|
||||||
|
struct VirtualWire __code VW_ERROR_FATAL = VIRTUAL_WIRE(5, 1);
|
||||||
|
struct VirtualWire __code VW_ERROR_NONFATAL = VIRTUAL_WIRE(5, 2);
|
||||||
|
struct VirtualWire __code VW_BOOT_LOAD_STATUS = VIRTUAL_WIRE(5, 3);
|
||||||
|
// Index 6 - EC to AP
|
||||||
|
struct VirtualWire __code VW_SCI_N = VIRTUAL_WIRE(6, 0);
|
||||||
|
struct VirtualWire __code VW_SMI_N = VIRTUAL_WIRE(6, 1);
|
||||||
|
struct VirtualWire __code VW_RCIN_N = VIRTUAL_WIRE(6, 2);
|
||||||
|
struct VirtualWire __code VW_HOST_RST_ACK = VIRTUAL_WIRE(6, 3);
|
||||||
|
// Index 7 - AP to EC
|
||||||
|
struct VirtualWire __code VW_HOST_RST_WARN = VIRTUAL_WIRE(7, 0);
|
||||||
|
// Index 40 - EC to AP (platform specific)
|
||||||
|
struct VirtualWire __code VW_SUS_ACK_N = VIRTUAL_WIRE(40, 0);
|
||||||
|
// Index 41 - AP to EC (platform specific)
|
||||||
|
struct VirtualWire __code VW_SUS_WARN_N = VIRTUAL_WIRE(41, 0);
|
||||||
|
struct VirtualWire __code VW_SUS_PWRDN_ACK = VIRTUAL_WIRE(41, 1);
|
||||||
|
|
||||||
|
enum VirtualWireState vw_get(struct VirtualWire * vw) __critical {
|
||||||
|
uint8_t index = *vw->index;
|
||||||
|
switch ((index >> vw->shift) & VWS_HIGH) {
|
||||||
|
case VWS_LOW:
|
||||||
|
return VWS_LOW;
|
||||||
|
case VWS_HIGH:
|
||||||
|
return VWS_HIGH;
|
||||||
|
default:
|
||||||
|
return VWS_INVALID;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void vw_set(struct VirtualWire * vw, enum VirtualWireState state) __critical {
|
||||||
|
uint8_t index = *vw->index;
|
||||||
|
index &= ~(VWS_HIGH << vw->shift);
|
||||||
|
switch (state) {
|
||||||
|
case VWS_LOW:
|
||||||
|
index |= VWS_LOW << vw->shift;
|
||||||
|
break;
|
||||||
|
case VWS_HIGH:
|
||||||
|
index |= VWS_HIGH << vw->shift;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
*vw->index = index;
|
||||||
|
}
|
123
src/ec/it5570e/include/ec/espi.h
Normal file
123
src/ec/it5570e/include/ec/espi.h
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
// SPDX-License-Identifier: GPL-3.0-only
|
||||||
|
|
||||||
|
#ifndef _EC_ESPI_H
|
||||||
|
#define _EC_ESPI_H
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#ifndef EC_ESPI
|
||||||
|
#define EC_ESPI 0
|
||||||
|
#endif // EC_ESPI
|
||||||
|
|
||||||
|
struct VirtualWire {
|
||||||
|
volatile uint8_t __xdata * index;
|
||||||
|
uint8_t shift;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define VIRTUAL_WIRE(INDEX, SHIFT) { \
|
||||||
|
.index = &VWIDX ## INDEX, \
|
||||||
|
.shift = SHIFT, \
|
||||||
|
}
|
||||||
|
|
||||||
|
enum VirtualWireState {
|
||||||
|
VWS_INVALID = 0x00,
|
||||||
|
VWS_LOW = 0x10,
|
||||||
|
VWS_HIGH = 0x11,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum VirtualWireState vw_get(struct VirtualWire * vw) __critical;
|
||||||
|
|
||||||
|
void vw_set(struct VirtualWire * vw, enum VirtualWireState state) __critical;
|
||||||
|
|
||||||
|
// Not all wires are defined or implemented
|
||||||
|
// Index 2 - AP to EC
|
||||||
|
extern struct VirtualWire __code VW_SLP_S3_N;
|
||||||
|
extern struct VirtualWire __code VW_SLP_S4_N;
|
||||||
|
extern struct VirtualWire __code VW_SLP_S5_N;
|
||||||
|
// Index 3 - AP to EC
|
||||||
|
extern struct VirtualWire __code VW_SUS_STAT_N;
|
||||||
|
extern struct VirtualWire __code VW_PLTRST_N;
|
||||||
|
extern struct VirtualWire __code VW_OOB_RST_WARN;
|
||||||
|
// Index 4 - EC to AP
|
||||||
|
extern struct VirtualWire __code VW_OOB_RST_ACK;
|
||||||
|
extern struct VirtualWire __code VW_WAKE_N;
|
||||||
|
extern struct VirtualWire __code VW_PME_N;
|
||||||
|
// Index 5 - EC to AP
|
||||||
|
extern struct VirtualWire __code VW_BOOT_LOAD_DONE;
|
||||||
|
extern struct VirtualWire __code VW_ERROR_FATAL;
|
||||||
|
extern struct VirtualWire __code VW_ERROR_NONFATAL;
|
||||||
|
extern struct VirtualWire __code VW_BOOT_LOAD_STATUS;
|
||||||
|
// Index 6 - EC to AP
|
||||||
|
extern struct VirtualWire __code VW_SCI_N;
|
||||||
|
extern struct VirtualWire __code VW_SMI_N;
|
||||||
|
extern struct VirtualWire __code VW_RCIN_N;
|
||||||
|
extern struct VirtualWire __code VW_HOST_RST_ACK;
|
||||||
|
// Index 7 - AP to EC
|
||||||
|
extern struct VirtualWire __code VW_HOST_RST_WARN;
|
||||||
|
// Index 40 - EC to AP (platform specific)
|
||||||
|
extern struct VirtualWire __code VW_SUS_ACK_N;
|
||||||
|
// Index 41 - AP to EC (platform specific)
|
||||||
|
extern struct VirtualWire __code VW_SUS_WARN_N;
|
||||||
|
extern struct VirtualWire __code VW_SUS_PWRDN_ACK;
|
||||||
|
|
||||||
|
// General capabilities and configurations
|
||||||
|
volatile uint8_t __xdata __at(0x3107) ESGCAC0;
|
||||||
|
volatile uint8_t __xdata __at(0x3106) ESGCAC1;
|
||||||
|
volatile uint8_t __xdata __at(0x3105) ESGCAC2;
|
||||||
|
volatile uint8_t __xdata __at(0x3104) ESGCAC3;
|
||||||
|
|
||||||
|
// Channel 0 capabilities and configurations
|
||||||
|
volatile uint8_t __xdata __at(0x310B) ESC0CAC0;
|
||||||
|
volatile uint8_t __xdata __at(0x310A) ESC0CAC1;
|
||||||
|
volatile uint8_t __xdata __at(0x3109) ESC0CAC2;
|
||||||
|
volatile uint8_t __xdata __at(0x3108) ESC0CAC3;
|
||||||
|
|
||||||
|
// Channel 1 capabilities and configurations
|
||||||
|
volatile uint8_t __xdata __at(0x310F) ESC1CAC0;
|
||||||
|
volatile uint8_t __xdata __at(0x310E) ESC1CAC1;
|
||||||
|
volatile uint8_t __xdata __at(0x310D) ESC1CAC2;
|
||||||
|
volatile uint8_t __xdata __at(0x310C) ESC1CAC3;
|
||||||
|
|
||||||
|
// Channel 2 capabilities and configurations
|
||||||
|
volatile uint8_t __xdata __at(0x3113) ESC2CAC0;
|
||||||
|
volatile uint8_t __xdata __at(0x3112) ESC2CAC1;
|
||||||
|
volatile uint8_t __xdata __at(0x3111) ESC2CAC2;
|
||||||
|
volatile uint8_t __xdata __at(0x3110) ESC2CAC3;
|
||||||
|
|
||||||
|
// Channel 3 capabilities and configurations
|
||||||
|
volatile uint8_t __xdata __at(0x3117) ESC3CAC0;
|
||||||
|
volatile uint8_t __xdata __at(0x3116) ESC3CAC1;
|
||||||
|
volatile uint8_t __xdata __at(0x3115) ESC3CAC2;
|
||||||
|
volatile uint8_t __xdata __at(0x3114) ESC3CAC3;
|
||||||
|
|
||||||
|
// eSPI PC control
|
||||||
|
volatile uint8_t __xdata __at(0x3190) ESPCTRL0;
|
||||||
|
|
||||||
|
// eSPI general control
|
||||||
|
volatile uint8_t __xdata __at(0x31A0) ESGCTRL0;
|
||||||
|
volatile uint8_t __xdata __at(0x31A1) ESGCTRL1;
|
||||||
|
volatile uint8_t __xdata __at(0x31A2) ESGCTRL2;
|
||||||
|
volatile uint8_t __xdata __at(0x31A3) ESGCTRL3;
|
||||||
|
|
||||||
|
// Virtual wires
|
||||||
|
volatile uint8_t __xdata __at(0x3200) VWIDX0;
|
||||||
|
volatile uint8_t __xdata __at(0x3202) VWIDX2;
|
||||||
|
volatile uint8_t __xdata __at(0x3203) VWIDX3;
|
||||||
|
volatile uint8_t __xdata __at(0x3204) VWIDX4;
|
||||||
|
volatile uint8_t __xdata __at(0x3205) VWIDX5;
|
||||||
|
volatile uint8_t __xdata __at(0x3206) VWIDX6;
|
||||||
|
volatile uint8_t __xdata __at(0x3207) VWIDX7;
|
||||||
|
|
||||||
|
// Virtual wires at 0x40
|
||||||
|
volatile uint8_t __xdata __at(0x3240) VWIDX40;
|
||||||
|
volatile uint8_t __xdata __at(0x3241) VWIDX41;
|
||||||
|
volatile uint8_t __xdata __at(0x3242) VWIDX42;
|
||||||
|
|
||||||
|
// Virtual wire control
|
||||||
|
volatile uint8_t __xdata __at(0x3290) VWCTRL0;
|
||||||
|
volatile uint8_t __xdata __at(0x3291) VWCTRL1;
|
||||||
|
volatile uint8_t __xdata __at(0x3292) VWCTRL2;
|
||||||
|
volatile uint8_t __xdata __at(0x3293) VWCTRL3;
|
||||||
|
volatile uint8_t __xdata __at(0x3295) VWCTRL5;
|
||||||
|
volatile uint8_t __xdata __at(0x3296) VWCTRL6;
|
||||||
|
|
||||||
|
#endif // _EC_ESPI_H
|
@ -1,5 +1,18 @@
|
|||||||
// SPDX-License-Identifier: GPL-3.0-only
|
// SPDX-License-Identifier: GPL-3.0-only
|
||||||
|
|
||||||
|
#include <ec/espi.h>
|
||||||
|
|
||||||
|
#if EC_ESPI
|
||||||
|
// eSPI signature (byte 7 = 0xA4)
|
||||||
|
static __code char __at(0x40) SIGNATURE[32] = {
|
||||||
|
0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA4, 0x95,
|
||||||
|
0x85, 0x12, 0x5A, 0x5A, 0xAA, 0x00, 0x55, 0x55,
|
||||||
|
|
||||||
|
0x49, 0x54, 0x45, 0x20, 0x54, 0x65, 0x63, 0x68,
|
||||||
|
0x2E, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x20, 0x20
|
||||||
|
};
|
||||||
|
#else // EC_ESPI
|
||||||
|
// LPC signature (byte 7 = 0xA5)
|
||||||
static __code char __at(0x40) SIGNATURE[32] = {
|
static __code char __at(0x40) SIGNATURE[32] = {
|
||||||
0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0x94,
|
0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0x94,
|
||||||
0x85, 0x12, 0x5A, 0x5A, 0xAA, 0x00, 0x55, 0x55,
|
0x85, 0x12, 0x5A, 0x5A, 0xAA, 0x00, 0x55, 0x55,
|
||||||
@ -7,3 +20,4 @@ static __code char __at(0x40) SIGNATURE[32] = {
|
|||||||
0x49, 0x54, 0x45, 0x20, 0x54, 0x65, 0x63, 0x68,
|
0x49, 0x54, 0x45, 0x20, 0x54, 0x65, 0x63, 0x68,
|
||||||
0x2E, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x20, 0x20
|
0x2E, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x20, 0x20
|
||||||
};
|
};
|
||||||
|
#endif // EC_ESPI
|
||||||
|
9
src/ec/it8587e/include/ec/espi.h
Normal file
9
src/ec/it8587e/include/ec/espi.h
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
// SPDX-License-Identifier: GPL-3.0-only
|
||||||
|
|
||||||
|
#ifndef _EC_ESPI_H
|
||||||
|
#define _EC_ESPI_H
|
||||||
|
|
||||||
|
// eSPI not supported on IT8587E
|
||||||
|
#define EC_ESPI 0
|
||||||
|
|
||||||
|
#endif // _EC_ESPI_H
|
Loading…
x
Reference in New Issue
Block a user