diff --git a/linux-6.6/rk3568_patch/kernel.patch b/linux-6.6/rk3568_patch/kernel.patch index c43dc2d4e20cb06adb94b71855c202a8d62ba539..7c7bf730a471376ec1ff1d8c793472c180403821 100644 --- a/linux-6.6/rk3568_patch/kernel.patch +++ b/linux-6.6/rk3568_patch/kernel.patch @@ -17237,7 +17237,7 @@ index 38b9dbf38..7b084b273 100644 + /delete-node/ opp-j-m-950000000; +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3588s-indiedroid-nova.dts b/arch/arm64/boot/dts/rockchip/rk3588s-indiedroid-nova.dts -index 9299fa7e3..60f00ceb6 100644 +index e813d426b..88c58fb32 100644 --- a/arch/arm64/boot/dts/rockchip/rk3588s-indiedroid-nova.dts +++ b/arch/arm64/boot/dts/rockchip/rk3588s-indiedroid-nova.dts @@ -3,6 +3,7 @@ @@ -76873,7 +76873,7 @@ index 000000000..7f501db66 +MODULE_DESCRIPTION("Rockchip RK628 CRU driver"); +MODULE_LICENSE("GPL v2"); diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig -index 0ba0dc4ec..93ad1b718 100644 +index 8208a3d89..b7022db25 100644 --- a/drivers/clocksource/Kconfig +++ b/drivers/clocksource/Kconfig @@ -92,7 +92,9 @@ config IXP4XX_TIMER @@ -918823,7 +918823,7 @@ index 521b1b5ff..c2829dbf4 100644 } diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c -index 853851d5f..022e0d5e9 100644 +index d6ee90fef..c5df85c5f 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -147,6 +147,14 @@ static void stmmac_exit_fs(struct net_device *dev); @@ -918908,7 +918908,7 @@ index 853851d5f..022e0d5e9 100644 stmmac_disable_all_queues(priv); for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++) -@@ -5136,7 +5158,7 @@ static int stmmac_rx_zc(struct stmmac_priv *priv, int limit, u32 queue) +@@ -5137,7 +5159,7 @@ static int stmmac_rx_zc(struct stmmac_priv *priv, int limit, u32 queue) len = 0; } @@ -918917,7 +918917,7 @@ index 853851d5f..022e0d5e9 100644 break; read_again: -@@ -5337,7 +5359,7 @@ static int stmmac_rx(struct stmmac_priv *priv, int limit, u32 queue) +@@ -5338,7 +5360,7 @@ static int stmmac_rx(struct stmmac_priv *priv, int limit, u32 queue) } read_again: @@ -918926,7 +918926,7 @@ index 853851d5f..022e0d5e9 100644 break; buf1_len = 0; -@@ -7137,22 +7159,30 @@ static void stmmac_napi_add(struct net_device *dev) +@@ -7138,22 +7160,30 @@ static void stmmac_napi_add(struct net_device *dev) for (queue = 0; queue < maxq; queue++) { struct stmmac_channel *ch = &priv->channel[queue]; @@ -918962,7 +918962,7 @@ index 853851d5f..022e0d5e9 100644 } } } -@@ -7325,6 +7355,113 @@ static const struct xdp_metadata_ops stmmac_xdp_metadata_ops = { +@@ -7326,6 +7356,113 @@ static const struct xdp_metadata_ops stmmac_xdp_metadata_ops = { .xmo_rx_timestamp = stmmac_xdp_rx_timestamp, }; @@ -919076,7 +919076,7 @@ index 853851d5f..022e0d5e9 100644 /** * stmmac_dvr_probe * @device: device pointer -@@ -7623,6 +7760,22 @@ int stmmac_dvr_probe(struct device *device, +@@ -7624,6 +7761,22 @@ int stmmac_dvr_probe(struct device *device, goto error_netdev_register; } @@ -919099,7 +919099,7 @@ index 853851d5f..022e0d5e9 100644 #ifdef CONFIG_DEBUG_FS stmmac_init_fs(ndev); #endif -@@ -7735,6 +7888,9 @@ int stmmac_suspend(struct device *dev) +@@ -7736,6 +7889,9 @@ int stmmac_suspend(struct device *dev) stmmac_pmt(priv, priv->hw, priv->wolopts); priv->irq_wake = 1; } else { @@ -919109,7 +919109,7 @@ index 853851d5f..022e0d5e9 100644 stmmac_mac_set(priv, priv->ioaddr, false); pinctrl_pm_select_sleep_state(priv->device); } -@@ -7834,6 +7990,9 @@ int stmmac_resume(struct device *dev) +@@ -7835,6 +7991,9 @@ int stmmac_resume(struct device *dev) /* reset the phy so that it's ready */ if (priv->mii) stmmac_mdio_reset(priv->mii); @@ -919120,7 +919120,7 @@ index 853851d5f..022e0d5e9 100644 if (!(priv->plat->flags & STMMAC_FLAG_SERDES_UP_AFTER_PHY_LINKUP) && diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c -index 30d5e6351..ff2061b57 100644 +index b4fdd40be..51172584c 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c @@ -464,6 +464,9 @@ stmmac_probe_config_dt(struct platform_device *pdev, u8 *mac) @@ -1892702,10 +1892702,10 @@ index 000000000..1781aa785 + +#endif diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h -index 63029bc7c..f983339ec 100644 +index 7e11ca6f8..7cd23a862 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h -@@ -902,6 +902,7 @@ +@@ -888,6 +888,7 @@ #define INIT_CALLS_LEVEL(level) \ __initcall##level##_start = .; \ KEEP(*(.initcall##level##.init)) \ @@ -1893365,6 +1893365,19 @@ index 900262f4c..18c00ae56 100644 enum mipi_dsi_pixel_format { MIPI_DSI_FMT_RGB888, +diff --git a/include/drm/drm_mode_object.h b/include/drm/drm_mode_object.h +index 912f1e415..08d7a7f01 100644 +--- a/include/drm/drm_mode_object.h ++++ b/include/drm/drm_mode_object.h +@@ -60,7 +60,7 @@ struct drm_mode_object { + void (*free_cb)(struct kref *kref); + }; + +-#define DRM_OBJECT_MAX_PROPERTY 24 ++#define DRM_OBJECT_MAX_PROPERTY 64 + /** + * struct drm_object_properties - property tracking for &drm_mode_object + */ diff --git a/include/dt-bindings/clock/px30-cru.h b/include/dt-bindings/clock/px30-cru.h index 5b1416fcd..7ddb0602d 100644 --- a/include/dt-bindings/clock/px30-cru.h @@ -1903750,7 +1903763,7 @@ index 000000000..60e42aaba + +#endif /* _PWM_ROCKCHIP_H_ */ diff --git a/include/linux/pwm.h b/include/linux/pwm.h -index 63426d825..a7dfeb7e9 100644 +index 44fe5fae2..ef2b18aad 100644 --- a/include/linux/pwm.h +++ b/include/linux/pwm.h @@ -309,6 +309,8 @@ struct pwm_chip { @@ -1903761,8 +1903774,8 @@ index 63426d825..a7dfeb7e9 100644 +void pwm_free(struct pwm_device *pwm); int pwm_apply_might_sleep(struct pwm_device *pwm, const struct pwm_state *state); int pwm_adjust_config(struct pwm_device *pwm); - -@@ -408,6 +410,17 @@ struct pwm_device *devm_fwnode_pwm_get(struct device *dev, + static inline int pwm_apply_state(struct pwm_device *pwm, const struct pwm_state *state) +@@ -412,6 +414,17 @@ struct pwm_device *devm_fwnode_pwm_get(struct device *dev, struct fwnode_handle *fwnode, const char *con_id); #else @@ -1906012,10 +1906025,10 @@ index 000000000..39c497774 + +#endif diff --git a/include/linux/sched.h b/include/linux/sched.h -index 57fd3044f..30607c24d 100644 +index b98bab13f..1b437268e 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -840,6 +840,20 @@ struct kmap_ctrl { +@@ -843,6 +843,20 @@ struct kmap_ctrl { #endif }; @@ -1906036,7 +1906049,7 @@ index 57fd3044f..30607c24d 100644 struct task_struct { #ifdef CONFIG_THREAD_INFO_IN_TASK /* -@@ -1661,6 +1675,10 @@ struct task_struct { +@@ -1664,6 +1678,10 @@ struct task_struct { u64 ftoken; #endif @@ -1930434,10 +1930447,10 @@ index 000000000..c217380d1 + +#endif diff --git a/init/Kconfig b/init/Kconfig -index 245d7f34e..37c2e1387 100644 +index 2fb8d1ba7..f19080e52 100644 --- a/init/Kconfig +++ b/init/Kconfig -@@ -1373,6 +1373,12 @@ if BLK_DEV_INITRD +@@ -1382,6 +1382,12 @@ if BLK_DEV_INITRD source "usr/Kconfig" @@ -1930451,7 +1930464,7 @@ index 245d7f34e..37c2e1387 100644 config BOOT_CONFIG diff --git a/init/initramfs.c b/init/initramfs.c -index efc477b90..dcf290295 100644 +index 148988bd8..8f9b63d85 100644 --- a/init/initramfs.c +++ b/init/initramfs.c @@ -15,6 +15,7 @@ @@ -1930462,7 +1930475,7 @@ index efc477b90..dcf290295 100644 #include #include #include -@@ -497,6 +498,9 @@ static char * __init unpack_to_rootfs(char *buf, unsigned long len) +@@ -512,6 +513,9 @@ static char * __init unpack_to_rootfs(char *buf, unsigned long len) state = Start; this_header = 0; message = NULL; @@ -1933031,32 +1933044,10 @@ index 000000000..63e3da6f4 + make_boot_img; +fi diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c -index 828d5cc36..4cd09e5c1 100644 +index 3eb7fda8a..8c2ffc6f3 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c -@@ -794,44 +794,31 @@ static void check_section(const char *modname, struct elf_info *elf, - #define ALL_INIT_DATA_SECTIONS \ - ".init.setup", ".init.rodata", ".meminit.rodata", \ - ".init.data", ".meminit.data" --#define ALL_EXIT_DATA_SECTIONS \ -- ".exit.data", ".memexit.data" -- --#define ALL_INIT_TEXT_SECTIONS \ -- ".init.text", ".meminit.text" --#define ALL_EXIT_TEXT_SECTIONS \ -- ".exit.text" - - #define ALL_PCI_INIT_SECTIONS \ - ".pci_fixup_early", ".pci_fixup_header", ".pci_fixup_final", \ - ".pci_fixup_enable", ".pci_fixup_resume", \ - ".pci_fixup_resume_early", ".pci_fixup_suspend" - --#define ALL_XXXINIT_SECTIONS MEM_INIT_SECTIONS -+#define ALL_XXXINIT_SECTIONS ".meminit.*" - - #define ALL_INIT_SECTIONS INIT_SECTIONS, ALL_XXXINIT_SECTIONS --#define ALL_EXIT_SECTIONS EXIT_SECTIONS -+#define ALL_EXIT_SECTIONS ".exit.*" +@@ -804,8 +804,7 @@ static void check_section(const char *modname, struct elf_info *elf, #define DATA_SECTIONS ".data", ".data.rel" #define TEXT_SECTIONS ".text", ".text.*", ".sched.text", \ @@ -1933065,15 +1933056,8 @@ index 828d5cc36..4cd09e5c1 100644 + ".kprobes.text", ".cpuidle.text", ".noinstr.text" #define OTHER_TEXT_SECTIONS ".ref.text", ".head.text", ".spinlock.text", \ ".fixup", ".entry.text", ".exception.text", \ - ".coldtext", ".softirqentry.text" - - #define INIT_SECTIONS ".init.*" --#define MEM_INIT_SECTIONS ".meminit.*" -- --#define EXIT_SECTIONS ".exit.*" - --#define ALL_TEXT_SECTIONS ALL_INIT_TEXT_SECTIONS, ALL_EXIT_TEXT_SECTIONS, \ -+#define ALL_TEXT_SECTIONS ".init.text", ".meminit.text", ".exit.text", \ + ".coldtext", ".softirqentry.text", ".irqentry.text" +@@ -814,9 +813,7 @@ static void check_section(const char *modname, struct elf_info *elf, TEXT_SECTIONS, OTHER_TEXT_SECTIONS enum mismatch { @@ -1933084,7 +1933068,7 @@ index 828d5cc36..4cd09e5c1 100644 XXXINIT_TO_SOME_INIT, ANY_INIT_TO_ANY_EXIT, ANY_EXIT_TO_ANY_INIT, -@@ -862,20 +849,10 @@ static const struct sectioncheck sectioncheck[] = { +@@ -847,20 +844,10 @@ static const struct sectioncheck sectioncheck[] = { /* Do not reference init/exit code/data from * normal code and data */ @@ -1933095,7 +1933079,7 @@ index 828d5cc36..4cd09e5c1 100644 -}, -{ - .fromsec = { DATA_SECTIONS, NULL }, -- .bad_tosec = { ALL_XXXINIT_SECTIONS, INIT_SECTIONS, NULL }, +- .bad_tosec = { ALL_INIT_SECTIONS, NULL }, - .mismatch = DATA_TO_ANY_INIT, -}, { @@ -1933105,9 +1933089,9 @@ index 828d5cc36..4cd09e5c1 100644 + .bad_tosec = { ALL_INIT_SECTIONS, ALL_EXIT_SECTIONS, NULL }, + .mismatch = TEXTDATA_TO_ANY_INIT_EXIT, }, - /* Do not reference init code/data from meminit code/data */ + /* Do not use exit code/data from init code */ { -@@ -1000,19 +977,7 @@ static int secref_whitelist(const char *fromsec, const char *fromsym, +@@ -979,13 +966,7 @@ static int secref_whitelist(const char *fromsec, const char *fromsym, /* symbols in data sections that may refer to any init/exit sections */ if (match(fromsec, PATTERNS(DATA_SECTIONS)) && match(tosec, PATTERNS(ALL_INIT_SECTIONS, ALL_EXIT_SECTIONS)) && @@ -1933118,39 +1933102,11 @@ index 828d5cc36..4cd09e5c1 100644 - "*_probe", - "*_probe_one", - "*_console"))) -- return 0; -- -- /* symbols in data sections that may refer to meminit sections */ -- if (match(fromsec, PATTERNS(DATA_SECTIONS)) && -- match(tosec, PATTERNS(ALL_XXXINIT_SECTIONS)) && -- match(fromsym, PATTERNS("*driver"))) + match(fromsym, PATTERNS("*_ops", "*_probe", "*_console"))) return 0; /* -@@ -1022,7 +987,7 @@ static int secref_whitelist(const char *fromsec, const char *fromsym, - */ - if (!extra_warn && - match(fromsec, PATTERNS(DATA_SECTIONS)) && -- match(tosec, PATTERNS(EXIT_SECTIONS)) && -+ match(tosec, PATTERNS(ALL_EXIT_SECTIONS)) && - match(fromsym, PATTERNS("*driver"))) - return 0; - -@@ -1187,10 +1152,10 @@ static void check_export_symbol(struct module *mod, struct elf_info *elf, - ELF_ST_TYPE(sym->st_info) == STT_LOPROC) - s->is_func = true; - -- if (match(secname, PATTERNS(INIT_SECTIONS))) -+ if (match(secname, PATTERNS(ALL_INIT_SECTIONS))) - warn("%s: %s: EXPORT_SYMBOL used for init symbol. Remove __init or EXPORT_SYMBOL.\n", - mod->name, name); -- else if (match(secname, PATTERNS(EXIT_SECTIONS))) -+ else if (match(secname, PATTERNS(ALL_EXIT_SECTIONS))) - warn("%s: %s: EXPORT_SYMBOL used for exit symbol. Remove __exit or EXPORT_SYMBOL.\n", - mod->name, name); - } -@@ -1407,32 +1372,20 @@ static void get_rel_type_and_sym(struct elf_info *elf, uint64_t r_info, +@@ -1380,32 +1361,20 @@ static void get_rel_type_and_sym(struct elf_info *elf, uint64_t r_info, return; } @@ -1933190,7 +1933146,7 @@ index 828d5cc36..4cd09e5c1 100644 for (rela = start; rela < stop; rela++) { Elf_Sym *tsym; -@@ -1464,17 +1417,10 @@ static void section_rela(struct module *mod, struct elf_info *elf, +@@ -1437,17 +1406,10 @@ static void section_rela(struct module *mod, struct elf_info *elf, } static void section_rel(struct module *mod, struct elf_info *elf, @@ -1933211,7 +1933167,7 @@ index 828d5cc36..4cd09e5c1 100644 for (rel = start; rel < stop; rel++) { Elf_Sym *tsym; -@@ -1522,16 +1468,33 @@ static void section_rel(struct module *mod, struct elf_info *elf, +@@ -1495,16 +1457,33 @@ static void section_rel(struct module *mod, struct elf_info *elf, static void check_sec_ref(struct module *mod, struct elf_info *elf) { int i;