U-Boot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Mattijs Korpershoek <mkorpershoek@kernel.org>
To: Anders Roxell <anders.roxell@linaro.org>,
	u-boot@lists.denx.de, marex@denx.de
Cc: mkorpershoek@kernel.org, ilias.apalodimas@linaro.org,
	trini@konsulko.com, michal.simek@amd.com, alchark@flipper.net,
	jerome.forissier@arm.com,
	Anders Roxell <anders.roxell@linaro.org>,
	Jerome Forissier <jerome.forissier@linaro.org>,
	Jens Wiklander <jens.wiklander@linaro.org>,
	Simon Glass <sjg@chromium.org>
Subject: Re: [PATCH v5 64/75] usb: add helpers needed by the resynced DWC3 code
Date: Wed, 29 Jul 2026 11:56:18 +0200	[thread overview]
Message-ID: <87pl06xgot.fsf@kernel.org> (raw)
In-Reply-To: <20260716134305.614278-65-anders.roxell@linaro.org>

Hi Anders,

Thank you for the patch.

On Thu, Jul 16, 2026 at 15:42, Anders Roxell <anders.roxell@linaro.org> wrote:

Patch title should include dm: in prefix, since we are touching driver model

> The resynced DWC3 code calls a few helpers that u-boot did not have.
> Add them first so the next commits can use them.
>
> Co-developed-by: Jerome Forissier <jerome.forissier@linaro.org>
> Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
> Co-developed-by: Jens Wiklander <jens.wiklander@linaro.org>
> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
> Signed-off-by: Anders Roxell <anders.roxell@linaro.org>
> ---
>  include/dm/device_compat.h | 13 +++++++++
>  include/dm/read.h          | 51 ++++++++++++++++++++++++++++++++++
>  include/linux/compat.h     | 15 ++++++++++
>  include/linux/usb/phy.h    | 56 ++++++++++++++++++++++++++++++++++++++
>  4 files changed, 135 insertions(+)
>
> diff --git a/include/dm/device_compat.h b/include/dm/device_compat.h
> index aa9a6fbb5e3f..6b31a72768fd 100644
> --- a/include/dm/device_compat.h
> +++ b/include/dm/device_compat.h
> @@ -119,4 +119,17 @@
>  #define dev_vdbg(dev, fmt, ...) \
>  	__dev_printk(LOGL_DEBUG_CONTENT, dev, fmt, ##__VA_ARGS__)
>  
> +#define dev_err_probe(dev, err, fmt, ...) \
> +	({ \
> +		int _err = (err); \
> +		if (_err != -EPROBE_DEFER) { \
> +			dev_err(dev, fmt, ##__VA_ARGS__); \
> +			dev_err(dev, "[err=%d]", _err); \
> +		} else { \
> +			dev_dbg(dev, fmt, ##__VA_ARGS__); \
> +			dev_dbg(dev, "[err=%d]", _err); \
> +		} \
> +		_err; \
> +	 })
> +
>  #endif
> diff --git a/include/dm/read.h b/include/dm/read.h
> index 12dcde6645c7..4a34afa81962 100644
> --- a/include/dm/read.h
> +++ b/include/dm/read.h
> @@ -1273,6 +1273,57 @@ static inline phy_interface_t dev_read_phy_mode(const struct udevice *dev)
>  
>  #endif /* CONFIG_DM_DEV_READ_INLINE */
>  
> +static inline int dev_count_u32(const struct udevice *dev,
> +					 const char *name)

$ ./scripts/checkpatch.pl --git
52e90cc8ccac0882f2ea160a731ebfe24adfa22a^..52e90cc8ccac0882f2ea160a731ebfe24adfa22a
seems to complain here:

CHECK: Alignment should match open parenthesis
#54: FILE: include/dm/read.h:1277:
+static inline int dev_count_u32(const struct udevice *dev,
+                                        const char *name)

We also see some other warnings later:

WARNING: Prefer 'unsigned int' to bare use of 'unsigned'
#179: FILE: include/linux/usb/phy.h:59:
+                            unsigned mA);

WARNING: Prefer 'unsigned int' to bare use of 'unsigned'
#199: FILE: include/linux/usb/phy.h:79:
+usb_phy_set_power(struct usb_phy *x, unsigned mA)

total: 0 errors, 2 warnings, 3 checks, 171 lines checked


> +{
> +	return dev_read_u32_array(dev, name, NULL, 0);
> +}
> +
> +/* Linux compatibility */
> +
> +#define device_property_count_u32 dev_count_u32
> +#define device_property_read_bool dev_read_bool
> +#define device_property_read_u16 dev_read_u16
> +#define device_property_read_u32_array dev_read_u32_array
> +#define device_property_read_u32 dev_read_u32
> +#define device_property_read_u8 dev_read_u8
> +
> +static inline int device_property_read_string(const struct udevice *dev,
> +					      const char *propname,
> +					      const char **val)
> +{
> +	*val = dev_read_string(dev, propname);
> +	if (!*val)
> +		return -ENOENT;
> +	return 0;
> +}
> +
> +static inline bool device_property_present(const struct udevice *dev,
> +					   const char *propname)
> +{
> +	return (dev_read_size(dev, propname) > 0);
> +}
> +
> +static inline int device_property_count_u8(const struct udevice *dev,
> +					   const char *propname)
> +{
> +	return dev_read_size(dev, propname);
> +}
> +
> +static inline int device_property_read_u8_array(const struct udevice *dev,
> +						const char *propname,
> +						u8 *out, size_t count)
> +{
> +	const u8 *ptr = dev_read_u8_array_ptr(dev, propname, count);
> +
> +	if (!ptr)
> +		return -EINVAL;
> +
> +	memcpy(out, ptr, count);
> +
> +	return 0;
> +}
> +
>  /**
>   * dev_for_each_subnode() - Helper function to iterate through subnodes
>   *
> diff --git a/include/linux/compat.h b/include/linux/compat.h
> index d4ba4d0088a0..16c02260c111 100644
> --- a/include/linux/compat.h
> +++ b/include/linux/compat.h
> @@ -297,6 +297,7 @@ struct rw_semaphore { int i; };
>  #define up_write(...)			do { } while (0)
>  #define down_read(...)			do { } while (0)
>  #define up_read(...)			do { } while (0)
> +struct device_node;
>  struct device {
>  	struct device		*parent;
>  	struct class		*class;
> @@ -305,6 +306,7 @@ struct device {
>  	/* This is used from drivers/usb/musb-new subsystem only */
>  	void		*driver_data;	/* data private to the driver */
>  	void            *device_data;   /* data private to the device */
> +	struct device_node	*of_node; /* associated device tree node */
>  };
>  struct mutex { int i; };
>  struct kernel_param { int i; };
> @@ -402,4 +404,17 @@ typedef unsigned long dmaaddr_t;
>  #define free_irq(irq, data) do {} while (0)
>  #define request_irq(nr, f, flags, nm, data) 0
>  
> +/* From include/linux/reset.h */
> +
> +struct reset_control;
> +
> +static inline int reset_control_assert(struct reset_control *rstc)
> +{
> +	return 0;
> +}
> +
> +static inline int reset_control_deassert(struct reset_control *rstc)
> +{
> +	return 0;
> +}
>  #endif
> diff --git a/include/linux/usb/phy.h b/include/linux/usb/phy.h
> index 14b2c7eb2e63..de1d0c82076f 100644
> --- a/include/linux/usb/phy.h
> +++ b/include/linux/usb/phy.h
> @@ -21,6 +21,13 @@ enum usb_phy_interface {
>  	USBPHY_INTERFACE_MODE_HSIC,
>  };
>  
> +/* associate a type with PHY */
> +enum usb_phy_type {
> +	USB_PHY_TYPE_UNDEFINED,
> +	USB_PHY_TYPE_USB2,
> +	USB_PHY_TYPE_USB3,
> +};

Can we splease split out the PHY parts to a separate patch?

It will make it easier to review.

Also, please mention from which linux version these code bits have been
imported from.


> +
>  #if CONFIG_IS_ENABLED(DM_USB)
>  /**
>   * usb_get_phy_mode - Get phy mode for given device_node
> @@ -37,4 +44,53 @@ static inline enum usb_phy_interface usb_get_phy_mode(ofnode node)
>  }
>  #endif
>  
> +struct usb_phy {
> +	struct device		*dev;
> +
> +	/* initialize/shutdown the phy */
> +	int     (*init)(struct usb_phy *x);
> +	void    (*shutdown)(struct usb_phy *x);
> +
> +	/* enable/disable VBUS */
> +	int     (*set_vbus)(struct usb_phy *x, int on);
> +
> +	/* effective for B devices, ignored for A-peripheral */
> +	int     (*set_power)(struct usb_phy *x,
> +			     unsigned mA);
> +};
> +
> +static inline int
> +usb_phy_init(struct usb_phy *x)
> +{
> +	if (x && x->init)
> +		return x->init(x);
> +
> +	return 0;
> +}
> +
> +static inline void
> +usb_phy_shutdown(struct usb_phy *x)
> +{
> +	if (x && x->shutdown)
> +		x->shutdown(x);
> +}
> +
> +static inline int
> +usb_phy_set_power(struct usb_phy *x, unsigned mA)
> +{
> +	if (!x)
> +		return 0;
> +
> +	/* TODO usb_phy_set_charger_current(x, mA); */

I'm ok for this being a TODO, but I'd like to see a justification of why
it's commented?

> +
> +	if (x->set_power)
> +		return x->set_power(x, mA);
> +	return 0;
> +}
> +
> +static inline int
> +usb_phy_set_suspend(struct usb_phy *x, int suspend)
> +{
> +	return 0;
> +}
>  #endif /* __LINUX_USB_PHY_H */
> -- 
> 2.53.0

  reply	other threads:[~2026-07-29  9:56 UTC|newest]

