2 #ifndef __RKXX_PWM_REMOTECTL_H__
\r
3 #define __RKXX_PWM_REMOTECTL_H__
\r
4 #include <linux/input.h>
\r
6 #define MAX_NUM_KEYS 60
\r
9 #define PWM_REG_CNTR 0x00 /* Counter Register */
\r
10 #define PWM_REG_HPR 0x04 /* Period Register */
\r
11 #define PWM_REG_LPR 0x08 /* Duty Cycle Register */
\r
12 #define PWM_REG_CTRL 0x0c /* Control Register */
\r
13 #define PWM3_REG_INTSTS 0x10 /* Interrupt Status Refister For Pwm3*/
\r
14 #define PWM2_REG_INTSTS 0x20 /* Interrupt Status Refister For Pwm2*/
\r
15 #define PWM1_REG_INTSTS 0x30 /* Interrupt Status Refister For Pwm1*/
\r
16 #define PWM0_REG_INTSTS 0x40 /* Interrupt Status Refister For Pwm0*/
\r
17 #define PWM3_REG_INT_EN 0x14 /* Interrupt Enable Refister For Pwm3*/
\r
18 #define PWM2_REG_INT_EN 0x24 /* Interrupt Enable Refister For Pwm2*/
\r
19 #define PWM1_REG_INT_EN 0x34 /* Interrupt Enable Refister For Pwm1*/
\r
20 #define PWM0_REG_INT_EN 0x44 /* Interrupt Enable Refister For Pwm0*/
\r
22 /*REG_CTRL bits definitions*/
\r
23 #define PWM_ENABLE (1 << 0)
\r
24 #define PWM_DISABLE (0 << 0)
\r
27 #define PWM_MODE_ONESHOT (0x00 << 1)
\r
28 #define PWM_MODE_CONTINUMOUS (0x01 << 1)
\r
29 #define PWM_MODE_CAPTURE (0x02 << 1)
\r
31 /*duty cycle output polarity*/
\r
32 #define PWM_DUTY_POSTIVE (0x01 << 3)
\r
33 #define PWM_DUTY_NEGATIVE (0x00 << 3)
\r
35 /*incative state output polarity*/
\r
36 #define PWM_INACTIVE_POSTIVE (0x01 << 4)
\r
37 #define PWM_INACTIVE_NEGATIVE (0x00 << 4)
\r
39 /*clock source select*/
\r
40 #define PWM_CLK_SCALE (1 << 9)
\r
41 #define PWM_CLK_NON_SCALE (0 << 9)
\r
43 #define PWM_CH0_INT (1 << 0)
\r
44 #define PWM_CH1_INT (1 << 1)
\r
45 #define PWM_CH2_INT (1 << 2)
\r
46 #define PWM_CH3_INT (1 << 3)
\r
48 #define PWM_CH0_POL (1 << 8)
\r
49 #define PWM_CH1_POL (1 << 9)
\r
50 #define PWM_CH2_POL (1 << 10)
\r
51 #define PWM_CH3_POL (1 << 11)
\r
53 #define PWM_CH0_INT_ENABLE (1 << 0)
\r
54 #define PWM_CH0_INT_DISABLE (0 << 0)
\r
56 #define PWM_CH1_INT_ENABLE (1 << 0)
\r
57 #define PWM_CH1_INT_DISABLE (0 << 1)
\r
59 #define PWM_CH2_INT_ENABLE (1 << 2)
\r
60 #define PWM_CH2_INT_DISABLE (0 << 2)
\r
62 #define PWM_CH3_INT_ENABLE (1 << 3)
\r
63 #define PWM_CH3_INT_DISABLE (0 << 3)
\r
66 #define PWMCR_MIN_PRESCALE 0x00
\r
67 #define PWMCR_MAX_PRESCALE 0x07
\r
69 #define PWMDCR_MIN_DUTY 0x0001
\r
70 #define PWMDCR_MAX_DUTY 0xFFFF
\r
72 #define PWMPCR_MIN_PERIOD 0x0001
\r
73 #define PWMPCR_MAX_PERIOD 0xFFFF
\r
75 #define PWMPCR_MIN_PERIOD 0x0001
\r
76 #define PWMPCR_MAX_PERIOD 0xFFFF
\r
79 PWM_DIV1 = (0x0 << 12),
\r
80 PWM_DIV2 = (0x1 << 12),
\r
81 PWM_DIV4 = (0x2 << 12),
\r
82 PWM_DIV8 = (0x3 << 12),
\r
83 PWM_DIV16 = (0x4 << 12),
\r
84 PWM_DIV32 = (0x5 << 12),
\r
85 PWM_DIV64 = (0x6 << 12),
\r
86 PWM_DIV128 = (0x7 << 12),
\r
92 /********************************************************************
\r
94 ********************************************************************/
\r
95 #define RK_PWM_TIME_PRE_MIN 4000
96 #define RK_PWM_TIME_PRE_MAX 5000
98 #define RK_PWM_TIME_BIT0_MIN 480
99 #define RK_PWM_TIME_BIT0_MAX 700
101 #define RK_PWM_TIME_BIT1_MIN 1300
102 #define RK_PWM_TIME_BIT1_MAX 2000
104 #define RK_PWM_TIME_RPT_MIN 2000
105 #define RK_PWM_TIME_RPT_MAX 2500
107 #define RK_PWM_TIME_SEQ1_MIN 95000
108 #define RK_PWM_TIME_SEQ1_MAX 98000
110 #define RK_PWM_TIME_SEQ2_MIN 30000
111 #define RK_PWM_TIME_SEQ2_MAX 55000
114 #define PWM_REG_INTSTS(n) ((4 - (n)) * 0x10)
115 #define PWM_CH_INT(n) BIT(n)
116 #define PWM_CH_POL(n) BIT(n+8)
119 /********************************************************************
\r
121 ********************************************************************/
\r
122 typedef enum _RMC_STATE
\r
132 struct RKxx_remotectl_platform_data {
\r
133 //struct rkxx_remotectl_button *buttons;
\r