aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/misc/modem_if_u1/modem_link_device_pld.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/misc/modem_if_u1/modem_link_device_pld.h')
-rw-r--r--drivers/misc/modem_if_u1/modem_link_device_pld.h231
1 files changed, 0 insertions, 231 deletions
diff --git a/drivers/misc/modem_if_u1/modem_link_device_pld.h b/drivers/misc/modem_if_u1/modem_link_device_pld.h
deleted file mode 100644
index 89c44b2..0000000
--- a/drivers/misc/modem_if_u1/modem_link_device_pld.h
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * 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_LINK_DEVICE_PLD_H__
-#define __MODEM_LINK_DEVICE_PLD_H__
-
-#include "modem_link_device_memory.h"
-
-#define PLD_ADDR_MASK(x) (0x00003FFF & (unsigned long)(x))
-
-/*
- mbx_ap2cp + 0x0
- magic_code +
- access_enable +
- padding +
- mbx_cp2ap + 0x1000
- magic_code +
- access_enable +
- padding +
- fmt_tx_head + fmt_tx_tail + fmt_tx_buff + 0x2000
- raw_tx_head + raw_tx_tail + raw_tx_buff +
- fmt_rx_head + fmt_rx_tail + fmt_rx_buff + 0x3000
- raw_rx_head + raw_rx_tail + raw_rx_buff +
- = 2 +
- 4094 +
- 2 +
- 4094 +
- 2 +
- 2 +
- 2 + 2 + 1020 +
- 2 + 2 + 3064 +
- 2 + 2 + 1020 +
- 2 + 2 + 3064
- */
-
-#define PLD_FMT_TX_BUFF_SZ 1024
-#define PLD_RAW_TX_BUFF_SZ 3072
-#define PLD_FMT_RX_BUFF_SZ 1024
-#define PLD_RAW_RX_BUFF_SZ 3072
-
-#define MAX_MSM_EDPRAM_IPC_DEV 2 /* FMT, RAW */
-
-struct pld_ipc_map {
- u16 mbx_ap2cp;
- u16 magic_ap2cp;
- u16 access_ap2cp;
- u16 fmt_tx_head;
- u16 raw_tx_head;
- u16 fmt_rx_tail;
- u16 raw_rx_tail;
- u16 temp1;
- u8 padding1[4080];
-
- u16 mbx_cp2ap;
- u16 magic_cp2ap;
- u16 access_cp2ap;
- u16 fmt_tx_tail;
- u16 raw_tx_tail;
- u16 fmt_rx_head;
- u16 raw_rx_head;
- u16 temp2;
- u8 padding2[4080];
-
- u8 fmt_tx_buff[PLD_FMT_TX_BUFF_SZ];
- u8 raw_tx_buff[PLD_RAW_TX_BUFF_SZ];
- u8 fmt_rx_buff[PLD_RAW_TX_BUFF_SZ];
- u8 raw_rx_buff[PLD_RAW_RX_BUFF_SZ];
-
- u8 padding3[16384];
-
- u16 address_buffer;
-};
-
-struct pld_ext_op;
-
-struct pld_link_device {
- struct link_device ld;
-
- /* DPRAM address and size */
- enum dpram_type type; /* DPRAM type */
- u8 __iomem *base; /* DPRAM base virtual address */
- u32 size; /* DPRAM size */
-
- /* DPRAM IRQ GPIO# */
- unsigned gpio_dpram_int;
-
- /* DPRAM IRQ from CP */
- int irq;
- unsigned long irq_flags;
- char irq_name[MIF_MAX_NAME_LEN];
-
- /* Link to DPRAM control functions dependent on each platform */
- struct modemlink_dpram_control *dpctl;
-
- /* Physical configuration -> logical configuration */
- union {
- struct dpram_boot_map bt_map;
- struct qc_dpram_boot_map qc_bt_map;
- };
-
- struct dpram_dload_map dl_map;
- struct dpram_uload_map ul_map;
-
- /* IPC device map */
- struct dpram_ipc_map ipc_map;
-
- /* Pointers (aliases) to IPC device map */
- u16 __iomem *magic_ap2cp;
- u16 __iomem *access_ap2cp;
- u16 __iomem *magic_cp2ap;
- u16 __iomem *access_cp2ap;
- u16 __iomem *address_buffer;
-
- struct dpram_ipc_device *dev[MAX_IPC_DEV];
- u16 __iomem *mbx2ap;
- u16 __iomem *mbx2cp;
-
- /* Wakelock for DPRAM device */
- struct wake_lock wlock;
- char wlock_name[MIF_MAX_NAME_LEN];
-
- /* For booting */
- unsigned boot_start_complete;
- struct completion dpram_init_cmd;
- struct completion modem_pif_init_done;
-
- /* For UDL */
- struct tasklet_struct ul_tsk;
- struct tasklet_struct dl_tsk;
- struct completion udl_start_complete;
- struct completion udl_cmd_complete;
- struct dpram_udl_check udl_check;
- struct dpram_udl_param udl_param;
-
- /* For CP crash dump */
- struct timer_list crash_ack_timer;
- struct completion crash_start_complete;
- struct completion crash_recv_done;
- struct timer_list crash_timer;
- int crash_rcvd; /* Count of CP crash dump packets received */
-
- /* For locking TX process */
- spinlock_t tx_rx_lock;
- spinlock_t pld_lock;
-
- /* For efficient RX process */
- struct tasklet_struct rx_tsk;
- struct mif_rxb_queue rxbq[MAX_IPC_DEV];
- struct io_device *iod[MAX_IPC_DEV];
-
- /* For retransmission after buffer full state */
- atomic_t res_required[MAX_IPC_DEV];
-
- /* For wake-up/sleep control */
- atomic_t accessing;
-
- /* Multi-purpose miscellaneous buffer */
- u8 *buff;
-
- /* PLD IPC initialization status */
- int init_status;
-
- /* Alias to device-specific IOCTL function */
- int (*ext_ioctl)(struct pld_link_device *pld, struct io_device *iod,
- unsigned int cmd, unsigned long arg);
-
- /* Common operations for each DPRAM */
- void (*clear_intr)(struct pld_link_device *pld);
- u16 (*recv_intr)(struct pld_link_device *pld);
- void (*send_intr)(struct pld_link_device *pld, u16 mask);
- u16 (*get_magic)(struct pld_link_device *pld);
- void (*set_magic)(struct pld_link_device *pld, u16 value);
- u16 (*get_access)(struct pld_link_device *pld);
- void (*set_access)(struct pld_link_device *pld, u16 value);
- u32 (*get_tx_head)(struct pld_link_device *pld, int id);
- u32 (*get_tx_tail)(struct pld_link_device *pld, int id);
- void (*set_tx_head)(struct pld_link_device *pld, int id, u32 head);
- void (*set_tx_tail)(struct pld_link_device *pld, int id, u32 tail);
- u8 *(*get_tx_buff)(struct pld_link_device *pld, int id);
- u32 (*get_tx_buff_size)(struct pld_link_device *pld, int id);
- u32 (*get_rx_head)(struct pld_link_device *pld, int id);
- u32 (*get_rx_tail)(struct pld_link_device *pld, int id);
- void (*set_rx_head)(struct pld_link_device *pld, int id, u32 head);
- void (*set_rx_tail)(struct pld_link_device *pld, int id, u32 tail);
- u8 *(*get_rx_buff)(struct pld_link_device *pld, int id);
- u32 (*get_rx_buff_size)(struct pld_link_device *pld, int id);
- u16 (*get_mask_req_ack)(struct pld_link_device *pld, int id);
- u16 (*get_mask_res_ack)(struct pld_link_device *pld, int id);
- u16 (*get_mask_send)(struct pld_link_device *pld, int id);
-
- /* Extended operations for various modems */
- struct pld_ext_op *ext_op;
-};
-
-/* converts from struct link_device* to struct xxx_link_device* */
-#define to_pld_link_device(linkdev) \
- container_of(linkdev, struct pld_link_device, ld)
-
-struct pld_ext_op {
- int exist;
-
- void (*init_boot_map)(struct pld_link_device *pld);
- void (*init_dl_map)(struct pld_link_device *pld);
- void (*init_ul_map)(struct pld_link_device *pld);
-
- void (*dload_cmd_handler)(struct pld_link_device *pld, u16 cmd);
-
- void (*cp_start_handler)(struct pld_link_device *pld);
-
- void (*crash_log)(struct pld_link_device *pld);
- int (*dump_start)(struct pld_link_device *pld);
- int (*dump_update)(struct pld_link_device *pld, void *arg);
-
- int (*ioctl)(struct pld_link_device *pld, struct io_device *iod,
- unsigned int cmd, unsigned long arg);
-
- void (*clear_intr)(struct pld_link_device *pld);
-};
-
-struct pld_ext_op *pld_get_ext_op(enum modem_t modem);
-#endif