diff for duplicates of <20140929080637.GB12506@ulmo> diff --git a/a/1.1.hdr b/a/1.1.hdr deleted file mode 100644 index 5a32186..0000000 --- a/a/1.1.hdr +++ /dev/null @@ -1,3 +0,0 @@ -Content-Type: text/plain; charset=us-ascii -Content-Disposition: inline -Content-Transfer-Encoding: quoted-printable diff --git a/a/1.2.hdr b/a/1.2.hdr deleted file mode 100644 index 5c68b95..0000000 --- a/a/1.2.hdr +++ /dev/null @@ -1,3 +0,0 @@ -Content-Type: text/x-diff; charset=us-ascii -Content-Disposition: inline; filename="0001-clk-Allow-drivers-to-reference-unused-clocks.patch" -Content-Transfer-Encoding: quoted-printable diff --git a/a/1.2.txt b/a/1.2.txt deleted file mode 100644 index bc10e06..0000000 --- a/a/1.2.txt +++ /dev/null @@ -1,166 +0,0 @@ -From 5e2521feab41b71fc80b1b41d4eb6ec967919eed Mon Sep 17 00:00:00 2001 -From: Thierry Reding <treding@nvidia.com> -Date: Mon, 29 Sep 2014 08:10:49 +0200 -Subject: [PATCH] clk: Allow drivers to reference unused clocks - -Some drivers are designed to take over a virtual device set up at boot -time by firmware. This can be useful for early boot output on a display -device when no debug serial console is available or for transitioning -from firmware to the Linux kernel in a seemless way. - -This type of driver relies on firmware to have set up hardware in a way -that it can scan out a framebuffer using the display hardware. Some of -the resources used by the display hardware (clocks, power supplies, ...) -will typically be turned off (at late_initcall time) by the respective -Linux kernel subsystems unless explicitly claimed by some hardware- -specific driver. However, if this driver is built as a module (loaded -from a filesystem) or defer probing, they will not claim the resources -until long after late_initcall time. This doesn't allow for a seemless -transition. - -It can also happen that the hardware-specific driver is never loaded. It -may be that no such driver exists, or it fails to load. Users may even -decide not to load it on purpose, perhaps because it is buggy. Instead -of turning the display off in such cases, a better option is to keep -running with the existing framebuffer, which may also be helpful in -diagnosing why the real driver wasn't loaded. - -This patch provides a way for drivers that make use of clocks set up by -firmware to prevent clocks from being automatically disabled. Similarly -a way is provided to signal that they no longer need the clocks (when -the hardware-specific driver has taken over for example). - -Signed-off-by: Thierry Reding <treding@nvidia.com> ---- - drivers/clk/clk.c | 58 +++++++++++++++++++++++++++++++++++------------------ - include/linux/clk.h | 26 ++++++++++++++++++++++++ - 2 files changed, 65 insertions(+), 19 deletions(-) - -diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c -index 52d58279a612..2007f10e244c 100644 ---- a/drivers/clk/clk.c -+++ b/drivers/clk/clk.c -@@ -486,38 +486,58 @@ out: - return; - } - --static bool clk_ignore_unused; --static int __init clk_ignore_unused_setup(char *__unused) -+static unsigned long clk_ignore_unused_count = 1; -+ -+void clk_ignore_unused(void) - { -- clk_ignore_unused = true; -- return 1; -+ clk_prepare_lock(); -+ -+ if (clk_ignore_unused_count == 0) -+ pr_warn("clk: unused clocks already disabled\n"); -+ else -+ clk_ignore_unused_count++; -+ -+ clk_prepare_unlock(); - } --__setup("clk_ignore_unused", clk_ignore_unused_setup); - --static int clk_disable_unused(void) -+void clk_unignore_unused(void) - { - struct clk *clk; - -- if (clk_ignore_unused) { -- pr_warn("clk: Not disabling unused clocks\n"); -- return 0; -- } -- - clk_prepare_lock(); - -- hlist_for_each_entry(clk, &clk_root_list, child_node) -- clk_disable_unused_subtree(clk); -+ if (--clk_ignore_unused_count == 0) { -+ hlist_for_each_entry(clk, &clk_root_list, child_node) -+ clk_disable_unused_subtree(clk); - -- hlist_for_each_entry(clk, &clk_orphan_list, child_node) -- clk_disable_unused_subtree(clk); -+ hlist_for_each_entry(clk, &clk_orphan_list, child_node) -+ clk_disable_unused_subtree(clk); - -- hlist_for_each_entry(clk, &clk_root_list, child_node) -- clk_unprepare_unused_subtree(clk); -+ hlist_for_each_entry(clk, &clk_root_list, child_node) -+ clk_unprepare_unused_subtree(clk); - -- hlist_for_each_entry(clk, &clk_orphan_list, child_node) -- clk_unprepare_unused_subtree(clk); -+ hlist_for_each_entry(clk, &clk_orphan_list, child_node) -+ clk_unprepare_unused_subtree(clk); -+ } - - clk_prepare_unlock(); -+} -+ -+static int __init clk_ignore_unused_setup(char *__unused) -+{ -+ clk_ignore_unused(); -+ return 1; -+} -+__setup("clk_ignore_unused", clk_ignore_unused_setup); -+ -+static int clk_disable_unused(void) -+{ -+ clk_unignore_unused(); -+ -+ if (clk_ignore_unused_count > 0) { -+ pr_warn("clk: Not disabling unused clocks\n"); -+ return 0; -+ } - - return 0; - } -diff --git a/include/linux/clk.h b/include/linux/clk.h -index afb44bfaf8d1..b587f2b2f2f5 100644 ---- a/include/linux/clk.h -+++ b/include/linux/clk.h -@@ -106,6 +106,24 @@ int clk_notifier_unregister(struct clk *clk, struct notifier_block *nb); - */ - long clk_get_accuracy(struct clk *clk); - -+/** -+ * clk_ignore_unused - request that unused clocks be kept running -+ * -+ * This function can be used by drivers to request that unused clocks are kept -+ * running. It is useful for drivers that take over hardware previously set up -+ * by firmware and which may not explicitly claim all clocks. -+ */ -+void clk_ignore_unused(void); -+ -+/** -+ * clk_unignore_unused - release unused clocks -+ * -+ * Use this function to undo the effects of clk_ignore_unused(). It is meant -+ * to be called by drivers for firmware devices after they've handed off the -+ * device to a proper hardware-specific driver. -+ */ -+void clk_unignore_unused(void); -+ - #else - - static inline long clk_get_accuracy(struct clk *clk) -@@ -113,6 +131,14 @@ static inline long clk_get_accuracy(struct clk *clk) - return -ENOTSUPP; - } - -+static inline void clk_ignore_unused(void) -+{ -+} -+ -+static inline void clk_unignore_unused(void) -+{ -+} -+ - #endif - - /** --- -2.1.0 diff --git a/a/1.1.txt b/N1/1.txt similarity index 91% rename from a/1.1.txt rename to N1/1.txt index a581cde..1ce8375 100644 --- a/a/1.1.txt +++ b/N1/1.txt @@ -131,3 +131,17 @@ single driver if necessary. Similar functionality could be added for other resource subsystems as needed. Thierry +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: 0001-clk-Allow-drivers-to-reference-unused-clocks.patch +Type: text/x-diff +Size: 5230 bytes +Desc: not available +URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140929/c3794a2c/attachment-0001.bin> +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: not available +Type: application/pgp-signature +Size: 819 bytes +Desc: not available +URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140929/c3794a2c/attachment-0001.sig> diff --git a/a/2.bin b/a/2.bin deleted file mode 100644 index 5f9b448..0000000 --- a/a/2.bin +++ /dev/null @@ -1,17 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: GnuPG v2 - -iQIcBAEBAgAGBQJUKRMNAAoJEN0jrNd/PrOhrDEP/ix7wAtapGBHEjWW5C3ATpf9 -XSbm9y9VPZLqhZfU0nhiqPfT7yoQ0N1aWSho54QNgqCqg2tZPmR+t6P3WaK5Afap -PzJdS6pDyZWNaO+wF8k8tVh+vmkQUUuWteBZjuxiVPfYJwvmh+ibz3Vzloo/hR9R -+0HBQa7lok96PdWKAOgGzgnvzM07tjhD/MmvPPrukEKP+fCYhU716YkAepVFaH/S -+nHBI4Z6g+SfcFUDCj9o5pSS8Mf68MPxPPUH8BcKf2Gy9hDoHjLmeOTjhE+u5y+f -tPldsc8DW4hmuRF9L1aQBFSADB4ucHijcH7q5KarE73YleSqfxeCXGdxOnlbJ67V -0bM0noPesaD2ZggldgJPHfTBgdYD3/wAzZI0Dt+yvE/VRoUJ5sDSlT6axkXArRwH -2FBk53JLb+UnBudyxVYegH6rJnNQij00EQhxse1w/Ia9P/OQw7/XQUbfAknWoioR -yEvBcc2RuNqdKDTquia+6OUhi09pRebbw/9LISe0LMV9TSAw/ruT7Rqo3YYpREBe -M19FXLo3EyBbs6vxyxqIAImeQNGqpBw4VS5Xjlj79eA1Ik+u0ciHjvJwWAQpuFY9 -5jHdKHOapHMERRw8XYfUxwU6dmeOAb9z6U9/h2mMQE1s/NHFUTudOGvBiwr2ot9l -WXc5igEjr5wz5byU4t9N -=IhIv ------END PGP SIGNATURE----- diff --git a/a/2.hdr b/a/2.hdr deleted file mode 100644 index a09cc95..0000000 --- a/a/2.hdr +++ /dev/null @@ -1 +0,0 @@ -Content-Type: application/pgp-signature diff --git a/a/content_digest b/N1/content_digest index 47cc1e4..ef4be25 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -8,11 +8,11 @@ "ref\020140829143812.GC31264@ulmo\0" "ref\020140902092508.GR15297@lukather\0" "ref\020140927235601.19023.31593@quantum\0" - "From\0Thierry Reding <thierry.reding@gmail.com>\0" - "Subject\0Re: [linux-sunxi] Re: [PATCH 4/4] simplefb: add clock handling code\0" - "Date\0Mon, 29 Sep 2014 08:06:39 +0000\0" + "From\0thierry.reding@gmail.com (Thierry Reding)\0" + "Subject\0[linux-sunxi] Re: [PATCH 4/4] simplefb: add clock handling code\0" + "Date\0Mon, 29 Sep 2014 10:06:39 +0200\0" "To\0linux-arm-kernel@lists.infradead.org\0" - "\02:1.1\0" + "\00:1\0" "b\0" "On Sat, Sep 27, 2014 at 04:56:01PM -0700, Mike Turquette wrote:\n" "> Quoting Maxime Ripard (2014-09-02 02:25:08)\n" @@ -146,194 +146,20 @@ "single driver if necessary. Similar functionality could be added for\n" "other resource subsystems as needed.\n" "\n" - Thierry - "\02:1.2\0" - "fn\00001-clk-Allow-drivers-to-reference-unused-clocks.patch\0" - "b\0" - "From 5e2521feab41b71fc80b1b41d4eb6ec967919eed Mon Sep 17 00:00:00 2001\n" - "From: Thierry Reding <treding@nvidia.com>\n" - "Date: Mon, 29 Sep 2014 08:10:49 +0200\n" - "Subject: [PATCH] clk: Allow drivers to reference unused clocks\n" - "\n" - "Some drivers are designed to take over a virtual device set up at boot\n" - "time by firmware. This can be useful for early boot output on a display\n" - "device when no debug serial console is available or for transitioning\n" - "from firmware to the Linux kernel in a seemless way.\n" - "\n" - "This type of driver relies on firmware to have set up hardware in a way\n" - "that it can scan out a framebuffer using the display hardware. Some of\n" - "the resources used by the display hardware (clocks, power supplies, ...)\n" - "will typically be turned off (at late_initcall time) by the respective\n" - "Linux kernel subsystems unless explicitly claimed by some hardware-\n" - "specific driver. However, if this driver is built as a module (loaded\n" - "from a filesystem) or defer probing, they will not claim the resources\n" - "until long after late_initcall time. This doesn't allow for a seemless\n" - "transition.\n" - "\n" - "It can also happen that the hardware-specific driver is never loaded. It\n" - "may be that no such driver exists, or it fails to load. Users may even\n" - "decide not to load it on purpose, perhaps because it is buggy. Instead\n" - "of turning the display off in such cases, a better option is to keep\n" - "running with the existing framebuffer, which may also be helpful in\n" - "diagnosing why the real driver wasn't loaded.\n" - "\n" - "This patch provides a way for drivers that make use of clocks set up by\n" - "firmware to prevent clocks from being automatically disabled. Similarly\n" - "a way is provided to signal that they no longer need the clocks (when\n" - "the hardware-specific driver has taken over for example).\n" - "\n" - "Signed-off-by: Thierry Reding <treding@nvidia.com>\n" - "---\n" - " drivers/clk/clk.c | 58 +++++++++++++++++++++++++++++++++++------------------\n" - " include/linux/clk.h | 26 ++++++++++++++++++++++++\n" - " 2 files changed, 65 insertions(+), 19 deletions(-)\n" - "\n" - "diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c\n" - "index 52d58279a612..2007f10e244c 100644\n" - "--- a/drivers/clk/clk.c\n" - "+++ b/drivers/clk/clk.c\n" - "@@ -486,38 +486,58 @@ out:\n" - " \treturn;\n" - " }\n" - " \n" - "-static bool clk_ignore_unused;\n" - "-static int __init clk_ignore_unused_setup(char *__unused)\n" - "+static unsigned long clk_ignore_unused_count = 1;\n" - "+\n" - "+void clk_ignore_unused(void)\n" - " {\n" - "-\tclk_ignore_unused = true;\n" - "-\treturn 1;\n" - "+\tclk_prepare_lock();\n" - "+\n" - "+\tif (clk_ignore_unused_count == 0)\n" - "+\t\tpr_warn(\"clk: unused clocks already disabled\\n\");\n" - "+\telse\n" - "+\t\tclk_ignore_unused_count++;\n" - "+\n" - "+\tclk_prepare_unlock();\n" - " }\n" - "-__setup(\"clk_ignore_unused\", clk_ignore_unused_setup);\n" - " \n" - "-static int clk_disable_unused(void)\n" - "+void clk_unignore_unused(void)\n" - " {\n" - " \tstruct clk *clk;\n" - " \n" - "-\tif (clk_ignore_unused) {\n" - "-\t\tpr_warn(\"clk: Not disabling unused clocks\\n\");\n" - "-\t\treturn 0;\n" - "-\t}\n" - "-\n" - " \tclk_prepare_lock();\n" - " \n" - "-\thlist_for_each_entry(clk, &clk_root_list, child_node)\n" - "-\t\tclk_disable_unused_subtree(clk);\n" - "+\tif (--clk_ignore_unused_count == 0) {\n" - "+\t\thlist_for_each_entry(clk, &clk_root_list, child_node)\n" - "+\t\t\tclk_disable_unused_subtree(clk);\n" - " \n" - "-\thlist_for_each_entry(clk, &clk_orphan_list, child_node)\n" - "-\t\tclk_disable_unused_subtree(clk);\n" - "+\t\thlist_for_each_entry(clk, &clk_orphan_list, child_node)\n" - "+\t\t\tclk_disable_unused_subtree(clk);\n" - " \n" - "-\thlist_for_each_entry(clk, &clk_root_list, child_node)\n" - "-\t\tclk_unprepare_unused_subtree(clk);\n" - "+\t\thlist_for_each_entry(clk, &clk_root_list, child_node)\n" - "+\t\t\tclk_unprepare_unused_subtree(clk);\n" - " \n" - "-\thlist_for_each_entry(clk, &clk_orphan_list, child_node)\n" - "-\t\tclk_unprepare_unused_subtree(clk);\n" - "+\t\thlist_for_each_entry(clk, &clk_orphan_list, child_node)\n" - "+\t\t\tclk_unprepare_unused_subtree(clk);\n" - "+\t}\n" - " \n" - " \tclk_prepare_unlock();\n" - "+}\n" - "+\n" - "+static int __init clk_ignore_unused_setup(char *__unused)\n" - "+{\n" - "+\tclk_ignore_unused();\n" - "+\treturn 1;\n" - "+}\n" - "+__setup(\"clk_ignore_unused\", clk_ignore_unused_setup);\n" - "+\n" - "+static int clk_disable_unused(void)\n" - "+{\n" - "+\tclk_unignore_unused();\n" - "+\n" - "+\tif (clk_ignore_unused_count > 0) {\n" - "+\t\tpr_warn(\"clk: Not disabling unused clocks\\n\");\n" - "+\t\treturn 0;\n" - "+\t}\n" - " \n" - " \treturn 0;\n" - " }\n" - "diff --git a/include/linux/clk.h b/include/linux/clk.h\n" - "index afb44bfaf8d1..b587f2b2f2f5 100644\n" - "--- a/include/linux/clk.h\n" - "+++ b/include/linux/clk.h\n" - "@@ -106,6 +106,24 @@ int clk_notifier_unregister(struct clk *clk, struct notifier_block *nb);\n" - " */\n" - " long clk_get_accuracy(struct clk *clk);\n" - " \n" - "+/**\n" - "+ * clk_ignore_unused - request that unused clocks be kept running\n" - "+ *\n" - "+ * This function can be used by drivers to request that unused clocks are kept\n" - "+ * running. It is useful for drivers that take over hardware previously set up\n" - "+ * by firmware and which may not explicitly claim all clocks.\n" - "+ */\n" - "+void clk_ignore_unused(void);\n" - "+\n" - "+/**\n" - "+ * clk_unignore_unused - release unused clocks\n" - "+ *\n" - "+ * Use this function to undo the effects of clk_ignore_unused(). It is meant\n" - "+ * to be called by drivers for firmware devices after they've handed off the\n" - "+ * device to a proper hardware-specific driver.\n" - "+ */\n" - "+void clk_unignore_unused(void);\n" - "+\n" - " #else\n" - " \n" - " static inline long clk_get_accuracy(struct clk *clk)\n" - "@@ -113,6 +131,14 @@ static inline long clk_get_accuracy(struct clk *clk)\n" - " \treturn -ENOTSUPP;\n" - " }\n" - " \n" - "+static inline void clk_ignore_unused(void)\n" - "+{\n" - "+}\n" - "+\n" - "+static inline void clk_unignore_unused(void)\n" - "+{\n" - "+}\n" - "+\n" - " #endif\n" - " \n" - " /**\n" - "-- \n" - 2.1.0 - "\01:2\0" - "b\0" - "-----BEGIN PGP SIGNATURE-----\n" - "Version: GnuPG v2\n" - "\n" - "iQIcBAEBAgAGBQJUKRMNAAoJEN0jrNd/PrOhrDEP/ix7wAtapGBHEjWW5C3ATpf9\n" - "XSbm9y9VPZLqhZfU0nhiqPfT7yoQ0N1aWSho54QNgqCqg2tZPmR+t6P3WaK5Afap\n" - "PzJdS6pDyZWNaO+wF8k8tVh+vmkQUUuWteBZjuxiVPfYJwvmh+ibz3Vzloo/hR9R\n" - "+0HBQa7lok96PdWKAOgGzgnvzM07tjhD/MmvPPrukEKP+fCYhU716YkAepVFaH/S\n" - "+nHBI4Z6g+SfcFUDCj9o5pSS8Mf68MPxPPUH8BcKf2Gy9hDoHjLmeOTjhE+u5y+f\n" - "tPldsc8DW4hmuRF9L1aQBFSADB4ucHijcH7q5KarE73YleSqfxeCXGdxOnlbJ67V\n" - "0bM0noPesaD2ZggldgJPHfTBgdYD3/wAzZI0Dt+yvE/VRoUJ5sDSlT6axkXArRwH\n" - "2FBk53JLb+UnBudyxVYegH6rJnNQij00EQhxse1w/Ia9P/OQw7/XQUbfAknWoioR\n" - "yEvBcc2RuNqdKDTquia+6OUhi09pRebbw/9LISe0LMV9TSAw/ruT7Rqo3YYpREBe\n" - "M19FXLo3EyBbs6vxyxqIAImeQNGqpBw4VS5Xjlj79eA1Ik+u0ciHjvJwWAQpuFY9\n" - "5jHdKHOapHMERRw8XYfUxwU6dmeOAb9z6U9/h2mMQE1s/NHFUTudOGvBiwr2ot9l\n" - "WXc5igEjr5wz5byU4t9N\n" - "=IhIv\n" - "-----END PGP SIGNATURE-----\n" + "Thierry\n" + "-------------- next part --------------\n" + "A non-text attachment was scrubbed...\n" + "Name: 0001-clk-Allow-drivers-to-reference-unused-clocks.patch\n" + "Type: text/x-diff\n" + "Size: 5230 bytes\n" + "Desc: not available\n" + "URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140929/c3794a2c/attachment-0001.bin>\n" + "-------------- next part --------------\n" + "A non-text attachment was scrubbed...\n" + "Name: not available\n" + "Type: application/pgp-signature\n" + "Size: 819 bytes\n" + "Desc: not available\n" + URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140929/c3794a2c/attachment-0001.sig> -19b21ae73fe7451c65e91f8b96e437e47c6d7c4b899a9663345186cdfc5b2d18 +76588d6ca230653b60380d26cda4613bb7a80c2fa5ee34b0579ab1b955f194d4
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.