Skip to contentSkip to conversation

AM300 kit support

RFC In review Jaya Kumar 2 participants 8 messages Nov 4, 2008 – Dec 14, 2008

Subsystems (7)
lore
Share & tools
lore

Jaya Kumar

author
#0 lore raw

Hi Eric, Dmitry, Geert, Krzysztof, lak, input, fbdev,

This is my first pass at adding support for things on the AM300 kit from E-Ink. The main two new things are the Wacom w8001 support and the AM300/broadsheetfb display support. The other 3 patches are for cleanup.

There are still issues I intend to debug (latency on the display, usb issues) but will lose access to the hardware for a while so this seems like a good point to post the code. I would greatly appreciate your feedback.

Thanks,
jaya

author
#1 lore raw

RFC 1/5 Fixup reset for systems using reboot=cold or other strings

This patch makes do_hw_reset the default reboot behavior when nothing else matches. This restores reboot functionality on gumstix basix devices where reboot=cold is the default boot argument.

---
 arch/arm/mach-pxa/reset.c |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)
arch/arm/mach-pxa/reset.c +4 -3
index 1b2af57..00b2dc2 100644
@@ -90,12 +90,13 @@ void arch_reset(char mode)
 		/* Jump into ROM at address 0 */
 		cpu_reset(0);
 		break;
-	case 'h':
-		do_hw_reset();
-		break;
 	case 'g':
 		do_gpio_reset();
 		break;
+	case 'h':
+	default:
+		do_hw_reset();
+		break;
 	}
 }
 
Signature · 1 line
1.5.2.3
author
#2 lore raw

RFC 2/5 Fix is_vbus_present to return 1 or 0

In reply to Jaya Kumar

the use of is_blah() suggests a 1 or 0 return. This assumption is made in pxa25x_udc code such as:

	dev->vbus = is_vbus_present();

where dev->vbus is a bitfield. This fix allows pxa25x_udc_probe to correctly detect vbus. Other changes were to make its use consistent in the rest of the code.

---
 drivers/usb/gadget/pxa25x_udc.c |   14 +++++++-------
 1 files changed, 7 insertions(+), 7 deletions(-)
drivers/usb/gadget/pxa25x_udc.c +7 -7
index da6e93c..2dbc0db 100644
@@ -141,7 +141,11 @@ static int is_vbus_present(void)
 
 	if (mach->gpio_vbus) {
 		int value = gpio_get_value(mach->gpio_vbus);
-		return mach->gpio_vbus_inverted ? !value : value;
+
+		if (mach->gpio_vbus_inverted)
+			return !value;
+		else
+			return !!value;
 	}
 	if (mach->udc_is_connected)
 		return mach->udc_is_connected();
@@ -982,7 +986,7 @@ static int pxa25x_udc_vbus_session(struct usb_gadget *_gadget, int is_active)
 	struct pxa25x_udc	*udc;
 
 	udc = container_of(_gadget, struct pxa25x_udc, gadget);
-	udc->vbus = (is_active != 0);
+	udc->vbus = is_active;
 	DMSG("vbus %s\n", is_active ? "supplied" : "inactive");
 	pullup(udc);
 	return 0;
@@ -1399,12 +1403,8 @@ lubbock_vbus_irq(int irq, void *_dev)
 static irqreturn_t udc_vbus_irq(int irq, void *_dev)
 {
 	struct pxa25x_udc	*dev = _dev;
-	int			vbus = gpio_get_value(dev->mach->gpio_vbus);
 
-	if (dev->mach->gpio_vbus_inverted)
-		vbus = !vbus;
-
-	pxa25x_udc_vbus_session(&dev->gadget, vbus);
+	pxa25x_udc_vbus_session(&dev->gadget, is_vbus_present());
 	return IRQ_HANDLED;
 }
 
Signature · 1 line
1.5.2.3
author
#3 lore raw

RFC 3/5 Add support for Wacom W8001 penabled serial touchscreen

In reply to Jaya Kumar

The Wacom W8001 sensor is a sensor device (uses electromagnetic resonance) and it is interfaced via its serial microcontroller to the host.

---
 drivers/input/touchscreen/Kconfig       |   13 ++
 drivers/input/touchscreen/Makefile      |    1 +
 drivers/input/touchscreen/wacom_w8001.c |  325 +++++++++++++++++++++++++++++++
 include/linux/serio.h                   |    1 +
 4 files changed, 340 insertions(+), 0 deletions(-)
 create mode 100644 drivers/input/touchscreen/wacom_w8001.c
drivers/input/touchscreen/Kconfig +13 -0
index 6e1e8c6..239c4f6 100644
@@ -91,6 +91,19 @@ config TOUCHSCREEN_ELO
 	  To compile this driver as a module, choose M here: the
 	  module will be called elo.
 
