clk: bcm2835: Mark the VPU clock as critical
authorEric Anholt <eric@anholt.net>
Wed, 1 Jun 2016 19:05:33 +0000 (12:05 -0700)
committerStephen Boyd <sboyd@codeaurora.org>
Wed, 7 Sep 2016 15:57:09 +0000 (08:57 -0700)
The VPU clock is also the clock for our AXI bus, so we really can't
disable it.  This might have happened during boot if, for example,
uart1 (aux_uart clock) probed and was then disabled before the other
consumers of the VPU clock had probed.

Signed-off-by: Eric Anholt <eric@anholt.net>
Acked-by: Martin Sperl <kernel@martin.sperl.org>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
drivers/clk/bcm/clk-bcm2835.c

index 7a79708..d9db03c 100644 (file)
@@ -443,6 +443,8 @@ struct bcm2835_clock_data {
        /* Number of fractional bits in the divider */
        u32 frac_bits;
 
+       u32 flags;
+
        bool is_vpu_clock;
        bool is_mash_clock;
 };
@@ -1230,7 +1232,7 @@ static struct clk *bcm2835_register_clock(struct bcm2835_cprman *cprman,
        init.parent_names = parents;
        init.num_parents = data->num_mux_parents;
        init.name = data->name;
-       init.flags = CLK_IGNORE_UNUSED;
+       init.flags = data->flags | CLK_IGNORE_UNUSED;
 
        if (data->is_vpu_clock) {
                init.ops = &bcm2835_vpu_clock_clk_ops;
@@ -1649,6 +1651,7 @@ static const struct bcm2835_clk_desc clk_desc_array[] = {
                .div_reg = CM_VPUDIV,
                .int_bits = 12,
                .frac_bits = 8,
+               .flags = CLK_IS_CRITICAL,
                .is_vpu_clock = true),
 
        /* clocks with per parent mux */