 11ad39ede2
			
		
	
	
	11ad39ede2
	
	
	
		
			
			This patch introduces new Samsung PWM driver, which is completely rewritten to be multiplatform- and DeviceTree-aware. In addition, remaining problems of old driver are fixed, such as: - proper handling of hardware variants, - synchronization on SMP systems, - handling of boundary parameter values, - hardware sharing with PWM clocksource driver, - undefined state of PWM output after stopping PWM channel. Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com> Reviewed-by: Sylwester Nawrocki <s.nawrocki@samsung.com> Tested-by: Heiko Stuebner <heiko@sntech.de> Tested-by: Mark Brown <broonie@linaro.org> Tested-by: Sylwester Nawrocki <sylvester.nawrocki@gmail.com> Acked-by: Arnd Bergmann <arnd@arndb.de> Acked-by: Thierry Reding <thierry.reding@gmail.com>
		
			
				
	
	
		
			43 lines
		
	
	
	
		
			1.3 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
	
		
			1.3 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * Copyright (C) 2013 Samsung Electronics Co., Ltd.
 | |
|  *
 | |
|  * This program is free software; you can redistribute it and/or modify
 | |
|  * it under the terms of the GNU General Public License version 2 as
 | |
|  * published by the Free Software Foundation.
 | |
|  *
 | |
|  * This program is distributed in the hope that it will be useful,
 | |
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
|  * GNU General Public License for more details.
 | |
|  *
 | |
|  * You should have received a copy of the GNU General Public License
 | |
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | |
|  */
 | |
| #ifndef __CLOCKSOURCE_SAMSUNG_PWM_H
 | |
| #define __CLOCKSOURCE_SAMSUNG_PWM_H
 | |
| 
 | |
| #include <linux/spinlock.h>
 | |
| 
 | |
| #define SAMSUNG_PWM_NUM		5
 | |
| 
 | |
| /*
 | |
|  * Following declaration must be in an ifdef due to this symbol being static
 | |
|  * in pwm-samsung driver if the clocksource driver is not compiled in and the
 | |
|  * spinlock is not shared between both drivers.
 | |
|  */
 | |
| #ifdef CONFIG_CLKSRC_SAMSUNG_PWM
 | |
| extern spinlock_t samsung_pwm_lock;
 | |
| #endif
 | |
| 
 | |
| struct samsung_pwm_variant {
 | |
| 	u8 bits;
 | |
| 	u8 div_base;
 | |
| 	u8 tclk_mask;
 | |
| 	u8 output_mask;
 | |
| 	bool has_tint_cstat;
 | |
| };
 | |
| 
 | |
| void samsung_pwm_clocksource_init(void __iomem *base,
 | |
| 		unsigned int *irqs, struct samsung_pwm_variant *variant);
 | |
| 
 | |
| #endif /* __CLOCKSOURCE_SAMSUNG_PWM_H */
 |