Add debug levels
This commit is contained in:
@ -12,30 +12,31 @@
|
||||
#include <board/ps2.h>
|
||||
#include <board/pwm.h>
|
||||
#include <board/smbus.h>
|
||||
#include <common/debug.h>
|
||||
#include <common/macro.h>
|
||||
|
||||
void external_0(void) __interrupt(0) {
|
||||
printf("external_0\n");
|
||||
TRACE("external_0\n");
|
||||
}
|
||||
|
||||
void timer_0(void) __interrupt(1) {
|
||||
printf("timer_0\n");
|
||||
TRACE("timer_0\n");
|
||||
}
|
||||
|
||||
void external_1(void) __interrupt(2) {
|
||||
printf("external_1\n");
|
||||
TRACE("external_1\n");
|
||||
}
|
||||
|
||||
void timer_1(void) __interrupt(3) {
|
||||
printf("timer_1\n");
|
||||
TRACE("timer_1\n");
|
||||
}
|
||||
|
||||
void serial(void) __interrupt(4) {
|
||||
printf("serial\n");
|
||||
TRACE("serial\n");
|
||||
}
|
||||
|
||||
void timer_2(void) __interrupt(5) {
|
||||
printf("timer_2\n");
|
||||
TRACE("timer_2\n");
|
||||
}
|
||||
|
||||
void init(void) {
|
||||
@ -122,7 +123,7 @@ void peci_event(void) {
|
||||
|
||||
if (duty != DCR2) {
|
||||
DCR2 = duty;
|
||||
printf("PECI offset=%d, temp=%d = %d\n", offset, temp, duty);
|
||||
DEBUG("PECI offset=%d, temp=%d = %d\n", offset, temp, duty);
|
||||
}
|
||||
} else {
|
||||
// Default to 50% if there is an error
|
||||
@ -143,12 +144,12 @@ void ac_adapter() {
|
||||
|
||||
// If there has been a change, print
|
||||
if (new != last) {
|
||||
printf("Power adapter ");
|
||||
DEBUG("Power adapter ");
|
||||
if (new) {
|
||||
printf("unplugged\n");
|
||||
DEBUG("unplugged\n");
|
||||
battery_charger_disable();
|
||||
} else {
|
||||
printf("plugged in\n");
|
||||
DEBUG("plugged in\n");
|
||||
battery_charger_enable();
|
||||
}
|
||||
battery_debug();
|
||||
@ -178,7 +179,11 @@ void pnp_write(uint8_t reg, uint8_t data) {
|
||||
}
|
||||
|
||||
void pnp_enable() {
|
||||
printf("Enable PNP devices\n");
|
||||
DEBUG("Enable PNP devices\n");
|
||||
|
||||
// Enable PMC
|
||||
pnp_write(0x07, 0x11);
|
||||
pnp_write(0x30, 0x01);
|
||||
|
||||
// Enable KBC keyboard
|
||||
pnp_write(0x07, 0x06);
|
||||
@ -223,65 +228,61 @@ void power_button() {
|
||||
// Ensure press is not spurious
|
||||
delay_ms(100);
|
||||
if (gpio_get(&PWR_SW_N) != new) {
|
||||
printf("Spurious press\n");
|
||||
DEBUG("Spurious press\n");
|
||||
return;
|
||||
}
|
||||
|
||||
printf("Power switch press\n");
|
||||
DEBUG("Power switch press\n");
|
||||
|
||||
power = !power;
|
||||
|
||||
if (power) {
|
||||
printf("Enabling S5 power\n");
|
||||
DEBUG("Enabling S5 power\n");
|
||||
|
||||
// We assume that VCCRTC has already been stable, RTCRST# is
|
||||
// already set, and VCCDSW_3P3 is stable
|
||||
|
||||
// Enable battery charger - also provides correct power levels for
|
||||
// system boot sourced from the AC adapter
|
||||
// battery_charger_enable();
|
||||
|
||||
// Make sure VCCDSW is stable for at least 10 ms (tPCH02)
|
||||
delay_ms(10 + 5);
|
||||
|
||||
// Assert DSW_PWROK
|
||||
printf("PCH_DPWROK_EC: %d\n", power);
|
||||
TRACE("PCH_DPWROK_EC: %d\n", power);
|
||||
gpio_set(&PCH_DPWROK_EC, power);
|
||||
|
||||
// Wait for SLP_SUS# (tPCH32)
|
||||
delay_ms(95);
|
||||
for (;;) {
|
||||
bool value = gpio_get(&SLP_SUS_N);
|
||||
printf("SLP_SUS_N: %d\n", value);
|
||||
TRACE("SLP_SUS_N: %d\n", value);
|
||||
if (value) break;
|
||||
delay_ms(1);
|
||||
}
|
||||
|
||||
// Enable VCCPRIM_* planes - must be enabled prior to USB power
|
||||
// in order to avoid leakage
|
||||
printf("VA_EC_EN: %d\n", power);
|
||||
TRACE("VA_EC_EN: %d\n", power);
|
||||
gpio_set(&VA_EC_EN, power);
|
||||
|
||||
// Make sure VCCPRIM_* is stable for at least 10 ms (tPCH03)
|
||||
delay_ms(10 + 5);
|
||||
|
||||
// Enable VDD5
|
||||
printf("DD_ON: %d\n", power);
|
||||
TRACE("DD_ON: %d\n", power);
|
||||
gpio_set(&DD_ON, power);
|
||||
|
||||
// Assert RSMRST#
|
||||
printf("EC_RSMRST_N: %d\n", power);
|
||||
TRACE("EC_RSMRST_N: %d\n", power);
|
||||
gpio_set(&EC_RSMRST_N, power);
|
||||
|
||||
// Allow processor to control SUSB# and SUSC#
|
||||
printf("EC_EN: %d\n", power);
|
||||
TRACE("EC_EN: %d\n", power);
|
||||
gpio_set(&EC_EN, power);
|
||||
|
||||
// Assert SUS_ACK#
|
||||
printf("SUS_PWR_ACK: %d\n", power);
|
||||
TRACE("SUS_PWR_ACK: %d\n", power);
|
||||
gpio_set(&SUS_PWR_ACK, power);
|
||||
|
||||
// printf("VR_ON: %d\n", power);
|
||||
// DEBUG("VR_ON: %d\n", power);
|
||||
// gpio_set(&VR_ON, power);
|
||||
}
|
||||
}
|
||||
@ -291,35 +292,35 @@ void power_button() {
|
||||
|
||||
if (!new && last) {
|
||||
if (power) {
|
||||
printf("Enabling S0 power\n");
|
||||
DEBUG("Enabling S0 power\n");
|
||||
|
||||
// Wait for ALL_SYS_PWRGD
|
||||
for (;;) {
|
||||
bool value = gpio_get(&ALL_SYS_PWRGD);
|
||||
printf("ALL_SYS_PWRGD: %d\n", value);
|
||||
TRACE("ALL_SYS_PWRGD: %d\n", value);
|
||||
if (value) break;
|
||||
delay_ms(1);
|
||||
}
|
||||
|
||||
// Assert VR_ON
|
||||
printf("VR_ON: %d\n", power);
|
||||
TRACE("VR_ON: %d\n", power);
|
||||
gpio_set(&VR_ON, power);
|
||||
|
||||
// Assert PM_PWEROK, PCH_PWROK will be asserted when H_VR_READY is
|
||||
printf("PM_PWROK: %d\n", power);
|
||||
TRACE("PM_PWROK: %d\n", power);
|
||||
gpio_set(&PM_PWROK, power);
|
||||
|
||||
// OEM defined delay from ALL_SYS_PWRGD to SYS_PWROK - TODO
|
||||
delay_ms(10);
|
||||
|
||||
// Assert PCH_PWEROK_EC, SYS_PWEROK will be asserted
|
||||
printf("PCH_PWROK_EC: %d\n", power);
|
||||
TRACE("PCH_PWROK_EC: %d\n", power);
|
||||
gpio_set(&PCH_PWROK_EC, power);
|
||||
|
||||
// Wait for PLT_RST#
|
||||
for (;;) {
|
||||
bool value = gpio_get(&BUF_PLT_RST_N);
|
||||
printf("BUF_PLT_RST_N: %d\n", value);
|
||||
TRACE("BUF_PLT_RST_N: %d\n", value);
|
||||
if (value) break;
|
||||
delay_ms(1);
|
||||
}
|
||||
@ -327,66 +328,61 @@ void power_button() {
|
||||
// enable pnp devices
|
||||
pnp_enable();
|
||||
} else {
|
||||
printf("Disabling power\n");
|
||||
DEBUG("Disabling power\n");
|
||||
|
||||
// De-assert SUS_ACK#
|
||||
printf("SUS_PWR_ACK: %d\n", power);
|
||||
TRACE("SUS_PWR_ACK: %d\n", power);
|
||||
gpio_set(&SUS_PWR_ACK, power);
|
||||
|
||||
// De-assert PCH_PWEROK_EC, SYS_PWEROK will be de-asserted
|
||||
printf("PCH_PWROK_EC: %d\n", power);
|
||||
TRACE("PCH_PWROK_EC: %d\n", power);
|
||||
gpio_set(&PCH_PWROK_EC, power);
|
||||
|
||||
// De-assert PM_PWEROK, PCH_PWROK will be de-asserted
|
||||
printf("PM_PWROK: %d\n", power);
|
||||
TRACE("PM_PWROK: %d\n", power);
|
||||
gpio_set(&PM_PWROK, power);
|
||||
|
||||
// De-assert VR_ON
|
||||
printf("VR_ON: %d\n", power);
|
||||
TRACE("VR_ON: %d\n", power);
|
||||
gpio_set(&VR_ON, power);
|
||||
|
||||
// Block processor from controlling SUSB# and SUSC#
|
||||
printf("EC_EN: %d\n", power);
|
||||
TRACE("EC_EN: %d\n", power);
|
||||
gpio_set(&EC_EN, power);
|
||||
|
||||
// De-assert RSMRST#
|
||||
printf("EC_RSMRST_N: %d\n", power);
|
||||
TRACE("EC_RSMRST_N: %d\n", power);
|
||||
gpio_set(&EC_RSMRST_N, power);
|
||||
|
||||
// Disable VDD5
|
||||
printf("DD_ON: %d\n", power);
|
||||
TRACE("DD_ON: %d\n", power);
|
||||
gpio_set(&DD_ON, power);
|
||||
|
||||
// Wait a minimum of 400 ns (tPCH12)
|
||||
delay_ms(1);
|
||||
|
||||
// Disable VCCPRIM_* planes
|
||||
printf("VA_EC_EN: %d\n", power);
|
||||
TRACE("VA_EC_EN: %d\n", power);
|
||||
gpio_set(&VA_EC_EN, power);
|
||||
|
||||
// De-assert DSW_PWROK
|
||||
printf("PCH_DPWROK_EC: %d\n", power);
|
||||
TRACE("PCH_DPWROK_EC: %d\n", power);
|
||||
gpio_set(&PCH_DPWROK_EC, power);
|
||||
|
||||
// Wait a minimum of 400 ns (tPCH14)
|
||||
delay_ms(1);
|
||||
|
||||
// Disable battery charger
|
||||
// battery_charger_disable();
|
||||
}
|
||||
|
||||
printf("LED_PWR: %d\n", power);
|
||||
TRACE("LED_PWR: %d\n", power);
|
||||
gpio_set(&LED_PWR, power);
|
||||
} else if (new && !last) {
|
||||
printf("Power switch release\n");
|
||||
DEBUG("Power switch release\n");
|
||||
|
||||
printf("SUSWARN_N: %d\n", gpio_get(&SUSWARN_N));
|
||||
printf("SUSC_N_PCH: %d\n", gpio_get(&SUSC_N_PCH));
|
||||
printf("SUSB_N_PCH: %d\n", gpio_get(&SUSB_N_PCH));
|
||||
printf("ALL_SYS_PWRGD: %d\n", gpio_get(&ALL_SYS_PWRGD));
|
||||
printf("BUF_PLT_RST_N: %d\n", gpio_get(&BUF_PLT_RST_N));
|
||||
|
||||
// battery_debug();
|
||||
TRACE("SUSWARN_N: %d\n", gpio_get(&SUSWARN_N));
|
||||
TRACE("SUSC_N_PCH: %d\n", gpio_get(&SUSC_N_PCH));
|
||||
TRACE("SUSB_N_PCH: %d\n", gpio_get(&SUSB_N_PCH));
|
||||
TRACE("ALL_SYS_PWRGD: %d\n", gpio_get(&ALL_SYS_PWRGD));
|
||||
TRACE("BUF_PLT_RST_N: %d\n", gpio_get(&BUF_PLT_RST_N));
|
||||
}
|
||||
|
||||
last = new;
|
||||
@ -403,7 +399,7 @@ void touchpad_event(struct Ps2 * ps2) {
|
||||
*(ps2->status) = status;
|
||||
if (status & (1 << 3)) {
|
||||
uint8_t data = *(ps2->data);
|
||||
//printf("touchpad: %02X\n", data);
|
||||
TRACE("touchpad: %02X\n", data);
|
||||
kbc_mouse(&KBC, data, 1000);
|
||||
}
|
||||
}
|
||||
@ -414,7 +410,7 @@ struct Gpio __code LED_AIRPLANE_N = GPIO(G, 6);
|
||||
void main(void) {
|
||||
init();
|
||||
|
||||
printf("\n");
|
||||
INFO("\n");
|
||||
|
||||
static struct Gpio __code LED_BAT_CHG = GPIO(A, 5);
|
||||
static struct Gpio __code LED_BAT_FULL = GPIO(A, 6);
|
||||
@ -450,13 +446,13 @@ void main(void) {
|
||||
|
||||
// Set the battery full LED (to know our firmware is loaded)
|
||||
gpio_set(&LED_BAT_FULL, true);
|
||||
printf("Hello from System76 EC for %s!\n", xstr(__BOARD__));
|
||||
INFO("Hello from System76 EC for %s!\n", xstr(__BOARD__));
|
||||
|
||||
for(;;) {
|
||||
peci_event();
|
||||
ac_adapter();
|
||||
power_button();
|
||||
kbscan_event();
|
||||
//kbscan_event();
|
||||
touchpad_event(&PS2_3);
|
||||
kbc_event(&KBC);
|
||||
pmc_event(&PMC_1);
|
||||
|
Reference in New Issue
Block a user