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