r3711 - branches/src/target/kernel/2.6.24.x/patches

laforge at sita.openmoko.org laforge at sita.openmoko.org
Thu Dec 20 18:24:50 CET 2007


Author: laforge
Date: 2007-12-20 18:24:47 +0100 (Thu, 20 Dec 2007)
New Revision: 3711

Modified:
   branches/src/target/kernel/2.6.24.x/patches/gta02-core.patch
   branches/src/target/kernel/2.6.24.x/patches/smedia-glamo.patch
Log:
smedia-glamo:
* move from drivers/video to drivers/mfd/
* cosmetic updates found by checkpatch.pl
* move 'GTA02 IRQ storm' workaround from glamo-core.c to mach-gta02.c
* add some more GPIO related #defines


Modified: branches/src/target/kernel/2.6.24.x/patches/gta02-core.patch
===================================================================
--- branches/src/target/kernel/2.6.24.x/patches/gta02-core.patch	2007-12-20 16:28:19 UTC (rev 3710)
+++ branches/src/target/kernel/2.6.24.x/patches/gta02-core.patch	2007-12-20 17:24:47 UTC (rev 3711)
@@ -2,7 +2,7 @@
 ===================================================================
 --- /dev/null
 +++ linux-2.6/arch/arm/mach-s3c2440/mach-gta02.c
-@@ -0,0 +1,667 @@
+@@ -0,0 +1,679 @@
 +/*
 + * linux/arch/arm/mach-s3c2440/mach-gta02.c
 + *
@@ -583,6 +583,18 @@
 +		gta02_glamo_resources[2].end = GTA02_GPIO_3D_RESET;
 +		break;
 +	}
++
++	switch (system_rev) {
++	case GTA02v1_SYSTEM_REV:
++	case GTA02v2_SYSTEM_REV:
++	case GTA02v3_SYSTEM_REV:
++	case GTA02v4_SYSTEM_REV:
++		/* The hardware is missing a pull-up resistor and thus can't
++		 * support the Smedia Glamo IRQ */
++		gta02_glamo_resources[1].start = 0;
++		gta02_glamo_resources[1].end = 0;
++		break;
++	}
 +}
 +
 +static void __init gta02_map_io(void)

Modified: branches/src/target/kernel/2.6.24.x/patches/smedia-glamo.patch
===================================================================
--- branches/src/target/kernel/2.6.24.x/patches/smedia-glamo.patch	2007-12-20 16:28:19 UTC (rev 3710)
+++ branches/src/target/kernel/2.6.24.x/patches/smedia-glamo.patch	2007-12-20 17:24:47 UTC (rev 3711)
@@ -1,78 +1,41 @@
-Index: linux-2.6/drivers/video/Kconfig
+This is a Linux kernel driver for the Smedia Glamo336x / Glamo337x
+multi-function peripheral device.
+
+Signedo-off-by: Harald Welte <laforge at openmoko.org>
+
+Index: linux-2.6/drivers/mfd/Kconfig
 ===================================================================
---- linux-2.6.orig/drivers/video/Kconfig
-+++ linux-2.6/drivers/video/Kconfig
-@@ -1880,6 +1880,38 @@
- 	  framebuffer. ML300 carries a 640*480 LCD display on the board,
- 	  ML403 uses a standard DB15 VGA connector.
+--- linux-2.6.orig/drivers/mfd/Kconfig
++++ linux-2.6/drivers/mfd/Kconfig
+@@ -15,6 +15,8 @@
+ 	  interface. The device may be connected by PCI or local bus with
+ 	  varying functions enabled.
  
-+config GLAMO
-+	bool
++source "drivers/mfd/glamo/Kconfig"
 +
