platform/chrome: cros_ec_lpcs: reserve the MEC LPC I/O ports first
Some ChromeOS EC devices (such as the Framework Laptop) only map I/O ports 0x800-0x807. Making the larger reservation required by the non-MEC LPC (the 0xFF ports for the memory map, and the 0xFF ports for the parameter region) is non-viable on these devices. Since we probe the MEC EC first, we can get away with a smaller reservation that covers the MEC EC ports. If we fall back to classic LPC, we can grow the reservation to cover the memory map and the parameter region. cros_ec_lpc_probe also interacted with I/O ports 0x800-0x807 without a reservation. Restructuring the code to request the MEC LPC region first obviates the need to do so. Signed-off-by: Dustin L. Howett <dustin@howett.net> Signed-off-by: Tzung-Bi Shih <tzungbi@kernel.org> Link: https://lore.kernel.org/r/20220217165930.15081-3-dustin@howett.net
This commit is contained in:
parent
6a5d778eda
commit
c9bc1a0ef9
2 changed files with 33 additions and 16 deletions
|
|
@ -51,10 +51,14 @@
|
|||
/*
|
||||
* The actual block is 0x800-0x8ff, but some BIOSes think it's 0x880-0x8ff
|
||||
* and they tell the kernel that so we have to think of it as two parts.
|
||||
*
|
||||
* Other BIOSes report only the I/O port region spanned by the Microchip
|
||||
* MEC series EC; an attempt to address a larger region may fail.
|
||||
*/
|
||||
#define EC_HOST_CMD_REGION0 0x800
|
||||
#define EC_HOST_CMD_REGION1 0x880
|
||||
#define EC_HOST_CMD_REGION_SIZE 0x80
|
||||
#define EC_HOST_CMD_REGION0 0x800
|
||||
#define EC_HOST_CMD_REGION1 0x880
|
||||
#define EC_HOST_CMD_REGION_SIZE 0x80
|
||||
#define EC_HOST_CMD_MEC_REGION_SIZE 0x8
|
||||
|
||||
/* EC command register bit functions */
|
||||
#define EC_LPC_CMDR_DATA BIT(0) /* Data ready for host to read */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue