Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
pwm-clock.h
Go to the documentation of this file.
1 /* linux/arch/arm/plat-samsung/include/plat/pwm-clock.h
2  *
3  * Copyright (c) 2010-2011 Samsung Electronics Co., Ltd.
4  * http://www.samsung.com
5  *
6  * Copyright 2008 Openmoko, Inc.
7  * Copyright 2008 Simtec Electronics
8  * Ben Dooks <[email protected]>
9  * http://armlinux.simtec.co.uk/
10  *
11  * SAMSUNG - pwm clock and timer support
12  *
13  * This program is free software; you can redistribute it and/or modify
14  * it under the terms of the GNU General Public License version 2 as
15  * published by the Free Software Foundation.
16 */
17 
18 #ifndef __ASM_PLAT_PWM_CLOCK_H
19 #define __ASM_PLAT_PWM_CLOCK_H __FILE__
20 
28 static inline int pwm_cfg_src_is_tclk(unsigned long tcfg)
29 {
30  if (soc_is_s3c24xx())
31  return tcfg == S3C2410_TCFG1_MUX_TCLK;
32  else if (soc_is_s3c64xx() || soc_is_s5pc100())
33  return tcfg >= S3C64XX_TCFG1_MUX_TCLK;
34  else if (soc_is_s5p6440() || soc_is_s5p6450())
35  return 0;
36  else
37  return tcfg == S3C64XX_TCFG1_MUX_TCLK;
38 }
39 
47 static inline unsigned long tcfg_to_divisor(unsigned long tcfg1)
48 {
49  if (soc_is_s3c24xx())
50  return 1 << (tcfg1 + 1);
51  else
52  return 1 << tcfg1;
53 }
54 
60 static inline unsigned int pwm_tdiv_has_div1(void)
61 {
62  if (soc_is_s3c24xx())
63  return 0;
64  else
65  return 1;
66 }
67 
74 static inline unsigned long pwm_tdiv_div_bits(unsigned int div)
75 {
76  if (soc_is_s3c24xx())
77  return ilog2(div) - 1;
78  else
79  return ilog2(div);
80 }
81 #endif /* __ASM_PLAT_PWM_CLOCK_H */