Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/mips/pci/pci-ip27.c
26442 views
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
11
#include <linux/io.h>
12
13
#include <asm/sn/addrs.h>
14
#include <asm/sn/types.h>
15
#include <asm/sn/klconfig.h>
16
#include <asm/sn/agent.h>
17
#include <asm/sn/ioc3.h>
18
#include <asm/pci/bridge.h>
19
20
#ifdef CONFIG_NUMA
21
int pcibus_to_node(struct pci_bus *bus)
22
{
23
struct bridge_controller *bc = BRIDGE_CONTROLLER(bus);
24
25
return bc->nasid;
26
}
27
EXPORT_SYMBOL(pcibus_to_node);
28
#endif /* CONFIG_NUMA */
29
30
static void ip29_fixup_phy(struct pci_dev *dev)
31
{
32
int nasid = pcibus_to_node(dev->bus);
33
u32 sid;
34
35
if (nasid != 1)
36
return; /* only needed on second module */
37
38
/* enable ethernet PHY on IP29 systemboard */
39
pci_read_config_dword(dev, PCI_SUBSYSTEM_VENDOR_ID, &sid);
40
if (sid == (PCI_VENDOR_ID_SGI | (IOC3_SUBSYS_IP29_SYSBOARD) << 16))
41
REMOTE_HUB_S(nasid, MD_LED0, 0x09);
42
}
43
44
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SGI, PCI_DEVICE_ID_SGI_IOC3,
45
ip29_fixup_phy);
46
47