mirror of
https://github.com/Ysurac/openmptcprouter.git
synced 2025-03-09 15:40:20 +00:00
Merge branch 'test'
This commit is contained in:
commit
25c4724c87
93 changed files with 141 additions and 14642 deletions
22
build.sh
22
build.sh
|
@ -94,13 +94,13 @@ fi
|
||||||
if [ "$OMR_OPENWRT" = "default" ]; then
|
if [ "$OMR_OPENWRT" = "default" ]; then
|
||||||
if [ "$OMR_KERNEL" = "5.4" ]; then
|
if [ "$OMR_KERNEL" = "5.4" ]; then
|
||||||
# Use OpenWrt 21.02 for 5.4 kernel
|
# Use OpenWrt 21.02 for 5.4 kernel
|
||||||
_get_repo "$OMR_TARGET/${OMR_KERNEL}/source" https://github.com/openwrt/openwrt "cb6501435c3136c296e3477bc7f3b043e2a83a47"
|
_get_repo "$OMR_TARGET/${OMR_KERNEL}/source" https://github.com/openwrt/openwrt "fc86176363149493810dc0b424583dd120e7f4c7"
|
||||||
_get_repo feeds/${OMR_KERNEL}/packages https://github.com/openwrt/packages "51077c1094a1e63d333d32b138b381296fd45276"
|
_get_repo feeds/${OMR_KERNEL}/packages https://github.com/openwrt/packages "47d63847e1eda46633eb3d369e221e8845a82f7c"
|
||||||
_get_repo feeds/${OMR_KERNEL}/luci https://github.com/openwrt/luci "bdaec14361fa44529a2da5996745d43fc79fd764"
|
_get_repo feeds/${OMR_KERNEL}/luci https://github.com/openwrt/luci "e01e38cf822b77ee9735da1d519f7eb1c48cce19"
|
||||||
else
|
else
|
||||||
_get_repo "$OMR_TARGET/${OMR_KERNEL}/source" https://github.com/openwrt/openwrt "bae87942bcfb461d2882dd7e593b6aa2d75f63b1"
|
_get_repo "$OMR_TARGET/${OMR_KERNEL}/source" https://github.com/openwrt/openwrt "2ad949b11dbaa4c634868d55a4452d5a558776bd"
|
||||||
_get_repo feeds/${OMR_KERNEL}/packages https://github.com/openwrt/packages "2840abb0c049061618e4e32c5f59c20f7d081c67"
|
_get_repo feeds/${OMR_KERNEL}/packages https://github.com/openwrt/packages "891b87747a5100d5e8c489cea0882a0a0ce8f127"
|
||||||
_get_repo feeds/${OMR_KERNEL}/luci https://github.com/openwrt/luci "46181e5ace8c5cf86e257d021b4e3e593f1a7f5e"
|
_get_repo feeds/${OMR_KERNEL}/luci https://github.com/openwrt/luci "0c5d7dd8d7b04ab6979fb7b6ef953a9a92e37d7a"
|
||||||
fi
|
fi
|
||||||
elif [ "$OMR_OPENWRT" = "master" ]; then
|
elif [ "$OMR_OPENWRT" = "master" ]; then
|
||||||
_get_repo "$OMR_TARGET/${OMR_KERNEL}/source" https://github.com/openwrt/openwrt "master"
|
_get_repo "$OMR_TARGET/${OMR_KERNEL}/source" https://github.com/openwrt/openwrt "master"
|
||||||
|
@ -435,11 +435,11 @@ echo "Done"
|
||||||
#fi
|
#fi
|
||||||
#echo "Done"
|
#echo "Done"
|
||||||
|
|
||||||
echo "Download via IPv4"
|
#echo "Download via IPv4"
|
||||||
if ! patch -Rf -N -p1 -s --dry-run < ../../../patches/download-ipv4.patch; then
|
#if ! patch -Rf -N -p1 -s --dry-run < ../../../patches/download-ipv4.patch; then
|
||||||
patch -N -p1 -s < ../../../patches/download-ipv4.patch
|
# patch -N -p1 -s < ../../../patches/download-ipv4.patch
|
||||||
fi
|
#fi
|
||||||
echo "Done"
|
#echo "Done"
|
||||||
|
|
||||||
#echo "Remove check rsync"
|
#echo "Remove check rsync"
|
||||||
#if [ "$(grep rsync include/prereq-build.mk)" != "" ]; then
|
#if [ "$(grep rsync include/prereq-build.mk)" != "" ]; then
|
||||||
|
|
|
@ -1,389 +0,0 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
#
|
|
||||||
# Copyright (C) 2006-2020 OpenWrt.org
|
|
||||||
|
|
||||||
ifneq ($(__inc_netfilter),1)
|
|
||||||
__inc_netfilter:=1
|
|
||||||
|
|
||||||
ifeq ($(NF_KMOD),1)
|
|
||||||
P_V4:=ipv4/netfilter/
|
|
||||||
P_V6:=ipv6/netfilter/
|
|
||||||
P_XT:=netfilter/
|
|
||||||
P_EBT:=bridge/netfilter/
|
|
||||||
endif
|
|
||||||
|
|
||||||
# 1: variable
|
|
||||||
# 2: kconfig symbols
|
|
||||||
# 3: file list
|
|
||||||
# 4: version dependency
|
|
||||||
define nf_add
|
|
||||||
$(if $(4),ifeq ($$(strip $$(call CompareKernelPatchVer,$$(KERNEL_PATCHVER),$(firstword $(4)),$(lastword $(4)))),1))
|
|
||||||
$(1)-$$($(2)) += $(3)
|
|
||||||
$(if $(4),endif)
|
|
||||||
KCONFIG_$(1) = $(filter-out $(2),$(KCONFIG_$(1))) $(2)
|
|
||||||
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,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),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,IPT_CORE,CONFIG_IP_NF_MANGLE, $(P_V4)iptable_mangle),))
|
|
||||||
|
|
||||||
# userland only
|
|
||||||
$(eval $(if $(NF_KMOD),,$(call nf_add,IPT_CORE,CONFIG_IP_NF_IPTABLES, xt_standard ipt_icmp xt_tcp xt_udp xt_comment xt_set xt_SET)))
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_CORE,CONFIG_NETFILTER_XT_MATCH_LIMIT, $(P_XT)xt_limit))
|
|
||||||
$(eval $(call nf_add,IPT_CORE,CONFIG_NETFILTER_XT_MATCH_MAC, $(P_XT)xt_mac))
|
|
||||||
$(eval $(call nf_add,IPT_CORE,CONFIG_NETFILTER_XT_MATCH_MULTIPORT, $(P_XT)xt_multiport))
|
|
||||||
$(eval $(call nf_add,IPT_CORE,CONFIG_NETFILTER_XT_MATCH_COMMENT, $(P_XT)xt_comment))
|
|
||||||
|
|
||||||
#cluster
|
|
||||||
$(eval $(call nf_add,IPT_CLUSTER,CONFIG_NETFILTER_XT_MATCH_CLUSTER, $(P_XT)xt_cluster))
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_CORE,CONFIG_NETFILTER_XT_TARGET_LOG, $(P_XT)xt_LOG))
|
|
||||||
$(eval $(call nf_add,IPT_CORE,CONFIG_NETFILTER_XT_TARGET_LOG, $(P_XT)nf_log_common, lt 5.13))
|
|
||||||
$(eval $(call nf_add,IPT_CORE,CONFIG_NETFILTER_XT_TARGET_LOG, $(P_V4)nf_log_ipv4, lt 5.13))
|
|
||||||
$(eval $(call nf_add,IPT_CORE,CONFIG_NETFILTER_XT_TARGET_LOG, $(P_XT)nf_log_syslog, ge 5.13))
|
|
||||||
$(eval $(call nf_add,IPT_CORE,CONFIG_NETFILTER_XT_TARGET_TCPMSS, $(P_XT)xt_TCPMSS))
|
|
||||||
$(eval $(call nf_add,IPT_CORE,CONFIG_IP_NF_TARGET_REJECT, $(P_V4)ipt_REJECT))
|
|
||||||
$(eval $(call nf_add,IPT_CORE,CONFIG_NETFILTER_XT_MATCH_TIME, $(P_XT)xt_time))
|
|
||||||
$(eval $(call nf_add,IPT_CORE,CONFIG_NETFILTER_XT_MARK, $(P_XT)xt_mark))
|
|
||||||
|
|
||||||
# kernel has xt_MARK.ko merged into xt_mark.ko, userspace is still separate
|
|
||||||
# userland: xt_MARK.so
|
|
||||||
$(eval $(if $(NF_KMOD),,$(call nf_add,IPT_CORE,CONFIG_NETFILTER_XT_MARK, $(P_XT)xt_MARK)))
|
|
||||||
|
|
||||||
|
|
||||||
# conntrack
|
|
||||||
|
|
||||||
# kernel only
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NF_CONNTRACK,CONFIG_NF_CONNTRACK, $(P_XT)nf_conntrack),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NF_CONNTRACK,CONFIG_NF_DEFRAG_IPV4, $(P_V4)nf_defrag_ipv4),))
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_CONNTRACK,CONFIG_NETFILTER_XT_MATCH_STATE, $(P_XT)xt_state))
|
|
||||||
$(eval $(call nf_add,IPT_CONNTRACK,CONFIG_NETFILTER_XT_TARGET_CT, $(P_XT)xt_CT))
|
|
||||||
$(eval $(call nf_add,IPT_CONNTRACK,CONFIG_NETFILTER_XT_MATCH_CONNTRACK, $(P_XT)xt_conntrack))
|
|
||||||
|
|
||||||
|
|
||||||
# conntrack-extra
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_CONNTRACK_EXTRA,CONFIG_NETFILTER_XT_MATCH_CONNBYTES, $(P_XT)xt_connbytes))
|
|
||||||
$(eval $(call nf_add,IPT_CONNTRACK_EXTRA,CONFIG_NETFILTER_XT_MATCH_CONNLIMIT, $(P_XT)xt_connlimit))
|
|
||||||
$(eval $(call nf_add,IPT_CONNTRACK_EXTRA,CONFIG_NETFILTER_CONNCOUNT, $(P_XT)nf_conncount))
|
|
||||||
$(eval $(call nf_add,IPT_CONNTRACK_EXTRA,CONFIG_NETFILTER_XT_CONNMARK, $(P_XT)xt_connmark))
|
|
||||||
$(eval $(call nf_add,IPT_CONNTRACK_EXTRA,CONFIG_NETFILTER_XT_MATCH_HELPER, $(P_XT)xt_helper))
|
|
||||||
$(eval $(call nf_add,IPT_CONNTRACK_EXTRA,CONFIG_NETFILTER_XT_MATCH_RECENT, $(P_XT)xt_recent))
|
|
||||||
|
|
||||||
$(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)))
|
|
||||||
$(eval $(call nf_add,IPT_EXTRA,CONFIG_NETFILTER_XT_MATCH_OWNER, $(P_XT)xt_owner))
|
|
||||||
$(eval $(call nf_add,IPT_EXTRA,CONFIG_NETFILTER_XT_MATCH_PKTTYPE, $(P_XT)xt_pkttype))
|
|
||||||
$(eval $(call nf_add,IPT_EXTRA,CONFIG_NETFILTER_XT_MATCH_QUOTA, $(P_XT)xt_quota))
|
|
||||||
$(eval $(call nf_add,IPT_EXTRA,CONFIG_NETFILTER_XT_MATCH_CGROUP, $(P_XT)xt_cgroup))
|
|
||||||
|
|
||||||
#$(eval $(call nf_add,IPT_EXTRA,CONFIG_IP_NF_TARGET_ROUTE, $(P_V4)ipt_ROUTE))
|
|
||||||
|
|
||||||
# physdev
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_PHYSDEV,CONFIG_NETFILTER_XT_MATCH_PHYSDEV, $(P_XT)xt_physdev))
|
|
||||||
|
|
||||||
# filter
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_FILTER,CONFIG_NETFILTER_XT_MATCH_STRING, $(P_XT)xt_string))
|
|
||||||
$(eval $(call nf_add,IPT_FILTER,CONFIG_NETFILTER_XT_MATCH_BPF, $(P_XT)xt_bpf))
|
|
||||||
|
|
||||||
|
|
||||||
# ipopt
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_MATCH_DSCP, $(P_XT)xt_dscp))
|
|
||||||
$(eval $(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_TARGET_DSCP, $(P_XT)xt_DSCP))
|
|
||||||
$(eval $(call nf_add,IPT_HASHLIMIT,CONFIG_NETFILTER_XT_MATCH_HASHLIMIT, $(P_XT)xt_hashlimit))
|
|
||||||
$(eval $(call nf_add,IPT_RPFILTER,CONFIG_IP_NF_MATCH_RPFILTER, $(P_V4)ipt_rpfilter))
|
|
||||||
$(eval $(call nf_add,IPT_RPFILTER,CONFIG_IP6_NF_MATCH_RPFILTER, $(P_V6)ip6t_rpfilter))
|
|
||||||
$(eval $(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_MATCH_LENGTH, $(P_XT)xt_length))
|
|
||||||
$(eval $(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_MATCH_STATISTIC, $(P_XT)xt_statistic))
|
|
||||||
$(eval $(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_MATCH_TCPMSS, $(P_XT)xt_tcpmss))
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_TARGET_CLASSIFY, $(P_XT)xt_CLASSIFY))
|
|
||||||
$(eval $(call nf_add,IPT_IPOPT,CONFIG_IP_NF_TARGET_ECN, $(P_V4)ipt_ECN))
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_MATCH_ECN, $(P_XT)xt_ecn))
|
|
||||||
|
|
||||||
# userland only
|
|
||||||
$(eval $(if $(NF_KMOD),,$(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_MATCH_DSCP, xt_tos)))
|
|
||||||
$(eval $(if $(NF_KMOD),,$(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_TARGET_DSCP, xt_TOS)))
|
|
||||||
$(eval $(if $(NF_KMOD),,$(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_MATCH_HL, ipt_ttl)))
|
|
||||||
$(eval $(if $(NF_KMOD),,$(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_TARGET_HL, ipt_TTL)))
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_MATCH_HL, $(P_XT)xt_hl))
|
|
||||||
$(eval $(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_TARGET_HL, $(P_XT)xt_HL))
|
|
||||||
|
|
||||||
# iprange
|
|
||||||
$(eval $(call nf_add,IPT_IPRANGE,CONFIG_NETFILTER_XT_MATCH_IPRANGE, $(P_XT)xt_iprange))
|
|
||||||
|
|
||||||
#clusterip
|
|
||||||
$(eval $(call nf_add,IPT_CLUSTERIP,CONFIG_IP_NF_TARGET_CLUSTERIP, $(P_V4)ipt_CLUSTERIP))
|
|
||||||
|
|
||||||
# ipsec
|
|
||||||
$(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_CONNTRACK,CONFIG_NF_DEFRAG_IPV6, $(P_V6)nf_defrag_ipv6),))
|
|
||||||
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,IPT_IPV6,CONFIG_IP6_NF_FILTER, $(P_V6)ip6table_filter),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,IPT_IPV6,CONFIG_IP6_NF_MANGLE, $(P_V6)ip6table_mangle),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,IPT_IPV6,CONFIG_NF_LOG_IPV6, $(P_V6)nf_log_ipv6,lt 5.13),))
|
|
||||||
|
|
||||||
$(eval $(if $(NF_KMOD),,$(call nf_add,IPT_IPV6,CONFIG_IP6_NF_IPTABLES, ip6t_icmp6)))
|
|
||||||
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_IPV6,CONFIG_IP6_NF_TARGET_REJECT, $(P_V6)ip6t_REJECT))
|
|
||||||
|
|
||||||
# ipv6 extra
|
|
||||||
$(eval $(call nf_add,IPT_IPV6_EXTRA,CONFIG_IP6_NF_MATCH_IPV6HEADER, $(P_V6)ip6t_ipv6header))
|
|
||||||
$(eval $(call nf_add,IPT_IPV6_EXTRA,CONFIG_IP6_NF_MATCH_AH, $(P_V6)ip6t_ah))
|
|
||||||
$(eval $(call nf_add,IPT_IPV6_EXTRA,CONFIG_IP6_NF_MATCH_MH, $(P_V6)ip6t_mh))
|
|
||||||
$(eval $(call nf_add,IPT_IPV6_EXTRA,CONFIG_IP6_NF_MATCH_EUI64, $(P_V6)ip6t_eui64))
|
|
||||||
$(eval $(call nf_add,IPT_IPV6_EXTRA,CONFIG_IP6_NF_MATCH_OPTS, $(P_V6)ip6t_hbh))
|
|
||||||
$(eval $(call nf_add,IPT_IPV6_EXTRA,CONFIG_IP6_NF_MATCH_FRAG, $(P_V6)ip6t_frag))
|
|
||||||
$(eval $(call nf_add,IPT_IPV6_EXTRA,CONFIG_IP6_NF_MATCH_RT, $(P_V6)ip6t_rt))
|
|
||||||
|
|
||||||
# nat
|
|
||||||
|
|
||||||
# kernel only
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NF_NAT,CONFIG_NF_NAT, $(P_XT)nf_nat),))
|
|
||||||
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,IPT_NAT,CONFIG_NETFILTER_XT_NAT, $(P_XT)xt_nat),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,IPT_NAT,CONFIG_IP_NF_NAT, $(P_V4)iptable_nat),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,IPT_NAT6,CONFIG_IP6_NF_NAT, $(P_V6)ip6table_nat),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,IPT_NAT6,CONFIG_IP6_NF_TARGET_NPT, $(P_V6)ip6t_NPT),))
|
|
||||||
|
|
||||||
# userland only
|
|
||||||
$(eval $(if $(NF_KMOD),,$(call nf_add,IPT_NAT,CONFIG_NF_NAT, ipt_SNAT ipt_DNAT)))
|
|
||||||
$(eval $(if $(NF_KMOD),,$(call nf_add,IPT_NAT6,CONFIG_IP6_NF_TARGET_NPT, ip6t_DNPT ip6t_SNPT)))
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_NAT,CONFIG_NETFILTER_XT_TARGET_MASQUERADE, $(P_XT)xt_MASQUERADE))
|
|
||||||
$(eval $(call nf_add,IPT_NAT,CONFIG_NETFILTER_XT_TARGET_REDIRECT, $(P_XT)xt_REDIRECT))
|
|
||||||
|
|
||||||
|
|
||||||
# nat-extra
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_NAT_EXTRA,CONFIG_IP_NF_TARGET_NETMAP, $(P_XT)xt_NETMAP))
|
|
||||||
|
|
||||||
|
|
||||||
# nathelper
|
|
||||||
|
|
||||||
$(eval $(call nf_add,NF_NATHELPER,CONFIG_NF_CONNTRACK_FTP, $(P_XT)nf_conntrack_ftp))
|
|
||||||
$(eval $(call nf_add,NF_NATHELPER,CONFIG_NF_NAT_FTP, $(P_XT)nf_nat_ftp))
|
|
||||||
|
|
||||||
|
|
||||||
# nathelper-extra
|
|
||||||
|
|
||||||
$(eval $(call nf_add,NF_NATHELPER_EXTRA,CONFIG_NF_CONNTRACK_BROADCAST, $(P_XT)nf_conntrack_broadcast))
|
|
||||||
$(eval $(call nf_add,NF_NATHELPER_EXTRA,CONFIG_NF_CONNTRACK_AMANDA, $(P_XT)nf_conntrack_amanda))
|
|
||||||
$(eval $(call nf_add,NF_NATHELPER_EXTRA,CONFIG_NF_NAT_AMANDA, $(P_XT)nf_nat_amanda))
|
|
||||||
$(eval $(call nf_add,NF_NATHELPER_EXTRA,CONFIG_NF_CONNTRACK_H323, $(P_XT)nf_conntrack_h323))
|
|
||||||
$(eval $(call nf_add,NF_NATHELPER_EXTRA,CONFIG_NF_NAT_H323, $(P_V4)nf_nat_h323))
|
|
||||||
$(eval $(call nf_add,NF_NATHELPER_EXTRA,CONFIG_NF_CONNTRACK_PPTP, $(P_XT)nf_conntrack_pptp))
|
|
||||||
$(eval $(call nf_add,NF_NATHELPER_EXTRA,CONFIG_NF_NAT_PPTP, $(P_V4)nf_nat_pptp))
|
|
||||||
$(eval $(call nf_add,NF_NATHELPER_EXTRA,CONFIG_NF_CONNTRACK_SIP, $(P_XT)nf_conntrack_sip))
|
|
||||||
$(eval $(call nf_add,NF_NATHELPER_EXTRA,CONFIG_NF_NAT_SIP, $(P_XT)nf_nat_sip))
|
|
||||||
$(eval $(call nf_add,NF_NATHELPER_EXTRA,CONFIG_NF_CONNTRACK_SNMP, $(P_XT)nf_conntrack_snmp))
|
|
||||||
$(eval $(call nf_add,NF_NATHELPER_EXTRA,CONFIG_NF_NAT_SNMP_BASIC, $(P_V4)nf_nat_snmp_basic))
|
|
||||||
$(eval $(call nf_add,NF_NATHELPER_EXTRA,CONFIG_NF_CONNTRACK_TFTP, $(P_XT)nf_conntrack_tftp))
|
|
||||||
$(eval $(call nf_add,NF_NATHELPER_EXTRA,CONFIG_NF_NAT_TFTP, $(P_XT)nf_nat_tftp))
|
|
||||||
$(eval $(call nf_add,NF_NATHELPER_EXTRA,CONFIG_NF_CONNTRACK_IRC, $(P_XT)nf_conntrack_irc))
|
|
||||||
$(eval $(call nf_add,NF_NATHELPER_EXTRA,CONFIG_NF_NAT_IRC, $(P_XT)nf_nat_irc))
|
|
||||||
|
|
||||||
|
|
||||||
# ulog
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_ULOG,CONFIG_IP_NF_TARGET_ULOG, $(P_V4)ipt_ULOG))
|
|
||||||
|
|
||||||
|
|
||||||
# nflog
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_NFLOG,CONFIG_NETFILTER_XT_TARGET_NFLOG, $(P_XT)xt_NFLOG))
|
|
||||||
|
|
||||||
|
|
||||||
# nfqueue
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_NFQUEUE,CONFIG_NETFILTER_XT_TARGET_NFQUEUE, $(P_XT)xt_NFQUEUE))
|
|
||||||
|
|
||||||
|
|
||||||
# debugging
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_DEBUG,CONFIG_NETFILTER_XT_TARGET_TRACE, $(P_XT)xt_TRACE))
|
|
||||||
|
|
||||||
# tproxy
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_TPROXY,CONFIG_NETFILTER_XT_MATCH_SOCKET, $(P_XT)xt_socket))
|
|
||||||
$(eval $(call nf_add,IPT_TPROXY,CONFIG_NF_SOCKET_IPV4, $(P_V4)nf_socket_ipv4))
|
|
||||||
$(eval $(call nf_add,IPT_TPROXY,CONFIG_NF_SOCKET_IPV6, $(P_V6)nf_socket_ipv6))
|
|
||||||
$(eval $(call nf_add,IPT_TPROXY,CONFIG_NETFILTER_XT_TARGET_TPROXY, $(P_XT)xt_TPROXY))
|
|
||||||
$(eval $(call nf_add,IPT_TPROXY,CONFIG_NF_TPROXY_IPV4, $(P_V4)nf_tproxy_ipv4))
|
|
||||||
$(eval $(call nf_add,IPT_TPROXY,CONFIG_NF_TPROXY_IPV6, $(P_V6)nf_tproxy_ipv6))
|
|
||||||
|
|
||||||
# led
|
|
||||||
$(eval $(call nf_add,IPT_LED,CONFIG_NETFILTER_XT_TARGET_LED, $(P_XT)xt_LED))
|
|
||||||
|
|
||||||
# tee
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_TEE,CONFIG_NETFILTER_XT_TARGET_TEE, $(P_XT)xt_TEE))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,IPT_TEE,CONFIG_NF_DUP_IPV4, $(P_V4)nf_dup_ipv4),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,IPT_TEE,CONFIG_NF_DUP_IPV6, $(P_V6)nf_dup_ipv6),))
|
|
||||||
|
|
||||||
# u32
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_U32,CONFIG_NETFILTER_XT_MATCH_U32, $(P_XT)xt_u32))
|
|
||||||
|
|
||||||
# checksum
|
|
||||||
|
|
||||||
$(eval $(call nf_add,IPT_CHECKSUM,CONFIG_NETFILTER_XT_TARGET_CHECKSUM, $(P_XT)xt_CHECKSUM))
|
|
||||||
|
|
||||||
|
|
||||||
# netlink
|
|
||||||
|
|
||||||
$(eval $(call nf_add,NFNETLINK,CONFIG_NETFILTER_NETLINK, $(P_XT)nfnetlink))
|
|
||||||
|
|
||||||
# nflog
|
|
||||||
|
|
||||||
$(eval $(call nf_add,NFNETLINK_LOG,CONFIG_NETFILTER_NETLINK_LOG, $(P_XT)nfnetlink_log))
|
|
||||||
|
|
||||||
# nfqueue
|
|
||||||
|
|
||||||
$(eval $(call nf_add,NFNETLINK_QUEUE,CONFIG_NETFILTER_NETLINK_QUEUE, $(P_XT)nfnetlink_queue))
|
|
||||||
|
|
||||||
#
|
|
||||||
# ebtables
|
|
||||||
#
|
|
||||||
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,EBTABLES,CONFIG_BRIDGE_NF_EBTABLES, $(P_EBT)ebtables),))
|
|
||||||
|
|
||||||
# ebtables: tables
|
|
||||||
$(eval $(call nf_add,EBTABLES,CONFIG_BRIDGE_EBT_BROUTE, $(P_EBT)ebtable_broute))
|
|
||||||
$(eval $(call nf_add,EBTABLES,CONFIG_BRIDGE_EBT_T_FILTER, $(P_EBT)ebtable_filter))
|
|
||||||
$(eval $(call nf_add,EBTABLES,CONFIG_BRIDGE_EBT_T_NAT, $(P_EBT)ebtable_nat))
|
|
||||||
|
|
||||||
# ebtables: matches
|
|
||||||
$(eval $(call nf_add,EBTABLES,CONFIG_BRIDGE_EBT_802_3, $(P_EBT)ebt_802_3))
|
|
||||||
$(eval $(call nf_add,EBTABLES,CONFIG_BRIDGE_EBT_AMONG, $(P_EBT)ebt_among))
|
|
||||||
$(eval $(call nf_add,EBTABLES_IP4,CONFIG_BRIDGE_EBT_ARP, $(P_EBT)ebt_arp))
|
|
||||||
$(eval $(call nf_add,EBTABLES_IP4,CONFIG_BRIDGE_EBT_IP, $(P_EBT)ebt_ip))
|
|
||||||
$(eval $(call nf_add,EBTABLES_IP6,CONFIG_BRIDGE_EBT_IP6, $(P_EBT)ebt_ip6))
|
|
||||||
$(eval $(call nf_add,EBTABLES,CONFIG_BRIDGE_EBT_LIMIT, $(P_EBT)ebt_limit))
|
|
||||||
$(eval $(call nf_add,EBTABLES,CONFIG_BRIDGE_EBT_MARK, $(P_EBT)ebt_mark_m))
|
|
||||||
$(eval $(call nf_add,EBTABLES,CONFIG_BRIDGE_EBT_PKTTYPE, $(P_EBT)ebt_pkttype))
|
|
||||||
$(eval $(call nf_add,EBTABLES,CONFIG_BRIDGE_EBT_STP, $(P_EBT)ebt_stp))
|
|
||||||
$(eval $(call nf_add,EBTABLES,CONFIG_BRIDGE_EBT_VLAN, $(P_EBT)ebt_vlan))
|
|
||||||
|
|
||||||
# targets
|
|
||||||
$(eval $(call nf_add,EBTABLES_IP4,CONFIG_BRIDGE_EBT_ARPREPLY, $(P_EBT)ebt_arpreply))
|
|
||||||
$(eval $(call nf_add,EBTABLES,CONFIG_BRIDGE_EBT_MARK_T, $(P_EBT)ebt_mark))
|
|
||||||
$(eval $(call nf_add,EBTABLES_IP4,CONFIG_BRIDGE_EBT_DNAT, $(P_EBT)ebt_dnat))
|
|
||||||
$(eval $(call nf_add,EBTABLES,CONFIG_BRIDGE_EBT_REDIRECT, $(P_EBT)ebt_redirect))
|
|
||||||
$(eval $(call nf_add,EBTABLES_IP4,CONFIG_BRIDGE_EBT_SNAT, $(P_EBT)ebt_snat))
|
|
||||||
|
|
||||||
# watchers
|
|
||||||
$(eval $(call nf_add,EBTABLES_WATCHERS,CONFIG_BRIDGE_EBT_LOG, $(P_EBT)ebt_log))
|
|
||||||
$(eval $(call nf_add,EBTABLES_WATCHERS,CONFIG_BRIDGE_EBT_ULOG, $(P_EBT)ebt_ulog))
|
|
||||||
$(eval $(call nf_add,EBTABLES_WATCHERS,CONFIG_BRIDGE_EBT_NFLOG, $(P_EBT)ebt_nflog))
|
|
||||||
$(eval $(call nf_add,EBTABLES_WATCHERS,CONFIG_BRIDGE_EBT_NFQUEUE, $(P_EBT)ebt_nfqueue))
|
|
||||||
|
|
||||||
# nftables
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NF_TABLES, $(P_XT)nf_tables),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NF_TABLES_SET, $(P_XT)nf_tables_set),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_COUNTER, $(P_XT)nft_counter),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_CT, $(P_XT)nft_ct),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_HASH, $(P_XT)nft_hash),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_LIMIT, $(P_XT)nft_limit),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_LOG, $(P_XT)nft_log),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_META, $(P_XT)nft_meta),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_NUMGEN, $(P_XT)nft_numgen),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_OBJREF, $(P_XT)nft_objref),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_QUOTA, $(P_XT)nft_quota),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_REDIR, $(P_XT)nft_redir),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_REJECT, $(P_XT)nft_reject $(P_V4)nft_reject_ipv4 $(P_V6)nft_reject_ipv6),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_REJECT_INET, $(P_XT)nft_reject_inet),))
|
|
||||||
|
|
||||||
$(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_NAT, $(P_XT)nft_chain_nat),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_NAT,CONFIG_NFT_REDIR_IPV4, $(P_V4)nft_redir_ipv4),))
|
|
||||||
$(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_NAT6,CONFIG_NFT_REDIR_IPV6, $(P_V6)nft_redir_ipv6),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_NAT6,CONFIG_NFT_MASQ_IPV6, $(P_V6)nft_masq_ipv6),))
|
|
||||||
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_FIB,CONFIG_NFT_FIB, $(P_XT)nft_fib),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_FIB,CONFIG_NFT_FIB_INET, $(P_XT)nft_fib_inet),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_FIB,CONFIG_NFT_FIB_IPV4, $(P_V4)nft_fib_ipv4),))
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_FIB,CONFIG_NFT_FIB_IPV6, $(P_V6)nft_fib_ipv6),))
|
|
||||||
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_QUEUE,CONFIG_NFT_QUEUE, $(P_XT)nft_queue),))
|
|
||||||
|
|
||||||
$(eval $(if $(NF_KMOD),$(call nf_add,NFT_COMPAT,CONFIG_NFT_COMPAT, $(P_XT)nft_compat),))
|
|
||||||
|
|
||||||
# userland only
|
|
||||||
IPT_BUILTIN += $(NF_IPT-y) $(NF_IPT-m)
|
|
||||||
IPT_BUILTIN += $(IPT_CORE-y) $(IPT_CORE-m)
|
|
||||||
IPT_BUILTIN += $(NF_CONNTRACK-y)
|
|
||||||
IPT_BUILTIN += $(NF_CONNTRACK6-y)
|
|
||||||
IPT_BUILTIN += $(IPT_CONNTRACK-y)
|
|
||||||
IPT_BUILTIN += $(IPT_CONNTRACK_EXTRA-y)
|
|
||||||
IPT_BUILTIN += $(IPT_EXTRA-y)
|
|
||||||
IPT_BUILTIN += $(IPT_PHYSDEV-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)
|
|
||||||
IPT_BUILTIN += $(IPT_CLUSTERIP-y)
|
|
||||||
IPT_BUILTIN += $(IPT_IPSEC-y)
|
|
||||||
IPT_BUILTIN += $(IPT_IPV6-y) $(IPT_IPV6-m)
|
|
||||||
IPT_BUILTIN += $(NF_NAT-y)
|
|
||||||
IPT_BUILTIN += $(NF_NAT6-y)
|
|
||||||
IPT_BUILTIN += $(IPT_NAT-y)
|
|
||||||
IPT_BUILTIN += $(IPT_NAT6-y)
|
|
||||||
IPT_BUILTIN += $(IPT_NAT_EXTRA-y)
|
|
||||||
IPT_BUILTIN += $(NF_NATHELPER-y)
|
|
||||||
IPT_BUILTIN += $(NF_NATHELPER_EXTRA-y)
|
|
||||||
IPT_BUILTIN += $(IPT_ULOG-y)
|
|
||||||
IPT_BUILTIN += $(IPT_TPROXY-y)
|
|
||||||
IPT_BUILTIN += $(NFNETLINK-y)
|
|
||||||
IPT_BUILTIN += $(NFNETLINK_LOG-y)
|
|
||||||
IPT_BUILTIN += $(NFNETLINK_QUEUE-y)
|
|
||||||
IPT_BUILTIN += $(EBTABLES-y)
|
|
||||||
IPT_BUILTIN += $(EBTABLES_IP4-y)
|
|
||||||
IPT_BUILTIN += $(EBTABLES_IP6-y)
|
|
||||||
IPT_BUILTIN += $(EBTABLES_WATCHERS-y)
|
|
||||||
|
|
||||||
endif # __inc_netfilter
|
|
|
@ -1,352 +0,0 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
#
|
|
||||||
# Copyright (C) 2007-2008 OpenWrt.org
|
|
||||||
# Copyright (C) 2016 LEDE Project
|
|
||||||
|
|
||||||
ifneq ($(__target_inc),1)
|
|
||||||
__target_inc=1
|
|
||||||
|
|
||||||
# default device type
|
|
||||||
DEVICE_TYPE?=router
|
|
||||||
|
|
||||||
# Default packages - the really basic set
|
|
||||||
DEFAULT_PACKAGES:=\
|
|
||||||
base-files \
|
|
||||||
ca-bundle \
|
|
||||||
dropbear \
|
|
||||||
fstools \
|
|
||||||
libc \
|
|
||||||
libgcc \
|
|
||||||
libustream-wolfssl \
|
|
||||||
logd \
|
|
||||||
mtd \
|
|
||||||
netifd \
|
|
||||||
opkg \
|
|
||||||
uci \
|
|
||||||
uclient-fetch \
|
|
||||||
urandom-seed \
|
|
||||||
urngd
|
|
||||||
|
|
||||||
ifneq ($(CONFIG_SELINUX),)
|
|
||||||
DEFAULT_PACKAGES+=busybox-selinux procd-selinux
|
|
||||||
else
|
|
||||||
DEFAULT_PACKAGES+=busybox procd
|
|
||||||
endif
|
|
||||||
|
|
||||||
# include ujail on systems with enough storage
|
|
||||||
ifeq ($(CONFIG_SMALL_FLASH),)
|
|
||||||
DEFAULT_PACKAGES+=procd-ujail
|
|
||||||
endif
|
|
||||||
|
|
||||||
# include seccomp ld-preload hooks if kernel supports it
|
|
||||||
ifneq ($(CONFIG_SECCOMP),)
|
|
||||||
DEFAULT_PACKAGES+=procd-seccomp
|
|
||||||
endif
|
|
||||||
|
|
||||||
# For the basic set
|
|
||||||
DEFAULT_PACKAGES.basic:=
|
|
||||||
# For nas targets
|
|
||||||
DEFAULT_PACKAGES.nas:=\
|
|
||||||
block-mount \
|
|
||||||
fdisk \
|
|
||||||
lsblk \
|
|
||||||
mdadm
|
|
||||||
# For router targets
|
|
||||||
DEFAULT_PACKAGES.router:=\
|
|
||||||
dnsmasq \
|
|
||||||
firewall \
|
|
||||||
ip6tables \
|
|
||||||
iptables \
|
|
||||||
kmod-nft-offload \
|
|
||||||
odhcp6c \
|
|
||||||
odhcpd-ipv6only \
|
|
||||||
ppp \
|
|
||||||
ppp-mod-pppoe
|
|
||||||
|
|
||||||
ifneq ($(DUMP),)
|
|
||||||
all: dumpinfo
|
|
||||||
endif
|
|
||||||
|
|
||||||
target_conf=$(subst .,_,$(subst -,_,$(subst /,_,$(1))))
|
|
||||||
ifeq ($(DUMP),)
|
|
||||||
PLATFORM_DIR:=$(TOPDIR)/target/linux/$(BOARD)
|
|
||||||
SUBTARGET:=$(strip $(foreach subdir,$(patsubst $(PLATFORM_DIR)/%/target.mk,%,$(wildcard $(PLATFORM_DIR)/*/target.mk)),$(if $(CONFIG_TARGET_$(call target_conf,$(BOARD)_$(subdir))),$(subdir))))
|
|
||||||
else
|
|
||||||
PLATFORM_DIR:=${CURDIR}
|
|
||||||
ifeq ($(SUBTARGETS),)
|
|
||||||
SUBTARGETS:=$(strip $(patsubst $(PLATFORM_DIR)/%/target.mk,%,$(wildcard $(PLATFORM_DIR)/*/target.mk)))
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
TARGETID:=$(BOARD)$(if $(SUBTARGET),/$(SUBTARGET))
|
|
||||||
PLATFORM_SUBDIR:=$(PLATFORM_DIR)$(if $(SUBTARGET),/$(SUBTARGET))
|
|
||||||
|
|
||||||
ifneq ($(TARGET_BUILD),1)
|
|
||||||
ifndef DUMP
|
|
||||||
include $(PLATFORM_DIR)/Makefile
|
|
||||||
ifneq ($(PLATFORM_DIR),$(PLATFORM_SUBDIR))
|
|
||||||
include $(PLATFORM_SUBDIR)/target.mk
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
else
|
|
||||||
ifneq ($(SUBTARGET),)
|
|
||||||
-include ./$(SUBTARGET)/target.mk
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Add device specific packages (here below to allow device type set from subtarget)
|
|
||||||
DEFAULT_PACKAGES += $(DEFAULT_PACKAGES.$(DEVICE_TYPE))
|
|
||||||
|
|
||||||
filter_packages = $(filter-out -% $(patsubst -%,%,$(filter -%,$(1))),$(1))
|
|
||||||
extra_packages = $(if $(filter wpad wpad-% nas,$(1)),iwinfo)
|
|
||||||
|
|
||||||
define ProfileDefault
|
|
||||||
NAME:=
|
|
||||||
PRIORITY:=
|
|
||||||
PACKAGES:=
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifndef Profile
|
|
||||||
define Profile
|
|
||||||
$(eval $(call ProfileDefault))
|
|
||||||
$(eval $(call Profile/$(1)))
|
|
||||||
dumpinfo : $(call shexport,Profile/$(1)/Description)
|
|
||||||
PACKAGES := $(filter-out -%,$(PACKAGES))
|
|
||||||
DUMPINFO += \
|
|
||||||
echo "Target-Profile: $(1)"; \
|
|
||||||
$(if $(PRIORITY), echo "Target-Profile-Priority: $(PRIORITY)"; ) \
|
|
||||||
echo "Target-Profile-Name: $(NAME)"; \
|
|
||||||
echo "Target-Profile-Packages: $(PACKAGES) $(call extra_packages,$(DEFAULT_PACKAGES) $(PACKAGES))"; \
|
|
||||||
echo "Target-Profile-Description:"; \
|
|
||||||
echo "$$$$$$$$$(call shvar,Profile/$(1)/Description)"; \
|
|
||||||
echo "@@"; \
|
|
||||||
echo;
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq ($(PLATFORM_DIR),$(PLATFORM_SUBDIR))
|
|
||||||
define IncludeProfiles
|
|
||||||
-include $(sort $(wildcard $(PLATFORM_DIR)/profiles/*.mk))
|
|
||||||
-include $(sort $(wildcard $(PLATFORM_SUBDIR)/profiles/*.mk))
|
|
||||||
endef
|
|
||||||
else
|
|
||||||
define IncludeProfiles
|
|
||||||
-include $(sort $(wildcard $(PLATFORM_DIR)/profiles/*.mk))
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
PROFILE?=$(call qstrip,$(CONFIG_TARGET_PROFILE))
|
|
||||||
|
|
||||||
ifeq ($(TARGET_BUILD),1)
|
|
||||||
ifneq ($(DUMP),)
|
|
||||||
$(eval $(call IncludeProfiles))
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq ($(TARGET_BUILD)$(if $(DUMP),,1),)
|
|
||||||
include $(INCLUDE_DIR)/kernel-version.mk
|
|
||||||
endif
|
|
||||||
|
|
||||||
GENERIC_PLATFORM_DIR := $(TOPDIR)/target/linux/generic
|
|
||||||
GENERIC_BACKPORT_DIR := $(GENERIC_PLATFORM_DIR)/backport$(if $(wildcard $(GENERIC_PLATFORM_DIR)/backport-$(KERNEL_PATCHVER)),-$(KERNEL_PATCHVER))
|
|
||||||
GENERIC_PATCH_DIR := $(GENERIC_PLATFORM_DIR)/pending$(if $(wildcard $(GENERIC_PLATFORM_DIR)/pending-$(KERNEL_PATCHVER)),-$(KERNEL_PATCHVER))
|
|
||||||
GENERIC_HACK_DIR := $(GENERIC_PLATFORM_DIR)/hack$(if $(wildcard $(GENERIC_PLATFORM_DIR)/hack-$(KERNEL_PATCHVER)),-$(KERNEL_PATCHVER))
|
|
||||||
GENERIC_FILES_DIR := $(foreach dir,$(wildcard $(GENERIC_PLATFORM_DIR)/files $(GENERIC_PLATFORM_DIR)/files-$(KERNEL_PATCHVER)),"$(dir)")
|
|
||||||
|
|
||||||
__config_name_list = $(1)/config-$(KERNEL_PATCHVER) $(1)/config-default
|
|
||||||
__config_list = $(firstword $(wildcard $(call __config_name_list,$(1))))
|
|
||||||
find_kernel_config=$(if $(__config_list),$(__config_list),$(lastword $(__config_name_list)))
|
|
||||||
|
|
||||||
GENERIC_LINUX_CONFIG = $(call find_kernel_config,$(GENERIC_PLATFORM_DIR))
|
|
||||||
LINUX_TARGET_CONFIG = $(call find_kernel_config,$(PLATFORM_DIR))
|
|
||||||
ifneq ($(PLATFORM_DIR),$(PLATFORM_SUBDIR))
|
|
||||||
LINUX_SUBTARGET_CONFIG = $(call find_kernel_config,$(PLATFORM_SUBDIR))
|
|
||||||
endif
|
|
||||||
|
|
||||||
# config file list used for compiling
|
|
||||||
LINUX_KCONFIG_LIST = $(wildcard $(GENERIC_LINUX_CONFIG) $(LINUX_TARGET_CONFIG) $(LINUX_SUBTARGET_CONFIG) $(TOPDIR)/env/kernel-config)
|
|
||||||
|
|
||||||
# default config list for reconfiguring
|
|
||||||
# defaults to subtarget if subtarget exists and target does not
|
|
||||||
# defaults to target otherwise
|
|
||||||
USE_SUBTARGET_CONFIG = $(if $(wildcard $(LINUX_TARGET_CONFIG)),,$(if $(LINUX_SUBTARGET_CONFIG),1))
|
|
||||||
|
|
||||||
LINUX_RECONFIG_LIST = $(wildcard $(GENERIC_LINUX_CONFIG) $(LINUX_TARGET_CONFIG) $(if $(USE_SUBTARGET_CONFIG),$(LINUX_SUBTARGET_CONFIG)))
|
|
||||||
LINUX_RECONFIG_TARGET = $(if $(USE_SUBTARGET_CONFIG),$(LINUX_SUBTARGET_CONFIG),$(LINUX_TARGET_CONFIG))
|
|
||||||
|
|
||||||
# select the config file to be changed by kernel_menuconfig/kernel_oldconfig
|
|
||||||
ifeq ($(CONFIG_TARGET),platform)
|
|
||||||
LINUX_RECONFIG_LIST = $(wildcard $(GENERIC_LINUX_CONFIG) $(LINUX_TARGET_CONFIG))
|
|
||||||
LINUX_RECONFIG_TARGET = $(LINUX_TARGET_CONFIG)
|
|
||||||
endif
|
|
||||||
ifeq ($(CONFIG_TARGET),subtarget)
|
|
||||||
LINUX_RECONFIG_LIST = $(wildcard $(GENERIC_LINUX_CONFIG) $(LINUX_TARGET_CONFIG) $(LINUX_SUBTARGET_CONFIG))
|
|
||||||
LINUX_RECONFIG_TARGET = $(LINUX_SUBTARGET_CONFIG)
|
|
||||||
endif
|
|
||||||
ifeq ($(CONFIG_TARGET),subtarget_platform)
|
|
||||||
LINUX_RECONFIG_LIST = $(wildcard $(GENERIC_LINUX_CONFIG) $(LINUX_SUBTARGET_CONFIG) $(LINUX_TARGET_CONFIG))
|
|
||||||
LINUX_RECONFIG_TARGET = $(LINUX_TARGET_CONFIG)
|
|
||||||
endif
|
|
||||||
ifeq ($(CONFIG_TARGET),env)
|
|
||||||
LINUX_RECONFIG_LIST = $(LINUX_KCONFIG_LIST)
|
|
||||||
LINUX_RECONFIG_TARGET = $(TOPDIR)/env/kernel-config
|
|
||||||
endif
|
|
||||||
|
|
||||||
__linux_confcmd = $(2) $(patsubst %,+,$(wordlist 2,9999,$(1))) $(1)
|
|
||||||
|
|
||||||
LINUX_CONF_CMD = $(SCRIPT_DIR)/kconfig.pl $(call __linux_confcmd,$(LINUX_KCONFIG_LIST))
|
|
||||||
LINUX_RECONF_CMD = $(SCRIPT_DIR)/kconfig.pl $(call __linux_confcmd,$(LINUX_RECONFIG_LIST))
|
|
||||||
LINUX_RECONF_DIFF = $(SCRIPT_DIR)/kconfig.pl - '>' $(call __linux_confcmd,$(filter-out $(LINUX_RECONFIG_TARGET),$(LINUX_RECONFIG_LIST))) $(1) $(GENERIC_PLATFORM_DIR)/config-filter
|
|
||||||
|
|
||||||
ifeq ($(DUMP),1)
|
|
||||||
BuildTarget=$(BuildTargets/DumpCurrent)
|
|
||||||
|
|
||||||
CPU_CFLAGS = -Os -pipe
|
|
||||||
ifneq ($(findstring mips,$(ARCH)),)
|
|
||||||
ifneq ($(findstring mips64,$(ARCH)),)
|
|
||||||
CPU_TYPE ?= mips64
|
|
||||||
else
|
|
||||||
CPU_TYPE ?= mips32
|
|
||||||
endif
|
|
||||||
CPU_CFLAGS += -mno-branch-likely
|
|
||||||
CPU_CFLAGS_mips32 = -mips32 -mtune=mips32
|
|
||||||
CPU_CFLAGS_mips64 = -mips64 -mtune=mips64 -mabi=64
|
|
||||||
CPU_CFLAGS_mips64r2 = -mips64r2 -mtune=mips64r2 -mabi=64
|
|
||||||
CPU_CFLAGS_4kec = -mips32r2 -mtune=4kec
|
|
||||||
CPU_CFLAGS_24kc = -mips32r2 -mtune=24kc
|
|
||||||
CPU_CFLAGS_74kc = -mips32r2 -mtune=74kc
|
|
||||||
CPU_CFLAGS_octeonplus = -march=octeon+ -mabi=64
|
|
||||||
endif
|
|
||||||
ifeq ($(ARCH),i386)
|
|
||||||
CPU_TYPE ?= pentium-mmx
|
|
||||||
CPU_CFLAGS_pentium-mmx = -march=pentium-mmx
|
|
||||||
CPU_CFLAGS_pentium4 = -march=pentium4
|
|
||||||
endif
|
|
||||||
ifneq ($(findstring arm,$(ARCH)),)
|
|
||||||
CPU_TYPE ?= xscale
|
|
||||||
endif
|
|
||||||
ifeq ($(ARCH),powerpc)
|
|
||||||
CPU_CFLAGS_603e:=-mcpu=603e
|
|
||||||
CPU_CFLAGS_8540:=-mcpu=8540
|
|
||||||
CPU_CFLAGS_405:=-mcpu=405
|
|
||||||
CPU_CFLAGS_440:=-mcpu=440
|
|
||||||
CPU_CFLAGS_464fp:=-mcpu=464fp
|
|
||||||
endif
|
|
||||||
ifeq ($(ARCH),powerpc64)
|
|
||||||
CPU_TYPE ?= powerpc64
|
|
||||||
CPU_CFLAGS_e5500:=-mcpu=e5500
|
|
||||||
CPU_CFLAGS_powerpc64:=-mcpu=powerpc64
|
|
||||||
endif
|
|
||||||
ifeq ($(ARCH),sparc)
|
|
||||||
CPU_TYPE = sparc
|
|
||||||
CPU_CFLAGS_ultrasparc = -mcpu=ultrasparc
|
|
||||||
endif
|
|
||||||
ifeq ($(ARCH),aarch64)
|
|
||||||
CPU_TYPE ?= generic
|
|
||||||
CPU_CFLAGS_generic = -mcpu=generic
|
|
||||||
CPU_CFLAGS_cortex-a53 = -mcpu=cortex-a53
|
|
||||||
endif
|
|
||||||
ifeq ($(ARCH),arc)
|
|
||||||
CPU_TYPE ?= arc700
|
|
||||||
CPU_CFLAGS += -matomic
|
|
||||||
CPU_CFLAGS_arc700 = -mcpu=arc700
|
|
||||||
CPU_CFLAGS_archs = -mcpu=archs
|
|
||||||
endif
|
|
||||||
ifneq ($(CPU_TYPE),)
|
|
||||||
ifndef CPU_CFLAGS_$(CPU_TYPE)
|
|
||||||
$(warning CPU_TYPE "$(CPU_TYPE)" doesn't correspond to a known type)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
DEFAULT_CFLAGS=$(strip $(CPU_CFLAGS) $(CPU_CFLAGS_$(CPU_TYPE)) $(CPU_CFLAGS_$(CPU_SUBTYPE)))
|
|
||||||
|
|
||||||
ifneq ($(BOARD),)
|
|
||||||
TMP_CONFIG:=$(TMP_DIR)/.kconfig-$(call target_conf,$(TARGETID))
|
|
||||||
$(TMP_CONFIG): $(LINUX_KCONFIG_LIST)
|
|
||||||
$(LINUX_CONF_CMD) > $@ || rm -f $@
|
|
||||||
-include $(TMP_CONFIG)
|
|
||||||
.SILENT: $(TMP_CONFIG)
|
|
||||||
.PRECIOUS: $(TMP_CONFIG)
|
|
||||||
|
|
||||||
ifdef KERNEL_TESTING_PATCHVER
|
|
||||||
ifneq ($(KERNEL_TESTING_PATCHVER),$(KERNEL_PATCHVER))
|
|
||||||
FEATURES += testing-kernel
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
ifneq ($(CONFIG_OF),)
|
|
||||||
FEATURES += dt
|
|
||||||
endif
|
|
||||||
ifneq ($(CONFIG_GENERIC_GPIO)$(CONFIG_GPIOLIB),)
|
|
||||||
FEATURES += gpio
|
|
||||||
endif
|
|
||||||
ifneq ($(CONFIG_PCI),)
|
|
||||||
FEATURES += pci
|
|
||||||
endif
|
|
||||||
ifneq ($(CONFIG_PCIEPORTBUS),)
|
|
||||||
FEATURES += pcie
|
|
||||||
endif
|
|
||||||
ifneq ($(CONFIG_USB)$(CONFIG_USB_SUPPORT),)
|
|
||||||
ifneq ($(CONFIG_USB_ARCH_HAS_HCD)$(CONFIG_USB_EHCI_HCD),)
|
|
||||||
FEATURES += usb
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
ifneq ($(CONFIG_PCMCIA)$(CONFIG_PCCARD),)
|
|
||||||
FEATURES += pcmcia
|
|
||||||
endif
|
|
||||||
ifneq ($(CONFIG_VGA_CONSOLE)$(CONFIG_FB),)
|
|
||||||
FEATURES += display
|
|
||||||
endif
|
|
||||||
ifneq ($(CONFIG_RTC_CLASS),)
|
|
||||||
FEATURES += rtc
|
|
||||||
endif
|
|
||||||
ifneq ($(CONFIG_VIRTIO),)
|
|
||||||
FEATURES += virtio
|
|
||||||
endif
|
|
||||||
ifneq ($(CONFIG_CPU_MIPS32_R2),)
|
|
||||||
FEATURES += mips16
|
|
||||||
endif
|
|
||||||
FEATURES += $(foreach v,6 7,$(if $(CONFIG_CPU_V$(v)),arm_v$(v)))
|
|
||||||
|
|
||||||
# remove duplicates
|
|
||||||
FEATURES:=$(sort $(FEATURES))
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
CUR_SUBTARGET:=$(SUBTARGET)
|
|
||||||
ifeq ($(SUBTARGETS),)
|
|
||||||
CUR_SUBTARGET := default
|
|
||||||
endif
|
|
||||||
|
|
||||||
define BuildTargets/DumpCurrent
|
|
||||||
.PHONY: dumpinfo
|
|
||||||
dumpinfo : export DESCRIPTION=$$(Target/Description)
|
|
||||||
dumpinfo:
|
|
||||||
@echo 'Target: $(TARGETID)'; \
|
|
||||||
echo 'Target-Board: $(BOARD)'; \
|
|
||||||
echo 'Target-Name: $(BOARDNAME)$(if $(SUBTARGETS),$(if $(SUBTARGET),))'; \
|
|
||||||
echo 'Target-Arch: $(ARCH)'; \
|
|
||||||
echo 'Target-Arch-Packages: $(if $(ARCH_PACKAGES),$(ARCH_PACKAGES),$(ARCH)$(if $(CPU_TYPE),_$(CPU_TYPE))$(if $(CPU_SUBTYPE),_$(CPU_SUBTYPE)))'; \
|
|
||||||
echo 'Target-Features: $(FEATURES)'; \
|
|
||||||
echo 'Target-Depends: $(DEPENDS)'; \
|
|
||||||
echo 'Target-Optimization: $(if $(CFLAGS),$(CFLAGS),$(DEFAULT_CFLAGS))'; \
|
|
||||||
echo 'CPU-Type: $(CPU_TYPE)$(if $(CPU_SUBTYPE),+$(CPU_SUBTYPE))'; \
|
|
||||||
echo 'Linux-Version: $(LINUX_VERSION)'; \
|
|
||||||
$(if $(LINUX_TESTING_VERSION),echo 'Linux-Testing-Version: $(LINUX_TESTING_VERSION)';) \
|
|
||||||
echo 'Linux-Release: $(LINUX_RELEASE)'; \
|
|
||||||
echo 'Linux-Kernel-Arch: $(LINUX_KARCH)'; \
|
|
||||||
$(if $(SUBTARGET),,$(if $(DEFAULT_SUBTARGET), echo 'Default-Subtarget: $(DEFAULT_SUBTARGET)'; )) \
|
|
||||||
echo 'Target-Description:'; \
|
|
||||||
echo "$$$$DESCRIPTION"; \
|
|
||||||
echo '@@'; \
|
|
||||||
echo 'Default-Packages: $(DEFAULT_PACKAGES) $(call extra_packages,$(DEFAULT_PACKAGES))'; \
|
|
||||||
$(DUMPINFO)
|
|
||||||
$(if $(CUR_SUBTARGET),$(SUBMAKE) -r --no-print-directory -C image -s DUMP=1 SUBTARGET=$(CUR_SUBTARGET))
|
|
||||||
$(if $(SUBTARGET),,@$(foreach SUBTARGET,$(SUBTARGETS),$(SUBMAKE) -s DUMP=1 SUBTARGET=$(SUBTARGET); ))
|
|
||||||
endef
|
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/kernel.mk
|
|
||||||
ifeq ($(TARGET_BUILD),1)
|
|
||||||
include $(INCLUDE_DIR)/kernel-build.mk
|
|
||||||
BuildTarget?=$(BuildKernel)
|
|
||||||
endif
|
|
||||||
|
|
||||||
endif #__target_inc
|
|
|
@ -2708,6 +2708,10 @@ CONFIG_INPUT_MISC=y
|
||||||
# CONFIG_INV_MPU6050_IIO is not set
|
# CONFIG_INV_MPU6050_IIO is not set
|
||||||
# CONFIG_INV_MPU6050_SPI is not set
|
# CONFIG_INV_MPU6050_SPI is not set
|
||||||
# CONFIG_IOMMU_SUPPORT is not set
|
# CONFIG_IOMMU_SUPPORT is not set
|
||||||
|
# CONFIG_IOMMU_DEFAULT_DMA_STRICT is not set
|
||||||
|
CONFIG_IOMMU_DEFAULT_DMA_LAZY=y
|
||||||
|
# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set
|
||||||
|
CONFIG_VIRTIO_IOMMU=y
|
||||||
# CONFIG_IONIC is not set
|
# CONFIG_IONIC is not set
|
||||||
# CONFIG_IOSCHED_BFQ is not set
|
# CONFIG_IOSCHED_BFQ is not set
|
||||||
CONFIG_IO_STRICT_DEVMEM=y
|
CONFIG_IO_STRICT_DEVMEM=y
|
||||||
|
@ -4313,6 +4317,7 @@ CONFIG_OF_RESERVED_MEM=y
|
||||||
# CONFIG_OPROFILE_EVENT_MULTIPLEX is not set
|
# CONFIG_OPROFILE_EVENT_MULTIPLEX is not set
|
||||||
# CONFIG_OPT3001 is not set
|
# CONFIG_OPT3001 is not set
|
||||||
CONFIG_OPTIMIZE_INLINING=y
|
CONFIG_OPTIMIZE_INLINING=y
|
||||||
|
# CONFIG_LRU_GEN is not set
|
||||||
# CONFIG_ORANGEFS_FS is not set
|
# CONFIG_ORANGEFS_FS is not set
|
||||||
# CONFIG_ORION_WATCHDOG is not set
|
# CONFIG_ORION_WATCHDOG is not set
|
||||||
# CONFIG_OSF_PARTITION is not set
|
# CONFIG_OSF_PARTITION is not set
|
||||||
|
@ -6514,6 +6519,11 @@ CONFIG_UBIFS_FS_XATTR=y
|
||||||
CONFIG_UBIFS_FS_ZLIB=y
|
CONFIG_UBIFS_FS_ZLIB=y
|
||||||
CONFIG_UBIFS_FS_ZSTD=y
|
CONFIG_UBIFS_FS_ZSTD=y
|
||||||
# CONFIG_UBSAN is not set
|
# CONFIG_UBSAN is not set
|
||||||
|
# CONFIG_PAGE_POOL_STATS is not set
|
||||||
|
# CONFIG_IOSM is not set
|
||||||
|
# CONFIG_INTEL_IDXD is not set
|
||||||
|
# CONFIG_INTEL_IDXD_COMPAT is not set
|
||||||
|
|
||||||
CONFIG_UBSAN_ALIGNMENT=y
|
CONFIG_UBSAN_ALIGNMENT=y
|
||||||
# CONFIG_UCB1400_CORE is not set
|
# CONFIG_UCB1400_CORE is not set
|
||||||
# CONFIG_UCSI is not set
|
# CONFIG_UCSI is not set
|
||||||
|
@ -7355,6 +7365,7 @@ CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y
|
||||||
# CONFIG_DEBUG_KMAP_LOCAL is not set
|
# CONFIG_DEBUG_KMAP_LOCAL is not set
|
||||||
# CONFIG_DEFAULT_CODEL is not set
|
# CONFIG_DEFAULT_CODEL is not set
|
||||||
# CONFIG_DEFAULT_FQ is not set
|
# CONFIG_DEFAULT_FQ is not set
|
||||||
|
# CONFIG_DEFAULT_FQ_PIE is not set
|
||||||
CONFIG_DEFAULT_FQ_CODEL=y
|
CONFIG_DEFAULT_FQ_CODEL=y
|
||||||
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
|
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
|
||||||
CONFIG_DEFAULT_NET_SCH="fq_codel"
|
CONFIG_DEFAULT_NET_SCH="fq_codel"
|
||||||
|
|
37
root/target/linux/generic/hack-5.15/695-Quectel-RM520N.patch
Normal file
37
root/target/linux/generic/hack-5.15/695-Quectel-RM520N.patch
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
|
||||||
|
index a5e8374a8d71..e716395268fe 100644
|
||||||
|
--- a/drivers/usb/serial/option.c
|
||||||
|
+++ b/drivers/usb/serial/option.c
|
||||||
|
@@ -256,5 +256,7 @@ static void option_instat_callback(struct urb *urb);
|
||||||
|
#define QUECTEL_PRODUCT_EM12 0x0512
|
||||||
|
#define QUECTEL_PRODUCT_RM500Q 0x0800
|
||||||
|
+#define QUECTEL_PRODUCT_RM520N 0x0801
|
||||||
|
+#define QUECTEL_PRODUCT_RM500U_CN 0x0900
|
||||||
|
#define QUECTEL_PRODUCT_EC200S_CN 0x6002
|
||||||
|
#define QUECTEL_PRODUCT_EC200T 0x6026
|
||||||
|
#define QUECTEL_PRODUCT_RM500K 0x7001
|
||||||
|
@@ -1159,6 +1160,11 @@ static const struct usb_device_id option_ids[] = {
|
||||||
|
{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0, 0) },
|
||||||
|
{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0xff, 0x10),
|
||||||
|
.driver_info = ZLP },
|
||||||
|
+ { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM520N, 0xff, 0xff, 0x30) },
|
||||||
|
+ { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM520N, 0xff, 0, 0x40) },
|
||||||
|
+ { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM520N, 0xff, 0, 0) },
|
||||||
|
+ { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500U_CN, 0xff, 0, 0),
|
||||||
|
+ .driver_info = ZLP },
|
||||||
|
{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC200S_CN, 0xff, 0, 0) },
|
||||||
|
{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC200T, 0xff, 0, 0) },
|
||||||
|
{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500K, 0xff, 0x00, 0x00) },
|
||||||
|
diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c
|
||||||
|
index 709e3c59e340..0cb187def5bc 100644
|
||||||
|
--- a/drivers/net/usb/qmi_wwan.c
|
||||||
|
+++ b/drivers/net/usb/qmi_wwan.c
|
||||||
|
@@ -1087,6 +1087,8 @@ static const struct usb_device_id products[] = {
|
||||||
|
{QMI_MATCH_FF_FF_FF(0x2c7c, 0x0512)}, /* Quectel EG12/EM12 */
|
||||||
|
{QMI_MATCH_FF_FF_FF(0x2c7c, 0x0620)}, /* Quectel EM160R-GL */
|
||||||
|
{QMI_MATCH_FF_FF_FF(0x2c7c, 0x0800)}, /* Quectel RM500Q-GL */
|
||||||
|
+ {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0801)}, /* Quectel RM520N */
|
||||||
|
+ {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0900)}, /* Quectel RM500U_CN */
|
||||||
|
|
||||||
|
/* 3. Combined interface devices matching on interface number */
|
||||||
|
{QMI_FIXED_INTF(0x0408, 0xea42, 4)}, /* Yota / Megafon M100-1 */
|
|
@ -0,0 +1,45 @@
|
||||||
|
From f81700b6bb2eda3756247bce472d8eaf6f466f61 Mon Sep 17 00:00:00 2001
|
||||||
|
From: OpenWrt community <openwrt-devel@lists.openwrt.org>
|
||||||
|
Date: Wed, 13 Jul 2022 13:49:26 +0200
|
||||||
|
Subject: [PATCH] net/usb/qmi_wwan: add MeigLink modem support
|
||||||
|
|
||||||
|
---
|
||||||
|
drivers/net/usb/qmi_wwan.c | 1 +
|
||||||
|
drivers/usb/serial/option.c | 7 +++++++
|
||||||
|
2 files changed, 8 insertions(+)
|
||||||
|
|
||||||
|
--- a/drivers/net/usb/qmi_wwan.c
|
||||||
|
+++ b/drivers/net/usb/qmi_wwan.c
|
||||||
|
@@ -1085,8 +1085,9 @@ static const struct usb_device_id produc
|
||||||
|
{QMI_MATCH_FF_FF_FF(0x2c7c, 0x0512)}, /* Quectel EG12/EM12 */
|
||||||
|
{QMI_MATCH_FF_FF_FF(0x2c7c, 0x0620)}, /* Quectel EM160R-GL */
|
||||||
|
{QMI_MATCH_FF_FF_FF(0x2c7c, 0x0800)}, /* Quectel RM500Q-GL */
|
||||||
|
{QMI_MATCH_FF_FF_FF(0x2c7c, 0x0801)}, /* Quectel RM520N */
|
||||||
|
{QMI_MATCH_FF_FF_FF(0x2c7c, 0x0900)}, /* Quectel RM500U_CN */
|
||||||
|
+ {QMI_MATCH_FF_FF_FF(0x05c6, 0xf601)}, /* MeigLink SLM750 */
|
||||||
|
|
||||||
|
/* 3. Combined interface devices matching on interface number */
|
||||||
|
{QMI_FIXED_INTF(0x0408, 0xea42, 4)}, /* Yota / Megafon M100-1 */
|
||||||
|
--- a/drivers/usb/serial/option.c
|
||||||
|
+++ b/drivers/usb/serial/option.c
|
||||||
|
@@ -243,6 +243,8 @@ static void option_instat_callback(struc
|
||||||
|
#define UBLOX_PRODUCT_R6XX 0x90fa
|
||||||
|
/* These Yuga products use Qualcomm's vendor ID */
|
||||||
|
#define YUGA_PRODUCT_CLM920_NC5 0x9625
|
||||||
|
+/* These MeigLink products use Qualcomm's vendor ID */
|
||||||
|
+#define MEIGLINK_PRODUCT_SLM750 0xf601
|
||||||
|
|
||||||
|
#define QUECTEL_VENDOR_ID 0x2c7c
|
||||||
|
/* These Quectel products use Quectel's vendor ID */
|
||||||
|
@@ -1133,6 +1135,11 @@ static const struct usb_device_id option
|
||||||
|
{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EG95, 0xff, 0, 0) },
|
||||||
|
{ USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96),
|
||||||
|
.driver_info = RSVD(4) },
|
||||||
|
+ /* Meiglink products using Qualcomm vendor ID */
|
||||||
|
+ // Works OK. In case of some issues check macros that are used by Quectel Products
|
||||||
|
+ { USB_DEVICE_AND_INTERFACE_INFO(QUALCOMM_VENDOR_ID, MEIGLINK_PRODUCT_SLM750, 0xff, 0xff, 0xff),
|
||||||
|
+ .driver_info = NUMEP2 },
|
||||||
|
+ { USB_DEVICE_AND_INTERFACE_INFO(QUALCOMM_VENDOR_ID, MEIGLINK_PRODUCT_SLM750, 0xff, 0, 0) },
|
||||||
|
{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EP06, 0xff, 0xff, 0xff),
|
||||||
|
.driver_info = RSVD(1) | RSVD(2) | RSVD(3) | RSVD(4) | NUMEP2 },
|
||||||
|
{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EP06, 0xff, 0, 0) },
|
37
root/target/linux/generic/hack-5.4/695-Quectel-RM520N.patch
Normal file
37
root/target/linux/generic/hack-5.4/695-Quectel-RM520N.patch
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
|
||||||
|
index a5e8374a8d71..e716395268fe 100644
|
||||||
|
--- a/drivers/usb/serial/option.c
|
||||||
|
+++ b/drivers/usb/serial/option.c
|
||||||
|
@@ -256,5 +256,7 @@ static void option_instat_callback(struct urb *urb);
|
||||||
|
#define QUECTEL_PRODUCT_EM12 0x0512
|
||||||
|
#define QUECTEL_PRODUCT_RM500Q 0x0800
|
||||||
|
+#define QUECTEL_PRODUCT_RM520N 0x0801
|
||||||
|
+#define QUECTEL_PRODUCT_RM500U_CN 0x0900
|
||||||
|
#define QUECTEL_PRODUCT_EC200S_CN 0x6002
|
||||||
|
#define QUECTEL_PRODUCT_EC200T 0x6026
|
||||||
|
#define QUECTEL_PRODUCT_RM500K 0x7001
|
||||||
|
@@ -1159,6 +1160,11 @@ static const struct usb_device_id option_ids[] = {
|
||||||
|
{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0, 0) },
|
||||||
|
{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0xff, 0x10),
|
||||||
|
.driver_info = ZLP },
|
||||||
|
+ { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM520N, 0xff, 0xff, 0x30) },
|
||||||
|
+ { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM520N, 0xff, 0, 0x40) },
|
||||||
|
+ { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM520N, 0xff, 0, 0) },
|
||||||
|
+ { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500U_CN, 0xff, 0, 0),
|
||||||
|
+ .driver_info = ZLP },
|
||||||
|
{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC200S_CN, 0xff, 0, 0) },
|
||||||
|
{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC200T, 0xff, 0, 0) },
|
||||||
|
{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500K, 0xff, 0x00, 0x00) },
|
||||||
|
diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c
|
||||||
|
index 709e3c59e340..0cb187def5bc 100644
|
||||||
|
--- a/drivers/net/usb/qmi_wwan.c
|
||||||
|
+++ b/drivers/net/usb/qmi_wwan.c
|
||||||
|
@@ -1087,6 +1087,8 @@ static const struct usb_device_id products[] = {
|
||||||
|
{QMI_MATCH_FF_FF_FF(0x2c7c, 0x0512)}, /* Quectel EG12/EM12 */
|
||||||
|
{QMI_MATCH_FF_FF_FF(0x2c7c, 0x0620)}, /* Quectel EM160R-GL */
|
||||||
|
{QMI_MATCH_FF_FF_FF(0x2c7c, 0x0800)}, /* Quectel RM500Q-GL */
|
||||||
|
+ {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0801)}, /* Quectel RM520N */
|
||||||
|
+ {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0900)}, /* Quectel RM500U_CN */
|
||||||
|
|
||||||
|
/* 3. Combined interface devices matching on interface number */
|
||||||
|
{QMI_FIXED_INTF(0x0408, 0xea42, 4)}, /* Yota / Megafon M100-1 */
|
|
@ -1,498 +0,0 @@
|
||||||
CONFIG_AHCI_MVEBU=y
|
|
||||||
CONFIG_ALIGNMENT_TRAP=y
|
|
||||||
CONFIG_ARCH_CLOCKSOURCE_DATA=y
|
|
||||||
CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y
|
|
||||||
CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
|
|
||||||
CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
|
|
||||||
CONFIG_ARCH_HAS_SET_MEMORY=y
|
|
||||||
CONFIG_ARCH_HAS_SG_CHAIN=y
|
|
||||||
CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
|
|
||||||
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
|
|
||||||
CONFIG_ARCH_HAS_TICK_BROADCAST=y
|
|
||||||
CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
|
|
||||||
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
|
|
||||||
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
|
|
||||||
CONFIG_ARCH_MULTIPLATFORM=y
|
|
||||||
# CONFIG_ARCH_MULTI_CPU_AUTO is not set
|
|
||||||
CONFIG_ARCH_MULTI_V6_V7=y
|
|
||||||
CONFIG_ARCH_MULTI_V7=y
|
|
||||||
CONFIG_ARCH_MVEBU=y
|
|
||||||
CONFIG_ARCH_NR_GPIO=0
|
|
||||||
CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
|
|
||||||
CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
|
|
||||||
# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
|
|
||||||
# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
|
|
||||||
CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
|
|
||||||
CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
|
|
||||||
CONFIG_ARCH_SUPPORTS_UPROBES=y
|
|
||||||
CONFIG_ARCH_SUSPEND_POSSIBLE=y
|
|
||||||
CONFIG_ARCH_USE_BUILTIN_BSWAP=y
|
|
||||||
CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
|
|
||||||
CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
|
|
||||||
CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
|
|
||||||
CONFIG_ARM=y
|
|
||||||
CONFIG_ARMADA_370_CLK=y
|
|
||||||
CONFIG_ARMADA_370_XP_IRQ=y
|
|
||||||
CONFIG_ARMADA_370_XP_TIMER=y
|
|
||||||
CONFIG_ARMADA_38X_CLK=y
|
|
||||||
CONFIG_ARMADA_THERMAL=y
|
|
||||||
CONFIG_ARMADA_XP_CLK=y
|
|
||||||
CONFIG_ARM_APPENDED_DTB=y
|
|
||||||
# CONFIG_ARM_ARMADA_37XX_CPUFREQ is not set
|
|
||||||
CONFIG_ARM_ATAG_DTB_COMPAT=y
|
|
||||||
# CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND is not set
|
|
||||||
# CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER is not set
|
|
||||||
CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_MANGLE=y
|
|
||||||
CONFIG_ARM_CPU_SUSPEND=y
|
|
||||||
CONFIG_ARM_CRYPTO=y
|
|
||||||
CONFIG_ARM_ERRATA_720789=y
|
|
||||||
CONFIG_ARM_ERRATA_764369=y
|
|
||||||
CONFIG_ARM_GIC=y
|
|
||||||
CONFIG_ARM_GLOBAL_TIMER=y
|
|
||||||
CONFIG_ARM_HAS_SG_CHAIN=y
|
|
||||||
CONFIG_ARM_HEAVY_MB=y
|
|
||||||
CONFIG_ARM_L1_CACHE_SHIFT=6
|
|
||||||
CONFIG_ARM_L1_CACHE_SHIFT_6=y
|
|
||||||
# CONFIG_ARM_LPAE is not set
|
|
||||||
CONFIG_ARM_MODULE_PLTS=y
|
|
||||||
CONFIG_ARM_MVEBU_V7_CPUIDLE=y
|
|
||||||
CONFIG_ARM_PATCH_IDIV=y
|
|
||||||
CONFIG_ARM_PATCH_PHYS_VIRT=y
|
|
||||||
CONFIG_ARM_THUMB=y
|
|
||||||
# CONFIG_ARM_THUMBEE is not set
|
|
||||||
CONFIG_ARM_UNWIND=y
|
|
||||||
CONFIG_ARM_VIRT_EXT=y
|
|
||||||
CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH=y
|
|
||||||
CONFIG_ATA=y
|
|
||||||
CONFIG_ATAGS=y
|
|
||||||
CONFIG_AUTO_ZRELADDR=y
|
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
|
||||||
CONFIG_BLK_DEV_SD=y
|
|
||||||
CONFIG_BLK_MQ_PCI=y
|
|
||||||
CONFIG_BLK_SCSI_REQUEST=y
|
|
||||||
CONFIG_BOUNCE=y
|
|
||||||
# CONFIG_CACHE_FEROCEON_L2 is not set
|
|
||||||
CONFIG_CACHE_L2X0=y
|
|
||||||
CONFIG_CLKDEV_LOOKUP=y
|
|
||||||
CONFIG_CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK=y
|
|
||||||
CONFIG_CLKSRC_MMIO=y
|
|
||||||
CONFIG_CLONE_BACKWARDS=y
|
|
||||||
CONFIG_COMMON_CLK=y
|
|
||||||
CONFIG_CPUFREQ_DT=y
|
|
||||||
CONFIG_CPUFREQ_DT_PLATDEV=y
|
|
||||||
CONFIG_CPU_32v6K=y
|
|
||||||
CONFIG_CPU_32v7=y
|
|
||||||
CONFIG_CPU_ABRT_EV7=y
|
|
||||||
# CONFIG_CPU_BIG_ENDIAN is not set
|
|
||||||
# CONFIG_CPU_BPREDICT_DISABLE is not set
|
|
||||||
CONFIG_CPU_CACHE_V7=y
|
|
||||||
CONFIG_CPU_CACHE_VIPT=y
|
|
||||||
CONFIG_CPU_COPY_V6=y
|
|
||||||
CONFIG_CPU_CP15=y
|
|
||||||
CONFIG_CPU_CP15_MMU=y
|
|
||||||
CONFIG_CPU_FREQ=y
|
|
||||||
CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
|
|
||||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
|
|
||||||
CONFIG_CPU_FREQ_GOV_ATTR_SET=y
|
|
||||||
CONFIG_CPU_FREQ_GOV_COMMON=y
|
|
||||||
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
|
|
||||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
|
|
||||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
|
||||||
# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
|
|
||||||
# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
|
|
||||||
CONFIG_CPU_FREQ_STAT=y
|
|
||||||
CONFIG_CPU_HAS_ASID=y
|
|
||||||
# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set
|
|
||||||
# CONFIG_CPU_ICACHE_DISABLE is not set
|
|
||||||
CONFIG_CPU_IDLE=y
|
|
||||||
CONFIG_CPU_IDLE_GOV_LADDER=y
|
|
||||||
CONFIG_CPU_PABRT_V7=y
|
|
||||||
CONFIG_CPU_PJ4B=y
|
|
||||||
CONFIG_CPU_PM=y
|
|
||||||
CONFIG_CPU_RMAP=y
|
|
||||||
CONFIG_CPU_SPECTRE=y
|
|
||||||
CONFIG_CPU_THERMAL=y
|
|
||||||
CONFIG_CPU_THUMB_CAPABLE=y
|
|
||||||
CONFIG_CPU_TLB_V7=y
|
|
||||||
CONFIG_CPU_V7=y
|
|
||||||
CONFIG_CRC16=y
|
|
||||||
CONFIG_CRYPTO_ACOMP2=y
|
|
||||||
CONFIG_CRYPTO_AEAD=y
|
|
||||||
CONFIG_CRYPTO_AEAD2=y
|
|
||||||
CONFIG_CRYPTO_AES_ARM=y
|
|
||||||
CONFIG_CRYPTO_AES_ARM_BS=y
|
|
||||||
# CONFIG_CRYPTO_AES_ARM_CE is not set
|
|
||||||
# CONFIG_CRYPTO_CHACHA20_NEON is not set
|
|
||||||
CONFIG_CRYPTO_CRC32=y
|
|
||||||
CONFIG_CRYPTO_CRC32C=y
|
|
||||||
# CONFIG_CRYPTO_CRC32_ARM_CE is not set
|
|
||||||
CONFIG_CRYPTO_CRYPTD=y
|
|
||||||
CONFIG_CRYPTO_DEFLATE=y
|
|
||||||
CONFIG_CRYPTO_DES=y
|
|
||||||
CONFIG_CRYPTO_DEV_MARVELL_CESA=y
|
|
||||||
# CONFIG_CRYPTO_GHASH_ARM_CE is not set
|
|
||||||
CONFIG_CRYPTO_HASH=y
|
|
||||||
CONFIG_CRYPTO_HASH2=y
|
|
||||||
CONFIG_CRYPTO_HW=y
|
|
||||||
CONFIG_CRYPTO_LZO=y
|
|
||||||
CONFIG_CRYPTO_MANAGER=y
|
|
||||||
CONFIG_CRYPTO_MANAGER2=y
|
|
||||||
CONFIG_CRYPTO_NULL2=y
|
|
||||||
CONFIG_CRYPTO_RNG2=y
|
|
||||||
CONFIG_CRYPTO_SHA1=y
|
|
||||||
CONFIG_CRYPTO_SHA1_ARM=y
|
|
||||||
# CONFIG_CRYPTO_SHA1_ARM_CE is not set
|
|
||||||
CONFIG_CRYPTO_SHA1_ARM_NEON=y
|
|
||||||
CONFIG_CRYPTO_SHA256_ARM=y
|
|
||||||
# CONFIG_CRYPTO_SHA2_ARM_CE is not set
|
|
||||||
CONFIG_CRYPTO_SHA512_ARM=y
|
|
||||||
CONFIG_CRYPTO_SIMD=y
|
|
||||||
CONFIG_CRYPTO_WORKQUEUE=y
|
|
||||||
CONFIG_DCACHE_WORD_ACCESS=y
|
|
||||||
CONFIG_DEBUG_ALIGN_RODATA=y
|
|
||||||
CONFIG_DEBUG_INFO=y
|
|
||||||
CONFIG_DEBUG_LL=y
|
|
||||||
CONFIG_DEBUG_LL_INCLUDE="debug/8250.S"
|
|
||||||
CONFIG_DEBUG_MVEBU_UART0=y
|
|
||||||
# CONFIG_DEBUG_MVEBU_UART0_ALTERNATE is not set
|
|
||||||
# CONFIG_DEBUG_MVEBU_UART1_ALTERNATE is not set
|
|
||||||
CONFIG_DEBUG_UART_8250=y
|
|
||||||
# CONFIG_DEBUG_UART_8250_FLOW_CONTROL is not set
|
|
||||||
CONFIG_DEBUG_UART_8250_SHIFT=2
|
|
||||||
# CONFIG_DEBUG_UART_8250_WORD is not set
|
|
||||||
CONFIG_DEBUG_UART_PHYS=0xd0012000
|
|
||||||
CONFIG_DEBUG_UART_VIRT=0xfec12000
|
|
||||||
CONFIG_DEBUG_UNCOMPRESS=y
|
|
||||||
CONFIG_DEBUG_USER=y
|
|
||||||
CONFIG_DMADEVICES=y
|
|
||||||
CONFIG_DMA_ENGINE=y
|
|
||||||
CONFIG_DMA_ENGINE_RAID=y
|
|
||||||
CONFIG_DMA_OF=y
|
|
||||||
CONFIG_DTC=y
|
|
||||||
CONFIG_EARLY_PRINTK=y
|
|
||||||
CONFIG_EDAC_ATOMIC_SCRUB=y
|
|
||||||
CONFIG_EDAC_SUPPORT=y
|
|
||||||
CONFIG_EXT4_FS=y
|
|
||||||
CONFIG_EXTCON=y
|
|
||||||
# CONFIG_F2FS_CHECK_FS is not set
|
|
||||||
CONFIG_F2FS_FS=y
|
|
||||||
# CONFIG_F2FS_FS_SECURITY is not set
|
|
||||||
CONFIG_F2FS_FS_XATTR=y
|
|
||||||
CONFIG_F2FS_STAT_FS=y
|
|
||||||
CONFIG_FIXED_PHY=y
|
|
||||||
CONFIG_FIX_EARLYCON_MEM=y
|
|
||||||
CONFIG_FS_MBCACHE=y
|
|
||||||
CONFIG_GENERIC_ALLOCATOR=y
|
|
||||||
CONFIG_GENERIC_ARCH_TOPOLOGY=y
|
|
||||||
CONFIG_GENERIC_BUG=y
|
|
||||||
CONFIG_GENERIC_CLOCKEVENTS=y
|
|
||||||
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
|
|
||||||
CONFIG_GENERIC_CPU_AUTOPROBE=y
|
|
||||||
CONFIG_GENERIC_EARLY_IOREMAP=y
|
|
||||||
CONFIG_GENERIC_IDLE_POLL_SETUP=y
|
|
||||||
CONFIG_GENERIC_IO=y
|
|
||||||
CONFIG_GENERIC_IRQ_CHIP=y
|
|
||||||
CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
|
|
||||||
CONFIG_GENERIC_IRQ_SHOW=y
|
|
||||||
CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
|
|
||||||
CONFIG_GENERIC_MSI_IRQ=y
|
|
||||||
CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
|
|
||||||
CONFIG_GENERIC_PCI_IOMAP=y
|
|
||||||
CONFIG_GENERIC_PHY=y
|
|
||||||
CONFIG_GENERIC_SCHED_CLOCK=y
|
|
||||||
CONFIG_GENERIC_SMP_IDLE_THREAD=y
|
|
||||||
CONFIG_GENERIC_STRNCPY_FROM_USER=y
|
|
||||||
CONFIG_GENERIC_STRNLEN_USER=y
|
|
||||||
CONFIG_GLOB=y
|
|
||||||
CONFIG_GPIOLIB=y
|
|
||||||
CONFIG_GPIOLIB_IRQCHIP=y
|
|
||||||
CONFIG_GPIO_GENERIC=y
|
|
||||||
CONFIG_GPIO_GENERIC_PLATFORM=y
|
|
||||||
CONFIG_GPIO_MVEBU=y
|
|
||||||
CONFIG_GPIO_PCA953X=y
|
|
||||||
CONFIG_GPIO_PCA953X_IRQ=y
|
|
||||||
CONFIG_GPIO_SYSFS=y
|
|
||||||
# CONFIG_GRO_CELLS is not set
|
|
||||||
CONFIG_HANDLE_DOMAIN_IRQ=y
|
|
||||||
CONFIG_HARDEN_BRANCH_PREDICTOR=y
|
|
||||||
CONFIG_HARDIRQS_SW_RESEND=y
|
|
||||||
CONFIG_HAS_DMA=y
|
|
||||||
CONFIG_HAS_IOMEM=y
|
|
||||||
CONFIG_HAS_IOPORT_MAP=y
|
|
||||||
# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
|
|
||||||
CONFIG_HAVE_ARCH_AUDITSYSCALL=y
|
|
||||||
CONFIG_HAVE_ARCH_BITREVERSE=y
|
|
||||||
CONFIG_HAVE_ARCH_JUMP_LABEL=y
|
|
||||||
CONFIG_HAVE_ARCH_KGDB=y
|
|
||||||
CONFIG_HAVE_ARCH_PFN_VALID=y
|
|
||||||
CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
|
|
||||||
CONFIG_HAVE_ARCH_TRACEHOOK=y
|
|
||||||
CONFIG_HAVE_ARM_SCU=y
|
|
||||||
CONFIG_HAVE_ARM_SMCCC=y
|
|
||||||
CONFIG_HAVE_ARM_TWD=y
|
|
||||||
# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
|
|
||||||
CONFIG_HAVE_CC_STACKPROTECTOR=y
|
|
||||||
CONFIG_HAVE_CLK=y
|
|
||||||
CONFIG_HAVE_CLK_PREPARE=y
|
|
||||||
CONFIG_HAVE_CONTEXT_TRACKING=y
|
|
||||||
CONFIG_HAVE_C_RECORDMCOUNT=y
|
|
||||||
CONFIG_HAVE_DEBUG_KMEMLEAK=y
|
|
||||||
CONFIG_HAVE_DMA_API_DEBUG=y
|
|
||||||
CONFIG_HAVE_DMA_CONTIGUOUS=y
|
|
||||||
CONFIG_HAVE_DYNAMIC_FTRACE=y
|
|
||||||
CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y
|
|
||||||
CONFIG_HAVE_EBPF_JIT=y
|
|
||||||
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
|
|
||||||
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
|
|
||||||
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
|
|
||||||
CONFIG_HAVE_FUNCTION_TRACER=y
|
|
||||||
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
|
|
||||||
CONFIG_HAVE_IDE=y
|
|
||||||
CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
|
|
||||||
CONFIG_HAVE_MEMBLOCK=y
|
|
||||||
CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
|
|
||||||
CONFIG_HAVE_NET_DSA=y
|
|
||||||
CONFIG_HAVE_OPROFILE=y
|
|
||||||
CONFIG_HAVE_OPTPROBES=y
|
|
||||||
CONFIG_HAVE_PERF_EVENTS=y
|
|
||||||
CONFIG_HAVE_PERF_REGS=y
|
|
||||||
CONFIG_HAVE_PERF_USER_STACK_DUMP=y
|
|
||||||
CONFIG_HAVE_PROC_CPU=y
|
|
||||||
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
|
|
||||||
CONFIG_HAVE_SMP=y
|
|
||||||
CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
|
|
||||||
CONFIG_HAVE_UID16=y
|
|
||||||
CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
|
|
||||||
CONFIG_HIGHMEM=y
|
|
||||||
# CONFIG_HIGHPTE is not set
|
|
||||||
CONFIG_HOTPLUG_CPU=y
|
|
||||||
CONFIG_HWBM=y
|
|
||||||
CONFIG_HWMON=y
|
|
||||||
CONFIG_HW_RANDOM=y
|
|
||||||
# CONFIG_HW_RANDOM_OMAP is not set
|
|
||||||
CONFIG_HZ_FIXED=0
|
|
||||||
CONFIG_HZ_PERIODIC=y
|
|
||||||
CONFIG_I2C=y
|
|
||||||
CONFIG_I2C_BOARDINFO=y
|
|
||||||
CONFIG_I2C_CHARDEV=y
|
|
||||||
CONFIG_I2C_MV64XXX=y
|
|
||||||
# CONFIG_I2C_PXA is not set
|
|
||||||
CONFIG_INITRAMFS_SOURCE=""
|
|
||||||
CONFIG_IOMMU_HELPER=y
|
|
||||||
CONFIG_IRQCHIP=y
|
|
||||||
CONFIG_IRQ_DOMAIN=y
|
|
||||||
CONFIG_IRQ_DOMAIN_DEBUG=y
|
|
||||||
CONFIG_IRQ_DOMAIN_HIERARCHY=y
|
|
||||||
CONFIG_IRQ_FORCED_THREADING=y
|
|
||||||
CONFIG_IRQ_WORK=y
|
|
||||||
# CONFIG_IWMMXT is not set
|
|
||||||
CONFIG_JBD2=y
|
|
||||||
CONFIG_LEDS_GPIO=y
|
|
||||||
CONFIG_LEDS_PCA963X=y
|
|
||||||
CONFIG_LEDS_TLC591XX=y
|
|
||||||
CONFIG_LEDS_TRIGGER_DISK=y
|
|
||||||
CONFIG_LIBFDT=y
|
|
||||||
CONFIG_LOCK_SPIN_ON_OWNER=y
|
|
||||||
CONFIG_LZO_COMPRESS=y
|
|
||||||
CONFIG_LZO_DECOMPRESS=y
|
|
||||||
CONFIG_MACH_ARMADA_370=y
|
|
||||||
# CONFIG_MACH_ARMADA_375 is not set
|
|
||||||
CONFIG_MACH_ARMADA_38X=y
|
|
||||||
# CONFIG_MACH_ARMADA_39X is not set
|
|
||||||
CONFIG_MACH_ARMADA_XP=y
|
|
||||||
# CONFIG_MACH_DOVE is not set
|
|
||||||
CONFIG_MACH_MVEBU_ANY=y
|
|
||||||
CONFIG_MACH_MVEBU_V7=y
|
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
|
||||||
CONFIG_MANGLE_BOOTARGS=y
|
|
||||||
CONFIG_MARVELL_PHY=y
|
|
||||||
CONFIG_MDIO_BUS=y
|
|
||||||
CONFIG_MDIO_DEVICE=y
|
|
||||||
CONFIG_MDIO_I2C=y
|
|
||||||
CONFIG_MEMORY=y
|
|
||||||
CONFIG_MIGHT_HAVE_CACHE_L2X0=y
|
|
||||||
CONFIG_MIGHT_HAVE_PCI=y
|
|
||||||
CONFIG_MIGRATION=y
|
|
||||||
CONFIG_MMC=y
|
|
||||||
CONFIG_MMC_BLOCK=y
|
|
||||||
CONFIG_MMC_MVSDIO=y
|
|
||||||
CONFIG_MMC_SDHCI=y
|
|
||||||
# CONFIG_MMC_SDHCI_PCI is not set
|
|
||||||
CONFIG_MMC_SDHCI_PLTFM=y
|
|
||||||
CONFIG_MMC_SDHCI_PXAV3=y
|
|
||||||
# CONFIG_MMC_TIFM_SD is not set
|
|
||||||
CONFIG_MODULES_USE_ELF_REL=y
|
|
||||||
CONFIG_MTD_CFI_STAA=y
|
|
||||||
CONFIG_MTD_M25P80=y
|
|
||||||
CONFIG_MTD_NAND=y
|
|
||||||
CONFIG_MTD_NAND_ECC=y
|
|
||||||
CONFIG_MTD_NAND_PXA3xx=y
|
|
||||||
CONFIG_MTD_SPI_NOR=y
|
|
||||||
CONFIG_MTD_SPLIT_FIRMWARE=y
|
|
||||||
CONFIG_MTD_UBI=y
|
|
||||||
CONFIG_MTD_UBI_BEB_LIMIT=20
|
|
||||||
CONFIG_MTD_UBI_BLOCK=y
|
|
||||||
# CONFIG_MTD_UBI_FASTMAP is not set
|
|
||||||
# CONFIG_MTD_UBI_GLUEBI is not set
|
|
||||||
CONFIG_MTD_UBI_WL_THRESHOLD=4096
|
|
||||||
CONFIG_MULTI_IRQ_HANDLER=y
|
|
||||||
CONFIG_MUTEX_SPIN_ON_OWNER=y
|
|
||||||
CONFIG_MVEBU_CLK_COMMON=y
|
|
||||||
CONFIG_MVEBU_CLK_COREDIV=y
|
|
||||||
CONFIG_MVEBU_CLK_CPU=y
|
|
||||||
CONFIG_MVEBU_DEVBUS=y
|
|
||||||
CONFIG_MVEBU_MBUS=y
|
|
||||||
CONFIG_MVMDIO=y
|
|
||||||
CONFIG_MVNETA=y
|
|
||||||
CONFIG_MVNETA_BM=y
|
|
||||||
CONFIG_MVNETA_BM_ENABLE=y
|
|
||||||
CONFIG_MVPP2=y
|
|
||||||
CONFIG_MVSW61XX_PHY=y
|
|
||||||
CONFIG_MV_XOR=y
|
|
||||||
CONFIG_NEED_DMA_MAP_STATE=y
|
|
||||||
CONFIG_NEON=y
|
|
||||||
CONFIG_NET_DSA=y
|
|
||||||
CONFIG_NET_DSA_MV88E6XXX=y
|
|
||||||
CONFIG_NET_DSA_MV88E6XXX_GLOBAL2=y
|
|
||||||
CONFIG_NET_DSA_TAG_DSA=y
|
|
||||||
CONFIG_NET_DSA_TAG_EDSA=y
|
|
||||||
CONFIG_NET_FLOW_LIMIT=y
|
|
||||||
CONFIG_NET_SWITCHDEV=y
|
|
||||||
CONFIG_NLS=y
|
|
||||||
CONFIG_NOP_USB_XCEIV=y
|
|
||||||
CONFIG_NO_BOOTMEM=y
|
|
||||||
CONFIG_NR_CPUS=4
|
|
||||||
CONFIG_OF=y
|
|
||||||
CONFIG_OF_ADDRESS=y
|
|
||||||
CONFIG_OF_ADDRESS_PCI=y
|
|
||||||
CONFIG_OF_EARLY_FLATTREE=y
|
|
||||||
CONFIG_OF_FLATTREE=y
|
|
||||||
CONFIG_OF_GPIO=y
|
|
||||||
CONFIG_OF_IRQ=y
|
|
||||||
CONFIG_OF_MDIO=y
|
|
||||||
CONFIG_OF_NET=y
|
|
||||||
CONFIG_OF_PCI=y
|
|
||||||
CONFIG_OF_PCI_IRQ=y
|
|
||||||
CONFIG_OF_RESERVED_MEM=y
|
|
||||||
CONFIG_OLD_SIGACTION=y
|
|
||||||
CONFIG_OLD_SIGSUSPEND3=y
|
|
||||||
CONFIG_ORION_WATCHDOG=y
|
|
||||||
CONFIG_OUTER_CACHE=y
|
|
||||||
CONFIG_OUTER_CACHE_SYNC=y
|
|
||||||
CONFIG_PADATA=y
|
|
||||||
CONFIG_PAGE_OFFSET=0xC0000000
|
|
||||||
CONFIG_PCI=y
|
|
||||||
CONFIG_PCI_DOMAINS=y
|
|
||||||
CONFIG_PCI_DOMAINS_GENERIC=y
|
|
||||||
CONFIG_PCI_MSI=y
|
|
||||||
CONFIG_PCI_MSI_IRQ_DOMAIN=y
|
|
||||||
CONFIG_PCI_MVEBU=y
|
|
||||||
CONFIG_PERF_USE_VMALLOC=y
|
|
||||||
CONFIG_PGTABLE_LEVELS=2
|
|
||||||
CONFIG_PHYLIB=y
|
|
||||||
CONFIG_PHYLINK=y
|
|
||||||
# CONFIG_PHY_MVEBU_CP110_COMPHY is not set
|
|
||||||
CONFIG_PINCTRL=y
|
|
||||||
CONFIG_PINCTRL_ARMADA_370=y
|
|
||||||
CONFIG_PINCTRL_ARMADA_38X=y
|
|
||||||
CONFIG_PINCTRL_ARMADA_XP=y
|
|
||||||
CONFIG_PINCTRL_MVEBU=y
|
|
||||||
# CONFIG_PINCTRL_SINGLE is not set
|
|
||||||
CONFIG_PJ4B_ERRATA_4742=y
|
|
||||||
# CONFIG_PL310_ERRATA_588369 is not set
|
|
||||||
# CONFIG_PL310_ERRATA_727915 is not set
|
|
||||||
CONFIG_PL310_ERRATA_753970=y
|
|
||||||
# CONFIG_PL310_ERRATA_769419 is not set
|
|
||||||
CONFIG_PLAT_ORION=y
|
|
||||||
CONFIG_PM_OPP=y
|
|
||||||
CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=11
|
|
||||||
CONFIG_PWM=y
|
|
||||||
CONFIG_PWM_SYSFS=y
|
|
||||||
CONFIG_RATIONAL=y
|
|
||||||
CONFIG_RCU_NEED_SEGCBLIST=y
|
|
||||||
CONFIG_RCU_STALL_COMMON=y
|
|
||||||
CONFIG_REGMAP=y
|
|
||||||
CONFIG_REGMAP_I2C=y
|
|
||||||
CONFIG_REGMAP_MMIO=y
|
|
||||||
CONFIG_REGMAP_SPI=y
|
|
||||||
CONFIG_REGULATOR=y
|
|
||||||
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
|
||||||
CONFIG_RFS_ACCEL=y
|
|
||||||
CONFIG_RPS=y
|
|
||||||
CONFIG_RTC_CLASS=y
|
|
||||||
CONFIG_RTC_DRV_ARMADA38X=y
|
|
||||||
CONFIG_RTC_DRV_MV=y
|
|
||||||
CONFIG_RTC_I2C_AND_SPI=y
|
|
||||||
CONFIG_RTC_MC146818_LIB=y
|
|
||||||
CONFIG_RWSEM_SPIN_ON_OWNER=y
|
|
||||||
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
|
|
||||||
CONFIG_SATA_AHCI_PLATFORM=y
|
|
||||||
CONFIG_SATA_MV=y
|
|
||||||
CONFIG_SATA_PMP=y
|
|
||||||
# CONFIG_SCHED_INFO is not set
|
|
||||||
CONFIG_SCSI=y
|
|
||||||
CONFIG_SENSORS_PWM_FAN=y
|
|
||||||
CONFIG_SENSORS_TMP421=y
|
|
||||||
CONFIG_SERIAL_8250_DW=y
|
|
||||||
CONFIG_SERIAL_8250_FSL=y
|
|
||||||
CONFIG_SERIAL_MVEBU_CONSOLE=y
|
|
||||||
CONFIG_SERIAL_MVEBU_UART=y
|
|
||||||
CONFIG_SFP=y
|
|
||||||
CONFIG_SG_POOL=y
|
|
||||||
CONFIG_SMP=y
|
|
||||||
CONFIG_SMP_ON_UP=y
|
|
||||||
CONFIG_SOC_BUS=y
|
|
||||||
CONFIG_SPARSE_IRQ=y
|
|
||||||
CONFIG_SPI=y
|
|
||||||
# CONFIG_SPI_ARMADA_3700 is not set
|
|
||||||
CONFIG_SPI_MASTER=y
|
|
||||||
CONFIG_SPI_ORION=y
|
|
||||||
CONFIG_SRAM=y
|
|
||||||
CONFIG_SRAM_EXEC=y
|
|
||||||
CONFIG_SRCU=y
|
|
||||||
CONFIG_SWCONFIG=y
|
|
||||||
CONFIG_SWIOTLB=y
|
|
||||||
CONFIG_SWPHY=y
|
|
||||||
CONFIG_SWP_EMULATE=y
|
|
||||||
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
|
|
||||||
CONFIG_THERMAL=y
|
|
||||||
CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
|
|
||||||
CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
|
|
||||||
CONFIG_THERMAL_GOV_STEP_WISE=y
|
|
||||||
CONFIG_THERMAL_HWMON=y
|
|
||||||
CONFIG_THERMAL_OF=y
|
|
||||||
# CONFIG_THUMB2_KERNEL is not set
|
|
||||||
CONFIG_TICK_CPU_ACCOUNTING=y
|
|
||||||
CONFIG_TIMER_OF=y
|
|
||||||
CONFIG_TIMER_PROBE=y
|
|
||||||
CONFIG_TREE_RCU=y
|
|
||||||
CONFIG_TREE_SRCU=y
|
|
||||||
CONFIG_UBIFS_FS=y
|
|
||||||
# CONFIG_UBIFS_FS_ADVANCED_COMPR is not set
|
|
||||||
CONFIG_UBIFS_FS_LZO=y
|
|
||||||
CONFIG_UBIFS_FS_ZLIB=y
|
|
||||||
CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
|
|
||||||
CONFIG_USB=y
|
|
||||||
CONFIG_USB_COMMON=y
|
|
||||||
CONFIG_USB_EHCI_HCD=y
|
|
||||||
CONFIG_USB_EHCI_HCD_ORION=y
|
|
||||||
CONFIG_USB_EHCI_HCD_PLATFORM=y
|
|
||||||
CONFIG_USB_LEDS_TRIGGER_USBPORT=y
|
|
||||||
CONFIG_USB_PHY=y
|
|
||||||
CONFIG_USB_STORAGE=y
|
|
||||||
CONFIG_USB_SUPPORT=y
|
|
||||||
CONFIG_USB_XHCI_HCD=y
|
|
||||||
CONFIG_USB_XHCI_MVEBU=y
|
|
||||||
CONFIG_USB_XHCI_PLATFORM=y
|
|
||||||
CONFIG_USE_OF=y
|
|
||||||
CONFIG_VECTORS_BASE=0xffff0000
|
|
||||||
CONFIG_VFP=y
|
|
||||||
CONFIG_VFPv3=y
|
|
||||||
CONFIG_WATCHDOG_CORE=y
|
|
||||||
CONFIG_XPS=y
|
|
||||||
CONFIG_XZ_DEC_ARM=y
|
|
||||||
CONFIG_XZ_DEC_BCJ=y
|
|
||||||
CONFIG_ZBOOT_ROM_BSS=0x0
|
|
||||||
CONFIG_ZBOOT_ROM_TEXT=0x0
|
|
||||||
CONFIG_ZLIB_DEFLATE=y
|
|
||||||
CONFIG_ZLIB_INFLATE=y
|
|
|
@ -1,531 +0,0 @@
|
||||||
CONFIG_AHCI_MVEBU=y
|
|
||||||
CONFIG_ALIGNMENT_TRAP=y
|
|
||||||
CONFIG_ARCH_CLOCKSOURCE_DATA=y
|
|
||||||
CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y
|
|
||||||
CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
|
|
||||||
CONFIG_ARCH_HAS_FORTIFY_SOURCE=y
|
|
||||||
CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
|
|
||||||
CONFIG_ARCH_HAS_KCOV=y
|
|
||||||
CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y
|
|
||||||
CONFIG_ARCH_HAS_PHYS_TO_DMA=y
|
|
||||||
CONFIG_ARCH_HAS_SET_MEMORY=y
|
|
||||||
CONFIG_ARCH_HAS_SG_CHAIN=y
|
|
||||||
CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
|
|
||||||
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
|
|
||||||
CONFIG_ARCH_HAS_TICK_BROADCAST=y
|
|
||||||
CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
|
|
||||||
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
|
|
||||||
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
|
|
||||||
CONFIG_ARCH_MULTIPLATFORM=y
|
|
||||||
CONFIG_ARCH_MULTI_V6_V7=y
|
|
||||||
CONFIG_ARCH_MULTI_V7=y
|
|
||||||
CONFIG_ARCH_MVEBU=y
|
|
||||||
CONFIG_ARCH_NR_GPIO=0
|
|
||||||
CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
|
|
||||||
CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
|
|
||||||
CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
|
|
||||||
CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
|
|
||||||
CONFIG_ARCH_SUPPORTS_UPROBES=y
|
|
||||||
CONFIG_ARCH_SUSPEND_POSSIBLE=y
|
|
||||||
CONFIG_ARCH_USE_BUILTIN_BSWAP=y
|
|
||||||
CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
|
|
||||||
CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
|
|
||||||
CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
|
|
||||||
CONFIG_ARM=y
|
|
||||||
CONFIG_ARMADA375_USBCLUSTER_PHY=y
|
|
||||||
CONFIG_ARMADA_370_CLK=y
|
|
||||||
CONFIG_ARMADA_370_XP_IRQ=y
|
|
||||||
CONFIG_ARMADA_370_XP_TIMER=y
|
|
||||||
CONFIG_ARMADA_375_CLK=y
|
|
||||||
CONFIG_ARMADA_38X_CLK=y
|
|
||||||
CONFIG_ARMADA_39X_CLK=y
|
|
||||||
CONFIG_ARMADA_THERMAL=y
|
|
||||||
CONFIG_ARMADA_XP_CLK=y
|
|
||||||
CONFIG_ARM_APPENDED_DTB=y
|
|
||||||
# CONFIG_ARM_ARMADA_37XX_CPUFREQ is not set
|
|
||||||
CONFIG_ARM_ATAG_DTB_COMPAT=y
|
|
||||||
# CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND is not set
|
|
||||||
# CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER is not set
|
|
||||||
CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_MANGLE=y
|
|
||||||
CONFIG_ARM_CPU_SUSPEND=y
|
|
||||||
CONFIG_ARM_CRYPTO=y
|
|
||||||
CONFIG_ARM_ERRATA_720789=y
|
|
||||||
CONFIG_ARM_ERRATA_764369=y
|
|
||||||
CONFIG_ARM_GIC=y
|
|
||||||
CONFIG_ARM_GLOBAL_TIMER=y
|
|
||||||
CONFIG_ARM_HAS_SG_CHAIN=y
|
|
||||||
CONFIG_ARM_HEAVY_MB=y
|
|
||||||
CONFIG_ARM_L1_CACHE_SHIFT=6
|
|
||||||
CONFIG_ARM_L1_CACHE_SHIFT_6=y
|
|
||||||
# CONFIG_ARM_LPAE is not set
|
|
||||||
CONFIG_ARM_MODULE_PLTS=y
|
|
||||||
CONFIG_ARM_MVEBU_V7_CPUIDLE=y
|
|
||||||
CONFIG_ARM_PATCH_IDIV=y
|
|
||||||
CONFIG_ARM_PATCH_PHYS_VIRT=y
|
|
||||||
CONFIG_ARM_THUMB=y
|
|
||||||
# CONFIG_ARM_THUMBEE is not set
|
|
||||||
CONFIG_ARM_UNWIND=y
|
|
||||||
CONFIG_ARM_VIRT_EXT=y
|
|
||||||
CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH=y
|
|
||||||
CONFIG_ATA=y
|
|
||||||
CONFIG_ATAGS=y
|
|
||||||
CONFIG_AUTO_ZRELADDR=y
|
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
|
||||||
CONFIG_BLK_DEV_SD=y
|
|
||||||
CONFIG_BLK_MQ_PCI=y
|
|
||||||
CONFIG_BLK_SCSI_REQUEST=y
|
|
||||||
CONFIG_BOUNCE=y
|
|
||||||
# CONFIG_CACHE_FEROCEON_L2 is not set
|
|
||||||
CONFIG_CACHE_L2X0=y
|
|
||||||
# CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set
|
|
||||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
|
||||||
CONFIG_CLKDEV_LOOKUP=y
|
|
||||||
CONFIG_CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK=y
|
|
||||||
CONFIG_CLKSRC_MMIO=y
|
|
||||||
CONFIG_CLONE_BACKWARDS=y
|
|
||||||
CONFIG_COMMON_CLK=y
|
|
||||||
CONFIG_CPUFREQ_DT=y
|
|
||||||
CONFIG_CPUFREQ_DT_PLATDEV=y
|
|
||||||
CONFIG_CPU_32v6K=y
|
|
||||||
CONFIG_CPU_32v7=y
|
|
||||||
CONFIG_CPU_ABRT_EV7=y
|
|
||||||
# CONFIG_CPU_BIG_ENDIAN is not set
|
|
||||||
# CONFIG_CPU_BPREDICT_DISABLE is not set
|
|
||||||
CONFIG_CPU_CACHE_V7=y
|
|
||||||
CONFIG_CPU_CACHE_VIPT=y
|
|
||||||
CONFIG_CPU_COPY_V6=y
|
|
||||||
CONFIG_CPU_CP15=y
|
|
||||||
CONFIG_CPU_CP15_MMU=y
|
|
||||||
CONFIG_CPU_FREQ=y
|
|
||||||
CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
|
|
||||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
|
|
||||||
CONFIG_CPU_FREQ_GOV_ATTR_SET=y
|
|
||||||
CONFIG_CPU_FREQ_GOV_COMMON=y
|
|
||||||
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
|
|
||||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
|
|
||||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
|
||||||
# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
|
|
||||||
# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
|
|
||||||
CONFIG_CPU_FREQ_STAT=y
|
|
||||||
CONFIG_CPU_HAS_ASID=y
|
|
||||||
# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set
|
|
||||||
# CONFIG_CPU_ICACHE_DISABLE is not set
|
|
||||||
CONFIG_CPU_IDLE=y
|
|
||||||
CONFIG_CPU_IDLE_GOV_LADDER=y
|
|
||||||
CONFIG_CPU_ISOLATION=y
|
|
||||||
CONFIG_CPU_PABRT_V7=y
|
|
||||||
CONFIG_CPU_PJ4B=y
|
|
||||||
CONFIG_CPU_PM=y
|
|
||||||
CONFIG_CPU_RMAP=y
|
|
||||||
CONFIG_CPU_SPECTRE=y
|
|
||||||
CONFIG_CPU_THERMAL=y
|
|
||||||
CONFIG_CPU_THUMB_CAPABLE=y
|
|
||||||
CONFIG_CPU_TLB_V7=y
|
|
||||||
CONFIG_CPU_V7=y
|
|
||||||
CONFIG_CRASH_DUMP=y
|
|
||||||
CONFIG_CRC16=y
|
|
||||||
CONFIG_CRYPTO_ACOMP2=y
|
|
||||||
CONFIG_CRYPTO_AEAD=y
|
|
||||||
CONFIG_CRYPTO_AEAD2=y
|
|
||||||
CONFIG_CRYPTO_AES_ARM=y
|
|
||||||
CONFIG_CRYPTO_AES_ARM_BS=y
|
|
||||||
# CONFIG_CRYPTO_AES_ARM_CE is not set
|
|
||||||
# CONFIG_CRYPTO_CHACHA20_NEON is not set
|
|
||||||
CONFIG_CRYPTO_CRC32=y
|
|
||||||
CONFIG_CRYPTO_CRC32C=y
|
|
||||||
# CONFIG_CRYPTO_CRC32_ARM_CE is not set
|
|
||||||
CONFIG_CRYPTO_CRYPTD=y
|
|
||||||
CONFIG_CRYPTO_DEFLATE=y
|
|
||||||
CONFIG_CRYPTO_DES=y
|
|
||||||
CONFIG_CRYPTO_DEV_MARVELL_CESA=y
|
|
||||||
# CONFIG_CRYPTO_GHASH_ARM_CE is not set
|
|
||||||
CONFIG_CRYPTO_HASH=y
|
|
||||||
CONFIG_CRYPTO_HASH2=y
|
|
||||||
CONFIG_CRYPTO_HW=y
|
|
||||||
CONFIG_CRYPTO_LZO=y
|
|
||||||
CONFIG_CRYPTO_MANAGER=y
|
|
||||||
CONFIG_CRYPTO_MANAGER2=y
|
|
||||||
CONFIG_CRYPTO_NULL2=y
|
|
||||||
CONFIG_CRYPTO_RNG2=y
|
|
||||||
CONFIG_CRYPTO_SHA1=y
|
|
||||||
CONFIG_CRYPTO_SHA1_ARM=y
|
|
||||||
# CONFIG_CRYPTO_SHA1_ARM_CE is not set
|
|
||||||
CONFIG_CRYPTO_SHA1_ARM_NEON=y
|
|
||||||
CONFIG_CRYPTO_SHA256_ARM=y
|
|
||||||
# CONFIG_CRYPTO_SHA2_ARM_CE is not set
|
|
||||||
CONFIG_CRYPTO_SHA512_ARM=y
|
|
||||||
CONFIG_CRYPTO_SIMD=y
|
|
||||||
CONFIG_CRYPTO_WORKQUEUE=y
|
|
||||||
CONFIG_DCACHE_WORD_ACCESS=y
|
|
||||||
CONFIG_DEBUG_ALIGN_RODATA=y
|
|
||||||
CONFIG_DEBUG_INFO=y
|
|
||||||
CONFIG_DEBUG_LL=y
|
|
||||||
CONFIG_DEBUG_LL_INCLUDE="debug/8250.S"
|
|
||||||
CONFIG_DEBUG_MVEBU_UART0=y
|
|
||||||
# CONFIG_DEBUG_MVEBU_UART0_ALTERNATE is not set
|
|
||||||
# CONFIG_DEBUG_MVEBU_UART1_ALTERNATE is not set
|
|
||||||
CONFIG_DEBUG_UART_8250=y
|
|
||||||
# CONFIG_DEBUG_UART_8250_FLOW_CONTROL is not set
|
|
||||||
CONFIG_DEBUG_UART_8250_SHIFT=2
|
|
||||||
# CONFIG_DEBUG_UART_8250_WORD is not set
|
|
||||||
CONFIG_DEBUG_UART_PHYS=0xd0012000
|
|
||||||
CONFIG_DEBUG_UART_VIRT=0xfec12000
|
|
||||||
CONFIG_DEBUG_UNCOMPRESS=y
|
|
||||||
CONFIG_DEBUG_USER=y
|
|
||||||
CONFIG_DMADEVICES=y
|
|
||||||
CONFIG_DMA_ENGINE=y
|
|
||||||
CONFIG_DMA_ENGINE_RAID=y
|
|
||||||
CONFIG_DMA_OF=y
|
|
||||||
CONFIG_DTC=y
|
|
||||||
CONFIG_EARLY_PRINTK=y
|
|
||||||
CONFIG_EDAC_ATOMIC_SCRUB=y
|
|
||||||
CONFIG_EDAC_SUPPORT=y
|
|
||||||
CONFIG_EXT4_FS=y
|
|
||||||
CONFIG_EXTCON=y
|
|
||||||
# CONFIG_F2FS_CHECK_FS is not set
|
|
||||||
# CONFIG_F2FS_FS is not set
|
|
||||||
# CONFIG_F2FS_FS_SECURITY is not set
|
|
||||||
# CONFIG_F2FS_FS_XATTR is not set
|
|
||||||
# CONFIG_F2FS_STAT_FS is not set
|
|
||||||
CONFIG_FIXED_PHY=y
|
|
||||||
CONFIG_FIX_EARLYCON_MEM=y
|
|
||||||
CONFIG_FS_IOMAP=y
|
|
||||||
CONFIG_FS_MBCACHE=y
|
|
||||||
CONFIG_GENERIC_ALLOCATOR=y
|
|
||||||
CONFIG_GENERIC_ARCH_TOPOLOGY=y
|
|
||||||
CONFIG_GENERIC_BUG=y
|
|
||||||
CONFIG_GENERIC_CLOCKEVENTS=y
|
|
||||||
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
|
|
||||||
CONFIG_GENERIC_CPU_AUTOPROBE=y
|
|
||||||
CONFIG_GENERIC_EARLY_IOREMAP=y
|
|
||||||
CONFIG_GENERIC_IDLE_POLL_SETUP=y
|
|
||||||
CONFIG_GENERIC_IRQ_CHIP=y
|
|
||||||
CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
|
|
||||||
CONFIG_GENERIC_IRQ_MULTI_HANDLER=y
|
|
||||||
CONFIG_GENERIC_IRQ_SHOW=y
|
|
||||||
CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
|
|
||||||
CONFIG_GENERIC_MSI_IRQ=y
|
|
||||||
CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
|
|
||||||
CONFIG_GENERIC_PCI_IOMAP=y
|
|
||||||
CONFIG_GENERIC_PHY=y
|
|
||||||
CONFIG_GENERIC_SCHED_CLOCK=y
|
|
||||||
CONFIG_GENERIC_SMP_IDLE_THREAD=y
|
|
||||||
CONFIG_GENERIC_STRNCPY_FROM_USER=y
|
|
||||||
CONFIG_GENERIC_STRNLEN_USER=y
|
|
||||||
CONFIG_GLOB=y
|
|
||||||
CONFIG_GPIOLIB=y
|
|
||||||
CONFIG_GPIOLIB_IRQCHIP=y
|
|
||||||
CONFIG_GPIO_GENERIC=y
|
|
||||||
CONFIG_GPIO_GENERIC_PLATFORM=y
|
|
||||||
CONFIG_GPIO_MVEBU=y
|
|
||||||
CONFIG_GPIO_PCA953X=y
|
|
||||||
CONFIG_GPIO_PCA953X_IRQ=y
|
|
||||||
CONFIG_GPIO_SYSFS=y
|
|
||||||
CONFIG_HANDLE_DOMAIN_IRQ=y
|
|
||||||
CONFIG_HARDEN_BRANCH_PREDICTOR=y
|
|
||||||
CONFIG_HARDIRQS_SW_RESEND=y
|
|
||||||
CONFIG_HAS_DMA=y
|
|
||||||
CONFIG_HAS_IOMEM=y
|
|
||||||
CONFIG_HAS_IOPORT_MAP=y
|
|
||||||
CONFIG_HAVE_ARCH_AUDITSYSCALL=y
|
|
||||||
CONFIG_HAVE_ARCH_BITREVERSE=y
|
|
||||||
CONFIG_HAVE_ARCH_JUMP_LABEL=y
|
|
||||||
CONFIG_HAVE_ARCH_KGDB=y
|
|
||||||
CONFIG_HAVE_ARCH_PFN_VALID=y
|
|
||||||
CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
|
|
||||||
CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y
|
|
||||||
CONFIG_HAVE_ARCH_TRACEHOOK=y
|
|
||||||
CONFIG_HAVE_ARM_SCU=y
|
|
||||||
CONFIG_HAVE_ARM_SMCCC=y
|
|
||||||
CONFIG_HAVE_ARM_TWD=y
|
|
||||||
CONFIG_HAVE_CLK=y
|
|
||||||
CONFIG_HAVE_CLK_PREPARE=y
|
|
||||||
CONFIG_HAVE_CONTEXT_TRACKING=y
|
|
||||||
CONFIG_HAVE_C_RECORDMCOUNT=y
|
|
||||||
CONFIG_HAVE_DEBUG_KMEMLEAK=y
|
|
||||||
CONFIG_HAVE_DMA_CONTIGUOUS=y
|
|
||||||
CONFIG_HAVE_DYNAMIC_FTRACE=y
|
|
||||||
CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y
|
|
||||||
CONFIG_HAVE_EBPF_JIT=y
|
|
||||||
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
|
|
||||||
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
|
|
||||||
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
|
|
||||||
CONFIG_HAVE_FUNCTION_TRACER=y
|
|
||||||
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
|
|
||||||
CONFIG_HAVE_IDE=y
|
|
||||||
CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
|
|
||||||
CONFIG_HAVE_LD_DEAD_CODE_DATA_ELIMINATION=y
|
|
||||||
CONFIG_HAVE_MEMBLOCK=y
|
|
||||||
CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
|
|
||||||
CONFIG_HAVE_NET_DSA=y
|
|
||||||
CONFIG_HAVE_OPROFILE=y
|
|
||||||
CONFIG_HAVE_OPTPROBES=y
|
|
||||||
CONFIG_HAVE_PERF_EVENTS=y
|
|
||||||
CONFIG_HAVE_PERF_REGS=y
|
|
||||||
CONFIG_HAVE_PERF_USER_STACK_DUMP=y
|
|
||||||
CONFIG_HAVE_PROC_CPU=y
|
|
||||||
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
|
|
||||||
CONFIG_HAVE_RSEQ=y
|
|
||||||
CONFIG_HAVE_SMP=y
|
|
||||||
CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
|
|
||||||
CONFIG_HAVE_UID16=y
|
|
||||||
CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
|
|
||||||
CONFIG_HIGHMEM=y
|
|
||||||
# CONFIG_HIGHPTE is not set
|
|
||||||
CONFIG_HOTPLUG_CPU=y
|
|
||||||
CONFIG_HWBM=y
|
|
||||||
CONFIG_HWMON=y
|
|
||||||
CONFIG_HW_RANDOM=y
|
|
||||||
CONFIG_HW_RANDOM_OMAP=y
|
|
||||||
CONFIG_HZ_FIXED=0
|
|
||||||
CONFIG_HZ_PERIODIC=y
|
|
||||||
CONFIG_I2C=y
|
|
||||||
CONFIG_I2C_BOARDINFO=y
|
|
||||||
CONFIG_I2C_CHARDEV=y
|
|
||||||
CONFIG_I2C_MV64XXX=y
|
|
||||||
# CONFIG_I2C_PXA is not set
|
|
||||||
CONFIG_INITRAMFS_SOURCE=""
|
|
||||||
CONFIG_IP6_NF_IPTABLES=y
|
|
||||||
CONFIG_IP6_NF_MATCH_SRH=y
|
|
||||||
CONFIG_IPV6=y
|
|
||||||
CONFIG_IRQCHIP=y
|
|
||||||
CONFIG_IRQ_DOMAIN=y
|
|
||||||
CONFIG_IRQ_DOMAIN_HIERARCHY=y
|
|
||||||
CONFIG_IRQ_FORCED_THREADING=y
|
|
||||||
CONFIG_IRQ_WORK=y
|
|
||||||
# CONFIG_IWMMXT is not set
|
|
||||||
CONFIG_JBD2=y
|
|
||||||
CONFIG_LEDS_GPIO=y
|
|
||||||
CONFIG_LEDS_PCA963X=y
|
|
||||||
CONFIG_LEDS_TLC591XX=y
|
|
||||||
CONFIG_LEDS_TRIGGER_DISK=y
|
|
||||||
CONFIG_LIBFDT=y
|
|
||||||
CONFIG_LOCK_DEBUGGING_SUPPORT=y
|
|
||||||
CONFIG_LOCK_SPIN_ON_OWNER=y
|
|
||||||
CONFIG_LZO_COMPRESS=y
|
|
||||||
CONFIG_LZO_DECOMPRESS=y
|
|
||||||
CONFIG_MACH_ARMADA_370=y
|
|
||||||
CONFIG_MACH_ARMADA_375=y
|
|
||||||
CONFIG_MACH_ARMADA_38X=y
|
|
||||||
CONFIG_MACH_ARMADA_39X=y
|
|
||||||
CONFIG_MACH_ARMADA_XP=y
|
|
||||||
# CONFIG_MACH_DOVE is not set
|
|
||||||
CONFIG_MACH_MVEBU_ANY=y
|
|
||||||
CONFIG_MACH_MVEBU_V7=y
|
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
|
||||||
CONFIG_MANGLE_BOOTARGS=y
|
|
||||||
CONFIG_MARVELL_PHY=y
|
|
||||||
CONFIG_MDIO_BUS=y
|
|
||||||
CONFIG_MDIO_DEVICE=y
|
|
||||||
CONFIG_MDIO_I2C=y
|
|
||||||
CONFIG_MEMFD_CREATE=y
|
|
||||||
CONFIG_MEMORY=y
|
|
||||||
CONFIG_MFD_SYSCON=y
|
|
||||||
CONFIG_MIGHT_HAVE_CACHE_L2X0=y
|
|
||||||
CONFIG_MIGHT_HAVE_PCI=y
|
|
||||||
CONFIG_MIGRATION=y
|
|
||||||
CONFIG_MMC=y
|
|
||||||
CONFIG_MMC_BLOCK=y
|
|
||||||
CONFIG_MMC_MVSDIO=y
|
|
||||||
CONFIG_MMC_SDHCI=y
|
|
||||||
# CONFIG_MMC_SDHCI_PCI is not set
|
|
||||||
CONFIG_MMC_SDHCI_PLTFM=y
|
|
||||||
CONFIG_MMC_SDHCI_PXAV3=y
|
|
||||||
# CONFIG_MMC_TIFM_SD is not set
|
|
||||||
CONFIG_MODULES_USE_ELF_REL=y
|
|
||||||
CONFIG_MTD_CFI_STAA=y
|
|
||||||
CONFIG_MTD_M25P80=y
|
|
||||||
CONFIG_MTD_NAND=y
|
|
||||||
CONFIG_MTD_NAND_ECC=y
|
|
||||||
CONFIG_MTD_NAND_MARVELL=y
|
|
||||||
CONFIG_MTD_SPI_NOR=y
|
|
||||||
CONFIG_MTD_SPLIT_FIRMWARE=y
|
|
||||||
CONFIG_MTD_UBI=y
|
|
||||||
CONFIG_MTD_UBI_BEB_LIMIT=20
|
|
||||||
CONFIG_MTD_UBI_BLOCK=y
|
|
||||||
# CONFIG_MTD_UBI_FASTMAP is not set
|
|
||||||
# CONFIG_MTD_UBI_GLUEBI is not set
|
|
||||||
CONFIG_MTD_UBI_WL_THRESHOLD=4096
|
|
||||||
CONFIG_MUTEX_SPIN_ON_OWNER=y
|
|
||||||
CONFIG_MVEBU_CLK_COMMON=y
|
|
||||||
CONFIG_MVEBU_CLK_COREDIV=y
|
|
||||||
CONFIG_MVEBU_CLK_CPU=y
|
|
||||||
CONFIG_MVEBU_DEVBUS=y
|
|
||||||
CONFIG_MVEBU_MBUS=y
|
|
||||||
CONFIG_MVMDIO=y
|
|
||||||
CONFIG_MVNETA=y
|
|
||||||
CONFIG_MVNETA_BM=y
|
|
||||||
CONFIG_MVNETA_BM_ENABLE=y
|
|
||||||
CONFIG_MVPP2=y
|
|
||||||
CONFIG_MVSW61XX_PHY=y
|
|
||||||
CONFIG_MV_XOR=y
|
|
||||||
CONFIG_NEED_DMA_MAP_STATE=y
|
|
||||||
CONFIG_NEON=y
|
|
||||||
CONFIG_NETFILTER=y
|
|
||||||
CONFIG_NETFILTER_ADVANCED=y
|
|
||||||
CONFIG_NETFILTER_XTABLES=y
|
|
||||||
CONFIG_NET_DSA=y
|
|
||||||
CONFIG_NET_DSA_LEGACY=y
|
|
||||||
CONFIG_NET_DSA_MV88E6XXX=y
|
|
||||||
CONFIG_NET_DSA_MV88E6XXX_GLOBAL2=y
|
|
||||||
# CONFIG_NET_DSA_MV88E6XXX_PTP is not set
|
|
||||||
# CONFIG_NET_DSA_REALTEK_SMI is not set
|
|
||||||
CONFIG_NET_DSA_TAG_DSA=y
|
|
||||||
CONFIG_NET_DSA_TAG_EDSA=y
|
|
||||||
# CONFIG_NET_DSA_VITESSE_VSC73XX is not set
|
|
||||||
CONFIG_NET_FLOW_LIMIT=y
|
|
||||||
CONFIG_NET_SWITCHDEV=y
|
|
||||||
# CONFIG_NET_VENDOR_CORTINA is not set
|
|
||||||
# CONFIG_NET_VENDOR_MICROSEMI is not set
|
|
||||||
# CONFIG_NET_VENDOR_NI is not set
|
|
||||||
# CONFIG_NET_VENDOR_SOCIONEXT is not set
|
|
||||||
# CONFIG_NF_LOG_IPV6 is not set
|
|
||||||
CONFIG_NF_TPROXY_IPV4=y
|
|
||||||
CONFIG_NLS=y
|
|
||||||
CONFIG_NOP_USB_XCEIV=y
|
|
||||||
CONFIG_NO_BOOTMEM=y
|
|
||||||
CONFIG_NR_CPUS=4
|
|
||||||
CONFIG_NVMEM=y
|
|
||||||
CONFIG_OF=y
|
|
||||||
CONFIG_OF_ADDRESS=y
|
|
||||||
CONFIG_OF_EARLY_FLATTREE=y
|
|
||||||
CONFIG_OF_FLATTREE=y
|
|
||||||
CONFIG_OF_GPIO=y
|
|
||||||
CONFIG_OF_IRQ=y
|
|
||||||
CONFIG_OF_KOBJ=y
|
|
||||||
CONFIG_OF_MDIO=y
|
|
||||||
CONFIG_OF_NET=y
|
|
||||||
CONFIG_OF_RESERVED_MEM=y
|
|
||||||
CONFIG_OLD_SIGACTION=y
|
|
||||||
CONFIG_OLD_SIGSUSPEND3=y
|
|
||||||
CONFIG_ORION_WATCHDOG=y
|
|
||||||
CONFIG_OUTER_CACHE=y
|
|
||||||
CONFIG_OUTER_CACHE_SYNC=y
|
|
||||||
# CONFIG_OVERLAY_FS_XINO_AUTO is not set
|
|
||||||
CONFIG_PADATA=y
|
|
||||||
CONFIG_PAGE_OFFSET=0xC0000000
|
|
||||||
CONFIG_PCI=y
|
|
||||||
CONFIG_PCI_DOMAINS=y
|
|
||||||
CONFIG_PCI_DOMAINS_GENERIC=y
|
|
||||||
CONFIG_PCI_MSI=y
|
|
||||||
CONFIG_PCI_MSI_IRQ_DOMAIN=y
|
|
||||||
CONFIG_PCI_MVEBU=y
|
|
||||||
# CONFIG_PCI_V3_SEMI is not set
|
|
||||||
CONFIG_PERF_USE_VMALLOC=y
|
|
||||||
CONFIG_PGTABLE_LEVELS=2
|
|
||||||
CONFIG_PHYLIB=y
|
|
||||||
CONFIG_PHYLINK=y
|
|
||||||
# CONFIG_PHY_MVEBU_CP110_COMPHY is not set
|
|
||||||
CONFIG_PINCTRL=y
|
|
||||||
CONFIG_PINCTRL_ARMADA_370=y
|
|
||||||
CONFIG_PINCTRL_ARMADA_375=y
|
|
||||||
CONFIG_PINCTRL_ARMADA_38X=y
|
|
||||||
CONFIG_PINCTRL_ARMADA_39X=y
|
|
||||||
CONFIG_PINCTRL_ARMADA_XP=y
|
|
||||||
CONFIG_PINCTRL_MVEBU=y
|
|
||||||
# CONFIG_PINCTRL_SINGLE is not set
|
|
||||||
CONFIG_PJ4B_ERRATA_4742=y
|
|
||||||
# CONFIG_PL310_ERRATA_588369 is not set
|
|
||||||
# CONFIG_PL310_ERRATA_727915 is not set
|
|
||||||
CONFIG_PL310_ERRATA_753970=y
|
|
||||||
# CONFIG_PL310_ERRATA_769419 is not set
|
|
||||||
CONFIG_PLAT_ORION=y
|
|
||||||
CONFIG_PM_OPP=y
|
|
||||||
CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=11
|
|
||||||
CONFIG_PROC_VMCORE=y
|
|
||||||
CONFIG_PROC_VMCORE_DEVICE_DUMP=y
|
|
||||||
CONFIG_PWM=y
|
|
||||||
CONFIG_PWM_SYSFS=y
|
|
||||||
CONFIG_RATIONAL=y
|
|
||||||
CONFIG_RCU_NEED_SEGCBLIST=y
|
|
||||||
CONFIG_RCU_STALL_COMMON=y
|
|
||||||
CONFIG_REFCOUNT_FULL=y
|
|
||||||
CONFIG_REGMAP=y
|
|
||||||
CONFIG_REGMAP_I2C=y
|
|
||||||
CONFIG_REGMAP_MMIO=y
|
|
||||||
CONFIG_REGMAP_SPI=y
|
|
||||||
CONFIG_REGULATOR=y
|
|
||||||
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
|
||||||
CONFIG_RFS_ACCEL=y
|
|
||||||
CONFIG_RPS=y
|
|
||||||
CONFIG_RSEQ=y
|
|
||||||
CONFIG_RTC_CLASS=y
|
|
||||||
CONFIG_RTC_DRV_ARMADA38X=y
|
|
||||||
CONFIG_RTC_DRV_MV=y
|
|
||||||
CONFIG_RTC_I2C_AND_SPI=y
|
|
||||||
CONFIG_RTC_MC146818_LIB=y
|
|
||||||
CONFIG_RWSEM_SPIN_ON_OWNER=y
|
|
||||||
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
|
|
||||||
CONFIG_SATA_AHCI_PLATFORM=y
|
|
||||||
CONFIG_SATA_MV=y
|
|
||||||
CONFIG_SATA_PMP=y
|
|
||||||
CONFIG_SCSI=y
|
|
||||||
CONFIG_SENSORS_PWM_FAN=y
|
|
||||||
CONFIG_SENSORS_TMP421=y
|
|
||||||
CONFIG_SERIAL_8250_DW=y
|
|
||||||
CONFIG_SERIAL_8250_FSL=y
|
|
||||||
CONFIG_SERIAL_MVEBU_CONSOLE=y
|
|
||||||
CONFIG_SERIAL_MVEBU_UART=y
|
|
||||||
CONFIG_SFP=y
|
|
||||||
CONFIG_SGL_ALLOC=y
|
|
||||||
CONFIG_SG_POOL=y
|
|
||||||
CONFIG_SMP=y
|
|
||||||
CONFIG_SMP_ON_UP=y
|
|
||||||
CONFIG_SOC_BUS=y
|
|
||||||
CONFIG_SPARSE_IRQ=y
|
|
||||||
CONFIG_SPI=y
|
|
||||||
# CONFIG_SPI_ARMADA_3700 is not set
|
|
||||||
CONFIG_SPI_MASTER=y
|
|
||||||
CONFIG_SPI_MEM=y
|
|
||||||
CONFIG_SPI_ORION=y
|
|
||||||
CONFIG_SRAM=y
|
|
||||||
CONFIG_SRAM_EXEC=y
|
|
||||||
CONFIG_SRCU=y
|
|
||||||
CONFIG_STACKPROTECTOR=y
|
|
||||||
CONFIG_STACKPROTECTOR_STRONG=y
|
|
||||||
CONFIG_SWCONFIG=y
|
|
||||||
CONFIG_SWPHY=y
|
|
||||||
CONFIG_SWP_EMULATE=y
|
|
||||||
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
|
|
||||||
CONFIG_THERMAL=y
|
|
||||||
CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
|
|
||||||
CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
|
|
||||||
CONFIG_THERMAL_GOV_STEP_WISE=y
|
|
||||||
CONFIG_THERMAL_HWMON=y
|
|
||||||
CONFIG_THERMAL_OF=y
|
|
||||||
# CONFIG_THUMB2_KERNEL is not set
|
|
||||||
CONFIG_TICK_CPU_ACCOUNTING=y
|
|
||||||
CONFIG_TIMER_OF=y
|
|
||||||
CONFIG_TIMER_PROBE=y
|
|
||||||
CONFIG_TREE_RCU=y
|
|
||||||
CONFIG_TREE_SRCU=y
|
|
||||||
CONFIG_UBIFS_FS=y
|
|
||||||
# CONFIG_UBIFS_FS_ADVANCED_COMPR is not set
|
|
||||||
CONFIG_UBIFS_FS_LZO=y
|
|
||||||
CONFIG_UBIFS_FS_XATTR=y
|
|
||||||
CONFIG_UBIFS_FS_ZLIB=y
|
|
||||||
CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
|
|
||||||
CONFIG_USB=y
|
|
||||||
CONFIG_USB_COMMON=y
|
|
||||||
CONFIG_USB_EHCI_HCD=y
|
|
||||||
CONFIG_USB_EHCI_HCD_ORION=y
|
|
||||||
CONFIG_USB_EHCI_HCD_PLATFORM=y
|
|
||||||
CONFIG_USB_LEDS_TRIGGER_USBPORT=y
|
|
||||||
CONFIG_USB_PHY=y
|
|
||||||
CONFIG_USB_STORAGE=y
|
|
||||||
CONFIG_USB_SUPPORT=y
|
|
||||||
CONFIG_USB_XHCI_HCD=y
|
|
||||||
CONFIG_USB_XHCI_MVEBU=y
|
|
||||||
CONFIG_USB_XHCI_PLATFORM=y
|
|
||||||
CONFIG_USE_OF=y
|
|
||||||
CONFIG_VFP=y
|
|
||||||
CONFIG_VFPv3=y
|
|
||||||
CONFIG_WATCHDOG_CORE=y
|
|
||||||
CONFIG_XDP_SOCKETS=y
|
|
||||||
CONFIG_XPS=y
|
|
||||||
CONFIG_XZ_DEC_ARM=y
|
|
||||||
CONFIG_XZ_DEC_BCJ=y
|
|
||||||
CONFIG_ZBOOT_ROM_BSS=0x0
|
|
||||||
CONFIG_ZBOOT_ROM_TEXT=0x0
|
|
||||||
CONFIG_ZLIB_DEFLATE=y
|
|
||||||
CONFIG_ZLIB_INFLATE=y
|
|
|
@ -1,468 +0,0 @@
|
||||||
CONFIG_AHCI_MVEBU=y
|
|
||||||
CONFIG_ALIGNMENT_TRAP=y
|
|
||||||
CONFIG_ARCH_32BIT_OFF_T=y
|
|
||||||
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
|
|
||||||
CONFIG_ARCH_KEEP_MEMBLOCK=y
|
|
||||||
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
|
|
||||||
CONFIG_ARCH_MULTIPLATFORM=y
|
|
||||||
CONFIG_ARCH_MULTI_V6_V7=y
|
|
||||||
CONFIG_ARCH_MULTI_V7=y
|
|
||||||
CONFIG_ARCH_MVEBU=y
|
|
||||||
CONFIG_ARCH_NR_GPIO=0
|
|
||||||
CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
|
|
||||||
CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
|
|
||||||
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
|
|
||||||
CONFIG_ARCH_SPARSEMEM_ENABLE=y
|
|
||||||
CONFIG_ARCH_SUSPEND_POSSIBLE=y
|
|
||||||
CONFIG_ARM=y
|
|
||||||
CONFIG_ARMADA_370_CLK=y
|
|
||||||
CONFIG_ARMADA_370_XP_IRQ=y
|
|
||||||
CONFIG_ARMADA_370_XP_TIMER=y
|
|
||||||
# CONFIG_ARMADA_37XX_WATCHDOG is not set
|
|
||||||
CONFIG_ARMADA_38X_CLK=y
|
|
||||||
CONFIG_ARMADA_THERMAL=y
|
|
||||||
CONFIG_ARMADA_XP_CLK=y
|
|
||||||
CONFIG_ARM_APPENDED_DTB=y
|
|
||||||
# CONFIG_ARM_ARMADA_37XX_CPUFREQ is not set
|
|
||||||
# CONFIG_ARM_ARMADA_8K_CPUFREQ is not set
|
|
||||||
CONFIG_ARM_ATAG_DTB_COMPAT=y
|
|
||||||
# CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER is not set
|
|
||||||
CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_MANGLE=y
|
|
||||||
CONFIG_ARM_CPU_SUSPEND=y
|
|
||||||
CONFIG_ARM_CRYPTO=y
|
|
||||||
CONFIG_ARM_ERRATA_720789=y
|
|
||||||
CONFIG_ARM_ERRATA_764369=y
|
|
||||||
CONFIG_ARM_GIC=y
|
|
||||||
CONFIG_ARM_GLOBAL_TIMER=y
|
|
||||||
CONFIG_ARM_GT_INITIAL_PRESCALER_VAL=1
|
|
||||||
CONFIG_ARM_HAS_SG_CHAIN=y
|
|
||||||
CONFIG_ARM_HEAVY_MB=y
|
|
||||||
CONFIG_ARM_L1_CACHE_SHIFT=6
|
|
||||||
CONFIG_ARM_L1_CACHE_SHIFT_6=y
|
|
||||||
CONFIG_ARM_MVEBU_V7_CPUIDLE=y
|
|
||||||
CONFIG_ARM_PATCH_IDIV=y
|
|
||||||
CONFIG_ARM_PATCH_PHYS_VIRT=y
|
|
||||||
CONFIG_ARM_THUMB=y
|
|
||||||
CONFIG_ARM_UNWIND=y
|
|
||||||
CONFIG_ARM_VIRT_EXT=y
|
|
||||||
CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH=y
|
|
||||||
CONFIG_ATA=y
|
|
||||||
CONFIG_ATAGS=y
|
|
||||||
CONFIG_ATA_LEDS=y
|
|
||||||
CONFIG_AUTO_ZRELADDR=y
|
|
||||||
CONFIG_BINARY_PRINTF=y
|
|
||||||
CONFIG_BINFMT_FLAT_ARGVP_ENVP_ON_STACK=y
|
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
|
||||||
CONFIG_BLK_DEV_SD=y
|
|
||||||
CONFIG_BLK_MQ_PCI=y
|
|
||||||
CONFIG_BLK_SCSI_REQUEST=y
|
|
||||||
CONFIG_BOUNCE=y
|
|
||||||
# CONFIG_CACHE_FEROCEON_L2 is not set
|
|
||||||
CONFIG_CACHE_L2X0=y
|
|
||||||
CONFIG_CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK=y
|
|
||||||
CONFIG_CLKSRC_MMIO=y
|
|
||||||
CONFIG_CLONE_BACKWARDS=y
|
|
||||||
CONFIG_COMMON_CLK=y
|
|
||||||
CONFIG_COMPAT_32BIT_TIME=y
|
|
||||||
CONFIG_CPUFREQ_DT=y
|
|
||||||
CONFIG_CPUFREQ_DT_PLATDEV=y
|
|
||||||
CONFIG_CPU_32v6K=y
|
|
||||||
CONFIG_CPU_32v7=y
|
|
||||||
CONFIG_CPU_ABRT_EV7=y
|
|
||||||
CONFIG_CPU_CACHE_V7=y
|
|
||||||
CONFIG_CPU_CACHE_VIPT=y
|
|
||||||
CONFIG_CPU_COPY_V6=y
|
|
||||||
CONFIG_CPU_CP15=y
|
|
||||||
CONFIG_CPU_CP15_MMU=y
|
|
||||||
CONFIG_CPU_FREQ=y
|
|
||||||
CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
|
|
||||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
|
|
||||||
CONFIG_CPU_FREQ_GOV_ATTR_SET=y
|
|
||||||
CONFIG_CPU_FREQ_GOV_COMMON=y
|
|
||||||
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
|
|
||||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
|
|
||||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
|
||||||
# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
|
|
||||||
# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
|
|
||||||
CONFIG_CPU_FREQ_STAT=y
|
|
||||||
CONFIG_CPU_HAS_ASID=y
|
|
||||||
CONFIG_CPU_IDLE=y
|
|
||||||
CONFIG_CPU_IDLE_GOV_LADDER=y
|
|
||||||
CONFIG_CPU_PABRT_V7=y
|
|
||||||
CONFIG_CPU_PJ4B=y
|
|
||||||
CONFIG_CPU_PM=y
|
|
||||||
CONFIG_CPU_RMAP=y
|
|
||||||
CONFIG_CPU_SPECTRE=y
|
|
||||||
CONFIG_CPU_THERMAL=y
|
|
||||||
CONFIG_CPU_THUMB_CAPABLE=y
|
|
||||||
CONFIG_CPU_TLB_V7=y
|
|
||||||
CONFIG_CPU_V7=y
|
|
||||||
CONFIG_CRC16=y
|
|
||||||
CONFIG_CRYPTO_AES_ARM=y
|
|
||||||
CONFIG_CRYPTO_AES_ARM_BS=y
|
|
||||||
CONFIG_CRYPTO_AUTHENC=y
|
|
||||||
CONFIG_CRYPTO_BLAKE2B=y
|
|
||||||
# CONFIG_CRYPTO_BLAKE2B_NEON is not set
|
|
||||||
CONFIG_CRYPTO_BLAKE2S=y
|
|
||||||
# CONFIG_CRYPTO_BLAKE2S_ARM is not set
|
|
||||||
CONFIG_CRYPTO_CRC32=y
|
|
||||||
CONFIG_CRYPTO_CRC32C=y
|
|
||||||
CONFIG_CRYPTO_CRYPTD=y
|
|
||||||
CONFIG_CRYPTO_DEFLATE=y
|
|
||||||
CONFIG_CRYPTO_DES=y
|
|
||||||
CONFIG_CRYPTO_DEV_MARVELL=y
|
|
||||||
CONFIG_CRYPTO_DEV_MARVELL_CESA=y
|
|
||||||
# CONFIG_CRYPTO_ECDSA is not set
|
|
||||||
CONFIG_CRYPTO_ESSIV=y
|
|
||||||
CONFIG_CRYPTO_GF128MUL=y
|
|
||||||
CONFIG_CRYPTO_HASH_INFO=y
|
|
||||||
CONFIG_CRYPTO_HW=y
|
|
||||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
|
||||||
CONFIG_CRYPTO_LIB_DES=y
|
|
||||||
CONFIG_CRYPTO_LZO=y
|
|
||||||
CONFIG_CRYPTO_NULL2=y
|
|
||||||
CONFIG_CRYPTO_RNG2=y
|
|
||||||
CONFIG_CRYPTO_SHA1=y
|
|
||||||
CONFIG_CRYPTO_SHA1_ARM=y
|
|
||||||
CONFIG_CRYPTO_SHA1_ARM_NEON=y
|
|
||||||
CONFIG_CRYPTO_SHA256_ARM=y
|
|
||||||
CONFIG_CRYPTO_SHA512_ARM=y
|
|
||||||
CONFIG_CRYPTO_SIMD=y
|
|
||||||
CONFIG_CRYPTO_ZSTD=y
|
|
||||||
CONFIG_DCACHE_WORD_ACCESS=y
|
|
||||||
CONFIG_DEBUG_ALIGN_RODATA=y
|
|
||||||
# CONFIG_DEBUG_FORCE_FUNCTION_ALIGN_64B is not set
|
|
||||||
CONFIG_DEBUG_INFO=y
|
|
||||||
# CONFIG_DEBUG_INFO_DWARF5 is not set
|
|
||||||
CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y
|
|
||||||
# CONFIG_DEBUG_IRQFLAGS is not set
|
|
||||||
# CONFIG_DEBUG_KMAP_LOCAL is not set
|
|
||||||
CONFIG_DEBUG_LL=y
|
|
||||||
CONFIG_DEBUG_LL_INCLUDE="debug/8250.S"
|
|
||||||
CONFIG_DEBUG_MVEBU_UART0=y
|
|
||||||
# CONFIG_DEBUG_MVEBU_UART0_ALTERNATE is not set
|
|
||||||
# CONFIG_DEBUG_MVEBU_UART1_ALTERNATE is not set
|
|
||||||
CONFIG_DEBUG_UART_8250=y
|
|
||||||
CONFIG_DEBUG_UART_8250_SHIFT=2
|
|
||||||
CONFIG_DEBUG_UART_PHYS=0xd0012000
|
|
||||||
CONFIG_DEBUG_UART_VIRT=0xfec12000
|
|
||||||
CONFIG_DEBUG_UNCOMPRESS=y
|
|
||||||
CONFIG_DEBUG_USER=y
|
|
||||||
CONFIG_DMADEVICES=y
|
|
||||||
CONFIG_DMA_ENGINE=y
|
|
||||||
CONFIG_DMA_ENGINE_RAID=y
|
|
||||||
# CONFIG_DMA_MAP_BENCHMARK is not set
|
|
||||||
CONFIG_DMA_OF=y
|
|
||||||
CONFIG_DMA_OPS=y
|
|
||||||
CONFIG_DMA_REMAP=y
|
|
||||||
CONFIG_DTC=y
|
|
||||||
CONFIG_EARLY_PRINTK=y
|
|
||||||
CONFIG_EDAC_ATOMIC_SCRUB=y
|
|
||||||
CONFIG_EDAC_SUPPORT=y
|
|
||||||
CONFIG_EXT4_FS=y
|
|
||||||
CONFIG_EXTCON=y
|
|
||||||
CONFIG_F2FS_FS=y
|
|
||||||
CONFIG_FIXED_PHY=y
|
|
||||||
CONFIG_FIX_EARLYCON_MEM=y
|
|
||||||
CONFIG_FS_IOMAP=y
|
|
||||||
CONFIG_FS_MBCACHE=y
|
|
||||||
CONFIG_FWNODE_MDIO=y
|
|
||||||
CONFIG_FW_LOADER_PAGED_BUF=y
|
|
||||||
CONFIG_GENERIC_ALLOCATOR=y
|
|
||||||
CONFIG_GENERIC_ARCH_TOPOLOGY=y
|
|
||||||
CONFIG_GENERIC_BUG=y
|
|
||||||
CONFIG_GENERIC_CLOCKEVENTS=y
|
|
||||||
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
|
|
||||||
CONFIG_GENERIC_CPU_AUTOPROBE=y
|
|
||||||
CONFIG_GENERIC_EARLY_IOREMAP=y
|
|
||||||
CONFIG_GENERIC_GETTIMEOFDAY=y
|
|
||||||
CONFIG_GENERIC_IDLE_POLL_SETUP=y
|
|
||||||
CONFIG_GENERIC_IRQ_CHIP=y
|
|
||||||
CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
|
|
||||||
CONFIG_GENERIC_IRQ_MIGRATION=y
|
|
||||||
CONFIG_GENERIC_IRQ_MULTI_HANDLER=y
|
|
||||||
CONFIG_GENERIC_IRQ_SHOW=y
|
|
||||||
CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
|
|
||||||
CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y
|
|
||||||
CONFIG_GENERIC_MSI_IRQ=y
|
|
||||||
CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
|
|
||||||
CONFIG_GENERIC_PCI_IOMAP=y
|
|
||||||
CONFIG_GENERIC_PHY=y
|
|
||||||
CONFIG_GENERIC_SCHED_CLOCK=y
|
|
||||||
CONFIG_GENERIC_SMP_IDLE_THREAD=y
|
|
||||||
CONFIG_GENERIC_STRNCPY_FROM_USER=y
|
|
||||||
CONFIG_GENERIC_STRNLEN_USER=y
|
|
||||||
CONFIG_GENERIC_TIME_VSYSCALL=y
|
|
||||||
CONFIG_GENERIC_VDSO_32=y
|
|
||||||
CONFIG_GLOB=y
|
|
||||||
CONFIG_GPIOLIB=y
|
|
||||||
CONFIG_GPIOLIB_IRQCHIP=y
|
|
||||||
CONFIG_GPIO_CDEV=y
|
|
||||||
CONFIG_GPIO_GENERIC=y
|
|
||||||
CONFIG_GPIO_GENERIC_PLATFORM=y
|
|
||||||
CONFIG_GPIO_MVEBU=y
|
|
||||||
CONFIG_GPIO_PCA953X=y
|
|
||||||
CONFIG_GPIO_PCA953X_IRQ=y
|
|
||||||
CONFIG_GRO_CELLS=y
|
|
||||||
CONFIG_GUP_TEST=y
|
|
||||||
CONFIG_HANDLE_DOMAIN_IRQ=y
|
|
||||||
CONFIG_HARDEN_BRANCH_PREDICTOR=y
|
|
||||||
CONFIG_HARDIRQS_SW_RESEND=y
|
|
||||||
CONFIG_HAS_DMA=y
|
|
||||||
CONFIG_HAS_IOMEM=y
|
|
||||||
CONFIG_HAS_IOPORT_MAP=y
|
|
||||||
CONFIG_HAVE_SMP=y
|
|
||||||
CONFIG_HIGHMEM=y
|
|
||||||
# CONFIG_HIGHPTE is not set
|
|
||||||
CONFIG_HOTPLUG_CPU=y
|
|
||||||
CONFIG_HWBM=y
|
|
||||||
CONFIG_HWMON=y
|
|
||||||
CONFIG_HW_RANDOM=y
|
|
||||||
CONFIG_HZ_FIXED=0
|
|
||||||
CONFIG_HZ_PERIODIC=y
|
|
||||||
CONFIG_I2C=y
|
|
||||||
CONFIG_I2C_BOARDINFO=y
|
|
||||||
CONFIG_I2C_CHARDEV=y
|
|
||||||
CONFIG_I2C_MV64XXX=y
|
|
||||||
# CONFIG_I2C_PXA is not set
|
|
||||||
# CONFIG_ICST is not set
|
|
||||||
CONFIG_INITRAMFS_SOURCE=""
|
|
||||||
CONFIG_IRQCHIP=y
|
|
||||||
CONFIG_IRQ_DOMAIN=y
|
|
||||||
CONFIG_IRQ_DOMAIN_HIERARCHY=y
|
|
||||||
CONFIG_IRQ_FORCED_THREADING=y
|
|
||||||
CONFIG_IRQ_WORK=y
|
|
||||||
# CONFIG_IWMMXT is not set
|
|
||||||
CONFIG_JBD2=y
|
|
||||||
CONFIG_KMAP_LOCAL=y
|
|
||||||
CONFIG_LEDS_GPIO=y
|
|
||||||
CONFIG_LEDS_PCA963X=y
|
|
||||||
CONFIG_LEDS_TLC591XX=y
|
|
||||||
CONFIG_LEDS_TRIGGER_DISK=y
|
|
||||||
CONFIG_LIBFDT=y
|
|
||||||
CONFIG_LLD_VERSION=0
|
|
||||||
CONFIG_LOCK_DEBUGGING_SUPPORT=y
|
|
||||||
CONFIG_LOCK_SPIN_ON_OWNER=y
|
|
||||||
CONFIG_LTO_NONE=y
|
|
||||||
CONFIG_LZO_COMPRESS=y
|
|
||||||
CONFIG_LZO_DECOMPRESS=y
|
|
||||||
CONFIG_MACH_ARMADA_370=y
|
|
||||||
# CONFIG_MACH_ARMADA_375 is not set
|
|
||||||
CONFIG_MACH_ARMADA_38X=y
|
|
||||||
# CONFIG_MACH_ARMADA_39X is not set
|
|
||||||
CONFIG_MACH_ARMADA_XP=y
|
|
||||||
# CONFIG_MACH_DOVE is not set
|
|
||||||
CONFIG_MACH_MVEBU_ANY=y
|
|
||||||
CONFIG_MACH_MVEBU_V7=y
|
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
|
||||||
CONFIG_MANGLE_BOOTARGS=y
|
|
||||||
CONFIG_MARVELL_PHY=y
|
|
||||||
CONFIG_MDIO_BUS=y
|
|
||||||
CONFIG_MDIO_DEVICE=y
|
|
||||||
CONFIG_MDIO_DEVRES=y
|
|
||||||
CONFIG_MDIO_I2C=y
|
|
||||||
CONFIG_MEMFD_CREATE=y
|
|
||||||
CONFIG_MEMORY=y
|
|
||||||
CONFIG_MIGHT_HAVE_CACHE_L2X0=y
|
|
||||||
CONFIG_MIGRATION=y
|
|
||||||
CONFIG_MMC=y
|
|
||||||
CONFIG_MMC_BLOCK=y
|
|
||||||
CONFIG_MMC_MVSDIO=y
|
|
||||||
CONFIG_MMC_SDHCI=y
|
|
||||||
# CONFIG_MMC_SDHCI_PCI is not set
|
|
||||||
CONFIG_MMC_SDHCI_PLTFM=y
|
|
||||||
CONFIG_MMC_SDHCI_PXAV3=y
|
|
||||||
CONFIG_MODULES_USE_ELF_REL=y
|
|
||||||
CONFIG_MTD_CFI_STAA=y
|
|
||||||
# CONFIG_MTD_MCHP48L640 is not set
|
|
||||||
CONFIG_MTD_NAND_CORE=y
|
|
||||||
CONFIG_MTD_NAND_ECC=y
|
|
||||||
CONFIG_MTD_NAND_ECC_SW_HAMMING=y
|
|
||||||
# CONFIG_MTD_NAND_INTEL_LGM is not set
|
|
||||||
CONFIG_MTD_NAND_MARVELL=y
|
|
||||||
CONFIG_MTD_RAW_NAND=y
|
|
||||||
CONFIG_MTD_SPI_NOR=y
|
|
||||||
# CONFIG_MTD_SPI_NOR_SWP_DISABLE is not set
|
|
||||||
CONFIG_MTD_SPI_NOR_SWP_DISABLE_ON_VOLATILE=y
|
|
||||||
# CONFIG_MTD_SPI_NOR_SWP_KEEP is not set
|
|
||||||
CONFIG_MTD_SPLIT_FIRMWARE=y
|
|
||||||
CONFIG_MTD_UBI=y
|
|
||||||
CONFIG_MTD_UBI_BEB_LIMIT=20
|
|
||||||
CONFIG_MTD_UBI_BLOCK=y
|
|
||||||
CONFIG_MTD_UBI_WL_THRESHOLD=4096
|
|
||||||
CONFIG_MUTEX_SPIN_ON_OWNER=y
|
|
||||||
CONFIG_MVEBU_CLK_COMMON=y
|
|
||||||
CONFIG_MVEBU_CLK_COREDIV=y
|
|
||||||
CONFIG_MVEBU_CLK_CPU=y
|
|
||||||
CONFIG_MVEBU_DEVBUS=y
|
|
||||||
CONFIG_MVEBU_MBUS=y
|
|
||||||
CONFIG_MVMDIO=y
|
|
||||||
CONFIG_MVNETA=y
|
|
||||||
CONFIG_MVNETA_BM=y
|
|
||||||
CONFIG_MVNETA_BM_ENABLE=y
|
|
||||||
# CONFIG_MVPP2 is not set
|
|
||||||
CONFIG_MV_XOR=y
|
|
||||||
CONFIG_NEED_DMA_MAP_STATE=y
|
|
||||||
CONFIG_NEON=y
|
|
||||||
CONFIG_NET_DEVLINK=y
|
|
||||||
CONFIG_NET_DSA=y
|
|
||||||
CONFIG_NET_DSA_MV88E6XXX=y
|
|
||||||
# CONFIG_NET_DSA_TAG_BRCM_LEGACY is not set
|
|
||||||
CONFIG_NET_DSA_TAG_DSA=y
|
|
||||||
CONFIG_NET_DSA_TAG_DSA_COMMON=y
|
|
||||||
CONFIG_NET_DSA_TAG_EDSA=y
|
|
||||||
# CONFIG_NET_DSA_TAG_HELLCREEK is not set
|
|
||||||
# CONFIG_NET_DSA_TAG_XRS700X is not set
|
|
||||||
# CONFIG_NET_DSA_XRS700X_I2C is not set
|
|
||||||
# CONFIG_NET_DSA_XRS700X_MDIO is not set
|
|
||||||
CONFIG_NET_FLOW_LIMIT=y
|
|
||||||
CONFIG_NET_SELFTESTS=y
|
|
||||||
CONFIG_NET_SOCK_MSG=y
|
|
||||||
CONFIG_NET_SWITCHDEV=y
|
|
||||||
CONFIG_NLS=y
|
|
||||||
CONFIG_NOP_USB_XCEIV=y
|
|
||||||
CONFIG_NR_CPUS=4
|
|
||||||
CONFIG_NVMEM=y
|
|
||||||
CONFIG_OF=y
|
|
||||||
CONFIG_OF_ADDRESS=y
|
|
||||||
CONFIG_OF_EARLY_FLATTREE=y
|
|
||||||
CONFIG_OF_FLATTREE=y
|
|
||||||
CONFIG_OF_GPIO=y
|
|
||||||
CONFIG_OF_IRQ=y
|
|
||||||
CONFIG_OF_KOBJ=y
|
|
||||||
CONFIG_OF_MDIO=y
|
|
||||||
CONFIG_OF_NET=y
|
|
||||||
CONFIG_OLD_SIGACTION=y
|
|
||||||
CONFIG_OLD_SIGSUSPEND3=y
|
|
||||||
CONFIG_ORION_WATCHDOG=y
|
|
||||||
CONFIG_OUTER_CACHE=y
|
|
||||||
CONFIG_OUTER_CACHE_SYNC=y
|
|
||||||
CONFIG_PADATA=y
|
|
||||||
CONFIG_PAGE_OFFSET=0xC0000000
|
|
||||||
CONFIG_PAGE_POOL=y
|
|
||||||
CONFIG_PCI=y
|
|
||||||
CONFIG_PCI_BRIDGE_EMUL=y
|
|
||||||
CONFIG_PCI_DOMAINS=y
|
|
||||||
CONFIG_PCI_DOMAINS_GENERIC=y
|
|
||||||
# CONFIG_PCI_IXP4XX is not set
|
|
||||||
CONFIG_PCI_MSI=y
|
|
||||||
CONFIG_PCI_MSI_IRQ_DOMAIN=y
|
|
||||||
CONFIG_PCI_MVEBU=y
|
|
||||||
CONFIG_PERF_USE_VMALLOC=y
|
|
||||||
CONFIG_PGTABLE_LEVELS=2
|
|
||||||
CONFIG_PHYLIB=y
|
|
||||||
CONFIG_PHYLINK=y
|
|
||||||
# CONFIG_PHY_CAN_TRANSCEIVER is not set
|
|
||||||
# CONFIG_PHY_MVEBU_A3700_COMPHY is not set
|
|
||||||
# CONFIG_PHY_MVEBU_A3700_UTMI is not set
|
|
||||||
CONFIG_PHY_MVEBU_A38X_COMPHY=y
|
|
||||||
# CONFIG_PHY_MVEBU_CP110_COMPHY is not set
|
|
||||||
# CONFIG_PHY_MVEBU_CP110_UTMI is not set
|
|
||||||
CONFIG_PINCTRL=y
|
|
||||||
CONFIG_PINCTRL_ARMADA_370=y
|
|
||||||
CONFIG_PINCTRL_ARMADA_38X=y
|
|
||||||
CONFIG_PINCTRL_ARMADA_XP=y
|
|
||||||
CONFIG_PINCTRL_MVEBU=y
|
|
||||||
# CONFIG_PINCTRL_SINGLE is not set
|
|
||||||
CONFIG_PJ4B_ERRATA_4742=y
|
|
||||||
CONFIG_PL310_ERRATA_753970=y
|
|
||||||
CONFIG_PLAT_ORION=y
|
|
||||||
CONFIG_PM_OPP=y
|
|
||||||
CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=11
|
|
||||||
CONFIG_PWM=y
|
|
||||||
CONFIG_PWM_SYSFS=y
|
|
||||||
CONFIG_RATIONAL=y
|
|
||||||
CONFIG_RCU_NEED_SEGCBLIST=y
|
|
||||||
CONFIG_RCU_STALL_COMMON=y
|
|
||||||
CONFIG_REGMAP=y
|
|
||||||
CONFIG_REGMAP_I2C=y
|
|
||||||
CONFIG_REGMAP_MMIO=y
|
|
||||||
CONFIG_REGULATOR=y
|
|
||||||
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
|
||||||
CONFIG_RFS_ACCEL=y
|
|
||||||
CONFIG_RPS=y
|
|
||||||
CONFIG_RTC_CLASS=y
|
|
||||||
CONFIG_RTC_DRV_ARMADA38X=y
|
|
||||||
# CONFIG_RTC_DRV_GOLDFISH is not set
|
|
||||||
CONFIG_RTC_DRV_MV=y
|
|
||||||
CONFIG_RTC_I2C_AND_SPI=y
|
|
||||||
CONFIG_RTC_MC146818_LIB=y
|
|
||||||
CONFIG_RWSEM_SPIN_ON_OWNER=y
|
|
||||||
CONFIG_SATA_AHCI_PLATFORM=y
|
|
||||||
CONFIG_SATA_HOST=y
|
|
||||||
CONFIG_SATA_MV=y
|
|
||||||
CONFIG_SATA_PMP=y
|
|
||||||
CONFIG_SCSI=y
|
|
||||||
CONFIG_SENSORS_PWM_FAN=y
|
|
||||||
CONFIG_SENSORS_TMP421=y
|
|
||||||
CONFIG_SERIAL_8250_DW=y
|
|
||||||
CONFIG_SERIAL_8250_DWLIB=y
|
|
||||||
CONFIG_SERIAL_8250_FSL=y
|
|
||||||
CONFIG_SERIAL_MCTRL_GPIO=y
|
|
||||||
CONFIG_SERIAL_MVEBU_CONSOLE=y
|
|
||||||
CONFIG_SERIAL_MVEBU_UART=y
|
|
||||||
CONFIG_SFP=y
|
|
||||||
CONFIG_SGL_ALLOC=y
|
|
||||||
CONFIG_SG_POOL=y
|
|
||||||
CONFIG_SMP=y
|
|
||||||
CONFIG_SMP_ON_UP=y
|
|
||||||
CONFIG_SOCK_RX_QUEUE_MAPPING=y
|
|
||||||
CONFIG_SOC_BUS=y
|
|
||||||
CONFIG_SPARSE_IRQ=y
|
|
||||||
CONFIG_SPI=y
|
|
||||||
# CONFIG_SPI_ARMADA_3700 is not set
|
|
||||||
CONFIG_SPI_MASTER=y
|
|
||||||
CONFIG_SPI_MEM=y
|
|
||||||
CONFIG_SPI_ORION=y
|
|
||||||
CONFIG_SRAM=y
|
|
||||||
CONFIG_SRAM_EXEC=y
|
|
||||||
CONFIG_SRCU=y
|
|
||||||
# CONFIG_STACKTRACE_BUILD_ID is not set
|
|
||||||
CONFIG_SWPHY=y
|
|
||||||
CONFIG_SWP_EMULATE=y
|
|
||||||
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
|
|
||||||
# CONFIG_TEST_DIV64 is not set
|
|
||||||
# CONFIG_TEST_SCANF is not set
|
|
||||||
CONFIG_THERMAL=y
|
|
||||||
CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
|
|
||||||
CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
|
|
||||||
CONFIG_THERMAL_GOV_STEP_WISE=y
|
|
||||||
CONFIG_THERMAL_HWMON=y
|
|
||||||
CONFIG_THERMAL_OF=y
|
|
||||||
CONFIG_TICK_CPU_ACCOUNTING=y
|
|
||||||
CONFIG_TIMER_OF=y
|
|
||||||
CONFIG_TIMER_PROBE=y
|
|
||||||
CONFIG_TREE_RCU=y
|
|
||||||
CONFIG_TREE_SRCU=y
|
|
||||||
CONFIG_UBIFS_FS=y
|
|
||||||
CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
|
|
||||||
CONFIG_UNWINDER_ARM=y
|
|
||||||
CONFIG_USB=y
|
|
||||||
CONFIG_USB_CDNS_SUPPORT=y
|
|
||||||
CONFIG_USB_COMMON=y
|
|
||||||
CONFIG_USB_EHCI_HCD=y
|
|
||||||
CONFIG_USB_EHCI_HCD_ORION=y
|
|
||||||
CONFIG_USB_EHCI_HCD_PLATFORM=y
|
|
||||||
CONFIG_USB_LEDS_TRIGGER_USBPORT=y
|
|
||||||
CONFIG_USB_PHY=y
|
|
||||||
CONFIG_USB_ROLE_SWITCH=y
|
|
||||||
CONFIG_USB_STORAGE=y
|
|
||||||
CONFIG_USB_SUPPORT=y
|
|
||||||
CONFIG_USB_XHCI_HCD=y
|
|
||||||
CONFIG_USB_XHCI_MVEBU=y
|
|
||||||
CONFIG_USB_XHCI_PLATFORM=y
|
|
||||||
CONFIG_USE_OF=y
|
|
||||||
CONFIG_VFP=y
|
|
||||||
CONFIG_VFPv3=y
|
|
||||||
# CONFIG_VMLINUX_MAP is not set
|
|
||||||
CONFIG_WATCHDOG_CORE=y
|
|
||||||
CONFIG_XPS=y
|
|
||||||
CONFIG_XXHASH=y
|
|
||||||
CONFIG_XZ_DEC_ARM=y
|
|
||||||
CONFIG_XZ_DEC_BCJ=y
|
|
||||||
CONFIG_ZBOOT_ROM_BSS=0x0
|
|
||||||
CONFIG_ZBOOT_ROM_TEXT=0x0
|
|
||||||
CONFIG_ZLIB_DEFLATE=y
|
|
||||||
CONFIG_ZLIB_INFLATE=y
|
|
||||||
CONFIG_ZSTD_COMPRESS=y
|
|
||||||
CONFIG_ZSTD_DECOMPRESS=y
|
|
|
@ -1,469 +0,0 @@
|
||||||
CONFIG_AHCI_MVEBU=y
|
|
||||||
CONFIG_ALIGNMENT_TRAP=y
|
|
||||||
CONFIG_ARCH_32BIT_OFF_T=y
|
|
||||||
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
|
|
||||||
CONFIG_ARCH_KEEP_MEMBLOCK=y
|
|
||||||
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
|
|
||||||
CONFIG_ARCH_MULTIPLATFORM=y
|
|
||||||
CONFIG_ARCH_MULTI_V6_V7=y
|
|
||||||
CONFIG_ARCH_MULTI_V7=y
|
|
||||||
CONFIG_ARCH_MVEBU=y
|
|
||||||
CONFIG_ARCH_NR_GPIO=0
|
|
||||||
CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
|
|
||||||
CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
|
|
||||||
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
|
|
||||||
CONFIG_ARCH_SPARSEMEM_ENABLE=y
|
|
||||||
CONFIG_ARCH_SUSPEND_POSSIBLE=y
|
|
||||||
CONFIG_ARM=y
|
|
||||||
CONFIG_ARMADA_370_CLK=y
|
|
||||||
CONFIG_ARMADA_370_XP_IRQ=y
|
|
||||||
CONFIG_ARMADA_370_XP_TIMER=y
|
|
||||||
# CONFIG_ARMADA_37XX_WATCHDOG is not set
|
|
||||||
CONFIG_ARMADA_38X_CLK=y
|
|
||||||
CONFIG_ARMADA_THERMAL=y
|
|
||||||
CONFIG_ARMADA_XP_CLK=y
|
|
||||||
CONFIG_ARM_APPENDED_DTB=y
|
|
||||||
# CONFIG_ARM_ARMADA_37XX_CPUFREQ is not set
|
|
||||||
# CONFIG_ARM_ARMADA_8K_CPUFREQ is not set
|
|
||||||
CONFIG_ARM_ATAG_DTB_COMPAT=y
|
|
||||||
# CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER is not set
|
|
||||||
CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_MANGLE=y
|
|
||||||
CONFIG_ARM_CPU_SUSPEND=y
|
|
||||||
CONFIG_ARM_CRYPTO=y
|
|
||||||
CONFIG_ARM_ERRATA_720789=y
|
|
||||||
CONFIG_ARM_ERRATA_764369=y
|
|
||||||
CONFIG_ARM_GIC=y
|
|
||||||
CONFIG_ARM_GLOBAL_TIMER=y
|
|
||||||
CONFIG_ARM_GT_INITIAL_PRESCALER_VAL=1
|
|
||||||
CONFIG_ARM_HAS_SG_CHAIN=y
|
|
||||||
CONFIG_ARM_HEAVY_MB=y
|
|
||||||
CONFIG_ARM_L1_CACHE_SHIFT=6
|
|
||||||
CONFIG_ARM_L1_CACHE_SHIFT_6=y
|
|
||||||
CONFIG_ARM_MVEBU_V7_CPUIDLE=y
|
|
||||||
CONFIG_ARM_PATCH_IDIV=y
|
|
||||||
CONFIG_ARM_PATCH_PHYS_VIRT=y
|
|
||||||
CONFIG_ARM_MODULE_PLTS=y
|
|
||||||
CONFIG_ARM_THUMB=y
|
|
||||||
CONFIG_ARM_UNWIND=y
|
|
||||||
CONFIG_ARM_VIRT_EXT=y
|
|
||||||
CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH=y
|
|
||||||
CONFIG_ATA=y
|
|
||||||
CONFIG_ATAGS=y
|
|
||||||
CONFIG_ATA_LEDS=y
|
|
||||||
CONFIG_AUTO_ZRELADDR=y
|
|
||||||
CONFIG_BINARY_PRINTF=y
|
|
||||||
CONFIG_BINFMT_FLAT_ARGVP_ENVP_ON_STACK=y
|
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
|
||||||
CONFIG_BLK_DEV_SD=y
|
|
||||||
CONFIG_BLK_MQ_PCI=y
|
|
||||||
CONFIG_BLK_SCSI_REQUEST=y
|
|
||||||
CONFIG_BOUNCE=y
|
|
||||||
# CONFIG_CACHE_FEROCEON_L2 is not set
|
|
||||||
CONFIG_CACHE_L2X0=y
|
|
||||||
CONFIG_CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK=y
|
|
||||||
CONFIG_CLKSRC_MMIO=y
|
|
||||||
CONFIG_CLONE_BACKWARDS=y
|
|
||||||
CONFIG_COMMON_CLK=y
|
|
||||||
CONFIG_COMPAT_32BIT_TIME=y
|
|
||||||
CONFIG_CPUFREQ_DT=y
|
|
||||||
CONFIG_CPUFREQ_DT_PLATDEV=y
|
|
||||||
CONFIG_CPU_32v6K=y
|
|
||||||
CONFIG_CPU_32v7=y
|
|
||||||
CONFIG_CPU_ABRT_EV7=y
|
|
||||||
CONFIG_CPU_CACHE_V7=y
|
|
||||||
CONFIG_CPU_CACHE_VIPT=y
|
|
||||||
CONFIG_CPU_COPY_V6=y
|
|
||||||
CONFIG_CPU_CP15=y
|
|
||||||
CONFIG_CPU_CP15_MMU=y
|
|
||||||
CONFIG_CPU_FREQ=y
|
|
||||||
CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
|
|
||||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
|
|
||||||
CONFIG_CPU_FREQ_GOV_ATTR_SET=y
|
|
||||||
CONFIG_CPU_FREQ_GOV_COMMON=y
|
|
||||||
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
|
|
||||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
|
|
||||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
|
||||||
# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
|
|
||||||
# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
|
|
||||||
CONFIG_CPU_FREQ_STAT=y
|
|
||||||
CONFIG_CPU_HAS_ASID=y
|
|
||||||
CONFIG_CPU_IDLE=y
|
|
||||||
CONFIG_CPU_IDLE_GOV_LADDER=y
|
|
||||||
CONFIG_CPU_PABRT_V7=y
|
|
||||||
CONFIG_CPU_PJ4B=y
|
|
||||||
CONFIG_CPU_PM=y
|
|
||||||
CONFIG_CPU_RMAP=y
|
|
||||||
CONFIG_CPU_SPECTRE=y
|
|
||||||
CONFIG_CPU_THERMAL=y
|
|
||||||
CONFIG_CPU_THUMB_CAPABLE=y
|
|
||||||
CONFIG_CPU_TLB_V7=y
|
|
||||||
CONFIG_CPU_V7=y
|
|
||||||
CONFIG_CRC16=y
|
|
||||||
CONFIG_CRYPTO_AES_ARM=y
|
|
||||||
CONFIG_CRYPTO_AES_ARM_BS=y
|
|
||||||
CONFIG_CRYPTO_AUTHENC=y
|
|
||||||
CONFIG_CRYPTO_BLAKE2B=y
|
|
||||||
# CONFIG_CRYPTO_BLAKE2B_NEON is not set
|
|
||||||
CONFIG_CRYPTO_BLAKE2S=y
|
|
||||||
# CONFIG_CRYPTO_BLAKE2S_ARM is not set
|
|
||||||
CONFIG_CRYPTO_CRC32=y
|
|
||||||
CONFIG_CRYPTO_CRC32C=y
|
|
||||||
CONFIG_CRYPTO_CRYPTD=y
|
|
||||||
CONFIG_CRYPTO_DEFLATE=y
|
|
||||||
CONFIG_CRYPTO_DES=y
|
|
||||||
CONFIG_CRYPTO_DEV_MARVELL=y
|
|
||||||
CONFIG_CRYPTO_DEV_MARVELL_CESA=y
|
|
||||||
# CONFIG_CRYPTO_ECDSA is not set
|
|
||||||
CONFIG_CRYPTO_ESSIV=y
|
|
||||||
CONFIG_CRYPTO_GF128MUL=y
|
|
||||||
CONFIG_CRYPTO_HASH_INFO=y
|
|
||||||
CONFIG_CRYPTO_HW=y
|
|
||||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
|
||||||
CONFIG_CRYPTO_LIB_DES=y
|
|
||||||
CONFIG_CRYPTO_LZO=y
|
|
||||||
CONFIG_CRYPTO_NULL2=y
|
|
||||||
CONFIG_CRYPTO_RNG2=y
|
|
||||||
CONFIG_CRYPTO_SHA1=y
|
|
||||||
CONFIG_CRYPTO_SHA1_ARM=y
|
|
||||||
CONFIG_CRYPTO_SHA1_ARM_NEON=y
|
|
||||||
CONFIG_CRYPTO_SHA256_ARM=y
|
|
||||||
CONFIG_CRYPTO_SHA512_ARM=y
|
|
||||||
CONFIG_CRYPTO_SIMD=y
|
|
||||||
CONFIG_CRYPTO_ZSTD=y
|
|
||||||
CONFIG_DCACHE_WORD_ACCESS=y
|
|
||||||
CONFIG_DEBUG_ALIGN_RODATA=y
|
|
||||||
# CONFIG_DEBUG_FORCE_FUNCTION_ALIGN_64B is not set
|
|
||||||
CONFIG_DEBUG_INFO=y
|
|
||||||
# CONFIG_DEBUG_INFO_DWARF5 is not set
|
|
||||||
CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y
|
|
||||||
# CONFIG_DEBUG_IRQFLAGS is not set
|
|
||||||
# CONFIG_DEBUG_KMAP_LOCAL is not set
|
|
||||||
CONFIG_DEBUG_LL=y
|
|
||||||
CONFIG_DEBUG_LL_INCLUDE="debug/8250.S"
|
|
||||||
CONFIG_DEBUG_MVEBU_UART0=y
|
|
||||||
# CONFIG_DEBUG_MVEBU_UART0_ALTERNATE is not set
|
|
||||||
# CONFIG_DEBUG_MVEBU_UART1_ALTERNATE is not set
|
|
||||||
CONFIG_DEBUG_UART_8250=y
|
|
||||||
CONFIG_DEBUG_UART_8250_SHIFT=2
|
|
||||||
CONFIG_DEBUG_UART_PHYS=0xd0012000
|
|
||||||
CONFIG_DEBUG_UART_VIRT=0xfec12000
|
|
||||||
CONFIG_DEBUG_UNCOMPRESS=y
|
|
||||||
CONFIG_DEBUG_USER=y
|
|
||||||
CONFIG_DMADEVICES=y
|
|
||||||
CONFIG_DMA_ENGINE=y
|
|
||||||
CONFIG_DMA_ENGINE_RAID=y
|
|
||||||
# CONFIG_DMA_MAP_BENCHMARK is not set
|
|
||||||
CONFIG_DMA_OF=y
|
|
||||||
CONFIG_DMA_OPS=y
|
|
||||||
CONFIG_DMA_REMAP=y
|
|
||||||
CONFIG_DTC=y
|
|
||||||
CONFIG_EARLY_PRINTK=y
|
|
||||||
CONFIG_EDAC_ATOMIC_SCRUB=y
|
|
||||||
CONFIG_EDAC_SUPPORT=y
|
|
||||||
CONFIG_EXT4_FS=y
|
|
||||||
CONFIG_EXTCON=y
|
|
||||||
CONFIG_F2FS_FS=y
|
|
||||||
CONFIG_FIXED_PHY=y
|
|
||||||
CONFIG_FIX_EARLYCON_MEM=y
|
|
||||||
CONFIG_FS_IOMAP=y
|
|
||||||
CONFIG_FS_MBCACHE=y
|
|
||||||
CONFIG_FWNODE_MDIO=y
|
|
||||||
CONFIG_FW_LOADER_PAGED_BUF=y
|
|
||||||
CONFIG_GENERIC_ALLOCATOR=y
|
|
||||||
CONFIG_GENERIC_ARCH_TOPOLOGY=y
|
|
||||||
CONFIG_GENERIC_BUG=y
|
|
||||||
CONFIG_GENERIC_CLOCKEVENTS=y
|
|
||||||
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
|
|
||||||
CONFIG_GENERIC_CPU_AUTOPROBE=y
|
|
||||||
CONFIG_GENERIC_EARLY_IOREMAP=y
|
|
||||||
CONFIG_GENERIC_GETTIMEOFDAY=y
|
|
||||||
CONFIG_GENERIC_IDLE_POLL_SETUP=y
|
|
||||||
CONFIG_GENERIC_IRQ_CHIP=y
|
|
||||||
CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
|
|
||||||
CONFIG_GENERIC_IRQ_MIGRATION=y
|
|
||||||
CONFIG_GENERIC_IRQ_MULTI_HANDLER=y
|
|
||||||
CONFIG_GENERIC_IRQ_SHOW=y
|
|
||||||
CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
|
|
||||||
CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y
|
|
||||||
CONFIG_GENERIC_MSI_IRQ=y
|
|
||||||
CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
|
|
||||||
CONFIG_GENERIC_PCI_IOMAP=y
|
|
||||||
CONFIG_GENERIC_PHY=y
|
|
||||||
CONFIG_GENERIC_SCHED_CLOCK=y
|
|
||||||
CONFIG_GENERIC_SMP_IDLE_THREAD=y
|
|
||||||
CONFIG_GENERIC_STRNCPY_FROM_USER=y
|
|
||||||
CONFIG_GENERIC_STRNLEN_USER=y
|
|
||||||
CONFIG_GENERIC_TIME_VSYSCALL=y
|
|
||||||
CONFIG_GENERIC_VDSO_32=y
|
|
||||||
CONFIG_GLOB=y
|
|
||||||
CONFIG_GPIOLIB=y
|
|
||||||
CONFIG_GPIOLIB_IRQCHIP=y
|
|
||||||
CONFIG_GPIO_CDEV=y
|
|
||||||
CONFIG_GPIO_GENERIC=y
|
|
||||||
CONFIG_GPIO_GENERIC_PLATFORM=y
|
|
||||||
CONFIG_GPIO_MVEBU=y
|
|
||||||
CONFIG_GPIO_PCA953X=y
|
|
||||||
CONFIG_GPIO_PCA953X_IRQ=y
|
|
||||||
CONFIG_GRO_CELLS=y
|
|
||||||
CONFIG_GUP_TEST=y
|
|
||||||
CONFIG_HANDLE_DOMAIN_IRQ=y
|
|
||||||
CONFIG_HARDEN_BRANCH_PREDICTOR=y
|
|
||||||
CONFIG_HARDIRQS_SW_RESEND=y
|
|
||||||
CONFIG_HAS_DMA=y
|
|
||||||
CONFIG_HAS_IOMEM=y
|
|
||||||
CONFIG_HAS_IOPORT_MAP=y
|
|
||||||
CONFIG_HAVE_SMP=y
|
|
||||||
CONFIG_HIGHMEM=y
|
|
||||||
# CONFIG_HIGHPTE is not set
|
|
||||||
CONFIG_HOTPLUG_CPU=y
|
|
||||||
CONFIG_HWBM=y
|
|
||||||
CONFIG_HWMON=y
|
|
||||||
CONFIG_HW_RANDOM=y
|
|
||||||
CONFIG_HZ_FIXED=0
|
|
||||||
CONFIG_HZ_PERIODIC=y
|
|
||||||
CONFIG_I2C=y
|
|
||||||
CONFIG_I2C_BOARDINFO=y
|
|
||||||
CONFIG_I2C_CHARDEV=y
|
|
||||||
CONFIG_I2C_MV64XXX=y
|
|
||||||
# CONFIG_I2C_PXA is not set
|
|
||||||
# CONFIG_ICST is not set
|
|
||||||
CONFIG_INITRAMFS_SOURCE=""
|
|
||||||
CONFIG_IRQCHIP=y
|
|
||||||
CONFIG_IRQ_DOMAIN=y
|
|
||||||
CONFIG_IRQ_DOMAIN_HIERARCHY=y
|
|
||||||
CONFIG_IRQ_FORCED_THREADING=y
|
|
||||||
CONFIG_IRQ_WORK=y
|
|
||||||
# CONFIG_IWMMXT is not set
|
|
||||||
CONFIG_JBD2=y
|
|
||||||
CONFIG_KMAP_LOCAL=y
|
|
||||||
CONFIG_LEDS_GPIO=y
|
|
||||||
CONFIG_LEDS_PCA963X=y
|
|
||||||
CONFIG_LEDS_TLC591XX=y
|
|
||||||
CONFIG_LEDS_TRIGGER_DISK=y
|
|
||||||
CONFIG_LIBFDT=y
|
|
||||||
CONFIG_LLD_VERSION=0
|
|
||||||
CONFIG_LOCK_DEBUGGING_SUPPORT=y
|
|
||||||
CONFIG_LOCK_SPIN_ON_OWNER=y
|
|
||||||
CONFIG_LTO_NONE=y
|
|
||||||
CONFIG_LZO_COMPRESS=y
|
|
||||||
CONFIG_LZO_DECOMPRESS=y
|
|
||||||
CONFIG_MACH_ARMADA_370=y
|
|
||||||
# CONFIG_MACH_ARMADA_375 is not set
|
|
||||||
CONFIG_MACH_ARMADA_38X=y
|
|
||||||
# CONFIG_MACH_ARMADA_39X is not set
|
|
||||||
CONFIG_MACH_ARMADA_XP=y
|
|
||||||
# CONFIG_MACH_DOVE is not set
|
|
||||||
CONFIG_MACH_MVEBU_ANY=y
|
|
||||||
CONFIG_MACH_MVEBU_V7=y
|
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
|
||||||
CONFIG_MANGLE_BOOTARGS=y
|
|
||||||
CONFIG_MARVELL_PHY=y
|
|
||||||
CONFIG_MDIO_BUS=y
|
|
||||||
CONFIG_MDIO_DEVICE=y
|
|
||||||
CONFIG_MDIO_DEVRES=y
|
|
||||||
CONFIG_MDIO_I2C=y
|
|
||||||
CONFIG_MEMFD_CREATE=y
|
|
||||||
CONFIG_MEMORY=y
|
|
||||||
CONFIG_MIGHT_HAVE_CACHE_L2X0=y
|
|
||||||
CONFIG_MIGRATION=y
|
|
||||||
CONFIG_MMC=y
|
|
||||||
CONFIG_MMC_BLOCK=y
|
|
||||||
CONFIG_MMC_MVSDIO=y
|
|
||||||
CONFIG_MMC_SDHCI=y
|
|
||||||
# CONFIG_MMC_SDHCI_PCI is not set
|
|
||||||
CONFIG_MMC_SDHCI_PLTFM=y
|
|
||||||
CONFIG_MMC_SDHCI_PXAV3=y
|
|
||||||
CONFIG_MODULES_USE_ELF_REL=y
|
|
||||||
CONFIG_MTD_CFI_STAA=y
|
|
||||||
# CONFIG_MTD_MCHP48L640 is not set
|
|
||||||
CONFIG_MTD_NAND_CORE=y
|
|
||||||
CONFIG_MTD_NAND_ECC=y
|
|
||||||
CONFIG_MTD_NAND_ECC_SW_HAMMING=y
|
|
||||||
# CONFIG_MTD_NAND_INTEL_LGM is not set
|
|
||||||
CONFIG_MTD_NAND_MARVELL=y
|
|
||||||
CONFIG_MTD_RAW_NAND=y
|
|
||||||
CONFIG_MTD_SPI_NOR=y
|
|
||||||
# CONFIG_MTD_SPI_NOR_SWP_DISABLE is not set
|
|
||||||
CONFIG_MTD_SPI_NOR_SWP_DISABLE_ON_VOLATILE=y
|
|
||||||
# CONFIG_MTD_SPI_NOR_SWP_KEEP is not set
|
|
||||||
CONFIG_MTD_SPLIT_FIRMWARE=y
|
|
||||||
CONFIG_MTD_UBI=y
|
|
||||||
CONFIG_MTD_UBI_BEB_LIMIT=20
|
|
||||||
CONFIG_MTD_UBI_BLOCK=y
|
|
||||||
CONFIG_MTD_UBI_WL_THRESHOLD=4096
|
|
||||||
CONFIG_MUTEX_SPIN_ON_OWNER=y
|
|
||||||
CONFIG_MVEBU_CLK_COMMON=y
|
|
||||||
CONFIG_MVEBU_CLK_COREDIV=y
|
|
||||||
CONFIG_MVEBU_CLK_CPU=y
|
|
||||||
CONFIG_MVEBU_DEVBUS=y
|
|
||||||
CONFIG_MVEBU_MBUS=y
|
|
||||||
CONFIG_MVMDIO=y
|
|
||||||
CONFIG_MVNETA=y
|
|
||||||
CONFIG_MVNETA_BM=y
|
|
||||||
CONFIG_MVNETA_BM_ENABLE=y
|
|
||||||
# CONFIG_MVPP2 is not set
|
|
||||||
CONFIG_MV_XOR=y
|
|
||||||
CONFIG_NEED_DMA_MAP_STATE=y
|
|
||||||
CONFIG_NEON=y
|
|
||||||
CONFIG_NET_DEVLINK=y
|
|
||||||
CONFIG_NET_DSA=y
|
|
||||||
CONFIG_NET_DSA_MV88E6XXX=y
|
|
||||||
# CONFIG_NET_DSA_TAG_BRCM_LEGACY is not set
|
|
||||||
CONFIG_NET_DSA_TAG_DSA=y
|
|
||||||
CONFIG_NET_DSA_TAG_DSA_COMMON=y
|
|
||||||
CONFIG_NET_DSA_TAG_EDSA=y
|
|
||||||
# CONFIG_NET_DSA_TAG_HELLCREEK is not set
|
|
||||||
# CONFIG_NET_DSA_TAG_XRS700X is not set
|
|
||||||
# CONFIG_NET_DSA_XRS700X_I2C is not set
|
|
||||||
# CONFIG_NET_DSA_XRS700X_MDIO is not set
|
|
||||||
CONFIG_NET_FLOW_LIMIT=y
|
|
||||||
CONFIG_NET_SELFTESTS=y
|
|
||||||
CONFIG_NET_SOCK_MSG=y
|
|
||||||
CONFIG_NET_SWITCHDEV=y
|
|
||||||
CONFIG_NLS=y
|
|
||||||
CONFIG_NOP_USB_XCEIV=y
|
|
||||||
CONFIG_NR_CPUS=4
|
|
||||||
CONFIG_NVMEM=y
|
|
||||||
CONFIG_OF=y
|
|
||||||
CONFIG_OF_ADDRESS=y
|
|
||||||
CONFIG_OF_EARLY_FLATTREE=y
|
|
||||||
CONFIG_OF_FLATTREE=y
|
|
||||||
CONFIG_OF_GPIO=y
|
|
||||||
CONFIG_OF_IRQ=y
|
|
||||||
CONFIG_OF_KOBJ=y
|
|
||||||
CONFIG_OF_MDIO=y
|
|
||||||
CONFIG_OF_NET=y
|
|
||||||
CONFIG_OLD_SIGACTION=y
|
|
||||||
CONFIG_OLD_SIGSUSPEND3=y
|
|
||||||
CONFIG_ORION_WATCHDOG=y
|
|
||||||
CONFIG_OUTER_CACHE=y
|
|
||||||
CONFIG_OUTER_CACHE_SYNC=y
|
|
||||||
CONFIG_PADATA=y
|
|
||||||
CONFIG_PAGE_OFFSET=0xC0000000
|
|
||||||
CONFIG_PAGE_POOL=y
|
|
||||||
CONFIG_PCI=y
|
|
||||||
CONFIG_PCI_BRIDGE_EMUL=y
|
|
||||||
CONFIG_PCI_DOMAINS=y
|
|
||||||
CONFIG_PCI_DOMAINS_GENERIC=y
|
|
||||||
# CONFIG_PCI_IXP4XX is not set
|
|
||||||
CONFIG_PCI_MSI=y
|
|
||||||
CONFIG_PCI_MSI_IRQ_DOMAIN=y
|
|
||||||
CONFIG_PCI_MVEBU=y
|
|
||||||
CONFIG_PERF_USE_VMALLOC=y
|
|
||||||
CONFIG_PGTABLE_LEVELS=2
|
|
||||||
CONFIG_PHYLIB=y
|
|
||||||
CONFIG_PHYLINK=y
|
|
||||||
# CONFIG_PHY_CAN_TRANSCEIVER is not set
|
|
||||||
# CONFIG_PHY_MVEBU_A3700_COMPHY is not set
|
|
||||||
# CONFIG_PHY_MVEBU_A3700_UTMI is not set
|
|
||||||
CONFIG_PHY_MVEBU_A38X_COMPHY=y
|
|
||||||
# CONFIG_PHY_MVEBU_CP110_COMPHY is not set
|
|
||||||
# CONFIG_PHY_MVEBU_CP110_UTMI is not set
|
|
||||||
CONFIG_PINCTRL=y
|
|
||||||
CONFIG_PINCTRL_ARMADA_370=y
|
|
||||||
CONFIG_PINCTRL_ARMADA_38X=y
|
|
||||||
CONFIG_PINCTRL_ARMADA_XP=y
|
|
||||||
CONFIG_PINCTRL_MVEBU=y
|
|
||||||
# CONFIG_PINCTRL_SINGLE is not set
|
|
||||||
CONFIG_PJ4B_ERRATA_4742=y
|
|
||||||
CONFIG_PL310_ERRATA_753970=y
|
|
||||||
CONFIG_PLAT_ORION=y
|
|
||||||
CONFIG_PM_OPP=y
|
|
||||||
CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=11
|
|
||||||
CONFIG_PWM=y
|
|
||||||
CONFIG_PWM_SYSFS=y
|
|
||||||
CONFIG_RATIONAL=y
|
|
||||||
CONFIG_RCU_NEED_SEGCBLIST=y
|
|
||||||
CONFIG_RCU_STALL_COMMON=y
|
|
||||||
CONFIG_REGMAP=y
|
|
||||||
CONFIG_REGMAP_I2C=y
|
|
||||||
CONFIG_REGMAP_MMIO=y
|
|
||||||
CONFIG_REGULATOR=y
|
|
||||||
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
|
||||||
CONFIG_RFS_ACCEL=y
|
|
||||||
CONFIG_RPS=y
|
|
||||||
CONFIG_RTC_CLASS=y
|
|
||||||
CONFIG_RTC_DRV_ARMADA38X=y
|
|
||||||
# CONFIG_RTC_DRV_GOLDFISH is not set
|
|
||||||
CONFIG_RTC_DRV_MV=y
|
|
||||||
CONFIG_RTC_I2C_AND_SPI=y
|
|
||||||
CONFIG_RTC_MC146818_LIB=y
|
|
||||||
CONFIG_RWSEM_SPIN_ON_OWNER=y
|
|
||||||
CONFIG_SATA_AHCI_PLATFORM=y
|
|
||||||
CONFIG_SATA_HOST=y
|
|
||||||
CONFIG_SATA_MV=y
|
|
||||||
CONFIG_SATA_PMP=y
|
|
||||||
CONFIG_SCSI=y
|
|
||||||
CONFIG_SENSORS_PWM_FAN=y
|
|
||||||
CONFIG_SENSORS_TMP421=y
|
|
||||||
CONFIG_SERIAL_8250_DW=y
|
|
||||||
CONFIG_SERIAL_8250_DWLIB=y
|
|
||||||
CONFIG_SERIAL_8250_FSL=y
|
|
||||||
CONFIG_SERIAL_MCTRL_GPIO=y
|
|
||||||
CONFIG_SERIAL_MVEBU_CONSOLE=y
|
|
||||||
CONFIG_SERIAL_MVEBU_UART=y
|
|
||||||
CONFIG_SFP=y
|
|
||||||
CONFIG_SGL_ALLOC=y
|
|
||||||
CONFIG_SG_POOL=y
|
|
||||||
CONFIG_SMP=y
|
|
||||||
CONFIG_SMP_ON_UP=y
|
|
||||||
CONFIG_SOCK_RX_QUEUE_MAPPING=y
|
|
||||||
CONFIG_SOC_BUS=y
|
|
||||||
CONFIG_SPARSE_IRQ=y
|
|
||||||
CONFIG_SPI=y
|
|
||||||
# CONFIG_SPI_ARMADA_3700 is not set
|
|
||||||
CONFIG_SPI_MASTER=y
|
|
||||||
CONFIG_SPI_MEM=y
|
|
||||||
CONFIG_SPI_ORION=y
|
|
||||||
CONFIG_SRAM=y
|
|
||||||
CONFIG_SRAM_EXEC=y
|
|
||||||
CONFIG_SRCU=y
|
|
||||||
# CONFIG_STACKTRACE_BUILD_ID is not set
|
|
||||||
CONFIG_SWPHY=y
|
|
||||||
CONFIG_SWP_EMULATE=y
|
|
||||||
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
|
|
||||||
# CONFIG_TEST_DIV64 is not set
|
|
||||||
# CONFIG_TEST_SCANF is not set
|
|
||||||
CONFIG_THERMAL=y
|
|
||||||
CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
|
|
||||||
CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
|
|
||||||
CONFIG_THERMAL_GOV_STEP_WISE=y
|
|
||||||
CONFIG_THERMAL_HWMON=y
|
|
||||||
CONFIG_THERMAL_OF=y
|
|
||||||
CONFIG_TICK_CPU_ACCOUNTING=y
|
|
||||||
CONFIG_TIMER_OF=y
|
|
||||||
CONFIG_TIMER_PROBE=y
|
|
||||||
CONFIG_TREE_RCU=y
|
|
||||||
CONFIG_TREE_SRCU=y
|
|
||||||
CONFIG_UBIFS_FS=y
|
|
||||||
CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
|
|
||||||
CONFIG_UNWINDER_ARM=y
|
|
||||||
CONFIG_USB=y
|
|
||||||
CONFIG_USB_CDNS_SUPPORT=y
|
|
||||||
CONFIG_USB_COMMON=y
|
|
||||||
CONFIG_USB_EHCI_HCD=y
|
|
||||||
CONFIG_USB_EHCI_HCD_ORION=y
|
|
||||||
CONFIG_USB_EHCI_HCD_PLATFORM=y
|
|
||||||
CONFIG_USB_LEDS_TRIGGER_USBPORT=y
|
|
||||||
CONFIG_USB_PHY=y
|
|
||||||
CONFIG_USB_ROLE_SWITCH=y
|
|
||||||
CONFIG_USB_STORAGE=y
|
|
||||||
CONFIG_USB_SUPPORT=y
|
|
||||||
CONFIG_USB_XHCI_HCD=y
|
|
||||||
CONFIG_USB_XHCI_MVEBU=y
|
|
||||||
CONFIG_USB_XHCI_PLATFORM=y
|
|
||||||
CONFIG_USE_OF=y
|
|
||||||
CONFIG_VFP=y
|
|
||||||
CONFIG_VFPv3=y
|
|
||||||
# CONFIG_VMLINUX_MAP is not set
|
|
||||||
CONFIG_WATCHDOG_CORE=y
|
|
||||||
CONFIG_XPS=y
|
|
||||||
CONFIG_XXHASH=y
|
|
||||||
CONFIG_XZ_DEC_ARM=y
|
|
||||||
CONFIG_XZ_DEC_BCJ=y
|
|
||||||
CONFIG_ZBOOT_ROM_BSS=0x0
|
|
||||||
CONFIG_ZBOOT_ROM_TEXT=0x0
|
|
||||||
CONFIG_ZLIB_DEFLATE=y
|
|
||||||
CONFIG_ZLIB_INFLATE=y
|
|
||||||
CONFIG_ZSTD_COMPRESS=y
|
|
||||||
CONFIG_ZSTD_DECOMPRESS=y
|
|
|
@ -1,87 +0,0 @@
|
||||||
CONFIG_64BIT=y
|
|
||||||
# CONFIG_ARCH_BCM4908 is not set
|
|
||||||
CONFIG_ARCH_DMA_ADDR_T_64BIT=y
|
|
||||||
CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y
|
|
||||||
CONFIG_ARCH_MMAP_RND_BITS=18
|
|
||||||
CONFIG_ARCH_MMAP_RND_BITS_MAX=24
|
|
||||||
CONFIG_ARCH_MMAP_RND_BITS_MIN=18
|
|
||||||
CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11
|
|
||||||
CONFIG_ARCH_PROC_KCORE_TEXT=y
|
|
||||||
CONFIG_ARCH_STACKWALK=y
|
|
||||||
CONFIG_ARCH_WANTS_NO_INSTR=y
|
|
||||||
CONFIG_ARM64=y
|
|
||||||
CONFIG_ARM64_4K_PAGES=y
|
|
||||||
# CONFIG_ARM64_ERRATUM_1165522 is not set
|
|
||||||
# CONFIG_ARM64_ERRATUM_1286807 is not set
|
|
||||||
CONFIG_ARM64_LD_HAS_FIX_ERRATUM_843419=y
|
|
||||||
CONFIG_ARM64_PAGE_SHIFT=12
|
|
||||||
CONFIG_ARM64_PA_BITS=48
|
|
||||||
CONFIG_ARM64_PA_BITS_48=y
|
|
||||||
CONFIG_ARM64_PTR_AUTH=y
|
|
||||||
CONFIG_ARM64_SVE=y
|
|
||||||
CONFIG_ARM64_TAGGED_ADDR_ABI=y
|
|
||||||
CONFIG_ARM64_VA_BITS=39
|
|
||||||
CONFIG_ARM64_VA_BITS_39=y
|
|
||||||
CONFIG_ARMADA_37XX_CLK=y
|
|
||||||
CONFIG_ARMADA_AP806_SYSCON=y
|
|
||||||
CONFIG_ARMADA_AP_CP_HELPER=y
|
|
||||||
CONFIG_ARMADA_CP110_SYSCON=y
|
|
||||||
CONFIG_ARM_AMBA=y
|
|
||||||
CONFIG_ARM_ARCH_TIMER=y
|
|
||||||
# CONFIG_ARM_ARCH_TIMER_EVTSTREAM is not set
|
|
||||||
CONFIG_ARM_ARMADA_37XX_CPUFREQ=y
|
|
||||||
CONFIG_ARM_GIC_V2M=y
|
|
||||||
CONFIG_ARM_GIC_V3=y
|
|
||||||
CONFIG_ARM_GIC_V3_ITS=y
|
|
||||||
CONFIG_ARM_GIC_V3_ITS_PCI=y
|
|
||||||
# CONFIG_ARM_PL172_MPMC is not set
|
|
||||||
CONFIG_ARM_PSCI_FW=y
|
|
||||||
# CONFIG_ARM_SCMI_PROTOCOL is not set
|
|
||||||
CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y
|
|
||||||
# CONFIG_CAVIUM_TX2_ERRATUM_219 is not set
|
|
||||||
CONFIG_DMA_DIRECT_REMAP=y
|
|
||||||
CONFIG_FRAME_POINTER=y
|
|
||||||
# CONFIG_FUJITSU_ERRATUM_010001 is not set
|
|
||||||
CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
|
|
||||||
CONFIG_GENERIC_CPU_VULNERABILITIES=y
|
|
||||||
CONFIG_GENERIC_CSUM=y
|
|
||||||
CONFIG_GENERIC_FIND_FIRST_BIT=y
|
|
||||||
CONFIG_GENERIC_PINCONF=y
|
|
||||||
CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
|
|
||||||
# CONFIG_KFENCE is not set
|
|
||||||
CONFIG_MFD_SYSCON=y
|
|
||||||
CONFIG_MMC_SDHCI_XENON=y
|
|
||||||
CONFIG_MODULES_USE_ELF_RELA=y
|
|
||||||
CONFIG_MVEBU_GICP=y
|
|
||||||
CONFIG_MVEBU_ICU=y
|
|
||||||
CONFIG_MVEBU_ODMI=y
|
|
||||||
CONFIG_MVEBU_PIC=y
|
|
||||||
CONFIG_MVEBU_SEI=y
|
|
||||||
CONFIG_NEED_SG_DMA_LENGTH=y
|
|
||||||
# CONFIG_OCTEONTX2_AF is not set
|
|
||||||
CONFIG_PARTITION_PERCPU=y
|
|
||||||
CONFIG_PCI_AARDVARK=y
|
|
||||||
CONFIG_PGTABLE_LEVELS=3
|
|
||||||
CONFIG_PHYS_ADDR_T_64BIT=y
|
|
||||||
CONFIG_PHY_MVEBU_A3700_COMPHY=y
|
|
||||||
CONFIG_PHY_MVEBU_A3700_UTMI=y
|
|
||||||
CONFIG_PINCTRL_ARMADA_37XX=y
|
|
||||||
CONFIG_PINCTRL_ARMADA_AP806=y
|
|
||||||
CONFIG_PINCTRL_ARMADA_CP110=y
|
|
||||||
CONFIG_POWER_RESET=y
|
|
||||||
CONFIG_POWER_SUPPLY=y
|
|
||||||
CONFIG_QUEUED_RWLOCKS=y
|
|
||||||
CONFIG_QUEUED_SPINLOCKS=y
|
|
||||||
CONFIG_REGULATOR_GPIO=y
|
|
||||||
CONFIG_RODATA_FULL_DEFAULT_ENABLED=y
|
|
||||||
CONFIG_SPARSEMEM=y
|
|
||||||
CONFIG_SPARSEMEM_EXTREME=y
|
|
||||||
CONFIG_SPARSEMEM_VMEMMAP=y
|
|
||||||
CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
|
|
||||||
CONFIG_SPI_ARMADA_3700=y
|
|
||||||
CONFIG_SWIOTLB=y
|
|
||||||
CONFIG_SYSCTL_EXCEPTION_TRACE=y
|
|
||||||
CONFIG_THREAD_INFO_IN_TASK=y
|
|
||||||
CONFIG_UNMAP_KERNEL_AT_EL0=y
|
|
||||||
CONFIG_VMAP_STACK=y
|
|
||||||
CONFIG_ZONE_DMA32=y
|
|
|
@ -1,87 +0,0 @@
|
||||||
CONFIG_64BIT=y
|
|
||||||
# CONFIG_ARCH_BCM4908 is not set
|
|
||||||
CONFIG_ARCH_DMA_ADDR_T_64BIT=y
|
|
||||||
CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y
|
|
||||||
CONFIG_ARCH_MMAP_RND_BITS=18
|
|
||||||
CONFIG_ARCH_MMAP_RND_BITS_MAX=24
|
|
||||||
CONFIG_ARCH_MMAP_RND_BITS_MIN=18
|
|
||||||
CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11
|
|
||||||
CONFIG_ARCH_PROC_KCORE_TEXT=y
|
|
||||||
CONFIG_ARCH_STACKWALK=y
|
|
||||||
CONFIG_ARCH_WANTS_NO_INSTR=y
|
|
||||||
CONFIG_ARM64=y
|
|
||||||
CONFIG_ARM64_4K_PAGES=y
|
|
||||||
# CONFIG_ARM64_ERRATUM_1165522 is not set
|
|
||||||
# CONFIG_ARM64_ERRATUM_1286807 is not set
|
|
||||||
CONFIG_ARM64_LD_HAS_FIX_ERRATUM_843419=y
|
|
||||||
CONFIG_ARM64_PAGE_SHIFT=12
|
|
||||||
CONFIG_ARM64_PA_BITS=48
|
|
||||||
CONFIG_ARM64_PA_BITS_48=y
|
|
||||||
CONFIG_ARM64_PTR_AUTH=y
|
|
||||||
CONFIG_ARM64_SVE=y
|
|
||||||
CONFIG_ARM64_TAGGED_ADDR_ABI=y
|
|
||||||
CONFIG_ARM64_VA_BITS=39
|
|
||||||
CONFIG_ARM64_VA_BITS_39=y
|
|
||||||
CONFIG_ARMADA_37XX_CLK=y
|
|
||||||
CONFIG_ARMADA_AP806_SYSCON=y
|
|
||||||
CONFIG_ARMADA_AP_CP_HELPER=y
|
|
||||||
CONFIG_ARMADA_CP110_SYSCON=y
|
|
||||||
CONFIG_ARM_AMBA=y
|
|
||||||
CONFIG_ARM_ARCH_TIMER=y
|
|
||||||
# CONFIG_ARM_ARCH_TIMER_EVTSTREAM is not set
|
|
||||||
CONFIG_ARM_ARMADA_37XX_CPUFREQ=y
|
|
||||||
CONFIG_ARM_GIC_V2M=y
|
|
||||||
CONFIG_ARM_GIC_V3=y
|
|
||||||
CONFIG_ARM_GIC_V3_ITS=y
|
|
||||||
CONFIG_ARM_GIC_V3_ITS_PCI=y
|
|
||||||
# CONFIG_ARM_PL172_MPMC is not set
|
|
||||||
CONFIG_ARM_PSCI_FW=y
|
|
||||||
# CONFIG_ARM_SCMI_PROTOCOL is not set
|
|
||||||
CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y
|
|
||||||
# CONFIG_CAVIUM_TX2_ERRATUM_219 is not set
|
|
||||||
CONFIG_DMA_DIRECT_REMAP=y
|
|
||||||
CONFIG_FRAME_POINTER=y
|
|
||||||
# CONFIG_FUJITSU_ERRATUM_010001 is not set
|
|
||||||
CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
|
|
||||||
CONFIG_GENERIC_CPU_VULNERABILITIES=y
|
|
||||||
CONFIG_GENERIC_CSUM=y
|
|
||||||
CONFIG_GENERIC_FIND_FIRST_BIT=y
|
|
||||||
CONFIG_GENERIC_PINCONF=y
|
|
||||||
CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
|
|
||||||
# CONFIG_KFENCE is not set
|
|
||||||
CONFIG_MFD_SYSCON=y
|
|
||||||
CONFIG_MMC_SDHCI_XENON=y
|
|
||||||
CONFIG_MODULES_USE_ELF_RELA=y
|
|
||||||
CONFIG_MVEBU_GICP=y
|
|
||||||
CONFIG_MVEBU_ICU=y
|
|
||||||
CONFIG_MVEBU_ODMI=y
|
|
||||||
CONFIG_MVEBU_PIC=y
|
|
||||||
CONFIG_MVEBU_SEI=y
|
|
||||||
CONFIG_NEED_SG_DMA_LENGTH=y
|
|
||||||
# CONFIG_OCTEONTX2_AF is not set
|
|
||||||
CONFIG_PARTITION_PERCPU=y
|
|
||||||
CONFIG_PCI_AARDVARK=y
|
|
||||||
CONFIG_PGTABLE_LEVELS=3
|
|
||||||
CONFIG_PHYS_ADDR_T_64BIT=y
|
|
||||||
CONFIG_PHY_MVEBU_A3700_COMPHY=y
|
|
||||||
CONFIG_PHY_MVEBU_A3700_UTMI=y
|
|
||||||
CONFIG_PINCTRL_ARMADA_37XX=y
|
|
||||||
CONFIG_PINCTRL_ARMADA_AP806=y
|
|
||||||
CONFIG_PINCTRL_ARMADA_CP110=y
|
|
||||||
CONFIG_POWER_RESET=y
|
|
||||||
CONFIG_POWER_SUPPLY=y
|
|
||||||
CONFIG_QUEUED_RWLOCKS=y
|
|
||||||
CONFIG_QUEUED_SPINLOCKS=y
|
|
||||||
CONFIG_REGULATOR_GPIO=y
|
|
||||||
CONFIG_RODATA_FULL_DEFAULT_ENABLED=y
|
|
||||||
CONFIG_SPARSEMEM=y
|
|
||||||
CONFIG_SPARSEMEM_EXTREME=y
|
|
||||||
CONFIG_SPARSEMEM_VMEMMAP=y
|
|
||||||
CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
|
|
||||||
CONFIG_SPI_ARMADA_3700=y
|
|
||||||
CONFIG_SWIOTLB=y
|
|
||||||
CONFIG_SYSCTL_EXCEPTION_TRACE=y
|
|
||||||
CONFIG_THREAD_INFO_IN_TASK=y
|
|
||||||
CONFIG_UNMAP_KERNEL_AT_EL0=y
|
|
||||||
CONFIG_VMAP_STACK=y
|
|
||||||
CONFIG_ZONE_DMA32=y
|
|
|
@ -1,94 +0,0 @@
|
||||||
CONFIG_64BIT=y
|
|
||||||
# CONFIG_ARCH_BCM4908 is not set
|
|
||||||
CONFIG_ARCH_DMA_ADDR_T_64BIT=y
|
|
||||||
CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y
|
|
||||||
CONFIG_ARCH_MMAP_RND_BITS=18
|
|
||||||
CONFIG_ARCH_MMAP_RND_BITS_MAX=24
|
|
||||||
CONFIG_ARCH_MMAP_RND_BITS_MIN=18
|
|
||||||
CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11
|
|
||||||
CONFIG_ARCH_PROC_KCORE_TEXT=y
|
|
||||||
CONFIG_ARCH_STACKWALK=y
|
|
||||||
CONFIG_ARCH_WANTS_NO_INSTR=y
|
|
||||||
CONFIG_ARM64=y
|
|
||||||
CONFIG_ARM64_4K_PAGES=y
|
|
||||||
# CONFIG_ARM64_ERRATUM_1165522 is not set
|
|
||||||
# CONFIG_ARM64_ERRATUM_1286807 is not set
|
|
||||||
CONFIG_ARM64_LD_HAS_FIX_ERRATUM_843419=y
|
|
||||||
CONFIG_ARM64_PAGE_SHIFT=12
|
|
||||||
CONFIG_ARM64_PA_BITS=48
|
|
||||||
CONFIG_ARM64_PA_BITS_48=y
|
|
||||||
# CONFIG_ARM64_PTR_AUTH is not set
|
|
||||||
CONFIG_ARM64_SVE=y
|
|
||||||
# CONFIG_ARM64_TAGGED_ADDR_ABI is not set
|
|
||||||
CONFIG_ARM64_VA_BITS=39
|
|
||||||
CONFIG_ARM64_VA_BITS_39=y
|
|
||||||
CONFIG_ARMADA_37XX_CLK=y
|
|
||||||
CONFIG_ARMADA_AP806_SYSCON=y
|
|
||||||
CONFIG_ARMADA_AP_CP_HELPER=y
|
|
||||||
CONFIG_ARMADA_CP110_SYSCON=y
|
|
||||||
CONFIG_ARM_AMBA=y
|
|
||||||
CONFIG_ARM_ARCH_TIMER=y
|
|
||||||
# CONFIG_ARM_ARCH_TIMER_EVTSTREAM is not set
|
|
||||||
CONFIG_ARM_GIC_V2M=y
|
|
||||||
CONFIG_ARM_GIC_V3=y
|
|
||||||
CONFIG_ARM_GIC_V3_ITS=y
|
|
||||||
CONFIG_ARM_GIC_V3_ITS_PCI=y
|
|
||||||
# CONFIG_ARM_PL172_MPMC is not set
|
|
||||||
CONFIG_ARM_PSCI_FW=y
|
|
||||||
# CONFIG_ARM_SCMI_PROTOCOL is not set
|
|
||||||
CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y
|
|
||||||
# CONFIG_CAVIUM_TX2_ERRATUM_219 is not set
|
|
||||||
CONFIG_DMA_DIRECT_REMAP=y
|
|
||||||
CONFIG_FRAME_POINTER=y
|
|
||||||
# CONFIG_FUJITSU_ERRATUM_010001 is not set
|
|
||||||
CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
|
|
||||||
CONFIG_GENERIC_CPU_VULNERABILITIES=y
|
|
||||||
CONFIG_GENERIC_CSUM=y
|
|
||||||
CONFIG_GENERIC_FIND_FIRST_BIT=y
|
|
||||||
CONFIG_GENERIC_PINCONF=y
|
|
||||||
CONFIG_HW_RANDOM_OMAP=y
|
|
||||||
CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
|
|
||||||
# CONFIG_KFENCE is not set
|
|
||||||
CONFIG_MARVELL_10G_PHY=y
|
|
||||||
CONFIG_MFD_SYSCON=y
|
|
||||||
CONFIG_MMC_SDHCI_XENON=y
|
|
||||||
CONFIG_MODULES_USE_ELF_RELA=y
|
|
||||||
CONFIG_MVEBU_GICP=y
|
|
||||||
CONFIG_MVEBU_ICU=y
|
|
||||||
CONFIG_MVEBU_ODMI=y
|
|
||||||
CONFIG_MVEBU_PIC=y
|
|
||||||
CONFIG_MVEBU_SEI=y
|
|
||||||
CONFIG_MVPP2=y
|
|
||||||
CONFIG_MV_XOR_V2=y
|
|
||||||
CONFIG_NEED_SG_DMA_LENGTH=y
|
|
||||||
# CONFIG_OCTEONTX2_AF is not set
|
|
||||||
CONFIG_PARTITION_PERCPU=y
|
|
||||||
CONFIG_PCIEAER=y
|
|
||||||
CONFIG_PCIEPORTBUS=y
|
|
||||||
CONFIG_PCIE_ARMADA_8K=y
|
|
||||||
CONFIG_PCIE_DW=y
|
|
||||||
CONFIG_PCIE_DW_HOST=y
|
|
||||||
# CONFIG_PCI_AARDVARK is not set
|
|
||||||
CONFIG_PGTABLE_LEVELS=3
|
|
||||||
CONFIG_PHYS_ADDR_T_64BIT=y
|
|
||||||
CONFIG_PHY_MVEBU_CP110_COMPHY=y
|
|
||||||
CONFIG_PINCTRL_ARMADA_37XX=y
|
|
||||||
CONFIG_PINCTRL_ARMADA_AP806=y
|
|
||||||
CONFIG_PINCTRL_ARMADA_CP110=y
|
|
||||||
CONFIG_POWER_RESET=y
|
|
||||||
CONFIG_POWER_SUPPLY=y
|
|
||||||
CONFIG_QUEUED_RWLOCKS=y
|
|
||||||
CONFIG_QUEUED_SPINLOCKS=y
|
|
||||||
CONFIG_RAS=y
|
|
||||||
CONFIG_REGULATOR_GPIO=y
|
|
||||||
# CONFIG_RODATA_FULL_DEFAULT_ENABLED is not set
|
|
||||||
CONFIG_SPARSEMEM=y
|
|
||||||
CONFIG_SPARSEMEM_EXTREME=y
|
|
||||||
CONFIG_SPARSEMEM_VMEMMAP=y
|
|
||||||
CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
|
|
||||||
CONFIG_SWIOTLB=y
|
|
||||||
CONFIG_SYSCTL_EXCEPTION_TRACE=y
|
|
||||||
CONFIG_THREAD_INFO_IN_TASK=y
|
|
||||||
CONFIG_UNMAP_KERNEL_AT_EL0=y
|
|
||||||
CONFIG_VMAP_STACK=y
|
|
||||||
CONFIG_ZONE_DMA32=y
|
|
|
@ -1,94 +0,0 @@
|
||||||
CONFIG_64BIT=y
|
|
||||||
# CONFIG_ARCH_BCM4908 is not set
|
|
||||||
CONFIG_ARCH_DMA_ADDR_T_64BIT=y
|
|
||||||
CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y
|
|
||||||
CONFIG_ARCH_MMAP_RND_BITS=18
|
|
||||||
CONFIG_ARCH_MMAP_RND_BITS_MAX=24
|
|
||||||
CONFIG_ARCH_MMAP_RND_BITS_MIN=18
|
|
||||||
CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11
|
|
||||||
CONFIG_ARCH_PROC_KCORE_TEXT=y
|
|
||||||
CONFIG_ARCH_STACKWALK=y
|
|
||||||
CONFIG_ARCH_WANTS_NO_INSTR=y
|
|
||||||
CONFIG_ARM64=y
|
|
||||||
CONFIG_ARM64_4K_PAGES=y
|
|
||||||
# CONFIG_ARM64_ERRATUM_1165522 is not set
|
|
||||||
# CONFIG_ARM64_ERRATUM_1286807 is not set
|
|
||||||
CONFIG_ARM64_LD_HAS_FIX_ERRATUM_843419=y
|
|
||||||
CONFIG_ARM64_PAGE_SHIFT=12
|
|
||||||
CONFIG_ARM64_PA_BITS=48
|
|
||||||
CONFIG_ARM64_PA_BITS_48=y
|
|
||||||
# CONFIG_ARM64_PTR_AUTH is not set
|
|
||||||
CONFIG_ARM64_SVE=y
|
|
||||||
# CONFIG_ARM64_TAGGED_ADDR_ABI is not set
|
|
||||||
CONFIG_ARM64_VA_BITS=39
|
|
||||||
CONFIG_ARM64_VA_BITS_39=y
|
|
||||||
CONFIG_ARMADA_37XX_CLK=y
|
|
||||||
CONFIG_ARMADA_AP806_SYSCON=y
|
|
||||||
CONFIG_ARMADA_AP_CP_HELPER=y
|
|
||||||
CONFIG_ARMADA_CP110_SYSCON=y
|
|
||||||
CONFIG_ARM_AMBA=y
|
|
||||||
CONFIG_ARM_ARCH_TIMER=y
|
|
||||||
# CONFIG_ARM_ARCH_TIMER_EVTSTREAM is not set
|
|
||||||
CONFIG_ARM_GIC_V2M=y
|
|
||||||
CONFIG_ARM_GIC_V3=y
|
|
||||||
CONFIG_ARM_GIC_V3_ITS=y
|
|
||||||
CONFIG_ARM_GIC_V3_ITS_PCI=y
|
|
||||||
# CONFIG_ARM_PL172_MPMC is not set
|
|
||||||
CONFIG_ARM_PSCI_FW=y
|
|
||||||
# CONFIG_ARM_SCMI_PROTOCOL is not set
|
|
||||||
CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y
|
|
||||||
# CONFIG_CAVIUM_TX2_ERRATUM_219 is not set
|
|
||||||
CONFIG_DMA_DIRECT_REMAP=y
|
|
||||||
CONFIG_FRAME_POINTER=y
|
|
||||||
# CONFIG_FUJITSU_ERRATUM_010001 is not set
|
|
||||||
CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
|
|
||||||
CONFIG_GENERIC_CPU_VULNERABILITIES=y
|
|
||||||
CONFIG_GENERIC_CSUM=y
|
|
||||||
CONFIG_GENERIC_FIND_FIRST_BIT=y
|
|
||||||
CONFIG_GENERIC_PINCONF=y
|
|
||||||
CONFIG_HW_RANDOM_OMAP=y
|
|
||||||
CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
|
|
||||||
# CONFIG_KFENCE is not set
|
|
||||||
CONFIG_MARVELL_10G_PHY=y
|
|
||||||
CONFIG_MFD_SYSCON=y
|
|
||||||
CONFIG_MMC_SDHCI_XENON=y
|
|
||||||
CONFIG_MODULES_USE_ELF_RELA=y
|
|
||||||
CONFIG_MVEBU_GICP=y
|
|
||||||
CONFIG_MVEBU_ICU=y
|
|
||||||
CONFIG_MVEBU_ODMI=y
|
|
||||||
CONFIG_MVEBU_PIC=y
|
|
||||||
CONFIG_MVEBU_SEI=y
|
|
||||||
CONFIG_MVPP2=y
|
|
||||||
CONFIG_MV_XOR_V2=y
|
|
||||||
CONFIG_NEED_SG_DMA_LENGTH=y
|
|
||||||
# CONFIG_OCTEONTX2_AF is not set
|
|
||||||
CONFIG_PARTITION_PERCPU=y
|
|
||||||
CONFIG_PCIEAER=y
|
|
||||||
CONFIG_PCIEPORTBUS=y
|
|
||||||
CONFIG_PCIE_ARMADA_8K=y
|
|
||||||
CONFIG_PCIE_DW=y
|
|
||||||
CONFIG_PCIE_DW_HOST=y
|
|
||||||
# CONFIG_PCI_AARDVARK is not set
|
|
||||||
CONFIG_PGTABLE_LEVELS=3
|
|
||||||
CONFIG_PHYS_ADDR_T_64BIT=y
|
|
||||||
CONFIG_PHY_MVEBU_CP110_COMPHY=y
|
|
||||||
CONFIG_PINCTRL_ARMADA_37XX=y
|
|
||||||
CONFIG_PINCTRL_ARMADA_AP806=y
|
|
||||||
CONFIG_PINCTRL_ARMADA_CP110=y
|
|
||||||
CONFIG_POWER_RESET=y
|
|
||||||
CONFIG_POWER_SUPPLY=y
|
|
||||||
CONFIG_QUEUED_RWLOCKS=y
|
|
||||||
CONFIG_QUEUED_SPINLOCKS=y
|
|
||||||
CONFIG_RAS=y
|
|
||||||
CONFIG_REGULATOR_GPIO=y
|
|
||||||
# CONFIG_RODATA_FULL_DEFAULT_ENABLED is not set
|
|
||||||
CONFIG_SPARSEMEM=y
|
|
||||||
CONFIG_SPARSEMEM_EXTREME=y
|
|
||||||
CONFIG_SPARSEMEM_VMEMMAP=y
|
|
||||||
CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
|
|
||||||
CONFIG_SWIOTLB=y
|
|
||||||
CONFIG_SYSCTL_EXCEPTION_TRACE=y
|
|
||||||
CONFIG_THREAD_INFO_IN_TASK=y
|
|
||||||
CONFIG_UNMAP_KERNEL_AT_EL0=y
|
|
||||||
CONFIG_VMAP_STACK=y
|
|
||||||
CONFIG_ZONE_DMA32=y
|
|
|
@ -1,208 +0,0 @@
|
||||||
From 71270226b14733a4b1f2cde58ea9265caa50b38d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Adrian Panella <ianchi74@outlook.com>
|
|
||||||
Date: Thu, 9 Mar 2017 09:37:17 +0100
|
|
||||||
Subject: [PATCH 67/69] generic: Mangle bootloader's kernel arguments
|
|
||||||
|
|
||||||
The command-line arguments provided by the boot loader will be
|
|
||||||
appended to a new device tree property: bootloader-args.
|
|
||||||
If there is a property "append-rootblock" in DT under /chosen
|
|
||||||
and a root= option in bootloaders command line it will be parsed
|
|
||||||
and added to DT bootargs with the form: <append-rootblock>XX.
|
|
||||||
Only command line ATAG will be processed, the rest of the ATAGs
|
|
||||||
sent by bootloader will be ignored.
|
|
||||||
This is usefull in dual boot systems, to get the current root partition
|
|
||||||
without afecting the rest of the system.
|
|
||||||
|
|
||||||
Signed-off-by: Adrian Panella <ianchi74@outlook.com>
|
|
||||||
|
|
||||||
This patch has been modified to be mvebu specific. The original patch
|
|
||||||
did not pass the bootloader cmdline on if no append-rootblock stanza
|
|
||||||
was found, resulting in blank cmdline and failure to boot.
|
|
||||||
|
|
||||||
Signed-off-by: Michael Gray <michael.gray@lantisproject.com>
|
|
||||||
---
|
|
||||||
arch/arm/Kconfig | 11 ++++
|
|
||||||
arch/arm/boot/compressed/atags_to_fdt.c | 85 ++++++++++++++++++++++++-
|
|
||||||
init/main.c | 16 +++++
|
|
||||||
3 files changed, 111 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
--- a/arch/arm/Kconfig
|
|
||||||
+++ b/arch/arm/Kconfig
|
|
||||||
@@ -1780,6 +1780,17 @@ config ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEN
|
|
||||||
The command-line arguments provided by the boot loader will be
|
|
||||||
appended to the the device tree bootargs property.
|
|
||||||
|
|
||||||
+config ARM_ATAG_DTB_COMPAT_CMDLINE_MANGLE
|
|
||||||
+ bool "Append rootblock parsing bootloader's kernel arguments"
|
|
||||||
+ help
|
|
||||||
+ The command-line arguments provided by the boot loader will be
|
|
||||||
+ appended to a new device tree property: bootloader-args.
|
|
||||||
+ If there is a property "append-rootblock" in DT under /chosen
|
|
||||||
+ and a root= option in bootloaders command line it will be parsed
|
|
||||||
+ and added to DT bootargs with the form: <append-rootblock>XX.
|
|
||||||
+ Only command line ATAG will be processed, the rest of the ATAGs
|
|
||||||
+ sent by bootloader will be ignored.
|
|
||||||
+
|
|
||||||
endchoice
|
|
||||||
|
|
||||||
config CMDLINE
|
|
||||||
--- a/arch/arm/boot/compressed/atags_to_fdt.c
|
|
||||||
+++ b/arch/arm/boot/compressed/atags_to_fdt.c
|
|
||||||
@@ -5,6 +5,8 @@
|
|
||||||
|
|
||||||
#if defined(CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND)
|
|
||||||
#define do_extend_cmdline 1
|
|
||||||
+#elif defined(CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_MANGLE)
|
|
||||||
+#define do_extend_cmdline 1
|
|
||||||
#else
|
|
||||||
#define do_extend_cmdline 0
|
|
||||||
#endif
|
|
||||||
@@ -69,6 +71,72 @@ static uint32_t get_cell_size(const void
|
|
||||||
return cell_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
+#if defined(CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_MANGLE)
|
|
||||||
+
|
|
||||||
+static char *append_rootblock(char *dest, const char *str, int len, void *fdt)
|
|
||||||
+{
|
|
||||||
+ char *ptr, *end;
|
|
||||||
+ char *root="root=";
|
|
||||||
+ int i, l;
|
|
||||||
+ const char *rootblock;
|
|
||||||
+
|
|
||||||
+ //ARM doesn't have __HAVE_ARCH_STRSTR, so search manually
|
|
||||||
+ ptr = str - 1;
|
|
||||||
+
|
|
||||||
+ do {
|
|
||||||
+ //first find an 'r' at the begining or after a space
|
|
||||||
+ do {
|
|
||||||
+ ptr++;
|
|
||||||
+ ptr = strchr(ptr, 'r');
|
|
||||||
+ if (!ptr)
|
|
||||||
+ goto no_append;
|
|
||||||
+
|
|
||||||
+ } while (ptr != str && *(ptr-1) != ' ');
|
|
||||||
+
|
|
||||||
+ //then check for the rest
|
|
||||||
+ for(i = 1; i <= 4; i++)
|
|
||||||
+ if(*(ptr+i) != *(root+i)) break;
|
|
||||||
+
|
|
||||||
+ } while (i != 5);
|
|
||||||
+
|
|
||||||
+ end = strchr(ptr, ' ');
|
|
||||||
+ end = end ? (end - 1) : (strchr(ptr, 0) - 1);
|
|
||||||
+
|
|
||||||
+ //find partition number (assumes format root=/dev/mtdXX | /dev/mtdblockXX | yy:XX )
|
|
||||||
+ for( i = 0; end >= ptr && *end >= '0' && *end <= '9'; end--, i++);
|
|
||||||
+ ptr = end + 1;
|
|
||||||
+
|
|
||||||
+ /* if append-rootblock property is set use it to append to command line */
|
|
||||||
+ rootblock = getprop(fdt, "/chosen", "append-rootblock", &l);
|
|
||||||
+ if (rootblock == NULL)
|
|
||||||
+ goto no_append;
|
|
||||||
+
|
|
||||||
+ if (*dest != ' ') {
|
|
||||||
+ *dest = ' ';
|
|
||||||
+ dest++;
|
|
||||||
+ len++;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (len + l + i <= COMMAND_LINE_SIZE) {
|
|
||||||
+ memcpy(dest, rootblock, l);
|
|
||||||
+ dest += l - 1;
|
|
||||||
+ memcpy(dest, ptr, i);
|
|
||||||
+ dest += i;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return dest;
|
|
||||||
+
|
|
||||||
+no_append:
|
|
||||||
+ len = strlen(str);
|
|
||||||
+ if (len + 1 < COMMAND_LINE_SIZE) {
|
|
||||||
+ memcpy(dest, str, len);
|
|
||||||
+ dest += len;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return dest;
|
|
||||||
+}
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
static void merge_fdt_bootargs(void *fdt, const char *fdt_cmdline)
|
|
||||||
{
|
|
||||||
char cmdline[COMMAND_LINE_SIZE];
|
|
||||||
@@ -88,12 +156,21 @@ static void merge_fdt_bootargs(void *fdt
|
|
||||||
|
|
||||||
/* and append the ATAG_CMDLINE */
|
|
||||||
if (fdt_cmdline) {
|
|
||||||
+
|
|
||||||
+#if defined(CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_MANGLE)
|
|
||||||
+ //save original bootloader args
|
|
||||||
+ //and append ubi.mtd with root partition number to current cmdline
|
|
||||||
+ setprop_string(fdt, "/chosen", "bootloader-args", fdt_cmdline);
|
|
||||||
+ ptr = append_rootblock(ptr, fdt_cmdline, len, fdt);
|
|
||||||
+
|
|
||||||
+#else
|
|
||||||
len = strlen(fdt_cmdline);
|
|
||||||
if (ptr - cmdline + len + 2 < COMMAND_LINE_SIZE) {
|
|
||||||
*ptr++ = ' ';
|
|
||||||
memcpy(ptr, fdt_cmdline, len);
|
|
||||||
ptr += len;
|
|
||||||
}
|
|
||||||
+#endif
|
|
||||||
}
|
|
||||||
*ptr = '\0';
|
|
||||||
|
|
||||||
@@ -168,7 +245,9 @@ int atags_to_fdt(void *atag_list, void *
|
|
||||||
else
|
|
||||||
setprop_string(fdt, "/chosen", "bootargs",
|
|
||||||
atag->u.cmdline.cmdline);
|
|
||||||
- } else if (atag->hdr.tag == ATAG_MEM) {
|
|
||||||
+ }
|
|
||||||
+#ifndef CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_MANGLE
|
|
||||||
+ else if (atag->hdr.tag == ATAG_MEM) {
|
|
||||||
if (memcount >= sizeof(mem_reg_property)/4)
|
|
||||||
continue;
|
|
||||||
if (!atag->u.mem.size)
|
|
||||||
@@ -212,6 +291,10 @@ int atags_to_fdt(void *atag_list, void *
|
|
||||||
setprop(fdt, "/memory", "reg", mem_reg_property,
|
|
||||||
4 * memcount * memsize);
|
|
||||||
}
|
|
||||||
+#else
|
|
||||||
+
|
|
||||||
+ }
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
return fdt_pack(fdt);
|
|
||||||
}
|
|
||||||
--- a/init/main.c
|
|
||||||
+++ b/init/main.c
|
|
||||||
@@ -110,6 +110,10 @@
|
|
||||||
|
|
||||||
#include <kunit/test.h>
|
|
||||||
|
|
||||||
+#if defined(CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_MANGLE)
|
|
||||||
+#include <linux/of.h>
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
static int kernel_init(void *);
|
|
||||||
|
|
||||||
extern void init_IRQ(void);
|
|
||||||
@@ -903,6 +907,18 @@ asmlinkage __visible void __init __no_sa
|
|
||||||
page_alloc_init();
|
|
||||||
|
|
||||||
pr_notice("Kernel command line: %s\n", saved_command_line);
|
|
||||||
+
|
|
||||||
+#if defined(CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_MANGLE)
|
|
||||||
+ //Show bootloader's original command line for reference
|
|
||||||
+ if(of_chosen) {
|
|
||||||
+ const char *prop = of_get_property(of_chosen, "bootloader-args", NULL);
|
|
||||||
+ if(prop)
|
|
||||||
+ pr_notice("Bootloader command line (ignored): %s\n", prop);
|
|
||||||
+ else
|
|
||||||
+ pr_notice("Bootloader command line not present\n");
|
|
||||||
+ }
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
/* parameters may set static keys */
|
|
||||||
jump_label_init();
|
|
||||||
parse_early_param();
|
|
|
@ -1,10 +0,0 @@
|
||||||
--- a/arch/arm/mach-mvebu/Kconfig
|
|
||||||
+++ b/arch/arm/mach-mvebu/Kconfig
|
|
||||||
@@ -67,6 +67,7 @@ config MACH_ARMADA_38X
|
|
||||||
select HAVE_ARM_TWD if SMP
|
|
||||||
select MACH_MVEBU_V7
|
|
||||||
select PINCTRL_ARMADA_38X
|
|
||||||
+ select ARCH_WANT_LIBATA_LEDS
|
|
||||||
help
|
|
||||||
Say 'Y' here if you want your kernel to support boards based
|
|
||||||
on the Marvell Armada 380/385 SoC with device tree.
|
|
|
@ -1,770 +0,0 @@
|
||||||
--- a/arch/arm/boot/dts/armada-385-linksys.dtsi
|
|
||||||
+++ b/arch/arm/boot/dts/armada-385-linksys.dtsi
|
|
||||||
@@ -212,11 +212,19 @@
|
|
||||||
&pcie1 {
|
|
||||||
/* Marvell 88W8864, 5GHz-only */
|
|
||||||
status = "okay";
|
|
||||||
+
|
|
||||||
+ mwlwifi {
|
|
||||||
+ marvell,2ghz = <0>;
|
|
||||||
+ };
|
|
||||||
};
|
|
||||||
|
|
||||||
&pcie2 {
|
|
||||||
/* Marvell 88W8864, 2GHz-only */
|
|
||||||
status = "okay";
|
|
||||||
+
|
|
||||||
+ mwlwifi {
|
|
||||||
+ marvell,5ghz = <0>;
|
|
||||||
+ };
|
|
||||||
};
|
|
||||||
|
|
||||||
&pinctrl {
|
|
||||||
--- a/arch/arm/boot/dts/armada-385-linksys-caiman.dts
|
|
||||||
+++ b/arch/arm/boot/dts/armada-385-linksys-caiman.dts
|
|
||||||
@@ -142,3 +142,205 @@
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
+
|
|
||||||
+&pcie1 {
|
|
||||||
+ mwlwifi {
|
|
||||||
+ marvell,chainmask = <2 2>;
|
|
||||||
+ marvell,powertable {
|
|
||||||
+ AU =
|
|
||||||
+ <36 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <40 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <44 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <48 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <52 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <56 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <60 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <64 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <100 0 0x17 0x17 0x17 0x17 0x17 0x17 0x17 0x15 0x17 0x17 0x17 0x14 0x17 0x17 0x17 0x14 0 0xf>,
|
|
||||||
+ <104 0 0x17 0x17 0x17 0x17 0x17 0x17 0x17 0x15 0x17 0x17 0x17 0x14 0x17 0x17 0x17 0x14 0 0xf>,
|
|
||||||
+ <108 0 0x17 0x17 0x17 0x17 0x17 0x17 0x17 0x15 0x17 0x17 0x17 0x14 0x17 0x17 0x17 0x14 0 0xf>,
|
|
||||||
+ <112 0 0x17 0x17 0x17 0x17 0x17 0x17 0x17 0x15 0x17 0x17 0x17 0x14 0x17 0x17 0x17 0x14 0 0xf>,
|
|
||||||
+ <116 0 0x17 0x17 0x17 0x17 0x17 0x17 0x17 0x15 0x17 0x17 0x17 0x14 0x17 0x17 0x17 0x14 0 0xf>,
|
|
||||||
+ <120 0 0x17 0x17 0x17 0x17 0x17 0x17 0x17 0x15 0x17 0x17 0x17 0x14 0x17 0x17 0x17 0x14 0 0xf>,
|
|
||||||
+ <124 0 0x17 0x17 0x17 0x17 0x17 0x17 0x17 0x15 0x17 0x17 0x17 0x14 0x17 0x17 0x17 0x14 0 0xf>,
|
|
||||||
+ <128 0 0x17 0x17 0x17 0x17 0x17 0x17 0x17 0x15 0x17 0x17 0x17 0x14 0x17 0x17 0x17 0x14 0 0xf>,
|
|
||||||
+ <132 0 0x17 0x17 0x17 0x17 0x17 0x17 0x17 0x15 0x17 0x17 0x17 0x14 0x17 0x17 0x17 0x14 0 0xf>,
|
|
||||||
+ <136 0 0x17 0x17 0x17 0x17 0x17 0x17 0x17 0x15 0x17 0x17 0x17 0x14 0x17 0x17 0x17 0x14 0 0xf>,
|
|
||||||
+ <140 0 0x17 0x17 0x17 0x17 0x17 0x17 0x17 0x15 0x17 0x17 0x17 0x14 0x17 0x17 0x17 0x14 0 0xf>,
|
|
||||||
+ <149 0 0x1a 0x1a 0x18 0x17 0x1a 0x1a 0x17 0x15 0x1a 0x1a 0x17 0x14 0x1a 0x1a 0x17 0x14 0 0xf>,
|
|
||||||
+ <153 0 0x1a 0x1a 0x18 0x17 0x1a 0x1a 0x17 0x15 0x1a 0x1a 0x17 0x14 0x1a 0x1a 0x17 0x14 0 0xf>,
|
|
||||||
+ <157 0 0x1a 0x1a 0x18 0x17 0x1a 0x1a 0x17 0x15 0x1a 0x1a 0x17 0x14 0x1a 0x1a 0x17 0x14 0 0xf>,
|
|
||||||
+ <161 0 0x1a 0x1a 0x18 0x17 0x1a 0x1a 0x17 0x15 0x1a 0x1a 0x17 0x14 0x1a 0x1a 0x17 0x14 0 0xf>,
|
|
||||||
+ <165 0 0x1a 0x1a 0x18 0x17 0x1a 0x1a 0x17 0x15 0x1a 0x1a 0x17 0x14 0x1a 0x1a 0x17 0x14 0 0xf>;
|
|
||||||
+ CA =
|
|
||||||
+ <36 0 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0 0xf>,
|
|
||||||
+ <40 0 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0 0xf>,
|
|
||||||
+ <44 0 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0 0xf>,
|
|
||||||
+ <48 0 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0 0xf>,
|
|
||||||
+ <52 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <56 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <60 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <64 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <100 0 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <104 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <108 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <112 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <116 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <120 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <124 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <128 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <132 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <136 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <140 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <149 0 0x1a 0x1a 0x18 0x17 0x19 0x19 0x17 0x15 0x18 0x18 0x17 0x14 0x15 0x15 0x15 0x14 0 0xf>,
|
|
||||||
+ <153 0 0x1a 0x1a 0x18 0x17 0x1a 0x1a 0x17 0x15 0x1a 0x1a 0x17 0x14 0x15 0x15 0x15 0x14 0 0xf>,
|
|
||||||
+ <157 0 0x1a 0x1a 0x18 0x17 0x1a 0x1a 0x17 0x15 0x1a 0x1a 0x17 0x14 0x15 0x15 0x15 0x14 0 0xf>,
|
|
||||||
+ <161 0 0x1a 0x1a 0x18 0x17 0x1a 0x1a 0x17 0x15 0x1a 0x1a 0x17 0x14 0x15 0x15 0x15 0x14 0 0xf>,
|
|
||||||
+ <165 0 0x1a 0x1a 0x18 0x17 0x1a 0x1a 0x17 0x15 0x1a 0x1a 0x17 0x14 0x15 0x15 0x15 0x14 0 0xf>;
|
|
||||||
+ CN =
|
|
||||||
+ <36 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <40 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <44 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <48 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <52 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <56 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <60 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <64 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <100 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <104 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <108 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <112 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <116 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <120 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <124 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <128 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <132 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <136 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <140 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <149 0 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x14 0x14 0x14 0x14 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <153 0 0x1a 0x1a 0x18 0x17 0x1a 0x1a 0x17 0x15 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <157 0 0x1a 0x1a 0x18 0x17 0x1a 0x1a 0x17 0x15 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <161 0 0x1a 0x1a 0x18 0x17 0x1a 0x1a 0x17 0x15 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <165 0 0x15 0x15 0x15 0x15 0x16 0x16 0x16 0x15 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0 0xf>;
|
|
||||||
+ ETSI =
|
|
||||||
+ <36 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <40 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <44 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <48 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <52 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <56 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <60 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <64 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <100 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <104 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <108 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <112 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <116 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <120 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <124 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <128 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <132 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <136 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <140 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <149 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>;
|
|
||||||
+ FCC =
|
|
||||||
+ <36 0 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <40 0 0x19 0x19 0x18 0x17 0x19 0x19 0x17 0x15 0x17 0x17 0x17 0x14 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <44 0 0x19 0x19 0x18 0x17 0x19 0x19 0x17 0x15 0x17 0x17 0x17 0x14 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <48 0 0x1a 0x1a 0x18 0x17 0x1a 0x1a 0x17 0x15 0x17 0x17 0x17 0x14 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <52 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <56 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <60 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <64 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <100 0 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <104 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <108 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <112 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <116 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <120 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <124 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <128 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <132 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <136 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <140 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <149 0 0x1a 0x1a 0x18 0x17 0x19 0x19 0x17 0x15 0x18 0x18 0x17 0x14 0x15 0x15 0x15 0x14 0 0xf>,
|
|
||||||
+ <153 0 0x1a 0x1a 0x18 0x17 0x1a 0x1a 0x17 0x15 0x1a 0x1a 0x17 0x14 0x15 0x15 0x15 0x14 0 0xf>,
|
|
||||||
+ <157 0 0x1a 0x1a 0x18 0x17 0x1a 0x1a 0x17 0x15 0x1a 0x1a 0x17 0x14 0x15 0x15 0x15 0x14 0 0xf>,
|
|
||||||
+ <161 0 0x1a 0x1a 0x18 0x17 0x1a 0x1a 0x17 0x15 0x1a 0x1a 0x17 0x14 0x15 0x15 0x15 0x14 0 0xf>,
|
|
||||||
+ <165 0 0x1a 0x1a 0x18 0x17 0x1a 0x1a 0x17 0x15 0x1a 0x1a 0x17 0x14 0x15 0x15 0x15 0x14 0 0xf>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&pcie2 {
|
|
||||||
+ mwlwifi {
|
|
||||||
+ marvell,chainmask = <2 2>;
|
|
||||||
+ marvell,powertable {
|
|
||||||
+ AU =
|
|
||||||
+ <1 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <2 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <3 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <4 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <5 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <6 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <7 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <8 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <9 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <10 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <11 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>;
|
|
||||||
+ CA =
|
|
||||||
+ <1 0 0x19 0x14 0x14 0x14 0x13 0x13 0x13 0x13 0x10 0x10 0x10 0x10 0x00 0x00 0x00 0x00 0 0xf>,
|
|
||||||
+ <2 0 0x1a 0x19 0x18 0x17 0x19 0x19 0x17 0x16 0x14 0x14 0x14 0x14 0x00 0x00 0x00 0x00 0 0xf>,
|
|
||||||
+ <3 0 0x1a 0x19 0x18 0x17 0x19 0x19 0x17 0x16 0x14 0x14 0x14 0x14 0x00 0x00 0x00 0x00 0 0xf>,
|
|
||||||
+ <4 0 0x1a 0x19 0x18 0x17 0x19 0x19 0x17 0x16 0x14 0x14 0x14 0x14 0x00 0x00 0x00 0x00 0 0xf>,
|
|
||||||
+ <5 0 0x1a 0x19 0x18 0x17 0x19 0x19 0x17 0x16 0x14 0x14 0x14 0x14 0x00 0x00 0x00 0x00 0 0xf>,
|
|
||||||
+ <6 0 0x1a 0x19 0x18 0x17 0x19 0x19 0x17 0x16 0x14 0x14 0x14 0x14 0x00 0x00 0x00 0x00 0 0xf>,
|
|
||||||
+ <7 0 0x1a 0x19 0x18 0x17 0x19 0x19 0x17 0x16 0x14 0x14 0x14 0x14 0x00 0x00 0x00 0x00 0 0xf>,
|
|
||||||
+ <8 0 0x1a 0x19 0x18 0x17 0x19 0x19 0x17 0x16 0x14 0x14 0x14 0x14 0x00 0x00 0x00 0x00 0 0xf>,
|
|
||||||
+ <9 0 0x1a 0x19 0x18 0x17 0x19 0x19 0x17 0x16 0x14 0x14 0x14 0x14 0x00 0x00 0x00 0x00 0 0xf>,
|
|
||||||
+ <10 0 0x1a 0x19 0x18 0x17 0x19 0x19 0x17 0x16 0x14 0x14 0x14 0x14 0x00 0x00 0x00 0x00 0 0xf>,
|
|
||||||
+ <11 0 0x19 0x15 0x15 0x15 0x14 0x14 0x14 0x14 0x13 0x13 0x13 0x13 0x00 0x00 0x00 0x00 0 0xf>;
|
|
||||||
+ CN =
|
|
||||||
+ <1 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <2 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <3 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <4 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <5 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <6 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <7 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <8 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <9 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <10 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <11 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <12 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <13 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <14 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>;
|
|
||||||
+ ETSI =
|
|
||||||
+ <1 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <2 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <3 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <4 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <5 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <6 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <7 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <8 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <9 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <10 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <11 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <12 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <13 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>;
|
|
||||||
+ FCC =
|
|
||||||
+ <1 0 0x19 0x14 0x14 0x14 0x13 0x13 0x13 0x13 0x10 0x10 0x10 0x10 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <2 0 0x1a 0x19 0x18 0x17 0x19 0x19 0x17 0x16 0x14 0x14 0x14 0x14 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <3 0 0x1a 0x19 0x18 0x17 0x19 0x19 0x17 0x16 0x14 0x14 0x14 0x14 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <4 0 0x1a 0x19 0x18 0x17 0x19 0x19 0x17 0x16 0x14 0x14 0x14 0x14 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <5 0 0x1a 0x19 0x18 0x17 0x19 0x19 0x17 0x16 0x14 0x14 0x14 0x14 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <6 0 0x1a 0x19 0x18 0x17 0x19 0x19 0x17 0x16 0x14 0x14 0x14 0x14 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <7 0 0x1a 0x19 0x18 0x17 0x19 0x19 0x17 0x16 0x14 0x14 0x14 0x14 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <8 0 0x1a 0x19 0x18 0x17 0x19 0x19 0x17 0x16 0x14 0x14 0x14 0x14 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <9 0 0x1a 0x19 0x18 0x17 0x19 0x19 0x17 0x16 0x14 0x14 0x14 0x14 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <10 0 0x1a 0x19 0x18 0x17 0x19 0x19 0x17 0x16 0x14 0x14 0x14 0x14 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <11 0 0x19 0x15 0x15 0x15 0x14 0x14 0x14 0x14 0x13 0x13 0x13 0x13 0x0 0x0 0x0 0x0 0 0xf>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
--- a/arch/arm/boot/dts/armada-385-linksys-cobra.dts
|
|
||||||
+++ b/arch/arm/boot/dts/armada-385-linksys-cobra.dts
|
|
||||||
@@ -142,3 +142,205 @@
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
+
|
|
||||||
+&pcie1 {
|
|
||||||
+ mwlwifi {
|
|
||||||
+ marvell,chainmask = <4 4>;
|
|
||||||
+ marvell,powertable {
|
|
||||||
+ AU =
|
|
||||||
+ <36 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <40 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <44 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <48 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <52 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <56 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <60 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <64 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <100 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <104 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <108 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <112 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <116 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <120 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <124 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <128 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <132 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <136 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <140 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <149 0 0x19 0x19 0x19 0x17 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0 0xf>,
|
|
||||||
+ <153 0 0x19 0x19 0x19 0x17 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0 0xf>,
|
|
||||||
+ <157 0 0x19 0x19 0x19 0x17 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0 0xf>,
|
|
||||||
+ <161 0 0x19 0x19 0x19 0x17 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0 0xf>,
|
|
||||||
+ <165 0 0x19 0x19 0x19 0x17 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0 0xf>;
|
|
||||||
+ CA =
|
|
||||||
+ <36 0 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0 0xf>,
|
|
||||||
+ <40 0 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0 0xf>,
|
|
||||||
+ <44 0 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0 0xf>,
|
|
||||||
+ <48 0 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0 0xf>,
|
|
||||||
+ <52 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <56 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <60 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <64 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <100 0 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <104 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <108 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <112 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <116 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <120 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <124 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <128 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <132 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <136 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <140 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <149 0 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>,
|
|
||||||
+ <153 0 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>,
|
|
||||||
+ <157 0 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>,
|
|
||||||
+ <161 0 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>,
|
|
||||||
+ <165 0 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>;
|
|
||||||
+ CN =
|
|
||||||
+ <36 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <40 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <44 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <48 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <52 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <56 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <60 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <64 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <100 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <104 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <108 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <112 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <116 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <120 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <124 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <128 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <132 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <136 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <140 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <149 0 0x14 0x14 0x14 0x14 0x13 0x13 0x13 0x13 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <153 0 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x14 0x14 0x14 0x14 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <157 0 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x14 0x14 0x14 0x14 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <161 0 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x14 0x14 0x14 0x14 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <165 0 0x13 0x13 0x13 0x13 0x13 0x13 0x13 0x13 0x14 0x14 0x14 0x14 0x10 0x10 0x10 0x10 0 0xf>;
|
|
||||||
+ ETSI =
|
|
||||||
+ <36 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <40 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <44 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <48 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <52 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <56 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <60 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <64 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <100 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <104 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <108 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <112 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <116 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <120 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <124 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <128 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <132 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <136 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <140 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <149 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>;
|
|
||||||
+ FCC =
|
|
||||||
+ <36 0 0x12 0x12 0x12 0x12 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0xf 0xf 0xf 0xf 0 0xf>,
|
|
||||||
+ <40 0 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0xf 0xf 0xf 0xf 0 0xf>,
|
|
||||||
+ <44 0 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0xf 0xf 0xf 0xf 0 0xf>,
|
|
||||||
+ <48 0 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0xf 0xf 0xf 0xf 0 0xf>,
|
|
||||||
+ <52 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <56 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <60 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <64 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <100 0 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <104 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <108 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <112 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <116 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <120 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <124 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <128 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <132 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <136 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <140 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <149 0 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>,
|
|
||||||
+ <153 0 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>,
|
|
||||||
+ <157 0 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>,
|
|
||||||
+ <161 0 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>,
|
|
||||||
+ <165 0 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&pcie2 {
|
|
||||||
+ mwlwifi {
|
|
||||||
+ marvell,chainmask = <4 4>;
|
|
||||||
+ marvell,powertable {
|
|
||||||
+ AU =
|
|
||||||
+ <1 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <2 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <3 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <4 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <5 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <6 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <7 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <8 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <9 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <10 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <11 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>;
|
|
||||||
+ CA =
|
|
||||||
+ <1 0 0x17 0x10 0x10 0x10 0xf 0xf 0xf 0xf 0xe 0xe 0xe 0xe 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <2 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <3 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <4 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <5 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <6 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <7 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <8 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <9 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <10 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <11 0 0x17 0x12 0x12 0x12 0x13 0x13 0x13 0x13 0xf 0xf 0xf 0xf 0x0 0x0 0x0 0x0 0 0xf>;
|
|
||||||
+ CN =
|
|
||||||
+ <1 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <2 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <3 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <4 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <5 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <6 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <7 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <8 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <9 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <10 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <11 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <12 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <13 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <14 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>;
|
|
||||||
+ ETSI =
|
|
||||||
+ <1 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <2 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <3 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <4 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <5 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <6 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <7 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <8 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <9 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <10 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <11 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <12 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <13 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>;
|
|
||||||
+ FCC =
|
|
||||||
+ <1 0 0x17 0x10 0x10 0x10 0xf 0xf 0xf 0xf 0xe 0xe 0xe 0xe 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <2 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <3 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <4 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <5 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <6 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <7 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <8 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <9 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <10 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <11 0 0x17 0x12 0x12 0x12 0x13 0x13 0x13 0x13 0xf 0xf 0xf 0xf 0x0 0x0 0x0 0x0 0 0xf>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
--- a/arch/arm/boot/dts/armada-385-linksys-shelby.dts
|
|
||||||
+++ b/arch/arm/boot/dts/armada-385-linksys-shelby.dts
|
|
||||||
@@ -142,3 +142,205 @@
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
+
|
|
||||||
+&pcie1 {
|
|
||||||
+ mwlwifi {
|
|
||||||
+ marvell,chainmask = <4 4>;
|
|
||||||
+ marvell,powertable {
|
|
||||||
+ AU =
|
|
||||||
+ <36 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <40 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <44 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <48 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <52 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <56 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <60 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <64 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <100 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <104 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <108 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <112 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <116 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <120 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <124 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <128 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <132 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <136 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <140 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <149 0 0x19 0x19 0x19 0x17 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0 0xf>,
|
|
||||||
+ <153 0 0x19 0x19 0x19 0x17 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0 0xf>,
|
|
||||||
+ <157 0 0x19 0x19 0x19 0x17 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0 0xf>,
|
|
||||||
+ <161 0 0x19 0x19 0x19 0x17 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0 0xf>,
|
|
||||||
+ <165 0 0x19 0x19 0x19 0x17 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0 0xf>;
|
|
||||||
+ CA =
|
|
||||||
+ <36 0 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0 0xf>,
|
|
||||||
+ <40 0 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0 0xf>,
|
|
||||||
+ <44 0 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0 0xf>,
|
|
||||||
+ <48 0 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0 0xf>,
|
|
||||||
+ <52 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <56 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <60 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <64 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <100 0 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <104 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <108 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <112 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <116 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <120 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <124 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <128 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <132 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <136 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <140 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <149 0 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>,
|
|
||||||
+ <153 0 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>,
|
|
||||||
+ <157 0 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>,
|
|
||||||
+ <161 0 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>,
|
|
||||||
+ <165 0 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>;
|
|
||||||
+ CN =
|
|
||||||
+ <36 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <40 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <44 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <48 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <52 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <56 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <60 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <64 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <100 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <104 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <108 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <112 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <116 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <120 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <124 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <128 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <132 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <136 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <140 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <149 0 0x14 0x14 0x14 0x14 0x13 0x13 0x13 0x13 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <153 0 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x14 0x14 0x14 0x14 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <157 0 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x14 0x14 0x14 0x14 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <161 0 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x14 0x14 0x14 0x14 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <165 0 0x13 0x13 0x13 0x13 0x13 0x13 0x13 0x13 0x14 0x14 0x14 0x14 0x10 0x10 0x10 0x10 0 0xf>;
|
|
||||||
+ ETSI =
|
|
||||||
+ <36 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <40 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <44 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <48 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <52 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <56 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <60 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <64 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <100 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <104 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <108 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <112 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <116 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <120 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <124 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <128 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <132 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <136 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <140 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <149 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>;
|
|
||||||
+ FCC =
|
|
||||||
+ <36 0 0x12 0x12 0x12 0x12 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0xf 0xf 0xf 0xf 0 0xf>,
|
|
||||||
+ <40 0 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0xf 0xf 0xf 0xf 0 0xf>,
|
|
||||||
+ <44 0 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0xf 0xf 0xf 0xf 0 0xf>,
|
|
||||||
+ <48 0 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0xf 0xf 0xf 0xf 0 0xf>,
|
|
||||||
+ <52 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <56 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <60 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <64 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <100 0 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <104 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <108 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <112 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <116 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <120 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <124 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <128 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <132 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <136 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <140 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <149 0 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>,
|
|
||||||
+ <153 0 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>,
|
|
||||||
+ <157 0 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>,
|
|
||||||
+ <161 0 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>,
|
|
||||||
+ <165 0 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&pcie2 {
|
|
||||||
+ mwlwifi {
|
|
||||||
+ marvell,chainmask = <4 4>;
|
|
||||||
+ marvell,powertable {
|
|
||||||
+ AU =
|
|
||||||
+ <1 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <2 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <3 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <4 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <5 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <6 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <7 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <8 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <9 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <10 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <11 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>;
|
|
||||||
+ CA =
|
|
||||||
+ <1 0 0x17 0x10 0x10 0x10 0xf 0xf 0xf 0xf 0xe 0xe 0xe 0xe 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <2 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <3 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <4 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <5 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <6 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <7 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <8 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <9 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <10 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <11 0 0x17 0x12 0x12 0x12 0x13 0x13 0x13 0x13 0xf 0xf 0xf 0xf 0x0 0x0 0x0 0x0 0 0xf>;
|
|
||||||
+ CN =
|
|
||||||
+ <1 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <2 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <3 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <4 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <5 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <6 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <7 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <8 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <9 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <10 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <11 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <12 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <13 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <14 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>;
|
|
||||||
+ ETSI =
|
|
||||||
+ <1 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <2 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <3 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <4 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <5 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <6 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <7 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <8 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <9 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <10 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <11 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <12 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <13 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>;
|
|
||||||
+ FCC =
|
|
||||||
+ <1 0 0x17 0x10 0x10 0x10 0xf 0xf 0xf 0xf 0xe 0xe 0xe 0xe 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <2 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <3 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <4 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <5 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <6 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <7 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <8 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <9 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <10 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <11 0 0x17 0x12 0x12 0x12 0x13 0x13 0x13 0x13 0xf 0xf 0xf 0xf 0x0 0x0 0x0 0x0 0 0xf>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
--- a/arch/arm/boot/dts/armada-385-linksys-rango.dts
|
|
||||||
+++ b/arch/arm/boot/dts/armada-385-linksys-rango.dts
|
|
||||||
@@ -157,6 +157,18 @@
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
+&pcie1 {
|
|
||||||
+ mwlwifi {
|
|
||||||
+ marvell,chainmask = <4 4>;
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&pcie2 {
|
|
||||||
+ mwlwifi {
|
|
||||||
+ marvell,chainmask = <4 4>;
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
&sdhci {
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&sdhci_pins>;
|
|
||||||
--- a/arch/arm/boot/dts/armada-xp-linksys-mamba.dts
|
|
||||||
+++ b/arch/arm/boot/dts/armada-xp-linksys-mamba.dts
|
|
||||||
@@ -225,12 +225,100 @@
|
|
||||||
pcie@2,0 {
|
|
||||||
/* Port 0, Lane 1 */
|
|
||||||
status = "okay";
|
|
||||||
+
|
|
||||||
+ mwlwifi {
|
|
||||||
+ marvell,5ghz = <0>;
|
|
||||||
+ marvell,chainmask = <4 4>;
|
|
||||||
+ marvell,powertable {
|
|
||||||
+ FCC =
|
|
||||||
+ <1 0 0x17 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0xf 0xf 0xf 0xf 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <2 0 0x17 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x10 0x10 0x10 0x10 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <3 0 0x17 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x10 0x10 0x10 0x10 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <4 0 0x17 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x10 0x10 0x10 0x10 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <5 0 0x17 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x10 0x10 0x10 0x10 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <6 0 0x17 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x10 0x10 0x10 0x10 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <7 0 0x17 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x10 0x10 0x10 0x10 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <8 0 0x17 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x10 0x10 0x10 0x10 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <9 0 0x17 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x10 0x10 0x10 0x10 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <10 0 0x17 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x10 0x10 0x10 0x10 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <11 0 0x17 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x0 0x0 0x0 0x0 0 0xf>;
|
|
||||||
+
|
|
||||||
+ ETSI =
|
|
||||||
+ <1 0 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <2 0 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <3 0 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <4 0 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <5 0 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <6 0 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <7 0 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <8 0 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <9 0 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <10 0 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <11 0 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <12 0 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <13 0 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0x0 0x0 0x0 0x0 0 0xf>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Second mini-PCIe port */
|
|
||||||
pcie@3,0 {
|
|
||||||
/* Port 0, Lane 3 */
|
|
||||||
status = "okay";
|
|
||||||
+
|
|
||||||
+ mwlwifi {
|
|
||||||
+ marvell,2ghz = <0>;
|
|
||||||
+ marvell,chainmask = <4 4>;
|
|
||||||
+ marvell,powertable {
|
|
||||||
+ FCC =
|
|
||||||
+ <36 0 0x8 0x8 0x8 0x8 0x8 0x8 0x8 0x8 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0 0xf>,
|
|
||||||
+ <40 0 0x8 0x8 0x8 0x8 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0 0xf>,
|
|
||||||
+ <44 0 0x8 0x8 0x8 0x8 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0 0xf>,
|
|
||||||
+ <48 0 0x8 0x8 0x8 0x8 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0 0xf>,
|
|
||||||
+ <52 0 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0x12 0x12 0x12 0x12 0x12 0x12 0x12 0x12 0 0xf>,
|
|
||||||
+ <56 0 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0x12 0x12 0x12 0x12 0x12 0x12 0x12 0x12 0 0xf>,
|
|
||||||
+ <60 0 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0x12 0x12 0x12 0x12 0x12 0x12 0x12 0x12 0 0xf>,
|
|
||||||
+ <64 0 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0x12 0x12 0x12 0x12 0x12 0x12 0x12 0x12 0 0xf>,
|
|
||||||
+ <100 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <104 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <108 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <112 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <116 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <120 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <124 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <128 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <132 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <136 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <140 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <149 0 0x16 0x16 0x16 0x16 0x14 0x14 0x14 0x14 0x15 0x15 0x15 0x15 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <153 0 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <157 0 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <161 0 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <165 0 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x14 0x14 0x14 0x14 0 0xf>;
|
|
||||||
+
|
|
||||||
+ ETSI =
|
|
||||||
+ <36 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <40 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <44 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <48 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <52 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <56 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <60 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <64 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <100 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <104 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <108 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <112 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <116 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <120 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <124 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <128 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <132 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <136 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <140 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <149 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
--- a/arch/arm/boot/dts/armada-xp.dtsi
|
|
||||||
+++ b/arch/arm/boot/dts/armada-xp.dtsi
|
|
||||||
@@ -237,12 +237,10 @@
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c0 {
|
|
||||||
- compatible = "marvell,mv78230-i2c", "marvell,mv64xxx-i2c";
|
|
||||||
reg = <0x11000 0x100>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c1 {
|
|
||||||
- compatible = "marvell,mv78230-i2c", "marvell,mv64xxx-i2c";
|
|
||||||
reg = <0x11100 0x100>;
|
|
||||||
};
|
|
||||||
|
|
|
@ -1,19 +0,0 @@
|
||||||
--- a/arch/arm/boot/dts/armada-388-rd.dts
|
|
||||||
+++ b/arch/arm/boot/dts/armada-388-rd.dts
|
|
||||||
@@ -103,6 +103,16 @@
|
|
||||||
compatible = "st,m25p128", "jedec,spi-nor";
|
|
||||||
reg = <0>; /* Chip select 0 */
|
|
||||||
spi-max-frequency = <108000000>;
|
|
||||||
+
|
|
||||||
+ partition@0 {
|
|
||||||
+ label = "uboot";
|
|
||||||
+ reg = <0 0x400000>;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ partition@1 {
|
|
||||||
+ label = "firmware";
|
|
||||||
+ reg = <0x400000 0xc00000>;
|
|
||||||
+ };
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
|
@ -1,35 +0,0 @@
|
||||||
From 9861f93a59142a3131870df2521eb2deb73026d7 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Maxime Ripard <maxime.ripard@free-electrons.com>
|
|
||||||
Date: Tue, 13 Jan 2015 11:14:09 +0100
|
|
||||||
Subject: [PATCH 2/2] ARM: mvebu: 385-ap: Add partitions
|
|
||||||
|
|
||||||
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
|
|
||||||
---
|
|
||||||
arch/arm/boot/dts/armada-385-db-ap.dts | 15 +++++++++++++++
|
|
||||||
1 file changed, 15 insertions(+)
|
|
||||||
|
|
||||||
--- a/arch/arm/boot/dts/armada-385-db-ap.dts
|
|
||||||
+++ b/arch/arm/boot/dts/armada-385-db-ap.dts
|
|
||||||
@@ -218,19 +218,19 @@
|
|
||||||
#size-cells = <1>;
|
|
||||||
|
|
||||||
partition@0 {
|
|
||||||
- label = "U-Boot";
|
|
||||||
+ label = "u-boot";
|
|
||||||
reg = <0x00000000 0x00800000>;
|
|
||||||
read-only;
|
|
||||||
};
|
|
||||||
|
|
||||||
partition@800000 {
|
|
||||||
- label = "uImage";
|
|
||||||
+ label = "kernel";
|
|
||||||
reg = <0x00800000 0x00400000>;
|
|
||||||
read-only;
|
|
||||||
};
|
|
||||||
|
|
||||||
partition@c00000 {
|
|
||||||
- label = "Root";
|
|
||||||
+ label = "ubi";
|
|
||||||
reg = <0x00c00000 0x3f400000>;
|
|
||||||
};
|
|
||||||
};
|
|
|
@ -1,10 +0,0 @@
|
||||||
--- a/arch/arm/boot/dts/armada-xp-linksys-mamba.dts
|
|
||||||
+++ b/arch/arm/boot/dts/armada-xp-linksys-mamba.dts
|
|
||||||
@@ -485,3 +485,7 @@
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
+
|
|
||||||
+&coherencyfab {
|
|
||||||
+ broken-idle;
|
|
||||||
+};
|
|
|
@ -1,11 +0,0 @@
|
||||||
--- a/arch/arm/boot/dts/armada-xp-linksys-mamba.dts
|
|
||||||
+++ b/arch/arm/boot/dts/armada-xp-linksys-mamba.dts
|
|
||||||
@@ -387,7 +387,7 @@
|
|
||||||
|
|
||||||
port@4 {
|
|
||||||
reg = <4>;
|
|
||||||
- label = "internet";
|
|
||||||
+ label = "wan";
|
|
||||||
};
|
|
||||||
|
|
||||||
port@5 {
|
|
|
@ -1,50 +0,0 @@
|
||||||
--- a/arch/arm/boot/dts/armada-385-linksys.dtsi
|
|
||||||
+++ b/arch/arm/boot/dts/armada-385-linksys.dtsi
|
|
||||||
@@ -14,6 +14,13 @@
|
|
||||||
compatible = "linksys,armada385", "marvell,armada385",
|
|
||||||
"marvell,armada380";
|
|
||||||
|
|
||||||
+ aliases {
|
|
||||||
+ led-boot = &led_power;
|
|
||||||
+ led-failsafe = &led_power;
|
|
||||||
+ led-running = &led_power;
|
|
||||||
+ led-upgrade = &led_power;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
chosen {
|
|
||||||
stdout-path = "serial0:115200n8";
|
|
||||||
};
|
|
||||||
@@ -71,7 +78,7 @@
|
|
||||||
pinctrl-0 = <&gpio_leds_pins>;
|
|
||||||
pinctrl-names = "default";
|
|
||||||
|
|
||||||
- power {
|
|
||||||
+ led_power: power {
|
|
||||||
gpios = <&gpio1 23 GPIO_ACTIVE_HIGH>;
|
|
||||||
default-state = "on";
|
|
||||||
};
|
|
||||||
--- a/arch/arm/boot/dts/armada-xp-linksys-mamba.dts
|
|
||||||
+++ b/arch/arm/boot/dts/armada-xp-linksys-mamba.dts
|
|
||||||
@@ -26,6 +26,13 @@
|
|
||||||
compatible = "linksys,mamba", "marvell,armadaxp-mv78230",
|
|
||||||
"marvell,armadaxp", "marvell,armada-370-xp";
|
|
||||||
|
|
||||||
+ aliases {
|
|
||||||
+ led-boot = &led_power;
|
|
||||||
+ led-failsafe = &led_power;
|
|
||||||
+ led-running = &led_power;
|
|
||||||
+ led-upgrade = &led_power;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
chosen {
|
|
||||||
bootargs = "console=ttyS0,115200";
|
|
||||||
stdout-path = &uart0;
|
|
||||||
@@ -197,7 +204,7 @@
|
|
||||||
pinctrl-0 = <&power_led_pin>;
|
|
||||||
pinctrl-names = "default";
|
|
||||||
|
|
||||||
- power {
|
|
||||||
+ led_power: power {
|
|
||||||
label = "mamba:white:power";
|
|
||||||
gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>;
|
|
||||||
default-state = "on";
|
|
|
@ -1,25 +0,0 @@
|
||||||
--- a/arch/arm/boot/dts/armada-385-linksys.dtsi
|
|
||||||
+++ b/arch/arm/boot/dts/armada-385-linksys.dtsi
|
|
||||||
@@ -116,7 +116,7 @@
|
|
||||||
};
|
|
||||||
|
|
||||||
ð2 {
|
|
||||||
- status = "okay";
|
|
||||||
+ status = "disabled";
|
|
||||||
phy-mode = "sgmii";
|
|
||||||
buffer-manager = <&bm>;
|
|
||||||
bm,pool-long = <2>;
|
|
||||||
@@ -200,10 +200,10 @@
|
|
||||||
label = "wan";
|
|
||||||
};
|
|
||||||
|
|
||||||
- port@5 {
|
|
||||||
- reg = <5>;
|
|
||||||
+ port@6 {
|
|
||||||
+ reg = <6>;
|
|
||||||
label = "cpu";
|
|
||||||
- ethernet = <ð2>;
|
|
||||||
+ ethernet = <ð0>;
|
|
||||||
|
|
||||||
fixed-link {
|
|
||||||
speed = <1000>;
|
|
|
@ -1,68 +0,0 @@
|
||||||
--- a/arch/arm/boot/dts/armada-385-linksys-rango.dts
|
|
||||||
+++ b/arch/arm/boot/dts/armada-385-linksys-rango.dts
|
|
||||||
@@ -12,8 +12,8 @@
|
|
||||||
|
|
||||||
/ {
|
|
||||||
model = "Linksys WRT3200ACM";
|
|
||||||
- compatible = "linksys,rango", "linksys,armada385", "marvell,armada385",
|
|
||||||
- "marvell,armada380";
|
|
||||||
+ compatible = "linksys,wrt3200acm", "linksys,rango", "linksys,armada385",
|
|
||||||
+ "marvell,armada385", "marvell,armada380";
|
|
||||||
};
|
|
||||||
|
|
||||||
&expander0 {
|
|
||||||
--- a/arch/arm/boot/dts/armada-xp-linksys-mamba.dts
|
|
||||||
+++ b/arch/arm/boot/dts/armada-xp-linksys-mamba.dts
|
|
||||||
@@ -22,9 +22,10 @@
|
|
||||||
#include "armada-xp-mv78230.dtsi"
|
|
||||||
|
|
||||||
/ {
|
|
||||||
- model = "Linksys WRT1900AC";
|
|
||||||
- compatible = "linksys,mamba", "marvell,armadaxp-mv78230",
|
|
||||||
- "marvell,armadaxp", "marvell,armada-370-xp";
|
|
||||||
+ model = "Linksys WRT1900AC v1";
|
|
||||||
+ compatible = "linksys,wrt1900ac-v1", "linksys,mamba",
|
|
||||||
+ "marvell,armadaxp-mv78230", "marvell,armadaxp",
|
|
||||||
+ "marvell,armada-370-xp";
|
|
||||||
|
|
||||||
aliases {
|
|
||||||
led-boot = &led_power;
|
|
||||||
--- a/arch/arm/boot/dts/armada-385-linksys-cobra.dts
|
|
||||||
+++ b/arch/arm/boot/dts/armada-385-linksys-cobra.dts
|
|
||||||
@@ -9,8 +9,9 @@
|
|
||||||
#include "armada-385-linksys.dtsi"
|
|
||||||
|
|
||||||
/ {
|
|
||||||
- model = "Linksys WRT1900ACv2";
|
|
||||||
- compatible = "linksys,cobra", "linksys,armada385", "marvell,armada385",
|
|
||||||
+ model = "Linksys WRT1900AC v2";
|
|
||||||
+ compatible = "linksys,wrt1900ac-v2", "linksys,cobra",
|
|
||||||
+ "linksys,armada385", "marvell,armada385",
|
|
||||||
"marvell,armada380";
|
|
||||||
};
|
|
||||||
|
|
||||||
--- a/arch/arm/boot/dts/armada-385-linksys-caiman.dts
|
|
||||||
+++ b/arch/arm/boot/dts/armada-385-linksys-caiman.dts
|
|
||||||
@@ -10,8 +10,8 @@
|
|
||||||
|
|
||||||
/ {
|
|
||||||
model = "Linksys WRT1200AC";
|
|
||||||
- compatible = "linksys,caiman", "linksys,armada385", "marvell,armada385",
|
|
||||||
- "marvell,armada380";
|
|
||||||
+ compatible = "linksys,wrt1200ac", "linksys,caiman", "linksys,armada385",
|
|
||||||
+ "marvell,armada385", "marvell,armada380";
|
|
||||||
};
|
|
||||||
|
|
||||||
&expander0 {
|
|
||||||
--- a/arch/arm/boot/dts/armada-385-linksys-shelby.dts
|
|
||||||
+++ b/arch/arm/boot/dts/armada-385-linksys-shelby.dts
|
|
||||||
@@ -10,7 +10,8 @@
|
|
||||||
|
|
||||||
/ {
|
|
||||||
model = "Linksys WRT1900ACS";
|
|
||||||
- compatible = "linksys,shelby", "linksys,armada385", "marvell,armada385",
|
|
||||||
+ compatible = "linksys,wrt1900acs", "linksys,shelby",
|
|
||||||
+ "linksys,armada385", "marvell,armada385",
|
|
||||||
"marvell,armada380";
|
|
||||||
};
|
|
||||||
|
|
|
@ -1,87 +0,0 @@
|
||||||
From 8137da20701c776ad3481115305a5e8e410871ba Mon Sep 17 00:00:00 2001
|
|
||||||
From: Russell King <rmk+kernel@armlinux.org.uk>
|
|
||||||
Date: Tue, 29 Nov 2016 10:15:45 +0000
|
|
||||||
Subject: ARM: dts: armada388-clearfog: emmc on clearfog base
|
|
||||||
|
|
||||||
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
|
||||||
---
|
|
||||||
arch/arm/boot/dts/armada-388-clearfog-base.dts | 1 +
|
|
||||||
.../dts/armada-38x-solidrun-microsom-emmc.dtsi | 62 ++++++++++++++++++++++
|
|
||||||
2 files changed, 63 insertions(+)
|
|
||||||
create mode 100644 arch/arm/boot/dts/armada-38x-solidrun-microsom-emmc.dtsi
|
|
||||||
|
|
||||||
--- a/arch/arm/boot/dts/armada-388-clearfog-base.dts
|
|
||||||
+++ b/arch/arm/boot/dts/armada-388-clearfog-base.dts
|
|
||||||
@@ -7,6 +7,7 @@
|
|
||||||
|
|
||||||
/dts-v1/;
|
|
||||||
#include "armada-388-clearfog.dtsi"
|
|
||||||
+#include "armada-38x-solidrun-microsom-emmc.dtsi"
|
|
||||||
|
|
||||||
/ {
|
|
||||||
model = "SolidRun Clearfog Base A1";
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/arch/arm/boot/dts/armada-38x-solidrun-microsom-emmc.dtsi
|
|
||||||
@@ -0,0 +1,62 @@
|
|
||||||
+/*
|
|
||||||
+ * Device Tree file for SolidRun Armada 38x Microsom add-on for eMMC
|
|
||||||
+ *
|
|
||||||
+ * Copyright (C) 2015 Russell King
|
|
||||||
+ *
|
|
||||||
+ * This board is in development; the contents of this file work with
|
|
||||||
+ * the A1 rev 2.0 of the board, which does not represent final
|
|
||||||
+ * production board. Things will change, don't expect this file to
|
|
||||||
+ * remain compatible info the future.
|
|
||||||
+ *
|
|
||||||
+ * This file is dual-licensed: you can use it either under the terms
|
|
||||||
+ * of the GPL or the X11 license, at your option. Note that this dual
|
|
||||||
+ * licensing only applies to this file, and not this project as a
|
|
||||||
+ * whole.
|
|
||||||
+ *
|
|
||||||
+ * a) This file is free software; you can redistribute it and/or
|
|
||||||
+ * modify it under the terms of the GNU General Public License
|
|
||||||
+ * version 2 as published by the Free Software Foundation.
|
|
||||||
+ *
|
|
||||||
+ * This file is distributed in the hope that it will be useful
|
|
||||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
+ * GNU General Public License for more details.
|
|
||||||
+ *
|
|
||||||
+ * Or, alternatively
|
|
||||||
+ *
|
|
||||||
+ * b) Permission is hereby granted, free of charge, to any person
|
|
||||||
+ * obtaining a copy of this software and associated documentation
|
|
||||||
+ * files (the "Software"), to deal in the Software without
|
|
||||||
+ * restriction, including without limitation the rights to use
|
|
||||||
+ * copy, modify, merge, publish, distribute, sublicense, and/or
|
|
||||||
+ * sell copies of the Software, and to permit persons to whom the
|
|
||||||
+ * Software is furnished to do so, subject to the following
|
|
||||||
+ * conditions:
|
|
||||||
+ *
|
|
||||||
+ * The above copyright notice and this permission notice shall be
|
|
||||||
+ * included in all copies or substantial portions of the Software.
|
|
||||||
+ *
|
|
||||||
+ * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
|
|
||||||
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
||||||
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
||||||
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
||||||
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
|
|
||||||
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
||||||
+ * OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
+ */
|
|
||||||
+/ {
|
|
||||||
+ soc {
|
|
||||||
+ internal-regs {
|
|
||||||
+ sdhci@d8000 {
|
|
||||||
+ bus-width = <4>;
|
|
||||||
+ no-1-8-v;
|
|
||||||
+ non-removable;
|
|
||||||
+ pinctrl-0 = <µsom_sdhci_pins>;
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ status = "okay";
|
|
||||||
+ wp-inverted;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+};
|
|
|
@ -1,28 +0,0 @@
|
||||||
--- a/arch/arm/boot/dts/armada-388-helios4.dts
|
|
||||||
+++ b/arch/arm/boot/dts/armada-388-helios4.dts
|
|
||||||
@@ -15,6 +15,13 @@
|
|
||||||
model = "Helios4";
|
|
||||||
compatible = "kobol,helios4", "marvell,armada388",
|
|
||||||
"marvell,armada385", "marvell,armada380";
|
|
||||||
+
|
|
||||||
+ aliases {
|
|
||||||
+ led-boot = &led_status;
|
|
||||||
+ led-failsafe = &led_status;
|
|
||||||
+ led-running = &led_status;
|
|
||||||
+ led-upgrade = &led_status;
|
|
||||||
+ };
|
|
||||||
|
|
||||||
memory {
|
|
||||||
device_type = "memory";
|
|
||||||
@@ -73,10 +80,9 @@
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&helios_system_led_pins>;
|
|
||||||
|
|
||||||
- status-led {
|
|
||||||
+ led_status: status-led {
|
|
||||||
label = "helios4:green:status";
|
|
||||||
gpios = <&gpio0 24 GPIO_ACTIVE_LOW>;
|
|
||||||
- linux,default-trigger = "heartbeat";
|
|
||||||
default-state = "on";
|
|
||||||
};
|
|
||||||
|
|
|
@ -1,34 +0,0 @@
|
||||||
Certain SFP modules (most notably Nokia GPON ones) first check
|
|
||||||
connectivity on 1000base-x, and switch to 2500base-x afterwards. This
|
|
||||||
is considered a quirk so the phylink switches the interface to
|
|
||||||
2500base-x as well.
|
|
||||||
|
|
||||||
However, after power-cycling the uDPU device, network interface/SFP module
|
|
||||||
will not work correctly until the module is re-seated. This patch
|
|
||||||
resolves this issue by forcing the interface to be brought up in
|
|
||||||
2500base-x mode by default.
|
|
||||||
|
|
||||||
Signed-off-by: Jakov Petrina <jakov.petrina@sartura.hr>
|
|
||||||
Signed-off-by: Vladimir Vid <vladimir.vid@sartura.hr>
|
|
||||||
Cc: Luka Perkov <luka.perkov@sartura.hr>
|
|
||||||
|
|
||||||
--- a/arch/arm64/boot/dts/marvell/armada-3720-uDPU.dts
|
|
||||||
+++ b/arch/arm64/boot/dts/marvell/armada-3720-uDPU.dts
|
|
||||||
@@ -162,7 +162,7 @@
|
|
||||||
};
|
|
||||||
|
|
||||||
ð0 {
|
|
||||||
- phy-mode = "sgmii";
|
|
||||||
+ phy-mode = "2500base-x";
|
|
||||||
status = "okay";
|
|
||||||
managed = "in-band-status";
|
|
||||||
phys = <&comphy1 0>;
|
|
||||||
@@ -170,7 +170,7 @@
|
|
||||||
};
|
|
||||||
|
|
||||||
ð1 {
|
|
||||||
- phy-mode = "sgmii";
|
|
||||||
+ phy-mode = "2500base-x";
|
|
||||||
status = "okay";
|
|
||||||
managed = "in-band-status";
|
|
||||||
phys = <&comphy0 1>;
|
|
|
@ -1,37 +0,0 @@
|
||||||
From 258233f00bcd013050efee00c5d9128ef8cd62dd Mon Sep 17 00:00:00 2001
|
|
||||||
From: Tad <tad@spotco.us>
|
|
||||||
Date: Fri, 5 Feb 2021 22:32:11 -0500
|
|
||||||
Subject: [PATCH] ARM: dts: armada-xp-linksys-mamba: Increase kernel
|
|
||||||
partition to 4MB
|
|
||||||
|
|
||||||
Signed-off-by: Tad Davanzo <tad@spotco.us>
|
|
||||||
---
|
|
||||||
arch/arm/boot/dts/armada-xp-linksys-mamba.dts | 8 ++++----
|
|
||||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
--- a/arch/arm/boot/dts/armada-xp-linksys-mamba.dts
|
|
||||||
+++ b/arch/arm/boot/dts/armada-xp-linksys-mamba.dts
|
|
||||||
@@ -456,9 +456,9 @@
|
|
||||||
reg = <0xa00000 0x2800000>; /* 40MB */
|
|
||||||
};
|
|
||||||
|
|
||||||
- partition@d00000 {
|
|
||||||
+ partition@e00000 {
|
|
||||||
label = "rootfs1";
|
|
||||||
- reg = <0xd00000 0x2500000>; /* 37MB */
|
|
||||||
+ reg = <0xe00000 0x2400000>; /* 36MB */
|
|
||||||
};
|
|
||||||
|
|
||||||
/* kernel2 overlaps with rootfs2 by design */
|
|
||||||
@@ -467,9 +467,9 @@
|
|
||||||
reg = <0x3200000 0x2800000>; /* 40MB */
|
|
||||||
};
|
|
||||||
|
|
||||||
- partition@3500000 {
|
|
||||||
+ partition@3600000 {
|
|
||||||
label = "rootfs2";
|
|
||||||
- reg = <0x3500000 0x2500000>; /* 37MB */
|
|
||||||
+ reg = <0x3600000 0x2400000>; /* 36MB */
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
|
@ -1,29 +0,0 @@
|
||||||
--- a/arch/arm/boot/dts/armada-370.dtsi
|
|
||||||
+++ b/arch/arm/boot/dts/armada-370.dtsi
|
|
||||||
@@ -234,7 +234,7 @@
|
|
||||||
clocks = <&gateclk 23>;
|
|
||||||
clock-names = "cesa0";
|
|
||||||
marvell,crypto-srams = <&crypto_sram>;
|
|
||||||
- marvell,crypto-sram-size = <0x7e0>;
|
|
||||||
+ marvell,crypto-sram-size = <0x800>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
@@ -255,12 +255,17 @@
|
|
||||||
* cpuidle workaround.
|
|
||||||
*/
|
|
||||||
idle-sram@0 {
|
|
||||||
+ status = "disabled";
|
|
||||||
reg = <0x0 0x20>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
+&coherencyfab {
|
|
||||||
+ broken-idle;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* Default UART pinctrl setting without RTS/CTS, can be overwritten on
|
|
||||||
* board level if a different configuration is used.
|
|
|
@ -1,60 +0,0 @@
|
||||||
The WRT1900AC among other Linksys routers uses a dual-firmware layout.
|
|
||||||
Dynamically rename the active partition to "ubi".
|
|
||||||
|
|
||||||
Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
|
|
||||||
|
|
||||||
--- a/drivers/mtd/parsers/ofpart_core.c
|
|
||||||
+++ b/drivers/mtd/parsers/ofpart_core.c
|
|
||||||
@@ -38,6 +38,8 @@ static bool node_has_compatible(struct d
|
|
||||||
return of_get_property(pp, "compatible", NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
+static int mangled_rootblock;
|
|
||||||
+
|
|
||||||
static int parse_fixed_partitions(struct mtd_info *master,
|
|
||||||
const struct mtd_partition **pparts,
|
|
||||||
struct mtd_part_parser_data *data)
|
|
||||||
@@ -48,6 +50,7 @@ static int parse_fixed_partitions(struct
|
|
||||||
struct device_node *mtd_node;
|
|
||||||
struct device_node *ofpart_node;
|
|
||||||
const char *partname;
|
|
||||||
+ const char *owrtpart = "ubi";
|
|
||||||
struct device_node *pp;
|
|
||||||
int nr_parts, i, ret = 0;
|
|
||||||
bool dedicated = true;
|
|
||||||
@@ -133,9 +136,13 @@ static int parse_fixed_partitions(struct
|
|
||||||
parts[i].size = of_read_number(reg + a_cells, s_cells);
|
|
||||||
parts[i].of_node = pp;
|
|
||||||
|
|
||||||
- partname = of_get_property(pp, "label", &len);
|
|
||||||
- if (!partname)
|
|
||||||
- partname = of_get_property(pp, "name", &len);
|
|
||||||
+ if (mangled_rootblock && (i == mangled_rootblock)) {
|
|
||||||
+ partname = owrtpart;
|
|
||||||
+ } else {
|
|
||||||
+ partname = of_get_property(pp, "label", &len);
|
|
||||||
+ if (!partname)
|
|
||||||
+ partname = of_get_property(pp, "name", &len);
|
|
||||||
+ }
|
|
||||||
parts[i].name = partname;
|
|
||||||
|
|
||||||
if (of_get_property(pp, "read-only", &len))
|
|
||||||
@@ -252,6 +259,18 @@ static int __init ofpart_parser_init(voi
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static int __init active_root(char *str)
|
|
||||||
+{
|
|
||||||
+ get_option(&str, &mangled_rootblock);
|
|
||||||
+
|
|
||||||
+ if (!mangled_rootblock)
|
|
||||||
+ return 1;
|
|
||||||
+
|
|
||||||
+ return 1;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+__setup("mangled_rootblock=", active_root);
|
|
||||||
+
|
|
||||||
static void __exit ofpart_parser_exit(void)
|
|
||||||
{
|
|
||||||
deregister_mtd_parser(&ofpart_parser);
|
|
|
@ -1,38 +0,0 @@
|
||||||
The hardware queue scheduling is apparently configured with fixed
|
|
||||||
priorities, which creates a nasty fairness issue where traffic from one
|
|
||||||
CPU can starve traffic from all other CPUs.
|
|
||||||
|
|
||||||
Work around this issue by forcing all tx packets to go through one CPU,
|
|
||||||
until this issue is fixed properly.
|
|
||||||
|
|
||||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|
||||||
---
|
|
||||||
--- a/drivers/net/ethernet/marvell/mvneta.c
|
|
||||||
+++ b/drivers/net/ethernet/marvell/mvneta.c
|
|
||||||
@@ -4903,6 +4903,16 @@ static int mvneta_ethtool_set_eee(struct
|
|
||||||
return phylink_ethtool_set_eee(pp->phylink, eee);
|
|
||||||
}
|
|
||||||
|
|
||||||
+#ifndef CONFIG_ARM64
|
|
||||||
+static u16 mvneta_select_queue(struct net_device *dev, struct sk_buff *skb,
|
|
||||||
+ struct net_device *sb_dev)
|
|
||||||
+{
|
|
||||||
+ /* XXX: hardware queue scheduling is broken,
|
|
||||||
+ * use only one queue until it is fixed */
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
static const struct net_device_ops mvneta_netdev_ops = {
|
|
||||||
.ndo_open = mvneta_open,
|
|
||||||
.ndo_stop = mvneta_stop,
|
|
||||||
@@ -4913,6 +4923,9 @@ static const struct net_device_ops mvnet
|
|
||||||
.ndo_fix_features = mvneta_fix_features,
|
|
||||||
.ndo_get_stats64 = mvneta_get_stats64,
|
|
||||||
.ndo_do_ioctl = mvneta_ioctl,
|
|
||||||
+#ifndef CONFIG_ARM64
|
|
||||||
+ .ndo_select_queue = mvneta_select_queue,
|
|
||||||
+#endif
|
|
||||||
.ndo_bpf = mvneta_xdp,
|
|
||||||
.ndo_xdp_xmit = mvneta_xdp_xmit,
|
|
||||||
};
|
|
|
@ -1,40 +0,0 @@
|
||||||
From c28b2d367da8a471482e6a4aa8337ab6369a80c2 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Russell King <rmk+kernel@arm.linux.org.uk>
|
|
||||||
Date: Sat, 3 Oct 2015 09:13:05 +0100
|
|
||||||
Subject: cpuidle: mvebu: indicate failure to enter deeper sleep states
|
|
||||||
|
|
||||||
The cpuidle ->enter method expects the return value to be the sleep
|
|
||||||
state we entered. Returning negative numbers or other codes is not
|
|
||||||
permissible since coupled CPU idle was merged.
|
|
||||||
|
|
||||||
At least some of the mvebu_v7_cpu_suspend() implementations return the
|
|
||||||
value from cpu_suspend(), which returns zero if the CPU vectors back
|
|
||||||
into the kernel via cpu_resume() (the success case), or the non-zero
|
|
||||||
return value of the suspend actor, or one (failure cases).
|
|
||||||
|
|
||||||
We do not want to be returning the failure case value back to CPU idle
|
|
||||||
as that indicates that we successfully entered one of the deeper idle
|
|
||||||
states. Always return zero instead, indicating that we slept for the
|
|
||||||
shortest amount of time.
|
|
||||||
|
|
||||||
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
|
||||||
---
|
|
||||||
drivers/cpuidle/cpuidle-mvebu-v7.c | 6 +++++-
|
|
||||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
--- a/drivers/cpuidle/cpuidle-mvebu-v7.c
|
|
||||||
+++ b/drivers/cpuidle/cpuidle-mvebu-v7.c
|
|
||||||
@@ -39,8 +39,12 @@ static int mvebu_v7_enter_idle(struct cp
|
|
||||||
ret = mvebu_v7_cpu_suspend(deepidle);
|
|
||||||
cpu_pm_exit();
|
|
||||||
|
|
||||||
+ /*
|
|
||||||
+ * If we failed to enter the desired state, indicate that we
|
|
||||||
+ * slept lightly.
|
|
||||||
+ */
|
|
||||||
if (ret)
|
|
||||||
- return ret;
|
|
||||||
+ return 0;
|
|
||||||
|
|
||||||
return index;
|
|
||||||
}
|
|
|
@ -1,60 +0,0 @@
|
||||||
From 287b9df160b6159f8d385424904f8bac501280c1 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Russell King <rmk+kernel@armlinux.org.uk>
|
|
||||||
Date: Sat, 9 Jul 2016 10:58:16 +0100
|
|
||||||
Subject: pci: mvebu: time out reset on link up
|
|
||||||
|
|
||||||
If the port reports that the link is up while we are resetting, there's
|
|
||||||
little point in waiting for the full duration.
|
|
||||||
|
|
||||||
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
|
||||||
---
|
|
||||||
drivers/pci/controller/pci-mvebu.c | 20 ++++++++++++++------
|
|
||||||
1 file changed, 14 insertions(+), 6 deletions(-)
|
|
||||||
|
|
||||||
--- a/drivers/pci/controller/pci-mvebu.c
|
|
||||||
+++ b/drivers/pci/controller/pci-mvebu.c
|
|
||||||
@@ -933,6 +933,7 @@ static int mvebu_pcie_powerup(struct mve
|
|
||||||
|
|
||||||
if (port->reset_gpio) {
|
|
||||||
u32 reset_udelay = PCI_PM_D3COLD_WAIT * 1000;
|
|
||||||
+ unsigned int i;
|
|
||||||
|
|
||||||
of_property_read_u32(port->dn, "reset-delay-us",
|
|
||||||
&reset_udelay);
|
|
||||||
@@ -940,7 +941,13 @@ static int mvebu_pcie_powerup(struct mve
|
|
||||||
udelay(100);
|
|
||||||
|
|
||||||
gpiod_set_value_cansleep(port->reset_gpio, 0);
|
|
||||||
- msleep(reset_udelay / 1000);
|
|
||||||
+ for (i = 0; i < reset_udelay; i += 1000) {
|
|
||||||
+ if (mvebu_pcie_link_up(port))
|
|
||||||
+ break;
|
|
||||||
+ msleep(1);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ printk("%s: reset completed in %dus\n", port->name, i);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
@@ -1100,15 +1107,16 @@ static int mvebu_pcie_probe(struct platf
|
|
||||||
if (!child)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
- ret = mvebu_pcie_powerup(port);
|
|
||||||
- if (ret < 0)
|
|
||||||
- continue;
|
|
||||||
-
|
|
||||||
port->base = mvebu_pcie_map_registers(pdev, child, port);
|
|
||||||
if (IS_ERR(port->base)) {
|
|
||||||
dev_err(dev, "%s: cannot map registers\n", port->name);
|
|
||||||
port->base = NULL;
|
|
||||||
- mvebu_pcie_powerdown(port);
|
|
||||||
+ continue;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ ret = mvebu_pcie_powerup(port);
|
|
||||||
+ if (ret < 0) {
|
|
||||||
+ port->base = NULL;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,208 +0,0 @@
|
||||||
From 71270226b14733a4b1f2cde58ea9265caa50b38d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Adrian Panella <ianchi74@outlook.com>
|
|
||||||
Date: Thu, 9 Mar 2017 09:37:17 +0100
|
|
||||||
Subject: [PATCH 67/69] generic: Mangle bootloader's kernel arguments
|
|
||||||
|
|
||||||
The command-line arguments provided by the boot loader will be
|
|
||||||
appended to a new device tree property: bootloader-args.
|
|
||||||
If there is a property "append-rootblock" in DT under /chosen
|
|
||||||
and a root= option in bootloaders command line it will be parsed
|
|
||||||
and added to DT bootargs with the form: <append-rootblock>XX.
|
|
||||||
Only command line ATAG will be processed, the rest of the ATAGs
|
|
||||||
sent by bootloader will be ignored.
|
|
||||||
This is usefull in dual boot systems, to get the current root partition
|
|
||||||
without afecting the rest of the system.
|
|
||||||
|
|
||||||
Signed-off-by: Adrian Panella <ianchi74@outlook.com>
|
|
||||||
|
|
||||||
This patch has been modified to be mvebu specific. The original patch
|
|
||||||
did not pass the bootloader cmdline on if no append-rootblock stanza
|
|
||||||
was found, resulting in blank cmdline and failure to boot.
|
|
||||||
|
|
||||||
Signed-off-by: Michael Gray <michael.gray@lantisproject.com>
|
|
||||||
---
|
|
||||||
arch/arm/Kconfig | 11 ++++
|
|
||||||
arch/arm/boot/compressed/atags_to_fdt.c | 85 ++++++++++++++++++++++++-
|
|
||||||
init/main.c | 16 +++++
|
|
||||||
3 files changed, 111 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
--- a/arch/arm/Kconfig
|
|
||||||
+++ b/arch/arm/Kconfig
|
|
||||||
@@ -1727,6 +1727,17 @@ config ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEN
|
|
||||||
The command-line arguments provided by the boot loader will be
|
|
||||||
appended to the the device tree bootargs property.
|
|
||||||
|
|
||||||
+config ARM_ATAG_DTB_COMPAT_CMDLINE_MANGLE
|
|
||||||
+ bool "Append rootblock parsing bootloader's kernel arguments"
|
|
||||||
+ help
|
|
||||||
+ The command-line arguments provided by the boot loader will be
|
|
||||||
+ appended to a new device tree property: bootloader-args.
|
|
||||||
+ If there is a property "append-rootblock" in DT under /chosen
|
|
||||||
+ and a root= option in bootloaders command line it will be parsed
|
|
||||||
+ and added to DT bootargs with the form: <append-rootblock>XX.
|
|
||||||
+ Only command line ATAG will be processed, the rest of the ATAGs
|
|
||||||
+ sent by bootloader will be ignored.
|
|
||||||
+
|
|
||||||
endchoice
|
|
||||||
|
|
||||||
config CMDLINE
|
|
||||||
--- a/arch/arm/boot/compressed/atags_to_fdt.c
|
|
||||||
+++ b/arch/arm/boot/compressed/atags_to_fdt.c
|
|
||||||
@@ -5,6 +5,8 @@
|
|
||||||
|
|
||||||
#if defined(CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND)
|
|
||||||
#define do_extend_cmdline 1
|
|
||||||
+#elif defined(CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_MANGLE)
|
|
||||||
+#define do_extend_cmdline 1
|
|
||||||
#else
|
|
||||||
#define do_extend_cmdline 0
|
|
||||||
#endif
|
|
||||||
@@ -69,6 +71,72 @@ static uint32_t get_cell_size(const void
|
|
||||||
return cell_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
+#if defined(CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_MANGLE)
|
|
||||||
+
|
|
||||||
+static char *append_rootblock(char *dest, const char *str, int len, void *fdt)
|
|
||||||
+{
|
|
||||||
+ char *ptr, *end;
|
|
||||||
+ char *root="root=";
|
|
||||||
+ int i, l;
|
|
||||||
+ const char *rootblock;
|
|
||||||
+
|
|
||||||
+ //ARM doesn't have __HAVE_ARCH_STRSTR, so search manually
|
|
||||||
+ ptr = str - 1;
|
|
||||||
+
|
|
||||||
+ do {
|
|
||||||
+ //first find an 'r' at the begining or after a space
|
|
||||||
+ do {
|
|
||||||
+ ptr++;
|
|
||||||
+ ptr = strchr(ptr, 'r');
|
|
||||||
+ if (!ptr)
|
|
||||||
+ goto no_append;
|
|
||||||
+
|
|
||||||
+ } while (ptr != str && *(ptr-1) != ' ');
|
|
||||||
+
|
|
||||||
+ //then check for the rest
|
|
||||||
+ for(i = 1; i <= 4; i++)
|
|
||||||
+ if(*(ptr+i) != *(root+i)) break;
|
|
||||||
+
|
|
||||||
+ } while (i != 5);
|
|
||||||
+
|
|
||||||
+ end = strchr(ptr, ' ');
|
|
||||||
+ end = end ? (end - 1) : (strchr(ptr, 0) - 1);
|
|
||||||
+
|
|
||||||
+ //find partition number (assumes format root=/dev/mtdXX | /dev/mtdblockXX | yy:XX )
|
|
||||||
+ for( i = 0; end >= ptr && *end >= '0' && *end <= '9'; end--, i++);
|
|
||||||
+ ptr = end + 1;
|
|
||||||
+
|
|
||||||
+ /* if append-rootblock property is set use it to append to command line */
|
|
||||||
+ rootblock = getprop(fdt, "/chosen", "append-rootblock", &l);
|
|
||||||
+ if (rootblock == NULL)
|
|
||||||
+ goto no_append;
|
|
||||||
+
|
|
||||||
+ if (*dest != ' ') {
|
|
||||||
+ *dest = ' ';
|
|
||||||
+ dest++;
|
|
||||||
+ len++;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (len + l + i <= COMMAND_LINE_SIZE) {
|
|
||||||
+ memcpy(dest, rootblock, l);
|
|
||||||
+ dest += l - 1;
|
|
||||||
+ memcpy(dest, ptr, i);
|
|
||||||
+ dest += i;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return dest;
|
|
||||||
+
|
|
||||||
+no_append:
|
|
||||||
+ len = strlen(str);
|
|
||||||
+ if (len + 1 < COMMAND_LINE_SIZE) {
|
|
||||||
+ memcpy(dest, str, len);
|
|
||||||
+ dest += len;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return dest;
|
|
||||||
+}
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
static void merge_fdt_bootargs(void *fdt, const char *fdt_cmdline)
|
|
||||||
{
|
|
||||||
char cmdline[COMMAND_LINE_SIZE];
|
|
||||||
@@ -88,12 +156,21 @@ static void merge_fdt_bootargs(void *fdt
|
|
||||||
|
|
||||||
/* and append the ATAG_CMDLINE */
|
|
||||||
if (fdt_cmdline) {
|
|
||||||
+
|
|
||||||
+#if defined(CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_MANGLE)
|
|
||||||
+ //save original bootloader args
|
|
||||||
+ //and append ubi.mtd with root partition number to current cmdline
|
|
||||||
+ setprop_string(fdt, "/chosen", "bootloader-args", fdt_cmdline);
|
|
||||||
+ ptr = append_rootblock(ptr, fdt_cmdline, len, fdt);
|
|
||||||
+
|
|
||||||
+#else
|
|
||||||
len = strlen(fdt_cmdline);
|
|
||||||
if (ptr - cmdline + len + 2 < COMMAND_LINE_SIZE) {
|
|
||||||
*ptr++ = ' ';
|
|
||||||
memcpy(ptr, fdt_cmdline, len);
|
|
||||||
ptr += len;
|
|
||||||
}
|
|
||||||
+#endif
|
|
||||||
}
|
|
||||||
*ptr = '\0';
|
|
||||||
|
|
||||||
@@ -168,7 +245,9 @@ int atags_to_fdt(void *atag_list, void *
|
|
||||||
else
|
|
||||||
setprop_string(fdt, "/chosen", "bootargs",
|
|
||||||
atag->u.cmdline.cmdline);
|
|
||||||
- } else if (atag->hdr.tag == ATAG_MEM) {
|
|
||||||
+ }
|
|
||||||
+#ifndef CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_MANGLE
|
|
||||||
+ else if (atag->hdr.tag == ATAG_MEM) {
|
|
||||||
if (memcount >= sizeof(mem_reg_property)/4)
|
|
||||||
continue;
|
|
||||||
if (!atag->u.mem.size)
|
|
||||||
@@ -212,6 +291,10 @@ int atags_to_fdt(void *atag_list, void *
|
|
||||||
setprop(fdt, "/memory", "reg", mem_reg_property,
|
|
||||||
4 * memcount * memsize);
|
|
||||||
}
|
|
||||||
+#else
|
|
||||||
+
|
|
||||||
+ }
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
return fdt_pack(fdt);
|
|
||||||
}
|
|
||||||
--- a/init/main.c
|
|
||||||
+++ b/init/main.c
|
|
||||||
@@ -112,6 +112,10 @@
|
|
||||||
|
|
||||||
#include <kunit/test.h>
|
|
||||||
|
|
||||||
+#if defined(CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_MANGLE)
|
|
||||||
+#include <linux/of.h>
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
static int kernel_init(void *);
|
|
||||||
|
|
||||||
extern void init_IRQ(void);
|
|
||||||
@@ -989,6 +993,18 @@ asmlinkage __visible void __init __no_sa
|
|
||||||
page_alloc_init();
|
|
||||||
|
|
||||||
pr_notice("Kernel command line: %s\n", saved_command_line);
|
|
||||||
+
|
|
||||||
+#if defined(CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_MANGLE)
|
|
||||||
+ //Show bootloader's original command line for reference
|
|
||||||
+ if(of_chosen) {
|
|
||||||
+ const char *prop = of_get_property(of_chosen, "bootloader-args", NULL);
|
|
||||||
+ if(prop)
|
|
||||||
+ pr_notice("Bootloader command line (ignored): %s\n", prop);
|
|
||||||
+ else
|
|
||||||
+ pr_notice("Bootloader command line not present\n");
|
|
||||||
+ }
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
/* parameters may set static keys */
|
|
||||||
jump_label_init();
|
|
||||||
parse_early_param();
|
|
|
@ -1,10 +0,0 @@
|
||||||
--- a/arch/arm/mach-mvebu/Kconfig
|
|
||||||
+++ b/arch/arm/mach-mvebu/Kconfig
|
|
||||||
@@ -67,6 +67,7 @@ config MACH_ARMADA_38X
|
|
||||||
select HAVE_ARM_TWD if SMP
|
|
||||||
select MACH_MVEBU_V7
|
|
||||||
select PINCTRL_ARMADA_38X
|
|
||||||
+ select ARCH_WANT_LIBATA_LEDS
|
|
||||||
help
|
|
||||||
Say 'Y' here if you want your kernel to support boards based
|
|
||||||
on the Marvell Armada 380/385 SoC with device tree.
|
|
|
@ -1,770 +0,0 @@
|
||||||
--- a/arch/arm/boot/dts/armada-385-linksys.dtsi
|
|
||||||
+++ b/arch/arm/boot/dts/armada-385-linksys.dtsi
|
|
||||||
@@ -214,11 +214,19 @@
|
|
||||||
&pcie1 {
|
|
||||||
/* Marvell 88W8864, 5GHz-only */
|
|
||||||
status = "okay";
|
|
||||||
+
|
|
||||||
+ mwlwifi {
|
|
||||||
+ marvell,2ghz = <0>;
|
|
||||||
+ };
|
|
||||||
};
|
|
||||||
|
|
||||||
&pcie2 {
|
|
||||||
/* Marvell 88W8864, 2GHz-only */
|
|
||||||
status = "okay";
|
|
||||||
+
|
|
||||||
+ mwlwifi {
|
|
||||||
+ marvell,5ghz = <0>;
|
|
||||||
+ };
|
|
||||||
};
|
|
||||||
|
|
||||||
&pinctrl {
|
|
||||||
--- a/arch/arm/boot/dts/armada-385-linksys-caiman.dts
|
|
||||||
+++ b/arch/arm/boot/dts/armada-385-linksys-caiman.dts
|
|
||||||
@@ -142,3 +142,205 @@
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
+
|
|
||||||
+&pcie1 {
|
|
||||||
+ mwlwifi {
|
|
||||||
+ marvell,chainmask = <2 2>;
|
|
||||||
+ marvell,powertable {
|
|
||||||
+ AU =
|
|
||||||
+ <36 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <40 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <44 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <48 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <52 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <56 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <60 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <64 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <100 0 0x17 0x17 0x17 0x17 0x17 0x17 0x17 0x15 0x17 0x17 0x17 0x14 0x17 0x17 0x17 0x14 0 0xf>,
|
|
||||||
+ <104 0 0x17 0x17 0x17 0x17 0x17 0x17 0x17 0x15 0x17 0x17 0x17 0x14 0x17 0x17 0x17 0x14 0 0xf>,
|
|
||||||
+ <108 0 0x17 0x17 0x17 0x17 0x17 0x17 0x17 0x15 0x17 0x17 0x17 0x14 0x17 0x17 0x17 0x14 0 0xf>,
|
|
||||||
+ <112 0 0x17 0x17 0x17 0x17 0x17 0x17 0x17 0x15 0x17 0x17 0x17 0x14 0x17 0x17 0x17 0x14 0 0xf>,
|
|
||||||
+ <116 0 0x17 0x17 0x17 0x17 0x17 0x17 0x17 0x15 0x17 0x17 0x17 0x14 0x17 0x17 0x17 0x14 0 0xf>,
|
|
||||||
+ <120 0 0x17 0x17 0x17 0x17 0x17 0x17 0x17 0x15 0x17 0x17 0x17 0x14 0x17 0x17 0x17 0x14 0 0xf>,
|
|
||||||
+ <124 0 0x17 0x17 0x17 0x17 0x17 0x17 0x17 0x15 0x17 0x17 0x17 0x14 0x17 0x17 0x17 0x14 0 0xf>,
|
|
||||||
+ <128 0 0x17 0x17 0x17 0x17 0x17 0x17 0x17 0x15 0x17 0x17 0x17 0x14 0x17 0x17 0x17 0x14 0 0xf>,
|
|
||||||
+ <132 0 0x17 0x17 0x17 0x17 0x17 0x17 0x17 0x15 0x17 0x17 0x17 0x14 0x17 0x17 0x17 0x14 0 0xf>,
|
|
||||||
+ <136 0 0x17 0x17 0x17 0x17 0x17 0x17 0x17 0x15 0x17 0x17 0x17 0x14 0x17 0x17 0x17 0x14 0 0xf>,
|
|
||||||
+ <140 0 0x17 0x17 0x17 0x17 0x17 0x17 0x17 0x15 0x17 0x17 0x17 0x14 0x17 0x17 0x17 0x14 0 0xf>,
|
|
||||||
+ <149 0 0x1a 0x1a 0x18 0x17 0x1a 0x1a 0x17 0x15 0x1a 0x1a 0x17 0x14 0x1a 0x1a 0x17 0x14 0 0xf>,
|
|
||||||
+ <153 0 0x1a 0x1a 0x18 0x17 0x1a 0x1a 0x17 0x15 0x1a 0x1a 0x17 0x14 0x1a 0x1a 0x17 0x14 0 0xf>,
|
|
||||||
+ <157 0 0x1a 0x1a 0x18 0x17 0x1a 0x1a 0x17 0x15 0x1a 0x1a 0x17 0x14 0x1a 0x1a 0x17 0x14 0 0xf>,
|
|
||||||
+ <161 0 0x1a 0x1a 0x18 0x17 0x1a 0x1a 0x17 0x15 0x1a 0x1a 0x17 0x14 0x1a 0x1a 0x17 0x14 0 0xf>,
|
|
||||||
+ <165 0 0x1a 0x1a 0x18 0x17 0x1a 0x1a 0x17 0x15 0x1a 0x1a 0x17 0x14 0x1a 0x1a 0x17 0x14 0 0xf>;
|
|
||||||
+ CA =
|
|
||||||
+ <36 0 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0 0xf>,
|
|
||||||
+ <40 0 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0 0xf>,
|
|
||||||
+ <44 0 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0 0xf>,
|
|
||||||
+ <48 0 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0 0xf>,
|
|
||||||
+ <52 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <56 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <60 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <64 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <100 0 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <104 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <108 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <112 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <116 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <120 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <124 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <128 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <132 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <136 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <140 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <149 0 0x1a 0x1a 0x18 0x17 0x19 0x19 0x17 0x15 0x18 0x18 0x17 0x14 0x15 0x15 0x15 0x14 0 0xf>,
|
|
||||||
+ <153 0 0x1a 0x1a 0x18 0x17 0x1a 0x1a 0x17 0x15 0x1a 0x1a 0x17 0x14 0x15 0x15 0x15 0x14 0 0xf>,
|
|
||||||
+ <157 0 0x1a 0x1a 0x18 0x17 0x1a 0x1a 0x17 0x15 0x1a 0x1a 0x17 0x14 0x15 0x15 0x15 0x14 0 0xf>,
|
|
||||||
+ <161 0 0x1a 0x1a 0x18 0x17 0x1a 0x1a 0x17 0x15 0x1a 0x1a 0x17 0x14 0x15 0x15 0x15 0x14 0 0xf>,
|
|
||||||
+ <165 0 0x1a 0x1a 0x18 0x17 0x1a 0x1a 0x17 0x15 0x1a 0x1a 0x17 0x14 0x15 0x15 0x15 0x14 0 0xf>;
|
|
||||||
+ CN =
|
|
||||||
+ <36 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <40 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <44 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <48 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <52 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <56 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <60 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <64 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <100 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <104 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <108 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <112 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <116 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <120 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <124 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <128 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <132 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <136 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <140 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <149 0 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x14 0x14 0x14 0x14 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <153 0 0x1a 0x1a 0x18 0x17 0x1a 0x1a 0x17 0x15 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <157 0 0x1a 0x1a 0x18 0x17 0x1a 0x1a 0x17 0x15 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <161 0 0x1a 0x1a 0x18 0x17 0x1a 0x1a 0x17 0x15 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <165 0 0x15 0x15 0x15 0x15 0x16 0x16 0x16 0x15 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0 0xf>;
|
|
||||||
+ ETSI =
|
|
||||||
+ <36 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <40 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <44 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <48 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <52 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <56 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <60 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <64 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <100 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <104 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <108 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <112 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <116 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <120 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <124 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <128 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <132 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <136 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <140 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>,
|
|
||||||
+ <149 0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0 0xf>;
|
|
||||||
+ FCC =
|
|
||||||
+ <36 0 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <40 0 0x19 0x19 0x18 0x17 0x19 0x19 0x17 0x15 0x17 0x17 0x17 0x14 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <44 0 0x19 0x19 0x18 0x17 0x19 0x19 0x17 0x15 0x17 0x17 0x17 0x14 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <48 0 0x1a 0x1a 0x18 0x17 0x1a 0x1a 0x17 0x15 0x17 0x17 0x17 0x14 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <52 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <56 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <60 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <64 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <100 0 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <104 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <108 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <112 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <116 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <120 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <124 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <128 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <132 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <136 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <140 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <149 0 0x1a 0x1a 0x18 0x17 0x19 0x19 0x17 0x15 0x18 0x18 0x17 0x14 0x15 0x15 0x15 0x14 0 0xf>,
|
|
||||||
+ <153 0 0x1a 0x1a 0x18 0x17 0x1a 0x1a 0x17 0x15 0x1a 0x1a 0x17 0x14 0x15 0x15 0x15 0x14 0 0xf>,
|
|
||||||
+ <157 0 0x1a 0x1a 0x18 0x17 0x1a 0x1a 0x17 0x15 0x1a 0x1a 0x17 0x14 0x15 0x15 0x15 0x14 0 0xf>,
|
|
||||||
+ <161 0 0x1a 0x1a 0x18 0x17 0x1a 0x1a 0x17 0x15 0x1a 0x1a 0x17 0x14 0x15 0x15 0x15 0x14 0 0xf>,
|
|
||||||
+ <165 0 0x1a 0x1a 0x18 0x17 0x1a 0x1a 0x17 0x15 0x1a 0x1a 0x17 0x14 0x15 0x15 0x15 0x14 0 0xf>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&pcie2 {
|
|
||||||
+ mwlwifi {
|
|
||||||
+ marvell,chainmask = <2 2>;
|
|
||||||
+ marvell,powertable {
|
|
||||||
+ AU =
|
|
||||||
+ <1 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <2 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <3 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <4 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <5 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <6 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <7 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <8 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <9 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <10 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <11 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>;
|
|
||||||
+ CA =
|
|
||||||
+ <1 0 0x19 0x14 0x14 0x14 0x13 0x13 0x13 0x13 0x10 0x10 0x10 0x10 0x00 0x00 0x00 0x00 0 0xf>,
|
|
||||||
+ <2 0 0x1a 0x19 0x18 0x17 0x19 0x19 0x17 0x16 0x14 0x14 0x14 0x14 0x00 0x00 0x00 0x00 0 0xf>,
|
|
||||||
+ <3 0 0x1a 0x19 0x18 0x17 0x19 0x19 0x17 0x16 0x14 0x14 0x14 0x14 0x00 0x00 0x00 0x00 0 0xf>,
|
|
||||||
+ <4 0 0x1a 0x19 0x18 0x17 0x19 0x19 0x17 0x16 0x14 0x14 0x14 0x14 0x00 0x00 0x00 0x00 0 0xf>,
|
|
||||||
+ <5 0 0x1a 0x19 0x18 0x17 0x19 0x19 0x17 0x16 0x14 0x14 0x14 0x14 0x00 0x00 0x00 0x00 0 0xf>,
|
|
||||||
+ <6 0 0x1a 0x19 0x18 0x17 0x19 0x19 0x17 0x16 0x14 0x14 0x14 0x14 0x00 0x00 0x00 0x00 0 0xf>,
|
|
||||||
+ <7 0 0x1a 0x19 0x18 0x17 0x19 0x19 0x17 0x16 0x14 0x14 0x14 0x14 0x00 0x00 0x00 0x00 0 0xf>,
|
|
||||||
+ <8 0 0x1a 0x19 0x18 0x17 0x19 0x19 0x17 0x16 0x14 0x14 0x14 0x14 0x00 0x00 0x00 0x00 0 0xf>,
|
|
||||||
+ <9 0 0x1a 0x19 0x18 0x17 0x19 0x19 0x17 0x16 0x14 0x14 0x14 0x14 0x00 0x00 0x00 0x00 0 0xf>,
|
|
||||||
+ <10 0 0x1a 0x19 0x18 0x17 0x19 0x19 0x17 0x16 0x14 0x14 0x14 0x14 0x00 0x00 0x00 0x00 0 0xf>,
|
|
||||||
+ <11 0 0x19 0x15 0x15 0x15 0x14 0x14 0x14 0x14 0x13 0x13 0x13 0x13 0x00 0x00 0x00 0x00 0 0xf>;
|
|
||||||
+ CN =
|
|
||||||
+ <1 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <2 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <3 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <4 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <5 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <6 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <7 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <8 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <9 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <10 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <11 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <12 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <13 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <14 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>;
|
|
||||||
+ ETSI =
|
|
||||||
+ <1 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <2 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <3 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <4 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <5 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <6 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <7 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <8 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <9 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <10 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <11 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <12 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <13 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0x0 0x0 0x0 0x0 0 0xf>;
|
|
||||||
+ FCC =
|
|
||||||
+ <1 0 0x19 0x14 0x14 0x14 0x13 0x13 0x13 0x13 0x10 0x10 0x10 0x10 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <2 0 0x1a 0x19 0x18 0x17 0x19 0x19 0x17 0x16 0x14 0x14 0x14 0x14 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <3 0 0x1a 0x19 0x18 0x17 0x19 0x19 0x17 0x16 0x14 0x14 0x14 0x14 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <4 0 0x1a 0x19 0x18 0x17 0x19 0x19 0x17 0x16 0x14 0x14 0x14 0x14 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <5 0 0x1a 0x19 0x18 0x17 0x19 0x19 0x17 0x16 0x14 0x14 0x14 0x14 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <6 0 0x1a 0x19 0x18 0x17 0x19 0x19 0x17 0x16 0x14 0x14 0x14 0x14 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <7 0 0x1a 0x19 0x18 0x17 0x19 0x19 0x17 0x16 0x14 0x14 0x14 0x14 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <8 0 0x1a 0x19 0x18 0x17 0x19 0x19 0x17 0x16 0x14 0x14 0x14 0x14 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <9 0 0x1a 0x19 0x18 0x17 0x19 0x19 0x17 0x16 0x14 0x14 0x14 0x14 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <10 0 0x1a 0x19 0x18 0x17 0x19 0x19 0x17 0x16 0x14 0x14 0x14 0x14 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <11 0 0x19 0x15 0x15 0x15 0x14 0x14 0x14 0x14 0x13 0x13 0x13 0x13 0x0 0x0 0x0 0x0 0 0xf>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
--- a/arch/arm/boot/dts/armada-385-linksys-cobra.dts
|
|
||||||
+++ b/arch/arm/boot/dts/armada-385-linksys-cobra.dts
|
|
||||||
@@ -142,3 +142,205 @@
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
+
|
|
||||||
+&pcie1 {
|
|
||||||
+ mwlwifi {
|
|
||||||
+ marvell,chainmask = <4 4>;
|
|
||||||
+ marvell,powertable {
|
|
||||||
+ AU =
|
|
||||||
+ <36 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <40 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <44 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <48 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <52 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <56 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <60 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <64 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <100 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <104 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <108 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <112 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <116 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <120 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <124 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <128 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <132 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <136 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <140 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <149 0 0x19 0x19 0x19 0x17 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0 0xf>,
|
|
||||||
+ <153 0 0x19 0x19 0x19 0x17 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0 0xf>,
|
|
||||||
+ <157 0 0x19 0x19 0x19 0x17 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0 0xf>,
|
|
||||||
+ <161 0 0x19 0x19 0x19 0x17 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0 0xf>,
|
|
||||||
+ <165 0 0x19 0x19 0x19 0x17 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0 0xf>;
|
|
||||||
+ CA =
|
|
||||||
+ <36 0 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0 0xf>,
|
|
||||||
+ <40 0 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0 0xf>,
|
|
||||||
+ <44 0 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0 0xf>,
|
|
||||||
+ <48 0 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0 0xf>,
|
|
||||||
+ <52 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <56 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <60 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <64 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <100 0 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <104 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <108 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <112 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <116 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <120 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <124 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <128 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <132 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <136 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <140 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <149 0 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>,
|
|
||||||
+ <153 0 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>,
|
|
||||||
+ <157 0 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>,
|
|
||||||
+ <161 0 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>,
|
|
||||||
+ <165 0 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>;
|
|
||||||
+ CN =
|
|
||||||
+ <36 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <40 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <44 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <48 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <52 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <56 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <60 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <64 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <100 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <104 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <108 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <112 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <116 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <120 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <124 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <128 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <132 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <136 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <140 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <149 0 0x14 0x14 0x14 0x14 0x13 0x13 0x13 0x13 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <153 0 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x14 0x14 0x14 0x14 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <157 0 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x14 0x14 0x14 0x14 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <161 0 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x14 0x14 0x14 0x14 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <165 0 0x13 0x13 0x13 0x13 0x13 0x13 0x13 0x13 0x14 0x14 0x14 0x14 0x10 0x10 0x10 0x10 0 0xf>;
|
|
||||||
+ ETSI =
|
|
||||||
+ <36 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <40 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <44 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <48 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <52 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <56 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <60 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <64 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <100 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <104 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <108 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <112 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <116 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <120 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <124 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <128 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <132 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <136 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <140 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <149 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>;
|
|
||||||
+ FCC =
|
|
||||||
+ <36 0 0x12 0x12 0x12 0x12 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0xf 0xf 0xf 0xf 0 0xf>,
|
|
||||||
+ <40 0 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0xf 0xf 0xf 0xf 0 0xf>,
|
|
||||||
+ <44 0 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0xf 0xf 0xf 0xf 0 0xf>,
|
|
||||||
+ <48 0 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0xf 0xf 0xf 0xf 0 0xf>,
|
|
||||||
+ <52 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <56 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <60 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <64 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <100 0 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <104 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <108 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <112 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <116 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <120 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <124 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <128 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <132 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <136 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <140 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <149 0 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>,
|
|
||||||
+ <153 0 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>,
|
|
||||||
+ <157 0 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>,
|
|
||||||
+ <161 0 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>,
|
|
||||||
+ <165 0 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&pcie2 {
|
|
||||||
+ mwlwifi {
|
|
||||||
+ marvell,chainmask = <4 4>;
|
|
||||||
+ marvell,powertable {
|
|
||||||
+ AU =
|
|
||||||
+ <1 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <2 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <3 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <4 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <5 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <6 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <7 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <8 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <9 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <10 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <11 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>;
|
|
||||||
+ CA =
|
|
||||||
+ <1 0 0x17 0x10 0x10 0x10 0xf 0xf 0xf 0xf 0xe 0xe 0xe 0xe 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <2 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <3 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <4 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <5 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <6 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <7 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <8 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <9 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <10 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <11 0 0x17 0x12 0x12 0x12 0x13 0x13 0x13 0x13 0xf 0xf 0xf 0xf 0x0 0x0 0x0 0x0 0 0xf>;
|
|
||||||
+ CN =
|
|
||||||
+ <1 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <2 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <3 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <4 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <5 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <6 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <7 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <8 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <9 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <10 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <11 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <12 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <13 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <14 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>;
|
|
||||||
+ ETSI =
|
|
||||||
+ <1 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <2 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <3 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <4 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <5 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <6 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <7 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <8 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <9 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <10 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <11 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <12 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <13 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>;
|
|
||||||
+ FCC =
|
|
||||||
+ <1 0 0x17 0x10 0x10 0x10 0xf 0xf 0xf 0xf 0xe 0xe 0xe 0xe 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <2 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <3 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <4 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <5 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <6 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <7 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <8 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <9 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <10 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <11 0 0x17 0x12 0x12 0x12 0x13 0x13 0x13 0x13 0xf 0xf 0xf 0xf 0x0 0x0 0x0 0x0 0 0xf>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
--- a/arch/arm/boot/dts/armada-385-linksys-shelby.dts
|
|
||||||
+++ b/arch/arm/boot/dts/armada-385-linksys-shelby.dts
|
|
||||||
@@ -142,3 +142,205 @@
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
+
|
|
||||||
+&pcie1 {
|
|
||||||
+ mwlwifi {
|
|
||||||
+ marvell,chainmask = <4 4>;
|
|
||||||
+ marvell,powertable {
|
|
||||||
+ AU =
|
|
||||||
+ <36 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <40 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <44 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <48 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <52 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <56 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <60 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <64 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <100 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <104 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <108 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <112 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <116 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <120 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <124 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <128 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <132 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <136 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <140 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <149 0 0x19 0x19 0x19 0x17 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0 0xf>,
|
|
||||||
+ <153 0 0x19 0x19 0x19 0x17 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0 0xf>,
|
|
||||||
+ <157 0 0x19 0x19 0x19 0x17 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0 0xf>,
|
|
||||||
+ <161 0 0x19 0x19 0x19 0x17 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0 0xf>,
|
|
||||||
+ <165 0 0x19 0x19 0x19 0x17 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0x19 0x19 0x16 0x15 0 0xf>;
|
|
||||||
+ CA =
|
|
||||||
+ <36 0 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0 0xf>,
|
|
||||||
+ <40 0 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0 0xf>,
|
|
||||||
+ <44 0 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0 0xf>,
|
|
||||||
+ <48 0 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0 0xf>,
|
|
||||||
+ <52 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <56 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <60 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <64 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <100 0 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <104 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <108 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <112 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <116 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <120 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <124 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <128 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <132 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <136 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <140 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <149 0 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>,
|
|
||||||
+ <153 0 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>,
|
|
||||||
+ <157 0 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>,
|
|
||||||
+ <161 0 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>,
|
|
||||||
+ <165 0 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>;
|
|
||||||
+ CN =
|
|
||||||
+ <36 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <40 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <44 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <48 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <52 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <56 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <60 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <64 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <100 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <104 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <108 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <112 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <116 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <120 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <124 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <128 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <132 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <136 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <140 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <149 0 0x14 0x14 0x14 0x14 0x13 0x13 0x13 0x13 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <153 0 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x14 0x14 0x14 0x14 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <157 0 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x14 0x14 0x14 0x14 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <161 0 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x14 0x14 0x14 0x14 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <165 0 0x13 0x13 0x13 0x13 0x13 0x13 0x13 0x13 0x14 0x14 0x14 0x14 0x10 0x10 0x10 0x10 0 0xf>;
|
|
||||||
+ ETSI =
|
|
||||||
+ <36 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <40 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <44 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <48 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <52 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <56 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <60 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <64 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <100 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <104 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <108 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <112 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <116 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <120 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <124 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <128 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <132 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <136 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <140 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>,
|
|
||||||
+ <149 0 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xd 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0xe 0 0xf>;
|
|
||||||
+ FCC =
|
|
||||||
+ <36 0 0x12 0x12 0x12 0x12 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0xf 0xf 0xf 0xf 0 0xf>,
|
|
||||||
+ <40 0 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0xf 0xf 0xf 0xf 0 0xf>,
|
|
||||||
+ <44 0 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0xf 0xf 0xf 0xf 0 0xf>,
|
|
||||||
+ <48 0 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0xf 0xf 0xf 0xf 0 0xf>,
|
|
||||||
+ <52 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <56 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <60 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <64 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <100 0 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <104 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x12 0x12 0x12 0x12 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <108 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <112 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <116 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <120 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <124 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <128 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <132 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <136 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <140 0 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0 0xf>,
|
|
||||||
+ <149 0 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>,
|
|
||||||
+ <153 0 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>,
|
|
||||||
+ <157 0 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>,
|
|
||||||
+ <161 0 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>,
|
|
||||||
+ <165 0 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0 0xf>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&pcie2 {
|
|
||||||
+ mwlwifi {
|
|
||||||
+ marvell,chainmask = <4 4>;
|
|
||||||
+ marvell,powertable {
|
|
||||||
+ AU =
|
|
||||||
+ <1 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <2 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <3 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <4 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <5 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <6 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <7 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <8 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <9 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <10 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <11 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>;
|
|
||||||
+ CA =
|
|
||||||
+ <1 0 0x17 0x10 0x10 0x10 0xf 0xf 0xf 0xf 0xe 0xe 0xe 0xe 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <2 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <3 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <4 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <5 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <6 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <7 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <8 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <9 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <10 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <11 0 0x17 0x12 0x12 0x12 0x13 0x13 0x13 0x13 0xf 0xf 0xf 0xf 0x0 0x0 0x0 0x0 0 0xf>;
|
|
||||||
+ CN =
|
|
||||||
+ <1 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <2 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <3 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <4 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <5 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <6 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <7 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <8 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <9 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <10 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <11 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <12 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <13 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <14 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>;
|
|
||||||
+ ETSI =
|
|
||||||
+ <1 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <2 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <3 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <4 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <5 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <6 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <7 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <8 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <9 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <10 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <11 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <12 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <13 0 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0xa 0x0 0x0 0x0 0x0 0 0xf>;
|
|
||||||
+ FCC =
|
|
||||||
+ <1 0 0x17 0x10 0x10 0x10 0xf 0xf 0xf 0xf 0xe 0xe 0xe 0xe 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <2 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <3 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <4 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <5 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <6 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <7 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <8 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <9 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <10 0 0x18 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x11 0x11 0x11 0x11 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <11 0 0x17 0x12 0x12 0x12 0x13 0x13 0x13 0x13 0xf 0xf 0xf 0xf 0x0 0x0 0x0 0x0 0 0xf>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
--- a/arch/arm/boot/dts/armada-385-linksys-rango.dts
|
|
||||||
+++ b/arch/arm/boot/dts/armada-385-linksys-rango.dts
|
|
||||||
@@ -157,6 +157,18 @@
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
+&pcie1 {
|
|
||||||
+ mwlwifi {
|
|
||||||
+ marvell,chainmask = <4 4>;
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&pcie2 {
|
|
||||||
+ mwlwifi {
|
|
||||||
+ marvell,chainmask = <4 4>;
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
&sdhci {
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&sdhci_pins>;
|
|
||||||
--- a/arch/arm/boot/dts/armada-xp-linksys-mamba.dts
|
|
||||||
+++ b/arch/arm/boot/dts/armada-xp-linksys-mamba.dts
|
|
||||||
@@ -225,12 +225,100 @@
|
|
||||||
pcie@2,0 {
|
|
||||||
/* Port 0, Lane 1 */
|
|
||||||
status = "okay";
|
|
||||||
+
|
|
||||||
+ mwlwifi {
|
|
||||||
+ marvell,5ghz = <0>;
|
|
||||||
+ marvell,chainmask = <4 4>;
|
|
||||||
+ marvell,powertable {
|
|
||||||
+ FCC =
|
|
||||||
+ <1 0 0x17 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0xf 0xf 0xf 0xf 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <2 0 0x17 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x10 0x10 0x10 0x10 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <3 0 0x17 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x10 0x10 0x10 0x10 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <4 0 0x17 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x10 0x10 0x10 0x10 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <5 0 0x17 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x10 0x10 0x10 0x10 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <6 0 0x17 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x10 0x10 0x10 0x10 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <7 0 0x17 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x10 0x10 0x10 0x10 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <8 0 0x17 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x10 0x10 0x10 0x10 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <9 0 0x17 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x10 0x10 0x10 0x10 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <10 0 0x17 0x16 0x16 0x16 0x16 0x16 0x16 0x14 0x10 0x10 0x10 0x10 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <11 0 0x17 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x10 0x10 0x10 0x10 0x0 0x0 0x0 0x0 0 0xf>;
|
|
||||||
+
|
|
||||||
+ ETSI =
|
|
||||||
+ <1 0 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <2 0 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <3 0 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <4 0 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <5 0 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <6 0 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <7 0 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <8 0 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <9 0 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <10 0 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <11 0 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <12 0 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0x0 0x0 0x0 0x0 0 0xf>,
|
|
||||||
+ <13 0 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0xb 0x0 0x0 0x0 0x0 0 0xf>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Second mini-PCIe port */
|
|
||||||
pcie@3,0 {
|
|
||||||
/* Port 0, Lane 3 */
|
|
||||||
status = "okay";
|
|
||||||
+
|
|
||||||
+ mwlwifi {
|
|
||||||
+ marvell,2ghz = <0>;
|
|
||||||
+ marvell,chainmask = <4 4>;
|
|
||||||
+ marvell,powertable {
|
|
||||||
+ FCC =
|
|
||||||
+ <36 0 0x8 0x8 0x8 0x8 0x8 0x8 0x8 0x8 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0 0xf>,
|
|
||||||
+ <40 0 0x8 0x8 0x8 0x8 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0 0xf>,
|
|
||||||
+ <44 0 0x8 0x8 0x8 0x8 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0 0xf>,
|
|
||||||
+ <48 0 0x8 0x8 0x8 0x8 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0x9 0 0xf>,
|
|
||||||
+ <52 0 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0x12 0x12 0x12 0x12 0x12 0x12 0x12 0x12 0 0xf>,
|
|
||||||
+ <56 0 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0x12 0x12 0x12 0x12 0x12 0x12 0x12 0x12 0 0xf>,
|
|
||||||
+ <60 0 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0x12 0x12 0x12 0x12 0x12 0x12 0x12 0x12 0 0xf>,
|
|
||||||
+ <64 0 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0xf 0x12 0x12 0x12 0x12 0x12 0x12 0x12 0x12 0 0xf>,
|
|
||||||
+ <100 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <104 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <108 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <112 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <116 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <120 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <124 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <128 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <132 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <136 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <140 0 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <149 0 0x16 0x16 0x16 0x16 0x14 0x14 0x14 0x14 0x15 0x15 0x15 0x15 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <153 0 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <157 0 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <161 0 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x15 0x14 0x14 0x14 0x14 0 0xf>,
|
|
||||||
+ <165 0 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x15 0x15 0x15 0x15 0x14 0x14 0x14 0x14 0 0xf>;
|
|
||||||
+
|
|
||||||
+ ETSI =
|
|
||||||
+ <36 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <40 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <44 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <48 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <52 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <56 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <60 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <64 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <100 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <104 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <108 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <112 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <116 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <120 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <124 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <128 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <132 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <136 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <140 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>,
|
|
||||||
+ <149 0 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xc 0xd 0xd 0xd 0xd 0xc 0xc 0xc 0xc 0 0xf>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
--- a/arch/arm/boot/dts/armada-xp.dtsi
|
|
||||||
+++ b/arch/arm/boot/dts/armada-xp.dtsi
|
|
||||||
@@ -237,12 +237,10 @@
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c0 {
|
|
||||||
- compatible = "marvell,mv78230-i2c", "marvell,mv64xxx-i2c";
|
|
||||||
reg = <0x11000 0x100>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c1 {
|
|
||||||
- compatible = "marvell,mv78230-i2c", "marvell,mv64xxx-i2c";
|
|
||||||
reg = <0x11100 0x100>;
|
|
||||||
};
|
|
||||||
|
|
|
@ -1,19 +0,0 @@
|
||||||
--- a/arch/arm/boot/dts/armada-388-rd.dts
|
|
||||||
+++ b/arch/arm/boot/dts/armada-388-rd.dts
|
|
||||||
@@ -103,6 +103,16 @@
|
|
||||||
compatible = "st,m25p128", "jedec,spi-nor";
|
|
||||||
reg = <0>; /* Chip select 0 */
|
|
||||||
spi-max-frequency = <108000000>;
|
|
||||||
+
|
|
||||||
+ partition@0 {
|
|
||||||
+ label = "uboot";
|
|
||||||
+ reg = <0 0x400000>;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ partition@1 {
|
|
||||||
+ label = "firmware";
|
|
||||||
+ reg = <0x400000 0xc00000>;
|
|
||||||
+ };
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
|
@ -1,35 +0,0 @@
|
||||||
From 9861f93a59142a3131870df2521eb2deb73026d7 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Maxime Ripard <maxime.ripard@free-electrons.com>
|
|
||||||
Date: Tue, 13 Jan 2015 11:14:09 +0100
|
|
||||||
Subject: [PATCH 2/2] ARM: mvebu: 385-ap: Add partitions
|
|
||||||
|
|
||||||
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
|
|
||||||
---
|
|
||||||
arch/arm/boot/dts/armada-385-db-ap.dts | 15 +++++++++++++++
|
|
||||||
1 file changed, 15 insertions(+)
|
|
||||||
|
|
||||||
--- a/arch/arm/boot/dts/armada-385-db-ap.dts
|
|
||||||
+++ b/arch/arm/boot/dts/armada-385-db-ap.dts
|
|
||||||
@@ -218,19 +218,19 @@
|
|
||||||
#size-cells = <1>;
|
|
||||||
|
|
||||||
partition@0 {
|
|
||||||
- label = "U-Boot";
|
|
||||||
+ label = "u-boot";
|
|
||||||
reg = <0x00000000 0x00800000>;
|
|
||||||
read-only;
|
|
||||||
};
|
|
||||||
|
|
||||||
partition@800000 {
|
|
||||||
- label = "uImage";
|
|
||||||
+ label = "kernel";
|
|
||||||
reg = <0x00800000 0x00400000>;
|
|
||||||
read-only;
|
|
||||||
};
|
|
||||||
|
|
||||||
partition@c00000 {
|
|
||||||
- label = "Root";
|
|
||||||
+ label = "ubi";
|
|
||||||
reg = <0x00c00000 0x3f400000>;
|
|
||||||
};
|
|
||||||
};
|
|
|
@ -1,10 +0,0 @@
|
||||||
--- a/arch/arm/boot/dts/armada-xp-linksys-mamba.dts
|
|
||||||
+++ b/arch/arm/boot/dts/armada-xp-linksys-mamba.dts
|
|
||||||
@@ -485,3 +485,7 @@
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
+
|
|
||||||
+&coherencyfab {
|
|
||||||
+ broken-idle;
|
|
||||||
+};
|
|
|
@ -1,11 +0,0 @@
|
||||||
--- a/arch/arm/boot/dts/armada-xp-linksys-mamba.dts
|
|
||||||
+++ b/arch/arm/boot/dts/armada-xp-linksys-mamba.dts
|
|
||||||
@@ -387,7 +387,7 @@
|
|
||||||
|
|
||||||
port@4 {
|
|
||||||
reg = <4>;
|
|
||||||
- label = "internet";
|
|
||||||
+ label = "wan";
|
|
||||||
};
|
|
||||||
|
|
||||||
port@5 {
|
|
|
@ -1,50 +0,0 @@
|
||||||
--- a/arch/arm/boot/dts/armada-385-linksys.dtsi
|
|
||||||
+++ b/arch/arm/boot/dts/armada-385-linksys.dtsi
|
|
||||||
@@ -14,6 +14,13 @@
|
|
||||||
compatible = "linksys,armada385", "marvell,armada385",
|
|
||||||
"marvell,armada380";
|
|
||||||
|
|
||||||
+ aliases {
|
|
||||||
+ led-boot = &led_power;
|
|
||||||
+ led-failsafe = &led_power;
|
|
||||||
+ led-running = &led_power;
|
|
||||||
+ led-upgrade = &led_power;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
chosen {
|
|
||||||
stdout-path = "serial0:115200n8";
|
|
||||||
};
|
|
||||||
@@ -71,7 +78,7 @@
|
|
||||||
pinctrl-0 = <&gpio_leds_pins>;
|
|
||||||
pinctrl-names = "default";
|
|
||||||
|
|
||||||
- power {
|
|
||||||
+ led_power: power {
|
|
||||||
gpios = <&gpio1 23 GPIO_ACTIVE_HIGH>;
|
|
||||||
default-state = "on";
|
|
||||||
};
|
|
||||||
--- a/arch/arm/boot/dts/armada-xp-linksys-mamba.dts
|
|
||||||
+++ b/arch/arm/boot/dts/armada-xp-linksys-mamba.dts
|
|
||||||
@@ -26,6 +26,13 @@
|
|
||||||
compatible = "linksys,mamba", "marvell,armadaxp-mv78230",
|
|
||||||
"marvell,armadaxp", "marvell,armada-370-xp";
|
|
||||||
|
|
||||||
+ aliases {
|
|
||||||
+ led-boot = &led_power;
|
|
||||||
+ led-failsafe = &led_power;
|
|
||||||
+ led-running = &led_power;
|
|
||||||
+ led-upgrade = &led_power;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
chosen {
|
|
||||||
bootargs = "console=ttyS0,115200";
|
|
||||||
stdout-path = &uart0;
|
|
||||||
@@ -197,7 +204,7 @@
|
|
||||||
pinctrl-0 = <&power_led_pin>;
|
|
||||||
pinctrl-names = "default";
|
|
||||||
|
|
||||||
- power {
|
|
||||||
+ led_power: power {
|
|
||||||
label = "mamba:white:power";
|
|
||||||
gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>;
|
|
||||||
default-state = "on";
|
|
|
@ -1,25 +0,0 @@
|
||||||
--- a/arch/arm/boot/dts/armada-385-linksys.dtsi
|
|
||||||
+++ b/arch/arm/boot/dts/armada-385-linksys.dtsi
|
|
||||||
@@ -116,7 +116,7 @@
|
|
||||||
};
|
|
||||||
|
|
||||||
ð2 {
|
|
||||||
- status = "okay";
|
|
||||||
+ status = "disabled";
|
|
||||||
phy-mode = "sgmii";
|
|
||||||
buffer-manager = <&bm>;
|
|
||||||
bm,pool-long = <2>;
|
|
||||||
@@ -200,10 +200,10 @@
|
|
||||||
label = "wan";
|
|
||||||
};
|
|
||||||
|
|
||||||
- port@5 {
|
|
||||||
- reg = <5>;
|
|
||||||
+ port@6 {
|
|
||||||
+ reg = <6>;
|
|
||||||
label = "cpu";
|
|
||||||
- ethernet = <ð2>;
|
|
||||||
+ ethernet = <ð0>;
|
|
||||||
|
|
||||||
fixed-link {
|
|
||||||
speed = <1000>;
|
|
|
@ -1,68 +0,0 @@
|
||||||
--- a/arch/arm/boot/dts/armada-385-linksys-rango.dts
|
|
||||||
+++ b/arch/arm/boot/dts/armada-385-linksys-rango.dts
|
|
||||||
@@ -12,8 +12,8 @@
|
|
||||||
|
|
||||||
/ {
|
|
||||||
model = "Linksys WRT3200ACM";
|
|
||||||
- compatible = "linksys,rango", "linksys,armada385", "marvell,armada385",
|
|
||||||
- "marvell,armada380";
|
|
||||||
+ compatible = "linksys,wrt3200acm", "linksys,rango", "linksys,armada385",
|
|
||||||
+ "marvell,armada385", "marvell,armada380";
|
|
||||||
};
|
|
||||||
|
|
||||||
&expander0 {
|
|
||||||
--- a/arch/arm/boot/dts/armada-xp-linksys-mamba.dts
|
|
||||||
+++ b/arch/arm/boot/dts/armada-xp-linksys-mamba.dts
|
|
||||||
@@ -22,9 +22,10 @@
|
|
||||||
#include "armada-xp-mv78230.dtsi"
|
|
||||||
|
|
||||||
/ {
|
|
||||||
- model = "Linksys WRT1900AC";
|
|
||||||
- compatible = "linksys,mamba", "marvell,armadaxp-mv78230",
|
|
||||||
- "marvell,armadaxp", "marvell,armada-370-xp";
|
|
||||||
+ model = "Linksys WRT1900AC v1";
|
|
||||||
+ compatible = "linksys,wrt1900ac-v1", "linksys,mamba",
|
|
||||||
+ "marvell,armadaxp-mv78230", "marvell,armadaxp",
|
|
||||||
+ "marvell,armada-370-xp";
|
|
||||||
|
|
||||||
aliases {
|
|
||||||
led-boot = &led_power;
|
|
||||||
--- a/arch/arm/boot/dts/armada-385-linksys-cobra.dts
|
|
||||||
+++ b/arch/arm/boot/dts/armada-385-linksys-cobra.dts
|
|
||||||
@@ -9,8 +9,9 @@
|
|
||||||
#include "armada-385-linksys.dtsi"
|
|
||||||
|
|
||||||
/ {
|
|
||||||
- model = "Linksys WRT1900ACv2";
|
|
||||||
- compatible = "linksys,cobra", "linksys,armada385", "marvell,armada385",
|
|
||||||
+ model = "Linksys WRT1900AC v2";
|
|
||||||
+ compatible = "linksys,wrt1900ac-v2", "linksys,cobra",
|
|
||||||
+ "linksys,armada385", "marvell,armada385",
|
|
||||||
"marvell,armada380";
|
|
||||||
};
|
|
||||||
|
|
||||||
--- a/arch/arm/boot/dts/armada-385-linksys-caiman.dts
|
|
||||||
+++ b/arch/arm/boot/dts/armada-385-linksys-caiman.dts
|
|
||||||
@@ -10,8 +10,8 @@
|
|
||||||
|
|
||||||
/ {
|
|
||||||
model = "Linksys WRT1200AC";
|
|
||||||
- compatible = "linksys,caiman", "linksys,armada385", "marvell,armada385",
|
|
||||||
- "marvell,armada380";
|
|
||||||
+ compatible = "linksys,wrt1200ac", "linksys,caiman", "linksys,armada385",
|
|
||||||
+ "marvell,armada385", "marvell,armada380";
|
|
||||||
};
|
|
||||||
|
|
||||||
&expander0 {
|
|
||||||
--- a/arch/arm/boot/dts/armada-385-linksys-shelby.dts
|
|
||||||
+++ b/arch/arm/boot/dts/armada-385-linksys-shelby.dts
|
|
||||||
@@ -10,7 +10,8 @@
|
|
||||||
|
|
||||||
/ {
|
|
||||||
model = "Linksys WRT1900ACS";
|
|
||||||
- compatible = "linksys,shelby", "linksys,armada385", "marvell,armada385",
|
|
||||||
+ compatible = "linksys,wrt1900acs", "linksys,shelby",
|
|
||||||
+ "linksys,armada385", "marvell,armada385",
|
|
||||||
"marvell,armada380";
|
|
||||||
};
|
|
||||||
|
|
|
@ -1,87 +0,0 @@
|
||||||
From 8137da20701c776ad3481115305a5e8e410871ba Mon Sep 17 00:00:00 2001
|
|
||||||
From: Russell King <rmk+kernel@armlinux.org.uk>
|
|
||||||
Date: Tue, 29 Nov 2016 10:15:45 +0000
|
|
||||||
Subject: ARM: dts: armada388-clearfog: emmc on clearfog base
|
|
||||||
|
|
||||||
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
|
||||||
---
|
|
||||||
arch/arm/boot/dts/armada-388-clearfog-base.dts | 1 +
|
|
||||||
.../dts/armada-38x-solidrun-microsom-emmc.dtsi | 62 ++++++++++++++++++++++
|
|
||||||
2 files changed, 63 insertions(+)
|
|
||||||
create mode 100644 arch/arm/boot/dts/armada-38x-solidrun-microsom-emmc.dtsi
|
|
||||||
|
|
||||||
--- a/arch/arm/boot/dts/armada-388-clearfog-base.dts
|
|
||||||
+++ b/arch/arm/boot/dts/armada-388-clearfog-base.dts
|
|
||||||
@@ -7,6 +7,7 @@
|
|
||||||
|
|
||||||
/dts-v1/;
|
|
||||||
#include "armada-388-clearfog.dtsi"
|
|
||||||
+#include "armada-38x-solidrun-microsom-emmc.dtsi"
|
|
||||||
|
|
||||||
/ {
|
|
||||||
model = "SolidRun Clearfog Base A1";
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/arch/arm/boot/dts/armada-38x-solidrun-microsom-emmc.dtsi
|
|
||||||
@@ -0,0 +1,62 @@
|
|
||||||
+/*
|
|
||||||
+ * Device Tree file for SolidRun Armada 38x Microsom add-on for eMMC
|
|
||||||
+ *
|
|
||||||
+ * Copyright (C) 2015 Russell King
|
|
||||||
+ *
|
|
||||||
+ * This board is in development; the contents of this file work with
|
|
||||||
+ * the A1 rev 2.0 of the board, which does not represent final
|
|
||||||
+ * production board. Things will change, don't expect this file to
|
|
||||||
+ * remain compatible info the future.
|
|
||||||
+ *
|
|
||||||
+ * This file is dual-licensed: you can use it either under the terms
|
|
||||||
+ * of the GPL or the X11 license, at your option. Note that this dual
|
|
||||||
+ * licensing only applies to this file, and not this project as a
|
|
||||||
+ * whole.
|
|
||||||
+ *
|
|
||||||
+ * a) This file is free software; you can redistribute it and/or
|
|
||||||
+ * modify it under the terms of the GNU General Public License
|
|
||||||
+ * version 2 as published by the Free Software Foundation.
|
|
||||||
+ *
|
|
||||||
+ * This file is distributed in the hope that it will be useful
|
|
||||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
+ * GNU General Public License for more details.
|
|
||||||
+ *
|
|
||||||
+ * Or, alternatively
|
|
||||||
+ *
|
|
||||||
+ * b) Permission is hereby granted, free of charge, to any person
|
|
||||||
+ * obtaining a copy of this software and associated documentation
|
|
||||||
+ * files (the "Software"), to deal in the Software without
|
|
||||||
+ * restriction, including without limitation the rights to use
|
|
||||||
+ * copy, modify, merge, publish, distribute, sublicense, and/or
|
|
||||||
+ * sell copies of the Software, and to permit persons to whom the
|
|
||||||
+ * Software is furnished to do so, subject to the following
|
|
||||||
+ * conditions:
|
|
||||||
+ *
|
|
||||||
+ * The above copyright notice and this permission notice shall be
|
|
||||||
+ * included in all copies or substantial portions of the Software.
|
|
||||||
+ *
|
|
||||||
+ * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
|
|
||||||
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
||||||
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
||||||
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
||||||
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
|
|
||||||
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
||||||
+ * OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
+ */
|
|
||||||
+/ {
|
|
||||||
+ soc {
|
|
||||||
+ internal-regs {
|
|
||||||
+ sdhci@d8000 {
|
|
||||||
+ bus-width = <4>;
|
|
||||||
+ no-1-8-v;
|
|
||||||
+ non-removable;
|
|
||||||
+ pinctrl-0 = <µsom_sdhci_pins>;
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ status = "okay";
|
|
||||||
+ wp-inverted;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+};
|
|
|
@ -1,28 +0,0 @@
|
||||||
--- a/arch/arm/boot/dts/armada-388-helios4.dts
|
|
||||||
+++ b/arch/arm/boot/dts/armada-388-helios4.dts
|
|
||||||
@@ -15,6 +15,13 @@
|
|
||||||
model = "Helios4";
|
|
||||||
compatible = "kobol,helios4", "marvell,armada388",
|
|
||||||
"marvell,armada385", "marvell,armada380";
|
|
||||||
+
|
|
||||||
+ aliases {
|
|
||||||
+ led-boot = &led_status;
|
|
||||||
+ led-failsafe = &led_status;
|
|
||||||
+ led-running = &led_status;
|
|
||||||
+ led-upgrade = &led_status;
|
|
||||||
+ };
|
|
||||||
|
|
||||||
memory {
|
|
||||||
device_type = "memory";
|
|
||||||
@@ -73,10 +80,9 @@
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&helios_system_led_pins>;
|
|
||||||
|
|
||||||
- status-led {
|
|
||||||
+ led_status: status-led {
|
|
||||||
label = "helios4:green:status";
|
|
||||||
gpios = <&gpio0 24 GPIO_ACTIVE_LOW>;
|
|
||||||
- linux,default-trigger = "heartbeat";
|
|
||||||
default-state = "on";
|
|
||||||
};
|
|
||||||
|
|
|
@ -1,37 +0,0 @@
|
||||||
From 258233f00bcd013050efee00c5d9128ef8cd62dd Mon Sep 17 00:00:00 2001
|
|
||||||
From: Tad <tad@spotco.us>
|
|
||||||
Date: Fri, 5 Feb 2021 22:32:11 -0500
|
|
||||||
Subject: [PATCH] ARM: dts: armada-xp-linksys-mamba: Increase kernel
|
|
||||||
partition to 4MB
|
|
||||||
|
|
||||||
Signed-off-by: Tad Davanzo <tad@spotco.us>
|
|
||||||
---
|
|
||||||
arch/arm/boot/dts/armada-xp-linksys-mamba.dts | 8 ++++----
|
|
||||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
--- a/arch/arm/boot/dts/armada-xp-linksys-mamba.dts
|
|
||||||
+++ b/arch/arm/boot/dts/armada-xp-linksys-mamba.dts
|
|
||||||
@@ -456,9 +456,9 @@
|
|
||||||
reg = <0xa00000 0x2800000>; /* 40MB */
|
|
||||||
};
|
|
||||||
|
|
||||||
- partition@d00000 {
|
|
||||||
+ partition@e00000 {
|
|
||||||
label = "rootfs1";
|
|
||||||
- reg = <0xd00000 0x2500000>; /* 37MB */
|
|
||||||
+ reg = <0xe00000 0x2400000>; /* 36MB */
|
|
||||||
};
|
|
||||||
|
|
||||||
/* kernel2 overlaps with rootfs2 by design */
|
|
||||||
@@ -467,9 +467,9 @@
|
|
||||||
reg = <0x3200000 0x2800000>; /* 40MB */
|
|
||||||
};
|
|
||||||
|
|
||||||
- partition@3500000 {
|
|
||||||
+ partition@3600000 {
|
|
||||||
label = "rootfs2";
|
|
||||||
- reg = <0x3500000 0x2500000>; /* 37MB */
|
|
||||||
+ reg = <0x3600000 0x2400000>; /* 36MB */
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
|
@ -1,29 +0,0 @@
|
||||||
--- a/arch/arm/boot/dts/armada-370.dtsi
|
|
||||||
+++ b/arch/arm/boot/dts/armada-370.dtsi
|
|
||||||
@@ -234,7 +234,7 @@
|
|
||||||
clocks = <&gateclk 23>;
|
|
||||||
clock-names = "cesa0";
|
|
||||||
marvell,crypto-srams = <&crypto_sram>;
|
|
||||||
- marvell,crypto-sram-size = <0x7e0>;
|
|
||||||
+ marvell,crypto-sram-size = <0x800>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
@@ -255,12 +255,17 @@
|
|
||||||
* cpuidle workaround.
|
|
||||||
*/
|
|
||||||
idle-sram@0 {
|
|
||||||
+ status = "disabled";
|
|
||||||
reg = <0x0 0x20>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
+&coherencyfab {
|
|
||||||
+ broken-idle;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* Default UART pinctrl setting without RTS/CTS, can be overwritten on
|
|
||||||
* board level if a different configuration is used.
|
|
|
@ -1,60 +0,0 @@
|
||||||
The WRT1900AC among other Linksys routers uses a dual-firmware layout.
|
|
||||||
Dynamically rename the active partition to "ubi".
|
|
||||||
|
|
||||||
Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
|
|
||||||
|
|
||||||
--- a/drivers/mtd/parsers/ofpart_core.c
|
|
||||||
+++ b/drivers/mtd/parsers/ofpart_core.c
|
|
||||||
@@ -38,6 +38,8 @@ static bool node_has_compatible(struct d
|
|
||||||
return of_get_property(pp, "compatible", NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
+static int mangled_rootblock;
|
|
||||||
+
|
|
||||||
static int parse_fixed_partitions(struct mtd_info *master,
|
|
||||||
const struct mtd_partition **pparts,
|
|
||||||
struct mtd_part_parser_data *data)
|
|
||||||
@@ -48,6 +50,7 @@ static int parse_fixed_partitions(struct
|
|
||||||
struct device_node *mtd_node;
|
|
||||||
struct device_node *ofpart_node;
|
|
||||||
const char *partname;
|
|
||||||
+ const char *owrtpart = "ubi";
|
|
||||||
struct device_node *pp;
|
|
||||||
int nr_parts, i, ret = 0;
|
|
||||||
bool dedicated = true;
|
|
||||||
@@ -133,9 +136,13 @@ static int parse_fixed_partitions(struct
|
|
||||||
parts[i].size = of_read_number(reg + a_cells, s_cells);
|
|
||||||
parts[i].of_node = pp;
|
|
||||||
|
|
||||||
- partname = of_get_property(pp, "label", &len);
|
|
||||||
- if (!partname)
|
|
||||||
- partname = of_get_property(pp, "name", &len);
|
|
||||||
+ if (mangled_rootblock && (i == mangled_rootblock)) {
|
|
||||||
+ partname = owrtpart;
|
|
||||||
+ } else {
|
|
||||||
+ partname = of_get_property(pp, "label", &len);
|
|
||||||
+ if (!partname)
|
|
||||||
+ partname = of_get_property(pp, "name", &len);
|
|
||||||
+ }
|
|
||||||
parts[i].name = partname;
|
|
||||||
|
|
||||||
if (of_get_property(pp, "read-only", &len))
|
|
||||||
@@ -252,6 +259,18 @@ static int __init ofpart_parser_init(voi
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static int __init active_root(char *str)
|
|
||||||
+{
|
|
||||||
+ get_option(&str, &mangled_rootblock);
|
|
||||||
+
|
|
||||||
+ if (!mangled_rootblock)
|
|
||||||
+ return 1;
|
|
||||||
+
|
|
||||||
+ return 1;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+__setup("mangled_rootblock=", active_root);
|
|
||||||
+
|
|
||||||
static void __exit ofpart_parser_exit(void)
|
|
||||||
{
|
|
||||||
deregister_mtd_parser(&ofpart_parser);
|
|
|
@ -1,38 +0,0 @@
|
||||||
The hardware queue scheduling is apparently configured with fixed
|
|
||||||
priorities, which creates a nasty fairness issue where traffic from one
|
|
||||||
CPU can starve traffic from all other CPUs.
|
|
||||||
|
|
||||||
Work around this issue by forcing all tx packets to go through one CPU,
|
|
||||||
until this issue is fixed properly.
|
|
||||||
|
|
||||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|
||||||
---
|
|
||||||
--- a/drivers/net/ethernet/marvell/mvneta.c
|
|
||||||
+++ b/drivers/net/ethernet/marvell/mvneta.c
|
|
||||||
@@ -4987,6 +4987,16 @@ static int mvneta_setup_tc(struct net_de
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+#ifndef CONFIG_ARM64
|
|
||||||
+static u16 mvneta_select_queue(struct net_device *dev, struct sk_buff *skb,
|
|
||||||
+ struct net_device *sb_dev)
|
|
||||||
+{
|
|
||||||
+ /* XXX: hardware queue scheduling is broken,
|
|
||||||
+ * use only one queue until it is fixed */
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
static const struct net_device_ops mvneta_netdev_ops = {
|
|
||||||
.ndo_open = mvneta_open,
|
|
||||||
.ndo_stop = mvneta_stop,
|
|
||||||
@@ -4997,6 +5007,9 @@ static const struct net_device_ops mvnet
|
|
||||||
.ndo_fix_features = mvneta_fix_features,
|
|
||||||
.ndo_get_stats64 = mvneta_get_stats64,
|
|
||||||
.ndo_eth_ioctl = mvneta_ioctl,
|
|
||||||
+#ifndef CONFIG_ARM64
|
|
||||||
+ .ndo_select_queue = mvneta_select_queue,
|
|
||||||
+#endif
|
|
||||||
.ndo_bpf = mvneta_xdp,
|
|
||||||
.ndo_xdp_xmit = mvneta_xdp_xmit,
|
|
||||||
.ndo_setup_tc = mvneta_setup_tc,
|
|
|
@ -1,66 +0,0 @@
|
||||||
From 75fa71e3acadbb4ab5eda18505277eb9a1f69b23 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Maxime Chevallier <maxime.chevallier@bootlin.com>
|
|
||||||
Date: Fri, 26 Nov 2021 12:20:53 +0100
|
|
||||||
Subject: net: mvneta: Use struct tc_mqprio_qopt_offload for MQPrio
|
|
||||||
configuration
|
|
||||||
|
|
||||||
The struct tc_mqprio_qopt_offload is a container for struct tc_mqprio_qopt,
|
|
||||||
that allows passing extra parameters, such as traffic shaping. This commit
|
|
||||||
converts the current mqprio code to that new struct.
|
|
||||||
|
|
||||||
Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
|
|
||||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
||||||
---
|
|
||||||
drivers/net/ethernet/marvell/mvneta.c | 17 ++++++++++-------
|
|
||||||
1 file changed, 10 insertions(+), 7 deletions(-)
|
|
||||||
|
|
||||||
(limited to 'drivers/net/ethernet/marvell/mvneta.c')
|
|
||||||
|
|
||||||
--- a/drivers/net/ethernet/marvell/mvneta.c
|
|
||||||
+++ b/drivers/net/ethernet/marvell/mvneta.c
|
|
||||||
@@ -38,6 +38,7 @@
|
|
||||||
#include <net/ipv6.h>
|
|
||||||
#include <net/tso.h>
|
|
||||||
#include <net/page_pool.h>
|
|
||||||
+#include <net/pkt_cls.h>
|
|
||||||
#include <linux/bpf_trace.h>
|
|
||||||
|
|
||||||
/* Registers */
|
|
||||||
@@ -4947,14 +4948,14 @@ static void mvneta_setup_rx_prio_map(str
|
|
||||||
}
|
|
||||||
|
|
||||||
static int mvneta_setup_mqprio(struct net_device *dev,
|
|
||||||
- struct tc_mqprio_qopt *qopt)
|
|
||||||
+ struct tc_mqprio_qopt_offload *mqprio)
|
|
||||||
{
|
|
||||||
struct mvneta_port *pp = netdev_priv(dev);
|
|
||||||
u8 num_tc;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
- qopt->hw = TC_MQPRIO_HW_OFFLOAD_TCS;
|
|
||||||
- num_tc = qopt->num_tc;
|
|
||||||
+ mqprio->qopt.hw = TC_MQPRIO_HW_OFFLOAD_TCS;
|
|
||||||
+ num_tc = mqprio->qopt.num_tc;
|
|
||||||
|
|
||||||
if (num_tc > rxq_number)
|
|
||||||
return -EINVAL;
|
|
||||||
@@ -4965,13 +4966,15 @@ static int mvneta_setup_mqprio(struct ne
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
- memcpy(pp->prio_tc_map, qopt->prio_tc_map, sizeof(pp->prio_tc_map));
|
|
||||||
+ memcpy(pp->prio_tc_map, mqprio->qopt.prio_tc_map,
|
|
||||||
+ sizeof(pp->prio_tc_map));
|
|
||||||
|
|
||||||
mvneta_setup_rx_prio_map(pp);
|
|
||||||
|
|
||||||
- netdev_set_num_tc(dev, qopt->num_tc);
|
|
||||||
- for (i = 0; i < qopt->num_tc; i++)
|
|
||||||
- netdev_set_tc_queue(dev, i, qopt->count[i], qopt->offset[i]);
|
|
||||||
+ netdev_set_num_tc(dev, mqprio->qopt.num_tc);
|
|
||||||
+ for (i = 0; i < mqprio->qopt.num_tc; i++)
|
|
||||||
+ netdev_set_tc_queue(dev, i, mqprio->qopt.count[i],
|
|
||||||
+ mqprio->qopt.offset[i]);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
From e7ca75fe6662f78bfeb0112671c812e4c7b8e214 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Maxime Chevallier <maxime.chevallier@bootlin.com>
|
|
||||||
Date: Fri, 26 Nov 2021 12:20:54 +0100
|
|
||||||
Subject: net: mvneta: Don't force-set the offloading flag
|
|
||||||
|
|
||||||
The qopt->hw flag is set by the TC code according to the offloading mode
|
|
||||||
asked by user. Don't force-set it in the driver, but instead read it to
|
|
||||||
make sure we do what's asked.
|
|
||||||
|
|
||||||
Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
|
|
||||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
||||||
---
|
|
||||||
drivers/net/ethernet/marvell/mvneta.c | 4 +++-
|
|
||||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
(limited to 'drivers/net/ethernet/marvell/mvneta.c')
|
|
||||||
|
|
||||||
--- a/drivers/net/ethernet/marvell/mvneta.c
|
|
||||||
+++ b/drivers/net/ethernet/marvell/mvneta.c
|
|
||||||
@@ -4954,7 +4954,9 @@ static int mvneta_setup_mqprio(struct ne
|
|
||||||
u8 num_tc;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
- mqprio->qopt.hw = TC_MQPRIO_HW_OFFLOAD_TCS;
|
|
||||||
+ if (mqprio->qopt.hw != TC_MQPRIO_HW_OFFLOAD_TCS)
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
num_tc = mqprio->qopt.num_tc;
|
|
||||||
|
|
||||||
if (num_tc > rxq_number)
|
|
|
@ -1,97 +0,0 @@
|
||||||
From e9f7099d0730341b24c057acbf545dd019581db6 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Maxime Chevallier <maxime.chevallier@bootlin.com>
|
|
||||||
Date: Fri, 26 Nov 2021 12:20:55 +0100
|
|
||||||
Subject: net: mvneta: Allow having more than one queue per TC
|
|
||||||
|
|
||||||
The current mqprio implementation assumed that we are only using one
|
|
||||||
queue per TC. Use the offset and count parameters to allow using
|
|
||||||
multiple queues per TC. In that case, the controller will use a standard
|
|
||||||
round-robin algorithm to pick queues assigned to the same TC, with the
|
|
||||||
same priority.
|
|
||||||
|
|
||||||
This only applies to VLAN priorities in ingress traffic, each TC
|
|
||||||
corresponding to a vlan priority.
|
|
||||||
|
|
||||||
Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
|
|
||||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
||||||
---
|
|
||||||
drivers/net/ethernet/marvell/mvneta.c | 35 ++++++++++++++++++++---------------
|
|
||||||
1 file changed, 20 insertions(+), 15 deletions(-)
|
|
||||||
|
|
||||||
(limited to 'drivers/net/ethernet/marvell/mvneta.c')
|
|
||||||
|
|
||||||
--- a/drivers/net/ethernet/marvell/mvneta.c
|
|
||||||
+++ b/drivers/net/ethernet/marvell/mvneta.c
|
|
||||||
@@ -493,7 +493,6 @@ struct mvneta_port {
|
|
||||||
u8 mcast_count[256];
|
|
||||||
u16 tx_ring_size;
|
|
||||||
u16 rx_ring_size;
|
|
||||||
- u8 prio_tc_map[8];
|
|
||||||
|
|
||||||
phy_interface_t phy_interface;
|
|
||||||
struct device_node *dn;
|
|
||||||
@@ -4936,13 +4935,12 @@ static void mvneta_clear_rx_prio_map(str
|
|
||||||
mvreg_write(pp, MVNETA_VLAN_PRIO_TO_RXQ, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
-static void mvneta_setup_rx_prio_map(struct mvneta_port *pp)
|
|
||||||
+static void mvneta_map_vlan_prio_to_rxq(struct mvneta_port *pp, u8 pri, u8 rxq)
|
|
||||||
{
|
|
||||||
- u32 val = 0;
|
|
||||||
- int i;
|
|
||||||
+ u32 val = mvreg_read(pp, MVNETA_VLAN_PRIO_TO_RXQ);
|
|
||||||
|
|
||||||
- for (i = 0; i < rxq_number; i++)
|
|
||||||
- val |= MVNETA_VLAN_PRIO_RXQ_MAP(i, pp->prio_tc_map[i]);
|
|
||||||
+ val &= ~MVNETA_VLAN_PRIO_RXQ_MAP(pri, 0x7);
|
|
||||||
+ val |= MVNETA_VLAN_PRIO_RXQ_MAP(pri, rxq);
|
|
||||||
|
|
||||||
mvreg_write(pp, MVNETA_VLAN_PRIO_TO_RXQ, val);
|
|
||||||
}
|
|
||||||
@@ -4951,8 +4949,8 @@ static int mvneta_setup_mqprio(struct ne
|
|
||||||
struct tc_mqprio_qopt_offload *mqprio)
|
|
||||||
{
|
|
||||||
struct mvneta_port *pp = netdev_priv(dev);
|
|
||||||
+ int rxq, tc;
|
|
||||||
u8 num_tc;
|
|
||||||
- int i;
|
|
||||||
|
|
||||||
if (mqprio->qopt.hw != TC_MQPRIO_HW_OFFLOAD_TCS)
|
|
||||||
return 0;
|
|
||||||
@@ -4962,21 +4960,28 @@ static int mvneta_setup_mqprio(struct ne
|
|
||||||
if (num_tc > rxq_number)
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
+ mvneta_clear_rx_prio_map(pp);
|
|
||||||
+
|
|
||||||
if (!num_tc) {
|
|
||||||
- mvneta_clear_rx_prio_map(pp);
|
|
||||||
netdev_reset_tc(dev);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
- memcpy(pp->prio_tc_map, mqprio->qopt.prio_tc_map,
|
|
||||||
- sizeof(pp->prio_tc_map));
|
|
||||||
+ netdev_set_num_tc(dev, mqprio->qopt.num_tc);
|
|
||||||
|
|
||||||
- mvneta_setup_rx_prio_map(pp);
|
|
||||||
+ for (tc = 0; tc < mqprio->qopt.num_tc; tc++) {
|
|
||||||
+ netdev_set_tc_queue(dev, tc, mqprio->qopt.count[tc],
|
|
||||||
+ mqprio->qopt.offset[tc]);
|
|
||||||
+
|
|
||||||
+ for (rxq = mqprio->qopt.offset[tc];
|
|
||||||
+ rxq < mqprio->qopt.count[tc] + mqprio->qopt.offset[tc];
|
|
||||||
+ rxq++) {
|
|
||||||
+ if (rxq >= rxq_number)
|
|
||||||
+ return -EINVAL;
|
|
||||||
|
|
||||||
- netdev_set_num_tc(dev, mqprio->qopt.num_tc);
|
|
||||||
- for (i = 0; i < mqprio->qopt.num_tc; i++)
|
|
||||||
- netdev_set_tc_queue(dev, i, mqprio->qopt.count[i],
|
|
||||||
- mqprio->qopt.offset[i]);
|
|
||||||
+ mvneta_map_vlan_prio_to_rxq(pp, tc, rxq);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,182 +0,0 @@
|
||||||
From 2551dc9e398c37a15e52122d385c29a8b06be45f Mon Sep 17 00:00:00 2001
|
|
||||||
From: Maxime Chevallier <maxime.chevallier@bootlin.com>
|
|
||||||
Date: Fri, 26 Nov 2021 12:20:56 +0100
|
|
||||||
Subject: net: mvneta: Add TC traffic shaping offload
|
|
||||||
|
|
||||||
The mvneta controller is able to do some tocken-bucket per-queue traffic
|
|
||||||
shaping. This commit adds support for setting these using the TC mqprio
|
|
||||||
interface.
|
|
||||||
|
|
||||||
The token-bucket parameters are customisable, but the current
|
|
||||||
implementation configures them to have a 10kbps resolution for the
|
|
||||||
rate limitation, since it allows to cover the whole range of max_rate
|
|
||||||
values from 10kbps to 5Gbps with 10kbps increments.
|
|
||||||
|
|
||||||
Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
|
|
||||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
||||||
---
|
|
||||||
drivers/net/ethernet/marvell/mvneta.c | 120 +++++++++++++++++++++++++++++++++-
|
|
||||||
1 file changed, 119 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
(limited to 'drivers/net/ethernet/marvell/mvneta.c')
|
|
||||||
|
|
||||||
--- a/drivers/net/ethernet/marvell/mvneta.c
|
|
||||||
+++ b/drivers/net/ethernet/marvell/mvneta.c
|
|
||||||
@@ -248,12 +248,39 @@
|
|
||||||
#define MVNETA_TXQ_SENT_DESC_MASK 0x3fff0000
|
|
||||||
#define MVNETA_PORT_TX_RESET 0x3cf0
|
|
||||||
#define MVNETA_PORT_TX_DMA_RESET BIT(0)
|
|
||||||
+#define MVNETA_TXQ_CMD1_REG 0x3e00
|
|
||||||
+#define MVNETA_TXQ_CMD1_BW_LIM_SEL_V1 BIT(3)
|
|
||||||
+#define MVNETA_TXQ_CMD1_BW_LIM_EN BIT(0)
|
|
||||||
+#define MVNETA_REFILL_NUM_CLK_REG 0x3e08
|
|
||||||
+#define MVNETA_REFILL_MAX_NUM_CLK 0x0000ffff
|
|
||||||
#define MVNETA_TX_MTU 0x3e0c
|
|
||||||
#define MVNETA_TX_TOKEN_SIZE 0x3e14
|
|
||||||
#define MVNETA_TX_TOKEN_SIZE_MAX 0xffffffff
|
|
||||||
+#define MVNETA_TXQ_BUCKET_REFILL_REG(q) (0x3e20 + ((q) << 2))
|
|
||||||
+#define MVNETA_TXQ_BUCKET_REFILL_PERIOD_MASK 0x3ff00000
|
|
||||||
+#define MVNETA_TXQ_BUCKET_REFILL_PERIOD_SHIFT 20
|
|
||||||
+#define MVNETA_TXQ_BUCKET_REFILL_VALUE_MAX 0x0007ffff
|
|
||||||
#define MVNETA_TXQ_TOKEN_SIZE_REG(q) (0x3e40 + ((q) << 2))
|
|
||||||
#define MVNETA_TXQ_TOKEN_SIZE_MAX 0x7fffffff
|
|
||||||
|
|
||||||
+/* The values of the bucket refill base period and refill period are taken from
|
|
||||||
+ * the reference manual, and adds up to a base resolution of 10Kbps. This allows
|
|
||||||
+ * to cover all rate-limit values from 10Kbps up to 5Gbps
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+/* Base period for the rate limit algorithm */
|
|
||||||
+#define MVNETA_TXQ_BUCKET_REFILL_BASE_PERIOD_NS 100
|
|
||||||
+
|
|
||||||
+/* Number of Base Period to wait between each bucket refill */
|
|
||||||
+#define MVNETA_TXQ_BUCKET_REFILL_PERIOD 1000
|
|
||||||
+
|
|
||||||
+/* The base resolution for rate limiting, in bps. Any max_rate value should be
|
|
||||||
+ * a multiple of that value.
|
|
||||||
+ */
|
|
||||||
+#define MVNETA_TXQ_RATE_LIMIT_RESOLUTION (NSEC_PER_SEC / \
|
|
||||||
+ (MVNETA_TXQ_BUCKET_REFILL_BASE_PERIOD_NS * \
|
|
||||||
+ MVNETA_TXQ_BUCKET_REFILL_PERIOD))
|
|
||||||
+
|
|
||||||
#define MVNETA_LPI_CTRL_0 0x2cc0
|
|
||||||
#define MVNETA_LPI_CTRL_1 0x2cc4
|
|
||||||
#define MVNETA_LPI_REQUEST_ENABLE BIT(0)
|
|
||||||
@@ -4945,11 +4972,74 @@ static void mvneta_map_vlan_prio_to_rxq(
|
|
||||||
mvreg_write(pp, MVNETA_VLAN_PRIO_TO_RXQ, val);
|
|
||||||
}
|
|
||||||
|
|
||||||
+static int mvneta_enable_per_queue_rate_limit(struct mvneta_port *pp)
|
|
||||||
+{
|
|
||||||
+ unsigned long core_clk_rate;
|
|
||||||
+ u32 refill_cycles;
|
|
||||||
+ u32 val;
|
|
||||||
+
|
|
||||||
+ core_clk_rate = clk_get_rate(pp->clk);
|
|
||||||
+ if (!core_clk_rate)
|
|
||||||
+ return -EINVAL;
|
|
||||||
+
|
|
||||||
+ refill_cycles = MVNETA_TXQ_BUCKET_REFILL_BASE_PERIOD_NS /
|
|
||||||
+ (NSEC_PER_SEC / core_clk_rate);
|
|
||||||
+
|
|
||||||
+ if (refill_cycles > MVNETA_REFILL_MAX_NUM_CLK)
|
|
||||||
+ return -EINVAL;
|
|
||||||
+
|
|
||||||
+ /* Enable bw limit algorithm version 3 */
|
|
||||||
+ val = mvreg_read(pp, MVNETA_TXQ_CMD1_REG);
|
|
||||||
+ val &= ~(MVNETA_TXQ_CMD1_BW_LIM_SEL_V1 | MVNETA_TXQ_CMD1_BW_LIM_EN);
|
|
||||||
+ mvreg_write(pp, MVNETA_TXQ_CMD1_REG, val);
|
|
||||||
+
|
|
||||||
+ /* Set the base refill rate */
|
|
||||||
+ mvreg_write(pp, MVNETA_REFILL_NUM_CLK_REG, refill_cycles);
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void mvneta_disable_per_queue_rate_limit(struct mvneta_port *pp)
|
|
||||||
+{
|
|
||||||
+ u32 val = mvreg_read(pp, MVNETA_TXQ_CMD1_REG);
|
|
||||||
+
|
|
||||||
+ val |= (MVNETA_TXQ_CMD1_BW_LIM_SEL_V1 | MVNETA_TXQ_CMD1_BW_LIM_EN);
|
|
||||||
+ mvreg_write(pp, MVNETA_TXQ_CMD1_REG, val);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int mvneta_setup_queue_rates(struct mvneta_port *pp, int queue,
|
|
||||||
+ u64 min_rate, u64 max_rate)
|
|
||||||
+{
|
|
||||||
+ u32 refill_val, rem;
|
|
||||||
+ u32 val = 0;
|
|
||||||
+
|
|
||||||
+ /* Convert to from Bps to bps */
|
|
||||||
+ max_rate *= 8;
|
|
||||||
+
|
|
||||||
+ if (min_rate)
|
|
||||||
+ return -EINVAL;
|
|
||||||
+
|
|
||||||
+ refill_val = div_u64_rem(max_rate, MVNETA_TXQ_RATE_LIMIT_RESOLUTION,
|
|
||||||
+ &rem);
|
|
||||||
+
|
|
||||||
+ if (rem || !refill_val ||
|
|
||||||
+ refill_val > MVNETA_TXQ_BUCKET_REFILL_VALUE_MAX)
|
|
||||||
+ return -EINVAL;
|
|
||||||
+
|
|
||||||
+ val = refill_val;
|
|
||||||
+ val |= (MVNETA_TXQ_BUCKET_REFILL_PERIOD <<
|
|
||||||
+ MVNETA_TXQ_BUCKET_REFILL_PERIOD_SHIFT);
|
|
||||||
+
|
|
||||||
+ mvreg_write(pp, MVNETA_TXQ_BUCKET_REFILL_REG(queue), val);
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static int mvneta_setup_mqprio(struct net_device *dev,
|
|
||||||
struct tc_mqprio_qopt_offload *mqprio)
|
|
||||||
{
|
|
||||||
struct mvneta_port *pp = netdev_priv(dev);
|
|
||||||
- int rxq, tc;
|
|
||||||
+ int rxq, txq, tc, ret;
|
|
||||||
u8 num_tc;
|
|
||||||
|
|
||||||
if (mqprio->qopt.hw != TC_MQPRIO_HW_OFFLOAD_TCS)
|
|
||||||
@@ -4963,6 +5053,7 @@ static int mvneta_setup_mqprio(struct ne
|
|
||||||
mvneta_clear_rx_prio_map(pp);
|
|
||||||
|
|
||||||
if (!num_tc) {
|
|
||||||
+ mvneta_disable_per_queue_rate_limit(pp);
|
|
||||||
netdev_reset_tc(dev);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
@@ -4983,6 +5074,33 @@ static int mvneta_setup_mqprio(struct ne
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (mqprio->shaper != TC_MQPRIO_SHAPER_BW_RATE) {
|
|
||||||
+ mvneta_disable_per_queue_rate_limit(pp);
|
|
||||||
+ return 0;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (mqprio->qopt.num_tc > txq_number)
|
|
||||||
+ return -EINVAL;
|
|
||||||
+
|
|
||||||
+ ret = mvneta_enable_per_queue_rate_limit(pp);
|
|
||||||
+ if (ret)
|
|
||||||
+ return ret;
|
|
||||||
+
|
|
||||||
+ for (tc = 0; tc < mqprio->qopt.num_tc; tc++) {
|
|
||||||
+ for (txq = mqprio->qopt.offset[tc];
|
|
||||||
+ txq < mqprio->qopt.count[tc] + mqprio->qopt.offset[tc];
|
|
||||||
+ txq++) {
|
|
||||||
+ if (txq >= txq_number)
|
|
||||||
+ return -EINVAL;
|
|
||||||
+
|
|
||||||
+ ret = mvneta_setup_queue_rates(pp, txq,
|
|
||||||
+ mqprio->min_rate[tc],
|
|
||||||
+ mqprio->max_rate[tc]);
|
|
||||||
+ if (ret)
|
|
||||||
+ return ret;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,40 +0,0 @@
|
||||||
From c28b2d367da8a471482e6a4aa8337ab6369a80c2 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Russell King <rmk+kernel@arm.linux.org.uk>
|
|
||||||
Date: Sat, 3 Oct 2015 09:13:05 +0100
|
|
||||||
Subject: cpuidle: mvebu: indicate failure to enter deeper sleep states
|
|
||||||
|
|
||||||
The cpuidle ->enter method expects the return value to be the sleep
|
|
||||||
state we entered. Returning negative numbers or other codes is not
|
|
||||||
permissible since coupled CPU idle was merged.
|
|
||||||
|
|
||||||
At least some of the mvebu_v7_cpu_suspend() implementations return the
|
|
||||||
value from cpu_suspend(), which returns zero if the CPU vectors back
|
|
||||||
into the kernel via cpu_resume() (the success case), or the non-zero
|
|
||||||
return value of the suspend actor, or one (failure cases).
|
|
||||||
|
|
||||||
We do not want to be returning the failure case value back to CPU idle
|
|
||||||
as that indicates that we successfully entered one of the deeper idle
|
|
||||||
states. Always return zero instead, indicating that we slept for the
|
|
||||||
shortest amount of time.
|
|
||||||
|
|
||||||
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
|
||||||
---
|
|
||||||
drivers/cpuidle/cpuidle-mvebu-v7.c | 6 +++++-
|
|
||||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
--- a/drivers/cpuidle/cpuidle-mvebu-v7.c
|
|
||||||
+++ b/drivers/cpuidle/cpuidle-mvebu-v7.c
|
|
||||||
@@ -39,8 +39,12 @@ static int mvebu_v7_enter_idle(struct cp
|
|
||||||
ret = mvebu_v7_cpu_suspend(deepidle);
|
|
||||||
cpu_pm_exit();
|
|
||||||
|
|
||||||
+ /*
|
|
||||||
+ * If we failed to enter the desired state, indicate that we
|
|
||||||
+ * slept lightly.
|
|
||||||
+ */
|
|
||||||
if (ret)
|
|
||||||
- return ret;
|
|
||||||
+ return 0;
|
|
||||||
|
|
||||||
return index;
|
|
||||||
}
|
|
|
@ -1,60 +0,0 @@
|
||||||
From 287b9df160b6159f8d385424904f8bac501280c1 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Russell King <rmk+kernel@armlinux.org.uk>
|
|
||||||
Date: Sat, 9 Jul 2016 10:58:16 +0100
|
|
||||||
Subject: pci: mvebu: time out reset on link up
|
|
||||||
|
|
||||||
If the port reports that the link is up while we are resetting, there's
|
|
||||||
little point in waiting for the full duration.
|
|
||||||
|
|
||||||
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
|
||||||
---
|
|
||||||
drivers/pci/controller/pci-mvebu.c | 20 ++++++++++++++------
|
|
||||||
1 file changed, 14 insertions(+), 6 deletions(-)
|
|
||||||
|
|
||||||
--- a/drivers/pci/controller/pci-mvebu.c
|
|
||||||
+++ b/drivers/pci/controller/pci-mvebu.c
|
|
||||||
@@ -1023,6 +1023,7 @@ static int mvebu_pcie_powerup(struct mve
|
|
||||||
|
|
||||||
if (port->reset_gpio) {
|
|
||||||
u32 reset_udelay = PCI_PM_D3COLD_WAIT * 1000;
|
|
||||||
+ unsigned int i;
|
|
||||||
|
|
||||||
of_property_read_u32(port->dn, "reset-delay-us",
|
|
||||||
&reset_udelay);
|
|
||||||
@@ -1030,7 +1031,13 @@ static int mvebu_pcie_powerup(struct mve
|
|
||||||
udelay(100);
|
|
||||||
|
|
||||||
gpiod_set_value_cansleep(port->reset_gpio, 0);
|
|
||||||
- msleep(reset_udelay / 1000);
|
|
||||||
+ for (i = 0; i < reset_udelay; i += 1000) {
|
|
||||||
+ if (mvebu_pcie_link_up(port))
|
|
||||||
+ break;
|
|
||||||
+ msleep(1);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ printk("%s: reset completed in %dus\n", port->name, i);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
@@ -1190,15 +1197,16 @@ static int mvebu_pcie_probe(struct platf
|
|
||||||
if (!child)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
- ret = mvebu_pcie_powerup(port);
|
|
||||||
- if (ret < 0)
|
|
||||||
- continue;
|
|
||||||
-
|
|
||||||
port->base = mvebu_pcie_map_registers(pdev, child, port);
|
|
||||||
if (IS_ERR(port->base)) {
|
|
||||||
dev_err(dev, "%s: cannot map registers\n", port->name);
|
|
||||||
port->base = NULL;
|
|
||||||
- mvebu_pcie_powerdown(port);
|
|
||||||
+ continue;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ ret = mvebu_pcie_powerup(port);
|
|
||||||
+ if (ret < 0) {
|
|
||||||
+ port->base = NULL;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,218 +0,0 @@
|
||||||
From aa4a0ccc41997f2da172165c92803abace43bd1c Mon Sep 17 00:00:00 2001
|
|
||||||
From: Luka Kovacic <luka.kovacic () sartura ! hr>
|
|
||||||
Date: Tue, 24 Aug 2021 12:44:32 +0000
|
|
||||||
Subject: [PATCH 1/7] dt-bindings: Add IEI vendor prefix and IEI WT61P803
|
|
||||||
PUZZLE driver bindings
|
|
||||||
|
|
||||||
Add the IEI WT61P803 PUZZLE Device Tree bindings for MFD, HWMON and LED
|
|
||||||
drivers. A new vendor prefix is also added accordingly for
|
|
||||||
IEI Integration Corp.
|
|
||||||
|
|
||||||
Signed-off-by: Luka Kovacic <luka.kovacic@sartura.hr>
|
|
||||||
Signed-off-by: Pavo Banicevic <pavo.banicevic@sartura.hr>
|
|
||||||
Cc: Luka Perkov <luka.perkov@sartura.hr>
|
|
||||||
Cc: Robert Marko <robert.marko@sartura.hr>
|
|
||||||
---
|
|
||||||
.../hwmon/iei,wt61p803-puzzle-hwmon.yaml | 53 ++++++++++++
|
|
||||||
.../leds/iei,wt61p803-puzzle-leds.yaml | 39 +++++++++
|
|
||||||
.../bindings/mfd/iei,wt61p803-puzzle.yaml | 82 +++++++++++++++++++
|
|
||||||
.../devicetree/bindings/vendor-prefixes.yaml | 2 +
|
|
||||||
4 files changed, 176 insertions(+)
|
|
||||||
create mode 100644 Documentation/devicetree/bindings/hwmon/iei,wt61p803-puzzle-hwmon.yaml
|
|
||||||
create mode 100644 Documentation/devicetree/bindings/leds/iei,wt61p803-puzzle-leds.yaml
|
|
||||||
create mode 100644 Documentation/devicetree/bindings/mfd/iei,wt61p803-puzzle.yaml
|
|
||||||
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/Documentation/devicetree/bindings/hwmon/iei,wt61p803-puzzle-hwmon.yaml
|
|
||||||
@@ -0,0 +1,53 @@
|
|
||||||
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
|
||||||
+%YAML 1.2
|
|
||||||
+---
|
|
||||||
+$id: http://devicetree.org/schemas/hwmon/iei,wt61p803-puzzle-hwmon.yaml#
|
|
||||||
+$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
||||||
+
|
|
||||||
+title: IEI WT61P803 PUZZLE MCU HWMON module from IEI Integration Corp.
|
|
||||||
+
|
|
||||||
+maintainers:
|
|
||||||
+ - Luka Kovacic <luka.kovacic@sartura.hr>
|
|
||||||
+
|
|
||||||
+description: |
|
|
||||||
+ This module is a part of the IEI WT61P803 PUZZLE MFD device. For more details
|
|
||||||
+ see Documentation/devicetree/bindings/mfd/iei,wt61p803-puzzle.yaml.
|
|
||||||
+
|
|
||||||
+ The HWMON module is a sub-node of the MCU node in the Device Tree.
|
|
||||||
+
|
|
||||||
+properties:
|
|
||||||
+ compatible:
|
|
||||||
+ const: iei,wt61p803-puzzle-hwmon
|
|
||||||
+
|
|
||||||
+ "#address-cells":
|
|
||||||
+ const: 1
|
|
||||||
+
|
|
||||||
+ "#size-cells":
|
|
||||||
+ const: 0
|
|
||||||
+
|
|
||||||
+patternProperties:
|
|
||||||
+ "^fan-group@[0-1]$":
|
|
||||||
+ type: object
|
|
||||||
+ properties:
|
|
||||||
+ reg:
|
|
||||||
+ minimum: 0
|
|
||||||
+ maximum: 1
|
|
||||||
+ description:
|
|
||||||
+ Fan group ID
|
|
||||||
+
|
|
||||||
+ cooling-levels:
|
|
||||||
+ minItems: 1
|
|
||||||
+ maxItems: 255
|
|
||||||
+ description:
|
|
||||||
+ Cooling levels for the fans (PWM value mapping)
|
|
||||||
+ description: |
|
|
||||||
+ Properties for each fan group.
|
|
||||||
+ required:
|
|
||||||
+ - reg
|
|
||||||
+
|
|
||||||
+required:
|
|
||||||
+ - compatible
|
|
||||||
+ - "#address-cells"
|
|
||||||
+ - "#size-cells"
|
|
||||||
+
|
|
||||||
+additionalProperties: false
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/Documentation/devicetree/bindings/leds/iei,wt61p803-puzzle-leds.yaml
|
|
||||||
@@ -0,0 +1,39 @@
|
|
||||||
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
|
||||||
+%YAML 1.2
|
|
||||||
+---
|
|
||||||
+$id: http://devicetree.org/schemas/leds/iei,wt61p803-puzzle-leds.yaml#
|
|
||||||
+$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
||||||
+
|
|
||||||
+title: IEI WT61P803 PUZZLE MCU LED module from IEI Integration Corp.
|
|
||||||
+
|
|
||||||
+maintainers:
|
|
||||||
+ - Luka Kovacic <luka.kovacic@sartura.hr>
|
|
||||||
+
|
|
||||||
+description: |
|
|
||||||
+ This module is a part of the IEI WT61P803 PUZZLE MFD device. For more details
|
|
||||||
+ see Documentation/devicetree/bindings/mfd/iei,wt61p803-puzzle.yaml.
|
|
||||||
+
|
|
||||||
+ The LED module is a sub-node of the MCU node in the Device Tree.
|
|
||||||
+
|
|
||||||
+properties:
|
|
||||||
+ compatible:
|
|
||||||
+ const: iei,wt61p803-puzzle-leds
|
|
||||||
+
|
|
||||||
+ "#address-cells":
|
|
||||||
+ const: 1
|
|
||||||
+
|
|
||||||
+ "#size-cells":
|
|
||||||
+ const: 0
|
|
||||||
+
|
|
||||||
+ led@0:
|
|
||||||
+ type: object
|
|
||||||
+ $ref: common.yaml
|
|
||||||
+ description: |
|
|
||||||
+ Properties for a single LED.
|
|
||||||
+
|
|
||||||
+required:
|
|
||||||
+ - compatible
|
|
||||||
+ - "#address-cells"
|
|
||||||
+ - "#size-cells"
|
|
||||||
+
|
|
||||||
+additionalProperties: false
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/Documentation/devicetree/bindings/mfd/iei,wt61p803-puzzle.yaml
|
|
||||||
@@ -0,0 +1,82 @@
|
|
||||||
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
|
||||||
+%YAML 1.2
|
|
||||||
+---
|
|
||||||
+$id: http://devicetree.org/schemas/mfd/iei,wt61p803-puzzle.yaml#
|
|
||||||
+$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
||||||
+
|
|
||||||
+title: IEI WT61P803 PUZZLE MCU from IEI Integration Corp.
|
|
||||||
+
|
|
||||||
+maintainers:
|
|
||||||
+ - Luka Kovacic <luka.kovacic@sartura.hr>
|
|
||||||
+
|
|
||||||
+description: |
|
|
||||||
+ IEI WT61P803 PUZZLE MCU is embedded in some IEI Puzzle series boards.
|
|
||||||
+ It's used for controlling system power states, fans, LEDs and temperature
|
|
||||||
+ sensors.
|
|
||||||
+
|
|
||||||
+ For Device Tree bindings of other sub-modules (HWMON, LEDs) refer to the
|
|
||||||
+ binding documents under the respective subsystem directories.
|
|
||||||
+
|
|
||||||
+properties:
|
|
||||||
+ compatible:
|
|
||||||
+ const: iei,wt61p803-puzzle
|
|
||||||
+
|
|
||||||
+ current-speed:
|
|
||||||
+ description:
|
|
||||||
+ Serial bus speed in bps
|
|
||||||
+ maxItems: 1
|
|
||||||
+
|
|
||||||
+ enable-beep: true
|
|
||||||
+
|
|
||||||
+ hwmon:
|
|
||||||
+ $ref: /schemas/hwmon/iei,wt61p803-puzzle-hwmon.yaml
|
|
||||||
+
|
|
||||||
+ leds:
|
|
||||||
+ $ref: /schemas/leds/iei,wt61p803-puzzle-leds.yaml
|
|
||||||
+
|
|
||||||
+required:
|
|
||||||
+ - compatible
|
|
||||||
+ - current-speed
|
|
||||||
+
|
|
||||||
+additionalProperties: false
|
|
||||||
+
|
|
||||||
+examples:
|
|
||||||
+ - |
|
|
||||||
+ #include <dt-bindings/leds/common.h>
|
|
||||||
+ serial {
|
|
||||||
+ mcu {
|
|
||||||
+ compatible = "iei,wt61p803-puzzle";
|
|
||||||
+ current-speed = <115200>;
|
|
||||||
+ enable-beep;
|
|
||||||
+
|
|
||||||
+ leds {
|
|
||||||
+ compatible = "iei,wt61p803-puzzle-leds";
|
|
||||||
+ #address-cells = <1>;
|
|
||||||
+ #size-cells = <0>;
|
|
||||||
+
|
|
||||||
+ led@0 {
|
|
||||||
+ reg = <0>;
|
|
||||||
+ function = LED_FUNCTION_POWER;
|
|
||||||
+ color = <LED_COLOR_ID_BLUE>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ hwmon {
|
|
||||||
+ compatible = "iei,wt61p803-puzzle-hwmon";
|
|
||||||
+ #address-cells = <1>;
|
|
||||||
+ #size-cells = <0>;
|
|
||||||
+
|
|
||||||
+ fan-group@0 {
|
|
||||||
+ #cooling-cells = <2>;
|
|
||||||
+ reg = <0x00>;
|
|
||||||
+ cooling-levels = <64 102 170 230 250>;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ fan-group@1 {
|
|
||||||
+ #cooling-cells = <2>;
|
|
||||||
+ reg = <0x01>;
|
|
||||||
+ cooling-levels = <64 102 170 230 250>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
--- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
|
|
||||||
+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
|
|
||||||
@@ -519,6 +519,8 @@ patternProperties:
|
|
||||||
description: IC Plus Corp.
|
|
||||||
"^idt,.*":
|
|
||||||
description: Integrated Device Technologies, Inc.
|
|
||||||
+ "^iei,.*":
|
|
||||||
+ description: IEI Integration Corp.
|
|
||||||
"^ifi,.*":
|
|
||||||
description: Ingenieurburo Fur Ic-Technologie (I/F/I)
|
|
||||||
"^ilitek,.*":
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,469 +0,0 @@
|
||||||
From e3310a638cd310bfd93dbbc6d2732ab6aea18dd2 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Luka Kovacic <luka.kovacic () sartura ! hr>
|
|
||||||
Date: Tue, 24 Aug 2021 12:44:34 +0000
|
|
||||||
Subject: [PATCH 3/7] drivers: hwmon: Add the IEI WT61P803 PUZZLE HWMON driver
|
|
||||||
|
|
||||||
Add the IEI WT61P803 PUZZLE HWMON driver, that handles the fan speed
|
|
||||||
control via PWM, reading fan speed and reading on-board temperature
|
|
||||||
sensors.
|
|
||||||
|
|
||||||
The driver registers a HWMON device and a simple thermal cooling device to
|
|
||||||
enable in-kernel fan management.
|
|
||||||
|
|
||||||
This driver depends on the IEI WT61P803 PUZZLE MFD driver.
|
|
||||||
|
|
||||||
Signed-off-by: Luka Kovacic <luka.kovacic@sartura.hr>
|
|
||||||
Signed-off-by: Pavo Banicevic <pavo.banicevic@sartura.hr>
|
|
||||||
Acked-by: Guenter Roeck <linux@roeck-us.net>
|
|
||||||
Cc: Luka Perkov <luka.perkov@sartura.hr>
|
|
||||||
Cc: Robert Marko <robert.marko@sartura.hr>
|
|
||||||
---
|
|
||||||
drivers/hwmon/Kconfig | 8 +
|
|
||||||
drivers/hwmon/Makefile | 1 +
|
|
||||||
drivers/hwmon/iei-wt61p803-puzzle-hwmon.c | 413 ++++++++++++++++++++++
|
|
||||||
3 files changed, 422 insertions(+)
|
|
||||||
create mode 100644 drivers/hwmon/iei-wt61p803-puzzle-hwmon.c
|
|
||||||
|
|
||||||
--- a/drivers/hwmon/Kconfig
|
|
||||||
+++ b/drivers/hwmon/Kconfig
|
|
||||||
@@ -732,6 +732,14 @@ config SENSORS_IBMPOWERNV
|
|
||||||
This driver can also be built as a module. If so, the module
|
|
||||||
will be called ibmpowernv.
|
|
||||||
|
|
||||||
+config SENSORS_IEI_WT61P803_PUZZLE_HWMON
|
|
||||||
+ tristate "IEI WT61P803 PUZZLE MFD HWMON Driver"
|
|
||||||
+ depends on MFD_IEI_WT61P803_PUZZLE
|
|
||||||
+ help
|
|
||||||
+ The IEI WT61P803 PUZZLE MFD HWMON Driver handles reading fan speed
|
|
||||||
+ and writing fan PWM values. It also supports reading on-board
|
|
||||||
+ temperature sensors.
|
|
||||||
+
|
|
||||||
config SENSORS_IIO_HWMON
|
|
||||||
tristate "Hwmon driver that uses channels specified via iio maps"
|
|
||||||
depends on IIO
|
|
||||||
--- a/drivers/hwmon/Makefile
|
|
||||||
+++ b/drivers/hwmon/Makefile
|
|
||||||
@@ -84,6 +84,7 @@ obj-$(CONFIG_SENSORS_HIH6130) += hih6130
|
|
||||||
obj-$(CONFIG_SENSORS_ULTRA45) += ultra45_env.o
|
|
||||||
obj-$(CONFIG_SENSORS_I5500) += i5500_temp.o
|
|
||||||
obj-$(CONFIG_SENSORS_I5K_AMB) += i5k_amb.o
|
|
||||||
+obj-$(CONFIG_SENSORS_IEI_WT61P803_PUZZLE_HWMON) += iei-wt61p803-puzzle-hwmon.o
|
|
||||||
obj-$(CONFIG_SENSORS_IBMAEM) += ibmaem.o
|
|
||||||
obj-$(CONFIG_SENSORS_IBMPEX) += ibmpex.o
|
|
||||||
obj-$(CONFIG_SENSORS_IBMPOWERNV)+= ibmpowernv.o
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/drivers/hwmon/iei-wt61p803-puzzle-hwmon.c
|
|
||||||
@@ -0,0 +1,413 @@
|
|
||||||
+// SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
+/* IEI WT61P803 PUZZLE MCU HWMON Driver
|
|
||||||
+ *
|
|
||||||
+ * Copyright (C) 2020 Sartura Ltd.
|
|
||||||
+ * Author: Luka Kovacic <luka.kovacic@sartura.hr>
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+#include <linux/err.h>
|
|
||||||
+#include <linux/hwmon.h>
|
|
||||||
+#include <linux/interrupt.h>
|
|
||||||
+#include <linux/irq.h>
|
|
||||||
+#include <linux/math64.h>
|
|
||||||
+#include <linux/mfd/iei-wt61p803-puzzle.h>
|
|
||||||
+#include <linux/mod_devicetable.h>
|
|
||||||
+#include <linux/module.h>
|
|
||||||
+#include <linux/platform_device.h>
|
|
||||||
+#include <linux/property.h>
|
|
||||||
+#include <linux/slab.h>
|
|
||||||
+#include <linux/thermal.h>
|
|
||||||
+
|
|
||||||
+#define IEI_WT61P803_PUZZLE_HWMON_MAX_PWM 2
|
|
||||||
+#define IEI_WT61P803_PUZZLE_HWMON_MAX_PWM_VAL 255
|
|
||||||
+
|
|
||||||
+/**
|
|
||||||
+ * struct iei_wt61p803_puzzle_thermal_cooling_device - Thermal cooling device instance
|
|
||||||
+ * @mcu_hwmon: Parent driver struct pointer
|
|
||||||
+ * @tcdev: Thermal cooling device pointer
|
|
||||||
+ * @name: Thermal cooling device name
|
|
||||||
+ * @pwm_channel: Controlled PWM channel (0 or 1)
|
|
||||||
+ * @cooling_levels: Thermal cooling device cooling levels (DT)
|
|
||||||
+ */
|
|
||||||
+struct iei_wt61p803_puzzle_thermal_cooling_device {
|
|
||||||
+ struct iei_wt61p803_puzzle_hwmon *mcu_hwmon;
|
|
||||||
+ struct thermal_cooling_device *tcdev;
|
|
||||||
+ char name[THERMAL_NAME_LENGTH];
|
|
||||||
+ int pwm_channel;
|
|
||||||
+ u8 *cooling_levels;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+/**
|
|
||||||
+ * struct iei_wt61p803_puzzle_hwmon - MCU HWMON Driver
|
|
||||||
+ * @mcu: MCU struct pointer
|
|
||||||
+ * @response_buffer Global MCU response buffer
|
|
||||||
+ * @thermal_cooling_dev_present: Per-channel thermal cooling device control indicator
|
|
||||||
+ * @cdev: Per-channel thermal cooling device private structure
|
|
||||||
+ */
|
|
||||||
+struct iei_wt61p803_puzzle_hwmon {
|
|
||||||
+ struct iei_wt61p803_puzzle *mcu;
|
|
||||||
+ unsigned char response_buffer[IEI_WT61P803_PUZZLE_BUF_SIZE];
|
|
||||||
+ bool thermal_cooling_dev_present[IEI_WT61P803_PUZZLE_HWMON_MAX_PWM];
|
|
||||||
+ struct iei_wt61p803_puzzle_thermal_cooling_device
|
|
||||||
+ *cdev[IEI_WT61P803_PUZZLE_HWMON_MAX_PWM];
|
|
||||||
+ struct mutex lock; /* mutex to protect response_buffer array */
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+#define raw_temp_to_milidegree_celsius(x) (((x) - 0x80) * 1000)
|
|
||||||
+static int iei_wt61p803_puzzle_read_temp_sensor(struct iei_wt61p803_puzzle_hwmon *mcu_hwmon,
|
|
||||||
+ int channel, long *value)
|
|
||||||
+{
|
|
||||||
+ unsigned char *resp_buf = mcu_hwmon->response_buffer;
|
|
||||||
+ unsigned char temp_sensor_ntc_cmd[4] = {
|
|
||||||
+ IEI_WT61P803_PUZZLE_CMD_HEADER_START,
|
|
||||||
+ IEI_WT61P803_PUZZLE_CMD_TEMP,
|
|
||||||
+ IEI_WT61P803_PUZZLE_CMD_TEMP_ALL,
|
|
||||||
+ };
|
|
||||||
+ size_t reply_size;
|
|
||||||
+ int ret;
|
|
||||||
+
|
|
||||||
+ mutex_lock(&mcu_hwmon->lock);
|
|
||||||
+ ret = iei_wt61p803_puzzle_write_command(mcu_hwmon->mcu, temp_sensor_ntc_cmd,
|
|
||||||
+ sizeof(temp_sensor_ntc_cmd), resp_buf,
|
|
||||||
+ &reply_size);
|
|
||||||
+ if (ret)
|
|
||||||
+ goto exit;
|
|
||||||
+
|
|
||||||
+ if (reply_size != 7) {
|
|
||||||
+ ret = -EIO;
|
|
||||||
+ goto exit;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /* Check the number of NTC values */
|
|
||||||
+ if (resp_buf[3] != '2') {
|
|
||||||
+ ret = -EIO;
|
|
||||||
+ goto exit;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ *value = raw_temp_to_milidegree_celsius(resp_buf[4 + channel]);
|
|
||||||
+exit:
|
|
||||||
+ mutex_unlock(&mcu_hwmon->lock);
|
|
||||||
+ return ret;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+#define raw_fan_val_to_rpm(x, y) ((((x) << 8 | (y)) / 2) * 60)
|
|
||||||
+static int iei_wt61p803_puzzle_read_fan_speed(struct iei_wt61p803_puzzle_hwmon *mcu_hwmon,
|
|
||||||
+ int channel, long *value)
|
|
||||||
+{
|
|
||||||
+ unsigned char *resp_buf = mcu_hwmon->response_buffer;
|
|
||||||
+ unsigned char fan_speed_cmd[4] = {};
|
|
||||||
+ size_t reply_size;
|
|
||||||
+ int ret;
|
|
||||||
+
|
|
||||||
+ fan_speed_cmd[0] = IEI_WT61P803_PUZZLE_CMD_HEADER_START;
|
|
||||||
+ fan_speed_cmd[1] = IEI_WT61P803_PUZZLE_CMD_FAN;
|
|
||||||
+ fan_speed_cmd[2] = IEI_WT61P803_PUZZLE_CMD_FAN_RPM(channel);
|
|
||||||
+
|
|
||||||
+ mutex_lock(&mcu_hwmon->lock);
|
|
||||||
+ ret = iei_wt61p803_puzzle_write_command(mcu_hwmon->mcu, fan_speed_cmd,
|
|
||||||
+ sizeof(fan_speed_cmd), resp_buf,
|
|
||||||
+ &reply_size);
|
|
||||||
+ if (ret)
|
|
||||||
+ goto exit;
|
|
||||||
+
|
|
||||||
+ if (reply_size != 7) {
|
|
||||||
+ ret = -EIO;
|
|
||||||
+ goto exit;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ *value = raw_fan_val_to_rpm(resp_buf[3], resp_buf[4]);
|
|
||||||
+exit:
|
|
||||||
+ mutex_unlock(&mcu_hwmon->lock);
|
|
||||||
+ return ret;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int iei_wt61p803_puzzle_write_pwm_channel(struct iei_wt61p803_puzzle_hwmon *mcu_hwmon,
|
|
||||||
+ int channel, long pwm_set_val)
|
|
||||||
+{
|
|
||||||
+ unsigned char *resp_buf = mcu_hwmon->response_buffer;
|
|
||||||
+ unsigned char pwm_set_cmd[6] = {};
|
|
||||||
+ size_t reply_size;
|
|
||||||
+ int ret;
|
|
||||||
+
|
|
||||||
+ pwm_set_cmd[0] = IEI_WT61P803_PUZZLE_CMD_HEADER_START;
|
|
||||||
+ pwm_set_cmd[1] = IEI_WT61P803_PUZZLE_CMD_FAN;
|
|
||||||
+ pwm_set_cmd[2] = IEI_WT61P803_PUZZLE_CMD_FAN_PWM_WRITE;
|
|
||||||
+ pwm_set_cmd[3] = IEI_WT61P803_PUZZLE_CMD_FAN_PWM(channel);
|
|
||||||
+ pwm_set_cmd[4] = pwm_set_val;
|
|
||||||
+
|
|
||||||
+ mutex_lock(&mcu_hwmon->lock);
|
|
||||||
+ ret = iei_wt61p803_puzzle_write_command(mcu_hwmon->mcu, pwm_set_cmd,
|
|
||||||
+ sizeof(pwm_set_cmd), resp_buf,
|
|
||||||
+ &reply_size);
|
|
||||||
+ if (ret)
|
|
||||||
+ goto exit;
|
|
||||||
+
|
|
||||||
+ if (reply_size != 3) {
|
|
||||||
+ ret = -EIO;
|
|
||||||
+ goto exit;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (!(resp_buf[0] == IEI_WT61P803_PUZZLE_CMD_HEADER_START &&
|
|
||||||
+ resp_buf[1] == IEI_WT61P803_PUZZLE_CMD_RESPONSE_OK &&
|
|
||||||
+ resp_buf[2] == IEI_WT61P803_PUZZLE_CHECKSUM_RESPONSE_OK)) {
|
|
||||||
+ ret = -EIO;
|
|
||||||
+ goto exit;
|
|
||||||
+ }
|
|
||||||
+exit:
|
|
||||||
+ mutex_unlock(&mcu_hwmon->lock);
|
|
||||||
+ return ret;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int iei_wt61p803_puzzle_read_pwm_channel(struct iei_wt61p803_puzzle_hwmon *mcu_hwmon,
|
|
||||||
+ int channel, long *value)
|
|
||||||
+{
|
|
||||||
+ unsigned char *resp_buf = mcu_hwmon->response_buffer;
|
|
||||||
+ unsigned char pwm_get_cmd[5] = {};
|
|
||||||
+ size_t reply_size;
|
|
||||||
+ int ret;
|
|
||||||
+
|
|
||||||
+ pwm_get_cmd[0] = IEI_WT61P803_PUZZLE_CMD_HEADER_START;
|
|
||||||
+ pwm_get_cmd[1] = IEI_WT61P803_PUZZLE_CMD_FAN;
|
|
||||||
+ pwm_get_cmd[2] = IEI_WT61P803_PUZZLE_CMD_FAN_PWM_READ;
|
|
||||||
+ pwm_get_cmd[3] = IEI_WT61P803_PUZZLE_CMD_FAN_PWM(channel);
|
|
||||||
+
|
|
||||||
+ ret = iei_wt61p803_puzzle_write_command(mcu_hwmon->mcu, pwm_get_cmd,
|
|
||||||
+ sizeof(pwm_get_cmd), resp_buf,
|
|
||||||
+ &reply_size);
|
|
||||||
+ if (ret)
|
|
||||||
+ return ret;
|
|
||||||
+
|
|
||||||
+ if (reply_size != 5)
|
|
||||||
+ return -EIO;
|
|
||||||
+
|
|
||||||
+ if (resp_buf[2] != IEI_WT61P803_PUZZLE_CMD_FAN_PWM_READ)
|
|
||||||
+ return -EIO;
|
|
||||||
+
|
|
||||||
+ *value = resp_buf[3];
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int iei_wt61p803_puzzle_read(struct device *dev, enum hwmon_sensor_types type,
|
|
||||||
+ u32 attr, int channel, long *val)
|
|
||||||
+{
|
|
||||||
+ struct iei_wt61p803_puzzle_hwmon *mcu_hwmon = dev_get_drvdata(dev->parent);
|
|
||||||
+
|
|
||||||
+ switch (type) {
|
|
||||||
+ case hwmon_pwm:
|
|
||||||
+ return iei_wt61p803_puzzle_read_pwm_channel(mcu_hwmon, channel, val);
|
|
||||||
+ case hwmon_fan:
|
|
||||||
+ return iei_wt61p803_puzzle_read_fan_speed(mcu_hwmon, channel, val);
|
|
||||||
+ case hwmon_temp:
|
|
||||||
+ return iei_wt61p803_puzzle_read_temp_sensor(mcu_hwmon, channel, val);
|
|
||||||
+ default:
|
|
||||||
+ return -EINVAL;
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int iei_wt61p803_puzzle_write(struct device *dev, enum hwmon_sensor_types type,
|
|
||||||
+ u32 attr, int channel, long val)
|
|
||||||
+{
|
|
||||||
+ struct iei_wt61p803_puzzle_hwmon *mcu_hwmon = dev_get_drvdata(dev->parent);
|
|
||||||
+
|
|
||||||
+ return iei_wt61p803_puzzle_write_pwm_channel(mcu_hwmon, channel, val);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static umode_t iei_wt61p803_puzzle_is_visible(const void *data, enum hwmon_sensor_types type,
|
|
||||||
+ u32 attr, int channel)
|
|
||||||
+{
|
|
||||||
+ const struct iei_wt61p803_puzzle_hwmon *mcu_hwmon = data;
|
|
||||||
+
|
|
||||||
+ switch (type) {
|
|
||||||
+ case hwmon_pwm:
|
|
||||||
+ if (mcu_hwmon->thermal_cooling_dev_present[channel])
|
|
||||||
+ return 0444;
|
|
||||||
+ if (attr == hwmon_pwm_input)
|
|
||||||
+ return 0644;
|
|
||||||
+ break;
|
|
||||||
+ case hwmon_fan:
|
|
||||||
+ if (attr == hwmon_fan_input)
|
|
||||||
+ return 0444;
|
|
||||||
+ break;
|
|
||||||
+ case hwmon_temp:
|
|
||||||
+ if (attr == hwmon_temp_input)
|
|
||||||
+ return 0444;
|
|
||||||
+ break;
|
|
||||||
+ default:
|
|
||||||
+ return 0;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static const struct hwmon_ops iei_wt61p803_puzzle_hwmon_ops = {
|
|
||||||
+ .is_visible = iei_wt61p803_puzzle_is_visible,
|
|
||||||
+ .read = iei_wt61p803_puzzle_read,
|
|
||||||
+ .write = iei_wt61p803_puzzle_write,
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+static const struct hwmon_channel_info *iei_wt61p803_puzzle_info[] = {
|
|
||||||
+ HWMON_CHANNEL_INFO(pwm,
|
|
||||||
+ HWMON_PWM_INPUT,
|
|
||||||
+ HWMON_PWM_INPUT),
|
|
||||||
+ HWMON_CHANNEL_INFO(fan,
|
|
||||||
+ HWMON_F_INPUT,
|
|
||||||
+ HWMON_F_INPUT,
|
|
||||||
+ HWMON_F_INPUT,
|
|
||||||
+ HWMON_F_INPUT,
|
|
||||||
+ HWMON_F_INPUT),
|
|
||||||
+ HWMON_CHANNEL_INFO(temp,
|
|
||||||
+ HWMON_T_INPUT,
|
|
||||||
+ HWMON_T_INPUT),
|
|
||||||
+ NULL
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+static const struct hwmon_chip_info iei_wt61p803_puzzle_chip_info = {
|
|
||||||
+ .ops = &iei_wt61p803_puzzle_hwmon_ops,
|
|
||||||
+ .info = iei_wt61p803_puzzle_info,
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+static int iei_wt61p803_puzzle_get_max_state(struct thermal_cooling_device *tcdev,
|
|
||||||
+ unsigned long *state)
|
|
||||||
+{
|
|
||||||
+ *state = IEI_WT61P803_PUZZLE_HWMON_MAX_PWM_VAL;
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int iei_wt61p803_puzzle_get_cur_state(struct thermal_cooling_device *tcdev,
|
|
||||||
+ unsigned long *state)
|
|
||||||
+{
|
|
||||||
+ struct iei_wt61p803_puzzle_thermal_cooling_device *cdev = tcdev->devdata;
|
|
||||||
+ struct iei_wt61p803_puzzle_hwmon *mcu_hwmon = cdev->mcu_hwmon;
|
|
||||||
+ long value;
|
|
||||||
+ int ret;
|
|
||||||
+
|
|
||||||
+ ret = iei_wt61p803_puzzle_read_pwm_channel(mcu_hwmon, cdev->pwm_channel, &value);
|
|
||||||
+ if (ret)
|
|
||||||
+ return ret;
|
|
||||||
+ *state = value;
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int iei_wt61p803_puzzle_set_cur_state(struct thermal_cooling_device *tcdev,
|
|
||||||
+ unsigned long state)
|
|
||||||
+{
|
|
||||||
+ struct iei_wt61p803_puzzle_thermal_cooling_device *cdev = tcdev->devdata;
|
|
||||||
+ struct iei_wt61p803_puzzle_hwmon *mcu_hwmon = cdev->mcu_hwmon;
|
|
||||||
+
|
|
||||||
+ return iei_wt61p803_puzzle_write_pwm_channel(mcu_hwmon, cdev->pwm_channel, state);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static const struct thermal_cooling_device_ops iei_wt61p803_puzzle_cooling_ops = {
|
|
||||||
+ .get_max_state = iei_wt61p803_puzzle_get_max_state,
|
|
||||||
+ .get_cur_state = iei_wt61p803_puzzle_get_cur_state,
|
|
||||||
+ .set_cur_state = iei_wt61p803_puzzle_set_cur_state,
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+static int
|
|
||||||
+iei_wt61p803_puzzle_enable_thermal_cooling_dev(struct device *dev,
|
|
||||||
+ struct fwnode_handle *child,
|
|
||||||
+ struct iei_wt61p803_puzzle_hwmon *mcu_hwmon)
|
|
||||||
+{
|
|
||||||
+ struct iei_wt61p803_puzzle_thermal_cooling_device *cdev;
|
|
||||||
+ u32 pwm_channel;
|
|
||||||
+ u8 num_levels;
|
|
||||||
+ int ret;
|
|
||||||
+
|
|
||||||
+ ret = fwnode_property_read_u32(child, "reg", &pwm_channel);
|
|
||||||
+ if (ret)
|
|
||||||
+ return ret;
|
|
||||||
+
|
|
||||||
+ mcu_hwmon->thermal_cooling_dev_present[pwm_channel] = true;
|
|
||||||
+
|
|
||||||
+ num_levels = fwnode_property_count_u8(child, "cooling-levels");
|
|
||||||
+ if (!num_levels)
|
|
||||||
+ return -EINVAL;
|
|
||||||
+
|
|
||||||
+ cdev = devm_kzalloc(dev, sizeof(*cdev), GFP_KERNEL);
|
|
||||||
+ if (!cdev)
|
|
||||||
+ return -ENOMEM;
|
|
||||||
+
|
|
||||||
+ cdev->cooling_levels = devm_kmalloc_array(dev, num_levels, sizeof(u8), GFP_KERNEL);
|
|
||||||
+ if (!cdev->cooling_levels)
|
|
||||||
+ return -ENOMEM;
|
|
||||||
+
|
|
||||||
+ ret = fwnode_property_read_u8_array(child, "cooling-levels",
|
|
||||||
+ cdev->cooling_levels,
|
|
||||||
+ num_levels);
|
|
||||||
+ if (ret) {
|
|
||||||
+ dev_err(dev, "Couldn't read property 'cooling-levels'\n");
|
|
||||||
+ return ret;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ snprintf(cdev->name, THERMAL_NAME_LENGTH, "wt61p803_puzzle_%d", pwm_channel);
|
|
||||||
+ cdev->tcdev = devm_thermal_of_cooling_device_register(dev, NULL, cdev->name, cdev,
|
|
||||||
+ &iei_wt61p803_puzzle_cooling_ops);
|
|
||||||
+ if (IS_ERR(cdev->tcdev))
|
|
||||||
+ return PTR_ERR(cdev->tcdev);
|
|
||||||
+
|
|
||||||
+ cdev->mcu_hwmon = mcu_hwmon;
|
|
||||||
+ cdev->pwm_channel = pwm_channel;
|
|
||||||
+ mcu_hwmon->cdev[pwm_channel] = cdev;
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int iei_wt61p803_puzzle_hwmon_probe(struct platform_device *pdev)
|
|
||||||
+{
|
|
||||||
+ struct device *dev = &pdev->dev;
|
|
||||||
+ struct iei_wt61p803_puzzle *mcu = dev_get_drvdata(dev->parent);
|
|
||||||
+ struct iei_wt61p803_puzzle_hwmon *mcu_hwmon;
|
|
||||||
+ struct fwnode_handle *child;
|
|
||||||
+ struct device *hwmon_dev;
|
|
||||||
+ int ret;
|
|
||||||
+
|
|
||||||
+ mcu_hwmon = devm_kzalloc(dev, sizeof(*mcu_hwmon), GFP_KERNEL);
|
|
||||||
+ if (!mcu_hwmon)
|
|
||||||
+ return -ENOMEM;
|
|
||||||
+
|
|
||||||
+ mcu_hwmon->mcu = mcu;
|
|
||||||
+ platform_set_drvdata(pdev, mcu_hwmon);
|
|
||||||
+ mutex_init(&mcu_hwmon->lock);
|
|
||||||
+
|
|
||||||
+ hwmon_dev = devm_hwmon_device_register_with_info(dev, "iei_wt61p803_puzzle",
|
|
||||||
+ mcu_hwmon,
|
|
||||||
+ &iei_wt61p803_puzzle_chip_info,
|
|
||||||
+ NULL);
|
|
||||||
+ if (IS_ERR(hwmon_dev))
|
|
||||||
+ return PTR_ERR(hwmon_dev);
|
|
||||||
+
|
|
||||||
+ /* Control fans via PWM lines via Linux Kernel */
|
|
||||||
+ if (IS_ENABLED(CONFIG_THERMAL)) {
|
|
||||||
+ device_for_each_child_node(dev, child) {
|
|
||||||
+ ret = iei_wt61p803_puzzle_enable_thermal_cooling_dev(dev, child, mcu_hwmon);
|
|
||||||
+ if (ret) {
|
|
||||||
+ dev_err(dev, "Enabling the PWM fan failed\n");
|
|
||||||
+ fwnode_handle_put(child);
|
|
||||||
+ return ret;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static const struct of_device_id iei_wt61p803_puzzle_hwmon_id_table[] = {
|
|
||||||
+ { .compatible = "iei,wt61p803-puzzle-hwmon" },
|
|
||||||
+ {}
|
|
||||||
+};
|
|
||||||
+MODULE_DEVICE_TABLE(of, iei_wt61p803_puzzle_hwmon_id_table);
|
|
||||||
+
|
|
||||||
+static struct platform_driver iei_wt61p803_puzzle_hwmon_driver = {
|
|
||||||
+ .driver = {
|
|
||||||
+ .name = "iei-wt61p803-puzzle-hwmon",
|
|
||||||
+ .of_match_table = iei_wt61p803_puzzle_hwmon_id_table,
|
|
||||||
+ },
|
|
||||||
+ .probe = iei_wt61p803_puzzle_hwmon_probe,
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+module_platform_driver(iei_wt61p803_puzzle_hwmon_driver);
|
|
||||||
+
|
|
||||||
+MODULE_DESCRIPTION("IEI WT61P803 PUZZLE MCU HWMON Driver");
|
|
||||||
+MODULE_AUTHOR("Luka Kovacic <luka.kovacic@sartura.hr>");
|
|
||||||
+MODULE_LICENSE("GPL v2");
|
|
|
@ -1,207 +0,0 @@
|
||||||
From f3b44eb69cc561cf05d00506dcec0dd9be003ed8 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Luka Kovacic <luka.kovacic () sartura ! hr>
|
|
||||||
Date: Tue, 24 Aug 2021 12:44:35 +0000
|
|
||||||
Subject: [PATCH 4/7] drivers: leds: Add the IEI WT61P803 PUZZLE LED driver
|
|
||||||
|
|
||||||
Add support for the IEI WT61P803 PUZZLE LED driver.
|
|
||||||
Currently only the front panel power LED is supported,
|
|
||||||
since it is the only LED on this board wired through the
|
|
||||||
MCU.
|
|
||||||
|
|
||||||
The LED is wired directly to the on-board MCU controller
|
|
||||||
and is toggled using an MCU command.
|
|
||||||
|
|
||||||
Support for more LEDs is going to be added in case more
|
|
||||||
boards implement this microcontroller, as LEDs use many
|
|
||||||
different GPIOs.
|
|
||||||
|
|
||||||
This driver depends on the IEI WT61P803 PUZZLE MFD driver.
|
|
||||||
|
|
||||||
Signed-off-by: Luka Kovacic <luka.kovacic@sartura.hr>
|
|
||||||
Signed-off-by: Pavo Banicevic <pavo.banicevic@sartura.hr>
|
|
||||||
Cc: Luka Perkov <luka.perkov@sartura.hr>
|
|
||||||
Cc: Robert Marko <robert.marko@sartura.hr>
|
|
||||||
---
|
|
||||||
drivers/leds/Kconfig | 8 ++
|
|
||||||
drivers/leds/Makefile | 1 +
|
|
||||||
drivers/leds/leds-iei-wt61p803-puzzle.c | 147 ++++++++++++++++++++++++
|
|
||||||
3 files changed, 156 insertions(+)
|
|
||||||
create mode 100644 drivers/leds/leds-iei-wt61p803-puzzle.c
|
|
||||||
|
|
||||||
--- a/drivers/leds/Kconfig
|
|
||||||
+++ b/drivers/leds/Kconfig
|
|
||||||
@@ -305,6 +305,14 @@ config LEDS_IPAQ_MICRO
|
|
||||||
Choose this option if you want to use the notification LED on
|
|
||||||
Compaq/HP iPAQ h3100 and h3600.
|
|
||||||
|
|
||||||
+config LEDS_IEI_WT61P803_PUZZLE
|
|
||||||
+ tristate "LED Support for the IEI WT61P803 PUZZLE MCU"
|
|
||||||
+ depends on LEDS_CLASS
|
|
||||||
+ depends on MFD_IEI_WT61P803_PUZZLE
|
|
||||||
+ help
|
|
||||||
+ This option enables support for LEDs controlled by the IEI WT61P803
|
|
||||||
+ M801 MCU.
|
|
||||||
+
|
|
||||||
config LEDS_HP6XX
|
|
||||||
tristate "LED Support for the HP Jornada 6xx"
|
|
||||||
depends on LEDS_CLASS
|
|
||||||
--- a/drivers/leds/Makefile
|
|
||||||
+++ b/drivers/leds/Makefile
|
|
||||||
@@ -33,6 +33,7 @@ obj-$(CONFIG_LEDS_HP6XX) += leds-hp6xx.
|
|
||||||
obj-$(CONFIG_LEDS_INTEL_SS4200) += leds-ss4200.o
|
|
||||||
obj-$(CONFIG_LEDS_IP30) += leds-ip30.o
|
|
||||||
obj-$(CONFIG_LEDS_IPAQ_MICRO) += leds-ipaq-micro.o
|
|
||||||
+obj-$(CONFIG_LEDS_IEI_WT61P803_PUZZLE) += leds-iei-wt61p803-puzzle.o
|
|
||||||
obj-$(CONFIG_LEDS_IS31FL319X) += leds-is31fl319x.o
|
|
||||||
obj-$(CONFIG_LEDS_IS31FL32XX) += leds-is31fl32xx.o
|
|
||||||
obj-$(CONFIG_LEDS_LM3530) += leds-lm3530.o
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/drivers/leds/leds-iei-wt61p803-puzzle.c
|
|
||||||
@@ -0,0 +1,147 @@
|
|
||||||
+// SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
+/* IEI WT61P803 PUZZLE MCU LED Driver
|
|
||||||
+ *
|
|
||||||
+ * Copyright (C) 2020 Sartura Ltd.
|
|
||||||
+ * Author: Luka Kovacic <luka.kovacic@sartura.hr>
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+#include <linux/leds.h>
|
|
||||||
+#include <linux/mfd/iei-wt61p803-puzzle.h>
|
|
||||||
+#include <linux/mod_devicetable.h>
|
|
||||||
+#include <linux/module.h>
|
|
||||||
+#include <linux/platform_device.h>
|
|
||||||
+#include <linux/property.h>
|
|
||||||
+#include <linux/slab.h>
|
|
||||||
+
|
|
||||||
+enum iei_wt61p803_puzzle_led_state {
|
|
||||||
+ IEI_LED_OFF = 0x30,
|
|
||||||
+ IEI_LED_ON = 0x31,
|
|
||||||
+ IEI_LED_BLINK_5HZ = 0x32,
|
|
||||||
+ IEI_LED_BLINK_1HZ = 0x33,
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+/**
|
|
||||||
+ * struct iei_wt61p803_puzzle_led - MCU LED Driver
|
|
||||||
+ * @cdev: LED classdev
|
|
||||||
+ * @mcu: MCU struct pointer
|
|
||||||
+ * @response_buffer Global MCU response buffer
|
|
||||||
+ * @lock: General mutex lock to protect simultaneous R/W access to led_power_state
|
|
||||||
+ * @led_power_state: State of the front panel power LED
|
|
||||||
+ */
|
|
||||||
+struct iei_wt61p803_puzzle_led {
|
|
||||||
+ struct led_classdev cdev;
|
|
||||||
+ struct iei_wt61p803_puzzle *mcu;
|
|
||||||
+ unsigned char response_buffer[IEI_WT61P803_PUZZLE_BUF_SIZE];
|
|
||||||
+ struct mutex lock; /* mutex to protect led_power_state */
|
|
||||||
+ int led_power_state;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+static inline struct iei_wt61p803_puzzle_led *cdev_to_iei_wt61p803_puzzle_led
|
|
||||||
+ (struct led_classdev *led_cdev)
|
|
||||||
+{
|
|
||||||
+ return container_of(led_cdev, struct iei_wt61p803_puzzle_led, cdev);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int iei_wt61p803_puzzle_led_brightness_set_blocking(struct led_classdev *cdev,
|
|
||||||
+ enum led_brightness brightness)
|
|
||||||
+{
|
|
||||||
+ struct iei_wt61p803_puzzle_led *priv = cdev_to_iei_wt61p803_puzzle_led(cdev);
|
|
||||||
+ unsigned char *resp_buf = priv->response_buffer;
|
|
||||||
+ unsigned char led_power_cmd[5] = {};
|
|
||||||
+ size_t reply_size;
|
|
||||||
+ int ret;
|
|
||||||
+
|
|
||||||
+ led_power_cmd[0] = IEI_WT61P803_PUZZLE_CMD_HEADER_START;
|
|
||||||
+ led_power_cmd[1] = IEI_WT61P803_PUZZLE_CMD_LED;
|
|
||||||
+ led_power_cmd[2] = IEI_WT61P803_PUZZLE_CMD_LED_POWER;
|
|
||||||
+ led_power_cmd[3] = brightness == LED_OFF ? IEI_LED_OFF : IEI_LED_ON;
|
|
||||||
+
|
|
||||||
+ ret = iei_wt61p803_puzzle_write_command(priv->mcu, led_power_cmd,
|
|
||||||
+ sizeof(led_power_cmd),
|
|
||||||
+ resp_buf,
|
|
||||||
+ &reply_size);
|
|
||||||
+ if (ret)
|
|
||||||
+ return ret;
|
|
||||||
+
|
|
||||||
+ if (reply_size != 3)
|
|
||||||
+ return -EIO;
|
|
||||||
+
|
|
||||||
+ if (!(resp_buf[0] == IEI_WT61P803_PUZZLE_CMD_HEADER_START &&
|
|
||||||
+ resp_buf[1] == IEI_WT61P803_PUZZLE_CMD_RESPONSE_OK &&
|
|
||||||
+ resp_buf[2] == IEI_WT61P803_PUZZLE_CHECKSUM_RESPONSE_OK))
|
|
||||||
+ return -EIO;
|
|
||||||
+
|
|
||||||
+ mutex_lock(&priv->lock);
|
|
||||||
+ priv->led_power_state = brightness;
|
|
||||||
+ mutex_unlock(&priv->lock);
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static enum led_brightness iei_wt61p803_puzzle_led_brightness_get(struct led_classdev *cdev)
|
|
||||||
+{
|
|
||||||
+ struct iei_wt61p803_puzzle_led *priv = cdev_to_iei_wt61p803_puzzle_led(cdev);
|
|
||||||
+ int led_state;
|
|
||||||
+
|
|
||||||
+ mutex_lock(&priv->lock);
|
|
||||||
+ led_state = priv->led_power_state;
|
|
||||||
+ mutex_unlock(&priv->lock);
|
|
||||||
+
|
|
||||||
+ return led_state;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int iei_wt61p803_puzzle_led_probe(struct platform_device *pdev)
|
|
||||||
+{
|
|
||||||
+ struct device *dev = &pdev->dev;
|
|
||||||
+ struct iei_wt61p803_puzzle *mcu = dev_get_drvdata(dev->parent);
|
|
||||||
+ struct iei_wt61p803_puzzle_led *priv;
|
|
||||||
+ struct led_init_data init_data = {};
|
|
||||||
+ struct fwnode_handle *child;
|
|
||||||
+ int ret;
|
|
||||||
+
|
|
||||||
+ if (device_get_child_node_count(dev) != 1)
|
|
||||||
+ return -EINVAL;
|
|
||||||
+
|
|
||||||
+ priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
|
|
||||||
+ if (!priv)
|
|
||||||
+ return -ENOMEM;
|
|
||||||
+
|
|
||||||
+ priv->mcu = mcu;
|
|
||||||
+ priv->led_power_state = 1;
|
|
||||||
+ mutex_init(&priv->lock);
|
|
||||||
+ dev_set_drvdata(dev, priv);
|
|
||||||
+
|
|
||||||
+ child = device_get_next_child_node(dev, NULL);
|
|
||||||
+ init_data.fwnode = child;
|
|
||||||
+
|
|
||||||
+ priv->cdev.brightness_set_blocking = iei_wt61p803_puzzle_led_brightness_set_blocking;
|
|
||||||
+ priv->cdev.brightness_get = iei_wt61p803_puzzle_led_brightness_get;
|
|
||||||
+ priv->cdev.max_brightness = 1;
|
|
||||||
+
|
|
||||||
+ ret = devm_led_classdev_register_ext(dev, &priv->cdev, &init_data);
|
|
||||||
+ if (ret)
|
|
||||||
+ dev_err(dev, "Could not register LED\n");
|
|
||||||
+
|
|
||||||
+ fwnode_handle_put(child);
|
|
||||||
+ return ret;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static const struct of_device_id iei_wt61p803_puzzle_led_of_match[] = {
|
|
||||||
+ { .compatible = "iei,wt61p803-puzzle-leds" },
|
|
||||||
+ { }
|
|
||||||
+};
|
|
||||||
+MODULE_DEVICE_TABLE(of, iei_wt61p803_puzzle_led_of_match);
|
|
||||||
+
|
|
||||||
+static struct platform_driver iei_wt61p803_puzzle_led_driver = {
|
|
||||||
+ .driver = {
|
|
||||||
+ .name = "iei-wt61p803-puzzle-led",
|
|
||||||
+ .of_match_table = iei_wt61p803_puzzle_led_of_match,
|
|
||||||
+ },
|
|
||||||
+ .probe = iei_wt61p803_puzzle_led_probe,
|
|
||||||
+};
|
|
||||||
+module_platform_driver(iei_wt61p803_puzzle_led_driver);
|
|
||||||
+
|
|
||||||
+MODULE_DESCRIPTION("IEI WT61P803 PUZZLE front panel LED driver");
|
|
||||||
+MODULE_AUTHOR("Luka Kovacic <luka.kovacic@sartura.hr>");
|
|
||||||
+MODULE_LICENSE("GPL v2");
|
|
||||||
+MODULE_ALIAS("platform:leds-iei-wt61p803-puzzle");
|
|
|
@ -1,82 +0,0 @@
|
||||||
From 2fab3b4956c5b2f83c1e1abffc1df39de2933d83 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Luka Kovacic <luka.kovacic () sartura ! hr>
|
|
||||||
Date: Tue, 24 Aug 2021 12:44:36 +0000
|
|
||||||
Subject: [PATCH 5/7] Documentation/ABI: Add iei-wt61p803-puzzle driver sysfs
|
|
||||||
interface documentation
|
|
||||||
|
|
||||||
Add the iei-wt61p803-puzzle driver sysfs interface documentation to allow
|
|
||||||
monitoring and control of the microcontroller from user space.
|
|
||||||
|
|
||||||
Signed-off-by: Luka Kovacic <luka.kovacic@sartura.hr>
|
|
||||||
Signed-off-by: Pavo Banicevic <pavo.banicevic@sartura.hr>
|
|
||||||
Cc: Luka Perkov <luka.perkov@sartura.hr>
|
|
||||||
Cc: Robert Marko <robert.marko@sartura.hr>
|
|
||||||
---
|
|
||||||
.../testing/sysfs-driver-iei-wt61p803-puzzle | 61 +++++++++++++++++++
|
|
||||||
1 file changed, 61 insertions(+)
|
|
||||||
create mode 100644 Documentation/ABI/testing/sysfs-driver-iei-wt61p803-puzzle
|
|
||||||
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/Documentation/ABI/testing/sysfs-driver-iei-wt61p803-puzzle
|
|
||||||
@@ -0,0 +1,61 @@
|
|
||||||
+What: /sys/bus/serial/devices/.../mac_address_*
|
|
||||||
+Date: September 2020
|
|
||||||
+Contact: Luka Kovacic <luka.kovacic@sartura.hr>
|
|
||||||
+Description: (RW) Internal factory assigned MAC address values
|
|
||||||
+
|
|
||||||
+What: /sys/bus/serial/devices/.../serial_number
|
|
||||||
+Date: September 2020
|
|
||||||
+Contact: Luka Kovacic <luka.kovacic@sartura.hr>
|
|
||||||
+Description: (RW) Internal factory assigned serial number
|
|
||||||
+
|
|
||||||
+What: /sys/bus/serial/devices/.../version
|
|
||||||
+Date: September 2020
|
|
||||||
+Contact: Luka Kovacic <luka.kovacic@sartura.hr>
|
|
||||||
+Description: (RO) Internal MCU firmware version
|
|
||||||
+
|
|
||||||
+What: /sys/bus/serial/devices/.../protocol_version
|
|
||||||
+Date: September 2020
|
|
||||||
+Contact: Luka Kovacic <luka.kovacic@sartura.hr>
|
|
||||||
+Description: (RO) Internal MCU communication protocol version
|
|
||||||
+
|
|
||||||
+What: /sys/bus/serial/devices/.../power_loss_recovery
|
|
||||||
+Date: September 2020
|
|
||||||
+Contact: Luka Kovacic <luka.kovacic@sartura.hr>
|
|
||||||
+Description: (RW) Host platform power loss recovery settings
|
|
||||||
+ Value mapping: 0 - Always-On, 1 - Always-Off, 2 - Always-AC, 3 - Always-WA
|
|
||||||
+
|
|
||||||
+What: /sys/bus/serial/devices/.../bootloader_mode
|
|
||||||
+Date: September 2020
|
|
||||||
+Contact: Luka Kovacic <luka.kovacic@sartura.hr>
|
|
||||||
+Description: (RO) Internal MCU bootloader mode status
|
|
||||||
+ Value mapping:
|
|
||||||
+ 0 - normal mode
|
|
||||||
+ 1 - bootloader mode
|
|
||||||
+
|
|
||||||
+What: /sys/bus/serial/devices/.../power_status
|
|
||||||
+Date: September 2020
|
|
||||||
+Contact: Luka Kovacic <luka.kovacic@sartura.hr>
|
|
||||||
+Description: (RO) Power status indicates the host platform power on method.
|
|
||||||
+ Value mapping (bitwise list):
|
|
||||||
+ 0x80 - Null
|
|
||||||
+ 0x40 - Firmware flag
|
|
||||||
+ 0x20 - Power loss detection flag (powered off)
|
|
||||||
+ 0x10 - Power loss detection flag (AC mode)
|
|
||||||
+ 0x08 - Button power on
|
|
||||||
+ 0x04 - Wake-on-LAN power on
|
|
||||||
+ 0x02 - RTC alarm power on
|
|
||||||
+ 0x01 - AC recover power on
|
|
||||||
+
|
|
||||||
+What: /sys/bus/serial/devices/.../build_info
|
|
||||||
+Date: September 2020
|
|
||||||
+Contact: Luka Kovacic <luka.kovacic@sartura.hr>
|
|
||||||
+Description: (RO) Internal MCU firmware build date
|
|
||||||
+ Format: yyyy/mm/dd hh:mm
|
|
||||||
+
|
|
||||||
+What: /sys/bus/serial/devices/.../ac_recovery_status
|
|
||||||
+Date: September 2020
|
|
||||||
+Contact: Luka Kovacic <luka.kovacic@sartura.hr>
|
|
||||||
+Description: (RO) Host platform AC recovery status value
|
|
||||||
+ Value mapping:
|
|
||||||
+ 0 - board has not been recovered from power down
|
|
||||||
+ 1 - board has been recovered from power down
|
|
|
@ -1,74 +0,0 @@
|
||||||
From 0aff3e5923fecc6842473ad07a688d6e2f2c2d55 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Luka Kovacic <luka.kovacic () sartura ! hr>
|
|
||||||
Date: Tue, 24 Aug 2021 12:44:37 +0000
|
|
||||||
Subject: [PATCH 6/7] Documentation/hwmon: Add iei-wt61p803-puzzle hwmon driver
|
|
||||||
documentation
|
|
||||||
|
|
||||||
Add the iei-wt61p803-puzzle driver hwmon driver interface documentation.
|
|
||||||
|
|
||||||
Signed-off-by: Luka Kovacic <luka.kovacic@sartura.hr>
|
|
||||||
Signed-off-by: Pavo Banicevic <pavo.banicevic@sartura.hr>
|
|
||||||
Cc: Luka Perkov <luka.perkov@sartura.hr>
|
|
||||||
Cc: Robert Marko <robert.marko@sartura.hr>
|
|
||||||
---
|
|
||||||
.../hwmon/iei-wt61p803-puzzle-hwmon.rst | 43 +++++++++++++++++++
|
|
||||||
Documentation/hwmon/index.rst | 1 +
|
|
||||||
2 files changed, 44 insertions(+)
|
|
||||||
create mode 100644 Documentation/hwmon/iei-wt61p803-puzzle-hwmon.rst
|
|
||||||
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/Documentation/hwmon/iei-wt61p803-puzzle-hwmon.rst
|
|
||||||
@@ -0,0 +1,43 @@
|
|
||||||
+.. SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
+
|
|
||||||
+Kernel driver iei-wt61p803-puzzle-hwmon
|
|
||||||
+=======================================
|
|
||||||
+
|
|
||||||
+Supported chips:
|
|
||||||
+ * IEI WT61P803 PUZZLE for IEI Puzzle M801
|
|
||||||
+
|
|
||||||
+ Prefix: 'iei-wt61p803-puzzle-hwmon'
|
|
||||||
+
|
|
||||||
+Author: Luka Kovacic <luka.kovacic@sartura.hr>
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+Description
|
|
||||||
+-----------
|
|
||||||
+
|
|
||||||
+This driver adds fan and temperature sensor reading for some IEI Puzzle
|
|
||||||
+series boards.
|
|
||||||
+
|
|
||||||
+Sysfs attributes
|
|
||||||
+----------------
|
|
||||||
+
|
|
||||||
+The following attributes are supported:
|
|
||||||
+
|
|
||||||
+- IEI WT61P803 PUZZLE for IEI Puzzle M801
|
|
||||||
+
|
|
||||||
+/sys files in hwmon subsystem
|
|
||||||
+-----------------------------
|
|
||||||
+
|
|
||||||
+================= == =====================================================
|
|
||||||
+fan[1-5]_input RO files for fan speed (in RPM)
|
|
||||||
+pwm[1-2] RW files for fan[1-2] target duty cycle (0..255)
|
|
||||||
+temp[1-2]_input RO files for temperature sensors, in millidegree Celsius
|
|
||||||
+================= == =====================================================
|
|
||||||
+
|
|
||||||
+/sys files in thermal subsystem
|
|
||||||
+-------------------------------
|
|
||||||
+
|
|
||||||
+================= == =====================================================
|
|
||||||
+cur_state RW file for current cooling state of the cooling device
|
|
||||||
+ (0..max_state)
|
|
||||||
+max_state RO file for maximum cooling state of the cooling device
|
|
||||||
+================= == =====================================================
|
|
||||||
--- a/Documentation/hwmon/index.rst
|
|
||||||
+++ b/Documentation/hwmon/index.rst
|
|
||||||
@@ -74,6 +74,7 @@ Hardware Monitoring Kernel Drivers
|
|
||||||
ibmaem
|
|
||||||
ibm-cffps
|
|
||||||
ibmpowernv
|
|
||||||
+ iei-wt61p803-puzzle-hwmon
|
|
||||||
ina209
|
|
||||||
ina2xx
|
|
||||||
ina3221
|
|
|
@ -1,41 +0,0 @@
|
||||||
From 12479baad28d2a08c6cb9e83471057635fa1635c Mon Sep 17 00:00:00 2001
|
|
||||||
From: Luka Kovacic <luka.kovacic () sartura ! hr>
|
|
||||||
Date: Tue, 24 Aug 2021 12:44:38 +0000
|
|
||||||
Subject: [PATCH 7/7] MAINTAINERS: Add an entry for the IEI WT61P803 PUZZLE
|
|
||||||
driver
|
|
||||||
|
|
||||||
Add an entry for the IEI WT61P803 PUZZLE driver (MFD, HWMON, LED drivers).
|
|
||||||
|
|
||||||
Signed-off-by: Luka Kovacic <luka.kovacic@sartura.hr>
|
|
||||||
Signed-off-by: Pavo Banicevic <pavo.banicevic@sartura.hr>
|
|
||||||
Cc: Luka Perkov <luka.perkov@sartura.hr>
|
|
||||||
Cc: Robert Marko <robert.marko@sartura.hr>
|
|
||||||
---
|
|
||||||
MAINTAINERS | 16 ++++++++++++++++
|
|
||||||
1 file changed, 16 insertions(+)
|
|
||||||
|
|
||||||
--- a/MAINTAINERS
|
|
||||||
+++ b/MAINTAINERS
|
|
||||||
@@ -9060,6 +9060,22 @@ F: include/net/nl802154.h
|
|
||||||
F: net/ieee802154/
|
|
||||||
F: net/mac802154/
|
|
||||||
|
|
||||||
+IEI WT61P803 M801 MFD DRIVER
|
|
||||||
+M: Luka Kovacic <luka.kovacic@sartura.hr>
|
|
||||||
+M: Luka Perkov <luka.perkov@sartura.hr>
|
|
||||||
+M: Goran Medic <goran.medic@sartura.hr>
|
|
||||||
+L: linux-kernel@vger.kernel.org
|
|
||||||
+S: Maintained
|
|
||||||
+F: Documentation/ABI/stable/sysfs-driver-iei-wt61p803-puzzle
|
|
||||||
+F: Documentation/devicetree/bindings/hwmon/iei,wt61p803-puzzle-hwmon.yaml
|
|
||||||
+F: Documentation/devicetree/bindings/leds/iei,wt61p803-puzzle-leds.yaml
|
|
||||||
+F: Documentation/devicetree/bindings/mfd/iei,wt61p803-puzzle.yaml
|
|
||||||
+F: Documentation/hwmon/iei-wt61p803-puzzle-hwmon.rst
|
|
||||||
+F: drivers/hwmon/iei-wt61p803-puzzle-hwmon.c
|
|
||||||
+F: drivers/leds/leds-iei-wt61p803-puzzle.c
|
|
||||||
+F: drivers/mfd/iei-wt61p803-puzzle.c
|
|
||||||
+F: include/linux/mfd/iei-wt61p803-puzzle.h
|
|
||||||
+
|
|
||||||
IFE PROTOCOL
|
|
||||||
M: Yotam Gigi <yotam.gi@gmail.com>
|
|
||||||
M: Jamal Hadi Salim <jhs@mojatatu.com>
|
|
|
@ -1,271 +0,0 @@
|
||||||
--- a/drivers/leds/leds-iei-wt61p803-puzzle.c
|
|
||||||
+++ b/drivers/leds/leds-iei-wt61p803-puzzle.c
|
|
||||||
@@ -9,9 +9,13 @@
|
|
||||||
#include <linux/mfd/iei-wt61p803-puzzle.h>
|
|
||||||
#include <linux/mod_devicetable.h>
|
|
||||||
#include <linux/module.h>
|
|
||||||
+#include <linux/of.h>
|
|
||||||
#include <linux/platform_device.h>
|
|
||||||
#include <linux/property.h>
|
|
||||||
#include <linux/slab.h>
|
|
||||||
+#include <linux/workqueue.h>
|
|
||||||
+
|
|
||||||
+#define IEI_LEDS_MAX 4
|
|
||||||
|
|
||||||
enum iei_wt61p803_puzzle_led_state {
|
|
||||||
IEI_LED_OFF = 0x30,
|
|
||||||
@@ -33,7 +37,11 @@ struct iei_wt61p803_puzzle_led {
|
|
||||||
struct iei_wt61p803_puzzle *mcu;
|
|
||||||
unsigned char response_buffer[IEI_WT61P803_PUZZLE_BUF_SIZE];
|
|
||||||
struct mutex lock; /* mutex to protect led_power_state */
|
|
||||||
+ struct work_struct work;
|
|
||||||
int led_power_state;
|
|
||||||
+ int id;
|
|
||||||
+ u8 blinking;
|
|
||||||
+ bool active_low;
|
|
||||||
};
|
|
||||||
|
|
||||||
static inline struct iei_wt61p803_puzzle_led *cdev_to_iei_wt61p803_puzzle_led
|
|
||||||
@@ -51,10 +59,18 @@ static int iei_wt61p803_puzzle_led_brigh
|
|
||||||
size_t reply_size;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
+ if (priv->blinking) {
|
|
||||||
+ if (brightness == LED_OFF)
|
|
||||||
+ priv->blinking = 0;
|
|
||||||
+ else
|
|
||||||
+ return 0;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
led_power_cmd[0] = IEI_WT61P803_PUZZLE_CMD_HEADER_START;
|
|
||||||
led_power_cmd[1] = IEI_WT61P803_PUZZLE_CMD_LED;
|
|
||||||
- led_power_cmd[2] = IEI_WT61P803_PUZZLE_CMD_LED_POWER;
|
|
||||||
- led_power_cmd[3] = brightness == LED_OFF ? IEI_LED_OFF : IEI_LED_ON;
|
|
||||||
+ led_power_cmd[2] = IEI_WT61P803_PUZZLE_CMD_LED_SET(priv->id);
|
|
||||||
+ led_power_cmd[3] = ((brightness == LED_OFF) ^ priv->active_low) ?
|
|
||||||
+ IEI_LED_OFF : priv->blinking?priv->blinking:IEI_LED_ON;
|
|
||||||
|
|
||||||
ret = iei_wt61p803_puzzle_write_command(priv->mcu, led_power_cmd,
|
|
||||||
sizeof(led_power_cmd),
|
|
||||||
@@ -90,39 +106,166 @@ static enum led_brightness iei_wt61p803_
|
|
||||||
return led_state;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static void iei_wt61p803_puzzle_led_apply_blink(struct work_struct *work)
|
|
||||||
+{
|
|
||||||
+ struct iei_wt61p803_puzzle_led *priv = container_of(work, struct iei_wt61p803_puzzle_led, work);
|
|
||||||
+ unsigned char led_blink_cmd[5] = {};
|
|
||||||
+ unsigned char resp_buf[IEI_WT61P803_PUZZLE_BUF_SIZE];
|
|
||||||
+ size_t reply_size;
|
|
||||||
+
|
|
||||||
+ led_blink_cmd[0] = IEI_WT61P803_PUZZLE_CMD_HEADER_START;
|
|
||||||
+ led_blink_cmd[1] = IEI_WT61P803_PUZZLE_CMD_LED;
|
|
||||||
+ led_blink_cmd[2] = IEI_WT61P803_PUZZLE_CMD_LED_SET(priv->id);
|
|
||||||
+ led_blink_cmd[3] = priv->blinking;
|
|
||||||
+
|
|
||||||
+ iei_wt61p803_puzzle_write_command(priv->mcu, led_blink_cmd,
|
|
||||||
+ sizeof(led_blink_cmd),
|
|
||||||
+ resp_buf,
|
|
||||||
+ &reply_size);
|
|
||||||
+
|
|
||||||
+ return;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int iei_wt61p803_puzzle_led_set_blink(struct led_classdev *cdev,
|
|
||||||
+ unsigned long *delay_on,
|
|
||||||
+ unsigned long *delay_off)
|
|
||||||
+{
|
|
||||||
+ struct iei_wt61p803_puzzle_led *priv = cdev_to_iei_wt61p803_puzzle_led(cdev);
|
|
||||||
+ u8 blink_mode = 0;
|
|
||||||
+ int ret = 0;
|
|
||||||
+
|
|
||||||
+ /* set defaults */
|
|
||||||
+ if (!*delay_on && !*delay_off) {
|
|
||||||
+ *delay_on = 500;
|
|
||||||
+ *delay_off = 500;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /* minimum delay for soft-driven blinking is 100ms to keep load low */
|
|
||||||
+ if (*delay_on < 100)
|
|
||||||
+ *delay_on = 100;
|
|
||||||
+
|
|
||||||
+ if (*delay_off < 100)
|
|
||||||
+ *delay_off = 100;
|
|
||||||
+
|
|
||||||
+ /* offload blinking to hardware, if possible */
|
|
||||||
+ if (*delay_on != *delay_off) {
|
|
||||||
+ ret = -EINVAL;
|
|
||||||
+ } else if (*delay_on == 100) {
|
|
||||||
+ blink_mode = IEI_LED_BLINK_5HZ;
|
|
||||||
+ *delay_on = 100;
|
|
||||||
+ *delay_off = 100;
|
|
||||||
+ } else if (*delay_on <= 500) {
|
|
||||||
+ blink_mode = IEI_LED_BLINK_1HZ;
|
|
||||||
+ *delay_on = 500;
|
|
||||||
+ *delay_off = 500;
|
|
||||||
+ } else {
|
|
||||||
+ ret = -EINVAL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ mutex_lock(&priv->lock);
|
|
||||||
+ priv->blinking = blink_mode;
|
|
||||||
+ mutex_unlock(&priv->lock);
|
|
||||||
+
|
|
||||||
+ if (blink_mode)
|
|
||||||
+ schedule_work(&priv->work);
|
|
||||||
+
|
|
||||||
+ return ret;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+static int iei_wt61p803_puzzle_led_set_dt_default(struct led_classdev *cdev,
|
|
||||||
+ struct device_node *np)
|
|
||||||
+{
|
|
||||||
+ const char *state;
|
|
||||||
+ int ret = 0;
|
|
||||||
+
|
|
||||||
+ state = of_get_property(np, "default-state", NULL);
|
|
||||||
+ if (state) {
|
|
||||||
+ if (!strcmp(state, "on")) {
|
|
||||||
+ ret =
|
|
||||||
+ iei_wt61p803_puzzle_led_brightness_set_blocking(
|
|
||||||
+ cdev, cdev->max_brightness);
|
|
||||||
+ } else {
|
|
||||||
+ ret = iei_wt61p803_puzzle_led_brightness_set_blocking(
|
|
||||||
+ cdev, LED_OFF);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return ret;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static int iei_wt61p803_puzzle_led_probe(struct platform_device *pdev)
|
|
||||||
{
|
|
||||||
struct device *dev = &pdev->dev;
|
|
||||||
+ struct device_node *np = dev_of_node(dev);
|
|
||||||
+ struct device_node *child;
|
|
||||||
struct iei_wt61p803_puzzle *mcu = dev_get_drvdata(dev->parent);
|
|
||||||
struct iei_wt61p803_puzzle_led *priv;
|
|
||||||
- struct led_init_data init_data = {};
|
|
||||||
- struct fwnode_handle *child;
|
|
||||||
int ret;
|
|
||||||
+ u32 reg;
|
|
||||||
|
|
||||||
- if (device_get_child_node_count(dev) != 1)
|
|
||||||
+ if (device_get_child_node_count(dev) > IEI_LEDS_MAX)
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
- priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
|
|
||||||
- if (!priv)
|
|
||||||
- return -ENOMEM;
|
|
||||||
-
|
|
||||||
- priv->mcu = mcu;
|
|
||||||
- priv->led_power_state = 1;
|
|
||||||
- mutex_init(&priv->lock);
|
|
||||||
- dev_set_drvdata(dev, priv);
|
|
||||||
-
|
|
||||||
- child = device_get_next_child_node(dev, NULL);
|
|
||||||
- init_data.fwnode = child;
|
|
||||||
-
|
|
||||||
- priv->cdev.brightness_set_blocking = iei_wt61p803_puzzle_led_brightness_set_blocking;
|
|
||||||
- priv->cdev.brightness_get = iei_wt61p803_puzzle_led_brightness_get;
|
|
||||||
- priv->cdev.max_brightness = 1;
|
|
||||||
+ for_each_available_child_of_node(np, child) {
|
|
||||||
+ struct led_init_data init_data = {};
|
|
||||||
|
|
||||||
- ret = devm_led_classdev_register_ext(dev, &priv->cdev, &init_data);
|
|
||||||
- if (ret)
|
|
||||||
- dev_err(dev, "Could not register LED\n");
|
|
||||||
+ ret = of_property_read_u32(child, "reg", ®);
|
|
||||||
+ if (ret) {
|
|
||||||
+ dev_err(dev, "Failed to read led 'reg' property\n");
|
|
||||||
+ goto put_child_node;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (reg > IEI_LEDS_MAX) {
|
|
||||||
+ dev_err(dev, "Invalid led reg %u\n", reg);
|
|
||||||
+ ret = -EINVAL;
|
|
||||||
+ goto put_child_node;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
|
|
||||||
+ if (!priv) {
|
|
||||||
+ ret = -ENOMEM;
|
|
||||||
+ goto put_child_node;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ mutex_init(&priv->lock);
|
|
||||||
+
|
|
||||||
+ dev_set_drvdata(dev, priv);
|
|
||||||
+
|
|
||||||
+ if (of_property_read_bool(child, "active-low"))
|
|
||||||
+ priv->active_low = true;
|
|
||||||
+
|
|
||||||
+ priv->mcu = mcu;
|
|
||||||
+ priv->id = reg;
|
|
||||||
+ priv->led_power_state = 1;
|
|
||||||
+ priv->blinking = 0;
|
|
||||||
+ init_data.fwnode = of_fwnode_handle(child);
|
|
||||||
+
|
|
||||||
+ priv->cdev.brightness_set_blocking = iei_wt61p803_puzzle_led_brightness_set_blocking;
|
|
||||||
+ priv->cdev.brightness_get = iei_wt61p803_puzzle_led_brightness_get;
|
|
||||||
+ priv->cdev.blink_set = iei_wt61p803_puzzle_led_set_blink;
|
|
||||||
+
|
|
||||||
+ priv->cdev.max_brightness = 1;
|
|
||||||
+
|
|
||||||
+ INIT_WORK(&priv->work, iei_wt61p803_puzzle_led_apply_blink);
|
|
||||||
+
|
|
||||||
+ ret = iei_wt61p803_puzzle_led_set_dt_default(&priv->cdev, child);
|
|
||||||
+ if (ret) {
|
|
||||||
+ dev_err(dev, "Could apply default from DT\n");
|
|
||||||
+ goto put_child_node;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ ret = devm_led_classdev_register_ext(dev, &priv->cdev, &init_data);
|
|
||||||
+ if (ret) {
|
|
||||||
+ dev_err(dev, "Could not register LED\n");
|
|
||||||
+ goto put_child_node;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return ret;
|
|
||||||
|
|
||||||
- fwnode_handle_put(child);
|
|
||||||
+put_child_node:
|
|
||||||
+ of_node_put(child);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
--- a/include/linux/mfd/iei-wt61p803-puzzle.h
|
|
||||||
+++ b/include/linux/mfd/iei-wt61p803-puzzle.h
|
|
||||||
@@ -36,7 +36,7 @@
|
|
||||||
#define IEI_WT61P803_PUZZLE_CMD_FUNCTION_OTHER_POWER_LOSS 0x41 /* A */
|
|
||||||
|
|
||||||
#define IEI_WT61P803_PUZZLE_CMD_LED 0x52 /* R */
|
|
||||||
-#define IEI_WT61P803_PUZZLE_CMD_LED_POWER 0x31 /* 1 */
|
|
||||||
+#define IEI_WT61P803_PUZZLE_CMD_LED_SET(n) (0x30 | (n))
|
|
||||||
|
|
||||||
#define IEI_WT61P803_PUZZLE_CMD_TEMP 0x54 /* T */
|
|
||||||
#define IEI_WT61P803_PUZZLE_CMD_TEMP_ALL 0x41 /* A */
|
|
||||||
--- a/drivers/mfd/iei-wt61p803-puzzle.c
|
|
||||||
+++ b/drivers/mfd/iei-wt61p803-puzzle.c
|
|
||||||
@@ -176,6 +176,9 @@ static int iei_wt61p803_puzzle_recv_buf(
|
|
||||||
struct iei_wt61p803_puzzle *mcu = serdev_device_get_drvdata(serdev);
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
+ print_hex_dump_debug("puzzle-mcu rx: ", DUMP_PREFIX_NONE,
|
|
||||||
+ 16, 1, data, size, false);
|
|
||||||
+
|
|
||||||
ret = iei_wt61p803_puzzle_process_resp(mcu, data, size);
|
|
||||||
/* Return the number of processed bytes if function returns error,
|
|
||||||
* discard the remaining incoming data, since the frame this data
|
|
||||||
@@ -246,6 +249,9 @@ int iei_wt61p803_puzzle_write_command(st
|
|
||||||
|
|
||||||
cmd[size - 1] = iei_wt61p803_puzzle_checksum(cmd, size - 1);
|
|
||||||
|
|
||||||
+ print_hex_dump_debug("puzzle-mcu tx: ", DUMP_PREFIX_NONE,
|
|
||||||
+ 16, 1, cmd, size, false);
|
|
||||||
+
|
|
||||||
/* Initialize reply struct */
|
|
||||||
reinit_completion(&mcu->reply->received);
|
|
||||||
mcu->reply->size = 0;
|
|
|
@ -1,20 +0,0 @@
|
||||||
--- a/drivers/net/ethernet/Kconfig
|
|
||||||
+++ b/drivers/net/ethernet/Kconfig
|
|
||||||
@@ -158,6 +158,7 @@ source "drivers/net/ethernet/pasemi/Kcon
|
|
||||||
source "drivers/net/ethernet/pensando/Kconfig"
|
|
||||||
source "drivers/net/ethernet/qlogic/Kconfig"
|
|
||||||
source "drivers/net/ethernet/qualcomm/Kconfig"
|
|
||||||
+source "drivers/net/ethernet/ralink/Kconfig"
|
|
||||||
source "drivers/net/ethernet/rdc/Kconfig"
|
|
||||||
source "drivers/net/ethernet/realtek/Kconfig"
|
|
||||||
source "drivers/net/ethernet/renesas/Kconfig"
|
|
||||||
--- a/drivers/net/ethernet/Makefile
|
|
||||||
+++ b/drivers/net/ethernet/Makefile
|
|
||||||
@@ -71,6 +71,7 @@ obj-$(CONFIG_NET_VENDOR_PACKET_ENGINES)
|
|
||||||
obj-$(CONFIG_NET_VENDOR_PASEMI) += pasemi/
|
|
||||||
obj-$(CONFIG_NET_VENDOR_QLOGIC) += qlogic/
|
|
||||||
obj-$(CONFIG_NET_VENDOR_QUALCOMM) += qualcomm/
|
|
||||||
+obj-$(CONFIG_NET_VENDOR_RALINK) += ralink/
|
|
||||||
obj-$(CONFIG_NET_VENDOR_REALTEK) += realtek/
|
|
||||||
obj-$(CONFIG_NET_VENDOR_RENESAS) += renesas/
|
|
||||||
obj-$(CONFIG_NET_VENDOR_RDC) += rdc/
|
|
|
@ -1,19 +0,0 @@
|
||||||
--- a/arch/mips/include/asm/mach-ralink/mt7620.h
|
|
||||||
+++ b/arch/mips/include/asm/mach-ralink/mt7620.h
|
|
||||||
@@ -135,4 +135,16 @@ static inline int mt7620_get_eco(void)
|
|
||||||
return rt_sysc_r32(SYSC_REG_CHIP_REV) & CHIP_REV_ECO_MASK;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static inline int mt7620_get_chipver(void)
|
|
||||||
+{
|
|
||||||
+ return (rt_sysc_r32(SYSC_REG_CHIP_REV) >> CHIP_REV_VER_SHIFT) &
|
|
||||||
+ CHIP_REV_VER_MASK;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static inline int mt7620_get_pkg(void)
|
|
||||||
+{
|
|
||||||
+ return (rt_sysc_r32(SYSC_REG_CHIP_REV) >> CHIP_REV_PKG_SHIFT) &
|
|
||||||
+ CHIP_REV_PKG_MASK;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
#endif
|
|
|
@ -1,100 +0,0 @@
|
||||||
From ce3d4a4111a5f7e6b4e74bceae5faa6ce388e8ec Mon Sep 17 00:00:00 2001
|
|
||||||
From: John Crispin <blogic@openwrt.org>
|
|
||||||
Date: Sun, 14 Jul 2013 23:08:11 +0200
|
|
||||||
Subject: [PATCH 05/53] MIPS: use set_mode() to enable/disable the cevt-r4k
|
|
||||||
irq
|
|
||||||
|
|
||||||
Signed-off-by: John Crispin <blogic@openwrt.org>
|
|
||||||
---
|
|
||||||
arch/mips/ralink/Kconfig | 5 +++++
|
|
||||||
1 file changed, 5 insertions(+)
|
|
||||||
|
|
||||||
--- a/arch/mips/ralink/Kconfig
|
|
||||||
+++ b/arch/mips/ralink/Kconfig
|
|
||||||
@@ -1,12 +1,17 @@
|
|
||||||
# SPDX-License-Identifier: GPL-2.0
|
|
||||||
if RALINK
|
|
||||||
|
|
||||||
+config CEVT_SYSTICK_QUIRK
|
|
||||||
+ bool
|
|
||||||
+ default n
|
|
||||||
+
|
|
||||||
config CLKEVT_RT3352
|
|
||||||
bool
|
|
||||||
depends on SOC_RT305X || SOC_MT7620
|
|
||||||
default y
|
|
||||||
select TIMER_OF
|
|
||||||
select CLKSRC_MMIO
|
|
||||||
+ select CEVT_SYSTICK_QUIRK
|
|
||||||
|
|
||||||
config RALINK_ILL_ACC
|
|
||||||
bool
|
|
||||||
--- a/arch/mips/kernel/cevt-r4k.c
|
|
||||||
+++ b/arch/mips/kernel/cevt-r4k.c
|
|
||||||
@@ -16,6 +16,31 @@
|
|
||||||
#include <asm/time.h>
|
|
||||||
#include <asm/cevt-r4k.h>
|
|
||||||
|
|
||||||
+#ifdef CONFIG_CEVT_SYSTICK_QUIRK
|
|
||||||
+static int mips_state_oneshot(struct clock_event_device *evt)
|
|
||||||
+{
|
|
||||||
+ unsigned long flags = IRQF_PERCPU | IRQF_TIMER | IRQF_SHARED;
|
|
||||||
+ if (!cp0_timer_irq_installed) {
|
|
||||||
+ cp0_timer_irq_installed = 1;
|
|
||||||
+ if (request_irq(evt->irq, c0_compare_interrupt, flags, "timer",
|
|
||||||
+ c0_compare_interrupt))
|
|
||||||
+ pr_err("Failed to request irq %d (timer)\n", evt->irq);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int mips_state_shutdown(struct clock_event_device *evt)
|
|
||||||
+{
|
|
||||||
+ if (cp0_timer_irq_installed) {
|
|
||||||
+ cp0_timer_irq_installed = 0;
|
|
||||||
+ free_irq(evt->irq, NULL);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
static int mips_next_event(unsigned long delta,
|
|
||||||
struct clock_event_device *evt)
|
|
||||||
{
|
|
||||||
@@ -296,7 +321,9 @@ core_initcall(r4k_register_cpufreq_notif
|
|
||||||
|
|
||||||
int r4k_clockevent_init(void)
|
|
||||||
{
|
|
||||||
+#ifndef CONFIG_CEVT_SYSTICK_QUIRK
|
|
||||||
unsigned long flags = IRQF_PERCPU | IRQF_TIMER | IRQF_SHARED;
|
|
||||||
+#endif
|
|
||||||
unsigned int cpu = smp_processor_id();
|
|
||||||
struct clock_event_device *cd;
|
|
||||||
unsigned int irq, min_delta;
|
|
||||||
@@ -326,11 +353,16 @@ int r4k_clockevent_init(void)
|
|
||||||
cd->rating = 300;
|
|
||||||
cd->irq = irq;
|
|
||||||
cd->cpumask = cpumask_of(cpu);
|
|
||||||
+#ifdef CONFIG_CEVT_SYSTICK_QUIRK
|
|
||||||
+ cd->set_state_shutdown = mips_state_shutdown;
|
|
||||||
+ cd->set_state_oneshot = mips_state_oneshot;
|
|
||||||
+#endif
|
|
||||||
cd->set_next_event = mips_next_event;
|
|
||||||
cd->event_handler = mips_event_handler;
|
|
||||||
|
|
||||||
clockevents_config_and_register(cd, mips_hpt_frequency, min_delta, 0x7fffffff);
|
|
||||||
|
|
||||||
+#ifndef CONFIG_CEVT_SYSTICK_QUIRK
|
|
||||||
if (cp0_timer_irq_installed)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
@@ -339,6 +371,7 @@ int r4k_clockevent_init(void)
|
|
||||||
if (request_irq(irq, c0_compare_interrupt, flags, "timer",
|
|
||||||
c0_compare_interrupt))
|
|
||||||
pr_err("Failed to request irq %d (timer)\n", irq);
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,195 +0,0 @@
|
||||||
From bd30f19a006fb52bac80c6463c49dd2f4159f4ac Mon Sep 17 00:00:00 2001
|
|
||||||
From: John Crispin <blogic@openwrt.org>
|
|
||||||
Date: Sun, 28 Jul 2013 16:26:41 +0200
|
|
||||||
Subject: [PATCH 06/53] MIPS: ralink: add cpu frequency scaling
|
|
||||||
|
|
||||||
This feature will break udelay() and cause the delay loop to have longer delays
|
|
||||||
when the frequency is scaled causing a performance hit.
|
|
||||||
|
|
||||||
Signed-off-by: John Crispin <blogic@openwrt.org>
|
|
||||||
---
|
|
||||||
arch/mips/ralink/cevt-rt3352.c | 38 ++++++++++++++++++++++++++++++++++++++
|
|
||||||
1 file changed, 38 insertions(+)
|
|
||||||
|
|
||||||
--- a/arch/mips/ralink/cevt-rt3352.c
|
|
||||||
+++ b/arch/mips/ralink/cevt-rt3352.c
|
|
||||||
@@ -29,6 +29,10 @@
|
|
||||||
/* enable the counter */
|
|
||||||
#define CFG_CNT_EN 0x1
|
|
||||||
|
|
||||||
+/* mt7620 frequency scaling defines */
|
|
||||||
+#define CLK_LUT_CFG 0x40
|
|
||||||
+#define SLEEP_EN BIT(31)
|
|
||||||
+
|
|
||||||
struct systick_device {
|
|
||||||
void __iomem *membase;
|
|
||||||
struct clock_event_device dev;
|
|
||||||
@@ -36,21 +40,53 @@ struct systick_device {
|
|
||||||
int freq_scale;
|
|
||||||
};
|
|
||||||
|
|
||||||
+static void (*systick_freq_scaling)(struct systick_device *sdev, int status);
|
|
||||||
+
|
|
||||||
static int systick_set_oneshot(struct clock_event_device *evt);
|
|
||||||
static int systick_shutdown(struct clock_event_device *evt);
|
|
||||||
|
|
||||||
+static inline void mt7620_freq_scaling(struct systick_device *sdev, int status)
|
|
||||||
+{
|
|
||||||
+ if (sdev->freq_scale == status)
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
+ sdev->freq_scale = status;
|
|
||||||
+
|
|
||||||
+ pr_info("%s: %s autosleep mode\n", sdev->dev.name,
|
|
||||||
+ (status) ? ("enable") : ("disable"));
|
|
||||||
+ if (status)
|
|
||||||
+ rt_sysc_w32(rt_sysc_r32(CLK_LUT_CFG) | SLEEP_EN, CLK_LUT_CFG);
|
|
||||||
+ else
|
|
||||||
+ rt_sysc_w32(rt_sysc_r32(CLK_LUT_CFG) & ~SLEEP_EN, CLK_LUT_CFG);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static inline unsigned int read_count(struct systick_device *sdev)
|
|
||||||
+{
|
|
||||||
+ return ioread32(sdev->membase + SYSTICK_COUNT);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static inline unsigned int read_compare(struct systick_device *sdev)
|
|
||||||
+{
|
|
||||||
+ return ioread32(sdev->membase + SYSTICK_COMPARE);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static inline void write_compare(struct systick_device *sdev, unsigned int val)
|
|
||||||
+{
|
|
||||||
+ iowrite32(val, sdev->membase + SYSTICK_COMPARE);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static int systick_next_event(unsigned long delta,
|
|
||||||
struct clock_event_device *evt)
|
|
||||||
{
|
|
||||||
struct systick_device *sdev;
|
|
||||||
- u32 count;
|
|
||||||
+ int res;
|
|
||||||
|
|
||||||
sdev = container_of(evt, struct systick_device, dev);
|
|
||||||
- count = ioread32(sdev->membase + SYSTICK_COUNT);
|
|
||||||
- count = (count + delta) % SYSTICK_FREQ;
|
|
||||||
- iowrite32(count, sdev->membase + SYSTICK_COMPARE);
|
|
||||||
+ delta += read_count(sdev);
|
|
||||||
+ write_compare(sdev, delta);
|
|
||||||
+ res = ((int)(read_count(sdev) - delta) >= 0) ? -ETIME : 0;
|
|
||||||
|
|
||||||
- return 0;
|
|
||||||
+ return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void systick_event_handler(struct clock_event_device *dev)
|
|
||||||
@@ -60,20 +96,25 @@ static void systick_event_handler(struct
|
|
||||||
|
|
||||||
static irqreturn_t systick_interrupt(int irq, void *dev_id)
|
|
||||||
{
|
|
||||||
- struct clock_event_device *dev = (struct clock_event_device *) dev_id;
|
|
||||||
+ int ret = 0;
|
|
||||||
+ struct clock_event_device *cdev;
|
|
||||||
+ struct systick_device *sdev;
|
|
||||||
|
|
||||||
- dev->event_handler(dev);
|
|
||||||
+ if (read_c0_cause() & STATUSF_IP7) {
|
|
||||||
+ cdev = (struct clock_event_device *) dev_id;
|
|
||||||
+ sdev = container_of(cdev, struct systick_device, dev);
|
|
||||||
+
|
|
||||||
+ /* Clear Count/Compare Interrupt */
|
|
||||||
+ write_compare(sdev, read_compare(sdev));
|
|
||||||
+ cdev->event_handler(cdev);
|
|
||||||
+ ret = 1;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
- return IRQ_HANDLED;
|
|
||||||
+ return IRQ_RETVAL(ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct systick_device systick = {
|
|
||||||
.dev = {
|
|
||||||
- /*
|
|
||||||
- * cevt-r4k uses 300, make sure systick
|
|
||||||
- * gets used if available
|
|
||||||
- */
|
|
||||||
- .rating = 310,
|
|
||||||
.features = CLOCK_EVT_FEAT_ONESHOT,
|
|
||||||
.set_next_event = systick_next_event,
|
|
||||||
.set_state_shutdown = systick_shutdown,
|
|
||||||
@@ -91,7 +132,13 @@ static int systick_shutdown(struct clock
|
|
||||||
if (sdev->irq_requested)
|
|
||||||
free_irq(systick.dev.irq, &systick.dev);
|
|
||||||
sdev->irq_requested = 0;
|
|
||||||
- iowrite32(0, systick.membase + SYSTICK_CONFIG);
|
|
||||||
+ iowrite32(CFG_CNT_EN, systick.membase + SYSTICK_CONFIG);
|
|
||||||
+
|
|
||||||
+ if (systick_freq_scaling)
|
|
||||||
+ systick_freq_scaling(sdev, 0);
|
|
||||||
+
|
|
||||||
+ if (systick_freq_scaling)
|
|
||||||
+ systick_freq_scaling(sdev, 1);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
@@ -116,33 +163,46 @@ static int systick_set_oneshot(struct cl
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static const struct of_device_id systick_match[] = {
|
|
||||||
+ { .compatible = "ralink,mt7620a-systick", .data = mt7620_freq_scaling},
|
|
||||||
+ {},
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
static int __init ralink_systick_init(struct device_node *np)
|
|
||||||
{
|
|
||||||
- int ret;
|
|
||||||
+ const struct of_device_id *match;
|
|
||||||
+ int rating = 200;
|
|
||||||
|
|
||||||
systick.membase = of_iomap(np, 0);
|
|
||||||
if (!systick.membase)
|
|
||||||
return -ENXIO;
|
|
||||||
|
|
||||||
- systick.dev.name = np->name;
|
|
||||||
- clockevents_calc_mult_shift(&systick.dev, SYSTICK_FREQ, 60);
|
|
||||||
- systick.dev.max_delta_ns = clockevent_delta2ns(0x7fff, &systick.dev);
|
|
||||||
- systick.dev.max_delta_ticks = 0x7fff;
|
|
||||||
- systick.dev.min_delta_ns = clockevent_delta2ns(0x3, &systick.dev);
|
|
||||||
- systick.dev.min_delta_ticks = 0x3;
|
|
||||||
+ match = of_match_node(systick_match, np);
|
|
||||||
+ if (match) {
|
|
||||||
+ systick_freq_scaling = match->data;
|
|
||||||
+ /*
|
|
||||||
+ * cevt-r4k uses 300, make sure systick
|
|
||||||
+ * gets used if available
|
|
||||||
+ */
|
|
||||||
+ rating = 310;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /* enable counter than register clock source */
|
|
||||||
+ iowrite32(CFG_CNT_EN, systick.membase + SYSTICK_CONFIG);
|
|
||||||
+ clocksource_mmio_init(systick.membase + SYSTICK_COUNT, np->name,
|
|
||||||
+ SYSTICK_FREQ, rating, 16, clocksource_mmio_readl_up);
|
|
||||||
+
|
|
||||||
+ /* register clock event */
|
|
||||||
systick.dev.irq = irq_of_parse_and_map(np, 0);
|
|
||||||
if (!systick.dev.irq) {
|
|
||||||
pr_err("%pOFn: request_irq failed", np);
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
- ret = clocksource_mmio_init(systick.membase + SYSTICK_COUNT, np->name,
|
|
||||||
- SYSTICK_FREQ, 301, 16,
|
|
||||||
- clocksource_mmio_readl_up);
|
|
||||||
- if (ret)
|
|
||||||
- return ret;
|
|
||||||
-
|
|
||||||
- clockevents_register_device(&systick.dev);
|
|
||||||
+ systick.dev.name = np->name;
|
|
||||||
+ systick.dev.rating = rating;
|
|
||||||
+ systick.dev.cpumask = cpumask_of(0);
|
|
||||||
+ clockevents_config_and_register(&systick.dev, SYSTICK_FREQ, 0x3, 0x7fff);
|
|
||||||
|
|
||||||
pr_info("%pOFn: running - mult: %d, shift: %d\n",
|
|
||||||
np, systick.dev.mult, systick.dev.shift);
|
|
|
@ -1,63 +0,0 @@
|
||||||
From f15d27f9c90ede4b16eb37f9ae573ef81c2b6996 Mon Sep 17 00:00:00 2001
|
|
||||||
From: David Bauer <mail@david-bauer.net>
|
|
||||||
Date: Thu, 31 Dec 2020 18:49:12 +0100
|
|
||||||
Subject: [PATCH] MIPS: add bootargs-override property
|
|
||||||
|
|
||||||
Add support for the bootargs-override property to the chosen node
|
|
||||||
similar to the one used on ipq806x or mpc85xx.
|
|
||||||
|
|
||||||
This is necessary, as the U-Boot used on some boards, notably the
|
|
||||||
Ubiquiti UniFi 6 Lite, overwrite the bootargs property of the chosen
|
|
||||||
node leading to a kernel panic when loading OpenWrt.
|
|
||||||
|
|
||||||
Signed-off-by: David Bauer <mail@david-bauer.net>
|
|
||||||
---
|
|
||||||
arch/mips/kernel/setup.c | 30 ++++++++++++++++++++++++++++++
|
|
||||||
1 file changed, 30 insertions(+)
|
|
||||||
|
|
||||||
--- a/arch/mips/kernel/setup.c
|
|
||||||
+++ b/arch/mips/kernel/setup.c
|
|
||||||
@@ -542,8 +542,28 @@ static int __init bootcmdline_scan_chose
|
|
||||||
|
|
||||||
#endif /* CONFIG_OF_EARLY_FLATTREE */
|
|
||||||
|
|
||||||
+static int __init bootcmdline_scan_chosen_override(unsigned long node, const char *uname,
|
|
||||||
+ int depth, void *data)
|
|
||||||
+{
|
|
||||||
+ bool *dt_bootargs = data;
|
|
||||||
+ const char *p;
|
|
||||||
+ int l;
|
|
||||||
+
|
|
||||||
+ if (depth != 1 || !data || strcmp(uname, "chosen") != 0)
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
+ p = of_get_flat_dt_prop(node, "bootargs-override", &l);
|
|
||||||
+ if (p != NULL && l > 0) {
|
|
||||||
+ strlcpy(boot_command_line, p, COMMAND_LINE_SIZE);
|
|
||||||
+ *dt_bootargs = true;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return 1;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static void __init bootcmdline_init(void)
|
|
||||||
{
|
|
||||||
+ bool dt_bootargs_override = false;
|
|
||||||
bool dt_bootargs = false;
|
|
||||||
|
|
||||||
/*
|
|
||||||
@@ -557,6 +577,14 @@ static void __init bootcmdline_init(void
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
+ * If bootargs-override in the chosen node is set, use this as the
|
|
||||||
+ * command line
|
|
||||||
+ */
|
|
||||||
+ of_scan_flat_dt(bootcmdline_scan_chosen_override, &dt_bootargs_override);
|
|
||||||
+ if (dt_bootargs_override)
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
+ /*
|
|
||||||
* If the user specified a built-in command line &
|
|
||||||
* MIPS_CMDLINE_BUILTIN_EXTEND, then the built-in command line is
|
|
||||||
* prepended to arguments from the bootloader or DT so we'll copy them
|
|
|
@ -1,25 +0,0 @@
|
||||||
From 9e6ce539092a1dd605a20bf73c655a9de58d8641 Mon Sep 17 00:00:00 2001
|
|
||||||
From: John Crispin <blogic@openwrt.org>
|
|
||||||
Date: Mon, 7 Dec 2015 17:18:05 +0100
|
|
||||||
Subject: [PATCH 15/53] arch: mips: do not select illegal access driver by
|
|
||||||
default
|
|
||||||
|
|
||||||
Signed-off-by: John Crispin <blogic@openwrt.org>
|
|
||||||
---
|
|
||||||
arch/mips/ralink/Kconfig | 4 ++--
|
|
||||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
--- a/arch/mips/ralink/Kconfig
|
|
||||||
+++ b/arch/mips/ralink/Kconfig
|
|
||||||
@@ -14,9 +14,9 @@ config CLKEVT_RT3352
|
|
||||||
select CEVT_SYSTICK_QUIRK
|
|
||||||
|
|
||||||
config RALINK_ILL_ACC
|
|
||||||
- bool
|
|
||||||
+ bool "illegal access irq"
|
|
||||||
depends on SOC_RT305X
|
|
||||||
- default y
|
|
||||||
+ default n
|
|
||||||
|
|
||||||
config IRQ_INTC
|
|
||||||
bool
|
|
|
@ -1,15 +0,0 @@
|
||||||
--- a/arch/mips/ralink/irq-gic.c
|
|
||||||
+++ b/arch/mips/ralink/irq-gic.c
|
|
||||||
@@ -13,6 +13,12 @@
|
|
||||||
|
|
||||||
int get_c0_perfcount_int(void)
|
|
||||||
{
|
|
||||||
+ /*
|
|
||||||
+ * Performance counter events are routed through GIC.
|
|
||||||
+ * Prevent them from firing on CPU IRQ7 as well
|
|
||||||
+ */
|
|
||||||
+ clear_c0_status(IE_SW0 << 7);
|
|
||||||
+
|
|
||||||
return gic_get_c0_perfcount_int();
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL_GPL(get_c0_perfcount_int);
|
|
|
@ -1,20 +0,0 @@
|
||||||
From ee9081b2726a5ca8cde5497afdc5425e21ff8f8b Mon Sep 17 00:00:00 2001
|
|
||||||
From: John Crispin <blogic@openwrt.org>
|
|
||||||
Date: Mon, 15 Jul 2013 00:39:21 +0200
|
|
||||||
Subject: [PATCH 37/53] mtd: cfi cmdset 0002 force word write
|
|
||||||
|
|
||||||
---
|
|
||||||
drivers/mtd/chips/cfi_cmdset_0002.c | 9 +++++++--
|
|
||||||
1 file changed, 7 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
--- a/drivers/mtd/chips/cfi_cmdset_0002.c
|
|
||||||
+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
|
|
||||||
@@ -40,7 +40,7 @@
|
|
||||||
#include <linux/mtd/xip.h>
|
|
||||||
|
|
||||||
#define AMD_BOOTLOC_BUG
|
|
||||||
-#define FORCE_WORD_WRITE 0
|
|
||||||
+#define FORCE_WORD_WRITE 1
|
|
||||||
|
|
||||||
#define MAX_RETRIES 3
|
|
||||||
|
|
|
@ -1,75 +0,0 @@
|
||||||
From 52d14545d2fc276b1bf9ccf48d4612fab6edfb6a Mon Sep 17 00:00:00 2001
|
|
||||||
From: David Bauer <mail@david-bauer.net>
|
|
||||||
Date: Thu, 6 May 2021 17:49:55 +0200
|
|
||||||
Subject: [PATCH] mtd: spi-nor: Add support for BoHong bh25q128as
|
|
||||||
|
|
||||||
Add MTD support for the BoHong bh25q128as SPI NOR chip.
|
|
||||||
The chip has 16MB of total capacity, divided into a total of 256
|
|
||||||
sectors, each 64KB sized. The chip also supports 4KB sectors.
|
|
||||||
Additionally, it supports dual and quad read modes.
|
|
||||||
|
|
||||||
Functionality was verified on an Tenbay WR1800K / MTK MT7621 board.
|
|
||||||
|
|
||||||
Signed-off-by: David Bauer <mail@david-bauer.net>
|
|
||||||
---
|
|
||||||
drivers/mtd/spi-nor/Makefile | 1 +
|
|
||||||
drivers/mtd/spi-nor/bohong.c | 21 +++++++++++++++++++++
|
|
||||||
drivers/mtd/spi-nor/core.c | 1 +
|
|
||||||
drivers/mtd/spi-nor/core.h | 1 +
|
|
||||||
4 files changed, 24 insertions(+)
|
|
||||||
create mode 100644 drivers/mtd/spi-nor/bohong.c
|
|
||||||
|
|
||||||
--- a/drivers/mtd/spi-nor/Makefile
|
|
||||||
+++ b/drivers/mtd/spi-nor/Makefile
|
|
||||||
@@ -2,6 +2,7 @@
|
|
||||||
|
|
||||||
spi-nor-objs := core.o sfdp.o
|
|
||||||
spi-nor-objs += atmel.o
|
|
||||||
+spi-nor-objs += bohong.o
|
|
||||||
spi-nor-objs += catalyst.o
|
|
||||||
spi-nor-objs += eon.o
|
|
||||||
spi-nor-objs += esmt.o
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/drivers/mtd/spi-nor/bohong.c
|
|
||||||
@@ -0,0 +1,21 @@
|
|
||||||
+// SPDX-License-Identifier: GPL-2.0
|
|
||||||
+/*
|
|
||||||
+ * Copyright (C) 2005, Intec Automation Inc.
|
|
||||||
+ * Copyright (C) 2014, Freescale Semiconductor, Inc.
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+#include <linux/mtd/spi-nor.h>
|
|
||||||
+
|
|
||||||
+#include "core.h"
|
|
||||||
+
|
|
||||||
+static const struct flash_info bohong_parts[] = {
|
|
||||||
+ /* BoHong Microelectronics */
|
|
||||||
+ { "bh25q128as", INFO(0x684018, 0, 64 * 1024, 256,
|
|
||||||
+ SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+const struct spi_nor_manufacturer spi_nor_bohong = {
|
|
||||||
+ .name = "bohong",
|
|
||||||
+ .parts = bohong_parts,
|
|
||||||
+ .nparts = ARRAY_SIZE(bohong_parts),
|
|
||||||
+};
|
|
||||||
--- a/drivers/mtd/spi-nor/core.c
|
|
||||||
+++ b/drivers/mtd/spi-nor/core.c
|
|
||||||
@@ -2038,6 +2038,7 @@ int spi_nor_sr2_bit7_quad_enable(struct
|
|
||||||
|
|
||||||
static const struct spi_nor_manufacturer *manufacturers[] = {
|
|
||||||
&spi_nor_atmel,
|
|
||||||
+ &spi_nor_bohong,
|
|
||||||
&spi_nor_catalyst,
|
|
||||||
&spi_nor_eon,
|
|
||||||
&spi_nor_esmt,
|
|
||||||
--- a/drivers/mtd/spi-nor/core.h
|
|
||||||
+++ b/drivers/mtd/spi-nor/core.h
|
|
||||||
@@ -382,6 +382,7 @@ struct spi_nor_manufacturer {
|
|
||||||
|
|
||||||
/* Manufacturer drivers. */
|
|
||||||
extern const struct spi_nor_manufacturer spi_nor_atmel;
|
|
||||||
+extern const struct spi_nor_manufacturer spi_nor_bohong;
|
|
||||||
extern const struct spi_nor_manufacturer spi_nor_catalyst;
|
|
||||||
extern const struct spi_nor_manufacturer spi_nor_eon;
|
|
||||||
extern const struct spi_nor_manufacturer spi_nor_esmt;
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,85 +0,0 @@
|
||||||
From 3d5f4da8296b23eb3abf8b13122b0d06a215e79c Mon Sep 17 00:00:00 2001
|
|
||||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
|
||||||
Date: Wed, 1 Apr 2020 02:07:59 +0800
|
|
||||||
Subject: [PATCH 2/2] dt-bindings: add documentation for mt7621-nand driver
|
|
||||||
|
|
||||||
This patch adds documentation for MediaTek MT7621 NAND flash controller
|
|
||||||
driver.
|
|
||||||
|
|
||||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
|
||||||
---
|
|
||||||
.../bindings/mtd/mediatek,mt7621-nfc.yaml | 68 ++++++++++++++++++++++
|
|
||||||
1 file changed, 68 insertions(+)
|
|
||||||
create mode 100644 Documentation/devicetree/bindings/mtd/mediatek,mt7621-nfc.yaml
|
|
||||||
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/Documentation/devicetree/bindings/mtd/mediatek,mt7621-nfc.yaml
|
|
||||||
@@ -0,0 +1,68 @@
|
|
||||||
+# SPDX-License-Identifier: GPL-2.0
|
|
||||||
+%YAML 1.2
|
|
||||||
+---
|
|
||||||
+$id: http://devicetree.org/schemas/mtd/mediatek,mt7621-nfc.yaml#
|
|
||||||
+$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
||||||
+
|
|
||||||
+title: MediaTek MT7621 SoC NAND Flash Controller (NFC) DT binding
|
|
||||||
+
|
|
||||||
+maintainers:
|
|
||||||
+ - Weijie Gao <weijie.gao@mediatek.com>
|
|
||||||
+
|
|
||||||
+description: |
|
|
||||||
+ This driver uses a single node to describe both NAND Flash controller
|
|
||||||
+ interface (NFI) and ECC engine for MT7621 SoC.
|
|
||||||
+ MT7621 supports only one chip select.
|
|
||||||
+
|
|
||||||
+properties:
|
|
||||||
+ "#address-cells": false
|
|
||||||
+ "#size-cells": false
|
|
||||||
+
|
|
||||||
+ compatible:
|
|
||||||
+ enum:
|
|
||||||
+ - mediatek,mt7621-nfc
|
|
||||||
+
|
|
||||||
+ reg:
|
|
||||||
+ items:
|
|
||||||
+ - description: Register base of NFI core
|
|
||||||
+ - description: Register base of ECC engine
|
|
||||||
+
|
|
||||||
+ reg-names:
|
|
||||||
+ items:
|
|
||||||
+ - const: nfi
|
|
||||||
+ - const: ecc
|
|
||||||
+
|
|
||||||
+ clocks:
|
|
||||||
+ items:
|
|
||||||
+ - description: Source clock for NFI core, fixed 125MHz
|
|
||||||
+
|
|
||||||
+ clock-names:
|
|
||||||
+ items:
|
|
||||||
+ - const: nfi_clk
|
|
||||||
+
|
|
||||||
+required:
|
|
||||||
+ - compatible
|
|
||||||
+ - reg
|
|
||||||
+ - reg-names
|
|
||||||
+ - clocks
|
|
||||||
+ - clock-names
|
|
||||||
+
|
|
||||||
+examples:
|
|
||||||
+ - |
|
|
||||||
+ nficlock: nficlock {
|
|
||||||
+ #clock-cells = <0>;
|
|
||||||
+ compatible = "fixed-clock";
|
|
||||||
+
|
|
||||||
+ clock-frequency = <125000000>;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ nand@1e003000 {
|
|
||||||
+ compatible = "mediatek,mt7621-nfc";
|
|
||||||
+
|
|
||||||
+ reg = <0x1e003000 0x800
|
|
||||||
+ 0x1e003800 0x800>;
|
|
||||||
+ reg-names = "nfi", "ecc";
|
|
||||||
+
|
|
||||||
+ clocks = <&nficlock>;
|
|
||||||
+ clock-names = "nfi_clk";
|
|
||||||
+ };
|
|
|
@ -1,34 +0,0 @@
|
||||||
From bd0f89de5476ca25e73fae829ba3e1dafae1d90d Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Ren=C3=A9=20van=20Dorst?= <opensource@vdorst.com>
|
|
||||||
Date: Fri, 21 Jun 2019 10:04:05 +0200
|
|
||||||
Subject: [PATCH] net: ethernet: mediatek: support net-labels
|
|
||||||
|
|
||||||
With this patch, device name can be set within dts file in the same way as dsa
|
|
||||||
port can.
|
|
||||||
Add: label = "wan"; to GMAC node.
|
|
||||||
|
|
||||||
Signed-off-by: René van Dorst <opensource@vdorst.com>
|
|
||||||
---
|
|
||||||
drivers/net/ethernet/mediatek/mtk_eth_soc.c | 4 ++++
|
|
||||||
1 file changed, 4 insertions(+)
|
|
||||||
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
|
||||||
@@ -2911,6 +2911,7 @@ static const struct net_device_ops mtk_n
|
|
||||||
|
|
||||||
static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np)
|
|
||||||
{
|
|
||||||
+ const char *name = of_get_property(np, "label", NULL);
|
|
||||||
const __be32 *_id = of_get_property(np, "reg", NULL);
|
|
||||||
phy_interface_t phy_mode;
|
|
||||||
struct phylink *phylink;
|
|
||||||
@@ -3003,6 +3004,9 @@ static int mtk_add_mac(struct mtk_eth *e
|
|
||||||
|
|
||||||
eth->netdev[id]->max_mtu = MTK_MAX_RX_LENGTH - MTK_RX_ETH_HLEN;
|
|
||||||
|
|
||||||
+ if (name)
|
|
||||||
+ strlcpy(eth->netdev[id]->name, name, IFNAMSIZ);
|
|
||||||
+
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
free_netdev:
|
|
|
@ -1,118 +0,0 @@
|
||||||
From ffbb1b37a3e1ce1a5c574a6bd4f5aede8bc468ac Mon Sep 17 00:00:00 2001
|
|
||||||
From: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com>
|
|
||||||
Date: Sat, 27 Feb 2021 20:20:07 -0800
|
|
||||||
Subject: [PATCH] Revert "net: phy: simplify phy_link_change arguments"
|
|
||||||
|
|
||||||
This reverts commit a307593a644443db12888f45eed0dafb5869e2cc.
|
|
||||||
|
|
||||||
This brings back the do_carrier flags used by the (hacky) next patch,
|
|
||||||
still required by target/linux/ramips/files/drivers/net/ethernet/ralink/mdio.c
|
|
||||||
---
|
|
||||||
drivers/net/phy/phy.c | 12 ++++++------
|
|
||||||
drivers/net/phy/phy_device.c | 12 +++++++-----
|
|
||||||
drivers/net/phy/phylink.c | 3 ++-
|
|
||||||
include/linux/phy.h | 2 +-
|
|
||||||
4 files changed, 16 insertions(+), 13 deletions(-)
|
|
||||||
|
|
||||||
--- a/drivers/net/phy/phy.c
|
|
||||||
+++ b/drivers/net/phy/phy.c
|
|
||||||
@@ -58,13 +58,13 @@ static const char *phy_state_to_str(enum
|
|
||||||
|
|
||||||
static void phy_link_up(struct phy_device *phydev)
|
|
||||||
{
|
|
||||||
- phydev->phy_link_change(phydev, true);
|
|
||||||
+ phydev->phy_link_change(phydev, true, true);
|
|
||||||
phy_led_trigger_change_speed(phydev);
|
|
||||||
}
|
|
||||||
|
|
||||||
-static void phy_link_down(struct phy_device *phydev)
|
|
||||||
+static void phy_link_down(struct phy_device *phydev, bool do_carrier)
|
|
||||||
{
|
|
||||||
- phydev->phy_link_change(phydev, false);
|
|
||||||
+ phydev->phy_link_change(phydev, false, do_carrier);
|
|
||||||
phy_led_trigger_change_speed(phydev);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -618,7 +618,7 @@ int phy_start_cable_test(struct phy_devi
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
/* Mark the carrier down until the test is complete */
|
|
||||||
- phy_link_down(phydev);
|
|
||||||
+ phy_link_down(phydev, true);
|
|
||||||
|
|
||||||
netif_testing_on(dev);
|
|
||||||
err = phydev->drv->cable_test_start(phydev);
|
|
||||||
@@ -689,7 +689,7 @@ int phy_start_cable_test_tdr(struct phy_
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
/* Mark the carrier down until the test is complete */
|
|
||||||
- phy_link_down(phydev);
|
|
||||||
+ phy_link_down(phydev, true);
|
|
||||||
|
|
||||||
netif_testing_on(dev);
|
|
||||||
err = phydev->drv->cable_test_tdr_start(phydev, config);
|
|
||||||
@@ -760,7 +760,7 @@ static int phy_check_link_status(struct
|
|
||||||
phy_link_up(phydev);
|
|
||||||
} else if (!phydev->link && phydev->state != PHY_NOLINK) {
|
|
||||||
phydev->state = PHY_NOLINK;
|
|
||||||
- phy_link_down(phydev);
|
|
||||||
+ phy_link_down(phydev, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
@@ -1164,7 +1164,7 @@ void phy_state_machine(struct work_struc
|
|
||||||
case PHY_HALTED:
|
|
||||||
if (phydev->link) {
|
|
||||||
phydev->link = 0;
|
|
||||||
- phy_link_down(phydev);
|
|
||||||
+ phy_link_down(phydev, true);
|
|
||||||
}
|
|
||||||
do_suspend = true;
|
|
||||||
break;
|
|
||||||
--- a/drivers/net/phy/phy_device.c
|
|
||||||
+++ b/drivers/net/phy/phy_device.c
|
|
||||||
@@ -936,14 +936,16 @@ struct phy_device *phy_find_first(struct
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(phy_find_first);
|
|
||||||
|
|
||||||
-static void phy_link_change(struct phy_device *phydev, bool up)
|
|
||||||
+static void phy_link_change(struct phy_device *phydev, bool up, bool do_carrier)
|
|
||||||
{
|
|
||||||
struct net_device *netdev = phydev->attached_dev;
|
|
||||||
|
|
||||||
- if (up)
|
|
||||||
- netif_carrier_on(netdev);
|
|
||||||
- else
|
|
||||||
- netif_carrier_off(netdev);
|
|
||||||
+ if (do_carrier) {
|
|
||||||
+ if (up)
|
|
||||||
+ netif_carrier_on(netdev);
|
|
||||||
+ else
|
|
||||||
+ netif_carrier_off(netdev);
|
|
||||||
+ }
|
|
||||||
phydev->adjust_link(netdev);
|
|
||||||
if (phydev->mii_ts && phydev->mii_ts->link_state)
|
|
||||||
phydev->mii_ts->link_state(phydev->mii_ts, phydev);
|
|
||||||
--- a/drivers/net/phy/phylink.c
|
|
||||||
+++ b/drivers/net/phy/phylink.c
|
|
||||||
@@ -907,7 +907,8 @@ void phylink_destroy(struct phylink *pl)
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL_GPL(phylink_destroy);
|
|
||||||
|
|
||||||
-static void phylink_phy_change(struct phy_device *phydev, bool up)
|
|
||||||
+static void phylink_phy_change(struct phy_device *phydev, bool up,
|
|
||||||
+ bool do_carrier)
|
|
||||||
{
|
|
||||||
struct phylink *pl = phydev->phylink;
|
|
||||||
bool tx_pause, rx_pause;
|
|
||||||
--- a/include/linux/phy.h
|
|
||||||
+++ b/include/linux/phy.h
|
|
||||||
@@ -638,7 +638,7 @@ struct phy_device {
|
|
||||||
u8 mdix;
|
|
||||||
u8 mdix_ctrl;
|
|
||||||
|
|
||||||
- void (*phy_link_change)(struct phy_device *phydev, bool up);
|
|
||||||
+ void (*phy_link_change)(struct phy_device *, bool up, bool do_carrier);
|
|
||||||
void (*adjust_link)(struct net_device *dev);
|
|
||||||
|
|
||||||
#if IS_ENABLED(CONFIG_MACSEC)
|
|
|
@ -1,59 +0,0 @@
|
||||||
From d410e5478c622c01fcf31427533df5f433df9146 Mon Sep 17 00:00:00 2001
|
|
||||||
From: John Crispin <blogic@openwrt.org>
|
|
||||||
Date: Sun, 28 Jul 2013 19:45:30 +0200
|
|
||||||
Subject: [PATCH 26/53] DT: Add documentation for gpio-ralink
|
|
||||||
|
|
||||||
Describe gpio-ralink binding.
|
|
||||||
|
|
||||||
Signed-off-by: John Crispin <blogic@openwrt.org>
|
|
||||||
Cc: linux-mips@linux-mips.org
|
|
||||||
Cc: devicetree@vger.kernel.org
|
|
||||||
Cc: linux-gpio@vger.kernel.org
|
|
||||||
---
|
|
||||||
.../devicetree/bindings/gpio/gpio-ralink.txt | 40 ++++++++++++++++++++
|
|
||||||
1 file changed, 40 insertions(+)
|
|
||||||
create mode 100644 Documentation/devicetree/bindings/gpio/gpio-ralink.txt
|
|
||||||
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/Documentation/devicetree/bindings/gpio/gpio-ralink.txt
|
|
||||||
@@ -0,0 +1,40 @@
|
|
||||||
+Ralink SoC GPIO controller bindings
|
|
||||||
+
|
|
||||||
+Required properties:
|
|
||||||
+- compatible:
|
|
||||||
+ - "ralink,rt2880-gpio" for Ralink controllers
|
|
||||||
+- #gpio-cells : Should be two.
|
|
||||||
+ - first cell is the pin number
|
|
||||||
+ - second cell is used to specify optional parameters (unused)
|
|
||||||
+- gpio-controller : Marks the device node as a GPIO controller
|
|
||||||
+- reg : Physical base address and length of the controller's registers
|
|
||||||
+- interrupt-parent: phandle to the INTC device node
|
|
||||||
+- interrupts : Specify the INTC interrupt number
|
|
||||||
+- ngpios : Specify the number of GPIOs
|
|
||||||
+- ralink,register-map : The register layout depends on the GPIO bank and actual
|
|
||||||
+ SoC type. Register offsets need to be in this order.
|
|
||||||
+ [ INT, EDGE, RENA, FENA, DATA, DIR, POL, SET, RESET, TOGGLE ]
|
|
||||||
+
|
|
||||||
+Optional properties:
|
|
||||||
+- ralink,gpio-base : Specify the GPIO chips base number
|
|
||||||
+
|
|
||||||
+Example:
|
|
||||||
+
|
|
||||||
+ gpio0: gpio@600 {
|
|
||||||
+ compatible = "ralink,rt5350-gpio", "ralink,rt2880-gpio";
|
|
||||||
+
|
|
||||||
+ #gpio-cells = <2>;
|
|
||||||
+ gpio-controller;
|
|
||||||
+
|
|
||||||
+ reg = <0x600 0x34>;
|
|
||||||
+
|
|
||||||
+ interrupt-parent = <&intc>;
|
|
||||||
+ interrupts = <6>;
|
|
||||||
+
|
|
||||||
+ ngpios = <24>;
|
|
||||||
+ ralink,gpio-base = <0>;
|
|
||||||
+ ralink,register-map = [ 00 04 08 0c
|
|
||||||
+ 20 24 28 2c
|
|
||||||
+ 30 34 ];
|
|
||||||
+
|
|
||||||
+ };
|
|
|
@ -1,416 +0,0 @@
|
||||||
From 69fdd2c4f937796b934e89c33acde9d082e27bfd Mon Sep 17 00:00:00 2001
|
|
||||||
From: John Crispin <blogic@openwrt.org>
|
|
||||||
Date: Mon, 4 Aug 2014 20:36:29 +0200
|
|
||||||
Subject: [PATCH 27/53] GPIO: MIPS: ralink: add gpio driver for ralink SoC
|
|
||||||
|
|
||||||
Add gpio driver for Ralink SoC. This driver makes the gpio core on
|
|
||||||
RT2880, RT305x, rt3352, rt3662, rt3883, rt5350 and mt7620 work.
|
|
||||||
|
|
||||||
Signed-off-by: John Crispin <blogic@openwrt.org>
|
|
||||||
Cc: linux-mips@linux-mips.org
|
|
||||||
Cc: linux-gpio@vger.kernel.org
|
|
||||||
---
|
|
||||||
arch/mips/include/asm/mach-ralink/gpio.h | 24 ++
|
|
||||||
drivers/gpio/Kconfig | 6 +
|
|
||||||
drivers/gpio/Makefile | 1 +
|
|
||||||
drivers/gpio/gpio-ralink.c | 355 ++++++++++++++++++++++++++++++
|
|
||||||
4 files changed, 386 insertions(+)
|
|
||||||
create mode 100644 arch/mips/include/asm/mach-ralink/gpio.h
|
|
||||||
create mode 100644 drivers/gpio/gpio-ralink.c
|
|
||||||
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/arch/mips/include/asm/mach-ralink/gpio.h
|
|
||||||
@@ -0,0 +1,24 @@
|
|
||||||
+/*
|
|
||||||
+ * Ralink SoC GPIO API support
|
|
||||||
+ *
|
|
||||||
+ * Copyright (C) 2008-2009 Gabor Juhos <juhosg@openwrt.org>
|
|
||||||
+ * Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
|
|
||||||
+ *
|
|
||||||
+ * This program is free software; you can redistribute it and/or modify it
|
|
||||||
+ * under the terms of the GNU General Public License version 2 as published
|
|
||||||
+ * by the Free Software Foundation.
|
|
||||||
+ *
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+#ifndef __ASM_MACH_RALINK_GPIO_H
|
|
||||||
+#define __ASM_MACH_RALINK_GPIO_H
|
|
||||||
+
|
|
||||||
+#define ARCH_NR_GPIOS 128
|
|
||||||
+#include <asm-generic/gpio.h>
|
|
||||||
+
|
|
||||||
+#define gpio_get_value __gpio_get_value
|
|
||||||
+#define gpio_set_value __gpio_set_value
|
|
||||||
+#define gpio_cansleep __gpio_cansleep
|
|
||||||
+#define gpio_to_irq __gpio_to_irq
|
|
||||||
+
|
|
||||||
+#endif /* __ASM_MACH_RALINK_GPIO_H */
|
|
||||||
--- a/drivers/gpio/Kconfig
|
|
||||||
+++ b/drivers/gpio/Kconfig
|
|
||||||
@@ -535,6 +535,12 @@ config GPIO_SNPS_CREG
|
|
||||||
where only several fields in register belong to GPIO lines and
|
|
||||||
each GPIO line owns a field with different length and on/off value.
|
|
||||||
|
|
||||||
+config GPIO_RALINK
|
|
||||||
+ bool "Ralink GPIO Support"
|
|
||||||
+ depends on RALINK
|
|
||||||
+ help
|
|
||||||
+ Say yes here to support the Ralink SoC GPIO device
|
|
||||||
+
|
|
||||||
config GPIO_SPEAR_SPICS
|
|
||||||
bool "ST SPEAr13xx SPI Chip Select as GPIO support"
|
|
||||||
depends on PLAT_SPEAR
|
|
||||||
--- a/drivers/gpio/Makefile
|
|
||||||
+++ b/drivers/gpio/Makefile
|
|
||||||
@@ -119,6 +119,7 @@ obj-$(CONFIG_GPIO_PISOSR) += gpio-pisos
|
|
||||||
obj-$(CONFIG_GPIO_PL061) += gpio-pl061.o
|
|
||||||
obj-$(CONFIG_GPIO_PMIC_EIC_SPRD) += gpio-pmic-eic-sprd.o
|
|
||||||
obj-$(CONFIG_GPIO_PXA) += gpio-pxa.o
|
|
||||||
+obj-$(CONFIG_GPIO_RALINK) += gpio-ralink.o
|
|
||||||
obj-$(CONFIG_GPIO_RASPBERRYPI_EXP) += gpio-raspberrypi-exp.o
|
|
||||||
obj-$(CONFIG_GPIO_RC5T583) += gpio-rc5t583.o
|
|
||||||
obj-$(CONFIG_GPIO_RCAR) += gpio-rcar.o
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/drivers/gpio/gpio-ralink.c
|
|
||||||
@@ -0,0 +1,341 @@
|
|
||||||
+/*
|
|
||||||
+ * This program is free software; you can redistribute it and/or modify it
|
|
||||||
+ * under the terms of the GNU General Public License version 2 as published
|
|
||||||
+ * by the Free Software Foundation.
|
|
||||||
+ *
|
|
||||||
+ * Copyright (C) 2009-2011 Gabor Juhos <juhosg@openwrt.org>
|
|
||||||
+ * Copyright (C) 2013 John Crispin <blogic@openwrt.org>
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+#include <linux/module.h>
|
|
||||||
+#include <linux/io.h>
|
|
||||||
+#include <linux/gpio.h>
|
|
||||||
+#include <linux/spinlock.h>
|
|
||||||
+#include <linux/platform_device.h>
|
|
||||||
+#include <linux/of_irq.h>
|
|
||||||
+#include <linux/irqdomain.h>
|
|
||||||
+#include <linux/interrupt.h>
|
|
||||||
+
|
|
||||||
+enum ralink_gpio_reg {
|
|
||||||
+ GPIO_REG_INT = 0,
|
|
||||||
+ GPIO_REG_EDGE,
|
|
||||||
+ GPIO_REG_RENA,
|
|
||||||
+ GPIO_REG_FENA,
|
|
||||||
+ GPIO_REG_DATA,
|
|
||||||
+ GPIO_REG_DIR,
|
|
||||||
+ GPIO_REG_POL,
|
|
||||||
+ GPIO_REG_SET,
|
|
||||||
+ GPIO_REG_RESET,
|
|
||||||
+ GPIO_REG_TOGGLE,
|
|
||||||
+ GPIO_REG_MAX
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+struct ralink_gpio_chip {
|
|
||||||
+ struct gpio_chip chip;
|
|
||||||
+ u8 regs[GPIO_REG_MAX];
|
|
||||||
+
|
|
||||||
+ spinlock_t lock;
|
|
||||||
+ void __iomem *membase;
|
|
||||||
+ struct irq_domain *domain;
|
|
||||||
+ int irq;
|
|
||||||
+
|
|
||||||
+ u32 rising;
|
|
||||||
+ u32 falling;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+#define MAP_MAX 4
|
|
||||||
+static struct irq_domain *irq_map[MAP_MAX];
|
|
||||||
+static int irq_map_count;
|
|
||||||
+static atomic_t irq_refcount = ATOMIC_INIT(0);
|
|
||||||
+
|
|
||||||
+static inline struct ralink_gpio_chip *to_ralink_gpio(struct gpio_chip *chip)
|
|
||||||
+{
|
|
||||||
+ struct ralink_gpio_chip *rg;
|
|
||||||
+
|
|
||||||
+ rg = container_of(chip, struct ralink_gpio_chip, chip);
|
|
||||||
+
|
|
||||||
+ return rg;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static inline void rt_gpio_w32(struct ralink_gpio_chip *rg, u8 reg, u32 val)
|
|
||||||
+{
|
|
||||||
+ iowrite32(val, rg->membase + rg->regs[reg]);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static inline u32 rt_gpio_r32(struct ralink_gpio_chip *rg, u8 reg)
|
|
||||||
+{
|
|
||||||
+ return ioread32(rg->membase + rg->regs[reg]);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void ralink_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
|
|
||||||
+{
|
|
||||||
+ struct ralink_gpio_chip *rg = to_ralink_gpio(chip);
|
|
||||||
+
|
|
||||||
+ rt_gpio_w32(rg, (value) ? GPIO_REG_SET : GPIO_REG_RESET, BIT(offset));
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int ralink_gpio_get(struct gpio_chip *chip, unsigned offset)
|
|
||||||
+{
|
|
||||||
+ struct ralink_gpio_chip *rg = to_ralink_gpio(chip);
|
|
||||||
+
|
|
||||||
+ return !!(rt_gpio_r32(rg, GPIO_REG_DATA) & BIT(offset));
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int ralink_gpio_direction_input(struct gpio_chip *chip, unsigned offset)
|
|
||||||
+{
|
|
||||||
+ struct ralink_gpio_chip *rg = to_ralink_gpio(chip);
|
|
||||||
+ unsigned long flags;
|
|
||||||
+ u32 t;
|
|
||||||
+
|
|
||||||
+ spin_lock_irqsave(&rg->lock, flags);
|
|
||||||
+ t = rt_gpio_r32(rg, GPIO_REG_DIR);
|
|
||||||
+ t &= ~BIT(offset);
|
|
||||||
+ rt_gpio_w32(rg, GPIO_REG_DIR, t);
|
|
||||||
+ spin_unlock_irqrestore(&rg->lock, flags);
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int ralink_gpio_direction_output(struct gpio_chip *chip,
|
|
||||||
+ unsigned offset, int value)
|
|
||||||
+{
|
|
||||||
+ struct ralink_gpio_chip *rg = to_ralink_gpio(chip);
|
|
||||||
+ unsigned long flags;
|
|
||||||
+ u32 t;
|
|
||||||
+
|
|
||||||
+ spin_lock_irqsave(&rg->lock, flags);
|
|
||||||
+ ralink_gpio_set(chip, offset, value);
|
|
||||||
+ t = rt_gpio_r32(rg, GPIO_REG_DIR);
|
|
||||||
+ t |= BIT(offset);
|
|
||||||
+ rt_gpio_w32(rg, GPIO_REG_DIR, t);
|
|
||||||
+ spin_unlock_irqrestore(&rg->lock, flags);
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int ralink_gpio_to_irq(struct gpio_chip *chip, unsigned pin)
|
|
||||||
+{
|
|
||||||
+ struct ralink_gpio_chip *rg = to_ralink_gpio(chip);
|
|
||||||
+
|
|
||||||
+ if (rg->irq < 1)
|
|
||||||
+ return -1;
|
|
||||||
+
|
|
||||||
+ return irq_create_mapping(rg->domain, pin);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void ralink_gpio_irq_handler(struct irq_desc *desc)
|
|
||||||
+{
|
|
||||||
+ int i;
|
|
||||||
+
|
|
||||||
+ for (i = 0; i < irq_map_count; i++) {
|
|
||||||
+ struct irq_domain *domain = irq_map[i];
|
|
||||||
+ struct ralink_gpio_chip *rg;
|
|
||||||
+ unsigned long pending;
|
|
||||||
+ int bit;
|
|
||||||
+
|
|
||||||
+ rg = (struct ralink_gpio_chip *) domain->host_data;
|
|
||||||
+ pending = rt_gpio_r32(rg, GPIO_REG_INT);
|
|
||||||
+
|
|
||||||
+ for_each_set_bit(bit, &pending, rg->chip.ngpio) {
|
|
||||||
+ u32 map = irq_find_mapping(domain, bit);
|
|
||||||
+ generic_handle_irq(map);
|
|
||||||
+ rt_gpio_w32(rg, GPIO_REG_INT, BIT(bit));
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void ralink_gpio_irq_unmask(struct irq_data *d)
|
|
||||||
+{
|
|
||||||
+ struct ralink_gpio_chip *rg;
|
|
||||||
+ unsigned long flags;
|
|
||||||
+ u32 rise, fall;
|
|
||||||
+
|
|
||||||
+ rg = (struct ralink_gpio_chip *) d->domain->host_data;
|
|
||||||
+ rise = rt_gpio_r32(rg, GPIO_REG_RENA);
|
|
||||||
+ fall = rt_gpio_r32(rg, GPIO_REG_FENA);
|
|
||||||
+
|
|
||||||
+ spin_lock_irqsave(&rg->lock, flags);
|
|
||||||
+ rt_gpio_w32(rg, GPIO_REG_RENA, rise | (BIT(d->hwirq) & rg->rising));
|
|
||||||
+ rt_gpio_w32(rg, GPIO_REG_FENA, fall | (BIT(d->hwirq) & rg->falling));
|
|
||||||
+ spin_unlock_irqrestore(&rg->lock, flags);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void ralink_gpio_irq_mask(struct irq_data *d)
|
|
||||||
+{
|
|
||||||
+ struct ralink_gpio_chip *rg;
|
|
||||||
+ unsigned long flags;
|
|
||||||
+ u32 rise, fall;
|
|
||||||
+
|
|
||||||
+ rg = (struct ralink_gpio_chip *) d->domain->host_data;
|
|
||||||
+ rise = rt_gpio_r32(rg, GPIO_REG_RENA);
|
|
||||||
+ fall = rt_gpio_r32(rg, GPIO_REG_FENA);
|
|
||||||
+
|
|
||||||
+ spin_lock_irqsave(&rg->lock, flags);
|
|
||||||
+ rt_gpio_w32(rg, GPIO_REG_FENA, fall & ~BIT(d->hwirq));
|
|
||||||
+ rt_gpio_w32(rg, GPIO_REG_RENA, rise & ~BIT(d->hwirq));
|
|
||||||
+ spin_unlock_irqrestore(&rg->lock, flags);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int ralink_gpio_irq_type(struct irq_data *d, unsigned int type)
|
|
||||||
+{
|
|
||||||
+ struct ralink_gpio_chip *rg;
|
|
||||||
+ u32 mask = BIT(d->hwirq);
|
|
||||||
+
|
|
||||||
+ rg = (struct ralink_gpio_chip *) d->domain->host_data;
|
|
||||||
+
|
|
||||||
+ if (type == IRQ_TYPE_PROBE) {
|
|
||||||
+ if ((rg->rising | rg->falling) & mask)
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
+ type = IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (type & IRQ_TYPE_EDGE_RISING)
|
|
||||||
+ rg->rising |= mask;
|
|
||||||
+ else
|
|
||||||
+ rg->rising &= ~mask;
|
|
||||||
+
|
|
||||||
+ if (type & IRQ_TYPE_EDGE_FALLING)
|
|
||||||
+ rg->falling |= mask;
|
|
||||||
+ else
|
|
||||||
+ rg->falling &= ~mask;
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static struct irq_chip ralink_gpio_irq_chip = {
|
|
||||||
+ .name = "GPIO",
|
|
||||||
+ .irq_unmask = ralink_gpio_irq_unmask,
|
|
||||||
+ .irq_mask = ralink_gpio_irq_mask,
|
|
||||||
+ .irq_mask_ack = ralink_gpio_irq_mask,
|
|
||||||
+ .irq_set_type = ralink_gpio_irq_type,
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+static int gpio_map(struct irq_domain *d, unsigned int irq, irq_hw_number_t hw)
|
|
||||||
+{
|
|
||||||
+ irq_set_chip_and_handler(irq, &ralink_gpio_irq_chip, handle_level_irq);
|
|
||||||
+ irq_set_handler_data(irq, d);
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static const struct irq_domain_ops irq_domain_ops = {
|
|
||||||
+ .xlate = irq_domain_xlate_onecell,
|
|
||||||
+ .map = gpio_map,
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+static void ralink_gpio_irq_init(struct device_node *np,
|
|
||||||
+ struct ralink_gpio_chip *rg)
|
|
||||||
+{
|
|
||||||
+ if (irq_map_count >= MAP_MAX)
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
+ rg->irq = irq_of_parse_and_map(np, 0);
|
|
||||||
+ if (!rg->irq)
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
+ rg->domain = irq_domain_add_linear(np, rg->chip.ngpio,
|
|
||||||
+ &irq_domain_ops, rg);
|
|
||||||
+ if (!rg->domain) {
|
|
||||||
+ dev_err(rg->chip.parent, "irq_domain_add_linear failed\n");
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ irq_map[irq_map_count++] = rg->domain;
|
|
||||||
+
|
|
||||||
+ rt_gpio_w32(rg, GPIO_REG_RENA, 0x0);
|
|
||||||
+ rt_gpio_w32(rg, GPIO_REG_FENA, 0x0);
|
|
||||||
+
|
|
||||||
+ if (!atomic_read(&irq_refcount))
|
|
||||||
+ irq_set_chained_handler(rg->irq, ralink_gpio_irq_handler);
|
|
||||||
+ atomic_inc(&irq_refcount);
|
|
||||||
+
|
|
||||||
+ dev_info(rg->chip.parent, "registering %d irq handlers\n", rg->chip.ngpio);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int ralink_gpio_probe(struct platform_device *pdev)
|
|
||||||
+{
|
|
||||||
+ struct device_node *np = pdev->dev.of_node;
|
|
||||||
+ struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
|
||||||
+ struct ralink_gpio_chip *rg;
|
|
||||||
+ const __be32 *ngpio, *gpiobase;
|
|
||||||
+
|
|
||||||
+ if (!res) {
|
|
||||||
+ dev_err(&pdev->dev, "failed to find resource\n");
|
|
||||||
+ return -ENOMEM;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ rg = devm_kzalloc(&pdev->dev,
|
|
||||||
+ sizeof(struct ralink_gpio_chip), GFP_KERNEL);
|
|
||||||
+ if (!rg)
|
|
||||||
+ return -ENOMEM;
|
|
||||||
+
|
|
||||||
+ rg->membase = devm_ioremap_resource(&pdev->dev, res);
|
|
||||||
+ if (!rg->membase) {
|
|
||||||
+ dev_err(&pdev->dev, "cannot remap I/O memory region\n");
|
|
||||||
+ return -ENOMEM;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (of_property_read_u8_array(np, "ralink,register-map",
|
|
||||||
+ rg->regs, GPIO_REG_MAX)) {
|
|
||||||
+ dev_err(&pdev->dev, "failed to read register definition\n");
|
|
||||||
+ return -EINVAL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ ngpio = of_get_property(np, "ngpios", NULL);
|
|
||||||
+ if (!ngpio) {
|
|
||||||
+ dev_err(&pdev->dev, "failed to read number of pins\n");
|
|
||||||
+ return -EINVAL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ gpiobase = of_get_property(np, "ralink,gpio-base", NULL);
|
|
||||||
+ if (gpiobase)
|
|
||||||
+ rg->chip.base = be32_to_cpu(*gpiobase);
|
|
||||||
+ else
|
|
||||||
+ rg->chip.base = -1;
|
|
||||||
+
|
|
||||||
+ spin_lock_init(&rg->lock);
|
|
||||||
+
|
|
||||||
+ rg->chip.parent = &pdev->dev;
|
|
||||||
+ rg->chip.label = dev_name(&pdev->dev);
|
|
||||||
+ rg->chip.of_node = np;
|
|
||||||
+ rg->chip.ngpio = be32_to_cpu(*ngpio);
|
|
||||||
+ rg->chip.direction_input = ralink_gpio_direction_input;
|
|
||||||
+ rg->chip.direction_output = ralink_gpio_direction_output;
|
|
||||||
+ rg->chip.get = ralink_gpio_get;
|
|
||||||
+ rg->chip.set = ralink_gpio_set;
|
|
||||||
+ rg->chip.request = gpiochip_generic_request;
|
|
||||||
+ rg->chip.to_irq = ralink_gpio_to_irq;
|
|
||||||
+ rg->chip.free = gpiochip_generic_free;
|
|
||||||
+
|
|
||||||
+ /* set polarity to low for all lines */
|
|
||||||
+ rt_gpio_w32(rg, GPIO_REG_POL, 0);
|
|
||||||
+
|
|
||||||
+ dev_info(&pdev->dev, "registering %d gpios\n", rg->chip.ngpio);
|
|
||||||
+
|
|
||||||
+ ralink_gpio_irq_init(np, rg);
|
|
||||||
+
|
|
||||||
+ return gpiochip_add(&rg->chip);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static const struct of_device_id ralink_gpio_match[] = {
|
|
||||||
+ { .compatible = "ralink,rt2880-gpio" },
|
|
||||||
+ {},
|
|
||||||
+};
|
|
||||||
+MODULE_DEVICE_TABLE(of, ralink_gpio_match);
|
|
||||||
+
|
|
||||||
+static struct platform_driver ralink_gpio_driver = {
|
|
||||||
+ .probe = ralink_gpio_probe,
|
|
||||||
+ .driver = {
|
|
||||||
+ .name = "rt2880_gpio",
|
|
||||||
+ .owner = THIS_MODULE,
|
|
||||||
+ .of_match_table = ralink_gpio_match,
|
|
||||||
+ },
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+static int __init ralink_gpio_init(void)
|
|
||||||
+{
|
|
||||||
+ return platform_driver_register(&ralink_gpio_driver);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+subsys_initcall(ralink_gpio_init);
|
|
|
@ -1,44 +0,0 @@
|
||||||
From 57fa7f2f4ef6f78ce1d30509c0d111aa3791b524 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Daniel Santos <daniel.santos@pobox.com>
|
|
||||||
Date: Sun, 4 Nov 2018 20:24:32 -0600
|
|
||||||
Subject: gpio-ralink: Add support for GPIO as interrupt-controller
|
|
||||||
|
|
||||||
Signed-off-by: Daniel Santos <daniel.santos@pobox.com>
|
|
||||||
---
|
|
||||||
Documentation/devicetree/bindings/gpio/gpio-ralink.txt | 6 ++++++
|
|
||||||
drivers/gpio/gpio-ralink.c | 2 +-
|
|
||||||
2 files changed, 7 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
--- a/Documentation/devicetree/bindings/gpio/gpio-ralink.txt
|
|
||||||
+++ b/Documentation/devicetree/bindings/gpio/gpio-ralink.txt
|
|
||||||
@@ -17,6 +17,9 @@ Required properties:
|
|
||||||
|
|
||||||
Optional properties:
|
|
||||||
- ralink,gpio-base : Specify the GPIO chips base number
|
|
||||||
+- interrupt-controller : marks this as an interrupt controller
|
|
||||||
+- #interrupt-cells : a standard two-cell interrupt flag, see
|
|
||||||
+ interrupt-controller/interrupts.txt
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
@@ -28,6 +31,9 @@ Example:
|
|
||||||
|
|
||||||
reg = <0x600 0x34>;
|
|
||||||
|
|
||||||
+ interrupt-controller;
|
|
||||||
+ #interrupt-cells = <2>;
|
|
||||||
+
|
|
||||||
interrupt-parent = <&intc>;
|
|
||||||
interrupts = <6>;
|
|
||||||
|
|
||||||
--- a/drivers/gpio/gpio-ralink.c
|
|
||||||
+++ b/drivers/gpio/gpio-ralink.c
|
|
||||||
@@ -220,7 +220,7 @@ static int gpio_map(struct irq_domain *d
|
|
||||||
}
|
|
||||||
|
|
||||||
static const struct irq_domain_ops irq_domain_ops = {
|
|
||||||
- .xlate = irq_domain_xlate_onecell,
|
|
||||||
+ .xlate = irq_domain_xlate_twocell,
|
|
||||||
.map = gpio_map,
|
|
||||||
};
|
|
||||||
|
|
|
@ -1,72 +0,0 @@
|
||||||
From: AngeloGioacchino Del Regno
|
|
||||||
<angelogioacchino.delregno@somainline.org>
|
|
||||||
To: linus.walleij@linaro.org
|
|
||||||
Cc: linux-kernel@vger.kernel.org, konrad.dybcio@somainline.org,
|
|
||||||
marijn.suijten@somainline.org, martin.botka@somainline.org,
|
|
||||||
phone-devel@vger.kernel.org, linux-gpio@vger.kernel.org,
|
|
||||||
devicetree@vger.kernel.org, robh+dt@kernel.org,
|
|
||||||
AngeloGioacchino Del Regno
|
|
||||||
<angelogioacchino.delregno@somainline.org>
|
|
||||||
Subject: [PATCH v5 1/2] pinctrl: Add driver for Awinic AW9523/B I2C GPIO
|
|
||||||
Expander
|
|
||||||
Date: Mon, 25 Jan 2021 19:22:18 +0100
|
|
||||||
|
|
||||||
The Awinic AW9523(B) is a multi-function I2C gpio expander in a
|
|
||||||
TQFN-24L package, featuring PWM (max 37mA per pin, or total max
|
|
||||||
power 3.2Watts) for LED driving capability.
|
|
||||||
|
|
||||||
It has two ports with 8 pins per port (for a total of 16 pins),
|
|
||||||
configurable as either PWM with 1/256 stepping or GPIO input/output,
|
|
||||||
1.8V logic input; each GPIO can be configured as input or output
|
|
||||||
independently from each other.
|
|
||||||
|
|
||||||
This IC also has an internal interrupt controller, which is capable
|
|
||||||
of generating an interrupt for each GPIO, depending on the
|
|
||||||
configuration, and will raise an interrupt on the INTN pin to
|
|
||||||
advertise this to an external interrupt controller.
|
|
||||||
|
|
||||||
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@somainline.org>
|
|
||||||
---
|
|
||||||
drivers/pinctrl/Kconfig | 17 +
|
|
||||||
drivers/pinctrl/Makefile | 1 +
|
|
||||||
drivers/pinctrl/pinctrl-aw9523.c | 1122 ++++++++++++++++++++++++++++++
|
|
||||||
3 files changed, 1140 insertions(+)
|
|
||||||
create mode 100644 drivers/pinctrl/pinctrl-aw9523.c
|
|
||||||
|
|
||||||
--- a/drivers/pinctrl/Kconfig
|
|
||||||
+++ b/drivers/pinctrl/Kconfig
|
|
||||||
@@ -110,6 +110,24 @@ config PINCTRL_AMD
|
|
||||||
Requires ACPI/FDT device enumeration code to set up a platform
|
|
||||||
device.
|
|
||||||
|
|
||||||
+config PINCTRL_AW9523
|
|
||||||
+ bool "Awinic AW9523/AW9523B I2C GPIO expander pinctrl driver"
|
|
||||||
+ depends on OF && I2C
|
|
||||||
+ select PINMUX
|
|
||||||
+ select PINCONF
|
|
||||||
+ select GENERIC_PINCONF
|
|
||||||
+ select GPIOLIB
|
|
||||||
+ select GPIOLIB_IRQCHIP
|
|
||||||
+ select REGMAP
|
|
||||||
+ select REGMAP_I2C
|
|
||||||
+ help
|
|
||||||
+ The Awinic AW9523/AW9523B is a multi-function I2C GPIO
|
|
||||||
+ expander with PWM functionality. This driver bundles a
|
|
||||||
+ pinctrl driver to select the function muxing and a GPIO
|
|
||||||
+ driver to handle GPIO, when the GPIO function is selected.
|
|
||||||
+
|
|
||||||
+ Say yes to enable pinctrl and GPIO support for the AW9523(B).
|
|
||||||
+
|
|
||||||
config PINCTRL_BM1880
|
|
||||||
bool "Bitmain BM1880 Pinctrl driver"
|
|
||||||
depends on OF && (ARCH_BITMAIN || COMPILE_TEST)
|
|
||||||
--- a/drivers/pinctrl/Makefile
|
|
||||||
+++ b/drivers/pinctrl/Makefile
|
|
||||||
@@ -14,6 +14,7 @@ obj-$(CONFIG_PINCTRL_AXP209) += pinctrl-
|
|
||||||
obj-$(CONFIG_PINCTRL_AT91) += pinctrl-at91.o
|
|
||||||
obj-$(CONFIG_PINCTRL_AT91PIO4) += pinctrl-at91-pio4.o
|
|
||||||
obj-$(CONFIG_PINCTRL_AMD) += pinctrl-amd.o
|
|
||||||
+obj-$(CONFIG_PINCTRL_AW9523) += pinctrl-aw9523.o
|
|
||||||
obj-$(CONFIG_PINCTRL_BM1880) += pinctrl-bm1880.o
|
|
||||||
obj-$(CONFIG_PINCTRL_DA850_PUPD) += pinctrl-da850-pupd.o
|
|
||||||
obj-$(CONFIG_PINCTRL_DA9062) += pinctrl-da9062.o
|
|
|
@ -1,246 +0,0 @@
|
||||||
From 975e76214cd2516eb6cfff4c3eec581872645e88 Mon Sep 17 00:00:00 2001
|
|
||||||
From: John Crispin <blogic@openwrt.org>
|
|
||||||
Date: Thu, 19 Sep 2013 01:50:59 +0200
|
|
||||||
Subject: [PATCH 31/53] uvc: add iPassion iP2970 support
|
|
||||||
|
|
||||||
Signed-off-by: John Crispin <blogic@openwrt.org>
|
|
||||||
---
|
|
||||||
drivers/media/usb/uvc/uvc_driver.c | 12 +++
|
|
||||||
drivers/media/usb/uvc/uvc_status.c | 2 +
|
|
||||||
drivers/media/usb/uvc/uvc_video.c | 147 ++++++++++++++++++++++++++++++++++++
|
|
||||||
drivers/media/usb/uvc/uvcvideo.h | 5 +-
|
|
||||||
4 files changed, 165 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
--- a/drivers/media/usb/uvc/uvc_driver.c
|
|
||||||
+++ b/drivers/media/usb/uvc/uvc_driver.c
|
|
||||||
@@ -3004,6 +3004,18 @@ static const struct usb_device_id uvc_id
|
|
||||||
.bInterfaceSubClass = 1,
|
|
||||||
.bInterfaceProtocol = 0,
|
|
||||||
.driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) },
|
|
||||||
+ /* iPassion iP2970 */
|
|
||||||
+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
|
|
||||||
+ | USB_DEVICE_ID_MATCH_INT_INFO,
|
|
||||||
+ .idVendor = 0x1B3B,
|
|
||||||
+ .idProduct = 0x2970,
|
|
||||||
+ .bInterfaceClass = USB_CLASS_VIDEO,
|
|
||||||
+ .bInterfaceSubClass = 1,
|
|
||||||
+ .bInterfaceProtocol = 0,
|
|
||||||
+ .driver_info = UVC_QUIRK_PROBE_MINMAX
|
|
||||||
+ | UVC_QUIRK_STREAM_NO_FID
|
|
||||||
+ | UVC_QUIRK_MOTION
|
|
||||||
+ | UVC_QUIRK_SINGLE_ISO },
|
|
||||||
/* Generic USB Video Class */
|
|
||||||
{ USB_INTERFACE_INFO(USB_CLASS_VIDEO, 1, UVC_PC_PROTOCOL_UNDEFINED) },
|
|
||||||
{ USB_INTERFACE_INFO(USB_CLASS_VIDEO, 1, UVC_PC_PROTOCOL_15) },
|
|
||||||
--- a/drivers/media/usb/uvc/uvc_status.c
|
|
||||||
+++ b/drivers/media/usb/uvc/uvc_status.c
|
|
||||||
@@ -223,6 +223,7 @@ static void uvc_status_complete(struct u
|
|
||||||
if (uvc_event_control(urb, status, len))
|
|
||||||
/* The URB will be resubmitted in work context. */
|
|
||||||
return;
|
|
||||||
+ dev->motion = 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -271,6 +272,7 @@ int uvc_status_init(struct uvc_device *d
|
|
||||||
}
|
|
||||||
|
|
||||||
pipe = usb_rcvintpipe(dev->udev, ep->desc.bEndpointAddress);
|
|
||||||
+ dev->motion = 0;
|
|
||||||
|
|
||||||
/* For high-speed interrupt endpoints, the bInterval value is used as
|
|
||||||
* an exponent of two. Some developers forgot about it.
|
|
||||||
--- a/drivers/media/usb/uvc/uvc_video.c
|
|
||||||
+++ b/drivers/media/usb/uvc/uvc_video.c
|
|
||||||
@@ -16,6 +16,11 @@
|
|
||||||
#include <linux/wait.h>
|
|
||||||
#include <linux/atomic.h>
|
|
||||||
#include <asm/unaligned.h>
|
|
||||||
+#include <linux/skbuff.h>
|
|
||||||
+#include <linux/kobject.h>
|
|
||||||
+#include <linux/netlink.h>
|
|
||||||
+#include <linux/kobject.h>
|
|
||||||
+#include <linux/workqueue.h>
|
|
||||||
|
|
||||||
#include <media/v4l2-common.h>
|
|
||||||
|
|
||||||
@@ -1183,9 +1188,149 @@ static void uvc_video_decode_data(struct
|
|
||||||
uvc_urb->async_operations++;
|
|
||||||
}
|
|
||||||
|
|
||||||
+struct bh_priv {
|
|
||||||
+ unsigned long seen;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+struct bh_event {
|
|
||||||
+ const char *name;
|
|
||||||
+ struct sk_buff *skb;
|
|
||||||
+ struct work_struct work;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+#define BH_ERR(fmt, args...) printk(KERN_ERR "%s: " fmt, "webcam", ##args )
|
|
||||||
+#define BH_DBG(fmt, args...) do {} while (0)
|
|
||||||
+#define BH_SKB_SIZE 2048
|
|
||||||
+
|
|
||||||
+extern u64 uevent_next_seqnum(void);
|
|
||||||
+static int seen = 0;
|
|
||||||
+
|
|
||||||
+static int bh_event_add_var(struct bh_event *event, int argv,
|
|
||||||
+ const char *format, ...)
|
|
||||||
+{
|
|
||||||
+ static char buf[128];
|
|
||||||
+ char *s;
|
|
||||||
+ va_list args;
|
|
||||||
+ int len;
|
|
||||||
+
|
|
||||||
+ if (argv)
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
+ va_start(args, format);
|
|
||||||
+ len = vsnprintf(buf, sizeof(buf), format, args);
|
|
||||||
+ va_end(args);
|
|
||||||
+
|
|
||||||
+ if (len >= sizeof(buf)) {
|
|
||||||
+ BH_ERR("buffer size too small\n");
|
|
||||||
+ WARN_ON(1);
|
|
||||||
+ return -ENOMEM;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ s = skb_put(event->skb, len + 1);
|
|
||||||
+ strcpy(s, buf);
|
|
||||||
+
|
|
||||||
+ BH_DBG("added variable '%s'\n", s);
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int motion_hotplug_fill_event(struct bh_event *event)
|
|
||||||
+{
|
|
||||||
+ int s = jiffies;
|
|
||||||
+ int ret;
|
|
||||||
+
|
|
||||||
+ if (!seen)
|
|
||||||
+ seen = jiffies;
|
|
||||||
+
|
|
||||||
+ ret = bh_event_add_var(event, 0, "HOME=%s", "/");
|
|
||||||
+ if (ret)
|
|
||||||
+ return ret;
|
|
||||||
+
|
|
||||||
+ ret = bh_event_add_var(event, 0, "PATH=%s",
|
|
||||||
+ "/sbin:/bin:/usr/sbin:/usr/bin");
|
|
||||||
+ if (ret)
|
|
||||||
+ return ret;
|
|
||||||
+
|
|
||||||
+ ret = bh_event_add_var(event, 0, "SUBSYSTEM=usb");
|
|
||||||
+ if (ret)
|
|
||||||
+ return ret;
|
|
||||||
+
|
|
||||||
+ ret = bh_event_add_var(event, 0, "ACTION=motion");
|
|
||||||
+ if (ret)
|
|
||||||
+ return ret;
|
|
||||||
+
|
|
||||||
+ ret = bh_event_add_var(event, 0, "SEEN=%d", s - seen);
|
|
||||||
+ if (ret)
|
|
||||||
+ return ret;
|
|
||||||
+ seen = s;
|
|
||||||
+
|
|
||||||
+ ret = bh_event_add_var(event, 0, "SEQNUM=%llu", uevent_next_seqnum());
|
|
||||||
+
|
|
||||||
+ return ret;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void motion_hotplug_work(struct work_struct *work)
|
|
||||||
+{
|
|
||||||
+ struct bh_event *event = container_of(work, struct bh_event, work);
|
|
||||||
+ int ret = 0;
|
|
||||||
+
|
|
||||||
+ event->skb = alloc_skb(BH_SKB_SIZE, GFP_KERNEL);
|
|
||||||
+ if (!event->skb)
|
|
||||||
+ goto out_free_event;
|
|
||||||
+
|
|
||||||
+ ret = bh_event_add_var(event, 0, "%s@", "add");
|
|
||||||
+ if (ret)
|
|
||||||
+ goto out_free_skb;
|
|
||||||
+
|
|
||||||
+ ret = motion_hotplug_fill_event(event);
|
|
||||||
+ if (ret)
|
|
||||||
+ goto out_free_skb;
|
|
||||||
+
|
|
||||||
+ NETLINK_CB(event->skb).dst_group = 1;
|
|
||||||
+ broadcast_uevent(event->skb, 0, 1, GFP_KERNEL);
|
|
||||||
+
|
|
||||||
+out_free_skb:
|
|
||||||
+ if (ret) {
|
|
||||||
+ BH_ERR("work error %d\n", ret);
|
|
||||||
+ kfree_skb(event->skb);
|
|
||||||
+ }
|
|
||||||
+out_free_event:
|
|
||||||
+ kfree(event);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int motion_hotplug_create_event(void)
|
|
||||||
+{
|
|
||||||
+ struct bh_event *event;
|
|
||||||
+
|
|
||||||
+ event = kzalloc(sizeof(*event), GFP_KERNEL);
|
|
||||||
+ if (!event)
|
|
||||||
+ return -ENOMEM;
|
|
||||||
+
|
|
||||||
+ event->name = "motion";
|
|
||||||
+
|
|
||||||
+ INIT_WORK(&event->work, (void *)(void *)motion_hotplug_work);
|
|
||||||
+ schedule_work(&event->work);
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+#define MOTION_FLAG_OFFSET 4
|
|
||||||
static void uvc_video_decode_end(struct uvc_streaming *stream,
|
|
||||||
struct uvc_buffer *buf, const u8 *data, int len)
|
|
||||||
{
|
|
||||||
+ if ((stream->dev->quirks & UVC_QUIRK_MOTION) &&
|
|
||||||
+ (data[len - 2] == 0xff) && (data[len - 1] == 0xd9)) {
|
|
||||||
+ u8 *mem;
|
|
||||||
+ buf->state = UVC_BUF_STATE_READY;
|
|
||||||
+ mem = (u8 *) (buf->mem + MOTION_FLAG_OFFSET);
|
|
||||||
+ if ( stream->dev->motion ) {
|
|
||||||
+ stream->dev->motion = 0;
|
|
||||||
+ motion_hotplug_create_event();
|
|
||||||
+ } else {
|
|
||||||
+ *mem &= 0x7f;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
/* Mark the buffer as done if the EOF marker is set. */
|
|
||||||
if (data[1] & UVC_STREAM_EOF && buf->bytesused != 0) {
|
|
||||||
uvc_trace(UVC_TRACE_FRAME, "Frame complete (EOF found).\n");
|
|
||||||
@@ -1742,6 +1887,8 @@ static int uvc_init_video_isoc(struct uv
|
|
||||||
if (npackets == 0)
|
|
||||||
return -ENOMEM;
|
|
||||||
|
|
||||||
+ if (stream->dev->quirks & UVC_QUIRK_SINGLE_ISO)
|
|
||||||
+ npackets = 1;
|
|
||||||
size = npackets * psize;
|
|
||||||
|
|
||||||
for_each_uvc_urb(uvc_urb, stream) {
|
|
||||||
--- a/drivers/media/usb/uvc/uvcvideo.h
|
|
||||||
+++ b/drivers/media/usb/uvc/uvcvideo.h
|
|
||||||
@@ -203,7 +203,9 @@
|
|
||||||
#define UVC_QUIRK_RESTORE_CTRLS_ON_INIT 0x00000400
|
|
||||||
#define UVC_QUIRK_FORCE_Y8 0x00000800
|
|
||||||
#define UVC_QUIRK_FORCE_BPP 0x00001000
|
|
||||||
-
|
|
||||||
+#define UVC_QUIRK_MOTION 0x00001000
|
|
||||||
+#define UVC_QUIRK_SINGLE_ISO 0x00002000
|
|
||||||
+
|
|
||||||
/* Format flags */
|
|
||||||
#define UVC_FMT_FLAG_COMPRESSED 0x00000001
|
|
||||||
#define UVC_FMT_FLAG_STREAM 0x00000002
|
|
||||||
@@ -672,6 +674,7 @@ struct uvc_device {
|
|
||||||
u8 *status;
|
|
||||||
struct input_dev *input;
|
|
||||||
char input_phys[64];
|
|
||||||
+ int motion;
|
|
||||||
|
|
||||||
struct uvc_ctrl_work {
|
|
||||||
struct work_struct work;
|
|
|
@ -1,44 +0,0 @@
|
||||||
From da6015e7f19d749f135f7ac55c4ec47b06faa868 Mon Sep 17 00:00:00 2001
|
|
||||||
From: John Crispin <blogic@openwrt.org>
|
|
||||||
Date: Fri, 9 Aug 2013 20:12:59 +0200
|
|
||||||
Subject: [PATCH 41/53] DT: Add documentation for spi-rt2880
|
|
||||||
|
|
||||||
Describe the SPI master found on the MIPS based Ralink RT2880 SoC.
|
|
||||||
|
|
||||||
Signed-off-by: John Crispin <blogic@openwrt.org>
|
|
||||||
---
|
|
||||||
.../devicetree/bindings/spi/spi-rt2880.txt | 28 ++++++++++++++++++++
|
|
||||||
1 file changed, 28 insertions(+)
|
|
||||||
create mode 100644 Documentation/devicetree/bindings/spi/spi-rt2880.txt
|
|
||||||
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/Documentation/devicetree/bindings/spi/spi-rt2880.txt
|
|
||||||
@@ -0,0 +1,28 @@
|
|
||||||
+Ralink SoC RT2880 SPI master controller.
|
|
||||||
+
|
|
||||||
+This SPI controller is found on most wireless SoCs made by ralink.
|
|
||||||
+
|
|
||||||
+Required properties:
|
|
||||||
+- compatible : "ralink,rt2880-spi"
|
|
||||||
+- reg : The register base for the controller.
|
|
||||||
+- #address-cells : <1>, as required by generic SPI binding.
|
|
||||||
+- #size-cells : <0>, also as required by generic SPI binding.
|
|
||||||
+
|
|
||||||
+Child nodes as per the generic SPI binding.
|
|
||||||
+
|
|
||||||
+Example:
|
|
||||||
+
|
|
||||||
+ spi@b00 {
|
|
||||||
+ compatible = "ralink,rt2880-spi";
|
|
||||||
+ reg = <0xb00 0x100>;
|
|
||||||
+
|
|
||||||
+ #address-cells = <1>;
|
|
||||||
+ #size-cells = <0>;
|
|
||||||
+
|
|
||||||
+ m25p80@0 {
|
|
||||||
+ compatible = "m25p80";
|
|
||||||
+ reg = <0>;
|
|
||||||
+ spi-max-frequency = <10000000>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+
|
|
|
@ -1,574 +0,0 @@
|
||||||
From 683af4ebb91a1600df1946ac4769d916b8a1be65 Mon Sep 17 00:00:00 2001
|
|
||||||
From: John Crispin <blogic@openwrt.org>
|
|
||||||
Date: Sun, 27 Jul 2014 11:15:12 +0100
|
|
||||||
Subject: [PATCH 42/53] SPI: ralink: add Ralink SoC spi driver
|
|
||||||
|
|
||||||
Add the driver needed to make SPI work on Ralink SoC.
|
|
||||||
|
|
||||||
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|
||||||
Acked-by: John Crispin <blogic@openwrt.org>
|
|
||||||
---
|
|
||||||
drivers/spi/Kconfig | 6 +
|
|
||||||
drivers/spi/Makefile | 1 +
|
|
||||||
drivers/spi/spi-rt2880.c | 530 ++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
3 files changed, 537 insertions(+)
|
|
||||||
create mode 100644 drivers/spi/spi-rt2880.c
|
|
||||||
|
|
||||||
--- a/drivers/spi/Kconfig
|
|
||||||
+++ b/drivers/spi/Kconfig
|
|
||||||
@@ -689,6 +689,12 @@ config SPI_QCOM_GENI
|
|
||||||
This driver can also be built as a module. If so, the module
|
|
||||||
will be called spi-geni-qcom.
|
|
||||||
|
|
||||||
+config SPI_RT2880
|
|
||||||
+ tristate "Ralink RT288x SPI Controller"
|
|
||||||
+ depends on RALINK
|
|
||||||
+ help
|
|
||||||
+ This selects a driver for the Ralink RT288x/RT305x SPI Controller.
|
|
||||||
+
|
|
||||||
config SPI_S3C24XX
|
|
||||||
tristate "Samsung S3C24XX series SPI"
|
|
||||||
depends on ARCH_S3C24XX
|
|
||||||
--- a/drivers/spi/Makefile
|
|
||||||
+++ b/drivers/spi/Makefile
|
|
||||||
@@ -96,6 +96,7 @@ obj-$(CONFIG_SPI_ROCKCHIP) += spi-rockc
|
|
||||||
obj-$(CONFIG_SPI_RB4XX) += spi-rb4xx.o
|
|
||||||
obj-$(CONFIG_SPI_RPCIF) += spi-rpc-if.o
|
|
||||||
obj-$(CONFIG_SPI_RSPI) += spi-rspi.o
|
|
||||||
+obj-$(CONFIG_SPI_RT2880) += spi-rt2880.o
|
|
||||||
obj-$(CONFIG_SPI_S3C24XX) += spi-s3c24xx-hw.o
|
|
||||||
spi-s3c24xx-hw-y := spi-s3c24xx.o
|
|
||||||
obj-$(CONFIG_SPI_S3C64XX) += spi-s3c64xx.o
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/drivers/spi/spi-rt2880.c
|
|
||||||
@@ -0,0 +1,530 @@
|
|
||||||
+/*
|
|
||||||
+ * spi-rt2880.c -- Ralink RT288x/RT305x SPI controller driver
|
|
||||||
+ *
|
|
||||||
+ * Copyright (C) 2011 Sergiy <piratfm@gmail.com>
|
|
||||||
+ * Copyright (C) 2011-2013 Gabor Juhos <juhosg@openwrt.org>
|
|
||||||
+ *
|
|
||||||
+ * Some parts are based on spi-orion.c:
|
|
||||||
+ * Author: Shadi Ammouri <shadi@marvell.com>
|
|
||||||
+ * Copyright (C) 2007-2008 Marvell Ltd.
|
|
||||||
+ *
|
|
||||||
+ * This program is free software; you can redistribute it and/or modify
|
|
||||||
+ * it under the terms of the GNU General Public License version 2 as
|
|
||||||
+ * published by the Free Software Foundation.
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+#include <linux/init.h>
|
|
||||||
+#include <linux/module.h>
|
|
||||||
+#include <linux/clk.h>
|
|
||||||
+#include <linux/err.h>
|
|
||||||
+#include <linux/delay.h>
|
|
||||||
+#include <linux/io.h>
|
|
||||||
+#include <linux/reset.h>
|
|
||||||
+#include <linux/spi/spi.h>
|
|
||||||
+#include <linux/platform_device.h>
|
|
||||||
+#include <linux/gpio.h>
|
|
||||||
+
|
|
||||||
+#define DRIVER_NAME "spi-rt2880"
|
|
||||||
+
|
|
||||||
+#define RAMIPS_SPI_STAT 0x00
|
|
||||||
+#define RAMIPS_SPI_CFG 0x10
|
|
||||||
+#define RAMIPS_SPI_CTL 0x14
|
|
||||||
+#define RAMIPS_SPI_DATA 0x20
|
|
||||||
+#define RAMIPS_SPI_ADDR 0x24
|
|
||||||
+#define RAMIPS_SPI_BS 0x28
|
|
||||||
+#define RAMIPS_SPI_USER 0x2C
|
|
||||||
+#define RAMIPS_SPI_TXFIFO 0x30
|
|
||||||
+#define RAMIPS_SPI_RXFIFO 0x34
|
|
||||||
+#define RAMIPS_SPI_FIFO_STAT 0x38
|
|
||||||
+#define RAMIPS_SPI_MODE 0x3C
|
|
||||||
+#define RAMIPS_SPI_DEV_OFFSET 0x40
|
|
||||||
+#define RAMIPS_SPI_DMA 0x80
|
|
||||||
+#define RAMIPS_SPI_DMASTAT 0x84
|
|
||||||
+#define RAMIPS_SPI_ARBITER 0xF0
|
|
||||||
+
|
|
||||||
+/* SPISTAT register bit field */
|
|
||||||
+#define SPISTAT_BUSY BIT(0)
|
|
||||||
+
|
|
||||||
+/* SPICFG register bit field */
|
|
||||||
+#define SPICFG_ADDRMODE BIT(12)
|
|
||||||
+#define SPICFG_RXENVDIS BIT(11)
|
|
||||||
+#define SPICFG_RXCAP BIT(10)
|
|
||||||
+#define SPICFG_SPIENMODE BIT(9)
|
|
||||||
+#define SPICFG_MSBFIRST BIT(8)
|
|
||||||
+#define SPICFG_SPICLKPOL BIT(6)
|
|
||||||
+#define SPICFG_RXCLKEDGE_FALLING BIT(5)
|
|
||||||
+#define SPICFG_TXCLKEDGE_FALLING BIT(4)
|
|
||||||
+#define SPICFG_HIZSPI BIT(3)
|
|
||||||
+#define SPICFG_SPICLK_PRESCALE_MASK 0x7
|
|
||||||
+#define SPICFG_SPICLK_DIV2 0
|
|
||||||
+#define SPICFG_SPICLK_DIV4 1
|
|
||||||
+#define SPICFG_SPICLK_DIV8 2
|
|
||||||
+#define SPICFG_SPICLK_DIV16 3
|
|
||||||
+#define SPICFG_SPICLK_DIV32 4
|
|
||||||
+#define SPICFG_SPICLK_DIV64 5
|
|
||||||
+#define SPICFG_SPICLK_DIV128 6
|
|
||||||
+#define SPICFG_SPICLK_DISABLE 7
|
|
||||||
+
|
|
||||||
+/* SPICTL register bit field */
|
|
||||||
+#define SPICTL_START BIT(4)
|
|
||||||
+#define SPICTL_HIZSDO BIT(3)
|
|
||||||
+#define SPICTL_STARTWR BIT(2)
|
|
||||||
+#define SPICTL_STARTRD BIT(1)
|
|
||||||
+#define SPICTL_SPIENA BIT(0)
|
|
||||||
+
|
|
||||||
+/* SPIUSER register bit field */
|
|
||||||
+#define SPIUSER_USERMODE BIT(21)
|
|
||||||
+#define SPIUSER_INSTR_PHASE BIT(20)
|
|
||||||
+#define SPIUSER_ADDR_PHASE_MASK 0x7
|
|
||||||
+#define SPIUSER_ADDR_PHASE_OFFSET 17
|
|
||||||
+#define SPIUSER_MODE_PHASE BIT(16)
|
|
||||||
+#define SPIUSER_DUMMY_PHASE_MASK 0x3
|
|
||||||
+#define SPIUSER_DUMMY_PHASE_OFFSET 14
|
|
||||||
+#define SPIUSER_DATA_PHASE_MASK 0x3
|
|
||||||
+#define SPIUSER_DATA_PHASE_OFFSET 12
|
|
||||||
+#define SPIUSER_DATA_READ (BIT(0) << SPIUSER_DATA_PHASE_OFFSET)
|
|
||||||
+#define SPIUSER_DATA_WRITE (BIT(1) << SPIUSER_DATA_PHASE_OFFSET)
|
|
||||||
+#define SPIUSER_ADDR_TYPE_OFFSET 9
|
|
||||||
+#define SPIUSER_MODE_TYPE_OFFSET 6
|
|
||||||
+#define SPIUSER_DUMMY_TYPE_OFFSET 3
|
|
||||||
+#define SPIUSER_DATA_TYPE_OFFSET 0
|
|
||||||
+#define SPIUSER_TRANSFER_MASK 0x7
|
|
||||||
+#define SPIUSER_TRANSFER_SINGLE BIT(0)
|
|
||||||
+#define SPIUSER_TRANSFER_DUAL BIT(1)
|
|
||||||
+#define SPIUSER_TRANSFER_QUAD BIT(2)
|
|
||||||
+
|
|
||||||
+#define SPIUSER_TRANSFER_TYPE(type) ( \
|
|
||||||
+ (type << SPIUSER_ADDR_TYPE_OFFSET) | \
|
|
||||||
+ (type << SPIUSER_MODE_TYPE_OFFSET) | \
|
|
||||||
+ (type << SPIUSER_DUMMY_TYPE_OFFSET) | \
|
|
||||||
+ (type << SPIUSER_DATA_TYPE_OFFSET) \
|
|
||||||
+)
|
|
||||||
+
|
|
||||||
+/* SPIFIFOSTAT register bit field */
|
|
||||||
+#define SPIFIFOSTAT_TXEMPTY BIT(19)
|
|
||||||
+#define SPIFIFOSTAT_RXEMPTY BIT(18)
|
|
||||||
+#define SPIFIFOSTAT_TXFULL BIT(17)
|
|
||||||
+#define SPIFIFOSTAT_RXFULL BIT(16)
|
|
||||||
+#define SPIFIFOSTAT_FIFO_MASK 0xff
|
|
||||||
+#define SPIFIFOSTAT_TX_OFFSET 8
|
|
||||||
+#define SPIFIFOSTAT_RX_OFFSET 0
|
|
||||||
+
|
|
||||||
+#define SPI_FIFO_DEPTH 16
|
|
||||||
+
|
|
||||||
+/* SPIMODE register bit field */
|
|
||||||
+#define SPIMODE_MODE_OFFSET 24
|
|
||||||
+#define SPIMODE_DUMMY_OFFSET 0
|
|
||||||
+
|
|
||||||
+/* SPIARB register bit field */
|
|
||||||
+#define SPICTL_ARB_EN BIT(31)
|
|
||||||
+#define SPICTL_CSCTL1 BIT(16)
|
|
||||||
+#define SPI1_POR BIT(1)
|
|
||||||
+#define SPI0_POR BIT(0)
|
|
||||||
+
|
|
||||||
+#define RT2880_SPI_MODE_BITS (SPI_CPOL | SPI_CPHA | SPI_LSB_FIRST | \
|
|
||||||
+ SPI_CS_HIGH)
|
|
||||||
+
|
|
||||||
+static atomic_t hw_reset_count = ATOMIC_INIT(0);
|
|
||||||
+
|
|
||||||
+struct rt2880_spi {
|
|
||||||
+ struct spi_master *master;
|
|
||||||
+ void __iomem *base;
|
|
||||||
+ u32 speed;
|
|
||||||
+ u16 wait_loops;
|
|
||||||
+ u16 mode;
|
|
||||||
+ struct clk *clk;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+static inline struct rt2880_spi *spidev_to_rt2880_spi(struct spi_device *spi)
|
|
||||||
+{
|
|
||||||
+ return spi_master_get_devdata(spi->master);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static inline u32 rt2880_spi_read(struct rt2880_spi *rs, u32 reg)
|
|
||||||
+{
|
|
||||||
+ return ioread32(rs->base + reg);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static inline void rt2880_spi_write(struct rt2880_spi *rs, u32 reg,
|
|
||||||
+ const u32 val)
|
|
||||||
+{
|
|
||||||
+ iowrite32(val, rs->base + reg);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static inline void rt2880_spi_setbits(struct rt2880_spi *rs, u32 reg, u32 mask)
|
|
||||||
+{
|
|
||||||
+ void __iomem *addr = rs->base + reg;
|
|
||||||
+
|
|
||||||
+ iowrite32((ioread32(addr) | mask), addr);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static inline void rt2880_spi_clrbits(struct rt2880_spi *rs, u32 reg, u32 mask)
|
|
||||||
+{
|
|
||||||
+ void __iomem *addr = rs->base + reg;
|
|
||||||
+
|
|
||||||
+ iowrite32((ioread32(addr) & ~mask), addr);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static u32 rt2880_spi_baudrate_get(struct spi_device *spi, unsigned int speed)
|
|
||||||
+{
|
|
||||||
+ struct rt2880_spi *rs = spidev_to_rt2880_spi(spi);
|
|
||||||
+ u32 rate;
|
|
||||||
+ u32 prescale;
|
|
||||||
+
|
|
||||||
+ /*
|
|
||||||
+ * the supported rates are: 2, 4, 8, ... 128
|
|
||||||
+ * round up as we look for equal or less speed
|
|
||||||
+ */
|
|
||||||
+ rate = DIV_ROUND_UP(clk_get_rate(rs->clk), speed);
|
|
||||||
+ rate = roundup_pow_of_two(rate);
|
|
||||||
+
|
|
||||||
+ /* Convert the rate to SPI clock divisor value. */
|
|
||||||
+ prescale = ilog2(rate / 2);
|
|
||||||
+
|
|
||||||
+ /* some tolerance. double and add 100 */
|
|
||||||
+ rs->wait_loops = (8 * HZ * loops_per_jiffy) /
|
|
||||||
+ (clk_get_rate(rs->clk) / rate);
|
|
||||||
+ rs->wait_loops = (rs->wait_loops << 1) + 100;
|
|
||||||
+ rs->speed = speed;
|
|
||||||
+
|
|
||||||
+ dev_dbg(&spi->dev, "speed: %lu/%u, rate: %u, prescal: %u, loops: %hu\n",
|
|
||||||
+ clk_get_rate(rs->clk) / rate, speed, rate, prescale,
|
|
||||||
+ rs->wait_loops);
|
|
||||||
+
|
|
||||||
+ return prescale;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static u32 get_arbiter_offset(struct spi_master *master)
|
|
||||||
+{
|
|
||||||
+ u32 offset;
|
|
||||||
+
|
|
||||||
+ offset = RAMIPS_SPI_ARBITER;
|
|
||||||
+ if (master->bus_num == 1)
|
|
||||||
+ offset -= RAMIPS_SPI_DEV_OFFSET;
|
|
||||||
+
|
|
||||||
+ return offset;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void rt2880_spi_set_cs(struct spi_device *spi, bool enable)
|
|
||||||
+{
|
|
||||||
+ struct rt2880_spi *rs = spidev_to_rt2880_spi(spi);
|
|
||||||
+
|
|
||||||
+ if (enable)
|
|
||||||
+ rt2880_spi_setbits(rs, RAMIPS_SPI_CTL, SPICTL_SPIENA);
|
|
||||||
+ else
|
|
||||||
+ rt2880_spi_clrbits(rs, RAMIPS_SPI_CTL, SPICTL_SPIENA);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int rt2880_spi_wait_ready(struct rt2880_spi *rs, int len)
|
|
||||||
+{
|
|
||||||
+ int loop = rs->wait_loops * len;
|
|
||||||
+
|
|
||||||
+ while ((rt2880_spi_read(rs, RAMIPS_SPI_STAT) & SPISTAT_BUSY) && --loop)
|
|
||||||
+ cpu_relax();
|
|
||||||
+
|
|
||||||
+ if (loop)
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
+ return -ETIMEDOUT;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void rt2880_dump_reg(struct spi_master *master)
|
|
||||||
+{
|
|
||||||
+ struct rt2880_spi *rs = spi_master_get_devdata(master);
|
|
||||||
+
|
|
||||||
+ dev_dbg(&master->dev, "stat: %08x, cfg: %08x, ctl: %08x, " \
|
|
||||||
+ "data: %08x, arb: %08x\n",
|
|
||||||
+ rt2880_spi_read(rs, RAMIPS_SPI_STAT),
|
|
||||||
+ rt2880_spi_read(rs, RAMIPS_SPI_CFG),
|
|
||||||
+ rt2880_spi_read(rs, RAMIPS_SPI_CTL),
|
|
||||||
+ rt2880_spi_read(rs, RAMIPS_SPI_DATA),
|
|
||||||
+ rt2880_spi_read(rs, get_arbiter_offset(master)));
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int rt2880_spi_transfer_one(struct spi_master *master,
|
|
||||||
+ struct spi_device *spi, struct spi_transfer *xfer)
|
|
||||||
+{
|
|
||||||
+ struct rt2880_spi *rs = spi_master_get_devdata(master);
|
|
||||||
+ unsigned len;
|
|
||||||
+ const u8 *tx = xfer->tx_buf;
|
|
||||||
+ u8 *rx = xfer->rx_buf;
|
|
||||||
+ int err = 0;
|
|
||||||
+
|
|
||||||
+ /* change clock speed */
|
|
||||||
+ if (unlikely(rs->speed != xfer->speed_hz)) {
|
|
||||||
+ u32 reg;
|
|
||||||
+ reg = rt2880_spi_read(rs, RAMIPS_SPI_CFG);
|
|
||||||
+ reg &= ~SPICFG_SPICLK_PRESCALE_MASK;
|
|
||||||
+ reg |= rt2880_spi_baudrate_get(spi, xfer->speed_hz);
|
|
||||||
+ rt2880_spi_write(rs, RAMIPS_SPI_CFG, reg);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (tx) {
|
|
||||||
+ len = xfer->len;
|
|
||||||
+ while (len-- > 0) {
|
|
||||||
+ rt2880_spi_write(rs, RAMIPS_SPI_DATA, *tx++);
|
|
||||||
+ rt2880_spi_setbits(rs, RAMIPS_SPI_CTL, SPICTL_STARTWR);
|
|
||||||
+ err = rt2880_spi_wait_ready(rs, 1);
|
|
||||||
+ if (err) {
|
|
||||||
+ dev_err(&spi->dev, "TX failed, err=%d\n", err);
|
|
||||||
+ goto out;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (rx) {
|
|
||||||
+ len = xfer->len;
|
|
||||||
+ while (len-- > 0) {
|
|
||||||
+ rt2880_spi_setbits(rs, RAMIPS_SPI_CTL, SPICTL_STARTRD);
|
|
||||||
+ err = rt2880_spi_wait_ready(rs, 1);
|
|
||||||
+ if (err) {
|
|
||||||
+ dev_err(&spi->dev, "RX failed, err=%d\n", err);
|
|
||||||
+ goto out;
|
|
||||||
+ }
|
|
||||||
+ *rx++ = (u8) rt2880_spi_read(rs, RAMIPS_SPI_DATA);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+out:
|
|
||||||
+ return err;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/* copy from spi.c */
|
|
||||||
+static void spi_set_cs(struct spi_device *spi, bool enable)
|
|
||||||
+{
|
|
||||||
+ if (spi->mode & SPI_CS_HIGH)
|
|
||||||
+ enable = !enable;
|
|
||||||
+
|
|
||||||
+ if (spi->cs_gpio >= 0)
|
|
||||||
+ gpio_set_value(spi->cs_gpio, !enable);
|
|
||||||
+ else if (spi->master->set_cs)
|
|
||||||
+ spi->master->set_cs(spi, !enable);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int rt2880_spi_setup(struct spi_device *spi)
|
|
||||||
+{
|
|
||||||
+ struct spi_master *master = spi->master;
|
|
||||||
+ struct rt2880_spi *rs = spi_master_get_devdata(master);
|
|
||||||
+ u32 reg, old_reg, arbit_off;
|
|
||||||
+
|
|
||||||
+ if ((spi->max_speed_hz > master->max_speed_hz) ||
|
|
||||||
+ (spi->max_speed_hz < master->min_speed_hz)) {
|
|
||||||
+ dev_err(&spi->dev, "invalide requested speed %d Hz\n",
|
|
||||||
+ spi->max_speed_hz);
|
|
||||||
+ return -EINVAL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (!(master->bits_per_word_mask &
|
|
||||||
+ BIT(spi->bits_per_word - 1))) {
|
|
||||||
+ dev_err(&spi->dev, "invalide bits_per_word %d\n",
|
|
||||||
+ spi->bits_per_word);
|
|
||||||
+ return -EINVAL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /* the hardware seems can't work on mode0 force it to mode3 */
|
|
||||||
+ if ((spi->mode & (SPI_CPOL | SPI_CPHA)) == SPI_MODE_0) {
|
|
||||||
+ dev_warn(&spi->dev, "force spi mode3\n");
|
|
||||||
+ spi->mode |= SPI_MODE_3;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /* chip polarity */
|
|
||||||
+ arbit_off = get_arbiter_offset(master);
|
|
||||||
+ reg = old_reg = rt2880_spi_read(rs, arbit_off);
|
|
||||||
+ if (spi->mode & SPI_CS_HIGH) {
|
|
||||||
+ switch (master->bus_num) {
|
|
||||||
+ case 1:
|
|
||||||
+ reg |= SPI1_POR;
|
|
||||||
+ break;
|
|
||||||
+ default:
|
|
||||||
+ reg |= SPI0_POR;
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+ } else {
|
|
||||||
+ switch (master->bus_num) {
|
|
||||||
+ case 1:
|
|
||||||
+ reg &= ~SPI1_POR;
|
|
||||||
+ break;
|
|
||||||
+ default:
|
|
||||||
+ reg &= ~SPI0_POR;
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /* enable spi1 */
|
|
||||||
+ if (master->bus_num == 1)
|
|
||||||
+ reg |= SPICTL_ARB_EN;
|
|
||||||
+
|
|
||||||
+ if (reg != old_reg)
|
|
||||||
+ rt2880_spi_write(rs, arbit_off, reg);
|
|
||||||
+
|
|
||||||
+ /* deselected the spi device */
|
|
||||||
+ spi_set_cs(spi, false);
|
|
||||||
+
|
|
||||||
+ rt2880_dump_reg(master);
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int rt2880_spi_prepare_message(struct spi_master *master,
|
|
||||||
+ struct spi_message *msg)
|
|
||||||
+{
|
|
||||||
+ struct rt2880_spi *rs = spi_master_get_devdata(master);
|
|
||||||
+ struct spi_device *spi = msg->spi;
|
|
||||||
+ u32 reg;
|
|
||||||
+
|
|
||||||
+ if ((rs->mode == spi->mode) && (rs->speed == spi->max_speed_hz))
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
+#if 0
|
|
||||||
+ /* set spido to tri-state */
|
|
||||||
+ rt2880_spi_setbits(rs, RAMIPS_SPI_CTL, SPICTL_HIZSDO);
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+ reg = rt2880_spi_read(rs, RAMIPS_SPI_CFG);
|
|
||||||
+
|
|
||||||
+ reg &= ~(SPICFG_MSBFIRST | SPICFG_SPICLKPOL |
|
|
||||||
+ SPICFG_RXCLKEDGE_FALLING |
|
|
||||||
+ SPICFG_TXCLKEDGE_FALLING |
|
|
||||||
+ SPICFG_SPICLK_PRESCALE_MASK);
|
|
||||||
+
|
|
||||||
+ /* MSB */
|
|
||||||
+ if (!(spi->mode & SPI_LSB_FIRST))
|
|
||||||
+ reg |= SPICFG_MSBFIRST;
|
|
||||||
+
|
|
||||||
+ /* spi mode */
|
|
||||||
+ switch (spi->mode & (SPI_CPOL | SPI_CPHA)) {
|
|
||||||
+ case SPI_MODE_0:
|
|
||||||
+ reg |= SPICFG_TXCLKEDGE_FALLING;
|
|
||||||
+ break;
|
|
||||||
+ case SPI_MODE_1:
|
|
||||||
+ reg |= SPICFG_RXCLKEDGE_FALLING;
|
|
||||||
+ break;
|
|
||||||
+ case SPI_MODE_2:
|
|
||||||
+ reg |= SPICFG_SPICLKPOL | SPICFG_RXCLKEDGE_FALLING;
|
|
||||||
+ break;
|
|
||||||
+ case SPI_MODE_3:
|
|
||||||
+ reg |= SPICFG_SPICLKPOL | SPICFG_TXCLKEDGE_FALLING;
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+ rs->mode = spi->mode;
|
|
||||||
+
|
|
||||||
+#if 0
|
|
||||||
+ /* set spiclk and spiena to tri-state */
|
|
||||||
+ reg |= SPICFG_HIZSPI;
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+ /* clock divide */
|
|
||||||
+ reg |= rt2880_spi_baudrate_get(spi, spi->max_speed_hz);
|
|
||||||
+
|
|
||||||
+ rt2880_spi_write(rs, RAMIPS_SPI_CFG, reg);
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int rt2880_spi_probe(struct platform_device *pdev)
|
|
||||||
+{
|
|
||||||
+ struct spi_master *master;
|
|
||||||
+ struct rt2880_spi *rs;
|
|
||||||
+ void __iomem *base;
|
|
||||||
+ struct resource *r;
|
|
||||||
+ struct clk *clk;
|
|
||||||
+ int ret;
|
|
||||||
+
|
|
||||||
+ r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
|
||||||
+ base = devm_ioremap_resource(&pdev->dev, r);
|
|
||||||
+ if (IS_ERR(base))
|
|
||||||
+ return PTR_ERR(base);
|
|
||||||
+
|
|
||||||
+ clk = devm_clk_get(&pdev->dev, NULL);
|
|
||||||
+ if (IS_ERR(clk)) {
|
|
||||||
+ dev_err(&pdev->dev, "unable to get SYS clock\n");
|
|
||||||
+ return PTR_ERR(clk);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ ret = clk_prepare_enable(clk);
|
|
||||||
+ if (ret)
|
|
||||||
+ goto err_clk;
|
|
||||||
+
|
|
||||||
+ master = spi_alloc_master(&pdev->dev, sizeof(*rs));
|
|
||||||
+ if (master == NULL) {
|
|
||||||
+ dev_dbg(&pdev->dev, "master allocation failed\n");
|
|
||||||
+ ret = -ENOMEM;
|
|
||||||
+ goto err_clk;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ master->dev.of_node = pdev->dev.of_node;
|
|
||||||
+ master->mode_bits = RT2880_SPI_MODE_BITS;
|
|
||||||
+ master->bits_per_word_mask = SPI_BPW_MASK(8);
|
|
||||||
+ master->min_speed_hz = clk_get_rate(clk) / 128;
|
|
||||||
+ master->max_speed_hz = clk_get_rate(clk) / 2;
|
|
||||||
+ master->flags = SPI_MASTER_HALF_DUPLEX;
|
|
||||||
+ master->setup = rt2880_spi_setup;
|
|
||||||
+ master->prepare_message = rt2880_spi_prepare_message;
|
|
||||||
+ master->set_cs = rt2880_spi_set_cs;
|
|
||||||
+ master->transfer_one = rt2880_spi_transfer_one,
|
|
||||||
+
|
|
||||||
+ dev_set_drvdata(&pdev->dev, master);
|
|
||||||
+
|
|
||||||
+ rs = spi_master_get_devdata(master);
|
|
||||||
+ rs->master = master;
|
|
||||||
+ rs->base = base;
|
|
||||||
+ rs->clk = clk;
|
|
||||||
+
|
|
||||||
+ if (atomic_inc_return(&hw_reset_count) == 1)
|
|
||||||
+ device_reset(&pdev->dev);
|
|
||||||
+
|
|
||||||
+ ret = devm_spi_register_master(&pdev->dev, master);
|
|
||||||
+ if (ret < 0) {
|
|
||||||
+ dev_err(&pdev->dev, "devm_spi_register_master error.\n");
|
|
||||||
+ goto err_master;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return ret;
|
|
||||||
+
|
|
||||||
+err_master:
|
|
||||||
+ spi_master_put(master);
|
|
||||||
+ kfree(master);
|
|
||||||
+err_clk:
|
|
||||||
+ clk_disable_unprepare(clk);
|
|
||||||
+
|
|
||||||
+ return ret;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int rt2880_spi_remove(struct platform_device *pdev)
|
|
||||||
+{
|
|
||||||
+ struct spi_master *master;
|
|
||||||
+ struct rt2880_spi *rs;
|
|
||||||
+
|
|
||||||
+ master = dev_get_drvdata(&pdev->dev);
|
|
||||||
+ rs = spi_master_get_devdata(master);
|
|
||||||
+
|
|
||||||
+ clk_disable_unprepare(rs->clk);
|
|
||||||
+ atomic_dec(&hw_reset_count);
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+MODULE_ALIAS("platform:" DRIVER_NAME);
|
|
||||||
+
|
|
||||||
+static const struct of_device_id rt2880_spi_match[] = {
|
|
||||||
+ { .compatible = "ralink,rt2880-spi" },
|
|
||||||
+ {},
|
|
||||||
+};
|
|
||||||
+MODULE_DEVICE_TABLE(of, rt2880_spi_match);
|
|
||||||
+
|
|
||||||
+static struct platform_driver rt2880_spi_driver = {
|
|
||||||
+ .driver = {
|
|
||||||
+ .name = DRIVER_NAME,
|
|
||||||
+ .owner = THIS_MODULE,
|
|
||||||
+ .of_match_table = rt2880_spi_match,
|
|
||||||
+ },
|
|
||||||
+ .probe = rt2880_spi_probe,
|
|
||||||
+ .remove = rt2880_spi_remove,
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+module_platform_driver(rt2880_spi_driver);
|
|
||||||
+
|
|
||||||
+MODULE_DESCRIPTION("Ralink SPI driver");
|
|
||||||
+MODULE_AUTHOR("Sergiy <piratfm@gmail.com>");
|
|
||||||
+MODULE_AUTHOR("Gabor Juhos <juhosg@openwrt.org>");
|
|
||||||
+MODULE_LICENSE("GPL");
|
|
|
@ -1,507 +0,0 @@
|
||||||
From 723b8beaabf3c3c4b1ce69480141f1e926f3f3b2 Mon Sep 17 00:00:00 2001
|
|
||||||
From: John Crispin <blogic@openwrt.org>
|
|
||||||
Date: Sun, 27 Jul 2014 09:52:56 +0100
|
|
||||||
Subject: [PATCH 44/53] i2c: MIPS: adds ralink I2C driver
|
|
||||||
|
|
||||||
Signed-off-by: John Crispin <blogic@openwrt.org>
|
|
||||||
---
|
|
||||||
.../devicetree/bindings/i2c/i2c-ralink.txt | 27 ++
|
|
||||||
drivers/i2c/busses/Kconfig | 4 +
|
|
||||||
drivers/i2c/busses/Makefile | 1 +
|
|
||||||
drivers/i2c/busses/i2c-ralink.c | 327 ++++++++++++++++++++
|
|
||||||
4 files changed, 359 insertions(+)
|
|
||||||
create mode 100644 Documentation/devicetree/bindings/i2c/i2c-ralink.txt
|
|
||||||
create mode 100644 drivers/i2c/busses/i2c-ralink.c
|
|
||||||
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/Documentation/devicetree/bindings/i2c/i2c-ralink.txt
|
|
||||||
@@ -0,0 +1,27 @@
|
|
||||||
+I2C for Ralink platforms
|
|
||||||
+
|
|
||||||
+Required properties :
|
|
||||||
+- compatible : Must be "link,rt3052-i2c"
|
|
||||||
+- reg: physical base address of the controller and length of memory mapped
|
|
||||||
+ region.
|
|
||||||
+- #address-cells = <1>;
|
|
||||||
+- #size-cells = <0>;
|
|
||||||
+
|
|
||||||
+Optional properties:
|
|
||||||
+- Child nodes conforming to i2c bus binding
|
|
||||||
+
|
|
||||||
+Example :
|
|
||||||
+
|
|
||||||
+palmbus@10000000 {
|
|
||||||
+ i2c@900 {
|
|
||||||
+ compatible = "link,rt3052-i2c";
|
|
||||||
+ reg = <0x900 0x100>;
|
|
||||||
+ #address-cells = <1>;
|
|
||||||
+ #size-cells = <0>;
|
|
||||||
+
|
|
||||||
+ hwmon@4b {
|
|
||||||
+ compatible = "national,lm92";
|
|
||||||
+ reg = <0x4b>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
--- a/drivers/i2c/busses/Kconfig
|
|
||||||
+++ b/drivers/i2c/busses/Kconfig
|
|
||||||
@@ -954,6 +954,11 @@ config I2C_RK3X
|
|
||||||
This driver can also be built as a module. If so, the module will
|
|
||||||
be called i2c-rk3x.
|
|
||||||
|
|
||||||
+config I2C_RALINK
|
|
||||||
+ tristate "Ralink I2C Controller"
|
|
||||||
+ depends on RALINK && !SOC_MT7621
|
|
||||||
+ select OF_I2C
|
|
||||||
+
|
|
||||||
config HAVE_S3C2410_I2C
|
|
||||||
bool
|
|
||||||
help
|
|
||||||
--- a/drivers/i2c/busses/Makefile
|
|
||||||
+++ b/drivers/i2c/busses/Makefile
|
|
||||||
@@ -90,6 +90,7 @@ obj-$(CONFIG_I2C_PMCMSP) += i2c-pmcmsp.o
|
|
||||||
obj-$(CONFIG_I2C_PNX) += i2c-pnx.o
|
|
||||||
obj-$(CONFIG_I2C_PXA) += i2c-pxa.o
|
|
||||||
obj-$(CONFIG_I2C_PXA_PCI) += i2c-pxa-pci.o
|
|
||||||
+obj-$(CONFIG_I2C_RALINK) += i2c-ralink.o
|
|
||||||
obj-$(CONFIG_I2C_QCOM_CCI) += i2c-qcom-cci.o
|
|
||||||
obj-$(CONFIG_I2C_QCOM_GENI) += i2c-qcom-geni.o
|
|
||||||
obj-$(CONFIG_I2C_QUP) += i2c-qup.o
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/drivers/i2c/busses/i2c-ralink.c
|
|
||||||
@@ -0,0 +1,435 @@
|
|
||||||
+/*
|
|
||||||
+ * drivers/i2c/busses/i2c-ralink.c
|
|
||||||
+ *
|
|
||||||
+ * Copyright (C) 2013 Steven Liu <steven_liu@mediatek.com>
|
|
||||||
+ * Copyright (C) 2016 Michael Lee <igvtee@gmail.com>
|
|
||||||
+ *
|
|
||||||
+ * Improve driver for i2cdetect from i2c-tools to detect i2c devices on the bus.
|
|
||||||
+ * (C) 2014 Sittisak <sittisaks@hotmail.com>
|
|
||||||
+ *
|
|
||||||
+ * This software is licensed under the terms of the GNU General Public
|
|
||||||
+ * License version 2, as published by the Free Software Foundation, and
|
|
||||||
+ * may be copied, distributed, and modified under those terms.
|
|
||||||
+ *
|
|
||||||
+ * This program is distributed in the hope that it will be useful,
|
|
||||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
+ * GNU General Public License for more details.
|
|
||||||
+ *
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+#include <linux/interrupt.h>
|
|
||||||
+#include <linux/kernel.h>
|
|
||||||
+#include <linux/module.h>
|
|
||||||
+#include <linux/reset.h>
|
|
||||||
+#include <linux/delay.h>
|
|
||||||
+#include <linux/slab.h>
|
|
||||||
+#include <linux/init.h>
|
|
||||||
+#include <linux/errno.h>
|
|
||||||
+#include <linux/platform_device.h>
|
|
||||||
+#include <linux/of_platform.h>
|
|
||||||
+#include <linux/i2c.h>
|
|
||||||
+#include <linux/io.h>
|
|
||||||
+#include <linux/err.h>
|
|
||||||
+#include <linux/clk.h>
|
|
||||||
+
|
|
||||||
+#define REG_CONFIG_REG 0x00
|
|
||||||
+#define REG_CLKDIV_REG 0x04
|
|
||||||
+#define REG_DEVADDR_REG 0x08
|
|
||||||
+#define REG_ADDR_REG 0x0C
|
|
||||||
+#define REG_DATAOUT_REG 0x10
|
|
||||||
+#define REG_DATAIN_REG 0x14
|
|
||||||
+#define REG_STATUS_REG 0x18
|
|
||||||
+#define REG_STARTXFR_REG 0x1C
|
|
||||||
+#define REG_BYTECNT_REG 0x20
|
|
||||||
+
|
|
||||||
+/* REG_CONFIG_REG */
|
|
||||||
+#define I2C_ADDRLEN_OFFSET 5
|
|
||||||
+#define I2C_DEVADLEN_OFFSET 2
|
|
||||||
+#define I2C_ADDRLEN_MASK 0x3
|
|
||||||
+#define I2C_ADDR_DIS BIT(1)
|
|
||||||
+#define I2C_DEVADDR_DIS BIT(0)
|
|
||||||
+#define I2C_ADDRLEN_8 (7 << I2C_ADDRLEN_OFFSET)
|
|
||||||
+#define I2C_DEVADLEN_7 (6 << I2C_DEVADLEN_OFFSET)
|
|
||||||
+#define I2C_CONF_DEFAULT (I2C_ADDRLEN_8 | I2C_DEVADLEN_7)
|
|
||||||
+
|
|
||||||
+/* REG_CLKDIV_REG */
|
|
||||||
+#define I2C_CLKDIV_MASK 0xffff
|
|
||||||
+
|
|
||||||
+/* REG_DEVADDR_REG */
|
|
||||||
+#define I2C_DEVADDR_MASK 0x7f
|
|
||||||
+
|
|
||||||
+/* REG_ADDR_REG */
|
|
||||||
+#define I2C_ADDR_MASK 0xff
|
|
||||||
+
|
|
||||||
+/* REG_STATUS_REG */
|
|
||||||
+#define I2C_STARTERR BIT(4)
|
|
||||||
+#define I2C_ACKERR BIT(3)
|
|
||||||
+#define I2C_DATARDY BIT(2)
|
|
||||||
+#define I2C_SDOEMPTY BIT(1)
|
|
||||||
+#define I2C_BUSY BIT(0)
|
|
||||||
+
|
|
||||||
+/* REG_STARTXFR_REG */
|
|
||||||
+#define NOSTOP_CMD BIT(2)
|
|
||||||
+#define NODATA_CMD BIT(1)
|
|
||||||
+#define READ_CMD BIT(0)
|
|
||||||
+
|
|
||||||
+/* REG_BYTECNT_REG */
|
|
||||||
+#define BYTECNT_MAX 64
|
|
||||||
+#define SET_BYTECNT(x) (x - 1)
|
|
||||||
+
|
|
||||||
+/* timeout waiting for I2C devices to respond (clock streching) */
|
|
||||||
+#define TIMEOUT_MS 1000
|
|
||||||
+#define DELAY_INTERVAL_US 100
|
|
||||||
+
|
|
||||||
+struct rt_i2c {
|
|
||||||
+ void __iomem *base;
|
|
||||||
+ struct clk *clk;
|
|
||||||
+ struct device *dev;
|
|
||||||
+ struct i2c_adapter adap;
|
|
||||||
+ u32 cur_clk;
|
|
||||||
+ u32 clk_div;
|
|
||||||
+ u32 flags;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+static void rt_i2c_w32(struct rt_i2c *i2c, u32 val, unsigned reg)
|
|
||||||
+{
|
|
||||||
+ iowrite32(val, i2c->base + reg);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static u32 rt_i2c_r32(struct rt_i2c *i2c, unsigned reg)
|
|
||||||
+{
|
|
||||||
+ return ioread32(i2c->base + reg);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int poll_down_timeout(void __iomem *addr, u32 mask)
|
|
||||||
+{
|
|
||||||
+ unsigned long timeout = jiffies + msecs_to_jiffies(TIMEOUT_MS);
|
|
||||||
+
|
|
||||||
+ do {
|
|
||||||
+ if (!(readl_relaxed(addr) & mask))
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
+ usleep_range(DELAY_INTERVAL_US, DELAY_INTERVAL_US + 50);
|
|
||||||
+ } while (time_before(jiffies, timeout));
|
|
||||||
+
|
|
||||||
+ return (readl_relaxed(addr) & mask) ? -EAGAIN : 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int rt_i2c_wait_idle(struct rt_i2c *i2c)
|
|
||||||
+{
|
|
||||||
+ int ret;
|
|
||||||
+
|
|
||||||
+ ret = poll_down_timeout(i2c->base + REG_STATUS_REG, I2C_BUSY);
|
|
||||||
+ if (ret < 0)
|
|
||||||
+ dev_dbg(i2c->dev, "idle err(%d)\n", ret);
|
|
||||||
+
|
|
||||||
+ return ret;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int poll_up_timeout(void __iomem *addr, u32 mask)
|
|
||||||
+{
|
|
||||||
+ unsigned long timeout = jiffies + msecs_to_jiffies(TIMEOUT_MS);
|
|
||||||
+ u32 status;
|
|
||||||
+
|
|
||||||
+ do {
|
|
||||||
+ status = readl_relaxed(addr);
|
|
||||||
+
|
|
||||||
+ /* check error status */
|
|
||||||
+ if (status & I2C_STARTERR)
|
|
||||||
+ return -EAGAIN;
|
|
||||||
+ else if (status & I2C_ACKERR)
|
|
||||||
+ return -ENXIO;
|
|
||||||
+ else if (status & mask)
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
+ usleep_range(DELAY_INTERVAL_US, DELAY_INTERVAL_US + 50);
|
|
||||||
+ } while (time_before(jiffies, timeout));
|
|
||||||
+
|
|
||||||
+ return -ETIMEDOUT;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int rt_i2c_wait_rx_done(struct rt_i2c *i2c)
|
|
||||||
+{
|
|
||||||
+ int ret;
|
|
||||||
+
|
|
||||||
+ ret = poll_up_timeout(i2c->base + REG_STATUS_REG, I2C_DATARDY);
|
|
||||||
+ if (ret < 0)
|
|
||||||
+ dev_dbg(i2c->dev, "rx err(%d)\n", ret);
|
|
||||||
+
|
|
||||||
+ return ret;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int rt_i2c_wait_tx_done(struct rt_i2c *i2c)
|
|
||||||
+{
|
|
||||||
+ int ret;
|
|
||||||
+
|
|
||||||
+ ret = poll_up_timeout(i2c->base + REG_STATUS_REG, I2C_SDOEMPTY);
|
|
||||||
+ if (ret < 0)
|
|
||||||
+ dev_dbg(i2c->dev, "tx err(%d)\n", ret);
|
|
||||||
+
|
|
||||||
+ return ret;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void rt_i2c_reset(struct rt_i2c *i2c)
|
|
||||||
+{
|
|
||||||
+ device_reset(i2c->adap.dev.parent);
|
|
||||||
+ barrier();
|
|
||||||
+ rt_i2c_w32(i2c, i2c->clk_div, REG_CLKDIV_REG);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void rt_i2c_dump_reg(struct rt_i2c *i2c)
|
|
||||||
+{
|
|
||||||
+ dev_dbg(i2c->dev, "conf %08x, clkdiv %08x, devaddr %08x, " \
|
|
||||||
+ "addr %08x, dataout %08x, datain %08x, " \
|
|
||||||
+ "status %08x, startxfr %08x, bytecnt %08x\n",
|
|
||||||
+ rt_i2c_r32(i2c, REG_CONFIG_REG),
|
|
||||||
+ rt_i2c_r32(i2c, REG_CLKDIV_REG),
|
|
||||||
+ rt_i2c_r32(i2c, REG_DEVADDR_REG),
|
|
||||||
+ rt_i2c_r32(i2c, REG_ADDR_REG),
|
|
||||||
+ rt_i2c_r32(i2c, REG_DATAOUT_REG),
|
|
||||||
+ rt_i2c_r32(i2c, REG_DATAIN_REG),
|
|
||||||
+ rt_i2c_r32(i2c, REG_STATUS_REG),
|
|
||||||
+ rt_i2c_r32(i2c, REG_STARTXFR_REG),
|
|
||||||
+ rt_i2c_r32(i2c, REG_BYTECNT_REG));
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int rt_i2c_master_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs,
|
|
||||||
+ int num)
|
|
||||||
+{
|
|
||||||
+ struct rt_i2c *i2c;
|
|
||||||
+ struct i2c_msg *pmsg;
|
|
||||||
+ unsigned char addr;
|
|
||||||
+ int i, j, ret;
|
|
||||||
+ u32 cmd;
|
|
||||||
+
|
|
||||||
+ i2c = i2c_get_adapdata(adap);
|
|
||||||
+
|
|
||||||
+ for (i = 0; i < num; i++) {
|
|
||||||
+ pmsg = &msgs[i];
|
|
||||||
+ if (i == (num - 1))
|
|
||||||
+ cmd = 0;
|
|
||||||
+ else
|
|
||||||
+ cmd = NOSTOP_CMD;
|
|
||||||
+
|
|
||||||
+ dev_dbg(i2c->dev, "addr: 0x%x, len: %d, flags: 0x%x, stop: %d\n",
|
|
||||||
+ pmsg->addr, pmsg->len, pmsg->flags,
|
|
||||||
+ (cmd == 0)? 1 : 0);
|
|
||||||
+
|
|
||||||
+ /* wait hardware idle */
|
|
||||||
+ if ((ret = rt_i2c_wait_idle(i2c)))
|
|
||||||
+ goto err_timeout;
|
|
||||||
+
|
|
||||||
+ if (pmsg->flags & I2C_M_TEN) {
|
|
||||||
+ rt_i2c_w32(i2c, I2C_CONF_DEFAULT, REG_CONFIG_REG);
|
|
||||||
+ /* 10 bits address */
|
|
||||||
+ addr = 0x78 | ((pmsg->addr >> 8) & 0x03);
|
|
||||||
+ rt_i2c_w32(i2c, addr & I2C_DEVADDR_MASK,
|
|
||||||
+ REG_DEVADDR_REG);
|
|
||||||
+ rt_i2c_w32(i2c, pmsg->addr & I2C_ADDR_MASK,
|
|
||||||
+ REG_ADDR_REG);
|
|
||||||
+ } else {
|
|
||||||
+ rt_i2c_w32(i2c, I2C_CONF_DEFAULT | I2C_ADDR_DIS,
|
|
||||||
+ REG_CONFIG_REG);
|
|
||||||
+ /* 7 bits address */
|
|
||||||
+ rt_i2c_w32(i2c, pmsg->addr & I2C_DEVADDR_MASK,
|
|
||||||
+ REG_DEVADDR_REG);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /* buffer length */
|
|
||||||
+ if (pmsg->len == 0)
|
|
||||||
+ cmd |= NODATA_CMD;
|
|
||||||
+ else
|
|
||||||
+ rt_i2c_w32(i2c, SET_BYTECNT(pmsg->len),
|
|
||||||
+ REG_BYTECNT_REG);
|
|
||||||
+
|
|
||||||
+ j = 0;
|
|
||||||
+ if (pmsg->flags & I2C_M_RD) {
|
|
||||||
+ cmd |= READ_CMD;
|
|
||||||
+ /* start transfer */
|
|
||||||
+ barrier();
|
|
||||||
+ rt_i2c_w32(i2c, cmd, REG_STARTXFR_REG);
|
|
||||||
+ do {
|
|
||||||
+ /* wait */
|
|
||||||
+ if ((ret = rt_i2c_wait_rx_done(i2c)))
|
|
||||||
+ goto err_timeout;
|
|
||||||
+ /* read data */
|
|
||||||
+ if (pmsg->len)
|
|
||||||
+ pmsg->buf[j] = rt_i2c_r32(i2c,
|
|
||||||
+ REG_DATAIN_REG);
|
|
||||||
+ j++;
|
|
||||||
+ } while (j < pmsg->len);
|
|
||||||
+ } else {
|
|
||||||
+ do {
|
|
||||||
+ /* write data */
|
|
||||||
+ if (pmsg->len)
|
|
||||||
+ rt_i2c_w32(i2c, pmsg->buf[j],
|
|
||||||
+ REG_DATAOUT_REG);
|
|
||||||
+ /* start transfer */
|
|
||||||
+ if (j == 0) {
|
|
||||||
+ barrier();
|
|
||||||
+ rt_i2c_w32(i2c, cmd, REG_STARTXFR_REG);
|
|
||||||
+ }
|
|
||||||
+ /* wait */
|
|
||||||
+ if ((ret = rt_i2c_wait_tx_done(i2c)))
|
|
||||||
+ goto err_timeout;
|
|
||||||
+ j++;
|
|
||||||
+ } while (j < pmsg->len);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ /* the return value is number of executed messages */
|
|
||||||
+ ret = i;
|
|
||||||
+
|
|
||||||
+ return ret;
|
|
||||||
+
|
|
||||||
+err_timeout:
|
|
||||||
+ rt_i2c_dump_reg(i2c);
|
|
||||||
+ rt_i2c_reset(i2c);
|
|
||||||
+ return ret;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static u32 rt_i2c_func(struct i2c_adapter *a)
|
|
||||||
+{
|
|
||||||
+ return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static const struct i2c_algorithm rt_i2c_algo = {
|
|
||||||
+ .master_xfer = rt_i2c_master_xfer,
|
|
||||||
+ .functionality = rt_i2c_func,
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+static const struct of_device_id i2c_rt_dt_ids[] = {
|
|
||||||
+ { .compatible = "ralink,rt2880-i2c" },
|
|
||||||
+ { /* sentinel */ }
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+MODULE_DEVICE_TABLE(of, i2c_rt_dt_ids);
|
|
||||||
+
|
|
||||||
+static struct i2c_adapter_quirks rt_i2c_quirks = {
|
|
||||||
+ .max_write_len = BYTECNT_MAX,
|
|
||||||
+ .max_read_len = BYTECNT_MAX,
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+static int rt_i2c_init(struct rt_i2c *i2c)
|
|
||||||
+{
|
|
||||||
+ u32 reg;
|
|
||||||
+
|
|
||||||
+ /* i2c_sclk = periph_clk / ((2 * clk_div) + 5) */
|
|
||||||
+ i2c->clk_div = (clk_get_rate(i2c->clk) - (5 * i2c->cur_clk)) /
|
|
||||||
+ (2 * i2c->cur_clk);
|
|
||||||
+ if (i2c->clk_div < 8)
|
|
||||||
+ i2c->clk_div = 8;
|
|
||||||
+ if (i2c->clk_div > I2C_CLKDIV_MASK)
|
|
||||||
+ i2c->clk_div = I2C_CLKDIV_MASK;
|
|
||||||
+
|
|
||||||
+ /* check support combinde/repeated start message */
|
|
||||||
+ rt_i2c_w32(i2c, NOSTOP_CMD, REG_STARTXFR_REG);
|
|
||||||
+ reg = rt_i2c_r32(i2c, REG_STARTXFR_REG) & NOSTOP_CMD;
|
|
||||||
+
|
|
||||||
+ rt_i2c_reset(i2c);
|
|
||||||
+
|
|
||||||
+ return reg;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int rt_i2c_probe(struct platform_device *pdev)
|
|
||||||
+{
|
|
||||||
+ struct resource *res;
|
|
||||||
+ struct rt_i2c *i2c;
|
|
||||||
+ struct i2c_adapter *adap;
|
|
||||||
+ const struct of_device_id *match;
|
|
||||||
+ int ret, restart;
|
|
||||||
+
|
|
||||||
+ match = of_match_device(i2c_rt_dt_ids, &pdev->dev);
|
|
||||||
+
|
|
||||||
+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
|
||||||
+ if (!res) {
|
|
||||||
+ dev_err(&pdev->dev, "no memory resource found\n");
|
|
||||||
+ return -ENODEV;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ i2c = devm_kzalloc(&pdev->dev, sizeof(struct rt_i2c), GFP_KERNEL);
|
|
||||||
+ if (!i2c) {
|
|
||||||
+ dev_err(&pdev->dev, "failed to allocate i2c_adapter\n");
|
|
||||||
+ return -ENOMEM;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ i2c->base = devm_ioremap_resource(&pdev->dev, res);
|
|
||||||
+ if (IS_ERR(i2c->base))
|
|
||||||
+ return PTR_ERR(i2c->base);
|
|
||||||
+
|
|
||||||
+ i2c->clk = devm_clk_get(&pdev->dev, NULL);
|
|
||||||
+ if (IS_ERR(i2c->clk)) {
|
|
||||||
+ dev_err(&pdev->dev, "no clock defined\n");
|
|
||||||
+ return -ENODEV;
|
|
||||||
+ }
|
|
||||||
+ clk_prepare_enable(i2c->clk);
|
|
||||||
+ i2c->dev = &pdev->dev;
|
|
||||||
+
|
|
||||||
+ if (of_property_read_u32(pdev->dev.of_node,
|
|
||||||
+ "clock-frequency", &i2c->cur_clk))
|
|
||||||
+ i2c->cur_clk = 100000;
|
|
||||||
+
|
|
||||||
+ adap = &i2c->adap;
|
|
||||||
+ adap->owner = THIS_MODULE;
|
|
||||||
+ adap->class = I2C_CLASS_HWMON | I2C_CLASS_SPD;
|
|
||||||
+ adap->algo = &rt_i2c_algo;
|
|
||||||
+ adap->retries = 3;
|
|
||||||
+ adap->dev.parent = &pdev->dev;
|
|
||||||
+ i2c_set_adapdata(adap, i2c);
|
|
||||||
+ adap->dev.of_node = pdev->dev.of_node;
|
|
||||||
+ strlcpy(adap->name, dev_name(&pdev->dev), sizeof(adap->name));
|
|
||||||
+ adap->quirks = &rt_i2c_quirks;
|
|
||||||
+
|
|
||||||
+ platform_set_drvdata(pdev, i2c);
|
|
||||||
+
|
|
||||||
+ restart = rt_i2c_init(i2c);
|
|
||||||
+
|
|
||||||
+ ret = i2c_add_adapter(adap);
|
|
||||||
+ if (ret < 0) {
|
|
||||||
+ dev_err(&pdev->dev, "failed to add adapter\n");
|
|
||||||
+ clk_disable_unprepare(i2c->clk);
|
|
||||||
+ return ret;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ dev_info(&pdev->dev, "clock %uKHz, re-start %ssupport\n",
|
|
||||||
+ i2c->cur_clk/1000, restart ? "" : "not ");
|
|
||||||
+
|
|
||||||
+ return ret;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int rt_i2c_remove(struct platform_device *pdev)
|
|
||||||
+{
|
|
||||||
+ struct rt_i2c *i2c = platform_get_drvdata(pdev);
|
|
||||||
+
|
|
||||||
+ i2c_del_adapter(&i2c->adap);
|
|
||||||
+ clk_disable_unprepare(i2c->clk);
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static struct platform_driver rt_i2c_driver = {
|
|
||||||
+ .probe = rt_i2c_probe,
|
|
||||||
+ .remove = rt_i2c_remove,
|
|
||||||
+ .driver = {
|
|
||||||
+ .owner = THIS_MODULE,
|
|
||||||
+ .name = "i2c-ralink",
|
|
||||||
+ .of_match_table = i2c_rt_dt_ids,
|
|
||||||
+ },
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+static int __init i2c_rt_init (void)
|
|
||||||
+{
|
|
||||||
+ return platform_driver_register(&rt_i2c_driver);
|
|
||||||
+}
|
|
||||||
+subsys_initcall(i2c_rt_init);
|
|
||||||
+
|
|
||||||
+static void __exit i2c_rt_exit (void)
|
|
||||||
+{
|
|
||||||
+ platform_driver_unregister(&rt_i2c_driver);
|
|
||||||
+}
|
|
||||||
+module_exit(i2c_rt_exit);
|
|
||||||
+
|
|
||||||
+MODULE_AUTHOR("Steven Liu <steven_liu@mediatek.com>");
|
|
||||||
+MODULE_DESCRIPTION("Ralink I2c host driver");
|
|
||||||
+MODULE_LICENSE("GPL");
|
|
||||||
+MODULE_ALIAS("platform:Ralink-I2C");
|
|
|
@ -1,43 +0,0 @@
|
||||||
From 23147af14531cbdada194b94120ef8774f46292d Mon Sep 17 00:00:00 2001
|
|
||||||
From: John Crispin <blogic@openwrt.org>
|
|
||||||
Date: Thu, 13 Nov 2014 19:08:40 +0100
|
|
||||||
Subject: [PATCH 46/53] mmc: MIPS: ralink: add sdhci for mt7620a SoC
|
|
||||||
|
|
||||||
Signed-off-by: John Crispin <blogic@openwrt.org>
|
|
||||||
---
|
|
||||||
drivers/mmc/host/Kconfig | 2 +
|
|
||||||
drivers/mmc/host/Makefile | 1 +
|
|
||||||
drivers/mmc/host/mtk-mmc/Kconfig | 16 +
|
|
||||||
drivers/mmc/host/mtk-mmc/Makefile | 42 +
|
|
||||||
drivers/mmc/host/mtk-mmc/board.h | 137 ++
|
|
||||||
drivers/mmc/host/mtk-mmc/dbg.c | 347 ++++
|
|
||||||
drivers/mmc/host/mtk-mmc/dbg.h | 156 ++
|
|
||||||
drivers/mmc/host/mtk-mmc/mt6575_sd.h | 1001 +++++++++++
|
|
||||||
drivers/mmc/host/mtk-mmc/sd.c | 3060 ++++++++++++++++++++++++++++++++++
|
|
||||||
9 files changed, 4762 insertions(+)
|
|
||||||
create mode 100644 drivers/mmc/host/mtk-mmc/Kconfig
|
|
||||||
create mode 100644 drivers/mmc/host/mtk-mmc/Makefile
|
|
||||||
create mode 100644 drivers/mmc/host/mtk-mmc/board.h
|
|
||||||
create mode 100644 drivers/mmc/host/mtk-mmc/dbg.c
|
|
||||||
create mode 100644 drivers/mmc/host/mtk-mmc/dbg.h
|
|
||||||
create mode 100644 drivers/mmc/host/mtk-mmc/mt6575_sd.h
|
|
||||||
create mode 100644 drivers/mmc/host/mtk-mmc/sd.c
|
|
||||||
|
|
||||||
--- a/drivers/mmc/host/Kconfig
|
|
||||||
+++ b/drivers/mmc/host/Kconfig
|
|
||||||
@@ -1101,3 +1101,5 @@ config MMC_OWL
|
|
||||||
|
|
||||||
config MMC_SDHCI_EXTERNAL_DMA
|
|
||||||
bool
|
|
||||||
+
|
|
||||||
+source "drivers/mmc/host/mtk-mmc/Kconfig"
|
|
||||||
--- a/drivers/mmc/host/Makefile
|
|
||||||
+++ b/drivers/mmc/host/Makefile
|
|
||||||
@@ -3,6 +3,7 @@
|
|
||||||
# Makefile for MMC/SD host controller drivers
|
|
||||||
#
|
|
||||||
|
|
||||||
+obj-$(CONFIG_MTK_MMC) += mtk-mmc/
|
|
||||||
obj-$(CONFIG_MMC_ARMMMCI) += armmmci.o
|
|
||||||
armmmci-y := mmci.o
|
|
||||||
armmmci-$(CONFIG_MMC_QCOM_DML) += mmci_qcom_dml.o
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,22 +0,0 @@
|
||||||
From a7eb46e0ea4a11e4dfb56ab129bf816d1059a6c5 Mon Sep 17 00:00:00 2001
|
|
||||||
From: John Crispin <blogic@openwrt.org>
|
|
||||||
Date: Mon, 7 Dec 2015 17:31:08 +0100
|
|
||||||
Subject: [PATCH 51/53] serial: add ugly custom baud rate hack
|
|
||||||
|
|
||||||
Signed-off-by: John Crispin <blogic@openwrt.org>
|
|
||||||
---
|
|
||||||
drivers/tty/serial/serial_core.c | 3 +++
|
|
||||||
1 file changed, 3 insertions(+)
|
|
||||||
|
|
||||||
--- a/drivers/tty/serial/serial_core.c
|
|
||||||
+++ b/drivers/tty/serial/serial_core.c
|
|
||||||
@@ -418,6 +418,9 @@ uart_get_baud_rate(struct uart_port *por
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (tty_termios_baud_rate(termios) == 2500000)
|
|
||||||
+ return 250000;
|
|
||||||
+
|
|
||||||
for (try = 0; try < 2; try++) {
|
|
||||||
baud = tty_termios_baud_rate(termios);
|
|
||||||
|
|
|
@ -1,217 +0,0 @@
|
||||||
From fc8f96309c21c1bc3276427309cd7d361347d66e Mon Sep 17 00:00:00 2001
|
|
||||||
From: John Crispin <blogic@openwrt.org>
|
|
||||||
Date: Mon, 7 Dec 2015 17:16:50 +0100
|
|
||||||
Subject: [PATCH 52/53] pwm: add mediatek support
|
|
||||||
|
|
||||||
Signed-off-by: John Crispin <blogic@openwrt.org>
|
|
||||||
---
|
|
||||||
drivers/pwm/Kconfig | 9 +++
|
|
||||||
drivers/pwm/Makefile | 1 +
|
|
||||||
drivers/pwm/pwm-mediatek.c | 173 ++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
3 files changed, 183 insertions(+)
|
|
||||||
create mode 100644 drivers/pwm/pwm-mediatek.c
|
|
||||||
|
|
||||||
--- a/drivers/pwm/Kconfig
|
|
||||||
+++ b/drivers/pwm/Kconfig
|
|
||||||
@@ -339,6 +339,15 @@ config PWM_MEDIATEK
|
|
||||||
To compile this driver as a module, choose M here: the module
|
|
||||||
will be called pwm-mediatek.
|
|
||||||
|
|
||||||
+config PWM_MEDIATEK_RAMIPS
|
|
||||||
+ tristate "Mediatek PWM support"
|
|
||||||
+ depends on RALINK && OF
|
|
||||||
+ help
|
|
||||||
+ Generic PWM framework driver for Mediatek ARM SoC.
|
|
||||||
+
|
|
||||||
+ To compile this driver as a module, choose M here: the module
|
|
||||||
+ will be called pwm-mxs.
|
|
||||||
+
|
|
||||||
config PWM_MXS
|
|
||||||
tristate "Freescale MXS PWM support"
|
|
||||||
depends on OF
|
|
||||||
--- a/drivers/pwm/Makefile
|
|
||||||
+++ b/drivers/pwm/Makefile
|
|
||||||
@@ -30,6 +30,7 @@ obj-$(CONFIG_PWM_LPSS_PCI) += pwm-lpss-p
|
|
||||||
obj-$(CONFIG_PWM_LPSS_PLATFORM) += pwm-lpss-platform.o
|
|
||||||
obj-$(CONFIG_PWM_MESON) += pwm-meson.o
|
|
||||||
obj-$(CONFIG_PWM_MEDIATEK) += pwm-mediatek.o
|
|
||||||
+obj-$(CONFIG_PWM_MEDIATEK_RAMIPS) += pwm-mediatek-ramips.o
|
|
||||||
obj-$(CONFIG_PWM_MTK_DISP) += pwm-mtk-disp.o
|
|
||||||
obj-$(CONFIG_PWM_MXS) += pwm-mxs.o
|
|
||||||
obj-$(CONFIG_PWM_OMAP_DMTIMER) += pwm-omap-dmtimer.o
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/drivers/pwm/pwm-mediatek-ramips.c
|
|
||||||
@@ -0,0 +1,173 @@
|
|
||||||
+/*
|
|
||||||
+ * Mediatek Pulse Width Modulator driver
|
|
||||||
+ *
|
|
||||||
+ * Copyright (C) 2015 John Crispin <blogic@openwrt.org>
|
|
||||||
+ *
|
|
||||||
+ * This file is licensed under the terms of the GNU General Public
|
|
||||||
+ * License version 2. This program is licensed "as is" without any
|
|
||||||
+ * warranty of any kind, whether express or implied.
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+#include <linux/err.h>
|
|
||||||
+#include <linux/io.h>
|
|
||||||
+#include <linux/ioport.h>
|
|
||||||
+#include <linux/kernel.h>
|
|
||||||
+#include <linux/module.h>
|
|
||||||
+#include <linux/of.h>
|
|
||||||
+#include <linux/platform_device.h>
|
|
||||||
+#include <linux/pwm.h>
|
|
||||||
+#include <linux/slab.h>
|
|
||||||
+#include <linux/types.h>
|
|
||||||
+
|
|
||||||
+#define NUM_PWM 4
|
|
||||||
+
|
|
||||||
+/* PWM registers and bits definitions */
|
|
||||||
+#define PWMCON 0x00
|
|
||||||
+#define PWMHDUR 0x04
|
|
||||||
+#define PWMLDUR 0x08
|
|
||||||
+#define PWMGDUR 0x0c
|
|
||||||
+#define PWMWAVENUM 0x28
|
|
||||||
+#define PWMDWIDTH 0x2c
|
|
||||||
+#define PWMTHRES 0x30
|
|
||||||
+
|
|
||||||
+/**
|
|
||||||
+ * struct mtk_pwm_chip - struct representing pwm chip
|
|
||||||
+ *
|
|
||||||
+ * @mmio_base: base address of pwm chip
|
|
||||||
+ * @chip: linux pwm chip representation
|
|
||||||
+ */
|
|
||||||
+struct mtk_pwm_chip {
|
|
||||||
+ void __iomem *mmio_base;
|
|
||||||
+ struct pwm_chip chip;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+static inline struct mtk_pwm_chip *to_mtk_pwm_chip(struct pwm_chip *chip)
|
|
||||||
+{
|
|
||||||
+ return container_of(chip, struct mtk_pwm_chip, chip);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static inline u32 mtk_pwm_readl(struct mtk_pwm_chip *chip, unsigned int num,
|
|
||||||
+ unsigned long offset)
|
|
||||||
+{
|
|
||||||
+ return ioread32(chip->mmio_base + 0x10 + (num * 0x40) + offset);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static inline void mtk_pwm_writel(struct mtk_pwm_chip *chip,
|
|
||||||
+ unsigned int num, unsigned long offset,
|
|
||||||
+ unsigned long val)
|
|
||||||
+{
|
|
||||||
+ iowrite32(val, chip->mmio_base + 0x10 + (num * 0x40) + offset);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int mtk_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm,
|
|
||||||
+ int duty_ns, int period_ns)
|
|
||||||
+{
|
|
||||||
+ struct mtk_pwm_chip *pc = to_mtk_pwm_chip(chip);
|
|
||||||
+ u32 resolution = 100 / 4;
|
|
||||||
+ u32 clkdiv = 0;
|
|
||||||
+
|
|
||||||
+ while (period_ns / resolution > 8191) {
|
|
||||||
+ clkdiv++;
|
|
||||||
+ resolution *= 2;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (clkdiv > 7)
|
|
||||||
+ return -1;
|
|
||||||
+
|
|
||||||
+ mtk_pwm_writel(pc, pwm->hwpwm, PWMCON, BIT(15) | BIT(3) | clkdiv);
|
|
||||||
+ mtk_pwm_writel(pc, pwm->hwpwm, PWMDWIDTH, period_ns / resolution);
|
|
||||||
+ mtk_pwm_writel(pc, pwm->hwpwm, PWMTHRES, duty_ns / resolution);
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int mtk_pwm_enable(struct pwm_chip *chip, struct pwm_device *pwm)
|
|
||||||
+{
|
|
||||||
+ struct mtk_pwm_chip *pc = to_mtk_pwm_chip(chip);
|
|
||||||
+ u32 val;
|
|
||||||
+
|
|
||||||
+ val = ioread32(pc->mmio_base);
|
|
||||||
+ val |= BIT(pwm->hwpwm);
|
|
||||||
+ iowrite32(val, pc->mmio_base);
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void mtk_pwm_disable(struct pwm_chip *chip, struct pwm_device *pwm)
|
|
||||||
+{
|
|
||||||
+ struct mtk_pwm_chip *pc = to_mtk_pwm_chip(chip);
|
|
||||||
+ u32 val;
|
|
||||||
+
|
|
||||||
+ val = ioread32(pc->mmio_base);
|
|
||||||
+ val &= ~BIT(pwm->hwpwm);
|
|
||||||
+ iowrite32(val, pc->mmio_base);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static const struct pwm_ops mtk_pwm_ops = {
|
|
||||||
+ .config = mtk_pwm_config,
|
|
||||||
+ .enable = mtk_pwm_enable,
|
|
||||||
+ .disable = mtk_pwm_disable,
|
|
||||||
+ .owner = THIS_MODULE,
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+static int mtk_pwm_probe(struct platform_device *pdev)
|
|
||||||
+{
|
|
||||||
+ struct mtk_pwm_chip *pc;
|
|
||||||
+ struct resource *r;
|
|
||||||
+ int ret;
|
|
||||||
+
|
|
||||||
+ pc = devm_kzalloc(&pdev->dev, sizeof(*pc), GFP_KERNEL);
|
|
||||||
+ if (!pc)
|
|
||||||
+ return -ENOMEM;
|
|
||||||
+
|
|
||||||
+ r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
|
||||||
+ pc->mmio_base = devm_ioremap_resource(&pdev->dev, r);
|
|
||||||
+ if (IS_ERR(pc->mmio_base))
|
|
||||||
+ return PTR_ERR(pc->mmio_base);
|
|
||||||
+
|
|
||||||
+ platform_set_drvdata(pdev, pc);
|
|
||||||
+
|
|
||||||
+ pc->chip.dev = &pdev->dev;
|
|
||||||
+ pc->chip.ops = &mtk_pwm_ops;
|
|
||||||
+ pc->chip.base = -1;
|
|
||||||
+ pc->chip.npwm = NUM_PWM;
|
|
||||||
+
|
|
||||||
+ ret = pwmchip_add(&pc->chip);
|
|
||||||
+ if (ret < 0)
|
|
||||||
+ dev_err(&pdev->dev, "pwmchip_add() failed: %d\n", ret);
|
|
||||||
+
|
|
||||||
+ return ret;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int mtk_pwm_remove(struct platform_device *pdev)
|
|
||||||
+{
|
|
||||||
+ struct mtk_pwm_chip *pc = platform_get_drvdata(pdev);
|
|
||||||
+ int i;
|
|
||||||
+
|
|
||||||
+ for (i = 0; i < NUM_PWM; i++)
|
|
||||||
+ pwm_disable(&pc->chip.pwms[i]);
|
|
||||||
+
|
|
||||||
+ return pwmchip_remove(&pc->chip);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static const struct of_device_id mtk_pwm_of_match[] = {
|
|
||||||
+ { .compatible = "mediatek,mt7628-pwm" },
|
|
||||||
+ { }
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+MODULE_DEVICE_TABLE(of, mtk_pwm_of_match);
|
|
||||||
+
|
|
||||||
+static struct platform_driver mtk_pwm_driver = {
|
|
||||||
+ .driver = {
|
|
||||||
+ .name = "mtk-pwm",
|
|
||||||
+ .owner = THIS_MODULE,
|
|
||||||
+ .of_match_table = mtk_pwm_of_match,
|
|
||||||
+ },
|
|
||||||
+ .probe = mtk_pwm_probe,
|
|
||||||
+ .remove = mtk_pwm_remove,
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+module_platform_driver(mtk_pwm_driver);
|
|
||||||
+
|
|
||||||
+MODULE_LICENSE("GPL");
|
|
||||||
+MODULE_AUTHOR("John Crispin <blogic@openwrt.org>");
|
|
||||||
+MODULE_ALIAS("platform:mtk-pwm");
|
|
|
@ -1,15 +0,0 @@
|
||||||
--- a/drivers/usb/dwc2/platform.c
|
|
||||||
+++ b/drivers/usb/dwc2/platform.c
|
|
||||||
@@ -477,6 +477,12 @@ static int dwc2_driver_probe(struct plat
|
|
||||||
if (retval)
|
|
||||||
return retval;
|
|
||||||
|
|
||||||
+ /* Enable USB port before any regs access */
|
|
||||||
+ if (readl(hsotg->regs + PCGCTL) & 0x0f) {
|
|
||||||
+ writel(0x00, hsotg->regs + PCGCTL);
|
|
||||||
+ /* TODO: mdelay(25) here? vendor driver don't use it */
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
hsotg->needs_byte_swap = dwc2_check_core_endianness(hsotg);
|
|
||||||
|
|
||||||
retval = dwc2_get_dr_mode(hsotg);
|
|
|
@ -1,97 +0,0 @@
|
||||||
--- a/drivers/misc/Makefile
|
|
||||||
+++ b/drivers/misc/Makefile
|
|
||||||
@@ -50,6 +50,7 @@ obj-$(CONFIG_GENWQE) += genwqe/
|
|
||||||
obj-$(CONFIG_ECHO) += echo/
|
|
||||||
obj-$(CONFIG_CXL_BASE) += cxl/
|
|
||||||
obj-$(CONFIG_PCI_ENDPOINT_TEST) += pci_endpoint_test.o
|
|
||||||
+obj-$(CONFIG_SOC_MT7620) += linkit.o
|
|
||||||
obj-$(CONFIG_OCXL) += ocxl/
|
|
||||||
obj-y += cardreader/
|
|
||||||
obj-$(CONFIG_PVPANIC) += pvpanic.o
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/drivers/misc/linkit.c
|
|
||||||
@@ -0,0 +1,84 @@
|
|
||||||
+/*
|
|
||||||
+ * This program is free software; you can redistribute it and/or modify
|
|
||||||
+ * it under the terms of the GNU General Public License version 2 as
|
|
||||||
+ * publishhed by the Free Software Foundation.
|
|
||||||
+ *
|
|
||||||
+ * Copyright (C) 2015 John Crispin <blogic@openwrt.org>
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+#include <linux/module.h>
|
|
||||||
+#include <linux/platform_device.h>
|
|
||||||
+#include <linux/of.h>
|
|
||||||
+#include <linux/mtd/mtd.h>
|
|
||||||
+#include <linux/gpio.h>
|
|
||||||
+
|
|
||||||
+#define LINKIT_LATCH_GPIO 11
|
|
||||||
+
|
|
||||||
+struct linkit_hw_data {
|
|
||||||
+ char board[16];
|
|
||||||
+ char rev[16];
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+static void sanify_string(char *s)
|
|
||||||
+{
|
|
||||||
+ int i;
|
|
||||||
+
|
|
||||||
+ for (i = 0; i < 15; i++)
|
|
||||||
+ if (s[i] <= 0x20)
|
|
||||||
+ s[i] = '\0';
|
|
||||||
+ s[15] = '\0';
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int linkit_probe(struct platform_device *pdev)
|
|
||||||
+{
|
|
||||||
+ struct linkit_hw_data hw;
|
|
||||||
+ struct mtd_info *mtd;
|
|
||||||
+ size_t retlen;
|
|
||||||
+ int ret;
|
|
||||||
+
|
|
||||||
+ mtd = get_mtd_device_nm("factory");
|
|
||||||
+ if (IS_ERR(mtd))
|
|
||||||
+ return PTR_ERR(mtd);
|
|
||||||
+
|
|
||||||
+ ret = mtd_read(mtd, 0x400, sizeof(hw), &retlen, (u_char *) &hw);
|
|
||||||
+ put_mtd_device(mtd);
|
|
||||||
+
|
|
||||||
+ sanify_string(hw.board);
|
|
||||||
+ sanify_string(hw.rev);
|
|
||||||
+
|
|
||||||
+ dev_info(&pdev->dev, "Version : %s\n", hw.board);
|
|
||||||
+ dev_info(&pdev->dev, "Revision : %s\n", hw.rev);
|
|
||||||
+
|
|
||||||
+ if (!strcmp(hw.board, "LINKITS7688")) {
|
|
||||||
+ dev_info(&pdev->dev, "setting up bootstrap latch\n");
|
|
||||||
+
|
|
||||||
+ if (devm_gpio_request(&pdev->dev, LINKIT_LATCH_GPIO, "bootstrap")) {
|
|
||||||
+ dev_err(&pdev->dev, "failed to setup bootstrap gpio\n");
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+ gpio_direction_output(LINKIT_LATCH_GPIO, 0);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static const struct of_device_id linkit_match[] = {
|
|
||||||
+ { .compatible = "mediatek,linkit" },
|
|
||||||
+ {},
|
|
||||||
+};
|
|
||||||
+MODULE_DEVICE_TABLE(of, linkit_match);
|
|
||||||
+
|
|
||||||
+static struct platform_driver linkit_driver = {
|
|
||||||
+ .probe = linkit_probe,
|
|
||||||
+ .driver = {
|
|
||||||
+ .name = "mtk-linkit",
|
|
||||||
+ .owner = THIS_MODULE,
|
|
||||||
+ .of_match_table = linkit_match,
|
|
||||||
+ },
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+int __init linkit_init(void)
|
|
||||||
+{
|
|
||||||
+ return platform_driver_register(&linkit_driver);
|
|
||||||
+}
|
|
||||||
+late_initcall_sync(linkit_init);
|
|
Loading…
Add table
Add a link
Reference in a new issue