x86/sfi: Enable enumeration of SD devices
Subsystems (2)
PATCH 1/1 x86/sfi: Enable enumeration of SD devices
SFI specification v0.8.2 defines type of devices which are connected to SD bus. In particularly WiFi dongle is a such.
Add a callback to enumerate the devices connected to SD bus.
Signed-off-by Andy Shevchenko <[email protected]>
--- arch/x86/include/asm/intel-mid.h | 15 +++++++++++++++ arch/x86/platform/intel-mid/sfi.c | 29 +++++++++++++++++++++++++++++ include/linux/sfi.h | 1 + 3 files changed, 45 insertions(+)
arch/x86/include/asm/intel-mid.h +15 -0
@@ -49,6 +49,21 @@ struct devs_id { static const struct devs_id *const __intel_mid_sfi_##i##_dev __used \ __attribute__((__section__(".x86_intel_mid_dev.init"))) = &i +/** +* struct mid_sd_board_info - template for SD device creation +* @name: identifies the driver +* @bus_num: board-specific identifier for a given SD controller +* @max_clk: the maximum frequency device supports +* @platform_data: the particular data stored there is driver-specific +*/ +struct mid_sd_board_info { +char name[SFI_NAME_LEN ]; +int bus_num; +unsigned short addr; +u32 max_clk; +void *platform_data; +}; +/* * Medfield is the follow-up of Moorestown, it combines two chip solution into * one. Other than that it also added always-on and constant tsc and lapic
arch/x86/platform/intel-mid/sfi.c +29 -0
@@ -407,6 +407,32 @@ static void __init sfi_handle_i2c_dev(struct sfi_device_table_entry *pentry,i2c_register_board_info (pentry->host_num, &i2c_info,1 ); } +static void __init sfi_handle_sd_dev (struct sfi_device_table_entry *pentry, +struct devs_id *dev) +{ +struct mid_sd_board_info sd_info; +void *pdata; + +memset (&sd_info,0 ,sizeof (sd_info)); +strncpy (sd_info.name, pentry->name,SFI_NAME_LEN ); + sd_info.bus_num = pentry->host_num; + sd_info.max_clk = pentry->max_freq; + sd_info.addr = pentry->addr; +pr_debug ("SD bus = %d, name = %16.16s, max_clk = %d, addr = 0x%x\n" , + sd_info.bus_num, + sd_info.name, + sd_info.max_clk, + sd_info.addr); + pdata =intel_mid_sfi_get_pdata (dev, &sd_info); +if (IS_ERR (pdata)) +return ; + +/* Nothing we can do with this for now */ + sd_info.platform_data = pdata; + +pr_debug ("Successfully registered %16.16s" , sd_info.name); +} +extern struct devs_id *const __x86_intel_mid_dev_start[], *const __x86_intel_mid_dev_end[];
@@ -490,6 +516,9 @@ static int __init sfi_parse_devs(struct sfi_table_header *table)case SFI_DEV_TYPE_I2C :sfi_handle_i2c_dev (pentry, dev);break ; +case SFI_DEV_TYPE_SD : +sfi_handle_sd_dev (pentry, dev); +break ;case SFI_DEV_TYPE_UART :case SFI_DEV_TYPE_HSI :default :
include/linux/sfi.h +1 -0
@@ -156,6 +156,7 @@ struct sfi_device_table_entry {#define SFI_DEV_TYPE_UART 2#define SFI_DEV_TYPE_HSI 3#define SFI_DEV_TYPE_IPC 4 +#define SFI_DEV_TYPE_SD 5u8 host_num;/* attached to host 0, 1...*/ u16 addr;
Signature · 1 line
2.8.1
tip-bot for Andy Shevchenko
merge botx86/sfi: Enable enumeration of SD devices
Commit-ID: 05f310e26fe9d97fec0ce1752edc16bf1ea55a2d Gitweb: http://git.kernel.org/tip/05f310e26fe9d97fec0ce1752edc16bf1ea55a2d Author: Andy Shevchenko <[email protected]> AuthorDate: Tue, 12 Jul 2016 14:16:32 +0300 Committer: Ingo Molnar <[email protected]> CommitDate: Wed, 13 Jul 2016 09:24:51 +0200
x86/sfi: Enable enumeration of SD devices
SFI specification v0.8.2 defines type of devices which are connected to SD bus. In particularly WiFi dongle is a such.
Add a callback to enumerate the devices connected to SD bus.
Signed-off-by Andy Shevchenko <[email protected]>
Cc Bjorn Helgaas <[email protected]>
Cc Linus Torvalds <[email protected]>
Cc Peter Zijlstra <[email protected]>
Cc Thomas Gleixner <[email protected]>
Link http://lkml.kernel.org/r/1468322192-62080-1-git-send-email-andriy.shevchenko@linux.intel.com open here
Signed-off-by Ingo Molnar <[email protected]>
--- arch/x86/include/asm/intel-mid.h | 15 +++++++++++++++ arch/x86/platform/intel-mid/sfi.c | 29 +++++++++++++++++++++++++++++ include/linux/sfi.h | 1 + 3 files changed, 45 insertions(+)
arch/x86/include/asm/intel-mid.h +15 -0
@@ -49,6 +49,21 @@ struct devs_id { static const struct devs_id *const __intel_mid_sfi_##i##_dev __used \ __attribute__((__section__(".x86_intel_mid_dev.init"))) = &i +/** +* struct mid_sd_board_info - template for SD device creation +* @name: identifies the driver +* @bus_num: board-specific identifier for a given SD controller +* @max_clk: the maximum frequency device supports +* @platform_data: the particular data stored there is driver-specific +*/ +struct mid_sd_board_info { +char name[SFI_NAME_LEN ]; +int bus_num; +unsigned short addr; +u32 max_clk; +void *platform_data; +}; +/* * Medfield is the follow-up of Moorestown, it combines two chip solution into * one. Other than that it also added always-on and constant tsc and lapic
arch/x86/platform/intel-mid/sfi.c +29 -0
@@ -407,6 +407,32 @@ static void __init sfi_handle_i2c_dev(struct sfi_device_table_entry *pentry,i2c_register_board_info (pentry->host_num, &i2c_info,1 ); } +static void __init sfi_handle_sd_dev (struct sfi_device_table_entry *pentry, +struct devs_id *dev) +{ +struct mid_sd_board_info sd_info; +void *pdata; + +memset (&sd_info,0 ,sizeof (sd_info)); +strncpy (sd_info.name, pentry->name,SFI_NAME_LEN ); + sd_info.bus_num = pentry->host_num; + sd_info.max_clk = pentry->max_freq; + sd_info.addr = pentry->addr; +pr_debug ("SD bus = %d, name = %16.16s, max_clk = %d, addr = 0x%x\n" , + sd_info.bus_num, + sd_info.name, + sd_info.max_clk, + sd_info.addr); + pdata =intel_mid_sfi_get_pdata (dev, &sd_info); +if (IS_ERR (pdata)) +return ; + +/* Nothing we can do with this for now */ + sd_info.platform_data = pdata; + +pr_debug ("Successfully registered %16.16s" , sd_info.name); +} +extern struct devs_id *const __x86_intel_mid_dev_start[], *const __x86_intel_mid_dev_end[];
@@ -490,6 +516,9 @@ static int __init sfi_parse_devs(struct sfi_table_header *table)case SFI_DEV_TYPE_I2C :sfi_handle_i2c_dev (pentry, dev);break ; +case SFI_DEV_TYPE_SD : +sfi_handle_sd_dev (pentry, dev); +break ;case SFI_DEV_TYPE_UART :case SFI_DEV_TYPE_HSI :default :
include/linux/sfi.h +1 -0
@@ -156,6 +156,7 @@ struct sfi_device_table_entry {#define SFI_DEV_TYPE_UART 2#define SFI_DEV_TYPE_HSI 3#define SFI_DEV_TYPE_IPC 4 +#define SFI_DEV_TYPE_SD 5u8 host_num;/* attached to host 0, 1...*/ u16 addr;