XMMBoot » History » Version 55
Denis 'GNUtoo' Carikli, 03/25/2020 04:18 AM
start moving gpio usage
1 | 1 | Denis 'GNUtoo' Carikli | h1. XMMBoot |
---|---|---|---|
2 | |||
3 | h2. Introduction |
||
4 | |||
5 | For both libsamsung-ipc and the Linux driver it's interesting to understand better the boot of the modem in order to come with good names for the abstraction. |
||
6 | |||
7 | 16 | Denis 'GNUtoo' Carikli | h2. GPIOs |
8 | |||
9 | 55 | Denis 'GNUtoo' Carikli | h3. Devices GPIOs assignement and drivers |
10 | 47 | Denis 'GNUtoo' Carikli | |
11 | 49 | Denis 'GNUtoo' Carikli | |_. Variant |_. SOC |_. Modem |_. GPIO usage |_. GPIO assignement | |
12 | 48 | Denis 'GNUtoo' Carikli | | GT-I9300 | Exynos 4412 | XMM6262 | "CONFIG_UMTS_MODEM_XMM6262=y":https://git.replicant.us/replicant/kernel_samsung_smdk4412/tree/arch/arm/configs/lineageos_i9300_defconfig#n1350 |
13 | 1 | Denis 'GNUtoo' Carikli | "Makefile":https://git.replicant.us/replicant/kernel_samsung_smdk4412/tree/drivers/misc/modem_if/Makefile#n10 |
14 | 49 | Denis 'GNUtoo' Carikli | "modem_modemctl_device_xmm6262.c":https://git.replicant.us/replicant/kernel_samsung_smdk4412/tree/drivers/misc/modem_if/modem_modemctl_device_xmm6262.c | "CONFIG_SEC_MODEM_M0=y":https://git.replicant.us/replicant/kernel_samsung_smdk4412/tree/arch/arm/configs/lineageos_i9300_defconfig#n541 |
15 | "Makefile":https://git.replicant.us/replicant/kernel_samsung_smdk4412/tree/arch/arm/mach-exynos/Makefile#n320 |
||
16 | 50 | Denis 'GNUtoo' Carikli | "board-m0-modems.c":https://git.replicant.us/replicant/kernel_samsung_smdk4412/tree/arch/arm/mach-exynos/board-m0-modems.c |
17 | "CONFIG_MACH_M0=y":https://git.replicant.us/replicant/kernel_samsung_smdk4412/tree/arch/arm/configs/lineageos_i9300_defconfig#n455 |
||
18 | 1 | Denis 'GNUtoo' Carikli | "gpio-midas.h":https://git.replicant.us/replicant/kernel_samsung_smdk4412/tree/arch/arm/mach-exynos/include/mach/gpio-midas.h#n28 |
19 | "gpio-rev00-m0.h":https://git.replicant.us/replicant/kernel_samsung_smdk4412/tree/arch/arm/mach-exynos/include/mach/gpio-rev00-m0.h | |
||
20 | 55 | Denis 'GNUtoo' Carikli | |
21 | h3. GPIOs usage |
||
22 | |||
23 | |_. gpio platform data name |_. present |_. absent |_. Implementation |_. comments | |
||
24 | | gpio_cp_on | | | | powers on the modem? in which state (PMIC?, CPU?) |
||
25 | * On GT-I9100 it's connected to the ON1 modem pin and ON2 is not connected. | |
||
26 | | gpio_cp_reset | | | | Resets the modem CPU? PMIC?: |
||
27 | * "''check the reset timming with C2C connection''":https://git.replicant.us/replicant/kernel_samsung_smdk4412/tree/drivers/misc/modem_if/modem_modemctl_device_xmm6262.c#n106 : Here C2C probably means chip to chip |
||
28 | Can also read the modem CPU? and/or PMIC? reset state? |
||
29 | * "Reads from the GPIO and ''CP not ready, Active State low'' comment":https://git.replicant.us/replicant/kernel_samsung_smdk4412/tree/arch/arm/mach-exynos/board-m0-modems.c#n287 | |
||
30 | | gpio_reset_req_n | | | | |
||
31 | | gpio_pda_active | | | | Tell the modem if the SOC CPUs are sleeping/active or not? |
||
32 | * "PDA == Application processor":https://android.stackexchange.com/questions/176515/what-do-the-terms-bl-ap-cp-and-csc-mean-in-odin |
||
33 | * "''PDA_ACTIVE, let cp know AP sleep'' comment in status gc1-gpio.c":https://git.replicant.us/replicant/kernel_samsung_smdk4412/tree/arch/arm/mach-exynos/gc1-gpio.c#n213 |
||
34 | * "PDA_ACTIVE set to 0 right after cpu_pm_enter()":https://git.replicant.us/replicant/kernel_samsung_smdk4412/tree/arch/arm/mach-exynos/cpuidle-exynos4.c#n701 |
||
35 | * "PDA_ACTIVE set to 1 right before cpu_pm_exit()":https://git.replicant.us/replicant/kernel_samsung_smdk4412/tree/arch/arm/mach-exynos/cpuidle-exynos4.c#n796 |
||
36 | * GPIO direction is output on AP side and input on BP side, which is also confirmed by the "pinout table in XDA":https://forum.xda-developers.com/galaxy-s2/help/how-to-talk-to-modem-commands-t1471241/page4 | |
||
37 | | gpio_phone_active | | | | | |
||
38 | | gpio_cp_dump_int | | | | cp: baseband processor | |
||
39 | | gpio_flm_uart_sel |\2. Only used for the Galaxy Nexus in libsamsung-ipc | | Modem download mode ? | |
||
40 | | gpio_cp_warm_reset | | | | cp: baseband processor | |
||
41 | | gpio_revers_bias_clear | | | | | |
||
42 | | gpio_revers_bias_restore | | | | | |
||
43 | | gpio_sim_detect | | | | Detect SIM card presence ? | |
||
44 | 47 | Denis 'GNUtoo' Carikli | |
45 | 53 | Denis 'GNUtoo' Carikli | h3. Libsamsung-ipc |
46 | 52 | Denis 'GNUtoo' Carikli | |
47 | 1 | Denis 'GNUtoo' Carikli | |/2. ioctl / function |\6. Devices | |
48 | 54 | Denis 'GNUtoo' Carikli | | GT-I9250 (maguro) | GT-I9100 | GT-I9300 | GT-N5100 | GT-N7100 | GT-P3100 / GT-P5100 (piranah) | |
49 | 52 | Denis 'GNUtoo' Carikli | | open, close, read, write |
50 | 1 | Denis 'GNUtoo' Carikli | fmt/rfs |
51 | gprs |
||
52 | 54 | Denis 'GNUtoo' Carikli | power |\6. Yes | |
53 | 52 | Denis 'GNUtoo' Carikli | | boot_power |
54 | 54 | Denis 'GNUtoo' Carikli | status_online_wait | Yes |\5. No | |
55 | 1 | Denis 'GNUtoo' Carikli | | hci_power |
56 | 52 | Denis 'GNUtoo' Carikli | link_control_enable |
57 | link_control_active |
||
58 | link_control_wait |
||
59 | 54 | Denis 'GNUtoo' Carikli | link_get_hostwake_wait | No |\4. Yes | No | |
60 | 52 | Denis 'GNUtoo' Carikli | |
61 | |||
62 | 47 | Denis 'GNUtoo' Carikli | The GPIO platform data names were taken from the "modem_modemctl_device_xmm6262.c":https://git.replicant.us/replicant/kernel_samsung_smdk4412/tree/drivers/misc/modem_if/modem_modemctl_device_xmm6262.c file |
63 | 10 | Denis 'GNUtoo' Carikli | |
64 | 36 | Denis 'GNUtoo' Carikli | |_. libsamsung-ipc |_\3. Kernel |_\2. Devices |_\2. Documentation | |
65 | |_. Function using the ioctl |_. ioctl name |_. function pointer name |_. gpio platform data name |_. present |_. absent |_. Implementation |_. comments | |
||
66 | 39 | Denis 'GNUtoo' Carikli | |/4. xmm626_kernel_smdk4412_power |/4. IOCTL_MODEM_ON |
67 | IOCTL_MODEM_OFF |/4. modem_on |
||
68 | 46 | Denis 'GNUtoo' Carikli | modem_off | gpio_cp_on | | | | powers on the modem? in which state (PMIC?, CPU?) |
69 | 1 | Denis 'GNUtoo' Carikli | * On GT-I9100 it's connected to the ON1 modem pin and ON2 is not connected. | |
70 | 46 | Denis 'GNUtoo' Carikli | | gpio_cp_reset | | | | Resets the modem CPU? PMIC?: |
71 | 51 | Denis 'GNUtoo' Carikli | * "''check the reset timming with C2C connection''":https://git.replicant.us/replicant/kernel_samsung_smdk4412/tree/drivers/misc/modem_if/modem_modemctl_device_xmm6262.c#n106 : Here C2C probably means chip to chip |
72 | Can also read the modem CPU? and/or PMIC? reset state? |
||
73 | * "Reads from the GPIO and ''CP not ready, Active State low'' comment":https://git.replicant.us/replicant/kernel_samsung_smdk4412/tree/arch/arm/mach-exynos/board-m0-modems.c#n287 | |
||
74 | 39 | Denis 'GNUtoo' Carikli | | gpio_reset_req_n | | | | |
75 | 42 | Denis 'GNUtoo' Carikli | | gpio_pda_active | | | | Tell the modem if the SOC CPUs are sleeping/active or not? |
76 | * "PDA == Application processor":https://android.stackexchange.com/questions/176515/what-do-the-terms-bl-ap-cp-and-csc-mean-in-odin |
||
77 | * "''PDA_ACTIVE, let cp know AP sleep'' comment in status gc1-gpio.c":https://git.replicant.us/replicant/kernel_samsung_smdk4412/tree/arch/arm/mach-exynos/gc1-gpio.c#n213 |
||
78 | * "PDA_ACTIVE set to 0 right after cpu_pm_enter()":https://git.replicant.us/replicant/kernel_samsung_smdk4412/tree/arch/arm/mach-exynos/cpuidle-exynos4.c#n701 |
||
79 | 43 | Denis 'GNUtoo' Carikli | * "PDA_ACTIVE set to 1 right before cpu_pm_exit()":https://git.replicant.us/replicant/kernel_samsung_smdk4412/tree/arch/arm/mach-exynos/cpuidle-exynos4.c#n796 |
80 | * GPIO direction is output on AP side and input on BP side, which is also confirmed by the "pinout table in XDA":https://forum.xda-developers.com/galaxy-s2/help/how-to-talk-to-modem-commands-t1471241/page4 | |
||
81 | 36 | Denis 'GNUtoo' Carikli | | | | | gpio_phone_active | | | | | |
82 | 38 | Denis 'GNUtoo' Carikli | | | | | gpio_cp_dump_int | | | | cp: baseband processor | |
83 | 36 | Denis 'GNUtoo' Carikli | | xmm626_kernel_smdk4412_boot_power | IOCTL_MODEM_BOOT_ON |
84 | 1 | Denis 'GNUtoo' Carikli | IOCTL_MODEM_BOOT_OFF | modem_boot_on |
85 | 35 | Denis 'GNUtoo' Carikli | modem_boot_off | gpio_flm_uart_sel |\2. Only used for the Galaxy Nexus in libsamsung-ipc | | Modem download mode ? | |
86 | 38 | Denis 'GNUtoo' Carikli | | | | | gpio_cp_warm_reset | | | | cp: baseband processor | |
87 | 36 | Denis 'GNUtoo' Carikli | | | | | gpio_revers_bias_clear | | | | | |
88 | | | | | gpio_revers_bias_restore | | | | | |
||
89 | 1 | Denis 'GNUtoo' Carikli | | | | | gpio_sim_detect | | | | Detect SIM card presence ? | |
90 | 44 | Denis 'GNUtoo' Carikli | |
91 | h3. Glossary |
||
92 | |||
93 | * cp: baseband processor |
||
94 | 1 | Denis 'GNUtoo' Carikli | |
95 | 16 | Denis 'GNUtoo' Carikli | h3. SIM card presence detection |
96 | 7 | Denis 'GNUtoo' Carikli | |
97 | Do we really want to check the SIM card presence? |
||
98 | |||
99 | Would it be possible not to for privacy reasons? |
||
100 | |||
101 | Example: |
||
102 | * Boot a modem with a SIM |
||
103 | * Take away the SIM card |
||
104 | 1 | Denis 'GNUtoo' Carikli | * Go to a protest with only the SIM card and a phone with no data on it to be able to call if necessary. |
105 | 7 | Denis 'GNUtoo' Carikli | |
106 | 16 | Denis 'GNUtoo' Carikli | h3. TODO |
107 | 1 | Denis 'GNUtoo' Carikli | |
108 | * check gpio_flm_uart_sel in smdk4412 kernel too |
||
109 | 16 | Denis 'GNUtoo' Carikli | |
110 | h2. Modem partitions |
||
111 | |||
112 | 30 | Denis 'GNUtoo' Carikli | h3. GT-I9300, GT-N7100 |
113 | 3 | Denis 'GNUtoo' Carikli | |
114 | 19 | Denis 'GNUtoo' Carikli | |_. Location |_. Name |_. Content | |
115 | 25 | Denis 'GNUtoo' Carikli | | [ 0x0 -> 0xfff ] | ? | Partition table? | |
116 | 31 | Denis 'GNUtoo' Carikli | | [ 0x1000 -> 0xefff ] | PSIRAM | First stage bootloader? | |
117 | | [ 0xF000 -> 0x27fff ] | EBL | Second stage bootloader ? | |
||
118 | 29 | Denis 'GNUtoo' Carikli | | [ 0x28000 -> 0x9ff7ff ] | MAIN | ? | |
119 | 28 | Denis 'GNUtoo' Carikli | | [ 0x9ff800 -> 0x9fffff ] | SECPACK | ? | |
120 | 1 | Denis 'GNUtoo' Carikli | | [ 0xa00000 -> 0xbfffff ] | NV | ? | |
121 | |||
122 | 31 | Denis 'GNUtoo' Carikli | References for the table: |
123 | * https://git.replicant.us/replicant/external_libsamsung-ipc/tree/samsung-ipc/devices/i9300/i9300.h?id=9ff9785a7f48e32f107ca7fb2e298b1320ad4cbc |
||
124 | * https://git.replicant.us/replicant/external_libsamsung-ipc/tree/samsung-ipc/devices/n7100/n7100.h?id=9ff9785a7f48e32f107ca7fb2e298b1320ad4cbc |
||
125 | * Verified on GT-I9300 and GT-N7100 modem partition table |
||
126 | 23 | Denis 'GNUtoo' Carikli | |
127 | 32 | Denis 'GNUtoo' Carikli | h4. GT-I9300 and GT-N7100 modem partition table dump |
128 | 23 | Denis 'GNUtoo' Carikli | |
129 | <pre> |
||
130 | 24 | Denis 'GNUtoo' Carikli | $ hexdump -C RADIO.img |
131 | 00000000 50 53 49 52 41 4d 00 00 00 00 00 00 00 10 00 00 |PSIRAM..........| |
||
132 | 00000010 00 00 00 00 00 e0 00 00 00 00 00 00 00 00 00 00 |................| |
||
133 | 00000020 45 42 4c 00 00 00 00 00 00 00 00 00 00 f0 00 00 |EBL.............| |
||
134 | 00000030 00 00 00 60 00 90 01 00 00 00 00 00 00 00 00 00 |...`............| |
||
135 | 00000040 4d 41 49 4e 00 00 00 00 00 00 00 00 00 80 02 00 |MAIN............| |
||
136 | 00000050 00 00 30 60 00 78 9d 00 00 00 00 00 00 00 00 00 |..0`.x..........| |
||
137 | 00000060 53 45 43 50 41 43 4b 00 00 00 00 00 00 f8 9f 00 |SECPACK.........| |
||
138 | 00000070 00 00 00 00 00 08 00 00 00 00 00 00 00 00 00 00 |................| |
||
139 | 00000080 4e 56 00 00 00 00 00 00 00 00 00 00 00 00 a0 00 |NV..............| |
||
140 | 00000090 00 00 e8 60 00 00 20 00 00 00 00 00 00 00 00 00 |...`.. .........| |
||
141 | 000000a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |
||
142 | * |
||
143 | [...] |
||
144 | 1 | Denis 'GNUtoo' Carikli | </pre> |
145 | 32 | Denis 'GNUtoo' Carikli | |
146 | h3. Devices without a partition table or with a different one |
||
147 | |||
148 | * GT-I9250 |
||
149 | 17 | Denis 'GNUtoo' Carikli | |
150 | 1 | Denis 'GNUtoo' Carikli | h2. Links |
151 | |||
152 | 45 | Denis 'GNUtoo' Carikli | * "modem_modemctl_device_xmm6262.c":https://git.replicant.us/replicant/kernel_samsung_smdk4412/tree/drivers/misc/modem_if/modem_modemctl_device_xmm6262.c |
153 | 1 | Denis 'GNUtoo' Carikli | * https://forum.xda-developers.com/galaxy-s2/help/how-to-talk-to-modem-commands-t1471241/page4 |
154 | 45 | Denis 'GNUtoo' Carikli | * http://www.arteris.com/blog/bid/59433/Interchip-Connectivity-HSIC-UniPro-HSI-C2C-LLI-oh-my |