X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=vl.h;h=f8414ea3fd692df422c35ac20e3a1e74a45a7e9b;hb=0aff66b5c8bbe89cb61df75e0511af2c1802a593;hp=8b905b713c85d00a0833f85bd70dbf74d6ed8ec8;hpb=008a8818d91418254a94d7e5f6f66b1435a1edaf;p=qemu diff --git a/vl.h b/vl.h index 8b905b7..f8414ea 100644 --- a/vl.h +++ b/vl.h @@ -82,6 +82,13 @@ static inline char *realpath(const char *path, char *resolved_path) #define tostring(s) #s #endif +#ifndef MIN +#define MIN(a, b) (((a) < (b)) ? (a) : (b)) +#endif +#ifndef MAX +#define MAX(a, b) (((a) > (b)) ? (a) : (b)) +#endif + /* vl.c */ uint64_t muldiv64(uint64_t a, uint32_t b, uint32_t c); @@ -586,6 +593,20 @@ typedef struct PCIIORegion { #define PCI_ROM_SLOT 6 #define PCI_NUM_REGIONS 7 + +#define PCI_DEVICES_MAX 64 + +#define PCI_VENDOR_ID 0x00 /* 16 bits */ +#define PCI_DEVICE_ID 0x02 /* 16 bits */ +#define PCI_COMMAND 0x04 /* 16 bits */ +#define PCI_COMMAND_IO 0x1 /* Enable response in I/O space */ +#define PCI_COMMAND_MEMORY 0x2 /* Enable response in Memory space */ +#define PCI_CLASS_DEVICE 0x0a /* Device class */ +#define PCI_INTERRUPT_LINE 0x3c /* 8 bits */ +#define PCI_INTERRUPT_PIN 0x3d /* 8 bits */ +#define PCI_MIN_GNT 0x3e /* 8 bits */ +#define PCI_MAX_LAT 0x3f /* 8 bits */ + struct PCIDevice { /* PCI config space */ uint8_t config[256]; @@ -599,6 +620,7 @@ struct PCIDevice { /* do not access the following fields */ PCIConfigReadFunc *config_read; PCIConfigWriteFunc *config_write; + /* ??? This is a PC-specific hack, and should be removed. */ int irq_index; }; @@ -620,21 +642,37 @@ void pci_default_write_config(PCIDevice *d, void generic_pci_save(QEMUFile* f, void *opaque); int generic_pci_load(QEMUFile* f, void *opaque, int version_id); -extern struct PIIX3State *piix3_state; +typedef void (*pci_set_irq_fn)(PCIDevice *pci_dev, void *pic, + int irq_num, int level); +PCIBus *pci_register_bus(pci_set_irq_fn set_irq, void *pic, int devfn_min); + +void pci_nic_init(PCIBus *bus, NICInfo *nd); +void pci_data_write(void *opaque, uint32_t addr, uint32_t val, int len); +uint32_t pci_data_read(void *opaque, uint32_t addr, int len); +int pci_bus_num(PCIBus *s); +void pci_for_each_device(void (*fn)(PCIDevice *d)); -PCIBus *i440fx_init(void); -void piix3_init(PCIBus *bus); -void pci_bios_init(void); void pci_info(void); -/* temporary: will be moved in platform specific file */ -void pci_set_pic(PCIBus *bus, SetIRQFunc *set_irq, void *irq_opaque); +/* prep_pci.c */ PCIBus *pci_prep_init(void); -PCIBus *pci_grackle_init(uint32_t base); -PCIBus *pci_pmac_init(void); -PCIBus *pci_apb_init(target_ulong special_base, target_ulong mem_base); -void pci_nic_init(PCIBus *bus, NICInfo *nd); +/* grackle_pci.c */ +PCIBus *pci_grackle_init(uint32_t base, void *pic); + +/* unin_pci.c */ +PCIBus *pci_pmac_init(void *pic); + +/* apb_pci.c */ +PCIBus *pci_apb_init(target_ulong special_base, target_ulong mem_base, + void *pic); + +PCIBus *pci_vpb_init(void *pic); + +/* piix_pci.c */ +PCIBus *i440fx_init(void); +int piix3_init(PCIBus *bus); +void pci_bios_init(void); /* openpic.c */ typedef struct openpic_t openpic_t; @@ -670,11 +708,15 @@ struct DisplayState { uint8_t *data; int linesize; int depth; + int bgr; /* BGR color order instead of RGB. Only valid for depth == 32 */ int width; int height; + void *opaque; + void (*dpy_update)(struct DisplayState *s, int x, int y, int w, int h); void (*dpy_resize)(struct DisplayState *s, int w, int h); void (*dpy_refresh)(struct DisplayState *s); + void (*dpy_copy)(struct DisplayState *s, int src_x, int src_y, int dst_x, int dst_y, int w, int h); }; static inline void dpy_update(DisplayState *s, int x, int y, int w, int h) @@ -703,6 +745,9 @@ void sdl_display_init(DisplayState *ds, int full_screen); /* cocoa.m */ void cocoa_display_init(DisplayState *ds, int full_screen); +/* vnc.c */ +void vnc_display_init(DisplayState *ds, int display); + /* ide.c */ #define MAX_DISKS 4 @@ -712,10 +757,14 @@ void isa_ide_init(int iobase, int iobase2, int irq, BlockDriverState *hd0, BlockDriverState *hd1); void pci_cmd646_ide_init(PCIBus *bus, BlockDriverState **hd_table, int secondary_ide_enabled); -void pci_piix3_ide_init(PCIBus *bus, BlockDriverState **hd_table); +void pci_piix3_ide_init(PCIBus *bus, BlockDriverState **hd_table, int devfn); int pmac_ide_init (BlockDriverState **hd_table, SetIRQFunc *set_irq, void *irq_opaque, int irq); +/* cdrom.c */ +int cdrom_read_toc(int nb_sectors, uint8_t *buf, int msf, int start_track); +int cdrom_read_toc_raw(int nb_sectors, uint8_t *buf, int msf, int session_num); + /* es1370.c */ int es1370_init (PCIBus *bus, AudioState *s); @@ -827,6 +876,11 @@ int pit_get_out(PITState *pit, int channel, int64_t current_time); void pcspk_init(PITState *); int pcspk_audio_init(AudioState *); +/* acpi.c */ +extern int acpi_enabled; +void piix4_pm_init(PCIBus *bus, int devfn); +void acpi_bios_init(void); + /* pc.c */ extern QEMUMachine pc_machine; extern QEMUMachine isapc_machine; @@ -972,21 +1026,35 @@ int cuda_init(SetIRQFunc *set_irq, void *irq_opaque, int irq); /* usb ports of the VM */ -#define MAX_VM_USB_PORTS 8 +void qemu_register_usb_port(USBPort *port, void *opaque, int index, + usb_attachfn attach); -extern USBPort *vm_usb_ports[MAX_VM_USB_PORTS]; -extern USBDevice *vm_usb_hub; +#define VM_USB_HUB_SIZE 8 void do_usb_add(const char *devname); void do_usb_del(const char *devname); void usb_info(void); +/* scsi-disk.c */ +typedef struct SCSIDevice SCSIDevice; +typedef void (*scsi_completionfn)(void *, uint32_t, int); + +SCSIDevice *scsi_disk_init(BlockDriverState *bdrv, + scsi_completionfn completion, + void *opaque); +void scsi_disk_destroy(SCSIDevice *s); + +int32_t scsi_send_command(SCSIDevice *s, uint32_t tag, uint8_t *buf); +int scsi_read_data(SCSIDevice *s, uint8_t *data, uint32_t len); +int scsi_write_data(SCSIDevice *s, uint8_t *data, uint32_t len); + /* integratorcp.c */ extern QEMUMachine integratorcp926_machine; extern QEMUMachine integratorcp1026_machine; /* versatilepb.c */ extern QEMUMachine versatilepb_machine; +extern QEMUMachine versatileab_machine; /* ps2.c */ void *ps2_kbd_init(void (*update_irq)(void *, int), void *update_arg); @@ -1019,6 +1087,12 @@ void *pl190_init(uint32_t base, void *parent, int irq, int fiq); void sp804_init(uint32_t base, void *pic, int irq); void icp_pit_init(uint32_t base, void *pic, int irq); +/* arm_boot.c */ + +void arm_load_kernel(int ram_size, const char *kernel_filename, + const char *kernel_cmdline, const char *initrd_filename, + int board_id); + /* sh7750.c */ struct SH7750State;