From: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
To: bcm-kernel-feedback-list@broadcom.com,
linux-rpi-kernel@lists.infradead.org,
linux-arm-kernel@lists.infradead.org,
Nicolas Saenz Julienne <nsaenzjulienne@suse.de>,
Florian Fainelli <f.fainelli@gmail.com>,
Ray Jui <rjui@broadcom.com>,
Scott Branden <sbranden@broadcom.com>
Cc: kernel-list@raspberrypi.com, laurent.pinchart@ideasonboard.com,
gregkh@linuxfoundation.org, devel@driverdev.osuosl.org,
linux-kernel@vger.kernel.org
Subject: [RFC 13/50] staging: vchi: Get rid of struct vchi_instance_handle
Date: Wed, 27 May 2020 13:53:18 +0200 [thread overview]
Message-ID: <20200527115400.31391-14-nsaenzjulienne@suse.de> (raw)
In-Reply-To: <20200527115400.31391-1-nsaenzjulienne@suse.de>
The idea behind this was to create an opaque handle to struct
vchiq_instance. This can be achieved without creating a new type by
means of a forward declaration of struct vchiq_instance.
This saves us from a lot of useless casting and overall simplifies code.
Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
---
.../bcm2835-audio/bcm2835-vchiq.c | 20 ++++++-------
.../vc04_services/bcm2835-audio/bcm2835.h | 2 +-
.../vc04_services/interface/vchi/vchi.h | 12 ++++----
.../interface/vchiq_arm/vchiq_shim.c | 30 ++++++-------------
.../staging/vc04_services/vc-sm-cma/vc_sm.c | 8 ++---
.../vc04_services/vc-sm-cma/vc_sm_cma_vchi.c | 4 +--
.../vc04_services/vc-sm-cma/vc_sm_cma_vchi.h | 2 +-
.../vc04_services/vchiq-mmal/mmal-vchiq.c | 8 ++---
8 files changed, 37 insertions(+), 49 deletions(-)
diff --git a/drivers/staging/vc04_services/bcm2835-audio/bcm2835-vchiq.c b/drivers/staging/vc04_services/bcm2835-audio/bcm2835-vchiq.c
index 73144f1ce45e..8c9390153a26 100644
--- a/drivers/staging/vc04_services/bcm2835-audio/bcm2835-vchiq.c
+++ b/drivers/staging/vc04_services/bcm2835-audio/bcm2835-vchiq.c
@@ -122,7 +122,7 @@ static void audio_vchi_callback(void *param,
}
static int
-vc_vchi_audio_init(struct vchi_instance_handle *vchi_instance,
+vc_vchi_audio_init(struct vchiq_instance *vchiq_instance,
struct bcm2835_audio_instance *instance)
{
struct service_creation params = {
@@ -134,7 +134,7 @@ vc_vchi_audio_init(struct vchi_instance_handle *vchi_instance,
int status;
/* Open the VCHI service connections */
- status = vchi_service_open(vchi_instance, ¶ms,
+ status = vchi_service_open(vchiq_instance, ¶ms,
&instance->vchi_handle);
if (status) {
@@ -173,20 +173,20 @@ int bcm2835_new_vchi_ctx(struct device *dev, struct bcm2835_vchi_ctx *vchi_ctx)
int ret;
/* Initialize and create a VCHI connection */
- ret = vchi_initialise(&vchi_ctx->vchi_instance);
+ ret = vchi_initialise(&vchi_ctx->instance);
if (ret) {
dev_err(dev, "failed to initialise VCHI instance (ret=%d)\n",
ret);
return -EIO;
}
- ret = vchi_connect(vchi_ctx->vchi_instance);
+ ret = vchi_connect(vchi_ctx->instance);
if (ret) {
dev_dbg(dev, "failed to connect VCHI instance (ret=%d)\n",
ret);
- kfree(vchi_ctx->vchi_instance);
- vchi_ctx->vchi_instance = NULL;
+ kfree(vchi_ctx->instance);
+ vchi_ctx->instance = NULL;
return -EIO;
}
@@ -196,10 +196,10 @@ int bcm2835_new_vchi_ctx(struct device *dev, struct bcm2835_vchi_ctx *vchi_ctx)
void bcm2835_free_vchi_ctx(struct bcm2835_vchi_ctx *vchi_ctx)
{
- /* Close the VCHI connection - it will also free vchi_instance */
- WARN_ON(vchi_disconnect(vchi_ctx->vchi_instance));
+ /* Close the VCHI connection - it will also free vchi_ctx->instance */
+ WARN_ON(vchi_disconnect(vchi_ctx->instance));
- vchi_ctx->vchi_instance = NULL;
+ vchi_ctx->instance = NULL;
}
int bcm2835_audio_open(struct bcm2835_alsa_stream *alsa_stream)
@@ -217,7 +217,7 @@ int bcm2835_audio_open(struct bcm2835_alsa_stream *alsa_stream)
instance->alsa_stream = alsa_stream;
alsa_stream->instance = instance;
- err = vc_vchi_audio_init(vchi_ctx->vchi_instance,
+ err = vc_vchi_audio_init(vchi_ctx->instance,
instance);
if (err < 0)
goto free_instance;
diff --git a/drivers/staging/vc04_services/bcm2835-audio/bcm2835.h b/drivers/staging/vc04_services/bcm2835-audio/bcm2835.h
index d2fe8d36ab7d..2a94e825194f 100644
--- a/drivers/staging/vc04_services/bcm2835-audio/bcm2835.h
+++ b/drivers/staging/vc04_services/bcm2835-audio/bcm2835.h
@@ -44,7 +44,7 @@ enum snd_bcm2835_ctrl {
};
struct bcm2835_vchi_ctx {
- struct vchi_instance_handle *vchi_instance;
+ struct vchiq_instance *instance;
};
/* definition of the chip-specific record */
diff --git a/drivers/staging/vc04_services/interface/vchi/vchi.h b/drivers/staging/vc04_services/interface/vchi/vchi.h
index 1daef5ad70f1..6b73d8fb394a 100644
--- a/drivers/staging/vc04_services/interface/vchi/vchi.h
+++ b/drivers/staging/vc04_services/interface/vchi/vchi.h
@@ -49,8 +49,8 @@ struct service_creation {
void *callback_param;
};
-// Opaque handle for a VCHI instance
-struct vchi_instance_handle;
+// Opaque handle for a VCHIQ instance
+struct vchiq_instance;
// Opaque handle for a server or client
struct vchi_service_handle;
@@ -61,19 +61,19 @@ struct vchi_service_handle;
*****************************************************************************/
// Routine used to initialise the vchi on both local + remote connections
-extern int32_t vchi_initialise(struct vchi_instance_handle **instance_handle);
+extern int32_t vchi_initialise(struct vchiq_instance **instance);
-extern int32_t vchi_connect(struct vchi_instance_handle *instance_handle);
+extern int32_t vchi_connect(struct vchiq_instance *instance);
//When this is called, ensure that all services have no data pending.
//Bulk transfers can remain 'queued'
-extern int32_t vchi_disconnect(struct vchi_instance_handle *instance_handle);
+extern int32_t vchi_disconnect(struct vchiq_instance *instance);
/******************************************************************************
* Global service API
*****************************************************************************/
// Routine to open a named service
-extern int32_t vchi_service_open(struct vchi_instance_handle *instance_handle,
+extern int32_t vchi_service_open(struct vchiq_instance *instance,
struct service_creation *setup,
struct vchi_service_handle **handle);
diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_shim.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_shim.c
index 54c2492b7c83..8758704d61c9 100644
--- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_shim.c
+++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_shim.c
@@ -287,7 +287,7 @@ EXPORT_SYMBOL(vchi_msg_hold);
/***********************************************************
* Name: vchi_initialise
*
- * Arguments: struct vchi_instance_handle **instance_handle
+ * Arguments: struct vchiq_instance **instance
*
* Description: Initialises the hardware but does not transmit anything
* When run as a Host App this will be called twice hence the need
@@ -297,23 +297,16 @@ EXPORT_SYMBOL(vchi_msg_hold);
*
***********************************************************/
-int32_t vchi_initialise(struct vchi_instance_handle **instance_handle)
+int32_t vchi_initialise(struct vchiq_instance **instance)
{
- struct vchiq_instance *instance;
- enum vchiq_status status;
-
- status = vchiq_initialise(&instance);
-
- *instance_handle = (struct vchi_instance_handle *)instance;
-
- return status;
+ return vchiq_initialise(instance);
}
EXPORT_SYMBOL(vchi_initialise);
/***********************************************************
* Name: vchi_connect
*
- * Arguments: struct vchi_instance_handle *instance_handle
+ * Arguments: struct vchiq_instance *instance
*
* Description: Starts the command service on each connection,
* causing INIT messages to be pinged back and forth
@@ -321,10 +314,8 @@ EXPORT_SYMBOL(vchi_initialise);
* Returns: 0 if successful, failure otherwise
*
***********************************************************/
-int32_t vchi_connect(struct vchi_instance_handle *instance_handle)
+int32_t vchi_connect(struct vchiq_instance *instance)
{
- struct vchiq_instance *instance = (struct vchiq_instance *)instance_handle;
-
return vchiq_connect(instance);
}
EXPORT_SYMBOL(vchi_connect);
@@ -332,7 +323,7 @@ EXPORT_SYMBOL(vchi_connect);
/***********************************************************
* Name: vchi_disconnect
*
- * Arguments: struct vchi_instance_handle *instance_handle
+ * Arguments: struct vchiq_instance *instance
*
* Description: Stops the command service on each connection,
* causing DE-INIT messages to be pinged back and forth
@@ -340,10 +331,8 @@ EXPORT_SYMBOL(vchi_connect);
* Returns: 0 if successful, failure otherwise
*
***********************************************************/
-int32_t vchi_disconnect(struct vchi_instance_handle *instance_handle)
+int32_t vchi_disconnect(struct vchiq_instance *instance)
{
- struct vchiq_instance *instance = (struct vchiq_instance *)instance_handle;
-
return vchiq_shutdown(instance);
}
EXPORT_SYMBOL(vchi_disconnect);
@@ -352,7 +341,7 @@ EXPORT_SYMBOL(vchi_disconnect);
* Name: vchi_service_open
* Name: vchi_service_create
*
- * Arguments: struct vchi_instance_handle *instance_handle
+ * Arguments: struct vchiq_instance *instance
* struct service_creation *setup,
* struct vchi_service_handle **handle
*
@@ -446,11 +435,10 @@ static void service_free(struct shim_service *service)
}
}
-int32_t vchi_service_open(struct vchi_instance_handle *instance_handle,
+int32_t vchi_service_open(struct vchiq_instance *instance,
struct service_creation *setup,
struct vchi_service_handle **handle)
{
- struct vchiq_instance *instance = (struct vchiq_instance *)instance_handle;
struct shim_service *service = service_alloc(instance, setup);
*handle = (struct vchi_service_handle *)service;
diff --git a/drivers/staging/vc04_services/vc-sm-cma/vc_sm.c b/drivers/staging/vc04_services/vc-sm-cma/vc_sm.c
index cd5fb561debb..3f95ea90c08a 100644
--- a/drivers/staging/vc04_services/vc-sm-cma/vc_sm.c
+++ b/drivers/staging/vc04_services/vc-sm-cma/vc_sm.c
@@ -1505,7 +1505,7 @@ static const struct file_operations vc_sm_ops = {
static void vc_sm_connected_init(void)
{
int ret;
- struct vchi_instance_handle *vchi_instance;
+ struct vchiq_instance *instance;
struct vc_sm_version version;
struct vc_sm_result_t version_result;
@@ -1515,7 +1515,7 @@ static void vc_sm_connected_init(void)
* Initialize and create a VCHI connection for the shared memory service
* running on videocore.
*/
- ret = vchi_initialise(&vchi_instance);
+ ret = vchi_initialise(&instance);
if (ret) {
pr_err("[%s]: failed to initialise VCHI instance (ret=%d)\n",
__func__, ret);
@@ -1523,7 +1523,7 @@ static void vc_sm_connected_init(void)
return;
}
- ret = vchi_connect(vchi_instance);
+ ret = vchi_connect(instance);
if (ret) {
pr_err("[%s]: failed to connect VCHI instance (ret=%d)\n",
__func__, ret);
@@ -1532,7 +1532,7 @@ static void vc_sm_connected_init(void)
}
/* Initialize an instance of the shared memory service. */
- sm_state->sm_handle = vc_sm_cma_vchi_init(vchi_instance, 1,
+ sm_state->sm_handle = vc_sm_cma_vchi_init(instance, 1,
vc_sm_vpu_event);
if (!sm_state->sm_handle) {
pr_err("[%s]: failed to initialize shared memory service\n",
diff --git a/drivers/staging/vc04_services/vc-sm-cma/vc_sm_cma_vchi.c b/drivers/staging/vc04_services/vc-sm-cma/vc_sm_cma_vchi.c
index cd3f62844616..b142fadb2bb5 100644
--- a/drivers/staging/vc04_services/vc-sm-cma/vc_sm_cma_vchi.c
+++ b/drivers/staging/vc04_services/vc-sm-cma/vc_sm_cma_vchi.c
@@ -285,7 +285,7 @@ static void vc_sm_cma_vchi_callback(void *param,
}
}
-struct sm_instance *vc_sm_cma_vchi_init(struct vchi_instance_handle *vchi_instance,
+struct sm_instance *vc_sm_cma_vchi_init(struct vchiq_instance *vchiq_instance,
unsigned int num_connections,
vpu_event_cb vpu_event)
{
@@ -328,7 +328,7 @@ struct sm_instance *vc_sm_cma_vchi_init(struct vchi_instance_handle *vchi_instan
.callback_param = instance,
};
- status = vchi_service_open(vchi_instance,
+ status = vchi_service_open(vchiq_instance,
¶ms, &instance->vchi_handle[i]);
if (status) {
pr_err("%s: failed to open VCHI service (%d)",
diff --git a/drivers/staging/vc04_services/vc-sm-cma/vc_sm_cma_vchi.h b/drivers/staging/vc04_services/vc-sm-cma/vc_sm_cma_vchi.h
index e8db34bd1e91..44cc389364f4 100644
--- a/drivers/staging/vc04_services/vc-sm-cma/vc_sm_cma_vchi.h
+++ b/drivers/staging/vc04_services/vc-sm-cma/vc_sm_cma_vchi.h
@@ -28,7 +28,7 @@ typedef void (*vpu_event_cb)(struct sm_instance *instance,
/*
* Initialize the shared memory service, opens up vchi connection to talk to it.
*/
-struct sm_instance *vc_sm_cma_vchi_init(struct vchi_instance_handle *vchi_instance,
+struct sm_instance *vc_sm_cma_vchi_init(struct vchiq_instance *vchiq_instance,
unsigned int num_connections,
vpu_event_cb vpu_event);
diff --git a/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c b/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
index 4c89bc0bec15..3504ea8aed4f 100644
--- a/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
+++ b/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
@@ -2098,7 +2098,7 @@ int vchiq_mmal_init(struct vchiq_mmal_instance **out_instance)
{
int status;
struct vchiq_mmal_instance *instance;
- static struct vchi_instance_handle *vchi_instance;
+ static struct vchiq_instance *vchiq_instance;
struct service_creation params = {
.version = VCHI_VERSION_EX(VC_MMAL_VER, VC_MMAL_MIN_VER),
.service_id = VC_MMAL_SERVER_NAME,
@@ -2120,14 +2120,14 @@ int vchiq_mmal_init(struct vchiq_mmal_instance **out_instance)
BUILD_BUG_ON(sizeof(struct mmal_port) != 64);
/* create a vchi instance */
- status = vchi_initialise(&vchi_instance);
+ status = vchi_initialise(&vchiq_instance);
if (status) {
pr_err("Failed to initialise VCHI instance (status=%d)\n",
status);
return -EIO;
}
- status = vchi_connect(vchi_instance);
+ status = vchi_connect(vchiq_instance);
if (status) {
pr_err("Failed to connect VCHI instance (status=%d)\n", status);
return -EIO;
@@ -2152,7 +2152,7 @@ int vchiq_mmal_init(struct vchiq_mmal_instance **out_instance)
if (!instance->bulk_wq)
goto err_free;
- status = vchi_service_open(vchi_instance, ¶ms, &instance->handle);
+ status = vchi_service_open(vchiq_instance, ¶ms, &instance->handle);
if (status) {
pr_err("Failed to open VCHI service connection (status=%d)\n",
status);
--
2.26.2
next prev parent reply other threads:[~2020-05-27 11:57 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-27 11:53 [RFC 00/50] staging: vchiq: Getting rid of the vchi/vchiq split Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 01/50] staging: vchi: Get rid of vchi_service_destroy() Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 02/50] staging: vchi: Get rid of vchi_queue_user_message() Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 03/50] staging: vchiq: Move copy callback handling into vchiq Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 04/50] staging: vchi: Merge vchi_msg_queue() into vchi_queue_kernel_message() Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 05/50] staging: vchi: Get rid of vchi_service_set_option() Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 06/50] staging: vchi: Get rid of vchiq_status_to_vchi() Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 07/50] staging: vchi: Get rid of not implemented function declarations Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 08/50] staging: vchi: Get rid of C++ guards Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 09/50] staging: vchiq: move vchiq_release_message() into vchiq Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 10/50] staging: vchiq: Get rid of VCHIQ_SERVICE_OPENEND callback reason Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 11/50] staging: vchi: Get rid of all useless callback reasons Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 12/50] staging: vchi: Get rid of vchi_msg_peek() Nicolas Saenz Julienne
2020-05-27 11:53 ` Nicolas Saenz Julienne [this message]
2020-05-27 11:53 ` [RFC 14/50] staging: vchi: Unify struct shim_service and struct vchi_service_handle Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 15/50] staging: vc04_services: bcm2835-audio: Use vchi_msg_hold() Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 16/50] staging: vchi: Get rid of vchi_msg_dequeue() Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 17/50] staging: vchi_common: Get rid of all unused definitions Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 18/50] staging: vc04_services: vc-sm-cma: Get rid of the multiple connections option Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 19/50] staging: vchi: Get rid of unnecessary defines Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 20/50] staging: vc04_services: Get rid of vchi_cfg.h Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 21/50] staging: vchi: Get rid of flags argument in vchi_msg_hold() Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 22/50] staging: vchi: Use enum vchiq_bulk_mode instead of vchi's transmission flags Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 23/50] staging: vchi: Use vchiq's enum vchiq_reason Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 24/50] staging: vchi: Get rid of effect less expression Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 25/50] staging: vchiq: Introduce vchiq_validate_params() Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 26/50] staging: vchiq: Move message queue into struct vchiq_service Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 27/50] staging: vchiq: Get rid of vchiq_util.h Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 28/50] staging: vchi: Expose struct vchi_service Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 29/50] staging: vchiq: Export vchiq_get_service_userdata() Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 30/50] staging: vchiq: Export vchiq_msg_queue_push Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 31/50] staging: vchi: Get rid of vchiq_shim's message callback Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 32/50] staging: vchiq: Don't use a typedef for vchiq_callback Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 33/50] staging: vchi: Use struct vchiq_service_params Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 34/50] staging: vchi: Get rid of struct vchi_service Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 35/50] staging: vchiq: Pass vchiq's message when holding a message Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 36/50] staging: vchi: Rework vchi_msg_hold() to match vchiq_msg_hold() Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 37/50] staging: vchiq: Unify fourcc definition mechanisms Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 38/50] staging: vchi: Get rid of struct vchiq_instance forward declaration Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 39/50] staging: vchi: Don't include vchiq_core.h Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 40/50] staging: vchiq: Get rid of unnecessary definitions in vchiq_if.h Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 41/50] staging: vchiq: Make vchiq_add_service() local Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 42/50] staging: vchiq: Move definitions only used by core into core header Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 43/50] staging: vchi: Get rid of vchi_bulk_queue_receive() Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 44/50] staging: vchi: Get rid of vchi_bulk_queue_transmit() Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 45/50] staging: vchi: Move vchi_queue_kernel_message() into vchiq Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 46/50] staging: vchiq: Get rid of vchi Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 47/50] staging: vchiq: Move conditional barrier definition into vchiq_core.h Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 48/50] staging: vchiq: Use vchiq.h as the main header file for services Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 49/50] staging: vchiq: Move defines into core header Nicolas Saenz Julienne
2020-05-27 11:53 ` [RFC 50/50] staging: vchiq: Move vchiq.h into include directory Nicolas Saenz Julienne
2020-05-27 12:08 ` [RFC 00/50] staging: vchiq: Getting rid of the vchi/vchiq split Greg KH
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=20200527115400.31391-14-nsaenzjulienne@suse.de \
--to=nsaenzjulienne@suse.de \
--cc=bcm-kernel-feedback-list@broadcom.com \
--cc=devel@driverdev.osuosl.org \
--cc=f.fainelli@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=kernel-list@raspberrypi.com \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rpi-kernel@lists.infradead.org \
--cc=rjui@broadcom.com \
--cc=sbranden@broadcom.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).