From: David Lechner <david@lechnology.com> To: linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: Michael Turquette <mturquette@baylibre.com>, Stephen Boyd <sboyd@codeaurora.org>, Rob Herring <robh+dt@kernel.org>, Mark Rutland <mark.rutland@arm.com>, Sekhar Nori <nsekhar@ti.com>, Kevin Hilman <khilman@kernel.org>, Bartosz Golaszewski <bgolaszewski@baylibre.com>, Adam Ford <aford173@gmail.com>, linux-kernel@vger.kernel.org, David Lechner <david@lechnology.com> Subject: [PATCH v10 03/27] clk: davinci: psc: allow for dev == NULL Date: Wed, 9 May 2018 12:25:42 -0500 [thread overview] Message-ID: <20180509172606.29387-4-david@lechnology.com> (raw) In-Reply-To: <20180509172606.29387-1-david@lechnology.com> On some davinci SoCs, we need to register the PSC clocks during early boot because they are needed for clocksource/clockevent. These changes allow for dev == NULL because in this case, we won't have a platform device for the clocks. Some function declarations are moved to a public header files so that they can be called from mach init code. Signed-off-by: David Lechner <david@lechnology.com> --- v10 changes: - dropped helper functions that conditionally called devm_ versions of functions v9 changes: - new patch in v9 drivers/clk/davinci/psc-dm355.c | 2 +- drivers/clk/davinci/psc-dm365.c | 2 +- drivers/clk/davinci/psc-dm644x.c | 2 +- drivers/clk/davinci/psc-dm646x.c | 2 +- drivers/clk/davinci/psc.c | 27 ++++++++++++++++++++------- include/linux/clk/davinci.h | 5 +++++ 6 files changed, 29 insertions(+), 11 deletions(-) diff --git a/drivers/clk/davinci/psc-dm355.c b/drivers/clk/davinci/psc-dm355.c index 6995ecea2677..001288dfdfb1 100644 --- a/drivers/clk/davinci/psc-dm355.c +++ b/drivers/clk/davinci/psc-dm355.c @@ -68,7 +68,7 @@ static const struct davinci_lpsc_clk_info dm355_psc_info[] = { { } }; -static int dm355_psc_init(struct device *dev, void __iomem *base) +int dm355_psc_init(struct device *dev, void __iomem *base) { return davinci_psc_register_clocks(dev, dm355_psc_info, 42, base); } diff --git a/drivers/clk/davinci/psc-dm365.c b/drivers/clk/davinci/psc-dm365.c index 3ad915f37376..5b5b55b0b59a 100644 --- a/drivers/clk/davinci/psc-dm365.c +++ b/drivers/clk/davinci/psc-dm365.c @@ -73,7 +73,7 @@ static const struct davinci_lpsc_clk_info dm365_psc_info[] = { { } }; -static int dm365_psc_init(struct device *dev, void __iomem *base) +int dm365_psc_init(struct device *dev, void __iomem *base) { return davinci_psc_register_clocks(dev, dm365_psc_info, 52, base); } diff --git a/drivers/clk/davinci/psc-dm644x.c b/drivers/clk/davinci/psc-dm644x.c index c22367baa46f..74668931be48 100644 --- a/drivers/clk/davinci/psc-dm644x.c +++ b/drivers/clk/davinci/psc-dm644x.c @@ -63,7 +63,7 @@ static const struct davinci_lpsc_clk_info dm644x_psc_info[] = { { } }; -static int dm644x_psc_init(struct device *dev, void __iomem *base) +int dm644x_psc_init(struct device *dev, void __iomem *base) { return davinci_psc_register_clocks(dev, dm644x_psc_info, 41, base); } diff --git a/drivers/clk/davinci/psc-dm646x.c b/drivers/clk/davinci/psc-dm646x.c index 468ef86ea40b..22473affa7cf 100644 --- a/drivers/clk/davinci/psc-dm646x.c +++ b/drivers/clk/davinci/psc-dm646x.c @@ -58,7 +58,7 @@ static const struct davinci_lpsc_clk_info dm646x_psc_info[] = { { } }; -static int dm646x_psc_init(struct device *dev, void __iomem *base) +int dm646x_psc_init(struct device *dev, void __iomem *base) { return davinci_psc_register_clocks(dev, dm646x_psc_info, 46, base); } diff --git a/drivers/clk/davinci/psc.c b/drivers/clk/davinci/psc.c index ce170e600f09..421f9f7906f4 100644 --- a/drivers/clk/davinci/psc.c +++ b/drivers/clk/davinci/psc.c @@ -15,6 +15,7 @@ #include <linux/clk-provider.h> #include <linux/clk.h> +#include <linux/clk/davinci.h> #include <linux/clkdev.h> #include <linux/err.h> #include <linux/of_address.h> @@ -63,7 +64,7 @@ struct davinci_psc_data { /** * struct davinci_lpsc_clk - LPSC clock structure - * @dev: the device that provides this LPSC + * @dev: the device that provides this LPSC or NULL * @hw: clk_hw for the LPSC * @pm_domain: power domain for the LPSC * @genpd_clk: clock reference owned by @pm_domain @@ -221,6 +222,7 @@ static void davinci_psc_genpd_detach_dev(struct generic_pm_domain *pm_domain, /** * davinci_lpsc_clk_register - register LPSC clock + * @dev: the clocks's device or NULL * @name: name of this clock * @parent_name: name of clock's parent * @regmap: PSC MMIO region @@ -238,7 +240,7 @@ davinci_lpsc_clk_register(struct device *dev, const char *name, int ret; bool is_on; - lpsc = devm_kzalloc(dev, sizeof(*lpsc), GFP_KERNEL); + lpsc = kzalloc(sizeof(*lpsc), GFP_KERNEL); if (!lpsc) return ERR_PTR(-ENOMEM); @@ -261,10 +263,14 @@ davinci_lpsc_clk_register(struct device *dev, const char *name, lpsc->pd = pd; lpsc->flags = flags; - ret = devm_clk_hw_register(dev, &lpsc->hw); + ret = clk_hw_register(dev, &lpsc->hw); if (ret < 0) return ERR_PTR(ret); + /* for now, genpd is only registered when using device-tree */ + if (!dev || !dev->of_node) + return lpsc; + /* genpd attach needs a way to look up this clock */ ret = clk_hw_register_clkdev(&lpsc->hw, name, best_dev_name(dev)); @@ -378,11 +384,11 @@ __davinci_psc_register_clocks(struct device *dev, struct regmap *regmap; int i, ret; - psc = devm_kzalloc(dev, sizeof(*psc), GFP_KERNEL); + psc = kzalloc(sizeof(*psc), GFP_KERNEL); if (!psc) return ERR_PTR(-ENOMEM); - clks = devm_kmalloc_array(dev, num_clks, sizeof(*clks), GFP_KERNEL); + clks = kmalloc_array(num_clks, sizeof(*clks), GFP_KERNEL); if (!clks) return ERR_PTR(-ENOMEM); @@ -396,14 +402,14 @@ __davinci_psc_register_clocks(struct device *dev, for (i = 0; i < num_clks; i++) clks[i] = ERR_PTR(-ENOENT); - pm_domains = devm_kcalloc(dev, num_clks, sizeof(*pm_domains), GFP_KERNEL); + pm_domains = kcalloc(num_clks, sizeof(*pm_domains), GFP_KERNEL); if (!pm_domains) return ERR_PTR(-ENOMEM); psc->pm_data.domains = pm_domains; psc->pm_data.num_domains = num_clks; - regmap = devm_regmap_init_mmio(dev, base, &davinci_psc_regmap_config); + regmap = regmap_init_mmio(dev, base, &davinci_psc_regmap_config); if (IS_ERR(regmap)) return ERR_CAST(regmap); @@ -423,6 +429,13 @@ __davinci_psc_register_clocks(struct device *dev, pm_domains[info->md] = &lpsc->pm_domain; } + /* + * for now, a reset controller is only registered when there is a device + * to associate it with. + */ + if (!dev) + return psc; + psc->rcdev.ops = &davinci_psc_reset_ops; psc->rcdev.owner = THIS_MODULE; psc->rcdev.dev = dev; diff --git a/include/linux/clk/davinci.h b/include/linux/clk/davinci.h index ebdd9df1c0ef..62764c5cc86e 100644 --- a/include/linux/clk/davinci.h +++ b/include/linux/clk/davinci.h @@ -21,4 +21,9 @@ int dm365_pll2_init(struct device *dev, void __iomem *base, struct regmap *cfgch int dm644x_pll1_init(struct device *dev, void __iomem *base, struct regmap *cfgchip); int dm646x_pll1_init(struct device *dev, void __iomem *base, struct regmap *cfgchip); +int dm355_psc_init(struct device *dev, void __iomem *base); +int dm365_psc_init(struct device *dev, void __iomem *base); +int dm644x_psc_init(struct device *dev, void __iomem *base); +int dm646x_psc_init(struct device *dev, void __iomem *base); + #endif /* __LINUX_CLK_DAVINCI_PLL_H___ */ -- 2.17.0
WARNING: multiple messages have this Message-ID (diff)
From: david@lechnology.com (David Lechner) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH v10 03/27] clk: davinci: psc: allow for dev == NULL Date: Wed, 9 May 2018 12:25:42 -0500 [thread overview] Message-ID: <20180509172606.29387-4-david@lechnology.com> (raw) In-Reply-To: <20180509172606.29387-1-david@lechnology.com> On some davinci SoCs, we need to register the PSC clocks during early boot because they are needed for clocksource/clockevent. These changes allow for dev == NULL because in this case, we won't have a platform device for the clocks. Some function declarations are moved to a public header files so that they can be called from mach init code. Signed-off-by: David Lechner <david@lechnology.com> --- v10 changes: - dropped helper functions that conditionally called devm_ versions of functions v9 changes: - new patch in v9 drivers/clk/davinci/psc-dm355.c | 2 +- drivers/clk/davinci/psc-dm365.c | 2 +- drivers/clk/davinci/psc-dm644x.c | 2 +- drivers/clk/davinci/psc-dm646x.c | 2 +- drivers/clk/davinci/psc.c | 27 ++++++++++++++++++++------- include/linux/clk/davinci.h | 5 +++++ 6 files changed, 29 insertions(+), 11 deletions(-) diff --git a/drivers/clk/davinci/psc-dm355.c b/drivers/clk/davinci/psc-dm355.c index 6995ecea2677..001288dfdfb1 100644 --- a/drivers/clk/davinci/psc-dm355.c +++ b/drivers/clk/davinci/psc-dm355.c @@ -68,7 +68,7 @@ static const struct davinci_lpsc_clk_info dm355_psc_info[] = { { } }; -static int dm355_psc_init(struct device *dev, void __iomem *base) +int dm355_psc_init(struct device *dev, void __iomem *base) { return davinci_psc_register_clocks(dev, dm355_psc_info, 42, base); } diff --git a/drivers/clk/davinci/psc-dm365.c b/drivers/clk/davinci/psc-dm365.c index 3ad915f37376..5b5b55b0b59a 100644 --- a/drivers/clk/davinci/psc-dm365.c +++ b/drivers/clk/davinci/psc-dm365.c @@ -73,7 +73,7 @@ static const struct davinci_lpsc_clk_info dm365_psc_info[] = { { } }; -static int dm365_psc_init(struct device *dev, void __iomem *base) +int dm365_psc_init(struct device *dev, void __iomem *base) { return davinci_psc_register_clocks(dev, dm365_psc_info, 52, base); } diff --git a/drivers/clk/davinci/psc-dm644x.c b/drivers/clk/davinci/psc-dm644x.c index c22367baa46f..74668931be48 100644 --- a/drivers/clk/davinci/psc-dm644x.c +++ b/drivers/clk/davinci/psc-dm644x.c @@ -63,7 +63,7 @@ static const struct davinci_lpsc_clk_info dm644x_psc_info[] = { { } }; -static int dm644x_psc_init(struct device *dev, void __iomem *base) +int dm644x_psc_init(struct device *dev, void __iomem *base) { return davinci_psc_register_clocks(dev, dm644x_psc_info, 41, base); } diff --git a/drivers/clk/davinci/psc-dm646x.c b/drivers/clk/davinci/psc-dm646x.c index 468ef86ea40b..22473affa7cf 100644 --- a/drivers/clk/davinci/psc-dm646x.c +++ b/drivers/clk/davinci/psc-dm646x.c @@ -58,7 +58,7 @@ static const struct davinci_lpsc_clk_info dm646x_psc_info[] = { { } }; -static int dm646x_psc_init(struct device *dev, void __iomem *base) +int dm646x_psc_init(struct device *dev, void __iomem *base) { return davinci_psc_register_clocks(dev, dm646x_psc_info, 46, base); } diff --git a/drivers/clk/davinci/psc.c b/drivers/clk/davinci/psc.c index ce170e600f09..421f9f7906f4 100644 --- a/drivers/clk/davinci/psc.c +++ b/drivers/clk/davinci/psc.c @@ -15,6 +15,7 @@ #include <linux/clk-provider.h> #include <linux/clk.h> +#include <linux/clk/davinci.h> #include <linux/clkdev.h> #include <linux/err.h> #include <linux/of_address.h> @@ -63,7 +64,7 @@ struct davinci_psc_data { /** * struct davinci_lpsc_clk - LPSC clock structure - * @dev: the device that provides this LPSC + * @dev: the device that provides this LPSC or NULL * @hw: clk_hw for the LPSC * @pm_domain: power domain for the LPSC * @genpd_clk: clock reference owned by @pm_domain @@ -221,6 +222,7 @@ static void davinci_psc_genpd_detach_dev(struct generic_pm_domain *pm_domain, /** * davinci_lpsc_clk_register - register LPSC clock + * @dev: the clocks's device or NULL * @name: name of this clock * @parent_name: name of clock's parent * @regmap: PSC MMIO region @@ -238,7 +240,7 @@ davinci_lpsc_clk_register(struct device *dev, const char *name, int ret; bool is_on; - lpsc = devm_kzalloc(dev, sizeof(*lpsc), GFP_KERNEL); + lpsc = kzalloc(sizeof(*lpsc), GFP_KERNEL); if (!lpsc) return ERR_PTR(-ENOMEM); @@ -261,10 +263,14 @@ davinci_lpsc_clk_register(struct device *dev, const char *name, lpsc->pd = pd; lpsc->flags = flags; - ret = devm_clk_hw_register(dev, &lpsc->hw); + ret = clk_hw_register(dev, &lpsc->hw); if (ret < 0) return ERR_PTR(ret); + /* for now, genpd is only registered when using device-tree */ + if (!dev || !dev->of_node) + return lpsc; + /* genpd attach needs a way to look up this clock */ ret = clk_hw_register_clkdev(&lpsc->hw, name, best_dev_name(dev)); @@ -378,11 +384,11 @@ __davinci_psc_register_clocks(struct device *dev, struct regmap *regmap; int i, ret; - psc = devm_kzalloc(dev, sizeof(*psc), GFP_KERNEL); + psc = kzalloc(sizeof(*psc), GFP_KERNEL); if (!psc) return ERR_PTR(-ENOMEM); - clks = devm_kmalloc_array(dev, num_clks, sizeof(*clks), GFP_KERNEL); + clks = kmalloc_array(num_clks, sizeof(*clks), GFP_KERNEL); if (!clks) return ERR_PTR(-ENOMEM); @@ -396,14 +402,14 @@ __davinci_psc_register_clocks(struct device *dev, for (i = 0; i < num_clks; i++) clks[i] = ERR_PTR(-ENOENT); - pm_domains = devm_kcalloc(dev, num_clks, sizeof(*pm_domains), GFP_KERNEL); + pm_domains = kcalloc(num_clks, sizeof(*pm_domains), GFP_KERNEL); if (!pm_domains) return ERR_PTR(-ENOMEM); psc->pm_data.domains = pm_domains; psc->pm_data.num_domains = num_clks; - regmap = devm_regmap_init_mmio(dev, base, &davinci_psc_regmap_config); + regmap = regmap_init_mmio(dev, base, &davinci_psc_regmap_config); if (IS_ERR(regmap)) return ERR_CAST(regmap); @@ -423,6 +429,13 @@ __davinci_psc_register_clocks(struct device *dev, pm_domains[info->md] = &lpsc->pm_domain; } + /* + * for now, a reset controller is only registered when there is a device + * to associate it with. + */ + if (!dev) + return psc; + psc->rcdev.ops = &davinci_psc_reset_ops; psc->rcdev.owner = THIS_MODULE; psc->rcdev.dev = dev; diff --git a/include/linux/clk/davinci.h b/include/linux/clk/davinci.h index ebdd9df1c0ef..62764c5cc86e 100644 --- a/include/linux/clk/davinci.h +++ b/include/linux/clk/davinci.h @@ -21,4 +21,9 @@ int dm365_pll2_init(struct device *dev, void __iomem *base, struct regmap *cfgch int dm644x_pll1_init(struct device *dev, void __iomem *base, struct regmap *cfgchip); int dm646x_pll1_init(struct device *dev, void __iomem *base, struct regmap *cfgchip); +int dm355_psc_init(struct device *dev, void __iomem *base); +int dm365_psc_init(struct device *dev, void __iomem *base); +int dm644x_psc_init(struct device *dev, void __iomem *base); +int dm646x_psc_init(struct device *dev, void __iomem *base); + #endif /* __LINUX_CLK_DAVINCI_PLL_H___ */ -- 2.17.0
next prev parent reply other threads:[~2018-05-09 17:31 UTC|newest] Thread overview: 106+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-05-09 17:25 [PATCH v10 00/27] ARM: davinci: convert to common clock framework David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` [PATCH v10 01/27] clk: davinci: pll: allow dev == NULL David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` [PATCH v10 02/27] clk: davinci: da850-pll: change PLL0 to CLK_OF_DECLARE David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-15 13:31 ` Sekhar Nori 2018-05-15 13:31 ` Sekhar Nori 2018-05-15 13:31 ` Sekhar Nori 2018-05-15 15:42 ` David Lechner 2018-05-15 15:42 ` David Lechner 2018-05-16 5:51 ` Sekhar Nori 2018-05-16 5:51 ` Sekhar Nori 2018-05-16 5:51 ` Sekhar Nori 2018-05-09 17:25 ` David Lechner [this message] 2018-05-09 17:25 ` [PATCH v10 03/27] clk: davinci: psc: allow for dev == NULL David Lechner 2018-05-15 13:42 ` Sekhar Nori 2018-05-15 13:42 ` Sekhar Nori 2018-05-15 13:42 ` Sekhar Nori 2018-05-09 17:25 ` [PATCH v10 04/27] ARM: davinci: pass clock as parameter to davinci_timer_init() David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` [PATCH v10 05/27] ARM: davinci: da830: add new clock init using common clock framework David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` [PATCH v10 06/27] ARM: davinci: da850: " David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` [PATCH v10 07/27] ARM: davinci: dm355: " David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` [PATCH v10 08/27] ARM: davinci: dm365: " David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` [PATCH v10 09/27] ARM: davinci: dm644x: " David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` [PATCH v10 10/27] ARM: davinci: dm646x: " David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` [PATCH v10 11/27] ARM: davinci: da8xx: add new USB PHY " David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` [PATCH v10 12/27] ARM: davinci: da8xx: add new sata_refclk " David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` [PATCH v10 13/27] ARM: davinci: remove CONFIG_DAVINCI_RESET_CLOCKS David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` [PATCH v10 14/27] ARM: davinci_all_defconfig: " David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` [PATCH v10 15/27] ARM: davinci: switch to common clock framework David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` [PATCH v10 16/27] ARM: davinci: da830: Remove legacy clock init David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` [PATCH v10 17/27] ARM: davinci: da850: " David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` [PATCH v10 18/27] ARM: davinci: dm355: " David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` [PATCH v10 19/27] ARM: davinci: dm365: " David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:25 ` [PATCH v10 20/27] ARM: davinci: dm644x: " David Lechner 2018-05-09 17:25 ` David Lechner 2018-05-09 17:26 ` [PATCH v10 21/27] ARM: davinci: dm646x: " David Lechner 2018-05-09 17:26 ` David Lechner 2018-05-09 17:26 ` [PATCH v10 22/27] ARM: davinci: da8xx: Remove legacy USB and SATA " David Lechner 2018-05-09 17:26 ` David Lechner 2018-05-09 17:26 ` [PATCH v10 23/27] ARM: davinci: remove legacy clocks David Lechner 2018-05-09 17:26 ` David Lechner 2018-05-09 17:26 ` [PATCH v10 24/27] dt-bindings: timer: new bindings for TI DaVinci timer David Lechner 2018-05-09 17:26 ` David Lechner 2018-05-18 14:24 ` Rob Herring 2018-05-18 14:24 ` Rob Herring 2018-05-09 17:26 ` [PATCH v10 25/27] ARM: davinci: add device tree support to timer David Lechner 2018-05-09 17:26 ` David Lechner 2018-05-17 14:35 ` Sekhar Nori 2018-05-17 14:35 ` Sekhar Nori 2018-05-17 14:35 ` Sekhar Nori 2018-05-17 15:09 ` David Lechner 2018-05-17 15:09 ` David Lechner 2018-05-18 6:05 ` Sekhar Nori 2018-05-18 6:05 ` Sekhar Nori 2018-05-18 6:05 ` Sekhar Nori 2018-05-18 15:35 ` David Lechner 2018-05-18 15:35 ` David Lechner 2018-05-09 17:26 ` [PATCH v10 26/27] ARM: davinci: da8xx-dt: switch to device tree clocks David Lechner 2018-05-09 17:26 ` David Lechner 2018-05-09 17:26 ` [PATCH v10 27/27] ARM: dts: da850: Add clocks David Lechner 2018-05-09 17:26 ` David Lechner 2018-05-11 15:26 ` [PATCH v10 00/27] ARM: davinci: convert to common clock framework Sekhar Nori 2018-05-11 15:26 ` Sekhar Nori 2018-05-11 15:26 ` Sekhar Nori 2018-05-12 21:11 ` David Lechner 2018-05-12 21:11 ` David Lechner 2018-05-14 0:40 ` Adam Ford 2018-05-14 0:40 ` Adam Ford 2018-05-14 1:50 ` David Lechner 2018-05-14 1:50 ` David Lechner 2018-05-15 9:25 ` Bartosz Golaszewski 2018-05-15 9:25 ` Bartosz Golaszewski 2018-05-15 22:44 ` Adam Ford 2018-05-15 22:44 ` Adam Ford 2018-05-16 0:31 ` David Lechner 2018-05-16 0:31 ` David Lechner 2018-05-16 7:47 ` Bartosz Golaszewski 2018-05-16 7:47 ` Bartosz Golaszewski 2018-05-16 10:43 ` Sekhar Nori 2018-05-16 10:43 ` Sekhar Nori 2018-05-17 0:46 ` Adam Ford 2018-05-17 0:46 ` Adam Ford
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=20180509172606.29387-4-david@lechnology.com \ --to=david@lechnology.com \ --cc=aford173@gmail.com \ --cc=bgolaszewski@baylibre.com \ --cc=devicetree@vger.kernel.org \ --cc=khilman@kernel.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-clk@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=mark.rutland@arm.com \ --cc=mturquette@baylibre.com \ --cc=nsekhar@ti.com \ --cc=robh+dt@kernel.org \ --cc=sboyd@codeaurora.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.