Skip to contentSkip to conversation

new driver for Ahanix D.Vine 5 IR/VFD

PATCH In review Sean Young 4 participants 13 messages Jan 15, 2018 – Feb 13, 2018

Subsystems (3)
lore
Share & tools
lore

Sean Young

author maintainer
#0 lore raw

cover new driver for Ahanix D.Vine 5 IR/VFD

This is a newer driver for this device. It originally supported by the lirc_sasem.c staging driver, which was removed in kernel v4.12.

Here a some more information about the hardware and my attempts to understand it:

http://www.mess.org/2018/01/17/Ahanix-D-Vine-5-IR-VFD-module/

Sean Young (5):
auxdisplay: charlcd: no need to call charlcd_gotoxy() if nothing
changes
auxdisplay: charlcd: add flush function
auxdisplay: charlcd: add escape sequence for brightness on NEC

    µPD16314

media: rc: add keymap for Dign Remote
media: rc: new driver for Sasem Remote Controller VFD/IR

 MAINTAINERS                        |   6 +
 drivers/auxdisplay/charlcd.c       |  33 ++++-
 drivers/media/rc/Kconfig           |  16 ++
 drivers/media/rc/Makefile          |   1 +
 drivers/media/rc/keymaps/Makefile  |   1 +
 drivers/media/rc/keymaps/rc-dign.c |  70 +++++++++
 drivers/media/rc/sasem_ir.c        | 297 +++++++++++++++++++++++++++++++++++++
 include/media/rc-map.h             |   1 +
 include/misc/charlcd.h             |   1 +
 9 files changed, 421 insertions(+), 5 deletions(-)
 create mode 100644 drivers/media/rc/keymaps/rc-dign.c
 create mode 100644 drivers/media/rc/sasem_ir.c
Signature · 1 line
2.14.3
author maintainer
#1 lore raw

PATCH 1/5 auxdisplay: charlcd: no need to call charlcd_gotoxy() if nothing changes

If the line extends beyond the width to the screen, nothing changes. The existing code will call charlcd_gotoxy every time for this case.

---
 drivers/auxdisplay/charlcd.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)
drivers/auxdisplay/charlcd.c +4 -3
index 642afd88870b..45ec5ce697c4 100644
@@ -192,10 +192,11 @@ static void charlcd_print(struct charlcd *lcd, char c)
 			c = lcd->char_conv[(unsigned char)c];
 		lcd->ops->write_data(lcd, c);
 		priv->addr.x++;
+
+		/* prevents the cursor from wrapping onto the next line */
+		if (priv->addr.x == lcd->bwidth)
+			charlcd_gotoxy(lcd);
 	}
-	/* prevents the cursor from wrapping onto the next line */
-	if (priv->addr.x == lcd->bwidth)
-		charlcd_gotoxy(lcd);
 }
 
 static void charlcd_clear_fast(struct charlcd *lcd)
Signature · 1 line
2.14.3
#2 lore raw

Re: [PATCH 1/5] auxdisplay: charlcd: no need to call charlcd_gotoxy() if nothing changes

Quoted 16 lines · Sean Young

If the line extends beyond the width to the screen, nothing changes. The existing code will call charlcd_gotoxy every time for this case.

---
 drivers/auxdisplay/charlcd.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)
drivers/auxdisplay/charlcd.c +0 -0
index 642afd88870b..45ec5ce697c4 100644
@@ -192,10 +192,11 @@ static void charlcd_print(struct charlcd *lcd, char c)
                        c = lcd->char_conv[(unsigned char)c];
                lcd->ops->write_data(lcd, c);
                priv->addr.x++;

drivers/auxdisplay/charlcd.c static void charlcd_print(struct charlcd *lcd, char c) · line 201

Quoted 10 lines
drivers/auxdisplay/charlcd.c +4 -3
+
+               /* prevents the cursor from wrapping onto the next line */
+               if (priv->addr.x == lcd->bwidth)
+                       charlcd_gotoxy(lcd);
        }
-       /* prevents the cursor from wrapping onto the next line */
-       if (priv->addr.x == lcd->bwidth)
-               charlcd_gotoxy(lcd);
 }
 

Willy, Geert: is this fine with you? Seems fine: charlcd_write_char() right now does an unconditional write_cmd() when writing a normal character; so unless some HW requires the command for some reason even if there is nothing changed, we can skip it.

