Loading drivers/gpu/msm/a3xx_reg.h +1 −0 Original line number Diff line number Diff line Loading @@ -861,6 +861,7 @@ #define A305_RBBM_CLOCK_CTL_DEFAULT 0xAAAAAAAA #define A305C_RBBM_CLOCK_CTL_DEFAULT 0xAAAAAAAA #define A306_RBBM_CLOCK_CTL_DEFAULT 0xAAAAAAAA #define A306A_RBBM_CLOCK_CTL_DEFAULT 0xAAAAAAAA #define A310_RBBM_CLOCK_CTL_DEFAULT 0xAAAAAAAA #define A320_RBBM_CLOCK_CTL_DEFAULT 0xBFFFFFFF #define A330_RBBM_CLOCK_CTL_DEFAULT 0xBFFCFFFF Loading drivers/gpu/msm/adreno-gpulist.h +12 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,18 @@ static const struct adreno_gpu_core adreno_gpulist[] = { .gmem_size = SZ_128K, .busy_mask = 0x7FFFFFFE, }, { .gpurev = ADRENO_REV_A306A, .core = 3, .major = 0, .minor = 6, .patchid = 0x20, .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, Loading drivers/gpu/msm/adreno.h +2 −0 Original line number Diff line number Diff line Loading @@ -157,6 +157,7 @@ enum adreno_gpurev { ADRENO_REV_A305 = 305, ADRENO_REV_A305C = 306, ADRENO_REV_A306 = 307, ADRENO_REV_A306A = 308, ADRENO_REV_A310 = 310, ADRENO_REV_A320 = 320, ADRENO_REV_A330 = 330, Loading Loading @@ -896,6 +897,7 @@ ADRENO_TARGET(a305, ADRENO_REV_A305) ADRENO_TARGET(a305b, ADRENO_REV_A305B) ADRENO_TARGET(a305c, ADRENO_REV_A305C) ADRENO_TARGET(a306, ADRENO_REV_A306) ADRENO_TARGET(a306a, ADRENO_REV_A306A) ADRENO_TARGET(a310, ADRENO_REV_A310) ADRENO_TARGET(a320, ADRENO_REV_A320) ADRENO_TARGET(a330, ADRENO_REV_A330) Loading drivers/gpu/msm/adreno_a3xx.c +13 −2 Original line number Diff line number Diff line Loading @@ -120,6 +120,8 @@ unsigned int adreno_a3xx_rbbm_clock_ctl_default(struct adreno_device return A305C_RBBM_CLOCK_CTL_DEFAULT; else if (adreno_is_a306(adreno_dev)) return A306_RBBM_CLOCK_CTL_DEFAULT; else if (adreno_is_a306a(adreno_dev)) return A306A_RBBM_CLOCK_CTL_DEFAULT; else if (adreno_is_a310(adreno_dev)) return A310_RBBM_CLOCK_CTL_DEFAULT; else if (adreno_is_a320(adreno_dev)) Loading Loading @@ -611,7 +613,7 @@ static void a3xx_platform_setup(struct adreno_device *adreno_dev) struct adreno_gpudev *gpudev; const struct adreno_reg_offsets *reg_offsets; if (adreno_is_a306(adreno_dev)) { if (adreno_is_a306(adreno_dev) || adreno_is_a306a(adreno_dev)) { gpudev = ADRENO_GPU_DEVICE(adreno_dev); reg_offsets = gpudev->reg_offsets; reg_offsets->offsets[ADRENO_REG_VBIF_XIN_HALT_CTRL0] = Loading Loading @@ -855,6 +857,13 @@ static const struct adreno_vbif_data a306_vbif[] = { {0, 0}, }; static const struct adreno_vbif_data a306a_vbif[] = { { A3XX_VBIF_ROUND_ROBIN_QOS_ARB, 0x0003 }, { A3XX_VBIF_OUT_RD_LIM_CONF0, 0x0000000A }, { A3XX_VBIF_OUT_WR_LIM_CONF0, 0x0000000A }, {0, 0}, }; static const struct adreno_vbif_data a310_vbif[] = { { A3XX_VBIF_ABIT_SORT, 0x0001000F }, { A3XX_VBIF_ABIT_SORT_CONF, 0x000000A4 }, Loading Loading @@ -951,6 +960,7 @@ static const struct adreno_vbif_platform a3xx_vbif_platforms[] = { { adreno_is_a305, a305_vbif }, { adreno_is_a305c, a305c_vbif }, { adreno_is_a306, a306_vbif }, { adreno_is_a306a, a306a_vbif }, { adreno_is_a310, a310_vbif }, { adreno_is_a320, a320_vbif }, /* A330v2.1 needs to be ahead of A330v2 so the right device matches */ Loading Loading @@ -1197,7 +1207,8 @@ static void a3xx_perfcounter_init(struct adreno_device *adreno_dev) a3xx_perfcounters_sp[3].countable = KGSL_PERFCOUNTER_BROKEN; if (counters && (adreno_is_a306(adreno_dev) || adreno_is_a304(adreno_dev))) { (adreno_is_a306(adreno_dev) || adreno_is_a304(adreno_dev) || adreno_is_a306a(adreno_dev))) { counters->groups[KGSL_PERFCOUNTER_GROUP_VBIF].regs = a3xx_perfcounters_vbif2; counters->groups[KGSL_PERFCOUNTER_GROUP_VBIF_PWR].regs = Loading drivers/gpu/msm/adreno_ringbuffer.c +2 −1 Original line number Diff line number Diff line Loading @@ -304,7 +304,8 @@ static void _ringbuffer_setup_common(struct adreno_ringbuffer *rb) /* CP ROQ queue sizes (bytes) - RB:16, ST:16, IB1:32, IB2:64 */ if (adreno_is_a305(adreno_dev) || adreno_is_a305c(adreno_dev) || adreno_is_a306(adreno_dev) || adreno_is_a320(adreno_dev) || adreno_is_a306(adreno_dev) || adreno_is_a306a(adreno_dev) || adreno_is_a320(adreno_dev) || adreno_is_a304(adreno_dev)) kgsl_regwrite(device, A3XX_CP_QUEUE_THRESHOLDS, 0x000E0602); else if (adreno_is_a330(adreno_dev) || adreno_is_a305b(adreno_dev) || Loading Loading
drivers/gpu/msm/a3xx_reg.h +1 −0 Original line number Diff line number Diff line Loading @@ -861,6 +861,7 @@ #define A305_RBBM_CLOCK_CTL_DEFAULT 0xAAAAAAAA #define A305C_RBBM_CLOCK_CTL_DEFAULT 0xAAAAAAAA #define A306_RBBM_CLOCK_CTL_DEFAULT 0xAAAAAAAA #define A306A_RBBM_CLOCK_CTL_DEFAULT 0xAAAAAAAA #define A310_RBBM_CLOCK_CTL_DEFAULT 0xAAAAAAAA #define A320_RBBM_CLOCK_CTL_DEFAULT 0xBFFFFFFF #define A330_RBBM_CLOCK_CTL_DEFAULT 0xBFFCFFFF Loading
drivers/gpu/msm/adreno-gpulist.h +12 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,18 @@ static const struct adreno_gpu_core adreno_gpulist[] = { .gmem_size = SZ_128K, .busy_mask = 0x7FFFFFFE, }, { .gpurev = ADRENO_REV_A306A, .core = 3, .major = 0, .minor = 6, .patchid = 0x20, .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, Loading
drivers/gpu/msm/adreno.h +2 −0 Original line number Diff line number Diff line Loading @@ -157,6 +157,7 @@ enum adreno_gpurev { ADRENO_REV_A305 = 305, ADRENO_REV_A305C = 306, ADRENO_REV_A306 = 307, ADRENO_REV_A306A = 308, ADRENO_REV_A310 = 310, ADRENO_REV_A320 = 320, ADRENO_REV_A330 = 330, Loading Loading @@ -896,6 +897,7 @@ ADRENO_TARGET(a305, ADRENO_REV_A305) ADRENO_TARGET(a305b, ADRENO_REV_A305B) ADRENO_TARGET(a305c, ADRENO_REV_A305C) ADRENO_TARGET(a306, ADRENO_REV_A306) ADRENO_TARGET(a306a, ADRENO_REV_A306A) ADRENO_TARGET(a310, ADRENO_REV_A310) ADRENO_TARGET(a320, ADRENO_REV_A320) ADRENO_TARGET(a330, ADRENO_REV_A330) Loading
drivers/gpu/msm/adreno_a3xx.c +13 −2 Original line number Diff line number Diff line Loading @@ -120,6 +120,8 @@ unsigned int adreno_a3xx_rbbm_clock_ctl_default(struct adreno_device return A305C_RBBM_CLOCK_CTL_DEFAULT; else if (adreno_is_a306(adreno_dev)) return A306_RBBM_CLOCK_CTL_DEFAULT; else if (adreno_is_a306a(adreno_dev)) return A306A_RBBM_CLOCK_CTL_DEFAULT; else if (adreno_is_a310(adreno_dev)) return A310_RBBM_CLOCK_CTL_DEFAULT; else if (adreno_is_a320(adreno_dev)) Loading Loading @@ -611,7 +613,7 @@ static void a3xx_platform_setup(struct adreno_device *adreno_dev) struct adreno_gpudev *gpudev; const struct adreno_reg_offsets *reg_offsets; if (adreno_is_a306(adreno_dev)) { if (adreno_is_a306(adreno_dev) || adreno_is_a306a(adreno_dev)) { gpudev = ADRENO_GPU_DEVICE(adreno_dev); reg_offsets = gpudev->reg_offsets; reg_offsets->offsets[ADRENO_REG_VBIF_XIN_HALT_CTRL0] = Loading Loading @@ -855,6 +857,13 @@ static const struct adreno_vbif_data a306_vbif[] = { {0, 0}, }; static const struct adreno_vbif_data a306a_vbif[] = { { A3XX_VBIF_ROUND_ROBIN_QOS_ARB, 0x0003 }, { A3XX_VBIF_OUT_RD_LIM_CONF0, 0x0000000A }, { A3XX_VBIF_OUT_WR_LIM_CONF0, 0x0000000A }, {0, 0}, }; static const struct adreno_vbif_data a310_vbif[] = { { A3XX_VBIF_ABIT_SORT, 0x0001000F }, { A3XX_VBIF_ABIT_SORT_CONF, 0x000000A4 }, Loading Loading @@ -951,6 +960,7 @@ static const struct adreno_vbif_platform a3xx_vbif_platforms[] = { { adreno_is_a305, a305_vbif }, { adreno_is_a305c, a305c_vbif }, { adreno_is_a306, a306_vbif }, { adreno_is_a306a, a306a_vbif }, { adreno_is_a310, a310_vbif }, { adreno_is_a320, a320_vbif }, /* A330v2.1 needs to be ahead of A330v2 so the right device matches */ Loading Loading @@ -1197,7 +1207,8 @@ static void a3xx_perfcounter_init(struct adreno_device *adreno_dev) a3xx_perfcounters_sp[3].countable = KGSL_PERFCOUNTER_BROKEN; if (counters && (adreno_is_a306(adreno_dev) || adreno_is_a304(adreno_dev))) { (adreno_is_a306(adreno_dev) || adreno_is_a304(adreno_dev) || adreno_is_a306a(adreno_dev))) { counters->groups[KGSL_PERFCOUNTER_GROUP_VBIF].regs = a3xx_perfcounters_vbif2; counters->groups[KGSL_PERFCOUNTER_GROUP_VBIF_PWR].regs = Loading
drivers/gpu/msm/adreno_ringbuffer.c +2 −1 Original line number Diff line number Diff line Loading @@ -304,7 +304,8 @@ static void _ringbuffer_setup_common(struct adreno_ringbuffer *rb) /* CP ROQ queue sizes (bytes) - RB:16, ST:16, IB1:32, IB2:64 */ if (adreno_is_a305(adreno_dev) || adreno_is_a305c(adreno_dev) || adreno_is_a306(adreno_dev) || adreno_is_a320(adreno_dev) || adreno_is_a306(adreno_dev) || adreno_is_a306a(adreno_dev) || adreno_is_a320(adreno_dev) || adreno_is_a304(adreno_dev)) kgsl_regwrite(device, A3XX_CP_QUEUE_THRESHOLDS, 0x000E0602); else if (adreno_is_a330(adreno_dev) || adreno_is_a305b(adreno_dev) || Loading