iommu: Make of_iommu_set/get_ops() DT agnostic
authorLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Mon, 21 Nov 2016 10:01:36 +0000 (10:01 +0000)
committerWill Deacon <will.deacon@arm.com>
Tue, 29 Nov 2016 15:57:43 +0000 (15:57 +0000)
commite4f10ffe4c9b500e545b874b816ffea5e8659b05
tree3ba8fab30e32f1664270b4f6d2484ba6e28685c7
parent7936df92b9dbf568ab04717c142acaf08449dbfc
iommu: Make of_iommu_set/get_ops() DT agnostic

The of_iommu_{set/get}_ops() API is used to associate a device
tree node with a specific set of IOMMU operations. The same
kernel interface is required on systems booting with ACPI, where
devices are not associated with a device tree node, therefore
the interface requires generalization.

The struct device fwnode member represents the fwnode token associated
with the device and the struct it points at is firmware specific;
regardless, it is initialized on both ACPI and DT systems and makes an
ideal candidate to use it to associate a set of IOMMU operations to a
given device, through its struct device.fwnode member pointer, paving
the way for representing per-device iommu_ops (ie an iommu instance
associated with a device).

Convert the DT specific of_iommu_{set/get}_ops() interface to
use struct device.fwnode as a look-up token, making the interface
usable on ACPI systems and rename the data structures and the
registration API so that they are made to represent their usage
more clearly.

Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Acked-by: Will Deacon <will.deacon@arm.com>
Reviewed-by: Robin Murphy <robin.murphy@arm.com>
Reviewed-by: Tomasz Nowicki <tn@semihalf.com>
Tested-by: Hanjun Guo <hanjun.guo@linaro.org>
Tested-by: Tomasz Nowicki <tn@semihalf.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Hanjun Guo <hanjun.guo@linaro.org>
Cc: Robin Murphy <robin.murphy@arm.com>
Cc: Joerg Roedel <joro@8bytes.org>
Signed-off-by: Will Deacon <will.deacon@arm.com>
drivers/iommu/iommu.c
drivers/iommu/of_iommu.c
include/linux/iommu.h
include/linux/of_iommu.h