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.
This commit is contained in:
Max 2017-06-22 20:31:27 +02:00 committed by Pau Espin Pedrol
parent 8777422cfc
commit a121475a64
2 changed files with 462 additions and 0 deletions

View File

@ -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 <minh-quang.nguyen@nutaq.com>
#
# 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 <<EOM
Usage:
$0 [-d] [-v] [-h]
Parameters:
-d: print debug
-v: Script version
-h: This message
EOM
exit 0
}
function syslog_config()
{
#echo "local7.* /var/log/${LOG_FILE}" >> /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!"

View File

@ -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"