* [Qemu-devel] [PATCH 0/2] vexpress-a9: NOR flash support
@ 2012-07-18 19:03 402jagan
2012-07-18 19:03 ` [Qemu-devel] [PATCH 1/2] vexpress: Add NOR0 Flash support 402jagan
2012-07-18 19:03 ` [Qemu-devel] [PATCH 2/2] vexpress: Add NOR1 " 402jagan
0 siblings, 2 replies; 14+ messages in thread
From: 402jagan @ 2012-07-18 19:03 UTC (permalink / raw)
To: qemu-devel; +Cc: Jagan, peter.maydell
From: Jagan <402jagan@gmail.com>
These patches are added a support for NOR flash on vexpress-a9
both in Bank #1 and Bank #2.
Well tested on u-boot stable tree with Linux.
Jagan (2):
vexpress: Add NOR0 Flash support
vexpress: Add NOR1 Flash support
hw/vexpress.c | 27 +++++++++++++++++++++++++--
1 files changed, 25 insertions(+), 2 deletions(-)
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Qemu-devel] [PATCH 1/2] vexpress: Add NOR0 Flash support
2012-07-18 19:03 [Qemu-devel] [PATCH 0/2] vexpress-a9: NOR flash support 402jagan
@ 2012-07-18 19:03 ` 402jagan
2012-07-20 14:41 ` Peter Maydell
2012-07-18 19:03 ` [Qemu-devel] [PATCH 2/2] vexpress: Add NOR1 " 402jagan
1 sibling, 1 reply; 14+ messages in thread
From: 402jagan @ 2012-07-18 19:03 UTC (permalink / raw)
To: qemu-devel; +Cc: Jagan, peter.maydell
From: Jagan <402jagan@gmail.com>
This patch adds support for NOR0 flash (Bank #1) on
vexpress-a9 platform. It is 64MB CFI01 compliant flash.
Tested on stable u-boot version through Linux.
Signed-off-by: Jagan <402jagan@gmail.com>
---
hw/vexpress.c | 17 ++++++++++++++++-
1 files changed, 16 insertions(+), 1 deletions(-)
diff --git a/hw/vexpress.c b/hw/vexpress.c
index 8072c5a..2e889a8 100644
--- a/hw/vexpress.c
+++ b/hw/vexpress.c
@@ -29,6 +29,11 @@
#include "sysemu.h"
#include "boards.h"
#include "exec-memory.h"
+#include "blockdev.h"
+#include "flash.h"
+
+#define VEXPRESS_FLASH_SIZE (64 * 1024 * 1024)
+#define VEXPRESS_FLASH_SECT_SIZE (256 * 1024)
#define VEXPRESS_BOARD_ID 0x8e0
@@ -355,6 +360,7 @@ static void vexpress_common_init(const VEDBoardInfo *daughterboard,
MemoryRegion *vram = g_new(MemoryRegion, 1);
MemoryRegion *sram = g_new(MemoryRegion, 1);
const target_phys_addr_t *map = daughterboard->motherboard_map;
+ DriveInfo *dinfo;
daughterboard->init(daughterboard, ram_size, cpu_model, pic, &proc_id);
@@ -405,7 +411,16 @@ static void vexpress_common_init(const VEDBoardInfo *daughterboard,
sysbus_create_simple("pl111", map[VE_CLCD], pic[14]);
- /* VE_NORFLASH0: not modelled */
+ /* VE_NORFLASH0: */
+ dinfo = drive_get(IF_PFLASH, 0, 0);
+ if (!pflash_cfi01_register(map[VE_NORFLASH0], NULL, "vexpress.flash0",
+ VEXPRESS_FLASH_SIZE, dinfo ? dinfo->bdrv : NULL,
+ VEXPRESS_FLASH_SECT_SIZE,
+ VEXPRESS_FLASH_SIZE / VEXPRESS_FLASH_SECT_SIZE,
+ 4, 0x0089, 0x0018, 0x0000, 0x0, 0)) {
+ fprintf(stderr, "qemu: Error registering flash0 memory.\n");
+ }
+
/* VE_NORFLASH0ALIAS: not modelled */
/* VE_NORFLASH1: not modelled */
--
1.7.0.4
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [Qemu-devel] [PATCH 2/2] vexpress: Add NOR1 Flash support
2012-07-18 19:03 [Qemu-devel] [PATCH 0/2] vexpress-a9: NOR flash support 402jagan
2012-07-18 19:03 ` [Qemu-devel] [PATCH 1/2] vexpress: Add NOR0 Flash support 402jagan
@ 2012-07-18 19:03 ` 402jagan
2012-07-18 23:57 ` Peter Crosthwaite
1 sibling, 1 reply; 14+ messages in thread
From: 402jagan @ 2012-07-18 19:03 UTC (permalink / raw)
To: qemu-devel; +Cc: Jagan, peter.maydell
From: Jagan <402jagan@gmail.com>
This patch adds support for NOR1 flash (Bank #2) on
vexpress-a9 platform. It is 64MB CFI01 compliant flash.
Tested on stable u-boot version through Linux.
Signed-off-by: Jagan <402jagan@gmail.com>
---
hw/vexpress.c | 10 +++++++++-
1 files changed, 9 insertions(+), 1 deletions(-)
diff --git a/hw/vexpress.c b/hw/vexpress.c
index 2e889a8..b4262ed 100644
--- a/hw/vexpress.c
+++ b/hw/vexpress.c
@@ -422,7 +422,15 @@ static void vexpress_common_init(const VEDBoardInfo *daughterboard,
}
/* VE_NORFLASH0ALIAS: not modelled */
- /* VE_NORFLASH1: not modelled */
+ /* VE_NORFLASH1: */
+ dinfo = drive_get(IF_PFLASH, 0, 0);
+ if (!pflash_cfi01_register(map[VE_NORFLASH1], NULL, "vexpress.flash1",
+ VEXPRESS_FLASH_SIZE, dinfo ? dinfo->bdrv : NULL,
+ VEXPRESS_FLASH_SECT_SIZE,
+ VEXPRESS_FLASH_SIZE / VEXPRESS_FLASH_SECT_SIZE,
+ 4, 0x0089, 0x0018, 0x0000, 0x1, 0)) {
+ fprintf(stderr, "qemu: Error registering flash1 memory.\n");
+ }
sram_size = 0x2000000;
memory_region_init_ram(sram, "vexpress.sram", sram_size);
--
1.7.0.4
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] [PATCH 2/2] vexpress: Add NOR1 Flash support
2012-07-18 19:03 ` [Qemu-devel] [PATCH 2/2] vexpress: Add NOR1 " 402jagan
@ 2012-07-18 23:57 ` Peter Crosthwaite
2012-07-19 9:16 ` jagan
0 siblings, 1 reply; 14+ messages in thread
From: Peter Crosthwaite @ 2012-07-18 23:57 UTC (permalink / raw)
To: 402jagan; +Cc: peter.maydell, qemu-devel
On Thu, Jul 19, 2012 at 5:03 AM, <402jagan@gmail.com> wrote:
> From: Jagan <402jagan@gmail.com>
>
> This patch adds support for NOR1 flash (Bank #2) on
> vexpress-a9 platform. It is 64MB CFI01 compliant flash.
>
> Tested on stable u-boot version through Linux.
>
> Signed-off-by: Jagan <402jagan@gmail.com>
> ---
> hw/vexpress.c | 10 +++++++++-
> 1 files changed, 9 insertions(+), 1 deletions(-)
>
> diff --git a/hw/vexpress.c b/hw/vexpress.c
> index 2e889a8..b4262ed 100644
> --- a/hw/vexpress.c
> +++ b/hw/vexpress.c
> @@ -422,7 +422,15 @@ static void vexpress_common_init(const VEDBoardInfo *daughterboard,
> }
>
> /* VE_NORFLASH0ALIAS: not modelled */
> - /* VE_NORFLASH1: not modelled */
> + /* VE_NORFLASH1: */
> + dinfo = drive_get(IF_PFLASH, 0, 0);
Both flashes use drive_get(IF_PFLASH, 0, 0). Doesnt this means they
are both going to back to the same file (one -pflash argument) and
share storage? Should this use drive_get_next() and you specify two
-pflash args, one for each device?
Regards
Peter
> + if (!pflash_cfi01_register(map[VE_NORFLASH1], NULL, "vexpress.flash1",
> + VEXPRESS_FLASH_SIZE, dinfo ? dinfo->bdrv : NULL,
> + VEXPRESS_FLASH_SECT_SIZE,
> + VEXPRESS_FLASH_SIZE / VEXPRESS_FLASH_SECT_SIZE,
> + 4, 0x0089, 0x0018, 0x0000, 0x1, 0)) {
> + fprintf(stderr, "qemu: Error registering flash1 memory.\n");
> + }
>
> sram_size = 0x2000000;
> memory_region_init_ram(sram, "vexpress.sram", sram_size);
> --
> 1.7.0.4
>
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] [PATCH 2/2] vexpress: Add NOR1 Flash support
2012-07-18 23:57 ` Peter Crosthwaite
@ 2012-07-19 9:16 ` jagan
2012-07-19 18:49 ` Igor Mitsyanko
2012-07-20 1:28 ` Peter Crosthwaite
0 siblings, 2 replies; 14+ messages in thread
From: jagan @ 2012-07-19 9:16 UTC (permalink / raw)
To: Peter Crosthwaite; +Cc: peter.maydell, qemu-devel
[-- Attachment #1: Type: text/plain, Size: 2097 bytes --]
Yes, I have used same drive_get(IF_PFLASH, 0, 0) with two flashes.
As these flashes are two different banks with individual bases address, I
used the same.
Was there any block allocation problem with this..will you please elaborate.
I couldn't understand about drive_get_next(), I think function can
be useful single drive devices SD/MTD.
Please suggest your comments.
Regards,
Jagan.
On Thu, Jul 19, 2012 at 5:27 AM, Peter Crosthwaite <
peter.crosthwaite@petalogix.com> wrote:
> On Thu, Jul 19, 2012 at 5:03 AM, <402jagan@gmail.com> wrote:
> > From: Jagan <402jagan@gmail.com>
> >
> > This patch adds support for NOR1 flash (Bank #2) on
> > vexpress-a9 platform. It is 64MB CFI01 compliant flash.
> >
> > Tested on stable u-boot version through Linux.
> >
> > Signed-off-by: Jagan <402jagan@gmail.com>
> > ---
> > hw/vexpress.c | 10 +++++++++-
> > 1 files changed, 9 insertions(+), 1 deletions(-)
> >
> > diff --git a/hw/vexpress.c b/hw/vexpress.c
> > index 2e889a8..b4262ed 100644
> > --- a/hw/vexpress.c
> > +++ b/hw/vexpress.c
> > @@ -422,7 +422,15 @@ static void vexpress_common_init(const VEDBoardInfo
> *daughterboard,
> > }
> >
> > /* VE_NORFLASH0ALIAS: not modelled */
> > - /* VE_NORFLASH1: not modelled */
> > + /* VE_NORFLASH1: */
> > + dinfo = drive_get(IF_PFLASH, 0, 0);
>
> Both flashes use drive_get(IF_PFLASH, 0, 0). Doesnt this means they
> are both going to back to the same file (one -pflash argument) and
> share storage? Should this use drive_get_next() and you specify two
> -pflash args, one for each device?
>
> Regards
> Peter
>
> > + if (!pflash_cfi01_register(map[VE_NORFLASH1], NULL,
> "vexpress.flash1",
> > + VEXPRESS_FLASH_SIZE, dinfo ? dinfo->bdrv : NULL,
> > + VEXPRESS_FLASH_SECT_SIZE,
> > + VEXPRESS_FLASH_SIZE / VEXPRESS_FLASH_SECT_SIZE,
> > + 4, 0x0089, 0x0018, 0x0000, 0x1, 0)) {
> > + fprintf(stderr, "qemu: Error registering flash1 memory.\n");
> > + }
> >
> > sram_size = 0x2000000;
> > memory_region_init_ram(sram, "vexpress.sram", sram_size);
> > --
> > 1.7.0.4
> >
> >
>
[-- Attachment #2: Type: text/html, Size: 3011 bytes --]
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] [PATCH 2/2] vexpress: Add NOR1 Flash support
2012-07-19 9:16 ` jagan
@ 2012-07-19 18:49 ` Igor Mitsyanko
2012-07-20 1:28 ` Peter Crosthwaite
1 sibling, 0 replies; 14+ messages in thread
From: Igor Mitsyanko @ 2012-07-19 18:49 UTC (permalink / raw)
To: jagan; +Cc: Peter Crosthwaite, peter.maydell, qemu-devel
On 07/19/2012 01:16 PM, jagan wrote:
> Yes, I have used same drive_get(IF_PFLASH, 0, 0) with two flashes.
> As these flashes are two different banks with individual bases address,
> I used the same.
>
> Was there any block allocation problem with this..will you please elaborate.
> I couldn't understand about drive_get_next(), I think function can
> be useful single drive devices SD/MTD.
>
> Please suggest your comments.
>
> Regards,
> Jagan.
>
I'm not sure how it was possible for you to successfully test this
patch, pflash_cfi01_register() calls bdrv_attach_dev_nofail() which
abort()s when you pass an already attached drive to it.
> On Thu, Jul 19, 2012 at 5:27 AM, Peter Crosthwaite
> <peter.crosthwaite@petalogix.com
> <mailto:peter.crosthwaite@petalogix.com>> wrote:
>
> On Thu, Jul 19, 2012 at 5:03 AM, <402jagan@gmail.com
> <mailto:402jagan@gmail.com>> wrote:
> > From: Jagan <402jagan@gmail.com <mailto:402jagan@gmail.com>>
> >
> > This patch adds support for NOR1 flash (Bank #2) on
> > vexpress-a9 platform. It is 64MB CFI01 compliant flash.
> >
> > Tested on stable u-boot version through Linux.
> >
> > Signed-off-by: Jagan <402jagan@gmail.com <mailto:402jagan@gmail.com>>
> > ---
> > hw/vexpress.c | 10 +++++++++-
> > 1 files changed, 9 insertions(+), 1 deletions(-)
> >
> > diff --git a/hw/vexpress.c b/hw/vexpress.c
> > index 2e889a8..b4262ed 100644
> > --- a/hw/vexpress.c
> > +++ b/hw/vexpress.c
> > @@ -422,7 +422,15 @@ static void vexpress_common_init(const
> VEDBoardInfo *daughterboard,
> > }
> >
> > /* VE_NORFLASH0ALIAS: not modelled */
> > - /* VE_NORFLASH1: not modelled */
> > + /* VE_NORFLASH1: */
> > + dinfo = drive_get(IF_PFLASH, 0, 0);
>
> Both flashes use drive_get(IF_PFLASH, 0, 0). Doesnt this means they
> are both going to back to the same file (one -pflash argument) and
> share storage? Should this use drive_get_next() and you specify two
> -pflash args, one for each device?
>
> Regards
> Peter
>
> > + if (!pflash_cfi01_register(map[VE_NORFLASH1], NULL,
> "vexpress.flash1",
> > + VEXPRESS_FLASH_SIZE, dinfo ? dinfo->bdrv : NULL,
> > + VEXPRESS_FLASH_SECT_SIZE,
> > + VEXPRESS_FLASH_SIZE / VEXPRESS_FLASH_SECT_SIZE,
> > + 4, 0x0089, 0x0018, 0x0000, 0x1, 0)) {
> > + fprintf(stderr, "qemu: Error registering flash1 memory.\n");
> > + }
> >
> > sram_size = 0x2000000;
> > memory_region_init_ram(sram, "vexpress.sram", sram_size);
> > --
> > 1.7.0.4
> >
> >
>
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] [PATCH 2/2] vexpress: Add NOR1 Flash support
2012-07-19 9:16 ` jagan
2012-07-19 18:49 ` Igor Mitsyanko
@ 2012-07-20 1:28 ` Peter Crosthwaite
2012-07-20 13:30 ` jagan
1 sibling, 1 reply; 14+ messages in thread
From: Peter Crosthwaite @ 2012-07-20 1:28 UTC (permalink / raw)
To: jagan; +Cc: peter.maydell, Igor Mitsyanko, qemu-devel
On Thu, Jul 19, 2012 at 7:16 PM, jagan <402jagan@gmail.com> wrote:
> Yes, I have used same drive_get(IF_PFLASH, 0, 0) with two flashes.
> As these flashes are two different banks with individual bases address, I
> used the same.
>
> Was there any block allocation problem with this..will you please elaborate.
> I couldn't understand about drive_get_next(),
s/drive_get(IF_PFLASH, 0, 0) /drive_get_next(IF_PFLASH)/
This will mean you have two -fplash arguments on qemu cmd line your two flashes.
qemu-system-arm ... -pflash nor0.bin -pflash nor1.bin
Currently you back (or attempt to back) both flashes to the same bdrv
which means they share storage. The two flashes will corrupt each
others data.
Regards,
Peter
I think function can be useful
> single drive devices SD/MTD.
>
> Please suggest your comments.
>
> Regards,
> Jagan.
>
> On Thu, Jul 19, 2012 at 5:27 AM, Peter Crosthwaite
> <peter.crosthwaite@petalogix.com> wrote:
>>
>> On Thu, Jul 19, 2012 at 5:03 AM, <402jagan@gmail.com> wrote:
>> > From: Jagan <402jagan@gmail.com>
>> >
>> > This patch adds support for NOR1 flash (Bank #2) on
>> > vexpress-a9 platform. It is 64MB CFI01 compliant flash.
>> >
>> > Tested on stable u-boot version through Linux.
>> >
>> > Signed-off-by: Jagan <402jagan@gmail.com>
>> > ---
>> > hw/vexpress.c | 10 +++++++++-
>> > 1 files changed, 9 insertions(+), 1 deletions(-)
>> >
>> > diff --git a/hw/vexpress.c b/hw/vexpress.c
>> > index 2e889a8..b4262ed 100644
>> > --- a/hw/vexpress.c
>> > +++ b/hw/vexpress.c
>> > @@ -422,7 +422,15 @@ static void vexpress_common_init(const VEDBoardInfo
>> > *daughterboard,
>> > }
>> >
>> > /* VE_NORFLASH0ALIAS: not modelled */
>> > - /* VE_NORFLASH1: not modelled */
>> > + /* VE_NORFLASH1: */
>> > + dinfo = drive_get(IF_PFLASH, 0, 0);
>>
>> Both flashes use drive_get(IF_PFLASH, 0, 0). Doesnt this means they
>> are both going to back to the same file (one -pflash argument) and
>> share storage? Should this use drive_get_next() and you specify two
>> -pflash args, one for each device?
>>
>> Regards
>> Peter
>>
>> > + if (!pflash_cfi01_register(map[VE_NORFLASH1], NULL,
>> > "vexpress.flash1",
>> > + VEXPRESS_FLASH_SIZE, dinfo ? dinfo->bdrv : NULL,
>> > + VEXPRESS_FLASH_SECT_SIZE,
>> > + VEXPRESS_FLASH_SIZE / VEXPRESS_FLASH_SECT_SIZE,
>> > + 4, 0x0089, 0x0018, 0x0000, 0x1, 0)) {
>> > + fprintf(stderr, "qemu: Error registering flash1 memory.\n");
>> > + }
>> >
>> > sram_size = 0x2000000;
>> > memory_region_init_ram(sram, "vexpress.sram", sram_size);
>> > --
>> > 1.7.0.4
>> >
>> >
>
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] [PATCH 2/2] vexpress: Add NOR1 Flash support
2012-07-20 1:28 ` Peter Crosthwaite
@ 2012-07-20 13:30 ` jagan
2012-07-20 14:12 ` jagan
2012-07-20 14:19 ` Igor Mitsyanko
0 siblings, 2 replies; 14+ messages in thread
From: jagan @ 2012-07-20 13:30 UTC (permalink / raw)
To: Peter Crosthwaite; +Cc: peter.maydell, Igor Mitsyanko, qemu-devel
[-- Attachment #1.1: Type: text/plain, Size: 3585 bytes --]
I think I understand the situation, like when I called
pflash_cfi01_register, it verifies BlockDriverState is < 0.
Was my understanding correct?
If ie so. I think I need to change drive_get(IF_PFLASH, 0, 0) to
drive_get_next(IF_PFLASH) on second flash access by
keeping drive_get(IF_PFLASH, 0, 0
on first flash, correct?
But I am wondering why it's still detecting 2 Flashes with 128MB when I
tested through u-boot.
Even I was written Linux and Ramdisk on to flashes again read back and able
to boot it, Fine.
Please find the attachment for u-boot log.
I haven't tested -pflash argument through ./qemu-system-arm
because it again asking about kernel argument, do I need to test this also?
Regards,
Jagan.
On Fri, Jul 20, 2012 at 6:58 AM, Peter Crosthwaite <
peter.crosthwaite@petalogix.com> wrote:
> On Thu, Jul 19, 2012 at 7:16 PM, jagan <402jagan@gmail.com> wrote:
> > Yes, I have used same drive_get(IF_PFLASH, 0, 0) with two flashes.
> > As these flashes are two different banks with individual bases address, I
> > used the same.
> >
> > Was there any block allocation problem with this..will you please
> elaborate.
> > I couldn't understand about drive_get_next(),
>
> s/drive_get(IF_PFLASH, 0, 0) /drive_get_next(IF_PFLASH)/
>
> This will mean you have two -fplash arguments on qemu cmd line your two
> flashes.
>
> qemu-system-arm ... -pflash nor0.bin -pflash nor1.bin
>
> Currently you back (or attempt to back) both flashes to the same bdrv
> which means they share storage. The two flashes will corrupt each
> others data.
>
> Regards,
> Peter
>
> I think function can be useful
> > single drive devices SD/MTD.
> >
> > Please suggest your comments.
> >
> > Regards,
> > Jagan.
> >
> > On Thu, Jul 19, 2012 at 5:27 AM, Peter Crosthwaite
> > <peter.crosthwaite@petalogix.com> wrote:
> >>
> >> On Thu, Jul 19, 2012 at 5:03 AM, <402jagan@gmail.com> wrote:
> >> > From: Jagan <402jagan@gmail.com>
> >> >
> >> > This patch adds support for NOR1 flash (Bank #2) on
> >> > vexpress-a9 platform. It is 64MB CFI01 compliant flash.
> >> >
> >> > Tested on stable u-boot version through Linux.
> >> >
> >> > Signed-off-by: Jagan <402jagan@gmail.com>
> >> > ---
> >> > hw/vexpress.c | 10 +++++++++-
> >> > 1 files changed, 9 insertions(+), 1 deletions(-)
> >> >
> >> > diff --git a/hw/vexpress.c b/hw/vexpress.c
> >> > index 2e889a8..b4262ed 100644
> >> > --- a/hw/vexpress.c
> >> > +++ b/hw/vexpress.c
> >> > @@ -422,7 +422,15 @@ static void vexpress_common_init(const
> VEDBoardInfo
> >> > *daughterboard,
> >> > }
> >> >
> >> > /* VE_NORFLASH0ALIAS: not modelled */
> >> > - /* VE_NORFLASH1: not modelled */
> >> > + /* VE_NORFLASH1: */
> >> > + dinfo = drive_get(IF_PFLASH, 0, 0);
> >>
> >> Both flashes use drive_get(IF_PFLASH, 0, 0). Doesnt this means they
> >> are both going to back to the same file (one -pflash argument) and
> >> share storage? Should this use drive_get_next() and you specify two
> >> -pflash args, one for each device?
> >>
> >> Regards
> >> Peter
> >>
> >> > + if (!pflash_cfi01_register(map[VE_NORFLASH1], NULL,
> >> > "vexpress.flash1",
> >> > + VEXPRESS_FLASH_SIZE, dinfo ? dinfo->bdrv : NULL,
> >> > + VEXPRESS_FLASH_SECT_SIZE,
> >> > + VEXPRESS_FLASH_SIZE / VEXPRESS_FLASH_SECT_SIZE,
> >> > + 4, 0x0089, 0x0018, 0x0000, 0x1, 0)) {
> >> > + fprintf(stderr, "qemu: Error registering flash1 memory.\n");
> >> > + }
> >> >
> >> > sram_size = 0x2000000;
> >> > memory_region_init_ram(sram, "vexpress.sram", sram_size);
> >> > --
> >> > 1.7.0.4
> >> >
> >> >
> >
> >
>
[-- Attachment #1.2: Type: text/html, Size: 5088 bytes --]
[-- Attachment #2: vexpress-a9_flash.log --]
[-- Type: application/octet-stream, Size: 9428 bytes --]
Mr.J> /home/jagan/bin/qemu-system-arm -M vexpress-a9 -kernel u-boot -nographic
U-Boot 2012.04.01-00016-g8ae8bd9-dirty (Jul 20 2012 - 18:37:09)
DRAM: 128 MiB
WARNING: Caches not enabled
Flash: pflash_write: Unimplemented flash cmd sequence (offset 0000000000000000, wcycle 0x0 cmd 0x0 value 0xf0)
pflash_write: Unimplemented flash cmd sequence (offset 0000000000000000, wcycle 0x0 cmd 0x0 value 0xf0)
128 MiB
MMC: MMC: 0
*** Warning - bad CRC, using default environment
In: serial
Out: serial
Err: serial
Net: smc911x-0
Hit any key to stop autoboot: 0
VExpress# flinfo
Bank # 1: CFI conformant flash (32 x 32) Size: 64 MB in 256 Sectors
Intel Extended command set, Manufacturer ID: 0x18, Device ID: 0x00
Erase timeout: 16384 ms, write timeout: 3 ms
Buffer write timeout: 3 ms, buffer size: 2048 bytes
Sector Start Addresses:
40000000 RO 40040000 40080000 400C0000 40100000
40140000 40180000 401C0000 40200000 40240000
40280000 402C0000 40300000 40340000 40380000
403C0000 40400000 40440000 40480000 404C0000
40500000 40540000 40580000 405C0000 40600000
40640000 40680000 406C0000 40700000 40740000
40780000 407C0000 40800000 40840000 40880000
408C0000 40900000 40940000 40980000 409C0000
40A00000 40A40000 40A80000 40AC0000 40B00000
40B40000 40B80000 40BC0000 40C00000 40C40000
40C80000 40CC0000 40D00000 40D40000 40D80000
40DC0000 40E00000 40E40000 40E80000 40EC0000
40F00000 40F40000 40F80000 40FC0000 41000000
41040000 41080000 410C0000 41100000 41140000
41180000 411C0000 41200000 41240000 41280000
412C0000 41300000 41340000 41380000 413C0000
41400000 41440000 41480000 414C0000 41500000
41540000 41580000 415C0000 41600000 41640000
41680000 416C0000 41700000 41740000 41780000
417C0000 41800000 41840000 41880000 418C0000
41900000 41940000 41980000 419C0000 41A00000
41A40000 41A80000 41AC0000 41B00000 41B40000
41B80000 41BC0000 41C00000 41C40000 41C80000
41CC0000 41D00000 41D40000 41D80000 41DC0000
41E00000 41E40000 41E80000 41EC0000 41F00000
41F40000 41F80000 41FC0000 42000000 42040000
42080000 420C0000 42100000 42140000 42180000
421C0000 42200000 42240000 42280000 422C0000
42300000 42340000 42380000 423C0000 42400000
42440000 42480000 424C0000 42500000 42540000
42580000 425C0000 42600000 42640000 42680000
426C0000 42700000 42740000 42780000 427C0000
42800000 42840000 42880000 428C0000 42900000
42940000 42980000 429C0000 42A00000 42A40000
42A80000 42AC0000 42B00000 42B40000 42B80000
42BC0000 42C00000 42C40000 42C80000 42CC0000
42D00000 42D40000 42D80000 42DC0000 42E00000
42E40000 42E80000 42EC0000 42F00000 42F40000
42F80000 42FC0000 43000000 43040000 43080000
430C0000 43100000 43140000 43180000 431C0000
43200000 43240000 43280000 432C0000 43300000
43340000 43380000 433C0000 43400000 43440000
43480000 434C0000 43500000 43540000 43580000
435C0000 43600000 43640000 43680000 436C0000
43700000 43740000 43780000 437C0000 43800000
43840000 43880000 438C0000 43900000 43940000
43980000 439C0000 43A00000 43A40000 43A80000
43AC0000 43B00000 43B40000 43B80000 43BC0000
43C00000 43C40000 43C80000 43CC0000 43D00000
43D40000 43D80000 43DC0000 43E00000 43E40000
43E80000 43EC0000 43F00000 43F40000 43F80000
43FC0000
Bank # 2: CFI conformant flash (32 x 32) Size: 64 MB in 256 Sectors
Intel Extended command set, Manufacturer ID: 0x18, Device ID: 0x01
Erase timeout: 16384 ms, write timeout: 3 ms
Buffer write timeout: 3 ms, buffer size: 2048 bytes
Sector Start Addresses:
44000000 44040000 44080000 440C0000 44100000
44140000 44180000 441C0000 44200000 44240000
44280000 442C0000 44300000 44340000 44380000
443C0000 44400000 44440000 44480000 444C0000
44500000 44540000 44580000 445C0000 44600000
44640000 44680000 446C0000 44700000 44740000
44780000 447C0000 44800000 44840000 44880000
448C0000 44900000 44940000 44980000 449C0000
44A00000 44A40000 44A80000 44AC0000 44B00000
44B40000 44B80000 44BC0000 44C00000 44C40000
44C80000 44CC0000 44D00000 44D40000 44D80000
44DC0000 44E00000 44E40000 44E80000 44EC0000
44F00000 44F40000 44F80000 44FC0000 45000000
45040000 45080000 450C0000 45100000 45140000
45180000 451C0000 45200000 45240000 45280000
452C0000 45300000 45340000 45380000 453C0000
45400000 45440000 45480000 454C0000 45500000
45540000 45580000 455C0000 45600000 45640000
45680000 456C0000 45700000 45740000 45780000
457C0000 45800000 45840000 45880000 458C0000
45900000 45940000 45980000 459C0000 45A00000
45A40000 45A80000 45AC0000 45B00000 45B40000
45B80000 45BC0000 45C00000 45C40000 45C80000
45CC0000 45D00000 45D40000 45D80000 45DC0000
45E00000 45E40000 45E80000 45EC0000 45F00000
45F40000 45F80000 45FC0000 46000000 46040000
46080000 460C0000 46100000 46140000 46180000
461C0000 46200000 46240000 46280000 462C0000
46300000 46340000 46380000 463C0000 46400000
46440000 46480000 464C0000 46500000 46540000
46580000 465C0000 46600000 46640000 46680000
466C0000 46700000 46740000 46780000 467C0000
46800000 46840000 46880000 468C0000 46900000
46940000 46980000 469C0000 46A00000 46A40000
46A80000 46AC0000 46B00000 46B40000 46B80000
46BC0000 46C00000 46C40000 46C80000 46CC0000
46D00000 46D40000 46D80000 46DC0000 46E00000
46E40000 46E80000 46EC0000 46F00000 46F40000
46F80000 46FC0000 47000000 47040000 47080000
470C0000 47100000 47140000 47180000 471C0000
47200000 47240000 47280000 472C0000 47300000
47340000 47380000 473C0000 47400000 47440000
47480000 474C0000 47500000 47540000 47580000
475C0000 47600000 47640000 47680000 476C0000
47700000 47740000 47780000 477C0000 47800000
47840000 47880000 478C0000 47900000 47940000
47980000 479C0000 47A00000 47A40000 47A80000
47AC0000 47B00000 47B40000 47B80000 47BC0000
47C00000 47C40000 47C80000 47CC0000 47D00000
47D40000 47D80000 47DC0000 47E00000 47E40000
47E80000 47EC0000 47F00000 47F40000 47F80000 RO
47FC0000
VExpress#
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] [PATCH 2/2] vexpress: Add NOR1 Flash support
2012-07-20 13:30 ` jagan
@ 2012-07-20 14:12 ` jagan
2012-07-20 14:19 ` Igor Mitsyanko
1 sibling, 0 replies; 14+ messages in thread
From: jagan @ 2012-07-20 14:12 UTC (permalink / raw)
To: Peter Crosthwaite; +Cc: peter.maydell, Igor Mitsyanko, qemu-devel
[-- Attachment #1: Type: text/plain, Size: 4512 bytes --]
And one more point is when I tried drive_get(IF_PFLASH, 0, 0) and then
drive_get_next(IF_PFLASH) individually on second flash.
I didn't observe any issue on bdrv_attach_dev_nofail, as it seems to be
failed on second case if we re-access the flash.
Code snippet:
------------------
+ bdrv_attach_dev_nofail(pfl->bs, pfl);
/* TODO qdevified devices don't use this, remove when devices are qdevified
*/
void bdrv_attach_dev_nofail(BlockDriverState *bs, void *dev)
{
printf ("%s\n", __func__);
if (bdrv_attach_dev(bs, dev) < 0) {
printf ("%s: ERROR\n", __func__);
abort();
}
}
In both the cases I couldn't get the ERROR print.
Correct me If I did any wrong debugging.
Regards,
Jagan.
On Fri, Jul 20, 2012 at 7:00 PM, jagan <402jagan@gmail.com> wrote:
> I think I understand the situation, like when I called
> pflash_cfi01_register, it verifies BlockDriverState is < 0.
> Was my understanding correct?
>
> If ie so. I think I need to change drive_get(IF_PFLASH, 0, 0) to
> drive_get_next(IF_PFLASH) on second flash access by
> keeping drive_get(IF_PFLASH, 0, 0
> on first flash, correct?
>
> But I am wondering why it's still detecting 2 Flashes with 128MB when I
> tested through u-boot.
> Even I was written Linux and Ramdisk on to flashes again read back and
> able to boot it, Fine.
>
> Please find the attachment for u-boot log.
>
> I haven't tested -pflash argument through ./qemu-system-arm
> because it again asking about kernel argument, do I need to test this also?
>
> Regards,
> Jagan.
>
>
> On Fri, Jul 20, 2012 at 6:58 AM, Peter Crosthwaite <
> peter.crosthwaite@petalogix.com> wrote:
>
>> On Thu, Jul 19, 2012 at 7:16 PM, jagan <402jagan@gmail.com> wrote:
>> > Yes, I have used same drive_get(IF_PFLASH, 0, 0) with two flashes.
>> > As these flashes are two different banks with individual bases address,
>> I
>> > used the same.
>> >
>> > Was there any block allocation problem with this..will you please
>> elaborate.
>> > I couldn't understand about drive_get_next(),
>>
>> s/drive_get(IF_PFLASH, 0, 0) /drive_get_next(IF_PFLASH)/
>>
>> This will mean you have two -fplash arguments on qemu cmd line your two
>> flashes.
>>
>> qemu-system-arm ... -pflash nor0.bin -pflash nor1.bin
>>
>> Currently you back (or attempt to back) both flashes to the same bdrv
>> which means they share storage. The two flashes will corrupt each
>> others data.
>>
>> Regards,
>> Peter
>>
>> I think function can be useful
>> > single drive devices SD/MTD.
>> >
>> > Please suggest your comments.
>> >
>> > Regards,
>> > Jagan.
>> >
>> > On Thu, Jul 19, 2012 at 5:27 AM, Peter Crosthwaite
>> > <peter.crosthwaite@petalogix.com> wrote:
>> >>
>> >> On Thu, Jul 19, 2012 at 5:03 AM, <402jagan@gmail.com> wrote:
>> >> > From: Jagan <402jagan@gmail.com>
>> >> >
>> >> > This patch adds support for NOR1 flash (Bank #2) on
>> >> > vexpress-a9 platform. It is 64MB CFI01 compliant flash.
>> >> >
>> >> > Tested on stable u-boot version through Linux.
>> >> >
>> >> > Signed-off-by: Jagan <402jagan@gmail.com>
>> >> > ---
>> >> > hw/vexpress.c | 10 +++++++++-
>> >> > 1 files changed, 9 insertions(+), 1 deletions(-)
>> >> >
>> >> > diff --git a/hw/vexpress.c b/hw/vexpress.c
>> >> > index 2e889a8..b4262ed 100644
>> >> > --- a/hw/vexpress.c
>> >> > +++ b/hw/vexpress.c
>> >> > @@ -422,7 +422,15 @@ static void vexpress_common_init(const
>> VEDBoardInfo
>> >> > *daughterboard,
>> >> > }
>> >> >
>> >> > /* VE_NORFLASH0ALIAS: not modelled */
>> >> > - /* VE_NORFLASH1: not modelled */
>> >> > + /* VE_NORFLASH1: */
>> >> > + dinfo = drive_get(IF_PFLASH, 0, 0);
>> >>
>> >> Both flashes use drive_get(IF_PFLASH, 0, 0). Doesnt this means they
>> >> are both going to back to the same file (one -pflash argument) and
>> >> share storage? Should this use drive_get_next() and you specify two
>> >> -pflash args, one for each device?
>> >>
>> >> Regards
>> >> Peter
>> >>
>> >> > + if (!pflash_cfi01_register(map[VE_NORFLASH1], NULL,
>> >> > "vexpress.flash1",
>> >> > + VEXPRESS_FLASH_SIZE, dinfo ? dinfo->bdrv : NULL,
>> >> > + VEXPRESS_FLASH_SECT_SIZE,
>> >> > + VEXPRESS_FLASH_SIZE / VEXPRESS_FLASH_SECT_SIZE,
>> >> > + 4, 0x0089, 0x0018, 0x0000, 0x1, 0)) {
>> >> > + fprintf(stderr, "qemu: Error registering flash1 memory.\n");
>> >> > + }
>> >> >
>> >> > sram_size = 0x2000000;
>> >> > memory_region_init_ram(sram, "vexpress.sram", sram_size);
>> >> > --
>> >> > 1.7.0.4
>> >> >
>> >> >
>> >
>> >
>>
>
>
[-- Attachment #2: Type: text/html, Size: 6524 bytes --]
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] [PATCH 2/2] vexpress: Add NOR1 Flash support
2012-07-20 13:30 ` jagan
2012-07-20 14:12 ` jagan
@ 2012-07-20 14:19 ` Igor Mitsyanko
2012-07-20 14:56 ` jagan
1 sibling, 1 reply; 14+ messages in thread
From: Igor Mitsyanko @ 2012-07-20 14:19 UTC (permalink / raw)
To: jagan; +Cc: Peter Crosthwaite, peter.maydell, qemu-devel
[-- Attachment #1: Type: text/plain, Size: 4863 bytes --]
On 07/20/2012 05:30 PM, jagan wrote:
> I think I understand the situation, like when I called
> pflash_cfi01_register, it verifies BlockDriverState is < 0.
> Was my understanding correct?
>
> If ie so. I think I need to change drive_get(IF_PFLASH, 0, 0) to
> drive_get_next(IF_PFLASH) on second flash access by
> keeping drive_get(IF_PFLASH, 0, 0
> on first flash, correct?
>
> But I am wondering why it's still detecting 2 Flashes with 128MB when
> I tested through u-boot.
> Even I was written Linux and Ramdisk on to flashes again read back and
> able to boot it, Fine.
>
> Please find the attachment for u-boot log.
>
> I haven't tested -pflash argument through ./qemu-system-arm
> because it again asking about kernel argument, do I need to test this
> also?
Now I understand why QEMU didn't abort during your test, If you do not
specify a -pflash argument then there is no backing drive for any of
flash banks and they just behave as read-only RAM regions, and in that
case it doesn't matter whether you used drive_get(IF_PFLASH, 0, 0) or
drive_get_next(IF_PFLASH) or nothing at all. U-boot should detect both
banks without any problem, but he wouldn't be able to write anything to
them.
As Peter already said, you need to use drive_get_next(IF_PFLASH) for
both flash banks initialization, or use drive_get(IF_PFLASH, 0, 0) for
first and drive_get(IF_PFLASH, 0, 1) for second bank.
>
> Regards,
> Jagan.
>
> On Fri, Jul 20, 2012 at 6:58 AM, Peter Crosthwaite
> <peter.crosthwaite@petalogix.com
> <mailto:peter.crosthwaite@petalogix.com>> wrote:
>
> On Thu, Jul 19, 2012 at 7:16 PM, jagan <402jagan@gmail.com
> <mailto:402jagan@gmail.com>> wrote:
> > Yes, I have used same drive_get(IF_PFLASH, 0, 0) with two flashes.
> > As these flashes are two different banks with individual bases
> address, I
> > used the same.
> >
> > Was there any block allocation problem with this..will you
> please elaborate.
> > I couldn't understand about drive_get_next(),
>
> s/drive_get(IF_PFLASH, 0, 0) /drive_get_next(IF_PFLASH)/
>
> This will mean you have two -fplash arguments on qemu cmd line
> your two flashes.
>
> qemu-system-arm ... -pflash nor0.bin -pflash nor1.bin
>
> Currently you back (or attempt to back) both flashes to the same bdrv
> which means they share storage. The two flashes will corrupt each
> others data.
>
> Regards,
> Peter
>
> I think function can be useful
> > single drive devices SD/MTD.
> >
> > Please suggest your comments.
> >
> > Regards,
> > Jagan.
> >
> > On Thu, Jul 19, 2012 at 5:27 AM, Peter Crosthwaite
> > <peter.crosthwaite@petalogix.com
> <mailto:peter.crosthwaite@petalogix.com>> wrote:
> >>
> >> On Thu, Jul 19, 2012 at 5:03 AM, <402jagan@gmail.com
> <mailto:402jagan@gmail.com>> wrote:
> >> > From: Jagan <402jagan@gmail.com <mailto:402jagan@gmail.com>>
> >> >
> >> > This patch adds support for NOR1 flash (Bank #2) on
> >> > vexpress-a9 platform. It is 64MB CFI01 compliant flash.
> >> >
> >> > Tested on stable u-boot version through Linux.
> >> >
> >> > Signed-off-by: Jagan <402jagan@gmail.com
> <mailto:402jagan@gmail.com>>
> >> > ---
> >> > hw/vexpress.c | 10 +++++++++-
> >> > 1 files changed, 9 insertions(+), 1 deletions(-)
> >> >
> >> > diff --git a/hw/vexpress.c b/hw/vexpress.c
> >> > index 2e889a8..b4262ed 100644
> >> > --- a/hw/vexpress.c
> >> > +++ b/hw/vexpress.c
> >> > @@ -422,7 +422,15 @@ static void vexpress_common_init(const
> VEDBoardInfo
> >> > *daughterboard,
> >> > }
> >> >
> >> > /* VE_NORFLASH0ALIAS: not modelled */
> >> > - /* VE_NORFLASH1: not modelled */
> >> > + /* VE_NORFLASH1: */
> >> > + dinfo = drive_get(IF_PFLASH, 0, 0);
> >>
> >> Both flashes use drive_get(IF_PFLASH, 0, 0). Doesnt this means they
> >> are both going to back to the same file (one -pflash argument) and
> >> share storage? Should this use drive_get_next() and you specify two
> >> -pflash args, one for each device?
> >>
> >> Regards
> >> Peter
> >>
> >> > + if (!pflash_cfi01_register(map[VE_NORFLASH1], NULL,
> >> > "vexpress.flash1",
> >> > + VEXPRESS_FLASH_SIZE, dinfo ? dinfo->bdrv : NULL,
> >> > + VEXPRESS_FLASH_SECT_SIZE,
> >> > + VEXPRESS_FLASH_SIZE / VEXPRESS_FLASH_SECT_SIZE,
> >> > + 4, 0x0089, 0x0018, 0x0000, 0x1, 0)) {
> >> > + fprintf(stderr, "qemu: Error registering flash1
> memory.\n");
> >> > + }
> >> >
> >> > sram_size = 0x2000000;
> >> > memory_region_init_ram(sram, "vexpress.sram", sram_size);
> >> > --
> >> > 1.7.0.4
> >> >
> >> >
> >
> >
>
>
[-- Attachment #2: Type: text/html, Size: 8713 bytes --]
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] [PATCH 1/2] vexpress: Add NOR0 Flash support
2012-07-18 19:03 ` [Qemu-devel] [PATCH 1/2] vexpress: Add NOR0 Flash support 402jagan
@ 2012-07-20 14:41 ` Peter Maydell
2012-07-20 15:03 ` jagan
0 siblings, 1 reply; 14+ messages in thread
From: Peter Maydell @ 2012-07-20 14:41 UTC (permalink / raw)
To: 402jagan; +Cc: qemu-devel
On 18 July 2012 20:03, <402jagan@gmail.com> wrote:
> From: Jagan <402jagan@gmail.com>
>
> This patch adds support for NOR0 flash (Bank #1) on
> vexpress-a9 platform. It is 64MB CFI01 compliant flash.
>
> Tested on stable u-boot version through Linux.
You might want to look at a previous attempt at this by
Liming Wang: http://patchwork.ozlabs.org/patch/147905/
and at the review comments I made on that patch.
> Signed-off-by: Jagan <402jagan@gmail.com>
The name in your Signed-off-by: line has to be your full
real name, not a pseudonym or abbreviation. (I appreciate
that some people's full real name really is only a single
name, but since that's the less common case I thought I
should mention this requirement.)
-- PMM
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] [PATCH 2/2] vexpress: Add NOR1 Flash support
2012-07-20 14:19 ` Igor Mitsyanko
@ 2012-07-20 14:56 ` jagan
2012-07-23 0:51 ` Peter Crosthwaite
0 siblings, 1 reply; 14+ messages in thread
From: jagan @ 2012-07-20 14:56 UTC (permalink / raw)
To: Igor Mitsyanko; +Cc: Peter Crosthwaite, peter.maydell, qemu-devel
[-- Attachment #1: Type: text/plain, Size: 5587 bytes --]
Thanks for your info, In fact I was thinking about to use
drive_get(IF_PFLASH, 0, 0) for first and drive_get(IF_PFLASH, 0, 1) also.
But the point I was still uncover is even I was using drive_get(IF_PFLASH,
0, 0) on both the flashes, If I tested through u-boot
I was able to detect two flashes and able to write, read and erase....
here are my test procedure:
---------------------------------------
$ qemu-system-arm -M vexpress-a9 -net nic -net tap,ifname=tap0 -kernel
u-boot -nographic
/* writing kernel on to flash0, with 0x40040000 offset */
VExpress# tftp 0x60008000 uImage-vexp
VExpress# erase all
VExpress# cp.b 0x60008000 0x40040000 ${filesize}
/* writing ramdisk on to flash1, with 0x45440000 offset */
VExpress# tftp 0x60100000 ramdisk16M.img.gz
VExpress# cp.b 0x60100000 0x45440000 ${filesize}
/* Reading from flash0, flash1 and boot */
VExpress# cp 0x40040000 0x61000000 ${filesize}
VExpress# cp 0x45440000 0x60800000 ${filesize}
VExpress# bootm 0x61000000
Please let me know for any issue on my testing.let me know you want the
boot logs.
Regards,
Jagan.
On Fri, Jul 20, 2012 at 7:49 PM, Igor Mitsyanko <i.mitsyanko@samsung.com>wrote:
> On 07/20/2012 05:30 PM, jagan wrote:
>
> I think I understand the situation, like when I called
> pflash_cfi01_register, it verifies BlockDriverState is < 0.
> Was my understanding correct?
>
> If ie so. I think I need to change drive_get(IF_PFLASH, 0, 0) to
> drive_get_next(IF_PFLASH) on second flash access by
> keeping drive_get(IF_PFLASH, 0, 0
> on first flash, correct?
>
> But I am wondering why it's still detecting 2 Flashes with 128MB when I
> tested through u-boot.
> Even I was written Linux and Ramdisk on to flashes again read back and
> able to boot it, Fine.
>
> Please find the attachment for u-boot log.
>
> I haven't tested -pflash argument through ./qemu-system-arm
> because it again asking about kernel argument, do I need to test this also?
>
>
> Now I understand why QEMU didn't abort during your test, If you do not
> specify a -pflash argument then there is no backing drive for any of flash
> banks and they just behave as read-only RAM regions, and in that case it
> doesn't matter whether you used drive_get(IF_PFLASH, 0, 0) or
> drive_get_next(IF_PFLASH) or nothing at all. U-boot should detect both
> banks without any problem, but he wouldn't be able to write anything to
> them.
> As Peter already said, you need to use drive_get_next(IF_PFLASH) for both
> flash banks initialization, or use drive_get(IF_PFLASH, 0, 0) for first and
> drive_get(IF_PFLASH, 0, 1) for second bank.
>
>
>
> Regards,
> Jagan.
>
> On Fri, Jul 20, 2012 at 6:58 AM, Peter Crosthwaite <
> peter.crosthwaite@petalogix.com> wrote:
>
>> On Thu, Jul 19, 2012 at 7:16 PM, jagan <402jagan@gmail.com> wrote:
>> > Yes, I have used same drive_get(IF_PFLASH, 0, 0) with two flashes.
>> > As these flashes are two different banks with individual bases address,
>> I
>> > used the same.
>> >
>> > Was there any block allocation problem with this..will you please
>> elaborate.
>> > I couldn't understand about drive_get_next(),
>>
>> s/drive_get(IF_PFLASH, 0, 0) /drive_get_next(IF_PFLASH)/
>>
>> This will mean you have two -fplash arguments on qemu cmd line your two
>> flashes.
>>
>> qemu-system-arm ... -pflash nor0.bin -pflash nor1.bin
>>
>> Currently you back (or attempt to back) both flashes to the same bdrv
>> which means they share storage. The two flashes will corrupt each
>> others data.
>>
>> Regards,
>> Peter
>>
>> I think function can be useful
>> > single drive devices SD/MTD.
>> >
>> > Please suggest your comments.
>> >
>> > Regards,
>> > Jagan.
>> >
>> > On Thu, Jul 19, 2012 at 5:27 AM, Peter Crosthwaite
>> > <peter.crosthwaite@petalogix.com> wrote:
>> >>
>> >> On Thu, Jul 19, 2012 at 5:03 AM, <402jagan@gmail.com> wrote:
>> >> > From: Jagan <402jagan@gmail.com>
>> >> >
>> >> > This patch adds support for NOR1 flash (Bank #2) on
>> >> > vexpress-a9 platform. It is 64MB CFI01 compliant flash.
>> >> >
>> >> > Tested on stable u-boot version through Linux.
>> >> >
>> >> > Signed-off-by: Jagan <402jagan@gmail.com>
>> >> > ---
>> >> > hw/vexpress.c | 10 +++++++++-
>> >> > 1 files changed, 9 insertions(+), 1 deletions(-)
>> >> >
>> >> > diff --git a/hw/vexpress.c b/hw/vexpress.c
>> >> > index 2e889a8..b4262ed 100644
>> >> > --- a/hw/vexpress.c
>> >> > +++ b/hw/vexpress.c
>> >> > @@ -422,7 +422,15 @@ static void vexpress_common_init(const
>> VEDBoardInfo
>> >> > *daughterboard,
>> >> > }
>> >> >
>> >> > /* VE_NORFLASH0ALIAS: not modelled */
>> >> > - /* VE_NORFLASH1: not modelled */
>> >> > + /* VE_NORFLASH1: */
>> >> > + dinfo = drive_get(IF_PFLASH, 0, 0);
>> >>
>> >> Both flashes use drive_get(IF_PFLASH, 0, 0). Doesnt this means they
>> >> are both going to back to the same file (one -pflash argument) and
>> >> share storage? Should this use drive_get_next() and you specify two
>> >> -pflash args, one for each device?
>> >>
>> >> Regards
>> >> Peter
>> >>
>> >> > + if (!pflash_cfi01_register(map[VE_NORFLASH1], NULL,
>> >> > "vexpress.flash1",
>> >> > + VEXPRESS_FLASH_SIZE, dinfo ? dinfo->bdrv : NULL,
>> >> > + VEXPRESS_FLASH_SECT_SIZE,
>> >> > + VEXPRESS_FLASH_SIZE / VEXPRESS_FLASH_SECT_SIZE,
>> >> > + 4, 0x0089, 0x0018, 0x0000, 0x1, 0)) {
>> >> > + fprintf(stderr, "qemu: Error registering flash1 memory.\n");
>> >> > + }
>> >> >
>> >> > sram_size = 0x2000000;
>> >> > memory_region_init_ram(sram, "vexpress.sram", sram_size);
>> >> > --
>> >> > 1.7.0.4
>> >> >
>> >> >
>> >
>> >
>>
>
>
>
[-- Attachment #2: Type: text/html, Size: 10592 bytes --]
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] [PATCH 1/2] vexpress: Add NOR0 Flash support
2012-07-20 14:41 ` Peter Maydell
@ 2012-07-20 15:03 ` jagan
0 siblings, 0 replies; 14+ messages in thread
From: jagan @ 2012-07-20 15:03 UTC (permalink / raw)
To: Peter Maydell; +Cc: qemu-devel
[-- Attachment #1: Type: text/plain, Size: 1066 bytes --]
Was flash support on express is already there, I haven't seen this
on mainline (master)
that is the reason I worked this.
Should I send the patches again with changing full name at Signed-off-by
Regards,
Jagan.
On Fri, Jul 20, 2012 at 8:11 PM, Peter Maydell <peter.maydell@linaro.org>wrote:
> On 18 July 2012 20:03, <402jagan@gmail.com> wrote:
> > From: Jagan <402jagan@gmail.com>
> >
> > This patch adds support for NOR0 flash (Bank #1) on
> > vexpress-a9 platform. It is 64MB CFI01 compliant flash.
> >
> > Tested on stable u-boot version through Linux.
>
> You might want to look at a previous attempt at this by
> Liming Wang: http://patchwork.ozlabs.org/patch/147905/
> and at the review comments I made on that patch.
>
> > Signed-off-by: Jagan <402jagan@gmail.com>
>
> The name in your Signed-off-by: line has to be your full
> real name, not a pseudonym or abbreviation. (I appreciate
> that some people's full real name really is only a single
> name, but since that's the less common case I thought I
> should mention this requirement.)
>
> -- PMM
>
[-- Attachment #2: Type: text/html, Size: 1720 bytes --]
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] [PATCH 2/2] vexpress: Add NOR1 Flash support
2012-07-20 14:56 ` jagan
@ 2012-07-23 0:51 ` Peter Crosthwaite
0 siblings, 0 replies; 14+ messages in thread
From: Peter Crosthwaite @ 2012-07-23 0:51 UTC (permalink / raw)
To: jagan; +Cc: peter.maydell, Igor Mitsyanko, qemu-devel
On Sat, Jul 21, 2012 at 12:56 AM, jagan <402jagan@gmail.com> wrote:
> Thanks for your info, In fact I was thinking about to use
> drive_get(IF_PFLASH, 0, 0) for first and drive_get(IF_PFLASH, 0, 1) also.
>
> But the point I was still uncover is even I was using drive_get(IF_PFLASH,
> 0, 0) on both the flashes, If I tested through u-boot
> I was able to detect two flashes and able to write, read and erase....
>
Yes that right. It will work, but not across boots.
> here are my test procedure:
> ---------------------------------------
> $ qemu-system-arm -M vexpress-a9 -net nic -net tap,ifname=tap0 -kernel
Here, you have no -pflash argument, so there in no bdrv storage file
for your pflash. It will work but any data you write will be lost when
you close QEMU.
> u-boot -nographic
>
> /* writing kernel on to flash0, with 0x40040000 offset */
> VExpress# tftp 0x60008000 uImage-vexp
> VExpress# erase all
> VExpress# cp.b 0x60008000 0x40040000 ${filesize}
>
> /* writing ramdisk on to flash1, with 0x45440000 offset */
> VExpress# tftp 0x60100000 ramdisk16M.img.gz
> VExpress# cp.b 0x60100000 0x45440000 ${filesize}
>
> /* Reading from flash0, flash1 and boot */
> VExpress# cp 0x40040000 0x61000000 ${filesize}
> VExpress# cp 0x45440000 0x60800000 ${filesize}
> VExpress# bootm 0x61000000
>
> Please let me know for any issue on my testing.let me know you want the boot
> logs.
This is fine, just make the suggested drive_get_next() change, as that
will allow you to keep your flash data from one qemu run to the next.
Heres a test sequence to illustrate what we are getting at:
1. make some binary files, nor1.bin, nor2.bin, with random/zero/one data
2. qemu-system-arm -M vexpress-a9 -net nic -net tap,ifname=tap0
-kernel -pflash ./nor0.bin -pflash ./nor1.bin ...
3. Get u-boot to write two different things to the two different flashes.
4. Close QEMU.
5. run QEMU again, same cmd line as step 2
6. get u-boot (or whatever) to read back contents both flashes.
7. verify data is the same as written in step 3.
Regards,
Peter
>
> Regards,
> Jagan.
>
>
> On Fri, Jul 20, 2012 at 7:49 PM, Igor Mitsyanko <i.mitsyanko@samsung.com>
> wrote:
>>
>> On 07/20/2012 05:30 PM, jagan wrote:
>>
>> I think I understand the situation, like when I called
>> pflash_cfi01_register, it verifies BlockDriverState is < 0.
>> Was my understanding correct?
>>
>> If ie so. I think I need to change drive_get(IF_PFLASH, 0, 0) to
>> drive_get_next(IF_PFLASH) on second flash access by keeping
>> drive_get(IF_PFLASH, 0, 0
>> on first flash, correct?
>>
>> But I am wondering why it's still detecting 2 Flashes with 128MB when I
>> tested through u-boot.
>> Even I was written Linux and Ramdisk on to flashes again read back and
>> able to boot it, Fine.
>>
>> Please find the attachment for u-boot log.
>>
>> I haven't tested -pflash argument through ./qemu-system-arm because it
>> again asking about kernel argument, do I need to test this also?
>>
>>
>> Now I understand why QEMU didn't abort during your test, If you do not
>> specify a -pflash argument then there is no backing drive for any of flash
>> banks and they just behave as read-only RAM regions, and in that case it
>> doesn't matter whether you used drive_get(IF_PFLASH, 0, 0) or
>> drive_get_next(IF_PFLASH) or nothing at all. U-boot should detect both banks
>> without any problem, but he wouldn't be able to write anything to them.
>> As Peter already said, you need to use drive_get_next(IF_PFLASH) for both
>> flash banks initialization, or use drive_get(IF_PFLASH, 0, 0) for first and
>> drive_get(IF_PFLASH, 0, 1) for second bank.
>>
>>
>>
>> Regards,
>> Jagan.
>>
>> On Fri, Jul 20, 2012 at 6:58 AM, Peter Crosthwaite
>> <peter.crosthwaite@petalogix.com> wrote:
>>>
>>> On Thu, Jul 19, 2012 at 7:16 PM, jagan <402jagan@gmail.com> wrote:
>>> > Yes, I have used same drive_get(IF_PFLASH, 0, 0) with two flashes.
>>> > As these flashes are two different banks with individual bases address,
>>> > I
>>> > used the same.
>>> >
>>> > Was there any block allocation problem with this..will you please
>>> > elaborate.
>>> > I couldn't understand about drive_get_next(),
>>>
>>> s/drive_get(IF_PFLASH, 0, 0) /drive_get_next(IF_PFLASH)/
>>>
>>> This will mean you have two -fplash arguments on qemu cmd line your two
>>> flashes.
>>>
>>> qemu-system-arm ... -pflash nor0.bin -pflash nor1.bin
>>>
>>> Currently you back (or attempt to back) both flashes to the same bdrv
>>> which means they share storage. The two flashes will corrupt each
>>> others data.
>>>
>>> Regards,
>>> Peter
>>>
>>> I think function can be useful
>>> > single drive devices SD/MTD.
>>> >
>>> > Please suggest your comments.
>>> >
>>> > Regards,
>>> > Jagan.
>>> >
>>> > On Thu, Jul 19, 2012 at 5:27 AM, Peter Crosthwaite
>>> > <peter.crosthwaite@petalogix.com> wrote:
>>> >>
>>> >> On Thu, Jul 19, 2012 at 5:03 AM, <402jagan@gmail.com> wrote:
>>> >> > From: Jagan <402jagan@gmail.com>
>>> >> >
>>> >> > This patch adds support for NOR1 flash (Bank #2) on
>>> >> > vexpress-a9 platform. It is 64MB CFI01 compliant flash.
>>> >> >
>>> >> > Tested on stable u-boot version through Linux.
>>> >> >
>>> >> > Signed-off-by: Jagan <402jagan@gmail.com>
>>> >> > ---
>>> >> > hw/vexpress.c | 10 +++++++++-
>>> >> > 1 files changed, 9 insertions(+), 1 deletions(-)
>>> >> >
>>> >> > diff --git a/hw/vexpress.c b/hw/vexpress.c
>>> >> > index 2e889a8..b4262ed 100644
>>> >> > --- a/hw/vexpress.c
>>> >> > +++ b/hw/vexpress.c
>>> >> > @@ -422,7 +422,15 @@ static void vexpress_common_init(const
>>> >> > VEDBoardInfo
>>> >> > *daughterboard,
>>> >> > }
>>> >> >
>>> >> > /* VE_NORFLASH0ALIAS: not modelled */
>>> >> > - /* VE_NORFLASH1: not modelled */
>>> >> > + /* VE_NORFLASH1: */
>>> >> > + dinfo = drive_get(IF_PFLASH, 0, 0);
>>> >>
>>> >> Both flashes use drive_get(IF_PFLASH, 0, 0). Doesnt this means they
>>> >> are both going to back to the same file (one -pflash argument) and
>>> >> share storage? Should this use drive_get_next() and you specify two
>>> >> -pflash args, one for each device?
>>> >>
>>> >> Regards
>>> >> Peter
>>> >>
>>> >> > + if (!pflash_cfi01_register(map[VE_NORFLASH1], NULL,
>>> >> > "vexpress.flash1",
>>> >> > + VEXPRESS_FLASH_SIZE, dinfo ? dinfo->bdrv : NULL,
>>> >> > + VEXPRESS_FLASH_SECT_SIZE,
>>> >> > + VEXPRESS_FLASH_SIZE / VEXPRESS_FLASH_SECT_SIZE,
>>> >> > + 4, 0x0089, 0x0018, 0x0000, 0x1, 0)) {
>>> >> > + fprintf(stderr, "qemu: Error registering flash1
>>> >> > memory.\n");
>>> >> > + }
>>> >> >
>>> >> > sram_size = 0x2000000;
>>> >> > memory_region_init_ram(sram, "vexpress.sram", sram_size);
>>> >> > --
>>> >> > 1.7.0.4
>>> >> >
>>> >> >
>>> >
>>> >
>>
>>
>>
>
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2012-07-23 0:51 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-07-18 19:03 [Qemu-devel] [PATCH 0/2] vexpress-a9: NOR flash support 402jagan
2012-07-18 19:03 ` [Qemu-devel] [PATCH 1/2] vexpress: Add NOR0 Flash support 402jagan
2012-07-20 14:41 ` Peter Maydell
2012-07-20 15:03 ` jagan
2012-07-18 19:03 ` [Qemu-devel] [PATCH 2/2] vexpress: Add NOR1 " 402jagan
2012-07-18 23:57 ` Peter Crosthwaite
2012-07-19 9:16 ` jagan
2012-07-19 18:49 ` Igor Mitsyanko
2012-07-20 1:28 ` Peter Crosthwaite
2012-07-20 13:30 ` jagan
2012-07-20 14:12 ` jagan
2012-07-20 14:19 ` Igor Mitsyanko
2012-07-20 14:56 ` jagan
2012-07-23 0:51 ` Peter Crosthwaite
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).