xref: /linux/drivers/accel/ivpu/ivpu_hw_btrs.h (revision a1ff5a7d78a036d6c2178ee5acd6ba4946243800)
18a27ad81SWachowski, Karol /* SPDX-License-Identifier: GPL-2.0-only */
28a27ad81SWachowski, Karol /*
38a27ad81SWachowski, Karol  * Copyright (C) 2020-2024 Intel Corporation
48a27ad81SWachowski, Karol  */
58a27ad81SWachowski, Karol 
68a27ad81SWachowski, Karol #ifndef __IVPU_HW_BTRS_H__
78a27ad81SWachowski, Karol #define __IVPU_HW_BTRS_H__
88a27ad81SWachowski, Karol 
98a27ad81SWachowski, Karol #include "ivpu_drv.h"
108a27ad81SWachowski, Karol #include "ivpu_hw_37xx_reg.h"
118a27ad81SWachowski, Karol #include "ivpu_hw_40xx_reg.h"
128a27ad81SWachowski, Karol #include "ivpu_hw_reg_io.h"
138a27ad81SWachowski, Karol 
148a27ad81SWachowski, Karol #define PLL_PROFILING_FREQ_DEFAULT   38400000
158a27ad81SWachowski, Karol #define PLL_PROFILING_FREQ_HIGH      400000000
168a27ad81SWachowski, Karol #define PLL_RATIO_TO_FREQ(x)         ((x) * PLL_REF_CLK_FREQ)
178a27ad81SWachowski, Karol 
18*a19bffb1SJacek Lawrynowicz #define DCT_DEFAULT_ACTIVE_PERCENT 15u
19*a19bffb1SJacek Lawrynowicz #define DCT_PERIOD_US		   35300u
20*a19bffb1SJacek Lawrynowicz 
218a27ad81SWachowski, Karol int ivpu_hw_btrs_info_init(struct ivpu_device *vdev);
228a27ad81SWachowski, Karol void ivpu_hw_btrs_freq_ratios_init(struct ivpu_device *vdev);
238a27ad81SWachowski, Karol int ivpu_hw_btrs_irqs_clear_with_0_mtl(struct ivpu_device *vdev);
248a27ad81SWachowski, Karol int ivpu_hw_btrs_wp_drive(struct ivpu_device *vdev, bool enable);
258a27ad81SWachowski, Karol int ivpu_hw_btrs_wait_for_clock_res_own_ack(struct ivpu_device *vdev);
268a27ad81SWachowski, Karol int ivpu_hw_btrs_d0i3_enable(struct ivpu_device *vdev);
278a27ad81SWachowski, Karol int ivpu_hw_btrs_d0i3_disable(struct ivpu_device *vdev);
288a27ad81SWachowski, Karol void ivpu_hw_btrs_set_port_arbitration_weights_lnl(struct ivpu_device *vdev);
298a27ad81SWachowski, Karol bool ivpu_hw_btrs_is_idle(struct ivpu_device *vdev);
308a27ad81SWachowski, Karol int ivpu_hw_btrs_wait_for_idle(struct ivpu_device *vdev);
318a27ad81SWachowski, Karol int ivpu_hw_btrs_ip_reset(struct ivpu_device *vdev);
328a27ad81SWachowski, Karol void ivpu_hw_btrs_profiling_freq_reg_set_lnl(struct ivpu_device *vdev);
338a27ad81SWachowski, Karol void ivpu_hw_btrs_ats_print_lnl(struct ivpu_device *vdev);
348a27ad81SWachowski, Karol void ivpu_hw_btrs_clock_relinquish_disable_lnl(struct ivpu_device *vdev);
358a27ad81SWachowski, Karol bool ivpu_hw_btrs_irq_handler_mtl(struct ivpu_device *vdev, int irq);
368a27ad81SWachowski, Karol bool ivpu_hw_btrs_irq_handler_lnl(struct ivpu_device *vdev, int irq);
37*a19bffb1SJacek Lawrynowicz int ivpu_hw_btrs_dct_get_request(struct ivpu_device *vdev, bool *enable);
38*a19bffb1SJacek Lawrynowicz void ivpu_hw_btrs_dct_set_status(struct ivpu_device *vdev, bool enable, u32 dct_percent);
398a27ad81SWachowski, Karol u32 ivpu_hw_btrs_pll_freq_get(struct ivpu_device *vdev);
408a27ad81SWachowski, Karol u32 ivpu_hw_btrs_ratio_to_freq(struct ivpu_device *vdev, u32 ratio);
418a27ad81SWachowski, Karol u32 ivpu_hw_btrs_telemetry_offset_get(struct ivpu_device *vdev);
428a27ad81SWachowski, Karol u32 ivpu_hw_btrs_telemetry_size_get(struct ivpu_device *vdev);
438a27ad81SWachowski, Karol u32 ivpu_hw_btrs_telemetry_enable_get(struct ivpu_device *vdev);
448a27ad81SWachowski, Karol void ivpu_hw_btrs_global_int_enable(struct ivpu_device *vdev);
458a27ad81SWachowski, Karol void ivpu_hw_btrs_global_int_disable(struct ivpu_device *vdev);
468a27ad81SWachowski, Karol void ivpu_hw_btrs_irq_enable(struct ivpu_device *vdev);
478a27ad81SWachowski, Karol void ivpu_hw_btrs_irq_disable(struct ivpu_device *vdev);
488a27ad81SWachowski, Karol void ivpu_hw_btrs_diagnose_failure(struct ivpu_device *vdev);
498a27ad81SWachowski, Karol 
508a27ad81SWachowski, Karol #endif /* __IVPU_HW_BTRS_H__ */
51