Commit 0996bd1c authored by Oded Gabbay's avatar Oded Gabbay
Browse files

habanalabs: display card name as sensors header



To allow the user to use a custom file for the HWMON lm-sensors library
per card type, the driver needs to register the HWMON sensors with the
specific card type name.

The card name is supplied by the F/W running on the device. If the F/W is
old and doesn't supply a card name, a default card name is displayed as
the sensors group name.

Signed-off-by: default avatarOded Gabbay <oded.gabbay@gmail.com>
Reviewed-by: default avatarOmer Shpigelman <oshpigelman@habana.ai>
parent e9730763
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -4961,6 +4961,10 @@ int goya_armcp_info_get(struct hl_device *hdev)
		prop->dram_end_address = prop->dram_base_address + dram_size;
	}

	if (!strlen(prop->armcp_info.card_name))
		strncpy(prop->armcp_info.card_name, GOYA_DEFAULT_CARD_NAME,
				CARD_NAME_MAX_LEN);

	return 0;
}

+2 −0
Original line number Diff line number Diff line
@@ -55,6 +55,8 @@

#define DRAM_PHYS_DEFAULT_SIZE		0x100000000ull	/* 4GB */

#define GOYA_DEFAULT_CARD_NAME		"HL1000"

/* DRAM Memory Map */

#define CPU_FW_IMAGE_SIZE		0x10000000	/* 256MB */
+3 −1
Original line number Diff line number Diff line
@@ -421,6 +421,7 @@ void hl_set_pwm_info(struct hl_device *hdev, int sensor_index, u32 attr,
int hl_hwmon_init(struct hl_device *hdev)
{
	struct device *dev = hdev->pdev ? &hdev->pdev->dev : hdev->dev;
	struct asic_fixed_properties *prop = &hdev->asic_prop;
	int rc;

	if ((hdev->hwmon_initialized) || !(hdev->fw_loading))
@@ -430,7 +431,8 @@ int hl_hwmon_init(struct hl_device *hdev)
		hdev->hl_chip_info->ops = &hl_hwmon_ops;

		hdev->hwmon_dev = hwmon_device_register_with_info(dev,
				"habanalabs", hdev, hdev->hl_chip_info, NULL);
					prop->armcp_info.card_name, hdev,
					hdev->hl_chip_info, NULL);
		if (IS_ERR(hdev->hwmon_dev)) {
			rc = PTR_ERR(hdev->hwmon_dev);
			dev_err(hdev->dev,
+16 −1
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0
 *
 * Copyright 2016-2018 HabanaLabs, Ltd.
 * Copyright 2016-2019 HabanaLabs, Ltd.
 * All Rights Reserved.
 *
 */
@@ -310,6 +310,7 @@ struct eq_generic_event {
 * ArmCP info
 */

#define CARD_NAME_MAX_LEN		16
#define VERSION_MAX_LEN			128
#define ARMCP_MAX_SENSORS		128

@@ -318,6 +319,19 @@ struct armcp_sensor {
	__le32 flags;
};

/**
 * struct armcp_info - host driver's necessary info from ArmCP.
 * @sensors: available sensors description.
 * @kernel_version: ArmCP linux kernel version.
 * @reserved: reserved field.
 * @cpld_version: CPLD programmed F/W version.
 * @infineon_version: Infineon main DC-DC version.
 * @fuse_version: silicon production FUSE information.
 * @thermal_version: thermald S/W version.
 * @armcp_version: ArmCP S/W version.
 * @dram_size: available DRAM size.
 * @card_name: card name that will be displayed in HWMON subsystem on the host
 */
struct armcp_info {
	struct armcp_sensor sensors[ARMCP_MAX_SENSORS];
	__u8 kernel_version[VERSION_MAX_LEN];
@@ -328,6 +342,7 @@ struct armcp_info {
	__u8 thermal_version[VERSION_MAX_LEN];
	__u8 armcp_version[VERSION_MAX_LEN];
	__le64 dram_size;
	char card_name[CARD_NAME_MAX_LEN];
};

#endif /* ARMCP_IF_H */