[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH V6 07/32] pci/bridge: clean up of pci_bridge_initfn(
From: |
Isaku Yamahata |
Subject: |
[Qemu-devel] [PATCH V6 07/32] pci/bridge: clean up of pci_bridge_initfn() |
Date: |
Fri, 30 Oct 2009 21:21:01 +0900 |
- use symbolic constant
- use helper function pci_set_xxx()
- removed lines which initializes to 0.
It is unnecessary because it is already zeroed.
- add some comments on command registers.
Some initial values are suspicious because they seems to
be specific to apb_pci.c which is the only user of pci bridge right now.
For now don't touch those values to avoid breakage.
Signed-off-by: Isaku Yamahata <address@hidden>
Acked-by: Michael S. Tsirkin <address@hidden>
---
hw/pci.c | 36 +++++++++++++++++++++++++-----------
1 files changed, 25 insertions(+), 11 deletions(-)
diff --git a/hw/pci.c b/hw/pci.c
index ab5eff8..6abb0e2 100644
--- a/hw/pci.c
+++ b/hw/pci.c
@@ -922,17 +922,31 @@ static int pci_bridge_initfn(PCIDevice *dev)
pci_config_set_vendor_id(s->dev.config, s->vid);
pci_config_set_device_id(s->dev.config, s->did);
- s->dev.config[0x04] = 0x06; // command = bus master, pci mem
- s->dev.config[0x05] = 0x00;
- s->dev.config[0x06] = 0xa0; // status = fast back-to-back, 66MHz, no error
- s->dev.config[0x07] = 0x00; // status = fast devsel
- s->dev.config[0x08] = 0x00; // revision
- s->dev.config[0x09] = 0x00; // programming i/f
- pci_config_set_class(s->dev.config, PCI_CLASS_BRIDGE_PCI);
- s->dev.config[0x0D] = 0x10; // latency_timer
- s->dev.config[PCI_HEADER_TYPE] =
- PCI_HEADER_TYPE_MULTI_FUNCTION | PCI_HEADER_TYPE_BRIDGE; // header_type
- s->dev.config[0x1E] = 0xa0; // secondary status
+ /* TODO: intial value
+ * command register:
+ * According to PCI bridge spec, after reset
+ * bus master bit is off
+ * memory space enable bit is off
+ * According to manual (805-1251.pdf).(See abp_pbi.c for its links.)
+ * the reset value should be zero unless the boot pin is tied high
+ * (which is tru) and thus it should be PCI_COMMAND_MEMORY.
+ *
+ * For now, don't touch the value.
+ * Later command register will be set to zero and apb_pci.c will
+ * override the value.
+ * Same for latency timer, and multi function bit of header type.
+ */
+ pci_set_word(dev->config + PCI_COMMAND,
+ PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER);
+
+ pci_set_word(dev->config + PCI_STATUS,
+ PCI_STATUS_66MHZ | PCI_STATUS_FAST_BACK);
+ pci_config_set_class(dev->config, PCI_CLASS_BRIDGE_PCI);
+ dev->config[PCI_LATENCY_TIMER] = 0x10;
+ dev->config[PCI_HEADER_TYPE] =
+ PCI_HEADER_TYPE_MULTI_FUNCTION | PCI_HEADER_TYPE_BRIDGE;
+ pci_set_word(dev->config + PCI_SEC_STATUS,
+ PCI_STATUS_66MHZ | PCI_STATUS_FAST_BACK);
return 0;
}
--
1.6.0.2
- [Qemu-devel] [PATCH V6 26/32] pci: use range helper functions., (continued)
- [Qemu-devel] [PATCH V6 26/32] pci: use range helper functions., Isaku Yamahata, 2009/10/30
- [Qemu-devel] [PATCH V6 03/32] pci: use PCI_SLOT() and PCI_FUNC()., Isaku Yamahata, 2009/10/30
- [Qemu-devel] [PATCH V6 09/32] pci: s/PCI_ADDRESS_SPACE_/PCI_BASE_ADDRESS_SPACE_/ to match pci_regs.h, Isaku Yamahata, 2009/10/30
- [Qemu-devel] [PATCH V6 12/32] pci_host.h: move functions in pci_host.h into .c file., Isaku Yamahata, 2009/10/30
- [Qemu-devel] [PATCH V6 04/32] pci: define a constant to represent a unmapped bar and use it., Isaku Yamahata, 2009/10/30
- [Qemu-devel] [PATCH V6 29/32] pci: cosmetic on pci_upadte_mappings(), Isaku Yamahata, 2009/10/30
- [Qemu-devel] [PATCH V6 22/32] pci_host: change the signature of pci_data_{read, write}., Isaku Yamahata, 2009/10/30
- [Qemu-devel] [PATCH V6 13/32] pci_host: consolidate pci config address access., Isaku Yamahata, 2009/10/30
- [Qemu-devel] [PATCH V6 23/32] vmstate: introduce VMSTATE_BUFFER_UNSAFE_INFO., Isaku Yamahata, 2009/10/30
- [Qemu-devel] [PATCH V6 24/32] pci: pcie host and mmcfg support., Isaku Yamahata, 2009/10/30
- [Qemu-devel] [PATCH V6 07/32] pci/bridge: clean up of pci_bridge_initfn(),
Isaku Yamahata <=
- [Qemu-devel] [PATCH V6 31/32] pci: implement pci bridge filtering., Isaku Yamahata, 2009/10/30
- [Qemu-devel] [PATCH V6 25/32] pci: add helper functions to check ranges overlap., Isaku Yamahata, 2009/10/30
- [Qemu-devel] [PATCH V6 08/32] pci: clean up pci_init_wmask(), Isaku Yamahata, 2009/10/30
- [Qemu-devel] [PATCH V6 28/32] pci: initialize pci config headers depending it pci header type., Isaku Yamahata, 2009/10/30
- [Qemu-devel] [PATCH V6 32/32] pci/monitor: print out bridge's filtering values and so on., Isaku Yamahata, 2009/10/30
- [Qemu-devel] [PATCH V6 20/32] pci: factor out the conversion logic from io port address into pci device., Isaku Yamahata, 2009/10/30
- [Qemu-devel] [PATCH V6 30/32] pci: factor out pci_for_each_device()., Isaku Yamahata, 2009/10/30
- [Qemu-devel] [PATCH V6 19/32] pci: make pci configuration transaction more accurate., Isaku Yamahata, 2009/10/30