<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
Kim,<br>
<br>
please review this resubmitted patch with changes as you have requested
:<br>
<br>
- coding style issues<br>
- Makefile<br>
- Maintainer<br>
- common mpc83xx PCI code<br>
- added README.mvblm7<br>
<br>
Please let me know if anything is still invalid or not acceptable.<br>
<br>
As mentioned before the merge window is close -&gt; take it into "next"
please.<br>
<br>
Due to size I have to split the patch.<br>
<br>
Thanks,<br>
Andre<br>
<br>
<pre wrap="">Signed-off-by: Andre Schwarz <a
 class="moz-txt-link-rfc2396E"
 href="mailto:andre.schwarz@matrix-vision.de">&lt;andre.schwarz@matrix-vision.de&gt;</a>
--
</pre>
<pre wrap=""><!----></pre>
<br>
&nbsp;CREDITS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 5 +<br>
&nbsp;MAINTAINERS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 4 +<br>
&nbsp;MAKEALL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 +<br>
&nbsp;Makefile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 4 +-<br>
&nbsp;board/mvblm7/Makefile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; 48 ++++<br>
&nbsp;board/mvblm7/config.mk&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; 25 ++<br>
&nbsp;board/mvblm7/fpga.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; 191 ++++++++++++++++<br>
&nbsp;board/mvblm7/fpga.h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; 34 +++<br>
&nbsp;board/mvblm7/mvblm7.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; 133 +++++++++++<br>
&nbsp;board/mvblm7/mvblm7.h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; 20 ++<br>
&nbsp;board/mvblm7/mvblm7_autoscript |&nbsp;&nbsp; 38 ++++<br>
&nbsp;board/mvblm7/pci.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; 144 ++++++++++++<br>
&nbsp;doc/README.mvblm7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; 84 +++++++<br>
&nbsp;include/configs/MVBLM7.h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; 474
++++++++++++++++++++++++++++++++++++++++<br>
&nbsp;14 files changed, 1204 insertions(+), 1 deletions(-)<br>
<br>
diff --git a/CREDITS b/CREDITS<br>
index e84ef38..713f58a 100644<br>
--- a/CREDITS<br>
+++ b/CREDITS<br>
@@ -424,6 +424,11 @@ N: Paolo Scaffardi<br>
&nbsp;E: <a class="moz-txt-link-abbreviated" href="mailto:arsenio@tin.it">arsenio@tin.it</a><br>
&nbsp;D: FADS823 configuration, MPC823 video support, I2C, wireless
keyboard, lots more<br>
&nbsp;<br>
+N: Andre Schwarz<br>
+E: <a class="moz-txt-link-abbreviated"
 href="mailto:andre.schwarz@matrix-vision.de">andre.schwarz@matrix-vision.de</a><br>
+D: Support for BlueLYNX and BlueCOUGAR series<br>
+W: <a class="moz-txt-link-abbreviated"
 href="http://www.matrix-vision.com">www.matrix-vision.com</a><br>
+<br>
&nbsp;N: Robert Schwebel<br>
&nbsp;E: <a class="moz-txt-link-abbreviated"
 href="mailto:r.schwebel@pengutronix.de">r.schwebel@pengutronix.de</a><br>
&nbsp;D: Support for csb226, logodl and innokom boards (PXA2xx)<br>
diff --git a/MAINTAINERS b/MAINTAINERS<br>
index 33821b8..93281fd 100644<br>
--- a/MAINTAINERS<br>
+++ b/MAINTAINERS<br>
@@ -367,6 +367,10 @@ Peter De Schrijver <a
 class="moz-txt-link-rfc2396E" href="mailto:p2@mind.be">&lt;p2@mind.be&gt;</a><br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp; ML2&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; PPC4xx<br>
&nbsp;<br>
+Andre Schwarz <a class="moz-txt-link-rfc2396E"
 href="mailto:andre.schwarz@matrix-vision.de">&lt;andre.schwarz@matrix-vision.de&gt;</a><br>
+<br>
+&nbsp;&nbsp;&nbsp; mvblm7&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; MPC8343<br>
+<br>
&nbsp;Timur Tabi <a class="moz-txt-link-rfc2396E"
 href="mailto:timur@freescale.com">&lt;timur@freescale.com&gt;</a><br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp; MPC8349E-mITX&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; MPC8349<br>
