git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git]
/
arch
/
powerpc
/
sysdev
/
dart_iommu.c
diff --git
a/arch/powerpc/sysdev/dart_iommu.c
b/arch/powerpc/sysdev/dart_iommu.c
index
03b4477
..
1488535
100644
(file)
--- a/
arch/powerpc/sysdev/dart_iommu.c
+++ b/
arch/powerpc/sysdev/dart_iommu.c
@@
-48,9
+48,6
@@
#include "dart.h"
#include "dart.h"
-extern int iommu_is_off;
-extern int iommu_force_on;
-
/* Physical base address and size of the DART table */
unsigned long dart_tablebase; /* exported to htab_initialize */
static unsigned long dart_tablesize;
/* Physical base address and size of the DART table */
unsigned long dart_tablebase; /* exported to htab_initialize */
static unsigned long dart_tablesize;
@@
-156,9
+153,6
@@
static void dart_build(struct iommu_table *tbl, long index,
DBG("dart: build at: %lx, %lx, addr: %x\n", index, npages, uaddr);
DBG("dart: build at: %lx, %lx, addr: %x\n", index, npages, uaddr);
- index <<= DART_PAGE_FACTOR;
- npages <<= DART_PAGE_FACTOR;
-
dp = ((unsigned int*)tbl->it_base) + index;
/* On U3, all memory is contigous, so we can move this
dp = ((unsigned int*)tbl->it_base) + index;
/* On U3, all memory is contigous, so we can move this
@@
-199,9
+193,6
@@
static void dart_free(struct iommu_table *tbl, long index, long npages)
DBG("dart: free at: %lx, %lx\n", index, npages);
DBG("dart: free at: %lx, %lx\n", index, npages);
- index <<= DART_PAGE_FACTOR;
- npages <<= DART_PAGE_FACTOR;
-
dp = ((unsigned int *)tbl->it_base) + index;
while (npages--)
dp = ((unsigned int *)tbl->it_base) + index;
while (npages--)
@@
-281,7
+272,7
@@
static void iommu_table_dart_setup(void)
iommu_table_dart.it_busno = 0;
iommu_table_dart.it_offset = 0;
/* it_size is in number of entries */
iommu_table_dart.it_busno = 0;
iommu_table_dart.it_offset = 0;
/* it_size is in number of entries */
- iommu_table_dart.it_size =
(dart_tablesize / sizeof(u32)) >> DART_PAGE_FACTOR
;
+ iommu_table_dart.it_size =
dart_tablesize / sizeof(u32)
;
/* Initialize the common IOMMU code */
iommu_table_dart.it_base = (unsigned long)dart_vbase;
/* Initialize the common IOMMU code */
iommu_table_dart.it_base = (unsigned long)dart_vbase;
@@
-295,24
+286,15
@@
static void iommu_table_dart_setup(void)
set_bit(iommu_table_dart.it_size - 1, iommu_table_dart.it_map);
}
set_bit(iommu_table_dart.it_size - 1, iommu_table_dart.it_map);
}
-static void
iommu
_dev_setup_dart(struct pci_dev *dev)
+static void
pci_dma
_dev_setup_dart(struct pci_dev *dev)
{
{
- struct device_node *dn;
-
/* We only have one iommu table on the mac for now, which makes
* things simple. Setup all PCI devices to point to this table
/* We only have one iommu table on the mac for now, which makes
* things simple. Setup all PCI devices to point to this table
- *
- * We must use pci_device_to_OF_node() to make sure that
- * we get the real "final" pointer to the device in the
- * pci_dev sysdata and not the temporary PHB one
*/
*/
- dn = pci_device_to_OF_node(dev);
-
- if (dn)
- PCI_DN(dn)->iommu_table = &iommu_table_dart;
+ dev->dev.archdata.dma_data = &iommu_table_dart;
}
}
-static void
iommu
_bus_setup_dart(struct pci_bus *bus)
+static void
pci_dma
_bus_setup_dart(struct pci_bus *bus)
{
struct device_node *dn;
{
struct device_node *dn;
@@
-327,9
+309,6
@@
static void iommu_bus_setup_dart(struct pci_bus *bus)
PCI_DN(dn)->iommu_table = &iommu_table_dart;
}
PCI_DN(dn)->iommu_table = &iommu_table_dart;
}
-static void iommu_dev_setup_null(struct pci_dev *dev) { }
-static void iommu_bus_setup_null(struct pci_bus *bus) { }
-
void iommu_init_early_dart(void)
{
struct device_node *dn;
void iommu_init_early_dart(void)
{
struct device_node *dn;
@@
-350,22
+329,21
@@
void iommu_init_early_dart(void)
/* Initialize the DART HW */
if (dart_init(dn) == 0) {
/* Initialize the DART HW */
if (dart_init(dn) == 0) {
- ppc_md.
iommu_dev_setup = iommu
_dev_setup_dart;
- ppc_md.
iommu_bus_setup = iommu
_bus_setup_dart;
+ ppc_md.
pci_dma_dev_setup = pci_dma
_dev_setup_dart;
+ ppc_md.
pci_dma_bus_setup = pci_dma
_bus_setup_dart;
/* Setup pci_dma ops */
/* Setup pci_dma ops */
- pci_iommu_init();
-
+ pci_dma_ops = &dma_iommu_ops;
return;
}
bail:
/* If init failed, use direct iommu and null setup functions */
return;
}
bail:
/* If init failed, use direct iommu and null setup functions */
- ppc_md.
iommu_dev_setup = iommu_dev_setup_null
;
- ppc_md.
iommu_bus_setup = iommu_bus_setup_null
;
+ ppc_md.
pci_dma_dev_setup = NULL
;
+ ppc_md.
pci_dma_bus_setup = NULL
;
/* Setup pci_dma ops */
/* Setup pci_dma ops */
- pci_d
irect_iommu_init()
;
+ pci_d
ma_ops = &dma_direct_ops
;
}
}