qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v2 1/1] hw: register: Run post_write hook on res


From: Alistair Francis
Subject: Re: [Qemu-devel] [PATCH v2 1/1] hw: register: Run post_write hook on reset
Date: Thu, 22 Feb 2018 11:45:11 -0800

On Thu, Feb 15, 2018 at 3:05 PM, Alistair Francis <address@hidden> wrote:
> On Mon, Feb 5, 2018 at 10:44 AM, Alistair Francis
> <address@hidden> 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.
>>
>> Signed-off-by: Alistair Francis <address@hidden>
>> Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
>
> Ping!

Ping^2

>
>> ---
>>
>> V2:
>>  - Update the header documentation
>>
>>  include/hw/register.h | 6 +++---
>>  hw/core/register.c    | 8 ++++++++
>>  2 files changed, 11 insertions(+), 3 deletions(-)
>>
>> diff --git a/include/hw/register.h b/include/hw/register.h
>> index de2414e6b4..5796584588 100644
>> --- a/include/hw/register.h
>> +++ b/include/hw/register.h
>> @@ -34,7 +34,7 @@ typedef struct RegisterInfoArray RegisterInfoArray;
>>   * immediately before the actual write. The returned value is what is 
>> written,
>>   * giving the handler a chance to modify the written value.
>>   * @post_write: Post write callback. Passed the written value. Most write 
>> side
>> - * effects should be implemented here.
>> + * effects should be implemented here. This is called during device reset.
>>   *
>>   * @post_read: Post read callback. Passes the value that is about to be 
>> returned
>>   * for a read. The return value from this function is what is ultimately 
>> read,
>> @@ -135,8 +135,8 @@ uint64_t register_read(RegisterInfo *reg, uint64_t re, 
>> const char* prefix,
>>                         bool debug);
>>
>>  /**
>> - * reset a register
>> - * @reg: register to reset
>> + * Resets a register. This will also call the post_write hook if it exists.
>> + * @reg: The register to reset.
>>   */
>>
>>  void register_reset(RegisterInfo *reg);
>> 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)
>> --
>> 2.14.1
>>



reply via email to

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