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