Re: [U-Boot] [PATCH 4/4] arm/kirkwood: Add Keymile SUEN3 support

-----Original Message----- From: u-boot-bounces@lists.denx.de [mailto:u-boot-bounces@lists.denx.de] On Behalf Of Stefan Roese Sent: Wednesday, July 08, 2009 9:17 PM To: u-boot@lists.denx.de Subject: [U-Boot] [PATCH 4/4] arm/kirkwood: Add Keymile SUEN3 support
This patch adds support for the Keymile SUEN3 board which is based on the Marvell Kirkwood (88F6281) SoC.
Signed-off-by: Stefan Roese sr@denx.de Cc: Jean-Christophe PLAGNIOL-VILLARD plagnioj@jcrosoft.com
MAINTAINERS | 1 + MAKEALL | 1 + Makefile | 3 + board/keymile/suen3/Makefile | 51 +++++++++ board/keymile/suen3/config.mk | 25 ++++ board/keymile/suen3/sdramregs.txt | 28 +++++
This file will be of no use until we have proposed bin_dep.sh and doimage utility in place.
board/keymile/suen3/suen3.c | 127 +++++++++++++++++++++ include/configs/suen3.h | 221 +++++++++++++++++++++++++++++++++++++ 8 files changed, 457 insertions(+), 0 deletions(-) create mode 100644 board/keymile/suen3/Makefile create mode 100644 board/keymile/suen3/config.mk create mode 100644 board/keymile/suen3/sdramregs.txt create mode 100644 board/keymile/suen3/suen3.c create mode 100644 include/configs/suen3.h
diff --git a/MAINTAINERS b/MAINTAINERS index 705bac5..ce117e1 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -637,6 +637,7 @@ Stefan Roese sr@denx.de ixdpg425 xscale pdnb3 xscale scpu xscale
- suen3 ARM926EJS (Kirkwood SoC)
Alessandro Rubini rubini@unipv.it Nomadik Linux Team STN_WMM_nomadik_linux@list.st.com diff --git a/MAKEALL b/MAKEALL index 41f1445..6c80694 100755 --- a/MAKEALL +++ b/MAKEALL @@ -524,6 +524,7 @@ LIST_ARM9=" \ scb9328 \ smdk2400 \ smdk2410 \
- suen3 \ trab \ VCMA9 \ versatile \
diff --git a/Makefile b/Makefile index 2a06440..3afc4ba 100644 --- a/Makefile +++ b/Makefile @@ -2925,6 +2925,9 @@ smdk2400_config : unconfig smdk2410_config : unconfig @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 samsung s3c24x0
+suen3_config: unconfig
- @$(MKCONFIG) $(@:_config=) arm arm926ejs $(@:_config=) keymile
+kirkwood
SX1_stdout_serial_config \ SX1_config: unconfig @mkdir -p $(obj)include diff --git a/board/keymile/suen3/Makefile b/board/keymile/suen3/Makefile new file mode 100644 index 0000000..de05cc8 --- /dev/null +++ b/board/keymile/suen3/Makefile @@ -0,0 +1,51 @@ +# +# (C) Copyright 2009 +# Marvell Semiconductor <www.marvell.com> # Prafulla Wadaskar +prafulla@marvell.com # # See file CREDITS for list of people who +contributed to this # project.
I think you forgot to change these lines :-)
+# +# This program is free software; you can redistribute it and/or # +modify it under the terms of the GNU General Public License as # +published by the Free Software Foundation; either version 2 of # the +License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, # but +WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License # +along with this program; if not, write to the Free Software # +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA +02110-1301 USA #
+include $(TOPDIR)/config.mk
+LIB = $(obj)lib$(BOARD).a
+COBJS := suen3.o
+SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) +OBJS := $(addprefix $(obj),$(COBJS)) +SOBJS := $(addprefix $(obj),$(SOBJS))
+$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
+clean:
- rm -f $(SOBJS) $(OBJS)
+distclean: clean
- rm -f $(LIB) core *.bak .depend
+############################################################# ########## +##
+# defines $(obj).depend target +include $(SRCTREE)/rules.mk
+sinclude $(obj).depend
+############################################################# ########## +## diff --git a/board/keymile/suen3/config.mk b/board/keymile/suen3/config.mk new file mode 100644 index 0000000..fb29a1b --- /dev/null +++ b/board/keymile/suen3/config.mk @@ -0,0 +1,25 @@ +# +# (C) Copyright 2009 +# Marvell Semiconductor <www.marvell.com> # Prafulla Wadaskar +prafulla@marvell.com # # See file CREDITS for list of people who +contributed to this # project.
Here too
+# +# This program is free software; you can redistribute it and/or # +modify it under the terms of the GNU General Public License as # +published by the Free Software Foundation; either version 2 of # the +License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, # but +WITHOUT ANY WARRANTY; without even the implied warranty of # +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU +General Public License for more details. +# +# You should have received a copy of the GNU General Public License # +along with this program; if not, write to the Free Software # +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA +02110-1301 USA #
+TEXT_BASE = 0x00600000 diff --git a/board/keymile/suen3/sdramregs.txt b/board/keymile/suen3/sdramregs.txt new file mode 100644 index 0000000..74abb20 --- /dev/null +++ b/board/keymile/suen3/sdramregs.txt
Under which license?
@@ -0,0 +1,28 @@ +0xFFD10000 0x01111111 +0xFFD10008 0x00001100 +0xFFD100E0 0x1B1B1B1B +0xFFD20134 0xBBBBBBBB +0xFFD20138 0x00BBBBBB +0xFFD20154 0x00000200 +0xFFD2014C 0x00001C00 +0xFFD20148 0x00000001 +0xFFD01400 0x43000400 +0xFFD01404 0x36343000 +0xFFD01408 0x2302544B +0xFFD0140C 0x00000032 +0xFFD01410 0x0000000D +0xFFD01414 0x00000000 +0xFFD01418 0x00000000 +0xFFD0141C 0x00000642 +0xFFD01420 0x00000040 +0xFFD01424 0x0000F07F +0xFFD01504 0x07FFFFF1 +0xFFD01508 0x00000000 +0xFFD0150C 0x00000000 +0xFFD01514 0x00000000 +0xFFD0151C 0x00000000 +0xFFD01494 0x00000000 +0xFFD01498 0x00000000 +0xFFD0149C 0x0000E90F +0xFFD01480 0x00000001 +0x0 0x0 diff --git a/board/keymile/suen3/suen3.c b/board/keymile/suen3/suen3.c new file mode 100644 index 0000000..231745f --- /dev/null +++ b/board/keymile/suen3/suen3.c @@ -0,0 +1,127 @@ +/*
- (C) Copyright 2009
- Marvell Semiconductor <www.marvell.com>
- Prafulla Wadaskar prafulla@marvell.com
Here too
- (C) Copyright 2009
- Stefan Roese, DENX Software Engineering, sr@denx.de.
- 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., 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301 USA
- */
+#include <common.h> +#include <netdev.h> +#include <miiphy.h> +#include <asm/arch/kirkwood.h> +#include <asm/arch/mpp.h>
+DECLARE_GLOBAL_DATA_PTR;
+int board_init(void) +{
- /* Multi-Purpose Pins Functionality configuration */
- u32 kwmpp_config[] = {
MPP0_NF_IO2,
MPP1_NF_IO3,
MPP2_NF_IO4,
MPP3_NF_IO5,
MPP4_NF_IO6,
MPP5_NF_IO7,
MPP6_SYSRST_OUTn,
MPP7_PEX_RST_OUTn,
MPP8_TW_SDA,
MPP9_TW_SCK,
MPP10_UART0_TXD,
MPP11_UART0_RXD,
MPP12_GPO, /* Reserved */
MPP13_UART1_TXD,
MPP14_UART1_RXD,
MPP15_GPIO, /* Not used */
MPP16_GPIO, /* Not used */
MPP17_GPIO, /* Reserved */
MPP18_NF_IO0,
MPP19_NF_IO1,
MPP20_GPIO,
MPP21_GPIO,
MPP22_GPIO,
MPP23_GPIO,
MPP24_GPIO,
MPP25_GPIO,
MPP26_GPIO,
MPP27_GPIO,
MPP28_GPIO,
MPP29_GPIO,
MPP30_GPIO,
MPP31_GPIO,
MPP32_GPIO,
MPP33_GPIO,
MPP34_GPIO, /* CDL1 (input) */
MPP35_GPIO, /* CDL2 (input) */
MPP36_GPIO, /* MAIN_IRQ (input) */
MPP37_GPIO, /* BOARD_LED */
MPP38_GPIO, /* Piggy3 LED[1] */
MPP39_GPIO, /* Piggy3 LED[2] */
MPP40_GPIO, /* Piggy3 LED[3] */
MPP41_GPIO, /* Piggy3 LED[4] */
MPP42_GPIO, /* Piggy3 LED[5] */
MPP43_GPIO, /* Piggy3 LED[6] */
MPP44_GPIO, /* Piggy3 LED[7] */
MPP45_GPIO, /* Piggy3 LED[8] */
MPP46_GPIO, /* Reserved */
MPP47_GPIO, /* Reserved */
MPP48_GPIO, /* Reserved */
MPP49_GPIO, /* SW_INTOUTn */
0
- };
- kirkwood_mpp_conf(kwmpp_config);
- /*
* arch number of board
*/
- gd->bd->bi_arch_number = MACH_TYPE_SUEN3;
- /* address of boot parameters */
- gd->bd->bi_boot_params = kw_sdram_bar(0) + 0x100;
- return 0;
+}
+int dram_init(void) +{
- int i;
- for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
gd->bd->bi_dram[i].start = kw_sdram_bar(i);
gd->bd->bi_dram[i].size = kw_sdram_bs(i);
- }
- return 0;
+}
+/* Configure and enable MV88E1118 PHY */ void reset_phy(void) {
If this PHY connected using RGMII then pls check you done need RGMII Tx/Rx delays
Regards.. Prafulla . .

Dear Prafulla Wadaskar,
In message 73173D32E9439E4ABB5151606C3E19E202DD54DE80@SC-VEXCH1.marvell.com you wrote:
board/keymile/suen3/sdramregs.txt | 28 +++++
This file will be of no use until we have proposed bin_dep.sh and doimage utility in place.
Proposed?
I don't see any such proposal in my list of open issues. The last idea that was discussed about this topic was Mike Frysinger's make target combined with external tools. But there it stopped. When Stefan Roese asked again about this by end of May, there was no reply. Did I miss something?
Best regards,
Wolfgang Denk

Hi Prafulla,
On Wednesday 08 July 2009 19:48:19 Prafulla Wadaskar wrote:
MAINTAINERS | 1 + MAKEALL | 1 + Makefile | 3 + board/keymile/suen3/Makefile | 51 +++++++++ board/keymile/suen3/config.mk | 25 ++++ board/keymile/suen3/sdramregs.txt | 28 +++++
This file will be of no use until we have proposed bin_dep.sh and doimage utility in place.
Even without doimage and/or bin_dep.sh in place, I think it makes perfect sense to include this SDRAM init file in the board directory. Mainly because of two reasons:
a) Keep bootloader related files in one place (SDRAM init is crucial for correct operation)
b) Keep those files under revision control
And I don't think that anything really speaks against having this file in this place for now.
But anyway, we should try to get at least your bin_dep.sh infrastructure accepter. Or at least restart the discussion about it (and probably about doimage as well).
board/keymile/suen3/suen3.c | 127 +++++++++++++++++++++ include/configs/suen3.h | 221 +++++++++++++++++++++++++++++++++++++ 8 files changed, 457 insertions(+), 0 deletions(-) create mode 100644 board/keymile/suen3/Makefile create mode 100644 board/keymile/suen3/config.mk create mode 100644 board/keymile/suen3/sdramregs.txt create mode 100644 board/keymile/suen3/suen3.c create mode 100644 include/configs/suen3.h
diff --git a/MAINTAINERS b/MAINTAINERS index 705bac5..ce117e1 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -637,6 +637,7 @@ Stefan Roese sr@denx.de ixdpg425 xscale pdnb3 xscale scpu xscale
- suen3 ARM926EJS (Kirkwood SoC)
Alessandro Rubini rubini@unipv.it Nomadik Linux Team STN_WMM_nomadik_linux@list.st.com diff --git a/MAKEALL b/MAKEALL index 41f1445..6c80694 100755 --- a/MAKEALL +++ b/MAKEALL @@ -524,6 +524,7 @@ LIST_ARM9=" \ scb9328 \ smdk2400 \ smdk2410 \
- suen3 \ trab \ VCMA9 \ versatile \
diff --git a/Makefile b/Makefile index 2a06440..3afc4ba 100644 --- a/Makefile +++ b/Makefile @@ -2925,6 +2925,9 @@ smdk2400_config : unconfig smdk2410_config : unconfig @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 samsung s3c24x0
+suen3_config: unconfig
- @$(MKCONFIG) $(@:_config=) arm arm926ejs $(@:_config=) keymile
+kirkwood
SX1_stdout_serial_config \ SX1_config: unconfig @mkdir -p $(obj)include diff --git a/board/keymile/suen3/Makefile b/board/keymile/suen3/Makefile new file mode 100644 index 0000000..de05cc8 --- /dev/null +++ b/board/keymile/suen3/Makefile @@ -0,0 +1,51 @@ +# +# (C) Copyright 2009 +# Marvell Semiconductor <www.marvell.com> # Prafulla Wadaskar +prafulla@marvell.com # # See file CREDITS for list of people who +contributed to this # project.
I think you forgot to change these lines :-)
I didn't change much in this file, so I didn't change the copyright header.
+# +# This program is free software; you can redistribute it and/or # +modify it under the terms of the GNU General Public License as # +published by the Free Software Foundation; either version 2 of # the +License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, # but +WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License # +along with this program; if not, write to the Free Software # +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA +02110-1301 USA #
+include $(TOPDIR)/config.mk
+LIB = $(obj)lib$(BOARD).a
+COBJS := suen3.o
+SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) +OBJS := $(addprefix $(obj),$(COBJS)) +SOBJS := $(addprefix $(obj),$(SOBJS))
+$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
+clean:
- rm -f $(SOBJS) $(OBJS)
+distclean: clean
- rm -f $(LIB) core *.bak .depend
+############################################################# ########## +##
+# defines $(obj).depend target +include $(SRCTREE)/rules.mk
+sinclude $(obj).depend
+############################################################# ########## +## diff --git a/board/keymile/suen3/config.mk b/board/keymile/suen3/config.mk new file mode 100644 index 0000000..fb29a1b --- /dev/null +++ b/board/keymile/suen3/config.mk @@ -0,0 +1,25 @@ +# +# (C) Copyright 2009 +# Marvell Semiconductor <www.marvell.com> # Prafulla Wadaskar +prafulla@marvell.com # # See file CREDITS for list of people who +contributed to this # project.
Here too
Again, nothing changed.
+# +# This program is free software; you can redistribute it and/or # +modify it under the terms of the GNU General Public License as # +published by the Free Software Foundation; either version 2 of # the +License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, # but +WITHOUT ANY WARRANTY; without even the implied warranty of # +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU +General Public License for more details. +# +# You should have received a copy of the GNU General Public License # +along with this program; if not, write to the Free Software # +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA +02110-1301 USA #
+TEXT_BASE = 0x00600000 diff --git a/board/keymile/suen3/sdramregs.txt b/board/keymile/suen3/sdramregs.txt new file mode 100644 index 0000000..74abb20 --- /dev/null +++ b/board/keymile/suen3/sdramregs.txt
Under which license?
GPL of course. ;)
And one question about this: Does "doimage" allow comments? And if yes, what's the comment control character? Is C-style supported ("/*")?
@@ -0,0 +1,28 @@ +0xFFD10000 0x01111111 +0xFFD10008 0x00001100 +0xFFD100E0 0x1B1B1B1B +0xFFD20134 0xBBBBBBBB +0xFFD20138 0x00BBBBBB +0xFFD20154 0x00000200 +0xFFD2014C 0x00001C00 +0xFFD20148 0x00000001 +0xFFD01400 0x43000400 +0xFFD01404 0x36343000 +0xFFD01408 0x2302544B +0xFFD0140C 0x00000032 +0xFFD01410 0x0000000D +0xFFD01414 0x00000000 +0xFFD01418 0x00000000 +0xFFD0141C 0x00000642 +0xFFD01420 0x00000040 +0xFFD01424 0x0000F07F +0xFFD01504 0x07FFFFF1 +0xFFD01508 0x00000000 +0xFFD0150C 0x00000000 +0xFFD01514 0x00000000 +0xFFD0151C 0x00000000 +0xFFD01494 0x00000000 +0xFFD01498 0x00000000 +0xFFD0149C 0x0000E90F +0xFFD01480 0x00000001 +0x0 0x0 diff --git a/board/keymile/suen3/suen3.c b/board/keymile/suen3/suen3.c new file mode 100644 index 0000000..231745f --- /dev/null +++ b/board/keymile/suen3/suen3.c @@ -0,0 +1,127 @@ +/*
- (C) Copyright 2009
- Marvell Semiconductor <www.marvell.com>
- Prafulla Wadaskar prafulla@marvell.com
Here too
The basic part if from you. So I left your copyright in it.
- (C) Copyright 2009
- Stefan Roese, DENX Software Engineering, sr@denx.de.
- 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., 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301 USA
- */
+#include <common.h> +#include <netdev.h> +#include <miiphy.h> +#include <asm/arch/kirkwood.h> +#include <asm/arch/mpp.h>
+DECLARE_GLOBAL_DATA_PTR;
+int board_init(void) +{
- /* Multi-Purpose Pins Functionality configuration */
- u32 kwmpp_config[] = {
MPP0_NF_IO2,
MPP1_NF_IO3,
MPP2_NF_IO4,
MPP3_NF_IO5,
MPP4_NF_IO6,
MPP5_NF_IO7,
MPP6_SYSRST_OUTn,
MPP7_PEX_RST_OUTn,
MPP8_TW_SDA,
MPP9_TW_SCK,
MPP10_UART0_TXD,
MPP11_UART0_RXD,
MPP12_GPO, /* Reserved */
MPP13_UART1_TXD,
MPP14_UART1_RXD,
MPP15_GPIO, /* Not used */
MPP16_GPIO, /* Not used */
MPP17_GPIO, /* Reserved */
MPP18_NF_IO0,
MPP19_NF_IO1,
MPP20_GPIO,
MPP21_GPIO,
MPP22_GPIO,
MPP23_GPIO,
MPP24_GPIO,
MPP25_GPIO,
MPP26_GPIO,
MPP27_GPIO,
MPP28_GPIO,
MPP29_GPIO,
MPP30_GPIO,
MPP31_GPIO,
MPP32_GPIO,
MPP33_GPIO,
MPP34_GPIO, /* CDL1 (input) */
MPP35_GPIO, /* CDL2 (input) */
MPP36_GPIO, /* MAIN_IRQ (input) */
MPP37_GPIO, /* BOARD_LED */
MPP38_GPIO, /* Piggy3 LED[1] */
MPP39_GPIO, /* Piggy3 LED[2] */
MPP40_GPIO, /* Piggy3 LED[3] */
MPP41_GPIO, /* Piggy3 LED[4] */
MPP42_GPIO, /* Piggy3 LED[5] */
MPP43_GPIO, /* Piggy3 LED[6] */
MPP44_GPIO, /* Piggy3 LED[7] */
MPP45_GPIO, /* Piggy3 LED[8] */
MPP46_GPIO, /* Reserved */
MPP47_GPIO, /* Reserved */
MPP48_GPIO, /* Reserved */
MPP49_GPIO, /* SW_INTOUTn */
0
- };
- kirkwood_mpp_conf(kwmpp_config);
- /*
* arch number of board
*/
- gd->bd->bi_arch_number = MACH_TYPE_SUEN3;
- /* address of boot parameters */
- gd->bd->bi_boot_params = kw_sdram_bar(0) + 0x100;
- return 0;
+}
+int dram_init(void) +{
- int i;
- for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
gd->bd->bi_dram[i].start = kw_sdram_bar(i);
gd->bd->bi_dram[i].size = kw_sdram_bs(i);
- }
- return 0;
+}
+/* Configure and enable MV88E1118 PHY */ void reset_phy(void) {
If this PHY connected using RGMII then pls check you done need RGMII Tx/Rx delays
Ethernet works without any further changes on this board (tested with 100MBit). How should this RGMII Tx/Rx delay problem show? Instable traffic? Or what would be not working?
Thanks.
Best regards, Stefan
===================================================================== DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office@denx.de =====================================================================

Hi Stefan, hi Prafulla,
Hi Prafulla,
On Wednesday 08 July 2009 19:48:19 Prafulla Wadaskar wrote:
MAINTAINERS | 1 + MAKEALL | 1 + Makefile | 3 + board/keymile/suen3/Makefile | 51 +++++++++ board/keymile/suen3/config.mk | 25 ++++ board/keymile/suen3/sdramregs.txt | 28 +++++
This file will be of no use until we have proposed bin_dep.sh and doimage utility in place.
Even without doimage and/or bin_dep.sh in place, I think it makes perfect sense to include this SDRAM init file in the board directory. Mainly because of two reasons:
a) Keep bootloader related files in one place (SDRAM init is crucial for correct operation)
b) Keep those files under revision control
And I don't think that anything really speaks against having this file in this place for now.
But anyway, we should try to get at least your bin_dep.sh infrastructure accepter. Or at least restart the discussion about it (and probably about doimage as well).
I would prefer this, too. If I'm allowed to vote for this :)
Dieter
board/keymile/suen3/suen3.c | 127 +++++++++++++++++++++ include/configs/suen3.h | 221 +++++++++++++++++++++++++++++++++++++ 8 files changed, 457 insertions(+), 0 deletions(-) create mode 100644 board/keymile/suen3/Makefile create mode 100644 board/keymile/suen3/config.mk create mode 100644 board/keymile/suen3/sdramregs.txt create mode 100644 board/keymile/suen3/suen3.c create mode 100644 include/configs/suen3.h
diff --git a/MAINTAINERS b/MAINTAINERS index 705bac5..ce117e1 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -637,6 +637,7 @@ Stefan Roese sr@denx.de ixdpg425 xscale pdnb3 xscale scpu xscale
- suen3 ARM926EJS (Kirkwood SoC)
Alessandro Rubini rubini@unipv.it Nomadik Linux Team STN_WMM_nomadik_linux@list.st.com diff --git a/MAKEALL b/MAKEALL index 41f1445..6c80694 100755 --- a/MAKEALL +++ b/MAKEALL @@ -524,6 +524,7 @@ LIST_ARM9=" \ scb9328 \ smdk2400 \ smdk2410 \
- suen3 \ trab \ VCMA9 \ versatile \
diff --git a/Makefile b/Makefile index 2a06440..3afc4ba 100644 --- a/Makefile +++ b/Makefile @@ -2925,6 +2925,9 @@ smdk2400_config : unconfig smdk2410_config : unconfig @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 samsung s3c24x0
+suen3_config: unconfig
- @$(MKCONFIG) $(@:_config=) arm arm926ejs $(@:_config=) keymile
+kirkwood
SX1_stdout_serial_config \ SX1_config: unconfig @mkdir -p $(obj)include diff --git a/board/keymile/suen3/Makefile b/board/keymile/suen3/Makefile new file mode 100644 index 0000000..de05cc8 --- /dev/null +++ b/board/keymile/suen3/Makefile @@ -0,0 +1,51 @@ +# +# (C) Copyright 2009 +# Marvell Semiconductor <www.marvell.com> # Prafulla Wadaskar +prafulla@marvell.com # # See file CREDITS for list of people who +contributed to this # project.
I think you forgot to change these lines :-)
I didn't change much in this file, so I didn't change the copyright header.
+# +# This program is free software; you can redistribute it and/or # +modify it under the terms of the GNU General Public License as # +published by the Free Software Foundation; either version 2 of # the +License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, # but +WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License # +along with this program; if not, write to the Free Software # +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA +02110-1301 USA #
+include $(TOPDIR)/config.mk
+LIB = $(obj)lib$(BOARD).a
+COBJS := suen3.o
+SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) +OBJS := $(addprefix $(obj),$(COBJS)) +SOBJS := $(addprefix $(obj),$(SOBJS))
+$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
+clean:
- rm -f $(SOBJS) $(OBJS)
+distclean: clean
- rm -f $(LIB) core *.bak .depend
+############################################################# ########## +##
+# defines $(obj).depend target +include $(SRCTREE)/rules.mk
+sinclude $(obj).depend
+############################################################# ########## +## diff --git a/board/keymile/suen3/config.mk b/board/keymile/suen3/config.mk new file mode 100644 index 0000000..fb29a1b --- /dev/null +++ b/board/keymile/suen3/config.mk @@ -0,0 +1,25 @@ +# +# (C) Copyright 2009 +# Marvell Semiconductor <www.marvell.com> # Prafulla Wadaskar +prafulla@marvell.com # # See file CREDITS for list of people who +contributed to this # project.
Here too
Again, nothing changed.
+# +# This program is free software; you can redistribute it and/or # +modify it under the terms of the GNU General Public License as # +published by the Free Software Foundation; either version 2 of # the +License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, # but +WITHOUT ANY WARRANTY; without even the implied warranty of # +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU +General Public License for more details. +# +# You should have received a copy of the GNU General Public License # +along with this program; if not, write to the Free Software # +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA +02110-1301 USA #
+TEXT_BASE = 0x00600000 diff --git a/board/keymile/suen3/sdramregs.txt b/board/keymile/suen3/sdramregs.txt new file mode 100644 index 0000000..74abb20 --- /dev/null +++ b/board/keymile/suen3/sdramregs.txt
Under which license?
GPL of course. ;)
And one question about this: Does "doimage" allow comments? And if yes, what's the comment control character? Is C-style supported ("/*")?
@@ -0,0 +1,28 @@ +0xFFD10000 0x01111111 +0xFFD10008 0x00001100 +0xFFD100E0 0x1B1B1B1B +0xFFD20134 0xBBBBBBBB +0xFFD20138 0x00BBBBBB +0xFFD20154 0x00000200 +0xFFD2014C 0x00001C00 +0xFFD20148 0x00000001 +0xFFD01400 0x43000400 +0xFFD01404 0x36343000 +0xFFD01408 0x2302544B +0xFFD0140C 0x00000032 +0xFFD01410 0x0000000D +0xFFD01414 0x00000000 +0xFFD01418 0x00000000 +0xFFD0141C 0x00000642 +0xFFD01420 0x00000040 +0xFFD01424 0x0000F07F +0xFFD01504 0x07FFFFF1 +0xFFD01508 0x00000000 +0xFFD0150C 0x00000000 +0xFFD01514 0x00000000 +0xFFD0151C 0x00000000 +0xFFD01494 0x00000000 +0xFFD01498 0x00000000 +0xFFD0149C 0x0000E90F +0xFFD01480 0x00000001 +0x0 0x0 diff --git a/board/keymile/suen3/suen3.c b/board/keymile/suen3/suen3.c new file mode 100644 index 0000000..231745f --- /dev/null +++ b/board/keymile/suen3/suen3.c @@ -0,0 +1,127 @@ +/*
- (C) Copyright 2009
- Marvell Semiconductor <www.marvell.com>
- Prafulla Wadaskar prafulla@marvell.com
Here too
The basic part if from you. So I left your copyright in it.
- (C) Copyright 2009
- Stefan Roese, DENX Software Engineering, sr@denx.de.
- 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., 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301 USA
- */
+#include <common.h> +#include <netdev.h> +#include <miiphy.h> +#include <asm/arch/kirkwood.h> +#include <asm/arch/mpp.h>
+DECLARE_GLOBAL_DATA_PTR;
+int board_init(void) +{
- /* Multi-Purpose Pins Functionality configuration */
- u32 kwmpp_config[] = {
MPP0_NF_IO2,
MPP1_NF_IO3,
MPP2_NF_IO4,
MPP3_NF_IO5,
MPP4_NF_IO6,
MPP5_NF_IO7,
MPP6_SYSRST_OUTn,
MPP7_PEX_RST_OUTn,
MPP8_TW_SDA,
MPP9_TW_SCK,
MPP10_UART0_TXD,
MPP11_UART0_RXD,
MPP12_GPO, /* Reserved */
MPP13_UART1_TXD,
MPP14_UART1_RXD,
MPP15_GPIO, /* Not used */
MPP16_GPIO, /* Not used */
MPP17_GPIO, /* Reserved */
MPP18_NF_IO0,
MPP19_NF_IO1,
MPP20_GPIO,
MPP21_GPIO,
MPP22_GPIO,
MPP23_GPIO,
MPP24_GPIO,
MPP25_GPIO,
MPP26_GPIO,
MPP27_GPIO,
MPP28_GPIO,
MPP29_GPIO,
MPP30_GPIO,
MPP31_GPIO,
MPP32_GPIO,
MPP33_GPIO,
MPP34_GPIO, /* CDL1 (input) */
MPP35_GPIO, /* CDL2 (input) */
MPP36_GPIO, /* MAIN_IRQ (input) */
MPP37_GPIO, /* BOARD_LED */
MPP38_GPIO, /* Piggy3 LED[1] */
MPP39_GPIO, /* Piggy3 LED[2] */
MPP40_GPIO, /* Piggy3 LED[3] */
MPP41_GPIO, /* Piggy3 LED[4] */
MPP42_GPIO, /* Piggy3 LED[5] */
MPP43_GPIO, /* Piggy3 LED[6] */
MPP44_GPIO, /* Piggy3 LED[7] */
MPP45_GPIO, /* Piggy3 LED[8] */
MPP46_GPIO, /* Reserved */
MPP47_GPIO, /* Reserved */
MPP48_GPIO, /* Reserved */
MPP49_GPIO, /* SW_INTOUTn */
0
- };
- kirkwood_mpp_conf(kwmpp_config);
- /*
* arch number of board
*/
- gd->bd->bi_arch_number = MACH_TYPE_SUEN3;
- /* address of boot parameters */
- gd->bd->bi_boot_params = kw_sdram_bar(0) + 0x100;
- return 0;
+}
+int dram_init(void) +{
- int i;
- for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
gd->bd->bi_dram[i].start = kw_sdram_bar(i);
gd->bd->bi_dram[i].size = kw_sdram_bs(i);
- }
- return 0;
+}
+/* Configure and enable MV88E1118 PHY */ void reset_phy(void) {
If this PHY connected using RGMII then pls check you done need RGMII Tx/Rx delays
Ethernet works without any further changes on this board (tested with 100MBit). How should this RGMII Tx/Rx delay problem show? Instable traffic? Or what would be not working?
Thanks.
Best regards, Stefan
===================================================================== DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office@denx.de ===================================================================== _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot

On Thursday 09 July 2009 09:21:33 Dieter Kiermaier wrote:
On Wednesday 08 July 2009 19:48:19 Prafulla Wadaskar wrote:
MAINTAINERS | 1 + MAKEALL | 1 + Makefile | 3 + board/keymile/suen3/Makefile | 51 +++++++++ board/keymile/suen3/config.mk | 25 ++++ board/keymile/suen3/sdramregs.txt | 28 +++++
This file will be of no use until we have proposed bin_dep.sh and doimage utility in place.
Even without doimage and/or bin_dep.sh in place, I think it makes perfect sense to include this SDRAM init file in the board directory. Mainly because of two reasons:
a) Keep bootloader related files in one place (SDRAM init is crucial for correct operation)
b) Keep those files under revision control
And I don't think that anything really speaks against having this file in this place for now.
But anyway, we should try to get at least your bin_dep.sh infrastructure accepter. Or at least restart the discussion about it (and probably about doimage as well).
I would prefer this, too. If I'm allowed to vote for this :)
Sure you are. At least if you share my opinion! ;)
Thanks.
Best regards, Stefan
===================================================================== DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office@denx.de =====================================================================

