1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Copyright (c) 2016 Maxime Ripard. All rights reserved. 4*4882a593Smuzhiyun */ 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun #ifndef _CCU_RESET_H_ 7*4882a593Smuzhiyun #define _CCU_RESET_H_ 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun #include <linux/reset-controller.h> 10*4882a593Smuzhiyun #include <linux/spinlock.h> 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun struct ccu_reset_map { 13*4882a593Smuzhiyun u16 reg; 14*4882a593Smuzhiyun u32 bit; 15*4882a593Smuzhiyun }; 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun struct ccu_reset { 19*4882a593Smuzhiyun void __iomem *base; 20*4882a593Smuzhiyun struct ccu_reset_map *reset_map; 21*4882a593Smuzhiyun spinlock_t *lock; 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun struct reset_controller_dev rcdev; 24*4882a593Smuzhiyun }; 25*4882a593Smuzhiyun rcdev_to_ccu_reset(struct reset_controller_dev * rcdev)26*4882a593Smuzhiyunstatic inline struct ccu_reset *rcdev_to_ccu_reset(struct reset_controller_dev *rcdev) 27*4882a593Smuzhiyun { 28*4882a593Smuzhiyun return container_of(rcdev, struct ccu_reset, rcdev); 29*4882a593Smuzhiyun } 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun extern const struct reset_control_ops ccu_reset_ops; 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun #endif /* _CCU_RESET_H_ */ 34