qemu-arm
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 1/1] hw: allow write_enable latch get/set


From: Peter Delevoryas
Subject: Re: [PATCH 1/1] hw: allow write_enable latch get/set
Date: Wed, 11 May 2022 20:30:24 +0000


> On May 11, 2022, at 11:45 AM, Iris Chen via <qemu-devel@nongnu.org> wrote:
> 
> ---
> hw/block/m25p80.c             | 30 ++++++++++++++++++++++++++++++
> tests/qtest/aspeed_smc-test.c | 20 ++++++++++++++++++++
> 2 files changed, 50 insertions(+)
> 
> diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c
> index 430d1298a8..fb72704e5a 100644
> --- a/hw/block/m25p80.c
> +++ b/hw/block/m25p80.c
> @@ -35,6 +35,7 @@
> #include "qapi/error.h"
> #include "trace.h"
> #include "qom/object.h"
> +#include "qapi/visitor.h"
> 
> /* Fields for FlashPartInfo->flags */
> 
> @@ -1646,6 +1647,31 @@ static const VMStateDescription vmstate_m25p80 = {
>     }
> };
> 
> +static void m25p80_get_wel(Object *obj, Visitor *v, const char *name,
> +                            void *opaque, Error **errp)
> +{
> +    Flash *s = M25P80(obj);
> +
> +    assert(strcmp(name, "WEL") == 0);
> +
> +    visit_type_bool(v, name, &s->write_enable, errp);
> +}
> +
> +static void m25p80_set_wel(Object *obj, Visitor *v, const char *name,
> +                            void *opaque, Error **errp)
> +{
> +    Flash *s = M25P80(obj);
> +    bool value;
> +
> +    assert(strcmp(name, "WEL") == 0);
> +
> +    if (!visit_type_bool(v, name, &value, errp)) {
> +        return;
> +    }
> +
> +    s->write_enable = value;
> +}
> +
> static void m25p80_class_init(ObjectClass *klass, void *data)
> {
>     DeviceClass *dc = DEVICE_CLASS(klass);
> @@ -1660,6 +1686,10 @@ static void m25p80_class_init(ObjectClass *klass, void 
> *data)
>     device_class_set_props(dc, m25p80_properties);
>     dc->reset = m25p80_reset;
>     mc->pi = data;
> +
> +    object_class_property_add(klass, "WEL", "bool",
> +                            m25p80_get_wel,
> +                            m25p80_set_wel, NULL, NULL);

I think the spacing here might be slightly off, try making the 2nd and 3rd lines
align with “klass” in the first line.

> }
> 
> static const TypeInfo m25p80_info = {
> diff --git a/tests/qtest/aspeed_smc-test.c b/tests/qtest/aspeed_smc-test.c
> index 87b40a0ef1..af885a9c9d 100644
> --- a/tests/qtest/aspeed_smc-test.c
> +++ b/tests/qtest/aspeed_smc-test.c
> @@ -49,6 +49,7 @@
>  */
> enum {
>     JEDEC_READ = 0x9f,
> +    RDSR = 0x5,
>     BULK_ERASE = 0xc7,
>     READ = 0x03,
>     PP = 0x02,
> @@ -348,6 +349,24 @@ static void test_write_page_mem(void)
>     flash_reset();
> }
> 
> +static void test_read_status_reg(void)
> +{
> +    uint8_t r;
> +
> +     qmp("{ 'execute': 'qom-set', 'arguments': "
> +       "{'path': '/machine/soc/fmc/ssi.0/child[0]', 'property': 'WEL', 
> 'value': true}}");

Spacing is off here, make sure the indentation is set to 4 spaces.

> +
> +    spi_conf(CONF_ENABLE_W0);
> +     spi_ctrl_start_user();
> +     writeb(ASPEED_FLASH_BASE, RDSR);
> +     r = readb(ASPEED_FLASH_BASE);
> +     spi_ctrl_stop_user();

Spacing is off here too.

> +
> +     g_assert_cmphex(r, ==, 0x2);

Maybe consider using a constant instead of 0x2, like:

...
#include “qemu/bitops.h" 
...
#define SR_WEL BIT(1)
…
g_assert_cmphex(r, ==, SR_WEL);

Additionally, since we only care about testing the write enable
latch state (and not the other bits in the status register),
it could be:

g_assert_cmphex(r & SR_WEL, ==, SR_WEL);

> +
> +     flash_reset();
> +}
> +
> static char tmp_path[] = "/tmp/qtest.m25p80.XXXXXX";
> 
> int main(int argc, char **argv)
> @@ -373,6 +392,7 @@ int main(int argc, char **argv)
>     qtest_add_func("/ast2400/smc/write_page", test_write_page);
>     qtest_add_func("/ast2400/smc/read_page_mem", test_read_page_mem);
>     qtest_add_func("/ast2400/smc/write_page_mem", test_write_page_mem);
> +    qtest_add_func("/ast2400/smc/read_status_reg", test_read_status_reg);
> 
>     ret = g_test_run();
> 
> -- 
> 2.30.2
> 
> 
> 


reply via email to

[Prev in Thread] Current Thread [Next in Thread]