From f49115f84f96691253d85b56bf111836ebe99ef4 Mon Sep 17 00:00:00 2001 From: "David S. Miller" Date: Mon, 25 Aug 2008 22:52:37 -0700 Subject: [PATCH] --- yaml --- r: 112997 b: refs/heads/master c: 5778002874de0fb7e3d8c4a0a4afb6b1a6297069 h: refs/heads/master i: 112995: a7a2f53a4f5b27508705044a03ae792b396710bf v: v3 --- [refs] | 2 +- trunk/drivers/sbus/sbus.c | 24 ++++++++++++++++++++---- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 0f2a5e1676b1..a3d7e4495620 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e003934876e75f96f1445565d8c9084c07943253 +refs/heads/master: 5778002874de0fb7e3d8c4a0a4afb6b1a6297069 diff --git a/trunk/drivers/sbus/sbus.c b/trunk/drivers/sbus/sbus.c index 69491625d869..db0766e5c7d1 100644 --- a/trunk/drivers/sbus/sbus.c +++ b/trunk/drivers/sbus/sbus.c @@ -30,6 +30,24 @@ static DEVICE_ATTR(obppath, S_IRUSR | S_IRGRP | S_IROTH, show_sbusobppath_attr, struct sbus_bus *sbus_root; +static void __init fill_sbus_device_iommu(struct sbus_dev *sdev) +{ + struct of_device *op = of_find_device_by_node(sdev->ofdev.node); + struct dev_archdata *sd, *bus_sd; + struct sbus_bus *sbus; + + sbus = sdev->bus; + bus_sd = &sbus->ofdev.dev.archdata; + + sd = &sdev->ofdev.dev.archdata; + sd->iommu = bus_sd->iommu; + sd->stc = bus_sd->stc; + + sd = &op->dev.archdata; + sd->iommu = bus_sd->iommu; + sd->stc = bus_sd->stc; +} + static void __init fill_sbus_device(struct device_node *dp, struct sbus_dev *sdev) { struct dev_archdata *sd; @@ -85,6 +103,8 @@ static void __init fill_sbus_device(struct device_node *dp, struct sbus_dev *sde /* WE HAVE BEEN INVADED BY ALIENS! */ err = sysfs_create_file(&sdev->ofdev.dev.kobj, &dev_attr_obppath.attr); + + fill_sbus_device_iommu(sdev); } static void __init sbus_bus_ranges_init(struct device_node *dp, struct sbus_bus *sbus) @@ -209,10 +229,6 @@ 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);