+config TOUCHSCREEN_WACOM_W8001
+	tristate "Wacom W8001 penabled serial touchscreen"
+	select SERIO
+	help
+	  Say Y here if you have an Wacom W8001 penabled serial touchscreen
+	  connected to your system.
+
+	  If unsure, say N.
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called wacom_w8001.
+
+
 config TOUCHSCREEN_MTOUCH
 	tristate "MicroTouch serial touchscreens"
 	select SERIO
drivers/input/touchscreen/Makefile +1 -0
index 15cf290..3dc84d3 100644
@@ -26,6 +26,7 @@ obj-$(CONFIG_TOUCHSCREEN_TOUCHIT213)	+= touchit213.o
 obj-$(CONFIG_TOUCHSCREEN_TOUCHRIGHT)	+= touchright.o
 obj-$(CONFIG_TOUCHSCREEN_TOUCHWIN)	+= touchwin.o
 obj-$(CONFIG_TOUCHSCREEN_UCB1400)	+= ucb1400_ts.o
+obj-$(CONFIG_TOUCHSCREEN_WACOM_W8001)	+= wacom_w8001.o
 obj-$(CONFIG_TOUCHSCREEN_WM97XX)	+= wm97xx-ts.o
 wm97xx-ts-$(CONFIG_TOUCHSCREEN_WM9705)	+= wm9705.o
 wm97xx-ts-$(CONFIG_TOUCHSCREEN_WM9712)	+= wm9712.o
drivers/input/touchscreen/wacom_w8001.c new file +325 -0

325 lines not on this page · raw message

include/linux/serio.h +1 -0
index 25641d9..1bcb357 100644
@@ -213,5 +213,6 @@ static inline void serio_unpin_driver(struct serio *serio)
 #define SERIO_ZHENHUA	0x36
 #define SERIO_INEXIO	0x37
 #define SERIO_TOUCHIT213	0x37
+#define SERIO_W8001	0x39
 
 #endif
Signature · 1 line
1.5.2.3
author
#4 lore raw

RFC 4/5 Move am200 specific gpio pins into am200epd.

In reply to Jaya Kumar

The gpio setup for AM200 specific GPIO pins should be done in the AM200 code rather than in generic gumstix code.

---
 arch/arm/mach-pxa/am200epd.c |   15 +++++++++++++++
 arch/arm/mach-pxa/gumstix.c  |    7 -------
 2 files changed, 15 insertions(+), 7 deletions(-)
arch/arm/mach-pxa/am200epd.c +15 -0
index b965085..3a4f8d8 100644
@@ -30,8 +30,12 @@
 #include <linux/irq.h>
 #include <linux/gpio.h>
 
+#include <mach/gumstix.h>
+#include <mach/mfp-pxa25x.h>
 #include <mach/pxafb.h>
 
+#include "generic.h"
+
 #include <video/metronomefb.h>
 
 static unsigned int panel_type = 6;
@@ -331,6 +335,15 @@ static struct metronome_board am200_board = {
 	.cleanup		= am200_cleanup,
 };
 
