ich.c (10ca2943aab6646839769d78f80b0d5499efcbe9) | ich.c (f90c2bcdbc69e41e575f868b984c3e2de8f51bac) |
---|---|
1/* 2 * QEMU ICH Emulation 3 * 4 * Copyright (c) 2010 Sebastian Herbszt <herbszt@gmx.de> 5 * Copyright (c) 2010 Alexander Graf <agraf@suse.de> 6 * 7 * This library is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU Lesser General Public --- 84 unchanged lines hidden (view full) --- 93 94static int pci_ich9_ahci_init(PCIDevice *dev) 95{ 96 struct AHCIPCIState *d; 97 int sata_cap_offset; 98 uint8_t *sata_cap; 99 d = DO_UPCAST(struct AHCIPCIState, card, dev); 100 | 1/* 2 * QEMU ICH Emulation 3 * 4 * Copyright (c) 2010 Sebastian Herbszt <herbszt@gmx.de> 5 * Copyright (c) 2010 Alexander Graf <agraf@suse.de> 6 * 7 * This library is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU Lesser General Public --- 84 unchanged lines hidden (view full) --- 93 94static int pci_ich9_ahci_init(PCIDevice *dev) 95{ 96 struct AHCIPCIState *d; 97 int sata_cap_offset; 98 uint8_t *sata_cap; 99 d = DO_UPCAST(struct AHCIPCIState, card, dev); 100 |
101 ahci_init(&d->ahci, &dev->qdev, pci_dma_context(dev), 6); | 101 ahci_init(&d->ahci, &dev->qdev, 6); |
102 103 pci_config_set_prog_interface(d->card.config, AHCI_PROGMODE_MAJOR_REV_1); 104 105 d->card.config[PCI_CACHE_LINE_SIZE] = 0x08; /* Cache line size */ 106 d->card.config[PCI_LATENCY_TIMER] = 0x00; /* Latency timer */ 107 pci_config_set_interrupt_pin(d->card.config, 1); 108 109 /* XXX Software should program this register */ --- 17 unchanged lines hidden (view full) --- 127 pci_set_word(sata_cap + SATA_CAP_REV, 0x10); 128 pci_set_long(sata_cap + SATA_CAP_BAR, 129 (ICH9_IDP_BAR + 0x4) | (ICH9_IDP_INDEX_LOG2 << 4)); 130 d->ahci.idp_offset = ICH9_IDP_INDEX; 131 132 return 0; 133} 134 | 102 103 pci_config_set_prog_interface(d->card.config, AHCI_PROGMODE_MAJOR_REV_1); 104 105 d->card.config[PCI_CACHE_LINE_SIZE] = 0x08; /* Cache line size */ 106 d->card.config[PCI_LATENCY_TIMER] = 0x00; /* Latency timer */ 107 pci_config_set_interrupt_pin(d->card.config, 1); 108 109 /* XXX Software should program this register */ --- 17 unchanged lines hidden (view full) --- 127 pci_set_word(sata_cap + SATA_CAP_REV, 0x10); 128 pci_set_long(sata_cap + SATA_CAP_BAR, 129 (ICH9_IDP_BAR + 0x4) | (ICH9_IDP_INDEX_LOG2 << 4)); 130 d->ahci.idp_offset = ICH9_IDP_INDEX; 131 132 return 0; 133} 134 |
135static int pci_ich9_uninit(PCIDevice *dev) | 135static void pci_ich9_uninit(PCIDevice *dev) |
136{ 137 struct AHCIPCIState *d; 138 d = DO_UPCAST(struct AHCIPCIState, card, dev); 139 140 msi_uninit(dev); 141 ahci_uninit(&d->ahci); | 136{ 137 struct AHCIPCIState *d; 138 d = DO_UPCAST(struct AHCIPCIState, card, dev); 139 140 msi_uninit(dev); 141 ahci_uninit(&d->ahci); |
142 143 return 0; | |
144} 145 146static void ich_ahci_class_init(ObjectClass *klass, void *data) 147{ 148 DeviceClass *dc = DEVICE_CLASS(klass); 149 PCIDeviceClass *k = PCI_DEVICE_CLASS(klass); 150 151 k->init = pci_ich9_ahci_init; --- 22 unchanged lines hidden --- | 142} 143 144static void ich_ahci_class_init(ObjectClass *klass, void *data) 145{ 146 DeviceClass *dc = DEVICE_CLASS(klass); 147 PCIDeviceClass *k = PCI_DEVICE_CLASS(klass); 148 149 k->init = pci_ich9_ahci_init; --- 22 unchanged lines hidden --- |