Add PMC command state, update ecsim
This commit is contained in:
parent
47ad6386c6
commit
f00326edd1
2
ecsim
2
ecsim
@ -1 +1 @@
|
||||
Subproject commit f735f202a66f903dd571276fc67b8a679dd3ddae
|
||||
Subproject commit 0af66f969924e2986edbb47c5e2f29fbfbf1ddd1
|
53
src/main.c
53
src/main.c
@ -72,14 +72,63 @@ void kbc_event(struct Kbc * kbc) {
|
||||
}
|
||||
}
|
||||
|
||||
enum PmcState {
|
||||
PMC_STATE_DEFAULT,
|
||||
PMC_STATE_ACPI_READ,
|
||||
PMC_STATE_ACPI_WRITE,
|
||||
PMC_STATE_ACPI_WRITE_ADDR,
|
||||
};
|
||||
|
||||
void pmc_event(struct Pmc * pmc) {
|
||||
static enum PmcState state = PMC_STATE_DEFAULT;
|
||||
static uint8_t state_data[2] = {0, 0};
|
||||
|
||||
uint8_t sts = pmc_status(pmc);
|
||||
if (sts & PMC_STS_IBF) {
|
||||
uint8_t data = pmc_read(pmc);
|
||||
if (sts & PMC_STS_CMD) {
|
||||
printf("PMC command: %X\n", data);
|
||||
printf("PMC command: %02X\n", data);
|
||||
|
||||
switch (data) {
|
||||
case 0x80:
|
||||
state = PMC_STATE_ACPI_READ;
|
||||
printf(" ACPI read\n");
|
||||
break;
|
||||
case 0x81:
|
||||
state = PMC_STATE_ACPI_WRITE;
|
||||
printf(" ACPI write\n");
|
||||
break;
|
||||
default:
|
||||
state = PMC_STATE_DEFAULT;
|
||||
printf(" Unknown command\n");
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
printf("PMC data: %X\n", data);
|
||||
printf("PMC data: %02X\n", data);
|
||||
|
||||
switch (state) {
|
||||
case PMC_STATE_ACPI_READ:
|
||||
state = PMC_STATE_DEFAULT;
|
||||
//TODO - read value
|
||||
uint8_t value = 0;
|
||||
pmc_write(pmc, value);
|
||||
printf(" ACPI read %02X = %02X\n", data, value);
|
||||
break;
|
||||
case PMC_STATE_ACPI_WRITE:
|
||||
state = PMC_STATE_ACPI_WRITE_ADDR;
|
||||
state_data[0] = data;
|
||||
printf(" ACPI write %02X\n", data);
|
||||
break;
|
||||
case PMC_STATE_ACPI_WRITE_ADDR:
|
||||
state = PMC_STATE_DEFAULT;
|
||||
//TODO - write value
|
||||
printf(" ACPI write %02X = %02X\n", state_data[0], data);
|
||||
break;
|
||||
default:
|
||||
state = PMC_STATE_DEFAULT;
|
||||
printf(" Unknown data\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user