Linux Audio

Check our new training course

Loading...
v5.9
 1/* SPDX-License-Identifier: GPL-2.0-or-later */
 2/*
 3 * Character LCD driver for Linux
 4 *
 5 * Copyright (C) 2000-2008, Willy Tarreau <w@1wt.eu>
 6 * Copyright (C) 2016-2017 Glider bvba
 7 */
 8
 9#ifndef _CHARLCD_H
10#define _CHARLCD_H
11
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12struct charlcd {
13	const struct charlcd_ops *ops;
14	const unsigned char *char_conv;	/* Optional */
15
16	int ifwidth;			/* 4-bit or 8-bit (default) */
17	int height;
18	int width;
19	int bwidth;			/* Default set by charlcd_alloc() */
20	int hwidth;			/* Default set by charlcd_alloc() */
21
22	void *drvdata;			/* Set by charlcd_alloc() */
 
 
 
 
 
 
23};
24
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25struct charlcd_ops {
26	/* Required */
27	void (*write_cmd)(struct charlcd *lcd, int cmd);
28	void (*write_data)(struct charlcd *lcd, int data);
29
30	/* Optional */
31	void (*write_cmd_raw4)(struct charlcd *lcd, int cmd);	/* 4-bit only */
32	void (*clear_fast)(struct charlcd *lcd);
33	void (*backlight)(struct charlcd *lcd, int on);
 
 
 
 
 
 
34};
35
36struct charlcd *charlcd_alloc(unsigned int drvdata_size);
 
37void charlcd_free(struct charlcd *lcd);
38
39int charlcd_register(struct charlcd *lcd);
40int charlcd_unregister(struct charlcd *lcd);
41
42void charlcd_poke(struct charlcd *lcd);
43
44#endif /* CHARLCD_H */
v6.2
  1/* SPDX-License-Identifier: GPL-2.0-or-later */
  2/*
  3 * Character LCD driver for Linux
  4 *
  5 * Copyright (C) 2000-2008, Willy Tarreau <w@1wt.eu>
  6 * Copyright (C) 2016-2017 Glider bvba
  7 */
  8
  9#ifndef _CHARLCD_H
 10#define _CHARLCD_H
 11
 12#define LCD_FLAG_B		0x0004	/* Blink on */
 13#define LCD_FLAG_C		0x0008	/* Cursor on */
 14#define LCD_FLAG_D		0x0010	/* Display on */
 15#define LCD_FLAG_F		0x0020	/* Large font mode */
 16#define LCD_FLAG_N		0x0040	/* 2-rows mode */
 17#define LCD_FLAG_L		0x0080	/* Backlight enabled */
 18
 19enum charlcd_onoff {
 20	CHARLCD_OFF = 0,
 21	CHARLCD_ON,
 22};
 23
 24enum charlcd_shift_dir {
 25	CHARLCD_SHIFT_LEFT,
 26	CHARLCD_SHIFT_RIGHT,
 27};
 28
 29enum charlcd_fontsize {
 30	CHARLCD_FONTSIZE_SMALL,
 31	CHARLCD_FONTSIZE_LARGE,
 32};
 33
 34enum charlcd_lines {
 35	CHARLCD_LINES_1,
 36	CHARLCD_LINES_2,
 37};
 38
 39struct charlcd {
 40	const struct charlcd_ops *ops;
 41	const unsigned char *char_conv;	/* Optional */
 42
 
 43	int height;
 44	int width;
 
 
 45
 46	/* Contains the LCD X and Y offset */
 47	struct {
 48		unsigned long x;
 49		unsigned long y;
 50	} addr;
 51
 52	void *drvdata;
 53};
 54
 55/**
 56 * struct charlcd_ops - Functions used by charlcd. Drivers have to implement
 57 * these.
 58 * @backlight: Turn backlight on or off. Optional.
 59 * @print: Print one character to the display at current cursor position.
 60 * The buffered cursor position is advanced by charlcd. The cursor should not
 61 * wrap to the next line at the end of a line.
 62 * @gotoxy: Set cursor to x, y. The x and y values to set the cursor to are
 63 * previously set in addr.x and addr.y by charlcd.
 64 * @home: Set cursor to 0, 0. The values in addr.x and addr.y are set to 0, 0 by
 65 * charlcd prior to calling this function.
 66 * @clear_display: Clear the whole display and set the cursor to 0, 0. The
 67 * values in addr.x and addr.y are set to 0, 0 by charlcd after to calling this
 68 * function.
 69 * @init_display: Initialize the display.
 70 * @shift_cursor: Shift cursor left or right one position.
 71 * @shift_display: Shift whole display content left or right.
 72 * @display: Turn display on or off.
 73 * @cursor: Turn cursor on or off.
 74 * @blink: Turn cursor blink on or off.
 75 * @lines: One or two lines.
 76 * @redefine_char: Redefine the actual pixel matrix of character.
 77 */
 78struct charlcd_ops {
 79	void (*backlight)(struct charlcd *lcd, enum charlcd_onoff on);
 80	int (*print)(struct charlcd *lcd, int c);
 81	int (*gotoxy)(struct charlcd *lcd, unsigned int x, unsigned int y);
 82	int (*home)(struct charlcd *lcd);
 83	int (*clear_display)(struct charlcd *lcd);
 84	int (*init_display)(struct charlcd *lcd);
 85	int (*shift_cursor)(struct charlcd *lcd, enum charlcd_shift_dir dir);
 86	int (*shift_display)(struct charlcd *lcd, enum charlcd_shift_dir dir);
 87	int (*display)(struct charlcd *lcd, enum charlcd_onoff on);
 88	int (*cursor)(struct charlcd *lcd, enum charlcd_onoff on);
 89	int (*blink)(struct charlcd *lcd, enum charlcd_onoff on);
 90	int (*fontsize)(struct charlcd *lcd, enum charlcd_fontsize size);
 91	int (*lines)(struct charlcd *lcd, enum charlcd_lines lines);
 92	int (*redefine_char)(struct charlcd *lcd, char *esc);
 93};
 94
 95void charlcd_backlight(struct charlcd *lcd, enum charlcd_onoff on);
 96struct charlcd *charlcd_alloc(void);
 97void charlcd_free(struct charlcd *lcd);
 98
 99int charlcd_register(struct charlcd *lcd);
100int charlcd_unregister(struct charlcd *lcd);
101
102void charlcd_poke(struct charlcd *lcd);
103
104#endif /* CHARLCD_H */