[Armadeus-commitlog] armadeus branch, master, updated. armadeus-4.1-323-gfc8e6ec
Brought to you by:
sszy
|
From: jorasse <jo...@us...> - 2012-05-23 22:11:28
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "armadeus".
The branch, master has been updated
via fc8e6ec67b11887a524097e29c50b90460fe25f4 (commit)
via 7845d55787986d26d168d6af3294b5f75b5e3f4a (commit)
from 61c43fbb986e9eadc10e11f56de77532456cc0de (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit fc8e6ec67b11887a524097e29c50b90460fe25f4
Merge: 7845d55 61c43fb
Author: Eric Jarrige <eri...@ar...>
Date: Thu May 24 00:11:24 2012 +0200
Merge branch 'master' of ssh://armadeus.git.sourceforge.net/gitroot/armadeus/armadeus
commit 7845d55787986d26d168d6af3294b5f75b5e3f4a
Author: Eric Jarrige <eri...@ar...>
Date: Thu May 24 00:09:59 2012 +0200
[LINUX] apf28: clean and rework mx28 ethernet FEC devices to improve reliability and power comsumption in low power modes
-----------------------------------------------------------------------
Summary of changes:
.../450-armadeus-add_apf28_module_support.patch | 284 +++++++++++++++-----
...1-armadeus-add_apf28dev_baseboard_support.patch | 92 ++-----
2 files changed, 233 insertions(+), 143 deletions(-)
diff --git a/patches/linux/2.6.35/450-armadeus-add_apf28_module_support.patch b/patches/linux/2.6.35/450-armadeus-add_apf28_module_support.patch
index 1940bea..91d6d70 100644
--- a/patches/linux/2.6.35/450-armadeus-add_apf28_module_support.patch
+++ b/patches/linux/2.6.35/450-armadeus-add_apf28_module_support.patch
@@ -37,7 +37,7 @@ Index: linux-2.6.35.3/arch/arm/mach-mx28/mach-apf28.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6.35.3/arch/arm/mach-mx28/mach-apf28.c 2012-02-03 17:39:56.000000000 +0100
-@@ -0,0 +1,323 @@
+@@ -0,0 +1,401 @@
+/*
+ * Copyright (C) 2012 Armadeus systems
+ *
@@ -66,14 +66,17 @@ Index: linux-2.6.35.3/arch/arm/mach-mx28/mach-apf28.c
+#include <linux/clk.h>
+#include <linux/platform_device.h>
+#include <linux/delay.h>
++#include <linux/fec.h>
+
+#include <asm/setup.h>
+#include <asm/mach-types.h>
+#include <asm/mach/arch.h>
+
++#include <mach/apf28.h>
+#include <mach/hardware.h>
+#include <mach/device.h>
+#include <mach/pinctrl.h>
++#include <mach/regs-ocotp.h>
+
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/partitions.h>
@@ -82,8 +85,6 @@ Index: linux-2.6.35.3/arch/arm/mach-mx28/mach-apf28.c
+#include "mx28_pins.h"
+#include "device.h"
+
-+extern void apf28_baseboard_init(void);
-+
+static struct pin_desc apf28_fixed_pins[] = {
+ {
+ .name = "DUART.RX",
@@ -95,9 +96,6 @@ Index: linux-2.6.35.3/arch/arm/mach-mx28/mach-apf28.c
+ .id = PINID_PWM1,
+ .fun = PIN_FUN3,
+ },
-+};
-+
-+static struct pin_desc apf28_eth_pins[] = {
+#if defined(CONFIG_FEC) || defined(CONFIG_FEC_MODULE)\
+ || defined(CONFIG_FEC_L2SWITCH)
+ {
@@ -191,110 +189,190 @@ Index: linux-2.6.35.3/arch/arm/mach-mx28/mach-apf28.c
+ .drive = 1,
+ },
+ {
-+ .name = "PHY0_RESET",
-+ .id = PINID_ENET0_RX_CLK,
++ .name = "ETH0_INT",
++ .id = PINID_ENET0_TX_CLK,
+ .fun = PIN_GPIO,
+ .strength = PAD_4MA,
+ .voltage = PAD_3_3V,
+ .pullup = 0,
+ .drive = 1,
+ .pull = 0,
-+ .output = 1,
-+ .data = 1,
++ .output = 0,
+ },
+ {
-+ .name = "ETH0_INT",
-+ .id = PINID_ENET0_TX_CLK,
++ .name = "PHY0_RESET",
++ .id = PINID_ENET0_RX_CLK,
+ .fun = PIN_GPIO,
+ .strength = PAD_4MA,
+ .voltage = PAD_3_3V,
+ .pullup = 0,
+ .drive = 1,
+ .pull = 0,
-+ .output = 0,
++ .output = 1,
++ .data = 1,
+ },
+#endif /* defined(CONFIG_FEC) || defined(CONFIG_FEC_MODULE) */
+};
+
-+int __inline__ apf28_enet0_gpio_init(void)
++/*
++ * Stub implementations for mx287 FEC1 init to be overloaded in the baseboard
++ * source code.
++ */
++int __mx287_fec1_gpio_init(void) {
++ return 0;
++}
++
++int mx287_fec1_gpio_init(void)
++ __attribute__((weak, alias("__mx287_fec1_gpio_init")));
++
++/* Stub implementation used in FEC l2switch mode*/
++int mx28evk_enet_gpio_init(void)
+{
-+ /* reset phy */
+ gpio_direction_output(MXS_PIN_TO_GPIO(PINID_ENET0_RX_CLK), 0);
-+
+ udelay(100);
+ gpio_direction_output(MXS_PIN_TO_GPIO(PINID_ENET0_RX_CLK), 1);
++ mx287_fec1_gpio_init();
+
+ return 0;
+}
+
-+void __inline__ apf28_enet0_io_lowerpower_enter(void)
++/*
++ * Power management calls these function when entering and leaving sleep modes.
++ * They can be overloaded in the baseboard source code.
++ */
++void __mx28evk_enet_io_lowerpower_enter(void) {; }
++void mx28evk_enet_io_lowerpower_enter(void)
++ __attribute__((weak, alias("__mx28evk_enet_io_lowerpower_enter")));
++
++void __mx28evk_enet_io_lowerpower_exit(void) { ; }
++void mx28evk_enet_io_lowerpower_exit(void)
++ __attribute__((weak, alias("__mx28evk_enet_io_lowerpower_exit")));
++
++
++#if defined(CONFIG_FEC) || defined(CONFIG_FEC_MODULE)\
++ || defined(CONFIG_FEC2) || defined(CONFIG_FEC2_MODULE)
++int apf28_fec0_gpio_init(void)
+{
-+ int i;
-+ for (i = 0; i < ARRAY_SIZE(apf28_eth_pins); i++) {
-+ mxs_release_pin(apf28_eth_pins[i].id,
-+ apf28_eth_pins[i].name);
-+ gpio_request(MXS_PIN_TO_GPIO(apf28_eth_pins[i].id),
-+ apf28_eth_pins[i].name);
-+ gpio_direction_output(
-+ MXS_PIN_TO_GPIO(apf28_eth_pins[i].id), 0);
-+ }
++ gpio_direction_output(MXS_PIN_TO_GPIO(PINID_ENET0_RX_CLK), 0);
++ udelay(100);
++ gpio_direction_output(MXS_PIN_TO_GPIO(PINID_ENET0_RX_CLK), 1);
++
++ return 0;
+}
+
-+void __inline__ apf28_enet0_io_lowerpower_exit(void)
++#if defined(CONFIG_FEC) || defined(CONFIG_FEC_MODULE)
++static struct resource fec0_resource[] = {
++ {
++ .start = ENET_PHYS_ADDR,
++ .end = ENET_PHYS_ADDR + 0x3fff,
++ .flags = IORESOURCE_MEM
++ },
++ {
++ .start = IRQ_ENET_MAC0,
++ .end = IRQ_ENET_MAC0,
++ .flags = IORESOURCE_IRQ
++ },
++};
++
++static struct fec_platform_data fec_pdata0 = {
++ .phy = PHY_INTERFACE_MODE_RMII,
++ .init = apf28_fec0_gpio_init,
++};
++#endif
++
++#if defined(CONFIG_FEC2) || defined(CONFIG_FEC2_MODULE)
++static struct resource fec1_resource[] = {
++ {
++ .start = ENET_PHYS_ADDR + 0x4000,
++ .end = ENET_PHYS_ADDR + 0x7fff,
++ .flags = IORESOURCE_MEM
++ },
++ {
++ .start = IRQ_ENET_MAC1,
++ .end = IRQ_ENET_MAC1,
++ .flags = IORESOURCE_IRQ
++ },
++};
++
++static struct fec_platform_data fec_pdata1 = {
++ .phy = PHY_INTERFACE_MODE_RMII,
++ .init = mx287_fec1_gpio_init,
++};
++#endif
++
++
++static void __init apf28_init_fec(void)
+{
++ struct platform_device *pdev;
++ struct mxs_dev_lookup *lookup;
++ struct fec_platform_data *pfec;
+ int i;
-+ for (i = 0; i < ARRAY_SIZE(apf28_eth_pins); i++) {
-+ gpio_free(MXS_PIN_TO_GPIO(apf28_eth_pins[i].id));
-+ if (apf28_eth_pins[i].fun != PIN_GPIO)
-+ mxs_request_pin(apf28_eth_pins[i].id,
-+ apf28_eth_pins[i].fun,
-+ apf28_eth_pins[i].name);
-+ else {
-+ gpio_request(MXS_PIN_TO_GPIO(apf28_eth_pins[i].id),
-+ apf28_eth_pins[i].name);
-+ if (apf28_eth_pins[i].output)
-+ gpio_direction_output(
-+ MXS_PIN_TO_GPIO(apf28_eth_pins[i].id),
-+ apf28_eth_pins[i].data);
-+ else
-+ gpio_direction_input(
-+ MXS_PIN_TO_GPIO(apf28_eth_pins[i].id));
++ u32 val;
++
++ __raw_writel(BM_OCOTP_CTRL_RD_BANK_OPEN,
++ IO_ADDRESS(OCOTP_PHYS_ADDR) + HW_OCOTP_CTRL_SET);
++
++ while (BM_OCOTP_CTRL_BUSY &
++ __raw_readl(IO_ADDRESS(OCOTP_PHYS_ADDR) + HW_OCOTP_CTRL))
++ udelay(10);
++
++ lookup = mxs_get_devices("mxs-fec");
++ if (lookup == NULL || IS_ERR(lookup))
++ return;
++
++ for (i = 0; i < lookup->size; i++) {
++ pdev = lookup->pdev + i;
++ val = __raw_readl(IO_ADDRESS(OCOTP_PHYS_ADDR) +
++ HW_OCOTP_CUSTn(pdev->id));
++ switch (pdev->id) {
++ case 0:
++#if defined(CONFIG_FEC) || defined(CONFIG_FEC_MODULE)
++ pdev->resource = fec0_resource;
++ pdev->num_resources = ARRAY_SIZE(fec0_resource);
++ pdev->dev.platform_data = &fec_pdata0;
++ break;
++ case 1:
++#endif
++#if defined(CONFIG_FEC2) || defined(CONFIG_FEC2_MODULE)
++ pdev->resource = fec1_resource;
++ pdev->num_resources = ARRAY_SIZE(fec1_resource);
++ pdev->dev.platform_data = &fec_pdata1;
++ break;
++#endif
++ default:
++ return;
+ }
-+ }
-+}
+
-+#if !defined(CONFIG_FEC2) && !defined(CONFIG_FEC2_MODULE)\
-+ && !defined(CONFIG_FEC_L2SWITCH)
-+int mx28evk_enet_gpio_init(void)
-+{
-+ apf28_enet0_gpio_init();
-+ return 0;
-+}
++ pfec = (struct fec_platform_data *)pdev->dev.platform_data;
++ pfec->mac[0] = 0x00;
++ pfec->mac[1] = 0x1e;
++ pfec->mac[2] = (val >> 24) & 0xFF;
++ pfec->mac[3] = (val >> 16) & 0xFF;
++ pfec->mac[4] = (val >> 8) & 0xFF;
++ pfec->mac[5] = (val >> 0) & 0xFF;
+
-+void mx28evk_enet_io_lowerpower_enter(void)
-+{
-+ apf28_enet0_io_lowerpower_enter();
++ mxs_add_device(pdev, 2);
++ }
+}
+
-+void mx28evk_enet_io_lowerpower_exit(void)
-+{
-+ apf28_enet0_io_lowerpower_exit();
-+}
-+#endif
++#else
++static void __init apf28_init_fec(void) { ; }
++#endif /* defined(CONFIG_FEC) || defined(CONFIG_FEC_MODULE)
++ || defined(CONFIG_FEC2) || defined(CONFIG_FEC2_MODULE) */
+
+/* used by device.c (mx28evk makes it a bootcmd option) */
+int enable_gpmi = 1;
+
+
+static void __init fixup_board(struct machine_desc *desc, struct tag *tags,
-+ char **cmdline, struct meminfo *mi)
++ char **cmdline, struct meminfo *mi)
+{
+ mx28_set_input_clk(24000000, 24000000, 32000, 50000000);
+}
+
+static void __init apf28_device_init(void)
+{
-+ /* Add apf28 special code */
++ /* Add apf28 special device init code */
+ ;
+}
+
@@ -334,21 +412,21 @@ Index: linux-2.6.35.3/arch/arm/mach-mx28/mach-apf28.c
+#else
+ iram_init(MX28_OCRAM_PHBASE, MX28_OCRAM_SIZE);
+#endif
-+
+ mx28_gpio_init();
+ apf28_init_pin_group(apf28_fixed_pins, ARRAY_SIZE(apf28_fixed_pins));
++#ifdef CONFIG_MACH_APF28_HAS_BASEBOARD
++ apf28_baseboard_pins_init();
++#endif
+
-+#if defined(CONFIG_FEC) || defined(CONFIG_FEC_MODULE)\
-+ || defined(CONFIG_FEC_L2SWITCH)
-+ apf28_init_pin_group(apf28_eth_pins, ARRAY_SIZE(apf28_eth_pins));
-+#endif /* defined(CONFIG_FEC) || defined(CONFIG_FEC_MODULE) */
++ apf28_init_fec();
+
+ mx28_device_init();
+ apf28_device_init();
-+
+#ifdef CONFIG_MACH_APF28_HAS_BASEBOARD
-+ apf28_baseboard_init();
++ apf28_baseboard_devices_init();
+#endif
++
++
+}
+
+MACHINE_START(APF28, "Armadeus APF28")
@@ -361,6 +439,74 @@ Index: linux-2.6.35.3/arch/arm/mach-mx28/mach-apf28.c
+ .init_machine = apf28_init_machine,
+ .timer = &mx28_timer.timer,
+MACHINE_END
+Index: linux-2.6.35.3.ref/arch/arm/mach-mx28/include/mach/apf28.h
+===================================================================
+--- linux-2.6.35.3.ref/arch/arm/mach-mx28/include/mach/apf28.h
++++ linux-2.6.35.3.ref/arch/arm/mach-mx28/include/mach/apf28.h
+@@ -0,0 +1,63 @@
++/*
++ * Copyright (C) 2012 Armadeus systems
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License along
++ * with this program; if not, write to the Free Software Foundation, Inc.,
++ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
++ */
++
++#ifndef __ASM_ARM_MACH_APF28_H
++#define __ASM_ARM_MACH_APF28_H
++
++#include <mach/pinctrl.h>
++
++/*
++ * This function initialize the CPU pins used on the base board and shall
++ * be implemented in the base board file (ex. apf28dev.c)
++ * It will be called at startup from mach-apf28.c.
++ */
++extern void __init apf28_baseboard_pins_init(void);
++
++/*
++ * This function initialize the base board specific devices connected to
++ * the board and shall be implemented in the base board file (ex. apf28dev.c)
++ * It will be called at startup from mach-apf28.c.
++ */
++extern void __init apf28_baseboard_devices_init(void);
++
++/*
++ * Base board function to initialize the ethernet FEC1 interface if needed.
++ * This function may be implemented in the base board file if a specific
++ * is required to initialize the FEC1
++ * It will be called at startup from mach-apf28.c.
++ * This function may not be implemented
++ */
++extern int mx287_fec1_gpio_init(void);
++
++/*
++ * Base board can use apf28_init_pin_group() to initialize a set of CPU pins
++ * from a description table.
++ */
++extern void __init apf28_init_pin_group(struct pin_desc *pins, unsigned count);
++
++/*
++ * Base board can implement these 2 functions to add any specific code to put
++ * the ethernet external hardware in low power mode and to wake up the
++ * interface on resume.
++ * These function may not be implemented
++ */
++extern void mx28evk_enet_io_lowerpower_enter(void);
++extern void mx28evk_enet_io_lowerpower_exit(void);
++
++
++#endif /* __ASM_ARM_MACH_APF28_H */
Index: linux-2.6.35.3/arch/arm/tools/mach-types
===================================================================
--- linux-2.6.35.3.orig/arch/arm/tools/mach-types 2012-01-31 14:28:17.000000000 +0100
diff --git a/patches/linux/2.6.35/451-armadeus-add_apf28dev_baseboard_support.patch b/patches/linux/2.6.35/451-armadeus-add_apf28dev_baseboard_support.patch
index 233ac93..59bbf36 100644
--- a/patches/linux/2.6.35/451-armadeus-add_apf28dev_baseboard_support.patch
+++ b/patches/linux/2.6.35/451-armadeus-add_apf28dev_baseboard_support.patch
@@ -45,7 +45,7 @@ Index: linux-2.6.35.3/arch/arm/mach-mx28/apf28dev.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6.35.3/arch/arm/mach-mx28/apf28dev.c 2012-02-15 15:51:09.000000000 +0100
-@@ -0,0 +1,539 @@
+@@ -0,0 +1,483 @@
+/*
+ * Copyright (C) 2012 Armadeus systems
+ *
@@ -73,6 +73,7 @@ Index: linux-2.6.35.3/arch/arm/mach-mx28/apf28dev.c
+#include <linux/err.h>
+#include <linux/clk.h>
+#include <linux/delay.h>
++#include <linux/fec.h>
+#include <linux/gpio_keys.h>
+#include <linux/input.h>
+#include <linux/leds.h>
@@ -83,6 +84,7 @@ Index: linux-2.6.35.3/arch/arm/mach-mx28/apf28dev.c
+#include <asm/mach-types.h>
+#include <asm/mach/arch.h>
+
++#include <mach/apf28.h>
+#include <mach/hardware.h>
+#include <mach/device.h>
+#include <mach/pinctrl.h>
@@ -353,11 +355,8 @@ Index: linux-2.6.35.3/arch/arm/mach-mx28/apf28dev.c
+ .drive = 1,
+ .pull = 0,
+ },
-+};
-+
+#if defined(CONFIG_FEC2) || defined(CONFIG_FEC2_MODULE)\
+ || defined(CONFIG_FEC_L2SWITCH)
-+static struct pin_desc apf28dev_eth_pins[] = {
+ {
+ .name = "ENET1_RX_EN",
+ .id = PINID_ENET0_CRS,
@@ -419,30 +418,30 @@ Index: linux-2.6.35.3/arch/arm/mach-mx28/apf28dev.c
+ .drive = 1,
+ },
+ {
-+ .name = "PHY1_RESET",
-+ .id = PINID_LCD_HSYNC,
++ .name = "ETH1_INT",
++ .id = PINID_LCD_VSYNC,
+ .fun = PIN_GPIO,
+ .strength = PAD_4MA,
+ .voltage = PAD_3_3V,
+ .pullup = 0,
+ .drive = 1,
+ .pull = 0,
-+ .output = 1,
-+ .data = 1,
++ .output = 0,
+ },
+ {
-+ .name = "ETH1_INT",
-+ .id = PINID_LCD_VSYNC,
++ .name = "PHY1_RESET",
++ .id = PINID_LCD_HSYNC,
+ .fun = PIN_GPIO,
+ .strength = PAD_4MA,
+ .voltage = PAD_3_3V,
+ .pullup = 0,
+ .drive = 1,
+ .pull = 0,
-+ .output = 0,
++ .output = 1,
++ .data = 1,
+ },
-+};
+#endif /* defined(CONFIG_FEC2) || defined(CONFIG_FEC2_MODULE).. */
++};
+
+#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
+static struct gpio_keys_button apf28dev_gpio_keys[] = {
@@ -504,87 +503,32 @@ Index: linux-2.6.35.3/arch/arm/mach-mx28/apf28dev.c
+
+#if defined(CONFIG_FEC2) || defined(CONFIG_FEC2_MODULE)\
+ || defined(CONFIG_FEC_L2SWITCH)
-+extern int apf28_enet0_gpio_init(void);
-+extern void apf28_enet0_io_lowerpower_enter(void);
-+extern void apf28_enet0_io_lowerpower_exit(void);
-+
-+int mx28evk_enet_gpio_init(void)
++int mx287_fec1_gpio_init(void)
+{
-+ /* reset phy */
-+ apf28_enet0_gpio_init();
-+
++ /* reset 2nd phy */
+ gpio_direction_output(MXS_PIN_TO_GPIO(PINID_LCD_HSYNC), 0);
-+
+ udelay(100);
+ gpio_direction_output(MXS_PIN_TO_GPIO(PINID_LCD_HSYNC), 1);
+
+ return 0;
+}
++#endif /* defined(CONFIG_FEC) || defined(CONFIG_FEC_MODULE) */
+
-+void mx28evk_enet_io_lowerpower_enter(void)
-+{
-+ int i;
-+
-+ apf28_enet0_io_lowerpower_enter();
-+
-+ for (i = 0; i < ARRAY_SIZE(apf28dev_eth_pins); i++) {
-+ mxs_release_pin(apf28dev_eth_pins[i].id,
-+ apf28dev_eth_pins[i].name);
-+ gpio_request(MXS_PIN_TO_GPIO(apf28dev_eth_pins[i].id),
-+ apf28dev_eth_pins[i].name);
-+ gpio_direction_output(
-+ MXS_PIN_TO_GPIO(apf28dev_eth_pins[i].id), 0);
-+ }
-+}
+
-+void mx28evk_enet_io_lowerpower_exit(void)
++void __init apf28_baseboard_pins_init(void)
+{
-+ int i;
-+
-+ apf28_enet0_io_lowerpower_exit();
-+
-+ for (i = 0; i < ARRAY_SIZE(apf28dev_eth_pins); i++) {
-+ gpio_free(MXS_PIN_TO_GPIO(apf28dev_eth_pins[i].id));
-+ if (apf28dev_eth_pins[i].fun != PIN_GPIO)
-+ mxs_request_pin(apf28dev_eth_pins[i].id,
-+ apf28dev_eth_pins[i].fun,
-+ apf28dev_eth_pins[i].name);
-+ else {
-+ gpio_request(MXS_PIN_TO_GPIO(apf28dev_eth_pins[i].id),
-+ apf28dev_eth_pins[i].name);
-+ if (apf28dev_eth_pins[i].output)
-+ gpio_direction_output(
-+ MXS_PIN_TO_GPIO(apf28dev_eth_pins[i].id),
-+ apf28dev_eth_pins[i].data);
-+ else
-+ gpio_direction_input(
-+ MXS_PIN_TO_GPIO(apf28dev_eth_pins[i].id));
-+ }
-+ }
++ printk("--- apf28_baseboard_init %d\n", MXS_PIN_TO_GPIO(PINID_PWM3));
++
++ apf28_init_pin_group(apf28dev_fixed_pins, ARRAY_SIZE(apf28dev_fixed_pins));
+}
-+#endif /* defined(CONFIG_FEC2) || defined(CONFIG_FEC2_MODULE).. */
+
-+static void __init apf28dev_device_init(void)
++void __init apf28_baseboard_devices_init(void)
+{
+ /* Add apf28dev special code */
+ platform_add_devices(apf28dev_platform_devices, ARRAY_SIZE(apf28dev_platform_devices));
+}
+
-+extern void __init apf28_init_pin_group(struct pin_desc *pins, unsigned count);
+
-+void __init apf28_baseboard_init(void)
-+{
-+ printk("--- apf28_baseboard_init %d\n", MXS_PIN_TO_GPIO(PINID_PWM3));
-+
-+ apf28_init_pin_group(apf28dev_fixed_pins, ARRAY_SIZE(apf28dev_fixed_pins));
-+
-+#if defined(CONFIG_FEC2) || defined(CONFIG_FEC2_MODULE)\
-+ || defined(CONFIG_FEC_L2SWITCH)
-+ apf28_init_pin_group(apf28dev_eth_pins, ARRAY_SIZE(apf28dev_eth_pins));
-+#endif /* defined(CONFIG_FEC2) || defined(CONFIG_FEC2_MODULE).. */
-+
-+ apf28dev_device_init();
-+}
Index: linux-2.6.35.3/drivers/video/mxs/Kconfig
===================================================================
--- linux-2.6.35.3.orig/drivers/video/mxs/Kconfig 2012-02-15 14:42:20.000000000 +0100
hooks/post-receive
--
armadeus
|