This allows us to simplify a couple of things.
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
#include <asm/tce.h>
#include <asm/machdep.h>
#include <asm/abs_addr.h>
+#include <asm/pci-bridge.h>
#include <asm/iSeries/HvCallXm.h>
-#include "pci.h"
-
extern struct list_head iSeries_Global_Device_List;
* 2. TCE table per Bus.
* 3. TCE Table per IOA.
*/
-static void iommu_table_getparms(struct device_node *dn,
+static void iommu_table_getparms(struct pci_dn *pdn,
struct iommu_table* tbl)
{
struct iommu_table_cb *parms;
memset(parms, 0, sizeof(*parms));
- parms->itc_busno = ISERIES_BUS(dn);
- parms->itc_slotno = PCI_DN(dn)->LogicalSlot;
+ parms->itc_busno = pdn->DsaAddr.Dsa.busNumber;
+ parms->itc_slotno = pdn->LogicalSlot;
parms->itc_virtbus = 0;
HvCallXm_getTceTableParms(iseries_hv_addr(parms));
tbl = kmalloc(sizeof(struct iommu_table), GFP_KERNEL);
- iommu_table_getparms(dn, tbl);
+ iommu_table_getparms(pdn, tbl);
/* Look for existing tce table */
pdn->iommu_table = iommu_table_find(tbl);
* End Change Activity
*/
-#include <asm/pci-bridge.h>
-
struct pci_dev; /* For Forward Reference */
-/*
- * Gets iSeries Bus, SubBus, DevFn using device_node structure
- */
-
-#define ISERIES_BUS(DevPtr) PCI_DN(DevPtr)->DsaAddr.Dsa.busNumber
-#define ISERIES_SUBBUS(DevPtr) PCI_DN(DevPtr)->DsaAddr.Dsa.subBusNumber
-
/*
* Decodes Linux DevFn to iSeries DevFn, bridge device, or function.
* For Linux, see PCI_SLOT and PCI_FUNC in include/linux/pci.h
#include <asm/types.h>
#include <asm/resource.h>
#include <asm/abs_addr.h>
+#include <asm/pci-bridge.h>
#include <asm/iSeries/HvCallPci.h>
#include <asm/iSeries/HvTypes.h>
void __init iSeries_Device_Information(struct pci_dev *PciDev, int count)
{
struct device_node *DevNode = PciDev->sysdata;
+ struct pci_dn *pdn;
u16 bus;
u8 frame;
char card[4];
return;
}
- bus = ISERIES_BUS(DevNode);
- subbus = ISERIES_SUBBUS(DevNode);
+ pdn = PCI_DN(DevNode);
+ bus = pdn->DsaAddr.Dsa.busNumber;
+ subbus = pdn->DsaAddr.Dsa.subBusNumber;
agent = ISERIES_PCI_AGENTID(ISERIES_GET_DEVICE_FROM_SUBBUS(subbus),
ISERIES_GET_FUNCTION_FROM_SUBBUS(subbus));
iSeries_Get_Location_Code(bus, agent, &frame, card);