Skip to content

Commit 1b294a1

Browse files
committed
Merge tag 'net-next-6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next
Pull networking updates from Jakub Kicinski: "Core & protocols: - Complete rework of garbage collection of AF_UNIX sockets. AF_UNIX is prone to forming reference count cycles due to fd passing functionality. New method based on Tarjan's Strongly Connected Components algorithm should be both faster and remove a lot of workarounds we accumulated over the years. - Add TCP fraglist GRO support, allowing chaining multiple TCP packets and forwarding them together. Useful for small switches / routers which lack basic checksum offload in some scenarios (e.g. PPPoE). - Support using SMP threads for handling packet backlog i.e. packet processing from software interfaces and old drivers which don't use NAPI. This helps move the processing out of the softirq jumble. - Continue work of converting from rtnl lock to RCU protection. Don't require rtnl lock when reading: IPv6 routing FIB, IPv6 address labels, netdev threaded NAPI sysfs files, bonding driver's sysfs files, MPLS devconf, IPv4 FIB rules, netns IDs, tcp metrics, TC Qdiscs, neighbor entries, ARP entries via ioctl(SIOCGARP), a lot of the link information available via rtnetlink. - Small optimizations from Eric to UDP wake up handling, memory accounting, RPS/RFS implementation, TCP packet sizing etc. - Allow direct page recycling in the bulk API used by XDP, for +2% PPS. - Support peek with an offset on TCP sockets. - Add MPTCP APIs for querying last time packets were received/sent/acked and whether MPTCP "upgrade" succeeded on a TCP socket. - Add intra-node communication shortcut to improve SMC performance. - Add IPv6 (and IPv{4,6}-over-IPv{4,6}) support to the GTP protocol driver. - Add HSR-SAN (RedBOX) mode of operation to the HSR protocol driver. - Add reset reasons for tracing what caused a TCP reset to be sent. - Introduce direction attribute for xfrm (IPSec) states. State can be used either for input or output packet processing. Things we sprinkled into general kernel code: - Add bitmap_{read,write}(), bitmap_size(), expose BYTES_TO_BITS(). This required touch-ups and renaming of a few existing users. - Add Endian-dependent __counted_by_{le,be} annotations. - Make building selftests "quieter" by printing summaries like "CC object.o" rather than full commands with all the arguments. Netfilter: - Use GFP_KERNEL to clone elements, to deal better with OOM situations and avoid failures in the .commit step. BPF: - Add eBPF JIT for ARCv2 CPUs. - Support attaching kprobe BPF programs through kprobe_multi link in a session mode, meaning, a BPF program is attached to both function entry and return, the entry program can decide if the return program gets executed and the entry program can share u64 cookie value with return program. "Session mode" is a common use-case for tetragon and bpftrace. - Add the ability to specify and retrieve BPF cookie for raw tracepoint programs in order to ease migration from classic to raw tracepoints. - Add an internal-only BPF per-CPU instruction for resolving per-CPU memory addresses and implement support in x86, ARM64 and RISC-V JITs. This allows inlining functions which need to access per-CPU state. - Optimize x86 BPF JIT's emit_mov_imm64, and add support for various atomics in bpf_arena which can be JITed as a single x86 instruction. Support BPF arena on ARM64. - Add a new bpf_wq API for deferring events and refactor process-context bpf_timer code to keep common code where possible. - Harden the BPF verifier's and/or/xor value tracking. - Introduce crypto kfuncs to let BPF programs call kernel crypto APIs. - Support bpf_tail_call_static() helper for BPF programs with GCC 13. - Add bpf_preempt_{disable,enable}() kfuncs in order to allow a BPF program to have code sections where preemption is disabled. Driver API: - Skip software TC processing completely if all installed rules are marked as HW-only, instead of checking the HW-only flag rule by rule. - Add support for configuring PoE (Power over Ethernet), similar to the already existing support for PoDL (Power over Data Line) config. - Initial bits of a queue control API, for now allowing a single queue to be reset without disturbing packet flow to other queues. - Common (ethtool) statistics for hardware timestamping. Tests and tooling: - Remove the need to create a config file to run the net forwarding tests so that a naive "make run_tests" can exercise them. - Define a method of writing tests which require an external endpoint to communicate with (to send/receive data towards the test machine). Add a few such tests. - Create a shared code library for writing Python tests. Expose the YAML Netlink library from tools/ to the tests for easy Netlink access. - Move netfilter tests under net/, extend them, separate performance tests from correctness tests, and iron out issues found by running them "on every commit". - Refactor BPF selftests to use common network helpers. - Further work filling in YAML definitions of Netlink messages for: nftables, team driver, bonding interfaces, vlan interfaces, VF info, TC u32 mark, TC police action. - Teach Python YAML Netlink to decode attribute policies. - Extend the definition of the "indexed array" construct in the specs to cover arrays of scalars rather than just nests. - Add hyperlinks between definitions in generated Netlink docs. Drivers: - Make sure unsupported flower control flags are rejected by drivers, and make more drivers report errors directly to the application rather than dmesg (large number of driver changes from Asbjørn Sloth Tønnesen). - Ethernet high-speed NICs: - Broadcom (bnxt): - support multiple RSS contexts and steering traffic to them - support XDP metadata - make page pool allocations more NUMA aware - Intel (100G, ice, idpf): - extract datapath code common among Intel drivers into a library - use fewer resources in switchdev by sharing queues with the PF - add PFCP filter support - add Ethernet filter support - use a spinlock instead of HW lock in PTP clock ops - support 5 layer Tx scheduler topology - nVidia/Mellanox: - 800G link modes and 100G SerDes speeds - per-queue IRQ coalescing configuration - Marvell Octeon: - support offloading TC packet mark action - Ethernet NICs consumer, embedded and virtual: - stop lying about skb->truesize in USB Ethernet drivers, it messes up TCP memory calculations - Google cloud vNIC: - support changing ring size via ethtool - support ring reset using the queue control API - VirtIO net: - expose flow hash from RSS to XDP - per-queue statistics - add selftests - Synopsys (stmmac): - support controllers which require an RX clock signal from the MII bus to perform their hardware initialization - TI: - icssg_prueth: support ICSSG-based Ethernet on AM65x SR1.0 devices - icssg_prueth: add SW TX / RX Coalescing based on hrtimers - cpsw: minimal XDP support - Renesas (ravb): - support describing the MDIO bus - Realtek (r8169): - add support for RTL8168M - Microchip Sparx5: - matchall and flower actions mirred and redirect - Ethernet switches: - nVidia/Mellanox: - improve events processing performance - Marvell: - add support for MV88E6250 family internal PHYs - Microchip: - add DCB and DSCP mapping support for KSZ switches - vsc73xx: convert to PHYLINK - Realtek: - rtl8226b/rtl8221b: add C45 instances and SerDes switching - Many driver changes related to PHYLIB and PHYLINK deprecated API cleanup - Ethernet PHYs: - Add a new driver for Airoha EN8811H 2.5 Gigabit PHY. - micrel: lan8814: add support for PPS out and external timestamp trigger - WiFi: - Disable Wireless Extensions (WEXT) in all Wi-Fi 7 devices drivers. Modern devices can only be configured using nl80211. - mac80211/cfg80211 - handle color change per link for WiFi 7 Multi-Link Operation - Intel (iwlwifi): - don't support puncturing in 5 GHz - support monitor mode on passive channels - BZ-W device support - P2P with HE/EHT support - re-add support for firmware API 90 - provide channel survey information for Automatic Channel Selection - MediaTek (mt76): - mt7921 LED control - mt7925 EHT radiotap support - mt7920e PCI support - Qualcomm (ath11k): - P2P support for QCA6390, WCN6855 and QCA2066 - support hibernation - ieee80211-freq-limit Device Tree property support - Qualcomm (ath12k): - refactoring in preparation of multi-link support - suspend and hibernation support - ACPI support - debugfs support, including dfs_simulate_radar support - RealTek: - rtw88: RTL8723CS SDIO device support - rtw89: RTL8922AE Wi-Fi 7 PCI device support - rtw89: complete features of new WiFi 7 chip 8922AE including BT-coexistence and Wake-on-WLAN - rtw89: use BIOS ACPI settings to set TX power and channels - rtl8xxxu: enable Management Frame Protection (MFP) support - Bluetooth: - support for Intel BlazarI and Filmore Peak2 (BE201) - support for MediaTek MT7921S SDIO - initial support for Intel PCIe BT driver - remove HCI_AMP support" * tag 'net-next-6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next: (1827 commits) selftests: netfilter: fix packetdrill conntrack testcase net: gro: fix napi_gro_cb zeroed alignment Bluetooth: btintel_pcie: Refactor and code cleanup Bluetooth: btintel_pcie: Fix warning reported by sparse Bluetooth: hci_core: Fix not handling hdev->le_num_of_adv_sets=1 Bluetooth: btintel: Fix compiler warning for multi_v7_defconfig config Bluetooth: btintel_pcie: Fix compiler warnings Bluetooth: btintel_pcie: Add *setup* function to download firmware Bluetooth: btintel_pcie: Add support for PCIe transport Bluetooth: btintel: Export few static functions Bluetooth: HCI: Remove HCI_AMP support Bluetooth: L2CAP: Fix div-by-zero in l2cap_le_flowctl_init() Bluetooth: qca: Fix error code in qca_read_fw_build_info() Bluetooth: hci_conn: Use __counted_by() and avoid -Wfamnae warning Bluetooth: btintel: Add support for Filmore Peak2 (BE201) Bluetooth: btintel: Add support for BlazarI LE Create Connection command timeout increased to 20 secs dt-bindings: net: bluetooth: Add MediaTek MT7921S SDIO Bluetooth Bluetooth: compute LE flow credits based on recvbuf space Bluetooth: hci_sync: Use cmd->num_cis instead of magic number ...
2 parents b850dc2 + 654de42 commit 1b294a1

