armadeus-commitlog Mailing List for armadeus (Page 99)
Brought to you by:
sszy
You can subscribe to this list here.
| 2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2007 |
Jan
(43) |
Feb
(8) |
Mar
(7) |
Apr
(8) |
May
(14) |
Jun
(6) |
Jul
(4) |
Aug
(17) |
Sep
(18) |
Oct
(19) |
Nov
(52) |
Dec
(30) |
| 2008 |
Jan
(6) |
Feb
(6) |
Mar
(15) |
Apr
(22) |
May
(13) |
Jun
(11) |
Jul
(41) |
Aug
(10) |
Sep
(14) |
Oct
(21) |
Nov
(4) |
Dec
(66) |
| 2009 |
Jan
(67) |
Feb
(57) |
Mar
(90) |
Apr
(54) |
May
(64) |
Jun
(76) |
Jul
(14) |
Aug
(18) |
Sep
(18) |
Oct
(20) |
Nov
(15) |
Dec
(36) |
| 2010 |
Jan
(28) |
Feb
(25) |
Mar
(32) |
Apr
(23) |
May
(22) |
Jun
(62) |
Jul
(36) |
Aug
(16) |
Sep
(12) |
Oct
(20) |
Nov
(44) |
Dec
(25) |
| 2011 |
Jan
(36) |
Feb
(49) |
Mar
(28) |
Apr
(38) |
May
(26) |
Jun
(52) |
Jul
(33) |
Aug
(32) |
Sep
(19) |
Oct
(26) |
Nov
(13) |
Dec
(32) |
| 2012 |
Jan
(38) |
Feb
(34) |
Mar
(91) |
Apr
(35) |
May
(31) |
Jun
(72) |
Jul
(23) |
Aug
(13) |
Sep
(33) |
Oct
(47) |
Nov
(18) |
Dec
(22) |
| 2013 |
Jan
(31) |
Feb
(22) |
Mar
(26) |
Apr
(11) |
May
(38) |
Jun
(15) |
Jul
(37) |
Aug
(68) |
Sep
(34) |
Oct
(11) |
Nov
(26) |
Dec
(31) |
| 2014 |
Jan
(60) |
Feb
(55) |
Mar
(21) |
Apr
(31) |
May
(17) |
Jun
(35) |
Jul
(24) |
Aug
(17) |
Sep
(11) |
Oct
(23) |
Nov
(10) |
Dec
(23) |
| 2015 |
Jan
(15) |
Feb
(34) |
Mar
(46) |
Apr
(23) |
May
(12) |
Jun
(14) |
Jul
(18) |
Aug
(22) |
Sep
(6) |
Oct
(2) |
Nov
(1) |
Dec
(6) |
| 2016 |
Jan
(5) |
Feb
(7) |
Mar
(10) |
Apr
(10) |
May
(17) |
Jun
(6) |
Jul
(4) |
Aug
(6) |
Sep
(22) |
Oct
(8) |
Nov
(9) |
Dec
(5) |
| 2017 |
Jan
(11) |
Feb
(12) |
Mar
(27) |
Apr
(9) |
May
(1) |
Jun
(5) |
Jul
(11) |
Aug
(10) |
Sep
(6) |
Oct
(10) |
Nov
(4) |
Dec
(6) |
| 2018 |
Jan
(6) |
Feb
(13) |
Mar
(9) |
Apr
(7) |
May
(10) |
Jun
(9) |
Jul
(21) |
Aug
(13) |
Sep
(10) |
Oct
(4) |
Nov
(6) |
Dec
(1) |
| 2019 |
Jan
(6) |
Feb
(2) |
Mar
(5) |
Apr
(6) |
May
(19) |
Jun
(14) |
Jul
(18) |
Aug
(3) |
Sep
(5) |
Oct
(7) |
Nov
(8) |
Dec
(4) |
| 2020 |
Jan
(10) |
Feb
(3) |
Mar
(9) |
Apr
(7) |
May
(2) |
Jun
(18) |
Jul
(3) |
Aug
|
Sep
|
Oct
(7) |
Nov
|
Dec
(1) |
| 2021 |
Jan
(9) |
Feb
(6) |
Mar
(4) |
Apr
(11) |
May
(7) |
Jun
(5) |
Jul
(2) |
Aug
(4) |
Sep
(10) |
Oct
(9) |
Nov
(5) |
Dec
|
| 2022 |
Jan
(2) |
Feb
(12) |
Mar
(3) |
Apr
(5) |
May
(1) |
Jun
(3) |
Jul
(2) |
Aug
(1) |
Sep
(4) |
Oct
(4) |
Nov
(1) |
Dec
(3) |
| 2023 |
Jan
(5) |
Feb
(3) |
Mar
(3) |
Apr
(2) |
May
(1) |
Jun
(3) |
Jul
(3) |
Aug
(2) |
Sep
(1) |
Oct
(1) |
Nov
|
Dec
(4) |
| 2024 |
Jan
(2) |
Feb
(3) |
Mar
(8) |
Apr
(4) |
May
(1) |
Jun
(13) |
Jul
(7) |
Aug
(1) |
Sep
(6) |
Oct
(5) |
Nov
(11) |
Dec
(7) |
| 2025 |
Jan
(3) |
Feb
(1) |
Mar
(6) |
Apr
(4) |
May
(4) |
Jun
(1) |
Jul
(1) |
Aug
(7) |
Sep
(4) |
Oct
(4) |
Nov
(4) |
Dec
(1) |
| 2026 |
Jan
(3) |
Feb
(7) |
Mar
(3) |
Apr
(1) |
May
(6) |
Jun
(3) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: jorasse <jo...@us...> - 2011-01-20 22:09:43
|
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 c9da409ef59cc997d6468933139c664b4e2eac0d (commit)
via 5ddfb54708fe9f51c20711babf91a0f6746381a9 (commit)
via 59d5781a213e45bb4b00f5046fa671da0213dd13 (commit)
from d42b5801ca3ce61773c3cec3bad1292c7b9bfa17 (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 c9da409ef59cc997d6468933139c664b4e2eac0d
Merge: 5ddfb54708fe9f51c20711babf91a0f6746381a9 d42b5801ca3ce61773c3cec3bad1292c7b9bfa17
Author: Eric Jarrige <eri...@ar...>
Date: Thu Jan 20 23:16:00 2011 +0100
Merge branch 'master' of ssh://jorasse@armadeus.git.sourceforge.net/gitroot/armadeus/armadeus
commit 5ddfb54708fe9f51c20711babf91a0f6746381a9
Author: Eric Jarrige <eri...@ar...>
Date: Thu Jan 20 05:56:05 2011 +0100
[UBOOT] preload ethernet address to support linux current fec driver
commit 59d5781a213e45bb4b00f5046fa671da0213dd13
Author: Eric Jarrige <eri...@ar...>
Date: Thu Jan 20 05:53:44 2011 +0100
[UBOOT] Use eth0 as default ethernet interface
-----------------------------------------------------------------------
Summary of changes:
.../device/armadeus/apf51/apf51-u-boot-2010.03.h | 6 +++---
.../target/u-boot/u-boot-2010.03-410-imx-iim.patch | 9 +++++++++
2 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/buildroot/target/device/armadeus/apf51/apf51-u-boot-2010.03.h b/buildroot/target/device/armadeus/apf51/apf51-u-boot-2010.03.h
index 917a45f..c69d0fb 100644
--- a/buildroot/target/device/armadeus/apf51/apf51-u-boot-2010.03.h
+++ b/buildroot/target/device/armadeus/apf51/apf51-u-boot-2010.03.h
@@ -26,8 +26,8 @@
#define __CONFIG_H
#define CONFIG_VERSION_VARIABLE
-#define CONFIG_ENV_VERSION "0.2"
-#define CONFIG_IDENT_STRING " apf51 patch 0.1"
+#define CONFIG_ENV_VERSION "0.3"
+#define CONFIG_IDENT_STRING " apf51 patch 0.2"
/* High Level Configuration Options */
#define CONFIG_ARMV7 1 /* This is armv7 Cortex-A8 CPU */
@@ -164,7 +164,7 @@
"addmmcargs=setenv bootargs ${bootargs} " \
"root=${mmcroot} rootfstype=${mmcrootfstype}\0" \
"addipargs=setenv bootargs ${bootargs} " \
- "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off \0"\
+ "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}:eth0:off \0"\
"nfsboot=setenv bootargs ${console} ${mtdparts};" \
"run addnfsargs addipargs; setenv autostart yes;" \
"nboot.jffs2 90800000 0 ${kernel_offset}\0" \
diff --git a/buildroot/target/u-boot/u-boot-2010.03-410-imx-iim.patch b/buildroot/target/u-boot/u-boot-2010.03-410-imx-iim.patch
index 15f1c87..6fbec8f 100644
--- a/buildroot/target/u-boot/u-boot-2010.03-410-imx-iim.patch
+++ b/buildroot/target/u-boot/u-boot-2010.03-410-imx-iim.patch
@@ -495,6 +495,15 @@ Index: u-boot-2010.03/drivers/net/fec_mxc.c
#else
struct iim_regs *iim = (struct iim_regs *)IMX_IIM_BASE;
int i;
+@@ -777,6 +777,8 @@ static int fec_probe(bd_t *bd)
+ memcpy(edev->enetaddr, ethaddr, 6);
+ }
+
++ fec_set_hwaddr(edev);
++
+ return 0;
+ }
+
Index: u-boot-2010.03/include/asm-arm/arch-mx51/imx_iim.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
hooks/post-receive
--
armadeus
|
|
From: Julien B a. A. <ar...@us...> - 2011-01-20 19:42:11
|
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 d42b5801ca3ce61773c3cec3bad1292c7b9bfa17 (commit)
from 64726330eb8457081a04495cb12476bd59b60b57 (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 d42b5801ca3ce61773c3cec3bad1292c7b9bfa17
Author: Julien Boibessot <jul...@ar...>
Date: Thu Jan 20 20:39:53 2011 +0100
[LINUX] [2.6.38] Updates wm831x driver to state of the art
-----------------------------------------------------------------------
Summary of changes:
...-Add-driver-for-Wolfson-WM831x-PMIC-touch.patch | 145 +++++++++++++++-----
...n-Input-wm831x-Handles_pen_down_interrupt.patch | 115 ----------------
...data_interrupt_when_using_external_signal.patch | 118 ----------------
...cknowledgement-of-WM831x-touchscreen-IRQs.patch | 31 ++++
...ng_external_signal_for_pen_down_interrupt.patch | 115 ----------------
...rt_when_pen_down_is_detected_isnt_working.patch | 43 ------
...deus-input-wm831x-makes_touch_driver_work.patch | 84 +++++++++++
.../417-armadeus-input-wm831x-driver_hacks.patch | 26 +---
8 files changed, 228 insertions(+), 449 deletions(-)
delete mode 100644 buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/413-wolfson-Input-wm831x-Handles_pen_down_interrupt.patch
delete mode 100644 buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/414-wolfson-Input-wm831x-Ack_data_interrupt_when_using_external_signal.patch
create mode 100644 buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/414-wolfson-mfd-Leave-acknowledgement-of-WM831x-touchscreen-IRQs.patch
delete mode 100644 buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/415-armadeus-Input-wm831x-Allows_using_external_signal_for_pen_down_interrupt.patch
delete mode 100644 buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/416-armadeus-Input-wm831x-Data_acquisition_start_when_pen_down_is_detected_isnt_working.patch
create mode 100644 buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/416-armadeus-input-wm831x-makes_touch_driver_work.patch
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/412-wolfson-Input-wm831x-Add-driver-for-Wolfson-WM831x-PMIC-touch.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/412-wolfson-Input-wm831x-Add-driver-for-Wolfson-WM831x-PMIC-touch.patch
index 8f28319..eec40f2 100644
--- a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/412-wolfson-Input-wm831x-Add-driver-for-Wolfson-WM831x-PMIC-touch.patch
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/412-wolfson-Input-wm831x-Add-driver-for-Wolfson-WM831x-PMIC-touch.patch
@@ -1,6 +1,6 @@
->From 57539f6fc8ebd6c11373b750450d3f0526c8522f Mon Sep 17 00:00:00 2001
+>From a449c9de202f2a970a1e1e856da19fb9531f7ded Mon Sep 17 00:00:00 2001
From: Mark Brown <br...@op...>
-Date: Fri, 10 Dec 2010 21:39:33 +0000
+Date: Fri, 14 Jan 2011 15:07:22 +0000
Subject: [PATCH] Input: wm831x - Add driver for Wolfson WM831x PMIC touchscreen controllers
Some of the WM831x series of PMICs from Wolfson Microelectronics include
@@ -9,8 +9,7 @@ within the input API.
Platform data is supported to allow configuration of system parameters such
as selection between four and five wire touchscreens and for specification
-of an optional direct to CPU IRQ to be used to report the availability of
-samples.
+of optional direct to CPU IRQs for sample availability and for pen down.
THIS DRIVER HAS NOT BEEN TESTED. NO GUARANTEES ARE MADE REGARDING THE
PERFORMANCE OR STABILITY OF THE DRIVER, IT IS EXPECTED THAT SOME DEBUGGING
@@ -20,12 +19,13 @@ Signed-off-by: Mark Brown <br...@op...>
---
drivers/input/touchscreen/Kconfig | 10 +
drivers/input/touchscreen/Makefile | 1 +
- drivers/input/touchscreen/wm831x-ts.c | 340 +++++++++++++++++++++++++++++++++
- 3 files changed, 351 insertions(+), 0 deletions(-)
+ drivers/input/touchscreen/wm831x-ts.c | 399 +++++++++++++++++++++++++++++++++
+ include/linux/mfd/wm831x/pdata.h | 1 +
+ 4 files changed, 411 insertions(+), 0 deletions(-)
create mode 100644 drivers/input/touchscreen/wm831x-ts.c
diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
-index 6675bd7..b3b7596 100644
+index 0c9f4b1..f29dab7 100644
--- a/drivers/input/touchscreen/Kconfig
+++ b/drivers/input/touchscreen/Kconfig
@@ -423,6 +423,16 @@ config TOUCHSCREEN_UCB1400
@@ -46,10 +46,10 @@ index 6675bd7..b3b7596 100644
tristate "Support for WM97xx AC97 touchscreen controllers"
depends on AC97_BUS
diff --git a/drivers/input/touchscreen/Makefile b/drivers/input/touchscreen/Makefile
-index 7cc1b4f..1a00395 100644
+index 718bcc8..e8dcfab 100644
--- a/drivers/input/touchscreen/Makefile
+++ b/drivers/input/touchscreen/Makefile
-@@ -47,6 +47,7 @@ obj-$(CONFIG_TOUCHSCREEN_TOUCHWIN) += touchwin.o
+@@ -48,6 +48,7 @@ obj-$(CONFIG_TOUCHSCREEN_TOUCHWIN) += touchwin.o
obj-$(CONFIG_TOUCHSCREEN_TSC2007) += tsc2007.o
obj-$(CONFIG_TOUCHSCREEN_UCB1400) += ucb1400_ts.o
obj-$(CONFIG_TOUCHSCREEN_WACOM_W8001) += wacom_w8001.o
@@ -59,10 +59,10 @@ index 7cc1b4f..1a00395 100644
wm97xx-ts-$(CONFIG_TOUCHSCREEN_WM9712) += wm9712.o
diff --git a/drivers/input/touchscreen/wm831x-ts.c b/drivers/input/touchscreen/wm831x-ts.c
new file mode 100644
-index 0000000..51d1863
+index 0000000..a424a80
--- /dev/null
+++ b/drivers/input/touchscreen/wm831x-ts.c
-@@ -0,0 +1,340 @@
+@@ -0,0 +1,399 @@
+/*
+ * wm831x-ts.c - Touchscreen driver for WM831x PMICs
+ *
@@ -85,6 +85,7 @@ index 0000000..51d1863
+#include <linux/interrupt.h>
+#include <linux/io.h>
+#include <linux/mfd/wm831x/core.h>
++#include <linux/mfd/wm831x/irq.h>
+#include <linux/mfd/wm831x/pdata.h>
+#include <linux/platform_device.h>
+#include <linux/slab.h>
@@ -162,6 +163,8 @@ index 0000000..51d1863
+ struct input_dev *input_dev;
+ struct wm831x *wm831x;
+ int data_irq;
++ int pd_irq;
++ int rate;
+ bool pressure;
+};
+
@@ -174,6 +177,9 @@ index 0000000..51d1863
+ bool pen_down = true;
+ int count, i, ret;
+
++ wm831x_set_bits(wm831x, WM831X_INTERRUPT_STATUS_1,
++ WM831X_TCHDATA_EINT, WM831X_TCHDATA_EINT);
++
+ if (wm831x_ts->pressure)
+ count = 3;
+ else
@@ -191,16 +197,28 @@ index 0000000..51d1863
+ * individual reading does so.
+ */
+ for (i = 0; i < count; i++) {
++ if (!(data[i] & WM831X_TCH_PD)) {
++ pen_down = false;
++ continue;
++ }
+ input_report_abs(wm831x_ts->input_dev, data_types[i],
+ data[i] & WM831X_TCH_DATA_MASK);
-+ if (!data[i] & WM831X_TCH_PD)
-+ pen_down = false;
+ }
+
-+ if (pen_down) {
-+ input_report_key(wm831x_ts->input_dev, BTN_TOUCH, 1);
-+ } else {
-+ input_report_abs(wm831x_ts->input_dev, ABS_PRESSURE, 0);
++ if (!pen_down) {
++ /* Don't need data any more */
++ wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
++ WM831X_TCH_X_ENA | WM831X_TCH_Y_ENA |
++ WM831X_TCH_Z_ENA, 0);
++
++ /* Drop the conversion rate while pen is up */
++ wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
++ WM831X_TCH_RATE_MASK, 0);
++
++ if (wm831x_ts->pressure)
++ input_report_abs(wm831x_ts->input_dev,
++ ABS_PRESSURE, 0);
++
+ input_report_key(wm831x_ts->input_dev, BTN_TOUCH, 0);
+ }
+
@@ -209,22 +227,45 @@ index 0000000..51d1863
+ return IRQ_HANDLED;
+}
+
-+static int wm831x_ts_input_open(struct input_dev *idev)
++static irqreturn_t wm831x_ts_pen_down_irq(int irq, void *irq_data)
+{
-+ struct wm831x_ts *wm831x_ts = input_get_drvdata(idev);
++ struct wm831x_ts *wm831x_ts = irq_data;
+ struct wm831x *wm831x = wm831x_ts->wm831x;
-+ u16 ena = 0;
++ int ena;
+
++ /* Raise conversion rate to normal rate */
++ wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
++ WM831X_TCH_RATE_MASK, wm831x_ts->rate);
++
++ /* Start collecting data */
+ if (wm831x_ts->pressure)
+ ena |= WM831X_TCH_Z_ENA;
++ else
++ ena = 0;
+
+ wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
-+ WM831X_TCH_ENA | WM831X_TCH_CVT_ENA |
-+ WM831X_TCH_X_ENA | WM831X_TCH_Y_ENA |
-+ WM831X_TCH_Z_ENA,
-+ WM831X_TCH_ENA | WM831X_TCH_CVT_ENA |
-+ WM831X_TCH_X_ENA | WM831X_TCH_Y_ENA |
-+ ena);
++ WM831X_TCH_X_ENA | WM831X_TCH_Y_ENA | WM831X_TCH_Z_ENA,
++ WM831X_TCH_X_ENA | WM831X_TCH_Y_ENA | ena);
++
++ input_report_key(wm831x_ts->input_dev, BTN_TOUCH, 1);
++ input_sync(wm831x_ts->input_dev);
++
++ wm831x_set_bits(wm831x, WM831X_INTERRUPT_STATUS_1,
++ WM831X_TCHPD_EINT, WM831X_TCHPD_EINT);
++
++ return IRQ_HANDLED;
++}
++
++static int wm831x_ts_input_open(struct input_dev *idev)
++{
++ struct wm831x_ts *wm831x_ts = input_get_drvdata(idev);
++ struct wm831x *wm831x = wm831x_ts->wm831x;
++
++ wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
++ WM831X_TCH_ENA, WM831X_TCH_ENA);
++
++ wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
++ WM831X_TCH_CVT_ENA, WM831X_TCH_CVT_ENA);
+
+ return 0;
+}
@@ -240,7 +281,7 @@ index 0000000..51d1863
+ WM831X_TCH_Z_ENA, 0);
+}
+
-+static int wm831x_ts_probe(struct platform_device *pdev)
++static __devinit int wm831x_ts_probe(struct platform_device *pdev)
+{
+ struct wm831x_ts *wm831x_ts;
+ struct wm831x *wm831x = dev_get_drvdata(pdev->dev.parent);
@@ -263,12 +304,18 @@ index 0000000..51d1863
+ /* If we have a direct CPU data IRQ use it, otherwise use
+ * the interrupt through the WM831x IRQ controller.
+ */
-+ if (pdata)
++ if (pdata && pdata->data_irq)
+ wm831x_ts->data_irq = pdata->data_irq;
+ else
+ wm831x_ts->data_irq = platform_get_irq_byname(pdev,
+ "TCHDATA");
+
++ if (pdata && pdata->pd_irq)
++ wm831x_ts->pd_irq = pdata->pd_irq;
++ else
++ wm831x_ts->data_irq = platform_get_irq_byname(pdev,
++ "TCHPD");
++
+ if (pdata && pdata->pressure)
+ wm831x_ts->pressure = true;
+ else
@@ -305,30 +352,39 @@ index 0000000..51d1863
+ }
+ }
+
-+ /* Convert only when pen down */
+ wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_2,
-+ WM831X_TCH_PDONLY, WM831X_TCH_PDONLY);
++ WM831X_TCH_PDONLY, 0);
+
+ /* Default to 192 samples/sec */
-+ wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
-+ WM831X_TCH_RATE_MASK, 12);
++ wm831x_ts->rate = 12;
+
+ ret = request_threaded_irq(wm831x_ts->data_irq, NULL,
+ wm831x_ts_data_irq,
+ IRQF_ONESHOT, /* Trigger */
+ "Touchscreen data", wm831x_ts);
+ if (ret < 0) {
-+ dev_err(&pdev->dev, "Failed to request IRQ %d: %d\n",
++ dev_err(&pdev->dev, "Failed to request data IRQ %d: %d\n",
+ wm831x_ts->data_irq, ret);
+ goto err_alloc;
+ }
+
++ ret = request_threaded_irq(wm831x_ts->pd_irq, NULL,
++ wm831x_ts_pen_down_irq,
++ IRQF_ONESHOT, /* Trigger */
++ "Touchscreen pen down", wm831x_ts);
++
++ if (ret < 0) {
++ dev_err(&pdev->dev, "Failed to request pen down IRQ %d: %d\n",
++ wm831x_ts->pd_irq, ret);
++ goto err_data_irq;
++ }
++
+ platform_set_drvdata(pdev, wm831x_ts);
+
+ input_dev = input_allocate_device();
+ if (input_dev == NULL) {
+ ret = -ENOMEM;
-+ goto err_irq;
++ goto err_pd_irq;
+ }
+ wm831x_ts->input_dev = input_dev;
+
@@ -358,7 +414,9 @@ index 0000000..51d1863
+
+err_dev_alloc:
+ input_free_device(input_dev);
-+err_irq:
++err_pd_irq:
++ free_irq(wm831x_ts->pd_irq, wm831x_ts);
++err_data_irq:
+ free_irq(wm831x_ts->data_irq, wm831x_ts);
+err_alloc:
+ kfree(wm831x_ts);
@@ -366,10 +424,11 @@ index 0000000..51d1863
+ return ret;
+}
+
-+static int wm831x_ts_remove(struct platform_device *pdev)
++static __devexit int wm831x_ts_remove(struct platform_device *pdev)
+{
+ struct wm831x_ts *wm831x_ts = platform_get_drvdata(pdev);
+
++ free_irq(wm831x_ts->pd_irq, wm831x_ts);
+ free_irq(wm831x_ts->data_irq, wm831x_ts);
+ input_unregister_device(wm831x_ts->input_dev);
+ kfree(wm831x_ts);
@@ -403,6 +462,18 @@ index 0000000..51d1863
+MODULE_DESCRIPTION("WM831x PMIC touchscreen driver");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:wm831x-touch");
+diff --git a/include/linux/mfd/wm831x/pdata.h b/include/linux/mfd/wm831x/pdata.h
+index 1ae8499..c6746e8 100644
+--- a/include/linux/mfd/wm831x/pdata.h
++++ b/include/linux/mfd/wm831x/pdata.h
+@@ -81,6 +81,7 @@ struct wm831x_touch_pdata {
+ int rpu; /** Pen down sensitivity resistor divider */
+ int pressure; /** Report pressure (boolean) */
+ int data_irq; /** Touch data ready IRQ */
++ int pd_irq; /** Touch pendown detect IRQ */
+ };
+
+ enum wm831x_watchdog_action {
--
-1.7.1
+1.7.2.3
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/413-wolfson-Input-wm831x-Handles_pen_down_interrupt.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/413-wolfson-Input-wm831x-Handles_pen_down_interrupt.patch
deleted file mode 100644
index 6bf7f26..0000000
--- a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/413-wolfson-Input-wm831x-Handles_pen_down_interrupt.patch
+++ /dev/null
@@ -1,115 +0,0 @@
-Handles Pen_Down interrupt.
-
-Signed-off-by: Mark Brown <br...@op...>
-
-diff --git a/drivers/input/touchscreen/wm831x-ts.c b/drivers/input/touchscreen/wm831x-ts.c
-index 51d1863..3617748 100644
---- a/drivers/input/touchscreen/wm831x-ts.c
-+++ b/drivers/input/touchscreen/wm831x-ts.c
-@@ -126,16 +126,21 @@ static irqreturn_t wm831x_ts_data_irq(int irq, void *irq_data)
- * individual reading does so.
- */
- for (i = 0; i < count; i++) {
-+ if (!(data[i] & WM831X_TCH_PD)) {
-+ pen_down = false;
-+ continue;
-+ }
- input_report_abs(wm831x_ts->input_dev, data_types[i],
- data[i] & WM831X_TCH_DATA_MASK);
-- if (!data[i] & WM831X_TCH_PD)
-- pen_down = false;
- }
-
-- if (pen_down) {
-- input_report_key(wm831x_ts->input_dev, BTN_TOUCH, 1);
-- } else {
-- input_report_abs(wm831x_ts->input_dev, ABS_PRESSURE, 0);
-+ if (!pen_down) {
-+ wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
-+ WM831X_TCH_CVT_ENA, 0);
-+
-+ if (wm831x_ts->pressure)
-+ input_report_abs(wm831x_ts->input_dev,
-+ ABS_PRESSURE, 0);
- input_report_key(wm831x_ts->input_dev, BTN_TOUCH, 0);
- }
-
-@@ -144,6 +149,20 @@ static irqreturn_t wm831x_ts_data_irq(int irq, void *irq_data)
- return IRQ_HANDLED;
- }
-
-+static irqreturn_t wm831x_ts_pen_down_irq(int irq, void *irq_data)
-+{
-+ struct wm831x_ts *wm831x_ts = irq_data;
-+ struct wm831x *wm831x = wm831x_ts->wm831x;
-+
-+ wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
-+ WM831X_TCH_CVT_ENA, WM831X_TCH_CVT_ENA);
-+
-+ input_report_key(wm831x_ts->input_dev, BTN_TOUCH, 1);
-+ input_sync(wm831x_ts->input_dev);
-+
-+ return IRQ_HANDLED;
-+}
-+
- static int wm831x_ts_input_open(struct input_dev *idev)
- {
- struct wm831x_ts *wm831x_ts = input_get_drvdata(idev);
-@@ -154,11 +173,9 @@ static int wm831x_ts_input_open(struct input_dev *idev)
- ena |= WM831X_TCH_Z_ENA;
-
- wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
-- WM831X_TCH_ENA | WM831X_TCH_CVT_ENA |
-- WM831X_TCH_X_ENA | WM831X_TCH_Y_ENA |
-+ WM831X_TCH_ENA | WM831X_TCH_X_ENA | WM831X_TCH_Y_ENA |
- WM831X_TCH_Z_ENA,
-- WM831X_TCH_ENA | WM831X_TCH_CVT_ENA |
-- WM831X_TCH_X_ENA | WM831X_TCH_Y_ENA |
-+ WM831X_TCH_ENA | WM831X_TCH_X_ENA | WM831X_TCH_Y_ENA |
- ena);
-
- return 0;
-@@ -258,12 +275,23 @@ static int wm831x_ts_probe(struct platform_device *pdev)
- goto err_alloc;
- }
-
-+ ret = request_threaded_irq(platform_get_irq_byname(pdev,
-+ "TCHPD"),
-+ NULL, wm831x_ts_pen_down_irq,
-+ IRQF_ONESHOT, /* Trigger */
-+ "Touchscreen pen down", wm831x_ts);
-+ if (ret < 0) {
-+ dev_err(&pdev->dev, "Failed to request pen down IRQ: %d\n",
-+ ret);
-+ goto err_data_irq;
-+ }
-+
- platform_set_drvdata(pdev, wm831x_ts);
-
- input_dev = input_allocate_device();
- if (input_dev == NULL) {
- ret = -ENOMEM;
-- goto err_irq;
-+ goto err_pd_irq;
- }
- wm831x_ts->input_dev = input_dev;
-
-@@ -293,7 +321,9 @@ static int wm831x_ts_probe(struct platform_device *pdev)
-
- err_dev_alloc:
- input_free_device(input_dev);
--err_irq:
-+err_pd_irq:
-+ free_irq(platform_get_irq_byname(pdev, "TCHPD"), wm831x_ts);
-+err_data_irq:
- free_irq(wm831x_ts->data_irq, wm831x_ts);
- err_alloc:
- kfree(wm831x_ts);
-@@ -305,6 +335,7 @@ static int wm831x_ts_remove(struct platform_device *pdev)
- {
- struct wm831x_ts *wm831x_ts = platform_get_drvdata(pdev);
-
-+ free_irq(platform_get_irq_byname(pdev, "TCHPD"), wm831x_ts);
- free_irq(wm831x_ts->data_irq, wm831x_ts);
- input_unregister_device(wm831x_ts->input_dev);
- kfree(wm831x_ts);
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/414-wolfson-Input-wm831x-Ack_data_interrupt_when_using_external_signal.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/414-wolfson-Input-wm831x-Ack_data_interrupt_when_using_external_signal.patch
deleted file mode 100644
index 3bed2a7..0000000
--- a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/414-wolfson-Input-wm831x-Ack_data_interrupt_when_using_external_signal.patch
+++ /dev/null
@@ -1,118 +0,0 @@
-If we're using a direct signal for the data IRQ we still need to ack the
-interrupt.
-
-Signed-off-by: Mark Brown <br...@op...>
-
-diff --git a/drivers/input/touchscreen/wm831x-ts.c b/drivers/input/touchscreen/wm831x-ts.c
-index 3617748..833979c 100644
---- a/drivers/input/touchscreen/wm831x-ts.c
-+++ b/drivers/input/touchscreen/wm831x-ts.c
-@@ -20,6 +20,7 @@
- #include <linux/interrupt.h>
- #include <linux/io.h>
- #include <linux/mfd/wm831x/core.h>
-+#include <linux/mfd/wm831x/irq.h>
- #include <linux/mfd/wm831x/pdata.h>
- #include <linux/platform_device.h>
- #include <linux/slab.h>
-@@ -146,6 +147,13 @@ static irqreturn_t wm831x_ts_data_irq(int irq, void *irq_data)
-
- input_sync(wm831x_ts->input_dev);
-
-+ /* If we're using a direct signal for the data IRQ we still need
-+ * to ack the interrupt.
-+ */
-+ if (wm831x_ts->data_irq)
-+ wm831x_set_bits(wm831x, WM831X_INTERRUPT_STATUS_1,
-+ WM831X_TCHDATA_EINT, WM831X_TCHDATA_EINT);
-+
- return IRQ_HANDLED;
- }
-
-@@ -169,14 +177,15 @@ static int wm831x_ts_input_open(struct input_dev *idev)
- struct wm831x *wm831x = wm831x_ts->wm831x;
- u16 ena = 0;
-
-+ wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
-+ WM831X_TCH_ENA, WM831X_TCH_ENA);
-+
- if (wm831x_ts->pressure)
- ena |= WM831X_TCH_Z_ENA;
-
- wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
-- WM831X_TCH_ENA | WM831X_TCH_X_ENA | WM831X_TCH_Y_ENA |
-- WM831X_TCH_Z_ENA,
-- WM831X_TCH_ENA | WM831X_TCH_X_ENA | WM831X_TCH_Y_ENA |
-- ena);
-+ WM831X_TCH_X_ENA | WM831X_TCH_Y_ENA | WM831X_TCH_Z_ENA,
-+ WM831X_TCH_X_ENA | WM831X_TCH_Y_ENA | ena);
-
- return 0;
- }
-@@ -217,9 +226,6 @@ static int wm831x_ts_probe(struct platform_device *pdev)
- */
- if (pdata)
- wm831x_ts->data_irq = pdata->data_irq;
-- else
-- wm831x_ts->data_irq = platform_get_irq_byname(pdev,
-- "TCHDATA");
-
- if (pdata && pdata->pressure)
- wm831x_ts->pressure = true;
-@@ -257,18 +263,24 @@ static int wm831x_ts_probe(struct platform_device *pdev)
- }
- }
-
-- /* Convert only when pen down */
- wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_2,
-- WM831X_TCH_PDONLY, WM831X_TCH_PDONLY);
-+ WM831X_TCH_PDONLY, 0);
-
-- /* Default to 192 samples/sec */
-+ /* Default to 112 samples/sec */
- wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
-- WM831X_TCH_RATE_MASK, 12);
-+ WM831X_TCH_RATE_MASK, 6);
-
-- ret = request_threaded_irq(wm831x_ts->data_irq, NULL,
-- wm831x_ts_data_irq,
-- IRQF_ONESHOT, /* Trigger */
-- "Touchscreen data", wm831x_ts);
-+ if (wm831x_ts->data_irq)
-+ ret = request_threaded_irq(wm831x_ts->data_irq, NULL,
-+ wm831x_ts_data_irq,
-+ IRQF_ONESHOT, /* Trigger */
-+ "Touchscreen data", wm831x_ts);
-+ else
-+ ret = request_threaded_irq(platform_get_irq_byname(pdev,
-+ "TCHDATA"),
-+ NULL, wm831x_ts_data_irq,
-+ IRQF_ONESHOT, /* Trigger */
-+ "Touchscreen data", wm831x_ts);
- if (ret < 0) {
- dev_err(&pdev->dev, "Failed to request IRQ %d: %d\n",
- wm831x_ts->data_irq, ret);
-@@ -324,7 +336,10 @@ err_dev_alloc:
- err_pd_irq:
- free_irq(platform_get_irq_byname(pdev, "TCHPD"), wm831x_ts);
- err_data_irq:
-- free_irq(wm831x_ts->data_irq, wm831x_ts);
-+ if (wm831x_ts->data_irq)
-+ free_irq(wm831x_ts->data_irq, wm831x_ts);
-+ else
-+ free_irq(platform_get_irq_byname(pdev, "TCHDATA"), wm831x_ts);
- err_alloc:
- kfree(wm831x_ts);
-
-@@ -336,7 +351,10 @@ static int wm831x_ts_remove(struct platform_device *pdev)
- struct wm831x_ts *wm831x_ts = platform_get_drvdata(pdev);
-
- free_irq(platform_get_irq_byname(pdev, "TCHPD"), wm831x_ts);
-- free_irq(wm831x_ts->data_irq, wm831x_ts);
-+ if (wm831x_ts->data_irq)
-+ free_irq(wm831x_ts->data_irq, wm831x_ts);
-+ else
-+ free_irq(platform_get_irq_byname(pdev, "TCHDATA"), wm831x_ts);
- input_unregister_device(wm831x_ts->input_dev);
- kfree(wm831x_ts);
-
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/414-wolfson-mfd-Leave-acknowledgement-of-WM831x-touchscreen-IRQs.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/414-wolfson-mfd-Leave-acknowledgement-of-WM831x-touchscreen-IRQs.patch
new file mode 100644
index 0000000..f1371cc
--- /dev/null
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/414-wolfson-mfd-Leave-acknowledgement-of-WM831x-touchscreen-IRQs.patch
@@ -0,0 +1,31 @@
+>From c0ddb6e52161faaa4d88967fe955fd9df5bac477 Mon Sep 17 00:00:00 2001
+From: Mark Brown <br...@op...>
+Date: Mon, 10 Jan 2011 18:15:56 +0000
+Subject: [PATCH 2/2] mfd: Leave acknowledgement of WM831x touchscreen IRQs to the driver
+
+The WM831x touchscreen interrupts need acknowledgement even when using
+direct signals to the CPU (which don't go through the core) so leave
+the acknowledgement up to the touchscreen driver for simplicity.
+
+Signed-off-by: Mark Brown <br...@op...>
+---
+ drivers/mfd/wm831x-irq.c | 3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/mfd/wm831x-irq.c b/drivers/mfd/wm831x-irq.c
+index 0d3cda4..2f26f80 100644
+--- a/drivers/mfd/wm831x-irq.c
++++ b/drivers/mfd/wm831x-irq.c
+@@ -481,6 +481,9 @@ static irqreturn_t wm831x_irq_thread(int irq, void *data)
+ }
+
+ out:
++ /* Touchscreen interrupts are handled specially in the driver */
++ status_regs[0] &= ~(WM831X_TCHDATA_EINT | WM831X_TCHPD_EINT);
++
+ for (i = 0; i < ARRAY_SIZE(status_regs); i++) {
+ if (status_regs[i])
+ wm831x_reg_write(wm831x, WM831X_INTERRUPT_STATUS_1 + i,
+--
+1.7.2.3
+
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/415-armadeus-Input-wm831x-Allows_using_external_signal_for_pen_down_interrupt.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/415-armadeus-Input-wm831x-Allows_using_external_signal_for_pen_down_interrupt.patch
deleted file mode 100644
index d543d27..0000000
--- a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/415-armadeus-Input-wm831x-Allows_using_external_signal_for_pen_down_interrupt.patch
+++ /dev/null
@@ -1,115 +0,0 @@
-Handles pen_down interrupt from a direct signal too.
-
-Signed-off-by: Julien Boibessot <jul...@ar...>
-
-Index: linux-2.6.38-alpha/drivers/input/touchscreen/wm831x-ts.c
-===================================================================
---- linux-2.6.38-alpha.orig/drivers/input/touchscreen/wm831x-ts.c 2011-01-03 18:02:37.000000000 +0100
-+++ linux-2.6.38-alpha/drivers/input/touchscreen/wm831x-ts.c 2011-01-03 20:49:49.000000000 +0100
-@@ -98,6 +98,7 @@
- struct input_dev *input_dev;
- struct wm831x *wm831x;
- int data_irq;
-+ int pd_irq;
- bool pressure;
- };
-
-@@ -168,6 +169,13 @@
- input_report_key(wm831x_ts->input_dev, BTN_TOUCH, 1);
- input_sync(wm831x_ts->input_dev);
-
-+ /* If we're using a direct signal for the pen_down IRQ we still need
-+ * to ack the interrupt.
-+ */
-+ if (wm831x_ts->pd_irq)
-+ wm831x_set_bits(wm831x, WM831X_INTERRUPT_STATUS_1,
-+ WM831X_TCHPD_EINT, WM831X_TCHPD_EINT);
-+
- return IRQ_HANDLED;
- }
-
-@@ -224,9 +232,12 @@
- /* If we have a direct CPU data IRQ use it, otherwise use
- * the interrupt through the WM831x IRQ controller.
- */
-- if (pdata)
-+ if (pdata && pdata->data_irq)
- wm831x_ts->data_irq = pdata->data_irq;
-
-+ if (pdata && pdata->pd_irq)
-+ wm831x_ts->pd_irq = pdata->pd_irq;
-+
- if (pdata && pdata->pressure)
- wm831x_ts->pressure = true;
- else
-@@ -282,19 +293,26 @@
- IRQF_ONESHOT, /* Trigger */
- "Touchscreen data", wm831x_ts);
- if (ret < 0) {
-- dev_err(&pdev->dev, "Failed to request IRQ %d: %d\n",
-+ dev_err(&pdev->dev, "Failed to request data IRQ %d: %d\n",
- wm831x_ts->data_irq, ret);
- goto err_alloc;
- }
-
-- ret = request_threaded_irq(platform_get_irq_byname(pdev,
-- "TCHPD"),
-- NULL, wm831x_ts_pen_down_irq,
-- IRQF_ONESHOT, /* Trigger */
-- "Touchscreen pen down", wm831x_ts);
-+ if (wm831x_ts->pd_irq)
-+ ret = request_threaded_irq(wm831x_ts->pd_irq, NULL,
-+ wm831x_ts_pen_down_irq,
-+ IRQF_ONESHOT, /* Trigger */
-+ "Touchscreen pen down", wm831x_ts);
-+ else
-+ ret = request_threaded_irq(platform_get_irq_byname(pdev,
-+ "TCHPD"),
-+ NULL, wm831x_ts_pen_down_irq,
-+ IRQF_ONESHOT, /* Trigger */
-+ "Touchscreen pen down", wm831x_ts);
-+
- if (ret < 0) {
-- dev_err(&pdev->dev, "Failed to request pen down IRQ: %d\n",
-- ret);
-+ dev_err(&pdev->dev, "Failed to request pen down IRQ: %d %d\n",
-+ wm831x_ts->pd_irq, ret);
- goto err_data_irq;
- }
-
-@@ -334,7 +352,10 @@
- err_dev_alloc:
- input_free_device(input_dev);
- err_pd_irq:
-- free_irq(platform_get_irq_byname(pdev, "TCHPD"), wm831x_ts);
-+ if (wm831x_ts->pd_irq)
-+ free_irq(wm831x_ts->pd_irq, wm831x_ts);
-+ else
-+ free_irq(platform_get_irq_byname(pdev, "TCHPD"), wm831x_ts);
- err_data_irq:
- if (wm831x_ts->data_irq)
- free_irq(wm831x_ts->data_irq, wm831x_ts);
-@@ -350,7 +371,10 @@
- {
- struct wm831x_ts *wm831x_ts = platform_get_drvdata(pdev);
-
-- free_irq(platform_get_irq_byname(pdev, "TCHPD"), wm831x_ts);
-+ if (wm831x_ts->pd_irq)
-+ free_irq(wm831x_ts->pd_irq, wm831x_ts);
-+ else
-+ free_irq(platform_get_irq_byname(pdev, "TCHPD"), wm831x_ts);
- if (wm831x_ts->data_irq)
- free_irq(wm831x_ts->data_irq, wm831x_ts);
- else
-Index: linux-2.6.38-alpha/include/linux/mfd/wm831x/pdata.h
-===================================================================
---- linux-2.6.38-alpha.orig/include/linux/mfd/wm831x/pdata.h 2010-12-14 09:55:53.000000000 +0100
-+++ linux-2.6.38-alpha/include/linux/mfd/wm831x/pdata.h 2011-01-03 20:49:02.000000000 +0100
-@@ -81,6 +81,7 @@
- int rpu; /** Pen down sensitivity resistor divider */
- int pressure; /** Report pressure (boolean) */
- int data_irq; /** Touch data ready IRQ */
-+ int pd_irq; /** Touch pendown detect IRQ */
- };
-
- enum wm831x_watchdog_action {
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/416-armadeus-Input-wm831x-Data_acquisition_start_when_pen_down_is_detected_isnt_working.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/416-armadeus-Input-wm831x-Data_acquisition_start_when_pen_down_is_detected_isnt_working.patch
deleted file mode 100644
index df98cf1..0000000
--- a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/416-armadeus-Input-wm831x-Data_acquisition_start_when_pen_down_is_detected_isnt_working.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-Feature is not working so don't use it (for the moment).
-
-Signed-off-by: Julien Boibessot <jul...@ar...>
-
-Index: linux-2.6.38-alpha/drivers/input/touchscreen/wm831x-ts.c
-===================================================================
---- linux-2.6.38-alpha.orig/drivers/input/touchscreen/wm831x-ts.c 2011-01-04 10:06:40.000000000 +0100
-+++ linux-2.6.38-alpha/drivers/input/touchscreen/wm831x-ts.c 2011-01-05 15:28:12.000000000 +0100
-@@ -137,9 +137,9 @@
- }
-
- if (!pen_down) {
-- wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
-+/* wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
- WM831X_TCH_CVT_ENA, 0);
--
-+*/
- if (wm831x_ts->pressure)
- input_report_abs(wm831x_ts->input_dev,
- ABS_PRESSURE, 0);
-@@ -163,9 +163,9 @@
- struct wm831x_ts *wm831x_ts = irq_data;
- struct wm831x *wm831x = wm831x_ts->wm831x;
-
-- wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
-+/* wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
- WM831X_TCH_CVT_ENA, WM831X_TCH_CVT_ENA);
--
-+*/
- input_report_key(wm831x_ts->input_dev, BTN_TOUCH, 1);
- input_sync(wm831x_ts->input_dev);
-
-@@ -192,8 +192,8 @@
- ena |= WM831X_TCH_Z_ENA;
-
- wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
-- WM831X_TCH_X_ENA | WM831X_TCH_Y_ENA | WM831X_TCH_Z_ENA,
-- WM831X_TCH_X_ENA | WM831X_TCH_Y_ENA | ena);
-+ WM831X_TCH_CVT_ENA | WM831X_TCH_X_ENA | WM831X_TCH_Y_ENA | WM831X_TCH_Z_ENA,
-+ WM831X_TCH_CVT_ENA | WM831X_TCH_X_ENA | WM831X_TCH_Y_ENA | ena);
-
- return 0;
- }
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/416-armadeus-input-wm831x-makes_touch_driver_work.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/416-armadeus-input-wm831x-makes_touch_driver_work.patch
new file mode 100644
index 0000000..f1ae70a
--- /dev/null
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/416-armadeus-input-wm831x-makes_touch_driver_work.patch
@@ -0,0 +1,84 @@
+Index: linux-2.6.38-alpha/drivers/input/touchscreen/wm831x-ts.c
+===================================================================
+--- linux-2.6.38-alpha.orig/drivers/input/touchscreen/wm831x-ts.c 2011-01-20 20:29:00.000000000 +0100
++++ linux-2.6.38-alpha/drivers/input/touchscreen/wm831x-ts.c 2011-01-20 20:29:10.000000000 +0100
+@@ -101,6 +101,7 @@
+ int pd_irq;
+ int rate;
+ bool pressure;
++ int pd_detected;
+ };
+
+ static irqreturn_t wm831x_ts_data_irq(int irq, void *irq_data)
+@@ -140,7 +141,7 @@
+ data[i] & WM831X_TCH_DATA_MASK);
+ }
+
+- if (!pen_down) {
++ if ((!pen_down) && (wm831x_ts->pd_detected)) {
+ /* Don't need data any more */
+ wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
+ WM831X_TCH_X_ENA | WM831X_TCH_Y_ENA |
+@@ -148,13 +149,14 @@
+
+ /* Drop the conversion rate while pen is up */
+ wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
+- WM831X_TCH_RATE_MASK, 0);
++ WM831X_TCH_RATE_MASK, 1);
+
+ if (wm831x_ts->pressure)
+ input_report_abs(wm831x_ts->input_dev,
+ ABS_PRESSURE, 0);
+
+ input_report_key(wm831x_ts->input_dev, BTN_TOUCH, 0);
++ wm831x_ts->pd_detected = 0;
+ }
+
+ input_sync(wm831x_ts->input_dev);
+@@ -166,7 +168,7 @@
+ {
+ struct wm831x_ts *wm831x_ts = irq_data;
+ struct wm831x *wm831x = wm831x_ts->wm831x;
+- int ena;
++ int ena = 0;
+
+ /* Raise conversion rate to normal rate */
+ wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
+@@ -175,8 +177,6 @@
+ /* Start collecting data */
+ if (wm831x_ts->pressure)
+ ena |= WM831X_TCH_Z_ENA;
+- else
+- ena = 0;
+
+ wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
+ WM831X_TCH_X_ENA | WM831X_TCH_Y_ENA | WM831X_TCH_Z_ENA,
+@@ -185,6 +185,7 @@
+ input_report_key(wm831x_ts->input_dev, BTN_TOUCH, 1);
+ input_sync(wm831x_ts->input_dev);
+
++ wm831x_ts->pd_detected = 1;
+ wm831x_set_bits(wm831x, WM831X_INTERRUPT_STATUS_1,
+ WM831X_TCHPD_EINT, WM831X_TCHPD_EINT);
+
+@@ -248,7 +249,7 @@
+ if (pdata && pdata->pd_irq)
+ wm831x_ts->pd_irq = pdata->pd_irq;
+ else
+- wm831x_ts->data_irq = platform_get_irq_byname(pdev,
++ wm831x_ts->pd_irq = platform_get_irq_byname(pdev,
+ "TCHPD");
+
+ if (pdata && pdata->pressure)
+@@ -290,8 +291,10 @@
+ wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_2,
+ WM831X_TCH_PDONLY, 0);
+
+- /* Default to 192 samples/sec */
++ /* Default to 192 samples/sec when active and 16/sec when inactive */
+ wm831x_ts->rate = 12;
++ wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
++ WM831X_TCH_RATE_MASK, 1);
+
+ ret = request_threaded_irq(wm831x_ts->data_irq, NULL,
+ wm831x_ts_data_irq,
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/417-armadeus-input-wm831x-driver_hacks.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/417-armadeus-input-wm831x-driver_hacks.patch
index 205d7ef..cb07d96 100644
--- a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/417-armadeus-input-wm831x-driver_hacks.patch
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/417-armadeus-input-wm831x-driver_hacks.patch
@@ -2,9 +2,9 @@ Signed-off-by: Julien Boibessot <jul...@ar...>
Index: linux-2.6.38-alpha/drivers/input/touchscreen/wm831x-ts.c
===================================================================
---- linux-2.6.38-alpha.orig/drivers/input/touchscreen/wm831x-ts.c 2011-01-03 21:42:27.000000000 +0100
-+++ linux-2.6.38-alpha/drivers/input/touchscreen/wm831x-ts.c 2011-01-03 22:01:20.000000000 +0100
-@@ -218,6 +218,7 @@
+--- linux-2.6.38-alpha.orig/drivers/input/touchscreen/wm831x-ts.c 2011-01-20 20:29:10.000000000 +0100
++++ linux-2.6.38-alpha/drivers/input/touchscreen/wm831x-ts.c 2011-01-20 20:29:22.000000000 +0100
+@@ -226,6 +226,7 @@
struct input_dev *input_dev;
int ret;
@@ -12,7 +12,7 @@ Index: linux-2.6.38-alpha/drivers/input/touchscreen/wm831x-ts.c
wm831x_ts = kzalloc(sizeof(struct wm831x_ts), GFP_KERNEL);
if (!wm831x_ts)
return -ENOMEM;
-@@ -248,7 +249,7 @@
+@@ -262,7 +263,7 @@
wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_2,
WM831X_TCH_5WIRE, WM831X_TCH_5WIRE);
@@ -21,23 +21,7 @@ Index: linux-2.6.38-alpha/drivers/input/touchscreen/wm831x-ts.c
WARN_ON(pdata->pressure && pdata->fivewire);
wm831x_ts->pressure = false;
} else {
-@@ -274,12 +275,13 @@
- }
- }
-
-+ /* "Convert only when pen down" isn't working (yet) so don't use it */
- wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_2,
- WM831X_TCH_PDONLY, 0);
-
-- /* Default to 112 samples/sec */
-+ /* Default to 64 samples/sec */
- wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
-- WM831X_TCH_RATE_MASK, 6);
-+ WM831X_TCH_RATE_MASK, 4);
-
- if (wm831x_ts->data_irq)
- ret = request_threaded_irq(wm831x_ts->data_irq, NULL,
-@@ -318,6 +320,17 @@
+@@ -319,6 +320,17 @@
platform_set_drvdata(pdev, wm831x_ts);
hooks/post-receive
--
armadeus
|
|
From: Julien B a. A. <ar...@us...> - 2011-01-19 10:56:00
|
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 64726330eb8457081a04495cb12476bd59b60b57 (commit)
via c8438d823e5a13a8df818e7e3bdd4c21eeef7032 (commit)
from 06ff4006b3c8d322916940c1b2927b68c98ea5ff (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 64726330eb8457081a04495cb12476bd59b60b57
Merge: c8438d823e5a13a8df818e7e3bdd4c21eeef7032 06ff4006b3c8d322916940c1b2927b68c98ea5ff
Author: Julien Boibessot <jul...@ar...>
Date: Wed Jan 19 11:55:03 2011 +0100
Merge branch 'master' of ssh://artemys@armadeus.git.sourceforge.net/gitroot/armadeus/armadeus
commit c8438d823e5a13a8df818e7e3bdd4c21eeef7032
Author: Julien Boibessot <jul...@ar...>
Date: Wed Jan 19 11:54:44 2011 +0100
[XENOMAI] Updates architecture detection in Makefile
-----------------------------------------------------------------------
Summary of changes:
patches/buildroot/072-xenomai-package.patch | 4 +-
.../buildroot/2010.11/072-xenomai-package.patch | 51 ++++++++++----------
2 files changed, 28 insertions(+), 27 deletions(-)
diff --git a/patches/buildroot/072-xenomai-package.patch b/patches/buildroot/072-xenomai-package.patch
index 330c0d2..e7dcafc 100644
--- a/patches/buildroot/072-xenomai-package.patch
+++ b/patches/buildroot/072-xenomai-package.patch
@@ -71,10 +71,10 @@ Index: buildroot/package/xenomai/xenomai.mk
+XENOMAI_BINARY:=xeno-load
+XENOMAI_TARGET_BINARY:=usr/xenomai/bin/$(XENOMAI_BINARY)
+
-+ifeq ($(BR2_TARGET_ARMADEUS_APF27),y)
++ifeq ($(BR2_CPU_NAME),"imx27")
+ CPU_TYPE:=mx2
+else
-+ifeq ($(BR2_TARGET_ARMADEUS_APF9328),y)
++ifeq ($(BR2_CPU_NAME),"imxl")
+ CPU_TYPE:=imx
+endif
+endif
diff --git a/patches/buildroot/2010.11/072-xenomai-package.patch b/patches/buildroot/2010.11/072-xenomai-package.patch
index d782bed..d39eb4e 100644
--- a/patches/buildroot/2010.11/072-xenomai-package.patch
+++ b/patches/buildroot/2010.11/072-xenomai-package.patch
@@ -4,9 +4,9 @@ Signed-off-by: Gwenhael Goavec-Merou <gwe...@ar...>
Index: buildroot/package/Config.in
===================================================================
---- buildroot.orig/package/Config.in 2010-10-19 09:22:13.000000000 +0200
-+++ buildroot/package/Config.in 2010-10-19 09:23:59.000000000 +0200
-@@ -204,6 +204,7 @@
+--- buildroot.orig/package/Config.in 2011-01-18 22:37:08.000000000 +0100
++++ buildroot/package/Config.in 2011-01-19 11:40:16.000000000 +0100
+@@ -208,6 +208,7 @@
source "package/usbmount/Config.in"
source "package/usbutils/Config.in"
source "package/wipe/Config.in"
@@ -16,10 +16,10 @@ Index: buildroot/package/Config.in
Index: buildroot/linux/linux.mk
===================================================================
---- buildroot.orig/linux/linux.mk 2010-10-19 09:22:36.000000000 +0200
-+++ buildroot/linux/linux.mk 2010-10-19 09:24:54.000000000 +0200
-@@ -115,6 +115,9 @@
- $(SED) "s,^CROSS_COMPILE.*,CROSS_COMPILE=$(KERNEL_CROSS),g;" $(LINUX_DIR)/Makefile
+--- buildroot.orig/linux/linux.mk 2011-01-18 22:37:08.000000000 +0100
++++ buildroot/linux/linux.mk 2011-01-18 22:37:08.000000000 +0100
+@@ -117,6 +117,9 @@
+ $(SED) "s,^CROSS_COMPILE.*,CROSS_COMPILE=$(KERNEL_CROSS),g;" $(LINUX26_DIR)/Makefile
(cd $(LINUX26_DIR)/drivers; ln -sf $(ARMADEUS_TOPDIR)/target/linux/modules/ armadeus)
endif
+ifeq ($(BR2_PACKAGE_XENOMAI),y)
@@ -31,11 +31,10 @@ Index: buildroot/linux/linux.mk
Index: buildroot/package/xenomai/Config.in
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ buildroot/package/xenomai/Config.in 2010-10-19 09:26:41.000000000 +0200
-@@ -0,0 +1,7 @@
++++ buildroot/package/xenomai/Config.in 2011-01-19 10:01:03.000000000 +0100
+@@ -0,0 +1,6 @@
+config BR2_PACKAGE_XENOMAI
+ bool "Xenomai"
-+ depends on BR2_LINUX_2_6_29 || BR2_LINUX_2_6_27
+ help
+ Real-Time Framework for Linux
+
@@ -43,8 +42,8 @@ Index: buildroot/package/xenomai/Config.in
Index: buildroot/package/xenomai/xenomai.mk
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ buildroot/package/xenomai/xenomai.mk 2010-10-19 09:26:41.000000000 +0200
-@@ -0,0 +1,99 @@
++++ buildroot/package/xenomai/xenomai.mk 2011-01-19 11:03:40.000000000 +0100
+@@ -0,0 +1,101 @@
+#############################################################
+#
+# xenomai :
@@ -60,7 +59,9 @@ Index: buildroot/package/xenomai/xenomai.mk
+#
+#############################################################
+
-+KERN_DIR:=$(PROJECT_BUILD_DIR)/linux-$(shell echo $(BR2_LINUX26_VERSION))
++KERNEL_VERSION=$(call qstrip,$(BR2_LINUX_KERNEL_VERSION))
++KERNEL_DIR:=$(BUILD_DIR)/linux-$(KERNEL_VERSION)
++
+XENOMAI_ARCH:=$(shell echo $(BR2_ARCH))
+
+XENOMAI_VERSION:=2.4.8
@@ -71,10 +72,10 @@ Index: buildroot/package/xenomai/xenomai.mk
+XENOMAI_BINARY:=xeno-load
+XENOMAI_TARGET_BINARY:=usr/xenomai/bin/$(XENOMAI_BINARY)
+
-+ifeq ($(BR2_TARGET_ARMADEUS_APF27),y)
++ifeq ($(BR2_CPU_NAME),"imx27")
+ CPU_TYPE:=mx2
+else
-+ifeq ($(BR2_TARGET_ARMADEUS_APF9328),y)
++ifeq ($(BR2_CPU_NAME),"imxl")
+ CPU_TYPE:=imx
+endif
+endif
@@ -88,21 +89,21 @@ Index: buildroot/package/xenomai/xenomai.mk
+ $(XENOMAI_CAT) $(DL_DIR)/$(XENOMAI_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
+ touch $@
+
-+$(KERN_DIR)/.patched.xenomai: $(XENOMAI_DIR)/.unpacked
-+ toolchain/patch-kernel.sh $(LINUX26_DIR) package/xenomai \
++$(KERNEL_DIR)/.patched.xenomai: $(XENOMAI_DIR)/.unpacked
++ toolchain/patch-kernel.sh $(KERNEL_DIR) package/xenomai \
+ \*-before-adeos-\*.patch
+ $(XENOMAI_DIR)/scripts/prepare-kernel.sh \
-+ --linux=$(LINUX26_DIR) \
++ --linux=$(KERNEL_DIR) \
+ --arch=$(BR2_ARCH) \
+ --default
-+ cat package/xenomai/xeno-kernel.config >> $(LINUX26_DIR)/.config
-+ toolchain/patch-kernel.sh $(LINUX26_DIR) package/xenomai \
++ cat package/xenomai/xeno-kernel.config >> $(KERNEL_DIR)/.config
++ toolchain/patch-kernel.sh $(KERNEL_DIR) package/xenomai \
+ \*-after-adeos-\*.patch
+ touch $@
+
-+xenomai-patch-kernel: $(KERN_DIR)/.patched.xenomai
++xenomai-patch-kernel: $(KERNEL_DIR)/.patched.xenomai
+
-+$(XENOMAI_DIR)/.configured: $(KERN_DIR)/.patched.xenomai
++$(XENOMAI_DIR)/.configured: $(KERNEL_DIR)/.patched.xenomai
+ (cd $(XENOMAI_DIR); rm -rf config.cache; \
+ $(TARGET_CONFIGURE_OPTS) \
+ $(TARGET_CONFIGURE_ARGS) \
@@ -147,7 +148,7 @@ Index: buildroot/package/xenomai/xenomai.mk
Index: buildroot/package/xenomai/xeno-kernel.config
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ buildroot/package/xenomai/xeno-kernel.config 2010-10-19 09:26:41.000000000 +0200
++++ buildroot/package/xenomai/xeno-kernel.config 2011-01-18 22:37:08.000000000 +0100
@@ -0,0 +1,59 @@
+CONFIG_XENOMAI=y
+CONFIG_XENO_OPT_NUCLEUS=y
@@ -212,7 +213,7 @@ Index: buildroot/package/xenomai/xeno-kernel.config
Index: buildroot/package/xenomai/00-before-adeos-compatibility_with_armadeus.patch
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ buildroot/package/xenomai/00-before-adeos-compatibility_with_armadeus.patch 2010-10-19 09:26:41.000000000 +0200
++++ buildroot/package/xenomai/00-before-adeos-compatibility_with_armadeus.patch 2011-01-18 22:37:08.000000000 +0100
@@ -0,0 +1,10 @@
+--- a/arch/arm/mach-imx/include/mach/imxfb.h
++++ b/arch/arm/mach-imx/include/mach/imxfb.h
@@ -227,7 +228,7 @@ Index: buildroot/package/xenomai/00-before-adeos-compatibility_with_armadeus.pat
Index: buildroot/package/xenomai/01-after-adeos-prevent_system_freeze_on_mxc_with_gpio_generated_interrupts.patch
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ buildroot/package/xenomai/01-after-adeos-prevent_system_freeze_on_mxc_with_gpio_generated_interrupts.patch 2010-10-19 09:26:41.000000000 +0200
++++ buildroot/package/xenomai/01-after-adeos-prevent_system_freeze_on_mxc_with_gpio_generated_interrupts.patch 2011-01-18 22:37:08.000000000 +0100
@@ -0,0 +1,23 @@
+Corrects Freeze problem with MX2 when Adeos is active and
+application/driver uses interruption on GPIO
hooks/post-receive
--
armadeus
|
|
From: Fabien M <fa...@us...> - 2011-01-18 14:50:52
|
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 06ff4006b3c8d322916940c1b2927b68c98ea5ff (commit)
via 8d17010c579b70b4fb2b3b37ec17cdd5f0da2e85 (commit)
from 6f3525f5d8054d919786795e227f662b0c7dddd8 (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 06ff4006b3c8d322916940c1b2927b68c98ea5ff
Merge: 8d17010c579b70b4fb2b3b37ec17cdd5f0da2e85 6f3525f5d8054d919786795e227f662b0c7dddd8
Author: Fabien Marteau <fab...@ar...>
Date: Tue Jan 18 15:50:27 2011 +0100
Merge branch 'master' of ssh://armadeus.git.sourceforge.net/gitroot/armadeus/armadeus
commit 8d17010c579b70b4fb2b3b37ec17cdd5f0da2e85
Author: Fabien Marteau <fab...@ar...>
Date: Tue Jan 18 15:49:55 2011 +0100
[firmware] top_testconfig.bit was wrong
-----------------------------------------------------------------------
Summary of changes:
.../sp_vision_config/bitstream/top_testconfig.bit | Bin 149615 -> 149615 bytes
1 files changed, 0 insertions(+), 0 deletions(-)
diff --git a/firmware/sp_vision_config/bitstream/top_testconfig.bit b/firmware/sp_vision_config/bitstream/top_testconfig.bit
index 7592c17..288f718 100644
Binary files a/firmware/sp_vision_config/bitstream/top_testconfig.bit and b/firmware/sp_vision_config/bitstream/top_testconfig.bit differ
hooks/post-receive
--
armadeus
|
|
From: Julien B a. A. <ar...@us...> - 2011-01-18 13:32:30
|
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 6f3525f5d8054d919786795e227f662b0c7dddd8 (commit)
from 592166cebca8fe0e55a428ba0c29628ec07d57f0 (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 6f3525f5d8054d919786795e227f662b0c7dddd8
Author: Julien Boibessot <jul...@ar...>
Date: Tue Jan 18 14:32:05 2011 +0100
[BUILDROOT] Update default configs
-----------------------------------------------------------------------
Summary of changes:
.../target/device/armadeus/apf27/apf27_defconfig | 17 +++--------------
.../device/armadeus/apf9328/apf9328_defconfig | 17 +++++++----------
buildroot/target/device/armadeus/pps/pps_defconfig | 13 +------------
3 files changed, 11 insertions(+), 36 deletions(-)
diff --git a/buildroot/target/device/armadeus/apf27/apf27_defconfig b/buildroot/target/device/armadeus/apf27/apf27_defconfig
index 1b77d08..39222fb 100644
--- a/buildroot/target/device/armadeus/apf27/apf27_defconfig
+++ b/buildroot/target/device/armadeus/apf27/apf27_defconfig
@@ -1,6 +1,6 @@
#
# Automatically generated make config: don't edit
-# Tue Nov 9 15:25:06 2010
+# Tue Jan 18 14:20:40 2011
#
BR2_HAVE_DOT_CONFIG=y
BR2_VERSION="0.10.0-svn"
@@ -67,20 +67,9 @@ BR2_BANNER="Welcome to the Armadeus development environment."
# Preset Devices
#
BR2_TARGET_ARMADEUS=y
-# BR2_TARGET_ARMADEUS_APF9328 is not set
-BR2_TARGET_ARMADEUS_APF27_DEV=y
-# BR2_TARGET_ARMADEUS_APF51 is not set
-# BR2_TARGET_ARMADEUS_APF27_PPS is not set
BR2_BOARD_NAME="apf27"
BR2_BOARD_PATH="target/device/armadeus/$(BR2_BOARD_NAME)"
BR2_CPU_NAME="imx27"
-# BR2_TARGET_ARMADEUS_APF27_SDRAM_16 is not set
-# BR2_TARGET_ARMADEUS_APF27_SDRAM_32 is not set
-BR2_TARGET_ARMADEUS_APF27_SDRAM_64=y
-# BR2_TARGET_ARMADEUS_APF27_SDRAM_128 is not set
-# BR2_TARGET_ARMADEUS_APF27_SDRAM_256 is not set
-BR2_TARGET_ARMADEUS_NR_SDRAM_1=y
-# BR2_TARGET_ARMADEUS_NR_SDRAM_2 is not set
BR2_TARGET_ARMADEUS_NR_SDRAM="1"
BR2_TARGET_ARMADEUS_SDRAM_SIZE="64"
# BR2_TARGET_ARMLTD is not set
@@ -507,8 +496,9 @@ BR2_BLOCKDEV_SUPPORT=y
# BR2_PACKAGE_HWDATA is not set
BR2_PACKAGE_I2C_TOOLS=y
# BR2_PACKAGE_INPUT_TOOLS is not set
-# BR2_PACKAGE_PICKIT2 is not set
# BR2_PACKAGE_IOSTAT is not set
+# BR2_PACKAGE_PICKIT2 is not set
+# BR2_PACKAGE_JOYSTICKTEST is not set
# BR2_PACKAGE_LCD4LINUX is not set
# BR2_PACKAGE_LIBAIO is not set
# BR2_PACKAGE_LIBRAW1394 is not set
@@ -736,7 +726,6 @@ BR2_PACKAGE_ZLIB=y
# BR2_XML_SUPPORT is not set
# BR2_JAVA_SUPPORT is not set
# BR2_GAMES is not set
-# BR2_PACKAGE_JOYSTICKTEST is not set
#
# Target filesystem options
diff --git a/buildroot/target/device/armadeus/apf9328/apf9328_defconfig b/buildroot/target/device/armadeus/apf9328/apf9328_defconfig
index 1c9927e..d0a8c7e 100644
--- a/buildroot/target/device/armadeus/apf9328/apf9328_defconfig
+++ b/buildroot/target/device/armadeus/apf9328/apf9328_defconfig
@@ -1,6 +1,6 @@
#
# Automatically generated make config: don't edit
-# Wed Jul 14 12:00:26 2010
+# Tue Jan 18 14:23:39 2011
#
BR2_HAVE_DOT_CONFIG=y
BR2_VERSION="0.10.0-svn"
@@ -67,17 +67,10 @@ BR2_BANNER="Welcome to the Armadeus development environment."
# Preset Devices
#
BR2_TARGET_ARMADEUS=y
-BR2_TARGET_ARMADEUS_APF9328=y
-# BR2_TARGET_ARMADEUS_APF27_DEV is not set
-# BR2_TARGET_ARMADEUS_APF51 is not set
-# BR2_TARGET_ARMADEUS_APF27_PPS is not set
BR2_BOARD_NAME="apf9328"
BR2_BOARD_PATH="target/device/armadeus/$(BR2_BOARD_NAME)"
BR2_CPU_NAME="imxl"
-# BR2_TARGET_ARMADEUS_SDRAM_8 is not set
-BR2_TARGET_ARMADEUS_SDRAM_16=y
-# BR2_TARGET_ARMADEUS_SDRAM_32 is not set
-# BR2_TARGET_ARMADEUS_SDRAM_64 is not set
+BR2_TARGET_ARMADEUS_NR_SDRAM="1"
BR2_TARGET_ARMADEUS_SDRAM_SIZE="16"
# BR2_TARGET_ARMLTD is not set
# BR2_TARGET_ATMEL is not set
@@ -505,6 +498,7 @@ BR2_BLOCKDEV_SUPPORT=y
# BR2_PACKAGE_INPUT_TOOLS is not set
# BR2_PACKAGE_IOSTAT is not set
# BR2_PACKAGE_PICKIT2 is not set
+# BR2_PACKAGE_JOYSTICKTEST is not set
# BR2_PACKAGE_LCD4LINUX is not set
# BR2_PACKAGE_LIBAIO is not set
# BR2_PACKAGE_LIBRAW1394 is not set
@@ -659,6 +653,10 @@ BR2_PACKAGE_NCURSES=y
# BR2_PACKAGE_QT is not set
#
+# Qwt requires Qt to be installed
+#
+
+#
# X Window System server
#
BR2_PACKAGE_XSERVER_none=y
@@ -728,7 +726,6 @@ BR2_PACKAGE_ZLIB=y
# BR2_XML_SUPPORT is not set
# BR2_JAVA_SUPPORT is not set
# BR2_GAMES is not set
-# BR2_PACKAGE_JOYSTICKTEST is not set
#
# Target filesystem options
diff --git a/buildroot/target/device/armadeus/pps/pps_defconfig b/buildroot/target/device/armadeus/pps/pps_defconfig
index 4f5b902..b4859f6 100644
--- a/buildroot/target/device/armadeus/pps/pps_defconfig
+++ b/buildroot/target/device/armadeus/pps/pps_defconfig
@@ -1,6 +1,6 @@
#
# Automatically generated make config: don't edit
-# Wed Jan 12 11:33:44 2011
+# Tue Jan 18 14:24:53 2011
#
BR2_HAVE_DOT_CONFIG=y
BR2_VERSION="0.10.0-svn"
@@ -67,20 +67,9 @@ BR2_BANNER="Welcome to the Armadeus development environment."
# Preset Devices
#
BR2_TARGET_ARMADEUS=y
-# BR2_TARGET_ARMADEUS_APF9328 is not set
-# BR2_TARGET_ARMADEUS_APF27_DEV is not set
-# BR2_TARGET_ARMADEUS_APF51 is not set
-BR2_TARGET_ARMADEUS_APF27_PPS=y
BR2_BOARD_NAME="pps"
BR2_BOARD_PATH="target/device/armadeus/$(BR2_BOARD_NAME)"
BR2_CPU_NAME="imx27"
-# BR2_TARGET_ARMADEUS_APF27_SDRAM_16 is not set
-# BR2_TARGET_ARMADEUS_APF27_SDRAM_32 is not set
-BR2_TARGET_ARMADEUS_APF27_SDRAM_64=y
-# BR2_TARGET_ARMADEUS_APF27_SDRAM_128 is not set
-# BR2_TARGET_ARMADEUS_APF27_SDRAM_256 is not set
-BR2_TARGET_ARMADEUS_NR_SDRAM_1=y
-# BR2_TARGET_ARMADEUS_NR_SDRAM_2 is not set
BR2_TARGET_ARMADEUS_NR_SDRAM="1"
BR2_TARGET_ARMADEUS_SDRAM_SIZE="64"
# BR2_TARGET_ARMLTD is not set
hooks/post-receive
--
armadeus
|
|
From: Julien B a. A. <ar...@us...> - 2011-01-18 12:55:02
|
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 592166cebca8fe0e55a428ba0c29628ec07d57f0 (commit)
via 9d57cf237dd8670caf5c2e509882ccba4bcb3fcf (commit)
from 55961c47a5a01f9859898c3d6022425bd984ebfe (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 592166cebca8fe0e55a428ba0c29628ec07d57f0
Merge: 9d57cf237dd8670caf5c2e509882ccba4bcb3fcf 55961c47a5a01f9859898c3d6022425bd984ebfe
Author: Julien Boibessot <jul...@ar...>
Date: Tue Jan 18 13:53:43 2011 +0100
Merge branch 'master' of ssh://artemys@armadeus.git.sourceforge.net/gitroot/armadeus/armadeus
commit 9d57cf237dd8670caf5c2e509882ccba4bcb3fcf
Author: Julien Boibessot <jul...@ar...>
Date: Tue Jan 18 13:53:16 2011 +0100
[BUILDROOT] Simplify Board/CPU/Memory selection/configuration (Target device menu)
-----------------------------------------------------------------------
Summary of changes:
buildroot/configs/.gitignore | 1 +
buildroot/configs/apf27_defconfig | 50 +++++++++++----
buildroot/configs/apf9328_defconfig | 9 +---
buildroot/configs/pps_defconfig | 17 +----
buildroot/package/armadeus/fpgaregs/fpgaregs.mk | 2 +-
buildroot/package/armadeus/imxssi/imxssi.mk | 7 +--
buildroot/target/device/armadeus/Config.in | 50 ++++-----------
buildroot/target/device/armadeus/apf27/Config.in | 66 --------------------
buildroot/target/device/armadeus/apf51/Config.in | 49 ---------------
buildroot/target/device/armadeus/apf9328/Config.in | 37 -----------
10 files changed, 56 insertions(+), 232 deletions(-)
delete mode 100644 buildroot/target/device/armadeus/apf27/Config.in
delete mode 100644 buildroot/target/device/armadeus/apf51/Config.in
delete mode 100644 buildroot/target/device/armadeus/apf9328/Config.in
diff --git a/buildroot/configs/.gitignore b/buildroot/configs/.gitignore
index 4113dbc..40d884f 100644
--- a/buildroot/configs/.gitignore
+++ b/buildroot/configs/.gitignore
@@ -1,2 +1,3 @@
*_defconfig
!/apf*
+!/pps_defconfig
diff --git a/buildroot/configs/apf27_defconfig b/buildroot/configs/apf27_defconfig
index bfbf9e8..e976706 100644
--- a/buildroot/configs/apf27_defconfig
+++ b/buildroot/configs/apf27_defconfig
@@ -55,20 +55,9 @@ BR2_GCC_TARGET_ABI="aapcs-linux"
# Preset Devices
#
BR2_TARGET_ARMADEUS=y
-# BR2_TARGET_ARMADEUS_APF9328 is not set
-BR2_TARGET_ARMADEUS_APF27_DEV=y
-# BR2_TARGET_ARMADEUS_APF51 is not set
-# BR2_TARGET_ARMADEUS_APF27_PPS is not set
BR2_BOARD_NAME="apf27"
BR2_BOARD_PATH="target/device/armadeus/$(BR2_BOARD_NAME)"
BR2_CPU_NAME="imx27"
-# BR2_TARGET_ARMADEUS_APF27_SDRAM_16 is not set
-# BR2_TARGET_ARMADEUS_APF27_SDRAM_32 is not set
-BR2_TARGET_ARMADEUS_APF27_SDRAM_64=y
-# BR2_TARGET_ARMADEUS_APF27_SDRAM_128 is not set
-# BR2_TARGET_ARMADEUS_APF27_SDRAM_256 is not set
-BR2_TARGET_ARMADEUS_NR_SDRAM_1=y
-# BR2_TARGET_ARMADEUS_NR_SDRAM_2 is not set
BR2_TARGET_ARMADEUS_NR_SDRAM="1"
BR2_TARGET_ARMADEUS_SDRAM_SIZE="64"
# BR2_TARGET_ARMLTD is not set
@@ -76,7 +65,31 @@ BR2_TARGET_ARMADEUS_SDRAM_SIZE="64"
# BR2_TARGET_KWIKBYTE is not set
BR2_TARGET_GENERIC_HOSTNAME="armadeus"
BR2_TARGET_GENERIC_ISSUE="Welcome to the Armadeus development environment."
-# BR2_TARGET_GENERIC_GETTY is not set
+BR2_TARGET_GENERIC_GETTY=y
+# BR2_TARGET_GENERIC_GETTY_NONE is not set
+# BR2_TARGET_GENERIC_GETTY_TTYS0 is not set
+# BR2_TARGET_GENERIC_GETTY_TTYS1 is not set
+# BR2_TARGET_GENERIC_GETTY_TTYS2 is not set
+# BR2_TARGET_GENERIC_GETTY_TTYS3 is not set
+# BR2_TARGET_GENERIC_GETTY_TTYAMA0 is not set
+# BR2_TARGET_GENERIC_GETTY_TTYAMA1 is not set
+# BR2_TARGET_GENERIC_GETTY_TTYAMA2 is not set
+# BR2_TARGET_GENERIC_GETTY_TTYAMA3 is not set
+# BR2_TARGET_GENERIC_GETTY_TTYSAC0 is not set
+# BR2_TARGET_GENERIC_GETTY_TTYSAC1 is not set
+# BR2_TARGET_GENERIC_GETTY_TTYSAC2 is not set
+# BR2_TARGET_GENERIC_GETTY_TTYSAC3 is not set
+BR2_TARGET_GENERIC_GETTY_TTYMXC0=y
+# BR2_TARGET_GENERIC_GETTY_TTYMXC1 is not set
+# BR2_TARGET_GENERIC_GETTY_TTYMXC2 is not set
+BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0"
+# BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP is not set
+# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set
+# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set
+# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set
+# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set
+BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y
+BR2_TARGET_GENERIC_GETTY_BAUDRATE="115200"
#
# Build options
@@ -135,9 +148,9 @@ BR2_TOOLCHAIN_BUILDROOT=y
#
# Kernel Header Options
#
-# BR2_KERNEL_HEADERS_2_6_33 is not set
# BR2_KERNEL_HEADERS_2_6_34 is not set
# BR2_KERNEL_HEADERS_2_6_35 is not set
+# BR2_KERNEL_HEADERS_2_6_36 is not set
BR2_KERNEL_HEADERS_VERSION=y
# BR2_KERNEL_HEADERS_SNAP is not set
BR2_DEFAULT_KERNEL_VERSION="2.6.29.6"
@@ -168,10 +181,12 @@ BR2_EXTRA_BINUTILS_CONFIG_OPTIONS=""
# BR2_GCC_VERSION_4_2_4 is not set
# BR2_GCC_VERSION_4_3_X is not set
BR2_GCC_VERSION_4_4_X=y
+# BR2_GCC_VERSION_4_5_X is not set
# BR2_GCC_VERSION_SNAP is not set
BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y
BR2_GCC_VERSION="4.4.5"
BR2_EXTRA_GCC_CONFIG_OPTIONS=""
+# BR2_GCC_CROSS_OBJC is not set
# BR2_GCC_CROSS_FORTRAN is not set
# BR2_INSTALL_OBJC is not set
# BR2_INSTALL_FORTRAN is not set
@@ -353,6 +368,7 @@ BR2_PACKAGE_STRACE=y
# BR2_PACKAGE_LIBGMP is not set
# BR2_PACKAGE_GPERF is not set
# BR2_PACKAGE_MAKE is not set
+# BR2_PACKAGE_LIBMPC is not set
# BR2_PACKAGE_LIBMPFR is not set
# BR2_PACKAGE_LIBTOOL is not set
# BR2_PACKAGE_M4 is not set
@@ -454,6 +470,7 @@ BR2_PACKAGE_STRACE=y
BR2_PACKAGE_I2C_TOOLS=y
# BR2_PACKAGE_INPUT_TOOLS is not set
# BR2_PACKAGE_IOSTAT is not set
+# BR2_PACKAGE_KBD is not set
# BR2_PACKAGE_LCD4LINUX is not set
# BR2_PACKAGE_LM_SENSORS is not set
# BR2_PACKAGE_LVM2 is not set
@@ -505,6 +522,7 @@ BR2_PACKAGE_MTD_UBIUPDATEVOL=y
# BR2_PACKAGE_NTFS_3G is not set
# BR2_PACKAGE_NTFSPROGS is not set
# BR2_PACKAGE_PCIUTILS is not set
+# BR2_PACKAGE_RNG_TOOLS is not set
# BR2_PACKAGE_SETSERIAL is not set
# BR2_PACKAGE_SMARTMONTOOLS is not set
# BR2_PACKAGE_SQUASHFS is not set
@@ -574,6 +592,7 @@ BR2_PACKAGE_ZLIB=y
# BR2_PACKAGE_FREETYPE is not set
# BR2_PACKAGE_JPEG is not set
# BR2_PACKAGE_LIBART is not set
+# BR2_PACKAGE_GDK_PIXBUF is not set
# BR2_PACKAGE_LIBPNG is not set
# BR2_PACKAGE_LIBSVGTINY is not set
# BR2_PACKAGE_LIBUNGIF is not set
@@ -615,6 +634,7 @@ BR2_PACKAGE_TSLIB=y
#
# Other
#
+# BR2_PACKAGE_ARGP_STANDALONE is not set
# BR2_PACKAGE_LIBATOMIC_OPS is not set
# BR2_PACKAGE_LIBCAP is not set
# BR2_PACKAGE_LIBDAEMON is not set
@@ -699,6 +719,7 @@ BR2_PACKAGE_NTP=y
# BR2_PACKAGE_NTP_NTPDC is not set
# BR2_PACKAGE_NTP_NTPQ is not set
# BR2_PACKAGE_NTP_TICKADJ is not set
+# BR2_PACKAGE_NUTTCP is not set
# BR2_PACKAGE_OLSR is not set
# BR2_PACKAGE_OPENNTPD is not set
# BR2_PACKAGE_OPENOBEX is not set
@@ -730,6 +751,7 @@ BR2_PACKAGE_PORTMAP=y
# BR2_PACKAGE_VTUN is not set
# BR2_PACKAGE_WEBIF is not set
BR2_PACKAGE_WIRELESS_TOOLS=y
+# BR2_PACKAGE_WIRELESS_TOOLS_LIB is not set
# BR2_PACKAGE_WPA_SUPPLICANT is not set
#
@@ -838,7 +860,7 @@ BR2_TARGET_UBOOT_COPYTO=""
# Kernel
#
BR2_LINUX_KERNEL=y
-# BR2_LINUX_KERNEL_2_6_35 is not set
+# BR2_LINUX_KERNEL_2_6_36 is not set
# BR2_LINUX_KERNEL_SAME_AS_HEADERS is not set
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
# BR2_LINUX_KERNEL_CUSTOM_TARBALL is not set
diff --git a/buildroot/configs/apf9328_defconfig b/buildroot/configs/apf9328_defconfig
index 3a92543..bb9ef17 100644
--- a/buildroot/configs/apf9328_defconfig
+++ b/buildroot/configs/apf9328_defconfig
@@ -55,17 +55,10 @@ BR2_GCC_TARGET_ABI="aapcs-linux"
# Preset Devices
#
BR2_TARGET_ARMADEUS=y
-BR2_TARGET_ARMADEUS_APF9328=y
-# BR2_TARGET_ARMADEUS_APF27_DEV is not set
-# BR2_TARGET_ARMADEUS_APF51 is not set
-# BR2_TARGET_ARMADEUS_APF27_PPS is not set
BR2_BOARD_NAME="apf9328"
BR2_BOARD_PATH="target/device/armadeus/$(BR2_BOARD_NAME)"
BR2_CPU_NAME="imxl"
-# BR2_TARGET_ARMADEUS_SDRAM_8 is not set
-BR2_TARGET_ARMADEUS_SDRAM_16=y
-# BR2_TARGET_ARMADEUS_SDRAM_32 is not set
-# BR2_TARGET_ARMADEUS_SDRAM_64 is not set
+BR2_TARGET_ARMADEUS_NR_SDRAM="1"
BR2_TARGET_ARMADEUS_SDRAM_SIZE="16"
# BR2_TARGET_ARMLTD is not set
# BR2_TARGET_ATMEL is not set
diff --git a/buildroot/configs/pps_defconfig b/buildroot/configs/pps_defconfig
index a0908a7..1028d2b 100644
--- a/buildroot/configs/pps_defconfig
+++ b/buildroot/configs/pps_defconfig
@@ -55,20 +55,9 @@ BR2_GCC_TARGET_ABI="aapcs-linux"
# Preset Devices
#
BR2_TARGET_ARMADEUS=y
-# BR2_TARGET_ARMADEUS_APF9328 is not set
-# BR2_TARGET_ARMADEUS_APF27_DEV is not set
-# BR2_TARGET_ARMADEUS_APF51 is not set
-BR2_TARGET_ARMADEUS_APF27_PPS=y
BR2_BOARD_NAME="pps"
BR2_BOARD_PATH="target/device/armadeus/$(BR2_BOARD_NAME)"
BR2_CPU_NAME="imx27"
-# BR2_TARGET_ARMADEUS_APF27_SDRAM_16 is not set
-# BR2_TARGET_ARMADEUS_APF27_SDRAM_32 is not set
-BR2_TARGET_ARMADEUS_APF27_SDRAM_64=y
-# BR2_TARGET_ARMADEUS_APF27_SDRAM_128 is not set
-# BR2_TARGET_ARMADEUS_APF27_SDRAM_256 is not set
-BR2_TARGET_ARMADEUS_NR_SDRAM_1=y
-# BR2_TARGET_ARMADEUS_NR_SDRAM_2 is not set
BR2_TARGET_ARMADEUS_NR_SDRAM="1"
BR2_TARGET_ARMADEUS_SDRAM_SIZE="64"
# BR2_TARGET_ARMLTD is not set
@@ -135,9 +124,9 @@ BR2_TOOLCHAIN_BUILDROOT=y
#
# Kernel Header Options
#
-# BR2_KERNEL_HEADERS_2_6_33 is not set
# BR2_KERNEL_HEADERS_2_6_34 is not set
# BR2_KERNEL_HEADERS_2_6_35 is not set
+# BR2_KERNEL_HEADERS_2_6_36 is not set
BR2_KERNEL_HEADERS_VERSION=y
# BR2_KERNEL_HEADERS_SNAP is not set
BR2_DEFAULT_KERNEL_VERSION="2.6.29.6"
@@ -168,10 +157,12 @@ BR2_EXTRA_BINUTILS_CONFIG_OPTIONS=""
# BR2_GCC_VERSION_4_2_4 is not set
# BR2_GCC_VERSION_4_3_X is not set
BR2_GCC_VERSION_4_4_X=y
+# BR2_GCC_VERSION_4_5_X is not set
# BR2_GCC_VERSION_SNAP is not set
BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y
BR2_GCC_VERSION="4.4.5"
BR2_EXTRA_GCC_CONFIG_OPTIONS=""
+# BR2_GCC_CROSS_OBJC is not set
# BR2_GCC_CROSS_FORTRAN is not set
# BR2_INSTALL_OBJC is not set
# BR2_INSTALL_FORTRAN is not set
@@ -839,7 +830,7 @@ BR2_TARGET_UBOOT_COPYTO=""
# Kernel
#
BR2_LINUX_KERNEL=y
-# BR2_LINUX_KERNEL_2_6_35 is not set
+# BR2_LINUX_KERNEL_2_6_36 is not set
# BR2_LINUX_KERNEL_SAME_AS_HEADERS is not set
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
# BR2_LINUX_KERNEL_CUSTOM_TARBALL is not set
diff --git a/buildroot/package/armadeus/fpgaregs/fpgaregs.mk b/buildroot/package/armadeus/fpgaregs/fpgaregs.mk
index 20f4648..b10800b 100644
--- a/buildroot/package/armadeus/fpgaregs/fpgaregs.mk
+++ b/buildroot/package/armadeus/fpgaregs/fpgaregs.mk
@@ -8,7 +8,7 @@ FPGAREGS_VER:=1.0
FPGAREGS_SOURCE:=$(TOPDIR)/../target/linux/debug/fpgaregs/
FPGAREGS_DIR:=$(BUILD_DIR)/fpgaregs-$(FPGAREGS_VER)
FPGAREGS_CAT:=zcat
-ifeq ($(BR2_TARGET_ARMADEUS_APF27),y)
+ifeq ($(BR2_CPU_NAME),"imx27")
FPGAREGS_BINARY:=fpga27regs
else
FPGAREGS_BINARY:=fpgaregs
diff --git a/buildroot/package/armadeus/imxssi/imxssi.mk b/buildroot/package/armadeus/imxssi/imxssi.mk
index f5fad24..0005d8d 100644
--- a/buildroot/package/armadeus/imxssi/imxssi.mk
+++ b/buildroot/package/armadeus/imxssi/imxssi.mk
@@ -11,12 +11,7 @@ IMXSSI_CAT:=zcat
IMXSSI_BINARY:=imxssi
IMXSSI_TARGET_BINARY:=usr/bin/imxssi
-ifeq ($(BR2_TARGET_ARMADEUS_APF27),y)
-IMXSSI_DEFINES += -DIMX27
-endif
-ifeq ($(BR2_TARGET_ARMADEUS_APF9328),y)
-IMXSSI_DEFINES += -DIMXL
-endif
+IMXSSI_DEFINES:=-D$(shell echo $(BR2_CPU_NAME) | tr '[:lower:]' '[:upper:]')
$(IMXSSI_DIR)/imxssi.c:
mkdir -p $(IMXSSI_DIR)/
diff --git a/buildroot/target/device/armadeus/Config.in b/buildroot/target/device/armadeus/Config.in
index c23cdc7..262edf5 100644
--- a/buildroot/target/device/armadeus/Config.in
+++ b/buildroot/target/device/armadeus/Config.in
@@ -1,57 +1,31 @@
menuconfig BR2_TARGET_ARMADEUS
bool "Armadeus Device Support"
depends on BR2_arm
- default n
help
- Armadeus arm based systems
+ Armadeus ARM based systems
if BR2_TARGET_ARMADEUS
-choice
- prompt "Armadeus target device"
- default BR2_TARGET_ARMADEUS_APF9328
- depends on BR2_arm && BR2_TARGET_ARMADEUS
- help
- Armadeus target device
-
-config BR2_TARGET_ARMADEUS_APF9328
- bool "apf9328"
-config BR2_TARGET_ARMADEUS_APF27_DEV
- bool "apf27 dev"
-config BR2_TARGET_ARMADEUS_APF51
- bool "apf51"
-config BR2_TARGET_ARMADEUS_APF27_PPS
- bool "apf27 pps"
-endchoice
-
config BR2_BOARD_NAME
- string
- default "apf9328" if BR2_TARGET_ARMADEUS_APF9328
- default "apf27" if BR2_TARGET_ARMADEUS_APF27_DEV
- default "apf51" if BR2_TARGET_ARMADEUS_APF51
- default "pps" if BR2_TARGET_ARMADEUS_APF27_PPS
+ string "Board name"
+ default "apf"
config BR2_BOARD_PATH
string
default "target/device/armadeus/$(BR2_BOARD_NAME)"
config BR2_CPU_NAME
- string
- default "imxl" if BR2_TARGET_ARMADEUS_APF9328
- default "imx27" if BR2_TARGET_ARMADEUS_APF27_DEV || BR2_TARGET_ARMADEUS_APF27_PPS
- default "imx51" if BR2_TARGET_ARMADEUS_APF51
+ string "CPU name"
+ default "imx"
-source "target/device/armadeus/apf9328/Config.in"
-source "target/device/armadeus/apf27/Config.in"
-source "target/device/armadeus/apf51/Config.in"
+config BR2_TARGET_ARMADEUS_NR_SDRAM
+ string "Number of RAM chips on your board"
+ default 1
config BR2_TARGET_ARMADEUS_SDRAM_SIZE
- string
- default "8" if BR2_TARGET_ARMADEUS_SDRAM_8
- default "16" if BR2_TARGET_ARMADEUS_APF27_SDRAM_16 || BR2_TARGET_ARMADEUS_SDRAM_16
- default "32" if BR2_TARGET_ARMADEUS_APF27_SDRAM_32 || BR2_TARGET_ARMADEUS_SDRAM_32
- default "64" if BR2_TARGET_ARMADEUS_APF27_SDRAM_64 || BR2_TARGET_ARMADEUS_SDRAM_64
- default "128" if BR2_TARGET_ARMADEUS_APF27_SDRAM_128
- default "256" if BR2_TARGET_ARMADEUS_APF27_SDRAM_256
+ string "Size of a single RAM chip (in MB)"
+ default "64"
+ help
+ Size of a single RAM chip on your board.
endif
diff --git a/buildroot/target/device/armadeus/apf27/Config.in b/buildroot/target/device/armadeus/apf27/Config.in
deleted file mode 100644
index 9ed922d..0000000
--- a/buildroot/target/device/armadeus/apf27/Config.in
+++ /dev/null
@@ -1,66 +0,0 @@
-if BR2_TARGET_ARMADEUS_APF27_DEV
-choice
- prompt "Target DDR SDRAM chip size"
- default BR2_TARGET_ARMADEUS_APF27_SDRAM_64 if BR2_TARGET_ARMADEUS_APF27_DEV
- depends on BR2_TARGET_ARMADEUS_APF27_DEV
- help
- Target DDR SDRAM size per chip (Default 64MB).
-
-config BR2_TARGET_ARMADEUS_APF27_SDRAM_16
- depends on BR2_TARGET_ARMADEUS_APF27_DEV
- bool "16MB"
- help
- Target 16MB DDR SDRAM size per chip.
-
-config BR2_TARGET_ARMADEUS_APF27_SDRAM_32
- depends on BR2_TARGET_ARMADEUS_APF27_DEV
- bool "32MB"
- help
- Target 32MB DDR SDRAM size per chip.
-
-config BR2_TARGET_ARMADEUS_APF27_SDRAM_64
- depends on BR2_TARGET_ARMADEUS_APF27_DEV
- bool "64MB"
- help
- Target 64MB DDR SDRAM size per chip (Default).
-
-config BR2_TARGET_ARMADEUS_APF27_SDRAM_128
- depends on BR2_TARGET_ARMADEUS_APF27_DEV
- bool "128MB"
- help
- Target 128MB DDR SDRAM size per chip).
-
-config BR2_TARGET_ARMADEUS_APF27_SDRAM_256
- depends on BR2_TARGET_ARMADEUS_APF27_DEV
- bool "256MB"
- help
- Target 256MB DDR SDRAM size per chip.
-
-endchoice
-
-choice
- prompt "Target Number of DDR SDRAM chip"
- default BR2_TARGET_ARMADEUS_NR_SDRAM_1
- help
- Number of DDR SDRAM chip present on target (1 or 2)
- (Default 1 DDR SDRAM)
-
-config BR2_TARGET_ARMADEUS_NR_SDRAM_1
- depends on BR2_TARGET_ARMADEUS_APF27_DEV
- bool "1 DDR SDRAM"
- help
- 1 DDR SDRAM on target (Default).
-config BR2_TARGET_ARMADEUS_NR_SDRAM_2
- depends on BR2_TARGET_ARMADEUS_APF27_DEV
- bool "2 DDR SDRAMs"
- help
- 2 DDR SDRAMs on target.
-
-endchoice
-
-config BR2_TARGET_ARMADEUS_NR_SDRAM
- string
- default 1 if BR2_TARGET_ARMADEUS_NR_SDRAM_1
- default 2 if BR2_TARGET_ARMADEUS_NR_SDRAM_2
-
-endif
diff --git a/buildroot/target/device/armadeus/apf51/Config.in b/buildroot/target/device/armadeus/apf51/Config.in
deleted file mode 100644
index f37e95f..0000000
--- a/buildroot/target/device/armadeus/apf51/Config.in
+++ /dev/null
@@ -1,49 +0,0 @@
-if BR2_TARGET_ARMADEUS_APF51
-choice
- prompt "Number of DDR2 RAM chips on your APF"
- default BR2_TARGET_ARMADEUS_APF51_NB_DDR2RAM_1
- help
- Number of DDR2 RAM chips mounted on your APF51
- (Default: 1)
-
-config BR2_TARGET_ARMADEUS_APF51_NB_DDR2RAM_1
- bool "1x DDR2 RAM"
- help
- 1 DDR2 RAM chip (Default).
-
-config BR2_TARGET_ARMADEUS_APF51_NB_DDR2RAM_2
- bool "2x DDR2 RAMs"
- help
- 2 DDR2 RAM chips.
-
-endchoice
-
-config BR2_TARGET_ARMADEUS_NR_SDRAM
- string
- default 1 if BR2_TARGET_ARMADEUS_APF51_NB_DDR2RAM_1
- default 2 if BR2_TARGET_ARMADEUS_APF51_NB_DDR2RAM_2
-
-choice
- prompt "Single size of your DDR2 RAM chip(s)"
- default BR2_TARGET_ARMADEUS_APF51_DDR2RAM_128
- help
- DDR2 RAM size per chip (Default 128MB).
-
-config BR2_TARGET_ARMADEUS_APF51_DDR2RAM_64
- bool "64MB"
- help
- 64MB size per DDR2 RAM chip.
-
-config BR2_TARGET_ARMADEUS_APF51_DDR2RAM_128
- bool "128MB"
- help
- 128MB size per DDR2 RAM chip.
-
-config BR2_TARGET_ARMADEUS_APF51_DDR2RAM_256
- bool "256MB"
- help
- 256MB size per DDR2 RAM chip.
-
-endchoice
-
-endif
diff --git a/buildroot/target/device/armadeus/apf9328/Config.in b/buildroot/target/device/armadeus/apf9328/Config.in
deleted file mode 100644
index e97ea41..0000000
--- a/buildroot/target/device/armadeus/apf9328/Config.in
+++ /dev/null
@@ -1,37 +0,0 @@
-if BR2_TARGET_ARMADEUS_APF9328
-
-choice
- prompt "Target SDRAM size"
- default BR2_TARGET_ARMADEUS_SDRAM_16 if BR2_TARGET_ARMADEUS_APF9328
- depends on BR2_TARGET_ARMADEUS_APF9328
- help
- Target SDRAM size (Default 16MB).
-
-config BR2_TARGET_ARMADEUS_SDRAM_8
- depends on BR2_TARGET_ARMADEUS_APF9328
- bool "8MB"
- help
- Target 8MB SDRAM size.
-
-config BR2_TARGET_ARMADEUS_SDRAM_16
- depends on BR2_TARGET_ARMADEUS_APF9328
- bool "16MB"
- help
- Target 16MB SDRAM size (Default).
-
-config BR2_TARGET_ARMADEUS_SDRAM_32
- depends on BR2_TARGET_ARMADEUS_APF9328
- bool "32MB"
- help
- Target 32MB SDRAM size.
-
-config BR2_TARGET_ARMADEUS_SDRAM_64
- depends on BR2_TARGET_ARMADEUS_APF9328
- bool "64MB"
- help
- Target 64MB SDRAM size.
-
-endchoice
-
-endif
-
hooks/post-receive
--
armadeus
|
|
From: Fabien M <fa...@us...> - 2011-01-13 14:13:23
|
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 55961c47a5a01f9859898c3d6022425bd984ebfe (commit)
from 2aa1ee416f5ff000dd868c986a35b99438fe600a (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 55961c47a5a01f9859898c3d6022425bd984ebfe
Author: Fabien Marteau <fab...@ar...>
Date: Thu Jan 13 15:12:39 2011 +0100
[U-BOOT] Adding second spartan6 in apf27.h u-boot2010 config file
-----------------------------------------------------------------------
Summary of changes:
.../device/armadeus/apf27/apf27-u-boot-2010.03.h | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/buildroot/target/device/armadeus/apf27/apf27-u-boot-2010.03.h b/buildroot/target/device/armadeus/apf27/apf27-u-boot-2010.03.h
index 6299e78..d2aa1da 100644
--- a/buildroot/target/device/armadeus/apf27/apf27-u-boot-2010.03.h
+++ b/buildroot/target/device/armadeus/apf27/apf27-u-boot-2010.03.h
@@ -628,9 +628,10 @@
*/
#define CONFIG_FPGA CONFIG_SYS_SPARTAN3
//#define FPGA_DEBUG
-#define CONFIG_FPGA_COUNT 1
+#define CONFIG_FPGA_COUNT 2
#define CONFIG_FPGA_XILINX
#define CONFIG_FPGA_SPARTAN3
+#define CONFIG_FPGA_SPARTAN6
#define CONFIG_SYS_FPGA_WAIT 20000 /* 20 ms */
#define CONFIG_SYS_FPGA_PROG_FEEDBACK
#define CONFIG_SYS_FPGA_CHECK_CTRLC
hooks/post-receive
--
armadeus
|
|
From: jscheer <js...@us...> - 2011-01-13 10:21:43
|
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 2aa1ee416f5ff000dd868c986a35b99438fe600a (commit)
from fdc9b24e3e2f38eee48bc2c81545526c58039ce5 (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 2aa1ee416f5ff000dd868c986a35b99438fe600a
Author: Jeremie Scheer <jer...@ar...>
Date: Thu Jan 13 11:20:57 2011 +0100
[LINUX] Add Netfilter NAT modules in PPS Linux config.
[BUILDROOT] Add NAT Traversal support for IPSec in PPS config.
-----------------------------------------------------------------------
Summary of changes:
buildroot/configs/pps_defconfig | 4 +-
.../device/armadeus/pps/pps-linux-2.6.29.config | 45 ++++++++++++++++++--
buildroot/target/device/armadeus/pps/pps_defconfig | 4 +-
3 files changed, 45 insertions(+), 8 deletions(-)
diff --git a/buildroot/configs/pps_defconfig b/buildroot/configs/pps_defconfig
index 9b8861a..a0908a7 100644
--- a/buildroot/configs/pps_defconfig
+++ b/buildroot/configs/pps_defconfig
@@ -1,6 +1,6 @@
#
# Automatically generated make config: don't edit
-# Fri Nov 5 16:46:21 2010
+# Wed Jan 12 11:33:44 2011
#
BR2_HAVE_DOT_CONFIG=y
BR2_VERSION="2010.11-git"
@@ -667,7 +667,7 @@ BR2_PACKAGE_ETHTOOL=y
# BR2_PACKAGE_IPROUTE2 is not set
BR2_PACKAGE_IPSEC_TOOLS=y
BR2_PACKAGE_IPSEC_TOOLS_ADMINPORT=y
-# BR2_PACKAGE_IPSEC_TOOLS_NATT is not set
+BR2_PACKAGE_IPSEC_TOOLS_NATT=y
BR2_PACKAGE_IPSEC_TOOLS_FRAG=y
BR2_PACKAGE_IPSEC_TOOLS_STATS=y
# BR2_PACKAGE_IPSEC_TOOLS_READLINE is not set
diff --git a/buildroot/target/device/armadeus/pps/pps-linux-2.6.29.config b/buildroot/target/device/armadeus/pps/pps-linux-2.6.29.config
index 966293e..fef2fcb 100644
--- a/buildroot/target/device/armadeus/pps/pps-linux-2.6.29.config
+++ b/buildroot/target/device/armadeus/pps/pps-linux-2.6.29.config
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.29.6
-# Wed Dec 15 14:32:09 2010
+# Mon Jan 10 11:54:08 2011
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -388,19 +388,41 @@ CONFIG_BRIDGE_NETFILTER=y
#
# CONFIG_NETFILTER_NETLINK_QUEUE is not set
# CONFIG_NETFILTER_NETLINK_LOG is not set
-# CONFIG_NF_CONNTRACK is not set
+CONFIG_NF_CONNTRACK=m
+# CONFIG_NF_CT_ACCT is not set
+# CONFIG_NF_CONNTRACK_MARK is not set
+# CONFIG_NF_CONNTRACK_EVENTS is not set
+# CONFIG_NF_CT_PROTO_DCCP is not set
+# CONFIG_NF_CT_PROTO_SCTP is not set
+# CONFIG_NF_CT_PROTO_UDPLITE is not set
+# CONFIG_NF_CONNTRACK_AMANDA is not set
+# CONFIG_NF_CONNTRACK_FTP is not set
+# CONFIG_NF_CONNTRACK_H323 is not set
+# CONFIG_NF_CONNTRACK_IRC is not set
+# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
+# CONFIG_NF_CONNTRACK_PPTP is not set
+# CONFIG_NF_CONNTRACK_SANE is not set
+# CONFIG_NF_CONNTRACK_SIP is not set
+# CONFIG_NF_CONNTRACK_TFTP is not set
+# CONFIG_NF_CT_NETLINK is not set
CONFIG_NETFILTER_XTABLES=y
# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
# CONFIG_NETFILTER_XT_TARGET_MARK is not set
# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set
# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set
+# CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_CONNMARK is not set
+# CONFIG_NETFILTER_XT_MATCH_CONNTRACK is not set
# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
# CONFIG_NETFILTER_XT_MATCH_ESP is not set
# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_HELPER is not set
# CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set
# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
@@ -427,8 +449,9 @@ CONFIG_NETFILTER_XT_MATCH_STATE=m
#
# IP: Netfilter Configuration
#
-# CONFIG_NF_DEFRAG_IPV4 is not set
-# CONFIG_NF_CONNTRACK_IPV4 is not set
+CONFIG_NF_DEFRAG_IPV4=m
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
# CONFIG_IP_NF_QUEUE is not set
CONFIG_IP_NF_IPTABLES=m
# CONFIG_IP_NF_MATCH_ADDRTYPE is not set
@@ -439,6 +462,19 @@ CONFIG_IP_NF_FILTER=m
# CONFIG_IP_NF_TARGET_REJECT is not set
# CONFIG_IP_NF_TARGET_LOG is not set
# CONFIG_IP_NF_TARGET_ULOG is not set
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+# CONFIG_NF_NAT_SNMP_BASIC is not set
+# CONFIG_NF_NAT_FTP is not set
+# CONFIG_NF_NAT_IRC is not set
+# CONFIG_NF_NAT_TFTP is not set
+# CONFIG_NF_NAT_AMANDA is not set
+# CONFIG_NF_NAT_PPTP is not set
+# CONFIG_NF_NAT_H323 is not set
+# CONFIG_NF_NAT_SIP is not set
# CONFIG_IP_NF_MANGLE is not set
# CONFIG_IP_NF_RAW is not set
CONFIG_IP_NF_ARPTABLES=m
@@ -448,6 +484,7 @@ CONFIG_IP_NF_ARPFILTER=m
#
# IPv6: Netfilter Configuration
#
+# CONFIG_NF_CONNTRACK_IPV6 is not set
# CONFIG_IP6_NF_QUEUE is not set
# CONFIG_IP6_NF_IPTABLES is not set
# CONFIG_BRIDGE_NF_EBTABLES is not set
diff --git a/buildroot/target/device/armadeus/pps/pps_defconfig b/buildroot/target/device/armadeus/pps/pps_defconfig
index 159d2c8..4f5b902 100644
--- a/buildroot/target/device/armadeus/pps/pps_defconfig
+++ b/buildroot/target/device/armadeus/pps/pps_defconfig
@@ -1,6 +1,6 @@
#
# Automatically generated make config: don't edit
-# Tue Jan 4 15:50:13 2011
+# Wed Jan 12 11:33:44 2011
#
BR2_HAVE_DOT_CONFIG=y
BR2_VERSION="0.10.0-svn"
@@ -414,7 +414,7 @@ BR2_PACKAGE_ETHTOOL=y
# BR2_PACKAGE_IPROUTE2 is not set
BR2_PACKAGE_IPSEC_TOOLS=y
BR2_PACKAGE_IPSEC_TOOLS_ADMINPORT=y
-# BR2_PACKAGE_IPSEC_TOOLS_NATT is not set
+BR2_PACKAGE_IPSEC_TOOLS_NATT=y
BR2_PACKAGE_IPSEC_TOOLS_FRAG=y
BR2_PACKAGE_IPSEC_TOOLS_STATS=y
BR2_PACKAGE_IPSEC_TOOLS_IPV6=y
hooks/post-receive
--
armadeus
|
|
From: Julien B a. A. <ar...@us...> - 2011-01-11 18:50:17
|
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 fdc9b24e3e2f38eee48bc2c81545526c58039ce5 (commit)
via e7573c54151872510138013683b5f818a7a76022 (commit)
from 2f2f2e43b81f51cc5ad33ded7a732b7151eb4321 (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 fdc9b24e3e2f38eee48bc2c81545526c58039ce5
Merge: e7573c54151872510138013683b5f818a7a76022 2f2f2e43b81f51cc5ad33ded7a732b7151eb4321
Author: Julien Boibessot <jul...@ar...>
Date: Tue Jan 11 19:49:49 2011 +0100
Merge branch 'master' of ssh://artemys@armadeus.git.sourceforge.net/gitroot/armadeus/armadeus
commit e7573c54151872510138013683b5f818a7a76022
Author: Julien Boibessot <jul...@ar...>
Date: Tue Jan 11 19:48:58 2011 +0100
[LINUX] 2.6.36: activates LCD on APF27 (init pb remains) and cleanup APF9328 part
-----------------------------------------------------------------------
Summary of changes:
.../2.6.36/021-armadeus-apf9328.patch | 288 +++++++++-----------
.../2.6.36/281-apf27-armadeus-add_apf27.c.patch | 50 ++--
2 files changed, 161 insertions(+), 177 deletions(-)
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/021-armadeus-apf9328.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/021-armadeus-apf9328.patch
index fc89aa5..e2104b0 100644
--- a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/021-armadeus-apf9328.patch
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/021-armadeus-apf9328.patch
@@ -1,10 +1,12 @@
---- /dev/null 2010-11-28 19:42:11.148000001 +0100
-+++ b/arch/arm/mach-imx/apf9328.c 2010-12-19 11:31:56.000000000 +0100
-@@ -0,0 +1,588 @@
+Index: linux-2.6.36/arch/arm/mach-imx/apf9328.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.36/arch/arm/mach-imx/apf9328.c 2011-01-11 19:33:04.000000000 +0100
+@@ -0,0 +1,587 @@
+/*
+ * linux/arch/arm/mach-imx/apf9328.c
+ *
-+ * Copyright (c) 2005-2009 Armadeus systems
++ * Copyright (c) 2005-2011 Armadeus systems
+ * This work is based on scb9328.c from Sascha Hauer
+ *
+ * This program is free software; you can redistribute it and/or modify
@@ -86,12 +88,11 @@
+
+
+static int apf9328_pins[] = {
-+/* SPI0 */
++ /* SPI0 */
+ PC14_PF_SPI1_SCLK,
+ PC16_PF_SPI1_MISO,
+ PC17_PF_SPI1_MOSI,
+};
-+
+
+/*
+ * APF9328 has a DM9000 Ethernet controller
@@ -283,35 +284,35 @@
+
+static int uart_mxc_port0_init(struct platform_device *pdev)
+{
-+ return mxc_gpio_setup_multiple_pins(mxc_uart0_pins, ARRAY_SIZE(mxc_uart0_pins), "UART1");
++ return mxc_gpio_setup_multiple_pins(mxc_uart0_pins, ARRAY_SIZE(mxc_uart0_pins), "UART1");
+}
+
+static void uart_mxc_port0_exit(struct platform_device *pdev)
+{
-+ mxc_gpio_release_multiple_pins(mxc_uart0_pins, ARRAY_SIZE(mxc_uart0_pins));
++ mxc_gpio_release_multiple_pins(mxc_uart0_pins, ARRAY_SIZE(mxc_uart0_pins));
+}
+
+static struct imxuart_platform_data uart0_pdata = {
-+ .init = uart_mxc_port0_init,
-+ .exit = uart_mxc_port0_exit,
-+ .flags = 0,
++ .init = uart_mxc_port0_init,
++ .exit = uart_mxc_port0_exit,
++ .flags = 0,
+};
+
+static int mxc_uart1_pins[] = {
+ PB28_PF_UART2_CTS,
+ PB29_PF_UART2_RTS,
+ PB30_PF_UART2_TXD,
-+ PB31_PF_UART2_RXD
++ PB31_PF_UART2_RXD
+};
+
+static int uart_mxc_port1_init(struct platform_device *pdev)
+{
-+ return mxc_gpio_setup_multiple_pins(mxc_uart1_pins, ARRAY_SIZE(mxc_uart1_pins), "UART2");
++ return mxc_gpio_setup_multiple_pins(mxc_uart1_pins, ARRAY_SIZE(mxc_uart1_pins), "UART2");
+}
+
+static void uart_mxc_port1_exit(struct platform_device *pdev)
+{
-+ mxc_gpio_release_multiple_pins(mxc_uart1_pins, ARRAY_SIZE(mxc_uart1_pins));
++ mxc_gpio_release_multiple_pins(mxc_uart1_pins, ARRAY_SIZE(mxc_uart1_pins));
+}
+
+static struct imxuart_platform_data uart1_pdata = {
@@ -325,7 +326,7 @@
+#define MAX1027_CS (GPIO_PORTC + 15)
+
+static int apf9328_spi1_cs[] = {
-+ MAX1027_CS,
++ MAX1027_CS,
+ SPIDEV_CS,
+};
+
@@ -338,7 +339,7 @@
+#define TSC2102_CS (GPIO_PORTB + 17)
+
+static int apf9328_spi2_cs[] = {
-+ TSC2102_CS,
++ TSC2102_CS,
+ MCP251X_CS,
+};
+
@@ -474,7 +475,7 @@
+
+static int apf9328_i2c_init(struct platform_device *pdev)
+{
-+ return mxc_gpio_setup_multiple_pins(mxc_i2c_pins,
++ return mxc_gpio_setup_multiple_pins(mxc_i2c_pins,
+ ARRAY_SIZE(mxc_i2c_pins), "I2C");
+}
+
@@ -485,7 +486,7 @@
+}
+
+static const struct imxi2c_platform_data apf9328_i2c_data __initconst = {
-+ .bitrate = 100000,
++ .bitrate = 100000,
+ .init = apf9328_i2c_init,
+ .exit = apf9328_i2c_exit,
+};
@@ -510,12 +511,9 @@
+
+static void __init apf9328_init(void)
+{
-+ printk("--- Registering APF9328 ressources\n");
-+
+ mxc_gpio_setup_multiple_pins(apf9328_pins,
+ ARRAY_SIZE(apf9328_pins), "apf9328");
+
-+
+ imx1_add_imx_uart0(&uart0_pdata); /* console */
+ imx1_add_imx_uart1(&uart1_pdata);
+
@@ -538,8 +536,6 @@
+#endif
+ platform_add_devices(devices, ARRAY_SIZE(devices));
+ apf9328_baseboard_init();
-+
-+ printk("--- APF9328 ressources registered\n");
+}
+
+/*
@@ -550,7 +546,12 @@
+static struct map_desc apf9328_io_desc[] __initdata = {
+#ifdef CONFIG_MACH_APF9328_FPGA
+ /* FPGA Memory mapping */
-+ {.virtual = MX1_CS1_VIRT, .pfn = __phys_to_pfn(MX1_CS1_PHYS), .length = MX1_CS1_SIZE, .type = MT_DEVICE},
++ {
++ .virtual = MX1_CS1_VIRT,
++ .pfn = __phys_to_pfn(MX1_CS1_PHYS),
++ .length = MX1_CS1_SIZE,
++ .type = MT_DEVICE
++ },
+#endif
+};
+
@@ -589,9 +590,11 @@
+ .timer = &apf9328_timer,
+ .init_machine = apf9328_init,
+MACHINE_END
---- /dev/null 2010-11-28 19:42:11.148000001 +0100
-+++ b/arch/arm/mach-imx/apf9328_lcd_config.h 2010-12-19 11:20:34.000000000 +0100
-@@ -0,0 +1,355 @@
+Index: linux-2.6.36/arch/arm/mach-imx/apf9328_lcd_config.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.36/arch/arm/mach-imx/apf9328_lcd_config.h 2011-01-11 19:25:49.000000000 +0100
+@@ -0,0 +1,329 @@
+/*
+ *
+ * Armadeus LCD configuration file
@@ -605,30 +608,34 @@
+#ifndef APF_LCD_CONFIG_H
+#define APF_LCD_CONFIG_H
+
++#define IMX_NEEDS_DEPRECATED_SYMBOLS
+
+#ifdef CONFIG_FB_IMX
+
+#include <linux/delay.h>
-+#include <mach/gpio.h>
-+#include <linux/fb.h>
+
++#include <mach/gpio.h>
++#include <mach/imxfb.h>
+#ifdef CONFIG_ARCH_MX1
-+#include <mach/mx1.h>
-+#define LCDC_BASE_ADDR MX1_LCDC_BASE_ADDR
-+#define IO_ADDRESS MX1_IO_ADDRESS
++# include <mach/mx1.h>
++# define LCDC_BASE_ADDR MX1_LCDC_BASE_ADDR
++# define MXC_IO_ADDRESS MX1_IO_ADDRESS
++#else
++# include <mach/mx2x.h>
++# define LCDC_BASE_ADDR MX2x_LCDC_BASE_ADDR
++# define MXC_IO_ADDRESS(x) (IMX_IO_ADDRESS(x, MX2x_AIPI))
+#endif
++
+#define LCDISR_EOF (1 << 1)
+
+#ifdef CONFIG_MACH_APF9328
-+#define OPTREX_F51900_POWER_DOWN (GPIO_PORTD | 7) /* PD7_REV */
-+#define SHARP_LQ043_POWER_DOWN (GPIO_PORTD | 12) /* PD12_ACD_OE */
-+#define CONTRAST_LINE (GPIO_PORTD | 11) /* PD11_CONTRAST */
-+#endif
-+
-+#ifdef CONFIG_MACH_APF27
-+#define OPTREX_F51900_POWER_DOWN (GPIO_PORTA | 24) /* PA24_REV */
-+#define SHARP_LQ043_POWER_DOWN (GPIO_PORTA | 31) /* PA31_OE_ACD */
-+#define CONTRAST_LINE (GPIO_PORTA | 30) /* PA30_CONTRAST */
++# define OPTREX_F51900_POWER_DOWN (GPIO_PORTD | 7) /* PD7_REV */
++# define SHARP_LQ043_POWER_DOWN (GPIO_PORTD | 12) /* PD12_ACD_OE */
++# define CONTRAST_LINE (GPIO_PORTD | 11) /* PD11_CONTRAST */
++#elif defined(CONFIG_MACH_APF27)
++# define OPTREX_F51900_POWER_DOWN (GPIO_PORTA | 24) /* PA24_REV */
++# define SHARP_LQ043_POWER_DOWN (GPIO_PORTA | 31) /* PA31_OE_ACD */
++# define CONTRAST_LINE (GPIO_PORTA | 30) /* PA30_CONTRAST */
+#endif
+
+#define DEFAULT_DMA_SETTINGS (DMACR_BURST | DMACR_HM(8) | DMACR_TM(4))
@@ -644,8 +651,8 @@
+static void apf_lcd_power(int on)
+{
+ u32 isr;
-+ printk("apf_lcd_power\n");
-+ pr_debug("%s: %s\n", __func__, on ? "on":"off");
++
++ printk(KERN_DEBUG "%s: %s\n", __func__, on ? "on":"off");
+ isr = 0;
+#ifdef CONFIG_FB_IMX_OPTREX_F51900_CSTN
+ if (on)
@@ -659,10 +666,10 @@
+ mdelay(200); /* at least ten frames have to be processed before
+ enabling the display */
+ /* Waits end of current frame */
-+ isr = readl(IO_ADDRESS(LCDC_BASE_ADDR) + 0x40);
++ isr = readl(MXC_IO_ADDRESS(LCDC_BASE_ADDR) + 0x40);
+ printk("isr %08x\n", isr);
+ do {
-+ isr = readl(IO_ADDRESS(LCDC_BASE_ADDR) + 0x40);
++ isr = readl(MXC_IO_ADDRESS(LCDC_BASE_ADDR) + 0x40);
+ printk("isr %08x\n", isr);
+ udelay(1000);
+ pr_debug("%08x\n", isr);
@@ -675,13 +682,16 @@
+ mdelay(200); /* needs to wait 10 frames after DISP goes down
+ before shutting down LCDC (done in imxfb) */
+ }
++#elif defined(CONFIG_FB_IMX_CHIMEI_LW700AT9003_TFT)
++ /* No LCD powerdown yet */
+#else
++ /* All other cases: use CONTRAST as PWDN */
+ if (on) {
+ gpio_set_value(CONTRAST_LINE, 0);
+ } else {
+ gpio_set_value(CONTRAST_LINE, 1);
+ }
-+#endif /* CONFIG_FB_IMX_OPTREX_F51900_CSTN */
++#endif
+}
+
+/*
@@ -691,27 +701,22 @@
+{
+ u32 pwmr;
+
-+ pr_debug("%s: %s\n", __func__, on ? "on":"off");
++ printk(KERN_DEBUG "%s: %s\n", __func__, on ? "on":"off");
+
-+ pwmr = readl(IO_ADDRESS(LCDC_BASE_ADDR) + 0x2c);
-+ printk("pwmr %08x\n", pwmr);
++ pwmr = readl(MXC_IO_ADDRESS(LCDC_BASE_ADDR) + 0x2c);
++ printk(KERN_DEBUG "pwmr: %08x\n", pwmr);
+
+#ifdef CONFIG_MACH_APF9328
+ if (pwmr)
+ mxc_gpio_mode(PD11_PF_CONTRAST);
+#endif
-+ if (on) {
-+ pwmr |= PWMR_CC_EN;
-+ } else {
-+ pwmr &= ~PWMR_CC_EN;
-+ }
-+ writel(pwmr, IO_ADDRESS(LCDC_BASE_ADDR) + 0x2c);
+}
-+static struct imx_fb_videomode mde[] = {
-+ [0]={
-+#ifdef CONFIG_FB_IMX_SHARP_LQ043_TFT
++
++
++static struct imx_fb_videomode apf_fb_modes[] = {
++ { /* Default one */
+ .mode = {
-+ .name = "Sharp-LQ043",
++ .name = "Sharp-LQ043",
+ .refresh = 60,
+ .xres = 480,
+ .yres = 272,
@@ -723,10 +728,12 @@
+ .hsync_len = 41,
+ .vsync_len = 10,
+ },
-+ .pcr = PCR_TFT | PCR_COLOR | PCR_PBSIZ_8 | PCR_BPIX_16 | PCR_FLMPOL | PCR_LPPOL |
-+ PCR_CLKPOL | PCR_SCLKIDLE | PCR_SCLK_SEL | PCR_PCD(5),
-+ .bpp = 16,
-+#elif CONFIG_FB_IMX_MICROTIPS_MTF_T035_TFT
++ .pcr = PCR_TFT | PCR_COLOR | PCR_PBSIZ_8 | PCR_BPIX_16 |
++ PCR_FLMPOL | PCR_LPPOL | PCR_CLKPOL | PCR_SCLKIDLE |
++ PCR_SCLK_SEL | PCR_PCD(5),
++ .bpp = 16,
++ },
++ {
+ .mode = {
+ .name = "Microtips-T035",
+ .refresh = 60,
@@ -740,10 +747,12 @@
+ .hsync_len = 31,
+ .vsync_len = 3,
+ },
-+ .pcr = PCR_TFT | PCR_COLOR | PCR_PBSIZ_8 | PCR_BPIX_16 | PCR_FLMPOL | PCR_LPPOL |
-+ PCR_SCLKIDLE | PCR_SCLK_SEL | PCR_PCD(7),
-+ .bpp = 16,
-+#elif CONFIG_FB_IMX_SHARP_LQ057_TFT
++ .pcr = PCR_TFT | PCR_COLOR | PCR_PBSIZ_8 | PCR_BPIX_16 |
++ PCR_FLMPOL | PCR_LPPOL | PCR_SCLKIDLE | PCR_SCLK_SEL |
++ PCR_PCD(7),
++ .bpp = 16,
++ },
++ {
+ .mode = {
+ .name = "Sharp-LQ057",
+ .refresh = 60,
@@ -757,10 +766,11 @@
+ .hsync_len = 9,
+ .vsync_len = 2,
+ },
-+ .bpp = 16,
-+ .pcr = PCR_TFT | PCR_COLOR | PCR_PBSIZ_8 | PCR_BPIX_16 | /*PCR_CLKPOL |*/
-+ PCR_SCLKIDLE | PCR_SCLK_SEL | PCR_PCD(9),
-+#elif CONFIG_FB_IMX_OPTREX_F51900_CSTN
++ .bpp = 16,
++ .pcr = PCR_TFT | PCR_COLOR | PCR_PBSIZ_8 | PCR_BPIX_16 |
++ PCR_SCLKIDLE | PCR_SCLK_SEL | PCR_PCD(9),
++ },
++ {
+ .mode = {
+ .name = "Optrex-F51900",
+ .refresh = 60,
@@ -774,57 +784,49 @@
+ .hsync_len = 2,
+ .vsync_len = 2,
+ },
-+ .bpp = 8,
-+ .pcr = PCR_COLOR | PCR_PBSIZ_8 | PCR_BPIX_8 | PCR_ACD(5) |
-+ PCR_END_BYTE_SWAP | PCR_PCD(3),
-+#elif CONFIG_FB_IMX_MOTOROLA_A910_TFT
++ .bpp = 8,
++ .pcr = PCR_COLOR | PCR_PBSIZ_8 | PCR_BPIX_8 | PCR_ACD(5) |
++ PCR_END_BYTE_SWAP | PCR_PCD(3),
++ },
++ {
+ .mode = {
-+ .name = "Motorola-A910",
++ .name = "Chimei-LW700AT9003",
+ .refresh = 60,
-+ .xres = 240,
-+ .yres = 320,
-+ .pixclock = 158730, /* picoS -> ~6.3MHz */
-+ .left_margin = 9,
-+ .upper_margin = 2,
-+ .right_margin = 27,
-+ .lower_margin = 4,
-+ .hsync_len = 9,
-+ .vsync_len = 2,
++ .xres = 800,
++ .yres = 480,
++ .pixclock = 30303, /* picoS */
++ .left_margin = 96,
++ .right_margin = 96, /* at least 3 & 1 */
++ .upper_margin = 0x14,
++ .lower_margin = 0x15,
++ .hsync_len = 64,
++ .vsync_len = 4,
+ },
-+ .bpp = 16,
-+ .pcr = PCR_TFT | PCR_COLOR | PCR_PBSIZ_8 | PCR_BPIX_16 | PCR_CLKPOL |
-+ PCR_SCLKIDLE | PCR_SCLK_SEL | PCR_PCD(9),
-+#endif
++ .bpp = 16,
++ .pcr = 0xfae80083, /*PCR_TFT | PCR_COLOR | PCR_PBSIZ_8 | PCR_BPIX_16 |
++ PCR_FLMPOL | PCR_LPPOL | PCR_SCLKIDLE | PCR_CLKPOL |
++ PCR_SCLK_SEL | PCR_PCD(3),*/
+ },
+};
+
-+#ifdef CONFIG_MACH_APF9328
-+static struct imx_fb_platform_data apf9328_fb_info /*__initdata*/ = {
-+#endif
-+ .mode = mde,
-+ .num_modes = ARRAY_SIZE(mde),
-+#ifdef CONFIG_FB_IMX_SHARP_LQ043_TFT
-+ .pwmr = 0x000003ff, /* Contrast with PWM @ Pixel clock / 256, max width by default */
++static struct imx_fb_platform_data apf_fb_data /*__initdata*/ = {
++ .mode = apf_fb_modes,
++ .num_modes = ARRAY_SIZE(apf_fb_modes),
+ .dmacr = DEFAULT_DMA_SETTINGS,
-+ .backlight_power= apf_lcd_backlight_power,
+ .lcd_power = apf_lcd_power,
-+#elif CONFIG_FB_IMX_MICROTIPS_MTF_T035_TFT
-+ .pwmr = 0x00000150, /* Contrast with PWM @ Line Pulse / 256, medium width by default */
-+ .dmacr = DEFAULT_DMA_SETTINGS,
+ .backlight_power= apf_lcd_backlight_power,
-+ .lcd_power = apf_lcd_power,
-+#elif CONFIG_FB_IMX_SHARP_LQ057_TFT
++#ifdef CONFIG_FB_IMX_SHARP_LQ043_TFT
++ .pwmr = 0x000003ff, /* Contrast with PWM @ Pixel clock / 256, max width by default */
++#elif defined(CONFIG_FB_IMX_MICROTIPS_MTF_T035_TFT)
++ .pwmr = 0x00000150, /* Contrast with PWM @ Line Pulse / 256, medium width by default */
++#elif defined(CONFIG_FB_IMX_SHARP_LQ057_TFT)
+ .pwmr = 0, /* No contrast management */
-+ .dmacr = DEFAULT_DMA_SETTINGS,
-+ .lcd_power = apf_lcd_power,
-+#elif CONFIG_FB_IMX_OPTREX_F51900_CSTN
-+ .dmacr = DEFAULT_DMA_SETTINGS,
++#elif defined(CONFIG_FB_IMX_OPTREX_F51900_CSTN)
+ .pwmr = 0, /* No contrast management */
-+ .lcd_power = apf_lcd_power,
-+#elif CONFIG_FB_IMX_MOTOROLA_A910_TFT
-+ .dmacr = DEFAULT_DMA_SETTINGS,
++#elif defined(CONFIG_FB_IMX_MOTOROLA_A910_TFT)
+ .pwmr = 0, /* No contrast management */
-+ .lcd_power = apf_lcd_power,
++#elif defined(CONFIG_FB_IMX_CHIMEI_LW700AT9003_TFT)
++ .pwmr = 0x00a903ff, /* Contrast with PWM @ Pixel clock / 256, max width by default */
+#else
+#error Please define a imx_fb_platform_data structure with your LCD parameters
+#endif
@@ -836,55 +838,30 @@
+ .exit = apf27_fb_exit,
+#endif
+};
-+static struct resource imxfb_resources[] = {
-+ [0] = {
-+ .start = MX1_LCDC_BASE_ADDR,
-+ .end = MX1_LCDC_BASE_ADDR +0xFF,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = MX1_LCDC_INT,
-+ .end = MX1_LCDC_INT,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
+
-+static u64 fb_dma_mask = ~(u64)0;
-+
-+static struct platform_device imxfb_device = {
-+ .name = "imx-fb",
-+ .id = 0,
-+ .dev = {
-+ //.platform_data = &apf9328_fb_info,
-+ .dma_mask = &fb_dma_mask,
-+ .coherent_dma_mask = 0xffffffff,
-+ },
-+ .num_resources = ARRAY_SIZE(imxfb_resources),
-+ .resource = imxfb_resources,
-+};
+/*
+ * Configure all GPIOs needed by LCDs
+ */
+#ifdef CONFIG_MACH_APF9328
+static int apf9328_fb_init(struct platform_device *pdev)
+{
-+ struct imx_fb_platform_data *fb_inf = &apf9328_fb_info;
++ struct imx_fb_platform_data *fb_inf = &apf_fb_data;
+ int width;
-+ printk("apf9328_fb_init\n");
++
+ pr_debug("%s\n", __func__);
+
-+#ifdef CONFIG_FB_IMX_OPTREX_F51900_CSTN
++# ifdef CONFIG_FB_IMX_OPTREX_F51900_CSTN
+ gpio_set_value(OPTREX_F51900_POWER_DOWN, 1); /* Initializes it High */
+ mxc_gpio_mode(OPTREX_F51900_POWER_DOWN | GPIO_OUT | GPIO_DR);
-+#endif
-+#ifdef CONFIG_FB_IMX_SHARP_LQ043_TFT
++# endif
++# ifdef CONFIG_FB_IMX_SHARP_LQ043_TFT
+ /* ACD_OE (SHARP_LQ043_POWER_DOWN) used as power down signal */
+ gpio_set_value(SHARP_LQ043_POWER_DOWN, 0); /* Initializes it Low */
+ mxc_gpio_mode(SHARP_LQ043_POWER_DOWN | GPIO_OUT | GPIO_GPIO);//1<<16 | 3<<10);
-+#else
++# else
+ /* otherwise use ACD_OE as standard LCD controller signal */
+ mxc_gpio_mode(PD12_PF_ACD_OE);
-+#endif
++# endif
+
+ if (fb_inf->mode->pcr & PCR_TFT)
+ width = 16;
@@ -940,15 +917,17 @@
+}
+static void apf9328_init_lcd(void)
+{
-+ mxc_register_device(&imxfb_device, &apf9328_fb_info);
++ mxc_register_device(&mxc_fb_device, &apf_fb_data);
+}
+#endif /* CONFIG_MACH_APF9328 */
+
+#endif /* CONFIG_FB_IMX */
+
+#endif /* APF_LCD_CONFIG_H */
---- /dev/null 2010-11-28 19:42:11.148000001 +0100
-+++ b/arch/arm/plat-mxc/include/mach/board-apf9328.h 2010-12-19 11:20:34.000000000 +0100
+Index: linux-2.6.36/arch/arm/plat-mxc/include/mach/board-apf9328.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.36/arch/arm/plat-mxc/include/mach/board-apf9328.h 2011-01-11 10:22:59.000000000 +0100
@@ -0,0 +1,71 @@
+/*
+ * linux/include/asm-arm/arch-imx/apf9328.h
@@ -1021,14 +1000,16 @@
+#endif
+
+#endif /* __ASM_ARCH_APF9328_H */
---- /dev/null 2010-11-28 19:42:11.148000001 +0100
-+++ b/arch/arm/mach-imx/apf9328-dev.c 2010-12-19 11:34:40.000000000 +0100
-@@ -0,0 +1,326 @@
+Index: linux-2.6.36/arch/arm/mach-imx/apf9328-dev.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.36/arch/arm/mach-imx/apf9328-dev.c 2011-01-11 19:37:25.000000000 +0100
+@@ -0,0 +1,325 @@
+/*
-+ * linux/arch/arm/mach-imx/apf9328-dev.c
++ * apf9328-dev.c
+ * Declares hardware present on APF9328_DevLight or DevFull boards
+ *
-+ * Copyright (c) 2009 Armadeus systems
++ * Copyright (c) 2009-2011 Armadeus systems
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
@@ -1278,7 +1259,7 @@
+ .max_speed_hz = 8000000, /* 8MHz */
+ .bus_num = 0, /* SPI1 */
+ .mode = SPI_MODE_0,
-+ .chip_select = 1,
++ .chip_select = 1,
+ .platform_data = &apf9328_spidev_config,
+},
+#endif /* CONFIG_SPI_SPIDEV */
@@ -1318,7 +1299,8 @@
+
+void __init apf9328_baseboard_init(void)
+{
-+ printk(" Registering APF9328_Dev ressources:");
++ printk(" APF9328_Dev\n");
++
+ /* Initializes serial port 2 GPIOs */
+ mxc_gpio_mode(PB30_PF_UART2_TXD);
+ mxc_gpio_mode(PB31_PF_UART2_RXD);
@@ -1346,7 +1328,5 @@
+ mxc_gpio_mode(GPIO_PORTB | 17 | GPIO_GPIO | GPIO_OUT);
+ spi_register_board_info(spi_dev_board_info, ARRAY_SIZE(spi_dev_board_info));
+#endif
-+
-+ printk(" done\n");
+}
+
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/281-apf27-armadeus-add_apf27.c.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/281-apf27-armadeus-add_apf27.c.patch
index fd79844..e7a4ad4 100644
--- a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/281-apf27-armadeus-add_apf27.c.patch
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/281-apf27-armadeus-add_apf27.c.patch
@@ -9,7 +9,7 @@ Signed-off-by: Eric Jarrige <eri...@ar...>
Index: linux-2.6.36/arch/arm/mach-imx/apf27.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.36/arch/arm/mach-imx/apf27.c 2011-01-10 17:50:27.000000000 +0100
++++ linux-2.6.36/arch/arm/mach-imx/apf27.c 2011-01-11 10:24:01.000000000 +0100
@@ -0,0 +1,752 @@
+ /*
+ * apf27.c
@@ -356,13 +356,13 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27.c
+__setup("otg_mode=", apf27_otg_mode);
+*/
+#if defined(CONFIG_USB_ULPI)
-+static struct mxc_usbh_platform_data otg_pdata = {
++static struct mxc_usbh_platform_data otg_pdata __initdata = {
+ .portsc = MXC_EHCI_MODE_ULPI,
+ .flags = MXC_EHCI_INTERFACE_DIFF_UNI,
+};
+#endif
+
-+static struct fsl_usb2_platform_data otg_device_pdata = {
++static struct fsl_usb2_platform_data otg_device_pdata __initconst = {
+ .operating_mode = FSL_USB2_DR_DEVICE,
+ .phy_mode = FSL_USB2_PHY_ULPI,
+};
@@ -714,10 +714,10 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27.c
+ ULPI_OTG_DRVVBUS | ULPI_OTG_DRVVBUS_EXT);
+
+ mxc_register_device(&mxc_otg_host, &otg_pdata);
-+ } else {
-+ mxc_register_device(&mxc_otg_udc_device, &otg_device_pdata);
+ }
+#endif
++ if (!otg_mode_host)
++ mxc_register_device(&mxc_otg_udc_device, &otg_device_pdata);
+
+#ifdef CONFIG_I2C
+ imx27_add_i2c_imx1(&apf27_i2c_1_data);
@@ -766,8 +766,8 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27.c
Index: linux-2.6.36/arch/arm/mach-imx/apf27-dev.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.36/arch/arm/mach-imx/apf27-dev.c 2011-01-10 17:50:09.000000000 +0100
-@@ -0,0 +1,951 @@
++++ linux-2.6.36/arch/arm/mach-imx/apf27-dev.c 2011-01-11 11:33:58.000000000 +0100
+@@ -0,0 +1,950 @@
+ /*
+ * apf27-dev.c
+ * Support for AFP27 module's development baseboard
@@ -855,8 +855,7 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27-dev.c
+#include "devices.h"
+//#include "crm_regs.h"
+
-+
-+#ifdef CONFIG_FB_MXC
++#if defined(CONFIG_FB_MXC) || defined(CONFIG_FB_IMX)
+extern void apf27_lcd_init(void);
+#endif
+#ifdef CONFIG_MACH_APF27_DEV_EXT
@@ -1722,8 +1721,8 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27-dev.c
Index: linux-2.6.36/arch/arm/mach-imx/apf27-lcd.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.36/arch/arm/mach-imx/apf27-lcd.c 2011-01-07 09:43:59.000000000 +0100
-@@ -0,0 +1,222 @@
++++ linux-2.6.36/arch/arm/mach-imx/apf27-lcd.c 2011-01-11 16:56:16.000000000 +0100
+@@ -0,0 +1,227 @@
+/*
+ * apf27-lcd.c
+ *
@@ -1837,7 +1836,7 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27-lcd.c
+ PA24_PF_REV,
+ PA25_PF_CLS,
+#ifdef LCD_USES_PS_AS_GPIO
-+ (GPIO_PORTA | 26 | GPIO_OUT| GPIO_GPIO),
++ (GPIO_PORTA | 26 | GPIO_OUT | GPIO_GPIO),
+#else
+ PA26_PF_PS,
+#endif
@@ -1845,12 +1844,12 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27-lcd.c
+ PA28_PF_HSYNC,
+ PA29_PF_VSYNC,
+#ifdef LCD_USES_CONTRAST_AS_GPIO
-+ (GPIO_PORTA | 30 | GPIO_OUT| GPIO_GPIO),
++ (GPIO_PORTA | 30 | GPIO_OUT | GPIO_GPIO),
+#else
+ PA30_PF_CONTRAST,
+#endif
+#ifdef LCD_USES_OE_ACD_AS_GPIO
-+ (GPIO_PORTA | 31 | GPIO_OUT| GPIO_GPIO)
++ (GPIO_PORTA | 31 | GPIO_OUT | GPIO_GPIO)
+#else
+ PA31_PF_OE_ACD
+#endif
@@ -1872,24 +1871,29 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27-lcd.c
+ return mxc_gpio_setup_multiple_pins(mxc_lcd_pins, ARRAY_SIZE(mxc_lcd_pins), "LCD");
+}
+
-+static int apf27_fb_exit(struct platform_device *pdev)
++#ifdef CONFIG_FB_MXC
++static int
++#else
++static void
++#endif
++apf27_fb_exit(struct platform_device *pdev)
+{
+ mxc_gpio_release_multiple_pins(mxc_lcd_pins, ARRAY_SIZE(mxc_lcd_pins));
+
++#ifdef CONFIG_FB_MXC
+ return 0;
++#endif
+}
+
+/* Freescale driver */
+#ifdef CONFIG_FB_MXC
-+static struct mxc_fb_platform_data apf27_fb_data = {
++static struct mxc_fb_platform_data apf_fb_data = {
+ .mode = LCD_NAME,
+ .init = apf27_fb_init,
+ .exit = apf27_fb_exit,
+};
-+#endif
-+
+/* Mainline driver */
-+#ifdef CONFIG_FB_IMX
++#elif CONFIG_FB_IMX
+#include "../mach-imx/apf9328_lcd_config.h"
+#endif
+
@@ -1942,14 +1946,14 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27-lcd.c
+ platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
+#endif
+#if defined(CONFIG_FB_MXC) || defined(CONFIG_FB_IMX)
-+ mxc_register_device(&mxc_fb_device, &apf27_fb_data);
++ mxc_register_device(&mxc_fb_device, &apf_fb_data);
+#endif
+}
+
Index: linux-2.6.36/arch/arm/mach-imx/apf27-dev-ext-apw.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.36/arch/arm/mach-imx/apf27-dev-ext-apw.c 2011-01-07 09:43:59.000000000 +0100
++++ linux-2.6.36/arch/arm/mach-imx/apf27-dev-ext-apw.c 2011-01-11 10:24:01.000000000 +0100
@@ -0,0 +1,190 @@
+ /*
+ * apf27-dev-ext-apw.c
@@ -2143,8 +2147,8 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27-dev-ext-apw.c
+
Index: linux-2.6.36/arch/arm/plat-mxc/include/mach/uncompress.h
===================================================================
---- linux-2.6.36.orig/arch/arm/plat-mxc/include/mach/uncompress.h 2010-10-20 22:30:22.000000000 +0200
-+++ linux-2.6.36/arch/arm/plat-mxc/include/mach/uncompress.h 2011-01-10 17:48:42.000000000 +0100
+--- linux-2.6.36.orig/arch/arm/plat-mxc/include/mach/uncompress.h 2011-01-11 10:22:48.000000000 +0100
++++ linux-2.6.36/arch/arm/plat-mxc/include/mach/uncompress.h 2011-01-11 19:26:54.000000000 +0100
@@ -81,6 +81,7 @@
case MACH_TYPE_MX21ADS:
case MACH_TYPE_PCA100:
hooks/post-receive
--
armadeus
|
|
From: Fabien M <fa...@us...> - 2011-01-11 11:10:30
|
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 2f2f2e43b81f51cc5ad33ded7a732b7151eb4321 (commit)
via 82a2e68c25e2a6449b8c3ac92faec3ede4da7266 (commit)
from 9f2983f0d32f190ed0b232ec84619fb37951bc84 (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 2f2f2e43b81f51cc5ad33ded7a732b7151eb4321
Merge: 82a2e68c25e2a6449b8c3ac92faec3ede4da7266 9f2983f0d32f190ed0b232ec84619fb37951bc84
Author: Fabien Marteau <fab...@ar...>
Date: Tue Jan 11 12:08:31 2011 +0100
Merge branch 'master' of ssh://armadeus.git.sourceforge.net/gitroot/armadeus/armadeus
commit 82a2e68c25e2a6449b8c3ac92faec3ede4da7266
Author: Fabien Marteau <fab...@ar...>
Date: Tue Jan 11 12:08:13 2011 +0100
[U-BOOT][2010.03] fix second load operator patch for sp_vision extension card
-----------------------------------------------------------------------
Summary of changes:
.../u-boot/u-boot-2010.03-321-add_spartan6.patch | 28 +-
...oot-2010.03-322-fpga_second_load_operator.patch | 523 +++++++++++++++++++-
2 files changed, 522 insertions(+), 29 deletions(-)
diff --git a/buildroot/target/u-boot/u-boot-2010.03-321-add_spartan6.patch b/buildroot/target/u-boot/u-boot-2010.03-321-add_spartan6.patch
index a0678c5..29675fd 100644
--- a/buildroot/target/u-boot/u-boot-2010.03-321-add_spartan6.patch
+++ b/buildroot/target/u-boot/u-boot-2010.03-321-add_spartan6.patch
@@ -1,7 +1,7 @@
Index: u-boot-2010.03/include/spartan6.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ u-boot-2010.03/include/spartan6.h 2011-01-06 11:38:23.000000000 +0100
++++ u-boot-2010.03/include/spartan6.h 2011-01-06 15:20:12.000000000 +0100
@@ -0,0 +1,132 @@
+/*
+ * (C) Copyright 2010-2011 Fabien Marteau <fab...@ar...>
@@ -138,7 +138,7 @@ Index: u-boot-2010.03/include/spartan6.h
Index: u-boot-2010.03/drivers/fpga/spartan6.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ u-boot-2010.03/drivers/fpga/spartan6.c 2011-01-06 11:50:51.000000000 +0100
++++ u-boot-2010.03/drivers/fpga/spartan6.c 2011-01-06 12:09:47.000000000 +0100
@@ -0,0 +1,538 @@
+/*
+ * (C) Copyright 2010 Fabien Marteau <fab...@ar...>
@@ -680,8 +680,8 @@ Index: u-boot-2010.03/drivers/fpga/spartan6.c
+#endif
Index: u-boot-2010.03/drivers/fpga/Makefile
===================================================================
---- u-boot-2010.03.orig/drivers/fpga/Makefile 2011-01-06 11:38:21.000000000 +0100
-+++ u-boot-2010.03/drivers/fpga/Makefile 2011-01-06 11:38:23.000000000 +0100
+--- u-boot-2010.03.orig/drivers/fpga/Makefile 2010-03-31 23:54:39.000000000 +0200
++++ u-boot-2010.03/drivers/fpga/Makefile 2011-01-06 12:09:47.000000000 +0100
@@ -29,6 +29,7 @@
COBJS-y += fpga.o
COBJS-$(CONFIG_FPGA_SPARTAN2) += spartan2.o
@@ -692,8 +692,8 @@ Index: u-boot-2010.03/drivers/fpga/Makefile
ifdef CONFIG_FPGA_ALTERA
Index: u-boot-2010.03/include/xilinx.h
===================================================================
---- u-boot-2010.03.orig/include/xilinx.h 2011-01-06 11:38:21.000000000 +0100
-+++ u-boot-2010.03/include/xilinx.h 2011-01-06 11:48:43.000000000 +0100
+--- u-boot-2010.03.orig/include/xilinx.h 2010-03-31 23:54:39.000000000 +0200
++++ u-boot-2010.03/include/xilinx.h 2011-01-06 15:20:12.000000000 +0100
@@ -33,10 +33,12 @@
#define CONFIG_SYS_VIRTEX_E CONFIG_SYS_FPGA_DEV( 0x2 )
#define CONFIG_SYS_VIRTEX2 CONFIG_SYS_FPGA_DEV( 0x4 )
@@ -717,8 +717,8 @@ Index: u-boot-2010.03/include/xilinx.h
Index: u-boot-2010.03/README
===================================================================
---- u-boot-2010.03.orig/README 2011-01-06 11:38:21.000000000 +0100
-+++ u-boot-2010.03/README 2011-01-06 11:38:23.000000000 +0100
+--- u-boot-2010.03.orig/README 2010-03-31 23:54:39.000000000 +0200
++++ u-boot-2010.03/README 2011-01-06 12:09:47.000000000 +0100
@@ -1639,7 +1639,7 @@
CONFIG_FPGA_<family>
@@ -728,3 +728,15 @@ Index: u-boot-2010.03/README
CONFIG_FPGA_COUNT
+Index: u-boot-2010.03/drivers/fpga/xilinx.c
+===================================================================
+--- u-boot-2010.03.orig/drivers/fpga/xilinx.c 2011-01-06 15:20:34.000000000 +0100
++++ u-boot-2010.03/drivers/fpga/xilinx.c 2011-01-06 15:20:55.000000000 +0100
+@@ -31,6 +31,7 @@
+ #include <virtex2.h>
+ #include <spartan2.h>
+ #include <spartan3.h>
++#include <spartan6.h>
+
+ #if 0
+ #define FPGA_DEBUG
diff --git a/buildroot/target/u-boot/u-boot-2010.03-322-fpga_second_load_operator.patch b/buildroot/target/u-boot/u-boot-2010.03-322-fpga_second_load_operator.patch
index ef412dc..a6f71a1 100644
--- a/buildroot/target/u-boot/u-boot-2010.03-322-fpga_second_load_operator.patch
+++ b/buildroot/target/u-boot/u-boot-2010.03-322-fpga_second_load_operator.patch
@@ -1,7 +1,7 @@
Index: u-boot-2010.03/board/armadeus/apf27/fpga.c
===================================================================
---- u-boot-2010.03.orig/board/armadeus/apf27/fpga.c 2011-01-06 11:44:48.000000000 +0100
-+++ u-boot-2010.03/board/armadeus/apf27/fpga.c 2011-01-06 11:44:54.000000000 +0100
+--- u-boot-2010.03.orig/board/armadeus/apf27/fpga.c 2011-01-11 11:38:53.000000000 +0100
++++ u-boot-2010.03/board/armadeus/apf27/fpga.c 2011-01-11 11:47:52.000000000 +0100
@@ -33,6 +33,7 @@
#include <config.h>
#include "fpga.h"
@@ -10,7 +10,7 @@ Index: u-boot-2010.03/board/armadeus/apf27/fpga.c
#define GPIO_PORT(x) ((x & GPIO_PORT_MASK) >> GPIO_PORT_SHIFT)
#define GPIO_SET(x) writel(readl(&gpregs->port[GPIO_PORT(x)].dr) | (1 << (x & GPIO_PIN_MASK)), \
-@@ -67,21 +68,48 @@
+@@ -67,21 +68,79 @@
fpga_wr_fn,
fpga_rdata_fn,
fpga_wdata_fn,
@@ -20,6 +20,7 @@ Index: u-boot-2010.03/board/armadeus/apf27/fpga.c
fpga_post_fn,
};
++#if defined(CONFIG_FPGA_SPARTAN6)
+Xilinx_Spartan6_Slave_SelectMap_fns fpga_second_fns= {
+ fpga_spartan6_pre_fn,
+ fpga_spartan6_pgm_fn,
@@ -34,8 +35,22 @@ Index: u-boot-2010.03/board/armadeus/apf27/fpga.c
+ fpga_spartan6_busy_fn,
+ fpga_spartan6_abort_fn,
+ fpga_spartan6_post_fn,
++};
++#endif /* CONFIG_FPGA_SPARTAN6 */
++
++#if defined(CONFIG_FPGA_SPARTAN6)
++struct sp_vision_struct {
++ uint32_t fpga_offset;
++ int ip_addr;
++ int ip_id;
++};
+
++static struct sp_vision_struct sp_vision = {
++ .fpga_offset = 0,
++ .ip_addr = 0,
++ .ip_id = 0,
+};
++#endif
+
Xilinx_desc fpga[CONFIG_FPGA_COUNT] = {
{Xilinx_Spartan3,
@@ -43,29 +58,46 @@ Index: u-boot-2010.03/board/armadeus/apf27/fpga.c
1196128l/8,
(void *) &fpga_fns,
- 0}
-+ 0},
++ 0,NULL},
++#if defined(CONFIG_FPGA_SPARTAN6)
+ {Xilinx_Spartan6,
+ slave_selectmap,
+ XILINX_XC6SLX45_SIZE,
-+ (void *) &fpga_fns,
++ (void *) &fpga_second_fns,
+ 0xD6000000l,
-+ 0, 0,
-+ 1}
++ 0, 0, 1,
++ &sp_vision}
++#endif /* CONFIG_FPGA_SPARTAN6 */
};
++/* get fpga descriptor in fpga[] tabular
++ * with cookie param */
++Xilinx_desc *apf27_fpga_get_desc ( int cookie)
++{
++ int i;
++ for(i=0; i<CONFIG_FPGA_COUNT; i++)
++ {
++ if (fpga[i].cookie == cookie)
++ return &fpga[i];
++ }
++ return NULL;
++}
++
+/*******************************************
+ * SPARTAN3 APF27 configuration functions *
+ *******************************************/
++
/*
- * nitialize GPIO port B before download
+ * Initialize GPIO port B before download
*/
int
fpga_pre_fn (int cookie)
-@@ -264,4 +292,228 @@
+@@ -264,4 +323,228 @@
return lout;
}
++#if defined(CONFIG_FPGA_SPARTAN6)
+/**********************************************
+* SPARTAN6 sp_vision configuration functions *
+***********************************************/
@@ -244,7 +276,7 @@ Index: u-boot-2010.03/board/armadeus/apf27/fpga.c
+ int config;
+ Xilinx_desc *desc = apf27_fpga_get_desc(cookie);
+
-+ *((unsigned short*)SELECTMAP_DATA_REG) = data&0x00ff;
++ *((volatile unsigned short*)SELECTMAP_DATA_REG) = data&0x00ff;
+
+ return data;
+}
@@ -269,8 +301,6 @@ Index: u-boot-2010.03/board/armadeus/apf27/fpga.c
+ uint16_t status;
+ Xilinx_desc *desc = apf27_fpga_get_desc(cookie);
+
-+// PRINTF ("%s:%d: DONE check %s", __FUNCTION__, __LINE__,
-+// GPIO_READ(CFG_FPGA_DONE)?"high":"low");
+ status = *((volatile uint16_t *)SELECTMAP_STATUS_REG); /* read config */
+
+ return (((status&(1<<SELECTMAP_STATUS_BUSY))!=0)?0:1);
@@ -288,13 +318,14 @@ Index: u-boot-2010.03/board/armadeus/apf27/fpga.c
+
+ return cookie;
+}
++#endif /* CONFIG_FPGA_SPARTAN3 */
+
+
#endif /* CONFIG_FPGA */
Index: u-boot-2010.03/board/armadeus/apf27/fpga.h
===================================================================
---- u-boot-2010.03.orig/board/armadeus/apf27/fpga.h 2011-01-06 11:44:48.000000000 +0100
-+++ u-boot-2010.03/board/armadeus/apf27/fpga.h 2011-01-06 11:44:54.000000000 +0100
+--- u-boot-2010.03.orig/board/armadeus/apf27/fpga.h 2011-01-11 11:38:53.000000000 +0100
++++ u-boot-2010.03/board/armadeus/apf27/fpga.h 2011-01-11 11:39:56.000000000 +0100
@@ -37,3 +37,20 @@
extern int fpga_abort_fn (int cookie);
extern int fpga_post_fn (int cookie);
@@ -314,21 +345,471 @@ Index: u-boot-2010.03/board/armadeus/apf27/fpga.h
+extern int fpga_spartan6_abort_fn (int cookie);
+extern int fpga_spartan6_post_fn (int cookie);
+extern int fpga_spartan6_busy_fn (int cookie);
-+#endif /* CONFIG_FPGA_SPARTAN3 */
++#endif /* CONFIG_FPGA_SPARTAN6 */
+
Index: u-boot-2010.03/include/xilinx.h
===================================================================
---- u-boot-2010.03.orig/include/xilinx.h 2011-01-06 11:44:59.000000000 +0100
-+++ u-boot-2010.03/include/xilinx.h 2011-01-06 11:46:08.000000000 +0100
-@@ -77,6 +77,11 @@
- typedef struct { /* typedef Xilinx_desc */
- Xilinx_Family family; /* part type */
+--- u-boot-2010.03.orig/include/xilinx.h 2011-01-11 11:38:53.000000000 +0100
++++ u-boot-2010.03/include/xilinx.h 2011-01-11 11:39:56.000000000 +0100
+@@ -79,6 +79,11 @@
Xilinx_iface iface; /* interface type */
+ size_t size; /* bytes of data part can accept */
+ void *iface_fns; /* interface function table */
+ /* XXX:for second fpga configuration (throught first fpga) */
+ uint32_t fpga_offset; /* first fpga offset */
+ int ip_addr; /* Address of spartan_selectmap IP */
+ int ip_id; /* Idendifiant of spartan_selectmap IP */
+ /* end of XXX */
- size_t size; /* bytes of data part can accept */
- void *iface_fns; /* interface function table */
int cookie; /* implementation specific cookie */
+ } Xilinx_desc; /* end, typedef Xilinx_desc */
+
+Index: u-boot-2010.03/common/cmd_fpga.c
+===================================================================
+--- u-boot-2010.03.orig/common/cmd_fpga.c 2011-01-11 11:38:53.000000000 +0100
++++ u-boot-2010.03/common/cmd_fpga.c 2011-01-11 11:43:03.000000000 +0100
+@@ -48,12 +48,13 @@
+ static int fpga_get_op (char *opstr);
+
+ /* Local defines */
+-#define FPGA_NONE -1
+-#define FPGA_INFO 0
+-#define FPGA_LOAD 1
+-#define FPGA_LOADB 2
+-#define FPGA_DUMP 3
+-#define FPGA_LOADMK 4
++#define FPGA_NONE -1
++#define FPGA_INFO 0
++#define FPGA_LOAD 1
++#define FPGA_LOADB 2
++#define FPGA_DUMP 3
++#define FPGA_LOADMK 4
++#define FPGA_LOADSECOND 5
+
+ /* Convert bitstream data and load into the fpga */
+ int fpga_loadbitstream(unsigned long dev, char* fpgadata, size_t size)
+@@ -150,7 +151,7 @@
+
+ /* ------------------------------------------------------------------------- */
+ /* command form:
+- * fpga <op> <device number> <data addr> <datasize>
++ * fpga <op> <device number> <data addr> <datasize> [offset] [id]
+ * where op is 'load', 'dump', or 'info'
+ * If there is no device number field, the fpga environment variable is used.
+ * If there is no data addr field, the fpgadata environment variable is used.
+@@ -160,6 +161,9 @@
+ {
+ int op, dev = FPGA_INVALID_DEVICE;
+ size_t data_size = 0;
++ int ipaddr;
++ int ipid;
++ fpga_desc *desc;
+ void *fpga_data = NULL;
+ char *devstr = getenv ("fpga");
+ char *datastr = getenv ("fpgadata");
+@@ -175,6 +179,9 @@
+ fpga_data = (void *) simple_strtoul (datastr, NULL, 16);
+
+ switch (argc) {
++ case 7: /* fpga <op> <dev> <data> <datasize> <ipaddr> <ipid>*/
++ ipaddr = simple_strtoul(argv[5], NULL, 16);
++ ipid = simple_strtoul(argv[6], NULL, 16);
+ case 5: /* fpga <op> <dev> <data> <datasize> */
+ data_size = simple_strtoul (argv[4], NULL, 16);
+
+@@ -243,6 +250,10 @@
+ rc = fpga_load (dev, fpga_data, data_size);
+ break;
+
++ case FPGA_LOADSECOND:
++ rc = fpga_loadsecond(dev, fpga_data, data_size, ipaddr, ipid);
++ break;
++
+ case FPGA_LOADB:
+ rc = fpga_loadbitstream(dev, fpga_data, data_size);
+ break;
+@@ -341,6 +352,8 @@
+ op = FPGA_LOADMK;
+ } else if (!strcmp ("dump", opstr)) {
+ op = FPGA_DUMP;
++ } else if (!strcmp ("loadsecond", opstr)) {
++ op = FPGA_LOADSECOND;
+ }
+
+ if (op == FPGA_NONE) {
+@@ -349,12 +362,13 @@
+ return op;
+ }
+
+-U_BOOT_CMD (fpga, 6, 1, do_fpga,
++U_BOOT_CMD (fpga, 8, 1, do_fpga,
+ "loadable FPGA image support",
+- "fpga [operation type] [device number] [image address] [image size]\n"
++ "fpga [operation type] [device number] [image address] [image size] [offset] [id]\n"
+ "fpga operations:\n"
+ "\tinfo\tlist known device information\n"
+ "\tload\tLoad device from memory buffer\n"
++ "\tloadsecond\tLoad second fpga throught first fpga\n"
+ "\tloadb\tLoad device from bitstream buffer (Xilinx devices only)\n"
+ "\tloadmk\tLoad device generated with mkimage\n"
+ "\tdump\tLoad device to memory buffer"
+Index: u-boot-2010.03/drivers/fpga/fpga.c
+===================================================================
+--- u-boot-2010.03.orig/drivers/fpga/fpga.c 2011-01-11 11:38:53.000000000 +0100
++++ u-boot-2010.03/drivers/fpga/fpga.c 2011-01-11 11:55:27.000000000 +0100
+@@ -56,8 +56,6 @@
+ static int fpga_dev_info( int devnum );
+
+
+-/* ------------------------------------------------------------------------- */
+-
+ /* fpga_no_sup
+ * 'no support' message function
+ */
+@@ -233,6 +231,35 @@
+ return ret_val;
+ }
+
++/*
++ * Load second fpga
++ */
++int fpga_loadsecond( int devnum, void *buf, size_t bsize, int ip_addr, int ip_id )
++{
++ int ret_val = FPGA_FAIL; /* assume failure */
++ fpga_desc * desc = fpga_validate( devnum, buf, bsize, (char *)__FUNCTION__ );
++
++ printf("load second fpga\n");
++ if ( desc ) {
++ switch ( desc->devtype ) {
++ case fpga_xilinx:
++ printf("xilinx\n");
++#if defined(CONFIG_FPGA_XILINX)
++ ret_val = xilinx_loadsecond( desc->devdesc, buf, bsize, ip_addr, ip_id );
++#else
++ fpga_no_sup( (char *)__FUNCTION__, "Xilinx devices" );
++#endif
++ break;
++ default:
++ printf( "%s: Invalid or unsupported device type %d\n",
++ __FUNCTION__, desc->devtype );
++ }
++ }
++
++ return ret_val;
++}
++
++
+ /* fpga_dump
+ * generic multiplexing code
+ */
+Index: u-boot-2010.03/drivers/fpga/xilinx.c
+===================================================================
+--- u-boot-2010.03.orig/drivers/fpga/xilinx.c 2011-01-11 11:38:53.000000000 +0100
++++ u-boot-2010.03/drivers/fpga/xilinx.c 2011-01-11 11:39:56.000000000 +0100
+@@ -89,6 +89,50 @@
+ break;
+
+ default:
++ printf ("%s: Unsupported family type (xilinx line %d), %d\n",
++ __FUNCTION__, __LINE__, desc->family);
++ }
++
++ return ret_val;
++}
++
++int xilinx_loadsecond (Xilinx_desc * desc, void *buf,
++ size_t bsize, int ip_addr, int ip_id)
++{
++ int ret_val = FPGA_FAIL; /* assume a failure */
++
++ if (!xilinx_validate (desc, (char *)__FUNCTION__)) {
++ printf ("%s: Invalid device descriptor\n", __FUNCTION__);
++ } else
++ switch (desc->family) {
++ case Xilinx_Spartan2:
++ printf ("%s: No support for Spartan-II devices.\n",
++ __FUNCTION__);
++ break;
++ case Xilinx_Spartan3:
++ printf ("%s: No support for Spartan-III devices.\n",
++ __FUNCTION__);
++ break;
++ case Xilinx_Spartan6:
++#if defined(CONFIG_FPGA_SPARTAN6)
++ PRINTF ("%s: Launching the Spartan-VI second Loader...\n",
++ __FUNCTION__);
++ ret_val = Spartan6_loadsecond (desc, buf, bsize, ip_addr, ip_id);
++#else
++ printf ("%s: No support for Spartan-VI devices.\n",
++ __FUNCTION__);
++#endif
++ break;
++
++ case Xilinx_Virtex2:
++ printf ("%s: No support for Virtex-II devices.\n",
++ __FUNCTION__);
++ break;
++
++ default:
++ printf ("%s: Unsupported family type (xilinx line %d), %d\n",
++ __FUNCTION__, __LINE__, desc->family);
++
+ printf ("%s: Unsupported family type, %d\n",
+ __FUNCTION__, desc->family);
+ }
+@@ -96,6 +140,8 @@
+ return ret_val;
+ }
+
++
++
+ int xilinx_dump (Xilinx_desc * desc, void *buf, size_t bsize)
+ {
+ int ret_val = FPGA_FAIL; /* assume a failure */
+Index: u-boot-2010.03/include/fpga.h
+===================================================================
+--- u-boot-2010.03.orig/include/fpga.h 2011-01-11 11:38:53.000000000 +0100
++++ u-boot-2010.03/include/fpga.h 2011-01-11 11:39:56.000000000 +0100
+@@ -71,10 +71,12 @@
+
+
+ /* root function definitions */
++extern fpga_desc *get_fpga_desc(int devnum);
+ extern void fpga_init( void );
+ extern int fpga_add( fpga_type devtype, void *desc );
+ extern int fpga_count( void );
+ extern int fpga_load( int devnum, void *buf, size_t bsize );
++extern int fpga_loadsecond( int devnum, void *buf, size_t bsize, int ip_addr, int ip_id);
+ extern int fpga_dump( int devnum, void *buf, size_t bsize );
+ extern int fpga_info( int devnum );
+
+Index: u-boot-2010.03/include/spartan6.h
+===================================================================
+--- u-boot-2010.03.orig/include/spartan6.h 2011-01-11 11:38:53.000000000 +0100
++++ u-boot-2010.03/include/spartan6.h 2011-01-11 11:39:56.000000000 +0100
+@@ -30,6 +30,8 @@
+ #include <xilinx.h>
+
+ extern int Spartan6_load( Xilinx_desc *desc, void *image, size_t size );
++extern int Spartan6_loadsecond( Xilinx_desc *desc, void *image, size_t size,
++ int ip_addr, int ip_id);
+ extern int Spartan6_dump( Xilinx_desc *desc, void *buf, size_t bsize );
+ extern int Spartan6_info( Xilinx_desc *desc );
+ extern int Spartan6_reloc( Xilinx_desc *desc, ulong reloc_off );
+Index: u-boot-2010.03/drivers/fpga/spartan6.c
+===================================================================
+--- u-boot-2010.03.orig/drivers/fpga/spartan6.c 2011-01-11 11:38:53.000000000 +0100
++++ u-boot-2010.03/drivers/fpga/spartan6.c 2011-01-11 11:39:56.000000000 +0100
+@@ -61,6 +61,8 @@
+ static int Spartan6_ss_dump( Xilinx_desc *desc, void *buf, size_t bsize );
+ /* static int Spartan6_ss_info( Xilinx_desc *desc ); */
+ static int Spartan6_ss_reloc( Xilinx_desc *desc, ulong reloc_offset );
++static int Spartan6_ssm_loadsecond( Xilinx_desc *desc, void *buf, size_t bsize,
++ int ip_addr, int ip_id);
+ static int Spartan6_ssm_reloc( Xilinx_desc *desc, ulong reloc_offset );
+
+ /* ------------------------------------------------------------------------- */
+@@ -74,6 +76,26 @@
+ return ret_val;
+ }
+
++int Spartan6_loadsecond (Xilinx_desc * desc, void *buf, size_t bsize,
++ int ip_addr, int ip_id)
++{
++ int ret_val = FPGA_FAIL;
++
++ switch (desc->iface) {
++
++ case slave_selectmap:
++ PRINTF ("%s: Launching Slave Select map second Load\n", __FUNCTION__);
++ ret_val = Spartan6_ssm_loadsecond (desc, buf, bsize, ip_addr, ip_id);
++ break;
++
++ default:
++ PRINTF ("%s: Unsupported interface type (spartan6 line %d), %d\n",
++ __FUNCTION__, __LINE__, desc->iface);
++ }
++
++ return ret_val;
++}
++
+ /* ------------------------------------------------------------------------- */
+ /* Spartan-VI Generic Implementation */
+ int Spartan6_dump (Xilinx_desc * desc, void *buf, size_t bsize)
+@@ -120,6 +142,177 @@
+ return ret_val;
+ }
+
++static int Spartan6_ssm_loadsecond (Xilinx_desc * desc, void *buf, size_t bsize,
++ int ip_addr, int ip_id)
++{
++ int ret_val = FPGA_FAIL; /* assume the worst */
++
++ Xilinx_Spartan6_Slave_SelectMap_fns *fn = desc->iface_fns;
++
++ if (ip_addr < desc->fpga_offset)
++ {
++ printf ("Error: Ip address must be upper than %08x\n",desc->fpga_offset);
++ return ret_val;
++ } else if (ip_addr % 2 != 0)
++ {
++ printf ("Error: Ip address must be even\n");
++ return ret_val;
++
++ } else if (ip_id != *((volatile uint16_t *)ip_addr) )
++ {
++ printf ("Error: IP Identifiant wrong : %d instead of %d\n"
++ "is first fpga correctly loaded ?\n",
++ *((volatile uint16_t *)ip_addr),
++ ip_id);
++ return ret_val;
++ }
++ desc->ip_addr = ip_addr;
++ desc->ip_id = ip_id;
++
++ PRINTF ("%s: start with interface functions @ 0x%p\n",
++ __FUNCTION__, fn);
++ if (fn) {
++ int ret;
++ size_t bytecount = 0;
++ unsigned char *data = (unsigned char *) buf;
++ int cookie = desc->cookie; /* make a local copy */
++ unsigned long ts; /* timestamp */
++
++ PRINTF ("%s: Function Table:\n"
++ "ptr:\t0x%p\n"
++ "struct: 0x%p\n"
++ "pre: 0x%p\n"
++ "pgm:\t0x%p\n"
++ "init:\t0x%p\n"
++ "err:\t0x%p\n"
++ "clk:\t0x%p\n"
++ "cs:\t0x%p\n"
++ "wr:\t0x%p\n"
++ "read data:\t0x%p\n"
++ "write data:\t0x%p\n"
++ "busy:\t0x%p\n"
++ "abort:\t0x%p\n",
++ "post:\t0x%p\n\n",
++ __FUNCTION__, &fn, fn, fn->pre, fn->pgm, fn->init, fn->err,
++ fn->clk, fn->cs, fn->wr, fn->rdata, fn->wdata, fn->busy,
++ fn->abort, fn->post);
++
++ /*
++ * This code is designed to emulate the "Express Style"
++ * Continuous Data Loading in Slave Parallel Mode for
++ * the Spartan-VI Family.
++ */
++#ifdef CONFIG_SYS_FPGA_PROG_FEEDBACK
++ printf ("Loading FPGA Device %d...\n", cookie);
++#endif
++ /*
++ * Run the pre configuration function if there is one.
++ */
++ PRINTF("Run pre function\n");
++ if (*fn->pre) {
++ ret = (*fn->pre) (cookie);
++ if (ret < 0)
++ return FPGA_FAIL;
++ }
++
++ /* PROG_N low */
++ (*fn->pgm) (TRUE, TRUE, cookie); /* Assert the program, commit */
++
++ CONFIG_FPGA_DELAY ();
++
++ /* PROG_N high */
++ (*fn->pgm) (FALSE, TRUE, cookie); /* deAssert the program, commit */
++
++ /* Wait for INIT_N low */
++ ts = get_timer (0); /* get current time */
++ /* Now wait for INIT and BUSY to go high */
++ PRINTF("/* Now wait for INIT and BUSY to go high */\n");
++ do {
++ CONFIG_FPGA_DELAY ();
++
++ if (get_timer (ts) > CONFIG_SYS_FPGA_WAIT) { /* check the time */
++ puts ("** Timeout waiting for INIT to clear.\n");
++ (*fn->abort) (cookie); /* abort the burn */
++ return FPGA_FAIL;
++ }
++ } while ((*fn->init) (cookie)==FPGA_SUCCESS);
++
++ PRINTF("Assert write\n");
++ (*fn->wr) (TRUE, TRUE, cookie); /* Assert write, commit */
++
++ PRINTF("ASSERT chip select\n");
++ (*fn->cs) (TRUE, TRUE, cookie); /* Assert chip select, commit */
++
++ /* Load the data */
++ PRINTF("/* Load the data */\n");
++ while ( (*fn->done) (cookie) == FPGA_FAIL){
++ /* XXX - do we check for an Ctrl-C press in here ??? */
++ /* XXX - Check the error bit? */
++ (*fn->wdata) (data[bytecount++], TRUE, cookie); /* write the data */
++
++ ts = get_timer (0); /* get current time */
++
++ if (get_timer (ts) > CONFIG_SYS_FPGA_WAIT) { /* check the time */
++ puts ("** Timeout waiting for BUSY to clear.\n");
++ (*fn->abort) (cookie); /* abort the burn */
++ return FPGA_FAIL;
++ }
++
++ if (bytecount % (bsize / 40) == 0)
++ putc ('.'); /* let them know we are alive */
++ }
++
++ /* now check for done signal */
++ PRINTF("/* now check for done signal */\n");
++ ts = get_timer (0); /* get current time */
++ ret_val = FPGA_SUCCESS;
++ while ((*fn->done) (cookie) == FPGA_FAIL) {
++ /* XXX - we should have a check in here somewhere to
++ * make sure we aren't busy forever... */
++
++ if (get_timer (ts) > CONFIG_SYS_FPGA_WAIT) { /* check the time */
++ puts ("** Timeout waiting for DONE to clear.\n");
++ (*fn->abort) (cookie); /* abort the burn */
++ ret_val = FPGA_FAIL;
++ break;
++ }
++ }
++
++ CONFIG_FPGA_DELAY ();
++ PRINTF("Deassert chip select\n");
++ (*fn->cs) (FALSE, TRUE, cookie); /* Deassert the chip select */
++ PRINTF("Deassert write pin\n");
++ (*fn->wr) (FALSE, TRUE, cookie); /* Deassert the write pin */
++
++ putc ('\n'); /* terminate the dotted line */
++
++
++
++ if (ret_val == FPGA_SUCCESS) {
++ puts ("Done.\n");
++ }
++ /*
++ * Run the post configuration function if there is one.
++ */
++ if (*fn->post) {
++ (*fn->post) (cookie);
++ }
++
++ else {
++ puts ("Fail.\n");
++ }
++
++ } else {
++ PRINTF ("%s: NULL Interface function table!\n", __FUNCTION__);
++ }
++
++
++
++
++ return ret_val;
++}
++
++
+ /* ------------------------------------------------------------------------- */
+ /* Spartan-VI Slave Parallel Generic Implementation */
+ static int Spartan6_sp_load (Xilinx_desc * desc, void *buf, size_t bsize)
hooks/post-receive
--
armadeus
|
|
From: Julien B a. A. <ar...@us...> - 2011-01-11 10:12:32
|
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 9f2983f0d32f190ed0b232ec84619fb37951bc84 (commit)
via fd1976f7e70a284c9bf908cc554148deb45ce338 (commit)
via bc770a9d1683b8fe18564f2b97d53db73929a972 (commit)
via 3ffaeb6d56ac77b6ba5226a5851456115e341025 (commit)
via fd90e3d5d661c07e54faab0797b14a60290905b3 (commit)
from 9cba19ad137f1e07ffb390f70022fff6492868a0 (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 9f2983f0d32f190ed0b232ec84619fb37951bc84
Merge: fd1976f7e70a284c9bf908cc554148deb45ce338 9cba19ad137f1e07ffb390f70022fff6492868a0
Author: Julien Boibessot <jul...@ar...>
Date: Tue Jan 11 11:12:01 2011 +0100
Merge branch 'master' of ssh://artemys@armadeus.git.sourceforge.net/gitroot/armadeus/armadeus
commit fd1976f7e70a284c9bf908cc554148deb45ce338
Author: Julien Boibessot <jul...@ar...>
Date: Tue Jan 11 11:10:51 2011 +0100
[LINUX] 2.6.36: Fixes patch 100
commit bc770a9d1683b8fe18564f2b97d53db73929a972
Merge: 3ffaeb6d56ac77b6ba5226a5851456115e341025 6b1e43509efefc895681979b7499bf35fa3d7543
Author: Julien Boibessot <jul...@ar...>
Date: Tue Jan 11 08:56:53 2011 +0100
Merge branch 'master' of ssh://artemys@armadeus.git.sourceforge.net/gitroot/armadeus/armadeus
commit 3ffaeb6d56ac77b6ba5226a5851456115e341025
Author: Julien Boibessot <jul...@ar...>
Date: Tue Jan 11 08:56:34 2011 +0100
[LINUX] 2.6.36: improves APF27 support with SPI & USB
commit fd90e3d5d661c07e54faab0797b14a60290905b3
Author: Julien Boibessot <jul...@ar...>
Date: Mon Jan 10 18:28:29 2011 +0100
[LINUX] MAX1027 driver doesn't use IOCTLs so suppress them
-----------------------------------------------------------------------
Summary of changes:
.../armadeus/apf27/apf27-linux-2.6.36.config | 229 +++++-
...eus-clock_correct_mxc_decode_pll_for_imx1.patch | 33 +-
.../2.6.36/281-apf27-armadeus-add_apf27.c.patch | 845 +++++++-------------
...291-apf27-armadeus-add_mach_board-apf27_h.patch | 2 +-
...tions_to_individually_activate_spi_busses.patch | 28 +
target/linux/modules/max1027/max1027.c | 12 +-
6 files changed, 569 insertions(+), 580 deletions(-)
create mode 100644 buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/293-armadeus-spi_imx-add_config_options_to_individually_activate_spi_busses.patch
diff --git a/buildroot/target/device/armadeus/apf27/apf27-linux-2.6.36.config b/buildroot/target/device/armadeus/apf27/apf27-linux-2.6.36.config
index 19f1e19..153e9ed 100644
--- a/buildroot/target/device/armadeus/apf27/apf27-linux-2.6.36.config
+++ b/buildroot/target/device/armadeus/apf27/apf27-linux-2.6.36.config
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.36
-# Thu Jan 6 23:38:31 2011
+# Mon Jan 10 17:27:13 2011
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -266,6 +266,7 @@ CONFIG_MACH_APF27_DEV_EXT_NONE=y
# CONFIG_MXC_IRQ_PRIOR is not set
# CONFIG_MXC_PWM is not set
# CONFIG_MXC_DEBUG_BOARD is not set
+CONFIG_MXC_ULPI=y
CONFIG_IMX_HAVE_IOMUX_V1=y
CONFIG_ARCH_MXC_AUDMUX_V1=y
@@ -484,7 +485,25 @@ CONFIG_DNS_RESOLVER=y
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_HAMRADIO is not set
-# CONFIG_CAN is not set
+CONFIG_CAN=m
+CONFIG_CAN_RAW=m
+CONFIG_CAN_BCM=m
+
+#
+# CAN Device Drivers
+#
+CONFIG_CAN_VCAN=m
+CONFIG_CAN_DEV=m
+# CONFIG_CAN_CALC_BITTIMING is not set
+CONFIG_CAN_MCP251X=m
+# CONFIG_CAN_SJA1000 is not set
+
+#
+# CAN USB interfaces
+#
+# CONFIG_CAN_EMS_USB is not set
+# CONFIG_CAN_ESD_USB2 is not set
+# CONFIG_CAN_DEBUG_DEVICES is not set
# CONFIG_IRDA is not set
CONFIG_BT=m
CONFIG_BT_L2CAP=m
@@ -929,7 +948,7 @@ CONFIG_INPUT_TOUCHSCREEN=y
# CONFIG_TOUCHSCREEN_QT602240 is not set
# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
-# CONFIG_TOUCHSCREEN_TSC2102 is not set
+CONFIG_TOUCHSCREEN_TSC2102=m
# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
# CONFIG_TOUCHSCREEN_TSC2007 is not set
@@ -1047,15 +1066,18 @@ CONFIG_SPI_MASTER=y
CONFIG_SPI_BITBANG=y
# CONFIG_SPI_GPIO is not set
CONFIG_SPI_IMX=y
+CONFIG_SPI_MXC_SELECT1=y
+CONFIG_SPI_MXC_SELECT2=y
+CONFIG_SPI_MXC_SELECT3=y
# CONFIG_SPI_XILINX is not set
# CONFIG_SPI_DESIGNWARE is not set
#
# SPI Protocol Masters
#
-# CONFIG_SPI_SPIDEV is not set
+CONFIG_SPI_SPIDEV=m
# CONFIG_SPI_TLE62X0 is not set
-# CONFIG_SPI_TSC2102 is not set
+CONFIG_SPI_TSC2102=m
#
# PPS support
@@ -1232,7 +1254,196 @@ CONFIG_MFD_SUPPORT=y
# CONFIG_AB8500_CORE is not set
# CONFIG_MFD_TPS6586X is not set
# CONFIG_REGULATOR is not set
-# CONFIG_MEDIA_SUPPORT is not set
+CONFIG_MEDIA_SUPPORT=m
+
+#
+# Multimedia core support
+#
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L2_COMMON=m
+CONFIG_VIDEO_ALLOW_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+# CONFIG_DVB_CORE is not set
+CONFIG_VIDEO_MEDIA=m
+
+#
+# Multimedia drivers
+#
+# CONFIG_IR_CORE is not set
+# CONFIG_MEDIA_ATTACH is not set
+CONFIG_MEDIA_TUNER=m
+# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
+CONFIG_MEDIA_TUNER_SIMPLE=m
+CONFIG_MEDIA_TUNER_TDA8290=m
+CONFIG_MEDIA_TUNER_TDA9887=m
+CONFIG_MEDIA_TUNER_TEA5761=m
+CONFIG_MEDIA_TUNER_TEA5767=m
+CONFIG_MEDIA_TUNER_MT20XX=m
+CONFIG_MEDIA_TUNER_XC2028=m
+CONFIG_MEDIA_TUNER_XC5000=m
+CONFIG_MEDIA_TUNER_MC44S803=m
+CONFIG_VIDEO_V4L2=m
+CONFIG_VIDEO_V4L1=m
+CONFIG_VIDEOBUF_GEN=m
+CONFIG_VIDEOBUF_DMA_CONTIG=m
+CONFIG_VIDEO_CAPTURE_DRIVERS=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
+# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set
+
+#
+# Encoders/decoders and other helper chips
+#
+
+#
+# Audio decoders
+#
+# CONFIG_VIDEO_TVAUDIO is not set
+# CONFIG_VIDEO_TDA7432 is not set
+# CONFIG_VIDEO_TDA9840 is not set
+# CONFIG_VIDEO_TDA9875 is not set
+# CONFIG_VIDEO_TEA6415C is not set
+# CONFIG_VIDEO_TEA6420 is not set
+# CONFIG_VIDEO_MSP3400 is not set
+# CONFIG_VIDEO_CS5345 is not set
+# CONFIG_VIDEO_CS53L32A is not set
+# CONFIG_VIDEO_M52790 is not set
+# CONFIG_VIDEO_TLV320AIC23B is not set
+# CONFIG_VIDEO_WM8775 is not set
+# CONFIG_VIDEO_WM8739 is not set
+# CONFIG_VIDEO_VP27SMPX is not set
+
+#
+# RDS decoders
+#
+# CONFIG_VIDEO_SAA6588 is not set
+
+#
+# Video decoders
+#
+# CONFIG_VIDEO_ADV7180 is not set
+# CONFIG_VIDEO_BT819 is not set
+# CONFIG_VIDEO_BT856 is not set
+# CONFIG_VIDEO_BT866 is not set
+# CONFIG_VIDEO_KS0127 is not set
+# CONFIG_VIDEO_OV7670 is not set
+# CONFIG_VIDEO_MT9V011 is not set
+# CONFIG_VIDEO_TCM825X is not set
+# CONFIG_VIDEO_SAA7110 is not set
+# CONFIG_VIDEO_SAA711X is not set
+# CONFIG_VIDEO_SAA717X is not set
+# CONFIG_VIDEO_SAA7191 is not set
+# CONFIG_VIDEO_TVP514X is not set
+# CONFIG_VIDEO_TVP5150 is not set
+# CONFIG_VIDEO_TVP7002 is not set
+# CONFIG_VIDEO_VPX3220 is not set
+
+#
+# Video and audio decoders
+#
+# CONFIG_VIDEO_CX25840 is not set
+
+#
+# MPEG video encoders
+#
+# CONFIG_VIDEO_CX2341X is not set
+
+#
+# Video encoders
+#
+# CONFIG_VIDEO_SAA7127 is not set
+# CONFIG_VIDEO_SAA7185 is not set
+# CONFIG_VIDEO_AD9889 is not set
+# CONFIG_VIDEO_ADV7170 is not set
+# CONFIG_VIDEO_ADV7175 is not set
+# CONFIG_VIDEO_THS7303 is not set
+# CONFIG_VIDEO_ADV7343 is not set
+# CONFIG_VIDEO_AK881X is not set
+
+#
+# Video improvement chips
+#
+# CONFIG_VIDEO_UPD64031A is not set
+# CONFIG_VIDEO_UPD64083 is not set
+# CONFIG_VIDEO_VIVI is not set
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_CPIA2 is not set
+# CONFIG_VIDEO_SAA5246A is not set
+# CONFIG_VIDEO_SAA5249 is not set
+CONFIG_SOC_CAMERA=m
+# CONFIG_SOC_CAMERA_MT9M001 is not set
+# CONFIG_SOC_CAMERA_MT9M111 is not set
+# CONFIG_SOC_CAMERA_MT9T031 is not set
+# CONFIG_SOC_CAMERA_MT9T112 is not set
+# CONFIG_SOC_CAMERA_MT9V022 is not set
+# CONFIG_SOC_CAMERA_RJ54N1 is not set
+# CONFIG_SOC_CAMERA_TW9910 is not set
+# CONFIG_SOC_CAMERA_PLATFORM is not set
+# CONFIG_SOC_CAMERA_OV772X is not set
+# CONFIG_SOC_CAMERA_OV9640 is not set
+# CONFIG_SOC_CAMERA_OV96XX is not set
+# CONFIG_VIDEO_SH_MOBILE_CSI2 is not set
+# CONFIG_VIDEO_SH_MOBILE_CEU is not set
+CONFIG_VIDEO_MX2_HOSTSUPPORT=y
+CONFIG_VIDEO_MX2=m
+CONFIG_V4L_USB_DRIVERS=y
+# CONFIG_USB_VIDEO_CLASS is not set
+CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
+CONFIG_USB_GSPCA=m
+# CONFIG_USB_M5602 is not set
+# CONFIG_USB_STV06XX is not set
+# CONFIG_USB_GL860 is not set
+# CONFIG_USB_GSPCA_BENQ is not set
+# CONFIG_USB_GSPCA_CONEX is not set
+# CONFIG_USB_GSPCA_CPIA1 is not set
+# CONFIG_USB_GSPCA_ETOMS is not set
+# CONFIG_USB_GSPCA_FINEPIX is not set
+# CONFIG_USB_GSPCA_JEILINJ is not set
+# CONFIG_USB_GSPCA_MARS is not set
+# CONFIG_USB_GSPCA_MR97310A is not set
+# CONFIG_USB_GSPCA_OV519 is not set
+# CONFIG_USB_GSPCA_OV534 is not set
+# CONFIG_USB_GSPCA_OV534_9 is not set
+# CONFIG_USB_GSPCA_PAC207 is not set
+# CONFIG_USB_GSPCA_PAC7302 is not set
+# CONFIG_USB_GSPCA_PAC7311 is not set
+# CONFIG_USB_GSPCA_SN9C2028 is not set
+# CONFIG_USB_GSPCA_SN9C20X is not set
+# CONFIG_USB_GSPCA_SONIXB is not set
+# CONFIG_USB_GSPCA_SONIXJ is not set
+# CONFIG_USB_GSPCA_SPCA500 is not set
+# CONFIG_USB_GSPCA_SPCA501 is not set
+# CONFIG_USB_GSPCA_SPCA505 is not set
+# CONFIG_USB_GSPCA_SPCA506 is not set
+# CONFIG_USB_GSPCA_SPCA508 is not set
+# CONFIG_USB_GSPCA_SPCA561 is not set
+# CONFIG_USB_GSPCA_SPCA1528 is not set
+# CONFIG_USB_GSPCA_SQ905 is not set
+# CONFIG_USB_GSPCA_SQ905C is not set
+# CONFIG_USB_GSPCA_SQ930X is not set
+# CONFIG_USB_GSPCA_STK014 is not set
+# CONFIG_USB_GSPCA_STV0680 is not set
+# CONFIG_USB_GSPCA_SUNPLUS is not set
+# CONFIG_USB_GSPCA_T613 is not set
+# CONFIG_USB_GSPCA_TV8532 is not set
+# CONFIG_USB_GSPCA_VC032X is not set
+# CONFIG_USB_GSPCA_ZC3XX is not set
+# CONFIG_VIDEO_PVRUSB2 is not set
+# CONFIG_VIDEO_HDPVR is not set
+# CONFIG_VIDEO_USBVISION is not set
+# CONFIG_USB_VICAM is not set
+# CONFIG_USB_IBMCAM is not set
+# CONFIG_USB_KONICAWC is not set
+# CONFIG_USB_ET61X251 is not set
+# CONFIG_USB_SE401 is not set
+# CONFIG_USB_SN9C102 is not set
+# CONFIG_USB_PWC is not set
+# CONFIG_USB_ZR364XX is not set
+# CONFIG_USB_STKWEBCAM is not set
+# CONFIG_USB_S2255 is not set
+# CONFIG_V4L_MEM2MEM_DRIVERS is not set
+# CONFIG_RADIO_ADAPTERS is not set
+# CONFIG_DAB is not set
#
# Graphics support
@@ -1527,12 +1738,14 @@ CONFIG_USB_ETH_RNDIS=y
# CONFIG_USB_G_MULTI is not set
# CONFIG_USB_G_HID is not set
# CONFIG_USB_G_DBGP is not set
+# CONFIG_USB_G_WEBCAM is not set
#
# OTG and related infrastructure
#
+CONFIG_USB_OTG_UTILS=y
# CONFIG_USB_GPIO_VBUS is not set
-# CONFIG_USB_ULPI is not set
+CONFIG_USB_ULPI=y
# CONFIG_NOP_USB_XCEIV is not set
#
@@ -1547,7 +1760,7 @@ CONFIG_ARMADEUS_DRIVERS=y
# CONFIG_ARMADEUS_AS1531_PLAT is not set
# CONFIG_ARMADEUS_GPIO_DRIVER is not set
# CONFIG_ARMADEUS_KEYPAD_DRIVER is not set
-# CONFIG_ARMADEUS_MAX1027 is not set
+CONFIG_ARMADEUS_MAX1027=m
# CONFIG_ARMADEUS_MAX9768 is not set
#
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/100-armadeus-clock_correct_mxc_decode_pll_for_imx1.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/100-armadeus-clock_correct_mxc_decode_pll_for_imx1.patch
index bad2ff9..ee5940b 100644
--- a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/100-armadeus-clock_correct_mxc_decode_pll_for_imx1.patch
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/100-armadeus-clock_correct_mxc_decode_pll_for_imx1.patch
@@ -1,18 +1,33 @@
The current mxc_decode_pll function provide wrong values on imx1 cpu.
---- a/arch/arm/plat-mxc/clock.c 2010-10-20 22:30:22.000000000 +0200
-+++ b/arch/arm/plat-mxc/clock.c 2010-12-05 11:14:32.000000000 +0100
-@@ -221,6 +222,14 @@
- pd = (reg_val >> 26) & 0xf;
+(correction imported from 2.6.29 imx_decode_pll() )
+
+TO CHECK ! (FIX ?)
+
+Index: linux-2.6.36/arch/arm/plat-mxc/clock.c
+===================================================================
+--- linux-2.6.36.orig/arch/arm/plat-mxc/clock.c 2010-10-20 22:30:22.000000000 +0200
++++ linux-2.6.36/arch/arm/plat-mxc/clock.c 2011-01-11 09:50:52.000000000 +0100
+@@ -212,6 +212,7 @@
+ unsigned long mxc_decode_pll(unsigned int reg_val, u32 freq)
+ {
+ long long ll;
++ unsigned long quot;
+ int mfn_abs;
+ unsigned int mfi, mfn, mfd, pd;
+
+@@ -222,6 +223,15 @@
mfi = mfi <= 5 ? 5 : mfi;
+
+ if (cpu_is_mx1()) {
+ ll = 2 * (unsigned long long)freq *
-+ ((mfi << 16) + (mfn << 16) / (mfd + 1));
-+ quot = (pd + 1) * (1 << 16);
-+ ll += quot / 2;
-+ do_div(ll, quot);
++ ((mfi << 16) + (mfn << 16) / (mfd + 1));
++ quot = (pd + 1) * (1 << 16);
++ ll += quot / 2;
++ do_div(ll, quot);
+ return (unsigned long)ll;
+ }
-
++
mfn_abs = mfn;
+ /* On all i.MXs except i.MX1 and i.MX21 mfn is a 10bit
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/281-apf27-armadeus-add_apf27.c.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/281-apf27-armadeus-add_apf27.c.patch
index 73b576e..fd79844 100644
--- a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/281-apf27-armadeus-add_apf27.c.patch
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/281-apf27-armadeus-add_apf27.c.patch
@@ -9,8 +9,8 @@ Signed-off-by: Eric Jarrige <eri...@ar...>
Index: linux-2.6.36/arch/arm/mach-imx/apf27.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.36/arch/arm/mach-imx/apf27.c 2010-11-25 20:54:01.000000000 +0100
-@@ -0,0 +1,805 @@
++++ linux-2.6.36/arch/arm/mach-imx/apf27.c 2011-01-10 17:50:27.000000000 +0100
+@@ -0,0 +1,752 @@
+ /*
+ * apf27.c
+ *
@@ -48,6 +48,9 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27.c
+#include <linux/cpufreq.h>
+#include <linux/clk.h>
+#include <linux/dma-mapping.h>
++#include <linux/usb/otg.h>
++#include <linux/usb/ulpi.h>
++#include <linux/fsl_devices.h>
+
+#include <asm/mach/flash.h>
+#include <asm/io.h>
@@ -64,7 +67,6 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27.c
+#include <mach/mxc_nand.h>
+#include <mach/mxc_ehci.h>
+#include <mach/ulpi.h>
-+#include <linux/fsl_devices.h> /* USB device */
+#include "../../../drivers/armadeus/pwm/pwm.h"
+#if defined(CONFIG_CPU_FREQ_IMX27) || defined(CONFIG_CPU_FREQ_IMX27_MODULE)
+#include "cpufreq_imx.h"
@@ -94,6 +96,53 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27.c
+#endif
+
+
++static int apf27_pins[] = {
++ /* CONSOLE */
++ PE12_PF_UART1_TXD,
++ PE13_PF_UART1_RXD,
++ /* USB_OTG */
++ PE0_PF_USBOTG_NXT,
++ PE1_PF_USBOTG_STP,
++ PE2_PF_USBOTG_DIR,
++ PE24_PF_USBOTG_CLK,
++ PE25_PF_USBOTG_DATA7,
++ PC7_PF_USBOTG_DATA5,
++ PC8_PF_USBOTG_DATA6,
++ PC9_PF_USBOTG_DATA0,
++ PC10_PF_USBOTG_DATA2,
++ PC11_PF_USBOTG_DATA1,
++ PC12_PF_USBOTG_DATA4,
++ PC13_PF_USBOTG_DATA3,
++ /* UART3 */
++ PE8_PF_UART3_TXD,
++ PE9_PF_UART3_RXD,
++#ifdef CONFIG_SERIAL_IMX_UART3_USE_RTSCTS
++ PE10_PF_UART3_CTS,
++ PE11_PF_UART3_RTS,
++#endif
++#ifdef CONFIG_FEC
++ /* ETHERNET */
++ PD0_AIN_FEC_TXD0,
++ PD1_AIN_FEC_TXD1,
++ PD2_AIN_FEC_TXD2,
++ PD3_AIN_FEC_TXD3,
++ PD4_AOUT_FEC_RX_ER,
++ PD5_AOUT_FEC_RXD1,
++ PD6_AOUT_FEC_RXD2,
++ PD7_AOUT_FEC_RXD3,
++ PD8_AF_FEC_MDIO,
++ PD9_AIN_FEC_MDC,
++ PD10_AOUT_FEC_CRS,
++ PD11_AOUT_FEC_TX_CLK,
++ PD12_AOUT_FEC_RXD0,
++ PD13_AOUT_FEC_RX_DV,
++ PD14_AOUT_FEC_RX_CLK,
++ PD15_AOUT_FEC_COL,
++ PD16_AIN_FEC_TX_ER,
++ PF23_AIN_FEC_TX_EN
++#endif
++};
++
+#ifdef CONFIG_PWM
+static int mxc_pwm0_pins[] = {
+ PE5_PF_PWM0
@@ -132,16 +181,15 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27.c
+ PC6_PF_I2C2_SCL
+};
+
-+static int apf27_i2c_1_init(struct platform_device *pdev)
++static int apf27_i2c_1_init(struct device *dev)
+{
+ return mxc_gpio_setup_multiple_pins(mxc_i2c1_pins, ARRAY_SIZE(mxc_i2c1_pins),
+ "I2C2");
+}
+
-+static int apf27_i2c_1_exit(struct platform_device *pdev)
++static void apf27_i2c_1_exit(struct device *dev)
+{
+ mxc_gpio_release_multiple_pins(mxc_i2c1_pins, ARRAY_SIZE(mxc_i2c1_pins));
-+ return 0;
+}
+
+static struct imxi2c_platform_data apf27_i2c_1_data __initconst = {
@@ -163,54 +211,12 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27.c
+
+
+/* APF27 has an RS232 debug port/console on UART1 with "on module" transceiver */
-+static int mxc_uart0_pins[] = {
-+ PE12_PF_UART1_TXD,
-+ PE13_PF_UART1_RXD
-+};
-+
-+static int uart_mxc_port0_init(struct platform_device *pdev)
-+{
-+ return mxc_gpio_setup_multiple_pins(mxc_uart0_pins, ARRAY_SIZE(mxc_uart0_pins), "UART1");
-+}
-+
-+static int uart_mxc_port0_exit(struct platform_device *pdev)
-+{
-+ mxc_gpio_release_multiple_pins(mxc_uart0_pins, ARRAY_SIZE(mxc_uart0_pins));
-+
-+ return 0;
-+}
-+
+static struct imxuart_platform_data uart0_pdata = {
-+ .init = uart_mxc_port0_init,
-+ .exit = uart_mxc_port0_exit,
+ .flags = 0,
+};
+
+/* APF27 has an "on module" transceiver for UART3 */
-+static int mxc_uart2_pins[] = {
-+ PE8_PF_UART3_TXD,
-+ PE9_PF_UART3_RXD,
-+#ifdef CONFIG_SERIAL_IMX_UART3_USE_RTSCTS
-+ PE10_PF_UART3_CTS,
-+ PE11_PF_UART3_RTS,
-+#endif
-+};
-+
-+static int uart_mxc_port2_init(struct platform_device *pdev)
-+{
-+ return mxc_gpio_setup_multiple_pins(mxc_uart2_pins, ARRAY_SIZE(mxc_uart2_pins), "UART3");
-+}
-+
-+static int uart_mxc_port2_exit(struct platform_device *pdev)
-+{
-+ mxc_gpio_release_multiple_pins(mxc_uart2_pins, ARRAY_SIZE(mxc_uart2_pins));
-+
-+ return 0;
-+}
-+
+static struct imxuart_platform_data uart2_pdata = {
-+ .init = uart_mxc_port2_init,
-+ .exit = uart_mxc_port2_exit,
+#ifdef CONFIG_SERIAL_IMX_UART3_USE_RTSCTS
+ .flags = IMXUART_HAVE_RTSCTS,
+#else
@@ -219,69 +225,8 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27.c
+};
+
+
-+/* APF27 has an onboard Ethernet PHY */
-+#ifdef CONFIG_FEC
-+static int mxc_fec_pins[] = {
-+ PD0_AIN_FEC_TXD0,
-+ PD1_AIN_FEC_TXD1,
-+ PD2_AIN_FEC_TXD2,
-+ PD3_AIN_FEC_TXD3,
-+ PD4_AOUT_FEC_RX_ER,
-+ PD5_AOUT_FEC_RXD1,
-+ PD6_AOUT_FEC_RXD2,
-+ PD7_AOUT_FEC_RXD3,
-+ PD8_AF_FEC_MDIO,
-+ PD9_AIN_FEC_MDC,
-+ PD10_AOUT_FEC_CRS,
-+ PD11_AOUT_FEC_TX_CLK,
-+ PD12_AOUT_FEC_RXD0,
-+ PD13_AOUT_FEC_RX_DV,
-+ PD14_AOUT_FEC_RX_CLK,
-+ PD15_AOUT_FEC_COL,
-+ PD16_AIN_FEC_TX_ER,
-+ PF23_AIN_FEC_TX_EN
-+};
-+
-+static void gpio_fec_active(void)
-+{
-+ mxc_gpio_setup_multiple_pins(mxc_fec_pins, ARRAY_SIZE(mxc_fec_pins), "FEC");
-+}
-+#endif /* CONFIG_FEC */
-+
+#if 0
+/* APF27 has an onboard PHY (ISP1504) on OTG USB port */
-+static int mxc_usbotg_pins[] = {
-+ PE0_PF_USBOTG_NXT,
-+ PE1_PF_USBOTG_STP,
-+ PE2_PF_USBOTG_DIR,
-+ PE24_PF_USBOTG_CLK,
-+ PE25_PF_USBOTG_DATA7,
-+ PC7_PF_USBOTG_DATA5,
-+ PC8_PF_USBOTG_DATA6,
-+ PC9_PF_USBOTG_DATA0,
-+ PC10_PF_USBOTG_DATA2,
-+ PC11_PF_USBOTG_DATA1,
-+ PC12_PF_USBOTG_DATA4,
-+ PC13_PF_USBOTG_DATA3,
-+};
-+
-+static int isp1504_check_presence(void __iomem *view)
-+{
-+ int vid, pid;
-+
-+ vid = (ulpi_read(ISP1504_VID_HIGH, view) << 8) |
-+ ulpi_read(ISP1504_VID_LOW, view);
-+ pid = (ulpi_read(ISP1504_PID_HIGH, view) << 8) |
-+ ulpi_read(ISP1504_PID_LOW, view);
-+
-+ pr_info("ULPI OTG Vendor ID 0x%x Product ID 0x%x\n", vid, pid);
-+ if (vid != 0x4cc || pid != 0x1504) {
-+ pr_err("No ISP1504 found\n");
-+ return -1;
-+ }
-+
-+ return 0;
-+}
+
+static int isp1504_set_vbus_power(void __iomem *view, int on)
+{
@@ -317,19 +262,6 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27.c
+ return ret;
+}
+
-+static int isp1504_set_device(void __iomem *view)
-+{
-+ int ret = 0;
-+
-+ ret = isp1504_check_presence(view);
-+ if (ret)
-+ return ret;
-+
-+ ret = ulpi_clear(0x06, ISP1504_OTGCTL, view);
-+
-+ return ret;
-+}
-+
+static void isp1504_suspend(void __iomem *view)
+{
+ /* isp1504_set_vbus_power(view, 0); needed ? */
@@ -365,24 +297,9 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27.c
+ pr_debug("reset controller: 0x%08x\n", temp);
+ mdelay(10);
+}
++#endif
+
-+static int otg_mode_host = 1;
-+
-+static int __init apf27_otg_mode(char *options)
-+{
-+ if (!strcmp(options, "host"))
-+ otg_mode_host = 1;
-+ else if (!strcmp(options, "device"))
-+ otg_mode_host = 0;
-+ else {
-+ pr_info("otg_mode neither \"host\" nor \"device\". "
-+ "Defaulting to host\n");
-+ }
-+
-+ return 0;
-+}
-+__setup("otg_mode=", apf27_otg_mode);
-+
++#if 0
+static int apf27_usbotg_init(struct platform_device *pdev)
+{
+ int ret;
@@ -419,17 +336,36 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27.c
+
+ return ret;
+}
++#endif
+
-+struct mxc_usb2_platform_data ehci0_pdata = {
-+ .init = apf27_usbotg_init,
++
++static int otg_mode_host = 1;
++/*
++static int __init apf27_otg_mode(char *options)
++{
++ if (!strcmp(options, "host"))
++ otg_mode_host = 1;
++ else if (!strcmp(options, "device"))
++ otg_mode_host = 0;
++ else
++ pr_info("otg_mode neither \"host\" nor \"device\". "
++ "Defaulting to host\n");
++
++ return 0;
++}
++__setup("otg_mode=", apf27_otg_mode);
++*/
++#if defined(CONFIG_USB_ULPI)
++static struct mxc_usbh_platform_data otg_pdata = {
++ .portsc = MXC_EHCI_MODE_ULPI,
++ .flags = MXC_EHCI_INTERFACE_DIFF_UNI,
+};
++#endif
+
+static struct fsl_usb2_platform_data otg_device_pdata = {
-+ .init = apf27_usbotg_init,
+ .operating_mode = FSL_USB2_DR_DEVICE,
+ .phy_mode = FSL_USB2_PHY_ULPI,
+};
-+#endif
+
+/* APF27 frequency scaling stuff */
+#if defined(CONFIG_CPU_FREQ_IMX27) || defined(CONFIG_CPU_FREQ_IMX27_MODULE)
@@ -554,6 +490,7 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27.c
+#ifdef CONFIG_MXC_VPU
+ &mxc_vpu_device,
+#endif
++/* APF27 has an onboard Ethernet PHY */
+#ifdef CONFIG_FEC
+ &mxc_fec_device,
+#endif
@@ -744,15 +681,19 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27.c
+
+static void __init apf27_init(void)
+{
++ int ret;
++
++ ret = mxc_gpio_setup_multiple_pins(apf27_pins,
++ ARRAY_SIZE(apf27_pins), "APF27");
++ if (ret)
++ printk(KERN_ERR "apf27: Failed to setup pins (%d)\n", ret);
++
+ sysdev_class_register(&apf27_pm_sysclass);
+ sysdev_register(&apf27_pm_sysdev);
+
+ /* Init APF27 power management related pins */
+ apf27_pwr_ctl_active();
+
-+#ifdef CONFIG_FEC
-+ gpio_fec_active();
-+#endif
+ /* UART1 and UART3 have "on module" transceivers */
+ imx27_add_imx_uart0(&uart0_pdata); /* console */
+ imx27_add_imx_uart2(&uart2_pdata);
@@ -762,16 +703,22 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27.c
+#ifdef CONFIG_PWM
+ mxc_register_device(&mxc_pwm_device0, &apf27_pwm_0_data);
+#endif
++
+#ifdef CONFIG_WATCHDOG
+ mxc_register_device(&mxc_wdt, NULL);
+#endif
-+#if 0
++
++#if defined(CONFIG_USB_ULPI)
+ if (otg_mode_host) {
-+ mxc_register_device(&mxc_otg_host, &ehci0_pdata);
++ otg_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops,
++ ULPI_OTG_DRVVBUS | ULPI_OTG_DRVVBUS_EXT);
++
++ mxc_register_device(&mxc_otg_host, &otg_pdata);
+ } else {
+ mxc_register_device(&mxc_otg_udc_device, &otg_device_pdata);
+ }
+#endif
++
+#ifdef CONFIG_I2C
+ imx27_add_i2c_imx1(&apf27_i2c_1_data);
+ i2c_register_board_info(1, apf27_i2c_devices_bus1,
@@ -819,8 +766,8 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27.c
Index: linux-2.6.36/arch/arm/mach-imx/apf27-dev.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.36/arch/arm/mach-imx/apf27-dev.c 2010-11-25 19:29:57.000000000 +0100
-@@ -0,0 +1,1155 @@
++++ linux-2.6.36/arch/arm/mach-imx/apf27-dev.c 2011-01-10 17:50:09.000000000 +0100
+@@ -0,0 +1,951 @@
+ /*
+ * apf27-dev.c
+ * Support for AFP27 module's development baseboard
@@ -829,6 +776,11 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27-dev.c
+ * Authors: Julien Boibessot <jul...@ar...>
+ * Nicolas Colombain <nic...@ar...>
+ *
++ * Based on code which is:
++ * Copyright 2007 Robert Schwebel <r.s...@pe...>, Pengutronix
++ * Copyright (C) 2009 Sascha Hauer (ke...@pe...)
++ * + Freescale
++ *
+ * 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
@@ -855,19 +807,18 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27-dev.c
+#include <linux/cpufreq.h>
+#include <linux/clk.h>
+#include <linux/dma-mapping.h>
++#if 0
++#include <linux/clk.h>
++#endif
+
+#include <asm/io.h>
+#include <asm/mach/arch.h>
+#include <asm/mach-types.h>
+#include <asm/mach/time.h>
-+// #include <asm/arch/clock.h>
+#include <mach/common.h>
+#include <mach/hardware.h>
-+//#include <mach/iomux-mx1-mx2.h>
+#include <mach/iomux-mx27.h>
+#include <mach/gpio.h>
-+//#include <mach/imx_spi.h>
-+//#include <../mach-imx/include/mach/spi_imx.h>
+#include <mach/imx-uart.h>
+#include <mach/mmc.h>
+#ifdef CONFIG_FB_MXC /* Freescale Framebuffer */
@@ -875,13 +826,12 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27-dev.c
+#include <mach/imxfb.h>
+#endif
+#include <linux/fb.h>
-+//#include <mach/mxc_nand.h>
+#include <mach/mxc_ehci.h>
+#include <mach/ulpi.h>
-+#if 0
+#include <linux/spi/max1027.h>
+#include <linux/spi/tsc2102.h>
-+#include "../../../drivers/net/can/mcp251x.h"
++#include <linux/can/platform/mcp251x.h>
++#if 0
+#include "../../../drivers/armadeus/pwm/pwm.h"
+#include <media/ad9889.h>
+#include <mach/imx_dam.h>
@@ -943,54 +893,108 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27-dev.c
+#define CONFIG_PWM
+#endif
+
++#define TSC2101_INT 17
+
-+#ifdef CONFIG_I2C
+
-+/* APF27Dev makes I2C1 bus available */
-+static int mxc_i2c0_pins[] = {
++static int apf27dev_pins[] = {
++ /* I2C1 */
+ PD17_PF_I2C_DATA,
-+ PD18_PF_I2C_CLK
++ PD18_PF_I2C_CLK,
++ /* USBH1 */
++ PB22_PF_USBH1_SUSP,
++ PB23_PF_USB_PWR,
++ PB24_PF_USB_OC,
++ PB25_PF_USBH1_RCV,
++ PB26_PF_USBH1_FS,
++ PB27_PF_USBH1_OE,
++ PB28_PF_USBH1_TXDM,
++ PB29_PF_USBH1_TXDP,
++ PB30_PF_USBH1_RXDM,
++ PB31_PF_USBH1_RXDP,
++ /* SPI1 */
++#ifdef CONFIG_SPI_MXC_SELECT1
++ /* PD28_PF_CSPI1_SS0, Preferably use CS pin as GPIO */
++ PD29_PF_CSPI1_SCLK,
++ PD30_PF_CSPI1_MISO,
++ PD31_PF_CSPI1_MOSI,
++#endif
++ /* SPI2 */
++#ifdef CONFIG_SPI_MXC_SELECT2
++ /* PD19_PF_CSPI2_SS2,
++ PD20_PF_CSPI2_SS1, Preferably use CS pin as GPIO
++ PD21_PF_CSPI2_SS0, */
++ PD22_PF_CSPI2_SCLK,
++ PD23_PF_CSPI2_MISO,
++ PD24_PF_CSPI2_MOSI,
++#endif
++ /* SPI3 */
++#ifdef CONFIG_SPI_MXC_SELECT3
++ /*
++ PE21_AF_CSPI3_SS,
++ Preferably use CS pin as GPIO
++ */
++ PE23_AF_CSPI3_SCLK,
++ PE18_AF_CSPI3_MISO,
++ PE22_AF_CSPI3_MOSI,
++#endif
++ /* UART2 (J8 connector / multiplexed with Keypad) */
++#ifdef CONFIG_SERIAL_IMX_UART2
++# ifdef CONFIG_SERIAL_IMX_UART2_USE_RTSCTS
++ PE3_PF_UART2_CTS,
++ PE4_PF_UART2_RTS,
++# endif
++ PE6_PF_UART2_TXD,
++ PE7_PF_UART2_RXD,
++#endif
++ /* UART5 (J9 connector / multiplexed with CSI) */
++#ifdef CONFIG_SERIAL_IMX_UART5
++ PB18_AF_UART5_TXD,
++ PB19_AF_UART5_RXD,
++# ifdef CONFIG_SERIAL_IMX_UART5_USE_RTSCTS
++ PB20_AF_UART5_CTS,
++ PB21_AF_UART5_RTS,
++# endif
++#endif
++ /* UART6 (J9 connector / multiplexed with CSI) */
++#ifdef CONFIG_SERIAL_IMX_UART6
++ PB10_AF_UART6_TXD,
++ PB11_AF_UART6_RXD,
++# ifdef CONFIG_SERIAL_IMX_UART6_USE_RTSCTS
++ PB12_AF_UART6_CTS,
++ PB13_AF_UART6_RTS,
++# endif
++#endif
++ /* GPIOs */
++ /* CS can be used as GPIO too, if communication with TSC is deactivated (thanks
++ to TXB0108 chip (U23). INT pin can't and so must be reserved in any case */
++ (GPIO_PORTF | TSC2101_INT | GPIO_IN | GPIO_GPIO),
+};
+
-+static int apf27_i2c_0_init(struct platform_device *pdev)
-+{
-+ return mxc_gpio_setup_multiple_pins(mxc_i2c0_pins, ARRAY_SIZE(mxc_i2c0_pins),
-+ "I2C1");
-+}
+
-+static int apf27_i2c_0_exit(struct platform_device *pdev)
-+{
-+ mxc_gpio_release_multiple_pins(mxc_i2c0_pins, ARRAY_SIZE(mxc_i2c0_pins));
++#ifdef CONFIG_I2C
+
-+ return 0;
-+}
++/* APF27Dev makes I2C1 bus available */
+
-+static struct imxi2c_platform_data apf27_i2c_0_data __initconst = {
++static struct imxi2c_platform_data apf27dev_i2c0_data __initconst = {
+ .bitrate = 400000,
-+ .init = apf27_i2c_0_init,
-+ .exit = apf27_i2c_0_exit,
+};
+
+/* I2C1 devices: RTC & Optionnal Camera */
+# ifdef CONFIG_SOC_CAMERA_OV96XX
+static struct soc_camera_link ov96xx_iclink; /* declared later */
+#endif
-+static struct i2c_board_info apf27dev_i2c_devices_bus0[] = {
++
++static struct i2c_board_info apf27dev_i2c0_devices[] = {
+ [0] = {
+ /* APF27Dev has an RTC */
+ .type = "ds1374",
-+ .flags = 0, /* FIXME */
+ .addr = 0x68, /* E0=0, E1=1, E2=0 */
-+ .platform_data = NULL,
-+ .irq = 0
+ },
+# ifdef CONFIG_SOC_CAMERA_OV96XX
+ [1] = {
+ .type = "ov96xx",
-+ .flags = 0, /* FIXME */
+ .addr = 0x30,
+ .platform_data = &ov96xx_iclink,
-+ .irq = 0
+ },
+# endif
+};
@@ -1096,257 +1100,105 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27-dev.c
+};
+# endif /* CONFIG_VIDEO_AD9889 */
+
++
+/* I2C2 devices */
-+static struct i2c_board_info apf27dev_i2c_devices_bus1[] = {
++static struct i2c_board_info apf27dev_i2c1_devices[] = {
+# ifdef CONFIG_VIDEO_AD9889
+ [0] = {
+ .type = "ad9889",
-+ .flags = 0,
+ .addr = 0x39,
+ .platform_data = &apf27_ad9889_config,
+ .irq = IRQ_GPIOC(AD9889_INT)
+ },
-+# endif /* CONFIG_VIDEO_AD9889 */
++# endif
+};
+#endif /* CONFIG_I2C */
+
+
+/* UART2 signals are available on J8 connector (multiplexed with Keypad) */
+#ifdef CONFIG_SERIAL_IMX_UART2
-+
-+static int mxc_uart1_pins[] = {
-+#ifdef CONFIG_SERIAL_IMX_UART2_USE_RTSCTS
-+ PE3_PF_UART2_CTS,
-+ PE4_PF_UART2_RTS,
-+#endif
-+ PE6_PF_UART2_TXD,
-+ PE7_PF_UART2_RXD,
-+};
-+
-+static int uart_mxc_port1_init(struct platform_device *pdev)
-+{
-+ int res = mxc_gpio_setup_multiple_pins(mxc_uart1_pins,
-+ ARRAY_SIZE(mxc_uart1_pins), "UART2");
-+
-+ return res;
-+}
-+
-+static int uart_mxc_port1_exit(struct platform_device *pdev)
-+{
-+ mxc_gpio_release_multiple_pins(mxc_uart1_pins, ARRAY_SIZE(mxc_uart1_pins));
-+
-+ return 0;
-+}
-+
+static struct imxuart_platform_data uart1_pdata = {
-+ .init = uart_mxc_port1_init,
-+ .exit = uart_mxc_port1_exit,
-+#ifdef CONFIG_SERIAL_IMX_UART2_USE_RTSCTS
++# ifdef CONFIG_SERIAL_IMX_UART2_USE_RTSCTS
+ .flags = IMXUART_HAVE_RTSCTS,
-+#else
++# else
+ .flags = 0,
-+#endif
++# endif
+};
-+#endif /* CONFIG_SERIAL_IMX_UART2 */
++#endif
+
+
+/* UART5 signals are available on J9 connector (multiplexed with CSI) */
+#ifdef CONFIG_SERIAL_IMX_UART5
-+
-+static int mxc_uart4_pins[] = {
-+ PB19_AF_UART5_RXD,
-+ PB18_AF_UART5_TXD,
-+#ifdef CONFIG_SERIAL_IMX_UART5_USE_RTSCTS
-+ PB20_AF_UART5_CTS,
-+ PB21_AF_UART5_RTS,
-+#endif
-+};
-+
-+static int uart_mxc_port4_init(struct platform_device *pdev)
-+{
-+ int res = mxc_gpio_setup_multiple_pins(mxc_uart4_pins,
-+ ARRAY_SIZE(mxc_uart4_pins), "UART5");
-+
-+ return res;
-+}
-+
-+static int uart_mxc_port4_exit(struct platform_device *pdev)
-+{
-+ mxc_gpio_release_multiple_pins(mxc_uart4_pins,
-+ ARRAY_SIZE(mxc_uart4_pins));
-+
-+ return 0;
-+}
-+
+static struct imxuart_platform_data uart4_pdata = {
-+ .init = uart_mxc_port4_init,
-+ .exit = uart_mxc_port4_exit,
+#ifdef CONFIG_SERIAL_IMX_UART5_USE_RTSCTS
+ .flags = IMXUART_HAVE_RTSCTS,
+#else
+ .flags = 0,
+#endif
+};
-+#endif /* CONFIG_SERIAL_IMX_UART5 */
++#endif
+
+/* UART6 signals are available on J9 connector (multiplexed with CSI) */
+#ifdef CONFIG_SERIAL_IMX_UART6
-+
-+static int mxc_uart5_pins[] = {
-+ PB10_AF_UART6_TXD,
-+ PB11_AF_UART6_RXD,
-+#ifdef CONFIG_SERIAL_IMX_UART6_USE_RTSCTS
-+ PB12_AF_UART6_CTS,
-+ PB13_AF_UART6_RTS,
-+#endif
-+};
-+
-+static int uart_mxc_port5_init(struct platform_device *pdev)
-+{
-+ int res = mxc_gpio_setup_multiple_pins(mxc_uart5_pins,
-+ ARRAY_SIZE(mxc_uart5_pins), "UART6");
-+
-+ return res;
-+}
-+
-+static int uart_mxc_port5_exit(struct platform_device *pdev)
-+{
-+ mxc_gpio_release_multiple_pins(mxc_uart5_pins, ARRAY_SIZE(mxc_uart5_pins));
-+
-+ return 0;
-+}
-+
+static struct imxuart_platform_data uart5_pdata = {
-+ .init = uart_mxc_port5_init,
-+ .exit = uart_mxc_port5_exit,
+#ifdef CONFIG_SERIAL_IMX_UART6_USE_RTSCTS
+ .flags = IMXUART_HAVE_RTSCTS,
+#else
+ .flags = 0,
+#endif
+};
-+#endif /* CONFIG_SERIAL_IMX_UART6 */
++#endif
+
+
+/* SPI ports declarations */
-+#ifdef CONFIG_SPI_MXC_SELECT1
-+static int mxc_cspi0_pins[] = {
-+ /* PD28_PF_CSPI1_SS0, Preferably use CS pin as GPIO */
-+ PD29_PF_CSPI1_SCLK,
-+ PD30_PF_CSPI1_MISO,
-+ PD31_PF_CSPI1_MOSI
-+};
-+#endif /* CONFIG_SPI_MXC_SELECT1 */
+
-+#ifdef CONFIG_SPI_MXC_SELECT2
-+static int mxc_cspi1_pins[] = {
-+ /* PD19_PF_CSPI2_SS2,
-+ PD20_PF_CSPI2_SS1, Preferably use CS pin as GPIO
-+ PD21_PF_CSPI2_SS0, */
-+ PD22_PF_CSPI2_SCLK,
-+ PD23_PF_CSPI2_MISO,
-+ PD24_PF_CSPI2_MOSI
++#ifdef CONFIG_SPI_MXC_SELECT1
++static int apf27_dev_spi0_cs[] = {
++ (GPIO_PORTD + 28), /* 0: MAX1027 */
+};
-+#endif /* CONFIG_SPI_MXC_SELECT2 */
+
-+#ifdef CONFIG_SPI_MXC_SELECT3
-+static int mxc_cspi2_pins[] = {
-+ /*
-+ PE21_AF_CSPI3_SS,
-+ Preferably use CS pin as GPIO
-+ */
-+ PE23_AF_CSPI3_SCLK,
-+ PE18_AF_CSPI3_MISO,
-+ PE22_AF_CSPI3_MOSI
++static struct spi_imx_master apf27dev_spi0_data = {
++ .chipselect = apf27_dev_spi0_cs,
++ .num_chipselect = ARRAY_SIZE(apf27_dev_spi0_cs),
+};
-+#endif /* CONFIG_SPI_MXC_SELECT3 */
-+
-+#ifdef CONFIG_SPI_MXC_SELECT1
-+static int gpio_spi0_active(struct platform_device *pdev)
-+{
-+ return mxc_gpio_setup_multiple_pins(mxc_cspi0_pins,
-+ ARRAY_SIZE(mxc_cspi0_pins), "CSPI1");
-+}
-+
-+static int gpio_spi0_inactive(struct platform_device *pdev)
-+{
-+ mxc_gpio_release_multiple_pins(mxc_cspi0_pins, ARRAY_SIZE(mxc_cspi0_pins));
-+ return 0;
-+}
-+#endif /* CONFIG_SPI_MXC_SELECT1 */
++#endif
+
+#ifdef CONFIG_SPI_MXC_SELECT2
-+static int gpio_spi1_active(struct platform_device *pdev)
-+{
-+ return mxc_gpio_setup_multiple_pins(mxc_cspi1_pins,
-+ ARRAY_SIZE(mxc_cspi1_pins), "CSPI2");
-+}
-+
-+static int gpio_spi1_inactive(struct platform_device *pdev)
-+{
-+ mxc_gpio_release_multiple_pins(mxc_cspi1_pins, ARRAY_SIZE(mxc_cspi1_pins));
-+ return 0;
-+}
-+#endif /* CONFIG_SPI_MXC_SELECT2 */
-+
-+#ifdef CONFIG_SPI_MXC_SELECT3
-+static int gpio_spi2_active(struct platform_device *pdev)
-+{
-+ return mxc_gpio_setup_multiple_pins(mxc_cspi2_pins, ARRAY_SIZE(mxc_cspi2_pins), "CSPI3");
-+}
-+
-+static int gpio_spi2_inactive(struct platform_device *pdev)
-+{
-+ mxc_gpio_release_multiple_pins(mxc_cspi2_pins, ARRAY_SIZE(mxc_cspi2_pins));
-+ return 0;
-+}
-+#endif /* CONFIG_SPI_MXC_SELECT3 */
-+
-+#ifdef CONFIG_SPI_MXC_SELECT1
-+static struct spi_imx_master imx_spi0_master_info = {
-+ .num_chipselect = 1,
-+ .enable_dma = 0,
-+ .init = gpio_spi0_active,
-+ .exit = gpio_spi0_inactive,
++static int apf27_dev_spi1_cs[] = {
++ (GPIO_PORTD + 21), /* 0: SPI2_SS0 used as GPIO for TSC2101_CS */
++ (GPIO_PORTD + 20), /* 1: MCP251X_CS */
++ (GPIO_PORTB + 17), /* 2: SPIDEV_CS (CSI_D5) */
+};
-+#endif /* CONFIG_SPI_MXC_SELECT1 */
+
-+#ifdef CONFIG_SPI_MXC_SELECT2
-+static struct spi_imx_master imx_spi1_master_info = {
-+ .num_chipselect = 3,
-+ .enable_dma = 0,
-+ .init = gpio_spi1_active,
-+ .exit = gpio_spi1_inactive,
++static struct spi_imx_master apf27dev_spi1_data = {
++ .chipselect = apf27_dev_spi1_cs,
++ .num_chipselect = ARRAY_SIZE(apf27_dev_spi1_cs),
+};
-+#endif /* CONFIG_SPI_MXC_SELECT2 */
++#endif
+
+#ifdef CONFIG_SPI_MXC_SELECT3
-+static struct spi_imx_master imx_spi2_master_info = {
-+ .num_chipselect = 1,
-+ .enable_dma = 0,
-+ .init = gpio_spi2_active,
-+ .exit = gpio_spi2_inactive,
++static int apf27_dev_spi2_cs[] = {
+};
-+#endif /* CONFIG_SPI_MXC_SELECT3 */
+
++static struct spi_imx_master apf27dev_spi2_data = {
++ .chipselect = apf27_dev_spi2_cs,
++ .num_chipselect = ARRAY_SIZE(apf27_dev_spi2_cs),
++};
++#endif
+
-+#if 0 /* TBDJB */
+
-+/* APF27Dev has an optionnal 7 channels 10 bits ADC (SPI1) */
++/* APF27Dev has an optionnal 7 channels 10 bits ADC (on SPI1) */
+#ifdef CONFIG_ARMADEUS_MAX1027
+#define MAX1027_EOC_INT 15
+#define MAX1027_CNVST 14
-+#define MAX1027_CS (GPIO_PORTD | 28)
+
+static int max1027_pins[] = {
-+ (MAX1027_CS | GPIO_OUT | GPIO_GPIO),
+ (GPIO_PORTE | GPIO_IN | GPIO_GPIO | MAX1027_EOC_INT),
+ (GPIO_PORTE | GPIO_OUT | GPIO_GPIO | MAX1027_CNVST),
+};
+
+static int max1027_init(struct spi_device *spi)
+{
-+ gpio_set_value(MAX1027_CS, 1);
+ return mxc_gpio_setup_multiple_pins(max1027_pins, ARRAY_SIZE(max1027_pins), "MAX1027");
+}
+
@@ -1356,18 +1208,6 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27-dev.c
+ return 0;
+}
+
-+static void max1027_cs(u32 command)
-+{
-+ if (command == SPI_CS_DEASSERT)
-+ gpio_set_value(MAX1027_CS, 1);
-+ else
-+ gpio_set_value(MAX1027_CS, 0);
-+}
-+
-+static struct spi_imx_chip max1027_hw = {
-+ .cs_control = max1027_cs,
-+};
-+
+static struct max1027_config apf27_max1027_config = {
+ .conv = MAX1027_CONV_DEFAULT,
+ .setup = MAX1027_SETUP_DEFAULT,
@@ -1379,56 +1219,11 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27-dev.c
+#endif /* CONFIG_ARMADEUS_MAX1027 */
+
+/* APF27Dev has a SPI Touchscreen controller */
-+#define TSC2101_INT 17
-+#define TSC2101_CS (GPIO_PORTD | 21) /* SPI2_SS0 used as GPIO */
-+
-+/* CS can be used as GPIO too, if communication with TSC is deactivated (thanks
-+ to TXB0108 chip (U23). INT pin can't and so must be reserved in any case */
-+static int tsc2101_pins[] = {
-+ (TSC2101_CS | GPIO_OUT | GPIO_GPIO),
-+};
-+static int tsc2101_fixed_pins[] = {
-+ (GPIO_PORTF | TSC2101_INT | GPIO_IN | GPIO_GPIO), /* configure INT pin as GPIO */
-+};
-+
-+static int tsc2101_init_gpio(void)
-+{
-+ /* Initialize CS high */
-+ gpio_set_value(TSC2101_CS, 1);
-+
-+ return mxc_gpio_setup_multiple_pins(tsc2101_pins, ARRAY_SIZE(tsc2101_pins),
-+ "TSC2101");
-+}
-+
-+static int tsc2101_init_fixed_gpio(void)
-+{
-+ return mxc_gpio_setup_multiple_pins(tsc2101_fixed_pins,
-+ ARRAY_SIZE(tsc2101_fixed_pins), "TSC2101");
-+}
-+
-+static void tsc2101_release_gpio(void)
-+{
-+ mxc_gpio_release_multiple_pins(tsc2101_pins, ARRAY_SIZE(tsc2101_pins));
-+}
-+
-+static void tsc2101_cs(u32 command)
-+{
-+ if (command == SPI_CS_DEASSERT)
-+ gpio_set_value(TSC2101_CS, 1);
-+ else
-+ gpio_set_value(TSC2101_CS, 0);
-+}
-+
-+static struct spi_imx_chip tsc2101_hw = {
-+ .cs_control = tsc2101_cs,
-+};
+
+static struct tsc210x_config apf27_tsc2101_config = {
+ .mclk = 12288000, /* MCLK value in Master mode */
+ .use_internal = 1, /* -> use internal voltage reference */
+ .monitor = TSC_BAT1 | TSC_AUX | TSC_TEMP,
-+ .init = tsc2101_init_gpio,
-+ .exit = tsc2101_release_gpio,
+};
+
+
@@ -1436,79 +1231,32 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27-dev.c
+#ifdef CONFIG_CAN_MCP251X
+
+#define CAN_MCP251X_INT 19
-+#define MCP251X_CS (GPIO_PORTD | 20)
+
+static int mcp251x_pins[] = {
+ (GPIO_PORTD | CAN_MCP251X_INT | GPIO_IN | GPIO_GPIO), /* IRQ pin as GPIO */
-+ (MCP251X_CS | GPIO_OUT | GPIO_GPIO),
+};
+
-+static void mcp251x_init_irq(void)
++static int mcp251x_init_irq(struct spi_device *spi)
+{
-+ gpio_set_value(MCP251X_CS, 1);
++ printk("%s \n", __func__);
++
++ /* Still needed here ?? */
+ mxc_gpio_setup_multiple_pins(mcp251x_pins, ARRAY_SIZE(mcp251x_pins), "MCP251x");
-+}
+
-+static void mcp251x_cs(u32 command)
-+{
-+ if (command == SPI_CS_DEASSERT)
-+ gpio_set_value(MCP251X_CS, 1);
-+ else
-+ gpio_set_value(MCP251X_CS, 0);
++ return 0;
+}
+
-+static struct spi_imx_chip mcp251X_hw = {
-+ .cs_control = mcp251x_cs,
-+};
-+
+static struct mcp251x_platform_data apf27_mcp251x_config = {
+ .oscillator_frequency = 16000000,
+ .board_specific_setup = mcp251x_init_irq,
-+ .device_reset = NULL,
-+ .transceiver_enable = NULL,
+};
+#endif /* CONFIG_CAN_MCP251X */
+
-+#endif /* TBDJB */
-+
-+/* SPI2 can be used as userspace general SPI bus (CS 2) */
-+#ifdef CONFIG_SPI_SPIDEV
-+#define SPIDEV_CS (GPIO_PORTB | 17)
-+
-+static int spidev_pins[] = {
-+ (SPIDEV_CS | GPIO_OUT | GPIO_GPIO),
-+};
-+
-+static int spidev_init_gpio(void)
-+{
-+ gpio_set_value(SPIDEV_CS, 1);
-+ return mxc_gpio_setup_multiple_pins(spidev_pins, ARRAY_SIZE(spidev_pins), "spidev");
-+}
-+
-+/* Chip select command for spidev */
-+static void spidev_cs(u32 command)
-+{
-+ if (command == SPI_CS_DEASSERT)
-+ gpio_set_value(SPIDEV_CS, 1);
-+ else
-+ gpio_set_value(SPIDEV_CS, 0);
-+}
-+
-+static struct spi_imx_chip spidev_hw = {
-+ .cs_control = spidev_cs,
-+};
-+
-+static struct spidev_platform_data apf27_spidev_config = {
-+ .init = spidev_init_gpio,
-+};
-+#endif /* CONFIG_SPI_SPIDEV */
+
-+static struct spi_board_info spi_board_info[] __initdata = {
-+#if 0 /* TBDJB */
++static struct spi_board_info apf27dev_spi_board_info[] __initdata = {
+#ifdef CONFIG_ARMADEUS_MAX1027
+ {
+ .modalias = "max1027",
-+ .controller_data = &max1027_hw,
+ .max_speed_hz = 8000000,
+ .bus_num = 0, /* SPI1 */
+ .irq = IRQ_GPIOE(MAX1027_EOC_INT),
@@ -1516,11 +1264,10 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27-dev.c
+ .mode = 0,
+ .platform_data = &apf27_max1027_config,
+ },
-+#endif /* CONFIG_ARMADEUS_MAX1027 */
++#endif
+#ifdef CONFIG_SPI_TSC2102
+ {
+ .modalias = "tsc210x",
-+ .controller_data = &tsc2101_hw,
+ .max_speed_hz = 8000000,
+ .bus_num = 1, /* SPI2 */
+ .irq = IRQ_GPIOF(TSC2101_INT),
@@ -1528,11 +1275,10 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27-dev.c
+ .mode = 0,
+ .platform_data = &apf27_tsc2101_config,
+ },
-+#endif /* CONFIG_SPI_TSC2102 */
++#endif
+#ifdef CONFIG_CAN_MCP251X
+ {
+ .modalias = "mcp251x",
-+ .controller_data = &mcp251X_hw,
+ .max_speed_hz = 8000000, /* 8MHz */
+ .bus_num = 1, /* SPI2 */
+ .mode = 0,
@@ -1540,76 +1286,70 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27-dev.c
+ .irq = IRQ_GPIOD(CAN_MCP251X_INT),
+ .platform_data = &apf27_mcp251x_config,
+ },
-+#endif /* CONFIG_CAN_MCP251X */
-+#endif /* TBDJB */
++#endif
+#ifdef CONFIG_SPI_SPIDEV
++/* SPI2 can be used as userspace general SPI bus (CS 2) */
+ {
+ .modalias = "spidev",
-+ .controller_data = &spidev_hw,
+ .max_speed_hz = 8000000, /* 8MHz */
+ .bus_num = 1, /* SPI2 */
+ .mode = SPI_MODE_1,
+ .chip_select = 2,
-+ .platform_data = &apf27_spidev_config,
+ },
-+#endif /* CONFIG_SPI_SPIDEV */
-+};
-+
-+#if 0 /* TBDJB */
-+/* APF27Dev adds an USB PHY on i.MX27 USB_HOST port 2 */
-+#ifdef CONFIG_USB_EHCI_MXC
-+static int mxc_usbh1_pins[] = {
-+ PB22_PF_USBH1_SUSP,
-+ PB23_PF_USB_PWR,
-+ PB24_PF_USB_OC,
-+ PB25_PF_USBH1_RCV,
-+ PB26_PF_USBH1_FS,
-+ PB27_PF_USBH1_OE,
-+ PB28_PF_USBH1_TXDM,
-+ PB29_PF_USBH1_TXDP,
-+ PB30_PF_USBH1_RXDM,
-+ PB31_PF_USBH1_RXDP
++#endif
+};
+
++/* APF27Dev adds an USB PHY on i.MX27 USB_HOST 1 */
++#if 0
+static int apf27_usbh1_init(struct platform_device *pdev)
+{
-+ int ret;
++ int ret = 0;
+ uint32_t temp;
++ struct clk *usbclk;
++ void __iomem *usb_base;
++ void __iomem *usbreg_base;
+
-+ ret = mxc_gpio_setup_multiple_pins(mxc_usbh1_pins,
-+ ARRAY_SIZE(mxc_usbh1_pins), "usbh1");
-+ if (ret)
-+ return ret;
++ usb_base = ioremap(OTG_BASE_ADDR, SZ_4K);
+
-+ temp = readl(IO_ADDRESS(OTG_BASE_ADDR) + 0x600);
++ printk("-------- apf27_usbh1_init\n");
++
++ usbclk = clk_get(&pdev->dev, "usb");
++ /* no clock -> no access to USB regs ! */
++
++ usbreg_base = usb_base + 0x600;
++ temp = __raw_readl(usbreg_base);
+ pr_debug("USB_CTRL before: 0x%08x\n", temp);
+ temp &= ~( (3 << 13) | (1 << 8) | 1 );
+ temp |= (1 << 4) | (1 << 11) ;
-+ writel(temp, IO_ADDRESS(OTG_BASE_ADDR) + 0x600);
++ __raw_writel(temp, usbreg_base);
+ pr_debug("USB_CTRL after: 0x%08x\n", temp);
+
-+ temp = readl(IO_ADDRESS(OTG_BASE_ADDR) + 0x384);
++ usbreg_base = usb_base + 0x384;
++ temp = __raw_readl(usbreg_base);
+ pr_debug("PORTSC1 before: 0x%08x\n", temp);
+ temp &= ~(3 << 30);
+ temp |= 3 << 30;
-+ writel(temp, IO_ADDRESS(OTG_BASE_ADDR) + 0x384);
++ __raw_writel(temp, usbreg_base);
+ pr_debug("PORTSC1 after: 0x%08x\n", temp);
+ mdelay(10);
+
-+ temp = readl(IO_ADDRESS(OTG_BASE_ADDR) + 0x340);
++ usbreg_base = usb_base + 0x340;
++ temp = __raw_readl(usbreg_base);
+ temp |= 0x02; /* reset controller */
-+ writel(temp, IO_ADDRESS(OTG_BASE_ADDR) + 0x340);
++ __raw_writel(temp, usbreg_base);
+ pr_debug("reset controller: 0x%08x\n", temp);
+ mdelay(10);
+
++ iounmap(usb_base);
++
+ return ret;
+}
-+
-+struct mxc_usb2_platform_data ehci1_pdata = {
-+ .init = apf27_usbh1_init,
++#endif
++struct mxc_usbh_platform_data usbh1_pdata = {
++// .init = apf27_usbh1_init,
++ .portsc = MXC_EHCI_MODE_SERIAL,
++ .flags = MXC_EHCI_POWER_PINS_ENABLED,
+};
-+#endif /* CONFIG_USB_EHCI_MXC */
-+#endif /* TBDJB */
+
+
+#if defined(CONFIG_SND_IMX_TSC2102) || defined(CONFIG_SND_IMX_TSC2102_MODULE)
@@ -1729,10 +1469,6 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27-dev.c
+ .exit = apf27_sdhc2_exit,
+};
+
-+static inline void apf27dev_init_mmc(void)
-+{
-+ mxc_register_device(&mxc_sdhc_device1, &apf27_sdhc2_pdata);
-+}
+#endif /* CONFIG_MMC_MXC */
+
+
@@ -1908,7 +1644,13 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27-dev.c
+
+void __init apf27_baseboard_init(void)
+{
-+ printk(" Registering APF27_Dev ressources:");
++ int ret;
++
++ printk("APF27Dev baseboard\n");
++ ret = mxc_gpio_setup_multiple_pins(apf27dev_pins,
++ ARRAY_SIZE(apf27dev_pins), "APF27DEV");
++ if (ret)
++ printk(KERN_ERR "apf27dev: Failed to setup pins (%d)\n", ret);
+
+#if defined(CONFIG_FB_MXC) || defined(CONFIG_FB_IMX)
+ /* APF27Dev has an LCD connector */
@@ -1918,68 +1660,69 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27-dev.c
+ apf27dev_pwr_ctrl_gpio_active();
+
+#ifdef CONFIG_SERIAL_IMX_UART2
-+ mxc_register_device(&mxc_uart_device1, &uart1_pdata);
++ imx27_add_imx_uart1(&uart1_pdata);
+#endif
+#ifdef CONFIG_SERIAL_IMX_UART5
-+ mxc_register_device(&mxc_uart_device4, &uart4_pdata);
++ imx27_add_imx_uart4(&uart4_pdata);
+#endif
+#ifdef CONFIG_SERIAL_IMX_UART6
-+ mxc_register_device(&mxc_uart_device5, &uart5_pdata);
-+#endif
-+#if 0
-+#ifdef CONFIG_USB_EHCI_MXC
-+ mxc_register_device(&mxc_ehci1, &ehci1_pdata);
-+#endif
-+#endif
-+#ifdef CONFIG_I2C
-+ imx27_add_i2c_imx0(&apf27_i2c_0_data);
-+ i2c_register_board_info(0, apf27dev_i2c_devices_bus0,
-+ ARRAY_SIZE(apf27dev_i2c_devices_bus0));
-+ i2c_register_board_info(1, apf27dev_i2c_devices_bus1,
-+ ARRAY_SIZE(apf27dev_i2c_devices_bus1));
++ imx27_add_imx_uart5(&uart5_pdata);
+#endif
++
++ mxc_register_device(&mxc_usbh1, &usbh1_pdata);
++
++ i2c_register_board_info(0, apf27dev_i2c0_devices,
++ ARRAY_SIZE(apf27dev_i2c0_devices));
++ imx27_add_i2c_imx0(&apf27dev_i2c0_data);
++ /* I2C2 bus already registered by APF27 module */
++ i2c_register_board_info(1, apf27dev_i2c1_devices,
++ ARRAY_SIZE(apf27dev_i2c1_devices));
++
+#ifdef CONFIG_SPI_MXC_SELECT1
-+ mxc_register_device(&mxc_spi_device0, &imx_spi0_master_info);
++ /* Optionnal ADC */
++ imx27_add_spi_imx0(&apf27dev_spi0_data);
+#endif
+#ifdef CONFIG_SPI_MXC_SELECT2
-+ mxc_register_device(&mxc_spi_device1, &imx_spi1_master_info);
++ /* TSC2101 + optionnal CAN */
++ /* Can also be used as USB2 or external SPI, with jumper J23 */
++ /* Let hardware decide the state of CS at startup */
++ mxc_gpio_mode(GPIO_PORTD | 21 | GPIO_GPIO | GPIO_IN);
++ mxc_gpio_mode(GPIO_PORTD | 20 | GPIO_GPIO | GPIO_IN);
++ mxc_gpio_mode(GPIO_PORTB | 17 | GPIO_GPIO | GPIO_IN);
++ imx27_add_spi_imx1(&apf27dev_spi1_data);
+#endif
+#ifdef CONFIG_SPI_MXC_SELECT3
-+ mxc_register_device(&mxc_spi_device2, &imx_spi2_master_info);
++ /* Output on J8 connector (muxed with SD1) */
++ imx27_add_spi_imx2(&apf27dev_spi2_data);
+#endif
++ spi_register_board_info(apf27dev_spi_board_info,
++ ARRAY_SIZE(apf27dev_spi_board_info));
+
+ platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
-+
++#if 0
+#ifdef CONFIG_SPI_TSC2102
+ /* Due to an hardware "bug", force TSC2101 ChipSelect at startup
+ (on some APF27Dev boards CS stays low, due to TXB0108 chip (U23))
+ and too weak i.MX27 internal pullup resistors */
+ tsc2101_init_gpio();
+ tsc2101_release_gpio();
-+ /* Reserve "fixed" GPIOs */
-+ tsc2101_init_fixed_gpio();
+#endif
-+#if defined (CONFIG_ARMADEUS_MAX1027) || defined (CONFIG_SPI_TSC2102) || defined (CONFIG_CAN_MCP251X) || defined(CONFIG_SPI_SPIDEV)
-+ spi_register_board_info(spi_board_info,
-+ ARRAY_SIZE(spi_board_info));
-+#endif
-+#ifdef CONFIG_MMC_MXC
-+ apf27dev_init_mmc();
+#endif
++
++ mxc_register_device(&mxc_sdhc_device1, &apf27_sdhc2_pdata);
++
+#ifdef CONFIG_VIDEO_MX27
+ mxc_register_device(&mx27_camera_device, &apf27_camera);
+#endif
+#ifdef CONFIG_MACH_APF27_DEV_EXT
+ apf27dev_extension_init();
+#endif
-+
-+ printk("done\n");
+}
+
Index: linux-2.6.36/arch/arm/mach-imx/apf27-lcd.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.36/arch/arm/mach-imx/apf27-lcd.c 2010-11-25 19:29:57.000000000 +0100
++++ linux-2.6.36/arch/arm/mach-imx/apf27-lcd.c 2011-01-07 09:43:59.000000000 +0100
@@ -0,0 +1,222 @@
+/*
+ * apf27-lcd.c
@@ -2206,7 +1949,7 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27-lcd.c
Index: linux-2.6.36/arch/arm/mach-imx/apf27-dev-ext-apw.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.36/arch/arm/mach-imx/apf27-dev-ext-apw.c 2010-11-25 19:29:57.000000000 +0100
++++ linux-2.6.36/arch/arm/mach-imx/apf27-dev-ext-apw.c 2011-01-07 09:43:59.000000000 +0100
@@ -0,0 +1,190 @@
+ /*
+ * apf27-dev-ext-apw.c
@@ -2401,7 +2144,7 @@ Index: linux-2.6.36/arch/arm/mach-imx/apf27-dev-ext-apw.c
Index: linux-2.6.36/arch/arm/plat-mxc/include/mach/uncompress.h
===================================================================
--- linux-2.6.36.orig/arch/arm/plat-mxc/include/mach/uncompress.h 2010-10-20 22:30:22.000000000 +0200
-+++ linux-2.6.36/arch/arm/plat-mxc/include/mach/uncompress.h 2010-11-25 20:58:31.000000000 +0100
++++ linux-2.6.36/arch/arm/plat-mxc/include/mach/uncompress.h 2011-01-10 17:48:42.000000000 +0100
@@ -81,6 +81,7 @@
case MACH_TYPE_MX21ADS:
case MACH_TYPE_PCA100:
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/291-apf27-armadeus-add_mach_board-apf27_h.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/291-apf27-armadeus-add_mach_board-apf27_h.patch
index 47a72c6..afea8ad 100644
--- a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/291-apf27-armadeus-add_mach_board-apf27_h.patch
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/291-apf27-armadeus-add_mach_board-apf27_h.patch
@@ -3,7 +3,7 @@ Signed-off-by: Julien Boibessot <jul...@ar...>
Index: linux-2.6.36/arch/arm/plat-mxc/include/mach/board-apf27.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.36/arch/arm/plat-mxc/include/mach/board-apf27.h 2010-12-22 14:32:20.000000000 +0100
++++ linux-2.6.36/arch/arm/plat-mxc/include/mach/board-apf27.h 2010-12-22 14:34:38.000000000 +0100
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2008-2010 Armadeus Systems
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/293-armadeus-spi_imx-add_config_options_to_individually_activate_spi_busses.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/293-armadeus-spi_imx-add_config_options_to_individually_activate_spi_busses.patch
new file mode 100644
index 0000000..a6068f9
--- /dev/null
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/293-armadeus-spi_imx-add_config_options_to_individually_activate_spi_busses.patch
@@ -0,0 +1,28 @@
+Signed-off-by: Fabien Marteau <fab...@ar...>
+
+Index: linux-2.6.36/drivers/spi/Kconfig
+===================================================================
+--- linux-2.6.36.orig/drivers/spi/Kconfig 2011-01-07 09:43:59.000000000 +0100
++++ linux-2.6.36/drivers/spi/Kconfig 2011-01-07 15:52:24.000000000 +0100
+@@ -151,6 +151,21 @@
+ This enables using the Freescale i.MX SPI controllers in master
+ mode.
+
++config SPI_MXC_SELECT1
++ bool "CSPI1"
++ depends on SPI_IMX && (ARCH_MX2 || ARCH_MX3)
++ default y
++
++config SPI_MXC_SELECT2
++ bool "CSPI2"
++ depends on SPI_IMX && (ARCH_MX2 || ARCH_MX3)
++ default n
++
++config SPI_MXC_SELECT3
++ bool "CSPI3"
++ depends on SPI_IMX && (MACH_MX27 || MACH_MX31)
++ default n
++
+ config SPI_LM70_LLP
+ tristate "Parallel port adapter for LM70 eval board (DEVELOPMENT)"
+ depends on PARPORT && EXPERIMENTAL
diff --git a/target/linux/modules/max1027/max1027.c b/target/linux/modules/max1027/max1027.c
index 25b2b4d..dd31129 100644
--- a/target/linux/modules/max1027/max1027.c
+++ b/target/linux/modules/max1027/max1027.c
@@ -49,7 +49,7 @@
#define DRIVER_NAME "max1027"
-#define DRIVER_VERSION "0.7"
+#define DRIVER_VERSION "0.71"
/* Internal registers prefixes */
@@ -479,15 +479,6 @@ static int max1027_dev_release(struct inode *inode, struct file *file)
return 0;
}
-static int max1027_dev_ioctl( struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg )
-{
- int ret = 0;
-
- printk( DRIVER_NAME " ## IOCTL received: (0x%x) ##\n", cmd );
-
- return ret;
-}
-
static struct file_operations max1027_fops = {
.owner = THIS_MODULE,
.llseek = no_llseek,
@@ -495,7 +486,6 @@ static struct file_operations max1027_fops = {
.read = max1027_dev_read,
.open = max1027_dev_open,
.release = max1027_dev_release,
- .ioctl = max1027_dev_ioctl,
};
/* sysfs hook functions */
hooks/post-receive
--
armadeus
|
|
From: Fabien M <fa...@us...> - 2011-01-11 09:04:26
|
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 9cba19ad137f1e07ffb390f70022fff6492868a0 (commit)
from 6b1e43509efefc895681979b7499bf35fa3d7543 (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 9cba19ad137f1e07ffb390f70022fff6492868a0
Author: Fabien Marteau <fab...@ar...>
Date: Tue Jan 11 10:03:41 2011 +0100
[LINUX] Fix bug in patch 359-as5011
-----------------------------------------------------------------------
Summary of changes:
...us-joystick-adding_as5011_joystick_driver.patch | 47 ++++++++++---------
1 files changed, 25 insertions(+), 22 deletions(-)
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/359-armadeus-joystick-adding_as5011_joystick_driver.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/359-armadeus-joystick-adding_as5011_joystick_driver.patch
index ac0ae97..7994052 100644
--- a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/359-armadeus-joystick-adding_as5011_joystick_driver.patch
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/359-armadeus-joystick-adding_as5011_joystick_driver.patch
@@ -5,7 +5,7 @@ Signed-off-by: Fabien Marteau <fab...@ar...>
Index: linux-2.6.36/drivers/input/joystick/as5011.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.36/drivers/input/joystick/as5011.c 2011-01-10 09:36:32.000000000 +0100
++++ linux-2.6.36/drivers/input/joystick/as5011.c 2011-01-11 09:58:15.000000000 +0100
@@ -0,0 +1,368 @@
+/*
+ * Copyright (c) 2010, 2011 Fabien Marteau <fab...@ar...>
@@ -377,8 +377,8 @@ Index: linux-2.6.36/drivers/input/joystick/as5011.c
+
Index: linux-2.6.36/drivers/input/joystick/Kconfig
===================================================================
---- linux-2.6.36.orig/drivers/input/joystick/Kconfig 2010-10-20 22:30:22.000000000 +0200
-+++ linux-2.6.36/drivers/input/joystick/Kconfig 2011-01-03 16:58:29.000000000 +0100
+--- linux-2.6.36.orig/drivers/input/joystick/Kconfig 2011-01-11 09:57:28.000000000 +0100
++++ linux-2.6.36/drivers/input/joystick/Kconfig 2011-01-11 09:58:15.000000000 +0100
@@ -255,6 +255,15 @@
To compile this driver as a module, choose M here: the
module will be called amijoy.
@@ -397,8 +397,8 @@ Index: linux-2.6.36/drivers/input/joystick/Kconfig
select GAMEPORT
Index: linux-2.6.36/drivers/input/joystick/Makefile
===================================================================
---- linux-2.6.36.orig/drivers/input/joystick/Makefile 2010-10-20 22:30:22.000000000 +0200
-+++ linux-2.6.36/drivers/input/joystick/Makefile 2011-01-03 16:58:29.000000000 +0100
+--- linux-2.6.36.orig/drivers/input/joystick/Makefile 2011-01-11 09:57:28.000000000 +0100
++++ linux-2.6.36/drivers/input/joystick/Makefile 2011-01-11 09:58:15.000000000 +0100
@@ -7,6 +7,7 @@
obj-$(CONFIG_JOYSTICK_A3D) += a3d.o
obj-$(CONFIG_JOYSTICK_ADI) += adi.o
@@ -409,23 +409,26 @@ Index: linux-2.6.36/drivers/input/joystick/Makefile
obj-$(CONFIG_JOYSTICK_DB9) += db9.o
Index: linux-2.6.36/include/linux/input/as5011.h
===================================================================
---- linux-2.6.36.orig/include/linux/input/as5011.h 2011-01-10 09:17:59.000000000 +0100
-+++ linux-2.6.36/include/linux/input/as5011.h 2011-01-10 09:18:58.000000000 +0100
-@@ -9,14 +9,10 @@
- * the Free Software Foundation.
- */
-
--#include <linux/mutex.h>
--
--#define AS5011_MAX_NAME_LENGTH 64
--
- struct as5011_platform_data {
-- int button_gpio;
-- int int_irq; /* irq number */
-- int int_edge;/* irq edge IRQ_TYPE_EDGE_[FALLING,RISING,BOTH] */
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.36/include/linux/input/as5011.h 2011-01-11 09:58:50.000000000 +0100
+@@ -0,0 +1,20 @@
++#ifndef _AS5011_H
++#define _AS5011_H
++
++/*
++ * Copyright (c) 2010, 2011 Fabien Marteau <fab...@ar...>
++ *
++ * This program is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 as published by
++ * the Free Software Foundation.
++ */
++
++struct as5011_platform_data {
+ unsigned int button_gpio;
+ unsigned int axis_irq; /* irq number */
+ unsigned long axis_irqflags;
- char xp, xn; /* threshold for x axis */
- char yp, yn; /* threshold for y axis */
- };
++ char xp, xn; /* threshold for x axis */
++ char yp, yn; /* threshold for y axis */
++};
++
++#endif /* _AS5011_H */
hooks/post-receive
--
armadeus
|
|
From: Fabien M <fa...@us...> - 2011-01-10 08:41:24
|
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 6b1e43509efefc895681979b7499bf35fa3d7543 (commit)
via 9b86caff4f41a06e6a9350b692c34073e7ecaf76 (commit)
from bb7c62bf01c318b29450250ff8d06a19d7d8a2cf (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 6b1e43509efefc895681979b7499bf35fa3d7543
Merge: 9b86caff4f41a06e6a9350b692c34073e7ecaf76 bb7c62bf01c318b29450250ff8d06a19d7d8a2cf
Author: Fabien Marteau <fab...@ar...>
Date: Mon Jan 10 09:41:01 2011 +0100
Merge branch 'master' of ssh://armadeus.git.sourceforge.net/gitroot/armadeus/armadeus
commit 9b86caff4f41a06e6a9350b692c34073e7ecaf76
Author: Fabien Marteau <fab...@ar...>
Date: Mon Jan 10 09:40:03 2011 +0100
[LINUX] Updating as5011 drivers according to kernel developper comments
-----------------------------------------------------------------------
Summary of changes:
...us-joystick-adding_as5011_joystick_driver.patch | 647 ++++++++------------
1 files changed, 269 insertions(+), 378 deletions(-)
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/359-armadeus-joystick-adding_as5011_joystick_driver.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/359-armadeus-joystick-adding_as5011_joystick_driver.patch
index 28e6d8a..ac0ae97 100644
--- a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/359-armadeus-joystick-adding_as5011_joystick_driver.patch
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/359-armadeus-joystick-adding_as5011_joystick_driver.patch
@@ -5,19 +5,12 @@ Signed-off-by: Fabien Marteau <fab...@ar...>
Index: linux-2.6.36/drivers/input/joystick/as5011.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.36/drivers/input/joystick/as5011.c 2010-12-30 10:12:13.000000000 +0100
-@@ -0,0 +1,418 @@
++++ linux-2.6.36/drivers/input/joystick/as5011.c 2011-01-10 09:36:32.000000000 +0100
+@@ -0,0 +1,368 @@
+/*
-+ * Copyright (c) 2010 Fabien Marteau <fab...@ar...>
-+ *
++ * Copyright (c) 2010, 2011 Fabien Marteau <fab...@ar...>
+ * Sponsored by ARMadeus Systems
-+ */
-+
-+/*
-+ * Driver for Austria Microsystems joysticks AS5011
-+ */
-+
-+/*
++ *
+ * 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
@@ -32,373 +25,334 @@ Index: linux-2.6.36/drivers/input/joystick/as5011.c
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
++ * Driver for Austria Microsystems joysticks AS5011
++ *
+ * TODO:
++ * - Power on the chip when open() and power down when close()
+ * - Manage power mode
+ */
+
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/slab.h>
+#include <linux/i2c.h>
-+#include <linux/string.h>
-+#include <linux/list.h>
-+#include <linux/sysfs.h>
-+#include <linux/ctype.h>
-+#include <linux/hwmon-sysfs.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/input.h>
+#include <linux/interrupt.h>
-+#include <linux/mutex.h>
-+
+#include <linux/input.h>
+#include <linux/gpio.h>
-+#include <linux/workqueue.h>
+#include <linux/delay.h>
++#include <linux/input/as5011.h>
++#include <linux/slab.h>
+
-+#include <linux/as5011.h>
+#define DRIVER_DESC "Driver for Austria Microsystems AS5011 joystick"
++#define MODULE_DEVICE_ALIAS "as5011"
+
+MODULE_AUTHOR("Fabien Marteau <fab...@ar...>");
+MODULE_DESCRIPTION(DRIVER_DESC);
+MODULE_LICENSE("GPL");
+
-+#define SIZE_NAME 30
-+#define SIZE_EVENT_PATH 40
++/* registers */
++#define AS5011_CTRL1 0x76
++#define AS5011_CTRL2 0x75
++#define AS5011_XP 0x43
++#define AS5011_XN 0x44
++#define AS5011_YP 0x53
++#define AS5011_YN 0x54
++#define AS5011_X_REG 0x41
++#define AS5011_Y_REG 0x42
++#define AS5011_X_RES_INT 0x51
++#define AS5011_Y_RES_INT 0x52
++
++/* CTRL1 bits */
++#define AS5011_CTRL1_LP_PULSED 0x80
++#define AS5011_CTRL1_LP_ACTIVE 0x40
++#define AS5011_CTRL1_LP_CONTINUE 0x20
++#define AS5011_CTRL1_INT_WUP_EN 0x10
++#define AS5011_CTRL1_INT_ACT_EN 0x08
++#define AS5011_CTRL1_EXT_CLK_EN 0x04
++#define AS5011_CTRL1_SOFT_RST 0x02
++#define AS5011_CTRL1_DATA_VALID 0x01
++
++/* CTRL2 bits */
++#define AS5011_CTRL2_EXT_SAMPLE_EN 0x08
++#define AS5011_CTRL2_RC_BIAS_ON 0x04
++#define AS5011_CTRL2_INV_SPINNING 0x02
++
+#define AS5011_MAX_AXIS 80
+#define AS5011_MIN_AXIS (-80)
+#define AS5011_FUZZ 8
+#define AS5011_FLAT 40
+
-+static int g_num = 1; /* device counter */
++struct as5011_device {
++ struct input_dev *input_dev;
++ struct i2c_client *i2c_client;
++ unsigned int button_gpio;
++ unsigned int button_irq;
++ unsigned int axis_irq;
++};
+
-+static signed char as5011_i2c_read(struct i2c_client *client,
-+ uint8_t aRegAddr);
+static int as5011_i2c_write(struct i2c_client *client,
-+ uint8_t aRegAddr,
-+ uint8_t aValue);
-+
-+/*
-+ * interrupts operations
-+ */
-+
-+static irqreturn_t button_interrupt(int irq, void *dev_id)
++ uint8_t aregaddr,
++ uint8_t avalue)
+{
-+ struct as5011_platform_data *plat_dat =
-+ (struct as5011_platform_data *)dev_id;
-+ int ret;
-+
-+ mutex_lock(&plat_dat->button_lock);
-+ ret = gpio_get_value(plat_dat->button_gpio);
-+ if (ret)
-+ input_report_key(plat_dat->input_dev, BTN_JOYSTICK, 0);
-+ else
-+ input_report_key(plat_dat->input_dev, BTN_JOYSTICK, 1);
-+ input_sync(plat_dat->input_dev);
-+ mutex_unlock(&plat_dat->button_lock);
-+
-+ return IRQ_HANDLED;
++ uint8_t data[2] = { aregaddr, avalue };
++ struct i2c_msg msg = {
++ client->addr, I2C_M_IGNORE_NAK, 2, (uint8_t *)data
++ };
++ int error;
++
++ error = i2c_transfer(client->adapter, &msg, 1);
++ return error < 0 ? error : 0;
+}
+
-+static void as5011_update_axes(struct as5011_platform_data *plat_dat)
++static int as5011_i2c_read(struct i2c_client *client,
++ uint8_t aregaddr, signed char *value)
+{
-+ signed char x, y;
-+
-+ x = as5011_i2c_read(plat_dat->i2c_client, AS5011_X_RES_INT);
-+ y = as5011_i2c_read(plat_dat->i2c_client, AS5011_Y_RES_INT);
-+ input_report_abs(plat_dat->input_dev, ABS_X, x);
-+ input_report_abs(plat_dat->input_dev, ABS_Y, y);
-+ input_sync(plat_dat->input_dev);
++ uint8_t data[2] = { aregaddr };
++ struct i2c_msg msg_set[2] = {
++ { client->addr, I2C_M_REV_DIR_ADDR, 1, (uint8_t *)data },
++ { client->addr, I2C_M_RD | I2C_M_NOSTART, 1, (uint8_t *)data }
++ };
++ int error;
++
++ error = i2c_transfer(client->adapter, msg_set, 2);
++ if (error < 0)
++ return error;
++
++ *value = data[0] & 0x80 ? -1 * (1 + ~data[0]) : data[0];
++ return 0;
+}
+
-+static irqreturn_t as5011_int_interrupt(int irq, void *dev_id)
++static irqreturn_t as5011_button_interrupt(int irq, void *dev_id)
+{
-+ struct as5011_platform_data *plat_dat =
-+ (struct as5011_platform_data *)dev_id;
++ struct as5011_device *as5011 = dev_id;
++ int val = gpio_get_value_cansleep(as5011->button_gpio);
+
-+ mutex_lock(&plat_dat->update_lock);
-+ as5011_update_axes(plat_dat);
-+ mutex_unlock(&plat_dat->update_lock);
++ input_report_key(as5011->input_dev, BTN_JOYSTICK, !val);
++ input_sync(as5011->input_dev);
+
+ return IRQ_HANDLED;
+}
+
-+/*
-+ * I2C bus operation
-+ */
-+
-+static int as5011_i2c_write(struct i2c_client *client,
-+ uint8_t aRegAddr,
-+ uint8_t aValue)
++static irqreturn_t as5011_axis_interrupt(int irq, void *dev_id)
+{
-+ int ret;
-+ uint8_t data[2] = { aRegAddr, aValue };
++ struct as5011_device *as5011 = dev_id;
++ int error;
++ signed char x, y;
+
-+ struct i2c_msg msg = { client->addr,
-+ I2C_M_IGNORE_NAK,
-+ 2,
-+ (uint8_t *)data };
++ error = as5011_i2c_read(as5011->i2c_client, AS5011_X_RES_INT, &x);
++ if (error < 0)
++ goto out;
+
-+ ret = i2c_transfer(client->adapter, &msg, 1);
++ error = as5011_i2c_read(as5011->i2c_client, AS5011_Y_RES_INT, &y);
++ if (error < 0)
++ goto out;
+
-+ if (ret < 0)
-+ return ret;
-+ return 1;
-+}
++ input_report_abs(as5011->input_dev, ABS_X, x);
++ input_report_abs(as5011->input_dev, ABS_Y, y);
++ input_sync(as5011->input_dev);
+
-+static signed char as5011_i2c_read(struct i2c_client *client,
-+ uint8_t aRegAddr)
-+{
-+ int ret;
-+ uint8_t data[2];
-+ struct i2c_msg msg_set[2];
-+ struct i2c_msg msg1 = { client->addr,
-+ I2C_M_REV_DIR_ADDR,
-+ 1,
-+ (uint8_t *)data};
-+ struct i2c_msg msg2 = { client->addr,
-+ I2C_M_RD|I2C_M_NOSTART,
-+ 1,
-+ (uint8_t *)data};
-+
-+ data[0] = aRegAddr;
-+ msg_set[0] = msg1;
-+ msg_set[1] = msg2;
-+ ret = i2c_transfer(client->adapter, msg_set, 2);
-+ if (ret < 0)
-+ return ret;
-+
-+ if (data[0] & 0x80)
-+ return -1*(1+(~data[0]));
-+ else
-+ return data[0];
++out:
++ return IRQ_HANDLED;
+}
+
-+static int __devinit as5011_probe(struct i2c_client *client,
-+ const struct i2c_device_id *id)
++static int __devinit as5011_configure_chip(struct as5011_device *as5011,
++ const struct as5011_platform_data *plat_dat)
+{
-+ struct as5011_platform_data *plat_dat = client->dev.platform_data;
-+ int retval = 0;
-+
-+ plat_dat->num = g_num;
-+ g_num++;
++ struct i2c_client *client = as5011->i2c_client;
++ int error;
++ signed char value;
+
-+ if (!i2c_check_functionality(client->adapter,
-+ I2C_FUNC_PROTOCOL_MANGLING)) {
-+ dev_err(&client->dev,
-+ "i2c bus does not support protocol mangling, as5011 can't work\n");
-+ retval = -ENODEV;
-+ goto err_out;
++ /* chip soft reset */
++ error = as5011_i2c_write(client, AS5011_CTRL1,
++ AS5011_CTRL1_SOFT_RST);
++ if (error < 0) {
++ dev_err(&client->dev, "Soft reset failed\n");
++ return error;
+ }
-+ plat_dat->i2c_client = client;
+
++ mdelay(10);
+
-+ plat_dat->input_dev = input_allocate_device();
-+ if (plat_dat->input_dev == NULL) {
-+ dev_err(&client->dev,
-+ "not enough memory for input devices structure\n");
-+ retval = -ENOMEM;
-+ goto err_out;
++ error = as5011_i2c_write(client, AS5011_CTRL1,
++ AS5011_CTRL1_LP_PULSED |
++ AS5011_CTRL1_LP_ACTIVE |
++ AS5011_CTRL1_INT_ACT_EN);
++ if (error < 0) {
++ dev_err(&client->dev, "Power config failed\n");
++ return error;
+ }
+
-+ plat_dat->input_dev->name = "Austria Microsystem as5011 joystick";
-+ plat_dat->input_dev->uniq = "Austria0";
-+ plat_dat->input_dev->id.bustype = BUS_I2C;
-+ plat_dat->input_dev->phys = NULL;
-+ plat_dat->input_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS);
-+ plat_dat->input_dev->keybit[BIT_WORD(BTN_JOYSTICK)] =
-+ BIT_MASK(BTN_JOYSTICK);
-+
-+ input_set_abs_params(plat_dat->input_dev,
-+ ABS_X,
-+ AS5011_MIN_AXIS,
-+ AS5011_MAX_AXIS,
-+ AS5011_FUZZ,
-+ AS5011_FLAT);
-+ input_set_abs_params(plat_dat->input_dev,
-+ ABS_Y,
-+ AS5011_MIN_AXIS,
-+ AS5011_MAX_AXIS,
-+ AS5011_FUZZ,
-+ AS5011_FLAT);
-+
-+ plat_dat->button_irq_name = kmalloc(SIZE_NAME, GFP_KERNEL);
-+ if (plat_dat->button_irq_name == NULL) {
-+ dev_err(&client->dev,
-+ "not enough memory for input devices irq name\n");
-+ retval = -ENOMEM;
-+ goto err_input_free_device;
++ error = as5011_i2c_write(client, AS5011_CTRL2,
++ AS5011_CTRL2_INV_SPINNING);
++ if (error < 0) {
++ dev_err(&client->dev, "Can't invert spinning\n");
++ return error;
+ }
+
-+ scnprintf(plat_dat->button_irq_name,
-+ SIZE_NAME,
-+ "as5011_%d_button",
-+ plat_dat->num);
-+
-+ retval = request_threaded_irq( plat_dat->button_irq,
-+ NULL, button_interrupt,
-+ 0, plat_dat->button_irq_name,
-+ (void *)plat_dat);
-+ if (retval < 0) {
-+ dev_err(&client->dev, "Can't allocate irq %d\n",
-+ plat_dat->button_irq);
-+ retval = -EBUSY;
-+ goto err_free_button_irq_name;
++ /* write threshold */
++ error = as5011_i2c_write(client, AS5011_XP, plat_dat->xp);
++ if (error < 0) {
++ dev_err(&client->dev, "Can't write threshold\n");
++ return error;
+ }
+
-+ if (plat_dat->init_gpio != NULL) {
-+ retval = plat_dat->init_gpio();
-+ if (retval < 0) {
-+ dev_err(&client->dev, "Failed to init gpios\n");
-+ goto err_free_irq_button_interrupt;
-+ }
++ error = as5011_i2c_write(client, AS5011_XN, plat_dat->xn);
++ if (error < 0) {
++ dev_err(&client->dev, "Can't write threshold\n");
++ return error;
+ }
+
-+ /* chip soft reset */
-+ retval = as5011_i2c_write(plat_dat->i2c_client,
-+ AS5011_CTRL1,
-+ AS5011_CTRL1_SOFT_RST);
-+ if (retval < 0) {
-+ dev_err(&plat_dat->i2c_client->dev,
-+ "Soft reset failed\n");
-+ goto err_exit_gpio;
++ error = as5011_i2c_write(client, AS5011_YP, plat_dat->yp);
++ if (error < 0) {
++ dev_err(&client->dev, "Can't write threshold\n");
++ return error;
+ }
+
-+ mdelay(10);
-+
-+ retval = as5011_i2c_write(plat_dat->i2c_client,
-+ AS5011_CTRL1,
-+ AS5011_CTRL1_LP_PULSED |
-+ AS5011_CTRL1_LP_ACTIVE |
-+ AS5011_CTRL1_INT_ACT_EN
-+ );
-+ if (retval < 0) {
-+ dev_err(&plat_dat->i2c_client->dev,
-+ "Power config failed\n");
-+ goto err_exit_gpio;
++ error = as5011_i2c_write(client, AS5011_YN, plat_dat->yn);
++ if (error < 0) {
++ dev_err(&client->dev, "Can't write threshold\n");
++ return error;
+ }
+
-+ retval = as5011_i2c_write(plat_dat->i2c_client,
-+ AS5011_CTRL2,
-+ AS5011_CTRL2_INV_SPINNING);
-+ if (retval < 0) {
-+ dev_err(&plat_dat->i2c_client->dev,
-+ "Can't invert spinning\n");
-+ goto err_exit_gpio;
++ /* to free irq gpio in chip */
++ error = as5011_i2c_read(client, AS5011_X_RES_INT, &value);
++ if (error < 0) {
++ dev_err(&client->dev, "Can't read i2c X resolution value\n");
++ return error;
+ }
+
-+ /* write threshold */
-+ retval = as5011_i2c_write(plat_dat->i2c_client,
-+ AS5011_XP,
-+ plat_dat->Xp);
-+ if (retval < 0) {
-+ dev_err(&plat_dat->i2c_client->dev,
-+ "Can't write threshold\n");
-+ goto err_exit_gpio;
++ return 0;
++}
++
++static int __devinit as5011_probe(struct i2c_client *client,
++ const struct i2c_device_id *id)
++{
++ const struct as5011_platform_data *plat_data;
++ struct as5011_device *as5011;
++ struct input_dev *input_dev;
++ int irq;
++ int error;
++
++ plat_data = client->dev.platform_data;
++ if (!plat_data)
++ return -EINVAL;
++
++ if (!plat_data->axis_irq) {
++ dev_err(&client->dev, "No axis IRQ?\n");
++ return -EINVAL;
+ }
+
-+ retval = as5011_i2c_write(plat_dat->i2c_client,
-+ AS5011_XN,
-+ plat_dat->Xn);
-+ if (retval < 0) {
-+ dev_err(&plat_dat->i2c_client->dev,
-+ "Can't write threshold\n");
-+ goto err_exit_gpio;
++ if (!i2c_check_functionality(client->adapter,
++ I2C_FUNC_PROTOCOL_MANGLING)) {
++ dev_err(&client->dev,
++ "need i2c bus that supports protocol mangling\n");
++ return -ENODEV;
+ }
+
-+ retval = as5011_i2c_write(plat_dat->i2c_client,
-+ AS5011_YP,
-+ plat_dat->Yp);
-+ if (retval < 0) {
-+ dev_err(&plat_dat->i2c_client->dev,
-+ "Can't write threshold\n");
-+ goto err_exit_gpio;
++ as5011 = kmalloc(sizeof(struct as5011_device), GFP_KERNEL);
++ input_dev = input_allocate_device();
++ if (!as5011 || !input_dev) {
++ dev_err(&client->dev,
++ "Can't allocate memory for device structure\n");
++ error = -ENOMEM;
++ goto err_free_mem;
+ }
+
-+ retval = as5011_i2c_write(plat_dat->i2c_client,
-+ AS5011_YN,
-+ plat_dat->Yn);
-+ if (retval < 0) {
-+ dev_err(&plat_dat->i2c_client->dev,
-+ "Can't write threshold\n");
-+ goto err_exit_gpio;
++ as5011->i2c_client = client;
++ as5011->input_dev = input_dev;
++ as5011->button_gpio = plat_data->button_gpio;
++ as5011->axis_irq = plat_data->axis_irq;
++
++ input_dev->name = "Austria Microsystem as5011 joystick";
++ input_dev->id.bustype = BUS_I2C;
++ input_dev->dev.parent = &client->dev;
++
++ __set_bit(EV_KEY, input_dev->evbit);
++ __set_bit(EV_ABS, input_dev->evbit);
++ __set_bit(BTN_JOYSTICK, input_dev->keybit);
++
++ input_set_abs_params(input_dev, ABS_X,
++ AS5011_MIN_AXIS, AS5011_MAX_AXIS, AS5011_FUZZ, AS5011_FLAT);
++ input_set_abs_params(as5011->input_dev, ABS_Y,
++ AS5011_MIN_AXIS, AS5011_MAX_AXIS, AS5011_FUZZ, AS5011_FLAT);
++
++ error = gpio_request(as5011->button_gpio, "AS5011 button");
++ if (error < 0) {
++ dev_err(&client->dev, "Failed to request button gpio\n");
++ goto err_free_mem;
+ }
+
-+ /* request irq */
-+ plat_dat->int_irq_name = kmalloc(SIZE_NAME, GFP_KERNEL);
-+ if (plat_dat->int_irq_name == NULL) {
++ irq = gpio_to_irq(as5011->button_gpio);
++ if (irq < 0) {
+ dev_err(&client->dev,
-+ "not enough memory for input devices int irq name\n");
-+ retval = -ENOMEM;
-+ goto err_exit_gpio;
++ "Failed to get irq number for button gpio\n");
++ goto err_free_button_gpio;
+ }
+
++ as5011->button_irq = irq;
+
-+ /* to free irq gpio in chip*/
-+ as5011_i2c_read(plat_dat->i2c_client, AS5011_X_RES_INT);
-+
-+ /* initialize mutex */
-+ mutex_init(&plat_dat->update_lock);
-+ mutex_init(&plat_dat->button_lock);
++ error = request_threaded_irq(as5011->button_irq,
++ NULL, as5011_button_interrupt,
++ IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
++ "as5011_button", as5011);
++ if (error < 0) {
++ dev_err(&client->dev,
++ "Can't allocate button irq %d\n", as5011->button_irq);
++ goto err_free_button_gpio;
++ }
+
-+ scnprintf(plat_dat->int_irq_name,
-+ SIZE_NAME,
-+ "as5011_%d_int",
-+ plat_dat->num);
++ error = as5011_configure_chip(as5011, plat_data);
++ if (error)
++ goto err_free_button_irq;
+
-+ if (request_threaded_irq(plat_dat->int_irq, NULL,
-+ as5011_int_interrupt,
-+ 0, plat_dat->int_irq_name, (void *)plat_dat)) {
-+ dev_err(&client->dev, "Can't allocate int irq %d\n",
-+ plat_dat->int_irq);
-+ retval = -EBUSY;
-+ goto err_free_int_irq_name;
++ error = request_threaded_irq(as5011->axis_irq, NULL,
++ as5011_axis_interrupt,
++ plat_data->axis_irqflags,
++ "as5011_joystick", as5011);
++ if (error) {
++ dev_err(&client->dev,
++ "Can't allocate axis irq %d\n", plat_data->axis_irq);
++ goto err_free_button_irq;
+ }
+
-+ retval = input_register_device(plat_dat->input_dev);
-+ if (retval) {
-+ dev_err(&client->dev, "Failed to register device\n");
-+ goto err_free_irq_int;
++ error = input_register_device(as5011->input_dev);
++ if (error) {
++ dev_err(&client->dev, "Failed to register input device\n");
++ goto err_free_axis_irq;
+ }
+
++ i2c_set_clientdata(client, as5011);
++
+ return 0;
+
-+ /* Error management */
-+err_free_irq_int:
-+ free_irq(plat_dat->int_irq, as5011_int_interrupt);
-+err_free_int_irq_name:
-+ kfree(plat_dat->int_irq_name);
-+err_exit_gpio:
-+ if (plat_dat->exit_gpio != NULL)
-+ plat_dat->exit_gpio();
-+err_free_irq_button_interrupt:
-+ free_irq(plat_dat->button_irq, button_interrupt);
-+err_free_button_irq_name:
-+ kfree(plat_dat->button_irq_name);
-+err_input_free_device:
-+ input_free_device(plat_dat->input_dev);
-+err_out:
-+ return retval;
++err_free_axis_irq:
++ free_irq(as5011->axis_irq, as5011);
++err_free_button_irq:
++ free_irq(as5011->button_irq, as5011);
++err_free_button_gpio:
++ gpio_free(as5011->button_gpio);
++err_free_mem:
++ input_free_device(input_dev);
++ kfree(as5011);
++
++ return error;
+}
-+static int as5011_remove(struct i2c_client *client)
++
++static int __devexit as5011_remove(struct i2c_client *client)
+{
-+ struct as5011_platform_data *plat_dat = client->dev.platform_data;
++ struct as5011_device *as5011 = i2c_get_clientdata(client);
++
++ free_irq(as5011->axis_irq, as5011);
++ free_irq(as5011->button_irq, as5011);
++ gpio_free(as5011->button_gpio);
+
-+ input_unregister_device(plat_dat->input_dev);
-+ free_irq(plat_dat->button_irq, plat_dat);
-+ free_irq(plat_dat->int_irq, plat_dat);
-+ kfree(plat_dat->button_irq_name);
-+ if (plat_dat->exit_gpio != NULL)
-+ plat_dat->exit_gpio();
++ input_unregister_device(as5011->input_dev);
++ kfree(as5011);
+
+ return 0;
+}
++
+static const struct i2c_device_id as5011_id[] = {
-+ { "as5011", 0 },
++ { MODULE_DEVICE_ALIAS, 0 },
+ { }
+};
++MODULE_DEVICE_TABLE(i2c, as5011_id);
+
+static struct i2c_driver as5011_driver = {
+ .driver = {
@@ -409,26 +363,22 @@ Index: linux-2.6.36/drivers/input/joystick/as5011.c
+ .id_table = as5011_id,
+};
+
-+/*
-+ * Module initialization
-+ */
-+
+static int __init as5011_init(void)
+{
+ return i2c_add_driver(&as5011_driver);
+}
++module_init(as5011_init);
+
+static void __exit as5011_exit(void)
+{
+ i2c_del_driver(&as5011_driver);
+}
-+
-+module_init(as5011_init);
+module_exit(as5011_exit);
++
Index: linux-2.6.36/drivers/input/joystick/Kconfig
===================================================================
---- linux-2.6.36.orig/drivers/input/joystick/Kconfig 2010-12-30 09:55:59.000000000 +0100
-+++ linux-2.6.36/drivers/input/joystick/Kconfig 2010-12-30 09:56:09.000000000 +0100
+--- linux-2.6.36.orig/drivers/input/joystick/Kconfig 2010-10-20 22:30:22.000000000 +0200
++++ linux-2.6.36/drivers/input/joystick/Kconfig 2011-01-03 16:58:29.000000000 +0100
@@ -255,6 +255,15 @@
To compile this driver as a module, choose M here: the
module will be called amijoy.
@@ -447,8 +397,8 @@ Index: linux-2.6.36/drivers/input/joystick/Kconfig
select GAMEPORT
Index: linux-2.6.36/drivers/input/joystick/Makefile
===================================================================
---- linux-2.6.36.orig/drivers/input/joystick/Makefile 2010-12-30 09:55:59.000000000 +0100
-+++ linux-2.6.36/drivers/input/joystick/Makefile 2010-12-30 09:56:09.000000000 +0100
+--- linux-2.6.36.orig/drivers/input/joystick/Makefile 2010-10-20 22:30:22.000000000 +0200
++++ linux-2.6.36/drivers/input/joystick/Makefile 2011-01-03 16:58:29.000000000 +0100
@@ -7,6 +7,7 @@
obj-$(CONFIG_JOYSTICK_A3D) += a3d.o
obj-$(CONFIG_JOYSTICK_ADI) += adi.o
@@ -457,84 +407,25 @@ Index: linux-2.6.36/drivers/input/joystick/Makefile
obj-$(CONFIG_JOYSTICK_ANALOG) += analog.o
obj-$(CONFIG_JOYSTICK_COBRA) += cobra.o
obj-$(CONFIG_JOYSTICK_DB9) += db9.o
-Index: linux-2.6.36/include/linux/as5011.h
+Index: linux-2.6.36/include/linux/input/as5011.h
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.36/include/linux/as5011.h 2010-12-30 09:56:09.000000000 +0100
-@@ -0,0 +1,76 @@
-+#ifndef _AS5011_H
-+#define _AS5011_H
-+
-+/*
-+ * Copyright (c) 2010 Fabien Marteau
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 as published by
-+ * the Free Software Foundation.
-+ */
-+
-+#include <linux/mutex.h>
-+
-+#define AS5011_MAX_NAME_LENGTH 64
-+#define AS5011_MAX_CNAME_LENGTH 16
-+#define AS5011_MAX_PHYS_LENGTH 64
-+#define AS5011_MAX_LENGTH 64
-+
-+/* registers */
-+#define AS5011_CTRL1 0x76
-+#define AS5011_CTRL2 0x75
-+#define AS5011_XP 0x43
-+#define AS5011_XN 0x44
-+#define AS5011_YP 0x53
-+#define AS5011_YN 0x54
-+#define AS5011_X_REG 0x41
-+#define AS5011_Y_REG 0x42
-+#define AS5011_X_RES_INT 0x51
-+#define AS5011_Y_RES_INT 0x52
-+
-+/* CTRL1 bits */
-+#define AS5011_CTRL1_LP_PULSED 0x80
-+#define AS5011_CTRL1_LP_ACTIVE 0x40
-+#define AS5011_CTRL1_LP_CONTINUE 0x20
-+#define AS5011_CTRL1_INT_WUP_EN 0x10
-+#define AS5011_CTRL1_INT_ACT_EN 0x08
-+#define AS5011_CTRL1_EXT_CLK_EN 0x04
-+#define AS5011_CTRL1_SOFT_RST 0x02
-+#define AS5011_CTRL1_DATA_VALID 0x01
-+
-+/* CTRL2 bits */
-+#define AS5011_CTRL2_EXT_SAMPLE_EN 0x08
-+#define AS5011_CTRL2_RC_BIAS_ON 0x04
-+#define AS5011_CTRL2_INV_SPINNING 0x02
-+
-+
-+struct as5011_platform_data {
-+ /* public */
-+ int button_gpio;
-+ int button_irq;
-+ int int_gpio;
-+ int int_irq;
-+ char Xp, Xn; /* threshold for x axis */
-+ char Yp, Yn; /* threshold for y axis */
-+
-+ int (*init_gpio)(void); /* init interrupts gpios */
-+ void (*exit_gpio)(void);/* exit gpios */
-+
-+ /* private */
-+ int num;
-+ struct input_dev *input_dev;
-+ struct i2c_client *i2c_client;
-+ unsigned char *button_irq_name;
-+ unsigned char *int_irq_name;
-+ char name[AS5011_MAX_NAME_LENGTH];
-+ char cname[AS5011_MAX_CNAME_LENGTH];
-+ char phys[AS5011_MAX_PHYS_LENGTH];
-+ unsigned char data[AS5011_MAX_LENGTH];
-+ char workqueue_name[AS5011_MAX_NAME_LENGTH];
-+ struct workqueue_struct *workqueue;
-+ struct work_struct update_axes_work;
-+ struct mutex update_lock;
-+ struct mutex button_lock;
-+};
-+
-+#endif /* _AS5011_H */
+--- linux-2.6.36.orig/include/linux/input/as5011.h 2011-01-10 09:17:59.000000000 +0100
++++ linux-2.6.36/include/linux/input/as5011.h 2011-01-10 09:18:58.000000000 +0100
+@@ -9,14 +9,10 @@
+ * the Free Software Foundation.
+ */
+
+-#include <linux/mutex.h>
+-
+-#define AS5011_MAX_NAME_LENGTH 64
+-
+ struct as5011_platform_data {
+- int button_gpio;
+- int int_irq; /* irq number */
+- int int_edge;/* irq edge IRQ_TYPE_EDGE_[FALLING,RISING,BOTH] */
++ unsigned int button_gpio;
++ unsigned int axis_irq; /* irq number */
++ unsigned long axis_irqflags;
+ char xp, xn; /* threshold for x axis */
+ char yp, yn; /* threshold for y axis */
+ };
hooks/post-receive
--
armadeus
|
|
From: Gwenhael <gwe...@us...> - 2011-01-09 16:31:14
|
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 bb7c62bf01c318b29450250ff8d06a19d7d8a2cf (commit)
via f33c51fa98f4cf5dd2dfe930af34cc6d459b66bf (commit)
via a85c7d4334a2b62fcac9e94dd842fa58119ac443 (commit)
via e467a1bfafe928384d6c0ad042ce5c5e2a59ae2f (commit)
via 309fc60a65d6820f6c2e566d70109c2d0e9be049 (commit)
from 97c5a2df794aeb4ce33443a314f9fdc0ff7fdf74 (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 bb7c62bf01c318b29450250ff8d06a19d7d8a2cf
Author: gwenhael <gw...@tr...>
Date: Sun Jan 9 17:34:08 2011 +0100
[LINUX][2.6.36][APF9328] 101 : avoid crash when clk_get is called by drivers selected as module
commit f33c51fa98f4cf5dd2dfe930af34cc6d459b66bf
Author: gwenhael <gw...@tr...>
Date: Sun Jan 9 17:33:55 2011 +0100
[LINUX][2.6.36][APF9328] 100 : correct mxc_decode_pll on imx1
commit a85c7d4334a2b62fcac9e94dd842fa58119ac443
Author: gwenhael <gw...@tr...>
Date: Sun Jan 9 17:33:37 2011 +0100
[LINUX][2.6.36][APF9328] 075 : add clock for spi2
commit e467a1bfafe928384d6c0ad042ce5c5e2a59ae2f
Author: gwenhael <gw...@tr...>
Date: Sun Jan 9 17:33:19 2011 +0100
[LINUX][2.6.36][APF9328] adapt patch 075-armadeus-spi2-reg-defines.patch
commit 309fc60a65d6820f6c2e566d70109c2d0e9be049
Author: gwenhael <gw...@tr...>
Date: Sun Jan 9 17:32:59 2011 +0100
[LINUX][2.6.36][APF9328] 072 : avoid compilation error when imxfb is selected
-----------------------------------------------------------------------
Summary of changes:
...adeus-imxfb-suppress_32_bpp_case_for_imx1.patch | 16 ++++++++++++++++
.../075-armadeus-clock-imx1_add_spi2_clock.patch | 10 ++++++++++
.../2.6.36/075-armadeus-spi2-reg-defines.patch | 11 +++++++++++
...eus-clock_correct_mxc_decode_pll_for_imx1.patch | 18 ++++++++++++++++++
...madeus-clock-imx1_avoid_crash_with_module.patch | 12 ++++++++++++
5 files changed, 67 insertions(+), 0 deletions(-)
create mode 100644 buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/072-armadeus-imxfb-suppress_32_bpp_case_for_imx1.patch
create mode 100644 buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/075-armadeus-clock-imx1_add_spi2_clock.patch
create mode 100644 buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/075-armadeus-spi2-reg-defines.patch
create mode 100644 buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/100-armadeus-clock_correct_mxc_decode_pll_for_imx1.patch
create mode 100644 buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/101-armadeus-clock-imx1_avoid_crash_with_module.patch
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/072-armadeus-imxfb-suppress_32_bpp_case_for_imx1.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/072-armadeus-imxfb-suppress_32_bpp_case_for_imx1.patch
new file mode 100644
index 0000000..22daa81
--- /dev/null
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/072-armadeus-imxfb-suppress_32_bpp_case_for_imx1.patch
@@ -0,0 +1,16 @@
+iMX1 cpu is unable to use 32bits per pixels.
+--- a/drivers/video/imxfb.c 2010-12-18 15:29:31.000000000 +0100
++++ b/drivers/video/imxfb.c 2010-12-18 15:30:27.000000000 +0100
+@@ -386,10 +386,12 @@
+ }
+
+ switch (var->bits_per_pixel) {
++#ifndef CONFIG_ARCH_MX1
+ case 32:
+ pcr |= PCR_BPIX_18;
+ rgb = &def_rgb_18;
+ break;
++#endif
+ case 16:
+ default:
+ if (cpu_is_mx1())
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/075-armadeus-clock-imx1_add_spi2_clock.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/075-armadeus-clock-imx1_add_spi2_clock.patch
new file mode 100644
index 0000000..ba4bb40
--- /dev/null
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/075-armadeus-clock-imx1_add_spi2_clock.patch
@@ -0,0 +1,10 @@
+--- a/arch/arm/mach-imx/clock-imx1.c 2011-01-09 16:09:00.000000000 +0100
++++ b/arch/arm/mach-imx/clock-imx1.c 2011-01-09 16:09:23.000000000 +0100
+@@ -593,6 +593,7 @@
+ _REGISTER_CLOCK("imx-uart.2", NULL, uart_clk)
+ _REGISTER_CLOCK("imx-i2c.0", NULL, i2c_clk)
+ _REGISTER_CLOCK("spi_imx.0", NULL, spi_clk)
++ _REGISTER_CLOCK("spi_imx.1", NULL, spi_clk)
+ _REGISTER_CLOCK("imx-mmc.0", NULL, sdhc_clk)
+ _REGISTER_CLOCK("imx-fb.0", NULL, lcdc_clk)
+ _REGISTER_CLOCK(NULL, "mshc", mshc_clk)
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/075-armadeus-spi2-reg-defines.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/075-armadeus-spi2-reg-defines.patch
new file mode 100644
index 0000000..2108fe9
--- /dev/null
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/075-armadeus-spi2-reg-defines.patch
@@ -0,0 +1,11 @@
+--- a/arch/arm/plat-mxc/include/mach/iomux-mx1.h 2010-12-19 11:11:37.000000000 +0100
++++ b/arch/arm/plat-mxc/include/mach/iomux-mx1.h 2010-12-19 11:11:55.000000000 +0100
+@@ -119,7 +119,7 @@
+ #define PD6_PF_LSCLK (GPIO_PORTD | GPIO_PF | GPIO_OUT | 6)
+ #define PD7_PF_REV (GPIO_PORTD | GPIO_PF | 7)
+ #define PD7_AF_UART2_DTR (GPIO_PORTD | GPIO_AF | GPIO_IN | 7)
+-#define PD7_AIN_SPI2_SCLK (GPIO_PORTD | GPIO_AIN | 7)
++#define PD7_AIN_SPI2_SCLK (GPIO_PORTD | GPIO_AIN | GPIO_OUT | 7)
+ #define PD8_PF_CLS (GPIO_PORTD | GPIO_PF | 8)
+ #define PD8_AF_UART2_DCD (GPIO_PORTD | GPIO_AF | GPIO_OUT | 8)
+ #define PD8_AIN_SPI2_SS (GPIO_PORTD | GPIO_AIN | 8)
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/100-armadeus-clock_correct_mxc_decode_pll_for_imx1.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/100-armadeus-clock_correct_mxc_decode_pll_for_imx1.patch
new file mode 100644
index 0000000..bad2ff9
--- /dev/null
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/100-armadeus-clock_correct_mxc_decode_pll_for_imx1.patch
@@ -0,0 +1,18 @@
+The current mxc_decode_pll function provide wrong values on imx1 cpu.
+--- a/arch/arm/plat-mxc/clock.c 2010-10-20 22:30:22.000000000 +0200
++++ b/arch/arm/plat-mxc/clock.c 2010-12-05 11:14:32.000000000 +0100
+@@ -221,6 +222,14 @@
+ pd = (reg_val >> 26) & 0xf;
+
+ mfi = mfi <= 5 ? 5 : mfi;
++ if (cpu_is_mx1()) {
++ ll = 2 * (unsigned long long)freq *
++ ((mfi << 16) + (mfn << 16) / (mfd + 1));
++ quot = (pd + 1) * (1 << 16);
++ ll += quot / 2;
++ do_div(ll, quot);
++ return (unsigned long)ll;
++ }
+
+ mfn_abs = mfn;
+
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/101-armadeus-clock-imx1_avoid_crash_with_module.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/101-armadeus-clock-imx1_avoid_crash_with_module.patch
new file mode 100644
index 0000000..d6a1205
--- /dev/null
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/101-armadeus-clock-imx1_avoid_crash_with_module.patch
@@ -0,0 +1,12 @@
+This patch suppress kernel oops when a driver, compiled as module, get a clock.
+--- a/arch/arm/mach-imx/clock-imx1.c 2011-01-09 16:11:35.000000000 +0100
++++ b/arch/arm/mach-imx/clock-imx1.c 2011-01-09 16:11:47.000000000 +0100
+@@ -582,7 +582,7 @@
+ .con_id = n, \
+ .clk = &c, \
+ },
+-static struct clk_lookup lookups[] __initdata = {
++static struct clk_lookup lookups[] = {
+ _REGISTER_CLOCK(NULL, "dma", dma_clk)
+ _REGISTER_CLOCK("mx1-camera.0", NULL, csi_clk)
+ _REGISTER_CLOCK(NULL, "mma", mma_clk)
hooks/post-receive
--
armadeus
|
|
From: jscheer <js...@us...> - 2011-01-07 15:48:22
|
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 97c5a2df794aeb4ce33443a314f9fdc0ff7fdf74 (commit)
from 74a8707b04c18fd90dd7b23a9040d2732ffc6f0a (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 97c5a2df794aeb4ce33443a314f9fdc0ff7fdf74
Author: Jeremie Scheer <jer...@ar...>
Date: Fri Jan 7 16:47:48 2011 +0100
[ROOTFS] Put the guest user's file .ssh/authorized_keys in PPS' skeleton instead of creating it during system boot.
-----------------------------------------------------------------------
Summary of changes:
.../pps/home/guest/.ssh/authorized_keys | 0
target/pps/init/S90guestcreation | 2 --
2 files changed, 0 insertions(+), 2 deletions(-)
copy buildroot/target/device/armadeus/linux/linux.mk => target/pps/home/guest/.ssh/authorized_keys (100%)
diff --git a/buildroot/target/device/armadeus/linux/linux.mk b/target/pps/home/guest/.ssh/authorized_keys
similarity index 100%
copy from buildroot/target/device/armadeus/linux/linux.mk
copy to target/pps/home/guest/.ssh/authorized_keys
diff --git a/target/pps/init/S90guestcreation b/target/pps/init/S90guestcreation
index 52f10a5..2d1434b 100755
--- a/target/pps/init/S90guestcreation
+++ b/target/pps/init/S90guestcreation
@@ -30,9 +30,7 @@
echo "Configuring guest user"
chown guest:1001 /home/guest
-mkdir /home/guest/.ssh
chown guest:1001 /home/guest/.ssh
chmod 750 /home/guest/.ssh
-touch /home/guest/.ssh/authorized_keys
chown guest:1001 /home/guest/.ssh/authorized_keys
hooks/post-receive
--
armadeus
|
|
From: jscheer <js...@us...> - 2011-01-07 10:54:14
|
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 74a8707b04c18fd90dd7b23a9040d2732ffc6f0a (commit)
from 2ef8b0d7acd4a4d90bc50867b8476a2fe1c613f8 (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 74a8707b04c18fd90dd7b23a9040d2732ffc6f0a
Author: Jeremie Scheer <jer...@ar...>
Date: Fri Jan 7 11:53:48 2011 +0100
[ROOTFS] Add guest user with password to PPS board skeleton to allow SSH connections on it.
[ROOTFS] Configure sshd configuration file to forbid SSH connections to root user.
[BUILDROOT] Add package PPS utilities to separate PPS' neccesary tools from PPS' test scripts.
[ROOTFS] Split up PPS utilities and PPS test scripts in PPS skeleton.
-----------------------------------------------------------------------
Summary of changes:
buildroot/configs/apf27_defconfig | 2 +-
buildroot/configs/apf27_webradio_defconfig | 1 +
buildroot/configs/apf51_defconfig | 2 +-
buildroot/configs/apf9328_defconfig | 2 +-
buildroot/configs/pps_defconfig | 1 +
buildroot/package/armadeus/pps/Config.in | 12 ++
buildroot/package/armadeus/pps/pps.mk | 51 ++++++---
.../target/device/armadeus/apf27/apf27_defconfig | 2 +-
.../device/armadeus/apf9328/apf9328_defconfig | 2 +-
buildroot/target/device/armadeus/pps/pps_defconfig | 3 +-
.../etc => target/pps/configs}/passwd | 1 +
.../etc => target/pps/configs}/shadow | 1 +
target/pps/configs/sshd_config | 125 ++++++++++++++++++++
.../test_wifi.sh => init/S90guestcreation} | 28 +++--
target/pps/{ => scripts}/configs/ipsec-tools.conf | 0
target/pps/{ => scripts}/configs/profile | 0
.../configs/wpa_supplicant/networkConfig | 0
target/pps/{ => scripts}/www/index.html | 0
18 files changed, 198 insertions(+), 35 deletions(-)
copy {buildroot/target/device/armadeus/rootfs/target_skeleton/etc => target/pps/configs}/passwd (91%)
copy {buildroot/target/device/armadeus/rootfs/target_skeleton/etc => target/pps/configs}/shadow (84%)
create mode 100644 target/pps/configs/sshd_config
copy target/pps/{scripts/test_wifi.sh => init/S90guestcreation} (67%)
mode change 100644 => 100755
rename target/pps/{ => scripts}/configs/ipsec-tools.conf (100%)
rename target/pps/{ => scripts}/configs/profile (100%)
rename target/pps/{ => scripts}/configs/wpa_supplicant/networkConfig (100%)
rename target/pps/{ => scripts}/www/index.html (100%)
diff --git a/buildroot/configs/apf27_defconfig b/buildroot/configs/apf27_defconfig
index 55c6487..bfbf9e8 100644
--- a/buildroot/configs/apf27_defconfig
+++ b/buildroot/configs/apf27_defconfig
@@ -246,7 +246,7 @@ BR2_PACKAGE_FPGAREGS=y
BR2_PACKAGE_IMXREGS=y
# BR2_PACKAGE_IMXSSI is not set
BR2_PACKAGE_MAX5821CTRL=y
-# BR2_PACKAGE_ARMADEUS_PPS_TEST_SCRIPTS is not set
+# BR2_PACKAGE_ARMADEUS_PPS_UTILITIES is not set
# BR2_PACKAGE_ARMADEUS_TESTSUITE is not set
#
diff --git a/buildroot/configs/apf27_webradio_defconfig b/buildroot/configs/apf27_webradio_defconfig
index 1cf4caf..648d8e9 100644
--- a/buildroot/configs/apf27_webradio_defconfig
+++ b/buildroot/configs/apf27_webradio_defconfig
@@ -247,6 +247,7 @@ BR2_PACKAGE_FPGAREGS=y
BR2_PACKAGE_IMXREGS=y
# BR2_PACKAGE_IMXSSI is not set
BR2_PACKAGE_MAX5821CTRL=y
+# BR2_PACKAGE_ARMADEUS_PPS_UTILITIES is not set
# BR2_PACKAGE_ARMADEUS_TESTSUITE is not set
#
diff --git a/buildroot/configs/apf51_defconfig b/buildroot/configs/apf51_defconfig
index 13f9a17..4d3fea5 100644
--- a/buildroot/configs/apf51_defconfig
+++ b/buildroot/configs/apf51_defconfig
@@ -246,7 +246,7 @@ BR2_PACKAGE_FPGAREGS=y
BR2_PACKAGE_IMXREGS=y
# BR2_PACKAGE_IMXSSI is not set
BR2_PACKAGE_MAX5821CTRL=y
-# BR2_PACKAGE_ARMADEUS_PPS_TEST_SCRIPTS is not set
+# BR2_PACKAGE_ARMADEUS_PPS_UTILITIES is not set
# BR2_PACKAGE_ARMADEUS_TESTSUITE is not set
#
diff --git a/buildroot/configs/apf9328_defconfig b/buildroot/configs/apf9328_defconfig
index 899f806..3a92543 100644
--- a/buildroot/configs/apf9328_defconfig
+++ b/buildroot/configs/apf9328_defconfig
@@ -243,7 +243,7 @@ BR2_PACKAGE_FPGAREGS=y
BR2_PACKAGE_IMXREGS=y
# BR2_PACKAGE_IMXSSI is not set
BR2_PACKAGE_MAX5821CTRL=y
-# BR2_PACKAGE_ARMADEUS_PPS_TEST_SCRIPTS is not set
+# BR2_PACKAGE_ARMADEUS_PPS_UTILITIES is not set
# BR2_PACKAGE_ARMADEUS_TESTSUITE is not set
#
diff --git a/buildroot/configs/pps_defconfig b/buildroot/configs/pps_defconfig
index 4c102cb..9b8861a 100644
--- a/buildroot/configs/pps_defconfig
+++ b/buildroot/configs/pps_defconfig
@@ -246,6 +246,7 @@ BR2_PACKAGE_FPGAREGS=y
BR2_PACKAGE_IMXREGS=y
# BR2_PACKAGE_IMXSSI is not set
BR2_PACKAGE_MAX5821CTRL=y
+BR2_PACKAGE_ARMADEUS_PPS_UTILITIES=y
BR2_PACKAGE_ARMADEUS_PPS_TEST_SCRIPTS=y
# BR2_PACKAGE_ARMADEUS_TESTSUITE is not set
diff --git a/buildroot/package/armadeus/pps/Config.in b/buildroot/package/armadeus/pps/Config.in
index e035279..bd38451 100644
--- a/buildroot/package/armadeus/pps/Config.in
+++ b/buildroot/package/armadeus/pps/Config.in
@@ -1,6 +1,18 @@
+config BR2_PACKAGE_ARMADEUS_PPS_UTILITIES
+ bool "PPS Utilities"
+ default n
+ help
+ Install PPS Utilities & Initialization files to make PPS' fonctionalities work:
+ - GPIOs initialization file
+ - Guest user creation to connect to PPS via SSH
+
+if BR2_PACKAGE_ARMADEUS_PPS_UTILITIES
+
config BR2_PACKAGE_ARMADEUS_PPS_TEST_SCRIPTS
bool "PPS Test scripts"
default n
help
Install PPS Test scripts to test Ethernet, WiFi & USB Gadget on
PPS board. Test scripts will be installed in /usr/local/pps/scripts.
+
+endif #BR2_PACKAGE_ARMADEUS_PPS_UTILITIES
diff --git a/buildroot/package/armadeus/pps/pps.mk b/buildroot/package/armadeus/pps/pps.mk
index 2642e8e..8febace 100644
--- a/buildroot/package/armadeus/pps/pps.mk
+++ b/buildroot/package/armadeus/pps/pps.mk
@@ -1,43 +1,60 @@
#############################################################
#
-# PPS Test scripts
+# PPS Utilities & Test scripts
#
#############################################################
-ARMADEUS-PPS_TESTSCRIPTS_SOURCE:=$(TOPDIR)/../target/pps/scripts
-ARMADEUS-PPS_TESTSCRIPTS_TARGET_DIR:=$(TARGET_DIR)/usr/local/pps/scripts
-ARMADEUS-PPS_WWW_DIR:=$(TOPDIR)/../target/pps/www
-ARMADEUS-PPS_WWW_TARGET_DIR:=$(TARGET_DIR)/var
ARMADEUS-PPS_CONFIGS_DIR:=$(TOPDIR)/../target/pps/configs
ARMADEUS-PPS_CONFIGS_TARGET_DIR:=$(TARGET_DIR)/etc/
ARMADEUS-PPS_INITS_DIR:=$(TOPDIR)/../target/pps/init
ARMADEUS-PPS_INITS_TARGET_DIR:=$(ARMADEUS-PPS_CONFIGS_TARGET_DIR)/init.d
+ARMADEUS-PPS_HOME_DIR:=$(TOPDIR)/../target/pps/home
+ARMADEUS-PPS_HOME_TARGET_DIR:=$(TARGET_DIR)/home
-$(ARMADEUS-PPS_TESTSCRIPTS_TARGET_DIR)/init_boa.sh:
- $(ARMADEUS-PPS_TESTSCRIPTS_SOURCE)/install.sh $(ARMADEUS-PPS_TESTSCRIPTS_TARGET_DIR)
+ARMADEUS-PPS_TESTSCRIPTS_SOURCE:=$(TOPDIR)/../target/pps/scripts
+ARMADEUS-PPS_TESTSCRIPTS_TARGET_DIR:=$(TARGET_DIR)/usr/local/pps/scripts
+ARMADEUS-PPS_TESTSCRIPTS_WWW_DIR:=$(ARMADEUS-PPS_TESTSCRIPTS_SOURCE)/www
+ARMADEUS-PPS_TESTSCRIPTS_WWW_TARGET_DIR:=$(TARGET_DIR)/var
+ARMADEUS-PPS_TESTSCRIPTS_CONFIGS_DIR:=$(ARMADEUS-PPS_TESTSCRIPTS_SOURCE)/configs
+ARMADEUS-PPS_TESTSCRIPTS_CONFIGS_TARGET_DIR:=$(ARMADEUS-PPS_CONFIGS_TARGET_DIR)
+
+$(ARMADEUS-PPS_INITS_TARGET_DIR)/S80gpios:
+ cp -Rf $(ARMADEUS-PPS_INITS_DIR)/* $(ARMADEUS-PPS_INITS_TARGET_DIR)
-$(ARMADEUS-PPS_WWW_TARGET_DIR)/www/index.html:
- cp -Rf $(ARMADEUS-PPS_WWW_DIR) $(ARMADEUS-PPS_WWW_TARGET_DIR)
+pps-home:
+ cp -Rf $(ARMADEUS-PPS_HOME_DIR)/* $(ARMADEUS-PPS_HOME_TARGET_DIR)
-$(ARMADEUS-PPS_CONFIGS_TARGET_DIR)/wpa_supplicant/networkConfig:
+pps-configs:
mkdir -p $(ARMADEUS-PPS_CONFIGS_TARGET_DIR)
cp -Rf $(ARMADEUS-PPS_CONFIGS_DIR)/* $(ARMADEUS-PPS_CONFIGS_TARGET_DIR)
-$(ARMADEUS-PPS_INITS_TARGET_DIR)/S80gpios:
- cp -Rf $(ARMADEUS-PPS_INITS_DIR)/* $(ARMADEUS-PPS_INITS_TARGET_DIR)
+$(ARMADEUS-PPS_TESTSCRIPTS_TARGET_DIR)/init_boa.sh:
+ifeq ($(BR2_PACKAGE_ARMADEUS_PPS_TEST_SCRIPTS),y)
+ $(ARMADEUS-PPS_TESTSCRIPTS_SOURCE)/install.sh $(ARMADEUS-PPS_TESTSCRIPTS_TARGET_DIR)
+endif
+
+$(ARMADEUS-PPS_TESTSCRIPTS_WWW_TARGET_DIR)/www/index.html:
+ifeq ($(BR2_PACKAGE_ARMADEUS_PPS_TEST_SCRIPTS),y)
+ cp -Rf $(ARMADEUS-PPS_TESTSCRIPTS_WWW_DIR) $(ARMADEUS-PPS_TESTSCRIPTS_WWW_TARGET_DIR)
+endif
+
+$(ARMADEUS-PPS_TESTSCRIPTS_CONFIGS_TARGET_DIR)/wpa_supplicant/networkConfig:
+ifeq ($(BR2_PACKAGE_ARMADEUS_PPS_TEST_SCRIPTS),y)
+ cp -Rf $(ARMADEUS-PPS_TESTSCRIPTS_CONFIGS_DIR)/* $(ARMADEUS-PPS_TESTSCRIPTS_CONFIGS_TARGET_DIR)
+endif
-pps-testscripts: $(ARMADEUS-PPS_TESTSCRIPTS_TARGET_DIR)/init_boa.sh $(ARMADEUS-PPS_WWW_TARGET_DIR)/www/index.html $(ARMADEUS-PPS_CONFIGS_TARGET_DIR)/wpa_supplicant/networkConfig $(ARMADEUS-PPS_INITS_TARGET_DIR)/S80gpios
+pps-utils: $(ARMADEUS-PPS_INITS_TARGET_DIR)/S80gpios pps-home pps-configs $(ARMADEUS-PPS_TESTSCRIPTS_TARGET_DIR)/init_boa.sh $(ARMADEUS-PPS_TESTSCRIPTS_WWW_TARGET_DIR)/www/index.html $(ARMADEUS-PPS_TESTSCRIPTS_CONFIGS_TARGET_DIR)/wpa_supplicant/networkConfig
-armadeus-pps-testscripts-clean:
+armadeus-pps-utils-clean:
rm -rf $(ARMADEUS-PPS_TESTSCRIPTS_TARGET_DIR)
rm -rf $(ARMADEUS-PPS_WWW_TARGET_DIR)/www
- rm -rf $(ARMADEUS-PPS_CONFIGS_TARGET_DIR)
+ rm -rf $(ARMADEUS-PPS_CONFIGS_TARGET_DIR)/wpa_supplicant
#############################################################
#
# Toplevel Makefile options
#
#############################################################
-ifeq ($(strip $(BR2_PACKAGE_ARMADEUS_PPS_TEST_SCRIPTS)),y)
-TARGETS+=pps-testscripts
+ifeq ($(strip $(BR2_PACKAGE_ARMADEUS_PPS_UTILITIES)),y)
+TARGETS+=pps-utils
endif
diff --git a/buildroot/target/device/armadeus/apf27/apf27_defconfig b/buildroot/target/device/armadeus/apf27/apf27_defconfig
index 0a9bfa4..1b77d08 100644
--- a/buildroot/target/device/armadeus/apf27/apf27_defconfig
+++ b/buildroot/target/device/armadeus/apf27/apf27_defconfig
@@ -379,7 +379,7 @@ BR2_PACKAGE_FPGAREGS=y
BR2_PACKAGE_IMXREGS=y
# BR2_PACKAGE_IMXSSI is not set
BR2_PACKAGE_MAX5821CTRL=y
-# BR2_PACKAGE_ARMADEUS_PPS_TEST_SCRIPTS is not set
+# BR2_PACKAGE_ARMADEUS_PPS_UTILITIES is not set
# BR2_PACKAGE_ARMADEUS_TESTSUITE is not set
# BR2_DATABASE_SUPPORT is not set
BR2_TEXTEDIT_SUPPORT=y
diff --git a/buildroot/target/device/armadeus/apf9328/apf9328_defconfig b/buildroot/target/device/armadeus/apf9328/apf9328_defconfig
index 86d76d2..1c9927e 100644
--- a/buildroot/target/device/armadeus/apf9328/apf9328_defconfig
+++ b/buildroot/target/device/armadeus/apf9328/apf9328_defconfig
@@ -375,7 +375,7 @@ BR2_PACKAGE_PKGCONFIG=y
# BR2_PACKAGE_IMXREGS is not set
# BR2_PACKAGE_IMXSSI is not set
BR2_PACKAGE_MAX5821CTRL=y
-# BR2_PACKAGE_ARMADEUS_PPS_TEST_SCRIPTS is not set
+# BR2_PACKAGE_ARMADEUS_PPS_UTILITIES is not set
# BR2_PACKAGE_ARMADEUS_TESTSUITE is not set
# BR2_DATABASE_SUPPORT is not set
BR2_TEXTEDIT_SUPPORT=y
diff --git a/buildroot/target/device/armadeus/pps/pps_defconfig b/buildroot/target/device/armadeus/pps/pps_defconfig
index 586df38..159d2c8 100644
--- a/buildroot/target/device/armadeus/pps/pps_defconfig
+++ b/buildroot/target/device/armadeus/pps/pps_defconfig
@@ -1,6 +1,6 @@
#
# Automatically generated make config: don't edit
-# Wed Dec 8 16:35:18 2010
+# Tue Jan 4 15:50:13 2011
#
BR2_HAVE_DOT_CONFIG=y
BR2_VERSION="0.10.0-svn"
@@ -380,6 +380,7 @@ BR2_PACKAGE_FPGAREGS=y
BR2_PACKAGE_IMXREGS=y
# BR2_PACKAGE_IMXSSI is not set
BR2_PACKAGE_MAX5821CTRL=y
+BR2_PACKAGE_ARMADEUS_PPS_UTILITIES=y
BR2_PACKAGE_ARMADEUS_PPS_TEST_SCRIPTS=y
# BR2_PACKAGE_ARMADEUS_TESTSUITE is not set
# BR2_DATABASE_SUPPORT is not set
diff --git a/buildroot/target/device/armadeus/rootfs/target_skeleton/etc/passwd b/target/pps/configs/passwd
similarity index 91%
copy from buildroot/target/device/armadeus/rootfs/target_skeleton/etc/passwd
copy to target/pps/configs/passwd
index 377d4df..64b5f63 100644
--- a/buildroot/target/device/armadeus/rootfs/target_skeleton/etc/passwd
+++ b/target/pps/configs/passwd
@@ -13,3 +13,4 @@ dbus:x:81:81:dbus:/var/run/dbus:/bin/sh
nobody:x:99:99:nobody:/home:/bin/sh
sshd:x:103:99:Operator:/var:/bin/sh
default:x:1000:1000:Default non-root user:/home/default:/bin/sh
+guest:x:1001:1001:Linux User,,,:/home/guest:/bin/sh
diff --git a/buildroot/target/device/armadeus/rootfs/target_skeleton/etc/shadow b/target/pps/configs/shadow
similarity index 84%
copy from buildroot/target/device/armadeus/rootfs/target_skeleton/etc/shadow
copy to target/pps/configs/shadow
index 4941a1a..a8a4fa3 100644
--- a/buildroot/target/device/armadeus/rootfs/target_skeleton/etc/shadow
+++ b/target/pps/configs/shadow
@@ -10,3 +10,4 @@ uucp:*:10933:0:99999:7:::
operator:*:10933:0:99999:7:::
nobody:*:10933:0:99999:7:::
default::10933:0:99999:7:::
+guest:$1$7qAtEAIr$yTnpk6Tm9xyNL5NUq4bE3/:10933:0:99999:7:::
diff --git a/target/pps/configs/sshd_config b/target/pps/configs/sshd_config
new file mode 100644
index 0000000..0495201
--- /dev/null
+++ b/target/pps/configs/sshd_config
@@ -0,0 +1,125 @@
+# $OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm Exp $
+
+# This is the sshd server system-wide configuration file. See
+# sshd_config(5) for more information.
+
+# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin
+
+# The strategy used for options in the default sshd_config shipped with
+# OpenSSH is to specify options with their default value where
+# possible, but leave them commented. Uncommented options change a
+# default value.
+
+#Port 22
+#AddressFamily any
+#ListenAddress 0.0.0.0
+#ListenAddress ::
+
+# Disable legacy (protocol version 1) support in the server for new
+# installations. In future the default will change to require explicit
+# activation of protocol 1
+Protocol 2
+
+# HostKey for protocol version 1
+#HostKey /etc/ssh_host_key
+# HostKeys for protocol version 2
+#HostKey /etc/ssh_host_rsa_key
+#HostKey /etc/ssh_host_dsa_key
+
+# Lifetime and size of ephemeral version 1 server key
+#KeyRegenerationInterval 1h
+#ServerKeyBits 1024
+
+# Logging
+# obsoletes QuietMode and FascistLogging
+#SyslogFacility AUTH
+#LogLevel INFO
+
+# Authentication:
+
+#LoginGraceTime 2m
+PermitRootLogin no
+#StrictModes yes
+#MaxAuthTries 6
+#MaxSessions 10
+
+#RSAAuthentication yes
+#PubkeyAuthentication yes
+#AuthorizedKeysFile .ssh/authorized_keys
+
+# For this to work you will also need host keys in /etc/ssh_known_hosts
+#RhostsRSAAuthentication no
+# similar for protocol version 2
+#HostbasedAuthentication no
+# Change to yes if you don't trust ~/.ssh/known_hosts for
+# RhostsRSAAuthentication and HostbasedAuthentication
+#IgnoreUserKnownHosts no
+# Don't read the user's ~/.rhosts and ~/.shosts files
+#IgnoreRhosts yes
+
+# To disable tunneled clear text passwords, change to no here!
+#PasswordAuthentication yes
+#PermitEmptyPasswords no
+
+# Change to no to disable s/key passwords
+#ChallengeResponseAuthentication yes
+
+# Kerberos options
+#KerberosAuthentication no
+#KerberosOrLocalPasswd yes
+#KerberosTicketCleanup yes
+#KerberosGetAFSToken no
+
+# GSSAPI options
+#GSSAPIAuthentication no
+#GSSAPICleanupCredentials yes
+
+# Set this to 'yes' to enable PAM authentication, account processing,
+# and session processing. If this is enabled, PAM authentication will
+# be allowed through the ChallengeResponseAuthentication and
+# PasswordAuthentication. Depending on your PAM configuration,
+# PAM authentication via ChallengeResponseAuthentication may bypass
+# the setting of "PermitRootLogin without-password".
+# If you just want the PAM account and session checks to run without
+# PAM authentication, then enable this but set PasswordAuthentication
+# and ChallengeResponseAuthentication to 'no'.
+#UsePAM no
+
+#AllowAgentForwarding yes
+#AllowTcpForwarding yes
+#GatewayPorts no
+#X11Forwarding no
+X11Forwarding yes
+#X11DisplayOffset 10
+#X11UseLocalhost yes
+#PrintMotd yes
+PrintMotd no
+#PrintLastLog yes
+#TCPKeepAlive yes
+#UseLogin no
+#UsePrivilegeSeparation yes
+#PermitUserEnvironment no
+#Compression delayed
+#ClientAliveInterval 0
+#ClientAliveCountMax 3
+#UseDNS yes
+#PidFile /var/run/sshd.pid
+#MaxStartups 10
+#PermitTunnel no
+#ChrootDirectory none
+
+# no default banner path
+#Banner none
+
+ClientAliveInterval 15
+ClientAliveCountMax 4
+AcceptEnv LANG LC_*
+
+# override default of no subsystems
+Subsystem sftp /usr/lib/sftp-server
+
+# Example of overriding settings on a per-user basis
+#Match User anoncvs
+# X11Forwarding no
+# AllowTcpForwarding no
+# ForceCommand cvs server
diff --git a/target/pps/scripts/test_wifi.sh b/target/pps/init/S90guestcreation
old mode 100644
new mode 100755
similarity index 67%
copy from target/pps/scripts/test_wifi.sh
copy to target/pps/init/S90guestcreation
index 93e4324..52f10a5
--- a/target/pps/scripts/test_wifi.sh
+++ b/target/pps/init/S90guestcreation
@@ -1,3 +1,5 @@
+#!/bin/sh
+
#
# THE ARMADEUS PROJECT
#
@@ -16,19 +18,21 @@
# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-
-modprobe libertas_sdio
+#
-# shutdown other ports
-ifconfig usb0 down 2>/dev/null
-ifconfig eth0 down 2>/dev/null
-ifconfig usb1 down 2>/dev/null
+#
+# Script used to create and configure the user guest
+# to connect to PPS through SSH
+#
+# Jérémie Scheer <jer...@ar...>
+#
-ifconfig eth1 up
-iwconfig eth1 mode managed essid armadeus key restricted 93d7-e853-22e8-8784-0b4a-629c-ab
+echo "Configuring guest user"
+chown guest:1001 /home/guest
+mkdir /home/guest/.ssh
+chown guest:1001 /home/guest/.ssh
+chmod 750 /home/guest/.ssh
-ifconfig eth1 192.168.0.251
-sleep 1
-echo -e "\nTo check the wifi port, please browse on 192.168.0.251\n"
+touch /home/guest/.ssh/authorized_keys
+chown guest:1001 /home/guest/.ssh/authorized_keys
diff --git a/target/pps/configs/ipsec-tools.conf b/target/pps/scripts/configs/ipsec-tools.conf
similarity index 100%
rename from target/pps/configs/ipsec-tools.conf
rename to target/pps/scripts/configs/ipsec-tools.conf
diff --git a/target/pps/configs/profile b/target/pps/scripts/configs/profile
similarity index 100%
rename from target/pps/configs/profile
rename to target/pps/scripts/configs/profile
diff --git a/target/pps/configs/wpa_supplicant/networkConfig b/target/pps/scripts/configs/wpa_supplicant/networkConfig
similarity index 100%
rename from target/pps/configs/wpa_supplicant/networkConfig
rename to target/pps/scripts/configs/wpa_supplicant/networkConfig
diff --git a/target/pps/www/index.html b/target/pps/scripts/www/index.html
similarity index 100%
rename from target/pps/www/index.html
rename to target/pps/scripts/www/index.html
hooks/post-receive
--
armadeus
|
|
From: Fabien M <fa...@us...> - 2011-01-07 10:16:10
|
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 2ef8b0d7acd4a4d90bc50867b8476a2fe1c613f8 (commit)
via 20c2ca77f88a91a04afd5f3e539b9ebbb31c630d (commit)
via c58cdacb2346eb06b3fd13a92f8a4f6ffb40a412 (commit)
from a6350cd5e7a181dcad9194ded381855a5deb680b (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 2ef8b0d7acd4a4d90bc50867b8476a2fe1c613f8
Merge: 20c2ca77f88a91a04afd5f3e539b9ebbb31c630d a6350cd5e7a181dcad9194ded381855a5deb680b
Author: Fabien Marteau <fab...@ar...>
Date: Fri Jan 7 11:15:38 2011 +0100
Merge branch 'master' of ssh://armadeus.git.sourceforge.net/gitroot/armadeus/armadeus
commit 20c2ca77f88a91a04afd5f3e539b9ebbb31c630d
Author: Fabien Marteau <fab...@ar...>
Date: Fri Jan 7 11:15:08 2011 +0100
[U-BOOT] Adding second load operator for sp_vision spartan6 configuration (to be cleaned)
commit c58cdacb2346eb06b3fd13a92f8a4f6ffb40a412
Author: Fabien Marteau <fab...@ar...>
Date: Thu Jan 6 10:30:11 2011 +0100
[U-BOOT] Adding patch to add spartan6 under u-boot-2010.03
-----------------------------------------------------------------------
Summary of changes:
buildroot/target/device/armadeus/apf27/apf27.h | 3 +-
.../u-boot/u-boot-2010.03-321-add_spartan6.patch | 730 ++++++++++++++++++++
...oot-2010.03-322-fpga_second_load_operator.patch | 334 +++++++++
3 files changed, 1066 insertions(+), 1 deletions(-)
create mode 100644 buildroot/target/u-boot/u-boot-2010.03-321-add_spartan6.patch
create mode 100644 buildroot/target/u-boot/u-boot-2010.03-322-fpga_second_load_operator.patch
diff --git a/buildroot/target/device/armadeus/apf27/apf27.h b/buildroot/target/device/armadeus/apf27/apf27.h
index 6ef742f..3b3cc13 100644
--- a/buildroot/target/device/armadeus/apf27/apf27.h
+++ b/buildroot/target/device/armadeus/apf27/apf27.h
@@ -581,9 +581,10 @@
* FPGA stuff
*/
#define CONFIG_FPGA
-#define CONFIG_FPGA_COUNT 1
+#define CONFIG_FPGA_COUNT 2
#define CONFIG_FPGA_XILINX
#define CONFIG_FPGA_SPARTAN3
+#define CONFIG_FPGA_SPARTAN6
#define CFG_FPGA_WAIT 20000 /* 20 ms */
#define CFG_FPGA_PROG_FEEDBACK
#define CFG_FPGA_CHECK_CTRLC
diff --git a/buildroot/target/u-boot/u-boot-2010.03-321-add_spartan6.patch b/buildroot/target/u-boot/u-boot-2010.03-321-add_spartan6.patch
new file mode 100644
index 0000000..a0678c5
--- /dev/null
+++ b/buildroot/target/u-boot/u-boot-2010.03-321-add_spartan6.patch
@@ -0,0 +1,730 @@
+Index: u-boot-2010.03/include/spartan6.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ u-boot-2010.03/include/spartan6.h 2011-01-06 11:38:23.000000000 +0100
+@@ -0,0 +1,132 @@
++/*
++ * (C) Copyright 2010-2011 Fabien Marteau <fab...@ar...>
++ * Sponsorised by 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., 59 Temple Place, Suite 330, Boston,
++ * MA 02111-1307 USA
++ *
++ */
++
++/*
++ * Configuration support for Xilinx Spartan6 devices. Based
++ * on spartan2.h (Rich Ireland, rir...@en...).
++ */
++
++#ifndef _SPARTAN6_H_
++#define _SPARTAN6_H_
++
++#include <xilinx.h>
++
++extern int Spartan6_load( Xilinx_desc *desc, void *image, size_t size );
++extern int Spartan6_dump( Xilinx_desc *desc, void *buf, size_t bsize );
++extern int Spartan6_info( Xilinx_desc *desc );
++extern int Spartan6_reloc( Xilinx_desc *desc, ulong reloc_off );
++
++/* Slave Parallel Implementation function table */
++typedef struct {
++ Xilinx_pre_fn pre;
++ Xilinx_pgm_fn pgm;
++ Xilinx_init_fn init;
++ Xilinx_err_fn err;
++ Xilinx_done_fn done;
++ Xilinx_clk_fn clk;
++ Xilinx_cs_fn cs;
++ Xilinx_wr_fn wr;
++ Xilinx_rdata_fn rdata;
++ Xilinx_wdata_fn wdata;
++ Xilinx_busy_fn busy;
++ Xilinx_abort_fn abort;
++ Xilinx_post_fn post;
++ int relocated;
++} Xilinx_Spartan6_Slave_Parallel_fns;
++
++/* Slave SelectMap Implementation function table */
++typedef struct {
++ Xilinx_pre_fn pre;
++ Xilinx_pgm_fn pgm;
++ Xilinx_init_fn init;
++ Xilinx_err_fn err;
++ Xilinx_done_fn done;
++ Xilinx_clk_fn clk;
++ Xilinx_cs_fn cs;
++ Xilinx_wr_fn wr;
++ Xilinx_rdata_fn rdata;
++ Xilinx_wdata_fn wdata;
++ Xilinx_busy_fn busy;
++ Xilinx_abort_fn abort;
++ Xilinx_post_fn post;
++ int relocated;
++} Xilinx_Spartan6_Slave_SelectMap_fns;
++
++/* Device Image Sizes
++ *********************************************************************/
++/* Spartan-VI */
++#define XILINX_XC6SLX4_SIZE (2724704l/8)
++#define XILINX_XC6SLX9_SIZE (2724704l/8)
++#define XILINX_XC6SLX16_SIZE (3713440l/8)
++#define XILINX_XC6SLX25_SIZE (6411440l/8)
++#define XILINX_XC6SLX25T_SIZE (6411440l/8)
++#define XILINX_XC6SLX45_SIZE (11875104l/8)
++#define XILINX_XC6SLX45T_SIZE (11875104l/8)
++#define XILINX_XC6SLX75_SIZE (19624608l/8)
++#define XILINX_XC6SLX75T_SIZE (19624608l/8)
++#define XILINX_XC6SLX100_SIZE (26543136l/8)
++#define XILINX_XC6SLX100T_SIZE (26543136l/8)
++#define XILINX_XC6SLX150_SIZE (33761568l/8)
++#define XILINX_XC6SLX150T40_SIZE (33761568l/8)
++
++/* Descriptor Macros
++ *********************************************************************/
++/* Spartan-VI devices */
++#define XILINX_XC6SLX4_DESC(iface, fn_table, cookie) \
++{ Xilinx_Spartan6, iface,XILINX_XC6SLX9_SIZE , fn_table, cookie }
++
++#define XILINX_XC6SLX9_DESC(iface, fn_table, cookie) \
++{ Xilinx_Spartan6, iface,XILINX_XC6SLX16_SIZE , fn_table, cookie }
++
++#define XILINX_XC6SLX16_DESC(iface, fn_table, cookie) \
++{ Xilinx_Spartan6, iface,XILINX_XC6SLX25_SIZE , fn_table, cookie }
++
++#define XILINX_XC6SLX25_DESC(iface, fn_table, cookie) \
++{ Xilinx_Spartan6, iface,XILINX_XC6SLX25T_SIZE , fn_table, cookie }
++
++#define XILINX_XC6SLX25T_DESC(iface, fn_table, cookie) \
++{ Xilinx_Spartan6, iface,XILINX_XC6SLX25T_SIZE , fn_table, cookie }
++
++#define XILINX_XC6SLX45_DESC(iface, fn_table, cookie) \
++{ Xilinx_Spartan6, iface,XILINX_XC6SLX45_SIZE , fn_table, cookie }
++
++#define XILINX_XC6SLX45T_DESC(iface, fn_table, cookie) \
++{ Xilinx_Spartan6, iface,XILINX_XC6SLX45T_SIZE , fn_table, cookie }
++
++#define XILINX_XC6SLX75_DESC(iface, fn_table, cookie) \
++{ Xilinx_Spartan6, iface,XILINX_XC6SLX75_SIZE , fn_table, cookie }
++
++#define XILINX_XC6SLX75T_DESC(iface, fn_table, cookie) \
++{ Xilinx_Spartan6, iface,XILINX_XC6SLX75T_SIZE , fn_table, cookie }
++
++#define XILINX_XC6SLX100_DESC(iface, fn_table, cookie) \
++{ Xilinx_Spartan6, iface,XILINX_XC6SLX100_SIZE , fn_table, cookie }
++
++#define XILINX_XC6SLX100T_DESC(iface, fn_table, cookie) \
++{ Xilinx_Spartan6, iface, XILINX_XC6SLX100T_SIZE , fn_table, cookie }
++
++#define XILINX_XC6SLX150_DESC(iface, fn_table, cookie) \
++{ Xilinx_Spartan6, iface, XILINX_XC6SLX150_SIZE , fn_table, cookie }
++
++#define XILINX_XC6SLX150T40_DESC(iface, fn_table, cookie) \
++{ Xilinx_Spartan6, iface,XILINX_XC6SLX150T40_SIZE , fn_table, cookie }
++
++#endif /* _SPARTAN6_H_ */
+Index: u-boot-2010.03/drivers/fpga/spartan6.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ u-boot-2010.03/drivers/fpga/spartan6.c 2011-01-06 11:50:51.000000000 +0100
+@@ -0,0 +1,538 @@
++/*
++ * (C) Copyright 2010 Fabien Marteau <fab...@ar...>
++ * Sponsorised by 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., 59 Temple Place, Suite 330, Boston,
++ * MA 02111-1307 USA
++ *
++ */
++
++/*
++ * Configuration support for Xilinx Spartan6 devices. Based
++ * on spartan6.c (Rich Ireland, rir...@en...).
++ */
++
++#include <common.h> /* core U-Boot definitions */
++#include <spartan6.h> /* Spartan-II device family */
++
++#if defined(CONFIG_FPGA) && defined(CONFIG_FPGA_SPARTAN6)
++
++/* Define FPGA_DEBUG to get debug printf's */
++#ifdef FPGA_DEBUG
++#define PRINTF(fmt,args...) printf (fmt ,##args)
++#else
++#define PRINTF(fmt,args...)
++#endif
++
++#undef CONFIG_SYS_FPGA_CHECK_BUSY
++#undef CONFIG_SYS_FPGA_PROG_FEEDBACK
++
++/* Note: The assumption is that we cannot possibly run fast enough to
++ * overrun the device (the Slave Parallel mode can free run at 50MHz).
++ * If there is a need to operate slower, define CONFIG_FPGA_DELAY in
++ * the board config file to slow things down.
++ */
++#ifndef CONFIG_FPGA_DELAY
++#define CONFIG_FPGA_DELAY()
++#endif
++
++#ifndef CONFIG_SYS_FPGA_WAIT
++#define CONFIG_SYS_FPGA_WAIT CONFIG_SYS_HZ/100 /* 10 ms */
++#endif
++
++static int Spartan6_sp_load( Xilinx_desc *desc, void *buf, size_t bsize );
++static int Spartan6_sp_dump( Xilinx_desc *desc, void *buf, size_t bsize );
++/* static int Spartan6_sp_info( Xilinx_desc *desc ); */
++static int Spartan6_sp_reloc( Xilinx_desc *desc, ulong reloc_offset );
++
++static int Spartan6_ss_load( Xilinx_desc *desc, void *buf, size_t bsize );
++static int Spartan6_ss_dump( Xilinx_desc *desc, void *buf, size_t bsize );
++/* static int Spartan6_ss_info( Xilinx_desc *desc ); */
++static int Spartan6_ss_reloc( Xilinx_desc *desc, ulong reloc_offset );
++static int Spartan6_ssm_reloc( Xilinx_desc *desc, ulong reloc_offset );
++
++/* ------------------------------------------------------------------------- */
++/* Spartan-II Generic Implementation */
++int Spartan6_load (Xilinx_desc * desc, void *buf, size_t bsize)
++{
++ int ret_val = FPGA_FAIL;
++
++ printf("ERROR: spartan6 simple load function is not implemented\n");
++
++ return ret_val;
++}
++
++/* ------------------------------------------------------------------------- */
++/* Spartan-VI Generic Implementation */
++int Spartan6_dump (Xilinx_desc * desc, void *buf, size_t bsize)
++{
++ int ret_val = FPGA_FAIL;
++
++
++ return ret_val;
++}
++
++int Spartan6_info( Xilinx_desc *desc )
++{
++ return FPGA_SUCCESS;
++}
++
++
++int Spartan6_reloc (Xilinx_desc * desc, ulong reloc_offset)
++{
++ int ret_val = FPGA_FAIL; /* assume a failure */
++
++ if (desc->family != Xilinx_Spartan6) {
++ printf ("%s: Unsupported family type (spartan6 line %d), %d\n",
++ __FUNCTION__, __LINE__, desc->family);
++ return FPGA_FAIL;
++ } else
++ switch (desc->iface) {
++ case slave_serial:
++ ret_val = Spartan6_ss_reloc (desc, reloc_offset);
++ break;
++
++ case slave_parallel:
++ ret_val = Spartan6_sp_reloc (desc, reloc_offset);
++ break;
++
++ case slave_selectmap:
++ ret_val = Spartan6_ssm_reloc (desc, reloc_offset);
++ break;
++
++ default:
++ printf ("%s: Unsupported interface type (spartan6 line %d), %d\n",
++ __FUNCTION__, __LINE__, desc->iface);
++ }
++
++ return ret_val;
++}
++
++/* ------------------------------------------------------------------------- */
++/* Spartan-VI Slave Parallel Generic Implementation */
++static int Spartan6_sp_load (Xilinx_desc * desc, void *buf, size_t bsize)
++{
++ int ret_val = FPGA_FAIL; /* assume the worst */
++ Xilinx_Spartan6_Slave_Parallel_fns *fn = desc->iface_fns;
++
++ PRINTF ("%s: start with interface functions @ 0x%p\n",
++ __FUNCTION__, fn);
++
++ if (fn) {
++ size_t bytecount = 0;
++ unsigned char *data = (unsigned char *) buf;
++ int cookie = desc->cookie; /* make a local copy */
++ unsigned long ts; /* timestamp */
++
++ PRINTF ("%s: Function Table:\n"
++ "ptr:\t0x%p\n"
++ "struct: 0x%p\n"
++ "pre: 0x%p\n"
++ "pgm:\t0x%p\n"
++ "init:\t0x%p\n"
++ "err:\t0x%p\n"
++ "clk:\t0x%p\n"
++ "cs:\t0x%p\n"
++ "wr:\t0x%p\n"
++ "read data:\t0x%p\n"
++ "write data:\t0x%p\n"
++ "busy:\t0x%p\n"
++ "abort:\t0x%p\n",
++ "post:\t0x%p\n\n",
++ __FUNCTION__, &fn, fn, fn->pre, fn->pgm, fn->init, fn->err,
++ fn->clk, fn->cs, fn->wr, fn->rdata, fn->wdata, fn->busy,
++ fn->abort, fn->post);
++
++ /*
++ * This code is designed to emulate the "Express Style"
++ * Continuous Data Loading in Slave Parallel Mode for
++ * the Spartan-II Family.
++ */
++#ifdef CONFIG_SYS_FPGA_PROG_FEEDBACK
++ printf ("Loading FPGA Device %d...\n", cookie);
++#endif
++ /*
++ * Run the pre configuration function if there is one.
++ */
++ if (*fn->pre) {
++ (*fn->pre) (cookie);
++ }
++
++ /* Establish the initial state */
++ (*fn->pgm) (TRUE, TRUE, cookie); /* Assert the program, commit */
++
++ /* Get ready for the burn */
++ CONFIG_FPGA_DELAY ();
++ (*fn->pgm) (FALSE, TRUE, cookie); /* Deassert the program, commit */
++
++ ts = get_timer (0); /* get current time */
++ /* Now wait for INIT and BUSY to go high */
++ do {
++ CONFIG_FPGA_DELAY ();
++ if (get_timer (ts) > CONFIG_SYS_FPGA_WAIT) { /* check the time */
++ puts ("** Timeout waiting for INIT to clear.\n");
++ (*fn->abort) (cookie); /* abort the burn */
++ return FPGA_FAIL;
++ }
++ } while ((*fn->init) (cookie) && (*fn->busy) (cookie));
++
++ (*fn->wr) (TRUE, TRUE, cookie); /* Assert write, commit */
++ (*fn->cs) (TRUE, TRUE, cookie); /* Assert chip select, commit */
++ (*fn->clk) (TRUE, TRUE, cookie); /* Assert the clock pin */
++
++ /* Load the data */
++ while ( (*fn->done) (cookie) == FPGA_FAIL){
++ /* XXX - do we check for an Ctrl-C press in here ??? */
++ /* XXX - Check the error bit? */
++
++ (*fn->wdata) (data[bytecount++], TRUE, cookie); /* write the data */
++ CONFIG_FPGA_DELAY ();
++ (*fn->clk) (FALSE, TRUE, cookie); /* Deassert the clock pin */
++ CONFIG_FPGA_DELAY ();
++ (*fn->clk) (TRUE, TRUE, cookie); /* Assert the clock pin */
++
++ ts = get_timer (0); /* get current time */
++#ifdef CONFIG_SYS_FPGA_CHECK_BUSY
++ while ((*fn->busy) (cookie)) {
++ /* XXX - we should have a check in here somewhere to
++ * make sure we aren't busy forever... */
++
++ CONFIG_FPGA_DELAY ();
++ (*fn->clk) (FALSE, TRUE, cookie); /* Deassert the clock pin */
++ CONFIG_FPGA_DELAY ();
++ (*fn->clk) (TRUE, TRUE, cookie); /* Assert the clock pin */
++
++ if (get_timer (ts) > CONFIG_SYS_FPGA_WAIT) { /* check the time */
++ puts ("** Timeout waiting for BUSY to clear.\n");
++ (*fn->abort) (cookie); /* abort the burn */
++ return FPGA_FAIL;
++ }
++ }
++#endif
++ if (get_timer (ts) > CONFIG_SYS_FPGA_WAIT) { /* check the time */
++ puts ("** Timeout waiting for BUSY to clear.\n");
++ (*fn->abort) (cookie); /* abort the burn */
++ return FPGA_FAIL;
++ }
++
++#ifdef CONFIG_SYS_FPGA_PROG_FEEDBACK
++ if (bytecount % (bsize / 40) == 0)
++ putc ('.'); /* let them know we are alive */
++#endif
++ }
++
++ CONFIG_FPGA_DELAY ();
++ (*fn->cs) (FALSE, TRUE, cookie); /* Deassert the chip select */
++ (*fn->wr) (FALSE, TRUE, cookie); /* Deassert the write pin */
++
++#ifdef CONFIG_SYS_FPGA_PROG_FEEDBACK
++ putc ('\n'); /* terminate the dotted line */
++#endif
++
++ /* now check for done signal */
++ ts = get_timer (0); /* get current time */
++ ret_val = FPGA_SUCCESS;
++ while ((*fn->done) (cookie) == FPGA_FAIL) {
++ /* XXX - we should have a check in here somewhere to
++ * make sure we aren't busy forever... */
++
++ CONFIG_FPGA_DELAY ();
++ (*fn->clk) (FALSE, TRUE, cookie); /* Deassert the clock pin */
++ CONFIG_FPGA_DELAY ();
++ (*fn->clk) (TRUE, TRUE, cookie); /* Assert the clock pin */
++
++ if (get_timer (ts) > CONFIG_SYS_FPGA_WAIT) { /* check the time */
++ puts ("** Timeout waiting for DONE to clear.\n");
++ (*fn->abort) (cookie); /* abort the burn */
++ ret_val = FPGA_FAIL;
++ break;
++ }
++ }
++
++ if (ret_val == FPGA_SUCCESS) {
++#ifdef CONFIG_SYS_FPGA_PROG_FEEDBACK
++ puts ("Done.\n");
++#endif
++ }
++ /*
++ * Run the post configuration function if there is one.
++ */
++ if (*fn->post) {
++ (*fn->post) (cookie);
++ }
++
++ else {
++#ifdef CONFIG_SYS_FPGA_PROG_FEEDBACK
++ puts ("Fail.\n");
++#endif
++ }
++
++ } else {
++ printf ("%s: NULL Interface function table!\n", __FUNCTION__);
++ }
++
++ return ret_val;
++}
++
++static int Spartan6_sp_dump (Xilinx_desc * desc, void *buf, size_t bsize)
++{
++ int ret_val = FPGA_FAIL; /* assume the worst */
++ Xilinx_Spartan6_Slave_Parallel_fns *fn = desc->iface_fns;
++
++ if (fn) {
++ unsigned char *data = (unsigned char *) buf;
++ size_t bytecount = 0;
++ int cookie = desc->cookie; /* make a local copy */
++
++ printf ("Starting Dump of FPGA Device %d...\n", cookie);
++
++ (*fn->cs) (TRUE, TRUE, cookie); /* Assert chip select, commit */
++ (*fn->clk) (TRUE, TRUE, cookie); /* Assert the clock pin */
++
++ /* dump the data */
++ while (bytecount < bsize) {
++ /* XXX - do we check for an Ctrl-C press in here ??? */
++
++ (*fn->clk) (FALSE, TRUE, cookie); /* Deassert the clock pin */
++ (*fn->clk) (TRUE, TRUE, cookie); /* Assert the clock pin */
++ (*fn->rdata) (&(data[bytecount++]), cookie); /* read the data */
++#ifdef CONFIG_SYS_FPGA_PROG_FEEDBACK
++ if (bytecount % (bsize / 40) == 0)
++ putc ('.'); /* let them know we are alive */
++#endif
++ }
++
++ (*fn->cs) (FALSE, FALSE, cookie); /* Deassert the chip select */
++ (*fn->clk) (FALSE, TRUE, cookie); /* Deassert the clock pin */
++ (*fn->clk) (TRUE, TRUE, cookie); /* Assert the clock pin */
++
++#ifdef CONFIG_SYS_FPGA_PROG_FEEDBACK
++ putc ('\n'); /* terminate the dotted line */
++#endif
++ puts ("Done.\n");
++
++ /* XXX - checksum the data? */
++ } else {
++ printf ("%s: NULL Interface function table!\n", __FUNCTION__);
++ }
++
++ return ret_val;
++}
++
++
++static int Spartan6_sp_reloc (Xilinx_desc * desc, ulong reloc_offset)
++{
++ int ret_val = FPGA_FAIL; /* assume the worst */
++ Xilinx_Spartan6_Slave_Parallel_fns *fn_r, *fn =
++ (Xilinx_Spartan6_Slave_Parallel_fns *) (desc->iface_fns);
++
++ if (fn) {
++ ulong addr;
++
++ /* Get the relocated table address */
++ addr = (ulong) fn + reloc_offset;
++ fn_r = (Xilinx_Spartan6_Slave_Parallel_fns *) addr;
++
++ if (!fn_r->relocated) {
++
++ if (memcmp (fn_r, fn,
++ sizeof (Xilinx_Spartan6_Slave_Parallel_fns))
++ == 0) {
++ /* good copy of the table, fix the descriptor pointer */
++ desc->iface_fns = fn_r;
++ } else {
++ PRINTF ("%s: Invalid function table at 0x%p\n",
++ __FUNCTION__, fn_r);
++ return FPGA_FAIL;
++ }
++
++ PRINTF ("%s: Relocating descriptor at 0x%p\n", __FUNCTION__,
++ desc);
++
++ addr = (ulong) (fn->pre) + reloc_offset;
++ fn_r->pre = (Xilinx_pre_fn) addr;
++
++ addr = (ulong) (fn->pgm) + reloc_offset;
++ fn_r->pgm = (Xilinx_pgm_fn) addr;
++
++ addr = (ulong) (fn->init) + reloc_offset;
++ fn_r->init = (Xilinx_init_fn) addr;
++
++ addr = (ulong) (fn->done) + reloc_offset;
++ fn_r->done = (Xilinx_done_fn) addr;
++
++ addr = (ulong) (fn->clk) + reloc_offset;
++ fn_r->clk = (Xilinx_clk_fn) addr;
++
++ addr = (ulong) (fn->err) + reloc_offset;
++ fn_r->err = (Xilinx_err_fn) addr;
++
++ addr = (ulong) (fn->cs) + reloc_offset;
++ fn_r->cs = (Xilinx_cs_fn) addr;
++
++ addr = (ulong) (fn->wr) + reloc_offset;
++ fn_r->wr = (Xilinx_wr_fn) addr;
++
++ addr = (ulong) (fn->rdata) + reloc_offset;
++ fn_r->rdata = (Xilinx_rdata_fn) addr;
++
++ addr = (ulong) (fn->wdata) + reloc_offset;
++ fn_r->wdata = (Xilinx_wdata_fn) addr;
++
++ addr = (ulong) (fn->busy) + reloc_offset;
++ fn_r->busy = (Xilinx_busy_fn) addr;
++
++ addr = (ulong) (fn->abort) + reloc_offset;
++ fn_r->abort = (Xilinx_abort_fn) addr;
++
++ addr = (ulong) (fn->post) + reloc_offset;
++ fn_r->post = (Xilinx_post_fn) addr;
++
++ fn_r->relocated = TRUE;
++
++ } else {
++ /* this table has already been moved */
++ /* XXX - should check to see if the descriptor is correct */
++ desc->iface_fns = fn_r;
++ }
++
++ ret_val = FPGA_SUCCESS;
++ } else {
++ printf ("%s: NULL Interface function table!\n", __FUNCTION__);
++ }
++
++ return ret_val;
++
++}
++
++/* ------------------------------------------------------------------------- */
++
++static int Spartan6_ss_load (Xilinx_desc * desc, void *buf, size_t bsize)
++{
++ int ret_val = FPGA_FAIL; /* assume the worst */
++
++ printf ("%s: Slave Serial load is unavailable\n",
++ __FUNCTION__);
++
++ return ret_val;
++}
++
++static int Spartan6_ss_dump (Xilinx_desc * desc, void *buf, size_t bsize)
++{
++ /* Readback is only available through the Slave Parallel and */
++ /* boundary-scan interfaces. */
++ printf ("%s: Slave Serial Dumping is unavailable\n",
++ __FUNCTION__);
++ return FPGA_FAIL;
++}
++
++static int Spartan6_ss_reloc (Xilinx_desc * desc, ulong reloc_offset)
++{
++ int ret_val = FPGA_FAIL; /* assume the worst */
++
++ printf ("%s: Slave Serial reloc is unavailable\n",
++ __FUNCTION__);
++
++ return ret_val;
++
++}
++
++static int Spartan6_ssm_reloc (Xilinx_desc * desc, ulong reloc_offset)
++{
++ int ret_val = FPGA_FAIL; /* assume the worst */
++
++ Xilinx_Spartan6_Slave_SelectMap_fns *fn_r, *fn =
++ (Xilinx_Spartan6_Slave_SelectMap_fns *) (desc->iface_fns);
++
++ if (fn) {
++ ulong addr;
++
++ /* Get the relocated table address */
++ addr = (ulong) fn + reloc_offset;
++ fn_r = (Xilinx_Spartan6_Slave_SelectMap_fns *) addr;
++
++ if (!fn_r->relocated) {
++
++ if (memcmp (fn_r, fn,
++ sizeof (Xilinx_Spartan6_Slave_SelectMap_fns))
++ == 0) {
++ /* good copy of the table, fix the descriptor pointer */
++ desc->iface_fns = fn_r;
++ } else {
++ PRINTF ("%s: Invalid function table at 0x%p\n",
++ __FUNCTION__, fn_r);
++ return FPGA_FAIL;
++ }
++
++ PRINTF ("%s: Relocating descriptor at 0x%p\n", __FUNCTION__,
++ desc);
++
++ addr = (ulong) (fn->pre) + reloc_offset;
++ fn_r->pre = (Xilinx_pre_fn) addr;
++
++ addr = (ulong) (fn->pgm) + reloc_offset;
++ fn_r->pgm = (Xilinx_pgm_fn) addr;
++
++ addr = (ulong) (fn->init) + reloc_offset;
++ fn_r->init = (Xilinx_init_fn) addr;
++
++ addr = (ulong) (fn->done) + reloc_offset;
++ fn_r->done = (Xilinx_done_fn) addr;
++
++ addr = (ulong) (fn->clk) + reloc_offset;
++ fn_r->clk = (Xilinx_clk_fn) addr;
++
++ addr = (ulong) (fn->err) + reloc_offset;
++ fn_r->err = (Xilinx_err_fn) addr;
++
++ addr = (ulong) (fn->cs) + reloc_offset;
++ fn_r->cs = (Xilinx_cs_fn) addr;
++
++ addr = (ulong) (fn->wr) + reloc_offset;
++ fn_r->wr = (Xilinx_wr_fn) addr;
++
++ addr = (ulong) (fn->rdata) + reloc_offset;
++ fn_r->rdata = (Xilinx_rdata_fn) addr;
++
++ addr = (ulong) (fn->wdata) + reloc_offset;
++ fn_r->wdata = (Xilinx_wdata_fn) addr;
++
++ addr = (ulong) (fn->busy) + reloc_offset;
++ fn_r->busy = (Xilinx_busy_fn) addr;
++
++ addr = (ulong) (fn->abort) + reloc_offset;
++ fn_r->abort = (Xilinx_abort_fn) addr;
++
++ addr = (ulong) (fn->post) + reloc_offset;
++ fn_r->post = (Xilinx_post_fn) addr;
++
++ fn_r->relocated = TRUE;
++
++ } else {
++ /* this table has already been moved */
++ /* XXX - should check to see if the descriptor is correct */
++ desc->iface_fns = fn_r;
++ }
++
++ ret_val = FPGA_SUCCESS;
++ } else {
++ printf ("%s: NULL Interface function table!\n", __FUNCTION__);
++ }
++
++
++ return ret_val;
++
++}
++#endif
+Index: u-boot-2010.03/drivers/fpga/Makefile
+===================================================================
+--- u-boot-2010.03.orig/drivers/fpga/Makefile 2011-01-06 11:38:21.000000000 +0100
++++ u-boot-2010.03/drivers/fpga/Makefile 2011-01-06 11:38:23.000000000 +0100
+@@ -29,6 +29,7 @@
+ COBJS-y += fpga.o
+ COBJS-$(CONFIG_FPGA_SPARTAN2) += spartan2.o
+ COBJS-$(CONFIG_FPGA_SPARTAN3) += spartan3.o
++COBJS-$(CONFIG_FPGA_SPARTAN6) += spartan6.o
+ COBJS-$(CONFIG_FPGA_VIRTEX2) += virtex2.o
+ COBJS-$(CONFIG_FPGA_XILINX) += xilinx.o
+ ifdef CONFIG_FPGA_ALTERA
+Index: u-boot-2010.03/include/xilinx.h
+===================================================================
+--- u-boot-2010.03.orig/include/xilinx.h 2011-01-06 11:38:21.000000000 +0100
++++ u-boot-2010.03/include/xilinx.h 2011-01-06 11:48:43.000000000 +0100
+@@ -33,10 +33,12 @@
+ #define CONFIG_SYS_VIRTEX_E CONFIG_SYS_FPGA_DEV( 0x2 )
+ #define CONFIG_SYS_VIRTEX2 CONFIG_SYS_FPGA_DEV( 0x4 )
+ #define CONFIG_SYS_SPARTAN3 CONFIG_SYS_FPGA_DEV( 0x8 )
++#define CONFIG_SYS_SPARTAN6 CONFIG_SYS_FPGA_DEV( 0xa )
+ #define CONFIG_SYS_XILINX_SPARTAN2 (CONFIG_SYS_FPGA_XILINX | CONFIG_SYS_SPARTAN2)
+ #define CONFIG_SYS_XILINX_VIRTEX_E (CONFIG_SYS_FPGA_XILINX | CONFIG_SYS_VIRTEX_E)
+ #define CONFIG_SYS_XILINX_VIRTEX2 (CONFIG_SYS_FPGA_XILINX | CONFIG_SYS_VIRTEX2)
+ #define CONFIG_SYS_XILINX_SPARTAN3 (CONFIG_SYS_FPGA_XILINX | CONFIG_SYS_SPARTAN3)
++#define CONFIG_SYS_XILINX_SPARTAN6 (CONFIG_SYS_FPGA_XILINX | CONFIG_SYS_SPARTAN6)
+ /* XXX - Add new models here */
+
+
+@@ -68,6 +70,7 @@
+ Xilinx_VirtexE, /* Virtex-E Family */
+ Xilinx_Virtex2, /* Virtex2 Family */
+ Xilinx_Spartan3, /* Spartan-III Family */
++ Xilinx_Spartan6, /* Spartan-VI Family */
+ max_xilinx_type /* insert all new types before this */
+ } Xilinx_Family; /* end, typedef Xilinx_Family */
+
+Index: u-boot-2010.03/README
+===================================================================
+--- u-boot-2010.03.orig/README 2011-01-06 11:38:21.000000000 +0100
++++ u-boot-2010.03/README 2011-01-06 11:38:23.000000000 +0100
+@@ -1639,7 +1639,7 @@
+ CONFIG_FPGA_<family>
+
+ Enables support for FPGA family.
+- (SPARTAN2, SPARTAN3, VIRTEX2, CYCLONE2, ACEX1K, ACEX)
++ (SPARTAN2, SPARTAN3,SPARTAN6, VIRTEX2, CYCLONE2, ACEX1K, ACEX)
+
+ CONFIG_FPGA_COUNT
+
diff --git a/buildroot/target/u-boot/u-boot-2010.03-322-fpga_second_load_operator.patch b/buildroot/target/u-boot/u-boot-2010.03-322-fpga_second_load_operator.patch
new file mode 100644
index 0000000..ef412dc
--- /dev/null
+++ b/buildroot/target/u-boot/u-boot-2010.03-322-fpga_second_load_operator.patch
@@ -0,0 +1,334 @@
+Index: u-boot-2010.03/board/armadeus/apf27/fpga.c
+===================================================================
+--- u-boot-2010.03.orig/board/armadeus/apf27/fpga.c 2011-01-06 11:44:48.000000000 +0100
++++ u-boot-2010.03/board/armadeus/apf27/fpga.c 2011-01-06 11:44:54.000000000 +0100
+@@ -33,6 +33,7 @@
+ #include <config.h>
+ #include "fpga.h"
+ #include <spartan3.h>
++#include <spartan6.h>
+
+ #define GPIO_PORT(x) ((x & GPIO_PORT_MASK) >> GPIO_PORT_SHIFT)
+ #define GPIO_SET(x) writel(readl(&gpregs->port[GPIO_PORT(x)].dr) | (1 << (x & GPIO_PIN_MASK)), \
+@@ -67,21 +68,48 @@
+ fpga_wr_fn,
+ fpga_rdata_fn,
+ fpga_wdata_fn,
+- fpga_busy_fn,
++ fpga_busy_fn,
+ fpga_abort_fn,
+ fpga_post_fn,
+ };
+
++Xilinx_Spartan6_Slave_SelectMap_fns fpga_second_fns= {
++ fpga_spartan6_pre_fn,
++ fpga_spartan6_pgm_fn,
++ fpga_spartan6_init_fn,
++ NULL,
++ fpga_spartan6_done_fn,
++ fpga_spartan6_clk_fn,
++ fpga_spartan6_cs_fn,
++ fpga_spartan6_wr_fn,
++ fpga_spartan6_rdata_fn,
++ fpga_spartan6_wdata_fn,
++ fpga_spartan6_busy_fn,
++ fpga_spartan6_abort_fn,
++ fpga_spartan6_post_fn,
++
++};
++
+ Xilinx_desc fpga[CONFIG_FPGA_COUNT] = {
+ {Xilinx_Spartan3,
+ slave_parallel,
+ 1196128l/8,
+ (void *) &fpga_fns,
+- 0}
++ 0},
++ {Xilinx_Spartan6,
++ slave_selectmap,
++ XILINX_XC6SLX45_SIZE,
++ (void *) &fpga_fns,
++ 0xD6000000l,
++ 0, 0,
++ 1}
+ };
+
++/*******************************************
++ * SPARTAN3 APF27 configuration functions *
++ *******************************************/
+ /*
+- * nitialize GPIO port B before download
++ * Initialize GPIO port B before download
+ */
+ int
+ fpga_pre_fn (int cookie)
+@@ -264,4 +292,228 @@
+ return lout;
+ }
+
++/**********************************************
++* SPARTAN6 sp_vision configuration functions *
++***********************************************/
++
++#define SELECTMAP_ID_REG (desc->ip_addr)
++#define SELECTMAP_CONFIG_REG (desc->ip_addr+2)
++#define SELECTMAP_STATUS_REG (desc->ip_addr+4)
++#define SELECTMAP_DATA_REG (desc->ip_addr+6)
++
++#define SELECTMAP_CONFIG_CLK 4
++#define SELECTMAP_CONFIG_CSI_N 2
++#define SELECTMAP_CONFIG_PROGRAM_N 1
++#define SELECTMAP_CONFIG_RDWR_N 0
++
++#define SELECTMAP_STATUS_INIT_N 2
++#define SELECTMAP_STATUS_BUSY 1
++#define SELECTMAP_STATUS_DONE 0
++
++/*
++ * Initialize FPGA before download
++ */
++int
++fpga_spartan6_pre_fn (int cookie)
++{
++ int config;
++ Xilinx_desc *desc = apf27_fpga_get_desc(cookie);
++
++ config = *((volatile uint16_t *)SELECTMAP_CONFIG_REG); /* read config */
++
++ config &= ~(1 << SELECTMAP_CONFIG_CLK); /* IP in selectmap mode */
++ config |= (1 << SELECTMAP_CONFIG_CSI_N); /* CSI_n High */
++ config |= (1 << SELECTMAP_CONFIG_PROGRAM_N); /* PROGRAM_n High */
++ config |= (1 << SELECTMAP_CONFIG_RDWR_N); /* rdwr_n High */
++
++ *((ushort *)SELECTMAP_CONFIG_REG) = (ushort)config; /* write config */
++
++ udelay(1); /*wait until supply started*/
++ return cookie;
++}
++
++/*
++ * Set the FPGA's active-low program line to the specified level
++ */
++int
++fpga_spartan6_pgm_fn (int assert, int flush, int cookie)
++{
++ unsigned short config;
++ Xilinx_desc *desc = apf27_fpga_get_desc(cookie);
++
++ config = *((volatile uint16_t *)SELECTMAP_CONFIG_REG); /* read config */
++
++ PRINTF ("%s:%d: FPGA SET PROGRAM %s", __FUNCTION__, __LINE__,
++ assert?"high":"low");
++ PRINTF ("\n");
++
++ if (assert)
++ config &= ~(1 << SELECTMAP_CONFIG_PROGRAM_N);
++ else
++ config |= (1 << SELECTMAP_CONFIG_PROGRAM_N);
++
++ *((unsigned short *)SELECTMAP_CONFIG_REG) = config; /* write config */
++
++ return assert;
++}
++
++/*
++ * Set the FPGA's active-high clock line to the specified level
++ */
++int
++fpga_spartan6_clk_fn (int assert_clk, int flush, int cookie)
++{
++ Xilinx_desc *desc = apf27_fpga_get_desc(cookie);
++
++ PRINTF ("%s:%d: FPGA SETÂ CLOCK %s", __FUNCTION__, __LINE__,
++ assert_clk?"high":"low");
++ PRINTF ("\n");
++
++ /* clock pulse is generated when a data is wrote */
++
++ return assert_clk;
++}
++
++/*
++ * Test the state of the active-low FPGA INIT line.
++ */
++int
++fpga_spartan6_init_fn (int cookie)
++{
++ int value=0;
++ uint16_t status;
++ Xilinx_desc *desc = apf27_fpga_get_desc(cookie);
++
++ status = *((volatile uint16_t *)SELECTMAP_STATUS_REG); /* read config */
++
++ PRINTF ("%s:%d: INIT check", __FUNCTION__, __LINE__);
++ PRINTF ("%d\n",(((status&(1<<SELECTMAP_STATUS_INIT_N))==0)?1:0));
++ PRINTF ("\n");
++
++ return (((status&(1<<SELECTMAP_STATUS_INIT_N))==0)?FPGA_SUCCESS:FPGA_FAIL);
++}
++
++/*
++ * Test the state of the active-high FPGA DONE pin
++ */
++int
++fpga_spartan6_done_fn (int cookie)
++{
++ uint16_t status;
++ Xilinx_desc *desc = apf27_fpga_get_desc(cookie);
++
++ status = *((volatile uint16_t *)SELECTMAP_STATUS_REG); /* read config */
++ PRINTF ("%s:%d: DONE check %s\n", __FUNCTION__, __LINE__,
++ (((status&(1<<SELECTMAP_STATUS_DONE))==0)?0:1)?"high":"low");
++
++ return (((status&(1<<SELECTMAP_STATUS_DONE))==0)?FPGA_FAIL:FPGA_SUCCESS);
++}
++
++/*
++ * Set the FPGA's wr line to the specified level
++ */
++int
++fpga_spartan6_wr_fn (int assert_write, int flush, int cookie)
++{
++ unsigned short config;
++ Xilinx_desc *desc = apf27_fpga_get_desc(cookie);
++
++ PRINTF ("%s:%d: FPGA SETÂ RW %s ", __FUNCTION__, __LINE__,
++ assert_write?"high":"low");
++ PRINTF ("\n");
++
++ config = *((volatile uint16_t *)SELECTMAP_CONFIG_REG); /* read config */
++ if (assert_write)
++ config &= ~(1 << SELECTMAP_CONFIG_RDWR_N);
++ else
++ config |= (1 << SELECTMAP_CONFIG_RDWR_N);
++ *((unsigned short*)SELECTMAP_CONFIG_REG) = config; /* write config */
++
++ return assert_write;
++}
++
++int
++fpga_spartan6_cs_fn (int assert_cs, int flush, int cookie)
++{
++ int config;
++ Xilinx_desc *desc = apf27_fpga_get_desc(cookie);
++
++ PRINTF ("%s:%d: FPGA SETÂ CS %s ", __FUNCTION__, __LINE__,
++ assert_cs?"high":"low");
++ PRINTF ("\n");
++
++ config = *((volatile uint16_t *)SELECTMAP_CONFIG_REG); /* read config */
++ if (assert_cs)
++ config &= ~(1 << SELECTMAP_CONFIG_CSI_N);
++ else
++ config |= (1 << SELECTMAP_CONFIG_CSI_N);
++ *((ushort *)SELECTMAP_CONFIG_REG) = (ushort)config; /* write config */
++
++ return assert_cs;
++}
++
++/* TODO: read/write in 16bits mode */
++int
++fpga_spartan6_rdata_fn ( unsigned char *data, int cookie )
++{
++ Xilinx_desc *desc = apf27_fpga_get_desc(cookie);
++
++ *data = (unsigned char)((*((unsigned short*)SELECTMAP_DATA_REG))&0x00FF);
++ PRINTF(".");
++
++ return *data;
++}
++
++int
++fpga_spartan6_wdata_fn ( unsigned char data, int cookie )
++{
++ int config;
++ Xilinx_desc *desc = apf27_fpga_get_desc(cookie);
++
++ *((unsigned short*)SELECTMAP_DATA_REG) = data&0x00ff;
++
++ return data;
++}
++/* end of TODO */
++
++int
++fpga_spartan6_abort_fn ( int cookie )
++{
++ int config;
++ Xilinx_desc *desc = apf27_fpga_get_desc(cookie);
++
++ config = *((volatile uint16_t *)SELECTMAP_CONFIG_REG); /* read config */
++ config |= (1 << SELECTMAP_CONFIG_CLK); /* IP in clock mode */
++ *((ushort *)SELECTMAP_CONFIG_REG) = (ushort)config; /* write config */
++
++ return cookie;
++}
++
++int
++fpga_spartan6_busy_fn ( int cookie )
++{
++ uint16_t status;
++ Xilinx_desc *desc = apf27_fpga_get_desc(cookie);
++
++// PRINTF ("%s:%d: DONE check %s", __FUNCTION__, __LINE__,
++// GPIO_READ(CFG_FPGA_DONE)?"high":"low");
++ status = *((volatile uint16_t *)SELECTMAP_STATUS_REG); /* read config */
++
++ return (((status&(1<<SELECTMAP_STATUS_BUSY))!=0)?0:1);
++}
++
++int
++fpga_spartan6_post_fn (int cookie)
++{
++ int config;
++ Xilinx_desc *desc = apf27_fpga_get_desc(cookie);
++
++ config = *((volatile uint16_t *)SELECTMAP_CONFIG_REG); /* read config */
++ config |= (1 << SELECTMAP_CONFIG_CLK); /* IP in clock mode */
++ *((ushort *)SELECTMAP_CONFIG_REG) = (ushort)config; /* write config */
++
++ return cookie;
++}
++
++
+ #endif /* CONFIG_FPGA */
+Index: u-boot-2010.03/board/armadeus/apf27/fpga.h
+===================================================================
+--- u-boot-2010.03.orig/board/armadeus/apf27/fpga.h 2011-01-06 11:44:48.000000000 +0100
++++ u-boot-2010.03/board/armadeus/apf27/fpga.h 2011-01-06 11:44:54.000000000 +0100
+@@ -37,3 +37,20 @@
+ extern int fpga_abort_fn (int cookie);
+ extern int fpga_post_fn (int cookie);
+ extern int fpga_busy_fn (int cookie);
++
++#if defined(CONFIG_FPGA_SPARTAN6)
++extern int fpga_spartan6_check_fn(int ip_addr, int ip_id, int cookie);
++extern int fpga_spartan6_pre_fn (int cookie);
++extern int fpga_spartan6_pgm_fn (int assert_pgm, int flush, int cookie);
++extern int fpga_spartan6_cs_fn (int assert_cs, int flush, int cookie);
++extern int fpga_spartan6_init_fn (int cookie);
++extern int fpga_spartan6_done_fn (int cookie);
++extern int fpga_spartan6_clk_fn (int assert_clk, int flush, int cookie);
++extern int fpga_spartan6_wr_fn (int assert_write, int flush, int cookie);
++extern int fpga_spartan6_rdata_fn ( unsigned char *data, int cookie );
++extern int fpga_spartan6_wdata_fn ( unsigned char data, int cookie );
++extern int fpga_spartan6_abort_fn (int cookie);
++extern int fpga_spartan6_post_fn (int cookie);
++extern int fpga_spartan6_busy_fn (int cookie);
++#endif /* CONFIG_FPGA_SPARTAN3 */
++
+Index: u-boot-2010.03/include/xilinx.h
+===================================================================
+--- u-boot-2010.03.orig/include/xilinx.h 2011-01-06 11:44:59.000000000 +0100
++++ u-boot-2010.03/include/xilinx.h 2011-01-06 11:46:08.000000000 +0100
+@@ -77,6 +77,11 @@
+ typedef struct { /* typedef Xilinx_desc */
+ Xilinx_Family family; /* part type */
+ Xilinx_iface iface; /* interface type */
++ /* XXX:for second fpga configuration (throught first fpga) */
++ uint32_t fpga_offset; /* first fpga offset */
++ int ip_addr; /* Address of spartan_selectmap IP */
++ int ip_id; /* Idendifiant of spartan_selectmap IP */
++ /* end of XXX */
+ size_t size; /* bytes of data part can accept */
+ void *iface_fns; /* interface function table */
+ int cookie; /* implementation specific cookie */
hooks/post-receive
--
armadeus
|
|
From: Julien B a. A. <ar...@us...> - 2011-01-06 22:46:34
|
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 a6350cd5e7a181dcad9194ded381855a5deb680b (commit)
via 58716bef49f7b171cc37e743401291cfde121757 (commit)
from fb4f841d34ebdcdf0f8be8962eda220d1a619638 (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 a6350cd5e7a181dcad9194ded381855a5deb680b
Author: Julien Boibessot <jul...@ar...>
Date: Thu Jan 6 23:45:01 2011 +0100
[LINUX] fpgaloader: makes driver compatible with 2.6.3x kernels (on APF27)
commit 58716bef49f7b171cc37e743401291cfde121757
Author: Julien Boibessot <jul...@ar...>
Date: Thu Jan 6 23:42:40 2011 +0100
[LINUX] fpgaloader: driver doesn't use IOCTL so remove it.
-----------------------------------------------------------------------
Summary of changes:
.../armadeus/apf27/apf27-linux-2.6.36.config | 45 +++++++++++++++-
.../fpga/dev_tools/loader/apf27-fpga-loader.c | 15 ++++--
.../modules/fpga/dev_tools/loader/fpga-loader.c | 55 ++-----------------
3 files changed, 58 insertions(+), 57 deletions(-)
diff --git a/buildroot/target/device/armadeus/apf27/apf27-linux-2.6.36.config b/buildroot/target/device/armadeus/apf27/apf27-linux-2.6.36.config
index a70499f..19f1e19 100644
--- a/buildroot/target/device/armadeus/apf27/apf27-linux-2.6.36.config
+++ b/buildroot/target/device/armadeus/apf27/apf27-linux-2.6.36.config
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.36
-# Wed Jan 5 14:04:58 2011
+# Thu Jan 6 23:38:31 2011
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -1538,12 +1538,51 @@ CONFIG_USB_ETH_RNDIS=y
#
# Armadeus specific drivers
#
-# CONFIG_ARMADEUS_DRIVERS is not set
+CONFIG_ARMADEUS_DRIVERS=y
+
+#
+# Misc.
+#
+# CONFIG_ARMADEUS_GENERIC_DRIVER is not set
+# CONFIG_ARMADEUS_AS1531_PLAT is not set
+# CONFIG_ARMADEUS_GPIO_DRIVER is not set
+# CONFIG_ARMADEUS_KEYPAD_DRIVER is not set
+# CONFIG_ARMADEUS_MAX1027 is not set
+# CONFIG_ARMADEUS_MAX9768 is not set
+
+#
+# FPGA related
+#
#
# FPGA Drivers
#
-# CONFIG_ARMADEUS_FPGA_DRIVERS is not set
+CONFIG_ARMADEUS_FPGA_DRIVERS=y
+
+#
+# Drivers for configuring and testing the FPGA
+#
+CONFIG_ARMADEUS_FPGA_LOADER_DRIVER=m
+
+#
+# Others drivers for the FPGA
+#
+# CONFIG_ARMADEUS_I2C_OCORE_IRQMNG is not set
+# CONFIG_ARMADEUS_PS2KBD_DRIVER is not set
+# CONFIG_ARMADEUS_WISHBONE_EXAMPLE_DRIVERS is not set
+# CONFIG_POD_DRIVERS is not set
+
+#
+# Handheld related
+#
+# CONFIG_ARMADEUS_PWM_DRIVER is not set
+# CONFIG_IMX_BACKLIGHT is not set
+# CONFIG_HX5116_DISPLAY is not set
+
+#
+# Communication bus related
+#
+# CONFIG_ARMADEUS_ISP1761 is not set
CONFIG_MMC=y
# CONFIG_MMC_DEBUG is not set
# CONFIG_MMC_UNSAFE_RESUME is not set
diff --git a/target/linux/modules/fpga/dev_tools/loader/apf27-fpga-loader.c b/target/linux/modules/fpga/dev_tools/loader/apf27-fpga-loader.c
index 6e8e2e6..6f51943 100644
--- a/target/linux/modules/fpga/dev_tools/loader/apf27-fpga-loader.c
+++ b/target/linux/modules/fpga/dev_tools/loader/apf27-fpga-loader.c
@@ -19,19 +19,24 @@
*
*/
-#include <mach/iomux-mx1-mx2.h>
-#include <mach/gpio.h>
-#include <asm/io.h>
+#include <linux/version.h>
#include <linux/platform_device.h>
#include <linux/delay.h>
-#include "xilinx-fpga-loader.h"
+#include <asm/io.h>
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,36)
+#include <mach/iomux-mx1-mx2.h>
+#else
+#include <mach/iomux-mx27.h>
+#endif
+#include <mach/gpio.h>
#include <mach/fpga.h>
-#include <linux/version.h>
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29)
#define mxc_gpio_setup_multiple_pins mxc_gpio_setup_multiple
#define mxc_gpio_release_multiple_pins mxc_gpio_release_multiple
#endif
+#include "xilinx-fpga-loader.h"
+
#define CFG_FPGA_PWR (GPIO_PORTF | 19) /* FPGA prog pin */
#define CFG_FPGA_PRG (GPIO_PORTF | 11) /* FPGA prog pin */
#define CFG_FPGA_CLK (GPIO_PORTF | 15) /* FPGA clk pin */
diff --git a/target/linux/modules/fpga/dev_tools/loader/fpga-loader.c b/target/linux/modules/fpga/dev_tools/loader/fpga-loader.c
index bb98a47..f950207 100644
--- a/target/linux/modules/fpga/dev_tools/loader/fpga-loader.c
+++ b/target/linux/modules/fpga/dev_tools/loader/fpga-loader.c
@@ -33,10 +33,10 @@
#include "xilinx-fpga-loader.h"
-#define DRIVER_VERSION "0.9"
-#define DRIVER_NAME "fpgaloader"
-#define FPGA_PROC_DIRNAME "driver/fpga"
-#define FPGA_PROC_FILENAME FPGA_PROC_DIRNAME "/loader"
+#define DRIVER_VERSION "0.91"
+#define DRIVER_NAME "fpgaloader"
+#define FPGA_PROC_DIRNAME "driver/fpga"
+#define FPGA_PROC_FILENAME FPGA_PROC_DIRNAME "/loader"
#define FPGA_IOCTL 0x10000000 /* !! TO BE BETTER DEFINED !! */
/* global variables */
@@ -144,54 +144,12 @@ static int procfile_fpga_read(char *buffer, __attribute__ ((unused)) char **star
return ret;
}
-static int procfile_fpga_write( __attribute__ ((unused)) struct file *file, const char *buf, unsigned long count, void *data)
+static int procfile_fpga_write( __attribute__ ((unused)) struct file *file,
+ const char *buf, unsigned long count, void *data)
{
return count;
}
-/* Handling of IOCTL calls */
-int armadeus_fpga_ioctl( struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg )
-{
- int err = 0; int ret = 0;
- unsigned int minor;
-
- /* PRINTF( DRIVER_NAME " ## IOCTL received: (0x%x) ##\n", cmd ); */
- /* Extract the type and number bitfields, and don't decode wrong cmds:
- return ENOTTY (inappropriate ioctl) before access_ok() */
- if (_IOC_TYPE(cmd) != FPGA_IOCTL) return -ENOTTY;
-
- /* The direction is a bitmask, and VERIFY_WRITE catches R/W transfers.
- `Type' is user-oriented, while access_ok is kernel-oriented,
- so the concept of "read" and "write" is reversed */
- if (_IOC_DIR(cmd) & _IOC_READ)
- err = !access_ok(VERIFY_WRITE, (void *)arg, _IOC_SIZE(cmd));
- else if (_IOC_DIR(cmd) & _IOC_WRITE)
- err = !access_ok(VERIFY_READ, (void *)arg, _IOC_SIZE(cmd));
-
- if (err) return -EFAULT;
-
- if (down_interruptible(&fpga_sema))
- return -ERESTARTSYS;
-
- /* Extract and test minor */
- minor = MINOR(inode->i_rdev);
-/* if( minor > FPGA_MAX_MINOR ) {
- printk("Minor outside range: %d !\n", minor);
- return -EFAULT;
- }*/
-
- switch (cmd)
- {
- default:
- return -ENOTTY;
- break;
- }
-
- up(&fpga_sema);
-
- return ret;
-}
-
/* Create /proc entries for direct access to FPGA config */
static int create_proc_entries( void )
{
@@ -222,7 +180,6 @@ static struct file_operations fpga_fops = {
/* .read = armadeus_fpga_read, Configuration saving not supported yet */
.open = armadeus_fpga_open,
.release = armadeus_fpga_release,
- .ioctl = armadeus_fpga_ioctl,
};
#ifdef CONFIG_PM
hooks/post-receive
--
armadeus
|
|
From: Julien B a. A. <ar...@us...> - 2011-01-06 19:37:00
|
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 fb4f841d34ebdcdf0f8be8962eda220d1a619638 (commit)
from 227aba3b541c2d6185ba9606462273b340bdd62d (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 fb4f841d34ebdcdf0f8be8962eda220d1a619638
Author: Julien Boibessot <jul...@ar...>
Date: Thu Jan 6 20:36:18 2011 +0100
[LINUX] 2.6.38: Add (preliminary) support for the APF51Dev baseboard. APF51Proto is still used as default baseboard.
-----------------------------------------------------------------------
Summary of changes:
.../armadeus/apf51/apf51-linux-2.6.38.config | 5 +-
.../2.6.38/400-armadeus-add_apf51_module.patch | 23 ++--
.../408-armadeus-add_apf51-dev_baseboard.patch | 190 ++++++++++++++------
... 408b-armadeus-add_apf51-proto_baseboard.patch} | 91 +++++-----
4 files changed, 195 insertions(+), 114 deletions(-)
copy buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/{408-armadeus-add_apf51-dev_baseboard.patch => 408b-armadeus-add_apf51-proto_baseboard.patch} (80%)
diff --git a/buildroot/target/device/armadeus/apf51/apf51-linux-2.6.38.config b/buildroot/target/device/armadeus/apf51/apf51-linux-2.6.38.config
index f42da2c..c4084d2 100644
--- a/buildroot/target/device/armadeus/apf51/apf51-linux-2.6.38.config
+++ b/buildroot/target/device/armadeus/apf51/apf51-linux-2.6.38.config
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux/arm 2.6.37-rc4 Kernel Configuration
-# Mon Jan 3 15:56:42 2011
+# Thu Jan 6 20:07:42 2011
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -268,7 +268,8 @@ CONFIG_SOC_IMX51=y
# CONFIG_MACH_MX51_EFIKAMX is not set
CONFIG_MACH_APF51=y
CONFIG_MACH_APF51_HAS_BASEBOARD=y
-CONFIG_MACH_APF51_DEV=y
+# CONFIG_MACH_APF51_DEV is not set
+CONFIG_MACH_APF51_PROTO=y
# CONFIG_MXC_IRQ_PRIOR is not set
CONFIG_MXC_TZIC=y
# CONFIG_MXC_PWM is not set
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/400-armadeus-add_apf51_module.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/400-armadeus-add_apf51_module.patch
index ecdec98..121def2 100644
--- a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/400-armadeus-add_apf51_module.patch
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/400-armadeus-add_apf51_module.patch
@@ -1,7 +1,7 @@
Index: linux-2.6.38-alpha/arch/arm/mach-mx5/Kconfig
===================================================================
---- linux-2.6.38-alpha.orig/arch/arm/mach-mx5/Kconfig 2011-01-05 17:30:58.000000000 +0100
-+++ linux-2.6.38-alpha/arch/arm/mach-mx5/Kconfig 2011-01-05 20:04:52.000000000 +0100
+--- linux-2.6.38-alpha.orig/arch/arm/mach-mx5/Kconfig 2011-01-06 15:53:53.000000000 +0100
++++ linux-2.6.38-alpha/arch/arm/mach-mx5/Kconfig 2011-01-06 19:58:51.000000000 +0100
@@ -101,4 +101,17 @@
Include support for Genesi Efika MX nettop. This includes specific
configurations for the board and its peripherals.
@@ -23,7 +23,7 @@ Index: linux-2.6.38-alpha/arch/arm/mach-mx5/Kconfig
Index: linux-2.6.38-alpha/arch/arm/mach-mx5/Makefile
===================================================================
--- linux-2.6.38-alpha.orig/arch/arm/mach-mx5/Makefile 2010-12-14 09:55:53.000000000 +0100
-+++ linux-2.6.38-alpha/arch/arm/mach-mx5/Makefile 2011-01-05 20:04:52.000000000 +0100
++++ linux-2.6.38-alpha/arch/arm/mach-mx5/Makefile 2011-01-06 19:58:51.000000000 +0100
@@ -6,6 +6,7 @@
obj-y := cpu.o mm.o clock-mx51-mx53.o devices.o
@@ -35,11 +35,11 @@ Index: linux-2.6.38-alpha/arch/arm/mach-mx5/Makefile
Index: linux-2.6.38-alpha/arch/arm/mach-mx5/board-apf51.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.38-alpha/arch/arm/mach-mx5/board-apf51.c 2011-01-05 19:38:00.000000000 +0100
-@@ -0,0 +1,421 @@
++++ linux-2.6.38-alpha/arch/arm/mach-mx5/board-apf51.c 2011-01-06 18:51:58.000000000 +0100
+@@ -0,0 +1,422 @@
+/*
+ * Support for APF51 System On Module
-+ * Copyright (C) 2010 Armadeus Systems
++ * Copyright (C) 2010-2011 Armadeus Systems
+ *
+ * Based on code which is:
+ * Copyright 2009-2010 Freescale Semiconductor, Inc. All Rights Reserved.
@@ -400,8 +400,9 @@ Index: linux-2.6.38-alpha/arch/arm/mach-mx5/board-apf51.c
+ .touch = &apf51_wm8311_touch_pdata,
+};
+
-+static struct i2c_board_info apf51_i2c_devices[] __initdata = {
-+ { I2C_BOARD_INFO("wm8311", 0x34),
++static struct i2c_board_info apf51_i2c1_devices[] __initdata = {
++ {
++ I2C_BOARD_INFO("wm8311", 0x34),
+ .platform_data = &apf51_wm8311_pdata,
+ .irq = gpio_to_irq(APF51_WM8311_IRQ_GPIO),
+ },
@@ -418,7 +419,7 @@ Index: linux-2.6.38-alpha/arch/arm/mach-mx5/board-apf51.c
+ apf51_init_imx_uart();
+
+ imx51_add_imx_i2c(1, &apf51_i2c_data);
-+ i2c_register_board_info(1, apf51_i2c_devices, ARRAY_SIZE(apf51_i2c_devices));
++ i2c_register_board_info(1, apf51_i2c1_devices, ARRAY_SIZE(apf51_i2c1_devices));
+
+ /* APF51 has an Ethernet PHY connected on internal FEC */
+ imx51_add_fec(NULL);
@@ -461,7 +462,7 @@ Index: linux-2.6.38-alpha/arch/arm/mach-mx5/board-apf51.c
Index: linux-2.6.38-alpha/arch/arm/plat-mxc/include/mach/uncompress.h
===================================================================
--- linux-2.6.38-alpha.orig/arch/arm/plat-mxc/include/mach/uncompress.h 2010-12-14 09:55:53.000000000 +0100
-+++ linux-2.6.38-alpha/arch/arm/plat-mxc/include/mach/uncompress.h 2011-01-05 17:30:58.000000000 +0100
++++ linux-2.6.38-alpha/arch/arm/plat-mxc/include/mach/uncompress.h 2011-01-06 15:53:53.000000000 +0100
@@ -63,6 +63,7 @@
#define MX3X_UART1_BASE_ADDR 0x43F90000
#define MX3X_UART2_BASE_ADDR 0x43F94000
@@ -483,7 +484,7 @@ Index: linux-2.6.38-alpha/arch/arm/plat-mxc/include/mach/uncompress.h
Index: linux-2.6.38-alpha/arch/arm/plat-mxc/include/mach/irqs.h
===================================================================
--- linux-2.6.38-alpha.orig/arch/arm/plat-mxc/include/mach/irqs.h 2010-12-14 09:55:53.000000000 +0100
-+++ linux-2.6.38-alpha/arch/arm/plat-mxc/include/mach/irqs.h 2011-01-05 17:30:58.000000000 +0100
++++ linux-2.6.38-alpha/arch/arm/plat-mxc/include/mach/irqs.h 2011-01-06 15:53:53.000000000 +0100
@@ -47,6 +47,8 @@
#ifdef CONFIG_MACH_MX31ADS_WM1133_EV1
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/408-armadeus-add_apf51-dev_baseboard.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/408-armadeus-add_apf51-dev_baseboard.patch
index baea1fc..bcf7883 100644
--- a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/408-armadeus-add_apf51-dev_baseboard.patch
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/408-armadeus-add_apf51-dev_baseboard.patch
@@ -4,8 +4,8 @@ Signed-off-by: Julien Boibessot <jul...@ar...>
Index: linux-2.6.38-alpha/arch/arm/mach-mx5/Kconfig
===================================================================
---- linux-2.6.38-alpha.orig/arch/arm/mach-mx5/Kconfig 2011-01-03 15:49:17.000000000 +0100
-+++ linux-2.6.38-alpha/arch/arm/mach-mx5/Kconfig 2011-01-03 15:56:12.000000000 +0100
+--- linux-2.6.38-alpha.orig/arch/arm/mach-mx5/Kconfig 2011-01-06 15:53:53.000000000 +0100
++++ linux-2.6.38-alpha/arch/arm/mach-mx5/Kconfig 2011-01-06 19:51:04.000000000 +0100
@@ -106,12 +106,30 @@
select SOC_IMX51
select IMX_HAVE_PLATFORM_IMX_UART
@@ -41,25 +41,25 @@ Index: linux-2.6.38-alpha/arch/arm/mach-mx5/Kconfig
endif
Index: linux-2.6.38-alpha/arch/arm/mach-mx5/Makefile
===================================================================
---- linux-2.6.38-alpha.orig/arch/arm/mach-mx5/Makefile 2011-01-03 15:49:17.000000000 +0100
-+++ linux-2.6.38-alpha/arch/arm/mach-mx5/Makefile 2011-01-03 15:49:27.000000000 +0100
+--- linux-2.6.38-alpha.orig/arch/arm/mach-mx5/Makefile 2011-01-06 15:53:53.000000000 +0100
++++ linux-2.6.38-alpha/arch/arm/mach-mx5/Makefile 2011-01-06 19:51:04.000000000 +0100
@@ -7,6 +7,7 @@
obj-$(CONFIG_CPU_FREQ_IMX) += cpu_op-mx51.o
obj-$(CONFIG_MACH_APF51) += board-apf51.o
-+obj-$(CONFIG_MACH_APF51_DEV) += apf51-dev-baseboard.o
++obj-$(CONFIG_MACH_APF51_DEV) += apf51dev-baseboard.o
obj-$(CONFIG_MACH_MX51_BABBAGE) += board-mx51_babbage.o
obj-$(CONFIG_MACH_MX51_3DS) += board-mx51_3ds.o
obj-$(CONFIG_MACH_EUKREA_CPUIMX51) += board-cpuimx51.o
-Index: linux-2.6.38-alpha/arch/arm/mach-mx5/apf51-dev-baseboard.c
+Index: linux-2.6.38-alpha/arch/arm/mach-mx5/apf51dev-baseboard.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.38-alpha/arch/arm/mach-mx5/apf51-dev-baseboard.c 2011-01-03 15:49:27.000000000 +0100
-@@ -0,0 +1,184 @@
++++ linux-2.6.38-alpha/arch/arm/mach-mx5/apf51dev-baseboard.c 2011-01-06 19:45:35.000000000 +0100
+@@ -0,0 +1,270 @@
+ /*
-+ * Support for APF51's PROTO development baseboard
++ * Support for APF51's official development baseboard (APF51Dev)
+ *
-+ * Copyright (C) 2010 Armadeus Systems <su...@ar...>
++ * Copyright (C) 2011 Armadeus Systems <su...@ar...>
+ *
+ * Based on code which is:
+ * Copyright 2009-2010 Freescale Semiconductor, Inc. All Rights Reserved.
@@ -79,6 +79,7 @@ Index: linux-2.6.38-alpha/arch/arm/mach-mx5/apf51-dev-baseboard.c
+#include <linux/spi/spi.h>
+#include <linux/fb.h>
+#include <linux/mfd/imx-ipu-v3.h>
++#include <sound/wm8960.h>
+
+#include <mach/iomux-mx51.h>
+#include <mach/ipu-v3.h>
@@ -86,7 +87,7 @@ Index: linux-2.6.38-alpha/arch/arm/mach-mx5/apf51-dev-baseboard.c
+#include "devices-imx51.h"
+#include "devices.h"
+
-+static iomux_v3_cfg_t apf51proto_pads[] = {
++static iomux_v3_cfg_t apf51dev_pads[] = {
+ /* SD1 */
+ MX51_PAD_SD1_CMD__SD1_CMD,
+ MX51_PAD_SD1_CLK__SD1_CLK,
@@ -95,7 +96,7 @@ Index: linux-2.6.38-alpha/arch/arm/mach-mx5/apf51-dev-baseboard.c
+ MX51_PAD_SD1_DATA2__SD1_DATA2,
+ MX51_PAD_SD1_DATA3__SD1_DATA3,
+
-+ /* SD2 */
++ /* SD2 (WiFi) */
+ MX51_PAD_SD2_CMD__SD2_CMD,
+ MX51_PAD_SD2_CLK__SD2_CLK,
+ MX51_PAD_SD2_DATA0__SD2_DATA0,
@@ -103,8 +104,22 @@ Index: linux-2.6.38-alpha/arch/arm/mach-mx5/apf51-dev-baseboard.c
+ MX51_PAD_SD2_DATA2__SD2_DATA2,
+ MX51_PAD_SD2_DATA3__SD2_DATA3,
+
-+ /* I2C1 */
-+ /* TBD (depends on SD2 or SPI1) */
++ MX51_PAD_EIM_EB2__GPIO_2_22, /* PWRDN# */
++ MX51_PAD_EIM_EB3__GPIO_2_23, /* RESET# */
++
++ /* UART2 (Bluetooth) */
++ MX51_PAD_UART2_RXD__UART2_RXD,
++ MX51_PAD_UART2_TXD__UART2_TXD,
++ MX51_PAD_EIM_D25__UART2_CTS,
++ MX51_PAD_EIM_D26__UART2_RTS,
++
++ MX51_PAD_EIM_CS3__GPIO_2_28, /* RESET# */
++
++ /* UART1 */
++ MX51_PAD_UART1_RXD__UART1_RXD,
++ MX51_PAD_UART1_TXD__UART1_TXD,
++ MX51_PAD_UART1_RTS__UART1_RTS,
++ MX51_PAD_UART1_CTS__UART1_CTS,
+
+ /* eCSPI1 */
+ MX51_PAD_CSPI1_MISO__ECSPI1_MISO,
@@ -113,6 +128,13 @@ Index: linux-2.6.38-alpha/arch/arm/mach-mx5/apf51-dev-baseboard.c
+ MX51_PAD_CSPI1_SS0__GPIO_4_24,
+ MX51_PAD_CSPI1_SS1__GPIO_4_25,
+
++ /* eCSPI2 */
++ MX51_PAD_NANDF_RB2__ECSPI2_SCLK,
++ MX51_PAD_NANDF_RB3__ECSPI2_MISO,
++ MX51_PAD_NANDF_D15__ECSPI2_MOSI,
++ MX51_PAD_NANDF_D12__GPIO_3_28, /* SS1 */
++ MX51_PAD_NANDF_D13__GPIO_3_27, /* SS2 */
++
+ /* Display */
+ MX51_PAD_DISP1_DAT0__DISP1_DAT0,
+ MX51_PAD_DISP1_DAT1__DISP1_DAT1,
@@ -142,18 +164,24 @@ Index: linux-2.6.38-alpha/arch/arm/mach-mx5/apf51-dev-baseboard.c
+ MX51_PAD_DI1_PIN3__DI1_PIN3, /* VSYNC */
+ /* CLK and OE are not muxed */
+
-+ /* Debug PINS */
-+/* MX51_PAD_GPIO_1_2__GPIO_1_2,
-+ MX51_PAD_GPIO_1_3__GPIO_1_3,*/
++ /* JTAG */
++
++ /* ONEWIRE */
++
++ /* KEYPAD */
++
++ /* Other GPIOs ! TBDL ! */
++ /* HDMI_RST# */
++ /* HDMI_DETECT */
+};
+
-+static const struct imxi2c_platform_data apf51proto_i2c_data __initconst = {
++static const struct imxi2c_platform_data apf51dev_i2c_data __initconst = {
+ .bitrate = 400000,
+};
+
+/* APF51Proto has a LCD connector for a 18 bits 800x480 Chimei TFT LCD */
+
-+static struct fb_videomode apf51proto_modes[] = {
++static struct fb_videomode apf51dev_modes[] = {
+ {
+ .name = "Chimei-LW700AT9003",
+ .refresh = 60,
@@ -164,32 +192,27 @@ Index: linux-2.6.38-alpha/arch/arm/mach-mx5/apf51-dev-baseboard.c
+ .upper_margin = 0x14, .lower_margin = 0x15,
+ .hsync_len = 64, .vsync_len = 4,
+ .sync = FB_SYNC_CLK_IDLE_EN,
-+// | FB_SYNC_CLK_LAT_FALL,// | FB_SYNC_OE_ACT_HIGH | FB_SYNC_CLK_INVERT,
+ .vmode = FB_VMODE_NONINTERLACED,
+ .flag = 0,
+ },
+};
+
-+static struct ipuv3_fb_platform_data apf51proto_fb0_data = {
-+// .interface_pix_fmt = IPU_PIX_FMT_RGB24,
++static struct ipuv3_fb_platform_data apf51dev_fb0_data = {
+ .interface_pix_fmt = IPU_PIX_FMT_RGB666,
-+ .modes = apf51proto_modes,
-+ .num_modes = ARRAY_SIZE(apf51proto_modes),
++ .modes = apf51dev_modes,
++ .num_modes = ARRAY_SIZE(apf51dev_modes),
+ .display = 0,
+};
+
-+static struct imx_ipuv3_platform_data ipu_data = {
-+ .fb_head0_platform_data = &apf51proto_fb0_data,
++static struct imx_ipuv3_platform_data apf51dev_ipu_data = {
++ .fb_head0_platform_data = &apf51dev_fb0_data,
+};
+
-+#define DEBUG1_GPIO (GPIO_PORTA | 2)
-+#define DEBUG2_GPIO (GPIO_PORTA | 3)
-+
-+
-+#define APF51PROTO_ECSPI1_CS0 IMX_GPIO_NR(4, 24)
-+#define APF51PROTO_ECSPI1_CS1 IMX_GPIO_NR(4, 25)
++/* ECSPI1 */
++#define APF51DEV_ECSPI1_SS0 IMX_GPIO_NR(4, 24)
++#define APF51DEV_ECSPI1_SS1 IMX_GPIO_NR(4, 25)
+
-+static struct spi_board_info apf51proto_spi_board_info[] __initdata = {
++static struct spi_board_info apf51dev_spi1_board_info[] __initdata = {
+ {
+ .modalias = "as1531",
+ .max_speed_hz = 8000000,
@@ -199,7 +222,7 @@ Index: linux-2.6.38-alpha/arch/arm/mach-mx5/apf51-dev-baseboard.c
+ .platform_data = NULL,
+ },
+ {
-+ .modalias = "spidev",
++ .modalias = "mcp4912",
+ .max_speed_hz = 8000000,
+ .bus_num = 0,
+ .chip_select = 1,
@@ -208,35 +231,98 @@ Index: linux-2.6.38-alpha/arch/arm/mach-mx5/apf51-dev-baseboard.c
+ },
+};
+
-+static int apf51proto_spi_cs[] = {
-+ APF51PROTO_ECSPI1_CS0,
-+ APF51PROTO_ECSPI1_CS1,
++static int apf51dev_spi1_cs[] = {
++ APF51DEV_ECSPI1_SS0,
++ APF51DEV_ECSPI1_SS1,
++};
++
++static const struct spi_imx_master apf51dev_spi1_pdata __initconst = {
++ .chipselect = apf51dev_spi1_cs,
++ .num_chipselect = ARRAY_SIZE(apf51dev_spi1_cs),
++};
++
++/* ECSPI2 */
++#define APF51DEV_ECSPI2_SS1 IMX_GPIO_NR(3, 28)
++#define APF51DEV_ECSPI2_SS2 IMX_GPIO_NR(3, 27)
++
++static struct spi_board_info apf51dev_spi2_board_info[] __initdata = {
++ {
++ .modalias = "mcp2515",
++ .max_speed_hz = 8000000,
++ .bus_num = 1,
++ .chip_select = 0,
++ .mode = SPI_MODE_0,
++ .platform_data = NULL,
++ },
++ {
++ .modalias = "spidev",
++ .max_speed_hz = 8000000,
++ .bus_num = 1,
++ .chip_select = 1,
++ .mode = SPI_MODE_0,
++ .platform_data = NULL,
++ },
++};
++
++static int apf51dev_spi2_cs[] = {
++ APF51DEV_ECSPI2_SS1,
++ APF51DEV_ECSPI2_SS2,
+};
+
-+static const struct spi_imx_master apf51proto_spi_pdata __initconst = {
-+ .chipselect = apf51proto_spi_cs,
-+ .num_chipselect = ARRAY_SIZE(apf51proto_spi_cs),
++static const struct spi_imx_master apf51dev_spi2_pdata __initconst = {
++ .chipselect = apf51dev_spi2_cs,
++ .num_chipselect = ARRAY_SIZE(apf51dev_spi2_cs),
++};
++
++
++/* Audio (Wolfson WM8960) */
++static struct wm8960_data apf51dev_wm8960_pdata = {
++ .capless = 0, /* Headphone outputs NOT configured in capless mode */
++// .dres = ??; /* Discharge resistance for headphone outputs */
+};
+
+
++/* I2C2 */
++static struct i2c_board_info apf51dev_i2c2_devices[] __initdata = {
++ {
++ I2C_BOARD_INFO("tfp410", 0x38),
++/* .platform_data = &tfp410_pdata,
++ .irq = gpio_to_irq(APF51DEV_HDMI_DETECT),*/
++ },
++#if 0
++ {
++ /* EDID ? */
++ },
++#endif
++ {
++ I2C_BOARD_INFO("wm8960", 0x36),
++ .platform_data = &apf51dev_wm8960_pdata,
++ },
++#if 0
++ {
++ /* Camera */
++ },
++#endif
++};
++
+void __init apf51_baseboard_init(void)
+{
-+ mxc_iomux_v3_setup_multiple_pads(apf51proto_pads,
-+ ARRAY_SIZE(apf51proto_pads));
-+
-+ gpio_request(DEBUG1_GPIO, "debug1");
-+ gpio_request(DEBUG2_GPIO, "debug2");
-+ gpio_set_value(DEBUG1_GPIO, 1);
-+ gpio_set_value(DEBUG2_GPIO, 1);
++ mxc_iomux_v3_setup_multiple_pads(apf51dev_pads,
++ ARRAY_SIZE(apf51dev_pads));
+
+ imx51_add_sdhci_esdhc_imx(0, NULL);
+ imx51_add_sdhci_esdhc_imx(1, NULL);
+
-+ spi_register_board_info(apf51proto_spi_board_info,
-+ ARRAY_SIZE(apf51proto_spi_board_info));
-+ imx51_add_ecspi(0, &apf51proto_spi_pdata);
++ spi_register_board_info(apf51dev_spi1_board_info,
++ ARRAY_SIZE(apf51dev_spi1_board_info));
++ imx51_add_ecspi(0, &apf51dev_spi1_pdata);
++ spi_register_board_info(apf51dev_spi2_board_info,
++ ARRAY_SIZE(apf51dev_spi2_board_info));
++ imx51_add_ecspi(1, &apf51dev_spi2_pdata);
+
-+ imx51_add_imx_i2c(0, &apf51proto_i2c_data);
++ /* I2C2 already initialized by APF51, so just register devices */
++ i2c_register_board_info(1, apf51dev_i2c2_devices,
++ ARRAY_SIZE(apf51dev_i2c2_devices));
+
-+ imx51_add_ipuv3(&ipu_data);
++ imx51_add_ipuv3(&apf51dev_ipu_data);
+}
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/408-armadeus-add_apf51-dev_baseboard.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/408b-armadeus-add_apf51-proto_baseboard.patch
similarity index 80%
copy from buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/408-armadeus-add_apf51-dev_baseboard.patch
copy to buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/408b-armadeus-add_apf51-proto_baseboard.patch
index baea1fc..996b928 100644
--- a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/408-armadeus-add_apf51-dev_baseboard.patch
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/408b-armadeus-add_apf51-proto_baseboard.patch
@@ -1,65 +1,29 @@
-Add APF51Dev baseboard support.
+Add APF51Proto baseboard support.
Signed-off-by: Julien Boibessot <jul...@ar...>
-Index: linux-2.6.38-alpha/arch/arm/mach-mx5/Kconfig
-===================================================================
---- linux-2.6.38-alpha.orig/arch/arm/mach-mx5/Kconfig 2011-01-03 15:49:17.000000000 +0100
-+++ linux-2.6.38-alpha/arch/arm/mach-mx5/Kconfig 2011-01-03 15:56:12.000000000 +0100
-@@ -106,12 +106,30 @@
- select SOC_IMX51
- select IMX_HAVE_PLATFORM_IMX_UART
- select IMX_HAVE_PLATFORM_IMX_I2C
-- select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
- select IMX_HAVE_PLATFORM_MXC_NAND
-- select IMX_HAVE_PLATFORM_SPI_IMX
- select MXC_ULPI
- help
- Include support for Armadeus Systems APF51 System On Module. This
- includes specific configurations for the board and its peripherals.
-
-+config MACH_APF51_HAS_BASEBOARD
-+ bool
-+
-+choice
-+ prompt "Baseboard"
-+ depends on MACH_APF51
-+ default MACH_APF51_DEV
-+
-+config MACH_APF51_DEV
-+ prompt "Armadeus Systems APF51Dev development board"
-+ bool
-+ select MACH_APF51_HAS_BASEBOARD
-+ select IMX_HAVE_PLATFORM_IMX_IPUV3
-+ select IMX_HAVE_PLATFORM_SPI_IMX
-+ select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
-+ help
-+ This selects the APF51Dev as baseboard and adds board's specific
-+ devices.
-+endchoice
-+
- endif
Index: linux-2.6.38-alpha/arch/arm/mach-mx5/Makefile
===================================================================
---- linux-2.6.38-alpha.orig/arch/arm/mach-mx5/Makefile 2011-01-03 15:49:17.000000000 +0100
-+++ linux-2.6.38-alpha/arch/arm/mach-mx5/Makefile 2011-01-03 15:49:27.000000000 +0100
-@@ -7,6 +7,7 @@
-
+--- linux-2.6.38-alpha.orig/arch/arm/mach-mx5/Makefile 2011-01-06 15:53:53.000000000 +0100
++++ linux-2.6.38-alpha/arch/arm/mach-mx5/Makefile 2011-01-06 15:53:53.000000000 +0100
+@@ -8,6 +8,7 @@
obj-$(CONFIG_CPU_FREQ_IMX) += cpu_op-mx51.o
obj-$(CONFIG_MACH_APF51) += board-apf51.o
-+obj-$(CONFIG_MACH_APF51_DEV) += apf51-dev-baseboard.o
+ obj-$(CONFIG_MACH_APF51_DEV) += apf51dev-baseboard.o
++obj-$(CONFIG_MACH_APF51_PROTO) += apf51proto-baseboard.o
obj-$(CONFIG_MACH_MX51_BABBAGE) += board-mx51_babbage.o
obj-$(CONFIG_MACH_MX51_3DS) += board-mx51_3ds.o
obj-$(CONFIG_MACH_EUKREA_CPUIMX51) += board-cpuimx51.o
-Index: linux-2.6.38-alpha/arch/arm/mach-mx5/apf51-dev-baseboard.c
+Index: linux-2.6.38-alpha/arch/arm/mach-mx5/apf51proto-baseboard.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.38-alpha/arch/arm/mach-mx5/apf51-dev-baseboard.c 2011-01-03 15:49:27.000000000 +0100
-@@ -0,0 +1,184 @@
++++ linux-2.6.38-alpha/arch/arm/mach-mx5/apf51proto-baseboard.c 2011-01-06 15:53:53.000000000 +0100
+@@ -0,0 +1,183 @@
+ /*
+ * Support for APF51's PROTO development baseboard
++ * (This board was never publicly released)
+ *
-+ * Copyright (C) 2010 Armadeus Systems <su...@ar...>
++ * Copyright (C) 2010-2011 Armadeus Systems <su...@ar...>
+ *
+ * Based on code which is:
+ * Copyright 2009-2010 Freescale Semiconductor, Inc. All Rights Reserved.
@@ -164,14 +128,12 @@ Index: linux-2.6.38-alpha/arch/arm/mach-mx5/apf51-dev-baseboard.c
+ .upper_margin = 0x14, .lower_margin = 0x15,
+ .hsync_len = 64, .vsync_len = 4,
+ .sync = FB_SYNC_CLK_IDLE_EN,
-+// | FB_SYNC_CLK_LAT_FALL,// | FB_SYNC_OE_ACT_HIGH | FB_SYNC_CLK_INVERT,
+ .vmode = FB_VMODE_NONINTERLACED,
+ .flag = 0,
+ },
+};
+
+static struct ipuv3_fb_platform_data apf51proto_fb0_data = {
-+// .interface_pix_fmt = IPU_PIX_FMT_RGB24,
+ .interface_pix_fmt = IPU_PIX_FMT_RGB666,
+ .modes = apf51proto_modes,
+ .num_modes = ARRAY_SIZE(apf51proto_modes),
@@ -240,3 +202,34 @@ Index: linux-2.6.38-alpha/arch/arm/mach-mx5/apf51-dev-baseboard.c
+
+ imx51_add_ipuv3(&ipu_data);
+}
+Index: linux-2.6.38-alpha/arch/arm/mach-mx5/Kconfig
+===================================================================
+--- linux-2.6.38-alpha.orig/arch/arm/mach-mx5/Kconfig 2011-01-06 16:11:12.000000000 +0100
++++ linux-2.6.38-alpha/arch/arm/mach-mx5/Kconfig 2011-01-06 16:13:19.000000000 +0100
+@@ -118,7 +118,7 @@
+ choice
+ prompt "Baseboard"
+ depends on MACH_APF51
+- default MACH_APF51_DEV
++ default MACH_APF51_PROTO
+
+ config MACH_APF51_DEV
+ prompt "Armadeus Systems APF51Dev development board"
+@@ -130,6 +130,17 @@
+ help
+ This selects the APF51Dev as baseboard and adds board's specific
+ devices.
++
++config MACH_APF51_PROTO
++ prompt "Armadeus Systems APF51Proto development board"
++ bool
++ select MACH_APF51_HAS_BASEBOARD
++ select IMX_HAVE_PLATFORM_IMX_IPUV3
++ select IMX_HAVE_PLATFORM_SPI_IMX
++ select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
++ help
++ This selects the APF51Proto as baseboard and adds board's specific
++ devices. This board was never made publicly available !
+ endchoice
+
+ endif
hooks/post-receive
--
armadeus
|
|
From: Julien B a. A. <ar...@us...> - 2011-01-05 19:08:57
|
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 227aba3b541c2d6185ba9606462273b340bdd62d (commit)
via eac92d3eb0d7775aa4513c9158970f5f20e7e234 (commit)
via ddb9e01eefe7896fa48eecfdb51fb6898ce7e49a (commit)
from b6df1071e9eb5fbe2ba55594a53517c234bc27e8 (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 227aba3b541c2d6185ba9606462273b340bdd62d
Merge: eac92d3eb0d7775aa4513c9158970f5f20e7e234 b6df1071e9eb5fbe2ba55594a53517c234bc27e8
Author: Julien Boibessot <jul...@ar...>
Date: Wed Jan 5 20:08:14 2011 +0100
Merge branch 'master' of ssh://artemys@armadeus.git.sourceforge.net/gitroot/armadeus/armadeus
commit eac92d3eb0d7775aa4513c9158970f5f20e7e234
Author: Julien Boibessot <jul...@ar...>
Date: Wed Jan 5 20:07:41 2011 +0100
[LINUX] 2.6.38: activates pressure measurement of wm8311 on APF51
commit ddb9e01eefe7896fa48eecfdb51fb6898ce7e49a
Author: Julien Boibessot <jul...@ar...>
Date: Wed Jan 5 16:34:30 2011 +0100
[LINUX] 2.6.38: Add driver for WM8311 touch feature
-----------------------------------------------------------------------
Summary of changes:
.../2.6.38/400-armadeus-add_apf51_module.patch | 20 +-
...us-wm8311-add_CMOS_IRQ_line_configuration.patch | 18 +
...-Add-driver-for-Wolfson-WM831x-PMIC-touch.patch | 408 ++++++++++++++++++++
...n-Input-wm831x-Handles_pen_down_interrupt.patch | 115 ++++++
...data_interrupt_when_using_external_signal.patch | 118 ++++++
...ng_external_signal_for_pen_down_interrupt.patch | 115 ++++++
...rt_when_pen_down_is_detected_isnt_working.patch | 43 ++
.../417-armadeus-input-wm831x-driver_hacks.patch | 57 +++
8 files changed, 884 insertions(+), 10 deletions(-)
create mode 100644 buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/411-armadeus-wm8311-add_CMOS_IRQ_line_configuration.patch
create mode 100644 buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/412-wolfson-Input-wm831x-Add-driver-for-Wolfson-WM831x-PMIC-touch.patch
create mode 100644 buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/413-wolfson-Input-wm831x-Handles_pen_down_interrupt.patch
create mode 100644 buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/414-wolfson-Input-wm831x-Ack_data_interrupt_when_using_external_signal.patch
create mode 100644 buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/415-armadeus-Input-wm831x-Allows_using_external_signal_for_pen_down_interrupt.patch
create mode 100644 buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/416-armadeus-Input-wm831x-Data_acquisition_start_when_pen_down_is_detected_isnt_working.patch
create mode 100644 buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/417-armadeus-input-wm831x-driver_hacks.patch
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/400-armadeus-add_apf51_module.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/400-armadeus-add_apf51_module.patch
index fedb4e2..ecdec98 100644
--- a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/400-armadeus-add_apf51_module.patch
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/400-armadeus-add_apf51_module.patch
@@ -1,7 +1,7 @@
Index: linux-2.6.38-alpha/arch/arm/mach-mx5/Kconfig
===================================================================
---- linux-2.6.38-alpha.orig/arch/arm/mach-mx5/Kconfig 2010-12-30 21:07:06.000000000 +0100
-+++ linux-2.6.38-alpha/arch/arm/mach-mx5/Kconfig 2011-01-03 15:56:23.000000000 +0100
+--- linux-2.6.38-alpha.orig/arch/arm/mach-mx5/Kconfig 2011-01-05 17:30:58.000000000 +0100
++++ linux-2.6.38-alpha/arch/arm/mach-mx5/Kconfig 2011-01-05 20:04:52.000000000 +0100
@@ -101,4 +101,17 @@
Include support for Genesi Efika MX nettop. This includes specific
configurations for the board and its peripherals.
@@ -22,8 +22,8 @@ Index: linux-2.6.38-alpha/arch/arm/mach-mx5/Kconfig
endif
Index: linux-2.6.38-alpha/arch/arm/mach-mx5/Makefile
===================================================================
---- linux-2.6.38-alpha.orig/arch/arm/mach-mx5/Makefile 2010-12-30 21:06:56.000000000 +0100
-+++ linux-2.6.38-alpha/arch/arm/mach-mx5/Makefile 2011-01-03 15:56:23.000000000 +0100
+--- linux-2.6.38-alpha.orig/arch/arm/mach-mx5/Makefile 2010-12-14 09:55:53.000000000 +0100
++++ linux-2.6.38-alpha/arch/arm/mach-mx5/Makefile 2011-01-05 20:04:52.000000000 +0100
@@ -6,6 +6,7 @@
obj-y := cpu.o mm.o clock-mx51-mx53.o devices.o
@@ -35,7 +35,7 @@ Index: linux-2.6.38-alpha/arch/arm/mach-mx5/Makefile
Index: linux-2.6.38-alpha/arch/arm/mach-mx5/board-apf51.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.38-alpha/arch/arm/mach-mx5/board-apf51.c 2011-01-03 12:01:21.000000000 +0100
++++ linux-2.6.38-alpha/arch/arm/mach-mx5/board-apf51.c 2011-01-05 19:38:00.000000000 +0100
@@ -0,0 +1,421 @@
+/*
+ * Support for APF51 System On Module
@@ -382,7 +382,7 @@ Index: linux-2.6.38-alpha/arch/arm/mach-mx5/board-apf51.c
+
+static struct wm831x_touch_pdata apf51_wm8311_touch_pdata = {
+ .fivewire = 0,
-+ .pressure = 0,
++ .pressure = 1,
+ .data_irq = gpio_to_irq(APF51_WM8311_TOUCH_EOC_GPIO),
+ .pd_irq = gpio_to_irq(APF51_WM8311_TOUCH_DETECT_GPIO),
+};
@@ -460,8 +460,8 @@ Index: linux-2.6.38-alpha/arch/arm/mach-mx5/board-apf51.c
+
Index: linux-2.6.38-alpha/arch/arm/plat-mxc/include/mach/uncompress.h
===================================================================
---- linux-2.6.38-alpha.orig/arch/arm/plat-mxc/include/mach/uncompress.h 2010-12-30 21:06:56.000000000 +0100
-+++ linux-2.6.38-alpha/arch/arm/plat-mxc/include/mach/uncompress.h 2010-12-30 21:07:06.000000000 +0100
+--- linux-2.6.38-alpha.orig/arch/arm/plat-mxc/include/mach/uncompress.h 2010-12-14 09:55:53.000000000 +0100
++++ linux-2.6.38-alpha/arch/arm/plat-mxc/include/mach/uncompress.h 2011-01-05 17:30:58.000000000 +0100
@@ -63,6 +63,7 @@
#define MX3X_UART1_BASE_ADDR 0x43F90000
#define MX3X_UART2_BASE_ADDR 0x43F94000
@@ -482,8 +482,8 @@ Index: linux-2.6.38-alpha/arch/arm/plat-mxc/include/mach/uncompress.h
}
Index: linux-2.6.38-alpha/arch/arm/plat-mxc/include/mach/irqs.h
===================================================================
---- linux-2.6.38-alpha.orig/arch/arm/plat-mxc/include/mach/irqs.h 2010-12-30 21:06:56.000000000 +0100
-+++ linux-2.6.38-alpha/arch/arm/plat-mxc/include/mach/irqs.h 2010-12-30 21:07:06.000000000 +0100
+--- linux-2.6.38-alpha.orig/arch/arm/plat-mxc/include/mach/irqs.h 2010-12-14 09:55:53.000000000 +0100
++++ linux-2.6.38-alpha/arch/arm/plat-mxc/include/mach/irqs.h 2011-01-05 17:30:58.000000000 +0100
@@ -47,6 +47,8 @@
#ifdef CONFIG_MACH_MX31ADS_WM1133_EV1
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/411-armadeus-wm8311-add_CMOS_IRQ_line_configuration.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/411-armadeus-wm8311-add_CMOS_IRQ_line_configuration.patch
new file mode 100644
index 0000000..93f2b6b
--- /dev/null
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/411-armadeus-wm8311-add_CMOS_IRQ_line_configuration.patch
@@ -0,0 +1,18 @@
+Configure "IRQ" line as CMOS.
+
+Signed-off-by: Julien Boibessot <jul...@ar...>
+
+Index: linux-2.6.38-alpha/drivers/mfd/wm831x-core.c
+===================================================================
+--- linux-2.6.38-alpha.orig/drivers/mfd/wm831x-core.c 2010-12-29 10:33:41.000000000 +0100
++++ linux-2.6.38-alpha/drivers/mfd/wm831x-core.c 2010-12-29 10:35:59.000000000 +0100
+@@ -1571,6 +1571,9 @@
+ }
+ }
+
++ /* Configure "IRQ" line as CMOS */
++ wm831x_reg_write(wm831x, WM831X_IRQ_CONFIG, 0);
++
+ ret = wm831x_irq_init(wm831x, irq);
+ if (ret != 0)
+ goto err;
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/412-wolfson-Input-wm831x-Add-driver-for-Wolfson-WM831x-PMIC-touch.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/412-wolfson-Input-wm831x-Add-driver-for-Wolfson-WM831x-PMIC-touch.patch
new file mode 100644
index 0000000..8f28319
--- /dev/null
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/412-wolfson-Input-wm831x-Add-driver-for-Wolfson-WM831x-PMIC-touch.patch
@@ -0,0 +1,408 @@
+>From 57539f6fc8ebd6c11373b750450d3f0526c8522f Mon Sep 17 00:00:00 2001
+From: Mark Brown <br...@op...>
+Date: Fri, 10 Dec 2010 21:39:33 +0000
+Subject: [PATCH] Input: wm831x - Add driver for Wolfson WM831x PMIC touchscreen controllers
+
+Some of the WM831x series of PMICs from Wolfson Microelectronics include
+a resistive touchscreen controller. Implement support for these controllers
+within the input API.
+
+Platform data is supported to allow configuration of system parameters such
+as selection between four and five wire touchscreens and for specification
+of an optional direct to CPU IRQ to be used to report the availability of
+samples.
+
+THIS DRIVER HAS NOT BEEN TESTED. NO GUARANTEES ARE MADE REGARDING THE
+PERFORMANCE OR STABILITY OF THE DRIVER, IT IS EXPECTED THAT SOME DEBUGGING
+WILL BE REQUIRED IN ORDER TO MAKE THE DRIVER USABLE.
+
+Signed-off-by: Mark Brown <br...@op...>
+---
+ drivers/input/touchscreen/Kconfig | 10 +
+ drivers/input/touchscreen/Makefile | 1 +
+ drivers/input/touchscreen/wm831x-ts.c | 340 +++++++++++++++++++++++++++++++++
+ 3 files changed, 351 insertions(+), 0 deletions(-)
+ create mode 100644 drivers/input/touchscreen/wm831x-ts.c
+
+diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
+index 6675bd7..b3b7596 100644
+--- a/drivers/input/touchscreen/Kconfig
++++ b/drivers/input/touchscreen/Kconfig
+@@ -423,6 +423,16 @@ config TOUCHSCREEN_UCB1400
+ To compile this driver as a module, choose M here: the
+ module will be called ucb1400_ts.
+
++config TOUCHSCREEN_WM831X
++ tristate "Support for WM831x touchscreen controllers"
++ depends on MFD_WM831X
++ help
++ This enables support for the touchscreen controller on the WM831x
++ series of PMICs.
++
++ To compile this driver as a module, choose M here: the
++ module will be called wm831x-touch.
++
+ config TOUCHSCREEN_WM97XX
+ tristate "Support for WM97xx AC97 touchscreen controllers"
+ depends on AC97_BUS
+diff --git a/drivers/input/touchscreen/Makefile b/drivers/input/touchscreen/Makefile
+index 7cc1b4f..1a00395 100644
+--- a/drivers/input/touchscreen/Makefile
++++ b/drivers/input/touchscreen/Makefile
+@@ -47,6 +47,7 @@ obj-$(CONFIG_TOUCHSCREEN_TOUCHWIN) += touchwin.o
+ obj-$(CONFIG_TOUCHSCREEN_TSC2007) += tsc2007.o
+ obj-$(CONFIG_TOUCHSCREEN_UCB1400) += ucb1400_ts.o
+ obj-$(CONFIG_TOUCHSCREEN_WACOM_W8001) += wacom_w8001.o
++obj-$(CONFIG_TOUCHSCREEN_WM831X) += wm831x-ts.o
+ obj-$(CONFIG_TOUCHSCREEN_WM97XX) += wm97xx-ts.o
+ wm97xx-ts-$(CONFIG_TOUCHSCREEN_WM9705) += wm9705.o
+ wm97xx-ts-$(CONFIG_TOUCHSCREEN_WM9712) += wm9712.o
+diff --git a/drivers/input/touchscreen/wm831x-ts.c b/drivers/input/touchscreen/wm831x-ts.c
+new file mode 100644
+index 0000000..51d1863
+--- /dev/null
++++ b/drivers/input/touchscreen/wm831x-ts.c
+@@ -0,0 +1,340 @@
++/*
++ * wm831x-ts.c - Touchscreen driver for WM831x PMICs
++ *
++ * Copyright 2010 Wolfson Microelectronics plc.
++ * Author: Mark Brown <br...@op...>
++ *
++ * 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.
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/string.h>
++#include <linux/pm.h>
++#include <linux/input.h>
++#include <linux/interrupt.h>
++#include <linux/io.h>
++#include <linux/mfd/wm831x/core.h>
++#include <linux/mfd/wm831x/pdata.h>
++#include <linux/platform_device.h>
++#include <linux/slab.h>
++#include <linux/types.h>
++
++/*
++ * R16424 (0x4028) - Touch Control 1
++ */
++#define WM831X_TCH_ENA 0x8000 /* TCH_ENA */
++#define WM831X_TCH_ENA_MASK 0x8000 /* TCH_ENA */
++#define WM831X_TCH_ENA_SHIFT 15 /* TCH_ENA */
++#define WM831X_TCH_ENA_WIDTH 1 /* TCH_ENA */
++#define WM831X_TCH_CVT_ENA 0x4000 /* TCH_CVT_ENA */
++#define WM831X_TCH_CVT_ENA_MASK 0x4000 /* TCH_CVT_ENA */
++#define WM831X_TCH_CVT_ENA_SHIFT 14 /* TCH_CVT_ENA */
++#define WM831X_TCH_CVT_ENA_WIDTH 1 /* TCH_CVT_ENA */
++#define WM831X_TCH_SLPENA 0x1000 /* TCH_SLPENA */
++#define WM831X_TCH_SLPENA_MASK 0x1000 /* TCH_SLPENA */
++#define WM831X_TCH_SLPENA_SHIFT 12 /* TCH_SLPENA */
++#define WM831X_TCH_SLPENA_WIDTH 1 /* TCH_SLPENA */
++#define WM831X_TCH_Z_ENA 0x0400 /* TCH_Z_ENA */
++#define WM831X_TCH_Z_ENA_MASK 0x0400 /* TCH_Z_ENA */
++#define WM831X_TCH_Z_ENA_SHIFT 10 /* TCH_Z_ENA */
++#define WM831X_TCH_Z_ENA_WIDTH 1 /* TCH_Z_ENA */
++#define WM831X_TCH_Y_ENA 0x0200 /* TCH_Y_ENA */
++#define WM831X_TCH_Y_ENA_MASK 0x0200 /* TCH_Y_ENA */
++#define WM831X_TCH_Y_ENA_SHIFT 9 /* TCH_Y_ENA */
++#define WM831X_TCH_Y_ENA_WIDTH 1 /* TCH_Y_ENA */
++#define WM831X_TCH_X_ENA 0x0100 /* TCH_X_ENA */
++#define WM831X_TCH_X_ENA_MASK 0x0100 /* TCH_X_ENA */
++#define WM831X_TCH_X_ENA_SHIFT 8 /* TCH_X_ENA */
++#define WM831X_TCH_X_ENA_WIDTH 1 /* TCH_X_ENA */
++#define WM831X_TCH_DELAY_MASK 0x00E0 /* TCH_DELAY - [7:5] */
++#define WM831X_TCH_DELAY_SHIFT 5 /* TCH_DELAY - [7:5] */
++#define WM831X_TCH_DELAY_WIDTH 3 /* TCH_DELAY - [7:5] */
++#define WM831X_TCH_RATE_MASK 0x001F /* TCH_RATE - [4:0] */
++#define WM831X_TCH_RATE_SHIFT 0 /* TCH_RATE - [4:0] */
++#define WM831X_TCH_RATE_WIDTH 5 /* TCH_RATE - [4:0] */
++
++/*
++ * R16425 (0x4029) - Touch Control 2
++ */
++#define WM831X_TCH_PD_WK 0x2000 /* TCH_PD_WK */
++#define WM831X_TCH_PD_WK_MASK 0x2000 /* TCH_PD_WK */
++#define WM831X_TCH_PD_WK_SHIFT 13 /* TCH_PD_WK */
++#define WM831X_TCH_PD_WK_WIDTH 1 /* TCH_PD_WK */
++#define WM831X_TCH_5WIRE 0x1000 /* TCH_5WIRE */
++#define WM831X_TCH_5WIRE_MASK 0x1000 /* TCH_5WIRE */
++#define WM831X_TCH_5WIRE_SHIFT 12 /* TCH_5WIRE */
++#define WM831X_TCH_5WIRE_WIDTH 1 /* TCH_5WIRE */
++#define WM831X_TCH_PDONLY 0x0800 /* TCH_PDONLY */
++#define WM831X_TCH_PDONLY_MASK 0x0800 /* TCH_PDONLY */
++#define WM831X_TCH_PDONLY_SHIFT 11 /* TCH_PDONLY */
++#define WM831X_TCH_PDONLY_WIDTH 1 /* TCH_PDONLY */
++#define WM831X_TCH_ISEL 0x0100 /* TCH_ISEL */
++#define WM831X_TCH_ISEL_MASK 0x0100 /* TCH_ISEL */
++#define WM831X_TCH_ISEL_SHIFT 8 /* TCH_ISEL */
++#define WM831X_TCH_ISEL_WIDTH 1 /* TCH_ISEL */
++#define WM831X_TCH_RPU_MASK 0x000F /* TCH_RPU - [3:0] */
++#define WM831X_TCH_RPU_SHIFT 0 /* TCH_RPU - [3:0] */
++#define WM831X_TCH_RPU_WIDTH 4 /* TCH_RPU - [3:0] */
++
++/*
++ * R16426-8 (0x402A-C) - Touch Data X/Y/X
++ */
++#define WM831X_TCH_PD 0x8000 /* TCH_PD1 */
++#define WM831X_TCH_PD_MASK 0x8000 /* TCH_PD1 */
++#define WM831X_TCH_PD_SHIFT 15 /* TCH_PD1 */
++#define WM831X_TCH_PD_WIDTH 1 /* TCH_PD1 */
++#define WM831X_TCH_DATA_MASK 0x0FFF /* TCH_DATA - [11:0] */
++#define WM831X_TCH_DATA_SHIFT 0 /* TCH_DATA - [11:0] */
++#define WM831X_TCH_DATA_WIDTH 12 /* TCH_DATA - [11:0] */
++
++struct wm831x_ts {
++ struct input_dev *input_dev;
++ struct wm831x *wm831x;
++ int data_irq;
++ bool pressure;
++};
++
++static irqreturn_t wm831x_ts_data_irq(int irq, void *irq_data)
++{
++ struct wm831x_ts *wm831x_ts = irq_data;
++ struct wm831x *wm831x = wm831x_ts->wm831x;
++ static int data_types[] = { ABS_X, ABS_Y, ABS_PRESSURE };
++ u16 data[3];
++ bool pen_down = true;
++ int count, i, ret;
++
++ if (wm831x_ts->pressure)
++ count = 3;
++ else
++ count = 2;
++
++ ret = wm831x_bulk_read(wm831x, WM831X_TOUCH_DATA_X, count,
++ data);
++ if (ret != 0) {
++ dev_err(wm831x->dev, "Failed to read touch data: %d\n",
++ ret);
++ return IRQ_NONE;
++ }
++
++ /* We get a pen down reading on every reading, report pen up if any
++ * individual reading does so.
++ */
++ for (i = 0; i < count; i++) {
++ input_report_abs(wm831x_ts->input_dev, data_types[i],
++ data[i] & WM831X_TCH_DATA_MASK);
++ if (!data[i] & WM831X_TCH_PD)
++ pen_down = false;
++ }
++
++ if (pen_down) {
++ input_report_key(wm831x_ts->input_dev, BTN_TOUCH, 1);
++ } else {
++ input_report_abs(wm831x_ts->input_dev, ABS_PRESSURE, 0);
++ input_report_key(wm831x_ts->input_dev, BTN_TOUCH, 0);
++ }
++
++ input_sync(wm831x_ts->input_dev);
++
++ return IRQ_HANDLED;
++}
++
++static int wm831x_ts_input_open(struct input_dev *idev)
++{
++ struct wm831x_ts *wm831x_ts = input_get_drvdata(idev);
++ struct wm831x *wm831x = wm831x_ts->wm831x;
++ u16 ena = 0;
++
++ if (wm831x_ts->pressure)
++ ena |= WM831X_TCH_Z_ENA;
++
++ wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
++ WM831X_TCH_ENA | WM831X_TCH_CVT_ENA |
++ WM831X_TCH_X_ENA | WM831X_TCH_Y_ENA |
++ WM831X_TCH_Z_ENA,
++ WM831X_TCH_ENA | WM831X_TCH_CVT_ENA |
++ WM831X_TCH_X_ENA | WM831X_TCH_Y_ENA |
++ ena);
++
++ return 0;
++}
++
++static void wm831x_ts_input_close(struct input_dev *idev)
++{
++ struct wm831x_ts *wm831x_ts = input_get_drvdata(idev);
++ struct wm831x *wm831x = wm831x_ts->wm831x;
++
++ wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
++ WM831X_TCH_ENA | WM831X_TCH_CVT_ENA |
++ WM831X_TCH_X_ENA | WM831X_TCH_Y_ENA |
++ WM831X_TCH_Z_ENA, 0);
++}
++
++static int wm831x_ts_probe(struct platform_device *pdev)
++{
++ struct wm831x_ts *wm831x_ts;
++ struct wm831x *wm831x = dev_get_drvdata(pdev->dev.parent);
++ struct wm831x_pdata *core_pdata = dev_get_platdata(pdev->dev.parent);
++ struct wm831x_touch_pdata *pdata;
++ struct input_dev *input_dev;
++ int ret;
++
++ wm831x_ts = kzalloc(sizeof(struct wm831x_ts), GFP_KERNEL);
++ if (!wm831x_ts)
++ return -ENOMEM;
++
++ wm831x_ts->wm831x = wm831x;
++
++ if (core_pdata && core_pdata->touch)
++ pdata = core_pdata->touch;
++ else
++ pdata = NULL;
++
++ /* If we have a direct CPU data IRQ use it, otherwise use
++ * the interrupt through the WM831x IRQ controller.
++ */
++ if (pdata)
++ wm831x_ts->data_irq = pdata->data_irq;
++ else
++ wm831x_ts->data_irq = platform_get_irq_byname(pdev,
++ "TCHDATA");
++
++ if (pdata && pdata->pressure)
++ wm831x_ts->pressure = true;
++ else
++ wm831x_ts->pressure = false;
++
++ /* Five wire touchscreens can't report pressure */
++ if (pdata && pdata->fivewire) {
++ wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_2,
++ WM831X_TCH_5WIRE, WM831X_TCH_5WIRE);
++
++ /* Pressure measurments are not possible for five wire mode */
++ WARN_ON(pdata->pressure && pdata->fivewire);
++ wm831x_ts->pressure = false;
++ } else {
++ wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_2,
++ WM831X_TCH_5WIRE, 0);
++ }
++
++ if (pdata) {
++ switch (pdata->isel) {
++ default:
++ dev_err(&pdev->dev, "Unsupported ISEL setting: %d\n",
++ pdata->isel);
++ /* Fall through */
++ case 200:
++ case 0:
++ wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_2,
++ WM831X_TCH_ISEL, 0);
++ break;
++ case 400:
++ wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_2,
++ WM831X_TCH_ISEL, WM831X_TCH_ISEL);
++ break;
++ }
++ }
++
++ /* Convert only when pen down */
++ wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_2,
++ WM831X_TCH_PDONLY, WM831X_TCH_PDONLY);
++
++ /* Default to 192 samples/sec */
++ wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
++ WM831X_TCH_RATE_MASK, 12);
++
++ ret = request_threaded_irq(wm831x_ts->data_irq, NULL,
++ wm831x_ts_data_irq,
++ IRQF_ONESHOT, /* Trigger */
++ "Touchscreen data", wm831x_ts);
++ if (ret < 0) {
++ dev_err(&pdev->dev, "Failed to request IRQ %d: %d\n",
++ wm831x_ts->data_irq, ret);
++ goto err_alloc;
++ }
++
++ platform_set_drvdata(pdev, wm831x_ts);
++
++ input_dev = input_allocate_device();
++ if (input_dev == NULL) {
++ ret = -ENOMEM;
++ goto err_irq;
++ }
++ wm831x_ts->input_dev = input_dev;
++
++ /* set up touch configuration */
++ input_dev->name = "WM831x touchscreen";
++ input_dev->phys = "wm831x";
++ input_dev->open = wm831x_ts_input_open;
++ input_dev->close = wm831x_ts_input_close;
++
++ __set_bit(EV_ABS, input_dev->evbit);
++ __set_bit(EV_KEY, input_dev->evbit);
++ __set_bit(BTN_TOUCH, input_dev->keybit);
++
++ input_set_abs_params(input_dev, ABS_X, 0, 4095, 5, 0);
++ input_set_abs_params(input_dev, ABS_Y, 0, 4095, 5, 0);
++ if (wm831x_ts->pressure)
++ input_set_abs_params(input_dev, ABS_PRESSURE, 0, 4095, 5, 0);
++
++ input_set_drvdata(input_dev, wm831x_ts);
++ input_dev->dev.parent = &pdev->dev;
++
++ ret = input_register_device(input_dev);
++ if (ret < 0)
++ goto err_dev_alloc;
++
++ return ret;
++
++err_dev_alloc:
++ input_free_device(input_dev);
++err_irq:
++ free_irq(wm831x_ts->data_irq, wm831x_ts);
++err_alloc:
++ kfree(wm831x_ts);
++
++ return ret;
++}
++
++static int wm831x_ts_remove(struct platform_device *pdev)
++{
++ struct wm831x_ts *wm831x_ts = platform_get_drvdata(pdev);
++
++ free_irq(wm831x_ts->data_irq, wm831x_ts);
++ input_unregister_device(wm831x_ts->input_dev);
++ kfree(wm831x_ts);
++
++ return 0;
++}
++
++static struct platform_driver wm831x_ts_driver = {
++ .driver = {
++ .name = "wm831x-touch",
++ .owner = THIS_MODULE,
++ },
++ .probe = wm831x_ts_probe,
++ .remove = __devexit_p(wm831x_ts_remove),
++};
++
++static int __init wm831x_ts_init(void)
++{
++ return platform_driver_register(&wm831x_ts_driver);
++}
++module_init(wm831x_ts_init);
++
++static void __exit wm831x_ts_exit(void)
++{
++ platform_driver_unregister(&wm831x_ts_driver);
++}
++module_exit(wm831x_ts_exit);
++
++/* Module information */
++MODULE_AUTHOR("Mark Brown <br...@op...>");
++MODULE_DESCRIPTION("WM831x PMIC touchscreen driver");
++MODULE_LICENSE("GPL");
++MODULE_ALIAS("platform:wm831x-touch");
+--
+1.7.1
+
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/413-wolfson-Input-wm831x-Handles_pen_down_interrupt.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/413-wolfson-Input-wm831x-Handles_pen_down_interrupt.patch
new file mode 100644
index 0000000..6bf7f26
--- /dev/null
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/413-wolfson-Input-wm831x-Handles_pen_down_interrupt.patch
@@ -0,0 +1,115 @@
+Handles Pen_Down interrupt.
+
+Signed-off-by: Mark Brown <br...@op...>
+
+diff --git a/drivers/input/touchscreen/wm831x-ts.c b/drivers/input/touchscreen/wm831x-ts.c
+index 51d1863..3617748 100644
+--- a/drivers/input/touchscreen/wm831x-ts.c
++++ b/drivers/input/touchscreen/wm831x-ts.c
+@@ -126,16 +126,21 @@ static irqreturn_t wm831x_ts_data_irq(int irq, void *irq_data)
+ * individual reading does so.
+ */
+ for (i = 0; i < count; i++) {
++ if (!(data[i] & WM831X_TCH_PD)) {
++ pen_down = false;
++ continue;
++ }
+ input_report_abs(wm831x_ts->input_dev, data_types[i],
+ data[i] & WM831X_TCH_DATA_MASK);
+- if (!data[i] & WM831X_TCH_PD)
+- pen_down = false;
+ }
+
+- if (pen_down) {
+- input_report_key(wm831x_ts->input_dev, BTN_TOUCH, 1);
+- } else {
+- input_report_abs(wm831x_ts->input_dev, ABS_PRESSURE, 0);
++ if (!pen_down) {
++ wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
++ WM831X_TCH_CVT_ENA, 0);
++
++ if (wm831x_ts->pressure)
++ input_report_abs(wm831x_ts->input_dev,
++ ABS_PRESSURE, 0);
+ input_report_key(wm831x_ts->input_dev, BTN_TOUCH, 0);
+ }
+
+@@ -144,6 +149,20 @@ static irqreturn_t wm831x_ts_data_irq(int irq, void *irq_data)
+ return IRQ_HANDLED;
+ }
+
++static irqreturn_t wm831x_ts_pen_down_irq(int irq, void *irq_data)
++{
++ struct wm831x_ts *wm831x_ts = irq_data;
++ struct wm831x *wm831x = wm831x_ts->wm831x;
++
++ wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
++ WM831X_TCH_CVT_ENA, WM831X_TCH_CVT_ENA);
++
++ input_report_key(wm831x_ts->input_dev, BTN_TOUCH, 1);
++ input_sync(wm831x_ts->input_dev);
++
++ return IRQ_HANDLED;
++}
++
+ static int wm831x_ts_input_open(struct input_dev *idev)
+ {
+ struct wm831x_ts *wm831x_ts = input_get_drvdata(idev);
+@@ -154,11 +173,9 @@ static int wm831x_ts_input_open(struct input_dev *idev)
+ ena |= WM831X_TCH_Z_ENA;
+
+ wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
+- WM831X_TCH_ENA | WM831X_TCH_CVT_ENA |
+- WM831X_TCH_X_ENA | WM831X_TCH_Y_ENA |
++ WM831X_TCH_ENA | WM831X_TCH_X_ENA | WM831X_TCH_Y_ENA |
+ WM831X_TCH_Z_ENA,
+- WM831X_TCH_ENA | WM831X_TCH_CVT_ENA |
+- WM831X_TCH_X_ENA | WM831X_TCH_Y_ENA |
++ WM831X_TCH_ENA | WM831X_TCH_X_ENA | WM831X_TCH_Y_ENA |
+ ena);
+
+ return 0;
+@@ -258,12 +275,23 @@ static int wm831x_ts_probe(struct platform_device *pdev)
+ goto err_alloc;
+ }
+
++ ret = request_threaded_irq(platform_get_irq_byname(pdev,
++ "TCHPD"),
++ NULL, wm831x_ts_pen_down_irq,
++ IRQF_ONESHOT, /* Trigger */
++ "Touchscreen pen down", wm831x_ts);
++ if (ret < 0) {
++ dev_err(&pdev->dev, "Failed to request pen down IRQ: %d\n",
++ ret);
++ goto err_data_irq;
++ }
++
+ platform_set_drvdata(pdev, wm831x_ts);
+
+ input_dev = input_allocate_device();
+ if (input_dev == NULL) {
+ ret = -ENOMEM;
+- goto err_irq;
++ goto err_pd_irq;
+ }
+ wm831x_ts->input_dev = input_dev;
+
+@@ -293,7 +321,9 @@ static int wm831x_ts_probe(struct platform_device *pdev)
+
+ err_dev_alloc:
+ input_free_device(input_dev);
+-err_irq:
++err_pd_irq:
++ free_irq(platform_get_irq_byname(pdev, "TCHPD"), wm831x_ts);
++err_data_irq:
+ free_irq(wm831x_ts->data_irq, wm831x_ts);
+ err_alloc:
+ kfree(wm831x_ts);
+@@ -305,6 +335,7 @@ static int wm831x_ts_remove(struct platform_device *pdev)
+ {
+ struct wm831x_ts *wm831x_ts = platform_get_drvdata(pdev);
+
++ free_irq(platform_get_irq_byname(pdev, "TCHPD"), wm831x_ts);
+ free_irq(wm831x_ts->data_irq, wm831x_ts);
+ input_unregister_device(wm831x_ts->input_dev);
+ kfree(wm831x_ts);
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/414-wolfson-Input-wm831x-Ack_data_interrupt_when_using_external_signal.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/414-wolfson-Input-wm831x-Ack_data_interrupt_when_using_external_signal.patch
new file mode 100644
index 0000000..3bed2a7
--- /dev/null
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/414-wolfson-Input-wm831x-Ack_data_interrupt_when_using_external_signal.patch
@@ -0,0 +1,118 @@
+If we're using a direct signal for the data IRQ we still need to ack the
+interrupt.
+
+Signed-off-by: Mark Brown <br...@op...>
+
+diff --git a/drivers/input/touchscreen/wm831x-ts.c b/drivers/input/touchscreen/wm831x-ts.c
+index 3617748..833979c 100644
+--- a/drivers/input/touchscreen/wm831x-ts.c
++++ b/drivers/input/touchscreen/wm831x-ts.c
+@@ -20,6 +20,7 @@
+ #include <linux/interrupt.h>
+ #include <linux/io.h>
+ #include <linux/mfd/wm831x/core.h>
++#include <linux/mfd/wm831x/irq.h>
+ #include <linux/mfd/wm831x/pdata.h>
+ #include <linux/platform_device.h>
+ #include <linux/slab.h>
+@@ -146,6 +147,13 @@ static irqreturn_t wm831x_ts_data_irq(int irq, void *irq_data)
+
+ input_sync(wm831x_ts->input_dev);
+
++ /* If we're using a direct signal for the data IRQ we still need
++ * to ack the interrupt.
++ */
++ if (wm831x_ts->data_irq)
++ wm831x_set_bits(wm831x, WM831X_INTERRUPT_STATUS_1,
++ WM831X_TCHDATA_EINT, WM831X_TCHDATA_EINT);
++
+ return IRQ_HANDLED;
+ }
+
+@@ -169,14 +177,15 @@ static int wm831x_ts_input_open(struct input_dev *idev)
+ struct wm831x *wm831x = wm831x_ts->wm831x;
+ u16 ena = 0;
+
++ wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
++ WM831X_TCH_ENA, WM831X_TCH_ENA);
++
+ if (wm831x_ts->pressure)
+ ena |= WM831X_TCH_Z_ENA;
+
+ wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
+- WM831X_TCH_ENA | WM831X_TCH_X_ENA | WM831X_TCH_Y_ENA |
+- WM831X_TCH_Z_ENA,
+- WM831X_TCH_ENA | WM831X_TCH_X_ENA | WM831X_TCH_Y_ENA |
+- ena);
++ WM831X_TCH_X_ENA | WM831X_TCH_Y_ENA | WM831X_TCH_Z_ENA,
++ WM831X_TCH_X_ENA | WM831X_TCH_Y_ENA | ena);
+
+ return 0;
+ }
+@@ -217,9 +226,6 @@ static int wm831x_ts_probe(struct platform_device *pdev)
+ */
+ if (pdata)
+ wm831x_ts->data_irq = pdata->data_irq;
+- else
+- wm831x_ts->data_irq = platform_get_irq_byname(pdev,
+- "TCHDATA");
+
+ if (pdata && pdata->pressure)
+ wm831x_ts->pressure = true;
+@@ -257,18 +263,24 @@ static int wm831x_ts_probe(struct platform_device *pdev)
+ }
+ }
+
+- /* Convert only when pen down */
+ wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_2,
+- WM831X_TCH_PDONLY, WM831X_TCH_PDONLY);
++ WM831X_TCH_PDONLY, 0);
+
+- /* Default to 192 samples/sec */
++ /* Default to 112 samples/sec */
+ wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
+- WM831X_TCH_RATE_MASK, 12);
++ WM831X_TCH_RATE_MASK, 6);
+
+- ret = request_threaded_irq(wm831x_ts->data_irq, NULL,
+- wm831x_ts_data_irq,
+- IRQF_ONESHOT, /* Trigger */
+- "Touchscreen data", wm831x_ts);
++ if (wm831x_ts->data_irq)
++ ret = request_threaded_irq(wm831x_ts->data_irq, NULL,
++ wm831x_ts_data_irq,
++ IRQF_ONESHOT, /* Trigger */
++ "Touchscreen data", wm831x_ts);
++ else
++ ret = request_threaded_irq(platform_get_irq_byname(pdev,
++ "TCHDATA"),
++ NULL, wm831x_ts_data_irq,
++ IRQF_ONESHOT, /* Trigger */
++ "Touchscreen data", wm831x_ts);
+ if (ret < 0) {
+ dev_err(&pdev->dev, "Failed to request IRQ %d: %d\n",
+ wm831x_ts->data_irq, ret);
+@@ -324,7 +336,10 @@ err_dev_alloc:
+ err_pd_irq:
+ free_irq(platform_get_irq_byname(pdev, "TCHPD"), wm831x_ts);
+ err_data_irq:
+- free_irq(wm831x_ts->data_irq, wm831x_ts);
++ if (wm831x_ts->data_irq)
++ free_irq(wm831x_ts->data_irq, wm831x_ts);
++ else
++ free_irq(platform_get_irq_byname(pdev, "TCHDATA"), wm831x_ts);
+ err_alloc:
+ kfree(wm831x_ts);
+
+@@ -336,7 +351,10 @@ static int wm831x_ts_remove(struct platform_device *pdev)
+ struct wm831x_ts *wm831x_ts = platform_get_drvdata(pdev);
+
+ free_irq(platform_get_irq_byname(pdev, "TCHPD"), wm831x_ts);
+- free_irq(wm831x_ts->data_irq, wm831x_ts);
++ if (wm831x_ts->data_irq)
++ free_irq(wm831x_ts->data_irq, wm831x_ts);
++ else
++ free_irq(platform_get_irq_byname(pdev, "TCHDATA"), wm831x_ts);
+ input_unregister_device(wm831x_ts->input_dev);
+ kfree(wm831x_ts);
+
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/415-armadeus-Input-wm831x-Allows_using_external_signal_for_pen_down_interrupt.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/415-armadeus-Input-wm831x-Allows_using_external_signal_for_pen_down_interrupt.patch
new file mode 100644
index 0000000..d543d27
--- /dev/null
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/415-armadeus-Input-wm831x-Allows_using_external_signal_for_pen_down_interrupt.patch
@@ -0,0 +1,115 @@
+Handles pen_down interrupt from a direct signal too.
+
+Signed-off-by: Julien Boibessot <jul...@ar...>
+
+Index: linux-2.6.38-alpha/drivers/input/touchscreen/wm831x-ts.c
+===================================================================
+--- linux-2.6.38-alpha.orig/drivers/input/touchscreen/wm831x-ts.c 2011-01-03 18:02:37.000000000 +0100
++++ linux-2.6.38-alpha/drivers/input/touchscreen/wm831x-ts.c 2011-01-03 20:49:49.000000000 +0100
+@@ -98,6 +98,7 @@
+ struct input_dev *input_dev;
+ struct wm831x *wm831x;
+ int data_irq;
++ int pd_irq;
+ bool pressure;
+ };
+
+@@ -168,6 +169,13 @@
+ input_report_key(wm831x_ts->input_dev, BTN_TOUCH, 1);
+ input_sync(wm831x_ts->input_dev);
+
++ /* If we're using a direct signal for the pen_down IRQ we still need
++ * to ack the interrupt.
++ */
++ if (wm831x_ts->pd_irq)
++ wm831x_set_bits(wm831x, WM831X_INTERRUPT_STATUS_1,
++ WM831X_TCHPD_EINT, WM831X_TCHPD_EINT);
++
+ return IRQ_HANDLED;
+ }
+
+@@ -224,9 +232,12 @@
+ /* If we have a direct CPU data IRQ use it, otherwise use
+ * the interrupt through the WM831x IRQ controller.
+ */
+- if (pdata)
++ if (pdata && pdata->data_irq)
+ wm831x_ts->data_irq = pdata->data_irq;
+
++ if (pdata && pdata->pd_irq)
++ wm831x_ts->pd_irq = pdata->pd_irq;
++
+ if (pdata && pdata->pressure)
+ wm831x_ts->pressure = true;
+ else
+@@ -282,19 +293,26 @@
+ IRQF_ONESHOT, /* Trigger */
+ "Touchscreen data", wm831x_ts);
+ if (ret < 0) {
+- dev_err(&pdev->dev, "Failed to request IRQ %d: %d\n",
++ dev_err(&pdev->dev, "Failed to request data IRQ %d: %d\n",
+ wm831x_ts->data_irq, ret);
+ goto err_alloc;
+ }
+
+- ret = request_threaded_irq(platform_get_irq_byname(pdev,
+- "TCHPD"),
+- NULL, wm831x_ts_pen_down_irq,
+- IRQF_ONESHOT, /* Trigger */
+- "Touchscreen pen down", wm831x_ts);
++ if (wm831x_ts->pd_irq)
++ ret = request_threaded_irq(wm831x_ts->pd_irq, NULL,
++ wm831x_ts_pen_down_irq,
++ IRQF_ONESHOT, /* Trigger */
++ "Touchscreen pen down", wm831x_ts);
++ else
++ ret = request_threaded_irq(platform_get_irq_byname(pdev,
++ "TCHPD"),
++ NULL, wm831x_ts_pen_down_irq,
++ IRQF_ONESHOT, /* Trigger */
++ "Touchscreen pen down", wm831x_ts);
++
+ if (ret < 0) {
+- dev_err(&pdev->dev, "Failed to request pen down IRQ: %d\n",
+- ret);
++ dev_err(&pdev->dev, "Failed to request pen down IRQ: %d %d\n",
++ wm831x_ts->pd_irq, ret);
+ goto err_data_irq;
+ }
+
+@@ -334,7 +352,10 @@
+ err_dev_alloc:
+ input_free_device(input_dev);
+ err_pd_irq:
+- free_irq(platform_get_irq_byname(pdev, "TCHPD"), wm831x_ts);
++ if (wm831x_ts->pd_irq)
++ free_irq(wm831x_ts->pd_irq, wm831x_ts);
++ else
++ free_irq(platform_get_irq_byname(pdev, "TCHPD"), wm831x_ts);
+ err_data_irq:
+ if (wm831x_ts->data_irq)
+ free_irq(wm831x_ts->data_irq, wm831x_ts);
+@@ -350,7 +371,10 @@
+ {
+ struct wm831x_ts *wm831x_ts = platform_get_drvdata(pdev);
+
+- free_irq(platform_get_irq_byname(pdev, "TCHPD"), wm831x_ts);
++ if (wm831x_ts->pd_irq)
++ free_irq(wm831x_ts->pd_irq, wm831x_ts);
++ else
++ free_irq(platform_get_irq_byname(pdev, "TCHPD"), wm831x_ts);
+ if (wm831x_ts->data_irq)
+ free_irq(wm831x_ts->data_irq, wm831x_ts);
+ else
+Index: linux-2.6.38-alpha/include/linux/mfd/wm831x/pdata.h
+===================================================================
+--- linux-2.6.38-alpha.orig/include/linux/mfd/wm831x/pdata.h 2010-12-14 09:55:53.000000000 +0100
++++ linux-2.6.38-alpha/include/linux/mfd/wm831x/pdata.h 2011-01-03 20:49:02.000000000 +0100
+@@ -81,6 +81,7 @@
+ int rpu; /** Pen down sensitivity resistor divider */
+ int pressure; /** Report pressure (boolean) */
+ int data_irq; /** Touch data ready IRQ */
++ int pd_irq; /** Touch pendown detect IRQ */
+ };
+
+ enum wm831x_watchdog_action {
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/416-armadeus-Input-wm831x-Data_acquisition_start_when_pen_down_is_detected_isnt_working.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/416-armadeus-Input-wm831x-Data_acquisition_start_when_pen_down_is_detected_isnt_working.patch
new file mode 100644
index 0000000..df98cf1
--- /dev/null
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/416-armadeus-Input-wm831x-Data_acquisition_start_when_pen_down_is_detected_isnt_working.patch
@@ -0,0 +1,43 @@
+Feature is not working so don't use it (for the moment).
+
+Signed-off-by: Julien Boibessot <jul...@ar...>
+
+Index: linux-2.6.38-alpha/drivers/input/touchscreen/wm831x-ts.c
+===================================================================
+--- linux-2.6.38-alpha.orig/drivers/input/touchscreen/wm831x-ts.c 2011-01-04 10:06:40.000000000 +0100
++++ linux-2.6.38-alpha/drivers/input/touchscreen/wm831x-ts.c 2011-01-05 15:28:12.000000000 +0100
+@@ -137,9 +137,9 @@
+ }
+
+ if (!pen_down) {
+- wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
++/* wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
+ WM831X_TCH_CVT_ENA, 0);
+-
++*/
+ if (wm831x_ts->pressure)
+ input_report_abs(wm831x_ts->input_dev,
+ ABS_PRESSURE, 0);
+@@ -163,9 +163,9 @@
+ struct wm831x_ts *wm831x_ts = irq_data;
+ struct wm831x *wm831x = wm831x_ts->wm831x;
+
+- wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
++/* wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
+ WM831X_TCH_CVT_ENA, WM831X_TCH_CVT_ENA);
+-
++*/
+ input_report_key(wm831x_ts->input_dev, BTN_TOUCH, 1);
+ input_sync(wm831x_ts->input_dev);
+
+@@ -192,8 +192,8 @@
+ ena |= WM831X_TCH_Z_ENA;
+
+ wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
+- WM831X_TCH_X_ENA | WM831X_TCH_Y_ENA | WM831X_TCH_Z_ENA,
+- WM831X_TCH_X_ENA | WM831X_TCH_Y_ENA | ena);
++ WM831X_TCH_CVT_ENA | WM831X_TCH_X_ENA | WM831X_TCH_Y_ENA | WM831X_TCH_Z_ENA,
++ WM831X_TCH_CVT_ENA | WM831X_TCH_X_ENA | WM831X_TCH_Y_ENA | ena);
+
+ return 0;
+ }
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/417-armadeus-input-wm831x-driver_hacks.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/417-armadeus-input-wm831x-driver_hacks.patch
new file mode 100644
index 0000000..205d7ef
--- /dev/null
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/417-armadeus-input-wm831x-driver_hacks.patch
@@ -0,0 +1,57 @@
+Signed-off-by: Julien Boibessot <jul...@ar...>
+
+Index: linux-2.6.38-alpha/drivers/input/touchscreen/wm831x-ts.c
+===================================================================
+--- linux-2.6.38-alpha.orig/drivers/input/touchscreen/wm831x-ts.c 2011-01-03 21:42:27.000000000 +0100
++++ linux-2.6.38-alpha/drivers/input/touchscreen/wm831x-ts.c 2011-01-03 22:01:20.000000000 +0100
+@@ -218,6 +218,7 @@
+ struct input_dev *input_dev;
+ int ret;
+
++ printk("--- %s (%s %s)\n", __func__, __DATE__, __TIME__);
+ wm831x_ts = kzalloc(sizeof(struct wm831x_ts), GFP_KERNEL);
+ if (!wm831x_ts)
+ return -ENOMEM;
+@@ -248,7 +249,7 @@
+ wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_2,
+ WM831X_TCH_5WIRE, WM831X_TCH_5WIRE);
+
+- /* Pressure measurments are not possible for five wire mode */
++ /* Pressure measurements are not possible for five wire mode */
+ WARN_ON(pdata->pressure && pdata->fivewire);
+ wm831x_ts->pressure = false;
+ } else {
+@@ -274,12 +275,13 @@
+ }
+ }
+
++ /* "Convert only when pen down" isn't working (yet) so don't use it */
+ wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_2,
+ WM831X_TCH_PDONLY, 0);
+
+- /* Default to 112 samples/sec */
++ /* Default to 64 samples/sec */
+ wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
+- WM831X_TCH_RATE_MASK, 6);
++ WM831X_TCH_RATE_MASK, 4);
+
+ if (wm831x_ts->data_irq)
+ ret = request_threaded_irq(wm831x_ts->data_irq, NULL,
+@@ -318,6 +320,17 @@
+
+ platform_set_drvdata(pdev, wm831x_ts);
+
++ /* GPIO3 -> EOC */
++ wm831x_reg_write(wm831x, 0x4037 + 3, 0x0087);
++ /* GPIO7 -> EOC also (dbg) */
++ wm831x_reg_write(wm831x, 0x404c, 0x0000); /* LED1 off */
++ wm831x_reg_write(wm831x, 0x4037 + 7, 0x0087);
++ /* GPIO2 -> PD DETECT */
++ wm831x_reg_write(wm831x, 0x4037 + 2, 0x0086);
++ /* GPIO6 -> PD DETECT also (dbg) */
++ wm831x_reg_write(wm831x, 0x404d, 0x0000); /* LED2 off */
++ wm831x_reg_write(wm831x, 0x4037 + 6, 0x0086);
++
+ input_dev = input_allocate_device();
+ if (input_dev == NULL) {
+ ret = -ENOMEM;
hooks/post-receive
--
armadeus
|
|
From: Fabien M <fa...@us...> - 2011-01-05 17:23:51
|
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 b6df1071e9eb5fbe2ba55594a53517c234bc27e8 (commit)
from 96c957b8b9b650b4fdf310465ff9b6057e7a3bfd (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 b6df1071e9eb5fbe2ba55594a53517c234bc27e8
Author: Fabien Marteau <fab...@ar...>
Date: Wed Jan 5 18:23:05 2011 +0100
[U-BOOT] Suppress trailling white space for all patch in u-boot-2010.03
-----------------------------------------------------------------------
Summary of changes:
.../target/u-boot/u-boot-2010.03-100-imx.patch | 22 +-
.../target/u-boot/u-boot-2010.03-110-apf9328.patch | 88 ++-
.../u-boot/u-boot-2010.03-111-apf9328-DM9000.patch | 24 +-
.../u-boot-2010.03-112-apf9328-makefile.patch | 16 +-
.../u-boot/u-boot-2010.03-120-apf9328-tools.patch | 48 +-
.../target/u-boot/u-boot-2010.03-140-ds1374.patch | 18 +-
...apf9328-fixes_gcc_4_4_EABI_linking_issues.patch | 30 +-
.../target/u-boot/u-boot-2010.03-300-imx27.patch | 64 ++-
.../target/u-boot/u-boot-2010.03-301-nand.patch | 63 +-
.../target/u-boot/u-boot-2010.03-310-apf27.patch | 662 ++++++++++----------
.../u-boot-2010.03-311-imx-nand-lock-unlock.patch | 12 +-
...-boot-2010.03-312-imx-nand-write-any-size.patch | 16 +-
.../target/u-boot/u-boot-2010.03-320-spartan.patch | 14 +-
.../u-boot/u-boot-2010.03-330-fix-nand-debug.patch | 8 +-
.../u-boot-2010.03-340-fix-fecmxc-debug.patch | 8 +-
.../u-boot-2010.03-350-fix-jffs2-warns.patch | 8 +-
.../target/u-boot/u-boot-2010.03-400-imx51.patch | 129 ++--
.../target/u-boot/u-boot-2010.03-401-apf51.patch | 24 +-
.../u-boot/u-boot-2010.03-403-apf51-wdog.patch | 20 +-
.../u-boot/u-boot-2010.03-404-apf51-fec.patch | 16 +-
.../u-boot/u-boot-2010.03-407-imx51-nand.patch | 33 +-
.../u-boot/u-boot-2010.03-409-apf51-nand-spl.patch | 35 +-
.../target/u-boot/u-boot-2010.03-410-imx-iim.patch | 51 +-
23 files changed, 776 insertions(+), 633 deletions(-)
diff --git a/buildroot/target/u-boot/u-boot-2010.03-100-imx.patch b/buildroot/target/u-boot/u-boot-2010.03-100-imx.patch
index 01dcaca..f22a977 100644
--- a/buildroot/target/u-boot/u-boot-2010.03-100-imx.patch
+++ b/buildroot/target/u-boot/u-boot-2010.03-100-imx.patch
@@ -1,6 +1,8 @@
---- u-boot-2010.03-rc2/cpu/arm920t/imx/timer.c.ori 2010-03-22 23:25:00.000000000 +0100
-+++ u-boot-2010.03-rc2/cpu/arm920t/imx/timer.c 2010-03-30 22:35:41.000000000 +0200
-@@ -75,16 +75,16 @@ void reset_timer_masked (void)
+Index: u-boot-2010.03/cpu/arm920t/imx/timer.c
+===================================================================
+--- u-boot-2010.03.orig/cpu/arm920t/imx/timer.c 2010-03-31 23:54:39.000000000 +0200
++++ u-boot-2010.03/cpu/arm920t/imx/timer.c 2011-01-05 17:54:10.000000000 +0100
+@@ -75,16 +75,16 @@
ulong get_timer_masked (void)
{
@@ -20,8 +22,10 @@
diff = endtime - now;
} while (diff >= 0);
}
---- u-boot.ref/cpu/arm920t/imx/speed.c 2008-08-12 16:08:38.000000000 +0200
-+++ u-boot/cpu/arm920t/imx/speed.c 2008-09-13 16:16:58.000000000 +0200
+Index: u-boot-2010.03/cpu/arm920t/imx/speed.c
+===================================================================
+--- u-boot-2010.03.orig/cpu/arm920t/imx/speed.c 2010-03-31 23:54:39.000000000 +0200
++++ u-boot-2010.03/cpu/arm920t/imx/speed.c 2011-01-05 17:54:10.000000000 +0100
@@ -36,33 +36,27 @@
* the specified bus in HZ.
*/
@@ -68,7 +72,7 @@
}
ulong get_FCLK(void)
-@@ -74,7 +68,6 @@ ulong get_FCLK(void)
+@@ -74,7 +68,6 @@
ulong get_HCLK(void)
{
u32 bclkdiv = (( CSCR >> 10 ) & 0xf) + 1;
@@ -76,8 +80,10 @@
return get_systemPLLCLK() / bclkdiv;
}
---- u-boot.ref/include/asm-arm/arch-imx/imx-regs.h 2008-08-12 16:08:38.000000000 +0200
-+++ u-boot/include/asm-arm/arch-imx/imx-regs.h 2008-09-13 16:16:58.000000000 +0200
+Index: u-boot-2010.03/include/asm-arm/arch-imx/imx-regs.h
+===================================================================
+--- u-boot-2010.03.orig/include/asm-arm/arch-imx/imx-regs.h 2010-03-31 23:54:39.000000000 +0200
++++ u-boot-2010.03/include/asm-arm/arch-imx/imx-regs.h 2011-01-05 17:54:10.000000000 +0100
@@ -631,4 +631,27 @@
#define TSTAT_CAPT (1<<1) /* Capture event */
#define TSTAT_COMP (1) /* Compare event */
diff --git a/buildroot/target/u-boot/u-boot-2010.03-110-apf9328.patch b/buildroot/target/u-boot/u-boot-2010.03-110-apf9328.patch
index 0e214f6..e01e8be 100644
--- a/buildroot/target/u-boot/u-boot-2010.03-110-apf9328.patch
+++ b/buildroot/target/u-boot/u-boot-2010.03-110-apf9328.patch
@@ -1,5 +1,7 @@
---- ref/u-boot/board/armadeus/apf9328/apf9328.c 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot/board/armadeus/apf9328/apf9328.c 2008-11-14 00:48:19.000000000 +0100
+Index: u-boot-2010.03/board/armadeus/apf9328/apf9328.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ u-boot-2010.03/board/armadeus/apf9328/apf9328.c 2011-01-05 18:06:50.000000000 +0100
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2004 Sascha Hauer, Synertronixx GmbH
@@ -67,7 +69,7 @@
+misc_init_r (void)
+{
+ char *s;
-+
++
+#if (CONFIG_FPGA)
+ apf9328_init_fpga ();
+#endif
@@ -76,7 +78,7 @@
+ imx_gpio_mode (GPIO_PORTB | GPIO_DR | GPIO_IN | 14);
+#endif
+
-+ /* adjust size of rootfs if needed */
++ /* adjust size of rootfs if needed */
+#if (CONFIG_FLASH_CFI_DRIVER)
+ s = getenv ("rootfs_len");
+ if (( NULL == s ) || (0 == strcmp(s, ""))) {
@@ -87,7 +89,7 @@
+ }
+#endif
+
-+ /* detect compatibility issue of environment version */
++ /* detect compatibility issue of environment version */
+ s = getenv ("env_version");
+ if (( NULL == s ) || (0 != strcmp(s, CONFIG_ENV_VERSION))) {
+ printf("*** Warning - Environment version change suggests: "
@@ -102,8 +104,10 @@
+{
+ return;
+}
---- ref/u-boot/board/armadeus/apf9328/apf9328fpga.c 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot/board/armadeus/apf9328/apf9328fpga.c 2008-11-14 00:48:19.000000000 +0100
+Index: u-boot-2010.03/board/armadeus/apf9328/apf9328fpga.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ u-boot-2010.03/board/armadeus/apf9328/apf9328fpga.c 2011-01-05 18:06:37.000000000 +0100
@@ -0,0 +1,100 @@
+/*
+ * (C) Copyright 2005
@@ -154,8 +158,8 @@
+
+/* Note that these are pointers to code that is in Flash. They will be
+ * relocated at runtime.
-+ * Spartan3 code is used to download our Spartan 3 :) code is compatible.
-+ * Just take care about the file size
++ * Spartan3 code is used to download our Spartan 3 :) code is compatible.
++ * Just take care about the file size
+*/
+Xilinx_Spartan3_Slave_Serial_fns fpga_fns = {
+ fpga_pre_fn,
@@ -195,7 +199,7 @@
+ }
+
+ if (( autoload ) && (0 == strcmp(autoload, "1"))) {
-+ if (FPGA_SUCCESS != fpga_load( 0, (void *)CONFIG_FIRMWARE_ADDR,
++ if (FPGA_SUCCESS != fpga_load( 0, (void *)CONFIG_FIRMWARE_ADDR,
+ (size_t) CONFIG_FIRMWARE_LEN )) {
+ lout = 0;
+ printf("Firmware not loaded!\n");
@@ -205,8 +209,10 @@
+}
+
+#endif /* CONFIG_FPGA */
---- ref/u-boot/board/armadeus/apf9328/apf9328fpga.h 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot/board/armadeus/apf9328/apf9328fpga.h 2008-11-14 00:48:19.000000000 +0100
+Index: u-boot-2010.03/board/armadeus/apf9328/apf9328fpga.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ u-boot-2010.03/board/armadeus/apf9328/apf9328fpga.h 2011-01-05 18:06:21.000000000 +0100
@@ -0,0 +1,31 @@
+/*
+ * (C) Copyright 2002
@@ -236,11 +242,13 @@
+/*
+ * Spartan 3 FPGA configuration support for the APF9328 daughter board
+ */
-+
++
+#include "fpga.h"
+extern int apf9328_init_fpga (void);
---- ref/u-boot/board/armadeus/apf9328/config.mk 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot/board/armadeus/apf9328/config.mk 2008-11-14 00:48:19.000000000 +0100
+Index: u-boot-2010.03/board/armadeus/apf9328/config.mk
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ u-boot-2010.03/board/armadeus/apf9328/config.mk 2011-01-05 18:05:23.000000000 +0100
@@ -0,0 +1,10 @@
+#
+# This config file is used for compilation of armadeus sources
@@ -252,8 +260,10 @@
+#
+
+TEXT_BASE = 0x0BF80000
---- ref/u-boot/board/armadeus/apf9328/fpga.c 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot/board/armadeus/apf9328/fpga.c 2008-11-14 00:48:19.000000000 +0100
+Index: u-boot-2010.03/board/armadeus/apf9328/fpga.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ u-boot-2010.03/board/armadeus/apf9328/fpga.c 2011-01-05 18:05:59.000000000 +0100
@@ -0,0 +1,140 @@
+/*
+ * (C) Copyright 2002
@@ -317,8 +327,8 @@
+
+/* Note that these are pointers to code that is in Flash. They will be
+ * relocated at runtime.
-+ * Spartan2 code is used to download our Spartan 3 :) code is compatible.
-+ * Just take care about the file size
++ * Spartan2 code is used to download our Spartan 3 :) code is compatible.
++ * Just take care about the file size
+*/
+
+/*
@@ -344,7 +354,7 @@
+int
+fpga_pgm_fn (int assert, int flush, int cookie)
+{
-+ PRINTF ("%s:%d: FPGA PROGRAM %s", __FUNCTION__, __LINE__,
++ PRINTF ("%s:%d: FPGA PROGRAM %s", __FUNCTION__, __LINE__,
+ assert?"high":"low");
+ GPIO_WRITE( FPGA_PROGRAM, !assert);
+ return assert;
@@ -356,7 +366,7 @@
+int
+fpga_clk_fn (int assert_clk, int flush, int cookie)
+{
-+ PRINTF ("%s:%d: FPGA CLOCK %s", __FUNCTION__, __LINE__,
++ PRINTF ("%s:%d: FPGA CLOCK %s", __FUNCTION__, __LINE__,
+ assert_clk?"high":"low");
+ GPIO_WRITE( FPGA_CLOCK, assert_clk);
+ return assert_clk;
@@ -395,8 +405,10 @@
+}
+
+#endif /* CONFIG_FPGA */
---- ref/u-boot/board/armadeus/apf9328/fpga.h 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot/board/armadeus/apf9328/fpga.h 2008-11-14 00:48:19.000000000 +0100
+Index: u-boot-2010.03/board/armadeus/apf9328/fpga.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ u-boot-2010.03/board/armadeus/apf9328/fpga.h 2011-01-05 18:05:23.000000000 +0100
@@ -0,0 +1,30 @@
+/*
+ * (C) Copyright 2002
@@ -428,8 +440,10 @@
+extern int fpga_done_fn (int cookie);
+extern int fpga_clk_fn (int assert_clk, int flush, int cookie);
+extern int fpga_wr_fn (int assert_write, int flush, int cookie);
---- ref/u-boot/board/armadeus/apf9328/i2c.c 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot/board/armadeus/apf9328/i2c.c 2008-11-14 00:48:19.000000000 +0100
+Index: u-boot-2010.03/board/armadeus/apf9328/i2c.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ u-boot-2010.03/board/armadeus/apf9328/i2c.c 2011-01-05 18:05:41.000000000 +0100
@@ -0,0 +1,305 @@
+/*
+ * Eric Jarrige <jo...@us...>
@@ -595,7 +609,7 @@
+ tmpIC = i;
+ }
+ }
-+
++
+ IFDR = tmpIC;
+ IADR = slaveaddr << 1;
+
@@ -736,8 +750,10 @@
+}
+
+#endif /* CONFIG_HARD_I2C */
---- ref/u-boot/board/armadeus/apf9328/lowlevel_init.S 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot/board/armadeus/apf9328/lowlevel_init.S 2008-11-14 00:48:19.000000000 +0100
+Index: u-boot-2010.03/board/armadeus/apf9328/lowlevel_init.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ u-boot-2010.03/board/armadeus/apf9328/lowlevel_init.S 2011-01-05 18:07:06.000000000 +0100
@@ -0,0 +1,443 @@
+/*
+ * Copyright (C) 2004 Sascha Hauer, Synertronixx GmbH
@@ -858,7 +874,7 @@
+ ORR r0,r0,#0xC0000000
+ MCR p15,0,r0,c1,c0,0
+
-+/* ldr r0, =GPR(0)
++/* ldr r0, =GPR(0)
+ ldr r1, =CONFIG_SYS_GPR_A_VAL
+ str r1, [r0]
+*/
@@ -1177,13 +1193,15 @@
+ ldr r1, =CONFIG_SYS_SDRAM_1_BASE+CONFIG_SYS_SDRAM_MODE_REGISTER_VAL
+ str r2, [r1]
+
-+ ldr r1, =CONFIG_SYS_NORMAL_RW_CMD
++ ldr r1, =CONFIG_SYS_NORMAL_RW_CMD
+ str r1, [r0]
+
+endofmemsetup:
+ mov pc,r10
---- ref/u-boot/board/armadeus/apf9328/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot/board/armadeus/apf9328/Makefile 2008-11-14 00:48:19.000000000 +0100
+Index: u-boot-2010.03/board/armadeus/apf9328/Makefile
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ u-boot-2010.03/board/armadeus/apf9328/Makefile 2011-01-05 18:05:23.000000000 +0100
@@ -0,0 +1,50 @@
+#
+# (C) Copyright 2000-2004
@@ -1235,8 +1253,10 @@
+sinclude $(obj).depend
+
+#########################################################################
---- ref/u-boot/board/armadeus/apf9328/u-boot.lds 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot/board/armadeus/apf9328/u-boot.lds 2008-11-14 00:48:19.000000000 +0100
+Index: u-boot-2010.03/board/armadeus/apf9328/u-boot.lds
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ u-boot-2010.03/board/armadeus/apf9328/u-boot.lds 2011-01-05 18:05:23.000000000 +0100
@@ -0,0 +1,56 @@
+/*
+ * (C) Copyright 2000-2004
diff --git a/buildroot/target/u-boot/u-boot-2010.03-111-apf9328-DM9000.patch b/buildroot/target/u-boot/u-boot-2010.03-111-apf9328-DM9000.patch
index eaa1f89..6537979 100644
--- a/buildroot/target/u-boot/u-boot-2010.03-111-apf9328-DM9000.patch
+++ b/buildroot/target/u-boot/u-boot-2010.03-111-apf9328-DM9000.patch
@@ -1,6 +1,8 @@
---- u-boot-2010.03-rc1/drivers/net/dm9000x.c 2010-03-12 23:06:04.000000000 +0100
-+++ u-boot-2010.03-rc1.new/drivers/net/dm9000x.c 2010-03-23 01:24:07.000000000 +0100
-@@ -232,7 +232,7 @@ dm9000_probe(void)
+Index: u-boot-2010.03/drivers/net/dm9000x.c
+===================================================================
+--- u-boot-2010.03.orig/drivers/net/dm9000x.c 2011-01-05 18:05:14.000000000 +0100
++++ u-boot-2010.03/drivers/net/dm9000x.c 2011-01-05 18:07:13.000000000 +0100
+@@ -232,7 +232,7 @@
id_val |= DM9000_ior(DM9000_PIDL) << 16;
id_val |= DM9000_ior(DM9000_PIDH) << 24;
if (id_val == DM9000_ID) {
@@ -9,7 +11,7 @@
id_val);
return 0;
} else {
-@@ -298,19 +298,19 @@ static int dm9000_init(struct eth_device
+@@ -298,19 +298,19 @@
switch (io_mode) {
case 0x0: /* 16-bit mode */
@@ -32,8 +34,10 @@
db->outblk = dm9000_outblk_8bit;
db->inblk = dm9000_inblk_8bit;
db->rx_status = dm9000_rx_status_8bit;
---- u-boot-2010.03-rc2/board/armadeus/apf9328/eeprom.c 2010-03-28 23:41:17.000000000 +0200
-+++ u-boot-2010.03-rc2/board/armadeus/apf9328/eeprom.c 2010-03-28 23:39:04.000000000 +0200
+Index: u-boot-2010.03/board/armadeus/apf9328/eeprom.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ u-boot-2010.03/board/armadeus/apf9328/eeprom.c 2011-01-05 18:07:13.000000000 +0100
@@ -0,0 +1,85 @@
+/*
+ * (C) Copyright 2007
@@ -120,9 +124,11 @@
+ "\t\t\t03-07 : DM9000 Configuration\n"
+ "\t\t\t08-63 : User data"
+);
---- u-boot-2010.03-rc2/board/armadeus/apf9328/Makefile 2010-03-28 17:56:25.000000000 +0200
-+++ u-boot-2010.03-rc2/board/armadeus/apf9328/Makefile 2010-03-28 23:45:48.000000000 +0200
-@@ -25,7 +25,7 @@ include $(TOPDIR)/config.mk
+Index: u-boot-2010.03/board/armadeus/apf9328/Makefile
+===================================================================
+--- u-boot-2010.03.orig/board/armadeus/apf9328/Makefile 2011-01-05 18:05:23.000000000 +0100
++++ u-boot-2010.03/board/armadeus/apf9328/Makefile 2011-01-05 18:07:13.000000000 +0100
+@@ -25,7 +25,7 @@
LIB = $(obj)lib$(BOARD).a
diff --git a/buildroot/target/u-boot/u-boot-2010.03-112-apf9328-makefile.patch b/buildroot/target/u-boot/u-boot-2010.03-112-apf9328-makefile.patch
index f8ea0dc..72cde6c 100644
--- a/buildroot/target/u-boot/u-boot-2010.03-112-apf9328-makefile.patch
+++ b/buildroot/target/u-boot/u-boot-2010.03-112-apf9328-makefile.patch
@@ -1,6 +1,8 @@
---- u-boot-2010.03-rc1.ori/MAKEALL 2010-03-12 23:06:04.000000000 +0100
-+++ u-boot-2010.03-rc1/MAKEALL 2010-03-23 01:33:00.000000000 +0100
-@@ -543,6 +543,7 @@ LIST_ARM7=" \
+Index: u-boot-2010.03/MAKEALL
+===================================================================
+--- u-boot-2010.03.orig/MAKEALL 2011-01-05 18:05:14.000000000 +0100
++++ u-boot-2010.03/MAKEALL 2011-01-05 18:07:22.000000000 +0100
+@@ -542,6 +542,7 @@
LIST_ARM9=" \
a320evb \
@@ -8,9 +10,11 @@
ap920t \
ap922_XA10 \
ap926ejs \
---- u-boot-2010.03-rc1.ori/Makefile 2010-03-12 23:06:04.000000000 +0100
-+++ u-boot-2010.03-rc1/Makefile 2010-03-23 01:26:08.000000000 +0100
-@@ -2689,6 +2689,9 @@ a320evb_config : unconfig
+Index: u-boot-2010.03/Makefile
+===================================================================
+--- u-boot-2010.03.orig/Makefile 2011-01-05 18:05:14.000000000 +0100
++++ u-boot-2010.03/Makefile 2011-01-05 18:07:22.000000000 +0100
+@@ -2686,6 +2686,9 @@
## Atmel AT91RM9200 Systems
#########################################################################
diff --git a/buildroot/target/u-boot/u-boot-2010.03-120-apf9328-tools.patch b/buildroot/target/u-boot/u-boot-2010.03-120-apf9328-tools.patch
index aa20e9c..916137a 100644
--- a/buildroot/target/u-boot/u-boot-2010.03-120-apf9328-tools.patch
+++ b/buildroot/target/u-boot/u-boot-2010.03-120-apf9328-tools.patch
@@ -1,6 +1,8 @@
---- u-boot-2010.03-rc1.ori/Makefile 2010-03-23 01:41:38.000000000 +0100
-+++ u-boot-2010.03-rc1/Makefile 2010-03-23 01:43:29.000000000 +0100
-@@ -285,6 +285,9 @@ ONENAND_IPL = onenand_ipl
+Index: u-boot-2010.03/Makefile
+===================================================================
+--- u-boot-2010.03.orig/Makefile 2011-01-05 18:07:22.000000000 +0100
++++ u-boot-2010.03/Makefile 2011-01-05 18:07:33.000000000 +0100
+@@ -285,6 +285,9 @@
U_BOOT_ONENAND = $(obj)u-boot-onenand.bin
ONENAND_BIN ?= $(obj)onenand_ipl/onenand-ipl-2k.bin
endif
@@ -10,7 +12,7 @@
__OBJS := $(subst $(obj),,$(OBJS))
__LIBS := $(subst $(obj),,$(LIBS)) $(subst $(obj),,$(LIBBOARD))
-@@ -334,6 +337,9 @@ $(obj)u-boot.kwb: $(obj)u-boot.bin
+@@ -334,6 +337,9 @@
$(obj)u-boot.sha1: $(obj)u-boot.bin
$(obj)tools/ubsha1 $(obj)u-boot.bin
@@ -20,7 +22,7 @@
$(obj)u-boot.dis: $(obj)u-boot
$(OBJDUMP) -d $< > $@
-@@ -3774,6 +3780,7 @@ clean:
+@@ -3771,6 +3777,7 @@
clobber: clean
@find $(OBJTREE) -type f \( -name .depend \
-o -name '*.srec' -o -name '*.bin' -o -name u-boot.img \) \
@@ -28,8 +30,10 @@
-print0 \
| xargs -0 rm -f
@rm -f $(OBJS) $(obj)*.bak $(obj)ctags $(obj)etags $(obj)TAGS \
---- u-boot-1.3.4.ref/tools/breclib.c 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot-1.3.4/tools/breclib.c 2008-09-13 16:28:09.000000000 +0200
+Index: u-boot-2010.03/tools/breclib.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ u-boot-2010.03/tools/breclib.c 2011-01-05 18:08:03.000000000 +0100
@@ -0,0 +1,79 @@
+/*
+ * (C) Copyright 2005
@@ -93,7 +97,7 @@
+ char *dst_ptr = buff;
+ unsigned char *src_ptr = a_mem;
+
-+
++
+
+ if (i > 31) {
+ fprintf(stderr, "cannot write more than 31 bytes at once in a bootstrap record\n");
@@ -110,8 +114,10 @@
+ sprintf(a_brecord, "%08lX%02X", a_addr, BS_EXEC());
+ return 0;
+}
---- u-boot-1.3.4.ref/tools/breclib.h 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot-1.3.4/tools/breclib.h 2008-09-13 16:28:09.000000000 +0200
+Index: u-boot-2010.03/tools/breclib.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ u-boot-2010.03/tools/breclib.h 2011-01-05 18:07:33.000000000 +0100
@@ -0,0 +1,27 @@
+/*
+ * (C) Copyright 2005
@@ -140,9 +146,11 @@
+int build_brec_long_write_req(char *a_brecord, long a_addr, long a_value);
+int build_brec_mem_write_req(char *a_brecord, long a_addr, void *a_mem, int a_size);
+int build_brec_exe_req(char *a_brecord, long a_addr);
---- u-boot-2010.03-rc1.ori/tools/Makefile 2010-03-12 23:06:04.000000000 +0100
-+++ u-boot-2010.03-rc1/tools/Makefile 2010-03-23 01:57:30.000000000 +0100
-@@ -119,6 +119,12 @@ ifeq ($(VENDOR),ronetix)
+Index: u-boot-2010.03/tools/Makefile
+===================================================================
+--- u-boot-2010.03.orig/tools/Makefile 2011-01-05 18:05:14.000000000 +0100
++++ u-boot-2010.03/tools/Makefile 2011-01-05 18:08:17.000000000 +0100
+@@ -119,6 +119,12 @@
LOGO_BMP= logos/ronetix.bmp
endif
@@ -155,18 +163,20 @@
# now $(obj) is defined
HOSTSRCS += $(addprefix $(SRCTREE)/,$(EXT_OBJ_FILES-y:.o=.c))
HOSTSRCS += $(addprefix $(SRCTREE)/tools/,$(OBJ_FILES-y:.o=.c))
-@@ -152,6 +158,9 @@ $(obj)bmp_logo$(SFX): $(obj)bmp_logo.o
+@@ -152,6 +158,9 @@
$(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $^
$(HOSTSTRIP) $@
-+$(obj)mkbrecimage$(SFX): $(obj)mkbrecimage.o $(obj)breclib.o
++$(obj)mkbrecimage$(SFX): $(obj)mkbrecimage.o $(obj)breclib.o
+ $(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $^
+
$(obj)envcrc$(SFX): $(obj)crc32.o $(obj)env_embedded.o $(obj)envcrc.o $(obj)sha1.o
$(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $^
---- u-boot-1.3.4.ref/tools/mkbrecimage.c 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot-1.3.4/tools/mkbrecimage.c 2008-09-13 16:28:09.000000000 +0200
+Index: u-boot-2010.03/tools/mkbrecimage.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ u-boot-2010.03/tools/mkbrecimage.c 2011-01-05 18:07:53.000000000 +0100
@@ -0,0 +1,216 @@
+/*
+ * (C) Copyright 2005
@@ -333,7 +343,7 @@
+ dest_addr += byte_read;
+ byte_read =fread(a_in_buf, 1, 16, a_uboot_fd);
+
-+ }
++ }
+
+ return 0;
+}
@@ -357,7 +367,7 @@
+ the_prog_name, argv[1], strerror(errno));
+ exit (EXIT_FAILURE);
+ }
-+
++
+ out_fd = fopen(argv[2], "w");
+ if (out_fd == NULL) {
+ fprintf (stderr, "%s: Can't open output file %s: %s\n",
diff --git a/buildroot/target/u-boot/u-boot-2010.03-140-ds1374.patch b/buildroot/target/u-boot/u-boot-2010.03-140-ds1374.patch
index 4be4b0f..206db57 100644
--- a/buildroot/target/u-boot/u-boot-2010.03-140-ds1374.patch
+++ b/buildroot/target/u-boot/u-boot-2010.03-140-ds1374.patch
@@ -1,6 +1,8 @@
---- u-boot-2010.03-rc1.ori/drivers/rtc/ds1374.c 2010-03-12 23:06:04.000000000 +0100
-+++ u-boot-2010.03-rc1/drivers/rtc/ds1374.c 2010-03-23 02:14:44.000000000 +0100
-@@ -113,6 +113,11 @@ int rtc_get (struct rtc_time *tm){
+Index: u-boot-2010.03/drivers/rtc/ds1374.c
+===================================================================
+--- u-boot-2010.03.orig/drivers/rtc/ds1374.c 2011-01-05 18:05:14.000000000 +0100
++++ u-boot-2010.03/drivers/rtc/ds1374.c 2011-01-05 18:08:28.000000000 +0100
+@@ -113,6 +113,11 @@
unsigned int limit;
unsigned char tmp;
unsigned int i;
@@ -12,7 +14,7 @@
/*
* Since the reads are being performed one byte at a time,
-@@ -154,6 +159,9 @@ int rtc_get (struct rtc_time *tm){
+@@ -154,6 +159,9 @@
tm->tm_year, tm->tm_mon, tm->tm_mday, tm->tm_wday,
tm->tm_hour, tm->tm_min, tm->tm_sec);
@@ -22,7 +24,7 @@
return rel;
}
-@@ -164,6 +172,11 @@ int rtc_set (struct rtc_time *tmp){
+@@ -164,6 +172,11 @@
unsigned long time;
unsigned i;
@@ -34,7 +36,7 @@
DEBUGR ("Set DATE: %4d-%02d-%02d (wday=%d) TIME: %2d:%02d:%02d\n",
tmp->tm_year, tmp->tm_mon, tmp->tm_mday, tmp->tm_wday,
-@@ -187,6 +200,9 @@ int rtc_set (struct rtc_time *tmp){
+@@ -187,6 +200,9 @@
/* Start clock */
rtc_write(RTC_CTL_ADDR, RTC_CTL_BIT_EN_OSC, FALSE);
@@ -44,7 +46,7 @@
return 0;
}
-@@ -200,6 +216,11 @@ int rtc_set (struct rtc_time *tmp){
+@@ -200,6 +216,11 @@
void rtc_reset (void){
struct rtc_time tmp;
@@ -56,7 +58,7 @@
/* clear status flags */
rtc_write (RTC_SR_ADDR, (RTC_SR_BIT_AF|RTC_SR_BIT_OSF), FALSE); /* clearing OSF and AF */
-@@ -232,6 +253,9 @@ void rtc_reset (void){
+@@ -232,6 +253,9 @@
rtc_write(RTC_WD_ALM_CNT_BYTE2_ADDR,0xAC, TRUE);
rtc_write(RTC_WD_ALM_CNT_BYTE1_ADDR,0xDE, TRUE);
rtc_write(RTC_WD_ALM_CNT_BYTE2_ADDR,0xAD, TRUE);
diff --git a/buildroot/target/u-boot/u-boot-2010.03-150-apf9328-fixes_gcc_4_4_EABI_linking_issues.patch b/buildroot/target/u-boot/u-boot-2010.03-150-apf9328-fixes_gcc_4_4_EABI_linking_issues.patch
index aa3119e..e033ef8 100644
--- a/buildroot/target/u-boot/u-boot-2010.03-150-apf9328-fixes_gcc_4_4_EABI_linking_issues.patch
+++ b/buildroot/target/u-boot/u-boot-2010.03-150-apf9328-fixes_gcc_4_4_EABI_linking_issues.patch
@@ -14,9 +14,11 @@ xxx/buildroot/output/build/staging_dir/usr/bin-ccache/../lib/gcc/arm-linux-uclib
Signed-off-by: Julien Boibessot <jul...@ar...>
---- u-boot-1.3.4/board/armadeus/apf9328/apf9328.c 2010-03-22 00:41:51.000000000 +0100
-+++ u-boot-1.3.4.new/board/armadeus/apf9328/apf9328.c 2010-03-22 00:31:05.000000000 +0100
-@@ -99,3 +99,12 @@ show_boot_progress (int status)
+Index: u-boot-2010.03/board/armadeus/apf9328/apf9328.c
+===================================================================
+--- u-boot-2010.03.orig/board/armadeus/apf9328/apf9328.c 2011-01-05 18:06:50.000000000 +0100
++++ u-boot-2010.03/board/armadeus/apf9328/apf9328.c 2011-01-05 18:08:34.000000000 +0100
+@@ -99,3 +99,12 @@
{
return;
}
@@ -29,17 +31,21 @@ Signed-off-by: Julien Boibessot <jul...@ar...>
+#endif
+
+void abort() {}
---- u-boot-2010.03-rc1/board/armadeus/apf9328/config.mk 2010-03-28 00:59:04.000000000 +0100
-+++ u-boot-2010.03-rc1/board/armadeus/apf9328/config.mk 2010-03-28 01:16:28.000000000 +0100
+Index: u-boot-2010.03/board/armadeus/apf9328/config.mk
+===================================================================
+--- u-boot-2010.03.orig/board/armadeus/apf9328/config.mk 2011-01-05 18:05:23.000000000 +0100
++++ u-boot-2010.03/board/armadeus/apf9328/config.mk 2011-01-05 18:08:34.000000000 +0100
@@ -8,3 +8,5 @@
#
TEXT_BASE = 0x0BF80000
+
+LDSCRIPT := $(SRCTREE)/board/$(BOARDDIR)/u-boot.lds
---- u-boot-1.3.4/board/armadeus/apf9328/u-boot.lds 2010-03-22 00:41:51.000000000 +0100
-+++ u-boot-1.3.4.new/board/armadeus/apf9328/u-boot.lds 2010-03-22 00:34:06.000000000 +0100
-@@ -38,6 +38,10 @@ SECTIONS
+Index: u-boot-2010.03/board/armadeus/apf9328/u-boot.lds
+===================================================================
+--- u-boot-2010.03.orig/board/armadeus/apf9328/u-boot.lds 2011-01-05 18:05:23.000000000 +0100
++++ u-boot-2010.03/board/armadeus/apf9328/u-boot.lds 2011-01-05 18:08:34.000000000 +0100
+@@ -38,6 +38,10 @@
. = ALIGN(4);
.rodata : { *(.rodata) }
@@ -50,9 +56,11 @@ Signed-off-by: Julien Boibessot <jul...@ar...>
. = ALIGN(4);
.data : { *(.data) }
---- u-boot-2010.03-rc1/Makefile 2010-03-27 19:49:15.000000000 +0100
-+++ u-boot-2010.03-rc1/Makefile 2010-03-27 19:47:05.000000000 +0100
-@@ -262,7 +262,7 @@ else
+Index: u-boot-2010.03/Makefile
+===================================================================
+--- u-boot-2010.03.orig/Makefile 2011-01-05 18:07:33.000000000 +0100
++++ u-boot-2010.03/Makefile 2011-01-05 18:08:34.000000000 +0100
+@@ -262,7 +262,7 @@
PLATFORM_LIBGCC = -L $(USE_PRIVATE_LIBGCC) -lgcc
endif
else
diff --git a/buildroot/target/u-boot/u-boot-2010.03-300-imx27.patch b/buildroot/target/u-boot/u-boot-2010.03-300-imx27.patch
index f7339ce..e0b9556 100755
--- a/buildroot/target/u-boot/u-boot-2010.03-300-imx27.patch
+++ b/buildroot/target/u-boot/u-boot-2010.03-300-imx27.patch
@@ -1,5 +1,7 @@
---- u-boot-2010.03-rc2/cpu/arm926ejs/mx27/cmd_imxfuse.c 2010-04-02 14:52:13.000000000 +0200
-+++ u-boot-2010.03-rc2/cpu/arm926ejs/mx27/cmd_imxfuse.c 2010-04-02 14:50:11.000000000 +0200
+Index: u-boot-2010.03/cpu/arm926ejs/mx27/cmd_imxfuse.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ u-boot-2010.03/cpu/arm926ejs/mx27/cmd_imxfuse.c 2011-01-05 18:08:44.000000000 +0100
@@ -0,0 +1,331 @@
+/*
+ * cmd_imxfuse-c Interface to iMX IC Identification Module
@@ -48,7 +50,7 @@
+
+/*
+ * The action should be either:
-+ * POLL_FUSE_PRGD
++ * POLL_FUSE_PRGD
+ * or:
+ * POLL_FUSE_SNSD
+ */
@@ -99,7 +101,7 @@
+ struct iim_regs *iim = (struct iim_regs *)IMX_IIM_BASE;
+
+ imx_fuse_op_start();
-+
++
+ /* Enable IIM Program Protect */
+ writel(0x0,&iim->iim_prog_p);
+
@@ -122,7 +124,7 @@
+ printf("%s(bank: %d, row: %d, bit: %d failed\n",
+ __FUNCTION__, bank, row, bit);
+ }
-+
++
+ printf("fuses at (bank:%d, row:%d) = 0x%x\n",
+ bank, row, readl(&iim->iim_sdat));
+ return 0;
@@ -211,7 +213,7 @@
+
+ if (uninitialized) {
+ ret = 0;
-+ for(i=0;i<6;i++) {
++ for(i=0;i<6;i++) {
+ ret |= imx_fuse_blow_byte(0, (IIM0_MAC+i), pmac[6 - 1 -i]);
+ }
+ }
@@ -236,18 +238,18 @@
+ row = simple_strtoul(argv[3], NULL, 16);
+
+ printf("Sense read fuse at bank:%d row:%d\n", bank, row);
-+ ret = imx_sense_fuse(bank, row, 0);
++ ret = imx_sense_fuse(bank, row, 0);
+ }else if ((!strcmp(argv[1], "read"))&&((argc == 4))) {
+ bank = simple_strtoul(argv[2], NULL, 16);
+ row = simple_strtoul(argv[3], NULL, 16);
+
+ printf("Shadow read fuse at bank:%d row:%d\n", bank, row);
-+ ret = imx_read_shadow_fuse(bank, row, 0);
++ ret = imx_read_shadow_fuse(bank, row, 0);
+ }else if ((!strcmp(argv[1], "blow"))&&(argc == 5)) {
+ bank = simple_strtoul(argv[2], NULL, 16);
+ row = simple_strtoul(argv[3], NULL, 16);
+ value = simple_strtoul(argv[4], NULL, 16);
-+
++
+ printf("Blowing fuse at bank:%d row:%d value:%d\n",
+ bank, row, value);
+ for (i = 0; i < 8; i++) {
@@ -332,8 +334,10 @@
+ "imxfuse scc_key - read iMX SCC_KEY\n");
+
+#endif /* CONFIG_CMD_IMX_FUSE */
---- ref/u-boot-1.3.4/cpu/arm926ejs/mx27/i2c.c 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot-1.3.4/cpu/arm926ejs/mx27/i2c.c 2008-12-29 16:27:49.000000000 +0100
+Index: u-boot-2010.03/cpu/arm926ejs/mx27/i2c.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ u-boot-2010.03/cpu/arm926ejs/mx27/i2c.c 2011-01-05 18:08:44.000000000 +0100
@@ -0,0 +1,407 @@
+/*
+ * Eric Jarrige <jo...@us...>
@@ -503,7 +507,7 @@
+ imx_gpio_mode (PD18_PF_I2C_CLK);
+ PCCR0 |= PCCR0_I2C1_EN; /*enable I2C2 clock*/
+
-+
++
+ for(i = 0; i < CONFIG_I2C_MULTI_BUS; i++){
+
+ i2c_set_bus_num(i);
@@ -742,8 +746,10 @@
+}
+
+#endif /* CONFIG_HARD_I2C */
---- ref/u-boot-1.3.4/cpu/arm926ejs/mx27/i2c.h 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot-1.3.4/cpu/arm926ejs/mx27/i2c.h 2008-12-29 16:27:49.000000000 +0100
+Index: u-boot-2010.03/cpu/arm926ejs/mx27/i2c.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ u-boot-2010.03/cpu/arm926ejs/mx27/i2c.h 2011-01-05 18:08:44.000000000 +0100
@@ -0,0 +1,59 @@
+/*
+ * Eric Jarrige <jo...@us...>
@@ -804,9 +810,11 @@
+
+
+#endif /* _i2c_h_ */
---- u-boot-2010.03-rc2/cpu/arm926ejs/mx27/Makefile.ori 2010-03-22 23:25:00.000000000 +0100
-+++ u-boot-2010.03-rc2/cpu/arm926ejs/mx27/Makefile 2010-04-02 12:06:18.000000000 +0200
-@@ -24,7 +24,7 @@ include $(TOPDIR)/config.mk
+Index: u-boot-2010.03/cpu/arm926ejs/mx27/Makefile
+===================================================================
+--- u-boot-2010.03.orig/cpu/arm926ejs/mx27/Makefile 2011-01-05 18:05:13.000000000 +0100
++++ u-boot-2010.03/cpu/arm926ejs/mx27/Makefile 2011-01-05 18:08:44.000000000 +0100
+@@ -24,7 +24,7 @@
LIB = $(obj)lib$(SOC).a
@@ -815,9 +823,11 @@
SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS))
---- u-boot-2010.03/cpu/arm926ejs/mx27/generic.c.ori 2010-03-31 23:54:39.000000000 +0200
-+++ u-boot-2010.03/cpu/arm926ejs/mx27/generic.c 2010-04-07 00:44:25.000000000 +0200
-@@ -153,12 +153,80 @@ ulong imx_get_perclk4(void)
+Index: u-boot-2010.03/cpu/arm926ejs/mx27/generic.c
+===================================================================
+--- u-boot-2010.03.orig/cpu/arm926ejs/mx27/generic.c 2011-01-05 18:05:13.000000000 +0100
++++ u-boot-2010.03/cpu/arm926ejs/mx27/generic.c 2011-01-05 18:08:44.000000000 +0100
+@@ -153,12 +153,80 @@
}
#if defined(CONFIG_DISPLAY_CPUINFO)
@@ -898,9 +908,11 @@
return 0;
}
#endif
---- u-boot-2010.03-rc2/include/asm-arm/arch-mx27/imx-regs.h.ori 2010-04-02 17:12:43.000000000 +0200
-+++ u-boot-2010.03-rc2/include/asm-arm/arch-mx27/imx-regs.h 2010-04-02 17:10:06.000000000 +0200
-@@ -516,4 +516,220 @@ struct iim_regs {
+Index: u-boot-2010.03/include/asm-arm/arch-mx27/imx-regs.h
+===================================================================
+--- u-boot-2010.03.orig/include/asm-arm/arch-mx27/imx-regs.h 2011-01-05 18:05:13.000000000 +0100
++++ u-boot-2010.03/include/asm-arm/arch-mx27/imx-regs.h 2011-01-05 18:08:44.000000000 +0100
+@@ -516,4 +516,220 @@
#define IIM0_SCC_KEY 11
#define IIM1_SUID 1
@@ -1020,9 +1032,9 @@
+ * Memory areas of the NFC
+ */
+#define IMX_NFC_BASE (0xD8000000)
-+#define IMX_NFC_MAIN_AREA0 (0xD8000000)
-+#define IMX_NFC_MAIN_AREA1 (0xD8000200)
-+#define IMX_NFC_SPARE_AREA0 (0xD8000800)
++#define IMX_NFC_MAIN_AREA0 (0xD8000000)
++#define IMX_NFC_MAIN_AREA1 (0xD8000200)
++#define IMX_NFC_SPARE_AREA0 (0xD8000800)
+#define IMX_NFC_REGS (0xD8000E00)
+
+/*
diff --git a/buildroot/target/u-boot/u-boot-2010.03-301-nand.patch b/buildroot/target/u-boot/u-boot-2010.03-301-nand.patch
index 6d43fce..8899e22 100755
--- a/buildroot/target/u-boot/u-boot-2010.03-301-nand.patch
+++ b/buildroot/target/u-boot/u-boot-2010.03-301-nand.patch
@@ -1,6 +1,8 @@
---- ref/u-boot-1.3.4/common/cmd_nand.c 2008-08-12 16:08:38.000000000 +0200
-+++ u-boot-1.3.4/common/cmd_nand.c 2009-01-12 14:15:21.000000000 +0100
-@@ -80,6 +80,53 @@ static int nand_dump(nand_info_t *nand,
+Index: u-boot-2010.03/common/cmd_nand.c
+===================================================================
+--- u-boot-2010.03.orig/common/cmd_nand.c 2011-01-05 18:05:13.000000000 +0100
++++ u-boot-2010.03/common/cmd_nand.c 2011-01-05 18:09:36.000000000 +0100
+@@ -79,6 +79,53 @@
return 0;
}
@@ -9,7 +11,7 @@
+ int tempEcc, i, mask;
+ u_char *buf, *p;
+ struct nand_chip *nand_chip = nand->priv;
-+
++
+ buf = malloc(nand->oobavail + nand->oobsize);
+
+ if (!buf) {
@@ -23,7 +25,7 @@
+ else
+ mask = 0x000001ff;
+
-+ buf[off & mask] = (u_char)value; //modify buf
++ buf[off & mask] = (u_char)value; //modify buf
+
+ i = nand->oobavail >> 4; p = buf;
+ while (i--) {
@@ -40,11 +42,11 @@
+ p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7]);
+ p += 8;
+ }
-+
++
+ tempEcc = nand_chip->ecc.mode;
+ nand_chip->ecc.mode = NAND_ECC_NONE; //swith to ECC_NONE
+ nand->write_ecc( nand, off & ~mask, nand->oobavail, &i, buf, NULL, NULL);
-+ nand_chip->ecc.mode = tempEcc; //swith to old value
++ nand_chip->ecc.mode = tempEcc; //swith to old value
+
+ free(buf);
+*/
@@ -54,7 +56,7 @@
/* ------------------------------------------------------------------------- */
static inline int str2long(char *p, ulong *num)
-@@ -294,7 +341,6 @@ int do_nand(cmd_tbl_t * cmdtp, int flag,
+@@ -343,7 +390,6 @@
if (strncmp(cmd, "dump", 4) == 0) {
if (argc < 3)
goto usage;
@@ -62,9 +64,9 @@
s = strchr(cmd, '.');
off = (int)simple_strtoul(argv[2], NULL, 16);
-@@ -382,7 +428,18 @@ int do_nand(cmd_tbl_t * cmdtp, int flag,
- return 1;
+@@ -428,7 +474,18 @@
}
+
if (strcmp(cmd, "biterr") == 0) {
- /* todo */
+ if (argc != 4)
@@ -72,7 +74,7 @@
+
+ off = (int)simple_strtoul(argv[2], NULL, 16);
+ i = (int)simple_strtoul(argv[3], NULL, 16);
-+
++
+
+ nand_biterr(nand, off, i);
+/* tempEcc = nand_chip->eccmode;
@@ -82,7 +84,7 @@
return 1;
}
-@@ -471,7 +528,7 @@ U_BOOT_CMD(nand, 5, 1, do_nand,
+@@ -489,7 +546,7 @@
"nand dump[.oob] off - dump page\n"
"nand scrub - really clean NAND erasing bad blocks (UNSAFE)\n"
"nand markbad off [...] - mark bad block(s) at offset (UNSAFE)\n"
@@ -91,7 +93,7 @@
#ifdef CONFIG_CMD_NAND_LOCK_UNLOCK
"\n"
"nand lock [tight] [status]\n"
-@@ -519,8 +576,8 @@ static int nand_load_image(cmd_tbl_t *cm
+@@ -533,8 +590,8 @@
hdr = (image_header_t *)addr;
show_boot_progress (57);
@@ -102,35 +104,36 @@
cnt = image_get_image_size (hdr);
break;
#if defined(CONFIG_FIT)
---- ref/u-boot-1.3.4/drivers/mtd/nand/nand_bbt.c 2008-08-12 16:08:38.000000000 +0200
-+++ u-boot-1.3.4/drivers/mtd/nand/nand_bbt.c 2009-01-12 14:15:21.000000000 +0100
-@@ -159,9 +159,9 @@ static int read_bbt (struct mtd_info *mt
+Index: u-boot-2010.03/drivers/mtd/nand/nand_bbt.c
+===================================================================
+--- u-boot-2010.03.orig/drivers/mtd/nand/nand_bbt.c 2011-01-05 18:05:13.000000000 +0100
++++ u-boot-2010.03/drivers/mtd/nand/nand_bbt.c 2011-01-05 18:08:52.000000000 +0100
+@@ -192,9 +192,9 @@
}
/* Leave it for now, if its matured we can move this
* message to MTD_DEBUG_LEVEL0 */
- printk(KERN_DEBUG "nand_read_bbt: Bad block at 0x%012llx\n",
-- (loff_t)((offs << 2) + (act >> 1)) <<
-- this->bbt_erase_shift);
+ /*printk(KERN_DEBUG "nand_read_bbt: Bad block at 0x%012llx\n",
-+ (loff_t)((offs << 2) + (act >> 1)) <<
+ (loff_t)((offs << 2) + (act >> 1)) <<
+- this->bbt_erase_shift);
+ this->bbt_erase_shift);*/
/* Factory marked bad or worn out ? */
if (tmp == 0)
this->bbt[offs + (act >> 3)] |= 0x3 << (act & 0x06);
-@@ -375,7 +375,7 @@ static int search_bbt (struct mtd_info *
+@@ -529,7 +529,7 @@
if (td->pages[i] == -1)
printk(KERN_WARNING "Bad block table not found for chip %d\n", i);
else
- printk(KERN_DEBUG "Bad block table found at page %d, version 0x%02X\n", td->pages[i],
-- td->version[i]);
+ MTDDEBUG(MTD_DEBUG_LEVEL1 "Bad block table found at page %d, version 0x%02X\n", td->pages[i],
-+ td->version[i]);
+ td->version[i]);
}
return 0;
- }
---- u-boot-2010.03/drivers/mtd/nand/mxc_nand.c.ori 2010-04-06 23:07:34.000000000 +0200
-+++ u-boot-2010.03/drivers/mtd/nand/mxc_nand.c 2010-04-07 00:18:50.000000000 +0200
-@@ -1110,6 +1110,58 @@ static int mxc_nand_verify_buf(struct mt
+Index: u-boot-2010.03/drivers/mtd/nand/mxc_nand.c
+===================================================================
+--- u-boot-2010.03.orig/drivers/mtd/nand/mxc_nand.c 2011-01-05 18:05:13.000000000 +0100
++++ u-boot-2010.03/drivers/mtd/nand/mxc_nand.c 2011-01-05 18:09:13.000000000 +0100
+@@ -1110,6 +1110,58 @@
return 0;
}
@@ -139,7 +142,7 @@
+ *
+ * @param mtd MTD structure for the NAND Flash
+ * @param buf data to be verified
-+ * @param ofs offset to the bad block
++ * @param ofs offset to the bad block
+ *
+ * @return -EFAULT if error else 0
+ *
@@ -165,7 +168,7 @@
+
+ /* fill oob with 0 to make it detecable by SPL */
+ memset((void*)buf,0, mtd->oobsize);
-+
++
+ /* Calculate pages in each block */
+ pages_per_block = 1 << (this->phys_erase_shift - this->page_shift);
+
@@ -177,7 +180,7 @@
+
+ for(i=0; i< pages_per_block;i++) {
+
-+ ret= mtd->write_oob (mtd, ofs , &this->ops);
++ ret= mtd->write_oob (mtd, ofs , &this->ops);
+ ofs += 1 << this->page_shift;
+ if (!ret)
+ mtd->ecc_stats.badblocks++;
@@ -189,7 +192,7 @@
/*
* This function is used by upper layer for select and
* deselect of the NAND chip
-@@ -1326,6 +1379,7 @@ int board_nand_init(struct nand_chip *th
+@@ -1326,6 +1378,7 @@
this->write_buf = mxc_nand_write_buf;
this->read_buf = mxc_nand_read_buf;
this->verify_buf = mxc_nand_verify_buf;
diff --git a/buildroot/target/u-boot/u-boot-2010.03-310-apf27.patch b/buildroot/target/u-boot/u-boot-2010.03-310-apf27.patch
index 283b389..fb47b4e 100755
--- a/buildroot/target/u-boot/u-boot-2010.03-310-apf27.patch
+++ b/buildroot/target/u-boot/u-boot-2010.03-310-apf27.patch
@@ -1,9 +1,11 @@
---- ref/u-boot-1.3.4/board/armadeus/apf27/apf27.c 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot-1.3.4/board/armadeus/apf27/apf27.c 2009-01-07 18:20:15.000000000 +0100
+Index: u-boot-2010.03/board/armadeus/apf27/apf27.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ u-boot-2010.03/board/armadeus/apf27/apf27.c 2011-01-05 18:09:44.000000000 +0100
@@ -0,0 +1,188 @@
+/*
-+ * Copyright (C) 2007 Sascha Hauer, Pengutronix
-+ * Copyright (C) 2008,2009 Eric Jarrige <jo...@us...>
++ * Copyright (C) 2007 Sascha Hauer, Pengutronix
++ * Copyright (C) 2008,2009 Eric Jarrige <jo...@us...>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
@@ -154,7 +156,7 @@
+ APF27_init_fpga (firmware_buffer, size);
+#endif
+
-+ /* detect compatibility issue of environment version */
++ /* detect compatibility issue of environment version */
+ s = getenv ("env_version");
+ if (( NULL == s ) || (0 != strcmp(s, CONFIG_ENV_VERSION))) {
+ printf("*** Warning - Environment version change suggests: "
@@ -163,7 +165,7 @@
+
+ /* Unlock whole flash but U-Boot */
+ s = getenv ("env_offset");
-+ offset = CONFIG_ENV_OFFSET;
++ offset = CONFIG_ENV_OFFSET;
+ if ((s != NULL) && (0 != strcmp(s, "0"))) {
+ offset = simple_strtoul(s, NULL, 16);
+ }
@@ -171,7 +173,7 @@
+ if (nand_unlock(&nand_info[0], offset, nand_info[0].size - offset)) {
+ printf("NAND flash lock/unlocked failed\n");
+ }
-+
++
+
+ return 0;
+}
@@ -189,8 +191,10 @@
+ printf("Armadeus APF2\n");
+ return 0;
+}
---- ref/u-boot-1.3.4/board/armadeus/apf27/config.mk 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot-1.3.4/board/armadeus/apf27/config.mk 2008-12-29 16:27:49.000000000 +0100
+Index: u-boot-2010.03/board/armadeus/apf27/config.mk
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ u-boot-2010.03/board/armadeus/apf27/config.mk 2011-01-05 18:09:44.000000000 +0100
@@ -0,0 +1,13 @@
+#
+# This config file is used for compilation of armadeus sources
@@ -205,278 +209,282 @@
+TEXT_BASE = 0xAFF00000
+endif
+CONFIG_NAND_U_BOOT = y
---- u-boot-2010.03-rc2/board/armadeus/apf27/fpga.c~ 2010-04-02 16:53:12.000000000 +0200
-+++ u-boot-2010.03-rc2/board/armadeus/apf27/fpga.c 2010-04-02 16:53:04.000000000 +0200
+Index: u-boot-2010.03/board/armadeus/apf27/fpga.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ u-boot-2010.03/board/armadeus/apf27/fpga.c 2011-01-05 18:09:44.000000000 +0100
@@ -0,0 +1,267 @@
-+ /*
-+ * (C) Copyright 2002-2008
-+ * Eric Jarrige <eri...@ar...>
-+ * Rich Ireland, Enterasys Networks, rir...@en....
-+ * Keith Outwater, kei...@mv....
-+ *
-+ * See file CREDITS for list of people who contributed to this
-+ * project.
-+ *
-+ * 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., 59 Temple Place, Suite 330, Boston,
-+ * MA 02111-1307 USA
-+ *
-+ */
-+ #include <common.h>
-+
-+ #if defined(CONFIG_FPGA)
-+
-+ #include <asm/arch/imx-regs.h>
-+ #include <asm/io.h>
-+ #include <command.h>
-+ #include <config.h>
-+ #include "fpga.h"
-+ #include <spartan3.h>
-+
-+ #define GPIO_PORT(x) ((x & GPIO_PORT_MASK) >> GPIO_PORT_SHIFT)
-+ #define GPIO_SET(x) writel(readl(&gpregs->port[GPIO_PORT(x)].dr) | (1 << (x & GPIO_PIN_MASK)), \
++/*
++ * (C) Copyright 2002-2008
++ * Eric Jarrige <eri...@ar...>
++ * Rich Ireland, Enterasys Networks, rir...@en....
++ * Keith Outwater, kei...@mv....
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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., 59 Temple Place, Suite 330, Boston,
++ * MA 02111-1307 USA
++ *
++ */
++#include <common.h>
++
++#if defined(CONFIG_FPGA)
++
++#include <asm/arch/imx-regs.h>
++#include <asm/io.h>
++#include <command.h>
++#include <config.h>
++#include "fpga.h"
++#include <spartan3.h>
++
++#define GPIO_PORT(x) ((x & GPIO_PORT_MASK) >> GPIO_PORT_SHIFT)
++#define GPIO_SET(x) writel(readl(&gpregs->port[GPIO_PORT(x)].dr) | (1 << (x & GPIO_PIN_MASK)), \
+ &gpregs->port[GPIO_PORT(x)].dr)
+//(DR(GPIO_PORT(x)) |= (1<<(x & GPIO_PIN_MASK)))
-+ #define GPIO_CLEAR(x) writel(readl(&gpregs->port[GPIO_PORT(x)].dr) & ~(1 << (x & GPIO_PIN_MASK)), \
++#define GPIO_CLEAR(x) writel(readl(&gpregs->port[GPIO_PORT(x)].dr) & ~(1 << (x & GPIO_PIN_MASK)), \
+ &gpregs->port[GPIO_PORT(x)].dr)
+//(DR(GPIO_PORT(x)) &= ~(1<<(x & GPIO_PIN_MASK)))
-+ #define GPIO_WRITE(x,y) ( y ? GPIO_SET(x) : GPIO_CLEAR(x) )
-+ #define GPIO_READ(x) ((readl(&gpregs->port[GPIO_PORT(x)].ssr) & (1 << (x & GPIO_PIN_MASK))) \
++#define GPIO_WRITE(x,y) ( y ? GPIO_SET(x) : GPIO_CLEAR(x) )
++#define GPIO_READ(x) ((readl(&gpregs->port[GPIO_PORT(x)].ssr) & (1 << (x & GPIO_PIN_MASK))) \
+ >> (x & GPIO_PIN_MASK))
-+//((SSR (GPIO_PORT(x)) & (1<<(x & GPIO_PIN_MASK)))>> (x & GPIO_PIN_MASK))
-+ #ifdef FPGA_DEBUG
-+ #define PRINTF(fmt,args...) printf (fmt ,##args)
-+ #else
-+ #define PRINTF(fmt,args...)
-+ #endif
-+
-+ /* Note that these are pointers to code that is in Flash. They will be
-+ * relocated at runtime.
-+ * Spartan2 code is used to download our Spartan 3 :) code is compatible.
-+ * Just take care about the file size
++//((SSR (GPIO_PORT(x)) & (1<<(x & GPIO_PIN_MASK)))>> (x & GPIO_PIN_MASK))
++#ifdef FPGA_DEBUG
++#define PRINTF(fmt,args...) printf (fmt ,##args)
++#else
++#define PRINTF(fmt,args...)
++#endif
++
++/* Note that these are pointers to code that is in Flash. They will be
++ * relocated at runtime.
++ * Spartan2 code is used to download our Spartan 3 :) code is compatible.
++ * Just take care about the file size
++*/
++Xilinx_Spartan3_Slave_Parallel_fns fpga_fns = {
++ fpga_pre_fn,
++ fpga_pgm_fn,
++ fpga_init_fn,
++ NULL,
++ fpga_done_fn,
++ fpga_clk_fn,
++ fpga_cs_fn,
++ fpga_wr_fn,
++ fpga_rdata_fn,
++ fpga_wdata_fn,
++ fpga_busy_fn,
++ fpga_abort_fn,
++ fpga_post_fn,
++};
++
++Xilinx_desc fpga[CONFIG_FPGA_COUNT] = {
++ {Xilinx_Spartan3,
++ slave_parallel,
++ 1196128l/8,
++ (void *) &fpga_fns,
++ 0}
++};
++
++/*
++ * nitialize GPIO port B before download
+ */
-+ Xilinx_Spartan3_Slave_Parallel_fns fpga_fns = {
-+ fpga_pre_fn,
-+ fpga_pgm_fn,
-+ fpga_init_fn,
-+ NULL,
-+ fpga_done_fn,
-+ fpga_clk_fn,
-+ fpga_cs_fn,
-+ fpga_wr_fn,
-+ fpga_rdata_fn,
-+ fpga_wdata_fn,
-+ fpga_busy_fn,
-+ fpga_abort_fn,
-+ fpga_post_fn,
-+ };
-+
-+ Xilinx_desc fpga[CONFIG_FPGA_COUNT] = {
-+ {Xilinx_Spartan3,
-+ slave_parallel,
-+ 1196128l/8,
-+ (void *) &fpga_fns,
-+ 0}
-+ };
-+
-+ /*
-+ * nitialize GPIO port B before download
-+ */
-+ int
-+ fpga_pre_fn (int cookie)
-+ {
-+ struct gpio_regs *gpregs = (struct gpio_regs *)IMX_GPIO_BASE;
-+ // Initialize GPIO pins
-+ GPIO_SET(CONFIG_SYS_FPGA_PWR);
-+ imx_gpio_mode (CONFIG_SYS_FPGA_INIT | GPIO_IN | GPIO_PUEN | GPIO_GPIO);
-+ imx_gpio_mode (CONFIG_SYS_FPGA_DONE | GPIO_IN | GPIO_PUEN | GPIO_GPIO);
-+ imx_gpio_mode (CONFIG_SYS_FPGA_PRG | GPIO_OUT | GPIO_PUEN | GPIO_GPIO);
-+ imx_gpio_mode (CONFIG_SYS_FPGA_CLK | GPIO_OUT | GPIO_PUEN | GPIO_GPIO);
-+ imx_gpio_mode (CONFIG_SYS_FPGA_RW | GPIO_OUT | GPIO_PUEN | GPIO_GPIO);
-+ imx_gpio_mode (CONFIG_SYS_FPGA_CS | GPIO_OUT | GPIO_PUEN | GPIO_GPIO);
-+ imx_gpio_mode (CONFIG_SYS_FPGA_SUSPEND | GPIO_OUT | GPIO_PUEN | GPIO_GPIO);
-+ GPIO_SET(CONFIG_SYS_FPGA_RESET);
-+ imx_gpio_mode (CONFIG_SYS_FPGA_RESET | GPIO_OUT | GPIO_PUEN | GPIO_GPIO);
-+ imx_gpio_mode (CONFIG_SYS_FPGA_PWR | GPIO_OUT | GPIO_PUEN | GPIO_GPIO);
-+ GPIO_SET(CONFIG_SYS_FPGA_PRG);
-+ GPIO_SET(CONFIG_SYS_FPGA_CLK);
-+ GPIO_SET(CONFIG_SYS_FPGA_RW);
-+ GPIO_SET(CONFIG_SYS_FPGA_CS);
-+ GPIO_CLEAR(CONFIG_SYS_FPGA_SUSPEND);
-+// GPIO_CLEAR(CONFIG_SYS_FPGA_RESET);
-+ GPIO_CLEAR(CONFIG_SYS_FPGA_PWR);
-+
-+ return cookie;
-+ }
-+
-+ /*
-+ * Set the FPGA's active-low program line to the specified level
-+ */
-+ int
-+ fpga_pgm_fn (int assert, int flush, int cookie)
-+ {
-+ struct gpio_regs *gpregs = (struct gpio_regs *)IMX_GPIO_BASE;
-+ PRINTF ("%s:%d: FPGA PROGRAM %s", __FUNCTION__, __LINE__,
-+ assert?"high":"low");
-+ GPIO_WRITE( CONFIG_SYS_FPGA_PRG, !assert);
-+ return assert;
-+ }
-+
-+ /*
-+ * Set the FPGA's active-high clock line to the specified level
-+ */
-+ int
-+ fpga_clk_fn (int assert_clk, int flush, int cookie)
-+ {
-+ struct gpio_regs *gpregs = (struct gpio_regs *)IMX_GPIO_BASE;
-+ PRINTF ("%s:%d: FPGA CLOCK %s", __FUNCTION__, __LINE__,
-+ assert_clk?"high":"low");
-+ GPIO_WRITE( CONFIG_SYS_FPGA_CLK, !assert_clk);
-+ return assert_clk;
-+ }
-+
-+ /*
-+ * Test the state of the active-low FPGA INIT line. Return 1 on INIT
-+ * asserted (low).
-+ */
-+ int
-+ fpga_init_fn (int cookie)
-+ {
-+ struct gpio_regs *gpregs = (struct gpio_regs *)IMX_GPIO_BASE;
-+ int value;
-+ PRINTF ("%s:%d: INIT check... ", __FUNCTION__, __LINE__);
-+ value = GPIO_READ(CONFIG_SYS_FPGA_INIT);
-+ //printf("init value read %x",value);
-+ #ifdef CONFIG_SYS_FPGA_IS_PROTO
-+ return value;
-+ #else
-+ return !value;
-+ #endif
-+ }
-+
-+ /*
-+ * Test the state of the active-high FPGA DONE pin
-+ */
-+ int
-+ fpga_done_fn (int cookie)
-+ {
-+ struct gpio_regs *gpregs = (struct gpio_regs *)IMX_GPIO_BASE;
-+ PRINTF ("%s:%d: DONE check... %s", __FUNCTION__, __LINE__,
-+ GPIO_READ(CONFIG_SYS_FPGA_DONE)?"high":"low");
-+ return(GPIO_READ(CONFIG_SYS_FPGA_DONE)?FPGA_SUCCESS:FPGA_FAIL);
-+ }
-+
-+ /*
-+ * Set the FPGA's wr line to the specified level
-+ */
-+ int
-+ fpga_wr_fn (int assert_write, int flush, int cookie)
-+ {
-+ struct gpio_regs *gpregs = (struct gpio_regs *)IMX_GPIO_BASE;
-+ PRINTF ("%s:%d: FPGA RW... %s ", __FUNCTION__, __LINE__,
-+ assert_write?"high":"low");
-+ GPIO_WRITE( CONFIG_SYS_FPGA_RW, !assert_write);
-+ return assert_write;
-+ }
-+
-+ int
-+ fpga_cs_fn (int assert_cs, int flush, int cookie)
-+ {
-+ struct gpio_regs *gpregs = (struct gpio_regs *)IMX_GPIO_BASE;
-+ PRINTF ("%s:%d: FPGA CS %s ", __FUNCTION__, __LINE__,
-+ assert_cs?"high":"low");
-+ GPIO_WRITE( CONFIG_SYS_FPGA_CS, !assert_cs);
-+ return assert_cs;
-+ }
-+
-+ int
-+ fpga_rdata_fn ( unsigned char *data, int cookie )
-+ {
-+ PRINTF ("%s:%d: FPGA READ DATA %02X ", __FUNCTION__, __LINE__,
-+ *((char*)CONFIG_SYS_FPGA_RDATA));
-+ *data = (unsigned char)((*((unsigned short*)CONFIG_SYS_FPGA_RDATA))&0x00FF);
-+ return *data;
-+ }
-+
-+ int
-+ fpga_wdata_fn ( unsigned char data, int cookie )
-+ {
-+ PRINTF ("%s:%d: FPGA WRITE DATA %02X ", __FUNCTION__, __LINE__,
-+ data);
-+ *((unsigned short*)CONFIG_SYS_FPGA_WDATA) = data;
-+ return data;
-+ }
-+
-+ int
-+ fpga_abort_fn ( int cookie )
-+ {
-+ return cookie;
-+ }
-+
-+
-+ int
-+ fpga_busy_fn ( int cookie )
-+ {
-+ return 1;
-+ }
-+
-+ int
-+ fpga_post_fn (int cookie)
-+ {
-+ struct gpio_regs *gpregs = (struct gpio_regs *)IMX_GPIO_BASE;
-+ PRINTF ("%s:%d: FPGA POST ", __FUNCTION__, __LINE__);
-+
-+ imx_gpio_mode (CONFIG_SYS_FPGA_RW | GPIO_PF | GPIO_PUEN);
-+ imx_gpio_mode (CONFIG_SYS_FPGA_CS | GPIO_PF | GPIO_PUEN);
-+ imx_gpio_mode (CONFIG_SYS_FPGA_CLK | GPIO_PF | GPIO_PUEN);
-+ GPIO_SET(CONFIG_SYS_FPGA_PRG);
-+ GPIO_CLEAR(CONFIG_SYS_FPGA_RESET);
-+ imx_gpio_mode (CONFIG_SYS_FPGA_RESET | GPIO_OUT | GPIO_PUEN | GPIO_GPIO);
-+ return cookie;
-+ }
-+
-+ /*
-+ * Initialize the fpga. Return 1 on success, 0 on failure.
-+ */
-+ int
-+ APF27_init_fpga (u_char * buffer, size_t size)
-+ {
-+ char *autoload = getenv ("firmware_autoload");
-+
-+ int i,lout=0;
-+
-+ fpga_init();
-+
-+ for (i = 0; i < CONFIG_FPGA_COUNT; i++) {
-+ PRINTF ("%s:%d: Adding fpga %d\n", __FUNCTION__, __LINE__, i);
-+ fpga_add (fpga_xilinx, &fpga[i]);
-+ }
-+
-+ if ((size >= fpga[0].size) && ( autoload ) && (0 == strcmp(autoload, "1"))) {
-+ if (FPGA_SUCCESS != fpga_load( 0, (void *)buffer, size )) {
-+ lout = 1;
-+ printf("Firmware download failed!\n");
-+ }
-+ else
-+ printf("Firmware successfully programmed\n");
-+ }
-+ return lout;
-+ }
-+
-+ #endif /* CONFIG_FPGA */
---- ref/u-boot-1.3.4/board/armadeus/apf27/fpga.h 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot-1.3.4/board/armadeus/apf27/fpga.h 2008-12-29 16:27:49.000000000 +0100
++int
++fpga_pre_fn (int cookie)
++{
++ struct gpio_regs *gpregs = (struct gpio_regs *)IMX_GPIO_BASE;
++ // Initialize GPIO pins
++ GPIO_SET(CONFIG_SYS_FPGA_PWR);
++ imx_gpio_mode (CONFIG_SYS_FPGA_INIT | GPIO_IN | GPIO_PUEN | GPIO_GPIO);
++ imx_gpio_mode (CONFIG_SYS_FPGA_DONE | GPIO_IN | GPIO_PUEN | GPIO_GPIO);
++ imx_gpio_mode (CONFIG_SYS_FPGA_PRG | GPIO_OUT | GPIO_PUEN | GPIO_GPIO);
++ imx_gpio_mode (CONFIG_SYS_FPGA_CLK | GPIO_OUT | GPIO_PUEN | GPIO_GPIO);
++ imx_gpio_mode (CONFIG_SYS_FPGA_RW | GPIO_OUT | GPIO_PUEN | GPIO_GPIO);
++ imx_gpio_mode (CONFIG_SYS_FPGA_CS | GPIO_OUT | GPIO_PUEN | GPIO_GPIO);
++ imx_gpio_mode (CONFIG_SYS_FPGA_SUSPEND | GPIO_OUT | GPIO_PUEN | GPIO_GPIO);
++ GPIO_SET(CONFIG_SYS_FPGA_RESET);
++ imx_gpio_mode (CONFIG_SYS_FPGA_RESET | GPIO_OUT | GPIO_PUEN | GPIO_GPIO);
++ imx_gpio_mode (CONFIG_SYS_FPGA_PWR | GPIO_OUT | GPIO_PUEN | GPIO_GPIO);
++ GPIO_SET(CONFIG_SYS_FPGA_PRG);
++ GPIO_SET(CONFIG_SYS_FPGA_CLK);
++ GPIO_SET(CONFIG_SYS_FPGA_RW);
++ GPIO_SET(CONFIG_SYS_FPGA_CS);
++ GPIO_CLEAR(CONFIG_SYS_FPGA_SUSPEND);
++// GPIO_CLEAR(CONFIG_SYS_FPGA_RESET);
++ GPIO_CLEAR(CONFIG_SYS_FPGA_PWR);
++
++ return cookie;
++}
++
++/*
++ * Set the FPGA's active-low program line to the specified level
++ */
++int
++fpga_pgm_fn (int assert, int flush, int cookie)
++{
++ struct gpio_regs *gpregs = (struct gpio_regs *)IMX_GPIO_BASE;
++ PRINTF ("%s:%d: FPGA PROGRAM %s", __FUNCTION__, __LINE__,
++ assert?"high":"low");
++ GPIO_WRITE( CONFIG_SYS_FPGA_PRG, !assert);
++ return assert;
++}
++
++/*
++ * Set the FPGA's active-high clock line to the specified level
++ */
++int
++fpga_clk_fn (int assert_clk, int flush, int cookie)
++{
++ struct gpio_regs *gpregs = (struct gpio_regs *)IMX_GPIO_BASE;
++ PRINTF ("%s:%d: FPGA CLOCK %s", __FUNCTION__, __LINE__,
++ assert_clk?"high":"low");
++ GPIO_WRITE( CONFIG_SYS_FPGA_CLK, !assert_clk);
++ return assert_clk;
++}
++
++/*
++ * Test the state of the active-low FPGA INIT line. Return 1 on INIT
++ * asserted (low).
++ */
++int
++fpga_init_fn (int cookie)
++{
++ struct gpio_regs *gpregs = (struct gpio_regs *)IMX_GPIO_BASE;
++ int value;
++ PRINTF ("%s:%d: INIT check... ", __FUNCTION__, __LINE__);
++ value = GPIO_READ(CONFIG_SYS_FPGA_INIT);
++ //printf("init value read %x",value);
++#ifdef CONFIG_SYS_FPGA_IS_PROTO
++ return value;
++#else
++ return !value;
++#endif
++}
++
++/*
++ * Test the state of the active-high FPGA DONE pin
++ */
++int
++fpga_done_fn (int cookie)
++{
++ struct gpio_regs *gpregs = (struct gpio_regs *)IMX_GPIO_BASE;
++ PRINTF ("%s:%d: DONE check... %s", __FUNCTION__, __LINE__,
++ GPIO_READ(CONFIG_SYS_FPGA_DONE)?"high":"low");
++ return(GPIO_READ(CONFIG_SYS_FPGA_DONE)?FPGA_SUCCESS:FPGA_FAIL);
++}
++
++/*
++ * Set the FPGA's wr line to the specified level
++ */
++int
++fpga_wr_fn (int assert_write, int flush, int cookie)
++{
++ struct gpio_regs *gpregs = (struct gpio_regs *)IMX_GPIO_BASE;
++ PRINTF ("%s:%d: FPGA RW... %s ", __FUNCTION__, __LINE__,
++ assert_write?"high":"low");
++ GPIO_WRITE( CONFIG_SYS_FPGA_RW, !assert_write);
++ return assert_write;
++}
++
++int
++fpga_cs_fn (int assert_cs, int flush, int cookie)
++{
++ struct gpio_regs *gpregs = (struct gpio_regs *)IMX_GPIO_BASE;
++ PRINTF ("%s:%d: FPGA CS %s ", __FUNCTION__, __LINE__,
++ assert_cs?"high":"low");
++ GPIO_WRITE( CONFIG_SYS_FPGA_CS, !assert_cs);
++ return assert_cs;
++}
++
++int
++fpga_rdata_fn ( unsigned char *data, int cookie )
++{
++ PRINTF ("%s:%d: FPGA READ DATA %02X ", __FUNCTION__, __LINE__,
++ *((char*)CONFIG_SYS_FPGA_RDATA));
++ *data = (unsigned char)((*((unsigned short*)CONFIG_SYS_FPGA_RDATA))&0x00FF);
++ return *data;
++}
++
++int
++fpga_wdata_fn ( unsigned char data, int cookie )
++{
++ PRINTF ("%s:%d: FPGA WRITE DATA %02X ", __FUNCTION__, __LINE__,
++ data);
++ *((unsigned short*)CONFIG_SYS_FPGA_WDATA) = data;
++ return data;
++}
++
++int
++fpga_abort_fn ( int cookie )
++{
++ return cookie;
++}
++
++
++int
++fpga_busy_fn ( int cookie )
++{
++ return 1;
++}
++
++int
++fpga_post_fn (int cookie)
++{
++ struct gpio_regs *gpregs = (struct gpio_regs *)IMX_GPIO_BASE;
++ PRINTF ("%s:%d: FPGA POST ", __FUNCTION__, __LINE__);
++
++ imx_gpio_mode (CONFIG_SYS_FPGA_RW | GPIO_PF | GPIO_PUEN);
++ imx_gpio_mode (CONFIG_SYS_FPGA_CS | GPIO_PF | GPIO_PUEN);
++ imx_gpio_mode (CONFIG_SYS_FPGA_CLK | GPIO_PF | GPIO_PUEN);
++ GPIO_SET(CONFIG_SYS_FPGA_PRG);
++ GPIO_CLEAR(CONFIG_SYS_FPGA_RESET);
++ imx_gpio_mode (CONFIG_SYS_FPGA_RESET | GPIO_OUT | GPIO_PUEN | GPIO_GPIO);
++ return cookie;
++}
++
++/*
++ * Initialize the fpga. Return 1 on success, 0 on failure.
++ */
++int
++APF27_init_fpga (u_char * buffer, size_t size)
++{
++ char *autoload = getenv ("firmware_autoload");
++
++ int i,lout=0;
++
++ fpga_init();
++
++ for (i = 0; i < CONFIG_FPGA_COUNT; i++) {
++ PRINTF ("%s:%d: Adding fpga %d\n", __FUNCTION__, __LINE__, i);
++ fpga_add (fpga_xilinx, &fpga[i]);
++ }
++
++ if ((size >= fpga[0].size) && ( autoload ) && (0 == strcmp(autoload, "1"))) {
++ if (FPGA_SUCCESS != fpga_load( 0, (void *)buffer, size )) {
++ lout = 1;
++ printf("Firmware download failed!\n");
++ }
++ else
++ printf("Firmware successfully programmed\n");
++ }
++ return lout;
++}
++
++#endif /* CONFIG_FPGA */
+Index: u-boot-2010.03/board/armadeus/apf27/fpga.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ u-boot-2010.03/board/armadeus/apf27/fpga.h 2011-01-05 18:09:44.000000000 +0100
@@ -0,0 +1,39 @@
+/*
+ * (C) Copyright 2002-2008
@@ -517,8 +525,10 @@
+extern int fpga_abort_fn (int cookie);
+extern int fpga_post_fn (int cookie);
+extern int fpga_busy_fn (int cookie);
---- ref/u-boot-1.3.4/board/armadeus/apf27/lowlevel_init.S 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot-1.3.4/board/armadeus/apf27/lowlevel_init.S 2008-12-29 16:27:49.000000000 +0100
+Index: u-boot-2010.03/board/armadeus/apf27/lowlevel_init.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ u-boot-2010.03/board/armadeus/apf27/lowlevel_init.S 2011-01-05 18:09:44.000000000 +0100
@@ -0,0 +1,343 @@
+/*
+ * For clock initialization, see chapter 3 of the "MCIMX27 Multimedia
@@ -657,7 +667,7 @@
+ writel(AIPI2_PSR0, CONFIG_SYS_AIPI2_PSR0_VAL)
+ writel(AIPI2_PSR1, CONFIG_SYS_AIPI2_PSR1_VAL)
+
-+ /* Change SDRAM signal strengh */
++ /* Change SDRAM signal strengh */
+ ldr r0, =GPCR
+ ldr r1, =CONFIG_SYS_...
[truncated message content] |
|
From: Fabien M <fa...@us...> - 2011-01-05 14:37:40
|
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 96c957b8b9b650b4fdf310465ff9b6057e7a3bfd (commit)
from fb2661a8a1a98185fca36de444d0cf4b71eb2ec6 (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 96c957b8b9b650b4fdf310465ff9b6057e7a3bfd
Author: Fabien Marteau <fab...@ar...>
Date: Wed Jan 5 15:37:10 2011 +0100
[FIRMWARE] Adding minimum spartan3 design used to configure sp_vision spartan6 fpga
-----------------------------------------------------------------------
Summary of changes:
firmware/sp_vision_config/README | 43 +++
.../bitstream/top_testconfig.bit} | Bin 149603 -> 149615 bytes
.../simulation/apf27_test_pkg.vhd} | 31 +-
.../imx27_wb16_wrapper/imx27_wb16_wrapper.vhd} | 68 ++--
.../imx27_wb16_wrapper00_mwb16_intercon.vhd | 102 ++++++
.../synthesis/rstgen_syscon}/rstgen_syscon.vhd | 0
.../spartan_select_map/spartan_selectmap.vhd | 211 +++++++++++
firmware/sp_vision_config/synthesis/testconfig.tcl | 21 ++
firmware/sp_vision_config/synthesis/testconfig.ucf | 69 ++++
.../sp_vision_config/synthesis/top_testconfig.vhd | 372 ++++++++++++++++++++
10 files changed, 871 insertions(+), 46 deletions(-)
create mode 100644 firmware/sp_vision_config/README
copy firmware/{wishbone_example/bin/wishbone_example_apf27_200k.bit => sp_vision_config/bitstream/top_testconfig.bit} (74%)
copy firmware/{wishbone_example/testbench/apf_test_pkg.vhd => sp_vision_config/simulation/apf27_test_pkg.vhd} (90%)
copy firmware/{wishbone_example/src/wishbone_wrapper.vhd => sp_vision_config/synthesis/imx27_wb16_wrapper/imx27_wb16_wrapper.vhd} (58%)
create mode 100644 firmware/sp_vision_config/synthesis/imx27_wb16_wrapper00_mwb16/imx27_wb16_wrapper00_mwb16_intercon.vhd
copy firmware/{wishbone_example/src => sp_vision_config/synthesis/rstgen_syscon}/rstgen_syscon.vhd (100%)
create mode 100644 firmware/sp_vision_config/synthesis/spartan_select_map/spartan_selectmap.vhd
create mode 100644 firmware/sp_vision_config/synthesis/testconfig.tcl
create mode 100644 firmware/sp_vision_config/synthesis/testconfig.ucf
create mode 100644 firmware/sp_vision_config/synthesis/top_testconfig.vhd
diff --git a/firmware/sp_vision_config/README b/firmware/sp_vision_config/README
new file mode 100644
index 0000000..f831609
--- /dev/null
+++ b/firmware/sp_vision_config/README
@@ -0,0 +1,43 @@
+sp_vision_config
+=======================
+
+This is a minimum design used to configure second fpga on sp_vision daugther
+board.
+This design is designed to configure a spartan6 with SelectMap Slave
+protocol.
+
+FPGA component
+--------------
+
+Output component is composed of four 16 bits registers:
+
+| offset | name | description |
+|:-----------|:-----------:|:--------------------------------------:|
+| 0x00 | ID | component identifiant |
+| 0x02 | CONFIG | configuration for control signals |
+| 0x04 | STATUS | control signals status |
+| 0x06 | DATA | bitstream 16bits data sent to spartan6 |
+
+* ID : unique number to identify component.
+
+* CONFIG : Drive control signals
+
+| 15 downto 5 | 4 | 3 | 2 | 1 | 0 |
+|:-----------:|:---:|:----:|:---:|:-------:|:-----:|
+| void | CLK | void |CSI_n|PROGRAM_n|RDWR_n |
+
+CLK flag is used to switch composant in configuration mode :
+- When CLK=1, component is in idle mode, CCLK output drive general clock and
+ all other output signals are High impedance.
+- When CLK=0, the component is in fpga configuration mode.
+
+* STATUS : read input signal from fpga
+
+| 15 downto 3 | 2 | 1 | 0 |
+|:-----------:|:----:|:--:|:----:|
+| void |INIT_n|BUSY|RDWR_n|
+
+* DATA : 16 bits data wrote for configuring FPGA.
+When a data is written in this register, the value is placed on data output
+port, and one cclk pulse is generated.
+
diff --git a/firmware/wishbone_example/bin/wishbone_example_apf27_200k.bit b/firmware/sp_vision_config/bitstream/top_testconfig.bit
similarity index 74%
copy from firmware/wishbone_example/bin/wishbone_example_apf27_200k.bit
copy to firmware/sp_vision_config/bitstream/top_testconfig.bit
index 25d1895..7592c17 100644
Binary files a/firmware/wishbone_example/bin/wishbone_example_apf27_200k.bit and b/firmware/sp_vision_config/bitstream/top_testconfig.bit differ
diff --git a/firmware/wishbone_example/testbench/apf_test_pkg.vhd b/firmware/sp_vision_config/simulation/apf27_test_pkg.vhd
similarity index 90%
copy from firmware/wishbone_example/testbench/apf_test_pkg.vhd
copy to firmware/sp_vision_config/simulation/apf27_test_pkg.vhd
index 70c460e..232cdbd 100644
--- a/firmware/wishbone_example/testbench/apf_test_pkg.vhd
+++ b/firmware/sp_vision_config/simulation/apf27_test_pkg.vhd
@@ -1,6 +1,6 @@
----------------------------------------------
--- Design Name : Test bench utils
--- File Name : apf_test_pkg.vhd
+-- Design Name : Test bench utils for apf27
+-- File Name : apf27_test_pkg.vhd
-- Function : Defines communication functions between imx and fpga
-- Author : Fabien Marteau <fab...@ar...>
-- Version : 1.00
@@ -25,7 +25,13 @@
library ieee;
use ieee.std_logic_1164.all;
-package apf_test_pkg is
+package apf27_test_pkg is
+
+ CONSTANT CS_MIN : time := 13.6 ns;
+ CONSTANT CLOCK_PERIOD : time := 7.5188 ns;
+ CONSTANT WE3 : time := 2.25 ns;
+ CONSTANT WE4 : time := 2.25 ns;
+
-- write procedures
-- Params :
-- address : Write address
@@ -74,9 +80,9 @@ procedure imx_read(
);
-end package apf_test_pkg;
+end package apf27_test_pkg;
-package body apf_test_pkg is
+package body apf27_test_pkg is
-- Write value from imx
@@ -130,23 +136,22 @@ procedure imx_read(
begin
-- Read value
wait until falling_edge(gls_clk);
- wait for 4 ns;
+ wait for WE3;
imx_address <= address(12 downto 1);
imx_cs_n <= '0';
imx_oe_n <= '0';
- if WSC <= 1 then
- wait until falling_edge(gls_clk);
- else
- for n in 1 to WSC loop
+ wait for CS_MIN; -- minimum chip select time
+ if WSC > 1 then
+ for n in 2 to WSC loop
wait until falling_edge(gls_clk);
end loop;
+ --wait for CLOCK_PERIOD*(WSC-1);
end if;
- wait until falling_edge(gls_clk);
+ wait for WE4;
value <= imx_data;
imx_cs_n <= '1';
imx_oe_n <= '1';
imx_address <= (others => 'Z');
- wait for 20 ns;
end procedure imx_read;
-end package body apf_test_pkg;
+end package body apf27_test_pkg;
diff --git a/firmware/wishbone_example/src/wishbone_wrapper.vhd b/firmware/sp_vision_config/synthesis/imx27_wb16_wrapper/imx27_wb16_wrapper.vhd
similarity index 58%
copy from firmware/wishbone_example/src/wishbone_wrapper.vhd
copy to firmware/sp_vision_config/synthesis/imx27_wb16_wrapper/imx27_wb16_wrapper.vhd
index d23110b..9f3aac2 100644
--- a/firmware/wishbone_example/src/wishbone_wrapper.vhd
+++ b/firmware/sp_vision_config/synthesis/imx27_wb16_wrapper/imx27_wb16_wrapper.vhd
@@ -1,6 +1,6 @@
-------------------------------------------------------------------------------
--
--- File : wishbone_wrapper.vhd
+-- File : imx27_wb16_wrapper.vhd
-- Related files : (none)
--
-- Author(s) : Fabrice Mousset (fab...@la...)
@@ -23,32 +23,34 @@ library IEEE;
use IEEE.numeric_std.all;
-- ----------------------------------------------------------------------------
- Entity wishbone_wrapper is
+ Entity imx27_wb16_wrapper is
-- ----------------------------------------------------------------------------
port
(
-- i.MX Signals
- imx_address : in std_logic_vector(11 downto 0); -- LSB not used
+ imx_address : in std_logic_vector(11 downto 0);
imx_data : inout std_logic_vector(15 downto 0);
imx_cs_n : in std_logic;
imx_oe_n : in std_logic;
- imx_eb3_n : in std_logic;
+ imx_eb0_n : in std_logic;
+
-- Global Signals
gls_reset : in std_logic;
gls_clk : in std_logic;
+
-- Wishbone interface signals
wbm_address : out std_logic_vector(12 downto 0); -- Address bus
- wbm_readdata : in std_logic_vector(15 downto 0); -- Data bus for read access
+ wbm_readdata : in std_logic_vector(15 downto 0); -- Data bus for read access
wbm_writedata : out std_logic_vector(15 downto 0); -- Data bus for write access
wbm_strobe : out std_logic; -- Data Strobe
wbm_write : out std_logic; -- Write access
- wbm_ack : in std_logic ; -- acknowledge
+ wbm_ack : in std_logic; -- acknowledge
wbm_cycle : out std_logic -- bus cycle in progress
);
end entity;
-- ----------------------------------------------------------------------------
- Architecture RTL of wishbone_wrapper is
+ Architecture RTL of imx27_wb16_wrapper is
-- ----------------------------------------------------------------------------
signal write : std_logic;
@@ -59,32 +61,32 @@ signal address : std_logic_vector(12 downto 0);
begin
--- ----------------------------------------------------------------------------
--- External signals synchronization process
--- ----------------------------------------------------------------------------
-process(gls_clk, gls_reset)
-begin
- if(gls_reset='1') then
- write <= '0';
- read <= '0';
- strobe <= '0';
- writedata <= (others => '0');
- address <= (others => '0');
- elsif(rising_edge(gls_clk)) then
- strobe <= not (imx_cs_n) and not(imx_oe_n and imx_eb3_n);
- write <= not (imx_cs_n or imx_eb3_n);
- read <= not (imx_cs_n or imx_oe_n);
- address <= imx_address & '0';
- writedata <= imx_data;
- end if;
-end process;
-
-wbm_address <= address when (strobe = '1') else (others => '0');
-wbm_writedata <= writedata when (write = '1') else (others => '0');
-wbm_strobe <= strobe;
-wbm_write <= write;
-wbm_cycle <= strobe;
+ -- ----------------------------------------------------------------------------
+ -- External signals synchronization process
+ -- ----------------------------------------------------------------------------
+ process(gls_clk, gls_reset)
+ begin
+ if(gls_reset='1') then
+ write <= '0';
+ read <= '0';
+ strobe <= '0';
+ writedata <= (others => '0');
+ address <= (others => '0');
+ elsif(rising_edge(gls_clk)) then
+ strobe <= not (imx_cs_n) and not(imx_oe_n and imx_eb0_n);
+ write <= not (imx_cs_n or imx_eb0_n);
+ read <= not (imx_cs_n or imx_oe_n);
+ address <= imx_address & '0';
+ writedata <= imx_data;
+ end if;
+ end process;
+
+ wbm_address <= address when (strobe = '1') else (others => '0');
+ wbm_writedata <= writedata when (write = '1') else (others => '0');
+ wbm_strobe <= strobe;
+ wbm_write <= write;
+ wbm_cycle <= strobe;
-imx_data <= wbm_readdata when(read = '1' ) else (others => 'Z');
+ imx_data <= wbm_readdata when (read = '1') else (others => 'Z');
end architecture RTL;
diff --git a/firmware/sp_vision_config/synthesis/imx27_wb16_wrapper00_mwb16/imx27_wb16_wrapper00_mwb16_intercon.vhd b/firmware/sp_vision_config/synthesis/imx27_wb16_wrapper00_mwb16/imx27_wb16_wrapper00_mwb16_intercon.vhd
new file mode 100644
index 0000000..52e2ad0
--- /dev/null
+++ b/firmware/sp_vision_config/synthesis/imx27_wb16_wrapper00_mwb16/imx27_wb16_wrapper00_mwb16_intercon.vhd
@@ -0,0 +1,102 @@
+---------------------------------------------------------------------------
+-- Company : Automaticaly generated by POD
+-- Author(s) :
+--
+-- Creation Date : 2010-10-21
+-- File : imx27_wb16_wrapper00_mwb16.vhd
+--
+-- Abstract :
+-- Connect slaves to mwb16 from imx27_wb16_wrapper00
+--
+---------------------------------------------------------------------------
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.numeric_std.all;
+
+Entity imx27_wb16_wrapper00_mwb16 is
+ port
+ (
+
+ -- spartanconf_wbs connection
+ spartanconf_wbs_add : out std_logic_vector(1 downto 0);
+ spartanconf_wbs_writedata : out std_logic_vector(15 downto 0);
+ spartanconf_wbs_readdata : in std_logic_vector(15 downto 0);
+ spartanconf_wbs_strobe : out std_logic;
+ spartanconf_wbs_cycle : out std_logic;
+ spartanconf_wbs_write : out std_logic;
+ spartanconf_wbs_ack : in std_logic;
+
+ -- spartanconf_candr connection
+ spartanconf_clk : out std_logic;
+ spartanconf_reset : out std_logic;
+
+ -- imx27_wb16_wrapper00_mwb16 connection
+ imx27_wb16_wrapper00_wbm_address : in std_logic_vector(12 downto 0);
+ imx27_wb16_wrapper00_wbm_readdata : out std_logic_vector(15 downto 0);
+ imx27_wb16_wrapper00_wbm_writedata : in std_logic_vector(15 downto 0);
+ imx27_wb16_wrapper00_wbm_strobe : in std_logic;
+ imx27_wb16_wrapper00_wbm_write : in std_logic;
+ imx27_wb16_wrapper00_wbm_ack : out std_logic;
+ imx27_wb16_wrapper00_wbm_cycle : in std_logic;
+
+ -- imx27_wb16_wrapper00_candr connection
+ imx27_wb16_wrapper00_gls_reset : out std_logic;
+ imx27_wb16_wrapper00_gls_clk : out std_logic;
+
+ -- rstgen_syscon00_imx27_wb16_wrapper00 connection
+ rstgen_syscon00_gls_clk : in std_logic;
+ rstgen_syscon00_gls_reset : in std_logic
+ );
+end entity;
+
+architecture imx27_wb16_wrapper00_mwb16_1 of imx27_wb16_wrapper00_mwb16 is
+ signal spartanconf_wbs_cs : std_logic := '0' ;
+begin
+
+ -- Clock and Reset connection
+ spartanconf_clk <= rstgen_syscon00_gls_clk;
+ spartanconf_reset <= rstgen_syscon00_gls_reset;
+
+ imx27_wb16_wrapper00_gls_reset <= rstgen_syscon00_gls_reset;
+ imx27_wb16_wrapper00_gls_clk <= rstgen_syscon00_gls_clk;
+
+
+ -- Address decoding --
+ -----------------------
+ spartanconf_wbs_add <= imx27_wb16_wrapper00_wbm_address(2 downto 1);
+
+ decodeproc : process(rstgen_syscon00_gls_clk,rstgen_syscon00_gls_reset,imx27_wb16_wrapper00_wbm_address)
+ begin
+ if rstgen_syscon00_gls_reset='1' then
+ spartanconf_wbs_cs <= '0';
+ elsif rising_edge(rstgen_syscon00_gls_clk) then
+
+ if imx27_wb16_wrapper00_wbm_address(12 downto 3)="0000000000" and imx27_wb16_wrapper00_wbm_strobe='1' then
+ spartanconf_wbs_cs <= '1';
+ else
+ spartanconf_wbs_cs <= '0';
+ end if;
+
+ end if;
+ end process decodeproc;
+
+ -----------------------------
+ -- Control signals to slave
+ -----------------------------
+
+ -- for spartanconf
+ spartanconf_wbs_strobe <= (imx27_wb16_wrapper00_wbm_strobe and spartanconf_wbs_cs );
+ spartanconf_wbs_cycle <= (imx27_wb16_wrapper00_wbm_cycle and spartanconf_wbs_cs );
+ spartanconf_wbs_write <= (imx27_wb16_wrapper00_wbm_write and spartanconf_wbs_cs );
+ spartanconf_wbs_writedata <= imx27_wb16_wrapper00_wbm_writedata when (imx27_wb16_wrapper00_wbm_write and spartanconf_wbs_cs ) = '1' else (others => '0');
+
+
+ -------------------------------
+ -- Control signal for master --
+ -------------------------------
+ imx27_wb16_wrapper00_wbm_readdata <= spartanconf_wbs_readdata when spartanconf_wbs_cs='1' else
+ (others => '0');
+ imx27_wb16_wrapper00_wbm_ack <= (spartanconf_wbs_ack and spartanconf_wbs_cs);
+
+end architecture imx27_wb16_wrapper00_mwb16_1;
diff --git a/firmware/wishbone_example/src/rstgen_syscon.vhd b/firmware/sp_vision_config/synthesis/rstgen_syscon/rstgen_syscon.vhd
similarity index 100%
copy from firmware/wishbone_example/src/rstgen_syscon.vhd
copy to firmware/sp_vision_config/synthesis/rstgen_syscon/rstgen_syscon.vhd
diff --git a/firmware/sp_vision_config/synthesis/spartan_select_map/spartan_selectmap.vhd b/firmware/sp_vision_config/synthesis/spartan_select_map/spartan_selectmap.vhd
new file mode 100644
index 0000000..e2059db
--- /dev/null
+++ b/firmware/sp_vision_config/synthesis/spartan_select_map/spartan_selectmap.vhd
@@ -0,0 +1,211 @@
+---------------------------------------------------------------------------
+-- Company : ARMades Systems
+-- Author(s) : Fabien Marteau <fab...@ar...>
+--
+-- Creation Date : 05/01/2011
+-- File : spartan_select_map.vhd
+--
+---------------------------------------------------------------------------
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.numeric_std.all;
+
+---------------------------------------------------------------------------
+Entity spartan_select_map is
+---------------------------------------------------------------------------
+ generic(
+ id : natural := 1; -- identification register value
+ wb_size : natural := 16; -- Data port size for wishbone
+ clk_freq : natural := 100000 -- fpga clock speed
+ );
+ port
+ (
+ -- Syscon signals
+ reset : in std_logic ; -- reset
+ clk : in std_logic ; -- general clock
+ -- Wishbone signals
+ wbs_add : in std_logic_vector( 1 downto 0) ; -- address bus
+ wbs_writedata : in std_logic_vector( wb_size-1 downto 0);
+ wbs_readdata : out std_logic_vector( wb_size-1 downto 0);
+ wbs_strobe : in std_logic ;
+ wbs_cycle : in std_logic ;
+ wbs_write : in std_logic ;
+ wbs_ack : out std_logic;
+ -- selectMap port
+ selectmap_data : inout std_logic_vector( wb_size-1 downto 0);
+ selectmap_csi_n : inout std_logic ;
+ selectmap_rdwr_n : inout std_logic ;
+ selectmap_cclk : inout std_logic ;
+ selectmap_program_n : inout std_logic ;
+ selectmap_init_n : in std_logic ;
+ selectmap_busy : in std_logic ;
+ selectmap_done : in std_logic;
+
+ selectmap_spare1 : in std_logic;
+ selectmap_spare2 : in std_logic;
+ selectmap_spare3 : in std_logic
+ );
+end entity;
+
+---------------------------------------------------------------------------
+Architecture spartan_select_map_1 of spartan_select_map is
+---------------------------------------------------------------------------
+ -- usefull constant
+ constant ZERO : std_logic_vector(15 downto 0) := x"0000";
+ constant CLK_PULSE_LENGHT : natural := 200;
+
+ -- Registers addresses
+ constant ID_REG_ADDR : std_logic_vector( 1 downto 0) := "00";
+ constant CONFIG_REG_ADDR : std_logic_vector( 1 downto 0) := "01";
+ constant STATUS_REG_ADDR : std_logic_vector( 1 downto 0) := "10";
+ constant DATA_REG_ADDR : std_logic_vector( 1 downto 0) := "11";
+ -- Registers
+ signal config_reg : std_logic_vector( wb_size-1 downto 0);
+ signal status_reg : std_logic_vector( wb_size-1 downto 0);
+ signal data_reg : std_logic_vector( wb_size-1 downto 0);
+
+ -- internal ctrl signals
+ signal read_ack : std_logic ;
+ signal write_ack: std_logic ;
+
+ signal cclk_sig : std_logic ;
+ signal cclk_trig : std_logic ;
+
+ signal clk_out : std_logic ;
+
+ signal data_inverter : std_logic_vector( wb_size-1 downto 0);
+
+ constant COUNT_CST : natural := 2;
+begin
+
+ clk_out <= clk;
+
+ -- config_reg:
+ -- |15|14|13|12|11|10|9|8|7|6|5| 4 |3| 2 | 1 | 0 |
+ -- |X |X |X |X |X |X |X|X|X|X|X|CLK|X|CSI_n|PROGRAM_n|RDWR_n|
+ -- If CLK=1, system clock is routed on CCLK and all configuration output
+ -- are high Z
+ selectmap_rdwr_n <= config_reg(0) when config_reg(4) = '0' else 'Z';
+ selectmap_program_n <= config_reg(1) when config_reg(4) = '0' else 'Z';
+ selectmap_csi_n <= config_reg(2) when config_reg(4) = '0' else 'Z';
+ selectmap_cclk <= cclk_sig when config_reg(4) = '0' else clk_out;
+ data_inverter <= data_reg when config_reg(4) = '0' else (others => 'Z');
+
+ selectmap_data(0) <= data_inverter(7);
+ selectmap_data(1) <= data_inverter(6);
+ selectmap_data(2) <= data_inverter(5);
+ selectmap_data(3) <= data_inverter(4);
+ selectmap_data(4) <= data_inverter(3);
+ selectmap_data(5) <= data_inverter(2);
+ selectmap_data(6) <= data_inverter(1);
+ selectmap_data(7) <= data_inverter(0);
+
+ selectmap_data(8) <= data_inverter(15);
+ selectmap_data(9) <= data_inverter(14);
+ selectmap_data(10) <= data_inverter(13);
+ selectmap_data(11) <= data_inverter(12);
+ selectmap_data(12) <= data_inverter(11);
+ selectmap_data(13) <= data_inverter(10);
+ selectmap_data(14) <= data_inverter(9);
+ selectmap_data(15) <= data_inverter(8);
+
+ -- Status register
+ -- | 15 | 14 | 13 |12|11|10|9|8|7|6|5|4|3| 2 | 1 | 0 |
+ -- |spare1|spare2|spare3 |X |X |X |X|X|X|X|X|X|X|INIT_n|BUSY|DONE|
+ status_reg <= selectmap_spare1&selectmap_spare2&selectmap_spare3&ZERO(12 downto 3)&selectmap_init_n&selectmap_busy&selectmap_done;
+
+ -- read process
+ read_p : process (clk, reset)
+ begin
+ if reset = '1' then
+ wbs_readdata <= (others => '0');
+ elsif rising_edge(clk) then
+ if ( wbs_strobe and (not wbs_write) and wbs_cycle) = '1' then
+ read_ack <= '1';
+ case wbs_add is
+ when ID_REG_ADDR =>
+ wbs_readdata <= std_logic_vector(to_unsigned(id,wb_size));
+ when CONFIG_REG_ADDR =>
+ wbs_readdata <= config_reg;
+ when STATUS_REG_ADDR =>
+ wbs_readdata <= status_reg;
+ when DATA_REG_ADDR =>
+ wbs_readdata <= data_reg;
+ when others =>
+ wbs_readdata <= ZERO;
+ end case;
+ else
+ read_ack <= '0';
+ wbs_readdata <= (others => '0');
+ end if;
+ end if;
+ end process read_p;
+
+ -- write process
+ write_p : process (clk, reset)
+ begin
+ if reset = '1' then
+ config_reg <= x"0007";
+ data_reg <= (others => '0');
+ elsif rising_edge(clk) then
+ write_ack <= '0';
+ if (wbs_strobe and wbs_write and wbs_cycle) = '1' then
+ write_ack <= '1';
+ case wbs_add is
+ when CONFIG_REG_ADDR =>
+ config_reg <= wbs_writedata;
+ data_reg <= data_reg;
+ when DATA_REG_ADDR =>
+ config_reg <= config_reg;
+ data_reg <= wbs_writedata;
+ when others =>
+ config_reg <= config_reg;
+ data_reg <= data_reg;
+ end case;
+ end if;
+ end if;
+ end process write_p;
+
+ -- CCLK trigger generator
+ cclk_p : process (clk, reset)
+ begin
+ if reset = '1' then
+ cclk_trig <= '0';
+ elsif rising_edge(clk) then
+ if wbs_add = DATA_REG_ADDR then
+ cclk_trig <= '1';
+ else
+ cclk_trig <= '0';
+ end if;
+ end if;
+ end process cclk_p;
+
+ cclk_gen : process (clk, reset)
+ variable counter : natural range 0 to (CLK_PULSE_LENGHT+1);
+ begin
+ if reset = '1' then
+ cclk_sig <= '0';
+ counter := 0;
+ elsif rising_edge(clk) then
+ if cclk_trig = '1' then
+ counter := 0;
+ cclk_sig <= '0';
+ elsif counter < (CLK_PULSE_LENGHT/2) then
+ counter := counter +1;
+ cclk_sig <= '0';
+ elsif counter < (CLK_PULSE_LENGHT) then
+ counter := counter +1;
+ cclk_sig <= '1';
+ else
+ cclk_sig <= '0';
+ end if;
+ end if;
+ end process cclk_gen;
+
+
+
+ wbs_ack <= read_ack or write_ack;
+
+end architecture spartan_select_map_1;
+
diff --git a/firmware/sp_vision_config/synthesis/testconfig.tcl b/firmware/sp_vision_config/synthesis/testconfig.tcl
new file mode 100644
index 0000000..4df3fec
--- /dev/null
+++ b/firmware/sp_vision_config/synthesis/testconfig.tcl
@@ -0,0 +1,21 @@
+# TCL script automaticaly generated by POD
+cd ../objs
+project new testconfig.ise
+# configure platform params
+project set family spartan3a
+project set device XC3S200A
+project set package FT256
+project set speed -4
+project set {Preferred Language} VHDL
+## add components sources file
+# add top level sources file
+xfile add ../synthesis/top_testconfig.vhd
+xfile add ../synthesis/imx27_wb16_wrapper/imx27_wb16_wrapper.vhd
+xfile add ../synthesis/rstgen_syscon/rstgen_syscon.vhd
+xfile add ../synthesis/imx27_wb16_wrapper00_mwb16/imx27_wb16_wrapper00_mwb16_intercon.vhd
+xfile add ../synthesis/spartan_select_map/spartan_selectmap.vhd
+# add constraint file
+xfile add ../synthesis/testconfig.ucf
+process run "Generate Programming File"
+process run "Generate Post-Synthesis Simulation Model"
+process run "Generate Post-Place & Route Simulation Model"
diff --git a/firmware/sp_vision_config/synthesis/testconfig.ucf b/firmware/sp_vision_config/synthesis/testconfig.ucf
new file mode 100644
index 0000000..d379ef0
--- /dev/null
+++ b/firmware/sp_vision_config/synthesis/testconfig.ucf
@@ -0,0 +1,69 @@
+# Constraint file, automaticaly generated by pod
+NET "imx27_wb16_wrapper00_imx_cs_n" LOC="P10" | IOSTANDARD=LVCMOS18;# CS5N
+
+NET "imx27_wb16_wrapper00_imx_data<0>" LOC="T5" | IOSTANDARD=LVCMOS18 | DRIVE=8;# DATA0
+NET "imx27_wb16_wrapper00_imx_data<1>" LOC="T6" | IOSTANDARD=LVCMOS18 | DRIVE=8;# DATA1
+NET "imx27_wb16_wrapper00_imx_data<2>" LOC="P7" | IOSTANDARD=LVCMOS18 | DRIVE=8;# DATA2
+NET "imx27_wb16_wrapper00_imx_data<3>" LOC="N8" | IOSTANDARD=LVCMOS18 | DRIVE=8;# DATA3
+NET "imx27_wb16_wrapper00_imx_data<4>" LOC="P12" | IOSTANDARD=LVCMOS18 | DRIVE=8;# DATA4
+NET "imx27_wb16_wrapper00_imx_data<5>" LOC="T13" | IOSTANDARD=LVCMOS18 | DRIVE=8;# DATA5
+NET "imx27_wb16_wrapper00_imx_data<6>" LOC="R13" | IOSTANDARD=LVCMOS18 | DRIVE=8;# DATA6
+NET "imx27_wb16_wrapper00_imx_data<7>" LOC="T14" | IOSTANDARD=LVCMOS18 | DRIVE=8;# DATA7
+NET "imx27_wb16_wrapper00_imx_data<8>" LOC="P5" | IOSTANDARD=LVCMOS18 | DRIVE=8;# DATA8
+NET "imx27_wb16_wrapper00_imx_data<9>" LOC="N6" | IOSTANDARD=LVCMOS18 | DRIVE=8;# DATA9
+NET "imx27_wb16_wrapper00_imx_data<10>" LOC="T3" | IOSTANDARD=LVCMOS18 | DRIVE=8;# DATA10
+NET "imx27_wb16_wrapper00_imx_data<11>" LOC="T11" | IOSTANDARD=LVCMOS18 | DRIVE=8;# DATA11
+NET "imx27_wb16_wrapper00_imx_data<12>" LOC="T4" | IOSTANDARD=LVCMOS18 | DRIVE=8;# DATA12
+NET "imx27_wb16_wrapper00_imx_data<13>" LOC="R5" | IOSTANDARD=LVCMOS18 | DRIVE=8;# DATA13
+NET "imx27_wb16_wrapper00_imx_data<14>" LOC="M10" | IOSTANDARD=LVCMOS18 | DRIVE=8;# DATA14
+NET "imx27_wb16_wrapper00_imx_data<15>" LOC="T10" | IOSTANDARD=LVCMOS18 | DRIVE=8;# DATA15
+
+NET "rstgen_syscon00_ext_clk" LOC="N9" | IOSTANDARD=LVCMOS18;# CLK0
+NET "rstgen_syscon00_ext_clk" TNM_NET = "rstgen_syscon00_ext_clk";
+TIMESPEC "TS_rstgen_syscon00_ext_clk" = PERIOD "rstgen_syscon00_ext_clk" 10 ns HIGH 50 %;
+
+NET "imx27_wb16_wrapper00_imx_eb0_n" LOC="P9" | IOSTANDARD=LVCMOS18;# EB0N
+NET "imx27_wb16_wrapper00_imx_oe_n" LOC="R9" | IOSTANDARD=LVCMOS18;# OEN
+
+NET "imx27_wb16_wrapper00_imx_address<0>" LOC="N5" | IOSTANDARD=LVCMOS18; # ADDR1
+NET "imx27_wb16_wrapper00_imx_address<1>" LOC="L7" | IOSTANDARD=LVCMOS18; # ADDR2
+NET "imx27_wb16_wrapper00_imx_address<2>" LOC="M7" | IOSTANDARD=LVCMOS18; # ADDR3
+NET "imx27_wb16_wrapper00_imx_address<3>" LOC="M8" | IOSTANDARD=LVCMOS18; # ADDR4
+NET "imx27_wb16_wrapper00_imx_address<4>" LOC="L8" | IOSTANDARD=LVCMOS18; # ADDR5
+NET "imx27_wb16_wrapper00_imx_address<5>" LOC="L9" | IOSTANDARD=LVCMOS18; # ADDR6
+NET "imx27_wb16_wrapper00_imx_address<6>" LOC="L10" | IOSTANDARD=LVCMOS18; # ADDR7
+NET "imx27_wb16_wrapper00_imx_address<7>" LOC="M11" | IOSTANDARD=LVCMOS18; # ADDR8
+NET "imx27_wb16_wrapper00_imx_address<8>" LOC="P11" | IOSTANDARD=LVCMOS18; # ADDR9
+NET "imx27_wb16_wrapper00_imx_address<9>" LOC="N11" | IOSTANDARD=LVCMOS18; # ADDR10
+NET "imx27_wb16_wrapper00_imx_address<10>" LOC="N12" | IOSTANDARD=LVCMOS18; # ADDR11
+NET "imx27_wb16_wrapper00_imx_address<11>" LOC="P13" | IOSTANDARD=LVCMOS18; # ADDR12
+
+NET "spartanconf_selectmap_data<1>" LOC="D13" | IOSTANDARD=LVCMOS18 | DRIVE=8; # IO_L01P_0
+NET "spartanconf_selectmap_data<0>" LOC="C13" | IOSTANDARD=LVCMOS18 | DRIVE=8; # IO_L01N_0
+NET "spartanconf_selectmap_data<8>" LOC="B15" | IOSTANDARD=LVCMOS18 | DRIVE=8; # IO_L02P_0
+NET "spartanconf_selectmap_data<9>" LOC="B14" | IOSTANDARD=LVCMOS18 | DRIVE=8; # IO_L02N_0
+NET "spartanconf_selectmap_data<6>" LOC="A14" | IOSTANDARD=LVCMOS18 | DRIVE=8; # IO_L04P_0
+NET "spartanconf_selectmap_data<7>" LOC="A13" | IOSTANDARD=LVCMOS18 | DRIVE=8; # IO_L04N_0
+NET "spartanconf_selectmap_data<2>" LOC="C9" | IOSTANDARD=LVCMOS18 | DRIVE=8; # IO_L10P_0
+NET "spartanconf_selectmap_data<3>" LOC="A9" | IOSTANDARD=LVCMOS18 | DRIVE=8; # IO_L10N_0
+NET "spartanconf_selectmap_data<11>" LOC="A8" | IOSTANDARD=LVCMOS18 | DRIVE=8; # IO_L12P_0
+NET "spartanconf_selectmap_data<10>" LOC="B8" | IOSTANDARD=LVCMOS18 | DRIVE=8; # IO_L12N_0
+NET "spartanconf_selectmap_data<4>" LOC="B10" | IOSTANDARD=LVCMOS18 | DRIVE=8; # IO_L08P_0
+NET "spartanconf_selectmap_data<5>" LOC="A10" | IOSTANDARD=LVCMOS18 | DRIVE=8; # IO_L08N_0
+NET "spartanconf_selectmap_data<13>" LOC="D7" | IOSTANDARD=LVCMOS18 | DRIVE=8; # IO_L16P_0
+NET "spartanconf_selectmap_data<12>" LOC="C6" | IOSTANDARD=LVCMOS18 | DRIVE=8; # IO_L16N_0
+NET "spartanconf_selectmap_data<15>" LOC="A4" | IOSTANDARD=LVCMOS18 | DRIVE=8; # IO_L18P_0
+NET "spartanconf_selectmap_data<14>" LOC="B4" | IOSTANDARD=LVCMOS18 | DRIVE=8; # IO_L18N_0
+NET "spartanconf_selectmap_busy" LOC="B3" | IOSTANDARD=LVCMOS18 | DRIVE=8; # IO_L19N_0
+NET "spartanconf_selectmap_init_n" LOC="E14" | IOSTANDARD=LVCMOS18 | DRIVE=8; # IO_L20P_1
+NET "spartanconf_selectmap_csi_n" LOC="F13" | IOSTANDARD=LVCMOS18 | DRIVE=8; # IO_L20N_1
+NET "spartanconf_selectmap_done" LOC="D16" | IOSTANDARD=LVCMOS18 | DRIVE=8; # IO_L22P_1
+NET "spartanconf_selectmap_cclk" LOC="D15" | IOSTANDARD=LVCMOS18 | DRIVE=8; # IO_L22N_1
+NET "spartanconf_selectmap_rdwr_n" LOC="E13" | IOSTANDARD=LVCMOS18 | DRIVE=8; # IO_L23P_1
+NET "spartanconf_selectmap_program_n" LOC="D14" | IOSTANDARD=LVCMOS18 | DRIVE=8; # IO_L23N_1
+
+NET "spartanconf_selectmap_spare1" LOC="C2" | IOSTANDARD=LVCMOS18 | DRIVE=8; # IO_L01P_3
+NET "spartanconf_selectmap_spare2" LOC="D4" | IOSTANDARD=LVCMOS18 | DRIVE=8; # IO_L02P_3
+NET "spartanconf_selectmap_spare3" LOC="D1" | IOSTANDARD=LVCMOS18 | DRIVE=8; # IO_L03P_3
+
+#end
diff --git a/firmware/sp_vision_config/synthesis/top_testconfig.vhd b/firmware/sp_vision_config/synthesis/top_testconfig.vhd
new file mode 100644
index 0000000..d93df01
--- /dev/null
+++ b/firmware/sp_vision_config/synthesis/top_testconfig.vhd
@@ -0,0 +1,372 @@
+---------------------------------------------------------------------------
+-- Company : Automaticaly generated by POD
+-- Author(s) :
+--
+-- Creation Date : 2010-10-21
+-- File : Top_testconfig.vhd
+--
+-- Abstract :
+-- insert a description here
+--
+---------------------------------------------------------------------------
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.numeric_std.all;
+
+entity top_testconfig is
+
+ port
+ (
+ -- imx27_wb16_wrapper00-eim
+ imx27_wb16_wrapper00_imx_cs_n : in std_logic;
+ -- imx27_wb16_wrapper00-eim
+ imx27_wb16_wrapper00_imx_data : inout std_logic_vector(15 downto 0);
+ -- rstgen_syscon00-clk_ext
+ rstgen_syscon00_ext_clk : in std_logic;
+ -- imx27_wb16_wrapper00-eim
+ imx27_wb16_wrapper00_imx_eb0_n : in std_logic;
+ -- imx27_wb16_wrapper00-eim
+ imx27_wb16_wrapper00_imx_oe_n : in std_logic;
+ -- imx27_wb16_wrapper00-eim
+ imx27_wb16_wrapper00_imx_address : in std_logic_vector(11 downto 0);
+ -- spartanconf-selectmap
+ spartanconf_selectmap_data : inout std_logic_vector(15 downto 0);
+ -- spartanconf-selectmap
+ spartanconf_selectmap_busy : in std_logic;
+ -- spartanconf-selectmap
+ spartanconf_selectmap_init_n : in std_logic;
+ -- spartanconf-selectmap
+ spartanconf_selectmap_csi_n : inout std_logic;
+ -- spartanconf-selectmap
+ spartanconf_selectmap_done : in std_logic;
+ -- spartanconf-selectmap
+ spartanconf_selectmap_cclk : inout std_logic;
+ -- spartanconf-selectmap
+ spartanconf_selectmap_rdwr_n : inout std_logic;
+ -- spartanconf-selectmap
+ spartanconf_selectmap_program_n : inout std_logic;
+ -- spartanconf-selectmap
+ spartanconf_selectmap_spare1 : in std_logic ;
+ -- spartanconf-selectmap
+ spartanconf_selectmap_spare2 : in std_logic ;
+ -- spartanconf-selectmap
+ spartanconf_selectmap_spare3 : in std_logic
+
+ );
+end entity top_testconfig;
+
+architecture top_testconfig_1 of top_testconfig is
+ -------------------------
+ -- declare components --
+ -------------------------
+
+
+ component imx27_wb16_wrapper00_mwb16
+ port (
+ -- spartanconf_wbs
+ spartanconf_wbs_add : out std_logic_vector(1 downto 0);
+ spartanconf_wbs_writedata : out std_logic_vector(15 downto 0);
+ spartanconf_wbs_readdata : in std_logic_vector(15 downto 0);
+ spartanconf_wbs_strobe : out std_logic;
+ spartanconf_wbs_cycle : out std_logic;
+ spartanconf_wbs_write : out std_logic;
+ spartanconf_wbs_ack : in std_logic;
+ -- spartanconf_candr
+ spartanconf_clk : out std_logic;
+ spartanconf_reset : out std_logic;
+ -- imx27_wb16_wrapper00_mwb16
+ imx27_wb16_wrapper00_wbm_address : in std_logic_vector(12 downto 0);
+ imx27_wb16_wrapper00_wbm_readdata : out std_logic_vector(15 downto 0);
+ imx27_wb16_wrapper00_wbm_writedata : in std_logic_vector(15 downto 0);
+ imx27_wb16_wrapper00_wbm_strobe : in std_logic;
+ imx27_wb16_wrapper00_wbm_write : in std_logic;
+ imx27_wb16_wrapper00_wbm_ack : out std_logic;
+ imx27_wb16_wrapper00_wbm_cycle : in std_logic;
+ -- imx27_wb16_wrapper00_candr
+ imx27_wb16_wrapper00_gls_reset : out std_logic;
+ imx27_wb16_wrapper00_gls_clk : out std_logic;
+ -- rstgen_syscon00_imx27_wb16_wrapper00
+ rstgen_syscon00_gls_clk : in std_logic;
+ rstgen_syscon00_gls_reset : in std_logic
+ );
+ end component;
+
+ component spartan_select_map
+ generic(
+ id : natural := 1;
+ wb_size : natural := 16;
+ clk_freq : natural := 100000
+ );
+ port (
+ -- candr
+ clk : in std_logic;
+ reset : in std_logic;
+ -- wbs
+ wbs_add : in std_logic_vector(1 downto 0);
+ wbs_writedata : in std_logic_vector(15 downto 0);
+ wbs_readdata : out std_logic_vector(15 downto 0);
+ wbs_strobe : in std_logic;
+ wbs_cycle : in std_logic;
+ wbs_write : in std_logic;
+ wbs_ack : out std_logic;
+ -- selectmap
+ selectmap_data : inout std_logic_vector(15 downto 0);
+ selectmap_csi_n : inout std_logic;
+ selectmap_rdwr_n : inout std_logic;
+ selectmap_cclk : inout std_logic;
+ selectmap_program_n : inout std_logic;
+ selectmap_init_n: in std_logic;
+ selectmap_busy : in std_logic;
+ selectmap_done : in std_logic;
+ selectmap_spare1: in std_logic;
+ selectmap_spare2: in std_logic;
+ selectmap_spare3: in std_logic
+ );
+ end component;
+
+ component imx27_wb16_wrapper
+ port (
+ -- eim
+ imx_address : in std_logic_vector(11 downto 0);
+ imx_data : inout std_logic_vector(15 downto 0);
+ imx_cs_n : in std_logic;
+ imx_oe_n : in std_logic;
+ imx_eb0_n : in std_logic;
+ -- candr
+ gls_reset : in std_logic;
+ gls_clk : in std_logic;
+ -- mwb16
+ wbm_address : out std_logic_vector(12 downto 0);
+ wbm_readdata : in std_logic_vector(15 downto 0);
+ wbm_writedata : out std_logic_vector(15 downto 0);
+ wbm_strobe : out std_logic;
+ wbm_write : out std_logic;
+ wbm_ack : in std_logic;
+ wbm_cycle : out std_logic
+ );
+ end component;
+
+ component rstgen_syscon
+ port (
+ -- candr
+ gls_clk : out std_logic;
+ gls_reset : out std_logic;
+ -- clk_ext
+ ext_clk : in std_logic
+ );
+ end component;
+ -------------------------
+ -- Signals declaration
+ -------------------------
+
+ -- imx27_wb16_wrapper00
+ -- eim
+ -- candr
+ signal imx27_wb16_wrapper00_gls_reset : std_logic;
+ signal imx27_wb16_wrapper00_gls_clk : std_logic;
+ -- mwb16
+ signal imx27_wb16_wrapper00_wbm_address : std_logic_vector(12 downto 0);
+ signal imx27_wb16_wrapper00_wbm_readdata : std_logic_vector(15 downto 0);
+ signal imx27_wb16_wrapper00_wbm_writedata : std_logic_vector(15 downto 0);
+ signal imx27_wb16_wrapper00_wbm_strobe : std_logic;
+ signal imx27_wb16_wrapper00_wbm_write : std_logic;
+ signal imx27_wb16_wrapper00_wbm_ack : std_logic;
+ signal imx27_wb16_wrapper00_wbm_cycle : std_logic;
+
+ -- rstgen_syscon00
+ -- candr
+ signal rstgen_syscon00_gls_clk : std_logic;
+ signal rstgen_syscon00_gls_reset : std_logic;
+ -- clk_ext
+
+ -- spartanconf
+ -- candr
+ signal spartanconf_clk : std_logic;
+ signal spartanconf_reset : std_logic;
+ -- wbs
+ signal spartanconf_wbs_add : std_logic_vector(1 downto 0);
+ signal spartanconf_wbs_writedata : std_logic_vector(15 downto 0);
+ signal spartanconf_wbs_readdata : std_logic_vector(15 downto 0);
+ signal spartanconf_wbs_strobe : std_logic;
+ signal spartanconf_wbs_cycle : std_logic;
+ signal spartanconf_wbs_write : std_logic;
+ signal spartanconf_wbs_ack : std_logic;
+ -- selectmap
+
+ -- imx27_wb16_wrapper00_mwb16_intercon
+ -- spartanconf_wbs
+ signal imx27_wb16_wrapper00_mwb16_intercon_spartanconf_wbs_add : std_logic_vector(1 downto 0);
+ signal imx27_wb16_wrapper00_mwb16_intercon_spartanconf_wbs_writedata : std_logic_vector(15 downto 0);
+ signal imx27_wb16_wrapper00_mwb16_intercon_spartanconf_wbs_readdata : std_logic_vector(15 downto 0);
+ signal imx27_wb16_wrapper00_mwb16_intercon_spartanconf_wbs_strobe : std_logic;
+ signal imx27_wb16_wrapper00_mwb16_intercon_spartanconf_wbs_cycle : std_logic;
+ signal imx27_wb16_wrapper00_mwb16_intercon_spartanconf_wbs_write : std_logic;
+ signal imx27_wb16_wrapper00_mwb16_intercon_spartanconf_wbs_ack : std_logic;
+ -- spartanconf_candr
+ signal imx27_wb16_wrapper00_mwb16_intercon_spartanconf_clk : std_logic;
+ signal imx27_wb16_wrapper00_mwb16_intercon_spartanconf_reset : std_logic;
+ -- imx27_wb16_wrapper00_mwb16
+ signal imx27_wb16_wrapper00_mwb16_intercon_imx27_wb16_wrapper00_wbm_address : std_logic_vector(12 downto 0);
+ signal imx27_wb16_wrapper00_mwb16_intercon_imx27_wb16_wrapper00_wbm_readdata : std_logic_vector(15 downto 0);
+ signal imx27_wb16_wrapper00_mwb16_intercon_imx27_wb16_wrapper00_wbm_writedata : std_logic_vector(15 downto 0);
+ signal imx27_wb16_wrapper00_mwb16_intercon_imx27_wb16_wrapper00_wbm_strobe : std_logic;
+ signal imx27_wb16_wrapper00_mwb16_intercon_imx27_wb16_wrapper00_wbm_write : std_logic;
+ signal imx27_wb16_wrapper00_mwb16_intercon_imx27_wb16_wrapper00_wbm_ack : std_logic;
+ signal imx27_wb16_wrapper00_mwb16_intercon_imx27_wb16_wrapper00_wbm_cycle : std_logic;
+ -- imx27_wb16_wrapper00_candr
+ signal imx27_wb16_wrapper00_mwb16_intercon_imx27_wb16_wrapper00_gls_reset : std_logic;
+ signal imx27_wb16_wrapper00_mwb16_intercon_imx27_wb16_wrapper00_gls_clk : std_logic;
+ -- rstgen_syscon00_imx27_wb16_wrapper00
+ signal imx27_wb16_wrapper00_mwb16_intercon_rstgen_syscon00_gls_clk : std_logic;
+ signal imx27_wb16_wrapper00_mwb16_intercon_rstgen_syscon00_gls_reset : std_logic;
+
+ -- void pins
+
+begin
+
+ -------------------
+ -- Set forces --
+ -------------------
+
+ -------------------------
+ -- declare instances
+ -------------------------
+
+ imx27_wb16_wrapper00 : imx27_wb16_wrapper
+ port map (
+ -- eim
+ imx_address => imx27_wb16_wrapper00_imx_address,
+ imx_data => imx27_wb16_wrapper00_imx_data,
+ imx_cs_n => imx27_wb16_wrapper00_imx_cs_n,
+ imx_oe_n => imx27_wb16_wrapper00_imx_oe_n,
+ imx_eb0_n => imx27_wb16_wrapper00_imx_eb0_n,
+ -- candr
+ gls_reset => imx27_wb16_wrapper00_gls_reset,
+ gls_clk => imx27_wb16_wrapper00_gls_clk,
+ -- mwb16
+ wbm_address => imx27_wb16_wrapper00_wbm_address,
+ wbm_readdata => imx27_wb16_wrapper00_wbm_readdata,
+ wbm_writedata => imx27_wb16_wrapper00_wbm_writedata,
+ wbm_strobe => imx27_wb16_wrapper00_wbm_strobe,
+ wbm_write => imx27_wb16_wrapper00_wbm_write,
+ wbm_ack => imx27_wb16_wrapper00_wbm_ack,
+ wbm_cycle => imx27_wb16_wrapper00_wbm_cycle
+ );
+
+ rstgen_syscon00 : rstgen_syscon
+ port map (
+ -- candr
+ gls_clk => rstgen_syscon00_gls_clk,
+ gls_reset => rstgen_syscon00_gls_reset,
+ -- clk_ext
+ ext_clk => rstgen_syscon00_ext_clk
+ );
+
+ spartanconf : spartan_select_map
+ generic map (
+ id => 1,
+ wb_size => 16,
+ clk_freq => 100000
+ )
+ port map (
+ -- candr
+ clk => spartanconf_clk,
+ reset => spartanconf_reset,
+ -- wbs
+ wbs_add => spartanconf_wbs_add,
+ wbs_writedata => spartanconf_wbs_writedata,
+ wbs_readdata => spartanconf_wbs_readdata,
+ wbs_strobe => spartanconf_wbs_strobe,
+ wbs_cycle => spartanconf_wbs_cycle,
+ wbs_write => spartanconf_wbs_write,
+ wbs_ack => spartanconf_wbs_ack,
+ -- selectmap
+ selectmap_data => spartanconf_selectmap_data,
+ selectmap_csi_n => spartanconf_selectmap_csi_n,
+ selectmap_rdwr_n => spartanconf_selectmap_rdwr_n,
+ selectmap_cclk => spartanconf_selectmap_cclk,
+ selectmap_program_n => spartanconf_selectmap_program_n,
+ selectmap_init_n => spartanconf_selectmap_init_n,
+ selectmap_busy => spartanconf_selectmap_busy,
+ selectmap_done => spartanconf_selectmap_done,
+ selectmap_spare1 => spartanconf_selectmap_spare1,
+ selectmap_spare2 => spartanconf_selectmap_spare2,
+ selectmap_spare3 => spartanconf_selectmap_spare3
+ );
+
+ imx27_wb16_wrapper00_mwb16_intercon : imx27_wb16_wrapper00_mwb16
+ port map (
+ -- spartanconf_wbs
+ spartanconf_wbs_add => imx27_wb16_wrapper00_mwb16_intercon_spartanconf_wbs_add,
+ spartanconf_wbs_writedata => imx27_wb16_wrapper00_mwb16_intercon_spartanconf_wbs_writedata,
+ spartanconf_wbs_readdata => imx27_wb16_wrapper00_mwb16_intercon_spartanconf_wbs_readdata,
+ spartanconf_wbs_strobe => imx27_wb16_wrapper00_mwb16_intercon_spartanconf_wbs_strobe,
+ spartanconf_wbs_cycle => imx27_wb16_wrapper00_mwb16_intercon_spartanconf_wbs_cycle,
+ spartanconf_wbs_write => imx27_wb16_wrapper00_mwb16_intercon_spartanconf_wbs_write,
+ spartanconf_wbs_ack => imx27_wb16_wrapper00_mwb16_intercon_spartanconf_wbs_ack,
+ -- spartanconf_candr
+ spartanconf_clk => imx27_wb16_wrapper00_mwb16_intercon_spartanconf_clk,
+ spartanconf_reset => imx27_wb16_wrapper00_mwb16_intercon_spartanconf_reset,
+ -- imx27_wb16_wrapper00_mwb16
+ imx27_wb16_wrapper00_wbm_address => imx27_wb16_wrapper00_mwb16_intercon_imx27_wb16_wrapper00_wbm_address,
+ imx27_wb16_wrapper00_wbm_readdata => imx27_wb16_wrapper00_mwb16_intercon_imx27_wb16_wrapper00_wbm_readdata,
+ imx27_wb16_wrapper00_wbm_writedata => imx27_wb16_wrapper00_mwb16_intercon_imx27_wb16_wrapper00_wbm_writedata,
+ imx27_wb16_wrapper00_wbm_strobe => imx27_wb16_wrapper00_mwb16_intercon_imx27_wb16_wrapper00_wbm_strobe,
+ imx27_wb16_wrapper00_wbm_write => imx27_wb16_wrapper00_mwb16_intercon_imx27_wb16_wrapper00_wbm_write,
+ imx27_wb16_wrapper00_wbm_ack => imx27_wb16_wrapper00_mwb16_intercon_imx27_wb16_wrapper00_wbm_ack,
+ imx27_wb16_wrapper00_wbm_cycle => imx27_wb16_wrapper00_mwb16_intercon_imx27_wb16_wrapper00_wbm_cycle,
+ -- imx27_wb16_wrapper00_candr
+ imx27_wb16_wrapper00_gls_reset => imx27_wb16_wrapper00_mwb16_intercon_imx27_wb16_wrapper00_gls_reset,
+ imx27_wb16_wrapper00_gls_clk => imx27_wb16_wrapper00_mwb16_intercon_imx27_wb16_wrapper00_gls_clk,
+ -- rstgen_syscon00_imx27_wb16_wrapper00
+ rstgen_syscon00_gls_clk => imx27_wb16_wrapper00_mwb16_intercon_rstgen_syscon00_gls_clk,
+ rstgen_syscon00_gls_reset => imx27_wb16_wrapper00_mwb16_intercon_rstgen_syscon00_gls_reset
+ );
+
+ ---------------------------
+ -- instances connections --
+ ---------------------------
+
+ -- connect imx27_wb16_wrapper00
+ -- eim
+ -- candr
+ imx27_wb16_wrapper00_gls_reset <= imx27_wb16_wrapper00_mwb16_intercon_imx27_wb16_wrapper00_gls_reset;
+ imx27_wb16_wrapper00_gls_clk <= imx27_wb16_wrapper00_mwb16_intercon_imx27_wb16_wrapper00_gls_clk;
+ -- mwb16
+ imx27_wb16_wrapper00_wbm_readdata <= imx27_wb16_wrapper00_mwb16_intercon_imx27_wb16_wrapper00_wbm_readdata;
+ imx27_wb16_wrapper00_wbm_ack <= imx27_wb16_wrapper00_mwb16_intercon_imx27_wb16_wrapper00_wbm_ack;
+
+ -- connect rstgen_syscon00
+ -- candr
+ -- clk_ext
+
+ -- connect spartanconf
+ -- candr
+ spartanconf_clk <= imx27_wb16_wrapper00_mwb16_intercon_spartanconf_clk;
+ spartanconf_reset <= imx27_wb16_wrapper00_mwb16_intercon_spartanconf_reset;
+ -- wbs
+ spartanconf_wbs_add <= imx27_wb16_wrapper00_mwb16_intercon_spartanconf_wbs_add;
+ spartanconf_wbs_writedata <= imx27_wb16_wrapper00_mwb16_intercon_spartanconf_wbs_writedata;
+ spartanconf_wbs_strobe <= imx27_wb16_wrapper00_mwb16_intercon_spartanconf_wbs_strobe;
+ spartanconf_wbs_cycle <= imx27_wb16_wrapper00_mwb16_intercon_spartanconf_wbs_cycle;
+ spartanconf_wbs_write <= imx27_wb16_wrapper00_mwb16_intercon_spartanconf_wbs_write;
+ -- selectmap
+
+ -- connect imx27_wb16_wrapper00_mwb16_intercon
+ -- spartanconf_wbs
+ imx27_wb16_wrapper00_mwb16_intercon_spartanconf_wbs_readdata <= spartanconf_wbs_readdata;
+ imx27_wb16_wrapper00_mwb16_intercon_spartanconf_wbs_ack <= spartanconf_wbs_ack;
+ -- spartanconf_candr
+ -- imx27_wb16_wrapper00_mwb16
+ imx27_wb16_wrapper00_mwb16_intercon_imx27_wb16_wrapper00_wbm_address <= imx27_wb16_wrapper00_wbm_address;
+ imx27_wb16_wrapper00_mwb16_intercon_imx27_wb16_wrapper00_wbm_writedata <= imx27_wb16_wrapper00_wbm_writedata;
+ imx27_wb16_wrapper00_mwb16_intercon_imx27_wb16_wrapper00_wbm_strobe <= imx27_wb16_wrapper00_wbm_strobe;
+ imx27_wb16_wrapper00_mwb16_intercon_imx27_wb16_wrapper00_wbm_write <= imx27_wb16_wrapper00_wbm_write;
+ imx27_wb16_wrapper00_mwb16_intercon_imx27_wb16_wrapper00_wbm_cycle <= imx27_wb16_wrapper00_wbm_cycle;
+ -- imx27_wb16_wrapper00_candr
+ -- rstgen_syscon00_imx27_wb16_wrapper00
+ imx27_wb16_wrapper00_mwb16_intercon_rstgen_syscon00_gls_clk <= rstgen_syscon00_gls_clk;
+ imx27_wb16_wrapper00_mwb16_intercon_rstgen_syscon00_gls_reset <= rstgen_syscon00_gls_reset;
+
+end architecture top_testconfig_1;
hooks/post-receive
--
armadeus
|
|
From: Fabien M <fa...@us...> - 2011-01-05 14:18:31
|
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 fb2661a8a1a98185fca36de444d0cf4b71eb2ec6 (commit)
from 44b7df9db377469f1e97d17225d82640532f943d (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 fb2661a8a1a98185fca36de444d0cf4b71eb2ec6
Author: Fabien Marteau <fab...@ar...>
Date: Wed Jan 5 14:58:12 2011 +0100
[U-BOOT] Clean apf27 patch, suppressing trailling white spaces
-----------------------------------------------------------------------
Summary of changes:
.../target/u-boot/u-boot-1.3.4-310-apf27.patch | 658 ++++++++++----------
1 files changed, 343 insertions(+), 315 deletions(-)
diff --git a/buildroot/target/u-boot/u-boot-1.3.4-310-apf27.patch b/buildroot/target/u-boot/u-boot-1.3.4-310-apf27.patch
index 77fb2a1..61bedd3 100644
--- a/buildroot/target/u-boot/u-boot-1.3.4-310-apf27.patch
+++ b/buildroot/target/u-boot/u-boot-1.3.4-310-apf27.patch
@@ -1,9 +1,11 @@
---- ref/u-boot-1.3.4/board/armadeus/apf27/apf27.c 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot-1.3.4/board/armadeus/apf27/apf27.c 2009-01-07 18:20:15.000000000 +0100
+Index: u-boot-1.3.4/board/armadeus/apf27/apf27.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ u-boot-1.3.4/board/armadeus/apf27/apf27.c 2011-01-05 14:52:33.000000000 +0100
@@ -0,0 +1,181 @@
+/*
-+ * Copyright (C) 2007 Sascha Hauer, Pengutronix
-+ * Copyright (C) 2008,2009 Eric Jarrige <jo...@us...>
++ * Copyright (C) 2007 Sascha Hauer, Pengutronix
++ * Copyright (C) 2008,2009 Eric Jarrige <jo...@us...>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
@@ -147,7 +149,7 @@
+ APF27_init_fpga (firmware_buffer, size);
+#endif
+
-+ /* detect compatibility issue of environment version */
++ /* detect compatibility issue of environment version */
+ s = getenv ("env_version");
+ if (( NULL == s ) || (0 != strcmp(s, CONFIG_ENV_VERSION))) {
+ printf("*** Warning - Environment version change suggests: "
@@ -156,7 +158,7 @@
+
+ /* Unlock whole flash but U-Boot */
+ s = getenv ("env_offset");
-+ offset = CFG_ENV_OFFSET;
++ offset = CFG_ENV_OFFSET;
+ if ((s != NULL) && (0 != strcmp(s, "0"))) {
+ offset = simple_strtoul(s, NULL, 16);
+ }
@@ -164,7 +166,7 @@
+ if (nand_unlock(&nand_info[0], offset, nand_info[0].size - offset)) {
+ printf("NAND flash lock/unlocked failed\n");
+ }
-+
++
+
+ return 0;
+}
@@ -182,8 +184,10 @@
+ printf("Armadeus APF2\n");
+ return 0;
+}
---- ref/u-boot-1.3.4/board/armadeus/apf27/config.mk 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot-1.3.4/board/armadeus/apf27/config.mk 2008-12-29 16:27:49.000000000 +0100
+Index: u-boot-1.3.4/board/armadeus/apf27/config.mk
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ u-boot-1.3.4/board/armadeus/apf27/config.mk 2011-01-05 14:24:05.000000000 +0100
@@ -0,0 +1,13 @@
+#
+# This config file is used for compilation of armadeus sources
@@ -198,269 +202,273 @@
+TEXT_BASE = 0xAFF00000
+endif
+CONFIG_NAND_U_BOOT = y
---- ref/u-boot-1.3.4/board/armadeus/apf27/fpga.c 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot-1.3.4/board/armadeus/apf27/fpga.c 2008-12-29 16:27:49.000000000 +0100
+Index: u-boot-1.3.4/board/armadeus/apf27/fpga.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ u-boot-1.3.4/board/armadeus/apf27/fpga.c 2011-01-05 14:51:48.000000000 +0100
@@ -0,0 +1,258 @@
-+ /*
-+ * (C) Copyright 2002-2008
-+ * Eric Jarrige <eri...@ar...>
-+ * Rich Ireland, Enterasys Networks, rir...@en....
-+ * Keith Outwater, kei...@mv....
-+ *
-+ * See file CREDITS for list of people who contributed to this
-+ * project.
-+ *
-+ * 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., 59 Temple Place, Suite 330, Boston,
-+ * MA 02111-1307 USA
-+ *
-+ */
-+ #include <common.h>
-+
-+ #if defined(CONFIG_FPGA)
-+
-+ #include <asm/arch/imx-regs.h>
-+ #include <asm/io.h>
-+ #include <command.h>
-+ #include <config.h>
-+ #include "fpga.h"
-+ #include <spartan3.h>
-+
-+ #define GPIO_PORT(x) ((x & GPIO_PORT_MASK) >> GPIO_PORT_SHIFT)
-+ #define GPIO_SET(x) (DR(GPIO_PORT(x)) |= (1<<(x & GPIO_PIN_MASK)))
-+ #define GPIO_CLEAR(x) (DR(GPIO_PORT(x)) &= ~(1<<(x & GPIO_PIN_MASK)))
-+ #define GPIO_WRITE(x,y) ( y ? GPIO_SET(x) : GPIO_CLEAR(x) )
-+ #define GPIO_READ(x) ((SSR (GPIO_PORT(x)) & (1<<(x & GPIO_PIN_MASK)))>> \
-+ (x & GPIO_PIN_MASK))
-+ #ifdef FPGA_DEBUG
-+ #define PRINTF(fmt,args...) printf (fmt ,##args)
-+ #else
-+ #define PRINTF(fmt,args...)
-+ #endif
-+
-+ /* Note that these are pointers to code that is in Flash. They will be
-+ * relocated at runtime.
-+ * Spartan2 code is used to download our Spartan 3 :) code is compatible.
-+ * Just take care about the file size
++/*
++ * (C) Copyright 2002-2008
++ * Eric Jarrige <eri...@ar...>
++ * Rich Ireland, Enterasys Networks, rir...@en....
++ * Keith Outwater, kei...@mv....
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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., 59 Temple Place, Suite 330, Boston,
++ * MA 02111-1307 USA
++ *
+ */
-+ Xilinx_Spartan3_Slave_Parallel_fns fpga_fns = {
-+ fpga_pre_fn,
-+ fpga_pgm_fn,
-+ fpga_init_fn,
-+ NULL,
-+ fpga_done_fn,
-+ fpga_clk_fn,
-+ fpga_cs_fn,
-+ fpga_wr_fn,
-+ fpga_rdata_fn,
-+ fpga_wdata_fn,
-+ fpga_busy_fn,
-+ fpga_abort_fn,
-+ fpga_post_fn,
-+ };
-+
-+ Xilinx_desc fpga[CONFIG_FPGA_COUNT] = {
-+ {Xilinx_Spartan3,
-+ slave_parallel,
-+ 1196128l/8,
-+ (void *) &fpga_fns,
-+ 0}
-+ };
-+
-+ /*
-+ * nitialize GPIO port B before download
-+ */
-+ int
-+ fpga_pre_fn (int cookie)
-+ {
-+ // Initialize GPIO pins
-+ GPIO_SET(CFG_FPGA_PWR);
-+ imx_gpio_mode (CFG_FPGA_INIT | GPIO_IN | GPIO_PUEN | GPIO_GPIO);
-+ imx_gpio_mode (CFG_FPGA_DONE | GPIO_IN | GPIO_PUEN | GPIO_GPIO);
-+ imx_gpio_mode (CFG_FPGA_PRG | GPIO_OUT | GPIO_PUEN | GPIO_GPIO);
-+ imx_gpio_mode (CFG_FPGA_CLK | GPIO_OUT | GPIO_PUEN | GPIO_GPIO);
-+ imx_gpio_mode (CFG_FPGA_RW | GPIO_OUT | GPIO_PUEN | GPIO_GPIO);
-+ imx_gpio_mode (CFG_FPGA_CS | GPIO_OUT | GPIO_PUEN | GPIO_GPIO);
-+ imx_gpio_mode (CFG_FPGA_SUSPEND | GPIO_OUT | GPIO_PUEN | GPIO_GPIO);
-+ GPIO_SET(CFG_FPGA_RESET);
-+ imx_gpio_mode (CFG_FPGA_RESET | GPIO_OUT | GPIO_PUEN | GPIO_GPIO);
-+ imx_gpio_mode (CFG_FPGA_PWR | GPIO_OUT | GPIO_PUEN | GPIO_GPIO);
-+ GPIO_SET(CFG_FPGA_PRG);
-+ GPIO_SET(CFG_FPGA_CLK);
-+ GPIO_SET(CFG_FPGA_RW);
-+ GPIO_SET(CFG_FPGA_CS);
-+ GPIO_CLEAR(CFG_FPGA_SUSPEND);
-+// GPIO_CLEAR(CFG_FPGA_RESET);
-+ GPIO_CLEAR(CFG_FPGA_PWR);
-+ udelay(30000); /*wait until supply started*/
-+
-+ return cookie;
-+ }
-+
-+ /*
-+ * Set the FPGA's active-low program line to the specified level
-+ */
-+ int
-+ fpga_pgm_fn (int assert, int flush, int cookie)
-+ {
-+ PRINTF ("%s:%d: FPGA PROGRAM %s", __FUNCTION__, __LINE__,
-+ assert?"high":"low");
-+ GPIO_WRITE( CFG_FPGA_PRG, !assert);
-+ return assert;
-+ }
-+
-+ /*
-+ * Set the FPGA's active-high clock line to the specified level
-+ */
-+ int
-+ fpga_clk_fn (int assert_clk, int flush, int cookie)
-+ {
-+ PRINTF ("%s:%d: FPGA CLOCK %s", __FUNCTION__, __LINE__,
-+ assert_clk?"high":"low");
-+ GPIO_WRITE( CFG_FPGA_CLK, !assert_clk);
-+ return assert_clk;
-+ }
-+
-+ /*
-+ * Test the state of the active-low FPGA INIT line. Return 1 on INIT
-+ * asserted (low).
-+ */
-+ int
-+ fpga_init_fn (int cookie)
-+ {
-+ int value;
-+ PRINTF ("%s:%d: INIT check... ", __FUNCTION__, __LINE__);
-+ value = GPIO_READ(CFG_FPGA_INIT);
-+ //printf("init value read %x",value);
-+ #ifdef CONFIG_SYS_FPGA_IS_PROTO
-+ return value;
-+ #else
-+ return !value;
-+ #endif
-+ }
-+
-+ /*
-+ * Test the state of the active-high FPGA DONE pin
-+ */
-+ int
-+ fpga_done_fn (int cookie)
-+ {
-+ PRINTF ("%s:%d: DONE check... %s", __FUNCTION__, __LINE__,
-+ GPIO_READ(CFG_FPGA_DONE)?"high":"low");
-+ return(GPIO_READ(CFG_FPGA_DONE)?FPGA_SUCCESS:FPGA_FAIL);
-+ }
-+
-+ /*
-+ * Set the FPGA's wr line to the specified level
-+ */
-+ int
-+ fpga_wr_fn (int assert_write, int flush, int cookie)
-+ {
-+ PRINTF ("%s:%d: FPGA RW... %s ", __FUNCTION__, __LINE__,
-+ assert_write?"high":"low");
-+ GPIO_WRITE( CFG_FPGA_RW, !assert_write);
-+ return assert_write;
-+ }
-+
-+ int
-+ fpga_cs_fn (int assert_cs, int flush, int cookie)
-+ {
-+ PRINTF ("%s:%d: FPGA CS %s ", __FUNCTION__, __LINE__,
-+ assert_cs?"high":"low");
-+ GPIO_WRITE( CFG_FPGA_CS, !assert_cs);
-+ return assert_cs;
-+ }
-+
-+ int
-+ fpga_rdata_fn ( unsigned char *data, int cookie )
-+ {
-+ PRINTF ("%s:%d: FPGA READ DATA %02X ", __FUNCTION__, __LINE__,
-+ *((char*)CFG_FPGA_RDATA));
-+ *data = (unsigned char)((*((unsigned short*)CFG_FPGA_RDATA))&0x00FF);
-+ return *data;
-+ }
-+
-+ int
-+ fpga_wdata_fn ( unsigned char data, int cookie )
-+ {
-+ PRINTF ("%s:%d: FPGA WRITE DATA %02X ", __FUNCTION__, __LINE__,
-+ data);
-+ *((unsigned short*)CFG_FPGA_WDATA) = data;
-+ return data;
-+ }
-+
-+ int
-+ fpga_abort_fn ( int cookie )
-+ {
-+ return cookie;
-+ }
-+
-+
-+ int
-+ fpga_busy_fn ( int cookie )
-+ {
-+ return 1;
-+ }
-+
-+ int
-+ fpga_post_fn (int cookie)
-+ {
-+ PRINTF ("%s:%d: FPGA POST ", __FUNCTION__, __LINE__);
-+
-+ imx_gpio_mode (CFG_FPGA_RW | GPIO_PF | GPIO_PUEN);
-+ imx_gpio_mode (CFG_FPGA_CS | GPIO_PF | GPIO_PUEN);
-+ imx_gpio_mode (CFG_FPGA_CLK | GPIO_PF | GPIO_PUEN);
-+ GPIO_SET(CFG_FPGA_PRG);
-+ GPIO_CLEAR(CFG_FPGA_RESET);
-+ imx_gpio_mode (CFG_FPGA_RESET | GPIO_OUT | GPIO_PUEN | GPIO_GPIO);
-+ return cookie;
-+ }
-+
-+ /*
-+ * Initialize the fpga. Return 1 on success, 0 on failure.
-+ */
-+ int
-+ APF27_init_fpga (u_char * buffer, size_t size)
-+ {
-+ char *autoload = getenv ("firmware_autoload");
-+ DECLARE_GLOBAL_DATA_PTR;
-+
-+ int i,lout=0;
-+
-+ PRINTF ("%s:%d: Initialize FPGA interface (relocation offset = 0x%.8lx)\n",
-+ __FUNCTION__, __LINE__, gd->reloc_off);
-+ fpga_init (gd->reloc_off);
-+
-+ for (i = 0; i < CONFIG_FPGA_COUNT; i++) {
-+ PRINTF ("%s:%d: Adding fpga %d\n", __FUNCTION__, __LINE__, i);
-+ fpga_add (fpga_xilinx, &fpga[i]);
-+ }
-+
-+ if ((size >= fpga[0].size) && ( autoload ) && (0 == strcmp(autoload, "1"))) {
-+ if (FPGA_SUCCESS != fpga_load( 0, (void *)buffer, size )) {
-+ lout = 1;
-+ printf("Firmware download failed!\n");
-+ }
-+ else
-+ printf("Firmware successfully programmed\n");
-+ }
-+ return lout;
-+ }
-+
-+ #endif /* CONFIG_FPGA */
---- ref/u-boot-1.3.4/board/armadeus/apf27/fpga.h 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot-1.3.4/board/armadeus/apf27/fpga.h 2008-12-29 16:27:49.000000000 +0100
++#include <common.h>
++
++#if defined(CONFIG_FPGA)
++
++#include <asm/arch/imx-regs.h>
++#include <asm/io.h>
++#include <command.h>
++#include <config.h>
++#include "fpga.h"
++#include <spartan3.h>
++
++#define GPIO_PORT(x) ((x & GPIO_PORT_MASK) >> GPIO_PORT_SHIFT)
++#define GPIO_SET(x) (DR(GPIO_PORT(x)) |= (1<<(x & GPIO_PIN_MASK)))
++#define GPIO_CLEAR(x) (DR(GPIO_PORT(x)) &= ~(1<<(x & GPIO_PIN_MASK)))
++#define GPIO_WRITE(x,y) ( y ? GPIO_SET(x) : GPIO_CLEAR(x) )
++#define GPIO_READ(x) ((SSR (GPIO_PORT(x)) & (1<<(x & GPIO_PIN_MASK)))>> \
++ (x & GPIO_PIN_MASK))
++#ifdef FPGA_DEBUG
++#define PRINTF(fmt,args...) printf (fmt ,##args)
++#else
++#define PRINTF(fmt,args...)
++#endif
++
++/* Note that these are pointers to code that is in Flash. They will be
++ * relocated at runtime.
++ * Spartan2 code is used to download our Spartan 3 :) code is compatible.
++ * Just take care about the file size
++*/
++Xilinx_Spartan3_Slave_Parallel_fns fpga_fns = {
++ fpga_pre_fn,
++ fpga_pgm_fn,
++ fpga_init_fn,
++ NULL,
++ fpga_done_fn,
++ fpga_clk_fn,
++ fpga_cs_fn,
++ fpga_wr_fn,
++ fpga_rdata_fn,
++ fpga_wdata_fn,
++ fpga_busy_fn,
++ fpga_abort_fn,
++ fpga_post_fn,
++};
++
++Xilinx_desc fpga[CONFIG_FPGA_COUNT] = {
++ {Xilinx_Spartan3,
++ slave_parallel,
++ 1196128l/8,
++ (void *) &fpga_fns,
++ 0}
++};
++
++/*
++ * nitialize GPIO port B before download
++ */
++int
++fpga_pre_fn (int cookie)
++{
++ // Initialize GPIO pins
++ GPIO_SET(CFG_FPGA_PWR);
++ imx_gpio_mode (CFG_FPGA_INIT | GPIO_IN | GPIO_PUEN | GPIO_GPIO);
++ imx_gpio_mode (CFG_FPGA_DONE | GPIO_IN | GPIO_PUEN | GPIO_GPIO);
++ imx_gpio_mode (CFG_FPGA_PRG | GPIO_OUT | GPIO_PUEN | GPIO_GPIO);
++ imx_gpio_mode (CFG_FPGA_CLK | GPIO_OUT | GPIO_PUEN | GPIO_GPIO);
++ imx_gpio_mode (CFG_FPGA_RW | GPIO_OUT | GPIO_PUEN | GPIO_GPIO);
++ imx_gpio_mode (CFG_FPGA_CS | GPIO_OUT | GPIO_PUEN | GPIO_GPIO);
++ imx_gpio_mode (CFG_FPGA_SUSPEND | GPIO_OUT | GPIO_PUEN | GPIO_GPIO);
++ GPIO_SET(CFG_FPGA_RESET);
++ imx_gpio_mode (CFG_FPGA_RESET | GPIO_OUT | GPIO_PUEN | GPIO_GPIO);
++ imx_gpio_mode (CFG_FPGA_PWR | GPIO_OUT | GPIO_PUEN | GPIO_GPIO);
++ GPIO_SET(CFG_FPGA_PRG);
++ GPIO_SET(CFG_FPGA_CLK);
++ GPIO_SET(CFG_FPGA_RW);
++ GPIO_SET(CFG_FPGA_CS);
++ GPIO_CLEAR(CFG_FPGA_SUSPEND);
++// GPIO_CLEAR(CFG_FPGA_RESET);
++ GPIO_CLEAR(CFG_FPGA_PWR);
++ udelay(30000); /*wait until supply started*/
++
++ return cookie;
++}
++
++/*
++ * Set the FPGA's active-low program line to the specified level
++ */
++int
++fpga_pgm_fn (int assert, int flush, int cookie)
++{
++ PRINTF ("%s:%d: FPGA PROGRAM %s", __FUNCTION__, __LINE__,
++ assert?"high":"low");
++ GPIO_WRITE( CFG_FPGA_PRG, !assert);
++ return assert;
++}
++
++/*
++ * Set the FPGA's active-high clock line to the specified level
++ */
++int
++fpga_clk_fn (int assert_clk, int flush, int cookie)
++{
++ PRINTF ("%s:%d: FPGA CLOCK %s", __FUNCTION__, __LINE__,
++ assert_clk?"high":"low");
++ GPIO_WRITE( CFG_FPGA_CLK, !assert_clk);
++ return assert_clk;
++}
++
++/*
++ * Test the state of the active-low FPGA INIT line. Return 1 on INIT
++ * asserted (low).
++ */
++int
++fpga_init_fn (int cookie)
++{
++ int value;
++ PRINTF ("%s:%d: INIT check... ", __FUNCTION__, __LINE__);
++ value = GPIO_READ(CFG_FPGA_INIT);
++ //printf("init value read %x",value);
++#ifdef CONFIG_SYS_FPGA_IS_PROTO
++ return value;
++#else
++ return !value;
++#endif
++}
++
++/*
++ * Test the state of the active-high FPGA DONE pin
++ */
++int
++fpga_done_fn (int cookie)
++{
++ PRINTF ("%s:%d: DONE check... %s", __FUNCTION__, __LINE__,
++ GPIO_READ(CFG_FPGA_DONE)?"high":"low");
++ return(GPIO_READ(CFG_FPGA_DONE)?FPGA_SUCCESS:FPGA_FAIL);
++}
++
++/*
++ * Set the FPGA's wr line to the specified level
++ */
++int
++fpga_wr_fn (int assert_write, int flush, int cookie)
++{
++ PRINTF ("%s:%d: FPGA RW... %s ", __FUNCTION__, __LINE__,
++ assert_write?"high":"low");
++ GPIO_WRITE( CFG_FPGA_RW, !assert_write);
++ return assert_write;
++}
++
++int
++fpga_cs_fn (int assert_cs, int flush, int cookie)
++{
++ PRINTF ("%s:%d: FPGA CS %s ", __FUNCTION__, __LINE__,
++ assert_cs?"high":"low");
++ GPIO_WRITE( CFG_FPGA_CS, !assert_cs);
++ return assert_cs;
++}
++
++int
++fpga_rdata_fn ( unsigned char *data, int cookie )
++{
++ PRINTF ("%s:%d: FPGA READ DATA %02X ", __FUNCTION__, __LINE__,
++ *((char*)CFG_FPGA_RDATA));
++ *data = (unsigned char)((*((unsigned short*)CFG_FPGA_RDATA))&0x00FF);
++ return *data;
++}
++
++int
++fpga_wdata_fn ( unsigned char data, int cookie )
++{
++ PRINTF ("%s:%d: FPGA WRITE DATA %02X ", __FUNCTION__, __LINE__,
++ data);
++ *((unsigned short*)CFG_FPGA_WDATA) = data;
++ return data;
++}
++
++int
++fpga_abort_fn ( int cookie )
++{
++ return cookie;
++}
++
++
++int
++fpga_busy_fn ( int cookie )
++{
++ return 1;
++}
++
++int
++fpga_post_fn (int cookie)
++{
++ PRINTF ("%s:%d: FPGA POST ", __FUNCTION__, __LINE__);
++
++ imx_gpio_mode (CFG_FPGA_RW | GPIO_PF | GPIO_PUEN);
++ imx_gpio_mode (CFG_FPGA_CS | GPIO_PF | GPIO_PUEN);
++ imx_gpio_mode (CFG_FPGA_CLK | GPIO_PF | GPIO_PUEN);
++ GPIO_SET(CFG_FPGA_PRG);
++ GPIO_CLEAR(CFG_FPGA_RESET);
++ imx_gpio_mode (CFG_FPGA_RESET | GPIO_OUT | GPIO_PUEN | GPIO_GPIO);
++ return cookie;
++}
++
++/*
++ * Initialize the fpga. Return 1 on success, 0 on failure.
++ */
++int
++APF27_init_fpga (u_char * buffer, size_t size)
++{
++ char *autoload = getenv ("firmware_autoload");
++ DECLARE_GLOBAL_DATA_PTR;
++
++ int i,lout=0;
++
++ PRINTF ("%s:%d: Initialize FPGA interface (relocation offset = 0x%.8lx)\n",
++ __FUNCTION__, __LINE__, gd->reloc_off);
++ fpga_init (gd->reloc_off);
++
++ for (i = 0; i < CONFIG_FPGA_COUNT; i++) {
++ PRINTF ("%s:%d: Adding fpga %d\n", __FUNCTION__, __LINE__, i);
++ fpga_add (fpga_xilinx, &fpga[i]);
++ }
++
++ if ((size >= fpga[0].size) && ( autoload ) && (0 == strcmp(autoload, "1"))) {
++ if (FPGA_SUCCESS != fpga_load( 0, (void *)buffer, size )) {
++ lout = 1;
++ printf("Firmware download failed!\n");
++ }
++ else
++ printf("Firmware successfully programmed\n");
++ }
++ return lout;
++}
++
++#endif /* CONFIG_FPGA */
+Index: u-boot-1.3.4/board/armadeus/apf27/fpga.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ u-boot-1.3.4/board/armadeus/apf27/fpga.h 2011-01-05 14:24:05.000000000 +0100
@@ -0,0 +1,39 @@
+/*
+ * (C) Copyright 2002-2008
@@ -501,8 +509,10 @@
+extern int fpga_abort_fn (int cookie);
+extern int fpga_post_fn (int cookie);
+extern int fpga_busy_fn (int cookie);
---- ref/u-boot-1.3.4/board/armadeus/apf27/lowlevel_init.S 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot-1.3.4/board/armadeus/apf27/lowlevel_init.S 2008-12-29 16:27:49.000000000 +0100
+Index: u-boot-1.3.4/board/armadeus/apf27/lowlevel_init.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ u-boot-1.3.4/board/armadeus/apf27/lowlevel_init.S 2011-01-05 14:50:39.000000000 +0100
@@ -0,0 +1,343 @@
+/*
+ * For clock initialization, see chapter 3 of the "MCIMX27 Multimedia
@@ -641,7 +651,7 @@
+ writel(AIPI2_PSR0, CFG_AIPI2_PSR0_VAL)
+ writel(AIPI2_PSR1, CFG_AIPI2_PSR1_VAL)
+
-+ /* Change SDRAM signal strengh */
++ /* Change SDRAM signal strengh */
+ ldr r0, =GPCR
+ ldr r1, =CFG_GPCR_VAL
+ ldr r5, [r0]
@@ -653,7 +663,7 @@
+.macro init_clock
+ ldr r0, =CSCR
+ /* disable MPLL/SPLL first */
-+ ldr r1, [r0]
++ ldr r1, [r0]
+ bic r1, r1, #(CSCR_MPEN|CSCR_SPEN)
+ str r1, [r0]
+
@@ -665,7 +675,7 @@
+
+ writel(CSCR, CFG_CSCR_VAL | CSCR_MPLL_RESTART | CSCR_SPLL_RESTART)
+
-+ /*
++ /*
+ * add some delay here
+ */
+ mov r1, #0x1000
@@ -677,9 +687,9 @@
+ writel(PCDR1, CFG_PCDR1_VAL)
+
+ /* Configure PCCR0 and PCCR1 */
-+ writel(PCCR0, CFG_PCCR0_VAL)
++ writel(PCCR0, CFG_PCCR0_VAL)
+ writel(PCCR1, CFG_PCCR1_VAL)
-+
++
+
+.endm /* init_clock */
+
@@ -731,7 +741,7 @@
+ str r1, [r0]
+
+ /* set standard mode register */
-+ ldr r4, = CFG_SDRAM_1_BASE+CFG_SDRAM_MODE_REGISTER_VAL
++ ldr r4, = CFG_SDRAM_1_BASE+CFG_SDRAM_MODE_REGISTER_VAL
+ ldrb r2, [r4]
+
+ /* set extended mode register */
@@ -847,8 +857,10 @@
+
+ mov pc,r10
+
---- ref/u-boot-1.3.4/board/armadeus/apf27/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot-1.3.4/board/armadeus/apf27/Makefile 2008-12-29 16:27:49.000000000 +0100
+Index: u-boot-1.3.4/board/armadeus/apf27/Makefile
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ u-boot-1.3.4/board/armadeus/apf27/Makefile 2011-01-05 14:24:05.000000000 +0100
@@ -0,0 +1,50 @@
+#
+# (C) Copyright 2000-2004
@@ -900,8 +912,10 @@
+sinclude $(obj).depend
+
+#########################################################################
---- ref/u-boot-1.3.4/board/armadeus/apf27/u-boot-nand.lds 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot-1.3.4/board/armadeus/apf27/u-boot-nand.lds 2008-12-29 16:27:49.000000000 +0100
+Index: u-boot-1.3.4/board/armadeus/apf27/u-boot-nand.lds
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ u-boot-1.3.4/board/armadeus/apf27/u-boot-nand.lds 2011-01-05 14:49:59.000000000 +0100
@@ -0,0 +1,56 @@
+/*
+ * (C) Copyright 2007
@@ -959,9 +973,11 @@
+ _end = .;
+}
+
---- ref/u-boot-1.3.4/include/asm-arm/mach-types.h 2008-08-12 16:08:38.000000000 +0200
-+++ u-boot-1.3.4/include/asm-arm/mach-types.h 2008-12-29 16:27:49.000000000 +0100
-@@ -1596,6 +1596,7 @@ extern unsigned int __machine_arch_type;
+Index: u-boot-1.3.4/include/asm-arm/mach-types.h
+===================================================================
+--- u-boot-1.3.4.orig/include/asm-arm/mach-types.h 2008-08-12 16:08:38.000000000 +0200
++++ u-boot-1.3.4/include/asm-arm/mach-types.h 2011-01-05 14:24:05.000000000 +0100
+@@ -1596,6 +1596,7 @@
#define MACH_TYPE_XDACOMET 1603
#define MACH_TYPE_DEXFLEX2 1604
#define MACH_TYPE_SFFSDR 1657
@@ -969,7 +985,7 @@
#ifdef CONFIG_ARCH_EBSA110
# ifdef machine_arch_type
-@@ -12373,6 +12374,18 @@ extern unsigned int __machine_arch_type;
+@@ -12373,6 +12374,18 @@
# define machine_is_nxdb500() (0)
#endif
@@ -988,9 +1004,11 @@
#ifdef CONFIG_MACH_APF9328
# ifdef machine_arch_type
# undef machine_arch_type
---- ref/u-boot-1.3.4/MAKEALL 2009-01-07 18:21:24.000000000 +0100
-+++ u-boot-1.3.4/MAKEALL 2008-12-29 16:27:49.000000000 +0100
-@@ -468,6 +468,7 @@ LIST_ARM9=" \
+Index: u-boot-1.3.4/MAKEALL
+===================================================================
+--- u-boot-1.3.4.orig/MAKEALL 2011-01-05 14:24:05.000000000 +0100
++++ u-boot-1.3.4/MAKEALL 2011-01-05 14:24:05.000000000 +0100
+@@ -468,6 +468,7 @@
ap926ejs \
ap946es \
ap966 \
@@ -998,9 +1016,11 @@
cp920t \
cp922_XA10 \
cp926ejs \
---- ref/u-boot-1.3.4/Makefile 2009-01-07 18:21:24.000000000 +0100
-+++ u-boot-1.3.4/Makefile 2008-12-29 16:27:49.000000000 +0100
-@@ -2390,6 +2390,9 @@ mp2usb_config : unconfig
+Index: u-boot-1.3.4/Makefile
+===================================================================
+--- u-boot-1.3.4.orig/Makefile 2011-01-05 14:24:05.000000000 +0100
++++ u-boot-1.3.4/Makefile 2011-01-05 14:49:59.000000000 +0100
+@@ -2390,6 +2390,9 @@
## Atmel ARM926EJ-S Systems
#########################################################################
@@ -1010,8 +1030,10 @@
at91cap9adk_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm926ejs at91cap9adk atmel at91sam9
---- ref/u-boot-1.3.4/nand_spl/board/armadeus/apf27/config.mk 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot-1.3.4/nand_spl/board/armadeus/apf27/config.mk 2008-12-29 16:27:49.000000000 +0100
+Index: u-boot-1.3.4/nand_spl/board/armadeus/apf27/config.mk
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ u-boot-1.3.4/nand_spl/board/armadeus/apf27/config.mk 2011-01-05 14:24:05.000000000 +0100
@@ -0,0 +1,43 @@
+#
+# (C) Copyright 2007
@@ -1056,8 +1078,10 @@
+# PAD_TO used to generate a 2kByte binary needed for the combined image
+# -> PAD_TO = TEXT_BASE + 0x0800
+PAD_TO = 0xa0000800
---- ref/u-boot-1.3.4/nand_spl/board/armadeus/apf27/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot-1.3.4/nand_spl/board/armadeus/apf27/Makefile 2008-12-29 16:27:49.000000000 +0100
+Index: u-boot-1.3.4/nand_spl/board/armadeus/apf27/Makefile
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ u-boot-1.3.4/nand_spl/board/armadeus/apf27/Makefile 2011-01-05 14:24:05.000000000 +0100
@@ -0,0 +1,77 @@
+#
+# (C) Copyright 2007
@@ -1136,15 +1160,17 @@
+sinclude $(obj).depend
+
+#########################################################################
---- ref/u-boot-1.3.4/nand_spl/board/armadeus/apf27/start.S 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot-1.3.4/nand_spl/board/armadeus/apf27/start.S 2008-12-29 16:27:49.000000000 +0100
+Index: u-boot-1.3.4/nand_spl/board/armadeus/apf27/start.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ u-boot-1.3.4/nand_spl/board/armadeus/apf27/start.S 2011-01-05 14:53:03.000000000 +0100
@@ -0,0 +1,545 @@
+/*
-+ * IMX27 NAND Flash SPL (Secondary Program Loader)
++ * IMX27 NAND Flash SPL (Secondary Program Loader)
+ *
+ * Copyright (c) 2008 Armadeus Project / eja
+ *
-+ * Based on Freescale NAND SPL
++ * Based on Freescale NAND SPL
+ *
+ * Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
+ * Copyright (c) 2008 Eric Jarrige <eri...@ar...>
@@ -1234,8 +1260,8 @@
+ /* Copy SPL image from flash to SDRAM first */
+ BOOT_TRACE(1)
+ ldr r0, =IMX_NFC_MAIN_AREA0
-+ add r2, r0, #(IMX_NFC_SPARE_AREA0-IMX_NFC_MAIN_AREA0) //2KB NFC Buff
-+ ldr r1, =CFG_NAND_U_BOOT_DST
++ add r2, r0, #(IMX_NFC_SPARE_AREA0-IMX_NFC_MAIN_AREA0) //2KB NFC Buff
++ ldr r1, =CFG_NAND_U_BOOT_DST
+
+ BOOT_TRACE(2)
+1: ldmia r0!, {r3-r10}
@@ -1309,7 +1335,7 @@
+
+ mov r3, r1, lsr #11
+ bl do_addr_input /* 3rd addr cycle */
-+
++
+ mov r3, r1, lsr #19
+ bl do_addr_input /* 4th addr cycle */
+
@@ -1345,8 +1371,8 @@
+ bl do_wait_op_done
+
+ bl Test_And_Copy_Buffer
-+
-+ /* here we should test if 512B page flash and bypass next buffers */
++
++ /* here we should test if 512B page flash and bypass next buffers */
+ /* read and copy buf 2. TODO small page support */
+ mov r3, #2
+ strh r3, [r12, #NFC_OFFSET_BUF_ADDR]
@@ -1374,7 +1400,7 @@
+
+ /* r0: nfc base. Reloaded after each page copying */
+ ldr r0, =IMX_NFC_MAIN_AREA0
-+ /* r2: end of 1st RAM buf. Doesn't change */
++ /* r2: end of 1st RAM buf. Doesn't change */
+ ldr r2, =IMX_NFC_MAIN_AREA1
+ b Nfc_Read_Page
+
@@ -1391,7 +1417,7 @@
+ writel(AIPI2_PSR0, CFG_AIPI2_PSR0_VAL)
+ writel(AIPI2_PSR1, CFG_AIPI2_PSR1_VAL)
+
-+ /* Change SDRAM signal strengh */
++ /* Change SDRAM signal strengh */
+ ldr r0, =GPCR
+ ldr r1, =CFG_GPCR_VAL
+ ldr r5, [r0]
@@ -1403,7 +1429,7 @@
+ .macro init_clock
+ ldr r0, =CSCR
+ /* disable MPLL/SPLL first */
-+ ldr r1, [r0]
++ ldr r1, [r0]
+ bic r1, r1, #(CSCR_MPEN|CSCR_SPEN)
+ str r1, [r0]
+
@@ -1415,7 +1441,7 @@
+
+ writel(CSCR, CFG_CSCR_VAL | CSCR_MPLL_RESTART | CSCR_SPLL_RESTART)
+
-+ /*
++ /*
+ * add some delay here
+ */
+ mov r1, #0x1000
@@ -1427,7 +1453,7 @@
+ writel(PCDR1, CFG_PCDR1_VAL)
+
+ /* Configure PCCR0 and PCCR1 */
-+ writel(PCCR0, CFG_PCCR0_VAL)
++ writel(PCCR0, CFG_PCCR0_VAL)
+ writel(PCCR1, CFG_PCCR1_VAL)
+
+ .endm /* init_clock */
@@ -1545,13 +1571,13 @@
+ ands r4, r4, #(NFC_ECC_STAT_ERROR2|(NFC_ECC_STAT_ERROR2<<NFC_ECC_STAT_ERM_SHFT))
+ bne Skip_Bad_Buffer
+
-+ /* check BI byte of the current spare buffer */
++ /* check BI byte of the current spare buffer */
+ ldr r4, =IMX_NFC_SPARE_AREA0
+ ldrh r3, [r12, #NFC_OFFSET_BUF_ADDR] /* for the current buffer */
+ orr r4, r3, lsl #0x04
+
+ /* at bi word offset 4. Fixme position change betwwen 8 and 16 bits bus */
-+ ldrh r4, [r4, #0x04]
++ ldrh r4, [r4, #0x04]
+ and r4, r4, #0x0FF00 /* has to be 0xFFxx */
+ cmp r4, #0x0FF00
+ bne Skip_Bad_Buffer
@@ -1630,7 +1656,7 @@
+ str r1, [r0]
+
+ /* set standard mode register */
-+ ldr r4, = CFG_SDRAM_1_BASE+CFG_SDRAM_MODE_REGISTER_VAL
++ ldr r4, = CFG_SDRAM_1_BASE+CFG_SDRAM_MODE_REGISTER_VAL
+ ldrb r2, [r4]
+
+ /* set extended mode register */
@@ -1684,8 +1710,10 @@
+
+ mov pc, lr
+
---- ref/u-boot-1.3.4/nand_spl/board/armadeus/apf27/u-boot.lds 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot-1.3.4/nand_spl/board/armadeus/apf27/u-boot.lds 2008-12-29 16:27:49.000000000 +0100
+Index: u-boot-1.3.4/nand_spl/board/armadeus/apf27/u-boot.lds
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ u-boot-1.3.4/nand_spl/board/armadeus/apf27/u-boot.lds 2011-01-05 14:24:05.000000000 +0100
@@ -0,0 +1,37 @@
+/*
+ * (C) Copyright 2007
hooks/post-receive
--
armadeus
|
|
From: Fabien M <fa...@us...> - 2011-01-05 13:17:26
|
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 44b7df9db377469f1e97d17225d82640532f943d (commit)
from e11ed945defd706a6af5c0620363b77b24169307 (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 44b7df9db377469f1e97d17225d82640532f943d
Author: Fabien Marteau <fab...@ar...>
Date: Wed Jan 5 14:16:54 2011 +0100
[linux] Update default configuration file for linux kernel 2.6.36
-----------------------------------------------------------------------
Summary of changes:
.../armadeus/apf27/apf27-linux-2.6.36.config | 16 ++++++++++++++--
1 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/buildroot/target/device/armadeus/apf27/apf27-linux-2.6.36.config b/buildroot/target/device/armadeus/apf27/apf27-linux-2.6.36.config
index 9c928d0..a70499f 100644
--- a/buildroot/target/device/armadeus/apf27/apf27-linux-2.6.36.config
+++ b/buildroot/target/device/armadeus/apf27/apf27-linux-2.6.36.config
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.36
-# Thu Nov 25 20:52:40 2010
+# Wed Jan 5 14:04:58 2011
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -166,7 +166,7 @@ CONFIG_DEFAULT_IOSCHED="deadline"
# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
# CONFIG_MUTEX_SPIN_ON_OWNER is not set
-# CONFIG_FREEZER is not set
+CONFIG_FREEZER=y
#
# System Type
@@ -929,6 +929,7 @@ CONFIG_INPUT_TOUCHSCREEN=y
# CONFIG_TOUCHSCREEN_QT602240 is not set
# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_TSC2102 is not set
# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
# CONFIG_TOUCHSCREEN_TSC2007 is not set
@@ -1054,6 +1055,7 @@ CONFIG_SPI_IMX=y
#
# CONFIG_SPI_SPIDEV is not set
# CONFIG_SPI_TLE62X0 is not set
+# CONFIG_SPI_TSC2102 is not set
#
# PPS support
@@ -1532,6 +1534,16 @@ CONFIG_USB_ETH_RNDIS=y
# CONFIG_USB_GPIO_VBUS is not set
# CONFIG_USB_ULPI is not set
# CONFIG_NOP_USB_XCEIV is not set
+
+#
+# Armadeus specific drivers
+#
+# CONFIG_ARMADEUS_DRIVERS is not set
+
+#
+# FPGA Drivers
+#
+# CONFIG_ARMADEUS_FPGA_DRIVERS is not set
CONFIG_MMC=y
# CONFIG_MMC_DEBUG is not set
# CONFIG_MMC_UNSAFE_RESUME is not set
hooks/post-receive
--
armadeus
|
|
From: jscheer <js...@us...> - 2011-01-03 17:24:26
|
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 e11ed945defd706a6af5c0620363b77b24169307 (commit)
via 2da7c783f9a88614f55eb9611c2829e21b6b834a (commit)
from 293f7fa6dec6b0421ca1a368138e201579e9c794 (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 e11ed945defd706a6af5c0620363b77b24169307
Merge: 2da7c783f9a88614f55eb9611c2829e21b6b834a 293f7fa6dec6b0421ca1a368138e201579e9c794
Author: Jeremie Scheer <jer...@ar...>
Date: Mon Jan 3 18:23:57 2011 +0100
Merge branch 'master' of ssh://jscheer@armadeus.git.sourceforge.net/gitroot/armadeus/armadeus
commit 2da7c783f9a88614f55eb9611c2829e21b6b834a
Author: Jeremie Scheer <jer...@ar...>
Date: Mon Jan 3 18:23:29 2011 +0100
[BUILDROOT] Create new patch for Qt's MySQL module configuration fix.
-----------------------------------------------------------------------
Summary of changes:
...-qt-full_integration_with_cross_compiling.patch | 24 +++++--------------
patches/buildroot/141-qt-fix_mysql_module.patch | 18 +++++++++++++++
...-qt-full_integration_with_cross_compiling.patch | 23 +++++--------------
.../2010.11/141-qt-fix_mysql_module.patch | 19 +++++++++++++++
4 files changed, 50 insertions(+), 34 deletions(-)
create mode 100644 patches/buildroot/141-qt-fix_mysql_module.patch
create mode 100644 patches/buildroot/2010.11/141-qt-fix_mysql_module.patch
diff --git a/patches/buildroot/132-qt-full_integration_with_cross_compiling.patch b/patches/buildroot/132-qt-full_integration_with_cross_compiling.patch
index cd89cd1..a7e215e 100644
--- a/patches/buildroot/132-qt-full_integration_with_cross_compiling.patch
+++ b/patches/buildroot/132-qt-full_integration_with_cross_compiling.patch
@@ -5,8 +5,8 @@ Signed-off-by: Jérémie Scheer <jer...@ar...>
Index: buildroot/package/qtopia4/Config.in
===================================================================
---- buildroot.orig/package/qtopia4/Config.in 2011-01-03 10:48:45.000000000 +0100
-+++ buildroot/package/qtopia4/Config.in 2011-01-03 10:48:45.000000000 +0100
+--- buildroot.orig/package/qtopia4/Config.in 2011-01-03 10:54:42.000000000 +0100
++++ buildroot/package/qtopia4/Config.in 2011-01-03 10:54:42.000000000 +0100
@@ -325,4 +325,14 @@
Build the Qt Script Tools module.
if unsure, say n.
@@ -24,8 +24,8 @@ Index: buildroot/package/qtopia4/Config.in
endif # BR2_PACKAGE_QT
Index: buildroot/package/qtopia4/qtopia4.mk
===================================================================
---- buildroot.orig/package/qtopia4/qtopia4.mk 2011-01-03 10:48:45.000000000 +0100
-+++ buildroot/package/qtopia4/qtopia4.mk 2011-01-03 10:52:31.000000000 +0100
+--- buildroot.orig/package/qtopia4/qtopia4.mk 2011-01-03 10:54:42.000000000 +0100
++++ buildroot/package/qtopia4/qtopia4.mk 2011-01-03 17:22:36.000000000 +0100
@@ -17,6 +17,7 @@
QT_SITE:=http://get.qt.nokia.com/qt/source
QT_CAT:=$(ZCAT)
@@ -34,17 +34,7 @@ Index: buildroot/package/qtopia4/qtopia4.mk
QT_CONFIGURE:=#empty
-@@ -291,7 +292,8 @@
- QT_CONFIGURE+= -qt-sql-ibase
- endif
- ifeq ($(BR2_PACKAGE_QT_MYSQL),y)
--QT_CONFIGURE+= -qt-sql-mysql
-+QT_CONFIGURE+= -qt-sql-mysql -mysql_config $(STAGING_DIR)/usr/bin/mysql_config
-+QT_DEP_LIBS+=mysql_client
- endif
- ifeq ($(BR2_PACKAGE_QT_ODBC),y)
- QT_CONFIGURE+= -qt-sql-odbc
-@@ -345,6 +347,14 @@
+@@ -345,6 +346,14 @@
QT_CONFIGURE+= -no-stl
endif
@@ -59,7 +49,7 @@ Index: buildroot/package/qtopia4/qtopia4.mk
# ccache and precompiled headers don't play well together
ifeq ($(BR2_CCACHE),y)
QT_CONFIGURE += -no-pch
-@@ -483,11 +493,11 @@
+@@ -483,11 +492,11 @@
-no-accessibility \
-no-separate-debug-info \
-prefix /usr \
@@ -73,7 +63,7 @@ Index: buildroot/package/qtopia4/qtopia4.mk
)
touch $@
-@@ -560,8 +570,19 @@
+@@ -560,8 +569,19 @@
cp -dpf $(STAGING_DIR)/usr/lib/libQtScriptTools.so.* $(TARGET_DIR)/usr/lib/
endif
diff --git a/patches/buildroot/141-qt-fix_mysql_module.patch b/patches/buildroot/141-qt-fix_mysql_module.patch
new file mode 100644
index 0000000..bcbd725
--- /dev/null
+++ b/patches/buildroot/141-qt-fix_mysql_module.patch
@@ -0,0 +1,18 @@
+Fix Qt configuration options for MySQL module ; Specifies the MySQL's libraries and headers directories.
+
+Signed-off-by: Jérémie Scheer <jer...@ar...>
+
+Index: buildroot/package/qtopia4/qtopia4.mk
+===================================================================
+--- buildroot.orig/package/qtopia4/qtopia4.mk 2011-01-03 17:25:36.000000000 +0100
++++ buildroot/package/qtopia4/qtopia4.mk 2011-01-03 17:25:51.000000000 +0100
+@@ -292,7 +292,8 @@
+ QT_CONFIGURE+= -qt-sql-ibase
+ endif
+ ifeq ($(BR2_PACKAGE_QT_MYSQL),y)
+-QT_CONFIGURE+= -qt-sql-mysql
++QT_CONFIGURE+= -qt-sql-mysql -mysql_config $(STAGING_DIR)/usr/bin/mysql_config
++QT_DEP_LIBS+=mysql_client
+ endif
+ ifeq ($(BR2_PACKAGE_QT_ODBC),y)
+ QT_CONFIGURE+= -qt-sql-odbc
diff --git a/patches/buildroot/2010.11/132-qt-full_integration_with_cross_compiling.patch b/patches/buildroot/2010.11/132-qt-full_integration_with_cross_compiling.patch
index 298e23f..967b3e9 100644
--- a/patches/buildroot/2010.11/132-qt-full_integration_with_cross_compiling.patch
+++ b/patches/buildroot/2010.11/132-qt-full_integration_with_cross_compiling.patch
@@ -5,7 +5,7 @@ Signed-off-by: Jérémie Scheer <jer...@ar...>
Index: buildroot/package/qt/Config.in
===================================================================
--- buildroot.orig/package/qt/Config.in 2010-11-08 10:24:59.000000000 +0100
-+++ buildroot/package/qt/Config.in 2011-01-03 11:00:22.000000000 +0100
++++ buildroot/package/qt/Config.in 2011-01-03 14:04:23.000000000 +0100
@@ -17,7 +17,12 @@
If unsure, say N.
@@ -23,8 +23,8 @@ Index: buildroot/package/qt/Config.in
Index: buildroot/package/qt/qt.mk
===================================================================
--- buildroot.orig/package/qt/qt.mk 2010-11-08 10:24:59.000000000 +0100
-+++ buildroot/package/qt/qt.mk 2011-01-03 11:03:20.000000000 +0100
-@@ -49,11 +49,17 @@
++++ buildroot/package/qt/qt.mk 2011-01-03 17:33:36.000000000 +0100
+@@ -49,10 +49,16 @@
endif
ifeq ($(BR2_PACKAGE_QT_DEMOS),y)
@@ -33,24 +33,13 @@ Index: buildroot/package/qt/qt.mk
else
-QT_CONFIGURE+= -nomake examples -nomake demos
+QT_CONFIGURE+= -nomake demos
-+endif
+ endif
+ifeq ($(BR2_PACKAGE_QT_EXAMPLES),y)
+QT_CONFIGURE+= -examplesdir $(TARGET_DIR)/usr/share/qt/examples
+else
+QT_CONFIGURE+= -nomake examples
- endif
-
++endif
+
+
# ensure glib is built first if enabled for Qt's glib support
ifeq ($(BR2_PACKAGE_LIBGLIB2),y)
- QT_DEP_LIBS+=libglib2
-@@ -279,8 +285,7 @@
- QT_CONFIGURE+= -qt-sql-ibase
- endif
- ifeq ($(BR2_PACKAGE_QT_MYSQL),y)
--QT_CONFIGURE+= -qt-sql-mysql -I $(STAGING_DIR)/usr/include/mysql -L $(STAGING_DIR)/usr/lib/mysql
--
-+QT_CONFIGURE+= -qt-sql-mysql -mysql_config $(STAGING_DIR)/usr/bin/mysql_config
- QT_DEP_LIBS+=mysql_client
- endif
- ifeq ($(BR2_PACKAGE_QT_ODBC),y)
diff --git a/patches/buildroot/2010.11/141-qt-fix_mysql_module.patch b/patches/buildroot/2010.11/141-qt-fix_mysql_module.patch
new file mode 100644
index 0000000..487c9a4
--- /dev/null
+++ b/patches/buildroot/2010.11/141-qt-fix_mysql_module.patch
@@ -0,0 +1,19 @@
+Fix Qt configuration options for MySQL module ; Specifies the MySQL's libraries and headers directories.
+
+Signed-off-by: Jérémie Scheer <jer...@ar...>
+
+===================================================================
+diff --git a/package/qt/qt.mk b/package/qt/qt.mk
+index 2b5b31b..6eb31bc 100644
+--- a/package/qt/qt.mk
++++ b/package/qt/qt.mk
+@@ -283,8 +283,7 @@ ifeq ($(BR2_PACKAGE_QT_IBASE),y)
+ QT_CONFIGURE+= -qt-sql-ibase
+ endif
+ ifeq ($(BR2_PACKAGE_QT_MYSQL),y)
+-QT_CONFIGURE+= -qt-sql-mysql -I $(STAGING_DIR)/usr/include/mysql -L $(STAGING_DIR)/usr/lib/mysql
+-
++QT_CONFIGURE+= -qt-sql-mysql -mysql_config $(STAGING_DIR)/usr/bin/mysql_config
+ QT_DEP_LIBS+=mysql_client
+ endif
+ ifeq ($(BR2_PACKAGE_QT_ODBC),y)
hooks/post-receive
--
armadeus
|