aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Hennerich <michael.hennerich@analog.com>2010-07-05 09:39:16 -0400
committerMike Frysinger <vapier@gentoo.org>2010-08-06 12:55:52 -0400
commit7a4a207e74d6aeb63a38e9a3f0cfc40223d5c40e (patch)
tree21d440f3cf0e3dd2be9daedd345778073d78c2d0
parent812ae98f0849fbceb32c6d21bcdda42b40264c82 (diff)
Blackfin: BF51x/BF52x: support GPIO Hysteresis/Schmitt Trigger options
Newer parts have optional Hysteresis/Schmitt Trigger options to help with dirty signals. So add some kconfig options for tuning this and enable it by default for people. Signed-off-by: Michael Hennerich <michael.hennerich@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
-rw-r--r--arch/blackfin/kernel/setup.c7
-rw-r--r--arch/blackfin/mach-bf518/Kconfig61
-rw-r--r--arch/blackfin/mach-bf518/include/mach/bf518.h105
-rw-r--r--arch/blackfin/mach-bf527/Kconfig66
-rw-r--r--arch/blackfin/mach-bf527/include/mach/bf527.h120
5 files changed, 359 insertions, 0 deletions
diff --git a/arch/blackfin/kernel/setup.c b/arch/blackfin/kernel/setup.c
index d37a397f43f5..ac71dc15cbdb 100644
--- a/arch/blackfin/kernel/setup.c
+++ b/arch/blackfin/kernel/setup.c
@@ -864,6 +864,13 @@ void __init setup_arch(char **cmdline_p)
864 bfin_write_EBIU_MODE(CONFIG_EBIU_MODEVAL); 864 bfin_write_EBIU_MODE(CONFIG_EBIU_MODEVAL);
865 bfin_write_EBIU_FCTL(CONFIG_EBIU_FCTLVAL); 865 bfin_write_EBIU_FCTL(CONFIG_EBIU_FCTLVAL);
866#endif 866#endif
867#ifdef CONFIG_BFIN_HYSTERESIS_CONTROL
868 bfin_write_PORTF_HYSTERISIS(HYST_PORTF_0_15);
869 bfin_write_PORTG_HYSTERISIS(HYST_PORTG_0_15);
870 bfin_write_PORTH_HYSTERISIS(HYST_PORTH_0_15);
871 bfin_write_MISCPORT_HYSTERISIS((bfin_read_MISCPORT_HYSTERISIS() &
872 ~HYST_NONEGPIO_MASK) | HYST_NONEGPIO);
873#endif
867 874
868 cclk = get_cclk(); 875 cclk = get_cclk();
869 sclk = get_sclk(); 876 sclk = get_sclk();
diff --git a/arch/blackfin/mach-bf518/Kconfig b/arch/blackfin/mach-bf518/Kconfig
index 4ab2d166c832..1d9f631a7f94 100644
--- a/arch/blackfin/mach-bf518/Kconfig
+++ b/arch/blackfin/mach-bf518/Kconfig
@@ -62,6 +62,67 @@ config BF518_UART1_PORTG
62 PORT G 62 PORT G
63endchoice 63endchoice
64 64
65comment "Hysteresis/Schmitt Trigger Control"
66config BFIN_HYSTERESIS_CONTROL
67 bool "Enable Hysteresis Control"
68 help
69 The ADSP-BF51x allows to control input hysteresis for Port F,
70 Port G and Port H and other processor signal inputs.
71 The Schmitt trigger enables can be set only for pin groups.
72 Saying Y will overwrite the default reset or boot loader
73 initialization.
74
75menu "PORT F"
76 depends on BFIN_HYSTERESIS_CONTROL
77config GPIO_HYST_PORTF_0_7
78 bool "Enable Hysteresis on PORTF {0...7}"
79config GPIO_HYST_PORTF_8_9
80 bool "Enable Hysteresis on PORTF {8, 9}"
81config GPIO_HYST_PORTF_10
82 bool "Enable Hysteresis on PORTF 10"
83config GPIO_HYST_PORTF_11
84 bool "Enable Hysteresis on PORTF 11"
85config GPIO_HYST_PORTF_12_13
86 bool "Enable Hysteresis on PORTF {12, 13}"
87config GPIO_HYST_PORTF_14_15
88 bool "Enable Hysteresis on PORTF {14, 15}"
89endmenu
90
91menu "PORT G"
92 depends on BFIN_HYSTERESIS_CONTROL
93config GPIO_HYST_PORTG_0
94 bool "Enable Hysteresis on PORTG 0"
95config GPIO_HYST_PORTG_1_4
96 bool "Enable Hysteresis on PORTG {1...4}"
97config GPIO_HYST_PORTG_5_6
98 bool "Enable Hysteresis on PORTG {5, 6}"
99config GPIO_HYST_PORTG_7_8
100 bool "Enable Hysteresis on PORTG {7, 8}"
101config GPIO_HYST_PORTG_9
102 bool "Enable Hysteresis on PORTG 9"
103config GPIO_HYST_PORTG_10
104 bool "Enable Hysteresis on PORTG 10"
105config GPIO_HYST_PORTG_11_13
106 bool "Enable Hysteresis on PORTG {11...13}"
107config GPIO_HYST_PORTG_14_15
108 bool "Enable Hysteresis on PORTG {14, 15}"
109endmenu
110
111menu "PORT H"
112 depends on BFIN_HYSTERESIS_CONTROL
113config GPIO_HYST_PORTH_0_7
114 bool "Enable Hysteresis on PORTH {0...7}"
115
116endmenu
117
118menu "None-GPIO"
119 depends on BFIN_HYSTERESIS_CONTROL
120config NONEGPIO_HYST_NMI_RST_BMODE
121 bool "Enable Hysteresis on {NMI, RESET, BMODE}"
122config NONEGPIO_HYST_JTAG
123 bool "Enable Hysteresis on JTAG"
124endmenu
125
65comment "Interrupt Priority Assignment" 126comment "Interrupt Priority Assignment"
66menu "Priority" 127menu "Priority"
67 128
diff --git a/arch/blackfin/mach-bf518/include/mach/bf518.h b/arch/blackfin/mach-bf518/include/mach/bf518.h
index 856b330ecf0b..6906dee4f4cc 100644
--- a/arch/blackfin/mach-bf518/include/mach/bf518.h
+++ b/arch/blackfin/mach-bf518/include/mach/bf518.h
@@ -85,6 +85,111 @@
85 85
86#define AMGCTLVAL (V_AMBEN | V_AMCKEN | V_CDPRIO) 86#define AMGCTLVAL (V_AMBEN | V_AMCKEN | V_CDPRIO)
87 87
88/**************************** Hysteresis Settings ****************************/
89
90#ifdef CONFIG_BFIN_HYSTERESIS_CONTROL
91#ifdef CONFIG_GPIO_HYST_PORTF_0_7
92#define HYST_PORTF_0_7 (1 << 0)
93#else
94#define HYST_PORTF_0_7 (0 << 0)
95#endif
96#ifdef CONFIG_GPIO_HYST_PORTF_8_9
97#define HYST_PORTF_8_9 (1 << 2)
98#else
99#define HYST_PORTF_8_9 (0 << 2)
100#endif
101#ifdef CONFIG_GPIO_HYST_PORTF_10
102#define HYST_PORTF_10 (1 << 4)
103#else
104#define HYST_PORTF_10 (0 << 4)
105#endif
106#ifdef CONFIG_GPIO_HYST_PORTF_11
107#define HYST_PORTF_11 (1 << 6)
108#else
109#define HYST_PORTF_11 (0 << 6)
110#endif
111#ifdef CONFIG_GPIO_HYST_PORTF_12_13
112#define HYST_PORTF_12_13 (1 << 8)
113#else
114#define HYST_PORTF_12_13 (0 << 8)
115#endif
116#ifdef CONFIG_GPIO_HYST_PORTF_14_15
117#define HYST_PORTF_14_15 (1 << 10)
118#else
119#define HYST_PORTF_14_15 (0 << 10)
120#endif
121
122#define HYST_PORTF_0_15 (HYST_PORTF_0_7 | HYST_PORTF_8_9 | HYST_PORTF_10 | \
123 HYST_PORTF_11 | HYST_PORTF_12_13 | HYST_PORTF_14_15)
124
125#ifdef CONFIG_GPIO_HYST_PORTG_0
126#define HYST_PORTG_0 (1 << 0)
127#else
128#define HYST_PORTG_0 (0 << 0)
129#endif
130#ifdef CONFIG_GPIO_HYST_PORTG_1_4
131#define HYST_PORTG_1_4 (1 << 2)
132#else
133#define HYST_PORTG_1_4 (0 << 2)
134#endif
135#ifdef CONFIG_GPIO_HYST_PORTG_5_6
136#define HYST_PORTG_5_6 (1 << 4)
137#else
138#define HYST_PORTG_5_6 (0 << 4)
139#endif
140#ifdef CONFIG_GPIO_HYST_PORTG_7_8
141#define HYST_PORTG_7_8 (1 << 6)
142#else
143#define HYST_PORTG_7_8 (0 << 6)
144#endif
145#ifdef CONFIG_GPIO_HYST_PORTG_9
146#define HYST_PORTG_9 (1 << 8)
147#else
148#define HYST_PORTG_9 (0 << 8)
149#endif
150#ifdef CONFIG_GPIO_HYST_PORTG_10
151#define HYST_PORTG_10 (1 << 10)
152#else
153#define HYST_PORTG_10 (0 << 10)
154#endif
155#ifdef CONFIG_GPIO_HYST_PORTG_11_13
156#define HYST_PORTG_11_13 (1 << 12)
157#else
158#define HYST_PORTG_11_13 (0 << 12)
159#endif
160#ifdef CONFIG_GPIO_HYST_PORTG_14_15
161#define HYST_PORTG_14_15 (1 << 14)
162#else
163#define HYST_PORTG_14_15 (0 << 14)
164#endif
165
166#define HYST_PORTG_0_15 (HYST_PORTG_0 | HYST_PORTG_1_4 | HYST_PORTG_5_6 | \
167 HYST_PORTG_7_8 | HYST_PORTG_9 | HYST_PORTG_10 | \
168 HYST_PORTG_11_13 | HYST_PORTG_14_15)
169
170#ifdef CONFIG_GPIO_HYST_PORTH_0_7
171#define HYST_PORTH_0_7 (1 << 0)
172#else
173#define HYST_PORTH_0_7 (0 << 0)
174#endif
175
176#define HYST_PORTH_0_15 (HYST_PORTH_0_7)
177
178#ifdef CONFIG_NONEGPIO_HYST_NMI_RST_BMODE
179#define HYST_NMI_RST_BMODE (1 << 2)
180#else
181#define HYST_NMI_RST_BMODE (0 << 2)
182#endif
183#ifdef CONFIG_NONEGPIO_HYST_JTAG
184#define HYST_JTAG (1 << 4)
185#else
186#define HYST_JTAG (0 << 4)
187#endif
188
189#define HYST_NONEGPIO (HYST_NMI_RST_BMODE | HYST_JTAG)
190#define HYST_NONEGPIO_MASK (0x3C)
191#endif /* CONFIG_BFIN_HYSTERESIS_CONTROL */
192
88#ifdef CONFIG_BF518 193#ifdef CONFIG_BF518
89#define CPU "BF518" 194#define CPU "BF518"
90#define CPUID 0x27e8 195#define CPUID 0x27e8
diff --git a/arch/blackfin/mach-bf527/Kconfig b/arch/blackfin/mach-bf527/Kconfig
index 1f8cbe9d6b9a..0ba54701af0b 100644
--- a/arch/blackfin/mach-bf527/Kconfig
+++ b/arch/blackfin/mach-bf527/Kconfig
@@ -79,6 +79,72 @@ config BF527_NAND_D_PORTH
79 PORT H 79 PORT H
80endchoice 80endchoice
81 81
82comment "Hysteresis/Schmitt Trigger Control"
83config BFIN_HYSTERESIS_CONTROL
84 bool "Enable Hysteresis Control"
85 help
86 The ADSP-BF52x allows to control input hysteresis for Port F,
87 Port G and Port H and other processor signal inputs.
88 The Schmitt trigger enables can be set only for pin groups.
89 Saying Y will overwrite the default reset or boot loader
90 initialization.
91
92menu "PORT F"
93 depends on BFIN_HYSTERESIS_CONTROL
94config GPIO_HYST_PORTF_0_7
95 bool "Enable Hysteresis on PORTF {0...7}"
96config GPIO_HYST_PORTF_8_9
97 bool "Enable Hysteresis on PORTF {8, 9}"
98config GPIO_HYST_PORTF_10
99 bool "Enable Hysteresis on PORTF 10"
100config GPIO_HYST_PORTF_11
101 bool "Enable Hysteresis on PORTF 11"
102config GPIO_HYST_PORTF_12_13
103 bool "Enable Hysteresis on PORTF {12, 13}"
104config GPIO_HYST_PORTF_14_15
105 bool "Enable Hysteresis on PORTF {14, 15}"
106endmenu
107
108menu "PORT G"
109 depends on BFIN_HYSTERESIS_CONTROL
110config GPIO_HYST_PORTG_0
111 bool "Enable Hysteresis on PORTG 0"
112config GPIO_HYST_PORTG_1_4
113 bool "Enable Hysteresis on PORTG {1...4}"
114config GPIO_HYST_PORTG_5_6
115 bool "Enable Hysteresis on PORTG {5, 6}"
116config GPIO_HYST_PORTG_7_8
117 bool "Enable Hysteresis on PORTG {7, 8}"
118config GPIO_HYST_PORTG_9
119 bool "Enable Hysteresis on PORTG 9"
120config GPIO_HYST_PORTG_10
121 bool "Enable Hysteresis on PORTG 10"
122config GPIO_HYST_PORTG_11_13
123 bool "Enable Hysteresis on PORTG {11...13}"
124config GPIO_HYST_PORTG_14_15
125 bool "Enable Hysteresis on PORTG {14, 15}"
126endmenu
127
128menu "PORT H"
129 depends on BFIN_HYSTERESIS_CONTROL
130config GPIO_HYST_PORTH_0_7
131 bool "Enable Hysteresis on PORTH {0...7}"
132config GPIO_HYST_PORTH_8
133 bool "Enable Hysteresis on PORTH 8"
134config GPIO_HYST_PORTH_9_15
135 bool "Enable Hysteresis on PORTH {9...15}"
136endmenu
137
138menu "None-GPIO"
139 depends on BFIN_HYSTERESIS_CONTROL
140config NONEGPIO_HYST_TMR0_FS1_PPICLK
141 bool "Enable Hysteresis on {TMR0, PPI_FS1, PPI_CLK}"
142config NONEGPIO_HYST_NMI_RST_BMODE
143 bool "Enable Hysteresis on {NMI, RESET, BMODE}"
144config NONEGPIO_HYST_JTAG
145 bool "Enable Hysteresis on JTAG"
146endmenu
147
82comment "Interrupt Priority Assignment" 148comment "Interrupt Priority Assignment"
83menu "Priority" 149menu "Priority"
84 150
diff --git a/arch/blackfin/mach-bf527/include/mach/bf527.h b/arch/blackfin/mach-bf527/include/mach/bf527.h
index ff68c8897087..8ff155b34f64 100644
--- a/arch/blackfin/mach-bf527/include/mach/bf527.h
+++ b/arch/blackfin/mach-bf527/include/mach/bf527.h
@@ -85,6 +85,126 @@
85 85
86#define AMGCTLVAL (V_AMBEN | V_AMCKEN | V_CDPRIO) 86#define AMGCTLVAL (V_AMBEN | V_AMCKEN | V_CDPRIO)
87 87
88/**************************** Hysteresis Settings ****************************/
89
90#ifdef CONFIG_BFIN_HYSTERESIS_CONTROL
91#ifdef CONFIG_GPIO_HYST_PORTF_0_7
92#define HYST_PORTF_0_7 (1 << 0)
93#else
94#define HYST_PORTF_0_7 (0 << 0)
95#endif
96#ifdef CONFIG_GPIO_HYST_PORTF_8_9
97#define HYST_PORTF_8_9 (1 << 2)
98#else
99#define HYST_PORTF_8_9 (0 << 2)
100#endif
101#ifdef CONFIG_GPIO_HYST_PORTF_10
102#define HYST_PORTF_10 (1 << 4)
103#else
104#define HYST_PORTF_10 (0 << 4)
105#endif
106#ifdef CONFIG_GPIO_HYST_PORTF_11
107#define HYST_PORTF_11 (1 << 6)
108#else
109#define HYST_PORTF_11 (0 << 6)
110#endif
111#ifdef CONFIG_GPIO_HYST_PORTF_12_13
112#define HYST_PORTF_12_13 (1 << 8)
113#else
114#define HYST_PORTF_12_13 (0 << 8)
115#endif
116#ifdef CONFIG_GPIO_HYST_PORTF_14_15
117#define HYST_PORTF_14_15 (1 << 10)
118#else
119#define HYST_PORTF_14_15 (0 << 10)
120#endif
121
122#define HYST_PORTF_0_15 (HYST_PORTF_0_7 | HYST_PORTF_8_9 | HYST_PORTF_10 | \
123 HYST_PORTF_11 | HYST_PORTF_12_13 | HYST_PORTF_14_15)
124
125#ifdef CONFIG_GPIO_HYST_PORTG_0
126#define HYST_PORTG_0 (1 << 0)
127#else
128#define HYST_PORTG_0 (0 << 0)
129#endif
130#ifdef CONFIG_GPIO_HYST_PORTG_1_4
131#define HYST_PORTG_1_4 (1 << 2)
132#else
133#define HYST_PORTG_1_4 (0 << 2)
134#endif
135#ifdef CONFIG_GPIO_HYST_PORTG_5_6
136#define HYST_PORTG_5_6 (1 << 4)
137#else
138#define HYST_PORTG_5_6 (0 << 4)
139#endif
140#ifdef CONFIG_GPIO_HYST_PORTG_7_8
141#define HYST_PORTG_7_8 (1 << 6)
142#else
143#define HYST_PORTG_7_8 (0 << 6)
144#endif
145#ifdef CONFIG_GPIO_HYST_PORTG_9
146#define HYST_PORTG_9 (1 << 8)
147#else
148#define HYST_PORTG_9 (0 << 8)
149#endif
150#ifdef CONFIG_GPIO_HYST_PORTG_10
151#define HYST_PORTG_10 (1 << 10)
152#else
153#define HYST_PORTG_10 (0 << 10)
154#endif
155#ifdef CONFIG_GPIO_HYST_PORTG_11_13
156#define HYST_PORTG_11_13 (1 << 12)
157#else
158#define HYST_PORTG_11_13 (0 << 12)
159#endif
160#ifdef CONFIG_GPIO_HYST_PORTG_14_15
161#define HYST_PORTG_14_15 (1 << 14)
162#else
163#define HYST_PORTG_14_15 (0 << 14)
164#endif
165
166#define HYST_PORTG_0_15 (HYST_PORTG_0 | HYST_PORTG_1_4 | HYST_PORTG_5_6 | \
167 HYST_PORTG_7_8 | HYST_PORTG_9 | HYST_PORTG_10 | \
168 HYST_PORTG_11_13 | HYST_PORTG_14_15)
169
170#ifdef CONFIG_GPIO_HYST_PORTH_0_7
171#define HYST_PORTH_0_7 (1 << 0)
172#else
173#define HYST_PORTH_0_7 (0 << 0)
174#endif
175#ifdef CONFIG_GPIO_HYST_PORTH_8
176#define HYST_PORTH_8 (1 << 2)
177#else
178#define HYST_PORTH_8 (0 << 2)
179#endif
180#ifdef CONFIG_GPIO_HYST_PORTH_9_15
181#define HYST_PORTH_9_15 (1 << 4)
182#else
183#define HYST_PORTH_9_15 (0 << 4)
184#endif
185
186#define HYST_PORTH_0_15 (HYST_PORTH_0_7 | HYST_PORTH_8 | HYST_PORTH_9_15)
187
188#ifdef CONFIG_NONEGPIO_HYST_TMR0_FS1_PPICLK
189#define HYST_TMR0_FS1_PPICLK (1 << 0)
190#else
191#define HYST_TMR0_FS1_PPICLK (0 << 0)
192#endif
193#ifdef CONFIG_NONEGPIO_HYST_NMI_RST_BMODE
194#define HYST_NMI_RST_BMODE (1 << 2)
195#else
196#define HYST_NMI_RST_BMODE (0 << 2)
197#endif
198#ifdef CONFIG_NONEGPIO_HYST_JTAG
199#define HYST_JTAG (1 << 4)
200#else
201#define HYST_JTAG (0 << 4)
202#endif
203
204#define HYST_NONEGPIO (HYST_TMR0_FS1_PPICLK | HYST_NMI_RST_BMODE | HYST_JTAG)
205#define HYST_NONEGPIO_MASK (0x3F)
206#endif /* CONFIG_BFIN_HYSTERESIS_CONTROL */
207
88#ifdef CONFIG_BF527 208#ifdef CONFIG_BF527
89#define CPU "BF527" 209#define CPU "BF527"
90#define CPUID 0x27e0 210#define CPUID 0x27e0