File tree

1,953 files changed

+89989
-37828
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,953 files changed

+89989
-37828
lines changed

Documentation/admin-guide/sysctl/net.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ two flavors of JITs, the newer eBPF JIT currently supported on:
7272
- riscv64
7373
- riscv32
7474
- loongarch64
75+
- arc
7576

7677
And the older cBPF JIT supported on the following archs:
7778

Documentation/bpf/standardization/instruction-set.rst

Lines changed: 62 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,11 @@
55
BPF Instruction Set Architecture (ISA)
66
======================================
77

8-
This document specifies the BPF instruction set architecture (ISA).
8+
eBPF (which is no longer an acronym for anything), also commonly
9+
referred to as BPF, is a technology with origins in the Linux kernel
10+
that can run untrusted programs in a privileged context such as an
11+
operating system kernel. This document specifies the BPF instruction
12+
set architecture (ISA).
913

1014
Documentation conventions
1115
=========================
@@ -43,7 +47,7 @@ a type's signedness (`S`) and bit width (`N`), respectively.
4347
===== =========
4448

4549
For example, `u32` is a type whose valid values are all the 32-bit unsigned
46-
numbers and `s16` is a types whose valid values are all the 16-bit signed
50+
numbers and `s16` is a type whose valid values are all the 16-bit signed
4751
numbers.
4852

