summaryrefslogtreecommitdiff
path: root/meta-openbmc-mods/meta-common/recipes-intel/configure-usb-c/files/configure-usb-c.sh
blob: c7cc4a231d51d7e3665d84a76bda3859e1aed98e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/bin/bash

I2C_BUS=7
CHIP_ADDR=0x47

read_id() {
    local idx=0
    local result=0
    local value=0
    for ((idx=0; idx<6; idx++))
    do
        typeset -i value=$(gpioget $(gpiofind "FM_BMC_BOARD_SKU_ID${idx}_N"))
        value=$((value << idx))
        result=$((result | value))
    done
    echo $result
}

BOARD_ID=$(read_id)
if grep -q 'CPU part\s*: 0xc07' /proc/cpuinfo; then # AST2600
    if [[ $BOARD_ID == 62 || $BOARD_ID == 61 ]]; then
        # Write 0x01 data into General Control Register (offset 0x0A)
        # Write 0x21 data into General Control Register (offset 0x0A)
        # Write 0x80 data into Connection Status Register (offset 0x08)
        # Write 0x20 data into General Control Register (offset 0x0A)
        i2cset -y $I2C_BUS $CHIP_ADDR 0x0a 0x01; i2cset -y $I2C_BUS $CHIP_ADDR 0x0a 0x21; i2cset -y $I2C_BUS $CHIP_ADDR 0x08 0x80; i2cset -y $I2C_BUS $CHIP_ADDR 0x0a 0x20
        echo "Configured USB Type C controller"
    fi
fi