-+config FB_GLAMO
-+	tristate "Smedia Glamo 336x/337x framebuffer support"
-+	depends on FB
-+	select GLAMO
-+	help
-+	  Frame buffer driver for the LCD controller in the Smedia Glamo
-+	  336x/337x.
-+
-+	  This driver is also available as a module ( = code which can be
-+	  inserted and removed from the running kernel whenever you want). The
-+	  module will be called glamofb. If you want to compile it as a module,
-+	  say M here and read <file:Documentation/modules.txt>.
-+
-+	  If unsure, say N.
-+
-+config GLAMO_SPI_GPIO
-+       bool "Glamo GPIO SPI bitbang support"
-+       depends on GLAMO
-+       help
-+         Enable a bitbanging SPI adapter driver for the Smedia Glamo.
-+
-+config FB_GLAMO_SPI
-+       bool "Glamo LCM control channel SPI support"
-+       depends on FB_GLAMO
-+       help
-+         Enable a bitbanging SPI adapter driver for the Smedia Glamo LCM
-+	 control channel.  This SPI interface is frequently used to
-+	 interconnect the LCM control interface.
-+
- config FB_VIRTUAL
- 	tristate "Virtual Frame Buffer support (ONLY FOR TESTING!)"
- 	depends on FB
-Index: linux-2.6/drivers/video/Makefile
-===================================================================
---- linux-2.6.orig/drivers/video/Makefile
-+++ linux-2.6/drivers/video/Makefile
-@@ -113,6 +113,7 @@
- obj-$(CONFIG_FB_SM501)            += sm501fb.o
- obj-$(CONFIG_FB_XILINX)           += xilinxfb.o
- obj-$(CONFIG_FB_OMAP)             += omap/
-+obj-$(CONFIG_GLAMO)               += glamo/
+ endmenu
  
- # Platform or fallback drivers go here
- obj-$(CONFIG_FB_UVESA)            += uvesafb.o
-Index: linux-2.6/drivers/video/glamo/Makefile
+ menu "Multimedia Capabilities Port drivers"
+Index: linux-2.6/drivers/mfd/glamo/Makefile
 ===================================================================
 --- /dev/null
-+++ linux-2.6/drivers/video/glamo/Makefile
++++ linux-2.6/drivers/mfd/glamo/Makefile
 @@ -0,0 +1,11 @@
 +#
 +# Makefile for the Smedia Glamo framebuffer driver
 +#
 +
-+obj-$(CONFIG_GLAMO)		+= glamo-core.o glamo-gpio.o
-+obj-$(CONFIG_GLAMO_SPI)		+= glamo-spi.o
-+obj-$(CONFIG_GLAMO_SPI_GPIO) 	+= glamo-spi-gpio.o
++obj-$(CONFIG_MFD_GLAMO)			+= glamo-core.o glamo-gpio.o
++obj-$(CONFIG_MFD_GLAMO_SPI)		+= glamo-spi.o
++obj-$(CONFIG_MFD_GLAMO_SPI_GPIO) 	+= glamo-spi-gpio.o
 +
-+obj-$(CONFIG_FB_GLAMO)		+= glamo-fb.o
-+obj-$(CONFIG_FB_GLAMO_SPI)	+= glamo-lcm-spi.o
++obj-$(CONFIG_MFD_GLAMO_FB)		+= glamo-fb.o
++obj-$(CONFIG_MFD_GLAMO_SPI_FB)		+= glamo-lcm-spi.o
 +
-Index: linux-2.6/drivers/video/glamo/glamo-regs.h
+Index: linux-2.6/drivers/mfd/glamo/glamo-regs.h
 ===================================================================
 --- /dev/null
-+++ linux-2.6/drivers/video/glamo/glamo-regs.h
++++ linux-2.6/drivers/mfd/glamo/glamo-regs.h
 @@ -0,0 +1,467 @@
 +#ifndef _GLAMO_REGS_H
 +#define _GLAMO_REGS_H
@@ -541,11 +504,11 @@
 +};
 +
 +#endif /* _GLAMO_REGS_H */
-Index: linux-2.6/drivers/video/glamo/glamo-core.c
+Index: linux-2.6/drivers/mfd/glamo/glamo-core.c
 ===================================================================
 --- /dev/null
-+++ linux-2.6/drivers/video/glamo/glamo-core.c
-@@ -0,0 +1,1067 @@
++++ linux-2.6/drivers/mfd/glamo/glamo-core.c
+@@ -0,0 +1,1072 @@
 +/* Smedia Glamo 336x/337x driver
 + *
 + * (C) 2007 by OpenMoko, Inc.
@@ -793,7 +756,7 @@
 +
 +/* we only allocate the minimum possible size for the framebuffer to make
 + * sure we have sufficient memory for other functions of the chip */
