blob: 6d62e9f09572bf22a14d6ec4542d12ef71e82d46 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
#ifndef __MODEM_CTL_RECOVERY_H__
#define __MODEM_CTL_RECOVERY_H__
/* The below macros define the offsets from the base shared memory */
#define DPRAM_BOOT_MAGIC_ADDR 0x00
#define DPRAM_BOOT_TYPE_ADDR 0x04
#define DPRAM_MODEM_STATUS_ADDR 0x08
#define DPRAM_AP_STATUS_ADDR 0x0C
#define DPRAM_FIRMWARE_SIZE_ADDR 0x10
#define DPRAM_MODEM_STRING_MSG_ADDR 0x100
#define DPRAM_FIRMWARE_ADDR 0x1000
/* Max. length of the message from modem */
#define DPRAM_MODEM_MSG_SIZE 0x100
#define DPRAM_BOOT_MAGIC_RECOVERY_FOTA 0x56434552
#define DPRAM_BOOT_TYPE_DPRAM_DELTA 0x41544c44
#define DPRAM_BOOT_SEM_REQ 0x5555ffff
/* ioctl commands of updating modem binary */
#define IOCTL_MODEM_FW_UPDATE _IO('D', 0x1)
#define IOCTL_MODEM_CHK_STAT _IO('D', 0x2)
#define IOCTL_MODEM_PWROFF _IO('D', 0x3)
/*
* All status values are kept through out the process.
* So the final status value for a successful job will be 0xB60x1164
* This means that magic code is B6xxxxxx
* Job was started xxxxx1xx
* Job is done 100% xxxxxx64 (0x64 is 100 in hex)
* Job is completed xxxx1xxx
* This way we can just check the final value and know the status of the job.
*/
#define STATUS_JOB_MAGIC_CODE 0xB6000000
#define STATUS_JOB_MAGIC_M 0xFF000000
#define STATUS_JOB_STARTED_M 0x00000100
#define STATUS_JOB_PROGRESS_M 0x000000FF
#define STATUS_JOB_COMPLETE_M 0x00001000
#define STATUS_JOB_DEBUG_M 0x000F0000
#define STATUS_JOB_ERROR_M 0x00F00000
#define STATUS_JOB_ENDED_M (0x00F00000|0x00001000)
#define DPRAM_MEMORY_SIZE 0xFFF800
/* read modem delta file to the buffer of this type */
struct dpram_firmware {
char *firmware;
int size;
int is_delta;
};
/* the progress status of modem updage */
struct stat_info {
int pct;
char msg[DPRAM_MODEM_MSG_SIZE];
};
/* Define Full modem update interface between AP and modem */
#define ONEDRAM_DL_SIGNATURE 0x4F4E
#define ONEDRAM_DL_SMD_SIGNATURE 0x605F
#define ONEDRAM_DL_COMPLETE 0x56781234
#define ONEDRAM_DL_CHECKSUM_ERR 0x4444
#define ONEDRAM_DL_ERASE_WRITE_ERR 0x77779999
#define ONEDRAM_DL_BOOT_UPDATE_ERR 0xBBBBEEEE
#define ONEDRAM_DL_REWRITE_FAIL_ERR 0xDDDDFFFF
#define ONEDRAM_DL_DONE_AND_RESET 0xDDDDAAAA
#define ONEDRAM_DL_LENGTH_CH_FAIL 0x55FF
#define ONEDRAM_DL_HEADER_OFFSET 0x0
#define ONEDRAM_DL_DATA_OFFSET 0x400
/* typedefs */
struct onedram_head_t {
u16 signature;
u8 is_boot_update;
u8 is_nv_update;
u32 length;
u32 checksum;
} __packed;
#endif /* __MODEM_CTL_RECOVERY_H__ */
|