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
+}