[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 22/32] hw/arm: Attach PSPI module to NPCM8XX SoC
From: |
Peter Maydell |
Subject: |
[PULL 22/32] hw/arm: Attach PSPI module to NPCM8XX SoC |
Date: |
Tue, 6 May 2025 15:42:04 +0100 |
From: Tim Lee <timlee660101@gmail.com>
Nuvoton's PSPI is a general purpose SPI module which enables
connections to SPI-based peripheral devices. Attach it to the NPCM8XX.
Tested:
NPCM8XX PSPI driver probed successfully from dmesg log.
Signed-off-by: Tim Lee <timlee660101@gmail.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Hao Wu <wuhaotsh@google.com>
Reviewed-by: Tyrone Ting <kfting@nuvoton.com>
Message-id: 20250414020629.1867106-1-timlee660101@gmail.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
include/hw/arm/npcm8xx.h | 2 ++
hw/arm/npcm8xx.c | 11 ++++++++++-
2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/include/hw/arm/npcm8xx.h b/include/hw/arm/npcm8xx.h
index 9812e6fa7ec..3436abff998 100644
--- a/include/hw/arm/npcm8xx.h
+++ b/include/hw/arm/npcm8xx.h
@@ -36,6 +36,7 @@
#include "hw/usb/hcd-ehci.h"
#include "hw/usb/hcd-ohci.h"
#include "target/arm/cpu.h"
+#include "hw/ssi/npcm_pspi.h"
#define NPCM8XX_MAX_NUM_CPUS (4)
@@ -99,6 +100,7 @@ struct NPCM8xxState {
OHCISysBusState ohci[2];
NPCM7xxFIUState fiu[3];
NPCM7xxSDHCIState mmc;
+ NPCMPSPIState pspi;
};
struct NPCM8xxClass {
diff --git a/hw/arm/npcm8xx.c b/hw/arm/npcm8xx.c
index 5cc67b132fc..d7ee306de7a 100644
--- a/hw/arm/npcm8xx.c
+++ b/hw/arm/npcm8xx.c
@@ -67,6 +67,9 @@
/* SDHCI Modules */
#define NPCM8XX_MMC_BA 0xf0842000
+/* PSPI Modules */
+#define NPCM8XX_PSPI_BA 0xf0201000
+
/* Run PLL1 at 1600 MHz */
#define NPCM8XX_PLLCON1_FIXUP_VAL 0x00402101
/* Run the CPU from PLL1 and UART from PLL2 */
@@ -83,6 +86,7 @@ enum NPCM8xxInterrupt {
NPCM8XX_PECI_IRQ = 6,
NPCM8XX_KCS_HIB_IRQ = 9,
NPCM8XX_MMC_IRQ = 26,
+ NPCM8XX_PSPI_IRQ = 28,
NPCM8XX_TIMER0_IRQ = 32, /* Timer Module 0 */
NPCM8XX_TIMER1_IRQ,
NPCM8XX_TIMER2_IRQ,
@@ -441,6 +445,7 @@ static void npcm8xx_init(Object *obj)
}
object_initialize_child(obj, "mmc", &s->mmc, TYPE_NPCM7XX_SDHCI);
+ object_initialize_child(obj, "pspi", &s->pspi, TYPE_NPCM_PSPI);
}
static void npcm8xx_realize(DeviceState *dev, Error **errp)
@@ -705,6 +710,11 @@ static void npcm8xx_realize(DeviceState *dev, Error **errp)
sysbus_connect_irq(SYS_BUS_DEVICE(&s->mmc), 0,
npcm8xx_irq(s, NPCM8XX_MMC_IRQ));
+ /* PSPI */
+ sysbus_realize(SYS_BUS_DEVICE(&s->pspi), &error_abort);
+ sysbus_mmio_map(SYS_BUS_DEVICE(&s->pspi), 0, NPCM8XX_PSPI_BA);
+ sysbus_connect_irq(SYS_BUS_DEVICE(&s->pspi), 0,
+ npcm8xx_irq(s, NPCM8XX_PSPI_IRQ));
create_unimplemented_device("npcm8xx.shm", 0xc0001000, 4 * KiB);
create_unimplemented_device("npcm8xx.gicextra", 0xdfffa000, 24 * KiB);
@@ -720,7 +730,6 @@ static void npcm8xx_realize(DeviceState *dev, Error **errp)
create_unimplemented_device("npcm8xx.siox[1]", 0xf0101000, 4 * KiB);
create_unimplemented_device("npcm8xx.siox[2]", 0xf0102000, 4 * KiB);
create_unimplemented_device("npcm8xx.tmps", 0xf0188000, 4 * KiB);
- create_unimplemented_device("npcm8xx.pspi", 0xf0201000, 4 * KiB);
create_unimplemented_device("npcm8xx.viru1", 0xf0204000, 4 * KiB);
create_unimplemented_device("npcm8xx.viru2", 0xf0205000, 4 * KiB);
create_unimplemented_device("npcm8xx.jtm1", 0xf0208000, 4 * KiB);
--
2.43.0
- [PULL 00/32] target-arm queue, Peter Maydell, 2025/05/06
- [PULL 03/32] hvf: only update sysreg from owning thread, Peter Maydell, 2025/05/06
- [PULL 09/32] hw/arm/virt: Remove VirtMachineClass::no_pmu field, Peter Maydell, 2025/05/06
- [PULL 01/32] hw/arm/npcm8xx_boards: Correct valid_cpu_types setting of NPCM8XX SoC, Peter Maydell, 2025/05/06
- [PULL 04/32] target/arm/ptw: extract arm_mmu_idx_to_security_space, Peter Maydell, 2025/05/06
- [PULL 07/32] target/arm/ptw: fix arm_cpu_get_phys_page_attrs_debug, Peter Maydell, 2025/05/06
- [PULL 12/32] hw/arm/virt: Remove VirtMachineClass::no_its field, Peter Maydell, 2025/05/06
- [PULL 14/32] hw/arm/virt: Remove VirtMachineClass::claim_edge_triggered_timers field, Peter Maydell, 2025/05/06
- [PULL 18/32] hw/arm/virt: Remove VirtMachineClass::smbios_old_sys_ver field, Peter Maydell, 2025/05/06
- [PULL 22/32] hw/arm: Attach PSPI module to NPCM8XX SoC,
Peter Maydell <=
- [PULL 25/32] target/arm/kvm: Drop support for kernels without KVM_ARM_PREFERRED_TARGET, Peter Maydell, 2025/05/06
- [PULL 27/32] hw/pci-host/designware: Fix viewport configuration, Peter Maydell, 2025/05/06
- [PULL 28/32] hw/gpio/imx_gpio: Fix interpretation of GDIR polarity, Peter Maydell, 2025/05/06
- [PULL 31/32] hw/arm/virt: Remove deprecated virt-3.1 machine, Peter Maydell, 2025/05/06
- [PULL 32/32] hw/arm/virt: Remove deprecated virt-4.0 machine, Peter Maydell, 2025/05/06
- [PULL 02/32] hvf: avoid repeatedly setting trap debug for each cpu, Peter Maydell, 2025/05/06
- [PULL 06/32] target/arm/ptw: extract arm_cpu_get_phys_page, Peter Maydell, 2025/05/06
- [PULL 13/32] hw/arm/virt: Remove deprecated virt-2.8 machine, Peter Maydell, 2025/05/06
- [PULL 30/32] hw/arm/virt: Remove deprecated virt-3.0 machine, Peter Maydell, 2025/05/06
- [PULL 05/32] target/arm/ptw: get current security_space for current mmu_idx, Peter Maydell, 2025/05/06