12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- /* SPDX-License-Identifier: GPL-2.0-only */
- /*
- * Copyright (C) 2021 BAIKAL ELECTRONICS, JSC
- *
- * Baikal-T1 CCU Resets interface driver
- */
- #ifndef __CLK_BT1_CCU_RST_H__
- #define __CLK_BT1_CCU_RST_H__
- #include <linux/of.h>
- #include <linux/regmap.h>
- #include <linux/reset-controller.h>
- struct ccu_rst_info;
- /*
- * enum ccu_rst_type - CCU Reset types
- * @CCU_RST_TRIG: Self-deasserted reset signal.
- * @CCU_RST_DIR: Directly controlled reset signal.
- */
- enum ccu_rst_type {
- CCU_RST_TRIG,
- CCU_RST_DIR,
- };
- /*
- * struct ccu_rst_init_data - CCU Resets initialization data
- * @sys_regs: Baikal-T1 System Controller registers map.
- * @np: Pointer to the node with the System CCU block.
- */
- struct ccu_rst_init_data {
- struct regmap *sys_regs;
- struct device_node *np;
- };
- /*
- * struct ccu_rst - CCU Reset descriptor
- * @rcdev: Reset controller descriptor.
- * @sys_regs: Baikal-T1 System Controller registers map.
- * @rsts_info: Reset flag info (base address and mask).
- */
- struct ccu_rst {
- struct reset_controller_dev rcdev;
- struct regmap *sys_regs;
- const struct ccu_rst_info *rsts_info;
- };
- #define to_ccu_rst(_rcdev) container_of(_rcdev, struct ccu_rst, rcdev)
- #ifdef CONFIG_CLK_BT1_CCU_RST
- struct ccu_rst *ccu_rst_hw_register(const struct ccu_rst_init_data *init);
- void ccu_rst_hw_unregister(struct ccu_rst *rst);
- #else
- static inline
- struct ccu_rst *ccu_rst_hw_register(const struct ccu_rst_init_data *init)
- {
- return NULL;
- }
- static inline void ccu_rst_hw_unregister(struct ccu_rst *rst) {}
- #endif
- #endif /* __CLK_BT1_CCU_RST_H__ */
|