summaryrefslogtreecommitdiff
path: root/kernel/xpp/init_card_2_30
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/xpp/init_card_2_30')
-rwxr-xr-xkernel/xpp/init_card_2_3073
1 files changed, 45 insertions, 28 deletions
diff --git a/kernel/xpp/init_card_2_30 b/kernel/xpp/init_card_2_30
index ec2ea80..34f8a0b 100755
--- a/kernel/xpp/init_card_2_30
+++ b/kernel/xpp/init_card_2_30
@@ -1,6 +1,9 @@
#! /usr/bin/perl -w
use strict;
+# Make warnings fatal
+local $SIG{__WARN__} = sub { die @_ };
+
#
# Written by Oron Peled <oron@actcom.co.il>
# Copyright (C) 2006, Xorcom
@@ -44,17 +47,15 @@ use Getopt::Std;
my $program = basename("$0");
my $init_dir = dirname("$0");
-BEGIN { $init_dir = dirname($0); unshift(@INC, "$init_dir", "$init_dir/zconf", "$init_dir/utils/zconf"); }
-use Zaptel::Config::Defaults;
+BEGIN { $init_dir = dirname($0); unshift(@INC, "$init_dir"); }
+use XppConfig $init_dir;
my $unit_id;
my %opts;
-$ENV{XPP_BASE} = '/proc/xpp';
getopts('o:v:', \%opts);
-my $debug;
-
-my $xpd_name;
+my %settings;
+$settings{debug} = 0;
my $chipregs;
sub logit {
@@ -62,7 +63,7 @@ sub logit {
}
sub debug {
- logit @_ if $debug;
+ logit @_ if $settings{debug};
}
# Arrange for error logging
@@ -71,10 +72,31 @@ if (-t STDERR || $opts{v}) {
main::debug "Interactive startup";
} else {
$unit_id = "$ENV{XBUS_NAME}/UNIT-$ENV{UNIT_NUMBER}";
- $xpd_name = sprintf("XPD-%1d0", $ENV{UNIT_NUMBER});
- $chipregs = "$ENV{XPP_BASE}/$ENV{XBUS_NAME}/$xpd_name/chipregs";
open (STDERR, "| logger -t $program -p kern.info") || die;
main::debug "Non Interactive startup";
+ foreach my $k (qw(
+ XBUS_NAME
+ XBUS_NUMBER
+ UNIT_NUMBER
+ UNIT_TYPE
+ UNIT_SUBUNITS
+ UNIT_SUBUNITS_DIR
+ XBUS_REVISION
+ XBUS_CONNECTOR
+ XBUS_LABEL)) {
+ unless(defined $ENV{$k}) {
+ logit "Missing ENV{$k}\n";
+ die;
+ }
+ }
+ $chipregs = sprintf "/sys/bus/xpds/devices/%02d:%1d:0/chipregs",
+ $ENV{XBUS_NUMBER}, $ENV{UNIT_NUMBER};
+ if(! -f $chipregs) {
+ my $xpd_name = sprintf("XPD-%1d0", $ENV{UNIT_NUMBER});
+ $chipregs = "/proc/xpp/$ENV{XBUS_NAME}/$xpd_name/chipregs";
+ logit "OLD DRIVER: does not use /sys chipregs. Falling back to /proc"
+ if -f $chipregs;
+ }
}
sub set_output() {
@@ -312,27 +334,22 @@ sub opermode_verify($) {
}
sub read_defaults() {
- # For lab tests
- my $labfile = "$init_dir/genzaptelconf.env";
-
- # Source default files
- $ENV{ZAPTEL_DEFAULTS} = "$labfile" if -r "$labfile";
- my $var_debug = 'DEBUG_INIT_FXO';
- my $var_opermode = 'opermode';
- my ($default_file, %source_defaults) =
- Zaptel::Config::Defaults::source_vars($var_debug, $var_opermode);
- $debug = $source_defaults{$var_debug};
- my $tmp_opermode = $source_defaults{$var_opermode};
- if(defined($tmp_opermode) and $tmp_opermode) {
- # Verify
- my $mode = $opermode_table{$tmp_opermode};
- if(! defined $mode) {
- main::logit "Unknown opermode='$tmp_opermode'";
- die;
+ if(XppConfig::read_config(\%settings)) {
+ main::logit "Defaults from $settings{xppconf}";
+ my $o = $settings{opermode};
+ if(defined($o)) {
+ # Verify
+ my $mode = $opermode_table{$o};
+ if(! defined $mode) {
+ main::logit "Unknown opermode='$o'";
+ die;
+ }
+ $OPERMODE = $o;
+ main::logit "Set OPERMODE = $o";
}
- $OPERMODE = $tmp_opermode;
+ } else {
+ main::logit "No defaults file, use hard-coded defaults.";
}
- main::logit "From $default_file: $var_debug=$debug $var_opermode=$tmp_opermode";
}
package main;