All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sam Ravnborg <sam@ravnborg.org>
To: Joe Perches <joe@perches.com>
Cc: "Thierry Reding" <thierry.reding@gmail.com>,
	"Guido Günther" <agx@sigxcpu.org>,
	"David Airlie" <airlied@linux.ie>,
	"Daniel Vetter" <daniel@ffwll.ch>,
	"Rob Herring" <robh+dt@kernel.org>,
	"Mark Rutland" <mark.rutland@arm.com>,
	"Kevin Hilman" <khilman@baylibre.com>,
	"Manivannan Sadhasivam" <manivannan.sadhasivam@linaro.org>,
	"Shawn Guo" <shawnguo@kernel.org>,
	"Jagan Teki" <jagan@amarulasolutions.com>,
	"Martin Blumenstingl" <martin.blumenstingl@googlemail.com>,
	"Johan Hovold" <johan@kernel.org>,
	"David S. Miller" <davem@davemloft.net>,
	"Mauro Carvalho Chehab" <mchehab+samsung@kernel.org>,
	"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
	"Nicolas Ferre" <nicolas.ferre@microchip.com>,
	dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org,
	linux-kernel@vger.ke
Subject: Re: [PATCH v5 0/3] drm/panel: Support Rocktech jh057n00900 DSI panel
Date: Wed, 3 Apr 2019 23:07:38 +0200	[thread overview]
Message-ID: <20190403210738.GA9173@ravnborg.org> (raw)
In-Reply-To: <c2f6a9f0ea59dc1491a8429a51afe56e488dfb3c.camel@perches.com>

Hi Joe.

Thanks for your patch.

> ---
>  drivers/gpu/drm/panel/panel-rocktech-jh057n00900.c | 210 +++++++++++++--------
>  1 file changed, 136 insertions(+), 74 deletions(-)

Hmmm, add more lines than it deletes.

