forked from armbian/build
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
rk3588: Introduce
current
kernel branch
Since the `edge` kernel branch often uses RC kernels, introduce a more stable `current` branch. This branch should not be RC kernels and it also should move to an LTS kernel once released.
- Loading branch information
1 parent
117b6fe
commit a6b5ea7
Showing
80 changed files
with
51,155 additions
and
1 deletion.
There are no files selected for viewing
10,893 changes: 10,893 additions & 0 deletions
10,893
config/kernel/linux-rockchip-rk3588-6.8.config
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
46 changes: 46 additions & 0 deletions
46
patch/kernel/archive/rockchip-rk3588-6.8/0000.patching_config.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
config: # This is file 'patch/kernel/rockchip-rk3588-edge/0000.patching_config.yaml' | ||
|
||
# PATCH NUMBERING INFO | ||
# | ||
# Patch numbers in this folder are sorted by category: | ||
# | ||
# 000* for general patches | ||
# 01** for GPU/HDMI related patches | ||
# 08** for wireless patches | ||
# 1*** for board patches | ||
# 101* for Rock-5B, 1012* for Rock-5A and so on | ||
|
||
# Just some info stuff; not used by the patching scripts | ||
name: rockchip-rk3588-edge | ||
kind: kernel | ||
type: mainline # or: vendor | ||
branch: linux-6.8.y | ||
last-known-good-tag: v6.8.3 | ||
maintainers: | ||
- { github: rpardini, name: Ricardo Pardini, email: [email protected], armbian-forum: rpardini } | ||
|
||
# .dts files in these directories will be copied as-is to the build tree; later ones overwrite earlier ones. | ||
# This is meant to provide a way to "add a board DTS" without having to null-patch them in. | ||
dts-directories: | ||
- { source: "dt", target: "arch/arm64/boot/dts/rockchip" } | ||
|
||
# every file in these directories will be copied as-is to the build tree; later ones overwrite earlier ones | ||
# This is meant as a way to have overlays, bare, in a directory, without having to null-patch them in. | ||
# @TODO need a solution to auto-Makefile the overlays as well | ||
overlay-directories: | ||
- { source: "overlay", target: "arch/arm64/boot/dts/rockchip/overlay" } | ||
|
||
# the Makefile in each of these directories will be magically patched to include the dts files copied | ||
# or patched-in; overlay subdir will be included "-y" if it exists. | ||
# No more Makefile patching needed, yay! | ||
auto-patch-dt-makefile: | ||
- { directory: "arch/arm64/boot/dts/rockchip", config-var: "CONFIG_ARCH_ROCKCHIP" } | ||
|
||
# configuration for when applying patches to git / auto-rewriting patches (development cycle helpers) | ||
patches-to-git: | ||
do-not-commit-files: | ||
- "MAINTAINERS" # constant churn, drop them. sorry. | ||
- "Documentation/devicetree/bindings/arm/rockchip.yaml" # constant churn, conflicts on every bump, drop it. sorry. | ||
do-not-commit-regexes: # Python-style regexes | ||
- "^arch/([a-zA-Z0-9]+)/boot/dts/([a-zA-Z0-9]+)/Makefile$" # ignore DT Makefile patches, we've an auto-patcher now | ||
|
84 changes: 84 additions & 0 deletions
84
patch/kernel/archive/rockchip-rk3588-6.8/0001-general-add-overlay-support.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||
From: zador-blood-stained <[email protected]> | ||
Date: Sat, 11 Feb 2017 20:32:53 +0300 | ||
Subject: add overlay support | ||
|
||
- rpardini: real overlays are now bare in "overlay" directory and are handled | ||
directly by the patching scripts. No more null-patching of overlays. | ||
- no readme, no fixups | ||
--- | ||
scripts/Makefile.dtbinst | 6 +++- | ||
scripts/Makefile.lib | 17 ++++++++++ | ||
2 files changed, 22 insertions(+), 1 deletion(-) | ||
|
||
diff --git a/scripts/Makefile.dtbinst b/scripts/Makefile.dtbinst | ||
index 111111111111..222222222222 100644 | ||
--- a/scripts/Makefile.dtbinst | ||
+++ b/scripts/Makefile.dtbinst | ||
@@ -18,9 +18,10 @@ include $(srctree)/scripts/Kbuild.include | ||
include $(kbuild-file) | ||
|
||
dtbs := $(addprefix $(dst)/, $(dtb-y) $(if $(CONFIG_OF_ALL_DTBS),$(dtb-))) | ||
+dtbos := $(addprefix $(dst)/, $(dtbo-y)) | ||
subdirs := $(addprefix $(obj)/, $(subdir-y) $(subdir-m)) | ||
|
||
-__dtbs_install: $(dtbs) $(subdirs) | ||
+__dtbs_install: $(dtbs) $(dtbos) $(subdirs) | ||
@: | ||
|
||
quiet_cmd_dtb_install = INSTALL $@ | ||
@@ -32,6 +33,9 @@ $(dst)/%.dtb: $(obj)/%.dtb | ||
$(dst)/%.dtbo: $(obj)/%.dtbo | ||
$(call cmd,dtb_install) | ||
|
||
+$(dst)/%.dtbo: $(obj)/%.dtbo | ||
+ $(call cmd,dtb_install) | ||
+ | ||
PHONY += $(subdirs) | ||
$(subdirs): | ||
$(Q)$(MAKE) $(dtbinst)=$@ dst=$(if $(CONFIG_ARCH_WANT_FLAT_DTB_INSTALL),$(dst),$(patsubst $(obj)/%,$(dst)/%,$@)) | ||
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib | ||
index 111111111111..222222222222 100644 | ||
--- a/scripts/Makefile.lib | ||
+++ b/scripts/Makefile.lib | ||
@@ -88,6 +88,9 @@ base-dtb-y := $(filter %.dtb, $(call real-search, $(multi-dtb-y), .dtb, -dtbs)) | ||
|
||
always-y += $(dtb-y) | ||
|
||
+# Overlay targets | ||
+extra-y += $(dtbo-y) | ||
+ | ||
# Add subdir path | ||
|
||
ifneq ($(obj),.) | ||
@@ -343,6 +346,9 @@ DTC ?= $(objtree)/scripts/dtc/dtc | ||
DTC_FLAGS += -Wno-interrupt_provider \ | ||
-Wno-unique_unit_address | ||
|
||
+# Overlay support | ||
+DTC_FLAGS += -@ -Wno-unit_address_format -Wno-simple_bus_reg | ||
+ | ||
# Disable noisy checks by default | ||
ifeq ($(findstring 1,$(KBUILD_EXTRA_WARN)),) | ||
DTC_FLAGS += -Wno-unit_address_vs_reg \ | ||
@@ -421,6 +427,17 @@ $(obj)/%.dtb: $(src)/%.dts $(DTC) $(DT_TMP_SCHEMA) FORCE | ||
$(obj)/%.dtbo: $(src)/%.dtso $(DTC) FORCE | ||
$(call if_changed_dep,dtc) | ||
|
||
+quiet_cmd_dtco = DTCO $@ | ||
+cmd_dtco = mkdir -p $(dir ${dtc-tmp}) ; \ | ||
+ $(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \ | ||
+ $(DTC) -O dtb -o $@ -b 0 \ | ||
+ -i $(dir $<) $(DTC_FLAGS) \ | ||
+ -d $(depfile).dtc.tmp $(dtc-tmp) ; \ | ||
+ cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile) | ||
+ | ||
+$(obj)/%.dtbo: $(src)/%.dts FORCE | ||
+ $(call if_changed_dep,dtco) | ||
+ | ||
dtc-tmp = $(subst $(comma),_,$(dot-target).dts.tmp) | ||
|
||
# Bzip2 | ||
-- | ||
Armbian | ||
|
34 changes: 34 additions & 0 deletions
34
.../kernel/archive/rockchip-rk3588-6.8/0005-tools-Makefile-delete-missing-cgroup_clean.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||
From: amazingfate <[email protected]> | ||
Date: Wed, 24 Jan 2024 18:03:52 +0800 | ||
Subject: tools/Makefile: delete missing cgroup_clean | ||
|
||
--- | ||
tools/Makefile | 4 ++-- | ||
1 file changed, 2 insertions(+), 2 deletions(-) | ||
|
||
diff --git a/tools/Makefile b/tools/Makefile | ||
index 111111111111..222222222222 100644 | ||
--- a/tools/Makefile | ||
+++ b/tools/Makefile | ||
@@ -169,7 +169,7 @@ acpi_clean: | ||
cpupower_clean: | ||
$(call descend,power/cpupower,clean) | ||
|
||
-cgroup_clean counter_clean hv_clean firewire_clean bootconfig_clean spi_clean usb_clean virtio_clean mm_clean wmi_clean bpf_clean iio_clean gpio_clean objtool_clean leds_clean pci_clean firmware_clean debugging_clean tracing_clean: | ||
+counter_clean hv_clean firewire_clean bootconfig_clean spi_clean usb_clean virtio_clean mm_clean wmi_clean bpf_clean iio_clean gpio_clean objtool_clean leds_clean pci_clean firmware_clean debugging_clean tracing_clean: | ||
$(call descend,$(@:_clean=),clean) | ||
|
||
libapi_clean: | ||
@@ -209,7 +209,7 @@ freefall_clean: | ||
build_clean: | ||
$(call descend,build,clean) | ||
|
||
-clean: acpi_clean cgroup_clean counter_clean cpupower_clean hv_clean firewire_clean \ | ||
+clean: acpi_clean counter_clean cpupower_clean hv_clean firewire_clean \ | ||
perf_clean selftests_clean turbostat_clean bootconfig_clean spi_clean usb_clean virtio_clean \ | ||
mm_clean bpf_clean iio_clean x86_energy_perf_policy_clean tmon_clean \ | ||
freefall_clean build_clean libbpf_clean libsubcmd_clean \ | ||
-- | ||
Armbian | ||
|
142 changes: 142 additions & 0 deletions
142
patch/kernel/archive/rockchip-rk3588-6.8/0010-fix-clk-divisions.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,142 @@ | ||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||
From: Sebastian Reichel <[email protected]> | ||
Date: Tue, 24 Oct 2023 16:09:35 +0200 | ||
Subject: math.h: add DIV_ROUND_UP_NO_OVERFLOW | ||
|
||
Add a new DIV_ROUND_UP helper, which cannot overflow when | ||
big numbers are being used. | ||
|
||
Signed-off-by: Sebastian Reichel <[email protected]> | ||
--- | ||
include/linux/math.h | 11 ++++++++++ | ||
1 file changed, 11 insertions(+) | ||
|
||
diff --git a/include/linux/math.h b/include/linux/math.h | ||
index 111111111111..222222222222 100644 | ||
--- a/include/linux/math.h | ||
+++ b/include/linux/math.h | ||
@@ -36,6 +36,17 @@ | ||
|
||
#define DIV_ROUND_UP __KERNEL_DIV_ROUND_UP | ||
|
||
+/** | ||
+ * DIV_ROUND_UP_NO_OVERFLOW - divide two numbers and always round up | ||
+ * @n: numerator / dividend | ||
+ * @d: denominator / divisor | ||
+ * | ||
+ * This functions does the same as DIV_ROUND_UP, but internally uses a | ||
+ * division and a modulo operation instead of math tricks. This way it | ||
+ * avoids overflowing when handling big numbers. | ||
+ */ | ||
+#define DIV_ROUND_UP_NO_OVERFLOW(n, d) (((n) / (d)) + !!((n) % (d))) | ||
+ | ||
#define DIV_ROUND_DOWN_ULL(ll, d) \ | ||
({ unsigned long long _tmp = (ll); do_div(_tmp, d); _tmp; }) | ||
|
||
-- | ||
Armbian | ||
|
||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||
From: Sebastian Reichel <[email protected]> | ||
Date: Tue, 24 Oct 2023 16:13:50 +0200 | ||
Subject: clk: divider: Fix divisor masking on 64 bit platforms | ||
|
||
The clock framework handles clock rates as "unsigned long", so u32 on | ||
32-bit architectures and u64 on 64-bit architectures. | ||
|
||
The current code casts the dividend to u64 on 32-bit to avoid a | ||
potential overflow. For example DIV_ROUND_UP(3000000000, 1500000000) | ||
= (3.0G + 1.5G - 1) / 1.5G = = OVERFLOW / 1.5G, which has been | ||
introduced in commit 9556f9dad8f5 ("clk: divider: handle integer overflow | ||
when dividing large clock rates"). | ||
|
||
On 64 bit platforms this masks the divisor, so that only the lower | ||
32 bit are used. Thus requesting a frequency >= 4.3GHz results | ||
in incorrect values. For example requesting 4300000000 (4.3 GHz) will | ||
effectively request ca. 5 MHz. Requesting clk_round_rate(clk, ULONG_MAX) | ||
is a bit of a special case, since that still returns correct values as | ||
long as the parent clock is below 8.5 GHz. | ||
|
||
Fix this by switching to DIV_ROUND_UP_NO_OVERFLOW, which cannot | ||
overflow. This avoids any requirements on the arguments (except | ||
that divisor should not be 0 obviously). | ||
|
||
Signed-off-by: Sebastian Reichel <[email protected]> | ||
--- | ||
drivers/clk/clk-divider.c | 6 +++--- | ||
1 file changed, 3 insertions(+), 3 deletions(-) | ||
|
||
diff --git a/drivers/clk/clk-divider.c b/drivers/clk/clk-divider.c | ||
index 111111111111..222222222222 100644 | ||
--- a/drivers/clk/clk-divider.c | ||
+++ b/drivers/clk/clk-divider.c | ||
@@ -220,7 +220,7 @@ static int _div_round_up(const struct clk_div_table *table, | ||
unsigned long parent_rate, unsigned long rate, | ||
unsigned long flags) | ||
{ | ||
- int div = DIV_ROUND_UP_ULL((u64)parent_rate, rate); | ||
+ int div = DIV_ROUND_UP_NO_OVERFLOW(parent_rate, rate); | ||
|
||
if (flags & CLK_DIVIDER_POWER_OF_TWO) | ||
div = __roundup_pow_of_two(div); | ||
@@ -237,7 +237,7 @@ static int _div_round_closest(const struct clk_div_table *table, | ||
int up, down; | ||
unsigned long up_rate, down_rate; | ||
|
||
- up = DIV_ROUND_UP_ULL((u64)parent_rate, rate); | ||
+ up = DIV_ROUND_UP_NO_OVERFLOW(parent_rate, rate); | ||
down = parent_rate / rate; | ||
|
||
if (flags & CLK_DIVIDER_POWER_OF_TWO) { | ||
@@ -473,7 +473,7 @@ int divider_get_val(unsigned long rate, unsigned long parent_rate, | ||
{ | ||
unsigned int div, value; | ||
|
||
- div = DIV_ROUND_UP_ULL((u64)parent_rate, rate); | ||
+ div = DIV_ROUND_UP_NO_OVERFLOW(parent_rate, rate); | ||
|
||
if (!_is_valid_div(table, div, flags)) | ||
return -EINVAL; | ||
-- | ||
Armbian | ||
|
||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||
From: Sebastian Reichel <[email protected]> | ||
Date: Tue, 24 Oct 2023 18:09:57 +0200 | ||
Subject: clk: composite: replace open-coded abs_diff() | ||
|
||
Replace the open coded abs_diff() with the existing helper function. | ||
|
||
Suggested-by: Andy Shevchenko <[email protected]> | ||
Signed-off-by: Sebastian Reichel <[email protected]> | ||
--- | ||
drivers/clk/clk-composite.c | 6 ++---- | ||
1 file changed, 2 insertions(+), 4 deletions(-) | ||
|
||
diff --git a/drivers/clk/clk-composite.c b/drivers/clk/clk-composite.c | ||
index 111111111111..222222222222 100644 | ||
--- a/drivers/clk/clk-composite.c | ||
+++ b/drivers/clk/clk-composite.c | ||
@@ -6,6 +6,7 @@ | ||
#include <linux/clk-provider.h> | ||
#include <linux/device.h> | ||
#include <linux/err.h> | ||
+#include <linux/math.h> | ||
#include <linux/slab.h> | ||
|
||
static u8 clk_composite_get_parent(struct clk_hw *hw) | ||
@@ -119,10 +120,7 @@ static int clk_composite_determine_rate(struct clk_hw *hw, | ||
if (ret) | ||
continue; | ||
|
||
- if (req->rate >= tmp_req.rate) | ||
- rate_diff = req->rate - tmp_req.rate; | ||
- else | ||
- rate_diff = tmp_req.rate - req->rate; | ||
+ rate_diff = abs_diff(req->rate, tmp_req.rate); | ||
|
||
if (!rate_diff || !req->best_parent_hw | ||
|| best_rate_diff > rate_diff) { | ||
-- | ||
Armbian | ||
|
Oops, something went wrong.