Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 76f9f87f authored by Paul Mackerras's avatar Paul Mackerras
Browse files

powerpc: Get iseries to compile with ARCH=powerpc



This moves the Device_List member from struct device_node to
struct pci_dn, which cleans up the device_node and makes the code
a little simpler.

Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent 40ef8cbc
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -10,6 +10,7 @@


#include <asm/ppc_asm.h>
#include <asm/ppc_asm.h>
#include <asm/processor.h>
#include <asm/processor.h>
#include <asm/ptrace.h>		/* XXX for STACK_FRAME_OVERHEAD */


	.text
	.text


+3 −4
Original line number Original line Diff line number Diff line
@@ -89,11 +89,10 @@ static void tce_free_iSeries(struct iommu_table *tbl, long index, long npages)
 */
 */
static struct iommu_table *iommu_table_find(struct iommu_table * tbl)
static struct iommu_table *iommu_table_find(struct iommu_table * tbl)
{
{
	struct device_node *dp;
	struct pci_dn *pdn;

	list_for_each_entry(dp, &iSeries_Global_Device_List, Device_List) {
		struct iommu_table *it = PCI_DN(dp)->iommu_table;


	list_for_each_entry(pdn, &iSeries_Global_Device_List, Device_List) {
		struct iommu_table *it = pdn->iommu_table;
		if ((it != NULL) &&
		if ((it != NULL) &&
		    (it->it_type == TCE_PCI) &&
		    (it->it_type == TCE_PCI) &&
		    (it->it_offset == tbl->it_offset) &&
		    (it->it_offset == tbl->it_offset) &&
+6 −9
Original line number Original line Diff line number Diff line
@@ -220,7 +220,7 @@ static struct device_node *build_device_node(HvBusNumber Bus,
		return NULL;
		return NULL;
	}
	}
	node->data = pdn;
	node->data = pdn;
	list_add_tail(&node->Device_List, &iSeries_Global_Device_List);
	list_add_tail(&pdn->Device_List, &iSeries_Global_Device_List);
#if 0
#if 0
	pdn->DsaAddr = ((u64)Bus << 48) + ((u64)SubBus << 40) + ((u64)0x10 << 32);
	pdn->DsaAddr = ((u64)Bus << 48) + ((u64)SubBus << 40) + ((u64)0x10 << 32);
#endif
#endif
@@ -549,15 +549,12 @@ EXPORT_SYMBOL(iSeries_memcpy_fromio);
 */
 */
static struct device_node *find_Device_Node(int bus, int devfn)
static struct device_node *find_Device_Node(int bus, int devfn)
{
{
	struct list_head *pos;
	struct pci_dn *pdn;

	list_for_each(pos, &iSeries_Global_Device_List) {
		struct device_node *node =
			list_entry(pos, struct device_node, Device_List);


		if ((bus == ISERIES_BUS(node)) &&
	list_for_each_entry(pdn, &iSeries_Global_Device_List, Device_List) {
				(devfn == PCI_DN(node)->devfn))
		if ((bus == pdn->DsaAddr.Dsa.busNumber) &&
			return node;
				(devfn == pdn->devfn))
			return pdn->node;
	}
	}
	return NULL;
	return NULL;
}
}
+2 −0
Original line number Original line Diff line number Diff line
@@ -3,6 +3,7 @@
#define _ASM_PCI_BRIDGE_H
#define _ASM_PCI_BRIDGE_H


#include <linux/pci.h>
#include <linux/pci.h>
#include <linux/list.h>


#include <asm/iSeries/HvCallPci.h>
#include <asm/iSeries/HvCallPci.h>


@@ -74,6 +75,7 @@ struct pci_dn {
	struct	pci_dev *pcidev;	/* back-pointer to the pci device */
	struct	pci_dev *pcidev;	/* back-pointer to the pci device */
	struct	device_node *node;	/* back-pointer to the device_node */
	struct	device_node *node;	/* back-pointer to the device_node */
#ifdef CONFIG_PPC_ISERIES
#ifdef CONFIG_PPC_ISERIES
	struct	list_head Device_List;
	union HvDsaMap	DsaAddr;	/* Direct Select Address */
	union HvDsaMap	DsaAddr;	/* Direct Select Address */
					/* busNumber, subBusNumber, */
					/* busNumber, subBusNumber, */
					/* deviceId, barNumber */
					/* deviceId, barNumber */