amdgpu.h (9f31a0b0328cb70b9ea1058579710fb1439ee332) | amdgpu.h (4e99a44e37bfed8c4f25c94687e8e4ac4ae65086) |
---|---|
1/* 2 * Copyright 2008 Advanced Micro Devices, Inc. 3 * Copyright 2008 Red Hat Inc. 4 * Copyright 2009 Jerome Glisse. 5 * 6 * Permission is hereby granted, free of charge, to any person obtaining a 7 * copy of this software and associated documentation files (the "Software"), 8 * to deal in the Software without restriction, including without limitation --- 1813 unchanged lines hidden (view full) --- 1822 1823/* 1824 * ASIC specific functions. 1825 */ 1826struct amdgpu_asic_funcs { 1827 bool (*read_disabled_bios)(struct amdgpu_device *adev); 1828 bool (*read_bios_from_rom)(struct amdgpu_device *adev, 1829 u8 *bios, u32 length_bytes); | 1/* 2 * Copyright 2008 Advanced Micro Devices, Inc. 3 * Copyright 2008 Red Hat Inc. 4 * Copyright 2009 Jerome Glisse. 5 * 6 * Permission is hereby granted, free of charge, to any person obtaining a 7 * copy of this software and associated documentation files (the "Software"), 8 * to deal in the Software without restriction, including without limitation --- 1813 unchanged lines hidden (view full) --- 1822 1823/* 1824 * ASIC specific functions. 1825 */ 1826struct amdgpu_asic_funcs { 1827 bool (*read_disabled_bios)(struct amdgpu_device *adev); 1828 bool (*read_bios_from_rom)(struct amdgpu_device *adev, 1829 u8 *bios, u32 length_bytes); |
1830 void (*detect_hw_virtualization) (struct amdgpu_device *adev); |
|
1830 int (*read_register)(struct amdgpu_device *adev, u32 se_num, 1831 u32 sh_num, u32 reg_offset, u32 *value); 1832 void (*set_vga_state)(struct amdgpu_device *adev, bool state); 1833 int (*reset)(struct amdgpu_device *adev); 1834 /* get the reference clock */ 1835 u32 (*get_xclk)(struct amdgpu_device *adev); 1836 /* MM block clocks */ 1837 int (*set_uvd_clocks)(struct amdgpu_device *adev, u32 vclk, u32 dclk); 1838 int (*set_vce_clocks)(struct amdgpu_device *adev, u32 evclk, u32 ecclk); | 1831 int (*read_register)(struct amdgpu_device *adev, u32 se_num, 1832 u32 sh_num, u32 reg_offset, u32 *value); 1833 void (*set_vga_state)(struct amdgpu_device *adev, bool state); 1834 int (*reset)(struct amdgpu_device *adev); 1835 /* get the reference clock */ 1836 u32 (*get_xclk)(struct amdgpu_device *adev); 1837 /* MM block clocks */ 1838 int (*set_uvd_clocks)(struct amdgpu_device *adev, u32 vclk, u32 dclk); 1839 int (*set_vce_clocks)(struct amdgpu_device *adev, u32 evclk, u32 ecclk); |
1839 /* query virtual capabilities */ 1840 u32 (*get_virtual_caps)(struct amdgpu_device *adev); | |
1841 /* static power management */ 1842 int (*get_pcie_lanes)(struct amdgpu_device *adev); 1843 void (*set_pcie_lanes)(struct amdgpu_device *adev, int lanes); 1844}; 1845 1846/* 1847 * IOCTL. 1848 */ --- 80 unchanged lines hidden (view full) --- 1929 1930/* 1931 * CGS 1932 */ 1933struct cgs_device *amdgpu_cgs_create_device(struct amdgpu_device *adev); 1934void amdgpu_cgs_destroy_device(struct cgs_device *cgs_device); 1935 1936 | 1840 /* static power management */ 1841 int (*get_pcie_lanes)(struct amdgpu_device *adev); 1842 void (*set_pcie_lanes)(struct amdgpu_device *adev, int lanes); 1843}; 1844 1845/* 1846 * IOCTL. 1847 */ --- 80 unchanged lines hidden (view full) --- 1928 1929/* 1930 * CGS 1931 */ 1932struct cgs_device *amdgpu_cgs_create_device(struct amdgpu_device *adev); 1933void amdgpu_cgs_destroy_device(struct cgs_device *cgs_device); 1934 1935 |
1936#define AMDGPU_SRIOV_CAPS_SRIOV_VBIOS (1 << 0) /* vBIOS is sr-iov ready */ 1937#define AMDGPU_SRIOV_CAPS_ENABLE_IOV (1 << 1) /* sr-iov is enabled on this GPU */ 1938#define AMDGPU_SRIOV_CAPS_IS_VF (1 << 2) /* this GPU is a virtual function */ 1939#define AMDGPU_PASSTHROUGH_MODE (1 << 3) /* thw whole GPU is pass through for VM */ |
|
1937/* GPU virtualization */ | 1940/* GPU virtualization */ |
1938#define AMDGPU_VIRT_CAPS_SRIOV_EN (1 << 0) 1939#define AMDGPU_VIRT_CAPS_IS_VF (1 << 1) | |
1940struct amdgpu_virtualization { | 1941struct amdgpu_virtualization { |
1941 bool supports_sr_iov; 1942 bool is_virtual; 1943 u32 caps; | 1942 uint32_t virtual_caps; |
1944}; 1945 | 1943}; 1944 |
1945#define amdgpu_sriov_enabled(adev) \ 1946((adev)->virtualization.virtual_caps & AMDGPU_SRIOV_CAPS_ENABLE_IOV) 1947 1948#define amdgpu_sriov_vf(adev) \ 1949((adev)->virtualization.virtual_caps & AMDGPU_SRIOV_CAPS_IS_VF) 1950 1951#define amdgpu_sriov_bios(adev) \ 1952((adev)->virtualization.virtual_caps & AMDGPU_SRIOV_CAPS_SRIOV_VBIOS) 1953 1954#define amdgpu_passthrough(adev) \ 1955((adev)->virtualization.virtual_caps & AMDGPU_PASSTHROUGH_MODE) 1956 1957static inline bool is_virtual_machine(void) 1958{ 1959#ifdef CONFIG_X86 1960 return boot_cpu_has(X86_FEATURE_HYPERVISOR); 1961#else 1962 return false; 1963#endif 1964} 1965 |
|
1946/* 1947 * Core structure, functions and helpers. 1948 */ 1949typedef uint32_t (*amdgpu_rreg_t)(struct amdgpu_device*, uint32_t); 1950typedef void (*amdgpu_wreg_t)(struct amdgpu_device*, uint32_t, uint32_t); 1951 1952typedef uint32_t (*amdgpu_block_rreg_t)(struct amdgpu_device*, uint32_t, uint32_t); 1953typedef void (*amdgpu_block_wreg_t)(struct amdgpu_device*, uint32_t, uint32_t, uint32_t); --- 301 unchanged lines hidden (view full) --- 2255/* 2256 * ASICs macro. 2257 */ 2258#define amdgpu_asic_set_vga_state(adev, state) (adev)->asic_funcs->set_vga_state((adev), (state)) 2259#define amdgpu_asic_reset(adev) (adev)->asic_funcs->reset((adev)) 2260#define amdgpu_asic_get_xclk(adev) (adev)->asic_funcs->get_xclk((adev)) 2261#define amdgpu_asic_set_uvd_clocks(adev, v, d) (adev)->asic_funcs->set_uvd_clocks((adev), (v), (d)) 2262#define amdgpu_asic_set_vce_clocks(adev, ev, ec) (adev)->asic_funcs->set_vce_clocks((adev), (ev), (ec)) | 1966/* 1967 * Core structure, functions and helpers. 1968 */ 1969typedef uint32_t (*amdgpu_rreg_t)(struct amdgpu_device*, uint32_t); 1970typedef void (*amdgpu_wreg_t)(struct amdgpu_device*, uint32_t, uint32_t); 1971 1972typedef uint32_t (*amdgpu_block_rreg_t)(struct amdgpu_device*, uint32_t, uint32_t); 1973typedef void (*amdgpu_block_wreg_t)(struct amdgpu_device*, uint32_t, uint32_t, uint32_t); --- 301 unchanged lines hidden (view full) --- 2275/* 2276 * ASICs macro. 2277 */ 2278#define amdgpu_asic_set_vga_state(adev, state) (adev)->asic_funcs->set_vga_state((adev), (state)) 2279#define amdgpu_asic_reset(adev) (adev)->asic_funcs->reset((adev)) 2280#define amdgpu_asic_get_xclk(adev) (adev)->asic_funcs->get_xclk((adev)) 2281#define amdgpu_asic_set_uvd_clocks(adev, v, d) (adev)->asic_funcs->set_uvd_clocks((adev), (v), (d)) 2282#define amdgpu_asic_set_vce_clocks(adev, ev, ec) (adev)->asic_funcs->set_vce_clocks((adev), (ev), (ec)) |
2263#define amdgpu_asic_get_virtual_caps(adev) ((adev)->asic_funcs->get_virtual_caps((adev))) | |
2264#define amdgpu_get_pcie_lanes(adev) (adev)->asic_funcs->get_pcie_lanes((adev)) 2265#define amdgpu_set_pcie_lanes(adev, l) (adev)->asic_funcs->set_pcie_lanes((adev), (l)) 2266#define amdgpu_asic_get_gpu_clock_counter(adev) (adev)->asic_funcs->get_gpu_clock_counter((adev)) 2267#define amdgpu_asic_read_disabled_bios(adev) (adev)->asic_funcs->read_disabled_bios((adev)) 2268#define amdgpu_asic_read_bios_from_rom(adev, b, l) (adev)->asic_funcs->read_bios_from_rom((adev), (b), (l)) | 2283#define amdgpu_get_pcie_lanes(adev) (adev)->asic_funcs->get_pcie_lanes((adev)) 2284#define amdgpu_set_pcie_lanes(adev, l) (adev)->asic_funcs->set_pcie_lanes((adev), (l)) 2285#define amdgpu_asic_get_gpu_clock_counter(adev) (adev)->asic_funcs->get_gpu_clock_counter((adev)) 2286#define amdgpu_asic_read_disabled_bios(adev) (adev)->asic_funcs->read_disabled_bios((adev)) 2287#define amdgpu_asic_read_bios_from_rom(adev, b, l) (adev)->asic_funcs->read_bios_from_rom((adev), (b), (l)) |
2288#define amdgpu_asic_detect_hw_virtualization(adev) (adev)->asic_funcs->detect_hw_virtualization((adev)) |
|
2269#define amdgpu_asic_read_register(adev, se, sh, offset, v)((adev)->asic_funcs->read_register((adev), (se), (sh), (offset), (v))) 2270#define amdgpu_gart_flush_gpu_tlb(adev, vmid) (adev)->gart.gart_funcs->flush_gpu_tlb((adev), (vmid)) 2271#define amdgpu_gart_set_pte_pde(adev, pt, idx, addr, flags) (adev)->gart.gart_funcs->set_pte_pde((adev), (pt), (idx), (addr), (flags)) 2272#define amdgpu_vm_copy_pte(adev, ib, pe, src, count) ((adev)->vm_manager.vm_pte_funcs->copy_pte((ib), (pe), (src), (count))) 2273#define amdgpu_vm_write_pte(adev, ib, pe, value, count, incr) ((adev)->vm_manager.vm_pte_funcs->write_pte((ib), (pe), (value), (count), (incr))) 2274#define amdgpu_vm_set_pte_pde(adev, ib, pe, addr, count, incr, flags) ((adev)->vm_manager.vm_pte_funcs->set_pte_pde((ib), (pe), (addr), (count), (incr), (flags))) 2275#define amdgpu_ring_parse_cs(r, p, ib) ((r)->funcs->parse_cs((p), (ib))) 2276#define amdgpu_ring_test_ring(r) (r)->funcs->test_ring((r)) --- 258 unchanged lines hidden --- | 2289#define amdgpu_asic_read_register(adev, se, sh, offset, v)((adev)->asic_funcs->read_register((adev), (se), (sh), (offset), (v))) 2290#define amdgpu_gart_flush_gpu_tlb(adev, vmid) (adev)->gart.gart_funcs->flush_gpu_tlb((adev), (vmid)) 2291#define amdgpu_gart_set_pte_pde(adev, pt, idx, addr, flags) (adev)->gart.gart_funcs->set_pte_pde((adev), (pt), (idx), (addr), (flags)) 2292#define amdgpu_vm_copy_pte(adev, ib, pe, src, count) ((adev)->vm_manager.vm_pte_funcs->copy_pte((ib), (pe), (src), (count))) 2293#define amdgpu_vm_write_pte(adev, ib, pe, value, count, incr) ((adev)->vm_manager.vm_pte_funcs->write_pte((ib), (pe), (value), (count), (incr))) 2294#define amdgpu_vm_set_pte_pde(adev, ib, pe, addr, count, incr, flags) ((adev)->vm_manager.vm_pte_funcs->set_pte_pde((ib), (pe), (addr), (count), (incr), (flags))) 2295#define amdgpu_ring_parse_cs(r, p, ib) ((r)->funcs->parse_cs((p), (ib))) 2296#define amdgpu_ring_test_ring(r) (r)->funcs->test_ring((r)) --- 258 unchanged lines hidden --- |