blob: b3c9db46cb9416416b9c17799be11c6d54f77eed [file] [log] [blame]
Potin Laifc738002022-05-25 19:42:58 +08001#!/bin/bash
2
3SLED_ID=$1
4SERVICE_NAME="xyz.openbmc_project.Inventory.Manager"
5PRESENT_OBJPATH="/xyz/openbmc_project/inventory/system/chassis/presence/presence_sled${SLED_ID}"
6DBUS_PROPERTY_INTF="org.freedesktop.DBus.Properties"
7
8bind_i2c_driver()
9{
10 I2C_BUS_ADDR=$1
11 DRIVER_NAME=$2
12 DRIVER_DIR="/sys/bus/i2c/drivers/${DRIVER_NAME}"
13 if [ ! -e "${DRIVER_DIR}/${I2C_BUS_ADDR}" ]; then
14 echo "${I2C_BUS_ADDR}" > "${DRIVER_DIR}"/bind
15 fi
16}
17
18unbind_i2c_driver()
19{
20 I2C_BUS_ADDR=$1
21 DRIVER_NAME=$2
22 DRIVER_DIR="/sys/bus/i2c/drivers/${DRIVER_NAME}"
23 if [ -e "${DRIVER_DIR}/${I2C_BUS_ADDR}" ]; then
24 echo "${I2C_BUS_ADDR}" > "${DRIVER_DIR}"/unbind
25 fi
26}
27
28sled_insert_action()
29{
30 SLED_ID=$1
31 I2C_BUS_NUM=$((SLED_ID-1))
32
33 # 0022: fusb302
34 bind_i2c_driver "${I2C_BUS_NUM}-0022" "typec_fusb302"
35
36 # 0045: ina230
37 bind_i2c_driver "${I2C_BUS_NUM}-0045" "ina2xx"
38
39 # 0040: mp5023
40 bind_i2c_driver "${I2C_BUS_NUM}-0040" "mp5023"
41
42 # 0041: pca9536
43 bind_i2c_driver "${I2C_BUS_NUM}-0041" "pca953x"
44
45 # 0076: pca9539
46 bind_i2c_driver "${I2C_BUS_NUM}-0076" "pca953x"
47
48 # 004f: tmp421
49 bind_i2c_driver "${I2C_BUS_NUM}-004f" "tmp421"
50
51 # 0067: pca9552
52 bind_i2c_driver "${I2C_BUS_NUM}-0067" "leds-pca955x"
53
54 # 0054: 24c64
55 bind_i2c_driver "${I2C_BUS_NUM}-0054" "at24"
Potin Laic525de72022-06-14 19:31:52 +080056
57 # start bletchley-sled-insertion target
58 /bin/systemctl start bletchley-sled-insertion@"${SLED_ID}".target
Potin Laifc738002022-05-25 19:42:58 +080059}
60
61sled_remove_action()
62{
63 SLED_ID=$1
64 I2C_BUS_NUM=$((SLED_ID-1))
65
66 # 0022: fusb302
67 unbind_i2c_driver "${I2C_BUS_NUM}-0022" "typec_fusb302"
68
69 # # 0045: ina230
70 # unbind_i2c_driver "${I2C_BUS_NUM}-0045" "ina2xx"
71
72 # # 0040: mp5023
73 # unbind_i2c_driver "${I2C_BUS_NUM}-0040" "mp5023"
74
75 # # 0041: pca9536
76 # unbind_i2c_driver "${I2C_BUS_NUM}-0041" "pca953x"
77
78 # # 0076: pca9539
79 # unbind_i2c_driver "${I2C_BUS_NUM}-0076" "pca953x"
80
81 # # 004f: tmp421
82 # unbind_i2c_driver "${I2C_BUS_NUM}-004f" "tmp421"
83
84 # # 0067: pca9552
85 # unbind_i2c_driver "${I2C_BUS_NUM}-0067" "leds-pca955x"
86
87 # # 0054: 24c64
88 # unbind_i2c_driver "${I2C_BUS_NUM}-0054" "at24"
Potin Laic525de72022-06-14 19:31:52 +080089
90 # start bletchley-sled-removal target
91 /bin/systemctl start bletchley-sled-removal@"${SLED_ID}".target
Potin Laifc738002022-05-25 19:42:58 +080092}
93
94
95dbus-monitor --system "type=signal,interface=${DBUS_PROPERTY_INTF},sender=${SERVICE_NAME},path=${PRESENT_OBJPATH}" |
96while read -r line; do
97 case "$line" in
98 *"boolean false"*)
99 echo "SLED${SLED_ID} Removal"
100 sled_remove_action "$SLED_ID"
101 ;;
102 *"boolean true"*)
103 echo "SLED${SLED_ID} Insertion"
104 sled_insert_action "$SLED_ID"
105 ;;
106 esac
107done
108
109exit 0