-----Original Message----- From: Stefan Roese [mailto:sr@denx.de] Sent: Thursday, July 09, 2009 12:54 PM To: dk-arm-linux@gmx.de Cc: u-boot@lists.denx.de; Prafulla Wadaskar; Ashish Karkare; Prabhanjan Sarnaik Subject: Re: [U-Boot] [PATCH 4/4] arm/kirkwood: Add Keymile SUEN3 support
On Thursday 09 July 2009 09:21:33 Dieter Kiermaier wrote:
On Wednesday 08 July 2009 19:48:19 Prafulla Wadaskar wrote:
MAINTAINERS | 1 + MAKEALL | 1 + Makefile | 3 + board/keymile/suen3/Makefile | 51 +++++++++ board/keymile/suen3/config.mk | 25 ++++ board/keymile/suen3/sdramregs.txt | 28 +++++
This file will be of no use until we have proposed
bin_dep.sh and
doimage utility in place.
Even without doimage and/or bin_dep.sh in place, I think it makes perfect sense to include this SDRAM init file in the board directory. Mainly because of two reasons:
a) Keep bootloader related files in one place (SDRAM init
is crucial for
correct operation)
b) Keep those files under revision control
And I don't think that anything really speaks against having this file in this place for now.
But anyway, we should try to get at least your bin_dep.sh infrastructure accepter. Or at least restart the
discussion about it
(and probably about doimage as well).
I would prefer this, too. If I'm allowed to vote for this :)
Sure you are. At least if you share my opinion! ;)
Thanks a lot for your support :-) I will repost these patches soon, (by afternoon)
Regards.. Prafulla . .
Thanks.
Best regards, Stefan
===================================================================== DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office@denx.de =====================================================================

