diff mbox series

[11/12] hw/pci-host/bonito: Set the Config register reset value with FIELD_DP32

Message ID 20200510210128.18343-12-f4bug@amsat.org
State New
Headers show
Series hw/mips/fuloong2e: PoC to fix hang after reboot | expand

Commit Message

Philippe Mathieu-Daudé May 10, 2020, 9:01 p.m. UTC
Describe some Config registers fields with the registerfields
API. Use the FIELD_DP32() macro to set the BONGENCFG register
bits at reset.

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 hw/pci-host/bonito.c | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

Comments

Aleksandar Markovic May 11, 2020, 6:17 a.m. UTC | #1
нед, 10. мај 2020. у 23:01 Philippe Mathieu-Daudé <f4bug@amsat.org> је
написао/ла:
>
> Describe some Config registers fields with the registerfields
> API. Use the FIELD_DP32() macro to set the BONGENCFG register
> bits at reset.
>
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  hw/pci-host/bonito.c | 21 ++++++++++++++++++++-
>  1 file changed, 20 insertions(+), 1 deletion(-)
>

Some Config registers? Is there any reason not to cover all Bonito
config registers? Or, the commit message was inprecise?

But, in general, I salute the intent of this patch.

Sincerely,
Aleksandar

> diff --git a/hw/pci-host/bonito.c b/hw/pci-host/bonito.c
> index 335c7787eb..86aceb333a 100644
> --- a/hw/pci-host/bonito.c
> +++ b/hw/pci-host/bonito.c
> @@ -50,6 +50,7 @@
>  #include "sysemu/runstate.h"
>  #include "exec/address-spaces.h"
>  #include "hw/misc/unimp.h"
> +#include "hw/registerfields.h"
>
>  /* #define DEBUG_BONITO */
>
> @@ -112,8 +113,19 @@
>  /* Power on register */
>
>  #define BONITO_BONPONCFG        (0x00 >> 2)      /* 0x100 */
> +
> +/* PCI configuration register */
>  #define BONITO_BONGENCFG_OFFSET 0x4
>  #define BONITO_BONGENCFG        (BONITO_BONGENCFG_OFFSET >> 2)   /*0x104 */
> +REG32(BONGENCFG,        0x104)
> +FIELD(BONGENCFG, DEBUGMODE,      0, 1)
> +FIELD(BONGENCFG, SNOOP,          1, 1)
> +FIELD(BONGENCFG, CPUSELFRESET,   2, 1)
> +FIELD(BONGENCFG, BYTESWAP,       6, 1)
> +FIELD(BONGENCFG, UNCACHED,       7, 1)
> +FIELD(BONGENCFG, PREFETCH,       8, 1)
> +FIELD(BONGENCFG, WRITEBEHIND,    9, 1)
> +FIELD(BONGENCFG, PCIQUEUE,      12, 1)
>
>  /* 2. IO & IDE configuration */
>  #define BONITO_IODEVCFG         (0x08 >> 2)      /* 0x108 */
> @@ -577,11 +589,18 @@ static int pci_bonito_map_irq(PCIDevice *pci_dev, int irq_num)
>  static void bonito_reset(void *opaque)
>  {
>      PCIBonitoState *s = opaque;
> +    uint32_t val = 0;
>
>      /* set the default value of north bridge registers */
>
>      s->regs[BONITO_BONPONCFG] = 0xc40;
> -    s->regs[BONITO_BONGENCFG] = 0x1384;
> +    val = FIELD_DP32(val, BONGENCFG, PCIQUEUE, 1);
> +    val = FIELD_DP32(val, BONGENCFG, WRITEBEHIND, 1);
> +    val = FIELD_DP32(val, BONGENCFG, PREFETCH, 1);
> +    val = FIELD_DP32(val, BONGENCFG, UNCACHED, 1);
> +    val = FIELD_DP32(val, BONGENCFG, CPUSELFRESET, 1);
> +    s->regs[BONITO_BONGENCFG] = val;
> +
>      s->regs[BONITO_IODEVCFG] = 0x2bff8010;
>      s->regs[BONITO_SDCFG] = 0x255e0091;
>
> --
> 2.21.3
>
Philippe Mathieu-Daudé May 11, 2020, 6:30 a.m. UTC | #2
On 5/11/20 8:17 AM, Aleksandar Markovic wrote:
> нед, 10. мај 2020. у 23:01 Philippe Mathieu-Daudé <f4bug@amsat.org> је
> написао/ла:
>>
>> Describe some Config registers fields with the registerfields
>> API. Use the FIELD_DP32() macro to set the BONGENCFG register
>> bits at reset.
>>
>> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>> ---
>>   hw/pci-host/bonito.c | 21 ++++++++++++++++++++-
>>   1 file changed, 20 insertions(+), 1 deletion(-)
>>
> 
> Some Config registers? Is there any reason not to cover all Bonito
> config registers? Or, the commit message was inprecise?

The commit message is not correct English, I wanted to say "some bits of 
the Config register" (I don't want to overload the file defining bits 
we'll never use).

> 
> But, in general, I salute the intent of this patch.

Thanks! I'll reword the description.

> 
> Sincerely,
> Aleksandar
> 
>> diff --git a/hw/pci-host/bonito.c b/hw/pci-host/bonito.c
>> index 335c7787eb..86aceb333a 100644
>> --- a/hw/pci-host/bonito.c
>> +++ b/hw/pci-host/bonito.c
>> @@ -50,6 +50,7 @@
>>   #include "sysemu/runstate.h"
>>   #include "exec/address-spaces.h"
>>   #include "hw/misc/unimp.h"
>> +#include "hw/registerfields.h"
>>
>>   /* #define DEBUG_BONITO */
>>
>> @@ -112,8 +113,19 @@
>>   /* Power on register */
>>
>>   #define BONITO_BONPONCFG        (0x00 >> 2)      /* 0x100 */
>> +
>> +/* PCI configuration register */
>>   #define BONITO_BONGENCFG_OFFSET 0x4
>>   #define BONITO_BONGENCFG        (BONITO_BONGENCFG_OFFSET >> 2)   /*0x104 */
>> +REG32(BONGENCFG,        0x104)
>> +FIELD(BONGENCFG, DEBUGMODE,      0, 1)
>> +FIELD(BONGENCFG, SNOOP,          1, 1)
>> +FIELD(BONGENCFG, CPUSELFRESET,   2, 1)
>> +FIELD(BONGENCFG, BYTESWAP,       6, 1)
>> +FIELD(BONGENCFG, UNCACHED,       7, 1)
>> +FIELD(BONGENCFG, PREFETCH,       8, 1)
>> +FIELD(BONGENCFG, WRITEBEHIND,    9, 1)
>> +FIELD(BONGENCFG, PCIQUEUE,      12, 1)
>>
>>   /* 2. IO & IDE configuration */
>>   #define BONITO_IODEVCFG         (0x08 >> 2)      /* 0x108 */
>> @@ -577,11 +589,18 @@ static int pci_bonito_map_irq(PCIDevice *pci_dev, int irq_num)
>>   static void bonito_reset(void *opaque)
>>   {
>>       PCIBonitoState *s = opaque;
>> +    uint32_t val = 0;
>>
>>       /* set the default value of north bridge registers */
>>
>>       s->regs[BONITO_BONPONCFG] = 0xc40;
>> -    s->regs[BONITO_BONGENCFG] = 0x1384;
>> +    val = FIELD_DP32(val, BONGENCFG, PCIQUEUE, 1);
>> +    val = FIELD_DP32(val, BONGENCFG, WRITEBEHIND, 1);
>> +    val = FIELD_DP32(val, BONGENCFG, PREFETCH, 1);
>> +    val = FIELD_DP32(val, BONGENCFG, UNCACHED, 1);
>> +    val = FIELD_DP32(val, BONGENCFG, CPUSELFRESET, 1);
>> +    s->regs[BONITO_BONGENCFG] = val;
>> +
>>       s->regs[BONITO_IODEVCFG] = 0x2bff8010;
>>       s->regs[BONITO_SDCFG] = 0x255e0091;
>>
>> --
>> 2.21.3
>>
>
Aleksandar Markovic May 11, 2020, 7:16 a.m. UTC | #3
пон, 11. мај 2020. у 08:30 Philippe Mathieu-Daudé <f4bug@amsat.org> је
написао/ла:
>
> On 5/11/20 8:17 AM, Aleksandar Markovic wrote:
> > нед, 10. мај 2020. у 23:01 Philippe Mathieu-Daudé <f4bug@amsat.org> је
> > написао/ла:
> >>
> >> Describe some Config registers fields with the registerfields
> >> API. Use the FIELD_DP32() macro to set the BONGENCFG register
> >> bits at reset.
> >>
> >> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> >> ---
> >>   hw/pci-host/bonito.c | 21 ++++++++++++++++++++-
> >>   1 file changed, 20 insertions(+), 1 deletion(-)
> >>
> >
> > Some Config registers? Is there any reason not to cover all Bonito
> > config registers? Or, the commit message was inprecise?
>
> The commit message is not correct English, I wanted to say "some bits of
> the Config register" (I don't want to overload the file defining bits
> we'll never use).
>
> >
> > But, in general, I salute the intent of this patch.
>
> Thanks! I'll reword the description.
>

OK, then, with that little rewording, certainly, a good patch:

Reviewed-by: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>

> >
> > Sincerely,
> > Aleksandar
> >
> >> diff --git a/hw/pci-host/bonito.c b/hw/pci-host/bonito.c
> >> index 335c7787eb..86aceb333a 100644
> >> --- a/hw/pci-host/bonito.c
> >> +++ b/hw/pci-host/bonito.c
> >> @@ -50,6 +50,7 @@
> >>   #include "sysemu/runstate.h"
> >>   #include "exec/address-spaces.h"
> >>   #include "hw/misc/unimp.h"
> >> +#include "hw/registerfields.h"
> >>
> >>   /* #define DEBUG_BONITO */
> >>
> >> @@ -112,8 +113,19 @@
> >>   /* Power on register */
> >>
> >>   #define BONITO_BONPONCFG        (0x00 >> 2)      /* 0x100 */
> >> +
> >> +/* PCI configuration register */
> >>   #define BONITO_BONGENCFG_OFFSET 0x4
> >>   #define BONITO_BONGENCFG        (BONITO_BONGENCFG_OFFSET >> 2)   /*0x104 */
> >> +REG32(BONGENCFG,        0x104)
> >> +FIELD(BONGENCFG, DEBUGMODE,      0, 1)
> >> +FIELD(BONGENCFG, SNOOP,          1, 1)
> >> +FIELD(BONGENCFG, CPUSELFRESET,   2, 1)
> >> +FIELD(BONGENCFG, BYTESWAP,       6, 1)
> >> +FIELD(BONGENCFG, UNCACHED,       7, 1)
> >> +FIELD(BONGENCFG, PREFETCH,       8, 1)
> >> +FIELD(BONGENCFG, WRITEBEHIND,    9, 1)
> >> +FIELD(BONGENCFG, PCIQUEUE,      12, 1)
> >>
> >>   /* 2. IO & IDE configuration */
> >>   #define BONITO_IODEVCFG         (0x08 >> 2)      /* 0x108 */
> >> @@ -577,11 +589,18 @@ static int pci_bonito_map_irq(PCIDevice *pci_dev, int irq_num)
> >>   static void bonito_reset(void *opaque)
> >>   {
> >>       PCIBonitoState *s = opaque;
> >> +    uint32_t val = 0;
> >>
> >>       /* set the default value of north bridge registers */
> >>
> >>       s->regs[BONITO_BONPONCFG] = 0xc40;
> >> -    s->regs[BONITO_BONGENCFG] = 0x1384;
> >> +    val = FIELD_DP32(val, BONGENCFG, PCIQUEUE, 1);
> >> +    val = FIELD_DP32(val, BONGENCFG, WRITEBEHIND, 1);
> >> +    val = FIELD_DP32(val, BONGENCFG, PREFETCH, 1);
> >> +    val = FIELD_DP32(val, BONGENCFG, UNCACHED, 1);
> >> +    val = FIELD_DP32(val, BONGENCFG, CPUSELFRESET, 1);
> >> +    s->regs[BONITO_BONGENCFG] = val;
> >> +
> >>       s->regs[BONITO_IODEVCFG] = 0x2bff8010;
> >>       s->regs[BONITO_SDCFG] = 0x255e0091;
> >>
> >> --
> >> 2.21.3
> >>
> >
diff mbox series

Patch

diff --git a/hw/pci-host/bonito.c b/hw/pci-host/bonito.c
index 335c7787eb..86aceb333a 100644
--- a/hw/pci-host/bonito.c
+++ b/hw/pci-host/bonito.c
@@ -50,6 +50,7 @@ 
 #include "sysemu/runstate.h"
 #include "exec/address-spaces.h"
 #include "hw/misc/unimp.h"
+#include "hw/registerfields.h"
 
 /* #define DEBUG_BONITO */
 
@@ -112,8 +113,19 @@ 
 /* Power on register */
 
 #define BONITO_BONPONCFG        (0x00 >> 2)      /* 0x100 */
+
+/* PCI configuration register */
 #define BONITO_BONGENCFG_OFFSET 0x4
 #define BONITO_BONGENCFG        (BONITO_BONGENCFG_OFFSET >> 2)   /*0x104 */
+REG32(BONGENCFG,        0x104)
+FIELD(BONGENCFG, DEBUGMODE,      0, 1)
+FIELD(BONGENCFG, SNOOP,          1, 1)
+FIELD(BONGENCFG, CPUSELFRESET,   2, 1)
+FIELD(BONGENCFG, BYTESWAP,       6, 1)
+FIELD(BONGENCFG, UNCACHED,       7, 1)
+FIELD(BONGENCFG, PREFETCH,       8, 1)
+FIELD(BONGENCFG, WRITEBEHIND,    9, 1)
+FIELD(BONGENCFG, PCIQUEUE,      12, 1)
 
 /* 2. IO & IDE configuration */
 #define BONITO_IODEVCFG         (0x08 >> 2)      /* 0x108 */
@@ -577,11 +589,18 @@  static int pci_bonito_map_irq(PCIDevice *pci_dev, int irq_num)
 static void bonito_reset(void *opaque)
 {
     PCIBonitoState *s = opaque;
+    uint32_t val = 0;
 
     /* set the default value of north bridge registers */
 
     s->regs[BONITO_BONPONCFG] = 0xc40;
-    s->regs[BONITO_BONGENCFG] = 0x1384;
+    val = FIELD_DP32(val, BONGENCFG, PCIQUEUE, 1);
+    val = FIELD_DP32(val, BONGENCFG, WRITEBEHIND, 1);
+    val = FIELD_DP32(val, BONGENCFG, PREFETCH, 1);
+    val = FIELD_DP32(val, BONGENCFG, UNCACHED, 1);
+    val = FIELD_DP32(val, BONGENCFG, CPUSELFRESET, 1);
+    s->regs[BONITO_BONGENCFG] = val;
+
     s->regs[BONITO_IODEVCFG] = 0x2bff8010;
     s->regs[BONITO_SDCFG] = 0x255e0091;