/* SPDX-License-Identifier: GPL-2.0 */
/*
* LPC variant I / O for Microchip EC
*
* Copyright ( C ) 2016 Google , Inc
*/
#ifndef __CROS_EC_LPC_MEC_H
#define __CROS_EC_LPC_MEC_H
#include <linux/acpi.h>
enum cros_ec_lpc_mec_emi_access_mode {
/* 8-bit access */
ACCESS_TYPE_BYTE = 0 x0,
/* 16-bit access */
ACCESS_TYPE_WORD = 0 x1,
/* 32-bit access */
ACCESS_TYPE_LONG = 0 x2,
/*
* 32 - bit access , read or write of MEC_EMI_EC_DATA_B3 causes the
* EC data register to be incremented .
*/
ACCESS_TYPE_LONG_AUTO_INCREMENT = 0 x3,
};
enum cros_ec_lpc_mec_io_type {
MEC_IO_READ,
MEC_IO_WRITE,
};
/* EMI registers are relative to base */
#define MEC_EMI_HOST_TO_EC(MEC_EMI_BASE) ((MEC_EMI_BASE) + 0 )
#define MEC_EMI_EC_TO_HOST(MEC_EMI_BASE) ((MEC_EMI_BASE) + 1 )
#define MEC_EMI_EC_ADDRESS_B0(MEC_EMI_BASE) ((MEC_EMI_BASE) + 2 )
#define MEC_EMI_EC_ADDRESS_B1(MEC_EMI_BASE) ((MEC_EMI_BASE) + 3 )
#define MEC_EMI_EC_DATA_B0(MEC_EMI_BASE) ((MEC_EMI_BASE) + 4 )
#define MEC_EMI_EC_DATA_B1(MEC_EMI_BASE) ((MEC_EMI_BASE) + 5 )
#define MEC_EMI_EC_DATA_B2(MEC_EMI_BASE) ((MEC_EMI_BASE) + 6 )
#define MEC_EMI_EC_DATA_B3(MEC_EMI_BASE) ((MEC_EMI_BASE) + 7 )
/**
* cros_ec_lpc_mec_init ( ) - Initialize MEC I / O .
*
* @ base : MEC EMI Base address
* @ end : MEC EMI End address
*/
void cros_ec_lpc_mec_init(unsigned int base, unsigned int end);
/**
* cros_ec_lpc_mec_acpi_mutex ( ) - Find and set ACPI mutex for MEC
*
* @ adev : Parent ACPI device
* @ pathname : Name of AML mutex
* @ return : Negative error code , or zero for success
*/
int cros_ec_lpc_mec_acpi_mutex(struct acpi_device *adev, const char *pathname);
/**
* cros_ec_lpc_mec_in_range ( ) - Determine if addresses are in MEC EMI range .
*
* @ offset : Address offset
* @ length : Number of bytes to check
*
* Return : 1 if in range , 0 if not , and - EINVAL on failure
* such as the mec range not being initialized
*/
int cros_ec_lpc_mec_in_range(unsigned int offset, unsigned int length);
/**
* cros_ec_lpc_io_bytes_mec - Read / write bytes to MEC EMI port
*
* @ io_type : MEC_IO_READ or MEC_IO_WRITE , depending on request
* @ offset : Base read / write address
* @ length : Number of bytes to read / write
* @ buf : Destination / source buffer
*
* @ return : A negative error code on error , or 8 - bit checksum of all
* bytes read / written
*/
int cros_ec_lpc_io_bytes_mec(enum cros_ec_lpc_mec_io_type io_type,
unsigned int offset, unsigned int length, u8 *buf);
#endif /* __CROS_EC_LPC_MEC_H */
Messung V0.5 in Prozent C=88 H=98 G=93
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-09-27)
¤
*© Formatika GbR, Deutschland