diff --git a/.github/update.log b/.github/update.log
index 5b7161ab50..66b87da0ba 100644
--- a/.github/update.log
+++ b/.github/update.log
@@ -770,3 +770,4 @@ Update On Tue Sep 17 20:34:06 CEST 2024
Update On Wed Sep 18 20:34:25 CEST 2024
Update On Thu Sep 19 20:35:43 CEST 2024
Update On Fri Sep 20 20:34:37 CEST 2024
+Update On Sat Sep 21 20:33:09 CEST 2024
diff --git a/brook/README.md b/brook/README.md
index 1990da0f97..c24d9f9bfb 100644
--- a/brook/README.md
+++ b/brook/README.md
@@ -23,12 +23,20 @@ brook server -l :9999 -p hello
## Client
-| iOS | Android | Mac |Windows |Linux |OpenWrt |
-| --- | --- | --- | --- | --- | --- |
-| [](https://apps.apple.com/us/app/brook-network-tool/id1216002642) | [](https://github.com/txthinking/brook/releases/latest/download/Brook.apk) | [](https://apps.apple.com/us/app/brook-network-tool/id1216002642) | [](https://github.com/txthinking/brook/releases/latest/download/Brook.msix) | [](https://github.com/txthinking/brook/releases/latest/download/Brook.bin) | [](https://github.com/txthinking/brook/releases) |
-| / | / | [App Mode](https://www.txthinking.com/talks/articles/macos-app-mode-en.article) | [How](https://www.txthinking.com/talks/articles/msix-brook-en.article) | [How](https://www.txthinking.com/talks/articles/linux-app-brook-en.article) | [How](https://www.txthinking.com/talks/articles/brook-openwrt-en.article) |
+- [iOS](https://apps.apple.com/us/app/brook-network-tool/id1216002642)
+- [Android](https://github.com/txthinking/brook/releases/latest/download/Brook.apk)
+- [macOS](https://apps.apple.com/us/app/brook-network-tool/id1216002642)
+- [Windows](https://github.com/txthinking/brook/releases/latest/download/Brook.msix)
+- [Linux](https://github.com/txthinking/brook/releases/latest/download/Brook.bin)
+- [OpenWrt](https://github.com/txthinking/brook/releases)
> You may want to use `brook link` to customize some parameters
+
+- [About App Mode on macOS](https://www.txthinking.com/talks/articles/macos-app-mode-en.article)
+- [How to install Brook on Windows?](https://www.txthinking.com/talks/articles/msix-brook-en.article)
+- [How to install Brook on Linux](https://www.txthinking.com/talks/articles/linux-app-brook-en.article)
+- [How to install Brook on OpenWrt](https://www.txthinking.com/talks/articles/brook-openwrt-en.article)
+
# Client
Brook GUI will pass different _global variables_ to the script at different times, and the script only needs to assign the processing result to the global variable `out`
@@ -449,7 +457,7 @@ Brook [GLOBAL OPTIONS] command [COMMAND OPTIONS] [ARGUMENTS...]
- **--dialWithSocks5Username**="": If there is
-- **--help, -h**: show help
+
- **--ipLimitInterval**="": Interval (s) for ipLimitMax (default: 0)
@@ -1028,11 +1036,11 @@ Generate markdown page
- **--file, -f**="": Write to file, default print to stdout
-- **--help, -h**: show help
-### help, h
-Shows a list of commands or help for one command
+
+
+
## manpage
@@ -1045,6 +1053,7 @@ Generate man.1 page
## help, h
Shows a list of commands or help for one command
+
# Examples
List some examples of common scene commands, pay attention to replace the parameters such as IP, port, password, domain name, certificate path, etc. in the example by yourself
diff --git a/brook/docs/build.js b/brook/docs/build.js
new file mode 100755
index 0000000000..50c17fe97d
--- /dev/null
+++ b/brook/docs/build.js
@@ -0,0 +1,30 @@
+#!/usr/bin/env bun
+
+import * as fs from 'node:fs/promises'
+import { $ } from 'bun'
+
+var f = await fs.open("../readme.md", 'w+');
+await fs.write(f.fd, '# Brook\n')
+await fs.write(f.fd, '\n')
+await fs.write(f.fd, '\n')
+await fs.write(f.fd, 'A cross-platform programmable network tool.\n')
+await fs.write(f.fd, '\n')
+await fs.write(f.fd, '# Sponsor\n')
+await fs.write(f.fd, '**❤️ [Shiliew - A network app designed for those who value their time](https://www.txthinking.com/shiliew.html)**\n')
+
+var s = await fs.readFile('getting-started.md', { encoding: 'utf8' })
+await fs.write(f.fd, s)
+var s = await fs.readFile('gui.md', { encoding: 'utf8' })
+await fs.write(f.fd, s)
+await fs.write(f.fd, '# CLI Documentation\n')
+await fs.write(f.fd, 'Each subcommand has a `--example` parameter that can print the minimal example of usage\n')
+var s = await $`brook mdpage`.text()
+s = s.split("\n").filter(v => !v.startsWith("[")).join("\n").replace("```\n```", "```\nbrook --help\n```").split("\n").map(v => v.startsWith("**") && !v.startsWith("**Usage") ? "- " + v : v).join('\n')
+s = s.replace("### help, h", "").replace("Shows a list of commands or help for one command", "").replaceAll("- **--help, -h**: show help", "")
+await fs.write(f.fd, s)
+var s = await fs.readFile('example.md', { encoding: 'utf8' })
+await fs.write(f.fd, s)
+var s = await fs.readFile('resources.md', { encoding: 'utf8' })
+await fs.write(f.fd, s)
+await fs.close(f.fd)
+await $`markdown ../readme.md ./index.html`
diff --git a/brook/docs/build.sh b/brook/docs/build.sh
deleted file mode 100755
index 4e8075312a..0000000000
--- a/brook/docs/build.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/bash
-
-echo '# Brook' > ../readme.md
-echo '' >> ../readme.md
-echo '' >> ../readme.md
-echo 'A cross-platform programmable network tool.' >> ../readme.md
-echo '' >> ../readme.md
-echo '# Sponsor' >> ../readme.md
-echo '**❤️ [Shiliew - A network app designed for those who value their time](https://www.txthinking.com/shiliew.html)**' >> ../readme.md
-
-cat getting-started.md >> ../readme.md
-cat gui.md >> ../readme.md
-
-echo '# CLI Documentation' >> ../readme.md
-echo 'Each subcommand has a `--example` parameter that can print the minimal example of usage' >> ../readme.md
-jb '$1`brook mdpage`.split("\n").filter(v=>!v.startsWith("[")).join("\n").replace("```\n```", "```\nbrook --help\n```").split("\n").forEach(v=> echo(v.startsWith("**") && !v.startsWith("**Usage") ? "- "+v : v))' >> ../readme.md
-
-cat example.md >> ../readme.md
-cat resources.md >> ../readme.md
-
-markdown ../readme.md ./index.html
-
diff --git a/brook/docs/getting-started.md b/brook/docs/getting-started.md
index 2ccb15bb82..7b929673c8 100644
--- a/brook/docs/getting-started.md
+++ b/brook/docs/getting-started.md
@@ -16,9 +16,17 @@ brook server -l :9999 -p hello
## Client
-| iOS | Android | Mac |Windows |Linux |OpenWrt |
-| --- | --- | --- | --- | --- | --- |
-| [](https://apps.apple.com/us/app/brook-network-tool/id1216002642) | [](https://github.com/txthinking/brook/releases/latest/download/Brook.apk) | [](https://apps.apple.com/us/app/brook-network-tool/id1216002642) | [](https://github.com/txthinking/brook/releases/latest/download/Brook.msix) | [](https://github.com/txthinking/brook/releases/latest/download/Brook.bin) | [](https://github.com/txthinking/brook/releases) |
-| / | / | [App Mode](https://www.txthinking.com/talks/articles/macos-app-mode-en.article) | [How](https://www.txthinking.com/talks/articles/msix-brook-en.article) | [How](https://www.txthinking.com/talks/articles/linux-app-brook-en.article) | [How](https://www.txthinking.com/talks/articles/brook-openwrt-en.article) |
+- [iOS](https://apps.apple.com/us/app/brook-network-tool/id1216002642)
+- [Android](https://github.com/txthinking/brook/releases/latest/download/Brook.apk)
+- [macOS](https://apps.apple.com/us/app/brook-network-tool/id1216002642)
+- [Windows](https://github.com/txthinking/brook/releases/latest/download/Brook.msix)
+- [Linux](https://github.com/txthinking/brook/releases/latest/download/Brook.bin)
+- [OpenWrt](https://github.com/txthinking/brook/releases)
> You may want to use `brook link` to customize some parameters
+
+- [About App Mode on macOS](https://www.txthinking.com/talks/articles/macos-app-mode-en.article)
+- [How to install Brook on Windows?](https://www.txthinking.com/talks/articles/msix-brook-en.article)
+- [How to install Brook on Linux](https://www.txthinking.com/talks/articles/linux-app-brook-en.article)
+- [How to install Brook on OpenWrt](https://www.txthinking.com/talks/articles/brook-openwrt-en.article)
+
diff --git a/brook/docs/index.html b/brook/docs/index.html
index dcb70cb0a0..6600dbce5d 100644
--- a/brook/docs/index.html
+++ b/brook/docs/index.html
@@ -1216,12 +1216,9 @@
echoclient
ipcountry
completion
-mdpage
-
+mdpage
manpage
-help, h
+help, h
Examples
Examples brook server -l :9999 -p hello
Client
-
-
-
-iOS
-Android
-Mac
-Windows
-Linux
-OpenWrt
-
-
-
-
-
-
-
-
-
-
-
-/
-/
-App Mode
-How
-How
-How
-
-
+
You may want to use brook link to customize some parameters
+
Client
Brook GUI will pass different global variables to the script at different times, and the script only needs to assign the processing result to the global variable out
CLI
@@ -2119,8 +2099,6 @@ Functions
--dialWithSocks5Username ="": If there is
---help, -h : show help
-
--ipLimitInterval ="": Interval (s) for ipLimitMax (default: 0)
--ipLimitMax ="": Limit the number of client IP addresses, be careful when using this parameter, as the client may have dynamic IP. Works with server/wsserver/wssserver/quicserver (default: 0)
@@ -2696,11 +2674,7 @@ Functions
--file, -f ="": Write to file, default print to stdout
---help, -h : show help
-
-help, h
-Shows a list of commands or help for one command
manpage
Generate man.1 page
-help, h
+help, h
Shows a list of commands or help for one command
Examples
List some examples of common scene commands, pay attention to replace the parameters such as IP, port, password, domain name, certificate path, etc. in the example by yourself
diff --git a/clash-meta/adapter/provider/provider.go b/clash-meta/adapter/provider/provider.go
index 3103b50828..4381c24d9d 100644
--- a/clash-meta/adapter/provider/provider.go
+++ b/clash-meta/adapter/provider/provider.go
@@ -128,7 +128,7 @@ func (pp *proxySetProvider) getSubscriptionInfo() {
go func() {
ctx, cancel := context.WithTimeout(context.Background(), time.Second*90)
defer cancel()
- resp, err := mihomoHttp.HttpRequestWithProxy(ctx, pp.Vehicle().(*resource.HTTPVehicle).Url(),
+ resp, err := mihomoHttp.HttpRequestWithProxy(ctx, pp.Vehicle().Url(),
http.MethodGet, nil, nil, pp.Vehicle().Proxy())
if err != nil {
return
@@ -137,7 +137,7 @@ func (pp *proxySetProvider) getSubscriptionInfo() {
userInfoStr := strings.TrimSpace(resp.Header.Get("subscription-userinfo"))
if userInfoStr == "" {
- resp2, err := mihomoHttp.HttpRequestWithProxy(ctx, pp.Vehicle().(*resource.HTTPVehicle).Url(),
+ resp2, err := mihomoHttp.HttpRequestWithProxy(ctx, pp.Vehicle().Url(),
http.MethodGet, http.Header{"User-Agent": {"Quantumultx"}}, nil, pp.Vehicle().Proxy())
if err != nil {
return
diff --git a/clash-meta/component/resource/fetcher.go b/clash-meta/component/resource/fetcher.go
index 9a4f5a7591..fec9fe7714 100644
--- a/clash-meta/component/resource/fetcher.go
+++ b/clash-meta/component/resource/fetcher.go
@@ -65,8 +65,7 @@ func (f *Fetcher[V]) Initial() (V, error) {
modTime := stat.ModTime()
f.updatedAt = modTime
isLocal = true
- if f.interval != 0 && modTime.Add(f.interval).Before(time.Now()) {
- log.Warnln("[Provider] %s not updated for a long time, force refresh", f.Name())
+ if time.Since(modTime) > f.interval {
forceUpdate = true
}
} else {
@@ -78,21 +77,7 @@ func (f *Fetcher[V]) Initial() (V, error) {
return lo.Empty[V](), err
}
- var contents V
- if forceUpdate {
- var forceBuf []byte
- if forceBuf, err = f.vehicle.Read(f.ctx); err == nil {
- if contents, err = f.parser(forceBuf); err == nil {
- isLocal = false
- buf = forceBuf
- }
- }
- }
-
- if err != nil || !forceUpdate {
- contents, err = f.parser(buf)
- }
-
+ contents, err := f.parser(buf)
if err != nil {
if !isLocal {
return lo.Empty[V](), err
@@ -135,7 +120,7 @@ func (f *Fetcher[V]) Initial() (V, error) {
return lo.Empty[V](), err
}
} else if f.interval > 0 {
- go f.pullLoop()
+ go f.pullLoop(forceUpdate)
}
return contents, nil
@@ -164,7 +149,7 @@ func (f *Fetcher[V]) SideUpdate(buf []byte) (V, bool, error) {
}
if f.vehicle.Type() != types.File {
- if err := safeWrite(f.vehicle.Path(), buf); err != nil {
+ if err = safeWrite(f.vehicle.Path(), buf); err != nil {
return lo.Empty[V](), false, err
}
}
@@ -183,12 +168,17 @@ func (f *Fetcher[V]) Close() error {
return nil
}
-func (f *Fetcher[V]) pullLoop() {
+func (f *Fetcher[V]) pullLoop(forceUpdate bool) {
initialInterval := f.interval - time.Since(f.updatedAt)
if initialInterval > f.interval {
initialInterval = f.interval
}
+ if forceUpdate {
+ log.Warnln("[Provider] %s not updated for a long time, force refresh", f.Name())
+ f.update(f.vehicle.Path())
+ }
+
timer := time.NewTimer(initialInterval)
defer timer.Stop()
for {
diff --git a/clash-meta/component/resource/vehicle.go b/clash-meta/component/resource/vehicle.go
index 4618ef52f2..74324e6d3b 100644
--- a/clash-meta/component/resource/vehicle.go
+++ b/clash-meta/component/resource/vehicle.go
@@ -24,6 +24,10 @@ func (f *FileVehicle) Path() string {
return f.path
}
+func (f *FileVehicle) Url() string {
+ return "file://" + f.path
+}
+
func (f *FileVehicle) Read(ctx context.Context) ([]byte, error) {
return os.ReadFile(f.path)
}
diff --git a/clash-meta/component/trie/domain.go b/clash-meta/component/trie/domain.go
index 87dfeda60d..574a59caa7 100644
--- a/clash-meta/component/trie/domain.go
+++ b/clash-meta/component/trie/domain.go
@@ -3,6 +3,8 @@ package trie
import (
"errors"
"strings"
+ "unicode"
+ "unicode/utf8"
)
const (
@@ -25,6 +27,14 @@ func ValidAndSplitDomain(domain string) ([]string, bool) {
if domain != "" && domain[len(domain)-1] == '.' {
return nil, false
}
+ if domain != "" {
+ if r, _ := utf8.DecodeRuneInString(domain); unicode.IsSpace(r) {
+ return nil, false
+ }
+ if r, _ := utf8.DecodeLastRuneInString(domain); unicode.IsSpace(r) {
+ return nil, false
+ }
+ }
domain = strings.ToLower(domain)
parts := strings.Split(domain, domainStep)
if len(parts) == 1 {
diff --git a/clash-meta/component/trie/domain_test.go b/clash-meta/component/trie/domain_test.go
index 916f61076d..6aab72d3a7 100644
--- a/clash-meta/component/trie/domain_test.go
+++ b/clash-meta/component/trie/domain_test.go
@@ -127,3 +127,14 @@ func TestTrie_Foreach(t *testing.T) {
})
assert.Equal(t, 7, count)
}
+
+func TestTrie_Space(t *testing.T) {
+ validDomain := func(domain string) bool {
+ _, ok := trie.ValidAndSplitDomain(domain)
+ return ok
+ }
+ assert.True(t, validDomain("google.com"))
+ assert.False(t, validDomain(" google.com"))
+ assert.False(t, validDomain(" google.com "))
+ assert.True(t, validDomain("Mijia Cloud"))
+}
diff --git a/clash-meta/config/config.go b/clash-meta/config/config.go
index 907d40bd37..5a95de79d6 100644
--- a/clash-meta/config/config.go
+++ b/clash-meta/config/config.go
@@ -8,7 +8,6 @@ import (
"net/netip"
"net/url"
"path"
- "regexp"
"strings"
"time"
@@ -1287,7 +1286,6 @@ func parsePureDNSServer(server string) string {
func parseNameServerPolicy(nsPolicy *orderedmap.OrderedMap[string, any], ruleProviders map[string]providerTypes.RuleProvider, respectRules bool, preferH3 bool) ([]dns.Policy, error) {
var policy []dns.Policy
- re := regexp.MustCompile(`[a-zA-Z0-9\-]+\.[a-zA-Z]{2,}(\.[a-zA-Z]{2,})?`)
for pair := nsPolicy.Oldest(); pair != nil; pair = pair.Next() {
k, v := pair.Key, pair.Value
@@ -1299,8 +1297,9 @@ func parseNameServerPolicy(nsPolicy *orderedmap.OrderedMap[string, any], rulePro
if err != nil {
return nil, err
}
- if strings.Contains(strings.ToLower(k), ",") {
- if strings.Contains(k, "geosite:") {
+ kLower := strings.ToLower(k)
+ if strings.Contains(kLower, ",") {
+ if strings.Contains(kLower, "geosite:") {
subkeys := strings.Split(k, ":")
subkeys = subkeys[1:]
subkeys = strings.Split(subkeys[0], ",")
@@ -1308,7 +1307,7 @@ func parseNameServerPolicy(nsPolicy *orderedmap.OrderedMap[string, any], rulePro
newKey := "geosite:" + subkey
policy = append(policy, dns.Policy{Domain: newKey, NameServers: nameservers})
}
- } else if strings.Contains(strings.ToLower(k), "rule-set:") {
+ } else if strings.Contains(kLower, "rule-set:") {
subkeys := strings.Split(k, ":")
subkeys = subkeys[1:]
subkeys = strings.Split(subkeys[0], ",")
@@ -1316,16 +1315,16 @@ func parseNameServerPolicy(nsPolicy *orderedmap.OrderedMap[string, any], rulePro
newKey := "rule-set:" + subkey
policy = append(policy, dns.Policy{Domain: newKey, NameServers: nameservers})
}
- } else if re.MatchString(k) {
+ } else {
subkeys := strings.Split(k, ",")
for _, subkey := range subkeys {
policy = append(policy, dns.Policy{Domain: subkey, NameServers: nameservers})
}
}
} else {
- if strings.Contains(strings.ToLower(k), "geosite:") {
+ if strings.Contains(kLower, "geosite:") {
policy = append(policy, dns.Policy{Domain: "geosite:" + k[8:], NameServers: nameservers})
- } else if strings.Contains(strings.ToLower(k), "rule-set:") {
+ } else if strings.Contains(kLower, "rule-set:") {
policy = append(policy, dns.Policy{Domain: "rule-set:" + k[9:], NameServers: nameservers})
} else {
policy = append(policy, dns.Policy{Domain: k, NameServers: nameservers})
diff --git a/clash-meta/constant/provider/interface.go b/clash-meta/constant/provider/interface.go
index 880bdadff6..9d24f6917d 100644
--- a/clash-meta/constant/provider/interface.go
+++ b/clash-meta/constant/provider/interface.go
@@ -34,6 +34,7 @@ func (v VehicleType) String() string {
type Vehicle interface {
Read(ctx context.Context) ([]byte, error)
Path() string
+ Url() string
Proxy() string
Type() VehicleType
}
diff --git a/clash-meta/listener/sing_tun/server.go b/clash-meta/listener/sing_tun/server.go
index a135a30192..c2c668b34e 100644
--- a/clash-meta/listener/sing_tun/server.go
+++ b/clash-meta/listener/sing_tun/server.go
@@ -138,6 +138,7 @@ func New(options LC.Tun, tunnel C.Tunnel, additions ...inbound.Addition) (l *Lis
tunName := options.Device
if options.FileDescriptor == 0 && (tunName == "" || !checkTunName(tunName)) {
tunName = CalculateInterfaceName(InterfaceName)
+ options.Device = tunName
}
routeAddress := options.RouteAddress
if len(options.Inet4RouteAddress) > 0 {
diff --git a/clash-nyanpasu/backend/Cargo.lock b/clash-nyanpasu/backend/Cargo.lock
index 6923d5a0f6..9b62b8698d 100644
--- a/clash-nyanpasu/backend/Cargo.lock
+++ b/clash-nyanpasu/backend/Cargo.lock
@@ -570,9 +570,9 @@ dependencies = [
[[package]]
name = "axum"
-version = "0.7.5"
+version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf"
+checksum = "8f43644eed690f5374f1af436ecd6aea01cd201f6fbdf0178adaf6907afb2cec"
dependencies = [
"async-trait",
"axum-core",
@@ -599,7 +599,7 @@ dependencies = [
"sync_wrapper 1.0.1",
"tokio",
"tokio-tungstenite",
- "tower",
+ "tower 0.5.1",
"tower-layer",
"tower-service",
"tracing",
@@ -607,9 +607,9 @@ dependencies = [
[[package]]
name = "axum-core"
-version = "0.4.3"
+version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3"
+checksum = "5e6b8ba012a258d63c9adfa28b9ddcf66149da6f986c5b5452e629d5ee64bf00"
dependencies = [
"async-trait",
"bytes",
@@ -620,7 +620,7 @@ dependencies = [
"mime",
"pin-project-lite",
"rustversion",
- "sync_wrapper 0.1.2",
+ "sync_wrapper 1.0.1",
"tower-layer",
"tower-service",
"tracing",
@@ -1228,9 +1228,9 @@ dependencies = [
[[package]]
name = "clap"
-version = "4.5.17"
+version = "4.5.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3e5a21b8495e732f1b3c364c9949b201ca7bae518c502c80256c96ad79eaf6ac"
+checksum = "b0956a43b323ac1afaffc053ed5c4b7c1f1800bacd1683c353aabbb752515dd3"
dependencies = [
"clap_builder",
"clap_derive",
@@ -1238,9 +1238,9 @@ dependencies = [
[[package]]
name = "clap_builder"
-version = "4.5.17"
+version = "4.5.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8cf2dd12af7a047ad9d6da2b6b249759a22a7abc0f474c1dae1777afa4b21a73"
+checksum = "4d72166dd41634086d5803a47eb71ae740e61d84709c36f3c34110173db3961b"
dependencies = [
"anstream",
"anstyle",
@@ -1250,9 +1250,9 @@ dependencies = [
[[package]]
name = "clap_derive"
-version = "4.5.13"
+version = "4.5.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0"
+checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab"
dependencies = [
"heck 0.5.0",
"proc-macro2",
@@ -1756,9 +1756,9 @@ dependencies = [
[[package]]
name = "curl-sys"
-version = "0.4.75+curl-8.10.0"
+version = "0.4.76+curl-8.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2a4fd752d337342e4314717c0d9b6586b059a120c80029ebe4d49b11fec7875e"
+checksum = "00462dbe9cbb9344e1b2be34d9094d74e3b8aac59a883495b335eafd02e25120"
dependencies = [
"cc",
"libc",
@@ -3322,7 +3322,7 @@ dependencies = [
"pin-project-lite",
"socket2 0.5.7",
"tokio",
- "tower",
+ "tower 0.4.13",
"tower-service",
"tracing",
]
@@ -4709,7 +4709,7 @@ dependencies = [
[[package]]
name = "nyanpasu-ipc"
version = "1.0.6"
-source = "git+https://github.com/LibNyanpasu/nyanpasu-service.git#a9d91584893489ffb96741bfee3f5b20a4f2eba7"
+source = "git+https://github.com/LibNyanpasu/nyanpasu-service.git#eafde94f159754296b7bf896b08f8c50da6bfe05"
dependencies = [
"anyhow",
"axum",
@@ -5583,9 +5583,9 @@ checksum = "325a6d2ac5dee293c3b2612d4993b98aec1dff096b0a2dae70ed7d95784a05da"
[[package]]
name = "portable-atomic"
-version = "1.7.0"
+version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265"
+checksum = "d30538d42559de6b034bc76fd6dd4c38961b1ee5c6c56e3808c50128fdbc22ce"
[[package]]
name = "powerfmt"
@@ -5750,9 +5750,9 @@ dependencies = [
[[package]]
name = "quick-xml"
-version = "0.36.1"
+version = "0.36.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "96a05e2e8efddfa51a84ca47cec303fac86c8541b686d37cac5efc0e094417bc"
+checksum = "f7649a7b4df05aed9ea7ec6f628c67c9953a43869b8bc50929569b2999d443fe"
dependencies = [
"memchr",
]
@@ -6446,9 +6446,9 @@ dependencies = [
[[package]]
name = "security-framework-sys"
-version = "2.11.1"
+version = "2.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf"
+checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6"
dependencies = [
"core-foundation-sys",
"libc",
@@ -7439,7 +7439,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-clipboard-manager"
version = "2.0.0-rc.4"
-source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#6bf1bd8d44bb95618590aa066e638509b014e0f9"
+source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#221f50f53bd7a87dbd404e4cb1aaf502a5047785"
dependencies = [
"arboard",
"image",
@@ -7469,7 +7469,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-dialog"
version = "2.0.0-rc.7"
-source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#6bf1bd8d44bb95618590aa066e638509b014e0f9"
+source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#221f50f53bd7a87dbd404e4cb1aaf502a5047785"
dependencies = [
"log",
"raw-window-handle",
@@ -7486,7 +7486,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-fs"
version = "2.0.0-rc.5"
-source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#6bf1bd8d44bb95618590aa066e638509b014e0f9"
+source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#221f50f53bd7a87dbd404e4cb1aaf502a5047785"
dependencies = [
"anyhow",
"dunce",
@@ -7506,7 +7506,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-global-shortcut"
version = "2.0.0-rc.2"
-source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#6bf1bd8d44bb95618590aa066e638509b014e0f9"
+source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#221f50f53bd7a87dbd404e4cb1aaf502a5047785"
dependencies = [
"global-hotkey",
"log",
@@ -7520,7 +7520,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-notification"
version = "2.0.0-rc.5"
-source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#6bf1bd8d44bb95618590aa066e638509b014e0f9"
+source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#221f50f53bd7a87dbd404e4cb1aaf502a5047785"
dependencies = [
"log",
"notify-rust",
@@ -7538,7 +7538,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-os"
version = "2.0.0-rc.1"
-source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#6bf1bd8d44bb95618590aa066e638509b014e0f9"
+source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#221f50f53bd7a87dbd404e4cb1aaf502a5047785"
dependencies = [
"gethostname 0.5.0",
"log",
@@ -7555,7 +7555,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-process"
version = "2.0.0-rc.1"
-source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#6bf1bd8d44bb95618590aa066e638509b014e0f9"
+source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#221f50f53bd7a87dbd404e4cb1aaf502a5047785"
dependencies = [
"tauri",
"tauri-plugin",
@@ -7564,7 +7564,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-shell"
version = "2.0.0-rc.3"
-source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#6bf1bd8d44bb95618590aa066e638509b014e0f9"
+source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#221f50f53bd7a87dbd404e4cb1aaf502a5047785"
dependencies = [
"encoding_rs",
"log",
@@ -7584,7 +7584,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-updater"
version = "2.0.0-rc.3"
-source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#6bf1bd8d44bb95618590aa066e638509b014e0f9"
+source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#221f50f53bd7a87dbd404e4cb1aaf502a5047785"
dependencies = [
"base64 0.22.1",
"dirs 5.0.1",
@@ -7593,6 +7593,7 @@ dependencies = [
"http 1.1.0",
"infer 0.16.0",
"minisign-verify",
+ "percent-encoding",
"reqwest",
"semver 1.0.23",
"serde",
@@ -8031,9 +8032,9 @@ dependencies = [
[[package]]
name = "tokio-tungstenite"
-version = "0.21.0"
+version = "0.23.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c83b561d025642014097b66e6c1bb422783339e0909e4429cde4749d1990bc38"
+checksum = "c6989540ced10490aaf14e6bad2e3d33728a2813310a0c71d1574304c49631cd"
dependencies = [
"futures-util",
"log",
@@ -8126,6 +8127,21 @@ dependencies = [
"tokio",
"tower-layer",
"tower-service",
+]
+
+[[package]]
+name = "tower"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f"
+dependencies = [
+ "futures-core",
+ "futures-util",
+ "pin-project-lite",
+ "sync_wrapper 0.1.2",
+ "tokio",
+ "tower-layer",
+ "tower-service",
"tracing",
]
@@ -8290,9 +8306,9 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
[[package]]
name = "tungstenite"
-version = "0.21.0"
+version = "0.23.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9ef1a641ea34f399a848dea702823bbecfb4c486f911735368f1f137cb8257e1"
+checksum = "6e2e2ce1e47ed2994fd43b04c8f618008d4cabdd5ee34027cf14f9d918edd9c8"
dependencies = [
"byteorder",
"bytes",
@@ -8303,7 +8319,6 @@ dependencies = [
"rand 0.8.5",
"sha1",
"thiserror",
- "url",
"utf-8",
]
@@ -8803,7 +8818,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "597f2001b2e5fc1121e3d5b9791d3e78f05ba6bfa4641053846248e3a13661c3"
dependencies = [
"proc-macro2",
- "quick-xml 0.36.1",
+ "quick-xml 0.36.2",
"quote",
]
diff --git a/clash-nyanpasu/backend/tauri/src/core/hotkey.rs b/clash-nyanpasu/backend/tauri/src/core/hotkey.rs
index 89600623cd..a6c14486ba 100644
--- a/clash-nyanpasu/backend/tauri/src/core/hotkey.rs
+++ b/clash-nyanpasu/backend/tauri/src/core/hotkey.rs
@@ -5,7 +5,7 @@ use parking_lot::Mutex;
use std::{collections::HashMap, sync::Arc};
use tauri::AppHandle;
-use tauri_plugin_global_shortcut::{GlobalShortcutExt, Shortcut};
+use tauri_plugin_global_shortcut::{GlobalShortcutExt, Shortcut, ShortcutState};
pub struct Hotkey {
current: Arc>>, // 保存当前的热键设置
@@ -15,6 +15,7 @@ pub struct Hotkey {
// (hotkey, func)
type HotKeyOp<'a> = (&'a str, HotKeyOpType<'a>);
+#[derive(Debug)]
enum HotKeyOpType<'a> {
#[allow(unused)]
Unbind(&'a str),
@@ -97,8 +98,10 @@ impl Hotkey {
_ => bail!("invalid function \"{func}\""),
};
- manager.on_shortcut(hotkey, move |_app_handle, _hotkey, _ev| {
- f();
+ manager.on_shortcut(hotkey, move |_app_handle, _hotkey, ev| {
+ if let ShortcutState::Pressed = ev.state {
+ f();
+ }
})?;
log::info!(target: "app", "register hotkey {hotkey} {func}");
@@ -117,6 +120,7 @@ impl Hotkey {
Ok(())
}
+ #[tracing::instrument(skip(self))]
pub fn update(&self, new_hotkeys: Vec) -> Result<()> {
let mut current = self.current.lock();
let old_map = Self::get_map_from_vec(¤t);
@@ -126,11 +130,13 @@ impl Hotkey {
// 先检查一遍所有新的热键是不是可以用的
for (hotkey, op) in ops.iter() {
- if let HotKeyOpType::Bind(_) = op {
+ if matches!(op, HotKeyOpType::Bind(_) | HotKeyOpType::Change(_, _)) {
Self::check_key(hotkey)?
}
}
+ tracing::info!("hotkey update: {:?}", ops);
+
for (hotkey, op) in ops.iter() {
match op {
HotKeyOpType::Unbind(_) => self.unregister(hotkey)?,
diff --git a/clash-nyanpasu/backend/tauri/src/lib.rs b/clash-nyanpasu/backend/tauri/src/lib.rs
index 469d6204f7..85c4fa9011 100644
--- a/clash-nyanpasu/backend/tauri/src/lib.rs
+++ b/clash-nyanpasu/backend/tauri/src/lib.rs
@@ -1,4 +1,4 @@
-#![feature(auto_traits, negative_impls)]
+#![feature(auto_traits, negative_impls, let_chains)]
#![cfg_attr(
all(not(debug_assertions), target_os = "windows"),
windows_subsystem = "windows"
@@ -136,6 +136,14 @@ pub fn run() -> std::io::Result<()> {
panic.note = note,
"A panic occurred",
);
+
+ // This is a workaround for the upstream issue: https://github.com/tauri-apps/tauri/issues/10546
+ if let Some(s) = payload.as_ref()
+ && s.contains("PostMessage failed ; is the messages queue full?")
+ {
+ return;
+ }
+
utils::dialog::panic_dialog(&format!(
"payload: {:#?}\nlocation: {:?}\nbacktrace: {:#?}\n\nnote: {:?}",
payload, location, backtrace, note
@@ -149,6 +157,7 @@ pub fn run() -> std::io::Result<()> {
});
let _ = task.join();
default_panic(panic_info);
+ std::process::exit(1); // exit if default panic handler doesn't exit
}));
let verge = { Config::verge().latest().language.clone().unwrap() };
@@ -324,10 +333,13 @@ pub fn run() -> std::io::Result<()> {
tauri::WindowEvent::ScaleFactorChanged { scale_factor, .. } => {
core::tray::on_scale_factor_changed(scale_factor);
}
- tauri::WindowEvent::CloseRequested { .. } | tauri::WindowEvent::Destroyed => {
+ tauri::WindowEvent::CloseRequested { .. } => {
log::debug!(target: "app", "window close requested");
- reset_window_open_counter();
let _ = resolve::save_window_state(app_handle, true);
+ }
+ tauri::WindowEvent::Destroyed => {
+ log::debug!(target: "app", "window destroyed");
+ reset_window_open_counter();
#[cfg(target_os = "macos")]
log_err!(app_handle.run_on_main_thread(|| {
crate::utils::dock::macos::hide_dock_icon();
diff --git a/clash-nyanpasu/backend/tauri/src/utils/init/mod.rs b/clash-nyanpasu/backend/tauri/src/utils/init/mod.rs
index b61fd8f8d5..b416ce732e 100644
--- a/clash-nyanpasu/backend/tauri/src/utils/init/mod.rs
+++ b/clash-nyanpasu/backend/tauri/src/utils/init/mod.rs
@@ -104,27 +104,27 @@ pub fn run_pending_migrations() -> Result<()> {
/// before tauri setup
pub fn init_config() -> Result<()> {
// Check if old config dir exist and new config dir is not exist
- let mut old_app_dir: Option = None;
- let mut app_dir: Option = None;
- crate::dialog_err!(dirs::old_app_home_dir().map(|_old_app_dir| {
- old_app_dir = Some(_old_app_dir);
- }));
+ // let mut old_app_dir: Option = None;
+ // let mut app_dir: Option = None;
+ // crate::dialog_err!(dirs::old_app_home_dir().map(|_old_app_dir| {
+ // old_app_dir = Some(_old_app_dir);
+ // }));
- crate::dialog_err!(dirs::app_home_dir().map(|_app_dir| {
- app_dir = Some(_app_dir);
- }));
+ // crate::dialog_err!(dirs::app_home_dir().map(|_app_dir| {
+ // app_dir = Some(_app_dir);
+ // }));
- if let (Some(app_dir), Some(old_app_dir)) = (app_dir, old_app_dir) {
- let msg = t!("dialog.migrate");
- if !app_dir.exists() && old_app_dir.exists() && migrate_dialog(msg.to_string().as_str()) {
- if let Err(e) = do_config_migration(&old_app_dir, &app_dir) {
- super::dialog::error_dialog(format!("failed to do migration: {:?}", e))
- }
- }
- if !app_dir.exists() {
- let _ = fs::create_dir_all(app_dir);
- }
- }
+ // if let (Some(app_dir), Some(old_app_dir)) = (app_dir, old_app_dir) {
+ // let msg = t!("dialog.migrate");
+ // if !app_dir.exists() && old_app_dir.exists() && migrate_dialog(msg.to_string().as_str()) {
+ // if let Err(e) = do_config_migration(&old_app_dir, &app_dir) {
+ // super::dialog::error_dialog(format!("failed to do migration: {:?}", e))
+ // }
+ // }
+ // if !app_dir.exists() {
+ // let _ = fs::create_dir_all(app_dir);
+ // }
+ // }
// init log
logging::init().unwrap();
diff --git a/clash-nyanpasu/backend/tauri/tauri.conf.json b/clash-nyanpasu/backend/tauri/tauri.conf.json
index 141216bcf9..f890a3fc1b 100644
--- a/clash-nyanpasu/backend/tauri/tauri.conf.json
+++ b/clash-nyanpasu/backend/tauri/tauri.conf.json
@@ -37,6 +37,7 @@
"sidecar/mihomo",
"sidecar/mihomo-alpha",
"sidecar/clash-rs",
+ "sidecar/clash-rs-alpha",
"sidecar/nyanpasu-service"
],
"copyright": "© 2024 Clash Nyanpasu All Rights Reserved",
diff --git a/clash-nyanpasu/frontend/interface/package.json b/clash-nyanpasu/frontend/interface/package.json
index 49f3bd0ef8..f0a8a8fe0a 100644
--- a/clash-nyanpasu/frontend/interface/package.json
+++ b/clash-nyanpasu/frontend/interface/package.json
@@ -13,7 +13,7 @@
"dependencies": {
"@tauri-apps/api": "2.0.0-rc.5",
"ahooks": "3.8.1",
- "ofetch": "1.3.4",
+ "ofetch": "1.4.0",
"react": "rc",
"swr": "2.2.5"
},
diff --git a/clash-nyanpasu/frontend/interface/src/ipc/useNyanpasu.ts b/clash-nyanpasu/frontend/interface/src/ipc/useNyanpasu.ts
index 71dce178b0..6606781395 100644
--- a/clash-nyanpasu/frontend/interface/src/ipc/useNyanpasu.ts
+++ b/clash-nyanpasu/frontend/interface/src/ipc/useNyanpasu.ts
@@ -38,6 +38,8 @@ export const useNyanpasu = (options?: {
} catch (error) {
if (options?.onError) {
options?.onError(error);
+ } else {
+ throw error;
}
}
};
diff --git a/clash-nyanpasu/frontend/nyanpasu/package.json b/clash-nyanpasu/frontend/nyanpasu/package.json
index 27398b203e..f0fb724c7a 100644
--- a/clash-nyanpasu/frontend/nyanpasu/package.json
+++ b/clash-nyanpasu/frontend/nyanpasu/package.json
@@ -34,7 +34,7 @@
"json-schema": "0.4.0",
"material-react-table": "3.0.1",
"monaco-editor": "0.52.0",
- "mui-color-input": "4.0.0",
+ "mui-color-input": "4.0.1",
"react": "rc",
"react-dom": "rc",
"react-error-boundary": "4.0.13",
@@ -53,7 +53,7 @@
"@csstools/normalize.css": "12.1.1",
"@emotion/babel-plugin": "11.12.0",
"@emotion/react": "11.13.3",
- "@iconify/json": "2.2.250",
+ "@iconify/json": "2.2.251",
"@monaco-editor/react": "4.6.0",
"@tanstack/react-router": "1.58.3",
"@tanstack/router-devtools": "1.58.3",
@@ -75,13 +75,13 @@
"meta-json-schema": "1.18.8",
"monaco-yaml": "5.2.2",
"nanoid": "5.0.7",
- "sass": "1.79.2",
+ "sass": "1.79.3",
"shiki": "1.18.0",
"tailwindcss-textshadow": "2.1.3",
"unplugin-auto-import": "0.18.3",
"unplugin-icons": "0.19.3",
"validator": "13.12.0",
- "vite": "5.4.6",
+ "vite": "5.4.7",
"vite-plugin-sass-dts": "1.3.29",
"vite-plugin-svgr": "4.2.0",
"vite-tsconfig-paths": "5.0.1",
diff --git a/clash-nyanpasu/frontend/nyanpasu/src/components/profiles/new-profile-button.tsx b/clash-nyanpasu/frontend/nyanpasu/src/components/profiles/new-profile-button.tsx
index ce0a102f8d..39366e2085 100644
--- a/clash-nyanpasu/frontend/nyanpasu/src/components/profiles/new-profile-button.tsx
+++ b/clash-nyanpasu/frontend/nyanpasu/src/components/profiles/new-profile-button.tsx
@@ -1,9 +1,9 @@
import { use, useEffect, useState } from "react";
import { Add } from "@mui/icons-material";
-import { FloatingButton } from "@nyanpasu/ui";
+import { cn, FloatingButton } from "@nyanpasu/ui";
import { AddProfileContext, ProfileDialog } from "./profile-dialog";
-export const NewProfileButton = () => {
+export const NewProfileButton = ({ className }: { className?: string }) => {
const addProfileCtx = use(AddProfileContext);
const [open, setOpen] = useState(!!addProfileCtx);
useEffect(() => {
@@ -11,7 +11,7 @@ export const NewProfileButton = () => {
}, [addProfileCtx]);
return (
<>
- setOpen(true)}>
+ setOpen(true)}>
diff --git a/clash-nyanpasu/frontend/nyanpasu/src/components/profiles/profile-item.tsx b/clash-nyanpasu/frontend/nyanpasu/src/components/profiles/profile-item.tsx
index 3e5abbc272..b661367424 100644
--- a/clash-nyanpasu/frontend/nyanpasu/src/components/profiles/profile-item.tsx
+++ b/clash-nyanpasu/frontend/nyanpasu/src/components/profiles/profile-item.tsx
@@ -1,7 +1,7 @@
import { useLockFn, useMemoizedFn, useSetState } from "ahooks";
import dayjs from "dayjs";
import { AnimatePresence, motion } from "framer-motion";
-import { memo, useEffect, useMemo, useState } from "react";
+import { memo, use, useEffect, useMemo, useState } from "react";
import { useTranslation } from "react-i18next";
import { message } from "@/utils/notification";
import parseTraffic from "@/utils/parse-traffic";
@@ -29,6 +29,7 @@ import {
import { Profile, useClash } from "@nyanpasu/interface";
import { cleanDeepClickEvent, cn } from "@nyanpasu/ui";
import { ProfileDialog } from "./profile-dialog";
+import { GlobalUpdatePendingContext } from "./provider";
export interface ProfileItemProps {
item: Profile.Item;
@@ -60,6 +61,8 @@ export const ProfileItem = memo(function ProfileItem({
viewProfile,
} = useClash();
+ const globalUpdatePending = use(GlobalUpdatePendingContext);
+
const [loading, setLoading] = useSetState({
update: false,
card: false,
@@ -91,16 +94,6 @@ export const ProfileItem = memo(function ProfileItem({
const [anchorEl, setAnchorEl] = useState(null);
- const menuMapping = {
- Select: () => handleSelect(),
- "Edit Info": () => setOpen(true),
- "Proxy Chains": () => onClickChains(item),
- "Open File": () => viewProfile(item.uid),
- Update: () => handleUpdate(),
- "Update(Proxy)": () => handleUpdate(true),
- Delete: () => handleDelete(),
- };
-
const handleSelect = useLockFn(async () => {
if (selected) {
return;
@@ -166,7 +159,27 @@ export const ProfileItem = memo(function ProfileItem({
}
});
- const MenuComp = () => {
+ const menuMapping = useMemo(
+ () => ({
+ Select: () => handleSelect(),
+ "Edit Info": () => setOpen(true),
+ "Proxy Chains": () => onClickChains(item),
+ "Open File": () => viewProfile(item.uid),
+ Update: () => handleUpdate(),
+ "Update(Proxy)": () => handleUpdate(true),
+ Delete: () => handleDelete(),
+ }),
+ [
+ handleDelete,
+ handleSelect,
+ handleUpdate,
+ item,
+ onClickChains,
+ viewProfile,
+ ],
+ );
+
+ const MenuComp = useMemo(() => {
const handleClick = (func: () => void) => {
setAnchorEl(null);
func();
@@ -193,7 +206,7 @@ export const ProfileItem = memo(function ProfileItem({
})}
);
- };
+ }, [anchorEl, menuMapping, t]);
const [open, setOpen] = useState(false);
@@ -310,7 +323,7 @@ export const ProfileItem = memo(function ProfileItem({
cleanDeepClickEvent(e);
menuMapping.Update();
}}
- loading={loading.update}
+ loading={globalUpdatePending || loading.update}
>
@@ -351,7 +364,7 @@ export const ProfileItem = memo(function ProfileItem({
Applying Profile...
-
+ {MenuComp}
setOpen(false)}
diff --git a/clash-nyanpasu/frontend/nyanpasu/src/components/profiles/provider.tsx b/clash-nyanpasu/frontend/nyanpasu/src/components/profiles/provider.tsx
new file mode 100644
index 0000000000..bbb51e4620
--- /dev/null
+++ b/clash-nyanpasu/frontend/nyanpasu/src/components/profiles/provider.tsx
@@ -0,0 +1,3 @@
+import { createContext } from "react";
+
+export const GlobalUpdatePendingContext = createContext(false);
diff --git a/clash-nyanpasu/frontend/nyanpasu/src/components/setting/modules/hotkey-dialog.tsx b/clash-nyanpasu/frontend/nyanpasu/src/components/setting/modules/hotkey-dialog.tsx
index faf9a1b195..26834cb328 100644
--- a/clash-nyanpasu/frontend/nyanpasu/src/components/setting/modules/hotkey-dialog.tsx
+++ b/clash-nyanpasu/frontend/nyanpasu/src/components/setting/modules/hotkey-dialog.tsx
@@ -1,7 +1,8 @@
-import { useLockFn, useMemoizedFn } from "ahooks";
-import { useEffect, useMemo, useRef, useState } from "react";
+import { useLockFn } from "ahooks";
+import { useCallback, useEffect, useState } from "react";
import { useTranslation } from "react-i18next";
-import { notification, NotificationType } from "@/utils/notification";
+import { formatError } from "@/utils";
+import { message } from "@/utils/notification";
import { Typography } from "@mui/material";
import { useNyanpasu } from "@nyanpasu/interface";
import { BaseDialog, BaseDialogProps } from "@nyanpasu/ui";
@@ -21,7 +22,21 @@ const HOTKEY_FUNC = [
"toggle_tun_mode",
// "enable_tun_mode",
// "disable_tun_mode",
-];
+] as const;
+
+type AllowedHotkeyFunc = (typeof HOTKEY_FUNC)[number];
+
+type Key = string;
+
+type HotKeyErrorMessages = {
+ [K in AllowedHotkeyFunc]: string | null;
+};
+
+type HotKeyLoading = {
+ [K in AllowedHotkeyFunc]: boolean;
+};
+
+type HotkeyMap = { [K in AllowedHotkeyFunc]: Key[] };
export default function HotkeyDialog({
open,
@@ -31,19 +46,19 @@ export default function HotkeyDialog({
}: HotkeyDialogProps) {
const { t } = useTranslation();
- const { nyanpasuConfig, setNyanpasuConfig } = useNyanpasu();
-
- const [hotkeyMap, setHotkeyMap] = useState>({});
- const hotkeyMapRef = useRef>({});
// 检查是否有快捷键重复
const [duplicateItems, setDuplicateItems] = useState([]);
+ const { nyanpasuConfig, setNyanpasuConfig } = useNyanpasu();
+
+ const [hotkeyMap, setHotkeyMap] = useState({} as HotkeyMap);
+
useEffect(() => {
- if (open) {
+ if (open && Object.keys(hotkeyMap).length === 0) {
const map = {} as typeof hotkeyMap;
nyanpasuConfig?.hotkeys?.forEach((text) => {
const [func, key] = text.split(",").map((i) => i.trim());
if (!func || !key) return;
- map[func] = key
+ map[func as AllowedHotkeyFunc] = key
.split("+")
.map((e) => e.trim())
.map((k) => (k === "PLUS" ? "+" : k));
@@ -51,61 +66,76 @@ export default function HotkeyDialog({
setHotkeyMap(map);
setDuplicateItems([]);
}
- }, [nyanpasuConfig?.hotkeys, open]);
- const isDuplicated = useMemo(() => !!duplicateItems.length, [duplicateItems]);
+ }, [hotkeyMap, nyanpasuConfig?.hotkeys, open]);
- const onBlurCb = useMemoizedFn(
- (e: React.FocusEvent, func: string) => {
- console.log(func);
- const keys = Object.values(hotkeyMapRef.current).flat().filter(Boolean);
- const set = new Set(keys);
- if (keys.length !== set.size) {
- setDuplicateItems([...duplicateItems, func]);
- } else {
- setDuplicateItems(duplicateItems.filter((e) => e !== func));
+ const [errorMessages, setErrorMessages] = useState(
+ HOTKEY_FUNC.reduce(
+ (acc, cur) => ({ ...acc, [cur]: null }),
+ {} as HotKeyErrorMessages,
+ ),
+ );
+
+ const [loading, setLoading] = useState(
+ HOTKEY_FUNC.reduce(
+ (acc, cur) => ({ ...acc, [cur]: false }),
+ {} as HotKeyLoading,
+ ),
+ );
+
+ const saveState = useLockFn(
+ async (func: AllowedHotkeyFunc, hotkeyMap: HotkeyMap) => {
+ const hotkeys = Object.entries(hotkeyMap)
+ .map(([func, keys]) => {
+ if (!func || !keys?.length) return "";
+
+ const key = keys
+ .map((k) => k.trim())
+ .filter(Boolean)
+ .map((k) => (k === "+" ? "PLUS" : k))
+ .join("+");
+
+ if (!key) return "";
+ return `${func},${key}`;
+ })
+ .filter(Boolean);
+
+ try {
+ await setNyanpasuConfig({ hotkeys });
+ } catch (err: unknown) {
+ setErrorMessages((prev) => ({
+ ...prev,
+ [func]: formatError(err),
+ }));
+ await message(formatError(err), {
+ kind: "error",
+ });
}
},
);
- const saveState = useLockFn(async () => {
- const hotkeys = Object.entries(hotkeyMap)
- .map(([func, keys]) => {
- if (!func || !keys?.length) return "";
+ const onBlurCb = useCallback(
+ (e: React.FocusEvent, func: string) => {
+ const keys = Object.values(hotkeyMap).flat().filter(Boolean);
+ const set = new Set(keys);
+ if (keys.length !== set.size) {
+ setDuplicateItems([...duplicateItems, func]);
+ return;
+ } else {
+ setDuplicateItems(duplicateItems.filter((e) => e !== func));
+ }
- const key = keys
- .map((k) => k.trim())
- .filter(Boolean)
- .map((k) => (k === "+" ? "PLUS" : k))
- .join("+");
+ setLoading((prev) => ({ ...prev, [func]: true }));
- if (!key) return "";
- return `${func},${key}`;
- })
- .filter(Boolean);
-
- try {
- await setNyanpasuConfig({ hotkeys });
- } catch (err: any) {
- notification({
- title: t("Error"),
- body: err.message || err.toString(),
- type: NotificationType.Error,
- });
- }
- });
-
- // 自动保存
- useEffect(() => {
- if (!isDuplicated && open) {
- saveState();
- }
- }, [hotkeyMap, isDuplicated, open, saveState]);
-
- const onSave = () => {
- saveState().then(() => {
- onClose?.();
- });
- };
+ saveState(func as AllowedHotkeyFunc, hotkeyMap)
+ .catch(() => {
+ setDuplicateItems([...duplicateItems, func]);
+ })
+ .finally(() => {
+ setLoading((prev) => ({ ...prev, [func]: false }));
+ });
+ },
+ [duplicateItems, hotkeyMap, saveState],
+ );
return (
{t(func)}
{
- const map = { ...hotkeyMapRef.current, [func]: v };
- hotkeyMapRef.current = map;
- setHotkeyMap(map);
- }}
+ onValueChange={(v) =>
+ setHotkeyMap((prev) => ({ ...prev, [func]: v }))
+ }
/>
))}
diff --git a/clash-nyanpasu/frontend/nyanpasu/src/components/setting/modules/hotkey-input.tsx b/clash-nyanpasu/frontend/nyanpasu/src/components/setting/modules/hotkey-input.tsx
index 23973fa2ac..ca9d25c864 100644
--- a/clash-nyanpasu/frontend/nyanpasu/src/components/setting/modules/hotkey-input.tsx
+++ b/clash-nyanpasu/frontend/nyanpasu/src/components/setting/modules/hotkey-input.tsx
@@ -1,9 +1,8 @@
import { parseHotkey } from "@/utils/parse-hotkey";
-import { DeleteRounded } from "@mui/icons-material";
-import { alpha, IconButton, useTheme } from "@mui/material";
+import { Dangerous, DeleteRounded } from "@mui/icons-material";
+import { alpha, CircularProgress, IconButton, useTheme } from "@mui/material";
import type {} from "@mui/material/themeCssVarsAugmentation";
-import clsx from "clsx";
-import { CSSProperties, useRef, useState } from "react";
+import { CSSProperties, useEffect, useRef, useState } from "react";
import { cn, Kbd } from "@nyanpasu/ui";
import styles from "./hotkey-input.module.scss";
@@ -13,23 +12,33 @@ export interface Props extends React.HTMLAttributes {
onValueChange?: (value: string[]) => void;
func: string;
onBlurCb?: (e: React.FocusEvent, func: string) => void;
+ loading?: boolean;
}
export default function HotkeyInput({
isDuplicate = false,
value,
- children,
func,
onValueChange,
onBlurCb,
// native
className,
+ loading,
...rest
}: Props) {
const theme = useTheme();
const changeRef = useRef([]);
const [keys, setKeys] = useState(value || []);
+ const [isClearing, setIsClearing] = useState(false);
+
+ useEffect(() => {
+ if (isClearing) {
+ onBlurCb?.({} as React.FocusEvent, func);
+ setIsClearing(false);
+ }
+ }, [func, isClearing, onBlurCb]);
+
return (
@@ -84,6 +93,19 @@ export default function HotkeyInput({
{key}
))}
+ {loading && (
+
+ )}
+ {isDuplicate && (
+ ({
+ color: theme.palette.error.main,
+ }),
+ ]}
+ />
+ )}
@@ -94,7 +116,7 @@ export default function HotkeyInput({
onClick={() => {
onValueChange?.([]);
setKeys([]);
- onBlurCb?.({} as any, func);
+ setIsClearing(true);
}}
>
diff --git a/clash-nyanpasu/frontend/nyanpasu/src/pages/profiles.tsx b/clash-nyanpasu/frontend/nyanpasu/src/pages/profiles.tsx
index e2b7825c66..d499fba425 100644
--- a/clash-nyanpasu/frontend/nyanpasu/src/pages/profiles.tsx
+++ b/clash-nyanpasu/frontend/nyanpasu/src/pages/profiles.tsx
@@ -1,7 +1,8 @@
import MdiTextBoxCheckOutline from "~icons/mdi/text-box-check-outline";
+import { useLockFn } from "ahooks";
import { AnimatePresence, motion } from "framer-motion";
import { useAtom } from "jotai";
-import { useMemo, useState } from "react";
+import { useMemo, useState, useTransition } from "react";
import { useTranslation } from "react-i18next";
import { useWindowSize } from "react-use";
import { z } from "zod";
@@ -16,14 +17,17 @@ import {
} from "@/components/profiles/profile-dialog";
import ProfileItem from "@/components/profiles/profile-item";
import ProfileSide from "@/components/profiles/profile-side";
+import { GlobalUpdatePendingContext } from "@/components/profiles/provider";
import { QuickImport } from "@/components/profiles/quick-import";
import RuntimeConfigDiffDialog from "@/components/profiles/runtime-config-diff-dialog";
import { filterProfiles } from "@/components/profiles/utils";
-import { Public } from "@mui/icons-material";
-import { Badge, Button, IconButton } from "@mui/material";
+import { formatError } from "@/utils";
+import { message } from "@/utils/notification";
+import { Public, Update } from "@mui/icons-material";
+import { Badge, Button, CircularProgress, IconButton } from "@mui/material";
import Grid from "@mui/material/Grid2";
-import { Profile, useClash } from "@nyanpasu/interface";
-import { SidePage } from "@nyanpasu/ui";
+import { Profile, updateProfile, useClash } from "@nyanpasu/interface";
+import { FloatingButton, SidePage } from "@nyanpasu/ui";
import { createFileRoute, useLocation } from "@tanstack/react-router";
import { zodSearchValidator } from "@tanstack/router-zod-adapter";
@@ -119,6 +123,30 @@ function ProfilePage() {
const { width } = useWindowSize();
+ const [globalUpdatePending, startGlobalUpdate] = useTransition();
+ const handleGlobalProfileUpdate = useLockFn(async () => {
+ await startGlobalUpdate(async () => {
+ const remoteProfiles =
+ profiles?.filter((item) => item.type == "remote") || [];
+ const updates: Array> = [];
+ for (const profile of remoteProfiles) {
+ const options: Profile.Option = profile.option || {
+ with_proxy: false,
+ self_proxy: false,
+ };
+
+ updates.push(updateProfile(profile.uid, options));
+ }
+ try {
+ await Promise.all(updates);
+ } catch (e) {
+ message(`failed to update profiles: \n${formatError(e)}`, {
+ kind: "error",
+ });
+ }
+ });
+ });
+
return (
}
>
-
-
+
+
+
- {profiles && (
-
- {profiles.map((item) => (
-
-
+ {profiles.map((item) => (
+
-
-
-
- ))}
-
- )}
-
+
+
+
+
+ ))}
+
+ )}
+
+
-
+
+ ({
+ backgroundColor: theme.palette.grey[200],
+ boxShadow: 4,
+ "&:hover": {
+ backgroundColor: theme.palette.grey[300],
+ },
+ }),
+ ]}
+ onClick={handleGlobalProfileUpdate}
+ >
+ {globalUpdatePending ? : }
+
+
+
);
diff --git a/clash-nyanpasu/frontend/ui/package.json b/clash-nyanpasu/frontend/ui/package.json
index 36fc261c56..5e94211a8f 100644
--- a/clash-nyanpasu/frontend/ui/package.json
+++ b/clash-nyanpasu/frontend/ui/package.json
@@ -34,7 +34,7 @@
"react-error-boundary": "4.0.13",
"react-i18next": "15.0.2",
"react-use": "17.5.1",
- "vite": "5.4.6",
+ "vite": "5.4.7",
"vite-tsconfig-paths": "5.0.1"
},
"devDependencies": {
@@ -42,7 +42,7 @@
"@types/d3-interpolate-path": "2.0.3",
"clsx": "2.1.1",
"d3-interpolate-path": "2.3.0",
- "sass": "1.79.2",
+ "sass": "1.79.3",
"tailwind-merge": "2.5.2",
"typescript-plugin-css-modules": "5.1.0",
"vite-plugin-dts": "4.2.1"
diff --git a/clash-nyanpasu/frontend/ui/src/materialYou/components/baseDialog/index.tsx b/clash-nyanpasu/frontend/ui/src/materialYou/components/baseDialog/index.tsx
index b268b6eed9..4027bf3160 100644
--- a/clash-nyanpasu/frontend/ui/src/materialYou/components/baseDialog/index.tsx
+++ b/clash-nyanpasu/frontend/ui/src/materialYou/components/baseDialog/index.tsx
@@ -60,6 +60,7 @@ export const BaseDialog = ({
});
const [okLoading, setOkLoading] = useState(false);
+ const [closeLoading, setCloseLoading] = useState(false);
const { run: runMounted, cancel: cancelMounted } = useDebounceFn(
() => setMounted(false),
@@ -79,12 +80,22 @@ export const BaseDialog = ({
}
}, [open]);
- const handleClose = useCallback(() => {
+ const handleClose = useLockFn(async () => {
if (onClose) {
- onClose();
- runMounted();
+ if (onClose.constructor.name === "AsyncFunction") {
+ try {
+ setCloseLoading(true);
+
+ await onClose();
+ } finally {
+ setCloseLoading(false);
+ }
+ } else {
+ onClose();
+ }
}
- }, [onClose, runMounted]);
+ runMounted();
+ });
const handleOk = useLockFn(async () => {
if (!onOk) return;
@@ -208,9 +219,14 @@ export const BaseDialog = ({
{onClose && (
-
+
{close || t("Close")}
-
+
)}
{onOk && (
diff --git a/clash-nyanpasu/frontend/ui/src/materialYou/components/floatingButton/index.tsx b/clash-nyanpasu/frontend/ui/src/materialYou/components/floatingButton/index.tsx
index 0a316d8601..fba61ac990 100644
--- a/clash-nyanpasu/frontend/ui/src/materialYou/components/floatingButton/index.tsx
+++ b/clash-nyanpasu/frontend/ui/src/materialYou/components/floatingButton/index.tsx
@@ -1,4 +1,5 @@
import { ReactNode } from "react";
+import { cn } from "@/utils";
import { alpha, Button, ButtonProps, useTheme } from "@mui/material";
export interface FloatingButtonProps extends ButtonProps {
@@ -15,7 +16,10 @@ export const FloatingButton = ({
return (
= 18'}
- ofetch@1.3.4:
- resolution: {integrity: sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw==}
+ ofetch@1.4.0:
+ resolution: {integrity: sha512-MuHgsEhU6zGeX+EMh+8mSMrYTnsqJQQrpM00Q6QHMKNqQ0bKy0B43tk8tL1wg+CnsSTy1kg4Ir2T5Ig6rD+dfQ==}
once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
@@ -5768,10 +5768,10 @@ packages:
resolution: {integrity: sha512-RcSV/u+lPChcTB+A4fij0xkE204yzKdAsGUFy6+DrfUzWSawB+cu0n3WLmJcJXQ/VnmjSUlIrqmVLicRhT/gLA==}
hasBin: true
- react-dom@19.0.0-rc-e740d4b1-20240919:
- resolution: {integrity: sha512-4vvVhTQYf9CxJuTtBqoRbqswnt2MA3xVl5UOQP9jnqC5wfkBeWM2gNk/tH4avLFWv5k6YZP75EqhNphiW7EXnA==}
+ react-dom@19.0.0-rc-e4953922-20240919:
+ resolution: {integrity: sha512-E8jZqdTPvWQ4SRH29nKwwMUmlnyYdx1YPWDBXfeEC5LL92Tq7qQC1Tjh75Zr1zgNsxp1c5YpyWyQTYmpeIdXQg==}
peerDependencies:
- react: 19.0.0-rc-e740d4b1-20240919
+ react: 19.0.0-rc-e4953922-20240919
react-error-boundary@4.0.13:
resolution: {integrity: sha512-b6PwbdSv8XeOSYvjt8LpgpKrZ0yGdtZokYwkwV2wlcZbxgopHX/hgPl5VgpnoVOWd868n1hktM8Qm4b+02MiLQ==}
@@ -5873,8 +5873,8 @@ packages:
react: '*'
react-dom: '*'
- react@19.0.0-rc-e740d4b1-20240919:
- resolution: {integrity: sha512-lQRkQYhG+6xPI0KV3e5H3uIaRCe1zjaOYy4MqhDsL23a07gcnDD/dIR0zS+1QTr2r4Msu7TPimExQroK0ySNGw==}
+ react@19.0.0-rc-e4953922-20240919:
+ resolution: {integrity: sha512-4CkSUGAHyU1WJ5w90eDna6fAMDwv2irJCLl3dne3DjuxWgdPgtBjdUpSNn4mb1FZUyiJBh7RiNB57G4YjPkDkQ==}
engines: {node: '>=0.10.0'}
read-cache@1.0.0:
@@ -6165,16 +6165,16 @@ packages:
engines: {node: '>=16.0.0'}
hasBin: true
- sass@1.79.2:
- resolution: {integrity: sha512-YmT1aoF1MwHsZEu/eXhbAJNsPGAhNP4UixW9ckEwWCvPcVdVF0/C104OGDVEqtoctKq0N+wM20O/rj+sSPsWeg==}
+ sass@1.79.3:
+ resolution: {integrity: sha512-m7dZxh0W9EZ3cw50Me5GOuYm/tVAJAn91SUnohLRo9cXBixGUOdvmryN+dXpwR831bhoY3Zv7rEFt85PUwTmzA==}
engines: {node: '>=14.0.0'}
hasBin: true
sax@1.3.0:
resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==}
- scheduler@0.25.0-rc-e740d4b1-20240919:
- resolution: {integrity: sha512-PRZr9KJzwg8HQgZdmngBza+DrzG0sElnUTvJIDiZWdWpSb9kkdousacJFEKFtLbV/NCq3sTOaX6LaMGyhXl5ug==}
+ scheduler@0.25.0-rc-e4953922-20240919:
+ resolution: {integrity: sha512-6l7cfQOmb5n350VJp8/CIejjEqB/1niPiwsooAHcH81ia/rMbZrzLChl14FOS6tJr0H+9P9rvgnAA6/pFHj2Mg==}
screenfull@5.2.0:
resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==}
@@ -6574,8 +6574,8 @@ packages:
resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==}
engines: {node: '>=18'}
- telegram@2.25.4:
- resolution: {integrity: sha512-s5UCYF3xmOQ2mfbXOBF/hGnYfUXYfQEb71CI7QilYR6oIeY8GV+yC26QDLVilZ/Jnf/ED2KuD5Qv2PFCTDe7Hw==}
+ telegram@2.25.9:
+ resolution: {integrity: sha512-nEfkq7K3MVXMJYOi4yb/hItpsxW3o0oy3dkZTuP0a9z54Otxk0fXfF817BEVGfpe1Jbfcx4U0wA/qwRnqwx7RA==}
term-size@1.2.0:
resolution: {integrity: sha512-7dPUZQGy/+m3/wjVz3ZW5dobSoD/02NxJpoXUX0WIyjfVS3l0c+b/+9phIDFA7FHzkYtwtMFgeGZ/Y8jVTeqQQ==}
@@ -6742,6 +6742,9 @@ packages:
ufo@1.5.3:
resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==}
+ ufo@1.5.4:
+ resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==}
+
unbox-primitive@1.0.2:
resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
@@ -6965,8 +6968,8 @@ packages:
vite:
optional: true
- vite@5.4.6:
- resolution: {integrity: sha512-IeL5f8OO5nylsgzd9tq4qD2QqI0k2CQLGrWD0rCN0EQJZpBK5vJAx0I+GDkMOXxQX/OfFHMuLIx6ddAxGX/k+Q==}
+ vite@5.4.7:
+ resolution: {integrity: sha512-5l2zxqMEPVENgvzTuBpHer2awaetimj2BGkhBPdnwKbPNOlHsODU+oiazEZzLK7KhAnOrO+XGYJYn4ZlUhDtDQ==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
peerDependencies:
@@ -7676,29 +7679,29 @@ snapshots:
'@ctrl/tinycolor@4.1.0': {}
- '@dnd-kit/accessibility@3.1.0(react@19.0.0-rc-e740d4b1-20240919)':
+ '@dnd-kit/accessibility@3.1.0(react@19.0.0-rc-e4953922-20240919)':
dependencies:
- react: 19.0.0-rc-e740d4b1-20240919
+ react: 19.0.0-rc-e4953922-20240919
tslib: 2.6.2
- '@dnd-kit/core@6.1.0(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)':
+ '@dnd-kit/core@6.1.0(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)':
dependencies:
- '@dnd-kit/accessibility': 3.1.0(react@19.0.0-rc-e740d4b1-20240919)
- '@dnd-kit/utilities': 3.2.2(react@19.0.0-rc-e740d4b1-20240919)
- react: 19.0.0-rc-e740d4b1-20240919
- react-dom: 19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919)
+ '@dnd-kit/accessibility': 3.1.0(react@19.0.0-rc-e4953922-20240919)
+ '@dnd-kit/utilities': 3.2.2(react@19.0.0-rc-e4953922-20240919)
+ react: 19.0.0-rc-e4953922-20240919
+ react-dom: 19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919)
tslib: 2.6.2
- '@dnd-kit/sortable@8.0.0(@dnd-kit/core@6.1.0(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)':
+ '@dnd-kit/sortable@8.0.0(@dnd-kit/core@6.1.0(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)':
dependencies:
- '@dnd-kit/core': 6.1.0(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)
- '@dnd-kit/utilities': 3.2.2(react@19.0.0-rc-e740d4b1-20240919)
- react: 19.0.0-rc-e740d4b1-20240919
+ '@dnd-kit/core': 6.1.0(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)
+ '@dnd-kit/utilities': 3.2.2(react@19.0.0-rc-e4953922-20240919)
+ react: 19.0.0-rc-e4953922-20240919
tslib: 2.6.2
- '@dnd-kit/utilities@3.2.2(react@19.0.0-rc-e740d4b1-20240919)':
+ '@dnd-kit/utilities@3.2.2(react@19.0.0-rc-e4953922-20240919)':
dependencies:
- react: 19.0.0-rc-e740d4b1-20240919
+ react: 19.0.0-rc-e4953922-20240919
tslib: 2.6.2
'@dual-bundle/import-meta-resolve@4.1.0': {}
@@ -7755,17 +7758,17 @@ snapshots:
'@emotion/memoize@0.9.0': {}
- '@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)':
+ '@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)':
dependencies:
'@babel/runtime': 7.24.8
'@emotion/babel-plugin': 11.12.0
'@emotion/cache': 11.13.0
'@emotion/serialize': 1.3.1
- '@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@19.0.0-rc-e740d4b1-20240919)
+ '@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@19.0.0-rc-e4953922-20240919)
'@emotion/utils': 1.4.0
'@emotion/weak-memoize': 0.4.0
hoist-non-react-statics: 3.3.2
- react: 19.0.0-rc-e740d4b1-20240919
+ react: 19.0.0-rc-e4953922-20240919
optionalDependencies:
'@types/react': types-react@19.0.0-rc.1
@@ -7787,16 +7790,16 @@ snapshots:
'@emotion/sheet@1.4.0': {}
- '@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)':
+ '@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)':
dependencies:
'@babel/runtime': 7.24.8
'@emotion/babel-plugin': 11.12.0
'@emotion/is-prop-valid': 1.3.0
- '@emotion/react': 11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
+ '@emotion/react': 11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
'@emotion/serialize': 1.3.0
- '@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@19.0.0-rc-e740d4b1-20240919)
+ '@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@19.0.0-rc-e4953922-20240919)
'@emotion/utils': 1.4.0
- react: 19.0.0-rc-e740d4b1-20240919
+ react: 19.0.0-rc-e4953922-20240919
optionalDependencies:
'@types/react': types-react@19.0.0-rc.1
@@ -7804,9 +7807,9 @@ snapshots:
'@emotion/unitless@0.9.0': {}
- '@emotion/use-insertion-effect-with-fallbacks@1.1.0(react@19.0.0-rc-e740d4b1-20240919)':
+ '@emotion/use-insertion-effect-with-fallbacks@1.1.0(react@19.0.0-rc-e4953922-20240919)':
dependencies:
- react: 19.0.0-rc-e740d4b1-20240919
+ react: 19.0.0-rc-e4953922-20240919
'@emotion/utils@1.4.0': {}
@@ -7987,11 +7990,11 @@ snapshots:
'@floating-ui/core': 1.6.1
'@floating-ui/utils': 0.2.2
- '@floating-ui/react-dom@2.1.2(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)':
+ '@floating-ui/react-dom@2.1.2(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)':
dependencies:
'@floating-ui/dom': 1.6.5
- react: 19.0.0-rc-e740d4b1-20240919
- react-dom: 19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919)
+ react: 19.0.0-rc-e4953922-20240919
+ react-dom: 19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919)
'@floating-ui/utils@0.2.2': {}
@@ -8024,7 +8027,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@iconify/json@2.2.250':
+ '@iconify/json@2.2.251':
dependencies:
'@iconify/types': 2.0.0
pathe: 1.1.2
@@ -8117,204 +8120,204 @@ snapshots:
monaco-editor: 0.52.0
state-local: 1.0.7
- '@monaco-editor/react@4.6.0(monaco-editor@0.52.0)(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)':
+ '@monaco-editor/react@4.6.0(monaco-editor@0.52.0)(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)':
dependencies:
'@monaco-editor/loader': 1.4.0(monaco-editor@0.52.0)
monaco-editor: 0.52.0
- react: 19.0.0-rc-e740d4b1-20240919
- react-dom: 19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919)
+ react: 19.0.0-rc-e4953922-20240919
+ react-dom: 19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919)
- '@mui/base@5.0.0-beta.58(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)':
+ '@mui/base@5.0.0-beta.58(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)':
dependencies:
'@babel/runtime': 7.25.6
- '@floating-ui/react-dom': 2.1.2(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)
+ '@floating-ui/react-dom': 2.1.2(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)
'@mui/types': 7.2.17(types-react@19.0.0-rc.1)
- '@mui/utils': 6.0.0-rc.0(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
+ '@mui/utils': 6.0.0-rc.0(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
'@popperjs/core': 2.11.8
clsx: 2.1.1
prop-types: 15.8.1
- react: 19.0.0-rc-e740d4b1-20240919
- react-dom: 19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919)
+ react: 19.0.0-rc-e4953922-20240919
+ react-dom: 19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919)
optionalDependencies:
'@types/react': types-react@19.0.0-rc.1
'@mui/core-downloads-tracker@6.1.1': {}
- '@mui/icons-material@6.1.1(@mui/material@6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)':
+ '@mui/icons-material@6.1.1(@mui/material@6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)':
dependencies:
'@babel/runtime': 7.25.6
- '@mui/material': 6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
- react: 19.0.0-rc-e740d4b1-20240919
+ '@mui/material': 6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
+ react: 19.0.0-rc-e4953922-20240919
optionalDependencies:
'@types/react': types-react@19.0.0-rc.1
- '@mui/lab@6.0.0-beta.10(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(@mui/material@6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)':
+ '@mui/lab@6.0.0-beta.10(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(@mui/material@6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)':
dependencies:
'@babel/runtime': 7.25.6
- '@mui/base': 5.0.0-beta.58(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
- '@mui/material': 6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
- '@mui/system': 6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
+ '@mui/base': 5.0.0-beta.58(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
+ '@mui/material': 6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
+ '@mui/system': 6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
'@mui/types': 7.2.17(types-react@19.0.0-rc.1)
- '@mui/utils': 6.1.1(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
+ '@mui/utils': 6.1.1(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
clsx: 2.1.1
prop-types: 15.8.1
- react: 19.0.0-rc-e740d4b1-20240919
- react-dom: 19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919)
+ react: 19.0.0-rc-e4953922-20240919
+ react-dom: 19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919)
optionalDependencies:
- '@emotion/react': 11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
- '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
+ '@emotion/react': 11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
+ '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
'@types/react': types-react@19.0.0-rc.1
- '@mui/material@6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)':
+ '@mui/material@6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)':
dependencies:
'@babel/runtime': 7.25.6
'@mui/core-downloads-tracker': 6.1.1
- '@mui/system': 6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
+ '@mui/system': 6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
'@mui/types': 7.2.17(types-react@19.0.0-rc.1)
- '@mui/utils': 6.1.1(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
+ '@mui/utils': 6.1.1(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
'@popperjs/core': 2.11.8
'@types/react-transition-group': 4.4.11
clsx: 2.1.1
csstype: 3.1.3
prop-types: 15.8.1
- react: 19.0.0-rc-e740d4b1-20240919
- react-dom: 19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919)
+ react: 19.0.0-rc-e4953922-20240919
+ react-dom: 19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919)
react-is: 18.3.1
- react-transition-group: 4.4.5(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)
+ react-transition-group: 4.4.5(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)
optionalDependencies:
- '@emotion/react': 11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
- '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
+ '@emotion/react': 11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
+ '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
'@types/react': types-react@19.0.0-rc.1
- '@mui/private-theming@5.16.6(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)':
+ '@mui/private-theming@5.16.6(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)':
dependencies:
'@babel/runtime': 7.25.6
- '@mui/utils': 5.16.6(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
+ '@mui/utils': 5.16.6(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
prop-types: 15.8.1
- react: 19.0.0-rc-e740d4b1-20240919
+ react: 19.0.0-rc-e4953922-20240919
optionalDependencies:
'@types/react': types-react@19.0.0-rc.1
- '@mui/private-theming@6.1.1(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)':
+ '@mui/private-theming@6.1.1(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)':
dependencies:
'@babel/runtime': 7.25.6
- '@mui/utils': 6.1.1(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
+ '@mui/utils': 6.1.1(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
prop-types: 15.8.1
- react: 19.0.0-rc-e740d4b1-20240919
+ react: 19.0.0-rc-e4953922-20240919
optionalDependencies:
'@types/react': types-react@19.0.0-rc.1
- '@mui/styled-engine@5.16.6(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)':
+ '@mui/styled-engine@5.16.6(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)':
dependencies:
'@babel/runtime': 7.25.6
'@emotion/cache': 11.13.1
csstype: 3.1.3
prop-types: 15.8.1
- react: 19.0.0-rc-e740d4b1-20240919
+ react: 19.0.0-rc-e4953922-20240919
optionalDependencies:
- '@emotion/react': 11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
- '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
+ '@emotion/react': 11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
+ '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
- '@mui/styled-engine@6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)':
+ '@mui/styled-engine@6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)':
dependencies:
'@babel/runtime': 7.25.6
'@emotion/cache': 11.13.1
'@emotion/sheet': 1.4.0
csstype: 3.1.3
prop-types: 15.8.1
- react: 19.0.0-rc-e740d4b1-20240919
+ react: 19.0.0-rc-e4953922-20240919
optionalDependencies:
- '@emotion/react': 11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
- '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
+ '@emotion/react': 11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
+ '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
- '@mui/system@5.16.7(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)':
+ '@mui/system@5.16.7(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)':
dependencies:
'@babel/runtime': 7.25.6
- '@mui/private-theming': 5.16.6(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
- '@mui/styled-engine': 5.16.6(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)
+ '@mui/private-theming': 5.16.6(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
+ '@mui/styled-engine': 5.16.6(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)
'@mui/types': 7.2.17(types-react@19.0.0-rc.1)
- '@mui/utils': 5.16.6(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
+ '@mui/utils': 5.16.6(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
clsx: 2.1.1
csstype: 3.1.3
prop-types: 15.8.1
- react: 19.0.0-rc-e740d4b1-20240919
+ react: 19.0.0-rc-e4953922-20240919
optionalDependencies:
- '@emotion/react': 11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
- '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
+ '@emotion/react': 11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
+ '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
'@types/react': types-react@19.0.0-rc.1
- '@mui/system@6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)':
+ '@mui/system@6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)':
dependencies:
'@babel/runtime': 7.25.6
- '@mui/private-theming': 6.1.1(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
- '@mui/styled-engine': 6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)
+ '@mui/private-theming': 6.1.1(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
+ '@mui/styled-engine': 6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)
'@mui/types': 7.2.17(types-react@19.0.0-rc.1)
- '@mui/utils': 6.1.1(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
+ '@mui/utils': 6.1.1(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
clsx: 2.1.1
csstype: 3.1.3
prop-types: 15.8.1
- react: 19.0.0-rc-e740d4b1-20240919
+ react: 19.0.0-rc-e4953922-20240919
optionalDependencies:
- '@emotion/react': 11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
- '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
+ '@emotion/react': 11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
+ '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
'@types/react': types-react@19.0.0-rc.1
'@mui/types@7.2.17(types-react@19.0.0-rc.1)':
optionalDependencies:
'@types/react': types-react@19.0.0-rc.1
- '@mui/utils@5.16.6(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)':
+ '@mui/utils@5.16.6(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)':
dependencies:
'@babel/runtime': 7.25.6
'@mui/types': 7.2.17(types-react@19.0.0-rc.1)
'@types/prop-types': 15.7.12
clsx: 2.1.1
prop-types: 15.8.1
- react: 19.0.0-rc-e740d4b1-20240919
+ react: 19.0.0-rc-e4953922-20240919
react-is: 18.3.1
optionalDependencies:
'@types/react': types-react@19.0.0-rc.1
- '@mui/utils@6.0.0-rc.0(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)':
+ '@mui/utils@6.0.0-rc.0(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)':
dependencies:
'@babel/runtime': 7.25.6
'@mui/types': 7.2.17(types-react@19.0.0-rc.1)
'@types/prop-types': 15.7.12
clsx: 2.1.1
prop-types: 15.8.1
- react: 19.0.0-rc-e740d4b1-20240919
+ react: 19.0.0-rc-e4953922-20240919
react-is: 18.3.1
optionalDependencies:
'@types/react': types-react@19.0.0-rc.1
- '@mui/utils@6.1.1(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)':
+ '@mui/utils@6.1.1(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)':
dependencies:
'@babel/runtime': 7.25.6
'@mui/types': 7.2.17(types-react@19.0.0-rc.1)
'@types/prop-types': 15.7.12
clsx: 2.1.1
prop-types: 15.8.1
- react: 19.0.0-rc-e740d4b1-20240919
+ react: 19.0.0-rc-e4953922-20240919
react-is: 18.3.1
optionalDependencies:
'@types/react': types-react@19.0.0-rc.1
- '@mui/x-date-pickers@7.9.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(@mui/material@6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(dayjs@1.11.13)(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)':
+ '@mui/x-date-pickers@7.9.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(@mui/material@6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(dayjs@1.11.13)(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)':
dependencies:
'@babel/runtime': 7.25.6
- '@mui/base': 5.0.0-beta.58(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
- '@mui/material': 6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
- '@mui/system': 5.16.7(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
- '@mui/utils': 5.16.6(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
+ '@mui/base': 5.0.0-beta.58(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
+ '@mui/material': 6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
+ '@mui/system': 5.16.7(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
+ '@mui/utils': 5.16.6(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
'@types/react-transition-group': 4.4.11
clsx: 2.1.1
prop-types: 15.8.1
- react: 19.0.0-rc-e740d4b1-20240919
- react-dom: 19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919)
- react-transition-group: 4.4.5(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)
+ react: 19.0.0-rc-e4953922-20240919
+ react-dom: 19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919)
+ react-transition-group: 4.4.5(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)
optionalDependencies:
- '@emotion/react': 11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
- '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
+ '@emotion/react': 11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
+ '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
dayjs: 1.11.13
transitivePeerDependencies:
- '@types/react'
@@ -8541,82 +8544,82 @@ snapshots:
'@radix-ui/primitive@1.1.0': {}
- '@radix-ui/react-compose-refs@1.1.0(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)':
+ '@radix-ui/react-compose-refs@1.1.0(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)':
dependencies:
- react: 19.0.0-rc-e740d4b1-20240919
+ react: 19.0.0-rc-e4953922-20240919
optionalDependencies:
'@types/react': types-react@19.0.0-rc.1
- '@radix-ui/react-context@1.1.0(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)':
+ '@radix-ui/react-context@1.1.0(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)':
dependencies:
- react: 19.0.0-rc-e740d4b1-20240919
+ react: 19.0.0-rc-e4953922-20240919
optionalDependencies:
'@types/react': types-react@19.0.0-rc.1
- '@radix-ui/react-direction@1.1.0(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)':
+ '@radix-ui/react-direction@1.1.0(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)':
dependencies:
- react: 19.0.0-rc-e740d4b1-20240919
+ react: 19.0.0-rc-e4953922-20240919
optionalDependencies:
'@types/react': types-react@19.0.0-rc.1
- '@radix-ui/react-portal@1.1.1(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)':
+ '@radix-ui/react-portal@1.1.1(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)':
dependencies:
- '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
- '@radix-ui/react-use-layout-effect': 1.1.0(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
- react: 19.0.0-rc-e740d4b1-20240919
- react-dom: 19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919)
+ '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
+ '@radix-ui/react-use-layout-effect': 1.1.0(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
+ react: 19.0.0-rc-e4953922-20240919
+ react-dom: 19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919)
optionalDependencies:
'@types/react': types-react@19.0.0-rc.1
- '@radix-ui/react-presence@1.1.0(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)':
+ '@radix-ui/react-presence@1.1.0(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)':
dependencies:
- '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
- '@radix-ui/react-use-layout-effect': 1.1.0(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
- react: 19.0.0-rc-e740d4b1-20240919
- react-dom: 19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919)
+ '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
+ '@radix-ui/react-use-layout-effect': 1.1.0(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
+ react: 19.0.0-rc-e4953922-20240919
+ react-dom: 19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919)
optionalDependencies:
'@types/react': types-react@19.0.0-rc.1
- '@radix-ui/react-primitive@2.0.0(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)':
+ '@radix-ui/react-primitive@2.0.0(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)':
dependencies:
- '@radix-ui/react-slot': 1.1.0(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
- react: 19.0.0-rc-e740d4b1-20240919
- react-dom: 19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919)
+ '@radix-ui/react-slot': 1.1.0(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
+ react: 19.0.0-rc-e4953922-20240919
+ react-dom: 19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919)
optionalDependencies:
'@types/react': types-react@19.0.0-rc.1
- '@radix-ui/react-scroll-area@1.1.0(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)':
+ '@radix-ui/react-scroll-area@1.1.0(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)':
dependencies:
'@radix-ui/number': 1.1.0
'@radix-ui/primitive': 1.1.0
- '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
- '@radix-ui/react-context': 1.1.0(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
- '@radix-ui/react-direction': 1.1.0(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
- '@radix-ui/react-presence': 1.1.0(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
- '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
- '@radix-ui/react-use-callback-ref': 1.1.0(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
- '@radix-ui/react-use-layout-effect': 1.1.0(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
- react: 19.0.0-rc-e740d4b1-20240919
- react-dom: 19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919)
+ '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
+ '@radix-ui/react-context': 1.1.0(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
+ '@radix-ui/react-direction': 1.1.0(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
+ '@radix-ui/react-presence': 1.1.0(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
+ '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
+ '@radix-ui/react-use-callback-ref': 1.1.0(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
+ '@radix-ui/react-use-layout-effect': 1.1.0(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
+ react: 19.0.0-rc-e4953922-20240919
+ react-dom: 19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919)
optionalDependencies:
'@types/react': types-react@19.0.0-rc.1
- '@radix-ui/react-slot@1.1.0(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)':
+ '@radix-ui/react-slot@1.1.0(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)':
dependencies:
- '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
- react: 19.0.0-rc-e740d4b1-20240919
+ '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
+ react: 19.0.0-rc-e4953922-20240919
optionalDependencies:
'@types/react': types-react@19.0.0-rc.1
- '@radix-ui/react-use-callback-ref@1.1.0(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)':
+ '@radix-ui/react-use-callback-ref@1.1.0(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)':
dependencies:
- react: 19.0.0-rc-e740d4b1-20240919
+ react: 19.0.0-rc-e4953922-20240919
optionalDependencies:
'@types/react': types-react@19.0.0-rc.1
- '@radix-ui/react-use-layout-effect@1.1.0(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)':
+ '@radix-ui/react-use-layout-effect@1.1.0(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)':
dependencies:
- react: 19.0.0-rc-e740d4b1-20240919
+ react: 19.0.0-rc-e4953922-20240919
optionalDependencies:
'@types/react': types-react@19.0.0-rc.1
@@ -8881,43 +8884,43 @@ snapshots:
dependencies:
remove-accents: 0.5.0
- '@tanstack/react-router@1.58.3(@tanstack/router-generator@1.58.1)(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)':
+ '@tanstack/react-router@1.58.3(@tanstack/router-generator@1.58.1)(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)':
dependencies:
'@tanstack/history': 1.57.6
- '@tanstack/react-store': 0.5.5(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)
- react: 19.0.0-rc-e740d4b1-20240919
- react-dom: 19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919)
+ '@tanstack/react-store': 0.5.5(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)
+ react: 19.0.0-rc-e4953922-20240919
+ react-dom: 19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919)
tiny-invariant: 1.3.3
tiny-warning: 1.0.3
optionalDependencies:
'@tanstack/router-generator': 1.58.1
- '@tanstack/react-store@0.5.5(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)':
+ '@tanstack/react-store@0.5.5(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)':
dependencies:
'@tanstack/store': 0.5.5
- react: 19.0.0-rc-e740d4b1-20240919
- react-dom: 19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919)
- use-sync-external-store: 1.2.2(react@19.0.0-rc-e740d4b1-20240919)
+ react: 19.0.0-rc-e4953922-20240919
+ react-dom: 19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919)
+ use-sync-external-store: 1.2.2(react@19.0.0-rc-e4953922-20240919)
- '@tanstack/react-table@8.20.5(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)':
+ '@tanstack/react-table@8.20.5(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)':
dependencies:
'@tanstack/table-core': 8.20.5
- react: 19.0.0-rc-e740d4b1-20240919
- react-dom: 19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919)
+ react: 19.0.0-rc-e4953922-20240919
+ react-dom: 19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919)
- '@tanstack/react-virtual@3.10.6(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)':
+ '@tanstack/react-virtual@3.10.6(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)':
dependencies:
'@tanstack/virtual-core': 3.10.6
- react: 19.0.0-rc-e740d4b1-20240919
- react-dom: 19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919)
+ react: 19.0.0-rc-e4953922-20240919
+ react-dom: 19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919)
- '@tanstack/router-devtools@1.58.3(@tanstack/react-router@1.58.3(@tanstack/router-generator@1.58.1)(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919))(csstype@3.1.3)(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)':
+ '@tanstack/router-devtools@1.58.3(@tanstack/react-router@1.58.3(@tanstack/router-generator@1.58.1)(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919))(csstype@3.1.3)(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)':
dependencies:
- '@tanstack/react-router': 1.58.3(@tanstack/router-generator@1.58.1)(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)
+ '@tanstack/react-router': 1.58.3(@tanstack/router-generator@1.58.1)(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)
clsx: 2.1.1
goober: 2.1.14(csstype@3.1.3)
- react: 19.0.0-rc-e740d4b1-20240919
- react-dom: 19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919)
+ react: 19.0.0-rc-e4953922-20240919
+ react-dom: 19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919)
transitivePeerDependencies:
- csstype
@@ -8928,7 +8931,7 @@ snapshots:
tsx: 4.19.1
zod: 3.23.8
- '@tanstack/router-plugin@1.58.4(vite@5.4.6(@types/node@22.5.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.2)(stylus@0.62.0))(webpack-sources@3.2.3)':
+ '@tanstack/router-plugin@1.58.4(vite@5.4.7(@types/node@22.5.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.3)(stylus@0.62.0))(webpack-sources@3.2.3)':
dependencies:
'@babel/core': 7.25.2
'@babel/generator': 7.25.6
@@ -8949,14 +8952,14 @@ snapshots:
unplugin: 1.14.1(webpack-sources@3.2.3)
zod: 3.23.8
optionalDependencies:
- vite: 5.4.6(@types/node@22.5.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.2)(stylus@0.62.0)
+ vite: 5.4.7(@types/node@22.5.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.3)(stylus@0.62.0)
transitivePeerDependencies:
- supports-color
- webpack-sources
- '@tanstack/router-zod-adapter@1.58.3(@tanstack/react-router@1.58.3(@tanstack/router-generator@1.58.1)(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919))(zod@3.23.8)':
+ '@tanstack/router-zod-adapter@1.58.3(@tanstack/react-router@1.58.3(@tanstack/router-generator@1.58.1)(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919))(zod@3.23.8)':
dependencies:
- '@tanstack/react-router': 1.58.3(@tanstack/router-generator@1.58.1)(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)
+ '@tanstack/react-router': 1.58.3(@tanstack/router-generator@1.58.1)(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)
zod: 3.23.8
'@tanstack/store@0.5.5': {}
@@ -9399,21 +9402,21 @@ snapshots:
'@ungap/structured-clone@1.2.0': {}
- '@vitejs/plugin-react-swc@3.7.0(vite@5.4.6(@types/node@22.5.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.2)(stylus@0.62.0))':
+ '@vitejs/plugin-react-swc@3.7.0(vite@5.4.7(@types/node@22.5.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.3)(stylus@0.62.0))':
dependencies:
'@swc/core': 1.6.1
- vite: 5.4.6(@types/node@22.5.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.2)(stylus@0.62.0)
+ vite: 5.4.7(@types/node@22.5.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.3)(stylus@0.62.0)
transitivePeerDependencies:
- '@swc/helpers'
- '@vitejs/plugin-react@4.3.1(vite@5.4.6(@types/node@22.5.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.2)(stylus@0.62.0))':
+ '@vitejs/plugin-react@4.3.1(vite@5.4.7(@types/node@22.5.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.3)(stylus@0.62.0))':
dependencies:
'@babel/core': 7.24.5
'@babel/plugin-transform-react-jsx-self': 7.24.5(@babel/core@7.24.5)
'@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.24.5)
'@types/babel__core': 7.20.5
react-refresh: 0.14.2
- vite: 5.4.6(@types/node@22.5.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.2)(stylus@0.62.0)
+ vite: 5.4.7(@types/node@22.5.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.3)(stylus@0.62.0)
transitivePeerDependencies:
- supports-color
@@ -9503,14 +9506,14 @@ snapshots:
clean-stack: 5.2.0
indent-string: 5.0.0
- ahooks@3.8.1(react@19.0.0-rc-e740d4b1-20240919):
+ ahooks@3.8.1(react@19.0.0-rc-e4953922-20240919):
dependencies:
'@babel/runtime': 7.24.8
dayjs: 1.11.12
intersection-observer: 0.12.2
js-cookie: 3.0.5
lodash: 4.17.21
- react: 19.0.0-rc-e740d4b1-20240919
+ react: 19.0.0-rc-e4953922-20240919
react-fast-compare: 3.2.2
resize-observer-polyfill: 1.5.1
screenfull: 5.2.0
@@ -9552,16 +9555,16 @@ snapshots:
json-schema-traverse: 1.0.0
require-from-string: 2.0.2
- allotment@1.20.2(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919):
+ allotment@1.20.2(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919):
dependencies:
classnames: 2.5.1
eventemitter3: 5.0.1
lodash.clamp: 4.0.3
lodash.debounce: 4.0.8
lodash.isequal: 4.5.0
- react: 19.0.0-rc-e740d4b1-20240919
- react-dom: 19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919)
- use-resize-observer: 9.1.0(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)
+ react: 19.0.0-rc-e4953922-20240919
+ react-dom: 19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919)
+ use-resize-observer: 9.1.0(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)
ansi-align@2.0.0:
dependencies:
@@ -11021,13 +11024,13 @@ snapshots:
fraction.js@4.3.7: {}
- framer-motion@12.0.0-alpha.1(@emotion/is-prop-valid@1.3.0)(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919):
+ framer-motion@12.0.0-alpha.1(@emotion/is-prop-valid@1.3.0)(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919):
dependencies:
tslib: 2.6.2
optionalDependencies:
'@emotion/is-prop-valid': 1.3.0
- react: 19.0.0-rc-e740d4b1-20240919
- react-dom: 19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919)
+ react: 19.0.0-rc-e4953922-20240919
+ react-dom: 19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919)
fs-extra@11.2.0:
dependencies:
@@ -11639,10 +11642,10 @@ snapshots:
jju@1.4.0: {}
- jotai@2.10.0(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1):
+ jotai@2.10.0(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1):
optionalDependencies:
'@types/react': types-react@19.0.0-rc.1
- react: 19.0.0-rc-e740d4b1-20240919
+ react: 19.0.0-rc-e4953922-20240919
js-cookie@2.2.1: {}
@@ -11889,19 +11892,19 @@ snapshots:
escape-string-regexp: 4.0.0
optional: true
- material-react-table@3.0.1(u4qsr5qjalvogdfjvun4yv4qc4):
+ material-react-table@3.0.1(heeanu7mrwh2ymbkv3i3kf3vly):
dependencies:
- '@emotion/react': 11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
- '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
- '@mui/icons-material': 6.1.1(@mui/material@6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
- '@mui/material': 6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
- '@mui/x-date-pickers': 7.9.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(@mui/material@6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(dayjs@1.11.13)(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
+ '@emotion/react': 11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
+ '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
+ '@mui/icons-material': 6.1.1(@mui/material@6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
+ '@mui/material': 6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
+ '@mui/x-date-pickers': 7.9.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(@mui/material@6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(dayjs@1.11.13)(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
'@tanstack/match-sorter-utils': 8.19.4
- '@tanstack/react-table': 8.20.5(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)
- '@tanstack/react-virtual': 3.10.6(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)
+ '@tanstack/react-table': 8.20.5(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)
+ '@tanstack/react-virtual': 3.10.6(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)
highlight-words: 1.2.2
- react: 19.0.0-rc-e740d4b1-20240919
- react-dom: 19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919)
+ react: 19.0.0-rc-e4953922-20240919
+ react-dom: 19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919)
mathml-tag-names@2.1.3: {}
@@ -12234,14 +12237,14 @@ snapshots:
muggle-string@0.4.1: {}
- mui-color-input@4.0.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(@mui/material@6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1):
+ mui-color-input@4.0.1(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(@mui/material@6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1):
dependencies:
'@ctrl/tinycolor': 4.1.0
- '@emotion/react': 11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
- '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
- '@mui/material': 6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
- react: 19.0.0-rc-e740d4b1-20240919
- react-dom: 19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919)
+ '@emotion/react': 11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
+ '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
+ '@mui/material': 6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
+ react: 19.0.0-rc-e4953922-20240919
+ react-dom: 19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919)
optionalDependencies:
'@types/react': types-react@19.0.0-rc.1
@@ -12251,15 +12254,15 @@ snapshots:
object-assign: 4.1.1
thenify-all: 1.6.0
- nano-css@5.6.2(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919):
+ nano-css@5.6.2(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919):
dependencies:
'@jridgewell/sourcemap-codec': 1.5.0
css-tree: 1.1.3
csstype: 3.1.3
fastest-stable-stringify: 2.0.2
inline-style-prefixer: 7.0.1
- react: 19.0.0-rc-e740d4b1-20240919
- react-dom: 19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919)
+ react: 19.0.0-rc-e4953922-20240919
+ react-dom: 19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919)
rtl-css-js: 1.16.1
stacktrace-js: 2.0.2
stylis: 4.3.2
@@ -12396,11 +12399,11 @@ snapshots:
'@octokit/request-error': 6.1.1
'@octokit/types': 13.5.0
- ofetch@1.3.4:
+ ofetch@1.4.0:
dependencies:
destr: 2.0.3
node-fetch-native: 1.6.4
- ufo: 1.5.3
+ ufo: 1.5.4
once@1.4.0:
dependencies:
@@ -12802,50 +12805,50 @@ snapshots:
- supports-color
- utf-8-validate
- react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919):
+ react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919):
dependencies:
- react: 19.0.0-rc-e740d4b1-20240919
- scheduler: 0.25.0-rc-e740d4b1-20240919
+ react: 19.0.0-rc-e4953922-20240919
+ scheduler: 0.25.0-rc-e4953922-20240919
- react-error-boundary@4.0.13(react@19.0.0-rc-e740d4b1-20240919):
+ react-error-boundary@4.0.13(react@19.0.0-rc-e4953922-20240919):
dependencies:
'@babel/runtime': 7.24.5
- react: 19.0.0-rc-e740d4b1-20240919
+ react: 19.0.0-rc-e4953922-20240919
react-fast-compare@3.2.2: {}
- react-fast-marquee@1.6.5(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919):
+ react-fast-marquee@1.6.5(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919):
dependencies:
- react: 19.0.0-rc-e740d4b1-20240919
- react-dom: 19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919)
+ react: 19.0.0-rc-e4953922-20240919
+ react-dom: 19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919)
- react-hook-form-mui@7.2.0(h6ctv254hrwfm4wd7vsbtjm5zu):
+ react-hook-form-mui@7.2.0(2kf3ucbfgwrtket6xz3l2wqpp4):
dependencies:
- '@mui/material': 6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
- react: 19.0.0-rc-e740d4b1-20240919
- react-hook-form: 7.52.1(react@19.0.0-rc-e740d4b1-20240919)
+ '@mui/material': 6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
+ react: 19.0.0-rc-e4953922-20240919
+ react-hook-form: 7.52.1(react@19.0.0-rc-e4953922-20240919)
optionalDependencies:
- '@mui/icons-material': 6.1.1(@mui/material@6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
- '@mui/x-date-pickers': 7.9.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(@mui/material@6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1))(dayjs@1.11.13)(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1)
+ '@mui/icons-material': 6.1.1(@mui/material@6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
+ '@mui/x-date-pickers': 7.9.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(@mui/material@6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1))(dayjs@1.11.13)(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1)
- react-hook-form@7.52.1(react@19.0.0-rc-e740d4b1-20240919):
+ react-hook-form@7.52.1(react@19.0.0-rc-e4953922-20240919):
dependencies:
- react: 19.0.0-rc-e740d4b1-20240919
+ react: 19.0.0-rc-e4953922-20240919
- react-i18next@15.0.2(i18next@23.15.1)(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919):
+ react-i18next@15.0.2(i18next@23.15.1)(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919):
dependencies:
'@babel/runtime': 7.25.6
html-parse-stringify: 3.0.1
i18next: 23.15.1
- react: 19.0.0-rc-e740d4b1-20240919
+ react: 19.0.0-rc-e4953922-20240919
optionalDependencies:
- react-dom: 19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919)
+ react-dom: 19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919)
react-is@16.13.1: {}
react-is@18.3.1: {}
- react-markdown@9.0.1(react@19.0.0-rc-e740d4b1-20240919)(types-react@19.0.0-rc.1):
+ react-markdown@9.0.1(react@19.0.0-rc-e4953922-20240919)(types-react@19.0.0-rc.1):
dependencies:
'@types/hast': 3.0.4
'@types/react': types-react@19.0.0-rc.1
@@ -12853,7 +12856,7 @@ snapshots:
hast-util-to-jsx-runtime: 2.3.0
html-url-attributes: 3.0.0
mdast-util-to-hast: 13.1.0
- react: 19.0.0-rc-e740d4b1-20240919
+ react: 19.0.0-rc-e4953922-20240919
remark-parse: 11.0.0
remark-rehype: 11.1.0
unified: 11.0.4
@@ -12864,39 +12867,39 @@ snapshots:
react-refresh@0.14.2: {}
- react-router-dom@6.26.2(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919):
+ react-router-dom@6.26.2(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919):
dependencies:
'@remix-run/router': 1.19.2
- react: 19.0.0-rc-e740d4b1-20240919
- react-dom: 19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919)
- react-router: 6.26.2(react@19.0.0-rc-e740d4b1-20240919)
+ react: 19.0.0-rc-e4953922-20240919
+ react-dom: 19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919)
+ react-router: 6.26.2(react@19.0.0-rc-e4953922-20240919)
- react-router@6.26.2(react@19.0.0-rc-e740d4b1-20240919):
+ react-router@6.26.2(react@19.0.0-rc-e4953922-20240919):
dependencies:
'@remix-run/router': 1.19.2
- react: 19.0.0-rc-e740d4b1-20240919
+ react: 19.0.0-rc-e4953922-20240919
- react-split-grid@1.0.4(react@19.0.0-rc-e740d4b1-20240919):
+ react-split-grid@1.0.4(react@19.0.0-rc-e4953922-20240919):
dependencies:
prop-types: 15.8.1
- react: 19.0.0-rc-e740d4b1-20240919
+ react: 19.0.0-rc-e4953922-20240919
split-grid: 1.0.11
- react-transition-group@4.4.5(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919):
+ react-transition-group@4.4.5(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919):
dependencies:
'@babel/runtime': 7.25.6
dom-helpers: 5.2.1
loose-envify: 1.4.0
prop-types: 15.8.1
- react: 19.0.0-rc-e740d4b1-20240919
- react-dom: 19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919)
+ react: 19.0.0-rc-e4953922-20240919
+ react-dom: 19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919)
- react-universal-interface@0.6.2(react@19.0.0-rc-e740d4b1-20240919)(tslib@2.6.2):
+ react-universal-interface@0.6.2(react@19.0.0-rc-e4953922-20240919)(tslib@2.6.2):
dependencies:
- react: 19.0.0-rc-e740d4b1-20240919
+ react: 19.0.0-rc-e4953922-20240919
tslib: 2.6.2
- react-use@17.5.1(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919):
+ react-use@17.5.1(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919):
dependencies:
'@types/js-cookie': 2.2.7
'@xobotyi/scrollbar-width': 1.9.5
@@ -12904,10 +12907,10 @@ snapshots:
fast-deep-equal: 3.1.3
fast-shallow-equal: 1.0.0
js-cookie: 2.2.1
- nano-css: 5.6.2(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919)
- react: 19.0.0-rc-e740d4b1-20240919
- react-dom: 19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919)
- react-universal-interface: 0.6.2(react@19.0.0-rc-e740d4b1-20240919)(tslib@2.6.2)
+ nano-css: 5.6.2(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919)
+ react: 19.0.0-rc-e4953922-20240919
+ react-dom: 19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919)
+ react-universal-interface: 0.6.2(react@19.0.0-rc-e4953922-20240919)(tslib@2.6.2)
resize-observer-polyfill: 1.5.1
screenfull: 5.2.0
set-harmonic-interval: 1.0.1
@@ -12915,7 +12918,7 @@ snapshots:
ts-easing: 0.2.0
tslib: 2.6.2
- react@19.0.0-rc-e740d4b1-20240919: {}
+ react@19.0.0-rc-e4953922-20240919: {}
read-cache@1.0.0:
dependencies:
@@ -13203,7 +13206,7 @@ snapshots:
sass-embedded-win32-ia32: 1.78.0
sass-embedded-win32-x64: 1.78.0
- sass@1.79.2:
+ sass@1.79.3:
dependencies:
chokidar: 4.0.0
immutable: 4.3.5
@@ -13211,7 +13214,7 @@ snapshots:
sax@1.3.0: {}
- scheduler@0.25.0-rc-e740d4b1-20240919: {}
+ scheduler@0.25.0-rc-e4953922-20240919: {}
screenfull@5.2.0: {}
@@ -13619,11 +13622,11 @@ snapshots:
svg-tags@1.0.0: {}
- swr@2.2.5(react@19.0.0-rc-e740d4b1-20240919):
+ swr@2.2.5(react@19.0.0-rc-e4953922-20240919):
dependencies:
client-only: 0.0.1
- react: 19.0.0-rc-e740d4b1-20240919
- use-sync-external-store: 1.2.2(react@19.0.0-rc-e740d4b1-20240919)
+ react: 19.0.0-rc-e4953922-20240919
+ use-sync-external-store: 1.2.2(react@19.0.0-rc-e4953922-20240919)
synckit@0.9.1:
dependencies:
@@ -13707,7 +13710,7 @@ snapshots:
mkdirp: 3.0.1
yallist: 5.0.0
- telegram@2.25.4:
+ telegram@2.25.9:
dependencies:
'@cryptography/aes': 0.1.1
async-mutex: 0.3.2
@@ -13880,7 +13883,7 @@ snapshots:
postcss-modules-local-by-default: 4.0.5(postcss@8.4.47)
postcss-modules-scope: 3.2.0(postcss@8.4.47)
reserved-words: 0.1.2
- sass: 1.79.2
+ sass: 1.79.3
source-map-js: 1.2.0
stylus: 0.62.0
tsconfig-paths: 4.2.0
@@ -13895,6 +13898,8 @@ snapshots:
ufo@1.5.3: {}
+ ufo@1.5.4: {}
+
unbox-primitive@1.0.2:
dependencies:
call-bind: 1.0.7
@@ -14060,15 +14065,15 @@ snapshots:
dependencies:
prepend-http: 1.0.4
- use-resize-observer@9.1.0(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919):
+ use-resize-observer@9.1.0(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919):
dependencies:
'@juggle/resize-observer': 3.4.0
- react: 19.0.0-rc-e740d4b1-20240919
- react-dom: 19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919)
+ react: 19.0.0-rc-e4953922-20240919
+ react-dom: 19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919)
- use-sync-external-store@1.2.2(react@19.0.0-rc-e740d4b1-20240919):
+ use-sync-external-store@1.2.2(react@19.0.0-rc-e4953922-20240919):
dependencies:
- react: 19.0.0-rc-e740d4b1-20240919
+ react: 19.0.0-rc-e4953922-20240919
utf-8-validate@5.0.10:
dependencies:
@@ -14091,10 +14096,10 @@ snapshots:
unist-util-stringify-position: 4.0.0
vfile-message: 4.0.2
- virtua@0.34.2(react-dom@19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919))(react@19.0.0-rc-e740d4b1-20240919):
+ virtua@0.34.2(react-dom@19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919))(react@19.0.0-rc-e4953922-20240919):
optionalDependencies:
- react: 19.0.0-rc-e740d4b1-20240919
- react-dom: 19.0.0-rc-e740d4b1-20240919(react@19.0.0-rc-e740d4b1-20240919)
+ react: 19.0.0-rc-e4953922-20240919
+ react-dom: 19.0.0-rc-e4953922-20240919(react@19.0.0-rc-e4953922-20240919)
vite-bundle-visualizer@1.2.1(rollup@4.21.0):
dependencies:
@@ -14106,7 +14111,7 @@ snapshots:
- rollup
- supports-color
- vite-plugin-dts@4.2.1(@types/node@22.5.5)(rollup@4.21.0)(typescript@5.6.2)(vite@5.4.6(@types/node@22.5.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.2)(stylus@0.62.0)):
+ vite-plugin-dts@4.2.1(@types/node@22.5.5)(rollup@4.21.0)(typescript@5.6.2)(vite@5.4.7(@types/node@22.5.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.3)(stylus@0.62.0)):
dependencies:
'@microsoft/api-extractor': 7.47.7(@types/node@22.5.5)
'@rollup/pluginutils': 5.1.0(rollup@4.21.0)
@@ -14119,43 +14124,43 @@ snapshots:
magic-string: 0.30.11
typescript: 5.6.2
optionalDependencies:
- vite: 5.4.6(@types/node@22.5.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.2)(stylus@0.62.0)
+ vite: 5.4.7(@types/node@22.5.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.3)(stylus@0.62.0)
transitivePeerDependencies:
- '@types/node'
- rollup
- supports-color
- vite-plugin-sass-dts@1.3.29(postcss@8.4.47)(prettier@3.3.3)(sass-embedded@1.78.0)(vite@5.4.6(@types/node@22.5.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.2)(stylus@0.62.0)):
+ vite-plugin-sass-dts@1.3.29(postcss@8.4.47)(prettier@3.3.3)(sass-embedded@1.78.0)(vite@5.4.7(@types/node@22.5.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.3)(stylus@0.62.0)):
dependencies:
postcss: 8.4.47
postcss-js: 4.0.1(postcss@8.4.47)
prettier: 3.3.3
sass-embedded: 1.78.0
- vite: 5.4.6(@types/node@22.5.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.2)(stylus@0.62.0)
+ vite: 5.4.7(@types/node@22.5.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.3)(stylus@0.62.0)
- vite-plugin-svgr@4.2.0(rollup@4.21.0)(typescript@5.6.2)(vite@5.4.6(@types/node@22.5.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.2)(stylus@0.62.0)):
+ vite-plugin-svgr@4.2.0(rollup@4.21.0)(typescript@5.6.2)(vite@5.4.7(@types/node@22.5.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.3)(stylus@0.62.0)):
dependencies:
'@rollup/pluginutils': 5.1.0(rollup@4.21.0)
'@svgr/core': 8.1.0(typescript@5.6.2)
'@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.6.2))
- vite: 5.4.6(@types/node@22.5.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.2)(stylus@0.62.0)
+ vite: 5.4.7(@types/node@22.5.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.3)(stylus@0.62.0)
transitivePeerDependencies:
- rollup
- supports-color
- typescript
- vite-tsconfig-paths@5.0.1(typescript@5.6.2)(vite@5.4.6(@types/node@22.5.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.2)(stylus@0.62.0)):
+ vite-tsconfig-paths@5.0.1(typescript@5.6.2)(vite@5.4.7(@types/node@22.5.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.3)(stylus@0.62.0)):
dependencies:
debug: 4.3.6
globrex: 0.1.2
tsconfck: 3.0.3(typescript@5.6.2)
optionalDependencies:
- vite: 5.4.6(@types/node@22.5.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.2)(stylus@0.62.0)
+ vite: 5.4.7(@types/node@22.5.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.3)(stylus@0.62.0)
transitivePeerDependencies:
- supports-color
- typescript
- vite@5.4.6(@types/node@22.5.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.2)(stylus@0.62.0):
+ vite@5.4.7(@types/node@22.5.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.3)(stylus@0.62.0):
dependencies:
esbuild: 0.21.5
postcss: 8.4.47
@@ -14164,7 +14169,7 @@ snapshots:
'@types/node': 22.5.5
fsevents: 2.3.3
less: 4.2.0
- sass: 1.79.2
+ sass: 1.79.3
sass-embedded: 1.78.0
stylus: 0.62.0
diff --git a/clash-nyanpasu/scripts/package.json b/clash-nyanpasu/scripts/package.json
index 499c76f2b1..8379c187de 100644
--- a/clash-nyanpasu/scripts/package.json
+++ b/clash-nyanpasu/scripts/package.json
@@ -20,7 +20,7 @@
"octokit": "4.0.2",
"picocolors": "1.1.0",
"tar": "7.4.3",
- "telegram": "2.25.4",
+ "telegram": "2.25.9",
"undici": "6.19.8"
}
}
diff --git a/clash-nyanpasu/scripts/telegram-notify.ts b/clash-nyanpasu/scripts/telegram-notify.ts
index cd65a93a38..6e82b57d74 100644
--- a/clash-nyanpasu/scripts/telegram-notify.ts
+++ b/clash-nyanpasu/scripts/telegram-notify.ts
@@ -133,7 +133,9 @@ const repoInfo = {
() =>
client.sendFile(TELEGRAM_TO_NIGHTLY, {
file: resourceMapping.filter(
- (item) => item.endsWith(".exe") || item.endsWith("portable.zip"),
+ (item) =>
+ !item.includes("fixed-webview") &&
+ (item.endsWith(".exe") || item.endsWith("portable.zip")),
),
forceDocument: true,
caption: `Clash Nyanpasu Nightly Build ${GIT_SHORT_HASH} for Windows`,
diff --git a/lede/target/linux/generic/backport-6.1/020-v6.3-01-UPSTREAM-mm-multi-gen-LRU-rename-lru_gen_struct-to-l.patch b/lede/target/linux/generic/backport-6.1/020-v6.3-01-UPSTREAM-mm-multi-gen-LRU-rename-lru_gen_struct-to-l.patch
index fe32acc985..2428bdcb72 100644
--- a/lede/target/linux/generic/backport-6.1/020-v6.3-01-UPSTREAM-mm-multi-gen-LRU-rename-lru_gen_struct-to-l.patch
+++ b/lede/target/linux/generic/backport-6.1/020-v6.3-01-UPSTREAM-mm-multi-gen-LRU-rename-lru_gen_struct-to-l.patch
@@ -294,7 +294,7 @@ Signed-off-by: T.J. Mercier
struct mem_cgroup *memcg = lruvec_memcg(lruvec);
VM_WARN_ON_ONCE(!list_empty(list));
-@@ -5249,7 +5249,7 @@ done:
+@@ -5248,7 +5248,7 @@ done:
static bool __maybe_unused state_is_valid(struct lruvec *lruvec)
{
@@ -303,7 +303,7 @@ Signed-off-by: T.J. Mercier
if (lrugen->enabled) {
enum lru_list lru;
-@@ -5531,7 +5531,7 @@ static void lru_gen_seq_show_full(struct
+@@ -5530,7 +5530,7 @@ static void lru_gen_seq_show_full(struct
int i;
int type, tier;
int hist = lru_hist_from_seq(seq);
@@ -312,7 +312,7 @@ Signed-off-by: T.J. Mercier
for (tier = 0; tier < MAX_NR_TIERS; tier++) {
seq_printf(m, " %10d", tier);
-@@ -5581,7 +5581,7 @@ static int lru_gen_seq_show(struct seq_f
+@@ -5580,7 +5580,7 @@ static int lru_gen_seq_show(struct seq_f
unsigned long seq;
bool full = !debugfs_real_fops(m->file)->write;
struct lruvec *lruvec = v;
@@ -321,7 +321,7 @@ Signed-off-by: T.J. Mercier
int nid = lruvec_pgdat(lruvec)->node_id;
struct mem_cgroup *memcg = lruvec_memcg(lruvec);
DEFINE_MAX_SEQ(lruvec);
-@@ -5835,7 +5835,7 @@ void lru_gen_init_lruvec(struct lruvec *
+@@ -5834,7 +5834,7 @@ void lru_gen_init_lruvec(struct lruvec *
{
int i;
int gen, type, zone;
diff --git a/lede/target/linux/generic/backport-6.1/020-v6.3-03-UPSTREAM-mm-multi-gen-LRU-remove-eviction-fairness-s.patch b/lede/target/linux/generic/backport-6.1/020-v6.3-03-UPSTREAM-mm-multi-gen-LRU-remove-eviction-fairness-s.patch
index e5ad78b61d..3a27bbcae0 100644
--- a/lede/target/linux/generic/backport-6.1/020-v6.3-03-UPSTREAM-mm-multi-gen-LRU-remove-eviction-fairness-s.patch
+++ b/lede/target/linux/generic/backport-6.1/020-v6.3-03-UPSTREAM-mm-multi-gen-LRU-remove-eviction-fairness-s.patch
@@ -76,7 +76,7 @@ Signed-off-by: T.J. Mercier
{
int type;
int scanned;
-@@ -5095,9 +5104,6 @@ retry:
+@@ -5094,9 +5103,6 @@ retry:
goto retry;
}
@@ -86,7 +86,7 @@ Signed-off-by: T.J. Mercier
return scanned;
}
-@@ -5136,67 +5142,26 @@ done:
+@@ -5135,67 +5141,26 @@ done:
return min_seq[!can_swap] + MIN_NR_GENS <= max_seq ? nr_to_scan : 0;
}
@@ -163,7 +163,7 @@ Signed-off-by: T.J. Mercier
lru_add_drain();
-@@ -5220,7 +5185,7 @@ static void lru_gen_shrink_lruvec(struct
+@@ -5219,7 +5184,7 @@ static void lru_gen_shrink_lruvec(struct
if (!nr_to_scan)
goto done;
@@ -172,7 +172,7 @@ Signed-off-by: T.J. Mercier
if (!delta)
goto done;
-@@ -5228,7 +5193,7 @@ static void lru_gen_shrink_lruvec(struct
+@@ -5227,7 +5192,7 @@ static void lru_gen_shrink_lruvec(struct
if (scanned >= nr_to_scan)
break;
@@ -181,7 +181,7 @@ Signed-off-by: T.J. Mercier
break;
cond_resched();
-@@ -5678,7 +5643,7 @@ static int run_eviction(struct lruvec *l
+@@ -5677,7 +5642,7 @@ static int run_eviction(struct lruvec *l
if (sc->nr_reclaimed >= nr_to_reclaim)
return 0;
diff --git a/lede/target/linux/generic/backport-6.1/020-v6.3-04-BACKPORT-mm-multi-gen-LRU-remove-aging-fairness-safe.patch b/lede/target/linux/generic/backport-6.1/020-v6.3-04-BACKPORT-mm-multi-gen-LRU-remove-aging-fairness-safe.patch
index cb349abcdb..8295889554 100644
--- a/lede/target/linux/generic/backport-6.1/020-v6.3-04-BACKPORT-mm-multi-gen-LRU-remove-aging-fairness-safe.patch
+++ b/lede/target/linux/generic/backport-6.1/020-v6.3-04-BACKPORT-mm-multi-gen-LRU-remove-aging-fairness-safe.patch
@@ -214,7 +214,7 @@ Signed-off-by: T.J. Mercier
*/
if (mutex_trylock(&oom_lock)) {
struct oom_control oc = {
-@@ -5113,33 +5117,27 @@ retry:
+@@ -5112,33 +5116,27 @@ retry:
* reclaim.
*/
static unsigned long get_nr_to_scan(struct lruvec *lruvec, struct scan_control *sc,
@@ -254,7 +254,7 @@ Signed-off-by: T.J. Mercier
}
static unsigned long get_nr_to_reclaim(struct scan_control *sc)
-@@ -5158,9 +5156,7 @@ static unsigned long get_nr_to_reclaim(s
+@@ -5157,9 +5155,7 @@ static unsigned long get_nr_to_reclaim(s
static void lru_gen_shrink_lruvec(struct lruvec *lruvec, struct scan_control *sc)
{
struct blk_plug plug;
@@ -264,7 +264,7 @@ Signed-off-by: T.J. Mercier
unsigned long nr_to_reclaim = get_nr_to_reclaim(sc);
lru_add_drain();
-@@ -5181,13 +5177,13 @@ static void lru_gen_shrink_lruvec(struct
+@@ -5180,13 +5176,13 @@ static void lru_gen_shrink_lruvec(struct
else
swappiness = 0;
@@ -281,7 +281,7 @@ Signed-off-by: T.J. Mercier
scanned += delta;
if (scanned >= nr_to_scan)
-@@ -5199,10 +5195,6 @@ static void lru_gen_shrink_lruvec(struct
+@@ -5198,10 +5194,6 @@ static void lru_gen_shrink_lruvec(struct
cond_resched();
}
diff --git a/lede/target/linux/generic/backport-6.1/020-v6.3-05-UPSTREAM-mm-multi-gen-LRU-shuffle-should_run_aging.patch b/lede/target/linux/generic/backport-6.1/020-v6.3-05-UPSTREAM-mm-multi-gen-LRU-shuffle-should_run_aging.patch
index 42caab7c37..6374b425cd 100644
--- a/lede/target/linux/generic/backport-6.1/020-v6.3-05-UPSTREAM-mm-multi-gen-LRU-shuffle-should_run_aging.patch
+++ b/lede/target/linux/generic/backport-6.1/020-v6.3-05-UPSTREAM-mm-multi-gen-LRU-shuffle-should_run_aging.patch
@@ -95,7 +95,7 @@ Signed-off-by: T.J. Mercier
static bool lruvec_is_sizable(struct lruvec *lruvec, struct scan_control *sc)
{
int gen, type, zone;
-@@ -5111,6 +5049,68 @@ retry:
+@@ -5110,6 +5048,68 @@ retry:
return scanned;
}
diff --git a/lede/target/linux/generic/backport-6.1/020-v6.3-06-BACKPORT-mm-multi-gen-LRU-per-node-lru_gen_folio-lis.patch b/lede/target/linux/generic/backport-6.1/020-v6.3-06-BACKPORT-mm-multi-gen-LRU-per-node-lru_gen_folio-lis.patch
index 7756d19d9b..259b5d697f 100644
--- a/lede/target/linux/generic/backport-6.1/020-v6.3-06-BACKPORT-mm-multi-gen-LRU-per-node-lru_gen_folio-lis.patch
+++ b/lede/target/linux/generic/backport-6.1/020-v6.3-06-BACKPORT-mm-multi-gen-LRU-per-node-lru_gen_folio-lis.patch
@@ -335,7 +335,7 @@ Signed-off-by: T.J. Mercier
if (order > 0)
return 0;
-@@ -5387,6 +5400,7 @@ static int mem_cgroup_css_online(struct
+@@ -5408,6 +5421,7 @@ static int mem_cgroup_css_online(struct
if (unlikely(mem_cgroup_is_root(memcg)))
queue_delayed_work(system_unbound_wq, &stats_flush_dwork,
2UL*HZ);
@@ -343,7 +343,7 @@ Signed-off-by: T.J. Mercier
return 0;
offline_kmem:
memcg_offline_kmem(memcg);
-@@ -5418,6 +5432,7 @@ static void mem_cgroup_css_offline(struc
+@@ -5439,6 +5453,7 @@ static void mem_cgroup_css_offline(struc
memcg_offline_kmem(memcg);
reparent_shrinker_deferred(memcg);
wb_memcg_offline(memcg);
@@ -351,7 +351,7 @@ Signed-off-by: T.J. Mercier
drain_all_stock(memcg);
-@@ -5429,6 +5444,7 @@ static void mem_cgroup_css_released(stru
+@@ -5450,6 +5465,7 @@ static void mem_cgroup_css_released(stru
struct mem_cgroup *memcg = mem_cgroup_from_css(css);
invalidate_reclaim_iterators(memcg);
@@ -361,7 +361,7 @@ Signed-off-by: T.J. Mercier
static void mem_cgroup_css_free(struct cgroup_subsys_state *css)
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
-@@ -7949,6 +7949,7 @@ static void __init free_area_init_node(i
+@@ -7956,6 +7956,7 @@ static void __init free_area_init_node(i
pgdat_set_deferred_range(pgdat);
free_area_init_core(pgdat);
@@ -421,7 +421,7 @@ Signed-off-by: T.J. Mercier
/* check the order to exclude compaction-induced reclaim */
if (!min_ttl || sc->order || sc->priority == DEF_PRIORITY)
return;
-@@ -5116,8 +5113,7 @@ static bool should_run_aging(struct lruv
+@@ -5115,8 +5112,7 @@ static bool should_run_aging(struct lruv
* 1. Defer try_to_inc_max_seq() to workqueues to reduce latency for memcg
* reclaim.
*/
@@ -431,7 +431,7 @@ Signed-off-by: T.J. Mercier
{
unsigned long nr_to_scan;
struct mem_cgroup *memcg = lruvec_memcg(lruvec);
-@@ -5134,10 +5130,8 @@ static unsigned long get_nr_to_scan(stru
+@@ -5133,10 +5129,8 @@ static unsigned long get_nr_to_scan(stru
if (sc->priority == DEF_PRIORITY)
return nr_to_scan;
@@ -443,7 +443,7 @@ Signed-off-by: T.J. Mercier
}
static unsigned long get_nr_to_reclaim(struct scan_control *sc)
-@@ -5146,29 +5140,18 @@ static unsigned long get_nr_to_reclaim(s
+@@ -5145,29 +5139,18 @@ static unsigned long get_nr_to_reclaim(s
if (!global_reclaim(sc))
return -1;
@@ -475,7 +475,7 @@ Signed-off-by: T.J. Mercier
if (sc->may_swap)
swappiness = get_swappiness(lruvec, sc);
-@@ -5178,7 +5161,7 @@ static void lru_gen_shrink_lruvec(struct
+@@ -5177,7 +5160,7 @@ static void lru_gen_shrink_lruvec(struct
swappiness = 0;
nr_to_scan = get_nr_to_scan(lruvec, sc, swappiness);
@@ -484,7 +484,7 @@ Signed-off-by: T.J. Mercier
break;
delta = evict_folios(lruvec, sc, swappiness);
-@@ -5195,10 +5178,251 @@ static void lru_gen_shrink_lruvec(struct
+@@ -5194,10 +5177,251 @@ static void lru_gen_shrink_lruvec(struct
cond_resched();
}
@@ -736,7 +736,7 @@ Signed-off-by: T.J. Mercier
/******************************************************************************
* state change
-@@ -5656,11 +5880,11 @@ static int run_cmd(char cmd, int memcg_i
+@@ -5655,11 +5879,11 @@ static int run_cmd(char cmd, int memcg_i
if (!mem_cgroup_disabled()) {
rcu_read_lock();
@@ -751,7 +751,7 @@ Signed-off-by: T.J. Mercier
rcu_read_unlock();
if (!memcg)
-@@ -5808,6 +6032,19 @@ void lru_gen_init_lruvec(struct lruvec *
+@@ -5807,6 +6031,19 @@ void lru_gen_init_lruvec(struct lruvec *
}
#ifdef CONFIG_MEMCG
@@ -771,7 +771,7 @@ Signed-off-by: T.J. Mercier
void lru_gen_init_memcg(struct mem_cgroup *memcg)
{
INIT_LIST_HEAD(&memcg->mm_list.fifo);
-@@ -5831,7 +6068,69 @@ void lru_gen_exit_memcg(struct mem_cgrou
+@@ -5830,7 +6067,69 @@ void lru_gen_exit_memcg(struct mem_cgrou
}
}
}
@@ -842,7 +842,7 @@ Signed-off-by: T.J. Mercier
static int __init init_lru_gen(void)
{
-@@ -5858,6 +6157,10 @@ static void lru_gen_shrink_lruvec(struct
+@@ -5857,6 +6156,10 @@ static void lru_gen_shrink_lruvec(struct
{
}
@@ -853,7 +853,7 @@ Signed-off-by: T.J. Mercier
#endif /* CONFIG_LRU_GEN */
static void shrink_lruvec(struct lruvec *lruvec, struct scan_control *sc)
-@@ -5871,7 +6174,7 @@ static void shrink_lruvec(struct lruvec
+@@ -5870,7 +6173,7 @@ static void shrink_lruvec(struct lruvec
bool proportional_reclaim;
struct blk_plug plug;
@@ -862,7 +862,7 @@ Signed-off-by: T.J. Mercier
lru_gen_shrink_lruvec(lruvec, sc);
return;
}
-@@ -6114,6 +6417,11 @@ static void shrink_node(pg_data_t *pgdat
+@@ -6113,6 +6416,11 @@ static void shrink_node(pg_data_t *pgdat
struct lruvec *target_lruvec;
bool reclaimable = false;
diff --git a/lede/target/linux/generic/backport-6.1/020-v6.3-07-BACKPORT-mm-multi-gen-LRU-clarify-scan_control-flags.patch b/lede/target/linux/generic/backport-6.1/020-v6.3-07-BACKPORT-mm-multi-gen-LRU-clarify-scan_control-flags.patch
index d60ddb9dcc..079f4fd202 100644
--- a/lede/target/linux/generic/backport-6.1/020-v6.3-07-BACKPORT-mm-multi-gen-LRU-clarify-scan_control-flags.patch
+++ b/lede/target/linux/generic/backport-6.1/020-v6.3-07-BACKPORT-mm-multi-gen-LRU-clarify-scan_control-flags.patch
@@ -113,7 +113,7 @@ Signed-off-by: T.J. Mercier
*/
return isolated || !remaining ? scanned : 0;
}
-@@ -5119,8 +5115,7 @@ static long get_nr_to_scan(struct lruvec
+@@ -5118,8 +5114,7 @@ static long get_nr_to_scan(struct lruvec
struct mem_cgroup *memcg = lruvec_memcg(lruvec);
DEFINE_MAX_SEQ(lruvec);
@@ -123,7 +123,7 @@ Signed-off-by: T.J. Mercier
return 0;
if (!should_run_aging(lruvec, max_seq, sc, can_swap, &nr_to_scan))
-@@ -5148,17 +5143,14 @@ static bool try_to_shrink_lruvec(struct
+@@ -5147,17 +5142,14 @@ static bool try_to_shrink_lruvec(struct
long nr_to_scan;
unsigned long scanned = 0;
unsigned long nr_to_reclaim = get_nr_to_reclaim(sc);
@@ -146,7 +146,7 @@ Signed-off-by: T.J. Mercier
nr_to_scan = get_nr_to_scan(lruvec, sc, swappiness);
if (nr_to_scan <= 0)
-@@ -5289,12 +5281,13 @@ static void lru_gen_shrink_lruvec(struct
+@@ -5288,12 +5280,13 @@ static void lru_gen_shrink_lruvec(struct
struct blk_plug plug;
VM_WARN_ON_ONCE(global_reclaim(sc));
@@ -161,7 +161,7 @@ Signed-off-by: T.J. Mercier
if (try_to_shrink_lruvec(lruvec, sc))
lru_gen_rotate_memcg(lruvec, MEMCG_LRU_YOUNG);
-@@ -5350,11 +5343,19 @@ static void lru_gen_shrink_node(struct p
+@@ -5349,11 +5342,19 @@ static void lru_gen_shrink_node(struct p
VM_WARN_ON_ONCE(!global_reclaim(sc));
@@ -182,7 +182,7 @@ Signed-off-by: T.J. Mercier
set_initial_priority(pgdat, sc);
-@@ -5372,7 +5373,7 @@ static void lru_gen_shrink_node(struct p
+@@ -5371,7 +5372,7 @@ static void lru_gen_shrink_node(struct p
clear_mm_walk();
blk_finish_plug(&plug);
@@ -191,7 +191,7 @@ Signed-off-by: T.J. Mercier
/* kswapd should never fail */
pgdat->kswapd_failures = 0;
}
-@@ -5944,7 +5945,7 @@ static ssize_t lru_gen_seq_write(struct
+@@ -5943,7 +5944,7 @@ static ssize_t lru_gen_seq_write(struct
set_task_reclaim_state(current, &sc.reclaim_state);
flags = memalloc_noreclaim_save();
blk_start_plug(&plug);
diff --git a/lede/target/linux/generic/backport-6.1/020-v6.3-09-UPSTREAM-mm-multi-gen-LRU-avoid-futile-retries.patch b/lede/target/linux/generic/backport-6.1/020-v6.3-09-UPSTREAM-mm-multi-gen-LRU-avoid-futile-retries.patch
index c1ad1c538e..2ed3f07bbf 100644
--- a/lede/target/linux/generic/backport-6.1/020-v6.3-09-UPSTREAM-mm-multi-gen-LRU-avoid-futile-retries.patch
+++ b/lede/target/linux/generic/backport-6.1/020-v6.3-09-UPSTREAM-mm-multi-gen-LRU-avoid-futile-retries.patch
@@ -29,7 +29,7 @@ Signed-off-by: T.J. Mercier
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
-@@ -5218,18 +5218,20 @@ static int shrink_one(struct lruvec *lru
+@@ -5217,18 +5217,20 @@ static int shrink_one(struct lruvec *lru
static void shrink_many(struct pglist_data *pgdat, struct scan_control *sc)
{
@@ -52,7 +52,7 @@ Signed-off-by: T.J. Mercier
gen = get_memcg_gen(READ_ONCE(pgdat->memcg_lru.seq));
rcu_read_lock();
-@@ -5253,14 +5255,22 @@ restart:
+@@ -5252,14 +5254,22 @@ restart:
op = shrink_one(lruvec, sc);
@@ -78,7 +78,7 @@ Signed-off-by: T.J. Mercier
/* restart if raced with lru_gen_rotate_memcg() */
if (gen != get_nulls_value(pos))
goto restart;
-@@ -5269,11 +5279,6 @@ restart:
+@@ -5268,11 +5278,6 @@ restart:
bin = get_memcg_bin(bin + 1);
if (bin != first_bin)
goto restart;
diff --git a/lede/target/linux/generic/backport-6.1/020-v6.3-10-UPSTREAM-mm-add-vma_has_recency.patch b/lede/target/linux/generic/backport-6.1/020-v6.3-10-UPSTREAM-mm-add-vma_has_recency.patch
index 67fe4f96ec..4f01dc7d7e 100644
--- a/lede/target/linux/generic/backport-6.1/020-v6.3-10-UPSTREAM-mm-add-vma_has_recency.patch
+++ b/lede/target/linux/generic/backport-6.1/020-v6.3-10-UPSTREAM-mm-add-vma_has_recency.patch
@@ -87,7 +87,7 @@ Signed-off-by: T.J. Mercier
mark_page_accessed(page);
}
rss[mm_counter(page)]--;
-@@ -5219,8 +5218,8 @@ static inline void mm_account_fault(stru
+@@ -5235,8 +5234,8 @@ static inline void mm_account_fault(stru
#ifdef CONFIG_LRU_GEN
static void lru_gen_enter_fault(struct vm_area_struct *vma)
{
diff --git a/lede/target/linux/generic/backport-6.1/020-v6.3-15-UPSTREAM-mm-multi-gen-LRU-section-for-memcg-LRU.patch b/lede/target/linux/generic/backport-6.1/020-v6.3-15-UPSTREAM-mm-multi-gen-LRU-section-for-memcg-LRU.patch
index 101a0a3757..11c1b43db9 100644
--- a/lede/target/linux/generic/backport-6.1/020-v6.3-15-UPSTREAM-mm-multi-gen-LRU-section-for-memcg-LRU.patch
+++ b/lede/target/linux/generic/backport-6.1/020-v6.3-15-UPSTREAM-mm-multi-gen-LRU-section-for-memcg-LRU.patch
@@ -303,7 +303,7 @@ Signed-off-by: T.J. Mercier
* the eviction
******************************************************************************/
-@@ -5398,53 +5540,6 @@ done:
+@@ -5397,53 +5539,6 @@ done:
pgdat->kswapd_failures = 0;
}
@@ -357,7 +357,7 @@ Signed-off-by: T.J. Mercier
/******************************************************************************
* state change
******************************************************************************/
-@@ -6090,67 +6185,6 @@ void lru_gen_exit_memcg(struct mem_cgrou
+@@ -6089,67 +6184,6 @@ void lru_gen_exit_memcg(struct mem_cgrou
}
}
diff --git a/lede/target/linux/generic/backport-6.1/020-v6.3-16-UPSTREAM-mm-multi-gen-LRU-improve-lru_gen_exit_memcg.patch b/lede/target/linux/generic/backport-6.1/020-v6.3-16-UPSTREAM-mm-multi-gen-LRU-improve-lru_gen_exit_memcg.patch
index 1ee766f861..fcb9708d8a 100644
--- a/lede/target/linux/generic/backport-6.1/020-v6.3-16-UPSTREAM-mm-multi-gen-LRU-improve-lru_gen_exit_memcg.patch
+++ b/lede/target/linux/generic/backport-6.1/020-v6.3-16-UPSTREAM-mm-multi-gen-LRU-improve-lru_gen_exit_memcg.patch
@@ -20,7 +20,7 @@ Signed-off-by: T.J. Mercier
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
-@@ -6172,12 +6172,17 @@ void lru_gen_exit_memcg(struct mem_cgrou
+@@ -6171,12 +6171,17 @@ void lru_gen_exit_memcg(struct mem_cgrou
int i;
int nid;
diff --git a/lede/target/linux/generic/backport-6.1/020-v6.4-19-mm-Multi-gen-LRU-remove-wait_event_killable.patch b/lede/target/linux/generic/backport-6.1/020-v6.4-19-mm-Multi-gen-LRU-remove-wait_event_killable.patch
index 1b0459cdb9..958d459686 100644
--- a/lede/target/linux/generic/backport-6.1/020-v6.4-19-mm-Multi-gen-LRU-remove-wait_event_killable.patch
+++ b/lede/target/linux/generic/backport-6.1/020-v6.4-19-mm-Multi-gen-LRU-remove-wait_event_killable.patch
@@ -255,7 +255,7 @@ Signed-off-by: Andrew Morton
}
/******************************************************************************
-@@ -6117,7 +6087,6 @@ void lru_gen_init_lruvec(struct lruvec *
+@@ -6116,7 +6086,6 @@ void lru_gen_init_lruvec(struct lruvec *
INIT_LIST_HEAD(&lrugen->folios[gen][type][zone]);
lruvec->mm_state.seq = MIN_NR_GENS;
@@ -263,7 +263,7 @@ Signed-off-by: Andrew Morton
}
#ifdef CONFIG_MEMCG
-@@ -6150,7 +6119,6 @@ void lru_gen_exit_memcg(struct mem_cgrou
+@@ -6149,7 +6118,6 @@ void lru_gen_exit_memcg(struct mem_cgrou
for_each_node(nid) {
struct lruvec *lruvec = get_lruvec(memcg, nid);
diff --git a/lede/target/linux/generic/backport-6.1/412-v6.3-02-spidev-Add-Silicon-Labs-SI3210-device-compatible.patch b/lede/target/linux/generic/backport-6.1/412-v6.3-02-spidev-Add-Silicon-Labs-SI3210-device-compatible.patch
index 59d025e087..1f8501dc1c 100644
--- a/lede/target/linux/generic/backport-6.1/412-v6.3-02-spidev-Add-Silicon-Labs-SI3210-device-compatible.patch
+++ b/lede/target/linux/generic/backport-6.1/412-v6.3-02-spidev-Add-Silicon-Labs-SI3210-device-compatible.patch
@@ -14,7 +14,7 @@ Signed-off-by: Mark Brown
--- a/drivers/spi/spidev.c
+++ b/drivers/spi/spidev.c
-@@ -701,6 +701,7 @@ static const struct spi_device_id spidev
+@@ -702,6 +702,7 @@ static const struct spi_device_id spidev
{ .name = "spi-petra" },
{ .name = "spi-authenta" },
{ .name = "em3581" },
@@ -22,9 +22,9 @@ Signed-off-by: Mark Brown
{},
};
MODULE_DEVICE_TABLE(spi, spidev_spi_ids);
-@@ -728,6 +729,7 @@ static const struct of_device_id spidev_
- { .compatible = "cisco,spi-petra", .data = &spidev_of_check },
- { .compatible = "micron,spi-authenta", .data = &spidev_of_check },
+@@ -730,6 +731,7 @@ static const struct of_device_id spidev_
+ { .compatible = "rohm,dh2228fv", .data = &spidev_of_check },
+ { .compatible = "semtech,sx1301", .data = &spidev_of_check },
{ .compatible = "silabs,em3581", .data = &spidev_of_check },
+ { .compatible = "silabs,si3210", .data = &spidev_of_check },
{},
diff --git a/lede/target/linux/generic/backport-6.1/715-03-v6.2-net-dpaa-Convert-to-phylink.patch b/lede/target/linux/generic/backport-6.1/715-03-v6.2-net-dpaa-Convert-to-phylink.patch
index 63b651bb2d..bdcdf172ec 100644
--- a/lede/target/linux/generic/backport-6.1/715-03-v6.2-net-dpaa-Convert-to-phylink.patch
+++ b/lede/target/linux/generic/backport-6.1/715-03-v6.2-net-dpaa-Convert-to-phylink.patch
@@ -130,7 +130,7 @@ Signed-off-by: David S. Miller
struct dpaa_priv *priv = netdev_priv(net_dev);
struct qm_mcc_initcgr opts = { };
u32 cs_th;
-@@ -2905,58 +2915,6 @@ static void dpaa_eth_napi_disable(struct
+@@ -2920,58 +2930,6 @@ static void dpaa_eth_napi_disable(struct
}
}
@@ -189,7 +189,7 @@ Signed-off-by: David S. Miller
static int dpaa_open(struct net_device *net_dev)
{
struct mac_device *mac_dev;
-@@ -2967,7 +2925,8 @@ static int dpaa_open(struct net_device *
+@@ -2982,7 +2940,8 @@ static int dpaa_open(struct net_device *
mac_dev = priv->mac_dev;
dpaa_eth_napi_enable(priv);
@@ -199,7 +199,7 @@ Signed-off-by: David S. Miller
if (err)
goto phy_init_failed;
-@@ -2982,7 +2941,7 @@ static int dpaa_open(struct net_device *
+@@ -2997,7 +2956,7 @@ static int dpaa_open(struct net_device *
netif_err(priv, ifup, net_dev, "mac_dev->enable() = %d\n", err);
goto mac_start_failed;
}
@@ -208,7 +208,7 @@ Signed-off-by: David S. Miller
netif_tx_start_all_queues(net_dev);
-@@ -2991,6 +2950,7 @@ static int dpaa_open(struct net_device *
+@@ -3006,6 +2965,7 @@ static int dpaa_open(struct net_device *
mac_start_failed:
for (i = 0; i < ARRAY_SIZE(mac_dev->port); i++)
fman_port_disable(mac_dev->port[i]);
@@ -216,7 +216,7 @@ Signed-off-by: David S. Miller
phy_init_failed:
dpaa_eth_napi_disable(priv);
-@@ -3146,10 +3106,12 @@ static int dpaa_ts_ioctl(struct net_devi
+@@ -3161,10 +3121,12 @@ static int dpaa_ts_ioctl(struct net_devi
static int dpaa_ioctl(struct net_device *net_dev, struct ifreq *rq, int cmd)
{
int ret = -EINVAL;
@@ -230,7 +230,7 @@ Signed-off-by: David S. Miller
}
if (cmd == SIOCSHWTSTAMP)
-@@ -3552,6 +3514,7 @@ static int dpaa_remove(struct platform_d
+@@ -3569,6 +3531,7 @@ static int dpaa_remove(struct platform_d
dev_set_drvdata(dev, NULL);
unregister_netdev(net_dev);
diff --git a/lede/target/linux/generic/backport-6.1/715-07-v6.2-net-remove-explicit-phylink_generic_validate-referen.patch b/lede/target/linux/generic/backport-6.1/715-07-v6.2-net-remove-explicit-phylink_generic_validate-referen.patch
index 31fde5f18e..6bd0151323 100644
--- a/lede/target/linux/generic/backport-6.1/715-07-v6.2-net-remove-explicit-phylink_generic_validate-referen.patch
+++ b/lede/target/linux/generic/backport-6.1/715-07-v6.2-net-remove-explicit-phylink_generic_validate-referen.patch
@@ -202,7 +202,7 @@ Signed-off-by: Jakub Kicinski
.mac_link_up = am65_cpsw_nuss_mac_link_up,
--- a/drivers/net/ethernet/xilinx/xilinx_axienet_main.c
+++ b/drivers/net/ethernet/xilinx/xilinx_axienet_main.c
-@@ -1736,7 +1736,6 @@ static void axienet_mac_link_up(struct p
+@@ -1741,7 +1741,6 @@ static void axienet_mac_link_up(struct p
}
static const struct phylink_mac_ops axienet_phylink_ops = {
diff --git a/lede/target/linux/generic/backport-6.1/715-26-v6.5-net-phylink-pass-neg_mode-into-phylink_mii_c22_pcs_c.patch b/lede/target/linux/generic/backport-6.1/715-26-v6.5-net-phylink-pass-neg_mode-into-phylink_mii_c22_pcs_c.patch
index 5572850e95..f94a514f31 100644
--- a/lede/target/linux/generic/backport-6.1/715-26-v6.5-net-phylink-pass-neg_mode-into-phylink_mii_c22_pcs_c.patch
+++ b/lede/target/linux/generic/backport-6.1/715-26-v6.5-net-phylink-pass-neg_mode-into-phylink_mii_c22_pcs_c.patch
@@ -53,7 +53,7 @@ Signed-off-by: Jakub Kicinski
supported = mac_dev->phylink_config.supported_interfaces;
--- a/drivers/net/ethernet/xilinx/xilinx_axienet_main.c
+++ b/drivers/net/ethernet/xilinx/xilinx_axienet_main.c
-@@ -1631,7 +1631,7 @@ static void axienet_pcs_an_restart(struc
+@@ -1636,7 +1636,7 @@ static void axienet_pcs_an_restart(struc
phylink_mii_c22_pcs_an_restart(pcs_phy);
}
@@ -62,7 +62,7 @@ Signed-off-by: Jakub Kicinski
phy_interface_t interface,
const unsigned long *advertising,
bool permit_pause_to_mac)
-@@ -1653,7 +1653,8 @@ static int axienet_pcs_config(struct phy
+@@ -1658,7 +1658,8 @@ static int axienet_pcs_config(struct phy
}
}
@@ -72,7 +72,7 @@ Signed-off-by: Jakub Kicinski
if (ret < 0)
netdev_warn(ndev, "Failed to configure PCS: %d\n", ret);
-@@ -2129,6 +2130,7 @@ static int axienet_probe(struct platform
+@@ -2138,6 +2139,7 @@ static int axienet_probe(struct platform
}
of_node_put(np);
lp->pcs.ops = &axienet_pcs_ops;
diff --git a/lede/target/linux/generic/backport-6.1/796-v6.5-01-usbnet-ipheth-fix-risk-of-NULL-pointer-deallocation.patch b/lede/target/linux/generic/backport-6.1/796-v6.5-01-usbnet-ipheth-fix-risk-of-NULL-pointer-deallocation.patch
index d9d6f36fce..da97cdad56 100644
--- a/lede/target/linux/generic/backport-6.1/796-v6.5-01-usbnet-ipheth-fix-risk-of-NULL-pointer-deallocation.patch
+++ b/lede/target/linux/generic/backport-6.1/796-v6.5-01-usbnet-ipheth-fix-risk-of-NULL-pointer-deallocation.patch
@@ -18,7 +18,7 @@ Signed-off-by: David S. Miller
--- a/drivers/net/usb/ipheth.c
+++ b/drivers/net/usb/ipheth.c
-@@ -510,8 +510,8 @@ err_register_netdev:
+@@ -511,8 +511,8 @@ err_register_netdev:
ipheth_free_urbs(dev);
err_alloc_urbs:
err_get_macaddr:
diff --git a/lede/target/linux/generic/backport-6.1/796-v6.5-02-usbnet-ipheth-transmit-URBs-without-trailing-padding.patch b/lede/target/linux/generic/backport-6.1/796-v6.5-02-usbnet-ipheth-transmit-URBs-without-trailing-padding.patch
index adfec356d9..383fd05666 100644
--- a/lede/target/linux/generic/backport-6.1/796-v6.5-02-usbnet-ipheth-transmit-URBs-without-trailing-padding.patch
+++ b/lede/target/linux/generic/backport-6.1/796-v6.5-02-usbnet-ipheth-transmit-URBs-without-trailing-padding.patch
@@ -19,7 +19,7 @@ Signed-off-by: David S. Miller
--- a/drivers/net/usb/ipheth.c
+++ b/drivers/net/usb/ipheth.c
-@@ -373,12 +373,10 @@ static netdev_tx_t ipheth_tx(struct sk_b
+@@ -374,12 +374,10 @@ static netdev_tx_t ipheth_tx(struct sk_b
}
memcpy(dev->tx_buf, skb->data, skb->len);
diff --git a/lede/target/linux/generic/backport-6.1/796-v6.5-03-usbnet-ipheth-add-CDC-NCM-support.patch b/lede/target/linux/generic/backport-6.1/796-v6.5-03-usbnet-ipheth-add-CDC-NCM-support.patch
index e3f2b9c331..9fb507ffba 100644
--- a/lede/target/linux/generic/backport-6.1/796-v6.5-03-usbnet-ipheth-add-CDC-NCM-support.patch
+++ b/lede/target/linux/generic/backport-6.1/796-v6.5-03-usbnet-ipheth-add-CDC-NCM-support.patch
@@ -256,7 +256,7 @@ Signed-off-by: David S. Miller
ipheth_rx_submit(dev, GFP_ATOMIC);
}
-@@ -310,6 +411,27 @@ static int ipheth_get_macaddr(struct iph
+@@ -311,6 +412,27 @@ static int ipheth_get_macaddr(struct iph
return retval;
}
@@ -284,7 +284,7 @@ Signed-off-by: David S. Miller
static int ipheth_rx_submit(struct ipheth_device *dev, gfp_t mem_flags)
{
struct usb_device *udev = dev->udev;
-@@ -317,7 +439,7 @@ static int ipheth_rx_submit(struct iphet
+@@ -318,7 +440,7 @@ static int ipheth_rx_submit(struct iphet
usb_fill_bulk_urb(dev->rx_urb, udev,
usb_rcvbulkpipe(udev, dev->bulk_in),
@@ -293,7 +293,7 @@ Signed-off-by: David S. Miller
ipheth_rcvbulk_callback,
dev);
dev->rx_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
-@@ -365,7 +487,7 @@ static netdev_tx_t ipheth_tx(struct sk_b
+@@ -366,7 +488,7 @@ static netdev_tx_t ipheth_tx(struct sk_b
int retval;
/* Paranoid */
@@ -302,7 +302,7 @@ Signed-off-by: David S. Miller
WARN(1, "%s: skb too large: %d bytes\n", __func__, skb->len);
dev->net->stats.tx_dropped++;
dev_kfree_skb_any(skb);
-@@ -448,6 +570,8 @@ static int ipheth_probe(struct usb_inter
+@@ -449,6 +571,8 @@ static int ipheth_probe(struct usb_inter
dev->net = netdev;
dev->intf = intf;
dev->confirmed_pairing = false;
@@ -311,7 +311,7 @@ Signed-off-by: David S. Miller
/* Set up endpoints */
hintf = usb_altnum_to_altsetting(intf, IPHETH_ALT_INTFNUM);
if (hintf == NULL) {
-@@ -479,6 +603,12 @@ static int ipheth_probe(struct usb_inter
+@@ -480,6 +604,12 @@ static int ipheth_probe(struct usb_inter
if (retval)
goto err_get_macaddr;
diff --git a/lede/target/linux/generic/backport-6.1/797-6.7-net-dsa-mv88e6xxx-fix-marvell-6350-switch-probing.patch b/lede/target/linux/generic/backport-6.1/797-6.7-net-dsa-mv88e6xxx-fix-marvell-6350-switch-probing.patch
index 36083bbaf5..0afc69fa44 100644
--- a/lede/target/linux/generic/backport-6.1/797-6.7-net-dsa-mv88e6xxx-fix-marvell-6350-switch-probing.patch
+++ b/lede/target/linux/generic/backport-6.1/797-6.7-net-dsa-mv88e6xxx-fix-marvell-6350-switch-probing.patch
@@ -51,7 +51,7 @@ Signed-off-by: David S. Miller
static int mv88e6352_get_port4_serdes_cmode(struct mv88e6xxx_chip *chip)
{
u16 reg, val;
-@@ -4501,7 +4513,7 @@ static const struct mv88e6xxx_ops mv88e6
+@@ -4502,7 +4514,7 @@ static const struct mv88e6xxx_ops mv88e6
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
.stu_getnext = mv88e6352_g1_stu_getnext,
.stu_loadpurge = mv88e6352_g1_stu_loadpurge,
@@ -60,7 +60,7 @@ Signed-off-by: David S. Miller
};
static const struct mv88e6xxx_ops mv88e6172_ops = {
-@@ -4604,7 +4616,7 @@ static const struct mv88e6xxx_ops mv88e6
+@@ -4605,7 +4617,7 @@ static const struct mv88e6xxx_ops mv88e6
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
.stu_getnext = mv88e6352_g1_stu_getnext,
.stu_loadpurge = mv88e6352_g1_stu_loadpurge,
@@ -69,7 +69,7 @@ Signed-off-by: David S. Miller
};
static const struct mv88e6xxx_ops mv88e6176_ops = {
-@@ -5281,7 +5293,7 @@ static const struct mv88e6xxx_ops mv88e6
+@@ -5282,7 +5294,7 @@ static const struct mv88e6xxx_ops mv88e6
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
.stu_getnext = mv88e6352_g1_stu_getnext,
.stu_loadpurge = mv88e6352_g1_stu_loadpurge,
@@ -78,7 +78,7 @@ Signed-off-by: David S. Miller
};
static const struct mv88e6xxx_ops mv88e6351_ops = {
-@@ -5327,7 +5339,7 @@ static const struct mv88e6xxx_ops mv88e6
+@@ -5328,7 +5340,7 @@ static const struct mv88e6xxx_ops mv88e6
.stu_loadpurge = mv88e6352_g1_stu_loadpurge,
.avb_ops = &mv88e6352_avb_ops,
.ptp_ops = &mv88e6352_ptp_ops,
diff --git a/lede/target/linux/generic/backport-6.1/804-v6.5-11-leds-trigger-netdev-expose-netdev-trigger-modes-in-l.patch b/lede/target/linux/generic/backport-6.1/804-v6.5-11-leds-trigger-netdev-expose-netdev-trigger-modes-in-l.patch
index 70aed850d1..f23504b1d0 100644
--- a/lede/target/linux/generic/backport-6.1/804-v6.5-11-leds-trigger-netdev-expose-netdev-trigger-modes-in-l.patch
+++ b/lede/target/linux/generic/backport-6.1/804-v6.5-11-leds-trigger-netdev-expose-netdev-trigger-modes-in-l.patch
@@ -35,7 +35,7 @@ Signed-off-by: David S. Miller
int current_brightness;
--- a/include/linux/leds.h
+++ b/include/linux/leds.h
-@@ -527,6 +527,16 @@ static inline void *led_get_trigger_data
+@@ -525,6 +525,16 @@ led_trigger_get_brightness(const struct
#endif /* CONFIG_LEDS_TRIGGERS */
diff --git a/lede/target/linux/generic/backport-6.1/805-v6.5-01-leds-trigger-netdev-add-additional-specific-link-spe.patch b/lede/target/linux/generic/backport-6.1/805-v6.5-01-leds-trigger-netdev-add-additional-specific-link-spe.patch
index 1c564b3897..38989a2a63 100644
--- a/lede/target/linux/generic/backport-6.1/805-v6.5-01-leds-trigger-netdev-add-additional-specific-link-spe.patch
+++ b/lede/target/linux/generic/backport-6.1/805-v6.5-01-leds-trigger-netdev-add-additional-specific-link-spe.patch
@@ -230,7 +230,7 @@ Signed-off-by: Jakub Kicinski
/* base state is ON (link present) */
--- a/include/linux/leds.h
+++ b/include/linux/leds.h
-@@ -530,6 +530,9 @@ static inline void *led_get_trigger_data
+@@ -528,6 +528,9 @@ led_trigger_get_brightness(const struct
/* Trigger specific enum */
enum led_trigger_netdev_modes {
TRIGGER_NETDEV_LINK = 0,
diff --git a/lede/target/linux/generic/backport-6.1/805-v6.5-02-leds-trigger-netdev-add-additional-specific-link-dup.patch b/lede/target/linux/generic/backport-6.1/805-v6.5-02-leds-trigger-netdev-add-additional-specific-link-dup.patch
index a5ab461828..9021326991 100644
--- a/lede/target/linux/generic/backport-6.1/805-v6.5-02-leds-trigger-netdev-add-additional-specific-link-dup.patch
+++ b/lede/target/linux/generic/backport-6.1/805-v6.5-02-leds-trigger-netdev-add-additional-specific-link-dup.patch
@@ -127,7 +127,7 @@ Signed-off-by: Jakub Kicinski
/* base state is ON (link present) */
--- a/include/linux/leds.h
+++ b/include/linux/leds.h
-@@ -533,6 +533,8 @@ enum led_trigger_netdev_modes {
+@@ -531,6 +531,8 @@ enum led_trigger_netdev_modes {
TRIGGER_NETDEV_LINK_10,
TRIGGER_NETDEV_LINK_100,
TRIGGER_NETDEV_LINK_1000,
diff --git a/lede/target/linux/generic/backport-6.1/807-v6.5-04-net-dsa-mv88e6xxx-fix-88E6393X-family-internal-phys-.patch b/lede/target/linux/generic/backport-6.1/807-v6.5-04-net-dsa-mv88e6xxx-fix-88E6393X-family-internal-phys-.patch
index cadc70fd73..428b7c9b79 100644
--- a/lede/target/linux/generic/backport-6.1/807-v6.5-04-net-dsa-mv88e6xxx-fix-88E6393X-family-internal-phys-.patch
+++ b/lede/target/linux/generic/backport-6.1/807-v6.5-04-net-dsa-mv88e6xxx-fix-88E6393X-family-internal-phys-.patch
@@ -20,7 +20,7 @@ Signed-off-by: Jakub Kicinski
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
-@@ -5998,7 +5998,8 @@ static const struct mv88e6xxx_info mv88e
+@@ -5999,7 +5999,8 @@ static const struct mv88e6xxx_info mv88e
.name = "Marvell 88E6191X",
.num_databases = 4096,
.num_ports = 11, /* 10 + Z80 */
@@ -30,7 +30,7 @@ Signed-off-by: Jakub Kicinski
.max_vid = 8191,
.max_sid = 63,
.port_base_addr = 0x0,
-@@ -6021,7 +6022,8 @@ static const struct mv88e6xxx_info mv88e
+@@ -6022,7 +6023,8 @@ static const struct mv88e6xxx_info mv88e
.name = "Marvell 88E6193X",
.num_databases = 4096,
.num_ports = 11, /* 10 + Z80 */
@@ -40,7 +40,7 @@ Signed-off-by: Jakub Kicinski
.max_vid = 8191,
.max_sid = 63,
.port_base_addr = 0x0,
-@@ -6340,7 +6342,8 @@ static const struct mv88e6xxx_info mv88e
+@@ -6341,7 +6343,8 @@ static const struct mv88e6xxx_info mv88e
.name = "Marvell 88E6393X",
.num_databases = 4096,
.num_ports = 11, /* 10 + Z80 */
diff --git a/lede/target/linux/generic/backport-6.1/807-v6.5-06-net-dsa-mv88e6xxx-enable-support-for-88E6361-switch.patch b/lede/target/linux/generic/backport-6.1/807-v6.5-06-net-dsa-mv88e6xxx-enable-support-for-88E6361-switch.patch
index 471e6a3903..9a294b59fc 100644
--- a/lede/target/linux/generic/backport-6.1/807-v6.5-06-net-dsa-mv88e6xxx-enable-support-for-88E6361-switch.patch
+++ b/lede/target/linux/generic/backport-6.1/807-v6.5-06-net-dsa-mv88e6xxx-enable-support-for-88E6361-switch.patch
@@ -58,7 +58,7 @@ Signed-off-by: Jakub Kicinski
}
}
-@@ -6285,6 +6291,32 @@ static const struct mv88e6xxx_info mv88e
+@@ -6286,6 +6292,32 @@ static const struct mv88e6xxx_info mv88e
.ptp_support = true,
.ops = &mv88e6352_ops,
},
diff --git a/lede/target/linux/generic/backport-6.1/810-v6.3-i915-Move-list_count-to-list.h-as-list_count_nodes-f.patch b/lede/target/linux/generic/backport-6.1/810-v6.3-i915-Move-list_count-to-list.h-as-list_count_nodes-f.patch
index 5c4206da14..998e453443 100644
--- a/lede/target/linux/generic/backport-6.1/810-v6.3-i915-Move-list_count-to-list.h-as-list_count_nodes-f.patch
+++ b/lede/target/linux/generic/backport-6.1/810-v6.3-i915-Move-list_count-to-list.h-as-list_count_nodes-f.patch
@@ -20,7 +20,7 @@ Signed-off-by: Greg Kroah-Hartman
--- a/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
+++ b/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
-@@ -4157,17 +4157,6 @@ void intel_execlists_show_requests(struc
+@@ -4153,17 +4153,6 @@ void intel_execlists_show_requests(struc
spin_unlock_irqrestore(&sched_engine->lock, flags);
}
@@ -38,7 +38,7 @@ Signed-off-by: Greg Kroah-Hartman
void intel_execlists_dump_active_requests(struct intel_engine_cs *engine,
struct i915_request *hung_rq,
struct drm_printer *m)
-@@ -4178,8 +4167,8 @@ void intel_execlists_dump_active_request
+@@ -4174,8 +4163,8 @@ void intel_execlists_dump_active_request
intel_engine_dump_active_requests(&engine->sched_engine->requests, hung_rq, m);
diff --git a/lede/target/linux/generic/backport-6.1/827-v6.3-0001-of-base-add-of_parse_phandle_with_optional_args.patch b/lede/target/linux/generic/backport-6.1/827-v6.3-0001-of-base-add-of_parse_phandle_with_optional_args.patch
index f568c3f6ce..b4cb96d248 100644
--- a/lede/target/linux/generic/backport-6.1/827-v6.3-0001-of-base-add-of_parse_phandle_with_optional_args.patch
+++ b/lede/target/linux/generic/backport-6.1/827-v6.3-0001-of-base-add-of_parse_phandle_with_optional_args.patch
@@ -24,7 +24,7 @@ Signed-off-by: Greg Kroah-Hartman
--- a/include/linux/of.h
+++ b/include/linux/of.h
-@@ -1009,6 +1009,31 @@ static inline int of_parse_phandle_with_
+@@ -1011,6 +1011,31 @@ static inline int of_parse_phandle_with_
}
/**
diff --git a/lede/target/linux/generic/backport-6.1/828-v6.4-0003-of-Rename-of_modalias_node.patch b/lede/target/linux/generic/backport-6.1/828-v6.4-0003-of-Rename-of_modalias_node.patch
index c11ccc6c3e..69d316b8fa 100644
--- a/lede/target/linux/generic/backport-6.1/828-v6.4-0003-of-Rename-of_modalias_node.patch
+++ b/lede/target/linux/generic/backport-6.1/828-v6.4-0003-of-Rename-of_modalias_node.patch
@@ -161,7 +161,7 @@ Signed-off-by: Greg Kroah-Hartman
goto err_out;
--- a/include/linux/of.h
+++ b/include/linux/of.h
-@@ -362,7 +362,8 @@ extern int of_n_addr_cells(struct device
+@@ -364,7 +364,8 @@ extern int of_n_addr_cells(struct device
extern int of_n_size_cells(struct device_node *np);
extern const struct of_device_id *of_match_node(
const struct of_device_id *matches, const struct device_node *node);
diff --git a/lede/target/linux/generic/backport-6.1/828-v6.4-0004-of-Move-of_modalias-to-module.c.patch b/lede/target/linux/generic/backport-6.1/828-v6.4-0004-of-Move-of_modalias-to-module.c.patch
index 39a84161a2..16baed1187 100644
--- a/lede/target/linux/generic/backport-6.1/828-v6.4-0004-of-Move-of_modalias-to-module.c.patch
+++ b/lede/target/linux/generic/backport-6.1/828-v6.4-0004-of-Move-of_modalias-to-module.c.patch
@@ -135,7 +135,7 @@ Signed-off-by: Greg Kroah-Hartman
+}
--- a/include/linux/of.h
+++ b/include/linux/of.h
-@@ -374,6 +374,9 @@ extern int of_parse_phandle_with_args_ma
+@@ -376,6 +376,9 @@ extern int of_parse_phandle_with_args_ma
extern int of_count_phandle_with_args(const struct device_node *np,
const char *list_name, const char *cells_name);
@@ -145,7 +145,7 @@ Signed-off-by: Greg Kroah-Hartman
/* phandle iterator functions */
extern int of_phandle_iterator_init(struct of_phandle_iterator *it,
const struct device_node *np,
-@@ -731,6 +734,12 @@ static inline int of_count_phandle_with_
+@@ -733,6 +736,12 @@ static inline int of_count_phandle_with_
return -ENOSYS;
}
diff --git a/lede/target/linux/generic/backport-6.1/828-v6.4-0005-of-Move-the-request-module-helper-logic-to-module.c.patch b/lede/target/linux/generic/backport-6.1/828-v6.4-0005-of-Move-the-request-module-helper-logic-to-module.c.patch
index 046c1df561..67dcea0d19 100644
--- a/lede/target/linux/generic/backport-6.1/828-v6.4-0005-of-Move-the-request-module-helper-logic-to-module.c.patch
+++ b/lede/target/linux/generic/backport-6.1/828-v6.4-0005-of-Move-the-request-module-helper-logic-to-module.c.patch
@@ -109,7 +109,7 @@ Signed-off-by: Greg Kroah-Hartman
+EXPORT_SYMBOL_GPL(of_request_module);
--- a/include/linux/of.h
+++ b/include/linux/of.h
-@@ -376,6 +376,7 @@ extern int of_count_phandle_with_args(co
+@@ -378,6 +378,7 @@ extern int of_count_phandle_with_args(co
/* module functions */
extern ssize_t of_modalias(const struct device_node *np, char *str, ssize_t len);
@@ -117,7 +117,7 @@ Signed-off-by: Greg Kroah-Hartman
/* phandle iterator functions */
extern int of_phandle_iterator_init(struct of_phandle_iterator *it,
-@@ -739,6 +740,11 @@ static inline ssize_t of_modalias(const
+@@ -741,6 +742,11 @@ static inline ssize_t of_modalias(const
{
return -ENODEV;
}
diff --git a/lede/target/linux/generic/backport-6.1/830-04-v6.5-cpufreq-qcom-nvmem-use-SoC-ID-s-from-bindings.patch b/lede/target/linux/generic/backport-6.1/830-04-v6.5-cpufreq-qcom-nvmem-use-SoC-ID-s-from-bindings.patch
index e0f10f7642..25a718bd7e 100644
--- a/lede/target/linux/generic/backport-6.1/830-04-v6.5-cpufreq-qcom-nvmem-use-SoC-ID-s-from-bindings.patch
+++ b/lede/target/linux/generic/backport-6.1/830-04-v6.5-cpufreq-qcom-nvmem-use-SoC-ID-s-from-bindings.patch
@@ -32,7 +32,7 @@ Link: https://lore.kernel.org/r/20230526204802.3081168-4-robimarko@gmail.com
enum _msm8996_version {
MSM8996_V3,
-@@ -153,12 +148,12 @@ static enum _msm8996_version qcom_cpufre
+@@ -157,12 +152,12 @@ static enum _msm8996_version qcom_cpufre
msm_id++;
switch ((enum _msm_id)*msm_id) {
diff --git a/lede/target/linux/generic/backport-6.1/830-05-v6.5-cpufreq-qcom-nvmem-use-helper-to-get-SMEM-SoC-ID.patch b/lede/target/linux/generic/backport-6.1/830-05-v6.5-cpufreq-qcom-nvmem-use-helper-to-get-SMEM-SoC-ID.patch
index 93e776f62c..49d222662c 100644
--- a/lede/target/linux/generic/backport-6.1/830-05-v6.5-cpufreq-qcom-nvmem-use-helper-to-get-SMEM-SoC-ID.patch
+++ b/lede/target/linux/generic/backport-6.1/830-05-v6.5-cpufreq-qcom-nvmem-use-helper-to-get-SMEM-SoC-ID.patch
@@ -36,7 +36,7 @@ Link: https://lore.kernel.org/r/20230526204802.3081168-5-robimarko@gmail.com
struct qcom_cpufreq_drv;
struct qcom_cpufreq_match_data {
-@@ -134,60 +126,32 @@ static void get_krait_bin_format_b(struc
+@@ -138,60 +130,32 @@ static void get_krait_bin_format_b(struc
dev_dbg(cpu_dev, "PVS version: %d\n", *pvs_ver);
}
diff --git a/lede/target/linux/generic/backport-6.1/834-v6.8-leds-trigger-netdev-Extend-speeds-up-to-10G.patch b/lede/target/linux/generic/backport-6.1/834-v6.8-leds-trigger-netdev-Extend-speeds-up-to-10G.patch
index 1c8e014a1a..9d5a928f5f 100644
--- a/lede/target/linux/generic/backport-6.1/834-v6.8-leds-trigger-netdev-Extend-speeds-up-to-10G.patch
+++ b/lede/target/linux/generic/backport-6.1/834-v6.8-leds-trigger-netdev-Extend-speeds-up-to-10G.patch
@@ -99,7 +99,7 @@ Signed-off-by: Lee Jones
interval = jiffies_to_msecs(
--- a/include/linux/leds.h
+++ b/include/linux/leds.h
-@@ -533,6 +533,9 @@ enum led_trigger_netdev_modes {
+@@ -531,6 +531,9 @@ enum led_trigger_netdev_modes {
TRIGGER_NETDEV_LINK_10,
TRIGGER_NETDEV_LINK_100,
TRIGGER_NETDEV_LINK_1000,
diff --git a/lede/target/linux/generic/backport-6.1/851-v6.2-bus-mhi-host-pci_generic-Add-HP-variant-of-T99W175.patch b/lede/target/linux/generic/backport-6.1/851-v6.2-bus-mhi-host-pci_generic-Add-HP-variant-of-T99W175.patch
index 0dabc48bfa..6f9fc71a71 100644
--- a/lede/target/linux/generic/backport-6.1/851-v6.2-bus-mhi-host-pci_generic-Add-HP-variant-of-T99W175.patch
+++ b/lede/target/linux/generic/backport-6.1/851-v6.2-bus-mhi-host-pci_generic-Add-HP-variant-of-T99W175.patch
@@ -22,7 +22,7 @@ Signed-off-by: Manivannan Sadhasivam
--- a/drivers/bus/mhi/host/pci_generic.c
+++ b/drivers/bus/mhi/host/pci_generic.c
-@@ -596,6 +596,9 @@ static const struct pci_device_id mhi_pc
+@@ -599,6 +599,9 @@ static const struct pci_device_id mhi_pc
/* MV32-WB (Cinterion) */
{ PCI_DEVICE(0x1269, 0x00bb),
.driver_data = (kernel_ulong_t) &mhi_mv32_info },
diff --git a/lede/target/linux/generic/backport-6.1/852-v6.2-bus-mhi-host-pci_generic-Add-definition-for-some-VID.patch b/lede/target/linux/generic/backport-6.1/852-v6.2-bus-mhi-host-pci_generic-Add-definition-for-some-VID.patch
index fbf6c8a501..12419fbe39 100644
--- a/lede/target/linux/generic/backport-6.1/852-v6.2-bus-mhi-host-pci_generic-Add-definition-for-some-VID.patch
+++ b/lede/target/linux/generic/backport-6.1/852-v6.2-bus-mhi-host-pci_generic-Add-definition-for-some-VID.patch
@@ -28,7 +28,7 @@ Signed-off-by: Manivannan Sadhasivam
/**
* struct mhi_pci_dev_info - MHI PCI device specific information
* @config: MHI controller configuration
-@@ -557,11 +561,11 @@ static const struct pci_device_id mhi_pc
+@@ -560,11 +564,11 @@ static const struct pci_device_id mhi_pc
.driver_data = (kernel_ulong_t) &mhi_telit_fn990_info },
{ PCI_DEVICE(PCI_VENDOR_ID_QCOM, 0x0308),
.driver_data = (kernel_ulong_t) &mhi_qcom_sdx65_info },
@@ -43,7 +43,7 @@ Signed-off-by: Manivannan Sadhasivam
.driver_data = (kernel_ulong_t) &mhi_quectel_em1xx_info },
/* T99W175 (sdx55), Both for eSIM and Non-eSIM */
{ PCI_DEVICE(PCI_VENDOR_ID_FOXCONN, 0xe0ab),
-@@ -585,16 +589,16 @@ static const struct pci_device_id mhi_pc
+@@ -588,16 +592,16 @@ static const struct pci_device_id mhi_pc
{ PCI_DEVICE(PCI_VENDOR_ID_FOXCONN, 0xe0d9),
.driver_data = (kernel_ulong_t) &mhi_foxconn_sdx65_info },
/* MV31-W (Cinterion) */
diff --git a/lede/target/linux/generic/backport-6.1/853-v6.2-bus-mhi-host-pci_generic-Drop-redundant-pci_enable_p.patch b/lede/target/linux/generic/backport-6.1/853-v6.2-bus-mhi-host-pci_generic-Drop-redundant-pci_enable_p.patch
index 2f5a0ac11d..943227d2a8 100644
--- a/lede/target/linux/generic/backport-6.1/853-v6.2-bus-mhi-host-pci_generic-Drop-redundant-pci_enable_p.patch
+++ b/lede/target/linux/generic/backport-6.1/853-v6.2-bus-mhi-host-pci_generic-Drop-redundant-pci_enable_p.patch
@@ -36,7 +36,7 @@ Signed-off-by: Manivannan Sadhasivam
#include
#include
#include
-@@ -901,11 +900,9 @@ static int mhi_pci_probe(struct pci_dev
+@@ -904,11 +903,9 @@ static int mhi_pci_probe(struct pci_dev
mhi_pdev->pci_state = pci_store_saved_state(pdev);
pci_load_saved_state(pdev, NULL);
@@ -49,7 +49,7 @@ Signed-off-by: Manivannan Sadhasivam
/* MHI bus does not power up the controller by default */
err = mhi_prepare_for_power_up(mhi_cntrl);
-@@ -939,8 +936,6 @@ err_unprepare:
+@@ -942,8 +939,6 @@ err_unprepare:
mhi_unprepare_after_power_down(mhi_cntrl);
err_unregister:
mhi_unregister_controller(mhi_cntrl);
@@ -58,7 +58,7 @@ Signed-off-by: Manivannan Sadhasivam
return err;
}
-@@ -963,7 +958,6 @@ static void mhi_pci_remove(struct pci_de
+@@ -966,7 +961,6 @@ static void mhi_pci_remove(struct pci_de
pm_runtime_get_noresume(&pdev->dev);
mhi_unregister_controller(mhi_cntrl);
diff --git a/lede/target/linux/generic/backport-6.1/854-v6.4-bus-mhi-pci_generic-Add-Foxconn-T99W510.patch b/lede/target/linux/generic/backport-6.1/854-v6.4-bus-mhi-pci_generic-Add-Foxconn-T99W510.patch
index f757ca28e5..8ec6f3e76f 100644
--- a/lede/target/linux/generic/backport-6.1/854-v6.4-bus-mhi-pci_generic-Add-Foxconn-T99W510.patch
+++ b/lede/target/linux/generic/backport-6.1/854-v6.4-bus-mhi-pci_generic-Add-Foxconn-T99W510.patch
@@ -31,7 +31,7 @@ Signed-off-by: Manivannan Sadhasivam
static const struct mhi_pci_dev_info mhi_foxconn_sdx55_info = {
.name = "foxconn-sdx55",
.fw = "qcom/sdx55m/sbl1.mbn",
-@@ -587,6 +596,15 @@ static const struct pci_device_id mhi_pc
+@@ -590,6 +599,15 @@ static const struct pci_device_id mhi_pc
/* T99W373 (sdx62) */
{ PCI_DEVICE(PCI_VENDOR_ID_FOXCONN, 0xe0d9),
.driver_data = (kernel_ulong_t) &mhi_foxconn_sdx65_info },
diff --git a/lede/target/linux/generic/backport-6.1/856-v6.6-bus-mhi-host-pci_generic-Add-support-for-Quectel-EM1.patch b/lede/target/linux/generic/backport-6.1/856-v6.6-bus-mhi-host-pci_generic-Add-support-for-Quectel-EM1.patch
index 5c15eec712..2e01d4fd65 100644
--- a/lede/target/linux/generic/backport-6.1/856-v6.6-bus-mhi-host-pci_generic-Add-support-for-Quectel-EM1.patch
+++ b/lede/target/linux/generic/backport-6.1/856-v6.6-bus-mhi-host-pci_generic-Add-support-for-Quectel-EM1.patch
@@ -23,7 +23,7 @@ Signed-off-by: Manivannan Sadhasivam
--- a/drivers/bus/mhi/host/pci_generic.c
+++ b/drivers/bus/mhi/host/pci_generic.c
-@@ -591,6 +591,8 @@ static const struct pci_device_id mhi_pc
+@@ -594,6 +594,8 @@ static const struct pci_device_id mhi_pc
.driver_data = (kernel_ulong_t) &mhi_quectel_em1xx_info },
{ PCI_DEVICE(PCI_VENDOR_ID_QUECTEL, 0x1002), /* EM160R-GL (sdx24) */
.driver_data = (kernel_ulong_t) &mhi_quectel_em1xx_info },
diff --git a/lede/target/linux/generic/backport-6.1/857-v6.6-bus-mhi-host-pci_generic-Add-support-for-Quectel-RM5.patch b/lede/target/linux/generic/backport-6.1/857-v6.6-bus-mhi-host-pci_generic-Add-support-for-Quectel-RM5.patch
index 5922207e29..f547eb972f 100644
--- a/lede/target/linux/generic/backport-6.1/857-v6.6-bus-mhi-host-pci_generic-Add-support-for-Quectel-RM5.patch
+++ b/lede/target/linux/generic/backport-6.1/857-v6.6-bus-mhi-host-pci_generic-Add-support-for-Quectel-RM5.patch
@@ -37,7 +37,7 @@ Signed-off-by: Manivannan Sadhasivam
static const struct mhi_channel_config mhi_foxconn_sdx55_channels[] = {
MHI_CHANNEL_CONFIG_UL(0, "LOOPBACK", 32, 0),
MHI_CHANNEL_CONFIG_DL(1, "LOOPBACK", 32, 0),
-@@ -591,6 +601,9 @@ static const struct pci_device_id mhi_pc
+@@ -594,6 +604,9 @@ static const struct pci_device_id mhi_pc
.driver_data = (kernel_ulong_t) &mhi_quectel_em1xx_info },
{ PCI_DEVICE(PCI_VENDOR_ID_QUECTEL, 0x1002), /* EM160R-GL (sdx24) */
.driver_data = (kernel_ulong_t) &mhi_quectel_em1xx_info },
diff --git a/lede/target/linux/generic/backport-6.1/858-v6.6-bus-mhi-host-pci_generic-Add-support-for-Dell-DW5932.patch b/lede/target/linux/generic/backport-6.1/858-v6.6-bus-mhi-host-pci_generic-Add-support-for-Dell-DW5932.patch
index bb7b3c3ffc..ba0e156a8c 100644
--- a/lede/target/linux/generic/backport-6.1/858-v6.6-bus-mhi-host-pci_generic-Add-support-for-Dell-DW5932.patch
+++ b/lede/target/linux/generic/backport-6.1/858-v6.6-bus-mhi-host-pci_generic-Add-support-for-Dell-DW5932.patch
@@ -19,7 +19,7 @@ Signed-off-by: Manivannan Sadhasivam
--- a/drivers/bus/mhi/host/pci_generic.c
+++ b/drivers/bus/mhi/host/pci_generic.c
-@@ -638,6 +638,12 @@ static const struct pci_device_id mhi_pc
+@@ -641,6 +641,12 @@ static const struct pci_device_id mhi_pc
/* T99W510 (sdx24), variant 3 */
{ PCI_DEVICE(PCI_VENDOR_ID_FOXCONN, 0xe0f2),
.driver_data = (kernel_ulong_t) &mhi_foxconn_sdx24_info },
diff --git a/lede/target/linux/generic/backport-6.1/859-v6.6-bus-mhi-host-pci_generic-Add-support-for-Quectel-RM5.patch b/lede/target/linux/generic/backport-6.1/859-v6.6-bus-mhi-host-pci_generic-Add-support-for-Quectel-RM5.patch
index c0dfe01e32..a09ae6fa47 100644
--- a/lede/target/linux/generic/backport-6.1/859-v6.6-bus-mhi-host-pci_generic-Add-support-for-Quectel-RM5.patch
+++ b/lede/target/linux/generic/backport-6.1/859-v6.6-bus-mhi-host-pci_generic-Add-support-for-Quectel-RM5.patch
@@ -24,7 +24,7 @@ Signed-off-by: Manivannan Sadhasivam
--- a/drivers/bus/mhi/host/pci_generic.c
+++ b/drivers/bus/mhi/host/pci_generic.c
-@@ -604,6 +604,9 @@ static const struct pci_device_id mhi_pc
+@@ -607,6 +607,9 @@ static const struct pci_device_id mhi_pc
/* RM520N-GL (sdx6x), eSIM */
{ PCI_DEVICE(PCI_VENDOR_ID_QUECTEL, 0x1004),
.driver_data = (kernel_ulong_t) &mhi_quectel_rm5xx_info },
diff --git a/lede/target/linux/generic/backport-6.1/894-v6.8-net-ethtool-implement-ethtool_puts.patch b/lede/target/linux/generic/backport-6.1/894-v6.8-net-ethtool-implement-ethtool_puts.patch
index 5094a6d774..379a4fc7c0 100644
--- a/lede/target/linux/generic/backport-6.1/894-v6.8-net-ethtool-implement-ethtool_puts.patch
+++ b/lede/target/linux/generic/backport-6.1/894-v6.8-net-ethtool-implement-ethtool_puts.patch
@@ -123,7 +123,7 @@ Signed-off-by: Justin Stitt
#endif /* _LINUX_ETHTOOL_H */
--- a/net/ethtool/ioctl.c
+++ b/net/ethtool/ioctl.c
-@@ -1974,6 +1974,13 @@ __printf(2, 3) void ethtool_sprintf(u8 *
+@@ -1977,6 +1977,13 @@ __printf(2, 3) void ethtool_sprintf(u8 *
}
EXPORT_SYMBOL(ethtool_sprintf);
diff --git a/lede/target/linux/generic/hack-6.1/230-openwrt_lzma_options.patch b/lede/target/linux/generic/hack-6.1/230-openwrt_lzma_options.patch
index 55530c5c7e..ddf7f5e0c0 100644
--- a/lede/target/linux/generic/hack-6.1/230-openwrt_lzma_options.patch
+++ b/lede/target/linux/generic/hack-6.1/230-openwrt_lzma_options.patch
@@ -23,7 +23,7 @@ Signed-off-by: Imre Kaloz
{ {0x02, 0x21}, "lz4", unlz4 },
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
-@@ -443,10 +443,10 @@ quiet_cmd_bzip2_with_size = BZIP2 $@
+@@ -447,10 +447,10 @@ quiet_cmd_bzip2_with_size = BZIP2 $@
# ---------------------------------------------------------------------------
quiet_cmd_lzma = LZMA $@
diff --git a/lede/target/linux/generic/hack-6.1/253-ksmbd-config.patch b/lede/target/linux/generic/hack-6.1/253-ksmbd-config.patch
index a57c914180..c968daf081 100644
--- a/lede/target/linux/generic/hack-6.1/253-ksmbd-config.patch
+++ b/lede/target/linux/generic/hack-6.1/253-ksmbd-config.patch
@@ -10,7 +10,7 @@ Subject: [PATCH] Kconfig: add tristate for OID and ASNI string
--- a/init/Kconfig
+++ b/init/Kconfig
-@@ -2013,7 +2013,7 @@ config PADATA
+@@ -2017,7 +2017,7 @@ config PADATA
bool
config ASN1
diff --git a/lede/target/linux/generic/hack-6.1/780-usb-net-MeigLink_modem_support.patch b/lede/target/linux/generic/hack-6.1/780-usb-net-MeigLink_modem_support.patch
index 2729a0ec38..6e318a6e9a 100644
--- a/lede/target/linux/generic/hack-6.1/780-usb-net-MeigLink_modem_support.patch
+++ b/lede/target/linux/generic/hack-6.1/780-usb-net-MeigLink_modem_support.patch
@@ -10,7 +10,7 @@ Subject: [PATCH] net/usb/qmi_wwan: add MeigLink modem support
--- a/drivers/net/usb/qmi_wwan.c
+++ b/drivers/net/usb/qmi_wwan.c
-@@ -1082,12 +1082,18 @@ static const struct usb_device_id produc
+@@ -1083,12 +1083,18 @@ static const struct usb_device_id produc
USB_DEVICE_AND_INTERFACE_INFO(0x03f0, 0x581d, USB_CLASS_VENDOR_SPEC, 1, 7),
.driver_info = (unsigned long)&qmi_wwan_info,
},
@@ -43,7 +43,7 @@ Subject: [PATCH] net/usb/qmi_wwan: add MeigLink modem support
#define QUECTEL_VENDOR_ID 0x2c7c
/* These Quectel products use Quectel's vendor ID */
-@@ -1156,6 +1161,11 @@ static const struct usb_device_id option
+@@ -1158,6 +1163,11 @@ static const struct usb_device_id option
{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0x0023)}, /* ONYX 3G device */
{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9000), /* SIMCom SIM5218 */
.driver_info = NCTRL(0) | NCTRL(1) | NCTRL(2) | NCTRL(3) | RSVD(4) },
@@ -55,7 +55,7 @@ Subject: [PATCH] net/usb/qmi_wwan: add MeigLink modem support
/* Quectel products using Qualcomm vendor ID */
{ USB_DEVICE(QUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_UC15)},
{ USB_DEVICE(QUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_UC20),
-@@ -1197,6 +1207,11 @@ static const struct usb_device_id option
+@@ -1199,6 +1209,11 @@ static const struct usb_device_id option
.driver_info = ZLP },
{ USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96),
.driver_info = RSVD(4) },
diff --git a/lede/target/linux/generic/hack-6.1/902-debloat_proc.patch b/lede/target/linux/generic/hack-6.1/902-debloat_proc.patch
index ee3caa9f47..2bc86fa1e2 100644
--- a/lede/target/linux/generic/hack-6.1/902-debloat_proc.patch
+++ b/lede/target/linux/generic/hack-6.1/902-debloat_proc.patch
@@ -29,7 +29,7 @@ Signed-off-by: Felix Fietkau
--- a/fs/locks.c
+++ b/fs/locks.c
-@@ -2909,6 +2909,8 @@ static const struct seq_operations locks
+@@ -2907,6 +2907,8 @@ static const struct seq_operations locks
static int __init proc_locks_init(void)
{
@@ -235,7 +235,7 @@ Signed-off-by: Felix Fietkau
if (!pe)
--- a/mm/vmalloc.c
+++ b/mm/vmalloc.c
-@@ -4222,6 +4222,8 @@ static const struct seq_operations vmall
+@@ -4215,6 +4215,8 @@ static const struct seq_operations vmall
static int __init proc_vmalloc_init(void)
{
@@ -341,7 +341,7 @@ Signed-off-by: Felix Fietkau
--- a/net/ipv4/fib_trie.c
+++ b/net/ipv4/fib_trie.c
-@@ -3036,11 +3036,13 @@ static const struct seq_operations fib_r
+@@ -3037,11 +3037,13 @@ static const struct seq_operations fib_r
int __net_init fib_proc_init(struct net *net)
{
@@ -357,7 +357,7 @@ Signed-off-by: Felix Fietkau
fib_triestat_seq_show, NULL))
goto out2;
-@@ -3051,17 +3053,21 @@ int __net_init fib_proc_init(struct net
+@@ -3052,17 +3054,21 @@ int __net_init fib_proc_init(struct net
return 0;
out3:
diff --git a/lede/target/linux/generic/hack-6.1/904-debloat_dma_buf.patch b/lede/target/linux/generic/hack-6.1/904-debloat_dma_buf.patch
index 0a73146d02..8b6bd6a786 100644
--- a/lede/target/linux/generic/hack-6.1/904-debloat_dma_buf.patch
+++ b/lede/target/linux/generic/hack-6.1/904-debloat_dma_buf.patch
@@ -73,7 +73,7 @@ Signed-off-by: Felix Fietkau
+MODULE_LICENSE("GPL");
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
-@@ -4366,6 +4366,7 @@ int wake_up_state(struct task_struct *p,
+@@ -4363,6 +4363,7 @@ int wake_up_state(struct task_struct *p,
{
return try_to_wake_up(p, state, 0);
}
diff --git a/lede/target/linux/generic/hack-6.1/911-kobject_add_broadcast_uevent.patch b/lede/target/linux/generic/hack-6.1/911-kobject_add_broadcast_uevent.patch
index 9854585d25..c828ecd450 100644
--- a/lede/target/linux/generic/hack-6.1/911-kobject_add_broadcast_uevent.patch
+++ b/lede/target/linux/generic/hack-6.1/911-kobject_add_broadcast_uevent.patch
@@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau
#endif /* _KOBJECT_H_ */
--- a/lib/kobject_uevent.c
+++ b/lib/kobject_uevent.c
-@@ -691,6 +691,43 @@ int add_uevent_var(struct kobj_uevent_en
+@@ -706,6 +706,43 @@ int add_uevent_var(struct kobj_uevent_en
EXPORT_SYMBOL_GPL(add_uevent_var);
#if defined(CONFIG_NET)
diff --git a/lede/target/linux/generic/hack-6.1/930-Revert-Revert-Revert-driver-core-Set-fw_devlink-on-b.patch b/lede/target/linux/generic/hack-6.1/930-Revert-Revert-Revert-driver-core-Set-fw_devlink-on-b.patch
index f2ae028aa1..3476aa6edb 100644
--- a/lede/target/linux/generic/hack-6.1/930-Revert-Revert-Revert-driver-core-Set-fw_devlink-on-b.patch
+++ b/lede/target/linux/generic/hack-6.1/930-Revert-Revert-Revert-driver-core-Set-fw_devlink-on-b.patch
@@ -19,7 +19,7 @@ Signed-off-by: Rafał Miłecki
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
-@@ -1717,7 +1717,7 @@ static void device_links_purge(struct de
+@@ -1718,7 +1718,7 @@ static void device_links_purge(struct de
#define FW_DEVLINK_FLAGS_RPM (FW_DEVLINK_FLAGS_ON | \
DL_FLAG_PM_RUNTIME)
diff --git a/lede/target/linux/generic/hack-6.1/952-add-net-conntrack-events-support-multiple-registrant.patch b/lede/target/linux/generic/hack-6.1/952-add-net-conntrack-events-support-multiple-registrant.patch
index b58aed506e..45797cb8e1 100644
--- a/lede/target/linux/generic/hack-6.1/952-add-net-conntrack-events-support-multiple-registrant.patch
+++ b/lede/target/linux/generic/hack-6.1/952-add-net-conntrack-events-support-multiple-registrant.patch
@@ -319,7 +319,7 @@ Signed-off-by: Zhi Chen
struct nf_conn *ct = item->ct;
struct sk_buff *skb;
unsigned int type;
-@@ -3754,11 +3761,17 @@ static int ctnetlink_stat_exp_cpu(struct
+@@ -3755,11 +3762,17 @@ static int ctnetlink_stat_exp_cpu(struct
}
#ifdef CONFIG_NF_CONNTRACK_EVENTS
@@ -337,7 +337,7 @@ Signed-off-by: Zhi Chen
static const struct nfnl_callback ctnl_cb[IPCTNL_MSG_MAX] = {
[IPCTNL_MSG_CT_NEW] = {
-@@ -3857,8 +3870,12 @@ static int __net_init ctnetlink_net_init
+@@ -3858,8 +3871,12 @@ static int __net_init ctnetlink_net_init
static void ctnetlink_net_pre_exit(struct net *net)
{
#ifdef CONFIG_NF_CONNTRACK_EVENTS
diff --git a/lede/target/linux/generic/pending-6.1/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch b/lede/target/linux/generic/pending-6.1/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch
index edee0e46a5..8fea984a33 100644
--- a/lede/target/linux/generic/pending-6.1/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch
+++ b/lede/target/linux/generic/pending-6.1/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch
@@ -71,7 +71,7 @@ Signed-off-by: Tobias Wolf
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
-@@ -7903,7 +7903,7 @@ static void __init alloc_node_mem_map(st
+@@ -7910,7 +7910,7 @@ static void __init alloc_node_mem_map(st
if (pgdat == NODE_DATA(0)) {
mem_map = NODE_DATA(0)->node_mem_map;
if (page_to_pfn(mem_map) != pgdat->node_start_pfn)
diff --git a/lede/target/linux/generic/pending-6.1/630-packet_socket_type.patch b/lede/target/linux/generic/pending-6.1/630-packet_socket_type.patch
index 359d002b0e..5553fba94b 100644
--- a/lede/target/linux/generic/pending-6.1/630-packet_socket_type.patch
+++ b/lede/target/linux/generic/pending-6.1/630-packet_socket_type.patch
@@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau
#define PACKET_FANOUT_LB 1
--- a/net/packet/af_packet.c
+++ b/net/packet/af_packet.c
-@@ -1866,6 +1866,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1927,6 +1927,7 @@ static int packet_rcv_spkt(struct sk_buf
{
struct sock *sk;
struct sockaddr_pkt *spkt;
@@ -38,7 +38,7 @@ Signed-off-by: Felix Fietkau
/*
* When we registered the protocol we saved the socket in the data
-@@ -1873,6 +1874,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1934,6 +1935,7 @@ static int packet_rcv_spkt(struct sk_buf
*/
sk = pt->af_packet_priv;
@@ -46,7 +46,7 @@ Signed-off-by: Felix Fietkau
/*
* Yank back the headers [hope the device set this
-@@ -1885,7 +1887,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1946,7 +1948,7 @@ static int packet_rcv_spkt(struct sk_buf
* so that this procedure is noop.
*/
@@ -55,7 +55,7 @@ Signed-off-by: Felix Fietkau
goto out;
if (!net_eq(dev_net(dev), sock_net(sk)))
-@@ -2131,12 +2133,12 @@ static int packet_rcv(struct sk_buff *sk
+@@ -2192,12 +2194,12 @@ static int packet_rcv(struct sk_buff *sk
unsigned int snaplen, res;
bool is_drop_n_account = false;
@@ -71,7 +71,7 @@ Signed-off-by: Felix Fietkau
if (!net_eq(dev_net(dev), sock_net(sk)))
goto drop;
-@@ -2263,12 +2265,12 @@ static int tpacket_rcv(struct sk_buff *s
+@@ -2324,12 +2326,12 @@ static int tpacket_rcv(struct sk_buff *s
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h2)) != 32);
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h3)) != 48);
@@ -87,7 +87,7 @@ Signed-off-by: Felix Fietkau
if (!net_eq(dev_net(dev), sock_net(sk)))
goto drop;
-@@ -3377,6 +3379,7 @@ static int packet_create(struct net *net
+@@ -3443,6 +3445,7 @@ static int packet_create(struct net *net
mutex_init(&po->pg_vec_lock);
po->rollover = NULL;
po->prot_hook.func = packet_rcv;
@@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau
if (sock->type == SOCK_PACKET)
po->prot_hook.func = packet_rcv_spkt;
-@@ -4014,6 +4017,16 @@ packet_setsockopt(struct socket *sock, i
+@@ -4096,6 +4099,16 @@ packet_setsockopt(struct socket *sock, i
WRITE_ONCE(po->xmit, val ? packet_direct_xmit : dev_queue_xmit);
return 0;
}
@@ -112,7 +112,7 @@ Signed-off-by: Felix Fietkau
default:
return -ENOPROTOOPT;
}
-@@ -4070,6 +4083,13 @@ static int packet_getsockopt(struct sock
+@@ -4152,6 +4165,13 @@ static int packet_getsockopt(struct sock
case PACKET_VNET_HDR:
val = po->has_vnet_hdr;
break;
diff --git a/lede/target/linux/generic/pending-6.1/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch b/lede/target/linux/generic/pending-6.1/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
index b799c6fc9c..a2f88d79e6 100644
--- a/lede/target/linux/generic/pending-6.1/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
+++ b/lede/target/linux/generic/pending-6.1/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
@@ -338,7 +338,7 @@ Signed-off-by: Steven Barth
if (iptunnel_handle_offloads(skb, SKB_GSO_IPXIP6))
return -1;
-@@ -1545,6 +1706,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
+@@ -1546,6 +1707,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
t->parms.link = p->link;
t->parms.proto = p->proto;
t->parms.fwmark = p->fwmark;
@@ -353,7 +353,7 @@ Signed-off-by: Steven Barth
dst_cache_reset(&t->dst_cache);
ip6_tnl_link_config(t);
}
-@@ -1579,6 +1748,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
+@@ -1580,6 +1749,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
p->flowinfo = u->flowinfo;
p->link = u->link;
p->proto = u->proto;
@@ -361,7 +361,7 @@ Signed-off-by: Steven Barth
memcpy(p->name, u->name, sizeof(u->name));
}
-@@ -1965,6 +2135,15 @@ static int ip6_tnl_validate(struct nlatt
+@@ -1967,6 +2137,15 @@ static int ip6_tnl_validate(struct nlatt
return 0;
}
@@ -377,7 +377,7 @@ Signed-off-by: Steven Barth
static void ip6_tnl_netlink_parms(struct nlattr *data[],
struct __ip6_tnl_parm *parms)
{
-@@ -2002,6 +2181,46 @@ static void ip6_tnl_netlink_parms(struct
+@@ -2004,6 +2183,46 @@ static void ip6_tnl_netlink_parms(struct
if (data[IFLA_IPTUN_FWMARK])
parms->fwmark = nla_get_u32(data[IFLA_IPTUN_FWMARK]);
@@ -424,7 +424,7 @@ Signed-off-by: Steven Barth
}
static int ip6_tnl_newlink(struct net *src_net, struct net_device *dev,
-@@ -2085,6 +2304,12 @@ static void ip6_tnl_dellink(struct net_d
+@@ -2087,6 +2306,12 @@ static void ip6_tnl_dellink(struct net_d
static size_t ip6_tnl_get_size(const struct net_device *dev)
{
@@ -437,7 +437,7 @@ Signed-off-by: Steven Barth
return
/* IFLA_IPTUN_LINK */
nla_total_size(4) +
-@@ -2114,6 +2339,24 @@ static size_t ip6_tnl_get_size(const str
+@@ -2116,6 +2341,24 @@ static size_t ip6_tnl_get_size(const str
nla_total_size(0) +
/* IFLA_IPTUN_FWMARK */
nla_total_size(4) +
@@ -462,7 +462,7 @@ Signed-off-by: Steven Barth
0;
}
-@@ -2121,6 +2364,9 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -2123,6 +2366,9 @@ static int ip6_tnl_fill_info(struct sk_b
{
struct ip6_tnl *tunnel = netdev_priv(dev);
struct __ip6_tnl_parm *parm = &tunnel->parms;
@@ -472,7 +472,7 @@ Signed-off-by: Steven Barth
if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) ||
nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) ||
-@@ -2130,9 +2376,27 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -2132,9 +2378,27 @@ static int ip6_tnl_fill_info(struct sk_b
nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) ||
nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) ||
nla_put_u8(skb, IFLA_IPTUN_PROTO, parm->proto) ||
@@ -501,7 +501,7 @@ Signed-off-by: Steven Barth
if (nla_put_u16(skb, IFLA_IPTUN_ENCAP_TYPE, tunnel->encap.type) ||
nla_put_be16(skb, IFLA_IPTUN_ENCAP_SPORT, tunnel->encap.sport) ||
nla_put_be16(skb, IFLA_IPTUN_ENCAP_DPORT, tunnel->encap.dport) ||
-@@ -2172,6 +2436,7 @@ static const struct nla_policy ip6_tnl_p
+@@ -2174,6 +2438,7 @@ static const struct nla_policy ip6_tnl_p
[IFLA_IPTUN_ENCAP_DPORT] = { .type = NLA_U16 },
[IFLA_IPTUN_COLLECT_METADATA] = { .type = NLA_FLAG },
[IFLA_IPTUN_FWMARK] = { .type = NLA_U32 },
diff --git a/lede/target/linux/generic/pending-6.1/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch b/lede/target/linux/generic/pending-6.1/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
index 43d49f07d1..1d16b81543 100644
--- a/lede/target/linux/generic/pending-6.1/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
+++ b/lede/target/linux/generic/pending-6.1/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
@@ -66,7 +66,7 @@ Signed-off-by: Jonas Gorski
static void rt_fibinfo_free(struct rtable __rcu **rtp)
--- a/net/ipv4/fib_trie.c
+++ b/net/ipv4/fib_trie.c
-@@ -2783,6 +2783,7 @@ static const char *const rtn_type_names[
+@@ -2784,6 +2784,7 @@ static const char *const rtn_type_names[
[RTN_THROW] = "THROW",
[RTN_NAT] = "NAT",
[RTN_XRESOLVE] = "XRESOLVE",
diff --git a/lede/target/linux/generic/pending-6.1/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch b/lede/target/linux/generic/pending-6.1/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch
index 916b6bc6a0..99ea09ae8f 100644
--- a/lede/target/linux/generic/pending-6.1/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch
+++ b/lede/target/linux/generic/pending-6.1/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch
@@ -18,7 +18,7 @@ Signed-off-by: Felix Fietkau
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
-@@ -7958,7 +7958,7 @@ static int nft_register_flowtable_net_ho
+@@ -8012,7 +8012,7 @@ static int nft_register_flowtable_net_ho
err = flowtable->data.type->setup(&flowtable->data,
hook->ops.dev,
FLOW_BLOCK_BIND);
diff --git a/lede/target/linux/generic/pending-6.1/768-net-dsa-mv88e6xxx-Request-assisted-learning-on-CPU-port.patch b/lede/target/linux/generic/pending-6.1/768-net-dsa-mv88e6xxx-Request-assisted-learning-on-CPU-port.patch
index 13a4d190ee..6fa33ee1a8 100644
--- a/lede/target/linux/generic/pending-6.1/768-net-dsa-mv88e6xxx-Request-assisted-learning-on-CPU-port.patch
+++ b/lede/target/linux/generic/pending-6.1/768-net-dsa-mv88e6xxx-Request-assisted-learning-on-CPU-port.patch
@@ -17,7 +17,7 @@ Signed-off-by: Tobias Waldekranz
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
-@@ -7079,6 +7079,7 @@ static int mv88e6xxx_register_switch(str
+@@ -7080,6 +7080,7 @@ static int mv88e6xxx_register_switch(str
ds->ops = &mv88e6xxx_switch_ops;
ds->ageing_time_min = chip->info->age_time_coeff;
ds->ageing_time_max = chip->info->age_time_coeff * U8_MAX;
diff --git a/lede/target/linux/generic/pending-6.1/774-net-dsa-b53-mmap-allow-passing-a-chip-ID.patch b/lede/target/linux/generic/pending-6.1/774-net-dsa-b53-mmap-allow-passing-a-chip-ID.patch
index de237374af..bb632b5eff 100644
--- a/lede/target/linux/generic/pending-6.1/774-net-dsa-b53-mmap-allow-passing-a-chip-ID.patch
+++ b/lede/target/linux/generic/pending-6.1/774-net-dsa-b53-mmap-allow-passing-a-chip-ID.patch
@@ -100,7 +100,7 @@ Signed-off-by: Álvaro Fernández Rojas
--- a/drivers/net/dsa/b53/b53_common.c
+++ b/drivers/net/dsa/b53/b53_common.c
-@@ -2466,6 +2466,19 @@ static const struct b53_chip_data b53_sw
+@@ -2469,6 +2469,19 @@ static const struct b53_chip_data b53_sw
.jumbo_size_reg = B53_JUMBO_MAX_SIZE_63XX,
},
{
diff --git a/lede/target/linux/generic/pending-6.1/777-net-dsa-b53-mdio-add-support-for-BCM53134.patch b/lede/target/linux/generic/pending-6.1/777-net-dsa-b53-mdio-add-support-for-BCM53134.patch
index f0ae2defce..7bed8c22a4 100644
--- a/lede/target/linux/generic/pending-6.1/777-net-dsa-b53-mdio-add-support-for-BCM53134.patch
+++ b/lede/target/linux/generic/pending-6.1/777-net-dsa-b53-mdio-add-support-for-BCM53134.patch
@@ -100,7 +100,7 @@ Signed-off-by: Álvaro Fernández Rojas
--- a/drivers/net/dsa/b53/b53_common.c
+++ b/drivers/net/dsa/b53/b53_common.c
-@@ -2613,6 +2613,20 @@ static const struct b53_chip_data b53_sw
+@@ -2616,6 +2616,20 @@ static const struct b53_chip_data b53_sw
.jumbo_pm_reg = B53_JUMBO_PORT_MASK,
.jumbo_size_reg = B53_JUMBO_MAX_SIZE,
},
@@ -121,7 +121,7 @@ Signed-off-by: Álvaro Fernández Rojas
};
static int b53_switch_init(struct b53_device *dev)
-@@ -2790,6 +2804,7 @@ int b53_switch_detect(struct b53_device
+@@ -2793,6 +2807,7 @@ int b53_switch_detect(struct b53_device
case BCM53012_DEVICE_ID:
case BCM53018_DEVICE_ID:
case BCM53019_DEVICE_ID:
diff --git a/lede/target/linux/generic/pending-6.1/834-ledtrig-libata.patch b/lede/target/linux/generic/pending-6.1/834-ledtrig-libata.patch
index 39960bc090..4663a43c33 100644
--- a/lede/target/linux/generic/pending-6.1/834-ledtrig-libata.patch
+++ b/lede/target/linux/generic/pending-6.1/834-ledtrig-libata.patch
@@ -85,7 +85,7 @@ Signed-off-by: Daniel Golle
ata_sff_port_init(ap);
return ap;
-@@ -5473,6 +5492,12 @@ static void ata_host_release(struct kref
+@@ -5476,6 +5495,12 @@ static void ata_host_release(struct kref
kfree(ap->pmp_link);
kfree(ap->slave_link);
@@ -98,7 +98,7 @@ Signed-off-by: Daniel Golle
kfree(ap);
host->ports[i] = NULL;
}
-@@ -5875,7 +5900,23 @@ int ata_host_register(struct ata_host *h
+@@ -5880,7 +5905,23 @@ int ata_host_register(struct ata_host *h
host->ports[i]->print_id = atomic_inc_return(&ata_print_id);
host->ports[i]->local_port_no = i + 1;
}
diff --git a/lede/target/linux/generic/pending-6.1/901-usb-add-more-modem-support.patch b/lede/target/linux/generic/pending-6.1/901-usb-add-more-modem-support.patch
new file mode 100644
index 0000000000..da842d353f
--- /dev/null
+++ b/lede/target/linux/generic/pending-6.1/901-usb-add-more-modem-support.patch
@@ -0,0 +1,28 @@
+--- a/drivers/net/usb/qmi_wwan.c
++++ b/drivers/net/usb/qmi_wwan.c
+@@ -1437,6 +1437,9 @@ static const struct usb_device_id produc
+ {QMI_QUIRK_SET_DTR(0x1546, 0x1342, 4)}, /* u-blox LARA-L6 */
+ {QMI_QUIRK_SET_DTR(0x33f8, 0x0104, 4)}, /* Rolling RW101 RMNET */
+ {QMI_FIXED_INTF(0x2dee, 0x4d22, 5)}, /* MeiG Smart SRM825L */
++ {QMI_FIXED_INTF(0x2077, 0x2002, 4)}, /* T&W TW04C */
++ {QMI_FIXED_INTF(0x2077, 0x2003, 4)}, /* T&W TW12G */
++ {QMI_FIXED_INTF(0x2077, 0x2004, 4)}, /* T&W TW510M */
+
+ /* 4. Gobi 1000 devices */
+ {QMI_GOBI1K_DEVICE(0x05c6, 0x9212)}, /* Acer Gobi Modem Device */
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -2324,9 +2324,13 @@ static const struct usb_device_id option
+ { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0a06, 0xff) }, /* Fibocom FM650-CN (RNDIS mode) */
+ { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0a07, 0xff) }, /* Fibocom FM650-CN (MBIM mode) */
+ { USB_DEVICE_INTERFACE_CLASS(0x2df3, 0x9d03, 0xff) }, /* LongSung M5710 */
++ { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1402, 0xff) }, /* GosunCn GM800 (Download mode) */
++ { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1403, 0xff) }, /* GosunCn GM800 (rmnet, old) */
+ { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1404, 0xff) }, /* GosunCn GM500 RNDIS */
+ { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1405, 0xff) }, /* GosunCn GM500 MBIM */
+ { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1406, 0xff) }, /* GosunCn GM500 ECM/NCM */
++ { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1421, 0xff) }, /* GosunCn GM800 (rmnet) */
++ { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1422, 0xff) }, /* GosunCn GM800 (EAP) */
+ { USB_DEVICE(0x33f8, 0x0104), /* Rolling RW101-GL (laptop RMNET) */
+ .driver_info = RSVD(4) | RSVD(5) },
+ { USB_DEVICE_INTERFACE_CLASS(0x33f8, 0x01a2, 0xff) }, /* Rolling RW101-GL (laptop MBIM) */
diff --git a/lede/target/linux/mediatek/patches-6.1/000-v6.2-kbuild-Allow-DTB-overlays-to-built-from-.dtso-named-.patch b/lede/target/linux/mediatek/patches-6.1/000-v6.2-kbuild-Allow-DTB-overlays-to-built-from-.dtso-named-.patch
index 17c5c6098a..8bc6e5d66d 100644
--- a/lede/target/linux/mediatek/patches-6.1/000-v6.2-kbuild-Allow-DTB-overlays-to-built-from-.dtso-named-.patch
+++ b/lede/target/linux/mediatek/patches-6.1/000-v6.2-kbuild-Allow-DTB-overlays-to-built-from-.dtso-named-.patch
@@ -32,7 +32,7 @@ Signed-off-by: Rob Herring
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
-@@ -408,6 +408,9 @@ $(obj)/%.dtb: $(src)/%.dts $(DTC) $(DT_T
+@@ -412,6 +412,9 @@ $(obj)/%.dtb: $(src)/%.dts $(DTC) $(DT_T
$(obj)/%.dtbo: $(src)/%.dts $(DTC) FORCE
$(call if_changed_dep,dtc)
diff --git a/lede/target/linux/mediatek/patches-6.1/321-v6.2-mmc-mtk-sd-add-Inline-Crypto-Engine-clock-control.patch b/lede/target/linux/mediatek/patches-6.1/321-v6.2-mmc-mtk-sd-add-Inline-Crypto-Engine-clock-control.patch
index db2802bd0f..1dd8d3a81b 100644
--- a/lede/target/linux/mediatek/patches-6.1/321-v6.2-mmc-mtk-sd-add-Inline-Crypto-Engine-clock-control.patch
+++ b/lede/target/linux/mediatek/patches-6.1/321-v6.2-mmc-mtk-sd-add-Inline-Crypto-Engine-clock-control.patch
@@ -39,7 +39,7 @@ Signed-off-by: Ulf Hansson
ret = clk_bulk_prepare_enable(MSDC_NR_CLOCKS, host->bulk_clks);
if (ret) {
dev_err(host->dev, "Cannot enable pclk/axi/ahb clock gates\n");
-@@ -2670,6 +2673,15 @@ static int msdc_drv_probe(struct platfor
+@@ -2666,6 +2669,15 @@ static int msdc_drv_probe(struct platfor
goto host_free;
}
diff --git a/lede/target/linux/mediatek/patches-6.1/322-v6.2-mmc-mtk-sd-fix-two-spelling-mistakes-in-comment.patch b/lede/target/linux/mediatek/patches-6.1/322-v6.2-mmc-mtk-sd-fix-two-spelling-mistakes-in-comment.patch
index 921d249f8c..f4e5c12c26 100644
--- a/lede/target/linux/mediatek/patches-6.1/322-v6.2-mmc-mtk-sd-fix-two-spelling-mistakes-in-comment.patch
+++ b/lede/target/linux/mediatek/patches-6.1/322-v6.2-mmc-mtk-sd-fix-two-spelling-mistakes-in-comment.patch
@@ -25,8 +25,8 @@ Signed-off-by: Ulf Hansson
bd[j].bd_info &= ~BDMA_DESC_CHECKSUM;
bd[j].bd_info |= msdc_dma_calcs((u8 *)(&bd[j]), 16) << 8;
}
-@@ -1229,7 +1229,7 @@ static bool msdc_cmd_done(struct msdc_ho
- !host->hs400_tuning))
+@@ -1227,7 +1227,7 @@ static bool msdc_cmd_done(struct msdc_ho
+ (!mmc_op_tuning(cmd->opcode) && !host->hs400_tuning))
/*
* should not clear fifo/interrupt as the tune data
- * may have alreay come when cmd19/cmd21 gets response
diff --git a/lede/target/linux/mediatek/patches-6.1/323-v6.2-mmc-Avoid-open-coding-by-using-mmc_op_tuning.patch b/lede/target/linux/mediatek/patches-6.1/323-v6.2-mmc-Avoid-open-coding-by-using-mmc_op_tuning.patch
deleted file mode 100644
index 8e2151e16b..0000000000
--- a/lede/target/linux/mediatek/patches-6.1/323-v6.2-mmc-Avoid-open-coding-by-using-mmc_op_tuning.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From b98e7e8daf0ebab9dcc36812378a71e1be0b5089 Mon Sep 17 00:00:00 2001
-From: ChanWoo Lee
-Date: Thu, 24 Nov 2022 17:00:31 +0900
-Subject: [PATCH 4/6] mmc: Avoid open coding by using mmc_op_tuning()
-
-Replace code with the already defined function. No functional changes.
-
-Signed-off-by: ChanWoo Lee
-Reviewed-by: Adrian Hunter
-Link: https://lore.kernel.org/r/20221124080031.14690-1-cw9316.lee@samsung.com
-Signed-off-by: Ulf Hansson
----
- drivers/mmc/host/mtk-sd.c | 8 ++------
- 1 file changed, 2 insertions(+), 6 deletions(-)
-
---- a/drivers/mmc/host/mtk-sd.c
-+++ b/drivers/mmc/host/mtk-sd.c
-@@ -1224,9 +1224,7 @@ static bool msdc_cmd_done(struct msdc_ho
-
- if (!sbc_error && !(events & MSDC_INT_CMDRDY)) {
- if (events & MSDC_INT_CMDTMO ||
-- (cmd->opcode != MMC_SEND_TUNING_BLOCK &&
-- cmd->opcode != MMC_SEND_TUNING_BLOCK_HS200 &&
-- !host->hs400_tuning))
-+ (!mmc_op_tuning(cmd->opcode) && !host->hs400_tuning))
- /*
- * should not clear fifo/interrupt as the tune data
- * may have already come when cmd19/cmd21 gets response
-@@ -1320,9 +1318,7 @@ static void msdc_cmd_next(struct msdc_ho
- {
- if ((cmd->error &&
- !(cmd->error == -EILSEQ &&
-- (cmd->opcode == MMC_SEND_TUNING_BLOCK ||
-- cmd->opcode == MMC_SEND_TUNING_BLOCK_HS200 ||
-- host->hs400_tuning))) ||
-+ (mmc_op_tuning(cmd->opcode) || host->hs400_tuning))) ||
- (mrq->sbc && mrq->sbc->error))
- msdc_request_done(host, mrq);
- else if (cmd == mrq->sbc)
diff --git a/lede/target/linux/mediatek/patches-6.1/351-pinctrl-add-mt7988-pd-pulltype-support.patch b/lede/target/linux/mediatek/patches-6.1/351-pinctrl-add-mt7988-pd-pulltype-support.patch
index 1fcb1e64c7..fb65adb011 100644
--- a/lede/target/linux/mediatek/patches-6.1/351-pinctrl-add-mt7988-pd-pulltype-support.patch
+++ b/lede/target/linux/mediatek/patches-6.1/351-pinctrl-add-mt7988-pd-pulltype-support.patch
@@ -31,8 +31,8 @@
static int mtk_pinconf_bias_set_pullsel_pullen(struct mtk_pinctrl *hw,
const struct mtk_pin_desc *desc,
u32 pullup, u32 arg)
-@@ -755,6 +779,12 @@ int mtk_pinconf_bias_set_combo(struct mt
- return err;
+@@ -758,6 +782,12 @@ int mtk_pinconf_bias_set_combo(struct mt
+ return 0;
}
+ if (try_all_type & MTK_PULL_PD_TYPE) {
@@ -44,7 +44,7 @@
if (try_all_type & MTK_PULL_PU_PD_TYPE) {
err = mtk_pinconf_bias_set_pu_pd(hw, desc, pullup, arg);
if (!err)
-@@ -875,6 +905,29 @@ out:
+@@ -878,6 +908,29 @@ out:
return err;
}
@@ -74,19 +74,19 @@
static int mtk_pinconf_bias_get_pullsel_pullen(struct mtk_pinctrl *hw,
const struct mtk_pin_desc *desc,
u32 *pullup, u32 *enable)
-@@ -943,6 +996,12 @@ int mtk_pinconf_bias_get_combo(struct mt
- if (!err)
- return err;
+@@ -947,6 +1000,12 @@ int mtk_pinconf_bias_get_combo(struct mt
+ return 0;
}
-+
+
+ if (try_all_type & MTK_PULL_PD_TYPE) {
+ err = mtk_pinconf_bias_get_pd(hw, desc, pullup, enable);
+ if (!err)
+ return err;
+ }
-
++
if (try_all_type & MTK_PULL_PU_PD_TYPE) {
err = mtk_pinconf_bias_get_pu_pd(hw, desc, pullup, enable);
+ if (!err)
--- a/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h
+++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h
@@ -24,6 +24,7 @@
diff --git a/lede/target/linux/mediatek/patches-6.1/901-arm-add-cmdline-override.patch b/lede/target/linux/mediatek/patches-6.1/901-arm-add-cmdline-override.patch
index f8857bdf72..9f54ece781 100644
--- a/lede/target/linux/mediatek/patches-6.1/901-arm-add-cmdline-override.patch
+++ b/lede/target/linux/mediatek/patches-6.1/901-arm-add-cmdline-override.patch
@@ -37,7 +37,7 @@
* CONFIG_CMDLINE is meant to be a default in case nothing else
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
-@@ -2239,6 +2239,14 @@ config CMDLINE_FORCE
+@@ -2277,6 +2277,14 @@ config CMDLINE_FORCE
endchoice
diff --git a/lede/target/linux/rockchip/armv8/config-6.6 b/lede/target/linux/rockchip/armv8/config-6.6
index d38b2d8ac7..d385a0b786 100644
--- a/lede/target/linux/rockchip/armv8/config-6.6
+++ b/lede/target/linux/rockchip/armv8/config-6.6
@@ -25,7 +25,21 @@ CONFIG_ARM64=y
CONFIG_ARM64_4K_PAGES=y
CONFIG_ARM64_CNP=y
CONFIG_ARM64_EPAN=y
+CONFIG_ARM64_ERRATUM_1024718=y
+CONFIG_ARM64_ERRATUM_1165522=y
+CONFIG_ARM64_ERRATUM_1286807=y
+CONFIG_ARM64_ERRATUM_1319367=y
+CONFIG_ARM64_ERRATUM_1463225=y
+CONFIG_ARM64_ERRATUM_1530923=y
CONFIG_ARM64_ERRATUM_1742098=y
+CONFIG_ARM64_ERRATUM_2051678=y
+CONFIG_ARM64_ERRATUM_2054223=y
+CONFIG_ARM64_ERRATUM_2067961=y
+CONFIG_ARM64_ERRATUM_2077057=y
+CONFIG_ARM64_ERRATUM_2441007=y
+CONFIG_ARM64_ERRATUM_2441009=y
+CONFIG_ARM64_ERRATUM_2658417=y
+CONFIG_ARM64_ERRATUM_3117295=y
CONFIG_ARM64_ERRATUM_819472=y
CONFIG_ARM64_ERRATUM_824069=y
CONFIG_ARM64_ERRATUM_826319=y
@@ -50,6 +64,9 @@ CONFIG_ARM64_VA_BITS=48
# CONFIG_ARM64_VA_BITS_39 is not set
CONFIG_ARM64_VA_BITS_48=y
CONFIG_ARM64_WORKAROUND_CLEAN_CACHE=y
+CONFIG_ARM64_WORKAROUND_REPEAT_TLBI=y
+CONFIG_ARM64_WORKAROUND_SPECULATIVE_AT=y
+CONFIG_ARM64_WORKAROUND_SPECULATIVE_UNPRIV_LOAD=y
# CONFIG_ARMV8_DEPRECATED is not set
CONFIG_ARM_AMBA=y
CONFIG_ARM_ARCH_TIMER=y
diff --git a/lede/target/linux/rockchip/patches-6.6/030-01-v6.9-clk-rockchip-rk3588-fix-CLK_NR_CLKS-usage.patch b/lede/target/linux/rockchip/patches-6.6/030-01-v6.9-clk-rockchip-rk3588-fix-CLK_NR_CLKS-usage.patch
new file mode 100644
index 0000000000..6becaf6e86
--- /dev/null
+++ b/lede/target/linux/rockchip/patches-6.6/030-01-v6.9-clk-rockchip-rk3588-fix-CLK_NR_CLKS-usage.patch
@@ -0,0 +1,78 @@
+From 2dc66a5ab2c6fb532fbb16107ee7efcb0effbfa5 Mon Sep 17 00:00:00 2001
+From: Sebastian Reichel
+Date: Fri, 26 Jan 2024 19:18:22 +0100
+Subject: [PATCH] clk: rockchip: rk3588: fix CLK_NR_CLKS usage
+
+CLK_NR_CLKS is not part of the DT bindings and needs to be removed
+from it, just like it recently happened for other platforms. This
+takes care of it by introducing a new function identifying the
+maximum used clock ID at runtime.
+
+Signed-off-by: Sebastian Reichel
+Link: https://lore.kernel.org/r/20240126182919.48402-2-sebastian.reichel@collabora.com
+Signed-off-by: Heiko Stuebner
+---
+ drivers/clk/rockchip/clk-rk3588.c | 5 ++++-
+ drivers/clk/rockchip/clk.c | 17 +++++++++++++++++
+ drivers/clk/rockchip/clk.h | 2 ++
+ 3 files changed, 23 insertions(+), 1 deletion(-)
+
+--- a/drivers/clk/rockchip/clk-rk3588.c
++++ b/drivers/clk/rockchip/clk-rk3588.c
+@@ -2458,15 +2458,18 @@ static struct rockchip_clk_branch rk3588
+ static void __init rk3588_clk_init(struct device_node *np)
+ {
+ struct rockchip_clk_provider *ctx;
++ unsigned long clk_nr_clks;
+ void __iomem *reg_base;
+
++ clk_nr_clks = rockchip_clk_find_max_clk_id(rk3588_clk_branches,
++ ARRAY_SIZE(rk3588_clk_branches)) + 1;
+ reg_base = of_iomap(np, 0);
+ if (!reg_base) {
+ pr_err("%s: could not map cru region\n", __func__);
+ return;
+ }
+
+- ctx = rockchip_clk_init(np, reg_base, CLK_NR_CLKS);
++ ctx = rockchip_clk_init(np, reg_base, clk_nr_clks);
+ if (IS_ERR(ctx)) {
+ pr_err("%s: rockchip clk init failed\n", __func__);
+ iounmap(reg_base);
+--- a/drivers/clk/rockchip/clk.c
++++ b/drivers/clk/rockchip/clk.c
+@@ -429,6 +429,23 @@ void rockchip_clk_register_plls(struct r
+ }
+ EXPORT_SYMBOL_GPL(rockchip_clk_register_plls);
+
++unsigned long rockchip_clk_find_max_clk_id(struct rockchip_clk_branch *list,
++ unsigned int nr_clk)
++{
++ unsigned long max = 0;
++ unsigned int idx;
++
++ for (idx = 0; idx < nr_clk; idx++, list++) {
++ if (list->id > max)
++ max = list->id;
++ if (list->child && list->child->id > max)
++ max = list->id;
++ }
++
++ return max;
++}
++EXPORT_SYMBOL_GPL(rockchip_clk_find_max_clk_id);
++
+ void rockchip_clk_register_branches(struct rockchip_clk_provider *ctx,
+ struct rockchip_clk_branch *list,
+ unsigned int nr_clk)
+--- a/drivers/clk/rockchip/clk.h
++++ b/drivers/clk/rockchip/clk.h
+@@ -973,6 +973,8 @@ struct rockchip_clk_provider *rockchip_c
+ void __iomem *base, unsigned long nr_clks);
+ void rockchip_clk_of_add_provider(struct device_node *np,
+ struct rockchip_clk_provider *ctx);
++unsigned long rockchip_clk_find_max_clk_id(struct rockchip_clk_branch *list,
++ unsigned int nr_clk);
+ void rockchip_clk_register_branches(struct rockchip_clk_provider *ctx,
+ struct rockchip_clk_branch *list,
+ unsigned int nr_clk);
diff --git a/lede/target/linux/rockchip/patches-6.6/030-02-v6.9-dt-bindings-clock-rk3588-drop-CLK_NR_CLKS.patch b/lede/target/linux/rockchip/patches-6.6/030-02-v6.9-dt-bindings-clock-rk3588-drop-CLK_NR_CLKS.patch
new file mode 100644
index 0000000000..c8117f08c5
--- /dev/null
+++ b/lede/target/linux/rockchip/patches-6.6/030-02-v6.9-dt-bindings-clock-rk3588-drop-CLK_NR_CLKS.patch
@@ -0,0 +1,27 @@
+From 11a29dc2e41ead2be78cfa9d532edf924b461acc Mon Sep 17 00:00:00 2001
+From: Sebastian Reichel
+Date: Fri, 26 Jan 2024 19:18:23 +0100
+Subject: [PATCH] dt-bindings: clock: rk3588: drop CLK_NR_CLKS
+
+CLK_NR_CLKS should not be part of the binding. Let's drop it, since
+the kernel code no longer uses it either.
+
+Reviewed-by: Krzysztof Kozlowski
+Signed-off-by: Sebastian Reichel
+Link: https://lore.kernel.org/r/20240126182919.48402-3-sebastian.reichel@collabora.com
+Signed-off-by: Heiko Stuebner
+---
+ include/dt-bindings/clock/rockchip,rk3588-cru.h | 2 --
+ 1 file changed, 2 deletions(-)
+
+--- a/include/dt-bindings/clock/rockchip,rk3588-cru.h
++++ b/include/dt-bindings/clock/rockchip,rk3588-cru.h
+@@ -734,8 +734,6 @@
+ #define PCLK_AV1_PRE 719
+ #define HCLK_SDIO_PRE 720
+
+-#define CLK_NR_CLKS (HCLK_SDIO_PRE + 1)
+-
+ /* scmi-clocks indices */
+
+ #define SCMI_CLK_CPUL 0
diff --git a/lede/target/linux/rockchip/patches-6.6/030-03-v6.9-dt-bindings-clock-rk3588-add-missing-PCLK_VO1GRF.patch b/lede/target/linux/rockchip/patches-6.6/030-03-v6.9-dt-bindings-clock-rk3588-add-missing-PCLK_VO1GRF.patch
new file mode 100644
index 0000000000..b960bc6197
--- /dev/null
+++ b/lede/target/linux/rockchip/patches-6.6/030-03-v6.9-dt-bindings-clock-rk3588-add-missing-PCLK_VO1GRF.patch
@@ -0,0 +1,26 @@
+From c81798cf9dd2f324934585b2b52a0398caefb88e Mon Sep 17 00:00:00 2001
+From: Sebastian Reichel
+Date: Fri, 26 Jan 2024 19:18:24 +0100
+Subject: [PATCH] dt-bindings: clock: rk3588: add missing PCLK_VO1GRF
+
+Add PCLK_VO1GRF to complement PCLK_VO0GRF. This will be needed
+for HDMI support.
+
+Acked-by: Krzysztof Kozlowski
+Signed-off-by: Sebastian Reichel
+Link: https://lore.kernel.org/r/20240126182919.48402-4-sebastian.reichel@collabora.com
+Signed-off-by: Heiko Stuebner
+---
+ include/dt-bindings/clock/rockchip,rk3588-cru.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/include/dt-bindings/clock/rockchip,rk3588-cru.h
++++ b/include/dt-bindings/clock/rockchip,rk3588-cru.h
+@@ -733,6 +733,7 @@
+ #define ACLK_AV1_PRE 718
+ #define PCLK_AV1_PRE 719
+ #define HCLK_SDIO_PRE 720
++#define PCLK_VO1GRF 721
+
+ /* scmi-clocks indices */
+
diff --git a/lede/target/linux/rockchip/patches-6.6/030-04-v6.9-clk-rockchip-rk3588-fix-pclk_vo0grf-and-pclk_vo1grf.patch b/lede/target/linux/rockchip/patches-6.6/030-04-v6.9-clk-rockchip-rk3588-fix-pclk_vo0grf-and-pclk_vo1grf.patch
new file mode 100644
index 0000000000..e12b73fb30
--- /dev/null
+++ b/lede/target/linux/rockchip/patches-6.6/030-04-v6.9-clk-rockchip-rk3588-fix-pclk_vo0grf-and-pclk_vo1grf.patch
@@ -0,0 +1,59 @@
+From 326be62eaf2e89767b7b9223f88eaf3c041b98d2 Mon Sep 17 00:00:00 2001
+From: Sebastian Reichel
+Date: Fri, 26 Jan 2024 19:18:25 +0100
+Subject: [PATCH] clk: rockchip: rk3588: fix pclk_vo0grf and pclk_vo1grf
+
+Currently pclk_vo1grf is not exposed, but it should be referenced
+from the vo1_grf syscon, which needs it enabled. That syscon is
+required for HDMI RX and TX functionality among other things.
+
+Apart from that pclk_vo0grf and pclk_vo1grf are both linked gates
+and need the VO's hclk enabled in addition to their parent clock.
+
+No Fixes tag has been added, since the logic requiring these clocks
+is not yet upstream anyways.
+
+Signed-off-by: Sebastian Reichel
+Link: https://lore.kernel.org/r/20240126182919.48402-5-sebastian.reichel@collabora.com
+Signed-off-by: Heiko Stuebner
+---
+ drivers/clk/rockchip/clk-rk3588.c | 10 ++++------
+ 1 file changed, 4 insertions(+), 6 deletions(-)
+
+--- a/drivers/clk/rockchip/clk-rk3588.c
++++ b/drivers/clk/rockchip/clk-rk3588.c
+@@ -1851,8 +1851,6 @@ static struct rockchip_clk_branch rk3588
+ RK3588_CLKGATE_CON(56), 0, GFLAGS),
+ GATE(PCLK_TRNG0, "pclk_trng0", "pclk_vo0_root", 0,
+ RK3588_CLKGATE_CON(56), 1, GFLAGS),
+- GATE(PCLK_VO0GRF, "pclk_vo0grf", "pclk_vo0_root", CLK_IGNORE_UNUSED,
+- RK3588_CLKGATE_CON(55), 10, GFLAGS),
+ COMPOSITE(CLK_I2S4_8CH_TX_SRC, "clk_i2s4_8ch_tx_src", gpll_aupll_p, 0,
+ RK3588_CLKSEL_CON(118), 5, 1, MFLAGS, 0, 5, DFLAGS,
+ RK3588_CLKGATE_CON(56), 11, GFLAGS),
+@@ -1998,8 +1996,6 @@ static struct rockchip_clk_branch rk3588
+ RK3588_CLKGATE_CON(60), 9, GFLAGS),
+ GATE(PCLK_TRNG1, "pclk_trng1", "pclk_vo1_root", 0,
+ RK3588_CLKGATE_CON(60), 10, GFLAGS),
+- GATE(0, "pclk_vo1grf", "pclk_vo1_root", CLK_IGNORE_UNUSED,
+- RK3588_CLKGATE_CON(59), 12, GFLAGS),
+ GATE(PCLK_S_EDP0, "pclk_s_edp0", "pclk_vo1_s_root", 0,
+ RK3588_CLKGATE_CON(59), 14, GFLAGS),
+ GATE(PCLK_S_EDP1, "pclk_s_edp1", "pclk_vo1_s_root", 0,
+@@ -2447,12 +2443,14 @@ static struct rockchip_clk_branch rk3588
+ GATE_LINK(HCLK_RKVDEC1_PRE, "hclk_rkvdec1_pre", "hclk_rkvdec1_root", "hclk_vdpu_root", 0, RK3588_CLKGATE_CON(41), 4, GFLAGS),
+ GATE_LINK(ACLK_RKVDEC1_PRE, "aclk_rkvdec1_pre", "aclk_rkvdec1_root", "aclk_vdpu_root", 0, RK3588_CLKGATE_CON(41), 5, GFLAGS),
+ GATE_LINK(ACLK_HDCP0_PRE, "aclk_hdcp0_pre", "aclk_vo0_root", "aclk_vop_low_root", 0, RK3588_CLKGATE_CON(55), 9, GFLAGS),
+- GATE_LINK(HCLK_VO0, "hclk_vo0", "hclk_vo0_root", "hclk_vop_root", 0, RK3588_CLKGATE_CON(55), 5, GFLAGS),
++ GATE_LINK(HCLK_VO0, "hclk_vo0", "hclk_vo0_root", "hclk_vop_root", RK3588_LINKED_CLK, RK3588_CLKGATE_CON(55), 5, GFLAGS),
+ GATE_LINK(ACLK_HDCP1_PRE, "aclk_hdcp1_pre", "aclk_hdcp1_root", "aclk_vo1usb_top_root", 0, RK3588_CLKGATE_CON(59), 6, GFLAGS),
+- GATE_LINK(HCLK_VO1, "hclk_vo1", "hclk_vo1_root", "hclk_vo1usb_top_root", 0, RK3588_CLKGATE_CON(59), 9, GFLAGS),
++ GATE_LINK(HCLK_VO1, "hclk_vo1", "hclk_vo1_root", "hclk_vo1usb_top_root", RK3588_LINKED_CLK, RK3588_CLKGATE_CON(59), 9, GFLAGS),
+ GATE_LINK(ACLK_AV1_PRE, "aclk_av1_pre", "aclk_av1_root", "aclk_vdpu_root", 0, RK3588_CLKGATE_CON(68), 1, GFLAGS),
+ GATE_LINK(PCLK_AV1_PRE, "pclk_av1_pre", "pclk_av1_root", "hclk_vdpu_root", 0, RK3588_CLKGATE_CON(68), 4, GFLAGS),
+ GATE_LINK(HCLK_SDIO_PRE, "hclk_sdio_pre", "hclk_sdio_root", "hclk_nvm", 0, RK3588_CLKGATE_CON(75), 1, GFLAGS),
++ GATE_LINK(PCLK_VO0GRF, "pclk_vo0grf", "pclk_vo0_root", "hclk_vo0", CLK_IGNORE_UNUSED, RK3588_CLKGATE_CON(55), 10, GFLAGS),
++ GATE_LINK(PCLK_VO1GRF, "pclk_vo1grf", "pclk_vo1_root", "hclk_vo1", CLK_IGNORE_UNUSED, RK3588_CLKGATE_CON(59), 12, GFLAGS),
+ };
+
+ static void __init rk3588_clk_init(struct device_node *np)
diff --git a/lede/target/linux/rockchip/patches-6.6/030-05-v6.9-clk-rockchip-rk3588-fix-indent.patch b/lede/target/linux/rockchip/patches-6.6/030-05-v6.9-clk-rockchip-rk3588-fix-indent.patch
new file mode 100644
index 0000000000..27aa28edd5
--- /dev/null
+++ b/lede/target/linux/rockchip/patches-6.6/030-05-v6.9-clk-rockchip-rk3588-fix-indent.patch
@@ -0,0 +1,26 @@
+From 2a6e4710672242281347103b64e01693aa823a29 Mon Sep 17 00:00:00 2001
+From: Sebastian Reichel
+Date: Fri, 26 Jan 2024 19:18:26 +0100
+Subject: [PATCH] clk: rockchip: rk3588: fix indent
+
+pclk_mailbox2 is the only RK3588 clock indented with one tab instead of
+two tabs. Let's fix this.
+
+Signed-off-by: Sebastian Reichel
+Link: https://lore.kernel.org/r/20240126182919.48402-6-sebastian.reichel@collabora.com
+Signed-off-by: Heiko Stuebner
+---
+ drivers/clk/rockchip/clk-rk3588.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/clk/rockchip/clk-rk3588.c
++++ b/drivers/clk/rockchip/clk-rk3588.c
+@@ -1004,7 +1004,7 @@ static struct rockchip_clk_branch rk3588
+ GATE(PCLK_MAILBOX1, "pclk_mailbox1", "pclk_top_root", 0,
+ RK3588_CLKGATE_CON(16), 12, GFLAGS),
+ GATE(PCLK_MAILBOX2, "pclk_mailbox2", "pclk_top_root", 0,
+- RK3588_CLKGATE_CON(16), 13, GFLAGS),
++ RK3588_CLKGATE_CON(16), 13, GFLAGS),
+ GATE(PCLK_PMU2, "pclk_pmu2", "pclk_top_root", CLK_IS_CRITICAL,
+ RK3588_CLKGATE_CON(19), 3, GFLAGS),
+ GATE(PCLK_PMUCM0_INTMUX, "pclk_pmucm0_intmux", "pclk_top_root", CLK_IS_CRITICAL,
diff --git a/lede/target/linux/rockchip/patches-6.6/030-06-v6.9-clk-rockchip-rk3588-use-linked-clock-ID-for-GATE_LINK.patch b/lede/target/linux/rockchip/patches-6.6/030-06-v6.9-clk-rockchip-rk3588-use-linked-clock-ID-for-GATE_LINK.patch
new file mode 100644
index 0000000000..949041fb9f
--- /dev/null
+++ b/lede/target/linux/rockchip/patches-6.6/030-06-v6.9-clk-rockchip-rk3588-use-linked-clock-ID-for-GATE_LINK.patch
@@ -0,0 +1,78 @@
+From dae3e57000fb2d6f491e3ee2956f5918326d6b72 Mon Sep 17 00:00:00 2001
+From: Sebastian Reichel
+Date: Fri, 26 Jan 2024 19:18:27 +0100
+Subject: [PATCH] clk: rockchip: rk3588: use linked clock ID for GATE_LINK
+
+In preparation for properly supporting GATE_LINK switch the unused
+linked clock argument from the clock's name to its ID. This allows
+easy and fast lookup of the 'struct clk'.
+
+Signed-off-by: Sebastian Reichel
+Link: https://lore.kernel.org/r/20240126182919.48402-7-sebastian.reichel@collabora.com
+Signed-off-by: Heiko Stuebner
+---
+ drivers/clk/rockchip/clk-rk3588.c | 46 +++++++++++++++----------------
+ 1 file changed, 23 insertions(+), 23 deletions(-)
+
+--- a/drivers/clk/rockchip/clk-rk3588.c
++++ b/drivers/clk/rockchip/clk-rk3588.c
+@@ -29,7 +29,7 @@
+ * power, but avoids leaking implementation details into DT or hanging the
+ * system.
+ */
+-#define GATE_LINK(_id, cname, pname, linkname, f, o, b, gf) \
++#define GATE_LINK(_id, cname, pname, linkedclk, f, o, b, gf) \
+ GATE(_id, cname, pname, f, o, b, gf)
+ #define RK3588_LINKED_CLK CLK_IS_CRITICAL
+
+@@ -2429,28 +2429,28 @@ static struct rockchip_clk_branch rk3588
+ GATE(ACLK_AV1, "aclk_av1", "aclk_av1_pre", 0,
+ RK3588_CLKGATE_CON(68), 2, GFLAGS),
+
+- GATE_LINK(ACLK_ISP1_PRE, "aclk_isp1_pre", "aclk_isp1_root", "aclk_vi_root", 0, RK3588_CLKGATE_CON(26), 6, GFLAGS),
+- GATE_LINK(HCLK_ISP1_PRE, "hclk_isp1_pre", "hclk_isp1_root", "hclk_vi_root", 0, RK3588_CLKGATE_CON(26), 8, GFLAGS),
+- GATE_LINK(HCLK_NVM, "hclk_nvm", "hclk_nvm_root", "aclk_nvm_root", RK3588_LINKED_CLK, RK3588_CLKGATE_CON(31), 2, GFLAGS),
+- GATE_LINK(ACLK_USB, "aclk_usb", "aclk_usb_root", "aclk_vo1usb_top_root", 0, RK3588_CLKGATE_CON(42), 2, GFLAGS),
+- GATE_LINK(HCLK_USB, "hclk_usb", "hclk_usb_root", "hclk_vo1usb_top_root", 0, RK3588_CLKGATE_CON(42), 3, GFLAGS),
+- GATE_LINK(ACLK_JPEG_DECODER_PRE, "aclk_jpeg_decoder_pre", "aclk_jpeg_decoder_root", "aclk_vdpu_root", 0, RK3588_CLKGATE_CON(44), 7, GFLAGS),
+- GATE_LINK(ACLK_VDPU_LOW_PRE, "aclk_vdpu_low_pre", "aclk_vdpu_low_root", "aclk_vdpu_root", 0, RK3588_CLKGATE_CON(44), 5, GFLAGS),
+- GATE_LINK(ACLK_RKVENC1_PRE, "aclk_rkvenc1_pre", "aclk_rkvenc1_root", "aclk_rkvenc0", 0, RK3588_CLKGATE_CON(48), 3, GFLAGS),
+- GATE_LINK(HCLK_RKVENC1_PRE, "hclk_rkvenc1_pre", "hclk_rkvenc1_root", "hclk_rkvenc0", 0, RK3588_CLKGATE_CON(48), 2, GFLAGS),
+- GATE_LINK(HCLK_RKVDEC0_PRE, "hclk_rkvdec0_pre", "hclk_rkvdec0_root", "hclk_vdpu_root", 0, RK3588_CLKGATE_CON(40), 5, GFLAGS),
+- GATE_LINK(ACLK_RKVDEC0_PRE, "aclk_rkvdec0_pre", "aclk_rkvdec0_root", "aclk_vdpu_root", 0, RK3588_CLKGATE_CON(40), 6, GFLAGS),
+- GATE_LINK(HCLK_RKVDEC1_PRE, "hclk_rkvdec1_pre", "hclk_rkvdec1_root", "hclk_vdpu_root", 0, RK3588_CLKGATE_CON(41), 4, GFLAGS),
+- GATE_LINK(ACLK_RKVDEC1_PRE, "aclk_rkvdec1_pre", "aclk_rkvdec1_root", "aclk_vdpu_root", 0, RK3588_CLKGATE_CON(41), 5, GFLAGS),
+- GATE_LINK(ACLK_HDCP0_PRE, "aclk_hdcp0_pre", "aclk_vo0_root", "aclk_vop_low_root", 0, RK3588_CLKGATE_CON(55), 9, GFLAGS),
+- GATE_LINK(HCLK_VO0, "hclk_vo0", "hclk_vo0_root", "hclk_vop_root", RK3588_LINKED_CLK, RK3588_CLKGATE_CON(55), 5, GFLAGS),
+- GATE_LINK(ACLK_HDCP1_PRE, "aclk_hdcp1_pre", "aclk_hdcp1_root", "aclk_vo1usb_top_root", 0, RK3588_CLKGATE_CON(59), 6, GFLAGS),
+- GATE_LINK(HCLK_VO1, "hclk_vo1", "hclk_vo1_root", "hclk_vo1usb_top_root", RK3588_LINKED_CLK, RK3588_CLKGATE_CON(59), 9, GFLAGS),
+- GATE_LINK(ACLK_AV1_PRE, "aclk_av1_pre", "aclk_av1_root", "aclk_vdpu_root", 0, RK3588_CLKGATE_CON(68), 1, GFLAGS),
+- GATE_LINK(PCLK_AV1_PRE, "pclk_av1_pre", "pclk_av1_root", "hclk_vdpu_root", 0, RK3588_CLKGATE_CON(68), 4, GFLAGS),
+- GATE_LINK(HCLK_SDIO_PRE, "hclk_sdio_pre", "hclk_sdio_root", "hclk_nvm", 0, RK3588_CLKGATE_CON(75), 1, GFLAGS),
+- GATE_LINK(PCLK_VO0GRF, "pclk_vo0grf", "pclk_vo0_root", "hclk_vo0", CLK_IGNORE_UNUSED, RK3588_CLKGATE_CON(55), 10, GFLAGS),
+- GATE_LINK(PCLK_VO1GRF, "pclk_vo1grf", "pclk_vo1_root", "hclk_vo1", CLK_IGNORE_UNUSED, RK3588_CLKGATE_CON(59), 12, GFLAGS),
++ GATE_LINK(ACLK_ISP1_PRE, "aclk_isp1_pre", "aclk_isp1_root", ACLK_VI_ROOT, 0, RK3588_CLKGATE_CON(26), 6, GFLAGS),
++ GATE_LINK(HCLK_ISP1_PRE, "hclk_isp1_pre", "hclk_isp1_root", HCLK_VI_ROOT, 0, RK3588_CLKGATE_CON(26), 8, GFLAGS),
++ GATE_LINK(HCLK_NVM, "hclk_nvm", "hclk_nvm_root", ACLK_NVM_ROOT, RK3588_LINKED_CLK, RK3588_CLKGATE_CON(31), 2, GFLAGS),
++ GATE_LINK(ACLK_USB, "aclk_usb", "aclk_usb_root", ACLK_VO1USB_TOP_ROOT, 0, RK3588_CLKGATE_CON(42), 2, GFLAGS),
++ GATE_LINK(HCLK_USB, "hclk_usb", "hclk_usb_root", HCLK_VO1USB_TOP_ROOT, 0, RK3588_CLKGATE_CON(42), 3, GFLAGS),
++ GATE_LINK(ACLK_JPEG_DECODER_PRE, "aclk_jpeg_decoder_pre", "aclk_jpeg_decoder_root", ACLK_VDPU_ROOT, 0, RK3588_CLKGATE_CON(44), 7, GFLAGS),
++ GATE_LINK(ACLK_VDPU_LOW_PRE, "aclk_vdpu_low_pre", "aclk_vdpu_low_root", ACLK_VDPU_ROOT, 0, RK3588_CLKGATE_CON(44), 5, GFLAGS),
++ GATE_LINK(ACLK_RKVENC1_PRE, "aclk_rkvenc1_pre", "aclk_rkvenc1_root", ACLK_RKVENC0, 0, RK3588_CLKGATE_CON(48), 3, GFLAGS),
++ GATE_LINK(HCLK_RKVENC1_PRE, "hclk_rkvenc1_pre", "hclk_rkvenc1_root", HCLK_RKVENC0, 0, RK3588_CLKGATE_CON(48), 2, GFLAGS),
++ GATE_LINK(HCLK_RKVDEC0_PRE, "hclk_rkvdec0_pre", "hclk_rkvdec0_root", HCLK_VDPU_ROOT, 0, RK3588_CLKGATE_CON(40), 5, GFLAGS),
++ GATE_LINK(ACLK_RKVDEC0_PRE, "aclk_rkvdec0_pre", "aclk_rkvdec0_root", ACLK_VDPU_ROOT, 0, RK3588_CLKGATE_CON(40), 6, GFLAGS),
++ GATE_LINK(HCLK_RKVDEC1_PRE, "hclk_rkvdec1_pre", "hclk_rkvdec1_root", HCLK_VDPU_ROOT, 0, RK3588_CLKGATE_CON(41), 4, GFLAGS),
++ GATE_LINK(ACLK_RKVDEC1_PRE, "aclk_rkvdec1_pre", "aclk_rkvdec1_root", ACLK_VDPU_ROOT, 0, RK3588_CLKGATE_CON(41), 5, GFLAGS),
++ GATE_LINK(ACLK_HDCP0_PRE, "aclk_hdcp0_pre", "aclk_vo0_root", ACLK_VOP_LOW_ROOT, 0, RK3588_CLKGATE_CON(55), 9, GFLAGS),
++ GATE_LINK(HCLK_VO0, "hclk_vo0", "hclk_vo0_root", HCLK_VOP_ROOT, RK3588_LINKED_CLK, RK3588_CLKGATE_CON(55), 5, GFLAGS),
++ GATE_LINK(ACLK_HDCP1_PRE, "aclk_hdcp1_pre", "aclk_hdcp1_root", ACLK_VO1USB_TOP_ROOT, 0, RK3588_CLKGATE_CON(59), 6, GFLAGS),
++ GATE_LINK(HCLK_VO1, "hclk_vo1", "hclk_vo1_root", HCLK_VO1USB_TOP_ROOT, RK3588_LINKED_CLK, RK3588_CLKGATE_CON(59), 9, GFLAGS),
++ GATE_LINK(ACLK_AV1_PRE, "aclk_av1_pre", "aclk_av1_root", ACLK_VDPU_ROOT, 0, RK3588_CLKGATE_CON(68), 1, GFLAGS),
++ GATE_LINK(PCLK_AV1_PRE, "pclk_av1_pre", "pclk_av1_root", HCLK_VDPU_ROOT, 0, RK3588_CLKGATE_CON(68), 4, GFLAGS),
++ GATE_LINK(HCLK_SDIO_PRE, "hclk_sdio_pre", "hclk_sdio_root", HCLK_NVM, 0, RK3588_CLKGATE_CON(75), 1, GFLAGS),
++ GATE_LINK(PCLK_VO0GRF, "pclk_vo0grf", "pclk_vo0_root", HCLK_VO0, CLK_IGNORE_UNUSED, RK3588_CLKGATE_CON(55), 10, GFLAGS),
++ GATE_LINK(PCLK_VO1GRF, "pclk_vo1grf", "pclk_vo1_root", HCLK_VO1, CLK_IGNORE_UNUSED, RK3588_CLKGATE_CON(59), 12, GFLAGS),
+ };
+
+ static void __init rk3588_clk_init(struct device_node *np)
diff --git a/lede/target/linux/rockchip/patches-6.6/030-07-v6.10-dt-bindings-reset-Define-reset-id-used-for-HDMI-Receiver.patch b/lede/target/linux/rockchip/patches-6.6/030-07-v6.10-dt-bindings-reset-Define-reset-id-used-for-HDMI-Receiver.patch
new file mode 100644
index 0000000000..0b9082f9b6
--- /dev/null
+++ b/lede/target/linux/rockchip/patches-6.6/030-07-v6.10-dt-bindings-reset-Define-reset-id-used-for-HDMI-Receiver.patch
@@ -0,0 +1,24 @@
+From ca151fd56b5736a7adbdba5675b9d87d70f20b23 Mon Sep 17 00:00:00 2001
+From: Shreeya Patel
+Date: Thu, 28 Mar 2024 04:20:52 +0530
+Subject: [PATCH] dt-bindings: reset: Define reset id used for HDMI Receiver
+
+Add reset id used for HDMI Receiver in RK3588 SoCs
+
+Acked-by: Rob Herring
+Signed-off-by: Shreeya Patel
+Link: https://lore.kernel.org/r/20240327225057.672304-2-shreeya.patel@collabora.com
+Signed-off-by: Heiko Stuebner
+---
+ include/dt-bindings/reset/rockchip,rk3588-cru.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/include/dt-bindings/reset/rockchip,rk3588-cru.h
++++ b/include/dt-bindings/reset/rockchip,rk3588-cru.h
+@@ -751,4 +751,6 @@
+ #define SRST_P_TRNG_CHK 658
+ #define SRST_TRNG_S 659
+
++#define SRST_A_HDMIRX_BIU 660
++
+ #endif
diff --git a/lede/target/linux/rockchip/patches-6.6/030-08-v6.10-clk-rockchip-rk3588-Add-reset-line-for-HDMI-Receiver.patch b/lede/target/linux/rockchip/patches-6.6/030-08-v6.10-clk-rockchip-rk3588-Add-reset-line-for-HDMI-Receiver.patch
new file mode 100644
index 0000000000..6aa9c058a3
--- /dev/null
+++ b/lede/target/linux/rockchip/patches-6.6/030-08-v6.10-clk-rockchip-rk3588-Add-reset-line-for-HDMI-Receiver.patch
@@ -0,0 +1,25 @@
+From 7af67019cd78d028ef377df689ac103d51905518 Mon Sep 17 00:00:00 2001
+From: Shreeya Patel
+Date: Thu, 28 Mar 2024 04:20:53 +0530
+Subject: [PATCH] clk: rockchip: rk3588: Add reset line for HDMI Receiver
+
+Export hdmirx_biu reset line required by the Synopsys
+DesignWare HDMIRX Controller.
+
+Signed-off-by: Shreeya Patel
+Link: https://lore.kernel.org/r/20240327225057.672304-3-shreeya.patel@collabora.com
+Signed-off-by: Heiko Stuebner
+---
+ drivers/clk/rockchip/rst-rk3588.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/clk/rockchip/rst-rk3588.c
++++ b/drivers/clk/rockchip/rst-rk3588.c
+@@ -577,6 +577,7 @@ static const int rk3588_register_offset[
+
+ /* SOFTRST_CON59 */
+ RK3588_CRU_RESET_OFFSET(SRST_A_HDCP1_BIU, 59, 6),
++ RK3588_CRU_RESET_OFFSET(SRST_A_HDMIRX_BIU, 59, 7),
+ RK3588_CRU_RESET_OFFSET(SRST_A_VO1_BIU, 59, 8),
+ RK3588_CRU_RESET_OFFSET(SRST_H_VOP1_BIU, 59, 9),
+ RK3588_CRU_RESET_OFFSET(SRST_H_VOP1_S_BIU, 59, 10),
diff --git a/lede/target/linux/rockchip/patches-6.6/031-01-v6.7-mfd-rk8xx-Add-support-for-standard-system-power-controlle.patch b/lede/target/linux/rockchip/patches-6.6/031-01-v6.7-mfd-rk8xx-Add-support-for-standard-system-power-controlle.patch
new file mode 100644
index 0000000000..94d998fe93
--- /dev/null
+++ b/lede/target/linux/rockchip/patches-6.6/031-01-v6.7-mfd-rk8xx-Add-support-for-standard-system-power-controlle.patch
@@ -0,0 +1,28 @@
+From 2a46cd97f401a669d71b3d36b78bd6653f8424ee Mon Sep 17 00:00:00 2001
+From: Ondrej Jirman
+Date: Thu, 19 Oct 2023 18:57:25 +0200
+Subject: [PATCH] mfd: rk8xx: Add support for standard system-power-controller
+ property
+
+DT property rockchip,system-power-controller is now deprecated.
+
+Signed-off-by: Ondrej Jirman
+Reviewed-by: Sebastian Reichel
+Link: https://lore.kernel.org/r/20231019165732.3818789-4-megi@xff.cz
+Signed-off-by: Lee Jones
+---
+ drivers/mfd/rk8xx-core.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/mfd/rk8xx-core.c
++++ b/drivers/mfd/rk8xx-core.c
+@@ -677,7 +677,8 @@ int rk8xx_probe(struct device *dev, int
+ if (ret)
+ return dev_err_probe(dev, ret, "failed to add MFD devices\n");
+
+- if (device_property_read_bool(dev, "rockchip,system-power-controller")) {
++ if (device_property_read_bool(dev, "rockchip,system-power-controller") ||
++ device_property_read_bool(dev, "system-power-controller")) {
+ ret = devm_register_sys_off_handler(dev,
+ SYS_OFF_MODE_POWER_OFF_PREPARE, SYS_OFF_PRIO_HIGH,
+ &rk808_power_off, rk808);
diff --git a/lede/target/linux/rockchip/patches-6.6/031-02-v6.7-mfd-rk8xx-Add-support-for-RK806-power-off.patch b/lede/target/linux/rockchip/patches-6.6/031-02-v6.7-mfd-rk8xx-Add-support-for-RK806-power-off.patch
new file mode 100644
index 0000000000..2ac0ff537e
--- /dev/null
+++ b/lede/target/linux/rockchip/patches-6.6/031-02-v6.7-mfd-rk8xx-Add-support-for-RK806-power-off.patch
@@ -0,0 +1,29 @@
+From b0227e7081404448a0059b8698fdffd2dec280d2 Mon Sep 17 00:00:00 2001
+From: Ondrej Jirman
+Date: Thu, 19 Oct 2023 18:57:26 +0200
+Subject: [PATCH] mfd: rk8xx: Add support for RK806 power off
+
+Use DEV_OFF bit to power off the RK806 PMIC, when system-power-controller
+is used in DTS.
+
+Signed-off-by: Ondrej Jirman
+Reviewed-by: Sebastian Reichel
+Link: https://lore.kernel.org/r/20231019165732.3818789-5-megi@xff.cz
+Signed-off-by: Lee Jones
+---
+ drivers/mfd/rk8xx-core.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/drivers/mfd/rk8xx-core.c
++++ b/drivers/mfd/rk8xx-core.c
+@@ -517,6 +517,10 @@ static int rk808_power_off(struct sys_of
+ reg = RK805_DEV_CTRL_REG;
+ bit = DEV_OFF;
+ break;
++ case RK806_ID:
++ reg = RK806_SYS_CFG3;
++ bit = DEV_OFF;
++ break;
+ case RK808_ID:
+ reg = RK808_DEVCTRL_REG,
+ bit = DEV_OFF_RST;
diff --git a/lede/target/linux/rockchip/patches-6.6/032-01-v6.10-phy-rockchip-add-usbdp-combo-phy-driver.patch b/lede/target/linux/rockchip/patches-6.6/032-01-v6.10-phy-rockchip-add-usbdp-combo-phy-driver.patch
new file mode 100644
index 0000000000..69b44deba3
--- /dev/null
+++ b/lede/target/linux/rockchip/patches-6.6/032-01-v6.10-phy-rockchip-add-usbdp-combo-phy-driver.patch
@@ -0,0 +1,1670 @@
+From 2f70bbddeb457580cef3ceb574506083b9272188 Mon Sep 17 00:00:00 2001
+From: Sebastian Reichel
+Date: Tue, 9 Apr 2024 00:50:29 +0200
+Subject: [PATCH] phy: rockchip: add usbdp combo phy driver
+
+This adds a new USBDP combo PHY with Samsung IP block driver.
+
+The driver get lane mux and mapping info in 2 ways, supporting
+DisplayPort alternate mode or parsing from DT. When parsing from DT,
+the property "rockchip,dp-lane-mux" provide the DP mux and mapping
+info. This is needed when the PHY is not used with TypeC Alt-Mode.
+For example if the USB3 interface of the PHY is connected to a USB
+Type A connector and the DP interface is connected to a DisplayPort
+connector.
+
+When do DP link training, need to set lane number, link rate, swing,
+and pre-emphasis via PHY configure interface.
+
+Co-developed-by: Heiko Stuebner
+Signed-off-by: Heiko Stuebner
+Co-developed-by: Zhang Yubing
+Signed-off-by: Zhang Yubing
+Co-developed-by: Frank Wang
+Signed-off-by: Frank Wang
+Signed-off-by: Sebastian Reichel
+Link: https://lore.kernel.org/r/20240408225109.128953-3-sebastian.reichel@collabora.com
+Signed-off-by: Vinod Koul
+---
+ drivers/phy/rockchip/Kconfig | 12 +
+ drivers/phy/rockchip/Makefile | 1 +
+ drivers/phy/rockchip/phy-rockchip-usbdp.c | 1608 +++++++++++++++++++++
+ 3 files changed, 1621 insertions(+)
+ create mode 100644 drivers/phy/rockchip/phy-rockchip-usbdp.c
+
+--- a/drivers/phy/rockchip/Kconfig
++++ b/drivers/phy/rockchip/Kconfig
+@@ -107,3 +107,15 @@ config PHY_ROCKCHIP_USB
+ select GENERIC_PHY
+ help
+ Enable this to support the Rockchip USB 2.0 PHY.
++
++config PHY_ROCKCHIP_USBDP
++ tristate "Rockchip USBDP COMBO PHY Driver"
++ depends on ARCH_ROCKCHIP && OF
++ select GENERIC_PHY
++ select TYPEC
++ help
++ Enable this to support the Rockchip USB3.0/DP combo PHY with
++ Samsung IP block. This is required for USB3 support on RK3588.
++
++ To compile this driver as a module, choose M here: the module
++ will be called phy-rockchip-usbdp
+--- a/drivers/phy/rockchip/Makefile
++++ b/drivers/phy/rockchip/Makefile
+@@ -11,3 +11,4 @@ obj-$(CONFIG_PHY_ROCKCHIP_PCIE) += phy-
+ obj-$(CONFIG_PHY_ROCKCHIP_SNPS_PCIE3) += phy-rockchip-snps-pcie3.o
+ obj-$(CONFIG_PHY_ROCKCHIP_TYPEC) += phy-rockchip-typec.o
+ obj-$(CONFIG_PHY_ROCKCHIP_USB) += phy-rockchip-usb.o
++obj-$(CONFIG_PHY_ROCKCHIP_USBDP) += phy-rockchip-usbdp.o
+--- /dev/null
++++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c
+@@ -0,0 +1,1608 @@
++// SPDX-License-Identifier: GPL-2.0-or-later
++/*
++ * Rockchip USBDP Combo PHY with Samsung IP block driver
++ *
++ * Copyright (C) 2021-2024 Rockchip Electronics Co., Ltd
++ * Copyright (C) 2024 Collabora Ltd
++ */
++
++#include
++#include
++#include
++#include
++#include
++#include
++#include
++#include
++#include
++#include
++#include
++#include
++#include
++#include
++#include
++#include
++#include
++#include
++
++/* USBDP PHY Register Definitions */
++#define UDPHY_PCS 0x4000
++#define UDPHY_PMA 0x8000
++
++/* VO0 GRF Registers */
++#define DP_SINK_HPD_CFG BIT(11)
++#define DP_SINK_HPD_SEL BIT(10)
++#define DP_AUX_DIN_SEL BIT(9)
++#define DP_AUX_DOUT_SEL BIT(8)
++#define DP_LANE_SEL_N(n) GENMASK(2 * (n) + 1, 2 * (n))
++#define DP_LANE_SEL_ALL GENMASK(7, 0)
++
++/* PMA CMN Registers */
++#define CMN_LANE_MUX_AND_EN_OFFSET 0x0288 /* cmn_reg00A2 */
++#define CMN_DP_LANE_MUX_N(n) BIT((n) + 4)
++#define CMN_DP_LANE_EN_N(n) BIT(n)
++#define CMN_DP_LANE_MUX_ALL GENMASK(7, 4)
++#define CMN_DP_LANE_EN_ALL GENMASK(3, 0)
++
++#define CMN_DP_LINK_OFFSET 0x28c /* cmn_reg00A3 */
++#define CMN_DP_TX_LINK_BW GENMASK(6, 5)
++#define CMN_DP_TX_LANE_SWAP_EN BIT(2)
++
++#define CMN_SSC_EN_OFFSET 0x2d0 /* cmn_reg00B4 */
++#define CMN_ROPLL_SSC_EN BIT(1)
++#define CMN_LCPLL_SSC_EN BIT(0)
++
++#define CMN_ANA_LCPLL_DONE_OFFSET 0x0350 /* cmn_reg00D4 */
++#define CMN_ANA_LCPLL_LOCK_DONE BIT(7)
++#define CMN_ANA_LCPLL_AFC_DONE BIT(6)
++
++#define CMN_ANA_ROPLL_DONE_OFFSET 0x0354 /* cmn_reg00D5 */
++#define CMN_ANA_ROPLL_LOCK_DONE BIT(1)
++#define CMN_ANA_ROPLL_AFC_DONE BIT(0)
++
++#define CMN_DP_RSTN_OFFSET 0x038c /* cmn_reg00E3 */
++#define CMN_DP_INIT_RSTN BIT(3)
++#define CMN_DP_CMN_RSTN BIT(2)
++#define CMN_CDR_WTCHDG_EN BIT(1)
++#define CMN_CDR_WTCHDG_MSK_CDR_EN BIT(0)
++
++#define TRSV_ANA_TX_CLK_OFFSET_N(n) (0x854 + (n) * 0x800) /* trsv_reg0215 */
++#define LN_ANA_TX_SER_TXCLK_INV BIT(1)
++
++#define TRSV_LN0_MON_RX_CDR_DONE_OFFSET 0x0b84 /* trsv_reg02E1 */
++#define TRSV_LN0_MON_RX_CDR_LOCK_DONE BIT(0)
++
++#define TRSV_LN2_MON_RX_CDR_DONE_OFFSET 0x1b84 /* trsv_reg06E1 */
++#define TRSV_LN2_MON_RX_CDR_LOCK_DONE BIT(0)
++
++#define BIT_WRITEABLE_SHIFT 16
++#define PHY_AUX_DP_DATA_POL_NORMAL 0
++#define PHY_AUX_DP_DATA_POL_INVERT 1
++#define PHY_LANE_MUX_USB 0
++#define PHY_LANE_MUX_DP 1
++
++enum {
++ DP_BW_RBR,
++ DP_BW_HBR,
++ DP_BW_HBR2,
++ DP_BW_HBR3,
++};
++
++enum {
++ UDPHY_MODE_NONE = 0,
++ UDPHY_MODE_USB = BIT(0),
++ UDPHY_MODE_DP = BIT(1),
++ UDPHY_MODE_DP_USB = BIT(1) | BIT(0),
++};
++
++struct rk_udphy_grf_reg {
++ unsigned int offset;
++ unsigned int disable;
++ unsigned int enable;
++};
++
++#define _RK_UDPHY_GEN_GRF_REG(offset, mask, disable, enable) \
++{\
++ offset, \
++ FIELD_PREP_CONST(mask, disable) | (mask << BIT_WRITEABLE_SHIFT), \
++ FIELD_PREP_CONST(mask, enable) | (mask << BIT_WRITEABLE_SHIFT), \
++}
++
++#define RK_UDPHY_GEN_GRF_REG(offset, bitend, bitstart, disable, enable) \
++ _RK_UDPHY_GEN_GRF_REG(offset, GENMASK(bitend, bitstart), disable, enable)
++
++struct rk_udphy_grf_cfg {
++ /* u2phy-grf */
++ struct rk_udphy_grf_reg bvalid_phy_con;
++ struct rk_udphy_grf_reg bvalid_grf_con;
++
++ /* usb-grf */
++ struct rk_udphy_grf_reg usb3otg0_cfg;
++ struct rk_udphy_grf_reg usb3otg1_cfg;
++
++ /* usbdpphy-grf */
++ struct rk_udphy_grf_reg low_pwrn;
++ struct rk_udphy_grf_reg rx_lfps;
++};
++
++struct rk_udphy_vogrf_cfg {
++ /* vo-grf */
++ struct rk_udphy_grf_reg hpd_trigger;
++ u32 dp_lane_reg;
++};
++
++struct rk_udphy_dp_tx_drv_ctrl {
++ u32 trsv_reg0204;
++ u32 trsv_reg0205;
++ u32 trsv_reg0206;
++ u32 trsv_reg0207;
++};
++
++struct rk_udphy_cfg {
++ unsigned int num_phys;
++ unsigned int phy_ids[2];
++ /* resets to be requested */
++ const char * const *rst_list;
++ int num_rsts;
++
++ struct rk_udphy_grf_cfg grfcfg;
++ struct rk_udphy_vogrf_cfg vogrfcfg[2];
++ const struct rk_udphy_dp_tx_drv_ctrl (*dp_tx_ctrl_cfg[4])[4];
++ const struct rk_udphy_dp_tx_drv_ctrl (*dp_tx_ctrl_cfg_typec[4])[4];
++};
++
++struct rk_udphy {
++ struct device *dev;
++ struct regmap *pma_regmap;
++ struct regmap *u2phygrf;
++ struct regmap *udphygrf;
++ struct regmap *usbgrf;
++ struct regmap *vogrf;
++ struct typec_switch_dev *sw;
++ struct typec_mux_dev *mux;
++ struct mutex mutex; /* mutex to protect access to individual PHYs */
++
++ /* clocks and rests */
++ int num_clks;
++ struct clk_bulk_data *clks;
++ struct clk *refclk;
++ int num_rsts;
++ struct reset_control_bulk_data *rsts;
++
++ /* PHY status management */
++ bool flip;
++ bool mode_change;
++ u8 mode;
++ u8 status;
++
++ /* utilized for USB */
++ bool hs; /* flag for high-speed */
++
++ /* utilized for DP */
++ struct gpio_desc *sbu1_dc_gpio;
++ struct gpio_desc *sbu2_dc_gpio;
++ u32 lane_mux_sel[4];
++ u32 dp_lane_sel[4];
++ u32 dp_aux_dout_sel;
++ u32 dp_aux_din_sel;
++ bool dp_sink_hpd_sel;
++ bool dp_sink_hpd_cfg;
++ u8 bw;
++ int id;
++
++ bool dp_in_use;
++
++ /* PHY const config */
++ const struct rk_udphy_cfg *cfgs;
++
++ /* PHY devices */
++ struct phy *phy_dp;
++ struct phy *phy_u3;
++};
++
++static const struct rk_udphy_dp_tx_drv_ctrl rk3588_dp_tx_drv_ctrl_rbr_hbr[4][4] = {
++ /* voltage swing 0, pre-emphasis 0->3 */
++ {
++ { 0x20, 0x10, 0x42, 0xe5 },
++ { 0x26, 0x14, 0x42, 0xe5 },
++ { 0x29, 0x18, 0x42, 0xe5 },
++ { 0x2b, 0x1c, 0x43, 0xe7 },
++ },
++
++ /* voltage swing 1, pre-emphasis 0->2 */
++ {
++ { 0x23, 0x10, 0x42, 0xe7 },
++ { 0x2a, 0x17, 0x43, 0xe7 },
++ { 0x2b, 0x1a, 0x43, 0xe7 },
++ },
++
++ /* voltage swing 2, pre-emphasis 0->1 */
++ {
++ { 0x27, 0x10, 0x42, 0xe7 },
++ { 0x2b, 0x17, 0x43, 0xe7 },
++ },
++
++ /* voltage swing 3, pre-emphasis 0 */
++ {
++ { 0x29, 0x10, 0x43, 0xe7 },
++ },
++};
++
++static const struct rk_udphy_dp_tx_drv_ctrl rk3588_dp_tx_drv_ctrl_rbr_hbr_typec[4][4] = {
++ /* voltage swing 0, pre-emphasis 0->3 */
++ {
++ { 0x20, 0x10, 0x42, 0xe5 },
++ { 0x26, 0x14, 0x42, 0xe5 },
++ { 0x29, 0x18, 0x42, 0xe5 },
++ { 0x2b, 0x1c, 0x43, 0xe7 },
++ },
++
++ /* voltage swing 1, pre-emphasis 0->2 */
++ {
++ { 0x23, 0x10, 0x42, 0xe7 },
++ { 0x2a, 0x17, 0x43, 0xe7 },
++ { 0x2b, 0x1a, 0x43, 0xe7 },
++ },
++
++ /* voltage swing 2, pre-emphasis 0->1 */
++ {
++ { 0x27, 0x10, 0x43, 0x67 },
++ { 0x2b, 0x17, 0x43, 0xe7 },
++ },
++
++ /* voltage swing 3, pre-emphasis 0 */
++ {
++ { 0x29, 0x10, 0x43, 0xe7 },
++ },
++};
++
++static const struct rk_udphy_dp_tx_drv_ctrl rk3588_dp_tx_drv_ctrl_hbr2[4][4] = {
++ /* voltage swing 0, pre-emphasis 0->3 */
++ {
++ { 0x21, 0x10, 0x42, 0xe5 },
++ { 0x26, 0x14, 0x42, 0xe5 },
++ { 0x26, 0x16, 0x43, 0xe5 },
++ { 0x2a, 0x19, 0x43, 0xe7 },
++ },
++
++ /* voltage swing 1, pre-emphasis 0->2 */
++ {
++ { 0x24, 0x10, 0x42, 0xe7 },
++ { 0x2a, 0x17, 0x43, 0xe7 },
++ { 0x2b, 0x1a, 0x43, 0xe7 },
++ },
++
++ /* voltage swing 2, pre-emphasis 0->1 */
++ {
++ { 0x28, 0x10, 0x42, 0xe7 },
++ { 0x2b, 0x17, 0x43, 0xe7 },
++ },
++
++ /* voltage swing 3, pre-emphasis 0 */
++ {
++ { 0x28, 0x10, 0x43, 0xe7 },
++ },
++};
++
++static const struct rk_udphy_dp_tx_drv_ctrl rk3588_dp_tx_drv_ctrl_hbr3[4][4] = {
++ /* voltage swing 0, pre-emphasis 0->3 */
++ {
++ { 0x21, 0x10, 0x42, 0xe5 },
++ { 0x26, 0x14, 0x42, 0xe5 },
++ { 0x26, 0x16, 0x43, 0xe5 },
++ { 0x29, 0x18, 0x43, 0xe7 },
++ },
++
++ /* voltage swing 1, pre-emphasis 0->2 */
++ {
++ { 0x24, 0x10, 0x42, 0xe7 },
++ { 0x2a, 0x18, 0x43, 0xe7 },
++ { 0x2b, 0x1b, 0x43, 0xe7 }
++ },
++
++ /* voltage swing 2, pre-emphasis 0->1 */
++ {
++ { 0x27, 0x10, 0x42, 0xe7 },
++ { 0x2b, 0x18, 0x43, 0xe7 }
++ },
++
++ /* voltage swing 3, pre-emphasis 0 */
++ {
++ { 0x28, 0x10, 0x43, 0xe7 },
++ },
++};
++
++static const struct reg_sequence rk_udphy_24m_refclk_cfg[] = {
++ {0x0090, 0x68}, {0x0094, 0x68},
++ {0x0128, 0x24}, {0x012c, 0x44},
++ {0x0130, 0x3f}, {0x0134, 0x44},
++ {0x015c, 0xa9}, {0x0160, 0x71},
++ {0x0164, 0x71}, {0x0168, 0xa9},
++ {0x0174, 0xa9}, {0x0178, 0x71},
++ {0x017c, 0x71}, {0x0180, 0xa9},
++ {0x018c, 0x41}, {0x0190, 0x00},
++ {0x0194, 0x05}, {0x01ac, 0x2a},
++ {0x01b0, 0x17}, {0x01b4, 0x17},
++ {0x01b8, 0x2a}, {0x01c8, 0x04},
++ {0x01cc, 0x08}, {0x01d0, 0x08},
++ {0x01d4, 0x04}, {0x01d8, 0x20},
++ {0x01dc, 0x01}, {0x01e0, 0x09},
++ {0x01e4, 0x03}, {0x01f0, 0x29},
++ {0x01f4, 0x02}, {0x01f8, 0x02},
++ {0x01fc, 0x29}, {0x0208, 0x2a},
++ {0x020c, 0x17}, {0x0210, 0x17},
++ {0x0214, 0x2a}, {0x0224, 0x20},
++ {0x03f0, 0x0a}, {0x03f4, 0x07},
++ {0x03f8, 0x07}, {0x03fc, 0x0c},
++ {0x0404, 0x12}, {0x0408, 0x1a},
++ {0x040c, 0x1a}, {0x0410, 0x3f},
++ {0x0ce0, 0x68}, {0x0ce8, 0xd0},
++ {0x0cf0, 0x87}, {0x0cf8, 0x70},
++ {0x0d00, 0x70}, {0x0d08, 0xa9},
++ {0x1ce0, 0x68}, {0x1ce8, 0xd0},
++ {0x1cf0, 0x87}, {0x1cf8, 0x70},
++ {0x1d00, 0x70}, {0x1d08, 0xa9},
++ {0x0a3c, 0xd0}, {0x0a44, 0xd0},
++ {0x0a48, 0x01}, {0x0a4c, 0x0d},
++ {0x0a54, 0xe0}, {0x0a5c, 0xe0},
++ {0x0a64, 0xa8}, {0x1a3c, 0xd0},
++ {0x1a44, 0xd0}, {0x1a48, 0x01},
++ {0x1a4c, 0x0d}, {0x1a54, 0xe0},
++ {0x1a5c, 0xe0}, {0x1a64, 0xa8}
++};
++
++static const struct reg_sequence rk_udphy_26m_refclk_cfg[] = {
++ {0x0830, 0x07}, {0x085c, 0x80},
++ {0x1030, 0x07}, {0x105c, 0x80},
++ {0x1830, 0x07}, {0x185c, 0x80},
++ {0x2030, 0x07}, {0x205c, 0x80},
++ {0x0228, 0x38}, {0x0104, 0x44},
++ {0x0248, 0x44}, {0x038c, 0x02},
++ {0x0878, 0x04}, {0x1878, 0x04},
++ {0x0898, 0x77}, {0x1898, 0x77},
++ {0x0054, 0x01}, {0x00e0, 0x38},
++ {0x0060, 0x24}, {0x0064, 0x77},
++ {0x0070, 0x76}, {0x0234, 0xe8},
++ {0x0af4, 0x15}, {0x1af4, 0x15},
++ {0x081c, 0xe5}, {0x181c, 0xe5},
++ {0x099c, 0x48}, {0x199c, 0x48},
++ {0x09a4, 0x07}, {0x09a8, 0x22},
++ {0x19a4, 0x07}, {0x19a8, 0x22},
++ {0x09b8, 0x3e}, {0x19b8, 0x3e},
++ {0x09e4, 0x02}, {0x19e4, 0x02},
++ {0x0a34, 0x1e}, {0x1a34, 0x1e},
++ {0x0a98, 0x2f}, {0x1a98, 0x2f},
++ {0x0c30, 0x0e}, {0x0c48, 0x06},
++ {0x1c30, 0x0e}, {0x1c48, 0x06},
++ {0x028c, 0x18}, {0x0af0, 0x00},
++ {0x1af0, 0x00}
++};
++
++static const struct reg_sequence rk_udphy_init_sequence[] = {
++ {0x0104, 0x44}, {0x0234, 0xe8},
++ {0x0248, 0x44}, {0x028c, 0x18},
++ {0x081c, 0xe5}, {0x0878, 0x00},
++ {0x0994, 0x1c}, {0x0af0, 0x00},
++ {0x181c, 0xe5}, {0x1878, 0x00},
++ {0x1994, 0x1c}, {0x1af0, 0x00},
++ {0x0428, 0x60}, {0x0d58, 0x33},
++ {0x1d58, 0x33}, {0x0990, 0x74},
++ {0x0d64, 0x17}, {0x08c8, 0x13},
++ {0x1990, 0x74}, {0x1d64, 0x17},
++ {0x18c8, 0x13}, {0x0d90, 0x40},
++ {0x0da8, 0x40}, {0x0dc0, 0x40},
++ {0x0dd8, 0x40}, {0x1d90, 0x40},
++ {0x1da8, 0x40}, {0x1dc0, 0x40},
++ {0x1dd8, 0x40}, {0x03c0, 0x30},
++ {0x03c4, 0x06}, {0x0e10, 0x00},
++ {0x1e10, 0x00}, {0x043c, 0x0f},
++ {0x0d2c, 0xff}, {0x1d2c, 0xff},
++ {0x0d34, 0x0f}, {0x1d34, 0x0f},
++ {0x08fc, 0x2a}, {0x0914, 0x28},
++ {0x0a30, 0x03}, {0x0e38, 0x03},
++ {0x0ecc, 0x27}, {0x0ed0, 0x22},
++ {0x0ed4, 0x26}, {0x18fc, 0x2a},
++ {0x1914, 0x28}, {0x1a30, 0x03},
++ {0x1e38, 0x03}, {0x1ecc, 0x27},
++ {0x1ed0, 0x22}, {0x1ed4, 0x26},
++ {0x0048, 0x0f}, {0x0060, 0x3c},
++ {0x0064, 0xf7}, {0x006c, 0x20},
++ {0x0070, 0x7d}, {0x0074, 0x68},
++ {0x0af4, 0x1a}, {0x1af4, 0x1a},
++ {0x0440, 0x3f}, {0x10d4, 0x08},
++ {0x20d4, 0x08}, {0x00d4, 0x30},
++ {0x0024, 0x6e},
++};
++
++static inline int rk_udphy_grfreg_write(struct regmap *base,
++ const struct rk_udphy_grf_reg *reg, bool en)
++{
++ return regmap_write(base, reg->offset, en ? reg->enable : reg->disable);
++}
++
++static int rk_udphy_clk_init(struct rk_udphy *udphy, struct device *dev)
++{
++ int i;
++
++ udphy->num_clks = devm_clk_bulk_get_all(dev, &udphy->clks);
++ if (udphy->num_clks < 1)
++ return -ENODEV;
++
++ /* used for configure phy reference clock frequency */
++ for (i = 0; i < udphy->num_clks; i++) {
++ if (!strncmp(udphy->clks[i].id, "refclk", 6)) {
++ udphy->refclk = udphy->clks[i].clk;
++ break;
++ }
++ }
++
++ if (!udphy->refclk)
++ return dev_err_probe(udphy->dev, -EINVAL, "no refclk found\n");
++
++ return 0;
++}
++
++static int rk_udphy_reset_assert_all(struct rk_udphy *udphy)
++{
++ return reset_control_bulk_assert(udphy->num_rsts, udphy->rsts);
++}
++
++static int rk_udphy_reset_deassert_all(struct rk_udphy *udphy)
++{
++ return reset_control_bulk_deassert(udphy->num_rsts, udphy->rsts);
++}
++
++static int rk_udphy_reset_deassert(struct rk_udphy *udphy, char *name)
++{
++ struct reset_control_bulk_data *list = udphy->rsts;
++ int idx;
++
++ for (idx = 0; idx < udphy->num_rsts; idx++) {
++ if (!strcmp(list[idx].id, name))
++ return reset_control_deassert(list[idx].rstc);
++ }
++
++ return -EINVAL;
++}
++
++static int rk_udphy_reset_init(struct rk_udphy *udphy, struct device *dev)
++{
++ const struct rk_udphy_cfg *cfg = udphy->cfgs;
++ int idx;
++
++ udphy->num_rsts = cfg->num_rsts;
++ udphy->rsts = devm_kcalloc(dev, udphy->num_rsts,
++ sizeof(*udphy->rsts), GFP_KERNEL);
++ if (!udphy->rsts)
++ return -ENOMEM;
++
++ for (idx = 0; idx < cfg->num_rsts; idx++)
++ udphy->rsts[idx].id = cfg->rst_list[idx];
++
++ return devm_reset_control_bulk_get_exclusive(dev, cfg->num_rsts,
++ udphy->rsts);
++}
++
++static void rk_udphy_u3_port_disable(struct rk_udphy *udphy, u8 disable)
++{
++ const struct rk_udphy_cfg *cfg = udphy->cfgs;
++ const struct rk_udphy_grf_reg *preg;
++
++ preg = udphy->id ? &cfg->grfcfg.usb3otg1_cfg : &cfg->grfcfg.usb3otg0_cfg;
++ rk_udphy_grfreg_write(udphy->usbgrf, preg, disable);
++}
++
++static void rk_udphy_usb_bvalid_enable(struct rk_udphy *udphy, u8 enable)
++{
++ const struct rk_udphy_cfg *cfg = udphy->cfgs;
++
++ rk_udphy_grfreg_write(udphy->u2phygrf, &cfg->grfcfg.bvalid_phy_con, enable);
++ rk_udphy_grfreg_write(udphy->u2phygrf, &cfg->grfcfg.bvalid_grf_con, enable);
++}
++
++/*
++ * In usb/dp combo phy driver, here are 2 ways to mapping lanes.
++ *
++ * 1 Type-C Mapping table (DP_Alt_Mode V1.0b remove ABF pin mapping)
++ * ---------------------------------------------------------------------------
++ * Type-C Pin B11-B10 A2-A3 A11-A10 B2-B3
++ * PHY Pad ln0(tx/rx) ln1(tx) ln2(tx/rx) ln3(tx)
++ * C/E(Normal) dpln3 dpln2 dpln0 dpln1
++ * C/E(Flip ) dpln0 dpln1 dpln3 dpln2
++ * D/F(Normal) usbrx usbtx dpln0 dpln1
++ * D/F(Flip ) dpln0 dpln1 usbrx usbtx
++ * A(Normal ) dpln3 dpln1 dpln2 dpln0
++ * A(Flip ) dpln2 dpln0 dpln3 dpln1
++ * B(Normal ) usbrx usbtx dpln1 dpln0
++ * B(Flip ) dpln1 dpln0 usbrx usbtx
++ * ---------------------------------------------------------------------------
++ *
++ * 2 Mapping the lanes in dtsi
++ * if all 4 lane assignment for dp function, define rockchip,dp-lane-mux = ;
++ * sample as follow:
++ * ---------------------------------------------------------------------------
++ * B11-B10 A2-A3 A11-A10 B2-B3
++ * rockchip,dp-lane-mux ln0(tx/rx) ln1(tx) ln2(tx/rx) ln3(tx)
++ * <0 1 2 3> dpln0 dpln1 dpln2 dpln3
++ * <2 3 0 1> dpln2 dpln3 dpln0 dpln1
++ * ---------------------------------------------------------------------------
++ * if 2 lane for dp function, 2 lane for usb function, define rockchip,dp-lane-mux = ;
++ * sample as follow:
++ * ---------------------------------------------------------------------------
++ * B11-B10 A2-A3 A11-A10 B2-B3
++ * rockchip,dp-lane-mux ln0(tx/rx) ln1(tx) ln2(tx/rx) ln3(tx)
++ * <0 1> dpln0 dpln1 usbrx usbtx
++ * <2 3> usbrx usbtx dpln0 dpln1
++ * ---------------------------------------------------------------------------
++ */
++
++static void rk_udphy_dplane_select(struct rk_udphy *udphy)
++{
++ const struct rk_udphy_cfg *cfg = udphy->cfgs;
++ u32 value = 0;
++
++ switch (udphy->mode) {
++ case UDPHY_MODE_DP:
++ value |= 2 << udphy->dp_lane_sel[2] * 2;
++ value |= 3 << udphy->dp_lane_sel[3] * 2;
++ fallthrough;
++
++ case UDPHY_MODE_DP_USB:
++ value |= 0 << udphy->dp_lane_sel[0] * 2;
++ value |= 1 << udphy->dp_lane_sel[1] * 2;
++ break;
++
++ case UDPHY_MODE_USB:
++ break;
++
++ default:
++ break;
++ }
++
++ regmap_write(udphy->vogrf, cfg->vogrfcfg[udphy->id].dp_lane_reg,
++ ((DP_AUX_DIN_SEL | DP_AUX_DOUT_SEL | DP_LANE_SEL_ALL) << 16) |
++ FIELD_PREP(DP_AUX_DIN_SEL, udphy->dp_aux_din_sel) |
++ FIELD_PREP(DP_AUX_DOUT_SEL, udphy->dp_aux_dout_sel) | value);
++}
++
++static int rk_udphy_dplane_get(struct rk_udphy *udphy)
++{
++ int dp_lanes;
++
++ switch (udphy->mode) {
++ case UDPHY_MODE_DP:
++ dp_lanes = 4;
++ break;
++
++ case UDPHY_MODE_DP_USB:
++ dp_lanes = 2;
++ break;
++
++ case UDPHY_MODE_USB:
++ default:
++ dp_lanes = 0;
++ break;
++ }
++
++ return dp_lanes;
++}
++
++static void rk_udphy_dplane_enable(struct rk_udphy *udphy, int dp_lanes)
++{
++ u32 val = 0;
++ int i;
++
++ for (i = 0; i < dp_lanes; i++)
++ val |= BIT(udphy->dp_lane_sel[i]);
++
++ regmap_update_bits(udphy->pma_regmap, CMN_LANE_MUX_AND_EN_OFFSET, CMN_DP_LANE_EN_ALL,
++ FIELD_PREP(CMN_DP_LANE_EN_ALL, val));
++
++ if (!dp_lanes)
++ regmap_update_bits(udphy->pma_regmap, CMN_DP_RSTN_OFFSET,
++ CMN_DP_CMN_RSTN, FIELD_PREP(CMN_DP_CMN_RSTN, 0x0));
++}
++
++static void rk_udphy_dp_hpd_event_trigger(struct rk_udphy *udphy, bool hpd)
++{
++ const struct rk_udphy_cfg *cfg = udphy->cfgs;
++
++ udphy->dp_sink_hpd_sel = true;
++ udphy->dp_sink_hpd_cfg = hpd;
++
++ if (!udphy->dp_in_use)
++ return;
++
++ rk_udphy_grfreg_write(udphy->vogrf, &cfg->vogrfcfg[udphy->id].hpd_trigger, hpd);
++}
++
++static void rk_udphy_set_typec_default_mapping(struct rk_udphy *udphy)
++{
++ if (udphy->flip) {
++ udphy->dp_lane_sel[0] = 0;
++ udphy->dp_lane_sel[1] = 1;
++ udphy->dp_lane_sel[2] = 3;
++ udphy->dp_lane_sel[3] = 2;
++ udphy->lane_mux_sel[0] = PHY_LANE_MUX_DP;
++ udphy->lane_mux_sel[1] = PHY_LANE_MUX_DP;
++ udphy->lane_mux_sel[2] = PHY_LANE_MUX_USB;
++ udphy->lane_mux_sel[3] = PHY_LANE_MUX_USB;
++ udphy->dp_aux_dout_sel = PHY_AUX_DP_DATA_POL_INVERT;
++ udphy->dp_aux_din_sel = PHY_AUX_DP_DATA_POL_INVERT;
++ gpiod_set_value_cansleep(udphy->sbu1_dc_gpio, 1);
++ gpiod_set_value_cansleep(udphy->sbu2_dc_gpio, 0);
++ } else {
++ udphy->dp_lane_sel[0] = 2;
++ udphy->dp_lane_sel[1] = 3;
++ udphy->dp_lane_sel[2] = 1;
++ udphy->dp_lane_sel[3] = 0;
++ udphy->lane_mux_sel[0] = PHY_LANE_MUX_USB;
++ udphy->lane_mux_sel[1] = PHY_LANE_MUX_USB;
++ udphy->lane_mux_sel[2] = PHY_LANE_MUX_DP;
++ udphy->lane_mux_sel[3] = PHY_LANE_MUX_DP;
++ udphy->dp_aux_dout_sel = PHY_AUX_DP_DATA_POL_NORMAL;
++ udphy->dp_aux_din_sel = PHY_AUX_DP_DATA_POL_NORMAL;
++ gpiod_set_value_cansleep(udphy->sbu1_dc_gpio, 0);
++ gpiod_set_value_cansleep(udphy->sbu2_dc_gpio, 1);
++ }
++
++ udphy->mode = UDPHY_MODE_DP_USB;
++}
++
++static int rk_udphy_orien_sw_set(struct typec_switch_dev *sw,
++ enum typec_orientation orien)
++{
++ struct rk_udphy *udphy = typec_switch_get_drvdata(sw);
++
++ mutex_lock(&udphy->mutex);
++
++ if (orien == TYPEC_ORIENTATION_NONE) {
++ gpiod_set_value_cansleep(udphy->sbu1_dc_gpio, 0);
++ gpiod_set_value_cansleep(udphy->sbu2_dc_gpio, 0);
++ /* unattached */
++ rk_udphy_usb_bvalid_enable(udphy, false);
++ goto unlock_ret;
++ }
++
++ udphy->flip = (orien == TYPEC_ORIENTATION_REVERSE) ? true : false;
++ rk_udphy_set_typec_default_mapping(udphy);
++ rk_udphy_usb_bvalid_enable(udphy, true);
++
++unlock_ret:
++ mutex_unlock(&udphy->mutex);
++ return 0;
++}
++
++static void rk_udphy_orien_switch_unregister(void *data)
++{
++ struct rk_udphy *udphy = data;
++
++ typec_switch_unregister(udphy->sw);
++}
++
++static int rk_udphy_setup_orien_switch(struct rk_udphy *udphy)
++{
++ struct typec_switch_desc sw_desc = { };
++
++ sw_desc.drvdata = udphy;
++ sw_desc.fwnode = dev_fwnode(udphy->dev);
++ sw_desc.set = rk_udphy_orien_sw_set;
++
++ udphy->sw = typec_switch_register(udphy->dev, &sw_desc);
++ if (IS_ERR(udphy->sw)) {
++ dev_err(udphy->dev, "Error register typec orientation switch: %ld\n",
++ PTR_ERR(udphy->sw));
++ return PTR_ERR(udphy->sw);
++ }
++
++ return devm_add_action_or_reset(udphy->dev,
++ rk_udphy_orien_switch_unregister, udphy);
++}
++
++static int rk_udphy_refclk_set(struct rk_udphy *udphy)
++{
++ unsigned long rate;
++ int ret;
++
++ /* configure phy reference clock */
++ rate = clk_get_rate(udphy->refclk);
++ dev_dbg(udphy->dev, "refclk freq %ld\n", rate);
++
++ switch (rate) {
++ case 24000000:
++ ret = regmap_multi_reg_write(udphy->pma_regmap, rk_udphy_24m_refclk_cfg,
++ ARRAY_SIZE(rk_udphy_24m_refclk_cfg));
++ if (ret)
++ return ret;
++ break;
++
++ case 26000000:
++ /* register default is 26MHz */
++ ret = regmap_multi_reg_write(udphy->pma_regmap, rk_udphy_26m_refclk_cfg,
++ ARRAY_SIZE(rk_udphy_26m_refclk_cfg));
++ if (ret)
++ return ret;
++ break;
++
++ default:
++ dev_err(udphy->dev, "unsupported refclk freq %ld\n", rate);
++ return -EINVAL;
++ }
++
++ return 0;
++}
++
++static int rk_udphy_status_check(struct rk_udphy *udphy)
++{
++ unsigned int val;
++ int ret;
++
++ /* LCPLL check */
++ if (udphy->mode & UDPHY_MODE_USB) {
++ ret = regmap_read_poll_timeout(udphy->pma_regmap, CMN_ANA_LCPLL_DONE_OFFSET,
++ val, (val & CMN_ANA_LCPLL_AFC_DONE) &&
++ (val & CMN_ANA_LCPLL_LOCK_DONE), 200, 100000);
++ if (ret) {
++ dev_err(udphy->dev, "cmn ana lcpll lock timeout\n");
++ /*
++ * If earlier software (U-Boot) enabled USB once already
++ * the PLL may have problems locking on the first try.
++ * It will be successful on the second try, so for the
++ * time being a -EPROBE_DEFER will solve the issue.
++ *
++ * This requires further investigation to understand the
++ * root cause, especially considering that the driver is
++ * asserting all reset lines at probe time.
++ */
++ return -EPROBE_DEFER;
++ }
++
++ if (!udphy->flip) {
++ ret = regmap_read_poll_timeout(udphy->pma_regmap,
++ TRSV_LN0_MON_RX_CDR_DONE_OFFSET, val,
++ val & TRSV_LN0_MON_RX_CDR_LOCK_DONE,
++ 200, 100000);
++ if (ret)
++ dev_err(udphy->dev, "trsv ln0 mon rx cdr lock timeout\n");
++ } else {
++ ret = regmap_read_poll_timeout(udphy->pma_regmap,
++ TRSV_LN2_MON_RX_CDR_DONE_OFFSET, val,
++ val & TRSV_LN2_MON_RX_CDR_LOCK_DONE,
++ 200, 100000);
++ if (ret)
++ dev_err(udphy->dev, "trsv ln2 mon rx cdr lock timeout\n");
++ }
++ }
++
++ return 0;
++}
++
++static int rk_udphy_init(struct rk_udphy *udphy)
++{
++ const struct rk_udphy_cfg *cfg = udphy->cfgs;
++ int ret;
++
++ rk_udphy_reset_assert_all(udphy);
++ usleep_range(10000, 11000);
++
++ /* enable rx lfps for usb */
++ if (udphy->mode & UDPHY_MODE_USB)
++ rk_udphy_grfreg_write(udphy->udphygrf, &cfg->grfcfg.rx_lfps, true);
++
++ /* Step 1: power on pma and deassert apb rstn */
++ rk_udphy_grfreg_write(udphy->udphygrf, &cfg->grfcfg.low_pwrn, true);
++
++ rk_udphy_reset_deassert(udphy, "pma_apb");
++ rk_udphy_reset_deassert(udphy, "pcs_apb");
++
++ /* Step 2: set init sequence and phy refclk */
++ ret = regmap_multi_reg_write(udphy->pma_regmap, rk_udphy_init_sequence,
++ ARRAY_SIZE(rk_udphy_init_sequence));
++ if (ret) {
++ dev_err(udphy->dev, "init sequence set error %d\n", ret);
++ goto assert_resets;
++ }
++
++ ret = rk_udphy_refclk_set(udphy);
++ if (ret) {
++ dev_err(udphy->dev, "refclk set error %d\n", ret);
++ goto assert_resets;
++ }
++
++ /* Step 3: configure lane mux */
++ regmap_update_bits(udphy->pma_regmap, CMN_LANE_MUX_AND_EN_OFFSET,
++ CMN_DP_LANE_MUX_ALL | CMN_DP_LANE_EN_ALL,
++ FIELD_PREP(CMN_DP_LANE_MUX_N(3), udphy->lane_mux_sel[3]) |
++ FIELD_PREP(CMN_DP_LANE_MUX_N(2), udphy->lane_mux_sel[2]) |
++ FIELD_PREP(CMN_DP_LANE_MUX_N(1), udphy->lane_mux_sel[1]) |
++ FIELD_PREP(CMN_DP_LANE_MUX_N(0), udphy->lane_mux_sel[0]) |
++ FIELD_PREP(CMN_DP_LANE_EN_ALL, 0));
++
++ /* Step 4: deassert init rstn and wait for 200ns from datasheet */
++ if (udphy->mode & UDPHY_MODE_USB)
++ rk_udphy_reset_deassert(udphy, "init");
++
++ if (udphy->mode & UDPHY_MODE_DP) {
++ regmap_update_bits(udphy->pma_regmap, CMN_DP_RSTN_OFFSET,
++ CMN_DP_INIT_RSTN,
++ FIELD_PREP(CMN_DP_INIT_RSTN, 0x1));
++ }
++
++ udelay(1);
++
++ /* Step 5: deassert cmn/lane rstn */
++ if (udphy->mode & UDPHY_MODE_USB) {
++ rk_udphy_reset_deassert(udphy, "cmn");
++ rk_udphy_reset_deassert(udphy, "lane");
++ }
++
++ /* Step 6: wait for lock done of pll */
++ ret = rk_udphy_status_check(udphy);
++ if (ret)
++ goto assert_resets;
++
++ return 0;
++
++assert_resets:
++ rk_udphy_reset_assert_all(udphy);
++ return ret;
++}
++
++static int rk_udphy_setup(struct rk_udphy *udphy)
++{
++ int ret;
++
++ ret = clk_bulk_prepare_enable(udphy->num_clks, udphy->clks);
++ if (ret) {
++ dev_err(udphy->dev, "failed to enable clk\n");
++ return ret;
++ }
++
++ ret = rk_udphy_init(udphy);
++ if (ret) {
++ dev_err(udphy->dev, "failed to init combophy\n");
++ clk_bulk_disable_unprepare(udphy->num_clks, udphy->clks);
++ return ret;
++ }
++
++ return 0;
++}
++
++static void rk_udphy_disable(struct rk_udphy *udphy)
++{
++ clk_bulk_disable_unprepare(udphy->num_clks, udphy->clks);
++ rk_udphy_reset_assert_all(udphy);
++}
++
++static int rk_udphy_parse_lane_mux_data(struct rk_udphy *udphy)
++{
++ int ret, i, num_lanes;
++
++ num_lanes = device_property_count_u32(udphy->dev, "rockchip,dp-lane-mux");
++ if (num_lanes < 0) {
++ dev_dbg(udphy->dev, "no dp-lane-mux, following dp alt mode\n");
++ udphy->mode = UDPHY_MODE_USB;
++ return 0;
++ }
++
++ if (num_lanes != 2 && num_lanes != 4)
++ return dev_err_probe(udphy->dev, -EINVAL,
++ "invalid number of lane mux\n");
++
++ ret = device_property_read_u32_array(udphy->dev, "rockchip,dp-lane-mux",
++ udphy->dp_lane_sel, num_lanes);
++ if (ret)
++ return dev_err_probe(udphy->dev, ret, "get dp lane mux failed\n");
++
++ for (i = 0; i < num_lanes; i++) {
++ int j;
++
++ if (udphy->dp_lane_sel[i] > 3)
++ return dev_err_probe(udphy->dev, -EINVAL,
++ "lane mux between 0 and 3, exceeding the range\n");
++
++ udphy->lane_mux_sel[udphy->dp_lane_sel[i]] = PHY_LANE_MUX_DP;
++
++ for (j = i + 1; j < num_lanes; j++) {
++ if (udphy->dp_lane_sel[i] == udphy->dp_lane_sel[j])
++ return dev_err_probe(udphy->dev, -EINVAL,
++ "set repeat lane mux value\n");
++ }
++ }
++
++ udphy->mode = UDPHY_MODE_DP;
++ if (num_lanes == 2) {
++ udphy->mode |= UDPHY_MODE_USB;
++ udphy->flip = (udphy->lane_mux_sel[0] == PHY_LANE_MUX_DP);
++ }
++
++ return 0;
++}
++
++static int rk_udphy_get_initial_status(struct rk_udphy *udphy)
++{
++ int ret;
++ u32 value;
++
++ ret = clk_bulk_prepare_enable(udphy->num_clks, udphy->clks);
++ if (ret) {
++ dev_err(udphy->dev, "failed to enable clk\n");
++ return ret;
++ }
++
++ rk_udphy_reset_deassert_all(udphy);
++
++ regmap_read(udphy->pma_regmap, CMN_LANE_MUX_AND_EN_OFFSET, &value);
++ if (FIELD_GET(CMN_DP_LANE_MUX_ALL, value) && FIELD_GET(CMN_DP_LANE_EN_ALL, value))
++ udphy->status = UDPHY_MODE_DP;
++ else
++ rk_udphy_disable(udphy);
++
++ return 0;
++}
++
++static int rk_udphy_parse_dt(struct rk_udphy *udphy)
++{
++ struct device *dev = udphy->dev;
++ struct device_node *np = dev_of_node(dev);
++ enum usb_device_speed maximum_speed;
++ int ret;
++
++ udphy->u2phygrf = syscon_regmap_lookup_by_phandle(np, "rockchip,u2phy-grf");
++ if (IS_ERR(udphy->u2phygrf))
++ return dev_err_probe(dev, PTR_ERR(udphy->u2phygrf), "failed to get u2phy-grf\n");
++
++ udphy->udphygrf = syscon_regmap_lookup_by_phandle(np, "rockchip,usbdpphy-grf");
++ if (IS_ERR(udphy->udphygrf))
++ return dev_err_probe(dev, PTR_ERR(udphy->udphygrf), "failed to get usbdpphy-grf\n");
++
++ udphy->usbgrf = syscon_regmap_lookup_by_phandle(np, "rockchip,usb-grf");
++ if (IS_ERR(udphy->usbgrf))
++ return dev_err_probe(dev, PTR_ERR(udphy->usbgrf), "failed to get usb-grf\n");
++
++ udphy->vogrf = syscon_regmap_lookup_by_phandle(np, "rockchip,vo-grf");
++ if (IS_ERR(udphy->vogrf))
++ return dev_err_probe(dev, PTR_ERR(udphy->vogrf), "failed to get vo-grf\n");
++
++ ret = rk_udphy_parse_lane_mux_data(udphy);
++ if (ret)
++ return ret;
++
++ udphy->sbu1_dc_gpio = devm_gpiod_get_optional(dev, "sbu1-dc", GPIOD_OUT_LOW);
++ if (IS_ERR(udphy->sbu1_dc_gpio))
++ return PTR_ERR(udphy->sbu1_dc_gpio);
++
++ udphy->sbu2_dc_gpio = devm_gpiod_get_optional(dev, "sbu2-dc", GPIOD_OUT_LOW);
++ if (IS_ERR(udphy->sbu2_dc_gpio))
++ return PTR_ERR(udphy->sbu2_dc_gpio);
++
++ if (device_property_present(dev, "maximum-speed")) {
++ maximum_speed = usb_get_maximum_speed(dev);
++ udphy->hs = maximum_speed <= USB_SPEED_HIGH ? true : false;
++ }
++
++ ret = rk_udphy_clk_init(udphy, dev);
++ if (ret)
++ return ret;
++
++ return rk_udphy_reset_init(udphy, dev);
++}
++
++static int rk_udphy_power_on(struct rk_udphy *udphy, u8 mode)
++{
++ int ret;
++
++ if (!(udphy->mode & mode)) {
++ dev_info(udphy->dev, "mode 0x%02x is not support\n", mode);
++ return 0;
++ }
++
++ if (udphy->status == UDPHY_MODE_NONE) {
++ udphy->mode_change = false;
++ ret = rk_udphy_setup(udphy);
++ if (ret)
++ return ret;
++
++ if (udphy->mode & UDPHY_MODE_USB)
++ rk_udphy_u3_port_disable(udphy, false);
++ } else if (udphy->mode_change) {
++ udphy->mode_change = false;
++ udphy->status = UDPHY_MODE_NONE;
++ if (udphy->mode == UDPHY_MODE_DP)
++ rk_udphy_u3_port_disable(udphy, true);
++
++ rk_udphy_disable(udphy);
++ ret = rk_udphy_setup(udphy);
++ if (ret)
++ return ret;
++ }
++
++ udphy->status |= mode;
++
++ return 0;
++}
++
++static void rk_udphy_power_off(struct rk_udphy *udphy, u8 mode)
++{
++ if (!(udphy->mode & mode)) {
++ dev_info(udphy->dev, "mode 0x%02x is not support\n", mode);
++ return;
++ }
++
++ if (!udphy->status)
++ return;
++
++ udphy->status &= ~mode;
++
++ if (udphy->status == UDPHY_MODE_NONE)
++ rk_udphy_disable(udphy);
++}
++
++static int rk_udphy_dp_phy_init(struct phy *phy)
++{
++ struct rk_udphy *udphy = phy_get_drvdata(phy);
++
++ mutex_lock(&udphy->mutex);
++
++ udphy->dp_in_use = true;
++ rk_udphy_dp_hpd_event_trigger(udphy, udphy->dp_sink_hpd_cfg);
++
++ mutex_unlock(&udphy->mutex);
++
++ return 0;
++}
++
++static int rk_udphy_dp_phy_exit(struct phy *phy)
++{
++ struct rk_udphy *udphy = phy_get_drvdata(phy);
++
++ mutex_lock(&udphy->mutex);
++ udphy->dp_in_use = false;
++ mutex_unlock(&udphy->mutex);
++ return 0;
++}
++
++static int rk_udphy_dp_phy_power_on(struct phy *phy)
++{
++ struct rk_udphy *udphy = phy_get_drvdata(phy);
++ int ret, dp_lanes;
++
++ mutex_lock(&udphy->mutex);
++
++ dp_lanes = rk_udphy_dplane_get(udphy);
++ phy_set_bus_width(phy, dp_lanes);
++
++ ret = rk_udphy_power_on(udphy, UDPHY_MODE_DP);
++ if (ret)
++ goto unlock;
++
++ rk_udphy_dplane_enable(udphy, dp_lanes);
++
++ rk_udphy_dplane_select(udphy);
++
++unlock:
++ mutex_unlock(&udphy->mutex);
++ /*
++ * If data send by aux channel too fast after phy power on,
++ * the aux may be not ready which will cause aux error. Adding
++ * delay to avoid this issue.
++ */
++ usleep_range(10000, 11000);
++ return ret;
++}
++
++static int rk_udphy_dp_phy_power_off(struct phy *phy)
++{
++ struct rk_udphy *udphy = phy_get_drvdata(phy);
++
++ mutex_lock(&udphy->mutex);
++ rk_udphy_dplane_enable(udphy, 0);
++ rk_udphy_power_off(udphy, UDPHY_MODE_DP);
++ mutex_unlock(&udphy->mutex);
++
++ return 0;
++}
++
++static int rk_udphy_dp_phy_verify_link_rate(unsigned int link_rate)
++{
++ switch (link_rate) {
++ case 1620:
++ case 2700:
++ case 5400:
++ case 8100:
++ break;
++
++ default:
++ return -EINVAL;
++ }
++
++ return 0;
++}
++
++static int rk_udphy_dp_phy_verify_config(struct rk_udphy *udphy,
++ struct phy_configure_opts_dp *dp)
++{
++ int i, ret;
++
++ /* If changing link rate was required, verify it's supported. */
++ ret = rk_udphy_dp_phy_verify_link_rate(dp->link_rate);
++ if (ret)
++ return ret;
++
++ /* Verify lane count. */
++ switch (dp->lanes) {
++ case 1:
++ case 2:
++ case 4:
++ /* valid lane count. */
++ break;
++
++ default:
++ return -EINVAL;
++ }
++
++ /*
++ * If changing voltages is required, check swing and pre-emphasis
++ * levels, per-lane.
++ */
++ if (dp->set_voltages) {
++ /* Lane count verified previously. */
++ for (i = 0; i < dp->lanes; i++) {
++ if (dp->voltage[i] > 3 || dp->pre[i] > 3)
++ return -EINVAL;
++
++ /*
++ * Sum of voltage swing and pre-emphasis levels cannot
++ * exceed 3.
++ */
++ if (dp->voltage[i] + dp->pre[i] > 3)
++ return -EINVAL;
++ }
++ }
++
++ return 0;
++}
++
++static void rk_udphy_dp_set_voltage(struct rk_udphy *udphy, u8 bw,
++ u32 voltage, u32 pre, u32 lane)
++{
++ const struct rk_udphy_cfg *cfg = udphy->cfgs;
++ const struct rk_udphy_dp_tx_drv_ctrl (*dp_ctrl)[4];
++ u32 offset = 0x800 * lane;
++ u32 val;
++
++ if (udphy->mux)
++ dp_ctrl = cfg->dp_tx_ctrl_cfg_typec[bw];
++ else
++ dp_ctrl = cfg->dp_tx_ctrl_cfg[bw];
++
++ val = dp_ctrl[voltage][pre].trsv_reg0204;
++ regmap_write(udphy->pma_regmap, 0x0810 + offset, val);
++
++ val = dp_ctrl[voltage][pre].trsv_reg0205;
++ regmap_write(udphy->pma_regmap, 0x0814 + offset, val);
++
++ val = dp_ctrl[voltage][pre].trsv_reg0206;
++ regmap_write(udphy->pma_regmap, 0x0818 + offset, val);
++
++ val = dp_ctrl[voltage][pre].trsv_reg0207;
++ regmap_write(udphy->pma_regmap, 0x081c + offset, val);
++}
++
++static int rk_udphy_dp_phy_configure(struct phy *phy,
++ union phy_configure_opts *opts)
++{
++ struct rk_udphy *udphy = phy_get_drvdata(phy);
++ struct phy_configure_opts_dp *dp = &opts->dp;
++ u32 i, val, lane;
++ int ret;
++
++ ret = rk_udphy_dp_phy_verify_config(udphy, dp);
++ if (ret)
++ return ret;
++
++ if (dp->set_rate) {
++ regmap_update_bits(udphy->pma_regmap, CMN_DP_RSTN_OFFSET,
++ CMN_DP_CMN_RSTN, FIELD_PREP(CMN_DP_CMN_RSTN, 0x0));
++
++ switch (dp->link_rate) {
++ case 1620:
++ udphy->bw = DP_BW_RBR;
++ break;
++
++ case 2700:
++ udphy->bw = DP_BW_HBR;
++ break;
++
++ case 5400:
++ udphy->bw = DP_BW_HBR2;
++ break;
++
++ case 8100:
++ udphy->bw = DP_BW_HBR3;
++ break;
++
++ default:
++ return -EINVAL;
++ }
++
++ regmap_update_bits(udphy->pma_regmap, CMN_DP_LINK_OFFSET, CMN_DP_TX_LINK_BW,
++ FIELD_PREP(CMN_DP_TX_LINK_BW, udphy->bw));
++ regmap_update_bits(udphy->pma_regmap, CMN_SSC_EN_OFFSET, CMN_ROPLL_SSC_EN,
++ FIELD_PREP(CMN_ROPLL_SSC_EN, dp->ssc));
++ regmap_update_bits(udphy->pma_regmap, CMN_DP_RSTN_OFFSET, CMN_DP_CMN_RSTN,
++ FIELD_PREP(CMN_DP_CMN_RSTN, 0x1));
++
++ ret = regmap_read_poll_timeout(udphy->pma_regmap, CMN_ANA_ROPLL_DONE_OFFSET, val,
++ FIELD_GET(CMN_ANA_ROPLL_LOCK_DONE, val) &&
++ FIELD_GET(CMN_ANA_ROPLL_AFC_DONE, val),
++ 0, 1000);
++ if (ret) {
++ dev_err(udphy->dev, "ROPLL is not lock, set_rate failed\n");
++ return ret;
++ }
++ }
++
++ if (dp->set_voltages) {
++ for (i = 0; i < dp->lanes; i++) {
++ lane = udphy->dp_lane_sel[i];
++ switch (dp->link_rate) {
++ case 1620:
++ case 2700:
++ regmap_update_bits(udphy->pma_regmap,
++ TRSV_ANA_TX_CLK_OFFSET_N(lane),
++ LN_ANA_TX_SER_TXCLK_INV,
++ FIELD_PREP(LN_ANA_TX_SER_TXCLK_INV,
++ udphy->lane_mux_sel[lane]));
++ break;
++
++ case 5400:
++ case 8100:
++ regmap_update_bits(udphy->pma_regmap,
++ TRSV_ANA_TX_CLK_OFFSET_N(lane),
++ LN_ANA_TX_SER_TXCLK_INV,
++ FIELD_PREP(LN_ANA_TX_SER_TXCLK_INV, 0x0));
++ break;
++ }
++
++ rk_udphy_dp_set_voltage(udphy, udphy->bw, dp->voltage[i],
++ dp->pre[i], lane);
++ }
++ }
++
++ return 0;
++}
++
++static const struct phy_ops rk_udphy_dp_phy_ops = {
++ .init = rk_udphy_dp_phy_init,
++ .exit = rk_udphy_dp_phy_exit,
++ .power_on = rk_udphy_dp_phy_power_on,
++ .power_off = rk_udphy_dp_phy_power_off,
++ .configure = rk_udphy_dp_phy_configure,
++ .owner = THIS_MODULE,
++};
++
++static int rk_udphy_usb3_phy_init(struct phy *phy)
++{
++ struct rk_udphy *udphy = phy_get_drvdata(phy);
++ int ret;
++
++ mutex_lock(&udphy->mutex);
++ /* DP only or high-speed, disable U3 port */
++ if (!(udphy->mode & UDPHY_MODE_USB) || udphy->hs) {
++ rk_udphy_u3_port_disable(udphy, true);
++ goto unlock;
++ }
++
++ ret = rk_udphy_power_on(udphy, UDPHY_MODE_USB);
++
++unlock:
++ mutex_unlock(&udphy->mutex);
++ return ret;
++}
++
++static int rk_udphy_usb3_phy_exit(struct phy *phy)
++{
++ struct rk_udphy *udphy = phy_get_drvdata(phy);
++
++ mutex_lock(&udphy->mutex);
++ /* DP only or high-speed */
++ if (!(udphy->mode & UDPHY_MODE_USB) || udphy->hs)
++ goto unlock;
++
++ rk_udphy_power_off(udphy, UDPHY_MODE_USB);
++
++unlock:
++ mutex_unlock(&udphy->mutex);
++ return 0;
++}
++
++static const struct phy_ops rk_udphy_usb3_phy_ops = {
++ .init = rk_udphy_usb3_phy_init,
++ .exit = rk_udphy_usb3_phy_exit,
++ .owner = THIS_MODULE,
++};
++
++static int rk_udphy_typec_mux_set(struct typec_mux_dev *mux,
++ struct typec_mux_state *state)
++{
++ struct rk_udphy *udphy = typec_mux_get_drvdata(mux);
++ u8 mode;
++
++ mutex_lock(&udphy->mutex);
++
++ switch (state->mode) {
++ case TYPEC_DP_STATE_C:
++ case TYPEC_DP_STATE_E:
++ udphy->lane_mux_sel[0] = PHY_LANE_MUX_DP;
++ udphy->lane_mux_sel[1] = PHY_LANE_MUX_DP;
++ udphy->lane_mux_sel[2] = PHY_LANE_MUX_DP;
++ udphy->lane_mux_sel[3] = PHY_LANE_MUX_DP;
++ mode = UDPHY_MODE_DP;
++ break;
++
++ case TYPEC_DP_STATE_D:
++ default:
++ if (udphy->flip) {
++ udphy->lane_mux_sel[0] = PHY_LANE_MUX_DP;
++ udphy->lane_mux_sel[1] = PHY_LANE_MUX_DP;
++ udphy->lane_mux_sel[2] = PHY_LANE_MUX_USB;
++ udphy->lane_mux_sel[3] = PHY_LANE_MUX_USB;
++ } else {
++ udphy->lane_mux_sel[0] = PHY_LANE_MUX_USB;
++ udphy->lane_mux_sel[1] = PHY_LANE_MUX_USB;
++ udphy->lane_mux_sel[2] = PHY_LANE_MUX_DP;
++ udphy->lane_mux_sel[3] = PHY_LANE_MUX_DP;
++ }
++ mode = UDPHY_MODE_DP_USB;
++ break;
++ }
++
++ if (state->alt && state->alt->svid == USB_TYPEC_DP_SID) {
++ struct typec_displayport_data *data = state->data;
++
++ if (!data) {
++ rk_udphy_dp_hpd_event_trigger(udphy, false);
++ } else if (data->status & DP_STATUS_IRQ_HPD) {
++ rk_udphy_dp_hpd_event_trigger(udphy, false);
++ usleep_range(750, 800);
++ rk_udphy_dp_hpd_event_trigger(udphy, true);
++ } else if (data->status & DP_STATUS_HPD_STATE) {
++ if (udphy->mode != mode) {
++ udphy->mode = mode;
++ udphy->mode_change = true;
++ }
++ rk_udphy_dp_hpd_event_trigger(udphy, true);
++ } else {
++ rk_udphy_dp_hpd_event_trigger(udphy, false);
++ }
++ }
++
++ mutex_unlock(&udphy->mutex);
++ return 0;
++}
++
++static void rk_udphy_typec_mux_unregister(void *data)
++{
++ struct rk_udphy *udphy = data;
++
++ typec_mux_unregister(udphy->mux);
++}
++
++static int rk_udphy_setup_typec_mux(struct rk_udphy *udphy)
++{
++ struct typec_mux_desc mux_desc = {};
++
++ mux_desc.drvdata = udphy;
++ mux_desc.fwnode = dev_fwnode(udphy->dev);
++ mux_desc.set = rk_udphy_typec_mux_set;
++
++ udphy->mux = typec_mux_register(udphy->dev, &mux_desc);
++ if (IS_ERR(udphy->mux)) {
++ dev_err(udphy->dev, "Error register typec mux: %ld\n",
++ PTR_ERR(udphy->mux));
++ return PTR_ERR(udphy->mux);
++ }
++
++ return devm_add_action_or_reset(udphy->dev, rk_udphy_typec_mux_unregister,
++ udphy);
++}
++
++static const struct regmap_config rk_udphy_pma_regmap_cfg = {
++ .reg_bits = 32,
++ .reg_stride = 4,
++ .val_bits = 32,
++ .fast_io = true,
++ .max_register = 0x20dc,
++};
++
++static struct phy *rk_udphy_phy_xlate(struct device *dev, struct of_phandle_args *args)
++{
++ struct rk_udphy *udphy = dev_get_drvdata(dev);
++
++ if (args->args_count == 0)
++ return ERR_PTR(-EINVAL);
++
++ switch (args->args[0]) {
++ case PHY_TYPE_USB3:
++ return udphy->phy_u3;
++ case PHY_TYPE_DP:
++ return udphy->phy_dp;
++ }
++
++ return ERR_PTR(-EINVAL);
++}
++
++static int rk_udphy_probe(struct platform_device *pdev)
++{
++ struct device *dev = &pdev->dev;
++ struct phy_provider *phy_provider;
++ struct resource *res;
++ struct rk_udphy *udphy;
++ void __iomem *base;
++ int id, ret;
++
++ udphy = devm_kzalloc(dev, sizeof(*udphy), GFP_KERNEL);
++ if (!udphy)
++ return -ENOMEM;
++
++ udphy->cfgs = device_get_match_data(dev);
++ if (!udphy->cfgs)
++ return dev_err_probe(dev, -EINVAL, "missing match data\n");
++
++ base = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
++ if (IS_ERR(base))
++ return PTR_ERR(base);
++
++ /* find the phy-id from the io address */
++ udphy->id = -ENODEV;
++ for (id = 0; id < udphy->cfgs->num_phys; id++) {
++ if (res->start == udphy->cfgs->phy_ids[id]) {
++ udphy->id = id;
++ break;
++ }
++ }
++
++ if (udphy->id < 0)
++ return dev_err_probe(dev, -ENODEV, "no matching device found\n");
++
++ udphy->pma_regmap = devm_regmap_init_mmio(dev, base + UDPHY_PMA,
++ &rk_udphy_pma_regmap_cfg);
++ if (IS_ERR(udphy->pma_regmap))
++ return PTR_ERR(udphy->pma_regmap);
++
++ udphy->dev = dev;
++ ret = rk_udphy_parse_dt(udphy);
++ if (ret)
++ return ret;
++
++ ret = rk_udphy_get_initial_status(udphy);
++ if (ret)
++ return ret;
++
++ mutex_init(&udphy->mutex);
++ platform_set_drvdata(pdev, udphy);
++
++ if (device_property_present(dev, "orientation-switch")) {
++ ret = rk_udphy_setup_orien_switch(udphy);
++ if (ret)
++ return ret;
++ }
++
++ if (device_property_present(dev, "mode-switch")) {
++ ret = rk_udphy_setup_typec_mux(udphy);
++ if (ret)
++ return ret;
++ }
++
++ udphy->phy_u3 = devm_phy_create(dev, dev->of_node, &rk_udphy_usb3_phy_ops);
++ if (IS_ERR(udphy->phy_u3)) {
++ ret = PTR_ERR(udphy->phy_u3);
++ return dev_err_probe(dev, ret, "failed to create USB3 phy\n");
++ }
++ phy_set_drvdata(udphy->phy_u3, udphy);
++
++ udphy->phy_dp = devm_phy_create(dev, dev->of_node, &rk_udphy_dp_phy_ops);
++ if (IS_ERR(udphy->phy_dp)) {
++ ret = PTR_ERR(udphy->phy_dp);
++ return dev_err_probe(dev, ret, "failed to create DP phy\n");
++ }
++ phy_set_bus_width(udphy->phy_dp, rk_udphy_dplane_get(udphy));
++ udphy->phy_dp->attrs.max_link_rate = 8100;
++ phy_set_drvdata(udphy->phy_dp, udphy);
++
++ phy_provider = devm_of_phy_provider_register(dev, rk_udphy_phy_xlate);
++ if (IS_ERR(phy_provider)) {
++ ret = PTR_ERR(phy_provider);
++ return dev_err_probe(dev, ret, "failed to register phy provider\n");
++ }
++
++ return 0;
++}
++
++static int __maybe_unused rk_udphy_resume(struct device *dev)
++{
++ struct rk_udphy *udphy = dev_get_drvdata(dev);
++
++ if (udphy->dp_sink_hpd_sel)
++ rk_udphy_dp_hpd_event_trigger(udphy, udphy->dp_sink_hpd_cfg);
++
++ return 0;
++}
++
++static const struct dev_pm_ops rk_udphy_pm_ops = {
++ SET_LATE_SYSTEM_SLEEP_PM_OPS(NULL, rk_udphy_resume)
++};
++
++static const char * const rk_udphy_rst_list[] = {
++ "init", "cmn", "lane", "pcs_apb", "pma_apb"
++};
++
++static const struct rk_udphy_cfg rk3588_udphy_cfgs = {
++ .num_phys = 2,
++ .phy_ids = {
++ 0xfed80000,
++ 0xfed90000,
++ },
++ .num_rsts = ARRAY_SIZE(rk_udphy_rst_list),
++ .rst_list = rk_udphy_rst_list,
++ .grfcfg = {
++ /* u2phy-grf */
++ .bvalid_phy_con = RK_UDPHY_GEN_GRF_REG(0x0008, 1, 0, 0x2, 0x3),
++ .bvalid_grf_con = RK_UDPHY_GEN_GRF_REG(0x0010, 3, 2, 0x2, 0x3),
++
++ /* usb-grf */
++ .usb3otg0_cfg = RK_UDPHY_GEN_GRF_REG(0x001c, 15, 0, 0x1100, 0x0188),
++ .usb3otg1_cfg = RK_UDPHY_GEN_GRF_REG(0x0034, 15, 0, 0x1100, 0x0188),
++
++ /* usbdpphy-grf */
++ .low_pwrn = RK_UDPHY_GEN_GRF_REG(0x0004, 13, 13, 0, 1),
++ .rx_lfps = RK_UDPHY_GEN_GRF_REG(0x0004, 14, 14, 0, 1),
++ },
++ .vogrfcfg = {
++ {
++ .hpd_trigger = RK_UDPHY_GEN_GRF_REG(0x0000, 11, 10, 1, 3),
++ .dp_lane_reg = 0x0000,
++ },
++ {
++ .hpd_trigger = RK_UDPHY_GEN_GRF_REG(0x0008, 11, 10, 1, 3),
++ .dp_lane_reg = 0x0008,
++ },
++ },
++ .dp_tx_ctrl_cfg = {
++ rk3588_dp_tx_drv_ctrl_rbr_hbr,
++ rk3588_dp_tx_drv_ctrl_rbr_hbr,
++ rk3588_dp_tx_drv_ctrl_hbr2,
++ rk3588_dp_tx_drv_ctrl_hbr3,
++ },
++ .dp_tx_ctrl_cfg_typec = {
++ rk3588_dp_tx_drv_ctrl_rbr_hbr_typec,
++ rk3588_dp_tx_drv_ctrl_rbr_hbr_typec,
++ rk3588_dp_tx_drv_ctrl_hbr2,
++ rk3588_dp_tx_drv_ctrl_hbr3,
++ },
++};
++
++static const struct of_device_id rk_udphy_dt_match[] = {
++ {
++ .compatible = "rockchip,rk3588-usbdp-phy",
++ .data = &rk3588_udphy_cfgs
++ },
++ { /* sentinel */ }
++};
++MODULE_DEVICE_TABLE(of, rk_udphy_dt_match);
++
++static struct platform_driver rk_udphy_driver = {
++ .probe = rk_udphy_probe,
++ .driver = {
++ .name = "rockchip-usbdp-phy",
++ .of_match_table = rk_udphy_dt_match,
++ .pm = &rk_udphy_pm_ops,
++ },
++};
++module_platform_driver(rk_udphy_driver);
++
++MODULE_AUTHOR("Frank Wang ");
++MODULE_AUTHOR("Zhang Yubing ");
++MODULE_DESCRIPTION("Rockchip USBDP Combo PHY driver");
++MODULE_LICENSE("GPL");
diff --git a/lede/target/linux/rockchip/patches-6.6/032-02-v6.10-phy-rockchip-usbdp-fix-uninitialized-variable.patch b/lede/target/linux/rockchip/patches-6.6/032-02-v6.10-phy-rockchip-usbdp-fix-uninitialized-variable.patch
new file mode 100644
index 0000000000..65bd8a7ed8
--- /dev/null
+++ b/lede/target/linux/rockchip/patches-6.6/032-02-v6.10-phy-rockchip-usbdp-fix-uninitialized-variable.patch
@@ -0,0 +1,35 @@
+From c9342d1a351ee1249fa98d936f756299a83d5684 Mon Sep 17 00:00:00 2001
+From: Sebastian Reichel
+Date: Tue, 16 Apr 2024 16:51:23 +0200
+Subject: [PATCH] phy: rockchip: usbdp: fix uninitialized variable
+
+The ret variable may not be initialized in rk_udphy_usb3_phy_init(), if
+the PHY is not using USB3 mode.
+
+Since the DisplayPort part is handled separately and the PHY does not
+support USB2 (which is routed to another PHY on Rockchip RK3588), the
+right exit code for this case is 0. Thus let's initialize the variable
+accordingly.
+
+Fixes: 2f70bbddeb457 ("phy: rockchip: add usbdp combo phy driver")
+Reported-by: kernel test robot
+Closes: https://lore.kernel.org/oe-kbuild-all/202404141048.qFAYDctQ-lkp@intel.com/
+Signed-off-by: Sebastian Reichel
+Reviewed-by: Muhammad Usama Anjum
+Link: https://lore.kernel.org/r/20240416145233.94687-1-sebastian.reichel@collabora.com
+Signed-off-by: Vinod Koul
+---
+ drivers/phy/rockchip/phy-rockchip-usbdp.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/phy/rockchip/phy-rockchip-usbdp.c
++++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c
+@@ -1285,7 +1285,7 @@ static const struct phy_ops rk_udphy_dp_
+ static int rk_udphy_usb3_phy_init(struct phy *phy)
+ {
+ struct rk_udphy *udphy = phy_get_drvdata(phy);
+- int ret;
++ int ret = 0;
+
+ mutex_lock(&udphy->mutex);
+ /* DP only or high-speed, disable U3 port */
diff --git a/lede/target/linux/rockchip/patches-6.6/032-03-v6.10-phy-rockchip-fix-CONFIG_TYPEC-dependency.patch b/lede/target/linux/rockchip/patches-6.6/032-03-v6.10-phy-rockchip-fix-CONFIG_TYPEC-dependency.patch
new file mode 100644
index 0000000000..a8b9aa15fc
--- /dev/null
+++ b/lede/target/linux/rockchip/patches-6.6/032-03-v6.10-phy-rockchip-fix-CONFIG_TYPEC-dependency.patch
@@ -0,0 +1,43 @@
+From 9c79b779643e56d4253bd3ba6998c58c819943af Mon Sep 17 00:00:00 2001
+From: Arnd Bergmann
+Date: Mon, 15 Apr 2024 19:42:25 +0200
+Subject: [PATCH] phy: rockchip: fix CONFIG_TYPEC dependency
+
+The newly added driver causes a warning about missing dependencies
+by selecting CONFIG_TYPEC unconditionally:
+
+WARNING: unmet direct dependencies detected for TYPEC
+ Depends on [n]: USB_SUPPORT [=n]
+ Selected by [y]:
+ - PHY_ROCKCHIP_USBDP [=y] && ARCH_ROCKCHIP [=y] && OF [=y]
+
+WARNING: unmet direct dependencies detected for USB_COMMON
+ Depends on [n]: USB_SUPPORT [=n]
+ Selected by [y]:
+ - EXTCON_RTK_TYPE_C [=y] && EXTCON [=y] && (ARCH_REALTEK [=y] || COMPILE_TEST [=y]) && TYPEC [=y]
+
+Since that is a user-visible option, it should not really be selected
+in the first place. Replace the 'select' with a 'depends on' as
+we have for similar drivers.
+
+Fixes: 2f70bbddeb45 ("phy: rockchip: add usbdp combo phy driver")
+Signed-off-by: Arnd Bergmann
+Reviewed-by: Heiko Stuebner
+Link: https://lore.kernel.org/r/20240415174241.77982-1-arnd@kernel.org
+Signed-off-by: Vinod Koul
+---
+ drivers/phy/rockchip/Kconfig | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/phy/rockchip/Kconfig
++++ b/drivers/phy/rockchip/Kconfig
+@@ -111,8 +111,8 @@ config PHY_ROCKCHIP_USB
+ config PHY_ROCKCHIP_USBDP
+ tristate "Rockchip USBDP COMBO PHY Driver"
+ depends on ARCH_ROCKCHIP && OF
++ depends on TYPEC
+ select GENERIC_PHY
+- select TYPEC
+ help
+ Enable this to support the Rockchip USB3.0/DP combo PHY with
+ Samsung IP block. This is required for USB3 support on RK3588.
diff --git a/lede/target/linux/rockchip/patches-6.6/032-04-v6.10-phy-rockchip-Fix-typo-in-function-names.patch b/lede/target/linux/rockchip/patches-6.6/032-04-v6.10-phy-rockchip-Fix-typo-in-function-names.patch
new file mode 100644
index 0000000000..9495dd2b10
--- /dev/null
+++ b/lede/target/linux/rockchip/patches-6.6/032-04-v6.10-phy-rockchip-Fix-typo-in-function-names.patch
@@ -0,0 +1,79 @@
+From 9b6bfad9070a95d19973be17177e5d9220cbbf1f Mon Sep 17 00:00:00 2001
+From: Rick Wertenbroek
+Date: Thu, 7 Mar 2024 10:53:18 +0100
+Subject: [PATCH] phy: rockchip: Fix typo in function names
+
+Several functions had "rochchip" instead of "rockchip" in their name.
+Replace "rochchip" by "rockchip".
+
+Signed-off-By: Rick Wertenbroek
+Reviewed-by: Heiko Stuebner
+Link: https://lore.kernel.org/r/20240307095318.3651498-1-rick.wertenbroek@gmail.com
+Signed-off-by: Vinod Koul
+---
+ drivers/phy/rockchip/phy-rockchip-naneng-combphy.c | 4 ++--
+ drivers/phy/rockchip/phy-rockchip-snps-pcie3.c | 12 ++++++------
+ 2 files changed, 8 insertions(+), 8 deletions(-)
+
+--- a/drivers/phy/rockchip/phy-rockchip-naneng-combphy.c
++++ b/drivers/phy/rockchip/phy-rockchip-naneng-combphy.c
+@@ -248,7 +248,7 @@ static int rockchip_combphy_exit(struct
+ return 0;
+ }
+
+-static const struct phy_ops rochchip_combphy_ops = {
++static const struct phy_ops rockchip_combphy_ops = {
+ .init = rockchip_combphy_init,
+ .exit = rockchip_combphy_exit,
+ .owner = THIS_MODULE,
+@@ -364,7 +364,7 @@ static int rockchip_combphy_probe(struct
+ return ret;
+ }
+
+- priv->phy = devm_phy_create(dev, NULL, &rochchip_combphy_ops);
++ priv->phy = devm_phy_create(dev, NULL, &rockchip_combphy_ops);
+ if (IS_ERR(priv->phy)) {
+ dev_err(dev, "failed to create combphy\n");
+ return PTR_ERR(priv->phy);
+--- a/drivers/phy/rockchip/phy-rockchip-snps-pcie3.c
++++ b/drivers/phy/rockchip/phy-rockchip-snps-pcie3.c
+@@ -182,7 +182,7 @@ static const struct rockchip_p3phy_ops r
+ .phy_init = rockchip_p3phy_rk3588_init,
+ };
+
+-static int rochchip_p3phy_init(struct phy *phy)
++static int rockchip_p3phy_init(struct phy *phy)
+ {
+ struct rockchip_p3phy_priv *priv = phy_get_drvdata(phy);
+ int ret;
+@@ -205,7 +205,7 @@ static int rochchip_p3phy_init(struct ph
+ return ret;
+ }
+
+-static int rochchip_p3phy_exit(struct phy *phy)
++static int rockchip_p3phy_exit(struct phy *phy)
+ {
+ struct rockchip_p3phy_priv *priv = phy_get_drvdata(phy);
+
+@@ -214,9 +214,9 @@ static int rochchip_p3phy_exit(struct ph
+ return 0;
+ }
+
+-static const struct phy_ops rochchip_p3phy_ops = {
+- .init = rochchip_p3phy_init,
+- .exit = rochchip_p3phy_exit,
++static const struct phy_ops rockchip_p3phy_ops = {
++ .init = rockchip_p3phy_init,
++ .exit = rockchip_p3phy_exit,
+ .set_mode = rockchip_p3phy_set_mode,
+ .owner = THIS_MODULE,
+ };
+@@ -275,7 +275,7 @@ static int rockchip_p3phy_probe(struct p
+ return priv->num_lanes;
+ }
+
+- priv->phy = devm_phy_create(dev, NULL, &rochchip_p3phy_ops);
++ priv->phy = devm_phy_create(dev, NULL, &rockchip_p3phy_ops);
+ if (IS_ERR(priv->phy)) {
+ dev_err(dev, "failed to create combphy\n");
+ return PTR_ERR(priv->phy);
diff --git a/lede/target/linux/rockchip/patches-6.6/032-05-v6.10-phy-rockchip-snps-pcie3-add-support-for.patch b/lede/target/linux/rockchip/patches-6.6/032-05-v6.10-phy-rockchip-snps-pcie3-add-support-for.patch
new file mode 100644
index 0000000000..61c3e0e53c
--- /dev/null
+++ b/lede/target/linux/rockchip/patches-6.6/032-05-v6.10-phy-rockchip-snps-pcie3-add-support-for.patch
@@ -0,0 +1,106 @@
+From a1fe1eca0d8be69ccc1f3d615e5a529df1c82e66 Mon Sep 17 00:00:00 2001
+From: Niklas Cassel
+Date: Fri, 12 Apr 2024 14:58:16 +0200
+Subject: [PATCH] phy: rockchip-snps-pcie3: add support for
+ rockchip,rx-common-refclk-mode
+
+>From the RK3588 Technical Reference Manual, Part1,
+section 6.19 PCIe3PHY_GRF Register Description:
+"rxX_cmn_refclk_mode"
+RX common reference clock mode for lane X. This mode should be enabled
+only when the far-end and near-end devices are running with a common
+reference clock.
+
+The hardware reset value for this field is 0x1 (enabled).
+Note that this register field is only available on RK3588, not on RK3568.
+
+The link training either fails or is highly unstable (link state will jump
+continuously between L0 and recovery) when this mode is enabled while
+using an endpoint running in Separate Reference Clock with No SSC (SRNS)
+mode or Separate Reference Clock with SSC (SRIS) mode.
+(Which is usually the case when using a real SoC as endpoint, e.g. the
+RK3588 PCIe controller can run in both Root Complex and Endpoint mode.)
+
+Add support for the device tree property rockchip,rx-common-refclk-mode,
+such that the PCIe PHY can be used in configurations where the Root
+Complex and Endpoint are not using a common reference clock.
+
+Signed-off-by: Niklas Cassel
+Link: https://lore.kernel.org/r/20240412125818.17052-3-cassel@kernel.org
+Signed-off-by: Vinod Koul
+---
+ .../phy/rockchip/phy-rockchip-snps-pcie3.c | 37 +++++++++++++++++++
+ 1 file changed, 37 insertions(+)
+
+--- a/drivers/phy/rockchip/phy-rockchip-snps-pcie3.c
++++ b/drivers/phy/rockchip/phy-rockchip-snps-pcie3.c
+@@ -35,11 +35,17 @@
+ #define RK3588_PCIE3PHY_GRF_CMN_CON0 0x0
+ #define RK3588_PCIE3PHY_GRF_PHY0_STATUS1 0x904
+ #define RK3588_PCIE3PHY_GRF_PHY1_STATUS1 0xa04
++#define RK3588_PCIE3PHY_GRF_PHY0_LN0_CON1 0x1004
++#define RK3588_PCIE3PHY_GRF_PHY0_LN1_CON1 0x1104
++#define RK3588_PCIE3PHY_GRF_PHY1_LN0_CON1 0x2004
++#define RK3588_PCIE3PHY_GRF_PHY1_LN1_CON1 0x2104
+ #define RK3588_SRAM_INIT_DONE(reg) (reg & BIT(0))
+
+ #define RK3588_BIFURCATION_LANE_0_1 BIT(0)
+ #define RK3588_BIFURCATION_LANE_2_3 BIT(1)
+ #define RK3588_LANE_AGGREGATION BIT(2)
++#define RK3588_RX_CMN_REFCLK_MODE_EN ((BIT(7) << 16) | BIT(7))
++#define RK3588_RX_CMN_REFCLK_MODE_DIS (BIT(7) << 16)
+ #define RK3588_PCIE1LN_SEL_EN (GENMASK(1, 0) << 16)
+ #define RK3588_PCIE30_PHY_MODE_EN (GENMASK(2, 0) << 16)
+
+@@ -60,6 +66,7 @@ struct rockchip_p3phy_priv {
+ int num_clks;
+ int num_lanes;
+ u32 lanes[4];
++ u32 rx_cmn_refclk_mode[4];
+ };
+
+ struct rockchip_p3phy_ops {
+@@ -137,6 +144,19 @@ static int rockchip_p3phy_rk3588_init(st
+ u8 mode = RK3588_LANE_AGGREGATION; /* default */
+ int ret;
+
++ regmap_write(priv->phy_grf, RK3588_PCIE3PHY_GRF_PHY0_LN0_CON1,
++ priv->rx_cmn_refclk_mode[0] ? RK3588_RX_CMN_REFCLK_MODE_EN :
++ RK3588_RX_CMN_REFCLK_MODE_DIS);
++ regmap_write(priv->phy_grf, RK3588_PCIE3PHY_GRF_PHY0_LN1_CON1,
++ priv->rx_cmn_refclk_mode[1] ? RK3588_RX_CMN_REFCLK_MODE_EN :
++ RK3588_RX_CMN_REFCLK_MODE_DIS);
++ regmap_write(priv->phy_grf, RK3588_PCIE3PHY_GRF_PHY1_LN0_CON1,
++ priv->rx_cmn_refclk_mode[2] ? RK3588_RX_CMN_REFCLK_MODE_EN :
++ RK3588_RX_CMN_REFCLK_MODE_DIS);
++ regmap_write(priv->phy_grf, RK3588_PCIE3PHY_GRF_PHY1_LN1_CON1,
++ priv->rx_cmn_refclk_mode[3] ? RK3588_RX_CMN_REFCLK_MODE_EN :
++ RK3588_RX_CMN_REFCLK_MODE_DIS);
++
+ /* Deassert PCIe PMA output clamp mode */
+ regmap_write(priv->phy_grf, RK3588_PCIE3PHY_GRF_CMN_CON0, BIT(8) | BIT(24));
+
+@@ -275,6 +295,23 @@ static int rockchip_p3phy_probe(struct p
+ return priv->num_lanes;
+ }
+
++ ret = of_property_read_variable_u32_array(dev->of_node,
++ "rockchip,rx-common-refclk-mode",
++ priv->rx_cmn_refclk_mode, 1,
++ ARRAY_SIZE(priv->rx_cmn_refclk_mode));
++ /*
++ * if no rockchip,rx-common-refclk-mode, assume enabled for all lanes in
++ * order to be DT backwards compatible. (Since HW reset val is enabled.)
++ */
++ if (ret == -EINVAL) {
++ for (int i = 0; i < ARRAY_SIZE(priv->rx_cmn_refclk_mode); i++)
++ priv->rx_cmn_refclk_mode[i] = 1;
++ } else if (ret < 0) {
++ dev_err(dev, "failed to read rockchip,rx-common-refclk-mode property %d\n",
++ ret);
++ return ret;
++ }
++
+ priv->phy = devm_phy_create(dev, NULL, &rockchip_p3phy_ops);
+ if (IS_ERR(priv->phy)) {
+ dev_err(dev, "failed to create combphy\n");
diff --git a/lede/target/linux/rockchip/patches-6.6/034-v6.7-usb-dwc3-add-optional-PHY-interface-clocks.patch b/lede/target/linux/rockchip/patches-6.6/034-v6.7-usb-dwc3-add-optional-PHY-interface-clocks.patch
new file mode 100644
index 0000000000..0583b70f89
--- /dev/null
+++ b/lede/target/linux/rockchip/patches-6.6/034-v6.7-usb-dwc3-add-optional-PHY-interface-clocks.patch
@@ -0,0 +1,91 @@
+From 97789b93b792fc97ad4476b79e0f38ffa8e7e0ee Mon Sep 17 00:00:00 2001
+From: Sebastian Reichel
+Date: Fri, 20 Oct 2023 16:11:41 +0200
+Subject: [PATCH] usb: dwc3: add optional PHY interface clocks
+
+On Rockchip RK3588 one of the DWC3 cores is integrated weirdly and
+requires two extra clocks to be enabled. Without these extra clocks
+hot-plugging USB devices is broken.
+
+Signed-off-by: Sebastian Reichel
+Acked-by: Thinh Nguyen
+Link: https://lore.kernel.org/r/20231020150022.48725-3-sebastian.reichel@collabora.com
+Signed-off-by: Greg Kroah-Hartman