From: Zoltan Kelemen <zoltan@digisec.se>
To: willy@meta-x.org, gregkh@linuxfoundation.org
Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org
Subject: [PATCH 2/3] staging:panel: Add support for APEX lcd/keypad
Date: Thu, 28 Jun 2012 22:58:10 +0200 [thread overview]
Message-ID: <4FECC562.6060105@digisec.se> (raw)
[-- Attachment #1: Type: text/plain, Size: 0 bytes --]
[-- Attachment #2: panel-patch2 --]
[-- Type: text/plain, Size: 5882 bytes --]
Patch containing the following changes:
* Adds support for lcd/keypad from Taiwanese company APEX.
* Fixes lcd type constants in code to match the ones in Kconfig.
This patch depends on patch 1 and should therefore be applied after it.
Signed-off-by: Zoltan Kelemen <zoltan@digisec.se>
----
diff -ru linux-next/drivers/staging/panel/Kconfig panel-patch2/drivers/staging/panel/Kconfig
--- linux-next/drivers/staging/panel/Kconfig 2012-06-28 13:05:05.196967738 +0200
+++ panel-patch2/drivers/staging/panel/Kconfig 2012-06-28 13:10:37.274466384 +0200
@@ -23,9 +23,9 @@
and so on.
config PANEL_PROFILE
- int "Default panel profile (0-5, 0=custom)"
+ int "Default panel profile (0-6, 0=custom)"
depends on PANEL
- range 0 5
+ range 0 6
default "5"
---help---
To ease configuration, the driver supports different configuration
@@ -39,6 +39,7 @@
3 = 2x16 parallel LCD (Hantronix), no keypad
4 = 2x16 parallel LCD (Nexcom NSA1045) with Nexcom's keypad
5 = 2x40 parallel LCD (old one), with old keypad
+ 6 = 2x20 parallel LCD (APEX) with APEX's keypad
Custom configurations allow you to define how your display is
wired to the parallel port, and how it works. This is only intended
@@ -46,8 +47,8 @@
config PANEL_KEYPAD
depends on PANEL && PANEL_PROFILE="0"
- int "Keypad type (0=none, 1=old 6 keys, 2=new 6 keys, 3=Nexcom 4 keys)"
- range 0 3
+ int "Keypad type (0=none, 1=old 6 keys, 2=new 6 keys, 3=Nexcom 4 keys, 4=APEX 4 keys)"
+ range 0 4
default 0
---help---
This enables and configures a keypad connected to the parallel port.
@@ -57,14 +58,15 @@
1 : old 6 keys keypad
2 : new 6 keys keypad, as used on the server at www.ant-computing.com
3 : Nexcom NSA1045's 4 keys keypad
+ 4 : APEX 4 keys keypad
New profiles can be described in the driver source. The driver also
supports simultaneous keys pressed when the keypad supports them.
config PANEL_LCD
depends on PANEL && PANEL_PROFILE="0"
- int "LCD type (0=none, 1=custom, 2=old //, 3=ks0074, 4=hantronix, 5=Nexcom)"
- range 0 5
+ int "LCD type (0=none, 1=custom, 2=old, 3=ks0074, 4=hantronix, 5=Nexcom, 6=APEX)"
+ range 0 6
default 0
---help---
This enables and configures an LCD connected to the parallel port.
@@ -79,6 +81,7 @@
3 : 2x16 serial LCD (KS-0074 based)
4 : 2x16 parallel LCD (Hantronix wiring)
5 : 2x16 parallel LCD (Nexcom wiring)
+ 6 : 2x20 parallel LCD (APEX wiring)
When type '1' is specified, other options will appear to configure
more precise aspects (wiring, dimensions, protocol, ...). Please note
diff -ru linux-next/drivers/staging/panel/panel.c panel-patch2/drivers/staging/panel/panel.c
--- linux-next/drivers/staging/panel/panel.c 2012-06-28 13:07:14.824466481 +0200
+++ panel-patch2/drivers/staging/panel/panel.c 2012-06-28 13:10:37.274466384 +0200
@@ -307,11 +307,12 @@
* LCD types
*/
#define LCD_TYPE_NONE 0
-#define LCD_TYPE_OLD 1
-#define LCD_TYPE_KS0074 2
-#define LCD_TYPE_HANTRONIX 3
-#define LCD_TYPE_NEXCOM 4
-#define LCD_TYPE_CUSTOM 5
+#define LCD_TYPE_CUSTOM 1
+#define LCD_TYPE_OLD 2
+#define LCD_TYPE_KS0074 3
+#define LCD_TYPE_HANTRONIX 4
+#define LCD_TYPE_NEXCOM 5
+#define LCD_TYPE_APEX 6
/*
* keypad types
@@ -320,6 +321,7 @@
#define KEYPAD_TYPE_OLD 1
#define KEYPAD_TYPE_NEW 2
#define KEYPAD_TYPE_NEXCOM 3
+#define KEYPAD_TYPE_APEX 4
/*
* panel profiles
@@ -330,6 +332,7 @@
#define PANEL_PROFILE_HANTRONIX 3
#define PANEL_PROFILE_NEXCOM 4
#define PANEL_PROFILE_LARGE 5
+#define PANEL_PROFILE_APEX 6
/*
* Construct custom config from the kernel's configuration
@@ -468,8 +471,8 @@
static int lcd_type = -1;
module_param(lcd_type, int, 0000);
MODULE_PARM_DESC(lcd_type,
- "LCD type: 0=none, 1=old //, 2=serial ks0074, "
- "3=hantronix //, 4=nexcom //, 5=compiled-in");
+ "LCD type: 0=none, 1=custom, 2=old, 3=serial ks0074, "
+ "4=hantronix, 5=nexcom, 6=apex");
static int lcd_proto = -1;
module_param(lcd_proto, int, 0000);
@@ -485,7 +488,7 @@
module_param(keypad_type, int, 0000);
MODULE_PARM_DESC(keypad_type,
"Keypad type: 0=none, 1=old 6 keys, 2=new 6+1 keys, "
- "3=nexcom 4 keys");
+ "3=nexcom 4 keys, 4=apex 4 keys");
static int profile = DEFAULT_PROFILE;
module_param(profile, int, 0000);
@@ -610,6 +613,16 @@
{"", "", "", ""}
};
+/* signals, press, repeat, release */
+char apex_keypad_profile[][4][9] = {
+ {"a-p-E-", "Left\n", "Left\n", ""},
+ {"a-P-E-", "Up\n", "Up\n", ""},
+ {"a-P-e-", "Down\n", "Down\n", ""},
+ {"a-p-e-", "Right\n", "Right\n", ""},
+ /* add new signals above this line */
+ {"", "", "", ""}
+};
+
static char (*keypad_profile)[4][9] = old_keypad_profile;
/* FIXME: this should be converted to a bit array containing signals states */
@@ -1503,6 +1516,7 @@
lcd_height = 2;
break;
case LCD_TYPE_NEXCOM:
+ case LCD_TYPE_APEX:
/* parallel mode, 8 bits, generic */
if (lcd_proto < 0)
lcd_proto = LCD_PROTO_PARALLEL;
@@ -1514,9 +1528,11 @@
lcd_rs_pin = PIN_SELECP;
if (lcd_rw_pin == PIN_NOT_SET)
lcd_rw_pin = PIN_INITP;
+ if (lcd_type == LCD_TYPE_APEX && lcd_bl_pin == PIN_NOT_SET)
+ lcd_bl_pin = PIN_STROBE;
if (lcd_width < 0)
- lcd_width = 16;
+ lcd_width = (lcd_type == LCD_TYPE_NEXCOM) ? 16 : 20;
if (lcd_bwidth < 0)
lcd_bwidth = 40;
if (lcd_hwidth < 0)
@@ -2487,6 +2503,13 @@
if (lcd_type < 0)
lcd_type = LCD_TYPE_OLD;
break;
+ case PANEL_PROFILE_APEX:
+ /* generic 8 bits, 2*20, APEX keypad */
+ if (keypad_type < 0)
+ keypad_type = KEYPAD_TYPE_APEX;
+ if (lcd_type < 0)
+ lcd_type = LCD_TYPE_APEX;
+ break;
}
lcd_enabled = (lcd_type > 0);
@@ -2502,6 +2525,9 @@
case KEYPAD_TYPE_NEXCOM:
keypad_profile = nexcom_keypad_profile;
break;
+ case KEYPAD_TYPE_APEX:
+ keypad_profile = apex_keypad_profile;
+ break;
}
lcd_init_globals();
reply other threads:[~2012-06-28 21:29 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4FECC562.6060105@digisec.se \
--to=zoltan@digisec.se \
--cc=devel@driverdev.osuosl.org \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=willy@meta-x.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.