Split PS2 emulation from PC keyboard controller
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
@@ -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
@@ -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