Introduction

For system secure requirements, non-volatile information storage becomes more and more important nowadays. Besides non-volatile requirements, access privilege control of the storage media for different application scenarios is another significant topic for a secure system. For chip, an OTP device is used to achieve this goal.

Among all embedded non-volatile memory (eNVM) such as embedded flash, electrical fuses (eFuse), multi-time programmable (MTP), and antifuse one-time programmable (OTP), OTP is the most secure today. OTP cannot be hacked using passive, semi-invasive or invasive methods. It provides a strong layer of protection at the most vulnerable physical layer. A cross-section comparison of eFuse bit and antifuse OTP bit is illustrated below. As shown, eFuse is not a secure solution because it is easy to identify the programmed bits. Programming is accomplished by silicide electromigration of the fuse link between the anode and the cathode. While there is no visible difference between the programmed and non-programmed antifuse bits. The antifuse bit cell does not store a charge, whether antifuse bit is programmed is determined through current, not voltage.

../../rst_um/1_otpc/figures/a_cross_section_comparison_of_efuse_bit_and_antifuse_otp_bit.svg

The chip contains up to 2K bytes of one-time-programmable antifuse used for part configuration, key storage, and various other uses. The OTP contains factory configuration data such as on-chip SWR calibration values (Realtek factory), Wi-Fi calibration values (user factory), among other things. It may also be used by customer applications to configure some details of device operation, secure boot public key, aspects of device security, debug options, and boot options.

  • OTP device adopts UMC 22nm single poly baseline ULP process.

    • Neo Fuse is an antifuse-based technology.

    • Icell current >I threshold: programmed bit =0

    • Icell current < I threshold: un-programmed bit=1

  • One-bit-two-cell architecture

    • Redundancy cell can reduce access failed rate

OTP Layout and Security Control

There are 16K bits physical OTP in chip. The OTP layout is summarized in the following figure.

The OTP is divided into four zones:

  • Logical zone: This zone contains system data for boot configuration, Wi-Fi & BT parameters, calibration data, and HCI_SDIO and HCI_USB. These data are actually programed in a Realtek-defined format in physical OTP. So even the physical data can only be programmed once, the logical data can be overwritten after format conversion.

  • Security zone: The security-related keys, key access controls, and user-defined area with TrustZone attribute are all located in this zone.

  • User-defined zone: Users can use this zone freely.

  • Hidden physical zone: This zone contains the Return Material Authorization (RMA) control, RMA keys and Realtek calibration data.

../../rst_um/1_otpc/figures/otp_layout.svg

Logical Zone

Mapping Relationship of Physical OTP and Logical OTP

The following figure is an example to illustrate mapping relationship.

  1. After programming frame1 and frame2, the value of logical OTP addr1 is data1, and value of addr2 is data2.

    ../../rst_um/1_otpc/figures/logical_otp_address_mapping_after_initial_programming.svg
  2. After program frame3 in physical OTP, the value of logical OTP addr1 is data3 now, which has been overwritten and changed from data1 to data3.

    ../../rst_um/1_otpc/figures/data_overwrite_in_logical_otp_due_to_physical_frame_programming.svg
  3. After changing frame3 in physical OTP, fram3 is invalidate. Then operation of frame3 is doing nothing. So the value of logical OTP addr1 has changed back to data1.

    ../../rst_um/1_otpc/figures/restoration_of_logical_otp_values_after_frame_invalidation.svg

Logic Zone Layout

As the figure shows, the low address 0x000 ~ 0x200 of physical OTP is used for the logical area. Hardware and software will only parse this area for logical settings.

  • The logical area 0x000~0x01F needs to be auto-loaded to by hardware when the system boots.

  • The logical area 0x020~0x3FF is used by software. Software will parse this area using a Realtek-defined OTP format.

  • The logical area 0x200~0x29F (HCI_SDIO) and 0x2A0~0x2FF (HCI_USB) needs to be auto-loaded by hardware when the system boots.

This area can be programmed in byte (8bits). The default value for the auto-loaded register is 0x00. e.g. If you want only to disable Boot log (0x3[0]), 0x3 should be programmed with the value 0x01. Logical zone layout table is illustrated below.

Start address

End address

Size (bytes)

Description

0x000

0x01F

32

System data to be auto-loaded to the system registers

0x020

0x13F

288

Wi-Fi calibration data and MAC address

0x140

0x16F

48

Reserved

0x170

0x19F

48

User-defined MTP(Multi_time Program)

0x1A0

0x1AF

16

RSVD for Cap-Touch

0x1B0

0x1FF

80

Bluetooth parameters

0x200

0x29F

160

HCI_SDIO

0x2A0

0x2FF

96

HCI_USB

0x300

0x305

6

Ethernet MAC address

0x306

0x3FF

250

Reserved

System Data

Offset

Bit

Symbol

Description

HW address

INI

0x0

[0]

SW_RSVD

Reserved for software

0x40800100

0

0x0

[2:1]

BOOT_SRC_SEL

Choose Boot Source

0/3: boot from Flash

1: boot from USB

2: boot from SDIO

0x40800100

0

0x0

[3]

BT_Function_EN

Enable BT function for NIC mode

0x40800100

0

0x0

[5:4]

SDIO_PINMUX

0:PINMUX Index 0 (group 1: PA4-PA5,PA18-PA21)

1:PINMUX Index 1 (group 6: PC2-PC7)

2:PINMUX Index 2 (rsvd)

3:PINMUX Index 3 (rsvd)

0x40800100

0

0x0

[7:6]

BOOT_INT_FLASH

Boot from internal flash or external flash.

0/3: determined by power-on latch

1: internal flash

2: external flash

0x40800100

0

0x1

[7:0]

SW_RSVD

Reserved for software

0x40800101

0

0x2

[0]

FLASH_DEEP_SLEEP_EN

Flash deep-sleep enable

0x40800102

0

0x2

[1]

SPIC_ADDR_4BYTE_EN

SPIC address 4-byte enable

0x40800102

0

0x2

[2]

SPIC_BOOT_SPEEDUP_DIS

SPIC boot speed up disable

0x40800102

0

0x2

[3]

BOOT_FLASH_BAUD_SEL

Boot Flash clock selection.

Baudrate = 40/(2*(1+x))

0: 20M

1: 10M

0x40800102

0

0x2

[4]

SPIC_NAND_PAGE_SIZE

SPIC_NAND_PAGE_SIZE

0: auto detection

1: 4KB

0x40800102

0

0x2

[5]

BOOT_CNT_LMT_EN

Enable boot count limit

0x40800102

0x2

[7:6]

BOOT_NOR_FLASH

Boot from Nor flash, or Nand flash, or try.

0/3: determined by power-on latch

1: Nor flash

2: Nand flash

0x40800102

0

0x3

[0]

DIS_BOOT_LOG_EN

Boot log disable

0x40800103

0

0x3

[1]

LOW_BAUD_LOG_EN

LOGUART baud rate selection

1: 115200bps

0: 1.5Mbps

0x40800103

0

0x3

[2]

LOGIC_SECURE_BOOT_EN

Secure boot enable

0x40800103

0

0x3

[3]

LOGIC_RSIP_EN

RSIP enable

0x40800103

0

0x3

[4]

LOGIC_RDP_EN

RDP enable

0x40800103

0

0x3

[5]

SW_RSVD

Reserved for software

0x40800103

0

0x3

[6]

USB_CLK_CAL_EN

Enable SoC clock calibration for USB

0x40800103

0

0x3

[7]

USB_DOWNLOAD_EN

Enable USB Download

0x40800103

0

0x4

[7:0]

SW_RSVD

Reserved for software

0x40800104

0

0x5

[7:0]

SW_RSVD

Reserved for software

0x40800105

0

0x6

[7:0]

SW_RSVD

Reserved for software

0x40800106

0

0x7

[7:0]

SW_RSVD

Reserved for software

0x40800107

0

0x8

[7:0]

SW_RSVD

Reserved for software

0x40800108

0

0x9

[7:0]

SW_RSVD

Reserved for software

0x40800109

0

0xA

[7:0]

SW_RSVD

Reserved for software

0x4080010A

0

0xB

[7:0]

SW_RSVD

Reserved for software

0x4080010B

0

0xC

[7:0]

SW_RSVD

Reserved for software

0x4080010C

0

0xD

[7:0]

SW_RSVD

Reserved for software

0x4080010D

0

0xE

[7:0]

SW_RSVD

Reserved for software

0x4080010E

0

0xF

[7:0]

SW_RSVD

Reserved for software

0x4080010F

0

0x10 ~ 0x1E

RSVD

Reserved

-

-

0x1F

[6:0]

SW_RSVD

Reserved for software

0x4080011F

0

0x1F

[7]

BOOT_VOL_SEL

BOOT Voltage Selection

0: 0.9V

1: 1.0V

0x4080011F

0

Wi-Fi Calibration Data