Hi Prafulla,
On Thursday 09 July 2009 09:15:29 Stefan Roese wrote:
+++ b/board/keymile/suen3/sdramregs.txt
Under which license?
GPL of course. ;)
And one question about this: Does "doimage" allow comments? And if yes, what's the comment control character? Is C-style supported ("/*")?
I tried to put some comment lines into this file ("/*", "//", "#", ";") but nothing worked so far. "doimage" just didn't finish building the image. Any ideas what could be used for a comment line?
Thanks.
Best regards, Stefan
===================================================================== DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office@denx.de =====================================================================

-----Original Message----- From: Stefan Roese [mailto:sr@denx.de] Sent: Thursday, July 09, 2009 2:19 PM To: u-boot@lists.denx.de Cc: Prafulla Wadaskar; Ashish Karkare; Prabhanjan Sarnaik Subject: Re: [U-Boot] [PATCH 4/4] arm/kirkwood: Add Keymile SUEN3 support
Hi Prafulla,
On Thursday 09 July 2009 09:15:29 Stefan Roese wrote:
+++ b/board/keymile/suen3/sdramregs.txt
Under which license?
GPL of course. ;)
And one question about this: Does "doimage" allow comments? And if yes, what's the comment control character? Is C-style
supported ("/*")?
No, this need to be added to doImage code.
Regards.. Prafula . .
I tried to put some comment lines into this file ("/*", "//", "#", ";") but nothing worked so far. "doimage" just didn't finish building the image. Any ideas what could be used for a comment line?
Thanks.
Best regards, Stefan
===================================================================== DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office@denx.de =====================================================================

