* [Qemu-devel] [PATCH 01/25] hw/isa: Move parallel_hds_isa_init() to hw/char/parallel-isa.c
2018-03-08 22:39 [Qemu-devel] [PATCH 00/25] remove i386/pc dependency: generic SuperIO Philippe Mathieu-Daudé
@ 2018-03-08 22:39 ` Philippe Mathieu-Daudé
2018-03-09 10:28 ` Mark Cave-Ayland
2018-03-08 22:39 ` [Qemu-devel] [PATCH 02/25] hw/dma/i8257: Rename DMA_init() to i8257_dma_init() Philippe Mathieu-Daudé
` (23 subsequent siblings)
24 siblings, 1 reply; 35+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-03-08 22:39 UTC (permalink / raw)
To: Michael S . Tsirkin, Paolo Bonzini, Hervé Poussineau,
Marcel Apfelbaum, Aurelien Jarno, Mark Cave-Ayland,
Alexey Kardashevskiy, Thomas Huth
Cc: Philippe Mathieu-Daudé,
qemu-devel, Richard Henderson, Eduardo Habkost, Yongbok Kim,
Artyom Tarasenko, Guan Xuetao
Again... (after 07dc788054d7 and 9157eee1b1c0).
We now extract the ISA bus specific helpers.
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
include/hw/char/parallel.h | 14 ++++++++++++++
include/hw/i386/pc.h | 8 --------
hw/char/parallel-isa.c | 36 ++++++++++++++++++++++++++++++++++++
hw/char/parallel.c | 2 +-
hw/i386/pc.c | 1 +
hw/isa/isa-bus.c | 26 --------------------------
hw/mips/mips_fulong2e.c | 1 +
hw/mips/mips_jazz.c | 1 +
hw/mips/mips_malta.c | 1 +
hw/sparc64/sun4u.c | 1 +
MAINTAINERS | 3 ++-
hw/char/Makefile.objs | 1 +
12 files changed, 59 insertions(+), 36 deletions(-)
create mode 100644 include/hw/char/parallel.h
create mode 100644 hw/char/parallel-isa.c
diff --git a/include/hw/char/parallel.h b/include/hw/char/parallel.h
new file mode 100644
index 0000000000..d6dd62fb9f
--- /dev/null
+++ b/include/hw/char/parallel.h
@@ -0,0 +1,14 @@
+#ifndef HW_PARALLEL_H
+#define HW_PARALLEL_H
+
+#include "exec/memory.h"
+#include "hw/isa/isa.h"
+#include "chardev/char.h"
+
+void parallel_hds_isa_init(ISABus *bus, int n);
+
+bool parallel_mm_init(MemoryRegion *address_space,
+ hwaddr base, int it_shift, qemu_irq irq,
+ Chardev *chr);
+
+#endif
diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index bb49165fe0..f1feb18c3c 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -151,14 +151,6 @@ struct PCMachineClass {
#define PC_MACHINE_CLASS(klass) \
OBJECT_CLASS_CHECK(PCMachineClass, (klass), TYPE_PC_MACHINE)
-/* parallel.c */
-
-void parallel_hds_isa_init(ISABus *bus, int n);
-
-bool parallel_mm_init(MemoryRegion *address_space,
- hwaddr base, int it_shift, qemu_irq irq,
- Chardev *chr);
-
/* i8259.c */
extern DeviceState *isa_pic;
diff --git a/hw/char/parallel-isa.c b/hw/char/parallel-isa.c
new file mode 100644
index 0000000000..639e179585
--- /dev/null
+++ b/hw/char/parallel-isa.c
@@ -0,0 +1,36 @@
+/*
+ * QEMU Parallel PORT (ISA bus helpers)
+ *
+ * Copyright (c) 2003 Fabrice Bellard
+ *
+ * SPDX-License-Identifier: MIT
+ */
+#include "qemu/osdep.h"
+#include "sysemu/sysemu.h"
+#include "hw/isa/isa.h"
+#include "hw/char/parallel.h"
+
+static void parallel_init(ISABus *bus, int index, Chardev *chr)
+{
+ DeviceState *dev;
+ ISADevice *isadev;
+
+ isadev = isa_create(bus, "isa-parallel");
+ dev = DEVICE(isadev);
+ qdev_prop_set_uint32(dev, "index", index);
+ qdev_prop_set_chr(dev, "chardev", chr);
+ qdev_init_nofail(dev);
+}
+
+void parallel_hds_isa_init(ISABus *bus, int n)
+{
+ int i;
+
+ assert(n <= MAX_PARALLEL_PORTS);
+
+ for (i = 0; i < n; i++) {
+ if (parallel_hds[i]) {
+ parallel_init(bus, i, parallel_hds[i]);
+ }
+ }
+}
diff --git a/hw/char/parallel.c b/hw/char/parallel.c
index f79dc76543..1542d62201 100644
--- a/hw/char/parallel.c
+++ b/hw/char/parallel.c
@@ -28,7 +28,7 @@
#include "chardev/char-parallel.h"
#include "chardev/char-fe.h"
#include "hw/isa/isa.h"
-#include "hw/i386/pc.h"
+#include "hw/char/parallel.h"
#include "sysemu/sysemu.h"
//#define DEBUG_PARALLEL
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 35fcb6efdf..81364932d3 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -26,6 +26,7 @@
#include "hw/hw.h"
#include "hw/i386/pc.h"
#include "hw/char/serial.h"
+#include "hw/char/parallel.h"
#include "hw/i386/apic.h"
#include "hw/i386/topology.h"
#include "sysemu/cpus.h"
diff --git a/hw/isa/isa-bus.c b/hw/isa/isa-bus.c
index 0f2e426d02..63fa77effc 100644
--- a/hw/isa/isa-bus.c
+++ b/hw/isa/isa-bus.c
@@ -24,7 +24,6 @@
#include "hw/sysbus.h"
#include "sysemu/sysemu.h"
#include "hw/isa/isa.h"
-#include "hw/i386/pc.h"
static ISABus *isabus;
@@ -288,28 +287,3 @@ MemoryRegion *isa_address_space_io(ISADevice *dev)
}
type_init(isabus_register_types)
-
-static void parallel_init(ISABus *bus, int index, Chardev *chr)
-{
- DeviceState *dev;
- ISADevice *isadev;
-
- isadev = isa_create(bus, "isa-parallel");
- dev = DEVICE(isadev);
- qdev_prop_set_uint32(dev, "index", index);
- qdev_prop_set_chr(dev, "chardev", chr);
- qdev_init_nofail(dev);
-}
-
-void parallel_hds_isa_init(ISABus *bus, int n)
-{
- int i;
-
- assert(n <= MAX_PARALLEL_PORTS);
-
- for (i = 0; i < n; i++) {
- if (parallel_hds[i]) {
- parallel_init(bus, i, parallel_hds[i]);
- }
- }
-}
diff --git a/hw/mips/mips_fulong2e.c b/hw/mips/mips_fulong2e.c
index f68c625666..dc77b55755 100644
--- a/hw/mips/mips_fulong2e.c
+++ b/hw/mips/mips_fulong2e.c
@@ -23,6 +23,7 @@
#include "hw/hw.h"
#include "hw/i386/pc.h"
#include "hw/char/serial.h"
+#include "hw/char/parallel.h"
#include "hw/block/fdc.h"
#include "net/net.h"
#include "hw/boards.h"
diff --git a/hw/mips/mips_jazz.c b/hw/mips/mips_jazz.c
index b09871a814..b24305b7b4 100644
--- a/hw/mips/mips_jazz.c
+++ b/hw/mips/mips_jazz.c
@@ -28,6 +28,7 @@
#include "hw/mips/cpudevs.h"
#include "hw/i386/pc.h"
#include "hw/char/serial.h"
+#include "hw/char/parallel.h"
#include "hw/isa/isa.h"
#include "hw/block/fdc.h"
#include "sysemu/sysemu.h"
diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c
index 6f0deb99e7..c74882c7e9 100644
--- a/hw/mips/mips_malta.c
+++ b/hw/mips/mips_malta.c
@@ -28,6 +28,7 @@
#include "hw/hw.h"
#include "hw/i386/pc.h"
#include "hw/char/serial.h"
+#include "hw/char/parallel.h"
#include "hw/block/fdc.h"
#include "net/net.h"
#include "hw/boards.h"
diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c
index da28ab9413..ceb1ba7eaf 100644
--- a/hw/sparc64/sun4u.c
+++ b/hw/sparc64/sun4u.c
@@ -34,6 +34,7 @@
#include "hw/pci-host/sabre.h"
#include "hw/i386/pc.h"
#include "hw/char/serial.h"
+#include "hw/char/parallel.h"
#include "hw/timer/m48t59.h"
#include "hw/block/fdc.h"
#include "net/net.h"
diff --git a/MAINTAINERS b/MAINTAINERS
index b7c4130388..c0f1620f3a 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -913,7 +913,7 @@ M: Michael S. Tsirkin <mst@redhat.com>
M: Paolo Bonzini <pbonzini@redhat.com>
S: Supported
F: hw/char/debugcon.c
-F: hw/char/parallel.c
+F: hw/char/parallel*
F: hw/char/serial*
F: hw/dma/i8257*
F: hw/i2c/pm_smbus.c
@@ -928,6 +928,7 @@ F: hw/timer/i8254*
F: hw/timer/mc146818rtc*
F: hw/watchdog/wdt_ib700.c
F: include/hw/display/vga.h
+F: include/hw/char/parallel.h
F: include/hw/i2c/pm_smbus.h
F: include/hw/isa/i8257.h
F: include/hw/timer/hpet.h
diff --git a/hw/char/Makefile.objs b/hw/char/Makefile.objs
index 1bcd37e98d..1b979100b7 100644
--- a/hw/char/Makefile.objs
+++ b/hw/char/Makefile.objs
@@ -1,6 +1,7 @@
common-obj-$(CONFIG_IPACK) += ipoctal232.o
common-obj-$(CONFIG_ESCC) += escc.o
common-obj-$(CONFIG_PARALLEL) += parallel.o
+common-obj-$(CONFIG_PARALLEL) += parallel-isa.o
common-obj-$(CONFIG_PL011) += pl011.o
common-obj-$(CONFIG_SERIAL) += serial.o
common-obj-$(CONFIG_SERIAL_ISA) += serial-isa.o
--
2.16.2
^ permalink raw reply related [flat|nested] 35+ messages in thread
* Re: [Qemu-devel] [PATCH 01/25] hw/isa: Move parallel_hds_isa_init() to hw/char/parallel-isa.c
2018-03-08 22:39 ` [Qemu-devel] [PATCH 01/25] hw/isa: Move parallel_hds_isa_init() to hw/char/parallel-isa.c Philippe Mathieu-Daudé
@ 2018-03-09 10:28 ` Mark Cave-Ayland
0 siblings, 0 replies; 35+ messages in thread
From: Mark Cave-Ayland @ 2018-03-09 10:28 UTC (permalink / raw)
To: Philippe Mathieu-Daudé,
Michael S . Tsirkin, Paolo Bonzini, Hervé Poussineau,
Marcel Apfelbaum, Aurelien Jarno, Alexey Kardashevskiy,
Thomas Huth
Cc: Eduardo Habkost, qemu-devel, Guan Xuetao, Yongbok Kim,
Artyom Tarasenko, Richard Henderson
On 08/03/18 22:39, Philippe Mathieu-Daudé wrote:
> Again... (after 07dc788054d7 and 9157eee1b1c0).
>
> We now extract the ISA bus specific helpers.
>
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
> include/hw/char/parallel.h | 14 ++++++++++++++
> include/hw/i386/pc.h | 8 --------
> hw/char/parallel-isa.c | 36 ++++++++++++++++++++++++++++++++++++
> hw/char/parallel.c | 2 +-
> hw/i386/pc.c | 1 +
> hw/isa/isa-bus.c | 26 --------------------------
> hw/mips/mips_fulong2e.c | 1 +
> hw/mips/mips_jazz.c | 1 +
> hw/mips/mips_malta.c | 1 +
> hw/sparc64/sun4u.c | 1 +
> MAINTAINERS | 3 ++-
> hw/char/Makefile.objs | 1 +
> 12 files changed, 59 insertions(+), 36 deletions(-)
> create mode 100644 include/hw/char/parallel.h
> create mode 100644 hw/char/parallel-isa.c
>
> diff --git a/include/hw/char/parallel.h b/include/hw/char/parallel.h
> new file mode 100644
> index 0000000000..d6dd62fb9f
> --- /dev/null
> +++ b/include/hw/char/parallel.h
> @@ -0,0 +1,14 @@
> +#ifndef HW_PARALLEL_H
> +#define HW_PARALLEL_H
> +
> +#include "exec/memory.h"
> +#include "hw/isa/isa.h"
> +#include "chardev/char.h"
> +
> +void parallel_hds_isa_init(ISABus *bus, int n);
> +
> +bool parallel_mm_init(MemoryRegion *address_space,
> + hwaddr base, int it_shift, qemu_irq irq,
> + Chardev *chr);
> +
> +#endif
> diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
> index bb49165fe0..f1feb18c3c 100644
> --- a/include/hw/i386/pc.h
> +++ b/include/hw/i386/pc.h
> @@ -151,14 +151,6 @@ struct PCMachineClass {
> #define PC_MACHINE_CLASS(klass) \
> OBJECT_CLASS_CHECK(PCMachineClass, (klass), TYPE_PC_MACHINE)
>
> -/* parallel.c */
> -
> -void parallel_hds_isa_init(ISABus *bus, int n);
> -
> -bool parallel_mm_init(MemoryRegion *address_space,
> - hwaddr base, int it_shift, qemu_irq irq,
> - Chardev *chr);
> -
> /* i8259.c */
>
> extern DeviceState *isa_pic;
> diff --git a/hw/char/parallel-isa.c b/hw/char/parallel-isa.c
> new file mode 100644
> index 0000000000..639e179585
> --- /dev/null
> +++ b/hw/char/parallel-isa.c
> @@ -0,0 +1,36 @@
> +/*
> + * QEMU Parallel PORT (ISA bus helpers)
> + *
> + * Copyright (c) 2003 Fabrice Bellard
> + *
> + * SPDX-License-Identifier: MIT
> + */
> +#include "qemu/osdep.h"
> +#include "sysemu/sysemu.h"
> +#include "hw/isa/isa.h"
> +#include "hw/char/parallel.h"
> +
> +static void parallel_init(ISABus *bus, int index, Chardev *chr)
> +{
> + DeviceState *dev;
> + ISADevice *isadev;
> +
> + isadev = isa_create(bus, "isa-parallel");
> + dev = DEVICE(isadev);
> + qdev_prop_set_uint32(dev, "index", index);
> + qdev_prop_set_chr(dev, "chardev", chr);
> + qdev_init_nofail(dev);
> +}
> +
> +void parallel_hds_isa_init(ISABus *bus, int n)
> +{
> + int i;
> +
> + assert(n <= MAX_PARALLEL_PORTS);
> +
> + for (i = 0; i < n; i++) {
> + if (parallel_hds[i]) {
> + parallel_init(bus, i, parallel_hds[i]);
> + }
> + }
> +}
> diff --git a/hw/char/parallel.c b/hw/char/parallel.c
> index f79dc76543..1542d62201 100644
> --- a/hw/char/parallel.c
> +++ b/hw/char/parallel.c
> @@ -28,7 +28,7 @@
> #include "chardev/char-parallel.h"
> #include "chardev/char-fe.h"
> #include "hw/isa/isa.h"
> -#include "hw/i386/pc.h"
> +#include "hw/char/parallel.h"
> #include "sysemu/sysemu.h"
>
> //#define DEBUG_PARALLEL
> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
> index 35fcb6efdf..81364932d3 100644
> --- a/hw/i386/pc.c
> +++ b/hw/i386/pc.c
> @@ -26,6 +26,7 @@
> #include "hw/hw.h"
> #include "hw/i386/pc.h"
> #include "hw/char/serial.h"
> +#include "hw/char/parallel.h"
> #include "hw/i386/apic.h"
> #include "hw/i386/topology.h"
> #include "sysemu/cpus.h"
> diff --git a/hw/isa/isa-bus.c b/hw/isa/isa-bus.c
> index 0f2e426d02..63fa77effc 100644
> --- a/hw/isa/isa-bus.c
> +++ b/hw/isa/isa-bus.c
> @@ -24,7 +24,6 @@
> #include "hw/sysbus.h"
> #include "sysemu/sysemu.h"
> #include "hw/isa/isa.h"
> -#include "hw/i386/pc.h"
>
> static ISABus *isabus;
>
> @@ -288,28 +287,3 @@ MemoryRegion *isa_address_space_io(ISADevice *dev)
> }
>
> type_init(isabus_register_types)
> -
> -static void parallel_init(ISABus *bus, int index, Chardev *chr)
> -{
> - DeviceState *dev;
> - ISADevice *isadev;
> -
> - isadev = isa_create(bus, "isa-parallel");
> - dev = DEVICE(isadev);
> - qdev_prop_set_uint32(dev, "index", index);
> - qdev_prop_set_chr(dev, "chardev", chr);
> - qdev_init_nofail(dev);
> -}
> -
> -void parallel_hds_isa_init(ISABus *bus, int n)
> -{
> - int i;
> -
> - assert(n <= MAX_PARALLEL_PORTS);
> -
> - for (i = 0; i < n; i++) {
> - if (parallel_hds[i]) {
> - parallel_init(bus, i, parallel_hds[i]);
> - }
> - }
> -}
> diff --git a/hw/mips/mips_fulong2e.c b/hw/mips/mips_fulong2e.c
> index f68c625666..dc77b55755 100644
> --- a/hw/mips/mips_fulong2e.c
> +++ b/hw/mips/mips_fulong2e.c
> @@ -23,6 +23,7 @@
> #include "hw/hw.h"
> #include "hw/i386/pc.h"
> #include "hw/char/serial.h"
> +#include "hw/char/parallel.h"
> #include "hw/block/fdc.h"
> #include "net/net.h"
> #include "hw/boards.h"
> diff --git a/hw/mips/mips_jazz.c b/hw/mips/mips_jazz.c
> index b09871a814..b24305b7b4 100644
> --- a/hw/mips/mips_jazz.c
> +++ b/hw/mips/mips_jazz.c
> @@ -28,6 +28,7 @@
> #include "hw/mips/cpudevs.h"
> #include "hw/i386/pc.h"
> #include "hw/char/serial.h"
> +#include "hw/char/parallel.h"
> #include "hw/isa/isa.h"
> #include "hw/block/fdc.h"
> #include "sysemu/sysemu.h"
> diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c
> index 6f0deb99e7..c74882c7e9 100644
> --- a/hw/mips/mips_malta.c
> +++ b/hw/mips/mips_malta.c
> @@ -28,6 +28,7 @@
> #include "hw/hw.h"
> #include "hw/i386/pc.h"
> #include "hw/char/serial.h"
> +#include "hw/char/parallel.h"
> #include "hw/block/fdc.h"
> #include "net/net.h"
> #include "hw/boards.h"
> diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c
> index da28ab9413..ceb1ba7eaf 100644
> --- a/hw/sparc64/sun4u.c
> +++ b/hw/sparc64/sun4u.c
> @@ -34,6 +34,7 @@
> #include "hw/pci-host/sabre.h"
> #include "hw/i386/pc.h"
> #include "hw/char/serial.h"
> +#include "hw/char/parallel.h"
> #include "hw/timer/m48t59.h"
> #include "hw/block/fdc.h"
> #include "net/net.h"
> diff --git a/MAINTAINERS b/MAINTAINERS
> index b7c4130388..c0f1620f3a 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -913,7 +913,7 @@ M: Michael S. Tsirkin <mst@redhat.com>
> M: Paolo Bonzini <pbonzini@redhat.com>
> S: Supported
> F: hw/char/debugcon.c
> -F: hw/char/parallel.c
> +F: hw/char/parallel*
> F: hw/char/serial*
> F: hw/dma/i8257*
> F: hw/i2c/pm_smbus.c
> @@ -928,6 +928,7 @@ F: hw/timer/i8254*
> F: hw/timer/mc146818rtc*
> F: hw/watchdog/wdt_ib700.c
> F: include/hw/display/vga.h
> +F: include/hw/char/parallel.h
> F: include/hw/i2c/pm_smbus.h
> F: include/hw/isa/i8257.h
> F: include/hw/timer/hpet.h
> diff --git a/hw/char/Makefile.objs b/hw/char/Makefile.objs
> index 1bcd37e98d..1b979100b7 100644
> --- a/hw/char/Makefile.objs
> +++ b/hw/char/Makefile.objs
> @@ -1,6 +1,7 @@
> common-obj-$(CONFIG_IPACK) += ipoctal232.o
> common-obj-$(CONFIG_ESCC) += escc.o
> common-obj-$(CONFIG_PARALLEL) += parallel.o
> +common-obj-$(CONFIG_PARALLEL) += parallel-isa.o
> common-obj-$(CONFIG_PL011) += pl011.o
> common-obj-$(CONFIG_SERIAL) += serial.o
> common-obj-$(CONFIG_SERIAL_ISA) += serial-isa.o
>
For sun4u:
Reviewed-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
ATB,
Mark.
^ permalink raw reply [flat|nested] 35+ messages in thread
* [Qemu-devel] [PATCH 02/25] hw/dma/i8257: Rename DMA_init() to i8257_dma_init()
2018-03-08 22:39 [Qemu-devel] [PATCH 00/25] remove i386/pc dependency: generic SuperIO Philippe Mathieu-Daudé
2018-03-08 22:39 ` [Qemu-devel] [PATCH 01/25] hw/isa: Move parallel_hds_isa_init() to hw/char/parallel-isa.c Philippe Mathieu-Daudé
@ 2018-03-08 22:39 ` Philippe Mathieu-Daudé
2018-03-09 10:32 ` Mark Cave-Ayland
2018-03-08 22:39 ` [Qemu-devel] [PATCH 03/25] hw/input/i8042: Extract declarations from i386/pc.h into input/i8042.h Philippe Mathieu-Daudé
` (22 subsequent siblings)
24 siblings, 1 reply; 35+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-03-08 22:39 UTC (permalink / raw)
To: Michael S . Tsirkin, Paolo Bonzini, Hervé Poussineau,
Marcel Apfelbaum, Aurelien Jarno, Mark Cave-Ayland,
Alexey Kardashevskiy, Thomas Huth
Cc: Philippe Mathieu-Daudé,
qemu-devel, Richard Henderson, Eduardo Habkost, Yongbok Kim,
Artyom Tarasenko, Guan Xuetao, open list:PReP
- Move the header from hw/isa/ to hw/dma/
- Remove the old i386/pc dependency
- use a bool type for the high_page_enable argument
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
include/hw/{isa => dma}/i8257.h | 6 ++++++
include/hw/isa/isa.h | 2 --
hw/dma/i82374.c | 3 ++-
hw/dma/i8257.c | 4 ++--
hw/i386/pc.c | 3 ++-
hw/mips/mips_fulong2e.c | 3 ++-
hw/mips/mips_jazz.c | 3 ++-
hw/mips/mips_malta.c | 3 ++-
hw/sparc/sun4m.c | 4 ----
hw/sparc64/sun4u.c | 4 ----
MAINTAINERS | 2 +-
11 files changed, 19 insertions(+), 18 deletions(-)
rename include/hw/{isa => dma}/i8257.h (86%)
diff --git a/include/hw/isa/i8257.h b/include/hw/dma/i8257.h
similarity index 86%
rename from include/hw/isa/i8257.h
rename to include/hw/dma/i8257.h
index 88a2766a3f..2cab50bb6c 100644
--- a/include/hw/isa/i8257.h
+++ b/include/hw/dma/i8257.h
@@ -1,6 +1,10 @@
#ifndef HW_I8257_H
#define HW_I8257_H
+#include "hw/hw.h"
+#include "hw/isa/isa.h"
+#include "exec/ioport.h"
+
#define TYPE_I8257 "i8257"
typedef struct I8257Regs {
@@ -40,4 +44,6 @@ typedef struct I8257State {
PortioList portio_pageh;
} I8257State;
+void i8257_dma_init(ISABus *bus, bool high_page_enable);
+
#endif
diff --git a/include/hw/isa/isa.h b/include/hw/isa/isa.h
index 95593408ef..b9dbab24b4 100644
--- a/include/hw/isa/isa.h
+++ b/include/hw/isa/isa.h
@@ -151,6 +151,4 @@ static inline ISABus *isa_bus_from_device(ISADevice *d)
return ISA_BUS(qdev_get_parent_bus(DEVICE(d)));
}
-/* i8257.c */
-void DMA_init(ISABus *bus, int high_page_enable);
#endif
diff --git a/hw/dma/i82374.c b/hw/dma/i82374.c
index 6c0f975df0..83c87d92e0 100644
--- a/hw/dma/i82374.c
+++ b/hw/dma/i82374.c
@@ -24,6 +24,7 @@
#include "qemu/osdep.h"
#include "hw/isa/isa.h"
+#include "hw/dma/i8257.h"
#define TYPE_I82374 "i82374"
#define I82374(obj) OBJECT_CHECK(I82374State, (obj), TYPE_I82374)
@@ -123,7 +124,7 @@ static void i82374_realize(DeviceState *dev, Error **errp)
portio_list_add(&s->port_list, isa_address_space_io(&s->parent_obj),
s->iobase);
- DMA_init(isa_bus_from_device(ISA_DEVICE(dev)), 1);
+ i8257_dma_init(isa_bus_from_device(ISA_DEVICE(dev)), true);
memset(s->commands, 0, sizeof(s->commands));
}
diff --git a/hw/dma/i8257.c b/hw/dma/i8257.c
index bd23e893bf..52675e97c9 100644
--- a/hw/dma/i8257.c
+++ b/hw/dma/i8257.c
@@ -24,7 +24,7 @@
#include "qemu/osdep.h"
#include "hw/hw.h"
#include "hw/isa/isa.h"
-#include "hw/isa/i8257.h"
+#include "hw/dma/i8257.h"
#include "qemu/main-loop.h"
#include "trace.h"
@@ -622,7 +622,7 @@ static void i8257_register_types(void)
type_init(i8257_register_types)
-void DMA_init(ISABus *bus, int high_page_enable)
+void i8257_dma_init(ISABus *bus, bool high_page_enable)
{
ISADevice *isa1, *isa2;
DeviceState *d;
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 81364932d3..ec75b09a8f 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -41,6 +41,7 @@
#include "elf.h"
#include "multiboot.h"
#include "hw/timer/mc146818rtc.h"
+#include "hw/dma/i8257.h"
#include "hw/timer/i8254.h"
#include "hw/audio/pcspk.h"
#include "hw/pci/msi.h"
@@ -1609,7 +1610,7 @@ void pc_basic_device_init(ISABus *isa_bus, qemu_irq *gsi,
port92_init(port92, a20_line[1]);
g_free(a20_line);
- DMA_init(isa_bus, 0);
+ i8257_dma_init(isa_bus, 0);
for(i = 0; i < MAX_FD; i++) {
fd[i] = drive_get(IF_FLOPPY, 0, i);
diff --git a/hw/mips/mips_fulong2e.c b/hw/mips/mips_fulong2e.c
index dc77b55755..0545fcd899 100644
--- a/hw/mips/mips_fulong2e.c
+++ b/hw/mips/mips_fulong2e.c
@@ -22,6 +22,7 @@
#include "qapi/error.h"
#include "hw/hw.h"
#include "hw/i386/pc.h"
+#include "hw/dma/i8257.h"
#include "hw/char/serial.h"
#include "hw/char/parallel.h"
#include "hw/block/fdc.h"
@@ -360,7 +361,7 @@ static void mips_fulong2e_init(MachineState *machine)
/* init other devices */
pit = i8254_pit_init(isa_bus, 0x40, 0, NULL);
- DMA_init(isa_bus, 0);
+ i8257_dma_init(isa_bus, 0);
/* Super I/O */
isa_create_simple(isa_bus, "i8042");
diff --git a/hw/mips/mips_jazz.c b/hw/mips/mips_jazz.c
index b24305b7b4..827ffdcd4a 100644
--- a/hw/mips/mips_jazz.c
+++ b/hw/mips/mips_jazz.c
@@ -27,6 +27,7 @@
#include "hw/mips/mips.h"
#include "hw/mips/cpudevs.h"
#include "hw/i386/pc.h"
+#include "hw/dma/i8257.h"
#include "hw/char/serial.h"
#include "hw/char/parallel.h"
#include "hw/isa/isa.h"
@@ -220,7 +221,7 @@ static void mips_jazz_init(MachineState *machine,
/* ISA devices */
i8259 = i8259_init(isa_bus, env->irq[4]);
isa_bus_irqs(isa_bus, i8259);
- DMA_init(isa_bus, 0);
+ i8257_dma_init(isa_bus, 0);
pit = i8254_pit_init(isa_bus, 0x40, 0, NULL);
pcspk_init(isa_bus, pit);
diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c
index c74882c7e9..9cb86c432e 100644
--- a/hw/mips/mips_malta.c
+++ b/hw/mips/mips_malta.c
@@ -27,6 +27,7 @@
#include "cpu.h"
#include "hw/hw.h"
#include "hw/i386/pc.h"
+#include "hw/dma/i8257.h"
#include "hw/char/serial.h"
#include "hw/char/parallel.h"
#include "hw/block/fdc.h"
@@ -1209,7 +1210,7 @@ void mips_malta_init(MachineState *machine)
smbus_eeprom_init(smbus, 8, smbus_eeprom_buf, smbus_eeprom_size);
g_free(smbus_eeprom_buf);
pit = i8254_pit_init(isa_bus, 0x40, 0, NULL);
- DMA_init(isa_bus, 0);
+ i8257_dma_init(isa_bus, 0);
/* Super I/O */
isa_create_simple(isa_bus, "i8042");
diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c
index 0f5804b3b4..fa1bfd6c92 100644
--- a/hw/sparc/sun4m.c
+++ b/hw/sparc/sun4m.c
@@ -99,10 +99,6 @@ struct sun4m_hwdef {
uint8_t nvram_machine_id;
};
-void DMA_init(ISABus *bus, int high_page_enable)
-{
-}
-
static void fw_cfg_boot_set(void *opaque, const char *boot_device,
Error **errp)
{
diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c
index ceb1ba7eaf..0ca0243821 100644
--- a/hw/sparc64/sun4u.c
+++ b/hw/sparc64/sun4u.c
@@ -90,10 +90,6 @@ typedef struct EbusState {
#define TYPE_EBUS "ebus"
#define EBUS(obj) OBJECT_CHECK(EbusState, (obj), TYPE_EBUS)
-void DMA_init(ISABus *bus, int high_page_enable)
-{
-}
-
static void fw_cfg_boot_set(void *opaque, const char *boot_device,
Error **errp)
{
diff --git a/MAINTAINERS b/MAINTAINERS
index c0f1620f3a..335c6c9f65 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -929,8 +929,8 @@ F: hw/timer/mc146818rtc*
F: hw/watchdog/wdt_ib700.c
F: include/hw/display/vga.h
F: include/hw/char/parallel.h
+F: include/hw/dma/i8257.h
F: include/hw/i2c/pm_smbus.h
-F: include/hw/isa/i8257.h
F: include/hw/timer/hpet.h
F: include/hw/timer/i8254*
F: include/hw/timer/mc146818rtc*
--
2.16.2
^ permalink raw reply related [flat|nested] 35+ messages in thread
* Re: [Qemu-devel] [PATCH 02/25] hw/dma/i8257: Rename DMA_init() to i8257_dma_init()
2018-03-08 22:39 ` [Qemu-devel] [PATCH 02/25] hw/dma/i8257: Rename DMA_init() to i8257_dma_init() Philippe Mathieu-Daudé
@ 2018-03-09 10:32 ` Mark Cave-Ayland
2018-03-09 10:43 ` Philippe Mathieu-Daudé
0 siblings, 1 reply; 35+ messages in thread
From: Mark Cave-Ayland @ 2018-03-09 10:32 UTC (permalink / raw)
To: Philippe Mathieu-Daudé,
Michael S . Tsirkin, Paolo Bonzini, Hervé Poussineau,
Marcel Apfelbaum, Aurelien Jarno, Alexey Kardashevskiy,
Thomas Huth
Cc: Eduardo Habkost, qemu-devel, open list:PReP, Guan Xuetao,
Yongbok Kim, Artyom Tarasenko, Richard Henderson
On 08/03/18 22:39, Philippe Mathieu-Daudé wrote:
> - Move the header from hw/isa/ to hw/dma/
> - Remove the old i386/pc dependency
> - use a bool type for the high_page_enable argument
>
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
> include/hw/{isa => dma}/i8257.h | 6 ++++++
> include/hw/isa/isa.h | 2 --
> hw/dma/i82374.c | 3 ++-
> hw/dma/i8257.c | 4 ++--
> hw/i386/pc.c | 3 ++-
> hw/mips/mips_fulong2e.c | 3 ++-
> hw/mips/mips_jazz.c | 3 ++-
> hw/mips/mips_malta.c | 3 ++-
> hw/sparc/sun4m.c | 4 ----
> hw/sparc64/sun4u.c | 4 ----
> MAINTAINERS | 2 +-
> 11 files changed, 19 insertions(+), 18 deletions(-)
> rename include/hw/{isa => dma}/i8257.h (86%)
>
> diff --git a/include/hw/isa/i8257.h b/include/hw/dma/i8257.h
> similarity index 86%
> rename from include/hw/isa/i8257.h
> rename to include/hw/dma/i8257.h
> index 88a2766a3f..2cab50bb6c 100644
> --- a/include/hw/isa/i8257.h
> +++ b/include/hw/dma/i8257.h
> @@ -1,6 +1,10 @@
> #ifndef HW_I8257_H
> #define HW_I8257_H
>
> +#include "hw/hw.h"
> +#include "hw/isa/isa.h"
> +#include "exec/ioport.h"
> +
> #define TYPE_I8257 "i8257"
>
> typedef struct I8257Regs {
> @@ -40,4 +44,6 @@ typedef struct I8257State {
> PortioList portio_pageh;
> } I8257State;
>
> +void i8257_dma_init(ISABus *bus, bool high_page_enable);
> +
> #endif
> diff --git a/include/hw/isa/isa.h b/include/hw/isa/isa.h
> index 95593408ef..b9dbab24b4 100644
> --- a/include/hw/isa/isa.h
> +++ b/include/hw/isa/isa.h
> @@ -151,6 +151,4 @@ static inline ISABus *isa_bus_from_device(ISADevice *d)
> return ISA_BUS(qdev_get_parent_bus(DEVICE(d)));
> }
>
> -/* i8257.c */
> -void DMA_init(ISABus *bus, int high_page_enable);
> #endif
> diff --git a/hw/dma/i82374.c b/hw/dma/i82374.c
> index 6c0f975df0..83c87d92e0 100644
> --- a/hw/dma/i82374.c
> +++ b/hw/dma/i82374.c
> @@ -24,6 +24,7 @@
>
> #include "qemu/osdep.h"
> #include "hw/isa/isa.h"
> +#include "hw/dma/i8257.h"
>
> #define TYPE_I82374 "i82374"
> #define I82374(obj) OBJECT_CHECK(I82374State, (obj), TYPE_I82374)
> @@ -123,7 +124,7 @@ static void i82374_realize(DeviceState *dev, Error **errp)
> portio_list_add(&s->port_list, isa_address_space_io(&s->parent_obj),
> s->iobase);
>
> - DMA_init(isa_bus_from_device(ISA_DEVICE(dev)), 1);
> + i8257_dma_init(isa_bus_from_device(ISA_DEVICE(dev)), true);
> memset(s->commands, 0, sizeof(s->commands));
> }
>
> diff --git a/hw/dma/i8257.c b/hw/dma/i8257.c
> index bd23e893bf..52675e97c9 100644
> --- a/hw/dma/i8257.c
> +++ b/hw/dma/i8257.c
> @@ -24,7 +24,7 @@
> #include "qemu/osdep.h"
> #include "hw/hw.h"
> #include "hw/isa/isa.h"
> -#include "hw/isa/i8257.h"
> +#include "hw/dma/i8257.h"
> #include "qemu/main-loop.h"
> #include "trace.h"
>
> @@ -622,7 +622,7 @@ static void i8257_register_types(void)
>
> type_init(i8257_register_types)
>
> -void DMA_init(ISABus *bus, int high_page_enable)
> +void i8257_dma_init(ISABus *bus, bool high_page_enable)
> {
> ISADevice *isa1, *isa2;
> DeviceState *d;
> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
> index 81364932d3..ec75b09a8f 100644
> --- a/hw/i386/pc.c
> +++ b/hw/i386/pc.c
> @@ -41,6 +41,7 @@
> #include "elf.h"
> #include "multiboot.h"
> #include "hw/timer/mc146818rtc.h"
> +#include "hw/dma/i8257.h"
> #include "hw/timer/i8254.h"
> #include "hw/audio/pcspk.h"
> #include "hw/pci/msi.h"
> @@ -1609,7 +1610,7 @@ void pc_basic_device_init(ISABus *isa_bus, qemu_irq *gsi,
> port92_init(port92, a20_line[1]);
> g_free(a20_line);
>
> - DMA_init(isa_bus, 0);
> + i8257_dma_init(isa_bus, 0);
>
> for(i = 0; i < MAX_FD; i++) {
> fd[i] = drive_get(IF_FLOPPY, 0, i);
> diff --git a/hw/mips/mips_fulong2e.c b/hw/mips/mips_fulong2e.c
> index dc77b55755..0545fcd899 100644
> --- a/hw/mips/mips_fulong2e.c
> +++ b/hw/mips/mips_fulong2e.c
> @@ -22,6 +22,7 @@
> #include "qapi/error.h"
> #include "hw/hw.h"
> #include "hw/i386/pc.h"
> +#include "hw/dma/i8257.h"
> #include "hw/char/serial.h"
> #include "hw/char/parallel.h"
> #include "hw/block/fdc.h"
> @@ -360,7 +361,7 @@ static void mips_fulong2e_init(MachineState *machine)
>
> /* init other devices */
> pit = i8254_pit_init(isa_bus, 0x40, 0, NULL);
> - DMA_init(isa_bus, 0);
> + i8257_dma_init(isa_bus, 0);
>
> /* Super I/O */
> isa_create_simple(isa_bus, "i8042");
> diff --git a/hw/mips/mips_jazz.c b/hw/mips/mips_jazz.c
> index b24305b7b4..827ffdcd4a 100644
> --- a/hw/mips/mips_jazz.c
> +++ b/hw/mips/mips_jazz.c
> @@ -27,6 +27,7 @@
> #include "hw/mips/mips.h"
> #include "hw/mips/cpudevs.h"
> #include "hw/i386/pc.h"
> +#include "hw/dma/i8257.h"
> #include "hw/char/serial.h"
> #include "hw/char/parallel.h"
> #include "hw/isa/isa.h"
> @@ -220,7 +221,7 @@ static void mips_jazz_init(MachineState *machine,
> /* ISA devices */
> i8259 = i8259_init(isa_bus, env->irq[4]);
> isa_bus_irqs(isa_bus, i8259);
> - DMA_init(isa_bus, 0);
> + i8257_dma_init(isa_bus, 0);
> pit = i8254_pit_init(isa_bus, 0x40, 0, NULL);
> pcspk_init(isa_bus, pit);
>
> diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c
> index c74882c7e9..9cb86c432e 100644
> --- a/hw/mips/mips_malta.c
> +++ b/hw/mips/mips_malta.c
> @@ -27,6 +27,7 @@
> #include "cpu.h"
> #include "hw/hw.h"
> #include "hw/i386/pc.h"
> +#include "hw/dma/i8257.h"
> #include "hw/char/serial.h"
> #include "hw/char/parallel.h"
> #include "hw/block/fdc.h"
> @@ -1209,7 +1210,7 @@ void mips_malta_init(MachineState *machine)
> smbus_eeprom_init(smbus, 8, smbus_eeprom_buf, smbus_eeprom_size);
> g_free(smbus_eeprom_buf);
> pit = i8254_pit_init(isa_bus, 0x40, 0, NULL);
> - DMA_init(isa_bus, 0);
> + i8257_dma_init(isa_bus, 0);
>
> /* Super I/O */
> isa_create_simple(isa_bus, "i8042");
> diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c
> index 0f5804b3b4..fa1bfd6c92 100644
> --- a/hw/sparc/sun4m.c
> +++ b/hw/sparc/sun4m.c
> @@ -99,10 +99,6 @@ struct sun4m_hwdef {
> uint8_t nvram_machine_id;
> };
>
> -void DMA_init(ISABus *bus, int high_page_enable)
> -{
> -}
> -
> static void fw_cfg_boot_set(void *opaque, const char *boot_device,
> Error **errp)
> {
> diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c
> index ceb1ba7eaf..0ca0243821 100644
> --- a/hw/sparc64/sun4u.c
> +++ b/hw/sparc64/sun4u.c
> @@ -90,10 +90,6 @@ typedef struct EbusState {
> #define TYPE_EBUS "ebus"
> #define EBUS(obj) OBJECT_CHECK(EbusState, (obj), TYPE_EBUS)
>
> -void DMA_init(ISABus *bus, int high_page_enable)
> -{
> -}
> -
> static void fw_cfg_boot_set(void *opaque, const char *boot_device,
> Error **errp)
> {
> diff --git a/MAINTAINERS b/MAINTAINERS
> index c0f1620f3a..335c6c9f65 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -929,8 +929,8 @@ F: hw/timer/mc146818rtc*
> F: hw/watchdog/wdt_ib700.c
> F: include/hw/display/vga.h
> F: include/hw/char/parallel.h
> +F: include/hw/dma/i8257.h
> F: include/hw/i2c/pm_smbus.h
> -F: include/hw/isa/i8257.h
> F: include/hw/timer/hpet.h
> F: include/hw/timer/i8254*
> F: include/hw/timer/mc146818rtc*
>
Presumably these DMA_init() functions have been unused on sun4u/sun4m
for a while which is why they are being removed? Might be worth a
mention of this in the commit message.
ATB,
Mark.
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [Qemu-devel] [PATCH 02/25] hw/dma/i8257: Rename DMA_init() to i8257_dma_init()
2018-03-09 10:32 ` Mark Cave-Ayland
@ 2018-03-09 10:43 ` Philippe Mathieu-Daudé
2018-03-09 12:19 ` Mark Cave-Ayland
0 siblings, 1 reply; 35+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-03-09 10:43 UTC (permalink / raw)
To: Mark Cave-Ayland, Michael S . Tsirkin, Paolo Bonzini,
Hervé Poussineau, Marcel Apfelbaum, Aurelien Jarno,
Alexey Kardashevskiy, Thomas Huth
Cc: Eduardo Habkost, qemu-devel, open list:PReP, Guan Xuetao,
Yongbok Kim, Artyom Tarasenko, Richard Henderson
Hi Mark,
On 03/09/2018 11:32 AM, Mark Cave-Ayland wrote:
> On 08/03/18 22:39, Philippe Mathieu-Daudé wrote:
>
>> - Move the header from hw/isa/ to hw/dma/
>> - Remove the old i386/pc dependency
>> - use a bool type for the high_page_enable argument
>>
>> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>> ---
>> include/hw/{isa => dma}/i8257.h | 6 ++++++
>> include/hw/isa/isa.h | 2 --
>> hw/dma/i82374.c | 3 ++-
>> hw/dma/i8257.c | 4 ++--
>> hw/i386/pc.c | 3 ++-
>> hw/mips/mips_fulong2e.c | 3 ++-
>> hw/mips/mips_jazz.c | 3 ++-
>> hw/mips/mips_malta.c | 3 ++-
>> hw/sparc/sun4m.c | 4 ----
>> hw/sparc64/sun4u.c | 4 ----
>> MAINTAINERS | 2 +-
>> 11 files changed, 19 insertions(+), 18 deletions(-)
>> rename include/hw/{isa => dma}/i8257.h (86%)
>>
>> diff --git a/include/hw/isa/i8257.h b/include/hw/dma/i8257.h
>> similarity index 86%
>> rename from include/hw/isa/i8257.h
>> rename to include/hw/dma/i8257.h
>> index 88a2766a3f..2cab50bb6c 100644
>> --- a/include/hw/isa/i8257.h
>> +++ b/include/hw/dma/i8257.h
>> @@ -1,6 +1,10 @@
>> #ifndef HW_I8257_H
>> #define HW_I8257_H
>> +#include "hw/hw.h"
>> +#include "hw/isa/isa.h"
>> +#include "exec/ioport.h"
>> +
>> #define TYPE_I8257 "i8257"
>> typedef struct I8257Regs {
>> @@ -40,4 +44,6 @@ typedef struct I8257State {
>> PortioList portio_pageh;
>> } I8257State;
>> +void i8257_dma_init(ISABus *bus, bool high_page_enable);
>> +
>> #endif
>> diff --git a/include/hw/isa/isa.h b/include/hw/isa/isa.h
>> index 95593408ef..b9dbab24b4 100644
>> --- a/include/hw/isa/isa.h
>> +++ b/include/hw/isa/isa.h
>> @@ -151,6 +151,4 @@ static inline ISABus
>> *isa_bus_from_device(ISADevice *d)
>> return ISA_BUS(qdev_get_parent_bus(DEVICE(d)));
>> }
>> -/* i8257.c */
>> -void DMA_init(ISABus *bus, int high_page_enable);
>> #endif
>> diff --git a/hw/dma/i82374.c b/hw/dma/i82374.c
>> index 6c0f975df0..83c87d92e0 100644
>> --- a/hw/dma/i82374.c
>> +++ b/hw/dma/i82374.c
>> @@ -24,6 +24,7 @@
>> #include "qemu/osdep.h"
>> #include "hw/isa/isa.h"
>> +#include "hw/dma/i8257.h"
>> #define TYPE_I82374 "i82374"
>> #define I82374(obj) OBJECT_CHECK(I82374State, (obj), TYPE_I82374)
>> @@ -123,7 +124,7 @@ static void i82374_realize(DeviceState *dev, Error
>> **errp)
>> portio_list_add(&s->port_list,
>> isa_address_space_io(&s->parent_obj),
>> s->iobase);
>> - DMA_init(isa_bus_from_device(ISA_DEVICE(dev)), 1);
>> + i8257_dma_init(isa_bus_from_device(ISA_DEVICE(dev)), true);
>> memset(s->commands, 0, sizeof(s->commands));
>> }
>> diff --git a/hw/dma/i8257.c b/hw/dma/i8257.c
>> index bd23e893bf..52675e97c9 100644
>> --- a/hw/dma/i8257.c
>> +++ b/hw/dma/i8257.c
>> @@ -24,7 +24,7 @@
>> #include "qemu/osdep.h"
>> #include "hw/hw.h"
>> #include "hw/isa/isa.h"
>> -#include "hw/isa/i8257.h"
>> +#include "hw/dma/i8257.h"
>> #include "qemu/main-loop.h"
>> #include "trace.h"
>> @@ -622,7 +622,7 @@ static void i8257_register_types(void)
>> type_init(i8257_register_types)
>> -void DMA_init(ISABus *bus, int high_page_enable)
>> +void i8257_dma_init(ISABus *bus, bool high_page_enable)
>> {
>> ISADevice *isa1, *isa2;
>> DeviceState *d;
>> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
>> index 81364932d3..ec75b09a8f 100644
>> --- a/hw/i386/pc.c
>> +++ b/hw/i386/pc.c
>> @@ -41,6 +41,7 @@
>> #include "elf.h"
>> #include "multiboot.h"
>> #include "hw/timer/mc146818rtc.h"
>> +#include "hw/dma/i8257.h"
>> #include "hw/timer/i8254.h"
>> #include "hw/audio/pcspk.h"
>> #include "hw/pci/msi.h"
>> @@ -1609,7 +1610,7 @@ void pc_basic_device_init(ISABus *isa_bus,
>> qemu_irq *gsi,
>> port92_init(port92, a20_line[1]);
>> g_free(a20_line);
>> - DMA_init(isa_bus, 0);
>> + i8257_dma_init(isa_bus, 0);
>> for(i = 0; i < MAX_FD; i++) {
>> fd[i] = drive_get(IF_FLOPPY, 0, i);
>> diff --git a/hw/mips/mips_fulong2e.c b/hw/mips/mips_fulong2e.c
>> index dc77b55755..0545fcd899 100644
>> --- a/hw/mips/mips_fulong2e.c
>> +++ b/hw/mips/mips_fulong2e.c
>> @@ -22,6 +22,7 @@
>> #include "qapi/error.h"
>> #include "hw/hw.h"
>> #include "hw/i386/pc.h"
>> +#include "hw/dma/i8257.h"
>> #include "hw/char/serial.h"
>> #include "hw/char/parallel.h"
>> #include "hw/block/fdc.h"
>> @@ -360,7 +361,7 @@ static void mips_fulong2e_init(MachineState *machine)
>> /* init other devices */
>> pit = i8254_pit_init(isa_bus, 0x40, 0, NULL);
>> - DMA_init(isa_bus, 0);
>> + i8257_dma_init(isa_bus, 0);
>> /* Super I/O */
>> isa_create_simple(isa_bus, "i8042");
>> diff --git a/hw/mips/mips_jazz.c b/hw/mips/mips_jazz.c
>> index b24305b7b4..827ffdcd4a 100644
>> --- a/hw/mips/mips_jazz.c
>> +++ b/hw/mips/mips_jazz.c
>> @@ -27,6 +27,7 @@
>> #include "hw/mips/mips.h"
>> #include "hw/mips/cpudevs.h"
>> #include "hw/i386/pc.h"
>> +#include "hw/dma/i8257.h"
>> #include "hw/char/serial.h"
>> #include "hw/char/parallel.h"
>> #include "hw/isa/isa.h"
>> @@ -220,7 +221,7 @@ static void mips_jazz_init(MachineState *machine,
>> /* ISA devices */
>> i8259 = i8259_init(isa_bus, env->irq[4]);
>> isa_bus_irqs(isa_bus, i8259);
>> - DMA_init(isa_bus, 0);
>> + i8257_dma_init(isa_bus, 0);
>> pit = i8254_pit_init(isa_bus, 0x40, 0, NULL);
>> pcspk_init(isa_bus, pit);
>> diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c
>> index c74882c7e9..9cb86c432e 100644
>> --- a/hw/mips/mips_malta.c
>> +++ b/hw/mips/mips_malta.c
>> @@ -27,6 +27,7 @@
>> #include "cpu.h"
>> #include "hw/hw.h"
>> #include "hw/i386/pc.h"
>> +#include "hw/dma/i8257.h"
>> #include "hw/char/serial.h"
>> #include "hw/char/parallel.h"
>> #include "hw/block/fdc.h"
>> @@ -1209,7 +1210,7 @@ void mips_malta_init(MachineState *machine)
>> smbus_eeprom_init(smbus, 8, smbus_eeprom_buf, smbus_eeprom_size);
>> g_free(smbus_eeprom_buf);
>> pit = i8254_pit_init(isa_bus, 0x40, 0, NULL);
>> - DMA_init(isa_bus, 0);
>> + i8257_dma_init(isa_bus, 0);
>> /* Super I/O */
>> isa_create_simple(isa_bus, "i8042");
>> diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c
>> index 0f5804b3b4..fa1bfd6c92 100644
>> --- a/hw/sparc/sun4m.c
>> +++ b/hw/sparc/sun4m.c
>> @@ -99,10 +99,6 @@ struct sun4m_hwdef {
>> uint8_t nvram_machine_id;
>> };
>> -void DMA_init(ISABus *bus, int high_page_enable)
>> -{
>> -}
>> -
>> static void fw_cfg_boot_set(void *opaque, const char *boot_device,
>> Error **errp)
>> {
>> diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c
>> index ceb1ba7eaf..0ca0243821 100644
>> --- a/hw/sparc64/sun4u.c
>> +++ b/hw/sparc64/sun4u.c
>> @@ -90,10 +90,6 @@ typedef struct EbusState {
>> #define TYPE_EBUS "ebus"
>> #define EBUS(obj) OBJECT_CHECK(EbusState, (obj), TYPE_EBUS)
>> -void DMA_init(ISABus *bus, int high_page_enable)
>> -{
>> -}
>> -
>> static void fw_cfg_boot_set(void *opaque, const char *boot_device,
>> Error **errp)
>> {
>> diff --git a/MAINTAINERS b/MAINTAINERS
>> index c0f1620f3a..335c6c9f65 100644
>> --- a/MAINTAINERS
>> +++ b/MAINTAINERS
>> @@ -929,8 +929,8 @@ F: hw/timer/mc146818rtc*
>> F: hw/watchdog/wdt_ib700.c
>> F: include/hw/display/vga.h
>> F: include/hw/char/parallel.h
>> +F: include/hw/dma/i8257.h
>> F: include/hw/i2c/pm_smbus.h
>> -F: include/hw/isa/i8257.h
>> F: include/hw/timer/hpet.h
>> F: include/hw/timer/i8254*
>> F: include/hw/timer/mc146818rtc*
>>
>
> Presumably these DMA_init() functions have been unused on sun4u/sun4m
> for a while which is why they are being removed? Might be worth a
> mention of this in the commit message.
Apparently (from git log) once the Sparc machine was copied from the PC
machine (~ 6f7e9aec5), using an empty stub, and finally got cleaned in
ba0a71022 but this function was missed. So this function has never been
implemented.
I'll add a comment if I need to respin, or gently add the maintainer to
update the commit message if this series is accepted :)
Thanks!
Phil.
>
>
> ATB,
>
> Mark.
>
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [Qemu-devel] [PATCH 02/25] hw/dma/i8257: Rename DMA_init() to i8257_dma_init()
2018-03-09 10:43 ` Philippe Mathieu-Daudé
@ 2018-03-09 12:19 ` Mark Cave-Ayland
2018-03-09 20:51 ` Artyom Tarasenko
0 siblings, 1 reply; 35+ messages in thread
From: Mark Cave-Ayland @ 2018-03-09 12:19 UTC (permalink / raw)
To: Philippe Mathieu-Daudé,
Michael S . Tsirkin, Paolo Bonzini, Hervé Poussineau,
Marcel Apfelbaum, Aurelien Jarno, Alexey Kardashevskiy,
Thomas Huth
Cc: Eduardo Habkost, qemu-devel, open list:PReP, Guan Xuetao,
Yongbok Kim, Artyom Tarasenko, Richard Henderson
On 09/03/18 10:43, Philippe Mathieu-Daudé wrote:
> Hi Mark,
>
> On 03/09/2018 11:32 AM, Mark Cave-Ayland wrote:
>> On 08/03/18 22:39, Philippe Mathieu-Daudé wrote:
>>
>>> - Move the header from hw/isa/ to hw/dma/
>>> - Remove the old i386/pc dependency
>>> - use a bool type for the high_page_enable argument
>>>
>>> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>>> ---
>>> include/hw/{isa => dma}/i8257.h | 6 ++++++
>>> include/hw/isa/isa.h | 2 --
>>> hw/dma/i82374.c | 3 ++-
>>> hw/dma/i8257.c | 4 ++--
>>> hw/i386/pc.c | 3 ++-
>>> hw/mips/mips_fulong2e.c | 3 ++-
>>> hw/mips/mips_jazz.c | 3 ++-
>>> hw/mips/mips_malta.c | 3 ++-
>>> hw/sparc/sun4m.c | 4 ----
>>> hw/sparc64/sun4u.c | 4 ----
>>> MAINTAINERS | 2 +-
>>> 11 files changed, 19 insertions(+), 18 deletions(-)
>>> rename include/hw/{isa => dma}/i8257.h (86%)
>>>
>>> diff --git a/include/hw/isa/i8257.h b/include/hw/dma/i8257.h
>>> similarity index 86%
>>> rename from include/hw/isa/i8257.h
>>> rename to include/hw/dma/i8257.h
>>> index 88a2766a3f..2cab50bb6c 100644
>>> --- a/include/hw/isa/i8257.h
>>> +++ b/include/hw/dma/i8257.h
>>> @@ -1,6 +1,10 @@
>>> #ifndef HW_I8257_H
>>> #define HW_I8257_H
>>> +#include "hw/hw.h"
>>> +#include "hw/isa/isa.h"
>>> +#include "exec/ioport.h"
>>> +
>>> #define TYPE_I8257 "i8257"
>>> typedef struct I8257Regs {
>>> @@ -40,4 +44,6 @@ typedef struct I8257State {
>>> PortioList portio_pageh;
>>> } I8257State;
>>> +void i8257_dma_init(ISABus *bus, bool high_page_enable);
>>> +
>>> #endif
>>> diff --git a/include/hw/isa/isa.h b/include/hw/isa/isa.h
>>> index 95593408ef..b9dbab24b4 100644
>>> --- a/include/hw/isa/isa.h
>>> +++ b/include/hw/isa/isa.h
>>> @@ -151,6 +151,4 @@ static inline ISABus
>>> *isa_bus_from_device(ISADevice *d)
>>> return ISA_BUS(qdev_get_parent_bus(DEVICE(d)));
>>> }
>>> -/* i8257.c */
>>> -void DMA_init(ISABus *bus, int high_page_enable);
>>> #endif
>>> diff --git a/hw/dma/i82374.c b/hw/dma/i82374.c
>>> index 6c0f975df0..83c87d92e0 100644
>>> --- a/hw/dma/i82374.c
>>> +++ b/hw/dma/i82374.c
>>> @@ -24,6 +24,7 @@
>>> #include "qemu/osdep.h"
>>> #include "hw/isa/isa.h"
>>> +#include "hw/dma/i8257.h"
>>> #define TYPE_I82374 "i82374"
>>> #define I82374(obj) OBJECT_CHECK(I82374State, (obj), TYPE_I82374)
>>> @@ -123,7 +124,7 @@ static void i82374_realize(DeviceState *dev, Error
>>> **errp)
>>> portio_list_add(&s->port_list,
>>> isa_address_space_io(&s->parent_obj),
>>> s->iobase);
>>> - DMA_init(isa_bus_from_device(ISA_DEVICE(dev)), 1);
>>> + i8257_dma_init(isa_bus_from_device(ISA_DEVICE(dev)), true);
>>> memset(s->commands, 0, sizeof(s->commands));
>>> }
>>> diff --git a/hw/dma/i8257.c b/hw/dma/i8257.c
>>> index bd23e893bf..52675e97c9 100644
>>> --- a/hw/dma/i8257.c
>>> +++ b/hw/dma/i8257.c
>>> @@ -24,7 +24,7 @@
>>> #include "qemu/osdep.h"
>>> #include "hw/hw.h"
>>> #include "hw/isa/isa.h"
>>> -#include "hw/isa/i8257.h"
>>> +#include "hw/dma/i8257.h"
>>> #include "qemu/main-loop.h"
>>> #include "trace.h"
>>> @@ -622,7 +622,7 @@ static void i8257_register_types(void)
>>> type_init(i8257_register_types)
>>> -void DMA_init(ISABus *bus, int high_page_enable)
>>> +void i8257_dma_init(ISABus *bus, bool high_page_enable)
>>> {
>>> ISADevice *isa1, *isa2;
>>> DeviceState *d;
>>> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
>>> index 81364932d3..ec75b09a8f 100644
>>> --- a/hw/i386/pc.c
>>> +++ b/hw/i386/pc.c
>>> @@ -41,6 +41,7 @@
>>> #include "elf.h"
>>> #include "multiboot.h"
>>> #include "hw/timer/mc146818rtc.h"
>>> +#include "hw/dma/i8257.h"
>>> #include "hw/timer/i8254.h"
>>> #include "hw/audio/pcspk.h"
>>> #include "hw/pci/msi.h"
>>> @@ -1609,7 +1610,7 @@ void pc_basic_device_init(ISABus *isa_bus,
>>> qemu_irq *gsi,
>>> port92_init(port92, a20_line[1]);
>>> g_free(a20_line);
>>> - DMA_init(isa_bus, 0);
>>> + i8257_dma_init(isa_bus, 0);
>>> for(i = 0; i < MAX_FD; i++) {
>>> fd[i] = drive_get(IF_FLOPPY, 0, i);
>>> diff --git a/hw/mips/mips_fulong2e.c b/hw/mips/mips_fulong2e.c
>>> index dc77b55755..0545fcd899 100644
>>> --- a/hw/mips/mips_fulong2e.c
>>> +++ b/hw/mips/mips_fulong2e.c
>>> @@ -22,6 +22,7 @@
>>> #include "qapi/error.h"
>>> #include "hw/hw.h"
>>> #include "hw/i386/pc.h"
>>> +#include "hw/dma/i8257.h"
>>> #include "hw/char/serial.h"
>>> #include "hw/char/parallel.h"
>>> #include "hw/block/fdc.h"
>>> @@ -360,7 +361,7 @@ static void mips_fulong2e_init(MachineState *machine)
>>> /* init other devices */
>>> pit = i8254_pit_init(isa_bus, 0x40, 0, NULL);
>>> - DMA_init(isa_bus, 0);
>>> + i8257_dma_init(isa_bus, 0);
>>> /* Super I/O */
>>> isa_create_simple(isa_bus, "i8042");
>>> diff --git a/hw/mips/mips_jazz.c b/hw/mips/mips_jazz.c
>>> index b24305b7b4..827ffdcd4a 100644
>>> --- a/hw/mips/mips_jazz.c
>>> +++ b/hw/mips/mips_jazz.c
>>> @@ -27,6 +27,7 @@
>>> #include "hw/mips/mips.h"
>>> #include "hw/mips/cpudevs.h"
>>> #include "hw/i386/pc.h"
>>> +#include "hw/dma/i8257.h"
>>> #include "hw/char/serial.h"
>>> #include "hw/char/parallel.h"
>>> #include "hw/isa/isa.h"
>>> @@ -220,7 +221,7 @@ static void mips_jazz_init(MachineState *machine,
>>> /* ISA devices */
>>> i8259 = i8259_init(isa_bus, env->irq[4]);
>>> isa_bus_irqs(isa_bus, i8259);
>>> - DMA_init(isa_bus, 0);
>>> + i8257_dma_init(isa_bus, 0);
>>> pit = i8254_pit_init(isa_bus, 0x40, 0, NULL);
>>> pcspk_init(isa_bus, pit);
>>> diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c
>>> index c74882c7e9..9cb86c432e 100644
>>> --- a/hw/mips/mips_malta.c
>>> +++ b/hw/mips/mips_malta.c
>>> @@ -27,6 +27,7 @@
>>> #include "cpu.h"
>>> #include "hw/hw.h"
>>> #include "hw/i386/pc.h"
>>> +#include "hw/dma/i8257.h"
>>> #include "hw/char/serial.h"
>>> #include "hw/char/parallel.h"
>>> #include "hw/block/fdc.h"
>>> @@ -1209,7 +1210,7 @@ void mips_malta_init(MachineState *machine)
>>> smbus_eeprom_init(smbus, 8, smbus_eeprom_buf, smbus_eeprom_size);
>>> g_free(smbus_eeprom_buf);
>>> pit = i8254_pit_init(isa_bus, 0x40, 0, NULL);
>>> - DMA_init(isa_bus, 0);
>>> + i8257_dma_init(isa_bus, 0);
>>> /* Super I/O */
>>> isa_create_simple(isa_bus, "i8042");
>>> diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c
>>> index 0f5804b3b4..fa1bfd6c92 100644
>>> --- a/hw/sparc/sun4m.c
>>> +++ b/hw/sparc/sun4m.c
>>> @@ -99,10 +99,6 @@ struct sun4m_hwdef {
>>> uint8_t nvram_machine_id;
>>> };
>>> -void DMA_init(ISABus *bus, int high_page_enable)
>>> -{
>>> -}
>>> -
>>> static void fw_cfg_boot_set(void *opaque, const char *boot_device,
>>> Error **errp)
>>> {
>>> diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c
>>> index ceb1ba7eaf..0ca0243821 100644
>>> --- a/hw/sparc64/sun4u.c
>>> +++ b/hw/sparc64/sun4u.c
>>> @@ -90,10 +90,6 @@ typedef struct EbusState {
>>> #define TYPE_EBUS "ebus"
>>> #define EBUS(obj) OBJECT_CHECK(EbusState, (obj), TYPE_EBUS)
>>> -void DMA_init(ISABus *bus, int high_page_enable)
>>> -{
>>> -}
>>> -
>>> static void fw_cfg_boot_set(void *opaque, const char *boot_device,
>>> Error **errp)
>>> {
>>> diff --git a/MAINTAINERS b/MAINTAINERS
>>> index c0f1620f3a..335c6c9f65 100644
>>> --- a/MAINTAINERS
>>> +++ b/MAINTAINERS
>>> @@ -929,8 +929,8 @@ F: hw/timer/mc146818rtc*
>>> F: hw/watchdog/wdt_ib700.c
>>> F: include/hw/display/vga.h
>>> F: include/hw/char/parallel.h
>>> +F: include/hw/dma/i8257.h
>>> F: include/hw/i2c/pm_smbus.h
>>> -F: include/hw/isa/i8257.h
>>> F: include/hw/timer/hpet.h
>>> F: include/hw/timer/i8254*
>>> F: include/hw/timer/mc146818rtc*
>>>
>>
>> Presumably these DMA_init() functions have been unused on sun4u/sun4m
>> for a while which is why they are being removed? Might be worth a
>> mention of this in the commit message.
>
> Apparently (from git log) once the Sparc machine was copied from the PC
> machine (~ 6f7e9aec5), using an empty stub, and finally got cleaned in
> ba0a71022 but this function was missed. So this function has never been
> implemented.
>
> I'll add a comment if I need to respin, or gently add the maintainer to
> update the commit message if this series is accepted :)
>
> Thanks!
>
> Phil.
Got it. In that case for sun4/sun4u:
Reviewed-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
ATB,
Mark.
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [Qemu-devel] [PATCH 02/25] hw/dma/i8257: Rename DMA_init() to i8257_dma_init()
2018-03-09 12:19 ` Mark Cave-Ayland
@ 2018-03-09 20:51 ` Artyom Tarasenko
2018-03-10 9:33 ` Mark Cave-Ayland
0 siblings, 1 reply; 35+ messages in thread
From: Artyom Tarasenko @ 2018-03-09 20:51 UTC (permalink / raw)
To: Mark Cave-Ayland
Cc: Philippe Mathieu-Daudé,
Michael S . Tsirkin, Paolo Bonzini, Hervé Poussineau,
Marcel Apfelbaum, Aurelien Jarno, Alexey Kardashevskiy,
Thomas Huth, Eduardo Habkost, qemu-devel, open list:PReP,
Guan Xuetao, Yongbok Kim, Richard Henderson
On Fri, Mar 9, 2018 at 1:19 PM, Mark Cave-Ayland
<mark.cave-ayland@ilande.co.uk> wrote:
> On 09/03/18 10:43, Philippe Mathieu-Daudé wrote:
>>
>> Hi Mark,
>>
>> On 03/09/2018 11:32 AM, Mark Cave-Ayland wrote:
>>>
>>> On 08/03/18 22:39, Philippe Mathieu-Daudé wrote:
>>>
>>>> - Move the header from hw/isa/ to hw/dma/
>>>> - Remove the old i386/pc dependency
>>>> - use a bool type for the high_page_enable argument
>>>>
>>>> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>>>> ---
>>>> include/hw/{isa => dma}/i8257.h | 6 ++++++
>>>> include/hw/isa/isa.h | 2 --
>>>> hw/dma/i82374.c | 3 ++-
>>>> hw/dma/i8257.c | 4 ++--
>>>> hw/i386/pc.c | 3 ++-
>>>> hw/mips/mips_fulong2e.c | 3 ++-
>>>> hw/mips/mips_jazz.c | 3 ++-
>>>> hw/mips/mips_malta.c | 3 ++-
>>>> hw/sparc/sun4m.c | 4 ----
>>>> hw/sparc64/sun4u.c | 4 ----
>>>> MAINTAINERS | 2 +-
>>>> 11 files changed, 19 insertions(+), 18 deletions(-)
>>>> rename include/hw/{isa => dma}/i8257.h (86%)
>>>>
>>>> diff --git a/include/hw/isa/i8257.h b/include/hw/dma/i8257.h
>>>> similarity index 86%
>>>> rename from include/hw/isa/i8257.h
>>>> rename to include/hw/dma/i8257.h
>>>> index 88a2766a3f..2cab50bb6c 100644
>>>> --- a/include/hw/isa/i8257.h
>>>> +++ b/include/hw/dma/i8257.h
>>>> @@ -1,6 +1,10 @@
>>>> #ifndef HW_I8257_H
>>>> #define HW_I8257_H
>>>> +#include "hw/hw.h"
>>>> +#include "hw/isa/isa.h"
>>>> +#include "exec/ioport.h"
>>>> +
>>>> #define TYPE_I8257 "i8257"
>>>> typedef struct I8257Regs {
>>>> @@ -40,4 +44,6 @@ typedef struct I8257State {
>>>> PortioList portio_pageh;
>>>> } I8257State;
>>>> +void i8257_dma_init(ISABus *bus, bool high_page_enable);
>>>> +
>>>> #endif
>>>> diff --git a/include/hw/isa/isa.h b/include/hw/isa/isa.h
>>>> index 95593408ef..b9dbab24b4 100644
>>>> --- a/include/hw/isa/isa.h
>>>> +++ b/include/hw/isa/isa.h
>>>> @@ -151,6 +151,4 @@ static inline ISABus
>>>> *isa_bus_from_device(ISADevice *d)
>>>> return ISA_BUS(qdev_get_parent_bus(DEVICE(d)));
>>>> }
>>>> -/* i8257.c */
>>>> -void DMA_init(ISABus *bus, int high_page_enable);
>>>> #endif
>>>> diff --git a/hw/dma/i82374.c b/hw/dma/i82374.c
>>>> index 6c0f975df0..83c87d92e0 100644
>>>> --- a/hw/dma/i82374.c
>>>> +++ b/hw/dma/i82374.c
>>>> @@ -24,6 +24,7 @@
>>>> #include "qemu/osdep.h"
>>>> #include "hw/isa/isa.h"
>>>> +#include "hw/dma/i8257.h"
>>>> #define TYPE_I82374 "i82374"
>>>> #define I82374(obj) OBJECT_CHECK(I82374State, (obj), TYPE_I82374)
>>>> @@ -123,7 +124,7 @@ static void i82374_realize(DeviceState *dev, Error
>>>> **errp)
>>>> portio_list_add(&s->port_list,
>>>> isa_address_space_io(&s->parent_obj),
>>>> s->iobase);
>>>> - DMA_init(isa_bus_from_device(ISA_DEVICE(dev)), 1);
>>>> + i8257_dma_init(isa_bus_from_device(ISA_DEVICE(dev)), true);
>>>> memset(s->commands, 0, sizeof(s->commands));
>>>> }
>>>> diff --git a/hw/dma/i8257.c b/hw/dma/i8257.c
>>>> index bd23e893bf..52675e97c9 100644
>>>> --- a/hw/dma/i8257.c
>>>> +++ b/hw/dma/i8257.c
>>>> @@ -24,7 +24,7 @@
>>>> #include "qemu/osdep.h"
>>>> #include "hw/hw.h"
>>>> #include "hw/isa/isa.h"
>>>> -#include "hw/isa/i8257.h"
>>>> +#include "hw/dma/i8257.h"
>>>> #include "qemu/main-loop.h"
>>>> #include "trace.h"
>>>> @@ -622,7 +622,7 @@ static void i8257_register_types(void)
>>>> type_init(i8257_register_types)
>>>> -void DMA_init(ISABus *bus, int high_page_enable)
>>>> +void i8257_dma_init(ISABus *bus, bool high_page_enable)
>>>> {
>>>> ISADevice *isa1, *isa2;
>>>> DeviceState *d;
>>>> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
>>>> index 81364932d3..ec75b09a8f 100644
>>>> --- a/hw/i386/pc.c
>>>> +++ b/hw/i386/pc.c
>>>> @@ -41,6 +41,7 @@
>>>> #include "elf.h"
>>>> #include "multiboot.h"
>>>> #include "hw/timer/mc146818rtc.h"
>>>> +#include "hw/dma/i8257.h"
>>>> #include "hw/timer/i8254.h"
>>>> #include "hw/audio/pcspk.h"
>>>> #include "hw/pci/msi.h"
>>>> @@ -1609,7 +1610,7 @@ void pc_basic_device_init(ISABus *isa_bus,
>>>> qemu_irq *gsi,
>>>> port92_init(port92, a20_line[1]);
>>>> g_free(a20_line);
>>>> - DMA_init(isa_bus, 0);
>>>> + i8257_dma_init(isa_bus, 0);
>>>> for(i = 0; i < MAX_FD; i++) {
>>>> fd[i] = drive_get(IF_FLOPPY, 0, i);
>>>> diff --git a/hw/mips/mips_fulong2e.c b/hw/mips/mips_fulong2e.c
>>>> index dc77b55755..0545fcd899 100644
>>>> --- a/hw/mips/mips_fulong2e.c
>>>> +++ b/hw/mips/mips_fulong2e.c
>>>> @@ -22,6 +22,7 @@
>>>> #include "qapi/error.h"
>>>> #include "hw/hw.h"
>>>> #include "hw/i386/pc.h"
>>>> +#include "hw/dma/i8257.h"
>>>> #include "hw/char/serial.h"
>>>> #include "hw/char/parallel.h"
>>>> #include "hw/block/fdc.h"
>>>> @@ -360,7 +361,7 @@ static void mips_fulong2e_init(MachineState
>>>> *machine)
>>>> /* init other devices */
>>>> pit = i8254_pit_init(isa_bus, 0x40, 0, NULL);
>>>> - DMA_init(isa_bus, 0);
>>>> + i8257_dma_init(isa_bus, 0);
>>>> /* Super I/O */
>>>> isa_create_simple(isa_bus, "i8042");
>>>> diff --git a/hw/mips/mips_jazz.c b/hw/mips/mips_jazz.c
>>>> index b24305b7b4..827ffdcd4a 100644
>>>> --- a/hw/mips/mips_jazz.c
>>>> +++ b/hw/mips/mips_jazz.c
>>>> @@ -27,6 +27,7 @@
>>>> #include "hw/mips/mips.h"
>>>> #include "hw/mips/cpudevs.h"
>>>> #include "hw/i386/pc.h"
>>>> +#include "hw/dma/i8257.h"
>>>> #include "hw/char/serial.h"
>>>> #include "hw/char/parallel.h"
>>>> #include "hw/isa/isa.h"
>>>> @@ -220,7 +221,7 @@ static void mips_jazz_init(MachineState *machine,
>>>> /* ISA devices */
>>>> i8259 = i8259_init(isa_bus, env->irq[4]);
>>>> isa_bus_irqs(isa_bus, i8259);
>>>> - DMA_init(isa_bus, 0);
>>>> + i8257_dma_init(isa_bus, 0);
>>>> pit = i8254_pit_init(isa_bus, 0x40, 0, NULL);
>>>> pcspk_init(isa_bus, pit);
>>>> diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c
>>>> index c74882c7e9..9cb86c432e 100644
>>>> --- a/hw/mips/mips_malta.c
>>>> +++ b/hw/mips/mips_malta.c
>>>> @@ -27,6 +27,7 @@
>>>> #include "cpu.h"
>>>> #include "hw/hw.h"
>>>> #include "hw/i386/pc.h"
>>>> +#include "hw/dma/i8257.h"
>>>> #include "hw/char/serial.h"
>>>> #include "hw/char/parallel.h"
>>>> #include "hw/block/fdc.h"
>>>> @@ -1209,7 +1210,7 @@ void mips_malta_init(MachineState *machine)
>>>> smbus_eeprom_init(smbus, 8, smbus_eeprom_buf, smbus_eeprom_size);
>>>> g_free(smbus_eeprom_buf);
>>>> pit = i8254_pit_init(isa_bus, 0x40, 0, NULL);
>>>> - DMA_init(isa_bus, 0);
>>>> + i8257_dma_init(isa_bus, 0);
>>>> /* Super I/O */
>>>> isa_create_simple(isa_bus, "i8042");
>>>> diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c
>>>> index 0f5804b3b4..fa1bfd6c92 100644
>>>> --- a/hw/sparc/sun4m.c
>>>> +++ b/hw/sparc/sun4m.c
>>>> @@ -99,10 +99,6 @@ struct sun4m_hwdef {
>>>> uint8_t nvram_machine_id;
>>>> };
>>>> -void DMA_init(ISABus *bus, int high_page_enable)
>>>> -{
>>>> -}
>>>> -
>>>> static void fw_cfg_boot_set(void *opaque, const char *boot_device,
>>>> Error **errp)
>>>> {
>>>> diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c
>>>> index ceb1ba7eaf..0ca0243821 100644
>>>> --- a/hw/sparc64/sun4u.c
>>>> +++ b/hw/sparc64/sun4u.c
>>>> @@ -90,10 +90,6 @@ typedef struct EbusState {
>>>> #define TYPE_EBUS "ebus"
>>>> #define EBUS(obj) OBJECT_CHECK(EbusState, (obj), TYPE_EBUS)
>>>> -void DMA_init(ISABus *bus, int high_page_enable)
>>>> -{
>>>> -}
>>>> -
>>>> static void fw_cfg_boot_set(void *opaque, const char *boot_device,
>>>> Error **errp)
>>>> {
>>>> diff --git a/MAINTAINERS b/MAINTAINERS
>>>> index c0f1620f3a..335c6c9f65 100644
>>>> --- a/MAINTAINERS
>>>> +++ b/MAINTAINERS
>>>> @@ -929,8 +929,8 @@ F: hw/timer/mc146818rtc*
>>>> F: hw/watchdog/wdt_ib700.c
>>>> F: include/hw/display/vga.h
>>>> F: include/hw/char/parallel.h
>>>> +F: include/hw/dma/i8257.h
>>>> F: include/hw/i2c/pm_smbus.h
>>>> -F: include/hw/isa/i8257.h
>>>> F: include/hw/timer/hpet.h
>>>> F: include/hw/timer/i8254*
>>>> F: include/hw/timer/mc146818rtc*
>>>>
>>>
>>> Presumably these DMA_init() functions have been unused on sun4u/sun4m
>>> for a while which is why they are being removed? Might be worth a
>>> mention of this in the commit message.
>>
>>
>> Apparently (from git log) once the Sparc machine was copied from the PC
>> machine (~ 6f7e9aec5), using an empty stub, and finally got cleaned in
>> ba0a71022 but this function was missed. So this function has never been
>> implemented.
>>
>> I'll add a comment if I need to respin, or gently add the maintainer to
>> update the commit message if this series is accepted :)
>>
>> Thanks!
>>
>> Phil.
>
>
> Got it. In that case for sun4/sun4u:
>
> Reviewed-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Out of curiosity, isn't ISA-DMA used by FDthree on Ultra-5/Ultra-10 machines?
--
Regards,
Artyom Tarasenko
SPARC and PPC PReP under qemu blog: http://tyom.blogspot.com/search/label/qemu
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [Qemu-devel] [PATCH 02/25] hw/dma/i8257: Rename DMA_init() to i8257_dma_init()
2018-03-09 20:51 ` Artyom Tarasenko
@ 2018-03-10 9:33 ` Mark Cave-Ayland
0 siblings, 0 replies; 35+ messages in thread
From: Mark Cave-Ayland @ 2018-03-10 9:33 UTC (permalink / raw)
To: Artyom Tarasenko
Cc: open list:PReP, Thomas Huth, Eduardo Habkost,
Michael S . Tsirkin, Alexey Kardashevskiy,
Philippe Mathieu-Daudé,
qemu-devel, Hervé Poussineau, Marcel Apfelbaum,
Paolo Bonzini, Guan Xuetao, Yongbok Kim, Aurelien Jarno,
Richard Henderson
On 09/03/18 20:51, Artyom Tarasenko wrote:
> On Fri, Mar 9, 2018 at 1:19 PM, Mark Cave-Ayland
> <mark.cave-ayland@ilande.co.uk> wrote:
>> On 09/03/18 10:43, Philippe Mathieu-Daudé wrote:
>>>
>>> Hi Mark,
>>>
>>> On 03/09/2018 11:32 AM, Mark Cave-Ayland wrote:
>>>>
>>>> On 08/03/18 22:39, Philippe Mathieu-Daudé wrote:
>>>>
>>>>> - Move the header from hw/isa/ to hw/dma/
>>>>> - Remove the old i386/pc dependency
>>>>> - use a bool type for the high_page_enable argument
>>>>>
>>>>> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>>>>> ---
>>>>> include/hw/{isa => dma}/i8257.h | 6 ++++++
>>>>> include/hw/isa/isa.h | 2 --
>>>>> hw/dma/i82374.c | 3 ++-
>>>>> hw/dma/i8257.c | 4 ++--
>>>>> hw/i386/pc.c | 3 ++-
>>>>> hw/mips/mips_fulong2e.c | 3 ++-
>>>>> hw/mips/mips_jazz.c | 3 ++-
>>>>> hw/mips/mips_malta.c | 3 ++-
>>>>> hw/sparc/sun4m.c | 4 ----
>>>>> hw/sparc64/sun4u.c | 4 ----
>>>>> MAINTAINERS | 2 +-
>>>>> 11 files changed, 19 insertions(+), 18 deletions(-)
>>>>> rename include/hw/{isa => dma}/i8257.h (86%)
>>>>>
>>>>> diff --git a/include/hw/isa/i8257.h b/include/hw/dma/i8257.h
>>>>> similarity index 86%
>>>>> rename from include/hw/isa/i8257.h
>>>>> rename to include/hw/dma/i8257.h
>>>>> index 88a2766a3f..2cab50bb6c 100644
>>>>> --- a/include/hw/isa/i8257.h
>>>>> +++ b/include/hw/dma/i8257.h
>>>>> @@ -1,6 +1,10 @@
>>>>> #ifndef HW_I8257_H
>>>>> #define HW_I8257_H
>>>>> +#include "hw/hw.h"
>>>>> +#include "hw/isa/isa.h"
>>>>> +#include "exec/ioport.h"
>>>>> +
>>>>> #define TYPE_I8257 "i8257"
>>>>> typedef struct I8257Regs {
>>>>> @@ -40,4 +44,6 @@ typedef struct I8257State {
>>>>> PortioList portio_pageh;
>>>>> } I8257State;
>>>>> +void i8257_dma_init(ISABus *bus, bool high_page_enable);
>>>>> +
>>>>> #endif
>>>>> diff --git a/include/hw/isa/isa.h b/include/hw/isa/isa.h
>>>>> index 95593408ef..b9dbab24b4 100644
>>>>> --- a/include/hw/isa/isa.h
>>>>> +++ b/include/hw/isa/isa.h
>>>>> @@ -151,6 +151,4 @@ static inline ISABus
>>>>> *isa_bus_from_device(ISADevice *d)
>>>>> return ISA_BUS(qdev_get_parent_bus(DEVICE(d)));
>>>>> }
>>>>> -/* i8257.c */
>>>>> -void DMA_init(ISABus *bus, int high_page_enable);
>>>>> #endif
>>>>> diff --git a/hw/dma/i82374.c b/hw/dma/i82374.c
>>>>> index 6c0f975df0..83c87d92e0 100644
>>>>> --- a/hw/dma/i82374.c
>>>>> +++ b/hw/dma/i82374.c
>>>>> @@ -24,6 +24,7 @@
>>>>> #include "qemu/osdep.h"
>>>>> #include "hw/isa/isa.h"
>>>>> +#include "hw/dma/i8257.h"
>>>>> #define TYPE_I82374 "i82374"
>>>>> #define I82374(obj) OBJECT_CHECK(I82374State, (obj), TYPE_I82374)
>>>>> @@ -123,7 +124,7 @@ static void i82374_realize(DeviceState *dev, Error
>>>>> **errp)
>>>>> portio_list_add(&s->port_list,
>>>>> isa_address_space_io(&s->parent_obj),
>>>>> s->iobase);
>>>>> - DMA_init(isa_bus_from_device(ISA_DEVICE(dev)), 1);
>>>>> + i8257_dma_init(isa_bus_from_device(ISA_DEVICE(dev)), true);
>>>>> memset(s->commands, 0, sizeof(s->commands));
>>>>> }
>>>>> diff --git a/hw/dma/i8257.c b/hw/dma/i8257.c
>>>>> index bd23e893bf..52675e97c9 100644
>>>>> --- a/hw/dma/i8257.c
>>>>> +++ b/hw/dma/i8257.c
>>>>> @@ -24,7 +24,7 @@
>>>>> #include "qemu/osdep.h"
>>>>> #include "hw/hw.h"
>>>>> #include "hw/isa/isa.h"
>>>>> -#include "hw/isa/i8257.h"
>>>>> +#include "hw/dma/i8257.h"
>>>>> #include "qemu/main-loop.h"
>>>>> #include "trace.h"
>>>>> @@ -622,7 +622,7 @@ static void i8257_register_types(void)
>>>>> type_init(i8257_register_types)
>>>>> -void DMA_init(ISABus *bus, int high_page_enable)
>>>>> +void i8257_dma_init(ISABus *bus, bool high_page_enable)
>>>>> {
>>>>> ISADevice *isa1, *isa2;
>>>>> DeviceState *d;
>>>>> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
>>>>> index 81364932d3..ec75b09a8f 100644
>>>>> --- a/hw/i386/pc.c
>>>>> +++ b/hw/i386/pc.c
>>>>> @@ -41,6 +41,7 @@
>>>>> #include "elf.h"
>>>>> #include "multiboot.h"
>>>>> #include "hw/timer/mc146818rtc.h"
>>>>> +#include "hw/dma/i8257.h"
>>>>> #include "hw/timer/i8254.h"
>>>>> #include "hw/audio/pcspk.h"
>>>>> #include "hw/pci/msi.h"
>>>>> @@ -1609,7 +1610,7 @@ void pc_basic_device_init(ISABus *isa_bus,
>>>>> qemu_irq *gsi,
>>>>> port92_init(port92, a20_line[1]);
>>>>> g_free(a20_line);
>>>>> - DMA_init(isa_bus, 0);
>>>>> + i8257_dma_init(isa_bus, 0);
>>>>> for(i = 0; i < MAX_FD; i++) {
>>>>> fd[i] = drive_get(IF_FLOPPY, 0, i);
>>>>> diff --git a/hw/mips/mips_fulong2e.c b/hw/mips/mips_fulong2e.c
>>>>> index dc77b55755..0545fcd899 100644
>>>>> --- a/hw/mips/mips_fulong2e.c
>>>>> +++ b/hw/mips/mips_fulong2e.c
>>>>> @@ -22,6 +22,7 @@
>>>>> #include "qapi/error.h"
>>>>> #include "hw/hw.h"
>>>>> #include "hw/i386/pc.h"
>>>>> +#include "hw/dma/i8257.h"
>>>>> #include "hw/char/serial.h"
>>>>> #include "hw/char/parallel.h"
>>>>> #include "hw/block/fdc.h"
>>>>> @@ -360,7 +361,7 @@ static void mips_fulong2e_init(MachineState
>>>>> *machine)
>>>>> /* init other devices */
>>>>> pit = i8254_pit_init(isa_bus, 0x40, 0, NULL);
>>>>> - DMA_init(isa_bus, 0);
>>>>> + i8257_dma_init(isa_bus, 0);
>>>>> /* Super I/O */
>>>>> isa_create_simple(isa_bus, "i8042");
>>>>> diff --git a/hw/mips/mips_jazz.c b/hw/mips/mips_jazz.c
>>>>> index b24305b7b4..827ffdcd4a 100644
>>>>> --- a/hw/mips/mips_jazz.c
>>>>> +++ b/hw/mips/mips_jazz.c
>>>>> @@ -27,6 +27,7 @@
>>>>> #include "hw/mips/mips.h"
>>>>> #include "hw/mips/cpudevs.h"
>>>>> #include "hw/i386/pc.h"
>>>>> +#include "hw/dma/i8257.h"
>>>>> #include "hw/char/serial.h"
>>>>> #include "hw/char/parallel.h"
>>>>> #include "hw/isa/isa.h"
>>>>> @@ -220,7 +221,7 @@ static void mips_jazz_init(MachineState *machine,
>>>>> /* ISA devices */
>>>>> i8259 = i8259_init(isa_bus, env->irq[4]);
>>>>> isa_bus_irqs(isa_bus, i8259);
>>>>> - DMA_init(isa_bus, 0);
>>>>> + i8257_dma_init(isa_bus, 0);
>>>>> pit = i8254_pit_init(isa_bus, 0x40, 0, NULL);
>>>>> pcspk_init(isa_bus, pit);
>>>>> diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c
>>>>> index c74882c7e9..9cb86c432e 100644
>>>>> --- a/hw/mips/mips_malta.c
>>>>> +++ b/hw/mips/mips_malta.c
>>>>> @@ -27,6 +27,7 @@
>>>>> #include "cpu.h"
>>>>> #include "hw/hw.h"
>>>>> #include "hw/i386/pc.h"
>>>>> +#include "hw/dma/i8257.h"
>>>>> #include "hw/char/serial.h"
>>>>> #include "hw/char/parallel.h"
>>>>> #include "hw/block/fdc.h"
>>>>> @@ -1209,7 +1210,7 @@ void mips_malta_init(MachineState *machine)
>>>>> smbus_eeprom_init(smbus, 8, smbus_eeprom_buf, smbus_eeprom_size);
>>>>> g_free(smbus_eeprom_buf);
>>>>> pit = i8254_pit_init(isa_bus, 0x40, 0, NULL);
>>>>> - DMA_init(isa_bus, 0);
>>>>> + i8257_dma_init(isa_bus, 0);
>>>>> /* Super I/O */
>>>>> isa_create_simple(isa_bus, "i8042");
>>>>> diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c
>>>>> index 0f5804b3b4..fa1bfd6c92 100644
>>>>> --- a/hw/sparc/sun4m.c
>>>>> +++ b/hw/sparc/sun4m.c
>>>>> @@ -99,10 +99,6 @@ struct sun4m_hwdef {
>>>>> uint8_t nvram_machine_id;
>>>>> };
>>>>> -void DMA_init(ISABus *bus, int high_page_enable)
>>>>> -{
>>>>> -}
>>>>> -
>>>>> static void fw_cfg_boot_set(void *opaque, const char *boot_device,
>>>>> Error **errp)
>>>>> {
>>>>> diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c
>>>>> index ceb1ba7eaf..0ca0243821 100644
>>>>> --- a/hw/sparc64/sun4u.c
>>>>> +++ b/hw/sparc64/sun4u.c
>>>>> @@ -90,10 +90,6 @@ typedef struct EbusState {
>>>>> #define TYPE_EBUS "ebus"
>>>>> #define EBUS(obj) OBJECT_CHECK(EbusState, (obj), TYPE_EBUS)
>>>>> -void DMA_init(ISABus *bus, int high_page_enable)
>>>>> -{
>>>>> -}
>>>>> -
>>>>> static void fw_cfg_boot_set(void *opaque, const char *boot_device,
>>>>> Error **errp)
>>>>> {
>>>>> diff --git a/MAINTAINERS b/MAINTAINERS
>>>>> index c0f1620f3a..335c6c9f65 100644
>>>>> --- a/MAINTAINERS
>>>>> +++ b/MAINTAINERS
>>>>> @@ -929,8 +929,8 @@ F: hw/timer/mc146818rtc*
>>>>> F: hw/watchdog/wdt_ib700.c
>>>>> F: include/hw/display/vga.h
>>>>> F: include/hw/char/parallel.h
>>>>> +F: include/hw/dma/i8257.h
>>>>> F: include/hw/i2c/pm_smbus.h
>>>>> -F: include/hw/isa/i8257.h
>>>>> F: include/hw/timer/hpet.h
>>>>> F: include/hw/timer/i8254*
>>>>> F: include/hw/timer/mc146818rtc*
>>>>>
>>>>
>>>> Presumably these DMA_init() functions have been unused on sun4u/sun4m
>>>> for a while which is why they are being removed? Might be worth a
>>>> mention of this in the commit message.
>>>
>>>
>>> Apparently (from git log) once the Sparc machine was copied from the PC
>>> machine (~ 6f7e9aec5), using an empty stub, and finally got cleaned in
>>> ba0a71022 but this function was missed. So this function has never been
>>> implemented.
>>>
>>> I'll add a comment if I need to respin, or gently add the maintainer to
>>> update the commit message if this series is accepted :)
>>>
>>> Thanks!
>>>
>>> Phil.
>>
>>
>> Got it. In that case for sun4/sun4u:
>>
>> Reviewed-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
>
>
> Out of curiosity, isn't ISA-DMA used by FDthree on Ultra-5/Ultra-10 machines?
Possibly - it's something I really test on a regular basis though. I
believe Hervé switched the DMA interface over to use the new API on a
previous patchset, so the function itself is obsolete regardless.
ATB,
Mark.
^ permalink raw reply [flat|nested] 35+ messages in thread
* [Qemu-devel] [PATCH 03/25] hw/input/i8042: Extract declarations from i386/pc.h into input/i8042.h
2018-03-08 22:39 [Qemu-devel] [PATCH 00/25] remove i386/pc dependency: generic SuperIO Philippe Mathieu-Daudé
2018-03-08 22:39 ` [Qemu-devel] [PATCH 01/25] hw/isa: Move parallel_hds_isa_init() to hw/char/parallel-isa.c Philippe Mathieu-Daudé
2018-03-08 22:39 ` [Qemu-devel] [PATCH 02/25] hw/dma/i8257: Rename DMA_init() to i8257_dma_init() Philippe Mathieu-Daudé
@ 2018-03-08 22:39 ` Philippe Mathieu-Daudé
2018-03-09 10:33 ` Mark Cave-Ayland
2018-03-08 22:39 ` [Qemu-devel] [PATCH 04/25] MAINTAINERS: Fix the PC87312 include path Philippe Mathieu-Daudé
` (21 subsequent siblings)
24 siblings, 1 reply; 35+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-03-08 22:39 UTC (permalink / raw)
To: Michael S . Tsirkin, Paolo Bonzini, Hervé Poussineau,
Marcel Apfelbaum, Aurelien Jarno, Mark Cave-Ayland,
Alexey Kardashevskiy, Thomas Huth, Laurent Vivier
Cc: Philippe Mathieu-Daudé,
qemu-devel, Richard Henderson, Eduardo Habkost, Yongbok Kim,
Artyom Tarasenko, Guan Xuetao, David Gibson, Alexander Graf,
open list:PReP
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Acked-by: David Gibson <david@gibson.dropbear.id.au> (hw/ppc)
---
include/hw/i386/pc.h | 9 ---------
include/hw/input/i8042.h | 24 ++++++++++++++++++++++++
hw/alpha/dp264.c | 3 ++-
hw/i386/pc.c | 1 +
hw/i386/vmmouse.c | 1 +
hw/i386/vmport.c | 1 +
hw/input/pckbd.c | 2 +-
hw/mips/mips_fulong2e.c | 3 ++-
hw/mips/mips_jazz.c | 1 +
hw/mips/mips_malta.c | 3 ++-
hw/mips/mips_r4k.c | 3 ++-
hw/ppc/prep.c | 5 +++--
hw/sparc64/sun4u.c | 1 +
hw/unicore32/puv3.c | 1 +
MAINTAINERS | 1 +
15 files changed, 43 insertions(+), 16 deletions(-)
create mode 100644 include/hw/input/i8042.h
diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index f1feb18c3c..1638618dfc 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -188,15 +188,6 @@ void vmport_register(unsigned char command, VMPortReadFunc *func, void *opaque);
void vmmouse_get_data(uint32_t *data);
void vmmouse_set_data(const uint32_t *data);
-/* pckbd.c */
-#define I8042_A20_LINE "a20"
-
-void i8042_mm_init(qemu_irq kbd_irq, qemu_irq mouse_irq,
- MemoryRegion *region, ram_addr_t size,
- hwaddr mask);
-void i8042_isa_mouse_fake_event(void *opaque);
-void i8042_setup_a20_line(ISADevice *dev, qemu_irq a20_out);
-
/* pc.c */
extern int fd_bootchk;
diff --git a/include/hw/input/i8042.h b/include/hw/input/i8042.h
new file mode 100644
index 0000000000..f6ff146364
--- /dev/null
+++ b/include/hw/input/i8042.h
@@ -0,0 +1,24 @@
+/*
+ * QEMU PS/2 Controller
+ *
+ * Copyright (c) 2003 Fabrice Bellard
+ *
+ * SPDX-License-Identifier: MIT
+ */
+#ifndef HW_INPUT_I8042_H
+#define HW_INPUT_I8042_H
+
+#include "hw/hw.h"
+#include "hw/isa/isa.h"
+
+#define TYPE_I8042 "i8042"
+
+#define I8042_A20_LINE "a20"
+
+void i8042_mm_init(qemu_irq kbd_irq, qemu_irq mouse_irq,
+ MemoryRegion *region, ram_addr_t size,
+ hwaddr mask);
+void i8042_isa_mouse_fake_event(void *opaque);
+void i8042_setup_a20_line(ISADevice *dev, qemu_irq a20_out);
+
+#endif /* HW_INPUT_I8042_H */
diff --git a/hw/alpha/dp264.c b/hw/alpha/dp264.c
index 766373eec7..e13cb576fd 100644
--- a/hw/alpha/dp264.c
+++ b/hw/alpha/dp264.c
@@ -19,6 +19,7 @@
#include "hw/timer/mc146818rtc.h"
#include "hw/ide.h"
#include "hw/timer/i8254.h"
+#include "hw/input/i8042.h"
#include "hw/char/serial.h"
#include "qemu/cutils.h"
@@ -81,7 +82,7 @@ static void clipper_init(MachineState *machine)
mc146818_rtc_init(isa_bus, 1900, rtc_irq);
i8254_pit_init(isa_bus, 0x40, 0, NULL);
- isa_create_simple(isa_bus, "i8042");
+ isa_create_simple(isa_bus, TYPE_I8042);
/* VGA setup. Don't bother loading the bios. */
pci_vga_init(pci_bus);
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index ec75b09a8f..cdcdfafe8e 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -43,6 +43,7 @@
#include "hw/timer/mc146818rtc.h"
#include "hw/dma/i8257.h"
#include "hw/timer/i8254.h"
+#include "hw/input/i8042.h"
#include "hw/audio/pcspk.h"
#include "hw/pci/msi.h"
#include "hw/sysbus.h"
diff --git a/hw/i386/vmmouse.c b/hw/i386/vmmouse.c
index 65ef55329e..5d2d278be4 100644
--- a/hw/i386/vmmouse.c
+++ b/hw/i386/vmmouse.c
@@ -25,6 +25,7 @@
#include "hw/hw.h"
#include "ui/console.h"
#include "hw/i386/pc.h"
+#include "hw/input/i8042.h"
#include "hw/qdev.h"
/* debug only vmmouse */
diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
index 116aa09819..3bf8cfe041 100644
--- a/hw/i386/vmport.c
+++ b/hw/i386/vmport.c
@@ -25,6 +25,7 @@
#include "hw/hw.h"
#include "hw/isa/isa.h"
#include "hw/i386/pc.h"
+#include "hw/input/i8042.h"
#include "sysemu/hw_accel.h"
#include "hw/qdev.h"
#include "qemu/log.h"
diff --git a/hw/input/pckbd.c b/hw/input/pckbd.c
index c479f827b6..f17f18e51b 100644
--- a/hw/input/pckbd.c
+++ b/hw/input/pckbd.c
@@ -26,6 +26,7 @@
#include "hw/isa/isa.h"
#include "hw/i386/pc.h"
#include "hw/input/ps2.h"
+#include "hw/input/i8042.h"
#include "sysemu/sysemu.h"
/* debug PC keyboard */
@@ -480,7 +481,6 @@ void i8042_mm_init(qemu_irq kbd_irq, qemu_irq mouse_irq,
qemu_register_reset(kbd_reset, s);
}
-#define TYPE_I8042 "i8042"
#define I8042(obj) OBJECT_CHECK(ISAKBDState, (obj), TYPE_I8042)
typedef struct ISAKBDState {
diff --git a/hw/mips/mips_fulong2e.c b/hw/mips/mips_fulong2e.c
index 0545fcd899..9339e02120 100644
--- a/hw/mips/mips_fulong2e.c
+++ b/hw/mips/mips_fulong2e.c
@@ -44,6 +44,7 @@
#include "hw/isa/vt82c686.h"
#include "hw/timer/mc146818rtc.h"
#include "hw/timer/i8254.h"
+#include "hw/input/i8042.h"
#include "sysemu/blockdev.h"
#include "exec/address-spaces.h"
#include "sysemu/qtest.h"
@@ -364,7 +365,7 @@ static void mips_fulong2e_init(MachineState *machine)
i8257_dma_init(isa_bus, 0);
/* Super I/O */
- isa_create_simple(isa_bus, "i8042");
+ isa_create_simple(isa_bus, TYPE_I8042);
mc146818_rtc_init(isa_bus, 2000, NULL);
diff --git a/hw/mips/mips_jazz.c b/hw/mips/mips_jazz.c
index 827ffdcd4a..5abbe30c21 100644
--- a/hw/mips/mips_jazz.c
+++ b/hw/mips/mips_jazz.c
@@ -43,6 +43,7 @@
#include "hw/timer/i8254.h"
#include "hw/display/vga.h"
#include "hw/audio/pcspk.h"
+#include "hw/input/i8042.h"
#include "sysemu/block-backend.h"
#include "hw/sysbus.h"
#include "exec/address-spaces.h"
diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c
index 9cb86c432e..cd7bd0eef6 100644
--- a/hw/mips/mips_malta.c
+++ b/hw/mips/mips_malta.c
@@ -47,6 +47,7 @@
#include "hw/loader.h"
#include "elf.h"
#include "hw/timer/mc146818rtc.h"
+#include "hw/input/i8042.h"
#include "hw/timer/i8254.h"
#include "sysemu/blockdev.h"
#include "exec/address-spaces.h"
@@ -1213,7 +1214,7 @@ void mips_malta_init(MachineState *machine)
i8257_dma_init(isa_bus, 0);
/* Super I/O */
- isa_create_simple(isa_bus, "i8042");
+ isa_create_simple(isa_bus, TYPE_I8042);
mc146818_rtc_init(isa_bus, 2000, NULL);
serial_hds_isa_init(isa_bus, 0, 2);
diff --git a/hw/mips/mips_r4k.c b/hw/mips/mips_r4k.c
index 830ee7732c..aeadc4a340 100644
--- a/hw/mips/mips_r4k.c
+++ b/hw/mips/mips_r4k.c
@@ -28,6 +28,7 @@
#include "hw/loader.h"
#include "elf.h"
#include "hw/timer/mc146818rtc.h"
+#include "hw/input/i8042.h"
#include "hw/timer/i8254.h"
#include "sysemu/block-backend.h"
#include "exec/address-spaces.h"
@@ -286,7 +287,7 @@ void mips_r4k_init(MachineState *machine)
hd[MAX_IDE_DEVS * i],
hd[MAX_IDE_DEVS * i + 1]);
- isa_create_simple(isa_bus, "i8042");
+ isa_create_simple(isa_bus, TYPE_I8042);
}
static void mips_machine_init(MachineClass *mc)
diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c
index 096d4d4cfb..ae724b0613 100644
--- a/hw/ppc/prep.c
+++ b/hw/ppc/prep.c
@@ -41,6 +41,7 @@
#include "hw/ide.h"
#include "hw/loader.h"
#include "hw/timer/mc146818rtc.h"
+#include "hw/input/i8042.h"
#include "hw/isa/pc87312.h"
#include "hw/net/ne2000-isa.h"
#include "sysemu/block-backend.h"
@@ -641,7 +642,7 @@ static void ppc_prep_init(MachineState *machine)
hd[2 * i],
hd[2 * i + 1]);
}
- isa_create_simple(isa_bus, "i8042");
+ isa_create_simple(isa_bus, TYPE_I8042);
cpu = POWERPC_CPU(first_cpu);
sysctrl->reset_irq = cpu->env.irq_inputs[PPC6xx_INPUT_HRESET];
@@ -771,7 +772,7 @@ static void ibm_40p_init(MachineState *machine)
/* add some more devices */
if (defaults_enabled()) {
- isa_create_simple(isa_bus, "i8042");
+ isa_create_simple(isa_bus, TYPE_I8042);
m48t59 = NVRAM(isa_create_simple(isa_bus, "isa-m48t59"));
dev = DEVICE(isa_create(isa_bus, "cs4231a"));
diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c
index 0ca0243821..2044a52ded 100644
--- a/hw/sparc64/sun4u.c
+++ b/hw/sparc64/sun4u.c
@@ -36,6 +36,7 @@
#include "hw/char/serial.h"
#include "hw/char/parallel.h"
#include "hw/timer/m48t59.h"
+#include "hw/input/i8042.h"
#include "hw/block/fdc.h"
#include "net/net.h"
#include "qemu/timer.h"
diff --git a/hw/unicore32/puv3.c b/hw/unicore32/puv3.c
index db26959a1d..830fe3face 100644
--- a/hw/unicore32/puv3.c
+++ b/hw/unicore32/puv3.c
@@ -20,6 +20,7 @@
#undef DEBUG_PUV3
#include "hw/unicore32/puv3.h"
+#include "hw/input/i8042.h"
#define KERNEL_LOAD_ADDR 0x03000000
#define KERNEL_MAX_SIZE 0x00800000 /* Just a guess */
diff --git a/MAINTAINERS b/MAINTAINERS
index 335c6c9f65..6622efc1da 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -931,6 +931,7 @@ F: include/hw/display/vga.h
F: include/hw/char/parallel.h
F: include/hw/dma/i8257.h
F: include/hw/i2c/pm_smbus.h
+F: include/hw/input/i8042.h
F: include/hw/timer/hpet.h
F: include/hw/timer/i8254*
F: include/hw/timer/mc146818rtc*
--
2.16.2
^ permalink raw reply related [flat|nested] 35+ messages in thread
* Re: [Qemu-devel] [PATCH 03/25] hw/input/i8042: Extract declarations from i386/pc.h into input/i8042.h
2018-03-08 22:39 ` [Qemu-devel] [PATCH 03/25] hw/input/i8042: Extract declarations from i386/pc.h into input/i8042.h Philippe Mathieu-Daudé
@ 2018-03-09 10:33 ` Mark Cave-Ayland
0 siblings, 0 replies; 35+ messages in thread
From: Mark Cave-Ayland @ 2018-03-09 10:33 UTC (permalink / raw)
To: Philippe Mathieu-Daudé,
Michael S . Tsirkin, Paolo Bonzini, Hervé Poussineau,
Marcel Apfelbaum, Aurelien Jarno, Alexey Kardashevskiy,
Thomas Huth, Laurent Vivier
Cc: Alexander Graf, Eduardo Habkost, qemu-devel, open list:PReP,
David Gibson, Guan Xuetao, Yongbok Kim, Artyom Tarasenko,
Richard Henderson
On 08/03/18 22:39, Philippe Mathieu-Daudé wrote:
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> Acked-by: David Gibson <david@gibson.dropbear.id.au> (hw/ppc)
> ---
> include/hw/i386/pc.h | 9 ---------
> include/hw/input/i8042.h | 24 ++++++++++++++++++++++++
> hw/alpha/dp264.c | 3 ++-
> hw/i386/pc.c | 1 +
> hw/i386/vmmouse.c | 1 +
> hw/i386/vmport.c | 1 +
> hw/input/pckbd.c | 2 +-
> hw/mips/mips_fulong2e.c | 3 ++-
> hw/mips/mips_jazz.c | 1 +
> hw/mips/mips_malta.c | 3 ++-
> hw/mips/mips_r4k.c | 3 ++-
> hw/ppc/prep.c | 5 +++--
> hw/sparc64/sun4u.c | 1 +
> hw/unicore32/puv3.c | 1 +
> MAINTAINERS | 1 +
> 15 files changed, 43 insertions(+), 16 deletions(-)
> create mode 100644 include/hw/input/i8042.h
>
> diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
> index f1feb18c3c..1638618dfc 100644
> --- a/include/hw/i386/pc.h
> +++ b/include/hw/i386/pc.h
> @@ -188,15 +188,6 @@ void vmport_register(unsigned char command, VMPortReadFunc *func, void *opaque);
> void vmmouse_get_data(uint32_t *data);
> void vmmouse_set_data(const uint32_t *data);
>
> -/* pckbd.c */
> -#define I8042_A20_LINE "a20"
> -
> -void i8042_mm_init(qemu_irq kbd_irq, qemu_irq mouse_irq,
> - MemoryRegion *region, ram_addr_t size,
> - hwaddr mask);
> -void i8042_isa_mouse_fake_event(void *opaque);
> -void i8042_setup_a20_line(ISADevice *dev, qemu_irq a20_out);
> -
> /* pc.c */
> extern int fd_bootchk;
>
> diff --git a/include/hw/input/i8042.h b/include/hw/input/i8042.h
> new file mode 100644
> index 0000000000..f6ff146364
> --- /dev/null
> +++ b/include/hw/input/i8042.h
> @@ -0,0 +1,24 @@
> +/*
> + * QEMU PS/2 Controller
> + *
> + * Copyright (c) 2003 Fabrice Bellard
> + *
> + * SPDX-License-Identifier: MIT
> + */
> +#ifndef HW_INPUT_I8042_H
> +#define HW_INPUT_I8042_H
> +
> +#include "hw/hw.h"
> +#include "hw/isa/isa.h"
> +
> +#define TYPE_I8042 "i8042"
> +
> +#define I8042_A20_LINE "a20"
> +
> +void i8042_mm_init(qemu_irq kbd_irq, qemu_irq mouse_irq,
> + MemoryRegion *region, ram_addr_t size,
> + hwaddr mask);
> +void i8042_isa_mouse_fake_event(void *opaque);
> +void i8042_setup_a20_line(ISADevice *dev, qemu_irq a20_out);
> +
> +#endif /* HW_INPUT_I8042_H */
> diff --git a/hw/alpha/dp264.c b/hw/alpha/dp264.c
> index 766373eec7..e13cb576fd 100644
> --- a/hw/alpha/dp264.c
> +++ b/hw/alpha/dp264.c
> @@ -19,6 +19,7 @@
> #include "hw/timer/mc146818rtc.h"
> #include "hw/ide.h"
> #include "hw/timer/i8254.h"
> +#include "hw/input/i8042.h"
> #include "hw/char/serial.h"
> #include "qemu/cutils.h"
>
> @@ -81,7 +82,7 @@ static void clipper_init(MachineState *machine)
> mc146818_rtc_init(isa_bus, 1900, rtc_irq);
>
> i8254_pit_init(isa_bus, 0x40, 0, NULL);
> - isa_create_simple(isa_bus, "i8042");
> + isa_create_simple(isa_bus, TYPE_I8042);
>
> /* VGA setup. Don't bother loading the bios. */
> pci_vga_init(pci_bus);
> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
> index ec75b09a8f..cdcdfafe8e 100644
> --- a/hw/i386/pc.c
> +++ b/hw/i386/pc.c
> @@ -43,6 +43,7 @@
> #include "hw/timer/mc146818rtc.h"
> #include "hw/dma/i8257.h"
> #include "hw/timer/i8254.h"
> +#include "hw/input/i8042.h"
> #include "hw/audio/pcspk.h"
> #include "hw/pci/msi.h"
> #include "hw/sysbus.h"
> diff --git a/hw/i386/vmmouse.c b/hw/i386/vmmouse.c
> index 65ef55329e..5d2d278be4 100644
> --- a/hw/i386/vmmouse.c
> +++ b/hw/i386/vmmouse.c
> @@ -25,6 +25,7 @@
> #include "hw/hw.h"
> #include "ui/console.h"
> #include "hw/i386/pc.h"
> +#include "hw/input/i8042.h"
> #include "hw/qdev.h"
>
> /* debug only vmmouse */
> diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
> index 116aa09819..3bf8cfe041 100644
> --- a/hw/i386/vmport.c
> +++ b/hw/i386/vmport.c
> @@ -25,6 +25,7 @@
> #include "hw/hw.h"
> #include "hw/isa/isa.h"
> #include "hw/i386/pc.h"
> +#include "hw/input/i8042.h"
> #include "sysemu/hw_accel.h"
> #include "hw/qdev.h"
> #include "qemu/log.h"
> diff --git a/hw/input/pckbd.c b/hw/input/pckbd.c
> index c479f827b6..f17f18e51b 100644
> --- a/hw/input/pckbd.c
> +++ b/hw/input/pckbd.c
> @@ -26,6 +26,7 @@
> #include "hw/isa/isa.h"
> #include "hw/i386/pc.h"
> #include "hw/input/ps2.h"
> +#include "hw/input/i8042.h"
> #include "sysemu/sysemu.h"
>
> /* debug PC keyboard */
> @@ -480,7 +481,6 @@ void i8042_mm_init(qemu_irq kbd_irq, qemu_irq mouse_irq,
> qemu_register_reset(kbd_reset, s);
> }
>
> -#define TYPE_I8042 "i8042"
> #define I8042(obj) OBJECT_CHECK(ISAKBDState, (obj), TYPE_I8042)
>
> typedef struct ISAKBDState {
> diff --git a/hw/mips/mips_fulong2e.c b/hw/mips/mips_fulong2e.c
> index 0545fcd899..9339e02120 100644
> --- a/hw/mips/mips_fulong2e.c
> +++ b/hw/mips/mips_fulong2e.c
> @@ -44,6 +44,7 @@
> #include "hw/isa/vt82c686.h"
> #include "hw/timer/mc146818rtc.h"
> #include "hw/timer/i8254.h"
> +#include "hw/input/i8042.h"
> #include "sysemu/blockdev.h"
> #include "exec/address-spaces.h"
> #include "sysemu/qtest.h"
> @@ -364,7 +365,7 @@ static void mips_fulong2e_init(MachineState *machine)
> i8257_dma_init(isa_bus, 0);
>
> /* Super I/O */
> - isa_create_simple(isa_bus, "i8042");
> + isa_create_simple(isa_bus, TYPE_I8042);
>
> mc146818_rtc_init(isa_bus, 2000, NULL);
>
> diff --git a/hw/mips/mips_jazz.c b/hw/mips/mips_jazz.c
> index 827ffdcd4a..5abbe30c21 100644
> --- a/hw/mips/mips_jazz.c
> +++ b/hw/mips/mips_jazz.c
> @@ -43,6 +43,7 @@
> #include "hw/timer/i8254.h"
> #include "hw/display/vga.h"
> #include "hw/audio/pcspk.h"
> +#include "hw/input/i8042.h"
> #include "sysemu/block-backend.h"
> #include "hw/sysbus.h"
> #include "exec/address-spaces.h"
> diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c
> index 9cb86c432e..cd7bd0eef6 100644
> --- a/hw/mips/mips_malta.c
> +++ b/hw/mips/mips_malta.c
> @@ -47,6 +47,7 @@
> #include "hw/loader.h"
> #include "elf.h"
> #include "hw/timer/mc146818rtc.h"
> +#include "hw/input/i8042.h"
> #include "hw/timer/i8254.h"
> #include "sysemu/blockdev.h"
> #include "exec/address-spaces.h"
> @@ -1213,7 +1214,7 @@ void mips_malta_init(MachineState *machine)
> i8257_dma_init(isa_bus, 0);
>
> /* Super I/O */
> - isa_create_simple(isa_bus, "i8042");
> + isa_create_simple(isa_bus, TYPE_I8042);
>
> mc146818_rtc_init(isa_bus, 2000, NULL);
> serial_hds_isa_init(isa_bus, 0, 2);
> diff --git a/hw/mips/mips_r4k.c b/hw/mips/mips_r4k.c
> index 830ee7732c..aeadc4a340 100644
> --- a/hw/mips/mips_r4k.c
> +++ b/hw/mips/mips_r4k.c
> @@ -28,6 +28,7 @@
> #include "hw/loader.h"
> #include "elf.h"
> #include "hw/timer/mc146818rtc.h"
> +#include "hw/input/i8042.h"
> #include "hw/timer/i8254.h"
> #include "sysemu/block-backend.h"
> #include "exec/address-spaces.h"
> @@ -286,7 +287,7 @@ void mips_r4k_init(MachineState *machine)
> hd[MAX_IDE_DEVS * i],
> hd[MAX_IDE_DEVS * i + 1]);
>
> - isa_create_simple(isa_bus, "i8042");
> + isa_create_simple(isa_bus, TYPE_I8042);
> }
>
> static void mips_machine_init(MachineClass *mc)
> diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c
> index 096d4d4cfb..ae724b0613 100644
> --- a/hw/ppc/prep.c
> +++ b/hw/ppc/prep.c
> @@ -41,6 +41,7 @@
> #include "hw/ide.h"
> #include "hw/loader.h"
> #include "hw/timer/mc146818rtc.h"
> +#include "hw/input/i8042.h"
> #include "hw/isa/pc87312.h"
> #include "hw/net/ne2000-isa.h"
> #include "sysemu/block-backend.h"
> @@ -641,7 +642,7 @@ static void ppc_prep_init(MachineState *machine)
> hd[2 * i],
> hd[2 * i + 1]);
> }
> - isa_create_simple(isa_bus, "i8042");
> + isa_create_simple(isa_bus, TYPE_I8042);
>
> cpu = POWERPC_CPU(first_cpu);
> sysctrl->reset_irq = cpu->env.irq_inputs[PPC6xx_INPUT_HRESET];
> @@ -771,7 +772,7 @@ static void ibm_40p_init(MachineState *machine)
>
> /* add some more devices */
> if (defaults_enabled()) {
> - isa_create_simple(isa_bus, "i8042");
> + isa_create_simple(isa_bus, TYPE_I8042);
> m48t59 = NVRAM(isa_create_simple(isa_bus, "isa-m48t59"));
>
> dev = DEVICE(isa_create(isa_bus, "cs4231a"));
> diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c
> index 0ca0243821..2044a52ded 100644
> --- a/hw/sparc64/sun4u.c
> +++ b/hw/sparc64/sun4u.c
> @@ -36,6 +36,7 @@
> #include "hw/char/serial.h"
> #include "hw/char/parallel.h"
> #include "hw/timer/m48t59.h"
> +#include "hw/input/i8042.h"
> #include "hw/block/fdc.h"
> #include "net/net.h"
> #include "qemu/timer.h"
> diff --git a/hw/unicore32/puv3.c b/hw/unicore32/puv3.c
> index db26959a1d..830fe3face 100644
> --- a/hw/unicore32/puv3.c
> +++ b/hw/unicore32/puv3.c
> @@ -20,6 +20,7 @@
>
> #undef DEBUG_PUV3
> #include "hw/unicore32/puv3.h"
> +#include "hw/input/i8042.h"
>
> #define KERNEL_LOAD_ADDR 0x03000000
> #define KERNEL_MAX_SIZE 0x00800000 /* Just a guess */
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 335c6c9f65..6622efc1da 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -931,6 +931,7 @@ F: include/hw/display/vga.h
> F: include/hw/char/parallel.h
> F: include/hw/dma/i8257.h
> F: include/hw/i2c/pm_smbus.h
> +F: include/hw/input/i8042.h
> F: include/hw/timer/hpet.h
> F: include/hw/timer/i8254*
> F: include/hw/timer/mc146818rtc*
>
Reviewed-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
ATB,
Mark.
^ permalink raw reply [flat|nested] 35+ messages in thread
* [Qemu-devel] [PATCH 04/25] MAINTAINERS: Fix the PC87312 include path
2018-03-08 22:39 [Qemu-devel] [PATCH 00/25] remove i386/pc dependency: generic SuperIO Philippe Mathieu-Daudé
` (2 preceding siblings ...)
2018-03-08 22:39 ` [Qemu-devel] [PATCH 03/25] hw/input/i8042: Extract declarations from i386/pc.h into input/i8042.h Philippe Mathieu-Daudé
@ 2018-03-08 22:39 ` Philippe Mathieu-Daudé
2018-03-08 22:39 ` [Qemu-devel] [PATCH 05/25] hw/isa/pc87312: Rename the device type as TYPE_PC87312_SUPERIO Philippe Mathieu-Daudé
` (20 subsequent siblings)
24 siblings, 0 replies; 35+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-03-08 22:39 UTC (permalink / raw)
To: Michael S . Tsirkin, Paolo Bonzini, Hervé Poussineau,
Marcel Apfelbaum, Aurelien Jarno, Alexey Kardashevskiy,
Thomas Huth
Cc: Philippe Mathieu-Daudé,
qemu-devel, Richard Henderson, Mark Cave-Ayland, Eduardo Habkost,
Yongbok Kim, Artyom Tarasenko, Guan Xuetao
Missed while moving it in 0d09e41a51aa.
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
MAINTAINERS | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/MAINTAINERS b/MAINTAINERS
index 6622efc1da..212eaa836a 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -765,9 +765,10 @@ F: hw/ppc/prep_systemio.c
F: hw/ppc/rs6000_mc.c
F: hw/pci-host/prep.[hc]
F: hw/isa/i82378.c
-F: hw/isa/pc87312.[hc]
+F: hw/isa/pc87312.c
F: hw/dma/i82374.c
F: hw/timer/m48t59-isa.c
+F: include/hw/isa/pc87312.h
F: include/hw/timer/m48t59.h
F: pc-bios/ppc_rom.bin
--
2.16.2
^ permalink raw reply related [flat|nested] 35+ messages in thread
* [Qemu-devel] [PATCH 05/25] hw/isa/pc87312: Rename the device type as TYPE_PC87312_SUPERIO
2018-03-08 22:39 [Qemu-devel] [PATCH 00/25] remove i386/pc dependency: generic SuperIO Philippe Mathieu-Daudé
` (3 preceding siblings ...)
2018-03-08 22:39 ` [Qemu-devel] [PATCH 04/25] MAINTAINERS: Fix the PC87312 include path Philippe Mathieu-Daudé
@ 2018-03-08 22:39 ` Philippe Mathieu-Daudé
2018-03-09 10:33 ` Mark Cave-Ayland
2018-03-08 22:39 ` [Qemu-devel] [PATCH 06/25] hw/isa/pc87312: Use uint16_t for the ISA I/O base address Philippe Mathieu-Daudé
` (19 subsequent siblings)
24 siblings, 1 reply; 35+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-03-08 22:39 UTC (permalink / raw)
To: Michael S . Tsirkin, Paolo Bonzini, Hervé Poussineau,
Marcel Apfelbaum, Aurelien Jarno, Mark Cave-Ayland,
Alexey Kardashevskiy, Thomas Huth, Laurent Vivier
Cc: Philippe Mathieu-Daudé,
qemu-devel, Richard Henderson, Eduardo Habkost, Yongbok Kim,
Artyom Tarasenko, Guan Xuetao, David Gibson, Alexander Graf,
open list:PReP
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Acked-by: David Gibson <david@gibson.dropbear.id.au> (hw/ppc)
---
include/hw/isa/pc87312.h | 4 ++--
hw/isa/pc87312.c | 2 +-
hw/ppc/prep.c | 2 +-
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/include/hw/isa/pc87312.h b/include/hw/isa/pc87312.h
index bf74470d40..710eb1c807 100644
--- a/include/hw/isa/pc87312.h
+++ b/include/hw/isa/pc87312.h
@@ -28,8 +28,8 @@
#include "hw/isa/isa.h"
-#define TYPE_PC87312 "pc87312"
-#define PC87312(obj) OBJECT_CHECK(PC87312State, (obj), TYPE_PC87312)
+#define TYPE_PC87312_SUPERIO "pc87312"
+#define PC87312(obj) OBJECT_CHECK(PC87312State, (obj), TYPE_PC87312_SUPERIO)
typedef struct PC87312State {
ISADevice dev;
diff --git a/hw/isa/pc87312.c b/hw/isa/pc87312.c
index 48b29e3c3c..e9edbc6c50 100644
--- a/hw/isa/pc87312.c
+++ b/hw/isa/pc87312.c
@@ -391,7 +391,7 @@ static void pc87312_class_init(ObjectClass *klass, void *data)
}
static const TypeInfo pc87312_type_info = {
- .name = TYPE_PC87312,
+ .name = TYPE_PC87312_SUPERIO,
.parent = TYPE_ISA_DEVICE,
.instance_size = sizeof(PC87312State),
.instance_init = pc87312_initfn,
diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c
index ae724b0613..610ec7ec32 100644
--- a/hw/ppc/prep.c
+++ b/hw/ppc/prep.c
@@ -613,7 +613,7 @@ static void ppc_prep_init(MachineState *machine)
isa_bus = ISA_BUS(qdev_get_child_bus(DEVICE(pci), "isa.0"));
/* Super I/O (parallel + serial ports) */
- isa = isa_create(isa_bus, TYPE_PC87312);
+ isa = isa_create(isa_bus, TYPE_PC87312_SUPERIO);
dev = DEVICE(isa);
qdev_prop_set_uint8(dev, "config", 13); /* fdc, ser0, ser1, par0 */
qdev_init_nofail(dev);
--
2.16.2
^ permalink raw reply related [flat|nested] 35+ messages in thread
* Re: [Qemu-devel] [PATCH 05/25] hw/isa/pc87312: Rename the device type as TYPE_PC87312_SUPERIO
2018-03-08 22:39 ` [Qemu-devel] [PATCH 05/25] hw/isa/pc87312: Rename the device type as TYPE_PC87312_SUPERIO Philippe Mathieu-Daudé
@ 2018-03-09 10:33 ` Mark Cave-Ayland
0 siblings, 0 replies; 35+ messages in thread
From: Mark Cave-Ayland @ 2018-03-09 10:33 UTC (permalink / raw)
To: Philippe Mathieu-Daudé,
Michael S . Tsirkin, Paolo Bonzini, Hervé Poussineau,
Marcel Apfelbaum, Aurelien Jarno, Alexey Kardashevskiy,
Thomas Huth, Laurent Vivier
Cc: Alexander Graf, Eduardo Habkost, qemu-devel, open list:PReP,
David Gibson, Guan Xuetao, Yongbok Kim, Artyom Tarasenko,
Richard Henderson
On 08/03/18 22:39, Philippe Mathieu-Daudé wrote:
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> Acked-by: David Gibson <david@gibson.dropbear.id.au> (hw/ppc)
> ---
> include/hw/isa/pc87312.h | 4 ++--
> hw/isa/pc87312.c | 2 +-
> hw/ppc/prep.c | 2 +-
> 3 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/include/hw/isa/pc87312.h b/include/hw/isa/pc87312.h
> index bf74470d40..710eb1c807 100644
> --- a/include/hw/isa/pc87312.h
> +++ b/include/hw/isa/pc87312.h
> @@ -28,8 +28,8 @@
> #include "hw/isa/isa.h"
>
>
> -#define TYPE_PC87312 "pc87312"
> -#define PC87312(obj) OBJECT_CHECK(PC87312State, (obj), TYPE_PC87312)
> +#define TYPE_PC87312_SUPERIO "pc87312"
> +#define PC87312(obj) OBJECT_CHECK(PC87312State, (obj), TYPE_PC87312_SUPERIO)
>
> typedef struct PC87312State {
> ISADevice dev;
> diff --git a/hw/isa/pc87312.c b/hw/isa/pc87312.c
> index 48b29e3c3c..e9edbc6c50 100644
> --- a/hw/isa/pc87312.c
> +++ b/hw/isa/pc87312.c
> @@ -391,7 +391,7 @@ static void pc87312_class_init(ObjectClass *klass, void *data)
> }
>
> static const TypeInfo pc87312_type_info = {
> - .name = TYPE_PC87312,
> + .name = TYPE_PC87312_SUPERIO,
> .parent = TYPE_ISA_DEVICE,
> .instance_size = sizeof(PC87312State),
> .instance_init = pc87312_initfn,
> diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c
> index ae724b0613..610ec7ec32 100644
> --- a/hw/ppc/prep.c
> +++ b/hw/ppc/prep.c
> @@ -613,7 +613,7 @@ static void ppc_prep_init(MachineState *machine)
> isa_bus = ISA_BUS(qdev_get_child_bus(DEVICE(pci), "isa.0"));
>
> /* Super I/O (parallel + serial ports) */
> - isa = isa_create(isa_bus, TYPE_PC87312);
> + isa = isa_create(isa_bus, TYPE_PC87312_SUPERIO);
> dev = DEVICE(isa);
> qdev_prop_set_uint8(dev, "config", 13); /* fdc, ser0, ser1, par0 */
> qdev_init_nofail(dev);
>
Reviewed-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
ATB,
Mark.
^ permalink raw reply [flat|nested] 35+ messages in thread
* [Qemu-devel] [PATCH 06/25] hw/isa/pc87312: Use uint16_t for the ISA I/O base address
2018-03-08 22:39 [Qemu-devel] [PATCH 00/25] remove i386/pc dependency: generic SuperIO Philippe Mathieu-Daudé
` (4 preceding siblings ...)
2018-03-08 22:39 ` [Qemu-devel] [PATCH 05/25] hw/isa/pc87312: Rename the device type as TYPE_PC87312_SUPERIO Philippe Mathieu-Daudé
@ 2018-03-08 22:39 ` Philippe Mathieu-Daudé
2018-03-08 22:39 ` [Qemu-devel] [PATCH 07/25] hw/isa/pc87312: Use 'unsigned int' for the irq value Philippe Mathieu-Daudé
` (18 subsequent siblings)
24 siblings, 0 replies; 35+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-03-08 22:39 UTC (permalink / raw)
To: Michael S . Tsirkin, Paolo Bonzini, Hervé Poussineau,
Marcel Apfelbaum, Aurelien Jarno, Alexey Kardashevskiy,
Thomas Huth
Cc: Philippe Mathieu-Daudé,
qemu-devel, Richard Henderson, Mark Cave-Ayland, Eduardo Habkost,
Yongbok Kim, Artyom Tarasenko, Guan Xuetao, open list:PReP
This matches the isa_register_ioport() prototype.
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
include/hw/isa/pc87312.h | 2 +-
hw/isa/pc87312.c | 14 +++++++-------
2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/include/hw/isa/pc87312.h b/include/hw/isa/pc87312.h
index 710eb1c807..b65b219a8a 100644
--- a/include/hw/isa/pc87312.h
+++ b/include/hw/isa/pc87312.h
@@ -34,7 +34,7 @@
typedef struct PC87312State {
ISADevice dev;
- uint32_t iobase;
+ uint16_t iobase;
uint8_t config; /* initial configuration */
struct {
diff --git a/hw/isa/pc87312.c b/hw/isa/pc87312.c
index e9edbc6c50..105c23e680 100644
--- a/hw/isa/pc87312.c
+++ b/hw/isa/pc87312.c
@@ -69,9 +69,9 @@ static inline bool is_parallel_enabled(PC87312State *s)
return s->regs[REG_FER] & FER_PARALLEL_EN;
}
-static const uint32_t parallel_base[] = { 0x378, 0x3bc, 0x278, 0x00 };
+static const uint16_t parallel_base[] = { 0x378, 0x3bc, 0x278, 0x00 };
-static inline uint32_t get_parallel_iobase(PC87312State *s)
+static inline uint16_t get_parallel_iobase(PC87312State *s)
{
return parallel_base[s->regs[REG_FAR] & FAR_PARALLEL_ADDR];
}
@@ -92,12 +92,12 @@ static inline uint32_t get_parallel_irq(PC87312State *s)
/* UARTs */
-static const uint32_t uart_base[2][4] = {
+static const uint16_t uart_base[2][4] = {
{ 0x3e8, 0x338, 0x2e8, 0x220 },
{ 0x2e8, 0x238, 0x2e0, 0x228 }
};
-static inline uint32_t get_uart_iobase(PC87312State *s, int i)
+static inline uint16_t get_uart_iobase(PC87312State *s, int i)
{
int idx;
idx = (s->regs[REG_FAR] >> (2 * i + 2)) & 0x3;
@@ -130,7 +130,7 @@ static inline bool is_fdc_enabled(PC87312State *s)
return s->regs[REG_FER] & FER_FDC_EN;
}
-static inline uint32_t get_fdc_iobase(PC87312State *s)
+static inline uint16_t get_fdc_iobase(PC87312State *s)
{
return (s->regs[REG_FER] & FER_FDC_ADDR) ? 0x370 : 0x3f0;
}
@@ -143,7 +143,7 @@ static inline bool is_ide_enabled(PC87312State *s)
return s->regs[REG_FER] & FER_IDE_EN;
}
-static inline uint32_t get_ide_iobase(PC87312State *s)
+static inline uint16_t get_ide_iobase(PC87312State *s)
{
return (s->regs[REG_FER] & FER_IDE_ADDR) ? 0x170 : 0x1f0;
}
@@ -373,7 +373,7 @@ static const VMStateDescription vmstate_pc87312 = {
};
static Property pc87312_properties[] = {
- DEFINE_PROP_UINT32("iobase", PC87312State, iobase, 0x398),
+ DEFINE_PROP_UINT16("iobase", PC87312State, iobase, 0x398),
DEFINE_PROP_UINT8("config", PC87312State, config, 1),
DEFINE_PROP_END_OF_LIST()
};
--
2.16.2
^ permalink raw reply related [flat|nested] 35+ messages in thread
* [Qemu-devel] [PATCH 07/25] hw/isa/pc87312: Use 'unsigned int' for the irq value
2018-03-08 22:39 [Qemu-devel] [PATCH 00/25] remove i386/pc dependency: generic SuperIO Philippe Mathieu-Daudé
` (5 preceding siblings ...)
2018-03-08 22:39 ` [Qemu-devel] [PATCH 06/25] hw/isa/pc87312: Use uint16_t for the ISA I/O base address Philippe Mathieu-Daudé
@ 2018-03-08 22:39 ` Philippe Mathieu-Daudé
2018-03-09 10:35 ` Mark Cave-Ayland
2018-03-08 22:39 ` [Qemu-devel] [PATCH 08/25] hw/isa/superio: Add a Super I/O template based on the PC87312 device Philippe Mathieu-Daudé
` (17 subsequent siblings)
24 siblings, 1 reply; 35+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-03-08 22:39 UTC (permalink / raw)
To: Michael S . Tsirkin, Paolo Bonzini, Hervé Poussineau,
Marcel Apfelbaum, Aurelien Jarno, Alexey Kardashevskiy,
Thomas Huth
Cc: Philippe Mathieu-Daudé,
qemu-devel, Richard Henderson, Mark Cave-Ayland, Eduardo Habkost,
Yongbok Kim, Artyom Tarasenko, Guan Xuetao, open list:PReP
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
hw/isa/pc87312.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/hw/isa/pc87312.c b/hw/isa/pc87312.c
index 105c23e680..fda91fed21 100644
--- a/hw/isa/pc87312.c
+++ b/hw/isa/pc87312.c
@@ -76,9 +76,9 @@ static inline uint16_t get_parallel_iobase(PC87312State *s)
return parallel_base[s->regs[REG_FAR] & FAR_PARALLEL_ADDR];
}
-static const uint32_t parallel_irq[] = { 5, 7, 5, 0 };
+static const unsigned int parallel_irq[] = { 5, 7, 5, 0 };
-static inline uint32_t get_parallel_irq(PC87312State *s)
+static inline unsigned int get_parallel_irq(PC87312State *s)
{
int idx;
idx = (s->regs[REG_FAR] & FAR_PARALLEL_ADDR);
@@ -110,7 +110,7 @@ static inline uint16_t get_uart_iobase(PC87312State *s, int i)
}
}
-static inline uint32_t get_uart_irq(PC87312State *s, int i)
+static inline unsigned int get_uart_irq(PC87312State *s, int i)
{
int idx;
idx = (s->regs[REG_FAR] >> (2 * i + 2)) & 0x3;
--
2.16.2
^ permalink raw reply related [flat|nested] 35+ messages in thread
* Re: [Qemu-devel] [PATCH 07/25] hw/isa/pc87312: Use 'unsigned int' for the irq value
2018-03-08 22:39 ` [Qemu-devel] [PATCH 07/25] hw/isa/pc87312: Use 'unsigned int' for the irq value Philippe Mathieu-Daudé
@ 2018-03-09 10:35 ` Mark Cave-Ayland
0 siblings, 0 replies; 35+ messages in thread
From: Mark Cave-Ayland @ 2018-03-09 10:35 UTC (permalink / raw)
To: Philippe Mathieu-Daudé,
Michael S . Tsirkin, Paolo Bonzini, Hervé Poussineau,
Marcel Apfelbaum, Aurelien Jarno, Alexey Kardashevskiy,
Thomas Huth
Cc: Eduardo Habkost, qemu-devel, open list:PReP, Guan Xuetao,
Yongbok Kim, Artyom Tarasenko, Richard Henderson
On 08/03/18 22:39, Philippe Mathieu-Daudé wrote:
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
> hw/isa/pc87312.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/hw/isa/pc87312.c b/hw/isa/pc87312.c
> index 105c23e680..fda91fed21 100644
> --- a/hw/isa/pc87312.c
> +++ b/hw/isa/pc87312.c
> @@ -76,9 +76,9 @@ static inline uint16_t get_parallel_iobase(PC87312State *s)
> return parallel_base[s->regs[REG_FAR] & FAR_PARALLEL_ADDR];
> }
>
> -static const uint32_t parallel_irq[] = { 5, 7, 5, 0 };
> +static const unsigned int parallel_irq[] = { 5, 7, 5, 0 };
>
> -static inline uint32_t get_parallel_irq(PC87312State *s)
> +static inline unsigned int get_parallel_irq(PC87312State *s)
> {
> int idx;
> idx = (s->regs[REG_FAR] & FAR_PARALLEL_ADDR);
> @@ -110,7 +110,7 @@ static inline uint16_t get_uart_iobase(PC87312State *s, int i)
> }
> }
>
> -static inline uint32_t get_uart_irq(PC87312State *s, int i)
> +static inline unsigned int get_uart_irq(PC87312State *s, int i)
> {
> int idx;
> idx = (s->regs[REG_FAR] >> (2 * i + 2)) & 0x3;
>
Reviewed-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
ATB,
Mark.
^ permalink raw reply [flat|nested] 35+ messages in thread
* [Qemu-devel] [PATCH 08/25] hw/isa/superio: Add a Super I/O template based on the PC87312 device
2018-03-08 22:39 [Qemu-devel] [PATCH 00/25] remove i386/pc dependency: generic SuperIO Philippe Mathieu-Daudé
` (6 preceding siblings ...)
2018-03-08 22:39 ` [Qemu-devel] [PATCH 07/25] hw/isa/pc87312: Use 'unsigned int' for the irq value Philippe Mathieu-Daudé
@ 2018-03-08 22:39 ` Philippe Mathieu-Daudé
2018-03-08 22:39 ` [Qemu-devel] [PATCH 09/25] hw/isa/pc87312: Inherit from the abstract TYPE_ISA_SUPERIO Philippe Mathieu-Daudé
` (16 subsequent siblings)
24 siblings, 0 replies; 35+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-03-08 22:39 UTC (permalink / raw)
To: Michael S . Tsirkin, Paolo Bonzini, Hervé Poussineau,
Marcel Apfelbaum, Aurelien Jarno, Mark Cave-Ayland,
Alexey Kardashevskiy, Thomas Huth
Cc: Philippe Mathieu-Daudé,
qemu-devel, Richard Henderson, Eduardo Habkost, Yongbok Kim,
Artyom Tarasenko, Guan Xuetao
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
include/hw/isa/superio.h | 44 ++++++++++++++++++++++++++++++++++++++++++++
hw/isa/isa-superio.c | 28 ++++++++++++++++++++++++++++
MAINTAINERS | 2 ++
hw/isa/Makefile.objs | 1 +
4 files changed, 75 insertions(+)
create mode 100644 include/hw/isa/superio.h
create mode 100644 hw/isa/isa-superio.c
diff --git a/include/hw/isa/superio.h b/include/hw/isa/superio.h
new file mode 100644
index 0000000000..cff6ad6c08
--- /dev/null
+++ b/include/hw/isa/superio.h
@@ -0,0 +1,44 @@
+/*
+ * Generic ISA Super I/O
+ *
+ * Copyright (c) 2018 Philippe Mathieu-Daudé
+ *
+ * This code is licensed under the GNU GPLv2 and later.
+ * See the COPYING file in the top-level directory.
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+#ifndef HW_ISA_SUPERIO_H
+#define HW_ISA_SUPERIO_H
+
+#include "qemu-common.h"
+#include "sysemu/sysemu.h"
+#include "hw/isa/isa.h"
+
+#define TYPE_ISA_SUPERIO "isa-superio"
+#define ISA_SUPERIO(obj) \
+ OBJECT_CHECK(ISASuperIODevice, (obj), TYPE_ISA_SUPERIO)
+#define ISA_SUPERIO_GET_CLASS(obj) \
+ OBJECT_GET_CLASS(ISASuperIOClass, (obj), TYPE_ISA_SUPERIO)
+#define ISA_SUPERIO_CLASS(klass) \
+ OBJECT_CLASS_CHECK(ISASuperIOClass, (klass), TYPE_ISA_SUPERIO)
+
+typedef struct ISASuperIODevice {
+ ISADevice parent_obj;
+} ISASuperIODevice;
+
+typedef struct ISASuperIOFuncs {
+ size_t count;
+ bool (*is_enabled)(ISASuperIODevice *sio, uint8_t index);
+ uint16_t (*get_iobase)(ISASuperIODevice *sio, uint8_t index);
+ unsigned int (*get_irq)(ISASuperIODevice *sio, uint8_t index);
+ unsigned int (*get_dma)(ISASuperIODevice *sio, uint8_t index);
+} ISASuperIOFuncs;
+
+typedef struct ISASuperIOClass {
+ /*< private >*/
+ ISADeviceClass parent_class;
+ /*< public >*/
+ DeviceRealize parent_realize;
+} ISASuperIOClass;
+
+#endif /* HW_ISA_SUPERIO_H */
diff --git a/hw/isa/isa-superio.c b/hw/isa/isa-superio.c
new file mode 100644
index 0000000000..14ec16f831
--- /dev/null
+++ b/hw/isa/isa-superio.c
@@ -0,0 +1,28 @@
+/*
+ * Generic ISA Super I/O
+ *
+ * Copyright (c) 2010-2012 Herve Poussineau
+ * Copyright (c) 2011-2012 Andreas Färber
+ * Copyright (c) 2018 Philippe Mathieu-Daudé
+ *
+ * This code is licensed under the GNU GPLv2 and later.
+ * See the COPYING file in the top-level directory.
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+#include "qemu/osdep.h"
+#include "hw/isa/superio.h"
+#include "trace.h"
+
+static const TypeInfo isa_superio_type_info = {
+ .name = TYPE_ISA_SUPERIO,
+ .parent = TYPE_ISA_DEVICE,
+ .abstract = true,
+ .class_size = sizeof(ISASuperIOClass),
+};
+
+static void isa_superio_register_types(void)
+{
+ type_register_static(&isa_superio_type_info);
+}
+
+type_init(isa_superio_register_types)
diff --git a/MAINTAINERS b/MAINTAINERS
index 212eaa836a..98a8918c20 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -922,6 +922,7 @@ F: hw/input/pckbd.c
F: hw/intc/apic*
F: hw/intc/ioapic*
F: hw/intc/i8259*
+F: hw/isa/isa-superio.c
F: hw/misc/debugexit.c
F: hw/misc/pc-testdev.c
F: hw/timer/hpet*
@@ -933,6 +934,7 @@ F: include/hw/char/parallel.h
F: include/hw/dma/i8257.h
F: include/hw/i2c/pm_smbus.h
F: include/hw/input/i8042.h
+F: include/hw/isa/superio.h
F: include/hw/timer/hpet.h
F: include/hw/timer/i8254*
F: include/hw/timer/mc146818rtc*
diff --git a/hw/isa/Makefile.objs b/hw/isa/Makefile.objs
index fb37c55cf2..cac655ba58 100644
--- a/hw/isa/Makefile.objs
+++ b/hw/isa/Makefile.objs
@@ -1,4 +1,5 @@
common-obj-$(CONFIG_ISA_BUS) += isa-bus.o
+common-obj-$(CONFIG_ISA_BUS) += isa-superio.o
common-obj-$(CONFIG_APM) += apm.o
common-obj-$(CONFIG_I82378) += i82378.o
common-obj-$(CONFIG_PC87312) += pc87312.o
--
2.16.2
^ permalink raw reply related [flat|nested] 35+ messages in thread
* [Qemu-devel] [PATCH 09/25] hw/isa/pc87312: Inherit from the abstract TYPE_ISA_SUPERIO
2018-03-08 22:39 [Qemu-devel] [PATCH 00/25] remove i386/pc dependency: generic SuperIO Philippe Mathieu-Daudé
` (7 preceding siblings ...)
2018-03-08 22:39 ` [Qemu-devel] [PATCH 08/25] hw/isa/superio: Add a Super I/O template based on the PC87312 device Philippe Mathieu-Daudé
@ 2018-03-08 22:39 ` Philippe Mathieu-Daudé
2018-03-08 22:39 ` [Qemu-devel] [PATCH 10/25] hw/isa/superio: Factor out the parallel code from pc87312.c Philippe Mathieu-Daudé
` (15 subsequent siblings)
24 siblings, 0 replies; 35+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-03-08 22:39 UTC (permalink / raw)
To: Michael S . Tsirkin, Paolo Bonzini, Hervé Poussineau,
Marcel Apfelbaum, Aurelien Jarno, Mark Cave-Ayland,
Alexey Kardashevskiy, Thomas Huth
Cc: Philippe Mathieu-Daudé,
qemu-devel, Richard Henderson, Eduardo Habkost, Yongbok Kim,
Artyom Tarasenko, Guan Xuetao, open list:PReP
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
include/hw/isa/pc87312.h | 6 ++++--
hw/isa/pc87312.c | 11 ++++++++++-
2 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/include/hw/isa/pc87312.h b/include/hw/isa/pc87312.h
index b65b219a8a..f3761d6fe1 100644
--- a/include/hw/isa/pc87312.h
+++ b/include/hw/isa/pc87312.h
@@ -25,14 +25,16 @@
#ifndef QEMU_PC87312_H
#define QEMU_PC87312_H
-#include "hw/isa/isa.h"
+#include "hw/isa/superio.h"
#define TYPE_PC87312_SUPERIO "pc87312"
#define PC87312(obj) OBJECT_CHECK(PC87312State, (obj), TYPE_PC87312_SUPERIO)
typedef struct PC87312State {
- ISADevice dev;
+ /*< private >*/
+ ISASuperIODevice parent_dev;
+ /*< public >*/
uint16_t iobase;
uint8_t config; /* initial configuration */
diff --git a/hw/isa/pc87312.c b/hw/isa/pc87312.c
index fda91fed21..6b8100ff56 100644
--- a/hw/isa/pc87312.c
+++ b/hw/isa/pc87312.c
@@ -270,6 +270,7 @@ static void pc87312_realize(DeviceState *dev, Error **errp)
ISABus *bus;
Chardev *chr;
DriveInfo *drive;
+ Error *local_err = NULL;
char name[5];
int i;
@@ -279,6 +280,12 @@ static void pc87312_realize(DeviceState *dev, Error **errp)
isa_register_ioport(isa, &s->io, s->iobase);
pc87312_hard_reset(s);
+ ISA_SUPERIO_GET_CLASS(dev)->parent_realize(dev, &local_err);
+ if (local_err) {
+ error_propagate(errp, local_err);
+ return;
+ }
+
if (is_parallel_enabled(s)) {
/* FIXME use a qdev chardev prop instead of parallel_hds[] */
chr = parallel_hds[0];
@@ -381,7 +388,9 @@ static Property pc87312_properties[] = {
static void pc87312_class_init(ObjectClass *klass, void *data)
{
DeviceClass *dc = DEVICE_CLASS(klass);
+ ISASuperIOClass *sc = ISA_SUPERIO_CLASS(klass);
+ sc->parent_realize = dc->realize;
dc->realize = pc87312_realize;
dc->reset = pc87312_reset;
dc->vmsd = &vmstate_pc87312;
@@ -392,7 +401,7 @@ static void pc87312_class_init(ObjectClass *klass, void *data)
static const TypeInfo pc87312_type_info = {
.name = TYPE_PC87312_SUPERIO,
- .parent = TYPE_ISA_DEVICE,
+ .parent = TYPE_ISA_SUPERIO,
.instance_size = sizeof(PC87312State),
.instance_init = pc87312_initfn,
.class_init = pc87312_class_init,
--
2.16.2
^ permalink raw reply related [flat|nested] 35+ messages in thread
* [Qemu-devel] [PATCH 10/25] hw/isa/superio: Factor out the parallel code from pc87312.c
2018-03-08 22:39 [Qemu-devel] [PATCH 00/25] remove i386/pc dependency: generic SuperIO Philippe Mathieu-Daudé
` (8 preceding siblings ...)
2018-03-08 22:39 ` [Qemu-devel] [PATCH 09/25] hw/isa/pc87312: Inherit from the abstract TYPE_ISA_SUPERIO Philippe Mathieu-Daudé
@ 2018-03-08 22:39 ` Philippe Mathieu-Daudé
2018-03-08 22:39 ` [Qemu-devel] [PATCH 11/25] hw/isa/superio: Factor out the serial " Philippe Mathieu-Daudé
` (14 subsequent siblings)
24 siblings, 0 replies; 35+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-03-08 22:39 UTC (permalink / raw)
To: Michael S . Tsirkin, Paolo Bonzini, Hervé Poussineau,
Marcel Apfelbaum, Aurelien Jarno, Mark Cave-Ayland,
Alexey Kardashevskiy, Thomas Huth
Cc: Philippe Mathieu-Daudé,
qemu-devel, Richard Henderson, Eduardo Habkost, Yongbok Kim,
Artyom Tarasenko, Guan Xuetao, open list:PReP
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
include/hw/isa/pc87312.h | 4 ---
include/hw/isa/superio.h | 6 +++++
hw/isa/isa-superio.c | 65 ++++++++++++++++++++++++++++++++++++++++++++++++
hw/isa/pc87312.c | 38 +++++++++++-----------------
hw/isa/trace-events | 4 ++-
5 files changed, 89 insertions(+), 28 deletions(-)
diff --git a/include/hw/isa/pc87312.h b/include/hw/isa/pc87312.h
index f3761d6fe1..bcc4578479 100644
--- a/include/hw/isa/pc87312.h
+++ b/include/hw/isa/pc87312.h
@@ -39,10 +39,6 @@ typedef struct PC87312State {
uint16_t iobase;
uint8_t config; /* initial configuration */
- struct {
- ISADevice *dev;
- } parallel;
-
struct {
ISADevice *dev;
} uart[2];
diff --git a/include/hw/isa/superio.h b/include/hw/isa/superio.h
index cff6ad6c08..e9879cfde1 100644
--- a/include/hw/isa/superio.h
+++ b/include/hw/isa/superio.h
@@ -23,7 +23,11 @@
OBJECT_CLASS_CHECK(ISASuperIOClass, (klass), TYPE_ISA_SUPERIO)
typedef struct ISASuperIODevice {
+ /*< private >*/
ISADevice parent_obj;
+ /*< public >*/
+
+ ISADevice *parallel[MAX_PARALLEL_PORTS];
} ISASuperIODevice;
typedef struct ISASuperIOFuncs {
@@ -39,6 +43,8 @@ typedef struct ISASuperIOClass {
ISADeviceClass parent_class;
/*< public >*/
DeviceRealize parent_realize;
+
+ ISASuperIOFuncs parallel;
} ISASuperIOClass;
#endif /* HW_ISA_SUPERIO_H */
diff --git a/hw/isa/isa-superio.c b/hw/isa/isa-superio.c
index 14ec16f831..eb263fcc3a 100644
--- a/hw/isa/isa-superio.c
+++ b/hw/isa/isa-superio.c
@@ -10,14 +10,79 @@
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#include "qemu/osdep.h"
+#include "qemu/error-report.h"
+#include "sysemu/sysemu.h"
+#include "chardev/char.h"
#include "hw/isa/superio.h"
#include "trace.h"
+static void isa_superio_realize(DeviceState *dev, Error **errp)
+{
+ ISASuperIODevice *sio = ISA_SUPERIO(dev);
+ ISASuperIOClass *k = ISA_SUPERIO_GET_CLASS(sio);
+ ISABus *bus = isa_bus_from_device(ISA_DEVICE(dev));
+ ISADevice *isa;
+ DeviceState *d;
+ Chardev *chr;
+ char *name;
+ int i;
+
+ /* Parallel port */
+ for (i = 0; i < k->parallel.count; i++) {
+ if (i >= ARRAY_SIZE(sio->parallel)) {
+ warn_report("superio: ignoring %td parallel controllers",
+ k->parallel.count - ARRAY_SIZE(sio->parallel));
+ break;
+ }
+ if (!k->parallel.is_enabled || k->parallel.is_enabled(sio, i)) {
+ /* FIXME use a qdev chardev prop instead of parallel_hds[] */
+ chr = parallel_hds[i];
+ if (chr == NULL || chr->be) {
+ name = g_strdup_printf("discarding-parallel%d", i);
+ chr = qemu_chr_new(name, "null");
+ } else {
+ name = g_strdup_printf("parallel%d", i);
+ }
+ isa = isa_create(bus, "isa-parallel");
+ d = DEVICE(isa);
+ qdev_prop_set_uint32(d, "index", i);
+ if (k->parallel.get_iobase) {
+ qdev_prop_set_uint32(d, "iobase",
+ k->parallel.get_iobase(sio, i));
+ }
+ if (k->parallel.get_irq) {
+ qdev_prop_set_uint32(d, "irq", k->parallel.get_irq(sio, i));
+ }
+ qdev_prop_set_chr(d, "chardev", chr);
+ qdev_init_nofail(d);
+ sio->parallel[i] = isa;
+ trace_superio_create_parallel(i,
+ k->parallel.get_iobase ?
+ k->parallel.get_iobase(sio, i) : -1,
+ k->parallel.get_irq ?
+ k->parallel.get_irq(sio, i) : -1);
+ object_property_add_child(OBJECT(dev), name,
+ OBJECT(sio->parallel[i]), NULL);
+ g_free(name);
+ }
+ }
+}
+
+static void isa_superio_class_init(ObjectClass *oc, void *data)
+{
+ DeviceClass *dc = DEVICE_CLASS(oc);
+
+ dc->realize = isa_superio_realize;
+ /* Reason: Uses parallel_hds[0] in realize(), so it can't be used twice */
+ dc->user_creatable = false;
+}
+
static const TypeInfo isa_superio_type_info = {
.name = TYPE_ISA_SUPERIO,
.parent = TYPE_ISA_DEVICE,
.abstract = true,
.class_size = sizeof(ISASuperIOClass),
+ .class_init = isa_superio_class_init,
};
static void isa_superio_register_types(void)
diff --git a/hw/isa/pc87312.c b/hw/isa/pc87312.c
index 6b8100ff56..1c15715c69 100644
--- a/hw/isa/pc87312.c
+++ b/hw/isa/pc87312.c
@@ -64,22 +64,25 @@
/* Parallel port */
-static inline bool is_parallel_enabled(PC87312State *s)
+static bool is_parallel_enabled(ISASuperIODevice *sio, uint8_t index)
{
- return s->regs[REG_FER] & FER_PARALLEL_EN;
+ PC87312State *s = PC87312(sio);
+ return index ? false : s->regs[REG_FER] & FER_PARALLEL_EN;
}
static const uint16_t parallel_base[] = { 0x378, 0x3bc, 0x278, 0x00 };
-static inline uint16_t get_parallel_iobase(PC87312State *s)
+static uint16_t get_parallel_iobase(ISASuperIODevice *sio, uint8_t index)
{
+ PC87312State *s = PC87312(sio);
return parallel_base[s->regs[REG_FAR] & FAR_PARALLEL_ADDR];
}
static const unsigned int parallel_irq[] = { 5, 7, 5, 0 };
-static inline unsigned int get_parallel_irq(PC87312State *s)
+static unsigned int get_parallel_irq(ISASuperIODevice *sio, uint8_t index)
{
+ PC87312State *s = PC87312(sio);
int idx;
idx = (s->regs[REG_FAR] & FAR_PARALLEL_ADDR);
if (idx == 0) {
@@ -286,24 +289,6 @@ static void pc87312_realize(DeviceState *dev, Error **errp)
return;
}
- if (is_parallel_enabled(s)) {
- /* FIXME use a qdev chardev prop instead of parallel_hds[] */
- chr = parallel_hds[0];
- if (chr == NULL) {
- chr = qemu_chr_new("par0", "null");
- }
- isa = isa_create(bus, "isa-parallel");
- d = DEVICE(isa);
- qdev_prop_set_uint32(d, "index", 0);
- qdev_prop_set_uint32(d, "iobase", get_parallel_iobase(s));
- qdev_prop_set_uint32(d, "irq", get_parallel_irq(s));
- qdev_prop_set_chr(d, "chardev", chr);
- qdev_init_nofail(d);
- s->parallel.dev = isa;
- trace_pc87312_info_parallel(get_parallel_iobase(s),
- get_parallel_irq(s));
- }
-
for (i = 0; i < 2; i++) {
if (is_uart_enabled(s, i)) {
/* FIXME use a qdev chardev prop instead of serial_hds[] */
@@ -395,8 +380,15 @@ static void pc87312_class_init(ObjectClass *klass, void *data)
dc->reset = pc87312_reset;
dc->vmsd = &vmstate_pc87312;
dc->props = pc87312_properties;
- /* Reason: Uses parallel_hds[0] in realize(), so it can't be used twice */
+ /* Reason: Uses serial_hds[0] in realize(), so it can't be used twice */
dc->user_creatable = false;
+
+ sc->parallel = (ISASuperIOFuncs){
+ .count = 1,
+ .is_enabled = is_parallel_enabled,
+ .get_iobase = get_parallel_iobase,
+ .get_irq = get_parallel_irq,
+ };
}
static const TypeInfo pc87312_type_info = {
diff --git a/hw/isa/trace-events b/hw/isa/trace-events
index a4ab4e3634..97b1949981 100644
--- a/hw/isa/trace-events
+++ b/hw/isa/trace-events
@@ -1,9 +1,11 @@
# See docs/devel/tracing.txt for syntax documentation.
+# hw/isa/isa-superio.c
+superio_create_parallel(int id, uint16_t base, unsigned int irq) "id=%d, base 0x%03x, irq %u"
+
# hw/isa/pc87312.c
pc87312_io_read(uint32_t addr, uint32_t val) "read addr=0x%x val=0x%x"
pc87312_io_write(uint32_t addr, uint32_t val) "write addr=0x%x val=0x%x"
pc87312_info_floppy(uint32_t base) "base 0x%x"
pc87312_info_ide(uint32_t base) "base 0x%x"
-pc87312_info_parallel(uint32_t base, uint32_t irq) "base 0x%x, irq %u"
pc87312_info_serial(int n, uint32_t base, uint32_t irq) "id=%d, base 0x%x, irq %u"
--
2.16.2
^ permalink raw reply related [flat|nested] 35+ messages in thread
* [Qemu-devel] [PATCH 11/25] hw/isa/superio: Factor out the serial code from pc87312.c
2018-03-08 22:39 [Qemu-devel] [PATCH 00/25] remove i386/pc dependency: generic SuperIO Philippe Mathieu-Daudé
` (9 preceding siblings ...)
2018-03-08 22:39 ` [Qemu-devel] [PATCH 10/25] hw/isa/superio: Factor out the parallel code from pc87312.c Philippe Mathieu-Daudé
@ 2018-03-08 22:39 ` Philippe Mathieu-Daudé
2018-03-08 22:39 ` [Qemu-devel] [PATCH 12/25] hw/isa/superio: Factor out the floppy disc controller " Philippe Mathieu-Daudé
` (13 subsequent siblings)
24 siblings, 0 replies; 35+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-03-08 22:39 UTC (permalink / raw)
To: Michael S . Tsirkin, Paolo Bonzini, Hervé Poussineau,
Marcel Apfelbaum, Aurelien Jarno, Mark Cave-Ayland,
Alexey Kardashevskiy, Thomas Huth
Cc: Philippe Mathieu-Daudé,
qemu-devel, Richard Henderson, Eduardo Habkost, Yongbok Kim,
Artyom Tarasenko, Guan Xuetao, open list:PReP
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
include/hw/isa/pc87312.h | 4 ----
include/hw/isa/superio.h | 2 ++
hw/isa/isa-superio.c | 41 +++++++++++++++++++++++++++++++++++++++++
hw/isa/pc87312.c | 43 ++++++++++++-------------------------------
hw/isa/trace-events | 2 +-
5 files changed, 56 insertions(+), 36 deletions(-)
diff --git a/include/hw/isa/pc87312.h b/include/hw/isa/pc87312.h
index bcc4578479..1480615a2c 100644
--- a/include/hw/isa/pc87312.h
+++ b/include/hw/isa/pc87312.h
@@ -39,10 +39,6 @@ typedef struct PC87312State {
uint16_t iobase;
uint8_t config; /* initial configuration */
- struct {
- ISADevice *dev;
- } uart[2];
-
struct {
ISADevice *dev;
} fdc;
diff --git a/include/hw/isa/superio.h b/include/hw/isa/superio.h
index e9879cfde1..0b516721c3 100644
--- a/include/hw/isa/superio.h
+++ b/include/hw/isa/superio.h
@@ -28,6 +28,7 @@ typedef struct ISASuperIODevice {
/*< public >*/
ISADevice *parallel[MAX_PARALLEL_PORTS];
+ ISADevice *serial[MAX_SERIAL_PORTS];
} ISASuperIODevice;
typedef struct ISASuperIOFuncs {
@@ -45,6 +46,7 @@ typedef struct ISASuperIOClass {
DeviceRealize parent_realize;
ISASuperIOFuncs parallel;
+ ISASuperIOFuncs serial;
} ISASuperIOClass;
#endif /* HW_ISA_SUPERIO_H */
diff --git a/hw/isa/isa-superio.c b/hw/isa/isa-superio.c
index eb263fcc3a..6962421aad 100644
--- a/hw/isa/isa-superio.c
+++ b/hw/isa/isa-superio.c
@@ -14,6 +14,7 @@
#include "sysemu/sysemu.h"
#include "chardev/char.h"
#include "hw/isa/superio.h"
+#include "hw/char/serial.h"
#include "trace.h"
static void isa_superio_realize(DeviceState *dev, Error **errp)
@@ -66,6 +67,46 @@ static void isa_superio_realize(DeviceState *dev, Error **errp)
g_free(name);
}
}
+
+ /* Serial */
+ for (i = 0; i < k->serial.count; i++) {
+ if (i >= ARRAY_SIZE(sio->serial)) {
+ warn_report("superio: ignoring %td serial controllers",
+ k->serial.count - ARRAY_SIZE(sio->serial));
+ break;
+ }
+ if (!k->serial.is_enabled || k->serial.is_enabled(sio, i)) {
+ /* FIXME use a qdev chardev prop instead of serial_hds[] */
+ chr = serial_hds[i];
+ if (chr == NULL || chr->be) {
+ name = g_strdup_printf("discarding-serial%d", i);
+ chr = qemu_chr_new(name, "null");
+ } else {
+ name = g_strdup_printf("serial%d", i);
+ }
+ isa = isa_create(bus, TYPE_ISA_SERIAL);
+ d = DEVICE(isa);
+ qdev_prop_set_uint32(d, "index", i);
+ if (k->serial.get_iobase) {
+ qdev_prop_set_uint32(d, "iobase",
+ k->serial.get_iobase(sio, i));
+ }
+ if (k->serial.get_irq) {
+ qdev_prop_set_uint32(d, "irq", k->serial.get_irq(sio, i));
+ }
+ qdev_prop_set_chr(d, "chardev", chr);
+ qdev_init_nofail(d);
+ sio->serial[i] = isa;
+ trace_superio_create_serial(i,
+ k->serial.get_iobase ?
+ k->serial.get_iobase(sio, i) : -1,
+ k->serial.get_irq ?
+ k->serial.get_irq(sio, i) : -1);
+ object_property_add_child(OBJECT(dev), name,
+ OBJECT(sio->serial[0]), NULL);
+ g_free(name);
+ }
+ }
}
static void isa_superio_class_init(ObjectClass *oc, void *data)
diff --git a/hw/isa/pc87312.c b/hw/isa/pc87312.c
index 1c15715c69..c2837bca43 100644
--- a/hw/isa/pc87312.c
+++ b/hw/isa/pc87312.c
@@ -29,8 +29,6 @@
#include "qemu/error-report.h"
#include "sysemu/block-backend.h"
#include "sysemu/blockdev.h"
-#include "sysemu/sysemu.h"
-#include "chardev/char.h"
#include "trace.h"
@@ -100,8 +98,9 @@ static const uint16_t uart_base[2][4] = {
{ 0x2e8, 0x238, 0x2e0, 0x228 }
};
-static inline uint16_t get_uart_iobase(PC87312State *s, int i)
+static uint16_t get_uart_iobase(ISASuperIODevice *sio, uint8_t i)
{
+ PC87312State *s = PC87312(sio);
int idx;
idx = (s->regs[REG_FAR] >> (2 * i + 2)) & 0x3;
if (idx == 0) {
@@ -113,15 +112,17 @@ static inline uint16_t get_uart_iobase(PC87312State *s, int i)
}
}
-static inline unsigned int get_uart_irq(PC87312State *s, int i)
+static unsigned int get_uart_irq(ISASuperIODevice *sio, uint8_t i)
{
+ PC87312State *s = PC87312(sio);
int idx;
idx = (s->regs[REG_FAR] >> (2 * i + 2)) & 0x3;
return (idx & 1) ? 3 : 4;
}
-static inline bool is_uart_enabled(PC87312State *s, int i)
+static bool is_uart_enabled(ISASuperIODevice *sio, uint8_t i)
{
+ PC87312State *s = PC87312(sio);
return s->regs[REG_FER] & (FER_UART1_EN << i);
}
@@ -271,11 +272,8 @@ static void pc87312_realize(DeviceState *dev, Error **errp)
DeviceState *d;
ISADevice *isa;
ISABus *bus;
- Chardev *chr;
DriveInfo *drive;
Error *local_err = NULL;
- char name[5];
- int i;
s = PC87312(dev);
isa = ISA_DEVICE(dev);
@@ -289,27 +287,6 @@ static void pc87312_realize(DeviceState *dev, Error **errp)
return;
}
- for (i = 0; i < 2; i++) {
- if (is_uart_enabled(s, i)) {
- /* FIXME use a qdev chardev prop instead of serial_hds[] */
- chr = serial_hds[i];
- if (chr == NULL) {
- snprintf(name, sizeof(name), "ser%d", i);
- chr = qemu_chr_new(name, "null");
- }
- isa = isa_create(bus, "isa-serial");
- d = DEVICE(isa);
- qdev_prop_set_uint32(d, "index", i);
- qdev_prop_set_uint32(d, "iobase", get_uart_iobase(s, i));
- qdev_prop_set_uint32(d, "irq", get_uart_irq(s, i));
- qdev_prop_set_chr(d, "chardev", chr);
- qdev_init_nofail(d);
- s->uart[i].dev = isa;
- trace_pc87312_info_serial(i, get_uart_iobase(s, i),
- get_uart_irq(s, i));
- }
- }
-
if (is_fdc_enabled(s)) {
isa = isa_create(bus, "isa-fdc");
d = DEVICE(isa);
@@ -380,8 +357,6 @@ static void pc87312_class_init(ObjectClass *klass, void *data)
dc->reset = pc87312_reset;
dc->vmsd = &vmstate_pc87312;
dc->props = pc87312_properties;
- /* Reason: Uses serial_hds[0] in realize(), so it can't be used twice */
- dc->user_creatable = false;
sc->parallel = (ISASuperIOFuncs){
.count = 1,
@@ -389,6 +364,12 @@ static void pc87312_class_init(ObjectClass *klass, void *data)
.get_iobase = get_parallel_iobase,
.get_irq = get_parallel_irq,
};
+ sc->serial = (ISASuperIOFuncs){
+ .count = 2,
+ .is_enabled = is_uart_enabled,
+ .get_iobase = get_uart_iobase,
+ .get_irq = get_uart_irq,
+ };
}
static const TypeInfo pc87312_type_info = {
diff --git a/hw/isa/trace-events b/hw/isa/trace-events
index 97b1949981..c78dd6c353 100644
--- a/hw/isa/trace-events
+++ b/hw/isa/trace-events
@@ -2,10 +2,10 @@
# hw/isa/isa-superio.c
superio_create_parallel(int id, uint16_t base, unsigned int irq) "id=%d, base 0x%03x, irq %u"
+superio_create_serial(int id, uint16_t base, unsigned int irq) "id=%d, base 0x%03x, irq %u"
# hw/isa/pc87312.c
pc87312_io_read(uint32_t addr, uint32_t val) "read addr=0x%x val=0x%x"
pc87312_io_write(uint32_t addr, uint32_t val) "write addr=0x%x val=0x%x"
pc87312_info_floppy(uint32_t base) "base 0x%x"
pc87312_info_ide(uint32_t base) "base 0x%x"
-pc87312_info_serial(int n, uint32_t base, uint32_t irq) "id=%d, base 0x%x, irq %u"
--
2.16.2
^ permalink raw reply related [flat|nested] 35+ messages in thread
* [Qemu-devel] [PATCH 12/25] hw/isa/superio: Factor out the floppy disc controller code from pc87312.c
2018-03-08 22:39 [Qemu-devel] [PATCH 00/25] remove i386/pc dependency: generic SuperIO Philippe Mathieu-Daudé
` (10 preceding siblings ...)
2018-03-08 22:39 ` [Qemu-devel] [PATCH 11/25] hw/isa/superio: Factor out the serial " Philippe Mathieu-Daudé
@ 2018-03-08 22:39 ` Philippe Mathieu-Daudé
2018-03-08 22:39 ` [Qemu-devel] [PATCH 13/25] hw/isa/superio: Add a keyboard/mouse controller (8042) Philippe Mathieu-Daudé
` (12 subsequent siblings)
24 siblings, 0 replies; 35+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-03-08 22:39 UTC (permalink / raw)
To: Michael S . Tsirkin, Paolo Bonzini, Hervé Poussineau,
Marcel Apfelbaum, Aurelien Jarno, Mark Cave-Ayland,
Alexey Kardashevskiy, Thomas Huth
Cc: Philippe Mathieu-Daudé,
qemu-devel, Richard Henderson, Eduardo Habkost, Yongbok Kim,
Artyom Tarasenko, Guan Xuetao, open list:PReP
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
include/hw/isa/pc87312.h | 4 ----
include/hw/isa/superio.h | 2 ++
hw/isa/isa-superio.c | 36 ++++++++++++++++++++++++++++++++++++
hw/isa/pc87312.c | 46 +++++++++++++++++++---------------------------
hw/isa/trace-events | 2 +-
5 files changed, 58 insertions(+), 32 deletions(-)
diff --git a/include/hw/isa/pc87312.h b/include/hw/isa/pc87312.h
index 1480615a2c..e16263d4b1 100644
--- a/include/hw/isa/pc87312.h
+++ b/include/hw/isa/pc87312.h
@@ -39,10 +39,6 @@ typedef struct PC87312State {
uint16_t iobase;
uint8_t config; /* initial configuration */
- struct {
- ISADevice *dev;
- } fdc;
-
struct {
ISADevice *dev;
} ide;
diff --git a/include/hw/isa/superio.h b/include/hw/isa/superio.h
index 0b516721c3..e8007b9eee 100644
--- a/include/hw/isa/superio.h
+++ b/include/hw/isa/superio.h
@@ -29,6 +29,7 @@ typedef struct ISASuperIODevice {
ISADevice *parallel[MAX_PARALLEL_PORTS];
ISADevice *serial[MAX_SERIAL_PORTS];
+ ISADevice *floppy;
} ISASuperIODevice;
typedef struct ISASuperIOFuncs {
@@ -47,6 +48,7 @@ typedef struct ISASuperIOClass {
ISASuperIOFuncs parallel;
ISASuperIOFuncs serial;
+ ISASuperIOFuncs floppy;
} ISASuperIOClass;
#endif /* HW_ISA_SUPERIO_H */
diff --git a/hw/isa/isa-superio.c b/hw/isa/isa-superio.c
index 6962421aad..4b5e280b38 100644
--- a/hw/isa/isa-superio.c
+++ b/hw/isa/isa-superio.c
@@ -11,7 +11,10 @@
*/
#include "qemu/osdep.h"
#include "qemu/error-report.h"
+#include "qapi/error.h"
#include "sysemu/sysemu.h"
+#include "sysemu/block-backend.h"
+#include "sysemu/blockdev.h"
#include "chardev/char.h"
#include "hw/isa/superio.h"
#include "hw/char/serial.h"
@@ -25,6 +28,7 @@ static void isa_superio_realize(DeviceState *dev, Error **errp)
ISADevice *isa;
DeviceState *d;
Chardev *chr;
+ DriveInfo *drive;
char *name;
int i;
@@ -107,6 +111,38 @@ static void isa_superio_realize(DeviceState *dev, Error **errp)
g_free(name);
}
}
+
+ /* Floppy disc */
+ if (!k->floppy.is_enabled || k->floppy.is_enabled(sio, 0)) {
+ isa = isa_create(bus, "isa-fdc");
+ d = DEVICE(isa);
+ if (k->floppy.get_iobase) {
+ qdev_prop_set_uint32(d, "iobase", k->floppy.get_iobase(sio, 0));
+ }
+ if (k->floppy.get_irq) {
+ qdev_prop_set_uint32(d, "irq", k->floppy.get_irq(sio, 0));
+ }
+ /* FIXME use a qdev drive property instead of drive_get() */
+ drive = drive_get(IF_FLOPPY, 0, 0);
+ if (drive != NULL) {
+ qdev_prop_set_drive(d, "driveA", blk_by_legacy_dinfo(drive),
+ &error_fatal);
+ }
+ /* FIXME use a qdev drive property instead of drive_get() */
+ drive = drive_get(IF_FLOPPY, 0, 1);
+ if (drive != NULL) {
+ qdev_prop_set_drive(d, "driveB", blk_by_legacy_dinfo(drive),
+ &error_fatal);
+ }
+ qdev_init_nofail(d);
+ sio->floppy = isa;
+ trace_superio_create_floppy(0,
+ k->floppy.get_iobase ?
+ k->floppy.get_iobase(sio, 0) : -1,
+ k->floppy.get_irq ?
+ k->floppy.get_irq(sio, 0) : -1);
+ }
+
}
static void isa_superio_class_init(ObjectClass *oc, void *data)
diff --git a/hw/isa/pc87312.c b/hw/isa/pc87312.c
index c2837bca43..a1845a91c3 100644
--- a/hw/isa/pc87312.c
+++ b/hw/isa/pc87312.c
@@ -27,8 +27,6 @@
#include "hw/isa/pc87312.h"
#include "qapi/error.h"
#include "qemu/error-report.h"
-#include "sysemu/block-backend.h"
-#include "sysemu/blockdev.h"
#include "trace.h"
@@ -129,16 +127,26 @@ static bool is_uart_enabled(ISASuperIODevice *sio, uint8_t i)
/* Floppy controller */
-static inline bool is_fdc_enabled(PC87312State *s)
+static bool is_fdc_enabled(ISASuperIODevice *sio, uint8_t index)
{
+ PC87312State *s = PC87312(sio);
+ assert(!index);
return s->regs[REG_FER] & FER_FDC_EN;
}
-static inline uint16_t get_fdc_iobase(PC87312State *s)
+static uint16_t get_fdc_iobase(ISASuperIODevice *sio, uint8_t index)
{
+ PC87312State *s = PC87312(sio);
+ assert(!index);
return (s->regs[REG_FER] & FER_FDC_ADDR) ? 0x370 : 0x3f0;
}
+static unsigned int get_fdc_irq(ISASuperIODevice *sio, uint8_t index)
+{
+ assert(!index);
+ return 6;
+}
+
/* IDE controller */
@@ -272,7 +280,6 @@ static void pc87312_realize(DeviceState *dev, Error **errp)
DeviceState *d;
ISADevice *isa;
ISABus *bus;
- DriveInfo *drive;
Error *local_err = NULL;
s = PC87312(dev);
@@ -287,28 +294,6 @@ static void pc87312_realize(DeviceState *dev, Error **errp)
return;
}
- if (is_fdc_enabled(s)) {
- isa = isa_create(bus, "isa-fdc");
- d = DEVICE(isa);
- qdev_prop_set_uint32(d, "iobase", get_fdc_iobase(s));
- qdev_prop_set_uint32(d, "irq", 6);
- /* FIXME use a qdev drive property instead of drive_get() */
- drive = drive_get(IF_FLOPPY, 0, 0);
- if (drive != NULL) {
- qdev_prop_set_drive(d, "driveA", blk_by_legacy_dinfo(drive),
- &error_fatal);
- }
- /* FIXME use a qdev drive property instead of drive_get() */
- drive = drive_get(IF_FLOPPY, 0, 1);
- if (drive != NULL) {
- qdev_prop_set_drive(d, "driveB", blk_by_legacy_dinfo(drive),
- &error_fatal);
- }
- qdev_init_nofail(d);
- s->fdc.dev = isa;
- trace_pc87312_info_floppy(get_fdc_iobase(s));
- }
-
if (is_ide_enabled(s)) {
isa = isa_create(bus, "isa-ide");
d = DEVICE(isa);
@@ -370,6 +355,12 @@ static void pc87312_class_init(ObjectClass *klass, void *data)
.get_iobase = get_uart_iobase,
.get_irq = get_uart_irq,
};
+ sc->floppy = (ISASuperIOFuncs){
+ .count = 1,
+ .is_enabled = is_fdc_enabled,
+ .get_iobase = get_fdc_iobase,
+ .get_irq = get_fdc_irq,
+ };
}
static const TypeInfo pc87312_type_info = {
@@ -378,6 +369,7 @@ static const TypeInfo pc87312_type_info = {
.instance_size = sizeof(PC87312State),
.instance_init = pc87312_initfn,
.class_init = pc87312_class_init,
+ /* FIXME use a qdev drive property instead of drive_get() */
};
static void pc87312_register_types(void)
diff --git a/hw/isa/trace-events b/hw/isa/trace-events
index c78dd6c353..8d9900882f 100644
--- a/hw/isa/trace-events
+++ b/hw/isa/trace-events
@@ -3,9 +3,9 @@
# hw/isa/isa-superio.c
superio_create_parallel(int id, uint16_t base, unsigned int irq) "id=%d, base 0x%03x, irq %u"
superio_create_serial(int id, uint16_t base, unsigned int irq) "id=%d, base 0x%03x, irq %u"
+superio_create_floppy(int id, uint16_t base, unsigned int irq) "id=%d, base 0x%03x, irq %u"
# hw/isa/pc87312.c
pc87312_io_read(uint32_t addr, uint32_t val) "read addr=0x%x val=0x%x"
pc87312_io_write(uint32_t addr, uint32_t val) "write addr=0x%x val=0x%x"
-pc87312_info_floppy(uint32_t base) "base 0x%x"
pc87312_info_ide(uint32_t base) "base 0x%x"
--
2.16.2
^ permalink raw reply related [flat|nested] 35+ messages in thread
* [Qemu-devel] [PATCH 13/25] hw/isa/superio: Add a keyboard/mouse controller (8042)
2018-03-08 22:39 [Qemu-devel] [PATCH 00/25] remove i386/pc dependency: generic SuperIO Philippe Mathieu-Daudé
` (11 preceding siblings ...)
2018-03-08 22:39 ` [Qemu-devel] [PATCH 12/25] hw/isa/superio: Factor out the floppy disc controller " Philippe Mathieu-Daudé
@ 2018-03-08 22:39 ` Philippe Mathieu-Daudé
2018-03-08 22:39 ` [Qemu-devel] [PATCH 14/25] hw/isa/superio: Factor out the IDE code from pc87312.c Philippe Mathieu-Daudé
` (11 subsequent siblings)
24 siblings, 0 replies; 35+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-03-08 22:39 UTC (permalink / raw)
To: Michael S . Tsirkin, Paolo Bonzini, Hervé Poussineau,
Marcel Apfelbaum, Aurelien Jarno, Mark Cave-Ayland,
Alexey Kardashevskiy, Thomas Huth, Laurent Vivier
Cc: Philippe Mathieu-Daudé,
qemu-devel, Richard Henderson, Eduardo Habkost, Yongbok Kim,
Artyom Tarasenko, Guan Xuetao, David Gibson, Alexander Graf,
open list:PReP
Since the PC87312 inherits this abstract model, we remove the I8042
instance in the PREP machine.
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Acked-by: David Gibson <david@gibson.dropbear.id.au>
---
include/hw/isa/superio.h | 1 +
hw/isa/isa-superio.c | 3 +++
hw/ppc/prep.c | 1 -
3 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/include/hw/isa/superio.h b/include/hw/isa/superio.h
index e8007b9eee..2fc33bf3d3 100644
--- a/include/hw/isa/superio.h
+++ b/include/hw/isa/superio.h
@@ -30,6 +30,7 @@ typedef struct ISASuperIODevice {
ISADevice *parallel[MAX_PARALLEL_PORTS];
ISADevice *serial[MAX_SERIAL_PORTS];
ISADevice *floppy;
+ ISADevice *kbc;
} ISASuperIODevice;
typedef struct ISASuperIOFuncs {
diff --git a/hw/isa/isa-superio.c b/hw/isa/isa-superio.c
index 4b5e280b38..041b47bdbf 100644
--- a/hw/isa/isa-superio.c
+++ b/hw/isa/isa-superio.c
@@ -17,6 +17,7 @@
#include "sysemu/blockdev.h"
#include "chardev/char.h"
#include "hw/isa/superio.h"
+#include "hw/input/i8042.h"
#include "hw/char/serial.h"
#include "trace.h"
@@ -143,6 +144,8 @@ static void isa_superio_realize(DeviceState *dev, Error **errp)
k->floppy.get_irq(sio, 0) : -1);
}
+ /* Keyboard, mouse */
+ sio->kbc = isa_create_simple(bus, TYPE_I8042);
}
static void isa_superio_class_init(ObjectClass *oc, void *data)
diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c
index 610ec7ec32..96d319b87c 100644
--- a/hw/ppc/prep.c
+++ b/hw/ppc/prep.c
@@ -642,7 +642,6 @@ static void ppc_prep_init(MachineState *machine)
hd[2 * i],
hd[2 * i + 1]);
}
- isa_create_simple(isa_bus, TYPE_I8042);
cpu = POWERPC_CPU(first_cpu);
sysctrl->reset_irq = cpu->env.irq_inputs[PPC6xx_INPUT_HRESET];
--
2.16.2
^ permalink raw reply related [flat|nested] 35+ messages in thread
* [Qemu-devel] [PATCH 14/25] hw/isa/superio: Factor out the IDE code from pc87312.c
2018-03-08 22:39 [Qemu-devel] [PATCH 00/25] remove i386/pc dependency: generic SuperIO Philippe Mathieu-Daudé
` (12 preceding siblings ...)
2018-03-08 22:39 ` [Qemu-devel] [PATCH 13/25] hw/isa/superio: Add a keyboard/mouse controller (8042) Philippe Mathieu-Daudé
@ 2018-03-08 22:39 ` Philippe Mathieu-Daudé
2018-03-08 22:39 ` [Qemu-devel] [PATCH 15/25] hw/mips/malta: Code movement Philippe Mathieu-Daudé
` (10 subsequent siblings)
24 siblings, 0 replies; 35+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-03-08 22:39 UTC (permalink / raw)
To: Michael S . Tsirkin, Paolo Bonzini, Hervé Poussineau,
Marcel Apfelbaum, Aurelien Jarno, Mark Cave-Ayland,
Alexey Kardashevskiy, Thomas Huth
Cc: Philippe Mathieu-Daudé,
qemu-devel, Richard Henderson, Eduardo Habkost, Yongbok Kim,
Artyom Tarasenko, Guan Xuetao, open list:PReP
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
include/hw/isa/superio.h | 2 ++
hw/isa/isa-superio.c | 22 ++++++++++++++++++++++
hw/isa/pc87312.c | 36 ++++++++++++++++++++----------------
hw/isa/trace-events | 2 +-
4 files changed, 45 insertions(+), 17 deletions(-)
diff --git a/include/hw/isa/superio.h b/include/hw/isa/superio.h
index 2fc33bf3d3..3dd5448f8c 100644
--- a/include/hw/isa/superio.h
+++ b/include/hw/isa/superio.h
@@ -31,6 +31,7 @@ typedef struct ISASuperIODevice {
ISADevice *serial[MAX_SERIAL_PORTS];
ISADevice *floppy;
ISADevice *kbc;
+ ISADevice *ide;
} ISASuperIODevice;
typedef struct ISASuperIOFuncs {
@@ -50,6 +51,7 @@ typedef struct ISASuperIOClass {
ISASuperIOFuncs parallel;
ISASuperIOFuncs serial;
ISASuperIOFuncs floppy;
+ ISASuperIOFuncs ide;
} ISASuperIOClass;
#endif /* HW_ISA_SUPERIO_H */
diff --git a/hw/isa/isa-superio.c b/hw/isa/isa-superio.c
index 041b47bdbf..f98711beff 100644
--- a/hw/isa/isa-superio.c
+++ b/hw/isa/isa-superio.c
@@ -146,6 +146,28 @@ static void isa_superio_realize(DeviceState *dev, Error **errp)
/* Keyboard, mouse */
sio->kbc = isa_create_simple(bus, TYPE_I8042);
+
+ /* IDE */
+ if (k->ide.count && (!k->ide.is_enabled || k->ide.is_enabled(sio, 0))) {
+ isa = isa_create(bus, "isa-ide");
+ d = DEVICE(isa);
+ if (k->ide.get_iobase) {
+ qdev_prop_set_uint32(d, "iobase", k->ide.get_iobase(sio, 0));
+ }
+ if (k->ide.get_iobase) {
+ qdev_prop_set_uint32(d, "iobase2", k->ide.get_iobase(sio, 1));
+ }
+ if (k->ide.get_irq) {
+ qdev_prop_set_uint32(d, "irq", k->ide.get_irq(sio, 0));
+ }
+ qdev_init_nofail(d);
+ sio->ide = isa;
+ trace_superio_create_ide(0,
+ k->ide.get_iobase ?
+ k->ide.get_iobase(sio, 0) : -1,
+ k->ide.get_irq ?
+ k->ide.get_irq(sio, 0) : -1);
+ }
}
static void isa_superio_class_init(ObjectClass *oc, void *data)
diff --git a/hw/isa/pc87312.c b/hw/isa/pc87312.c
index a1845a91c3..5cf64505fe 100644
--- a/hw/isa/pc87312.c
+++ b/hw/isa/pc87312.c
@@ -150,16 +150,28 @@ static unsigned int get_fdc_irq(ISASuperIODevice *sio, uint8_t index)
/* IDE controller */
-static inline bool is_ide_enabled(PC87312State *s)
+static bool is_ide_enabled(ISASuperIODevice *sio, uint8_t index)
{
+ PC87312State *s = PC87312(sio);
+
return s->regs[REG_FER] & FER_IDE_EN;
}
-static inline uint16_t get_ide_iobase(PC87312State *s)
+static uint16_t get_ide_iobase(ISASuperIODevice *sio, uint8_t index)
{
+ PC87312State *s = PC87312(sio);
+
+ if (index == 1) {
+ return get_ide_iobase(sio, 0) + 0x206;
+ }
return (s->regs[REG_FER] & FER_IDE_ADDR) ? 0x170 : 0x1f0;
}
+static unsigned int get_ide_irq(ISASuperIODevice *sio, uint8_t index)
+{
+ assert(index == 0);
+ return 14;
+}
static void reconfigure_devices(PC87312State *s)
{
@@ -277,14 +289,11 @@ static void pc87312_reset(DeviceState *d)
static void pc87312_realize(DeviceState *dev, Error **errp)
{
PC87312State *s;
- DeviceState *d;
ISADevice *isa;
- ISABus *bus;
Error *local_err = NULL;
s = PC87312(dev);
isa = ISA_DEVICE(dev);
- bus = isa_bus_from_device(isa);
isa_register_ioport(isa, &s->io, s->iobase);
pc87312_hard_reset(s);
@@ -293,17 +302,6 @@ static void pc87312_realize(DeviceState *dev, Error **errp)
error_propagate(errp, local_err);
return;
}
-
- if (is_ide_enabled(s)) {
- isa = isa_create(bus, "isa-ide");
- d = DEVICE(isa);
- qdev_prop_set_uint32(d, "iobase", get_ide_iobase(s));
- qdev_prop_set_uint32(d, "iobase2", get_ide_iobase(s) + 0x206);
- qdev_prop_set_uint32(d, "irq", 14);
- qdev_init_nofail(d);
- s->ide.dev = isa;
- trace_pc87312_info_ide(get_ide_iobase(s));
- }
}
static void pc87312_initfn(Object *obj)
@@ -361,6 +359,12 @@ static void pc87312_class_init(ObjectClass *klass, void *data)
.get_iobase = get_fdc_iobase,
.get_irq = get_fdc_irq,
};
+ sc->ide = (ISASuperIOFuncs){
+ .count = 1,
+ .is_enabled = is_ide_enabled,
+ .get_iobase = get_ide_iobase,
+ .get_irq = get_ide_irq,
+ };
}
static const TypeInfo pc87312_type_info = {
diff --git a/hw/isa/trace-events b/hw/isa/trace-events
index 8d9900882f..80ac6175d6 100644
--- a/hw/isa/trace-events
+++ b/hw/isa/trace-events
@@ -4,8 +4,8 @@
superio_create_parallel(int id, uint16_t base, unsigned int irq) "id=%d, base 0x%03x, irq %u"
superio_create_serial(int id, uint16_t base, unsigned int irq) "id=%d, base 0x%03x, irq %u"
superio_create_floppy(int id, uint16_t base, unsigned int irq) "id=%d, base 0x%03x, irq %u"
+superio_create_ide(int id, uint16_t base, unsigned int irq) "id=%d, base 0x%03x, irq %u"
# hw/isa/pc87312.c
pc87312_io_read(uint32_t addr, uint32_t val) "read addr=0x%x val=0x%x"
pc87312_io_write(uint32_t addr, uint32_t val) "write addr=0x%x val=0x%x"
-pc87312_info_ide(uint32_t base) "base 0x%x"
--
2.16.2
^ permalink raw reply related [flat|nested] 35+ messages in thread
* [Qemu-devel] [PATCH 15/25] hw/mips/malta: Code movement
2018-03-08 22:39 [Qemu-devel] [PATCH 00/25] remove i386/pc dependency: generic SuperIO Philippe Mathieu-Daudé
` (13 preceding siblings ...)
2018-03-08 22:39 ` [Qemu-devel] [PATCH 14/25] hw/isa/superio: Factor out the IDE code from pc87312.c Philippe Mathieu-Daudé
@ 2018-03-08 22:39 ` Philippe Mathieu-Daudé
2018-03-08 22:39 ` [Qemu-devel] [PATCH 16/25] hw/isa/superio: Factor out the FDC37M817 Super I/O from mips_malta.c Philippe Mathieu-Daudé
` (9 subsequent siblings)
24 siblings, 0 replies; 35+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-03-08 22:39 UTC (permalink / raw)
To: Michael S . Tsirkin, Paolo Bonzini, Hervé Poussineau,
Marcel Apfelbaum, Aurelien Jarno, Mark Cave-Ayland,
Alexey Kardashevskiy, Yongbok Kim, Thomas Huth
Cc: Philippe Mathieu-Daudé,
qemu-devel, Richard Henderson, Eduardo Habkost, Artyom Tarasenko,
Guan Xuetao
Move the SouthBridge peripherals first, and keep the Super I/O
peripherals last.
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
hw/mips/mips_malta.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c
index cd7bd0eef6..9e0724ca5a 100644
--- a/hw/mips/mips_malta.c
+++ b/hw/mips/mips_malta.c
@@ -1062,10 +1062,6 @@ void mips_malta_init(MachineState *machine)
memory_region_add_subregion(system_memory, 512 << 20, ram_low_postio);
}
- /* generate SPD EEPROM data */
- generate_eeprom_spd(&smbus_eeprom_buf[0 * 256], ram_size);
- generate_eeprom_serial(&smbus_eeprom_buf[6 * 256]);
-
#ifdef TARGET_WORDS_BIGENDIAN
be = 1;
#else
@@ -1208,15 +1204,19 @@ void mips_malta_init(MachineState *machine)
pci_create_simple(pci_bus, piix4_devfn + 2, "piix4-usb-uhci");
smbus = piix4_pm_init(pci_bus, piix4_devfn + 3, 0x1100,
isa_get_irq(NULL, 9), NULL, 0, NULL);
- smbus_eeprom_init(smbus, 8, smbus_eeprom_buf, smbus_eeprom_size);
- g_free(smbus_eeprom_buf);
pit = i8254_pit_init(isa_bus, 0x40, 0, NULL);
i8257_dma_init(isa_bus, 0);
+ mc146818_rtc_init(isa_bus, 2000, NULL);
+
+ /* generate SPD EEPROM data */
+ generate_eeprom_spd(&smbus_eeprom_buf[0 * 256], ram_size);
+ generate_eeprom_serial(&smbus_eeprom_buf[6 * 256]);
+ smbus_eeprom_init(smbus, 8, smbus_eeprom_buf, smbus_eeprom_size);
+ g_free(smbus_eeprom_buf);
/* Super I/O */
isa_create_simple(isa_bus, TYPE_I8042);
- mc146818_rtc_init(isa_bus, 2000, NULL);
serial_hds_isa_init(isa_bus, 0, 2);
parallel_hds_isa_init(isa_bus, 1);
--
2.16.2
^ permalink raw reply related [flat|nested] 35+ messages in thread
* [Qemu-devel] [PATCH 16/25] hw/isa/superio: Factor out the FDC37M817 Super I/O from mips_malta.c
2018-03-08 22:39 [Qemu-devel] [PATCH 00/25] remove i386/pc dependency: generic SuperIO Philippe Mathieu-Daudé
` (14 preceding siblings ...)
2018-03-08 22:39 ` [Qemu-devel] [PATCH 15/25] hw/mips/malta: Code movement Philippe Mathieu-Daudé
@ 2018-03-08 22:39 ` Philippe Mathieu-Daudé
2018-03-08 22:39 ` [Qemu-devel] [PATCH 17/25] hw/mips/mips_fulong2e: Factor out vt82c686b_southbridge_init() Philippe Mathieu-Daudé
` (8 subsequent siblings)
24 siblings, 0 replies; 35+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-03-08 22:39 UTC (permalink / raw)
To: Michael S . Tsirkin, Paolo Bonzini, Hervé Poussineau,
Marcel Apfelbaum, Aurelien Jarno, Mark Cave-Ayland, Yongbok Kim,
Alexey Kardashevskiy, Thomas Huth
Cc: Philippe Mathieu-Daudé,
qemu-devel, Richard Henderson, Eduardo Habkost, Artyom Tarasenko,
Guan Xuetao
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
include/hw/isa/superio.h | 2 ++
hw/isa/isa-superio.c | 19 +++++++++++++++++++
hw/mips/mips_malta.c | 35 ++++++++++-------------------------
3 files changed, 31 insertions(+), 25 deletions(-)
diff --git a/include/hw/isa/superio.h b/include/hw/isa/superio.h
index 3dd5448f8c..b47aac3cf8 100644
--- a/include/hw/isa/superio.h
+++ b/include/hw/isa/superio.h
@@ -54,4 +54,6 @@ typedef struct ISASuperIOClass {
ISASuperIOFuncs ide;
} ISASuperIOClass;
+#define TYPE_FDC37M81X_SUPERIO "fdc37m81x-superio"
+
#endif /* HW_ISA_SUPERIO_H */
diff --git a/hw/isa/isa-superio.c b/hw/isa/isa-superio.c
index f98711beff..b95608a003 100644
--- a/hw/isa/isa-superio.c
+++ b/hw/isa/isa-superio.c
@@ -187,9 +187,28 @@ static const TypeInfo isa_superio_type_info = {
.class_init = isa_superio_class_init,
};
+/* SMS FDC37M817 Super I/O */
+static void fdc37m81x_class_init(ObjectClass *klass, void *data)
+{
+ ISASuperIOClass *sc = ISA_SUPERIO_CLASS(klass);
+
+ sc->serial.count = 2; /* NS16C550A */
+ sc->parallel.count = 1;
+ sc->floppy.count = 1; /* SMSC 82077AA Compatible */
+ sc->ide.count = 0;
+}
+
+static const TypeInfo fdc37m81x_type_info = {
+ .name = TYPE_FDC37M81X_SUPERIO,
+ .parent = TYPE_ISA_SUPERIO,
+ .instance_size = sizeof(ISASuperIODevice),
+ .class_init = fdc37m81x_class_init,
+};
+
static void isa_superio_register_types(void)
{
type_register_static(&isa_superio_type_info);
+ type_register_static(&fdc37m81x_type_info);
}
type_init(isa_superio_register_types)
diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c
index 9e0724ca5a..f6513a4fd5 100644
--- a/hw/mips/mips_malta.c
+++ b/hw/mips/mips_malta.c
@@ -27,14 +27,12 @@
#include "cpu.h"
#include "hw/hw.h"
#include "hw/i386/pc.h"
+#include "hw/isa/superio.h"
#include "hw/dma/i8257.h"
#include "hw/char/serial.h"
-#include "hw/char/parallel.h"
-#include "hw/block/fdc.h"
#include "net/net.h"
#include "hw/boards.h"
#include "hw/i2c/smbus.h"
-#include "sysemu/block-backend.h"
#include "hw/block/flash.h"
#include "hw/mips/mips.h"
#include "hw/mips/cpudevs.h"
@@ -47,7 +45,6 @@
#include "hw/loader.h"
#include "elf.h"
#include "hw/timer/mc146818rtc.h"
-#include "hw/input/i8042.h"
#include "hw/timer/i8254.h"
#include "sysemu/blockdev.h"
#include "exec/address-spaces.h"
@@ -1005,10 +1002,8 @@ void mips_malta_init(MachineState *machine)
qemu_irq cbus_irq, i8259_irq;
int piix4_devfn;
I2CBus *smbus;
- int i;
DriveInfo *dinfo;
DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS];
- DriveInfo *fd[MAX_FD];
int fl_idx = 0;
int fl_sectors = bios_size >> 16;
int be;
@@ -1023,15 +1018,6 @@ void mips_malta_init(MachineState *machine)
qdev_init_nofail(dev);
- /* Make sure the first 3 serial ports are associated with a device. */
- for(i = 0; i < 3; i++) {
- if (!serial_hds[i]) {
- char label[32];
- snprintf(label, sizeof(label), "serial%d", i);
- serial_hds[i] = qemu_chr_new(label, "null");
- }
- }
-
/* create CPU */
mips_create_cpu(s, machine->cpu_type, &cbus_irq, &i8259_irq);
@@ -1067,7 +1053,14 @@ void mips_malta_init(MachineState *machine)
#else
be = 0;
#endif
+
/* FPGA */
+
+ /* Make sure the second serial port is associated with a device. */
+ if (!serial_hds[2]) {
+ serial_hds[2] = qemu_chr_new("fpga-uart", "null");
+ }
+
/* The CBUS UART is attached to the MIPS CPU INT2 pin, ie interrupt 4 */
malta_fpga_init(system_memory, FPGA_ADDRESS, cbus_irq, serial_hds[2]);
@@ -1214,16 +1207,8 @@ void mips_malta_init(MachineState *machine)
smbus_eeprom_init(smbus, 8, smbus_eeprom_buf, smbus_eeprom_size);
g_free(smbus_eeprom_buf);
- /* Super I/O */
- isa_create_simple(isa_bus, TYPE_I8042);
-
- serial_hds_isa_init(isa_bus, 0, 2);
- parallel_hds_isa_init(isa_bus, 1);
-
- for(i = 0; i < MAX_FD; i++) {
- fd[i] = drive_get(IF_FLOPPY, 0, i);
- }
- fdctrl_init_isa(isa_bus, fd);
+ /* Super I/O: SMS FDC37M817 */
+ isa_create_simple(isa_bus, TYPE_FDC37M81X_SUPERIO);
/* Network card */
network_init(pci_bus);
--
2.16.2
^ permalink raw reply related [flat|nested] 35+ messages in thread
* [Qemu-devel] [PATCH 17/25] hw/mips/mips_fulong2e: Factor out vt82c686b_southbridge_init()
2018-03-08 22:39 [Qemu-devel] [PATCH 00/25] remove i386/pc dependency: generic SuperIO Philippe Mathieu-Daudé
` (15 preceding siblings ...)
2018-03-08 22:39 ` [Qemu-devel] [PATCH 16/25] hw/isa/superio: Factor out the FDC37M817 Super I/O from mips_malta.c Philippe Mathieu-Daudé
@ 2018-03-08 22:39 ` Philippe Mathieu-Daudé
2018-03-08 22:39 ` [Qemu-devel] [PATCH 18/25] hw/isa/vt82c686: Rename vt82c686b_init() -> vt82c686b_isa_init() Philippe Mathieu-Daudé
` (7 subsequent siblings)
24 siblings, 0 replies; 35+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-03-08 22:39 UTC (permalink / raw)
To: Michael S . Tsirkin, Paolo Bonzini, Hervé Poussineau,
Marcel Apfelbaum, Aurelien Jarno, Yongbok Kim,
Alexey Kardashevskiy, Thomas Huth
Cc: Philippe Mathieu-Daudé,
qemu-devel, Richard Henderson, Mark Cave-Ayland, Eduardo Habkost,
Artyom Tarasenko, Guan Xuetao
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
hw/mips/mips_fulong2e.c | 83 ++++++++++++++++++++++++-------------------------
1 file changed, 41 insertions(+), 42 deletions(-)
diff --git a/hw/mips/mips_fulong2e.c b/hw/mips/mips_fulong2e.c
index 9339e02120..ca1f76a724 100644
--- a/hw/mips/mips_fulong2e.c
+++ b/hw/mips/mips_fulong2e.c
@@ -78,8 +78,6 @@
#define FULONG2E_ATI_SLOT 6
#define FULONG2E_RTL8139_SLOT 7
-static ISADevice *pit;
-
static struct _loaderparams {
int ram_size;
const char *kernel_filename;
@@ -232,11 +230,44 @@ static const uint8_t eeprom_spd[0x80] = {
0x20,0x30,0x20
};
-/* Audio support */
-static void audio_init (PCIBus *pci_bus)
+static void vt82c686b_southbridge_init(PCIBus *pci_bus, int slot, qemu_irq intc,
+ I2CBus **i2c_bus, ISABus **p_isa_bus)
{
- vt82c686b_ac97_init(pci_bus, PCI_DEVFN(FULONG2E_VIA_SLOT, 5));
- vt82c686b_mc97_init(pci_bus, PCI_DEVFN(FULONG2E_VIA_SLOT, 6));
+ qemu_irq *i8259;
+ ISABus *isa_bus;
+ DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS];
+
+ isa_bus = vt82c686b_init(pci_bus, PCI_DEVFN(slot, 0));
+ if (!isa_bus) {
+ fprintf(stderr, "vt82c686b_init error\n");
+ exit(1);
+ }
+ *p_isa_bus = isa_bus;
+ /* Interrupt controller */
+ /* The 8259 -> IP5 */
+ i8259 = i8259_init(isa_bus, intc);
+ isa_bus_irqs(isa_bus, i8259);
+ /* init other devices */
+ i8254_pit_init(isa_bus, 0x40, 0, NULL);
+ i8257_dma_init(isa_bus, 0);
+
+ ide_drive_get(hd, ARRAY_SIZE(hd));
+ vt82c686b_ide_init(pci_bus, hd, PCI_DEVFN(slot, 1));
+
+ pci_create_simple(pci_bus, PCI_DEVFN(slot, 2), "vt82c686b-usb-uhci");
+ pci_create_simple(pci_bus, PCI_DEVFN(slot, 3), "vt82c686b-usb-uhci");
+
+ *i2c_bus = vt82c686b_pm_init(pci_bus, PCI_DEVFN(slot, 4), 0xeee1, NULL);
+
+ /* Audio support */
+ vt82c686b_ac97_init(pci_bus, PCI_DEVFN(slot, 5));
+ vt82c686b_mc97_init(pci_bus, PCI_DEVFN(slot, 6));
+
+ /* Super I/O */
+ isa_create_simple(isa_bus, TYPE_I8042);
+
+ serial_hds_isa_init(isa_bus, 0, MAX_SERIAL_PORTS);
+ parallel_hds_isa_init(isa_bus, 1);
}
/* Network support */
@@ -269,11 +300,9 @@ static void mips_fulong2e_init(MachineState *machine)
MemoryRegion *bios = g_new(MemoryRegion, 1);
long bios_size;
int64_t kernel_entry;
- qemu_irq *i8259;
PCIBus *pci_bus;
ISABus *isa_bus;
I2CBus *smbus;
- DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS];
MIPSCPU *cpu;
CPUMIPSState *env;
@@ -335,46 +364,16 @@ static void mips_fulong2e_init(MachineState *machine)
/* North bridge, Bonito --> IP2 */
pci_bus = bonito_init((qemu_irq *)&(env->irq[2]));
- /* South bridge */
- ide_drive_get(hd, ARRAY_SIZE(hd));
-
- isa_bus = vt82c686b_init(pci_bus, PCI_DEVFN(FULONG2E_VIA_SLOT, 0));
- if (!isa_bus) {
- error_report("vt82c686b_init error");
- exit(1);
- }
-
- /* Interrupt controller */
- /* The 8259 -> IP5 */
- i8259 = i8259_init(isa_bus, env->irq[5]);
- isa_bus_irqs(isa_bus, i8259);
-
- vt82c686b_ide_init(pci_bus, hd, PCI_DEVFN(FULONG2E_VIA_SLOT, 1));
- pci_create_simple(pci_bus, PCI_DEVFN(FULONG2E_VIA_SLOT, 2),
- "vt82c686b-usb-uhci");
- pci_create_simple(pci_bus, PCI_DEVFN(FULONG2E_VIA_SLOT, 3),
- "vt82c686b-usb-uhci");
+ /* South bridge -> IP5 */
+ vt82c686b_southbridge_init(pci_bus, FULONG2E_VIA_SLOT, env->irq[5],
+ &smbus, &isa_bus);
- smbus = vt82c686b_pm_init(pci_bus, PCI_DEVFN(FULONG2E_VIA_SLOT, 4),
- 0xeee1, NULL);
/* TODO: Populate SPD eeprom data. */
smbus_eeprom_init(smbus, 1, eeprom_spd, sizeof(eeprom_spd));
- /* init other devices */
- pit = i8254_pit_init(isa_bus, 0x40, 0, NULL);
- i8257_dma_init(isa_bus, 0);
-
- /* Super I/O */
- isa_create_simple(isa_bus, TYPE_I8042);
-
mc146818_rtc_init(isa_bus, 2000, NULL);
- serial_hds_isa_init(isa_bus, 0, MAX_SERIAL_PORTS);
- parallel_hds_isa_init(isa_bus, 1);
-
- /* Sound card */
- audio_init(pci_bus);
- /* Network card */
+ /* Network card: RTL8139D */
network_init(pci_bus);
}
--
2.16.2
^ permalink raw reply related [flat|nested] 35+ messages in thread
* [Qemu-devel] [PATCH 18/25] hw/isa/vt82c686: Rename vt82c686b_init() -> vt82c686b_isa_init()
2018-03-08 22:39 [Qemu-devel] [PATCH 00/25] remove i386/pc dependency: generic SuperIO Philippe Mathieu-Daudé
` (16 preceding siblings ...)
2018-03-08 22:39 ` [Qemu-devel] [PATCH 17/25] hw/mips/mips_fulong2e: Factor out vt82c686b_southbridge_init() Philippe Mathieu-Daudé
@ 2018-03-08 22:39 ` Philippe Mathieu-Daudé
2018-03-08 22:39 ` [Qemu-devel] [PATCH 19/25] hw/isa/vt82c686: Add the TYPE_VT82C686B_SUPERIO Philippe Mathieu-Daudé
` (6 subsequent siblings)
24 siblings, 0 replies; 35+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-03-08 22:39 UTC (permalink / raw)
To: Michael S . Tsirkin, Paolo Bonzini, Hervé Poussineau,
Marcel Apfelbaum, Aurelien Jarno, Alexey Kardashevskiy,
Yongbok Kim, Thomas Huth
Cc: Philippe Mathieu-Daudé,
qemu-devel, Richard Henderson, Mark Cave-Ayland, Eduardo Habkost,
Artyom Tarasenko, Guan Xuetao
This function only initialize the ISA bus.
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
include/hw/isa/vt82c686.h | 2 +-
hw/isa/vt82c686.c | 2 +-
hw/mips/mips_fulong2e.c | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/include/hw/isa/vt82c686.h b/include/hw/isa/vt82c686.h
index 471b5e9e53..db97c8ed7a 100644
--- a/include/hw/isa/vt82c686.h
+++ b/include/hw/isa/vt82c686.h
@@ -2,7 +2,7 @@
#define HW_VT82C686_H
/* vt82c686.c */
-ISABus *vt82c686b_init(PCIBus * bus, int devfn);
+ISABus *vt82c686b_isa_init(PCIBus * bus, int devfn);
void vt82c686b_ac97_init(PCIBus *bus, int devfn);
void vt82c686b_mc97_init(PCIBus *bus, int devfn);
I2CBus *vt82c686b_pm_init(PCIBus *bus, int devfn, uint32_t smb_io_base,
diff --git a/hw/isa/vt82c686.c b/hw/isa/vt82c686.c
index 070cc1889f..7eaf3c7e8f 100644
--- a/hw/isa/vt82c686.c
+++ b/hw/isa/vt82c686.c
@@ -478,7 +478,7 @@ static void vt82c686b_realize(PCIDevice *d, Error **errp)
qemu_register_reset(vt82c686b_reset, d);
}
-ISABus *vt82c686b_init(PCIBus *bus, int devfn)
+ISABus *vt82c686b_isa_init(PCIBus *bus, int devfn)
{
PCIDevice *d;
diff --git a/hw/mips/mips_fulong2e.c b/hw/mips/mips_fulong2e.c
index ca1f76a724..9ebc225d3b 100644
--- a/hw/mips/mips_fulong2e.c
+++ b/hw/mips/mips_fulong2e.c
@@ -237,7 +237,7 @@ static void vt82c686b_southbridge_init(PCIBus *pci_bus, int slot, qemu_irq intc,
ISABus *isa_bus;
DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS];
- isa_bus = vt82c686b_init(pci_bus, PCI_DEVFN(slot, 0));
+ isa_bus = vt82c686b_isa_init(pci_bus, PCI_DEVFN(slot, 0));
if (!isa_bus) {
fprintf(stderr, "vt82c686b_init error\n");
exit(1);
--
2.16.2
^ permalink raw reply related [flat|nested] 35+ messages in thread
* [Qemu-devel] [PATCH 19/25] hw/isa/vt82c686: Add the TYPE_VT82C686B_SUPERIO
2018-03-08 22:39 [Qemu-devel] [PATCH 00/25] remove i386/pc dependency: generic SuperIO Philippe Mathieu-Daudé
` (17 preceding siblings ...)
2018-03-08 22:39 ` [Qemu-devel] [PATCH 18/25] hw/isa/vt82c686: Rename vt82c686b_init() -> vt82c686b_isa_init() Philippe Mathieu-Daudé
@ 2018-03-08 22:39 ` Philippe Mathieu-Daudé
2018-03-08 22:39 ` [Qemu-devel] [PATCH 20/25] MAINTAINERS: Add entries for the VT82C686B Super I/O Philippe Mathieu-Daudé
` (5 subsequent siblings)
24 siblings, 0 replies; 35+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-03-08 22:39 UTC (permalink / raw)
To: Michael S . Tsirkin, Paolo Bonzini, Hervé Poussineau,
Marcel Apfelbaum, Aurelien Jarno, Alexey Kardashevskiy,
Yongbok Kim, Thomas Huth
Cc: Philippe Mathieu-Daudé,
qemu-devel, Richard Henderson, Mark Cave-Ayland, Eduardo Habkost,
Artyom Tarasenko, Guan Xuetao
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
include/hw/isa/vt82c686.h | 2 ++
hw/isa/vt82c686.c | 20 ++++++++++++++++++++
hw/mips/mips_fulong2e.c | 15 +++------------
3 files changed, 25 insertions(+), 12 deletions(-)
diff --git a/include/hw/isa/vt82c686.h b/include/hw/isa/vt82c686.h
index db97c8ed7a..c3c2b6e786 100644
--- a/include/hw/isa/vt82c686.h
+++ b/include/hw/isa/vt82c686.h
@@ -1,6 +1,8 @@
#ifndef HW_VT82C686_H
#define HW_VT82C686_H
+#define TYPE_VT82C686B_SUPERIO "vt82c686b-superio"
+
/* vt82c686.c */
ISABus *vt82c686b_isa_init(PCIBus * bus, int devfn);
void vt82c686b_ac97_init(PCIBus *bus, int devfn);
diff --git a/hw/isa/vt82c686.c b/hw/isa/vt82c686.c
index 7eaf3c7e8f..cff1946232 100644
--- a/hw/isa/vt82c686.c
+++ b/hw/isa/vt82c686.c
@@ -17,6 +17,7 @@
#include "hw/i2c/smbus.h"
#include "hw/pci/pci.h"
#include "hw/isa/isa.h"
+#include "hw/isa/superio.h"
#include "hw/sysbus.h"
#include "hw/mips/mips.h"
#include "hw/isa/apm.h"
@@ -519,11 +520,30 @@ static const TypeInfo via_info = {
},
};
+static void vt82c686b_superio_class_init(ObjectClass *klass, void *data)
+{
+ ISASuperIOClass *sc = ISA_SUPERIO_CLASS(klass);
+
+ sc->serial.count = 2;
+ sc->parallel.count = 1;
+ sc->ide.count = 0;
+ sc->floppy.count = 1;
+}
+
+static const TypeInfo via_superio_info = {
+ .name = TYPE_VT82C686B_SUPERIO,
+ .parent = TYPE_ISA_SUPERIO,
+ .instance_size = sizeof(ISASuperIODevice),
+ .class_size = sizeof(ISASuperIOClass),
+ .class_init = vt82c686b_superio_class_init,
+};
+
static void vt82c686b_register_types(void)
{
type_register_static(&via_ac97_info);
type_register_static(&via_mc97_info);
type_register_static(&via_pm_info);
+ type_register_static(&via_superio_info);
type_register_static(&via_info);
}
diff --git a/hw/mips/mips_fulong2e.c b/hw/mips/mips_fulong2e.c
index 9ebc225d3b..d608f17e1e 100644
--- a/hw/mips/mips_fulong2e.c
+++ b/hw/mips/mips_fulong2e.c
@@ -23,9 +23,7 @@
#include "hw/hw.h"
#include "hw/i386/pc.h"
#include "hw/dma/i8257.h"
-#include "hw/char/serial.h"
-#include "hw/char/parallel.h"
-#include "hw/block/fdc.h"
+#include "hw/isa/superio.h"
#include "net/net.h"
#include "hw/boards.h"
#include "hw/i2c/smbus.h"
@@ -34,7 +32,6 @@
#include "hw/mips/mips.h"
#include "hw/mips/cpudevs.h"
#include "hw/pci/pci.h"
-#include "sysemu/sysemu.h"
#include "audio/audio.h"
#include "qemu/log.h"
#include "hw/loader.h"
@@ -44,8 +41,6 @@
#include "hw/isa/vt82c686.h"
#include "hw/timer/mc146818rtc.h"
#include "hw/timer/i8254.h"
-#include "hw/input/i8042.h"
-#include "sysemu/blockdev.h"
#include "exec/address-spaces.h"
#include "sysemu/qtest.h"
#include "qemu/error-report.h"
@@ -250,6 +245,8 @@ static void vt82c686b_southbridge_init(PCIBus *pci_bus, int slot, qemu_irq intc,
/* init other devices */
i8254_pit_init(isa_bus, 0x40, 0, NULL);
i8257_dma_init(isa_bus, 0);
+ /* Super I/O */
+ isa_create_simple(isa_bus, TYPE_VT82C686B_SUPERIO);
ide_drive_get(hd, ARRAY_SIZE(hd));
vt82c686b_ide_init(pci_bus, hd, PCI_DEVFN(slot, 1));
@@ -262,12 +259,6 @@ static void vt82c686b_southbridge_init(PCIBus *pci_bus, int slot, qemu_irq intc,
/* Audio support */
vt82c686b_ac97_init(pci_bus, PCI_DEVFN(slot, 5));
vt82c686b_mc97_init(pci_bus, PCI_DEVFN(slot, 6));
-
- /* Super I/O */
- isa_create_simple(isa_bus, TYPE_I8042);
-
- serial_hds_isa_init(isa_bus, 0, MAX_SERIAL_PORTS);
- parallel_hds_isa_init(isa_bus, 1);
}
/* Network support */
--
2.16.2
^ permalink raw reply related [flat|nested] 35+ messages in thread
* [Qemu-devel] [PATCH 20/25] MAINTAINERS: Add entries for the VT82C686B Super I/O
2018-03-08 22:39 [Qemu-devel] [PATCH 00/25] remove i386/pc dependency: generic SuperIO Philippe Mathieu-Daudé
` (18 preceding siblings ...)
2018-03-08 22:39 ` [Qemu-devel] [PATCH 19/25] hw/isa/vt82c686: Add the TYPE_VT82C686B_SUPERIO Philippe Mathieu-Daudé
@ 2018-03-08 22:39 ` Philippe Mathieu-Daudé
2018-03-08 22:39 ` [Qemu-devel] [PATCH 21/25] MAINTAINERS: Split the Alpha TCG/machine section Philippe Mathieu-Daudé
` (4 subsequent siblings)
24 siblings, 0 replies; 35+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-03-08 22:39 UTC (permalink / raw)
To: Michael S . Tsirkin, Paolo Bonzini, Hervé Poussineau,
Marcel Apfelbaum, Aurelien Jarno, Alexey Kardashevskiy,
Thomas Huth
Cc: Philippe Mathieu-Daudé,
qemu-devel, Richard Henderson, Mark Cave-Ayland, Eduardo Habkost,
Yongbok Kim, Artyom Tarasenko, Guan Xuetao
So far, it is only used by the MIPS Fulong 2E mini PC.
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
MAINTAINERS | 2 ++
1 file changed, 2 insertions(+)
diff --git a/MAINTAINERS b/MAINTAINERS
index 98a8918c20..facdab44e1 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -689,6 +689,8 @@ Fulong 2E
M: Yongbok Kim <yongbok.kim@mips.com>
S: Odd Fixes
F: hw/mips/mips_fulong2e.c
+F: hw/isa/vt82c686.c
+F: include/hw/isa/vt82c686.h
Boston
M: Paul Burton <paul.burton@mips.com>
--
2.16.2
^ permalink raw reply related [flat|nested] 35+ messages in thread
* [Qemu-devel] [PATCH 21/25] MAINTAINERS: Split the Alpha TCG/machine section
2018-03-08 22:39 [Qemu-devel] [PATCH 00/25] remove i386/pc dependency: generic SuperIO Philippe Mathieu-Daudé
` (19 preceding siblings ...)
2018-03-08 22:39 ` [Qemu-devel] [PATCH 20/25] MAINTAINERS: Add entries for the VT82C686B Super I/O Philippe Mathieu-Daudé
@ 2018-03-08 22:39 ` Philippe Mathieu-Daudé
2018-03-08 22:39 ` [Qemu-devel] [PATCH 22/25] hw/isa/superio: Add the SMC FDC37C669 Super I/O Philippe Mathieu-Daudé
` (3 subsequent siblings)
24 siblings, 0 replies; 35+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-03-08 22:39 UTC (permalink / raw)
To: Michael S . Tsirkin, Paolo Bonzini, Richard Henderson,
Aurelien Jarno, Thomas Huth
Cc: Philippe Mathieu-Daudé,
qemu-devel, Eduardo Habkost, Hervé Poussineau,
Marcel Apfelbaum, Mark Cave-Ayland, Alexey Kardashevskiy,
Yongbok Kim, Artyom Tarasenko, Guan Xuetao
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
MAINTAINERS | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/MAINTAINERS b/MAINTAINERS
index facdab44e1..e806491d6c 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -127,7 +127,6 @@ Alpha
M: Richard Henderson <rth@twiddle.net>
S: Maintained
F: target/alpha/
-F: hw/alpha/
F: tests/tcg/alpha/
F: disas/alpha.c
@@ -402,6 +401,11 @@ F: include/*/*win32*
X: qga/*win32*
F: qemu.nsi
+Alpha Machines
+M: Richard Henderson <rth@twiddle.net>
+S: Maintained
+F: hw/alpha/
+
ARM Machines
------------
Allwinner-a10
--
2.16.2
^ permalink raw reply related [flat|nested] 35+ messages in thread
* [Qemu-devel] [PATCH 22/25] hw/isa/superio: Add the SMC FDC37C669 Super I/O
2018-03-08 22:39 [Qemu-devel] [PATCH 00/25] remove i386/pc dependency: generic SuperIO Philippe Mathieu-Daudé
` (20 preceding siblings ...)
2018-03-08 22:39 ` [Qemu-devel] [PATCH 21/25] MAINTAINERS: Split the Alpha TCG/machine section Philippe Mathieu-Daudé
@ 2018-03-08 22:39 ` Philippe Mathieu-Daudé
2018-03-08 22:39 ` [Qemu-devel] [PATCH 23/25] hw/alpha/dp264: Add the ISA DMA controller Philippe Mathieu-Daudé
` (2 subsequent siblings)
24 siblings, 0 replies; 35+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-03-08 22:39 UTC (permalink / raw)
To: Michael S . Tsirkin, Paolo Bonzini, Hervé Poussineau,
Marcel Apfelbaum, Aurelien Jarno, Mark Cave-Ayland,
Alexey Kardashevskiy, Richard Henderson, Thomas Huth
Cc: Philippe Mathieu-Daudé,
qemu-devel, Eduardo Habkost, Yongbok Kim, Artyom Tarasenko,
Guan Xuetao
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
Richard: I added the smc37c669 device in the Alpha machine, since it is the
only user, as Michael previously suggested the non-PC devices should not be
in the "PC chipset" entry which is already big (that's why some devices got
moved from there to MIPS and PPC).
include/hw/isa/superio.h | 1 +
hw/isa/smc37c669-superio.c | 115 +++++++++++++++++++++++++++++++++++++++++++++
MAINTAINERS | 1 +
hw/isa/Makefile.objs | 2 +-
4 files changed, 118 insertions(+), 1 deletion(-)
create mode 100644 hw/isa/smc37c669-superio.c
diff --git a/include/hw/isa/superio.h b/include/hw/isa/superio.h
index b47aac3cf8..f9ba29aa30 100644
--- a/include/hw/isa/superio.h
+++ b/include/hw/isa/superio.h
@@ -55,5 +55,6 @@ typedef struct ISASuperIOClass {
} ISASuperIOClass;
#define TYPE_FDC37M81X_SUPERIO "fdc37m81x-superio"
+#define TYPE_SMC37C669_SUPERIO "smc37c669-superio"
#endif /* HW_ISA_SUPERIO_H */
diff --git a/hw/isa/smc37c669-superio.c b/hw/isa/smc37c669-superio.c
new file mode 100644
index 0000000000..aa233c6967
--- /dev/null
+++ b/hw/isa/smc37c669-superio.c
@@ -0,0 +1,115 @@
+/*
+ * SMC FDC37C669 Super I/O controller
+ *
+ * Copyright (c) 2018 Philippe Mathieu-Daudé
+ *
+ * This code is licensed under the GNU GPLv2 and later.
+ * See the COPYING file in the top-level directory.
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "qemu/osdep.h"
+#include "hw/isa/superio.h"
+
+/* UARTs (compatible with NS16450 or PC16550) */
+
+static bool is_serial_enabled(ISASuperIODevice *sio, uint8_t index)
+{
+ return index < 2;
+}
+
+static uint16_t get_serial_iobase(ISASuperIODevice *sio, uint8_t index)
+{
+ return index ? 0x2f8 : 0x3f8;
+}
+
+static unsigned int get_serial_irq(ISASuperIODevice *sio, uint8_t index)
+{
+ return index ? 3 : 4;
+}
+
+/* Parallel port */
+
+static bool is_parallel_enabled(ISASuperIODevice *sio, uint8_t index)
+{
+ return index < 1;
+}
+
+static uint16_t get_parallel_iobase(ISASuperIODevice *sio, uint8_t index)
+{
+ return 0x3bc;
+}
+
+static unsigned int get_parallel_irq(ISASuperIODevice *sio, uint8_t index)
+{
+ return 7;
+}
+
+static unsigned int get_parallel_dma(ISASuperIODevice *sio, uint8_t index)
+{
+ return 3;
+}
+
+/* Diskette controller (Software compatible with the Intel PC8477) */
+
+static bool is_fdc_enabled(ISASuperIODevice *sio, uint8_t index)
+{
+ return index < 1;
+}
+
+static uint16_t get_fdc_iobase(ISASuperIODevice *sio, uint8_t index)
+{
+ return 0x3f0;
+}
+
+static unsigned int get_fdc_irq(ISASuperIODevice *sio, uint8_t index)
+{
+ return 6;
+}
+
+static unsigned int get_fdc_dma(ISASuperIODevice *sio, uint8_t index)
+{
+ return 2;
+}
+
+static void smc37c669_class_init(ObjectClass *klass, void *data)
+{
+ ISASuperIOClass *sc = ISA_SUPERIO_CLASS(klass);
+
+ sc->parallel = (ISASuperIOFuncs){
+ .count = 1,
+ .is_enabled = is_parallel_enabled,
+ .get_iobase = get_parallel_iobase,
+ .get_irq = get_parallel_irq,
+ .get_dma = get_parallel_dma,
+ };
+ sc->serial = (ISASuperIOFuncs){
+ .count = 2,
+ .is_enabled = is_serial_enabled,
+ .get_iobase = get_serial_iobase,
+ .get_irq = get_serial_irq,
+ };
+ sc->floppy = (ISASuperIOFuncs){
+ .count = 1,
+ .is_enabled = is_fdc_enabled,
+ .get_iobase = get_fdc_iobase,
+ .get_irq = get_fdc_irq,
+ .get_dma = get_fdc_dma,
+ };
+ sc->ide.count = 0;
+}
+
+static const TypeInfo smc37c669_type_info = {
+ .name = TYPE_SMC37C669_SUPERIO,
+ .parent = TYPE_ISA_SUPERIO,
+ .instance_size = sizeof(ISASuperIODevice),
+ .class_size = sizeof(ISASuperIOClass),
+ .class_init = smc37c669_class_init,
+};
+
+static void smc37c669_register_types(void)
+{
+ type_register_static(&smc37c669_type_info);
+}
+
+type_init(smc37c669_register_types)
diff --git a/MAINTAINERS b/MAINTAINERS
index e806491d6c..db20e52f5d 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -405,6 +405,7 @@ Alpha Machines
M: Richard Henderson <rth@twiddle.net>
S: Maintained
F: hw/alpha/
+F: hw/isa/smc37c669-superio.c
ARM Machines
------------
diff --git a/hw/isa/Makefile.objs b/hw/isa/Makefile.objs
index cac655ba58..83e06f6c04 100644
--- a/hw/isa/Makefile.objs
+++ b/hw/isa/Makefile.objs
@@ -1,5 +1,5 @@
common-obj-$(CONFIG_ISA_BUS) += isa-bus.o
-common-obj-$(CONFIG_ISA_BUS) += isa-superio.o
+common-obj-$(CONFIG_ISA_BUS) += isa-superio.o smc37c669-superio.o
common-obj-$(CONFIG_APM) += apm.o
common-obj-$(CONFIG_I82378) += i82378.o
common-obj-$(CONFIG_PC87312) += pc87312.o
--
2.16.2
^ permalink raw reply related [flat|nested] 35+ messages in thread
* [Qemu-devel] [PATCH 23/25] hw/alpha/dp264: Add the ISA DMA controller
2018-03-08 22:39 [Qemu-devel] [PATCH 00/25] remove i386/pc dependency: generic SuperIO Philippe Mathieu-Daudé
` (21 preceding siblings ...)
2018-03-08 22:39 ` [Qemu-devel] [PATCH 22/25] hw/isa/superio: Add the SMC FDC37C669 Super I/O Philippe Mathieu-Daudé
@ 2018-03-08 22:39 ` Philippe Mathieu-Daudé
2018-03-08 22:39 ` [Qemu-devel] [PATCH 24/25] hw/alpha/dp264: Use the TYPE_SMC37C669_SUPERIO Philippe Mathieu-Daudé
2018-03-08 22:39 ` [Qemu-devel] [PATCH 25/25] hw/i386/pc: Factor out the superio code Philippe Mathieu-Daudé
24 siblings, 0 replies; 35+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-03-08 22:39 UTC (permalink / raw)
To: Michael S . Tsirkin, Paolo Bonzini, Hervé Poussineau,
Marcel Apfelbaum, Aurelien Jarno, Alexey Kardashevskiy,
Richard Henderson, Thomas Huth
Cc: Philippe Mathieu-Daudé,
qemu-devel, Eduardo Habkost, Mark Cave-Ayland, Yongbok Kim,
Artyom Tarasenko, Guan Xuetao
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
default-configs/alpha-softmmu.mak | 2 ++
hw/alpha/dp264.c | 4 ++++
2 files changed, 6 insertions(+)
diff --git a/default-configs/alpha-softmmu.mak b/default-configs/alpha-softmmu.mak
index e0d75e3058..3740adc5e9 100644
--- a/default-configs/alpha-softmmu.mak
+++ b/default-configs/alpha-softmmu.mak
@@ -4,7 +4,9 @@ include pci.mak
include usb.mak
CONFIG_SERIAL=y
CONFIG_SERIAL_ISA=y
+CONFIG_I82374=y
CONFIG_I8254=y
+CONFIG_I8257=y
CONFIG_PCKBD=y
CONFIG_VGA_CIRRUS=y
CONFIG_IDE_CORE=y
diff --git a/hw/alpha/dp264.c b/hw/alpha/dp264.c
index e13cb576fd..ffad678ea7 100644
--- a/hw/alpha/dp264.c
+++ b/hw/alpha/dp264.c
@@ -21,6 +21,7 @@
#include "hw/timer/i8254.h"
#include "hw/input/i8042.h"
#include "hw/char/serial.h"
+#include "hw/dma/i8257.h"
#include "qemu/cutils.h"
#define MAX_IDE_BUS 2
@@ -95,6 +96,9 @@ static void clipper_init(MachineState *machine)
pci_nic_init_nofail(&nd_table[i], pci_bus, "e1000", NULL);
}
+ /* 2 82C37 (dma) */
+ isa_create_simple(isa_bus, "i82374");
+
/* IDE disk setup. */
{
DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS];
--
2.16.2
^ permalink raw reply related [flat|nested] 35+ messages in thread
* [Qemu-devel] [PATCH 24/25] hw/alpha/dp264: Use the TYPE_SMC37C669_SUPERIO
2018-03-08 22:39 [Qemu-devel] [PATCH 00/25] remove i386/pc dependency: generic SuperIO Philippe Mathieu-Daudé
` (22 preceding siblings ...)
2018-03-08 22:39 ` [Qemu-devel] [PATCH 23/25] hw/alpha/dp264: Add the ISA DMA controller Philippe Mathieu-Daudé
@ 2018-03-08 22:39 ` Philippe Mathieu-Daudé
2018-03-08 22:39 ` [Qemu-devel] [PATCH 25/25] hw/i386/pc: Factor out the superio code Philippe Mathieu-Daudé
24 siblings, 0 replies; 35+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-03-08 22:39 UTC (permalink / raw)
To: Michael S . Tsirkin, Paolo Bonzini, Hervé Poussineau,
Marcel Apfelbaum, Richard Henderson, Aurelien Jarno,
Alexey Kardashevskiy, Thomas Huth
Cc: Philippe Mathieu-Daudé,
qemu-devel, Eduardo Habkost, Mark Cave-Ayland, Yongbok Kim,
Artyom Tarasenko, Guan Xuetao
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
default-configs/alpha-softmmu.mak | 3 +++
hw/alpha/dp264.c | 10 ++++------
2 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/default-configs/alpha-softmmu.mak b/default-configs/alpha-softmmu.mak
index 3740adc5e9..bbe361f01a 100644
--- a/default-configs/alpha-softmmu.mak
+++ b/default-configs/alpha-softmmu.mak
@@ -7,6 +7,9 @@ CONFIG_SERIAL_ISA=y
CONFIG_I82374=y
CONFIG_I8254=y
CONFIG_I8257=y
+CONFIG_PARALLEL=y
+CONFIG_PARALLEL_ISA=y
+CONFIG_FDC=y
CONFIG_PCKBD=y
CONFIG_VGA_CIRRUS=y
CONFIG_IDE_CORE=y
diff --git a/hw/alpha/dp264.c b/hw/alpha/dp264.c
index ffad678ea7..80b987f7fb 100644
--- a/hw/alpha/dp264.c
+++ b/hw/alpha/dp264.c
@@ -19,8 +19,7 @@
#include "hw/timer/mc146818rtc.h"
#include "hw/ide.h"
#include "hw/timer/i8254.h"
-#include "hw/input/i8042.h"
-#include "hw/char/serial.h"
+#include "hw/isa/superio.h"
#include "hw/dma/i8257.h"
#include "qemu/cutils.h"
@@ -83,14 +82,10 @@ static void clipper_init(MachineState *machine)
mc146818_rtc_init(isa_bus, 1900, rtc_irq);
i8254_pit_init(isa_bus, 0x40, 0, NULL);
- isa_create_simple(isa_bus, TYPE_I8042);
/* VGA setup. Don't bother loading the bios. */
pci_vga_init(pci_bus);
- /* Serial code setup. */
- serial_hds_isa_init(isa_bus, 0, MAX_SERIAL_PORTS);
-
/* Network setup. e1000 is good enough, failing Tulip support. */
for (i = 0; i < nb_nics; i++) {
pci_nic_init_nofail(&nd_table[i], pci_bus, "e1000", NULL);
@@ -99,6 +94,9 @@ static void clipper_init(MachineState *machine)
/* 2 82C37 (dma) */
isa_create_simple(isa_bus, "i82374");
+ /* Super I/O */
+ isa_create_simple(isa_bus, TYPE_SMC37C669_SUPERIO);
+
/* IDE disk setup. */
{
DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS];
--
2.16.2
^ permalink raw reply related [flat|nested] 35+ messages in thread
* [Qemu-devel] [PATCH 25/25] hw/i386/pc: Factor out the superio code
2018-03-08 22:39 [Qemu-devel] [PATCH 00/25] remove i386/pc dependency: generic SuperIO Philippe Mathieu-Daudé
` (23 preceding siblings ...)
2018-03-08 22:39 ` [Qemu-devel] [PATCH 24/25] hw/alpha/dp264: Use the TYPE_SMC37C669_SUPERIO Philippe Mathieu-Daudé
@ 2018-03-08 22:39 ` Philippe Mathieu-Daudé
24 siblings, 0 replies; 35+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-03-08 22:39 UTC (permalink / raw)
To: Michael S . Tsirkin, Paolo Bonzini, Hervé Poussineau,
Marcel Apfelbaum, Aurelien Jarno, Alexey Kardashevskiy,
Thomas Huth
Cc: Philippe Mathieu-Daudé,
qemu-devel, Richard Henderson, Mark Cave-Ayland, Eduardo Habkost,
Yongbok Kim, Artyom Tarasenko, Guan Xuetao
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
hw/i386/pc.c | 72 ++++++++++++++++++++++++++++++++++--------------------------
1 file changed, 41 insertions(+), 31 deletions(-)
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index cdcdfafe8e..20fa62f5d6 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -1519,6 +1519,44 @@ static const MemoryRegionOps ioportF0_io_ops = {
},
};
+static void pc_superio_init(ISABus *isa_bus, bool create_fdctrl, bool no_vmport)
+{
+ int i;
+ DriveInfo *fd[MAX_FD];
+ qemu_irq *a20_line;
+ ISADevice *i8042, *port92, *vmmouse;
+
+ serial_hds_isa_init(isa_bus, 0, MAX_SERIAL_PORTS);
+ parallel_hds_isa_init(isa_bus, MAX_PARALLEL_PORTS);
+
+ for (i = 0; i < MAX_FD; i++) {
+ fd[i] = drive_get(IF_FLOPPY, 0, i);
+ create_fdctrl |= !!fd[i];
+ }
+ if (create_fdctrl) {
+ fdctrl_init_isa(isa_bus, fd);
+ }
+
+ i8042 = isa_create_simple(isa_bus, "i8042");
+ if (!no_vmport) {
+ vmport_init(isa_bus);
+ vmmouse = isa_try_create(isa_bus, "vmmouse");
+ } else {
+ vmmouse = NULL;
+ }
+ if (vmmouse) {
+ DeviceState *dev = DEVICE(vmmouse);
+ qdev_prop_set_ptr(dev, "ps2_mouse", i8042);
+ qdev_init_nofail(dev);
+ }
+ port92 = isa_create_simple(isa_bus, "port92");
+
+ a20_line = qemu_allocate_irqs(handle_a20_line_change, first_cpu, 2);
+ i8042_setup_a20_line(i8042, a20_line[0]);
+ port92_init(port92, a20_line[1]);
+ g_free(a20_line);
+}
+
void pc_basic_device_init(ISABus *isa_bus, qemu_irq *gsi,
ISADevice **rtc_state,
bool create_fdctrl,
@@ -1527,13 +1565,11 @@ void pc_basic_device_init(ISABus *isa_bus, qemu_irq *gsi,
uint32_t hpet_irqs)
{
int i;
- DriveInfo *fd[MAX_FD];
DeviceState *hpet = NULL;
int pit_isa_irq = 0;
qemu_irq pit_alt_irq = NULL;
qemu_irq rtc_irq = NULL;
- qemu_irq *a20_line;
- ISADevice *i8042, *port92, *vmmouse, *pit = NULL;
+ ISADevice *pit = NULL;
MemoryRegion *ioport80_io = g_new(MemoryRegion, 1);
MemoryRegion *ioportF0_io = g_new(MemoryRegion, 1);
@@ -1590,36 +1626,10 @@ void pc_basic_device_init(ISABus *isa_bus, qemu_irq *gsi,
pcspk_init(isa_bus, pit);
}
- serial_hds_isa_init(isa_bus, 0, MAX_SERIAL_PORTS);
- parallel_hds_isa_init(isa_bus, MAX_PARALLEL_PORTS);
-
- a20_line = qemu_allocate_irqs(handle_a20_line_change, first_cpu, 2);
- i8042 = isa_create_simple(isa_bus, "i8042");
- i8042_setup_a20_line(i8042, a20_line[0]);
- if (!no_vmport) {
- vmport_init(isa_bus);
- vmmouse = isa_try_create(isa_bus, "vmmouse");
- } else {
- vmmouse = NULL;
- }
- if (vmmouse) {
- DeviceState *dev = DEVICE(vmmouse);
- qdev_prop_set_ptr(dev, "ps2_mouse", i8042);
- qdev_init_nofail(dev);
- }
- port92 = isa_create_simple(isa_bus, "port92");
- port92_init(port92, a20_line[1]);
- g_free(a20_line);
-
i8257_dma_init(isa_bus, 0);
- for(i = 0; i < MAX_FD; i++) {
- fd[i] = drive_get(IF_FLOPPY, 0, i);
- create_fdctrl |= !!fd[i];
- }
- if (create_fdctrl) {
- fdctrl_init_isa(isa_bus, fd);
- }
+ /* Super I/O */
+ pc_superio_init(isa_bus, create_fdctrl, no_vmport);
}
void pc_nic_init(ISABus *isa_bus, PCIBus *pci_bus)
--
2.16.2
^ permalink raw reply related [flat|nested] 35+ messages in thread