Quoted 4 lines
drivers/auxdisplay/charlcd.c +0 -1
 static void charlcd_clear_fast(struct charlcd *lcd)
--

2.14.3

reviewer Reviewed-by
#3 lore raw

Re: [PATCH 1/5] auxdisplay: charlcd: no need to call charlcd_gotoxy() if nothing changes

Quoted 24 lines · Miguel Ojeda
Quoted 23 lines · Sean Young

If the line extends beyond the width to the screen, nothing changes. The existing code will call charlcd_gotoxy every time for this case.

---
 drivers/auxdisplay/charlcd.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)
drivers/auxdisplay/charlcd.c +4 -2
index 642afd88870b..45ec5ce697c4 100644
@@ -192,10 +192,11 @@ static void charlcd_print(struct charlcd *lcd, char c)
                        c = lcd->char_conv[(unsigned char)c];
                lcd->ops->write_data(lcd, c);
                priv->addr.x++;
+
+               /* prevents the cursor from wrapping onto the next line */
+               if (priv->addr.x == lcd->bwidth)
+                       charlcd_gotoxy(lcd);
        }
-       /* prevents the cursor from wrapping onto the next line */
-       if (priv->addr.x == lcd->bwidth)
Quoted 8 lines

drivers/auxdisplay/charlcd.c static void charlcd_print(struct charlcd *lcd, char c) · line 201

Quoted 3 lines
drivers/auxdisplay/charlcd.c +0 -1
-               charlcd_gotoxy(lcd);
 }
 

Willy, Geert: is this fine with you? Seems fine: charlcd_write_char() right now does an unconditional write_cmd() when writing a normal character; so unless some HW requires the command for some reason even if there is nothing changed, we can skip it.

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

#4 lore raw

Re: [PATCH 1/5] auxdisplay: charlcd: no need to call charlcd_gotoxy() if nothing changes

Quoted 35 lines · Geert Uytterhoeven
Quoted 24 lines · Miguel Ojeda
Quoted 23 lines · Sean Young

If the line extends beyond the width to the screen, nothing changes. The existing code will call charlcd_gotoxy every time for this case.

---
 drivers/auxdisplay/charlcd.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)
drivers/auxdisplay/charlcd.c +4 -2
index 642afd88870b..45ec5ce697c4 100644
@@ -192,10 +192,11 @@ static void charlcd_print(struct charlcd *lcd, char c)
                        c = lcd->char_conv[(unsigned char)c];
                lcd->ops->write_data(lcd, c);
                priv->addr.x++;
+
+               /* prevents the cursor from wrapping onto the next line */
+               if (priv->addr.x == lcd->bwidth)
+                       charlcd_gotoxy(lcd);
        }
-       /* prevents the cursor from wrapping onto the next line */
-       if (priv->addr.x == lcd->bwidth)
Quoted 8 lines

drivers/auxdisplay/charlcd.c static void charlcd_print(struct charlcd *lcd, char c) · line 201

Quoted 3 lines
drivers/auxdisplay/charlcd.c +0 -1
-               charlcd_gotoxy(lcd);
 }
 

Willy, Geert: is this fine with you? Seems fine: charlcd_write_char() right now does an unconditional write_cmd() when writing a normal character; so unless some HW requires the command for some reason even if there is nothing changed, we can skip it.

Quoted 2 lines

Thanks a lot, picking it up then.

Miguel

Quoted 10 lines

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

author maintainer
#5 lore raw

PATCH 2/5 auxdisplay: charlcd: add flush function

In reply to Sean Young

The Sasem Remote Controller has an LCD, which is connnected via usb. Multiple write reg or write data commands can be combined into one usb packet.

The latency of usb is such that if we send commands one by one, we get very obvious tearing on the LCD.

By adding a flush function, we can buffer all commands until either the usb packet is full or the lcd changes are complete.

---
 drivers/auxdisplay/charlcd.c | 6 ++++++
 include/misc/charlcd.h       | 1 +
 2 files changed, 7 insertions(+)
drivers/auxdisplay/charlcd.c +6 -0
index 45ec5ce697c4..a16c72779722 100644
@@ -642,6 +642,9 @@ static ssize_t charlcd_write(struct file *file, const char __user *buf,
 		charlcd_write_char(the_charlcd, c);
 	}
 
