Home | History | Annotate | Line # | Download | only in radeon
      1  1.2  riastrad /*	$NetBSD: rv6xx_dpm.h,v 1.3 2021/12/18 23:45:43 riastradh Exp $	*/
      2  1.2  riastrad 
      3  1.1  riastrad /*
      4  1.1  riastrad  * Copyright 2011 Advanced Micro Devices, Inc.
      5  1.1  riastrad  *
      6  1.1  riastrad  * Permission is hereby granted, free of charge, to any person obtaining a
      7  1.1  riastrad  * copy of this software and associated documentation files (the "Software"),
      8  1.1  riastrad  * to deal in the Software without restriction, including without limitation
      9  1.1  riastrad  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
     10  1.1  riastrad  * and/or sell copies of the Software, and to permit persons to whom the
     11  1.1  riastrad  * Software is furnished to do so, subject to the following conditions:
     12  1.1  riastrad  *
     13  1.1  riastrad  * The above copyright notice and this permission notice shall be included in
     14  1.1  riastrad  * all copies or substantial portions of the Software.
     15  1.1  riastrad  *
     16  1.1  riastrad  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     17  1.1  riastrad  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     18  1.1  riastrad  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
     19  1.1  riastrad  * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
     20  1.1  riastrad  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
     21  1.1  riastrad  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
     22  1.1  riastrad  * OTHER DEALINGS IN THE SOFTWARE.
     23  1.1  riastrad  *
     24  1.1  riastrad  * Authors: Alex Deucher
     25  1.1  riastrad  */
     26  1.1  riastrad 
     27  1.1  riastrad #ifndef __RV6XX_DPM_H__
     28  1.1  riastrad #define __RV6XX_DPM_H__
     29  1.1  riastrad 
     30  1.1  riastrad #include "r600_dpm.h"
     31  1.1  riastrad 
     32  1.1  riastrad /* Represents a single SCLK step. */
     33  1.1  riastrad struct rv6xx_sclk_stepping
     34  1.1  riastrad {
     35  1.1  riastrad     u32 vco_frequency;
     36  1.1  riastrad     u32 post_divider;
     37  1.1  riastrad };
     38  1.1  riastrad 
     39  1.1  riastrad struct rv6xx_pm_hw_state {
     40  1.1  riastrad 	u32 sclks[R600_PM_NUMBER_OF_ACTIVITY_LEVELS];
     41  1.1  riastrad 	u32 mclks[R600_PM_NUMBER_OF_MCLKS];
     42  1.1  riastrad 	u16 vddc[R600_PM_NUMBER_OF_VOLTAGE_LEVELS];
     43  1.1  riastrad 	bool backbias[R600_PM_NUMBER_OF_VOLTAGE_LEVELS];
     44  1.1  riastrad 	bool pcie_gen2[R600_PM_NUMBER_OF_ACTIVITY_LEVELS];
     45  1.1  riastrad 	u8 high_sclk_index;
     46  1.1  riastrad 	u8 medium_sclk_index;
     47  1.1  riastrad 	u8 low_sclk_index;
     48  1.1  riastrad 	u8 high_mclk_index;
     49  1.1  riastrad 	u8 medium_mclk_index;
     50  1.1  riastrad 	u8 low_mclk_index;
     51  1.1  riastrad 	u8 high_vddc_index;
     52  1.1  riastrad 	u8 medium_vddc_index;
     53  1.1  riastrad 	u8 low_vddc_index;
     54  1.1  riastrad 	u8 rp[R600_PM_NUMBER_OF_ACTIVITY_LEVELS];
     55  1.1  riastrad 	u8 lp[R600_PM_NUMBER_OF_ACTIVITY_LEVELS];
     56  1.1  riastrad };
     57  1.1  riastrad 
     58  1.1  riastrad struct rv6xx_power_info {
     59  1.1  riastrad 	/* flags */
     60  1.1  riastrad 	bool voltage_control;
     61  1.1  riastrad 	bool sclk_ss;
     62  1.1  riastrad 	bool mclk_ss;
     63  1.1  riastrad 	bool dynamic_ss;
     64  1.1  riastrad 	bool dynamic_pcie_gen2;
     65  1.1  riastrad 	bool thermal_protection;
     66  1.1  riastrad 	bool display_gap;
     67  1.1  riastrad 	bool gfx_clock_gating;
     68  1.1  riastrad 	/* clk values */
     69  1.1  riastrad 	u32 fb_div_scale;
     70  1.1  riastrad 	u32 spll_ref_div;
     71  1.1  riastrad 	u32 mpll_ref_div;
     72  1.1  riastrad 	u32 bsu;
     73  1.1  riastrad 	u32 bsp;
     74  1.1  riastrad 	/* */
     75  1.1  riastrad 	u32 active_auto_throttle_sources;
     76  1.1  riastrad 	/* current power state */
     77  1.1  riastrad 	u32 restricted_levels;
     78  1.1  riastrad 	struct rv6xx_pm_hw_state hw;
     79  1.1  riastrad };
     80  1.1  riastrad 
     81  1.1  riastrad struct rv6xx_pl {
     82  1.1  riastrad 	u32 sclk;
     83  1.1  riastrad 	u32 mclk;
     84  1.1  riastrad 	u16 vddc;
     85  1.1  riastrad 	u32 flags;
     86  1.1  riastrad };
     87  1.1  riastrad 
     88  1.1  riastrad struct rv6xx_ps {
     89  1.1  riastrad 	struct rv6xx_pl high;
     90  1.1  riastrad 	struct rv6xx_pl medium;
     91  1.1  riastrad 	struct rv6xx_pl low;
     92  1.1  riastrad };
     93  1.1  riastrad 
     94  1.1  riastrad #define RV6XX_DEFAULT_VCLK_FREQ  40000 /* 10 khz */
     95  1.1  riastrad #define RV6XX_DEFAULT_DCLK_FREQ  30000 /* 10 khz */
     96  1.1  riastrad 
     97  1.1  riastrad #endif
     98