Offset

Name

Bit

INI

Description

0x20

Path A/S0 2.4G CCK TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

00h

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path A 2.4G CCK TSSI offset for channel 1/2.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x21

[7:0]

00h

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path A 2.4G CCK TSSI offset for channel 3/4/5.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x22

[7:0]

00h

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path A 2.4G CCK TSSI offset for channel 6/7/8.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x23

[7:0]

00h

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path A 2.4G CCK TSSI offset for channel 9/10/11.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x24

[7:0]

00h

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path A 2.4G CCK TSSI offset for channel 12/13.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x25

[7:0]

00h

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path A 2.4G CCK TSSI offset for channel 14.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x26

Path A/S0 2.4G BW20-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

00h

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path A 2.4G BW20-1S TSSI offset for channel 1/2.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x27

[7:0]

00h

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path A 2.4G BW20-1S TSSI offset for channel 3/4/5.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x28

[7:0]

00h

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path A 2.4G BW20-1S TSSI offset for channel 6/7/8.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x29

[7:0]

00h

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path A 2.4G BW20-1S TSSI offset for channel 9/10/11.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x2A

[7:0]

00h

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path A 2.4G BW20-1S TSSI offset for channel 12/13/14.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x2B

RSVD

[7:0]

Reserved

0x2C

RSVD

[7:0]

Reserved

0x2D

RSVD

[7:0]

Reserved

0x2E

RSVD

[7:0]

Reserved

0x2F

RSVD

[7:0]

Reserved

0x30

RSVD

[7:0]

Reserved

0x31

RSVD

[7:0]

Reserved

0x32

Path A/S0 5G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

00h

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path A 5G BW40-1S TSSI offset for channel 36/38/40.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x33

[7:0]

00h

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path A 5G BW40-1S TSSI offset for channel 44/46/48.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x34

[7:0]

00h

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path A 5G BW40-1S TSSI offset for channel 52/54/56.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x35

[7:0]

00h

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path A 5G BW40-1S TSSI offset for channel 60/62/64.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x36

[7:0]

00h

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path A 5G BW40-1S TSSI offset for channel 100/102/104.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x37

[7:0]

00h

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path A 5G BW40-1S TSSI offset for channel 108/110/112.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x38

[7:0]

00h

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path A 5G BW40-1S TSSI offset for channel 116/118/120.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x39

[7:0]

00h

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path A 5G BW40-1S TSSI offset for channel 124/126/128.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x3A

[7:0]

00h

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path A 5G BW40-1S TSSI offset for channel 132/134/136.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x3B

[7:0]

00h

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path A 5G BW40-1S TSSI offset for channel 140/142/144.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x3C

[7:0]

00h

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path A 5G BW40-1S TSSI offset for channel 149/151/153.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x3D

[7:0]

00h

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path A 5G BW40-1S TSSI offset for channel 157/159/161.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x3E

[7:0]

00h

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path A 5G BW40-1S TSSI offset for channel 165/167/169.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x3F

[7:0]

00h

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path A 5G BW40-1S TSSI offset for channel 173/175/177.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x40

RSVD

[7:0]

Reserved

0x41

RSVD

[7:0]

Reserved

0x42

RSVD

[7:0]

Reserved

0x43

RSVD

[7:0]

Reserved

0x44

RSVD

[7:0]

Reserved

0x45

RSVD

[7:0]

Reserved

0x46

RSVD

[7:0]

Reserved

0x47

RSVD

[7:0]

Reserved

0x48

RSVD

[7:0]

Reserved

0x49

RSVD

[7:0]

Reserved

0x4A

Path B/S1 2.4G CCK TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path B 2.4G CCK TSSI offset for channel 1/2.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x4B

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path B 2.4G CCK TSSI offset for channel 3/4/5.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x4C

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path B 2.4G CCK TSSI offset for channel 6/7/8.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x4D

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path B 2.4G CCK TSSI offset for channel 9/10/11.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x4E

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path B 2.4G CCK TSSI offset for channel 12/13.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x4F

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path B 2.4G CCK TSSI offset for channel 14.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x50

Path B/S1 2.4G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path B 2.4G BW40-1S TSSI offset for channel 1/2.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x51

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path B 2.4G BW40-1S TSSI offset for channel 3/4/5.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x52

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path B 2.4G BW40-1S TSSI offset for channel 6/7/8.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x53

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path B 2.4G BW40-1S TSSI offset for channel 9/10/11.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x54

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path B 2.4G BW40-1S TSSI offset for channel 12/13/14.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x55

RSVD

[7:0]

Reserved

0x56

RSVD

[7:0]

Reserved

0x57

RSVD

[7:0]

Reserved

0x58

RSVD

[7:0]

Reserved

0x59

RSVD

[7:0]

Reserved

0x5A

RSVD

[7:0]

Reserved

0x5B

RSVD

[7:0]

Reserved

0x5C

Path B 5G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path B 5G BW40-1S TSSI offset for channel 36/38/40.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x5D

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path B 5G BW40-1S TSSI offset for channel 44/46/48.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x5E

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path B 5G BW40-1S TSSI offset for channel 52/54/56.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x5F

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path B 5G BW40-1S TSSI offset for channel 60/62/64.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x60

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path B 5G BW40-1S TSSI offset for channel 100/102/104.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x61

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path B 5G BW40-1S TSSI offset for channel 108/110/112.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x62

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path B 5G BW40-1S TSSI offset for channel 116/118/120.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x63

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path B 5G BW40-1S TSSI offset for channel 124/126/128.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x64

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path B 5G BW40-1S TSSI offset for channel 132/134/136.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x65

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path B 5G BW40-1S TSSI offset for channel 140/142/144.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x66

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path B 5G BW40-1S TSSI offset for channel 149/151/153.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x67

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path B 5G BW40-1S TSSI offset for channel 157/159/161.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x68

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path B 5G BW40-1S TSSI offset for channel 165/167/169.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x69

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path B 5G BW40-1S TSSI offset for channel 173/175/177.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x6A

RSVD

[7:0]

Reserved

0x6B

RSVD

[7:0]

Reserved

0x6C

RSVD

[7:0]

Reserved

0x6D

RSVD

[7:0]

Reserved

0x6E

RSVD

[7:0]

Reserved

0x6F

RSVD

[7:0]

Reserved

0x70

RSVD

[7:0]

Reserved

0x71

RSVD

[7:0]

Reserved

0x72

RSVD

[7:0]

Reserved

0x73

RSVD

[7:0]

Reserved

0x74

Path C 2.4G CCK TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

00h

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path C 2.4G CCK TSSI offset for channel 1/2.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x75

Path C 2.4G CCK TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

00h

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path C 2.4G CCK TSSI offset for channel 3/4/5.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x76

Path C 2.4G CCK TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

00h

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path C 2.4G CCK TSSI offset for channel 6/7/8.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x77

Path C 2.4G CCK TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

00h

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path C 2.4G CCK TSSI offset for channel 9/10/11.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x78

Path C 2.4G CCK TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

00h

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path C 2.4G CCK TSSI offset for channel 12/13.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x79

Path C 2.4G CCK TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

00h

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path C 2.4G CCK TSSI offset for channel 14.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x7A

Path C 2.4G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path C 2.4G BW40-1S TSSI offset for channel 1/2.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x7B

Path C 2.4G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path C 2.4G BW40-1S TSSI offset for channel 3/4/5.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x7C

Path C 2.4G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path C 2.4G BW40-1S TSSI offset for channel 6/7/8.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x7D

Path C 2.4G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path C 2.4G BW40-1S TSSI offset for channel 9/10/11.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x7E

Path C 2.4G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path C 2.4G BW40-1S TSSI offset for channel 12/13/14.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x7F

RSVD

[7:0]

Reserved

0x80

RSVD

[7:0]

Reserved

0x81

RSVD

[7:0]

Reserved

0x82

RSVD

[7:0]

Reserved

0x83

RSVD

[7:0]

Reserved

0x84

RSVD

[7:0]

Reserved

0x85

RSVD

[7:0]

Reserved

0x86

Path C 5G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path C 5G BW40-1S TSSI offset for channel 36/38/40.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x87

Path C 5G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path C 5G BW40-1S TSSI offset for channel 44/46/48.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x88

Path C 5G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path C 5G BW40-1S TSSI offset for channel 52/54/56.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x89

Path C 5G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path C 5G BW40-1S TSSI offset for channel 60/62/64.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x8A

Path C 5G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path C 5G BW40-1S TSSI offset for channel 100/102/104.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x8B

Path C 5G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path C 5G BW40-1S TSSI offset for channel 108/110/112.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x8C

Path C 5G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path C 5G BW40-1S TSSI offset for channel 116/118/120.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x8D

Path C 5G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path C 5G BW40-1S TSSI offset for channel 124/126/128.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x8E

Path C 5G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path C 5G BW40-1S TSSI offset for channel 132/134/136.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x8F

