The min_acc length can be calculated from the platform UBWC
configuration. Use the freshly introduced helper and calculate min_acc
length based on the platform UBWC configuration instead of specifying it
directly in the source.
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
---
drivers/media/platform/qcom/iris/iris_hfi_gen2_packet.c | 5 ++++-
drivers/media/platform/qcom/iris/iris_platform_common.h | 1 -
drivers/media/platform/qcom/iris/iris_platform_gen2.c | 1 -
3 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2_packet.c b/drivers/media/platform/qcom/iris/iris_hfi_gen2_packet.c
index d77fa29f44fc..878e61aa77c3 100644
--- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_packet.c
+++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_packet.c
@@ -3,6 +3,8 @@
* Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved.
*/
+#include <linux/soc/qcom/ubwc.h>
+
#include "iris_hfi_common.h"
#include "iris_hfi_gen2.h"
#include "iris_hfi_gen2_packet.h"
@@ -120,6 +122,7 @@ static void iris_hfi_gen2_create_packet(struct iris_hfi_header *hdr, u32 pkt_typ
void iris_hfi_gen2_packet_sys_init(struct iris_core *core, struct iris_hfi_header *hdr)
{
+ const struct qcom_ubwc_cfg_data *ubwc = core->ubwc_cfg;
u32 payload = 0;
iris_hfi_gen2_create_header(hdr, 0, core->header_id++);
@@ -146,7 +149,7 @@ void iris_hfi_gen2_packet_sys_init(struct iris_core *core, struct iris_hfi_heade
&payload,
sizeof(u32));
- payload = core->iris_platform_data->ubwc_config->mal_length;
+ payload = qcom_ubwc_min_acc_length_64b(ubwc) ? 64 : 32;
iris_hfi_gen2_create_packet(hdr,
HFI_PROP_UBWC_MAL_LENGTH,
HFI_HOST_FLAGS_NONE,
diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h b/drivers/media/platform/qcom/iris/iris_platform_common.h
index 8d8cdb56a3c7..3c5f3f68b722 100644
--- a/drivers/media/platform/qcom/iris/iris_platform_common.h
+++ b/drivers/media/platform/qcom/iris/iris_platform_common.h
@@ -73,7 +73,6 @@ struct tz_cp_config {
struct ubwc_config_data {
u32 max_channels;
- u32 mal_length;
u32 highest_bank_bit;
u32 bank_swzl_level;
u32 bank_swz2_level;
diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen2.c b/drivers/media/platform/qcom/iris/iris_platform_gen2.c
index c1989240c248..c70cfc2fc553 100644
--- a/drivers/media/platform/qcom/iris/iris_platform_gen2.c
+++ b/drivers/media/platform/qcom/iris/iris_platform_gen2.c
@@ -633,7 +633,6 @@ static const struct platform_clk_data sm8550_clk_table[] = {
static struct ubwc_config_data ubwc_config_sm8550 = {
.max_channels = 8,
- .mal_length = 32,
.highest_bank_bit = 16,
.bank_swzl_level = 0,
.bank_swz2_level = 1,
--
2.47.3
On 10/01/2026 19:37, Dmitry Baryshkov wrote:
> The min_acc length can be calculated from the platform UBWC
> configuration. Use the freshly introduced helper and calculate min_acc
> length based on the platform UBWC configuration instead of specifying it
> directly in the source.
>
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
> ---
> drivers/media/platform/qcom/iris/iris_hfi_gen2_packet.c | 5 ++++-
> drivers/media/platform/qcom/iris/iris_platform_common.h | 1 -
> drivers/media/platform/qcom/iris/iris_platform_gen2.c | 1 -
> 3 files changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2_packet.c b/drivers/media/platform/qcom/iris/iris_hfi_gen2_packet.c
> index d77fa29f44fc..878e61aa77c3 100644
> --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_packet.c
> +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_packet.c
> @@ -3,6 +3,8 @@
> * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved.
> */
>
> +#include <linux/soc/qcom/ubwc.h>
> +
> #include "iris_hfi_common.h"
> #include "iris_hfi_gen2.h"
> #include "iris_hfi_gen2_packet.h"
> @@ -120,6 +122,7 @@ static void iris_hfi_gen2_create_packet(struct iris_hfi_header *hdr, u32 pkt_typ
>
> void iris_hfi_gen2_packet_sys_init(struct iris_core *core, struct iris_hfi_header *hdr)
> {
> + const struct qcom_ubwc_cfg_data *ubwc = core->ubwc_cfg;
> u32 payload = 0;
>
> iris_hfi_gen2_create_header(hdr, 0, core->header_id++);
> @@ -146,7 +149,7 @@ void iris_hfi_gen2_packet_sys_init(struct iris_core *core, struct iris_hfi_heade
> &payload,
> sizeof(u32));
>
> - payload = core->iris_platform_data->ubwc_config->mal_length;
> + payload = qcom_ubwc_min_acc_length_64b(ubwc) ? 64 : 32;
> iris_hfi_gen2_create_packet(hdr,
> HFI_PROP_UBWC_MAL_LENGTH,
> HFI_HOST_FLAGS_NONE,
> diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h b/drivers/media/platform/qcom/iris/iris_platform_common.h
> index 8d8cdb56a3c7..3c5f3f68b722 100644
> --- a/drivers/media/platform/qcom/iris/iris_platform_common.h
> +++ b/drivers/media/platform/qcom/iris/iris_platform_common.h
> @@ -73,7 +73,6 @@ struct tz_cp_config {
>
> struct ubwc_config_data {
> u32 max_channels;
> - u32 mal_length;
> u32 highest_bank_bit;
> u32 bank_swzl_level;
> u32 bank_swz2_level;
> diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen2.c b/drivers/media/platform/qcom/iris/iris_platform_gen2.c
> index c1989240c248..c70cfc2fc553 100644
> --- a/drivers/media/platform/qcom/iris/iris_platform_gen2.c
> +++ b/drivers/media/platform/qcom/iris/iris_platform_gen2.c
> @@ -633,7 +633,6 @@ static const struct platform_clk_data sm8550_clk_table[] = {
>
> static struct ubwc_config_data ubwc_config_sm8550 = {
> .max_channels = 8,
> - .mal_length = 32,
> .highest_bank_bit = 16,
> .bank_swzl_level = 0,
> .bank_swz2_level = 1,
>
> --
> 2.47.3
>
>
This code is fine but, I still suggest changing the 64b postfix in
qcom_ubwc_min_acc_length_64b and just having the function return the
size for the platform as _that_ is the more sustainable way.
Up to you.
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
---
bod
On Sun, Jan 11, 2026 at 09:06:52PM +0000, Bryan O'Donoghue wrote: > On 10/01/2026 19:37, Dmitry Baryshkov wrote: > > The min_acc length can be calculated from the platform UBWC > > configuration. Use the freshly introduced helper and calculate min_acc > > length based on the platform UBWC configuration instead of specifying it > > directly in the source. > > > > Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> > > --- > > drivers/media/platform/qcom/iris/iris_hfi_gen2_packet.c | 5 ++++- > > drivers/media/platform/qcom/iris/iris_platform_common.h | 1 - > > drivers/media/platform/qcom/iris/iris_platform_gen2.c | 1 - > > 3 files changed, 4 insertions(+), 3 deletions(-) > > > > @@ -146,7 +149,7 @@ void iris_hfi_gen2_packet_sys_init(struct iris_core *core, struct iris_hfi_heade > > &payload, > > sizeof(u32)); > > > > - payload = core->iris_platform_data->ubwc_config->mal_length; > > + payload = qcom_ubwc_min_acc_length_64b(ubwc) ? 64 : 32; > > iris_hfi_gen2_create_packet(hdr, > > HFI_PROP_UBWC_MAL_LENGTH, > > HFI_HOST_FLAGS_NONE, > > This code is fine but, I still suggest changing the 64b postfix in > qcom_ubwc_min_acc_length_64b and just having the function return the size > for the platform as _that_ is the more sustainable way. See how MAL is handled in the DRM patches. If the UBWC spec is extended to allow 16 or 128 bytes, the drm/msm driver will need to be changed anyway to cope with that: driver uses flags to pass the value instead of passing the value as is. > > Up to you. > > Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> > > --- > bod -- With best wishes Dmitry
© 2016 - 2026 Red Hat, Inc.