Commit 5487ab4a5a71e955fef7094a0624df0542da91ef
Committed by
Len Brown
1 parent
e40152ee1e
Exists in
master
and in
4 other branches
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>
Showing 2 changed files with 24 additions and 2 deletions Side-by-side Diff
drivers/sfi/sfi_core.c
... | ... | @@ -390,7 +390,7 @@ |
390 | 390 | if (sfi_disabled) |
391 | 391 | return; |
392 | 392 | |
393 | - pr_info("Simple Firmware Interface v0.7 http://simplefirmware.org\n"); | |
393 | + pr_info("Simple Firmware Interface v0.81 http://simplefirmware.org\n"); | |
394 | 394 | |
395 | 395 | if (sfi_find_syst() || sfi_parse_syst() || sfi_platform_init()) |
396 | 396 | disable_sfi(); |
include/linux/sfi.h
... | ... | @@ -73,6 +73,8 @@ |
73 | 73 | #define SFI_SIG_SPIB "SPIB" |
74 | 74 | #define SFI_SIG_I2CB "I2CB" |
75 | 75 | #define SFI_SIG_GPEM "GPEM" |
76 | +#define SFI_SIG_DEVS "DEVS" | |
77 | +#define SFI_SIG_GPIO "GPIO" | |
76 | 78 | |
77 | 79 | #define SFI_SIGNATURE_SIZE 4 |
78 | 80 | #define SFI_OEM_ID_SIZE 6 |
... | ... | @@ -145,6 +147,27 @@ |
145 | 147 | u32 irq; |
146 | 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 | 171 | struct sfi_spi_table_entry { |
149 | 172 | u16 host_num; /* attached to host 0, 1...*/ |
150 | 173 | u16 cs; /* chip select */ |
... | ... | @@ -165,7 +188,6 @@ |
165 | 188 | u16 logical_id; /* logical id */ |
166 | 189 | u16 phys_id; /* physical GPE id */ |
167 | 190 | } __packed; |
168 | - | |
169 | 191 | |
170 | 192 | typedef int (*sfi_table_handler) (struct sfi_table_header *table); |
171 | 193 |