diff --git a/MAKEALL b/MAKEALL<br>
index 2a872ac..f21c34e 100755<br>
--- a/MAKEALL<br>
+++ b/MAKEALL<br>
@@ -327,6 +327,7 @@ LIST_83xx="&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; \<br>
&nbsp;&nbsp;&nbsp;&nbsp; MPC8360ERDK_66&nbsp;&nbsp;&nbsp; \<br>
&nbsp;&nbsp;&nbsp;&nbsp; MPC837XEMDS&nbsp;&nbsp;&nbsp; \<br>
&nbsp;&nbsp;&nbsp;&nbsp; MPC837XERDB&nbsp;&nbsp;&nbsp; \<br>
+&nbsp;&nbsp;&nbsp; MVBLM7&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; \<br>
&nbsp;&nbsp;&nbsp;&nbsp; sbc8349&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; \<br>
&nbsp;&nbsp;&nbsp;&nbsp; TQM834x&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; \<br>
&nbsp;"<br>
diff --git a/Makefile b/Makefile<br>
index a7f886b..9d33482 100644<br>
--- a/Makefile<br>
+++ b/Makefile<br>
@@ -2078,13 +2078,15 @@ MPC837XEMDS_HOST_config:&nbsp;&nbsp;&nbsp; unconfig<br>
&nbsp;MPC837XERDB_config:&nbsp;&nbsp;&nbsp; unconfig<br>
&nbsp;&nbsp;&nbsp;&nbsp; @$(MKCONFIG) -a MPC837XERDB ppc mpc83xx mpc837xerdb freescale<br>
&nbsp;<br>
+MVBLM7_config: unconfig<br>
+&nbsp;&nbsp;&nbsp; @$(MKCONFIG) $(@:_config=) ppc mpc83xx mvblm7<br>
+<br>
&nbsp;sbc8349_config:&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; unconfig<br>
&nbsp;&nbsp;&nbsp;&nbsp; @$(MKCONFIG) $(@:_config=) ppc mpc83xx sbc8349<br>
&nbsp;<br>
&nbsp;TQM834x_config:&nbsp;&nbsp;&nbsp; unconfig<br>
&nbsp;&nbsp;&nbsp;&nbsp; @$(MKCONFIG) $(@:_config=) ppc mpc83xx tqm834x<br>
&nbsp;<br>
-<br>
&nbsp;#########################################################################<br>
&nbsp;## MPC85xx Systems<br>
&nbsp;#########################################################################<br>
diff --git a/board/mvblm7/Makefile b/board/mvblm7/Makefile<br>
new file mode 100644<br>
index 0000000..84cd14a<br>
--- /dev/null<br>
+++ b/board/mvblm7/Makefile<br>
@@ -0,0 +1,48 @@<br>
+#<br>
+# Copyright (C) Freescale Semiconductor, Inc. 2006. All rights
reserved.<br>
+#<br>
+# See file CREDITS for list of people who contributed to this<br>
+# project.<br>
+#<br>
+# This program is free software; you can redistribute it and/or<br>
+# modify it under the terms of the GNU General Public License as<br>
+# published by the Free Software Foundation; either version 2 of<br>
+# the License, or (at your option) any later version.<br>
+#<br>
+# This program is distributed in the hope that it will be useful,<br>
+# but WITHOUT ANY WARRANTY; without even the implied warranty of<br>
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&nbsp; See the<br>
+# GNU General Public License for more details.<br>
+#<br>
+# You should have received a copy of the GNU General Public License<br>
+# along with this program; if not, write to the Free Software<br>
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,<br>
+# MA 02111-1307 USA<br>
+#<br>
+<br>
+include $(TOPDIR)/config.mk<br>
+<br>
+LIB&nbsp;&nbsp;&nbsp; = $(obj)lib$(BOARD).a<br>
+<br>
+COBJS&nbsp;&nbsp;&nbsp; := $(BOARD).o pci.o fpga.o<br>
+<br>
+SRCS&nbsp;&nbsp;&nbsp; := $(SOBJS:.o=.S) $(COBJS:.o=.c)<br>
+OBJS&nbsp;&nbsp;&nbsp; := $(addprefix $(obj),$(COBJS))<br>
+SOBJS&nbsp;&nbsp;&nbsp; := $(addprefix $(obj),$(SOBJS))<br>
+<br>
+$(LIB):&nbsp;&nbsp;&nbsp; $(obj).depend $(OBJS)<br>
+&nbsp;&nbsp;&nbsp; $(AR) $(ARFLAGS) $@ $(OBJS)<br>
+<br>
+clean:<br>
+&nbsp;&nbsp;&nbsp; rm -f $(SOBJS) $(OBJS)<br>
+<br>
+distclean:&nbsp;&nbsp;&nbsp; clean<br>
+&nbsp;&nbsp;&nbsp; rm -f $(LIB) core *.bak .depend<br>
+<br>
+#########################################################################<br>
+<br>
+include $(SRCTREE)/rules.mk<br>
+<br>
+sinclude $(obj).depend<br>
+<br>
+#########################################################################<br>
diff --git a/board/mvblm7/config.mk b/board/mvblm7/config.mk<br>
new file mode 100644<br>
index 0000000..1d85f4f<br>
--- /dev/null<br>
+++ b/board/mvblm7/config.mk<br>
@@ -0,0 +1,25 @@<br>
+#<br>
+# Copyright (C) Freescale Semiconductor, Inc. 2006. All rights
reserved.<br>
+#<br>
+# See file CREDITS for list of people who contributed to this<br>
+# project.<br>
+#<br>
+# This program is free software; you can redistribute it and/or<br>
+# modify it under the terms of the GNU General Public License as<br>
+# published by the Free Software Foundation; either version 2 of<br>
+# the License, or (at your option) any later version.<br>
+#<br>
+# This program is distributed in the hope that it will be useful,<br>
+# but WITHOUT ANY WARRANTY; without even the implied warranty of<br>
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&nbsp; See the<br>
+# GNU General Public License for more details.<br>
+#<br>
+# You should have received a copy of the GNU General Public License<br>
+# along with this program; if not, write to the Free Software<br>
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,<br>
+# MA 02111-1307 USA<br>
+#<br>
+<br>
+sinclude $(OBJTREE)/board/$(BOARDDIR)/config.tmp<br>
+<br>
+TEXT_BASE&nbsp; = 0xFFF00000<br>
diff --git a/board/mvblm7/fpga.c b/board/mvblm7/fpga.c<br>
new file mode 100644<br>
index 0000000..57ea520<br>
--- /dev/null<br>
+++ b/board/mvblm7/fpga.c<br>
@@ -0,0 +1,191 @@<br>
+/*<br>
+ * (C) Copyright 2002<br>
+ * Rich Ireland, Enterasys Networks, <a
 class="moz-txt-link-abbreviated" href="mailto:rireland@enterasys.com">rireland@enterasys.com</a>.<br>
+ * Keith Outwater, <a class="moz-txt-link-abbreviated"
 href="mailto:keith_outwater@mvis.com">keith_outwater@mvis.com</a>.<br>
+ *<br>
+ * (C) Copyright 2008<br>
+ * Andre Schwarz, Matrix Vision GmbH, <a
 class="moz-txt-link-abbreviated"
 href="mailto:andre.schwarz@matrix-vision.de">andre.schwarz@matrix-vision.de</a><br>
+ *<br>
+ * See file CREDITS for list of people who contributed to this<br>
+ * project.<br>
+ *<br>
+ * This program is free software; you can redistribute it and/or<br>
+ * modify it under the terms of the GNU General Public License as<br>
+ * published by the Free Software Foundation; either version 2 of<br>
+ * the License, or (at your option) any later version.<br>
+ *<br>
+ * This program is distributed in the hope that it will be useful,<br>
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of<br>
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&nbsp; See the<br>
+ * GNU General Public License for more details.<br>
+ *<br>
+ * You should have received a copy of the GNU General Public License<br>
+ * along with this program; if not, write to the Free Software<br>
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,<br>
+ * MA 02111-1307 USA<br>
+ *<br>
+ */<br>
+<br>
+#include &lt;common.h&gt;<br>
+#include &lt;ACEX1K.h&gt;<br>
+#include &lt;command.h&gt;<br>
+#include "fpga.h"<br>
+#include "mvblm7.h"<br>
+<br>
+#ifdef CONFIG_FPGA<br>
+<br>
+#ifdef FPGA_DEBUG<br>
+#define fpga_debug(fmt,args...)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(fmt ,##args)<br>
+#else<br>
+#define fpga_debug(fmt,args...)<br>
+#endif<br>
+<br>
+Altera_CYC2_Passive_Serial_fns altera_fns = {<br>
+&nbsp;&nbsp;&nbsp; fpga_null_fn,<br>
+&nbsp;&nbsp;&nbsp; fpga_config_fn,<br>
+&nbsp;&nbsp;&nbsp; fpga_status_fn,<br>
+&nbsp;&nbsp;&nbsp; fpga_done_fn,<br>
+&nbsp;&nbsp;&nbsp; fpga_wr_fn,<br>
+&nbsp;&nbsp;&nbsp; fpga_null_fn,<br>
+&nbsp;&nbsp;&nbsp; fpga_null_fn,<br>
+&nbsp;&nbsp;&nbsp; 0<br>
+};<br>
+<br>
+Altera_desc cyclone2 = {<br>
+&nbsp;&nbsp;&nbsp; Altera_CYC2,<br>
+&nbsp;&nbsp;&nbsp; passive_serial,<br>
+&nbsp;&nbsp;&nbsp; Altera_EP2C20_SIZE,<br>
+&nbsp;&nbsp;&nbsp; (void *) &amp;altera_fns,<br>
+&nbsp;&nbsp;&nbsp; NULL,<br>
+&nbsp;&nbsp;&nbsp; 0<br>
+};<br>
+<br>
+DECLARE_GLOBAL_DATA_PTR;<br>
+<br>
+int mvblm7_init_fpga(void)<br>
+{<br>
+&nbsp;&nbsp;&nbsp; fpga_debug("%s:%d: Initialize FPGA interface (relocation offset =
0x%.8lx)\n",<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; __FUNCTION__, __LINE__, gd-&gt;reloc_off);<br>
+&nbsp;&nbsp;&nbsp; fpga_init(gd-&gt;reloc_off);<br>
+<br>
+&nbsp;&nbsp;&nbsp; fpga_debug("%s:%d: Adding fpga 0\n", __FUNCTION__, __LINE__);<br>
+&nbsp;&nbsp;&nbsp; fpga_add(fpga_altera, &amp;cyclone2);<br>
+<br>
+&nbsp;&nbsp;&nbsp; return 1;<br>
+}<br>
+<br>
+int fpga_null_fn(int cookie)<br>
+{<br>
+&nbsp;&nbsp;&nbsp; return 0;<br>
+}<br>
+<br>
+int fpga_config_fn(int assert, int flush, int cookie)<br>
+{<br>
+&nbsp;&nbsp;&nbsp; volatile immap_t *im = (volatile immap_t *)CFG_IMMR;<br>
+&nbsp;&nbsp;&nbsp; volatile gpio83xx_t *gpio = (volatile gpio83xx_t
*)&amp;im-&gt;gpio[0];<br>
+<br>
+&nbsp;&nbsp;&nbsp; u32 dvo = gpio-&gt;dat;<br>
+&nbsp;&nbsp;&nbsp; fpga_debug("SET config : %s\n", assert ? "low" : "high");<br>
+&nbsp;&nbsp;&nbsp; if (assert) <br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; dvo |= FPGA_CONFIG;<br>
+&nbsp;&nbsp;&nbsp; else <br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; dvo &amp;= ~FPGA_CONFIG;<br>
+&nbsp;&nbsp;&nbsp; <br>
+&nbsp;&nbsp;&nbsp; if (flush)<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; gpio-&gt;dat = dvo;<br>
+<br>
+&nbsp;&nbsp;&nbsp; return assert;<br>
+}<br>
+<br>
+int fpga_done_fn(int cookie)<br>
+{<br>
+&nbsp;&nbsp;&nbsp; volatile immap_t *im = (volatile immap_t *)CFG_IMMR;<br>
+&nbsp;&nbsp;&nbsp; volatile gpio83xx_t *gpio = (volatile gpio83xx_t
*)&amp;im-&gt;gpio[0];<br>
+&nbsp;&nbsp;&nbsp; int result = 0;<br>
+<br>
+&nbsp;&nbsp;&nbsp; udelay(10);<br>
+&nbsp;&nbsp;&nbsp; fpga_debug("CONF_DONE check ... ");<br>
+&nbsp;&nbsp;&nbsp; if (gpio-&gt;dat &amp; FPGA_CONF_DONE)&nbsp; {<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; fpga_debug("high\n");<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; result = 1;<br>
+&nbsp;&nbsp;&nbsp; } else <br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; fpga_debug("low\n");<br>
+<br>
+&nbsp;&nbsp;&nbsp; return result;<br>
+}<br>
+<br>
+int fpga_status_fn(int cookie)<br>
+{<br>
+&nbsp;&nbsp;&nbsp; volatile immap_t *im = (volatile immap_t *)CFG_IMMR;<br>
+&nbsp;&nbsp;&nbsp; volatile gpio83xx_t *gpio = (volatile gpio83xx_t
*)&amp;im-&gt;gpio[0];<br>
+&nbsp;&nbsp;&nbsp; int result = 0;<br>
+<br>
+&nbsp;&nbsp;&nbsp; fpga_debug("STATUS check ... ");<br>
+&nbsp;&nbsp;&nbsp; if (gpio-&gt;dat &amp; FPGA_STATUS)&nbsp; {<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; fpga_debug("high\n");<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; result = 1;<br>
+&nbsp;&nbsp;&nbsp; } else <br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; fpga_debug("low\n");<br>
+<br>
+&nbsp;&nbsp;&nbsp; return result;<br>
+}<br>
+<br>
+int fpga_clk_fn(int assert_clk, int flush, int cookie)<br>
+{<br>
+&nbsp;&nbsp;&nbsp; volatile immap_t *im = (volatile immap_t *)CFG_IMMR;<br>
+&nbsp;&nbsp;&nbsp; volatile gpio83xx_t *gpio = (volatile gpio83xx_t
*)&amp;im-&gt;gpio[0];<br>
+<br>
+&nbsp;&nbsp;&nbsp; u32 dvo = gpio-&gt;dat;<br>
+&nbsp;&nbsp;&nbsp; fpga_debug("CLOCK %s\n", assert_clk ? "high" : "low");<br>
+&nbsp;&nbsp;&nbsp; if (assert_clk)<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; dvo |= FPGA_CCLK;<br>
+&nbsp;&nbsp;&nbsp; else<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; dvo &amp;= ~FPGA_CCLK;<br>
+<br>
+&nbsp;&nbsp;&nbsp; if (flush)<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; gpio-&gt;dat = dvo;<br>
+<br>
+&nbsp;&nbsp;&nbsp; return assert_clk;<br>
+}<br>
+<br>
+static inline int _write_fpga(u8 val, int dump )<br>
+{<br>
+&nbsp;&nbsp;&nbsp; volatile immap_t *im = (volatile immap_t *)CFG_IMMR;<br>
+&nbsp;&nbsp;&nbsp; volatile gpio83xx_t *gpio = (volatile gpio83xx_t
*)&amp;im-&gt;gpio[0];<br>
+&nbsp;&nbsp;&nbsp; int i;<br>
+&nbsp;&nbsp;&nbsp; u32 dvo = gpio-&gt;dat;<br>
+<br>
+&nbsp;&nbsp;&nbsp; if (dump)<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; fpga_debug("&nbsp; %02x -&gt; ", val);<br>
+&nbsp;&nbsp;&nbsp; for (i = 0; i &lt; 8; i++) {<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; dvo &amp;= ~FPGA_CCLK;<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; gpio-&gt;dat = dvo;&nbsp;&nbsp;&nbsp; <br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; dvo &amp;= ~FPGA_DIN;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (dump) <br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; fpga_debug("%d ", val&amp;1);<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (val &amp; 1) <br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; dvo |= FPGA_DIN;<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; gpio-&gt;dat = dvo;&nbsp;&nbsp;&nbsp; <br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; dvo |= FPGA_CCLK;<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; gpio-&gt;dat = dvo;&nbsp;&nbsp;&nbsp; <br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; val &gt;&gt;= 1;<br>
+&nbsp;&nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp; if (dump) <br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; fpga_debug("\n");<br>
+<br>
+&nbsp;&nbsp;&nbsp; return 0;<br>
+}<br>
+<br>
+int fpga_wr_fn(void *buf, size_t len, int flush, int cookie)<br>
+{<br>
+&nbsp;&nbsp;&nbsp; unsigned char *data = (unsigned char *) buf;<br>
+&nbsp;&nbsp;&nbsp; int i;<br>
+<br>
+&nbsp;&nbsp;&nbsp; fpga_debug("fpga_wr: buf %p / size %d\n", buf, len);<br>
+&nbsp;&nbsp;&nbsp; for (i = 0; i &lt; len; i++) <br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; _write_fpga(data[i], 0);&nbsp;&nbsp;&nbsp; <br>
+&nbsp;&nbsp;&nbsp; fpga_debug("\n");<br>
+<br>
+&nbsp;&nbsp;&nbsp; return FPGA_SUCCESS;<br>
+}<br>
+#endif<br>
diff --git a/board/mvblm7/fpga.h b/board/mvblm7/fpga.h<br>
new file mode 100644<br>
index 0000000..e84ff06<br>
--- /dev/null<br>
+++ b/board/mvblm7/fpga.h<br>
@@ -0,0 +1,34 @@<br>
+/*<br>
+ * (C) Copyright 2002<br>
+ * Rich Ireland, Enterasys Networks, <a
 class="moz-txt-link-abbreviated" href="mailto:rireland@enterasys.com">rireland@enterasys.com</a>.<br>
+ * Keith Outwater, <a class="moz-txt-link-abbreviated"
 href="mailto:keith_outwater@mvis.com">keith_outwater@mvis.com</a>.<br>
+ *<br>
+ * See file CREDITS for list of people who contributed to this<br>
+ * project.<br>
+ *<br>
+ * This program is free software; you can redistribute it and/or<br>
+ * modify it under the terms of the GNU General Public License as<br>
+ * published by the Free Software Foundation; either version 2 of<br>
+ * the License, or (at your option) any later version.<br>
+ *<br>
+ * This program is distributed in the hope that it will be useful,<br>
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of<br>
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&nbsp; See the<br>
+ * GNU General Public License for more details.<br>
+ *<br>
+ * You should have received a copy of the GNU General Public License<br>
+ * along with this program; if not, write to the Free Software<br>
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,<br>
+ * MA 02111-1307 USA<br>
+ *<br>
+ */<br>
+<br>
+extern int mvblm7_init_fpga(void);<br>
+<br>
+extern int fpga_pgm_fn(int assert_pgm, int flush, int cookie);<br>
+extern int fpga_status_fn (int cookie);<br>
+extern int fpga_config_fn (int assert, int flush, int cookie);<br>
+extern int fpga_done_fn(int cookie);<br>
+extern int fpga_clk_fn(int assert_clk, int flush, int cookie);<br>
+extern int fpga_wr_fn (void *buf, size_t len, int flush, int cookie);<br>
+extern int fpga_null_fn (int cookie);<br>
diff --git a/board/mvblm7/mvblm7.c b/board/mvblm7/mvblm7.c<br>
new file mode 100644<br>
index 0000000..9142f14<br>
--- /dev/null<br>
+++ b/board/mvblm7/mvblm7.c<br>
@@ -0,0 +1,133 @@<br>
+/*<br>
+ * Copyright (C) Freescale Semiconductor, Inc. 2006. All rights
reserved.<br>
+ *<br>
+ * (C) Copyright 2008<br>
+ * Andre Schwarz, Matrix Vision GmbH, <a
 class="moz-txt-link-abbreviated"
 href="mailto:andre.schwarz@matrix-vision.de">andre.schwarz@matrix-vision.de</a><br>
+ *<br>
+ * See file CREDITS for list of people who contributed to this<br>
+ * project.<br>
+ *<br>
+ * This program is free software; you can redistribute it and/or<br>
+ * modify it under the terms of the GNU General Public License as<br>
+ * published by the Free Software Foundation; either version 2 of<br>
+ * the License, or (at your option) any later version.<br>
+ *<br>
+ * This program is distributed in the hope that it will be useful,<br>
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of<br>
+ * MERCHANTABILITY or FITNESS for A PARTICULAR PURPOSE.&nbsp; See the<br>
+ * GNU General Public License for more details.<br>
+ *<br>
+ * You should have received a copy of the GNU General Public License<br>
+ * along with this program; if not, write to the Free Software<br>
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,<br>
+ * MA 02111-1307 USA<br>
+ */<br>
+<br>
+#include &lt;common.h&gt;<br>
+#include &lt;ioports.h&gt;<br>
+#include &lt;mpc83xx.h&gt;<br>
+#include &lt;asm/mpc8349_pci.h&gt;<br>
+#include &lt;pci.h&gt;<br>
+#include &lt;asm/mmu.h&gt;<br>
+#if defined(CONFIG_OF_LIBFDT)<br>
+#include &lt;libfdt.h&gt;<br>
+#endif<br>
+<br>
+#include "mvblm7.h"<br>
+<br>
+int fixed_sdram(void)<br>
+{<br>
+&nbsp;&nbsp;&nbsp; volatile immap_t *im = (immap_t *)CFG_IMMR;<br>
+&nbsp;&nbsp;&nbsp; u32 msize = 0;<br>
+&nbsp;&nbsp;&nbsp; u32 ddr_size;<br>
+&nbsp;&nbsp;&nbsp; u32 ddr_size_log2;<br>
+<br>
+&nbsp;&nbsp;&nbsp; msize = CFG_DDR_SIZE;<br>
+&nbsp;&nbsp;&nbsp; for (ddr_size = msize &lt;&lt; 20, ddr_size_log2 = 0;<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; (ddr_size &gt; 1);<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ddr_size = ddr_size&gt;&gt;1, ddr_size_log2++) {<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (ddr_size &amp; 1) {<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return -1;<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp; im-&gt;sysconf.ddrlaw[0].bar = ((CFG_DDR_SDRAM_BASE&gt;&gt;12)
&amp; 0xfffff);<br>
+&nbsp;&nbsp;&nbsp; im-&gt;sysconf.ddrlaw[0].ar = LAWAR_EN | ((ddr_size_log2 - 1)
&amp; LAWAR_SIZE);<br>
+<br>
+&nbsp;&nbsp;&nbsp; im-&gt;ddr.csbnds[0].csbnds = CFG_DDR_CS0_BNDS;<br>
+&nbsp;&nbsp;&nbsp; im-&gt;ddr.cs_config[0] = CFG_DDR_CS0_CONFIG;<br>
+&nbsp;&nbsp;&nbsp; im-&gt;ddr.timing_cfg_0 = CFG_DDR_TIMING_0;<br>
+&nbsp;&nbsp;&nbsp; im-&gt;ddr.timing_cfg_1 = CFG_DDR_TIMING_1;<br>
+&nbsp;&nbsp;&nbsp; im-&gt;ddr.timing_cfg_2 = CFG_DDR_TIMING_2;<br>
+&nbsp;&nbsp;&nbsp; im-&gt;ddr.timing_cfg_3 = CFG_DDR_TIMING_3;<br>
+&nbsp;&nbsp;&nbsp; im-&gt;ddr.sdram_cfg = CFG_DDR_SDRAM_CFG;<br>
+&nbsp;&nbsp;&nbsp; im-&gt;ddr.sdram_cfg2 = CFG_DDR_SDRAM_CFG2;<br>
+&nbsp;&nbsp;&nbsp; im-&gt;ddr.sdram_mode = CFG_DDR_MODE;<br>
+&nbsp;&nbsp;&nbsp; im-&gt;ddr.sdram_interval = CFG_DDR_INTERVAL;<br>
+&nbsp;&nbsp;&nbsp; im-&gt;ddr.sdram_clk_cntl = CFG_DDR_CLK_CNTL;<br>
+<br>
+&nbsp;&nbsp;&nbsp; udelay(300);<br>
+<br>
+&nbsp;&nbsp;&nbsp; im-&gt;ddr.sdram_cfg |= SDRAM_CFG_MEM_EN;<br>
+<br>
+&nbsp;&nbsp;&nbsp; return CFG_DDR_SIZE;<br>
+}<br>
+<br>
+long int initdram(int board_type)<br>
+{<br>
+&nbsp;&nbsp;&nbsp; volatile immap_t *im = (immap_t *) CFG_IMMR;<br>
+&nbsp;&nbsp;&nbsp; u32 msize = 0;<br>
+<br>
+&nbsp;&nbsp;&nbsp; if ((im-&gt;sysconf.immrbar &amp; IMMRBAR_BASE_ADDR) != (u32) im)<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return -1;<br>
+<br>
+&nbsp;&nbsp;&nbsp; im-&gt;sysconf.ddrlaw[0].bar = CFG_DDR_BASE &amp; LAWBAR_BAR;<br>
+&nbsp;&nbsp;&nbsp; msize = fixed_sdram();<br>
+<br>
+&nbsp;&nbsp;&nbsp; /* return total bus RAM size(bytes) */<br>
+&nbsp;&nbsp;&nbsp; return msize * 1024 * 1024;<br>
+}<br>
+<br>
+int checkboard(void)<br>
+{<br>
+&nbsp;&nbsp;&nbsp; puts("Board: Matrix Vision mvBlueLYNX-M7 " MV_VERSION "\n");<br>
+<br>
+&nbsp;&nbsp;&nbsp; return 0;<br>
+}<br>
+<br>
+u8 *dhcp_vendorex_prep(u8 * e)<br>
+{<br>
+&nbsp;&nbsp;&nbsp; char *ptr;<br>
+<br>
+&nbsp;&nbsp;&nbsp; /* DHCP vendor-class-identifier = 60 */<br>
+&nbsp;&nbsp;&nbsp; if ((ptr = getenv("dhcp_vendor-class-identifier"))) {<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; *e++ = 60;<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; *e++ = strlen(ptr);<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; while (*ptr)<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; *e++ = *ptr++;<br>
+&nbsp;&nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp; /* DHCP_CLIENT_IDENTIFIER = 61 */<br>
+&nbsp;&nbsp;&nbsp; if ((ptr = getenv("dhcp_client_id"))) {<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; *e++ = 61;<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; *e++ = strlen(ptr);<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; while (*ptr)<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; *e++ = *ptr++;<br>
+&nbsp;&nbsp;&nbsp; }<br>
+<br>
+&nbsp;&nbsp;&nbsp; return e;<br>
+}<br>
+<br>
+u8 *dhcp_vendorex_proc(u8 * popt)<br>
+{<br>
+&nbsp;&nbsp;&nbsp; return NULL;<br>
+}<br>
+<br>
+#if defined(CONFIG_OF_BOARD_SETUP)<br>
+void ft_board_setup(void *blob, bd_t *bd)<br>
+{<br>
+&nbsp;&nbsp;&nbsp; ft_cpu_setup(blob, bd);<br>
+#ifdef CONFIG_PCI<br>
+&nbsp;&nbsp;&nbsp; ft_pci_setup(blob, bd);<br>
+#endif<br>
+}<br>
+<br>
+#endif<br>
diff --git a/board/mvblm7/mvblm7.h b/board/mvblm7/mvblm7.h<br>
new file mode 100644<br>
index 0000000..eb1d2a3<br>
--- /dev/null<br>
+++ b/board/mvblm7/mvblm7.h<br>
@@ -0,0 +1,20 @@<br>
+#ifndef __MVBC_H__<br>
+#define __MVBC_H__<br>
+<br>
+#define MV_GPIO<br>
+<br>
+#define FPGA_DIN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x20000000<br>
+#define FPGA_CCLK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x40000000<br>
+#define FPGA_CONF_DONE&nbsp; 0x08000000<br>
+#define FPGA_CONFIG&nbsp;&nbsp;&nbsp;&nbsp; 0x80000000<br>
+#define FPGA_STATUS&nbsp;&nbsp;&nbsp;&nbsp; 0x10000000<br>
+<br>
+#define MAN_RST&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x00100000<br>
+#define WD_TS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x00200000<br>
+#define WD_WDI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x00400000<br>
+<br>
+#define MV_GPIO_DAT&nbsp;&nbsp;&nbsp; (WD_TS)<br>
+#define MV_GPIO_OUT&nbsp;&nbsp;&nbsp; (FPGA_DIN|FPGA_CCLK|WD_TS|WD_WDI)<br>
+#define MV_GPIO_ODE&nbsp;&nbsp;&nbsp; (FPGA_CONFIG|MAN_RST)<br>
+<br>
+#endif<br>
<br>
<br>
<br>
<BR>

MATRIX VISION GmbH, Talstraße 16, DE-71570 Oppenweiler  - Registergericht: Amtsgericht Stuttgart, HRB 271090
Geschäftsführer: Gerhard Thullner, Werner Armingeon, Uwe Furtner
<BR>
</body>
</html>