Path C 5G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path C 5G BW40-1S TSSI offset for channel 140/142/144.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x90

Path C 5G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path C 5G BW40-1S TSSI offset for channel 149/151/153.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x91

Path C 5G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path C 5G BW40-1S TSSI offset for channel 157/159/161.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x92

Path C 5G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path C 5G BW40-1S TSSI offset for channel 165/167/169.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x93

Path C 5G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path C 5G BW40-1S TSSI offset for channel 173/175/177.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x94

RSVD

[7:0]

Reserved

0x95

RSVD

[7:0]

Reserved

0x96

RSVD

[7:0]

Reserved

0x97

RSVD

[7:0]

Reserved

0x98

RSVD

[7:0]

Reserved

0x99

RSVD

[7:0]

Reserved

0x9A

RSVD

[7:0]

Reserved

0x9B

RSVD

[7:0]

Reserved

0x9C

RSVD

[7:0]

Reserved

0x9D

RSVD

[7:0]

Reserved

0x9E

Path D 2.4G CCK TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path D 2.4G CCK TSSI offset for channel 1/2.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0x9F

Path D 2.4G CCK TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path D 2.4G CCK TSSI offset for channel 3/4/5.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0xA0

Path D 2.4G CCK TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path D 2.4G CCK TSSI offset for channel 6/7/8.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0xA1

Path D 2.4G CCK TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path D 2.4G CCK TSSI offset for channel 9/10/11.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0xA2

Path D 2.4G CCK TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path D 2.4G CCK TSSI offset for channel 12/13.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0xA3

Path D 2.4G CCK TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path D 2.4G CCK TSSI offset for channel 14.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0xA4

Path D 2.4G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path D 2.4G BW40-1S TSSI offset for channel 1/2.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0xA5

Path D 2.4G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path D 2.4G BW40-1S TSSI offset for channel 3/4/5.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0xA6

Path D 2.4G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path D 2.4G BW40-1S TSSI offset for channel 6/7/8.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0xA7

Path D 2.4G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path D 2.4G BW40-1S TSSI offset for channel 9/10/11.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0xA8

Path D 2.4G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path D 2.4G BW40-1S TSSI offset for channel 12/13/14.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0xA9

RSVD

[7:0]

Reserved

0xAA

RSVD

[7:0]

Reserved

0xAB

RSVD

[7:0]

Reserved

0xAC

RSVD

[7:0]

Reserved

0xAD

RSVD

[7:0]

Reserved

0xAE

RSVD

[7:0]

Reserved

0xAF

RSVD

[7:0]

Reserved

0xB0

Path D 5G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path D 5G BW40-1S TSSI offset for channel 36/38/40.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0xB1

Path D 5G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path D 5G BW40-1S TSSI offset for channel 44/46/48.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0xB2

Path D 5G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path D 5G BW40-1S TSSI offset for channel 52/54/56.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0xB3

Path D 5G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path D 5G BW40-1S TSSI offset for channel 60/62/64.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0xB4

Path D 5G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path D 5G BW40-1S TSSI offset for channel 100/102/104.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0xB5

Path D 5G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path D 5G BW40-1S TSSI offset for channel 108/110/112.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0xB6

Path D 5G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path D 5G BW40-1S TSSI offset for channel 116/118/120.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0xB7

Path D 5G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path D 5G BW40-1S TSSI offset for channel 124/126/128.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0xB8

Path D 5G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path D 5G BW40-1S TSSI offset for channel 132/134/136.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0xB9

Path D 5G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path D 5G BW40-1S TSSI offset for channel 140/142/144.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0xBA

Path D 5G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path D 5G BW40-1S TSSI offset for channel 149/151/153.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0xBB

Path D 5G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path D 5G BW40-1S TSSI offset for channel 157/159/161.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0xBC

Path D 5G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path D 5G BW40-1S TSSI offset for channel 165/167/169.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0xBD

Path D 5G BW40-1S TSSI offset

(Obtained from MP tool while performing power calibration)

[7:0]

Bit[7]: Sign-bit for TSSI offset (0 for plus and 1 for minus)

Bit[6:0]: Path D 5G BW40-1S TSSI offset for channel 173/175/177.

The calculation is 2’s complement. Ex: FF=-1, 1=+1

0xBE

RSVD

[7:0]

Reserved

0xBF

RSVD

[7:0]

Reserved

0xC0

RSVD

[7:0]

Reserved

0xC1

RSVD

[7:0]

Reserved

0xC2

RSVD

[7:0]

Reserved

0xC3

Channel Plan Page

[7:6]

Defined Channel Plan Page 0/1/2/3.

11: Page 0

10: Page 1

01: Page 2

00: Page 3

0xC3

Channel Plan Page

[5:0]

Reserved

0xC4

RSVD

[7:0]

Reserved

0xC5

RSVD

[7:0]

Reserved

0xC6

RSVD

[7:0]

Reserved

0xC7

RSVD

[7:0]

Reserved

0xC8

Channel Plan

[7:0]

7Fh

Refer to the document with the topic “Channel Plan Domain Code”

0xC9

Crystal Calibration

[6:0]

3Fh

XTAL_K value

Xi=Xo, Range: 0~7Fh.

Note

If in the case without assigned value, 0x3F will be used by the driver.

0xC9

Crystal Calibration

[7]

0h

Reserved

0xCA

Thermal Meter

[7:0]

20h

Thermal Meter Value

System maker will calibrate a value and save it in EEPROM.

0xFF: Disable Tx power tracking function

0xCB

IQ Calibration and LC Calibration

[1:0]

0h

Do IQK by Thermal Meter ∆value.

0h: Mode 1

1h: Mode 2

2h: Mode 3

3h: Don’t IQK

0xCB

IQ Calibration and LC Calibration

[3:2]

0h

Do LCK by Thermal Meter ∆value.

0h: Mode 1

1h: Mode 2

2h: Mode 3

3h: Don’t LCK

0xCB

IQ Calibration and LC Calibration

[7:4]

0h

Reserved

0xCC

2.4G and 5G PA Type

[7:0]

0xCD

2.4G LNA Type and Gain Selection

[7:0]

0xCE

2.4G LNA Type and Gain Selection

[7:0]

0xCF

5G LNA Type and Gain Selection

[7:0]

0x130

5G LNA Type and Gain Selection

[7:0]

0x131

Board Options

[1:0]

1h

Regulatory selection

0h: Tx output power varies according to the power-by-rate table. (Power-limit table takes no effect on output power, non-regular use)

1h: Tx output power varies according to both the power-by-rate table and the power-limit table. (Power-by-rate table is generally provided by Realtek according to optimized through-put test, power-limit table is based on certification-pass criterion) (Default setting to satisfy both of the two purposed)

2h: Disable power-by-rate function.

0x131

Board Options

[2]

0h

Tx diversity

0: Disable or multi-Tx-path

1: Enable (de-featured to 1 Tx/stream)

0x131

Board Options

[3]

0h

Rx diversity

0: Disable or multi-Rx-path (Rx MRC)

1: Enable (de-featured to 1 Rx/stream)

0x131

Board Options

[4]

0h

Option for 11ac mode

0: Enable 11ac mode

1: Disable 11ac mode

0x131

Board Options

[7:5]

1h

Module type

0h: Wi-Fi solo module

1h: Wi-Fi/BT combo module

2~7h: Reserved

0x132

Feature Options

[1:0]

0h

Function configuration of pin_LED0 and pin_LED1

0x132

Feature Options

[3:2]

0h

Link Speed shown in OS

0h: Current Tx PHY Rate

1h: Current Rx PHY Rate

2h: Maximum RX PHY Rate

3h: Reserved

0x132

Feature Options

[4]

0h

WLAN disable mode selection

0: Radio off

1: Power down

0x132

Feature Options

[7:5]

0h

Reserved

x133

BT Setting

(From BT’s point of view, not concerned with Wi-Fi)

[0]

0h

Total antenna number

0: BT/Wi-Fi use dedicated antenna

1: BT/Wi-Fi use shared antenna

x133

BT Setting

(From BT’s point of view, not concerned with Wi-Fi)

[3:1]

0h

Co-existence type

0h: Internal Mailbox

1h: Realtek BT I2C Mailbox (contact FAE for more information)

x133

BT Setting

(From BT’s point of view, not concerned with Wi-Fi)

[4]

1h

Antenna isolation

0: High isolation (>35dB)

1: Low

x133

BT Setting

(From BT’s point of view, not concerned with Wi-Fi)

[5]

0h

Radio on/off type

0: Combine with Wi-Fi

1: Individual

x133

BT Setting

(From BT’s point of view, not concerned with Wi-Fi)

[6]

0h

BT AFE

0: BT SEL WLAFE

1: BT SEL BTAFE

x133

BT Setting

(From BT’s point of view, not concerned with Wi-Fi)

[7]

0h

Reserved

0x134

