AM300 kit support
Subsystems (7)
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
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
@@ -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
RFC 2/5 Fix is_vbus_present to return 1 or 0
In reply to Jaya Kumarthe 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
@@ -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
RFC 3/5 Add support for Wacom W8001 penabled serial touchscreen
In reply to Jaya KumarThe 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
@@ -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
@@ -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
@@ -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
RFC 4/5 Move am200 specific gpio pins into am200epd.
In reply to Jaya KumarThe 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
@@ -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
@@ -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
RFC 5/5 Add support for E-Ink Broadsheet controller and AM300 kit
In reply to Jaya KumarThis 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
@@ -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
@@ -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
@@ -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
@@ -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
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.
Signed-off-by Jaya Kumar <[email protected]>
You may want to break this patch into two pieces, one for the base broadsheetfb support and another for the am300epd board.
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.
Signed-off-by Jaya Kumar <[email protected]>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