+	if (the_charlcd->ops->flush)
+		the_charlcd->ops->flush(the_charlcd);
+
 	return tmp - buf;
 }
 
@@ -703,6 +706,9 @@ static void charlcd_puts(struct charlcd *lcd, const char *s)
 
 		charlcd_write_char(lcd, *tmp);
 	}
+
+	if (lcd->ops->flush)
+		lcd->ops->flush(lcd);
 }
 
 /* initialize the LCD driver */
include/misc/charlcd.h +1 -0
index 23f61850f363..ff8fd456018e 100644
@@ -32,6 +32,7 @@ struct charlcd_ops {
 	void (*write_cmd_raw4)(struct charlcd *lcd, int cmd);	/* 4-bit only */
 	void (*clear_fast)(struct charlcd *lcd);
 	void (*backlight)(struct charlcd *lcd, int on);
+	void (*flush)(struct charlcd *lcd);
 };
 
 struct charlcd *charlcd_alloc(unsigned int drvdata_size);
Signature · 1 line
2.14.3
#6 lore raw

Re: [PATCH 2/5] auxdisplay: charlcd: add flush function

Quoted 7 lines · Sean Young

The Sasem Remote Controller has an LCD, which is connnected via usb. Multiple write reg or write data commands can be combined into one usb packet.

The latency of usb is such that if we send commands one by one, we get very obvious tearing on the LCD.

Quoted 6 lines

By adding a flush function, we can buffer all commands until either the usb packet is full or the lcd changes are complete.

---
 drivers/auxdisplay/charlcd.c | 6 ++++++

Cc'ing Arnd and Greg since this touches include/misc as well.

Miguel

Quoted 42 lines
 include/misc/charlcd.h       | 1 +
 2 files changed, 7 insertions(+)
drivers/auxdisplay/charlcd.c +6 -0
index 45ec5ce697c4..a16c72779722 100644
@@ -642,6 +642,9 @@ static ssize_t charlcd_write(struct file *file, const char __user *buf,
                charlcd_write_char(the_charlcd, c);
        }
 
+       if (the_charlcd->ops->flush)
+               the_charlcd->ops->flush(the_charlcd);
+
        return tmp - buf;
 }
 
@@ -703,6 +706,9 @@ static void charlcd_puts(struct charlcd *lcd, const char *s)
 
                charlcd_write_char(lcd, *tmp);
        }
+
+       if (lcd->ops->flush)
+               lcd->ops->flush(lcd);
 }
 
 /* initialize the LCD driver */
include/misc/charlcd.h +1 -1
index 23f61850f363..ff8fd456018e 100644
@@ -32,6 +32,7 @@ struct charlcd_ops {
        void (*write_cmd_raw4)(struct charlcd *lcd, int cmd);   /* 4-bit only */
        void (*clear_fast)(struct charlcd *lcd);
        void (*backlight)(struct charlcd *lcd, int on);
+       void (*flush)(struct charlcd *lcd);
 };
 
 struct charlcd *charlcd_alloc(unsigned int drvdata_size);
--

2.14.3

#7 lore raw

Re: [PATCH 2/5] auxdisplay: charlcd: add flush function

Quoted 8 lines · Miguel Ojeda
Quoted 7 lines · Sean Young

The Sasem Remote Controller has an LCD, which is connnected via usb. Multiple write reg or write data commands can be combined into one usb packet.

The latency of usb is such that if we send commands one by one, we get very obvious tearing on the LCD.

Quoted 7 lines
Quoted 2 lines

By adding a flush function, we can buffer all commands until either the usb packet is full or the lcd changes are complete.

Cc'ing Arnd and Greg since this touches include/misc as well.

include/misc/charlcd.h

Quoted 2 lines
include/misc/charlcd.h +0 -0

As far as I can see better to create a subfolder under include for auxdisplay stuff.
Currently we have three candidates here:
linux/cfag12864b.h
linux/ks0108.h
misc/charlcd.h

Another possibility to get rid of them under include/ by (re)moving to drivers/auxdisplay/.

Signature · 2 lines
With Best Regards,
Andy Shevchenko
author maintainer
#8 lore raw

PATCH 3/5 auxdisplay: charlcd: add escape sequence for brightness on NEC µPD16314

In reply to Sean Young

