From: Atanas Filipov <atanas.filipov@oss.qualcomm.com>
To: Dmitry Baryshkov <dmitry.baryshkov@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, 13 Jul 2026 13:56:53 +0300 [thread overview]
Message-ID: <b385b69a-4c4d-49cb-add5-285bb9a182a9@oss.qualcomm.com> (raw)
In-Reply-To: <gri2pdgawm2ymbmebzzxfel5kx5nmyqzrdg6oikfhv5bgt7xem@uld56b6csqhi>
On 7/6/2026 4:11 PM, Dmitry Baryshkov wrote:
> 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?
The binding example was updated in the driver patch by mistake. v5
will have binding and driver in separate patches.
>
>> -
>> - 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.
>
Acknowledged. v5 will remove the unnecessary includes and move the
defines to their respective source files.
>> +
>> +#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.
>
Addressed in the reply to your DTS comment.
>> + [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.
>
Acknowledged. v5 will drop the dev_dbg.
>> +
>> + 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.
>
Acknowledged. Will be fixed in v5.
>> +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.
>
Acknowledged. v5 will model JPEG as a standalone peer node —
the camss_dev parent reference will be dropped entirely.
>> +}
>> +
>> +/* 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.
>
Acknowledged. Will be fixed in v5.
Best regards,
Atanas
>> + }
>> + 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;
>> +};
>> +
>
next prev parent reply other threads:[~2026-07-13 10:56 UTC|newest]
Thread overview: 88+ 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 7:23 ` sashiko-bot
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 7:24 ` sashiko-bot
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 7:18 ` sashiko-bot
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-06 7:11 ` [PATCH v4 4/5] arm64: dts: qcom: sm8250: Add JPEG encoder node Atanas Filipov
2026-07-06 7:29 ` sashiko-bot
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:33 ` sashiko-bot
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
2026-07-13 10:56 ` Atanas Filipov [this message]
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=b385b69a-4c4d-49cb-add5-285bb9a182a9@oss.qualcomm.com \
--to=atanas.filipov@oss.qualcomm.com \
--cc=andersson@kernel.org \
--cc=bryan.odonoghue@linaro.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dmitry.baryshkov@oss.qualcomm.com \
--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