Implement SCI in all necessary conditions

This commit is contained in:
Jeremy Soller
2020-01-28 16:22:51 -07:00
parent d2e02f2380
commit 9ba5ef8341

View File

@ -67,9 +67,13 @@ void pmc_event(struct Pmc * pmc) {
switch (data) {
case 0x80:
state = PMC_STATE_ACPI_READ;
// Send SCI for IBF=0
pmc_sci_interrupt();
break;
case 0x81:
state = PMC_STATE_ACPI_WRITE;
// Send SCI for IBF=0
pmc_sci_interrupt();
break;
case 0x82:
DEBUG(" burst enable\n");
@ -79,6 +83,8 @@ void pmc_event(struct Pmc * pmc) {
pmc_set_status(pmc, sts | (1 << 4));
// Send acknowledgement byte
pmc_write(pmc, 0x90, PMC_TIMEOUT);
// Send SCI for OBF=1
pmc_sci_interrupt();
break;
case 0x83:
DEBUG(" burst disable\n");
@ -86,6 +92,8 @@ void pmc_event(struct Pmc * pmc) {
burst_timeout = 0;
// Clear burst bit
pmc_set_status(pmc, sts & ~(1 << 4));
// Send SCI for IBF=0
pmc_sci_interrupt();
break;
case 0x84:
DEBUG(" SCI queue\n");
@ -95,6 +103,8 @@ void pmc_event(struct Pmc * pmc) {
pmc_write(pmc, pmc_sci_queue, PMC_TIMEOUT);
// Clear SCI queue
pmc_sci_queue = 0;
// Send SCI for OBF=1
pmc_sci_interrupt();
break;
case 0xEC:
@ -111,14 +121,20 @@ void pmc_event(struct Pmc * pmc) {
state = PMC_STATE_DEFAULT;
state_data = acpi_read(data);
pmc_write(pmc, state_data, PMC_TIMEOUT);
// Send SCI for OBF=1
pmc_sci_interrupt();
break;
case PMC_STATE_ACPI_WRITE:
state = PMC_STATE_ACPI_WRITE_ADDR;
state_data = data;
// Send SCI for IBF=0
pmc_sci_interrupt();
break;
case PMC_STATE_ACPI_WRITE_ADDR:
state = PMC_STATE_DEFAULT;
acpi_write(state_data, data);
// Send SCI for IBF=0
pmc_sci_interrupt();
break;
default:
state = PMC_STATE_DEFAULT;