Linux Audio

Check our new training course

Loading...
/*
 * Copyright (c) 2020 Intel Corporation
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <ztest.h>
#include <zephyr/device.h>
#include "abstract_driver.h"

#define MY_DRIVER_A	"my_driver_A"
#define MY_DRIVER_B	"my_driver_B"

/* define individual driver A */
static int my_driver_A_do_this(const struct device *device, int foo, int bar)
{
	return foo + bar;
}

static void my_driver_A_do_that(const struct device *device,
				unsigned int *baz)
{
	*baz = 1;
}

static struct subsystem_api my_driver_A_api_funcs = {
	.do_this = my_driver_A_do_this,
	.do_that = my_driver_A_do_that
};

int common_driver_init(const struct device *dev)
{
	return 0;
}

/* define individual driver B */
static int my_driver_B_do_this(const struct device *device, int foo, int bar)
{
	return foo - bar;
}

static void my_driver_B_do_that(const struct device *device,
				unsigned int *baz)
{
	*baz = 2;
}

static struct subsystem_api my_driver_B_api_funcs = {
	.do_this = my_driver_B_do_this,
	.do_that = my_driver_B_do_that
};

/**
 * @cond INTERNAL_HIDDEN
 */
DEVICE_DEFINE(my_driver_A, MY_DRIVER_A, &common_driver_init,
		NULL, NULL, NULL,
		POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT,
		&my_driver_A_api_funcs);

DEVICE_DEFINE(my_driver_B, MY_DRIVER_B, &common_driver_init,
		NULL, NULL, NULL,
		POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT,
		&my_driver_B_api_funcs);

/**
 * @endcond
 */