Set up DMA using SMFI
This commit is contained in:
parent
dbf581a65d
commit
cca405ae20
7
src/board/system76/lemp9/include/board/smfi.h
Normal file
7
src/board/system76/lemp9/include/board/smfi.h
Normal file
@ -0,0 +1,7 @@
|
||||
#ifndef _BOARD_SMFI_H
|
||||
#define _BOARD_SMFI_H
|
||||
|
||||
void smfi_init(void);
|
||||
void smfi_event(void);
|
||||
|
||||
#endif // _BOARD_SMFI_H
|
@ -18,6 +18,7 @@
|
||||
#include <board/ps2.h>
|
||||
#include <board/pwm.h>
|
||||
#include <board/smbus.h>
|
||||
#include <board/smfi.h>
|
||||
#include <board/tcpm.h>
|
||||
#include <common/debug.h>
|
||||
#include <common/macro.h>
|
||||
@ -48,6 +49,7 @@ void init(void) {
|
||||
pmc_init();
|
||||
pwm_init();
|
||||
smbus_init();
|
||||
smfi_init();
|
||||
tcpm_init();
|
||||
|
||||
//TODO: INTC
|
||||
@ -119,7 +121,9 @@ void main(void) {
|
||||
}
|
||||
// Handles ACPI communication
|
||||
pmc_event(&PMC_1);
|
||||
// AP/EC communication over SMFI
|
||||
smfi_event();
|
||||
// Idle until next timer interrupt
|
||||
PCON |= 1;
|
||||
//Disabled until interrupts used: PCON |= 1;
|
||||
}
|
||||
}
|
||||
|
@ -41,6 +41,12 @@ void pnp_enable() {
|
||||
pnp_write(0x07, 0x05);
|
||||
pnp_write(0x30, 0x01);
|
||||
|
||||
// Enable SMFI
|
||||
pnp_write(0x07, 0x0F);
|
||||
pnp_write(0xF5, 0x00);
|
||||
pnp_write(0xF6, 0x01);
|
||||
pnp_write(0x30, 0x01);
|
||||
|
||||
// Enable SWUC
|
||||
pnp_write(0x07, 0x04);
|
||||
pnp_write(0x30, 0x01);
|
||||
|
35
src/board/system76/lemp9/smfi.c
Normal file
35
src/board/system76/lemp9/smfi.c
Normal file
@ -0,0 +1,35 @@
|
||||
#include <stdint.h>
|
||||
|
||||
volatile uint8_t __xdata __at(0x105A) HRAMWC;
|
||||
volatile uint8_t __xdata __at(0x105B) HRAMW0BA;
|
||||
volatile uint8_t __xdata __at(0x105C) HRAMW1BA;
|
||||
volatile uint8_t __xdata __at(0x105D) HRAMW0AAS;
|
||||
volatile uint8_t __xdata __at(0x105E) HRAMW1AAS;
|
||||
|
||||
volatile uint8_t __xdata __at(0xC00) smfi_cmd[256];
|
||||
volatile uint8_t __xdata __at(0xD00) smfi_dbg[256];
|
||||
|
||||
void smfi_init(void) {
|
||||
// Semaphore
|
||||
smfi_cmd[0] = 0x00;
|
||||
// Signature
|
||||
smfi_cmd[1] = 0x76;
|
||||
smfi_cmd[2] = 0xEC;
|
||||
// Version
|
||||
smfi_cmd[3] = 0x01;
|
||||
|
||||
// H2RAM window 0 address 0xC00 - 0xCFF, read/write
|
||||
HRAMW0BA = 0xC0;
|
||||
HRAMW0AAS = 0x04;
|
||||
|
||||
// H2RAM window 1 address 0xD00 - 0xDFF, read/write
|
||||
HRAMW1BA = 0xD0;
|
||||
HRAMW0AAS = 0x04;
|
||||
|
||||
// Enable H2RAM window 0 and 1 using LPC I/O
|
||||
HRAMWC |= 0x13;
|
||||
}
|
||||
|
||||
void smfi_event(void) {
|
||||
//TODO: when host semaphore occurs, read command
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user