sparc32 no keyboard mode
PATCH 1/1 sparc32 no keyboard mode
If a sun system is booted without a keyboard, it uses serial port A for the console.
This patch disables (unplugs) the keyboard when -nographic is set on the command line. Another option would be to add a -nokeyboard option to the command line.
Index: hw/slavio_serial.c
===================================================================
RCS file: /sources/qemu/qemu/hw/slavio_serial.c,v
retrieving revision 1.28
slavio_serial.c +10 -3
@@ -100,6 +100,7 @@ typedef struct ChannelState {SERIOQueue queue;CharDriverState *chr;int e0_mode, led_mode, caps_lock_mode, num_lock_mode; +int disabled; } ChannelState;struct SerialState {
@@ -193,7 +194,10 @@ static void slavio_serial_reset_chn(Chan s->wregs[11 ] =8 ; s->wregs[14 ] =0x30 ; s->wregs[15 ] =0xf8 ; - s->rregs[0 ] =0x44 ; +if (s->disabled) + s->rregs[0 ] =0x7c ; +else + s->rregs[0 ] =0x44 ; s->rregs[1 ] =6 ; s->rx = s->tx =0 ;
@@ -437,7 +441,7 @@ static void slavio_serial_mem_writeb(voiif (s->wregs[5 ] &8 ) {// tx enabled if (s->chr)qemu_chr_write (s->chr, &s->tx,1 ); -else if (s->type == kbd) { +else if (s->type == kbd && !s->disabled) {handle_kbd_command (s, val); } }
@@ -765,7 +769,8 @@ static void sunmouse_event(void *opaque,put_queue (s,0 ); } -void slavio_serial_ms_kbd_init (target_phys_addr_t base,qemu_irq irq) +void slavio_serial_ms_kbd_init (target_phys_addr_t base,qemu_irq irq, +int disabled) {int slavio_serial_io_memory, i;SerialState *s;
@@ -782,6 +787,8 @@ void slavio_serial_ms_kbd_init(target_ph s->chn[1 ].otherchn = &s->chn[0 ]; s->chn[0 ].type = mouse; s->chn[1 ].type = kbd; + s->chn[0 ].disabled = disabled; + s->chn[1 ].disabled = disabled; slavio_serial_io_memory =cpu_register_io_memory (0 , slavio_serial_mem_read, slavio_serial_mem_write, s);cpu_register_physical_memory (base,SERIAL_SIZE , slavio_serial_io_memory);
Index: hw/sun4m.c
===================================================================
RCS file: /sources/qemu/qemu/hw/sun4m.c,v
retrieving revision 1.66
sun4m.c +2 -1
@@ -436,7 +443,8 @@ static void sun4m_hw_init(const struct hslavio_timer_init_all (hwdef->counter_base, slavio_irq[hwdef->clock1_irq], slavio_cpu_irq); -slavio_serial_ms_kbd_init (hwdef->ms_kb_base, slavio_irq[hwdef->ms_kb_irq]); +slavio_serial_ms_kbd_init (hwdef->ms_kb_base, slavio_irq[hwdef->ms_kb_irq], + nographic);// Slavio TTYA (base+4, Linux ttyS0) is the first Qemu serial device // Slavio TTYB (base+0, Linux ttyS1) is the second Qemu serial device slavio_serial_init(hwdef->serial_base, slavio_irq[hwdef->ser_irq],
Index: hw/sun4m.h
===================================================================
RCS file: /sources/qemu/qemu/hw/sun4m.h,v
retrieving revision 1.2
sun4m.h +2 -1
@@ -41,7 +41,8 @@ void slavio_timer_init_all(target_phys_a/* slavio_serial.c */ SerialState *slavio_serial_init (target_phys_addr_t base,qemu_irq irq,CharDriverState *chr1,CharDriverState *chr2); -void slavio_serial_ms_kbd_init (target_phys_addr_t base,qemu_irq irq); +void slavio_serial_ms_kbd_init (target_phys_addr_t base,qemu_irq irq, +int disabled);/* slavio_misc.c */ void *slavio_misc_init(target_phys_addr_t base, target_phys_addr_t power_base,