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