| From c4f8a0fab579dc38f1a7a236d142914b16a59df4 Mon Sep 17 00:00:00 2001 |
| From: Loic Poulain <loic.poulain@linaro.org> |
| Date: Wed, 11 Sep 2019 11:45:59 -0300 |
| Subject: [PATCH] media: venus: core: Fix msm8996 frequency table |
| |
| commit c690435ed07901737e5c007a65ec59f53b33eb71 upstream. |
| |
| In downstream driver, there are two frequency tables defined, |
| one for the encoder and one for the decoder: |
| |
| /* Encoders / |
| <972000 490000000 0x55555555>, / 4k UHD @ 30 / |
| <489600 320000000 0x55555555>, / 1080p @ 60 / |
| <244800 150000000 0x55555555>, / 1080p @ 30 / |
| <108000 75000000 0x55555555>, / 720p @ 30 */ |
| |
| /* Decoders / |
| <1944000 490000000 0xffffffff>, / 4k UHD @ 60 / |
| < 972000 320000000 0xffffffff>, / 4k UHD @ 30 / |
| < 489600 150000000 0xffffffff>, / 1080p @ 60 / |
| < 244800 75000000 0xffffffff>; / 1080p @ 30 */ |
| |
| It shows that encoder always needs a higher clock than decoder. |
| |
| In current venus driver, the unified frequency table is aligned |
| with the downstream decoder table which causes performance issues |
| in encoding scenarios. Fix that by aligning frequency table on |
| worst case (encoding). |
| |
| Signed-off-by: Loic Poulain <loic.poulain@linaro.org> |
| Signed-off-by: Stanimir Varbanov <stanimir.varbanov@linaro.org> |
| Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/media/platform/qcom/venus/core.c b/drivers/media/platform/qcom/venus/core.c |
| index db8e40b55d72..42761b27ffa0 100644 |
| --- a/drivers/media/platform/qcom/venus/core.c |
| +++ b/drivers/media/platform/qcom/venus/core.c |
| @@ -427,10 +427,11 @@ static const struct venus_resources msm8916_res = { |
| }; |
| |
| static const struct freq_tbl msm8996_freq_table[] = { |
| - { 1944000, 490000000 }, /* 4k UHD @ 60 */ |
| - { 972000, 320000000 }, /* 4k UHD @ 30 */ |
| - { 489600, 150000000 }, /* 1080p @ 60 */ |
| - { 244800, 75000000 }, /* 1080p @ 30 */ |
| + { 1944000, 520000000 }, /* 4k UHD @ 60 (decode only) */ |
| + { 972000, 520000000 }, /* 4k UHD @ 30 */ |
| + { 489600, 346666667 }, /* 1080p @ 60 */ |
| + { 244800, 150000000 }, /* 1080p @ 30 */ |
| + { 108000, 75000000 }, /* 720p @ 30 */ |
| }; |
| |
| static const struct reg_val msm8996_reg_preset[] = { |
| -- |
| 2.7.4 |
| |