mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-04-16 04:13:31 +00:00
migrate kernel package to support 4.14.32
This commit is contained in:
parent
85c231621c
commit
12b4eb4d04
@ -30,9 +30,10 @@ endef
|
||||
# core
|
||||
|
||||
# kernel only
|
||||
$(eval $(if $(NF_KMOD),$(call nf_add,NF_REJECT,CONFIG_NF_REJECT_IPV4, $(P_V4)nf_reject_ipv4),))
|
||||
|
||||
$(eval $(if $(NF_KMOD),$(call nf_add,NF_IPT,CONFIG_IP_NF_IPTABLES, $(P_V4)ip_tables),))
|
||||
$(eval $(if $(NF_KMOD),$(call nf_add,NF_IPT,CONFIG_NETFILTER_XTABLES, $(P_XT)x_tables),))
|
||||
$(eval $(if $(NF_KMOD),$(call nf_add,NF_IPT,CONFIG_NF_REJECT_IPV4, $(P_V4)nf_reject_ipv4),))
|
||||
|
||||
$(eval $(if $(NF_KMOD),$(call nf_add,IPT_CORE,CONFIG_NETFILTER_XTABLES, $(P_XT)xt_tcpudp),))
|
||||
$(eval $(if $(NF_KMOD),$(call nf_add,IPT_CORE,CONFIG_IP_NF_FILTER, $(P_V4)iptable_filter),))
|
||||
@ -85,6 +86,10 @@ $(eval $(call nf_add,IPT_CONNTRACK_EXTRA,CONFIG_NETFILTER_XT_MATCH_RECENT, $(P_X
|
||||
|
||||
$(eval $(if $(NF_KMOD),,$(call nf_add,IPT_CONNTRACK_EXTRA,CONFIG_NETFILTER_XT_CONNMARK, $(P_XT)xt_CONNMARK)))
|
||||
|
||||
#conntrack-label
|
||||
|
||||
$(eval $(call nf_add,IPT_CONNTRACK_LABEL,CONFIG_NETFILTER_XT_MATCH_CONNLABEL, $(P_XT)xt_connlabel))
|
||||
|
||||
# extra
|
||||
|
||||
$(eval $(call nf_add,IPT_EXTRA,CONFIG_NETFILTER_XT_MATCH_ADDRTYPE, $(if $(NF_KMOD),$(P_XT)xt_addrtype,$(P_XT)ipt_addrtype)))
|
||||
@ -138,12 +143,15 @@ $(eval $(call nf_add,IPT_IPSEC,CONFIG_IP_NF_MATCH_AH, $(P_V4)ipt_ah))
|
||||
$(eval $(call nf_add,IPT_IPSEC,CONFIG_NETFILTER_XT_MATCH_ESP, $(P_XT)xt_esp))
|
||||
$(eval $(call nf_add,IPT_IPSEC,CONFIG_NETFILTER_XT_MATCH_POLICY, $(P_XT)xt_policy))
|
||||
|
||||
# flow offload support
|
||||
$(eval $(call nf_add,IPT_FLOW,CONFIG_NETFILTER_XT_TARGET_FLOWOFFLOAD, $(P_XT)xt_FLOWOFFLOAD))
|
||||
|
||||
# IPv6
|
||||
|
||||
# kernel only
|
||||
$(eval $(if $(NF_KMOD),$(call nf_add,NF_REJECT6,CONFIG_NF_REJECT_IPV6, $(P_V6)nf_reject_ipv6),))
|
||||
|
||||
$(eval $(if $(NF_KMOD),$(call nf_add,NF_IPT6,CONFIG_IP6_NF_IPTABLES, $(P_V6)ip6_tables),))
|
||||
$(eval $(if $(NF_KMOD),$(call nf_add,NF_IPT6,CONFIG_NF_REJECT_IPV6, $(P_V6)nf_reject_ipv6),))
|
||||
|
||||
$(eval $(if $(NF_KMOD),$(call nf_add,NF_CONNTRACK6,CONFIG_NF_DEFRAG_IPV6, $(P_V6)nf_defrag_ipv6),))
|
||||
$(eval $(if $(NF_KMOD),$(call nf_add,NF_CONNTRACK6,CONFIG_NF_CONNTRACK_IPV6, $(P_V6)nf_conntrack_ipv6),))
|
||||
@ -338,14 +346,22 @@ $(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_CHAIN_ROUTE_IPV6, $(P_V
|
||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_REDIR, $(P_XT)nft_redir, ge 3.19.0),))
|
||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_QUOTA, $(P_XT)nft_quota, ge 4.9.0),))
|
||||
|
||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_ARP,CONFIG_NF_TABLES_ARP, $(P_V4)nf_tables_arp),))
|
||||
|
||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_BRIDGE,CONFIG_NF_TABLES_BRIDGE, $(P_EBT)nf_tables_bridge),))
|
||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_BRIDGE,CONFIG_NFT_BRIDGE_META, $(P_EBT)nft_meta_bridge),))
|
||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_BRIDGE,CONFIG_NFT_BRIDGE_REJECT, $(P_EBT)nft_reject_bridge),))
|
||||
|
||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_NAT,CONFIG_NFT_NAT, $(P_XT)nft_nat),))
|
||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_NAT,CONFIG_NFT_CHAIN_NAT_IPV4, $(P_V4)nft_chain_nat_ipv4),))
|
||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_NAT,CONFIG_NFT_REDIR_IPV4, $(P_V4)nft_redir_ipv4, ge 3.19.0),))
|
||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_NAT6,CONFIG_NFT_REDIR_IPV6, $(P_V6)nft_redir_ipv6, ge 3.19.0),))
|
||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_NAT6,CONFIG_NFT_CHAIN_NAT_IPV6, $(P_V6)nft_chain_nat_ipv6),))
|
||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_NAT,CONFIG_NFT_MASQ, $(P_XT)nft_masq),))
|
||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_NAT,CONFIG_NFT_MASQ_IPV4, $(P_V4)nft_masq_ipv4),))
|
||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_NAT,CONFIG_NFT_MASQ_IPV6, $(P_V6)nft_masq_ipv6),))
|
||||
|
||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_NAT6,CONFIG_NFT_REDIR_IPV6, $(P_V6)nft_redir_ipv6, ge 3.19.0),))
|
||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_NAT6,CONFIG_NFT_CHAIN_NAT_IPV6, $(P_V6)nft_chain_nat_ipv6),))
|
||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_NAT6,CONFIG_NFT_MASQ_IPV6, $(P_V6)nft_masq_ipv6),))
|
||||
|
||||
|
||||
# userland only
|
||||
IPT_BUILTIN += $(NF_IPT-y) $(NF_IPT-m)
|
||||
@ -356,6 +372,7 @@ IPT_BUILTIN += $(IPT_CONNTRACK-y)
|
||||
IPT_BUILTIN += $(IPT_CONNTRACK_EXTRA-y)
|
||||
IPT_BUILTIN += $(IPT_EXTRA-y)
|
||||
IPT_BUILTIN += $(IPT_FILTER-y)
|
||||
IPT_BUILTIN += $(IPT_FLOW-y) $(IPT_FLOW-m)
|
||||
IPT_BUILTIN += $(IPT_IPOPT-y)
|
||||
IPT_BUILTIN += $(IPT_IPRANGE-y)
|
||||
IPT_BUILTIN += $(IPT_CLUSTER-y)
|
||||
|
@ -8,19 +8,19 @@ PKG_LICENSE_FILES:=
|
||||
|
||||
PKG_SOURCE_URL:=https://github.com/greearb/ath10k-ct.git
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_DATE:=2017-06-13
|
||||
PKG_SOURCE_VERSION:=bded1823912549017d819d1796273b3134c3de20
|
||||
PKG_MIRROR_HASH:=616174650e12a82edb6b6bd18ac186e2c6a48fdad0082df9d2011ab20940814b
|
||||
|
||||
PKG_MAINTAINER:=Ben Greear <greearb@candelatech.com>
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
PKG_EXTMOD_SUBDIRS:=ath10k
|
||||
PKG_SOURCE_DATE:=2018-03-16
|
||||
PKG_SOURCE_VERSION:=30827f7d5b9841905c4efe918da2d95fc518c921
|
||||
PKG_MIRROR_HASH:=aac023d7f9b09becf27058b1d09ae6d068b14bb6f10c5b5a248c7ee5ecff04dc
|
||||
|
||||
# Build the 4.13 ath10k-ct driver version. Other options are "-4.9", or
|
||||
# leave un-defined for 4.7 kernel. Probably this should match as closely as
|
||||
# possible to whatever mac80211 backports version is being used.
|
||||
CT_KVER="-4.13"
|
||||
|
||||
PKG_MAINTAINER:=Ben Greear <greearb@candelatech.com>
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
PKG_EXTMOD_SUBDIRS:=ath10k$(CT_KVER)
|
||||
|
||||
STAMP_CONFIGURED_DEPENDS := $(STAGING_DIR)/usr/include/mac80211-backport/backport/autoconf.h
|
||||
|
||||
include $(INCLUDE_DIR)/kernel.mk
|
||||
@ -29,11 +29,12 @@ include $(INCLUDE_DIR)/package.mk
|
||||
define KernelPackage/ath10k-ct
|
||||
SUBMENU:=Wireless Drivers
|
||||
TITLE:=ath10k-ct driver optimized for CT ath10k firmware
|
||||
DEPENDS:=+kmod-mac80211 +kmod-ath +@DRIVER_11N_SUPPORT +@DRIVER_11AC_SUPPORT @PCI_SUPPORT +kmod-hwmon-core
|
||||
DEPENDS:=+kmod-mac80211 +kmod-ath +@DRIVER_11N_SUPPORT +@DRIVER_11AC_SUPPORT +@DRIVER_11W_SUPPORT +kmod-hwmon-core
|
||||
FILES:=\
|
||||
$(PKG_BUILD_DIR)/ath10k$(CT_KVER)/ath10k_pci.ko \
|
||||
$(PKG_BUILD_DIR)/ath10k$(CT_KVER)/ath10k_core.ko
|
||||
AUTOLOAD:=$(call AutoProbe,ath10k_pci)
|
||||
PROVIDES:=kmod-ath10k
|
||||
endef
|
||||
|
||||
NOSTDINC_FLAGS = \
|
||||
@ -50,9 +51,11 @@ ifdef CONFIG_PACKAGE_MAC80211_MESH
|
||||
endif
|
||||
|
||||
CT_MAKEDEFS += CONFIG_ATH10K=m CONFIG_ATH10K_PCI=m
|
||||
# No AHB support enabled yet. Could conditionally enable it later.
|
||||
#CT_MAKEDEFS += CONFIG_ATH10K_AHB=y
|
||||
#NOSTDINC_FLAGS += -DCONFIG_ATH10K_AHB
|
||||
|
||||
# This AHB logic is needed for IPQ4019 radios
|
||||
CT_MAKEDEFS += CONFIG_ATH10K_AHB=m
|
||||
NOSTDINC_FLAGS += -DCONFIG_ATH10K_AHB
|
||||
|
||||
NOSTDINC_FLAGS += -DSTANDALONE_CT
|
||||
|
||||
ifdef CONFIG_PACKAGE_MAC80211_DEBUGFS
|
||||
|
@ -1,36 +0,0 @@
|
||||
From c0cc00f250e19c717fc9cdbdb7f55aaa569c7498 Mon Sep 17 00:00:00 2001
|
||||
From: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Date: Thu, 24 Aug 2017 23:06:41 +0200
|
||||
Subject: [PATCH] ath10k: activate user space firmware loading again
|
||||
|
||||
In commit 9f5bcfe93315 ("ath10k: silence firmware file probing
|
||||
warnings") the firmware loading was changed from request_firmware() to
|
||||
request_firmware_direct() to silence some warnings in case it fails.
|
||||
request_firmware_direct() directly searches in the file system only and
|
||||
does not send a hotplug event to user space in case it could not find
|
||||
the firmware directly.
|
||||
In LEDE we use a user space script to extract the calibration data from
|
||||
the flash memory which gets triggered by the hotplug event. This way the
|
||||
firmware gets extracted from some vendor specific partition when the
|
||||
driver requests this firmware. This mechanism does not work any more
|
||||
after this change.
|
||||
|
||||
Fixes: 9f5bcfe93315 ("ath10k: silence firmware file probing warnings")
|
||||
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Cc: Michal Kazior <michal.kazior@tieto.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
|
||||
---
|
||||
ath10k-4.13/core.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/ath10k-4.13/core.c
|
||||
+++ b/ath10k-4.13/core.c
|
||||
@@ -556,7 +556,7 @@ static const struct firmware *ath10k_fet
|
||||
dir = ".";
|
||||
|
||||
snprintf(filename, sizeof(filename), "%s/%s", dir, file);
|
||||
- ret = request_firmware_direct(&fw, filename, ar->dev);
|
||||
+ ret = request_firmware(&fw, filename, ar->dev);
|
||||
ath10k_dbg(ar, ATH10K_DBG_BOOT, "boot fw request '%s': %d\n",
|
||||
filename, ret);
|
||||
|
@ -0,0 +1,10 @@
|
||||
--- broadcom-wl-5.10.56.27.3/driver/wl_linux.c.orig 2018-01-13 18:25:14.944667645 +0100
|
||||
+++ broadcom-wl-5.10.56.27.3/driver/wl_linux.c 2018-01-13 18:25:25.836667888 +0100
|
||||
@@ -2762,7 +2762,6 @@
|
||||
bcopy(oskb->data + D11_PHY_HDR_LEN, pdata, oskb->len - D11_PHY_HDR_LEN);
|
||||
|
||||
skb->dev = wl->monitor;
|
||||
- skb->dev->last_rx = jiffies;
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 22)
|
||||
skb_reset_mac_header(skb);
|
||||
#else
|
@ -35,7 +35,8 @@
|
||||
#define SIO_LOCK_KEY 0xAA /* Key to disable Super-I/O */
|
||||
|
||||
#define SIO_NCT5104D_ID 0x1061 /* Chip ID */
|
||||
#define SIO_PCENGINES_APU_NCT5104D_ID 0xc452 /* Chip ID */
|
||||
#define SIO_PCENGINES_APU_NCT5104D_ID1 0xc452 /* Chip ID */
|
||||
#define SIO_PCENGINES_APU_NCT5104D_ID2 0xc453 /* Chip ID */
|
||||
|
||||
enum chips { nct5104d };
|
||||
|
||||
@ -350,7 +351,8 @@ static int __init nct5104d_find(int addr, struct nct5104d_sio *sio)
|
||||
devid = superio_inw(addr, SIO_CHIPID);
|
||||
switch (devid) {
|
||||
case SIO_NCT5104D_ID:
|
||||
case SIO_PCENGINES_APU_NCT5104D_ID:
|
||||
case SIO_PCENGINES_APU_NCT5104D_ID1:
|
||||
case SIO_PCENGINES_APU_NCT5104D_ID2:
|
||||
sio->type = nct5104d;
|
||||
/* enable GPIO0 and GPIO1 */
|
||||
superio_select(addr, SIO_LD_GPIO);
|
||||
|
@ -13,9 +13,9 @@ PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://github.com/dtaht/sch_cake.git
|
||||
PKG_SOURCE_DATE:=2018-01-07
|
||||
PKG_SOURCE_VERSION:=568ed96467f41aad37556b0db11fc008e05941e9
|
||||
PKG_MIRROR_HASH:=8f3f962824826d07b1029379d91e01bf97fe0bfce1233af5cfa7a54cb1c3632c
|
||||
PKG_SOURCE_DATE:=2018-03-19
|
||||
PKG_SOURCE_VERSION:=0afc1bee4e9fc5d75668cb10254ab5d2d02f0098
|
||||
PKG_MIRROR_HASH:=b8ac95753d05ff602282ed5a799f9c953f60decebc5720ee8f0101344a5acfc4
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
@ -111,7 +111,11 @@ static inline long
|
||||
ugly_hack_sleep_on_timeout(wait_queue_head_t *q, long timeout)
|
||||
{
|
||||
unsigned long flags;
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,13,0))
|
||||
wait_queue_entry_t wait;
|
||||
#else
|
||||
wait_queue_t wait;
|
||||
#endif
|
||||
|
||||
init_waitqueue_entry(&wait, current);
|
||||
|
||||
|
@ -10,15 +10,15 @@ include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=ltq-adsl
|
||||
PKG_VERSION:=3.24.4.4
|
||||
PKG_RELEASE:=1
|
||||
PKG_RELEASE:=2
|
||||
PKG_SOURCE:=drv_dsl_cpe_api_danube-$(PKG_VERSION).tar.gz
|
||||
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/ltq-dsl-$(BUILD_VARIANT)/drv_dsl_cpe_api-$(PKG_VERSION)
|
||||
PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources/
|
||||
PKG_HASH:=eb2ed59715d3bf4e8a1460bbbe2f1660039e0a9f9d72afb1b2b16590094eb33c
|
||||
PKG_MAINTAINER:=John Crispin <john@phrozen.org>
|
||||
|
||||
PKG_USE_MIPS16:=0
|
||||
PKG_CHECK_FORMAT_SECURITY:=0
|
||||
PKG_ASLR_PIE:=0
|
||||
PKG_FIXUP:=autoreconf
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
@ -83,8 +83,6 @@ CONFIGURE_ARGS += \
|
||||
EXTRA_CFLAGS += -DDEBUG
|
||||
endif
|
||||
|
||||
EXTRA_CFLAGS = -fno-pic -mno-abicalls -mlong-calls -G 0
|
||||
|
||||
define Build/InstallDev
|
||||
$(INSTALL_DIR) $(1)/usr/include/adsl
|
||||
$(CP) $(PKG_BUILD_DIR)/src/include/drv_dsl_cpe_*.h $(1)/usr/include/adsl/
|
||||
|
@ -0,0 +1,32 @@
|
||||
--- a/src/Makefile.am
|
||||
+++ b/src/Makefile.am
|
||||
@@ -253,10 +253,7 @@ else
|
||||
drv_dsl_cpe_api_common_mod_cflags =
|
||||
endif
|
||||
|
||||
-drv_dsl_cpe_api_common_cflags = -DLINUX -D__LINUX__ -D__KERNEL__ -DEXPORT_SYMTAB \
|
||||
- -pipe -Wall -Wformat -Wimplicit -Wunused -Wswitch -Wcomment -Winline \
|
||||
- -Wuninitialized -Wparentheses -Wsign-compare -Wreturn-type \
|
||||
- -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common
|
||||
+drv_dsl_cpe_api_common_cflags = -DLINUX -D__LINUX__ -D__KERNEL__ -DEXPORT_SYMTAB
|
||||
|
||||
if DSL_DBG_MAX_LEVEL_SET
|
||||
drv_dsl_cpe_api_common_cflags += -DDSL_DBG_MAX_LEVEL=$(DSL_DBG_MAX_LEVEL_PRE)
|
||||
@@ -266,7 +263,7 @@ endif
|
||||
drv_dsl_cpe_api_target_cflags = $(ADD_DRV_CFLAGS)
|
||||
|
||||
# compile cflags
|
||||
-drv_dsl_cpe_api_compile_cflags = $(EXTRA_DRV_CFLAGS)
|
||||
+drv_dsl_cpe_api_compile_cflags =
|
||||
|
||||
if !KERNEL_2_6
|
||||
# the headerfile of linux kernels 2.6.x contain to much arithmetic
|
||||
@@ -314,7 +311,7 @@ drv_dsl_cpe_api.ko: $(drv_dsl_cpe_api_SO
|
||||
@echo -e "# drv_dsl_cpe_api: Generated to build Linux 2.6.x kernel object" > $(PWD)/Kbuild
|
||||
@echo -e "obj-m := $(subst .ko,.o,$@)" >> $(PWD)/Kbuild
|
||||
@echo -e "$(subst .ko,,$@)-y := $(drv_dsl_cpe_api_OBJS)" >> $(PWD)/Kbuild
|
||||
- @echo -e "EXTRA_CFLAGS := $(CFLAGS) -DHAVE_CONFIG_H $(drv_dsl_cpe_api_CFLAGS) $(DSL_DRIVER_INCL_PATH) $(IFXOS_INCLUDE_PATH) -I@abs_srcdir@/include -I$(PWD)/include" >> $(PWD)/Kbuild
|
||||
+ @echo -e "EXTRA_CFLAGS := -DHAVE_CONFIG_H $(drv_dsl_cpe_api_CFLAGS) $(DSL_DRIVER_INCL_PATH) $(IFXOS_INCLUDE_PATH) -I@abs_srcdir@/include -I$(PWD)/include" >> $(PWD)/Kbuild
|
||||
$(MAKE) ARCH=@KERNEL_ARCH@ -C @KERNEL_BUILD_PATH@ O=@KERNEL_BUILD_PATH@ M=$(PWD) modules
|
||||
|
||||
clean-generic:
|
@ -1,7 +1,5 @@
|
||||
Index: drv_dsl_cpe_api-3.24.4.4/src/include/drv_dsl_cpe_device_danube.h
|
||||
===================================================================
|
||||
--- drv_dsl_cpe_api-3.24.4.4.orig/src/include/drv_dsl_cpe_device_danube.h 2009-05-12 20:02:16.000000000 +0200
|
||||
+++ drv_dsl_cpe_api-3.24.4.4/src/include/drv_dsl_cpe_device_danube.h 2012-11-29 19:47:21.060210322 +0100
|
||||
--- a/src/include/drv_dsl_cpe_device_danube.h
|
||||
+++ b/src/include/drv_dsl_cpe_device_danube.h
|
||||
@@ -24,7 +24,7 @@
|
||||
#include "drv_dsl_cpe_simulator_danube.h"
|
||||
#else
|
||||
@ -11,10 +9,8 @@ Index: drv_dsl_cpe_api-3.24.4.4/src/include/drv_dsl_cpe_device_danube.h
|
||||
#endif /* defined(DSL_CPE_SIMULATOR_DRIVER) && defined(WIN32)*/
|
||||
|
||||
#define DSL_MAX_LINE_NUMBER 1
|
||||
Index: drv_dsl_cpe_api-3.24.4.4/src/common/drv_dsl_cpe_os_linux.c
|
||||
===================================================================
|
||||
--- drv_dsl_cpe_api-3.24.4.4.orig/src/common/drv_dsl_cpe_os_linux.c 2009-07-13 11:33:43.000000000 +0200
|
||||
+++ drv_dsl_cpe_api-3.24.4.4/src/common/drv_dsl_cpe_os_linux.c 2012-11-29 19:46:32.700209112 +0100
|
||||
--- a/src/common/drv_dsl_cpe_os_linux.c
|
||||
+++ b/src/common/drv_dsl_cpe_os_linux.c
|
||||
@@ -11,6 +11,7 @@
|
||||
#ifdef __LINUX__
|
||||
|
||||
@ -23,7 +19,7 @@ Index: drv_dsl_cpe_api-3.24.4.4/src/common/drv_dsl_cpe_os_linux.c
|
||||
|
||||
#include "drv_dsl_cpe_api.h"
|
||||
#include "drv_dsl_cpe_api_ioctl.h"
|
||||
@@ -34,9 +35,13 @@
|
||||
@@ -34,9 +35,13 @@ static const char* dsl_cpe_api_version =
|
||||
static DSL_ssize_t DSL_DRV_Write(DSL_DRV_file_t *pFile, const DSL_char_t * pBuf,
|
||||
DSL_DRV_size_t nSize, DSL_DRV_offset_t * pLoff);
|
||||
|
||||
@ -38,7 +34,7 @@ Index: drv_dsl_cpe_api-3.24.4.4/src/common/drv_dsl_cpe_os_linux.c
|
||||
static int DSL_DRV_Open(DSL_DRV_inode_t * ino, DSL_DRV_file_t * fil);
|
||||
|
||||
static int DSL_DRV_Release(DSL_DRV_inode_t * ino, DSL_DRV_file_t * fil);
|
||||
@@ -72,7 +77,11 @@
|
||||
@@ -72,7 +77,11 @@ static struct file_operations dslCpeApiO
|
||||
open: DSL_DRV_Open,
|
||||
release: DSL_DRV_Release,
|
||||
write: DSL_DRV_Write,
|
||||
@ -50,7 +46,7 @@ Index: drv_dsl_cpe_api-3.24.4.4/src/common/drv_dsl_cpe_os_linux.c
|
||||
poll: DSL_DRV_Poll
|
||||
};
|
||||
#else
|
||||
@@ -168,10 +177,17 @@
|
||||
@@ -168,10 +177,17 @@ static DSL_ssize_t DSL_DRV_Write(DSL_DRV
|
||||
\return Success or failure.
|
||||
\ingroup Internal
|
||||
*/
|
||||
@ -68,7 +64,7 @@ Index: drv_dsl_cpe_api-3.24.4.4/src/common/drv_dsl_cpe_os_linux.c
|
||||
{
|
||||
DSL_int_t nErr=0;
|
||||
DSL_boolean_t bIsInKernel;
|
||||
@@ -216,16 +232,7 @@
|
||||
@@ -216,16 +232,7 @@ static DSL_int_t DSL_DRV_Ioctls(DSL_DRV_
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -86,7 +82,7 @@ Index: drv_dsl_cpe_api-3.24.4.4/src/common/drv_dsl_cpe_os_linux.c
|
||||
if ( (_IOC_TYPE(nCommand) == DSL_IOC_MAGIC_CPE_API) ||
|
||||
(_IOC_TYPE(nCommand) == DSL_IOC_MAGIC_CPE_API_G997) ||
|
||||
(_IOC_TYPE(nCommand) == DSL_IOC_MAGIC_CPE_API_PM) ||
|
||||
@@ -1058,6 +1065,7 @@
|
||||
@@ -1058,6 +1065,7 @@ static void DSL_DRV_DebugInit(void)
|
||||
/* Entry point of driver */
|
||||
int __init DSL_ModuleInit(void)
|
||||
{
|
||||
@ -94,7 +90,7 @@ Index: drv_dsl_cpe_api-3.24.4.4/src/common/drv_dsl_cpe_os_linux.c
|
||||
DSL_int_t i;
|
||||
|
||||
printk(DSL_DRV_CRLF DSL_DRV_CRLF "Infineon CPE API Driver version: %s" DSL_DRV_CRLF,
|
||||
@@ -1104,7 +1112,8 @@
|
||||
@@ -1104,7 +1112,8 @@ int __init DSL_ModuleInit(void)
|
||||
}
|
||||
|
||||
DSL_DRV_DevNodeInit();
|
||||
@ -104,35 +100,44 @@ Index: drv_dsl_cpe_api-3.24.4.4/src/common/drv_dsl_cpe_os_linux.c
|
||||
return 0;
|
||||
}
|
||||
|
||||
Index: drv_dsl_cpe_api-3.24.4.4/src/include/drv_dsl_cpe_os_linux.h
|
||||
===================================================================
|
||||
--- drv_dsl_cpe_api-3.24.4.4.orig/src/include/drv_dsl_cpe_os_linux.h 2009-07-03 17:04:51.000000000 +0200
|
||||
+++ drv_dsl_cpe_api-3.24.4.4/src/include/drv_dsl_cpe_os_linux.h 2012-11-29 19:47:23.092210377 +0100
|
||||
@@ -17,17 +17,17 @@
|
||||
--- a/src/include/drv_dsl_cpe_os_linux.h
|
||||
+++ b/src/include/drv_dsl_cpe_os_linux.h
|
||||
@@ -16,18 +16,18 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <asm/ioctl.h>
|
||||
-#include <asm/ioctl.h>
|
||||
-#include <linux/autoconf.h>
|
||||
+#include <generated/autoconf.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/ctype.h>
|
||||
#include <linux/version.h>
|
||||
#include <linux/spinlock.h>
|
||||
-
|
||||
+#include <linux/sched.h>
|
||||
|
||||
#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
|
||||
-
|
||||
-#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
|
||||
- #include <linux/utsrelease.h>
|
||||
+ #include <generated/utsrelease.h>
|
||||
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33))
|
||||
+#include <linux/utsrelease.h>
|
||||
+#else
|
||||
+#include <generated/utsrelease.h>
|
||||
#endif
|
||||
|
||||
#include <linux/types.h>
|
||||
Index: drv_dsl_cpe_api-3.24.4.4/src/ifxmips_mei_interface.h
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ drv_dsl_cpe_api-3.24.4.4/src/ifxmips_mei_interface.h 2012-11-29 19:47:54.972211177 +0100
|
||||
@@ -39,7 +39,8 @@
|
||||
#include <linux/delay.h>
|
||||
#include <linux/poll.h>
|
||||
#include <asm/uaccess.h>
|
||||
-#include <linux/smp_lock.h>
|
||||
+//#include <linux/smp_lock.h>
|
||||
+#include <asm/ioctl.h>
|
||||
|
||||
#ifdef INCLUDE_DSL_CPE_API_IFXOS_SUPPORT
|
||||
/** IFXOS includes*/
|
||||
--- /dev/null
|
||||
+++ b/src/ifxmips_mei_interface.h
|
||||
@@ -0,0 +1,702 @@
|
||||
+/******************************************************************************
|
||||
+
|
||||
@ -838,7 +843,7 @@ Index: drv_dsl_cpe_api-3.24.4.4/src/ifxmips_mei_interface.h
|
||||
+#endif //IFXMIPS_MEI_H
|
||||
--- a/configure.in
|
||||
+++ b/configure.in
|
||||
@@ -310,7 +310,7 @@
|
||||
@@ -310,7 +310,7 @@ dnl Set kernel build path
|
||||
AC_ARG_ENABLE(kernelbuild,
|
||||
AC_HELP_STRING(--enable-kernel-build=x,Set the target kernel build path),
|
||||
[
|
||||
@ -847,7 +852,7 @@ Index: drv_dsl_cpe_api-3.24.4.4/src/ifxmips_mei_interface.h
|
||||
AC_SUBST([KERNEL_BUILD_PATH],[$enableval])
|
||||
else
|
||||
AC_MSG_ERROR([The kernel build directory is not valid or not configured!])
|
||||
@@ -333,12 +333,12 @@
|
||||
@@ -333,12 +333,12 @@ AC_ARG_ENABLE(ifxos-include,
|
||||
echo Set the lib_ifxos include path $enableval
|
||||
AC_SUBST([IFXOS_INCLUDE_PATH],[$enableval])
|
||||
else
|
||||
@ -862,7 +867,7 @@ Index: drv_dsl_cpe_api-3.24.4.4/src/ifxmips_mei_interface.h
|
||||
AC_SUBST([IFXOS_INCLUDE_PATH],[$DEFAULT_IFXOS_INCLUDE_PATH])
|
||||
]
|
||||
)
|
||||
@@ -1702,73 +1702,73 @@
|
||||
@@ -1702,73 +1702,73 @@ dnl Set the configure params for dist ch
|
||||
AC_SUBST([DISTCHECK_CONFIGURE_PARAMS],[$CONFIGURE_OPTIONS])
|
||||
|
||||
AC_CONFIG_COMMANDS_PRE([
|
||||
@ -1005,7 +1010,7 @@ Index: drv_dsl_cpe_api-3.24.4.4/src/ifxmips_mei_interface.h
|
||||
AC_CONFIG_FILES([Makefile src/Makefile])
|
||||
--- a/src/Makefile.am
|
||||
+++ b/src/Makefile.am
|
||||
@@ -303,7 +303,7 @@
|
||||
@@ -300,7 +300,7 @@ if KERNEL_2_6
|
||||
drv_dsl_cpe_api_OBJS = "$(subst .c,.o,$(filter %.c,$(drv_dsl_cpe_api_SOURCES)))"
|
||||
|
||||
drv_dsl_cpe_api.ko: $(drv_dsl_cpe_api_SOURCES)
|
||||
@ -1014,52 +1019,18 @@ Index: drv_dsl_cpe_api-3.24.4.4/src/ifxmips_mei_interface.h
|
||||
if test ! -e common/drv_dsl_cpe_api.c ; then \
|
||||
echo "copy source files (as links only!)"; \
|
||||
for f in $(filter %.c,$(drv_dsl_cpe_api_SOURCES)); do \
|
||||
@@ -311,10 +311,10 @@
|
||||
@@ -308,10 +308,10 @@ drv_dsl_cpe_api.ko: $(drv_dsl_cpe_api_SO
|
||||
cp -s $(addprefix @abs_srcdir@/,$$f) $(PWD)/`dirname $$f`/ ; \
|
||||
done \
|
||||
fi
|
||||
- @echo -e "# drv_dsl_cpe_api: Generated to build Linux 2.6.x kernel object" > $(PWD)/Kbuild
|
||||
- @echo -e "obj-m := $(subst .ko,.o,$@)" >> $(PWD)/Kbuild
|
||||
- @echo -e "$(subst .ko,,$@)-y := $(drv_dsl_cpe_api_OBJS)" >> $(PWD)/Kbuild
|
||||
- @echo -e "EXTRA_CFLAGS := $(CFLAGS) -DHAVE_CONFIG_H $(drv_dsl_cpe_api_CFLAGS) $(DSL_DRIVER_INCL_PATH) $(IFXOS_INCLUDE_PATH) -I@abs_srcdir@/include -I$(PWD)/include" >> $(PWD)/Kbuild
|
||||
- @echo -e "EXTRA_CFLAGS := -DHAVE_CONFIG_H $(drv_dsl_cpe_api_CFLAGS) $(DSL_DRIVER_INCL_PATH) $(IFXOS_INCLUDE_PATH) -I@abs_srcdir@/include -I$(PWD)/include" >> $(PWD)/Kbuild
|
||||
+ @echo "# drv_dsl_cpe_api: Generated to build Linux 2.6.x kernel object" > $(PWD)/Kbuild
|
||||
+ @echo "obj-m := $(subst .ko,.o,$@)" >> $(PWD)/Kbuild
|
||||
+ @echo "$(subst .ko,,$@)-y := $(drv_dsl_cpe_api_OBJS)" >> $(PWD)/Kbuild
|
||||
+ @echo "EXTRA_CFLAGS := $(CFLAGS) -DHAVE_CONFIG_H $(drv_dsl_cpe_api_CFLAGS) $(DSL_DRIVER_INCL_PATH) $(IFXOS_INCLUDE_PATH) -I@abs_srcdir@/include -I$(PWD)/include" >> $(PWD)/Kbuild
|
||||
+ @echo "EXTRA_CFLAGS := -DHAVE_CONFIG_H $(drv_dsl_cpe_api_CFLAGS) $(DSL_DRIVER_INCL_PATH) $(IFXOS_INCLUDE_PATH) -I@abs_srcdir@/include -I$(PWD)/include" >> $(PWD)/Kbuild
|
||||
$(MAKE) ARCH=@KERNEL_ARCH@ -C @KERNEL_BUILD_PATH@ O=@KERNEL_BUILD_PATH@ M=$(PWD) modules
|
||||
|
||||
clean-generic:
|
||||
--- a/src/include/drv_dsl_cpe_os_linux.h
|
||||
+++ b/src/include/drv_dsl_cpe_os_linux.h
|
||||
@@ -16,8 +16,6 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
-#include <asm/ioctl.h>
|
||||
-#include <generated/autoconf.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
@@ -26,8 +24,10 @@
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/sched.h>
|
||||
|
||||
-#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
|
||||
- #include <generated/utsrelease.h>
|
||||
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33))
|
||||
+#include <linux/utsrelease.h>
|
||||
+#else
|
||||
+#include <generated/utsrelease.h>
|
||||
#endif
|
||||
|
||||
#include <linux/types.h>
|
||||
@@ -39,7 +39,8 @@
|
||||
#include <linux/delay.h>
|
||||
#include <linux/poll.h>
|
||||
#include <asm/uaccess.h>
|
||||
-#include <linux/smp_lock.h>
|
||||
+//#include <linux/smp_lock.h>
|
||||
+#include <asm/ioctl.h>
|
||||
|
||||
#ifdef INCLUDE_DSL_CPE_API_IFXOS_SUPPORT
|
||||
/** IFXOS includes*/
|
||||
|
@ -1,7 +1,5 @@
|
||||
Index: drv_dsl_cpe_api-3.24.4.4/src/common/drv_dsl_cpe_os_linux.c
|
||||
===================================================================
|
||||
--- drv_dsl_cpe_api-3.24.4.4.orig/src/common/drv_dsl_cpe_os_linux.c 2012-12-07 21:22:58.020256076 +0100
|
||||
+++ drv_dsl_cpe_api-3.24.4.4/src/common/drv_dsl_cpe_os_linux.c 2012-12-07 21:31:13.156268489 +0100
|
||||
--- a/src/common/drv_dsl_cpe_os_linux.c
|
||||
+++ b/src/common/drv_dsl_cpe_os_linux.c
|
||||
@@ -12,6 +12,7 @@
|
||||
|
||||
#define DSL_INTERN
|
||||
@ -10,7 +8,7 @@ Index: drv_dsl_cpe_api-3.24.4.4/src/common/drv_dsl_cpe_os_linux.c
|
||||
|
||||
#include "drv_dsl_cpe_api.h"
|
||||
#include "drv_dsl_cpe_api_ioctl.h"
|
||||
@@ -1063,7 +1064,7 @@
|
||||
@@ -1063,7 +1064,7 @@ static void DSL_DRV_DebugInit(void)
|
||||
#endif
|
||||
|
||||
/* Entry point of driver */
|
||||
@ -19,7 +17,7 @@ Index: drv_dsl_cpe_api-3.24.4.4/src/common/drv_dsl_cpe_os_linux.c
|
||||
{
|
||||
struct class *dsl_class;
|
||||
DSL_int_t i;
|
||||
@@ -1117,7 +1118,7 @@
|
||||
@@ -1117,7 +1118,7 @@ int __init DSL_ModuleInit(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -28,7 +26,7 @@ Index: drv_dsl_cpe_api-3.24.4.4/src/common/drv_dsl_cpe_os_linux.c
|
||||
{
|
||||
printk("Module will be unloaded"DSL_DRV_CRLF);
|
||||
|
||||
@@ -1132,7 +1133,7 @@
|
||||
@@ -1132,7 +1133,7 @@ void __exit DSL_ModuleCleanup(void)
|
||||
(DSL_uint8_t**)&g_BndFpgaBase);
|
||||
#endif /* defined(INCLUDE_DSL_CPE_API_VINAX) && defined(INCLUDE_DSL_BONDING)*/
|
||||
|
||||
@ -37,7 +35,7 @@ Index: drv_dsl_cpe_api-3.24.4.4/src/common/drv_dsl_cpe_os_linux.c
|
||||
}
|
||||
|
||||
#ifndef _lint
|
||||
@@ -1148,8 +1149,30 @@
|
||||
@@ -1148,8 +1149,30 @@ module_param(debug_level, byte, 0);
|
||||
MODULE_PARM_DESC(debug_level, "set to get more (1) or fewer (4) debug outputs");
|
||||
#endif /* #ifndef DSL_DEBUG_DISABLE*/
|
||||
|
||||
|
@ -1,7 +1,5 @@
|
||||
Index: drv_dsl_cpe_api-3.24.4.4/src/common/drv_dsl_cpe_os_linux.c
|
||||
===================================================================
|
||||
--- drv_dsl_cpe_api-3.24.4.4.orig/src/common/drv_dsl_cpe_os_linux.c 2013-03-14 11:44:50.318326078 +0100
|
||||
+++ drv_dsl_cpe_api-3.24.4.4/src/common/drv_dsl_cpe_os_linux.c 2013-03-14 11:46:08.562329425 +0100
|
||||
--- a/src/common/drv_dsl_cpe_os_linux.c
|
||||
+++ b/src/common/drv_dsl_cpe_os_linux.c
|
||||
@@ -11,6 +11,7 @@
|
||||
#ifdef __LINUX__
|
||||
|
||||
@ -10,7 +8,7 @@ Index: drv_dsl_cpe_api-3.24.4.4/src/common/drv_dsl_cpe_os_linux.c
|
||||
#include <linux/device.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
@@ -40,7 +41,7 @@
|
||||
@@ -40,7 +41,7 @@ static DSL_ssize_t DSL_DRV_Write(DSL_DRV
|
||||
static DSL_int_t DSL_DRV_Ioctls(DSL_DRV_inode_t * pINode, DSL_DRV_file_t * pFile,
|
||||
DSL_uint_t nCommand, unsigned long nArg);
|
||||
#else
|
||||
@ -19,7 +17,7 @@ Index: drv_dsl_cpe_api-3.24.4.4/src/common/drv_dsl_cpe_os_linux.c
|
||||
DSL_uint_t nCommand, unsigned long nArg);
|
||||
#endif
|
||||
static int DSL_DRV_Open(DSL_DRV_inode_t * ino, DSL_DRV_file_t * fil);
|
||||
@@ -184,7 +185,7 @@
|
||||
@@ -184,7 +185,7 @@ static DSL_int_t DSL_DRV_Ioctls(DSL_DRV_
|
||||
DSL_uint_t nCommand,
|
||||
unsigned long nArg)
|
||||
#else
|
||||
@ -28,7 +26,7 @@ Index: drv_dsl_cpe_api-3.24.4.4/src/common/drv_dsl_cpe_os_linux.c
|
||||
DSL_DRV_file_t * pFile,
|
||||
DSL_uint_t nCommand,
|
||||
unsigned long nArg)
|
||||
@@ -521,9 +522,9 @@
|
||||
@@ -521,9 +522,9 @@ DSL_void_t* DSL_IoctlMemCpyTo(
|
||||
- IFX_SUCCESS on success
|
||||
- IFX_ERROR on error
|
||||
*/
|
||||
@ -40,7 +38,7 @@ Index: drv_dsl_cpe_api-3.24.4.4/src/common/drv_dsl_cpe_os_linux.c
|
||||
DSL_int32_t retVal = -1;
|
||||
#ifndef _lint
|
||||
|
||||
@@ -546,30 +547,6 @@
|
||||
@@ -546,30 +547,6 @@ DSL_DRV_STATIC DSL_int32_t DSL_DRV_Kerne
|
||||
(DSL_NULL, "ENTER - Kernel Thread Startup <%s>" DSL_DRV_CRLF,
|
||||
pThrCntrl->thrParams.pName));
|
||||
|
||||
@ -71,7 +69,7 @@ Index: drv_dsl_cpe_api-3.24.4.4/src/common/drv_dsl_cpe_os_linux.c
|
||||
/*DSL_DRV_ThreadPriorityModify(pThrCntrl->nPriority);*/
|
||||
|
||||
pThrCntrl->thrParams.bRunning = 1;
|
||||
@@ -639,9 +616,7 @@
|
||||
@@ -639,9 +616,7 @@ DSL_int32_t DSL_DRV_ThreadInit(
|
||||
init_completion(&pThrCntrl->thrCompletion);
|
||||
|
||||
/* start kernel thread via the wrapper function */
|
||||
@ -82,7 +80,7 @@ Index: drv_dsl_cpe_api-3.24.4.4/src/common/drv_dsl_cpe_os_linux.c
|
||||
|
||||
pThrCntrl->bValid = DSL_TRUE;
|
||||
|
||||
@@ -1064,12 +1039,12 @@
|
||||
@@ -1064,12 +1039,12 @@ static void DSL_DRV_DebugInit(void)
|
||||
#endif
|
||||
|
||||
/* Entry point of driver */
|
||||
@ -97,7 +95,7 @@ Index: drv_dsl_cpe_api-3.24.4.4/src/common/drv_dsl_cpe_os_linux.c
|
||||
&(dsl_cpe_api_version[4]));
|
||||
|
||||
DSL_DRV_MemSet( ifxDevices, 0, sizeof(DSL_devCtx_t) * DSL_DRV_MAX_DEVICE_NUMBER );
|
||||
@@ -1118,7 +1093,7 @@
|
||||
@@ -1118,7 +1093,7 @@ static int __devinit ltq_adsl_probe(stru
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -106,7 +104,7 @@ Index: drv_dsl_cpe_api-3.24.4.4/src/common/drv_dsl_cpe_os_linux.c
|
||||
{
|
||||
printk("Module will be unloaded"DSL_DRV_CRLF);
|
||||
|
||||
@@ -1163,7 +1138,7 @@
|
||||
@@ -1163,7 +1138,7 @@ MODULE_DEVICE_TABLE(of, ltq_adsl_match);
|
||||
|
||||
static struct platform_driver ltq_adsl_driver = {
|
||||
.probe = ltq_adsl_probe,
|
||||
@ -115,11 +113,9 @@ Index: drv_dsl_cpe_api-3.24.4.4/src/common/drv_dsl_cpe_os_linux.c
|
||||
.driver = {
|
||||
.name = "adsl",
|
||||
.owner = THIS_MODULE,
|
||||
Index: drv_dsl_cpe_api-3.24.4.4/src/include/drv_dsl_cpe_os_lint_map.h
|
||||
===================================================================
|
||||
--- drv_dsl_cpe_api-3.24.4.4.orig/src/include/drv_dsl_cpe_os_lint_map.h 2009-02-24 21:44:54.000000000 +0100
|
||||
+++ drv_dsl_cpe_api-3.24.4.4/src/include/drv_dsl_cpe_os_lint_map.h 2013-03-14 11:44:50.330326079 +0100
|
||||
@@ -247,7 +247,7 @@
|
||||
--- a/src/include/drv_dsl_cpe_os_lint_map.h
|
||||
+++ b/src/include/drv_dsl_cpe_os_lint_map.h
|
||||
@@ -247,7 +247,7 @@ typedef struct
|
||||
DSL_DRV_ThreadFunction_t pThrFct;
|
||||
|
||||
/** Kernel thread process ID */
|
||||
@ -128,11 +124,9 @@ Index: drv_dsl_cpe_api-3.24.4.4/src/include/drv_dsl_cpe_os_lint_map.h
|
||||
|
||||
/** requested kernel thread priority */
|
||||
DSL_int32_t nPriority;
|
||||
Index: drv_dsl_cpe_api-3.24.4.4/src/include/drv_dsl_cpe_os_linux.h
|
||||
===================================================================
|
||||
--- drv_dsl_cpe_api-3.24.4.4.orig/src/include/drv_dsl_cpe_os_linux.h 2013-03-14 11:44:50.298326077 +0100
|
||||
+++ drv_dsl_cpe_api-3.24.4.4/src/include/drv_dsl_cpe_os_linux.h 2013-03-14 11:44:50.330326079 +0100
|
||||
@@ -288,7 +288,7 @@
|
||||
--- a/src/include/drv_dsl_cpe_os_linux.h
|
||||
+++ b/src/include/drv_dsl_cpe_os_linux.h
|
||||
@@ -288,7 +288,7 @@ typedef struct
|
||||
DSL_DRV_ThreadFunction_t pThrFct;
|
||||
|
||||
/** Kernel thread process ID */
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/src/include/drv_dsl_cpe_os_linux.h
|
||||
+++ b/src/include/drv_dsl_cpe_os_linux.h
|
||||
@@ -214,12 +214,25 @@ static inline int dsl_mutex_lock(struct
|
||||
@@ -214,12 +214,25 @@ static inline int dsl_mutex_lock(struct
|
||||
#define DSL_DRV_MUTEX_LOCK(id) down_interruptible(&(id))
|
||||
#define DSL_DRV_MUTEX_UNLOCK(id) up(&(id))
|
||||
#endif
|
||||
|
@ -43,6 +43,7 @@ struct ltq_atm_ops {
|
||||
void (*fw_ver)(unsigned int *major, unsigned int *minor);
|
||||
};
|
||||
|
||||
#include <linux/atomic.h>
|
||||
#include <lantiq_atm.h>
|
||||
|
||||
/*
|
||||
@ -195,6 +196,7 @@ struct connection {
|
||||
volatile struct tx_descriptor *tx_desc;
|
||||
unsigned int tx_desc_pos;
|
||||
struct sk_buff **tx_skb;
|
||||
spinlock_t lock;
|
||||
|
||||
unsigned int aal5_vcc_crc_err; /* number of packets with CRC error */
|
||||
unsigned int aal5_vcc_oversize_sdu; /* number of packets with oversize error */
|
||||
|
@ -19,6 +19,8 @@
|
||||
** HISTORY
|
||||
** $Date $Author $Comment
|
||||
** 07 JUL 2009 Xu Liang Init Version
|
||||
**
|
||||
** Copyright 2017 Alexander Couzens <lynxis@fe80.eu>
|
||||
*******************************************************************************/
|
||||
|
||||
#define IFX_ATM_VER_MAJOR 1
|
||||
@ -189,8 +191,6 @@ struct sk_buff* atm_alloc_tx(struct atm_vcc *, unsigned int);
|
||||
static inline void atm_free_tx_skb_vcc(struct sk_buff *, struct atm_vcc *);
|
||||
static inline struct sk_buff *get_skb_rx_pointer(unsigned int);
|
||||
static inline int get_tx_desc(unsigned int);
|
||||
static struct sk_buff* skb_duplicate(struct sk_buff *);
|
||||
static struct sk_buff* skb_break_away_from_protocol(struct sk_buff *);
|
||||
|
||||
/*
|
||||
* mailbox handler and signal function
|
||||
@ -444,6 +444,9 @@ static int ppe_open(struct atm_vcc *vcc)
|
||||
/* set htu entry */
|
||||
set_htu_entry(vpi, vci, conn, vcc->qos.aal == ATM_AAL5 ? 1 : 0, 0);
|
||||
|
||||
*MBOX_IGU1_ISRC |= (1 << (conn + FIRST_QSB_QID + 16));
|
||||
*MBOX_IGU1_IER |= (1 << (conn + FIRST_QSB_QID + 16));
|
||||
|
||||
ret = 0;
|
||||
|
||||
PPE_OPEN_EXIT:
|
||||
@ -511,14 +514,17 @@ static int ppe_send(struct atm_vcc *vcc, struct sk_buff *skb)
|
||||
int ret;
|
||||
int conn;
|
||||
int desc_base;
|
||||
int byteoff;
|
||||
int required;
|
||||
/* the len of the data without offset and header */
|
||||
int datalen;
|
||||
unsigned long flags;
|
||||
struct tx_descriptor reg_desc = {0};
|
||||
struct sk_buff *new_skb;
|
||||
struct tx_inband_header *header;
|
||||
|
||||
if ( vcc == NULL || skb == NULL )
|
||||
return -EINVAL;
|
||||
|
||||
skb_get(skb);
|
||||
atm_free_tx_skb_vcc(skb, vcc);
|
||||
|
||||
conn = find_vcc(vcc);
|
||||
if ( conn < 0 ) {
|
||||
@ -532,31 +538,28 @@ static int ppe_send(struct atm_vcc *vcc, struct sk_buff *skb)
|
||||
goto PPE_SEND_FAIL;
|
||||
}
|
||||
|
||||
if ( vcc->qos.aal == ATM_AAL5 ) {
|
||||
int byteoff;
|
||||
int datalen;
|
||||
struct tx_inband_header *header;
|
||||
byteoff = (unsigned int)skb->data & (DATA_BUFFER_ALIGNMENT - 1);
|
||||
required = sizeof(*header) + byteoff;
|
||||
if (!skb_clone_writable(skb, required)) {
|
||||
int expand_by = 0;
|
||||
int ret;
|
||||
|
||||
byteoff = (unsigned int)skb->data & (DATA_BUFFER_ALIGNMENT - 1);
|
||||
if ( skb_headroom(skb) < byteoff + TX_INBAND_HEADER_LENGTH )
|
||||
new_skb = skb_duplicate(skb);
|
||||
else
|
||||
new_skb = skb_break_away_from_protocol(skb);
|
||||
if ( new_skb == NULL ) {
|
||||
pr_err("either skb_duplicate or skb_break_away_from_protocol fail\n");
|
||||
ret = -ENOMEM;
|
||||
goto PPE_SEND_FAIL;
|
||||
if (skb_headroom(skb) < required)
|
||||
expand_by = required - skb_headroom(skb);
|
||||
|
||||
ret = pskb_expand_head(skb, expand_by, 0, GFP_ATOMIC);
|
||||
if (ret) {
|
||||
printk("pskb_expand_head failed.\n");
|
||||
atm_free_tx_skb_vcc(skb, vcc);
|
||||
return ret;
|
||||
}
|
||||
dev_kfree_skb_any(skb);
|
||||
skb = new_skb;
|
||||
}
|
||||
|
||||
datalen = skb->len;
|
||||
byteoff = (unsigned int)skb->data & (DATA_BUFFER_ALIGNMENT - 1);
|
||||
datalen = skb->len;
|
||||
header = (void *)skb_push(skb, byteoff + TX_INBAND_HEADER_LENGTH);
|
||||
|
||||
skb_push(skb, byteoff + TX_INBAND_HEADER_LENGTH);
|
||||
|
||||
header = (struct tx_inband_header *)skb->data;
|
||||
|
||||
if ( vcc->qos.aal == ATM_AAL5 ) {
|
||||
/* setup inband trailer */
|
||||
header->uu = 0;
|
||||
header->cpi = 0;
|
||||
@ -576,23 +579,9 @@ static int ppe_send(struct atm_vcc *vcc, struct sk_buff *skb)
|
||||
reg_desc.byteoff = byteoff;
|
||||
reg_desc.iscell = 0;
|
||||
} else {
|
||||
/* if data pointer is not aligned, allocate new sk_buff */
|
||||
if ( ((unsigned int)skb->data & (DATA_BUFFER_ALIGNMENT - 1)) != 0 ) {
|
||||
pr_err("skb->data not aligned\n");
|
||||
new_skb = skb_duplicate(skb);
|
||||
} else
|
||||
new_skb = skb_break_away_from_protocol(skb);
|
||||
if ( new_skb == NULL ) {
|
||||
pr_err("either skb_duplicate or skb_break_away_from_protocol fail\n");
|
||||
ret = -ENOMEM;
|
||||
goto PPE_SEND_FAIL;
|
||||
}
|
||||
dev_kfree_skb_any(skb);
|
||||
skb = new_skb;
|
||||
|
||||
reg_desc.dataptr = (unsigned int)skb->data >> 2;
|
||||
reg_desc.datalen = skb->len;
|
||||
reg_desc.byteoff = 0;
|
||||
reg_desc.byteoff = byteoff;
|
||||
reg_desc.iscell = 1;
|
||||
}
|
||||
|
||||
@ -600,23 +589,25 @@ static int ppe_send(struct atm_vcc *vcc, struct sk_buff *skb)
|
||||
reg_desc.c = 1;
|
||||
reg_desc.sop = reg_desc.eop = 1;
|
||||
|
||||
spin_lock_irqsave(&g_atm_priv_data.conn[conn].lock, flags);
|
||||
desc_base = get_tx_desc(conn);
|
||||
if ( desc_base < 0 ) {
|
||||
spin_unlock_irqrestore(&g_atm_priv_data.conn[conn].lock, flags);
|
||||
pr_debug("ALLOC_TX_CONNECTION_FAIL\n");
|
||||
ret = -EIO;
|
||||
goto PPE_SEND_FAIL;
|
||||
}
|
||||
|
||||
if ( vcc->stats )
|
||||
atomic_inc(&vcc->stats->tx);
|
||||
if ( vcc->qos.aal == ATM_AAL5 )
|
||||
g_atm_priv_data.wtx_pdu++;
|
||||
|
||||
/* update descriptor send pointer */
|
||||
if ( g_atm_priv_data.conn[conn].tx_skb[desc_base] != NULL )
|
||||
dev_kfree_skb_any(g_atm_priv_data.conn[conn].tx_skb[desc_base]);
|
||||
g_atm_priv_data.conn[conn].tx_skb[desc_base] = skb;
|
||||
|
||||
spin_unlock_irqrestore(&g_atm_priv_data.conn[conn].lock, flags);
|
||||
|
||||
if ( vcc->stats )
|
||||
atomic_inc(&vcc->stats->tx);
|
||||
if ( vcc->qos.aal == ATM_AAL5 )
|
||||
g_atm_priv_data.wtx_pdu++;
|
||||
/* write discriptor to memory and write back cache */
|
||||
g_atm_priv_data.conn[conn].tx_desc[desc_base] = reg_desc;
|
||||
dma_cache_wback((unsigned long)skb->data, skb->len);
|
||||
@ -821,7 +812,11 @@ struct sk_buff* atm_alloc_tx(struct atm_vcc *vcc, unsigned int size)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,13,0))
|
||||
refcount_add(skb->truesize, &sk_atm(vcc)->sk_wmem_alloc);
|
||||
#else
|
||||
atomic_add(skb->truesize, &sk_atm(vcc)->sk_wmem_alloc);
|
||||
#endif
|
||||
|
||||
return skb;
|
||||
}
|
||||
@ -862,42 +857,40 @@ static inline int get_tx_desc(unsigned int conn)
|
||||
return desc_base;
|
||||
}
|
||||
|
||||
static struct sk_buff* skb_duplicate(struct sk_buff *skb)
|
||||
static void free_tx_ring(unsigned int queue)
|
||||
{
|
||||
struct sk_buff *new_skb;
|
||||
unsigned long flags;
|
||||
int i;
|
||||
struct connection *conn = &g_atm_priv_data.conn[queue];
|
||||
struct sk_buff *skb;
|
||||
|
||||
new_skb = alloc_skb_tx(skb->len);
|
||||
if ( new_skb == NULL )
|
||||
return NULL;
|
||||
if (!conn)
|
||||
return;
|
||||
|
||||
skb_put(new_skb, skb->len);
|
||||
memcpy(new_skb->data, skb->data, skb->len);
|
||||
spin_lock_irqsave(&conn->lock, flags);
|
||||
|
||||
return new_skb;
|
||||
for (i = 0; i < dma_tx_descriptor_length; i++) {
|
||||
if (conn->tx_desc[i].own == 0 && conn->tx_skb[i] != NULL) {
|
||||
skb = conn->tx_skb[i];
|
||||
conn->tx_skb[i] = NULL;
|
||||
atm_free_tx_skb_vcc(skb, ATM_SKB(skb)->vcc);
|
||||
}
|
||||
}
|
||||
spin_unlock_irqrestore(&conn->lock, flags);
|
||||
}
|
||||
|
||||
static struct sk_buff* skb_break_away_from_protocol(struct sk_buff *skb)
|
||||
static void mailbox_tx_handler(unsigned int queue_bitmap)
|
||||
{
|
||||
struct sk_buff *new_skb;
|
||||
int i;
|
||||
int bit;
|
||||
|
||||
if ( skb_shared(skb) ) {
|
||||
new_skb = skb_clone(skb, GFP_ATOMIC);
|
||||
if ( new_skb == NULL )
|
||||
return NULL;
|
||||
} else
|
||||
new_skb = skb_get(skb);
|
||||
/* only get valid queues */
|
||||
queue_bitmap &= g_atm_priv_data.conn_table;
|
||||
|
||||
skb_dst_drop(new_skb);
|
||||
#if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
|
||||
nf_conntrack_put(new_skb->nfct);
|
||||
new_skb->nfct = NULL;
|
||||
#ifdef CONFIG_BRIDGE_NETFILTER
|
||||
nf_bridge_put(new_skb->nf_bridge);
|
||||
new_skb->nf_bridge = NULL;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
return new_skb;
|
||||
for ( i = 0, bit = 1; i < MAX_PVC_NUMBER; i++, bit <<= 1 ) {
|
||||
if (queue_bitmap & bit)
|
||||
free_tx_ring(i);
|
||||
}
|
||||
}
|
||||
|
||||
static inline void mailbox_oam_rx_handler(void)
|
||||
@ -1050,12 +1043,22 @@ static inline void mailbox_aal_rx_handler(void)
|
||||
|
||||
static void do_ppe_tasklet(unsigned long data)
|
||||
{
|
||||
unsigned int irqs = *MBOX_IGU1_ISR;
|
||||
*MBOX_IGU1_ISRC = *MBOX_IGU1_ISR;
|
||||
mailbox_oam_rx_handler();
|
||||
mailbox_aal_rx_handler();
|
||||
|
||||
if (irqs & (1 << RX_DMA_CH_AAL))
|
||||
mailbox_aal_rx_handler();
|
||||
if (irqs & (1 << RX_DMA_CH_OAM))
|
||||
mailbox_oam_rx_handler();
|
||||
|
||||
/* any valid tx irqs */
|
||||
if ((irqs >> (FIRST_QSB_QID + 16)) & g_atm_priv_data.conn_table)
|
||||
mailbox_tx_handler(irqs >> (FIRST_QSB_QID + 16));
|
||||
|
||||
if ((*MBOX_IGU1_ISR & ((1 << RX_DMA_CH_AAL) | (1 << RX_DMA_CH_OAM))) != 0)
|
||||
tasklet_schedule(&g_dma_tasklet);
|
||||
else if (*MBOX_IGU1_ISR >> (FIRST_QSB_QID + 16)) /* TX queue */
|
||||
tasklet_schedule(&g_dma_tasklet);
|
||||
else
|
||||
enable_irq(PPE_MAILBOX_IGU1_INT);
|
||||
}
|
||||
@ -1512,6 +1515,7 @@ static inline int init_priv_data(void)
|
||||
p_tx_desc = (volatile struct tx_descriptor *)((((unsigned int)g_atm_priv_data.tx_desc_base + DESC_ALIGNMENT - 1) & ~(DESC_ALIGNMENT - 1)) | KSEG1);
|
||||
ppskb = (struct sk_buff **)(((unsigned int)g_atm_priv_data.tx_skb_base + 3) & ~3);
|
||||
for ( i = 0; i < MAX_PVC_NUMBER; i++ ) {
|
||||
spin_lock_init(&g_atm_priv_data.conn[i].lock);
|
||||
g_atm_priv_data.conn[i].tx_desc = &p_tx_desc[i * dma_tx_descriptor_length];
|
||||
g_atm_priv_data.conn[i].tx_skb = &ppskb[i * dma_tx_descriptor_length];
|
||||
}
|
||||
@ -1799,7 +1803,6 @@ static int ltq_atm_probe(struct platform_device *pdev)
|
||||
int ret;
|
||||
int port_num;
|
||||
struct port_cell_info port_cell = {0};
|
||||
int i, j;
|
||||
char ver_str[256];
|
||||
|
||||
match = of_match_device(ltq_atm_match, &pdev->dev);
|
||||
|
@ -885,12 +885,12 @@ struct crypto_alg ifxdeu_ctr_rfc3686_aes_alg = {
|
||||
};
|
||||
|
||||
|
||||
/*! \fn int __init ifxdeu_init_aes (void)
|
||||
/*! \fn int ifxdeu_init_aes (void)
|
||||
* \ingroup IFX_AES_FUNCTIONS
|
||||
* \brief function to initialize AES driver
|
||||
* \return ret
|
||||
*/
|
||||
int __init ifxdeu_init_aes (void)
|
||||
int ifxdeu_init_aes (void)
|
||||
{
|
||||
int ret = -ENOSYS;
|
||||
|
||||
@ -952,11 +952,11 @@ aes_err:
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*! \fn void __exit ifxdeu_fini_aes (void)
|
||||
/*! \fn void ifxdeu_fini_aes (void)
|
||||
* \ingroup IFX_AES_FUNCTIONS
|
||||
* \brief unregister aes driver
|
||||
*/
|
||||
void __exit ifxdeu_fini_aes (void)
|
||||
void ifxdeu_fini_aes (void)
|
||||
{
|
||||
crypto_unregister_alg (&ifxdeu_aes_alg);
|
||||
crypto_unregister_alg (&ifxdeu_ecb_aes_alg);
|
||||
|
@ -343,11 +343,11 @@ static struct crypto_alg ifxdeu_ecb_arc4_alg = {
|
||||
}
|
||||
};
|
||||
|
||||
/*! \fn int __init ifxdeu_init_arc4(void)
|
||||
/*! \fn int ifxdeu_init_arc4(void)
|
||||
\ingroup IFX_ARC4_FUNCTIONS
|
||||
\brief initialize arc4 driver
|
||||
*/
|
||||
int __init ifxdeu_init_arc4(void)
|
||||
int ifxdeu_init_arc4(void)
|
||||
{
|
||||
int ret = -ENOSYS;
|
||||
|
||||
@ -376,11 +376,11 @@ ecb_arc4_err:
|
||||
|
||||
}
|
||||
|
||||
/*! \fn void __exit ifxdeu_fini_arc4(void)
|
||||
/*! \fn void ifxdeu_fini_arc4(void)
|
||||
\ingroup IFX_ARC4_FUNCTIONS
|
||||
\brief unregister arc4 driver
|
||||
*/
|
||||
void __exit ifxdeu_fini_arc4(void)
|
||||
void ifxdeu_fini_arc4(void)
|
||||
{
|
||||
crypto_unregister_alg (&ifxdeu_arc4_alg);
|
||||
crypto_unregister_alg (&ifxdeu_ecb_arc4_alg);
|
||||
|
@ -682,11 +682,11 @@ struct crypto_alg ifxdeu_cbc_des3_ede_alg = {
|
||||
}
|
||||
};
|
||||
|
||||
/*! \fn int __init ifxdeu_init_des (void)
|
||||
/*! \fn int ifxdeu_init_des (void)
|
||||
* \ingroup IFX_DES_FUNCTIONS
|
||||
* \brief initialize des driver
|
||||
*/
|
||||
int __init ifxdeu_init_des (void)
|
||||
int ifxdeu_init_des (void)
|
||||
{
|
||||
int ret = -ENOSYS;
|
||||
|
||||
@ -761,11 +761,11 @@ cbc_des3_ede_err:
|
||||
|
||||
}
|
||||
|
||||
/*! \fn void __exit ifxdeu_fini_des (void)
|
||||
/*! \fn void ifxdeu_fini_des (void)
|
||||
* \ingroup IFX_DES_FUNCTIONS
|
||||
* \brief unregister des driver
|
||||
*/
|
||||
void __exit ifxdeu_fini_des (void)
|
||||
void ifxdeu_fini_des (void)
|
||||
{
|
||||
crypto_unregister_alg (&ifxdeu_des_alg);
|
||||
crypto_unregister_alg (&ifxdeu_ecb_des_alg);
|
||||
|
@ -108,23 +108,23 @@
|
||||
*/
|
||||
|
||||
|
||||
int __init ifxdeu_init_des (void);
|
||||
int __init ifxdeu_init_aes (void);
|
||||
int __init ifxdeu_init_arc4 (void);
|
||||
int __init ifxdeu_init_sha1 (void);
|
||||
int __init ifxdeu_init_md5 (void);
|
||||
int __init ifxdeu_init_sha1_hmac (void);
|
||||
int __init ifxdeu_init_md5_hmac (void);
|
||||
int ifxdeu_init_des (void);
|
||||
int ifxdeu_init_aes (void);
|
||||
int ifxdeu_init_arc4 (void);
|
||||
int ifxdeu_init_sha1 (void);
|
||||
int ifxdeu_init_md5 (void);
|
||||
int ifxdeu_init_sha1_hmac (void);
|
||||
int ifxdeu_init_md5_hmac (void);
|
||||
int __init lqdeu_async_aes_init(void);
|
||||
int __init lqdeu_async_des_init(void);
|
||||
|
||||
void __exit ifxdeu_fini_des (void);
|
||||
void __exit ifxdeu_fini_aes (void);
|
||||
void __exit ifxdeu_fini_arc4 (void);
|
||||
void __exit ifxdeu_fini_sha1 (void);
|
||||
void __exit ifxdeu_fini_md5 (void);
|
||||
void __exit ifxdeu_fini_sha1_hmac (void);
|
||||
void __exit ifxdeu_fini_md5_hmac (void);
|
||||
void ifxdeu_fini_des (void);
|
||||
void ifxdeu_fini_aes (void);
|
||||
void ifxdeu_fini_arc4 (void);
|
||||
void ifxdeu_fini_sha1 (void);
|
||||
void ifxdeu_fini_md5 (void);
|
||||
void ifxdeu_fini_sha1_hmac (void);
|
||||
void ifxdeu_fini_md5_hmac (void);
|
||||
void __exit ifxdeu_fini_dma(void);
|
||||
void __exit lqdeu_fini_async_aes(void);
|
||||
void __exit lqdeu_fini_async_des(void);
|
||||
|
@ -39,6 +39,7 @@
|
||||
#include <asm/byteorder.h>
|
||||
#include <linux/skbuff.h>
|
||||
#include <linux/netdevice.h>
|
||||
#include <linux/version.h>
|
||||
|
||||
// must match the size of memory block allocated for g_dma_block and g_dma_block2
|
||||
#define DEU_MAX_PACKET_SIZE (PAGE_SIZE >> 1)
|
||||
@ -53,7 +54,11 @@ typedef struct ifx_deu_device {
|
||||
int recv_count;
|
||||
int packet_size;
|
||||
int packet_num;
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,13,0))
|
||||
wait_queue_entry_t wait;
|
||||
#else
|
||||
wait_queue_t wait;
|
||||
#endif
|
||||
} _ifx_deu_device;
|
||||
|
||||
extern _ifx_deu_device ifx_deu[1];
|
||||
|
@ -276,11 +276,11 @@ static struct shash_alg ifxdeu_md5_alg = {
|
||||
}
|
||||
};
|
||||
|
||||
/*! \fn int __init ifxdeu_init_md5 (void)
|
||||
/*! \fn int ifxdeu_init_md5 (void)
|
||||
* \ingroup IFX_MD5_FUNCTIONS
|
||||
* \brief initialize md5 driver
|
||||
*/
|
||||
int __init ifxdeu_init_md5 (void)
|
||||
int ifxdeu_init_md5 (void)
|
||||
{
|
||||
int ret = -ENOSYS;
|
||||
|
||||
@ -298,12 +298,12 @@ md5_err:
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*! \fn void __exit ifxdeu_fini_md5 (void)
|
||||
/*! \fn void ifxdeu_fini_md5 (void)
|
||||
* \ingroup IFX_MD5_FUNCTIONS
|
||||
* \brief unregister md5 driver
|
||||
*/
|
||||
|
||||
void __exit ifxdeu_fini_md5 (void)
|
||||
void ifxdeu_fini_md5 (void)
|
||||
{
|
||||
crypto_unregister_shash(&ifxdeu_md5_alg);
|
||||
|
||||
|
@ -352,11 +352,11 @@ static struct shash_alg ifxdeu_md5_hmac_alg = {
|
||||
}
|
||||
};
|
||||
|
||||
/*! \fn int __init ifxdeu_init_md5_hmac (void)
|
||||
/*! \fn int ifxdeu_init_md5_hmac (void)
|
||||
* \ingroup IFX_MD5_HMAC_FUNCTIONS
|
||||
* \brief initialize md5 hmac driver
|
||||
*/
|
||||
int __init ifxdeu_init_md5_hmac (void)
|
||||
int ifxdeu_init_md5_hmac (void)
|
||||
{
|
||||
|
||||
int ret = -ENOSYS;
|
||||
@ -375,11 +375,11 @@ md5_hmac_err:
|
||||
return ret;
|
||||
}
|
||||
|
||||
/** \fn void __exit ifxdeu_fini_md5_hmac (void)
|
||||
/** \fn void ifxdeu_fini_md5_hmac (void)
|
||||
* \ingroup IFX_MD5_HMAC_FUNCTIONS
|
||||
* \brief unregister md5 hmac driver
|
||||
*/
|
||||
void __exit ifxdeu_fini_md5_hmac (void)
|
||||
void ifxdeu_fini_md5_hmac (void)
|
||||
{
|
||||
crypto_unregister_shash(&ifxdeu_md5_hmac_alg);
|
||||
}
|
||||
|
@ -266,11 +266,11 @@ static struct shash_alg ifxdeu_sha1_alg = {
|
||||
};
|
||||
|
||||
|
||||
/*! \fn int __init ifxdeu_init_sha1 (void)
|
||||
/*! \fn int ifxdeu_init_sha1 (void)
|
||||
* \ingroup IFX_SHA1_FUNCTIONS
|
||||
* \brief initialize sha1 driver
|
||||
*/
|
||||
int __init ifxdeu_init_sha1 (void)
|
||||
int ifxdeu_init_sha1 (void)
|
||||
{
|
||||
int ret = -ENOSYS;
|
||||
|
||||
@ -288,11 +288,11 @@ sha1_err:
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*! \fn void __exit ifxdeu_fini_sha1 (void)
|
||||
/*! \fn void ifxdeu_fini_sha1 (void)
|
||||
* \ingroup IFX_SHA1_FUNCTIONS
|
||||
* \brief unregister sha1 driver
|
||||
*/
|
||||
void __exit ifxdeu_fini_sha1 (void)
|
||||
void ifxdeu_fini_sha1 (void)
|
||||
{
|
||||
crypto_unregister_shash(&ifxdeu_sha1_alg);
|
||||
|
||||
|
@ -342,11 +342,11 @@ static struct shash_alg ifxdeu_sha1_hmac_alg = {
|
||||
};
|
||||
|
||||
|
||||
/*! \fn int __init ifxdeu_init_sha1_hmac (void)
|
||||
/*! \fn int ifxdeu_init_sha1_hmac (void)
|
||||
* \ingroup IFX_SHA1_HMAC_FUNCTIONS
|
||||
* \brief initialize sha1 hmac driver
|
||||
*/
|
||||
int __init ifxdeu_init_sha1_hmac (void)
|
||||
int ifxdeu_init_sha1_hmac (void)
|
||||
{
|
||||
int ret = -ENOSYS;
|
||||
|
||||
@ -365,11 +365,11 @@ sha1_err:
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*! \fn void __exit ifxdeu_fini_sha1_hmac (void)
|
||||
/*! \fn void ifxdeu_fini_sha1_hmac (void)
|
||||
* \ingroup IFX_SHA1_HMAC_FUNCTIONS
|
||||
* \brief unregister sha1 hmac driver
|
||||
*/
|
||||
void __exit ifxdeu_fini_sha1_hmac (void)
|
||||
void ifxdeu_fini_sha1_hmac (void)
|
||||
{
|
||||
|
||||
crypto_unregister_shash(&ifxdeu_sha1_hmac_alg);
|
||||
|
@ -8,7 +8,7 @@ include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=lib_ifxos
|
||||
PKG_VERSION:=1.5.19
|
||||
PKG_RELEASE:=3
|
||||
PKG_RELEASE:=4
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
||||
PKG_SOURCE_URL:=https://github.com/xdarklight/$(PKG_NAME)/archive/v$(PKG_VERSION)
|
||||
@ -17,8 +17,7 @@ PKG_MAINTAINER:=John Crispin <john@phrozen.org>
|
||||
PKG_LICENSE:=GPL-2.0 BSD-2-Clause
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
|
||||
|
||||
PKG_USE_MIPS16:=0
|
||||
PKG_ASLR_PIE:=0
|
||||
PKG_FIXUP:=autoreconf
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
@ -0,0 +1,22 @@
|
||||
--- a/src/linux/ifxos_linux_copy_user_space_drv.c
|
||||
+++ b/src/linux/ifxos_linux_copy_user_space_drv.c
|
||||
@@ -29,7 +29,7 @@
|
||||
#ifdef MODULE
|
||||
#include <linux/module.h>
|
||||
#endif
|
||||
-#include <asm/uaccess.h>
|
||||
+#include <linux/uaccess.h>
|
||||
|
||||
#include "ifx_types.h"
|
||||
#include "ifxos_rt_if_check.h"
|
||||
--- a/src/linux/ifxos_linux_socket_drv.c
|
||||
+++ b/src/linux/ifxos_linux_socket_drv.c
|
||||
@@ -25,7 +25,7 @@
|
||||
#endif
|
||||
#include <linux/in.h>
|
||||
#include <linux/net.h>
|
||||
-#include <asm/uaccess.h>
|
||||
+#include <linux/uaccess.h>
|
||||
|
||||
#include "ifx_types.h"
|
||||
#include "ifxos_rt_if_check.h"
|
19
package/kernel/lantiq/ltq-ifxos/patches/020-no-O3.patch
Normal file
19
package/kernel/lantiq/ltq-ifxos/patches/020-no-O3.patch
Normal file
@ -0,0 +1,19 @@
|
||||
--- a/src/Makefile.am
|
||||
+++ b/src/Makefile.am
|
||||
@@ -45,8 +45,6 @@ endif !HAVE_GCC
|
||||
|
||||
if ENABLE_DEBUG
|
||||
used_gcc_cflags += -O1 -g
|
||||
-else
|
||||
-used_gcc_cflags += -O3
|
||||
endif
|
||||
|
||||
AM_CFLAGS = \
|
||||
@@ -92,7 +90,6 @@ endif
|
||||
drvifxos_additional_cflags=\
|
||||
-DLINUX \
|
||||
-D__LINUX__ \
|
||||
- -O \
|
||||
-D__KERNEL__ \
|
||||
-DMODULE \
|
||||
-DEXPORT_SYMTAB
|
@ -37,8 +37,6 @@ Ref: https://bugs.lede-project.org/index.php?do=details&task_id=1196
|
||||
src/Makefile.am | 6 +-----
|
||||
1 file changed, 1 insertion(+), 5 deletions(-)
|
||||
|
||||
diff --git a/src/Makefile.am b/src/Makefile.am
|
||||
index f95668f..d232e7f 100644
|
||||
--- a/src/Makefile.am
|
||||
+++ b/src/Makefile.am
|
||||
@@ -14,11 +14,7 @@ lib_LIBRARIES = libifxos.a
|
||||
@ -54,6 +52,3 @@ index f95668f..d232e7f 100644
|
||||
|
||||
if HAVE_GCC
|
||||
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
|
@ -128,7 +128,9 @@ static int ptm_stop(struct net_device *);
|
||||
static unsigned int ptm_poll(int, unsigned int);
|
||||
static int ptm_napi_poll(struct napi_struct *, int);
|
||||
static int ptm_hard_start_xmit(struct sk_buff *, struct net_device *);
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,10,0))
|
||||
static int ptm_change_mtu(struct net_device *, int);
|
||||
#endif
|
||||
static int ptm_ioctl(struct net_device *, struct ifreq *, int);
|
||||
static void ptm_tx_timeout(struct net_device *);
|
||||
|
||||
@ -247,7 +249,9 @@ static struct net_device_ops g_ptm_netdev_ops = {
|
||||
.ndo_start_xmit = ptm_hard_start_xmit,
|
||||
.ndo_validate_addr = eth_validate_addr,
|
||||
.ndo_set_mac_address = eth_mac_addr,
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,10,0))
|
||||
.ndo_change_mtu = ptm_change_mtu,
|
||||
#endif
|
||||
.ndo_do_ioctl = ptm_ioctl,
|
||||
.ndo_tx_timeout = ptm_tx_timeout,
|
||||
};
|
||||
@ -285,6 +289,10 @@ static void ptm_setup(struct net_device *dev, int ndev)
|
||||
|
||||
/* hook network operations */
|
||||
dev->netdev_ops = &g_ptm_netdev_ops;
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0))
|
||||
/* Allow up to 1508 bytes, for RFC4638 */
|
||||
dev->max_mtu = ETH_DATA_LEN + 8;
|
||||
#endif
|
||||
netif_napi_add(dev, &g_ptm_priv_data.itf[ndev].napi, ptm_napi_poll, 25);
|
||||
dev->watchdog_timeo = ETH_WATCHDOG_TIMEOUT;
|
||||
|
||||
@ -459,7 +467,7 @@ PTM_HARD_START_XMIT_FAIL:
|
||||
g_ptm_priv_data.itf[ndev].stats.tx_dropped++;
|
||||
return NETDEV_TX_OK;
|
||||
}
|
||||
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,10,0))
|
||||
static int ptm_change_mtu(struct net_device *dev, int mtu)
|
||||
{
|
||||
/* Allow up to 1508 bytes, for RFC4638 */
|
||||
@ -468,6 +476,7 @@ static int ptm_change_mtu(struct net_device *dev, int mtu)
|
||||
dev->mtu = mtu;
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
static int ptm_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
|
||||
{
|
||||
@ -654,7 +663,9 @@ static INLINE int mailbox_rx_irq_handler(unsigned int ch) // return: < 0 - de
|
||||
skb->dev = g_net_dev[ndev];
|
||||
skb->protocol = eth_type_trans(skb, skb->dev);
|
||||
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,11,0))
|
||||
g_net_dev[ndev]->last_rx = jiffies;
|
||||
#endif
|
||||
|
||||
netif_rx_ret = netif_receive_skb(skb);
|
||||
|
||||
|
@ -74,7 +74,9 @@ static int ptm_stop(struct net_device *);
|
||||
static unsigned int ptm_poll(int, unsigned int);
|
||||
static int ptm_napi_poll(struct napi_struct *, int);
|
||||
static int ptm_hard_start_xmit(struct sk_buff *, struct net_device *);
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,10,0))
|
||||
static int ptm_change_mtu(struct net_device *, int);
|
||||
#endif
|
||||
static int ptm_ioctl(struct net_device *, struct ifreq *, int);
|
||||
static void ptm_tx_timeout(struct net_device *);
|
||||
|
||||
@ -115,7 +117,9 @@ static struct net_device_ops g_ptm_netdev_ops = {
|
||||
.ndo_start_xmit = ptm_hard_start_xmit,
|
||||
.ndo_validate_addr = eth_validate_addr,
|
||||
.ndo_set_mac_address = eth_mac_addr,
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,10,0))
|
||||
.ndo_change_mtu = ptm_change_mtu,
|
||||
#endif
|
||||
.ndo_do_ioctl = ptm_ioctl,
|
||||
.ndo_tx_timeout = ptm_tx_timeout,
|
||||
};
|
||||
@ -141,6 +145,10 @@ static void ptm_setup(struct net_device *dev, int ndev)
|
||||
netif_carrier_off(dev);
|
||||
|
||||
dev->netdev_ops = &g_ptm_netdev_ops;
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0))
|
||||
/* Allow up to 1508 bytes, for RFC4638 */
|
||||
dev->max_mtu = ETH_DATA_LEN + 8;
|
||||
#endif
|
||||
netif_napi_add(dev, &g_ptm_priv_data.itf[ndev].napi, ptm_napi_poll, 16);
|
||||
dev->watchdog_timeo = ETH_WATCHDOG_TIMEOUT;
|
||||
|
||||
@ -218,7 +226,9 @@ static unsigned int ptm_poll(int ndev, unsigned int work_to_do)
|
||||
skb->dev = g_net_dev[0];
|
||||
skb->protocol = eth_type_trans(skb, skb->dev);
|
||||
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,11,0))
|
||||
g_net_dev[0]->last_rx = jiffies;
|
||||
#endif
|
||||
|
||||
netif_receive_skb(skb);
|
||||
|
||||
@ -367,6 +377,7 @@ PTM_HARD_START_XMIT_FAIL:
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,10,0))
|
||||
static int ptm_change_mtu(struct net_device *dev, int mtu)
|
||||
{
|
||||
/* Allow up to 1508 bytes, for RFC4638 */
|
||||
@ -375,6 +386,7 @@ static int ptm_change_mtu(struct net_device *dev, int mtu)
|
||||
dev->mtu = mtu;
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
static int ptm_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
|
||||
{
|
||||
|
@ -10,14 +10,14 @@ include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=drv_tapi
|
||||
PKG_VERSION:=3.13.0
|
||||
PKG_RELEASE:=3
|
||||
PKG_RELEASE:=4
|
||||
|
||||
PKG_SOURCE:=drv_tapi-$(PKG_VERSION).tar.bz2
|
||||
PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
|
||||
PKG_HASH:=109374d52872716570fca3fef3b93c9a93159a804dfd42484b19152b825af5c0
|
||||
PKG_MAINTAINER:=John Crispin <john@phrozen.org>
|
||||
|
||||
PKG_USE_MIPS16:=0
|
||||
PKG_ASLR_PIE:=0
|
||||
PKG_CHECK_FORMAT_SECURITY:=0
|
||||
PKG_FIXUP:=autoreconf
|
||||
|
||||
|
22
package/kernel/lantiq/ltq-tapi/patches/010-fix-compile.patch
Normal file
22
package/kernel/lantiq/ltq-tapi/patches/010-fix-compile.patch
Normal file
@ -0,0 +1,22 @@
|
||||
--- a/src/drv_tapi_linux.c
|
||||
+++ b/src/drv_tapi_linux.c
|
||||
@@ -54,6 +54,10 @@
|
||||
#include <linux/workqueue.h> /* LINUX 2.6 We need work_struct */
|
||||
#include <linux/device.h>
|
||||
#include <linux/sched.h>
|
||||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0))
|
||||
+ #include <linux/sched/signal.h>
|
||||
+ #include <linux/sched/types.h>
|
||||
+#endif
|
||||
#undef CONFIG_DEVFS_FS
|
||||
#ifndef UTS_RELEASE
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33))
|
||||
@@ -184,7 +188,7 @@ MODULE_PARM_DESC(block_egress_tasklet, "
|
||||
MODULE_PARM_DESC(block_ingress_tasklet, "block the execution of the ingress tasklet, i.e. force to use the RT kernel thread");
|
||||
|
||||
/** The driver callbacks which will be registered with the kernel*/
|
||||
-static struct file_operations tapi_fops = {0};
|
||||
+static struct file_operations tapi_fops;
|
||||
|
||||
/* ============================= */
|
||||
/* Global function definition */
|
@ -0,0 +1,27 @@
|
||||
--- a/src/Makefile.am
|
||||
+++ b/src/Makefile.am
|
||||
@@ -122,13 +122,9 @@ endif
|
||||
|
||||
## flags for the driver
|
||||
if USE_MODULE
|
||||
-drv_tapi_CFLAGS = -DLINUX -D__KERNEL__ -DMODULE -Wno-format -DEXPORT_SYMTAB $(AM_CFLAGS)
|
||||
+drv_tapi_CFLAGS = -DLINUX -D__KERNEL__ -DMODULE -DEXPORT_SYMTAB $(AM_CFLAGS)
|
||||
else
|
||||
-drv_tapi_CFLAGS = -DLINUX -D__KERNEL__ -Wno-format -DEXPORT_SYMTAB $(AM_CFLAGS)
|
||||
-endif
|
||||
-
|
||||
-if KERNEL_2_6
|
||||
-drv_tapi_CFLAGS += -fno-common
|
||||
+drv_tapi_CFLAGS = -DLINUX -D__KERNEL__ -DEXPORT_SYMTAB $(AM_CFLAGS)
|
||||
endif
|
||||
|
||||
|
||||
@@ -165,7 +161,7 @@ drv_tapi.ko: $(drv_tapi_SOURCES) $(EXTRA
|
||||
@echo "# drv_tapi: Generated to build Linux 2.6.x kernel object" > $(PWD)/Kbuild
|
||||
@echo "obj-m := $(subst .ko,.o,$@)" >> $(PWD)/Kbuild
|
||||
@echo "$(subst .ko,,$@)-y := $(drv_tapi_OBJS)" >> $(PWD)/Kbuild
|
||||
- @echo "EXTRA_CFLAGS := -DHAVE_CONFIG_H $(CFLAGS) $(drv_tapi_CFLAGS) $(INCLUDES)" >> $(PWD)/Kbuild
|
||||
+ @echo "EXTRA_CFLAGS := -DHAVE_CONFIG_H $(drv_tapi_CFLAGS) $(INCLUDES)" >> $(PWD)/Kbuild
|
||||
$(MAKE) ARCH=@KERNEL_ARCH@ -C @KERNEL_BUILD_PATH@ O=@KERNEL_BUILD_PATH@ M=$(PWD) modules
|
||||
|
||||
clean-generic:
|
@ -1,6 +1,6 @@
|
||||
--- a/src/drv_tapi_linux.c
|
||||
+++ b/src/drv_tapi_linux.c
|
||||
@@ -552,7 +552,7 @@ static ssize_t ifx_tapi_write (struct fi
|
||||
@@ -556,7 +556,7 @@ static ssize_t ifx_tapi_write (struct fi
|
||||
IFX_uint8_t *pData;
|
||||
IFX_size_t buf_size;
|
||||
#endif /* TAPI_PACKET */
|
||||
|
@ -10,7 +10,7 @@
|
||||
#include <asm/io.h>
|
||||
|
||||
#ifdef LINUX_2_6
|
||||
@@ -65,7 +67,9 @@
|
||||
@@ -69,7 +71,9 @@
|
||||
#else
|
||||
#include <linux/tqueue.h>
|
||||
#include <linux/sched.h>
|
||||
@ -20,7 +20,7 @@
|
||||
#endif /* LINUX_2_6 */
|
||||
|
||||
#include "drv_tapi.h"
|
||||
@@ -133,8 +137,13 @@
|
||||
@@ -137,8 +141,13 @@ static ssize_t ifx_tapi_write(struct fil
|
||||
size_t count, loff_t * ppos);
|
||||
static ssize_t ifx_tapi_read(struct file * filp, char *buf,
|
||||
size_t length, loff_t * ppos);
|
||||
@ -34,7 +34,7 @@
|
||||
static unsigned int ifx_tapi_poll (struct file *filp, poll_table *table);
|
||||
|
||||
#ifdef CONFIG_PROC_FS
|
||||
@@ -218,7 +227,11 @@
|
||||
@@ -222,7 +231,11 @@ IFX_return_t TAPI_OS_RegisterLLDrv (IFX_
|
||||
IFX_char_t *pRegDrvName = IFX_NULL;
|
||||
IFX_int32_t ret = 0;
|
||||
|
||||
@ -46,7 +46,7 @@
|
||||
{
|
||||
#ifdef MODULE
|
||||
tapi_fops.owner = THIS_MODULE;
|
||||
@@ -226,7 +239,11 @@
|
||||
@@ -230,7 +243,11 @@ IFX_return_t TAPI_OS_RegisterLLDrv (IFX_
|
||||
tapi_fops.read = ifx_tapi_read;
|
||||
tapi_fops.write = ifx_tapi_write;
|
||||
tapi_fops.poll = ifx_tapi_poll;
|
||||
@ -58,7 +58,7 @@
|
||||
tapi_fops.open = ifx_tapi_open;
|
||||
tapi_fops.release = ifx_tapi_release;
|
||||
}
|
||||
@@ -881,8 +898,13 @@
|
||||
@@ -885,8 +902,13 @@ static IFX_uint32_t ifx_tapi_poll (struc
|
||||
- 0 and positive values - success
|
||||
- negative value - ioctl failed
|
||||
*/
|
||||
@ -72,7 +72,7 @@
|
||||
{
|
||||
TAPI_FD_PRIV_DATA_t *pTapiPriv;
|
||||
IFX_TAPI_ioctlCtx_t ctx;
|
||||
@@ -3721,7 +3743,9 @@
|
||||
@@ -3725,7 +3747,9 @@ IFX_void_t TAPI_OS_ThreadKill(IFXOS_Thre
|
||||
kernel lock (lock_kernel()). The lock must be
|
||||
grabbed before changing the terminate
|
||||
flag and released after the down() call. */
|
||||
@ -83,7 +83,7 @@
|
||||
mb();
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28)
|
||||
kill_proc(pThrCntrl->tid, SIGKILL, 1);
|
||||
@@ -3729,8 +3753,10 @@
|
||||
@@ -3733,8 +3757,10 @@ IFX_void_t TAPI_OS_ThreadKill(IFXOS_Thre
|
||||
kill_pid(find_vpid(pThrCntrl->tid), SIGKILL, 1);
|
||||
#endif
|
||||
/* release the big kernel lock */
|
||||
|
@ -1,8 +1,6 @@
|
||||
Index: drv_tapi-3.13.0/src/drv_tapi_linux.c
|
||||
===================================================================
|
||||
--- drv_tapi-3.13.0.orig/src/drv_tapi_linux.c 2013-09-05 22:28:16.868419283 +0200
|
||||
+++ drv_tapi-3.13.0/src/drv_tapi_linux.c 2013-09-05 22:32:37.396425814 +0200
|
||||
@@ -93,6 +93,8 @@
|
||||
--- a/src/drv_tapi_linux.c
|
||||
+++ b/src/drv_tapi_linux.c
|
||||
@@ -97,6 +97,8 @@
|
||||
#include "drv_tapi_announcements.h"
|
||||
#endif /* TAPI_ANNOUNCEMENTS */
|
||||
|
||||
|
@ -9,7 +9,7 @@ include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=ltq-vdsl-vr9-mei
|
||||
PKG_VERSION:=1.5.17.6
|
||||
PKG_RELEASE:=3
|
||||
PKG_RELEASE:=4
|
||||
|
||||
PKG_BASE_NAME:=drv_mei_cpe
|
||||
PKG_SOURCE:=$(PKG_BASE_NAME)-$(PKG_VERSION).tar.gz
|
||||
@ -19,10 +19,10 @@ PKG_HASH:=94f6904364348b7f74087e721968abc28b2564fb9bd8899aa930d36490387662
|
||||
PKG_FIXUP:=autoreconf
|
||||
PKG_FLAGS:=nonshared
|
||||
PKG_MAINTAINER:=John Crispin <john@phrozen.org>
|
||||
PKG_USE_MIPS16:=0
|
||||
PKG_LICENSE:=GPL-2.0 BSD-2-Clause
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
|
||||
PKG_ASLR_PIE:=0
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
@ -65,7 +65,7 @@ CONFIGURE_ARGS += \
|
||||
--enable-error_print \
|
||||
--enable-ifxos-include="-I$(STAGING_DIR)/usr/include/ifxos/" \
|
||||
--enable-ifxos-library="-L$(STAGING_DIR)/usr/lib" \
|
||||
--enable-add_drv_cflags="-DMEI_DRV_ATM_PTM_INTERFACE_ENABLE=1 -fno-pic -mlong-calls -O2 -g0" \
|
||||
--enable-add_drv_cflags="-DMEI_DRV_ATM_PTM_INTERFACE_ENABLE=1" \
|
||||
--enable-linux-26 \
|
||||
--enable-kernelbuild="$(LINUX_DIR)" \
|
||||
--enable-drv_test_appl=yes \
|
||||
|
@ -0,0 +1,44 @@
|
||||
--- a/src/drv_mei_cpe_linux.h
|
||||
+++ b/src/drv_mei_cpe_linux.h
|
||||
@@ -31,6 +31,9 @@
|
||||
#include <linux/module.h>
|
||||
|
||||
#include <linux/sched.h>
|
||||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0))
|
||||
+#include <linux/sched/signal.h>
|
||||
+#endif
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/version.h>
|
||||
#include <linux/crc32.h>
|
||||
@@ -121,7 +124,11 @@ typedef int (*MEI_RequestIrq_WrapLinux_t
|
||||
/**
|
||||
Function typedef for the Linux free_irq()
|
||||
*/
|
||||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,12,0))
|
||||
+typedef const void *(*MEI_FreeIrq_WrapLinux_t)( unsigned int usedIrq,
|
||||
+#else
|
||||
typedef void (*MEI_FreeIrq_WrapLinux_t)( unsigned int usedIrq,
|
||||
+#endif
|
||||
void *usedDevId );
|
||||
|
||||
|
||||
--- a/src/drv_mei_cpe_linux.c
|
||||
+++ b/src/drv_mei_cpe_linux.c
|
||||
@@ -129,7 +129,7 @@ static int MEI_module_init(void);
|
||||
#endif
|
||||
|
||||
#if (MEI_DRV_LKM_ENABLE == 1) && (MEI_SUPPORT_DEVICE_VR10_320 != 1)
|
||||
-static void __exit MEI_module_exit(void);
|
||||
+static void MEI_module_exit(void);
|
||||
#else
|
||||
static void MEI_module_exit(void);
|
||||
#endif
|
||||
@@ -2188,7 +2188,7 @@ static int MEI_module_init (void)
|
||||
Called by the kernel.
|
||||
*/
|
||||
#if (MEI_DRV_LKM_ENABLE == 1) && (MEI_SUPPORT_DEVICE_VR10_320 != 1)
|
||||
-static void __exit MEI_module_exit (void)
|
||||
+static void MEI_module_exit (void)
|
||||
#else
|
||||
static void MEI_module_exit (void)
|
||||
#endif
|
@ -0,0 +1,21 @@
|
||||
--- a/src/Makefile.am
|
||||
+++ b/src/Makefile.am
|
||||
@@ -213,8 +213,7 @@ drv_mei_cpe_common_cflags = $(AM_CFLAGS)
|
||||
else
|
||||
|
||||
drv_mei_cpe_common_cflags = \
|
||||
- $(AM_CFLAGS) -D__KERNEL__ -DLINUX -D__linux__ -DMODULE -DEXPORT_SYMTAB \
|
||||
- -pipe -Wimplicit -Wunused -Wuninitialized -Wsign-compare -Wstrict-aliasing
|
||||
+ -D__KERNEL__ -DLINUX -D__linux__ -DMODULE -DEXPORT_SYMTAB
|
||||
|
||||
endif
|
||||
|
||||
@@ -354,7 +353,7 @@ drv_mei_cpe.ko: $(drv_mei_cpe_SOURCES)
|
||||
@echo -e "# drv_mei_cpe: Generated to build Linux 2.6.x kernel object" > $(PWD)/Kbuild
|
||||
@echo -e "obj-m := $(subst .ko,.o,$@)" >> $(PWD)/Kbuild
|
||||
@echo -e "$(subst .ko,,$@)-y := $(drv_mei_cpe_OBJS)" >> $(PWD)/Kbuild
|
||||
- @echo -e "EXTRA_CFLAGS := $(CFLAGS) $(drv_mei_cpe_CFLAGS) -I@abs_srcdir@ -I@abs_srcdir@/auto_header $(IFXOS_INCLUDE_PATH)" >> $(PWD)/Kbuild
|
||||
+ @echo -e "EXTRA_CFLAGS := $(drv_mei_cpe_CFLAGS) -I@abs_srcdir@ -I@abs_srcdir@/auto_header $(IFXOS_INCLUDE_PATH)" >> $(PWD)/Kbuild
|
||||
$(MAKE) ARCH=@KERNEL_ARCH@ -C @KERNEL_BUILD_PATH@ O=@KERNEL_BUILD_PATH@ M=$(PWD) modules
|
||||
|
||||
clean-generic:
|
@ -10,7 +10,7 @@
|
||||
|
||||
--- a/src/drv_mei_cpe_linux.h
|
||||
+++ b/src/drv_mei_cpe_linux.h
|
||||
@@ -57,12 +57,6 @@
|
||||
@@ -60,12 +60,6 @@
|
||||
#include <linux/poll.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
|
@ -9,7 +9,7 @@ include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=ltq-vdsl-vr9
|
||||
PKG_VERSION:=4.17.18.6
|
||||
PKG_RELEASE:=2
|
||||
PKG_RELEASE:=3
|
||||
|
||||
PKG_BASE_NAME:=drv_dsl_cpe_api
|
||||
PKG_SOURCE:=$(PKG_BASE_NAME)_vrx-$(PKG_VERSION).tar.gz
|
||||
@ -19,8 +19,8 @@ PKG_HASH:=b4966a60653acc49254b168c6cc9c49eb36c54548e763617788aa4f252a29f21
|
||||
PKG_LICENSE:=GPL-2.0 BSD-2-Clause
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
|
||||
|
||||
PKG_USE_MIPS16:=0
|
||||
PKG_ASLR_PIE:=0
|
||||
PKG_FIXUP:=autoreconf
|
||||
|
||||
PKG_MAINTAINER:=John Crispin <john@phrozen.org>
|
||||
|
||||
@ -42,8 +42,6 @@ define Package/ltq-vdsl-vr9/description
|
||||
- VRX200 Family
|
||||
endef
|
||||
|
||||
EXTRA_CFLAGS = -fno-pic -mno-abicalls -mlong-calls -G 0
|
||||
|
||||
MAKE_FLAGS += \
|
||||
SHELL="$(BASH)"
|
||||
|
||||
|
12
package/kernel/lantiq/ltq-vdsl/patches/001-fix-compile.patch
Normal file
12
package/kernel/lantiq/ltq-vdsl/patches/001-fix-compile.patch
Normal file
@ -0,0 +1,12 @@
|
||||
--- a/src/include/drv_dsl_cpe_os_linux.h
|
||||
+++ b/src/include/drv_dsl_cpe_os_linux.h
|
||||
@@ -33,6 +33,9 @@
|
||||
#endif
|
||||
|
||||
#include <linux/sched.h>
|
||||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0))
|
||||
+#include <linux/sched/signal.h>
|
||||
+#endif
|
||||
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33))
|
||||
#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
|
@ -0,0 +1,32 @@
|
||||
--- a/src/Makefile.am
|
||||
+++ b/src/Makefile.am
|
||||
@@ -244,10 +244,7 @@ else
|
||||
drv_dsl_cpe_api_common_mod_cflags =
|
||||
endif
|
||||
|
||||
-drv_dsl_cpe_api_common_cflags = -DLINUX -D__LINUX__ -D__KERNEL__ -DEXPORT_SYMTAB \
|
||||
- -pipe -Wall -Wformat -Wimplicit -Wunused -Wswitch -Wcomment -Winline \
|
||||
- -Wuninitialized -Wparentheses -Wsign-compare -Wreturn-type \
|
||||
- -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common
|
||||
+drv_dsl_cpe_api_common_cflags = -DLINUX -D__LINUX__ -D__KERNEL__ -DEXPORT_SYMTAB
|
||||
|
||||
if DSL_DBG_MAX_LEVEL_SET
|
||||
drv_dsl_cpe_api_common_cflags += -DDSL_DBG_MAX_LEVEL=$(DSL_DBG_MAX_LEVEL_PRE)
|
||||
@@ -257,7 +254,7 @@ endif
|
||||
drv_dsl_cpe_api_target_cflags = $(ADD_DRV_CFLAGS)
|
||||
|
||||
# compile cflags
|
||||
-drv_dsl_cpe_api_compile_cflags = $(EXTRA_DRV_CFLAGS)
|
||||
+drv_dsl_cpe_api_compile_cflags =
|
||||
|
||||
if !KERNEL_2_6
|
||||
# the headerfile of linux kernels 2.6.x contain to much arithmetic
|
||||
@@ -311,7 +308,7 @@ drv_dsl_cpe_api.ko: $(drv_dsl_cpe_api_SO
|
||||
@echo -e "# drv_dsl_cpe_api: Generated to build Linux 2.6.x kernel object" > $(PWD)/Kbuild
|
||||
@echo -e "obj-m := $(subst .ko,.o,$@)" >> $(PWD)/Kbuild
|
||||
@echo -e "$(subst .ko,,$@)-y := $(drv_dsl_cpe_api_OBJS)" >> $(PWD)/Kbuild
|
||||
- @echo -e "EXTRA_CFLAGS := $(CFLAGS) -DHAVE_CONFIG_H $(drv_dsl_cpe_api_CFLAGS) $(DSL_DRIVER_INCL_PATH) $(IFXOS_INCLUDE_PATH) -I@abs_srcdir@/include -I$(PWD)/include" >> $(PWD)/Kbuild
|
||||
+ @echo -e "EXTRA_CFLAGS := -DHAVE_CONFIG_H $(drv_dsl_cpe_api_CFLAGS) $(DSL_DRIVER_INCL_PATH) $(IFXOS_INCLUDE_PATH) -I@abs_srcdir@/include -I$(PWD)/include" >> $(PWD)/Kbuild
|
||||
$(MAKE) ARCH=@KERNEL_ARCH@ -C @KERNEL_BUILD_PATH@ O=@KERNEL_BUILD_PATH@ M=$(PWD) modules
|
||||
|
||||
clean-generic:
|
@ -10,14 +10,14 @@ include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=drv_vmmc
|
||||
PKG_VERSION:=1.9.0
|
||||
PKG_RELEASE:=2
|
||||
PKG_RELEASE:=3
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
||||
PKG_HASH:=707f515eb727c032418c4da67d7e86884bb56cdc2a606e8f6ded6057d8767e57
|
||||
PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
|
||||
PKG_MAINTAINER:=John Crispin <john@phrozen.org>
|
||||
|
||||
PKG_USE_MIPS16:=0
|
||||
PKG_ASLR_PIE:=0
|
||||
PKG_CHECK_FORMAT_SECURITY:=0
|
||||
PKG_FIXUP:=autoreconf
|
||||
|
||||
|
@ -0,0 +1,19 @@
|
||||
--- a/src/Makefile.am
|
||||
+++ b/src/Makefile.am
|
||||
@@ -224,7 +224,6 @@ install-exec-hook: $(bin_PROGRAMS)
|
||||
|
||||
# Extra rule for linux-2.6 kernel object
|
||||
if KERNEL_2_6
|
||||
-drv_vmmc_CFLAGS += -fno-common
|
||||
drv_vmmc_OBJS = "$(subst .c,.o, $(drv_vmmc_SOURCES) $(nodist_drv_vmmc_SOURCES))"
|
||||
|
||||
drv_vmmc.ko: $(drv_vmmc_SOURCES) $(EXTRA_DIST)
|
||||
@@ -239,7 +238,7 @@ drv_vmmc.ko: $(drv_vmmc_SOURCES) $(EXTRA
|
||||
@echo "# drv_vmmc: Generated to build Linux 2.6.x kernel object" > $(PWD)/Kbuild
|
||||
@echo "obj-m := $(subst .ko,.o,$@)" >> $(PWD)/Kbuild
|
||||
@echo "$(subst .ko,,$@)-y := $(drv_vmmc_OBJS)" >> $(PWD)/Kbuild
|
||||
- @echo "EXTRA_CFLAGS := -DHAVE_CONFIG_H $(CFLAGS) $(drv_vmmc_CFLAGS) $(INCLUDES)" >> $(PWD)/Kbuild
|
||||
+ @echo "EXTRA_CFLAGS := -DHAVE_CONFIG_H $(drv_vmmc_CFLAGS) $(INCLUDES)" >> $(PWD)/Kbuild
|
||||
$(MAKE) ARCH=@KERNEL_ARCH@ -C @KERNEL_BUILD_PATH@ O=@KERNEL_BUILD_PATH@ M=$(PWD) modules
|
||||
|
||||
clean-generic:
|
@ -335,7 +335,10 @@ static int __init gpio_apu2_init (void)
|
||||
if (!board_name \
|
||||
|| !board_vendor \
|
||||
|| strcasecmp(board_vendor, "PC Engines") \
|
||||
|| (strcasecmp(board_name, "apu2") && strcasecmp(board_name, "apu3"))) {
|
||||
|| (strcasecmp(board_name, "apu2") \
|
||||
&& strcasecmp(board_name, "apu3") \
|
||||
&& strcasecmp(board_name, "PC Engines apu2") \
|
||||
&& strcasecmp(board_name, "PC Engines apu3"))) {
|
||||
err = -ENODEV;
|
||||
goto exit;
|
||||
}
|
||||
|
@ -47,22 +47,6 @@ define AddDepends/can
|
||||
endef
|
||||
|
||||
|
||||
define KernelPackage/can-raw
|
||||
TITLE:=Raw CAN Protcol
|
||||
KCONFIG:=CONFIG_CAN_RAW
|
||||
FILES:=$(LINUX_DIR)/net/can/can-raw.ko
|
||||
AUTOLOAD:=$(call AutoProbe,can-raw)
|
||||
$(call AddDepends/can)
|
||||
endef
|
||||
|
||||
define KernelPackage/can-raw/description
|
||||
The raw CAN protocol option offers access to the CAN bus via
|
||||
the BSD socket API.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,can-raw))
|
||||
|
||||
|
||||
define KernelPackage/can-bcm
|
||||
TITLE:=Broadcast Manager CAN Protcol
|
||||
KCONFIG:=CONFIG_CAN_BCM
|
||||
@ -80,6 +64,74 @@ endef
|
||||
$(eval $(call KernelPackage,can-bcm))
|
||||
|
||||
|
||||
define KernelPackage/can-c-can
|
||||
TITLE:=BOSCH C_CAN/D_CAN drivers
|
||||
KCONFIG:=CONFIG_CAN_C_CAN
|
||||
FILES:=$(LINUX_DIR)/drivers/net/can/c_can/c_can.ko
|
||||
AUTOLOAD:=$(call AutoProbe,c_can)
|
||||
$(call AddDepends/can)
|
||||
endef
|
||||
|
||||
define KernelPackage/can-c-can/description
|
||||
This driver adds generic support for the C_CAN/D_CAN chips.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,can-c-can))
|
||||
|
||||
|
||||
define KernelPackage/can-c-can-pci
|
||||
TITLE:=PCI Bus based BOSCH C_CAN/D_CAN driver
|
||||
KCONFIG:=CONFIG_CAN_C_CAN_PCI
|
||||
DEPENDS:=kmod-can-c-can @PCI_SUPPORT
|
||||
FILES:=$(LINUX_DIR)/drivers/net/can/c_can/c_can_pci.ko
|
||||
AUTOLOAD:=$(call AutoProbe,c_can_pci)
|
||||
$(call AddDepends/can)
|
||||
endef
|
||||
|
||||
define KernelPackage/can-c-can-pci/description
|
||||
This driver adds support for the C_CAN/D_CAN chips connected
|
||||
to the PCI bus.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,can-c-can-pci))
|
||||
|
||||
|
||||
define KernelPackage/can-c-can-platform
|
||||
TITLE:=Platform Bus based BOSCH C_CAN/D_CAN driver
|
||||
KCONFIG:=CONFIG_CAN_C_CAN_PLATFORM
|
||||
DEPENDS:=kmod-can-c-can +!LINUX_3_18:kmod-regmap
|
||||
FILES:=$(LINUX_DIR)/drivers/net/can/c_can/c_can_platform.ko
|
||||
AUTOLOAD:=$(call AutoProbe,c_can_platform)
|
||||
$(call AddDepends/can)
|
||||
endef
|
||||
|
||||
define KernelPackage/can-c-can-platform/description
|
||||
This driver adds support for the C_CAN/D_CAN chips connected
|
||||
to the "platform bus" (Linux abstraction for directly to the
|
||||
processor attached devices) which can be found on various
|
||||
boards from ST Microelectronics (http://www.st.com) like the
|
||||
SPEAr1310 and SPEAr320 evaluation boards & TI (www.ti.com)
|
||||
boards like am335x, dm814x, dm813x and dm811x.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,can-c-can-platform))
|
||||
|
||||
|
||||
define KernelPackage/can-flexcan
|
||||
TITLE:=Support for Freescale FLEXCAN based chips
|
||||
KCONFIG:=CONFIG_CAN_FLEXCAN
|
||||
FILES:=$(LINUX_DIR)/drivers/net/can/flexcan.ko
|
||||
AUTOLOAD:=$(call AutoProbe,flexcan)
|
||||
$(call AddDepends/can,@TARGET_imx6)
|
||||
endef
|
||||
|
||||
define KernelPackage/can-flexcan/description
|
||||
Freescale FLEXCAN CAN bus controller implementation.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,can-flexcan))
|
||||
|
||||
|
||||
define KernelPackage/can-gw
|
||||
TITLE:=CAN Gateway/Router
|
||||
KCONFIG:=CONFIG_CAN_GW
|
||||
@ -95,20 +147,20 @@ endef
|
||||
$(eval $(call KernelPackage,can-gw))
|
||||
|
||||
|
||||
define KernelPackage/can-vcan
|
||||
TITLE:=Virtual Local CAN Interface (vcan)
|
||||
KCONFIG:=CONFIG_CAN_VCAN
|
||||
FILES:=$(LINUX_DIR)/drivers/net/can/vcan.ko
|
||||
AUTOLOAD:=$(call AutoProbe,vcan)
|
||||
define KernelPackage/can-raw
|
||||
TITLE:=Raw CAN Protcol
|
||||
KCONFIG:=CONFIG_CAN_RAW
|
||||
FILES:=$(LINUX_DIR)/net/can/can-raw.ko
|
||||
AUTOLOAD:=$(call AutoProbe,can-raw)
|
||||
$(call AddDepends/can)
|
||||
endef
|
||||
|
||||
define KernelPackage/can-vcan/description
|
||||
Similar to the network loopback devices, vcan offers a
|
||||
virtual local CAN interface.
|
||||
define KernelPackage/can-raw/description
|
||||
The raw CAN protocol option offers access to the CAN bus via
|
||||
the BSD socket API.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,can-vcan))
|
||||
$(eval $(call KernelPackage,can-raw))
|
||||
|
||||
|
||||
define KernelPackage/can-slcan
|
||||
@ -128,19 +180,20 @@ endef
|
||||
$(eval $(call KernelPackage,can-slcan))
|
||||
|
||||
|
||||
define KernelPackage/can-flexcan
|
||||
TITLE:=Support for Freescale FLEXCAN based chips
|
||||
KCONFIG:=CONFIG_CAN_FLEXCAN
|
||||
FILES:=$(LINUX_DIR)/drivers/net/can/flexcan.ko
|
||||
AUTOLOAD:=$(call AutoProbe,flexcan)
|
||||
$(call AddDepends/can,@TARGET_imx6)
|
||||
define KernelPackage/can-usb-8dev
|
||||
TITLE:=8 devices USB2CAN interface
|
||||
KCONFIG:=CONFIG_CAN_8DEV_USB
|
||||
FILES:=$(LINUX_DIR)/drivers/net/can/usb/usb_8dev.ko
|
||||
AUTOLOAD:=$(call AutoProbe,usb_8dev)
|
||||
$(call AddDepends/can,+kmod-usb-core)
|
||||
endef
|
||||
|
||||
define KernelPackage/can-flexcan/description
|
||||
Freescale FLEXCAN CAN bus controller implementation.
|
||||
define KernelPackage/can-usb-8dev/description
|
||||
This driver supports the USB2CAN interface
|
||||
from 8 devices (http://www.8devices.com).
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,can-flexcan))
|
||||
$(eval $(call KernelPackage,can-usb-8dev))
|
||||
|
||||
|
||||
define KernelPackage/can-usb-ems
|
||||
@ -207,71 +260,19 @@ endef
|
||||
$(eval $(call KernelPackage,can-usb-peak))
|
||||
|
||||
|
||||
define KernelPackage/can-usb-8dev
|
||||
TITLE:=8 devices USB2CAN interface
|
||||
KCONFIG:=CONFIG_CAN_8DEV_USB
|
||||
FILES:=$(LINUX_DIR)/drivers/net/can/usb/usb_8dev.ko
|
||||
AUTOLOAD:=$(call AutoProbe,usb_8dev)
|
||||
$(call AddDepends/can,+kmod-usb-core)
|
||||
endef
|
||||
|
||||
define KernelPackage/can-usb-8dev/description
|
||||
This driver supports the USB2CAN interface
|
||||
from 8 devices (http://www.8devices.com).
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,can-usb-8dev))
|
||||
|
||||
|
||||
define KernelPackage/can-c-can
|
||||
TITLE:=BOSCH C_CAN/D_CAN drivers
|
||||
KCONFIG:=CONFIG_CAN_C_CAN
|
||||
FILES:=$(LINUX_DIR)/drivers/net/can/c_can/c_can.ko
|
||||
AUTOLOAD:=$(call AutoProbe,c_can)
|
||||
define KernelPackage/can-vcan
|
||||
TITLE:=Virtual Local CAN Interface (vcan)
|
||||
KCONFIG:=CONFIG_CAN_VCAN
|
||||
FILES:=$(LINUX_DIR)/drivers/net/can/vcan.ko
|
||||
AUTOLOAD:=$(call AutoProbe,vcan)
|
||||
$(call AddDepends/can)
|
||||
endef
|
||||
|
||||
define KernelPackage/can-c-can/description
|
||||
This driver adds generic support for the C_CAN/D_CAN chips.
|
||||
define KernelPackage/can-vcan/description
|
||||
Similar to the network loopback devices, vcan offers a
|
||||
virtual local CAN interface.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,can-c-can))
|
||||
$(eval $(call KernelPackage,can-vcan))
|
||||
|
||||
|
||||
define KernelPackage/can-c-can-platform
|
||||
TITLE:=Platform Bus based BOSCH C_CAN/D_CAN driver
|
||||
KCONFIG:=CONFIG_CAN_C_CAN_PLATFORM
|
||||
DEPENDS:=kmod-can-c-can +!LINUX_3_18:kmod-regmap
|
||||
FILES:=$(LINUX_DIR)/drivers/net/can/c_can/c_can_platform.ko
|
||||
AUTOLOAD:=$(call AutoProbe,c_can_platform)
|
||||
$(call AddDepends/can)
|
||||
endef
|
||||
|
||||
define KernelPackage/can-c-can-platform/description
|
||||
This driver adds support for the C_CAN/D_CAN chips connected
|
||||
to the "platform bus" (Linux abstraction for directly to the
|
||||
processor attached devices) which can be found on various
|
||||
boards from ST Microelectronics (http://www.st.com) like the
|
||||
SPEAr1310 and SPEAr320 evaluation boards & TI (www.ti.com)
|
||||
boards like am335x, dm814x, dm813x and dm811x.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,can-c-can-platform))
|
||||
|
||||
|
||||
define KernelPackage/can-c-can-pci
|
||||
TITLE:=PCI Bus based BOSCH C_CAN/D_CAN driver
|
||||
KCONFIG:=CONFIG_CAN_C_CAN_PCI
|
||||
DEPENDS:=kmod-can-c-can @PCI_SUPPORT
|
||||
FILES:=$(LINUX_DIR)/drivers/net/can/c_can/c_can_pci.ko
|
||||
AUTOLOAD:=$(call AutoProbe,c_can_pci)
|
||||
$(call AddDepends/can)
|
||||
endef
|
||||
|
||||
define KernelPackage/can-c-can-pci/description
|
||||
This driver adds support for the C_CAN/D_CAN chips connected
|
||||
to the PCI bus.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,can-c-can-pci))
|
||||
|
||||
|
@ -20,6 +20,19 @@ define AddDepends/crypto
|
||||
DEPENDS+= $(1)
|
||||
endef
|
||||
|
||||
|
||||
define KernelPackage/crypto-acompress
|
||||
TITLE:=Asynchronous Compression operations
|
||||
HIDDEN:=1
|
||||
KCONFIG:=CONFIG_CRYPTO_ACOMP2
|
||||
FILES:=$(LINUX_DIR)/crypto/crypto_acompress.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,crypto_acompress)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-acompress))
|
||||
|
||||
|
||||
define KernelPackage/crypto-aead
|
||||
TITLE:=CryptoAPI AEAD support
|
||||
KCONFIG:= \
|
||||
@ -33,108 +46,136 @@ endef
|
||||
$(eval $(call KernelPackage,crypto-aead))
|
||||
|
||||
|
||||
define KernelPackage/crypto-hash
|
||||
TITLE:=CryptoAPI hash support
|
||||
KCONFIG:=CONFIG_CRYPTO_HASH
|
||||
FILES:=$(LINUX_DIR)/crypto/crypto_hash.ko
|
||||
AUTOLOAD:=$(call AutoLoad,02,crypto_hash,1)
|
||||
define KernelPackage/crypto-authenc
|
||||
TITLE:=Combined mode wrapper for IPsec
|
||||
DEPENDS:=+kmod-crypto-manager +!LINUX_3_18:kmod-crypto-null
|
||||
KCONFIG:=CONFIG_CRYPTO_AUTHENC
|
||||
FILES:=$(LINUX_DIR)/crypto/authenc.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,authenc)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-hash))
|
||||
$(eval $(call KernelPackage,crypto-authenc))
|
||||
|
||||
|
||||
define KernelPackage/crypto-manager
|
||||
TITLE:=CryptoAPI algorithm manager
|
||||
DEPENDS:=+kmod-crypto-aead +kmod-crypto-hash +kmod-crypto-pcompress
|
||||
KCONFIG:= \
|
||||
CONFIG_CRYPTO_MANAGER \
|
||||
CONFIG_CRYPTO_MANAGER2
|
||||
FILES:=$(LINUX_DIR)/crypto/cryptomgr.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,cryptomgr,1)
|
||||
define KernelPackage/crypto-cbc
|
||||
TITLE:=Cipher Block Chaining CryptoAPI module
|
||||
DEPENDS:=+kmod-crypto-manager
|
||||
KCONFIG:=CONFIG_CRYPTO_CBC
|
||||
FILES:=$(LINUX_DIR)/crypto/cbc.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,cbc)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-manager))
|
||||
$(eval $(call KernelPackage,crypto-cbc))
|
||||
|
||||
|
||||
define KernelPackage/crypto-pcompress
|
||||
TITLE:=CryptoAPI Partial (de)compression operations
|
||||
KCONFIG:= \
|
||||
CONFIG_CRYPTO_PCOMP=y \
|
||||
CONFIG_CRYPTO_PCOMP2
|
||||
FILES:=$(LINUX_DIR)/crypto/pcompress.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,pcompress)
|
||||
define KernelPackage/crypto-ccm
|
||||
TITLE:=Support for Counter with CBC MAC (CCM)
|
||||
DEPENDS:=+kmod-crypto-ctr +kmod-crypto-aead
|
||||
KCONFIG:=CONFIG_CRYPTO_CCM
|
||||
FILES:=$(LINUX_DIR)/crypto/ccm.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,ccm)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-ccm))
|
||||
|
||||
|
||||
define KernelPackage/crypto-cmac
|
||||
TITLE:=Support for Cipher-based Message Authentication Code (CMAC)
|
||||
DEPENDS:=+kmod-crypto-hash
|
||||
KCONFIG:=CONFIG_CRYPTO_CMAC
|
||||
FILES:=$(LINUX_DIR)/crypto/cmac.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,cmac)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-pcompress))
|
||||
$(eval $(call KernelPackage,crypto-cmac))
|
||||
|
||||
|
||||
define KernelPackage/crypto-user
|
||||
TITLE:=CryptoAPI userspace interface
|
||||
DEPENDS:=+kmod-crypto-hash +kmod-crypto-manager
|
||||
KCONFIG:= \
|
||||
CONFIG_CRYPTO_USER_API \
|
||||
CONFIG_CRYPTO_USER_API_HASH \
|
||||
CONFIG_CRYPTO_USER_API_SKCIPHER
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/crypto/af_alg.ko \
|
||||
$(LINUX_DIR)/crypto/algif_hash.ko \
|
||||
$(LINUX_DIR)/crypto/algif_skcipher.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,af_alg algif_hash algif_skcipher)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-user))
|
||||
|
||||
|
||||
define KernelPackage/crypto-wq
|
||||
TITLE:=CryptoAPI work queue handling
|
||||
KCONFIG:=CONFIG_CRYPTO_WORKQUEUE
|
||||
FILES:=$(LINUX_DIR)/crypto/crypto_wq.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,crypto_wq)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
$(eval $(call KernelPackage,crypto-wq))
|
||||
|
||||
define KernelPackage/crypto-rng
|
||||
TITLE:=CryptoAPI random number generation
|
||||
DEPENDS:=+kmod-crypto-hash +kmod-crypto-hmac +kmod-crypto-sha256
|
||||
KCONFIG:= \
|
||||
CONFIG_CRYPTO_DRBG \
|
||||
CONFIG_CRYPTO_DRBG_HMAC=y \
|
||||
CONFIG_CRYPTO_DRBG_HASH=n \
|
||||
CONFIG_CRYPTO_DRBG_MENU \
|
||||
CONFIG_CRYPTO_JITTERENTROPY \
|
||||
CONFIG_CRYPTO_RNG2
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/crypto/drbg.ko@ge4.2 \
|
||||
$(LINUX_DIR)/crypto/jitterentropy_rng.ko@ge4.2 \
|
||||
$(LINUX_DIR)/crypto/krng.ko@lt4.2 \
|
||||
$(LINUX_DIR)/crypto/rng.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,drbg@ge4.2 jitterentropy_rng@ge4.2 krng@lt4.2 rng)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-rng))
|
||||
|
||||
|
||||
define KernelPackage/crypto-rsa
|
||||
TITLE:=RSA algorithm
|
||||
DEPENDS:=@!LINUX_3_18 +kmod-crypto-manager
|
||||
KCONFIG:= CONFIG_CRYPTO_RSA
|
||||
define KernelPackage/crypto-crc32
|
||||
TITLE:=CRC32 CRC module
|
||||
DEPENDS:=+kmod-crypto-hash
|
||||
KCONFIG:=CONFIG_CRYPTO_CRC32
|
||||
HIDDEN:=1
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/lib/asn1_decoder.ko \
|
||||
$(LINUX_DIR)/lib/mpi/mpi.ko \
|
||||
$(LINUX_DIR)/crypto/akcipher.ko \
|
||||
$(LINUX_DIR)/crypto/rsa_generic.ko
|
||||
AUTOLOAD:=$(call AutoLoad,10,rsa_generic)
|
||||
FILES:=$(LINUX_DIR)/crypto/crc32_generic.ko@ge4.9
|
||||
AUTOLOAD:=$(call AutoLoad,04,crc32_generic@ge4.9,1)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-rsa))
|
||||
$(eval $(call KernelPackage,crypto-crc32))
|
||||
|
||||
|
||||
define KernelPackage/crypto-crc32c
|
||||
TITLE:=CRC32c CRC module
|
||||
DEPENDS:=+kmod-crypto-hash
|
||||
KCONFIG:=CONFIG_CRYPTO_CRC32C
|
||||
FILES:=$(LINUX_DIR)/crypto/crc32c_generic.ko
|
||||
AUTOLOAD:=$(call AutoLoad,04,crc32c_generic,1)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-crc32c))
|
||||
|
||||
|
||||
define KernelPackage/crypto-ctr
|
||||
TITLE:=Counter Mode CryptoAPI module
|
||||
DEPENDS:=+kmod-crypto-manager +kmod-crypto-seqiv +kmod-crypto-iv
|
||||
KCONFIG:=CONFIG_CRYPTO_CTR
|
||||
FILES:=$(LINUX_DIR)/crypto/ctr.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,ctr)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-ctr))
|
||||
|
||||
|
||||
define KernelPackage/crypto-cts
|
||||
TITLE:=Cipher Text Stealing CryptoAPI module
|
||||
DEPENDS:=+kmod-crypto-manager
|
||||
KCONFIG:=CONFIG_CRYPTO_CTS
|
||||
FILES:=$(LINUX_DIR)/crypto/cts.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,cts)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-cts))
|
||||
|
||||
|
||||
define KernelPackage/crypto-deflate
|
||||
TITLE:=Deflate compression CryptoAPI module
|
||||
DEPENDS:=+kmod-lib-zlib-inflate +kmod-lib-zlib-deflate +LINUX_4_14:kmod-crypto-acompress
|
||||
KCONFIG:=CONFIG_CRYPTO_DEFLATE
|
||||
FILES:=$(LINUX_DIR)/crypto/deflate.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,deflate)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-deflate))
|
||||
|
||||
|
||||
define KernelPackage/crypto-des
|
||||
TITLE:=DES/3DES cipher CryptoAPI module
|
||||
KCONFIG:=CONFIG_CRYPTO_DES
|
||||
FILES:=$(LINUX_DIR)/crypto/des_generic.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,des_generic)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-des))
|
||||
|
||||
|
||||
define KernelPackage/crypto-ecb
|
||||
TITLE:=Electronic CodeBook CryptoAPI module
|
||||
DEPENDS:=+kmod-crypto-manager
|
||||
KCONFIG:=CONFIG_CRYPTO_ECB
|
||||
FILES:=$(LINUX_DIR)/crypto/ecb.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,ecb)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-ecb))
|
||||
|
||||
|
||||
define KernelPackage/crypto-ecdh
|
||||
@ -150,21 +191,6 @@ endef
|
||||
$(eval $(call KernelPackage,crypto-ecdh))
|
||||
|
||||
|
||||
define KernelPackage/crypto-iv
|
||||
TITLE:=CryptoAPI initialization vectors
|
||||
DEPENDS:=+kmod-crypto-manager +kmod-crypto-rng +kmod-crypto-wq
|
||||
KCONFIG:= CONFIG_CRYPTO_BLKCIPHER2
|
||||
HIDDEN:=1
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/crypto/eseqiv.ko@lt4.9 \
|
||||
$(LINUX_DIR)/crypto/chainiv.ko@lt4.9
|
||||
AUTOLOAD:=$(call AutoLoad,10,eseqiv chainiv)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-iv))
|
||||
|
||||
|
||||
define KernelPackage/crypto-echainiv
|
||||
TITLE:=Encrypted Chain IV Generator
|
||||
DEPENDS:=+kmod-crypto-aead
|
||||
@ -177,51 +203,73 @@ endef
|
||||
$(eval $(call KernelPackage,crypto-echainiv))
|
||||
|
||||
|
||||
define KernelPackage/crypto-seqiv
|
||||
TITLE:=CryptoAPI Sequence Number IV Generator
|
||||
DEPENDS:=+kmod-crypto-aead +kmod-crypto-rng
|
||||
KCONFIG:=CONFIG_CRYPTO_SEQIV
|
||||
FILES:=$(LINUX_DIR)/crypto/seqiv.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,seqiv)
|
||||
define KernelPackage/crypto-fcrypt
|
||||
TITLE:=FCRYPT cipher CryptoAPI module
|
||||
KCONFIG:=CONFIG_CRYPTO_FCRYPT
|
||||
FILES:=$(LINUX_DIR)/crypto/fcrypt.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,fcrypt)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-seqiv))
|
||||
$(eval $(call KernelPackage,crypto-fcrypt))
|
||||
|
||||
|
||||
define KernelPackage/crypto-hw-talitos
|
||||
TITLE:=Freescale integrated security engine (SEC) driver
|
||||
DEPENDS:=+kmod-crypto-manager +kmod-crypto-hash +kmod-random-core +kmod-crypto-authenc +kmod-crypto-des
|
||||
KCONFIG:= \
|
||||
CONFIG_CRYPTO_HW=y \
|
||||
CONFIG_CRYPTO_DEV_TALITOS \
|
||||
CONFIG_CRYPTO_DEV_TALITOS1=y \
|
||||
CONFIG_CRYPTO_DEV_TALITOS2=y
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/drivers/crypto/talitos.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,talitos)
|
||||
define KernelPackage/crypto-gcm
|
||||
TITLE:=GCM/GMAC CryptoAPI module
|
||||
DEPENDS:=+kmod-crypto-ctr +kmod-crypto-ghash +kmod-crypto-null
|
||||
KCONFIG:=CONFIG_CRYPTO_GCM
|
||||
FILES:=$(LINUX_DIR)/crypto/gcm.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,gcm)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-hw-talitos))
|
||||
$(eval $(call KernelPackage,crypto-gcm))
|
||||
|
||||
|
||||
define KernelPackage/crypto-hw-padlock
|
||||
TITLE:=VIA PadLock ACE with AES/SHA hw crypto module
|
||||
DEPENDS:=+kmod-crypto-manager
|
||||
KCONFIG:= \
|
||||
CONFIG_CRYPTO_HW=y \
|
||||
CONFIG_CRYPTO_DEV_PADLOCK \
|
||||
CONFIG_CRYPTO_DEV_PADLOCK_AES \
|
||||
CONFIG_CRYPTO_DEV_PADLOCK_SHA
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/drivers/crypto/padlock-aes.ko \
|
||||
$(LINUX_DIR)/drivers/crypto/padlock-sha.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,padlock-aes padlock-sha)
|
||||
define KernelPackage/crypto-gf128
|
||||
TITLE:=GF(2^128) multiplication functions CryptoAPI module
|
||||
KCONFIG:=CONFIG_CRYPTO_GF128MUL
|
||||
FILES:=$(LINUX_DIR)/crypto/gf128mul.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,gf128mul)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-hw-padlock))
|
||||
$(eval $(call KernelPackage,crypto-gf128))
|
||||
|
||||
|
||||
define KernelPackage/crypto-ghash
|
||||
TITLE:=GHASH digest CryptoAPI module
|
||||
DEPENDS:=+kmod-crypto-gf128 +kmod-crypto-hash
|
||||
KCONFIG:=CONFIG_CRYPTO_GHASH
|
||||
FILES:=$(LINUX_DIR)/crypto/ghash-generic.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,ghash-generic)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-ghash))
|
||||
|
||||
|
||||
define KernelPackage/crypto-hash
|
||||
TITLE:=CryptoAPI hash support
|
||||
KCONFIG:=CONFIG_CRYPTO_HASH
|
||||
FILES:=$(LINUX_DIR)/crypto/crypto_hash.ko
|
||||
AUTOLOAD:=$(call AutoLoad,02,crypto_hash,1)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-hash))
|
||||
|
||||
|
||||
define KernelPackage/crypto-hmac
|
||||
TITLE:=HMAC digest CryptoAPI module
|
||||
DEPENDS:=+kmod-crypto-hash +kmod-crypto-manager
|
||||
KCONFIG:=CONFIG_CRYPTO_HMAC
|
||||
FILES:=$(LINUX_DIR)/crypto/hmac.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,hmac)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-hmac))
|
||||
|
||||
|
||||
define KernelPackage/crypto-hw-ccp
|
||||
@ -272,93 +320,54 @@ endef
|
||||
$(eval $(call KernelPackage,crypto-hw-hifn-795x))
|
||||
|
||||
|
||||
define KernelPackage/crypto-authenc
|
||||
TITLE:=Combined mode wrapper for IPsec
|
||||
DEPENDS:=+kmod-crypto-manager +!LINUX_3_18:kmod-crypto-null
|
||||
KCONFIG:=CONFIG_CRYPTO_AUTHENC
|
||||
FILES:=$(LINUX_DIR)/crypto/authenc.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,authenc)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-authenc))
|
||||
|
||||
define KernelPackage/crypto-cbc
|
||||
TITLE:=Cipher Block Chaining CryptoAPI module
|
||||
define KernelPackage/crypto-hw-padlock
|
||||
TITLE:=VIA PadLock ACE with AES/SHA hw crypto module
|
||||
DEPENDS:=+kmod-crypto-manager
|
||||
KCONFIG:=CONFIG_CRYPTO_CBC
|
||||
FILES:=$(LINUX_DIR)/crypto/cbc.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,cbc)
|
||||
KCONFIG:= \
|
||||
CONFIG_CRYPTO_HW=y \
|
||||
CONFIG_CRYPTO_DEV_PADLOCK \
|
||||
CONFIG_CRYPTO_DEV_PADLOCK_AES \
|
||||
CONFIG_CRYPTO_DEV_PADLOCK_SHA
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/drivers/crypto/padlock-aes.ko \
|
||||
$(LINUX_DIR)/drivers/crypto/padlock-sha.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,padlock-aes padlock-sha)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-cbc))
|
||||
$(eval $(call KernelPackage,crypto-hw-padlock))
|
||||
|
||||
define KernelPackage/crypto-ctr
|
||||
TITLE:=Counter Mode CryptoAPI module
|
||||
DEPENDS:=+kmod-crypto-manager +kmod-crypto-seqiv +kmod-crypto-iv
|
||||
KCONFIG:=CONFIG_CRYPTO_CTR
|
||||
FILES:=$(LINUX_DIR)/crypto/ctr.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,ctr)
|
||||
|
||||
define KernelPackage/crypto-hw-talitos
|
||||
TITLE:=Freescale integrated security engine (SEC) driver
|
||||
DEPENDS:=+kmod-crypto-manager +kmod-crypto-hash +kmod-random-core +kmod-crypto-authenc +kmod-crypto-des
|
||||
KCONFIG:= \
|
||||
CONFIG_CRYPTO_HW=y \
|
||||
CONFIG_CRYPTO_DEV_TALITOS \
|
||||
CONFIG_CRYPTO_DEV_TALITOS1=y \
|
||||
CONFIG_CRYPTO_DEV_TALITOS2=y
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/drivers/crypto/talitos.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,talitos)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-ctr))
|
||||
$(eval $(call KernelPackage,crypto-hw-talitos))
|
||||
|
||||
define KernelPackage/crypto-ccm
|
||||
TITLE:=Support for Counter with CBC MAC (CCM)
|
||||
DEPENDS:=+kmod-crypto-ctr +kmod-crypto-aead
|
||||
KCONFIG:=CONFIG_CRYPTO_CCM
|
||||
FILES:=$(LINUX_DIR)/crypto/ccm.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,ccm)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-ccm))
|
||||
|
||||
define KernelPackage/crypto-pcbc
|
||||
TITLE:=Propagating Cipher Block Chaining CryptoAPI module
|
||||
DEPENDS:=+kmod-crypto-manager
|
||||
KCONFIG:=CONFIG_CRYPTO_PCBC
|
||||
FILES:=$(LINUX_DIR)/crypto/pcbc.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,pcbc)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-pcbc))
|
||||
|
||||
define KernelPackage/crypto-crc32c
|
||||
TITLE:=CRC32c CRC module
|
||||
DEPENDS:=+kmod-crypto-hash
|
||||
KCONFIG:=CONFIG_CRYPTO_CRC32C
|
||||
FILES:=$(LINUX_DIR)/crypto/crc32c_generic.ko
|
||||
AUTOLOAD:=$(call AutoLoad,04,crc32c_generic,1)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-crc32c))
|
||||
|
||||
define KernelPackage/crypto-crc32
|
||||
TITLE:=CRC32 CRC module
|
||||
DEPENDS:=+kmod-crypto-hash
|
||||
KCONFIG:=CONFIG_CRYPTO_CRC32
|
||||
define KernelPackage/crypto-iv
|
||||
TITLE:=CryptoAPI initialization vectors
|
||||
DEPENDS:=+kmod-crypto-manager +kmod-crypto-rng +kmod-crypto-wq
|
||||
KCONFIG:= CONFIG_CRYPTO_BLKCIPHER2
|
||||
HIDDEN:=1
|
||||
FILES:=$(LINUX_DIR)/crypto/crc32_generic.ko@ge4.9
|
||||
AUTOLOAD:=$(call AutoLoad,04,crc32_generic@ge4.9,1)
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/crypto/eseqiv.ko@lt4.9 \
|
||||
$(LINUX_DIR)/crypto/chainiv.ko@lt4.9
|
||||
AUTOLOAD:=$(call AutoLoad,10,eseqiv chainiv)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-crc32))
|
||||
|
||||
define KernelPackage/crypto-des
|
||||
TITLE:=DES/3DES cipher CryptoAPI module
|
||||
KCONFIG:=CONFIG_CRYPTO_DES
|
||||
FILES:=$(LINUX_DIR)/crypto/des_generic.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,des_generic)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-des))
|
||||
$(eval $(call KernelPackage,crypto-iv))
|
||||
|
||||
|
||||
define KernelPackage/crypto-kpp
|
||||
@ -373,120 +382,18 @@ endef
|
||||
$(eval $(call KernelPackage,crypto-kpp))
|
||||
|
||||
|
||||
define KernelPackage/crypto-acompress
|
||||
TITLE:=Asynchronous Compression operations
|
||||
HIDDEN:=1
|
||||
KCONFIG:=CONFIG_CRYPTO_ACOMP2
|
||||
FILES:=$(LINUX_DIR)/crypto/crypto_acompress.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,crypto_acompress)
|
||||
define KernelPackage/crypto-manager
|
||||
TITLE:=CryptoAPI algorithm manager
|
||||
DEPENDS:=+kmod-crypto-aead +kmod-crypto-hash +kmod-crypto-pcompress
|
||||
KCONFIG:= \
|
||||
CONFIG_CRYPTO_MANAGER \
|
||||
CONFIG_CRYPTO_MANAGER2
|
||||
FILES:=$(LINUX_DIR)/crypto/cryptomgr.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,cryptomgr,1)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-acompress))
|
||||
|
||||
|
||||
define KernelPackage/crypto-deflate
|
||||
TITLE:=Deflate compression CryptoAPI module
|
||||
DEPENDS:=+kmod-lib-zlib-inflate +kmod-lib-zlib-deflate +LINUX_4_14:kmod-crypto-acompress
|
||||
KCONFIG:=CONFIG_CRYPTO_DEFLATE
|
||||
FILES:=$(LINUX_DIR)/crypto/deflate.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,deflate)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-deflate))
|
||||
|
||||
|
||||
define KernelPackage/crypto-fcrypt
|
||||
TITLE:=FCRYPT cipher CryptoAPI module
|
||||
KCONFIG:=CONFIG_CRYPTO_FCRYPT
|
||||
FILES:=$(LINUX_DIR)/crypto/fcrypt.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,fcrypt)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-fcrypt))
|
||||
|
||||
define KernelPackage/crypto-ecb
|
||||
TITLE:=Electronic CodeBook CryptoAPI module
|
||||
DEPENDS:=+kmod-crypto-manager
|
||||
KCONFIG:=CONFIG_CRYPTO_ECB
|
||||
FILES:=$(LINUX_DIR)/crypto/ecb.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,ecb)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-ecb))
|
||||
|
||||
define KernelPackage/crypto-cts
|
||||
TITLE:=Cipher Text Stealing CryptoAPI module
|
||||
DEPENDS:=+kmod-crypto-manager
|
||||
KCONFIG:=CONFIG_CRYPTO_CTS
|
||||
FILES:=$(LINUX_DIR)/crypto/cts.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,cts)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-cts))
|
||||
|
||||
|
||||
define KernelPackage/crypto-hmac
|
||||
TITLE:=HMAC digest CryptoAPI module
|
||||
DEPENDS:=+kmod-crypto-hash +kmod-crypto-manager
|
||||
KCONFIG:=CONFIG_CRYPTO_HMAC
|
||||
FILES:=$(LINUX_DIR)/crypto/hmac.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,hmac)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-hmac))
|
||||
|
||||
|
||||
define KernelPackage/crypto-cmac
|
||||
TITLE:=Support for Cipher-based Message Authentication Code (CMAC)
|
||||
DEPENDS:=+kmod-crypto-hash
|
||||
KCONFIG:=CONFIG_CRYPTO_CMAC
|
||||
FILES:=$(LINUX_DIR)/crypto/cmac.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,cmac)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-cmac))
|
||||
|
||||
|
||||
define KernelPackage/crypto-gcm
|
||||
TITLE:=GCM/GMAC CryptoAPI module
|
||||
DEPENDS:=+kmod-crypto-ctr +kmod-crypto-ghash +kmod-crypto-null
|
||||
KCONFIG:=CONFIG_CRYPTO_GCM
|
||||
FILES:=$(LINUX_DIR)/crypto/gcm.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,gcm)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-gcm))
|
||||
|
||||
|
||||
define KernelPackage/crypto-gf128
|
||||
TITLE:=GF(2^128) multiplication functions CryptoAPI module
|
||||
KCONFIG:=CONFIG_CRYPTO_GF128MUL
|
||||
FILES:=$(LINUX_DIR)/crypto/gf128mul.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,gf128mul)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-gf128))
|
||||
|
||||
|
||||
define KernelPackage/crypto-ghash
|
||||
TITLE:=GHASH digest CryptoAPI module
|
||||
DEPENDS:=+kmod-crypto-gf128 +kmod-crypto-hash
|
||||
KCONFIG:=CONFIG_CRYPTO_GHASH
|
||||
FILES:=$(LINUX_DIR)/crypto/ghash-generic.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,ghash-generic)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-ghash))
|
||||
$(eval $(call KernelPackage,crypto-manager))
|
||||
|
||||
|
||||
define KernelPackage/crypto-md4
|
||||
@ -532,6 +439,138 @@ endef
|
||||
$(eval $(call KernelPackage,crypto-michael-mic))
|
||||
|
||||
|
||||
define KernelPackage/crypto-misc
|
||||
TITLE:=Other CryptoAPI modules
|
||||
DEPENDS:=+kmod-crypto-manager
|
||||
KCONFIG:= \
|
||||
CONFIG_CRYPTO_ANUBIS \
|
||||
CONFIG_CRYPTO_BLOWFISH \
|
||||
CONFIG_CRYPTO_CAMELLIA \
|
||||
CONFIG_CRYPTO_CAST5 \
|
||||
CONFIG_CRYPTO_CAST6 \
|
||||
CONFIG_CRYPTO_FCRYPT \
|
||||
CONFIG_CRYPTO_KHAZAD \
|
||||
CONFIG_CRYPTO_SERPENT \
|
||||
CONFIG_CRYPTO_TEA \
|
||||
CONFIG_CRYPTO_TGR192 \
|
||||
CONFIG_CRYPTO_TWOFISH \
|
||||
CONFIG_CRYPTO_TWOFISH_COMMON \
|
||||
CONFIG_CRYPTO_TWOFISH_586 \
|
||||
CONFIG_CRYPTO_WP512
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/crypto/anubis.ko \
|
||||
$(LINUX_DIR)/crypto/camellia_generic.ko \
|
||||
$(LINUX_DIR)/crypto/cast_common.ko \
|
||||
$(LINUX_DIR)/crypto/cast5_generic.ko \
|
||||
$(LINUX_DIR)/crypto/cast6_generic.ko \
|
||||
$(LINUX_DIR)/crypto/khazad.ko \
|
||||
$(LINUX_DIR)/crypto/tea.ko \
|
||||
$(LINUX_DIR)/crypto/tgr192.ko \
|
||||
$(LINUX_DIR)/crypto/twofish_common.ko \
|
||||
$(LINUX_DIR)/crypto/wp512.ko \
|
||||
$(LINUX_DIR)/crypto/twofish_generic.ko \
|
||||
$(LINUX_DIR)/crypto/blowfish_common.ko \
|
||||
$(LINUX_DIR)/crypto/blowfish_generic.ko \
|
||||
$(LINUX_DIR)/crypto/serpent_generic.ko
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
ifndef CONFIG_TARGET_x86_64
|
||||
define KernelPackage/crypto-misc/x86
|
||||
FILES+=$(LINUX_DIR)/arch/x86/crypto/twofish-i586.ko
|
||||
endef
|
||||
endif
|
||||
|
||||
$(eval $(call KernelPackage,crypto-misc))
|
||||
|
||||
|
||||
define KernelPackage/crypto-null
|
||||
TITLE:=Null CryptoAPI module
|
||||
KCONFIG:=CONFIG_CRYPTO_NULL
|
||||
FILES:=$(LINUX_DIR)/crypto/crypto_null.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,crypto_null)
|
||||
$(call AddDepends/crypto, +kmod-crypto-hash)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-null))
|
||||
|
||||
|
||||
define KernelPackage/crypto-pcbc
|
||||
TITLE:=Propagating Cipher Block Chaining CryptoAPI module
|
||||
DEPENDS:=+kmod-crypto-manager
|
||||
KCONFIG:=CONFIG_CRYPTO_PCBC
|
||||
FILES:=$(LINUX_DIR)/crypto/pcbc.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,pcbc)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-pcbc))
|
||||
|
||||
|
||||
define KernelPackage/crypto-pcompress
|
||||
TITLE:=CryptoAPI Partial (de)compression operations
|
||||
KCONFIG:= \
|
||||
CONFIG_CRYPTO_PCOMP=y \
|
||||
CONFIG_CRYPTO_PCOMP2
|
||||
FILES:=$(LINUX_DIR)/crypto/pcompress.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,pcompress)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-pcompress))
|
||||
|
||||
|
||||
define KernelPackage/crypto-rsa
|
||||
TITLE:=RSA algorithm
|
||||
DEPENDS:=@!LINUX_3_18 +kmod-crypto-manager
|
||||
KCONFIG:= CONFIG_CRYPTO_RSA
|
||||
HIDDEN:=1
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/lib/asn1_decoder.ko \
|
||||
$(LINUX_DIR)/lib/mpi/mpi.ko \
|
||||
$(LINUX_DIR)/crypto/akcipher.ko \
|
||||
$(LINUX_DIR)/crypto/rsa_generic.ko
|
||||
AUTOLOAD:=$(call AutoLoad,10,rsa_generic)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-rsa))
|
||||
|
||||
|
||||
define KernelPackage/crypto-rng
|
||||
TITLE:=CryptoAPI random number generation
|
||||
DEPENDS:=+kmod-crypto-hash +kmod-crypto-hmac +kmod-crypto-sha256
|
||||
KCONFIG:= \
|
||||
CONFIG_CRYPTO_DRBG \
|
||||
CONFIG_CRYPTO_DRBG_HMAC=y \
|
||||
CONFIG_CRYPTO_DRBG_HASH=n \
|
||||
CONFIG_CRYPTO_DRBG_MENU \
|
||||
CONFIG_CRYPTO_JITTERENTROPY \
|
||||
CONFIG_CRYPTO_RNG2
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/crypto/drbg.ko@ge4.2 \
|
||||
$(LINUX_DIR)/crypto/jitterentropy_rng.ko@ge4.2 \
|
||||
$(LINUX_DIR)/crypto/krng.ko@lt4.2 \
|
||||
$(LINUX_DIR)/crypto/rng.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,drbg@ge4.2 jitterentropy_rng@ge4.2 krng@lt4.2 rng)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-rng))
|
||||
|
||||
|
||||
define KernelPackage/crypto-seqiv
|
||||
TITLE:=CryptoAPI Sequence Number IV Generator
|
||||
DEPENDS:=+kmod-crypto-aead +kmod-crypto-rng
|
||||
KCONFIG:=CONFIG_CRYPTO_SEQIV
|
||||
FILES:=$(LINUX_DIR)/crypto/seqiv.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,seqiv)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-seqiv))
|
||||
|
||||
|
||||
define KernelPackage/crypto-sha1
|
||||
TITLE:=SHA1 digest CryptoAPI module
|
||||
DEPENDS:=+kmod-crypto-hash
|
||||
@ -607,62 +646,6 @@ endef
|
||||
$(eval $(call KernelPackage,crypto-sha512))
|
||||
|
||||
|
||||
define KernelPackage/crypto-misc
|
||||
TITLE:=Other CryptoAPI modules
|
||||
DEPENDS:=+kmod-crypto-manager
|
||||
KCONFIG:= \
|
||||
CONFIG_CRYPTO_ANUBIS \
|
||||
CONFIG_CRYPTO_BLOWFISH \
|
||||
CONFIG_CRYPTO_CAMELLIA \
|
||||
CONFIG_CRYPTO_CAST5 \
|
||||
CONFIG_CRYPTO_CAST6 \
|
||||
CONFIG_CRYPTO_FCRYPT \
|
||||
CONFIG_CRYPTO_KHAZAD \
|
||||
CONFIG_CRYPTO_SERPENT \
|
||||
CONFIG_CRYPTO_TEA \
|
||||
CONFIG_CRYPTO_TGR192 \
|
||||
CONFIG_CRYPTO_TWOFISH \
|
||||
CONFIG_CRYPTO_TWOFISH_COMMON \
|
||||
CONFIG_CRYPTO_TWOFISH_586 \
|
||||
CONFIG_CRYPTO_WP512
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/crypto/anubis.ko \
|
||||
$(LINUX_DIR)/crypto/camellia_generic.ko \
|
||||
$(LINUX_DIR)/crypto/cast_common.ko \
|
||||
$(LINUX_DIR)/crypto/cast5_generic.ko \
|
||||
$(LINUX_DIR)/crypto/cast6_generic.ko \
|
||||
$(LINUX_DIR)/crypto/khazad.ko \
|
||||
$(LINUX_DIR)/crypto/tea.ko \
|
||||
$(LINUX_DIR)/crypto/tgr192.ko \
|
||||
$(LINUX_DIR)/crypto/twofish_common.ko \
|
||||
$(LINUX_DIR)/crypto/wp512.ko \
|
||||
$(LINUX_DIR)/crypto/twofish_generic.ko \
|
||||
$(LINUX_DIR)/crypto/blowfish_common.ko \
|
||||
$(LINUX_DIR)/crypto/blowfish_generic.ko \
|
||||
$(LINUX_DIR)/crypto/serpent_generic.ko
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
ifndef CONFIG_TARGET_x86_64
|
||||
define KernelPackage/crypto-misc/x86
|
||||
FILES+=$(LINUX_DIR)/arch/x86/crypto/twofish-i586.ko
|
||||
endef
|
||||
endif
|
||||
|
||||
$(eval $(call KernelPackage,crypto-misc))
|
||||
|
||||
|
||||
define KernelPackage/crypto-null
|
||||
TITLE:=Null CryptoAPI module
|
||||
KCONFIG:=CONFIG_CRYPTO_NULL
|
||||
FILES:=$(LINUX_DIR)/crypto/crypto_null.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,crypto_null)
|
||||
$(call AddDepends/crypto, +kmod-crypto-hash)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-null))
|
||||
|
||||
|
||||
define KernelPackage/crypto-test
|
||||
TITLE:=Test CryptoAPI module
|
||||
KCONFIG:=CONFIG_CRYPTO_TEST
|
||||
@ -673,6 +656,34 @@ endef
|
||||
$(eval $(call KernelPackage,crypto-test))
|
||||
|
||||
|
||||
define KernelPackage/crypto-user
|
||||
TITLE:=CryptoAPI userspace interface
|
||||
DEPENDS:=+kmod-crypto-hash +kmod-crypto-manager
|
||||
KCONFIG:= \
|
||||
CONFIG_CRYPTO_USER_API \
|
||||
CONFIG_CRYPTO_USER_API_HASH \
|
||||
CONFIG_CRYPTO_USER_API_SKCIPHER
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/crypto/af_alg.ko \
|
||||
$(LINUX_DIR)/crypto/algif_hash.ko \
|
||||
$(LINUX_DIR)/crypto/algif_skcipher.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,af_alg algif_hash algif_skcipher)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-user))
|
||||
|
||||
|
||||
define KernelPackage/crypto-wq
|
||||
TITLE:=CryptoAPI work queue handling
|
||||
KCONFIG:=CONFIG_CRYPTO_WORKQUEUE
|
||||
FILES:=$(LINUX_DIR)/crypto/crypto_wq.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,crypto_wq)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
$(eval $(call KernelPackage,crypto-wq))
|
||||
|
||||
|
||||
define KernelPackage/crypto-xts
|
||||
TITLE:=XTS cipher CryptoAPI module
|
||||
DEPENDS:=+kmod-crypto-gf128 +kmod-crypto-manager
|
||||
@ -683,3 +694,4 @@ define KernelPackage/crypto-xts
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-xts))
|
||||
|
||||
|
@ -22,6 +22,22 @@ endef
|
||||
$(eval $(call KernelPackage,firewire))
|
||||
|
||||
|
||||
define KernelPackage/firewire-net
|
||||
SUBMENU:=$(FIREWIRE_MENU)
|
||||
TITLE:=Support for IP networking over FireWire
|
||||
DEPENDS:=kmod-firewire
|
||||
KCONFIG:=CONFIG_FIREWIRE_NET
|
||||
FILES:=$(LINUX_DIR)/drivers/firewire/firewire-net.ko
|
||||
AUTOLOAD:=$(call AutoProbe,firewire-net)
|
||||
endef
|
||||
|
||||
define KernelPackage/firewire-net/description
|
||||
Kernel support for IPv4 over FireWire
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,firewire-net))
|
||||
|
||||
|
||||
define KernelPackage/firewire-ohci
|
||||
SUBMENU:=$(FIREWIRE_MENU)
|
||||
TITLE:=Support for OHCI-1394 controllers
|
||||
@ -58,17 +74,3 @@ endef
|
||||
$(eval $(call KernelPackage,firewire-sbp2))
|
||||
|
||||
|
||||
define KernelPackage/firewire-net
|
||||
SUBMENU:=$(FIREWIRE_MENU)
|
||||
TITLE:=Support for IP networking over FireWire
|
||||
DEPENDS:=kmod-firewire
|
||||
KCONFIG:=CONFIG_FIREWIRE_NET
|
||||
FILES:=$(LINUX_DIR)/drivers/firewire/firewire-net.ko
|
||||
AUTOLOAD:=$(call AutoProbe,firewire-net)
|
||||
endef
|
||||
|
||||
define KernelPackage/firewire-net/description
|
||||
Kernel support for IPv4 over FireWire
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,firewire-net))
|
||||
|
@ -7,25 +7,6 @@
|
||||
|
||||
FS_MENU:=Filesystems
|
||||
|
||||
define KernelPackage/fs-fscache
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=General filesystem local cache manager
|
||||
DEPENDS:=
|
||||
KCONFIG:=\
|
||||
CONFIG_FSCACHE=m \
|
||||
CONFIG_FSCACHE_STATS=y \
|
||||
CONFIG_FSCACHE_HISTOGRAM=n \
|
||||
CONFIG_FSCACHE_DEBUG=n \
|
||||
CONFIG_FSCACHE_OBJECT_LIST=n \
|
||||
CONFIG_CACHEFILES=y \
|
||||
CONFIG_CACHEFILES_DEBUG=n \
|
||||
CONFIG_CACHEFILES_HISTOGRAM=n
|
||||
FILES:=$(LINUX_DIR)/fs/fscache/fscache.ko
|
||||
AUTOLOAD:=$(call AutoLoad,29,fscache)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-fscache))
|
||||
|
||||
define KernelPackage/fs-9p
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=Plan 9 Resource Sharing Support
|
||||
@ -45,6 +26,7 @@ endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-9p))
|
||||
|
||||
|
||||
define KernelPackage/fs-afs
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=Andrew FileSystem client
|
||||
@ -142,6 +124,7 @@ endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-configfs))
|
||||
|
||||
|
||||
define KernelPackage/fs-cramfs
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=Compressed RAM/ROM filesystem support
|
||||
@ -158,6 +141,23 @@ endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-cramfs))
|
||||
|
||||
|
||||
define KernelPackage/fs-efivarfs
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=efivar filesystem support
|
||||
KCONFIG:=CONFIG_EFIVAR_FS
|
||||
FILES:=$(LINUX_DIR)/fs/efivarfs/efivarfs.ko
|
||||
DEPENDS:=@(x86_64||x86)
|
||||
AUTOLOAD:=$(call Autoload,90,efivarfs)
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-efivarfs/description
|
||||
Kernel module to support efivarfs file system mountpoint.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-efivarfs))
|
||||
|
||||
|
||||
define KernelPackage/fs-exportfs
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=exportfs kernel server support
|
||||
@ -220,19 +220,24 @@ endef
|
||||
$(eval $(call KernelPackage,fs-f2fs))
|
||||
|
||||
|
||||
define KernelPackage/fuse
|
||||
define KernelPackage/fs-fscache
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=FUSE (Filesystem in Userspace) support
|
||||
KCONFIG:= CONFIG_FUSE_FS
|
||||
FILES:=$(LINUX_DIR)/fs/fuse/fuse.ko
|
||||
AUTOLOAD:=$(call AutoLoad,80,fuse)
|
||||
TITLE:=General filesystem local cache manager
|
||||
DEPENDS:=
|
||||
KCONFIG:=\
|
||||
CONFIG_FSCACHE=m \
|
||||
CONFIG_FSCACHE_STATS=y \
|
||||
CONFIG_FSCACHE_HISTOGRAM=n \
|
||||
CONFIG_FSCACHE_DEBUG=n \
|
||||
CONFIG_FSCACHE_OBJECT_LIST=n \
|
||||
CONFIG_CACHEFILES=y \
|
||||
CONFIG_CACHEFILES_DEBUG=n \
|
||||
CONFIG_CACHEFILES_HISTOGRAM=n
|
||||
FILES:=$(LINUX_DIR)/fs/fscache/fscache.ko
|
||||
AUTOLOAD:=$(call AutoLoad,29,fscache)
|
||||
endef
|
||||
|
||||
define KernelPackage/fuse/description
|
||||
Kernel module for userspace filesystem support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fuse))
|
||||
$(eval $(call KernelPackage,fs-fscache))
|
||||
|
||||
|
||||
define KernelPackage/fs-hfs
|
||||
@ -284,6 +289,21 @@ endef
|
||||
$(eval $(call KernelPackage,fs-isofs))
|
||||
|
||||
|
||||
define KernelPackage/fs-jfs
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=JFS filesystem support
|
||||
KCONFIG:=CONFIG_JFS_FS
|
||||
FILES:=$(LINUX_DIR)/fs/jfs/jfs.ko
|
||||
AUTOLOAD:=$(call AutoLoad,30,jfs,1)
|
||||
$(call AddDepends/nls)
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-jfs/description
|
||||
Kernel module for JFS support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-jfs))
|
||||
|
||||
define KernelPackage/fs-minix
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=Minix filesystem support
|
||||
@ -335,37 +355,6 @@ endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-nfs))
|
||||
|
||||
define KernelPackage/fs-nfs-v3
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=NFS3 filesystem client support
|
||||
DEPENDS:=+kmod-fs-nfs
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/fs/nfs/nfsv3.ko
|
||||
AUTOLOAD:=$(call AutoLoad,41,nfsv3)
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-nfs-v3/description
|
||||
Kernel module for NFS v3 client support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-nfs-v3))
|
||||
|
||||
define KernelPackage/fs-nfs-v4
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=NFS4 filesystem client support
|
||||
DEPENDS:=+kmod-fs-nfs
|
||||
KCONFIG:= \
|
||||
CONFIG_NFS_V4=y
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/fs/nfs/nfsv4.ko
|
||||
AUTOLOAD:=$(call AutoLoad,41,nfsv4)
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-nfs-v4/description
|
||||
Kernel module for NFS v4 support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-nfs-v4))
|
||||
|
||||
define KernelPackage/fs-nfs-common
|
||||
SUBMENU:=$(FS_MENU)
|
||||
@ -413,6 +402,40 @@ endef
|
||||
$(eval $(call KernelPackage,fs-nfs-common-rpcsec))
|
||||
|
||||
|
||||
define KernelPackage/fs-nfs-v3
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=NFS3 filesystem client support
|
||||
DEPENDS:=+kmod-fs-nfs
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/fs/nfs/nfsv3.ko
|
||||
AUTOLOAD:=$(call AutoLoad,41,nfsv3)
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-nfs-v3/description
|
||||
Kernel module for NFS v3 client support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-nfs-v3))
|
||||
|
||||
|
||||
define KernelPackage/fs-nfs-v4
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=NFS4 filesystem client support
|
||||
DEPENDS:=+kmod-fs-nfs
|
||||
KCONFIG:= \
|
||||
CONFIG_NFS_V4=y
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/fs/nfs/nfsv4.ko
|
||||
AUTOLOAD:=$(call AutoLoad,41,nfsv4)
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-nfs-v4/description
|
||||
Kernel module for NFS v4 support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-nfs-v4))
|
||||
|
||||
|
||||
define KernelPackage/fs-nfsd
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=NFS kernel server support
|
||||
@ -532,17 +555,18 @@ endef
|
||||
$(eval $(call KernelPackage,fs-xfs))
|
||||
|
||||
|
||||
define KernelPackage/fs-jfs
|
||||
define KernelPackage/fuse
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=JFS filesystem support
|
||||
KCONFIG:=CONFIG_JFS_FS
|
||||
FILES:=$(LINUX_DIR)/fs/jfs/jfs.ko
|
||||
AUTOLOAD:=$(call AutoLoad,30,jfs,1)
|
||||
$(call AddDepends/nls)
|
||||
TITLE:=FUSE (Filesystem in Userspace) support
|
||||
KCONFIG:= CONFIG_FUSE_FS
|
||||
FILES:=$(LINUX_DIR)/fs/fuse/fuse.ko
|
||||
AUTOLOAD:=$(call AutoLoad,80,fuse)
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-jfs/description
|
||||
Kernel module for JFS support
|
||||
define KernelPackage/fuse/description
|
||||
Kernel module for userspace filesystem support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-jfs))
|
||||
$(eval $(call KernelPackage,fuse))
|
||||
|
||||
|
||||
|
@ -29,21 +29,6 @@ define AddDepends/hwmon
|
||||
DEPENDS:=kmod-hwmon-core $(1)
|
||||
endef
|
||||
|
||||
define KernelPackage/hwmon-vid
|
||||
TITLE:=VID/VRM/VRD voltage conversion module.
|
||||
KCONFIG:=CONFIG_HWMON_VID
|
||||
FILES:=$(LINUX_DIR)/drivers/hwmon/hwmon-vid.ko
|
||||
AUTOLOAD:=$(call AutoLoad,41,hwmon-vid)
|
||||
$(call AddDepends/hwmon,)
|
||||
endef
|
||||
|
||||
define KernelPackage/hwmon-vid/description
|
||||
VID/VRM/VRD voltage conversion module for hardware monitoring
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,hwmon-vid))
|
||||
|
||||
|
||||
define KernelPackage/hwmon-adt7410
|
||||
TITLE:=ADT7410 monitoring support
|
||||
KCONFIG:= \
|
||||
@ -78,6 +63,21 @@ endef
|
||||
$(eval $(call KernelPackage,hwmon-adt7475))
|
||||
|
||||
|
||||
define KernelPackage/hwmon-gpiofan
|
||||
TITLE:=Generic GPIO FAN support
|
||||
KCONFIG:=CONFIG_SENSORS_GPIO_FAN
|
||||
FILES:=$(LINUX_DIR)/drivers/hwmon/gpio-fan.ko
|
||||
AUTOLOAD:=$(call AutoLoad,60,gpio-fan)
|
||||
$(call AddDepends/hwmon,+kmod-i2c-core +PACKAGE_kmod-thermal:kmod-thermal)
|
||||
endef
|
||||
|
||||
define KernelPackage/hwmon-gpiofan/description
|
||||
Kernel module for GPIO controlled FANs
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,hwmon-gpiofan))
|
||||
|
||||
|
||||
define KernelPackage/hwmon-ina209
|
||||
TITLE:=INA209 monitoring support
|
||||
KCONFIG:=CONFIG_SENSORS_INA209
|
||||
@ -93,21 +93,6 @@ endef
|
||||
$(eval $(call KernelPackage,hwmon-ina209))
|
||||
|
||||
|
||||
define KernelPackage/hwmon-nct6775
|
||||
TITLE:=NCT6106D/6775F/6776F/6779D/6791D/6792D/6793D and compatibles monitoring support
|
||||
KCONFIG:=CONFIG_SENSORS_NCT6775
|
||||
FILES:=$(LINUX_DIR)/drivers/hwmon/nct6775.ko
|
||||
AUTOLOAD:=$(call AutoProbe,nct6775)
|
||||
$(call AddDepends/hwmon,@PCI_SUPPORT @TARGET_x86 +kmod-hwmon-vid)
|
||||
endef
|
||||
|
||||
define KernelPackage/hwmon-nct6775/description
|
||||
Kernel module for NCT6106D/6775F/6776F/6779D/6791D/6792D/6793D thermal monitor chip
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,hwmon-nct6775))
|
||||
|
||||
|
||||
define KernelPackage/hwmon-ina2xx
|
||||
TITLE:=INA2XX monitoring support
|
||||
KCONFIG:=CONFIG_SENSORS_INA2XX
|
||||
@ -137,6 +122,7 @@ endef
|
||||
|
||||
$(eval $(call KernelPackage,hwmon-it87))
|
||||
|
||||
|
||||
define KernelPackage/hwmon-lm63
|
||||
TITLE:=LM63/64 monitoring support
|
||||
KCONFIG:=CONFIG_SENSORS_LM63
|
||||
@ -211,6 +197,7 @@ endef
|
||||
|
||||
$(eval $(call KernelPackage,hwmon-lm90))
|
||||
|
||||
|
||||
define KernelPackage/hwmon-lm92
|
||||
TITLE:=LM92 monitoring support
|
||||
KCONFIG:=CONFIG_SENSORS_LM92
|
||||
@ -225,6 +212,7 @@ endef
|
||||
|
||||
$(eval $(call KernelPackage,hwmon-lm92))
|
||||
|
||||
|
||||
define KernelPackage/hwmon-lm95241
|
||||
TITLE:=LM95241 monitoring support
|
||||
KCONFIG:=CONFIG_SENSORS_LM95241
|
||||
@ -239,6 +227,7 @@ endef
|
||||
|
||||
$(eval $(call KernelPackage,hwmon-lm95241))
|
||||
|
||||
|
||||
define KernelPackage/hwmon-ltc4151
|
||||
TITLE:=LTC4151 monitoring support
|
||||
KCONFIG:=CONFIG_SENSORS_LTC4151
|
||||
@ -253,19 +242,51 @@ endef
|
||||
|
||||
$(eval $(call KernelPackage,hwmon-ltc4151))
|
||||
|
||||
define KernelPackage/hwmon-sht21
|
||||
TITLE:=Sensiron SHT21 and compat. monitoring support
|
||||
KCONFIG:=CONFIG_SENSORS_SHT21
|
||||
FILES:=$(LINUX_DIR)/drivers/hwmon/sht21.ko
|
||||
AUTOLOAD:=$(call AutoProbe,sht21)
|
||||
$(call AddDepends/hwmon,+kmod-i2c-core)
|
||||
|
||||
define KernelPackage/hwmon-nct6775
|
||||
TITLE:=NCT6106D/6775F/6776F/6779D/6791D/6792D/6793D and compatibles monitoring support
|
||||
KCONFIG:=CONFIG_SENSORS_NCT6775
|
||||
FILES:=$(LINUX_DIR)/drivers/hwmon/nct6775.ko
|
||||
AUTOLOAD:=$(call AutoProbe,nct6775)
|
||||
$(call AddDepends/hwmon,@PCI_SUPPORT @TARGET_x86 +kmod-hwmon-vid)
|
||||
endef
|
||||
|
||||
define KernelPackage/hwmon-sht21/description
|
||||
Kernel module for Sensirion SHT21 and SHT25 temperature and humidity sensors chip
|
||||
define KernelPackage/hwmon-nct6775/description
|
||||
Kernel module for NCT6106D/6775F/6776F/6779D/6791D/6792D/6793D thermal monitor chip
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,hwmon-sht21))
|
||||
$(eval $(call KernelPackage,hwmon-nct6775))
|
||||
|
||||
|
||||
define KernelPackage/hwmon-pc87360
|
||||
TITLE:=PC87360 monitoring support
|
||||
KCONFIG:=CONFIG_SENSORS_PC87360
|
||||
FILES:=$(LINUX_DIR)/drivers/hwmon/pc87360.ko
|
||||
AUTOLOAD:=$(call AutoProbe,pc87360)
|
||||
$(call AddDepends/hwmon,@TARGET_x86 +kmod-hwmon-vid)
|
||||
endef
|
||||
|
||||
define KernelPackage/hwmon-pc87360/description
|
||||
Kernel modules for PC87360 chips
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,hwmon-pc87360))
|
||||
|
||||
|
||||
define KernelPackage/hwmon-pwmfan
|
||||
TITLE:=Generic PWM FAN support
|
||||
KCONFIG:=CONFIG_SENSORS_PWM_FAN
|
||||
FILES:=$(LINUX_DIR)/drivers/hwmon/pwm-fan.ko
|
||||
AUTOLOAD:=$(call AutoLoad,60,pwm-fan)
|
||||
$(call AddDepends/hwmon, +PACKAGE_kmod-thermal:kmod-thermal)
|
||||
endef
|
||||
|
||||
define KernelPackage/hwmon-pwmfan/description
|
||||
Kernel module for PWM controlled FANs
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,hwmon-pwmfan))
|
||||
|
||||
|
||||
define KernelPackage/hwmon-sch5627
|
||||
TITLE:=SMSC SCH5627 monitoring support
|
||||
@ -283,66 +304,20 @@ endef
|
||||
|
||||
$(eval $(call KernelPackage,hwmon-sch5627))
|
||||
|
||||
define KernelPackage/hwmon-pc87360
|
||||
TITLE:=PC87360 monitoring support
|
||||
KCONFIG:=CONFIG_SENSORS_PC87360
|
||||
FILES:=$(LINUX_DIR)/drivers/hwmon/pc87360.ko
|
||||
AUTOLOAD:=$(call AutoProbe,pc87360)
|
||||
$(call AddDepends/hwmon,@TARGET_x86 +kmod-hwmon-vid)
|
||||
|
||||
define KernelPackage/hwmon-sht21
|
||||
TITLE:=Sensiron SHT21 and compat. monitoring support
|
||||
KCONFIG:=CONFIG_SENSORS_SHT21
|
||||
FILES:=$(LINUX_DIR)/drivers/hwmon/sht21.ko
|
||||
AUTOLOAD:=$(call AutoProbe,sht21)
|
||||
$(call AddDepends/hwmon,+kmod-i2c-core)
|
||||
endef
|
||||
|
||||
define KernelPackage/hwmon-pc87360/description
|
||||
Kernel modules for PC87360 chips
|
||||
define KernelPackage/hwmon-sht21/description
|
||||
Kernel module for Sensirion SHT21 and SHT25 temperature and humidity sensors chip
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,hwmon-pc87360))
|
||||
|
||||
|
||||
define KernelPackage/hwmon-w83627hf
|
||||
TITLE:=Winbond W83627HF monitoring support
|
||||
KCONFIG:=CONFIG_SENSORS_W83627HF
|
||||
FILES:=$(LINUX_DIR)/drivers/hwmon/w83627hf.ko
|
||||
AUTOLOAD:=$(call AutoLoad,50,w83627hf)
|
||||
$(call AddDepends/hwmon,@TARGET_x86 +kmod-hwmon-vid)
|
||||
endef
|
||||
|
||||
define KernelPackage/hwmon-w83627hf/description
|
||||
Kernel module for the Winbond W83627HF chips.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,hwmon-w83627hf))
|
||||
|
||||
|
||||
define KernelPackage/hwmon-w83627ehf
|
||||
TITLE:=Winbond W83627EHF/EHG/DHG/UHG, W83667HG monitoring support
|
||||
KCONFIG:=CONFIG_SENSORS_W83627EHF
|
||||
FILES:=$(LINUX_DIR)/drivers/hwmon/w83627ehf.ko
|
||||
AUTOLOAD:=$(call AutoProbe,w83627ehf)
|
||||
$(call AddDepends/hwmon,@TARGET_x86 +kmod-hwmon-vid)
|
||||
endef
|
||||
|
||||
define KernelPackage/hwmon-w83627ehf/description
|
||||
Kernel module for Winbond W83627EHF/EHG/DHG/UHG and W83667HG thermal monitor chip
|
||||
Support for NCT6775F and NCT6776F has been removed from this driver in favour of
|
||||
using the nct6775 driver to handle those chips.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,hwmon-w83627ehf))
|
||||
|
||||
|
||||
define KernelPackage/hwmon-w83793
|
||||
TITLE:=Winbond W83793G/R monitoring support
|
||||
KCONFIG:=CONFIG_SENSORS_W83793
|
||||
FILES:=$(LINUX_DIR)/drivers/hwmon/w83793.ko
|
||||
AUTOLOAD:=$(call AutoProbe,w83793)
|
||||
$(call AddDepends/hwmon,+kmod-i2c-core +kmod-hwmon-vid)
|
||||
endef
|
||||
|
||||
define KernelPackage/hwmon-w83793/description
|
||||
Kernel module for the Winbond W83793G and W83793R chips.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,hwmon-w83793))
|
||||
$(eval $(call KernelPackage,hwmon-sht21))
|
||||
|
||||
|
||||
define KernelPackage/hwmon-tmp102
|
||||
@ -390,31 +365,65 @@ endef
|
||||
$(eval $(call KernelPackage,hwmon-tmp421))
|
||||
|
||||
|
||||
define KernelPackage/hwmon-gpiofan
|
||||
TITLE:=Generic GPIO FAN support
|
||||
KCONFIG:=CONFIG_SENSORS_GPIO_FAN
|
||||
FILES:=$(LINUX_DIR)/drivers/hwmon/gpio-fan.ko
|
||||
AUTOLOAD:=$(call AutoLoad,60,gpio-fan)
|
||||
$(call AddDepends/hwmon,+kmod-i2c-core +PACKAGE_kmod-thermal:kmod-thermal)
|
||||
define KernelPackage/hwmon-vid
|
||||
TITLE:=VID/VRM/VRD voltage conversion module.
|
||||
KCONFIG:=CONFIG_HWMON_VID
|
||||
FILES:=$(LINUX_DIR)/drivers/hwmon/hwmon-vid.ko
|
||||
AUTOLOAD:=$(call AutoLoad,41,hwmon-vid)
|
||||
$(call AddDepends/hwmon,)
|
||||
endef
|
||||
|
||||
define KernelPackage/hwmon-gpiofan/description
|
||||
Kernel module for GPIO controlled FANs
|
||||
define KernelPackage/hwmon-vid/description
|
||||
VID/VRM/VRD voltage conversion module for hardware monitoring
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,hwmon-gpiofan))
|
||||
$(eval $(call KernelPackage,hwmon-vid))
|
||||
|
||||
|
||||
define KernelPackage/hwmon-pwmfan
|
||||
TITLE:=Generic PWM FAN support
|
||||
KCONFIG:=CONFIG_SENSORS_PWM_FAN
|
||||
FILES:=$(LINUX_DIR)/drivers/hwmon/pwm-fan.ko
|
||||
AUTOLOAD:=$(call AutoLoad,60,pwm-fan)
|
||||
$(call AddDepends/hwmon, +PACKAGE_kmod-thermal:kmod-thermal)
|
||||
define KernelPackage/hwmon-w83627ehf
|
||||
TITLE:=Winbond W83627EHF/EHG/DHG/UHG, W83667HG monitoring support
|
||||
KCONFIG:=CONFIG_SENSORS_W83627EHF
|
||||
FILES:=$(LINUX_DIR)/drivers/hwmon/w83627ehf.ko
|
||||
AUTOLOAD:=$(call AutoProbe,w83627ehf)
|
||||
$(call AddDepends/hwmon,@TARGET_x86 +kmod-hwmon-vid)
|
||||
endef
|
||||
|
||||
define KernelPackage/hwmon-pwmfan/description
|
||||
Kernel module for PWM controlled FANs
|
||||
define KernelPackage/hwmon-w83627ehf/description
|
||||
Kernel module for Winbond W83627EHF/EHG/DHG/UHG and W83667HG thermal monitor chip
|
||||
Support for NCT6775F and NCT6776F has been removed from this driver in favour of
|
||||
using the nct6775 driver to handle those chips.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,hwmon-pwmfan))
|
||||
$(eval $(call KernelPackage,hwmon-w83627ehf))
|
||||
|
||||
|
||||
define KernelPackage/hwmon-w83627hf
|
||||
TITLE:=Winbond W83627HF monitoring support
|
||||
KCONFIG:=CONFIG_SENSORS_W83627HF
|
||||
FILES:=$(LINUX_DIR)/drivers/hwmon/w83627hf.ko
|
||||
AUTOLOAD:=$(call AutoLoad,50,w83627hf)
|
||||
$(call AddDepends/hwmon,@TARGET_x86 +kmod-hwmon-vid)
|
||||
endef
|
||||
|
||||
define KernelPackage/hwmon-w83627hf/description
|
||||
Kernel module for the Winbond W83627HF chips.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,hwmon-w83627hf))
|
||||
|
||||
|
||||
define KernelPackage/hwmon-w83793
|
||||
TITLE:=Winbond W83793G/R monitoring support
|
||||
KCONFIG:=CONFIG_SENSORS_W83793
|
||||
FILES:=$(LINUX_DIR)/drivers/hwmon/w83793.ko
|
||||
AUTOLOAD:=$(call AutoProbe,w83793)
|
||||
$(call AddDepends/hwmon,+kmod-i2c-core +kmod-hwmon-vid)
|
||||
endef
|
||||
|
||||
define KernelPackage/hwmon-w83793/description
|
||||
Kernel module for the Winbond W83793G and W83793R chips.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,hwmon-w83793))
|
||||
|
||||
|
||||
|
@ -24,10 +24,6 @@ I2C_CORE_MODULES:= \
|
||||
CONFIG_I2C:drivers/i2c/i2c-core \
|
||||
CONFIG_I2C_CHARDEV:drivers/i2c/i2c-dev
|
||||
|
||||
ifeq ($(CONFIG_OF),y)
|
||||
I2C_CORE_MODULES+=CONFIG_OF_I2C:drivers/of/of_i2c@lt3.12
|
||||
endif
|
||||
|
||||
define KernelPackage/i2c-core
|
||||
$(call i2c_defaults,$(I2C_CORE_MODULES),51)
|
||||
TITLE:=I2C support
|
||||
@ -104,43 +100,6 @@ endef
|
||||
|
||||
$(eval $(call KernelPackage,i2c-gpio))
|
||||
|
||||
I2C_TINY_USB_MODULES:= \
|
||||
CONFIG_I2C_TINY_USB:drivers/i2c/busses/i2c-tiny-usb
|
||||
|
||||
define KernelPackage/i2c-tiny-usb
|
||||
$(call i2c_defaults,$(I2C_TINY_USB_MODULES),59)
|
||||
TITLE:=I2C Tiny USB adaptor
|
||||
DEPENDS:=@USB_SUPPORT kmod-i2c-core +kmod-usb-core
|
||||
endef
|
||||
|
||||
define KernelPackage/i2c-tiny-usb/description
|
||||
Kernel module for the I2C Tiny USB adaptor developed
|
||||
by Till Harbaum (http://www.harbaum.org/till/i2c_tiny_usb)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,i2c-tiny-usb))
|
||||
|
||||
|
||||
I2C_PIIX4_MODULES:= \
|
||||
CONFIG_I2C_PIIX4:drivers/i2c/busses/i2c-piix4
|
||||
|
||||
define KernelPackage/i2c-piix4
|
||||
$(call i2c_defaults,$(I2C_PIIX4_MODULES),59)
|
||||
TITLE:=Intel PIIX4 and compatible I2C interfaces
|
||||
DEPENDS:=@PCI_SUPPORT @TARGET_x86 kmod-i2c-core
|
||||
endef
|
||||
|
||||
define KernelPackage/i2c-piix4/description
|
||||
Support for the Intel PIIX4 family of mainboard I2C interfaces,
|
||||
specifically Intel PIIX4, Intel 440MX, ATI IXP200, ATI IXP300,
|
||||
ATI IXP400, ATI SB600, ATI SB700/SP5100, ATI SB800, AMD Hudson-2,
|
||||
AMD ML, AMD CZ, Serverworks OSB4, Serverworks CSB5,
|
||||
Serverworks CSB6, Serverworks HT-1000, Serverworks HT-1100 and
|
||||
SMSC Victory66.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,i2c-piix4))
|
||||
|
||||
|
||||
I2C_I801_MODULES:= \
|
||||
CONFIG_I2C_I801:drivers/i2c/busses/i2c-i801
|
||||
@ -167,22 +126,6 @@ endef
|
||||
$(eval $(call KernelPackage,i2c-i801))
|
||||
|
||||
|
||||
I2C_SMBUS_MODULES:= \
|
||||
CONFIG_I2C_SMBUS:drivers/i2c/i2c-smbus
|
||||
|
||||
define KernelPackage/i2c-smbus
|
||||
$(call i2c_defaults,$(I2C_SMBUS_MODULES),58)
|
||||
TITLE:=SMBus-specific protocols helper
|
||||
DEPENDS:=kmod-i2c-core
|
||||
endef
|
||||
|
||||
define KernelPackage/i2c-smbus/description
|
||||
Support for the SMBus extensions to the I2C specification.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,i2c-smbus))
|
||||
|
||||
|
||||
I2C_MUX_MODULES:= \
|
||||
CONFIG_I2C_MUX:drivers/i2c/i2c-mux
|
||||
|
||||
@ -213,6 +156,22 @@ endef
|
||||
|
||||
$(eval $(call KernelPackage,i2c-mux-gpio))
|
||||
|
||||
|
||||
I2C_MUX_PCA9541_MODULES:= \
|
||||
CONFIG_I2C_MUX_PCA9541:drivers/i2c/muxes/i2c-mux-pca9541
|
||||
|
||||
define KernelPackage/i2c-mux-pca9541
|
||||
$(call i2c_defaults,$(I2C_MUX_PCA9541_MODULES),51)
|
||||
TITLE:=Philips PCA9541 I2C mux/switches
|
||||
DEPENDS:=kmod-i2c-mux
|
||||
endef
|
||||
|
||||
define KernelPackage/i2c-mux-pca9541/description
|
||||
Kernel modules for PCA9541 I2C bus mux/switching devices
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,i2c-mux-pca9541))
|
||||
|
||||
I2C_MUX_PCA954x_MODULES:= \
|
||||
CONFIG_I2C_MUX_PCA954x:drivers/i2c/muxes/i2c-mux-pca954x
|
||||
|
||||
@ -229,17 +188,58 @@ endef
|
||||
$(eval $(call KernelPackage,i2c-mux-pca954x))
|
||||
|
||||
|
||||
I2C_MUX_PCA9541_MODULES:= \
|
||||
CONFIG_I2C_MUX_PCA9541:drivers/i2c/muxes/i2c-mux-pca9541
|
||||
I2C_PIIX4_MODULES:= \
|
||||
CONFIG_I2C_PIIX4:drivers/i2c/busses/i2c-piix4
|
||||
|
||||
define KernelPackage/i2c-mux-pca9541
|
||||
$(call i2c_defaults,$(I2C_MUX_PCA9541_MODULES),51)
|
||||
TITLE:=Philips PCA9541 I2C mux/switches
|
||||
DEPENDS:=kmod-i2c-mux
|
||||
define KernelPackage/i2c-piix4
|
||||
$(call i2c_defaults,$(I2C_PIIX4_MODULES),59)
|
||||
TITLE:=Intel PIIX4 and compatible I2C interfaces
|
||||
DEPENDS:=@PCI_SUPPORT @TARGET_x86 kmod-i2c-core
|
||||
endef
|
||||
|
||||
define KernelPackage/i2c-mux-pca9541/description
|
||||
Kernel modules for PCA9541 I2C bus mux/switching devices
|
||||
define KernelPackage/i2c-piix4/description
|
||||
Support for the Intel PIIX4 family of mainboard I2C interfaces,
|
||||
specifically Intel PIIX4, Intel 440MX, ATI IXP200, ATI IXP300,
|
||||
ATI IXP400, ATI SB600, ATI SB700/SP5100, ATI SB800, AMD Hudson-2,
|
||||
AMD ML, AMD CZ, Serverworks OSB4, Serverworks CSB5,
|
||||
Serverworks CSB6, Serverworks HT-1000, Serverworks HT-1100 and
|
||||
SMSC Victory66.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,i2c-mux-pca9541))
|
||||
$(eval $(call KernelPackage,i2c-piix4))
|
||||
|
||||
|
||||
I2C_SMBUS_MODULES:= \
|
||||
CONFIG_I2C_SMBUS:drivers/i2c/i2c-smbus
|
||||
|
||||
define KernelPackage/i2c-smbus
|
||||
$(call i2c_defaults,$(I2C_SMBUS_MODULES),58)
|
||||
TITLE:=SMBus-specific protocols helper
|
||||
DEPENDS:=kmod-i2c-core
|
||||
endef
|
||||
|
||||
define KernelPackage/i2c-smbus/description
|
||||
Support for the SMBus extensions to the I2C specification.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,i2c-smbus))
|
||||
|
||||
|
||||
|
||||
I2C_TINY_USB_MODULES:= \
|
||||
CONFIG_I2C_TINY_USB:drivers/i2c/busses/i2c-tiny-usb
|
||||
|
||||
define KernelPackage/i2c-tiny-usb
|
||||
$(call i2c_defaults,$(I2C_TINY_USB_MODULES),59)
|
||||
TITLE:=I2C Tiny USB adaptor
|
||||
DEPENDS:=@USB_SUPPORT kmod-i2c-core +kmod-usb-core
|
||||
endef
|
||||
|
||||
define KernelPackage/i2c-tiny-usb/description
|
||||
Kernel module for the I2C Tiny USB adaptor developed
|
||||
by Till Harbaum (http://www.harbaum.org/till/i2c_tiny_usb)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,i2c-tiny-usb))
|
||||
|
||||
|
||||
|
@ -52,6 +52,21 @@ endef
|
||||
|
||||
$(eval $(call KernelPackage,iio-ad799x))
|
||||
|
||||
define KernelPackage/iio-mxs-lradc
|
||||
SUBMENU:=$(IIO_MENU)
|
||||
DEPENDS:=@TARGET_mxs +kmod-iio-core
|
||||
TITLE:=Freescale i.MX23/i.MX28 LRADC ADC driver
|
||||
KCONFIG:= \
|
||||
CONFIG_MXS_LRADC_ADC
|
||||
FILES:=$(LINUX_DIR)/drivers/iio/adc/mxs-lradc-adc.ko
|
||||
AUTOLOAD:=$(call AutoLoad,56,mxs-lradc-adc)
|
||||
endef
|
||||
|
||||
define KernelPackage/iio-mxs-lradc/description
|
||||
Support for Freescale's i.MX23/i.MX28 SoC internal Low-Resolution ADC
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,iio-mxs-lradc))
|
||||
|
||||
define KernelPackage/iio-dht11
|
||||
SUBMENU:=$(IIO_MENU)
|
||||
|
@ -32,7 +32,7 @@ define KernelPackage/ledtrig-heartbeat
|
||||
AUTOLOAD:=$(call AutoLoad,50,ledtrig-heartbeat)
|
||||
endef
|
||||
|
||||
define KernelPackage/ledtrig-gpio/description
|
||||
define KernelPackage/ledtrig-heartbeat/description
|
||||
Kernel module that allows LEDs to blink like heart beat
|
||||
endef
|
||||
|
||||
|
@ -519,9 +519,9 @@ $(eval $(call KernelPackage,e1000e))
|
||||
define KernelPackage/igb
|
||||
SUBMENU:=$(NETWORK_DEVICES_MENU)
|
||||
TITLE:=Intel(R) 82575/82576 PCI-Express Gigabit Ethernet support
|
||||
DEPENDS:=@PCI_SUPPORT +kmod-i2c-core +kmod-i2c-algo-bit +kmod-ptp
|
||||
DEPENDS:=@PCI_SUPPORT +kmod-i2c-core +kmod-i2c-algo-bit +kmod-ptp +kmod-hwmon-core
|
||||
KCONFIG:=CONFIG_IGB \
|
||||
CONFIG_IGB_HWMON=n \
|
||||
CONFIG_IGB_HWMON=y \
|
||||
CONFIG_IGB_DCA=n
|
||||
FILES:=$(LINUX_DIR)/drivers/net/ethernet/intel/igb/igb.ko
|
||||
AUTOLOAD:=$(call AutoLoad,35,igb)
|
||||
@ -539,7 +539,7 @@ define KernelPackage/igbvf
|
||||
TITLE:=Intel(R) 82576 Virtual Function Ethernet support
|
||||
DEPENDS:=@PCI_SUPPORT @TARGET_x86 +kmod-i2c-core +kmod-i2c-algo-bit +kmod-ptp
|
||||
KCONFIG:=CONFIG_IGBVF \
|
||||
CONFIG_IGB_HWMON=n \
|
||||
CONFIG_IGB_HWMON=y \
|
||||
CONFIG_IGB_DCA=n
|
||||
FILES:=$(LINUX_DIR)/drivers/net/ethernet/intel/igbvf/igbvf.ko
|
||||
AUTOLOAD:=$(call AutoLoad,35,igbvf)
|
||||
@ -555,10 +555,10 @@ $(eval $(call KernelPackage,igbvf))
|
||||
define KernelPackage/ixgbe
|
||||
SUBMENU:=$(NETWORK_DEVICES_MENU)
|
||||
TITLE:=Intel(R) 82598/82599 PCI-Express 10 Gigabit Ethernet support
|
||||
DEPENDS:=@PCI_SUPPORT +kmod-mdio +kmod-ptp
|
||||
DEPENDS:=@PCI_SUPPORT +kmod-mdio +kmod-ptp +kmod-hwmon-core
|
||||
KCONFIG:=CONFIG_IXGBE \
|
||||
CONFIG_IXGBE_VXLAN=n \
|
||||
CONFIG_IXGBE_HWMON=n \
|
||||
CONFIG_IXGBE_HWMON=y \
|
||||
CONFIG_IXGBE_DCA=n
|
||||
FILES:=$(LINUX_DIR)/drivers/net/ethernet/intel/ixgbe/ixgbe.ko
|
||||
AUTOLOAD:=$(call AutoLoad,35,ixgbe)
|
||||
@ -577,7 +577,7 @@ define KernelPackage/ixgbevf
|
||||
DEPENDS:=@PCI_SUPPORT +kmod-ixgbe
|
||||
KCONFIG:=CONFIG_IXGBEVF \
|
||||
CONFIG_IXGBE_VXLAN=n \
|
||||
CONFIG_IXGBE_HWMON=n \
|
||||
CONFIG_IXGBE_HWMON=y \
|
||||
CONFIG_IXGBE_DCA=n
|
||||
FILES:=$(LINUX_DIR)/drivers/net/ethernet/intel/ixgbevf/ixgbevf.ko
|
||||
AUTOLOAD:=$(call AutoLoad,35,ixgbevf)
|
||||
|
@ -11,13 +11,39 @@ NF_KMOD:=1
|
||||
include $(INCLUDE_DIR)/netfilter.mk
|
||||
|
||||
|
||||
define KernelPackage/nf-reject
|
||||
SUBMENU:=$(NF_MENU)
|
||||
TITLE:=Netfilter IPv4 reject support
|
||||
KCONFIG:= \
|
||||
CONFIG_NETFILTER=y \
|
||||
CONFIG_NETFILTER_ADVANCED=y \
|
||||
$(KCONFIG_NF_REJECT)
|
||||
FILES:=$(foreach mod,$(NF_REJECT-m),$(LINUX_DIR)/net/$(mod).ko)
|
||||
AUTOLOAD:=$(call AutoProbe,$(notdir $(NF_REJECT-m)))
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,nf-reject))
|
||||
|
||||
|
||||
define KernelPackage/nf-reject6
|
||||
SUBMENU:=$(NF_MENU)
|
||||
TITLE:=Netfilter IPv6 reject support
|
||||
KCONFIG:= \
|
||||
CONFIG_NETFILTER=y \
|
||||
CONFIG_NETFILTER_ADVANCED=y \
|
||||
$(KCONFIG_NF_REJECT6)
|
||||
DEPENDS:=@IPV6
|
||||
FILES:=$(foreach mod,$(NF_REJECT6-m),$(LINUX_DIR)/net/$(mod).ko)
|
||||
AUTOLOAD:=$(call AutoProbe,$(notdir $(NF_REJECT6-m)))
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,nf-reject6))
|
||||
|
||||
|
||||
define KernelPackage/nf-ipt
|
||||
SUBMENU:=$(NF_MENU)
|
||||
TITLE:=Iptables core
|
||||
KCONFIG:= \
|
||||
CONFIG_NETFILTER=y \
|
||||
CONFIG_NETFILTER_ADVANCED=y \
|
||||
$(KCONFIG_NF_IPT)
|
||||
KCONFIG:=$(KCONFIG_NF_IPT)
|
||||
FILES:=$(foreach mod,$(NF_IPT-m),$(LINUX_DIR)/net/$(mod).ko)
|
||||
AUTOLOAD:=$(call AutoProbe,$(notdir $(NF_IPT-m)))
|
||||
endef
|
||||
@ -31,7 +57,7 @@ define KernelPackage/nf-ipt6
|
||||
KCONFIG:=$(KCONFIG_NF_IPT6)
|
||||
FILES:=$(foreach mod,$(NF_IPT6-m),$(LINUX_DIR)/net/$(mod).ko)
|
||||
AUTOLOAD:=$(call AutoProbe,$(notdir $(NF_IPT6-m)))
|
||||
DEPENDS:=+kmod-nf-ipt +kmod-nf-conntrack6
|
||||
DEPENDS:=+kmod-nf-ipt
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,nf-ipt6))
|
||||
@ -44,7 +70,7 @@ define KernelPackage/ipt-core
|
||||
KCONFIG:=$(KCONFIG_IPT_CORE)
|
||||
FILES:=$(foreach mod,$(IPT_CORE-m),$(LINUX_DIR)/net/$(mod).ko)
|
||||
AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_CORE-m)))
|
||||
DEPENDS:=+kmod-nf-ipt
|
||||
DEPENDS:=+kmod-nf-reject +kmod-nf-ipt
|
||||
endef
|
||||
|
||||
define KernelPackage/ipt-core/description
|
||||
@ -94,7 +120,7 @@ define KernelPackage/nf-nat
|
||||
SUBMENU:=$(NF_MENU)
|
||||
TITLE:=Netfilter NAT
|
||||
KCONFIG:=$(KCONFIG_NF_NAT)
|
||||
DEPENDS:=+kmod-nf-conntrack +kmod-nf-ipt
|
||||
DEPENDS:=+kmod-nf-conntrack
|
||||
FILES:=$(foreach mod,$(NF_NAT-m),$(LINUX_DIR)/net/$(mod).ko)
|
||||
AUTOLOAD:=$(call AutoProbe,$(notdir $(NF_NAT-m)))
|
||||
endef
|
||||
@ -106,7 +132,7 @@ define KernelPackage/nf-nat6
|
||||
SUBMENU:=$(NF_MENU)
|
||||
TITLE:=Netfilter IPV6-NAT
|
||||
KCONFIG:=$(KCONFIG_NF_NAT6)
|
||||
DEPENDS:=+kmod-nf-conntrack6 +kmod-nf-ipt6 +kmod-nf-nat
|
||||
DEPENDS:=+kmod-nf-conntrack6 +kmod-nf-nat
|
||||
FILES:=$(foreach mod,$(NF_NAT6-m),$(LINUX_DIR)/net/$(mod).ko)
|
||||
AUTOLOAD:=$(call AutoProbe,$(notdir $(NF_NAT6-m)))
|
||||
endef
|
||||
@ -114,6 +140,23 @@ endef
|
||||
$(eval $(call KernelPackage,nf-nat6))
|
||||
|
||||
|
||||
define KernelPackage/nf-flow
|
||||
SUBMENU:=$(NF_MENU)
|
||||
TITLE:=Netfilter flowtable support
|
||||
KCONFIG:= \
|
||||
CONFIG_NETFILTER_INGRESS=y \
|
||||
CONFIG_NF_FLOW_TABLE \
|
||||
CONFIG_NF_FLOW_TABLE_HW
|
||||
DEPENDS:=+kmod-nf-conntrack @!LINUX_3_18 @!LINUX_4_4 @!LINUX_4_9
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/net/netfilter/nf_flow_table.ko \
|
||||
$(LINUX_DIR)/net/netfilter/nf_flow_table_hw.ko
|
||||
AUTOLOAD:=$(call AutoProbe,nf_flow_table nf_flow_table_hw)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,nf-flow))
|
||||
|
||||
|
||||
define AddDepends/ipt
|
||||
SUBMENU:=$(NF_MENU)
|
||||
DEPENDS+= +kmod-ipt-core $(1)
|
||||
@ -161,6 +204,21 @@ endef
|
||||
|
||||
$(eval $(call KernelPackage,ipt-conntrack-extra))
|
||||
|
||||
define KernelPackage/ipt-conntrack-label
|
||||
TITLE:=Module for handling connection tracking labels
|
||||
KCONFIG:=$(KCONFIG_IPT_CONNTRACK_LABEL)
|
||||
FILES:=$(foreach mod,$(IPT_CONNTRACK_LABEL-m),$(LINUX_DIR)/net/$(mod).ko)
|
||||
AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_CONNTRACK_LABEL-m)))
|
||||
$(call AddDepends/ipt,+kmod-ipt-conntrack)
|
||||
endef
|
||||
|
||||
define KernelPackage/ipt-conntrack-label/description
|
||||
Netfilter (IPv4) module for handling connection tracking labels
|
||||
Includes:
|
||||
- connlabel
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,ipt-conntrack-label))
|
||||
|
||||
define KernelPackage/ipt-filter
|
||||
TITLE:=Modules for packet content inspection
|
||||
@ -179,6 +237,17 @@ endef
|
||||
$(eval $(call KernelPackage,ipt-filter))
|
||||
|
||||
|
||||
define KernelPackage/ipt-offload
|
||||
TITLE:=Netfilter routing/NAT offload support
|
||||
KCONFIG:=CONFIG_NETFILTER_XT_TARGET_FLOWOFFLOAD
|
||||
FILES:=$(foreach mod,$(IPT_FLOW-m),$(LINUX_DIR)/net/$(mod).ko)
|
||||
AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_FLOW-m)))
|
||||
$(call AddDepends/ipt,+kmod-nf-flow)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,ipt-offload))
|
||||
|
||||
|
||||
define KernelPackage/ipt-ipopt
|
||||
TITLE:=Modules for matching/changing IP packet options
|
||||
KCONFIG:=$(KCONFIG_IPT_IPOPT)
|
||||
@ -447,10 +516,9 @@ $(eval $(call KernelPackage,ipt-nfqueue))
|
||||
define KernelPackage/ipt-debug
|
||||
TITLE:=Module for debugging/development
|
||||
KCONFIG:=$(KCONFIG_IPT_DEBUG)
|
||||
DEFAULT:=n
|
||||
FILES:=$(foreach mod,$(IPT_DEBUG-m),$(LINUX_DIR)/net/$(mod).ko)
|
||||
AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_DEBUG-m)))
|
||||
$(call AddDepends/ipt)
|
||||
$(call AddDepends/ipt,+kmod-ipt-raw +IPV6:kmod-ipt-raw6)
|
||||
endef
|
||||
|
||||
define KernelPackage/ipt-debug/description
|
||||
@ -478,7 +546,7 @@ $(eval $(call KernelPackage,ipt-led))
|
||||
|
||||
define KernelPackage/ipt-tproxy
|
||||
TITLE:=Transparent proxying support
|
||||
DEPENDS+=+kmod-ipt-conntrack +IPV6:kmod-ip6tables
|
||||
DEPENDS+=+kmod-ipt-conntrack +IPV6:kmod-nf-conntrack6 +IPV6:kmod-ip6tables
|
||||
KCONFIG:= \
|
||||
CONFIG_NETFILTER_XT_MATCH_SOCKET \
|
||||
CONFIG_NETFILTER_XT_TARGET_TPROXY
|
||||
@ -637,7 +705,7 @@ $(eval $(call KernelPackage,ipt-extra))
|
||||
define KernelPackage/ip6tables
|
||||
SUBMENU:=$(NF_MENU)
|
||||
TITLE:=IPv6 modules
|
||||
DEPENDS:=+kmod-nf-ipt6 +kmod-ipt-core +kmod-ipt-conntrack
|
||||
DEPENDS:=+kmod-nf-reject6 +kmod-nf-ipt6 +kmod-ipt-core
|
||||
KCONFIG:=$(KCONFIG_IPT_IPV6)
|
||||
FILES:=$(foreach mod,$(IPT_IPV6-m),$(LINUX_DIR)/net/$(mod).ko)
|
||||
AUTOLOAD:=$(call AutoLoad,42,$(notdir $(IPT_IPV6-m)))
|
||||
@ -876,16 +944,12 @@ $(eval $(call KernelPackage,ipt-rpfilter))
|
||||
define KernelPackage/nft-core
|
||||
SUBMENU:=$(NF_MENU)
|
||||
TITLE:=Netfilter nf_tables support
|
||||
DEPENDS:=+kmod-nfnetlink +kmod-nf-conntrack6 +kmod-nf-ipt +kmod-nf-ipt6
|
||||
DEPENDS:=+kmod-nfnetlink +kmod-nf-reject +kmod-nf-reject6 +kmod-nf-conntrack6
|
||||
FILES:=$(foreach mod,$(NFT_CORE-m),$(LINUX_DIR)/net/$(mod).ko)
|
||||
AUTOLOAD:=$(call AutoProbe,$(notdir $(NFT_CORE-m)))
|
||||
KCONFIG:= \
|
||||
CONFIG_NETFILTER=y \
|
||||
CONFIG_NETFILTER_ADVANCED=y \
|
||||
CONFIG_NFT_COMPAT=n \
|
||||
CONFIG_NFT_QUEUE=n \
|
||||
CONFIG_NF_TABLES_ARP=n \
|
||||
CONFIG_NF_TABLES_BRIDGE=n \
|
||||
$(KCONFIG_NFT_CORE)
|
||||
endef
|
||||
|
||||
@ -896,10 +960,36 @@ endef
|
||||
$(eval $(call KernelPackage,nft-core))
|
||||
|
||||
|
||||
define KernelPackage/nft-arp
|
||||
SUBMENU:=$(NF_MENU)
|
||||
TITLE:=Netfilter nf_tables ARP table support
|
||||
DEPENDS:=+kmod-nft-core
|
||||
FILES:=$(foreach mod,$(NFT_ARP-m),$(LINUX_DIR)/net/$(mod).ko)
|
||||
AUTOLOAD:=$(call AutoProbe,$(notdir $(NFT_ARP-m)))
|
||||
KCONFIG:=$(KCONFIG_NFT_ARP)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,nft-arp))
|
||||
|
||||
|
||||
define KernelPackage/nft-bridge
|
||||
SUBMENU:=$(NF_MENU)
|
||||
TITLE:=Netfilter nf_tables bridge table support
|
||||
DEPENDS:=+kmod-nft-core
|
||||
FILES:=$(foreach mod,$(NFT_BRIDGE-m),$(LINUX_DIR)/net/$(mod).ko)
|
||||
AUTOLOAD:=$(call AutoProbe,$(notdir $(NFT_BRIDGE-m)))
|
||||
KCONFIG:= \
|
||||
CONFIG_NF_LOG_BRIDGE=n \
|
||||
$(KCONFIG_NFT_BRIDGE)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,nft-bridge))
|
||||
|
||||
|
||||
define KernelPackage/nft-nat
|
||||
SUBMENU:=$(NF_MENU)
|
||||
TITLE:=Netfilter nf_tables NAT support
|
||||
DEPENDS:=+kmod-nft-core +kmod-nf-nat +kmod-nf-nat6
|
||||
DEPENDS:=+kmod-nft-core +kmod-nf-nat
|
||||
FILES:=$(foreach mod,$(NFT_NAT-m),$(LINUX_DIR)/net/$(mod).ko)
|
||||
AUTOLOAD:=$(call AutoProbe,$(notdir $(NFT_NAT-m)))
|
||||
KCONFIG:=$(KCONFIG_NFT_NAT)
|
||||
@ -908,14 +998,33 @@ endef
|
||||
$(eval $(call KernelPackage,nft-nat))
|
||||
|
||||
|
||||
define KernelPackage/nft-offload
|
||||
SUBMENU:=$(NF_MENU)
|
||||
TITLE:=Netfilter nf_tables routing/NAT offload support
|
||||
DEPENDS:=+kmod-nf-flow +kmod-nft-nat
|
||||
KCONFIG:= \
|
||||
CONFIG_NF_FLOW_TABLE_INET \
|
||||
CONFIG_NF_FLOW_TABLE_IPV4 \
|
||||
CONFIG_NF_FLOW_TABLE_IPV6 \
|
||||
CONFIG_NFT_FLOW_OFFLOAD
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/net/netfilter/nf_flow_table_inet.ko \
|
||||
$(LINUX_DIR)/net/ipv4/netfilter/nf_flow_table_ipv4.ko \
|
||||
$(LINUX_DIR)/net/ipv6/netfilter/nf_flow_table_ipv6.ko \
|
||||
$(LINUX_DIR)/net/netfilter/nft_flow_offload.ko
|
||||
AUTOLOAD:=$(call AutoProbe,nf_flow_table_inet nf_flow_table_ipv4 nf_flow_table_ipv6 nft_flow_offload)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,nft-offload))
|
||||
|
||||
|
||||
define KernelPackage/nft-nat6
|
||||
SUBMENU:=$(NF_MENU)
|
||||
TITLE:=Netfilter nf_tables IPv6-NAT support
|
||||
DEPENDS:=+kmod-nft-core +kmod-nf-nat6
|
||||
DEPENDS:=+kmod-nft-nat +kmod-nf-nat6
|
||||
FILES:=$(foreach mod,$(NFT_NAT6-m),$(LINUX_DIR)/net/$(mod).ko)
|
||||
AUTOLOAD:=$(call AutoProbe,$(notdir $(NFT_NAT6-m)))
|
||||
KCONFIG:=$(KCONFIG_NFT_NAT6)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,nft-nat6))
|
||||
|
||||
|
@ -42,28 +42,6 @@ endef
|
||||
$(eval $(call KernelPackage,atmtcp))
|
||||
|
||||
|
||||
define KernelPackage/appletalk
|
||||
SUBMENU:=$(NETWORK_SUPPORT_MENU)
|
||||
TITLE:=Appletalk protocol support
|
||||
KCONFIG:= \
|
||||
CONFIG_ATALK \
|
||||
CONFIG_DEV_APPLETALK \
|
||||
CONFIG_IPDDP \
|
||||
CONFIG_IPDDP_ENCAP=y \
|
||||
CONFIG_IPDDP_DECAP=y
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/net/appletalk/appletalk.ko \
|
||||
$(LINUX_DIR)/drivers/net/appletalk/ipddp.ko
|
||||
AUTOLOAD:=$(call AutoLoad,40,appletalk ipddp)
|
||||
endef
|
||||
|
||||
define KernelPackage/appletalk/description
|
||||
Kernel module for AppleTalk protocol.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,appletalk))
|
||||
|
||||
|
||||
define KernelPackage/bonding
|
||||
SUBMENU:=$(NETWORK_SUPPORT_MENU)
|
||||
TITLE:=Ethernet bonding driver
|
||||
@ -127,13 +105,14 @@ endef
|
||||
|
||||
$(eval $(call KernelPackage,vxlan))
|
||||
|
||||
|
||||
define KernelPackage/geneve
|
||||
SUBMENU:=$(NETWORK_SUPPORT_MENU)
|
||||
TITLE:=Generic Network Virtualization Encapsulation (Geneve) support
|
||||
DEPENDS:= \
|
||||
kmod-iptunnel \
|
||||
kmod-udptunnel4 \
|
||||
IPV6:kmod-udptunnel6
|
||||
+kmod-iptunnel \
|
||||
+kmod-udptunnel4 \
|
||||
+IPV6:kmod-udptunnel6
|
||||
KCONFIG:=CONFIG_GENEVE
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/net/ipv4/geneve.ko@le4.1 \
|
||||
@ -148,6 +127,7 @@ endef
|
||||
|
||||
$(eval $(call KernelPackage,geneve))
|
||||
|
||||
|
||||
define KernelPackage/capi
|
||||
SUBMENU:=$(NETWORK_SUPPORT_MENU)
|
||||
TITLE:=CAPI (ISDN) Support
|
||||
@ -455,6 +435,28 @@ endef
|
||||
$(eval $(call KernelPackage,sit))
|
||||
|
||||
|
||||
define KernelPackage/fou
|
||||
SUBMENU:=$(NETWORK_SUPPORT_MENU)
|
||||
TITLE:=FOU and GUE decapsulation
|
||||
DEPENDS:= \
|
||||
+kmod-iptunnel \
|
||||
+kmod-udptunnel4 \
|
||||
+IPV6:kmod-udptunnel6
|
||||
KCONFIG:= \
|
||||
CONFIG_NET_FOU \
|
||||
CONFIG_NET_FOU_IP_TUNNELS=y
|
||||
FILES:=$(LINUX_DIR)/net/ipv4/fou.ko
|
||||
AUTOLOAD:=$(call AutoProbe,fou)
|
||||
endef
|
||||
|
||||
define KernelPackage/fou/description
|
||||
Kernel module for FOU (Foo over UDP) and GUE (Generic UDP Encapsulation) tunnelling.
|
||||
Requires Kernel 3.18 or newer.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fou))
|
||||
|
||||
|
||||
define KernelPackage/ip6-tunnel
|
||||
SUBMENU:=$(NETWORK_SUPPORT_MENU)
|
||||
TITLE:=IP-in-IPv6 tunnelling
|
||||
@ -750,6 +752,7 @@ define KernelPackage/sched
|
||||
CONFIG_NET_SCH_DSMARK \
|
||||
CONFIG_NET_SCH_FIFO \
|
||||
CONFIG_NET_SCH_GRED \
|
||||
CONFIG_NET_SCH_MULTIQ \
|
||||
CONFIG_NET_SCH_PRIO \
|
||||
CONFIG_NET_SCH_RED \
|
||||
CONFIG_NET_SCH_SFQ \
|
||||
|
@ -55,6 +55,7 @@ define KernelPackage/bluetooth
|
||||
CONFIG_BT_HCIUART_BCM=n \
|
||||
CONFIG_BT_HCIUART_INTEL=n \
|
||||
CONFIG_BT_HCIUART_H4 \
|
||||
CONFIG_BT_HCIUART_NOKIA=n \
|
||||
CONFIG_BT_HIDP \
|
||||
CONFIG_HID_SUPPORT=y
|
||||
$(call AddDepends/rfkill)
|
||||
@ -226,7 +227,7 @@ $(eval $(call KernelPackage,gpio-dev))
|
||||
define KernelPackage/gpio-mcp23s08
|
||||
SUBMENU:=$(OTHER_MENU)
|
||||
TITLE:=Microchip MCP23xxx I/O expander
|
||||
DEPENDS:=@GPIO_SUPPORT +PACKAGE_kmod-i2c-core:kmod-i2c-core
|
||||
DEPENDS:=@GPIO_SUPPORT +kmod-i2c-core
|
||||
KCONFIG:=CONFIG_GPIO_MCP23S08
|
||||
FILES:=$(LINUX_DIR)/drivers/gpio/gpio-mcp23s08.ko
|
||||
AUTOLOAD:=$(call AutoLoad,40,gpio-mcp23s08)
|
||||
@ -285,18 +286,53 @@ endef
|
||||
$(eval $(call KernelPackage,gpio-pcf857x))
|
||||
|
||||
|
||||
define KernelPackage/lp
|
||||
define KernelPackage/ppdev
|
||||
SUBMENU:=$(OTHER_MENU)
|
||||
TITLE:=Parallel port and line printer support
|
||||
TITLE:=Parallel port support
|
||||
KCONFIG:= \
|
||||
CONFIG_PARPORT \
|
||||
CONFIG_PRINTER \
|
||||
CONFIG_PPDEV
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/drivers/parport/parport.ko \
|
||||
$(LINUX_DIR)/drivers/char/lp.ko \
|
||||
$(LINUX_DIR)/drivers/char/ppdev.ko
|
||||
AUTOLOAD:=$(call AutoLoad,50,parport lp ppdev)
|
||||
AUTOLOAD:=$(call AutoLoad,50,parport ppdev)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,ppdev))
|
||||
|
||||
|
||||
define KernelPackage/parport-pc
|
||||
SUBMENU:=$(OTHER_MENU)
|
||||
TITLE:=Parallel port interface (PC-style) support
|
||||
DEPENDS:=+kmod-ppdev
|
||||
KCONFIG:= \
|
||||
CONFIG_KS0108=n \
|
||||
CONFIG_PARPORT_PC \
|
||||
CONFIG_PARPORT_1284=y \
|
||||
CONFIG_PARPORT_PC_FIFO=y \
|
||||
CONFIG_PARPORT_PC_PCMCIA=n \
|
||||
CONFIG_PARPORT_PC_SUPERIO=y \
|
||||
CONFIG_PARPORT_SERIAL=n \
|
||||
CONFIG_PARIDE=n \
|
||||
CONFIG_SCSI_IMM=n \
|
||||
CONFIG_SCSI_PPA=n
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/drivers/parport/parport_pc.ko
|
||||
AUTOLOAD:=$(call AutoLoad,51,parport_pc)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,parport-pc))
|
||||
|
||||
|
||||
define KernelPackage/lp
|
||||
SUBMENU:=$(OTHER_MENU)
|
||||
TITLE:=Parallel port line printer device support
|
||||
DEPENDS:=+kmod-ppdev
|
||||
KCONFIG:= \
|
||||
CONFIG_PRINTER
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/drivers/char/lp.ko
|
||||
AUTOLOAD:=$(call AutoLoad,52,lp)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,lp))
|
||||
@ -619,6 +655,22 @@ endef
|
||||
$(eval $(call KernelPackage,mtdoops))
|
||||
|
||||
|
||||
define KernelPackage/mtdram
|
||||
SUBMENU:=$(OTHER_MENU)
|
||||
TITLE:=Test MTD driver using RAM
|
||||
KCONFIG:=CONFIG_MTD_MTDRAM \
|
||||
CONFIG_MTDRAM_TOTAL_SIZE=4096 \
|
||||
CONFIG_MTDRAM_ERASE_SIZE=128
|
||||
FILES:=$(LINUX_DIR)/drivers/mtd/devices/mtdram.ko
|
||||
endef
|
||||
|
||||
define KernelPackage/mtdram/description
|
||||
Test MTD driver using RAM
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,mtdram))
|
||||
|
||||
|
||||
define KernelPackage/serial-8250
|
||||
SUBMENU:=$(OTHER_MENU)
|
||||
TITLE:=8250 UARTs
|
||||
|
@ -135,6 +135,22 @@ endef
|
||||
$(eval $(call KernelPackage,sound-seq))
|
||||
|
||||
|
||||
define KernelPackage/sound-ens1371
|
||||
TITLE:=(Creative) Ensoniq AudioPCI 1371
|
||||
KCONFIG:=CONFIG_SND_ENS1371
|
||||
DEPENDS:=@PCI_SUPPORT +kmod-ac97
|
||||
FILES:=$(LINUX_DIR)/sound/pci/snd-ens1371.ko
|
||||
AUTOLOAD:=$(call AutoLoad,36,snd-ens1371)
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-ens1371/description
|
||||
support for (Creative) Ensoniq AudioPCI 1371 chips
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-ens1371))
|
||||
|
||||
|
||||
define KernelPackage/sound-i8x0
|
||||
TITLE:=Intel/SiS/nVidia/AMD/ALi AC97 Controller
|
||||
DEPENDS:=+kmod-ac97
|
||||
|
@ -43,22 +43,6 @@ endef
|
||||
$(eval $(call KernelPackage,spi-bitbang))
|
||||
|
||||
|
||||
define KernelPackage/spi-gpio-old
|
||||
SUBMENU:=$(SPI_MENU)
|
||||
TITLE:=Old GPIO based bitbanging SPI controller (DEPRECATED)
|
||||
DEPENDS:=@GPIO_SUPPORT +kmod-spi-bitbang
|
||||
KCONFIG:=CONFIG_SPI_GPIO_OLD
|
||||
FILES:=$(LINUX_DIR)/drivers/spi/spi_gpio_old.ko
|
||||
AUTOLOAD:=$(call AutoProbe,spi_gpio_old)
|
||||
endef
|
||||
|
||||
define KernelPackage/spi-gpio-old/description
|
||||
This package contains the GPIO based bitbanging SPI controller driver
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,spi-gpio-old))
|
||||
|
||||
|
||||
define KernelPackage/spi-gpio
|
||||
SUBMENU:=$(SPI_MENU)
|
||||
TITLE:=GPIO-based bitbanging SPI Master
|
||||
|
@ -64,19 +64,6 @@ define KernelPackage/usb-phy-nop
|
||||
$(call AddDepends/usb)
|
||||
endef
|
||||
|
||||
define KernelPackage/usb-musb-tusb6010
|
||||
TITLE:=Support for TUSB 6010
|
||||
KCONFIG:=CONFIG_USB_MUSB_TUSB6010
|
||||
DEPENDS:=@TARGET_omap24xx
|
||||
$(call AddDepends/usb)
|
||||
endef
|
||||
|
||||
define KernelPackage/usb-musb-tusb6010/description
|
||||
TUSB6010 support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,usb-musb-tusb6010))
|
||||
|
||||
define KernelPackage/usb-phy-nop/description
|
||||
Support for USB NOP transceiver
|
||||
endef
|
||||
@ -84,6 +71,25 @@ endef
|
||||
$(eval $(call KernelPackage,usb-phy-nop))
|
||||
|
||||
|
||||
define KernelPackage/usb-phy-qcom-dwc3
|
||||
TITLE:=DWC3 USB QCOM PHY driver
|
||||
DEPENDS:=@TARGET_ipq40xx||@TARGET_ipq806x +kmod-usb-dwc3-of-simple
|
||||
KCONFIG:= CONFIG_PHY_QCOM_DWC3
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/drivers/phy/phy-qcom-dwc3.ko@lt4.13 \
|
||||
$(LINUX_DIR)/drivers/phy/qualcomm/phy-qcom-dwc3.ko@ge4.13
|
||||
AUTOLOAD:=$(call AutoLoad,45,phy-qcom-dwc3,1)
|
||||
$(call AddDepends/usb)
|
||||
endef
|
||||
|
||||
define KernelPackage/usb-phy-qcom-dwc3/description
|
||||
This driver provides support for the integrated DesignWare
|
||||
USB3 IP Core within the QCOM SoCs.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,usb-phy-qcom-dwc3))
|
||||
|
||||
|
||||
define KernelPackage/usb-gadget
|
||||
TITLE:=USB Gadget support
|
||||
KCONFIG:=CONFIG_USB_GADGET
|
||||
@ -200,6 +206,7 @@ $(eval $(call KernelPackage,usb-gadget-mass-storage))
|
||||
define KernelPackage/usb-uhci
|
||||
TITLE:=Support for UHCI controllers
|
||||
KCONFIG:= \
|
||||
CONFIG_USB_PCI=y \
|
||||
CONFIG_USB_UHCI_ALT \
|
||||
CONFIG_USB_UHCI_HCD
|
||||
FILES:=$(LINUX_DIR)/drivers/usb/host/uhci-hcd.ko
|
||||
@ -249,7 +256,9 @@ $(eval $(call KernelPackage,usb-ohci,1))
|
||||
define KernelPackage/usb-ohci-pci
|
||||
TITLE:=Support for PCI OHCI controllers
|
||||
DEPENDS:=@PCI_SUPPORT +kmod-usb-ohci
|
||||
KCONFIG:=CONFIG_USB_OHCI_HCD_PCI
|
||||
KCONFIG:= \
|
||||
CONFIG_USB_PCI=y \
|
||||
CONFIG_USB_OHCI_HCD_PCI
|
||||
FILES:=$(LINUX_DIR)/drivers/usb/host/ohci-pci.ko
|
||||
AUTOLOAD:=$(call AutoLoad,51,ohci-pci,1)
|
||||
$(call AddDepends/usb)
|
||||
@ -337,7 +346,9 @@ $(eval $(call KernelPackage,usb2))
|
||||
define KernelPackage/usb2-pci
|
||||
TITLE:=Support for PCI USB2 controllers
|
||||
DEPENDS:=@PCI_SUPPORT +kmod-usb2
|
||||
KCONFIG:=CONFIG_USB_EHCI_PCI
|
||||
KCONFIG:= \
|
||||
CONFIG_USB_PCI=y \
|
||||
CONFIG_USB_EHCI_PCI
|
||||
FILES:=$(LINUX_DIR)/drivers/usb/host/ehci-pci.ko
|
||||
AUTOLOAD:=$(call AutoLoad,42,ehci-pci,1)
|
||||
$(call AddDepends/usb)
|
||||
@ -354,6 +365,7 @@ define KernelPackage/usb-dwc2
|
||||
TITLE:=DWC2 USB controller driver
|
||||
DEPENDS:=+USB_GADGET_SUPPORT:kmod-usb-gadget
|
||||
KCONFIG:= \
|
||||
CONFIG_USB_PCI=y \
|
||||
CONFIG_USB_DWC2 \
|
||||
CONFIG_USB_DWC2_PCI \
|
||||
CONFIG_USB_DWC2_PLATFORM \
|
||||
@ -398,6 +410,23 @@ endef
|
||||
$(eval $(call KernelPackage,usb-dwc3))
|
||||
|
||||
|
||||
define KernelPackage/usb-dwc3-of-simple
|
||||
TITLE:=DWC3 USB simple OF driver
|
||||
DEPENDS:=@TARGET_ipq40xx||@TARGET_ipq806x +kmod-usb-dwc3
|
||||
KCONFIG:= CONFIG_USB_DWC3_OF_SIMPLE
|
||||
FILES:= $(LINUX_DIR)/drivers/usb/dwc3/dwc3-of-simple.ko
|
||||
AUTOLOAD:=$(call AutoLoad,53,dwc3-of-simple,1)
|
||||
$(call AddDepends/usb)
|
||||
endef
|
||||
|
||||
define KernelPackage/usb-dwc3-of-simple/description
|
||||
This driver provides generic platform glue for the integrated DesignWare
|
||||
USB3 IP Core.
|
||||
endef
|
||||
|
||||
|
||||
$(eval $(call KernelPackage,usb-dwc3-of-simple))
|
||||
|
||||
define KernelPackage/usb-acm
|
||||
TITLE:=Support for modems/isdn controllers
|
||||
KCONFIG:=CONFIG_USB_ACM
|
||||
@ -1512,6 +1541,7 @@ define KernelPackage/usb3
|
||||
+TARGET_bcm53xx:kmod-usb-bcma \
|
||||
+TARGET_bcm53xx:kmod-phy-bcm-ns-usb3
|
||||
KCONFIG:= \
|
||||
CONFIG_USB_PCI=y \
|
||||
CONFIG_USB_XHCI_HCD \
|
||||
CONFIG_USB_XHCI_PCI \
|
||||
CONFIG_USB_XHCI_PLATFORM \
|
||||
@ -1533,7 +1563,9 @@ $(eval $(call KernelPackage,usb3))
|
||||
|
||||
define KernelPackage/usb-net2280
|
||||
TITLE:=Support for NetChip 228x PCI USB peripheral controller
|
||||
KCONFIG:= CONFIG_USB_NET2280
|
||||
KCONFIG:= \
|
||||
CONFIG_USB_PCI=y \
|
||||
CONFIG_USB_NET2280
|
||||
DEPENDS:=@PCI_SUPPORT +kmod-usb-gadget
|
||||
FILES:=$(LINUX_DIR)/drivers/usb/gadget/udc/net2280.ko
|
||||
AUTOLOAD:=$(call AutoLoad,46,net2280)
|
||||
|
@ -204,6 +204,7 @@ define KernelPackage/drm-imx
|
||||
DEPENDS:=@TARGET_imx6 +kmod-drm +kmod-fb +kmod-fb-cfb-copyarea +kmod-fb-cfb-imgblt +kmod-fb-cfb-fillrect +kmod-fb-sys-fops
|
||||
KCONFIG:=CONFIG_DRM_IMX \
|
||||
CONFIG_DRM_FBDEV_EMULATION=y \
|
||||
CONFIG_DRM_FBDEV_OVERALLOC=100 \
|
||||
CONFIG_IMX_IPUV3_CORE \
|
||||
CONFIG_RESET_CONTROLLER=y \
|
||||
CONFIG_DRM_IMX_IPUV3 \
|
||||
@ -223,7 +224,6 @@ define KernelPackage/drm-imx
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/drivers/gpu/drm/imx/imxdrm.ko \
|
||||
$(LINUX_DIR)/drivers/gpu/ipu-v3/imx-ipu-v3.ko \
|
||||
$(LINUX_DIR)/drivers/gpu/drm/imx/imx-ipuv3-crtc.ko \
|
||||
$(LINUX_DIR)/drivers/video/fbdev/core/syscopyarea.ko \
|
||||
$(LINUX_DIR)/drivers/video/fbdev/core/sysfillrect.ko \
|
||||
$(LINUX_DIR)/drivers/video/fbdev/core/sysimgblt.ko \
|
||||
@ -242,10 +242,11 @@ define KernelPackage/drm-imx-hdmi
|
||||
TITLE:=Freescale i.MX HDMI DRM support
|
||||
DEPENDS:=+kmod-sound-core kmod-drm-imx
|
||||
KCONFIG:=CONFIG_DRM_IMX_HDMI \
|
||||
CONFIG_DRM_DW_HDMI_AHB_AUDIO
|
||||
CONFIG_DRM_DW_HDMI_AHB_AUDIO \
|
||||
CONFIG_DRM_DW_HDMI_I2S_AUDIO
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/drivers/gpu/drm/bridge/dw-hdmi.ko \
|
||||
$(LINUX_DIR)/drivers/gpu/drm/bridge/dw-hdmi-ahb-audio.ko \
|
||||
$(LINUX_DIR)/drivers/gpu/drm/bridge/synopsys/dw-hdmi.ko \
|
||||
$(LINUX_DIR)/drivers/gpu/drm/bridge/synopsys/dw-hdmi-ahb-audio.ko \
|
||||
$(LINUX_DIR)/drivers/gpu/drm/imx/dw_hdmi-imx.ko
|
||||
AUTOLOAD:=$(call AutoLoad,05,dw-hdmi dw-hdmi-ahb-audio.ko dw_hdmi-imx)
|
||||
endef
|
||||
@ -267,7 +268,9 @@ define KernelPackage/drm-imx-ldb
|
||||
CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0=n \
|
||||
CONFIG_DRM_PANEL_LG_LG4573=n \
|
||||
CONFIG_DRM_PANEL_LD9040=n \
|
||||
CONFIG_DRM_PANEL_S6E8AA0=n
|
||||
CONFIG_DRM_PANEL_LVDS=n \
|
||||
CONFIG_DRM_PANEL_S6E8AA0=n \
|
||||
CONFIG_DRM_PANEL_SITRONIX_ST7789V=n
|
||||
FILES:=$(LINUX_DIR)/drivers/gpu/drm/imx/imx-ldb.ko \
|
||||
$(LINUX_DIR)/drivers/gpu/drm/panel/panel-simple.ko
|
||||
AUTOLOAD:=$(call AutoLoad,05,imx-ldb)
|
||||
|
@ -11,7 +11,7 @@ include $(INCLUDE_DIR)/kernel.mk
|
||||
PKG_NAME:=mac80211
|
||||
|
||||
PKG_VERSION:=2017-11-01
|
||||
PKG_RELEASE:=2
|
||||
PKG_RELEASE:=4
|
||||
PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
|
||||
PKG_HASH:=8437ab7886b988c8152e7a4db30b7f41009e49a3b2cb863edd05da1ecd7eb05a
|
||||
|
||||
@ -1584,7 +1584,7 @@ config-$(CONFIG_PACKAGE_ATH_SPECTRAL) += ATH9K_COMMON_SPECTRAL ATH10K_SPECTRAL
|
||||
config-$(call config_package,ath9k) += ATH9K
|
||||
config-$(call config_package,ath9k-common) += ATH9K_COMMON
|
||||
config-$(CONFIG_TARGET_ar71xx) += ATH9K_AHB
|
||||
config-$(CONFIG_TARGET_ipq806x) += ATH10K_AHB
|
||||
config-$(CONFIG_TARGET_ipq40xx) += ATH10K_AHB
|
||||
config-$(CONFIG_PCI) += ATH9K_PCI
|
||||
config-$(CONFIG_ATH_USER_REGD) += ATH_USER_REGD
|
||||
config-$(CONFIG_ATH9K_SUPPORT_PCOEM) += ATH9K_PCOEM
|
||||
@ -1821,7 +1821,7 @@ define KernelPackage/cfg80211/install
|
||||
$(INSTALL_DATA) ./files/lib/wifi/mac80211.sh $(1)/lib/wifi
|
||||
$(INSTALL_BIN) ./files/lib/netifd/wireless/mac80211.sh $(1)/lib/netifd/wireless
|
||||
$(INSTALL_DIR) $(1)/etc/hotplug.d/ieee80211
|
||||
$(INSTALL_DATA) ./files/mac80211.hotplug $(1)/etc/hotplug.d/ieee80211/00-wifi-detect
|
||||
$(INSTALL_DATA) ./files/mac80211.hotplug $(1)/etc/hotplug.d/ieee80211/10-wifi-detect
|
||||
endef
|
||||
|
||||
define KernelPackage/ipw2100/install
|
||||
|
@ -629,17 +629,11 @@ mac80211_setup_vif() {
|
||||
|
||||
case "$mode" in
|
||||
mesh)
|
||||
# authsae or wpa_supplicant
|
||||
json_get_vars key
|
||||
if [ -n "$key" ]; then
|
||||
if [ -e "/lib/wifi/authsae.sh" ]; then
|
||||
. /lib/wifi/authsae.sh
|
||||
authsae_start_interface || failed=1
|
||||
else
|
||||
wireless_vif_parse_encryption
|
||||
freq="$(get_freq "$phy" "$channel")"
|
||||
mac80211_setup_supplicant_noctl || failed=1
|
||||
fi
|
||||
wireless_vif_parse_encryption
|
||||
freq="$(get_freq "$phy" "$channel")"
|
||||
mac80211_setup_supplicant_noctl || failed=1
|
||||
else
|
||||
json_get_vars mesh_id mcast_rate
|
||||
|
||||
|
@ -116,7 +116,7 @@ detect_mac80211() {
|
||||
set wireless.radio${devidx}.hwmode=11${mode_band}
|
||||
${dev_id}
|
||||
${ht_capab}
|
||||
set wireless.radio${devidx}.disabled=1
|
||||
set wireless.radio${devidx}.disabled=0
|
||||
|
||||
set wireless.default_radio${devidx}=wifi-iface
|
||||
set wireless.default_radio${devidx}.device=radio${devidx}
|
||||
|
@ -0,0 +1,237 @@
|
||||
From: Thomas Hebb <tommyhebb@gmail.com>
|
||||
Subject: [PATCH] ath10k: search all IEs for variant before falling back
|
||||
Date: Wed, 21 Feb 2018 11:43:39 -0500
|
||||
|
||||
commit f2593cb1b291 ("ath10k: Search SMBIOS for OEM board file
|
||||
extension") added a feature to ath10k that allows Board Data File
|
||||
(BDF) conflicts between multiple devices that use the same device IDs
|
||||
but have different calibration requirements to be resolved by allowing
|
||||
a "variant" string to be stored in SMBIOS [and later device tree, added
|
||||
by commit d06f26c5c8a4 ("ath10k: search DT for qcom,ath10k-calibration-
|
||||
variant")] that gets appended to the ID stored in board-2.bin.
|
||||
|
||||
This original patch had a regression, however. Namely that devices with
|
||||
a variant present in SMBIOS that didn't need custom BDFs could no longer
|
||||
find the default BDF, which has no variant appended. The patch was
|
||||
reverted and re-applied with a fix for this issue in commit 1657b8f84ed9
|
||||
("search SMBIOS for OEM board file extension").
|
||||
|
||||
But the fix to fall back to a default BDF introduced another issue: the
|
||||
driver currently parses IEs in board-2.bin one by one, and for each one
|
||||
it first checks to see if it matches the ID with the variant appended.
|
||||
If it doesn't, it checks to see if it matches the "fallback" ID with no
|
||||
variant. If a matching BDF is found at any point during this search, the
|
||||
search is terminated and that BDF is used. The issue is that it's very
|
||||
possible (and is currently the case for board-2.bin files present in the
|
||||
ath10k-firmware repository) for the default BDF to occur in an earlier
|
||||
IE than the variant-specific BDF. In this case, the current code will
|
||||
happily choose the default BDF even though a better-matching BDF is
|
||||
present later in the file.
|
||||
|
||||
This patch fixes the issue by first searching the entire file for the ID
|
||||
with variant, and searching for the fallback ID only if that search
|
||||
fails. It also includes some code cleanup in the area, as
|
||||
ath10k_core_fetch_board_data_api_n() no longer does its own string
|
||||
mangling to remove the variant from an ID, instead leaving that job to a
|
||||
new flag passed to ath10k_core_create_board_name().
|
||||
|
||||
I've tested this patch on a QCA4019 and verified that the driver behaves
|
||||
correctly for 1) both fallback and variant BDFs present, 2) only fallback
|
||||
BDF present, and 3) no matching BDFs present.
|
||||
|
||||
Fixes: 1657b8f84ed9 ("ath10k: search SMBIOS for OEM board file extension")
|
||||
Signed-off-by: Thomas Hebb <tommyhebb@gmail.com>
|
||||
---
|
||||
drivers/net/wireless/ath/ath10k/core.c | 134 ++++++++++++++++++---------------
|
||||
1 file changed, 72 insertions(+), 62 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath10k/core.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/core.c
|
||||
@@ -1129,14 +1129,61 @@ out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
+static int ath10k_core_search_bd(struct ath10k *ar,
|
||||
+ const char *boardname,
|
||||
+ const u8 *data,
|
||||
+ size_t len)
|
||||
+{
|
||||
+ size_t ie_len;
|
||||
+ struct ath10k_fw_ie *hdr;
|
||||
+ int ret = -ENOENT, ie_id;
|
||||
+
|
||||
+ while (len > sizeof(struct ath10k_fw_ie)) {
|
||||
+ hdr = (struct ath10k_fw_ie *)data;
|
||||
+ ie_id = le32_to_cpu(hdr->id);
|
||||
+ ie_len = le32_to_cpu(hdr->len);
|
||||
+
|
||||
+ len -= sizeof(*hdr);
|
||||
+ data = hdr->data;
|
||||
+
|
||||
+ if (len < ALIGN(ie_len, 4)) {
|
||||
+ ath10k_err(ar, "invalid length for board ie_id %d ie_len %zu len %zu\n",
|
||||
+ ie_id, ie_len, len);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+
|
||||
+ switch (ie_id) {
|
||||
+ case ATH10K_BD_IE_BOARD:
|
||||
+ ret = ath10k_core_parse_bd_ie_board(ar, data, ie_len,
|
||||
+ boardname);
|
||||
+ if (ret == -ENOENT)
|
||||
+ /* no match found, continue */
|
||||
+ break;
|
||||
+
|
||||
+ /* either found or error, so stop searching */
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
+ /* jump over the padding */
|
||||
+ ie_len = ALIGN(ie_len, 4);
|
||||
+
|
||||
+ len -= ie_len;
|
||||
+ data += ie_len;
|
||||
+ }
|
||||
+
|
||||
+out:
|
||||
+ /* return result of parse_bd_ie_board() or -ENOENT */
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
static int ath10k_core_fetch_board_data_api_n(struct ath10k *ar,
|
||||
const char *boardname,
|
||||
+ const char *fallback_boardname,
|
||||
const char *filename)
|
||||
{
|
||||
- size_t len, magic_len, ie_len;
|
||||
- struct ath10k_fw_ie *hdr;
|
||||
+ size_t len, magic_len;
|
||||
const u8 *data;
|
||||
- int ret, ie_id;
|
||||
+ int ret;
|
||||
|
||||
ar->normal_mode_fw.board = ath10k_fetch_fw_file(ar,
|
||||
ar->hw_params.fw.dir,
|
||||
@@ -1174,69 +1221,23 @@ static int ath10k_core_fetch_board_data_
|
||||
data += magic_len;
|
||||
len -= magic_len;
|
||||
|
||||
- while (len > sizeof(struct ath10k_fw_ie)) {
|
||||
- hdr = (struct ath10k_fw_ie *)data;
|
||||
- ie_id = le32_to_cpu(hdr->id);
|
||||
- ie_len = le32_to_cpu(hdr->len);
|
||||
-
|
||||
- len -= sizeof(*hdr);
|
||||
- data = hdr->data;
|
||||
-
|
||||
- if (len < ALIGN(ie_len, 4)) {
|
||||
- ath10k_err(ar, "invalid length for board ie_id %d ie_len %zu len %zu\n",
|
||||
- ie_id, ie_len, len);
|
||||
- ret = -EINVAL;
|
||||
- goto err;
|
||||
- }
|
||||
+ /* attempt to find boardname in the IE list */
|
||||
+ ret = ath10k_core_search_bd(ar, boardname, data, len);
|
||||
|
||||
- switch (ie_id) {
|
||||
- case ATH10K_BD_IE_BOARD:
|
||||
- ret = ath10k_core_parse_bd_ie_board(ar, data, ie_len,
|
||||
- boardname);
|
||||
- if (ret == -ENOENT && ar->id.bdf_ext[0] != '\0') {
|
||||
- /* try default bdf if variant was not found */
|
||||
- char *s, *v = ",variant=";
|
||||
- char boardname2[100];
|
||||
-
|
||||
- strlcpy(boardname2, boardname,
|
||||
- sizeof(boardname2));
|
||||
-
|
||||
- s = strstr(boardname2, v);
|
||||
- if (s)
|
||||
- *s = '\0'; /* strip ",variant=%s" */
|
||||
-
|
||||
- ret = ath10k_core_parse_bd_ie_board(ar, data,
|
||||
- ie_len,
|
||||
- boardname2);
|
||||
- }
|
||||
+ /* if we didn't find it and have a fallback name, try that */
|
||||
+ if (ret == -ENOENT && fallback_boardname)
|
||||
+ ret = ath10k_core_search_bd(ar, fallback_boardname, data, len);
|
||||
|
||||
- if (ret == -ENOENT)
|
||||
- /* no match found, continue */
|
||||
- break;
|
||||
- else if (ret)
|
||||
- /* there was an error, bail out */
|
||||
- goto err;
|
||||
-
|
||||
- /* board data found */
|
||||
- goto out;
|
||||
- }
|
||||
-
|
||||
- /* jump over the padding */
|
||||
- ie_len = ALIGN(ie_len, 4);
|
||||
-
|
||||
- len -= ie_len;
|
||||
- data += ie_len;
|
||||
- }
|
||||
-
|
||||
-out:
|
||||
- if (!ar->normal_mode_fw.board_data || !ar->normal_mode_fw.board_len) {
|
||||
+ if (ret == -ENOENT) {
|
||||
ath10k_err(ar,
|
||||
"failed to fetch board data for %s from %s/%s\n",
|
||||
boardname, ar->hw_params.fw.dir, filename);
|
||||
ret = -ENODATA;
|
||||
- goto err;
|
||||
}
|
||||
|
||||
+ if (ret)
|
||||
+ goto err;
|
||||
+
|
||||
return 0;
|
||||
|
||||
err:
|
||||
@@ -1245,12 +1246,12 @@ err:
|
||||
}
|
||||
|
||||
static int ath10k_core_create_board_name(struct ath10k *ar, char *name,
|
||||
- size_t name_len)
|
||||
+ size_t name_len, bool with_variant)
|
||||
{
|
||||
/* strlen(',variant=') + strlen(ar->id.bdf_ext) */
|
||||
char variant[9 + ATH10K_SMBIOS_BDF_EXT_STR_LENGTH] = { 0 };
|
||||
|
||||
- if (ar->id.bdf_ext[0] != '\0')
|
||||
+ if (with_variant && ar->id.bdf_ext[0] != '\0')
|
||||
scnprintf(variant, sizeof(variant), ",variant=%s",
|
||||
ar->id.bdf_ext);
|
||||
|
||||
@@ -1276,17 +1277,26 @@ out:
|
||||
|
||||
static int ath10k_core_fetch_board_file(struct ath10k *ar)
|
||||
{
|
||||
- char boardname[100];
|
||||
+ char boardname[100], fallback_boardname[100];
|
||||
int ret;
|
||||
|
||||
- ret = ath10k_core_create_board_name(ar, boardname, sizeof(boardname));
|
||||
+ ret = ath10k_core_create_board_name(ar, boardname,
|
||||
+ sizeof(boardname), true);
|
||||
if (ret) {
|
||||
ath10k_err(ar, "failed to create board name: %d", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
+ ret = ath10k_core_create_board_name(ar, fallback_boardname,
|
||||
+ sizeof(boardname), false);
|
||||
+ if (ret) {
|
||||
+ ath10k_err(ar, "failed to create fallback board name: %d", ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
ar->bd_api = 2;
|
||||
ret = ath10k_core_fetch_board_data_api_n(ar, boardname,
|
||||
+ fallback_boardname,
|
||||
ATH10K_BOARD_API2_FILE);
|
||||
if (!ret)
|
||||
goto success;
|
@ -0,0 +1,25 @@
|
||||
From: Johannes Berg <johannes.berg@intel.com>
|
||||
Date: Thu, 4 Jan 2018 15:51:53 +0100
|
||||
Subject: [PATCH] mac80211: mesh: drop frames appearing to be from us
|
||||
|
||||
If there are multiple mesh stations with the same MAC address,
|
||||
they will both get confused and start throwing warnings.
|
||||
|
||||
Obviously in this case nothing can actually work anyway, so just
|
||||
drop frames that look like they're from ourselves early on.
|
||||
|
||||
Reported-by: Gui Iribarren <gui@altermundi.net>
|
||||
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
---
|
||||
|
||||
--- a/net/mac80211/rx.c
|
||||
+++ b/net/mac80211/rx.c
|
||||
@@ -3632,6 +3632,8 @@ static bool ieee80211_accept_frame(struc
|
||||
}
|
||||
return true;
|
||||
case NL80211_IFTYPE_MESH_POINT:
|
||||
+ if (ether_addr_equal(sdata->vif.addr, hdr->addr2))
|
||||
+ return false;
|
||||
if (multicast)
|
||||
return true;
|
||||
return ether_addr_equal(sdata->vif.addr, hdr->addr1);
|
@ -0,0 +1,60 @@
|
||||
From 2fd3877b5bb7d39782c3205a1dcda02023b8514a Mon Sep 17 00:00:00 2001
|
||||
From: Arend Van Spriel <arend.vanspriel@broadcom.com>
|
||||
Date: Wed, 8 Nov 2017 14:36:31 +0100
|
||||
Subject: [PATCH] brcmfmac: handle FWHALT mailbox indication
|
||||
|
||||
The firmware uses a mailbox to communicate to the host what is going
|
||||
on. In the driver we validate the bit received. Various people seen
|
||||
the following message:
|
||||
|
||||
brcmfmac: brcmf_sdio_hostmail: Unknown mailbox data content: 0x40012
|
||||
|
||||
Bit 4 is cause of this message, but this actually indicates the firmware
|
||||
has halted. Handle this bit by giving a more meaningful error message.
|
||||
|
||||
Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
|
||||
Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
|
||||
Reviewed-by: Franky Lin <franky.lin@broadcom.com>
|
||||
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 14 ++++++++++----
|
||||
1 file changed, 10 insertions(+), 4 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||
@@ -260,10 +260,11 @@ struct rte_console {
|
||||
#define I_HMB_HOST_INT I_HMB_SW3 /* Miscellaneous Interrupt */
|
||||
|
||||
/* tohostmailboxdata */
|
||||
-#define HMB_DATA_NAKHANDLED 1 /* retransmit NAK'd frame */
|
||||
-#define HMB_DATA_DEVREADY 2 /* talk to host after enable */
|
||||
-#define HMB_DATA_FC 4 /* per prio flowcontrol update flag */
|
||||
-#define HMB_DATA_FWREADY 8 /* fw ready for protocol activity */
|
||||
+#define HMB_DATA_NAKHANDLED 0x0001 /* retransmit NAK'd frame */
|
||||
+#define HMB_DATA_DEVREADY 0x0002 /* talk to host after enable */
|
||||
+#define HMB_DATA_FC 0x0004 /* per prio flowcontrol update flag */
|
||||
+#define HMB_DATA_FWREADY 0x0008 /* fw ready for protocol activity */
|
||||
+#define HMB_DATA_FWHALT 0x0010 /* firmware halted */
|
||||
|
||||
#define HMB_DATA_FCDATA_MASK 0xff000000
|
||||
#define HMB_DATA_FCDATA_SHIFT 24
|
||||
@@ -1094,6 +1095,10 @@ static u32 brcmf_sdio_hostmail(struct br
|
||||
offsetof(struct sdpcmd_regs, tosbmailbox));
|
||||
bus->sdcnt.f1regdata += 2;
|
||||
|
||||
+ /* dongle indicates the firmware has halted/crashed */
|
||||
+ if (hmb_data & HMB_DATA_FWHALT)
|
||||
+ brcmf_err("mailbox indicates firmware halted\n");
|
||||
+
|
||||
/* Dongle recomposed rx frames, accept them again */
|
||||
if (hmb_data & HMB_DATA_NAKHANDLED) {
|
||||
brcmf_dbg(SDIO, "Dongle reports NAK handled, expect rtx of %d\n",
|
||||
@@ -1151,6 +1156,7 @@ static u32 brcmf_sdio_hostmail(struct br
|
||||
HMB_DATA_NAKHANDLED |
|
||||
HMB_DATA_FC |
|
||||
HMB_DATA_FWREADY |
|
||||
+ HMB_DATA_FWHALT |
|
||||
HMB_DATA_FCDATA_MASK | HMB_DATA_VERSION_MASK))
|
||||
brcmf_err("Unknown mailbox data content: 0x%02x\n",
|
||||
hmb_data);
|
@ -0,0 +1,133 @@
|
||||
From 6c219b0088158da839a5be63c5b3d96c145501d2 Mon Sep 17 00:00:00 2001
|
||||
From: Franky Lin <franky.lin@broadcom.com>
|
||||
Date: Wed, 8 Nov 2017 14:36:32 +0100
|
||||
Subject: [PATCH] brcmfmac: disable packet filtering in promiscuous mode
|
||||
|
||||
Disable arp and nd offload to allow all packets sending to host.
|
||||
|
||||
Reported-by: Phil Elwell <phil@raspberrypi.org>
|
||||
Tested-by: Phil Elwell <phil@raspberrypi.org>
|
||||
Reviewed-by: Arend Van Spriel <arend.vanspriel@broadcom.com>
|
||||
Signed-off-by: Franky Lin <franky.lin@broadcom.com>
|
||||
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
.../broadcom/brcm80211/brcmfmac/cfg80211.c | 41 ----------------------
|
||||
.../wireless/broadcom/brcm80211/brcmfmac/core.c | 38 ++++++++++++++++++++
|
||||
.../wireless/broadcom/brcm80211/brcmfmac/core.h | 1 +
|
||||
3 files changed, 39 insertions(+), 41 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
@@ -472,47 +472,6 @@ send_key_to_dongle(struct brcmf_if *ifp,
|
||||
return err;
|
||||
}
|
||||
|
||||
-static s32
|
||||
-brcmf_configure_arp_nd_offload(struct brcmf_if *ifp, bool enable)
|
||||
-{
|
||||
- s32 err;
|
||||
- u32 mode;
|
||||
-
|
||||
- if (enable)
|
||||
- mode = BRCMF_ARP_OL_AGENT | BRCMF_ARP_OL_PEER_AUTO_REPLY;
|
||||
- else
|
||||
- mode = 0;
|
||||
-
|
||||
- /* Try to set and enable ARP offload feature, this may fail, then it */
|
||||
- /* is simply not supported and err 0 will be returned */
|
||||
- err = brcmf_fil_iovar_int_set(ifp, "arp_ol", mode);
|
||||
- if (err) {
|
||||
- brcmf_dbg(TRACE, "failed to set ARP offload mode to 0x%x, err = %d\n",
|
||||
- mode, err);
|
||||
- err = 0;
|
||||
- } else {
|
||||
- err = brcmf_fil_iovar_int_set(ifp, "arpoe", enable);
|
||||
- if (err) {
|
||||
- brcmf_dbg(TRACE, "failed to configure (%d) ARP offload err = %d\n",
|
||||
- enable, err);
|
||||
- err = 0;
|
||||
- } else
|
||||
- brcmf_dbg(TRACE, "successfully configured (%d) ARP offload to 0x%x\n",
|
||||
- enable, mode);
|
||||
- }
|
||||
-
|
||||
- err = brcmf_fil_iovar_int_set(ifp, "ndoe", enable);
|
||||
- if (err) {
|
||||
- brcmf_dbg(TRACE, "failed to configure (%d) ND offload err = %d\n",
|
||||
- enable, err);
|
||||
- err = 0;
|
||||
- } else
|
||||
- brcmf_dbg(TRACE, "successfully configured (%d) ND offload to 0x%x\n",
|
||||
- enable, mode);
|
||||
-
|
||||
- return err;
|
||||
-}
|
||||
-
|
||||
static void
|
||||
brcmf_cfg80211_update_proto_addr_mode(struct wireless_dev *wdev)
|
||||
{
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
||||
@@ -71,6 +71,43 @@ struct brcmf_if *brcmf_get_ifp(struct br
|
||||
return ifp;
|
||||
}
|
||||
|
||||
+void brcmf_configure_arp_nd_offload(struct brcmf_if *ifp, bool enable)
|
||||
+{
|
||||
+ s32 err;
|
||||
+ u32 mode;
|
||||
+
|
||||
+ if (enable)
|
||||
+ mode = BRCMF_ARP_OL_AGENT | BRCMF_ARP_OL_PEER_AUTO_REPLY;
|
||||
+ else
|
||||
+ mode = 0;
|
||||
+
|
||||
+ /* Try to set and enable ARP offload feature, this may fail, then it */
|
||||
+ /* is simply not supported and err 0 will be returned */
|
||||
+ err = brcmf_fil_iovar_int_set(ifp, "arp_ol", mode);
|
||||
+ if (err) {
|
||||
+ brcmf_dbg(TRACE, "failed to set ARP offload mode to 0x%x, err = %d\n",
|
||||
+ mode, err);
|
||||
+ } else {
|
||||
+ err = brcmf_fil_iovar_int_set(ifp, "arpoe", enable);
|
||||
+ if (err) {
|
||||
+ brcmf_dbg(TRACE, "failed to configure (%d) ARP offload err = %d\n",
|
||||
+ enable, err);
|
||||
+ } else {
|
||||
+ brcmf_dbg(TRACE, "successfully configured (%d) ARP offload to 0x%x\n",
|
||||
+ enable, mode);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ err = brcmf_fil_iovar_int_set(ifp, "ndoe", enable);
|
||||
+ if (err) {
|
||||
+ brcmf_dbg(TRACE, "failed to configure (%d) ND offload err = %d\n",
|
||||
+ enable, err);
|
||||
+ } else {
|
||||
+ brcmf_dbg(TRACE, "successfully configured (%d) ND offload to 0x%x\n",
|
||||
+ enable, mode);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
static void _brcmf_set_multicast_list(struct work_struct *work)
|
||||
{
|
||||
struct brcmf_if *ifp;
|
||||
@@ -134,6 +171,7 @@ static void _brcmf_set_multicast_list(st
|
||||
if (err < 0)
|
||||
brcmf_err("Setting BRCMF_C_SET_PROMISC failed, %d\n",
|
||||
err);
|
||||
+ brcmf_configure_arp_nd_offload(ifp, !cmd_value);
|
||||
}
|
||||
|
||||
#if IS_ENABLED(CONFIG_IPV6)
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.h
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.h
|
||||
@@ -203,6 +203,7 @@ int brcmf_netdev_wait_pend8021x(struct b
|
||||
/* Return pointer to interface name */
|
||||
char *brcmf_ifname(struct brcmf_if *ifp);
|
||||
struct brcmf_if *brcmf_get_ifp(struct brcmf_pub *drvr, int ifidx);
|
||||
+void brcmf_configure_arp_nd_offload(struct brcmf_if *ifp, bool enable);
|
||||
int brcmf_net_attach(struct brcmf_if *ifp, bool rtnl_locked);
|
||||
struct brcmf_if *brcmf_add_if(struct brcmf_pub *drvr, s32 bsscfgidx, s32 ifidx,
|
||||
bool is_p2pdev, const char *name, u8 *mac_addr);
|
@ -0,0 +1,131 @@
|
||||
From 8c6efda22f5f9f73fc948f517424466be01ae84d Mon Sep 17 00:00:00 2001
|
||||
From: Arend Van Spriel <arend.vanspriel@broadcom.com>
|
||||
Date: Wed, 8 Nov 2017 14:36:33 +0100
|
||||
Subject: [PATCH] brcmfmac: cleanup brcmf_cfg80211_escan() function
|
||||
|
||||
The function brcmf_cfg80211_escan() was always called with a non-null
|
||||
request parameter and null pointer for this_ssid parameter. Clean up
|
||||
the function removing the dead code path.
|
||||
|
||||
Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
|
||||
Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
|
||||
Reviewed-by: Franky Lin <franky.lin@broadcom.com>
|
||||
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
.../broadcom/brcm80211/brcmfmac/cfg80211.c | 76 ++++------------------
|
||||
1 file changed, 11 insertions(+), 65 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
@@ -1072,18 +1072,10 @@ brcmf_do_escan(struct brcmf_if *ifp, str
|
||||
|
||||
static s32
|
||||
brcmf_cfg80211_escan(struct wiphy *wiphy, struct brcmf_cfg80211_vif *vif,
|
||||
- struct cfg80211_scan_request *request,
|
||||
- struct cfg80211_ssid *this_ssid)
|
||||
+ struct cfg80211_scan_request *request)
|
||||
{
|
||||
- struct brcmf_if *ifp = vif->ifp;
|
||||
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
|
||||
- struct cfg80211_ssid *ssids;
|
||||
- u32 passive_scan;
|
||||
- bool escan_req;
|
||||
- bool spec_scan;
|
||||
s32 err;
|
||||
- struct brcmf_ssid_le ssid_le;
|
||||
- u32 SSID_len;
|
||||
|
||||
brcmf_dbg(SCAN, "START ESCAN\n");
|
||||
|
||||
@@ -1101,8 +1093,8 @@ brcmf_cfg80211_escan(struct wiphy *wiphy
|
||||
cfg->scan_status);
|
||||
return -EAGAIN;
|
||||
}
|
||||
- if (test_bit(BRCMF_VIF_STATUS_CONNECTING, &ifp->vif->sme_state)) {
|
||||
- brcmf_err("Connecting: status (%lu)\n", ifp->vif->sme_state);
|
||||
+ if (test_bit(BRCMF_VIF_STATUS_CONNECTING, &vif->sme_state)) {
|
||||
+ brcmf_err("Connecting: status (%lu)\n", vif->sme_state);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
@@ -1110,63 +1102,17 @@ brcmf_cfg80211_escan(struct wiphy *wiphy
|
||||
if (vif == cfg->p2p.bss_idx[P2PAPI_BSSCFG_DEVICE].vif)
|
||||
vif = cfg->p2p.bss_idx[P2PAPI_BSSCFG_PRIMARY].vif;
|
||||
|
||||
- escan_req = false;
|
||||
- if (request) {
|
||||
- /* scan bss */
|
||||
- ssids = request->ssids;
|
||||
- escan_req = true;
|
||||
- } else {
|
||||
- /* scan in ibss */
|
||||
- /* we don't do escan in ibss */
|
||||
- ssids = this_ssid;
|
||||
- }
|
||||
-
|
||||
cfg->scan_request = request;
|
||||
set_bit(BRCMF_SCAN_STATUS_BUSY, &cfg->scan_status);
|
||||
- if (escan_req) {
|
||||
- cfg->escan_info.run = brcmf_run_escan;
|
||||
- err = brcmf_p2p_scan_prep(wiphy, request, vif);
|
||||
- if (err)
|
||||
- goto scan_out;
|
||||
-
|
||||
- err = brcmf_do_escan(vif->ifp, request);
|
||||
- if (err)
|
||||
- goto scan_out;
|
||||
- } else {
|
||||
- brcmf_dbg(SCAN, "ssid \"%s\", ssid_len (%d)\n",
|
||||
- ssids->ssid, ssids->ssid_len);
|
||||
- memset(&ssid_le, 0, sizeof(ssid_le));
|
||||
- SSID_len = min_t(u8, sizeof(ssid_le.SSID), ssids->ssid_len);
|
||||
- ssid_le.SSID_len = cpu_to_le32(0);
|
||||
- spec_scan = false;
|
||||
- if (SSID_len) {
|
||||
- memcpy(ssid_le.SSID, ssids->ssid, SSID_len);
|
||||
- ssid_le.SSID_len = cpu_to_le32(SSID_len);
|
||||
- spec_scan = true;
|
||||
- } else
|
||||
- brcmf_dbg(SCAN, "Broadcast scan\n");
|
||||
|
||||
- passive_scan = cfg->active_scan ? 0 : 1;
|
||||
- err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_PASSIVE_SCAN,
|
||||
- passive_scan);
|
||||
- if (err) {
|
||||
- brcmf_err("WLC_SET_PASSIVE_SCAN error (%d)\n", err);
|
||||
- goto scan_out;
|
||||
- }
|
||||
- brcmf_scan_config_mpc(ifp, 0);
|
||||
- err = brcmf_fil_cmd_data_set(ifp, BRCMF_C_SCAN, &ssid_le,
|
||||
- sizeof(ssid_le));
|
||||
- if (err) {
|
||||
- if (err == -EBUSY)
|
||||
- brcmf_dbg(INFO, "BUSY: scan for \"%s\" canceled\n",
|
||||
- ssid_le.SSID);
|
||||
- else
|
||||
- brcmf_err("WLC_SCAN error (%d)\n", err);
|
||||
+ cfg->escan_info.run = brcmf_run_escan;
|
||||
+ err = brcmf_p2p_scan_prep(wiphy, request, vif);
|
||||
+ if (err)
|
||||
+ goto scan_out;
|
||||
|
||||
- brcmf_scan_config_mpc(ifp, 1);
|
||||
- goto scan_out;
|
||||
- }
|
||||
- }
|
||||
+ err = brcmf_do_escan(vif->ifp, request);
|
||||
+ if (err)
|
||||
+ goto scan_out;
|
||||
|
||||
/* Arm scan timeout timer */
|
||||
mod_timer(&cfg->escan_timeout, jiffies +
|
||||
@@ -1191,7 +1137,7 @@ brcmf_cfg80211_scan(struct wiphy *wiphy,
|
||||
if (!check_vif_up(vif))
|
||||
return -EIO;
|
||||
|
||||
- err = brcmf_cfg80211_escan(wiphy, vif, request, NULL);
|
||||
+ err = brcmf_cfg80211_escan(wiphy, vif, request);
|
||||
|
||||
if (err)
|
||||
brcmf_err("scan error (%d)\n", err);
|
@ -0,0 +1,31 @@
|
||||
From df2d8388bc96c0f29d27d121f2a4cd054f8b3900 Mon Sep 17 00:00:00 2001
|
||||
From: Arend Van Spriel <arend.vanspriel@broadcom.com>
|
||||
Date: Wed, 8 Nov 2017 14:36:34 +0100
|
||||
Subject: [PATCH] brcmfmac: use msecs_to_jiffies() instead of calculation using
|
||||
HZ
|
||||
|
||||
Minor cleanup using provided macro to convert milliseconds interval
|
||||
to jiffies in brcmf_cfg80211_escan().
|
||||
|
||||
Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
|
||||
Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
|
||||
Reviewed-by: Franky Lin <franky.lin@broadcom.com>
|
||||
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
@@ -1115,8 +1115,8 @@ brcmf_cfg80211_escan(struct wiphy *wiphy
|
||||
goto scan_out;
|
||||
|
||||
/* Arm scan timeout timer */
|
||||
- mod_timer(&cfg->escan_timeout, jiffies +
|
||||
- BRCMF_ESCAN_TIMER_INTERVAL_MS * HZ / 1000);
|
||||
+ mod_timer(&cfg->escan_timeout,
|
||||
+ jiffies + msecs_to_jiffies(BRCMF_ESCAN_TIMER_INTERVAL_MS));
|
||||
|
||||
return 0;
|
||||
|
@ -0,0 +1,83 @@
|
||||
From 588378f15cff285ac81c929239ccba01d7f71d50 Mon Sep 17 00:00:00 2001
|
||||
From: Arend Van Spriel <arend.vanspriel@broadcom.com>
|
||||
Date: Wed, 8 Nov 2017 14:36:35 +0100
|
||||
Subject: [PATCH] brcmfmac: get rid of brcmf_cfg80211_escan() function
|
||||
|
||||
The function brcmf_cfg80211_escan() is only called by brcmf_cfg80211_scan()
|
||||
so there is no reason to split in two function especially since the latter
|
||||
does not do an awful lot.
|
||||
|
||||
Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
|
||||
Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
|
||||
Reviewed-by: Franky Lin <franky.lin@broadcom.com>
|
||||
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
.../broadcom/brcm80211/brcmfmac/cfg80211.c | 34 +++++++---------------
|
||||
1 file changed, 10 insertions(+), 24 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
@@ -1071,13 +1071,16 @@ brcmf_do_escan(struct brcmf_if *ifp, str
|
||||
}
|
||||
|
||||
static s32
|
||||
-brcmf_cfg80211_escan(struct wiphy *wiphy, struct brcmf_cfg80211_vif *vif,
|
||||
- struct cfg80211_scan_request *request)
|
||||
+brcmf_cfg80211_scan(struct wiphy *wiphy, struct cfg80211_scan_request *request)
|
||||
{
|
||||
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
|
||||
- s32 err;
|
||||
+ struct brcmf_cfg80211_vif *vif;
|
||||
+ s32 err = 0;
|
||||
|
||||
- brcmf_dbg(SCAN, "START ESCAN\n");
|
||||
+ brcmf_dbg(TRACE, "Enter\n");
|
||||
+ vif = container_of(request->wdev, struct brcmf_cfg80211_vif, wdev);
|
||||
+ if (!check_vif_up(vif))
|
||||
+ return -EIO;
|
||||
|
||||
if (test_bit(BRCMF_SCAN_STATUS_BUSY, &cfg->scan_status)) {
|
||||
brcmf_err("Scanning already: status (%lu)\n", cfg->scan_status);
|
||||
@@ -1102,6 +1105,8 @@ brcmf_cfg80211_escan(struct wiphy *wiphy
|
||||
if (vif == cfg->p2p.bss_idx[P2PAPI_BSSCFG_DEVICE].vif)
|
||||
vif = cfg->p2p.bss_idx[P2PAPI_BSSCFG_PRIMARY].vif;
|
||||
|
||||
+ brcmf_dbg(SCAN, "START ESCAN\n");
|
||||
+
|
||||
cfg->scan_request = request;
|
||||
set_bit(BRCMF_SCAN_STATUS_BUSY, &cfg->scan_status);
|
||||
|
||||
@@ -1121,31 +1126,12 @@ brcmf_cfg80211_escan(struct wiphy *wiphy
|
||||
return 0;
|
||||
|
||||
scan_out:
|
||||
+ brcmf_err("scan error (%d)\n", err);
|
||||
clear_bit(BRCMF_SCAN_STATUS_BUSY, &cfg->scan_status);
|
||||
cfg->scan_request = NULL;
|
||||
return err;
|
||||
}
|
||||
|
||||
-static s32
|
||||
-brcmf_cfg80211_scan(struct wiphy *wiphy, struct cfg80211_scan_request *request)
|
||||
-{
|
||||
- struct brcmf_cfg80211_vif *vif;
|
||||
- s32 err = 0;
|
||||
-
|
||||
- brcmf_dbg(TRACE, "Enter\n");
|
||||
- vif = container_of(request->wdev, struct brcmf_cfg80211_vif, wdev);
|
||||
- if (!check_vif_up(vif))
|
||||
- return -EIO;
|
||||
-
|
||||
- err = brcmf_cfg80211_escan(wiphy, vif, request);
|
||||
-
|
||||
- if (err)
|
||||
- brcmf_err("scan error (%d)\n", err);
|
||||
-
|
||||
- brcmf_dbg(TRACE, "Exit\n");
|
||||
- return err;
|
||||
-}
|
||||
-
|
||||
static s32 brcmf_set_rts(struct net_device *ndev, u32 rts_threshold)
|
||||
{
|
||||
s32 err = 0;
|
@ -0,0 +1,86 @@
|
||||
From bbf35414cd23a9d7230bfd7046e1e2c26020e7eb Mon Sep 17 00:00:00 2001
|
||||
From: Arend Van Spriel <arend.vanspriel@broadcom.com>
|
||||
Date: Wed, 8 Nov 2017 14:36:36 +0100
|
||||
Subject: [PATCH] brcmfmac: get rid of struct brcmf_cfg80211_info::active_scan
|
||||
field
|
||||
|
||||
The field struct brcmf_cfg80211_info::active_scan is set to true upon
|
||||
initializing the driver instance, but it is never changed so simply
|
||||
get rid of it.
|
||||
|
||||
Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
|
||||
Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
|
||||
Reviewed-by: Franky Lin <franky.lin@broadcom.com>
|
||||
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 10 +---------
|
||||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.h | 2 --
|
||||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c | 5 +----
|
||||
3 files changed, 2 insertions(+), 15 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
@@ -1043,7 +1043,6 @@ brcmf_do_escan(struct brcmf_if *ifp, str
|
||||
{
|
||||
struct brcmf_cfg80211_info *cfg = ifp->drvr->config;
|
||||
s32 err;
|
||||
- u32 passive_scan;
|
||||
struct brcmf_scan_results *results;
|
||||
struct escan_info *escan = &cfg->escan_info;
|
||||
|
||||
@@ -1051,13 +1050,7 @@ brcmf_do_escan(struct brcmf_if *ifp, str
|
||||
escan->ifp = ifp;
|
||||
escan->wiphy = cfg->wiphy;
|
||||
escan->escan_state = WL_ESCAN_STATE_SCANNING;
|
||||
- passive_scan = cfg->active_scan ? 0 : 1;
|
||||
- err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_PASSIVE_SCAN,
|
||||
- passive_scan);
|
||||
- if (err) {
|
||||
- brcmf_err("error (%d)\n", err);
|
||||
- return err;
|
||||
- }
|
||||
+
|
||||
brcmf_scan_config_mpc(ifp, 0);
|
||||
results = (struct brcmf_scan_results *)cfg->escan_info.escan_buf;
|
||||
results->version = 0;
|
||||
@@ -5767,7 +5760,6 @@ static s32 wl_init_priv(struct brcmf_cfg
|
||||
|
||||
cfg->scan_request = NULL;
|
||||
cfg->pwr_save = true;
|
||||
- cfg->active_scan = true; /* we do active scan per default */
|
||||
cfg->dongle_up = false; /* dongle is not up yet */
|
||||
err = brcmf_init_priv_mem(cfg);
|
||||
if (err)
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.h
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.h
|
||||
@@ -283,7 +283,6 @@ struct brcmf_cfg80211_wowl {
|
||||
* @scan_status: scan activity on the dongle.
|
||||
* @pub: common driver information.
|
||||
* @channel: current channel.
|
||||
- * @active_scan: current scan mode.
|
||||
* @int_escan_map: bucket map for which internal e-scan is done.
|
||||
* @ibss_starter: indicates this sta is ibss starter.
|
||||
* @pwr_save: indicate whether dongle to support power save mode.
|
||||
@@ -316,7 +315,6 @@ struct brcmf_cfg80211_info {
|
||||
unsigned long scan_status;
|
||||
struct brcmf_pub *pub;
|
||||
u32 channel;
|
||||
- bool active_scan;
|
||||
u32 int_escan_map;
|
||||
bool ibss_starter;
|
||||
bool pwr_save;
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c
|
||||
@@ -692,10 +692,7 @@ static s32 brcmf_p2p_escan(struct brcmf_
|
||||
|
||||
/* determine the scan engine parameters */
|
||||
sparams->bss_type = DOT11_BSSTYPE_ANY;
|
||||
- if (p2p->cfg->active_scan)
|
||||
- sparams->scan_type = 0;
|
||||
- else
|
||||
- sparams->scan_type = 1;
|
||||
+ sparams->scan_type = BRCMF_SCANTYPE_ACTIVE;
|
||||
|
||||
eth_broadcast_addr(sparams->bssid);
|
||||
sparams->home_time = cpu_to_le32(P2PAPI_SCAN_HOME_TIME_MS);
|
@ -0,0 +1,55 @@
|
||||
From bd99a3013bdc00f8fc7534c657b39616792b4467 Mon Sep 17 00:00:00 2001
|
||||
From: Arend Van Spriel <arend.vanspriel@broadcom.com>
|
||||
Date: Wed, 8 Nov 2017 14:36:37 +0100
|
||||
Subject: [PATCH] brcmfmac: move configuration of probe request IEs
|
||||
|
||||
The configuration of the IEs for probe requests was done in a P2P
|
||||
related function, which is not very obvious. Moving it to
|
||||
.scan callback function, ie. brcmf_cfg80211_scan().
|
||||
|
||||
Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
|
||||
Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
|
||||
Reviewed-by: Franky Lin <franky.lin@broadcom.com>
|
||||
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 5 +++++
|
||||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c | 6 ++----
|
||||
2 files changed, 7 insertions(+), 4 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
@@ -1108,6 +1108,11 @@ brcmf_cfg80211_scan(struct wiphy *wiphy,
|
||||
if (err)
|
||||
goto scan_out;
|
||||
|
||||
+ err = brcmf_vif_set_mgmt_ie(vif, BRCMF_VNDR_IE_PRBREQ_FLAG,
|
||||
+ request->ie, request->ie_len);
|
||||
+ if (err)
|
||||
+ goto scan_out;
|
||||
+
|
||||
err = brcmf_do_escan(vif->ifp, request);
|
||||
if (err)
|
||||
goto scan_out;
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c
|
||||
@@ -881,7 +881,7 @@ int brcmf_p2p_scan_prep(struct wiphy *wi
|
||||
{
|
||||
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
|
||||
struct brcmf_p2p_info *p2p = &cfg->p2p;
|
||||
- int err = 0;
|
||||
+ int err;
|
||||
|
||||
if (brcmf_p2p_scan_is_p2p_request(request)) {
|
||||
/* find my listen channel */
|
||||
@@ -904,9 +904,7 @@ int brcmf_p2p_scan_prep(struct wiphy *wi
|
||||
/* override .run_escan() callback. */
|
||||
cfg->escan_info.run = brcmf_p2p_run_escan;
|
||||
}
|
||||
- err = brcmf_vif_set_mgmt_ie(vif, BRCMF_VNDR_IE_PRBREQ_FLAG,
|
||||
- request->ie, request->ie_len);
|
||||
- return err;
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,434 @@
|
||||
From fdd0bd88ceaecf729db103ac8836af5805dd2dc1 Mon Sep 17 00:00:00 2001
|
||||
From: Chung-Hsien Hsu <stanley.hsu@cypress.com>
|
||||
Date: Fri, 10 Nov 2017 17:27:15 +0800
|
||||
Subject: [PATCH] brcmfmac: add CLM download support
|
||||
|
||||
The firmware for brcmfmac devices includes information regarding
|
||||
regulatory constraints. For certain devices this information is kept
|
||||
separately in a binary form that needs to be downloaded to the device.
|
||||
This patch adds support to download this so-called CLM blob file. It
|
||||
uses the same naming scheme as the other firmware files with extension
|
||||
of .clm_blob.
|
||||
|
||||
The CLM blob file is optional. If the file does not exist, the download
|
||||
process will be bypassed. It will not affect the driver loading.
|
||||
|
||||
Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
Signed-off-by: Chung-Hsien Hsu <stanley.hsu@cypress.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
.../net/wireless/broadcom/brcm80211/brcmfmac/bus.h | 10 ++
|
||||
.../wireless/broadcom/brcm80211/brcmfmac/common.c | 157 +++++++++++++++++++++
|
||||
.../wireless/broadcom/brcm80211/brcmfmac/core.c | 2 +
|
||||
.../wireless/broadcom/brcm80211/brcmfmac/core.h | 2 +
|
||||
.../broadcom/brcm80211/brcmfmac/fwil_types.h | 31 ++++
|
||||
.../wireless/broadcom/brcm80211/brcmfmac/pcie.c | 19 +++
|
||||
.../wireless/broadcom/brcm80211/brcmfmac/sdio.c | 19 +++
|
||||
.../net/wireless/broadcom/brcm80211/brcmfmac/usb.c | 18 +++
|
||||
8 files changed, 258 insertions(+)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h
|
||||
@@ -71,6 +71,7 @@ struct brcmf_bus_dcmd {
|
||||
* @wowl_config: specify if dongle is configured for wowl when going to suspend
|
||||
* @get_ramsize: obtain size of device memory.
|
||||
* @get_memdump: obtain device memory dump in provided buffer.
|
||||
+ * @get_fwname: obtain firmware name.
|
||||
*
|
||||
* This structure provides an abstract interface towards the
|
||||
* bus specific driver. For control messages to common driver
|
||||
@@ -87,6 +88,8 @@ struct brcmf_bus_ops {
|
||||
void (*wowl_config)(struct device *dev, bool enabled);
|
||||
size_t (*get_ramsize)(struct device *dev);
|
||||
int (*get_memdump)(struct device *dev, void *data, size_t len);
|
||||
+ int (*get_fwname)(struct device *dev, uint chip, uint chiprev,
|
||||
+ unsigned char *fw_name);
|
||||
};
|
||||
|
||||
|
||||
@@ -224,6 +227,13 @@ int brcmf_bus_get_memdump(struct brcmf_b
|
||||
return bus->ops->get_memdump(bus->dev, data, len);
|
||||
}
|
||||
|
||||
+static inline
|
||||
+int brcmf_bus_get_fwname(struct brcmf_bus *bus, uint chip, uint chiprev,
|
||||
+ unsigned char *fw_name)
|
||||
+{
|
||||
+ return bus->ops->get_fwname(bus->dev, chip, chiprev, fw_name);
|
||||
+}
|
||||
+
|
||||
/*
|
||||
* interface functions from common layer
|
||||
*/
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
|
||||
@@ -18,6 +18,7 @@
|
||||
#include <linux/string.h>
|
||||
#include <linux/netdevice.h>
|
||||
#include <linux/module.h>
|
||||
+#include <linux/firmware.h>
|
||||
#include <brcmu_wifi.h>
|
||||
#include <brcmu_utils.h>
|
||||
#include "core.h"
|
||||
@@ -28,6 +29,7 @@
|
||||
#include "tracepoint.h"
|
||||
#include "common.h"
|
||||
#include "of.h"
|
||||
+#include "firmware.h"
|
||||
|
||||
MODULE_AUTHOR("Broadcom Corporation");
|
||||
MODULE_DESCRIPTION("Broadcom 802.11 wireless LAN fullmac driver.");
|
||||
@@ -104,12 +106,140 @@ void brcmf_c_set_joinpref_default(struct
|
||||
brcmf_err("Set join_pref error (%d)\n", err);
|
||||
}
|
||||
|
||||
+static int brcmf_c_download(struct brcmf_if *ifp, u16 flag,
|
||||
+ struct brcmf_dload_data_le *dload_buf,
|
||||
+ u32 len)
|
||||
+{
|
||||
+ s32 err;
|
||||
+
|
||||
+ flag |= (DLOAD_HANDLER_VER << DLOAD_FLAG_VER_SHIFT);
|
||||
+ dload_buf->flag = cpu_to_le16(flag);
|
||||
+ dload_buf->dload_type = cpu_to_le16(DL_TYPE_CLM);
|
||||
+ dload_buf->len = cpu_to_le32(len);
|
||||
+ dload_buf->crc = cpu_to_le32(0);
|
||||
+ len = sizeof(*dload_buf) + len - 1;
|
||||
+
|
||||
+ err = brcmf_fil_iovar_data_set(ifp, "clmload", dload_buf, len);
|
||||
+
|
||||
+ return err;
|
||||
+}
|
||||
+
|
||||
+static int brcmf_c_get_clm_name(struct brcmf_if *ifp, u8 *clm_name)
|
||||
+{
|
||||
+ struct brcmf_bus *bus = ifp->drvr->bus_if;
|
||||
+ struct brcmf_rev_info *ri = &ifp->drvr->revinfo;
|
||||
+ u8 fw_name[BRCMF_FW_NAME_LEN];
|
||||
+ u8 *ptr;
|
||||
+ size_t len;
|
||||
+ s32 err;
|
||||
+
|
||||
+ memset(fw_name, 0, BRCMF_FW_NAME_LEN);
|
||||
+ err = brcmf_bus_get_fwname(bus, ri->chipnum, ri->chiprev, fw_name);
|
||||
+ if (err) {
|
||||
+ brcmf_err("get firmware name failed (%d)\n", err);
|
||||
+ goto done;
|
||||
+ }
|
||||
+
|
||||
+ /* generate CLM blob file name */
|
||||
+ ptr = strrchr(fw_name, '.');
|
||||
+ if (!ptr) {
|
||||
+ err = -ENOENT;
|
||||
+ goto done;
|
||||
+ }
|
||||
+
|
||||
+ len = ptr - fw_name + 1;
|
||||
+ if (len + strlen(".clm_blob") > BRCMF_FW_NAME_LEN) {
|
||||
+ err = -E2BIG;
|
||||
+ } else {
|
||||
+ strlcpy(clm_name, fw_name, len);
|
||||
+ strlcat(clm_name, ".clm_blob", BRCMF_FW_NAME_LEN);
|
||||
+ }
|
||||
+done:
|
||||
+ return err;
|
||||
+}
|
||||
+
|
||||
+static int brcmf_c_process_clm_blob(struct brcmf_if *ifp)
|
||||
+{
|
||||
+ struct device *dev = ifp->drvr->bus_if->dev;
|
||||
+ struct brcmf_dload_data_le *chunk_buf;
|
||||
+ const struct firmware *clm = NULL;
|
||||
+ u8 clm_name[BRCMF_FW_NAME_LEN];
|
||||
+ u32 chunk_len;
|
||||
+ u32 datalen;
|
||||
+ u32 cumulative_len;
|
||||
+ u16 dl_flag = DL_BEGIN;
|
||||
+ u32 status;
|
||||
+ s32 err;
|
||||
+
|
||||
+ brcmf_dbg(TRACE, "Enter\n");
|
||||
+
|
||||
+ memset(clm_name, 0, BRCMF_FW_NAME_LEN);
|
||||
+ err = brcmf_c_get_clm_name(ifp, clm_name);
|
||||
+ if (err) {
|
||||
+ brcmf_err("get CLM blob file name failed (%d)\n", err);
|
||||
+ return err;
|
||||
+ }
|
||||
+
|
||||
+ err = request_firmware(&clm, clm_name, dev);
|
||||
+ if (err) {
|
||||
+ if (err == -ENOENT) {
|
||||
+ brcmf_dbg(INFO, "continue with CLM data currently present in firmware\n");
|
||||
+ return 0;
|
||||
+ }
|
||||
+ brcmf_err("request CLM blob file failed (%d)\n", err);
|
||||
+ return err;
|
||||
+ }
|
||||
+
|
||||
+ chunk_buf = kzalloc(sizeof(*chunk_buf) + MAX_CHUNK_LEN - 1, GFP_KERNEL);
|
||||
+ if (!chunk_buf) {
|
||||
+ err = -ENOMEM;
|
||||
+ goto done;
|
||||
+ }
|
||||
+
|
||||
+ datalen = clm->size;
|
||||
+ cumulative_len = 0;
|
||||
+ do {
|
||||
+ if (datalen > MAX_CHUNK_LEN) {
|
||||
+ chunk_len = MAX_CHUNK_LEN;
|
||||
+ } else {
|
||||
+ chunk_len = datalen;
|
||||
+ dl_flag |= DL_END;
|
||||
+ }
|
||||
+ memcpy(chunk_buf->data, clm->data + cumulative_len, chunk_len);
|
||||
+
|
||||
+ err = brcmf_c_download(ifp, dl_flag, chunk_buf, chunk_len);
|
||||
+
|
||||
+ dl_flag &= ~DL_BEGIN;
|
||||
+
|
||||
+ cumulative_len += chunk_len;
|
||||
+ datalen -= chunk_len;
|
||||
+ } while ((datalen > 0) && (err == 0));
|
||||
+
|
||||
+ if (err) {
|
||||
+ brcmf_err("clmload (%zu byte file) failed (%d); ",
|
||||
+ clm->size, err);
|
||||
+ /* Retrieve clmload_status and print */
|
||||
+ err = brcmf_fil_iovar_int_get(ifp, "clmload_status", &status);
|
||||
+ if (err)
|
||||
+ brcmf_err("get clmload_status failed (%d)\n", err);
|
||||
+ else
|
||||
+ brcmf_dbg(INFO, "clmload_status=%d\n", status);
|
||||
+ err = -EIO;
|
||||
+ }
|
||||
+
|
||||
+ kfree(chunk_buf);
|
||||
+done:
|
||||
+ release_firmware(clm);
|
||||
+ return err;
|
||||
+}
|
||||
+
|
||||
int brcmf_c_preinit_dcmds(struct brcmf_if *ifp)
|
||||
{
|
||||
s8 eventmask[BRCMF_EVENTING_MASK_LEN];
|
||||
u8 buf[BRCMF_DCMD_SMLEN];
|
||||
struct brcmf_rev_info_le revinfo;
|
||||
struct brcmf_rev_info *ri;
|
||||
+ char *clmver;
|
||||
char *ptr;
|
||||
s32 err;
|
||||
|
||||
@@ -148,6 +278,13 @@ int brcmf_c_preinit_dcmds(struct brcmf_i
|
||||
}
|
||||
ri->result = err;
|
||||
|
||||
+ /* Do any CLM downloading */
|
||||
+ err = brcmf_c_process_clm_blob(ifp);
|
||||
+ if (err < 0) {
|
||||
+ brcmf_err("download CLM blob file failed, %d\n", err);
|
||||
+ goto done;
|
||||
+ }
|
||||
+
|
||||
/* query for 'ver' to get version info from firmware */
|
||||
memset(buf, 0, sizeof(buf));
|
||||
strcpy(buf, "ver");
|
||||
@@ -167,6 +304,26 @@ int brcmf_c_preinit_dcmds(struct brcmf_i
|
||||
ptr = strrchr(buf, ' ') + 1;
|
||||
strlcpy(ifp->drvr->fwver, ptr, sizeof(ifp->drvr->fwver));
|
||||
|
||||
+ /* Query for 'clmver' to get CLM version info from firmware */
|
||||
+ memset(buf, 0, sizeof(buf));
|
||||
+ err = brcmf_fil_iovar_data_get(ifp, "clmver", buf, sizeof(buf));
|
||||
+ if (err) {
|
||||
+ brcmf_dbg(TRACE, "retrieving clmver failed, %d\n", err);
|
||||
+ } else {
|
||||
+ clmver = (char *)buf;
|
||||
+ /* store CLM version for adding it to revinfo debugfs file */
|
||||
+ memcpy(ifp->drvr->clmver, clmver, sizeof(ifp->drvr->clmver));
|
||||
+
|
||||
+ /* Replace all newline/linefeed characters with space
|
||||
+ * character
|
||||
+ */
|
||||
+ ptr = clmver;
|
||||
+ while ((ptr = strnchr(ptr, '\n', sizeof(buf))) != NULL)
|
||||
+ *ptr = ' ';
|
||||
+
|
||||
+ brcmf_dbg(INFO, "CLM version = %s\n", clmver);
|
||||
+ }
|
||||
+
|
||||
/* set mpc */
|
||||
err = brcmf_fil_iovar_int_set(ifp, "mpc", 1);
|
||||
if (err) {
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
||||
@@ -1009,6 +1009,8 @@ static int brcmf_revinfo_read(struct seq
|
||||
seq_printf(s, "anarev: %u\n", ri->anarev);
|
||||
seq_printf(s, "nvramrev: %08x\n", ri->nvramrev);
|
||||
|
||||
+ seq_printf(s, "clmver: %s\n", bus_if->drvr->clmver);
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.h
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.h
|
||||
@@ -141,6 +141,8 @@ struct brcmf_pub {
|
||||
struct notifier_block inetaddr_notifier;
|
||||
struct notifier_block inet6addr_notifier;
|
||||
struct brcmf_mp_device *settings;
|
||||
+
|
||||
+ u8 clmver[BRCMF_DCMD_SMLEN];
|
||||
};
|
||||
|
||||
/* forward declarations */
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil_types.h
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil_types.h
|
||||
@@ -155,6 +155,21 @@
|
||||
#define BRCMF_MFP_CAPABLE 1
|
||||
#define BRCMF_MFP_REQUIRED 2
|
||||
|
||||
+/* MAX_CHUNK_LEN is the maximum length for data passing to firmware in each
|
||||
+ * ioctl. It is relatively small because firmware has small maximum size input
|
||||
+ * playload restriction for ioctls.
|
||||
+ */
|
||||
+#define MAX_CHUNK_LEN 1400
|
||||
+
|
||||
+#define DLOAD_HANDLER_VER 1 /* Downloader version */
|
||||
+#define DLOAD_FLAG_VER_MASK 0xf000 /* Downloader version mask */
|
||||
+#define DLOAD_FLAG_VER_SHIFT 12 /* Downloader version shift */
|
||||
+
|
||||
+#define DL_BEGIN 0x0002
|
||||
+#define DL_END 0x0004
|
||||
+
|
||||
+#define DL_TYPE_CLM 2
|
||||
+
|
||||
/* join preference types for join_pref iovar */
|
||||
enum brcmf_join_pref_types {
|
||||
BRCMF_JOIN_PREF_RSSI = 1,
|
||||
@@ -827,6 +842,22 @@ struct brcmf_pno_macaddr_le {
|
||||
};
|
||||
|
||||
/**
|
||||
+ * struct brcmf_dload_data_le - data passing to firmware for downloading
|
||||
+ * @flag: flags related to download data.
|
||||
+ * @dload_type: type of download data.
|
||||
+ * @len: length in bytes of download data.
|
||||
+ * @crc: crc of download data.
|
||||
+ * @data: download data.
|
||||
+ */
|
||||
+struct brcmf_dload_data_le {
|
||||
+ __le16 flag;
|
||||
+ __le16 dload_type;
|
||||
+ __le32 len;
|
||||
+ __le32 crc;
|
||||
+ u8 data[1];
|
||||
+};
|
||||
+
|
||||
+/**
|
||||
* struct brcmf_pno_bssid_le - bssid configuration for PNO scan.
|
||||
*
|
||||
* @bssid: BSS network identifier.
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
|
||||
@@ -1350,6 +1350,24 @@ static int brcmf_pcie_get_memdump(struct
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static int brcmf_pcie_get_fwname(struct device *dev, u32 chip, u32 chiprev,
|
||||
+ u8 *fw_name)
|
||||
+{
|
||||
+ struct brcmf_bus *bus_if = dev_get_drvdata(dev);
|
||||
+ struct brcmf_pciedev *buspub = bus_if->bus_priv.pcie;
|
||||
+ struct brcmf_pciedev_info *devinfo = buspub->devinfo;
|
||||
+ int ret = 0;
|
||||
+
|
||||
+ if (devinfo->fw_name[0] != '\0')
|
||||
+ strlcpy(fw_name, devinfo->fw_name, BRCMF_FW_NAME_LEN);
|
||||
+ else
|
||||
+ ret = brcmf_fw_map_chip_to_name(chip, chiprev,
|
||||
+ brcmf_pcie_fwnames,
|
||||
+ ARRAY_SIZE(brcmf_pcie_fwnames),
|
||||
+ fw_name, NULL);
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
|
||||
static const struct brcmf_bus_ops brcmf_pcie_bus_ops = {
|
||||
.txdata = brcmf_pcie_tx,
|
||||
@@ -1359,6 +1377,7 @@ static const struct brcmf_bus_ops brcmf_
|
||||
.wowl_config = brcmf_pcie_wowl_config,
|
||||
.get_ramsize = brcmf_pcie_get_ramsize,
|
||||
.get_memdump = brcmf_pcie_get_memdump,
|
||||
+ .get_fwname = brcmf_pcie_get_fwname,
|
||||
};
|
||||
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||
@@ -3985,6 +3985,24 @@ brcmf_sdio_watchdog(unsigned long data)
|
||||
}
|
||||
}
|
||||
|
||||
+static int brcmf_sdio_get_fwname(struct device *dev, u32 chip, u32 chiprev,
|
||||
+ u8 *fw_name)
|
||||
+{
|
||||
+ struct brcmf_bus *bus_if = dev_get_drvdata(dev);
|
||||
+ struct brcmf_sdio_dev *sdiodev = bus_if->bus_priv.sdio;
|
||||
+ int ret = 0;
|
||||
+
|
||||
+ if (sdiodev->fw_name[0] != '\0')
|
||||
+ strlcpy(fw_name, sdiodev->fw_name, BRCMF_FW_NAME_LEN);
|
||||
+ else
|
||||
+ ret = brcmf_fw_map_chip_to_name(chip, chiprev,
|
||||
+ brcmf_sdio_fwnames,
|
||||
+ ARRAY_SIZE(brcmf_sdio_fwnames),
|
||||
+ fw_name, NULL);
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
static const struct brcmf_bus_ops brcmf_sdio_bus_ops = {
|
||||
.stop = brcmf_sdio_bus_stop,
|
||||
.preinit = brcmf_sdio_bus_preinit,
|
||||
@@ -3995,6 +4013,7 @@ static const struct brcmf_bus_ops brcmf_
|
||||
.wowl_config = brcmf_sdio_wowl_config,
|
||||
.get_ramsize = brcmf_sdio_bus_get_ramsize,
|
||||
.get_memdump = brcmf_sdio_bus_get_memdump,
|
||||
+ .get_fwname = brcmf_sdio_get_fwname,
|
||||
};
|
||||
|
||||
static void brcmf_sdio_firmware_callback(struct device *dev, int err,
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
||||
@@ -1128,12 +1128,30 @@ static void brcmf_usb_wowl_config(struct
|
||||
device_set_wakeup_enable(devinfo->dev, false);
|
||||
}
|
||||
|
||||
+static int brcmf_usb_get_fwname(struct device *dev, u32 chip, u32 chiprev,
|
||||
+ u8 *fw_name)
|
||||
+{
|
||||
+ struct brcmf_usbdev_info *devinfo = brcmf_usb_get_businfo(dev);
|
||||
+ int ret = 0;
|
||||
+
|
||||
+ if (devinfo->fw_name[0] != '\0')
|
||||
+ strlcpy(fw_name, devinfo->fw_name, BRCMF_FW_NAME_LEN);
|
||||
+ else
|
||||
+ ret = brcmf_fw_map_chip_to_name(chip, chiprev,
|
||||
+ brcmf_usb_fwnames,
|
||||
+ ARRAY_SIZE(brcmf_usb_fwnames),
|
||||
+ fw_name, NULL);
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
static const struct brcmf_bus_ops brcmf_usb_bus_ops = {
|
||||
.txdata = brcmf_usb_tx,
|
||||
.stop = brcmf_usb_down,
|
||||
.txctl = brcmf_usb_tx_ctlpkt,
|
||||
.rxctl = brcmf_usb_rx_ctlpkt,
|
||||
.wowl_config = brcmf_usb_wowl_config,
|
||||
+ .get_fwname = brcmf_usb_get_fwname,
|
||||
};
|
||||
|
||||
static int brcmf_usb_bus_setup(struct brcmf_usbdev_info *devinfo)
|
@ -0,0 +1,37 @@
|
||||
From 5c3de777bdaf48bd0cfb43097c0d0fb85056cab7 Mon Sep 17 00:00:00 2001
|
||||
From: Arend Van Spriel <arend.vanspriel@broadcom.com>
|
||||
Date: Sat, 25 Nov 2017 21:39:25 +0100
|
||||
Subject: [PATCH] brcmfmac: change driver unbind order of the sdio function
|
||||
devices
|
||||
|
||||
In the function brcmf_sdio_firmware_callback() the driver is
|
||||
unbound from the sdio function devices in the error path.
|
||||
However, the order in which it is done resulted in a use-after-free
|
||||
issue (see brcmf_ops_sdio_remove() in bcmsdh.c). Hence change
|
||||
the order and first unbind sdio function #2 device and then
|
||||
unbind sdio function #1 device.
|
||||
|
||||
Cc: stable@vger.kernel.org # v4.12.x
|
||||
Fixes: 7a51461fc2da ("brcmfmac: unbind all devices upon failure in firmware callback")
|
||||
Reported-by: Stefan Wahren <stefan.wahren@i2se.com>
|
||||
Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
|
||||
Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
|
||||
Reviewed-by: Franky Lin <franky.lin@broadcom.com>
|
||||
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||
@@ -4121,8 +4121,8 @@ release:
|
||||
sdio_release_host(sdiodev->func[1]);
|
||||
fail:
|
||||
brcmf_dbg(TRACE, "failed: dev=%s, err=%d\n", dev_name(dev), err);
|
||||
- device_release_driver(dev);
|
||||
device_release_driver(&sdiodev->func[2]->dev);
|
||||
+ device_release_driver(dev);
|
||||
}
|
||||
|
||||
struct brcmf_sdio *brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev)
|
@ -0,0 +1,33 @@
|
||||
From 51ef7925e10688c57186d438e784532e063492e4 Mon Sep 17 00:00:00 2001
|
||||
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
|
||||
Date: Thu, 23 Nov 2017 17:57:04 +0200
|
||||
Subject: [PATCH] brcmfmac: Avoid build error with make W=1
|
||||
|
||||
When I run make W=1 on gcc (Debian 7.2.0-16) 7.2.0 I got an error for
|
||||
the first run, all next ones are okay.
|
||||
|
||||
CC [M] drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.o
|
||||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c:2078: error: Cannot parse struct or union!
|
||||
scripts/Makefile.build:310: recipe for target 'drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.o' failed
|
||||
|
||||
Seems like something happened with W=1 and wrong kernel doc format.
|
||||
As a quick fix remove dubious /** in the code.
|
||||
|
||||
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
|
||||
Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||
@@ -2070,7 +2070,7 @@ static int brcmf_sdio_txpkt_hdalign(stru
|
||||
return head_pad;
|
||||
}
|
||||
|
||||
-/**
|
||||
+/*
|
||||
* struct brcmf_skbuff_cb reserves first two bytes in sk_buff::cb for
|
||||
* bus layer usage.
|
||||
*/
|
@ -0,0 +1,40 @@
|
||||
From cc124d5cc8d81985c3511892d7a6d546552ff754 Mon Sep 17 00:00:00 2001
|
||||
From: Wright Feng <wright.feng@cypress.com>
|
||||
Date: Tue, 16 Jan 2018 17:26:50 +0800
|
||||
Subject: [PATCH] brcmfmac: fix CLM load error for legacy chips when user
|
||||
helper is enabled
|
||||
|
||||
For legacy chips without CLM blob files, kernel with user helper function
|
||||
returns -EAGAIN when we request_firmware(), and then driver got failed
|
||||
when bringing up legacy chips. We expect the CLM blob file for legacy chip
|
||||
is not existence in firmware path, but the -ENOENT error is transferred to
|
||||
-EAGAIN in firmware_class.c with user helper.
|
||||
Because of that, we continue with CLM data currently present in firmware
|
||||
if getting error from doing request_firmware().
|
||||
|
||||
Cc: stable@vger.kernel.org # v4.15.y
|
||||
Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
Signed-off-by: Wright Feng <wright.feng@cypress.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c | 9 +++------
|
||||
1 file changed, 3 insertions(+), 6 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
|
||||
@@ -182,12 +182,9 @@ static int brcmf_c_process_clm_blob(stru
|
||||
|
||||
err = request_firmware(&clm, clm_name, dev);
|
||||
if (err) {
|
||||
- if (err == -ENOENT) {
|
||||
- brcmf_dbg(INFO, "continue with CLM data currently present in firmware\n");
|
||||
- return 0;
|
||||
- }
|
||||
- brcmf_err("request CLM blob file failed (%d)\n", err);
|
||||
- return err;
|
||||
+ brcmf_info("no clm_blob available(err=%d), device may have limited channels available\n",
|
||||
+ err);
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
chunk_buf = kzalloc(sizeof(*chunk_buf) + MAX_CHUNK_LEN - 1, GFP_KERNEL);
|
@ -0,0 +1,25 @@
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Wed, 17 Jan 2018 11:11:17 +0100
|
||||
Subject: [PATCH] ath9k: discard undersized packets
|
||||
|
||||
Sometimes the hardware will push small packets that trigger a WARN_ON
|
||||
in mac80211. Discard them early to avoid this issue.
|
||||
|
||||
Reported-by: Stijn Tintel <stijn@linux-ipv6.be>
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath9k/recv.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/recv.c
|
||||
@@ -826,9 +826,9 @@ static int ath9k_rx_skb_preprocess(struc
|
||||
sc->rx.discard_next = false;
|
||||
|
||||
/*
|
||||
- * Discard zero-length packets.
|
||||
+ * Discard zero-length packets and packets smaller than an ACK
|
||||
*/
|
||||
- if (!rx_stats->rs_datalen) {
|
||||
+ if (rx_stats->rs_datalen < 10) {
|
||||
RX_STAT_INC(rx_len_err);
|
||||
goto corrupt;
|
||||
}
|
@ -0,0 +1,39 @@
|
||||
From 1fd3ae124d5e675f57cf7e3c601fb8f7712e0329 Mon Sep 17 00:00:00 2001
|
||||
From: Ian Molton <ian@mnementh.co.uk>
|
||||
Date: Mon, 13 Nov 2017 21:35:38 +0100
|
||||
Subject: [PATCH] brcmfmac: Fix parameter order in brcmf_sdiod_f0_writeb()
|
||||
|
||||
All the other IO functions are the other way round in this
|
||||
driver. Make this one match.
|
||||
|
||||
Signed-off-by: Ian Molton <ian@mnementh.co.uk>
|
||||
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||
@@ -230,8 +230,8 @@ void brcmf_sdiod_change_state(struct brc
|
||||
sdiodev->state = state;
|
||||
}
|
||||
|
||||
-static inline int brcmf_sdiod_f0_writeb(struct sdio_func *func,
|
||||
- uint regaddr, u8 byte)
|
||||
+static inline int brcmf_sdiod_f0_writeb(struct sdio_func *func, u8 byte,
|
||||
+ uint regaddr)
|
||||
{
|
||||
int err_ret;
|
||||
|
||||
@@ -269,8 +269,8 @@ static int brcmf_sdiod_request_data(stru
|
||||
if (fn)
|
||||
sdio_writeb(func, *(u8 *)data, addr, &ret);
|
||||
else
|
||||
- ret = brcmf_sdiod_f0_writeb(func, addr,
|
||||
- *(u8 *)data);
|
||||
+ ret = brcmf_sdiod_f0_writeb(func, *(u8 *)data,
|
||||
+ addr);
|
||||
} else {
|
||||
if (fn)
|
||||
*(u8 *)data = sdio_readb(func, addr, &ret);
|
@ -0,0 +1,105 @@
|
||||
From 1e6f676f43aa4270ebc5cff8e32a55f72362e042 Mon Sep 17 00:00:00 2001
|
||||
From: Ian Molton <ian@mnementh.co.uk>
|
||||
Date: Mon, 13 Nov 2017 21:35:39 +0100
|
||||
Subject: [PATCH] brcmfmac: Register sizes on hardware are not dependent on
|
||||
compiler types
|
||||
|
||||
The 4 IO functions in this patch are incorrect as they use compiler types
|
||||
to determine how many bytes to send to the hardware.
|
||||
|
||||
Signed-off-by: Ian Molton <ian@mnementh.co.uk>
|
||||
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
.../wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 22 +++++++++++-----------
|
||||
1 file changed, 11 insertions(+), 11 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||
@@ -264,7 +264,7 @@ static int brcmf_sdiod_request_data(stru
|
||||
func = sdiodev->func[fn];
|
||||
|
||||
switch (regsz) {
|
||||
- case sizeof(u8):
|
||||
+ case 1:
|
||||
if (write) {
|
||||
if (fn)
|
||||
sdio_writeb(func, *(u8 *)data, addr, &ret);
|
||||
@@ -278,13 +278,13 @@ static int brcmf_sdiod_request_data(stru
|
||||
*(u8 *)data = sdio_f0_readb(func, addr, &ret);
|
||||
}
|
||||
break;
|
||||
- case sizeof(u16):
|
||||
+ case 2:
|
||||
if (write)
|
||||
sdio_writew(func, *(u16 *)data, addr, &ret);
|
||||
else
|
||||
*(u16 *)data = sdio_readw(func, addr, &ret);
|
||||
break;
|
||||
- case sizeof(u32):
|
||||
+ case 4:
|
||||
if (write)
|
||||
sdio_writel(func, *(u32 *)data, addr, &ret);
|
||||
else
|
||||
@@ -368,7 +368,7 @@ brcmf_sdiod_set_sbaddr_window(struct brc
|
||||
for (i = 0; i < 3; i++) {
|
||||
err = brcmf_sdiod_regrw_helper(sdiodev,
|
||||
SBSDIO_FUNC1_SBADDRLOW + i,
|
||||
- sizeof(u8), &addr[i], true);
|
||||
+ 1, &addr[i], true);
|
||||
if (err) {
|
||||
brcmf_err("failed at addr: 0x%0x\n",
|
||||
SBSDIO_FUNC1_SBADDRLOW + i);
|
||||
@@ -407,7 +407,7 @@ u8 brcmf_sdiod_regrb(struct brcmf_sdio_d
|
||||
int retval;
|
||||
|
||||
brcmf_dbg(SDIO, "addr:0x%08x\n", addr);
|
||||
- retval = brcmf_sdiod_regrw_helper(sdiodev, addr, sizeof(data), &data,
|
||||
+ retval = brcmf_sdiod_regrw_helper(sdiodev, addr, 1, &data,
|
||||
false);
|
||||
brcmf_dbg(SDIO, "data:0x%02x\n", data);
|
||||
|
||||
@@ -423,10 +423,10 @@ u32 brcmf_sdiod_regrl(struct brcmf_sdio_
|
||||
int retval;
|
||||
|
||||
brcmf_dbg(SDIO, "addr:0x%08x\n", addr);
|
||||
- retval = brcmf_sdiod_addrprep(sdiodev, sizeof(data), &addr);
|
||||
+ retval = brcmf_sdiod_addrprep(sdiodev, 4, &addr);
|
||||
if (retval)
|
||||
goto done;
|
||||
- retval = brcmf_sdiod_regrw_helper(sdiodev, addr, sizeof(data), &data,
|
||||
+ retval = brcmf_sdiod_regrw_helper(sdiodev, addr, 4, &data,
|
||||
false);
|
||||
brcmf_dbg(SDIO, "data:0x%08x\n", data);
|
||||
|
||||
@@ -443,7 +443,7 @@ void brcmf_sdiod_regwb(struct brcmf_sdio
|
||||
int retval;
|
||||
|
||||
brcmf_dbg(SDIO, "addr:0x%08x, data:0x%02x\n", addr, data);
|
||||
- retval = brcmf_sdiod_regrw_helper(sdiodev, addr, sizeof(data), &data,
|
||||
+ retval = brcmf_sdiod_regrw_helper(sdiodev, addr, 1, &data,
|
||||
true);
|
||||
if (ret)
|
||||
*ret = retval;
|
||||
@@ -455,10 +455,10 @@ void brcmf_sdiod_regwl(struct brcmf_sdio
|
||||
int retval;
|
||||
|
||||
brcmf_dbg(SDIO, "addr:0x%08x, data:0x%08x\n", addr, data);
|
||||
- retval = brcmf_sdiod_addrprep(sdiodev, sizeof(data), &addr);
|
||||
+ retval = brcmf_sdiod_addrprep(sdiodev, 4, &addr);
|
||||
if (retval)
|
||||
goto done;
|
||||
- retval = brcmf_sdiod_regrw_helper(sdiodev, addr, sizeof(data), &data,
|
||||
+ retval = brcmf_sdiod_regrw_helper(sdiodev, addr, 4, &data,
|
||||
true);
|
||||
|
||||
done:
|
||||
@@ -876,7 +876,7 @@ int brcmf_sdiod_abort(struct brcmf_sdio_
|
||||
|
||||
/* issue abort cmd52 command through F0 */
|
||||
brcmf_sdiod_request_data(sdiodev, SDIO_FUNC_0, SDIO_CCCR_ABORT,
|
||||
- sizeof(t_func), &t_func, true);
|
||||
+ 1, &t_func, true);
|
||||
|
||||
brcmf_dbg(SDIO, "Exit\n");
|
||||
return 0;
|
@ -0,0 +1,179 @@
|
||||
From 0fcc9fe0048422d66bb906eaa73cc75e11ff7345 Mon Sep 17 00:00:00 2001
|
||||
From: Ian Molton <ian@mnementh.co.uk>
|
||||
Date: Mon, 13 Nov 2017 21:35:40 +0100
|
||||
Subject: [PATCH] brcmfmac: Split brcmf_sdiod_regrw_helper() up.
|
||||
|
||||
This large function is concealing a LOT of obscure logic about
|
||||
how the hardware functions. Time to split it up.
|
||||
|
||||
This first patch splits the function into two pieces - read and write,
|
||||
doing away with the rw flag in the process.
|
||||
|
||||
Signed-off-by: Ian Molton <ian@mnementh.co.uk>
|
||||
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
.../wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 94 +++++++++++++++++-----
|
||||
1 file changed, 73 insertions(+), 21 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||
@@ -302,8 +302,8 @@ static int brcmf_sdiod_request_data(stru
|
||||
return ret;
|
||||
}
|
||||
|
||||
-static int brcmf_sdiod_regrw_helper(struct brcmf_sdio_dev *sdiodev, u32 addr,
|
||||
- u8 regsz, void *data, bool write)
|
||||
+static int brcmf_sdiod_reg_write(struct brcmf_sdio_dev *sdiodev, u32 addr,
|
||||
+ u8 regsz, void *data)
|
||||
{
|
||||
u8 func;
|
||||
s32 retry = 0;
|
||||
@@ -324,13 +324,66 @@ static int brcmf_sdiod_regrw_helper(stru
|
||||
func = SDIO_FUNC_1;
|
||||
|
||||
do {
|
||||
- if (!write)
|
||||
- memset(data, 0, regsz);
|
||||
/* for retry wait for 1 ms till bus get settled down */
|
||||
if (retry)
|
||||
usleep_range(1000, 2000);
|
||||
+
|
||||
+ ret = brcmf_sdiod_request_data(sdiodev, func, addr, regsz,
|
||||
+ data, true);
|
||||
+
|
||||
+ } while (ret != 0 && ret != -ENOMEDIUM &&
|
||||
+ retry++ < SDIOH_API_ACCESS_RETRY_LIMIT);
|
||||
+
|
||||
+ if (ret == -ENOMEDIUM) {
|
||||
+ brcmf_sdiod_change_state(sdiodev, BRCMF_SDIOD_NOMEDIUM);
|
||||
+ } else if (ret != 0) {
|
||||
+ /*
|
||||
+ * SleepCSR register access can fail when
|
||||
+ * waking up the device so reduce this noise
|
||||
+ * in the logs.
|
||||
+ */
|
||||
+ if (addr != SBSDIO_FUNC1_SLEEPCSR)
|
||||
+ brcmf_err("failed to write data F%d@0x%05x, err: %d\n",
|
||||
+ func, addr, ret);
|
||||
+ else
|
||||
+ brcmf_dbg(SDIO, "failed to write data F%d@0x%05x, err: %d\n",
|
||||
+ func, addr, ret);
|
||||
+ }
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static int brcmf_sdiod_reg_read(struct brcmf_sdio_dev *sdiodev, u32 addr,
|
||||
+ u8 regsz, void *data)
|
||||
+{
|
||||
+ u8 func;
|
||||
+ s32 retry = 0;
|
||||
+ int ret;
|
||||
+
|
||||
+ if (sdiodev->state == BRCMF_SDIOD_NOMEDIUM)
|
||||
+ return -ENOMEDIUM;
|
||||
+
|
||||
+ /*
|
||||
+ * figure out how to read the register based on address range
|
||||
+ * 0x00 ~ 0x7FF: function 0 CCCR and FBR
|
||||
+ * 0x10000 ~ 0x1FFFF: function 1 miscellaneous registers
|
||||
+ * The rest: function 1 silicon backplane core registers
|
||||
+ */
|
||||
+ if ((addr & ~REG_F0_REG_MASK) == 0)
|
||||
+ func = SDIO_FUNC_0;
|
||||
+ else
|
||||
+ func = SDIO_FUNC_1;
|
||||
+
|
||||
+ do {
|
||||
+ memset(data, 0, regsz);
|
||||
+
|
||||
+ /* for retry wait for 1 ms till bus get settled down */
|
||||
+ if (retry)
|
||||
+ usleep_range(1000, 2000);
|
||||
+
|
||||
ret = brcmf_sdiod_request_data(sdiodev, func, addr, regsz,
|
||||
- data, write);
|
||||
+ data, false);
|
||||
+
|
||||
} while (ret != 0 && ret != -ENOMEDIUM &&
|
||||
retry++ < SDIOH_API_ACCESS_RETRY_LIMIT);
|
||||
|
||||
@@ -343,12 +396,13 @@ static int brcmf_sdiod_regrw_helper(stru
|
||||
* in the logs.
|
||||
*/
|
||||
if (addr != SBSDIO_FUNC1_SLEEPCSR)
|
||||
- brcmf_err("failed to %s data F%d@0x%05x, err: %d\n",
|
||||
- write ? "write" : "read", func, addr, ret);
|
||||
+ brcmf_err("failed to read data F%d@0x%05x, err: %d\n",
|
||||
+ func, addr, ret);
|
||||
else
|
||||
- brcmf_dbg(SDIO, "failed to %s data F%d@0x%05x, err: %d\n",
|
||||
- write ? "write" : "read", func, addr, ret);
|
||||
+ brcmf_dbg(SDIO, "failed to read data F%d@0x%05x, err: %d\n",
|
||||
+ func, addr, ret);
|
||||
}
|
||||
+
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -366,13 +420,11 @@ brcmf_sdiod_set_sbaddr_window(struct brc
|
||||
addr[2] = (address >> 24) & SBSDIO_SBADDRHIGH_MASK;
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
- err = brcmf_sdiod_regrw_helper(sdiodev,
|
||||
- SBSDIO_FUNC1_SBADDRLOW + i,
|
||||
- 1, &addr[i], true);
|
||||
+ brcmf_sdiod_regwb(sdiodev, SBSDIO_FUNC1_SBADDRLOW + i, addr[i],
|
||||
+ &err);
|
||||
if (err) {
|
||||
brcmf_err("failed at addr: 0x%0x\n",
|
||||
SBSDIO_FUNC1_SBADDRLOW + i);
|
||||
- break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -407,8 +459,7 @@ u8 brcmf_sdiod_regrb(struct brcmf_sdio_d
|
||||
int retval;
|
||||
|
||||
brcmf_dbg(SDIO, "addr:0x%08x\n", addr);
|
||||
- retval = brcmf_sdiod_regrw_helper(sdiodev, addr, 1, &data,
|
||||
- false);
|
||||
+ retval = brcmf_sdiod_reg_read(sdiodev, addr, 1, &data);
|
||||
brcmf_dbg(SDIO, "data:0x%02x\n", data);
|
||||
|
||||
if (ret)
|
||||
@@ -426,8 +477,9 @@ u32 brcmf_sdiod_regrl(struct brcmf_sdio_
|
||||
retval = brcmf_sdiod_addrprep(sdiodev, 4, &addr);
|
||||
if (retval)
|
||||
goto done;
|
||||
- retval = brcmf_sdiod_regrw_helper(sdiodev, addr, 4, &data,
|
||||
- false);
|
||||
+
|
||||
+ retval = brcmf_sdiod_reg_read(sdiodev, addr, 4, &data);
|
||||
+
|
||||
brcmf_dbg(SDIO, "data:0x%08x\n", data);
|
||||
|
||||
done:
|
||||
@@ -443,8 +495,8 @@ void brcmf_sdiod_regwb(struct brcmf_sdio
|
||||
int retval;
|
||||
|
||||
brcmf_dbg(SDIO, "addr:0x%08x, data:0x%02x\n", addr, data);
|
||||
- retval = brcmf_sdiod_regrw_helper(sdiodev, addr, 1, &data,
|
||||
- true);
|
||||
+ retval = brcmf_sdiod_reg_write(sdiodev, addr, 1, &data);
|
||||
+
|
||||
if (ret)
|
||||
*ret = retval;
|
||||
}
|
||||
@@ -458,8 +510,8 @@ void brcmf_sdiod_regwl(struct brcmf_sdio
|
||||
retval = brcmf_sdiod_addrprep(sdiodev, 4, &addr);
|
||||
if (retval)
|
||||
goto done;
|
||||
- retval = brcmf_sdiod_regrw_helper(sdiodev, addr, 4, &data,
|
||||
- true);
|
||||
+
|
||||
+ retval = brcmf_sdiod_reg_write(sdiodev, addr, 4, &data);
|
||||
|
||||
done:
|
||||
if (ret)
|
@ -0,0 +1,62 @@
|
||||
From b9b0d290bc0c90a5a262bc89c9d995988ea98669 Mon Sep 17 00:00:00 2001
|
||||
From: Ian Molton <ian@mnementh.co.uk>
|
||||
Date: Mon, 13 Nov 2017 21:35:41 +0100
|
||||
Subject: [PATCH] brcmfmac: Clean up brcmf_sdiod_set_sbaddr_window()
|
||||
|
||||
This function sets the address of the IO window used for
|
||||
SDIO accesses onto the backplane of the chip.
|
||||
|
||||
It currently uses 3 separate masks despite the full mask being
|
||||
defined in the code already. Remove the separate masks and clean up.
|
||||
|
||||
Signed-off-by: Ian Molton <ian@mnementh.co.uk>
|
||||
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
.../net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 17 +++++------------
|
||||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h | 3 ---
|
||||
2 files changed, 5 insertions(+), 15 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||
@@ -410,23 +410,16 @@ static int
|
||||
brcmf_sdiod_set_sbaddr_window(struct brcmf_sdio_dev *sdiodev, u32 address)
|
||||
{
|
||||
int err = 0, i;
|
||||
- u8 addr[3];
|
||||
+ u32 addr;
|
||||
|
||||
if (sdiodev->state == BRCMF_SDIOD_NOMEDIUM)
|
||||
return -ENOMEDIUM;
|
||||
|
||||
- addr[0] = (address >> 8) & SBSDIO_SBADDRLOW_MASK;
|
||||
- addr[1] = (address >> 16) & SBSDIO_SBADDRMID_MASK;
|
||||
- addr[2] = (address >> 24) & SBSDIO_SBADDRHIGH_MASK;
|
||||
+ addr = (address & SBSDIO_SBWINDOW_MASK) >> 8;
|
||||
|
||||
- for (i = 0; i < 3; i++) {
|
||||
- brcmf_sdiod_regwb(sdiodev, SBSDIO_FUNC1_SBADDRLOW + i, addr[i],
|
||||
- &err);
|
||||
- if (err) {
|
||||
- brcmf_err("failed at addr: 0x%0x\n",
|
||||
- SBSDIO_FUNC1_SBADDRLOW + i);
|
||||
- }
|
||||
- }
|
||||
+ for (i = 0 ; i < 3 && !err ; i++, addr >>= 8)
|
||||
+ brcmf_sdiod_regwb(sdiodev, SBSDIO_FUNC1_SBADDRLOW + i,
|
||||
+ addr & 0xff, &err);
|
||||
|
||||
return err;
|
||||
}
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h
|
||||
@@ -133,9 +133,6 @@
|
||||
|
||||
/* valid bits in SBSDIO_FUNC1_SBADDRxxx regs */
|
||||
|
||||
-#define SBSDIO_SBADDRLOW_MASK 0x80 /* Valid bits in SBADDRLOW */
|
||||
-#define SBSDIO_SBADDRMID_MASK 0xff /* Valid bits in SBADDRMID */
|
||||
-#define SBSDIO_SBADDRHIGH_MASK 0xffU /* Valid bits in SBADDRHIGH */
|
||||
/* Address bits from SBADDR regs */
|
||||
#define SBSDIO_SBWINDOW_MASK 0xffff8000
|
||||
|
@ -0,0 +1,91 @@
|
||||
From ea243e9077b3545f20d93884e91c50ac0719685a Mon Sep 17 00:00:00 2001
|
||||
From: Ian Molton <ian@mnementh.co.uk>
|
||||
Date: Mon, 13 Nov 2017 21:35:42 +0100
|
||||
Subject: [PATCH] brcmfmac: Remove dead IO code
|
||||
|
||||
The value passed to brcmf_sdiod_addrprep() is *always* 4
|
||||
remove this parameter and the unused code to handle it.
|
||||
|
||||
Signed-off-by: Ian Molton <ian@mnementh.co.uk>
|
||||
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
.../net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 18 ++++++++----------
|
||||
1 file changed, 8 insertions(+), 10 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||
@@ -425,7 +425,7 @@ brcmf_sdiod_set_sbaddr_window(struct brc
|
||||
}
|
||||
|
||||
static int
|
||||
-brcmf_sdiod_addrprep(struct brcmf_sdio_dev *sdiodev, uint width, u32 *addr)
|
||||
+brcmf_sdiod_addrprep(struct brcmf_sdio_dev *sdiodev, u32 *addr)
|
||||
{
|
||||
uint bar0 = *addr & ~SBSDIO_SB_OFT_ADDR_MASK;
|
||||
int err = 0;
|
||||
@@ -439,9 +439,7 @@ brcmf_sdiod_addrprep(struct brcmf_sdio_d
|
||||
}
|
||||
|
||||
*addr &= SBSDIO_SB_OFT_ADDR_MASK;
|
||||
-
|
||||
- if (width == 4)
|
||||
- *addr |= SBSDIO_SB_ACCESS_2_4B_FLAG;
|
||||
+ *addr |= SBSDIO_SB_ACCESS_2_4B_FLAG;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -467,7 +465,7 @@ u32 brcmf_sdiod_regrl(struct brcmf_sdio_
|
||||
int retval;
|
||||
|
||||
brcmf_dbg(SDIO, "addr:0x%08x\n", addr);
|
||||
- retval = brcmf_sdiod_addrprep(sdiodev, 4, &addr);
|
||||
+ retval = brcmf_sdiod_addrprep(sdiodev, &addr);
|
||||
if (retval)
|
||||
goto done;
|
||||
|
||||
@@ -500,7 +498,7 @@ void brcmf_sdiod_regwl(struct brcmf_sdio
|
||||
int retval;
|
||||
|
||||
brcmf_dbg(SDIO, "addr:0x%08x, data:0x%08x\n", addr, data);
|
||||
- retval = brcmf_sdiod_addrprep(sdiodev, 4, &addr);
|
||||
+ retval = brcmf_sdiod_addrprep(sdiodev, &addr);
|
||||
if (retval)
|
||||
goto done;
|
||||
|
||||
@@ -736,7 +734,7 @@ int brcmf_sdiod_recv_pkt(struct brcmf_sd
|
||||
|
||||
brcmf_dbg(SDIO, "addr = 0x%x, size = %d\n", addr, pkt->len);
|
||||
|
||||
- err = brcmf_sdiod_addrprep(sdiodev, 4, &addr);
|
||||
+ err = brcmf_sdiod_addrprep(sdiodev, &addr);
|
||||
if (err)
|
||||
goto done;
|
||||
|
||||
@@ -757,7 +755,7 @@ int brcmf_sdiod_recv_chain(struct brcmf_
|
||||
brcmf_dbg(SDIO, "addr = 0x%x, size = %d\n",
|
||||
addr, pktq->qlen);
|
||||
|
||||
- err = brcmf_sdiod_addrprep(sdiodev, 4, &addr);
|
||||
+ err = brcmf_sdiod_addrprep(sdiodev, &addr);
|
||||
if (err)
|
||||
goto done;
|
||||
|
||||
@@ -801,7 +799,7 @@ int brcmf_sdiod_send_buf(struct brcmf_sd
|
||||
|
||||
memcpy(mypkt->data, buf, nbytes);
|
||||
|
||||
- err = brcmf_sdiod_addrprep(sdiodev, 4, &addr);
|
||||
+ err = brcmf_sdiod_addrprep(sdiodev, &addr);
|
||||
|
||||
if (!err)
|
||||
err = brcmf_sdiod_buffrw(sdiodev, SDIO_FUNC_2, true, addr,
|
||||
@@ -821,7 +819,7 @@ int brcmf_sdiod_send_pkt(struct brcmf_sd
|
||||
|
||||
brcmf_dbg(SDIO, "addr = 0x%x, size = %d\n", addr, pktq->qlen);
|
||||
|
||||
- err = brcmf_sdiod_addrprep(sdiodev, 4, &addr);
|
||||
+ err = brcmf_sdiod_addrprep(sdiodev, &addr);
|
||||
if (err)
|
||||
return err;
|
||||
|
@ -0,0 +1,61 @@
|
||||
From 4a3338ba2a7421db2260159cca5a27bd2ee36d00 Mon Sep 17 00:00:00 2001
|
||||
From: Ian Molton <ian@mnementh.co.uk>
|
||||
Date: Mon, 13 Nov 2017 21:35:43 +0100
|
||||
Subject: [PATCH] brcmfmac: Remove bandaid for SleepCSR
|
||||
|
||||
Register access code is not the place for band-aid fixes like this.
|
||||
If this is a genuine problem, it should be fixed further up in the driver
|
||||
stack.
|
||||
|
||||
Signed-off-by: Ian Molton <ian@mnementh.co.uk>
|
||||
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
.../wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 28 +---------------------
|
||||
1 file changed, 1 insertion(+), 27 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||
@@ -334,21 +334,8 @@ static int brcmf_sdiod_reg_write(struct
|
||||
} while (ret != 0 && ret != -ENOMEDIUM &&
|
||||
retry++ < SDIOH_API_ACCESS_RETRY_LIMIT);
|
||||
|
||||
- if (ret == -ENOMEDIUM) {
|
||||
+ if (ret == -ENOMEDIUM)
|
||||
brcmf_sdiod_change_state(sdiodev, BRCMF_SDIOD_NOMEDIUM);
|
||||
- } else if (ret != 0) {
|
||||
- /*
|
||||
- * SleepCSR register access can fail when
|
||||
- * waking up the device so reduce this noise
|
||||
- * in the logs.
|
||||
- */
|
||||
- if (addr != SBSDIO_FUNC1_SLEEPCSR)
|
||||
- brcmf_err("failed to write data F%d@0x%05x, err: %d\n",
|
||||
- func, addr, ret);
|
||||
- else
|
||||
- brcmf_dbg(SDIO, "failed to write data F%d@0x%05x, err: %d\n",
|
||||
- func, addr, ret);
|
||||
- }
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -389,19 +376,6 @@ static int brcmf_sdiod_reg_read(struct b
|
||||
|
||||
if (ret == -ENOMEDIUM)
|
||||
brcmf_sdiod_change_state(sdiodev, BRCMF_SDIOD_NOMEDIUM);
|
||||
- else if (ret != 0) {
|
||||
- /*
|
||||
- * SleepCSR register access can fail when
|
||||
- * waking up the device so reduce this noise
|
||||
- * in the logs.
|
||||
- */
|
||||
- if (addr != SBSDIO_FUNC1_SLEEPCSR)
|
||||
- brcmf_err("failed to read data F%d@0x%05x, err: %d\n",
|
||||
- func, addr, ret);
|
||||
- else
|
||||
- brcmf_dbg(SDIO, "failed to read data F%d@0x%05x, err: %d\n",
|
||||
- func, addr, ret);
|
||||
- }
|
||||
|
||||
return ret;
|
||||
}
|
@ -0,0 +1,344 @@
|
||||
From 993a98a42e6e790fd0d2bf7d55a031513c7ba7dc Mon Sep 17 00:00:00 2001
|
||||
From: Ian Molton <ian@mnementh.co.uk>
|
||||
Date: Mon, 13 Nov 2017 21:35:44 +0100
|
||||
Subject: [PATCH] brcmfmac: Remove brcmf_sdiod_request_data()
|
||||
|
||||
This function is obfuscating how IO works on this chip. Remove it
|
||||
and push its logic into brcmf_sdiod_reg_{read,write}().
|
||||
|
||||
Handling of -ENOMEDIUM is altered, but as that's pretty much broken anyway
|
||||
we can ignore that.
|
||||
|
||||
Signed-off-by: Ian Molton <ian@mnementh.co.uk>
|
||||
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
.../wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 237 ++++++++-------------
|
||||
.../wireless/broadcom/brcm80211/brcmfmac/sdio.h | 2 +-
|
||||
2 files changed, 87 insertions(+), 152 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||
@@ -230,6 +230,43 @@ void brcmf_sdiod_change_state(struct brc
|
||||
sdiodev->state = state;
|
||||
}
|
||||
|
||||
+static int brcmf_sdiod_set_sbaddr_window(struct brcmf_sdio_dev *sdiodev,
|
||||
+ u32 address)
|
||||
+{
|
||||
+ int err = 0, i;
|
||||
+ u32 addr;
|
||||
+
|
||||
+ if (sdiodev->state == BRCMF_SDIOD_NOMEDIUM)
|
||||
+ return -ENOMEDIUM;
|
||||
+
|
||||
+ addr = (address & SBSDIO_SBWINDOW_MASK) >> 8;
|
||||
+
|
||||
+ for (i = 0 ; i < 3 && !err ; i++, addr >>= 8)
|
||||
+ brcmf_sdiod_regwb(sdiodev, SBSDIO_FUNC1_SBADDRLOW + i,
|
||||
+ addr & 0xff, &err);
|
||||
+
|
||||
+ return err;
|
||||
+}
|
||||
+
|
||||
+static int brcmf_sdiod_addrprep(struct brcmf_sdio_dev *sdiodev, u32 *addr)
|
||||
+{
|
||||
+ uint bar0 = *addr & ~SBSDIO_SB_OFT_ADDR_MASK;
|
||||
+ int err = 0;
|
||||
+
|
||||
+ if (bar0 != sdiodev->sbwad) {
|
||||
+ err = brcmf_sdiod_set_sbaddr_window(sdiodev, bar0);
|
||||
+ if (err)
|
||||
+ return err;
|
||||
+
|
||||
+ sdiodev->sbwad = bar0;
|
||||
+ }
|
||||
+
|
||||
+ *addr &= SBSDIO_SB_OFT_ADDR_MASK;
|
||||
+ *addr |= SBSDIO_SB_ACCESS_2_4B_FLAG;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static inline int brcmf_sdiod_f0_writeb(struct sdio_func *func, u8 byte,
|
||||
uint regaddr)
|
||||
{
|
||||
@@ -249,173 +286,84 @@ static inline int brcmf_sdiod_f0_writeb(
|
||||
return err_ret;
|
||||
}
|
||||
|
||||
-static int brcmf_sdiod_request_data(struct brcmf_sdio_dev *sdiodev, u8 fn,
|
||||
- u32 addr, u8 regsz, void *data, bool write)
|
||||
-{
|
||||
- struct sdio_func *func;
|
||||
- int ret = -EINVAL;
|
||||
-
|
||||
- brcmf_dbg(SDIO, "rw=%d, func=%d, addr=0x%05x, nbytes=%d\n",
|
||||
- write, fn, addr, regsz);
|
||||
-
|
||||
- /* only allow byte access on F0 */
|
||||
- if (WARN_ON(regsz > 1 && !fn))
|
||||
- return -EINVAL;
|
||||
- func = sdiodev->func[fn];
|
||||
-
|
||||
- switch (regsz) {
|
||||
- case 1:
|
||||
- if (write) {
|
||||
- if (fn)
|
||||
- sdio_writeb(func, *(u8 *)data, addr, &ret);
|
||||
- else
|
||||
- ret = brcmf_sdiod_f0_writeb(func, *(u8 *)data,
|
||||
- addr);
|
||||
- } else {
|
||||
- if (fn)
|
||||
- *(u8 *)data = sdio_readb(func, addr, &ret);
|
||||
- else
|
||||
- *(u8 *)data = sdio_f0_readb(func, addr, &ret);
|
||||
- }
|
||||
- break;
|
||||
- case 2:
|
||||
- if (write)
|
||||
- sdio_writew(func, *(u16 *)data, addr, &ret);
|
||||
- else
|
||||
- *(u16 *)data = sdio_readw(func, addr, &ret);
|
||||
- break;
|
||||
- case 4:
|
||||
- if (write)
|
||||
- sdio_writel(func, *(u32 *)data, addr, &ret);
|
||||
- else
|
||||
- *(u32 *)data = sdio_readl(func, addr, &ret);
|
||||
- break;
|
||||
- default:
|
||||
- brcmf_err("invalid size: %d\n", regsz);
|
||||
- break;
|
||||
- }
|
||||
-
|
||||
- if (ret)
|
||||
- brcmf_dbg(SDIO, "failed to %s data F%d@0x%05x, err: %d\n",
|
||||
- write ? "write" : "read", fn, addr, ret);
|
||||
-
|
||||
- return ret;
|
||||
-}
|
||||
-
|
||||
static int brcmf_sdiod_reg_write(struct brcmf_sdio_dev *sdiodev, u32 addr,
|
||||
u8 regsz, void *data)
|
||||
{
|
||||
- u8 func;
|
||||
- s32 retry = 0;
|
||||
int ret;
|
||||
|
||||
- if (sdiodev->state == BRCMF_SDIOD_NOMEDIUM)
|
||||
- return -ENOMEDIUM;
|
||||
-
|
||||
/*
|
||||
* figure out how to read the register based on address range
|
||||
* 0x00 ~ 0x7FF: function 0 CCCR and FBR
|
||||
* 0x10000 ~ 0x1FFFF: function 1 miscellaneous registers
|
||||
* The rest: function 1 silicon backplane core registers
|
||||
+ * f0 writes must be bytewise
|
||||
*/
|
||||
- if ((addr & ~REG_F0_REG_MASK) == 0)
|
||||
- func = SDIO_FUNC_0;
|
||||
- else
|
||||
- func = SDIO_FUNC_1;
|
||||
|
||||
- do {
|
||||
- /* for retry wait for 1 ms till bus get settled down */
|
||||
- if (retry)
|
||||
- usleep_range(1000, 2000);
|
||||
-
|
||||
- ret = brcmf_sdiod_request_data(sdiodev, func, addr, regsz,
|
||||
- data, true);
|
||||
-
|
||||
- } while (ret != 0 && ret != -ENOMEDIUM &&
|
||||
- retry++ < SDIOH_API_ACCESS_RETRY_LIMIT);
|
||||
+ if ((addr & ~REG_F0_REG_MASK) == 0) {
|
||||
+ if (WARN_ON(regsz > 1))
|
||||
+ return -EINVAL;
|
||||
+ ret = brcmf_sdiod_f0_writeb(sdiodev->func[0],
|
||||
+ *(u8 *)data, addr);
|
||||
+ } else {
|
||||
+ switch (regsz) {
|
||||
+ case 1:
|
||||
+ sdio_writeb(sdiodev->func[1], *(u8 *)data, addr, &ret);
|
||||
+ break;
|
||||
+ case 4:
|
||||
+ ret = brcmf_sdiod_addrprep(sdiodev, &addr);
|
||||
+ if (ret)
|
||||
+ goto done;
|
||||
|
||||
- if (ret == -ENOMEDIUM)
|
||||
- brcmf_sdiod_change_state(sdiodev, BRCMF_SDIOD_NOMEDIUM);
|
||||
+ sdio_writel(sdiodev->func[1], *(u32 *)data, addr, &ret);
|
||||
+ break;
|
||||
+ default:
|
||||
+ WARN(1, "Invalid reg size\n");
|
||||
+ ret = -EINVAL;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
|
||||
+done:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int brcmf_sdiod_reg_read(struct brcmf_sdio_dev *sdiodev, u32 addr,
|
||||
u8 regsz, void *data)
|
||||
{
|
||||
- u8 func;
|
||||
- s32 retry = 0;
|
||||
int ret;
|
||||
|
||||
- if (sdiodev->state == BRCMF_SDIOD_NOMEDIUM)
|
||||
- return -ENOMEDIUM;
|
||||
-
|
||||
/*
|
||||
* figure out how to read the register based on address range
|
||||
* 0x00 ~ 0x7FF: function 0 CCCR and FBR
|
||||
* 0x10000 ~ 0x1FFFF: function 1 miscellaneous registers
|
||||
* The rest: function 1 silicon backplane core registers
|
||||
+ * f0 reads must be bytewise
|
||||
*/
|
||||
- if ((addr & ~REG_F0_REG_MASK) == 0)
|
||||
- func = SDIO_FUNC_0;
|
||||
- else
|
||||
- func = SDIO_FUNC_1;
|
||||
-
|
||||
- do {
|
||||
- memset(data, 0, regsz);
|
||||
-
|
||||
- /* for retry wait for 1 ms till bus get settled down */
|
||||
- if (retry)
|
||||
- usleep_range(1000, 2000);
|
||||
-
|
||||
- ret = brcmf_sdiod_request_data(sdiodev, func, addr, regsz,
|
||||
- data, false);
|
||||
-
|
||||
- } while (ret != 0 && ret != -ENOMEDIUM &&
|
||||
- retry++ < SDIOH_API_ACCESS_RETRY_LIMIT);
|
||||
-
|
||||
- if (ret == -ENOMEDIUM)
|
||||
- brcmf_sdiod_change_state(sdiodev, BRCMF_SDIOD_NOMEDIUM);
|
||||
-
|
||||
- return ret;
|
||||
-}
|
||||
-
|
||||
-static int
|
||||
-brcmf_sdiod_set_sbaddr_window(struct brcmf_sdio_dev *sdiodev, u32 address)
|
||||
-{
|
||||
- int err = 0, i;
|
||||
- u32 addr;
|
||||
-
|
||||
- if (sdiodev->state == BRCMF_SDIOD_NOMEDIUM)
|
||||
- return -ENOMEDIUM;
|
||||
-
|
||||
- addr = (address & SBSDIO_SBWINDOW_MASK) >> 8;
|
||||
-
|
||||
- for (i = 0 ; i < 3 && !err ; i++, addr >>= 8)
|
||||
- brcmf_sdiod_regwb(sdiodev, SBSDIO_FUNC1_SBADDRLOW + i,
|
||||
- addr & 0xff, &err);
|
||||
-
|
||||
- return err;
|
||||
-}
|
||||
-
|
||||
-static int
|
||||
-brcmf_sdiod_addrprep(struct brcmf_sdio_dev *sdiodev, u32 *addr)
|
||||
-{
|
||||
- uint bar0 = *addr & ~SBSDIO_SB_OFT_ADDR_MASK;
|
||||
- int err = 0;
|
||||
-
|
||||
- if (bar0 != sdiodev->sbwad) {
|
||||
- err = brcmf_sdiod_set_sbaddr_window(sdiodev, bar0);
|
||||
- if (err)
|
||||
- return err;
|
||||
+ if ((addr & ~REG_F0_REG_MASK) == 0) {
|
||||
+ if (WARN_ON(regsz > 1))
|
||||
+ return -EINVAL;
|
||||
+ *(u8 *)data = sdio_f0_readb(sdiodev->func[0], addr, &ret);
|
||||
+ } else {
|
||||
+ switch (regsz) {
|
||||
+ case 1:
|
||||
+ *(u8 *)data = sdio_readb(sdiodev->func[1], addr, &ret);
|
||||
+ break;
|
||||
+ case 4:
|
||||
+ ret = brcmf_sdiod_addrprep(sdiodev, &addr);
|
||||
+ if (ret)
|
||||
+ goto done;
|
||||
|
||||
- sdiodev->sbwad = bar0;
|
||||
+ *(u32 *)data = sdio_readl(sdiodev->func[1], addr, &ret);
|
||||
+ break;
|
||||
+ default:
|
||||
+ WARN(1, "Invalid reg size\n");
|
||||
+ ret = -EINVAL;
|
||||
+ break;
|
||||
+ }
|
||||
}
|
||||
|
||||
- *addr &= SBSDIO_SB_OFT_ADDR_MASK;
|
||||
- *addr |= SBSDIO_SB_ACCESS_2_4B_FLAG;
|
||||
-
|
||||
- return 0;
|
||||
+done:
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
u8 brcmf_sdiod_regrb(struct brcmf_sdio_dev *sdiodev, u32 addr, int *ret)
|
||||
@@ -439,15 +387,9 @@ u32 brcmf_sdiod_regrl(struct brcmf_sdio_
|
||||
int retval;
|
||||
|
||||
brcmf_dbg(SDIO, "addr:0x%08x\n", addr);
|
||||
- retval = brcmf_sdiod_addrprep(sdiodev, &addr);
|
||||
- if (retval)
|
||||
- goto done;
|
||||
-
|
||||
retval = brcmf_sdiod_reg_read(sdiodev, addr, 4, &data);
|
||||
-
|
||||
brcmf_dbg(SDIO, "data:0x%08x\n", data);
|
||||
|
||||
-done:
|
||||
if (ret)
|
||||
*ret = retval;
|
||||
|
||||
@@ -472,13 +414,8 @@ void brcmf_sdiod_regwl(struct brcmf_sdio
|
||||
int retval;
|
||||
|
||||
brcmf_dbg(SDIO, "addr:0x%08x, data:0x%08x\n", addr, data);
|
||||
- retval = brcmf_sdiod_addrprep(sdiodev, &addr);
|
||||
- if (retval)
|
||||
- goto done;
|
||||
-
|
||||
retval = brcmf_sdiod_reg_write(sdiodev, addr, 4, &data);
|
||||
|
||||
-done:
|
||||
if (ret)
|
||||
*ret = retval;
|
||||
}
|
||||
@@ -886,14 +823,12 @@ brcmf_sdiod_ramrw(struct brcmf_sdio_dev
|
||||
return bcmerror;
|
||||
}
|
||||
|
||||
-int brcmf_sdiod_abort(struct brcmf_sdio_dev *sdiodev, uint fn)
|
||||
+int brcmf_sdiod_abort(struct brcmf_sdio_dev *sdiodev, u8 fn)
|
||||
{
|
||||
- char t_func = (char)fn;
|
||||
brcmf_dbg(SDIO, "Enter\n");
|
||||
|
||||
/* issue abort cmd52 command through F0 */
|
||||
- brcmf_sdiod_request_data(sdiodev, SDIO_FUNC_0, SDIO_CCCR_ABORT,
|
||||
- 1, &t_func, true);
|
||||
+ brcmf_sdiod_reg_write(sdiodev, SDIO_CCCR_ABORT, 1, &fn);
|
||||
|
||||
brcmf_dbg(SDIO, "Exit\n");
|
||||
return 0;
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h
|
||||
@@ -339,7 +339,7 @@ int brcmf_sdiod_ramrw(struct brcmf_sdio_
|
||||
u8 *data, uint size);
|
||||
|
||||
/* Issue an abort to the specified function */
|
||||
-int brcmf_sdiod_abort(struct brcmf_sdio_dev *sdiodev, uint fn);
|
||||
+int brcmf_sdiod_abort(struct brcmf_sdio_dev *sdiodev, u8 fn);
|
||||
void brcmf_sdiod_sgtable_alloc(struct brcmf_sdio_dev *sdiodev);
|
||||
void brcmf_sdiod_change_state(struct brcmf_sdio_dev *sdiodev,
|
||||
enum brcmf_sdiod_state state);
|
@ -0,0 +1,28 @@
|
||||
From 3508a056a1f45d95c874fc9af8748bf4229432b6 Mon Sep 17 00:00:00 2001
|
||||
From: Ian Molton <ian@mnementh.co.uk>
|
||||
Date: Mon, 13 Nov 2017 21:35:45 +0100
|
||||
Subject: [PATCH] brcmfmac: Fix asymmetric IO functions.
|
||||
|
||||
Unlikely to be a problem, but brcmf_sdiod_regrl() is
|
||||
not symmetric with brcmf_sdiod_regrb() in initializing
|
||||
the data value on stack. Fix that.
|
||||
|
||||
Signed-off-by: Ian Molton <ian@mnementh.co.uk>
|
||||
[arend: reword the commit message a bit]
|
||||
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||
@@ -383,7 +383,7 @@ u8 brcmf_sdiod_regrb(struct brcmf_sdio_d
|
||||
|
||||
u32 brcmf_sdiod_regrl(struct brcmf_sdio_dev *sdiodev, u32 addr, int *ret)
|
||||
{
|
||||
- u32 data = 0;
|
||||
+ u32 data;
|
||||
int retval;
|
||||
|
||||
brcmf_dbg(SDIO, "addr:0x%08x\n", addr);
|
@ -0,0 +1,53 @@
|
||||
From 12e3e74e2820e11d91ee44fd3a190cd80d109faa Mon Sep 17 00:00:00 2001
|
||||
From: Ian Molton <ian@mnementh.co.uk>
|
||||
Date: Mon, 13 Nov 2017 21:35:46 +0100
|
||||
Subject: [PATCH] brcmfmac: Remove noisy debugging.
|
||||
|
||||
If you need debugging this low level, you're doing something wrong.
|
||||
Remove these noisy debug statements so the code is more readable.
|
||||
|
||||
Signed-off-by: Ian Molton <ian@mnementh.co.uk>
|
||||
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 6 ------
|
||||
1 file changed, 6 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||
@@ -371,9 +371,7 @@ u8 brcmf_sdiod_regrb(struct brcmf_sdio_d
|
||||
u8 data;
|
||||
int retval;
|
||||
|
||||
- brcmf_dbg(SDIO, "addr:0x%08x\n", addr);
|
||||
retval = brcmf_sdiod_reg_read(sdiodev, addr, 1, &data);
|
||||
- brcmf_dbg(SDIO, "data:0x%02x\n", data);
|
||||
|
||||
if (ret)
|
||||
*ret = retval;
|
||||
@@ -386,9 +384,7 @@ u32 brcmf_sdiod_regrl(struct brcmf_sdio_
|
||||
u32 data;
|
||||
int retval;
|
||||
|
||||
- brcmf_dbg(SDIO, "addr:0x%08x\n", addr);
|
||||
retval = brcmf_sdiod_reg_read(sdiodev, addr, 4, &data);
|
||||
- brcmf_dbg(SDIO, "data:0x%08x\n", data);
|
||||
|
||||
if (ret)
|
||||
*ret = retval;
|
||||
@@ -401,7 +397,6 @@ void brcmf_sdiod_regwb(struct brcmf_sdio
|
||||
{
|
||||
int retval;
|
||||
|
||||
- brcmf_dbg(SDIO, "addr:0x%08x, data:0x%02x\n", addr, data);
|
||||
retval = brcmf_sdiod_reg_write(sdiodev, addr, 1, &data);
|
||||
|
||||
if (ret)
|
||||
@@ -413,7 +408,6 @@ void brcmf_sdiod_regwl(struct brcmf_sdio
|
||||
{
|
||||
int retval;
|
||||
|
||||
- brcmf_dbg(SDIO, "addr:0x%08x, data:0x%08x\n", addr, data);
|
||||
retval = brcmf_sdiod_reg_write(sdiodev, addr, 4, &data);
|
||||
|
||||
if (ret)
|
@ -0,0 +1,58 @@
|
||||
From dd8a2d49e4ed321ab8e7b679499c3a98ccc5ca24 Mon Sep 17 00:00:00 2001
|
||||
From: Ian Molton <ian@mnementh.co.uk>
|
||||
Date: Mon, 13 Nov 2017 21:35:47 +0100
|
||||
Subject: [PATCH] brcmfmac: Rename bcmerror to err
|
||||
|
||||
Trivial cleanup of nasty variable name
|
||||
|
||||
Signed-off-by: Ian Molton <ian@mnementh.co.uk>
|
||||
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 14 +++++++-------
|
||||
1 file changed, 7 insertions(+), 7 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||
@@ -746,7 +746,7 @@ int
|
||||
brcmf_sdiod_ramrw(struct brcmf_sdio_dev *sdiodev, bool write, u32 address,
|
||||
u8 *data, uint size)
|
||||
{
|
||||
- int bcmerror = 0;
|
||||
+ int err = 0;
|
||||
struct sk_buff *pkt;
|
||||
u32 sdaddr;
|
||||
uint dsize;
|
||||
@@ -771,8 +771,8 @@ brcmf_sdiod_ramrw(struct brcmf_sdio_dev
|
||||
/* Do the transfer(s) */
|
||||
while (size) {
|
||||
/* Set the backplane window to include the start address */
|
||||
- bcmerror = brcmf_sdiod_set_sbaddr_window(sdiodev, address);
|
||||
- if (bcmerror)
|
||||
+ err = brcmf_sdiod_set_sbaddr_window(sdiodev, address);
|
||||
+ if (err)
|
||||
break;
|
||||
|
||||
brcmf_dbg(SDIO, "%s %d bytes at offset 0x%08x in window 0x%08x\n",
|
||||
@@ -785,9 +785,9 @@ brcmf_sdiod_ramrw(struct brcmf_sdio_dev
|
||||
skb_put(pkt, dsize);
|
||||
if (write)
|
||||
memcpy(pkt->data, data, dsize);
|
||||
- bcmerror = brcmf_sdiod_buffrw(sdiodev, SDIO_FUNC_1, write,
|
||||
- sdaddr, pkt);
|
||||
- if (bcmerror) {
|
||||
+ err = brcmf_sdiod_buffrw(sdiodev, SDIO_FUNC_1, write, sdaddr,
|
||||
+ pkt);
|
||||
+ if (err) {
|
||||
brcmf_err("membytes transfer failed\n");
|
||||
break;
|
||||
}
|
||||
@@ -814,7 +814,7 @@ brcmf_sdiod_ramrw(struct brcmf_sdio_dev
|
||||
|
||||
sdio_release_host(sdiodev->func[1]);
|
||||
|
||||
- return bcmerror;
|
||||
+ return err;
|
||||
}
|
||||
|
||||
int brcmf_sdiod_abort(struct brcmf_sdio_dev *sdiodev, u8 fn)
|
@ -0,0 +1,143 @@
|
||||
From 8f13c87ccc495e30de5f58bbda967f6edd5bec53 Mon Sep 17 00:00:00 2001
|
||||
From: Ian Molton <ian@mnementh.co.uk>
|
||||
Date: Fri, 8 Dec 2017 13:10:26 +0100
|
||||
Subject: [PATCH] brcmfmac: Split brcmf_sdiod_buffrw function up.
|
||||
|
||||
This function needs to be split up into separate read / write variants
|
||||
for clarity.
|
||||
|
||||
Signed-off-by: Ian Molton <ian@mnementh.co.uk>
|
||||
Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
.../wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 67 +++++++++++++++-------
|
||||
1 file changed, 45 insertions(+), 22 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||
@@ -414,8 +414,8 @@ void brcmf_sdiod_regwl(struct brcmf_sdio
|
||||
*ret = retval;
|
||||
}
|
||||
|
||||
-static int brcmf_sdiod_buffrw(struct brcmf_sdio_dev *sdiodev, uint fn,
|
||||
- bool write, u32 addr, struct sk_buff *pkt)
|
||||
+static int brcmf_sdiod_buff_read(struct brcmf_sdio_dev *sdiodev, uint fn,
|
||||
+ u32 addr, struct sk_buff *pkt)
|
||||
{
|
||||
unsigned int req_sz;
|
||||
int err;
|
||||
@@ -424,18 +424,36 @@ static int brcmf_sdiod_buffrw(struct brc
|
||||
req_sz = pkt->len + 3;
|
||||
req_sz &= (uint)~3;
|
||||
|
||||
- if (write)
|
||||
- err = sdio_memcpy_toio(sdiodev->func[fn], addr,
|
||||
- ((u8 *)(pkt->data)), req_sz);
|
||||
- else if (fn == 1)
|
||||
- err = sdio_memcpy_fromio(sdiodev->func[fn], ((u8 *)(pkt->data)),
|
||||
- addr, req_sz);
|
||||
+ if (fn == 1)
|
||||
+ err = sdio_memcpy_fromio(sdiodev->func[fn],
|
||||
+ ((u8 *)(pkt->data)), addr, req_sz);
|
||||
else
|
||||
/* function 2 read is FIFO operation */
|
||||
- err = sdio_readsb(sdiodev->func[fn], ((u8 *)(pkt->data)), addr,
|
||||
- req_sz);
|
||||
+ err = sdio_readsb(sdiodev->func[fn],
|
||||
+ ((u8 *)(pkt->data)), addr, req_sz);
|
||||
+
|
||||
+ if (err == -ENOMEDIUM)
|
||||
+ brcmf_sdiod_change_state(sdiodev, BRCMF_SDIOD_NOMEDIUM);
|
||||
+
|
||||
+ return err;
|
||||
+}
|
||||
+
|
||||
+static int brcmf_sdiod_buff_write(struct brcmf_sdio_dev *sdiodev, uint fn,
|
||||
+ u32 addr, struct sk_buff *pkt)
|
||||
+{
|
||||
+ unsigned int req_sz;
|
||||
+ int err;
|
||||
+
|
||||
+ /* Single skb use the standard mmc interface */
|
||||
+ req_sz = pkt->len + 3;
|
||||
+ req_sz &= (uint)~3;
|
||||
+
|
||||
+ err = sdio_memcpy_toio(sdiodev->func[fn], addr,
|
||||
+ ((u8 *)(pkt->data)), req_sz);
|
||||
+
|
||||
if (err == -ENOMEDIUM)
|
||||
brcmf_sdiod_change_state(sdiodev, BRCMF_SDIOD_NOMEDIUM);
|
||||
+
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -643,7 +661,7 @@ int brcmf_sdiod_recv_pkt(struct brcmf_sd
|
||||
if (err)
|
||||
goto done;
|
||||
|
||||
- err = brcmf_sdiod_buffrw(sdiodev, SDIO_FUNC_2, false, addr, pkt);
|
||||
+ err = brcmf_sdiod_buff_read(sdiodev, SDIO_FUNC_2, addr, pkt);
|
||||
|
||||
done:
|
||||
return err;
|
||||
@@ -665,14 +683,14 @@ int brcmf_sdiod_recv_chain(struct brcmf_
|
||||
goto done;
|
||||
|
||||
if (pktq->qlen == 1)
|
||||
- err = brcmf_sdiod_buffrw(sdiodev, SDIO_FUNC_2, false, addr,
|
||||
- pktq->next);
|
||||
+ err = brcmf_sdiod_buff_read(sdiodev, SDIO_FUNC_2, addr,
|
||||
+ pktq->next);
|
||||
else if (!sdiodev->sg_support) {
|
||||
glom_skb = brcmu_pkt_buf_get_skb(totlen);
|
||||
if (!glom_skb)
|
||||
return -ENOMEM;
|
||||
- err = brcmf_sdiod_buffrw(sdiodev, SDIO_FUNC_2, false, addr,
|
||||
- glom_skb);
|
||||
+ err = brcmf_sdiod_buff_read(sdiodev, SDIO_FUNC_2, addr,
|
||||
+ glom_skb);
|
||||
if (err)
|
||||
goto done;
|
||||
|
||||
@@ -707,8 +725,7 @@ int brcmf_sdiod_send_buf(struct brcmf_sd
|
||||
err = brcmf_sdiod_addrprep(sdiodev, &addr);
|
||||
|
||||
if (!err)
|
||||
- err = brcmf_sdiod_buffrw(sdiodev, SDIO_FUNC_2, true, addr,
|
||||
- mypkt);
|
||||
+ err = brcmf_sdiod_buff_write(sdiodev, SDIO_FUNC_2, addr, mypkt);
|
||||
|
||||
brcmu_pkt_buf_free_skb(mypkt);
|
||||
return err;
|
||||
@@ -730,8 +747,8 @@ int brcmf_sdiod_send_pkt(struct brcmf_sd
|
||||
|
||||
if (pktq->qlen == 1 || !sdiodev->sg_support)
|
||||
skb_queue_walk(pktq, skb) {
|
||||
- err = brcmf_sdiod_buffrw(sdiodev, SDIO_FUNC_2, true,
|
||||
- addr, skb);
|
||||
+ err = brcmf_sdiod_buff_write(sdiodev, SDIO_FUNC_2,
|
||||
+ addr, skb);
|
||||
if (err)
|
||||
break;
|
||||
}
|
||||
@@ -783,10 +800,16 @@ brcmf_sdiod_ramrw(struct brcmf_sdio_dev
|
||||
sdaddr |= SBSDIO_SB_ACCESS_2_4B_FLAG;
|
||||
|
||||
skb_put(pkt, dsize);
|
||||
- if (write)
|
||||
+
|
||||
+ if (write) {
|
||||
memcpy(pkt->data, data, dsize);
|
||||
- err = brcmf_sdiod_buffrw(sdiodev, SDIO_FUNC_1, write, sdaddr,
|
||||
- pkt);
|
||||
+ err = brcmf_sdiod_buff_write(sdiodev, SDIO_FUNC_1,
|
||||
+ sdaddr, pkt);
|
||||
+ } else {
|
||||
+ err = brcmf_sdiod_buff_read(sdiodev, SDIO_FUNC_1,
|
||||
+ sdaddr, pkt);
|
||||
+ }
|
||||
+
|
||||
if (err) {
|
||||
brcmf_err("membytes transfer failed\n");
|
||||
break;
|
@ -0,0 +1,34 @@
|
||||
From 6e24dd012bfda479d0046f7995058f167e1923bc Mon Sep 17 00:00:00 2001
|
||||
From: Ian Molton <ian@mnementh.co.uk>
|
||||
Date: Fri, 8 Dec 2017 13:10:27 +0100
|
||||
Subject: [PATCH] brcmfmac: whitespace fixes in brcmf_sdiod_send_buf()
|
||||
|
||||
Signed-off-by: Ian Molton <ian@mnementh.co.uk>
|
||||
Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
[arend: mention function in patch subject]
|
||||
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||
@@ -714,6 +714,7 @@ int brcmf_sdiod_send_buf(struct brcmf_sd
|
||||
int err;
|
||||
|
||||
mypkt = brcmu_pkt_buf_get_skb(nbytes);
|
||||
+
|
||||
if (!mypkt) {
|
||||
brcmf_err("brcmu_pkt_buf_get_skb failed: len %d\n",
|
||||
nbytes);
|
||||
@@ -728,8 +729,8 @@ int brcmf_sdiod_send_buf(struct brcmf_sd
|
||||
err = brcmf_sdiod_buff_write(sdiodev, SDIO_FUNC_2, addr, mypkt);
|
||||
|
||||
brcmu_pkt_buf_free_skb(mypkt);
|
||||
- return err;
|
||||
|
||||
+ return err;
|
||||
}
|
||||
|
||||
int brcmf_sdiod_send_pkt(struct brcmf_sdio_dev *sdiodev,
|
@ -0,0 +1,36 @@
|
||||
From a7323378dcf1f10a98f47b744e6f65e6fd671d84 Mon Sep 17 00:00:00 2001
|
||||
From: Ian Molton <ian@mnementh.co.uk>
|
||||
Date: Fri, 8 Dec 2017 13:10:28 +0100
|
||||
Subject: [PATCH] brcmfmac: Clarify if using braces.
|
||||
|
||||
Whilst this if () statement is technically correct, it lacks clarity.
|
||||
|
||||
Signed-off-by: Ian Molton <ian@mnementh.co.uk>
|
||||
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||
@@ -746,16 +746,17 @@ int brcmf_sdiod_send_pkt(struct brcmf_sd
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
- if (pktq->qlen == 1 || !sdiodev->sg_support)
|
||||
+ if (pktq->qlen == 1 || !sdiodev->sg_support) {
|
||||
skb_queue_walk(pktq, skb) {
|
||||
err = brcmf_sdiod_buff_write(sdiodev, SDIO_FUNC_2,
|
||||
addr, skb);
|
||||
if (err)
|
||||
break;
|
||||
}
|
||||
- else
|
||||
+ } else {
|
||||
err = brcmf_sdiod_sglist_rw(sdiodev, SDIO_FUNC_2, true, addr,
|
||||
pktq);
|
||||
+ }
|
||||
|
||||
return err;
|
||||
}
|
@ -0,0 +1,831 @@
|
||||
From 71bd508d7ded8c504ef05d1b4befecfe25e54cb1 Mon Sep 17 00:00:00 2001
|
||||
From: Ian Molton <ian@mnementh.co.uk>
|
||||
Date: Fri, 8 Dec 2017 13:10:29 +0100
|
||||
Subject: [PATCH] brcmfmac: Rename / replace old IO functions with simpler
|
||||
ones.
|
||||
|
||||
Primarily this patch removes:
|
||||
|
||||
brcmf_sdiod_f0_writeb()
|
||||
brcmf_sdiod_reg_write()
|
||||
brcmf_sdiod_reg_read()
|
||||
|
||||
Since we no longer use the quirky method of deciding which function to
|
||||
address via the address being accessed, take the opportunity to rename
|
||||
some IO functions more in line with common kernel code. We also convert
|
||||
those that map directly to sdio_{read,write}*() to macros.
|
||||
|
||||
Signed-off-by: Ian Molton <ian@mnementh.co.uk>
|
||||
Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
.../wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 169 +++----------------
|
||||
.../wireless/broadcom/brcm80211/brcmfmac/sdio.c | 186 ++++++++++-----------
|
||||
.../wireless/broadcom/brcm80211/brcmfmac/sdio.h | 28 +++-
|
||||
3 files changed, 138 insertions(+), 245 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||
@@ -137,27 +137,27 @@ int brcmf_sdiod_intr_register(struct brc
|
||||
if (sdiodev->bus_if->chip == BRCM_CC_43362_CHIP_ID) {
|
||||
/* assign GPIO to SDIO core */
|
||||
addr = CORE_CC_REG(SI_ENUM_BASE, gpiocontrol);
|
||||
- gpiocontrol = brcmf_sdiod_regrl(sdiodev, addr, &ret);
|
||||
+ gpiocontrol = brcmf_sdiod_readl(sdiodev, addr, &ret);
|
||||
gpiocontrol |= 0x2;
|
||||
- brcmf_sdiod_regwl(sdiodev, addr, gpiocontrol, &ret);
|
||||
+ brcmf_sdiod_writel(sdiodev, addr, gpiocontrol, &ret);
|
||||
|
||||
- brcmf_sdiod_regwb(sdiodev, SBSDIO_GPIO_SELECT, 0xf,
|
||||
- &ret);
|
||||
- brcmf_sdiod_regwb(sdiodev, SBSDIO_GPIO_OUT, 0, &ret);
|
||||
- brcmf_sdiod_regwb(sdiodev, SBSDIO_GPIO_EN, 0x2, &ret);
|
||||
+ brcmf_sdiod_writeb(sdiodev, SBSDIO_GPIO_SELECT,
|
||||
+ 0xf, &ret);
|
||||
+ brcmf_sdiod_writeb(sdiodev, SBSDIO_GPIO_OUT, 0, &ret);
|
||||
+ brcmf_sdiod_writeb(sdiodev, SBSDIO_GPIO_EN, 0x2, &ret);
|
||||
}
|
||||
|
||||
/* must configure SDIO_CCCR_IENx to enable irq */
|
||||
- data = brcmf_sdiod_regrb(sdiodev, SDIO_CCCR_IENx, &ret);
|
||||
+ data = brcmf_sdiod_func0_rb(sdiodev, SDIO_CCCR_IENx, &ret);
|
||||
data |= 1 << SDIO_FUNC_1 | 1 << SDIO_FUNC_2 | 1;
|
||||
- brcmf_sdiod_regwb(sdiodev, SDIO_CCCR_IENx, data, &ret);
|
||||
+ brcmf_sdiod_func0_wb(sdiodev, SDIO_CCCR_IENx, data, &ret);
|
||||
|
||||
/* redirect, configure and enable io for interrupt signal */
|
||||
data = SDIO_SEPINT_MASK | SDIO_SEPINT_OE;
|
||||
if (pdata->oob_irq_flags & IRQF_TRIGGER_HIGH)
|
||||
data |= SDIO_SEPINT_ACT_HI;
|
||||
- brcmf_sdiod_regwb(sdiodev, SDIO_CCCR_BRCM_SEPINT, data, &ret);
|
||||
-
|
||||
+ brcmf_sdiod_func0_wb(sdiodev, SDIO_CCCR_BRCM_SEPINT,
|
||||
+ data, &ret);
|
||||
sdio_release_host(sdiodev->func[1]);
|
||||
} else {
|
||||
brcmf_dbg(SDIO, "Entering\n");
|
||||
@@ -183,8 +183,8 @@ void brcmf_sdiod_intr_unregister(struct
|
||||
|
||||
pdata = &sdiodev->settings->bus.sdio;
|
||||
sdio_claim_host(sdiodev->func[1]);
|
||||
- brcmf_sdiod_regwb(sdiodev, SDIO_CCCR_BRCM_SEPINT, 0, NULL);
|
||||
- brcmf_sdiod_regwb(sdiodev, SDIO_CCCR_IENx, 0, NULL);
|
||||
+ brcmf_sdiod_func0_wb(sdiodev, SDIO_CCCR_BRCM_SEPINT, 0, NULL);
|
||||
+ brcmf_sdiod_func0_wb(sdiodev, SDIO_CCCR_IENx, 0, NULL);
|
||||
sdio_release_host(sdiodev->func[1]);
|
||||
|
||||
sdiodev->oob_irq_requested = false;
|
||||
@@ -242,8 +242,8 @@ static int brcmf_sdiod_set_sbaddr_window
|
||||
addr = (address & SBSDIO_SBWINDOW_MASK) >> 8;
|
||||
|
||||
for (i = 0 ; i < 3 && !err ; i++, addr >>= 8)
|
||||
- brcmf_sdiod_regwb(sdiodev, SBSDIO_FUNC1_SBADDRLOW + i,
|
||||
- addr & 0xff, &err);
|
||||
+ brcmf_sdiod_writeb(sdiodev, SBSDIO_FUNC1_SBADDRLOW + i,
|
||||
+ addr & 0xff, &err);
|
||||
|
||||
return err;
|
||||
}
|
||||
@@ -267,124 +267,15 @@ static int brcmf_sdiod_addrprep(struct b
|
||||
return 0;
|
||||
}
|
||||
|
||||
-static inline int brcmf_sdiod_f0_writeb(struct sdio_func *func, u8 byte,
|
||||
- uint regaddr)
|
||||
-{
|
||||
- int err_ret;
|
||||
-
|
||||
- /*
|
||||
- * Can only directly write to some F0 registers.
|
||||
- * Handle CCCR_IENx and CCCR_ABORT command
|
||||
- * as a special case.
|
||||
- */
|
||||
- if ((regaddr == SDIO_CCCR_ABORT) ||
|
||||
- (regaddr == SDIO_CCCR_IENx))
|
||||
- sdio_writeb(func, byte, regaddr, &err_ret);
|
||||
- else
|
||||
- sdio_f0_writeb(func, byte, regaddr, &err_ret);
|
||||
-
|
||||
- return err_ret;
|
||||
-}
|
||||
-
|
||||
-static int brcmf_sdiod_reg_write(struct brcmf_sdio_dev *sdiodev, u32 addr,
|
||||
- u8 regsz, void *data)
|
||||
-{
|
||||
- int ret;
|
||||
-
|
||||
- /*
|
||||
- * figure out how to read the register based on address range
|
||||
- * 0x00 ~ 0x7FF: function 0 CCCR and FBR
|
||||
- * 0x10000 ~ 0x1FFFF: function 1 miscellaneous registers
|
||||
- * The rest: function 1 silicon backplane core registers
|
||||
- * f0 writes must be bytewise
|
||||
- */
|
||||
-
|
||||
- if ((addr & ~REG_F0_REG_MASK) == 0) {
|
||||
- if (WARN_ON(regsz > 1))
|
||||
- return -EINVAL;
|
||||
- ret = brcmf_sdiod_f0_writeb(sdiodev->func[0],
|
||||
- *(u8 *)data, addr);
|
||||
- } else {
|
||||
- switch (regsz) {
|
||||
- case 1:
|
||||
- sdio_writeb(sdiodev->func[1], *(u8 *)data, addr, &ret);
|
||||
- break;
|
||||
- case 4:
|
||||
- ret = brcmf_sdiod_addrprep(sdiodev, &addr);
|
||||
- if (ret)
|
||||
- goto done;
|
||||
-
|
||||
- sdio_writel(sdiodev->func[1], *(u32 *)data, addr, &ret);
|
||||
- break;
|
||||
- default:
|
||||
- WARN(1, "Invalid reg size\n");
|
||||
- ret = -EINVAL;
|
||||
- break;
|
||||
- }
|
||||
- }
|
||||
-
|
||||
-done:
|
||||
- return ret;
|
||||
-}
|
||||
-
|
||||
-static int brcmf_sdiod_reg_read(struct brcmf_sdio_dev *sdiodev, u32 addr,
|
||||
- u8 regsz, void *data)
|
||||
-{
|
||||
- int ret;
|
||||
-
|
||||
- /*
|
||||
- * figure out how to read the register based on address range
|
||||
- * 0x00 ~ 0x7FF: function 0 CCCR and FBR
|
||||
- * 0x10000 ~ 0x1FFFF: function 1 miscellaneous registers
|
||||
- * The rest: function 1 silicon backplane core registers
|
||||
- * f0 reads must be bytewise
|
||||
- */
|
||||
- if ((addr & ~REG_F0_REG_MASK) == 0) {
|
||||
- if (WARN_ON(regsz > 1))
|
||||
- return -EINVAL;
|
||||
- *(u8 *)data = sdio_f0_readb(sdiodev->func[0], addr, &ret);
|
||||
- } else {
|
||||
- switch (regsz) {
|
||||
- case 1:
|
||||
- *(u8 *)data = sdio_readb(sdiodev->func[1], addr, &ret);
|
||||
- break;
|
||||
- case 4:
|
||||
- ret = brcmf_sdiod_addrprep(sdiodev, &addr);
|
||||
- if (ret)
|
||||
- goto done;
|
||||
-
|
||||
- *(u32 *)data = sdio_readl(sdiodev->func[1], addr, &ret);
|
||||
- break;
|
||||
- default:
|
||||
- WARN(1, "Invalid reg size\n");
|
||||
- ret = -EINVAL;
|
||||
- break;
|
||||
- }
|
||||
- }
|
||||
-
|
||||
-done:
|
||||
- return ret;
|
||||
-}
|
||||
-
|
||||
-u8 brcmf_sdiod_regrb(struct brcmf_sdio_dev *sdiodev, u32 addr, int *ret)
|
||||
+u32 brcmf_sdiod_readl(struct brcmf_sdio_dev *sdiodev, u32 addr, int *ret)
|
||||
{
|
||||
- u8 data;
|
||||
+ u32 data = 0;
|
||||
int retval;
|
||||
|
||||
- retval = brcmf_sdiod_reg_read(sdiodev, addr, 1, &data);
|
||||
+ retval = brcmf_sdiod_addrprep(sdiodev, &addr);
|
||||
|
||||
- if (ret)
|
||||
- *ret = retval;
|
||||
-
|
||||
- return data;
|
||||
-}
|
||||
-
|
||||
-u32 brcmf_sdiod_regrl(struct brcmf_sdio_dev *sdiodev, u32 addr, int *ret)
|
||||
-{
|
||||
- u32 data;
|
||||
- int retval;
|
||||
-
|
||||
- retval = brcmf_sdiod_reg_read(sdiodev, addr, 4, &data);
|
||||
+ if (!retval)
|
||||
+ data = sdio_readl(sdiodev->func[1], addr, &retval);
|
||||
|
||||
if (ret)
|
||||
*ret = retval;
|
||||
@@ -392,23 +283,15 @@ u32 brcmf_sdiod_regrl(struct brcmf_sdio_
|
||||
return data;
|
||||
}
|
||||
|
||||
-void brcmf_sdiod_regwb(struct brcmf_sdio_dev *sdiodev, u32 addr,
|
||||
- u8 data, int *ret)
|
||||
+void brcmf_sdiod_writel(struct brcmf_sdio_dev *sdiodev, u32 addr,
|
||||
+ u32 data, int *ret)
|
||||
{
|
||||
int retval;
|
||||
|
||||
- retval = brcmf_sdiod_reg_write(sdiodev, addr, 1, &data);
|
||||
-
|
||||
- if (ret)
|
||||
- *ret = retval;
|
||||
-}
|
||||
-
|
||||
-void brcmf_sdiod_regwl(struct brcmf_sdio_dev *sdiodev, u32 addr,
|
||||
- u32 data, int *ret)
|
||||
-{
|
||||
- int retval;
|
||||
+ retval = brcmf_sdiod_addrprep(sdiodev, &addr);
|
||||
|
||||
- retval = brcmf_sdiod_reg_write(sdiodev, addr, 4, &data);
|
||||
+ if (!retval)
|
||||
+ sdio_writel(sdiodev->func[1], data, addr, &retval);
|
||||
|
||||
if (ret)
|
||||
*ret = retval;
|
||||
@@ -846,8 +729,8 @@ int brcmf_sdiod_abort(struct brcmf_sdio_
|
||||
{
|
||||
brcmf_dbg(SDIO, "Enter\n");
|
||||
|
||||
- /* issue abort cmd52 command through F0 */
|
||||
- brcmf_sdiod_reg_write(sdiodev, SDIO_CCCR_ABORT, 1, &fn);
|
||||
+ /* Issue abort cmd52 command through F0 */
|
||||
+ brcmf_sdiod_func0_wb(sdiodev, SDIO_CCCR_ABORT, fn, NULL);
|
||||
|
||||
brcmf_dbg(SDIO, "Exit\n");
|
||||
return 0;
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||
@@ -669,7 +669,7 @@ static int r_sdreg32(struct brcmf_sdio *
|
||||
int ret;
|
||||
|
||||
core = brcmf_chip_get_core(bus->ci, BCMA_CORE_SDIO_DEV);
|
||||
- *regvar = brcmf_sdiod_regrl(bus->sdiodev, core->base + offset, &ret);
|
||||
+ *regvar = brcmf_sdiod_readl(bus->sdiodev, core->base + offset, &ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -680,7 +680,7 @@ static int w_sdreg32(struct brcmf_sdio *
|
||||
int ret;
|
||||
|
||||
core = brcmf_chip_get_core(bus->ci, BCMA_CORE_SDIO_DEV);
|
||||
- brcmf_sdiod_regwl(bus->sdiodev, core->base + reg_offset, regval, &ret);
|
||||
+ brcmf_sdiod_writel(bus->sdiodev, core->base + reg_offset, regval, &ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -697,8 +697,7 @@ brcmf_sdio_kso_control(struct brcmf_sdio
|
||||
|
||||
wr_val = (on << SBSDIO_FUNC1_SLEEPCSR_KSO_SHIFT);
|
||||
/* 1st KSO write goes to AOS wake up core if device is asleep */
|
||||
- brcmf_sdiod_regwb(bus->sdiodev, SBSDIO_FUNC1_SLEEPCSR,
|
||||
- wr_val, &err);
|
||||
+ brcmf_sdiod_writeb(bus->sdiodev, SBSDIO_FUNC1_SLEEPCSR, wr_val, &err);
|
||||
|
||||
if (on) {
|
||||
/* device WAKEUP through KSO:
|
||||
@@ -724,7 +723,7 @@ brcmf_sdio_kso_control(struct brcmf_sdio
|
||||
* just one write attempt may fail,
|
||||
* read it back until it matches written value
|
||||
*/
|
||||
- rd_val = brcmf_sdiod_regrb(bus->sdiodev, SBSDIO_FUNC1_SLEEPCSR,
|
||||
+ rd_val = brcmf_sdiod_readb(bus->sdiodev, SBSDIO_FUNC1_SLEEPCSR,
|
||||
&err);
|
||||
if (!err) {
|
||||
if ((rd_val & bmask) == cmp_val)
|
||||
@@ -734,9 +733,11 @@ brcmf_sdio_kso_control(struct brcmf_sdio
|
||||
/* bail out upon subsequent access errors */
|
||||
if (err && (err_cnt++ > BRCMF_SDIO_MAX_ACCESS_ERRORS))
|
||||
break;
|
||||
+
|
||||
udelay(KSO_WAIT_US);
|
||||
- brcmf_sdiod_regwb(bus->sdiodev, SBSDIO_FUNC1_SLEEPCSR,
|
||||
- wr_val, &err);
|
||||
+ brcmf_sdiod_writeb(bus->sdiodev, SBSDIO_FUNC1_SLEEPCSR, wr_val,
|
||||
+ &err);
|
||||
+
|
||||
} while (try_cnt++ < MAX_KSO_ATTEMPTS);
|
||||
|
||||
if (try_cnt > 2)
|
||||
@@ -772,15 +773,15 @@ static int brcmf_sdio_htclk(struct brcmf
|
||||
clkreq =
|
||||
bus->alp_only ? SBSDIO_ALP_AVAIL_REQ : SBSDIO_HT_AVAIL_REQ;
|
||||
|
||||
- brcmf_sdiod_regwb(bus->sdiodev, SBSDIO_FUNC1_CHIPCLKCSR,
|
||||
- clkreq, &err);
|
||||
+ brcmf_sdiod_writeb(bus->sdiodev, SBSDIO_FUNC1_CHIPCLKCSR,
|
||||
+ clkreq, &err);
|
||||
if (err) {
|
||||
brcmf_err("HT Avail request error: %d\n", err);
|
||||
return -EBADE;
|
||||
}
|
||||
|
||||
/* Check current status */
|
||||
- clkctl = brcmf_sdiod_regrb(bus->sdiodev,
|
||||
+ clkctl = brcmf_sdiod_readb(bus->sdiodev,
|
||||
SBSDIO_FUNC1_CHIPCLKCSR, &err);
|
||||
if (err) {
|
||||
brcmf_err("HT Avail read error: %d\n", err);
|
||||
@@ -790,35 +791,34 @@ static int brcmf_sdio_htclk(struct brcmf
|
||||
/* Go to pending and await interrupt if appropriate */
|
||||
if (!SBSDIO_CLKAV(clkctl, bus->alp_only) && pendok) {
|
||||
/* Allow only clock-available interrupt */
|
||||
- devctl = brcmf_sdiod_regrb(bus->sdiodev,
|
||||
+ devctl = brcmf_sdiod_readb(bus->sdiodev,
|
||||
SBSDIO_DEVICE_CTL, &err);
|
||||
if (err) {
|
||||
- brcmf_err("Devctl error setting CA: %d\n",
|
||||
- err);
|
||||
+ brcmf_err("Devctl error setting CA: %d\n", err);
|
||||
return -EBADE;
|
||||
}
|
||||
|
||||
devctl |= SBSDIO_DEVCTL_CA_INT_ONLY;
|
||||
- brcmf_sdiod_regwb(bus->sdiodev, SBSDIO_DEVICE_CTL,
|
||||
- devctl, &err);
|
||||
+ brcmf_sdiod_writeb(bus->sdiodev, SBSDIO_DEVICE_CTL,
|
||||
+ devctl, &err);
|
||||
brcmf_dbg(SDIO, "CLKCTL: set PENDING\n");
|
||||
bus->clkstate = CLK_PENDING;
|
||||
|
||||
return 0;
|
||||
} else if (bus->clkstate == CLK_PENDING) {
|
||||
/* Cancel CA-only interrupt filter */
|
||||
- devctl = brcmf_sdiod_regrb(bus->sdiodev,
|
||||
+ devctl = brcmf_sdiod_readb(bus->sdiodev,
|
||||
SBSDIO_DEVICE_CTL, &err);
|
||||
devctl &= ~SBSDIO_DEVCTL_CA_INT_ONLY;
|
||||
- brcmf_sdiod_regwb(bus->sdiodev, SBSDIO_DEVICE_CTL,
|
||||
- devctl, &err);
|
||||
+ brcmf_sdiod_writeb(bus->sdiodev, SBSDIO_DEVICE_CTL,
|
||||
+ devctl, &err);
|
||||
}
|
||||
|
||||
/* Otherwise, wait here (polling) for HT Avail */
|
||||
timeout = jiffies +
|
||||
msecs_to_jiffies(PMU_MAX_TRANSITION_DLY/1000);
|
||||
while (!SBSDIO_CLKAV(clkctl, bus->alp_only)) {
|
||||
- clkctl = brcmf_sdiod_regrb(bus->sdiodev,
|
||||
+ clkctl = brcmf_sdiod_readb(bus->sdiodev,
|
||||
SBSDIO_FUNC1_CHIPCLKCSR,
|
||||
&err);
|
||||
if (time_after(jiffies, timeout))
|
||||
@@ -852,16 +852,16 @@ static int brcmf_sdio_htclk(struct brcmf
|
||||
|
||||
if (bus->clkstate == CLK_PENDING) {
|
||||
/* Cancel CA-only interrupt filter */
|
||||
- devctl = brcmf_sdiod_regrb(bus->sdiodev,
|
||||
+ devctl = brcmf_sdiod_readb(bus->sdiodev,
|
||||
SBSDIO_DEVICE_CTL, &err);
|
||||
devctl &= ~SBSDIO_DEVCTL_CA_INT_ONLY;
|
||||
- brcmf_sdiod_regwb(bus->sdiodev, SBSDIO_DEVICE_CTL,
|
||||
- devctl, &err);
|
||||
+ brcmf_sdiod_writeb(bus->sdiodev, SBSDIO_DEVICE_CTL,
|
||||
+ devctl, &err);
|
||||
}
|
||||
|
||||
bus->clkstate = CLK_SDONLY;
|
||||
- brcmf_sdiod_regwb(bus->sdiodev, SBSDIO_FUNC1_CHIPCLKCSR,
|
||||
- clkreq, &err);
|
||||
+ brcmf_sdiod_writeb(bus->sdiodev, SBSDIO_FUNC1_CHIPCLKCSR,
|
||||
+ clkreq, &err);
|
||||
brcmf_dbg(SDIO, "CLKCTL: turned OFF\n");
|
||||
if (err) {
|
||||
brcmf_err("Failed access turning clock off: %d\n",
|
||||
@@ -951,14 +951,14 @@ brcmf_sdio_bus_sleep(struct brcmf_sdio *
|
||||
|
||||
/* Going to sleep */
|
||||
if (sleep) {
|
||||
- clkcsr = brcmf_sdiod_regrb(bus->sdiodev,
|
||||
+ clkcsr = brcmf_sdiod_readb(bus->sdiodev,
|
||||
SBSDIO_FUNC1_CHIPCLKCSR,
|
||||
&err);
|
||||
if ((clkcsr & SBSDIO_CSR_MASK) == 0) {
|
||||
brcmf_dbg(SDIO, "no clock, set ALP\n");
|
||||
- brcmf_sdiod_regwb(bus->sdiodev,
|
||||
- SBSDIO_FUNC1_CHIPCLKCSR,
|
||||
- SBSDIO_ALP_AVAIL_REQ, &err);
|
||||
+ brcmf_sdiod_writeb(bus->sdiodev,
|
||||
+ SBSDIO_FUNC1_CHIPCLKCSR,
|
||||
+ SBSDIO_ALP_AVAIL_REQ, &err);
|
||||
}
|
||||
err = brcmf_sdio_kso_control(bus, false);
|
||||
} else {
|
||||
@@ -1178,16 +1178,16 @@ static void brcmf_sdio_rxfail(struct brc
|
||||
if (abort)
|
||||
brcmf_sdiod_abort(bus->sdiodev, SDIO_FUNC_2);
|
||||
|
||||
- brcmf_sdiod_regwb(bus->sdiodev, SBSDIO_FUNC1_FRAMECTRL,
|
||||
- SFC_RF_TERM, &err);
|
||||
+ brcmf_sdiod_writeb(bus->sdiodev, SBSDIO_FUNC1_FRAMECTRL, SFC_RF_TERM,
|
||||
+ &err);
|
||||
bus->sdcnt.f1regdata++;
|
||||
|
||||
/* Wait until the packet has been flushed (device/FIFO stable) */
|
||||
for (lastrbc = retries = 0xffff; retries > 0; retries--) {
|
||||
- hi = brcmf_sdiod_regrb(bus->sdiodev,
|
||||
- SBSDIO_FUNC1_RFRAMEBCHI, &err);
|
||||
- lo = brcmf_sdiod_regrb(bus->sdiodev,
|
||||
- SBSDIO_FUNC1_RFRAMEBCLO, &err);
|
||||
+ hi = brcmf_sdiod_readb(bus->sdiodev, SBSDIO_FUNC1_RFRAMEBCHI,
|
||||
+ &err);
|
||||
+ lo = brcmf_sdiod_readb(bus->sdiodev, SBSDIO_FUNC1_RFRAMEBCLO,
|
||||
+ &err);
|
||||
bus->sdcnt.f1regdata += 2;
|
||||
|
||||
if ((hi == 0) && (lo == 0))
|
||||
@@ -1229,12 +1229,12 @@ static void brcmf_sdio_txfail(struct brc
|
||||
bus->sdcnt.tx_sderrs++;
|
||||
|
||||
brcmf_sdiod_abort(sdiodev, SDIO_FUNC_2);
|
||||
- brcmf_sdiod_regwb(sdiodev, SBSDIO_FUNC1_FRAMECTRL, SFC_WF_TERM, NULL);
|
||||
+ brcmf_sdiod_writeb(sdiodev, SBSDIO_FUNC1_FRAMECTRL, SFC_WF_TERM, NULL);
|
||||
bus->sdcnt.f1regdata++;
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
- hi = brcmf_sdiod_regrb(sdiodev, SBSDIO_FUNC1_WFRAMEBCHI, NULL);
|
||||
- lo = brcmf_sdiod_regrb(sdiodev, SBSDIO_FUNC1_WFRAMEBCLO, NULL);
|
||||
+ hi = brcmf_sdiod_readb(sdiodev, SBSDIO_FUNC1_WFRAMEBCHI, NULL);
|
||||
+ lo = brcmf_sdiod_readb(sdiodev, SBSDIO_FUNC1_WFRAMEBCLO, NULL);
|
||||
bus->sdcnt.f1regdata += 2;
|
||||
if ((hi == 0) && (lo == 0))
|
||||
break;
|
||||
@@ -2446,11 +2446,11 @@ static void brcmf_sdio_bus_stop(struct d
|
||||
bus->hostintmask = 0;
|
||||
|
||||
/* Force backplane clocks to assure F2 interrupt propagates */
|
||||
- saveclk = brcmf_sdiod_regrb(sdiodev, SBSDIO_FUNC1_CHIPCLKCSR,
|
||||
+ saveclk = brcmf_sdiod_readb(sdiodev, SBSDIO_FUNC1_CHIPCLKCSR,
|
||||
&err);
|
||||
if (!err)
|
||||
- brcmf_sdiod_regwb(sdiodev, SBSDIO_FUNC1_CHIPCLKCSR,
|
||||
- (saveclk | SBSDIO_FORCE_HT), &err);
|
||||
+ brcmf_sdiod_writeb(sdiodev, SBSDIO_FUNC1_CHIPCLKCSR,
|
||||
+ (saveclk | SBSDIO_FORCE_HT), &err);
|
||||
if (err)
|
||||
brcmf_err("Failed to force clock for F2: err %d\n",
|
||||
err);
|
||||
@@ -2509,7 +2509,7 @@ static int brcmf_sdio_intr_rstatus(struc
|
||||
buscore = brcmf_chip_get_core(bus->ci, BCMA_CORE_SDIO_DEV);
|
||||
addr = buscore->base + offsetof(struct sdpcmd_regs, intstatus);
|
||||
|
||||
- val = brcmf_sdiod_regrl(bus->sdiodev, addr, &ret);
|
||||
+ val = brcmf_sdiod_readl(bus->sdiodev, addr, &ret);
|
||||
bus->sdcnt.f1regdata++;
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
@@ -2519,7 +2519,7 @@ static int brcmf_sdio_intr_rstatus(struc
|
||||
|
||||
/* Clear interrupts */
|
||||
if (val) {
|
||||
- brcmf_sdiod_regwl(bus->sdiodev, addr, val, &ret);
|
||||
+ brcmf_sdiod_writel(bus->sdiodev, addr, val, &ret);
|
||||
bus->sdcnt.f1regdata++;
|
||||
atomic_or(val, &bus->intstatus);
|
||||
}
|
||||
@@ -2545,23 +2545,23 @@ static void brcmf_sdio_dpc(struct brcmf_
|
||||
|
||||
#ifdef DEBUG
|
||||
/* Check for inconsistent device control */
|
||||
- devctl = brcmf_sdiod_regrb(bus->sdiodev,
|
||||
- SBSDIO_DEVICE_CTL, &err);
|
||||
+ devctl = brcmf_sdiod_readb(bus->sdiodev, SBSDIO_DEVICE_CTL,
|
||||
+ &err);
|
||||
#endif /* DEBUG */
|
||||
|
||||
/* Read CSR, if clock on switch to AVAIL, else ignore */
|
||||
- clkctl = brcmf_sdiod_regrb(bus->sdiodev,
|
||||
+ clkctl = brcmf_sdiod_readb(bus->sdiodev,
|
||||
SBSDIO_FUNC1_CHIPCLKCSR, &err);
|
||||
|
||||
brcmf_dbg(SDIO, "DPC: PENDING, devctl 0x%02x clkctl 0x%02x\n",
|
||||
devctl, clkctl);
|
||||
|
||||
if (SBSDIO_HTAV(clkctl)) {
|
||||
- devctl = brcmf_sdiod_regrb(bus->sdiodev,
|
||||
+ devctl = brcmf_sdiod_readb(bus->sdiodev,
|
||||
SBSDIO_DEVICE_CTL, &err);
|
||||
devctl &= ~SBSDIO_DEVCTL_CA_INT_ONLY;
|
||||
- brcmf_sdiod_regwb(bus->sdiodev, SBSDIO_DEVICE_CTL,
|
||||
- devctl, &err);
|
||||
+ brcmf_sdiod_writeb(bus->sdiodev,
|
||||
+ SBSDIO_DEVICE_CTL, devctl, &err);
|
||||
bus->clkstate = CLK_AVAIL;
|
||||
}
|
||||
}
|
||||
@@ -3347,31 +3347,31 @@ static void brcmf_sdio_sr_init(struct br
|
||||
|
||||
brcmf_dbg(TRACE, "Enter\n");
|
||||
|
||||
- val = brcmf_sdiod_regrb(bus->sdiodev, SBSDIO_FUNC1_WAKEUPCTRL, &err);
|
||||
+ val = brcmf_sdiod_readb(bus->sdiodev, SBSDIO_FUNC1_WAKEUPCTRL, &err);
|
||||
if (err) {
|
||||
brcmf_err("error reading SBSDIO_FUNC1_WAKEUPCTRL\n");
|
||||
return;
|
||||
}
|
||||
|
||||
val |= 1 << SBSDIO_FUNC1_WCTRL_HTWAIT_SHIFT;
|
||||
- brcmf_sdiod_regwb(bus->sdiodev, SBSDIO_FUNC1_WAKEUPCTRL, val, &err);
|
||||
+ brcmf_sdiod_writeb(bus->sdiodev, SBSDIO_FUNC1_WAKEUPCTRL, val, &err);
|
||||
if (err) {
|
||||
brcmf_err("error writing SBSDIO_FUNC1_WAKEUPCTRL\n");
|
||||
return;
|
||||
}
|
||||
|
||||
/* Add CMD14 Support */
|
||||
- brcmf_sdiod_regwb(bus->sdiodev, SDIO_CCCR_BRCM_CARDCAP,
|
||||
- (SDIO_CCCR_BRCM_CARDCAP_CMD14_SUPPORT |
|
||||
- SDIO_CCCR_BRCM_CARDCAP_CMD14_EXT),
|
||||
- &err);
|
||||
+ brcmf_sdiod_func0_wb(bus->sdiodev, SDIO_CCCR_BRCM_CARDCAP,
|
||||
+ (SDIO_CCCR_BRCM_CARDCAP_CMD14_SUPPORT |
|
||||
+ SDIO_CCCR_BRCM_CARDCAP_CMD14_EXT),
|
||||
+ &err);
|
||||
if (err) {
|
||||
brcmf_err("error writing SDIO_CCCR_BRCM_CARDCAP\n");
|
||||
return;
|
||||
}
|
||||
|
||||
- brcmf_sdiod_regwb(bus->sdiodev, SBSDIO_FUNC1_CHIPCLKCSR,
|
||||
- SBSDIO_FORCE_HT, &err);
|
||||
+ brcmf_sdiod_writeb(bus->sdiodev, SBSDIO_FUNC1_CHIPCLKCSR,
|
||||
+ SBSDIO_FORCE_HT, &err);
|
||||
if (err) {
|
||||
brcmf_err("error writing SBSDIO_FUNC1_CHIPCLKCSR\n");
|
||||
return;
|
||||
@@ -3394,7 +3394,7 @@ static int brcmf_sdio_kso_init(struct br
|
||||
if (brcmf_chip_get_core(bus->ci, BCMA_CORE_SDIO_DEV)->rev < 12)
|
||||
return 0;
|
||||
|
||||
- val = brcmf_sdiod_regrb(bus->sdiodev, SBSDIO_FUNC1_SLEEPCSR, &err);
|
||||
+ val = brcmf_sdiod_readb(bus->sdiodev, SBSDIO_FUNC1_SLEEPCSR, &err);
|
||||
if (err) {
|
||||
brcmf_err("error reading SBSDIO_FUNC1_SLEEPCSR\n");
|
||||
return err;
|
||||
@@ -3403,8 +3403,8 @@ static int brcmf_sdio_kso_init(struct br
|
||||
if (!(val & SBSDIO_FUNC1_SLEEPCSR_KSO_MASK)) {
|
||||
val |= (SBSDIO_FUNC1_SLEEPCSR_KSO_EN <<
|
||||
SBSDIO_FUNC1_SLEEPCSR_KSO_SHIFT);
|
||||
- brcmf_sdiod_regwb(bus->sdiodev, SBSDIO_FUNC1_SLEEPCSR,
|
||||
- val, &err);
|
||||
+ brcmf_sdiod_writeb(bus->sdiodev, SBSDIO_FUNC1_SLEEPCSR,
|
||||
+ val, &err);
|
||||
if (err) {
|
||||
brcmf_err("error writing SBSDIO_FUNC1_SLEEPCSR\n");
|
||||
return err;
|
||||
@@ -3565,9 +3565,9 @@ static void brcmf_sdio_bus_watchdog(stru
|
||||
u8 devpend;
|
||||
|
||||
sdio_claim_host(bus->sdiodev->func[1]);
|
||||
- devpend = brcmf_sdiod_regrb(bus->sdiodev,
|
||||
- SDIO_CCCR_INTx,
|
||||
- NULL);
|
||||
+ devpend = brcmf_sdiod_func0_rb(bus->sdiodev,
|
||||
+ SDIO_CCCR_INTx,
|
||||
+ NULL);
|
||||
sdio_release_host(bus->sdiodev->func[1]);
|
||||
intstatus = devpend & (INTR_STATUS_FUNC1 |
|
||||
INTR_STATUS_FUNC2);
|
||||
@@ -3705,12 +3705,12 @@ brcmf_sdio_drivestrengthinit(struct brcm
|
||||
}
|
||||
}
|
||||
addr = CORE_CC_REG(pmu->base, chipcontrol_addr);
|
||||
- brcmf_sdiod_regwl(sdiodev, addr, 1, NULL);
|
||||
- cc_data_temp = brcmf_sdiod_regrl(sdiodev, addr, NULL);
|
||||
+ brcmf_sdiod_writel(sdiodev, addr, 1, NULL);
|
||||
+ cc_data_temp = brcmf_sdiod_readl(sdiodev, addr, NULL);
|
||||
cc_data_temp &= ~str_mask;
|
||||
drivestrength_sel <<= str_shift;
|
||||
cc_data_temp |= drivestrength_sel;
|
||||
- brcmf_sdiod_regwl(sdiodev, addr, cc_data_temp, NULL);
|
||||
+ brcmf_sdiod_writel(sdiodev, addr, cc_data_temp, NULL);
|
||||
|
||||
brcmf_dbg(INFO, "SDIO: %d mA (req=%d mA) drive strength selected, set to 0x%08x\n",
|
||||
str_tab[i].strength, drivestrength, cc_data_temp);
|
||||
@@ -3725,7 +3725,7 @@ static int brcmf_sdio_buscoreprep(void *
|
||||
|
||||
/* Try forcing SDIO core to do ALPAvail request only */
|
||||
clkset = SBSDIO_FORCE_HW_CLKREQ_OFF | SBSDIO_ALP_AVAIL_REQ;
|
||||
- brcmf_sdiod_regwb(sdiodev, SBSDIO_FUNC1_CHIPCLKCSR, clkset, &err);
|
||||
+ brcmf_sdiod_writeb(sdiodev, SBSDIO_FUNC1_CHIPCLKCSR, clkset, &err);
|
||||
if (err) {
|
||||
brcmf_err("error writing for HT off\n");
|
||||
return err;
|
||||
@@ -3733,8 +3733,7 @@ static int brcmf_sdio_buscoreprep(void *
|
||||
|
||||
/* If register supported, wait for ALPAvail and then force ALP */
|
||||
/* This may take up to 15 milliseconds */
|
||||
- clkval = brcmf_sdiod_regrb(sdiodev,
|
||||
- SBSDIO_FUNC1_CHIPCLKCSR, NULL);
|
||||
+ clkval = brcmf_sdiod_readb(sdiodev, SBSDIO_FUNC1_CHIPCLKCSR, NULL);
|
||||
|
||||
if ((clkval & ~SBSDIO_AVBITS) != clkset) {
|
||||
brcmf_err("ChipClkCSR access: wrote 0x%02x read 0x%02x\n",
|
||||
@@ -3742,10 +3741,11 @@ static int brcmf_sdio_buscoreprep(void *
|
||||
return -EACCES;
|
||||
}
|
||||
|
||||
- SPINWAIT(((clkval = brcmf_sdiod_regrb(sdiodev,
|
||||
- SBSDIO_FUNC1_CHIPCLKCSR, NULL)),
|
||||
- !SBSDIO_ALPAV(clkval)),
|
||||
- PMU_MAX_TRANSITION_DLY);
|
||||
+ SPINWAIT(((clkval = brcmf_sdiod_readb(sdiodev, SBSDIO_FUNC1_CHIPCLKCSR,
|
||||
+ NULL)),
|
||||
+ !SBSDIO_ALPAV(clkval)),
|
||||
+ PMU_MAX_TRANSITION_DLY);
|
||||
+
|
||||
if (!SBSDIO_ALPAV(clkval)) {
|
||||
brcmf_err("timeout on ALPAV wait, clkval 0x%02x\n",
|
||||
clkval);
|
||||
@@ -3753,11 +3753,11 @@ static int brcmf_sdio_buscoreprep(void *
|
||||
}
|
||||
|
||||
clkset = SBSDIO_FORCE_HW_CLKREQ_OFF | SBSDIO_FORCE_ALP;
|
||||
- brcmf_sdiod_regwb(sdiodev, SBSDIO_FUNC1_CHIPCLKCSR, clkset, &err);
|
||||
+ brcmf_sdiod_writeb(sdiodev, SBSDIO_FUNC1_CHIPCLKCSR, clkset, &err);
|
||||
udelay(65);
|
||||
|
||||
/* Also, disable the extra SDIO pull-ups */
|
||||
- brcmf_sdiod_regwb(sdiodev, SBSDIO_FUNC1_SDIOPULLUP, 0, NULL);
|
||||
+ brcmf_sdiod_writeb(sdiodev, SBSDIO_FUNC1_SDIOPULLUP, 0, NULL);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -3772,7 +3772,7 @@ static void brcmf_sdio_buscore_activate(
|
||||
/* clear all interrupts */
|
||||
core = brcmf_chip_get_core(chip, BCMA_CORE_SDIO_DEV);
|
||||
reg_addr = core->base + offsetof(struct sdpcmd_regs, intstatus);
|
||||
- brcmf_sdiod_regwl(sdiodev, reg_addr, 0xFFFFFFFF, NULL);
|
||||
+ brcmf_sdiod_writel(sdiodev, reg_addr, 0xFFFFFFFF, NULL);
|
||||
|
||||
if (rstvec)
|
||||
/* Write reset vector to address 0 */
|
||||
@@ -3785,7 +3785,7 @@ static u32 brcmf_sdio_buscore_read32(voi
|
||||
struct brcmf_sdio_dev *sdiodev = ctx;
|
||||
u32 val, rev;
|
||||
|
||||
- val = brcmf_sdiod_regrl(sdiodev, addr, NULL);
|
||||
+ val = brcmf_sdiod_readl(sdiodev, addr, NULL);
|
||||
if ((sdiodev->func[0]->device == SDIO_DEVICE_ID_BROADCOM_4335_4339 ||
|
||||
sdiodev->func[0]->device == SDIO_DEVICE_ID_BROADCOM_4339) &&
|
||||
addr == CORE_CC_REG(SI_ENUM_BASE, chipid)) {
|
||||
@@ -3802,7 +3802,7 @@ static void brcmf_sdio_buscore_write32(v
|
||||
{
|
||||
struct brcmf_sdio_dev *sdiodev = ctx;
|
||||
|
||||
- brcmf_sdiod_regwl(sdiodev, addr, val, NULL);
|
||||
+ brcmf_sdiod_writel(sdiodev, addr, val, NULL);
|
||||
}
|
||||
|
||||
static const struct brcmf_buscore_ops brcmf_sdio_buscore_ops = {
|
||||
@@ -3826,18 +3826,18 @@ brcmf_sdio_probe_attach(struct brcmf_sdi
|
||||
sdio_claim_host(sdiodev->func[1]);
|
||||
|
||||
pr_debug("F1 signature read @0x18000000=0x%4x\n",
|
||||
- brcmf_sdiod_regrl(sdiodev, SI_ENUM_BASE, NULL));
|
||||
+ brcmf_sdiod_readl(sdiodev, SI_ENUM_BASE, NULL));
|
||||
|
||||
/*
|
||||
* Force PLL off until brcmf_chip_attach()
|
||||
* programs PLL control regs
|
||||
*/
|
||||
|
||||
- brcmf_sdiod_regwb(sdiodev, SBSDIO_FUNC1_CHIPCLKCSR,
|
||||
- BRCMF_INIT_CLKCTL1, &err);
|
||||
+ brcmf_sdiod_writeb(sdiodev, SBSDIO_FUNC1_CHIPCLKCSR, BRCMF_INIT_CLKCTL1,
|
||||
+ &err);
|
||||
if (!err)
|
||||
- clkctl = brcmf_sdiod_regrb(sdiodev,
|
||||
- SBSDIO_FUNC1_CHIPCLKCSR, &err);
|
||||
+ clkctl = brcmf_sdiod_readb(sdiodev, SBSDIO_FUNC1_CHIPCLKCSR,
|
||||
+ &err);
|
||||
|
||||
if (err || ((clkctl & ~SBSDIO_AVBITS) != BRCMF_INIT_CLKCTL1)) {
|
||||
brcmf_err("ChipClkCSR access: err %d wrote 0x%02x read 0x%02x\n",
|
||||
@@ -3897,25 +3897,25 @@ brcmf_sdio_probe_attach(struct brcmf_sdi
|
||||
brcmf_sdio_drivestrengthinit(sdiodev, bus->ci, drivestrength);
|
||||
|
||||
/* Set card control so an SDIO card reset does a WLAN backplane reset */
|
||||
- reg_val = brcmf_sdiod_regrb(sdiodev, SDIO_CCCR_BRCM_CARDCTRL, &err);
|
||||
+ reg_val = brcmf_sdiod_func0_rb(sdiodev, SDIO_CCCR_BRCM_CARDCTRL, &err);
|
||||
if (err)
|
||||
goto fail;
|
||||
|
||||
reg_val |= SDIO_CCCR_BRCM_CARDCTRL_WLANRESET;
|
||||
|
||||
- brcmf_sdiod_regwb(sdiodev, SDIO_CCCR_BRCM_CARDCTRL, reg_val, &err);
|
||||
+ brcmf_sdiod_func0_wb(sdiodev, SDIO_CCCR_BRCM_CARDCTRL, reg_val, &err);
|
||||
if (err)
|
||||
goto fail;
|
||||
|
||||
/* set PMUControl so a backplane reset does PMU state reload */
|
||||
reg_addr = CORE_CC_REG(brcmf_chip_get_pmu(bus->ci)->base, pmucontrol);
|
||||
- reg_val = brcmf_sdiod_regrl(sdiodev, reg_addr, &err);
|
||||
+ reg_val = brcmf_sdiod_readl(sdiodev, reg_addr, &err);
|
||||
if (err)
|
||||
goto fail;
|
||||
|
||||
reg_val |= (BCMA_CC_PMU_CTL_RES_RELOAD << BCMA_CC_PMU_CTL_RES_SHIFT);
|
||||
|
||||
- brcmf_sdiod_regwl(sdiodev, reg_addr, reg_val, &err);
|
||||
+ brcmf_sdiod_writel(sdiodev, reg_addr, reg_val, &err);
|
||||
if (err)
|
||||
goto fail;
|
||||
|
||||
@@ -4055,10 +4055,10 @@ static void brcmf_sdio_firmware_callback
|
||||
goto release;
|
||||
|
||||
/* Force clocks on backplane to be sure F2 interrupt propagates */
|
||||
- saveclk = brcmf_sdiod_regrb(sdiodev, SBSDIO_FUNC1_CHIPCLKCSR, &err);
|
||||
+ saveclk = brcmf_sdiod_readb(sdiodev, SBSDIO_FUNC1_CHIPCLKCSR, &err);
|
||||
if (!err) {
|
||||
- brcmf_sdiod_regwb(sdiodev, SBSDIO_FUNC1_CHIPCLKCSR,
|
||||
- (saveclk | SBSDIO_FORCE_HT), &err);
|
||||
+ brcmf_sdiod_writeb(sdiodev, SBSDIO_FUNC1_CHIPCLKCSR,
|
||||
+ (saveclk | SBSDIO_FORCE_HT), &err);
|
||||
}
|
||||
if (err) {
|
||||
brcmf_err("Failed to force clock for F2: err %d\n", err);
|
||||
@@ -4080,7 +4080,7 @@ static void brcmf_sdio_firmware_callback
|
||||
w_sdreg32(bus, bus->hostintmask,
|
||||
offsetof(struct sdpcmd_regs, hostintmask));
|
||||
|
||||
- brcmf_sdiod_regwb(sdiodev, SBSDIO_WATERMARK, 8, &err);
|
||||
+ brcmf_sdiod_writeb(sdiodev, SBSDIO_WATERMARK, 8, &err);
|
||||
} else {
|
||||
/* Disable F2 again */
|
||||
sdio_disable_func(sdiodev->func[SDIO_FUNC_2]);
|
||||
@@ -4091,8 +4091,8 @@ static void brcmf_sdio_firmware_callback
|
||||
brcmf_sdio_sr_init(bus);
|
||||
} else {
|
||||
/* Restore previous clock setting */
|
||||
- brcmf_sdiod_regwb(sdiodev, SBSDIO_FUNC1_CHIPCLKCSR,
|
||||
- saveclk, &err);
|
||||
+ brcmf_sdiod_writeb(sdiodev, SBSDIO_FUNC1_CHIPCLKCSR,
|
||||
+ saveclk, &err);
|
||||
}
|
||||
|
||||
if (err == 0) {
|
||||
@@ -4225,7 +4225,7 @@ struct brcmf_sdio *brcmf_sdio_probe(stru
|
||||
bus->rxflow = false;
|
||||
|
||||
/* Done with backplane-dependent accesses, can drop clock... */
|
||||
- brcmf_sdiod_regwb(bus->sdiodev, SBSDIO_FUNC1_CHIPCLKCSR, 0, NULL);
|
||||
+ brcmf_sdiod_writeb(bus->sdiodev, SBSDIO_FUNC1_CHIPCLKCSR, 0, NULL);
|
||||
|
||||
sdio_release_host(bus->sdiodev->func[1]);
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h
|
||||
@@ -50,6 +50,7 @@
|
||||
#define SBSDIO_NUM_FUNCTION 3
|
||||
|
||||
/* function 0 vendor specific CCCR registers */
|
||||
+
|
||||
#define SDIO_CCCR_BRCM_CARDCAP 0xf0
|
||||
#define SDIO_CCCR_BRCM_CARDCAP_CMD14_SUPPORT 0x02
|
||||
#define SDIO_CCCR_BRCM_CARDCAP_CMD14_EXT 0x04
|
||||
@@ -131,8 +132,6 @@
|
||||
/* with b15, maps to 32-bit SB access */
|
||||
#define SBSDIO_SB_ACCESS_2_4B_FLAG 0x08000
|
||||
|
||||
-/* valid bits in SBSDIO_FUNC1_SBADDRxxx regs */
|
||||
-
|
||||
/* Address bits from SBADDR regs */
|
||||
#define SBSDIO_SBWINDOW_MASK 0xffff8000
|
||||
|
||||
@@ -293,13 +292,24 @@ struct sdpcmd_regs {
|
||||
int brcmf_sdiod_intr_register(struct brcmf_sdio_dev *sdiodev);
|
||||
void brcmf_sdiod_intr_unregister(struct brcmf_sdio_dev *sdiodev);
|
||||
|
||||
-/* sdio device register access interface */
|
||||
-u8 brcmf_sdiod_regrb(struct brcmf_sdio_dev *sdiodev, u32 addr, int *ret);
|
||||
-u32 brcmf_sdiod_regrl(struct brcmf_sdio_dev *sdiodev, u32 addr, int *ret);
|
||||
-void brcmf_sdiod_regwb(struct brcmf_sdio_dev *sdiodev, u32 addr, u8 data,
|
||||
- int *ret);
|
||||
-void brcmf_sdiod_regwl(struct brcmf_sdio_dev *sdiodev, u32 addr, u32 data,
|
||||
- int *ret);
|
||||
+/* SDIO device register access interface */
|
||||
+/* Accessors for SDIO Function 0 */
|
||||
+#define brcmf_sdiod_func0_rb(sdiodev, addr, r) \
|
||||
+ sdio_readb((sdiodev)->func[0], (addr), (r))
|
||||
+
|
||||
+#define brcmf_sdiod_func0_wb(sdiodev, addr, v, ret) \
|
||||
+ sdio_writeb((sdiodev)->func[0], (v), (addr), (ret))
|
||||
+
|
||||
+/* Accessors for SDIO Function 1 */
|
||||
+#define brcmf_sdiod_readb(sdiodev, addr, r) \
|
||||
+ sdio_readb((sdiodev)->func[1], (addr), (r))
|
||||
+
|
||||
+#define brcmf_sdiod_writeb(sdiodev, addr, v, ret) \
|
||||
+ sdio_writeb((sdiodev)->func[1], (v), (addr), (ret))
|
||||
+
|
||||
+u32 brcmf_sdiod_readl(struct brcmf_sdio_dev *sdiodev, u32 addr, int *ret);
|
||||
+void brcmf_sdiod_writel(struct brcmf_sdio_dev *sdiodev, u32 addr, u32 data,
|
||||
+ int *ret);
|
||||
|
||||
/* Buffer transfer to/from device (client) core via cmd53.
|
||||
* fn: function number
|
@ -0,0 +1,59 @@
|
||||
From eeef8a5da781e11746347b3cd9f1942be48ebaf0 Mon Sep 17 00:00:00 2001
|
||||
From: Ian Molton <ian@mnementh.co.uk>
|
||||
Date: Fri, 8 Dec 2017 13:10:30 +0100
|
||||
Subject: [PATCH] brcmfmac: Tidy register definitions a little
|
||||
|
||||
Trivial tidy of register definitions.
|
||||
|
||||
Signed-off-by: Ian Molton <ian@mnementh.co.uk>
|
||||
Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
.../net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 4 ++--
|
||||
.../net/wireless/broadcom/brcm80211/brcmfmac/sdio.h | 19 ++++++++++---------
|
||||
2 files changed, 12 insertions(+), 11 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||
@@ -153,9 +153,9 @@ int brcmf_sdiod_intr_register(struct brc
|
||||
brcmf_sdiod_func0_wb(sdiodev, SDIO_CCCR_IENx, data, &ret);
|
||||
|
||||
/* redirect, configure and enable io for interrupt signal */
|
||||
- data = SDIO_SEPINT_MASK | SDIO_SEPINT_OE;
|
||||
+ data = SDIO_CCCR_BRCM_SEPINT_MASK | SDIO_CCCR_BRCM_SEPINT_OE;
|
||||
if (pdata->oob_irq_flags & IRQF_TRIGGER_HIGH)
|
||||
- data |= SDIO_SEPINT_ACT_HI;
|
||||
+ data |= SDIO_CCCR_BRCM_SEPINT_ACT_HI;
|
||||
brcmf_sdiod_func0_wb(sdiodev, SDIO_CCCR_BRCM_SEPINT,
|
||||
data, &ret);
|
||||
sdio_release_host(sdiodev->func[1]);
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h
|
||||
@@ -52,16 +52,17 @@
|
||||
/* function 0 vendor specific CCCR registers */
|
||||
|
||||
#define SDIO_CCCR_BRCM_CARDCAP 0xf0
|
||||
-#define SDIO_CCCR_BRCM_CARDCAP_CMD14_SUPPORT 0x02
|
||||
-#define SDIO_CCCR_BRCM_CARDCAP_CMD14_EXT 0x04
|
||||
-#define SDIO_CCCR_BRCM_CARDCAP_CMD_NODEC 0x08
|
||||
-#define SDIO_CCCR_BRCM_CARDCTRL 0xf1
|
||||
-#define SDIO_CCCR_BRCM_CARDCTRL_WLANRESET 0x02
|
||||
-#define SDIO_CCCR_BRCM_SEPINT 0xf2
|
||||
+#define SDIO_CCCR_BRCM_CARDCAP_CMD14_SUPPORT BIT(1)
|
||||
+#define SDIO_CCCR_BRCM_CARDCAP_CMD14_EXT BIT(2)
|
||||
+#define SDIO_CCCR_BRCM_CARDCAP_CMD_NODEC BIT(3)
|
||||
+
|
||||
+#define SDIO_CCCR_BRCM_CARDCTRL 0xf1
|
||||
+#define SDIO_CCCR_BRCM_CARDCTRL_WLANRESET BIT(1)
|
||||
|
||||
-#define SDIO_SEPINT_MASK 0x01
|
||||
-#define SDIO_SEPINT_OE 0x02
|
||||
-#define SDIO_SEPINT_ACT_HI 0x04
|
||||
+#define SDIO_CCCR_BRCM_SEPINT 0xf2
|
||||
+#define SDIO_CCCR_BRCM_SEPINT_MASK BIT(0)
|
||||
+#define SDIO_CCCR_BRCM_SEPINT_OE BIT(1)
|
||||
+#define SDIO_CCCR_BRCM_SEPINT_ACT_HI BIT(2)
|
||||
|
||||
/* function 1 miscellaneous registers */
|
||||
|
@ -0,0 +1,190 @@
|
||||
From a7c3aa1509e243a09c5b1660c8702d792ca76aed Mon Sep 17 00:00:00 2001
|
||||
From: Ian Molton <ian@mnementh.co.uk>
|
||||
Date: Fri, 8 Dec 2017 13:10:31 +0100
|
||||
Subject: [PATCH] brcmfmac: Remove brcmf_sdiod_addrprep()
|
||||
|
||||
This function has become trivial enough that it may as well be pushed into
|
||||
its callers, which has the side-benefit of clarifying what's going on.
|
||||
|
||||
Remove it, and rename brcmf_sdiod_set_sbaddr_window() to
|
||||
brcmf_sdiod_set_backplane_window() as it's easier to understand.
|
||||
|
||||
Signed-off-by: Ian Molton <ian@mnementh.co.uk>
|
||||
Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
.../wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 84 ++++++++++++----------
|
||||
1 file changed, 46 insertions(+), 38 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||
@@ -230,41 +230,25 @@ void brcmf_sdiod_change_state(struct brc
|
||||
sdiodev->state = state;
|
||||
}
|
||||
|
||||
-static int brcmf_sdiod_set_sbaddr_window(struct brcmf_sdio_dev *sdiodev,
|
||||
- u32 address)
|
||||
+static int brcmf_sdiod_set_backplane_window(struct brcmf_sdio_dev *sdiodev,
|
||||
+ u32 addr)
|
||||
{
|
||||
+ u32 v, bar0 = addr & SBSDIO_SBWINDOW_MASK;
|
||||
int err = 0, i;
|
||||
- u32 addr;
|
||||
|
||||
- if (sdiodev->state == BRCMF_SDIOD_NOMEDIUM)
|
||||
- return -ENOMEDIUM;
|
||||
+ if (bar0 == sdiodev->sbwad)
|
||||
+ return 0;
|
||||
|
||||
- addr = (address & SBSDIO_SBWINDOW_MASK) >> 8;
|
||||
+ v = bar0 >> 8;
|
||||
|
||||
- for (i = 0 ; i < 3 && !err ; i++, addr >>= 8)
|
||||
+ for (i = 0 ; i < 3 && !err ; i++, v >>= 8)
|
||||
brcmf_sdiod_writeb(sdiodev, SBSDIO_FUNC1_SBADDRLOW + i,
|
||||
- addr & 0xff, &err);
|
||||
-
|
||||
- return err;
|
||||
-}
|
||||
-
|
||||
-static int brcmf_sdiod_addrprep(struct brcmf_sdio_dev *sdiodev, u32 *addr)
|
||||
-{
|
||||
- uint bar0 = *addr & ~SBSDIO_SB_OFT_ADDR_MASK;
|
||||
- int err = 0;
|
||||
-
|
||||
- if (bar0 != sdiodev->sbwad) {
|
||||
- err = brcmf_sdiod_set_sbaddr_window(sdiodev, bar0);
|
||||
- if (err)
|
||||
- return err;
|
||||
+ v & 0xff, &err);
|
||||
|
||||
+ if (!err)
|
||||
sdiodev->sbwad = bar0;
|
||||
- }
|
||||
-
|
||||
- *addr &= SBSDIO_SB_OFT_ADDR_MASK;
|
||||
- *addr |= SBSDIO_SB_ACCESS_2_4B_FLAG;
|
||||
|
||||
- return 0;
|
||||
+ return err;
|
||||
}
|
||||
|
||||
u32 brcmf_sdiod_readl(struct brcmf_sdio_dev *sdiodev, u32 addr, int *ret)
|
||||
@@ -272,11 +256,16 @@ u32 brcmf_sdiod_readl(struct brcmf_sdio_
|
||||
u32 data = 0;
|
||||
int retval;
|
||||
|
||||
- retval = brcmf_sdiod_addrprep(sdiodev, &addr);
|
||||
+ retval = brcmf_sdiod_set_backplane_window(sdiodev, addr);
|
||||
+ if (retval)
|
||||
+ goto out;
|
||||
+
|
||||
+ addr &= SBSDIO_SB_OFT_ADDR_MASK;
|
||||
+ addr |= SBSDIO_SB_ACCESS_2_4B_FLAG;
|
||||
|
||||
- if (!retval)
|
||||
- data = sdio_readl(sdiodev->func[1], addr, &retval);
|
||||
+ data = sdio_readl(sdiodev->func[1], addr, &retval);
|
||||
|
||||
+out:
|
||||
if (ret)
|
||||
*ret = retval;
|
||||
|
||||
@@ -288,11 +277,16 @@ void brcmf_sdiod_writel(struct brcmf_sdi
|
||||
{
|
||||
int retval;
|
||||
|
||||
- retval = brcmf_sdiod_addrprep(sdiodev, &addr);
|
||||
+ retval = brcmf_sdiod_set_backplane_window(sdiodev, addr);
|
||||
+ if (retval)
|
||||
+ goto out;
|
||||
+
|
||||
+ addr &= SBSDIO_SB_OFT_ADDR_MASK;
|
||||
+ addr |= SBSDIO_SB_ACCESS_2_4B_FLAG;
|
||||
|
||||
- if (!retval)
|
||||
- sdio_writel(sdiodev->func[1], data, addr, &retval);
|
||||
+ sdio_writel(sdiodev->func[1], data, addr, &retval);
|
||||
|
||||
+out:
|
||||
if (ret)
|
||||
*ret = retval;
|
||||
}
|
||||
@@ -540,10 +534,13 @@ int brcmf_sdiod_recv_pkt(struct brcmf_sd
|
||||
|
||||
brcmf_dbg(SDIO, "addr = 0x%x, size = %d\n", addr, pkt->len);
|
||||
|
||||
- err = brcmf_sdiod_addrprep(sdiodev, &addr);
|
||||
+ err = brcmf_sdiod_set_backplane_window(sdiodev, addr);
|
||||
if (err)
|
||||
goto done;
|
||||
|
||||
+ addr &= SBSDIO_SB_OFT_ADDR_MASK;
|
||||
+ addr |= SBSDIO_SB_ACCESS_2_4B_FLAG;
|
||||
+
|
||||
err = brcmf_sdiod_buff_read(sdiodev, SDIO_FUNC_2, addr, pkt);
|
||||
|
||||
done:
|
||||
@@ -561,10 +558,13 @@ int brcmf_sdiod_recv_chain(struct brcmf_
|
||||
brcmf_dbg(SDIO, "addr = 0x%x, size = %d\n",
|
||||
addr, pktq->qlen);
|
||||
|
||||
- err = brcmf_sdiod_addrprep(sdiodev, &addr);
|
||||
+ err = brcmf_sdiod_set_backplane_window(sdiodev, addr);
|
||||
if (err)
|
||||
goto done;
|
||||
|
||||
+ addr &= SBSDIO_SB_OFT_ADDR_MASK;
|
||||
+ addr |= SBSDIO_SB_ACCESS_2_4B_FLAG;
|
||||
+
|
||||
if (pktq->qlen == 1)
|
||||
err = brcmf_sdiod_buff_read(sdiodev, SDIO_FUNC_2, addr,
|
||||
pktq->next);
|
||||
@@ -606,7 +606,12 @@ int brcmf_sdiod_send_buf(struct brcmf_sd
|
||||
|
||||
memcpy(mypkt->data, buf, nbytes);
|
||||
|
||||
- err = brcmf_sdiod_addrprep(sdiodev, &addr);
|
||||
+ err = brcmf_sdiod_set_backplane_window(sdiodev, addr);
|
||||
+ if (err)
|
||||
+ return err;
|
||||
+
|
||||
+ addr &= SBSDIO_SB_OFT_ADDR_MASK;
|
||||
+ addr |= SBSDIO_SB_ACCESS_2_4B_FLAG;
|
||||
|
||||
if (!err)
|
||||
err = brcmf_sdiod_buff_write(sdiodev, SDIO_FUNC_2, addr, mypkt);
|
||||
@@ -625,10 +630,13 @@ int brcmf_sdiod_send_pkt(struct brcmf_sd
|
||||
|
||||
brcmf_dbg(SDIO, "addr = 0x%x, size = %d\n", addr, pktq->qlen);
|
||||
|
||||
- err = brcmf_sdiod_addrprep(sdiodev, &addr);
|
||||
+ err = brcmf_sdiod_set_backplane_window(sdiodev, addr);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
+ addr &= SBSDIO_SB_OFT_ADDR_MASK;
|
||||
+ addr |= SBSDIO_SB_ACCESS_2_4B_FLAG;
|
||||
+
|
||||
if (pktq->qlen == 1 || !sdiodev->sg_support) {
|
||||
skb_queue_walk(pktq, skb) {
|
||||
err = brcmf_sdiod_buff_write(sdiodev, SDIO_FUNC_2,
|
||||
@@ -673,7 +681,7 @@ brcmf_sdiod_ramrw(struct brcmf_sdio_dev
|
||||
/* Do the transfer(s) */
|
||||
while (size) {
|
||||
/* Set the backplane window to include the start address */
|
||||
- err = brcmf_sdiod_set_sbaddr_window(sdiodev, address);
|
||||
+ err = brcmf_sdiod_set_backplane_window(sdiodev, address);
|
||||
if (err)
|
||||
break;
|
||||
|
||||
@@ -716,7 +724,7 @@ brcmf_sdiod_ramrw(struct brcmf_sdio_dev
|
||||
dev_kfree_skb(pkt);
|
||||
|
||||
/* Return the window to backplane enumeration space for core access */
|
||||
- if (brcmf_sdiod_set_sbaddr_window(sdiodev, sdiodev->sbwad))
|
||||
+ if (brcmf_sdiod_set_backplane_window(sdiodev, sdiodev->sbwad))
|
||||
brcmf_err("FAILED to set window back to 0x%x\n",
|
||||
sdiodev->sbwad);
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user