Commit ae05f87e authored by David S. Miller's avatar David S. Miller

sparc64: Propagate PCI device archdata into OF device tree for EBUS.

In order to convert EBUS drivers doing DMA into pure OF drivers,
we need the of_device->dev.archdata setup properly.

EBUS instances that can provide DMA for device nodes sit on PCI,
so detect and propagate the information there.
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent e21e245b
...@@ -337,6 +337,7 @@ struct pci_dev *of_create_pci_dev(struct pci_pbm_info *pbm, ...@@ -337,6 +337,7 @@ struct pci_dev *of_create_pci_dev(struct pci_pbm_info *pbm,
struct pci_bus *bus, int devfn) struct pci_bus *bus, int devfn)
{ {
struct dev_archdata *sd; struct dev_archdata *sd;
struct of_device *op;
struct pci_dev *dev; struct pci_dev *dev;
const char *type; const char *type;
u32 class; u32 class;
...@@ -350,14 +351,17 @@ struct pci_dev *of_create_pci_dev(struct pci_pbm_info *pbm, ...@@ -350,14 +351,17 @@ struct pci_dev *of_create_pci_dev(struct pci_pbm_info *pbm,
sd->stc = &pbm->stc; sd->stc = &pbm->stc;
sd->host_controller = pbm; sd->host_controller = pbm;
sd->prom_node = node; sd->prom_node = node;
sd->op = of_find_device_by_node(node); sd->op = op = of_find_device_by_node(node);
sd->numa_node = pbm->numa_node; sd->numa_node = pbm->numa_node;
sd = &sd->op->dev.archdata; sd = &op->dev.archdata;
sd->iommu = pbm->iommu; sd->iommu = pbm->iommu;
sd->stc = &pbm->stc; sd->stc = &pbm->stc;
sd->numa_node = pbm->numa_node; sd->numa_node = pbm->numa_node;
if (!strcmp(node->name, "ebus"))
of_propagate_archdata(op);
type = of_get_property(node, "device_type", NULL); type = of_get_property(node, "device_type", NULL);
if (type == NULL) if (type == NULL)
type = ""; type = "";
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment