add sierra-directip, a package based on the latest DirectIP capable sierra wireless drivers + some fixes
SVN-Revision: 28635
This commit is contained in:
parent
d495281b6e
commit
c932bcee1c
6 changed files with 2610 additions and 0 deletions
41
package/sierra-directip/Makefile
Normal file
41
package/sierra-directip/Makefile
Normal file
|
@ -0,0 +1,41 @@
|
|||
#
|
||||
# Copyright (C) 2006-2010 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=sierra-directip
|
||||
PKG_RELEASE:=10
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define KernelPackage/usb-sierrawireless-directip
|
||||
SUBMENU:=USB Support
|
||||
DEPENDS:=+kmod-usb-serial +kmod-usb-net
|
||||
TITLE:=Updated Sierra Wireless drivers for DirectIP
|
||||
FILES:= \
|
||||
$(PKG_BUILD_DIR)/sierra.ko \
|
||||
$(PKG_BUILD_DIR)/sierra_net.ko
|
||||
AUTOLOAD:=$(call AutoLoad,60,sierra sierra_net)
|
||||
endef
|
||||
|
||||
define Build/Prepare
|
||||
mkdir -p $(PKG_BUILD_DIR)
|
||||
$(CP) ./src/* $(PKG_BUILD_DIR)/
|
||||
$(Build/Patch)
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
$(MAKE) -C "$(LINUX_DIR)" \
|
||||
CROSS_COMPILE="$(TARGET_CROSS)" \
|
||||
ARCH="$(LINUX_KARCH)" \
|
||||
SUBDIRS="$(PKG_BUILD_DIR)" \
|
||||
EXTRA_CFLAGS="$(BUILDFLAGS)" \
|
||||
modules
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,usb-sierrawireless-directip))
|
22
package/sierra-directip/patches/100-sierra_net_endian.patch
Normal file
22
package/sierra-directip/patches/100-sierra_net_endian.patch
Normal file
|
@ -0,0 +1,22 @@
|
|||
--- a/sierra_net.c
|
||||
+++ b/sierra_net.c
|
||||
@@ -840,8 +840,8 @@ static int sierra_net_bind(struct usbnet
|
||||
init_timer(&priv->sync_timer);
|
||||
/* verify fw attributes */
|
||||
status = sierra_net_get_fw_attr(dev, &fwattr);
|
||||
- dev_dbg(&dev->udev->dev, "Fw attr: %x\n", fwattr);
|
||||
- if (status == sizeof(fwattr) && (fwattr & SWI_GET_FW_ATTR_APM)) {
|
||||
+ dev_dbg(&dev->udev->dev, "Fw attr: %x\n", cpu_to_le16(fwattr));
|
||||
+ if (status == sizeof(fwattr) && (cpu_to_le16(fwattr) & SWI_GET_FW_ATTR_APM)) {
|
||||
/*******************************************************************************
|
||||
* If you want the default /sys/bus/usb/devices/.../.../power/level to be forced
|
||||
* to auto, the following needs to be compiled in.
|
||||
@@ -856,7 +856,7 @@ static int sierra_net_bind(struct usbnet
|
||||
usb_disable_autosuspend(dev->udev);
|
||||
}
|
||||
/* test whether firmware supports DHCP */
|
||||
- if (!(status == sizeof(fwattr) && (fwattr & SWI_GET_FW_ATTR_MASK))) {
|
||||
+ if (!(status == sizeof(fwattr) && (cpu_to_le16(fwattr) & SWI_GET_FW_ATTR_MASK))) {
|
||||
/* found incompatible firmware version */
|
||||
dev_err(&dev->udev->dev, "Incompatible driver and firmware"
|
||||
" versions\n");
|
|
@ -0,0 +1,14 @@
|
|||
--- a/sierra_net.c
|
||||
+++ b/sierra_net.c
|
||||
@@ -858,10 +858,7 @@ static int sierra_net_bind(struct usbnet
|
||||
/* test whether firmware supports DHCP */
|
||||
if (!(status == sizeof(fwattr) && (cpu_to_le16(fwattr) & SWI_GET_FW_ATTR_MASK))) {
|
||||
/* found incompatible firmware version */
|
||||
- dev_err(&dev->udev->dev, "Incompatible driver and firmware"
|
||||
- " versions\n");
|
||||
- kfree(priv);
|
||||
- return -ENODEV;
|
||||
+ dev_err(&dev->udev->dev, "Warning: Firmware does not have DHCP support\n");
|
||||
}
|
||||
/* prepare sync message from template */
|
||||
memcpy(priv->sync_msg, sync_tmplate, sizeof(priv->sync_msg));
|
1
package/sierra-directip/src/Makefile
Normal file
1
package/sierra-directip/src/Makefile
Normal file
|
@ -0,0 +1 @@
|
|||
obj-m := sierra.o sierra_net.o
|
1409
package/sierra-directip/src/sierra.c
Normal file
1409
package/sierra-directip/src/sierra.c
Normal file
File diff suppressed because it is too large
Load diff
1123
package/sierra-directip/src/sierra_net.c
Normal file
1123
package/sierra-directip/src/sierra_net.c
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue