1d2912cb1SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */ 26d803ba7SJean-Christop PLAGNIOL-VILLARD /* 36d803ba7SJean-Christop PLAGNIOL-VILLARD * include/linux/clkdev.h 46d803ba7SJean-Christop PLAGNIOL-VILLARD * 56d803ba7SJean-Christop PLAGNIOL-VILLARD * Copyright (C) 2008 Russell King. 66d803ba7SJean-Christop PLAGNIOL-VILLARD * 76d803ba7SJean-Christop PLAGNIOL-VILLARD * Helper for the clk API to assist looking up a struct clk. 86d803ba7SJean-Christop PLAGNIOL-VILLARD */ 96d803ba7SJean-Christop PLAGNIOL-VILLARD #ifndef __CLKDEV_H 106d803ba7SJean-Christop PLAGNIOL-VILLARD #define __CLKDEV_H 116d803ba7SJean-Christop PLAGNIOL-VILLARD 120d4e3d00SStephen Boyd #include <linux/slab.h> 136d803ba7SJean-Christop PLAGNIOL-VILLARD 146d803ba7SJean-Christop PLAGNIOL-VILLARD struct clk; 15e4f1b49bSStephen Boyd struct clk_hw; 166d803ba7SJean-Christop PLAGNIOL-VILLARD struct device; 176d803ba7SJean-Christop PLAGNIOL-VILLARD 186d803ba7SJean-Christop PLAGNIOL-VILLARD struct clk_lookup { 196d803ba7SJean-Christop PLAGNIOL-VILLARD struct list_head node; 206d803ba7SJean-Christop PLAGNIOL-VILLARD const char *dev_id; 216d803ba7SJean-Christop PLAGNIOL-VILLARD const char *con_id; 226d803ba7SJean-Christop PLAGNIOL-VILLARD struct clk *clk; 23d5622a9cSRussell King struct clk_hw *clk_hw; 246d803ba7SJean-Christop PLAGNIOL-VILLARD }; 256d803ba7SJean-Christop PLAGNIOL-VILLARD 26196a57c2SPadmavathi Venna #define CLKDEV_INIT(d, n, c) \ 27196a57c2SPadmavathi Venna { \ 28196a57c2SPadmavathi Venna .dev_id = d, \ 29196a57c2SPadmavathi Venna .con_id = n, \ 30196a57c2SPadmavathi Venna .clk = c, \ 31196a57c2SPadmavathi Venna } 32196a57c2SPadmavathi Venna 336d803ba7SJean-Christop PLAGNIOL-VILLARD void clkdev_add(struct clk_lookup *cl); 346d803ba7SJean-Christop PLAGNIOL-VILLARD void clkdev_drop(struct clk_lookup *cl); 356d803ba7SJean-Christop PLAGNIOL-VILLARD 3625689998SRussell King struct clk_lookup *clkdev_create(struct clk *clk, const char *con_id, 378db14860SNicolas Iooss const char *dev_fmt, ...) __printf(3, 4); 38e4f1b49bSStephen Boyd struct clk_lookup *clkdev_hw_create(struct clk_hw *hw, const char *con_id, 39e4f1b49bSStephen Boyd const char *dev_fmt, ...) __printf(3, 4); 4025689998SRussell King 416d803ba7SJean-Christop PLAGNIOL-VILLARD void clkdev_add_table(struct clk_lookup *, size_t); 42b3d8d7e8SRussell King int clk_add_alias(const char *, const char *, const char *, struct device *); 436d803ba7SJean-Christop PLAGNIOL-VILLARD 44416dd13aSKees Cook int clk_register_clkdev(struct clk *, const char *, const char *); 45e4f1b49bSStephen Boyd int clk_hw_register_clkdev(struct clk_hw *, const char *, const char *); 46e9d7f406SRussell King 473eee6c7dSMatti Vaittinen int devm_clk_hw_register_clkdev(struct device *dev, struct clk_hw *hw, 483eee6c7dSMatti Vaittinen const char *con_id, const char *dev_id); 496d803ba7SJean-Christop PLAGNIOL-VILLARD #endif 50