Skip to contentSkip to conversation

Split PS2 emulation from PC keyboard controller

PATCH New Paul Brook 1 participant 1 message Nov 6, 2005 Kbuild

lore
Share & tools
lore

Paul Brook

author
#0 lore raw

PATCH 1/1 Split PS2 emulation from PC keyboard controller

The attached patch splits the PS/2 device emulation from the PC keyboard controller emulation. The Arm board I'm working on uses PS/2 keyboard+mouse with a custom host controller.

Paul

Index: vl.h
===================================================================
RCS file: /cvsroot/qemu/qemu/vl.h,v
retrieving revision 1.83

vl.h +8 -0
diff -u -p -r1.83 vl.h
@@ -859,6 +859,14 @@ void adb_mouse_init(ADBBusState *bus);
 extern ADBBusState adb_bus;
 int cuda_init(SetIRQFunc *set_irq, void *irq_opaque, int irq);
 
+/* ps2.c */
+typedef struct PS2State PS2State;
+PS2State *ps2_init(void (*update_irq)(void *, int, int), void *update_arg);
+void ps2_write_mouse(PS2State *s, int val);
+void ps2_write_keyboard(PS2State *s, int val);
+uint32_t ps2_read_data(PS2State *s);
+void ps2_queue(PS2State *s, int b, int aux);
+
 #endif /* defined(QEMU_TOOL) */
 
 /* monitor.c */

Index: hw/pckbd.c
===================================================================
RCS file: /cvsroot/qemu/qemu/hw/pckbd.c,v
retrieving revision 1.11

pckbd.c +28 -367

512 lines not on this page · raw message

Index: hw/ps2.c
===================================================================
RCS file: hw/ps2.c

ps2.c new file +493 -0

493 lines not on this page · raw message

Makefile.target +7 -4
Index: hw/pckbd.c
===================================================================
@@ -240,6 +240,9 @@
 ifeq ($(findstring arm, $(TARGET_ARCH) $(ARCH)),arm)
 LIBOBJS+=arm-dis.o
 endif
+ifeq ($(findstring m68k, $(TARGET_ARCH) $(ARCH)),m68k)
+LIBOBJS+=m68k-dis.o
+endif
 
 ifeq ($(ARCH),ia64)
 OBJS += ia64-syscall.o
@@ -292,25 +295,25 @@
 
 ifeq ($(TARGET_BASE_ARCH), i386)
 # Hardware support
-VL_OBJS+= ide.o ne2000.o pckbd.o vga.o $(SOUND_HW) dma.o $(AUDIODRV)
+VL_OBJS+= ide.o ne2000.o pckbd.o ps2.o vga.o $(SOUND_HW) dma.o $(AUDIODRV)
 VL_OBJS+= fdc.o mc146818rtc.o serial.o i8259.o i8254.o pc.o
 VL_OBJS+= cirrus_vga.o mixeng.o apic.o parallel.o
 VL_OBJS+= usb.o usb-uhci.o usb-linux.o usb-hid.o
 DEFINES += -DHAS_AUDIO
 endif
 ifeq ($(TARGET_BASE_ARCH), ppc)
-VL_OBJS+= ppc.o ide.o ne2000.o pckbd.o vga.o $(SOUND_HW) dma.o $(AUDIODRV)
+VL_OBJS+= ppc.o ide.o ne2000.o pckbd.o ps2.o vga.o $(SOUND_HW) dma.o $(AUDIODRV)
 VL_OBJS+= mc146818rtc.o serial.o i8259.o i8254.o fdc.o m48t59.o
 VL_OBJS+= ppc_prep.o ppc_chrp.o cuda.o adb.o openpic.o heathrow_pic.o mixeng.o
 DEFINES += -DHAS_AUDIO
 endif
 ifeq ($(TARGET_ARCH), mips)
 VL_OBJS+= mips_r4k.o dma.o vga.o serial.o ne2000.o i8254.o i8259.o
-#VL_OBJS+= #ide.o pckbd.o fdc.o m48t59.o
+#VL_OBJS+= #ide.o pckbd.o ps2.o fdc.o m48t59.o
 endif
 ifeq ($(TARGET_BASE_ARCH), sparc)
 ifeq ($(TARGET_ARCH), sparc64)
-VL_OBJS+= sun4u.o ide.o ne2000.o pckbd.o vga.o
+VL_OBJS+= sun4u.o ide.o ne2000.o pckbd.o ps2.o vga.o
 VL_OBJS+= fdc.o mc146818rtc.o serial.o m48t59.o
 VL_OBJS+= cirrus_vga.o parallel.o
 VL_OBJS+= magic-load.o