From a121475a64c3fd9d4c431f81e7d24be1dd1377fa Mon Sep 17 00:00:00 2001 From: Max Date: Thu, 22 Jun 2017 20:31:27 +0200 Subject: [PATCH] Import lc15-sysdev-remap from meta-nrw-bsp Note: the script is imported as-is, but .bb file is modified because we use .service file from previous patch instead of init file. I'm not familiar enough with bitbake to be sure that the changes are correct so I'd appreciate thorough review. --- .../lc15-sysdev-remap/files/lc15-sysdev-remap | 434 ++++++++++++++++++ .../lc15-sysdev-remap_1.0.bb | 28 ++ 2 files changed, 462 insertions(+) create mode 100755 recipes-support/lc15-sysdev-remap/files/lc15-sysdev-remap create mode 100644 recipes-support/lc15-sysdev-remap/lc15-sysdev-remap_1.0.bb diff --git a/recipes-support/lc15-sysdev-remap/files/lc15-sysdev-remap b/recipes-support/lc15-sysdev-remap/files/lc15-sysdev-remap new file mode 100755 index 0000000..b6dfda8 --- /dev/null +++ b/recipes-support/lc15-sysdev-remap/files/lc15-sysdev-remap @@ -0,0 +1,434 @@ +#!/bin/sh +# This script performs symbolic linking all available system devices +# related to Litecell15 platform to a easy to reach location in filesystem +# +# Author: Minh-Quang Nguyen +# +# Licensed under terms of BSD + +VERSION="0.8" +LOG_FILE='lc15_sysdev_remap.log' +CWD=`pwd` +VERBOSE='' +__USESYSLOG=1 + +# Temp sensors coming from hwmon +declare -a TEMP_DEV_MAP=( + '/var/lc15/temp/main-supply/x' + '/var/lc15/temp/pa0/x' + '/var/lc15/temp/pa1/x' + '/var/lc15/temp/tx0/x' + '/var/lc15/temp/tx1/x' + '/var/lc15/temp/rmsdet/x' + '/var/lc15/temp/ocxo/x' + '/var/lc15/temp/fpga/x' +) + +# Temp sensors coming from thermal zones +declare -a TEMPTH_DEV_MAP=( + '/var/lc15/temp/dsp/x' + '/var/lc15/temp/cpu/x' + '/var/lc15/temp/core/x' + '/var/lc15/temp/iva/x' + '/var/lc15/temp/gpu/x' +) + +declare -a OCXO_DAC_DEV_MAP=( + '/var/lc15/ocxo/x' +) + +declare -a PA_SUPPLY_DEV_MAP=( + '/var/lc15/pa-supply/x' +) + +declare -a PA_STATE_DEV_MAP=( + '/var/lc15/pa-state/pa0/x' + '/var/lc15/pa-state/pa1/x' +) + +declare -a ETH_DEV_MAP=( + '/var/lc15/net/eth0/x' + '/var/lc15/net/eth1/x' +) + +declare -a PWR_SENSING_DEV_MAP=( + '/var/lc15/pwr-sense/main-supply/x' + '/var/lc15/pwr-sense/pa0/x' + '/var/lc15/pwr-sense/pa1/x' +) + +declare -a FPGA_SENSING_DEV_MAP=( + '/var/lc15/pwr-sense/fpga/x' +) + +declare -a RF_SENSING_DEV_MAP=( + '/var/lc15/rf-sense/fwd/x' + '/var/lc15/rf-sense/refl/x' +) + +declare -a LED_DEV_MAP=( + '/var/lc15/leds/led0/x' + '/var/lc15/leds/led1/x' +) + +declare -a OPT_DEV_MAP=( + '/var/lc15/platform/x' +) + +declare -a CLKERR_DEV_MAP=( + '/var/lc15/clkerr/x' +) + +declare -a VSWR_DEV_MAP=( + '/var/lc15/vswr/tx0/x' + '/var/lc15/vswr/tx1/x' +) + +function log_write() +{ + if [ ${__USESYSLOG} -eq 0 ]; then + echo "$*" + else + logger -p local7.info "$*" + fi +} + +function execute() +{ + $* > /dev/null + if [ $? -ne 0 ]; then + echo "ERROR: executing $*" + if [ ${__USESYSLOG} -ne 0 ]; then + logger -p local7.info "ERROR: $*" + fi + fi +} + +function version() +{ + echo + echo "`basename $1` version ${VERSION}" + echo "Script to create symbolic links of available sensors for Litecell15 platform" + echo + exit 0 +} + +function usage() +{ +cat <> /etc/syslog.conf + #execute "/etc/init.d/syslog restart" + __USESYSLOG=0 +} + +############################################# +# +# Main routine +# +############################################# + +# Parse the input options +while getopts :dvh ARG +do + case ${ARG} in + d ) VERBOSE=1;; + v ) version $0;; + h ) usage;; + \?) echo "Invalid option: -$OPTARG" && exit 1;; + esac +done + +#checking for syslog configuration +grep ${LOG_FILE} -r /etc/syslog.conf > /dev/null 2>&1 +if [ $? -ne 0 ]; then + echo 'WARNING: Syslog for Litecell15 system devices remapping is not enabled (using console output)' + syslog_config +fi + +#get Kernel major and minor version +KERNEL_MAJ=`uname -r | head -n1 | cut -d'.' -f1` +KERNEL_MIN=`uname -r | head -n1 | cut -d'.' -f2` +KERNEL_REL=`uname -r | head -n1 | cut -d'.' -f3` + +if [ ! -z ${VERBOSE} ]; then + echo 'Kernel version :' ${KERNEL_MAJ}.${KERNEL_MIN}.${KERNEL_REL} +fi + +log_write "Litecell15 system devices remapping script started" + +#temperature sensor device name coming from hwmon +declare -a TEMP_DEV_NAMES=( '2-0048' '4-0048' '1-0048' 'ncp15xh103_tx0' 'ncp15xh103_tx1' 'ncp15xh103_rmsdet' 'ncp15xh103_ocxo' 'iio_hwmon') +for (( i=0; i<${#TEMP_DEV_NAMES[@]}; i++)) +do + TEMP_DEV_PATHS[${i}]=`find /sys/devices -name 'temp*_input' | grep ${TEMP_DEV_NAMES[${i}]} | head -n1` + + if [ ! -z ${TEMP_DEV_PATHS[${i}]} ]; then + if [ ! -z ${VERBOSE} ]; then + echo ${TEMP_DEV_PATHS[${i}]} + fi + SRC_DIR=$(echo $(dirname ${TEMP_DEV_PATHS[${i}]})) + DST_DIR=$(echo $(dirname ${TEMP_DEV_MAP[${i}]})) + [ ! -d ${DST_DIR} ] && execute "mkdir -p ${DST_DIR}" + execute "ln -sf ${SRC_DIR}/temp1_input ${DST_DIR}/temp" + execute "ln -sf ${SRC_DIR} ${DST_DIR}/hwmon" + else + log_write "Can not find temperature sensor device" ${TEMP_DEV_NAMES[${i}]} + fi +done + +#temperature sensor device name coming from thermal zones +declare -a TEMPTH_DEV_NAMES=( 'dspeve' 'cpu' 'core' 'iva' 'gpu') +for (( i=0; i<${#TEMPTH_DEV_NAMES[@]}; i++)) +do + TEMPTH_DEV_IDS[${i}]=`grep ${TEMPTH_DEV_NAMES[${i}]} -r /sys/class/thermal/thermal_zone*/type | head -n1 | cut -d'/' -f5` + if [ ! -z ${TEMPTH_DEV_IDS[${i}]} ]; then + TEMPTH_DEV_PATHS[${i}]=`find /sys/devices -name 'temp' | grep ${TEMPTH_DEV_IDS[${i}]} | head -n1` + if [ ! -z ${TEMPTH_DEV_PATHS[${i}]} ]; then + if [ ! -z ${VERBOSE} ]; then + echo ${TEMPTH_DEV_PATHS[${i}]} + fi + SRC_DIR=$(echo $(dirname ${TEMPTH_DEV_PATHS[${i}]})) + DST_DIR=$(echo $(dirname ${TEMPTH_DEV_MAP[${i}]})) + [ ! -d ${DST_DIR} ] && execute "mkdir -p ${DST_DIR}" + execute "ln -sf ${SRC_DIR}/temp ${DST_DIR}/temp" + execute "ln -sf ${SRC_DIR} ${DST_DIR}/thermal" + else + log_write "Can not find temperature thermal device" ${TEMPTH_DEV_NAMES[${i}]} + fi + else + log_write "Can not find temperature thermal device id" ${TEMPTH_DEV_NAMES[${i}]} + fi +done + +#OCXO control device name +OCXO_DAC_DEV_NAME='iio:device' +OCXO_DAC_DEV_PATH=`find /sys/devices/platform -name 'store_eeprom' | grep ${OCXO_DAC_DEV_NAME} | head -n1` +if [ ! -z ${OCXO_DAC_DEV_PATH} ]; then + if [ ! -z ${VERBOSE} ]; then + echo ${OCXO_DAC_DEV_PATH} + fi + SRC_DIR=$(echo $(dirname ${OCXO_DAC_DEV_PATH})) + DST_DIR=$(echo $(dirname ${OCXO_DAC_DEV_MAP})) + [ ! -d ${DST_DIR} ] && execute "mkdir -p ${DST_DIR}" + execute "ln -sf ${SRC_DIR}/out_voltage0_raw ${DST_DIR}/voltage" + execute "ln -sf ${SRC_DIR}/store_eeprom ${DST_DIR}/eeprom" + execute "ln -sf ${SRC_DIR} ${DST_DIR}/hwmon" +else + log_write "Can not find OCXO DAC device" ${OCXO_DAC_DEV_NAME} +fi + +#PA supply device name +PA_SUPPLY_DEV_NAME='pa-supply' +PA_SUPPLY_DEV_PATH=`find /sys/devices/platform -name '*_microvolts' | grep ${PA_SUPPLY_DEV_NAME} | head -n1` +if [ ! -z ${PA_SUPPLY_DEV_PATH} ]; then + if [ ! -z ${VERBOSE} ]; then + echo ${PA_SUPPLY_DEV_PATH} + fi + SRC_DIR=$(echo $(dirname ${PA_SUPPLY_DEV_PATH})) + DST_DIR=$(echo $(dirname ${PA_SUPPLY_DEV_MAP})) + [ ! -d ${DST_DIR} ] && execute "mkdir -p ${DST_DIR}" + execute "ln -sf ${SRC_DIR}/min_microvolts ${DST_DIR}" + execute "ln -sf ${SRC_DIR}/max_microvolts ${DST_DIR}" + execute "ln -sf ${SRC_DIR} ${DST_DIR}/hwmon" +else + log_write "Can not find PA state sensor device" ${PA_SUPPLY_DEV_NAME} +fi + +#PA state device +declare -a PA_STATE_DEV_NAMES=( 'pa0' 'pa1' ) +for (( i=0; i<${#PA_STATE_DEV_NAMES[@]}; i++)) +do + PA_STATE_DEV_PATHS[${i}]=`find /sys/devices/platform -name 'state' | grep ${PA_STATE_DEV_NAMES[${i}]} | head -n1` + + if [ ! -z ${PA_STATE_DEV_PATHS[${i}]} ]; then + if [ ! -z ${VERBOSE} ]; then + echo ${PA_STATE_DEV_PATHS[${i}]} + fi + SRC_DIR=$(echo $(dirname ${PA_STATE_DEV_PATHS[${i}]})) + DST_DIR=$(echo $(dirname ${PA_STATE_DEV_MAP[${i}]})) + [ ! -d ${DST_DIR} ] && execute "mkdir -p ${DST_DIR}" + execute "ln -sf ${SRC_DIR}/state ${DST_DIR}" + execute "ln -sf ${SRC_DIR} ${DST_DIR}/hwmon" + else + log_write "Can not find PA state sensor device" ${PA_STATE_DEV_NAMES[${i}]} + fi +done + +#Ethernet devices +declare -a ETH_DEV_NAMES=( 'eth0' 'eth1' ) +for (( i=0; i<${#ETH_DEV_NAMES[@]}; i++)) +do + ETH_DEV_PATHS[${i}]=`find /sys/devices/platform -name 'address' | grep ${ETH_DEV_NAMES[${i}]} | head -n1` + + if [ ! -z ${ETH_DEV_PATHS[${i}]} ]; then + if [ ! -z ${VERBOSE} ]; then + echo ${ETH_DEV_PATHS[${i}]} + fi + SRC_DIR=$(echo $(dirname ${ETH_DEV_PATHS[${i}]})) + DST_DIR=$(echo $(dirname ${ETH_DEV_MAP[${i}]})) + [ ! -d ${DST_DIR} ] && execute "mkdir -p ${DST_DIR}" + execute "ln -sf ${SRC_DIR}/address ${DST_DIR}" + execute "ln -sf ${SRC_DIR} ${DST_DIR}/hwmon" + else + log_write "Can not find Ethernet device" ${ETH_DEV_NAMES[${i}]} + fi +done + +#Voltage and current sensing devices +declare -a PWR_SENSING_DEV_NAMES=( '0040' '0044' '0045' ) +for (( i=0; i<${#PWR_SENSING_DEV_NAMES[@]}; i++)) +do + PWR_SENSING_DEV_PATHS[${i}]=`find /sys/devices/platform -name '*_input' | grep ${PWR_SENSING_DEV_NAMES[${i}]} | head -n1` + + if [ ! -z ${PWR_SENSING_DEV_PATHS[${i}]} ]; then + if [ ! -z ${VERBOSE} ]; then + echo ${PWR_SENSING_DEV_PATHS[${i}]} + fi + SRC_DIR=$(echo $(dirname ${PWR_SENSING_DEV_PATHS[${i}]})) + DST_DIR=$(echo $(dirname ${PWR_SENSING_DEV_MAP[${i}]})) + [ ! -d ${DST_DIR} ] && execute "mkdir -p ${DST_DIR}" + execute "ln -sf ${SRC_DIR}/power1_input ${DST_DIR}/power" + execute "ln -sf ${SRC_DIR}/in1_input ${DST_DIR}/voltage" + execute "ln -sf ${SRC_DIR}/curr1_input ${DST_DIR}/current" + execute "ln -sf ${SRC_DIR} ${DST_DIR}/hwmon" + else + log_write "Can not find voltage/current sensing device" ${PWR_SENSING_DEV_NAMES[${i}]} + fi +done + +#FPGA voltage sensing devices +FPGA_SENSING_DEV_NAME='iio_hwmon' +FPGA_SENSING_DEV_PATH=`find /sys/devices/platform -name '*_input' | grep ${FPGA_SENSING_DEV_NAME} | head -n1` +if [ ! -z ${FPGA_SENSING_DEV_PATH} ]; then + if [ ! -z ${VERBOSE} ]; then + echo ${FPGA_SENSING_DEV_PATH} + fi + SRC_DIR=$(echo $(dirname ${FPGA_SENSING_DEV_PATH})) + DST_DIR=$(echo $(dirname ${FPGA_SENSING_DEV_MAP})) + [ ! -d ${DST_DIR} ] && execute "mkdir -p ${DST_DIR}" + execute "ln -sf ${SRC_DIR}/in1_input ${DST_DIR}/vccint_voltage" + execute "ln -sf ${SRC_DIR}/in2_input ${DST_DIR}/vccaux_voltage" + execute "ln -sf ${FPGA_SENSING_DEV_PATH} ${DST_DIR}/hwmon" +else + log_write "Can not find voltage/current sensing device" ${FPGA_SENSING_DEV_NAME} +fi + +#RF sensing devices +declare -a RF_SENSING_DEV_NAMES=( 'adl5501_rf' 'adl5501_refl') +for (( i=0; i<${#RF_SENSING_DEV_NAMES[@]}; i++)) +do + RF_SENSING_DEV_PATHS[${i}]=`find /sys/devices/platform -name '*_input' | grep ${RF_SENSING_DEV_NAMES[${i}]} | head -n1` + + if [ ! -z ${RF_SENSING_DEV_PATHS[${i}]} ]; then + if [ ! -z ${VERBOSE} ]; then + echo ${RF_SENSING_DEV_PATHS[${i}]} + fi + SRC_DIR=$(echo $(dirname ${RF_SENSING_DEV_PATHS[${i}]})) + DST_DIR=$(echo $(dirname ${RF_SENSING_DEV_MAP[${i}]})) + [ ! -d ${DST_DIR} ] && execute "mkdir -p ${DST_DIR}" + execute "ln -sf ${SRC_DIR}/power1_input ${DST_DIR}/voltage" + execute "ln -sf ${SRC_DIR} ${DST_DIR}/hwmon" + else + log_write "Can not find power sensing device" ${RF_SENSING_DEV_NAMES[${i}]} + fi +done + +#User LEDs +declare -a LED_DEV_NAMES=( 'usr0' 'usr1' ) +for (( i=0; i<${#LED_DEV_NAMES[@]}; i++)) +do + LED_DEV_PATHS[${i}]=`find /sys/devices/platform -name 'trigger' | grep ${LED_DEV_NAMES[${i}]} | head -n1` + + if [ ! -z ${LED_DEV_PATHS[${i}]} ]; then + if [ ! -z ${VERBOSE} ]; then + echo ${LED_DEV_PATHS[${i}]} + fi + + SRC_DIR=$(echo $(dirname ${LED_DEV_PATHS[${i}]})) + DST_DIR=$(echo $(dirname ${LED_DEV_MAP[${i}]})) + [ ! -d ${DST_DIR} ] && execute "mkdir -p ${DST_DIR}" + execute "ln -sf ${SRC_DIR}/brightness ${DST_DIR}" + execute "ln -sf ${SRC_DIR} ${DST_DIR}/class" + else + log_write "Can not find user LED device" ${LED_DEV_NAMES[${i}]} + fi +done + +#Clock error measurement device +CLKERR_DEV_NAME='clkerr' +CLKERR_DEV_PATH=`find /sys/devices/platform -name 'clkerr1_*' | grep ${CLKERR_DEV_NAME} | head -n1` + +if [ ! -z ${CLKERR_DEV_PATH} ]; then + if [ ! -z ${VERBOSE} ]; then + echo ${CLKERR_DEV_PATH} + fi + SRC_DIR=$(echo $(dirname ${CLKERR_DEV_PATH})) + DST_DIR=$(echo $(dirname ${CLKERR_DEV_MAP})) + [ ! -d ${DST_DIR} ] && execute "mkdir -p ${DST_DIR}" + execute "ln -sf ${SRC_DIR}/clkerr1_average ${DST_DIR}" + execute "ln -sf ${SRC_DIR}/clkerr1_average_accuracy ${DST_DIR}" + execute "ln -sf ${SRC_DIR}/clkerr1_average_interval ${DST_DIR}" + execute "ln -sf ${SRC_DIR}/clkerr1_fault ${DST_DIR}" + execute "ln -sf ${SRC_DIR}/refresh ${DST_DIR}" + execute "ln -sf ${SRC_DIR}/reset ${DST_DIR}" + execute "ln -sf ${SRC_DIR} ${DST_DIR}/hwmon" +else + log_write "Can not find user CLKERR device" ${CLKERR_DEV_NAME} +fi + +#VSWR measurement device +declare -a VSWR_DEV_NAMES=( 'tx0' 'tx1' ) +for (( i=0; i<${#VSWR_DEV_NAMES[@]}; i++)) +do + VSWR_DEV_PATHS[${i}]=`find /sys/devices/platform -name 'vswr_*' | grep ${VSWR_DEV_NAMES[${i}]} | head -n1` + + if [ ! -z ${VSWR_DEV_PATHS[${i}]} ]; then + if [ ! -z ${VERBOSE} ]; then + echo ${VSWR_DEV_PATHS[${i}]} + fi + + SRC_DIR=$(echo $(dirname ${VSWR_DEV_PATHS[${i}]})) + DST_DIR=$(echo $(dirname ${VSWR_DEV_MAP[${i}]})) + BASE_NAME=$(echo $(basename ${VSWR_DEV_PATHS[${i}]})) + [ ! -d ${DST_DIR} ] && execute "mkdir -p ${DST_DIR}" + execute "ln -sf ${SRC_DIR}/${BASE_NAME} ${DST_DIR}/vswr" + execute "ln -sf ${SRC_DIR} ${DST_DIR}/class" + else + log_write "Can not find user VSWR device" ${VSWR_DEV_NAMES[${i}]} + fi +done + +#Platform options and revision device +OPT_DEV_NAME='lc15' +OPT_DEV_PATH=`find /sys/devices/platform -name 'option' | grep ${OPT_DEV_NAME} | head -n1` + +if [ ! -z ${OPT_DEV_PATH} ]; then + if [ ! -z ${VERBOSE} ]; then + echo ${OPT_DEV_PATH} + fi + SRC_DIR=$(echo $(dirname ${OPT_DEV_PATH})) + DST_DIR=$(echo $(dirname ${OPT_DEV_MAP})) + [ ! -d ${DST_DIR} ] && execute "mkdir -p ${DST_DIR}" + execute "ln -sf ${SRC_DIR}/revision ${DST_DIR}" + execute "ln -sf ${SRC_DIR}/option ${DST_DIR}" + execute "ln -sf ${SRC_DIR} ${DST_DIR}/hwmon" +else + log_write "Cannot find platform options device" ${MISC_DEV_NAME} +fi + +log_write "Litecell15 system devices remapping done!" + diff --git a/recipes-support/lc15-sysdev-remap/lc15-sysdev-remap_1.0.bb b/recipes-support/lc15-sysdev-remap/lc15-sysdev-remap_1.0.bb new file mode 100644 index 0000000..b7b2bf6 --- /dev/null +++ b/recipes-support/lc15-sysdev-remap/lc15-sysdev-remap_1.0.bb @@ -0,0 +1,28 @@ +DESCRITOPN = "Remap all available system devices of Litecell15 platform as symbolic links to easy to reach place in /var/lc15/" +LICENSE = "BSD" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/BSD;md5=3775480a712fc46a69647678acb234cb" + +SRC_URI = "file://lc15-sysdev-remap \ + file://lc15-sysdev-remap.init" + +S = "${WORKDIR}" + +inherit gitver-repo + +REPODIR = "${THISDIR}" +REPOFILE = "lc15-sysdev-remap_1.0.bb" +PR := "r${REPOGITFN}" + +REPODIR = "${THISDIR}/files" +REPOFILE = "" +PR := "${PR}.${REPOGITFN}" + +do_install() { + install -d ${D}${bindir} + install -m 0755 ${S}/lc15-sysdev-remap ${D}${bindir}/lc15-sysdev-remap +} + +FILES_${PN} += "${bindir} \ + ${sysconfdir}" + +INSANE_SKIP_${PN} = "arch"