Commit 577390ff4b7ca39f3780cbfd67d02bff3d4bf8e5

Authored by blueswir1
1 parent 54215f7d

No keyboard mode (Robert Reif)


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3773 c046a42c-6fe2-441c-8c8c-71466251a162
hw/slavio_serial.c
... ... @@ -100,6 +100,7 @@ typedef struct ChannelState {
100 100 SERIOQueue queue;
101 101 CharDriverState *chr;
102 102 int e0_mode, led_mode, caps_lock_mode, num_lock_mode;
  103 + int disabled;
103 104 } ChannelState;
104 105  
105 106 struct SerialState {
... ... @@ -193,7 +194,10 @@ static void slavio_serial_reset_chn(ChannelState *s)
193 194 s->wregs[11] = 8;
194 195 s->wregs[14] = 0x30;
195 196 s->wregs[15] = 0xf8;
196   - s->rregs[0] = 0x44;
  197 + if (s->disabled)
  198 + s->rregs[0] = 0x7c;
  199 + else
  200 + s->rregs[0] = 0x44;
197 201 s->rregs[1] = 6;
198 202  
199 203 s->rx = s->tx = 0;
... ... @@ -437,7 +441,7 @@ static void slavio_serial_mem_writeb(void *opaque, target_phys_addr_t addr, uint
437 441 if (s->wregs[5] & 8) { // tx enabled
438 442 if (s->chr)
439 443 qemu_chr_write(s->chr, &s->tx, 1);
440   - else if (s->type == kbd) {
  444 + else if (s->type == kbd && !s->disabled) {
441 445 handle_kbd_command(s, val);
442 446 }
443 447 }
... ... @@ -611,6 +615,8 @@ SerialState *slavio_serial_init(target_phys_addr_t base, qemu_irq irq,
611 615  
612 616 s->chn[0].chr = chr1;
613 617 s->chn[1].chr = chr2;
  618 + s->chn[0].disabled = 0;
  619 + s->chn[1].disabled = 0;
614 620  
615 621 for (i = 0; i < 2; i++) {
616 622 s->chn[i].irq = irq;
... ... @@ -765,7 +771,8 @@ static void sunmouse_event(void *opaque,
765 771 put_queue(s, 0);
766 772 }
767 773  
768   -void slavio_serial_ms_kbd_init(target_phys_addr_t base, qemu_irq irq)
  774 +void slavio_serial_ms_kbd_init(target_phys_addr_t base, qemu_irq irq,
  775 + int disabled)
769 776 {
770 777 int slavio_serial_io_memory, i;
771 778 SerialState *s;
... ... @@ -782,6 +789,8 @@ void slavio_serial_ms_kbd_init(target_phys_addr_t base, qemu_irq irq)
782 789 s->chn[1].otherchn = &s->chn[0];
783 790 s->chn[0].type = mouse;
784 791 s->chn[1].type = kbd;
  792 + s->chn[0].disabled = disabled;
  793 + s->chn[1].disabled = disabled;
785 794  
786 795 slavio_serial_io_memory = cpu_register_io_memory(0, slavio_serial_mem_read, slavio_serial_mem_write, s);
787 796 cpu_register_physical_memory(base, SERIAL_SIZE, slavio_serial_io_memory);
... ...
hw/sun4m.c
... ... @@ -436,7 +436,8 @@ static void sun4m_hw_init(const struct hwdef *hwdef, int RAM_size,
436 436 slavio_timer_init_all(hwdef->counter_base, slavio_irq[hwdef->clock1_irq],
437 437 slavio_cpu_irq);
438 438  
439   - slavio_serial_ms_kbd_init(hwdef->ms_kb_base, slavio_irq[hwdef->ms_kb_irq]);
  439 + slavio_serial_ms_kbd_init(hwdef->ms_kb_base, slavio_irq[hwdef->ms_kb_irq],
  440 + nographic);
440 441 // Slavio TTYA (base+4, Linux ttyS0) is the first Qemu serial device
441 442 // Slavio TTYB (base+0, Linux ttyS1) is the second Qemu serial device
442 443 slavio_serial_init(hwdef->serial_base, slavio_irq[hwdef->ser_irq],
... ...
hw/sun4m.h
... ... @@ -41,7 +41,8 @@ void slavio_timer_init_all(target_phys_addr_t base, qemu_irq master_irq,
41 41 /* slavio_serial.c */
42 42 SerialState *slavio_serial_init(target_phys_addr_t base, qemu_irq irq,
43 43 CharDriverState *chr1, CharDriverState *chr2);
44   -void slavio_serial_ms_kbd_init(target_phys_addr_t base, qemu_irq irq);
  44 +void slavio_serial_ms_kbd_init(target_phys_addr_t base, qemu_irq irq,
  45 + int disabled);
45 46  
46 47 /* slavio_misc.c */
47 48 void *slavio_misc_init(target_phys_addr_t base, target_phys_addr_t power_base,
... ...