Skip to content

Commit

Permalink
kirkwood: Allow nand to be configured via. devicetree
Browse files Browse the repository at this point in the history
Add default configuration for NAND, to be enabled in your board config. Ensure
clock gating is set appropriately when the NAND is enabled.

Acked-by: Jason Cooper <jason@lakedaemon.net>
Signed-off-by: Jamie Lentin <jm@lentin.co.uk>
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
  • Loading branch information
Jamie Lentin authored and Jason Cooper committed May 15, 2012
1 parent a0fabf7 commit 858156b
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 1 deletion.
15 changes: 14 additions & 1 deletion arch/arm/boot/dts/kirkwood.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

ocp@f1000000 {
compatible = "simple-bus";
ranges = <0 0xf1000000 0x1000000>;
ranges = <0 0xf1000000 0x4000000>;
#address-cells = <1>;
#size-cells = <1>;

Expand All @@ -32,5 +32,18 @@
reg = <0x10300 0x20>;
interrupts = <53>;
};

nand@3000000 {
#address-cells = <1>;
#size-cells = <1>;
cle = <0>;
ale = <1>;
bank-width = <1>;
compatible = "mrvl,orion-nand";
reg = <0x3000000 0x400>;
chip-delay = <25>;
/* set partition map and/or chip-delay in board dts */
status = "disabled";
};
};
};
12 changes: 12 additions & 0 deletions arch/arm/mach-kirkwood/common.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
#include <linux/ata_platform.h>
#include <linux/mtd/nand.h>
#include <linux/dma-mapping.h>
#include <linux/of.h>
#include <net/dsa.h>
#include <asm/page.h>
#include <asm/timex.h>
Expand Down Expand Up @@ -482,13 +483,24 @@ static int __init kirkwood_clock_gate(void)
unsigned int curr = readl(CLOCK_GATING_CTRL);
u32 dev, rev;

#ifdef CONFIG_OF
struct device_node *np;
#endif
kirkwood_pcie_id(&dev, &rev);
printk(KERN_DEBUG "Gating clock of unused units\n");
printk(KERN_DEBUG "before: 0x%08x\n", curr);

/* Make sure those units are accessible */
writel(curr | CGC_SATA0 | CGC_SATA1 | CGC_PEX0 | CGC_PEX1, CLOCK_GATING_CTRL);

#ifdef CONFIG_OF
np = of_find_compatible_node(NULL, NULL, "mrvl,orion-nand");
if (np && of_device_is_available(np)) {
kirkwood_clk_ctrl |= CGC_RUNIT;
of_node_put(np);
}
#endif

/* For SATA: first shutdown the phy */
if (!(kirkwood_clk_ctrl & CGC_SATA0)) {
/* Disable PLL and IVREF */
Expand Down

0 comments on commit 858156b

Please sign in to comment.