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

Commit 96ff6afa authored by Stephen Rothwell's avatar Stephen Rothwell Committed by Paul Mackerras
Browse files

[PATCH] powerpc: remove iSeries_Global_Device_List



We can now scan the list of device nodes instead.  This also allows us
to remove the Device_list member of struct pci_dn.

Signed-off-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent 0d177df1
Loading
Loading
Loading
Loading
+9 −6
Original line number Diff line number Diff line
@@ -32,13 +32,11 @@
#include <asm/tce.h>
#include <asm/machdep.h>
#include <asm/abs_addr.h>
#include <asm/prom.h>
#include <asm/pci-bridge.h>
#include <asm/iseries/hv_call_xm.h>
#include <asm/iseries/iommu.h>

extern struct list_head iSeries_Global_Device_List;


static void tce_build_iSeries(struct iommu_table *tbl, long index, long npages,
		unsigned long uaddr, enum dma_data_direction direction)
{
@@ -140,10 +138,15 @@ void iommu_table_getparms_iSeries(unsigned long busno,
 */
static struct iommu_table *iommu_table_find(struct iommu_table * tbl)
{
	struct pci_dn *pdn;
	struct device_node *node;

	for (node = NULL; (node = of_find_all_nodes(node)); ) {
		struct pci_dn *pdn = PCI_DN(node);
		struct iommu_table *it;

	list_for_each_entry(pdn, &iSeries_Global_Device_List, Device_List) {
		struct iommu_table *it = pdn->iommu_table;
		if (pdn == NULL)
			continue;
		it = pdn->iommu_table;
		if ((it != NULL) &&
		    (it->it_type == TCE_PCI) &&
		    (it->it_offset == tbl->it_offset) &&
+6 −8
Original line number Diff line number Diff line
@@ -50,8 +50,6 @@
 */
static struct device_node *find_Device_Node(int bus, int devfn);

LIST_HEAD(iSeries_Global_Device_List);

static int Pci_Retry_Max = 3;	/* Only retry 3 times  */
static int Pci_Error_Flag = 1;	/* Set Retry Error on. */

@@ -245,8 +243,6 @@ void iSeries_pcibios_init(void)
			pdn->bussubno = *busp;
			pdn->Irq = irq;
			pdn->LogicalSlot = *lsn;
			list_add_tail(&pdn->Device_List,
					&iSeries_Global_Device_List);
		}
	}
}
@@ -338,11 +334,13 @@ EXPORT_SYMBOL(iSeries_memcpy_fromio);
 */
static struct device_node *find_Device_Node(int bus, int devfn)
{
	struct pci_dn *pdn;
	struct device_node *node;

	list_for_each_entry(pdn, &iSeries_Global_Device_List, Device_List) {
		if ((bus == pdn->busno) && (devfn == pdn->devfn))
			return pdn->node;
	for (node = NULL; (node = of_find_all_nodes(node)); ) {
		struct pci_dn *pdn = PCI_DN(node);

		if (pdn && (bus == pdn->busno) && (devfn == pdn->devfn))
			return node;
	}
	return NULL;
}
+0 −1
Original line number Diff line number Diff line
@@ -79,7 +79,6 @@ struct pci_dn {
	struct	pci_dev *pcidev;	/* back-pointer to the pci device */
	struct	device_node *node;	/* back-pointer to the device_node */
#ifdef CONFIG_PPC_ISERIES
	struct	list_head Device_List;
	int	Irq;			/* Assigned IRQ */
	int	Flags;			/* Possible flags(disable/bist)*/
	u8	LogicalSlot;		/* Hv Slot Index for Tces */