diff for duplicates of <20160115103901.1b987f53@bbrezillon> diff --git a/a/1.txt b/N1/1.txt index dce1d84..0ee188d 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -4,35 +4,34 @@ On Thu, 14 Jan 2016 18:02:37 -0800 Stephen Boyd <sboyd@codeaurora.org> wrote: > On 12/04, Alexandre Belloni wrote: -> > @@ -686,3 +652,45 @@ static void __init of_at91sam9x5_clk_main_setup(st= -ruct device_node *np) +> > @@ -686,3 +652,45 @@ static void __init of_at91sam9x5_clk_main_setup(struct device_node *np) > > } > > CLK_OF_DECLARE(at91sam9x5_clk_main, "atmel,at91sam9x5-clk-main", > > of_at91sam9x5_clk_main_setup); > > + -> > +static const struct of_device_id atmel_clk_main_dt_ids[] =3D { -> > + { .compatible =3D "atmel,at91rm9200-clk-main-osc" }, -> > + { .compatible =3D "atmel,at91sam9x5-clk-main-rc-osc" }, -> > + { .compatible =3D "atmel,at91sam9x5-clk-main" }, +> > +static const struct of_device_id atmel_clk_main_dt_ids[] = { +> > + { .compatible = "atmel,at91rm9200-clk-main-osc" }, +> > + { .compatible = "atmel,at91sam9x5-clk-main-rc-osc" }, +> > + { .compatible = "atmel,at91sam9x5-clk-main" }, > > + { /* sentinel */ } > > +}; > > + > > +static int __init atmel_clk_main_probe(struct platform_device *pdev) > > +{ -> > + struct of_phandle_args clkspec =3D { .np =3D pdev->dev.of_node}; +> > + struct of_phandle_args clkspec = { .np = pdev->dev.of_node}; > > + struct clk_main *clkmain; > > + struct clk_hw *hw; > > + int ret; > > + -> > + hw =3D __clk_get_hw(of_clk_get_from_provider(&clkspec)); +> > + hw = __clk_get_hw(of_clk_get_from_provider(&clkspec)); > > + if (!hw) > > + return -ENODEV; > > + -> > + clkmain =3D to_clk_main(hw); -> > + clkmain->irq =3D platform_get_irq(pdev, 0); +> > + clkmain = to_clk_main(hw); +> > + clkmain->irq = platform_get_irq(pdev, 0); > > + if (!clkmain->irq) > > + return 0; ->=20 +> > Is there any way to get the irq into this probe function without > getting a clk pointer and then unwrapping it to get an irq > value out of the clk_hw wrapper structure? That's a pretty @@ -52,16 +51,15 @@ Maybe we could create an of_clk_hw_get_from_provider(), which would prevent the creation of this useless per-user clk instance (see the patch below). ->=20 +> > > + > > + init_waitqueue_head(&clkmain->wait); > > + irq_set_status_flags(clkmain->irq, IRQ_NOAUTOEN); -> > + ret =3D devm_request_irq(&pdev->dev, clkmain->irq, clk_main_irq_handl= -er, +> > + ret = devm_request_irq(&pdev->dev, clkmain->irq, clk_main_irq_handler, > > + IRQF_TRIGGER_HIGH, __clk_get_name(hw->clk), > > + clkmain); > > + if (ret) -> > + clkmain->irq =3D 0; +> > + clkmain->irq = 0; > > + You should probably call clk_put() on the pointer returned by @@ -70,14 +68,14 @@ of_clk_get_from_provider(&clkspec). > > + return ret; > > +} > > + ->=20 +> Best Regards, Boris --- >8 --- -=46rom a83670d29504e256bdc97c04f0dfd96a7d6842bf Mon Sep 17 00:00:00 2001 +>From a83670d29504e256bdc97c04f0dfd96a7d6842bf Mon Sep 17 00:00:00 2001 From: Boris Brezillon <boris.brezillon@free-electrons.com> Date: Fri, 15 Jan 2016 10:36:23 +0100 Subject: [PATCH] clk: add a function to retrieve a clk_hw instance from a @@ -101,10 +99,9 @@ index f13c3f4..fbef1b7 100644 @@ -3001,6 +3001,42 @@ void of_clk_del_provider(struct device_node *np) } EXPORT_SYMBOL_GPL(of_clk_del_provider); -=20 + +/** -+ * of_clk_hw_get_from_provider() - Look for a clk_hw instance registered w= -ith ++ * of_clk_hw_get_from_provider() - Look for a clk_hw instance registered with + * the given clkspec definition. + * @clkspec: pointer to a clock specifier data structure + * @@ -114,7 +111,7 @@ ith + */ +struct clk_hw *of_clk_hw_get_from_provider(struct of_phandle_args *clkspec) +{ -+ struct clk_hw *clk_hw =3D ERR_PTR(-EPROBE_DEFER); ++ struct clk_hw *clk_hw = ERR_PTR(-EPROBE_DEFER); + struct of_clk_provider *provider; + + if (!clkspec) @@ -123,13 +120,13 @@ ith + /* Check if we have such a provider in our array */ + mutex_lock(&of_clk_mutex); + list_for_each_entry(provider, &of_clk_providers, link) { -+ struct clk *clk =3D ERR_PTR(-EPROBE_DEFER); ++ struct clk *clk = ERR_PTR(-EPROBE_DEFER); + -+ if (provider->node =3D=3D clkspec->np) -+ clk =3D provider->get(clkspec, provider->data); ++ if (provider->node == clkspec->np) ++ clk = provider->get(clkspec, provider->data); + + if (!IS_ERR(clk)) { -+ clk_hw =3D __clk_get_hw(clk); ++ clk_hw = __clk_get_hw(clk); + break; + } + } @@ -146,13 +143,11 @@ diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h index c56988a..bb62517 100644 --- a/include/linux/clk-provider.h +++ b/include/linux/clk-provider.h -@@ -645,6 +645,7 @@ void devm_clk_unregister(struct device *dev, struct clk= - *clk); +@@ -645,6 +645,7 @@ void devm_clk_unregister(struct device *dev, struct clk *clk); const char *__clk_get_name(const struct clk *clk); const char *clk_hw_get_name(const struct clk_hw *hw); struct clk_hw *__clk_get_hw(struct clk *clk); -+struct clk_hw *of_clk_hw_get_from_provider(struct of_phandle_args *clkspec= -); ++struct clk_hw *of_clk_hw_get_from_provider(struct of_phandle_args *clkspec); unsigned int clk_hw_get_num_parents(const struct clk_hw *hw); struct clk_hw *clk_hw_get_parent(const struct clk_hw *hw); struct clk_hw *clk_hw_get_parent_by_index(const struct clk_hw *hw, diff --git a/a/content_digest b/N1/content_digest index e28ac96..36b0dbb 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -1,17 +1,10 @@ "ref\01449248628-3486-1-git-send-email-alexandre.belloni@free-electrons.com\0" "ref\01449248628-3486-5-git-send-email-alexandre.belloni@free-electrons.com\0" "ref\020160115020237.GJ22188@codeaurora.org\0" - "From\0Boris Brezillon <boris.brezillon@free-electrons.com>\0" - "Subject\0Re: [PATCH v3 04/13] clk: at91: make IRQ optional and register them later\0" + "From\0boris.brezillon@free-electrons.com (Boris Brezillon)\0" + "Subject\0[PATCH v3 04/13] clk: at91: make IRQ optional and register them later\0" "Date\0Fri, 15 Jan 2016 10:39:01 +0100\0" - "To\0Stephen Boyd <sboyd@codeaurora.org>\0" - "Cc\0Alexandre Belloni <alexandre.belloni@free-electrons.com>" - Nicolas Ferre <nicolas.ferre@atmel.com> - Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com> - Michael Turquette <mturquette@baylibre.com> - linux-kernel@vger.kernel.org - linux-arm-kernel@lists.infradead.org - " linux-clk@vger.kernel.org\0" + "To\0linux-arm-kernel@lists.infradead.org\0" "\00:1\0" "b\0" "Hi Stephen,\n" @@ -20,35 +13,34 @@ "Stephen Boyd <sboyd@codeaurora.org> wrote:\n" "\n" "> On 12/04, Alexandre Belloni wrote:\n" - "> > @@ -686,3 +652,45 @@ static void __init of_at91sam9x5_clk_main_setup(st=\n" - "ruct device_node *np)\n" + "> > @@ -686,3 +652,45 @@ static void __init of_at91sam9x5_clk_main_setup(struct device_node *np)\n" "> > }\n" "> > CLK_OF_DECLARE(at91sam9x5_clk_main, \"atmel,at91sam9x5-clk-main\",\n" "> > \t of_at91sam9x5_clk_main_setup);\n" "> > +\n" - "> > +static const struct of_device_id atmel_clk_main_dt_ids[] =3D {\n" - "> > +\t{ .compatible =3D \"atmel,at91rm9200-clk-main-osc\" },\n" - "> > +\t{ .compatible =3D \"atmel,at91sam9x5-clk-main-rc-osc\" },\n" - "> > +\t{ .compatible =3D \"atmel,at91sam9x5-clk-main\" },\n" + "> > +static const struct of_device_id atmel_clk_main_dt_ids[] = {\n" + "> > +\t{ .compatible = \"atmel,at91rm9200-clk-main-osc\" },\n" + "> > +\t{ .compatible = \"atmel,at91sam9x5-clk-main-rc-osc\" },\n" + "> > +\t{ .compatible = \"atmel,at91sam9x5-clk-main\" },\n" "> > +\t{ /* sentinel */ }\n" "> > +};\n" "> > +\n" "> > +static int __init atmel_clk_main_probe(struct platform_device *pdev)\n" "> > +{\n" - "> > +\tstruct of_phandle_args clkspec =3D { .np =3D pdev->dev.of_node};\n" + "> > +\tstruct of_phandle_args clkspec = { .np = pdev->dev.of_node};\n" "> > +\tstruct clk_main *clkmain;\n" "> > +\tstruct clk_hw *hw;\n" "> > +\tint ret;\n" "> > +\n" - "> > +\thw =3D __clk_get_hw(of_clk_get_from_provider(&clkspec));\n" + "> > +\thw = __clk_get_hw(of_clk_get_from_provider(&clkspec));\n" "> > +\tif (!hw)\n" "> > +\t\treturn -ENODEV;\n" "> > +\n" - "> > +\tclkmain =3D to_clk_main(hw);\n" - "> > +\tclkmain->irq =3D platform_get_irq(pdev, 0);\n" + "> > +\tclkmain = to_clk_main(hw);\n" + "> > +\tclkmain->irq = platform_get_irq(pdev, 0);\n" "> > +\tif (!clkmain->irq)\n" "> > +\t\treturn 0;\n" - ">=20\n" + "> \n" "> Is there any way to get the irq into this probe function without\n" "> getting a clk pointer and then unwrapping it to get an irq\n" "> value out of the clk_hw wrapper structure? That's a pretty\n" @@ -68,16 +60,15 @@ "prevent the creation of this useless per-user clk instance (see the patch\n" "below).\n" "\n" - ">=20\n" + "> \n" "> > +\n" "> > +\tinit_waitqueue_head(&clkmain->wait);\n" "> > +\tirq_set_status_flags(clkmain->irq, IRQ_NOAUTOEN);\n" - "> > +\tret =3D devm_request_irq(&pdev->dev, clkmain->irq, clk_main_irq_handl=\n" - "er,\n" + "> > +\tret = devm_request_irq(&pdev->dev, clkmain->irq, clk_main_irq_handler,\n" "> > +\t\t\t IRQF_TRIGGER_HIGH, __clk_get_name(hw->clk),\n" "> > +\t\t\t clkmain);\n" "> > +\tif (ret)\n" - "> > +\t\tclkmain->irq =3D 0;\n" + "> > +\t\tclkmain->irq = 0;\n" "> > +\n" "\n" "You should probably call clk_put() on the pointer returned by\n" @@ -86,14 +77,14 @@ "> > +\treturn ret;\n" "> > +}\n" "> > +\n" - ">=20\n" + "> \n" "\n" "Best Regards,\n" "\n" "Boris\n" "\n" "--- >8 ---\n" - "=46rom a83670d29504e256bdc97c04f0dfd96a7d6842bf Mon Sep 17 00:00:00 2001\n" + ">From a83670d29504e256bdc97c04f0dfd96a7d6842bf Mon Sep 17 00:00:00 2001\n" "From: Boris Brezillon <boris.brezillon@free-electrons.com>\n" "Date: Fri, 15 Jan 2016 10:36:23 +0100\n" "Subject: [PATCH] clk: add a function to retrieve a clk_hw instance from a\n" @@ -117,10 +108,9 @@ "@@ -3001,6 +3001,42 @@ void of_clk_del_provider(struct device_node *np)\n" " }\n" " EXPORT_SYMBOL_GPL(of_clk_del_provider);\n" - "=20\n" + " \n" "+/**\n" - "+ * of_clk_hw_get_from_provider() - Look for a clk_hw instance registered w=\n" - "ith\n" + "+ * of_clk_hw_get_from_provider() - Look for a clk_hw instance registered with\n" "+ *\t\t\t\t the given clkspec definition.\n" "+ * @clkspec: pointer to a clock specifier data structure\n" "+ *\n" @@ -130,7 +120,7 @@ "+ */\n" "+struct clk_hw *of_clk_hw_get_from_provider(struct of_phandle_args *clkspec)\n" "+{\n" - "+\tstruct clk_hw *clk_hw =3D ERR_PTR(-EPROBE_DEFER);\n" + "+\tstruct clk_hw *clk_hw = ERR_PTR(-EPROBE_DEFER);\n" "+\tstruct of_clk_provider *provider;\n" "+\n" "+\tif (!clkspec)\n" @@ -139,13 +129,13 @@ "+\t/* Check if we have such a provider in our array */\n" "+\tmutex_lock(&of_clk_mutex);\n" "+\tlist_for_each_entry(provider, &of_clk_providers, link) {\n" - "+\t\tstruct clk *clk =3D ERR_PTR(-EPROBE_DEFER);\n" + "+\t\tstruct clk *clk = ERR_PTR(-EPROBE_DEFER);\n" "+\n" - "+\t\tif (provider->node =3D=3D clkspec->np)\n" - "+\t\t\tclk =3D provider->get(clkspec, provider->data);\n" + "+\t\tif (provider->node == clkspec->np)\n" + "+\t\t\tclk = provider->get(clkspec, provider->data);\n" "+\n" "+\t\tif (!IS_ERR(clk)) {\n" - "+\t\t\tclk_hw =3D __clk_get_hw(clk);\n" + "+\t\t\tclk_hw = __clk_get_hw(clk);\n" "+\t\t\tbreak;\n" "+\t\t}\n" "+\t}\n" @@ -162,15 +152,13 @@ "index c56988a..bb62517 100644\n" "--- a/include/linux/clk-provider.h\n" "+++ b/include/linux/clk-provider.h\n" - "@@ -645,6 +645,7 @@ void devm_clk_unregister(struct device *dev, struct clk=\n" - " *clk);\n" + "@@ -645,6 +645,7 @@ void devm_clk_unregister(struct device *dev, struct clk *clk);\n" " const char *__clk_get_name(const struct clk *clk);\n" " const char *clk_hw_get_name(const struct clk_hw *hw);\n" " struct clk_hw *__clk_get_hw(struct clk *clk);\n" - "+struct clk_hw *of_clk_hw_get_from_provider(struct of_phandle_args *clkspec=\n" - ");\n" + "+struct clk_hw *of_clk_hw_get_from_provider(struct of_phandle_args *clkspec);\n" " unsigned int clk_hw_get_num_parents(const struct clk_hw *hw);\n" " struct clk_hw *clk_hw_get_parent(const struct clk_hw *hw);\n" struct clk_hw *clk_hw_get_parent_by_index(const struct clk_hw *hw, -5e267f173edd570a81b7a0348015eef6216e0ae4be41ffa1bdecbec9eb911d2e +06acb30cb4f49d0581c50aa3d052ee41d544cbdfe582087a099f28d3afb2ddca
diff --git a/a/1.txt b/N2/1.txt index dce1d84..0ee188d 100644 --- a/a/1.txt +++ b/N2/1.txt @@ -4,35 +4,34 @@ On Thu, 14 Jan 2016 18:02:37 -0800 Stephen Boyd <sboyd@codeaurora.org> wrote: > On 12/04, Alexandre Belloni wrote: -> > @@ -686,3 +652,45 @@ static void __init of_at91sam9x5_clk_main_setup(st= -ruct device_node *np) +> > @@ -686,3 +652,45 @@ static void __init of_at91sam9x5_clk_main_setup(struct device_node *np) > > } > > CLK_OF_DECLARE(at91sam9x5_clk_main, "atmel,at91sam9x5-clk-main", > > of_at91sam9x5_clk_main_setup); > > + -> > +static const struct of_device_id atmel_clk_main_dt_ids[] =3D { -> > + { .compatible =3D "atmel,at91rm9200-clk-main-osc" }, -> > + { .compatible =3D "atmel,at91sam9x5-clk-main-rc-osc" }, -> > + { .compatible =3D "atmel,at91sam9x5-clk-main" }, +> > +static const struct of_device_id atmel_clk_main_dt_ids[] = { +> > + { .compatible = "atmel,at91rm9200-clk-main-osc" }, +> > + { .compatible = "atmel,at91sam9x5-clk-main-rc-osc" }, +> > + { .compatible = "atmel,at91sam9x5-clk-main" }, > > + { /* sentinel */ } > > +}; > > + > > +static int __init atmel_clk_main_probe(struct platform_device *pdev) > > +{ -> > + struct of_phandle_args clkspec =3D { .np =3D pdev->dev.of_node}; +> > + struct of_phandle_args clkspec = { .np = pdev->dev.of_node}; > > + struct clk_main *clkmain; > > + struct clk_hw *hw; > > + int ret; > > + -> > + hw =3D __clk_get_hw(of_clk_get_from_provider(&clkspec)); +> > + hw = __clk_get_hw(of_clk_get_from_provider(&clkspec)); > > + if (!hw) > > + return -ENODEV; > > + -> > + clkmain =3D to_clk_main(hw); -> > + clkmain->irq =3D platform_get_irq(pdev, 0); +> > + clkmain = to_clk_main(hw); +> > + clkmain->irq = platform_get_irq(pdev, 0); > > + if (!clkmain->irq) > > + return 0; ->=20 +> > Is there any way to get the irq into this probe function without > getting a clk pointer and then unwrapping it to get an irq > value out of the clk_hw wrapper structure? That's a pretty @@ -52,16 +51,15 @@ Maybe we could create an of_clk_hw_get_from_provider(), which would prevent the creation of this useless per-user clk instance (see the patch below). ->=20 +> > > + > > + init_waitqueue_head(&clkmain->wait); > > + irq_set_status_flags(clkmain->irq, IRQ_NOAUTOEN); -> > + ret =3D devm_request_irq(&pdev->dev, clkmain->irq, clk_main_irq_handl= -er, +> > + ret = devm_request_irq(&pdev->dev, clkmain->irq, clk_main_irq_handler, > > + IRQF_TRIGGER_HIGH, __clk_get_name(hw->clk), > > + clkmain); > > + if (ret) -> > + clkmain->irq =3D 0; +> > + clkmain->irq = 0; > > + You should probably call clk_put() on the pointer returned by @@ -70,14 +68,14 @@ of_clk_get_from_provider(&clkspec). > > + return ret; > > +} > > + ->=20 +> Best Regards, Boris --- >8 --- -=46rom a83670d29504e256bdc97c04f0dfd96a7d6842bf Mon Sep 17 00:00:00 2001 +>From a83670d29504e256bdc97c04f0dfd96a7d6842bf Mon Sep 17 00:00:00 2001 From: Boris Brezillon <boris.brezillon@free-electrons.com> Date: Fri, 15 Jan 2016 10:36:23 +0100 Subject: [PATCH] clk: add a function to retrieve a clk_hw instance from a @@ -101,10 +99,9 @@ index f13c3f4..fbef1b7 100644 @@ -3001,6 +3001,42 @@ void of_clk_del_provider(struct device_node *np) } EXPORT_SYMBOL_GPL(of_clk_del_provider); -=20 + +/** -+ * of_clk_hw_get_from_provider() - Look for a clk_hw instance registered w= -ith ++ * of_clk_hw_get_from_provider() - Look for a clk_hw instance registered with + * the given clkspec definition. + * @clkspec: pointer to a clock specifier data structure + * @@ -114,7 +111,7 @@ ith + */ +struct clk_hw *of_clk_hw_get_from_provider(struct of_phandle_args *clkspec) +{ -+ struct clk_hw *clk_hw =3D ERR_PTR(-EPROBE_DEFER); ++ struct clk_hw *clk_hw = ERR_PTR(-EPROBE_DEFER); + struct of_clk_provider *provider; + + if (!clkspec) @@ -123,13 +120,13 @@ ith + /* Check if we have such a provider in our array */ + mutex_lock(&of_clk_mutex); + list_for_each_entry(provider, &of_clk_providers, link) { -+ struct clk *clk =3D ERR_PTR(-EPROBE_DEFER); ++ struct clk *clk = ERR_PTR(-EPROBE_DEFER); + -+ if (provider->node =3D=3D clkspec->np) -+ clk =3D provider->get(clkspec, provider->data); ++ if (provider->node == clkspec->np) ++ clk = provider->get(clkspec, provider->data); + + if (!IS_ERR(clk)) { -+ clk_hw =3D __clk_get_hw(clk); ++ clk_hw = __clk_get_hw(clk); + break; + } + } @@ -146,13 +143,11 @@ diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h index c56988a..bb62517 100644 --- a/include/linux/clk-provider.h +++ b/include/linux/clk-provider.h -@@ -645,6 +645,7 @@ void devm_clk_unregister(struct device *dev, struct clk= - *clk); +@@ -645,6 +645,7 @@ void devm_clk_unregister(struct device *dev, struct clk *clk); const char *__clk_get_name(const struct clk *clk); const char *clk_hw_get_name(const struct clk_hw *hw); struct clk_hw *__clk_get_hw(struct clk *clk); -+struct clk_hw *of_clk_hw_get_from_provider(struct of_phandle_args *clkspec= -); ++struct clk_hw *of_clk_hw_get_from_provider(struct of_phandle_args *clkspec); unsigned int clk_hw_get_num_parents(const struct clk_hw *hw); struct clk_hw *clk_hw_get_parent(const struct clk_hw *hw); struct clk_hw *clk_hw_get_parent_by_index(const struct clk_hw *hw, diff --git a/a/content_digest b/N2/content_digest index e28ac96..0561719 100644 --- a/a/content_digest +++ b/N2/content_digest @@ -20,35 +20,34 @@ "Stephen Boyd <sboyd@codeaurora.org> wrote:\n" "\n" "> On 12/04, Alexandre Belloni wrote:\n" - "> > @@ -686,3 +652,45 @@ static void __init of_at91sam9x5_clk_main_setup(st=\n" - "ruct device_node *np)\n" + "> > @@ -686,3 +652,45 @@ static void __init of_at91sam9x5_clk_main_setup(struct device_node *np)\n" "> > }\n" "> > CLK_OF_DECLARE(at91sam9x5_clk_main, \"atmel,at91sam9x5-clk-main\",\n" "> > \t of_at91sam9x5_clk_main_setup);\n" "> > +\n" - "> > +static const struct of_device_id atmel_clk_main_dt_ids[] =3D {\n" - "> > +\t{ .compatible =3D \"atmel,at91rm9200-clk-main-osc\" },\n" - "> > +\t{ .compatible =3D \"atmel,at91sam9x5-clk-main-rc-osc\" },\n" - "> > +\t{ .compatible =3D \"atmel,at91sam9x5-clk-main\" },\n" + "> > +static const struct of_device_id atmel_clk_main_dt_ids[] = {\n" + "> > +\t{ .compatible = \"atmel,at91rm9200-clk-main-osc\" },\n" + "> > +\t{ .compatible = \"atmel,at91sam9x5-clk-main-rc-osc\" },\n" + "> > +\t{ .compatible = \"atmel,at91sam9x5-clk-main\" },\n" "> > +\t{ /* sentinel */ }\n" "> > +};\n" "> > +\n" "> > +static int __init atmel_clk_main_probe(struct platform_device *pdev)\n" "> > +{\n" - "> > +\tstruct of_phandle_args clkspec =3D { .np =3D pdev->dev.of_node};\n" + "> > +\tstruct of_phandle_args clkspec = { .np = pdev->dev.of_node};\n" "> > +\tstruct clk_main *clkmain;\n" "> > +\tstruct clk_hw *hw;\n" "> > +\tint ret;\n" "> > +\n" - "> > +\thw =3D __clk_get_hw(of_clk_get_from_provider(&clkspec));\n" + "> > +\thw = __clk_get_hw(of_clk_get_from_provider(&clkspec));\n" "> > +\tif (!hw)\n" "> > +\t\treturn -ENODEV;\n" "> > +\n" - "> > +\tclkmain =3D to_clk_main(hw);\n" - "> > +\tclkmain->irq =3D platform_get_irq(pdev, 0);\n" + "> > +\tclkmain = to_clk_main(hw);\n" + "> > +\tclkmain->irq = platform_get_irq(pdev, 0);\n" "> > +\tif (!clkmain->irq)\n" "> > +\t\treturn 0;\n" - ">=20\n" + "> \n" "> Is there any way to get the irq into this probe function without\n" "> getting a clk pointer and then unwrapping it to get an irq\n" "> value out of the clk_hw wrapper structure? That's a pretty\n" @@ -68,16 +67,15 @@ "prevent the creation of this useless per-user clk instance (see the patch\n" "below).\n" "\n" - ">=20\n" + "> \n" "> > +\n" "> > +\tinit_waitqueue_head(&clkmain->wait);\n" "> > +\tirq_set_status_flags(clkmain->irq, IRQ_NOAUTOEN);\n" - "> > +\tret =3D devm_request_irq(&pdev->dev, clkmain->irq, clk_main_irq_handl=\n" - "er,\n" + "> > +\tret = devm_request_irq(&pdev->dev, clkmain->irq, clk_main_irq_handler,\n" "> > +\t\t\t IRQF_TRIGGER_HIGH, __clk_get_name(hw->clk),\n" "> > +\t\t\t clkmain);\n" "> > +\tif (ret)\n" - "> > +\t\tclkmain->irq =3D 0;\n" + "> > +\t\tclkmain->irq = 0;\n" "> > +\n" "\n" "You should probably call clk_put() on the pointer returned by\n" @@ -86,14 +84,14 @@ "> > +\treturn ret;\n" "> > +}\n" "> > +\n" - ">=20\n" + "> \n" "\n" "Best Regards,\n" "\n" "Boris\n" "\n" "--- >8 ---\n" - "=46rom a83670d29504e256bdc97c04f0dfd96a7d6842bf Mon Sep 17 00:00:00 2001\n" + ">From a83670d29504e256bdc97c04f0dfd96a7d6842bf Mon Sep 17 00:00:00 2001\n" "From: Boris Brezillon <boris.brezillon@free-electrons.com>\n" "Date: Fri, 15 Jan 2016 10:36:23 +0100\n" "Subject: [PATCH] clk: add a function to retrieve a clk_hw instance from a\n" @@ -117,10 +115,9 @@ "@@ -3001,6 +3001,42 @@ void of_clk_del_provider(struct device_node *np)\n" " }\n" " EXPORT_SYMBOL_GPL(of_clk_del_provider);\n" - "=20\n" + " \n" "+/**\n" - "+ * of_clk_hw_get_from_provider() - Look for a clk_hw instance registered w=\n" - "ith\n" + "+ * of_clk_hw_get_from_provider() - Look for a clk_hw instance registered with\n" "+ *\t\t\t\t the given clkspec definition.\n" "+ * @clkspec: pointer to a clock specifier data structure\n" "+ *\n" @@ -130,7 +127,7 @@ "+ */\n" "+struct clk_hw *of_clk_hw_get_from_provider(struct of_phandle_args *clkspec)\n" "+{\n" - "+\tstruct clk_hw *clk_hw =3D ERR_PTR(-EPROBE_DEFER);\n" + "+\tstruct clk_hw *clk_hw = ERR_PTR(-EPROBE_DEFER);\n" "+\tstruct of_clk_provider *provider;\n" "+\n" "+\tif (!clkspec)\n" @@ -139,13 +136,13 @@ "+\t/* Check if we have such a provider in our array */\n" "+\tmutex_lock(&of_clk_mutex);\n" "+\tlist_for_each_entry(provider, &of_clk_providers, link) {\n" - "+\t\tstruct clk *clk =3D ERR_PTR(-EPROBE_DEFER);\n" + "+\t\tstruct clk *clk = ERR_PTR(-EPROBE_DEFER);\n" "+\n" - "+\t\tif (provider->node =3D=3D clkspec->np)\n" - "+\t\t\tclk =3D provider->get(clkspec, provider->data);\n" + "+\t\tif (provider->node == clkspec->np)\n" + "+\t\t\tclk = provider->get(clkspec, provider->data);\n" "+\n" "+\t\tif (!IS_ERR(clk)) {\n" - "+\t\t\tclk_hw =3D __clk_get_hw(clk);\n" + "+\t\t\tclk_hw = __clk_get_hw(clk);\n" "+\t\t\tbreak;\n" "+\t\t}\n" "+\t}\n" @@ -162,15 +159,13 @@ "index c56988a..bb62517 100644\n" "--- a/include/linux/clk-provider.h\n" "+++ b/include/linux/clk-provider.h\n" - "@@ -645,6 +645,7 @@ void devm_clk_unregister(struct device *dev, struct clk=\n" - " *clk);\n" + "@@ -645,6 +645,7 @@ void devm_clk_unregister(struct device *dev, struct clk *clk);\n" " const char *__clk_get_name(const struct clk *clk);\n" " const char *clk_hw_get_name(const struct clk_hw *hw);\n" " struct clk_hw *__clk_get_hw(struct clk *clk);\n" - "+struct clk_hw *of_clk_hw_get_from_provider(struct of_phandle_args *clkspec=\n" - ");\n" + "+struct clk_hw *of_clk_hw_get_from_provider(struct of_phandle_args *clkspec);\n" " unsigned int clk_hw_get_num_parents(const struct clk_hw *hw);\n" " struct clk_hw *clk_hw_get_parent(const struct clk_hw *hw);\n" struct clk_hw *clk_hw_get_parent_by_index(const struct clk_hw *hw, -5e267f173edd570a81b7a0348015eef6216e0ae4be41ffa1bdecbec9eb911d2e +0cfcf17862cd1b6c8066b88504bb89f5e4dee5e2f7575c0b65dce835309ccb1f
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.