mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-31 12:10:52 -04:00
[SPARC64]: Fix conflicts in SBUS/PCI/EBUS/ISA DMA handling.
Fully unify all of the DMA ops so that subordinate bus types to the DMA operation providers (such as ebus, isa, of_device) can work transparently. Basically, we just make sure that for every system device we create, the dev->archdata 'iommu' and 'stc' fields are filled in. Then we have two platform variants of the DMA ops, one for SUN4U which actually programs the real hardware, and one for SUN4V which makes hypervisor calls. This also fixes the crashes in parport_pc on sparc64, reported by Meelis Roos. Signed-off-by: David S. Miller <[email protected]>
This commit is contained in:
parent
c7f439b99e
commit
ad7ad57c61
18 changed files with 620 additions and 1224 deletions
|
|
@ -210,6 +210,10 @@ static void __init walk_children(struct device_node *dp, struct sbus_dev *parent
|
|||
|
||||
sdev->bus = sbus;
|
||||
sdev->parent = parent;
|
||||
sdev->ofdev.dev.archdata.iommu =
|
||||
sbus->ofdev.dev.archdata.iommu;
|
||||
sdev->ofdev.dev.archdata.stc =
|
||||
sbus->ofdev.dev.archdata.stc;
|
||||
|
||||
fill_sbus_device(dp, sdev);
|
||||
|
||||
|
|
@ -269,6 +273,11 @@ static void __init build_one_sbus(struct device_node *dp, int num_sbus)
|
|||
|
||||
sdev->bus = sbus;
|
||||
sdev->parent = NULL;
|
||||
sdev->ofdev.dev.archdata.iommu =
|
||||
sbus->ofdev.dev.archdata.iommu;
|
||||
sdev->ofdev.dev.archdata.stc =
|
||||
sbus->ofdev.dev.archdata.stc;
|
||||
|
||||
fill_sbus_device(dev_dp, sdev);
|
||||
|
||||
walk_children(dev_dp, sdev, sbus);
|
||||
|
|
|
|||
Loading…
Reference in a new issue