The NEC µPD16314 can alter the the brightness of the LCD. Make it possible to set this via escape sequence Y0 - Y3. B and R were already taken, so I picked Y for luminance.

---
 drivers/auxdisplay/charlcd.c | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)
drivers/auxdisplay/charlcd.c +18 -2
index a16c72779722..7a671ad959d1 100644
@@ -39,6 +39,8 @@
 #define LCD_FLAG_F		0x0020	/* Large font mode */
 #define LCD_FLAG_N		0x0040	/* 2-rows mode */
 #define LCD_FLAG_L		0x0080	/* Backlight enabled */
+#define LCD_BRIGHTNESS_MASK	0x0300	/* Brightness */
+#define LCD_BRIGHTNESS_SHIFT	8
 
 /* LCD commands */
 #define LCD_CMD_DISPLAY_CLEAR	0x01	/* Clear entire display */
@@ -490,6 +492,17 @@ static inline int handle_lcd_special_code(struct charlcd *lcd)
 		charlcd_gotoxy(lcd);
 		processed = 1;
 		break;
+	case 'Y':	/* brightness (luma) */
+		switch (esc[1]) {
+		case '0':	/* 25% */
+		case '1':	/* 50% */
+		case '2':	/* 75% */
+		case '3':	/* 100% */
+			priv->flags = (priv->flags & ~(LCD_BRIGHTNESS_MASK)) |
+				(('3' - esc[1]) << LCD_BRIGHTNESS_SHIFT);
+			processed =  1;
+			break;
+		}
 	}
 
 	/* TODO: This indent party here got ugly, clean it! */
@@ -507,12 +520,15 @@ static inline int handle_lcd_special_code(struct charlcd *lcd)
 			((priv->flags & LCD_FLAG_C) ? LCD_CMD_CURSOR_ON : 0) |
 			((priv->flags & LCD_FLAG_B) ? LCD_CMD_BLINK_ON : 0));
 	/* check whether one of F,N flags was changed */
-	else if ((oldflags ^ priv->flags) & (LCD_FLAG_F | LCD_FLAG_N))
+	else if ((oldflags ^ priv->flags) & (LCD_FLAG_F | LCD_FLAG_N |
+					     LCD_BRIGHTNESS_MASK))
 		lcd->ops->write_cmd(lcd,
 			LCD_CMD_FUNCTION_SET |
 			((lcd->ifwidth == 8) ? LCD_CMD_DATA_LEN_8BITS : 0) |
 			((priv->flags & LCD_FLAG_F) ? LCD_CMD_FONT_5X10_DOTS : 0) |
-			((priv->flags & LCD_FLAG_N) ? LCD_CMD_TWO_LINES : 0));
+			((priv->flags & LCD_FLAG_N) ? LCD_CMD_TWO_LINES : 0) |
+			((priv->flags & LCD_BRIGHTNESS_MASK) >>
+							LCD_BRIGHTNESS_SHIFT));
 	/* check whether L flag was changed */
 	else if ((oldflags ^ priv->flags) & LCD_FLAG_L)
 		charlcd_backlight(lcd, !!(priv->flags & LCD_FLAG_L));
Signature · 1 line
2.14.3
#9 lore raw

Re: [PATCH 3/5] auxdisplay: charlcd: add escape sequence for brightness on NEC µPD16314

Quoted 5 lines · Sean Young

The NEC µPD16314 can alter the the brightness of the LCD. Make it possible to set this via escape sequence Y0 - Y3. B and R were already taken, so I picked Y for luminance.

CC'ing Willy and Geert.

Quoted 9 lines
---
 drivers/auxdisplay/charlcd.c | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)
drivers/auxdisplay/charlcd.c +0 -0
index a16c72779722..7a671ad959d1 100644

drivers/auxdisplay/charlcd.c line 43

Quoted 5 lines
drivers/auxdisplay/charlcd.c +2 -0
@@ -39,6 +39,8 @@
 #define LCD_FLAG_F             0x0020  /* Large font mode */
 #define LCD_FLAG_N             0x0040  /* 2-rows mode */
 #define LCD_FLAG_L             0x0080  /* Backlight enabled */
+#define LCD_BRIGHTNESS_MASK    0x0300  /* Brightness */
+#define LCD_BRIGHTNESS_SHIFT   8

