18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Copyright (c) 2016 Maxime Ripard. All rights reserved. 48c2ecf20Sopenharmony_ci */ 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci#ifndef _CCU_RESET_H_ 78c2ecf20Sopenharmony_ci#define _CCU_RESET_H_ 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_ci#include <linux/reset-controller.h> 108c2ecf20Sopenharmony_ci#include <linux/spinlock.h> 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_cistruct ccu_reset_map { 138c2ecf20Sopenharmony_ci u16 reg; 148c2ecf20Sopenharmony_ci u32 bit; 158c2ecf20Sopenharmony_ci}; 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_cistruct ccu_reset { 198c2ecf20Sopenharmony_ci void __iomem *base; 208c2ecf20Sopenharmony_ci struct ccu_reset_map *reset_map; 218c2ecf20Sopenharmony_ci spinlock_t *lock; 228c2ecf20Sopenharmony_ci 238c2ecf20Sopenharmony_ci struct reset_controller_dev rcdev; 248c2ecf20Sopenharmony_ci}; 258c2ecf20Sopenharmony_ci 268c2ecf20Sopenharmony_cistatic inline struct ccu_reset *rcdev_to_ccu_reset(struct reset_controller_dev *rcdev) 278c2ecf20Sopenharmony_ci{ 288c2ecf20Sopenharmony_ci return container_of(rcdev, struct ccu_reset, rcdev); 298c2ecf20Sopenharmony_ci} 308c2ecf20Sopenharmony_ci 318c2ecf20Sopenharmony_ciextern const struct reset_control_ops ccu_reset_ops; 328c2ecf20Sopenharmony_ci 338c2ecf20Sopenharmony_ci#endif /* _CCU_RESET_H_ */ 34