#include <linux/firmware.h>
#include <linux/module.h>
#include <linux/pci.h>
#include <drm/drm_cache.h>
#include "amdgpu.h"
#include "gmc_v8_0.h"
#include "amdgpu_ucode.h"
#include "amdgpu_amdkfd.h"
#include "amdgpu_gem.h"
#include "gmc/gmc_8_1_d.h"
#include "gmc/gmc_8_1_sh_mask.h"
#include "bif/bif_5_0_d.h"
#include "bif/bif_5_0_sh_mask.h"
#include "oss/oss_3_0_d.h"
#include "oss/oss_3_0_sh_mask.h"
#include "dce/dce_10_0_d.h"
#include "dce/dce_10_0_sh_mask.h"
#include "vid.h"
#include "vi.h"
#include "amdgpu_atombios.h"
#include "ivsrcid/ivsrcid_vislands30.h"
static void gmc_v8_0_set_gmc_funcs(struct amdgpu_device *adev);
static void gmc_v8_0_set_irq_funcs(struct amdgpu_device *adev);
static int gmc_v8_0_wait_for_idle(void *handle);
MODULE_FIRMWARE(…) …;
MODULE_FIRMWARE(…) …;
MODULE_FIRMWARE(…) …;
MODULE_FIRMWARE(…) …;
MODULE_FIRMWARE(…) …;
MODULE_FIRMWARE(…) …;
MODULE_FIRMWARE(…) …;
MODULE_FIRMWARE(…) …;
static const u32 golden_settings_tonga_a11[] = …;
static const u32 tonga_mgcg_cgcg_init[] = …;
static const u32 golden_settings_fiji_a10[] = …;
static const u32 fiji_mgcg_cgcg_init[] = …;
static const u32 golden_settings_polaris11_a11[] = …;
static const u32 golden_settings_polaris10_a11[] = …;
static const u32 cz_mgcg_cgcg_init[] = …;
static const u32 stoney_mgcg_cgcg_init[] = …;
static const u32 golden_settings_stoney_common[] = …;
static void gmc_v8_0_init_golden_registers(struct amdgpu_device *adev)
{ … }
static void gmc_v8_0_mc_stop(struct amdgpu_device *adev)
{ … }
static void gmc_v8_0_mc_resume(struct amdgpu_device *adev)
{ … }
static int gmc_v8_0_init_microcode(struct amdgpu_device *adev)
{ … }
static int gmc_v8_0_tonga_mc_load_microcode(struct amdgpu_device *adev)
{ … }
static int gmc_v8_0_polaris_mc_load_microcode(struct amdgpu_device *adev)
{ … }
static void gmc_v8_0_vram_gtt_location(struct amdgpu_device *adev,
struct amdgpu_gmc *mc)
{ … }
static void gmc_v8_0_mc_program(struct amdgpu_device *adev)
{ … }
static int gmc_v8_0_mc_init(struct amdgpu_device *adev)
{ … }
static void gmc_v8_0_flush_gpu_tlb_pasid(struct amdgpu_device *adev,
uint16_t pasid, uint32_t flush_type,
bool all_hub, uint32_t inst)
{ … }
static void gmc_v8_0_flush_gpu_tlb(struct amdgpu_device *adev, uint32_t vmid,
uint32_t vmhub, uint32_t flush_type)
{ … }
static uint64_t gmc_v8_0_emit_flush_gpu_tlb(struct amdgpu_ring *ring,
unsigned int vmid, uint64_t pd_addr)
{ … }
static void gmc_v8_0_emit_pasid_mapping(struct amdgpu_ring *ring, unsigned int vmid,
unsigned int pasid)
{ … }
static void gmc_v8_0_get_vm_pde(struct amdgpu_device *adev, int level,
uint64_t *addr, uint64_t *flags)
{ … }
static void gmc_v8_0_get_vm_pte(struct amdgpu_device *adev,
struct amdgpu_bo_va_mapping *mapping,
uint64_t *flags)
{ … }
static void gmc_v8_0_set_fault_enable_default(struct amdgpu_device *adev,
bool value)
{ … }
static void gmc_v8_0_set_prt(struct amdgpu_device *adev, bool enable)
{ … }
static int gmc_v8_0_gart_enable(struct amdgpu_device *adev)
{ … }
static int gmc_v8_0_gart_init(struct amdgpu_device *adev)
{ … }
static void gmc_v8_0_gart_disable(struct amdgpu_device *adev)
{ … }
static void gmc_v8_0_vm_decode_fault(struct amdgpu_device *adev, u32 status,
u32 addr, u32 mc_client, unsigned int pasid)
{ … }
static int gmc_v8_0_convert_vram_type(int mc_seq_vram_type)
{ … }
static int gmc_v8_0_early_init(void *handle)
{ … }
static int gmc_v8_0_late_init(void *handle)
{ … }
static unsigned int gmc_v8_0_get_vbios_fb_size(struct amdgpu_device *adev)
{ … }
#define mmMC_SEQ_MISC0_FIJI …
static int gmc_v8_0_sw_init(void *handle)
{ … }
static int gmc_v8_0_sw_fini(void *handle)
{ … }
static int gmc_v8_0_hw_init(void *handle)
{ … }
static int gmc_v8_0_hw_fini(void *handle)
{ … }
static int gmc_v8_0_suspend(void *handle)
{ … }
static int gmc_v8_0_resume(void *handle)
{ … }
static bool gmc_v8_0_is_idle(void *handle)
{ … }
static int gmc_v8_0_wait_for_idle(void *handle)
{ … }
static bool gmc_v8_0_check_soft_reset(void *handle)
{ … }
static int gmc_v8_0_pre_soft_reset(void *handle)
{ … }
static int gmc_v8_0_soft_reset(void *handle)
{ … }
static int gmc_v8_0_post_soft_reset(void *handle)
{ … }
static int gmc_v8_0_vm_fault_interrupt_state(struct amdgpu_device *adev,
struct amdgpu_irq_src *src,
unsigned int type,
enum amdgpu_interrupt_state state)
{ … }
static int gmc_v8_0_process_interrupt(struct amdgpu_device *adev,
struct amdgpu_irq_src *source,
struct amdgpu_iv_entry *entry)
{ … }
static void fiji_update_mc_medium_grain_clock_gating(struct amdgpu_device *adev,
bool enable)
{ … }
static void fiji_update_mc_light_sleep(struct amdgpu_device *adev,
bool enable)
{ … }
static int gmc_v8_0_set_clockgating_state(void *handle,
enum amd_clockgating_state state)
{ … }
static int gmc_v8_0_set_powergating_state(void *handle,
enum amd_powergating_state state)
{ … }
static void gmc_v8_0_get_clockgating_state(void *handle, u64 *flags)
{ … }
static const struct amd_ip_funcs gmc_v8_0_ip_funcs = …;
static const struct amdgpu_gmc_funcs gmc_v8_0_gmc_funcs = …;
static const struct amdgpu_irq_src_funcs gmc_v8_0_irq_funcs = …;
static void gmc_v8_0_set_gmc_funcs(struct amdgpu_device *adev)
{ … }
static void gmc_v8_0_set_irq_funcs(struct amdgpu_device *adev)
{ … }
const struct amdgpu_ip_block_version gmc_v8_0_ip_block = …;
const struct amdgpu_ip_block_version gmc_v8_1_ip_block = …;
const struct amdgpu_ip_block_version gmc_v8_5_ip_block = …;