Version

[7:0]

00h

EEPROM content version

0x135

Customer ID

[7:0]

00h

Customer ID

Note

0x00 and 0xFF are reserved for Realtek.

0x136

2.4G Tx BB Swing Setting

[1:0]

0h

2.4G Path A OFDM

0h: 0dB

1h: -3dB

2h: -6dB

3h: -9dB

0x136

2.4G Tx BB Swing Setting

[3:2]

0h

2.4G Path B OFDM

0h: 0dB

1h: -3dB

2h: -6dB

3h: -9dB

0x136

2.4G Tx BB Swing Setting

[5:4]

0h

2.4G Path C OFDM

0h: 0dB

1h: -3dB

2h: -6dB

3h: -9dB

0x136

2.4G Tx BB Swing Setting

[7:6]

0h

2.4G Path D OFDM

0h: 0dB

1h: -3dB

2h: -6dB

3h: -9dB

0x137

5G Tx BB Swing Setting

[1:0]

0h

5G Path A OFDM

0h: 0dB

1h: -3dB

2h: -6dB

3h: -9dB

0x137

5G Tx BB Swing Setting

[3:2]

0h

5G Path B OFDM

0h: 0dB

1h: -3dB

2h: -6dB

3h: -9dB

0x137

5G Tx BB Swing Setting

[5:4]

0h

5G Path C OFDM

0h: 0dB

1h: -3dB

2h: -6dB

3h: -9dB

0x137

5G Tx BB Swing Setting

[7:6]

0h

5G Path D OFDM

0h: 0dB

1h: -3dB

2h: -6dB

3h: -9dB

0x138

Tx Power Calibration Rate & Tx Power Tracking Mode

[0]

0h

Power Calibration: 2.4G 40M Tx Power Calibrator Rate

0h: HT40, MCS7 64QAM

1h: VHT40, MCS9 256QAM

0x138

Tx Power Calibration Rate & Tx Power Tracking Mode

[1]

0h

Power Calibration: 5G 40M Tx Power Calibrator Rate

0h: HT40, MCS7 64QAM

1h: VHT40, MCS9 256QAM

0x138

Tx Power Calibration Rate & Tx Power Tracking Mode

[3:2]

0h

Reserved

0x138

Tx Power Calibration Rate & Tx Power Tracking Mode

[7:4]

1h

Power Tracking

0x0h ~ 0x3h: Power tracking by thermal

0x4h ~ 0x7h: Power tracking by TSSI

0x139

Tx/Rx Path Selection

[3:0]

1h

Rx path assignment

Bit[3]: Path S3

Bit[2]: Path S2

Bit[1]: Path S1

Bit[0]: Path S0

  • 1: On

  • 0: Off

Note

The ability for maximum Tx/Rx paths would be constrained by real physical limitation.

0x139

Tx/Rx Path Selection

[7:4]

1h

Tx path assignment

Bit[7]: Path S3

Bit[6]: Path S2

Bit[5]: Path S1

Bit[4]: Path S0

  • 1: On

  • 0: Off

0x13A

RFE Type (RF Front-end Type)

(Concerned with hardware parameter)

[6:0]

1h

RFE Type

Contact FAE to get the right RFE type for individual hardware design.

0x13A

RFE Type (RF Front-end Type)

(Concerned with hardware parameter)

[7]

0h

Determined RFE type selection by driver or eFuse

1h: RFE type defined by the driver (discard the below setting of 0x13A[6:0])

0h: RFE type defined by 0x13A[6:0]

0x13B

Country code

[7:0]

FFh

Driver will set the ISO 3166-1 country code according to eFuse 0xC8 (channel plan) if the value is 0xFFFF.

0x13C

Country code

[7:0]

FFh

Driver will set the ISO 3166-1 country code according to eFuse 0xC8 (channel plan) if the value is 0xFFFF.

0x13D

RSVD

[7:0]

Reserved

0x13E

RSVD

[7:0]

Reserved

0x13F

RSVD

[7:0]

Reserved

HCI_SDIO Parameters

Offset (logical)

name

bit

value

description

init value

register offset

0x200

SCSI

[0]

0x00

CCCR: 0x07 bit6

0x00

SDC

[1]

0x01

CCCR: 0x08 bit0

0x01

SMB

[2]

0x01

CCCR: 0x08 bit1

0x01

S4MI

[3]

0x01

CCCR: 0x08 bit4

0x01

SMPC

[4]

0x01

CCCR: 0x12 bit0

0x01

SHS

[5]

0x01

CCCR: 0x13 bit0

0x01

SSDR50

[6]

0x01

CCCR: 0x14 bit0

0x00

SSDR104

[7]

0x01

CCCR: 0x14 bit1

0x00

0x201

SDDR50

[0]

0x01

CCCR: 0x14 bit2

0x00

SDTA

[1]

0x01

CCCR: 0x15 bit0

0x00

SDTC

[2]

0x01

CCCR: 0x15 bit1

0x00

SDTD

[3]

0x01

CCCR: 0x15 bit2

0x00

SAI

[4]

0x01

CCCR: 0x16 bit0

0x01

init_skip

[5]

0x00

0: need to use cmd 0 5 5 3 7 to enable Wifi, 1: skip

0x00

SDIO Register 0x86[2]

operating_voltage

[6]

0x01

Operating Voltage: 0=>3.3V; 1=>1.8V

0x00

SDIO Register 0x86[3]

intr_ctrl

[7]

0x01

1: enable intr ; 0: disable intr

0x01

SDIO Register 0x86[4]

0x202

FN1_SPS

[0]

0x01

FBR: 0x102 bit0

0x01

Reserved

[3:1]

0x00

0x00

FN1_PS3

[7:4]

0x00

FBR: 0x102 bit7~4

0x00

0x203

CCCR rev

[3:0]

0x03

CCCR:0 bit0~3

0x02

cmd_force_vld

[4]

0x00

when set to 1, reply any command at any SDIO status

0x00

SDIO Register 0x00[5]

Reply_S18A

[5]

0x01

Set S18A in response4

0x00

SDIO Register 0x00[6]

Reserved

[7:6]

0x00

rsvd

0x00

0x204

SDIO rev

[3:0]

0x04

CCCR:0 bit4~7

0x03

SD rev

[7:4]

0x03

CCCR:1 bit0~3

0x02

0x205

OCR

[7:0]

0xFF

OCR[7:0]

0xFF

0x206

OCR

[7:0]

0xFF

OCR[15:8]

0xFF

0x207

OCR

[7:0]

0xFF

OCR[23:16]

0xFF

0x208

Common CIS Data

[7:0]

0x20

CISTPL_MANFID begin here

0x20

0x209

[7:0]

0x04

CISTPL_MANFID bytes

0x04

0x20a

[7:0]

0x4C

vendor id[7:0]

0x4C

0x20b

[7:0]

0x02

vendor id[15:8]

0x02

0x20c

[7:0]

0x20

product_id[7:0]

0x20

0x20d

[7:0]

0xB7

product_id[15:8]

0xB7

0x20e

[7:0]

0x21

CISTPL_FUNCID begin here

0x21

0x20f

[7:0]

0x02

CISTPL_FUNCID bytes

0x02

0x210

[7:0]

0x0C

0x0C

0x211

[7:0]

0x00

0x00

0x212

[7:0]

0x22

CISTPL_FUNCE begin here

0x22

0x213

[7:0]

0x04

CISTPL_FUNCE bytes

0x04

0x214

[7:0]

0x00

0x00

0x215

[7:0]

0x08

0x08

0x216

[7:0]

0x00

0x00

0x217

[7:0]

0x32

0x32

0x218

[7:0]

0xFF

tuple chain end mark

0xFF

0x219

Function 1 CIS Data

[7:0]

0x21

CISTPL_FUNCID begin here

0x21

0x21a

[7:0]

0x02

CISTPL_FUNCID bytes

0x02

0x21b

[7:0]

0x0C

0x0C

0x21c

[7:0]

0x00

0x00

0x21d

[7:0]

0x22

CISTPL_FUNCE begin here

0x22

0x21e

[7:0]

0x2A

CISTPL_FUNCE bytes

0x2A

0x21f

[7:0]

0x01

0x01

0x220

[7:0]

0x01

0x01

0x221

[7:0]

0x00

0x00

0x222

[7:0]

0x00

0x00

0x223

[7:0]

0x00

0x00

0x224

[7:0]

0x00

0x00

0x225

[7:0]

0x00

0x00

0x226

[7:0]

0x00

0x00

0x227

[7:0]

0x00

0x00

0x228

[7:0]

0x00

0x00

0x229

[7:0]

0x00

0x00

0x22a

[7:0]

0x00

0x00

0x22b

[7:0]

0x00

0x00

0x22c

[7:0]

0x02

0x02

0x22d

[7:0]

0x00

0x00

0x22e

[7:0]

0xFF

0xFF

0x22f

