clk: ingenic: Allow specifying common clock flags
authorAidan MacDonald <aidanmacdonald.0x0@gmail.com>
Thu, 28 Apr 2022 16:44:52 +0000 (17:44 +0100)
committerStephen Boyd <sboyd@kernel.org>
Wed, 18 May 2022 20:56:16 +0000 (13:56 -0700)
Provide a flags field for clocks under the ingenic-cgu driver,
which can be used to set generic common clock framework flags
on the created clocks. For example, the CLK_IS_CRITICAL flag
is needed for some clocks (such as CPU or memory) to stop them
being automatically disabled.

Signed-off-by: Aidan MacDonald <aidanmacdonald.0x0@gmail.com>
Reviewed-by: Paul Cercueil <paul@crapouillou.net>
Link: https://lore.kernel.org/r/20220428164454.17908-2-aidanmacdonald.0x0@gmail.com
Tested-by: 周琰杰 (Zhou Yanjie) <zhouyanjie@wanyeetech.com> # On X1000 and X1830
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
drivers/clk/ingenic/cgu.c
drivers/clk/ingenic/cgu.h

index af31633..861c50d 100644 (file)
@@ -660,7 +660,7 @@ static int ingenic_register_clock(struct ingenic_cgu *cgu, unsigned idx)
        ingenic_clk->idx = idx;
 
        clk_init.name = clk_info->name;
-       clk_init.flags = 0;
+       clk_init.flags = clk_info->flags;
        clk_init.parent_names = parent_names;
 
        caps = clk_info->type;
index bfc2b9c..147b7df 100644 (file)
@@ -136,6 +136,7 @@ struct ingenic_cgu_custom_info {
  * struct ingenic_cgu_clk_info - information about a clock
  * @name: name of the clock
  * @type: a bitmask formed from CGU_CLK_* values
+ * @flags: common clock flags to set on this clock
  * @parents: an array of the indices of potential parents of this clock
  *           within the clock_info array of the CGU, or -1 in entries
  *           which correspond to no valid parent
@@ -161,6 +162,8 @@ struct ingenic_cgu_clk_info {
                CGU_CLK_CUSTOM          = BIT(7),
        } type;
 
+       unsigned long flags;
+
        int parents[4];
 
        union {