#define OMAP4_IDLEST_MASK              (0x3 << 16)
 #define OMAP4_IDLEST_SHIFT             16
 
+#define OMAP4_STBYST_MASK              BIT(18)
+#define OMAP4_STBYST_SHIFT             18
+
 #define CLKCTRL_IDLEST_FUNCTIONAL      0x0
 #define CLKCTRL_IDLEST_INTERFACE_IDLE  0x2
 #define CLKCTRL_IDLEST_DISABLED                0x3
 }
 CLK_OF_DECLARE(ti_omap4_clkctrl_clock, "ti,clkctrl",
               _ti_omap4_clkctrl_setup);
+
+/**
+ * ti_clk_is_in_standby - Check if clkctrl clock is in standby or not
+ * @clk: clock to check standby status for
+ *
+ * Finds whether the provided clock is in standby mode or not. Returns
+ * true if the provided clock is a clkctrl type clock and it is in standby,
+ * false otherwise.
+ */
+bool ti_clk_is_in_standby(struct clk *clk)
+{
+       struct clk_hw *hw;
+       struct clk_hw_omap *hwclk;
+       u32 val;
+
+       hw = __clk_get_hw(clk);
+
+       if (!omap2_clk_is_hw_omap(hw))
+               return false;
+
+       hwclk = to_clk_hw_omap(hw);
+
+       val = ti_clk_ll_ops->clk_readl(&hwclk->enable_reg);
+
+       if (val & OMAP4_STBYST_MASK)
+               return true;
+
+       return false;
+}
+EXPORT_SYMBOL_GPL(ti_clk_is_in_standby);
 
 
 void ti_clk_setup_features(struct ti_clk_features *features);
 const struct ti_clk_features *ti_clk_get_features(void);
+bool ti_clk_is_in_standby(struct clk *clk);
 int omap3_noncore_dpll_save_context(struct clk_hw *hw);
 void omap3_noncore_dpll_restore_context(struct clk_hw *hw);