[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-trivial] [PATCH v2 05/14] sm501: Add emulation of chip connected v
From: |
BALATON Zoltan |
Subject: |
[Qemu-trivial] [PATCH v2 05/14] sm501: Add emulation of chip connected via PCI |
Date: |
Sat, 25 Feb 2017 19:31:24 +0100 |
Only the display controller part is created automatically on PCI
Signed-off-by: BALATON Zoltan <address@hidden>
---
v2: Split off removing dependency on base address to separate patch
hw/display/sm501.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 52 insertions(+)
diff --git a/hw/display/sm501.c b/hw/display/sm501.c
index 1cda127..d9219bd 100644
--- a/hw/display/sm501.c
+++ b/hw/display/sm501.c
@@ -31,6 +31,7 @@
#include "ui/console.h"
#include "hw/devices.h"
#include "hw/sysbus.h"
+#include "hw/pci/pci.h"
#include "qemu/range.h"
#include "ui/pixel_ops.h"
#include "exec/address-spaces.h"
@@ -1507,9 +1508,60 @@ static const TypeInfo sm501_sysbus_info = {
.class_init = sm501_sysbus_class_init,
};
+#define TYPE_PCI_SM501 "sm501"
+#define PCI_SM501(obj) OBJECT_CHECK(SM501PCIState, (obj), TYPE_PCI_SM501)
+
+typedef struct {
+ /*< private >*/
+ PCIDevice parent_obj;
+ /*< public >*/
+ SM501State state;
+ uint32_t vram_size;
+} SM501PCIState;
+
+static void sm501_realize_pci(PCIDevice *dev, Error **errp)
+{
+ SM501PCIState *s = PCI_SM501(dev);
+
+ sm501_init(&s->state, DEVICE(dev), s->vram_size);
+ pci_register_bar(dev, 0, PCI_BASE_ADDRESS_SPACE_MEMORY,
+ &s->state.local_mem_region);
+ pci_register_bar(dev, 1, PCI_BASE_ADDRESS_SPACE_MEMORY,
+ &s->state.mmio_region);
+}
+
+static Property sm501_pci_properties[] = {
+ DEFINE_PROP_UINT32("vram-size", SM501PCIState, vram_size,
+ 64 * 1024 * 1024),
+ DEFINE_PROP_END_OF_LIST(),
+};
+
+static void sm501_pci_class_init(ObjectClass *klass, void *data)
+{
+ DeviceClass *dc = DEVICE_CLASS(klass);
+ PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
+
+ k->realize = sm501_realize_pci;
+ k->vendor_id = 0x126f;
+ k->device_id = 0x0501;
+ k->class_id = PCI_CLASS_DISPLAY_OTHER;
+ set_bit(DEVICE_CATEGORY_DISPLAY, dc->categories);
+ dc->desc = "SM501 Display Controller";
+ dc->props = sm501_pci_properties;
+ dc->hotpluggable = false;
+}
+
+static const TypeInfo sm501_pci_info = {
+ .name = TYPE_PCI_SM501,
+ .parent = TYPE_PCI_DEVICE,
+ .instance_size = sizeof(SM501PCIState),
+ .class_init = sm501_pci_class_init,
+};
+
static void sm501_register_types(void)
{
type_register_static(&sm501_sysbus_info);
+ type_register_static(&sm501_pci_info);
}
type_init(sm501_register_types)
--
2.7.4
- [Qemu-trivial] [PATCH v2 00/14] Improvements for SM501 display controller emulation, BALATON Zoltan, 2017/02/25
- [Qemu-trivial] [PATCH v2 06/14] sm501: Add missing arbitration control register, BALATON Zoltan, 2017/02/25
- [Qemu-trivial] [PATCH v2 07/14] sm501: Fix device endianness, BALATON Zoltan, 2017/02/25
- [Qemu-trivial] [PATCH v2 05/14] sm501: Add emulation of chip connected via PCI,
BALATON Zoltan <=
- [Qemu-trivial] [PATCH v2 09/14] sm501: Misc clean ups, BALATON Zoltan, 2017/02/25
- [Qemu-trivial] [PATCH v2 14/14] ppc: Add SM501 device in config for ppc and ppcemb targets, BALATON Zoltan, 2017/02/25
- [Qemu-trivial] [PATCH v2 10/14] sm501: Add support for panel layer, BALATON Zoltan, 2017/02/25
- [Qemu-trivial] [PATCH v2 03/14] sm501: QOMify, BALATON Zoltan, 2017/02/25
- [Qemu-trivial] [PATCH v2 08/14] sm501: Fix hardware cursor, BALATON Zoltan, 2017/02/25
- [Qemu-trivial] [PATCH v2 02/14] sm501: Use defines instead of constants where available, BALATON Zoltan, 2017/02/25
- [Qemu-trivial] [PATCH v2 12/14] sm501: Implement reading 2D engine registers, BALATON Zoltan, 2017/02/25
- [Qemu-trivial] [PATCH v2 04/14] sm501: Get rid of base address in draw_hwc_line, BALATON Zoltan, 2017/02/25
- [Qemu-trivial] [PATCH v2 13/14] sm501: Add reset function and vmstate descriptor, BALATON Zoltan, 2017/02/25
- [Qemu-trivial] [PATCH v2 11/14] sm501: Add some more missing registers, BALATON Zoltan, 2017/02/25