From: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
To: Atanas Filipov <atanas.filipov@oss.qualcomm.com>
Cc: linux-media@vger.kernel.org, bryan.odonoghue@linaro.org,
vladimir.zapolskiy@linaro.org, loic.poulain@oss.qualcomm.com,
mchehab@kernel.org, robh@kernel.org, krzk+dt@kernel.org,
conor+dt@kernel.org, andersson@kernel.org,
konradybcio@kernel.org, linux-arm-msm@vger.kernel.org,
linux-kernel@vger.kernel.org, devicetree@vger.kernel.org
Subject: Re: [PATCH v4 5/5] media: qcom: jpeg: Add Qualcomm JPEG V4L2 encoder
Date: Mon, 6 Jul 2026 16:11:13 +0300 [thread overview]
Message-ID: <gri2pdgawm2ymbmebzzxfel5kx5nmyqzrdg6oikfhv5bgt7xem@uld56b6csqhi> (raw)
In-Reply-To: <20260706071113.383215-6-atanas.filipov@oss.qualcomm.com>
On Mon, Jul 06, 2026 at 10:11:13AM +0300, Atanas Filipov wrote:
> Add a Qualcomm JPEG encoder driver implemented on top of the
> V4L2 mem2mem framework.
>
> The driver wires vb2 queue handling, format negotiation, JPEG header
> handling, interrupt-driven job completion, and runtime PM/clock/ICC
> integration for the standalone JPEG encode hardware block.
>
> This series targets SM8250 (Kona) platforms.
>
> The jpeg-encoder node is described as a child node of the CAMSS block
> and is probed automatically via of_platform_populate() in camss_probe().
>
> Usage examples:
>
> - Check of related video node: v4l2-ctl --list-devices
> The expected result:
> qcom-jpeg-enc (platform:qcom-jpeg-enc):
> /dev/videoX
>
>
> diff --git a/Documentation/devicetree/bindings/media/qcom,jpeg-encoder.yaml b/Documentation/devicetree/bindings/media/qcom,jpeg-encoder.yaml
> index e4c16388ef07..53e83ebe4699 100644
> --- a/Documentation/devicetree/bindings/media/qcom,jpeg-encoder.yaml
> +++ b/Documentation/devicetree/bindings/media/qcom,jpeg-encoder.yaml
> @@ -72,80 +72,75 @@ examples:
> #include <dt-bindings/interconnect/qcom,sm8250.h>
> #include <dt-bindings/interrupt-controller/arm-gic.h>
>
> - jpeg-encoder@ac53000 {
> - compatible = "qcom,sm8250-jenc";
> - reg = <0xac53000 0x1000>;
What is going on here? And why?
> -
> - interrupts = <GIC_SPI 474 IRQ_TYPE_EDGE_RISING>;
> -
> - clocks = <&gcc GCC_CAMERA_HF_AXI_CLK>,
> - <&gcc GCC_CAMERA_SF_AXI_CLK>,
> - <&camcc CAM_CC_CORE_AHB_CLK>,
> - <&camcc CAM_CC_CPAS_AHB_CLK>,
> - <&camcc CAM_CC_CAMNOC_AXI_CLK>,
> - <&camcc CAM_CC_JPEG_CLK>;
> - clock-names = "hf_axi",
> - "sf_axi",
> - "core_ahb",
> - "cpas_ahb",
> - "cnoc_axi",
> - "jpeg";
> -
> diff --git a/drivers/media/platform/qcom/jpeg/qcom_jenc_defs.h b/drivers/media/platform/qcom/jpeg/qcom_jenc_defs.h
> new file mode 100644
> index 000000000000..2ab29bfb9b88
> --- /dev/null
> +++ b/drivers/media/platform/qcom/jpeg/qcom_jenc_defs.h
> @@ -0,0 +1,37 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +/*
> + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
> + */
> +
> +#ifndef QCOM_JENC_DEFS_H
> +#define QCOM_JENC_DEFS_H
> +
> +#include <linux/types.h>
> +#include <uapi/linux/v4l2-controls.h>
There includes are not necessary for this header.
> +
> +/* Offline JPEG encoder constraints */
> +#define QCOM_JPEG_HW_MAX_WIDTH 8192
> +#define QCOM_JPEG_HW_MAX_HEIGHT 8192
> +#define QCOM_JPEG_HW_MIN_WIDTH 256
> +#define QCOM_JPEG_HW_MIN_HEIGHT 256
> +
> +#define QCOM_JPEG_HW_DEF_HSTEP 16
> +#define QCOM_JPEG_HW_DEF_VSTEP 16
> +
> +#define QCOM_JPEG_HW_DEF_WIDTH 1920
> +#define QCOM_JPEG_HW_DEF_HEIGHT 1088
> +
> +#define QCOM_JPEG_MAX_PLANES 3
> +
> +#define QCOM_JPEG_QUALITY_MIN 1
> +#define QCOM_JPEG_QUALITY_DEF 98
> +#define QCOM_JPEG_QUALITY_MAX 100
> +#define QCOM_JPEG_QUALITY_MID (QCOM_JPEG_QUALITY_MAX / 2)
> +#define QCOM_JPEG_QUALITY_UNT 1
> +
> +#define QCOM_JPEG_FPS_MIN 1
> +#define QCOM_JPEG_FPS_MAX 240
> +#define QCOM_JPEG_FPS_DEF 30
> +#define QCOM_JPEG_FPS_UNT 1
This is a collection of random defines, which are mostly used once.
Please move them to the corresponding source file.
> +
> +#endif /* QCOM_JENC_DEFS_H */
> diff --git a/drivers/media/platform/qcom/jpeg/qcom_jenc_dev.c b/drivers/media/platform/qcom/jpeg/qcom_jenc_dev.c
> new file mode 100644
> index 000000000000..ddfa84838b6b
> --- /dev/null
> +++ b/drivers/media/platform/qcom/jpeg/qcom_jenc_dev.c
> @@ -0,0 +1,314 @@
> +// SPDX-License-Identifier: GPL-2.0-only
> +/*
> + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
> + */
> +
> +#include <linux/clk.h>
> +#include <linux/interrupt.h>
> +#include <linux/mod_devicetable.h>
> +#include <linux/module.h>
> +#include <linux/platform_device.h>
> +#include <linux/pm_opp.h>
> +#include <linux/pm_runtime.h>
> +#include <linux/slab.h>
> +
> +#include <media/v4l2-mem2mem.h>
> +
> +#include "qcom_jenc_dev.h"
> +#include "qcom_jenc_ops.h"
> +#include "qcom_jenc_res.h"
> +#include "qcom_jenc_v4l2.h"
> +
> +enum jpeg_opp_clks_id {
> + JPEG_OPP_CNOC_IDX = 0,
> + JPEG_OPP_CORE_IDX
> +};
> +
> +static const char * const opp_clk_names[] = {
> + [JPEG_OPP_CNOC_IDX] = "cnoc_axi",
This way your driver will force its own frequency on the CNOC_AXI clock.
There are other clients of the clock, so there should be some kind of
voting on it. Either use icc-clk or add CAMSS API to sum the votes on
the CNOC_AXI.
> + [JPEG_OPP_CORE_IDX] = "jpeg",
> + NULL,
> +};
> +
> +static struct dev_pm_opp_config opp_config = {
> + .clk_names = opp_clk_names,
> + .config_clks = dev_pm_opp_config_clks_simple,
> +};
> +
> +static int qcom_jpeg_opp_init(struct qcom_jenc_dev *jenc)
> +{
> + struct dev_pm_opp *opp;
> + int rc;
> +
> + rc = devm_pm_opp_set_config(jenc->dev, &opp_config);
> + if (rc)
> + return rc;
> +
> + rc = devm_pm_opp_of_add_table(jenc->dev);
> + if (rc && rc != -ENODEV)
> + return rc;
> +
> + /* initialize the maximum available frequency for the JPEG core */
> + jenc->max_freq = ULONG_MAX;
> + opp = dev_pm_opp_find_freq_floor_indexed(jenc->dev, &jenc->max_freq, JPEG_OPP_CORE_IDX);
> + if (IS_ERR(opp))
> + return PTR_ERR(opp);
> +
> + dev_pm_opp_put(opp);
> +
> + /* initialize the default optimized frequency for the JPEG core */
> + jenc->opt_freq = jenc->max_freq;
> +
> + dev_dbg(jenc->dev, "JPEG max clocks is: %lu\n", jenc->max_freq);
> +
> + return 0;
> +}
> +
> +static int qcom_jpeg_clk_init(struct qcom_jenc_dev *jenc)
> +{
> + jenc->num_clks = devm_clk_bulk_get_all(jenc->dev, &jenc->clks);
> + if (jenc->num_clks < 0)
> + return jenc->num_clks;
> +
> + return 0;
> +}
> +
> +static int qcom_jpeg_clk_on(struct qcom_jenc_dev *jenc)
> +{
> + struct dev_pm_opp *opp;
> + int rc;
> +
> + rc = clk_bulk_prepare_enable(jenc->num_clks, jenc->clks);
> + if (rc)
> + return rc;
> +
> + /* setup the OPP according to the calculated optimal frequency */
> + opp = dev_pm_opp_find_freq_ceil_indexed(jenc->dev, &jenc->opt_freq, JPEG_OPP_CORE_IDX);
> + if (IS_ERR(opp)) {
> + rc = PTR_ERR(opp);
> + goto err_clk_disable;
> + }
> +
> + rc = dev_pm_opp_set_opp(jenc->dev, opp);
> + if (rc)
> + goto err_dev_pm_opp;
> +
> + dev_dbg(jenc->dev, "selected OPP clocks cnoc=%lu, core=%lu\n",
> + dev_pm_opp_get_freq_indexed(opp, JPEG_OPP_CNOC_IDX),
> + dev_pm_opp_get_freq_indexed(opp, JPEG_OPP_CORE_IDX));
Drop extra debugging, you can enable debugging for OPP via
CONFIG_DEBUG_DRIVER.
> +
> + dev_pm_opp_put(opp);
> +
> + return 0;
> +
> +err_dev_pm_opp:
> + dev_pm_opp_put(opp);
Once you drop excessive debugging code, the dev_pm_opp_put() will find
its natural place right after dev_pm_opp_set_opp(), before checking the
rc.
> +err_clk_disable:
> + clk_bulk_disable_unprepare(jenc->num_clks, jenc->clks);
> +
> + return rc;
> +}
> +
> +static void qcom_jpeg_clk_off(struct qcom_jenc_dev *jenc)
> +{
> + dev_pm_opp_set_opp(jenc->dev, NULL);
> + clk_bulk_disable_unprepare(jenc->num_clks, jenc->clks);
> + jenc->opt_freq = jenc->max_freq;
> +}
> +
> +/* qcom_jpeg_camss_get - resume the parent CAMSS device */
> +static int qcom_jpeg_camss_get(struct qcom_jenc_dev *jenc)
> +{
> + return pm_runtime_resume_and_get(jenc->camss_dev);
Use devlinks instead.
> +}
> +
> +/* qcom_jpeg_camss_put - release the parent CAMSS device */
> +static void qcom_jpeg_camss_put(struct qcom_jenc_dev *jenc)
> +{
> + pm_runtime_put_sync(jenc->camss_dev);
> +}
> +
> +static int qcom_jpeg_pm_suspend(struct device *dev)
> +{
> + struct qcom_jenc_dev *jenc = dev_get_drvdata(dev);
> +
> + qcom_jpeg_clk_off(jenc);
> + qcom_jpeg_camss_put(jenc);
> +
> + return 0;
> +}
> +
> +static int qcom_jpeg_pm_resume(struct device *dev)
> +{
> + struct qcom_jenc_dev *jenc = dev_get_drvdata(dev);
> + int rc;
> +
> + rc = qcom_jpeg_camss_get(jenc);
> + if (rc)
> + return rc;
> +
> + rc = qcom_jpeg_clk_on(jenc);
> + if (rc) {
> + qcom_jpeg_camss_put(jenc);
> + return rc;
> + }
> +
> + return 0;
> +}
> +
> +static int qcom_jpeg_pm_system_suspend(struct device *dev)
> +{
> + struct qcom_jenc_dev *jenc = dev_get_drvdata(dev);
> + int rc;
> +
> + v4l2_m2m_suspend(jenc->m2m_dev);
> +
> + rc = pm_runtime_force_suspend(dev);
> + if (rc)
> + v4l2_m2m_resume(jenc->m2m_dev);
> +
> + return rc;
> +}
> +
> +static int qcom_jpeg_pm_system_resume(struct device *dev)
> +{
> + struct qcom_jenc_dev *jenc = dev_get_drvdata(dev);
> + int rc;
> +
> + rc = pm_runtime_force_resume(dev);
> + if (rc)
> + return rc;
> +
> + v4l2_m2m_resume(jenc->m2m_dev);
> +
> + return 0;
> +}
> +
> +static _DEFINE_DEV_PM_OPS(qcom_jpeg_pm_ops,
> + qcom_jpeg_pm_system_suspend, qcom_jpeg_pm_system_resume,
> + qcom_jpeg_pm_suspend, qcom_jpeg_pm_resume, NULL);
> +
> +static int qcom_jpeg_probe(struct platform_device *pdev)
> +{
> + const struct qcom_dev_resources *res;
> + struct qcom_jenc_dev *jenc;
> + int rc;
> +
> + jenc = devm_kzalloc(&pdev->dev, sizeof(*jenc), GFP_KERNEL);
> + if (!jenc)
> + return -ENOMEM;
> +
> + jenc->dev = &pdev->dev;
> + jenc->camss_dev = pdev->dev.parent;
> + platform_set_drvdata(pdev, jenc);
> + rc = devm_mutex_init(&pdev->dev, &jenc->dev_mutex);
> + if (rc)
> + goto err_free_jenc;
> + spin_lock_init(&jenc->hw_lock);
> + init_completion(&jenc->reset_complete);
> + init_completion(&jenc->stop_complete);
> +
> + res = device_get_match_data(jenc->dev);
> + if (!res) {
> + rc = dev_err_probe(jenc->dev, -ENODEV, "unsupported SoC\n");
> + goto err_free_jenc;
drop the gotos, it's an empty label now.
> + }
> + jenc->res = res;
> +
> + if (!jenc->res->hw_ops) {
> + rc = dev_err_probe(jenc->dev, -EINVAL, "missing hw resources\n");
> + goto err_free_jenc;
> + }
> +
> + rc = dma_set_mask_and_coherent(jenc->dev, DMA_BIT_MASK(32));
> + if (rc) {
> + dev_err_probe(jenc->dev, rc, "failed to set DMA mask\n");
> + goto err_free_jenc;
> + }
> +
> + jenc->jpeg_base = devm_platform_ioremap_resource(pdev, 0);
> + if (IS_ERR(jenc->jpeg_base)) {
> + rc = dev_err_probe(jenc->dev, PTR_ERR(jenc->jpeg_base),
> + "failed to map JPEG resource\n");
> + goto err_free_jenc;
> + }
> +
> + rc = qcom_jpeg_opp_init(jenc);
> + if (rc) {
> + dev_err_probe(jenc->dev, rc, "failed to init OPP\n");
> + goto err_free_jenc;
> + }
> +
> + rc = qcom_jpeg_clk_init(jenc);
> + if (rc) {
> + dev_err_probe(jenc->dev, rc, "failed to init clocks\n");
> + goto err_free_jenc;
> + }
> +
> + jenc->irq = platform_get_irq(pdev, 0);
> + if (jenc->irq < 0) {
> + rc = dev_err_probe(jenc->dev, jenc->irq, "failed to get IRQ\n");
> + goto err_free_jenc;
> + }
> +
> + rc = devm_request_threaded_irq(jenc->dev, jenc->irq,
> + jenc->res->hw_ops->hw_irq_top,
> + jenc->res->hw_ops->hw_irq_bot,
> + IRQF_ONESHOT | IRQF_NO_AUTOEN, dev_name(jenc->dev), jenc);
> + if (rc) {
> + dev_err_probe(jenc->dev, rc, "failed to request IRQ\n");
> + goto err_free_jenc;
> + }
> +
> + rc = v4l2_device_register(jenc->dev, &jenc->v4l2_dev);
> + if (rc) {
> + dev_err_probe(jenc->dev, rc, "failed to register V4L2 device\n");
> + goto err_free_jenc;
> + }
> +
> + rc = devm_add_action_or_reset(jenc->dev,
> + (void (*)(void *))v4l2_device_unregister,
> + &jenc->v4l2_dev);
> + if (rc)
> + goto err_free_jenc;
> +
> + rc = devm_pm_runtime_enable(jenc->dev);
> + if (rc)
> + goto err_free_jenc;
> +
> + rc = qcom_jpeg_v4l2_register(jenc);
> + if (rc) {
> + dev_err_probe(jenc->dev, rc, "failed to register video device\n");
> + goto err_free_jenc;
> + }
> +
> + dev_dbg(jenc->dev, "Qualcomm JPEG encoder registered\n");
> +
> + return 0;
> +
> +err_free_jenc:
> + return rc;
> +}
> +
[...]
> diff --git a/drivers/media/platform/qcom/jpeg/qcom_jenc_hdr.c b/drivers/media/platform/qcom/jpeg/qcom_jenc_hdr.c
> new file mode 100644
> index 000000000000..c9959518c64d
> --- /dev/null
> +++ b/drivers/media/platform/qcom/jpeg/qcom_jenc_hdr.c
> @@ -0,0 +1,331 @@
> +// SPDX-License-Identifier: GPL-2.0-only
> +/*
> + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
> + */
> +
> +#include <linux/errno.h>
> +#include <linux/string.h>
> +
> +#include <media/jpeg.h>
> +#include <media/v4l2-jpeg.h>
> +
> +#include "qcom_jenc_dev.h"
> +#include "qcom_jenc_hdr.h"
> +
> +/*
> + * The elements defined in this header are specified
> + * in the ITU-T T.81 / JPEG specification.
> + *
> + * https://www.w3.org/Graphics/JPEG/itu-t81.pdf
> + */
> +
> +#define JFIF_HEADER_WIDTH_OFFS 0x07
> +#define JFIF_HEADER_HEIGHT_OFFS 0x05
This is offset_of(), no need to define those.
I think, you already got a review from me. Move all standard-related
defines and code to the generic v4l2 code, unless you get an explicit
blessing from one of V4L2 maintainers not to do so.
> +#define JFIF_APP0_LENGTH_HI 0x00
> +#define JFIF_APP0_LENGTH_LO 0x10
> +#define JFIF_IDENT_TERM 0x00
> +#define JFIF_VERSION_MAJOR 0x01
> +#define JFIF_VERSION_MINOR 0x01
> +#define JFIF_DENSITY_HI 0x00
> +#define JFIF_DENSITY_LO 0x01
> +#define JFIF_THUMBNAIL_SIZE 0x00
> +
> +#define JPEG_SEG_LEN_HI 0x00
> +#define JPEG_LEN_DQT_LUMA_LO 0x43
> +#define JPEG_LEN_DQT_CHROMA_LO 0x43
> +#define JPEG_LEN_SOF0_MONO_LO 0x0b
> +#define JPEG_LEN_SOF0_COLOR_LO 0x11
> +#define JPEG_LEN_DHT_MONO_LO 0xd2
> +#define JPEG_LEN_DHT_COLOR_HI 0x01
> +#define JPEG_LEN_DHT_COLOR_LO 0xa2
> +#define JPEG_LEN_SOS_MONO_LO 0x08
> +#define JPEG_LEN_SOS_COLOR_LO 0x0c
> +
> +struct jpeg_header_buf {
> + u8 *ptr;
> + u32 size;
> + u32 pos;
> +};
> +
--
With best wishes
Dmitry
next prev parent reply other threads:[~2026-07-06 13:11 UTC|newest]
Thread overview: 84+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-06 7:11 [PATCH v4 0/5] Add Qualcomm JPEG V4L2 encoder for SM8250 Atanas Filipov
2026-07-06 7:11 ` [PATCH v4 1/5] media: qcom: camss: Populate CAMSS child devices via DT Atanas Filipov
2026-07-06 12:09 ` Krzysztof Kozlowski
2026-07-06 12:27 ` Bryan O'Donoghue
2026-07-06 12:36 ` Krzysztof Kozlowski
2026-07-06 12:38 ` Bryan O'Donoghue
2026-07-13 8:21 ` Atanas Filipov
2026-07-06 12:41 ` Dmitry Baryshkov
2026-07-08 22:30 ` Bryan O'Donoghue
2026-07-09 7:45 ` Loic Poulain
2026-07-09 10:04 ` Bryan O'Donoghue
2026-07-10 11:58 ` Atanas Filipov
2026-07-06 7:11 ` [PATCH v4 2/5] dt-bindings: media: qcom,sm8250-camss: allow JPEG encoder child node Atanas Filipov
2026-07-06 10:07 ` Bryan O'Donoghue
2026-07-06 12:11 ` Krzysztof Kozlowski
2026-07-13 8:24 ` Atanas Filipov
2026-07-06 7:11 ` [PATCH v4 3/5] dt-bindings: media: qcom: Add JPEG encoder binding Atanas Filipov
2026-07-06 10:19 ` Bryan O'Donoghue
2026-07-06 12:17 ` Krzysztof Kozlowski
2026-07-13 8:27 ` Atanas Filipov
2026-07-12 14:55 ` Bjorn Andersson
2026-07-13 8:38 ` Atanas Filipov
2026-07-15 8:11 ` Gjorgji Rosikopulos (Consultant)
2026-07-06 7:11 ` [PATCH v4 4/5] arm64: dts: qcom: sm8250: Add JPEG encoder node Atanas Filipov
2026-07-06 12:18 ` Krzysztof Kozlowski
2026-07-13 8:29 ` Atanas Filipov
2026-07-06 12:45 ` Dmitry Baryshkov
2026-07-13 10:34 ` Atanas Filipov
2026-07-06 7:11 ` [PATCH v4 5/5] media: qcom: jpeg: Add Qualcomm JPEG V4L2 encoder Atanas Filipov
2026-07-06 7:46 ` Vladimir Zapolskiy
2026-07-07 13:24 ` Gjorgji Rosikopulos (Consultant)
2026-07-07 13:32 ` Dmitry Baryshkov
2026-07-07 13:47 ` Gjorgji Rosikopulos (Consultant)
2026-07-07 14:47 ` Dmitry Baryshkov
2026-07-07 14:51 ` Gjorgji Rosikopulos (Consultant)
2026-07-08 8:47 ` Vladimir Zapolskiy
2026-07-08 9:32 ` Gjorgji Rosikopulos (Consultant)
2026-07-08 10:28 ` Vladimir Zapolskiy
2026-07-08 11:35 ` Dmitry Baryshkov
2026-07-08 12:01 ` Vladimir Zapolskiy
2026-07-08 15:44 ` Gjorgji Rosikopulos (Consultant)
2026-07-08 16:25 ` Vladimir Zapolskiy
2026-07-13 11:03 ` Atanas Filipov
2026-07-06 10:21 ` Bryan O'Donoghue
2026-07-06 12:19 ` Krzysztof Kozlowski
2026-07-13 8:30 ` Atanas Filipov
2026-07-06 13:11 ` Dmitry Baryshkov [this message]
2026-07-13 10:56 ` Atanas Filipov
2026-07-06 17:13 ` Uwe Kleine-König
2026-07-13 11:09 ` Atanas Filipov
2026-07-06 10:12 ` [PATCH v4 0/5] Add Qualcomm JPEG V4L2 encoder for SM8250 Bryan O'Donoghue
2026-07-06 12:00 ` Vladimir Zapolskiy
2026-07-06 12:11 ` Bryan O'Donoghue
2026-07-06 13:02 ` Vladimir Zapolskiy
2026-07-06 13:37 ` Bryan O'Donoghue
2026-07-06 13:57 ` Vladimir Zapolskiy
2026-07-06 14:12 ` Bryan O'Donoghue
2026-07-06 14:35 ` Vladimir Zapolskiy
2026-07-06 14:49 ` Bryan O'Donoghue
2026-07-06 15:00 ` Vladimir Zapolskiy
2026-07-07 9:24 ` Konrad Dybcio
2026-07-07 10:00 ` Bryan O'Donoghue
2026-07-07 10:11 ` Konrad Dybcio
2026-07-07 10:41 ` Bryan O'Donoghue
2026-07-08 12:19 ` Konrad Dybcio
2026-07-08 21:21 ` Bryan O'Donoghue
2026-07-09 5:41 ` Gjorgji Rosikopulos (Consultant)
2026-07-09 7:33 ` Dmitry Baryshkov
2026-07-09 10:31 ` Bryan O'Donoghue
2026-07-09 18:16 ` Konrad Dybcio
2026-07-10 12:28 ` Dmitry Baryshkov
2026-07-10 12:33 ` Konrad Dybcio
2026-07-10 12:52 ` Dmitry Baryshkov
2026-07-10 13:28 ` Bryan O'Donoghue
2026-07-10 13:45 ` Atanas Filipov
2026-07-07 12:17 ` Gjorgji Rosikopulos (Consultant)
2026-07-07 10:55 ` Gjorgji Rosikopulos (Consultant)
2026-07-07 11:13 ` Bryan O'Donoghue
2026-07-07 11:20 ` Gjorgji Rosikopulos (Consultant)
2026-07-07 11:15 ` Bryan O'Donoghue
2026-07-07 13:22 ` Dmitry Baryshkov
2026-07-07 15:49 ` Bryan O'Donoghue
2026-07-06 12:24 ` Krzysztof Kozlowski
2026-07-13 8:32 ` Atanas Filipov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=gri2pdgawm2ymbmebzzxfel5kx5nmyqzrdg6oikfhv5bgt7xem@uld56b6csqhi \
--to=dmitry.baryshkov@oss.qualcomm.com \
--cc=andersson@kernel.org \
--cc=atanas.filipov@oss.qualcomm.com \
--cc=bryan.odonoghue@linaro.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=konradybcio@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=loic.poulain@oss.qualcomm.com \
--cc=mchehab@kernel.org \
--cc=robh@kernel.org \
--cc=vladimir.zapolskiy@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox