Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Customers may request access to the source-code of the firmware to modify it for their needs.

Commands & Registers (I2C)

I2C-Address: 0x40 (7-bit)

Register

Name

Access

Description

Default Value

0x01

REG_ID

read

ID-Register

0x96

0x02

REG_CONTROL

write

Restart and boot with BOOT_MODE=
0x01 - Serial Download
0x02 - uSDHC1 8-bit eMMC 5.1

0x04 - Shutdown (Hard)

-

0x03

REG_CONFIG

-

-

-

0x04

REG_PIN_CONFIG

write

<Pin> <Parameter>
Parameter for GPIO:

1: Input, NoPull
10: Input, PullDown
11: Input, PullUp

20: Output PushPull, init low level
21: Output PushPull, init high level
40: Output, OpenDrain, init low level
41: Output, OpenDrain, init high level

-

0x05

REG_PIN_SET

write

<Pin> <Level>

-

0x06

REG_PIN_GET

write
read

<Pin>
Level of pin.

-

0x07

REG_PWM_CONFIG

write

<Pin> <Duty Cycle [%]>

-

0x08

REG_SECO_CODE

read

Read SECO_CODE
0x45 - RE58-1AA1-2611-E0
0x46 - RE58-1AA2-1611-E0
0x00 - RE58-1AA0-0100-C0

-

0x09

REG_INT_STATUS

read

Read INT_STATUS register, clear it and reset EC_IRQ#_OD to “1”

0x01: RTC_INT#
0x02: SMB_ALERT#
0x04: CPU_IRQ#

0x00

0x0A

REG_INT_ENABLE

write

Enable or disable interrupts.

0x01: RTC_INT#
0x02: SMB_ALERT#
0x04: CPU_IRQ#

-

0x0B

REG_ALTERNATE_
FUNCTION

write

Set Pin to specific alternate function.
For available alternate functions for pins refer to the list of configurable GPIO pins below.

<Pin> <Alternate Function>

Alternate Functions:
0x00: GPIO (Default: Input, NoPull)
0x01: PWM (Default: disabled)

-

0x0C

REG_RAM_CODE

read

Read RAM_CODE*

0x4 - 4GB RAM

-

0xF0

REG_VERSION

read

Read firmware version

0xD5**

*: Pull-Up-Resistors are connected to 1V8_RUN. Reading RAM_CODE only works properly, when CPU has enabled 1V8_RUN on PMIC.
When REG_RAM_CODE-Command is executed while 1V8_RUN is Low the return value will be 0x0.
**: 0xD4 = Development version 4, will be incremented over time and reset to 0x01 for final Release version.

Configurable GPIO Pins (I2C)

The following Pins are configurable via I2C:

Pin#

Name

Default Configuration

Alternate Function

4

GPIO4

Input, NoPull

5

GPIO5

PWM, 0% duty cycle

GPIO

6

GPIO6

Input, NoPull

7

GPIO7

Input, NoPull

8

GPIO8

Input, NoPull

9

GPIO9

Input, NoPull

10

GPIO10

Input, NoPull

11

GPIO11

Input, NoPull

12

GPIO12

Input, NoPull

13

GPIO13

Input, NoPull

20

USB0_EN_OC#

Output, OpenDrain, init low level

21

USB1_EN_OC#

Output, OpenDrain, init low level

23

USB3_EN_OC#

Output, OpenDrain, init low level

26

USB_HUB_RST#_1V8

Output, PushPull, init low level

37

WIFI_CLK_EN

Output, PushPull, init low level

38

WIFI_PWRDWN#_1V8

Output, PushPull, init low level

39

BATLOW#

Input, NoPull

40

CHARGING#

Input, NoPull

41

CHARGER_PRSNT#

Input, NoPull

42

RESET_OUT#

Output, PushPull, init low level, set high ~100ms after startup (-> SMARC Spec.)

Carrier board BOOT_SEL configuration

RevA0:
Note: On PCB RevA0 BOOT_SEL does not work. Instead the system enters serial download mode when “TEST#” (S157 on the SMARC connector) is low:

...

Any other BOOT_SEL configuration will be treated like the default option.

Other Functions

  • Pressing the POWER button for <10 seconds while the system is running (if 1V8_RUN is enabled and Linux is running) triggers a soft shutdown.
    Holding the POWER button for >= 10 seconds will cause the system to shut down hard.

...