]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
Merge unstable branch 'omap-rmk'
authorRussell King <rmk@dyn-67.arm.linux.org.uk>
Fri, 3 Oct 2008 10:52:33 +0000 (11:52 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Fri, 3 Oct 2008 10:52:33 +0000 (11:52 +0100)
Merge branch 'omap-rmk' into omap-all

1  2 
arch/arm/mach-omap2/clock.c
arch/arm/mach-omap2/prm.h

index aa9b37370d444bbc3c6b2d8c34c1f1c68497fdcf,84cd1d9fcef9affb3fb4e12a9f3b251412768bf6..57c4405ccedaa1e7f5a8e820d894a0f5afdf03ff
@@@ -26,7 -26,6 +26,7 @@@
  #include <asm/io.h>
  
  #include <mach/clock.h>
 +#include <mach/clockdomain.h>
  #include <mach/sram.h>
  #include <mach/cpu.h>
  #include <asm/div64.h>
  u8 cpu_mask;
  
  /*-------------------------------------------------------------------------
 - * Omap2 specific clock functions
 + * OMAP2/3 specific clock functions
   *-------------------------------------------------------------------------*/
  
 +/**
 + * omap2_init_clk_clkdm - look up a clockdomain name, store pointer in clk
 + * @clk: OMAP clock struct ptr to use
 + *
 + * Convert a clockdomain name stored in a struct clk 'clk' into a
 + * clockdomain pointer, and save it into the struct clk.  Intended to be
 + * called during clk_register().  No return value.
 + */
 +void omap2_init_clk_clkdm(struct clk *clk)
 +{
 +      struct clockdomain *clkdm;
 +
 +      if (!clk->clkdm_name)
 +              return;
 +
 +      clkdm = clkdm_lookup(clk->clkdm_name);
 +      if (clkdm) {
 +              pr_debug("clock: associated clk %s to clkdm %s\n",
 +                       clk->name, clk->clkdm_name);
 +              clk->clkdm = clkdm;
 +      } else {
 +              pr_debug("clock: could not associate clk %s to "
 +                       "clkdm %s\n", clk->name, clk->clkdm_name);
 +      }
 +}
 +
  /**
   * omap2_init_clksel_parent - set a clksel clk's parent field from the hardware
   * @clk: OMAP clock struct ptr to use
@@@ -278,7 -251,7 +278,7 @@@ int _omap2_clk_enable(struct clk *clk
        if (clk->enable)
                return clk->enable(clk);
  
-       if (unlikely(clk->enable_reg == 0)) {
+       if (unlikely(clk->enable_reg == NULL)) {
                printk(KERN_ERR "clock.c: Enable for %s without enable code\n",
                       clk->name);
                return 0; /* REVISIT: -EINVAL */
@@@ -310,7 -283,7 +310,7 @@@ void _omap2_clk_disable(struct clk *clk
                return;
        }
  
-       if (clk->enable_reg == 0) {
+       if (clk->enable_reg == NULL) {
                /*
                 * 'Independent' here refers to a clock which is not
                 * controlled by its parent.
@@@ -335,9 -308,6 +335,9 @@@ void omap2_clk_disable(struct clk *clk
                _omap2_clk_disable(clk);
                if (likely((u32)clk->parent))
                        omap2_clk_disable(clk->parent);
 +              if (clk->clkdm)
 +                      omap2_clkdm_clk_disable(clk->clkdm, clk);
 +
        }
  }
  
@@@ -354,19 -324,11 +354,19 @@@ int omap2_clk_enable(struct clk *clk
                        return ret;
                }
  
 +              if (clk->clkdm)
 +                      omap2_clkdm_clk_enable(clk->clkdm, clk);
 +
                ret = _omap2_clk_enable(clk);
  
 -              if (unlikely(ret != 0) && clk->parent) {
 -                      omap2_clk_disable(clk->parent);
 -                      clk->usecount--;
 +              if (unlikely(ret != 0)) {
 +                      if (clk->clkdm)
 +                              omap2_clkdm_clk_disable(clk->clkdm, clk);
 +
 +                      if (clk->parent) {
 +                              omap2_clk_disable(clk->parent);
 +                              clk->usecount--;
 +                      }
                }
        }
  
@@@ -515,7 -477,7 +515,7 @@@ long omap2_clksel_round_rate(struct cl
  /* Given a clock and a rate apply a clock specific rounding function */
  long omap2_clk_round_rate(struct clk *clk, unsigned long rate)
  {
-       if (clk->round_rate != 0)
+       if (clk->round_rate != NULL)
                return clk->round_rate(clk, rate);
  
        if (clk->flags & RATE_FIXED)
@@@ -604,7 -566,7 +604,7 @@@ u32 omap2_divisor_to_clksel(struct clk 
   */
  void __iomem *omap2_get_clksel(struct clk *clk, u32 *field_mask)
  {
-       if (unlikely((clk->clksel_reg == 0) || (clk->clksel_mask == 0)))
+       if (unlikely((clk->clksel_reg == NULL) || (clk->clksel_mask == NULL)))
                return NULL;
  
        *field_mask = clk->clksel_mask;
@@@ -624,7 -586,7 +624,7 @@@ u32 omap2_clksel_get_divisor(struct cl
        void __iomem *div_addr;
  
        div_addr = omap2_get_clksel(clk, &field_mask);
-       if (div_addr == 0)
+       if (div_addr == NULL)
                return 0;
  
        field_val = __raw_readl(div_addr) & field_mask;
@@@ -643,7 -605,7 +643,7 @@@ int omap2_clksel_set_rate(struct clk *c
                return -EINVAL;
  
        div_addr = omap2_get_clksel(clk, &field_mask);
-       if (div_addr == 0)
+       if (div_addr == NULL)
                return -EINVAL;
  
        field_val = omap2_divisor_to_clksel(clk, new_div);
@@@ -681,7 -643,7 +681,7 @@@ int omap2_clk_set_rate(struct clk *clk
                return -EINVAL;
  
        /* dpll_ck, core_ck, virt_prcm_set; plus all clksel clocks */
-       if (clk->set_rate != 0)
+       if (clk->set_rate != NULL)
                ret = clk->set_rate(clk, rate);
  
        if (unlikely(ret == 0 && (clk->flags & RATE_PROPAGATES)))
@@@ -702,7 -664,7 +702,7 @@@ static u32 omap2_clksel_get_src_field(v
        const struct clksel_rate *clkr;
  
        *parent_div = 0;
-       *src_addr = 0;
+       *src_addr = NULL;
  
        clks = omap2_get_clksel_by_parent(clk, src_clk);
        if (clks == NULL)
@@@ -743,7 -705,7 +743,7 @@@ int omap2_clk_set_parent(struct clk *cl
  
        field_val = omap2_clksel_get_src_field(&src_addr, new_parent,
                                               &field_mask, clk, &parent_div);
-       if (src_addr == 0)
+       if (src_addr == NULL)
                return -EINVAL;
  
        if (clk->usecount > 0)
index eb9982fb21d55e5d50901eb4f1e60e3bab484d09,026d8a776ae6979573e447b95c7f3fc356f3a91f..e4dc4b17881d2e9cbc198aefb7bf148ac4e50688
@@@ -18,7 -18,7 +18,7 @@@
  
  #ifndef __ASSEMBLER__
  #define OMAP_PRM_REGADDR(module, reg)                                 \
-       (void __iomem *)IO_ADDRESS(OMAP2_PRM_BASE + (module) + (reg))
+                       IO_ADDRESS(OMAP2_PRM_BASE + (module) + (reg))
  #else
  #define OMAP2420_PRM_REGADDR(module, reg)                             \
                        IO_ADDRESS(OMAP2420_PRM_BASE + (module) + (reg))
@@@ -305,8 -305,7 +305,8 @@@ static inline u32 prm_clear_mod_reg_bit
   * 3430: PM_WKDEP_IVA2, PM_WKDEP_GFX, PM_WKDEP_DSS, PM_WKDEP_CAM,
   *     PM_WKDEP_PER
   */
 -#define OMAP_EN_WKUP                                  (1 << 4)
 +#define OMAP_EN_WKUP_SHIFT                            4
 +#define OMAP_EN_WKUP_MASK                             (1 << 4)
  
  /*
   * 24XX: PM_PWSTCTRL_MPU, PM_PWSTCTRL_CORE, PM_PWSTCTRL_GFX,