Commit 20ba3ae101c64c03d31b2e92abf7abe10250a45e
1 parent
4c7634bc
better to use different ID for ISA and PCI
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@901 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
10 additions
and
13 deletions
hw/cirrus_vga.c
| @@ -50,11 +50,6 @@ | @@ -50,11 +50,6 @@ | ||
| 50 | #define CIRRUS_ID_CLGD5436 (0x2B<<2) | 50 | #define CIRRUS_ID_CLGD5436 (0x2B<<2) |
| 51 | #define CIRRUS_ID_CLGD5446 (0x2E<<2) | 51 | #define CIRRUS_ID_CLGD5446 (0x2E<<2) |
| 52 | 52 | ||
| 53 | -/* this define is used to select the exact CLGD implementation we | ||
| 54 | - emulate. */ | ||
| 55 | -//#define CIRRUS_ID CIRRUS_ID_CLGD5430 | ||
| 56 | -#define CIRRUS_ID CIRRUS_ID_CLGD5446 | ||
| 57 | - | ||
| 58 | // sequencer 0x07 | 53 | // sequencer 0x07 |
| 59 | #define CIRRUS_SR7_BPP_VGA 0x00 | 54 | #define CIRRUS_SR7_BPP_VGA 0x00 |
| 60 | #define CIRRUS_SR7_BPP_SVGA 0x01 | 55 | #define CIRRUS_SR7_BPP_SVGA 0x01 |
| @@ -163,7 +158,6 @@ | @@ -163,7 +158,6 @@ | ||
| 163 | 158 | ||
| 164 | // PCI 0x00: vendor, 0x02: device | 159 | // PCI 0x00: vendor, 0x02: device |
| 165 | #define PCI_VENDOR_CIRRUS 0x1013 | 160 | #define PCI_VENDOR_CIRRUS 0x1013 |
| 166 | -#define PCI_DEVICE_ID CIRRUS_ID | ||
| 167 | #define PCI_DEVICE_CLGD5462 0x00d0 | 161 | #define PCI_DEVICE_CLGD5462 0x00d0 |
| 168 | #define PCI_DEVICE_CLGD5465 0x00d6 | 162 | #define PCI_DEVICE_CLGD5465 0x00d6 |
| 169 | 163 | ||
| @@ -2695,7 +2689,7 @@ static CPUWriteMemoryFunc *cirrus_mmio_write[3] = { | @@ -2695,7 +2689,7 @@ static CPUWriteMemoryFunc *cirrus_mmio_write[3] = { | ||
| 2695 | * | 2689 | * |
| 2696 | ***************************************/ | 2690 | ***************************************/ |
| 2697 | 2691 | ||
| 2698 | -static void cirrus_init_common(CirrusVGAState * s) | 2692 | +static void cirrus_init_common(CirrusVGAState * s, int device_id) |
| 2699 | { | 2693 | { |
| 2700 | int vga_io_memory; | 2694 | int vga_io_memory; |
| 2701 | 2695 | ||
| @@ -2722,7 +2716,7 @@ static void cirrus_init_common(CirrusVGAState * s) | @@ -2722,7 +2716,7 @@ static void cirrus_init_common(CirrusVGAState * s) | ||
| 2722 | s->sr[0x0F] = CIRRUS_MEMSIZE_2M; | 2716 | s->sr[0x0F] = CIRRUS_MEMSIZE_2M; |
| 2723 | s->sr[0x1F] = 0x22; // MemClock | 2717 | s->sr[0x1F] = 0x22; // MemClock |
| 2724 | 2718 | ||
| 2725 | - s->cr[0x27] = CIRRUS_ID; | 2719 | + s->cr[0x27] = device_id; |
| 2726 | 2720 | ||
| 2727 | s->cirrus_hidden_dac_lockindex = 5; | 2721 | s->cirrus_hidden_dac_lockindex = 5; |
| 2728 | s->cirrus_hidden_dac_data = 0; | 2722 | s->cirrus_hidden_dac_data = 0; |
| @@ -2757,7 +2751,7 @@ void isa_cirrus_vga_init(DisplayState *ds, uint8_t *vga_ram_base, | @@ -2757,7 +2751,7 @@ void isa_cirrus_vga_init(DisplayState *ds, uint8_t *vga_ram_base, | ||
| 2757 | 2751 | ||
| 2758 | vga_common_init((VGAState *)s, | 2752 | vga_common_init((VGAState *)s, |
| 2759 | ds, vga_ram_base, vga_ram_offset, vga_ram_size); | 2753 | ds, vga_ram_base, vga_ram_offset, vga_ram_size); |
| 2760 | - cirrus_init_common(s); | 2754 | + cirrus_init_common(s, CIRRUS_ID_CLGD5430); |
| 2761 | s->sr[0x17] = CIRRUS_BUSTYPE_ISA; | 2755 | s->sr[0x17] = CIRRUS_BUSTYPE_ISA; |
| 2762 | /* XXX ISA-LFB support */ | 2756 | /* XXX ISA-LFB support */ |
| 2763 | } | 2757 | } |
| @@ -2792,6 +2786,9 @@ void pci_cirrus_vga_init(DisplayState *ds, uint8_t *vga_ram_base, | @@ -2792,6 +2786,9 @@ void pci_cirrus_vga_init(DisplayState *ds, uint8_t *vga_ram_base, | ||
| 2792 | PCICirrusVGAState *d; | 2786 | PCICirrusVGAState *d; |
| 2793 | uint8_t *pci_conf; | 2787 | uint8_t *pci_conf; |
| 2794 | CirrusVGAState *s; | 2788 | CirrusVGAState *s; |
| 2789 | + int device_id; | ||
| 2790 | + | ||
| 2791 | + device_id = CIRRUS_ID_CLGD5446; | ||
| 2795 | 2792 | ||
| 2796 | /* setup PCI configuration registers */ | 2793 | /* setup PCI configuration registers */ |
| 2797 | d = (PCICirrusVGAState *)pci_register_device("Cirrus VGA", | 2794 | d = (PCICirrusVGAState *)pci_register_device("Cirrus VGA", |
| @@ -2800,8 +2797,8 @@ void pci_cirrus_vga_init(DisplayState *ds, uint8_t *vga_ram_base, | @@ -2800,8 +2797,8 @@ void pci_cirrus_vga_init(DisplayState *ds, uint8_t *vga_ram_base, | ||
| 2800 | pci_conf = d->dev.config; | 2797 | pci_conf = d->dev.config; |
| 2801 | pci_conf[0x00] = (uint8_t) (PCI_VENDOR_CIRRUS & 0xff); | 2798 | pci_conf[0x00] = (uint8_t) (PCI_VENDOR_CIRRUS & 0xff); |
| 2802 | pci_conf[0x01] = (uint8_t) (PCI_VENDOR_CIRRUS >> 8); | 2799 | pci_conf[0x01] = (uint8_t) (PCI_VENDOR_CIRRUS >> 8); |
| 2803 | - pci_conf[0x02] = (uint8_t) (PCI_DEVICE_ID & 0xff); | ||
| 2804 | - pci_conf[0x03] = (uint8_t) (PCI_DEVICE_ID >> 8); | 2800 | + pci_conf[0x02] = (uint8_t) (device_id & 0xff); |
| 2801 | + pci_conf[0x03] = (uint8_t) (device_id >> 8); | ||
| 2805 | pci_conf[0x04] = PCI_COMMAND_IOACCESS | PCI_COMMAND_MEMACCESS; | 2802 | pci_conf[0x04] = PCI_COMMAND_IOACCESS | PCI_COMMAND_MEMACCESS; |
| 2806 | pci_conf[0x0a] = PCI_CLASS_SUB_VGA; | 2803 | pci_conf[0x0a] = PCI_CLASS_SUB_VGA; |
| 2807 | pci_conf[0x0b] = PCI_CLASS_BASE_DISPLAY; | 2804 | pci_conf[0x0b] = PCI_CLASS_BASE_DISPLAY; |
| @@ -2811,7 +2808,7 @@ void pci_cirrus_vga_init(DisplayState *ds, uint8_t *vga_ram_base, | @@ -2811,7 +2808,7 @@ void pci_cirrus_vga_init(DisplayState *ds, uint8_t *vga_ram_base, | ||
| 2811 | s = &d->cirrus_vga; | 2808 | s = &d->cirrus_vga; |
| 2812 | vga_common_init((VGAState *)s, | 2809 | vga_common_init((VGAState *)s, |
| 2813 | ds, vga_ram_base, vga_ram_offset, vga_ram_size); | 2810 | ds, vga_ram_base, vga_ram_offset, vga_ram_size); |
| 2814 | - cirrus_init_common(s); | 2811 | + cirrus_init_common(s, device_id); |
| 2815 | s->sr[0x17] = CIRRUS_BUSTYPE_PCI; | 2812 | s->sr[0x17] = CIRRUS_BUSTYPE_PCI; |
| 2816 | 2813 | ||
| 2817 | /* setup memory space */ | 2814 | /* setup memory space */ |
| @@ -2820,7 +2817,7 @@ void pci_cirrus_vga_init(DisplayState *ds, uint8_t *vga_ram_base, | @@ -2820,7 +2817,7 @@ void pci_cirrus_vga_init(DisplayState *ds, uint8_t *vga_ram_base, | ||
| 2820 | /* XXX: s->vram_size must be a power of two */ | 2817 | /* XXX: s->vram_size must be a power of two */ |
| 2821 | pci_register_io_region((PCIDevice *)d, 0, s->vram_size, | 2818 | pci_register_io_region((PCIDevice *)d, 0, s->vram_size, |
| 2822 | PCI_ADDRESS_SPACE_MEM_PREFETCH, cirrus_pci_lfb_map); | 2819 | PCI_ADDRESS_SPACE_MEM_PREFETCH, cirrus_pci_lfb_map); |
| 2823 | - if (CIRRUS_ID == CIRRUS_ID_CLGD5446) { | 2820 | + if (device_id == CIRRUS_ID_CLGD5446) { |
| 2824 | pci_register_io_region((PCIDevice *)d, 1, CIRRUS_PNPMMIO_SIZE, | 2821 | pci_register_io_region((PCIDevice *)d, 1, CIRRUS_PNPMMIO_SIZE, |
| 2825 | PCI_ADDRESS_SPACE_MEM, cirrus_pci_mmio_map); | 2822 | PCI_ADDRESS_SPACE_MEM, cirrus_pci_mmio_map); |
| 2826 | } | 2823 | } |