summaryrefslogtreecommitdiff
path: root/meta-ampere/meta-mitchell/recipes-ampere/platform/ampere-platform-init/mtmitchell_platform_gpios_init.sh
blob: 57a951abda674d13cb86b26a28a2502edcafb81f (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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#!/bin/bash

# shellcheck disable=SC2046

function bind_rtc_driver() {
    # If rtc device can not present, bind the device
    if [[ ! -e /dev/rtc0 ]]; then
        echo "Bind rtc driver"
        echo 6-0051 > /sys/bus/i2c/drivers/rtc-pcf85063/bind
    fi
}

function pre-platform-init() {
    echo "Do pre platform init"
}

function post-platform-init() {

    # When BMC is rebooted, because PSON_L has pull up to P3V3_STB, it changes its
    # value to HIGH. Add code to check P3V3_STB and recover PSON_L to correct state
    # before setting BMC_RDY.
    pgood=$(gpioget $(gpiofind power-chassis-good))
    if [ "$pgood" == '1' ]; then
        echo "PSU is on. Setting PSON to 0"
        gpioset $(gpiofind power-chassis-control)=0
    else
        echo "PSU is off. Setting PSON to 1"
        gpioset $(gpiofind power-chassis-control)=1
    fi

    gpioset $(gpiofind host0-sysreset-n)=1

    # gpio-leds is controlling bmc-ready, not by gpio
    echo 1 > /sys/class/leds/bmc-ready/brightness

    echo "Set default FAN speed to 60%"
    for filename in /sys/class/hwmon/*/pwm*
    do
        echo 153 > "$filename"
    done

    # Bind rtc driver
    bind_rtc_driver
}

export output_high_gpios_in_ac=(
    # add device enable, mux setting, device select gpios
    "spi0-backup-sel"
    "i2c-backup-sel"
)

export output_low_gpios_in_ac=(
    # add device enable, mux setting, device select gpios
    "spi0-program-sel"
    "ocp-main-pwren"
)

export input_gpios_in_ac=(
    # add device enable, mux setting, device select gpios
)

export output_high_gpios_in_bmc_reboot=(
    "host0-sysreset-n"
    "host0-pmin-n"
    "bmc-debug-mode"
    "vrd-sel"
    "spd-sel"
    "ext-high-temp-n"
    "fpga-program-b"
    "wd-disable-n"
    "hpm-stby-rst-n"
    "jtag-sel-s0"
    "cpld-user-mode"
    "jtag-srst-n"
    "host0-shd-req-n"
)

export output_low_gpios_in_bmc_reboot=(
    "rtc-battery-voltage-read-enable"
    "s0-rtc-lock"
    "hpm-fw-recovery"
    "led-fault"
    "spi-nor-access"
    "host0-special-boot"
)

export input_gpios_in_bmc_reboot=(
    "s0-vrd-fault-n"
    "s1-vrd-fault-n"
    "irq-n"
    "presence-ps0"
    "presence-ps1"
    "hsc-12vmain-alt2-n"
    "eth-phy-int-n"
    "s0-pcp-oc-warn-n"
    "s1-pcp-oc-warn-n"
    "cpu-bios-recover"
    "s0-heartbeat"
    "hs-scout-proc-hot"
    "s0-vr-hot-n"
    "s1-vr-hot-n"
    "hsc-12vmain-alt1-n"
    "power-chassis-good"
    "s0-ddr-save"
    "soc-spi-nor-access"
    "presence-cpu0"
    "jtag-dbgr-prsnt-n"
    "ps0-ac-loss-n"
    "ps1-ac-loss-n"
    "s1-ddr-save"
    "sys-pgood"
    "presence-cpu1"
    "s0-fault-alert"
    "s0-sys-auth-failure-n"
    "host0-ready"
    "ocp-pgood"
    "s1-fault-alert"
    "s1-fw-boot-ok"
    "s0-spi-auth-fail-n"
    "s1-sys-auth-failure-n"
    "cpld-s1-spi-auth-fail-n"
    "ps0-pgood"
    "ps1-pgood"
    "s0-soc-pgood"
)