Message ID | 20190627202719.17739-16-philmd@redhat.com |
---|---|
State | New |
Headers | show |
Series | block/pflash_cfi02: Implement missing AMD pflash functionality | expand |
On Thu, Jun 27, 2019 at 1:53 PM Philippe Mathieu-Daudé <philmd@redhat.com> wrote: > > Signed-off-by: Stephen Checkoway <stephen.checkoway@oberlin.edu> > Message-Id: <20190426162624.55977-6-stephen.checkoway@oberlin.edu> > [PMD: Extracted from bigger patch] > Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> Acked-by: Alistair Francis <alistair.francis@wdc.com> Alistair > --- > hw/block/pflash_cfi02.c | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) > > diff --git a/hw/block/pflash_cfi02.c b/hw/block/pflash_cfi02.c > index 1a794fa83c..f1bac480f5 100644 > --- a/hw/block/pflash_cfi02.c > +++ b/hw/block/pflash_cfi02.c > @@ -550,6 +550,7 @@ static void pflash_cfi02_realize(DeviceState *dev, Error **errp) > pfl->wcycle = 0; > pfl->cmd = 0; > pfl->status = 0; > + > /* Hardcoded CFI table (mostly from SG29 Spansion flash) */ > /* Standard "QRY" string */ > pfl->cfi_table[0x10] = 'Q'; > @@ -575,7 +576,7 @@ static void pflash_cfi02_realize(DeviceState *dev, Error **errp) > pfl->cfi_table[0x1D] = 0x00; > /* Vpp max (no Vpp pin) */ > pfl->cfi_table[0x1E] = 0x00; > - /* Reserved */ > + /* Timeout per single byte/word write (128 ms) */ > pfl->cfi_table[0x1F] = 0x07; > /* Timeout for min size buffer write (NA) */ > pfl->cfi_table[0x20] = 0x00; > @@ -614,17 +615,25 @@ static void pflash_cfi02_realize(DeviceState *dev, Error **errp) > pfl->cfi_table[0x32] = 'R'; > pfl->cfi_table[0x33] = 'I'; > > + /* Extended version 1.0 */ > pfl->cfi_table[0x34] = '1'; > pfl->cfi_table[0x35] = '0'; > > + /* Address sensitive unlock required. */ > pfl->cfi_table[0x36] = 0x00; > + /* Erase suspend not supported. */ > pfl->cfi_table[0x37] = 0x00; > + /* Sector protect not supported. */ > pfl->cfi_table[0x38] = 0x00; > + /* Temporary sector unprotect not supported. */ > pfl->cfi_table[0x39] = 0x00; > > + /* Sector protect/unprotect scheme. */ > pfl->cfi_table[0x3a] = 0x00; > > + /* Simultaneous operation not supported. */ > pfl->cfi_table[0x3b] = 0x00; > + /* Burst mode not supported. */ > pfl->cfi_table[0x3c] = 0x00; > } > > -- > 2.20.1 > >
diff --git a/hw/block/pflash_cfi02.c b/hw/block/pflash_cfi02.c index 1a794fa83c..f1bac480f5 100644 --- a/hw/block/pflash_cfi02.c +++ b/hw/block/pflash_cfi02.c @@ -550,6 +550,7 @@ static void pflash_cfi02_realize(DeviceState *dev, Error **errp) pfl->wcycle = 0; pfl->cmd = 0; pfl->status = 0; + /* Hardcoded CFI table (mostly from SG29 Spansion flash) */ /* Standard "QRY" string */ pfl->cfi_table[0x10] = 'Q'; @@ -575,7 +576,7 @@ static void pflash_cfi02_realize(DeviceState *dev, Error **errp) pfl->cfi_table[0x1D] = 0x00; /* Vpp max (no Vpp pin) */ pfl->cfi_table[0x1E] = 0x00; - /* Reserved */ + /* Timeout per single byte/word write (128 ms) */ pfl->cfi_table[0x1F] = 0x07; /* Timeout for min size buffer write (NA) */ pfl->cfi_table[0x20] = 0x00; @@ -614,17 +615,25 @@ static void pflash_cfi02_realize(DeviceState *dev, Error **errp) pfl->cfi_table[0x32] = 'R'; pfl->cfi_table[0x33] = 'I'; + /* Extended version 1.0 */ pfl->cfi_table[0x34] = '1'; pfl->cfi_table[0x35] = '0'; + /* Address sensitive unlock required. */ pfl->cfi_table[0x36] = 0x00; + /* Erase suspend not supported. */ pfl->cfi_table[0x37] = 0x00; + /* Sector protect not supported. */ pfl->cfi_table[0x38] = 0x00; + /* Temporary sector unprotect not supported. */ pfl->cfi_table[0x39] = 0x00; + /* Sector protect/unprotect scheme. */ pfl->cfi_table[0x3a] = 0x00; + /* Simultaneous operation not supported. */ pfl->cfi_table[0x3b] = 0x00; + /* Burst mode not supported. */ pfl->cfi_table[0x3c] = 0x00; }