From: Will McVicker <willmcvicker@google.com> To: Russell King <linux@armlinux.org.uk>, Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>, Catalin Marinas <catalin.marinas@arm.com>, Will Deacon <will@kernel.org>, Michael Turquette <mturquette@baylibre.com>, Stephen Boyd <sboyd@kernel.org>, Sylwester Nawrocki <s.nawrocki@samsung.com>, Tomasz Figa <tomasz.figa@gmail.com>, Chanwoo Choi <cw00.choi@samsung.com>, Linus Walleij <linus.walleij@linaro.org>, Alessandro Zummo <a.zummo@towertech.it>, Alexandre Belloni <alexandre.belloni@bootlin.com>, John Stultz <john.stultz@linaro.org>, Thomas Gleixner <tglx@linutronix.de> Cc: Lee Jones <lee.jones@linaro.org>, Geert Uytterhoeven <geert@linux-m68k.org>, Saravana Kannan <saravanak@google.com>, Will McVicker <willmcvicker@google.com>, kernel-team@android.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org, linux-clk@vger.kernel.org, linux-gpio@vger.kernel.org, linux-rtc@vger.kernel.org Subject: [PATCH v2 03/12] clk: samsung: add support for CPU clocks Date: Tue, 28 Sep 2021 23:56:20 +0000 [thread overview] Message-ID: <20210928235635.1348330-4-willmcvicker@google.com> (raw) In-Reply-To: <20210928235635.1348330-1-willmcvicker@google.com> Adds 'struct samsung_cpu_clock' and correpsonding code to the samsung common clk driver. This allows drivers to register their CPU clocks with the samsung_cmu_register_one() API. Signed-off-by: Will McVicker <willmcvicker@google.com> --- drivers/clk/samsung/clk-cpu.c | 26 ++++++++++++++++++++++++++ drivers/clk/samsung/clk.c | 2 ++ drivers/clk/samsung/clk.h | 26 ++++++++++++++++++++++++++ 3 files changed, 54 insertions(+) diff --git a/drivers/clk/samsung/clk-cpu.c b/drivers/clk/samsung/clk-cpu.c index 00ef4d1b0888..b5017934fc41 100644 --- a/drivers/clk/samsung/clk-cpu.c +++ b/drivers/clk/samsung/clk-cpu.c @@ -469,3 +469,29 @@ int __init exynos_register_cpu_clock(struct samsung_clk_provider *ctx, kfree(cpuclk); return ret; } + +void samsung_clk_register_cpu(struct samsung_clk_provider *ctx, + const struct samsung_cpu_clock *list, unsigned int nr_clk) +{ + unsigned int idx; + unsigned int num_cfgs; + struct clk *parent_clk, *alt_parent_clk; + const struct clk_hw *parent_clk_hw = NULL; + const struct clk_hw *alt_parent_clk_hw = NULL; + + for (idx = 0; idx < nr_clk; idx++, list++) { + /* find count of configuration rates in cfg */ + for (num_cfgs = 0; list->cfg[num_cfgs].prate != 0; ) + num_cfgs++; + + parent_clk = __clk_lookup(list->parent_name); + if (parent_clk) + parent_clk_hw = __clk_get_hw(parent_clk); + alt_parent_clk = __clk_lookup(list->alt_parent_name); + if (alt_parent_clk) + alt_parent_clk_hw = __clk_get_hw(alt_parent_clk); + + exynos_register_cpu_clock(ctx, list->id, list->name, parent_clk_hw, + alt_parent_clk_hw, list->offset, list->cfg, num_cfgs, list->flags); + } +} diff --git a/drivers/clk/samsung/clk.c b/drivers/clk/samsung/clk.c index 1949ae7851b2..336243c6f120 100644 --- a/drivers/clk/samsung/clk.c +++ b/drivers/clk/samsung/clk.c @@ -378,6 +378,8 @@ struct samsung_clk_provider * __init samsung_cmu_register_one( samsung_clk_extended_sleep_init(reg_base, cmu->clk_regs, cmu->nr_clk_regs, cmu->suspend_regs, cmu->nr_suspend_regs); + if (cmu->cpu_clks) + samsung_clk_register_cpu(ctx, cmu->cpu_clks, cmu->nr_cpu_clks); samsung_clk_of_add_provider(np, ctx); diff --git a/drivers/clk/samsung/clk.h b/drivers/clk/samsung/clk.h index c1e1a6b2f499..a52a38cc1740 100644 --- a/drivers/clk/samsung/clk.h +++ b/drivers/clk/samsung/clk.h @@ -271,6 +271,27 @@ struct samsung_pll_clock { __PLL(_typ, _id, _name, _pname, CLK_GET_RATE_NOCACHE, _lock, \ _con, _rtable) +struct samsung_cpu_clock { + unsigned int id; + const char *name; + const char *parent_name; + const char *alt_parent_name; + unsigned long flags; + int offset; + const struct exynos_cpuclk_cfg_data *cfg; +}; + +#define CPU_CLK(_id, _name, _pname, _apname, _flags, _offset, _cfg) \ + { \ + .id = _id, \ + .name = _name, \ + .parent_name = _pname, \ + .alt_parent_name = _apname, \ + .flags = _flags, \ + .offset = _offset, \ + .cfg = _cfg, \ + } + struct samsung_clock_reg_cache { struct list_head node; void __iomem *reg_base; @@ -301,6 +322,9 @@ struct samsung_cmu_info { unsigned int nr_fixed_factor_clks; /* total number of clocks with IDs assigned*/ unsigned int nr_clk_ids; + /* list of cpu clocks and respective count */ + const struct samsung_cpu_clock *cpu_clks; + unsigned int nr_cpu_clks; /* list and number of clocks registers */ const unsigned long *clk_regs; @@ -350,6 +374,8 @@ extern void __init samsung_clk_register_gate(struct samsung_clk_provider *ctx, extern void __init samsung_clk_register_pll(struct samsung_clk_provider *ctx, const struct samsung_pll_clock *pll_list, unsigned int nr_clk, void __iomem *base); +extern void __init samsung_clk_register_cpu(struct samsung_clk_provider *ctx, + const struct samsung_cpu_clock *list, unsigned int nr_clk); extern struct samsung_clk_provider __init *samsung_cmu_register_one( struct device_node *, -- 2.33.0.685.g46640cef36-goog
WARNING: multiple messages have this Message-ID (diff)
From: Will McVicker <willmcvicker@google.com> To: Russell King <linux@armlinux.org.uk>, Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>, Catalin Marinas <catalin.marinas@arm.com>, Will Deacon <will@kernel.org>, Michael Turquette <mturquette@baylibre.com>, Stephen Boyd <sboyd@kernel.org>, Sylwester Nawrocki <s.nawrocki@samsung.com>, Tomasz Figa <tomasz.figa@gmail.com>, Chanwoo Choi <cw00.choi@samsung.com>, Linus Walleij <linus.walleij@linaro.org>, Alessandro Zummo <a.zummo@towertech.it>, Alexandre Belloni <alexandre.belloni@bootlin.com>, John Stultz <john.stultz@linaro.org>, Thomas Gleixner <tglx@linutronix.de> Cc: Lee Jones <lee.jones@linaro.org>, Geert Uytterhoeven <geert@linux-m68k.org>, Saravana Kannan <saravanak@google.com>, Will McVicker <willmcvicker@google.com>, kernel-team@android.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org, linux-clk@vger.kernel.org, linux-gpio@vger.kernel.org, linux-rtc@vger.kernel.org Subject: [PATCH v2 03/12] clk: samsung: add support for CPU clocks Date: Tue, 28 Sep 2021 23:56:20 +0000 [thread overview] Message-ID: <20210928235635.1348330-4-willmcvicker@google.com> (raw) In-Reply-To: <20210928235635.1348330-1-willmcvicker@google.com> Adds 'struct samsung_cpu_clock' and correpsonding code to the samsung common clk driver. This allows drivers to register their CPU clocks with the samsung_cmu_register_one() API. Signed-off-by: Will McVicker <willmcvicker@google.com> --- drivers/clk/samsung/clk-cpu.c | 26 ++++++++++++++++++++++++++ drivers/clk/samsung/clk.c | 2 ++ drivers/clk/samsung/clk.h | 26 ++++++++++++++++++++++++++ 3 files changed, 54 insertions(+) diff --git a/drivers/clk/samsung/clk-cpu.c b/drivers/clk/samsung/clk-cpu.c index 00ef4d1b0888..b5017934fc41 100644 --- a/drivers/clk/samsung/clk-cpu.c +++ b/drivers/clk/samsung/clk-cpu.c @@ -469,3 +469,29 @@ int __init exynos_register_cpu_clock(struct samsung_clk_provider *ctx, kfree(cpuclk); return ret; } + +void samsung_clk_register_cpu(struct samsung_clk_provider *ctx, + const struct samsung_cpu_clock *list, unsigned int nr_clk) +{ + unsigned int idx; + unsigned int num_cfgs; + struct clk *parent_clk, *alt_parent_clk; + const struct clk_hw *parent_clk_hw = NULL; + const struct clk_hw *alt_parent_clk_hw = NULL; + + for (idx = 0; idx < nr_clk; idx++, list++) { + /* find count of configuration rates in cfg */ + for (num_cfgs = 0; list->cfg[num_cfgs].prate != 0; ) + num_cfgs++; + + parent_clk = __clk_lookup(list->parent_name); + if (parent_clk) + parent_clk_hw = __clk_get_hw(parent_clk); + alt_parent_clk = __clk_lookup(list->alt_parent_name); + if (alt_parent_clk) + alt_parent_clk_hw = __clk_get_hw(alt_parent_clk); + + exynos_register_cpu_clock(ctx, list->id, list->name, parent_clk_hw, + alt_parent_clk_hw, list->offset, list->cfg, num_cfgs, list->flags); + } +} diff --git a/drivers/clk/samsung/clk.c b/drivers/clk/samsung/clk.c index 1949ae7851b2..336243c6f120 100644 --- a/drivers/clk/samsung/clk.c +++ b/drivers/clk/samsung/clk.c @@ -378,6 +378,8 @@ struct samsung_clk_provider * __init samsung_cmu_register_one( samsung_clk_extended_sleep_init(reg_base, cmu->clk_regs, cmu->nr_clk_regs, cmu->suspend_regs, cmu->nr_suspend_regs); + if (cmu->cpu_clks) + samsung_clk_register_cpu(ctx, cmu->cpu_clks, cmu->nr_cpu_clks); samsung_clk_of_add_provider(np, ctx); diff --git a/drivers/clk/samsung/clk.h b/drivers/clk/samsung/clk.h index c1e1a6b2f499..a52a38cc1740 100644 --- a/drivers/clk/samsung/clk.h +++ b/drivers/clk/samsung/clk.h @@ -271,6 +271,27 @@ struct samsung_pll_clock { __PLL(_typ, _id, _name, _pname, CLK_GET_RATE_NOCACHE, _lock, \ _con, _rtable) +struct samsung_cpu_clock { + unsigned int id; + const char *name; + const char *parent_name; + const char *alt_parent_name; + unsigned long flags; + int offset; + const struct exynos_cpuclk_cfg_data *cfg; +}; + +#define CPU_CLK(_id, _name, _pname, _apname, _flags, _offset, _cfg) \ + { \ + .id = _id, \ + .name = _name, \ + .parent_name = _pname, \ + .alt_parent_name = _apname, \ + .flags = _flags, \ + .offset = _offset, \ + .cfg = _cfg, \ + } + struct samsung_clock_reg_cache { struct list_head node; void __iomem *reg_base; @@ -301,6 +322,9 @@ struct samsung_cmu_info { unsigned int nr_fixed_factor_clks; /* total number of clocks with IDs assigned*/ unsigned int nr_clk_ids; + /* list of cpu clocks and respective count */ + const struct samsung_cpu_clock *cpu_clks; + unsigned int nr_cpu_clks; /* list and number of clocks registers */ const unsigned long *clk_regs; @@ -350,6 +374,8 @@ extern void __init samsung_clk_register_gate(struct samsung_clk_provider *ctx, extern void __init samsung_clk_register_pll(struct samsung_clk_provider *ctx, const struct samsung_pll_clock *pll_list, unsigned int nr_clk, void __iomem *base); +extern void __init samsung_clk_register_cpu(struct samsung_clk_provider *ctx, + const struct samsung_cpu_clock *list, unsigned int nr_clk); extern struct samsung_clk_provider __init *samsung_cmu_register_one( struct device_node *, -- 2.33.0.685.g46640cef36-goog _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2021-09-28 23:57 UTC|newest] Thread overview: 166+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-09-28 23:56 [PATCH v2 00/12] arm64: Kconfig: Update ARCH_EXYNOS select configs Will McVicker 2021-09-28 23:56 ` Will McVicker 2021-09-28 23:56 ` [PATCH v2 01/12] arm64: don't have ARCH_EXYNOS select EXYNOS_CHIPID Will McVicker 2021-09-28 23:56 ` Will McVicker 2021-09-29 13:58 ` (subset) " Krzysztof Kozlowski 2021-09-29 13:58 ` Krzysztof Kozlowski 2021-09-29 14:00 ` Krzysztof Kozlowski 2021-09-29 14:00 ` Krzysztof Kozlowski 2021-09-28 23:56 ` [PATCH v2 02/12] timekeeping: add API for getting timekeeping_suspended Will McVicker 2021-09-28 23:56 ` Will McVicker 2021-09-29 3:42 ` John Stultz 2021-09-29 3:42 ` John Stultz 2021-09-29 20:01 ` Will McVicker 2021-09-29 20:01 ` Will McVicker 2021-09-29 20:46 ` John Stultz 2021-09-29 20:46 ` John Stultz 2021-09-30 18:31 ` Will McVicker 2021-09-30 18:31 ` Will McVicker 2021-09-28 23:56 ` Will McVicker [this message] 2021-09-28 23:56 ` [PATCH v2 03/12] clk: samsung: add support for CPU clocks Will McVicker 2021-09-28 23:56 ` [PATCH v2 04/12] clk: samsung: exynos5433: update apollo and atlas clock probing Will McVicker 2021-09-28 23:56 ` Will McVicker 2021-09-28 23:56 ` [PATCH v2 05/12] clk: export __clk_lookup Will McVicker 2021-09-28 23:56 ` Will McVicker 2021-10-08 4:31 ` Stephen Boyd 2021-10-08 4:31 ` Stephen Boyd 2021-09-28 23:56 ` [PATCH v2 06/12] clk: samsung: modularize exynos arm64 clk drivers Will McVicker 2021-09-28 23:56 ` Will McVicker 2021-09-28 23:56 ` [PATCH v2 07/12] clk: samsung: set exynos arm64 clk driver as tristate Will McVicker 2021-09-28 23:56 ` Will McVicker 2021-09-29 13:09 ` Krzysztof Kozlowski 2021-09-29 13:09 ` Krzysztof Kozlowski 2021-09-28 23:56 ` [PATCH v2 08/12] pinctrl: samsung: modularize the ARM and ARM64 pinctrls Will McVicker 2021-09-28 23:56 ` Will McVicker 2021-09-29 2:01 ` Chanho Park 2021-09-29 2:01 ` Chanho Park 2021-09-28 23:56 ` [PATCH v2 09/12] pinctrl: samsung: set PINCTRL_EXYNOS and PINCTRL_SAMSUNG as tristate Will McVicker 2021-09-28 23:56 ` Will McVicker 2021-09-28 23:56 ` [PATCH v2 10/12] soc: samsung: pmu: modularize the Exynos ARMv8 PMU driver Will McVicker 2021-09-28 23:56 ` Will McVicker 2021-09-29 13:11 ` Krzysztof Kozlowski 2021-09-29 13:11 ` Krzysztof Kozlowski 2021-09-28 23:56 ` [PATCH v2 11/12] soc: samsung: pm_domains: modularize EXYNOS_PM_DOMAINS Will McVicker 2021-09-28 23:56 ` Will McVicker 2021-09-29 13:36 ` Krzysztof Kozlowski 2021-09-29 13:36 ` Krzysztof Kozlowski 2021-09-28 23:56 ` [PATCH v2 12/12] ARM: rtc: remove HAVE_S3C_RTC in favor of direct dependencies Will McVicker 2021-09-28 23:56 ` Will McVicker 2021-09-29 11:52 ` Alexandre Belloni 2021-09-29 11:52 ` Alexandre Belloni 2021-09-29 13:02 ` [PATCH v2 00/12] arm64: Kconfig: Update ARCH_EXYNOS select configs Krzysztof Kozlowski 2021-09-29 13:02 ` Krzysztof Kozlowski 2021-09-29 19:48 ` Will McVicker 2021-09-29 19:48 ` Will McVicker 2021-09-30 6:14 ` Krzysztof Kozlowski 2021-09-30 6:14 ` Krzysztof Kozlowski 2021-09-30 9:01 ` Arnd Bergmann 2021-09-30 9:01 ` Arnd Bergmann 2021-09-30 9:30 ` Lee Jones 2021-09-30 9:30 ` Lee Jones 2021-09-30 10:33 ` Krzysztof Kozlowski 2021-09-30 10:33 ` Krzysztof Kozlowski 2021-09-30 12:34 ` Lee Jones 2021-09-30 12:34 ` Lee Jones 2021-09-30 12:38 ` Krzysztof Kozlowski 2021-09-30 12:38 ` Krzysztof Kozlowski 2021-09-30 10:05 ` Geert Uytterhoeven 2021-09-30 10:05 ` Geert Uytterhoeven 2021-09-30 9:23 ` Lee Jones 2021-09-30 9:23 ` Lee Jones 2021-09-30 10:17 ` Geert Uytterhoeven 2021-09-30 10:17 ` Geert Uytterhoeven 2021-09-30 10:56 ` Lee Jones 2021-09-30 10:56 ` Lee Jones 2021-09-30 11:25 ` Geert Uytterhoeven 2021-09-30 11:25 ` Geert Uytterhoeven 2021-09-30 12:08 ` Lee Jones 2021-09-30 12:08 ` Lee Jones 2021-09-30 16:09 ` Geert Uytterhoeven 2021-09-30 16:09 ` Geert Uytterhoeven 2021-09-30 10:52 ` Krzysztof Kozlowski 2021-09-30 10:52 ` Krzysztof Kozlowski 2021-09-30 12:32 ` Lee Jones 2021-09-30 12:32 ` Lee Jones 2021-09-30 11:01 ` Tomasz Figa 2021-09-30 11:01 ` Tomasz Figa 2021-09-30 11:27 ` Geert Uytterhoeven 2021-09-30 11:27 ` Geert Uytterhoeven 2021-09-30 11:51 ` Lee Jones 2021-09-30 11:51 ` Lee Jones 2021-09-30 12:10 ` Tomasz Figa 2021-09-30 12:10 ` Tomasz Figa 2021-09-30 12:15 ` Krzysztof Kozlowski 2021-09-30 12:15 ` Krzysztof Kozlowski 2021-09-30 12:45 ` Lee Jones 2021-09-30 12:45 ` Lee Jones 2021-10-01 4:01 ` Christoph Hellwig 2021-10-01 4:01 ` Christoph Hellwig 2021-10-01 4:52 ` Saravana Kannan 2021-10-01 4:52 ` Saravana Kannan 2021-10-01 4:55 ` Christoph Hellwig 2021-10-01 4:55 ` Christoph Hellwig 2021-09-30 12:21 ` Krzysztof Kozlowski 2021-09-30 12:21 ` Krzysztof Kozlowski 2021-09-30 12:39 ` Lee Jones 2021-09-30 12:39 ` Lee Jones 2021-09-30 13:08 ` Krzysztof Kozlowski 2021-09-30 13:08 ` Krzysztof Kozlowski 2021-09-30 13:29 ` Lee Jones 2021-09-30 13:29 ` Lee Jones 2021-09-30 16:12 ` Geert Uytterhoeven 2021-09-30 16:12 ` Geert Uytterhoeven 2021-09-30 16:21 ` Lee Jones 2021-09-30 16:21 ` Lee Jones 2021-09-30 16:26 ` Geert Uytterhoeven 2021-09-30 16:26 ` Geert Uytterhoeven 2021-09-30 18:02 ` Will McVicker 2021-09-30 18:02 ` Will McVicker 2021-10-01 4:04 ` Christoph Hellwig 2021-10-01 4:04 ` Christoph Hellwig 2021-10-01 4:52 ` Olof Johansson 2021-10-01 4:52 ` Olof Johansson 2021-10-01 5:23 ` Saravana Kannan 2021-10-01 5:23 ` Saravana Kannan 2021-10-01 5:35 ` Olof Johansson 2021-10-01 5:35 ` Olof Johansson 2021-10-01 5:59 ` Will McVicker 2021-10-01 5:59 ` Will McVicker 2021-10-01 8:01 ` Krzysztof Kozlowski 2021-10-01 8:01 ` Krzysztof Kozlowski 2021-10-01 6:02 ` Saravana Kannan 2021-10-01 6:02 ` Saravana Kannan 2021-10-01 6:27 ` Olof Johansson 2021-10-01 6:27 ` Olof Johansson 2021-10-01 6:30 ` Olof Johansson 2021-10-01 6:30 ` Olof Johansson 2021-10-01 12:00 ` Arnd Bergmann 2021-10-01 12:00 ` Arnd Bergmann 2021-10-01 12:31 ` Lee Jones 2021-10-01 12:31 ` Lee Jones 2021-10-01 15:43 ` Olof Johansson 2021-10-01 15:43 ` Olof Johansson 2021-10-01 11:38 ` Linus Walleij 2021-10-01 11:38 ` Linus Walleij 2021-10-01 11:59 ` Geert Uytterhoeven 2021-10-01 11:59 ` Geert Uytterhoeven 2021-10-01 15:59 ` Olof Johansson 2021-10-01 15:59 ` Olof Johansson 2021-10-01 16:51 ` Will McVicker 2021-10-01 16:51 ` Will McVicker 2021-10-01 17:15 ` Olof Johansson 2021-10-01 17:15 ` Olof Johansson 2021-10-01 17:48 ` Will McVicker 2021-10-01 17:48 ` Will McVicker 2021-10-01 8:19 ` Geert Uytterhoeven 2021-10-01 8:19 ` Geert Uytterhoeven 2021-10-01 9:00 ` Arnd Bergmann 2021-10-01 9:00 ` Arnd Bergmann 2021-10-01 15:27 ` Olof Johansson 2021-10-01 15:27 ` Olof Johansson 2021-10-01 19:26 ` Saravana Kannan 2021-10-01 19:26 ` Saravana Kannan 2021-10-02 1:47 ` Tomasz Figa 2021-10-02 1:47 ` Tomasz Figa 2021-10-02 21:03 ` Olof Johansson 2021-10-02 21:03 ` Olof Johansson
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=20210928235635.1348330-4-willmcvicker@google.com \ --to=willmcvicker@google.com \ --cc=a.zummo@towertech.it \ --cc=alexandre.belloni@bootlin.com \ --cc=catalin.marinas@arm.com \ --cc=cw00.choi@samsung.com \ --cc=geert@linux-m68k.org \ --cc=john.stultz@linaro.org \ --cc=kernel-team@android.com \ --cc=krzysztof.kozlowski@canonical.com \ --cc=lee.jones@linaro.org \ --cc=linus.walleij@linaro.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-clk@vger.kernel.org \ --cc=linux-gpio@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-rtc@vger.kernel.org \ --cc=linux-samsung-soc@vger.kernel.org \ --cc=linux@armlinux.org.uk \ --cc=mturquette@baylibre.com \ --cc=s.nawrocki@samsung.com \ --cc=saravanak@google.com \ --cc=sboyd@kernel.org \ --cc=tglx@linutronix.de \ --cc=tomasz.figa@gmail.com \ --cc=will@kernel.org \ /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: linkBe 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.