All of lore.kernel.org
 help / color / mirror / Atom feed
From: Shashi Mallela <shashi.mallela@linaro.org>
To: Graeme Gregory <graeme@nuviainc.com>
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
	"Leif Lindholm" <leif@nuviainc.com>,
	qemu-devel@nongnu.org, qemu-arm@nongnu.org,
	"Radosław Biernacki" <rad@semihalf.com>
Subject: Re: [PATCH v5 2/2] hw/arm/sbsa-ref: add SBSA watchdog device
Date: Wed, 14 Oct 2020 13:04:43 -0400	[thread overview]
Message-ID: <CAC15JE2hMrzpWWF-bS-fshoYx+BPehwxqJi-7uMUXSOj+Uh3GQ@mail.gmail.com> (raw)
In-Reply-To: <20201014093119.inq2ut2srps2zfme@xora-monster>

[-- Attachment #1: Type: text/plain, Size: 5357 bytes --]

This was added as a placeholder for the virt requirement suggested by Maxim
earlier.Agreed that this fdt otherwise has no significance for sbsa-ref
platform nor is being used by ACPI table created for wdt.

-Shashi

On Wed, 14 Oct 2020 at 05:31, Graeme Gregory <graeme@nuviainc.com> wrote:

> On Tue, Oct 13, 2020 at 11:16:31AM -0400, Shashi Mallela wrote:
> > Included the newly implemented SBSA generic watchdog device model into
> > SBSA platform
> >
> > Signed-off-by: Shashi Mallela <shashi.mallela@linaro.org>
> > ---
> >  hw/arm/sbsa-ref.c | 50 +++++++++++++++++++++++++++++++++++++++++++++++
> >  1 file changed, 50 insertions(+)
> >
> > diff --git a/hw/arm/sbsa-ref.c b/hw/arm/sbsa-ref.c
> > index 9c3a893bedfd..97ed41607119 100644
> > --- a/hw/arm/sbsa-ref.c
> > +++ b/hw/arm/sbsa-ref.c
> > @@ -30,6 +30,7 @@
> >  #include "exec/hwaddr.h"
> >  #include "kvm_arm.h"
> >  #include "hw/arm/boot.h"
> > +#include "hw/arm/fdt.h"
> >  #include "hw/block/flash.h"
> >  #include "hw/boards.h"
> >  #include "hw/ide/internal.h"
> > @@ -40,6 +41,7 @@
> >  #include "hw/qdev-properties.h"
> >  #include "hw/usb.h"
> >  #include "hw/char/pl011.h"
> > +#include "hw/watchdog/wdt_sbsa_gwdt.h"
> >  #include "net/net.h"
> >  #include "qom/object.h"
> >
> > @@ -64,6 +66,9 @@ enum {
> >      SBSA_GIC_DIST,
> >      SBSA_GIC_REDIST,
> >      SBSA_SECURE_EC,
> > +    SBSA_GWDT,
> > +    SBSA_GWDT_REFRESH,
> > +    SBSA_GWDT_CONTROL,
> >      SBSA_SMMU,
> >      SBSA_UART,
> >      SBSA_RTC,
> > @@ -104,6 +109,8 @@ static const MemMapEntry sbsa_ref_memmap[] = {
> >      [SBSA_GIC_DIST] =           { 0x40060000, 0x00010000 },
> >      [SBSA_GIC_REDIST] =         { 0x40080000, 0x04000000 },
> >      [SBSA_SECURE_EC] =          { 0x50000000, 0x00001000 },
> > +    [SBSA_GWDT_REFRESH] =       { 0x50010000, 0x00001000 },
> > +    [SBSA_GWDT_CONTROL] =       { 0x50011000, 0x00001000 },
> >      [SBSA_UART] =               { 0x60000000, 0x00001000 },
> >      [SBSA_RTC] =                { 0x60010000, 0x00001000 },
> >      [SBSA_GPIO] =               { 0x60020000, 0x00001000 },
> > @@ -133,6 +140,8 @@ static const int sbsa_ref_irqmap[] = {
> >      [SBSA_SECURE_UART_MM] = 9,
> >      [SBSA_AHCI] = 10,
> >      [SBSA_EHCI] = 11,
> > +    [SBSA_SMMU] = 12, /* ... to 15 */
> > +    [SBSA_GWDT] = 16,
> >  };
> >
> >  static uint64_t sbsa_ref_cpu_mp_affinity(SBSAMachineState *sms, int idx)
> > @@ -141,6 +150,30 @@ static uint64_t
> sbsa_ref_cpu_mp_affinity(SBSAMachineState *sms, int idx)
> >      return arm_cpu_mp_affinity(idx, clustersz);
> >  }
> >
> > +static void create_wdt_fdt(SBSAMachineState *sms)
> > +{
> > +    char *nodename;
> > +    const char compat[] = "arm,sbsa-gwdt";
> > +
> > +    hwaddr rbase = sbsa_ref_memmap[SBSA_GWDT_REFRESH].base;
> > +    hwaddr cbase = sbsa_ref_memmap[SBSA_GWDT_CONTROL].base;
> > +    int irq = sbsa_ref_irqmap[SBSA_GWDT];
> > +
> > +    nodename = g_strdup_printf("/watchdog@%" PRIx64, rbase);
> > +    qemu_fdt_add_subnode(sms->fdt, nodename);
> > +
> > +    qemu_fdt_setprop(sms->fdt, nodename, "compatible",
> > +                             compat, sizeof(compat));
> > +    qemu_fdt_setprop_sized_cells(sms->fdt, nodename, "reg",
> > +                                 2, rbase, 2, SBSA_GWDT_RMMIO_SIZE,
> > +                                 2, cbase, 2, SBSA_GWDT_CMMIO_SIZE);
> > +    qemu_fdt_setprop_cells(sms->fdt, nodename, "interrupts",
> > +                                GIC_FDT_IRQ_TYPE_PPI, irq,
> > +                                GIC_FDT_IRQ_FLAGS_LEVEL_HI);
> > +    qemu_fdt_setprop_cell(sms->fdt, nodename, "timeout-sec", 30);
> > +    g_free(nodename);
> > +}
> > +
>
> Is this actually used anywhere? I ask because SBSA-ref is not a FDT
> booting machine and only uses FDT to transfer some dynamic info to
> arm-tf/edk2 and is not a full description tree. Your ACPI patch in
> edk2 certainly does not use this info.
>
> Graeme
>
>
> >  /*
> >   * Firmware on this machine only uses ACPI table to load OS, these
> limited
> >   * device tree nodes are just to let firmware know the info which
> varies from
> > @@ -219,6 +252,7 @@ static void create_fdt(SBSAMachineState *sms)
> >
> >          g_free(nodename);
> >      }
> > +    create_wdt_fdt(sms);
> >  }
> >
> >  #define SBSA_FLASH_SECTOR_SIZE (256 * KiB)
> > @@ -447,6 +481,20 @@ static void create_rtc(const SBSAMachineState *sms)
> >      sysbus_create_simple("pl031", base, qdev_get_gpio_in(sms->gic,
> irq));
> >  }
> >
> > +static void create_wdt(const SBSAMachineState *sms)
> > +{
> > +    hwaddr rbase = sbsa_ref_memmap[SBSA_GWDT_REFRESH].base;
> > +    hwaddr cbase = sbsa_ref_memmap[SBSA_GWDT_CONTROL].base;
> > +    DeviceState *dev = qdev_new(TYPE_WDT_SBSA_GWDT);
> > +    SysBusDevice *s = SYS_BUS_DEVICE(dev);
> > +    int irq = sbsa_ref_irqmap[SBSA_GWDT];
> > +
> > +    sysbus_realize_and_unref(s, &error_fatal);
> > +    sysbus_mmio_map(s, 0, rbase);
> > +    sysbus_mmio_map(s, 1, cbase);
> > +    sysbus_connect_irq(s, 0, qdev_get_gpio_in(sms->gic, irq));
> > +}
> > +
> >  static DeviceState *gpio_key_dev;
> >  static void sbsa_ref_powerdown_req(Notifier *n, void *opaque)
> >  {
> > @@ -730,6 +778,8 @@ static void sbsa_ref_init(MachineState *machine)
> >
> >      create_rtc(sms);
> >
> > +    create_wdt(sms);
> > +
> >      create_gpio(sms);
> >
> >      create_ahci(sms);
> > --
> > 2.18.4
> >
> >
>

[-- Attachment #2: Type: text/html, Size: 7087 bytes --]

  reply	other threads:[~2020-10-14 17:07 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-13 15:16 [PATCH v5 0/2] Add watchdog support for SbsaQemu Shashi Mallela
2020-10-13 15:16 ` [PATCH v5 1/2] hw/watchdog: Implement SBSA watchdog device Shashi Mallela
2020-10-13 15:16 ` [PATCH v5 2/2] hw/arm/sbsa-ref: add " Shashi Mallela
2020-10-14  9:31   ` Graeme Gregory
2020-10-14 17:04     ` Shashi Mallela [this message]
2020-10-15 14:10       ` Graeme Gregory
2020-10-15 15:21         ` Maxim Uvarov
2020-10-16  8:37           ` Graeme Gregory

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAC15JE2hMrzpWWF-bS-fshoYx+BPehwxqJi-7uMUXSOj+Uh3GQ@mail.gmail.com \
    --to=shashi.mallela@linaro.org \
    --cc=graeme@nuviainc.com \
    --cc=leif@nuviainc.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=rad@semihalf.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.