pci-ip27.c 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. /*
  2. * This file is subject to the terms and conditions of the GNU General Public
  3. * License. See the file "COPYING" in the main directory of this archive
  4. * for more details.
  5. *
  6. * Copyright (C) 2003 Christoph Hellwig ([email protected])
  7. * Copyright (C) 1999, 2000, 04 Ralf Baechle ([email protected])
  8. * Copyright (C) 1999, 2000 Silicon Graphics, Inc.
  9. */
  10. #include <asm/sn/addrs.h>
  11. #include <asm/sn/types.h>
  12. #include <asm/sn/klconfig.h>
  13. #include <asm/sn/agent.h>
  14. #include <asm/sn/ioc3.h>
  15. #include <asm/pci/bridge.h>
  16. #ifdef CONFIG_NUMA
  17. int pcibus_to_node(struct pci_bus *bus)
  18. {
  19. struct bridge_controller *bc = BRIDGE_CONTROLLER(bus);
  20. return bc->nasid;
  21. }
  22. EXPORT_SYMBOL(pcibus_to_node);
  23. #endif /* CONFIG_NUMA */
  24. static void ip29_fixup_phy(struct pci_dev *dev)
  25. {
  26. int nasid = pcibus_to_node(dev->bus);
  27. u32 sid;
  28. if (nasid != 1)
  29. return; /* only needed on second module */
  30. /* enable ethernet PHY on IP29 systemboard */
  31. pci_read_config_dword(dev, PCI_SUBSYSTEM_VENDOR_ID, &sid);
  32. if (sid == (PCI_VENDOR_ID_SGI | (IOC3_SUBSYS_IP29_SYSBOARD) << 16))
  33. REMOTE_HUB_S(nasid, MD_LED0, 0x09);
  34. }
  35. DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SGI, PCI_DEVICE_ID_SGI_IOC3,
  36. ip29_fixup_phy);