From: Maxime Ripard <mripard@kernel.org>
To: keith <keith.zhao@starfivetech.com>
Cc: andrzej.hajda@intel.com, neil.armstrong@linaro.org,
rfoss@kernel.org, Laurent.pinchart@ideasonboard.com,
jonas@kwiboo.se, jernej.skrabec@gmail.com,
maarten.lankhorst@linux.intel.com, tzimmermann@suse.de,
airlied@gmail.com, daniel@ffwll.ch, robh@kernel.org,
krzk+dt@kernel.org, conor+dt@kernel.org, hjc@rock-chips.com,
heiko@sntech.de, andy.yan@rock-chips.com,
xingyu.wu@starfivetech.com, p.zabel@pengutronix.de,
jack.zhu@starfivetech.com, shengyang.chen@starfivetech.com,
dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v4 10/10] drm/vs: add simple dsi encoder
Date: Wed, 22 May 2024 09:29:43 +0200 [thread overview]
Message-ID: <20240522-devious-strict-tapir-3a7f5a@houat> (raw)
In-Reply-To: <20240521105817.3301-11-keith.zhao@starfivetech.com>
[-- Attachment #1.1: Type: text/plain, Size: 7877 bytes --]
Hi,
On Tue, May 21, 2024 at 06:58:17PM GMT, keith wrote:
> add encoder to match cdns dsi driver
>
> Signed-off-by: keith <keith.zhao@starfivetech.com>
> ---
> drivers/gpu/drm/verisilicon/Makefile | 3 +-
> drivers/gpu/drm/verisilicon/vs_drv.c | 1 +
> drivers/gpu/drm/verisilicon/vs_drv.h | 1 +
> drivers/gpu/drm/verisilicon/vs_simple_enc.c | 190 ++++++++++++++++++++
> drivers/gpu/drm/verisilicon/vs_simple_enc.h | 25 +++
> 5 files changed, 219 insertions(+), 1 deletion(-)
> create mode 100644 drivers/gpu/drm/verisilicon/vs_simple_enc.c
> create mode 100644 drivers/gpu/drm/verisilicon/vs_simple_enc.h
>
> diff --git a/drivers/gpu/drm/verisilicon/Makefile b/drivers/gpu/drm/verisilicon/Makefile
> index 2d02b4a3a567..c35ba9bd6f81 100644
> --- a/drivers/gpu/drm/verisilicon/Makefile
> +++ b/drivers/gpu/drm/verisilicon/Makefile
> @@ -4,7 +4,8 @@ vs_drm-objs := vs_dc_hw.o \
> vs_modeset.o \
> vs_plane.o \
> vs_crtc.o \
> - vs_drv.o
> + vs_drv.o \
> + vs_simple_enc.o
>
> vs_drm-$(CONFIG_DRM_INNO_STARFIVE_HDMI) += inno_hdmi-starfive.o
> obj-$(CONFIG_DRM_VERISILICON_DC8200) += vs_drm.o
> diff --git a/drivers/gpu/drm/verisilicon/vs_drv.c b/drivers/gpu/drm/verisilicon/vs_drv.c
> index 6f04102b05b3..2748d48f2c7e 100644
> --- a/drivers/gpu/drm/verisilicon/vs_drv.c
> +++ b/drivers/gpu/drm/verisilicon/vs_drv.c
> @@ -612,6 +612,7 @@ static struct platform_driver *drm_sub_drivers[] = {
> #ifdef CONFIG_DRM_INNO_STARFIVE_HDMI
> &starfive_hdmi_driver,
> #endif
> + &simple_encoder_driver,
> };
>
> static struct component_match *vs_add_external_components(struct device *dev)
> diff --git a/drivers/gpu/drm/verisilicon/vs_drv.h b/drivers/gpu/drm/verisilicon/vs_drv.h
> index c3c08ed5f8ac..f3f0f170777d 100644
> --- a/drivers/gpu/drm/verisilicon/vs_drv.h
> +++ b/drivers/gpu/drm/verisilicon/vs_drv.h
> @@ -17,6 +17,7 @@
> #include <drm/drm_managed.h>
>
> #include "vs_dc_hw.h"
> +#include "vs_simple_enc.h"
>
> /*@pitch_alignment: buffer pitch alignment required by sub-devices.*/
> struct vs_drm_device {
> diff --git a/drivers/gpu/drm/verisilicon/vs_simple_enc.c b/drivers/gpu/drm/verisilicon/vs_simple_enc.c
> new file mode 100644
> index 000000000000..d0b1755d77d2
> --- /dev/null
> +++ b/drivers/gpu/drm/verisilicon/vs_simple_enc.c
> @@ -0,0 +1,190 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Copyright (C) 2020 VeriSilicon Holdings Co., Ltd.
> + */
> +#include <linux/component.h>
> +#include <linux/of_device.h>
> +#include <linux/module.h>
> +#include <linux/regmap.h>
> +#include <linux/media-bus-format.h>
> +#include <linux/mfd/syscon.h>
> +#include <linux/platform_device.h>
> +#include <linux/of.h>
> +
> +#include <drm/drm_atomic_helper.h>
> +#include <drm/drm_bridge.h>
> +#include <drm/drm_crtc_helper.h>
> +#include <drm/drm_of.h>
> +
> +#include "vs_crtc.h"
> +#include "vs_simple_enc.h"
> +
> +static const struct simple_encoder_priv dsi_priv = {
> + .encoder_type = DRM_MODE_ENCODER_DSI
> +};
A simple encoder is a thing in KMS, and it's not what you are doing /
using. Please use a different name.
> +static inline struct vs_simple_encoder *to_simple_encoder(struct drm_encoder *enc)
> +{
> + return container_of(enc, struct vs_simple_encoder, encoder);
> +}
> +
> +static int encoder_parse_dt(struct device *dev)
> +{
> + struct vs_simple_encoder *simple = dev_get_drvdata(dev);
> + unsigned int args[2];
> +
> + simple->dss_regmap = syscon_regmap_lookup_by_phandle_args(dev->of_node,
> + "starfive,syscon",
> + 2, args);
> +
> + if (IS_ERR(simple->dss_regmap)) {
> + return dev_err_probe(dev, PTR_ERR(simple->dss_regmap),
> + "getting the regmap failed\n");
> + }
> +
> + simple->offset = args[0];
> + simple->mask = args[1];
> +
> + return 0;
> +}
> +
> +static void vs_encoder_atomic_enable(struct drm_encoder *encoder, struct drm_atomic_state *state)
> +{
> + struct vs_simple_encoder *simple = to_simple_encoder(encoder);
> +
> + regmap_update_bits(simple->dss_regmap, simple->offset, simple->mask, simple->mask);
> +}
That should be handled through cdns_dsi_platform_ops.enable.
> +static int vs_encoder_atomic_check(struct drm_encoder *encoder,
> + struct drm_crtc_state *crtc_state,
> + struct drm_connector_state *conn_state)
> +{
> + struct vs_crtc_state *vs_crtc_state = to_vs_crtc_state(crtc_state);
> + struct drm_connector *connector = conn_state->connector;
> + int ret = 0;
> +
> + vs_crtc_state->encoder_type = encoder->encoder_type;
> + if (connector->display_info.num_bus_formats)
> + vs_crtc_state->output_fmt = connector->display_info.bus_formats[0];
> + else
> + vs_crtc_state->output_fmt = MEDIA_BUS_FMT_FIXED;
> +
> + switch (vs_crtc_state->output_fmt) {
> + case MEDIA_BUS_FMT_FIXED:
> + case MEDIA_BUS_FMT_RGB565_1X16:
> + case MEDIA_BUS_FMT_RGB666_1X18:
> + case MEDIA_BUS_FMT_RGB888_1X24:
> + case MEDIA_BUS_FMT_RGB666_1X24_CPADHI:
> + case MEDIA_BUS_FMT_RGB101010_1X30:
> + case MEDIA_BUS_FMT_UYYVYY8_0_5X24:
> + case MEDIA_BUS_FMT_UYVY8_1X16:
> + case MEDIA_BUS_FMT_YUV8_1X24:
> + case MEDIA_BUS_FMT_UYYVYY10_0_5X30:
> + case MEDIA_BUS_FMT_UYVY10_1X20:
> + case MEDIA_BUS_FMT_YUV10_1X30:
> + ret = 0;
> + break;
> + default:
> + ret = -EINVAL;
> + break;
> + }
> +
> + /* If MEDIA_BUS_FMT_FIXED, set it to default value */
> + if (vs_crtc_state->output_fmt == MEDIA_BUS_FMT_FIXED)
> + vs_crtc_state->output_fmt = MEDIA_BUS_FMT_RGB888_1X24;
> +
> + return ret;
> +}
And that should be handled by the core cdns-dsi driver.
Maxime
> +static const struct drm_encoder_helper_funcs encoder_helper_funcs = {
> + .atomic_check = vs_encoder_atomic_check,
> + .atomic_enable = vs_encoder_atomic_enable,
> +};
> +
> +static int vs_encoder_bind(struct device *dev, struct device *master, void *data)
> +{
> + struct drm_device *drm_dev = data;
> + struct vs_simple_encoder *simple = dev_get_drvdata(dev);
> + struct drm_encoder *encoder;
> + struct drm_bridge *bridge;
> + int ret;
> +
> + encoder = &simple->encoder;
> +
> + ret = drmm_encoder_init(drm_dev, encoder, NULL, simple->priv->encoder_type, NULL);
> + if (ret)
> + return ret;
> +
> + drm_encoder_helper_add(encoder, &encoder_helper_funcs);
> +
> + encoder->possible_crtcs =
> + drm_of_find_possible_crtcs(drm_dev, dev->of_node);
> +
> + /* output port is port1*/
> + bridge = devm_drm_of_get_bridge(dev, dev->of_node, 1, 0);
> + if (IS_ERR(bridge)) {
> + if (PTR_ERR(bridge) == -ENODEV) {
> + bridge = NULL;
> + return 0;
> + }
> +
> + return PTR_ERR(bridge);
> + }
> +
> + return drm_bridge_attach(encoder, bridge, NULL, 0);
> +}
> +
> +static const struct component_ops encoder_component_ops = {
> + .bind = vs_encoder_bind,
> +};
> +
> +static int vs_encoder_probe(struct platform_device *pdev)
> +{
> + struct device *dev = &pdev->dev;
> + struct vs_simple_encoder *simple;
> + int ret;
> +
> + simple = devm_kzalloc(dev, sizeof(*simple), GFP_KERNEL);
> + if (!simple)
> + return -ENOMEM;
> +
> + simple->priv = of_device_get_match_data(dev);
> +
> + simple->dev = dev;
> +
> + dev_set_drvdata(dev, simple);
> +
> + ret = encoder_parse_dt(dev);
> + if (ret)
> + return ret;
> +
> + return component_add(dev, &encoder_component_ops);
> +}
> +
> +static int vs_encoder_remove(struct platform_device *pdev)
> +{
> + struct device *dev = &pdev->dev;
> +
> + component_del(dev, &encoder_component_ops);
> + dev_set_drvdata(dev, NULL);
> +
> + return 0;
> +}
> +
> +static const struct of_device_id simple_encoder_dt_match[] = {
> + { .compatible = "starfive,dsi-encoder", .data = &dsi_priv},
> + {},
> +};
You also don't need a specific compatible here, just reuse cdns,dsi.
Maxime
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 273 bytes --]
[-- Attachment #2: Type: text/plain, Size: 176 bytes --]
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
WARNING: multiple messages have this Message-ID (diff)
From: Maxime Ripard <mripard@kernel.org>
To: keith <keith.zhao@starfivetech.com>
Cc: andrzej.hajda@intel.com, neil.armstrong@linaro.org,
rfoss@kernel.org, Laurent.pinchart@ideasonboard.com,
jonas@kwiboo.se, jernej.skrabec@gmail.com,
maarten.lankhorst@linux.intel.com, tzimmermann@suse.de,
airlied@gmail.com, daniel@ffwll.ch, robh@kernel.org,
krzk+dt@kernel.org, conor+dt@kernel.org, hjc@rock-chips.com,
heiko@sntech.de, andy.yan@rock-chips.com,
xingyu.wu@starfivetech.com, p.zabel@pengutronix.de,
jack.zhu@starfivetech.com, shengyang.chen@starfivetech.com,
dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v4 10/10] drm/vs: add simple dsi encoder
Date: Wed, 22 May 2024 09:29:43 +0200 [thread overview]
Message-ID: <20240522-devious-strict-tapir-3a7f5a@houat> (raw)
In-Reply-To: <20240521105817.3301-11-keith.zhao@starfivetech.com>
[-- Attachment #1: Type: text/plain, Size: 7877 bytes --]
Hi,
On Tue, May 21, 2024 at 06:58:17PM GMT, keith wrote:
> add encoder to match cdns dsi driver
>
> Signed-off-by: keith <keith.zhao@starfivetech.com>
> ---
> drivers/gpu/drm/verisilicon/Makefile | 3 +-
> drivers/gpu/drm/verisilicon/vs_drv.c | 1 +
> drivers/gpu/drm/verisilicon/vs_drv.h | 1 +
> drivers/gpu/drm/verisilicon/vs_simple_enc.c | 190 ++++++++++++++++++++
> drivers/gpu/drm/verisilicon/vs_simple_enc.h | 25 +++
> 5 files changed, 219 insertions(+), 1 deletion(-)
> create mode 100644 drivers/gpu/drm/verisilicon/vs_simple_enc.c
> create mode 100644 drivers/gpu/drm/verisilicon/vs_simple_enc.h
>
> diff --git a/drivers/gpu/drm/verisilicon/Makefile b/drivers/gpu/drm/verisilicon/Makefile
> index 2d02b4a3a567..c35ba9bd6f81 100644
> --- a/drivers/gpu/drm/verisilicon/Makefile
> +++ b/drivers/gpu/drm/verisilicon/Makefile
> @@ -4,7 +4,8 @@ vs_drm-objs := vs_dc_hw.o \
> vs_modeset.o \
> vs_plane.o \
> vs_crtc.o \
> - vs_drv.o
> + vs_drv.o \
> + vs_simple_enc.o
>
> vs_drm-$(CONFIG_DRM_INNO_STARFIVE_HDMI) += inno_hdmi-starfive.o
> obj-$(CONFIG_DRM_VERISILICON_DC8200) += vs_drm.o
> diff --git a/drivers/gpu/drm/verisilicon/vs_drv.c b/drivers/gpu/drm/verisilicon/vs_drv.c
> index 6f04102b05b3..2748d48f2c7e 100644
> --- a/drivers/gpu/drm/verisilicon/vs_drv.c
> +++ b/drivers/gpu/drm/verisilicon/vs_drv.c
> @@ -612,6 +612,7 @@ static struct platform_driver *drm_sub_drivers[] = {
> #ifdef CONFIG_DRM_INNO_STARFIVE_HDMI
> &starfive_hdmi_driver,
> #endif
> + &simple_encoder_driver,
> };
>
> static struct component_match *vs_add_external_components(struct device *dev)
> diff --git a/drivers/gpu/drm/verisilicon/vs_drv.h b/drivers/gpu/drm/verisilicon/vs_drv.h
> index c3c08ed5f8ac..f3f0f170777d 100644
> --- a/drivers/gpu/drm/verisilicon/vs_drv.h
> +++ b/drivers/gpu/drm/verisilicon/vs_drv.h
> @@ -17,6 +17,7 @@
> #include <drm/drm_managed.h>
>
> #include "vs_dc_hw.h"
> +#include "vs_simple_enc.h"
>
> /*@pitch_alignment: buffer pitch alignment required by sub-devices.*/
> struct vs_drm_device {
> diff --git a/drivers/gpu/drm/verisilicon/vs_simple_enc.c b/drivers/gpu/drm/verisilicon/vs_simple_enc.c
> new file mode 100644
> index 000000000000..d0b1755d77d2
> --- /dev/null
> +++ b/drivers/gpu/drm/verisilicon/vs_simple_enc.c
> @@ -0,0 +1,190 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Copyright (C) 2020 VeriSilicon Holdings Co., Ltd.
> + */
> +#include <linux/component.h>
> +#include <linux/of_device.h>
> +#include <linux/module.h>
> +#include <linux/regmap.h>
> +#include <linux/media-bus-format.h>
> +#include <linux/mfd/syscon.h>
> +#include <linux/platform_device.h>
> +#include <linux/of.h>
> +
> +#include <drm/drm_atomic_helper.h>
> +#include <drm/drm_bridge.h>
> +#include <drm/drm_crtc_helper.h>
> +#include <drm/drm_of.h>
> +
> +#include "vs_crtc.h"
> +#include "vs_simple_enc.h"
> +
> +static const struct simple_encoder_priv dsi_priv = {
> + .encoder_type = DRM_MODE_ENCODER_DSI
> +};
A simple encoder is a thing in KMS, and it's not what you are doing /
using. Please use a different name.
> +static inline struct vs_simple_encoder *to_simple_encoder(struct drm_encoder *enc)
> +{
> + return container_of(enc, struct vs_simple_encoder, encoder);
> +}
> +
> +static int encoder_parse_dt(struct device *dev)
> +{
> + struct vs_simple_encoder *simple = dev_get_drvdata(dev);
> + unsigned int args[2];
> +
> + simple->dss_regmap = syscon_regmap_lookup_by_phandle_args(dev->of_node,
> + "starfive,syscon",
> + 2, args);
> +
> + if (IS_ERR(simple->dss_regmap)) {
> + return dev_err_probe(dev, PTR_ERR(simple->dss_regmap),
> + "getting the regmap failed\n");
> + }
> +
> + simple->offset = args[0];
> + simple->mask = args[1];
> +
> + return 0;
> +}
> +
> +static void vs_encoder_atomic_enable(struct drm_encoder *encoder, struct drm_atomic_state *state)
> +{
> + struct vs_simple_encoder *simple = to_simple_encoder(encoder);
> +
> + regmap_update_bits(simple->dss_regmap, simple->offset, simple->mask, simple->mask);
> +}
That should be handled through cdns_dsi_platform_ops.enable.
> +static int vs_encoder_atomic_check(struct drm_encoder *encoder,
> + struct drm_crtc_state *crtc_state,
> + struct drm_connector_state *conn_state)
> +{
> + struct vs_crtc_state *vs_crtc_state = to_vs_crtc_state(crtc_state);
> + struct drm_connector *connector = conn_state->connector;
> + int ret = 0;
> +
> + vs_crtc_state->encoder_type = encoder->encoder_type;
> + if (connector->display_info.num_bus_formats)
> + vs_crtc_state->output_fmt = connector->display_info.bus_formats[0];
> + else
> + vs_crtc_state->output_fmt = MEDIA_BUS_FMT_FIXED;
> +
> + switch (vs_crtc_state->output_fmt) {
> + case MEDIA_BUS_FMT_FIXED:
> + case MEDIA_BUS_FMT_RGB565_1X16:
> + case MEDIA_BUS_FMT_RGB666_1X18:
> + case MEDIA_BUS_FMT_RGB888_1X24:
> + case MEDIA_BUS_FMT_RGB666_1X24_CPADHI:
> + case MEDIA_BUS_FMT_RGB101010_1X30:
> + case MEDIA_BUS_FMT_UYYVYY8_0_5X24:
> + case MEDIA_BUS_FMT_UYVY8_1X16:
> + case MEDIA_BUS_FMT_YUV8_1X24:
> + case MEDIA_BUS_FMT_UYYVYY10_0_5X30:
> + case MEDIA_BUS_FMT_UYVY10_1X20:
> + case MEDIA_BUS_FMT_YUV10_1X30:
> + ret = 0;
> + break;
> + default:
> + ret = -EINVAL;
> + break;
> + }
> +
> + /* If MEDIA_BUS_FMT_FIXED, set it to default value */
> + if (vs_crtc_state->output_fmt == MEDIA_BUS_FMT_FIXED)
> + vs_crtc_state->output_fmt = MEDIA_BUS_FMT_RGB888_1X24;
> +
> + return ret;
> +}
And that should be handled by the core cdns-dsi driver.
Maxime
> +static const struct drm_encoder_helper_funcs encoder_helper_funcs = {
> + .atomic_check = vs_encoder_atomic_check,
> + .atomic_enable = vs_encoder_atomic_enable,
> +};
> +
> +static int vs_encoder_bind(struct device *dev, struct device *master, void *data)
> +{
> + struct drm_device *drm_dev = data;
> + struct vs_simple_encoder *simple = dev_get_drvdata(dev);
> + struct drm_encoder *encoder;
> + struct drm_bridge *bridge;
> + int ret;
> +
> + encoder = &simple->encoder;
> +
> + ret = drmm_encoder_init(drm_dev, encoder, NULL, simple->priv->encoder_type, NULL);
> + if (ret)
> + return ret;
> +
> + drm_encoder_helper_add(encoder, &encoder_helper_funcs);
> +
> + encoder->possible_crtcs =
> + drm_of_find_possible_crtcs(drm_dev, dev->of_node);
> +
> + /* output port is port1*/
> + bridge = devm_drm_of_get_bridge(dev, dev->of_node, 1, 0);
> + if (IS_ERR(bridge)) {
> + if (PTR_ERR(bridge) == -ENODEV) {
> + bridge = NULL;
> + return 0;
> + }
> +
> + return PTR_ERR(bridge);
> + }
> +
> + return drm_bridge_attach(encoder, bridge, NULL, 0);
> +}
> +
> +static const struct component_ops encoder_component_ops = {
> + .bind = vs_encoder_bind,
> +};
> +
> +static int vs_encoder_probe(struct platform_device *pdev)
> +{
> + struct device *dev = &pdev->dev;
> + struct vs_simple_encoder *simple;
> + int ret;
> +
> + simple = devm_kzalloc(dev, sizeof(*simple), GFP_KERNEL);
> + if (!simple)
> + return -ENOMEM;
> +
> + simple->priv = of_device_get_match_data(dev);
> +
> + simple->dev = dev;
> +
> + dev_set_drvdata(dev, simple);
> +
> + ret = encoder_parse_dt(dev);
> + if (ret)
> + return ret;
> +
> + return component_add(dev, &encoder_component_ops);
> +}
> +
> +static int vs_encoder_remove(struct platform_device *pdev)
> +{
> + struct device *dev = &pdev->dev;
> +
> + component_del(dev, &encoder_component_ops);
> + dev_set_drvdata(dev, NULL);
> +
> + return 0;
> +}
> +
> +static const struct of_device_id simple_encoder_dt_match[] = {
> + { .compatible = "starfive,dsi-encoder", .data = &dsi_priv},
> + {},
> +};
You also don't need a specific compatible here, just reuse cdns,dsi.
Maxime
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 273 bytes --]
next prev parent reply other threads:[~2024-05-22 7:30 UTC|newest]
Thread overview: 87+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-21 10:58 [PATCH v4 00/10] drm/verisilicon : support DC8200 and inno hdmi keith
2024-05-21 10:58 ` keith
2024-05-21 7:18 ` Krzysztof Kozlowski
2024-05-21 7:18 ` Krzysztof Kozlowski
2024-05-21 8:03 ` Heiko Stübner
2024-05-21 8:03 ` Heiko Stübner
2024-05-21 14:55 ` Alex Bee
2024-05-21 14:55 ` Alex Bee
2024-05-21 10:58 ` [PATCH v4 01/10] dt-bindings: display: Add YAML schema for JH7110 display pipeline keith
2024-05-21 10:58 ` keith
2024-05-21 7:30 ` Krzysztof Kozlowski
2024-05-21 7:30 ` Krzysztof Kozlowski
2024-05-21 9:50 ` Keith Zhao
2024-05-21 9:50 ` Keith Zhao
2024-05-21 10:58 ` [PATCH v4 02/10] drm/bridge: add common api for inno hdmi keith
2024-05-21 10:58 ` keith
2024-05-21 9:30 ` Krzysztof Kozlowski
2024-05-21 9:30 ` Krzysztof Kozlowski
2024-05-21 15:36 ` Alex Bee
2024-05-21 15:36 ` Alex Bee
2024-05-21 15:42 ` Laurent Pinchart
2024-05-21 15:42 ` Laurent Pinchart
2024-05-22 5:58 ` Keith Zhao
2024-05-22 5:58 ` Keith Zhao
2024-05-22 7:32 ` Laurent Pinchart
2024-05-22 7:32 ` Laurent Pinchart
2024-06-23 18:42 ` Markus Elfring
2024-05-21 10:58 ` [PATCH v4 03/10] drm/rockchip:hdmi: migrate to use inno-hdmi bridge driver keith
2024-05-21 10:58 ` keith
2024-05-22 7:24 ` Maxime Ripard
2024-05-22 7:24 ` Maxime Ripard
2024-06-23 7:17 ` Keith Zhao
2024-06-24 9:25 ` Maxime Ripard
2024-05-21 10:58 ` [PATCH v4 04/10] drm/vs: Add hardware funcs for vs keith
2024-05-21 10:58 ` keith
2024-05-21 20:50 ` kernel test robot
2024-05-21 20:50 ` kernel test robot
2024-05-21 20:50 ` Dmitry Baryshkov
2024-05-21 20:50 ` Dmitry Baryshkov
2024-06-23 7:16 ` Keith Zhao
2024-06-23 20:51 ` Dmitry Baryshkov
2024-06-25 8:32 ` Keith Zhao
2024-05-21 21:01 ` kernel test robot
2024-05-21 21:01 ` kernel test robot
2024-05-22 1:34 ` kernel test robot
2024-05-22 1:34 ` kernel test robot
2024-05-21 10:58 ` [PATCH v4 05/10] drm/vs: add vs mode config init keith
2024-05-21 10:58 ` keith
2024-05-21 20:52 ` Dmitry Baryshkov
2024-05-21 20:52 ` Dmitry Baryshkov
2024-06-23 7:17 ` Keith Zhao
2024-06-23 20:52 ` Dmitry Baryshkov
2024-05-21 10:58 ` [PATCH v4 06/10] drm/vs: add vs plane api keith
2024-05-21 10:58 ` keith
2024-05-21 20:39 ` kernel test robot
2024-05-21 20:39 ` kernel test robot
2024-05-21 21:06 ` Dmitry Baryshkov
2024-05-21 21:06 ` Dmitry Baryshkov
2024-06-23 7:17 ` Keith Zhao
2024-06-23 20:54 ` Dmitry Baryshkov
2024-05-21 10:58 ` [PATCH v4 07/10] drm/vs: add ctrc fun keith
2024-05-21 10:58 ` keith
2024-05-21 21:08 ` Dmitry Baryshkov
2024-05-21 21:08 ` Dmitry Baryshkov
2024-06-23 7:17 ` Keith Zhao
2024-06-23 20:56 ` Dmitry Baryshkov
2024-05-21 10:58 ` [PATCH v4 08/10] drm/vs: add vs drm master driver keith
2024-05-21 10:58 ` keith
2024-05-21 21:14 ` Dmitry Baryshkov
2024-05-21 21:14 ` Dmitry Baryshkov
2024-06-23 7:16 ` Keith Zhao
2024-06-23 21:07 ` Dmitry Baryshkov
2024-06-25 8:34 ` Keith Zhao
2024-05-21 10:58 ` [PATCH v4 09/10] drm/vs: Innosilicon HDMI support keith
2024-05-21 10:58 ` keith
2024-05-21 9:31 ` Krzysztof Kozlowski
2024-05-21 9:31 ` Krzysztof Kozlowski
2024-05-21 10:58 ` [PATCH v4 10/10] drm/vs: add simple dsi encoder keith
2024-05-21 10:58 ` keith
2024-05-21 15:25 ` Dmitry Baryshkov
2024-05-21 15:25 ` Dmitry Baryshkov
2024-06-23 7:17 ` Keith Zhao
2024-06-23 21:11 ` Dmitry Baryshkov
2024-06-25 8:33 ` Keith Zhao
2024-06-25 10:59 ` Dmitry Baryshkov
2024-05-22 7:29 ` Maxime Ripard [this message]
2024-05-22 7:29 ` Maxime Ripard
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=20240522-devious-strict-tapir-3a7f5a@houat \
--to=mripard@kernel.org \
--cc=Laurent.pinchart@ideasonboard.com \
--cc=airlied@gmail.com \
--cc=andrzej.hajda@intel.com \
--cc=andy.yan@rock-chips.com \
--cc=conor+dt@kernel.org \
--cc=daniel@ffwll.ch \
--cc=devicetree@vger.kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=heiko@sntech.de \
--cc=hjc@rock-chips.com \
--cc=jack.zhu@starfivetech.com \
--cc=jernej.skrabec@gmail.com \
--cc=jonas@kwiboo.se \
--cc=keith.zhao@starfivetech.com \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=neil.armstrong@linaro.org \
--cc=p.zabel@pengutronix.de \
--cc=rfoss@kernel.org \
--cc=robh@kernel.org \
--cc=shengyang.chen@starfivetech.com \
--cc=tzimmermann@suse.de \
--cc=xingyu.wu@starfivetech.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.