You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
IPC driver for Intel Mobile Internet Device (MID) platforms
The IPC (inter processor communications) is used to provide the communications between kernel and system control units on some embedded Intel x86 platforms. (Various bits of clean up and restructuring by Alan Cox) Signed-off-by: Sreedhara DS <sreedhara.ds@intel.com> Signed-off-by: Alan Cox <alan@linux.intel.com>
This commit is contained in:
committed by
Matthew Garrett
parent
d5c051f108
commit
9a58a33339
@@ -0,0 +1,55 @@
|
|||||||
|
#ifndef _ASM_X86_INTEL_SCU_IPC_H_
|
||||||
|
#define _ASM_X86_INTEL_SCU_IPC_H_
|
||||||
|
|
||||||
|
/* Read single register */
|
||||||
|
int intel_scu_ipc_ioread8(u16 addr, u8 *data);
|
||||||
|
|
||||||
|
/* Read two sequential registers */
|
||||||
|
int intel_scu_ipc_ioread16(u16 addr, u16 *data);
|
||||||
|
|
||||||
|
/* Read four sequential registers */
|
||||||
|
int intel_scu_ipc_ioread32(u16 addr, u32 *data);
|
||||||
|
|
||||||
|
/* Read a vector */
|
||||||
|
int intel_scu_ipc_readv(u16 *addr, u8 *data, int len);
|
||||||
|
|
||||||
|
/* Write single register */
|
||||||
|
int intel_scu_ipc_iowrite8(u16 addr, u8 data);
|
||||||
|
|
||||||
|
/* Write two sequential registers */
|
||||||
|
int intel_scu_ipc_iowrite16(u16 addr, u16 data);
|
||||||
|
|
||||||
|
/* Write four sequential registers */
|
||||||
|
int intel_scu_ipc_iowrite32(u16 addr, u32 data);
|
||||||
|
|
||||||
|
/* Write a vector */
|
||||||
|
int intel_scu_ipc_writev(u16 *addr, u8 *data, int len);
|
||||||
|
|
||||||
|
/* Update single register based on the mask */
|
||||||
|
int intel_scu_ipc_update_register(u16 addr, u8 data, u8 mask);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Indirect register read
|
||||||
|
* Can be used when SCCB(System Controller Configuration Block) register
|
||||||
|
* HRIM(Honor Restricted IPC Messages) is set (bit 23)
|
||||||
|
*/
|
||||||
|
int intel_scu_ipc_register_read(u32 addr, u32 *data);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Indirect register write
|
||||||
|
* Can be used when SCCB(System Controller Configuration Block) register
|
||||||
|
* HRIM(Honor Restricted IPC Messages) is set (bit 23)
|
||||||
|
*/
|
||||||
|
int intel_scu_ipc_register_write(u32 addr, u32 data);
|
||||||
|
|
||||||
|
/* Issue commands to the SCU with or without data */
|
||||||
|
int intel_scu_ipc_simple_command(int cmd, int sub);
|
||||||
|
int intel_scu_ipc_command(int cmd, int sub, u32 *in, int inlen,
|
||||||
|
u32 *out, int outlen);
|
||||||
|
/* I2C control api */
|
||||||
|
int intel_scu_ipc_i2c_cntrl(u32 addr, u32 *data);
|
||||||
|
|
||||||
|
/* Update FW version */
|
||||||
|
int intel_scu_ipc_fw_update(u8 *buffer, u32 length);
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -527,4 +527,12 @@ config ACPI_CMPC
|
|||||||
keys as input device, backlight device, tablet and accelerometer
|
keys as input device, backlight device, tablet and accelerometer
|
||||||
devices.
|
devices.
|
||||||
|
|
||||||
|
config INTEL_SCU_IPC
|
||||||
|
bool "Intel SCU IPC Support"
|
||||||
|
depends on X86_MRST
|
||||||
|
default y
|
||||||
|
---help---
|
||||||
|
IPC is used to bridge the communications between kernel and SCU on
|
||||||
|
some embedded Intel x86 platforms.
|
||||||
|
|
||||||
endif # X86_PLATFORM_DEVICES
|
endif # X86_PLATFORM_DEVICES
|
||||||
|
|||||||
@@ -25,3 +25,4 @@ obj-$(CONFIG_ACPI_ASUS) += asus_acpi.o
|
|||||||
obj-$(CONFIG_TOPSTAR_LAPTOP) += topstar-laptop.o
|
obj-$(CONFIG_TOPSTAR_LAPTOP) += topstar-laptop.o
|
||||||
obj-$(CONFIG_ACPI_TOSHIBA) += toshiba_acpi.o
|
obj-$(CONFIG_ACPI_TOSHIBA) += toshiba_acpi.o
|
||||||
obj-$(CONFIG_TOSHIBA_BT_RFKILL) += toshiba_bluetooth.o
|
obj-$(CONFIG_TOSHIBA_BT_RFKILL) += toshiba_bluetooth.o
|
||||||
|
obj-$(CONFIG_INTEL_SCU_IPC) += intel_scu_ipc.o
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user