Thread overview: 146+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-16 13:41 [PATCH v5 00/75] usb: dwc3: sync code with Linux v6.16 Anders Roxell
2026-07-16 13:41 ` [PATCH v5 01/75] usb: dwc3: restore to original v3.19-rc1 kernel import Anders Roxell
2026-07-27  8:39   ` Mattijs Korpershoek
2026-07-16 13:41 ` [PATCH v5 02/75] usb: dwc3: import from kernel v3.19 Anders Roxell
2026-07-27  8:42   ` Mattijs Korpershoek
2026-07-16 13:41 ` [PATCH v5 03/75] usb: dwc3: import from kernel v4.0 Anders Roxell
2026-07-27  8:44   ` Mattijs Korpershoek
2026-07-16 13:41 ` [PATCH v5 04/75] usb: dwc3: import from kernel v4.1 Anders Roxell
2026-07-27  8:48   ` Mattijs Korpershoek
2026-07-16 13:41 ` [PATCH v5 05/75] usb: dwc3: import from kernel v4.2 Anders Roxell
2026-07-27  8:52   ` Mattijs Korpershoek
2026-07-16 13:41 ` [PATCH v5 06/75] usb: dwc3: import from kernel v4.3 Anders Roxell
2026-07-27  8:53   ` Mattijs Korpershoek
2026-07-16 13:41 ` [PATCH v5 07/75] usb: dwc3: import from kernel v4.4 Anders Roxell
2026-07-27  8:54   ` Mattijs Korpershoek
2026-07-16 13:41 ` [PATCH v5 08/75] usb: dwc3: import from kernel v4.5 Anders Roxell
2026-07-27  8:55   ` Mattijs Korpershoek
2026-07-16 13:41 ` [PATCH v5 09/75] usb: dwc3: import from kernel v4.6 Anders Roxell
2026-07-27  8:56   ` Mattijs Korpershoek
2026-07-16 13:41 ` [PATCH v5 10/75] usb: dwc3: import from kernel v4.7 Anders Roxell
2026-07-27  8:56   ` Mattijs Korpershoek
2026-07-16 13:41 ` [PATCH v5 11/75] usb: dwc3: import from kernel v4.8 Anders Roxell
2026-07-27  8:58   ` Mattijs Korpershoek
2026-07-16 13:41 ` [PATCH v5 12/75] usb: dwc3: import from kernel v4.9 Anders Roxell
2026-07-27  8:59   ` Mattijs Korpershoek
2026-07-16 13:41 ` [PATCH v5 13/75] usb: dwc3: import from kernel v4.10 Anders Roxell
2026-07-27  9:00   ` Mattijs Korpershoek
2026-07-16 13:41 ` [PATCH v5 14/75] usb: dwc3: import from kernel v4.11 Anders Roxell
2026-07-27  9:00   ` Mattijs Korpershoek
2026-07-16 13:41 ` [PATCH v5 15/75] usb: dwc3: import from kernel v4.12 Anders Roxell
2026-07-27  9:01   ` Mattijs Korpershoek
2026-07-16 13:41 ` [PATCH v5 16/75] usb: dwc3: import from kernel v4.13 Anders Roxell
2026-07-27  9:02   ` Mattijs Korpershoek
2026-07-16 13:41 ` [PATCH v5 17/75] usb: dwc3: import from kernel v4.14 Anders Roxell
2026-07-27  9:04   ` Mattijs Korpershoek
2026-07-16 13:41 ` [PATCH v5 18/75] usb: dwc3: import from kernel v4.15 Anders Roxell
2026-07-27  9:08   ` Mattijs Korpershoek
2026-07-16 13:41 ` [PATCH v5 19/75] usb: dwc3: import from kernel v4.16 Anders Roxell
2026-07-27  9:09   ` Mattijs Korpershoek
2026-07-16 13:41 ` [PATCH v5 20/75] usb: dwc3: import from kernel v4.17 Anders Roxell
2026-07-16 13:41 ` [PATCH v5 21/75] usb: dwc3: import from kernel v4.18 Anders Roxell
2026-07-16 13:41 ` [PATCH v5 22/75] usb: dwc3: import from kernel v4.19 Anders Roxell
2026-07-27  9:12   ` Mattijs Korpershoek
2026-07-16 13:41 ` [PATCH v5 23/75] usb: dwc3: import from kernel v4.20 Anders Roxell
2026-07-27  9:13   ` Mattijs Korpershoek
2026-07-16 13:41 ` [PATCH v5 24/75] usb: dwc3: import from kernel v5.0 Anders Roxell
2026-07-27  9:14   ` Mattijs Korpershoek
2026-07-16 13:41 ` [PATCH v5 25/75] usb: dwc3: import from kernel v5.1 Anders Roxell
2026-07-27  9:15   ` Mattijs Korpershoek
2026-07-16 13:41 ` [PATCH v5 26/75] usb: dwc3: import from kernel v5.2 Anders Roxell
2026-07-27  9:19   ` Mattijs Korpershoek
2026-07-16 13:41 ` [PATCH v5 27/75] usb: dwc3: import from kernel v5.3 Anders Roxell
2026-07-27  9:22   ` Mattijs Korpershoek
2026-07-16 13:41 ` [PATCH v5 28/75] usb: dwc3: import from kernel v5.4 Anders Roxell
2026-07-27  9:23   ` Mattijs Korpershoek
2026-07-16 13:41 ` [PATCH v5 29/75] usb: dwc3: import from kernel v5.5 Anders Roxell
2026-07-27  9:26   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 30/75] usb: dwc3: import from kernel v5.6 Anders Roxell
2026-07-27 12:22   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 31/75] usb: dwc3: import from kernel v5.7 Anders Roxell
2026-07-28  8:50   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 32/75] usb: dwc3: import from kernel v5.8 Anders Roxell
2026-07-28  9:09   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 33/75] usb: dwc3: import from kernel v5.9 Anders Roxell
2026-07-28  9:12   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 34/75] usb: dwc3: import from kernel v5.10 Anders Roxell
2026-07-28  9:17   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 35/75] usb: dwc3: import from kernel v5.11 Anders Roxell
2026-07-28  9:19   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 36/75] usb: dwc3: import from kernel v5.12 Anders Roxell
2026-07-28  9:21   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 37/75] usb: dwc3: import from kernel v5.13 Anders Roxell
2026-07-28  9:22   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 38/75] usb: dwc3: import from kernel v5.14 Anders Roxell
2026-07-28  9:25   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 39/75] usb: dwc3: import from kernel v5.15 Anders Roxell
2026-07-28  9:29   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 40/75] usb: dwc3: import from kernel v5.16 Anders Roxell
2026-07-28  9:30   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 41/75] usb: dwc3: import from kernel v5.17 Anders Roxell
2026-07-28  9:51   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 42/75] usb: dwc3: import from kernel v5.18 Anders Roxell
2026-07-28  9:52   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 43/75] usb: dwc3: import from kernel v5.19 Anders Roxell
2026-07-28  9:54   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 44/75] usb: dwc3: import from kernel v6.0 Anders Roxell
2026-07-28 11:55   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 45/75] usb: dwc3: import from kernel v6.1 Anders Roxell
2026-07-28 11:56   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 46/75] usb: dwc3: import from kernel v6.2 Anders Roxell
2026-07-28 12:04   ` Mattijs Korpershoek
2026-07-28 12:10   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 47/75] usb: dwc3: import from kernel v6.3 Anders Roxell
2026-07-28 12:12   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 48/75] usb: dwc3: import from kernel v6.4 Anders Roxell
2026-07-28 12:16   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 49/75] usb: dwc3: import from kernel v6.5 Anders Roxell
2026-07-28 12:22   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 50/75] usb: dwc3: import from kernel v6.6 Anders Roxell
2026-07-29  9:19   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 51/75] usb: dwc3: import from kernel v6.7 Anders Roxell
2026-07-29  9:21   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 52/75] usb: dwc3: import from kernel v6.8 Anders Roxell
2026-07-29  9:22   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 53/75] usb: dwc3: import from kernel v6.9 Anders Roxell
2026-07-29  9:23   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 54/75] usb: dwc3: import from kernel v6.10 Anders Roxell
2026-07-29  9:25   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 55/75] usb: dwc3: import from kernel v6.11 Anders Roxell
2026-07-29  9:26   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 56/75] usb: dwc3: import from kernel v6.12 Anders Roxell
2026-07-29  9:27   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 57/75] usb: dwc3: import from kernel v6.13 Anders Roxell
2026-07-29  9:28   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 58/75] usb: dwc3: import from kernel v6.14 Anders Roxell
2026-07-29  9:30   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 59/75] usb: dwc3: import from kernel v6.15 Anders Roxell
2026-07-29  9:31   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 60/75] usb: dwc3: import from kernel v6.16 Anders Roxell
2026-07-29  9:32   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 61/75] usb: host: re-import xhci-ext-caps.h " Anders Roxell
2026-07-29  9:34   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 62/75] usb: gadget: re-import epautoconf.c " Anders Roxell
2026-07-29  9:38   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 63/75] usb: udc: re-import udc-core.c " Anders Roxell
2026-07-29  9:41   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 64/75] usb: add helpers needed by the resynced DWC3 code Anders Roxell
2026-07-29  9:56   ` Mattijs Korpershoek [this message]
2026-07-16 13:42 ` [PATCH v5 65/75] usb: gadget: trim the gadget API after the resync Anders Roxell
2026-07-29 10:19   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 66/75] usb: gadget: udc: make udc-core build in u-boot Anders Roxell
2026-07-29 11:49   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 67/75] usb: dwc3: make the core driver " Anders Roxell
2026-07-29 12:16   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 68/75] usb: dwc3: make gadget and ep0 " Anders Roxell
2026-07-29 12:27   ` Mattijs Korpershoek
2026-07-16 13:42 ` [PATCH v5 69/75] usb: dwc3: make the am62 glue " Anders Roxell
2026-07-16 13:42 ` [PATCH v5 70/75] usb: gadget: ci_udc: drop code we do not use Anders Roxell
2026-07-16 13:42 ` [PATCH v5 71/75] usb: gadget: dwc2_udc_otg: fix up after the resync Anders Roxell
2026-07-16 13:42 ` [PATCH v5 72/75] usb: gadget: fix up the function drivers " Anders Roxell
2026-07-16 13:42 ` [PATCH v5 73/75] usb: gadget: fix up the last UDC " Anders Roxell
2026-07-16 13:42 ` [PATCH v5 74/75] usb: fix up musb-new and mtu3 " Anders Roxell
2026-07-20 23:22   ` David Lechner via U-Boot
2026-07-16 13:42 ` [PATCH v5 75/75] usb: host: fix up xhci and cdns3 " Anders Roxell
2026-07-16 19:22 ` [PATCH v5 00/75] usb: dwc3: sync code with Linux v6.16 Marek Vasut
     [not found] ` <178602223375.3156999.13542339251028864355.b4-review@b4>
     [not found]   ` <anmKNYbNQ73Kv3iX@monster>
2026-08-10  9:56     ` Anshul Dalal

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=87pl06xgot.fsf@kernel.org \
    --to=mkorpershoek@kernel.org \
    --cc=alchark@flipper.net \
    --cc=anders.roxell@linaro.org \
    --cc=ilias.apalodimas@linaro.org \
    --cc=jens.wiklander@linaro.org \
    --cc=jerome.forissier@arm.com \
    --cc=jerome.forissier@linaro.org \
    --cc=marex@denx.de \
    --cc=michal.simek@amd.com \
    --cc=sjg@chromium.org \
    --cc=trini@konsulko.com \
    --cc=u-boot@lists.denx.de \
    /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