diff mbox series

[v1,1/1] hw: register: Run post_write hook on reset

Message ID 8be93dc009d8473294b1adc26657058b8e56a550.1517600250.git.alistair.francis@xilinx.com
State New
Headers show
Series [v1,1/1] hw: register: Run post_write hook on reset | expand

Commit Message

Alistair Francis Feb. 2, 2018, 7:38 p.m. UTC
Ensure that the post write hook is called during reset. This allows us
to rely on the post write functions instead of having to call them from
the reset() function.

Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
---

 hw/core/register.c | 8 ++++++++
 1 file changed, 8 insertions(+)

Comments

Philippe Mathieu-Daudé Feb. 2, 2018, 8:24 p.m. UTC | #1
Hi Alistair,

On 02/02/2018 04:38 PM, Alistair Francis wrote:
> Ensure that the post write hook is called during reset. This allows us
> to rely on the post write functions instead of having to call them from
> the reset() function.

This makes sens. Can you add a comment about this new behavior in
include/hw/register.h?

> 
> Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>

with comment:
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> ---
> 
>  hw/core/register.c | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/hw/core/register.c b/hw/core/register.c
> index 900294b9c4..0741a1af32 100644
> --- a/hw/core/register.c
> +++ b/hw/core/register.c
> @@ -159,13 +159,21 @@ uint64_t register_read(RegisterInfo *reg, uint64_t re, const char* prefix,
>  
>  void register_reset(RegisterInfo *reg)
>  {
> +    const RegisterAccessInfo *ac;
> +
>      g_assert(reg);
>  
>      if (!reg->data || !reg->access) {
>          return;
>      }
>  
> +    ac = reg->access;
> +
>      register_write_val(reg, reg->access->reset);
> +
> +    if (ac->post_write) {
> +        ac->post_write(reg, reg->access->reset);
> +    }
>  }
>  
>  void register_init(RegisterInfo *reg)
>
Alistair Francis Feb. 2, 2018, 11:24 p.m. UTC | #2
On Fri, Feb 2, 2018 at 12:24 PM, Philippe Mathieu-Daudé <f4bug@amsat.org> wrote:
> Hi Alistair,
>
> On 02/02/2018 04:38 PM, Alistair Francis wrote:
>> Ensure that the post write hook is called during reset. This allows us
>> to rely on the post write functions instead of having to call them from
>> the reset() function.
>
> This makes sens. Can you add a comment about this new behavior in
> include/hw/register.h?

Yep, fixed in V2 which I'll send out next week.

Alistair

>
>>
>> Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
>
> with comment:
> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>
>> ---
>>
>>  hw/core/register.c | 8 ++++++++
>>  1 file changed, 8 insertions(+)
>>
>> diff --git a/hw/core/register.c b/hw/core/register.c
>> index 900294b9c4..0741a1af32 100644
>> --- a/hw/core/register.c
>> +++ b/hw/core/register.c
>> @@ -159,13 +159,21 @@ uint64_t register_read(RegisterInfo *reg, uint64_t re, const char* prefix,
>>
>>  void register_reset(RegisterInfo *reg)
>>  {
>> +    const RegisterAccessInfo *ac;
>> +
>>      g_assert(reg);
>>
>>      if (!reg->data || !reg->access) {
>>          return;
>>      }
>>
>> +    ac = reg->access;
>> +
>>      register_write_val(reg, reg->access->reset);
>> +
>> +    if (ac->post_write) {
>> +        ac->post_write(reg, reg->access->reset);
>> +    }
>>  }
>>
>>  void register_init(RegisterInfo *reg)
>>
diff mbox series

Patch

diff --git a/hw/core/register.c b/hw/core/register.c
index 900294b9c4..0741a1af32 100644
--- a/hw/core/register.c
+++ b/hw/core/register.c
@@ -159,13 +159,21 @@  uint64_t register_read(RegisterInfo *reg, uint64_t re, const char* prefix,
 
 void register_reset(RegisterInfo *reg)
 {
+    const RegisterAccessInfo *ac;
+
     g_assert(reg);
 
     if (!reg->data || !reg->access) {
         return;
     }
 
+    ac = reg->access;
+
     register_write_val(reg, reg->access->reset);
+
+    if (ac->post_write) {
+        ac->post_write(reg, reg->access->reset);
+    }
 }
 
 void register_init(RegisterInfo *reg)