4953
Functions
@@ -108,7 +112,7 @@ conformance group means it must support all instructions in that conformance
108112
group.
109113

110114
The use of named conformance groups enables interoperability between a runtime
111-
that executes instructions, and tools as such compilers that generate
115+
that executes instructions, and tools such as compilers that generate
112116
instructions for the runtime. Thus, capability discovery in terms of
113117
conformance groups might be done manually by users or automatically by tools.
114118

@@ -181,10 +185,13 @@ A basic instruction is encoded as follows::
181185
(`64-bit immediate instructions`_ reuse this field for other purposes)
182186

183187
**dst_reg**
184-
destination register number (0-10)
188+
destination register number (0-10), unless otherwise specified
189+
(future instructions might reuse this field for other purposes)
185190

186191
**offset**
187-
signed integer offset used with pointer arithmetic
192+
signed integer offset used with pointer arithmetic, except where
193+
otherwise specified (some arithmetic instructions reuse this field
194+
for other purposes)
188195

189196
**imm**
190197
signed integer immediate value
@@ -228,10 +235,12 @@ This is depicted in the following figure::
228235
operation to perform, encoded as explained above
229236

230237
**regs**
231-
The source and destination register numbers, encoded as explained above
238+
The source and destination register numbers (unless otherwise
239+
specified), encoded as explained above
232240

233241
**offset**
234-
signed integer offset used with pointer arithmetic
242+
signed integer offset used with pointer arithmetic, unless
243+
otherwise specified
235244

236245
**imm**
237246
signed integer immediate value
@@ -342,8 +351,8 @@ where '(u32)' indicates that the upper 32 bits are zeroed.
342351

