From 096417e3731173f0a70625d413b4d68a449adec1 Mon Sep 17 00:00:00 2001 From: Tzafrir Cohen Date: Tue, 19 May 2009 16:33:50 +0000 Subject: dahdi.init: moved test for astribanks into waitfor_xpds If the system starts with an Astribank with no firmware, the firmware loading may take a while and the Astribank only becomes ready some time after the DAHDI init script starts. This means that the test at the beginning of xpp_startup() in dahdi.init fails to find an Astribank, and the init script simply continues ignoring this. This changeset moves the testing inside the script waitfor_xpds. The script now: 1. Tests for an Astribank using dahdi_hardware and exists immediately if none found. 2. A loop (of maximum 10 seconds) waits for the first Astribank to be detected by the driver. 3. Waiting for the initialization of all the Astribanks to complete (The original waitfor_xpds) The support for the old procfs iinterface has been removed, as it has never been used with DAHDI. git-svn-id: http://svn.asterisk.org/svn/dahdi/tools/trunk@6646 a0bf4364-ded3-4de4-8d8a-66a801d63aff --- dahdi.init | 2 -- xpp/waitfor_xpds | 33 +++++++++++++++++++++------------ 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/dahdi.init b/dahdi.init index 5a7a728..5c1a3f0 100755 --- a/dahdi.init +++ b/dahdi.init @@ -89,8 +89,6 @@ unload_module() { # Initialize the Xorcom Astribank (xpp/) using perl utiliites: xpp_startup() { # do nothing if there are no astribank devices: - if ! grep -q connected /proc/xpp/xbuses 2>/dev/null; then return 0; fi - if ! /usr/share/dahdi/waitfor_xpds; then return 0; fi # overriding locales for the above two, as perl can be noisy diff --git a/xpp/waitfor_xpds b/xpp/waitfor_xpds index ebac3a0..71c5187 100755 --- a/xpp/waitfor_xpds +++ b/xpp/waitfor_xpds @@ -26,22 +26,32 @@ set -e ab_list() { + # Only check /sys info (don't use /proc anymore). ab=`find /sys/bus/astribanks/devices/xbus-*/ -name waitfor_xpds 2> /dev/null || :` - if [ "$ab" = "" ]; then - ab=`find /proc/xpp/XBUS-[0-9]*/ -name waitfor_xpds 2> /dev/null || :` - procfiles=1 - fi - if [ "$ab" = "" ]; then - echo 1>&2 "$0: No XBUSES to wait for. Aborting..." - exit 1 - fi - if [ -n "$procfiles" ]; then - echo 1>&2 "$0: No /sys attributes, fallback to /proc interface..." - fi echo $ab } +# Any hardware? +if [ "`dahdi_hardware | grep xpp_usb`" = "" ]; then + exit 0 +fi + +# Wait for driver and first device +echo -n 1>&2 "Astribanks detection " +tries=10 +while [ ! -e "/sys/bus/astribanks/devices/xbus-00" ] +do + if [ "$tries" -le 0 ]; then + exit 1 + fi + echo -n 1>&2 "." + sleep 1 + ((tries--)) +done +echo "" +# Wait for device to stabilize and XPD's to finish initalizations +echo 1>&2 "Astribanks initalization " while if ! ab=`ab_list`; then exit 1 @@ -49,6 +59,5 @@ while test "$oldab" != "$ab" do oldab="$ab" - echo 1>&2 "Waiting for XPDS" cat $ab done -- cgit v1.2.3