On 09:15 Thu 09 Jul , Stefan Roese wrote:
Hi Prafulla,
On Wednesday 08 July 2009 19:48:19 Prafulla Wadaskar wrote:
MAINTAINERS | 1 + MAKEALL | 1 + Makefile | 3 + board/keymile/suen3/Makefile | 51 +++++++++ board/keymile/suen3/config.mk | 25 ++++ board/keymile/suen3/sdramregs.txt | 28 +++++
This file will be of no use until we have proposed bin_dep.sh and doimage utility in place.
Even without doimage and/or bin_dep.sh in place, I think it makes perfect sense to include this SDRAM init file in the board directory. Mainly because of two reasons:
a) Keep bootloader related files in one place (SDRAM init is crucial for correct operation)
b) Keep those files under revision control
And I don't think that anything really speaks against having this file in this place for now.
But anyway, we should try to get at least your bin_dep.sh infrastructure accepter. Or at least restart the discussion about it (and probably about doimage as well).
I do not think we need this bin_dep.sh at all
we can simply add a new target u-boot.kwd which will do somthing like this
$(obj)u-boot.kwd: $(obj)u-boot.bin $(do_image) $(obj)u-boot.kwd $(obj)u-boot.bin $(obj)board/$(BOARDDIR)/sdramregs.txt
Best Regards, J.

