[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 08/11] aspeed/soc: introduce a new API to get the INTC orgate
|
From: |
Jamin Lin |
|
Subject: |
[PATCH v2 08/11] aspeed/soc: introduce a new API to get the INTC orgate information |
|
Date: |
Thu, 8 Aug 2024 10:49:13 +0800 |
Currently, users can set the intc mapping table with
enumerated device id and device irq to get the INTC orgate
input pins. However, some devices use the continuous bits number in the
same orgate. To reduce the enumerated device id definition,
create a new API to get the INTC orgate index and source bit number
if users only provide the start bus number of device.
Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
hw/arm/aspeed_ast27x0.c | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/hw/arm/aspeed_ast27x0.c b/hw/arm/aspeed_ast27x0.c
index 4257b5e8af..0bbd66110b 100644
--- a/hw/arm/aspeed_ast27x0.c
+++ b/hw/arm/aspeed_ast27x0.c
@@ -164,6 +164,11 @@ struct gic_intc_irq_info {
const int *ptr;
};
+struct gic_intc_orgate_info {
+ int index;
+ int int_num;
+};
+
static const struct gic_intc_irq_info aspeed_soc_ast2700_gic_intcmap[] = {
{128, aspeed_soc_ast2700_gic128_intcmap},
{129, NULL},
@@ -193,6 +198,27 @@ static qemu_irq aspeed_soc_ast2700_get_irq(AspeedSoCState
*s, int dev)
return qdev_get_gpio_in(DEVICE(&a->gic), sc->irqmap[dev]);
}
+static void aspeed_soc_ast2700_get_intc_orgate(AspeedSoCState *s, int dev,
+ struct gic_intc_orgate_info *orgate_info)
+{
+ AspeedSoCClass *sc = ASPEED_SOC_GET_CLASS(s);
+ int i;
+
+ for (i = 0; i < ARRAY_SIZE(aspeed_soc_ast2700_gic_intcmap); i++) {
+ if (sc->irqmap[dev] == aspeed_soc_ast2700_gic_intcmap[i].irq) {
+ assert(aspeed_soc_ast2700_gic_intcmap[i].ptr);
+ orgate_info->index = i;
+ orgate_info->int_num = aspeed_soc_ast2700_gic_intcmap[i].ptr[dev];
+ return;
+ }
+ }
+
+ /*
+ * Invalid orgate index, device irq should be 128 to 136.
+ */
+ g_assert_not_reached();
+}
+
static uint64_t aspeed_ram_capacity_read(void *opaque, hwaddr addr,
unsigned int size)
{
--
2.34.1
- [PATCH v2 00/11] support I2C for AST2700, Jamin Lin, 2024/08/07
- [PATCH v2 01/11] hw/i2c/aspeed: support discontinuous register memory region of I2C bus, Jamin Lin, 2024/08/07
- [PATCH v2 02/11] hw/i2c/aspeed: introduce a new bus pool buffer attribute in AspeedI2Cbus, Jamin Lin, 2024/08/07
- [PATCH v2 03/11] hw/i2c/aspeed: support discontinuous poll buffer memory region of I2C bus, Jamin Lin, 2024/08/07
- [PATCH v2 04/11] hw/i2c/aspeed: introduce a new dma_dram_offset attribute in AspeedI2Cbus, Jamin Lin, 2024/08/07
- [PATCH v2 05/11] hw/i2c/aspeed: Add AST2700 support, Jamin Lin, 2024/08/07
- [PATCH v2 06/11] hw/i2c/aspeed: support Tx/Rx buffer 64 bits address, Jamin Lin, 2024/08/07
- [PATCH v2 07/11] hw/i2c/aspeed: support high part dram offset for DMA 64 bits, Jamin Lin, 2024/08/07
- [PATCH v2 08/11] aspeed/soc: introduce a new API to get the INTC orgate information,
Jamin Lin <=
- [PATCH v2 09/11] aspeed/soc: support I2C for AST2700, Jamin Lin, 2024/08/07
- [PATCH v2 10/11] aspeed: add tmp105 in i2c bus 0 for AST2700, Jamin Lin, 2024/08/07
- [PATCH v2 11/11] machine_aspeed.py: update to test I2C for AST2700, Jamin Lin, 2024/08/07