habanalabs/gaudi: read div_sel value from firmware
authorOhad Sharabi <osharabi@habana.ai>
Sun, 24 Jul 2022 07:23:05 +0000 (10:23 +0300)
committerOded Gabbay <ogabbay@kernel.org>
Sun, 18 Sep 2022 10:29:50 +0000 (13:29 +0300)
Even when running with unsecured f/w, we should read the PLL div_sel
value from the f/w as this register is always privileged.

Signed-off-by: Ohad Sharabi <osharabi@habana.ai>
Reviewed-by: Oded Gabbay <ogabbay@kernel.org>
Signed-off-by: Oded Gabbay <ogabbay@kernel.org>
drivers/misc/habanalabs/gaudi/gaudi.c

index 866dc4b..7f52935 100644 (file)
@@ -899,12 +899,13 @@ static int gaudi_early_fini(struct hl_device *hdev)
  */
 static int gaudi_fetch_psoc_frequency(struct hl_device *hdev)
 {
-       struct asic_fixed_properties *prop = &hdev->asic_prop;
        u32 nr = 0, nf = 0, od = 0, div_fctr = 0, pll_clk, div_sel;
+       struct asic_fixed_properties *prop = &hdev->asic_prop;
        u16 pll_freq_arr[HL_PLL_NUM_OUTPUTS], freq;
        int rc;
 
-       if (hdev->asic_prop.fw_security_enabled) {
+       if ((hdev->fw_components & FW_TYPE_LINUX) &&
+                       (prop->fw_app_cpu_boot_dev_sts0 & CPU_BOOT_DEV_STS0_PLL_INFO_EN)) {
                struct gaudi_device *gaudi = hdev->asic_specific;
 
                if (!(gaudi->hw_cap_initialized & HW_CAP_CPU_Q))