173 lines
4.1 KiB
C
173 lines
4.1 KiB
C
|
/*
|
||
|
* Copyright (C) 2010 Samsung Electronics.
|
||
|
*
|
||
|
* This software is licensed under the terms of the GNU General Public
|
||
|
* License version 2, as published by the Free Software Foundation, and
|
||
|
* may be copied, distributed, and modified under those terms.
|
||
|
*
|
||
|
* 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.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
#include "modem_variation.h"
|
||
|
|
||
|
/* add declaration of modem & link type */
|
||
|
/* modem device support */
|
||
|
DECLARE_MODEM_INIT_DUMMY(dummy)
|
||
|
|
||
|
#ifndef CONFIG_UMTS_MODEM_XMM6260
|
||
|
DECLARE_MODEM_INIT_DUMMY(xmm6260)
|
||
|
#endif
|
||
|
|
||
|
#ifndef CONFIG_UMTS_MODEM_XMM6262
|
||
|
DECLARE_MODEM_INIT_DUMMY(xmm6262)
|
||
|
#endif
|
||
|
|
||
|
#ifndef CONFIG_LTE_MODEM_XMM7260
|
||
|
DECLARE_MODEM_INIT_DUMMY(xmm7260)
|
||
|
#endif
|
||
|
|
||
|
#ifndef CONFIG_CDMA_MODEM_CBP71
|
||
|
DECLARE_MODEM_INIT_DUMMY(cbp71)
|
||
|
#endif
|
||
|
|
||
|
#ifndef CONFIG_CDMA_MODEM_CBP72
|
||
|
DECLARE_MODEM_INIT_DUMMY(cbp72)
|
||
|
#endif
|
||
|
|
||
|
#ifndef CONFIG_CDMA_MODEM_CBP82
|
||
|
DECLARE_MODEM_INIT_DUMMY(cbp82)
|
||
|
#endif
|
||
|
|
||
|
#ifndef CONFIG_LTE_MODEM_CMC220
|
||
|
DECLARE_MODEM_INIT_DUMMY(cmc220)
|
||
|
#endif
|
||
|
|
||
|
#ifndef CONFIG_LTE_MODEM_CMC221
|
||
|
DECLARE_MODEM_INIT_DUMMY(cmc221)
|
||
|
#endif
|
||
|
|
||
|
#ifndef CONFIG_UMTS_MODEM_SS222
|
||
|
DECLARE_MODEM_INIT_DUMMY(ss222)
|
||
|
#endif
|
||
|
|
||
|
#ifndef CONFIG_UMTS_MODEM_SH222AP
|
||
|
DECLARE_MODEM_INIT_DUMMY(sh222ap)
|
||
|
#endif
|
||
|
|
||
|
#ifndef CONFIG_UMTS_MODEM_SS310AP
|
||
|
DECLARE_MODEM_INIT_DUMMY(ss310ap)
|
||
|
#endif
|
||
|
|
||
|
#ifndef CONFIG_UMTS_MODEM_SS300
|
||
|
DECLARE_MODEM_INIT_DUMMY(ss300)
|
||
|
#endif
|
||
|
|
||
|
#ifndef CONFIG_CDMA_MODEM_MDM6600
|
||
|
DECLARE_MODEM_INIT_DUMMY(mdm6600)
|
||
|
#endif
|
||
|
|
||
|
#ifndef CONFIG_GSM_MODEM_ESC6270
|
||
|
DECLARE_MODEM_INIT_DUMMY(esc6270)
|
||
|
#endif
|
||
|
|
||
|
#ifndef CONFIG_CDMA_MODEM_QSC6085
|
||
|
DECLARE_MODEM_INIT_DUMMY(qsc6085)
|
||
|
#endif
|
||
|
|
||
|
#ifndef CONFIG_TDSCDMA_MODEM_SPRD8803
|
||
|
DECLARE_MODEM_INIT_DUMMY(sprd8803)
|
||
|
#endif
|
||
|
|
||
|
/* link device support */
|
||
|
DECLARE_LINK_INIT_DUMMY(undefined)
|
||
|
|
||
|
#ifndef CONFIG_LINK_DEVICE_MIPI
|
||
|
DECLARE_LINK_INIT_DUMMY(mipi)
|
||
|
#endif
|
||
|
|
||
|
#ifndef CONFIG_LINK_DEVICE_USB
|
||
|
DECLARE_LINK_INIT_DUMMY(usb)
|
||
|
#endif
|
||
|
|
||
|
#ifndef CONFIG_LINK_DEVICE_HSIC
|
||
|
DECLARE_LINK_INIT_DUMMY(hsic)
|
||
|
#endif
|
||
|
|
||
|
#ifndef CONFIG_LINK_DEVICE_DPRAM
|
||
|
DECLARE_LINK_INIT_DUMMY(dpram)
|
||
|
#endif
|
||
|
|
||
|
#ifndef CONFIG_LINK_DEVICE_PLD
|
||
|
DECLARE_LINK_INIT_DUMMY(pld)
|
||
|
#endif
|
||
|
|
||
|
#ifndef CONFIG_LINK_DEVICE_C2C
|
||
|
DECLARE_LINK_INIT_DUMMY(c2c)
|
||
|
#endif
|
||
|
|
||
|
#ifndef CONFIG_LINK_DEVICE_LLI
|
||
|
DECLARE_LINK_INIT_DUMMY(lli)
|
||
|
#endif
|
||
|
|
||
|
#ifndef CONFIG_LINK_DEVICE_SHMEM
|
||
|
DECLARE_LINK_INIT_DUMMY(shmem)
|
||
|
#endif
|
||
|
|
||
|
#ifndef CONFIG_LINK_DEVICE_SPI
|
||
|
DECLARE_LINK_INIT_DUMMY(spi)
|
||
|
#endif
|
||
|
|
||
|
static modem_init_call modem_init_func[MAX_MODEM_TYPE] = {
|
||
|
[IMC_XMM6260] = MODEM_INIT_CALL(xmm6260),
|
||
|
[IMC_XMM6262] = MODEM_INIT_CALL(xmm6262),
|
||
|
[VIA_CBP71] = MODEM_INIT_CALL(cbp71),
|
||
|
[VIA_CBP72] = MODEM_INIT_CALL(cbp72),
|
||
|
[VIA_CBP82] = MODEM_INIT_CALL(cbp82),
|
||
|
[SEC_CMC220] = MODEM_INIT_CALL(cmc220),
|
||
|
[SEC_CMC221] = MODEM_INIT_CALL(cmc221),
|
||
|
[SEC_SS222] = MODEM_INIT_CALL(ss222),
|
||
|
[SEC_SS300] = MODEM_INIT_CALL(ss300),
|
||
|
[SEC_SH222AP] = MODEM_INIT_CALL(sh222ap),
|
||
|
[SEC_SS310AP] = MODEM_INIT_CALL(ss310ap),
|
||
|
[QC_MDM6600] = MODEM_INIT_CALL(mdm6600),
|
||
|
[QC_ESC6270] = MODEM_INIT_CALL(esc6270),
|
||
|
[QC_QSC6085] = MODEM_INIT_CALL(qsc6085),
|
||
|
[SPRD_SC8803] = MODEM_INIT_CALL(sprd8803),
|
||
|
[IMC_XMM7260] = MODEM_INIT_CALL(xmm7260),
|
||
|
[DUMMY] = MODEM_INIT_CALL(dummy),
|
||
|
};
|
||
|
|
||
|
static link_init_call link_init_func[LINKDEV_MAX] = {
|
||
|
[LINKDEV_UNDEFINED] = LINK_INIT_CALL(undefined),
|
||
|
[LINKDEV_MIPI] = LINK_INIT_CALL(mipi),
|
||
|
[LINKDEV_USB] = LINK_INIT_CALL(usb),
|
||
|
[LINKDEV_HSIC] = LINK_INIT_CALL(hsic),
|
||
|
[LINKDEV_DPRAM] = LINK_INIT_CALL(dpram),
|
||
|
[LINKDEV_PLD] = LINK_INIT_CALL(pld),
|
||
|
[LINKDEV_C2C] = LINK_INIT_CALL(c2c),
|
||
|
[LINKDEV_LLI] = LINK_INIT_CALL(lli),
|
||
|
[LINKDEV_SHMEM] = LINK_INIT_CALL(shmem),
|
||
|
[LINKDEV_SPI] = LINK_INIT_CALL(spi),
|
||
|
};
|
||
|
|
||
|
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,
|
||
|
enum modem_link link_type)
|
||
|
{
|
||
|
if (link_init_func[link_type])
|
||
|
return link_init_func[link_type](pdev);
|
||
|
else
|
||
|
return NULL;
|
||
|
}
|