[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v6 01/10] hw/fsi: Introduce IBM's Local bus
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [PATCH v6 01/10] hw/fsi: Introduce IBM's Local bus |
Date: |
Mon, 23 Oct 2023 16:58:12 +0200 |
User-agent: |
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 |
Hi Ninad and Andrew,
On 21/10/23 23:17, Ninad Palsule wrote:
This is a part of patchset where IBM's Flexible Service Interface is
introduced.
The LBUS is modelled to maintain the qdev bus hierarchy and to take
advantage of the object model to automatically generate the CFAM
configuration block. The configuration block presents engines in the
order they are attached to the CFAM's LBUS. Engine implementations
should subclass the LBusDevice and set the 'config' member of
LBusDeviceClass to match the engine's type.
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>
Signed-off-by: Ninad Palsule <ninad@linux.ibm.com>
---
v2:
- Incorporated Joel's review comments.
v5:
- Incorporated review comments by Cedric.
v6:
- Incorporated review comments by Cedric & Daniel.
---
include/hw/fsi/lbus.h | 43 ++++++++++++++++++++++++
hw/fsi/lbus.c | 76 +++++++++++++++++++++++++++++++++++++++++++
hw/Kconfig | 1 +
hw/fsi/Kconfig | 2 ++
hw/fsi/meson.build | 1 +
hw/meson.build | 1 +
6 files changed, 124 insertions(+)
create mode 100644 include/hw/fsi/lbus.h
create mode 100644 hw/fsi/lbus.c
create mode 100644 hw/fsi/Kconfig
create mode 100644 hw/fsi/meson.build
+#define TYPE_FSI_LBUS_DEVICE "fsi.lbus.device"
+OBJECT_DECLARE_TYPE(FSILBusDevice, FSILBusDeviceClass, FSI_LBUS_DEVICE)
+
+#define FSI_LBUS_MEM_REGION_SIZE (2 * 1024 * 1024)
+#define FSI_LBUSDEV_IOMEM_SIZE 0x400
+
+typedef struct FSILBusDevice {
+ DeviceState parent;
+
+ MemoryRegion iomem;
+ uint32_t address;
[1] 32-bit address,
+} FSILBusDevice;
+
diff --git a/hw/fsi/lbus.c b/hw/fsi/lbus.c
new file mode 100644
index 0000000000..50d926dbe2
--- /dev/null
+++ b/hw/fsi/lbus.c
@@ -0,0 +1,76 @@
+/*
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ * Copyright (C) 2023 IBM Corp.
+ *
+ * IBM Local bus where FSI slaves are connected
+ */
+
+#include "qemu/osdep.h"
+#include "qapi/error.h"
+#include "hw/fsi/lbus.h"
+
+#include "hw/qdev-properties.h"
+
+static void lbus_init(Object *o)
+{
+ FSILBus *lbus = FSI_LBUS(o);
+
+ memory_region_init(&lbus->mr, OBJECT(lbus), TYPE_FSI_LBUS,
+ FSI_LBUS_MEM_REGION_SIZE - FSI_LBUSDEV_IOMEM_SIZE);
+}
+
+static const TypeInfo lbus_info = {
+ .name = TYPE_FSI_LBUS,
+ .parent = TYPE_BUS,
+ .instance_init = lbus_init,
+ .instance_size = sizeof(FSILBus),
+};
+
+static Property lbus_device_props[] = {
+ DEFINE_PROP_UINT32("address", FSILBusDevice, address, 0),
[2] 32-bit address,
+ DEFINE_PROP_END_OF_LIST(),
+};
+
+DeviceState *lbus_create_device(FSILBus *bus, const char *type, uint32_t addr)
+{
+ DeviceState *ds;
+ BusState *state = BUS(bus);
+ FSILBusDevice *dev;
+
+ ds = qdev_new(type);
+ qdev_prop_set_uint8(ds, "address", addr);
[3] set 8-bit address but [1] and [2] declare as 32-bit.
+ qdev_realize_and_unref(ds, state, &error_fatal);
If you pass the bus as argument here, ...
+
+ dev = FSI_LBUS_DEVICE(ds);
+ memory_region_add_subregion(&bus->mr, dev->address,
+ &dev->iomem);
+
+ qdev_set_parent_bus(ds, state, &error_abort);
... why do you need that call here?
+
+ return ds;
+}
Thanks,
Phil.
- [PATCH v6 06/10] hw/fsi: Aspeed APB2OPB interface, (continued)
- [PATCH v6 06/10] hw/fsi: Aspeed APB2OPB interface, Ninad Palsule, 2023/10/21
- Re: [PATCH v6 06/10] hw/fsi: Aspeed APB2OPB interface, Cédric Le Goater, 2023/10/24
- Re: [PATCH v6 06/10] hw/fsi: Aspeed APB2OPB interface, Ninad Palsule, 2023/10/24
- Re: [PATCH v6 06/10] hw/fsi: Aspeed APB2OPB interface, Cédric Le Goater, 2023/10/24
- Re: [PATCH v6 06/10] hw/fsi: Aspeed APB2OPB interface, Ninad Palsule, 2023/10/24
- Re: [PATCH v6 06/10] hw/fsi: Aspeed APB2OPB interface, Ninad Palsule, 2023/10/26
- Re: [PATCH v6 06/10] hw/fsi: Aspeed APB2OPB interface, Andrew Jeffery, 2023/10/27
[PATCH v6 05/10] hw/fsi: IBM's On-chip Peripheral Bus, Ninad Palsule, 2023/10/21
[PATCH v6 04/10] hw/fsi: Introduce IBM's FSI, Ninad Palsule, 2023/10/21
[PATCH v6 01/10] hw/fsi: Introduce IBM's Local bus, Ninad Palsule, 2023/10/21
- Re: [PATCH v6 01/10] hw/fsi: Introduce IBM's Local bus,
Philippe Mathieu-Daudé <=
[PATCH v6 07/10] hw/arm: Hook up FSI module in AST2600, Ninad Palsule, 2023/10/21
[PATCH v6 08/10] hw/fsi: Added qtest, Ninad Palsule, 2023/10/21
[PATCH v6 10/10] hw/fsi: Update MAINTAINER list, Ninad Palsule, 2023/10/21
[PATCH v6 02/10] hw/fsi: Introduce IBM's scratchpad, Ninad Palsule, 2023/10/21