Loading drivers/gpu/msm/adreno_a3xx.c +40 −0 Original line number Diff line number Diff line Loading @@ -151,6 +151,43 @@ static const unsigned int _a3xx_pwron_fixup_fs_instructions[] = { 0x00000000, 0x03000000, 0x00000000, 0x00000000, }; static void a3xx_efuse_speed_bin(struct adreno_device *adreno_dev) { unsigned int val; unsigned int speed_bin[3]; struct kgsl_device *device = &adreno_dev->dev; if (of_property_read_u32_array(device->pdev->dev.of_node, "qcom,gpu-speed-bin", speed_bin, 3)) return; adreno_efuse_read_u32(adreno_dev, speed_bin[0], &val); adreno_dev->speed_bin = (val & speed_bin[1]) >> speed_bin[2]; } static const struct { int (*check)(struct adreno_device *adreno_dev); void (*func)(struct adreno_device *adreno_dev); } a3xx_efuse_funcs[] = { { adreno_is_a306a, a3xx_efuse_speed_bin }, }; static void a3xx_check_features(struct adreno_device *adreno_dev) { unsigned int i; if (adreno_efuse_map(adreno_dev)) return; for (i = 0; i < ARRAY_SIZE(a3xx_efuse_funcs); i++) { if (a3xx_efuse_funcs[i].check(adreno_dev)) a3xx_efuse_funcs[i].func(adreno_dev); } adreno_efuse_unmap(adreno_dev); } /** * _a3xx_pwron_fixup() - Initialize a special command buffer to run a * post-power collapse shader workaround Loading Loading @@ -604,6 +641,9 @@ static void a3xx_platform_setup(struct adreno_device *adreno_dev) gpudev->vbif_xin_halt_ctrl0_mask = A30X_VBIF_XIN_HALT_CTRL0_MASK; } /* Check efuse bits for various capabilties */ a3xx_check_features(adreno_dev); } static int a3xx_send_me_init(struct adreno_device *adreno_dev, Loading Loading
drivers/gpu/msm/adreno_a3xx.c +40 −0 Original line number Diff line number Diff line Loading @@ -151,6 +151,43 @@ static const unsigned int _a3xx_pwron_fixup_fs_instructions[] = { 0x00000000, 0x03000000, 0x00000000, 0x00000000, }; static void a3xx_efuse_speed_bin(struct adreno_device *adreno_dev) { unsigned int val; unsigned int speed_bin[3]; struct kgsl_device *device = &adreno_dev->dev; if (of_property_read_u32_array(device->pdev->dev.of_node, "qcom,gpu-speed-bin", speed_bin, 3)) return; adreno_efuse_read_u32(adreno_dev, speed_bin[0], &val); adreno_dev->speed_bin = (val & speed_bin[1]) >> speed_bin[2]; } static const struct { int (*check)(struct adreno_device *adreno_dev); void (*func)(struct adreno_device *adreno_dev); } a3xx_efuse_funcs[] = { { adreno_is_a306a, a3xx_efuse_speed_bin }, }; static void a3xx_check_features(struct adreno_device *adreno_dev) { unsigned int i; if (adreno_efuse_map(adreno_dev)) return; for (i = 0; i < ARRAY_SIZE(a3xx_efuse_funcs); i++) { if (a3xx_efuse_funcs[i].check(adreno_dev)) a3xx_efuse_funcs[i].func(adreno_dev); } adreno_efuse_unmap(adreno_dev); } /** * _a3xx_pwron_fixup() - Initialize a special command buffer to run a * post-power collapse shader workaround Loading Loading @@ -604,6 +641,9 @@ static void a3xx_platform_setup(struct adreno_device *adreno_dev) gpudev->vbif_xin_halt_ctrl0_mask = A30X_VBIF_XIN_HALT_CTRL0_MASK; } /* Check efuse bits for various capabilties */ a3xx_check_features(adreno_dev); } static int a3xx_send_me_init(struct adreno_device *adreno_dev, Loading