linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: stable@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: Vignesh R <vigneshr@ti.com>,
	Kishon Vijay Abraham I <kishon@ti.com>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH AUTOSEL 3.18 20/98] phy: phy-ti-pipe3: fix inconsistent enumeration of PCIe gen2 cards
Date: Thu, 25 Oct 2018 10:17:35 -0400	[thread overview]
Message-ID: <20181025141853.214051-20-sashal@kernel.org> (raw)
In-Reply-To: <20181025141853.214051-1-sashal@kernel.org>

From: Vignesh R <vigneshr@ti.com>

[ Upstream commit 0bc09f9cdc589e0b54724096138996a00b19babb ]

Prior to DRA74x silicon rev 1.1, pcie_pcs register bits 8-15 and bits 16-23
were used to configure RC delay count for phy1 and phy2 respectively.
phyid was used as index to distinguish the phys and to configure the delay
values appropriately.

As of DRA74x silicon rev 1.1, pcie_pcs register definition has changed.
Bits 16-23 are used to configure delay values for *both* phy1 and phy2.

Hence phyid is no longer required.

So, drop id field from ti_pipe3 structure and its subsequent references
for configuring pcie_pcs register.

Also, pcie_pcs register now needs to be configured with delay value of 0x96
at bit positions 16-23. See register description of CTRL_CORE_PCIE_PCS in
ARM572x TRM, SPRUHZ6, October 2014, section 18.5.2.2, table 18-1804.

This is needed to ensure Gen2 cards are enumerated consistently.

DRA72x silicon behaves same way as DRA74x rev 1.1 as far as this functionality
is considered.

Test results on DRA74x and DRA72x EVMs:

Before patch
------------
DRA74x ES 1.0: Gen1 cards work, Gen2 cards do not work (expected result due to
silicon errata)
DRA74x ES 1.1: Gen1 cards work, Gen2 cards do not work sometimes due to incorrect
programming of register

DRA72x: Gen1 cards work, Gen2 cards do not work sometimes due to incorrect
programming of register

After patch
-----------
DRA74x ES 1.0: Gen1 cards work, Gen2 cards do not work (expected result due to
silicon errata)
DRA74x ES 1.1: Gen1 cards work, Gen2 cards work consistently.

DRA72x: Gen1 and Gen2 cards enumerate consistently.

Signed-off-by: Vignesh R <vigneshr@ti.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>

Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/phy/phy-omap-control.c       |  7 +++----
 drivers/phy/phy-ti-pipe3.c           | 10 ++++++----
 include/linux/phy/omap_control_phy.h |  6 +++---
 3 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/drivers/phy/phy-omap-control.c b/drivers/phy/phy-omap-control.c
index c96e8183a8ff..efe724f97e02 100644
--- a/drivers/phy/phy-omap-control.c
+++ b/drivers/phy/phy-omap-control.c
@@ -29,10 +29,9 @@
 /**
  * omap_control_pcie_pcs - set the PCS delay count
  * @dev: the control module device
- * @id: index of the pcie PHY (should be 1 or 2)
  * @delay: 8 bit delay value
  */
-void omap_control_pcie_pcs(struct device *dev, u8 id, u8 delay)
+void omap_control_pcie_pcs(struct device *dev, u8 delay)
 {
 	u32 val;
 	struct omap_control_phy	*control_phy;
@@ -55,8 +54,8 @@ void omap_control_pcie_pcs(struct device *dev, u8 id, u8 delay)
 
 	val = readl(control_phy->pcie_pcs);
 	val &= ~(OMAP_CTRL_PCIE_PCS_MASK <<
-		(id * OMAP_CTRL_PCIE_PCS_DELAY_COUNT_SHIFT));
-	val |= delay << (id * OMAP_CTRL_PCIE_PCS_DELAY_COUNT_SHIFT);
+		OMAP_CTRL_PCIE_PCS_DELAY_COUNT_SHIFT);
+	val |= (delay << OMAP_CTRL_PCIE_PCS_DELAY_COUNT_SHIFT);
 	writel(val, control_phy->pcie_pcs);
 }
 EXPORT_SYMBOL_GPL(omap_control_pcie_pcs);
