meta-facebook: catalina: catalina-sys-init: enhance i2c bind
We saw catalina-sys-init service failed at bind command somtimes due to
the device already bound.
Implement bind_12c_device() function, Enhance the bind_12c_device()
function to include a check that determines whether the device is
already bound. The function should only execute the bind command if the
device is not currently bound.
Test results:
catalina-sys-init finished successfully.
```
root@bmc:~# systemctl status catalina-sys-init
○ catalina-sys-init.service - Catalina Early System Init
Loaded: loaded (/usr/lib/systemd/system/catalina-sys-init.service; enabled; preset: enabled)
Active: inactive (dead) since Thu 2024-08-22 09:21:20 PDT; 25s ago
Process: 362 ExecStart=/usr/libexec/catalina/catalina-early-sys-init (code=exited, status=0/SUCCESS)
Main PID: 362 (code=exited, status=0/SUCCESS)
CPU: 770ms
Aug 22 09:21:17 bmc Catalina Early Init[364]: set_gpio: set stby_power_gd_cpld = 1 success
Aug 22 09:21:17 bmc Catalina Early Init[364]: set_gpio: can not find gpio, USB_HUB_RESET_L
Aug 22 09:21:18 bmc Catalina Early Init[364]: set_gpio: can not find gpio, USB_HUB_RESET_L
Aug 22 09:21:18 bmc Catalina Early Init[364]: set_gpio: set HMC_PGOOD = 1 success
Aug 22 09:21:18 bmc Catalina Early Init[364]: set_gpio: set EROT_FPGA_RST_L = 1 success
Aug 22 09:21:18 bmc Catalina Early Init[364]: set_gpio: set SEC_EROT_FPGA_RST_L = 1 success
Aug 22 09:21:18 bmc Catalina Early Init[364]: set_gpio: set HMC_EROT_RST_L = 1 success
Aug 22 09:21:18 bmc Catalina Early Init[364]: set_gpio: set SCM_HPM_STBY_RST_N = 1 success
Aug 22 09:21:20 bmc systemd[1]: catalina-sys-init.service: Deactivated successfully.
Aug 22 09:21:20 bmc systemd[1]: Finished Catalina Early System Init.
```
Change-Id: I5284b119ff0d6064f421ddb068132440967406d1
Signed-off-by: Potin Lai <potin.lai@quantatw.com>
diff --git a/meta-facebook/recipes-fb/obmc_functions/files/fb-common-functions b/meta-facebook/recipes-fb/obmc_functions/files/fb-common-functions
index b04332a..d073b66 100644
--- a/meta-facebook/recipes-fb/obmc_functions/files/fb-common-functions
+++ b/meta-facebook/recipes-fb/obmc_functions/files/fb-common-functions
@@ -37,3 +37,15 @@
echo " success"
return 0
}
+
+bind_i2c_device()
+{
+ DRIVER_NAME="$1"
+ DEV_BUS_ADDR="$2"
+ DRIVER_DIR_PATH="/sys/bus/i2c/drivers/${DRIVER_NAME}"
+ DRIVER_BIND_PATH="${DRIVER_DIR_PATH}/bind"
+ if [ ! -L "${DRIVER_DIR_PATH}/${DEV_BUS_ADDR}" ]; then
+ echo "bind_i2c_device: $DRIVER_NAME, $DEV_BUS_ADDR"
+ echo "${DEV_BUS_ADDR}" > "${DRIVER_BIND_PATH}"
+ fi
+}