forked from mirrors/linux
		
	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 */
 |