diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c index 4cbc0f70f..4395c3c24 100644 --- a/drivers/clk/clk.c +++ b/drivers/clk/clk.c @@ -41,6 +41,13 @@ int clk_get_parent(unsigned long id) return ops->get_parent(id); } +int clk_set_parent(unsigned long id, unsigned long parent_id) +{ + assert((ops != NULL) && (ops->set_parent != NULL)); + + return ops->set_parent(id, parent_id); +} + bool clk_is_enabled(unsigned long id) { assert((ops != NULL) && (ops->is_enabled != NULL)); diff --git a/include/drivers/clk.h b/include/drivers/clk.h index a18f41ffc..d4cc90da0 100644 --- a/include/drivers/clk.h +++ b/include/drivers/clk.h @@ -14,6 +14,7 @@ struct clk_ops { void (*disable)(unsigned long id); unsigned long (*get_rate)(unsigned long id); int (*get_parent)(unsigned long id); + int (*set_parent)(unsigned long id, unsigned long parent_id); bool (*is_enabled)(unsigned long id); }; @@ -22,6 +23,7 @@ void clk_disable(unsigned long id); unsigned long clk_get_rate(unsigned long id); bool clk_is_enabled(unsigned long id); int clk_get_parent(unsigned long id); +int clk_set_parent(unsigned long id, unsigned long parent_id); void clk_register(const struct clk_ops *ops);