* [PATCHv3] [ARM] kirkwood: combine support for openrd base/client support
@ 2009-10-22 8:22 Alexander Clouter
2009-10-22 10:47 ` Simon Kagstrom
0 siblings, 1 reply; 6+ messages in thread
From: Alexander Clouter @ 2009-10-22 8:22 UTC (permalink / raw)
To: linux-arm-kernel
Inspired by the mach-ep93xx flattening work, there is really not
much difference between the OpenRD base and client board support
so they should be merged together.
v0 - initial release
v1 - added I2C/PCIe support
v2 - removed un-necessary ifdef's as recommended by Nico
and marked u-boot MTD_WRITEABLE
v3 - fixup GbE1 to work (PHY address incorrect, hex 18 *not* dec 18)
Signed-off-by: Alexander Clouter <alex@digriz.org.uk>
---
diff --git a/arch/arm/mach-kirkwood/Kconfig b/arch/arm/mach-kirkwood/Kconfig
index 0aca451..8e9ac7d 100644
--- a/arch/arm/mach-kirkwood/Kconfig
+++ b/arch/arm/mach-kirkwood/Kconfig
@@ -38,12 +38,23 @@ config MACH_TS219
Say 'Y' here if you want your kernel to support the
QNAP TS-119 and TS-219 Turbo NAS devices.
+config MACH_OPENRD
+ bool
+
config MACH_OPENRD_BASE
bool "Marvell OpenRD Base Board"
+ select MACH_OPENRD
help
Say 'Y' here if you want your kernel to support the
Marvell OpenRD Base Board.
+config MACH_OPENRD_CLIENT
+ bool "Marvell OpenRD Client Board"
+ select MACH_OPENRD
+ help
+ Say 'Y' here if you want your kernel to support the
+ Marvell OpenRD Client Board.
+
endmenu
endif
diff --git a/arch/arm/mach-kirkwood/Makefile b/arch/arm/mach-kirkwood/Makefile
index 80ab0ec..5ad19dd 100644
--- a/arch/arm/mach-kirkwood/Makefile
+++ b/arch/arm/mach-kirkwood/Makefile
@@ -6,6 +6,6 @@ obj-$(CONFIG_MACH_RD88F6281) += rd88f6281-setup.o
obj-$(CONFIG_MACH_MV88F6281GTW_GE) += mv88f6281gtw_ge-setup.o
obj-$(CONFIG_MACH_SHEEVAPLUG) += sheevaplug-setup.o
obj-$(CONFIG_MACH_TS219) += ts219-setup.o
-obj-$(CONFIG_MACH_OPENRD_BASE) += openrd_base-setup.o
+obj-$(CONFIG_MACH_OPENRD) += openrd-setup.o
obj-$(CONFIG_CPU_IDLE) += cpuidle.o
diff --git a/arch/arm/mach-kirkwood/openrd-setup.c b/arch/arm/mach-kirkwood/openrd-setup.c
new file mode 100644
index 0000000..a91e800
--- /dev/null
+++ b/arch/arm/mach-kirkwood/openrd-setup.c
@@ -0,0 +1,117 @@
+/*
+ * arch/arm/mach-kirkwood/openrd-setup.c
+ *
+ * Marvell OpenRD (Base|Client) Board Setup
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2. This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/mtd/nand.h>
+#include <linux/mtd/partitions.h>
+#include <linux/ata_platform.h>
+#include <linux/mv643xx_eth.h>
+#include <asm/mach-types.h>
+#include <asm/mach/arch.h>
+#include <mach/kirkwood.h>
+#include <plat/mvsdio.h>
+#include "common.h"
+#include "mpp.h"
+
+static struct mtd_partition openrd_nand_parts[] = {
+ {
+ .name = "u-boot",
+ .offset = 0,
+ .size = SZ_1M,
+ .mask_flags = MTD_WRITEABLE
+ }, {
+ .name = "uImage",
+ .offset = MTDPART_OFS_NXTBLK,
+ .size = SZ_4M
+ }, {
+ .name = "root",
+ .offset = MTDPART_OFS_NXTBLK,
+ .size = MTDPART_SIZ_FULL
+ },
+};
+
+static struct mv643xx_eth_platform_data openrd_ge00_data = {
+ .phy_addr = MV643XX_ETH_PHY_ADDR(8),
+};
+
+static struct mv643xx_eth_platform_data openrd_ge01_data = {
+ .phy_addr = MV643XX_ETH_PHY_ADDR(24),
+};
+
+static struct mv_sata_platform_data openrd_sata_data = {
+ .n_ports = 2,
+};
+
+static struct mvsdio_platform_data openrd_mvsdio_data = {
+ .gpio_card_detect = 29, /* MPP29 used as SD card detect */
+};
+
+static unsigned int openrd_mpp_config[] __initdata = {
+ MPP29_GPIO,
+ 0
+};
+
+static void __init openrd_init(void)
+{
+ /*
+ * Basic setup. Needs to be called early.
+ */
+ kirkwood_init();
+ kirkwood_mpp_conf(openrd_mpp_config);
+
+ kirkwood_uart0_init();
+ kirkwood_nand_init(ARRAY_AND_SIZE(openrd_nand_parts), 25);
+
+ kirkwood_ehci_init();
+
+ kirkwood_ge00_init(&openrd_ge00_data);
+ if (machine_is_openrd_client())
+ kirkwood_ge01_init(&openrd_ge01_data);
+ kirkwood_sata_init(&openrd_sata_data);
+ kirkwood_sdio_init(&openrd_mvsdio_data);
+
+ kirkwood_i2c_init();
+}
+
+static int __init openrd_pci_init(void)
+{
+ kirkwood_pcie_init();
+
+ return 0;
+}
+subsys_initcall(openrd_pci_init);
+
+#ifdef CONFIG_MACH_OPENRD_BASE
+MACHINE_START(OPENRD_BASE, "Marvell OpenRD Base Board")
+ /* Maintainer: Dhaval Vasa <dhaval.vasa@einfochips.com> */
+ .phys_io = KIRKWOOD_REGS_PHYS_BASE,
+ .io_pg_offst = ((KIRKWOOD_REGS_VIRT_BASE) >> 18) & 0xfffc,
+ .boot_params = 0x00000100,
+ .init_machine = openrd_init,
+ .map_io = kirkwood_map_io,
+ .init_irq = kirkwood_init_irq,
+ .timer = &kirkwood_timer,
+MACHINE_END
+#endif
+
+#ifdef CONFIG_MACH_OPENRD_CLIENT
+MACHINE_START(OPENRD_CLIENT, "Marvell OpenRD Client Board")
+ /* Maintainer: Dhaval Vasa <dhaval.vasa@einfochips.com> */
+ .phys_io = KIRKWOOD_REGS_PHYS_BASE,
+ .io_pg_offst = ((KIRKWOOD_REGS_VIRT_BASE) >> 18) & 0xfffc,
+ .boot_params = 0x00000100,
+ .init_machine = openrd_init,
+ .map_io = kirkwood_map_io,
+ .init_irq = kirkwood_init_irq,
+ .timer = &kirkwood_timer,
+MACHINE_END
+#endif
diff --git a/arch/arm/mach-kirkwood/openrd_base-setup.c b/arch/arm/mach-kirkwood/openrd_base-setup.c
deleted file mode 100644
index 947dfb8..0000000
--- a/arch/arm/mach-kirkwood/openrd_base-setup.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * arch/arm/mach-kirkwood/openrd_base-setup.c
- *
- * Marvell OpenRD Base Board Setup
- *
- * This file is licensed under the terms of the GNU General Public
- * License version 2. This program is licensed "as is" without any
- * warranty of any kind, whether express or implied.
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/mtd/partitions.h>
-#include <linux/ata_platform.h>
-#include <linux/mv643xx_eth.h>
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-#include <mach/kirkwood.h>
-#include <plat/mvsdio.h>
-#include "common.h"
-#include "mpp.h"
-
-static struct mtd_partition openrd_base_nand_parts[] = {
- {
- .name = "u-boot",
- .offset = 0,
- .size = SZ_1M
- }, {
- .name = "uImage",
- .offset = MTDPART_OFS_NXTBLK,
- .size = SZ_4M
- }, {
- .name = "root",
- .offset = MTDPART_OFS_NXTBLK,
- .size = MTDPART_SIZ_FULL
- },
-};
-
-static struct mv643xx_eth_platform_data openrd_base_ge00_data = {
- .phy_addr = MV643XX_ETH_PHY_ADDR(8),
-};
-
-static struct mv_sata_platform_data openrd_base_sata_data = {
- .n_ports = 2,
-};
-
-static struct mvsdio_platform_data openrd_base_mvsdio_data = {
- .gpio_card_detect = 29, /* MPP29 used as SD card detect */
-};
-
-static unsigned int openrd_base_mpp_config[] __initdata = {
- MPP29_GPIO,
- 0
-};
-
-static void __init openrd_base_init(void)
-{
- /*
- * Basic setup. Needs to be called early.
- */
- kirkwood_init();
- kirkwood_mpp_conf(openrd_base_mpp_config);
-
- kirkwood_uart0_init();
- kirkwood_nand_init(ARRAY_AND_SIZE(openrd_base_nand_parts), 25);
-
- kirkwood_ehci_init();
-
- kirkwood_ge00_init(&openrd_base_ge00_data);
- kirkwood_sata_init(&openrd_base_sata_data);
- kirkwood_sdio_init(&openrd_base_mvsdio_data);
-}
-
-MACHINE_START(OPENRD_BASE, "Marvell OpenRD Base Board")
- /* Maintainer: Dhaval Vasa <dhaval.vasa@einfochips.com> */
- .phys_io = KIRKWOOD_REGS_PHYS_BASE,
- .io_pg_offst = ((KIRKWOOD_REGS_VIRT_BASE) >> 18) & 0xfffc,
- .boot_params = 0x00000100,
- .init_machine = openrd_base_init,
- .map_io = kirkwood_map_io,
- .init_irq = kirkwood_init_irq,
- .timer = &kirkwood_timer,
-MACHINE_END
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCHv3] [ARM] kirkwood: combine support for openrd base/client support
2009-10-22 8:22 [PATCHv3] [ARM] kirkwood: combine support for openrd base/client support Alexander Clouter
@ 2009-10-22 10:47 ` Simon Kagstrom
2009-10-22 11:04 ` Alexander Clouter
0 siblings, 1 reply; 6+ messages in thread
From: Simon Kagstrom @ 2009-10-22 10:47 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, 22 Oct 2009 09:22:49 +0100
Alexander Clouter <alex@digriz.org.uk> wrote:
> +static int __init openrd_pci_init(void)
> +{
> + kirkwood_pcie_init();
I think you should do
if (machine_is_openrd_base() || machine_is_openrd_client())
kirkwood_pcie_init();
here instead since there might be other boards configured as well where
this shouldn't be done (e.g., a build with both sheevaplug and the
OpenRDs).
> diff --git a/arch/arm/mach-kirkwood/openrd_base-setup.c b/arch/arm/mach-kirkwood/openrd_base-setup.c
Perhaps it's a good idea to rebase this one against Nicolas orion.git tree at
http://git.marvell.com/?p=orion.git;a=summary
?
// Simon
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCHv3] [ARM] kirkwood: combine support for openrd base/client support
2009-10-22 10:47 ` Simon Kagstrom
@ 2009-10-22 11:04 ` Alexander Clouter
2009-10-22 18:19 ` Nicolas Pitre
2009-10-23 7:31 ` Simon Kagstrom
0 siblings, 2 replies; 6+ messages in thread
From: Alexander Clouter @ 2009-10-22 11:04 UTC (permalink / raw)
To: linux-arm-kernel
Hi,
* Simon Kagstrom <simon.kagstrom@netinsight.net> [2009-10-22 12:47:56+0200]:
>
> On Thu, 22 Oct 2009 09:22:49 +0100 Alexander Clouter <alex@digriz.org.uk> wrote:
>
> > +static int __init openrd_pci_init(void)
> > +{
> > + kirkwood_pcie_init();
>
> I think you should do
>
> if (machine_is_openrd_base() || machine_is_openrd_client())
> kirkwood_pcie_init();
>
> here instead since there might be other boards configured as well where
> this shouldn't be done (e.g., a build with both sheevaplug and the
> OpenRDs).
>
It's called 'openrd-setup.c' not 'sheevaplug-setup.c' :) The
SheevaPlug's do not use this at all ('MACHINE_START(SHEEVAPLUG, ...)' is
not to be seen in there), they already have their own file. If someone
wants to merge the SheevaPlug's into here too they can cross that bridge
themselves.
If people want *me* to flatten sheevaplug-setup.c and my openrd-setup.c
into a single file I am happy to do so, but someone needs to give me a
suitable combo name as sheeva/openrd would no longer be right I would
guess :)
> > diff --git a/arch/arm/mach-kirkwood/openrd_base-setup.c b/arch/arm/mach-kirkwood/openrd_base-setup.c
>
> Perhaps it's a good idea to rebase this one against Nicolas orion.git tree at
>
> http://git.marvell.com/?p=orion.git;a=summary
>
...erm..I have not rebased but it should apply cleanly though as I just
run from a clone'd vanilla 2.6 (Linus's tree) and pull in orion.git
anyway.
I did not think the rebasing was really an issue unless you get hunk
fails?
Cheers
--
Alexander Clouter
.sigmonster says: Phone call for chucky-pooh.
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCHv3] [ARM] kirkwood: combine support for openrd base/client support
2009-10-22 11:04 ` Alexander Clouter
@ 2009-10-22 18:19 ` Nicolas Pitre
2009-10-22 20:38 ` Alexander Clouter
2009-10-23 7:31 ` Simon Kagstrom
1 sibling, 1 reply; 6+ messages in thread
From: Nicolas Pitre @ 2009-10-22 18:19 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, 22 Oct 2009, Alexander Clouter wrote:
> Hi,
>
> * Simon Kagstrom <simon.kagstrom@netinsight.net> [2009-10-22 12:47:56+0200]:
> >
> > On Thu, 22 Oct 2009 09:22:49 +0100 Alexander Clouter <alex@digriz.org.uk> wrote:
> >
> > > +static int __init openrd_pci_init(void)
> > > +{
> > > + kirkwood_pcie_init();
> >
> > I think you should do
> >
> > if (machine_is_openrd_base() || machine_is_openrd_client())
> > kirkwood_pcie_init();
> >
> > here instead since there might be other boards configured as well where
> > this shouldn't be done (e.g., a build with both sheevaplug and the
> > OpenRDs).
> >
> It's called 'openrd-setup.c' not 'sheevaplug-setup.c' :)
So?
> The SheevaPlug's do not use this at all ('MACHINE_START(SHEEVAPLUG,
> ...)' is not to be seen in there), they already have their own file.
The openrd_pci_init() is still called with a subsys_initcall()
registration. That would be invoked on a SheevaPlug as well if you have
a kernel that supports them both.
> If someone
> wants to merge the SheevaPlug's into here too they can cross that bridge
> themselves.
No way. I'll bomb the bridge beforehand. There should be a balance
between consolidation and abstraction.
Nicolas
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCHv3] [ARM] kirkwood: combine support for openrd base/client support
2009-10-22 18:19 ` Nicolas Pitre
@ 2009-10-22 20:38 ` Alexander Clouter
0 siblings, 0 replies; 6+ messages in thread
From: Alexander Clouter @ 2009-10-22 20:38 UTC (permalink / raw)
To: linux-arm-kernel
Hi,
* Nicolas Pitre <nico@fluxnic.net> [2009-10-22 14:19:47-0400]:
>
> On Thu, 22 Oct 2009, Alexander Clouter wrote:
>
> > The SheevaPlug's do not use this at all ('MACHINE_START(SHEEVAPLUG,
> > ...)' is not to be seen in there), they already have their own file.
>
> The openrd_pci_init() is still called with a subsys_initcall()
> registration. That would be invoked on a SheevaPlug as well if you have
> a kernel that supports them both.
>
Right, now I understand, that makes perfect sense. I'll amend things to
behave for version 4.
> > If someone wants to merge the SheevaPlug's into here too they can
> > cross that bridge themselves.
>
> No way. I'll bomb the bridge beforehand. There should be a balance
> between consolidation and abstraction.
>
I did not say it was a Good Idea(tm) :)
Cheers
--
Alexander Clouter
.sigmonster says: It was Penguin lust... at its ugliest.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCHv3] [ARM] kirkwood: combine support for openrd base/client support
2009-10-22 11:04 ` Alexander Clouter
2009-10-22 18:19 ` Nicolas Pitre
@ 2009-10-23 7:31 ` Simon Kagstrom
1 sibling, 0 replies; 6+ messages in thread
From: Simon Kagstrom @ 2009-10-23 7:31 UTC (permalink / raw)
To: linux-arm-kernel
Sorry for being unclear in my comments! (And thanks to Nicolas for
explaining the PCI init issue I raised).
On Thu, 22 Oct 2009 12:04:36 +0100
Alexander Clouter <alex@digriz.org.uk> wrote:
> > > diff --git a/arch/arm/mach-kirkwood/openrd_base-setup.c b/arch/arm/mach-kirkwood/openrd_base-setup.c
> >
> > Perhaps it's a good idea to rebase this one against Nicolas orion.git tree at
> >
> > http://git.marvell.com/?p=orion.git;a=summary
> >
> ...erm..I have not rebased but it should apply cleanly though as I just
> run from a clone'd vanilla 2.6 (Linus's tree) and pull in orion.git
> anyway.
Well, your patch will/should go through Nicolas tree, and I just
noticed that it didn't contain the last patches on orion.git (namely
the PCI init you also added to the combined file).
I haven't tested, but would guess that git won't accept removing a file
which has changes in it - the openrd-base.c you _remove_ don't have the
PCI init.
Anyway, I believe it makes very much sense to merge the two OpenRDs, so
other than these things I'm happy with the patch.
// Simon
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2009-10-23 7:31 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-10-22 8:22 [PATCHv3] [ARM] kirkwood: combine support for openrd base/client support Alexander Clouter
2009-10-22 10:47 ` Simon Kagstrom
2009-10-22 11:04 ` Alexander Clouter
2009-10-22 18:19 ` Nicolas Pitre
2009-10-22 20:38 ` Alexander Clouter
2009-10-23 7:31 ` Simon Kagstrom
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).