Files
OpenCellular/include/lpc.h
Randall Spangler 2464e96469 Add SMI/SCI support
BUG=chrome-os-partner:8277
TEST=manual

On EC console:
   hostevent set 0x1e
From root shell:
   ectool eventget --> should return 0x1e
   ectool eventclear 0x02
   ectool eventget --> should return 0x1c
   ectool queryec  --> should return event 3
   ectool queryec  --> should return event 4
   ectool queryec  --> should return event 5
   ectool queryec  --> should return no event pending
   ectool eventsetsmimask 0x1200
   ectool eventsetscimask 0x0034
   ectool eventgetsmimask --> should return 0x1200
   ectool eventgetscimask --> should return 0x0034
On EC console:
   hostevent --> should show raw=0 SMI mask = 0x1200 SCI mask = 0x34

Change-Id: I33042fa80c0b148cd63209a94a184af493e25ed3
2012-03-05 09:23:51 -08:00

67 lines
2.1 KiB
C

/* Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
/* LPC module for Chrome EC */
#ifndef __CROS_EC_LPC_H
#define __CROS_EC_LPC_H
#include "common.h"
/* Manually generates an IRQ to host.
* Note that the irq_num == 0 would set the AH bit (Active High).
*/
void lpc_manual_irq(int irq_num);
/* Initializes the LPC module. */
int lpc_init(void);
/* Returns a pointer to the host command data buffer. This buffer
* must only be accessed between a notification to
* host_command_received() and a subsequent call to
* lpc_SendHostResponse(). <slot> is 0 for kernel-originated
* commands, 1 for usermode-originated commands. */
uint8_t *lpc_get_host_range(int slot);
/* Returns a pointer to the memory-mapped buffer. This buffer is writable at
* any time, and the host can read it at any time. */
uint8_t *lpc_get_memmap_range(void);
/* Sends a result code to a host command. <slot> is 0 for kernel-originated
* commands, 1 for usermode-originated commands. */
void lpc_send_host_response(int slot, int result);
/* Return true if the TOH is still set */
int lpc_keyboard_has_char(void);
/* Send a byte to host via port 0x60 and asserts IRQ if specified. */
void lpc_keyboard_put_char(uint8_t chr, int send_irq);
/* Returns non-zero if the COMx interface has received a character. */
int lpc_comx_has_char(void);
/* Returns the next character pending on the COMx interface. */
int lpc_comx_get_char(void);
/* Puts a character to the COMx LPC interface. */
void lpc_comx_put_char(int c);
/* Set one or more SCI/SMI event bits. */
void lpc_set_host_events(uint32_t mask);
/* Clear one or more SCI/SMI event bits. Write 1 to a bit to clear it. */
void lpc_clear_host_events(uint32_t mask);
/* Return the raw SCI/SMI event state. */
uint32_t lpc_get_host_events(void);
/* Set the SMI (sci=0) or SMI (sci=1) event mask. */
void lpc_set_host_event_mask(int sci, uint32_t mask);
/* Return the SMI (sci=0) or SMI (sci=1) event mask. */
uint32_t lpc_get_host_event_mask(int sci);
#endif /* __CROS_EC_LPC_H */