Not sure about the name (since the brightness is also used in priv->flags). By the way, should we start using the bitops.h stuff (e.g. BIT(9) | BIT(8), GENMASK(9, 8)...) in new code? Not sure how widespread they are.

Quoted 22 lines
drivers/auxdisplay/charlcd.c +11 -0
 /* LCD commands */
 #define LCD_CMD_DISPLAY_CLEAR  0x01    /* Clear entire display */
@@ -490,6 +492,17 @@ static inline int handle_lcd_special_code(struct charlcd *lcd)
                charlcd_gotoxy(lcd);
                processed = 1;
                break;
+       case 'Y':       /* brightness (luma) */
+               switch (esc[1]) {
+               case '0':       /* 25% */
+               case '1':       /* 50% */
+               case '2':       /* 75% */
+               case '3':       /* 100% */
+                       priv->flags = (priv->flags & ~(LCD_BRIGHTNESS_MASK)) |
+                               (('3' - esc[1]) << LCD_BRIGHTNESS_SHIFT);
+                       processed =  1;
+                       break;
+               }
        }
 
        /* TODO: This indent party here got ugly, clean it! */

drivers/auxdisplay/charlcd.c static inline int handle_lcd_special_code(struct charlcd *lcd) · line 522

Quoted 3 lines
drivers/auxdisplay/charlcd.c +0 -0
@@ -507,12 +520,15 @@ static inline int handle_lcd_special_code(struct charlcd *lcd)
                        ((priv->flags & LCD_FLAG_C) ? LCD_CMD_CURSOR_ON : 0) |
                        ((priv->flags & LCD_FLAG_B) ? LCD_CMD_BLINK_ON : 0));
        /* check whether one of F,N flags was changed */

Should we add "or brightness" to the comment?

Quoted 17 lines
drivers/auxdisplay/charlcd.c +5 -3
-       else if ((oldflags ^ priv->flags) & (LCD_FLAG_F | LCD_FLAG_N))
+       else if ((oldflags ^ priv->flags) & (LCD_FLAG_F | LCD_FLAG_N |
+                                            LCD_BRIGHTNESS_MASK))
                lcd->ops->write_cmd(lcd,
                        LCD_CMD_FUNCTION_SET |
                        ((lcd->ifwidth == 8) ? LCD_CMD_DATA_LEN_8BITS : 0) |
                        ((priv->flags & LCD_FLAG_F) ? LCD_CMD_FONT_5X10_DOTS : 0) |
-                       ((priv->flags & LCD_FLAG_N) ? LCD_CMD_TWO_LINES : 0));
+                       ((priv->flags & LCD_FLAG_N) ? LCD_CMD_TWO_LINES : 0) |
+                       ((priv->flags & LCD_BRIGHTNESS_MASK) >>
+                                                       LCD_BRIGHTNESS_SHIFT));
        /* check whether L flag was changed */
        else if ((oldflags ^ priv->flags) & LCD_FLAG_L)
                charlcd_backlight(lcd, !!(priv->flags & LCD_FLAG_L));
--

2.14.3

author maintainer
#10 lore raw

Re: [PATCH 3/5] auxdisplay: charlcd: add escape sequence for brightness on NEC µPD16314

Quoted 13 lines · Miguel Ojeda
Quoted 5 lines · Sean Young

The NEC µPD16314 can alter the the brightness of the LCD. Make it possible to set this via escape sequence Y0 - Y3. B and R were already taken, so I picked Y for luminance.

CC'ing Willy and Geert.

Quoted 4 lines
---
 drivers/auxdisplay/charlcd.c | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)
Quoted 15 lines

drivers/auxdisplay/charlcd.c line 43

Quoted 10 lines
drivers/auxdisplay/charlcd.c +2 -0
index a16c72779722..7a671ad959d1 100644
@@ -39,6 +39,8 @@
 #define LCD_FLAG_F             0x0020  /* Large font mode */
 #define LCD_FLAG_N             0x0040  /* 2-rows mode */
 #define LCD_FLAG_L             0x0080  /* Backlight enabled */
+#define LCD_BRIGHTNESS_MASK    0x0300  /* Brightness */
+#define LCD_BRIGHTNESS_SHIFT   8

Not sure about the name (since the brightness is also used in priv->flags). By the way, should we start using the bitops.h stuff (e.g. BIT(9) | BIT(8), GENMASK(9, 8)...) in new code? Not sure how widespread they are.