[7:0]

0xFF

0xFF

0x230

[7:0]

0x00

0x00

0x231

[7:0]

0x00

0x00

0x232

[7:0]

0x00

0x00

0x233

[7:0]

0x00

0x00

0x234

[7:0]

0x00

0x00

0x235

[7:0]

0x00

0x00

0x236

[7:0]

0x00

0x00

0x237

[7:0]

0x00

0x00

0x238

[7:0]

0x00

0x00

0x239

[7:0]

0x00

0x00

0x23a

[7:0]

0x00

0x00

0x23b

[7:0]

0x00

0x00

0x23c

[7:0]

0x00

0x00

0x23d

[7:0]

0x00

0x00

0x23e

[7:0]

0x00

0x00

0x23f

[7:0]

0x00

0x00

0x240

[7:0]

0x00

0x00

0x241

[7:0]

0xEB

0xEB

0x242

[7:0]

0x00

0x00

0x243

[7:0]

0x6E

0x6E

0x244

[7:0]

0x01

0x01

0x245

[7:0]

0x00

0x00

0x246

[7:0]

0x00

0x00

0x247

[7:0]

0x00

0x00

0x248

[7:0]

0x00

0x00

0x249

[7:0]

0xFF

tuple chain end mark

0xFF

0x24a

Reserved

[7:0]

0xFF

0xFF

0x24b

[7:0]

0xFF

0xFF

0x24c

[7:0]

0xFF

0xFF

0x24d

[7:0]

0xFF

0xFF

0x24e

[7:0]

0xFF

0xFF

0x24f

[7:0]

0xFF

0xFF

0x250

[7:0]

0xFF

0xFF

0x251

[7:0]

0xFF

0xFF

0x252

[7:0]

0xFF

0xFF

0x253

[7:0]

0xFF

0xFF

0x254

[7:0]

0xFF

0xFF

0x255

[7:0]

0xFF

0xFF

0x256

[7:0]

0xFF

0xFF

0x257

[7:0]

0xFF

0xFF

0x258

[7:0]

0xFF

0xFF

0x259

[7:0]

0xFF

0xFF

0x25a

Function 2 CIS Data

[7:0]

0x21

CISTPL_FUNCID begin here

0x21

0x25b

[7:0]

0x02

CISTPL_FUNCID bytes

0x02

0x25c

[7:0]

0x0C

0x0C

0x25d

[7:0]

0x00

0x00

0x25e

[7:0]

0x22

CISTPL_FUNCE begin here

0x22

0x25f

[7:0]

0x2A

CISTPL_FUNCE bytes

0x2A

0x260

[7:0]

0x01

0x01

0x261

[7:0]

0x01

0x01

0x262

[7:0]

0x00

0x00

0x263

[7:0]

0x00

0x00

0x264

[7:0]

0x00

0x00

0x265

[7:0]

0x00

0x00

0x266

[7:0]

0x00

0x00

0x267

[7:0]

0x00

0x00

0x268

[7:0]

0x00

0x00

0x269

[7:0]

0x00

0x00

0x26a

[7:0]

0x00

0x00

0x26b

[7:0]

0x00

0x00

0x26c

[7:0]

0x00

0x00

0x26d

[7:0]

0x02

0x02

0x26e

[7:0]

0x00

0x00

0x26f

[7:0]

0xFF

0xFF

0x270

[7:0]

0xFF

0xFF

0x271

[7:0]

0x00

0x00

0x272

[7:0]

0x00

0x00

0x273

[7:0]

0x00

0x00

0x274

[7:0]

0x00

0x00

0x275

[7:0]

0x00

0x00

0x276

[7:0]

0x00

0x00

0x277

[7:0]

0x00

0x00

0x278

[7:0]

0x00

0x00

0x279

[7:0]

0x00

0x00

0x27a

[7:0]

0x00

0x00

0x27b

[7:0]

0x00

0x00

0x27c

[7:0]

0x00

0x00

0x27d

[7:0]

0x00

0x00

0x27e

[7:0]

0x00

0x00

0x27f

[7:0]

0x00

0x00

0x280

[7:0]

0x00

0x00

0x281

[7:0]

0x00

0x00

0x282

[7:0]

0xEB

0xEB

0x283

[7:0]

0x00

0x00

0x284

[7:0]

0x6E

0x6E

0x285

[7:0]

0x01

0x01

0x286

[7:0]

0x00

0x00

0x287

[7:0]

0x00

0x00

0x288

[7:0]

0x00

0x00

0x289

[7:0]

0x00

0x00

0x28a

[7:0]

0xFF

tuple chain end mark

0xFF

0x28b

Reserved

[7:0]

0xFF

0xFF

0x28c

[7:0]

0xFF

0xFF

0x28d

[7:0]

0xFF

0xFF

0x28e~0x29f

[7:0]

0xFF

RSVD for SDIO

0xFF

HCI USB Parameters

offset (logical)

name

bit

PG value

description

init value

register offset

0x2a0

[7:0]

0xDA

USB Vendor ID[7:0]

0xDA

FE60

0x2a1

[7:0]

0x0B

USB Vendor ID[15:8]

0x0B

FE61

0x2a2

[7:0]

0x20

USB Product ID[7:0]

0x20

FE62

0x2a3

[7:0]

0x87

USB Product ID[15:8]

0x87

FE63

0x2a4

USB optional function_0 (SIE)

HW autoload

[0]

0x1

Bit[0]: Serial number

0 : Respond serial number from otp

1 : Respond serial number from internal ROM code(default value)

0x1

FE64

0x2a4

USB optional function_0 (SIE)

HW autoload

[1]

0x1

Bit[1]: USB remote wakeup function

0 : Do not support

1 : Support

0x1

FE64

0x2a4

USB optional function_0 (SIE)

HW autoload

[2]

0x0

Bit[2]: Device Power

0: Bus-Powered

1: Self-Powered

0x0

FE64

0x2a4

USB optional function_0 (SIE)

HW autoload

[3]

0x0

Bit[3]: Enable autoload UPHY

1 : enable: HW autoload UPHY parameter

0 : disable:default UPHY paramter in ROM code

0x0

FE64

0x2a4

USB optional function_0 (SIE)

HW autoload

[4]

0x0

Bit[4]: Enable SW load USB descriptor, PID/VID

1 : enable: SW read descriptor form efuse

0 : disable: SW using ROM code default value

0x0

FE64

0x2a4

USB optional function_0 (SIE)

HW autoload

[7:5]

0x7

RSVD

0x1

FE64

0x2a5

Manufacture String & Product String & Serial Number

[7:0]

0x09

1.) Manufacture String (Autoload to 0xFE80~0xFE9F of SIE register)

2.) Product String (Autoload to 0xFEA0~0xFECF of SIE register)

3.) Serial Number(Autoload to 0xFED0~0xFEDF of SIE register)

0x09

0xFE80~0xFE9F

0xFEA0~0xFECF

0xFED0~0xFEDF

0x2a6

[7:0]

0x03

0x03

0x2a7

[7:0]

0x52

0x52

0x2a8

[7:0]

0x65

0x65

0x2a9

[7:0]

0x61

0x61

0x2aa

[7:0]

0x6C

0x6C

0x2ab

[7:0]

0x74

0x74

0x2ac

[7:0]

0x65

0x65

0x2ad

[7:0]

0x6B

0x6B

0x2ae

[7:0]

0x17

0x17

0x2af

[7:0]

0x03

0x03

0x2b0

[7:0]

0x38

0x38

0x2b1

[7:0]

0x30

0x30

0x2b2

[7:0]

0x32

0x32

0x2b3

[7:0]

0x2E

0x2E

0x2b4

[7:0]

0x31

0x31

0x2b5

[7:0]

0x31

0x31

0x2b6

[7:0]

0x6E

0x6E

0x2b7

[7:0]

0x20

0x20

0x2b8

[7:0]

0x20

0x20

0x2b9

[7:0]

0x57

0x57

0x2ba

[7:0]

0x4C

0x4C

0x2bb

[7:0]

0x41

0x41

0x2bc

[7:0]

0x4E

0x4E

0x2bd

[7:0]

0x20

0x20

0x2be

[7:0]

0x41

0x41

0x2bf

[7:0]

0x64

0x64

0x2c0

[7:0]

0x61

0x61

0x2c1

[7:0]

0x70

0x70

0x2c2

[7:0]

0x74

0x74

0x2c3

[7:0]

0x65

0x65

0x2c4

[7:0]

0x72

0x72

0x2c5

[7:0]

0x0E

0x0E

0x2c6

[7:0]

0x03

0x03

0x2c7

[7:0]

0x30

0x30

0x2c8

[7:0]

0x30

0x30

0x2c9

[7:0]

0x65

0x65

0x2ca

[7:0]

0x30

0x30

0x2cb

[7:0]

0x34

0x34

0x2cc

[7:0]

0x63

0x63

