| /* 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, |
| }, |
| }; |