mirror of https://gitee.com/openkylin/linux.git
Xen: ARM: Add support for mapping AMBA device mmio
Add a bus_notifier for AMBA bus device in order to map the device mmio regions when DOM0 booting with ACPI. Signed-off-by: Shannon Zhao <shannon.zhao@linaro.org> Reviewed-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Reviewed-by: Julien Grall <julien.grall@arm.com> Tested-by: Julien Grall <julien.grall@arm.com>
This commit is contained in:
parent
4ba04bec37
commit
5789afeb0e
|
@ -151,3 +151,46 @@ static int __init register_xen_platform_notifier(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
arch_initcall(register_xen_platform_notifier);
|
arch_initcall(register_xen_platform_notifier);
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARM_AMBA
|
||||||
|
#include <linux/amba/bus.h>
|
||||||
|
|
||||||
|
static int xen_amba_notifier(struct notifier_block *nb,
|
||||||
|
unsigned long action, void *data)
|
||||||
|
{
|
||||||
|
struct amba_device *adev = to_amba_device(data);
|
||||||
|
int r = 0;
|
||||||
|
|
||||||
|
switch (action) {
|
||||||
|
case BUS_NOTIFY_ADD_DEVICE:
|
||||||
|
r = xen_map_device_mmio(&adev->res, 1);
|
||||||
|
break;
|
||||||
|
case BUS_NOTIFY_DEL_DEVICE:
|
||||||
|
r = xen_unmap_device_mmio(&adev->res, 1);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return NOTIFY_DONE;
|
||||||
|
}
|
||||||
|
if (r)
|
||||||
|
dev_err(&adev->dev, "AMBA: Failed to %s device %s MMIO!\n",
|
||||||
|
action == BUS_NOTIFY_ADD_DEVICE ? "map" :
|
||||||
|
(action == BUS_NOTIFY_DEL_DEVICE ? "unmap" : "?"),
|
||||||
|
adev->dev.init_name);
|
||||||
|
|
||||||
|
return NOTIFY_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct notifier_block amba_device_nb = {
|
||||||
|
.notifier_call = xen_amba_notifier,
|
||||||
|
};
|
||||||
|
|
||||||
|
static int __init register_xen_amba_notifier(void)
|
||||||
|
{
|
||||||
|
if (!xen_initial_domain() || acpi_disabled)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return bus_register_notifier(&amba_bustype, &amba_device_nb);
|
||||||
|
}
|
||||||
|
|
||||||
|
arch_initcall(register_xen_amba_notifier);
|
||||||
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue