#define BIT(nr) (1UL << (nr))
#define BIT_MASK(nr) (1UL << ((nr) % BITS_PER_LONG))
#define BIT_WORD(nr) ((nr) / BITS_PER_LONG)
#define BITS_PER_BYTE 8
#define BITS_TO_LONGS(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(long))
#define DECLARE_BITMAP(name,bits) /
unsigned long name[BITS_TO_LONGS(bits)]
043 |
static DECLARE_BITMAP(clock_map_enabled, NR_CLKS);
|
044 |
static DEFINE_SPINLOCK(clock_map_lock);
|
clock_map_enabled[BIT_WORD(clk->id)] &= ~BIT_MASK(clk->id);
clock_map_enabled[BIT_WORD(clk->id)] |= BIT_MASK(clk->id);
|
int clk_enable( struct clk *clk)
|
078 |
spin_lock_irqsave(&clocks_lock, flags);
|
080 |
if (clk->count == 1) {
|
081 |
clk->ops->enable(clk->id);
|
082 |
spin_lock(&clock_map_lock);
|
083 |
clock_map_enabled[BIT_WORD(clk->id)] |= BIT_MASK(clk->id);
|
084 |
spin_unlock(&clock_map_lock);
|
086 |
spin_unlock_irqrestore(&clocks_lock, flags);
|
089 | EXPORT_SYMBOL(clk_enable); |
091 |
void clk_disable( struct clk *clk)
|
094 |
spin_lock_irqsave(&clocks_lock, flags);
|
095 |
BUG_ON(clk->count == 0);
|
097 |
if (clk->count == 0) {
|
098 |
clk->ops->disable(clk->id);
|
099 |
spin_lock(&clock_map_lock);
|
100 |
clock_map_enabled[BIT_WORD(clk->id)] &= ~BIT_MASK(clk->id);
|
101 |
spin_unlock(&clock_map_lock);
|
103 |
spin_unlock_irqrestore(&clocks_lock, flags);
|
105 | EXPORT_SYMBOL(clk_disable); |
void check_clk_is_enable(int clkid)
{
if(clock_map_enabled[BIT_WORD(clkid)] & BIT_MASK(clkid))
{
printk("clk->id %d is enable/n",clkid);
}
}