From: Thierry Escande <thierry.escande@collabora.com> To: Archit Taneja <architt@codeaurora.org>, Inki Dae <inki.dae@samsung.com>, Thierry Reding <thierry.reding@gmail.com>, Sandy Huang <hjc@rock-chips.com>, Sean Paul <seanpaul@chromium.org>, David Airlie <airlied@linux.ie>, Tomasz Figa <tfiga@chromium.org> Cc: "Haixia Shi" <hshi@chromium.org>, "Ørjan Eide" <orjan.eide@arm.com>, "Zain Wang" <wzz@rock-chips.com>, "Yakir Yang" <ykk@rock-chips.com>, "Lin Huang" <hl@rock-chips.com>, "Douglas Anderson" <dianders@chromium.org>, "Mark Yao" <mark.yao@rock-chips.com>, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, dri-devel@lists.freedesktop.org Subject: [PATCH v2 35/43] drm/bridge: analogix_dp: Split the platform-specific poweron in two parts Date: Fri, 26 Jan 2018 14:17:02 +0100 [thread overview] Message-ID: <20180126131710.7622-36-thierry.escande@collabora.com> (raw) In-Reply-To: <20180126131710.7622-1-thierry.escande@collabora.com> From: Douglas Anderson <dianders@chromium.org> Some of the platform-specific stuff in rockchip_dp_poweron() needs to happen before the generic code. Some needs to happen after. Let's split the callback in two. Specifically we can't start doing PSR work until _after_ the whole controller is up, so don't set the enable until the end. Cc: Kristian H. Kristensen <hoegsberg@chromium.org> Signed-off-by: Douglas Anderson <dianders@chromium.org> [seanpaul added exynos change] Signed-off-by: Sean Paul <seanpaul@chromium.org> Signed-off-by: Thierry Escande <thierry.escande@collabora.com> Reviewed-by: Andrzej Hajda <a.hajda@samsung.com> --- drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 7 +++++-- drivers/gpu/drm/exynos/exynos_dp.c | 2 +- drivers/gpu/drm/rockchip/analogix_dp-rockchip.c | 12 ++++++++++-- include/drm/bridge/analogix_dp.h | 3 ++- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c index 3ee1f533a6ad..60998bd842f3 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c @@ -1258,8 +1258,8 @@ static int analogix_dp_set_bridge(struct analogix_dp_device *dp) goto out_dp_clk_pre; } - if (dp->plat_data->power_on) - dp->plat_data->power_on(dp->plat_data); + if (dp->plat_data->power_on_start) + dp->plat_data->power_on_start(dp->plat_data); phy_power_on(dp->phy); @@ -1284,6 +1284,9 @@ static int analogix_dp_set_bridge(struct analogix_dp_device *dp) goto out_dp_init; } + if (dp->plat_data->power_on_end) + dp->plat_data->power_on_end(dp->plat_data); + enable_irq(dp->irq); return 0; diff --git a/drivers/gpu/drm/exynos/exynos_dp.c b/drivers/gpu/drm/exynos/exynos_dp.c index 33319a858f3a..b316249a3f89 100644 --- a/drivers/gpu/drm/exynos/exynos_dp.c +++ b/drivers/gpu/drm/exynos/exynos_dp.c @@ -162,7 +162,7 @@ static int exynos_dp_bind(struct device *dev, struct device *master, void *data) dp->drm_dev = drm_dev; dp->plat_data.dev_type = EXYNOS_DP; - dp->plat_data.power_on = exynos_dp_poweron; + dp->plat_data.power_on_start = exynos_dp_poweron; dp->plat_data.power_off = exynos_dp_poweroff; dp->plat_data.attach = exynos_dp_bridge_attach; dp->plat_data.get_modes = exynos_dp_get_modes; diff --git a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c index b3f46ed24cdc..23317a2269e1 100644 --- a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c +++ b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c @@ -109,7 +109,7 @@ static int rockchip_dp_pre_init(struct rockchip_dp_device *dp) return 0; } -static int rockchip_dp_poweron(struct analogix_dp_plat_data *plat_data) +static int rockchip_dp_poweron_start(struct analogix_dp_plat_data *plat_data) { struct rockchip_dp_device *dp = to_dp(plat_data); int ret; @@ -127,6 +127,13 @@ static int rockchip_dp_poweron(struct analogix_dp_plat_data *plat_data) return ret; } + return ret; +} + +static int rockchip_dp_poweron_end(struct analogix_dp_plat_data *plat_data) +{ + struct rockchip_dp_device *dp = to_dp(plat_data); + return rockchip_drm_psr_activate(&dp->encoder); } @@ -330,7 +337,8 @@ static int rockchip_dp_bind(struct device *dev, struct device *master, dp->plat_data.encoder = &dp->encoder; dp->plat_data.dev_type = dp->data->chip_type; - dp->plat_data.power_on = rockchip_dp_poweron; + dp->plat_data.power_on_start = rockchip_dp_poweron_start; + dp->plat_data.power_on_end = rockchip_dp_poweron_end; dp->plat_data.power_off = rockchip_dp_powerdown; dp->plat_data.get_modes = rockchip_dp_get_modes; diff --git a/include/drm/bridge/analogix_dp.h b/include/drm/bridge/analogix_dp.h index c2788483c882..b384f7e8d14a 100644 --- a/include/drm/bridge/analogix_dp.h +++ b/include/drm/bridge/analogix_dp.h @@ -32,7 +32,8 @@ struct analogix_dp_plat_data { struct drm_encoder *encoder; struct drm_connector *connector; - int (*power_on)(struct analogix_dp_plat_data *); + int (*power_on_start)(struct analogix_dp_plat_data *); + int (*power_on_end)(struct analogix_dp_plat_data *); int (*power_off)(struct analogix_dp_plat_data *); int (*attach)(struct analogix_dp_plat_data *, struct drm_bridge *, struct drm_connector *); -- 2.14.1
WARNING: multiple messages have this Message-ID (diff)
From: Thierry Escande <thierry.escande-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org> To: Archit Taneja <architt-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>, Inki Dae <inki.dae-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>, Thierry Reding <thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>, Sandy Huang <hjc-TNX95d0MmH7DzftRWevZcw@public.gmane.org>, Sean Paul <seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>, David Airlie <airlied-cv59FeDIM0c@public.gmane.org>, Tomasz Figa <tfiga-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org> Cc: "Zain Wang" <wzz-TNX95d0MmH7DzftRWevZcw@public.gmane.org>, "Lin Huang" <hl-TNX95d0MmH7DzftRWevZcw@public.gmane.org>, "Douglas Anderson" <dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, "Yakir Yang" <ykk-TNX95d0MmH7DzftRWevZcw@public.gmane.org>, "Ørjan Eide" <orjan.eide-5wv7dgnIgG8@public.gmane.org>, "Mark Yao" <mark.yao-TNX95d0MmH7DzftRWevZcw@public.gmane.org>, "Haixia Shi" <hshi-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org> Subject: [PATCH v2 35/43] drm/bridge: analogix_dp: Split the platform-specific poweron in two parts Date: Fri, 26 Jan 2018 14:17:02 +0100 [thread overview] Message-ID: <20180126131710.7622-36-thierry.escande@collabora.com> (raw) In-Reply-To: <20180126131710.7622-1-thierry.escande-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org> From: Douglas Anderson <dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org> Some of the platform-specific stuff in rockchip_dp_poweron() needs to happen before the generic code. Some needs to happen after. Let's split the callback in two. Specifically we can't start doing PSR work until _after_ the whole controller is up, so don't set the enable until the end. Cc: Kristian H. Kristensen <hoegsberg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org> Signed-off-by: Douglas Anderson <dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org> [seanpaul added exynos change] Signed-off-by: Sean Paul <seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org> Signed-off-by: Thierry Escande <thierry.escande-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org> Reviewed-by: Andrzej Hajda <a.hajda-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> --- drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 7 +++++-- drivers/gpu/drm/exynos/exynos_dp.c | 2 +- drivers/gpu/drm/rockchip/analogix_dp-rockchip.c | 12 ++++++++++-- include/drm/bridge/analogix_dp.h | 3 ++- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c index 3ee1f533a6ad..60998bd842f3 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c @@ -1258,8 +1258,8 @@ static int analogix_dp_set_bridge(struct analogix_dp_device *dp) goto out_dp_clk_pre; } - if (dp->plat_data->power_on) - dp->plat_data->power_on(dp->plat_data); + if (dp->plat_data->power_on_start) + dp->plat_data->power_on_start(dp->plat_data); phy_power_on(dp->phy); @@ -1284,6 +1284,9 @@ static int analogix_dp_set_bridge(struct analogix_dp_device *dp) goto out_dp_init; } + if (dp->plat_data->power_on_end) + dp->plat_data->power_on_end(dp->plat_data); + enable_irq(dp->irq); return 0; diff --git a/drivers/gpu/drm/exynos/exynos_dp.c b/drivers/gpu/drm/exynos/exynos_dp.c index 33319a858f3a..b316249a3f89 100644 --- a/drivers/gpu/drm/exynos/exynos_dp.c +++ b/drivers/gpu/drm/exynos/exynos_dp.c @@ -162,7 +162,7 @@ static int exynos_dp_bind(struct device *dev, struct device *master, void *data) dp->drm_dev = drm_dev; dp->plat_data.dev_type = EXYNOS_DP; - dp->plat_data.power_on = exynos_dp_poweron; + dp->plat_data.power_on_start = exynos_dp_poweron; dp->plat_data.power_off = exynos_dp_poweroff; dp->plat_data.attach = exynos_dp_bridge_attach; dp->plat_data.get_modes = exynos_dp_get_modes; diff --git a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c index b3f46ed24cdc..23317a2269e1 100644 --- a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c +++ b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c @@ -109,7 +109,7 @@ static int rockchip_dp_pre_init(struct rockchip_dp_device *dp) return 0; } -static int rockchip_dp_poweron(struct analogix_dp_plat_data *plat_data) +static int rockchip_dp_poweron_start(struct analogix_dp_plat_data *plat_data) { struct rockchip_dp_device *dp = to_dp(plat_data); int ret; @@ -127,6 +127,13 @@ static int rockchip_dp_poweron(struct analogix_dp_plat_data *plat_data) return ret; } + return ret; +} + +static int rockchip_dp_poweron_end(struct analogix_dp_plat_data *plat_data) +{ + struct rockchip_dp_device *dp = to_dp(plat_data); + return rockchip_drm_psr_activate(&dp->encoder); } @@ -330,7 +337,8 @@ static int rockchip_dp_bind(struct device *dev, struct device *master, dp->plat_data.encoder = &dp->encoder; dp->plat_data.dev_type = dp->data->chip_type; - dp->plat_data.power_on = rockchip_dp_poweron; + dp->plat_data.power_on_start = rockchip_dp_poweron_start; + dp->plat_data.power_on_end = rockchip_dp_poweron_end; dp->plat_data.power_off = rockchip_dp_powerdown; dp->plat_data.get_modes = rockchip_dp_get_modes; diff --git a/include/drm/bridge/analogix_dp.h b/include/drm/bridge/analogix_dp.h index c2788483c882..b384f7e8d14a 100644 --- a/include/drm/bridge/analogix_dp.h +++ b/include/drm/bridge/analogix_dp.h @@ -32,7 +32,8 @@ struct analogix_dp_plat_data { struct drm_encoder *encoder; struct drm_connector *connector; - int (*power_on)(struct analogix_dp_plat_data *); + int (*power_on_start)(struct analogix_dp_plat_data *); + int (*power_on_end)(struct analogix_dp_plat_data *); int (*power_off)(struct analogix_dp_plat_data *); int (*attach)(struct analogix_dp_plat_data *, struct drm_bridge *, struct drm_connector *); -- 2.14.1
next prev parent reply other threads:[~2018-01-26 13:19 UTC|newest] Thread overview: 96+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-01-26 13:16 [PATCH v2 00/43] DRM Rockchip rk3399 (Kevin) Thierry Escande 2018-01-26 13:16 ` Thierry Escande 2018-01-26 13:16 ` [PATCH v2 01/43] drm/rockchip: Get rid of unnecessary struct fields Thierry Escande 2018-01-26 13:16 ` Thierry Escande 2018-01-29 20:44 ` Sean Paul 2018-01-30 2:21 ` Sandy Huang 2018-01-26 13:16 ` [PATCH v2 02/43] drm/rockchip: support prime import sg table Thierry Escande 2018-01-26 13:16 ` Thierry Escande 2018-01-30 2:40 ` Sandy Huang 2018-01-30 2:40 ` Sandy Huang 2018-01-26 13:16 ` [PATCH v2 03/43] drm/rockchip: Respect page offset for PRIME mmap calls Thierry Escande 2018-01-26 13:16 ` Thierry Escande 2018-01-30 2:42 ` Sandy Huang 2018-01-26 13:16 ` [PATCH v2 04/43] drm/bridge: analogix_dp: set psr activate/deactivate when enable/disable bridge Thierry Escande 2018-01-26 13:16 ` Thierry Escande 2018-01-26 13:16 ` [PATCH v2 05/43] drm/bridge: analogix_dp: Don't power bridge in analogix_dp_bind Thierry Escande 2018-01-26 13:16 ` Thierry Escande 2018-01-26 13:16 ` [PATCH v2 06/43] drm/rockchip: Don't use atomic constructs for psr Thierry Escande 2018-01-26 13:16 ` Thierry Escande 2018-01-26 13:16 ` [PATCH v2 07/43] drm/bridge: analogix_dp: detect Sink PSR state after configuring the PSR Thierry Escande 2018-01-26 13:16 ` [PATCH v2 08/43] drm/rockchip: Remove analogix psr worker Thierry Escande 2018-01-26 13:16 ` Thierry Escande 2018-01-26 13:16 ` [PATCH v2 09/43] drm/bridge: analogix_dp: Don't change psr while bridge is disabled Thierry Escande 2018-01-26 13:16 ` Thierry Escande 2018-01-26 13:16 ` [PATCH v2 10/43] drm/rockchip: add mutex vop lock Thierry Escande 2018-01-26 13:16 ` Thierry Escande 2018-01-30 2:55 ` Sandy Huang 2018-01-30 2:55 ` Sandy Huang 2018-01-26 13:16 ` [PATCH v2 11/43] drm/bridge: analogix_dp: add fast link train for eDP Thierry Escande 2018-01-26 13:16 ` Thierry Escande 2018-01-26 13:16 ` [PATCH v2 12/43] drm/rockchip: Only wait for panel ACK on PSR entry Thierry Escande 2018-01-26 13:16 ` Thierry Escande 2018-01-26 13:16 ` [PATCH v2 13/43] drm/bridge: analogix_dp: Move enable video into config_video() Thierry Escande 2018-01-26 13:16 ` Thierry Escande 2018-01-26 13:16 ` [PATCH v2 14/43] drm/bridge: analogix_dp: Check AUX_EN status when doing AUX transfer Thierry Escande 2018-01-26 13:16 ` Thierry Escande 2018-01-26 13:16 ` [PATCH v2 15/43] drm/bridge: analogix_dp: Don't use fast link training when panel just powered up Thierry Escande 2018-01-26 13:16 ` [PATCH v2 16/43] drm/bridge: analogix_dp: Retry bridge enable when it failed Thierry Escande 2018-01-26 13:16 ` Thierry Escande 2018-01-26 13:16 ` [PATCH v2 17/43] drm/bridge: analogix_dp: Wait for HPD signal before configuring link Thierry Escande 2018-01-26 13:16 ` Thierry Escande 2018-01-26 13:16 ` [PATCH v2 18/43] drm/bridge: analogix_dp: Set PD_INC_BG first when powering up edp phy Thierry Escande 2018-01-26 13:16 ` Thierry Escande 2018-01-26 13:16 ` [PATCH v2 19/43] drm/bridge: analogix_dp: Ensure edp is disabled when shutting down the panel Thierry Escande 2018-01-26 13:16 ` Thierry Escande 2018-01-26 13:16 ` [PATCH v2 20/43] drm/bridge: analogix_dp: Extend hpd check time to 100ms Thierry Escande 2018-01-26 13:16 ` Thierry Escande 2018-01-29 21:02 ` Sean Paul 2018-01-26 13:16 ` [PATCH v2 21/43] drm/bridge: analogix_dp: Fix incorrect usage of enhanced mode Thierry Escande 2018-01-26 13:16 ` Thierry Escande 2018-01-26 13:16 ` [PATCH v2 22/43] drm/bridge: analogix_dp: Check dpcd write/read status Thierry Escande 2018-01-29 21:14 ` Sean Paul 2018-01-29 21:31 ` Sean Paul 2018-01-29 21:31 ` Sean Paul 2018-01-26 13:16 ` [PATCH v2 23/43] drm/bridge: analogix_dp: Fix AUX_PD bit for Rockchip Thierry Escande 2018-01-26 13:16 ` Thierry Escande 2018-01-26 13:16 ` [PATCH v2 24/43] drm/bridge: analogix_dp: Reset aux channel if an error occurred Thierry Escande 2018-01-26 13:16 ` Thierry Escande 2018-01-29 21:27 ` Sean Paul 2018-01-26 13:16 ` [PATCH v2 25/43] drm/rockchip: Restore psr->state when enable/disable psr failed Thierry Escande 2018-01-26 13:16 ` Thierry Escande 2018-01-26 13:16 ` [PATCH v2 26/43] drm/bridge: analogix_dp: Don't use ANALOGIX_DP_PLL_CTL to control pll Thierry Escande 2018-01-26 13:16 ` Thierry Escande 2018-01-26 13:16 ` [PATCH v2 27/43] drm/bridge: analogix_dp: Fix timeout of video streamclk config Thierry Escande 2018-01-26 13:16 ` [PATCH v2 28/43] drm/bridge: analogix_dp: Fix incorrect operations with register ANALOGIX_DP_FUNC_EN_1 Thierry Escande 2018-01-26 13:16 ` Thierry Escande 2018-01-29 21:35 ` Sean Paul 2018-01-29 21:35 ` Sean Paul 2018-01-26 13:16 ` [PATCH v2 29/43] drm/bridge: analogix_dp: Move fast link training detect to set_bridge Thierry Escande 2018-01-26 13:16 ` Thierry Escande 2018-01-29 21:38 ` Sean Paul 2018-01-29 21:38 ` Sean Paul 2018-01-26 13:16 ` [PATCH v2 30/43] drm/bridge: analogix_dp: Reorder plat_data->power_off to happen sooner Thierry Escande 2018-01-26 13:16 ` Thierry Escande 2018-01-26 13:16 ` [PATCH v2 31/43] drm/bridge: analogix_dp: Properly log AUX CH errors Thierry Escande 2018-01-26 13:16 ` Thierry Escande 2018-01-26 13:16 ` [PATCH v2 32/43] drm/bridge: analogix_dp: Properly disable aux chan retries on rockchip Thierry Escande 2018-01-26 13:16 ` Thierry Escande 2018-01-26 13:17 ` [PATCH v2 33/43] drm/panel: simple: Change mode for Sharp lq123p1jx31 Thierry Escande 2018-01-26 13:17 ` [PATCH v2 34/43] drm/rockchip: pre dither down when output bpc is 8bit Thierry Escande 2018-01-26 13:17 ` Thierry Escande 2018-01-26 13:17 ` Thierry Escande [this message] 2018-01-26 13:17 ` [PATCH v2 35/43] drm/bridge: analogix_dp: Split the platform-specific poweron in two parts Thierry Escande 2018-01-26 13:17 ` [PATCH v2 36/43] drm/rockchip: analogix_dp: Do not call Analogix code before bind Thierry Escande 2018-01-26 13:17 ` Thierry Escande 2018-01-26 13:17 ` [PATCH v2 37/43] drm/rockchip: Disable PSR on input events Thierry Escande 2018-01-29 21:44 ` Sean Paul 2018-01-26 13:17 ` [PATCH v2 38/43] drm/rockchip: Cancel PSR enable work before changing the state Thierry Escande 2018-01-26 13:17 ` [PATCH v2 39/43] drm/rockchip: psr: Avoid redundant calls to .set() callback Thierry Escande 2018-01-26 13:17 ` [PATCH v2 40/43] drm/rockchip: psr: Sanitize semantics of allow/disallow API Thierry Escande 2018-01-26 13:17 ` [PATCH v2 41/43] drm/rockchip: Disable PSR from reboot notifier Thierry Escande 2018-01-26 13:17 ` [PATCH v2 42/43] drm/rockchip: Disallow PSR for the whole atomic commit Thierry Escande 2018-01-26 13:17 ` [PATCH v2 43/43] drm/rockchip: psr: Remove flush by CRTC Thierry Escande 2018-01-28 0:41 ` [PATCH v2 00/43] DRM Rockchip rk3399 (Kevin) Emil Renner Berthing 2018-01-29 21:51 ` Sean Paul 2018-01-29 21:51 ` Sean Paul
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=20180126131710.7622-36-thierry.escande@collabora.com \ --to=thierry.escande@collabora.com \ --cc=airlied@linux.ie \ --cc=architt@codeaurora.org \ --cc=dianders@chromium.org \ --cc=dri-devel@lists.freedesktop.org \ --cc=hjc@rock-chips.com \ --cc=hl@rock-chips.com \ --cc=hshi@chromium.org \ --cc=inki.dae@samsung.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-rockchip@lists.infradead.org \ --cc=mark.yao@rock-chips.com \ --cc=orjan.eide@arm.com \ --cc=seanpaul@chromium.org \ --cc=tfiga@chromium.org \ --cc=thierry.reding@gmail.com \ --cc=wzz@rock-chips.com \ --cc=ykk@rock-chips.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: linkBe 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.