All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mathieu Poirier <mathieu.poirier@linaro.org>
To: Beleswar Padhi <b-padhi@ti.com>
Cc: andersson@kernel.org, afd@ti.com, hnagalla@ti.com,
	u-kumar1@ti.com, jm@ti.com, jan.kiszka@siemens.com,
	christophe.jaillet@wanadoo.fr, jkangas@redhat.com,
	eballetbo@redhat.com, linux-remoteproc@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v11 12/35] remoteproc: k3: Refactor mailbox rx_callback functions into common driver
Date: Thu, 8 May 2025 09:46:29 -0600	[thread overview]
Message-ID: <aBzR1YrJ0eWQUlfP@p14s> (raw)
In-Reply-To: <20250425104135.830255-13-b-padhi@ti.com>

On Fri, Apr 25, 2025 at 04:11:12PM +0530, Beleswar Padhi wrote:
> The mailbox .rx_callback implementations in TI K3 R5, DSP and M4
> remoteproc drivers handle inbound mailbox messages in the same way.
> Introduce a common driver 'ti_k3_common.c' and refactor the
> implementations into a common function 'k3_rproc_mbox_callback'() in it.
> 
> Signed-off-by: Beleswar Padhi <b-padhi@ti.com>
> Tested-by: Judith Mendez <jm@ti.com>
> ---
> v11: Changelog:
> 1. Carried T/B tag.
> 
> Link to v10:
> https://lore.kernel.org/all/20250417182001.3903905-13-b-padhi@ti.com/
> 
> v10: Changelog:
> None
> 
> Link to v9:
> https://lore.kernel.org/all/20250317120622.1746415-11-b-padhi@ti.com/
> 
>  drivers/remoteproc/Makefile               |  4 +-
>  drivers/remoteproc/ti_k3_common.c         | 84 +++++++++++++++++++++++
>  drivers/remoteproc/ti_k3_common.h         |  1 +
>  drivers/remoteproc/ti_k3_dsp_remoteproc.c | 50 +-------------
>  drivers/remoteproc/ti_k3_m4_remoteproc.c  | 49 +------------
>  drivers/remoteproc/ti_k3_r5_remoteproc.c  | 50 +-------------
>  6 files changed, 90 insertions(+), 148 deletions(-)
>  create mode 100644 drivers/remoteproc/ti_k3_common.c
> 
> diff --git a/drivers/remoteproc/Makefile b/drivers/remoteproc/Makefile
> index 5ff4e2fee4abd..e30908ca4bfcd 100644
> --- a/drivers/remoteproc/Makefile
> +++ b/drivers/remoteproc/Makefile
> @@ -36,7 +36,7 @@ obj-$(CONFIG_RCAR_REMOTEPROC)		+= rcar_rproc.o
>  obj-$(CONFIG_ST_REMOTEPROC)		+= st_remoteproc.o
>  obj-$(CONFIG_ST_SLIM_REMOTEPROC)	+= st_slim_rproc.o
>  obj-$(CONFIG_STM32_RPROC)		+= stm32_rproc.o
> -obj-$(CONFIG_TI_K3_DSP_REMOTEPROC)	+= ti_k3_dsp_remoteproc.o
> -obj-$(CONFIG_TI_K3_M4_REMOTEPROC)	+= ti_k3_m4_remoteproc.o
> +obj-$(CONFIG_TI_K3_DSP_REMOTEPROC)	+= ti_k3_dsp_remoteproc.o ti_k3_common.o
> +obj-$(CONFIG_TI_K3_M4_REMOTEPROC)	+= ti_k3_m4_remoteproc.o ti_k3_common.o
>  obj-$(CONFIG_TI_K3_R5_REMOTEPROC)	+= ti_k3_r5_remoteproc.o

The R5 driver doesn't need to be compile with ti_k3_common.c?

