Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 858156bd authored by Jamie Lentin's avatar Jamie Lentin Committed by Jason Cooper
Browse files

kirkwood: Allow nand to be configured via. devicetree



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: default avatarJason Cooper <jason@lakedaemon.net>
Signed-off-by: default avatarJamie Lentin <jm@lentin.co.uk>
Signed-off-by: default avatarJason Cooper <jason@lakedaemon.net>
parent a0fabf72
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
@@ -5,7 +5,7 @@

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

@@ -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 −0
Original line number Diff line number Diff line
@@ -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>
@@ -482,6 +483,9 @@ 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);
@@ -489,6 +493,14 @@ static int __init kirkwood_clock_gate(void)
	/* 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 */