From 2477b3f49701aa67af34f6ce5958295e7ed468db Mon Sep 17 00:00:00 2001 From: martii Date: Sun, 18 Aug 2013 10:52:43 +0200 Subject: [PATCH] libspark/hw_caps: check vfd version first (needed to discriminate between Pingulux and Pingulux Plus) --- libspark/hardware_caps.c | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/libspark/hardware_caps.c b/libspark/hardware_caps.c index 23b9efa..27bb33a 100644 --- a/libspark/hardware_caps.c +++ b/libspark/hardware_caps.c @@ -39,7 +39,18 @@ hw_caps_t *get_hwcaps(void) const char *tmp; char buf[1024]; int len = -1, ret, val; - int fd = open("/proc/cmdline", O_RDONLY); + int fd = open (FP_DEV, O_RDWR); + if (fd != -1) { + ret = ioctl(fd, VFDGETVERSION, &val); + if (ret < 0) + fprintf(stderr, "[hardware_caps] %s: VFDGETVERSION %m\n", __func__); + else if (val == 1) { /* VFD, others not yet seen in the wild */ + caps.display_type = HW_DISPLAY_LINE_TEXT; + caps.display_xres = 8; + } + close(fd); + } + fd = open("/proc/cmdline", O_RDONLY); if (fd != -1) { len = read(fd, buf, sizeof(buf) - 1); close(fd); @@ -62,6 +73,8 @@ hw_caps_t *get_hwcaps(void) case 0x090008: tmp = "Edision Pingulux"; caps.has_SCART = 1; // RCA qualifies ... --martii + if (caps.display_type == HW_DISPLAY_LINE_TEXT) + tmp = "Edision Pingulux Plus"; break; case 0x09000a: tmp = "Amiko Alien SDH8900"; @@ -146,16 +159,5 @@ hw_caps_t *get_hwcaps(void) tmp = "(NO STB_ID FOUND)"; strcpy(caps.boxname, tmp); } - fd = open (FP_DEV, O_RDWR); - if (fd != -1) { - ret = ioctl(fd, VFDGETVERSION, &val); - if (ret < 0) - fprintf(stderr, "[hardware_caps] %s: VFDGETVERSION %m\n", __func__); - else if (val == 1) { /* VFD, others not yet seen in the wild */ - caps.display_type = HW_DISPLAY_LINE_TEXT; - caps.display_xres = 8; - } - close(fd); - } return ∩︀ }