> 
> diff --git a/drivers/gpu/drm/panel/panel-rocktech-jh057n00900.c b/drivers/gpu/drm/panel/panel-rocktech-jh057n00900.c
> index 158a6d548068..7862863db5f7 100644
> --- a/drivers/gpu/drm/panel/panel-rocktech-jh057n00900.c
> +++ b/drivers/gpu/drm/panel/panel-rocktech-jh057n00900.c
> @@ -20,27 +20,6 @@
>  
>  #define DRV_NAME "panel-rocktech-jh057n00900"
>  
> -/* Manufacturer specific Commands send via DSI */
> -#define ST7703_CMD_ALL_PIXEL_OFF 0x22
> -#define ST7703_CMD_ALL_PIXEL_ON	 0x23
> -#define ST7703_CMD_SETDISP	 0xB2
> -#define ST7703_CMD_SETRGBIF	 0xB3
> -#define ST7703_CMD_SETCYC	 0xB4
> -#define ST7703_CMD_SETBGP	 0xB5
> -#define ST7703_CMD_SETVCOM	 0xB6
> -#define ST7703_CMD_SETOTP	 0xB7
> -#define ST7703_CMD_SETPOWER_EXT	 0xB8
> -#define ST7703_CMD_SETEXTC	 0xB9
> -#define ST7703_CMD_SETMIPI	 0xBA
> -#define ST7703_CMD_SETVDC	 0xBC
> -#define ST7703_CMD_SETSCR	 0xC0
> -#define ST7703_CMD_SETPOWER	 0xC1
> -#define ST7703_CMD_SETPANEL	 0xCC
> -#define ST7703_CMD_SETGAMMA	 0xE0
> -#define ST7703_CMD_SETEQ	 0xE3
> -#define ST7703_CMD_SETGIP1	 0xE9
> -#define ST7703_CMD_SETGIP2	 0xEA
> -
>  struct jh057n {
>  	struct device *dev;
>  	struct drm_panel panel;
> @@ -51,75 +30,153 @@ struct jh057n {
>  	struct dentry *debugfs;
>  };
>  
> +struct st7703_cmd {
> +	const size_t	size;
> +	const u8	data[];
> +};
> +
> +#define st7703_cmd_data(cmd, ...)					\
> +	.size = 1 + (sizeof((u8[]){__VA_ARGS__})/sizeof(u8)),		\
> +	.data = {cmd, __VA_ARGS__}
> +
> +/* Manufacturer specific Commands send via DSI */
> +static const struct st7703_cmd ST7703_CMD_ALL_PIXEL_OFF = {
> +	st7703_cmd_data(0x22)
> +};
> +static const struct st7703_cmd ST7703_CMD_ALL_PIXEL_ON = {
> +	st7703_cmd_data(0x23)
> +};
> +static const struct st7703_cmd ST7703_CMD_SETDISP = {
> +	st7703_cmd_data(0xB2,
> +			0xF0, 0x12, 0x30)
> +};
> +static const struct st7703_cmd ST7703_CMD_SETRGBIF = {
> +	st7703_cmd_data(0xB3,
> +			0x10, 0x10, 0x05, 0x05, 0x03, 0xFF, 0x00, 0x00,
> +			0x00, 0x00)
> +};
> +static const struct st7703_cmd ST7703_CMD_SETCYC = {
> +	st7703_cmd_data(0xB4,
> +			0x80)
> +};
> +static const struct st7703_cmd ST7703_CMD_SETBGP = {
> +	st7703_cmd_data(0xB5,
> +			0x08, 0x08)
> +};
> +static const struct st7703_cmd ST7703_CMD_SETVCOM = {
> +	st7703_cmd_data(0xB6,
> +			0x3F, 0x3F)
> +};
> +static const struct st7703_cmd ST7703_CMD_SETOTP = {
> +	st7703_cmd_data(0xB7)
> +};
> +static const struct st7703_cmd ST7703_CMD_SETPOWER_EXT = {
> +	st7703_cmd_data(0xB8)
> +};
> +static const struct st7703_cmd ST7703_CMD_SETEXTC = {
> +	st7703_cmd_data(0xB9,
> +			0xF1, 0x12, 0x83)
> +};
> +static const struct st7703_cmd ST7703_CMD_SETMIPI = {
> +	st7703_cmd_data(0xBA)
> +};
> +static const struct st7703_cmd ST7703_CMD_SETVDC = {
> +	st7703_cmd_data(0xBC,
> +			0x4E)
> +};
> +static const struct st7703_cmd ST7703_CMD_SETSCR = {
> +	st7703_cmd_data(0xC0,
> +			0x73, 0x73, 0x50, 0x50, 0x00, 0x00, 0x08, 0x70,
> +			0x00)
> +};
> +static const struct st7703_cmd ST7703_CMD_SETPOWER = {
> +	st7703_cmd_data(0xC1)
> +};
> +static const struct st7703_cmd ST7703_CMD_SETPANEL = {
> +	st7703_cmd_data(0xCC,
> +			0x0B)
> +};
> +static const struct st7703_cmd ST7703_CMD_SETGAMMA = {
> +	st7703_cmd_data(0xE0,
> +			0x00, 0x09, 0x0E, 0x29, 0x2D, 0x3C, 0x41, 0x37,
> +			0x07, 0x0B, 0x0D, 0x10, 0x11, 0x0F, 0x10, 0x11,
> +			0x18, 0x00, 0x09, 0x0E, 0x29, 0x2D, 0x3C, 0x41,
> +			0x37, 0x07, 0x0B, 0x0D, 0x10, 0x11, 0x0F, 0x10,
> +			0x11, 0x18)
> +};
> +static const struct st7703_cmd ST7703_CMD_SETEQ = {
> +	st7703_cmd_data(0xE3,
> +			0x07, 0x07, 0x0B, 0x0B, 0x03, 0x0B, 0x00, 0x00,
> +			0x00, 0x00, 0xFF, 0x00, 0xC0, 0x10)
> +};
> +static const struct st7703_cmd ST7703_CMD_SETGIP1 = {
> +	st7703_cmd_data(0xE9,
> +			0x82, 0x10, 0x06, 0x05, 0x9E, 0x0A, 0xA5, 0x12,
> +			0x31, 0x23, 0x37, 0x83, 0x04, 0xBC, 0x27, 0x38,
> +			0x0C, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x00,
> +			0x03, 0x00, 0x00, 0x00, 0x75, 0x75, 0x31, 0x88,
> +			0x88, 0x88, 0x88, 0x88, 0x88, 0x13, 0x88, 0x64,
> +			0x64, 0x20, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
> +			0x02, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> +			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)
> +};
> +
> +static const struct st7703_cmd ST7703_CMD_SETGIP2 = {
> +	st7703_cmd_data(0xEA,
> +			0x02, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> +			0x00, 0x00, 0x00, 0x00, 0x02, 0x46, 0x02, 0x88,
> +			0x88, 0x88, 0x88, 0x88, 0x88, 0x64, 0x88, 0x13,
> +			0x57, 0x13, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
> +			0x75, 0x88, 0x23, 0x14, 0x00, 0x00, 0x02, 0x00,
> +			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> +			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0A,
> +			0xA5, 0x00, 0x00, 0x00, 0x00)
> +};
> +
>  static inline struct jh057n *panel_to_jh057n(struct drm_panel *panel)
>  {
>  	return container_of(panel, struct jh057n, panel);
>  }
>  
> -#define dsi_generic_write_seq(dsi, seq...) do {				\
> -		static const u8 d[] = { seq };				\
> -		int ret;						\
> -		ret = mipi_dsi_generic_write(dsi, d, ARRAY_SIZE(d));	\
> -		if (ret < 0)						\
> -			return ret;					\
> -	} while (0)
The above macro was the one triggering this patch.
And frankly it looks nice and simple.

