summaryrefslogtreecommitdiff
path: root/meta-quanta/meta-olympus-nuvoton/recipes-olympus-nuvoton/power/first-boot-set-psu/first-boot-set-psu.sh
diff options
context:
space:
mode:
Diffstat (limited to 'meta-quanta/meta-olympus-nuvoton/recipes-olympus-nuvoton/power/first-boot-set-psu/first-boot-set-psu.sh')
-rw-r--r--meta-quanta/meta-olympus-nuvoton/recipes-olympus-nuvoton/power/first-boot-set-psu/first-boot-set-psu.sh61
1 files changed, 61 insertions, 0 deletions
diff --git a/meta-quanta/meta-olympus-nuvoton/recipes-olympus-nuvoton/power/first-boot-set-psu/first-boot-set-psu.sh b/meta-quanta/meta-olympus-nuvoton/recipes-olympus-nuvoton/power/first-boot-set-psu/first-boot-set-psu.sh
new file mode 100644
index 000000000..04b447615
--- /dev/null
+++ b/meta-quanta/meta-olympus-nuvoton/recipes-olympus-nuvoton/power/first-boot-set-psu/first-boot-set-psu.sh
@@ -0,0 +1,61 @@
+#!/bin/bash
+
+string=''
+pmbus_read() {
+ data=$(i2cget -f -y $1 $2 $3 i $4)
+
+ if [[ -z "$data" ]]; then
+ echo "i2c$1 device $2 command $3 error" >&2
+ exit 1
+ fi
+
+ arry=$(echo ${data} | sed -e "s/$4\: //" | sed -e "s/\0x00//g" | sed -e "s/\0xff//g" | sed -e "s/\0x7f//g" | sed -e "s/\0x0f//g" | sed -e "s/\0x14//g")
+
+ string=''
+ for d in ${arry}
+ do
+ hex=$(echo $d | sed -e "s/0\x//")
+ string+=$(echo -e "\x${hex}");
+ done
+}
+
+update_inventory() {
+ INVENTORY_SERVICE='xyz.openbmc_project.Inventory.Manager'
+ INVENTORY_OBJECT='/xyz/openbmc_project/inventory'
+ INVENTORY_PATH='xyz.openbmc_project.Inventory.Manager'
+ OBJECT_PATH="/system/chassis/motherboard/powersupply$1"
+ busctl call \
+ ${INVENTORY_SERVICE} \
+ ${INVENTORY_OBJECT} \
+ ${INVENTORY_PATH} \
+ Notify a{oa{sa{sv}}} 1 \
+ ${OBJECT_PATH} 1 $2 $3 \
+ $4 $5 $6
+}
+
+if [ $# -eq 0 ]; then
+ echo 'No PSU device is given' >&2
+ exit 1
+fi
+
+input=$(echo $1 | tr "-" " ")
+arr=(${input// / });
+
+
+pmbus_read ${arr[1]} ${arr[2]} 0x99 11
+update_inventory ${arr[0]} "xyz.openbmc_project.Inventory.Decorator.Asset" 1 "Manufacturer" "s" $string
+
+pmbus_read ${arr[1]} ${arr[2]} 0x9a 11
+update_inventory ${arr[0]} "xyz.openbmc_project.Inventory.Decorator.Asset" 1 "Model" "s" $string
+
+pmbus_read ${arr[1]} ${arr[2]} 0xad 21
+update_inventory ${arr[0]} "xyz.openbmc_project.Inventory.Decorator.Asset" 1 "PartNumber" "s" $string
+
+pmbus_read ${arr[1]} ${arr[2]} 0x9e 18
+update_inventory ${arr[0]} "xyz.openbmc_project.Inventory.Decorator.Asset" 1 "SerialNumber" "s" $string
+
+update_inventory ${arr[0]} "xyz.openbmc_project.Inventory.Decorator.Cacheable" 1 "Cached" "b" "true"
+update_inventory ${arr[0]} "xyz.openbmc_project.Inventory.Decorator.Replaceable" 1 "FieldReplaceable" "b" "true"
+update_inventory ${arr[0]} "xyz.openbmc_project.Inventory.Item" 1 "Present" "b" "true"
+update_inventory ${arr[0]} "xyz.openbmc_project.Inventory.Item" 1 "PrettyName" "s" "powersupply${arr[0]}"
+update_inventory ${arr[0]} "xyz.openbmc_project.Inventory.Item.PowerSupply" 0