* [PATCH 1/2] powerpc: prpmc2800 - Add MTD support
@ 2007-10-25 23:39 Mark A. Greer
2007-10-25 23:42 ` [PATCH 2/2] powerpc: prpmc2800 - Don't overwrite user FLASH size Mark A. Greer
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Mark A. Greer @ 2007-10-25 23:39 UTC (permalink / raw)
To: linuxppc-dev
From: Mark A. Greer <mgreer@mvista.com>
Create necessary device nodes so that the MTD subsystem recognizes
the MTD entries in the prpmc2800's DTS file. Also bring MTD section
of the prpmc2800's DTS file up to the current DTS specification.
Signed-off-by: Mark A. Greer <mgreer@mvista.com>
---
arch/powerpc/boot/dts/prpmc2800.dts | 39 +++++++++++----
arch/powerpc/platforms/embedded6xx/prpmc2800.c | 13 +++++
2 files changed, 42 insertions(+), 10 deletions(-)
diff --git a/arch/powerpc/boot/dts/prpmc2800.dts b/arch/powerpc/boot/dts/prpmc2800.dts
index 297dfa5..50fc0a7 100644
--- a/arch/powerpc/boot/dts/prpmc2800.dts
+++ b/arch/powerpc/boot/dts/prpmc2800.dts
@@ -55,17 +55,36 @@
f2000000 f2000000 00040000>; /* Integrated SRAM */
flash@a0000000 {
- device_type = "rom";
- compatible = "direct-mapped";
- reg = <a0000000 4000000>; /* Default (64MB) */
- probe-type = "CFI";
+ compatible = "cfi-flash";
+ reg = <a0000000 04000000>;
bank-width = <4>;
- partitions = <00000000 00100000 /* RO */
- 00100000 00040001 /* RW */
- 00140000 00400000 /* RO */
- 00540000 039c0000 /* RO */
- 03f00000 00100000>; /* RO */
- partition-names = "FW Image A", "FW Config Data", "Kernel Image", "Filesystem", "FW Image B";
+ device-width = <2>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ fw@0 {
+ label = "FW Image A";
+ reg = <00000000 00100000>;
+ read-only;
+ };
+ cfg@100000 {
+ label = "FW Config Data"; /* RW */
+ reg = <00100000 00040000>;
+ };
+ kernel@140000 {
+ label = "Kernel Image";
+ reg = <00140000 00400000>;
+ read-only;
+ };
+ fs@540000 {
+ label = "Filesystem";
+ reg = <00540000 039c0000>;
+ read-only;
+ };
+ fw@3f00000 {
+ label = "FW Image B";
+ reg = <03f00000 00100000>;
+ read-only;
+ };
};
mdio {
diff --git a/arch/powerpc/platforms/embedded6xx/prpmc2800.c b/arch/powerpc/platforms/embedded6xx/prpmc2800.c
index e484cac..a356a19 100644
--- a/arch/powerpc/platforms/embedded6xx/prpmc2800.c
+++ b/arch/powerpc/platforms/embedded6xx/prpmc2800.c
@@ -14,6 +14,7 @@
#include <linux/delay.h>
#include <linux/interrupt.h>
#include <linux/seq_file.h>
+#include <linux/of_platform.h>
#include <asm/machdep.h>
#include <asm/prom.h>
@@ -68,6 +69,18 @@ static void __init prpmc2800_setup_arch(void)
printk("Motorola %s\n", prpmc2800_platform_name);
}
+static int __init prpmc2800_register_mtd(void)
+{
+ struct device_node *np = NULL;
+
+ while ((np = of_find_compatible_node(np, NULL, "cfi-flash")) != NULL)
+ of_platform_device_create(np, NULL, NULL);
+
+ of_node_put(np);
+ return 0;
+}
+device_initcall(prpmc2800_register_mtd);
+
static void prpmc2800_reset_board(void)
{
u32 temp;
^ permalink raw reply related [flat|nested] 5+ messages in thread* [PATCH 2/2] powerpc: prpmc2800 - Don't overwrite user FLASH size 2007-10-25 23:39 [PATCH 1/2] powerpc: prpmc2800 - Add MTD support Mark A. Greer @ 2007-10-25 23:42 ` Mark A. Greer 2007-10-26 0:23 ` [PATCH 1/2] powerpc: prpmc2800 - Add MTD support Stephen Rothwell 2007-10-26 2:19 ` [PATCH v2 " Mark A. Greer 2 siblings, 0 replies; 5+ messages in thread From: Mark A. Greer @ 2007-10-25 23:42 UTC (permalink / raw) To: linuxppc-dev From: Mark A. Greer <mgreer@mvista.com> The prpmc2800 bootwrapper code currently overwrites the DTS' user FLASH size with a predetermined value. Intead make it use whatever is specified in the DTS unless the prpmc2800 variant the bootwrapper is running on has no user FLASH. In that case, set the user FLASH size to 0. Signed-off-by: Mark A. Greer <mgreer@mvista.com> --- arch/powerpc/boot/prpmc2800.c | 54 ++++++++++++++++---------------- 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/arch/powerpc/boot/prpmc2800.c b/arch/powerpc/boot/prpmc2800.c index 9614e1d..a8b3213 100644 --- a/arch/powerpc/boot/prpmc2800.c +++ b/arch/powerpc/boot/prpmc2800.c @@ -58,7 +58,7 @@ struct prpmc2800_board_info { u32 core_speed; u32 mem_size; u32 boot_flash; - u32 user_flash; + u8 has_user_flash; }; static struct prpmc2800_board_info prpmc2800_board_info[] = { @@ -73,7 +73,7 @@ static struct prpmc2800_board_info prpmc2800_board_info[] = { .core_speed = 1*GHz, .mem_size = 512*MB, .boot_flash = 1*MB, - .user_flash = 64*MB, + .has_user_flash = 1, }, { .model = BOARD_MODEL_PRPMC280, @@ -86,7 +86,7 @@ static struct prpmc2800_board_info prpmc2800_board_info[] = { .core_speed = 1*GHz, .mem_size = 512*MB, .boot_flash = 0, - .user_flash = 0, + .has_user_flash = 0, }, { .model = BOARD_MODEL_PRPMC280, @@ -99,7 +99,7 @@ static struct prpmc2800_board_info prpmc2800_board_info[] = { .core_speed = 733*MHz, .mem_size = 512*MB, .boot_flash = 1*MB, - .user_flash = 64*MB, + .has_user_flash = 1, }, { .model = BOARD_MODEL_PRPMC280, @@ -112,7 +112,7 @@ static struct prpmc2800_board_info prpmc2800_board_info[] = { .core_speed = 1*GHz, .mem_size = 1*GB, .boot_flash = 1*MB, - .user_flash = 64*MB, + .has_user_flash = 1, }, { .model = BOARD_MODEL_PRPMC280, @@ -125,7 +125,7 @@ static struct prpmc2800_board_info prpmc2800_board_info[] = { .core_speed = 1*GHz, .mem_size = 512*MB, .boot_flash = 1*MB, - .user_flash = 64*MB, + .has_user_flash = 1, }, { .model = BOARD_MODEL_PRPMC280, @@ -138,7 +138,7 @@ static struct prpmc2800_board_info prpmc2800_board_info[] = { .core_speed = 733*MHz, .mem_size = 128*MB, .boot_flash = 1*MB, - .user_flash = 0, + .has_user_flash = 0, }, { .model = BOARD_MODEL_PRPMC280, @@ -151,7 +151,7 @@ static struct prpmc2800_board_info prpmc2800_board_info[] = { .core_speed = 1*GHz, .mem_size = 256*MB, .boot_flash = 1*MB, - .user_flash = 0, + .has_user_flash = 0, }, { .model = BOARD_MODEL_PRPMC280, @@ -164,7 +164,7 @@ static struct prpmc2800_board_info prpmc2800_board_info[] = { .core_speed = 1*GHz, .mem_size = 1*GB, .boot_flash = 1*MB, - .user_flash = 64*MB, + .has_user_flash = 1, }, { .model = BOARD_MODEL_PRPMC2800, @@ -177,7 +177,7 @@ static struct prpmc2800_board_info prpmc2800_board_info[] = { .core_speed = 1*GHz, .mem_size = 512*MB, .boot_flash = 2*MB, - .user_flash = 64*MB, + .has_user_flash = 1, }, { .model = BOARD_MODEL_PRPMC2800, @@ -190,7 +190,7 @@ static struct prpmc2800_board_info prpmc2800_board_info[] = { .core_speed = 1*GHz, .mem_size = 512*MB, .boot_flash = 0, - .user_flash = 0, + .has_user_flash = 0, }, { .model = BOARD_MODEL_PRPMC2800, @@ -203,7 +203,7 @@ static struct prpmc2800_board_info prpmc2800_board_info[] = { .core_speed = 733*MHz, .mem_size = 512*MB, .boot_flash = 2*MB, - .user_flash = 64*MB, + .has_user_flash = 1, }, { .model = BOARD_MODEL_PRPMC2800, @@ -216,7 +216,7 @@ static struct prpmc2800_board_info prpmc2800_board_info[] = { .core_speed = 1*GHz, .mem_size = 1*GB, .boot_flash = 2*MB, - .user_flash = 64*MB, + .has_user_flash = 1, }, { .model = BOARD_MODEL_PRPMC2800, @@ -229,7 +229,7 @@ static struct prpmc2800_board_info prpmc2800_board_info[] = { .core_speed = 1*GHz, .mem_size = 512*MB, .boot_flash = 2*MB, - .user_flash = 64*MB, + .has_user_flash = 1, }, { .model = BOARD_MODEL_PRPMC2800, @@ -242,7 +242,7 @@ static struct prpmc2800_board_info prpmc2800_board_info[] = { .core_speed = 733*MHz, .mem_size = 128*MB, .boot_flash = 2*MB, - .user_flash = 0, + .has_user_flash = 0, }, { .model = BOARD_MODEL_PRPMC2800, @@ -255,7 +255,7 @@ static struct prpmc2800_board_info prpmc2800_board_info[] = { .core_speed = 1*GHz, .mem_size = 2*GB, .boot_flash = 2*MB, - .user_flash = 64*MB, + .has_user_flash = 1, }, { .model = BOARD_MODEL_PRPMC2800, @@ -268,7 +268,7 @@ static struct prpmc2800_board_info prpmc2800_board_info[] = { .core_speed = 733*MHz, .mem_size = 1*GB, .boot_flash = 2*MB, - .user_flash = 64*MB, + .has_user_flash = 1, }, }; @@ -451,15 +451,17 @@ static void prpmc2800_fixups(void) setprop(devp, "model", "mv64362", strlen("mv64362") + 1); } - /* Set User FLASH size */ - devp = finddevice("/mv64x60/flash@a0000000"); - if (devp == NULL) - fatal("Error: Missing User FLASH device tree node\n\r"); - rc = getprop(devp, "reg", v, sizeof(v)); - if (rc != sizeof(v)) - fatal("Error: Can't find User FLASH reg property\n\r"); - v[1] = bip->user_flash; - setprop(devp, "reg", v, sizeof(v)); + /* Some PrPMC2800 variants have no User FLASH */ + if (!bip->has_user_flash) { + devp = finddevice("/mv64x60/flash@a0000000"); + if (devp != NULL) { + rc = getprop(devp, "reg", v, sizeof(v)); + if (rc == sizeof(v)) { + v[1] = 0; + setprop(devp, "reg", v, sizeof(v)); + } + } + } } #define MV64x60_MPP_CNTL_0 0xf000 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] powerpc: prpmc2800 - Add MTD support 2007-10-25 23:39 [PATCH 1/2] powerpc: prpmc2800 - Add MTD support Mark A. Greer 2007-10-25 23:42 ` [PATCH 2/2] powerpc: prpmc2800 - Don't overwrite user FLASH size Mark A. Greer @ 2007-10-26 0:23 ` Stephen Rothwell 2007-10-26 1:06 ` Mark A. Greer 2007-10-26 2:19 ` [PATCH v2 " Mark A. Greer 2 siblings, 1 reply; 5+ messages in thread From: Stephen Rothwell @ 2007-10-26 0:23 UTC (permalink / raw) To: Mark A. Greer; +Cc: linuxppc-dev [-- Attachment #1: Type: text/plain, Size: 650 bytes --] Hi Mark, On Thu, 25 Oct 2007 16:39:48 -0700 "Mark A. Greer" <mgreer@mvista.com> wrote: > > +static int __init prpmc2800_register_mtd(void) > +{ > + struct device_node *np = NULL; ^^^^^^^ Not needed if you use for_each_compatible_node(). > + > + while ((np = of_find_compatible_node(np, NULL, "cfi-flash")) != NULL) for_each_compatible_node(np, NULL, "cfi-flash") > + of_platform_device_create(np, NULL, NULL); > + > + of_node_put(np); Not needed as np must be NULL when you get here. -- Cheers, Stephen Rothwell sfr@canb.auug.org.au http://www.canb.auug.org.au/~sfr/ [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] powerpc: prpmc2800 - Add MTD support 2007-10-26 0:23 ` [PATCH 1/2] powerpc: prpmc2800 - Add MTD support Stephen Rothwell @ 2007-10-26 1:06 ` Mark A. Greer 0 siblings, 0 replies; 5+ messages in thread From: Mark A. Greer @ 2007-10-26 1:06 UTC (permalink / raw) To: Stephen Rothwell; +Cc: linuxppc-dev On Fri, Oct 26, 2007 at 10:23:53AM +1000, Stephen Rothwell wrote: > Hi Mark, > > On Thu, 25 Oct 2007 16:39:48 -0700 "Mark A. Greer" <mgreer@mvista.com> wrote: > > > > +static int __init prpmc2800_register_mtd(void) > > +{ > > + struct device_node *np = NULL; > ^^^^^^^ > Not needed if you use for_each_compatible_node(). > > > + > > + while ((np = of_find_compatible_node(np, NULL, "cfi-flash")) != NULL) > > for_each_compatible_node(np, NULL, "cfi-flash") > > > + of_platform_device_create(np, NULL, NULL); > > + > > + of_node_put(np); > > Not needed as np must be NULL when you get here. Ah, yes, true on all points. Thanks Stephen. Update coming shortly... Mark ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v2 1/2] powerpc: prpmc2800 - Add MTD support 2007-10-25 23:39 [PATCH 1/2] powerpc: prpmc2800 - Add MTD support Mark A. Greer 2007-10-25 23:42 ` [PATCH 2/2] powerpc: prpmc2800 - Don't overwrite user FLASH size Mark A. Greer 2007-10-26 0:23 ` [PATCH 1/2] powerpc: prpmc2800 - Add MTD support Stephen Rothwell @ 2007-10-26 2:19 ` Mark A. Greer 2 siblings, 0 replies; 5+ messages in thread From: Mark A. Greer @ 2007-10-26 2:19 UTC (permalink / raw) To: linuxppc-dev From: Mark A. Greer <mgreer@mvista.com> Create necessary device nodes so that the MTD subsystem recognizes the MTD entries in the prpmc2800's DTS file. Also bring MTD section of the prpmc2800's DTS file up to the current DTS specification. Signed-off-by: Mark A. Greer <mgreer@mvista.com> --- With Stephen's comments addressed. Much nicer. Thanks again, Stephen. arch/powerpc/boot/dts/prpmc2800.dts | 39 +++++++++++---- arch/powerpc/platforms/embedded6xx/prpmc2800.c | 12 ++++ 2 files changed, 41 insertions(+), 10 deletions(-) diff --git a/arch/powerpc/boot/dts/prpmc2800.dts b/arch/powerpc/boot/dts/prpmc2800.dts index 297dfa5..24944ca 100644 --- a/arch/powerpc/boot/dts/prpmc2800.dts +++ b/arch/powerpc/boot/dts/prpmc2800.dts @@ -55,17 +55,36 @@ f2000000 f2000000 00040000>; /* Integrated SRAM */ flash@a0000000 { - device_type = "rom"; - compatible = "direct-mapped"; - reg = <a0000000 4000000>; /* Default (64MB) */ - probe-type = "CFI"; + compatible = "cfi-flash"; + reg = <a0000000 04000000>; bank-width = <4>; - partitions = <00000000 00100000 /* RO */ - 00100000 00040001 /* RW */ - 00140000 00400000 /* RO */ - 00540000 039c0000 /* RO */ - 03f00000 00100000>; /* RO */ - partition-names = "FW Image A", "FW Config Data", "Kernel Image", "Filesystem", "FW Image B"; + device-width = <2>; + #address-cells = <1>; + #size-cells = <1>; + fw@0 { + label = "FW Image A"; + reg = <00000000 00100000>; + read-only; + }; + cfg@100000 { + label = "FW Config Data"; /* RW */ + reg = <00100000 00040000>; + }; + kernel@140000 { + label = "Kernel Image"; + reg = <00140000 00400000>; + read-only; + }; + fs@540000 { + label = "Filesystem"; + reg = <00540000 039c0000>; + read-only; + }; + fw@3f00000 { + label = "FW Image B"; + reg = <03f00000 00100000>; + read-only; + }; }; mdio { diff --git a/arch/powerpc/platforms/embedded6xx/prpmc2800.c b/arch/powerpc/platforms/embedded6xx/prpmc2800.c index e484cac..2506f38 100644 --- a/arch/powerpc/platforms/embedded6xx/prpmc2800.c +++ b/arch/powerpc/platforms/embedded6xx/prpmc2800.c @@ -14,6 +14,7 @@ #include <linux/delay.h> #include <linux/interrupt.h> #include <linux/seq_file.h> +#include <linux/of_platform.h> #include <asm/machdep.h> #include <asm/prom.h> @@ -68,6 +69,17 @@ static void __init prpmc2800_setup_arch(void) printk("Motorola %s\n", prpmc2800_platform_name); } +static int __init prpmc2800_register_mtd(void) +{ + struct device_node *np; + + for_each_compatible_node(np, NULL, "cfi-flash") + of_platform_device_create(np, NULL, NULL); + + return 0; +} +device_initcall(prpmc2800_register_mtd); + static void prpmc2800_reset_board(void) { u32 temp; ^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2007-10-26 2:19 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2007-10-25 23:39 [PATCH 1/2] powerpc: prpmc2800 - Add MTD support Mark A. Greer 2007-10-25 23:42 ` [PATCH 2/2] powerpc: prpmc2800 - Don't overwrite user FLASH size Mark A. Greer 2007-10-26 0:23 ` [PATCH 1/2] powerpc: prpmc2800 - Add MTD support Stephen Rothwell 2007-10-26 1:06 ` Mark A. Greer 2007-10-26 2:19 ` [PATCH v2 " Mark A. Greer
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox