[input] make mi_e1_line_update() a driver specific callback

This helps us to further disentangle the misdn driver and e1_input
in preparation of DAHDI support.
diff --git a/openbsc/include/openbsc/e1_input.h b/openbsc/include/openbsc/e1_input.h
index aa4aa39..93f9c52 100644
--- a/openbsc/include/openbsc/e1_input.h
+++ b/openbsc/include/openbsc/e1_input.h
@@ -95,6 +95,7 @@
 	struct llist_head list;
 	const char *name;
 	int (*want_write)(struct e1inp_ts *ts);
+	int (*line_update)(struct e1inp_line *line);
 	int default_delay;
 };	
 
diff --git a/openbsc/src/e1_input.c b/openbsc/src/e1_input.c
index a17ae41..45231c3 100644
--- a/openbsc/src/e1_input.c
+++ b/openbsc/src/e1_input.c
@@ -542,7 +542,10 @@
 
 int e1inp_line_update(struct e1inp_line *line)
 {
-	return mi_e1_line_update(line);
+	if (line->driver && line->driver->line_update)
+		return line->driver->line_update(line);
+	else
+		return 0;
 }
 
 static int e1i_sig_cb(unsigned int subsys, unsigned int signal,
diff --git a/openbsc/src/input/misdn.c b/openbsc/src/input/misdn.c
index 07a9ad0..1f24a27 100644
--- a/openbsc/src/input/misdn.c
+++ b/openbsc/src/input/misdn.c
@@ -383,10 +383,13 @@
 	return ret;
 }
 
+static int mi_e1_line_update(struct e1inp_line *line);
+
 struct e1inp_driver misdn_driver = {
 	.name = "mISDNuser",
 	.want_write = ts_want_write,
 	.default_delay = 50000,
+	.line_update = &mi_e1_line_update,
 };
 
 static int mi_e1_setup(struct e1inp_line *line, int release_l2)
@@ -478,7 +481,7 @@
 	return 0;
 }
 
-int mi_e1_line_update(struct e1inp_line *line)
+static int mi_e1_line_update(struct e1inp_line *line)
 {
 	struct mISDN_devinfo devinfo;
 	int sk, ret, cnt;