>  obj-$(CONFIG_XLNX_R5_REMOTEPROC)	+= xlnx_r5_remoteproc.o
> diff --git a/drivers/remoteproc/ti_k3_common.c b/drivers/remoteproc/ti_k3_common.c
> new file mode 100644
> index 0000000000000..7b45e3b416186
> --- /dev/null
> +++ b/drivers/remoteproc/ti_k3_common.c
> @@ -0,0 +1,84 @@
> +// SPDX-License-Identifier: GPL-2.0-only
> +/*
> + * TI K3 Remote Processor(s) driver common code
> + *
> + * Refactored out of ti_k3_r5_remoteproc.c, ti_k3_dsp_remoteproc.c and
> + * ti_k3_m4_remoteproc.c.
> + *
> + * ti_k3_dsp_remoteproc.c:
> + * Copyright (C) 2018-2022 Texas Instruments Incorporated - https://www.ti.com/
> + *	Suman Anna <s-anna@ti.com>
> + *
> + * ti_k3_m4_remoteproc.c:
> + * Copyright (C) 2021-2024 Texas Instruments Incorporated - https://www.ti.com/
> + *	Hari Nagalla <hnagalla@ti.com>
> + */
> +
> +#include <linux/io.h>
> +#include <linux/mailbox_client.h>
> +#include <linux/module.h>
> +#include <linux/of_address.h>
> +#include <linux/of_device.h>
> +#include <linux/of_reserved_mem.h>
> +#include <linux/omap-mailbox.h>
> +#include <linux/platform_device.h>
> +#include <linux/remoteproc.h>
> +#include <linux/reset.h>
> +#include <linux/slab.h>
> +
> +#include "omap_remoteproc.h"
> +#include "remoteproc_internal.h"
> +#include "ti_sci_proc.h"
> +#include "ti_k3_common.h"
> +
> +/**
> + * k3_rproc_mbox_callback() - inbound mailbox message handler
> + * @client: mailbox client pointer used for requesting the mailbox channel
> + * @data: mailbox payload
> + *
> + * This handler is invoked by the K3 mailbox driver whenever a mailbox
> + * message is received. Usually, the mailbox payload simply contains
> + * the index of the virtqueue that is kicked by the remote processor,
> + * and we let remoteproc core handle it.
> + *
> + * In addition to virtqueue indices, we also have some out-of-band values
> + * that indicate different events. Those values are deliberately very
> + * large so they don't coincide with virtqueue indices.
> + */
> +void k3_rproc_mbox_callback(struct mbox_client *client, void *data)
> +{
> +	struct k3_rproc *kproc = container_of(client, struct k3_rproc, client);
> +	struct device *dev = kproc->rproc->dev.parent;
> +	struct rproc *rproc = kproc->rproc;
> +	u32 msg = (u32)(uintptr_t)(data);
> +
> +	dev_dbg(dev, "mbox msg: 0x%x\n", msg);
> +
> +	switch (msg) {
> +	case RP_MBOX_CRASH:
> +		/*
> +		 * remoteproc detected an exception, but error recovery is not
> +		 * supported. So, just log this for now
> +		 */
> +		dev_err(dev, "K3 rproc %s crashed\n", rproc->name);
> +		break;
> +	case RP_MBOX_ECHO_REPLY:
> +		dev_info(dev, "received echo reply from %s\n", rproc->name);
> +		break;
> +	default:
> +		/* silently handle all other valid messages */
> +		if (msg >= RP_MBOX_READY && msg < RP_MBOX_END_MSG)
> +			return;
> +		if (msg > rproc->max_notifyid) {
> +			dev_dbg(dev, "dropping unknown message 0x%x", msg);
> +			return;
> +		}
> +		/* msg contains the index of the triggered vring */
> +		if (rproc_vq_interrupt(rproc, msg) == IRQ_NONE)
> +			dev_dbg(dev, "no message was found in vqid %d\n", msg);
> +	}
> +}
> +EXPORT_SYMBOL_GPL(k3_rproc_mbox_callback);
> +
> +MODULE_LICENSE("GPL");
> +MODULE_DESCRIPTION("TI K3 common Remoteproc code");
> diff --git a/drivers/remoteproc/ti_k3_common.h b/drivers/remoteproc/ti_k3_common.h
> index 43aedab9f0aa3..785bb4b17d02f 100644
> --- a/drivers/remoteproc/ti_k3_common.h
> +++ b/drivers/remoteproc/ti_k3_common.h
> @@ -88,4 +88,5 @@ struct k3_rproc {
>  	void *priv;
>  };
>  
> +void k3_rproc_mbox_callback(struct mbox_client *client, void *data);
>  #endif /* REMOTEPROC_TI_K3_COMMON_H */
> diff --git a/drivers/remoteproc/ti_k3_dsp_remoteproc.c b/drivers/remoteproc/ti_k3_dsp_remoteproc.c
> index e92fab831670c..7bd1d5a790cb2 100644
> --- a/drivers/remoteproc/ti_k3_dsp_remoteproc.c
> +++ b/drivers/remoteproc/ti_k3_dsp_remoteproc.c
> @@ -24,54 +24,6 @@
>  
>  #define KEYSTONE_RPROC_LOCAL_ADDRESS_MASK	(SZ_16M - 1)
>  
> -/**
> - * k3_dsp_rproc_mbox_callback() - inbound mailbox message handler
> - * @client: mailbox client pointer used for requesting the mailbox channel
> - * @data: mailbox payload
> - *
> - * This handler is invoked by the OMAP mailbox driver whenever a mailbox
> - * message is received. Usually, the mailbox payload simply contains
> - * the index of the virtqueue that is kicked by the remote processor,
> - * and we let remoteproc core handle it.
> - *
> - * In addition to virtqueue indices, we also have some out-of-band values
> - * that indicate different events. Those values are deliberately very
> - * large so they don't coincide with virtqueue indices.
> - */
> -static void k3_dsp_rproc_mbox_callback(struct mbox_client *client, void *data)
> -{
> -	struct k3_rproc *kproc = container_of(client, struct k3_rproc, client);
> -	struct device *dev = kproc->rproc->dev.parent;
> -	const char *name = kproc->rproc->name;
> -	u32 msg = omap_mbox_message(data);
> -
> -	dev_dbg(dev, "mbox msg: 0x%x\n", msg);
> -
> -	switch (msg) {
> -	case RP_MBOX_CRASH:
> -		/*
> -		 * remoteproc detected an exception, but error recovery is not
> -		 * supported. So, just log this for now
> -		 */
> -		dev_err(dev, "K3 DSP rproc %s crashed\n", name);
> -		break;
> -	case RP_MBOX_ECHO_REPLY:
> -		dev_info(dev, "received echo reply from %s\n", name);
> -		break;
> -	default:
> -		/* silently handle all other valid messages */
> -		if (msg >= RP_MBOX_READY && msg < RP_MBOX_END_MSG)
> -			return;
> -		if (msg > kproc->rproc->max_notifyid) {
> -			dev_dbg(dev, "dropping unknown message 0x%x", msg);
> -			return;
> -		}
> -		/* msg contains the index of the triggered vring */
> -		if (rproc_vq_interrupt(kproc->rproc, msg) == IRQ_NONE)
> -			dev_dbg(dev, "no message was found in vqid %d\n", msg);
> -	}
> -}
> -
>  /*
>   * Kick the remote processor to notify about pending unprocessed messages.
>   * The vqid usage is not used and is inconsequential, as the kick is performed
> @@ -155,7 +107,7 @@ static int k3_dsp_rproc_request_mbox(struct rproc *rproc)
>  
>  	client->dev = dev;
>  	client->tx_done = NULL;
> -	client->rx_callback = k3_dsp_rproc_mbox_callback;
> +	client->rx_callback = k3_rproc_mbox_callback;
>  	client->tx_block = false;
>  	client->knows_txdone = false;
>  
> diff --git a/drivers/remoteproc/ti_k3_m4_remoteproc.c b/drivers/remoteproc/ti_k3_m4_remoteproc.c
> index 04095407a483d..a1bcc4b265dfe 100644
> --- a/drivers/remoteproc/ti_k3_m4_remoteproc.c
> +++ b/drivers/remoteproc/ti_k3_m4_remoteproc.c
> @@ -21,53 +21,6 @@
>  #include "ti_sci_proc.h"
>  #include "ti_k3_common.h"
>  
> -/**
> - * k3_m4_rproc_mbox_callback() - inbound mailbox message handler
> - * @client: mailbox client pointer used for requesting the mailbox channel
> - * @data: mailbox payload
> - *
> - * This handler is invoked by the K3 mailbox driver whenever a mailbox
> - * message is received. Usually, the mailbox payload simply contains
> - * the index of the virtqueue that is kicked by the remote processor,
> - * and we let remoteproc core handle it.
> - *
> - * In addition to virtqueue indices, we also have some out-of-band values
> - * that indicate different events. Those values are deliberately very
> - * large so they don't coincide with virtqueue indices.
> - */
> -static void k3_m4_rproc_mbox_callback(struct mbox_client *client, void *data)
> -{
> -	struct device *dev = client->dev;
> -	struct rproc *rproc = dev_get_drvdata(dev);
> -	u32 msg = (u32)(uintptr_t)(data);
> -
> -	dev_dbg(dev, "mbox msg: 0x%x\n", msg);
> -
> -	switch (msg) {
> -	case RP_MBOX_CRASH:
> -		/*
> -		 * remoteproc detected an exception, but error recovery is not
> -		 * supported. So, just log this for now
> -		 */
> -		dev_err(dev, "K3 rproc %s crashed\n", rproc->name);
> -		break;
> -	case RP_MBOX_ECHO_REPLY:
> -		dev_info(dev, "received echo reply from %s\n", rproc->name);
> -		break;
> -	default:
> -		/* silently handle all other valid messages */
> -		if (msg >= RP_MBOX_READY && msg < RP_MBOX_END_MSG)
> -			return;
> -		if (msg > rproc->max_notifyid) {
> -			dev_dbg(dev, "dropping unknown message 0x%x", msg);
> -			return;
> -		}
> -		/* msg contains the index of the triggered vring */
> -		if (rproc_vq_interrupt(rproc, msg) == IRQ_NONE)
> -			dev_dbg(dev, "no message was found in vqid %d\n", msg);
> -	}
> -}
> -
>  /*
>   * Kick the remote processor to notify about pending unprocessed messages.
>   * The vqid usage is not used and is inconsequential, as the kick is performed
> @@ -581,7 +534,7 @@ static int k3_m4_rproc_probe(struct platform_device *pdev)
>  
>  	kproc->client.dev = dev;
>  	kproc->client.tx_done = NULL;
> -	kproc->client.rx_callback = k3_m4_rproc_mbox_callback;
> +	kproc->client.rx_callback = k3_rproc_mbox_callback;
>  	kproc->client.tx_block = false;
>  	kproc->client.knows_txdone = false;
>  	kproc->mbox = mbox_request_channel(&kproc->client, 0);
> diff --git a/drivers/remoteproc/ti_k3_r5_remoteproc.c b/drivers/remoteproc/ti_k3_r5_remoteproc.c
> index a6799ce121327..a1dfbe383c13c 100644
> --- a/drivers/remoteproc/ti_k3_r5_remoteproc.c
> +++ b/drivers/remoteproc/ti_k3_r5_remoteproc.c
> @@ -129,54 +129,6 @@ struct k3_r5_core {
>  	bool released_from_reset;
>  };
>  
> -/**
> - * k3_r5_rproc_mbox_callback() - inbound mailbox message handler
> - * @client: mailbox client pointer used for requesting the mailbox channel
> - * @data: mailbox payload
> - *
> - * This handler is invoked by the OMAP mailbox driver whenever a mailbox
> - * message is received. Usually, the mailbox payload simply contains
> - * the index of the virtqueue that is kicked by the remote processor,
> - * and we let remoteproc core handle it.
> - *
> - * In addition to virtqueue indices, we also have some out-of-band values
> - * that indicate different events. Those values are deliberately very
> - * large so they don't coincide with virtqueue indices.
> - */
> -static void k3_r5_rproc_mbox_callback(struct mbox_client *client, void *data)
> -{
> -	struct k3_rproc *kproc = container_of(client, struct k3_rproc, client);
> -	struct device *dev = kproc->rproc->dev.parent;
> -	const char *name = kproc->rproc->name;
> -	u32 msg = omap_mbox_message(data);
> -
> -	dev_dbg(dev, "mbox msg: 0x%x\n", msg);
> -
> -	switch (msg) {
> -	case RP_MBOX_CRASH:
> -		/*
> -		 * remoteproc detected an exception, but error recovery is not
> -		 * supported. So, just log this for now
> -		 */
> -		dev_err(dev, "K3 R5F rproc %s crashed\n", name);
> -		break;
> -	case RP_MBOX_ECHO_REPLY:
> -		dev_info(dev, "received echo reply from %s\n", name);
> -		break;
> -	default:
> -		/* silently handle all other valid messages */
> -		if (msg >= RP_MBOX_READY && msg < RP_MBOX_END_MSG)
> -			return;
> -		if (msg > kproc->rproc->max_notifyid) {
> -			dev_dbg(dev, "dropping unknown message 0x%x", msg);
> -			return;
> -		}
> -		/* msg contains the index of the triggered vring */
> -		if (rproc_vq_interrupt(kproc->rproc, msg) == IRQ_NONE)
> -			dev_dbg(dev, "no message was found in vqid %d\n", msg);
> -	}
> -}
> -
>  /* kick a virtqueue */
>  static void k3_r5_rproc_kick(struct rproc *rproc, int vqid)
>  {
> @@ -356,7 +308,7 @@ static int k3_r5_rproc_request_mbox(struct rproc *rproc)
>  
>  	client->dev = dev;
>  	client->tx_done = NULL;
> -	client->rx_callback = k3_r5_rproc_mbox_callback;
> +	client->rx_callback = k3_rproc_mbox_callback;
>  	client->tx_block = false;
>  	client->knows_txdone = false;
>  
> -- 
> 2.34.1
> 

  reply	other threads:[~2025-05-08 15:46 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-25 10:41 [PATCH v11 00/35] Refactor TI K3 R5, DSP and M4 Remoteproc Drivers Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 01/35] remoteproc: k3-r5: Drop check performed in k3_r5_rproc_{mbox_callback/kick} Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 02/35] remoteproc: k3-dsp: Drop check performed in k3_dsp_rproc_{mbox_callback/kick} Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 03/35] remoteproc: k3-r5: Refactor sequential core power up/down operations Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 04/35] remoteproc: k3-r5: Re-order internal memory initialization functions Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 05/35] remoteproc: k3-r5: Re-order k3_r5_release_tsp() function Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 06/35] remoteproc: k3-r5: Refactor Data Structures to Align with DSP and M4 Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 07/35] remoteproc: k3-r5: Use k3_r5_rproc_mem_data structure for memory info Beleswar Padhi
