blob: 9cc556ab42dafaaa07c52b7eb66145c8692167b4 [file] [log] [blame]
/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2002,2007-2019, The Linux Foundation. All rights reserved.
*/
#define ANY_ID (~0)
static const struct adreno_gpu_core adreno_gpulist[] = {
{
.gpurev = ADRENO_REV_A306,
.core = 3,
.major = 0,
.minor = 6,
.patchid = 0x00,
.features = ADRENO_SOFT_FAULT_DETECT,
.pm4fw_name = "a300_pm4.fw",
.pfpfw_name = "a300_pfp.fw",
.gpudev = &adreno_a3xx_gpudev,
.gmem_size = SZ_128K,
.busy_mask = 0x7FFFFFFE,
},
{
.gpurev = ADRENO_REV_A306A,
.core = 3,
.major = 0,
.minor = 6,
.patchid = 0x20,
.features = ADRENO_SOFT_FAULT_DETECT,
.pm4fw_name = "a300_pm4.fw",
.pfpfw_name = "a300_pfp.fw",
.gpudev = &adreno_a3xx_gpudev,
.gmem_size = SZ_128K,
.busy_mask = 0x7FFFFFFE,
},
{
.gpurev = ADRENO_REV_A304,
.core = 3,
.major = 0,
.minor = 4,
.patchid = 0x00,
.features = ADRENO_SOFT_FAULT_DETECT,
.pm4fw_name = "a300_pm4.fw",
.pfpfw_name = "a300_pfp.fw",
.gpudev = &adreno_a3xx_gpudev,
.gmem_size = (SZ_64K + SZ_32K),
.busy_mask = 0x7FFFFFFE,
},
{
.gpurev = ADRENO_REV_A405,
.core = 4,
.major = 0,
.minor = 5,
.patchid = ANY_ID,
.features = ADRENO_SOFT_FAULT_DETECT,
.pm4fw_name = "a420_pm4.fw",
.pfpfw_name = "a420_pfp.fw",
.gpudev = &adreno_a4xx_gpudev,
.gmem_size = SZ_256K,
.busy_mask = 0x7FFFFFFE,
},
{
.gpurev = ADRENO_REV_A420,
.core = 4,
.major = 2,
.minor = 0,
.patchid = ANY_ID,
.features = ADRENO_USES_OCMEM | ADRENO_WARM_START |
ADRENO_USE_BOOTSTRAP | ADRENO_SOFT_FAULT_DETECT,
.pm4fw_name = "a420_pm4.fw",
.pfpfw_name = "a420_pfp.fw",
.gpudev = &adreno_a4xx_gpudev,
.gmem_size = (SZ_1M + SZ_512K),
.pm4_jt_idx = 0x901,
.pm4_jt_addr = 0x300,
.pfp_jt_idx = 0x401,
.pfp_jt_addr = 0x400,
.pm4_bstrp_size = 0x06,
.pfp_bstrp_size = 0x28,
.pfp_bstrp_ver = 0x4ff083,
.busy_mask = 0x7FFFFFFE,
},
{
.gpurev = ADRENO_REV_A430,
.core = 4,
.major = 3,
.minor = 0,
.patchid = ANY_ID,
.features = ADRENO_USES_OCMEM | ADRENO_WARM_START |
ADRENO_USE_BOOTSTRAP | ADRENO_SPTP_PC | ADRENO_PPD |
ADRENO_CONTENT_PROTECTION | ADRENO_PREEMPTION |
ADRENO_SOFT_FAULT_DETECT,
.pm4fw_name = "a420_pm4.fw",
.pfpfw_name = "a420_pfp.fw",
.gpudev = &adreno_a4xx_gpudev,
.gmem_size = (SZ_1M + SZ_512K),
.pm4_jt_idx = 0x901,
.pm4_jt_addr = 0x300,
.pfp_jt_idx = 0x401,
.pfp_jt_addr = 0x400,
.pm4_bstrp_size = 0x06,
.pfp_bstrp_size = 0x28,
.pfp_bstrp_ver = 0x4ff083,
.shader_offset = 0x20000,
.shader_size = 0x10000,
.num_protected_regs = 0x18,
.busy_mask = 0x7FFFFFFE,
},
{
.gpurev = ADRENO_REV_A418,
.core = 4,
.major = 1,
.minor = 8,
.patchid = ANY_ID,
.features = ADRENO_USES_OCMEM | ADRENO_WARM_START |
ADRENO_USE_BOOTSTRAP | ADRENO_SPTP_PC |
ADRENO_SOFT_FAULT_DETECT,
.pm4fw_name = "a420_pm4.fw",
.pfpfw_name = "a420_pfp.fw",
.gpudev = &adreno_a4xx_gpudev,
.gmem_size = (SZ_512K),
.pm4_jt_idx = 0x901,
.pm4_jt_addr = 0x300,
.pfp_jt_idx = 0x401,
.pfp_jt_addr = 0x400,
.pm4_bstrp_size = 0x06,
.pfp_bstrp_size = 0x28,
.pfp_bstrp_ver = 0x4ff083,
.shader_offset = 0x20000, /* SP and TP addresses */
.shader_size = 0x10000,
.num_protected_regs = 0x18,
.busy_mask = 0x7FFFFFFE,
},
{
.gpurev = ADRENO_REV_A530,
.core = 5,
.major = 3,
.minor = 0,
.patchid = 0,
.pm4fw_name = "a530v1_pm4.fw",
.pfpfw_name = "a530v1_pfp.fw",
.gpudev = &adreno_a5xx_gpudev,
.gmem_size = SZ_1M,
.num_protected_regs = 0x20,
.busy_mask = 0xFFFFFFFE,
},
{
.gpurev = ADRENO_REV_A530,
.core = 5,
.major = 3,
.minor = 0,
.patchid = 1,
.features = ADRENO_GPMU | ADRENO_SPTP_PC | ADRENO_LM |
ADRENO_PREEMPTION | ADRENO_64BIT |
ADRENO_CONTENT_PROTECTION,
.pm4fw_name = "a530_pm4.fw",
.pfpfw_name = "a530_pfp.fw",
.zap_name = "a530_zap",
.gpudev = &adreno_a5xx_gpudev,
.gmem_size = SZ_1M,
.num_protected_regs = 0x20,
.gpmufw_name = "a530_gpmu.fw2",
.gpmu_major = 1,
.gpmu_minor = 0,
.busy_mask = 0xFFFFFFFE,
.lm_major = 3,
.lm_minor = 0,
.gpmu_tsens = 0x00060007,
.max_power = 5448,
.regfw_name = "a530v2_seq.fw2",
},
{
.gpurev = ADRENO_REV_A530,
.core = 5,
.major = 3,
.minor = 0,
.patchid = ANY_ID,
.features = ADRENO_GPMU | ADRENO_SPTP_PC | ADRENO_LM |
ADRENO_PREEMPTION | ADRENO_64BIT |
ADRENO_CONTENT_PROTECTION,
.pm4fw_name = "a530_pm4.fw",
.pfpfw_name = "a530_pfp.fw",
.zap_name = "a530_zap",
.gpudev = &adreno_a5xx_gpudev,
.gmem_size = SZ_1M,
.num_protected_regs = 0x20,
.gpmufw_name = "a530v3_gpmu.fw2",
.gpmu_major = 1,
.gpmu_minor = 0,
.busy_mask = 0xFFFFFFFE,
.lm_major = 1,
.lm_minor = 0,
.gpmu_tsens = 0x00060007,
.max_power = 5448,
.regfw_name = "a530v3_seq.fw2",
},
{
.gpurev = ADRENO_REV_A505,
.core = 5,
.major = 0,
.minor = 5,
.patchid = ANY_ID,
.features = ADRENO_PREEMPTION | ADRENO_64BIT,
.pm4fw_name = "a530_pm4.fw",
.pfpfw_name = "a530_pfp.fw",
.gpudev = &adreno_a5xx_gpudev,
.gmem_size = (SZ_128K + SZ_8K),
.num_protected_regs = 0x20,
.busy_mask = 0xFFFFFFFE,
},
{
.gpurev = ADRENO_REV_A506,
.core = 5,
.major = 0,
.minor = 6,
.patchid = ANY_ID,
.features = ADRENO_PREEMPTION | ADRENO_64BIT |
ADRENO_CONTENT_PROTECTION | ADRENO_CPZ_RETENTION,
.pm4fw_name = "a530_pm4.fw",
.pfpfw_name = "a530_pfp.fw",
.zap_name = "a506_zap",
.gpudev = &adreno_a5xx_gpudev,
.gmem_size = (SZ_128K + SZ_8K),
.num_protected_regs = 0x20,
.busy_mask = 0xFFFFFFFE,
},
{
.gpurev = ADRENO_REV_A510,
.core = 5,
.major = 1,
.minor = 0,
.patchid = ANY_ID,
.pm4fw_name = "a530_pm4.fw",
.pfpfw_name = "a530_pfp.fw",
.gpudev = &adreno_a5xx_gpudev,
.gmem_size = SZ_256K,
.num_protected_regs = 0x20,
.busy_mask = 0xFFFFFFFE,
},
{
.gpurev = ADRENO_REV_A540,
.core = 5,
.major = 4,
.minor = 0,
.patchid = 0,
.features = ADRENO_PREEMPTION | ADRENO_64BIT |
ADRENO_CONTENT_PROTECTION |
ADRENO_GPMU | ADRENO_SPTP_PC,
.pm4fw_name = "a530_pm4.fw",
.pfpfw_name = "a530_pfp.fw",
.zap_name = "a540_zap",
.gpudev = &adreno_a5xx_gpudev,
.gmem_size = SZ_1M,
.num_protected_regs = 0x20,
.busy_mask = 0xFFFFFFFE,
.gpmufw_name = "a540_gpmu.fw2",
.gpmu_major = 3,
.gpmu_minor = 0,
.gpmu_tsens = 0x000C000D,
.max_power = 5448,
},
{
.gpurev = ADRENO_REV_A540,
.core = 5,
.major = 4,
.minor = 0,
.patchid = ANY_ID,
.features = ADRENO_PREEMPTION | ADRENO_64BIT |
ADRENO_CONTENT_PROTECTION |
ADRENO_GPMU | ADRENO_SPTP_PC,
.pm4fw_name = "a530_pm4.fw",
.pfpfw_name = "a530_pfp.fw",
.zap_name = "a540_zap",
.gpudev = &adreno_a5xx_gpudev,
.gmem_size = SZ_1M,
.num_protected_regs = 0x20,
.busy_mask = 0xFFFFFFFE,
.gpmufw_name = "a540_gpmu.fw2",
.gpmu_major = 3,
.gpmu_minor = 0,
.gpmu_tsens = 0x000C000D,
.max_power = 5448,
},
{
.gpurev = ADRENO_REV_A512,
.core = 5,
.major = 1,
.minor = 2,
.patchid = ANY_ID,
.features = ADRENO_PREEMPTION | ADRENO_64BIT |
ADRENO_CONTENT_PROTECTION | ADRENO_CPZ_RETENTION,
.pm4fw_name = "a530_pm4.fw",
.pfpfw_name = "a530_pfp.fw",
.zap_name = "a512_zap",
.gpudev = &adreno_a5xx_gpudev,
.gmem_size = (SZ_256K + SZ_16K),
.num_protected_regs = 0x20,
.busy_mask = 0xFFFFFFFE,
},
{
.gpurev = ADRENO_REV_A508,
.core = 5,
.major = 0,
.minor = 8,
.patchid = ANY_ID,
.features = ADRENO_PREEMPTION | ADRENO_64BIT |
ADRENO_CONTENT_PROTECTION | ADRENO_CPZ_RETENTION,
.pm4fw_name = "a530_pm4.fw",
.pfpfw_name = "a530_pfp.fw",
.zap_name = "a508_zap",
.gpudev = &adreno_a5xx_gpudev,
.gmem_size = (SZ_128K + SZ_8K),
.num_protected_regs = 0x20,
.busy_mask = 0xFFFFFFFE,
},
{
.gpurev = ADRENO_REV_A630,
.core = 6,
.major = 3,
.minor = 0,
.patchid = 0,
.features = ADRENO_64BIT | ADRENO_RPMH |
ADRENO_GPMU | ADRENO_CONTENT_PROTECTION | ADRENO_LM,
.sqefw_name = "a630_sqe.fw",
.zap_name = "a630_zap",
.gpudev = &adreno_a6xx_gpudev,
.gmem_size = SZ_1M,
.num_protected_regs = 0x20,
.busy_mask = 0xFFFFFFFE,
.gpmufw_name = "a630_gmu.bin",
.gpmu_major = 0x1,
.gpmu_minor = 0x003,
.gpmu_tsens = 0x000C000D,
.max_power = 5448,
.prim_fifo_threshold = 0x0018000,
.pdc_address_offset = 0x00030080,
},
{
.gpurev = ADRENO_REV_A630,
.core = 6,
.major = 3,
.minor = 0,
.patchid = ANY_ID,
.features = ADRENO_64BIT | ADRENO_RPMH | ADRENO_IFPC |
ADRENO_GPMU | ADRENO_CONTENT_PROTECTION |
ADRENO_IOCOHERENT | ADRENO_PREEMPTION,
.sqefw_name = "a630_sqe.fw",
.zap_name = "a630_zap",
.gpudev = &adreno_a6xx_gpudev,
.gmem_size = SZ_1M,
.num_protected_regs = 0x20,
.busy_mask = 0xFFFFFFFE,
.gpmufw_name = "a630_gmu.bin",
.gpmu_major = 0x1,
.gpmu_minor = 0x003,
.gpmu_tsens = 0x000C000D,
.max_power = 5448,
.prim_fifo_threshold = 0x0018000,
.pdc_address_offset = 0x00030080,
},
{
.gpurev = ADRENO_REV_A615,
.core = 6,
.major = 1,
.minor = 5,
.patchid = ANY_ID,
.features = ADRENO_64BIT | ADRENO_RPMH | ADRENO_PREEMPTION |
ADRENO_GPMU | ADRENO_CONTENT_PROTECTION | ADRENO_IFPC |
ADRENO_IOCOHERENT,
.sqefw_name = "a630_sqe.fw",
.zap_name = "a615_zap",
.gpudev = &adreno_a6xx_gpudev,
.gmem_size = SZ_512K,
.num_protected_regs = 0x20,
.busy_mask = 0xFFFFFFFE,
.gpmufw_name = "a630_gmu.bin",
.gpmu_major = 0x1,
.gpmu_minor = 0x003,
.prim_fifo_threshold = 0x0018000,
.pdc_address_offset = 0x00030080,
},
{
.gpurev = ADRENO_REV_A618,
.core = 6,
.major = 1,
.minor = 8,
.patchid = ANY_ID,
.features = ADRENO_64BIT | ADRENO_RPMH | ADRENO_PREEMPTION |
ADRENO_GPMU | ADRENO_CONTENT_PROTECTION | ADRENO_IFPC |
ADRENO_IOCOHERENT,
.sqefw_name = "a630_sqe.fw",
.zap_name = "a615_zap",
.gpudev = &adreno_a6xx_gpudev,
.gmem_size = SZ_512K,
.num_protected_regs = 0x20,
.busy_mask = 0xFFFFFFFE,
.gpmufw_name = "a630_gmu.bin",
.gpmu_major = 0x1,
.gpmu_minor = 0x007,
.prim_fifo_threshold = 0x0018000,
.pdc_address_offset = 0x00030090,
},
{
.gpurev = ADRENO_REV_A640,
.core = 6,
.major = 4,
.minor = 0,
.patchid = 0,
.features = ADRENO_64BIT | ADRENO_RPMH | ADRENO_GPMU |
ADRENO_CONTENT_PROTECTION | ADRENO_IOCOHERENT |
ADRENO_IFPC,
.sqefw_name = "a630_sqe.fw",
.zap_name = "a640_zap",
.gpudev = &adreno_a6xx_gpudev,
.gmem_size = SZ_1M, //Verified 1MB
.num_protected_regs = 0x20,
.busy_mask = 0xFFFFFFFE,
.gpmufw_name = "a640_gmu.bin",
.gpmu_major = 0x2,
.gpmu_minor = 0x000,
.gpmu_tsens = 0x000C000D,
.max_power = 5448,
.va_padding = SZ_64K,
.prim_fifo_threshold = 0x00200000,
.pdc_address_offset = 0x00030090,
},
{
.gpurev = ADRENO_REV_A640,
.core = 6,
.major = 4,
.minor = 0,
.patchid = ANY_ID,
.features = ADRENO_64BIT | ADRENO_RPMH | ADRENO_GPMU |
ADRENO_CONTENT_PROTECTION | ADRENO_IOCOHERENT |
ADRENO_IFPC | ADRENO_PREEMPTION,
.sqefw_name = "a630_sqe.fw",
.zap_name = "a640_zap",
.gpudev = &adreno_a6xx_gpudev,
.gmem_size = SZ_1M, //Verified 1MB
.num_protected_regs = 0x20,
.busy_mask = 0xFFFFFFFE,
.gpmufw_name = "a640_gmu.bin",
.gpmu_major = 0x2,
.gpmu_minor = 0x000,
.gpmu_tsens = 0x000C000D,
.max_power = 5448,
.prim_fifo_threshold = 0x00200000,
.pdc_address_offset = 0x00030090,
},
{
.gpurev = ADRENO_REV_A650,
.core = 6,
.major = 5,
.minor = 0,
.patchid = 0,
.features = ADRENO_64BIT | ADRENO_RPMH | ADRENO_GPMU |
ADRENO_IOCOHERENT,
.sqefw_name = "a650_sqe.fw",
.zap_name = "a650_zap",
.gpudev = &adreno_a6xx_gpudev,
.gmem_size = SZ_1M + SZ_128K, /* verified 1152kB */
.num_protected_regs = 0x30,
.busy_mask = 0xFFFFFFFE,
.gpmufw_name = "a650_gmu.bin",
.gpmu_major = 0x2,
.gpmu_minor = 0x000,
.gpmu_tsens = 0x000C000D,
.max_power = 5448,
.prim_fifo_threshold = 0x00300000,
.pdc_address_offset = 0x000300A0,
},
{
.gpurev = ADRENO_REV_A680,
.core = 6,
.major = 8,
.minor = 0,
.patchid = ANY_ID,
.features = ADRENO_64BIT | ADRENO_RPMH | ADRENO_GPMU,
.sqefw_name = "a630_sqe.fw",
.zap_name = "a640_zap",
.gpudev = &adreno_a6xx_gpudev,
.gmem_size = SZ_2M,
.num_protected_regs = 0x20,
.busy_mask = 0xFFFFFFFE,
.gpmufw_name = "a640_gmu.bin",
.gpmu_major = 0x2,
.gpmu_minor = 0x000,
.gpmu_tsens = 0x000C000D,
.max_power = 5448,
.prim_fifo_threshold = 0x00400000,
.pdc_address_offset = 0x00030090,
},
{
.gpurev = ADRENO_REV_A612,
.core = 6,
.major = 1,
.minor = 2,
.patchid = ANY_ID,
.features = ADRENO_64BIT | ADRENO_CONTENT_PROTECTION |
ADRENO_IOCOHERENT | ADRENO_PREEMPTION | ADRENO_GPMU |
ADRENO_IFPC | ADRENO_PERFCTRL_RETAIN,
.sqefw_name = "a630_sqe.fw",
.zap_name = "a612_zap",
.gpudev = &adreno_a6xx_gpudev,
.gmem_size = (SZ_128K + SZ_4K),
.num_protected_regs = 0x20,
.busy_mask = 0xFFFFFFFE,
.gpmufw_name = "a612_rgmu.bin",
.prim_fifo_threshold = 0x00080000,
.pdc_address_offset = 0x00030080,
},
{
.gpurev = ADRENO_REV_A616,
.core = 6,
.major = 1,
.minor = 6,
.patchid = ANY_ID,
.features = ADRENO_64BIT | ADRENO_RPMH | ADRENO_PREEMPTION |
ADRENO_GPMU | ADRENO_CONTENT_PROTECTION | ADRENO_IFPC |
ADRENO_IOCOHERENT,
.sqefw_name = "a630_sqe.fw",
.zap_name = "a615_zap",
.gpudev = &adreno_a6xx_gpudev,
.gmem_size = SZ_512K,
.num_protected_regs = 0x20,
.busy_mask = 0xFFFFFFFE,
.gpmufw_name = "a630_gmu.bin",
.gpmu_major = 0x1,
.gpmu_minor = 0x003,
.prim_fifo_threshold = 0x0018000,
.pdc_address_offset = 0x00030080,
},
};