mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-25 13:14:07 +08:00
PCI/switchtec: Add Gen4 system info register support
Add the Gen4-specific system info registers and ensure their usage is guarded by a check on the device's generation. Link: https://lore.kernel.org/r/20200115035648.2578-6-logang@deltatee.com Signed-off-by: Logan Gunthorpe <logang@deltatee.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
This commit is contained in:
parent
993d208daa
commit
a3321ca394
@ -321,6 +321,9 @@ static ssize_t field ## _show(struct device *dev, \
|
||||
if (stdev->gen == SWITCHTEC_GEN3) \
|
||||
return io_string_show(buf, &si->gen3.field, \
|
||||
sizeof(si->gen3.field)); \
|
||||
else if (stdev->gen == SWITCHTEC_GEN4) \
|
||||
return io_string_show(buf, &si->gen4.field, \
|
||||
sizeof(si->gen4.field)); \
|
||||
else \
|
||||
return -ENOTSUPP; \
|
||||
} \
|
||||
@ -1429,6 +1432,8 @@ static int switchtec_init_pci(struct switchtec_dev *stdev,
|
||||
|
||||
if (stdev->gen == SWITCHTEC_GEN3)
|
||||
part_id = &stdev->mmio_sys_info->gen3.partition_id;
|
||||
else if (stdev->gen == SWITCHTEC_GEN4)
|
||||
part_id = &stdev->mmio_sys_info->gen4.partition_id;
|
||||
else
|
||||
return -ENOTSUPP;
|
||||
|
||||
|
@ -34,6 +34,7 @@ enum {
|
||||
|
||||
enum switchtec_gen {
|
||||
SWITCHTEC_GEN3,
|
||||
SWITCHTEC_GEN4,
|
||||
};
|
||||
|
||||
struct mrpc_regs {
|
||||
@ -125,12 +126,54 @@ struct sys_info_regs_gen3 {
|
||||
u8 component_revision;
|
||||
} __packed;
|
||||
|
||||
struct sys_info_regs_gen4 {
|
||||
u16 gas_layout_ver;
|
||||
u8 evlist_ver;
|
||||
u8 reserved1;
|
||||
u16 mgmt_cmd_set_ver;
|
||||
u16 fabric_cmd_set_ver;
|
||||
u32 reserved2[2];
|
||||
u8 mrpc_uart_ver;
|
||||
u8 mrpc_twi_ver;
|
||||
u8 mrpc_eth_ver;
|
||||
u8 mrpc_inband_ver;
|
||||
u32 reserved3[7];
|
||||
u32 fw_update_tmo;
|
||||
u32 xml_version_cfg;
|
||||
u32 xml_version_img;
|
||||
u32 partition_id;
|
||||
u16 bl2_running;
|
||||
u16 cfg_running;
|
||||
u16 img_running;
|
||||
u16 key_running;
|
||||
u32 reserved4[43];
|
||||
u32 vendor_seeprom_twi;
|
||||
u32 vendor_table_revision;
|
||||
u32 vendor_specific_info[2];
|
||||
u16 p2p_vendor_id;
|
||||
u16 p2p_device_id;
|
||||
u8 p2p_revision_id;
|
||||
u8 reserved5[3];
|
||||
u32 p2p_class_id;
|
||||
u16 subsystem_vendor_id;
|
||||
u16 subsystem_id;
|
||||
u32 p2p_serial_number[2];
|
||||
u8 mac_addr[6];
|
||||
u8 reserved6[2];
|
||||
u32 reserved7[3];
|
||||
char vendor_id[8];
|
||||
char product_id[24];
|
||||
char product_revision[2];
|
||||
u16 reserved8;
|
||||
} __packed;
|
||||
|
||||
struct sys_info_regs {
|
||||
u32 device_id;
|
||||
u32 device_version;
|
||||
u32 firmware_version;
|
||||
union {
|
||||
struct sys_info_regs_gen3 gen3;
|
||||
struct sys_info_regs_gen4 gen4;
|
||||
};
|
||||
} __packed;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user