-----Original Message----- From: Jean-Christophe PLAGNIOL-VILLARD [mailto:plagnioj@jcrosoft.com] Sent: Sunday, July 12, 2009 9:11 PM To: Stefan Roese Cc: Prafulla Wadaskar; u-boot@lists.denx.de; Ashish Karkare; Prabhanjan Sarnaik Subject: Re: [U-Boot] [PATCH 4/4] arm/kirkwood: Add Keymile SUEN3 support
On 09:15 Thu 09 Jul , Stefan Roese wrote:
Hi Prafulla,
On Wednesday 08 July 2009 19:48:19 Prafulla Wadaskar wrote:
MAINTAINERS | 1 + MAKEALL | 1 + Makefile | 3 + board/keymile/suen3/Makefile | 51 +++++++++ board/keymile/suen3/config.mk | 25 ++++ board/keymile/suen3/sdramregs.txt | 28 +++++
This file will be of no use until we have proposed bin_dep.sh and doimage utility in place.
Even without doimage and/or bin_dep.sh in place, I think it makes perfect sense to include this SDRAM init file in the board
directory.
Mainly because of two reasons:
a) Keep bootloader related files in one place (SDRAM init
is crucial for
correct operation)
b) Keep those files under revision control
And I don't think that anything really speaks against
having this file
in this place for now.
But anyway, we should try to get at least your bin_dep.sh infrastructure accepter. Or at least restart the discussion
about it
(and probably about doimage as well).
I do not think we need this bin_dep.sh at all
we can simply add a new target u-boot.kwd which will do somthing like this
$(obj)u-boot.kwd: $(obj)u-boot.bin $(do_image) $(obj)u-boot.kwd $(obj)u-boot.bin $(obj)board/$(BOARDDIR)/sdramregs.txt
Dear Jean Your suggestion is good and simple to implement But this change is Arch/Soc specific like Kirkwood for other new comer SOCs if required we will end up adding such support. there are some other already supported targets which need similar support but done in the way that you have suggested
Why not to provide some automation to take care of such activities?
Bin_dep.sh provides the same, once it is there it will be easier to handle any u-boot.bin post processing in board/arch/Soc specific folders (even we can append tools too).
I wonder why I need to modify root Makefile to support new board? Even this can be automated to put relevant boards configuration to respective soc/Arch folder
I am reposting this patch
Regards.. Prafulla . .
Best Regards, J.

