XMMBoot

Introduction

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.

GPIOs

Devices:

Variant SOC Modem GPIO usage GPIO assignement
GT-I9300 Exynos 4412 XMM6262 CONFIG_UMTS_MODEM_XMM6262=y
Makefile
modem_modemctl_device_xmm6262.c
CONFIG_SEC_MODEM_M0=y
Makefile
board-m0-modems.c

The GPIO platform data names were taken from the modem_modemctl_device_xmm6262.c file

libsamsung-ipc Kernel Devices Documentation
Function using the ioctl ioctl name function pointer name gpio platform data name present absent Implementation comments
xmm626_kernel_smdk4412_power IOCTL_MODEM_ON
IOCTL_MODEM_OFF
modem_on
modem_off
gpio_cp_on powers on the modem? in which state (PMIC?, CPU?)
* On GT-I9100 it's connected to the ON1 modem pin and ON2 is not connected.
gpio_cp_reset Resets the modem CPU? PMIC?:
* ''check the reset timming with C2C connection'' : Here C2C probably means chip to chip
gpio_reset_req_n
gpio_pda_active Tell the modem if the SOC CPUs are sleeping/active or not?
* PDA == Application processor
* ''PDA_ACTIVE, let cp know AP sleep'' comment in status gc1-gpio.c
* PDA_ACTIVE set to 0 right after cpu_pm_enter()
* PDA_ACTIVE set to 1 right before cpu_pm_exit()
* GPIO direction is output on AP side and input on BP side, which is also confirmed by the pinout table in XDA
gpio_phone_active
gpio_cp_dump_int cp: baseband processor
xmm626_kernel_smdk4412_boot_power IOCTL_MODEM_BOOT_ON
IOCTL_MODEM_BOOT_OFF
modem_boot_on
modem_boot_off
gpio_flm_uart_sel Only used for the Galaxy Nexus in libsamsung-ipc Modem download mode ?
gpio_cp_warm_reset cp: baseband processor
gpio_revers_bias_clear
gpio_revers_bias_restore
gpio_sim_detect Detect SIM card presence ?

Glossary

SIM card presence detection

Do we really want to check the SIM card presence?

Would it be possible not to for privacy reasons?

Example:

TODO

Modem partitions

GT-I9300, GT-N7100

Location Name Content
[ 0x0 -> 0xfff ] ? Partition table?
[ 0x1000 -> 0xefff ] PSIRAM First stage bootloader?
[ 0xF000 -> 0x27fff ] EBL Second stage bootloader ?
[ 0x28000 -> 0x9ff7ff ] MAIN ?
[ 0x9ff800 -> 0x9fffff ] SECPACK ?
[ 0xa00000 -> 0xbfffff ] NV ?
References for the table:

GT-I9300 and GT-N7100 modem partition table dump

$ hexdump -C RADIO.img
00000000  50 53 49 52 41 4d 00 00  00 00 00 00 00 10 00 00  |PSIRAM..........|
00000010  00 00 00 00 00 e0 00 00  00 00 00 00 00 00 00 00  |................|
00000020  45 42 4c 00 00 00 00 00  00 00 00 00 00 f0 00 00  |EBL.............|
00000030  00 00 00 60 00 90 01 00  00 00 00 00 00 00 00 00  |...`............|
00000040  4d 41 49 4e 00 00 00 00  00 00 00 00 00 80 02 00  |MAIN............|
00000050  00 00 30 60 00 78 9d 00  00 00 00 00 00 00 00 00  |..0`.x..........|
00000060  53 45 43 50 41 43 4b 00  00 00 00 00 00 f8 9f 00  |SECPACK.........|
00000070  00 00 00 00 00 08 00 00  00 00 00 00 00 00 00 00  |................|
00000080  4e 56 00 00 00 00 00 00  00 00 00 00 00 00 a0 00  |NV..............|
00000090  00 00 e8 60 00 00 20 00  00 00 00 00 00 00 00 00  |...`.. .........|
000000a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
[...]

Devices without a partition table or with a different one

Links