3 #ifndef SUPERIO_SCH_5545_EMI_H
4 #define SUPERIO_SCH_5545_EMI_H
10 #define SCH5545_EMI_HOST_TO_EC_MAILBOX 0x0
11 #define SCH5545_EMI_EC_TO_HOST_MAILBOX 0x1
12 #define SCH5545_EMI_EC_ADDR 0x2
13 #define SCH5545_EMI_EC_DATA 0x4
14 #define SCH5545_EMI_INT_SOURCE 0x8
15 #define SCH5545_EMI_INT_MASK 0xa
17 #define EMI_EC_8BIT_ACCESS 0
18 #define EMI_EC_16BIT_ACCESS 1
19 #define EMI_EC_32BIT_ACCESS 2
20 #define EMI_EC_32BIT_AUTO_ACCESS 3
u8 buffer[C2P_BUFFER_MAXSIZE]
void sch5545_emi_set_int_mask_low(uint8_t mask)
Sets the EC interrupt mask for LSB in the Interrupt Mask register.
uint8_t sch5545_emi_get_int_src_low(void)
Returns LSB of interrupt source register.
void sch5545_emi_clear_int_src(void)
Clears the interrupt status bits.
uint8_t sch5545_emi_get_int_mask_low(void)
Returns LSB of Interrupt mask register.
uint8_t sch5545_emi_ec_read8(uint16_t addr)
Reads any byte of 4 bytes from the 32bit dword indicated by addr.
uint16_t sch5545_emi_ec_read16(uint16_t addr)
Reads any word of 2 words from the 32bit dword indicated by addr.
void sch5545_emi_disable_interrupts(void)
Writes the interrupt mask register with 0.
uint8_t sch5545_emi_get_int_src_high(void)
Returns MSB of interrupt source register.
void sch5545_emi_set_int_src(uint16_t int_src)
Writes int_src bits to clear the desired interrupt source bits.
void sch5545_emi_h2ec_mbox_write(uint8_t mbox_message)
Writes the Host to EC mailbox 8bit register with mbox_message.
void sch5545_emi_set_int_src_low(uint8_t int_src)
Writes int_src bits to clear the desired interrupt source LSB.
uint16_t sch5545_emi_get_int_src(void)
Returns the content of interrupt source register.
void sch5545_emi_ec_write32(uint16_t addr, uint32_t data)
Writes dword of data at the desired address indicated by addr.
void sch5545_emi_ec_write8(uint16_t addr, uint8_t data)
Writes any byte of 4 bytes from the 32bit dword indicated by addr.
uint8_t sch5545_emi_get_int_mask_high(void)
Returns MSB of Interrupt mask register.
void sch5545_emi_ec2h_mailbox_clear(void)
Reads the EC to Host mailbox register and then writes the same content to clear it.
void sch5545_emi_ec_write16(uint16_t addr, uint16_t data)
Writes any word of 2 words from the 32bit dword indicated by addr.
uint16_t sch5545_emi_get_int_mask(void)
Returns the content of interrupt mask register.
void sch5545_emi_ec_write32_bulk(uint16_t addr, const uint32_t *buffer, size_t len)
Writes an array of dwords at the desired address indicated by addr.
void sch5545_emi_set_int_src_high(uint8_t int_src)
Writes int_src bits to clear the desired interrupt source MSB.
uint16_t sch5545_read_emi_bar(uint8_t sio_port)
Reads and returns the base address of EMI from the SuperIO.
uint16_t sch5545_emi_read_ec_addr(void)
Return the current EC address used for indirect access to Embedded Memory.
uint8_t sch5545_emi_ec2h_mbox_read(void)
Reads and returns the EC to Host mailbox 8bit register.
void sch5545_emi_set_int_mask(uint16_t mask)
Sets the mask for all EC interrupts.
void sch5545_emi_init(uint8_t sio_port)
One must call this function at every stage before using any of the EMI functions.
void sch5545_emi_set_int_mask_high(uint8_t mask)
Sets the EC interrupt mask for MSB in the Interrupt Mask register.
void sch5545_emi_ec2h_mbox_write(uint8_t mbox_message)
Writes the EC to Host mailbox 8bit register with mbox_message.
uint32_t sch5545_emi_ec_read32(uint16_t addr)
Reads dword of data at the desired address indicated by addr.
void sch5545_emi_ec_read32_bulk(uint16_t addr, uint32_t *buffer, size_t len)
Reads a stream of dwords of size len to an array of dwords from the desired address indicated by addr...
void sch5545_emi_set_ec_addr(uint16_t addr)
Sets the EC address registers with given addr for indirect access to Embedded Memory.
uint8_t sch5545_emi_h2ec_mbox_read(void)
Reads and returns the Host to EC mailbox 8bit register.