Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #! /bin/bash
- SID_PRCTL=0x03006040
- SID_PRKEY=0x03006050
- SID_RDKEY=0x03006060
- BIT() {
- echo $(( 1 << $1 ))
- }
- SID_OP_LOCK=$((0xAC))
- SID_READ=$(BIT 1)
- SID_WRITE=$(BIT 2)
- INDEX_OFFSET=16
- INDEX_MASK=$(( 0x1ff << $INDEX_OFFSET ))
- OP_OFFSET=8
- OP_MASK=$(( 0xff << $OP_OFFSET ))
- RW_MASK=$(( $SID_READ | $SID_WRITE ))
- readl() {
- while ! ./sunxi-fel readl $1; do
- true
- done
- }
- writel() {
- while ! ./sunxi-fel writel $2 $1; do
- true
- done
- }
- dec2hex() {
- printf 0x%x $1
- }
- hex2dec() {
- echo $(($1))
- }
- sid_read_key() {
- local reg_val
- reg_val=$(readl $SID_PRCTL)
- reg_val=$(( $reg_val & (~$INDEX_MASK) ))
- reg_val=$(( $reg_val & (~$RW_MASK) ))
- reg_val=$(( $reg_val | ($1 << $INDEX_OFFSET) ))
- writel $reg_val $SID_PRCTL
- reg_val=$(( $reg_val & (~$OP_MASK) ))
- reg_val=$(( $reg_val & (~$RW_MASK) ))
- reg_val=$(( $reg_val | ($SID_OP_LOCK << $OP_OFFSET) ))
- reg_val=$(( $reg_val | $SID_READ ))
- writel $reg_val $SID_PRCTL
- while (( $(readl $SID_PRCTL) & $SID_READ ))
- do
- true
- done
- reg_val=$(( $reg_val & (~$INDEX_MASK) ))
- reg_val=$(( $reg_val & (~$OP_MASK) ))
- reg_val=$(( $reg_val & (~$RW_MASK) ))
- writel $reg_val $SID_PRCTL
- readl $SID_RDKEY
- }
- sid_write_key() {
- local reg_val
- writel $2 $SID_PRKEY
- reg_val=$(readl $SID_PRCTL)
- reg_val=$(( $reg_val & (~((0x1ff<<16)|0x3)) ))
- reg_val=$(( $reg_val | ($1 << $INDEX_OFFSET) ))
- writel $reg_val $SID_PRCTL
- reg_val=$(( $reg_val & (~((0xff<<8)|0x3)) ))
- reg_val=$(( $reg_val | ((SID_OP_LOCK<<8) | 0x1) ))
- writel $reg_val $SID_PRCTL
- while (( $(readl $SID_PRCTL) & $SID_READ ))
- do
- true
- done
- reg_val=$(( $reg_val & (~((0x1ff<<16)|(0xff<<8)|0x3)) ))
- writel $reg_val $SID_PRCTL
- }
- # Enable secure boot in eFuse by writing value of LCJS at offset 0x48
- echo $(sid_write_key 0x48 0x00008800)
- # Write SHA256 of public key in eFuse
- echo $(sid_write_key 0x70 0xe9e6181a) $(sid_write_key 0x74 0x5fb19a8f) $(sid_write_key 0x78 0xf91d6e62) $(sid_write_key 0x7c 0x652b9fd8)
- echo $(sid_write_key 0x80 0x3573e89e) $(sid_write_key 0x84 0x6f9c3d21) $(sid_write_key 0x88 0xa8f92947) $(sid_write_key 0x8c 0xf5326ac5)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement