From: Thierry Reding <treding@xxxxxxxxxx> Hi, this series proposes the introduction of a mini-framework for memory controllers. The primary use-case for this right now is to allow for drivers that depend on the memory controller to defer probe until the memory controller has been successfully registered. One example where this is needed is on Tegra186 and later SoCs where the memory controller needs to program some registers to associate a stream ID with memory clients. This requires that the IOMMU driver defers probe until the memory controller has been registered. This is achieved by providing a trivial memory controller registry that can be queried. I haven't written up a full device tree binding for this, but if people think this is a reasonable proposal, I can flesh things out. Currently I use something along these lines on Tegra186: mc: memory-controller@2c00000 { ... #memory-controller-cells = <0>; ... }; iommu@12000000 { ... memory-controllers = <&mc>; ... }; Thierry Thierry Reding (3): memory: Introduce memory controller mini-framework memory: tegra186: Register as memory controller iommu: arm-smmu: Get reference to memory controller drivers/iommu/arm-smmu.c | 12 ++++ drivers/iommu/arm-smmu.h | 2 + drivers/memory/Makefile | 1 + drivers/memory/core.c | 99 +++++++++++++++++++++++++++++++ drivers/memory/tegra/tegra186.c | 8 ++- include/linux/memory-controller.h | 25 ++++++++ 6 files changed, 146 insertions(+), 1 deletion(-) create mode 100644 drivers/memory/core.c create mode 100644 include/linux/memory-controller.h -- 2.23.0