diff --git a/drivers/phy/phy-ti-pipe3.c b/drivers/phy/phy-ti-pipe3.c
index ab1e22d9a1e8..fd92fc64f5da 100644
--- a/drivers/phy/phy-ti-pipe3.c
+++ b/drivers/phy/phy-ti-pipe3.c
@@ -82,7 +82,6 @@ struct ti_pipe3 {
 	struct clk		*refclk;
 	struct clk		*div_clk;
 	struct pipe3_dpll_map	*dpll_map;
-	u8			id;
 };
 
 static struct pipe3_dpll_map dpll_map_usb[] = {
@@ -217,8 +216,13 @@ static int ti_pipe3_init(struct phy *x)
 	u32 val;
 	int ret = 0;
 
+	/*
+	 * Set pcie_pcs register to 0x96 for proper functioning of phy
+	 * as recommended in AM572x TRM SPRUHZ6, section 18.5.2.2, table
+	 * 18-1804.
+	 */
 	if (of_device_is_compatible(phy->dev->of_node, "ti,phy-pipe3-pcie")) {
-		omap_control_pcie_pcs(phy->control_dev, phy->id, 0xF1);
+		omap_control_pcie_pcs(phy->control_dev, 0x96);
 		return 0;
 	}
 
@@ -347,8 +351,6 @@ static int ti_pipe3_probe(struct platform_device *pdev)
 	}
 
 	if (of_device_is_compatible(node, "ti,phy-pipe3-pcie")) {
-		if (of_property_read_u8(node, "id", &phy->id) < 0)
-			phy->id = 1;
 
 		clk = devm_clk_get(phy->dev, "dpll_ref");
 		if (IS_ERR(clk)) {
diff --git a/include/linux/phy/omap_control_phy.h b/include/linux/phy/omap_control_phy.h
index e9e6cfbfbb58..eb7d4a135a9e 100644
--- a/include/linux/phy/omap_control_phy.h
+++ b/include/linux/phy/omap_control_phy.h
@@ -66,7 +66,7 @@ enum omap_control_usb_mode {
 #define	OMAP_CTRL_PIPE3_PHY_TX_RX_POWEROFF	0x0
 
 #define	OMAP_CTRL_PCIE_PCS_MASK			0xff
-#define	OMAP_CTRL_PCIE_PCS_DELAY_COUNT_SHIFT	0x8
+#define	OMAP_CTRL_PCIE_PCS_DELAY_COUNT_SHIFT	16
 
 #define OMAP_CTRL_USB2_PHY_PD		BIT(28)
 
@@ -79,7 +79,7 @@ enum omap_control_usb_mode {
 void omap_control_phy_power(struct device *dev, int on);
 void omap_control_usb_set_mode(struct device *dev,
 			       enum omap_control_usb_mode mode);
-void omap_control_pcie_pcs(struct device *dev, u8 id, u8 delay);
+void omap_control_pcie_pcs(struct device *dev, u8 delay);
 #else
 
 static inline void omap_control_phy_power(struct device *dev, int on)
@@ -91,7 +91,7 @@ static inline void omap_control_usb_set_mode(struct device *dev,
 {
 }
 
-static inline void omap_control_pcie_pcs(struct device *dev, u8 id, u8 delay)
+static inline void omap_control_pcie_pcs(struct device *dev, u8 delay)
 {
 }
 #endif
-- 
2.17.1


  parent reply	other threads:[~2018-10-25 14:19 UTC|newest]

Thread overview: 107+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-25 14:17 [PATCH AUTOSEL 3.18 01/98] dm thin: restore requested 'error_if_no_space' setting on OODS to WRITE transition Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 02/98] ocfs2: fix journal commit deadlock in ocfs2_convert_inline_data_to_extents Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 03/98] s390/kvm: REPLACE barrier fixup with READ_ONCE Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 04/98] USB: qcserial: Fix support for HP lt4112 LTE/HSPA+ Gobi 4G Modem Sasha Levin
2018-10-26  8:49   ` Johan Hovold
2018-10-26  9:02     ` Bjørn Mork
2018-10-26  9:11       ` Johan Hovold
2018-10-26 10:59     ` Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 05/98] cxl: Fix issues when unmapping contexts Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 06/98] s390/ftrace/jprobes: Fix conflict between jprobes and function graph tracing Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 07/98] mmc: sdhci: restore behavior when setting VDD via external regulator Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 08/98] ARM: OMAP5 / DRA7: Fix HYP mode boot for thumb2 build Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 09/98] usb: gadget: gadgetfs: fix an oops in ep_write() Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 10/98] ahci_xgene: Fix the DMA state machine lockup for the ATA_CMD_PACKET PIO mode command Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 11/98] Revert "drm/i915: Fix mutex->owner inspection race under DEBUG_MUTEXES" Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 12/98] pinctrl: at91: fix null pointer dereference Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 13/98] PCI: Mark Atheros AR9580 to avoid bus reset Sasha Levin
2018-10-25 20:33   ` Tom Psyborg
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 14/98] ARM: shmobile: r8a7740: Instantiate GIC from C board code in legacy builds Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 15/98] usb: musb: Fix a few off-by-one lengths Sasha Levin
2018-10-26 10:47   ` Rasmus Villemoes
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 16/98] usb: gadget: f_uac1: access freed memory at f_audio_free_inst Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 17/98] usb: musb: Fix randconfig build issues for Kconfig options Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 18/98] usb: dwc2: gadget: kill requests with 'force' in s3c_hsotg_udc_stop() Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 19/98] phy-sun4i-usb: Change disconnect threshold value for sun6i Sasha Levin
2018-10-25 14:17 ` Sasha Levin [this message]
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 21/98] iio: iio: Fix iio_channel_read return if channel havn't info Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 22/98] ARM: dra7xx: Fix counter frequency drift for AM572x errata i856 Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 23/98] ARM: OMAP2+: Fix n900 board name for legacy user space Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 24/98] NFSv4: Cache the NFSv4/v4.1 client owner_id in the struct nfs_client Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 25/98] NFSv4/v4.1: Verify the client owner id during trunking detection Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 26/98] NFS: Ignore transport protocol when detecting server trunking Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 27/98] NFSv4: Remove incorrect check in can_open_delegated() Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 28/98] arm: dts: Use pmu_system_controller phandle for dp phy Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 29/98] scsi: ->queue_rq can't sleep Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 30/98] USB: EHCI: adjust error return code Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 31/98] uas: disable UAS on Apricorn SATA dongles Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 32/98] usb: host: ehci-tegra: request deferred probe when failing to get phy Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 33/98] Revert "tty: Fix pty master poll() after slave closes v2" Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 34/98] serial: samsung: Add the support for Exynos5433 SoC Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 35/98] mcb: mcb-pci: Only remap the 1st 0x200 bytes of BAR 0 Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 36/98] usb: serial: handle -ENODEV quietly in generic_submit_read_urb Sasha Levin
2018-10-26  8:39   ` Johan Hovold
2018-10-26 10:54     ` Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 37/98] ARM: at91/dt: sama5d4: fix the timer reg length Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 38/98] ARM: at91: sama5d3: dt: correct the sound route Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 39/98] ARM: at91/dt: sam9263: Add missing clocks to lcdc node Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 40/98] ARM: at91: board-dt-sama5: add phy_fixup to override NAND_Tree Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 41/98] fbdev/broadsheetfb: fix memory leak Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 42/98] tracing: Fix enabling of syscall events on the command line Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 43/98] perf/rapl: Fix sysfs_show() initialization for RAPL PMU Sasha Levin
2018-10-25 14:17 ` [PATCH AUTOSEL 3.18 44/98] perf/x86/intel: Fix bug for "cycles:p" and "cycles:pp" on SLM Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 45/98] perf machine: Fix __machine__findnew_thread() error path Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 46/98] perf tools: Fix statfs.f_type data type mismatch build error with uclibc Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 47/98] perf tools: Avoid build splat for syscall numbers " Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 48/98] perf tools: Fix segfault for symbol annotation on TUI Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 49/98] drivers: bus: check cci device tree node status Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 50/98] ARM: dts: disable CCI on exynos5420 based arndale-octa Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 51/98] clk: rockchip: fix deadlock possibility in cpuclk Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 52/98] quota: Fix maximum quota limit settings Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 53/98] rtnl: don't account unused struct ifla_port_vsi in rtnl_port_size Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 54/98] nfs: fix high load average due to callback thread sleeping Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 55/98] rcu: Clear need_qs flag to prevent splat Sasha Levin
2018-10-25 15:31   ` Paul E. McKenney
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 56/98] x86/irq: Check for valid irq descriptor in check_irq_vectors_for_cpu_disable() Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 57/98] of/pci: Remove duplicate kfree in of_pci_get_host_bridge_resources() Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 58/98] Btrfs: avoid syncing log in the fast fsync path when not necessary Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 59/98] pinctrl: imx25: ensure that a pin with id i is at position i in the info array Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 60/98] dm: fix AB-BA deadlock in __dm_destroy() Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 61/98] arm/arm64: KVM: Take mmap_sem in stage2_unmap_vm Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 62/98] net/mlx4_en: Remove dependency between timestamping capability and service_task Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 63/98] iommu/vt-d: Fix VM domain ID leak Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 64/98] tty: serial: fsl_lpuart: fix clearing of receive flag Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 65/98] x86/idle: Restore trace_cpu_idle to mwait_idle() calls Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 66/98] ext4: fix an ext3 collapse range regression in xfstests Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 67/98] net: ethernet: davicom: fix devicetree irq resource Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 68/98] perf bench numa: Fix to show proper convergence stats Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 69/98] MIPS: Fix up obsolete cpu_set usage Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 70/98] dm9000: Fix irq trigger type setup on non-dt platforms Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 71/98] lib: make memzero_explicit more robust against dead store elimination Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 72/98] ASoC: dapm: Don't add prefix to widget stream name Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 73/98] mtd: blkdevs: fix potential deadlock + lockdep warnings Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 74/98] selftests: Introduce a new script to generate tc batch file Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 75/98] rtlwifi: rtl8821ae: Fix system lockups on boot Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 76/98] rtlwifi: rtl8821ae: Fix " Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 77/98] clocksource/exynos_mct: Clear interrupt when cpu is shut down Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 78/98] ALSA: hda - Add headset mic support for Acer Aspire V5-573G Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 79/98] ALSA: usb-audio: Add a more accurate volume quirk for AudioQuest DragonFly Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 80/98] tty: audit: Fix audit source Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 81/98] Btrfs: do not ignore errors from btrfs_lookup_xattr in do_setxattr Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 82/98] igb: Unpair the queues when changing the number of queues Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 83/98] libata: blacklist Micron 500IT SSD with MU01 firmware Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 84/98] perf: Fix PERF_EVENT_IOC_PERIOD deadlock Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 85/98] mm: migrate: hugetlb: putback destination hugepage to active list Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 86/98] Revert "SCSI: Fix NULL pointer dereference in runtime PM" Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 87/98] x86/ldt: Fix small LDT allocation for Xen Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 88/98] PCI: Fix devfn for VPD access through function 0 Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 89/98] vfs: Make sendfile(2) killable even better Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 90/98] sctp: translate network order to host order when users get a hmacid Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 91/98] iwlwifi: pcie: correctly define 7265-D cfg Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 92/98] ovl: fix open in stacked overlay Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 93/98] igb: fix NULL derefs due to skipped SR-IOV enabling Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 94/98] KEYS: put keyring if install_session_keyring_to_cred() fails Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 95/98] USB: hub: fix up early-exit pathway in hub_activate Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 96/98] net: fix warnings in 'make htmldocs' by moving macro definition out of field declaration Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 97/98] x86/PCI: Mark Broadwell-EP Home Agent 1 as having non-compliant BARs Sasha Levin
2018-10-25 14:18 ` [PATCH AUTOSEL 3.18 98/98] unix: correctly track in-flight fds in sending process user_struct Sasha Levin

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=20181025141853.214051-20-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=kishon@ti.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=vigneshr@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 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).