+static unsigned long am200_pin_config[] __initdata = {
+	GPIO51_GPIO,
+	GPIO49_GPIO,
+	GPIO48_GPIO,
+	GPIO32_GPIO,
+	GPIO17_GPIO,
+	GPIO16_GPIO,
+};
+
 static int __init am200_init(void)
 {
 	int ret;
@@ -339,6 +352,8 @@ static int __init am200_init(void)
 	 * creation events */
 	fb_register_client(&am200_fb_notif);
 
+	pxa2xx_mfp_config(ARRAY_AND_SIZE(am200_pin_config));
+
 	/* request our platform independent driver */
 	request_module("metronomefb");
 
arch/arm/mach-pxa/gumstix.c +0 -7
index d8962a0..06bc667 100644
@@ -184,13 +184,6 @@ static unsigned long gumstix_pin_config[] __initdata = {
 	GPIO6_MMC_CLK,
 	GPIO53_MMC_CLK,
 	GPIO8_MMC_CS0,
-	/* these are used by AM200EPD */
-	GPIO51_GPIO,
-	GPIO49_GPIO,
-	GPIO48_GPIO,
-	GPIO32_GPIO,
-	GPIO17_GPIO,
-	GPIO16_GPIO,
 };
 
 static void __init gumstix_init(void)
Signature · 1 line
1.5.2.3
author
#5 lore raw

RFC 5/5 Add support for E-Ink Broadsheet controller and AM300 kit

In reply to Jaya Kumar

This patch adds support for the E-Ink Broadsheet display controller and the AM300 gumstix kit.

---
 arch/arm/mach-pxa/Kconfig    |    4 +
 arch/arm/mach-pxa/Makefile   |    1 +
 arch/arm/mach-pxa/am300epd.c |  337 +++++++++++++++++++++++++
 drivers/video/Kconfig        |   14 +
 drivers/video/Makefile       |    3 +-
 drivers/video/broadsheetfb.c |  570 ++++++++++++++++++++++++++++++++++++++++++
 include/video/broadsheetfb.h |   63 +++++
 7 files changed, 991 insertions(+), 1 deletions(-)
 create mode 100644 arch/arm/mach-pxa/am300epd.c
 create mode 100644 drivers/video/broadsheetfb.c
 create mode 100644 include/video/broadsheetfb.h
arch/arm/mach-pxa/Kconfig +4 -0
index f27f6b3..5bdd4e9 100644
@@ -339,6 +339,10 @@ config MACH_AM200EPD
 	depends on MACH_GUMSTIX_F
 	bool "Enable AM200EPD board support"
 
+config MACH_AM300EPD
+	depends on MACH_GUMSTIX_F
+	bool "Enable AM300EPD board support"
+
 config PXA_EZX
 	bool "Motorola EZX Platform"
 	select PXA27x
arch/arm/mach-pxa/Makefile +1 -0
index d31c997..5ea970b 100644
@@ -28,6 +28,7 @@ obj-$(CONFIG_CPU_PXA930)	+= pxa930.o
 # Specific board support
 obj-$(CONFIG_ARCH_GUMSTIX)	+= gumstix.o
 obj-$(CONFIG_MACH_AM200EPD)	+= am200epd.o
+obj-$(CONFIG_MACH_AM300EPD)	+= am300epd.o
 obj-$(CONFIG_ARCH_LUBBOCK)	+= lubbock.o
 obj-$(CONFIG_MACH_LOGICPD_PXA270) += lpd270.o
 obj-$(CONFIG_MACH_MAINSTONE)	+= mainstone.o
arch/arm/mach-pxa/am300epd.c new file +337 -0

337 lines not on this page · raw message

drivers/video/Kconfig +14 -0
index 0f13448..db49aa4 100644
@@ -2083,6 +2083,20 @@ config FB_METRONOME
 	  controller. The pre-release name for this device was 8track
 	  and could also have been called by some vendors as PVI-nnnn.
 
+config FB_BROADSHEET
+	tristate "E-Ink Broadsheet/Epson S1D13521 controller support"
+	depends on FB
+	select FB_SYS_FILLRECT
+	select FB_SYS_COPYAREA
+	select FB_SYS_IMAGEBLIT
+	select FB_SYS_FOPS
+	select FB_DEFERRED_IO
+	help
+	  This driver implements support for the E-Ink Broadsheet
+	  controller. The release name for this device was Epson S1D13521
+	  and could also have been called by other names when coupled with
+	  a bridge adapter.
+
 source "drivers/video/omap/Kconfig"
 
 source "drivers/video/backlight/Kconfig"
drivers/video/Makefile +2 -1
index 248bddc..05efefa 100644
@@ -105,7 +105,8 @@ obj-$(CONFIG_FB_PMAG_AA)	  += pmag-aa-fb.o
 obj-$(CONFIG_FB_PMAG_BA)	  += pmag-ba-fb.o
 obj-$(CONFIG_FB_PMAGB_B)	  += pmagb-b-fb.o
 obj-$(CONFIG_FB_MAXINE)		  += maxinefb.o
-obj-$(CONFIG_FB_METRONOME)        += metronomefb.o
+obj-$(CONFIG_FB_METRONOME)	  += metronomefb.o
+obj-$(CONFIG_FB_BROADSHEET)	  += broadsheetfb.o
 obj-$(CONFIG_FB_S1D13XXX)	  += s1d13xxxfb.o
 obj-$(CONFIG_FB_SH7760)		  += sh7760fb.o
 obj-$(CONFIG_FB_IMX)              += imxfb.o
drivers/video/broadsheetfb.c new file +570 -0

570 lines not on this page · raw message

include/video/broadsheetfb.h new file +63 -0

63 lines not on this page · raw message

Signature · 1 line
1.5.2.3
#6 lore raw

Re: [RFC 2.6.27 5/5] Add support for E-Ink Broadsheet controller and AM300 kit

Quoted 4 lines · Jaya Kumar

This patch adds support for the E-Ink Broadsheet display controller and the AM300 gumstix kit.

You may want to break this patch into two pieces, one for the base broadsheetfb support and another for the am300epd board.

author
#7 lore raw

Re: [RFC 2.6.27 5/5] Add support for E-Ink Broadsheet controller and AM300 kit

Quoted 9 lines · Eric Miao
Quoted 4 lines · Jaya Kumar

This patch adds support for the E-Ink Broadsheet display controller and the AM300 gumstix kit.

You may want to break this patch into two pieces, one for the base broadsheetfb support and another for the am300epd board.

Okay, will split the am300epd patch and broadsheetfb patch for review, and will only merge back before posting to patchqueue (so that bisect will work).

Thanks,
jaya