This series of patches closes the support gap on one of the explicitly

supported platforms (WRT54G3G) by adding direct support for the Sierra
Wireless 3G modems.
Signed-off-by:  RB <aoz.syn@gmail.com>

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@11898 3c298f89-4303-0410-b956-a3cf2f4a3e73
master
Travis Kemen 2008-07-21 20:36:16 +00:00
parent 17b27ff0a3
commit 3b0936087a
5 changed files with 1522 additions and 12 deletions

View File

@ -39,15 +39,21 @@ setup_interface_3g() {
local chat="/etc/chatscripts/3g.chat" local chat="/etc/chatscripts/3g.chat"
config_get device "$config" device config_get device "$config" device
config_get maxwait "$config" maxwait
maxwait=${maxwait:-20}
while [ ! -e "$device" -a $maxwait -gt 0 ];do # wait for driver loading to catch up
maxwait=$(($maxwait - 1))
sleep 1
done
for module in slhc ppp_generic ppp_async; do for module in slhc ppp_generic ppp_async; do
/sbin/insmod $module 2>&- >&- /sbin/insmod $module 2>&- >&-
done done
config_get apn "$cfg" apn config_get apn "$config" apn
config_get service "$cfg" service config_get service "$config" service
config_get pincode "$cfg" pincode config_get pincode "$config" pincode
config_get mtu "$cfg" mtu config_get mtu "$config" mtu
set_3g_led 1 0 1 set_3g_led 1 0 1
@ -74,7 +80,7 @@ setup_interface_3g() {
# Don't assume Option to be default as it breaks with Huawei Cards/Sticks # Don't assume Option to be default as it breaks with Huawei Cards/Sticks
PINCODE="$pincode" gcom -d "$device" -s /etc/gcom/setpin.gcom || { PINCODE="$pincode" gcom -d "$device" -s /etc/gcom/setpin.gcom || {
echo "$cfg(3g): Failed to set the PIN code." echo "$config(3g): Failed to set the PIN code."
set_3g_led 0 0 0 set_3g_led 0 0 0
return 1 return 1
} }

View File

@ -361,7 +361,7 @@ $(eval $(call KernelPackage,usb-serial-oti6858))
define KernelPackage/usb-serial-sierrawireless define KernelPackage/usb-serial-sierrawireless
$(call usbdep,kmod-usb-serial @LINUX_2_6) $(call usbdep,kmod-usb-serial)
TITLE:=Support for Sierra Wireless devices TITLE:=Support for Sierra Wireless devices
KCONFIG:=CONFIG_USB_SERIAL_SIERRAWIRELESS KCONFIG:=CONFIG_USB_SERIAL_SIERRAWIRELESS
FILES:=$(LINUX_DIR)/drivers/usb/serial/sierra.$(LINUX_KMOD_SUFFIX) FILES:=$(LINUX_DIR)/drivers/usb/serial/sierra.$(LINUX_KMOD_SUFFIX)

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,22 @@
diff -Naur linux-2.4.35.4.orig/drivers/usb/serial/Config.in linux-2.4.35.4/drivers/usb/serial/Config.in
--- linux-2.4.35.4.orig/drivers/usb/serial/Config.in 2008-01-25 10:09:11.541747549 -0700
+++ linux-2.4.35.4/drivers/usb/serial/Config.in 2008-01-25 10:17:01.890745265 -0700
@@ -39,6 +39,7 @@
dep_tristate ' USB KOBIL chipcard reader (EXPERIMENTAL)' CONFIG_USB_SERIAL_KOBIL_SCT $CONFIG_USB_SERIAL $CONFIG_EXPERIMENTAL
dep_tristate ' USB Prolific 2303 Single Port Serial Driver' CONFIG_USB_SERIAL_PL2303 $CONFIG_USB_SERIAL
dep_tristate ' USB REINER SCT cyberJack pinpad/e-com chipcard reader (EXPERIMENTAL)' CONFIG_USB_SERIAL_CYBERJACK $CONFIG_USB_SERIAL $CONFIG_EXPERIMENTAL
+ dep_tristate ' USB Sierra Wireless Driver' CONFIG_USB_SERIAL_SIERRAWIRELESS $CONFIG_USB_SERIAL
dep_tristate ' USB Xircom / Entregra Single Port Serial Driver (EXPERIMENTAL)' CONFIG_USB_SERIAL_XIRCOM $CONFIG_USB_SERIAL $CONFIG_EXPERIMENTAL
dep_tristate ' USB ZyXEL omni.net LCD Plus Driver (EXPERIMENTAL)' CONFIG_USB_SERIAL_OMNINET $CONFIG_USB_SERIAL $CONFIG_EXPERIMENTAL
fi
diff -Naur linux-2.4.35.4.orig/drivers/usb/serial/Makefile linux-2.4.35.4/drivers/usb/serial/Makefile
--- linux-2.4.35.4.orig/drivers/usb/serial/Makefile 2008-01-25 10:09:11.542749582 -0700
+++ linux-2.4.35.4/drivers/usb/serial/Makefile 2008-01-25 10:17:37.412855271 -0700
@@ -26,6 +26,7 @@
obj-$(CONFIG_USB_SERIAL_IR) += ir-usb.o
obj-$(CONFIG_USB_SERIAL_KLSI) += kl5kusb105.o
obj-$(CONFIG_USB_SERIAL_KOBIL_SCT) += kobil_sct.o
+obj-$(CONFIG_USB_SERIAL_SIERRAWIRELESS) += sierra.o
# Objects that export symbols.
export-objs := usbserial.o

View File

@ -7,11 +7,11 @@ Index: linux-2.4.35.4/drivers/usb/serial/usbserial.c
static int maxSize = 0; static int maxSize = 0;
-static struct usb_device_id generic_device_ids[2]; /* Initially all zeroes. */ -static struct usb_device_id generic_device_ids[2]; /* Initially all zeroes. */
+static struct usb_device_id generic_device_ids[10]; /* Initially all zeroes. */ +static struct usb_device_id generic_device_ids[9]; /* Initially all zeroes. */
/* All of the device info needed for the Generic Serial Converter */ /* All of the device info needed for the Generic Serial Converter */
static struct usb_serial_device_type generic_device = { static struct usb_serial_device_type generic_device = {
@@ -1836,6 +1836,34 @@ static int __init usb_serial_init(void) @@ -1836,6 +1836,30 @@ static int __init usb_serial_init(void)
generic_device_ids[0].idVendor = vendor; generic_device_ids[0].idVendor = vendor;
generic_device_ids[0].idProduct = product; generic_device_ids[0].idProduct = product;
generic_device_ids[0].match_flags = USB_DEVICE_ID_MATCH_VENDOR | USB_DEVICE_ID_MATCH_PRODUCT; generic_device_ids[0].match_flags = USB_DEVICE_ID_MATCH_VENDOR | USB_DEVICE_ID_MATCH_PRODUCT;
@ -31,10 +31,6 @@ Index: linux-2.4.35.4/drivers/usb/serial/usbserial.c
+ generic_device_ids[4].idVendor = 0x0f3d; + generic_device_ids[4].idVendor = 0x0f3d;
+ generic_device_ids[4].idProduct = 0x0112; + generic_device_ids[4].idProduct = 0x0112;
+ generic_device_ids[4].match_flags = USB_DEVICE_ID_MATCH_VENDOR | USB_DEVICE_ID_MATCH_PRODUCT; + generic_device_ids[4].match_flags = USB_DEVICE_ID_MATCH_VENDOR | USB_DEVICE_ID_MATCH_PRODUCT;
+ /* Sierra Wireless AirCard 875 */
+ generic_device_ids[5].idVendor = 0x1199;
+ generic_device_ids[5].idProduct = 0x6820;
+ generic_device_ids[5].match_flags = USB_DEVICE_ID_MATCH_VENDOR | USB_DEVICE_ID_MATCH_PRODUCT;
+ /* Huawei E600 */ + /* Huawei E600 */
+ generic_device_ids[6].idVendor = 0x12d1; + generic_device_ids[6].idVendor = 0x12d1;
+ generic_device_ids[6].idProduct = 0x1001; + generic_device_ids[6].idProduct = 0x1001;