diff options
author | Geert Uytterhoeven <geert@linux-m68k.org> | 2021-10-19 16:45:05 +0200 |
---|---|---|
committer | Miguel Ojeda <ojeda@kernel.org> | 2021-10-21 23:36:28 +0200 |
commit | 7e76aece6f036cb7ada4858d6aa73825bfe22983 (patch) | |
tree | 13881916dc8ef039500e4661e063c037a80ffc9d /drivers/auxdisplay/line-display.h | |
parent | auxdisplay: img-ascii-lcd: Convert device attribute to sysfs_emit() (diff) | |
download | linux-dev-7e76aece6f036cb7ada4858d6aa73825bfe22983.tar.xz linux-dev-7e76aece6f036cb7ada4858d6aa73825bfe22983.zip |
auxdisplay: Extract character line display core support
Extract the character line display core support from the simple ASCII
LCD driver for the MIPS Boston, Malta & SEAD3 development boards into
its own subdriver, so it can be reused for other displays.
As this moves the "message" device attribute in sysfs in a "linedisp.N"
subdirectory, a symlink is added to preserve backwards compatibility.
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
Diffstat (limited to '')
-rw-r--r-- | drivers/auxdisplay/line-display.h | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/drivers/auxdisplay/line-display.h b/drivers/auxdisplay/line-display.h new file mode 100644 index 000000000000..0f5891d34c48 --- /dev/null +++ b/drivers/auxdisplay/line-display.h @@ -0,0 +1,43 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* + * Character line display core support + * + * Copyright (C) 2016 Imagination Technologies + * Author: Paul Burton <paul.burton@mips.com> + * + * Copyright (C) 2021 Glider bv + */ + +#ifndef _LINEDISP_H +#define _LINEDISP_H + +/** + * struct linedisp - character line display private data structure + * @dev: the line display device + * @timer: timer used to implement scrolling + * @update: function called to update the display + * @buf: pointer to the buffer for the string currently displayed + * @message: the full message to display or scroll on the display + * @num_chars: the number of characters that can be displayed + * @message_len: the length of the @message string + * @scroll_pos: index of the first character of @message currently displayed + * @scroll_rate: scroll interval in jiffies + */ +struct linedisp { + struct device dev; + struct timer_list timer; + void (*update)(struct linedisp *linedisp); + char *buf; + char *message; + unsigned int num_chars; + unsigned int message_len; + unsigned int scroll_pos; + unsigned int scroll_rate; +}; + +int linedisp_register(struct linedisp *linedisp, struct device *parent, + unsigned int num_chars, char *buf, + void (*update)(struct linedisp *linedisp)); +void linedisp_unregister(struct linedisp *linedisp); + +#endif /* LINEDISP_H */ |