-+//#define GLAMO_FB_SIZE	(640*480*4)	/* == 0x12c000 */
++/*#define GLAMO_FB_SIZE	(640*480*4)*/	/* == 0x12c000 */
 +#define GLAMO_FB_SIZE	0x800000
 +
 +static struct resource glamo_fb_resources[] = {
@@ -1119,7 +1082,8 @@
 + * script support
 + ***********************************************************************/
 +
-+int glamo_run_script(struct glamo_core *glamo, struct glamo_script *script, int len)
++int glamo_run_script(struct glamo_core *glamo, struct glamo_script *script,
++		     int len)
 +{
 +	int i;
 +
@@ -1442,8 +1406,8 @@
 +	glamo->mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 +	glamo->irq = platform_get_irq(pdev, 0);
 +	glamo->pdata = pdev->dev.platform_data;
-+	if (!glamo->irq || !glamo->mem || !glamo->pdata) {
-+		dev_err(&pdev->dev, "platform device with no IRQ/MEM ?\n");
++	if (!glamo->mem || !glamo->pdata) {
++		dev_err(&pdev->dev, "platform device with no MEM/PDATA ?\n");
 +		rc = -ENOENT;
 +		goto out_free;
 +	}
@@ -1518,7 +1482,7 @@
 +
 +	platform_set_drvdata(pdev, glamo);
 +
-+	printk("running init script\n");
++	dev_dbg(&glamo->pdev->dev, "running init script\n");
 +	glamo_run_script(glamo, glamo_init_script, ARRAY_SIZE(glamo_init_script));
 +
 +	dev_info(&glamo->pdev->dev, "Glamo core now %uHz CPU / %uHz Memory)\n",
@@ -1526,19 +1490,23 @@
 +		 glamo_pll_rate(glamo, GLAMO_PLL2));
 +
 +	/* FIXME: do we need to request_irq() it ? */
-+	printk("interrupts\n");
++
++	dev_dbg(&glamo->pdev->dev, "interrupts\n");
 +	for (irq = IRQ_GLAMO(0); irq <= IRQ_GLAMO(8); irq++) {
 +		set_irq_chip(irq, &glamo_irq_chip);
 +		set_irq_handler(irq, handle_level_irq);
 +		set_irq_flags(irq, IRQF_VALID);
 +	}
-+#if 0 /* temporarily disabled since it creates endless loop on GTA02v2 */
-+	printk("chained\n");
-+	set_irq_chained_handler(glamo->irq, glamo_irq_demux_handler);
-+	printk("type\n");
-+	set_irq_type(glamo->irq, IRQT_FALLING);
-+#endif
 +
++	if (!glamo->irq)
++		dev_warn(&glamo->pdev->dev, "No IRQ support on this hardware!\n");
++	else {
++		dev_dbg(&glamo->pdev->dev, "chained\n");
++		set_irq_chained_handler(glamo->irq, glamo_irq_demux_handler);
++		dev_dbg(&glamo->pdev->dev, "type\n");
++		set_irq_type(glamo->irq, IRQT_FALLING);
++	}
++
 +	return 0;
 +
 +out_free:
@@ -1657,10 +1625,10 @@
 +#define IRQ_GLAMO_RISC		IRQ_GLAMO(8)
 +
  #endif /* __ASM_ARCH_IRQ_H */
-Index: linux-2.6/drivers/video/glamo/glamo-fb.c
+Index: linux-2.6/drivers/mfd/glamo/glamo-fb.c
 ===================================================================
 --- /dev/null
-+++ linux-2.6/drivers/video/glamo/glamo-fb.c
++++ linux-2.6/drivers/mfd/glamo/glamo-fb.c
 @@ -0,0 +1,658 @@
 +/* Smedia Glamo 336x/337x driver
 + *
@@ -2385,16 +2353,16 @@
 +	unsigned int 		pin_cs;
 +
 +	unsigned int		board_size;
-+	struct spi_board_info*	board_info;
++	struct spi_board_info	*board_info;
 +	struct glamo_core	*glamo;
 +};
 +
 +
 +#endif
-Index: linux-2.6/drivers/video/glamo/glamo-core.h
+Index: linux-2.6/drivers/mfd/glamo/glamo-core.h
 ===================================================================
 --- /dev/null
-+++ linux-2.6/drivers/video/glamo/glamo-core.h
++++ linux-2.6/drivers/mfd/glamo/glamo-core.h
 @@ -0,0 +1,53 @@
 +#ifndef __GLAMO_CORE_H
 +#define __GLAMO_CORE_H
@@ -2449,10 +2417,10 @@
 +			 enum glamo_engine engine, int ps);
 +
 +#endif /* __GLAMO_CORE_H */
-Index: linux-2.6/drivers/video/glamo/glamo-gpio.c
+Index: linux-2.6/drivers/mfd/glamo/glamo-gpio.c
 ===================================================================
 --- /dev/null
-+++ linux-2.6/drivers/video/glamo/glamo-gpio.c
++++ linux-2.6/drivers/mfd/glamo/glamo-gpio.c
 @@ -0,0 +1,62 @@
 +
 +#include <linux/kernel.h>
@@ -2516,10 +2484,10 @@
 +}
 +EXPORT_SYMBOL(glamo_gpio_cfgpin);
 +
-Index: linux-2.6/drivers/video/glamo/glamo-lcm-spi.c
+Index: linux-2.6/drivers/mfd/glamo/glamo-lcm-spi.c
 ===================================================================
 --- /dev/null
-+++ linux-2.6/drivers/video/glamo/glamo-lcm-spi.c
++++ linux-2.6/drivers/mfd/glamo/glamo-lcm-spi.c
 @@ -0,0 +1,241 @@
 +/*
 + * Copyright (C) 2007 OpenMoko, Inc.
@@ -2737,23 +2705,23 @@
 +
 +static struct platform_driver glamo_spi_drv = {
 +	.probe		= glamo_spi_probe,
-+        .remove		= glamo_spi_remove,
-+        .suspend	= glamo_spi_suspend,
-+        .resume		= glamo_spi_resume,
-+        .driver		= {
++	.remove		= glamo_spi_remove,
++	.suspend	= glamo_spi_suspend,
++	.resume		= glamo_spi_resume,
++	.driver		= {
 +		.name	= "glamo-lcm-spi",
 +		.owner	= THIS_MODULE,
-+        },
++	},
 +};
 +
 +static int __init glamo_spi_init(void)
 +{
-+        return platform_driver_register(&glamo_spi_drv);
++	return platform_driver_register(&glamo_spi_drv);
 +}
 +
 +static void __exit glamo_spi_exit(void)
 +{
-+        platform_driver_unregister(&glamo_spi_drv);
++	platform_driver_unregister(&glamo_spi_drv);
 +}
 +
 +module_init(glamo_spi_init);
@@ -2762,11 +2730,11 @@
 +MODULE_DESCRIPTION("Smedia Glamo 336x/337x LCM serial command SPI Driver");
 +MODULE_AUTHOR("Harald Welte <laforge at openmoko.org>")
 +MODULE_LICENSE("GPL");
-Index: linux-2.6/drivers/video/glamo/glamo-spi-gpio.c
+Index: linux-2.6/drivers/mfd/glamo/glamo-spi-gpio.c
 ===================================================================
 --- /dev/null
-+++ linux-2.6/drivers/video/glamo/glamo-spi-gpio.c
-@@ -0,0 +1,251 @@
++++ linux-2.6/drivers/mfd/glamo/glamo-spi-gpio.c
+@@ -0,0 +1,250 @@
 +/*
 + * Copyright (C) 2007 OpenMoko, Inc.
 + * Author: Harald Welte <laforge at openmoko.org>
@@ -2809,7 +2777,6 @@
 +	struct spi_master		*master;
 +	struct glamo_spigpio_info	*info;
 +	struct glamo_core		*glamo;
-+	//struct device			*dev;
 +};
 +
 +static inline struct glamo_spigpio *to_sg(struct spi_device *spi)
@@ -2869,7 +2836,8 @@
 +
 +
 +#if 0
-+static int glamo_spigpio_setupxfer(struct spi_device *spi, struct spi_transfer *t)
++static int glamo_spigpio_setupxfer(struct spi_device *spi,
++				   struct spi_transfer *t)
 +{
 +	struct glamo_spi *gs = to_sg(spi);
 +	unsigned int bpw;
@@ -2920,7 +2888,6 @@
 +	}
 +
 +
-+	//memset(sp, 0, sizeof(struct glamo_spigpio));
 +	master->bus_num = 2; /* FIXME: use dynamic number */
 +
 +	sp->master = spi_master_get(master);
@@ -2993,23 +2960,23 @@
 +
 +static struct platform_driver glamo_spi_drv = {
 +	.probe		= glamo_spigpio_probe,
-+        .remove		= glamo_spigpio_remove,
-+        .suspend	= glamo_spigpio_suspend,
-+        .resume		= glamo_spigpio_resume,
-+        .driver		= {
++	.remove		= glamo_spigpio_remove,
++	.suspend	= glamo_spigpio_suspend,
++	.resume		= glamo_spigpio_resume,
++	.driver		= {
 +		.name	= "glamo-spi-gpio",
 +		.owner	= THIS_MODULE,
-+        },
++	},
 +};
 +
 +static int __init glamo_spi_init(void)
 +{
-+        return platform_driver_register(&glamo_spi_drv);
++	return platform_driver_register(&glamo_spi_drv);
 +}
 +
 +static void __exit glamo_spi_exit(void)
 +{
-+        platform_driver_unregister(&glamo_spi_drv);
++	platform_driver_unregister(&glamo_spi_drv);
 +}
 +
 +module_init(glamo_spi_init);
@@ -3022,7 +2989,7 @@
 ===================================================================
 --- /dev/null
 +++ linux-2.6/include/linux/glamo-gpio.h
-@@ -0,0 +1,98 @@
+@@ -0,0 +1,99 @@
 +#ifndef __GLAMO_GPIO_H
 +#define __GLAMO_GPIO_H
 +
@@ -3070,24 +3037,24 @@
 +#define GLAMO_GPIO5_nLCS1	(GLAMO_GPIO5 | GLAMO_GPIO_F_FUNC)
 +
 +#define GLAMO_GPIO6		GLAMO_GPIONO(GLAMO_GPIO_BANKB, 2)
-+#define GLAMO_GPIO6_INPUT
-+#define GLAMO_GPIO6_OUTPUT
-+#define GLAMO_GPIO6_LDCLK
++#define GLAMO_GPIO6_INPUT	(GLAMO_GPIO6 | GLAMO_GPIO_F_IN)
++#define GLAMO_GPIO6_OUTPUT	(GLAMO_GPIO6 | GLAMO_GPIO_F_OUT)
++#define GLAMO_GPIO6_LDCLK	(GLAMO_GPIO6 | GLAMO_GPIO_F_FUNC)
 +
 +#define GLAMO_GPIO7		GLAMO_GPIONO(GLAMO_GPIO_BANKB, 3)
-+#define GLAMO_GPIO7_INPUT
-+#define GLAMO_GPIO7_OUTPUT
-+#define GLAMO_GPIO7_nLDE
++#define GLAMO_GPIO7_INPUT	(GLAMO_GPIO7 | GLAMO_GPIO_F_IN)
++#define GLAMO_GPIO7_OUTPUT	(GLAMO_GPIO7 | GLAMO_GPIO_F_OUT)
++#define GLAMO_GPIO7_nLDE	(GLAMO_GPIO7 | GLAMO_GPIO_F_FUNC)
 +
 +#define GLAMO_GPIO8		GLAMO_GPIONO(GLAMO_GPIO_BANKC, 0)
-+#define GLAMO_GPIO8_INPUT
-+#define GLAMO_GPIO8_OUTPUT
-+#define GLAMO_GPIO8_LD16
++#define GLAMO_GPIO8_INPUT	(GLAMO_GPIO8 | GLAMO_GPIO_F_IN)
++#define GLAMO_GPIO8_OUTPUT	(GLAMO_GPIO8 | GLAMO_GPIO_F_OUT)
++#define GLAMO_GPIO8_LD16	(GLAMO_GPIO8 | GLAMO_GPIO_F_FUNC)
 +
 +#define GLAMO_GPIO9		GLAMO_GPIONO(GLAMO_GPIO_BANKC, 1)
-+#define GLAMO_GPIO9_INPUT
-+#define GLAMO_GPIO9_OUTPUT
-+#define GLAMO_GPIO9_LD17
++#define GLAMO_GPIO9_INPUT	(GLAMO_GPIO9 | GLAMO_GPIO_F_IN)
++#define GLAMO_GPIO9_OUTPUT	(GLAMO_GPIO9 | GLAMO_GPIO_F_OUT)
++#define GLAMO_GPIO9_LD17	(GLAMO_GPIO9 | GLAMO_GPIO_F_FUNC)
 +
 +#define GLAMO_GPIO10		GLAMO_GPIONO(GLAMO_GPIO_BANKC, 2)
 +#define GLAMO_GPIO10_INPUT	(GLAMO_GPIO10 | GLAMO_GPIO_F_IN)
@@ -3105,7 +3072,8 @@
 +#define GLAMO_GPIO12_LSA0	(GLAMO_GPIO12 | GLAMO_GPIO_F_FUNC)
 +
 +
-+#define REG_OF_GPIO(gpio)	(((gpio & 0xf000) >> 12)*2 + GLAMO_REG_GPIO_GEN1)
++#define REG_OF_GPIO(gpio)	(((gpio & 0xf000) >> 12)*2 \
++						+ GLAMO_REG_GPIO_GEN1)
 +#define NUM_OF_GPIO(gpio)	((gpio & 0x0f00) >> 8)
 +#define GPIO_OUT_BIT(gpio)	(1 << (NUM_OF_GPIO(gpio) + 0))
 +#define OUTPUT_BIT(gpio)	(1 << (NUM_OF_GPIO(gpio) + 4))
@@ -3121,3 +3089,55 @@
 +
 +
 +#endif /* _GLAMO_GPIO */
+Index: linux-2.6/drivers/mfd/glamo/Kconfig
+===================================================================
+--- /dev/null
++++ linux-2.6/drivers/mfd/glamo/Kconfig
+@@ -0,0 +1,35 @@
++config MFD_GLAMO
++	bool "Smedia Glamo 336x/337x support"
++	help
++	  This enables the core driver for the Smedia Glamo 336x/337x
++	  multi-function device.  It includes irq_chip demultiplex as
++	  well as clock / power management and GPIO support.
++
++config MFD_GLAMO_FB
++	tristate "Smedia Glamo 336x/337x framebuffer support"
++	depends on FB && MFD_GLAMO
++	help
++	  Frame buffer driver for the LCD controller in the Smedia Glamo
++	  336x/337x.
++
++	  This driver is also available as a module ( = code which can be
++	  inserted and removed from the running kernel whenever you want). The
++	  module will be called glamofb. If you want to compile it as a module,
++	  say M here and read <file:Documentation/modules.txt>.
++
++	  If unsure, say N.
++
++config MFD_GLAMO_SPI_GPIO
++       tristate "Glamo GPIO SPI bitbang support"
++       depends on MFD_GLAMO
++       help
++         Enable a bitbanging SPI adapter driver for the Smedia Glamo.
++
++config MFD_GLAMO_SPI_FB
++       tristate "Glamo LCM control channel SPI support"
++       depends on MFD_GLAMO_FB
++       help
++         Enable a bitbanging SPI adapter driver for the Smedia Glamo LCM
++	 control channel.  This SPI interface is frequently used to
++	 interconnect the LCM control interface.
++
+Index: linux-2.6/drivers/mfd/Makefile
+===================================================================
+--- linux-2.6.orig/drivers/mfd/Makefile
++++ linux-2.6/drivers/mfd/Makefile
+@@ -3,6 +3,7 @@
+ #
+ 
+ obj-$(CONFIG_MFD_SM501)		+= sm501.o
++obj-$(CONFIG_MFD_GLAMO)		+= glamo/
+ 
+ obj-$(CONFIG_MCP)		+= mcp-core.o
+ obj-$(CONFIG_MCP_SA11X0)	+= mcp-sa11x0.o





More information about the commitlog mailing list