Dear Prafulla Wadaskar,
In message 73173D32E9439E4ABB5151606C3E19E202DDF2694F@SC-VEXCH1.marvell.com you wrote:
we can simply add a new target u-boot.kwd which will do somthing like this
$(obj)u-boot.kwd: $(obj)u-boot.bin $(do_image) $(obj)u-boot.kwd $(obj)u-boot.bin $(obj)board/$(BOARDDIR)/sdramregs.txt
Note: "do_image" is way to generic; please use a more specific name.
Your suggestion is good and simple to implement But this change is Arch/Soc specific like Kirkwood for other new comer SOCs if required we will end up adding such support. there are some other already supported targets which need similar support but done in the way that you have suggested
Why not to provide some automation to take care of such activities?
I'm not sure what you mean by "automation". Please elucidate.
Bin_dep.sh provides the same, once it is there it will be easier to handle any u-boot.bin post processing in board/arch/Soc specific folders (even we can append tools too).
The U-Boot build process is controlled by the top level Makefile, so when you need an additional step to warp the standard U-Boot binary image (u-boot.bin) into a new, custom image format (u-boot.kwd ?), you will have to add a rule for that int he top level Makefile, plus provide the required scripts / tools (note that these may or may not be included with the U-Boot source tree).
I wonder why I need to modify root Makefile to support new board?
We are not talking about adding a new board, but about adding a new image format.
Even this can be automated to put relevant boards configuration to respective soc/Arch folder
I don't understand what you mean.
Best regards,
Wolfgang Denk

