From: Oleksandr Andrushchenko oleksandr_andrushchenko@epam.com
Introduce skeleton of the para-virtualized Xen sound frontend driver. This patch only adds required essential stubs.
Signed-off-by: Oleksandr Andrushchenko oleksandr_andrushchenko@epam.com --- sound/drivers/xen-front.c | 78 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 sound/drivers/xen-front.c
diff --git a/sound/drivers/xen-front.c b/sound/drivers/xen-front.c new file mode 100644 index 000000000000..61779c36cae3 --- /dev/null +++ b/sound/drivers/xen-front.c @@ -0,0 +1,78 @@ +/* + * Xen para-virtual sound device + * + * 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 + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * Based on: sound/drivers/dummy.c + * + * Copyright (C) 2016-2017 EPAM Systems Inc. + * + * Author: Oleksandr Andrushchenko oleksandr_andrushchenko@epam.com + */ + +#include <linux/module.h> + +#include <xen/platform_pci.h> +#include <xen/xen.h> +#include <xen/xenbus.h> + +#include <xen/interface/io/sndif.h> + +static void xdrv_be_on_changed(struct xenbus_device *xb_dev, + enum xenbus_state backend_state) +{ +} + +static int xdrv_probe(struct xenbus_device *xb_dev, + const struct xenbus_device_id *id) +{ + return 0; +} + +static int xdrv_remove(struct xenbus_device *dev) +{ + return 0; +} + +static const struct xenbus_device_id xdrv_ids[] = { + { XENSND_DRIVER_NAME }, + { "" } +}; + +static struct xenbus_driver xen_driver = { + .ids = xdrv_ids, + .probe = xdrv_probe, + .remove = xdrv_remove, + .otherend_changed = xdrv_be_on_changed, +}; + +static int __init xdrv_init(void) +{ + if (!xen_domain()) + return -ENODEV; + + pr_info("Initialising Xen " XENSND_DRIVER_NAME " frontend driver\n"); + return xenbus_register_frontend(&xen_driver); +} + +static void __exit xdrv_cleanup(void) +{ + pr_info("Unregistering Xen " XENSND_DRIVER_NAME " frontend driver\n"); + xenbus_unregister_driver(&xen_driver); +} + +module_init(xdrv_init); +module_exit(xdrv_cleanup); + +MODULE_DESCRIPTION("Xen virtual sound device frontend"); +MODULE_LICENSE("GPL"); +MODULE_ALIAS("xen:"XENSND_DRIVER_NAME); +MODULE_SUPPORTED_DEVICE("{{ALSA,Virtual soundcard}}");