diff --git a/src/ec/it5570e/include/ec/scratch.h b/src/ec/it5570e/include/ec/scratch.h deleted file mode 100644 index 9195a38..0000000 --- a/src/ec/it5570e/include/ec/scratch.h +++ /dev/null @@ -1,16 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-only - -#ifndef _EC_SCRATCH_H -#define _EC_SCRATCH_H - -#include - -// SCAR0 is stored in processor cache, not in xram -volatile uint8_t __xdata __at(0x1040) SCAR0L; -volatile uint8_t __xdata __at(0x1041) SCAR0M; -volatile uint8_t __xdata __at(0x1042) SCAR0H; -#define SCARL SCAR0L -#define SCARM SCAR0M -#define SCARH SCAR0H - -#endif // _EC_SCRATCH_H diff --git a/src/ec/it8587e/ec.c b/src/ec/it8587e/ec.c deleted file mode 100644 index 6f9b812..0000000 --- a/src/ec/it8587e/ec.c +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-only - -#include -#include - -void ec_init(void) { - RSTS = 0x84; -} diff --git a/src/ec/it8587e/i2c.c b/src/ec/it8587e/i2c.c deleted file mode 100644 index 9b26690..0000000 --- a/src/ec/it8587e/i2c.c +++ /dev/null @@ -1,152 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-only - -#include - -#include -#include - -//TODO: find best value -#define I2C_TIMEOUT 10000 - -struct I2C { - volatile uint8_t * hosta; - volatile uint8_t * hoctl; - volatile uint8_t * hoctl2; - volatile uint8_t * hobdb; - volatile uint8_t * trasla; -}; - -struct I2C __code I2C_0 = { - .hosta = HOSTAA, - .hoctl = HOCTLA, - .hoctl2 = HOCTL2A, - .hobdb = HOBDBA, - .trasla = TRASLAA, -}; - -struct I2C __code I2C_1 = { - .hosta = HOSTAB, - .hoctl = HOCTLB, - .hoctl2 = HOCTL2B, - .hobdb = HOBDBB, - .trasla = TRASLAB, -}; - -void i2c_reset(struct I2C * i2c, bool kill) { - if (*(i2c->hosta) & HOSTA_BUSY) { - // Set kill bit - if (kill) *(i2c->hoctl) |= BIT(1); - // Wait for host to finish - while (*(i2c->hosta) & HOSTA_BUSY) {} - } - // Clear status register - *(i2c->hosta) = *(i2c->hosta); - // Clear current command - *(i2c->hoctl) = 0; - // Disable host interface - *(i2c->hoctl2) = 0; -} - -int i2c_start(struct I2C * i2c, uint8_t addr, bool read) __reentrant { - // If we are already in a transaction - if (*(i2c->hosta) & HOSTA_BYTE_DONE) { - // If we are switching direction - if ((*(i2c->trasla) & 1) != read) { - // If we are switching to read mode - if (read) { - // Enable direction switch - *(i2c->hoctl2) |= BIT(3) | BIT(2); - } else { - // Unsupported! - i2c_reset(i2c, true); - return -1; - } - } - } else { - i2c_reset(i2c, true); - - // Enable host controller with i2c compatibility - *(i2c->hoctl2) = BIT(1) | BIT(0); - - // Set address - *(i2c->trasla) = (addr << 1) | read; - } - - return 0; -} - -void i2c_stop(struct I2C * i2c) { - // Disable i2c compatibility - *(i2c->hoctl2) &= ~BIT(1); - // Clear status - *(i2c->hosta) = *(i2c->hosta); - - i2c_reset(i2c, false); -} - -static int i2c_transaction(struct I2C * i2c, uint8_t * data, int length, bool read) { - int i; - for (i = 0; i < length; i++) { - if (read) { - // If last byte - if ((i + 1) == length) { - // Set last byte bit - *(i2c->hoctl) |= BIT(5); - } - } else { - // Write byte - *(i2c->hobdb) = data[i]; - } - - // If we are already in a transaction - if (*(i2c->hosta) & HOSTA_BYTE_DONE) { - // Clear status to process next byte - *(i2c->hosta) = *(i2c->hosta); - } else { - // Start new transaction - *(i2c->hoctl) = BIT(6) | (0b111 << 2); - } - - // If we are waiting on direction switch - if (*(i2c->hoctl2) & BIT(2)) { - // Complete direction switch - *(i2c->hoctl2) &= ~BIT(2); - } - - // Wait for byte done, timeout, or error - uint8_t status; - uint32_t timeout = I2C_TIMEOUT; - for(timeout = I2C_TIMEOUT; timeout > 0; timeout--) { - status = *(i2c->hosta); - // If error occured, kill transaction and return error - if (status & HOSTA_ERR) { - i2c_reset(i2c, true); - return -(int)(status); - } else - // If byte done, break - if (status & HOSTA_BYTE_DONE) { - break; - } - } - // If timeout occured, kill transaction and return error - if (timeout == 0) { - i2c_reset(i2c, true); - return -(0x1000 | (int)status); - } - - if (read) { - // Read byte - data[i] = *(i2c->hobdb); - } - } - - return i; -} - -int i2c_read(struct I2C * i2c, uint8_t * data, int length) __reentrant { - return i2c_transaction(i2c, data, length, true); -} - -int i2c_write(struct I2C * i2c, uint8_t * data, int length) __reentrant { - return i2c_transaction(i2c, data, length, false); -} diff --git a/src/ec/it8587e/include/ec/espi.h b/src/ec/it8587e/include/ec/espi.h deleted file mode 100644 index 859eb1e..0000000 --- a/src/ec/it8587e/include/ec/espi.h +++ /dev/null @@ -1,9 +0,0 @@ -// 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 diff --git a/src/ec/it8587e/include/ec/gctrl.h b/src/ec/it8587e/include/ec/gctrl.h deleted file mode 100644 index 2f7bd99..0000000 --- a/src/ec/it8587e/include/ec/gctrl.h +++ /dev/null @@ -1,12 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-only - -#ifndef _EC_GCTRL_H -#define _EC_GCTRL_H - -#include - -volatile uint8_t __xdata __at(0x2006) RSTS; -volatile uint8_t __xdata __at(0x200A) BADRSEL; -volatile uint8_t __xdata __at(0x200D) SPCTRL1; - -#endif // _EC_GCTRL_H diff --git a/src/ec/it8587e/include/ec/gpio.h b/src/ec/it8587e/include/ec/gpio.h deleted file mode 100644 index b0eee8e..0000000 --- a/src/ec/it8587e/include/ec/gpio.h +++ /dev/null @@ -1,188 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-only - -#ifndef _EC_GPIO_H -#define _EC_GPIO_H - -#include - -#include -#include - -#define GPIO_ALT (0b00U << 6) -#define GPIO_IN (0b10U << 6) -#define GPIO_OUT (0b01U << 6) -#define GPIO_UP BIT(2) -#define GPIO_DOWN BIT(1) - -struct Gpio { - volatile uint8_t __xdata * data; - volatile uint8_t __xdata * mirror; - volatile uint8_t __xdata * control; - uint8_t value; -}; - -#define GPIO(BLOCK, NUMBER) { \ - .data = &GPDR ## BLOCK, \ - .mirror = &GPDMR ## BLOCK, \ - .control = &GPCR ## BLOCK ## NUMBER, \ - .value = BIT(NUMBER), \ -} - -bool gpio_get(struct Gpio * gpio); -void gpio_set(struct Gpio * gpio, bool value); - -volatile uint8_t __xdata __at(0x1600) GCR; -volatile uint8_t __xdata __at(0x16F0) GCR1; -volatile uint8_t __xdata __at(0x16F1) GCR2; -volatile uint8_t __xdata __at(0x16F2) GCR3; -volatile uint8_t __xdata __at(0x16F3) GCR4; -volatile uint8_t __xdata __at(0x16F4) GCR5; -volatile uint8_t __xdata __at(0x16F5) GCR6; -volatile uint8_t __xdata __at(0x16F6) GCR7; -volatile uint8_t __xdata __at(0x16F7) GCR8; -volatile uint8_t __xdata __at(0x16F8) GCR9; -volatile uint8_t __xdata __at(0x16F9) GCR10; -volatile uint8_t __xdata __at(0x16FA) GCR11; -volatile uint8_t __xdata __at(0x16FB) GCR12; -volatile uint8_t __xdata __at(0x16FC) GCR13; -volatile uint8_t __xdata __at(0x16FD) GCR14; -volatile uint8_t __xdata __at(0x16FE) GCR15; -volatile uint8_t __xdata __at(0x16E0) GCR16; -volatile uint8_t __xdata __at(0x16E1) GCR17; -volatile uint8_t __xdata __at(0x16E2) GCR18; - -volatile uint8_t __xdata __at(0x1601) GPDRA; -volatile uint8_t __xdata __at(0x1602) GPDRB; -volatile uint8_t __xdata __at(0x1603) GPDRC; -volatile uint8_t __xdata __at(0x1604) GPDRD; -volatile uint8_t __xdata __at(0x1605) GPDRE; -volatile uint8_t __xdata __at(0x1606) GPDRF; -volatile uint8_t __xdata __at(0x1607) GPDRG; -volatile uint8_t __xdata __at(0x1608) GPDRH; -volatile uint8_t __xdata __at(0x1609) GPDRI; -volatile uint8_t __xdata __at(0x160A) GPDRJ; -volatile uint8_t __xdata __at(0x160D) GPDRM; - -volatile uint8_t __xdata __at(0x1661) GPDMRA; -volatile uint8_t __xdata __at(0x1662) GPDMRB; -volatile uint8_t __xdata __at(0x1663) GPDMRC; -volatile uint8_t __xdata __at(0x1664) GPDMRD; -volatile uint8_t __xdata __at(0x1665) GPDMRE; -volatile uint8_t __xdata __at(0x1666) GPDMRF; -volatile uint8_t __xdata __at(0x1667) GPDMRG; -volatile uint8_t __xdata __at(0x1668) GPDMRH; -volatile uint8_t __xdata __at(0x1669) GPDMRI; -volatile uint8_t __xdata __at(0x166A) GPDMRJ; -volatile uint8_t __xdata __at(0x166D) GPDMRM; - -volatile uint8_t __xdata __at(0x1671) GPOTA; -volatile uint8_t __xdata __at(0x1672) GPOTB; -volatile uint8_t __xdata __at(0x1673) GPOTC; -volatile uint8_t __xdata __at(0x1674) GPOTD; -volatile uint8_t __xdata __at(0x1675) GPOTE; -volatile uint8_t __xdata __at(0x1676) GPOTF; -volatile uint8_t __xdata __at(0x1677) GPOTG; -volatile uint8_t __xdata __at(0x1678) GPOTH; -volatile uint8_t __xdata __at(0x1679) GPOTI; -volatile uint8_t __xdata __at(0x167A) GPOTJ; -// GPOTM does not exist - -volatile uint8_t __xdata __at(0x1610) GPCRA0; -volatile uint8_t __xdata __at(0x1611) GPCRA1; -volatile uint8_t __xdata __at(0x1612) GPCRA2; -volatile uint8_t __xdata __at(0x1613) GPCRA3; -volatile uint8_t __xdata __at(0x1614) GPCRA4; -volatile uint8_t __xdata __at(0x1615) GPCRA5; -volatile uint8_t __xdata __at(0x1616) GPCRA6; -volatile uint8_t __xdata __at(0x1617) GPCRA7; - -volatile uint8_t __xdata __at(0x1618) GPCRB0; -volatile uint8_t __xdata __at(0x1619) GPCRB1; -volatile uint8_t __xdata __at(0x161A) GPCRB2; -volatile uint8_t __xdata __at(0x161B) GPCRB3; -volatile uint8_t __xdata __at(0x161C) GPCRB4; -volatile uint8_t __xdata __at(0x161D) GPCRB5; -volatile uint8_t __xdata __at(0x161E) GPCRB6; -volatile uint8_t __xdata __at(0x161F) GPCRB7; - -volatile uint8_t __xdata __at(0x1620) GPCRC0; -volatile uint8_t __xdata __at(0x1621) GPCRC1; -volatile uint8_t __xdata __at(0x1622) GPCRC2; -volatile uint8_t __xdata __at(0x1623) GPCRC3; -volatile uint8_t __xdata __at(0x1624) GPCRC4; -volatile uint8_t __xdata __at(0x1625) GPCRC5; -volatile uint8_t __xdata __at(0x1626) GPCRC6; -volatile uint8_t __xdata __at(0x1627) GPCRC7; - -volatile uint8_t __xdata __at(0x1628) GPCRD0; -volatile uint8_t __xdata __at(0x1629) GPCRD1; -volatile uint8_t __xdata __at(0x162A) GPCRD2; -volatile uint8_t __xdata __at(0x162B) GPCRD3; -volatile uint8_t __xdata __at(0x162C) GPCRD4; -volatile uint8_t __xdata __at(0x162D) GPCRD5; -volatile uint8_t __xdata __at(0x162E) GPCRD6; -volatile uint8_t __xdata __at(0x162F) GPCRD7; - -volatile uint8_t __xdata __at(0x1630) GPCRE0; -volatile uint8_t __xdata __at(0x1631) GPCRE1; -volatile uint8_t __xdata __at(0x1632) GPCRE2; -volatile uint8_t __xdata __at(0x1633) GPCRE3; -volatile uint8_t __xdata __at(0x1634) GPCRE4; -volatile uint8_t __xdata __at(0x1635) GPCRE5; -volatile uint8_t __xdata __at(0x1636) GPCRE6; -volatile uint8_t __xdata __at(0x1637) GPCRE7; - -volatile uint8_t __xdata __at(0x1638) GPCRF0; -volatile uint8_t __xdata __at(0x1639) GPCRF1; -volatile uint8_t __xdata __at(0x163A) GPCRF2; -volatile uint8_t __xdata __at(0x163B) GPCRF3; -volatile uint8_t __xdata __at(0x163C) GPCRF4; -volatile uint8_t __xdata __at(0x163D) GPCRF5; -volatile uint8_t __xdata __at(0x163E) GPCRF6; -volatile uint8_t __xdata __at(0x163F) GPCRF7; - -volatile uint8_t __xdata __at(0x1640) GPCRG0; -volatile uint8_t __xdata __at(0x1641) GPCRG1; -volatile uint8_t __xdata __at(0x1642) GPCRG2; -volatile uint8_t __xdata __at(0x1643) GPCRG3; -volatile uint8_t __xdata __at(0x1644) GPCRG4; -volatile uint8_t __xdata __at(0x1645) GPCRG5; -volatile uint8_t __xdata __at(0x1646) GPCRG6; -volatile uint8_t __xdata __at(0x1647) GPCRG7; - -volatile uint8_t __xdata __at(0x1648) GPCRH0; -volatile uint8_t __xdata __at(0x1649) GPCRH1; -volatile uint8_t __xdata __at(0x164A) GPCRH2; -volatile uint8_t __xdata __at(0x164B) GPCRH3; -volatile uint8_t __xdata __at(0x164C) GPCRH4; -volatile uint8_t __xdata __at(0x164D) GPCRH5; -volatile uint8_t __xdata __at(0x164E) GPCRH6; -volatile uint8_t __xdata __at(0x164F) GPCRH7; - -volatile uint8_t __xdata __at(0x1650) GPCRI0; -volatile uint8_t __xdata __at(0x1651) GPCRI1; -volatile uint8_t __xdata __at(0x1652) GPCRI2; -volatile uint8_t __xdata __at(0x1653) GPCRI3; -volatile uint8_t __xdata __at(0x1654) GPCRI4; -volatile uint8_t __xdata __at(0x1655) GPCRI5; -volatile uint8_t __xdata __at(0x1656) GPCRI6; -volatile uint8_t __xdata __at(0x1657) GPCRI7; - -volatile uint8_t __xdata __at(0x1658) GPCRJ0; -volatile uint8_t __xdata __at(0x1659) GPCRJ1; -volatile uint8_t __xdata __at(0x165A) GPCRJ2; -volatile uint8_t __xdata __at(0x165B) GPCRJ3; -volatile uint8_t __xdata __at(0x165C) GPCRJ4; -volatile uint8_t __xdata __at(0x165D) GPCRJ5; -volatile uint8_t __xdata __at(0x165E) GPCRJ6; -volatile uint8_t __xdata __at(0x165F) GPCRJ7; - -volatile uint8_t __xdata __at(0x16A0) GPCRM0; -volatile uint8_t __xdata __at(0x16A1) GPCRM1; -volatile uint8_t __xdata __at(0x16A2) GPCRM2; -volatile uint8_t __xdata __at(0x16A3) GPCRM3; -volatile uint8_t __xdata __at(0x16A4) GPCRM4; -volatile uint8_t __xdata __at(0x16A5) GPCRM5; -volatile uint8_t __xdata __at(0x16A6) GPCRM6; - -#endif // _EC_GPIO_H diff --git a/src/ec/it8587e/include/ec/i2c.h b/src/ec/it8587e/include/ec/i2c.h deleted file mode 100644 index 25b0c1d..0000000 --- a/src/ec/it8587e/include/ec/i2c.h +++ /dev/null @@ -1,13 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-only - -#ifndef _EC_I2C_H -#define _EC_I2C_H - -#include - -extern struct I2C __code I2C_0; -extern struct I2C __code I2C_1; - -void i2c_reset(struct I2C * i2c, bool kill); - -#endif // _EC_I2C_H diff --git a/src/ec/it8587e/include/ec/scratch.h b/src/ec/it8587e/include/ec/scratch.h deleted file mode 100644 index 44be010..0000000 --- a/src/ec/it8587e/include/ec/scratch.h +++ /dev/null @@ -1,16 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-only - -#ifndef _EC_SCRATCH_H -#define _EC_SCRATCH_H - -#include - -// SCAR1 is in xram at 0x800-0xC00 -volatile uint8_t __xdata __at(0x1043) SCAR1L; -volatile uint8_t __xdata __at(0x1044) SCAR1M; -volatile uint8_t __xdata __at(0x1045) SCAR1H; -#define SCARL SCAR1L -#define SCARM SCAR1M -#define SCARH SCAR1H - -#endif // _EC_SCRATCH_H diff --git a/src/ec/it8587e/include/ec/smbus.h b/src/ec/it8587e/include/ec/smbus.h deleted file mode 100644 index 1937f3d..0000000 --- a/src/ec/it8587e/include/ec/smbus.h +++ /dev/null @@ -1,107 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-only - -#ifndef _EC_SMBUS_H -#define _EC_SMBUS_H - -#include - -#include - -#define HOSTA_BYTE_DONE BIT(7) -#define HOSTA_TIMEOUT BIT(6) -#define HOSTA_NACK BIT(5) -#define HOSTA_FAIL BIT(4) -#define HOSTA_BUS_ERR BIT(3) -#define HOSTA_DEV_ERR BIT(2) -#define HOSTA_FINISH BIT(1) -#define HOSTA_BUSY BIT(0) -#define HOSTA_ERR (HOSTA_TIMEOUT | HOSTA_NACK | HOSTA_FAIL | HOSTA_BUS_ERR | HOSTA_DEV_ERR) - -// Host status for channel A -volatile uint8_t __xdata __at(0x1C00) HOSTAA; -// Host control for channel A -volatile uint8_t __xdata __at(0x1C01) HOCTLA; -// Host command for channel A -volatile uint8_t __xdata __at(0x1C02) HOCMDA; -// Transmit slave address for channel A -volatile uint8_t __xdata __at(0x1C03) TRASLAA; -// Host data 0 for channel A -volatile uint8_t __xdata __at(0x1C04) D0REGA; -// Host data 1 for channel A -volatile uint8_t __xdata __at(0x1C05) D1REGA; -// Host block data byte for channel A -volatile uint8_t __xdata __at(0x1C06) HOBDBA; -// Packet error check for channel A -volatile uint8_t __xdata __at(0x1C07) PECERCA; -// Receive slave address for channel A -volatile uint8_t __xdata __at(0x1C08) RESLADRA; -// Slave data for channel A -volatile uint8_t __xdata __at(0x1C09) SLDAA; -// SMBus pin control for channel A -volatile uint8_t __xdata __at(0x1C0A) SMBPCTLA; -// Slave status for channel A -volatile uint8_t __xdata __at(0x1C0B) SLSTAA; -// Slave interrupt control for channel A -volatile uint8_t __xdata __at(0x1C0C) SICRA; -// Notify device address for channel A -volatile uint8_t __xdata __at(0x1C0D) NDADRA; -// Notify data low byte for channel A -volatile uint8_t __xdata __at(0x1C0E) NDLBA; -// Notify data high byte for channel A -volatile uint8_t __xdata __at(0x1C0F) NDHBA; -// Host control 2 for channel A -volatile uint8_t __xdata __at(0x1C10) HOCTL2A; -// Receive slave address 2 for channel A -volatile uint8_t __xdata __at(0x1C3F) RESLADR2A; -// SMCLK timing setting for channel A -volatile uint8_t __xdata __at(0x1C40) SCLKTSA; - -// Host status for channel B -volatile uint8_t __xdata __at(0x1C11) HOSTAB; -// Host control for channel B -volatile uint8_t __xdata __at(0x1C12) HOCTLB; -// Host command for channel B -volatile uint8_t __xdata __at(0x1C13) HOCMDB; -// Transmit slave address for channel B -volatile uint8_t __xdata __at(0x1C14) TRASLAB; -// Host data 0 for channel B -volatile uint8_t __xdata __at(0x1C15) D0REGB; -// Host data 1 for channel B -volatile uint8_t __xdata __at(0x1C16) D1REGB; -// Host block data byte for channel B -volatile uint8_t __xdata __at(0x1C17) HOBDBB; -// Packet error check for channel B -volatile uint8_t __xdata __at(0x1C18) PECERCB; -// Receive slave address for channel B -volatile uint8_t __xdata __at(0x1C19) RESLADRB; -// Slave data for channel B -volatile uint8_t __xdata __at(0x1C1A) SLDAB; -// SMBus pin control for channel B -volatile uint8_t __xdata __at(0x1C1B) SMBPCTLB; -// Slave status for channel B -volatile uint8_t __xdata __at(0x1C1C) SLSTAB; -// Slave interrupt control for channel B -volatile uint8_t __xdata __at(0x1C1D) SICRB; -// Notify device address for channel B -volatile uint8_t __xdata __at(0x1C1E) NDADRB; -// Notify data low byte for channel A -volatile uint8_t __xdata __at(0x1C1F) NDLBB; -// Notify data high byte for channel B -volatile uint8_t __xdata __at(0x1C20) NDHBB; -// Host control 2 for channel B -volatile uint8_t __xdata __at(0x1C21) HOCTL2B; -// Receive slave address 2 for channel B -volatile uint8_t __xdata __at(0x1C44) RESLADR2B; -// SMCLK timing setting for channel B -volatile uint8_t __xdata __at(0x1C41) SCLKTSB; - -// Timing registers -volatile uint8_t __xdata __at(0x1C22) SMB4P7USL; -volatile uint8_t __xdata __at(0x1C23) SMB4P0USL; -volatile uint8_t __xdata __at(0x1C24) SMB300NS; -volatile uint8_t __xdata __at(0x1C25) SMB250NS; -volatile uint8_t __xdata __at(0x1C26) SMB25MS; -volatile uint8_t __xdata __at(0x1C27) SMB45P3USL; -volatile uint8_t __xdata __at(0x1C28) SMB45P3USH; - -#endif // _EC_SMBUS_H diff --git a/src/ec/it8587e/signature.c b/src/ec/it8587e/signature.c deleted file mode 100644 index 44faaf8..0000000 --- a/src/ec/it8587e/signature.c +++ /dev/null @@ -1,6 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-only - -static __code const unsigned char __at(0x40) SIGNATURE[16] = { - 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0x94, - 0x85, 0x12, 0x5A, 0x5A, 0xAA, 0x00, 0x55, 0x55, -}; diff --git a/src/ec/it5570e/ec.c b/src/ec/ite/ec.c similarity index 78% rename from src/ec/it5570e/ec.c rename to src/ec/ite/ec.c index 37a75f3..a8d077e 100644 --- a/src/ec/it5570e/ec.c +++ b/src/ec/ite/ec.c @@ -6,13 +6,18 @@ #include void ec_init(void) { - RSTS = 0x44; +#ifdef it8587e + RSTS = (0b10U << 6) | BIT(2); +#else + RSTS = (0b01U << 6) | BIT(2); // Enable POST codes SPCTRL1 |= BIT(7) | BIT(6) | BIT(3); +#endif } void ec_read_post_codes(void) { +#ifdef it5570e while (P80H81HS & 1) { uint8_t p80h = P80HD; uint8_t p81h = P81HD; @@ -20,4 +25,5 @@ void ec_read_post_codes(void) { DEBUG("POST %02X%02X\n", p81h, p80h); } +#endif } diff --git a/src/ec/it5570e/espi.c b/src/ec/ite/espi.c similarity index 98% rename from src/ec/it5570e/espi.c rename to src/ec/ite/espi.c index 3ef87c9..d923756 100644 --- a/src/ec/it5570e/espi.c +++ b/src/ec/ite/espi.c @@ -1,8 +1,9 @@ // SPDX-License-Identifier: GPL-3.0-only -#include #include +#ifdef it5570e + // Not all wires are defined or implemented // Index 2 - AP to EC struct VirtualWire __code VW_SLP_S3_N = VIRTUAL_WIRE(2, 0); @@ -61,3 +62,5 @@ void vw_set(struct VirtualWire * vw, enum VirtualWireState state) __critical { } *vw->index = index; } + +#endif // it5570e diff --git a/src/ec/it5570e/i2c.c b/src/ec/ite/i2c.c similarity index 99% rename from src/ec/it5570e/i2c.c rename to src/ec/ite/i2c.c index e9d7f94..b0bd492 100644 --- a/src/ec/it5570e/i2c.c +++ b/src/ec/ite/i2c.c @@ -32,6 +32,7 @@ struct I2C __code I2C_1 = { .trasla = TRASLAB, }; +#ifdef it5570e struct I2C __code I2C_4 = { .hosta = HOSTAE, .hoctl = HOCTLE, @@ -39,6 +40,7 @@ struct I2C __code I2C_4 = { .hobdb = HOBDBE, .trasla = TRASLAE, }; +#endif void i2c_reset(struct I2C * i2c, bool kill) { if (*(i2c->hosta) & HOSTA_BUSY) { diff --git a/src/ec/it5570e/include/ec/espi.h b/src/ec/ite/include/ec/espi.h similarity index 97% rename from src/ec/it5570e/include/ec/espi.h rename to src/ec/ite/include/ec/espi.h index 909f231..0f58318 100644 --- a/src/ec/it5570e/include/ec/espi.h +++ b/src/ec/ite/include/ec/espi.h @@ -2,11 +2,15 @@ #ifndef _EC_ESPI_H #define _EC_ESPI_H -#include +// eSPI not supported on IT8587E, may not be used on IT5570E #ifndef EC_ESPI #define EC_ESPI 0 -#endif // EC_ESPI +#endif + +#include + +#ifdef it5570e struct VirtualWire { volatile uint8_t __xdata * index; @@ -120,4 +124,6 @@ volatile uint8_t __xdata __at(0x3293) VWCTRL3; volatile uint8_t __xdata __at(0x3295) VWCTRL5; volatile uint8_t __xdata __at(0x3296) VWCTRL6; +#endif // it5570e + #endif // _EC_ESPI_H diff --git a/src/ec/it5570e/include/ec/gctrl.h b/src/ec/ite/include/ec/gctrl.h similarity index 94% rename from src/ec/it5570e/include/ec/gctrl.h rename to src/ec/ite/include/ec/gctrl.h index d4c6d00..8f9c507 100644 --- a/src/ec/it5570e/include/ec/gctrl.h +++ b/src/ec/ite/include/ec/gctrl.h @@ -8,8 +8,10 @@ volatile uint8_t __xdata __at(0x2006) RSTS; volatile uint8_t __xdata __at(0x200A) BADRSEL; volatile uint8_t __xdata __at(0x200D) SPCTRL1; +#ifdef it5570e volatile uint8_t __xdata __at(0x2030) P80H81HS; volatile uint8_t __xdata __at(0x2031) P80HD; volatile uint8_t __xdata __at(0x2032) P81HD; +#endif #endif // _EC_GCTRL_H diff --git a/src/ec/it5570e/include/ec/gpio.h b/src/ec/ite/include/ec/gpio.h similarity index 99% rename from src/ec/it5570e/include/ec/gpio.h rename to src/ec/ite/include/ec/gpio.h index 6fbb9af..cffbbb1 100644 --- a/src/ec/it5570e/include/ec/gpio.h +++ b/src/ec/ite/include/ec/gpio.h @@ -50,9 +50,11 @@ volatile uint8_t __xdata __at(0x16FE) GCR15; volatile uint8_t __xdata __at(0x16E0) GCR16; volatile uint8_t __xdata __at(0x16E1) GCR17; volatile uint8_t __xdata __at(0x16E2) GCR18; +#ifdef it5570e volatile uint8_t __xdata __at(0x16E4) GCR19; volatile uint8_t __xdata __at(0x16E5) GCR20; volatile uint8_t __xdata __at(0x16E6) GCR21; +#endif volatile uint8_t __xdata __at(0x1601) GPDRA; volatile uint8_t __xdata __at(0x1602) GPDRB; diff --git a/src/ec/it5570e/include/ec/i2c.h b/src/ec/ite/include/ec/i2c.h similarity index 92% rename from src/ec/it5570e/include/ec/i2c.h rename to src/ec/ite/include/ec/i2c.h index fb09360..f3ce5d8 100644 --- a/src/ec/it5570e/include/ec/i2c.h +++ b/src/ec/ite/include/ec/i2c.h @@ -7,7 +7,9 @@ extern struct I2C __code I2C_0; extern struct I2C __code I2C_1; +#ifdef it5570e extern struct I2C __code I2C_4; +#endif void i2c_reset(struct I2C * i2c, bool kill); diff --git a/src/ec/ite/include/ec/scratch.h b/src/ec/ite/include/ec/scratch.h new file mode 100644 index 0000000..da3d82f --- /dev/null +++ b/src/ec/ite/include/ec/scratch.h @@ -0,0 +1,29 @@ +// SPDX-License-Identifier: GPL-3.0-only + +#ifndef _EC_SCRATCH_H +#define _EC_SCRATCH_H + +#include + +// SCAR0 is stored in processor cache, not in xram +volatile uint8_t __xdata __at(0x1040) SCAR0L; +volatile uint8_t __xdata __at(0x1041) SCAR0M; +volatile uint8_t __xdata __at(0x1042) SCAR0H; +#ifdef it8587e +// SCAR1 is in xram at 0x800-0xC00 +volatile uint8_t __xdata __at(0x1043) SCAR1L; +volatile uint8_t __xdata __at(0x1044) SCAR1M; +volatile uint8_t __xdata __at(0x1045) SCAR1H; +#endif + +#ifdef it8587e + #define SCARL SCAR1L + #define SCARM SCAR1M + #define SCARH SCAR1H +#else + #define SCARL SCAR0L + #define SCARM SCAR0M + #define SCARH SCAR0H +#endif + +#endif // _EC_SCRATCH_H diff --git a/src/ec/it5570e/include/ec/smbus.h b/src/ec/ite/include/ec/smbus.h similarity index 99% rename from src/ec/it5570e/include/ec/smbus.h rename to src/ec/ite/include/ec/smbus.h index 641a7f3..6727dcd 100644 --- a/src/ec/it5570e/include/ec/smbus.h +++ b/src/ec/ite/include/ec/smbus.h @@ -95,6 +95,7 @@ volatile uint8_t __xdata __at(0x1C44) RESLADR2B; // SMCLK timing setting for channel B volatile uint8_t __xdata __at(0x1C41) SCLKTSB; +#ifdef it5570e // Host status for channel E volatile uint8_t __xdata __at(0x1CA0) HOSTAE; // Host control for channel E @@ -117,6 +118,7 @@ volatile uint8_t __xdata __at(0x1CA9) SMBPCTLE; volatile uint8_t __xdata __at(0x1CAA) HOCTL2E; // SMCLK timing setting for channel E volatile uint8_t __xdata __at(0x1CAB) SCLKTSE; +#endif // Timing registers volatile uint8_t __xdata __at(0x1C22) SMB4P7USL; diff --git a/src/ec/it5570e/signature.c b/src/ec/ite/signature.c similarity index 100% rename from src/ec/it5570e/signature.c rename to src/ec/ite/signature.c