123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- /*
- * Copyright (C) 2010 Google, Inc.
- * 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.
- *
- */
- #ifndef __MODEM_VARIATION_H__
- #define __MODEM_VARIATION_H__
- #include <linux/platform_data/modem.h>
- #define DECLARE_MODEM_INIT(type) \
- int type ## _init_modemctl_device(struct modem_ctl *mc, \
- struct modem_data *pdata)
- #define DECLARE_MODEM_INIT_DUMMY(type) \
- static DECLARE_MODEM_INIT(type) { return 0; }
- #define DECLARE_LINK_INIT(type) \
- struct link_device *type ## _create_link_device( \
- struct platform_device *pdev)
- #define DECLARE_LINK_INIT_DUMMY(type) \
- static DECLARE_LINK_INIT(type) { return NULL; }
- #define MODEM_INIT_CALL(type) type ## _init_modemctl_device
- #define LINK_INIT_CALL(type) type ## _create_link_device
- /* add declaration of modem & link type */
- /* modem device support */
- DECLARE_MODEM_INIT_DUMMY(dummy)
- #ifdef CONFIG_UMTS_MODEM_XMM6260
- DECLARE_MODEM_INIT(xmm6260);
- #else
- DECLARE_MODEM_INIT_DUMMY(xmm6260)
- #endif
- #ifdef CONFIG_UMTS_MODEM_XMM6262
- DECLARE_MODEM_INIT(xmm6262);
- #else
- DECLARE_MODEM_INIT_DUMMY(xmm6262)
- #endif
- #ifdef CONFIG_CDMA_MODEM_CBP71
- DECLARE_MODEM_INIT(cbp71);
- #else
- DECLARE_MODEM_INIT_DUMMY(cbp71)
- #endif
- #ifdef CONFIG_CDMA_MODEM_CBP72
- DECLARE_MODEM_INIT(cbp72);
- #else
- DECLARE_MODEM_INIT_DUMMY(cbp72)
- #endif
- #ifdef CONFIG_LTE_MODEM_CMC221
- DECLARE_MODEM_INIT(cmc221);
- #else
- DECLARE_MODEM_INIT_DUMMY(cmc221)
- #endif
- #ifdef CONFIG_CDMA_MODEM_MDM6600
- DECLARE_MODEM_INIT(mdm6600);
- #else
- DECLARE_MODEM_INIT_DUMMY(mdm6600)
- #endif
- #ifdef CONFIG_GSM_MODEM_ESC6270
- DECLARE_MODEM_INIT(esc6270);
- #else
- DECLARE_MODEM_INIT_DUMMY(esc6270)
- #endif
- #ifdef CONFIG_GSM_MODEM_SPRD6500
- DECLARE_MODEM_INIT(sprd6500);
- #else
- DECLARE_MODEM_INIT_DUMMY(sprd6500)
- #endif
- #ifdef CONFIG_CDMA_MODEM_MSM8x55
- DECLARE_MODEM_INIT(msm8x55);
- #else
- DECLARE_MODEM_INIT_DUMMY(msm8x55)
- #endif
- #ifdef CONFIG_UMTS_MODEM_MSM7x27
- DECLARE_MODEM_INIT(msm7x27);
- #else
- DECLARE_MODEM_INIT_DUMMY(msm7x27)
- #endif
- /* link device support */
- DECLARE_LINK_INIT_DUMMY(undefined)
- #ifdef CONFIG_LINK_DEVICE_MIPI
- DECLARE_LINK_INIT(mipi);
- #else
- DECLARE_LINK_INIT_DUMMY(mipi)
- #endif
- #ifdef CONFIG_LINK_DEVICE_DPRAM
- DECLARE_LINK_INIT(dpram);
- #else
- DECLARE_LINK_INIT_DUMMY(dpram)
- #endif
- #ifdef CONFIG_LINK_DEVICE_PLD
- DECLARE_LINK_INIT(pld);
- #else
- DECLARE_LINK_INIT_DUMMY(pld)
- #endif
- #ifdef CONFIG_LINK_DEVICE_SPI
- DECLARE_LINK_INIT(spi);
- #else
- DECLARE_LINK_INIT_DUMMY(spi)
- #endif
- #ifdef CONFIG_LINK_DEVICE_USB
- DECLARE_LINK_INIT(usb);
- #else
- DECLARE_LINK_INIT_DUMMY(usb)
- #endif
- #ifdef CONFIG_LINK_DEVICE_HSIC
- DECLARE_LINK_INIT(hsic);
- #else
- DECLARE_LINK_INIT_DUMMY(hsic)
- #endif
- #ifdef CONFIG_LINK_DEVICE_C2C
- DECLARE_LINK_INIT(c2c);
- #else
- DECLARE_LINK_INIT_DUMMY(c2c)
- #endif
- typedef int (*modem_init_call)(struct modem_ctl *, struct modem_data *);
- static modem_init_call modem_init_func[] = {
- MODEM_INIT_CALL(xmm6260),
- MODEM_INIT_CALL(xmm6262),
- MODEM_INIT_CALL(cbp71),
- MODEM_INIT_CALL(cbp72),
- MODEM_INIT_CALL(cmc221),
- MODEM_INIT_CALL(mdm6600),
- MODEM_INIT_CALL(esc6270),
- MODEM_INIT_CALL(msm8x55),
- MODEM_INIT_CALL(msm7x27),
- MODEM_INIT_CALL(sprd6500),
- MODEM_INIT_CALL(dummy),
- };
- typedef struct link_device *(*link_init_call)(struct platform_device *);
- static link_init_call link_init_func[] = {
- LINK_INIT_CALL(undefined),
- LINK_INIT_CALL(mipi),
- LINK_INIT_CALL(dpram),
- LINK_INIT_CALL(spi),
- LINK_INIT_CALL(usb),
- LINK_INIT_CALL(hsic),
- LINK_INIT_CALL(c2c),
- LINK_INIT_CALL(pld),
- };
- static 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;
- }
- static 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;
- }
- #endif
|