0x2cd

[7:0]

0x30

0x30

0x2ce

[7:0]

0x30

0x30

0x2cf

[7:0]

0x30

0x30

0x2d0

[7:0]

0x30

0x30

0x2d1

[7:0]

0x30

0x30

0x2d2

[7:0]

0x31

0x31

0x2d3

[7:0]

0xFF

0xFF

0x2d4

[7:0]

0xFF

0xFF

0x2d5

[7:0]

0xFF

0xFF

0x2d6

[7:0]

0xFF

0xFF

0x2d7

[7:0]

0xFF

0xFF

0x2d8

[7:0]

0xFF

0xFF

0x2d9

[7:0]

0xFF

0xFF

0x2da

[7:0]

0xFF

0xFF

0x2db

[7:0]

0xFF

0xFF

0x2dc

[7:0]

0xFF

0xFF

0x2dd

[7:0]

0xFF

0xFF

0x2de

[7:0]

0xFF

0xFF

0x2df

USB2 PHY Parameter

[7:0]

0x63

USB PHY Parameter : 0xE0

0x63

E0

0x2e0

USB2 PHY Parameter

[7:0]

0x18

USB PHY Parameter : 0xE1

0x18

E1

0x2e1

USB2 PHY Parameter

[7:0]

0xff

USB PHY Parameter : 0xE2

0x00

E2

0x2e2

USB2 PHY Parameter

[7:0]

0xff

USB PHY Parameter : 0xE3

0x00

E3

0x2e3

USB2 PHY Parameter

[7:0]

0x68

USB PHY Parameter : 0xE4

0x68

E4

0x2e4

USB2 PHY Parameter

[7:0]

0x00

USB PHY Parameter : 0xE5

0x00

E5

0x2e5

USB2 PHY Parameter

[7:0]

0x81

USB PHY Parameter : 0xE6

0x81

E6

0x2e6

USB2 PHY Parameter

[7:0]

0x81

USB PHY Parameter : 0xE7

0x81

E7

0x2e7

USB2 PHY Parameter

[7:0]

0x25

USB PHY Parameter : 0xE0 (Page 1)

0x25

E8

0x2e8

USB2 PHY Parameter

[7:0]

0x77

USB PHY Parameter : 0xE1 (Page 1)

0x77

E9

0x2e9

USB2 PHY Parameter

[7:0]

0xff

USB PHY Parameter : 0xE2 (Page 1)

0x00

EA

0x2ea

USB2 PHY Parameter

[7:0]

0xff

USB PHY Parameter : 0xE3 (Page 1)

0x00

EB

0x2eb

USB2 PHY Parameter

[7:0]

0xff

USB PHY Parameter : 0xE4 (Page 1)

0x00

EC

0x2ec

USB2 PHY Parameter

[7:0]

0xff

USB PHY Parameter : 0xE5 (Page 1)

0x00

ED

0x2ed

USB2 PHY Parameter

[7:0]

0xff

USB PHY Parameter : 0xE6 (Page 1)

0x00

EE

0x2ee

USB2 PHY Parameter

[7:0]

0x48

USB PHY Parameter : 0xE7 (Page 1)

0x48

EF

0x2ef

USB2 PHY Parameter

[7:0]

0xec

USB PHY Parameter : 0xF0

0xec

F0

0x2f0

USB2 PHY Parameter

[7:0]

0x8c

USB PHY Parameter : 0xF1

0x8c

F1

0x2f1

USB2 PHY Parameter

[7:0]

0x00

USB PHY Parameter : 0xF2

0x00

F2

0x2f2

USB2 PHY Parameter

[7:0]

0x11

USB PHY Parameter : 0xF3

0x11

F3

0x2f3

USB2 PHY Parameter

[7:0]

0x9b

USB PHY Parameter : 0xF4

0x9b

F4

0x2f4

USB2 PHY Parameter

[7:0]

0x15

USB PHY Parameter : 0xF5

0x15

F5

0x2f5

USB2 PHY Parameter

[7:0]

0x00

USB PHY Parameter : 0xF6

0x00

F6

0x2f6

USB2 PHY Parameter

[7:0]

0x0a

USB PHY Parameter : 0xF7

0x0a

F7

0x2f7

USB2 PHY Parameter

[7:4]

0x4

USB PHY Parameter : 0xE7(Page2)

Objective Value of dis-connect level calibration

Current number = 87.5 +6.25*SEN(0) + 12.5*SEN(1) + 25*SEN(2) + 50*SEN(3) uA

Default is 112,5uA

reference Voltage = Ref.Current * 5Kohms, Therefoer, reference voltage = 562.5mV

0x4

0x2f7

USB2 PHY Parameter

[3:0]

0x8

USB PHY Parameter : 0xE7(Page2)

Objective Value of sensitivity calibration

Current number = 87.5 +6.25*SEN(0) + 12.5*SEN(1) + 25*SEN(2) + 50*SEN(3) uA

Default is 137,5uA

reference Voltage = Ref.Current * 1 Kohms, Therefoer, reference voltage = 137.5mV

0x8

0x2f7~0x2ff

RSVD

[7:0]

0xff

RSVD

0xFF

Ethernet Parameters

Offset (logical)

name

bit

init value

description

0x300

Ethernet MAC address

[7:0]

00h

Ethernet MAC address defined by customer

0x301

[7:0]

00h

0x302

[7:0]

00h

0x303

[7:0]

00h

0x304

[7:0]

00h

0x305

[7:0]

00h

Security Zone

Security Zone Layout

Physical area 0x200~0x500 is used for security function, as illustrated in the following figure, and this security zone will be visited using a physical address directly. However, access to this zone is limited, and the whole zone will be protected in RMA mode.

../../rst_um/1_otpc/figures/security_zone_layout.svg

0x200 ~ 0x35F

Function

Name

Size (bits)

Start offset

End offset

Load order

Specific IP can read?

IPSEC

S_IPSEC_Key1

256

0x200

0x021F

Negative

Y (LALU/RSIP)

IPSEC

S_IPSEC_Key2

256

0x220

0x023F

Negative

Y (LALU/RSIP)

IPSEC

NS_IPSEC_Key1

256

0x240

0x025F

Negative

Y (LALU)

IPSEC

NS_IPSEC_Key2

256

0x260

0x027F

Negative

Y (LALU)

PKE PRI

PKE PRI_KEY1

256

0x280

0x029F

Positive

Y (PKE)

PKE PRI

PKE PRI_KEY2

256

0x2A0

0x02BF

Positive

Y (PKE)

RSIP

RSIP_ECB_KEY

256

0x2C0

0x02DF

Negative

Y (LALU/RSIP)

RSIP

RSIP_CTR_KEY

256

0x2E0

0x02FF

Negative

Y (LALU/RSIP)

SWD

SWD_PASSWORD

128

0x300

0x030F

Positive

Y (SWD_PWD)

PSA

HUK

128

0x310

0x031F

Negative

N (0x40800310)

Secure Boot

PK1 (ROTPK hash)

256

0x320

0x033F

Positive

N (0x40800320)

Secure Boot

PK2 (ROTPK hash)

256

0x340

0x035F

Positive

N (0x40800340)

0x360 ~ 0x37F

Offset

Bit

Symbol

Description

HW address

INI

0x360

[31:0]

SWD_ID

SWDID use to mapping the Real SWD Key

Core-Sight internal REG

8’hff

0x364

[0]

SWD_PWD_EN

SWD Password Enable

Core-Sight internal REG

1’h0

0x364

[1]

SWD_DBGEN

SWD external debug authentication

No-readable REG

1’h0

0x364

[2]

SWD_NIDEN

No-readable REG

1’h0

0x364

[3]

SWD_SPIDEN

No-readable REG

1’h0

0x364

[4]

SWD_SPNIDEN

No-readable REG

1’h0

0x364

[5]

SWD_PWD_R_Protection_EN

Key write protection and read protections

No-readable REG

1’h0

0x364

[6]

SWD_PWD_W_Forbidden_EN

No-readable REG

1’h0

0x364

[7]

HUK_W_Forbidden_EN

No-readable REG

1’h0

0x365

[0]

SWD_SoftWare_CTRL_EN

No-readable REG

1’h0

0x365

[1]

PK1_W_Forbidden_EN

No-readable REG

1’h0

0x365

[2]

PK2_W_Forbidden_EN

No-readable REG

1’h0

0x365

[3]

S_IPSEC_Key1_R_Protection_EN

No-readable REG

1’h0

0x365

[4]

S_IPSEC_Key1_W_Forbidden_EN

No-readable REG

1’h0

0x365

[5]

S_IPSEC_Key2_R_Protection_EN

No-readable REG

1’h0

0x365

[6]

S_IPSEC_Key2_W_Forbidden_EN

No-readable REG

1’h0

0x365

[7]

NS_IPSEC_Key1_R_Protection_EN

No-readable REG

1’h0

