qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Song Gao <gaosong@loongson.cn>
To: qemu-devel@nongnu.org
Cc: peter.maydell@linaro.org, Song Gao <gaosong@loongson.cn>
Subject: [PULL 12/17] hw/loongarch: fdt adds pch_pic Controller
Date: Thu,  7 Mar 2024 22:52:02 +0800	[thread overview]
Message-ID: <20240307145207.247913-13-gaosong@loongson.cn> (raw)
In-Reply-To: <20240307145207.247913-1-gaosong@loongson.cn>

fdt adds pch pic controller, we use 'loongson,pch-pic-1.0'

See:
https://github.com/torvalds/linux/blob/v6.7/drivers/irqchip/irq-loongson-pch-pic.c
https://lore.kernel.org/r/20200528152757.1028711-4-jiaxun.yang@flygoat.com

Signed-off-by: Song Gao <gaosong@loongson.cn>
Message-Id: <20240301093839.663947-13-gaosong@loongson.cn>
---
 hw/loongarch/virt.c        | 30 +++++++++++++++++++++++++++++-
 include/hw/pci-host/ls7a.h |  1 +
 2 files changed, 30 insertions(+), 1 deletion(-)

diff --git a/hw/loongarch/virt.c b/hw/loongarch/virt.c
index 822f070c45..2b7b653fc1 100644
--- a/hw/loongarch/virt.c
+++ b/hw/loongarch/virt.c
@@ -148,6 +148,31 @@ static void fdt_add_eiointc_node(LoongArchMachineState *lams,
     g_free(nodename);
 }
 
+static void fdt_add_pch_pic_node(LoongArchMachineState *lams,
+                                 uint32_t *eiointc_phandle,
+                                 uint32_t *pch_pic_phandle)
+{
+    MachineState *ms = MACHINE(lams);
+    char *nodename;
+    hwaddr pch_pic_base = VIRT_PCH_REG_BASE;
+    hwaddr pch_pic_size = VIRT_PCH_REG_SIZE;
+
+    *pch_pic_phandle = qemu_fdt_alloc_phandle(ms->fdt);
+    nodename = g_strdup_printf("/platic@%" PRIx64, pch_pic_base);
+    qemu_fdt_add_subnode(ms->fdt, nodename);
+    qemu_fdt_setprop_cell(ms->fdt,  nodename, "phandle", *pch_pic_phandle);
+    qemu_fdt_setprop_string(ms->fdt, nodename, "compatible",
+                            "loongson,pch-pic-1.0");
+    qemu_fdt_setprop_cells(ms->fdt, nodename, "reg", 0,
+                           pch_pic_base, 0, pch_pic_size);
+    qemu_fdt_setprop(ms->fdt, nodename, "interrupt-controller", NULL, 0);
+    qemu_fdt_setprop_cell(ms->fdt, nodename, "#interrupt-cells", 2);
+    qemu_fdt_setprop_cell(ms->fdt, nodename, "interrupt-parent",
+                          *eiointc_phandle);
+    qemu_fdt_setprop_cell(ms->fdt, nodename, "loongson,pic-base-vec", 0);
+    g_free(nodename);
+}
+
 static void fdt_add_flash_node(LoongArchMachineState *lams)
 {
     MachineState *ms = MACHINE(lams);
@@ -569,7 +594,7 @@ static void loongarch_irq_init(LoongArchMachineState *lams)
     CPULoongArchState *env;
     CPUState *cpu_state;
     int cpu, pin, i, start, num;
-    uint32_t cpuintc_phandle, eiointc_phandle;
+    uint32_t cpuintc_phandle, eiointc_phandle, pch_pic_phandle;
 
     /*
      * The connection of interrupts:
@@ -660,6 +685,9 @@ static void loongarch_irq_init(LoongArchMachineState *lams)
         qdev_connect_gpio_out(DEVICE(d), i, qdev_get_gpio_in(extioi, i));
     }
 
+    /* Add PCH PIC node */
+    fdt_add_pch_pic_node(lams, &eiointc_phandle, &pch_pic_phandle);
+
     pch_msi = qdev_new(TYPE_LOONGARCH_PCH_MSI);
     start   =  num;
     num = EXTIOI_IRQS - start;
diff --git a/include/hw/pci-host/ls7a.h b/include/hw/pci-host/ls7a.h
index e753449593..fe260f0183 100644
--- a/include/hw/pci-host/ls7a.h
+++ b/include/hw/pci-host/ls7a.h
@@ -24,6 +24,7 @@
 #define VIRT_PCH_REG_BASE        0x10000000UL
 #define VIRT_IOAPIC_REG_BASE     (VIRT_PCH_REG_BASE)
 #define VIRT_PCH_MSI_ADDR_LOW    0x2FF00000UL
+#define VIRT_PCH_REG_SIZE        0x400
 
 /*
  * GSI_BASE is hard-coded with 64 in linux kernel, else kernel fails to boot
-- 
2.34.1



  parent reply	other threads:[~2024-03-07 14:54 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-07 14:51 [PULL 00/17] loongarch-to-apply queue Song Gao
2024-03-07 14:51 ` [PULL 01/17] hw/loongarch: Move boot fucntions to boot.c Song Gao
2024-03-07 14:51 ` [PULL 02/17] hw/loongarch: Add load initrd Song Gao
2024-03-07 14:51 ` [PULL 03/17] hw/loongarch: Add slave cpu boot_code Song Gao
2024-03-07 14:51 ` [PULL 04/17] hw/loongarch: Add init_cmdline Song Gao
2024-03-07 14:51 ` [PULL 05/17] hw/loongarch: Init efi_system_table Song Gao
2024-03-07 14:51 ` [PULL 06/17] hw/loongarch: Init efi_boot_memmap table Song Gao
2024-03-07 14:51 ` [PULL 07/17] hw/loongarch: Init efi_initrd table Song Gao
2024-03-07 14:51 ` [PULL 08/17] hw/loongarch: Init efi_fdt table Song Gao
2024-03-07 14:51 ` [PULL 09/17] hw/loongarch: Fix fdt memory node wrong 'reg' Song Gao
2024-03-07 14:52 ` [PULL 10/17] hw/loongarch: fdt adds cpu interrupt controller node Song Gao
2024-03-07 14:52 ` [PULL 11/17] hw/loongarch: fdt adds Extend I/O Interrupt Controller Song Gao
2024-03-07 14:52 ` Song Gao [this message]
2024-03-07 14:52 ` [PULL 13/17] hw/loongarch: fdt adds pch_msi Controller Song Gao
2024-03-07 14:52 ` [PULL 14/17] hw/loongarch: fdt adds pcie irq_map node Song Gao
2024-03-07 14:52 ` [PULL 15/17] hw/loongarch: fdt remove unused irqchip node Song Gao
2024-03-07 15:22 ` [PULL 00/17] loongarch-to-apply queue gaosong
2024-03-07 15:23 ` Peter Maydell
2024-03-07 15:25   ` Peter Maydell
  -- strict thread matches above, loose matches on Subject: below --
2024-04-28  8:51 Song Gao
2024-04-28  8:51 ` [PULL 12/17] hw/loongarch: fdt adds pch_pic Controller Song Gao

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=20240307145207.247913-13-gaosong@loongson.cn \
    --to=gaosong@loongson.cn \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).