The old code is IMO more readable.
- We have all the commands listed in the order they
  are used and in a rahter compatch format.
- It is obvious when we need delays.
- We have traditional #defines for the constants we know

This macro:
> +#define st7703_cmd_data(cmd, ...)                                    \
> +     .size = 1 + (sizeof((u8[]){__VA_ARGS__})/sizeof(u8)),           \
> +     .data = {cmd, __VA_ARGS__}
is again IMO not easier to follow than the above.

This is all to some extent bikeshedding, but I suggest
to keep the current code.
It is simple and it is tested.

Thanks for trying to come up with a better solution.

	Sam

WARNING: multiple messages have this Message-ID (diff)
From: Sam Ravnborg <sam@ravnborg.org>
To: Joe Perches <joe@perches.com>
Cc: "Thierry Reding" <thierry.reding@gmail.com>,
	"Guido Günther" <agx@sigxcpu.org>,
	"David Airlie" <airlied@linux.ie>,
	"Daniel Vetter" <daniel@ffwll.ch>,
	"Rob Herring" <robh+dt@kernel.org>,
	"Mark Rutland" <mark.rutland@arm.com>,
	"Kevin Hilman" <khilman@baylibre.com>,
	"Manivannan Sadhasivam" <manivannan.sadhasivam@linaro.org>,
	"Shawn Guo" <shawnguo@kernel.org>,
	"Jagan Teki" <jagan@amarulasolutions.com>,
	"Martin Blumenstingl" <martin.blumenstingl@googlemail.com>,
	"Johan Hovold" <johan@kernel.org>,
	"David S. Miller" <davem@davemloft.net>,
	"Mauro Carvalho Chehab" <mchehab+samsung@kernel.org>,
	"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
	"Nicolas Ferre" <nicolas.ferre@microchip.com>,
	dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v5 0/3] drm/panel: Support Rocktech jh057n00900 DSI panel
Date: Wed, 3 Apr 2019 23:07:38 +0200	[thread overview]
Message-ID: <20190403210738.GA9173@ravnborg.org> (raw)
In-Reply-To: <c2f6a9f0ea59dc1491a8429a51afe56e488dfb3c.camel@perches.com>