The brightness is not really a flag, maybe it belongs in a separate field; we could use bit fields in order to waste less space.

BIT() would be nicer and is more idiomatic by current standards.

Note that x, y and flags are currently unsigned long, they could be u8.

Quoted 21 lines
Quoted 21 lines
drivers/auxdisplay/charlcd.c +11 -0
 /* LCD commands */
 #define LCD_CMD_DISPLAY_CLEAR  0x01    /* Clear entire display */
@@ -490,6 +492,17 @@ static inline int handle_lcd_special_code(struct charlcd *lcd)
                charlcd_gotoxy(lcd);
                processed = 1;
                break;
+       case 'Y':       /* brightness (luma) */
+               switch (esc[1]) {
+               case '0':       /* 25% */
+               case '1':       /* 50% */
+               case '2':       /* 75% */
+               case '3':       /* 100% */
+                       priv->flags = (priv->flags & ~(LCD_BRIGHTNESS_MASK)) |
+                               (('3' - esc[1]) << LCD_BRIGHTNESS_SHIFT);
+                       processed =  1;
+                       break;
+               }
        }
 
Quoted 7 lines

drivers/auxdisplay/charlcd.c static inline int handle_lcd_special_code(struct charlcd *lcd) · line 522

Quoted 5 lines
drivers/auxdisplay/charlcd.c +0 -0
        /* TODO: This indent party here got ugly, clean it! */
@@ -507,12 +520,15 @@ static inline int handle_lcd_special_code(struct charlcd *lcd)
                        ((priv->flags & LCD_FLAG_C) ? LCD_CMD_CURSOR_ON : 0) |
                        ((priv->flags & LCD_FLAG_B) ? LCD_CMD_BLINK_ON : 0));
        /* check whether one of F,N flags was changed */

Should we add "or brightness" to the comment?

Indeed we should.

Quoted 10 lines
Quoted 10 lines
drivers/auxdisplay/charlcd.c +3 -2
-       else if ((oldflags ^ priv->flags) & (LCD_FLAG_F | LCD_FLAG_N))
+       else if ((oldflags ^ priv->flags) & (LCD_FLAG_F | LCD_FLAG_N |
+                                            LCD_BRIGHTNESS_MASK))
                lcd->ops->write_cmd(lcd,
                        LCD_CMD_FUNCTION_SET |
                        ((lcd->ifwidth == 8) ? LCD_CMD_DATA_LEN_8BITS : 0) |
                        ((priv->flags & LCD_FLAG_F) ? LCD_CMD_FONT_5X10_DOTS : 0) |
-                       ((priv->flags & LCD_FLAG_N) ? LCD_CMD_TWO_LINES : 0));
+                       ((priv->flags & LCD_FLAG_N) ? LCD_CMD_TWO_LINES : 0) |
Quoted 8 lines
Quoted 8 lines
drivers/auxdisplay/charlcd.c +2 -1
+                       ((priv->flags & LCD_BRIGHTNESS_MASK) >>
+                                                       LCD_BRIGHTNESS_SHIFT));
        /* check whether L flag was changed */
        else if ((oldflags ^ priv->flags) & LCD_FLAG_L)
                charlcd_backlight(lcd, !!(priv->flags & LCD_FLAG_L));
--

2.14.3

I've discovered an issue in my sasem driver, I'll send out a new version of these patch series once that is resolved.

Thanks,

Sean

author maintainer
#11 lore raw

PATCH 4/5 media: rc: add keymap for Dign Remote

In reply to Sean Young

This is the remote which comes with the Ahanix D.Vine 5 HTPC case.

---
 drivers/media/rc/keymaps/Makefile  |  1 +
 drivers/media/rc/keymaps/rc-dign.c | 70 ++++++++++++++++++++++++++++++++++++++
 include/media/rc-map.h             |  1 +
 3 files changed, 72 insertions(+)
 create mode 100644 drivers/media/rc/keymaps/rc-dign.c
drivers/media/rc/keymaps/Makefile +1 -0
index 50b319355edf..5a7aebe12285 100644
@@ -29,6 +29,7 @@ obj-$(CONFIG_RC_MAP) += rc-adstech-dvb-t-pci.o \
 			rc-dib0700-rc5.o \
 			rc-digitalnow-tinytwin.o \
 			rc-digittrade.o \
