Skip to content

Commit

Permalink
avr32: handle NULL as a valid clock object
Browse files Browse the repository at this point in the history
Since NULL is used as valid clock object on optional clocks we have to handle
this case in avr32 implementation as well.

Fixes: e1824df (net: macb: Adjust tx_clk when link speed changes)
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Hans-Christian Egtvedt <egtvedt@samfundet.no>
  • Loading branch information
Andy Shevchenko authored and Hans-Christian Egtvedt committed Jul 27, 2015
1 parent cbfe8fa commit 5c02a42
Showing 1 changed file with 19 additions and 1 deletion.
20 changes: 19 additions & 1 deletion arch/avr32/mach-at32ap/clock.c
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,9 @@ int clk_enable(struct clk *clk)
{
unsigned long flags;

if (!clk)
return 0;

spin_lock_irqsave(&clk_lock, flags);
__clk_enable(clk);
spin_unlock_irqrestore(&clk_lock, flags);
Expand All @@ -106,6 +109,9 @@ void clk_disable(struct clk *clk)
{
unsigned long flags;

if (IS_ERR_OR_NULL(clk))
return;

spin_lock_irqsave(&clk_lock, flags);
__clk_disable(clk);
spin_unlock_irqrestore(&clk_lock, flags);
Expand All @@ -117,6 +123,9 @@ unsigned long clk_get_rate(struct clk *clk)
unsigned long flags;
unsigned long rate;

if (!clk)
return 0;

spin_lock_irqsave(&clk_lock, flags);
rate = clk->get_rate(clk);
spin_unlock_irqrestore(&clk_lock, flags);
Expand All @@ -129,6 +138,9 @@ long clk_round_rate(struct clk *clk, unsigned long rate)
{
unsigned long flags, actual_rate;

if (!clk)
return 0;

if (!clk->set_rate)
return -ENOSYS;

Expand All @@ -145,6 +157,9 @@ int clk_set_rate(struct clk *clk, unsigned long rate)
unsigned long flags;
long ret;

if (!clk)
return 0;

if (!clk->set_rate)
return -ENOSYS;

Expand All @@ -161,6 +176,9 @@ int clk_set_parent(struct clk *clk, struct clk *parent)
unsigned long flags;
int ret;

if (!clk)
return 0;

if (!clk->set_parent)
return -ENOSYS;

Expand All @@ -174,7 +192,7 @@ EXPORT_SYMBOL(clk_set_parent);

struct clk *clk_get_parent(struct clk *clk)
{
return clk->parent;
return !clk ? NULL : clk->parent;
}
EXPORT_SYMBOL(clk_get_parent);

Expand Down

0 comments on commit 5c02a42

Please sign in to comment.