mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-06 13:23:18 +00:00
auxdisplay: add home to charlcd_ops
This adds a home function to the charlcd_ops struct and offer an implementation for hd44780_common. This implementation is used by our two hd44780 drivers. This is to make charlcd device independent. Reviewed-by: Willy Tarreau <w@1wt.eu> Signed-off-by: Lars Poeschel <poeschel@lemonage.de> Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
This commit is contained in:
parent
d3a2fb810f
commit
88645a86e3
@ -144,7 +144,7 @@ static void charlcd_home(struct charlcd *lcd)
|
||||
{
|
||||
lcd->addr.x = 0;
|
||||
lcd->addr.y = 0;
|
||||
lcd->ops->gotoxy(lcd);
|
||||
lcd->ops->home(lcd);
|
||||
}
|
||||
|
||||
static void charlcd_print(struct charlcd *lcd, char c)
|
||||
|
@ -41,12 +41,15 @@ struct charlcd {
|
||||
* wrap to the next line at the end of a line.
|
||||
* @gotoxy: Set cursor to x, y. The x and y values to set the cursor to are
|
||||
* previously set in addr.x and addr.y by charlcd.
|
||||
* @home: Set cursor to 0, 0. The values in addr.x and addr.y are set to 0, 0 by
|
||||
* charlcd prior to calling this function.
|
||||
*/
|
||||
struct charlcd_ops {
|
||||
void (*clear_fast)(struct charlcd *lcd);
|
||||
void (*backlight)(struct charlcd *lcd, enum charlcd_onoff on);
|
||||
int (*print)(struct charlcd *lcd, int c);
|
||||
int (*gotoxy)(struct charlcd *lcd);
|
||||
int (*home)(struct charlcd *lcd);
|
||||
};
|
||||
|
||||
struct charlcd *charlcd_alloc(void);
|
||||
|
@ -128,6 +128,7 @@ static const struct charlcd_ops hd44780_ops_gpio8 = {
|
||||
.backlight = hd44780_backlight,
|
||||
.print = hd44780_common_print,
|
||||
.gotoxy = hd44780_common_gotoxy,
|
||||
.home = hd44780_common_home,
|
||||
};
|
||||
|
||||
/* Send a command to the LCD panel in 4 bit GPIO mode */
|
||||
@ -173,6 +174,7 @@ static const struct charlcd_ops hd44780_ops_gpio4 = {
|
||||
.backlight = hd44780_backlight,
|
||||
.print = hd44780_common_print,
|
||||
.gotoxy = hd44780_common_gotoxy,
|
||||
.home = hd44780_common_home,
|
||||
};
|
||||
|
||||
static int hd44780_probe(struct platform_device *pdev)
|
||||
|
@ -41,6 +41,14 @@ int hd44780_common_gotoxy(struct charlcd *lcd)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(hd44780_common_gotoxy);
|
||||
|
||||
int hd44780_common_home(struct charlcd *lcd)
|
||||
{
|
||||
lcd->addr.x = 0;
|
||||
lcd->addr.y = 0;
|
||||
return hd44780_common_gotoxy(lcd);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(hd44780_common_home);
|
||||
|
||||
struct hd44780_common *hd44780_common_alloc(void)
|
||||
{
|
||||
struct hd44780_common *hd;
|
||||
|
@ -16,4 +16,5 @@ struct hd44780_common {
|
||||
|
||||
int hd44780_common_print(struct charlcd *lcd, int c);
|
||||
int hd44780_common_gotoxy(struct charlcd *lcd);
|
||||
int hd44780_common_home(struct charlcd *lcd);
|
||||
struct hd44780_common *hd44780_common_alloc(void);
|
||||
|
@ -876,18 +876,21 @@ static const struct charlcd_ops charlcd_serial_ops = {
|
||||
.clear_fast = lcd_clear_fast_s,
|
||||
.backlight = lcd_backlight,
|
||||
.gotoxy = hd44780_common_gotoxy,
|
||||
.home = hd44780_common_home,
|
||||
};
|
||||
|
||||
static const struct charlcd_ops charlcd_parallel_ops = {
|
||||
.clear_fast = lcd_clear_fast_p8,
|
||||
.backlight = lcd_backlight,
|
||||
.gotoxy = hd44780_common_gotoxy,
|
||||
.home = hd44780_common_home,
|
||||
};
|
||||
|
||||
static const struct charlcd_ops charlcd_tilcd_ops = {
|
||||
.clear_fast = lcd_clear_fast_tilcd,
|
||||
.backlight = lcd_backlight,
|
||||
.gotoxy = hd44780_common_gotoxy,
|
||||
.home = hd44780_common_home,
|
||||
};
|
||||
|
||||
/* initialize the LCD driver */
|
||||
|
Loading…
Reference in New Issue
Block a user