343352
dst = dst ^ imm
344353

345-
Note that most instructions have instruction offset of 0. Only three instructions
346-
(``SDIV``, ``SMOD``, ``MOVSX``) have a non-zero offset.
354+
Note that most arithmetic instructions have 'offset' set to 0. Only three instructions
355+
(``SDIV``, ``SMOD``, ``MOVSX``) have a non-zero 'offset'.
347356

348357
Division, multiplication, and modulo operations for ``ALU`` are part
349358
of the "divmul32" conformance group, and division, multiplication, and
@@ -365,15 +374,15 @@ Note that there are varying definitions of the signed modulo operation
365374
when the dividend or divisor are negative, where implementations often
366375
vary by language such that Python, Ruby, etc. differ from C, Go, Java,
367376
etc. This specification requires that signed modulo use truncated division
368-
(where -13 % 3 == -1) as implemented in C, Go, etc.:
377+
(where -13 % 3 == -1) as implemented in C, Go, etc.::
369378

370379
a % n = a - n * trunc(a / n)
371380

372381
The ``MOVSX`` instruction does a move operation with sign extension.
373-
``{MOVSX, X, ALU}`` :term:`sign extends<Sign Extend>` 8-bit and 16-bit operands into 32
374-
bit operands, and zeroes the remaining upper 32 bits.
382+
``{MOVSX, X, ALU}`` :term:`sign extends<Sign Extend>` 8-bit and 16-bit operands into
383+
32-bit operands, and zeroes the remaining upper 32 bits.
375384
``{MOVSX, X, ALU64}`` :term:`sign extends<Sign Extend>` 8-bit, 16-bit, and 32-bit
376-
operands into 64 bit operands. Unlike other arithmetic instructions,
385+
operands into 64-bit operands. Unlike other arithmetic instructions,
377386
``MOVSX`` is only defined for register source operands (``X``).
378387

379388
The ``NEG`` instruction is only defined when the source bit is clear
@@ -411,19 +420,19 @@ conformance group.
411420

412421
Examples:
413422

414-
``{END, TO_LE, ALU}`` with imm = 16/32/64 means::
423+
``{END, TO_LE, ALU}`` with 'imm' = 16/32/64 means::
415424

416425
dst = htole16(dst)
417426
dst = htole32(dst)
418427
dst = htole64(dst)
419428

420-
``{END, TO_BE, ALU}`` with imm = 16/32/64 means::
429+
``{END, TO_BE, ALU}`` with 'imm' = 16/32/64 means::
421430

422431
dst = htobe16(dst)
423432
dst = htobe32(dst)
424433
dst = htobe64(dst)
425434

426-
``{END, TO_LE, ALU64}`` with imm = 16/32/64 means::
435+
``{END, TO_LE, ALU64}`` with 'imm' = 16/32/64 means::
427436

428437
dst = bswap16(dst)
429438
dst = bswap32(dst)
@@ -438,27 +447,33 @@ otherwise identical operations, and indicates the base64 conformance
438447
group unless otherwise specified.
439448
The 'code' field encodes the operation as below:
440449