0x366

[0]

NS_IPSEC_Key1_W_Forbidden_EN

No-readable REG

1’h0

0x366

[1]

NS_IPSEC_Key2_R_Protection_EN

No-readable REG

1’h0

0x366

[2]

NS_IPSEC_Key2_W_Forbidden_EN

No-readable REG

1’h0

0x366

[3]

PKE_PRI_KEY1_R_Protection_EN

No-readable REG

1’h0

0x366

[4]

PKE_PRI_KEY1_W_Forbidden_EN

No-readable REG

1’h0

0x366

[5]

PKE_PRI_KEY2_R_Protection_EN

No-readable REG

1’h0

0x366

[6]

PKE_PRI_KEY2_W_Forbidden_EN

No-readable REG

1’h0

0x366

[7]

RSIP_KEY1_R_Protection_EN

No-readable REG

1’h0

0x367

[0]

RSIP_KEY1_W_Forbidden_EN

No-readable REG

1’h0

0x367

[1]

RSIP_KEY2_R_Protection_EN

No-readable REG

1’h0

0x367

[2]

RSIP_KEY2_W_Forbidden_EN

No-readable REG

1’h0

0x367

[3]

RSIP_MODE_W_Forbidden_EN

RSIP_MODE

No-readable REG

1’h0

0x367

[4]

SIC_SECURE_EN

No-readable REG

1’h0

0x367

[5]

CPU_PC_DBG_EN

No-readable REG

1’h0

0x367

[6]

UDF1_TRUSTZONE_EN

No-readable REG

1’h0

0x367

[7]

UDF2_TRUSTZONE_EN

No-readable REG

1’h0

0x368

[0]

HWTRIG_UART_DOWNLOAD_DISABLE

0x40800368[0]

1’h0

0x368

[1]

RSVD

0x40800368[1]

1’h0

0x368

[2]

RSIP_EN

0x40800368[2]

1’h0

0x368

[3]

SECURE_BOOT_EN

0x40800368[3]

1’h0

0x368

[4]

SECURE_BOOT_HW_DIS

0x40800368[4]

1’h0

0x368

[5]

RDP_EN

0x40800368[5]

1’h0

0x368

[6]

Anti_Roback_EN

0x40800368[6]

1’h0

0x368

[7]

FAULT_LOG_PRINT_DIS

0x40800368[7]

1’h0

0x369

[1:0]

RSIP_MODE

0x40800368[9:8]

2’b00

0x369

[2]

HUK_DERIV_EN

0x40800368[10]

1’b0

0x369

[3]

UDF3_TRUSTZONE_EN

0x40800368[11]

1’h0

0x369

[4]

UDF4_TRUSTZONE_EN

0x40800368[12]

1’h0

0x369

[5]

PK_IDX (ROTPK hash Index)

0x40800368[13]

1’h0

0x369

[6]

SWTRIG_UART_DOWNLOAD_DISABLE

0x40800368[14]

1’h0

0x369

[7]

SPIC_PINMUX_IN_TESTMODE_DISABLE

0x40800368[15]

1’h0

0x36A

[7:0]

RSVD

0x40800368[23:16]

8’h00

0x36B

[3:0]

SECURE_BOOT_AUTH_ALG

0x40800368[27:24]

4’h0

0x36B

[7:4]

SECURE_BOOT_HASH_ALG

0x40800368[31:28]

4’h0

0x36C

[15:0]

OTA_ADDR

OTA address, 4K aligned

0x4080036C[15:0]

16’hffff

0x36E

[15:0]

RSVD

RSVD

0x4080036C[31:16]

16’hffff

0x370

[15:0]

CRC0

CRC check

0x40800370[15:0]

16’hffff

0x372

[15:0]

CRC1

0x40800372[15:0]

32’hffffffff

0x374

[15:0]

CRC2

0x40800374[15:0]

32’hffffffff

0x376

[15:0]

CRC3

0x40800376[15:0]

32’hffffffff

0x378

[63:0]

BOOTLOADER_VER

Bootloader version

0x40800378[63:0]

64’hffffffffffffffff

Note

If RSIP_MODE_W_Forbidden_EN is programed, 0x369[7:0] is not allowed to changed.

Security Area Auto-load

Auto-load Control

This security area can be divided into key area (0x200~0x35F), configuration area (0x360~0x37F) and user-defined area (0x380~0x4FF). The key area can also be divided into two groups: software inaccessible area (0x200~0x30F) and software accessible area (0x310~0x35F).

The auto-load software inaccessible data in a flip-flop can only be accessed by the special HW engine; there is no other way to access the flip-flop area. e.g. S_IPSEC_KEY can only be accessed by secure IPSEC, other HW engines even non-secure IPSEC cannot access this key.

The software accessible area will be loaded to the read-only area and can be accessed by CPU. This area contains two kinds of keys ─ HUK and Public key. The HUK is protected by the sticky bit. The ROM boot code will set the sticky bit after reading the HUK. After that, CPU cannot access the HUK any longer.

The configuration area will be auto-loaded to the internal read-only registers. The security auto-load control is illustrated below.

../../rst_um/1_otpc/figures/security_auto_load_control.svg

Note

  • The IPsec key located in 0x200~0x23F can only be accessed by secure IPsec with the corresponding Key ID.

  • The IPsec key located in 0x240~0x27F can only be accessed by non-secure IPsec with the corresponding Key ID.

  • The PKE key can only be accessed by PKE master with the corresponding Key ID.

  • The RSIP key can only be accessed by OTF master and IPsec with the corresponding Key ID.

  • The SWD key and SWD ID can only be accessed by SWD access point.

  • Configuration data located in 0x368~0x369 will be auto-loaded to the internal read-only register.

Auto-load Data Access Flow

In this section, IPsec will be taken as an example to illustrate how auto-load keys work.

There are two types of IPsec keys, which are used for secure IPsec and non-secure IPsec respectively. Software should configure these Key IDs to the corresponding IPsec, and then enable IPsec when using these keys.

  • S_IPSEC_Key: the IPsec key located in 0x200~0x23F for secure IPsec. After configured and enabled by software, the secure IPsec will use this key to encrypt or decrypt the data.

  • NS_IPSEC_Key: the IPsec key located in 0x240~0x27F for non-secure IPsec. After configured and enabled by software, the non-secure IPsec will use this key to encrypt or decrypt the data.

  • RSIP key can also be loaded to IPSEC to achieve image encryption. Both Secure IPsec and non-secure IPsec can access the keys by correct Key ID.

Configuration Area

Security Area Read Access Control

In the configuration area, most of the bits are used to control the write enable or read enable of the key area. Hardware will autoloader these bits and use them as access permission control.

For the key zone, each key has a read forbidden control bit in the configuration area. If this bit is programmed to ‘0’, the key cannot be read anymore.

The HUK can only be read before a sticky bit written. In ROM boot code, software will read HUK and write the sticky bits. So the HUK can only be accessed in ROM boot code.

Each user-defined zone has a control bit. If this bit is programmed to ‘0’, this zone can only be accessed from secure word.

Security area read access control is illustrated below.

../../rst_um/1_otpc/figures/security_area_read_access_control.svg

The SIC_EN bit is used to cut off the path of SIC interface to all internal registers, meaning that if SIC_EN is programmed, the SIC is totally disabled. The SIC_EN can’t read In RMA mode, so the SIC can access internal registers. however, the OTP area from 0x200~0x500 cannot be accessed in RMA mode, the system registers and other OTP regions can be accessed from SIC.

Security Area Write Access Control

For the key zone, each key has a write forbidden control bit in the configuration area. If this bit is programmed to ‘0’, the key cannot be programmed anymore.

The RSIP mode in the configuration area also has a write forbidden control bit. If this bit is programmed to ‘0’, RSIP cannot be programmed again.

Each user-defined zone has a control bit. If this bit is programmed to ‘0’, this zone can only be accessed from secure word.

Security area write access control is illustrated below.

../../rst_um/1_otpc/figures/security_area_write_access_control.svg

User-defined Area

The user-defined zone can be used as a rollback counter private key or any other purposes freely.

The size of this area is 256 bytes, and can be divided into four areas: 0x380~0x3BF, 0x3C0~0x3F, 0x400~0x47F and 0x480~0x4FF. These areas can be defined to secure-only OTP areas by the configuration bits. The secure-only area is an area that can only be accessed from secure world, customers can put the keys with higher security level in this area.

By default, these two areas are non-secure. If the bit UDF1_Trustzone_EN (0x367[6]) is programmed, the 0x380~0x3BF area can only be operated in secure word. Thus, the write from non-secure word is invalid and read from non-secure word returns all 0xFF. The configuration bit UDF2_Trustzone_EN (0x367[7]), UDF3_TRUSTZONE_EN (0x369[3]) and UDF4_TRUSTZONE_EN (0x369[4]) has the same function.

CRC Check

