// SPDX-License-Identifier: GPL-2.0
/*
 * Copyright (C) 2010 Samsung Electronics.
 *
 */

#include "modem_variation.h"

/* add declaration of modem & link type */
/* modem device support */
DECLARE_MODEM_INIT_DUMMY(dummy)

#if !IS_ENABLED(CONFIG_SEC_MODEM_S5000AP)
DECLARE_MODEM_INIT_DUMMY(s5000ap)
#endif

#if !IS_ENABLED(CONFIG_SEC_MODEM_S5100)
DECLARE_MODEM_INIT_DUMMY(s5100)
#endif

/* link device support */
DECLARE_LINK_INIT_DUMMY()

static modem_init_call modem_init_func[MAX_MODEM_TYPE] = {
	[SEC_S5000AP] = MODEM_INIT_CALL(s5000ap),
	[SEC_S5100] = MODEM_INIT_CALL(s5100),
	[MODEM_TYPE_DUMMY] = MODEM_INIT_CALL(dummy),
};

static link_init_call link_init_func[LINKDEV_MAX] = {
	[LINKDEV_UNDEFINED] = LINK_INIT_CALL_DUMMY(),
	[LINKDEV_SHMEM] = LINK_INIT_CALL(),
	[LINKDEV_PCIE] = LINK_INIT_CALL(),
};

int call_modem_init_func(struct modem_ctl *mc, struct modem_data *pdata)
{
	if (modem_init_func[pdata->modem_type])
		return modem_init_func[pdata->modem_type](mc, pdata);
	else
		return -ENOTSUPP;
}

struct link_device *call_link_init_func(struct platform_device *pdev,
					u32 link_type)
{
	if (link_init_func[link_type])
		return link_init_func[link_type](pdev, link_type);
	else
		return NULL;
}