Message ID | 20190627202719.17739-11-philmd@redhat.com |
---|---|
State | New |
Headers | show |
Series | block/pflash_cfi02: Implement missing AMD pflash functionality | expand |
On Thu, Jun 27, 2019 at 1:46 PM Philippe Mathieu-Daudé <philmd@redhat.com> wrote: > > Extract the code block in a new function, remove a goto statement. > > Signed-off-by: Stephen Checkoway <stephen.checkoway@oberlin.edu> > Message-Id: <20190426162624.55977-3-stephen.checkoway@oberlin.edu> > Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> > Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com> > [PMD: Extracted from bigger patch, remove the XXX tracing comment] > Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Alistair > --- > hw/block/pflash_cfi02.c | 24 ++++++++++++++---------- > 1 file changed, 14 insertions(+), 10 deletions(-) > > diff --git a/hw/block/pflash_cfi02.c b/hw/block/pflash_cfi02.c > index 49afecb921..c079a63880 100644 > --- a/hw/block/pflash_cfi02.c > +++ b/hw/block/pflash_cfi02.c > @@ -165,12 +165,23 @@ static void pflash_timer (void *opaque) > pfl->cmd = 0; > } > > +/* > + * Read data from flash. > + */ > +static uint64_t pflash_data_read(PFlashCFI02 *pfl, hwaddr offset, > + unsigned int width) > +{ > + uint8_t *p = (uint8_t *)pfl->storage + offset; > + uint64_t ret = pfl->be ? ldn_be_p(p, width) : ldn_le_p(p, width); > + trace_pflash_data_read(offset, width << 1, ret); > + return ret; > +} > + > static uint32_t pflash_read(PFlashCFI02 *pfl, hwaddr offset, > int width, int be) > { > hwaddr boff; > uint32_t ret; > - uint8_t *p; > > ret = -1; > /* Lazy reset to ROMD mode after a certain amount of read accesses */ > @@ -194,15 +205,8 @@ static uint32_t pflash_read(PFlashCFI02 *pfl, hwaddr offset, > case 0x80: > /* We accept reads during second unlock sequence... */ > case 0x00: > - flash_read: > /* Flash area read */ > - p = (uint8_t *)pfl->storage + offset; > - if (pfl->be) { > - ret = ldn_be_p(p, width); > - } else { > - ret = ldn_le_p(p, width); > - } > - trace_pflash_data_read(offset, width << 1, ret); > + ret = pflash_data_read(pfl, offset, width); > break; > case 0x90: > /* flash ID read */ > @@ -222,7 +226,7 @@ static uint32_t pflash_read(PFlashCFI02 *pfl, hwaddr offset, > } > /* Fall through to data read. */ > default: > - goto flash_read; > + ret = pflash_data_read(pfl, offset, width); > } > DPRINTF("%s: ID " TARGET_FMT_plx " %" PRIx32 "\n", __func__, boff, ret); > break; > -- > 2.20.1 > >
diff --git a/hw/block/pflash_cfi02.c b/hw/block/pflash_cfi02.c index 49afecb921..c079a63880 100644 --- a/hw/block/pflash_cfi02.c +++ b/hw/block/pflash_cfi02.c @@ -165,12 +165,23 @@ static void pflash_timer (void *opaque) pfl->cmd = 0; } +/* + * Read data from flash. + */ +static uint64_t pflash_data_read(PFlashCFI02 *pfl, hwaddr offset, + unsigned int width) +{ + uint8_t *p = (uint8_t *)pfl->storage + offset; + uint64_t ret = pfl->be ? ldn_be_p(p, width) : ldn_le_p(p, width); + trace_pflash_data_read(offset, width << 1, ret); + return ret; +} + static uint32_t pflash_read(PFlashCFI02 *pfl, hwaddr offset, int width, int be) { hwaddr boff; uint32_t ret; - uint8_t *p; ret = -1; /* Lazy reset to ROMD mode after a certain amount of read accesses */ @@ -194,15 +205,8 @@ static uint32_t pflash_read(PFlashCFI02 *pfl, hwaddr offset, case 0x80: /* We accept reads during second unlock sequence... */ case 0x00: - flash_read: /* Flash area read */ - p = (uint8_t *)pfl->storage + offset; - if (pfl->be) { - ret = ldn_be_p(p, width); - } else { - ret = ldn_le_p(p, width); - } - trace_pflash_data_read(offset, width << 1, ret); + ret = pflash_data_read(pfl, offset, width); break; case 0x90: /* flash ID read */ @@ -222,7 +226,7 @@ static uint32_t pflash_read(PFlashCFI02 *pfl, hwaddr offset, } /* Fall through to data read. */ default: - goto flash_read; + ret = pflash_data_read(pfl, offset, width); } DPRINTF("%s: ID " TARGET_FMT_plx " %" PRIx32 "\n", __func__, boff, ret); break;