Hi Joe.

Thanks for your patch.

> ---
>  drivers/gpu/drm/panel/panel-rocktech-jh057n00900.c | 210 +++++++++++++--------
>  1 file changed, 136 insertions(+), 74 deletions(-)

Hmmm, add more lines than it deletes.

> 
> diff --git a/drivers/gpu/drm/panel/panel-rocktech-jh057n00900.c b/drivers/gpu/drm/panel/panel-rocktech-jh057n00900.c
> index 158a6d548068..7862863db5f7 100644
> --- a/drivers/gpu/drm/panel/panel-rocktech-jh057n00900.c
> +++ b/drivers/gpu/drm/panel/panel-rocktech-jh057n00900.c
> @@ -20,27 +20,6 @@
>  
>  #define DRV_NAME "panel-rocktech-jh057n00900"
>  
> -/* Manufacturer specific Commands send via DSI */
> -#define ST7703_CMD_ALL_PIXEL_OFF 0x22
> -#define ST7703_CMD_ALL_PIXEL_ON	 0x23
> -#define ST7703_CMD_SETDISP	 0xB2
> -#define ST7703_CMD_SETRGBIF	 0xB3
> -#define ST7703_CMD_SETCYC	 0xB4
> -#define ST7703_CMD_SETBGP	 0xB5
> -#define ST7703_CMD_SETVCOM	 0xB6
> -#define ST7703_CMD_SETOTP	 0xB7
> -#define ST7703_CMD_SETPOWER_EXT	 0xB8
> -#define ST7703_CMD_SETEXTC	 0xB9
> -#define ST7703_CMD_SETMIPI	 0xBA
> -#define ST7703_CMD_SETVDC	 0xBC
> -#define ST7703_CMD_SETSCR	 0xC0
> -#define ST7703_CMD_SETPOWER	 0xC1
> -#define ST7703_CMD_SETPANEL	 0xCC
> -#define ST7703_CMD_SETGAMMA	 0xE0
> -#define ST7703_CMD_SETEQ	 0xE3
> -#define ST7703_CMD_SETGIP1	 0xE9
> -#define ST7703_CMD_SETGIP2	 0xEA
> -
>  struct jh057n {
>  	struct device *dev;
>  	struct drm_panel panel;
> @@ -51,75 +30,153 @@ struct jh057n {
>  	struct dentry *debugfs;
>  };
>  
> +struct st7703_cmd {
> +	const size_t	size;
> +	const u8	data[];
> +};
> +
> +#define st7703_cmd_data(cmd, ...)					\
> +	.size = 1 + (sizeof((u8[]){__VA_ARGS__})/sizeof(u8)),		\
> +	.data = {cmd, __VA_ARGS__}
> +
> +/* Manufacturer specific Commands send via DSI */
> +static const struct st7703_cmd ST7703_CMD_ALL_PIXEL_OFF = {
> +	st7703_cmd_data(0x22)
> +};
> +static const struct st7703_cmd ST7703_CMD_ALL_PIXEL_ON = {
> +	st7703_cmd_data(0x23)
> +};
> +static const struct st7703_cmd ST7703_CMD_SETDISP = {
> +	st7703_cmd_data(0xB2,
> +			0xF0, 0x12, 0x30)
> +};
> +static const struct st7703_cmd ST7703_CMD_SETRGBIF = {
> +	st7703_cmd_data(0xB3,
> +			0x10, 0x10, 0x05, 0x05, 0x03, 0xFF, 0x00, 0x00,
> +			0x00, 0x00)
> +};
> +static const struct st7703_cmd ST7703_CMD_SETCYC = {
> +	st7703_cmd_data(0xB4,
> +			0x80)
> +};
> +static const struct st7703_cmd ST7703_CMD_SETBGP = {
> +	st7703_cmd_data(0xB5,
> +			0x08, 0x08)
> +};
> +static const struct st7703_cmd ST7703_CMD_SETVCOM = {
> +	st7703_cmd_data(0xB6,
> +			0x3F, 0x3F)
> +};
> +static const struct st7703_cmd ST7703_CMD_SETOTP = {
> +	st7703_cmd_data(0xB7)
> +};
> +static const struct st7703_cmd ST7703_CMD_SETPOWER_EXT = {
> +	st7703_cmd_data(0xB8)
> +};
> +static const struct st7703_cmd ST7703_CMD_SETEXTC = {
> +	st7703_cmd_data(0xB9,
> +			0xF1, 0x12, 0x83)
> +};
> +static const struct st7703_cmd ST7703_CMD_SETMIPI = {
> +	st7703_cmd_data(0xBA)
> +};
> +static const struct st7703_cmd ST7703_CMD_SETVDC = {
> +	st7703_cmd_data(0xBC,
> +			0x4E)
> +};
> +static const struct st7703_cmd ST7703_CMD_SETSCR = {
> +	st7703_cmd_data(0xC0,
> +			0x73, 0x73, 0x50, 0x50, 0x00, 0x00, 0x08, 0x70,
> +			0x00)
> +};
> +static const struct st7703_cmd ST7703_CMD_SETPOWER = {
> +	st7703_cmd_data(0xC1)
> +};
> +static const struct st7703_cmd ST7703_CMD_SETPANEL = {
> +	st7703_cmd_data(0xCC,
> +			0x0B)
> +};
> +static const struct st7703_cmd ST7703_CMD_SETGAMMA = {
> +	st7703_cmd_data(0xE0,
> +			0x00, 0x09, 0x0E, 0x29, 0x2D, 0x3C, 0x41, 0x37,
> +			0x07, 0x0B, 0x0D, 0x10, 0x11, 0x0F, 0x10, 0x11,
> +			0x18, 0x00, 0x09, 0x0E, 0x29, 0x2D, 0x3C, 0x41,
> +			0x37, 0x07, 0x0B, 0x0D, 0x10, 0x11, 0x0F, 0x10,
> +			0x11, 0x18)
> +};
> +static const struct st7703_cmd ST7703_CMD_SETEQ = {
> +	st7703_cmd_data(0xE3,
> +			0x07, 0x07, 0x0B, 0x0B, 0x03, 0x0B, 0x00, 0x00,
> +			0x00, 0x00, 0xFF, 0x00, 0xC0, 0x10)
> +};
> +static const struct st7703_cmd ST7703_CMD_SETGIP1 = {
> +	st7703_cmd_data(0xE9,
> +			0x82, 0x10, 0x06, 0x05, 0x9E, 0x0A, 0xA5, 0x12,
> +			0x31, 0x23, 0x37, 0x83, 0x04, 0xBC, 0x27, 0x38,
> +			0x0C, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x00,
> +			0x03, 0x00, 0x00, 0x00, 0x75, 0x75, 0x31, 0x88,
> +			0x88, 0x88, 0x88, 0x88, 0x88, 0x13, 0x88, 0x64,
> +			0x64, 0x20, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
> +			0x02, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> +			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)
> +};
> +
> +static const struct st7703_cmd ST7703_CMD_SETGIP2 = {
> +	st7703_cmd_data(0xEA,
> +			0x02, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> +			0x00, 0x00, 0x00, 0x00, 0x02, 0x46, 0x02, 0x88,
> +			0x88, 0x88, 0x88, 0x88, 0x88, 0x64, 0x88, 0x13,
> +			0x57, 0x13, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
> +			0x75, 0x88, 0x23, 0x14, 0x00, 0x00, 0x02, 0x00,
> +			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> +			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0A,
> +			0xA5, 0x00, 0x00, 0x00, 0x00)
> +};
> +
>  static inline struct jh057n *panel_to_jh057n(struct drm_panel *panel)
>  {
>  	return container_of(panel, struct jh057n, panel);
>  }
>  
> -#define dsi_generic_write_seq(dsi, seq...) do {				\
> -		static const u8 d[] = { seq };				\
> -		int ret;						\
> -		ret = mipi_dsi_generic_write(dsi, d, ARRAY_SIZE(d));	\
> -		if (ret < 0)						\
> -			return ret;					\
> -	} while (0)
The above macro was the one triggering this patch.
And frankly it looks nice and simple.

