drivers: espi: Add support for KBC status operations
In some systems, eSPI host perform operations directly over KBC HW status. Signed-off-by: Jose Alberto Meza <jose.a.meza.arellano@intel.com>
This commit is contained in:
parent
3b0917bcbf
commit
a1b6dd51d0
2 changed files with 21 additions and 2 deletions
|
@ -329,10 +329,13 @@ static int espi_xec_read_lpc_request(struct device *dev,
|
||||||
* automatically cleared after host reads
|
* automatically cleared after host reads
|
||||||
* the data
|
* the data
|
||||||
*/
|
*/
|
||||||
*data = KBC_REGS->EC_KBC_STS & (1 << 0U) ? 1 : 0;
|
*data = KBC_REGS->EC_KBC_STS & MCHP_KBC_STS_OBF ? 1 : 0;
|
||||||
break;
|
break;
|
||||||
case E8042_IBF_HAS_CHAR:
|
case E8042_IBF_HAS_CHAR:
|
||||||
*data = KBC_REGS->EC_KBC_STS & (1 << 1U) ? 1 : 0;
|
*data = KBC_REGS->EC_KBC_STS & MCHP_KBC_STS_IBF ? 1 : 0;
|
||||||
|
break;
|
||||||
|
case E8042_READ_KB_STS:
|
||||||
|
*data = KBC_REGS->EC_KBC_STS;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
@ -376,6 +379,18 @@ static int espi_xec_write_lpc_request(struct device *dev,
|
||||||
case E8042_CLEAR_OBF:
|
case E8042_CLEAR_OBF:
|
||||||
dummy = KBC_REGS->HOST_AUX_DATA;
|
dummy = KBC_REGS->HOST_AUX_DATA;
|
||||||
break;
|
break;
|
||||||
|
case E8042_SET_FLAG:
|
||||||
|
/* FW shouldn't modify these flags directly */
|
||||||
|
*data &= ~(MCHP_KBC_STS_OBF | MCHP_KBC_STS_IBF |
|
||||||
|
MCHP_KBC_STS_AUXOBF);
|
||||||
|
KBC_REGS->EC_KBC_STS |= *data;
|
||||||
|
break;
|
||||||
|
case E8042_CLEAR_FLAG:
|
||||||
|
/* FW shouldn't modify these flags directly */
|
||||||
|
*data |= (MCHP_KBC_STS_OBF | MCHP_KBC_STS_IBF |
|
||||||
|
MCHP_KBC_STS_AUXOBF);
|
||||||
|
KBC_REGS->EC_KBC_STS &= ~(*data);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -219,6 +219,10 @@ enum lpc_peripheral_opcode {
|
||||||
E8042_RESUME_IRQ,
|
E8042_RESUME_IRQ,
|
||||||
E8042_PAUSE_IRQ,
|
E8042_PAUSE_IRQ,
|
||||||
E8042_CLEAR_OBF,
|
E8042_CLEAR_OBF,
|
||||||
|
/* Status transactions */
|
||||||
|
E8042_READ_KB_STS,
|
||||||
|
E8042_SET_FLAG,
|
||||||
|
E8042_CLEAR_FLAG,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue