ADB fixes


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@965 c046a42c-6fe2-441c-8c8c-71466251a162
diff --git a/vl.h b/vl.h
index aa99c27..583e843 100644
--- a/vl.h
+++ b/vl.h
@@ -528,8 +528,7 @@
 /* openpic.c */
 typedef struct openpic_t openpic_t;
 void openpic_set_irq (openpic_t *opp, int n_IRQ, int level);
-openpic_t *openpic_init (PCIBus *bus,
-                         uint32_t isu_base, uint32_t idu_base, int nb_cpus);
+openpic_t *openpic_init (PCIBus *bus, int *pmem_index, int nb_cpus);
 
 /* vga.c */
 
@@ -727,28 +726,33 @@
 
 #define MAX_ADB_DEVICES 16
 
+#define ADB_MAX_OUT_LEN 16
+
 typedef struct ADBDevice ADBDevice;
 
-typedef void ADBDeviceReceivePacket(ADBDevice *d, const uint8_t *buf, int len);
-
+/* buf = NULL means polling */
+typedef int ADBDeviceRequest(ADBDevice *d, uint8_t *buf_out,
+                              const uint8_t *buf, int len);
 struct ADBDevice {
     struct ADBBusState *bus;
     int devaddr;
     int handler;
-    ADBDeviceReceivePacket *receive_packet;
+    ADBDeviceRequest *devreq;
     void *opaque;
 };
 
 typedef struct ADBBusState {
     ADBDevice devices[MAX_ADB_DEVICES];
     int nb_devices;
+    int poll_index;
 } ADBBusState;
 
-void adb_receive_packet(ADBBusState *s, const uint8_t *buf, int len);
-void adb_send_packet(ADBBusState *s, const uint8_t *buf, int len);
+int adb_request(ADBBusState *s, uint8_t *buf_out,
+                const uint8_t *buf, int len);
+int adb_poll(ADBBusState *s, uint8_t *buf_out);
 
 ADBDevice *adb_register_device(ADBBusState *s, int devaddr, 
-                               ADBDeviceReceivePacket *receive_packet, 
+                               ADBDeviceRequest *devreq, 
                                void *opaque);
 void adb_kbd_init(ADBBusState *bus);
 void adb_mouse_init(ADBBusState *bus);