summaryrefslogtreecommitdiff
path: root/include/soc/sprd/modem_interface.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/soc/sprd/modem_interface.h')
-rw-r--r--include/soc/sprd/modem_interface.h74
1 files changed, 74 insertions, 0 deletions
diff --git a/include/soc/sprd/modem_interface.h b/include/soc/sprd/modem_interface.h
new file mode 100644
index 00000000..26876fd5
--- /dev/null
+++ b/include/soc/sprd/modem_interface.h
@@ -0,0 +1,74 @@
+/*
+ * linux/arch/arm/mach-sprd/modem_interface.h
+ *
+ * Generic modem interface structure defination.
+ *
+ * Author: Jiayong.Yang(Jiayong.Yang@spreadtrum.com)
+ * Created: Jul 27, 2012
+ * Copyright: Spreadtrum Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+#ifndef _MODEM_INTF_H
+#define _MODEM_INTF_H
+
+enum MODEM_Mode_type {
+ MODEM_MODE_SHUTDOWN,
+ MODEM_MODE_BOOT,
+ MODEM_MODE_BOOTCOMP,
+ MODEM_MODE_NORMAL,
+ MODEM_MODE_DUMP,
+ MODEM_MODE_RESET,
+ MODEM_MODE_UNKNOWN
+};
+
+enum MODEM_device_type {
+ MODEM_DEV_UART,
+ MODEM_DEV_SPI,
+ MODEM_DEV_SDIO,
+ MODEM_DEV_VPIP
+};
+
+enum {
+ MODEM_STATUS_REBOOT,
+ MODEM_STATUS_ALVIE,
+ MODEM_STATUS_ASSERT,
+ MODEM_STATUS_POWERON
+};
+
+enum {
+ MODEMSTS_LEVEL_MUX = 50,
+ MODEMSTS_LEVEL_SDIO = 100,
+ MODEMSTS_LEVEL_SPI = 150,
+};
+
+struct modemsts_chg {
+ struct list_head link;
+ int level;
+ void *data;
+ void (*modemsts_notifier)(struct modemsts_chg *h, unsigned int state);
+};
+
+struct modem_intf_platform_data{
+ enum MODEM_device_type dev_type;
+ void *modem_dev_parameter;
+ int modem_power_gpio;
+ int modem_boot_gpio;
+ int modem_watchdog_gpio;
+ int modem_alive_gpio;
+ int modem_crash_gpio;
+ int modem_reset_gpio;
+};
+extern int modem_intf_open(enum MODEM_Mode_type mode,int index);
+extern int modem_intf_read(char *buffer, int size,int index);
+extern int modem_intf_write(char *buffer, int size,int index);
+extern void modem_intf_set_mode(enum MODEM_Mode_type mode,int index);
+
+extern int modemsts_notifier_register(struct modemsts_chg *handler);
+
+extern int modemsts_notifier_unregister(struct modemsts_chg *handler);
+
+extern void modemsts_change_notification(unsigned int state);
+#endif