xref: /OK3568_Linux_fs/kernel/include/clocksource/samsung_pwm.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * Copyright (C) 2013 Samsung Electronics Co., Ltd.
4*4882a593Smuzhiyun  */
5*4882a593Smuzhiyun #ifndef __CLOCKSOURCE_SAMSUNG_PWM_H
6*4882a593Smuzhiyun #define __CLOCKSOURCE_SAMSUNG_PWM_H
7*4882a593Smuzhiyun 
8*4882a593Smuzhiyun #include <linux/spinlock.h>
9*4882a593Smuzhiyun 
10*4882a593Smuzhiyun #define SAMSUNG_PWM_NUM		5
11*4882a593Smuzhiyun 
12*4882a593Smuzhiyun /*
13*4882a593Smuzhiyun  * Following declaration must be in an ifdef due to this symbol being static
14*4882a593Smuzhiyun  * in pwm-samsung driver if the clocksource driver is not compiled in and the
15*4882a593Smuzhiyun  * spinlock is not shared between both drivers.
16*4882a593Smuzhiyun  */
17*4882a593Smuzhiyun #ifdef CONFIG_CLKSRC_SAMSUNG_PWM
18*4882a593Smuzhiyun extern spinlock_t samsung_pwm_lock;
19*4882a593Smuzhiyun #endif
20*4882a593Smuzhiyun 
21*4882a593Smuzhiyun struct samsung_pwm_variant {
22*4882a593Smuzhiyun 	u8 bits;
23*4882a593Smuzhiyun 	u8 div_base;
24*4882a593Smuzhiyun 	u8 tclk_mask;
25*4882a593Smuzhiyun 	u8 output_mask;
26*4882a593Smuzhiyun 	bool has_tint_cstat;
27*4882a593Smuzhiyun };
28*4882a593Smuzhiyun 
29*4882a593Smuzhiyun void samsung_pwm_clocksource_init(void __iomem *base,
30*4882a593Smuzhiyun 		unsigned int *irqs, struct samsung_pwm_variant *variant);
31*4882a593Smuzhiyun 
32*4882a593Smuzhiyun #endif /* __CLOCKSOURCE_SAMSUNG_PWM_H */
33