ltq-adsl-app: use notification based ATM/PTM driver load
authorMathias Kresin <dev@kresin.me>
Sun, 15 Oct 2017 10:29:22 +0000 (12:29 +0200)
committerMathias Kresin <dev@kresin.me>
Wed, 25 Oct 2017 06:45:05 +0000 (08:45 +0200)
This patch removes the fixed atm/ptm driver loading and
switches to notification based driver loading.

Signed-off-by: Mathias Kresin <dev@kresin.me>
package/kernel/lantiq/ltq-atm/Makefile
package/network/config/ltq-adsl-app/Makefile
package/network/config/ltq-adsl-app/files/10_atm.sh [new file with mode: 0755]
package/network/config/ltq-adsl-app/files/10_ptm.sh [new file with mode: 0755]

index 7f4c197fe550ce3c24d591627f42714248915209..065ce17e34192cae9055da3aa3e419c99e6cb3a6 100644 (file)
@@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk
 include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=ltq-atm
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/ltq-atm-$(BUILD_VARIANT)
 
 PKG_MAINTAINER:=John Crispin <john@phrozen.org>
@@ -24,7 +24,6 @@ define KernelPackage/ltq-atm-template
   VARIANT:=$(1)
   DEPENDS:=@$(2) +kmod-atm +br2684ctl
   FILES:=$(PKG_BUILD_DIR)/ltq_atm_$(1).ko
-  AUTOLOAD:=$(call AutoProbe,ltq_atm_$(1))
 endef
 
 KernelPackage/ltq-atm-danube=$(call KernelPackage/ltq-atm-template,danube,(TARGET_lantiq_xway||TARGET_lantiq_xway_legacy))
index 6e0b47f87c2effba6b756c40f8f061f8967debf4..db3decaabec2047681baf747382d67b9c2829af2 100644 (file)
@@ -10,7 +10,7 @@ include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=dsl_cpe_control_danube
 PKG_VERSION:=3.24.4.4
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_BUILD_DIR:=$(BUILD_DIR)/dsl_cpe_control-$(PKG_VERSION)
 PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources/
@@ -76,10 +76,10 @@ CONFIGURE_ARGS += \
 TARGET_CFLAGS += -I$(LINUX_DIR)/include
 
 define Package/ltq-adsl-app/install
-       $(INSTALL_DIR) $(1)/etc/init.d
+       $(INSTALL_DIR) $(1)/etc/init.d $(1)/sbin $(1)/etc/hotplug.d/dsl
        $(INSTALL_BIN) ./files/dsl_control $(1)/etc/init.d/
-
-       $(INSTALL_DIR) $(1)/sbin
+       $(INSTALL_BIN) ./files/10_atm.sh $(1)/etc/hotplug.d/dsl
+       $(INSTALL_BIN) ./files/10_ptm.sh $(1)/etc/hotplug.d/dsl
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/dsl_cpe_control $(1)/sbin
 endef
 
diff --git a/package/network/config/ltq-adsl-app/files/10_atm.sh b/package/network/config/ltq-adsl-app/files/10_atm.sh
new file mode 100755 (executable)
index 0000000..898d8ec
--- /dev/null
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+[ "$DSL_NOTIFICATION_TYPE" = "DSL_STATUS" ] && \
+[ "$DSL_TC_LAYER_STATUS" = "ATM" ] && \
+! grep -q "ltq_atm_ar9\|ltq_atm_ase\|ltq_atm_danube" /proc/modules || exit 0
+
+logger -p daemon.notice -t "dsl-notify" "Switching to TC-Layer ATM"
+
+if grep -q "ltq_ptm_ar9\|ltq_ptm_ase\|ltq_ptm_danube" /proc/modules ; then
+       logger -p daemon.notice -t "dsl-notify" "Loading ATM driver while EFM/PTM driver is loaded is not possible. Reboot is needed."
+       exit
+fi
+
+case "$(strings /proc/device-tree/compatible)" in
+*lantiq,ar9*)
+       soc="ar9"
+       ;;
+*lantiq,ase*)
+       soc="ase"
+       ;;
+*lantiq,danube*)
+       soc="danube"
+       ;;
+*)
+       logger -p daemon.notice -t "dsl-notify" "Unsupported SoC"
+       exit
+esac
+
+modprobe ltq_atm_${soc}
+
+/etc/init.d/br2684ctl reload
diff --git a/package/network/config/ltq-adsl-app/files/10_ptm.sh b/package/network/config/ltq-adsl-app/files/10_ptm.sh
new file mode 100755 (executable)
index 0000000..8a76b92
--- /dev/null
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+[ "$DSL_NOTIFICATION_TYPE" = "DSL_STATUS" ] && \
+[ "$DSL_TC_LAYER_STATUS" = "EFM" ] && \
+! grep -q "ltq_ptm_ar9\|ltq_ptm_ase\|ltq_ptm_danube" /proc/modules || exit 0
+
+logger -p daemon.notice -t "dsl-notify" "Switching to TC-Layer EFM/PTM"
+
+if grep -q "ltq_atm_ar9\|ltq_atm_ase\|ltq_atm_danube" /proc/modules ; then
+       logger -p daemon.notice -t "dsl-notify" "Loading EFM/PTM driver while ATM driver is loaded is not possible. Reboot is needed."
+       exit
+fi
+
+case "$(strings /proc/device-tree/compatible)" in
+*lantiq,ar9*)
+       soc="ar9"
+       ;;
+*lantiq,ase*)
+       soc="ase"
+       ;;
+*lantiq,danube*)
+       soc="danube"
+       ;;
+*)
+       logger -p daemon.notice -t "dsl-notify" "Unsupported SoC"
+       exit
+esac
+
+modprobe ltq_ptm_${soc}