To avoid the fault injection, an internal LDO is added as the power supply of OTP. The LDO can filter most of the glitches. From published information, a hacker may have the ability to influence one OTP bit, to prevent this problem from being our weakness, CRC16 check is added.

The CRC is comprised of four CRC entries, each entry is 16-bit CRC. CRC check passes only when the CRC value are matched. The process of CRC check is illustrated below.

../../rst_um/1_otpc/figures/crc_check.svg

If the CRC check fails, hardware will bypass this information to software. The information is stored in two 32-bit registers, which includes the compare result flag, expected CRC, valid CRC. SW will just print out the expected and real CRC value in ROM and go to an endless loop instead of normal boot.

By default, the value of all CRC entry is 0xFFFF, indicating that the CRC check is disabled; otherwise, CRC check is enabled.

If entry 0 is not 0xFFFF, entry 0 is enabled (actually CRC Bit15 = 0 means enabled). If entry 1 is not 0xFFFF, it indicates that entry 0 is disabled and entry1 is enabled; and so on until entry 3. If the last valid entry check fails, it means that CRC check fails.

Note

  • CRC check cannot be disabled once enabled.

  • If CRC entry 3 is enabled, any modification in security zone (0x200~0x36F) will led to CRC check fails.

HW will auto-load the CRC entry twice with a random delay between them, and do OR operation to calculate the final load result. If the final result equals 0xFFFF, and all CRC entry equal to 0xFFFF, CRC check is disabled; otherwise, CRC check is enabled.

Whether CRC check needs to be done is related to the auto-load of security zone. Each time the system auto-loads the security zone when boot, CRC will be checked. All the reset types including CHIP_EN, POR, WDG, SYS_RET, BOR, Thermal_RST, and waking up from deep-sleep will trigger auto-load, thus CRC check will be performed by HW subsequently and automatically.

If customers want to enable CRC check, we suggest do it in the last step at factory. Hardware of Realtek already provides the ability to calculate the CRC even if the related keys are read-forbidden, for customers, software only needs to trigger hardware to do a calculation for all auto-load in security zone (0x200~0x36F), the CRC value is stored by HW and CPU cannot read it out, so software need to trigger hardware to write it into the corresponding CRC entry again.

Random Load

Some hackers may want to crack the OTP content by observing the current. Even the OTP principle is based on the difference of current, but it reads out 32 bits at the same time, also the OTP itself did the balance. From the technology we know now, it’s very hard to distinguish the difference. However, to achieve a supper secure level, a random seed is added to OTP auto-load flow. When HW does secure zone auto-load, the random seed comes from two different clocks, and the auto-load scheme is not published to the public.

Multi-time Load

The PSA area and CRC entries can’t be protected by the above strategy, here we use a multi-time load scheme to prevent it from being cracked. Both PSA and CRC will be loaded more than one time, and the final result is the “or operation” of multi-read.

Protected in RMA Mode

RMA means Return Material Authorization. When customers have already programmed their keys or security materials into the security zone, and then suspect that there are some defects with the chip, they need Realtek’s help to analyze, but do not want Realtek to touch any of their security materials. That is why this security area needs to be protected in RMA mode.

RMA mode can be achieved by programming the first byte of PSA (Life Status) in hidden OTP.

  • If the number of 1 in this byte is even, it means that the chip is in normal mode and the access permission to each zone is determined by configuration area.

  • If the number of 1 in this byte is odd, it means that the chip is in RMA mode, writing to security zone is forbidden and reading from this zone always returns 1.

  • If all bit is zero, enter decommissioned state and cannot exit.

Security zone access control is illustrated below.

../../rst_um/1_otpc/figures/security_zone_access_control.svg

In RMA mode, HW cannot access the whole security zone and user-defined physical zone, because the 0x200~0x4FF zone is all 0xFF, just like a new chip. However, we don’t want anyone to have the ability to look inside into the chip. So in this case, HW will always load SWD Key into core-sight, customers need to offer the SWD key to Realtek. Moreover, if the RMA Key is programmed (not all 0xFF), the ROM boot code will enable secure boot, customers also need to offer the secure boot key pair to Realtek or help Realtek do signature.

The PSA has 8 bits to control the life cycle of the device, because all zero is reserved for the decommissioned state, so one device can be programed to RMA mode 3 times at most. And customers need to program the chip to RMA mode before shipping the chip to Realtek, because Realtek cannot program OTP without the customer’s help.

The SWD key and SWD ID are designed to prevent from unexpected debug. You may write different keys to each device, and need to get the SWD ID by J-Link first, then find the SWD key in your database. Finally, use the SWD key to enable the debug function.

Note

It is the most convenient way to get SWD ID by J-Link.

Decommissioned Mode

When the PSA byte is programed with all bits cleared (0), the device transitions into a decommissioned status, and entering this state requires a system reset. In Decommissioned mode, the behavior is same as RMA mode, moreover, CPU always boot fail.

Load Order

When the Keys are auto-loaded to HW, some of them are using positive order while others using the negative order. The Keys that may be used by IPSEC all use negative order, so that it can get the same results with mbedtls. The definition of load order is illustrated in the following figures.

../../rst_um/1_otpc/figures/positive_load_order.svg
../../rst_um/1_otpc/figures/negative_load_order.svg

ROM Code Patch Zone

The ROM code patch zone stores the ROM code in a Realtek-defined format, and the format won’t be published to the public. This area is 512 bytes and divided into two parts. In case the ROM code patch only needs less than 256 bytes, another part can be used for other purposes.

ROM code patch can always be read. But in PSA area, the two bits ROM_PATCH_LWE and ROM_PATCH_HWE are used to control write permission to this zone.

  • If ROM_PATCH_LWE is programmed, the 0x500~0x5FF cannot be programmed anymore.

  • If ROM_PATCH_HWE is programmed, the 0x600~0x6FF cannot be programmed anymore.

For secure concerns, the ROM_PATCH_LWE is always suggested to be programmed in the factory. The low 256 bytes of ROM code patch zone (0x500~0x5FF) is not allowed for other usages. If you want to use the high 256 bytes (0x600~0x6FF), you should guarantee that the bit ROM_PATCH_LWE is programmed and the last 4 bytes of the low 256 bytes is empty (0x5FC = 0xFFFFFFFF).

ROM code patch area is illustrated below.

../../rst_um/1_otpc/figures/rom_code_patch_area.svg

Hidden Physical Zone

The hidden physical zone contains some RMA keys and the Realtek’s calibration data. Users can only program the RMA-related area.

In this area, two keys have their own read protection and write protection. These two keys will be auto-loaded to the HW.

  • For SWD Key, a non-programmed value means that the key is all 0xFF.

  • For secure boot public key hash, a non-programmed value means that the secure boot is disabled in RMA mode.

Offset

Bit

Symbol

Description

HW address

HW INI

0x700

[7:0]

RMA

Life State(secure access only)

HW should auto-load life state first when boot. The default value is 0xFF and it’s in normal mode.

When this field is programmed and the most significant 0 bit is even (bit 0,2,4,6), the device is in RMA mode. If this filed is all 0, the device is in decommissioned state; otherwise, it is in normal mode.

System register

8’hff

0x701

[1:0]

ROM_PATCH_EN

ROM path enable

This bit will be programmed by FT if ROM patch does not needed.

System register

1’h1

0x701

[2]

ROM_PATCH_LWE1

ROM patch write protection (protecting low 256 bits):500~51f

No-readable register

1’b1

0x701

[3]

ROM_PATCH_LWE2

ROM patch write protection (protecting low 256bits):520~53f

No-readable register

1’b1

0x701

[4]

ROM_PATCH_LWE3

ROM patch write protection (protecting low 256bits):540~55f

No-readable register

1’b1

0x701

[5]

ROM_PATCH_LWE4

ROM patch write protection (protecting low 256bits):560~57f

No-readable register

1’b1

0x701

[6]

ROM_PATCH_LWE5

ROM patch write protection (protecting low 256bits):580~5ff

No-readable register

1’b1

0x701

[7]

ROM_PATCH_HWE

ROM patch write protection (protecting high 2K bits)

No-readable register

4’b1f

0x702

[0]

RMA_SWD_PWD_R_Protection_EN

SWD Key read protection

No-readable register

1’b1

0x702

[1]

RMA_SWD_PWD_W_Forbidden_EN

SWD Key write protection

No-readable register

1’b1

0x702

[2]

RMA_PK_W_Forbidden_EN

RMA PK write protection

No-readable register

1’b1

0x702

[7:3]

RSVD

Reserved

4’h3f

0x703

[7:0]

RSVD

Reserved for PSA

0x704~0x70F

ADC calibration 0

ADC calibration data 0

0x710~0x71F

RMA SWD Key

SWD password in RMA mode, positive order

Core-Sight internal register

128’hff

0x720~0x73F

RMA Secure Boot Key

Secure boot public key in RMA mode

System register

256’hff