[Armadeus-commitlog] SF.net SVN: armadeus:[1249] trunk/buildroot/target/device/armadeus/linux/ kern
Brought to you by:
sszy
|
From: <ar...@us...> - 2009-05-01 09:53:01
|
Revision: 1249
http://armadeus.svn.sourceforge.net/armadeus/?rev=1249&view=rev
Author: artemys
Date: 2009-05-01 09:52:46 +0000 (Fri, 01 May 2009)
Log Message:
-----------
[LINUX] Cleanup apf9328 (2.6.27 & 2.6.29) + merge PWM
Modified Paths:
--------------
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.27.13/021-armadeus-apf9328.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/021-armadeus-apf9328.patch
Modified: trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.27.13/021-armadeus-apf9328.patch
===================================================================
--- trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.27.13/021-armadeus-apf9328.patch 2009-04-30 21:34:55 UTC (rev 1248)
+++ trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.27.13/021-armadeus-apf9328.patch 2009-05-01 09:52:46 UTC (rev 1249)
@@ -1,8 +1,10 @@
PATCH AUTOMATICALLY GENERATED
DON'T EDIT IT OR YOUR MODIFICATIONS WILL BE LOST
(Take a look at armadeus/target/linux/ directory to know how to generate it)
---- linux-2.6.27.13.original/arch/arm/mach-imx/apf9328.c
-+++ linux-2.6.27.13.mod/arch/arm/mach-imx/apf9328.c
+Index: linux-2.6.27.13/arch/arm/mach-imx/apf9328.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.27.13/arch/arm/mach-imx/apf9328.c 2009-05-01 11:35:22.000000000 +0200
@@ -0,0 +1,762 @@
+/*
+ * linux/arch/arm/mach-imx/apf9328.c
@@ -79,7 +81,7 @@
+#define CONFIG_PWM
+#endif
+
-+// --- ISP1761
++/* --- ISP1761 */
+#ifdef CONFIG_ARMADEUS_ISP1761
+
+static void apf_isp116x_delay(struct device *dev, int delay)
@@ -127,7 +129,7 @@
+ .id = 0,
+ .num_resources = ARRAY_SIZE(devfull_isp1761_resources),
+ .resource = devfull_isp1761_resources,
-+ .dev = { .platform_data = &isp116x_pdata, },
++ .dev = { .platform_data = &isp116x_pdata, },
+};
+
+/*static struct platform_device *devfull_isp1761_devices[] = {
@@ -136,57 +138,56 @@
+
+#endif
+
-+// --- ETHERNET RESSOURCE ---
++/* --- ETHERNET RESSOURCE --- */
+#ifdef CONFIG_DM9000
+static struct resource dm9000_resources[] = {
-+ [0] = {
-+ .start = (APF9328_ETH_PHYS + 0),
-+ .end = (APF9328_ETH_PHYS + 1),
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = (APF9328_ETH_PHYS + 2),
-+ .end = (APF9328_ETH_PHYS + 3),
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [2] = {
-+ .start = (APF9328_ETH_IRQ),
-+ .end = (APF9328_ETH_IRQ),
-+ .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWEDGE,
-+ },
++ [0] = {
++ .start = (APF9328_ETH_PHYS + 0),
++ .end = (APF9328_ETH_PHYS + 1),
++ .flags = IORESOURCE_MEM,
++ },
++ [1] = {
++ .start = (APF9328_ETH_PHYS + 2),
++ .end = (APF9328_ETH_PHYS + 3),
++ .flags = IORESOURCE_MEM,
++ },
++ [2] = {
++ .start = (APF9328_ETH_IRQ),
++ .end = (APF9328_ETH_IRQ),
++ .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWEDGE,
++ },
+};
+
+static struct dm9000_plat_data dm9000_setup = {
-+ .flags = DM9000_PLATF_16BITONLY
++ .flags = DM9000_PLATF_16BITONLY
+};
+
+static struct platform_device dm9000x_device = {
-+ .name = "dm9000",
-+ .id = 0,
-+ .num_resources = ARRAY_SIZE(dm9000_resources),
-+ .resource = dm9000_resources,
-+ .dev = { .platform_data = &dm9000_setup, },
++ .name = "dm9000",
++ .id = 0,
++ .num_resources = ARRAY_SIZE(dm9000_resources),
++ .resource = dm9000_resources,
++ .dev = { .platform_data = &dm9000_setup, },
+};
-+#endif // CONFIG_DM9000
++#endif /* CONFIG_DM9000 */
+
+
++#ifdef CONFIG_PWM
+static struct resource pwm_resources[] = {
-+ [0] = {
-+ .start = (IMX_PWM_BASE),
-+ .end = (IMX_PWM_BASE + 0x0C),
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = (PWM_INT),
-+ .end = (PWM_INT),
-+ .flags = IORESOURCE_IRQ,
-+ },
++ [0] = {
++ .start = (IMX_PWM_BASE),
++ .end = (IMX_PWM_BASE + 0x0C),
++ .flags = IORESOURCE_MEM,
++ },
++ [1] = {
++ .start = (PWM_INT),
++ .end = (PWM_INT),
++ .flags = IORESOURCE_IRQ,
++ },
+};
+
-+#ifdef CONFIG_PWM
+static int apf9328_pwm_0_init(void)
+{
-+ printk("setup gpio \n");
+ /* Init Port PA[2] : PWMO*/
+ DDIR(0) |= 0x00000002;
+ GIUS(0) &= ~0x00000002;
@@ -205,19 +206,18 @@
+};
+
+static struct platform_device imx_pwm_device = {
-+ .name = "imx-pwm", // Should be the same as the driver name
-+ .id = 0,
-+ .num_resources = ARRAY_SIZE(pwm_resources),
-+ .resource = pwm_resources,
-+ .dev = {
-+ .platform_data = &apf9328_pwm_0_data,
-+ }
++ .name = "imx-pwm",
++ .id = 0,
++ .num_resources = ARRAY_SIZE(pwm_resources),
++ .resource = pwm_resources,
++ .dev = {
++ .platform_data = &apf9328_pwm_0_data,
++ }
+};
+
-+#endif
++#endif /* CONFIG_PWM */
+
+
-+
+#if defined(CONFIG_SND_IMX_TSC2102) || defined(CONFIG_SND_IMX_TSC2102_MODULE)
+int apf9328_ssi_gpio_init(struct platform_device *pdev)
+{
@@ -304,27 +304,27 @@
+#endif /* defined(CONFIG_SND_IMX_TSC2102) || defined(CONFIG_SND_IMX_TSC2102_MODULE) */
+
+
-+// --- SERIAL RESSOURCE ---
++/* --- SERIAL RESSOURCE --- */
+static struct imxuart_platform_data uart_pdata = {
-+ .flags = IMXUART_HAVE_RTSCTS,
++ .flags = IMXUART_HAVE_RTSCTS,
+};
+
+static struct resource imx_uart1_resources[] = {
-+ [0] = {
-+ .start = 0x00206000,
-+ .end = 0x002060FF,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = (UART1_MINT_RX),
-+ .end = (UART1_MINT_RX),
-+ .flags = IORESOURCE_IRQ,
-+ },
-+ [2] = {
-+ .start = (UART1_MINT_TX),
-+ .end = (UART1_MINT_TX),
-+ .flags = IORESOURCE_IRQ,
++ [0] = {
++ .start = 0x00206000,
++ .end = 0x002060FF,
++ .flags = IORESOURCE_MEM,
+ },
++ [1] = {
++ .start = (UART1_MINT_RX),
++ .end = (UART1_MINT_RX),
++ .flags = IORESOURCE_IRQ,
++ },
++ [2] = {
++ .start = (UART1_MINT_TX),
++ .end = (UART1_MINT_TX),
++ .flags = IORESOURCE_IRQ,
++ },
+ [3] = { /* Mandatory (even if RTS is not used), otherwise drivers/serial/imx.c fails to allocate IRQs */
+ .start = UART1_MINT_RTS,
+ .end = UART1_MINT_RTS,
@@ -333,13 +333,13 @@
+};
+
+static struct platform_device imx_uart1_device = {
-+ .name = "imx-uart",
-+ .id = 0,
-+ .num_resources = ARRAY_SIZE(imx_uart1_resources),
-+ .resource = imx_uart1_resources,
-+ .dev = {
-+ .platform_data = &uart_pdata,
-+ }
++ .name = "imx-uart",
++ .id = 0,
++ .num_resources = ARRAY_SIZE(imx_uart1_resources),
++ .resource = imx_uart1_resources,
++ .dev = {
++ .platform_data = &uart_pdata,
++ }
+};
+
+static struct resource imx_uart2_resources[] = {
@@ -366,13 +366,13 @@
+};
+
+static struct platform_device imx_uart2_device = {
-+ .name = "imx-uart",
-+ .id = 1,
-+ .num_resources = ARRAY_SIZE(imx_uart2_resources),
-+ .resource = imx_uart2_resources,
-+ .dev = {
-+ .platform_data = &uart_pdata,
-+ }
++ .name = "imx-uart",
++ .id = 1,
++ .num_resources = ARRAY_SIZE(imx_uart2_resources),
++ .resource = imx_uart2_resources,
++ .dev = {
++ .platform_data = &uart_pdata,
++ }
+};
+
+#ifdef CONFIG_SPI_IMX
@@ -395,12 +395,12 @@
+};
+
+static struct platform_device imx_spi1 = {
-+ .name = "spi_imx",
-+ .id = 1,
-+ .resource = imx_spi1_resource,
-+ .num_resources = ARRAY_SIZE(imx_spi1_resource),
++ .name = "spi_imx",
++ .id = 1,
++ .resource = imx_spi1_resource,
++ .num_resources = ARRAY_SIZE(imx_spi1_resource),
+ .dev = {
-+ .platform_data = &imx_spi1_master_info,
++ .platform_data = &imx_spi1_master_info,
+ },
+};
+
@@ -423,17 +423,18 @@
+};
+
+static struct platform_device imx_spi2 = {
-+ .name = "spi_imx",
-+ .id = 2,
-+ .resource = imx_spi2_resource,
-+ .num_resources = ARRAY_SIZE(imx_spi2_resource),
++ .name = "spi_imx",
++ .id = 2,
++ .resource = imx_spi2_resource,
++ .num_resources = ARRAY_SIZE(imx_spi2_resource),
+ .dev = {
-+ .platform_data = &imx_spi2_master_info,
++ .platform_data = &imx_spi2_master_info,
+ },
+};
+
-+#endif //CONFIG_SPI_IMX
++#endif /* CONFIG_SPI_IMX */
+
++
+#ifdef CONFIG_ARMADEUS_MAX1027
+#define IMX_SPI1_SS_PIN 15
+#define IMX_SPI1_SS (1<<15)
@@ -442,35 +443,35 @@
+
+static int max1027_init(struct spi_device *spi)
+{
-+ imx_gpio_mode( PC14_PF_SPI1_SCLK );
-+ imx_gpio_mode( PC16_PF_SPI1_MISO );
-+ imx_gpio_mode( PC17_PF_SPI1_MOSI );
++ imx_gpio_mode( PC14_PF_SPI1_SCLK );
++ imx_gpio_mode( PC16_PF_SPI1_MISO );
++ imx_gpio_mode( PC17_PF_SPI1_MOSI );
+
-+ /* configure CNVST */
-+ DR(0) |= 1 << MAX1027_CNVST; // Initializes it High
-+ imx_gpio_mode( GPIO_PORTA | MAX1027_CNVST | GPIO_OUT | GPIO_GIUS | GPIO_DR );
++ /* configure CNVST */
++ DR(0) |= 1 << MAX1027_CNVST; /* Initializes it High */
++ imx_gpio_mode( GPIO_PORTA | MAX1027_CNVST | GPIO_OUT | GPIO_GIUS | GPIO_DR );
+
-+ /* configure EOC */
-+ imx_gpio_mode( GPIO_PORTA | MAX1027_EOC_INT | GPIO_IN | GPIO_GIUS );
++ /* configure EOC */
++ imx_gpio_mode( GPIO_PORTA | MAX1027_EOC_INT | GPIO_IN | GPIO_GIUS );
+
-+ /* SPI CSn is used as chip select but in GPIO mode */
-+ DR(2) |= IMX_SPI1_SS;
-+ imx_gpio_mode( GPIO_PORTC | IMX_SPI1_SS_PIN | GPIO_OUT | GPIO_GIUS | GPIO_DR );
++ /* SPI CSn is used as chip select but in GPIO mode */
++ DR(2) |= IMX_SPI1_SS;
++ imx_gpio_mode( GPIO_PORTC | IMX_SPI1_SS_PIN | GPIO_OUT | GPIO_GIUS | GPIO_DR );
+
-+ return 0;
++ return 0;
+}
+
+static int max1027_exit(struct spi_device *spi)
+{
-+ return 0;
++ return 0;
+}
+
+static void max1027_cs(u32 command)
+{
-+ if( command == SPI_CS_DEASSERT )
-+ DR(2) |= IMX_SPI1_SS;
-+ else
-+ DR(2) &= ~IMX_SPI1_SS;
++ if (command == SPI_CS_DEASSERT)
++ DR(2) |= IMX_SPI1_SS;
++ else
++ DR(2) &= ~IMX_SPI1_SS;
+}
+
+static struct spi_imx_chip max1027_hw = {
@@ -481,55 +482,54 @@
+ .conv = MAX1027_CONV_DEFAULT,
+ .setup = MAX1027_SETUP_DEFAULT,
+ .avg = MAX1027_AVG_DEFAULT,
-+ .cnvst_pin = (int)(MAX1027_CNVST|GPIO_PORTA),
++ .cnvst_pin = (int)(MAX1027_CNVST|GPIO_PORTA),
+ .init = max1027_init,
+ .exit = max1027_exit
+};
+
++#endif /* CONFIG_ARMADEUS_MAX1027 */
+
+
-+#endif // CONFIG_ARMADEUS_MAX1027
-+
+#ifdef CONFIG_SPI_TSC2102
+#define TSC2102_CS_GPIOB 17
+#define TSC2102_INT_GPIOD 8
+
+static int tsc2102_init_gpio(void)
+{
-+ // Activate SPI2 port ----
-+ // PortB 17 is used as chip select (in GPIO mode)
-+ DR(1) |= 1 << TSC2102_CS_GPIOB; // Initializes it High
-+ imx_gpio_mode( GPIO_PORTB | TSC2102_CS_GPIOB | GPIO_OUT | GPIO_GIUS | GPIO_DR );
-+ // Configure SPI2 outputs
-+ imx_gpio_mode( PD7_AIN_SPI2_SCLK );
-+ imx_gpio_mode( PD10_AIN_SPI2_TXD );
-+ imx_gpio_mode( PD9_AOUT_SPI2_RXD );
-+ FMCR |= SPI2_RXD_SEL; // RX is AOUT on PORTD
++ /* Activate SPI2 port ---- */
++ /* PortB 17 is used as chip select (in GPIO mode) */
++ DR(1) |= 1 << TSC2102_CS_GPIOB; /* Initializes it High */
++ imx_gpio_mode( GPIO_PORTB | TSC2102_CS_GPIOB | GPIO_OUT | GPIO_GIUS | GPIO_DR );
++ /* Configure SPI2 outputs */
++ imx_gpio_mode( PD7_AIN_SPI2_SCLK );
++ imx_gpio_mode( PD10_AIN_SPI2_TXD );
++ imx_gpio_mode( PD9_AOUT_SPI2_RXD );
++ FMCR |= SPI2_RXD_SEL; /* RX is AOUT on PORTD */
+
-+ // PortD 8 is used as PINTDAV interrupt
-+ imx_gpio_mode( GPIO_PORTD | TSC2102_INT_GPIOD | GPIO_IN | GPIO_GIUS );
-+ //imx_gpio_irq_type( IRQ_GPIOD(8), __IRQT_FALEDGE );
++ /* PortD 8 is used as PINTDAV interrupt */
++ imx_gpio_mode( GPIO_PORTD | TSC2102_INT_GPIOD | GPIO_IN | GPIO_GIUS );
++ /*imx_gpio_irq_type( IRQ_GPIOD(8), __IRQT_FALEDGE );*/
+
-+ printk("TSC2102 GPIOs initialized\n");
-+ return 0;
++ printk("TSC2102 GPIOs initialized\n");
++ return 0;
+}
+
-+// Chip select command for TSC2102
++/* Chip select command for TSC2102 */
+static void tsc2102_cs(u32 command)
+{
-+ // PortB 19 is used as chip select
-+ if( command == SPI_CS_DEASSERT )
-+ DR(1) |= 1<< TSC2102_CS_GPIOB;
-+ else
-+ DR(1) &= ~(1<< TSC2102_CS_GPIOB);
++ /* PortB 19 is used as chip select */
++ if( command == SPI_CS_DEASSERT )
++ DR(1) |= 1<< TSC2102_CS_GPIOB;
++ else
++ DR(1) &= ~(1<< TSC2102_CS_GPIOB);
+}
+
+static struct spi_imx_chip tsc2102_hw = {
-+ .cs_control = tsc2102_cs,
++ .cs_control = tsc2102_cs,
+};
+
+static struct tsc210x_config apf9328_tsc2102_config = {
-+ .use_internal = 1, // -> use internal voltage reference
++ .use_internal = 1, /* -> use internal voltage reference */
+ .monitor = TSC_BAT1 | TSC_AUX | TSC_TEMP,
+ .init = tsc2102_init_gpio,
+/* .apm_report = palmte_get_power_status,*/
@@ -538,132 +538,134 @@
+#endif*/
+};
+
-+#endif // CONFIG_SPI_TSC2102
++#endif /* CONFIG_SPI_TSC2102 */
+
++
+#ifdef CONFIG_CAN_MCP251X
+#define CAN_MPC251X_CS_GPIOB 19
+#define CAN_MPC251X_INT_GPIOC 13
+
-+// Chip select command for MCP251X
++/* Chip select command for MCP251X */
+static void mcp251X_cs(u32 command)
+{
-+ // PortB 19 is used as chip select
-+ if( command == SPI_CS_DEASSERT )
-+ DR(1) |= 1<< CAN_MPC251X_CS_GPIOB;
-+ else
-+ DR(1) &= ~(1<< CAN_MPC251X_CS_GPIOB);
++ /* PortB 19 is used as chip select */
++ if (command == SPI_CS_DEASSERT)
++ DR(1) |= 1<< CAN_MPC251X_CS_GPIOB;
++ else
++ DR(1) &= ~(1<< CAN_MPC251X_CS_GPIOB);
+}
+
+static struct spi_imx_chip mcp251X_hw = {
-+ .cs_control = mcp251X_cs,
++ .cs_control = mcp251X_cs,
+};
+
+static void mcp251X_init_gpio(void)
+{
-+ // Activate SPI2 port ----
-+ // PortB 19 is used as chip select (in GPIO mode)
-+ DR(1) |= 1 << CAN_MPC251X_CS_GPIOB; // Initializes it High
-+ imx_gpio_mode( GPIO_PORTB | CAN_MPC251X_CS_GPIOB | GPIO_OUT | GPIO_GIUS | GPIO_DR );
++ /* Activate SPI2 port ---- */
++ /* PortB 19 is used as chip select (in GPIO mode) */
++ DR(1) |= 1 << CAN_MPC251X_CS_GPIOB; /* Initializes it High */
++ imx_gpio_mode( GPIO_PORTB | CAN_MPC251X_CS_GPIOB | GPIO_OUT | GPIO_GIUS | GPIO_DR );
+
-+ // PortC 13 is used as CAN interrupt
-+ imx_gpio_mode( GPIO_PORTC | CAN_MPC251X_INT_GPIOC | GPIO_IN | GPIO_GIUS );
++ /* PortC 13 is used as CAN interrupt */
++ imx_gpio_mode( GPIO_PORTC | CAN_MPC251X_INT_GPIOC | GPIO_IN | GPIO_GIUS );
+
-+ // Configure SPI2 outputs
-+ imx_gpio_mode( PD7_AIN_SPI2_SCLK );
-+ imx_gpio_mode( PD10_AIN_SPI2_TXD );
-+ imx_gpio_mode( PD9_AOUT_SPI2_RXD );
-+ FMCR |= SPI2_RXD_SEL; // RX is AOUT on PORTD
++ /* Configure SPI2 outputs */
++ imx_gpio_mode( PD7_AIN_SPI2_SCLK );
++ imx_gpio_mode( PD10_AIN_SPI2_TXD );
++ imx_gpio_mode( PD9_AOUT_SPI2_RXD );
++ FMCR |= SPI2_RXD_SEL; /* RX is AOUT on PORTD */
+}
+
+static struct mcp251x_platform_data apf9328_mcp251x_config = {
-+ .oscillator_frequency = 16000000,
-+ .board_specific_setup = NULL,
-+ .device_reset = NULL,
-+ .transceiver_enable = NULL,
++ .oscillator_frequency = 16000000,
++ .board_specific_setup = NULL,
++ .device_reset = NULL,
++ .transceiver_enable = NULL,
+};
+
-+#endif // CONFIG_CAN_MCP251X
++#endif /* CONFIG_CAN_MCP251X */
+
+
+static struct spi_board_info spi_board_info[] __initdata = {
+#ifdef CONFIG_ARMADEUS_MAX1027
+{
-+ .modalias = "max1027",
-+ .controller_data = &max1027_hw,
-+ .max_speed_hz = 8000000,
-+ .bus_num = 1, // SPI1
-+ .chip_select = 0,
-+ .mode = 0,
-+ .irq = IRQ_GPIOA(MAX1027_EOC_INT),
-+ .platform_data = &apf9328_max1027_config,
++ .modalias = "max1027",
++ .controller_data= &max1027_hw,
++ .max_speed_hz = 8000000,
++ .bus_num = 1, /* SPI1 */
++ .chip_select = 0,
++ .mode = 0,
++ .irq = IRQ_GPIOA(MAX1027_EOC_INT),
++ .platform_data = &apf9328_max1027_config,
+},
-+#endif // CONFIG_SENSORS_MAX1027
++#endif
+#ifdef CONFIG_SPI_TSC2102
+{
-+ .modalias = "tsc210x",
-+ .controller_data = &tsc2102_hw,
-+ .max_speed_hz = 8000000,
-+ .bus_num = 2, // SPI2
-+ .irq = IRQ_GPIOD(TSC2102_INT_GPIOD),
-+ .chip_select = 0,
-+ .mode = 0,
-+ .platform_data = &apf9328_tsc2102_config,
++ .modalias = "tsc210x",
++ .controller_data= &tsc2102_hw,
++ .max_speed_hz = 8000000,
++ .bus_num = 2, /* SPI2 */
++ .irq = IRQ_GPIOD(TSC2102_INT_GPIOD),
++ .chip_select = 0,
++ .mode = 0,
++ .platform_data = &apf9328_tsc2102_config,
+},
-+#endif // CONFIG_SPI_TSC2102
++#endif
+#ifdef CONFIG_CAN_MCP251X
-+ {
-+ .modalias = "mcp251x",
-+ .max_speed_hz = 8000000, /* 8MHz */
-+ .controller_data = &mcp251X_hw,
-+ .bus_num = 2,
-+ .mode = SPI_MODE_0,
-+ .chip_select = 1,
-+ .irq = IRQ_GPIOC( CAN_MPC251X_INT_GPIOC ),
-+ .platform_data = &apf9328_mcp251x_config,
-+ },
-+#endif // CONFIG_CAN_MCP251X
++{
++ .modalias = "mcp251x",
++ .max_speed_hz = 8000000, /* 8MHz */
++ .controller_data= &mcp251X_hw,
++ .bus_num = 2,
++ .mode = SPI_MODE_0,
++ .chip_select = 1,
++ .irq = IRQ_GPIOC( CAN_MPC251X_INT_GPIOC ),
++ .platform_data = &apf9328_mcp251x_config,
++},
++#endif
+};
+
-+// --- LCD RESSOURCE ---
++/* --- LCD RESSOURCE --- */
+#ifdef CONFIG_FB_IMX
-+// all custom LCD configuration is deported to this file for clarity purpose:
++/* all custom LCD configuration is deported to this file for clarity purpose: */
+#include "apf9328_lcd_config.h"
+#define IMX_FB_PHYS (0x0C000000 - 0x40000)
-+#endif // CONFIG_FB_IMX
++#endif
+
+#ifdef CONFIG_IMX_BACKLIGHT
+static struct imxbl_machinfo imx_bl_machinfo = {
-+ .max_intensity = 0xff,
-+ .default_intensity = 0x90,
-+ .limit_mask = 0x7f, // When battery is low
-+// set_bl_intensity = put a function here if you want to overload default one,
++ .max_intensity = 0xff,
++ .default_intensity = 0x90,
++ .limit_mask = 0x7f, /* When battery is low */
++/* set_bl_intensity = put a function here if you want to overload default one, */
+};
-+//extern struct platform_device imxfb_device; // filled in generic.c
++
+static struct platform_device imxbl_device = {
-+ .name = "imx-bl",
-+ .dev = {
-+// .parent = &imxfb_device.dev, crash kernel even if EXPORT_SYMBOL() is done in generic.c
-+ .platform_data = &imx_bl_machinfo,
-+ },
-+ .id = 0,
++ .name = "imx-bl",
++ .dev = {
++ // .parent = &imxfb_device.dev, crash kernel even if EXPORT_SYMBOL() is done in generic.c
++ .platform_data = &imx_bl_machinfo,
++ },
++ .id = 0,
+};
-+#endif // CONFIG_IMX_BACKLIGHT
++#endif /* CONFIG_IMX_BACKLIGHT */
+
++
+static struct platform_device *devices[] __initdata = {
-+ &imx_uart1_device,
-+ &imx_uart2_device,
++ &imx_uart1_device,
++ &imx_uart2_device,
+#ifdef CONFIG_DM9000
-+ &dm9000x_device,
++ &dm9000x_device,
+#endif
+#ifdef CONFIG_SPI_IMX
-+ &imx_spi1,
-+ &imx_spi2,
++ &imx_spi1,
++ &imx_spi2,
+#endif
+#ifdef CONFIG_PWM
-+ &imx_pwm_device,
++ &imx_pwm_device,
+#endif
+#ifdef CONFIG_IMX_BACKLIGHT
-+ &imxbl_device,
++ &imxbl_device,
+#endif
+#if defined(CONFIG_SND_IMX_TSC2102) || defined(CONFIG_SND_IMX_TSC2102_MODULE)
+ &tsc2102_alsa_device,
@@ -676,9 +678,9 @@
+
+static void __init apf9328_init(void)
+{
-+ printk("--- Registering APF9328 ressources\n");
++ printk("--- Registering APF9328 ressources\n");
+
-+ // Serial
++ /* Serial */
+ imx_gpio_mode(PC9_PF_UART1_CTS);
+ imx_gpio_mode(PC10_PF_UART1_RTS);
+ imx_gpio_mode(PC11_PF_UART1_TXD);
@@ -690,23 +692,23 @@
+ imx_gpio_mode( PB29_PF_UART2_RTS );
+
+#ifdef CONFIG_FB_IMX /* LCD */
-+ set_imx_fb_info(&apf9328_fb_info);
-+ imx_fb_set_gpios(); /* init PORTD ....*/
++ set_imx_fb_info(&apf9328_fb_info);
++ imx_fb_set_gpios(); /* init PORTD ....*/
+#endif
+#ifdef CONFIG_CAN_MCP251X
-+ mcp251X_init_gpio();
++ mcp251X_init_gpio();
+#endif
+#ifdef CONFIG_ARMADEUS_ISP1761
+ imx_gpio_mode( ISP1761_GPIO_IRQ | GPIO_IN | GPIO_GIUS ); /* Set up IRQ line. */
-+#endif // CONFIG_ARMADEUS_ISP1761
++#endif
+
-+ platform_add_devices(devices, ARRAY_SIZE(devices));
++ platform_add_devices(devices, ARRAY_SIZE(devices));
+
+#if defined (CONFIG_ARMADEUS_MAX1027) || defined (CONFIG_SPI_TSC2102) || defined (CONFIG_CAN_MCP251X)
-+ spi_register_board_info(spi_board_info, ARRAY_SIZE(spi_board_info));
++ spi_register_board_info(spi_board_info, ARRAY_SIZE(spi_board_info));
+#endif
+
-+ printk("--- APF9328 ressources registered\n");
++ printk("--- APF9328 ressources registered\n");
+}
+
+/*
@@ -715,62 +717,61 @@
+ */
+static struct map_desc apf9328_io_desc[] __initdata = {
+#ifdef CONFIG_FB_IMX
-+ {
-+ .virtual = IMX_FB_VIRT,
-+ .pfn = __phys_to_pfn(IMX_FB_PHYS),
-+ .length = IMX_FB_SIZE,
-+ .type = MT_DEVICE
-+ },
-+#endif // CONFIG_FB_IMX
-+ // FPGA Memory mapping
-+ {.virtual = IMX_CS1_VIRT, .pfn = __phys_to_pfn(IMX_CS1_PHYS), .length = IMX_CS1_SIZE, .type = MT_DEVICE},
++ {
++ .virtual = IMX_FB_VIRT,
++ .pfn = __phys_to_pfn(IMX_FB_PHYS),
++ .length = IMX_FB_SIZE,
++ .type = MT_DEVICE
++ },
++#endif
++ /* FPGA Memory mapping */
++ {.virtual = IMX_CS1_VIRT, .pfn = __phys_to_pfn(IMX_CS1_PHYS), .length = IMX_CS1_SIZE, .type = MT_DEVICE},
+};
+
+void __init apf9328_map_io(void)
+{
-+ imx_map_io();
-+ iotable_init(apf9328_io_desc, ARRAY_SIZE(apf9328_io_desc));
++ imx_map_io();
++ iotable_init(apf9328_io_desc, ARRAY_SIZE(apf9328_io_desc));
+}
+
+static void __init apf9328_init_irq(void)
+{
-+ // Init generic IRQs
-+ imx_init_irq();
++ /* Init generic IRQs */
++ imx_init_irq();
+
-+ // Init our custom IRQs
++ /* Init our custom IRQs */
+#ifdef CONFIG_DM9000
-+ set_irq_type(APF9328_ETH_IRQ, IRQF_TRIGGER_FALLING);
++ set_irq_type(APF9328_ETH_IRQ, IRQF_TRIGGER_FALLING);
+#endif
+#ifdef CONFIG_SPI_TSC2102
-+ set_irq_type( IRQ_GPIOD(TSC2102_INT_GPIOD), IRQF_TRIGGER_FALLING );
++ set_irq_type( IRQ_GPIOD(TSC2102_INT_GPIOD), IRQF_TRIGGER_FALLING );
+#endif
+#ifdef CONFIG_CAN_MCP251X
-+ set_irq_type( IRQ_GPIOC(CAN_MPC251X_INT_GPIOC), IRQF_TRIGGER_FALLING );
++ set_irq_type( IRQ_GPIOC(CAN_MPC251X_INT_GPIOC), IRQF_TRIGGER_FALLING );
+#endif
+#ifdef CONFIG_ARMADEUS_FPGA_DRIVERS
-+ set_irq_type( APF9328_FPGA_IRQ, IRQF_TRIGGER_RISING );
++ set_irq_type( APF9328_FPGA_IRQ, IRQF_TRIGGER_RISING );
+#endif
+#ifdef CONFIG_ARMADEUS_ISP1761
-+ set_irq_type( ISP1761_IRQ, IRQF_TRIGGER_FALLING );
-+#endif // CONFIG_ARMADEUS_ISP1761
++ set_irq_type( ISP1761_IRQ, IRQF_TRIGGER_FALLING );
++#endif
+}
+
+
+MACHINE_START(APF9328, "Armadeus APF9328")
-+ /* Maintainer: Julien Boibessot, Armadeus */
-+ .phys_io = 0x00200000,
-+ .io_pg_offst = ((0xe0200000) >> 18) & 0xfffc,
-+ .boot_params = 0x08000100,
-+ .map_io = apf9328_map_io,
-+ .init_irq = apf9328_init_irq,
-+ .timer = &imx_timer,
-+ .init_machine = apf9328_init,
++ /* Maintainer: Julien Boibessot, Armadeus */
++ .phys_io = 0x00200000,
++ .io_pg_offst = ((0xe0200000) >> 18) & 0xfffc,
++ .boot_params = 0x08000100,
++ .map_io = apf9328_map_io,
++ .init_irq = apf9328_init_irq,
++ .timer = &imx_timer,
++ .init_machine = apf9328_init,
+MACHINE_END
-PATCH AUTOMATICALLY GENERATED
-DON'T EDIT IT OR YOUR MODIFICATIONS WILL BE LOST
-(Take a look at armadeus/target/linux/ directory to know how to generate it)
---- linux-2.6.27.13.original/arch/arm/mach-imx/apf9328_lcd_config.h
-+++ linux-2.6.27.13.mod/arch/arm/mach-imx/apf9328_lcd_config.h
+Index: linux-2.6.27.13/arch/arm/mach-imx/apf9328_lcd_config.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.27.13/arch/arm/mach-imx/apf9328_lcd_config.h 2009-05-01 10:34:16.000000000 +0200
@@ -0,0 +1,193 @@
+/*
+ *
@@ -965,11 +966,10 @@
+#endif // CONFIG_FB_IMX
+
+#endif // APF9328_LCD_CONFIG_H
-PATCH AUTOMATICALLY GENERATED
-DON'T EDIT IT OR YOUR MODIFICATIONS WILL BE LOST
-(Take a look at armadeus/target/linux/ directory to know how to generate it)
---- linux-2.6.27.13.original/arch/arm/mach-imx/include/mach/apf9328.h
-+++ linux-2.6.27.13.mod/arch/arm/mach-imx/include/mach/apf9328.h
+Index: linux-2.6.27.13/arch/arm/mach-imx/include/mach/apf9328.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.27.13/arch/arm/mach-imx/include/mach/apf9328.h 2009-05-01 10:34:16.000000000 +0200
@@ -0,0 +1,63 @@
+/*
+ * linux/include/asm-arm/arch-imx/apf9328.h
Modified: trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/021-armadeus-apf9328.patch
===================================================================
--- trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/021-armadeus-apf9328.patch 2009-04-30 21:34:55 UTC (rev 1248)
+++ trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/021-armadeus-apf9328.patch 2009-05-01 09:52:46 UTC (rev 1249)
@@ -4,8 +4,8 @@
Index: linux-2.6.29/arch/arm/mach-imx/apf9328.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.29/arch/arm/mach-imx/apf9328.c 2009-04-30 16:33:54.000000000 +0200
-@@ -0,0 +1,758 @@
++++ linux-2.6.29/arch/arm/mach-imx/apf9328.c 2009-05-01 11:35:08.000000000 +0200
+@@ -0,0 +1,788 @@
+/*
+ * linux/arch/arm/mach-imx/apf9328.c
+ *
@@ -54,7 +54,7 @@
+#include <linux/spi/max1027.h>
+#include <linux/usb/isp116x.h>
+#include <mach/imx_ssi.h>
-+
++#include "../../../drivers/armadeus/pwm/pwm.h"
+#ifdef CONFIG_DM9000
+#include <linux/dm9000.h>
+#endif
@@ -79,8 +79,11 @@
+#ifdef CONFIG_ARMADEUS_ISP1761_MODULE
+#define CONFIG_ARMADEUS_ISP1761 1
+#endif
++#ifdef CONFIG_ARMADEUS_PWM_DRIVER_MODULE
++#define CONFIG_PWM
++#endif
+
-+// --- ISP1761
++/* --- ISP1761 */
+#ifdef CONFIG_ARMADEUS_ISP1761
+
+static void apf_isp116x_delay(struct device *dev, int delay)
@@ -128,7 +131,7 @@
+ .id = 0,
+ .num_resources = ARRAY_SIZE(devfull_isp1761_resources),
+ .resource = devfull_isp1761_resources,
-+ .dev = { .platform_data = &isp116x_pdata, },
++ .dev = { .platform_data = &isp116x_pdata, },
+};
+
+/*static struct platform_device *devfull_isp1761_devices[] = {
@@ -137,61 +140,86 @@
+
+#endif
+
-+// --- ETHERNET RESSOURCE ---
++/* --- ETHERNET RESSOURCE --- */
+#ifdef CONFIG_DM9000
+static struct resource dm9000_resources[] = {
-+ [0] = {
-+ .start = (APF9328_ETH_PHYS + 0),
-+ .end = (APF9328_ETH_PHYS + 1),
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = (APF9328_ETH_PHYS + 2),
-+ .end = (APF9328_ETH_PHYS + 3),
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [2] = {
-+ .start = (APF9328_ETH_IRQ),
-+ .end = (APF9328_ETH_IRQ),
-+ .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWEDGE,
-+ },
++ [0] = {
++ .start = (APF9328_ETH_PHYS + 0),
++ .end = (APF9328_ETH_PHYS + 1),
++ .flags = IORESOURCE_MEM,
++ },
++ [1] = {
++ .start = (APF9328_ETH_PHYS + 2),
++ .end = (APF9328_ETH_PHYS + 3),
++ .flags = IORESOURCE_MEM,
++ },
++ [2] = {
++ .start = (APF9328_ETH_IRQ),
++ .end = (APF9328_ETH_IRQ),
++ .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWEDGE,
++ },
+};
+
+static struct dm9000_plat_data dm9000_setup = {
-+ .flags = DM9000_PLATF_16BITONLY
++ .flags = DM9000_PLATF_16BITONLY
+};
+
+static struct platform_device dm9000x_device = {
-+ .name = "dm9000",
-+ .id = 0,
-+ .num_resources = ARRAY_SIZE(dm9000_resources),
-+ .resource = dm9000_resources,
-+ .dev = { .platform_data = &dm9000_setup, },
++ .name = "dm9000",
++ .id = 0,
++ .num_resources = ARRAY_SIZE(dm9000_resources),
++ .resource = dm9000_resources,
++ .dev = { .platform_data = &dm9000_setup, },
+};
-+#endif // CONFIG_DM9000
++#endif /* CONFIG_DM9000 */
+
-+// --- PWM RESSOURCE ---
-+// I don't think it needs an ifdef - JB
++
++#ifdef CONFIG_PWM
+static struct resource pwm_resources[] = {
-+ [0] = {
-+ .start = (IMX_PWM_BASE),
-+ .end = (IMX_PWM_BASE + 0x0C),
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = (PWM_INT),
-+ .end = (PWM_INT),
-+ .flags = IORESOURCE_IRQ,
-+ },
++ [0] = {
++ .start = (IMX_PWM_BASE),
++ .end = (IMX_PWM_BASE + 0x0C),
++ .flags = IORESOURCE_MEM,
++ },
++ [1] = {
++ .start = (PWM_INT),
++ .end = (PWM_INT),
++ .flags = IORESOURCE_IRQ,
++ },
+};
+
++static int apf9328_pwm_0_init(void)
++{
++ /* Init Port PA[2] : PWMO*/
++ DDIR(0) |= 0x00000002;
++ GIUS(0) &= ~0x00000002;
++ GPR(0) &= ~0x00000002;
++ return 0;
++}
++
++static int apf9328_pwm_0_exit(void)
++{
++ return 0;
++}
++
++static struct imx_pwm_platform_data apf9328_pwm_0_data = {
++ .init = apf9328_pwm_0_init,
++ .exit = apf9328_pwm_0_exit,
++};
++
+static struct platform_device imx_pwm_device = {
-+ .name = "imx-pwm", // Should be the same as the driver name
-+ .id = 0,
-+ .num_resources = ARRAY_SIZE(pwm_resources),
-+ .resource = pwm_resources,
++ .name = "imx-pwm",
++ .id = 0,
++ .num_resources = ARRAY_SIZE(pwm_resources),
++ .resource = pwm_resources,
++ .dev = {
++ .platform_data = &apf9328_pwm_0_data,
++ }
+};
+
++#endif /* CONFIG_PWM */
++
++
+#if defined(CONFIG_SND_IMX_TSC2102) || defined(CONFIG_SND_IMX_TSC2102_MODULE)
+int apf9328_ssi_gpio_init(struct platform_device *pdev)
+{
@@ -278,27 +306,27 @@
+#endif /* defined(CONFIG_SND_IMX_TSC2102) || defined(CONFIG_SND_IMX_TSC2102_MODULE) */
+
+
-+// --- SERIAL RESSOURCE ---
++/* --- SERIAL RESSOURCE --- */
+static struct imxuart_platform_data uart_pdata = {
-+ .flags = IMXUART_HAVE_RTSCTS,
++ .flags = IMXUART_HAVE_RTSCTS,
+};
+
+static struct resource imx_uart1_resources[] = {
-+ [0] = {
-+ .start = 0x00206000,
-+ .end = 0x002060FF,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = (UART1_MINT_RX),
-+ .end = (UART1_MINT_RX),
-+ .flags = IORESOURCE_IRQ,
-+ },
-+ [2] = {
-+ .start = (UART1_MINT_TX),
-+ .end = (UART1_MINT_TX),
-+ .flags = IORESOURCE_IRQ,
++ [0] = {
++ .start = 0x00206000,
++ .end = 0x002060FF,
++ .flags = IORESOURCE_MEM,
+ },
++ [1] = {
++ .start = (UART1_MINT_RX),
++ .end = (UART1_MINT_RX),
++ .flags = IORESOURCE_IRQ,
++ },
++ [2] = {
++ .start = (UART1_MINT_TX),
++ .end = (UART1_MINT_TX),
++ .flags = IORESOURCE_IRQ,
++ },
+ [3] = { /* Mandatory (even if RTS is not used), otherwise drivers/serial/imx.c fails to allocate IRQs */
+ .start = UART1_MINT_RTS,
+ .end = UART1_MINT_RTS,
@@ -307,13 +335,13 @@
+};
+
+static struct platform_device imx_uart1_device = {
-+ .name = "imx-uart",
-+ .id = 0,
-+ .num_resources = ARRAY_SIZE(imx_uart1_resources),
-+ .resource = imx_uart1_resources,
-+ .dev = {
-+ .platform_data = &uart_pdata,
-+ }
++ .name = "imx-uart",
++ .id = 0,
++ .num_resources = ARRAY_SIZE(imx_uart1_resources),
++ .resource = imx_uart1_resources,
++ .dev = {
++ .platform_data = &uart_pdata,
++ }
+};
+
+static struct resource imx_uart2_resources[] = {
@@ -340,13 +368,13 @@
+};
+
+static struct platform_device imx_uart2_device = {
-+ .name = "imx-uart",
-+ .id = 1,
-+ .num_resources = ARRAY_SIZE(imx_uart2_resources),
-+ .resource = imx_uart2_resources,
-+ .dev = {
-+ .platform_data = &uart_pdata,
-+ }
++ .name = "imx-uart",
++ .id = 1,
++ .num_resources = ARRAY_SIZE(imx_uart2_resources),
++ .resource = imx_uart2_resources,
++ .dev = {
++ .platform_data = &uart_pdata,
++ }
+};
+
+#ifdef CONFIG_SPI_IMX
@@ -369,12 +397,12 @@
+};
+
+static struct platform_device imx_spi1 = {
-+ .name = "spi_imx",
-+ .id = 1,
-+ .resource = imx_spi1_resource,
-+ .num_resources = ARRAY_SIZE(imx_spi1_resource),
++ .name = "spi_imx",
++ .id = 1,
++ .resource = imx_spi1_resource,
++ .num_resources = ARRAY_SIZE(imx_spi1_resource),
+ .dev = {
-+ .platform_data = &imx_spi1_master_info,
++ .platform_data = &imx_spi1_master_info,
+ },
+};
+
@@ -397,17 +425,18 @@
+};
+
+static struct platform_device imx_spi2 = {
-+ .name = "spi_imx",
-+ .id = 2,
-+ .resource = imx_spi2_resource,
-+ .num_resources = ARRAY_SIZE(imx_spi2_resource),
++ .name = "spi_imx",
++ .id = 2,
++ .resource = imx_spi2_resource,
++ .num_resources = ARRAY_SIZE(imx_spi2_resource),
+ .dev = {
-+ .platform_data = &imx_spi2_master_info,
++ .platform_data = &imx_spi2_master_info,
+ },
+};
+
-+#endif //CONFIG_SPI_IMX
++#endif /* CONFIG_SPI_IMX */
+
++
+#ifdef CONFIG_ARMADEUS_MAX1027
+#define IMX_SPI1_SS_PIN 15
+#define IMX_SPI1_SS (1<<15)
@@ -416,35 +445,35 @@
+
+static int max1027_init(struct spi_device *spi)
+{
-+ imx_gpio_mode( PC14_PF_SPI1_SCLK );
-+ imx_gpio_mode( PC16_PF_SPI1_MISO );
-+ imx_gpio_mode( PC17_PF_SPI1_MOSI );
++ imx_gpio_mode( PC14_PF_SPI1_SCLK );
++ imx_gpio_mode( PC16_PF_SPI1_MISO );
++ imx_gpio_mode( PC17_PF_SPI1_MOSI );
+
-+ /* configure CNVST */
-+ DR(0) |= 1 << MAX1027_CNVST; // Initializes it High
-+ imx_gpio_mode( GPIO_PORTA | MAX1027_CNVST | GPIO_OUT | GPIO_GIUS | GPIO_DR );
++ /* configure CNVST */
++ DR(0) |= 1 << MAX1027_CNVST; /* Initializes it High */
++ imx_gpio_mode( GPIO_PORTA | MAX1027_CNVST | GPIO_OUT | GPIO_GIUS | GPIO_DR );
+
-+ /* configure EOC */
-+ imx_gpio_mode( GPIO_PORTA | MAX1027_EOC_INT | GPIO_IN | GPIO_GIUS );
++ /* configure EOC */
++ imx_gpio_mode( GPIO_PORTA | MAX1027_EOC_INT | GPIO_IN | GPIO_GIUS );
+
-+ /* SPI CSn is used as chip select but in GPIO mode */
-+ DR(2) |= IMX_SPI1_SS;
-+ imx_gpio_mode( GPIO_PORTC | IMX_SPI1_SS_PIN | GPIO_OUT | GPIO_GIUS | GPIO_DR );
++ /* SPI CSn is used as chip select but in GPIO mode */
++ DR(2) |= IMX_SPI1_SS;
++ imx_gpio_mode( GPIO_PORTC | IMX_SPI1_SS_PIN | GPIO_OUT | GPIO_GIUS | GPIO_DR );
+
-+ return 0;
++ return 0;
+}
+
+static int max1027_exit(struct spi_device *spi)
+{
-+ return 0;
++ return 0;
+}
+
+static void max1027_cs(u32 command)
+{
-+ if( command == SPI_CS_DEASSERT )
-+ DR(2) |= IMX_SPI1_SS;
-+ else
-+ DR(2) &= ~IMX_SPI1_SS;
++ if (command == SPI_CS_DEASSERT)
++ DR(2) |= IMX_SPI1_SS;
++ else
++ DR(2) &= ~IMX_SPI1_SS;
+}
+
+static struct spi_imx_chip max1027_hw = {
@@ -455,55 +484,54 @@
+ .conv = MAX1027_CONV_DEFAULT,
+ .setup = MAX1027_SETUP_DEFAULT,
+ .avg = MAX1027_AVG_DEFAULT,
-+ .cnvst_pin = (int)(MAX1027_CNVST|GPIO_PORTA),
++ .cnvst_pin = (int)(MAX1027_CNVST|GPIO_PORTA),
+ .init = max1027_init,
+ .exit = max1027_exit
+};
+
++#endif /* CONFIG_ARMADEUS_MAX1027 */
+
+
-+#endif // CONFIG_ARMADEUS_MAX1027
-+
+#ifdef CONFIG_SPI_TSC2102
+#define TSC2102_CS_GPIOB 17
+#define TSC2102_INT_GPIOD 8
+
+static int tsc2102_init_gpio(void)
+{
-+ // Activate SPI2 port ----
-+ // PortB 17 is used as chip select (in GPIO mode)
-+ DR(1) |= 1 << TSC2102_CS_GPIOB; // Initializes it High
-+ imx_gpio_mode( GPIO_PORTB | TSC2102_CS_GPIOB | GPIO_OUT | GPIO_GIUS | GPIO_DR );
-+ // Configure SPI2 outputs
-+ imx_gpio_mode( PD7_AIN_SPI2_SCLK );
-+ imx_gpio_mode( PD10_AIN_SPI2_TXD );
-+ imx_gpio_mode( PD9_AOUT_SPI2_RXD );
-+ FMCR |= SPI2_RXD_SEL; // RX is AOUT on PORTD
++ /* Activate SPI2 port ---- */
++ /* PortB 17 is used as chip select (in GPIO mode) */
++ DR(1) |= 1 << TSC2102_CS_GPIOB; /* Initializes it High */
++ imx_gpio_mode( GPIO_PORTB | TSC2102_CS_GPIOB | GPIO_OUT | GPIO_GIUS | GPIO_DR );
++ /* Configure SPI2 outputs */
++ imx_gpio_mode( PD7_AIN_SPI2_SCLK );
++ imx_gpio_mode( PD10_AIN_SPI2_TXD );
++ imx_gpio_mode( PD9_AOUT_SPI2_RXD );
++ FMCR |= SPI2_RXD_SEL; /* RX is AOUT on PORTD */
+
-+ // PortD 8 is used as PINTDAV interrupt
-+ imx_gpio_mode( GPIO_PORTD | TSC2102_INT_GPIOD | GPIO_IN | GPIO_GIUS );
-+ //imx_gpio_irq_type( IRQ_GPIOD(8), __IRQT_FALEDGE );
++ /* PortD 8 is used as PINTDAV interrupt */
++ imx_gpio_mode( GPIO_PORTD | TSC2102_INT_GPIOD | GPIO_IN | GPIO_GIUS );
++ /*imx_gpio_irq_type( IRQ_GPIOD(8), __IRQT_FALEDGE );*/
+
-+ printk("TSC2102 GPIOs initialized\n");
-+ return 0;
++ printk("TSC2102 GPIOs initialized\n");
++ return 0;
+}
+
-+// Chip select command for TSC2102
++/* Chip select command for TSC2102 */
+static void tsc2102_cs(u32 command)
+{
-+ // PortB 19 is used as chip select
-+ if( command == SPI_CS_DEASSERT )
-+ DR(1) |= 1<< TSC2102_CS_GPIOB;
-+ else
-+ DR(1) &= ~(1<< TSC2102_CS_GPIOB);
++ /* PortB 19 is used as chip select */
++ if( command == SPI_CS_DEASSERT )
++ DR(1) |= 1<< TSC2102_CS_GPIOB;
++ else
++ DR(1) &= ~(1<< TSC2102_CS_GPIOB);
+}
+
+static struct spi_imx_chip tsc2102_hw = {
-+ .cs_control = tsc2102_cs,
++ .cs_control = tsc2102_cs,
+};
+
+static struct tsc210x_config apf9328_tsc2102_config = {
-+ .use_internal = 1, // -> use internal voltage reference
++ .use_internal = 1, /* -> use internal voltage reference */
+ .monitor = TSC_BAT1 | TSC_AUX | TSC_TEMP,
+ .init = tsc2102_init_gpio,
+/* .apm_report = palmte_get_power_status,*/
@@ -512,154 +540,157 @@
+#endif*/
+};
+
-+#endif // CONFIG_SPI_TSC2102
++#endif /* CONFIG_SPI_TSC2102 */
+
++
+#ifdef CONFIG_CAN_MCP251X
+#define CAN_MPC251X_CS_GPIOB 19
+#define CAN_MPC251X_INT_GPIOC 13
+
-+// Chip select command for MCP251X
++/* Chip select command for MCP251X */
+static void mcp251X_cs(u32 command)
+{
-+ // PortB 19 is used as chip select
-+ if( command == SPI_CS_DEASSERT )
-+ DR(1) |= 1<< CAN_MPC251X_CS_GPIOB;
-+ else
-+ DR(1) &= ~(1<< CAN_MPC251X_CS_GPIOB);
++ /* PortB 19 is used as chip select */
++ if (command == SPI_CS_DEASSERT)
++ DR(1) |= 1<< CAN_MPC251X_CS_GPIOB;
++ else
++ DR(1) &= ~(1<< CAN_MPC251X_CS_GPIOB);
+}
+
+static struct spi_imx_chip mcp251X_hw = {
-+ .cs_control = mcp251X_cs,
++ .cs_control = mcp251X_cs,
+};
+
+static void mcp251X_init_gpio(void)
+{
-+ // Activate SPI2 port ----
-+ // PortB 19 is used as chip select (in GPIO mode)
-+ DR(1) |= 1 << CAN_MPC251X_CS_GPIOB; // Initializes it High
-+ imx_gpio_mode( GPIO_PORTB | CAN_MPC251X_CS_GPIOB | GPIO_OUT | GPIO_GIUS | GPIO_DR );
++ /* Activate SPI2 port ---- */
++ /* PortB 19 is used as chip select (in GPIO mode) */
++ DR(1) |= 1 << CAN_MPC251X_CS_GPIOB; /* Initializes it High */
++ imx_gpio_mode( GPIO_PORTB | CAN_MPC251X_CS_GPIOB | GPIO_OUT | GPIO_GIUS | GPIO_DR );
+
-+ // PortC 13 is used as CAN interrupt
-+ imx_gpio_mode( GPIO_PORTC | CAN_MPC251X_INT_GPIOC | GPIO_IN | GPIO_GIUS );
++ /* PortC 13 is used as CAN interrupt */
++ imx_gpio_mode( GPIO_PORTC | CAN_MPC251X_INT_GPIOC | GPIO_IN | GPIO_GIUS );
+
-+ // Configure SPI2 outputs
-+ imx_gpio_mode( PD7_AIN_SPI2_SCLK );
-+ imx_gpio_mode( PD10_AIN_SPI2_TXD );
-+ imx_gpio_mode( PD9_AOUT_SPI2_RXD );
-+ FMCR |= SPI2_RXD_SEL; // RX is AOUT on PORTD
++ /* Configure SPI2 outputs */
++ imx_gpio_mode( PD7_AIN_SPI2_SCLK );
++ imx_gpio_mode( PD10_AIN_SPI2_TXD );
++ imx_gpio_mode( PD9_AOUT_SPI2_RXD );
++ FMCR |= SPI2_RXD_SEL; /* RX is AOUT on PORTD */
+}
+
+static struct mcp251x_platform_data apf9328_mcp251x_config = {
-+ .oscillator_frequency = 16000000,
-+ .board_specific_setup = NULL,
-+ .device_reset = NULL,
-+ .transceiver_enable = NULL,
++ .oscillator_frequency = 16000000,
++ .board_specific_setup = NULL,
++ .device_reset = NULL,
++ .transceiver_enable = NULL,
+};
+
-+#endif // CONFIG_CAN_MCP251X
++#endif /* CONFIG_CAN_MCP251X */
+
+
+static struct spi_board_info spi_board_info[] __initdata = {
+#ifdef CONFIG_ARMADEUS_MAX1027
+{
-+ .modalias = "max1027",
-+ .controller_data = &max1027_hw,
-+ .max_speed_hz = 8000000,
-+ .bus_num = 1, // SPI1
-+ .chip_select = 0,
-+ .mode = 0,
-+ .irq = IRQ_GPIOA(MAX1027_EOC_INT),
-+ .platform_data = &apf9328_max1027_config,
++ .modalias = "max1027",
++ .controller_data= &max1027_hw,
++ .max_speed_hz = 8000000,
++ .bus_num = 1, /* SPI1 */
++ .chip_select = 0,
++ .mode = 0,
++ .irq = IRQ_GPIOA(MAX1027_EOC_INT),
++ .platform_data = &apf9328_max1027_config,
+},
-+#endif // CONFIG_SENSORS_MAX1027
++#endif
+#ifdef CONFIG_SPI_TSC2102
+{
-+ .modalias = "tsc210x",
-+ .controller_data = &tsc2102_hw,
-+ .max_speed_hz = 8000000,
-+ .bus_num = 2, // SPI2
-+ .irq = IRQ_GPIOD(TSC2102_INT_GPIOD),
-+ .chip_select = 0,
-+ .mode = 0,
-+ .platform_data = &apf9328_tsc2102_config,
++ .modalias = "tsc210x",
++ .controller_data= &tsc2102_hw,
++ .max_speed_hz = 8000000,
++ .bus_num = 2, /* SPI2 */
++ .irq = IRQ_GPIOD(TSC2102_INT_GPIOD),
++ .chip_select = 0,
++ .mode = 0,
++ .platform_data = &apf9328_tsc2102_config,
+},
-+#endif // CONFIG_SPI_TSC2102
++#endif
+#ifdef CONFIG_CAN_MCP251X
-+ {
-+ .modalias = "mcp251x",
-+ .max_speed_hz = 8000000, /* 8MHz */
-+ .controller_data = &mcp251X_hw,
-+ .bus_num = 2,
-+ .mode = SPI_MODE_0,
-+ .chip_select = 1,
-+ .irq = IRQ_GPIOC( CAN_MPC251X_INT_GPIOC ),
-+ .platform_data = &apf9328_mcp251x_config,
-+ },
-+#endif // CONFIG_CAN_MCP251X
++{
++ .modalias = "mcp251x",
++ .max_speed_hz = 8000000, /* 8MHz */
++ .controller_data= &mcp251X_hw,
++ .bus_num = 2,
++ .mode = SPI_MODE_0,
++ .chip_select = 1,
++ .irq = IRQ_GPIOC( CAN_MPC251X_INT_GPIOC ),
++ .platform_data = &apf9328_mcp251x_config,
++},
++#endif
+};
+
-+// --- LCD RESSOURCE ---
++/* --- LCD RESSOURCE --- */
+#ifdef CONFIG_FB_IMX
-+// all custom LCD configuration is deported to this file for clarity purpose:
++/* all custom LCD configuration is deported to this file for clarity purpose: */
+#include "apf9328_lcd_config.h"
+#define IMX_FB_PHYS (0x0C000000 - 0x40000)
-+#endif // CONFIG_FB_IMX
++#endif
+
+#ifdef CONFIG_IMX_BACKLIGHT
+static struct imxbl_machinfo imx_bl_machinfo = {
-+ .max_intensity = 0xff,
-+ .default_intensity = 0x90,
-+ .limit_mask = 0x7f, // When battery is low
-+// set_bl_intensity = put a function here if you want to overload default one,
++ .max_intensity = 0xff,
++ .default_intensity = 0x90,
++ .limit_mask = 0x7f, /* When battery is low */
++/* set_bl_intensity = put a function here if you want to overload default one, */
+};
-+//extern struct platform_device imxfb_device; // filled in generic.c
++
+static struct platform_device imxbl_device = {
-+ .name = "imx-bl",
-+ .dev = {
-+// .parent = &imxfb_device.dev, crash kernel even if EXPORT_SYMBOL() is done in generic.c
-+ .platform_data = &imx_bl_machinfo,
-+ },
-+ .id = 0,
++ .name = "imx-bl",
++ .dev = {
++ // .parent = &imxfb_device.dev, crash kernel even if EXPORT_SYMBOL() is done in generic.c
++ .platform_data = &imx_bl_machinfo,
++ },
++ .id = 0,
+};
-+#endif // CONFIG_IMX_BACKLIGHT
++#endif /* CONFIG_IMX_BACKLIGHT */
+
+/*
+ * The APF9328 can have up to 32MB NOR
+ */
+static struct resource flash_resource = {
-+ .start = IMX_CS0_PHYS,
-+ .end = IMX_CS0_PHYS + (32 * 1024 * 1024) - 1,
-+ .flags = IORESOURCE_MEM,
++ .start = IMX_CS0_PHYS,
++ .end = IMX_CS0_PHYS + (32 * 1024 * 1024) - 1,
++ .flags = IORESOURCE_MEM,
+};
+
+static struct physmap_flash_data apf9328_flash_data = {
-+ .width = 2,
++ .width = 2,
+};
+
+static struct platform_device apf9328_flash_device = {
-+ .name = "physmap-flash",
-+ .id = 0,
-+ .dev = {
-+ .platform_data = &apf9328_flash_data,
-+ },
-+ .resource = &flash_resource,
-+ .num_resources = 1,
++ .name = "physmap-flash",
++ .id = 0,
++ .dev = {
++ .platform_data = &apf9328_flash_data,
++ },
++ .resource = &flash_resource,
++ .num_resources = 1,
+};
+
+
+static struct platform_device *devices[] __initdata = {
-+ &imx_uart1_device,
-+ &imx_uart2_device,
++ &imx_uart1_device,
++ &imx_uart2_device,
+#ifdef CONFIG_DM9000
-+ &dm9000x_device,
++ &dm9000x_device,
+#endif
+#ifdef CONFIG_SPI_IMX
-+ &imx_spi1,
-+ &imx_spi2,
++ &imx_spi1,
++ &imx_spi2,
+#endif
-+ &imx_pwm_device,
++#ifdef CONFIG_PWM
++ &imx_pwm_device,
++#endif
+#ifdef CONFIG_IMX_BACKLIGHT
-+ &imxbl_device,
++ &imxbl_device,
+#endif
+#if defined(CONFIG_SND_IMX_TSC2102) || defined(CONFIG_SND_IMX_TSC2102_MODULE)
+ &tsc2102_alsa_device,
@@ -675,7 +706,7 @@
+{
+ printk("--- Registering APF9328 ressources\n");
+
-+ // Serial
++ /* Serial */
+ imx_gpio_mode(PC9_PF_UART1_CTS);
+ imx_gpio_mode(PC10_PF_UART1_RTS);
+ imx_gpio_mode(PC11_PF_UART1_TXD);
@@ -687,23 +718,23 @@
+ imx_gpio_mode( PB29_PF_UART2_RTS );
+
+#ifdef CONFIG_FB_IMX /* LCD */
-+ set_imx_fb_info(&apf9328_fb_info);
-+ imx_fb_set_gpios(&apf9328_fb_info); /* init PORTD ....*/
++ set_imx_fb_info(&apf9328_fb_info);
++ imx_fb_set_gpios(&apf9328_fb_info); /* init PORTD ....*/
+#endif
+#ifdef CONFIG_CAN_MCP251X
-+ mcp251X_init_gpio();
++ mcp251X_init_gpio();
+#endif
+#ifdef CONFIG_ARMADEUS_ISP1761
+ imx_gpio_mode( ISP1761_GPIO_IRQ | GPIO_IN | GPIO_GIUS ); /* Set up IRQ line. */
-+#endif // CONFIG_ARMADEUS_ISP1761
++#endif
+
-+ platform_add_devices(devices, ARRAY_SIZE(devices));
++ platform_add_devices(devices, ARRAY_SIZE(devices));
+
+#if defined (CONFIG_ARMADEUS_MAX1027) || defined (CONFIG_SPI_TSC2102) || defined (CONFIG_CAN_MCP251X)
-+ spi_register_board_info(spi_board_info, ARRAY_SIZE(spi_board_info));
++ spi_register_board_info(spi_board_info, ARRAY_SIZE(spi_board_info));
+#endif
+
-+ printk("--- APF9328 ressources registered\n");
++ printk("--- APF9328 ressources registered\n");
+}
+
+/*
@@ -712,62 +743,61 @@
+ */
+static struct map_desc apf9328_io_desc[] __initdata = {
+#ifdef CONFIG_FB_IMX
-+ {
-+ .virtual = IMX_FB_VIRT,
-+ .pfn = __phys_to_pfn(IMX_FB_PHYS),
-+ .length = IMX_FB_SIZE,
-+ .type = MT_DEVICE
-+ },
-+#endif // CONFIG_FB_IMX
-+ // FPGA Memory mapping
-+ {.virtual = IMX_CS1_VIRT, .pfn = __phys_to_pfn(IMX_CS1_PHYS), .length = IMX_CS1_SIZE, .type = MT_DEVICE},
++ {
++ .virtual = IMX_FB_VIRT,
++ .pfn = __phys_to_pfn(IMX_FB_PHYS),
++ .length = IMX_FB_SIZE,
++ .type = MT_DEVICE
++ },
++#endif
++ /* FPGA Memory mapping */
++ {.virtual = IMX_CS1_VIRT, .pfn = __phys_to_pfn(IMX_CS1_PHYS), .length = IMX_CS1_SIZE, .type = MT_DEVICE},
+};
+
+void __init apf9328_map_io(void)
+{
-+ imx_map_io();
-+ iotable_init(apf9328_io_desc, ARRAY_SIZE(apf9328_io_desc));
++ imx_map_io();
++ iotable_init(apf9328_io_desc, ARRAY_SIZE(apf9328_io_desc));
+}
+
+static void __init apf9328_init_irq(void)
+{
-+ // Init generic IRQs
-+ imx_init_irq();
++ /* Init generic IRQs */
++ imx_init_irq();
+
-+ // Init our custom IRQs
++ /* Init our custom IRQs */
+#ifdef CONFIG_DM9000
-+ set_irq_type(APF9328_ETH_IRQ, IRQF_TRIGGER_FALLING);
++ set_irq_type(APF9328_ETH_IRQ, IRQF_TRIGGER_FALLING);
+#endif
+#ifdef CONFIG_SPI_TSC2102
-+ set_irq_type( IRQ_GPIOD(TSC2102_INT_GPIOD), IRQF_TRIGGER_FALLING );
++ set_irq_type( IRQ_GPIOD(TSC2102_INT_GPIOD), IRQF_TRIGGER_FALLING );
+#endif
+#ifdef CONFIG_CAN_MCP251X
-+ set_irq_type( IRQ_GPIOC(CAN_MPC251X_INT_GPIOC), IRQF_TRIGGER_FALLING );
++ set_irq_type( IRQ_GPIOC(CAN_MPC251X_INT_GPIOC), IRQF_TRIGGER_FALLING );
+#endif
+#ifdef CONFIG_ARMADEUS_FPGA_DRIVERS
-+ set_irq_type( APF9328_FPGA_IRQ, IRQF_TRIGGER_RISING );
++ set_irq_type( APF9328_FPGA_IRQ, IRQF_TRIGGER_RISING );
+#endif
+#ifdef CONFIG_ARMADEUS_ISP1761
-+ set_irq_type( ISP1761_IRQ, IRQF_TRIGGER_FALLING );
-+#endif // CONFIG_ARMADEUS_ISP1761
++ set_irq_type( ISP1761_IRQ, IRQF_TRIGGER_FALLING );
++#endif
+}
+
+
+MACHINE_START(APF9328, "Armadeus APF9328")
-+ /* Maintainer: Julien Boibessot, Armadeus */
-+ .phys_io = 0x00200000,
-+ .io_pg_offst = ((0xe0200000) >> 18) & 0xfffc,
-+ .boot_params = 0x08000100,
-+ .map_io = apf9328_map_io,
-+ .init_irq = apf9328_init_irq,
-+ .timer = &imx_timer,
-+ .init_machine = apf9328_init,
++ /* Maintainer: Julien Boibessot, Armadeus */
++ .phys_io = 0x00200000,
++ .io_pg_offst = ((0xe0200000) >> 18) & 0xfffc,
++ .boot_params = 0x08000100,
++ .map_io = apf9328_map_io,
++ .init_irq = apf9328_init_irq,
++ .timer = &imx_timer,
++ .init_machine = apf9328_init,
+MACHINE_END
-+
Index: linux-2.6.29/arch/arm/mach-imx/apf9328_lcd_config.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.29/arch/arm/mach-imx/apf9328_lcd_config.h 2009-04-30 14:37:35.000000000 +0200
++++ linux-2.6.29/arch/arm/mach-imx/apf9328_lcd_config.h 2009-05-01 10:16:10.000000000 +0200
@@ -0,0 +1,263 @@
+/*
+ *
@@ -1035,7 +1065,7 @@
Index: linux-2.6.29/arch/arm/mach-imx/include/mach/apf9328.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.29/arch/arm/mach-imx/include/mach/apf9328.h 2009-04-29 15:15:18.000000000 +0200
++++ linux-2.6.29/arch/arm/mach-imx/include/mach/apf9328.h 2009-05-01 10:16:10.000000000 +0200
@@ -0,0 +1,63 @@
+/*
+ * linux/include/asm-arm/arch-imx/apf9328.h
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|