441-
======== ===== ======= =============================== ===================================================
442-
code value src_reg description notes
443-
======== ===== ======= =============================== ===================================================
444-
JA 0x0 0x0 PC += offset {JA, K, JMP} only
445-
JA 0x0 0x0 PC += imm {JA, K, JMP32} only
450+
======== ===== ======= ================================= ===================================================
451+
code value src_reg description notes
452+
======== ===== ======= ================================= ===================================================
453+
JA 0x0 0x0 PC += offset {JA, K, JMP} only
454+
JA 0x0 0x0 PC += imm {JA, K, JMP32} only
446455
JEQ 0x1 any PC += offset if dst == src
447-
JGT 0x2 any PC += offset if dst > src unsigned
448-
JGE 0x3 any PC += offset if dst >= src unsigned
456+
JGT 0x2 any PC += offset if dst > src unsigned
457+
JGE 0x3 any PC += offset if dst >= src unsigned
449458
JSET 0x4 any PC += offset if dst & src
450459
JNE 0x5 any PC += offset if dst != src
451-
JSGT 0x6 any PC += offset if dst > src signed
452-
JSGE 0x7 any PC += offset if dst >= src signed
453-
CALL 0x8 0x0 call helper function by address {CALL, K, JMP} only, see `Helper functions`_
454-
CALL 0x8 0x1 call PC += imm {CALL, K, JMP} only, see `Program-local functions`_
455-
CALL 0x8 0x2 call helper function by BTF ID {CALL, K, JMP} only, see `Helper functions`_
456-
EXIT 0x9 0x0 return {CALL, K, JMP} only
457-
JLT 0xa any PC += offset if dst < src unsigned
458-
JLE 0xb any PC += offset if dst <= src unsigned
459-
JSLT 0xc any PC += offset if dst < src signed
460-
JSLE 0xd any PC += offset if dst <= src signed
461-
======== ===== ======= =============================== ===================================================
460+
JSGT 0x6 any PC += offset if dst > src signed
461+
JSGE 0x7 any PC += offset if dst >= src signed
462+
CALL 0x8 0x0 call helper function by static ID {CALL, K, JMP} only, see `Helper functions`_
463+
CALL 0x8 0x1 call PC += imm {CALL, K, JMP} only, see `Program-local functions`_
464+
CALL 0x8 0x2 call helper function by BTF ID {CALL, K, JMP} only, see `Helper functions`_
465+
EXIT 0x9 0x0 return {CALL, K, JMP} only
466+
JLT 0xa any PC += offset if dst < src unsigned
467+
JLE 0xb any PC += offset if dst <= src unsigned
468+
JSLT 0xc any PC += offset if dst < src signed
469+
JSLE 0xd any PC += offset if dst <= src signed
470+
======== ===== ======= ================================= ===================================================
471+
472+
where 'PC' denotes the program counter, and the offset to increment by
473+
is in units of 64-bit instructions relative to the instruction following
474+
the jump instruction. Thus 'PC += 1' skips execution of the next
475+
instruction if it's a basic instruction or results in undefined behavior
476+
if the next instruction is a 128-bit wide instruction.
462477

463478
The BPF program needs to store the return value into register R0 before doing an
464479
``EXIT``.
@@ -475,7 +490,7 @@ where 's>=' indicates a signed '>=' comparison.
475490

476491
gotol +imm
477492

478-
where 'imm' means the branch offset comes from insn 'imm' field.
493+
where 'imm' means the branch offset comes from the 'imm' field.
479494

480495
Note that there are two flavors of ``JA`` instructions. The
481496
``JMP`` class permits a 16-bit jump offset specified by the 'offset'
@@ -493,26 +508,26 @@ Helper functions
493508
Helper functions are a concept whereby BPF programs can call into a
494509
set of function calls exposed by the underlying platform.
495510

496-
Historically, each helper function was identified by an address
497-
encoded in the imm field. The available helper functions may differ
498-
for each program type, but address values are unique across all program types.
511+
Historically, each helper function was identified by a static ID
512+
encoded in the 'imm' field. The available helper functions may differ
513+
for each program type, but static IDs are unique across all program types.
499514

500515
Platforms that support the BPF Type Format (BTF) support identifying
501-
a helper function by a BTF ID encoded in the imm field, where the BTF ID
516+
a helper function by a BTF ID encoded in the 'imm' field, where the BTF ID
502517
identifies the helper name and type.
503518

504519
Program-local functions
505520
~~~~~~~~~~~~~~~~~~~~~~~
506521
Program-local functions are functions exposed by the same BPF program as the
507522
caller, and are referenced by offset from the call instruction, similar to
508-
``JA``. The offset is encoded in the imm field of the call instruction.
509-
A ``EXIT`` within the program-local function will return to the caller.
523+
``JA``. The offset is encoded in the 'imm' field of the call instruction.
524+
An ``EXIT`` within the program-local function will return to the caller.
510525

511526
Load and store instructions
512527
===========================
513528

514529
For load and store instructions (``LD``, ``LDX``, ``ST``, and ``STX``), the
515-
8-bit 'opcode' field is divided as::
530+
8-bit 'opcode' field is divided as follows::
516531

517532
+-+-+-+-+-+-+-+-+
518533
|mode |sz |class|
@@ -580,7 +595,7 @@ instructions that transfer data between a register and memory.
580595

581596
dst = *(signed size *) (src + offset)
582597

583-
Where size is one of: ``B``, ``H``, or ``W``, and
598+
Where '<size>' is one of: ``B``, ``H``, or ``W``, and
584599
'signed size' is one of: s8, s16, or s32.
585600