+			rc-dign.o \
 			rc-dm1105-nec.o \
 			rc-dntv-live-dvb-t.o \
 			rc-dntv-live-dvbt-pro.o \
drivers/media/rc/keymaps/rc-dign.c new file +70 -0

70 lines not on this page · raw message

include/media/rc-map.h +1 -0
index 7046734b3895..1c0016af45a1 100644
@@ -185,6 +185,7 @@ struct rc_map *rc_map_get(const char *name);
 #define RC_MAP_DIB0700_RC5_TABLE         "rc-dib0700-rc5"
 #define RC_MAP_DIGITALNOW_TINYTWIN       "rc-digitalnow-tinytwin"
 #define RC_MAP_DIGITTRADE                "rc-digittrade"
+#define RC_MAP_DIGN			 "rc-dign"
 #define RC_MAP_DM1105_NEC                "rc-dm1105-nec"
 #define RC_MAP_DNTV_LIVE_DVBT_PRO        "rc-dntv-live-dvbt-pro"
 #define RC_MAP_DNTV_LIVE_DVB_T           "rc-dntv-live-dvb-t"
Signature · 1 line
2.14.3
author maintainer
#12 lore raw

PATCH 5/5 media: rc: new driver for Sasem Remote Controller VFD/IR

In reply to Sean Young

This device is built into the Ahanix D.Vine 5 HTPC case. It has an LCD device, and an IR receiver.

The LCD can be controlled via the charlcd driver. Unfortunately the device does not seem to provide a method for accessing the character generator ram.

---
 MAINTAINERS                 |   6 +
 drivers/media/rc/Kconfig    |  16 +++
 drivers/media/rc/Makefile   |   1 +
 drivers/media/rc/sasem_ir.c | 297 ++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 320 insertions(+)
 create mode 100644 drivers/media/rc/sasem_ir.c
MAINTAINERS +6 -0
index 58797b83dd8d..a06801032ee3 100644
@@ -12066,6 +12066,12 @@ F:	drivers/phy/samsung/phy-s5pv210-usb2.c
 F:	drivers/phy/samsung/phy-samsung-usb2.c
 F:	drivers/phy/samsung/phy-samsung-usb2.h
 
+SASEM REMOTE CONTROLLER
+M:	Sean Young <[email protected]>
+L:	[email protected]
+S:	Maintained
+F:	drivers/media/rc/sasem_ir.c
+
 SC1200 WDT DRIVER
 M:	Zwane Mwaikambo <[email protected]>
 S:	Maintained
drivers/media/rc/Kconfig +16 -0
index 7919f4a36ad2..bffa39e06a68 100644
@@ -457,6 +457,22 @@ config IR_SERIAL
 	   To compile this driver as a module, choose M here: the module will
 	   be called serial-ir.
 
+config IR_SASEM
+	tristate "Sasem Remote Controller"
+	depends on USB_ARCH_HAS_HCD
+	depends on RC_CORE
+	select USB
+	select CHARLCD
+	---help---
+	   Driver for the Sasem OnAir Remocon-V or Dign HV5 HTPC IR/VFD Module
+
+	   The LCD can be controlled via the charlcd driver. Unfortunately the
+	   device does not seem to provide a method for accessing the
+	   character generator ram.
+
+	   To compile this driver as a module, choose M here: the module will
+	   be called sesam_ir.
+
 config IR_SERIAL_TRANSMITTER
 	bool "Serial Port Transmitter"
 	default y
drivers/media/rc/Makefile +1 -0
index e098e127b26a..9b474c8b49dc 100644
@@ -41,6 +41,7 @@ obj-$(CONFIG_IR_TTUSBIR) += ttusbir.o
 obj-$(CONFIG_RC_ST) += st_rc.o
 obj-$(CONFIG_IR_SUNXI) += sunxi-cir.o
 obj-$(CONFIG_IR_IMG) += img-ir/
+obj-$(CONFIG_IR_SASEM) += sasem_ir.o
 obj-$(CONFIG_IR_SERIAL) += serial_ir.o
 obj-$(CONFIG_IR_SIR) += sir_ir.o
 obj-$(CONFIG_IR_MTK) += mtk-cir.o
drivers/media/rc/sasem_ir.c new file +297 -0

297 lines not on this page · raw message

Signature · 1 line
2.14.3