1# SPDX-License-Identifier: GPL-2.0
2#
3# For a description of the syntax of this configuration file,
4# see Documentation/kbuild/kconfig-language.txt.
5#
6# Auxiliary display drivers configuration.
7#
8
9menuconfig AUXDISPLAY
10	bool "Auxiliary Display support"
11	---help---
12	  Say Y here to get to see options for auxiliary display drivers.
13	  This option alone does not add any kernel code.
14
15	  If you say N, all options in this submenu will be skipped and disabled.
16
17if AUXDISPLAY
18
19config HD44780
20	tristate "HD44780 Character LCD support"
21	depends on GPIOLIB || COMPILE_TEST
22	select CHARLCD
23	---help---
24	  Enable support for Character LCDs using a HD44780 controller.
25	  The LCD is accessible through the /dev/lcd char device (10, 156).
26	  This code can either be compiled as a module, or linked into the
27	  kernel and started at boot.
28	  If you don't understand what all this is about, say N.
29
30config KS0108
31	tristate "KS0108 LCD Controller"
32	depends on PARPORT_PC
33	default n
34	---help---
35	  If you have a LCD controlled by one or more KS0108
36	  controllers, say Y. You will need also another more specific
37	  driver for your LCD.
38
39	  Depends on Parallel Port support. If you say Y at
40	  parport, you will be able to compile this as a module (M)
41	  and built-in as well (Y).
42
43	  To compile this as a module, choose M here:
44	  the module will be called ks0108.
45
46	  If unsure, say N.
47
48config KS0108_PORT
49	hex "Parallel port where the LCD is connected"
50	depends on KS0108
51	default 0x378
52	---help---
53	  The address of the parallel port where the LCD is connected.
54
55	  The first  standard parallel port address is 0x378.
56	  The second standard parallel port address is 0x278.
57	  The third  standard parallel port address is 0x3BC.
58
59	  You can specify a different address if you need.
60
61	  If you don't know what I'm talking about, load the parport module,
62	  and execute "dmesg" or "cat /proc/ioports". You can see there how
63	  many parallel ports are present and which address each one has.
64
65	  Usually you only need to use 0x378.
66
67	  If you compile this as a module, you can still override this
68	  using the module parameters.
69
70config KS0108_DELAY
71	int "Delay between each control writing (microseconds)"
72	depends on KS0108
73	default "2"
74	---help---
75	  Amount of time the ks0108 should wait between each control write
76	  to the parallel port.
77
78	  If your LCD seems to miss random writings, increment this.
79
80	  If you don't know what I'm talking about, ignore it.
81
82	  If you compile this as a module, you can still override this
83	  value using the module parameters.
84
85config CFAG12864B
86	tristate "CFAG12864B LCD"
87	depends on X86
88	depends on FB
89	depends on KS0108
90	select FB_SYS_FILLRECT
91	select FB_SYS_COPYAREA
92	select FB_SYS_IMAGEBLIT
93	select FB_SYS_FOPS
94	default n
95	---help---
96	  If you have a Crystalfontz 128x64 2-color LCD, cfag12864b Series,
97	  say Y. You also need the ks0108 LCD Controller driver.
98
99	  For help about how to wire your LCD to the parallel port,
100	  check Documentation/auxdisplay/cfag12864b
101
102	  Depends on the x86 arch and the framebuffer support.
103
104	  The LCD framebuffer driver can be attached to a console.
105	  It will work fine. However, you can't attach it to the fbdev driver
106	  of the xorg server.
107
108	  To compile this as a module, choose M here:
109	  the modules will be called cfag12864b and cfag12864bfb.
110
111	  If unsure, say N.
112
113config CFAG12864B_RATE
114       int "Refresh rate (hertz)"
115	depends on CFAG12864B
116	default "20"
117	---help---
118	  Refresh rate of the LCD.
119
120	  As the LCD is not memory mapped, the driver has to make the work by
121	  software. This means you should be careful setting this value higher.
122	  If your CPUs are really slow or you feel the system is slowed down,
123	  decrease the value.
124
125	  Be careful modifying this value to a very high value:
126	  You can freeze the computer, or the LCD maybe can't draw as fast as you
127	  are requesting.
128
129	  If you don't know what I'm talking about, ignore it.
130
131	  If you compile this as a module, you can still override this
132	  value using the module parameters.
133
134config IMG_ASCII_LCD
135	tristate "Imagination Technologies ASCII LCD Display"
136	depends on HAS_IOMEM
137	default y if MIPS_MALTA
138	select MFD_SYSCON
139	help
140	  Enable this to support the simple ASCII LCD displays found on
141	  development boards such as the MIPS Boston, MIPS Malta & MIPS SEAD3
142	  from Imagination Technologies.
143
144config HT16K33
145	tristate "Holtek Ht16K33 LED controller with keyscan"
146	depends on FB && OF && I2C && INPUT
147	select FB_SYS_FOPS
148	select FB_SYS_FILLRECT
149	select FB_SYS_COPYAREA
150	select FB_SYS_IMAGEBLIT
151	select INPUT_MATRIXKMAP
152	select FB_BACKLIGHT
153	help
154	  Say yes here to add support for Holtek HT16K33, RAM mapping 16*8
155	  LED controller driver with keyscan.
156
157config ARM_CHARLCD
158	bool "ARM Ltd. Character LCD Driver"
159	depends on PLAT_VERSATILE
160	help
161	  This is a driver for the character LCD found on the ARM Ltd.
162	  Versatile and RealView Platform Baseboards. It doesn't do
163	  very much more than display the text "ARM Linux" on the first
164	  line and the Linux version on the second line, but that's
165	  still useful.
166
167endif # AUXDISPLAY
168
169menuconfig PANEL
170	tristate "Parallel port LCD/Keypad Panel support"
171	depends on PARPORT
172	select CHARLCD
173	---help---
174	  Say Y here if you have an HD44780 or KS-0074 LCD connected to your
175	  parallel port. This driver also features 4 and 6-key keypads. The LCD
176	  is accessible through the /dev/lcd char device (10, 156), and the
177	  keypad through /dev/keypad (10, 185). This code can either be
178	  compiled as a module, or linked into the kernel and started at boot.
179	  If you don't understand what all this is about, say N.
180
181if PANEL
182
183config PANEL_PARPORT
184	int "Default parallel port number (0=LPT1)"
185	range 0 255
186	default "0"
187	---help---
188	  This is the index of the parallel port the panel is connected to. One
189	  driver instance only supports one parallel port, so if your keypad
190	  and LCD are connected to two separate ports, you have to start two
191	  modules with different arguments. Numbering starts with '0' for LPT1,
192	  and so on.
193
194config PANEL_PROFILE
195	int "Default panel profile (0-5, 0=custom)"
196	range 0 5
197	default "5"
198	---help---
199	  To ease configuration, the driver supports different configuration
200	  profiles for past and recent wirings. These profiles can also be
201	  used to define an approximative configuration, completed by a few
202	  other options. Here are the profiles :
203
204	    0 = custom (see further)
205	    1 = 2x16 parallel LCD, old keypad
206	    2 = 2x16 serial LCD (KS-0074), new keypad
207	    3 = 2x16 parallel LCD (Hantronix), no keypad
208	    4 = 2x16 parallel LCD (Nexcom NSA1045) with Nexcom's keypad
209	    5 = 2x40 parallel LCD (old one), with old keypad
210
211	  Custom configurations allow you to define how your display is
212	  wired to the parallel port, and how it works. This is only intended
213	  for experts.
214
215config PANEL_KEYPAD
216	depends on PANEL_PROFILE="0"
217	int "Keypad type (0=none, 1=old 6 keys, 2=new 6 keys, 3=Nexcom 4 keys)"
218	range 0 3
219	default 0
220	---help---
221	  This enables and configures a keypad connected to the parallel port.
222	  The keys will be read from character device 10,185. Valid values are :
223
224	    0 : do not enable this driver
225	    1 : old 6 keys keypad
226	    2 : new 6 keys keypad, as used on the server at www.ant-computing.com
227	    3 : Nexcom NSA1045's 4 keys keypad
228
229	  New profiles can be described in the driver source. The driver also
230	  supports simultaneous keys pressed when the keypad supports them.
231
232config PANEL_LCD
233	depends on PANEL_PROFILE="0"
234	int "LCD type (0=none, 1=custom, 2=old //, 3=ks0074, 4=hantronix, 5=Nexcom)"
235	range 0 5
236	default 0
237	---help---
238	   This enables and configures an LCD connected to the parallel port.
239	   The driver includes an interpreter for escape codes starting with
240	   '\e[L' which are specific to the LCD, and a few ANSI codes. The
241	   driver will be registered as character device 10,156, usually
242	   under the name '/dev/lcd'. There are a total of 6 supported types :
243
244	     0 : do not enable the driver
245	     1 : custom configuration and wiring (see further)
246	     2 : 2x16 & 2x40 parallel LCD (old wiring)
247	     3 : 2x16 serial LCD (KS-0074 based)
248	     4 : 2x16 parallel LCD (Hantronix wiring)
249	     5 : 2x16 parallel LCD (Nexcom wiring)
250
251	   When type '1' is specified, other options will appear to configure
252	   more precise aspects (wiring, dimensions, protocol, ...). Please note
253	   that those values changed from the 2.4 driver for better consistency.
254
255config PANEL_LCD_HEIGHT
256	depends on PANEL_PROFILE="0" && PANEL_LCD="1"
257	int "Number of lines on the LCD (1-2)"
258	range 1 2
259	default 2
260	---help---
261	  This is the number of visible character lines on the LCD in custom profile.
262	  It can either be 1 or 2.
263
264config PANEL_LCD_WIDTH
265	depends on PANEL_PROFILE="0" && PANEL_LCD="1"
266	int "Number of characters per line on the LCD (1-40)"
267	range 1 40
268	default 40
269	---help---
270	  This is the number of characters per line on the LCD in custom profile.
271	  Common values are 16,20,24,40.
272
273config PANEL_LCD_BWIDTH
274	depends on PANEL_PROFILE="0" && PANEL_LCD="1"
275	int "Internal LCD line width (1-40, 40 by default)"
276	range 1 40
277	default 40
278	---help---
279	  Most LCDs use a standard controller which supports hardware lines of 40
280	  characters, although sometimes only 16, 20 or 24 of them are really wired
281	  to the terminal. This results in some non-visible but addressable characters,
282	  and is the case for most parallel LCDs. Other LCDs, and some serial ones,
283	  however, use the same line width internally as what is visible. The KS0074
284	  for example, uses 16 characters per line for 16 visible characters per line.
285
286	  This option lets you configure the value used by your LCD in 'custom' profile.
287	  If you don't know, put '40' here.
288
289config PANEL_LCD_HWIDTH
290	depends on PANEL_PROFILE="0" && PANEL_LCD="1"
291	int "Hardware LCD line width (1-64, 64 by default)"
292	range 1 64
293	default 64
294	---help---
295	  Most LCDs use a single address bit to differentiate line 0 and line 1. Since
296	  some of them need to be able to address 40 chars with the lower bits, they
297	  often use the immediately superior power of 2, which is 64, to address the
298	  next line.
299
300	  If you don't know what your LCD uses, in doubt let 16 here for a 2x16, and
301	  64 here for a 2x40.
302
303config PANEL_LCD_CHARSET
304	depends on PANEL_PROFILE="0" && PANEL_LCD="1"
305	int "LCD character set (0=normal, 1=KS0074)"
306	range 0 1
307	default 0
308	---help---
309	  Some controllers such as the KS0074 use a somewhat strange character set
310	  where many symbols are at unusual places. The driver knows how to map
311	  'standard' ASCII characters to the character sets used by these controllers.
312	  Valid values are :
313
314	     0 : normal (untranslated) character set
315	     1 : KS0074 character set
316
317	  If you don't know, use the normal one (0).
318
319config PANEL_LCD_PROTO
320	depends on PANEL_PROFILE="0" && PANEL_LCD="1"
321	int "LCD communication mode (0=parallel 8 bits, 1=serial)"
322	range 0 1
323	default 0
324	---help---
325	  This driver now supports any serial or parallel LCD wired to a parallel
326	  port. But before assigning signals, the driver needs to know if it will
327	  be driving a serial LCD or a parallel one. Serial LCDs only use 2 wires
328	  (SDA/SCL), while parallel ones use 2 or 3 wires for the control signals
329	  (E, RS, sometimes RW), and 4 or 8 for the data. Use 0 here for a 8 bits
330	  parallel LCD, and 1 for a serial LCD.
331
332config PANEL_LCD_PIN_E
333	depends on PANEL_PROFILE="0" && PANEL_LCD="1" && PANEL_LCD_PROTO="0"
334        int "Parallel port pin number & polarity connected to the LCD E signal (-17...17) "
335	range -17 17
336	default 14
337	---help---
338	  This describes the number of the parallel port pin to which the LCD 'E'
339	  signal has been connected. It can be :
340
341	          0 : no connection (eg: connected to ground)
342	      1..17 : directly connected to any of these pins on the DB25 plug
343	    -1..-17 : connected to the same pin through an inverter (eg: transistor).
344
345	  Default for the 'E' pin in custom profile is '14' (AUTOFEED).
346
347config PANEL_LCD_PIN_RS
348	depends on PANEL_PROFILE="0" && PANEL_LCD="1" && PANEL_LCD_PROTO="0"
349        int "Parallel port pin number & polarity connected to the LCD RS signal (-17...17) "
350	range -17 17
351	default 17
352	---help---
353	  This describes the number of the parallel port pin to which the LCD 'RS'
354	  signal has been connected. It can be :
355
356	          0 : no connection (eg: connected to ground)
357	      1..17 : directly connected to any of these pins on the DB25 plug
358	    -1..-17 : connected to the same pin through an inverter (eg: transistor).
359
360	  Default for the 'RS' pin in custom profile is '17' (SELECT IN).
361
362config PANEL_LCD_PIN_RW
363	depends on PANEL_PROFILE="0" && PANEL_LCD="1" && PANEL_LCD_PROTO="0"
364        int "Parallel port pin number & polarity connected to the LCD RW signal (-17...17) "
365	range -17 17
366	default 16
367	---help---
368	  This describes the number of the parallel port pin to which the LCD 'RW'
369	  signal has been connected. It can be :
370
371	          0 : no connection (eg: connected to ground)
372	      1..17 : directly connected to any of these pins on the DB25 plug
373	    -1..-17 : connected to the same pin through an inverter (eg: transistor).
374
375	  Default for the 'RW' pin in custom profile is '16' (INIT).
376
377config PANEL_LCD_PIN_SCL
378	depends on PANEL_PROFILE="0" && PANEL_LCD="1" && PANEL_LCD_PROTO!="0"
379        int "Parallel port pin number & polarity connected to the LCD SCL signal (-17...17) "
380	range -17 17
381	default 1
382	---help---
383	  This describes the number of the parallel port pin to which the serial
384	  LCD 'SCL' signal has been connected. It can be :
385
386	          0 : no connection (eg: connected to ground)
387	      1..17 : directly connected to any of these pins on the DB25 plug
388	    -1..-17 : connected to the same pin through an inverter (eg: transistor).
389
390	  Default for the 'SCL' pin in custom profile is '1' (STROBE).
391
392config PANEL_LCD_PIN_SDA
393	depends on PANEL_PROFILE="0" && PANEL_LCD="1" && PANEL_LCD_PROTO!="0"
394        int "Parallel port pin number & polarity connected to the LCD SDA signal (-17...17) "
395	range -17 17
396	default 2
397	---help---
398	  This describes the number of the parallel port pin to which the serial
399	  LCD 'SDA' signal has been connected. It can be :
400
401	          0 : no connection (eg: connected to ground)
402	      1..17 : directly connected to any of these pins on the DB25 plug
403	    -1..-17 : connected to the same pin through an inverter (eg: transistor).
404
405	  Default for the 'SDA' pin in custom profile is '2' (D0).
406
407config PANEL_LCD_PIN_BL
408	depends on PANEL_PROFILE="0" && PANEL_LCD="1"
409        int "Parallel port pin number & polarity connected to the LCD backlight signal (-17...17) "
410	range -17 17
411	default 0
412	---help---
413	  This describes the number of the parallel port pin to which the LCD 'BL' signal
414          has been connected. It can be :
415
416	          0 : no connection (eg: connected to ground)
417	      1..17 : directly connected to any of these pins on the DB25 plug
418	    -1..-17 : connected to the same pin through an inverter (eg: transistor).
419
420	  Default for the 'BL' pin in custom profile is '0' (uncontrolled).
421
422config PANEL_CHANGE_MESSAGE
423	bool "Change LCD initialization message ?"
424	default "n"
425	---help---
426	  This allows you to replace the boot message indicating the kernel version
427	  and the driver version with a custom message. This is useful on appliances
428	  where a simple 'Starting system' message can be enough to stop a customer
429	  from worrying.
430
431	  If you say 'Y' here, you'll be able to choose a message yourself. Otherwise,
432	  say 'N' and keep the default message with the version.
433
434config PANEL_BOOT_MESSAGE
435	depends on PANEL_CHANGE_MESSAGE="y"
436	string "New initialization message"
437	default ""
438	---help---
439	  This allows you to replace the boot message indicating the kernel version
440	  and the driver version with a custom message. This is useful on appliances
441	  where a simple 'Starting system' message can be enough to stop a customer
442	  from worrying.
443
444	  An empty message will only clear the display at driver init time. Any other
445	  printf()-formatted message is valid with newline and escape codes.
446
447endif # PANEL
448
449config CHARLCD
450	tristate "Character LCD core support" if COMPILE_TEST
451