586601
Atomic operations
@@ -662,11 +677,11 @@ src_reg pseudocode imm type dst type
662677
======= ========================================= =========== ==============
663678
0x0 dst = (next_imm << 32) | imm integer integer
664679
0x1 dst = map_by_fd(imm) map fd map
665-
0x2 dst = map_val(map_by_fd(imm)) + next_imm map fd data pointer
666-
0x3 dst = var_addr(imm) variable id data pointer
667-
0x4 dst = code_addr(imm) integer code pointer
680+
0x2 dst = map_val(map_by_fd(imm)) + next_imm map fd data address
681+
0x3 dst = var_addr(imm) variable id data address
682+
0x4 dst = code_addr(imm) integer code address
668683
0x5 dst = map_by_idx(imm) map index map
669-
0x6 dst = map_val(map_by_idx(imm)) + next_imm map index data pointer
684+
0x6 dst = map_val(map_by_idx(imm)) + next_imm map index data address
670685
======= ========================================= =========== ==============
671686

672687
where

Documentation/conf.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ def have_command(cmd):
7575
"__rcu",
7676
"__user",
7777
"__force",
78+
"__counted_by_le",
79+
"__counted_by_be",
7880

7981
# include/linux/compiler_attributes.h:
8082
"__alias",
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/net/airoha,en8811h.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: Airoha EN8811H PHY
8+
9+
maintainers:
10+
- Eric Woudstra <ericwouds@gmail.com>
11+
12+
description:
13+
The Airoha EN8811H PHY has the ability to reverse polarity
14+
on the lines to and/or from the MAC. It is reversed by
15+
the booleans in the devicetree node of the phy.
16+
17+
allOf:
18+
- $ref: ethernet-phy.yaml#
19+
20+
properties:
21+
compatible:
22+
enum:
23+
- ethernet-phy-id03a2.a411
24+
25+
reg:
26+
maxItems: 1
27+
28+
airoha,pnswap-rx:
29+
type: boolean
30+
description:
31+
Reverse rx polarity of the SERDES. This is the receiving
32+
side of the lines from the MAC towards the EN881H.
33+
34+
airoha,pnswap-tx:
35+
type: boolean
36+
description:
37+
Reverse tx polarity of SERDES. This is the transmitting
38+
side of the lines from EN8811H towards the MAC.
39+
40+
required:
41+
- reg
42+
43+
unevaluatedProperties: false
44+
45+
examples:
46+
- |
47+
mdio {
48+
#address-cells = <1>;
49+
#size-cells = <0>;
50+
51+
ethernet-phy@1 {
52+
compatible = "ethernet-phy-id03a2.a411";
53+
reg = <1>;
54+
airoha,pnswap-rx;
55+
};
56+
};
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/net/bluetooth/mediatek,mt7921s-bluetooth.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: MediaTek MT7921S Bluetooth
8+
9+
maintainers:
10+
- Sean Wang <sean.wang@mediatek.com>
11+
12+
description:
13+
MT7921S is an SDIO-attached dual-radio WiFi+Bluetooth Combo chip; each
14+
function is its own SDIO function on a shared SDIO interface. The chip
15+
has two dedicated reset lines, one for each function core.
16+
This binding only covers the Bluetooth SDIO function, with one device
17+
node describing only this SDIO function.
18+
19+
allOf:
20+
- $ref: bluetooth-controller.yaml#
21+
22+
properties:
23+
compatible:
24+
enum:
25+
- mediatek,mt7921s-bluetooth
26+
27+
reg:
28+
const: 2
29+
30+
reset-gpios:
31+
maxItems: 1
32+
description:
33+
An active-low reset line for the Bluetooth core; on typical M.2
34+
key E modules this is the W_DISABLE2# pin.
35+
36+
required:
37+
- compatible
38+
- reg
39+
40+
unevaluatedProperties: false
41+
42+
examples:
43+
- |
44+
#include <dt-bindings/gpio/gpio.h>
45+
46+
mmc {
47+
#address-cells = <1>;
48+
#size-cells = <0>;
49+
50+
bluetooth@2 {
51+
compatible = "mediatek,mt7921s-bluetooth";
52+
reg = <2>;
53+
reset-gpios = <&pio 8 GPIO_ACTIVE_LOW>;
54+
};
55+
};

0 commit comments

Comments
 (0)