Expose pnp_read and pnp_write

This commit is contained in:
Jeremy Soller
2021-06-10 09:04:43 -06:00
committed by Jeremy Soller
parent e25af93f2e
commit 913b0dfc44
2 changed files with 26 additions and 7 deletions

View File

@ -3,6 +3,10 @@
#ifndef _BOARD_PNP_H
#define _BOARD_PNP_H
#include <stdint.h>
uint8_t pnp_read(uint8_t reg);
void pnp_write(uint8_t reg, uint8_t data);
void pnp_enable(void);
#endif // _BOARD_PNP_H

View File

@ -2,6 +2,7 @@
#include <stdint.h>
#include <board/pnp.h>
#include <common/macro.h>
#include <common/debug.h>
#include <ec/espi.h>
@ -10,20 +11,34 @@ volatile uint8_t __xdata __at(0x1200) IHIOA;
volatile uint8_t __xdata __at(0x1201) IHD;
volatile uint8_t __xdata __at(0x1204) IBMAE;
volatile uint8_t __xdata __at(0x1205) IBCTL;
void e2ci_write(uint8_t port, uint8_t data) {
uint8_t ec2i_read(uint8_t port) {
while (IBCTL & (BIT(2) | BIT(1))) {}
IBCTL = 1;
IBMAE = 1;
IHIOA = port;
IBCTL |= BIT(1);
while (IBCTL & BIT(1)) {}
return IHD;
}
void ec2i_write(uint8_t port, uint8_t data) {
while (IBCTL & (BIT(2) | BIT(1))) {}
IBCTL = 1;
IBMAE = 1;
IHIOA = port;
IHD = data;
IBMAE = 1;
IBCTL = 1;
while (IBCTL & BIT(2)) {}
IBMAE = 0;
IBCTL = 0;
}
uint8_t pnp_read(uint8_t reg) {
ec2i_write(0x2E, reg);
return ec2i_read(0x2F);
}
void pnp_write(uint8_t reg, uint8_t data) {
e2ci_write(0x2E, reg);
e2ci_write(0x2F, data);
ec2i_write(0x2E, reg);
ec2i_write(0x2F, data);
}
void pnp_enable() {