2025-05-07 16:30   ` Mathieu Poirier
2025-04-25 10:41 ` [PATCH v11 08/35] remoteproc: k3-{m4/dsp}: Add a void ptr member in rproc internal struct Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 09/35] remoteproc: k3-m4: Add pointer to rproc struct within k3_m4_rproc Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 10/35] remoteproc: k3-m4: Use k3_rproc_mem_data structure for memory info Beleswar Padhi
2025-05-07 16:48   ` Mathieu Poirier
2025-05-07 16:57   ` Mathieu Poirier
2025-04-25 10:41 ` [PATCH v11 11/35] remoteproc: k3: Refactor shared data structures Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 12/35] remoteproc: k3: Refactor mailbox rx_callback functions into common driver Beleswar Padhi
2025-05-08 15:46   ` Mathieu Poirier [this message]
2025-05-09  4:08     ` Beleswar Prasad Padhi
2025-04-25 10:41 ` [PATCH v11 13/35] remoteproc: k3: Refactor .kick rproc ops " Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 14/35] remoteproc: k3-dsp: Correct Reset logic for devices without lresets Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 15/35] remoteproc: k3-m4: Introduce central function to put rproc into reset Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 16/35] remoteproc: k3: Refactor rproc_reset() implementation into common driver Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 17/35] remoteproc: k3-dsp: Correct Reset deassert logic for devices w/o lresets Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 18/35] remoteproc: k3-m4: Introduce central function to release rproc from reset Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 19/35] remoteproc: k3: Refactor rproc_release() implementation into common driver Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 20/35] remoteproc: k3-m4: Ping the mbox while acquiring the channel Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 21/35] remoteproc: k3: Refactor rproc_request_mbox() implementations into common driver Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 22/35] remoteproc: k3-dsp: Don't override rproc ops in IPC-only mode Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 23/35] remoteproc: k3-dsp: Assert local reset during .prepare callback Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 24/35] remoteproc: k3: Refactor .prepare rproc ops into common driver Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 25/35] remoteproc: k3: Refactor .unprepare " Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 26/35] remoteproc: k3: Refactor .start " Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 27/35] remoteproc: k3: Refactor .stop " Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 28/35] remoteproc: k3: Refactor .attach " Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 29/35] remoteproc: k3: Refactor .detach " Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 30/35] remoteproc: k3: Refactor .get_loaded_rsc_table " Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 31/35] remoteproc: k3: Refactor .da_to_va rproc " Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 32/35] remoteproc: k3: Refactor of_get_memories() functions " Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 33/35] remoteproc: k3: Refactor mem_release() " Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 34/35] remoteproc: k3: Refactor reserved_mem_init() " Beleswar Padhi
2025-04-25 10:41 ` [PATCH v11 35/35] remoteproc: k3: Refactor release_tsp() " Beleswar Padhi
2025-04-25 22:42 ` [PATCH v11 00/35] Refactor TI K3 R5, DSP and M4 Remoteproc Drivers Andrew Davis
2025-05-02 15:16 ` Mathieu Poirier
2025-05-09 17:09 ` Mathieu Poirier
2025-05-12  4:08   ` Beleswar Prasad Padhi

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=aBzR1YrJ0eWQUlfP@p14s \
    --to=mathieu.poirier@linaro.org \
    --cc=afd@ti.com \
    --cc=andersson@kernel.org \
    --cc=b-padhi@ti.com \
    --cc=christophe.jaillet@wanadoo.fr \
    --cc=eballetbo@redhat.com \
    --cc=hnagalla@ti.com \
    --cc=jan.kiszka@siemens.com \
    --cc=jkangas@redhat.com \
    --cc=jm@ti.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-remoteproc@vger.kernel.org \
    --cc=u-kumar1@ti.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.