diff options
-rw-r--r-- | drivers/clk/clkdev.c | 31 | ||||
-rw-r--r-- | include/linux/clkdev.h | 3 |
2 files changed, 26 insertions, 8 deletions
diff --git a/drivers/clk/clkdev.c b/drivers/clk/clkdev.c index 779b6ff0c7ad..eb20b941154b 100644 --- a/drivers/clk/clkdev.c +++ b/drivers/clk/clkdev.c | |||
@@ -353,11 +353,25 @@ void clkdev_drop(struct clk_lookup *cl) | |||
353 | } | 353 | } |
354 | EXPORT_SYMBOL(clkdev_drop); | 354 | EXPORT_SYMBOL(clkdev_drop); |
355 | 355 | ||
356 | static struct clk_lookup *__clk_register_clkdev(struct clk_hw *hw, | ||
357 | const char *con_id, | ||
358 | const char *dev_id, ...) | ||
359 | { | ||
360 | struct clk_lookup *cl; | ||
361 | va_list ap; | ||
362 | |||
363 | va_start(ap, dev_id); | ||
364 | cl = vclkdev_create(hw, con_id, dev_id, ap); | ||
365 | va_end(ap); | ||
366 | |||
367 | return cl; | ||
368 | } | ||
369 | |||
356 | /** | 370 | /** |
357 | * clk_register_clkdev - register one clock lookup for a struct clk | 371 | * clk_register_clkdev - register one clock lookup for a struct clk |
358 | * @clk: struct clk to associate with all clk_lookups | 372 | * @clk: struct clk to associate with all clk_lookups |
359 | * @con_id: connection ID string on device | 373 | * @con_id: connection ID string on device |
360 | * @dev_id: format string describing device name | 374 | * @dev_id: string describing device name |
361 | * | 375 | * |
362 | * con_id or dev_id may be NULL as a wildcard, just as in the rest of | 376 | * con_id or dev_id may be NULL as a wildcard, just as in the rest of |
363 | * clkdev. | 377 | * clkdev. |
@@ -368,17 +382,22 @@ EXPORT_SYMBOL(clkdev_drop); | |||
368 | * after clk_register(). | 382 | * after clk_register(). |
369 | */ | 383 | */ |
370 | int clk_register_clkdev(struct clk *clk, const char *con_id, | 384 | int clk_register_clkdev(struct clk *clk, const char *con_id, |
371 | const char *dev_fmt, ...) | 385 | const char *dev_id) |
372 | { | 386 | { |
373 | struct clk_lookup *cl; | 387 | struct clk_lookup *cl; |
374 | va_list ap; | ||
375 | 388 | ||
376 | if (IS_ERR(clk)) | 389 | if (IS_ERR(clk)) |
377 | return PTR_ERR(clk); | 390 | return PTR_ERR(clk); |
378 | 391 | ||
379 | va_start(ap, dev_fmt); | 392 | /* |
380 | cl = vclkdev_create(__clk_get_hw(clk), con_id, dev_fmt, ap); | 393 | * Since dev_id can be NULL, and NULL is handled specially, we must |
381 | va_end(ap); | 394 | * pass it as either a NULL format string, or with "%s". |
395 | */ | ||
396 | if (dev_id) | ||
397 | cl = __clk_register_clkdev(__clk_get_hw(clk), con_id, "%s", | ||
398 | dev_id); | ||
399 | else | ||
400 | cl = __clk_register_clkdev(__clk_get_hw(clk), con_id, NULL); | ||
382 | 401 | ||
383 | return cl ? 0 : -ENOMEM; | 402 | return cl ? 0 : -ENOMEM; |
384 | } | 403 | } |
diff --git a/include/linux/clkdev.h b/include/linux/clkdev.h index 08bffcc466de..c2c04f7cbe8a 100644 --- a/include/linux/clkdev.h +++ b/include/linux/clkdev.h | |||
@@ -44,8 +44,7 @@ struct clk_lookup *clkdev_create(struct clk *clk, const char *con_id, | |||
44 | void clkdev_add_table(struct clk_lookup *, size_t); | 44 | void clkdev_add_table(struct clk_lookup *, size_t); |
45 | int clk_add_alias(const char *, const char *, const char *, struct device *); | 45 | int clk_add_alias(const char *, const char *, const char *, struct device *); |
46 | 46 | ||
47 | int clk_register_clkdev(struct clk *, const char *, const char *, ...) | 47 | int clk_register_clkdev(struct clk *, const char *, const char *); |
48 | __printf(3, 4); | ||
49 | int clk_register_clkdevs(struct clk *, struct clk_lookup *, size_t); | 48 | int clk_register_clkdevs(struct clk *, struct clk_lookup *, size_t); |
50 | 49 | ||
51 | #ifdef CONFIG_COMMON_CLK | 50 | #ifdef CONFIG_COMMON_CLK |