xref: /openbmc/linux/drivers/clk/renesas/rcar-cpg-lib.h (revision 03ab8e6297acd1bc0eedaa050e2a1635c576fd11)
18bb67d87SWolfram Sang /* SPDX-License-Identifier: GPL-2.0 */
28bb67d87SWolfram Sang /*
38bb67d87SWolfram Sang  * R-Car Gen3 Clock Pulse Generator Library
48bb67d87SWolfram Sang  *
58bb67d87SWolfram Sang  * Copyright (C) 2015-2018 Glider bvba
68bb67d87SWolfram Sang  * Copyright (C) 2019 Renesas Electronics Corp.
78bb67d87SWolfram Sang  *
88bb67d87SWolfram Sang  * Based on clk-rcar-gen3.c
98bb67d87SWolfram Sang  *
108bb67d87SWolfram Sang  * Copyright (C) 2015 Renesas Electronics Corp.
118bb67d87SWolfram Sang  */
128bb67d87SWolfram Sang 
138bb67d87SWolfram Sang #ifndef __CLK_RENESAS_RCAR_CPG_LIB_H__
148bb67d87SWolfram Sang #define __CLK_RENESAS_RCAR_CPG_LIB_H__
158bb67d87SWolfram Sang 
168bb67d87SWolfram Sang extern spinlock_t cpg_lock;
178bb67d87SWolfram Sang 
188bb67d87SWolfram Sang struct cpg_simple_notifier {
198bb67d87SWolfram Sang 	struct notifier_block nb;
208bb67d87SWolfram Sang 	void __iomem *reg;
218bb67d87SWolfram Sang 	u32 saved;
228bb67d87SWolfram Sang };
238bb67d87SWolfram Sang 
248bb67d87SWolfram Sang void cpg_simple_notifier_register(struct raw_notifier_head *notifiers,
258bb67d87SWolfram Sang 				  struct cpg_simple_notifier *csn);
268bb67d87SWolfram Sang 
278bb67d87SWolfram Sang void cpg_reg_modify(void __iomem *reg, u32 clear, u32 set);
288bb67d87SWolfram Sang 
29a31cf51bSWolfram Sang struct clk * __init cpg_sdh_clk_register(const char *name,
30a31cf51bSWolfram Sang 	void __iomem *sdnckcr, const char *parent_name,
31a31cf51bSWolfram Sang 	struct raw_notifier_head *notifiers);
32a31cf51bSWolfram Sang 
338bb67d87SWolfram Sang struct clk * __init cpg_sd_clk_register(const char *name,
34*bb6d3fa9SWolfram Sang 	void __iomem *sdnckcr, const char *parent_name);
358bb67d87SWolfram Sang 
366f21d145SWolfram Sang struct clk * __init cpg_rpc_clk_register(const char *name,
376f21d145SWolfram Sang 	void __iomem *rpcckcr, const char *parent_name,
386f21d145SWolfram Sang 	struct raw_notifier_head *notifiers);
396f21d145SWolfram Sang 
406f21d145SWolfram Sang struct clk * __init cpg_rpcd2_clk_register(const char *name,
416f21d145SWolfram Sang 					   void __iomem *rpcckcr,
426f21d145SWolfram Sang 					   const char *parent_name);
438bb67d87SWolfram Sang #endif
44