aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/misc/samsung_modemctl/dpram/dpram.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/misc/samsung_modemctl/dpram/dpram.h')
-rw-r--r--drivers/misc/samsung_modemctl/dpram/dpram.h214
1 files changed, 214 insertions, 0 deletions
diff --git a/drivers/misc/samsung_modemctl/dpram/dpram.h b/drivers/misc/samsung_modemctl/dpram/dpram.h
new file mode 100644
index 0000000..1987c8f
--- /dev/null
+++ b/drivers/misc/samsung_modemctl/dpram/dpram.h
@@ -0,0 +1,214 @@
+/****************************************************************************
+
+**
+
+** COPYRIGHT(C) : Samsung Electronics Co.Ltd, 2006-2010 ALL RIGHTS RESERVED
+
+**
+
+** AUTHOR : Kim, Geun-Young <geunyoung.kim@samsung.com> @LDK@
+
+** @LDK@
+
+****************************************************************************/
+
+#ifndef __DPRAM_H__
+#define __DPRAM_H__
+
+/* 32KB Size */
+#define DPRAM_SIZE 0x8000
+
+/* Memory Address */
+#define DPRAM_START_ADDRESS 0x0000
+#define DPRAM_MAGIC_CODE_ADDRESS (DPRAM_START_ADDRESS)
+#define DPRAM_ACCESS_ENABLE_ADDRESS (DPRAM_START_ADDRESS + 0x0002)
+
+#define DPRAM_PDA2PHONE_FORMATTED_START_ADDRESS (DPRAM_START_ADDRESS + 0x0004)
+#define DPRAM_PDA2PHONE_FORMATTED_HEAD_ADDRESS (DPRAM_PDA2PHONE_FORMATTED_START_ADDRESS)
+#define DPRAM_PDA2PHONE_FORMATTED_TAIL_ADDRESS (DPRAM_PDA2PHONE_FORMATTED_START_ADDRESS + 0x0002)
+#define DPRAM_PDA2PHONE_FORMATTED_BUFFER_ADDRESS (DPRAM_PDA2PHONE_FORMATTED_START_ADDRESS + 0x0004)
+//#define DPRAM_PDA2PHONE_FORMATTED_BUFFER_SIZE 8186 // 0x1ffc
+#define DPRAM_PDA2PHONE_FORMATTED_BUFFER_SIZE 4092
+
+#define DPRAM_PDA2PHONE_RAW_START_ADDRESS (DPRAM_PDA2PHONE_FORMATTED_START_ADDRESS + (DPRAM_PDA2PHONE_FORMATTED_BUFFER_SIZE+4))
+#define DPRAM_PDA2PHONE_RAW_HEAD_ADDRESS (DPRAM_PDA2PHONE_RAW_START_ADDRESS)
+#define DPRAM_PDA2PHONE_RAW_TAIL_ADDRESS (DPRAM_PDA2PHONE_RAW_START_ADDRESS + 2)
+#define DPRAM_PDA2PHONE_RAW_BUFFER_ADDRESS (DPRAM_PDA2PHONE_RAW_START_ADDRESS + 4)
+//#define DPRAM_PDA2PHONE_RAW_BUFFER_SIZE 8186 // 0x1ff4
+#define DPRAM_PDA2PHONE_RAW_BUFFER_SIZE 12272
+
+#define DPRAM_PHONE2PDA_FORMATTED_START_ADDRESS (DPRAM_PDA2PHONE_RAW_START_ADDRESS + (DPRAM_PDA2PHONE_RAW_BUFFER_SIZE+4))
+#define DPRAM_PHONE2PDA_FORMATTED_HEAD_ADDRESS (DPRAM_PHONE2PDA_FORMATTED_START_ADDRESS)
+#define DPRAM_PHONE2PDA_FORMATTED_TAIL_ADDRESS (DPRAM_PHONE2PDA_FORMATTED_START_ADDRESS + 0x0002)
+#define DPRAM_PHONE2PDA_FORMATTED_BUFFER_ADDRESS (DPRAM_PHONE2PDA_FORMATTED_START_ADDRESS + 0x0004)
+//#define DPRAM_PHONE2PDA_FORMATTED_BUFFER_SIZE 8186 // 0x1ffc
+#define DPRAM_PHONE2PDA_FORMATTED_BUFFER_SIZE 4092
+
+
+#define DPRAM_PHONE2PDA_RAW_START_ADDRESS (DPRAM_PHONE2PDA_FORMATTED_START_ADDRESS + (DPRAM_PHONE2PDA_FORMATTED_BUFFER_SIZE+4))
+#define DPRAM_PHONE2PDA_RAW_HEAD_ADDRESS (DPRAM_PHONE2PDA_RAW_START_ADDRESS)
+#define DPRAM_PHONE2PDA_RAW_TAIL_ADDRESS (DPRAM_PHONE2PDA_RAW_START_ADDRESS + 0x0002)
+#define DPRAM_PHONE2PDA_RAW_BUFFER_ADDRESS (DPRAM_PHONE2PDA_RAW_START_ADDRESS + 0x0004)
+//#define DPRAM_PHONE2PDA_RAW_BUFFER_SIZE 8186 // 0x1ff4
+#define DPRAM_PHONE2PDA_RAW_BUFFER_SIZE 12272
+
+#if 0
+/* indicator area*/
+#define DPRAM_PDA2PHONE_INTERRUPT_ADDRESS (DPRAM_START_ADDRESS + 0x7FFC)
+#define DPRAM_PHONE2PDA_INTERRUPT_ADDRESS (DPRAM_START_ADDRESS + 0x7FFE)
+#endif
+
+#define DPRAM_INTERRUPT_PORT_SIZE 2
+#define DPRAM_START_ADDRESS_PHYS 0x30000000
+#define DPRAM_SHARED_BANK 0x5000000
+
+#define DPRAM_SHARED_BANK_SIZE 0x1000000
+#define MAX_MODEM_IMG_SIZE 0x1000000 //16 * 1024 * 1024
+#define MAX_DBL_IMG_SIZE 0x5000 //20 * 1024
+
+#define DPRAM_SFR 0xFFF800
+#define DPRAM_SMP DPRAM_SFR //semaphore
+
+
+#define DPRAM_MBX_AB DPRAM_SFR + 0x20 //mailbox a -> b
+#define DPRAM_MBX_BA DPRAM_SFR + 0x40 //mailbox b -> a
+//#define DPRAM_CHECK_AB DPRAM_SFR + 0xA0 //check mailbox a -> b read
+#define DPRAM_CHECK_BA DPRAM_SFR + 0xC0 //check mailbox b -> a read
+
+
+#define DPRAM_PDA2PHONE_INTERRUPT_ADDRESS DPRAM_MBX_BA
+#define DPRAM_PHONE2PDA_INTERRUPT_ADDRESS DPRAM_MBX_AB
+
+#define PARTITION_ID_MODEM_IMG 0x08
+//#define PARTITION_ID_MODEM_IMG 0x05
+#define TRUE 1
+#define FALSE 0
+
+/*
+ * interrupt masks.
+ */
+#define INT_MASK_VALID 0x0080
+#define INT_MASK_COMMAND 0x0040
+#define INT_MASK_REQ_ACK_F 0x0020
+#define INT_MASK_REQ_ACK_R 0x0010
+#define INT_MASK_RES_ACK_F 0x0008
+#define INT_MASK_RES_ACK_R 0x0004
+#define INT_MASK_SEND_F 0x0002
+#define INT_MASK_SEND_R 0x0001
+
+#define INT_MASK_CMD_INIT_START 0x0001
+#define INT_MASK_CMD_INIT_END 0x0002
+#define INT_MASK_CMD_REQ_ACTIVE 0x0003
+#define INT_MASK_CMD_RES_ACTIVE 0x0004
+#define INT_MASK_CMD_REQ_TIME_SYNC 0x0005
+#define INT_MASK_CMD_PHONE_START 0x0008
+#define INT_MASK_CMD_ERR_DISPLAY 0x0009
+#define INT_MASK_CMD_PHONE_DEEP_SLEEP 0x000A
+#define INT_MASK_CMD_NV_REBUILDING 0x000B
+#define INT_MASK_CMD_EMER_DOWN 0x000C
+#define INT_MASK_CMD_SMP_REQ 0x000D
+#define INT_MASK_CMD_SMP_REP 0x000E
+
+#define INT_COMMAND(x) (INT_MASK_VALID | INT_MASK_COMMAND | x)
+#define INT_NON_COMMAND(x) (INT_MASK_VALID | x)
+
+#define FORMATTED_INDEX 0
+#define RAW_INDEX 1
+#define MAX_INDEX 2
+
+/* ioctl command definitions. */
+#define IOC_MZ_MAGIC ('o')
+#define DPRAM_PHONE_POWON _IO(IOC_MZ_MAGIC, 0xd0)
+#define DPRAM_PHONEIMG_LOAD _IO(IOC_MZ_MAGIC, 0xd1)
+#define DPRAM_NVDATA_LOAD _IO(IOC_MZ_MAGIC, 0xd2)
+#define DPRAM_PHONE_BOOTSTART _IO(IOC_MZ_MAGIC, 0xd3)
+
+struct _param_nv {
+ unsigned char *addr;
+ unsigned int size;
+};
+
+struct _param_em {
+ unsigned int offset;
+ unsigned char *addr;
+ unsigned int size;
+ int rw;
+};
+
+
+#if 1
+#define IOC_SEC_MAGIC (0xf0)
+#define DPRAM_PHONE_ON _IO(IOC_SEC_MAGIC, 0xc0)
+#define DPRAM_PHONE_OFF _IO(IOC_SEC_MAGIC, 0xc1)
+#define DPRAM_PHONE_GETSTATUS _IOR(IOC_SEC_MAGIC, 0xc2, unsigned int)
+//#define DPRAM_PHONE_MDUMP _IO(IOC_SEC_MAGIC, 0xc3)
+//#define DPRAM_PHONE_BATTERY _IO(IOC_SEC_MAGIC, 0xc4)
+#define DPRAM_PHONE_RESET _IO(IOC_SEC_MAGIC, 0xc5)
+#define DPRAM_PHONE_RAMDUMP_ON _IO(IOC_SEC_MAGIC, 0xc6)
+#define DPRAM_PHONE_RAMDUMP_OFF _IO(IOC_SEC_MAGIC, 0xc7)
+#define DPRAM_EXTRA_MEM_RW _IOWR(IOC_SEC_MAGIC, 0xc8, unsigned long)
+
+#else
+#define IOC_SEC_MAGIC (0xf0)
+#define DPRAM_PHONE_ON _IO(IOC_SEC_MAGIC, 0xc0)
+#define DPRAM_PHONE_GETSTATUS _IOR(IOC_MZ_MAGIC, 0xc1, unsigned int)
+//#define DPRAM_PHONE_OFF _IO(IOC_MZ_MAGIC, 0xd3)
+//#define DPRAM_PHONE_ON _IO(IOC_MZ_MAGIC, 0xd3)
+//#define DPRAM_PHONE_RESET _IO(IOC_MZ_MAGIC, 0xd5)
+#define DPRAM_MEM_RW _IOWR(IOC_MZ_MAGIC, 0xd6, unsigned long)
+#endif
+
+/*
+ * structure definitions.
+ */
+typedef struct dpram_serial {
+ /* pointer to the tty for this device */
+ struct tty_struct *tty;
+
+ /* number of times this port has been opened */
+ int open_count;
+
+ /* locks this structure */
+ struct semaphore sem;
+} dpram_serial_t;
+
+typedef struct dpram_device {
+ /* DPRAM memory addresses */
+ unsigned long in_head_addr;
+ unsigned long in_tail_addr;
+ unsigned long in_buff_addr;
+ unsigned long in_buff_size;
+
+ unsigned long out_head_addr;
+ unsigned long out_tail_addr;
+ unsigned long out_buff_addr;
+ unsigned long out_buff_size;
+
+ unsigned int in_head_saved;
+ unsigned int in_tail_saved;
+ unsigned int out_head_saved;
+ unsigned int out_tail_saved;
+
+ u_int16_t mask_req_ack;
+ u_int16_t mask_res_ack;
+ u_int16_t mask_send;
+
+ dpram_serial_t serial;
+} dpram_device_t;
+
+typedef struct dpram_tasklet_data {
+ dpram_device_t *device;
+ u_int16_t non_cmd;
+} dpram_tasklet_data_t;
+
+struct _mem_param {
+ unsigned short addr;
+ unsigned long data;
+ int dir;
+};
+
+
+/* TODO: add more definitions */
+
+#endif /* __DPRAM_H__ */
+