The old code is IMO more readable.
- We have all the commands listed in the order they
  are used and in a rahter compatch format.
- It is obvious when we need delays.
- We have traditional #defines for the constants we know

This macro:
> +#define st7703_cmd_data(cmd, ...)                                    \
> +     .size = 1 + (sizeof((u8[]){__VA_ARGS__})/sizeof(u8)),           \
> +     .data = {cmd, __VA_ARGS__}
is again IMO not easier to follow than the above.

This is all to some extent bikeshedding, but I suggest
to keep the current code.
It is simple and it is tested.

Thanks for trying to come up with a better solution.

	Sam

  reply	other threads:[~2019-04-03 21:07 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-01 10:35 [PATCH v5 0/3] drm/panel: Support Rocktech jh057n00900 DSI panel Guido Günther
2019-04-01 10:35 ` [PATCH v5 1/3] dt-bindings: Add vendor prefix for ROCKTECH DISPLAYS LIMITED Guido Günther
2019-04-01 10:35 ` [PATCH v5 2/3] dt-bindings: Add Rocktech jh057n00900 panel bindings Guido Günther
2019-04-01 10:35 ` [PATCH v5 3/3] drm/panel: Add Rocktech jh057n00900 panel driver Guido Günther
2019-04-01 10:35   ` Guido Günther
2019-04-03 16:17 ` [PATCH v5 0/3] drm/panel: Support Rocktech jh057n00900 DSI panel Thierry Reding
2019-04-03 17:11   ` Joe Perches
2019-04-03 20:09     ` Joe Perches
2019-04-03 21:07       ` Sam Ravnborg [this message]
2019-04-03 21:07         ` Sam Ravnborg
2019-04-04  5:02         ` Joe Perches
2019-04-04  5:02           ` Joe Perches
2019-04-04 10:53     ` Guido Günther
2019-04-04 15:06       ` [PATCH] drm/panel: Rocktech jh057n00900: Add terminating newlines to logging Joe Perches
2019-04-04 15:48         ` Guido Günther
2019-04-04 16:19           ` Joe Perches
2019-04-04 17:09           ` Thierry Reding
2019-04-04 17:09             ` Thierry Reding
2019-04-04 17:00         ` Sam Ravnborg
2019-04-04 17:00           ` Sam Ravnborg
2019-04-04 18:55           ` Joe Perches
2019-04-04 18:55             ` Joe Perches
2019-04-04 19:08             ` Sam Ravnborg
2019-04-04 19:08               ` Sam Ravnborg
2019-04-04 17:08         ` Thierry Reding

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=20190403210738.GA9173@ravnborg.org \
    --to=sam@ravnborg.org \
    --cc=agx@sigxcpu.org \
    --cc=airlied@linux.ie \
    --cc=daniel@ffwll.ch \
    --cc=davem@davemloft.net \
    --cc=devicetree@vger.kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=jagan@amarulasolutions.com \
    --cc=joe@perches.com \
    --cc=johan@kernel.org \
    --cc=khilman@baylibre.com \
    --cc=linux-kernel@vger.ke \
    --cc=manivannan.sadhasivam@linaro.org \
    --cc=mark.rutland@arm.com \
    --cc=martin.blumenstingl@googlemail.com \
    --cc=mchehab+samsung@kernel.org \
    --cc=nicolas.ferre@microchip.com \
    --cc=robh+dt@kernel.org \
    --cc=shawnguo@kernel.org \
    --cc=thierry.reding@gmail.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.