-----Original Message----- From: Wolfgang Denk [mailto:wd@denx.de] Sent: Monday, July 13, 2009 4:54 PM To: Prafulla Wadaskar Cc: Jean-Christophe PLAGNIOL-VILLARD; Stefan Roese; u-boot@lists.denx.de; Ashish Karkare; Prabhanjan Sarnaik Subject: Re: [U-Boot] [PATCH 4/4] arm/kirkwood: Add Keymile SUEN3 support
Dear Prafulla Wadaskar,
In message <73173D32E9439E4ABB5151606C3E19E202DDF2694F@SC-VEXCH1.marvell. com> you wrote:
we can simply add a new target u-boot.kwd which will do somthing like this
$(obj)u-boot.kwd: $(obj)u-boot.bin $(do_image) $(obj)u-boot.kwd $(obj)u-boot.bin $(obj)board/$(BOARDDIR)/sdramregs.txt
Note: "do_image" is way to generic; please use a more specific name.
I am going to use a name "kwimage" for this utility, the objective of this utility will be to create u-boot.kw bootable file for kirkwood from u-boot.bin. I am planning to add a folder "kwimage" in ./tools/ Any feedback welcomed....
Regards.. Prafulla . .

On Tuesday 14 July 2009 05:20:29 Prafulla Wadaskar wrote:
$(obj)u-boot.kwd: $(obj)u-boot.bin $(do_image) $(obj)u-boot.kwd $(obj)u-boot.bin $(obj)board/$(BOARDDIR)/sdramregs.txt
Note: "do_image" is way to generic; please use a more specific name.
I am going to use a name "kwimage" for this utility, the objective of this utility will be to create u-boot.kw bootable file for kirkwood from u-boot.bin. I am planning to add a folder "kwimage" in ./tools/ Any feedback welcomed....
Is this utility supposed to be used only for Kirkwood? Or are there plans to use it for other Marvell SoC's in the future as well? If this is true then then you should use a non-kirkwood specific name (e.g. marvell-image or sheeva-image, not sure what the common part is here).
Thanks.
Best regards, Stefan
===================================================================== DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office@denx.de =====================================================================

Dear Prafulla Wadaskar,
In message 73173D32E9439E4ABB5151606C3E19E202DDF26AC9@SC-VEXCH1.marvell.com you wrote:
Note: "do_image" is way to generic; please use a more specific name.
I am going to use a name "kwimage" for this utility, the objective of this = utility will be to create u-boot.kw bootable file for kirkwood from u-boot.= bin. I am planning to add a folder "kwimage" in ./tools/ Any feedback welcomed....
Sounds good to me.
Best regards,
Wolfgang Denk
participants (5)
-
Dieter Kiermaier
-
Jean-Christophe PLAGNIOL-VILLARD
-
Prafulla Wadaskar
-
Stefan Roese
-
Wolfgang Denk