| /* Copyright 2014 The ChromiumOS Authors |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| /* EC2I control module for IT83xx. */ |
| |
| #ifndef __CROS_EC_EC2I_CHIP_H |
| #define __CROS_EC_EC2I_CHIP_H |
| |
| #define P80L_P80LB 0 |
| #define P80L_P80LE 0x3F |
| #define P80L_P80LC 0 |
| #define P80L_BRAM_BANK1_SIZE_MASK 0x3F |
| |
| /* Index list of the host interface registers of PNPCFG */ |
| enum host_pnpcfg_index { |
| /* Logical Device Number */ |
| HOST_INDEX_LDN = 0x07, |
| /* Chip ID Byte 1 */ |
| HOST_INDEX_CHIPID1 = 0x20, |
| /* Chip ID Byte 2 */ |
| HOST_INDEX_CHIPID2 = 0x21, |
| /* Chip Version */ |
| HOST_INDEX_CHIPVER = 0x22, |
| /* Super I/O Control */ |
| HOST_INDEX_SIOCTRL = 0x23, |
| /* Super I/O IRQ Configuration */ |
| HOST_INDEX_SIOIRQ = 0x25, |
| /* Super I/O General Purpose */ |
| HOST_INDEX_SIOGP = 0x26, |
| /* Super I/O Power Mode */ |
| HOST_INDEX_SIOPWR = 0x2D, |
| /* Depth 2 I/O Address */ |
| HOST_INDEX_D2ADR = 0x2E, |
| /* Depth 2 I/O Data */ |
| HOST_INDEX_D2DAT = 0x2F, |
| /* Logical Device Activate Register */ |
| HOST_INDEX_LDA = 0x30, |
| /* I/O Port Base Address Bits [15:8] for Descriptor 0 */ |
| HOST_INDEX_IOBAD0_MSB = 0x60, |
| /* I/O Port Base Address Bits [7:0] for Descriptor 0 */ |
| HOST_INDEX_IOBAD0_LSB = 0x61, |
| /* I/O Port Base Address Bits [15:8] for Descriptor 1 */ |
| HOST_INDEX_IOBAD1_MSB = 0x62, |
| /* I/O Port Base Address Bits [7:0] for Descriptor 1 */ |
| HOST_INDEX_IOBAD1_LSB = 0x63, |
| /* Interrupt Request Number and Wake-Up on IRQ Enabled */ |
| HOST_INDEX_IRQNUMX = 0x70, |
| /* Interrupt Request Type Select */ |
| HOST_INDEX_IRQTP = 0x71, |
| /* DMA Channel Select 0 */ |
| HOST_INDEX_DMAS0 = 0x74, |
| /* DMA Channel Select 1 */ |
| HOST_INDEX_DMAS1 = 0x75, |
| /* Device Specific Logical Device Configuration 1 to 10 */ |
| HOST_INDEX_DSLDC1 = 0xF0, |
| HOST_INDEX_DSLDC2 = 0xF1, |
| HOST_INDEX_DSLDC3 = 0xF2, |
| HOST_INDEX_DSLDC4 = 0xF3, |
| HOST_INDEX_DSLDC5 = 0xF4, |
| HOST_INDEX_DSLDC6 = 0xF5, |
| HOST_INDEX_DSLDC7 = 0xF6, |
| HOST_INDEX_DSLDC8 = 0xF7, |
| HOST_INDEX_DSLDC9 = 0xF8, |
| HOST_INDEX_DSLDC10 = 0xF9, |
| }; |
| |
| /* List of logical device number (LDN) assignments */ |
| enum logical_device_number { |
| /* Serial Port 1 */ |
| LDN_UART1 = 0x01, |
| /* Serial Port 2 */ |
| LDN_UART2 = 0x02, |
| /* System Wake-Up Control */ |
| LDN_SWUC = 0x04, |
| /* KBC/Mouse Interface */ |
| LDN_KBC_MOUSE = 0x05, |
| /* KBC/Keyboard Interface */ |
| LDN_KBC_KEYBOARD = 0x06, |
| /* Consumer IR */ |
| LDN_CIR = 0x0A, |
| /* Shared Memory/Flash Interface */ |
| LDN_SMFI = 0x0F, |
| /* RTC-like Timer */ |
| LDN_RTCT = 0x10, |
| /* Power Management I/F Channel 1 */ |
| LDN_PMC1 = 0x11, |
| /* Power Management I/F Channel 2 */ |
| LDN_PMC2 = 0x12, |
| /* Serial Peripheral Interface */ |
| LDN_SSPI = 0x13, |
| /* Platform Environment Control Interface */ |
| LDN_PECI = 0x14, |
| /* Power Management I/F Channel 3 */ |
| LDN_PMC3 = 0x17, |
| /* Power Management I/F Channel 4 */ |
| LDN_PMC4 = 0x18, |
| /* Power Management I/F Channel 5 */ |
| LDN_PMC5 = 0x19, |
| }; |
| |
| /* EC2I read/write message */ |
| enum ec2i_message { |
| /* EC2I write success */ |
| EC2I_WRITE_SUCCESS = 0x00, |
| /* EC2I write error */ |
| EC2I_WRITE_ERROR = 0x01, |
| /* EC2I read success */ |
| EC2I_READ_SUCCESS = 0x8000, |
| /* EC2I read error */ |
| EC2I_READ_ERROR = 0x8100, |
| }; |
| |
| /* Data structure for initializing PNPCFG via ec2i. */ |
| struct ec2i_t { |
| /* index port */ |
| enum host_pnpcfg_index index_port; |
| /* data port */ |
| uint8_t data_port; |
| }; |
| |
| /* EC2I write */ |
| enum ec2i_message ec2i_write(enum host_pnpcfg_index index, uint8_t data); |
| |
| /* EC2I read */ |
| enum ec2i_message ec2i_read(enum host_pnpcfg_index index); |
| |
| #endif /* __CROS_EC_EC2I_CHIP_H */ |