Commit fca72fbb authored by Omer Shpigelman's avatar Omer Shpigelman Committed by Oded Gabbay

habanalabs: get card type, location from F/W

For Gaudi the driver gets two new additional properties from the F/W:
1. The card's type - PCI or PMC
2. The card's location in the Gaudi's box (relevant only for PMC).

The card's location is also passed to the user in the HW IP info structure
as it needs this property for establishing communication between Gaudis.
Signed-off-by: default avatarOmer Shpigelman <oshpigelman@habana.ai>
Reviewed-by: default avatarOded Gabbay <oded.gabbay@gmail.com>
Signed-off-by: default avatarOded Gabbay <oded.gabbay@gmail.com>
parent ca62433f
...@@ -71,6 +71,8 @@ static int hw_ip_info(struct hl_device *hdev, struct hl_info_args *args) ...@@ -71,6 +71,8 @@ static int hw_ip_info(struct hl_device *hdev, struct hl_info_args *args)
min(CARD_NAME_MAX_LEN, HL_INFO_CARD_NAME_MAX_LEN)); min(CARD_NAME_MAX_LEN, HL_INFO_CARD_NAME_MAX_LEN));
hw_ip.armcp_cpld_version = le32_to_cpu(prop->armcp_info.cpld_version); hw_ip.armcp_cpld_version = le32_to_cpu(prop->armcp_info.cpld_version);
hw_ip.module_id = le32_to_cpu(prop->armcp_info.card_location);
hw_ip.psoc_pci_pll_nr = prop->psoc_pci_pll_nr; hw_ip.psoc_pci_pll_nr = prop->psoc_pci_pll_nr;
hw_ip.psoc_pci_pll_nf = prop->psoc_pci_pll_nf; hw_ip.psoc_pci_pll_nf = prop->psoc_pci_pll_nf;
hw_ip.psoc_pci_pll_od = prop->psoc_pci_pll_od; hw_ip.psoc_pci_pll_od = prop->psoc_pci_pll_od;
......
/* SPDX-License-Identifier: GPL-2.0 /* SPDX-License-Identifier: GPL-2.0
* *
* Copyright 2016-2019 HabanaLabs, Ltd. * Copyright 2016-2020 HabanaLabs, Ltd.
* All Rights Reserved. * All Rights Reserved.
* *
*/ */
...@@ -35,7 +35,8 @@ struct hl_eq_entry { ...@@ -35,7 +35,8 @@ struct hl_eq_entry {
enum pq_init_status { enum pq_init_status {
PQ_INIT_STATUS_NA = 0, PQ_INIT_STATUS_NA = 0,
PQ_INIT_STATUS_READY_FOR_CP, PQ_INIT_STATUS_READY_FOR_CP,
PQ_INIT_STATUS_READY_FOR_HOST PQ_INIT_STATUS_READY_FOR_HOST,
PQ_INIT_STATUS_READY_FOR_CP_SINGLE_MSI
}; };
/* /*
...@@ -350,11 +351,24 @@ struct armcp_sensor { ...@@ -350,11 +351,24 @@ struct armcp_sensor {
__le32 flags; __le32 flags;
}; };
/**
* struct armcp_card_types - ASIC card type.
* @armcp_card_type_pci: PCI card.
* @armcp_card_type_pmc: PCI Mezzanine Card.
*/
enum armcp_card_types {
armcp_card_type_pci,
armcp_card_type_pmc
};
/** /**
* struct armcp_info - Info from ArmCP that is necessary to the host's driver * struct armcp_info - Info from ArmCP that is necessary to the host's driver
* @sensors: available sensors description. * @sensors: available sensors description.
* @kernel_version: ArmCP linux kernel version. * @kernel_version: ArmCP linux kernel version.
* @reserved: reserved field. * @reserved: reserved field.
* @card_type: card configuration type.
* @card_location: in a server, each card has different connections topology
* depending on its location (relevant for PMC card type)
* @cpld_version: CPLD programmed F/W version. * @cpld_version: CPLD programmed F/W version.
* @infineon_version: Infineon main DC-DC version. * @infineon_version: Infineon main DC-DC version.
* @fuse_version: silicon production FUSE information. * @fuse_version: silicon production FUSE information.
...@@ -366,7 +380,9 @@ struct armcp_sensor { ...@@ -366,7 +380,9 @@ struct armcp_sensor {
struct armcp_info { struct armcp_info {
struct armcp_sensor sensors[ARMCP_MAX_SENSORS]; struct armcp_sensor sensors[ARMCP_MAX_SENSORS];
__u8 kernel_version[VERSION_MAX_LEN]; __u8 kernel_version[VERSION_MAX_LEN];
__le32 reserved[3]; __le32 reserved;
__le32 card_type;
__le32 card_location;
__le32 cpld_version; __le32 cpld_version;
__le32 infineon_version; __le32 infineon_version;
__u8 fuse_version[VERSION_MAX_LEN]; __u8 fuse_version[VERSION_MAX_LEN];
......
...@@ -125,7 +125,8 @@ struct hl_info_hw_ip_info { ...@@ -125,7 +125,8 @@ struct hl_info_hw_ip_info {
__u32 sram_size; __u32 sram_size;
__u32 num_of_events; __u32 num_of_events;
__u32 device_id; /* PCI Device ID */ __u32 device_id; /* PCI Device ID */
__u32 reserved[3]; __u32 module_id; /* For mezzanine cards in servers (From OCP spec.) */
__u32 reserved[2];
__u32 armcp_cpld_version; __u32 armcp_cpld_version;
__u32 psoc_pci_pll_nr; __u32 psoc_pci_pll_nr;
__u32 psoc_pci_pll_nf; __u32 psoc_pci_pll_nf;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment