#include "escc.h"
#include "qemu-char.h"
#include "console.h"
-
-/* debug serial */
-//#define DEBUG_SERIAL
-
-/* debug keyboard */
-//#define DEBUG_KBD
-
-/* debug mouse */
-//#define DEBUG_MOUSE
+#include "trace.h"
/*
* Chipset docs:
* 2010-May-23 Artyom Tarasenko: Reworked IUS logic
*/
-#ifdef DEBUG_SERIAL
-#define SER_DPRINTF(fmt, ...) \
- do { printf("SER: " fmt , ## __VA_ARGS__); } while (0)
-#else
-#define SER_DPRINTF(fmt, ...)
-#endif
-#ifdef DEBUG_KBD
-#define KBD_DPRINTF(fmt, ...) \
- do { printf("KBD: " fmt , ## __VA_ARGS__); } while (0)
-#else
-#define KBD_DPRINTF(fmt, ...)
-#endif
-#ifdef DEBUG_MOUSE
-#define MS_DPRINTF(fmt, ...) \
- do { printf("MSC: " fmt , ## __VA_ARGS__); } while (0)
-#else
-#define MS_DPRINTF(fmt, ...)
-#endif
-
typedef enum {
chn_a, chn_b,
} ChnID;
ChannelState *s = opaque;
SERIOQueue *q = &s->queue;
- SER_DPRINTF("channel %c put: 0x%02x\n", CHN_C(s), b);
+ trace_escc_put_queue(CHN_C(s), b);
if (q->count >= SERIO_QUEUE_SIZE)
return;
q->data[q->wptr] = b;
q->rptr = 0;
q->count--;
}
- SER_DPRINTF("channel %c get 0x%02x\n", CHN_C(s), val);
+ trace_escc_get_queue(CHN_C(s), val);
if (q->count > 0)
serial_receive_byte(s, 0);
return val;
irq = escc_update_irq_chn(s);
irq |= escc_update_irq_chn(s->otherchn);
- SER_DPRINTF("IRQ = %d\n", irq);
+ trace_escc_update_irq(irq);
qemu_set_irq(s->irq, irq);
}
ssp.parity = parity;
ssp.data_bits = data_bits;
ssp.stop_bits = stop_bits;
- SER_DPRINTF("channel %c: speed=%d parity=%c data=%d stop=%d\n", CHN_C(s),
- speed, parity, data_bits, stop_bits);
+ trace_escc_update_parameters(CHN_C(s), speed, parity, data_bits, stop_bits);
qemu_chr_ioctl(s->chr, CHR_IOCTL_SERIAL_SET_PARAMS, &ssp);
}
s = &serial->chn[channel];
switch (saddr) {
case SERIAL_CTRL:
- SER_DPRINTF("Write channel %c, reg[%d] = %2.2x\n", CHN_C(s), s->reg,
- val & 0xff);
+ trace_escc_mem_writeb_ctrl(CHN_C(s), s->reg, val & 0xff);
newreg = 0;
switch (s->reg) {
case W_CMD:
s->reg = 0;
break;
case SERIAL_DATA:
- SER_DPRINTF("Write channel %c, ch %d\n", CHN_C(s), val);
+ trace_escc_mem_writeb_data(CHN_C(s), val);
s->tx = val;
if (s->wregs[W_TXCTRL2] & TXCTRL2_TXEN) { // tx enabled
if (s->chr)
s = &serial->chn[channel];
switch (saddr) {
case SERIAL_CTRL:
- SER_DPRINTF("Read channel %c, reg[%d] = %2.2x\n", CHN_C(s), s->reg,
- s->rregs[s->reg]);
+ trace_escc_mem_readb_ctrl(CHN_C(s), s->reg, s->rregs[s->reg]);
ret = s->rregs[s->reg];
s->reg = 0;
return ret;
ret = get_queue(s);
else
ret = s->rx;
- SER_DPRINTF("Read channel %c, ch %d\n", CHN_C(s), ret);
+ trace_escc_mem_readb_data(CHN_C(s), ret);
if (s->chr)
qemu_chr_accept_input(s->chr);
return ret;
static void serial_receive_byte(ChannelState *s, int ch)
{
- SER_DPRINTF("channel %c put ch %d\n", CHN_C(s), ch);
+ trace_escc_serial_receive_byte(CHN_C(s), ch);
s->rregs[R_STATUS] |= STATUS_RXAV;
s->rx = ch;
set_rxint(s);
ChannelState *s = opaque;
int release = ch & 0x80;
- KBD_DPRINTF("Untranslated keycode %2.2x (%s)\n", ch, release? "release" :
- "press");
+ trace_escc_sunkbd_event_in(ch);
switch (ch) {
case 58: // Caps lock press
s->caps_lock_mode ^= 1;
} else {
ch = keycodes[ch & 0x7f];
}
- KBD_DPRINTF("Translated keycode %2.2x\n", ch);
+ trace_escc_sunkbd_event_out(ch);
put_queue(s, ch | release);
}
static void handle_kbd_command(ChannelState *s, int val)
{
- KBD_DPRINTF("Command %d\n", val);
+ trace_escc_kbd_command(val);
if (s->led_mode) { // Ignore led byte
s->led_mode = 0;
return;
ChannelState *s = opaque;
int ch;
- MS_DPRINTF("dx=%d dy=%d buttons=%01x\n", dx, dy, buttons_state);
-
+ trace_escc_sunmouse_event(dx, dy, buttons_state);
ch = 0x80 | 0x7; /* protocol start byte, no buttons pressed */
if (buttons_state & MOUSE_EVENT_LBUTTON)
disable qemu_co_mutex_lock_return(void *mutex, void *self) "mutex %p self %p"
disable qemu_co_mutex_unlock_entry(void *mutex, void *self) "mutex %p self %p"
disable qemu_co_mutex_unlock_return(void *mutex, void *self) "mutex %p self %p"
+
+# hw/escc.c
+disable escc_put_queue(char channel, int b) "channel %c put: 0x%02x"
+disable escc_get_queue(char channel, int val) "channel %c get 0x%02x"
+disable escc_update_irq(int irq) "IRQ = %d"
+disable escc_update_parameters(char channel, int speed, int parity, int data_bits, int stop_bits) "channel %c: speed=%d parity=%c data=%d stop=%d"
+disable escc_mem_writeb_ctrl(char channel, uint32_t reg, uint32_t val) "Write channel %c, reg[%d] = %2.2x"
+disable escc_mem_writeb_data(char channel, uint32_t val) "Write channel %c, ch %d"
+disable escc_mem_readb_ctrl(char channel, uint32_t reg, uint8_t val) "Read channel %c, reg[%d] = %2.2x"
+disable escc_mem_readb_data(char channel, uint32_t ret) "Read channel %c, ch %d"
+disable escc_serial_receive_byte(char channel, int ch) "channel %c put ch %d"
+disable escc_sunkbd_event_in(int ch) "Untranslated keycode %2.2x"
+disable escc_sunkbd_event_out(int ch) "Translated keycode %2.2x"
+disable escc_kbd_command(int val) "Command %d"
+disable escc_sunmouse_event(int dx, int dy, int buttons_state) "dx=%d dy=%d buttons=%01x"