On Fri, Nov 2, 2018 at 6:46 AM Peng Hao <peng.hao2@xxxxxxxxxx> wrote: > > By default, when ACPI tables and FDT coexist for ARM64, > current kernel takes precedence over FDT to get device information. > Virt machine in qemu provides both FDT and ACPI table. Increases the > way to get information through FDT. > so OF dependency in Kconfig is a matter of this patch. Since 0day bot complain you might need to add #include <linux/mod_devicetable.h> as well. > Acked-by: Mark Rutland <mark.rutland@xxxxxxx> > Signed-off-by: Peng Hao <peng.hao2@xxxxxxxxxx> > --- > drivers/misc/pvpanic.c | 67 +++++++++++++++++++++++++++++++++++++++++++++++--- > 1 file changed, 64 insertions(+), 3 deletions(-) > > diff --git a/drivers/misc/pvpanic.c b/drivers/misc/pvpanic.c > index 22fb487..5378d5f 100644 > --- a/drivers/misc/pvpanic.c > +++ b/drivers/misc/pvpanic.c > @@ -2,6 +2,7 @@ > * pvpanic.c - pvpanic Device Support > * > * Copyright (C) 2013 Fujitsu. > + * Copyright (C) 2018 ZTE. > * > * This program is free software; you can redistribute it and/or modify > * it under the terms of the GNU General Public License as published by > @@ -20,11 +21,14 @@ > > #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt > > +#include <linux/acpi.h> > +#include <linux/init.h> > #include <linux/kernel.h> > #include <linux/module.h> > -#include <linux/init.h> > +#include <linux/of.h> > +#include <linux/of_address.h> > +#include <linux/platform_device.h> > #include <linux/types.h> > -#include <linux/acpi.h> > > MODULE_AUTHOR("Hu Tao <hutao@xxxxxxxxxxxxxx>"); > MODULE_DESCRIPTION("pvpanic device driver"); > @@ -73,6 +77,32 @@ > .priority = 1, /* let this called before broken drm_fb_helper */ > }; > > +static int pvpanic_mmio_probe(struct platform_device *pdev) > +{ > + struct resource *mem; > + > + mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); > + if (!mem) > + return -EINVAL; > + > + base = devm_ioremap_resource(&pdev->dev, mem); > + if (base == NULL) > + return -EFAULT; > + > + atomic_notifier_chain_register(&panic_notifier_list, > + &pvpanic_panic_nb); > + > + return 0; > +} > + > +static int pvpanic_mmio_remove(struct platform_device *pdev) > +{ > + > + atomic_notifier_chain_unregister(&panic_notifier_list, > + &pvpanic_panic_nb); > + > + return 0; > +} > > static acpi_status > pvpanic_walk_resources(struct acpi_resource *res, void *context) > @@ -124,4 +154,35 @@ static int pvpanic_remove(struct acpi_device *device) > return 0; > } > > -module_acpi_driver(pvpanic_driver); > +static const struct of_device_id pvpanic_mmio_match[] = { > + { .compatible = "qemu,pvpanic-mmio", }, > + {} > +}; > + > +static struct platform_driver pvpanic_mmio_driver = { > + .driver = { > + .name = "pvpanic-mmio", > + .of_match_table = pvpanic_mmio_match, > + }, > + .probe = pvpanic_mmio_probe, > + .remove = pvpanic_mmio_remove, > +}; > + > +static int __init pvpanic_mmio_init(void) > +{ > + if (acpi_disabled) > + return platform_driver_register(&pvpanic_mmio_driver); > + else > + return acpi_bus_register_driver(&pvpanic_driver); > +} > + > +static void __exit pvpanic_mmio_exit(void) > +{ > + if (acpi_disabled) > + platform_driver_unregister(&pvpanic_mmio_driver); > + else > + acpi_bus_unregister_driver(&pvpanic_driver); > +} > + > +module_init(pvpanic_mmio_init); > +module_exit(pvpanic_mmio_exit); > -- > 1.8.3.1 > -- With Best Regards, Andy Shevchenko