diff options
author | Feng Tang <feng.tang@intel.com> | 2010-05-25 04:40:47 -0400 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2010-05-25 11:41:43 -0400 |
commit | 5487ab4a5a71e955fef7094a0624df0542da91ef (patch) | |
tree | 474021353de5a708998865406d2a7eec7060860c /include/linux/sfi.h | |
parent | e40152ee1e1c7a63f4777791863215e3faa37a86 (diff) |
SFI: add support for v0.81 spec
There are 2 major changes from v0.81 to v0.7:
1. Consolidating the SPIB/I2CB tables into a new DEVS table,
which is more expandable and can support other bus types
than spi/i2c.
2. Creating a new GPIO table, which list all the GPIO pins
used in the platform.
However, to avoid breaking current platforms who use SFI v0.7
version firmware, the definitions for SPIB/I2CB will still
be kept for a while
Signed-off-by: Feng Tang <feng.tang@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'include/linux/sfi.h')
-rw-r--r-- | include/linux/sfi.h | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/include/linux/sfi.h b/include/linux/sfi.h index 9a6f7607174e..0299b4ce63db 100644 --- a/include/linux/sfi.h +++ b/include/linux/sfi.h | |||
@@ -73,6 +73,8 @@ | |||
73 | #define SFI_SIG_SPIB "SPIB" | 73 | #define SFI_SIG_SPIB "SPIB" |
74 | #define SFI_SIG_I2CB "I2CB" | 74 | #define SFI_SIG_I2CB "I2CB" |
75 | #define SFI_SIG_GPEM "GPEM" | 75 | #define SFI_SIG_GPEM "GPEM" |
76 | #define SFI_SIG_DEVS "DEVS" | ||
77 | #define SFI_SIG_GPIO "GPIO" | ||
76 | 78 | ||
77 | #define SFI_SIGNATURE_SIZE 4 | 79 | #define SFI_SIGNATURE_SIZE 4 |
78 | #define SFI_OEM_ID_SIZE 6 | 80 | #define SFI_OEM_ID_SIZE 6 |
@@ -145,6 +147,27 @@ struct sfi_rtc_table_entry { | |||
145 | u32 irq; | 147 | u32 irq; |
146 | } __packed; | 148 | } __packed; |
147 | 149 | ||
150 | struct sfi_device_table_entry { | ||
151 | u8 type; /* bus type, I2C, SPI or ...*/ | ||
152 | #define SFI_DEV_TYPE_SPI 0 | ||
153 | #define SFI_DEV_TYPE_I2C 1 | ||
154 | #define SFI_DEV_TYPE_UART 2 | ||
155 | #define SFI_DEV_TYPE_HSI 3 | ||
156 | #define SFI_DEV_TYPE_IPC 4 | ||
157 | |||
158 | u8 host_num; /* attached to host 0, 1...*/ | ||
159 | u16 addr; | ||
160 | u8 irq; | ||
161 | u32 max_freq; | ||
162 | char name[16]; | ||
163 | } __packed; | ||
164 | |||
165 | struct sfi_gpio_table_entry { | ||
166 | char controller_name[16]; | ||
167 | u16 pin_no; | ||
168 | char pin_name[16]; | ||
169 | } __packed; | ||
170 | |||
148 | struct sfi_spi_table_entry { | 171 | struct sfi_spi_table_entry { |
149 | u16 host_num; /* attached to host 0, 1...*/ | 172 | u16 host_num; /* attached to host 0, 1...*/ |
150 | u16 cs; /* chip select */ | 173 | u16 cs; /* chip select */ |
@@ -166,7 +189,6 @@ struct sfi_gpe_table_entry { | |||
166 | u16 phys_id; /* physical GPE id */ | 189 | u16 phys_id; /* physical GPE id */ |
167 | } __packed; | 190 | } __packed; |
168 | 191 | ||
169 | |||
170 | typedef int (*sfi_table_handler) (struct sfi_table_header *table); | 192 | typedef int (*sfi_table_handler) (struct sfi_table_header *table); |
171 | 193 | ||
172 | #ifdef CONFIG_SFI | 194 | #ifdef CONFIG_SFI |