diff --git a/include/image-commands.mk b/include/image-commands.mk index 7e4bcacafa..d329c72453 100644 --- a/include/image-commands.mk +++ b/include/image-commands.mk @@ -438,13 +438,14 @@ endef define Build/jffs2 rm -rf $(KDIR_TMP)/$(DEVICE_NAME)/jffs2 && \ - mkdir -p $(KDIR_TMP)/$(DEVICE_NAME)/jffs2/$$(dirname $(1)) && \ - cp $@ $(KDIR_TMP)/$(DEVICE_NAME)/jffs2/$(1) && \ + mkdir -p $(KDIR_TMP)/$(DEVICE_NAME)/jffs2/$$(dirname $(word 1,$(1))) && \ + cp $@ $(KDIR_TMP)/$(DEVICE_NAME)/jffs2/$(word 1,$(1)) && \ $(STAGING_DIR_HOST)/bin/mkfs.jffs2 --pad \ $(if $(CONFIG_BIG_ENDIAN),--big-endian,--little-endian) \ --squash-uids -v -e $(patsubst %k,%KiB,$(BLOCKSIZE)) \ -o $@.new \ -d $(KDIR_TMP)/$(DEVICE_NAME)/jffs2 \ + $(wordlist 2,$(words $(1)),$(1)) \ 2>&1 1>/dev/null | awk '/^.+$$$$/' && \ $(STAGING_DIR_HOST)/bin/padjffs2 $@.new -J $(patsubst %k,,$(BLOCKSIZE)) -rm -rf $(KDIR_TMP)/$(DEVICE_NAME)/jffs2/ diff --git a/include/kernel-6.6 b/include/kernel-6.6 index f034d0754c..aa0a345b29 100644 --- a/include/kernel-6.6 +++ b/include/kernel-6.6 @@ -1,2 +1,2 @@ -LINUX_VERSION-6.6 = .71 -LINUX_KERNEL_HASH-6.6.71 = 219715ba2dcfa6539fba09ad3f9212772f3507189eb60d77f8e89b06c32e724e +LINUX_VERSION-6.6 = .73 +LINUX_KERNEL_HASH-6.6.73 = d2028db190c201650898be8db1c705e9fe73ab44fc04290b4f7af63514122490 diff --git a/include/kernel-defaults.mk b/include/kernel-defaults.mk index f94ed33230..cbe415abe6 100644 --- a/include/kernel-defaults.mk +++ b/include/kernel-defaults.mk @@ -175,7 +175,6 @@ define Kernel/PrepareConfigPerRootfs [ ! -d "$(1)" ] || rm -rf $(1); \ mkdir $(1) && $(CP) -T $(LINUX_DIR) $(1); \ touch $(1)/.config; \ - rm -rf $(1)/usr/initramfs_data.cpio*; \ } endef @@ -190,6 +189,7 @@ define Kernel/CompileImage/Initramfs $(call Kernel/Configure/Initramfs,$(if $(1),$(1),$(TARGET_DIR)),$(LINUX_DIR)$(2)); \ $(CP) $(GENERIC_PLATFORM_DIR)/other-files/init $(if $(1),$(1),$(TARGET_DIR))/init; \ $(if $(SOURCE_DATE_EPOCH),touch -hcd "@$(SOURCE_DATE_EPOCH)" $(if $(1),$(1),$(TARGET_DIR)) $(if $(1),$(1),$(TARGET_DIR))/init;) \ + rm -rf $(LINUX_DIR)$(2)/usr/initramfs_data.cpio*; \ $(if $(CONFIG_TARGET_ROOTFS_INITRAMFS_SEPARATE), \ $(call locked,{ \ $(if $(call qstrip,$(CONFIG_EXTERNAL_CPIO)), \ diff --git a/package/kernel/linux/modules/netsupport.mk b/package/kernel/linux/modules/netsupport.mk index 49bba78dbc..d7e80f8162 100644 --- a/package/kernel/linux/modules/netsupport.mk +++ b/package/kernel/linux/modules/netsupport.mk @@ -1649,3 +1649,21 @@ define KernelPackage/qrtr-mhi/description endef $(eval $(call KernelPackage,qrtr-mhi)) + +define KernelPackage/unix-diag + TITLE:=UNIX socket monitoring interface + KCONFIG:=CONFIG_UNIX_DIAG + FILES:= $(LINUX_DIR)/net/unix/unix_diag.ko + AUTOLOAD:=$(call AutoProbe,unix_diag) +endef + +$(eval $(call KernelPackage,unix-diag)) + +define KernelPackage/packet-diag + TITLE:=Packet sockets monitoring interface + KCONFIG:=CONFIG_PACKET_DIAG + FILES:= $(LINUX_DIR)/net/packet/af_packet_diag.ko + AUTOLOAD:=$(call AutoProbe,af_packet_diag) +endef + +$(eval $(call KernelPackage,packet-diag)) diff --git a/package/kernel/mac80211/patches/build/140-trace_backport.patch b/package/kernel/mac80211/patches/build/140-trace_backport.patch index 8b77b7e83d..2d25f1c5c3 100644 --- a/package/kernel/mac80211/patches/build/140-trace_backport.patch +++ b/package/kernel/mac80211/patches/build/140-trace_backport.patch @@ -1,541 +1,694 @@ --- a/drivers/bus/mhi/host/trace.h +++ b/drivers/bus/mhi/host/trace.h -@@ -104,7 +104,7 @@ TRACE_EVENT(mhi_gen_tre, +@@ -104,7 +104,11 @@ TRACE_EVENT(mhi_gen_tre, ), TP_fast_assign( -- __assign_str(name); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(name); ++#else + __assign_str(name, mhi_cntrl->mhi_dev->name); ++#endif __entry->ch_num = mhi_chan->chan; __entry->wp = mhi_tre; __entry->tre_ptr = le64_to_cpu(mhi_tre->ptr); -@@ -132,7 +132,7 @@ TRACE_EVENT(mhi_intvec_states, +@@ -132,7 +136,11 @@ TRACE_EVENT(mhi_intvec_states, ), TP_fast_assign( -- __assign_str(name); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(name); ++#else + __assign_str(name, mhi_cntrl->mhi_dev->name); ++#endif __entry->local_ee = mhi_cntrl->ee; __entry->state = mhi_cntrl->dev_state; __entry->dev_ee = dev_ee; -@@ -159,7 +159,7 @@ TRACE_EVENT(mhi_tryset_pm_state, +@@ -159,7 +167,11 @@ TRACE_EVENT(mhi_tryset_pm_state, ), TP_fast_assign( -- __assign_str(name); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(name); ++#else + __assign_str(name, mhi_cntrl->mhi_dev->name); ++#endif if (pm_state) pm_state = __fls(pm_state); __entry->pm_state = pm_state; -@@ -185,7 +185,7 @@ DECLARE_EVENT_CLASS(mhi_process_event_ri +@@ -185,7 +197,11 @@ DECLARE_EVENT_CLASS(mhi_process_event_ri ), TP_fast_assign( -- __assign_str(name); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(name); ++#else + __assign_str(name, mhi_cntrl->mhi_dev->name); ++#endif __entry->rp = rp; __entry->ptr = le64_to_cpu(rp->ptr); __entry->dword0 = le32_to_cpu(rp->dword[0]); -@@ -227,7 +227,7 @@ DECLARE_EVENT_CLASS(mhi_update_channel_s +@@ -227,7 +243,11 @@ DECLARE_EVENT_CLASS(mhi_update_channel_s ), TP_fast_assign( -- __assign_str(name); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(name); ++#else + __assign_str(name, mhi_cntrl->mhi_dev->name); ++#endif __entry->ch_num = mhi_chan->chan; __entry->state = state; __entry->reason = reason; -@@ -266,7 +266,7 @@ TRACE_EVENT(mhi_pm_st_transition, +@@ -266,7 +286,11 @@ TRACE_EVENT(mhi_pm_st_transition, ), TP_fast_assign( -- __assign_str(name); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(name); ++#else + __assign_str(name, mhi_cntrl->mhi_dev->name); ++#endif __entry->state = state; ), --- a/drivers/net/wireless/ath/ath10k/trace.h +++ b/drivers/net/wireless/ath/ath10k/trace.h -@@ -55,8 +55,8 @@ DECLARE_EVENT_CLASS(ath10k_log_event, +@@ -55,8 +55,13 @@ DECLARE_EVENT_CLASS(ath10k_log_event, __vstring(msg, vaf->fmt, vaf->va) ), TP_fast_assign( -- __assign_str(device); -- __assign_str(driver); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(device); + __assign_str(driver); ++#else + __assign_str(device, dev_name(ar->dev)); + __assign_str(driver, dev_driver_string(ar->dev)); ++#endif __assign_vstr(msg, vaf->fmt, vaf->va); ), TP_printk( -@@ -92,8 +92,8 @@ TRACE_EVENT(ath10k_log_dbg, +@@ -92,8 +97,13 @@ TRACE_EVENT(ath10k_log_dbg, __vstring(msg, vaf->fmt, vaf->va) ), TP_fast_assign( -- __assign_str(device); -- __assign_str(driver); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(device); + __assign_str(driver); ++#else + __assign_str(device, dev_name(ar->dev)); + __assign_str(driver, dev_driver_string(ar->dev)); ++#endif __entry->level = level; __assign_vstr(msg, vaf->fmt, vaf->va); ), -@@ -121,10 +121,10 @@ TRACE_EVENT(ath10k_log_dbg_dump, +@@ -121,10 +131,17 @@ TRACE_EVENT(ath10k_log_dbg_dump, ), TP_fast_assign( -- __assign_str(device); -- __assign_str(driver); -- __assign_str(msg); -- __assign_str(prefix); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(device); + __assign_str(driver); + __assign_str(msg); + __assign_str(prefix); ++#else + __assign_str(device, dev_name(ar->dev)); + __assign_str(driver, dev_driver_string(ar->dev)); + __assign_str(msg, msg); + __assign_str(prefix, prefix); ++#endif __entry->buf_len = buf_len; memcpy(__get_dynamic_array(buf), buf, buf_len); ), -@@ -152,8 +152,8 @@ TRACE_EVENT(ath10k_wmi_cmd, +@@ -152,8 +169,13 @@ TRACE_EVENT(ath10k_wmi_cmd, ), TP_fast_assign( -- __assign_str(device); -- __assign_str(driver); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(device); + __assign_str(driver); ++#else + __assign_str(device, dev_name(ar->dev)); + __assign_str(driver, dev_driver_string(ar->dev)); ++#endif __entry->id = id; __entry->buf_len = buf_len; memcpy(__get_dynamic_array(buf), buf, buf_len); -@@ -182,8 +182,8 @@ TRACE_EVENT(ath10k_wmi_event, +@@ -182,8 +204,13 @@ TRACE_EVENT(ath10k_wmi_event, ), TP_fast_assign( -- __assign_str(device); -- __assign_str(driver); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(device); + __assign_str(driver); ++#else + __assign_str(device, dev_name(ar->dev)); + __assign_str(driver, dev_driver_string(ar->dev)); ++#endif __entry->id = id; __entry->buf_len = buf_len; memcpy(__get_dynamic_array(buf), buf, buf_len); -@@ -211,8 +211,8 @@ TRACE_EVENT(ath10k_htt_stats, +@@ -211,8 +238,13 @@ TRACE_EVENT(ath10k_htt_stats, ), TP_fast_assign( -- __assign_str(device); -- __assign_str(driver); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(device); + __assign_str(driver); ++#else + __assign_str(device, dev_name(ar->dev)); + __assign_str(driver, dev_driver_string(ar->dev)); ++#endif __entry->buf_len = buf_len; memcpy(__get_dynamic_array(buf), buf, buf_len); ), -@@ -239,8 +239,8 @@ TRACE_EVENT(ath10k_wmi_dbglog, +@@ -239,8 +271,13 @@ TRACE_EVENT(ath10k_wmi_dbglog, ), TP_fast_assign( -- __assign_str(device); -- __assign_str(driver); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(device); + __assign_str(driver); ++#else + __assign_str(device, dev_name(ar->dev)); + __assign_str(driver, dev_driver_string(ar->dev)); ++#endif __entry->hw_type = ar->hw_rev; __entry->buf_len = buf_len; memcpy(__get_dynamic_array(buf), buf, buf_len); -@@ -269,8 +269,8 @@ TRACE_EVENT(ath10k_htt_pktlog, +@@ -269,8 +306,13 @@ TRACE_EVENT(ath10k_htt_pktlog, ), TP_fast_assign( -- __assign_str(device); -- __assign_str(driver); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(device); + __assign_str(driver); ++#else + __assign_str(device, dev_name(ar->dev)); + __assign_str(driver, dev_driver_string(ar->dev)); ++#endif __entry->hw_type = ar->hw_rev; __entry->buf_len = buf_len; memcpy(__get_dynamic_array(pktlog), buf, buf_len); -@@ -301,8 +301,8 @@ TRACE_EVENT(ath10k_htt_tx, +@@ -301,8 +343,13 @@ TRACE_EVENT(ath10k_htt_tx, ), TP_fast_assign( -- __assign_str(device); -- __assign_str(driver); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(device); + __assign_str(driver); ++#else + __assign_str(device, dev_name(ar->dev)); + __assign_str(driver, dev_driver_string(ar->dev)); ++#endif __entry->msdu_id = msdu_id; __entry->msdu_len = msdu_len; __entry->vdev_id = vdev_id; -@@ -332,8 +332,8 @@ TRACE_EVENT(ath10k_txrx_tx_unref, +@@ -332,8 +379,13 @@ TRACE_EVENT(ath10k_txrx_tx_unref, ), TP_fast_assign( -- __assign_str(device); -- __assign_str(driver); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(device); + __assign_str(driver); ++#else + __assign_str(device, dev_name(ar->dev)); + __assign_str(driver, dev_driver_string(ar->dev)); ++#endif __entry->msdu_id = msdu_id; ), -@@ -358,8 +358,8 @@ DECLARE_EVENT_CLASS(ath10k_hdr_event, +@@ -358,8 +410,13 @@ DECLARE_EVENT_CLASS(ath10k_hdr_event, ), TP_fast_assign( -- __assign_str(device); -- __assign_str(driver); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(device); + __assign_str(driver); ++#else + __assign_str(device, dev_name(ar->dev)); + __assign_str(driver, dev_driver_string(ar->dev)); ++#endif __entry->len = ath10k_frm_hdr_len(data, len); memcpy(__get_dynamic_array(data), data, __entry->len); ), -@@ -386,8 +386,8 @@ DECLARE_EVENT_CLASS(ath10k_payload_event +@@ -386,8 +443,13 @@ DECLARE_EVENT_CLASS(ath10k_payload_event ), TP_fast_assign( -- __assign_str(device); -- __assign_str(driver); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(device); + __assign_str(driver); ++#else + __assign_str(device, dev_name(ar->dev)); + __assign_str(driver, dev_driver_string(ar->dev)); ++#endif __entry->len = len - ath10k_frm_hdr_len(data, len); memcpy(__get_dynamic_array(payload), data + ath10k_frm_hdr_len(data, len), __entry->len); -@@ -435,8 +435,8 @@ TRACE_EVENT(ath10k_htt_rx_desc, +@@ -435,8 +497,13 @@ TRACE_EVENT(ath10k_htt_rx_desc, ), TP_fast_assign( -- __assign_str(device); -- __assign_str(driver); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(device); + __assign_str(driver); ++#else + __assign_str(device, dev_name(ar->dev)); + __assign_str(driver, dev_driver_string(ar->dev)); ++#endif __entry->hw_type = ar->hw_rev; __entry->len = len; memcpy(__get_dynamic_array(rxdesc), data, len); -@@ -472,8 +472,8 @@ TRACE_EVENT(ath10k_wmi_diag_container, +@@ -472,8 +539,13 @@ TRACE_EVENT(ath10k_wmi_diag_container, ), TP_fast_assign( -- __assign_str(device); -- __assign_str(driver); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(device); + __assign_str(driver); ++#else + __assign_str(device, dev_name(ar->dev)); + __assign_str(driver, dev_driver_string(ar->dev)); ++#endif __entry->type = type; __entry->timestamp = timestamp; __entry->code = code; -@@ -505,8 +505,8 @@ TRACE_EVENT(ath10k_wmi_diag, +@@ -505,8 +577,13 @@ TRACE_EVENT(ath10k_wmi_diag, ), TP_fast_assign( -- __assign_str(device); -- __assign_str(driver); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(device); + __assign_str(driver); ++#else + __assign_str(device, dev_name(ar->dev)); + __assign_str(driver, dev_driver_string(ar->dev)); ++#endif __entry->len = len; memcpy(__get_dynamic_array(data), data, len); ), --- a/drivers/net/wireless/ath/ath11k/trace.h +++ b/drivers/net/wireless/ath/ath11k/trace.h -@@ -48,8 +48,8 @@ TRACE_EVENT(ath11k_htt_pktlog, +@@ -48,8 +48,13 @@ TRACE_EVENT(ath11k_htt_pktlog, ), TP_fast_assign( -- __assign_str(device); -- __assign_str(driver); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(device); + __assign_str(driver); ++#else + __assign_str(device, dev_name(ar->ab->dev)); + __assign_str(driver, dev_driver_string(ar->ab->dev)); ++#endif __entry->buf_len = buf_len; __entry->pktlog_checksum = pktlog_checksum; memcpy(__get_dynamic_array(pktlog), buf, buf_len); -@@ -77,8 +77,8 @@ TRACE_EVENT(ath11k_htt_ppdu_stats, +@@ -77,8 +82,13 @@ TRACE_EVENT(ath11k_htt_ppdu_stats, ), TP_fast_assign( -- __assign_str(device); -- __assign_str(driver); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(device); + __assign_str(driver); ++#else + __assign_str(device, dev_name(ar->ab->dev)); + __assign_str(driver, dev_driver_string(ar->ab->dev)); ++#endif __entry->len = len; memcpy(__get_dynamic_array(ppdu), data, len); ), -@@ -105,8 +105,8 @@ TRACE_EVENT(ath11k_htt_rxdesc, +@@ -105,8 +115,13 @@ TRACE_EVENT(ath11k_htt_rxdesc, ), TP_fast_assign( -- __assign_str(device); -- __assign_str(driver); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(device); + __assign_str(driver); ++#else + __assign_str(device, dev_name(ar->ab->dev)); + __assign_str(driver, dev_driver_string(ar->ab->dev)); ++#endif __entry->len = len; __entry->log_type = log_type; memcpy(__get_dynamic_array(rxdesc), data, len); -@@ -130,8 +130,8 @@ DECLARE_EVENT_CLASS(ath11k_log_event, +@@ -130,8 +145,13 @@ DECLARE_EVENT_CLASS(ath11k_log_event, __vstring(msg, vaf->fmt, vaf->va) ), TP_fast_assign( -- __assign_str(device); -- __assign_str(driver); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(device); + __assign_str(driver); ++#else + __assign_str(device, dev_name(ab->dev)); + __assign_str(driver, dev_driver_string(ab->dev)); ++#endif __assign_vstr(msg, vaf->fmt, vaf->va); ), TP_printk( -@@ -171,8 +171,8 @@ TRACE_EVENT(ath11k_wmi_cmd, +@@ -171,8 +191,13 @@ TRACE_EVENT(ath11k_wmi_cmd, ), TP_fast_assign( -- __assign_str(device); -- __assign_str(driver); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(device); + __assign_str(driver); ++#else + __assign_str(device, dev_name(ab->dev)); + __assign_str(driver, dev_driver_string(ab->dev)); ++#endif __entry->id = id; __entry->buf_len = buf_len; memcpy(__get_dynamic_array(buf), buf, buf_len); -@@ -201,8 +201,8 @@ TRACE_EVENT(ath11k_wmi_event, +@@ -201,8 +226,13 @@ TRACE_EVENT(ath11k_wmi_event, ), TP_fast_assign( -- __assign_str(device); -- __assign_str(driver); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(device); + __assign_str(driver); ++#else + __assign_str(device, dev_name(ab->dev)); + __assign_str(driver, dev_driver_string(ab->dev)); ++#endif __entry->id = id; __entry->buf_len = buf_len; memcpy(__get_dynamic_array(buf), buf, buf_len); -@@ -230,8 +230,8 @@ TRACE_EVENT(ath11k_log_dbg, +@@ -230,8 +260,13 @@ TRACE_EVENT(ath11k_log_dbg, ), TP_fast_assign( -- __assign_str(device); -- __assign_str(driver); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(device); + __assign_str(driver); ++#else + __assign_str(device, dev_name(ab->dev)); + __assign_str(driver, dev_driver_string(ab->dev)); ++#endif __entry->level = level; WARN_ON_ONCE(vsnprintf(__get_dynamic_array(msg), ATH11K_MSG_MAX, vaf->fmt, -@@ -262,10 +262,10 @@ TRACE_EVENT(ath11k_log_dbg_dump, +@@ -262,10 +297,17 @@ TRACE_EVENT(ath11k_log_dbg_dump, ), TP_fast_assign( -- __assign_str(device); -- __assign_str(driver); -- __assign_str(msg); -- __assign_str(prefix); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(device); + __assign_str(driver); + __assign_str(msg); + __assign_str(prefix); ++#else + __assign_str(device, dev_name(ab->dev)); + __assign_str(driver, dev_driver_string(ab->dev)); + __assign_str(msg, msg); + __assign_str(prefix, prefix); ++#endif __entry->buf_len = buf_len; memcpy(__get_dynamic_array(buf), buf, buf_len); ), -@@ -292,8 +292,8 @@ TRACE_EVENT(ath11k_wmi_diag, +@@ -292,8 +334,13 @@ TRACE_EVENT(ath11k_wmi_diag, ), TP_fast_assign( -- __assign_str(device); -- __assign_str(driver); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(device); + __assign_str(driver); ++#else + __assign_str(device, dev_name(ab->dev)); + __assign_str(driver, dev_driver_string(ab->dev)); ++#endif __entry->len = len; memcpy(__get_dynamic_array(data), data, len); ), -@@ -318,8 +318,8 @@ TRACE_EVENT(ath11k_ps_timekeeper, +@@ -318,8 +365,14 @@ TRACE_EVENT(ath11k_ps_timekeeper, __field(u32, peer_ps_timestamp) ), - TP_fast_assign(__assign_str(device); -- __assign_str(driver); -+ TP_fast_assign(__assign_str(device, dev_name(ar->ab->dev)); ++ TP_fast_assign( ++#if LINUX_VERSION_IS_GEQ(6,10,0) ++ __assign_str(device); + __assign_str(driver); ++#else ++ __assign_str(device, dev_name(ar->ab->dev)); + __assign_str(driver, dev_driver_string(ar->ab->dev)); ++#endif memcpy(__get_dynamic_array(peer_addr), peer_addr, ETH_ALEN); __entry->peer_ps_state = peer_ps_state; --- a/drivers/net/wireless/ath/ath12k/trace.h +++ b/drivers/net/wireless/ath/ath12k/trace.h -@@ -36,8 +36,8 @@ TRACE_EVENT(ath12k_htt_pktlog, +@@ -36,8 +36,13 @@ TRACE_EVENT(ath12k_htt_pktlog, ), TP_fast_assign( -- __assign_str(device); -- __assign_str(driver); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(device); + __assign_str(driver); ++#else + __assign_str(device, dev_name(ar->ab->dev)); + __assign_str(driver, dev_driver_string(ar->ab->dev)); ++#endif __entry->buf_len = buf_len; __entry->pktlog_checksum = pktlog_checksum; memcpy(__get_dynamic_array(pktlog), buf, buf_len); -@@ -73,8 +73,8 @@ TRACE_EVENT(ath12k_htt_ppdu_stats, +@@ -73,8 +78,13 @@ TRACE_EVENT(ath12k_htt_ppdu_stats, ), TP_fast_assign( -- __assign_str(device); -- __assign_str(driver); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(device); + __assign_str(driver); ++#else + __assign_str(device, dev_name(ar->ab->dev)); + __assign_str(driver, dev_driver_string(ar->ab->dev)); ++#endif __entry->len = len; __entry->info = ar->pdev->timestamp.info; __entry->sync_tstmp_lo_us = ar->pdev->timestamp.sync_timestamp_hi_us; -@@ -117,8 +117,8 @@ TRACE_EVENT(ath12k_htt_rxdesc, +@@ -117,8 +127,13 @@ TRACE_EVENT(ath12k_htt_rxdesc, ), TP_fast_assign( -- __assign_str(device); -- __assign_str(driver); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(device); + __assign_str(driver); ++#else + __assign_str(device, dev_name(ar->ab->dev)); + __assign_str(driver, dev_driver_string(ar->ab->dev)); ++#endif __entry->len = len; __entry->type = type; __entry->info = ar->pdev->timestamp.info; -@@ -153,8 +153,8 @@ TRACE_EVENT(ath12k_wmi_diag, +@@ -153,8 +168,13 @@ TRACE_EVENT(ath12k_wmi_diag, ), TP_fast_assign( -- __assign_str(device); -- __assign_str(driver); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(device); + __assign_str(driver); ++#else + __assign_str(device, dev_name(ab->dev)); + __assign_str(driver, dev_driver_string(ab->dev)); ++#endif __entry->len = len; memcpy(__get_dynamic_array(data), data, len); ), --- a/drivers/net/wireless/ath/ath6kl/trace.h +++ b/drivers/net/wireless/ath/ath6kl/trace.h -@@ -304,8 +304,8 @@ TRACE_EVENT(ath6kl_log_dbg_dump, +@@ -304,8 +304,13 @@ TRACE_EVENT(ath6kl_log_dbg_dump, ), TP_fast_assign( -- __assign_str(msg); -- __assign_str(prefix); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(msg); + __assign_str(prefix); ++#else + __assign_str(msg, msg); + __assign_str(prefix, prefix); ++#endif __entry->buf_len = buf_len; memcpy(__get_dynamic_array(buf), buf, buf_len); ), --- a/drivers/net/wireless/ath/trace.h +++ b/drivers/net/wireless/ath/trace.h -@@ -44,8 +44,8 @@ TRACE_EVENT(ath_log, +@@ -44,8 +44,13 @@ TRACE_EVENT(ath_log, ), TP_fast_assign( -- __assign_str(device); -- __assign_str(driver); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(device); + __assign_str(driver); ++#else + __assign_str(device, wiphy_name(wiphy)); + __assign_str(driver, KBUILD_MODNAME); ++#endif __assign_vstr(msg, vaf->fmt, vaf->va); ), --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/tracepoint.h +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/tracepoint.h -@@ -41,7 +41,7 @@ TRACE_EVENT(brcmf_err, +@@ -41,7 +41,11 @@ TRACE_EVENT(brcmf_err, __vstring(msg, vaf->fmt, vaf->va) ), TP_fast_assign( -- __assign_str(func); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(func); ++#else + __assign_str(func, func); ++#endif __assign_vstr(msg, vaf->fmt, vaf->va); ), TP_printk("%s: %s", __get_str(func), __get_str(msg)) -@@ -57,7 +57,7 @@ TRACE_EVENT(brcmf_dbg, +@@ -57,7 +61,11 @@ TRACE_EVENT(brcmf_dbg, ), TP_fast_assign( __entry->level = level; -- __assign_str(func); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(func); ++#else + __assign_str(func, func); ++#endif __assign_vstr(msg, vaf->fmt, vaf->va); ), TP_printk("%s: %s", __get_str(func), __get_str(msg)) --- a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/brcms_trace_brcmsmac.h +++ b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/brcms_trace_brcmsmac.h -@@ -81,7 +81,7 @@ TRACE_EVENT(brcms_macintstatus, +@@ -81,7 +81,11 @@ TRACE_EVENT(brcms_macintstatus, __field(u32, mask) ), TP_fast_assign( -- __assign_str(dev); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(dev); ++#else + __assign_str(dev, dev_name(dev)); ++#endif __entry->in_isr = in_isr; __entry->macintstatus = macintstatus; __entry->mask = mask; --- a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/brcms_trace_brcmsmac_msg.h +++ b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/brcms_trace_brcmsmac_msg.h -@@ -71,7 +71,7 @@ TRACE_EVENT(brcms_dbg, +@@ -71,7 +71,11 @@ TRACE_EVENT(brcms_dbg, ), TP_fast_assign( __entry->level = level; -- __assign_str(func); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(func); ++#else + __assign_str(func, func); ++#endif __assign_vstr(msg, vaf->fmt, vaf->va); ), TP_printk("%s: %s", __get_str(func), __get_str(msg)) --- a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/brcms_trace_brcmsmac_tx.h +++ b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/brcms_trace_brcmsmac_tx.h -@@ -31,7 +31,7 @@ TRACE_EVENT(brcms_txdesc, +@@ -31,7 +31,11 @@ TRACE_EVENT(brcms_txdesc, __dynamic_array(u8, txh, txh_len) ), TP_fast_assign( -- __assign_str(dev); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(dev); ++#else + __assign_str(dev, dev_name(dev)); ++#endif memcpy(__get_dynamic_array(txh), txh, txh_len); ), TP_printk("[%s] txdesc", __get_str(dev)) -@@ -54,7 +54,7 @@ TRACE_EVENT(brcms_txstatus, +@@ -54,7 +58,11 @@ TRACE_EVENT(brcms_txstatus, __field(u16, ackphyrxsh) ), TP_fast_assign( -- __assign_str(dev); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(dev); ++#else + __assign_str(dev, dev_name(dev)); ++#endif __entry->framelen = framelen; __entry->frameid = frameid; __entry->status = status; -@@ -85,7 +85,7 @@ TRACE_EVENT(brcms_ampdu_session, +@@ -85,7 +93,11 @@ TRACE_EVENT(brcms_ampdu_session, __field(u16, dma_len) ), TP_fast_assign( -- __assign_str(dev); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(dev); ++#else + __assign_str(dev, dev_name(dev)); ++#endif __entry->max_ampdu_len = max_ampdu_len; __entry->max_ampdu_frames = max_ampdu_frames; __entry->ampdu_len = ampdu_len; --- a/drivers/net/wireless/intel/iwlwifi/iwl-devtrace-msg.h +++ b/drivers/net/wireless/intel/iwlwifi/iwl-devtrace-msg.h -@@ -57,7 +57,7 @@ TRACE_EVENT(iwlwifi_dbg, +@@ -57,7 +57,11 @@ TRACE_EVENT(iwlwifi_dbg, ), TP_fast_assign( __entry->level = level; -- __assign_str(function); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(function); ++#else + __assign_str(function, function); ++#endif __assign_vstr(msg, vaf->fmt, vaf->va); ), TP_printk("%s", __get_str(msg)) --- a/drivers/net/wireless/intel/iwlwifi/iwl-devtrace.h +++ b/drivers/net/wireless/intel/iwlwifi/iwl-devtrace.h -@@ -87,7 +87,7 @@ static inline void trace_ ## name(proto) +@@ -87,7 +87,11 @@ static inline void trace_ ## name(proto) #endif #define DEV_ENTRY __string(dev, dev_name(dev)) --#define DEV_ASSIGN __assign_str(dev) ++#if LINUX_VERSION_IS_GEQ(6,10,0) + #define DEV_ASSIGN __assign_str(dev) ++#else +#define DEV_ASSIGN __assign_str(dev, dev_name(dev)) ++#endif #include "iwl-devtrace-io.h" #include "iwl-devtrace-ucode.h" --- a/include/trace/events/qrtr.h +++ b/include/trace/events/qrtr.h -@@ -102,7 +102,7 @@ TRACE_EVENT(qrtr_ns_message, +@@ -102,7 +102,11 @@ TRACE_EVENT(qrtr_ns_message, ), TP_fast_assign( -- __assign_str(ctrl_pkt_str); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(ctrl_pkt_str); ++#else + __assign_str(ctrl_pkt_str, ctrl_pkt_str); ++#endif __entry->sq_node = sq_node; __entry->sq_port = sq_port; ), --- a/net/mac80211/trace.h +++ b/net/mac80211/trace.h -@@ -33,7 +33,7 @@ +@@ -31,9 +31,15 @@ + #define VIF_ENTRY __field(enum nl80211_iftype, vif_type) __field(void *, sdata) \ + __field(bool, p2p) \ __string(vif_name, sdata->name) ++#if LINUX_VERSION_IS_GEQ(6,10,0) #define VIF_ASSIGN __entry->vif_type = sdata->vif.type; __entry->sdata = sdata; \ __entry->p2p = sdata->vif.p2p; \ -- __assign_str(vif_name) + __assign_str(vif_name) ++#else ++#define VIF_ASSIGN __entry->vif_type = sdata->vif.type; __entry->sdata = sdata; \ ++ __entry->p2p = sdata->vif.p2p; \ + __assign_str(vif_name, sdata->name) ++#endif #define VIF_PR_FMT " vif:%s(%d%s)" #define VIF_PR_ARG __get_str(vif_name), __entry->vif_type, __entry->p2p ? "/p2p" : "" --- a/net/wireless/trace.h +++ b/net/wireless/trace.h -@@ -446,7 +446,7 @@ TRACE_EVENT(rdev_add_virtual_intf, +@@ -446,7 +446,11 @@ TRACE_EVENT(rdev_add_virtual_intf, ), TP_fast_assign( WIPHY_ASSIGN; -- __assign_str(vir_intf_name); ++#if LINUX_VERSION_IS_GEQ(6,10,0) + __assign_str(vir_intf_name); ++#else + __assign_str(vir_intf_name, name ? name : ""); ++#endif __entry->type = type; ), TP_printk(WIPHY_PR_FMT ", virtual intf name: %s, type: %d", diff --git a/package/network/utils/ethtool/Makefile b/package/network/utils/ethtool/Makefile index cfb4cfaeb9..893fcc1eda 100644 --- a/package/network/utils/ethtool/Makefile +++ b/package/network/utils/ethtool/Makefile @@ -8,13 +8,13 @@ include $(TOPDIR)/rules.mk PKG_NAME:=ethtool -PKG_VERSION:=6.10 +PKG_VERSION:=6.11 PKG_RELEASE:=1 PKG_MAINTAINER:=Felix Fietkau PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=@KERNEL/software/network/ethtool -PKG_HASH:=cc613fe8a2bcddee17a1e6e0d763c0f3ea33c7e930658d2d7f601aa65e426a1f +PKG_HASH:=8d91f5c72ae3f25b7e88d4781279dcb320f71e30058914370b1c574c96b31202 PKG_LICENSE:=GPL-2.0 PKG_LICENSE_FILES:=COPYING diff --git a/package/system/uci/Makefile b/package/system/uci/Makefile index a253b43938..6e4d8da97c 100644 --- a/package/system/uci/Makefile +++ b/package/system/uci/Makefile @@ -13,9 +13,10 @@ PKG_RELEASE:=1 PKG_SOURCE_URL=$(PROJECT_GIT)/project/uci.git PKG_SOURCE_PROTO:=git -PKG_SOURCE_DATE:=2025-01-17 -PKG_SOURCE_VERSION:=fb3c2343b17b759b175f11aec5b3fbb1cf48bbc3 -PKG_MIRROR_HASH:=c9302f4a1cb400134cb9fc0622fb6a04bbe8c55bcc83ec454caadb1e62f3257e +PKG_SOURCE_DATE:=2025-01-20 +PKG_SOURCE_VERSION:=16ff0badbde7e17ec3bd1f827ffe45922956cf86 +PKG_MIRROR_HASH:=e91ee4a2c0baaafe1d8ccd5321de70a8412a50323b0b27bbc7ad145e77018a22 +PKG_ABI_VERSION:=20250120 PKG_LICENSE:=LGPL-2.1 PKG_LICENSE_FILES:= @@ -33,7 +34,7 @@ define Package/libuci CATEGORY:=Libraries TITLE:=C library for the Unified Configuration Interface (UCI) DEPENDS:=+libubox - ABI_VERSION:=20250117 + ABI_VERSION:=$(PKG_ABI_VERSION) endef define Package/uci @@ -55,11 +56,12 @@ TARGET_LDFLAGS += -L$(STAGING_DIR)/usr/lib CMAKE_OPTIONS += \ -DLUAPATH=/usr/lib/lua \ + -DABIVERSION=$(PKG_ABI_VERSION) \ $(if $(DEBUG),-DUCI_DEBUG=ON) define Package/libuci/install $(INSTALL_DIR) $(1)/lib - $(CP) $(PKG_BUILD_DIR)/libuci.so* $(1)/lib/ + $(CP) $(PKG_BUILD_DIR)/libuci.so.* $(1)/lib/ endef define Package/libuci-lua/install diff --git a/package/utils/fritz-tools/Makefile b/package/utils/fritz-tools/Makefile index 6e20b56ff8..b43fe20e9e 100644 --- a/package/utils/fritz-tools/Makefile +++ b/package/utils/fritz-tools/Makefile @@ -1,7 +1,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=fritz-tools -PKG_RELEASE:=2 +PKG_RELEASE:=3 CMAKE_INSTALL:=1 include $(INCLUDE_DIR)/package.mk diff --git a/package/utils/fritz-tools/src/fritz_cal_extract.c b/package/utils/fritz-tools/src/fritz_cal_extract.c index 9899cd53c3..c4547bc7e0 100644 --- a/package/utils/fritz-tools/src/fritz_cal_extract.c +++ b/package/utils/fritz-tools/src/fritz_cal_extract.c @@ -8,6 +8,9 @@ * that is Not copyrighted -- provided to the public domain * Version 1.4 11 December 2005 Mark Adler * + * Modifications to also handle calibration data in reversed byte order + * (c) 2024 by . + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or @@ -28,31 +31,54 @@ #include #include #include +#include #include #include #include #include "zlib.h" #define CHUNK 1024 +#define DEFAULT_BUFFERSIZE (129 * 1024) -static inline size_t special_min(size_t a, size_t b) +#define MIN(a,b) (((a)<(b))?(a):(b)) + +/* Reverse byte order in data buffer. + * 'top' is position of last valid data byte = (datasize - 1) + */ +static void buffer_reverse(unsigned char *data, unsigned int top) { - return a == 0 ? b : (a < b ? a : b); + register unsigned char swapbyte; + const unsigned int center = top / 2; + + for (unsigned int bottom = 0; bottom < center; ++bottom, --top) { + swapbyte = data[bottom]; + data[bottom] = data[top]; + data[top] = swapbyte; + } } -/* Decompress from file source to file dest until stream ends or EOF. - inf() returns Z_OK on success, Z_MEM_ERROR if memory could not be - allocated for processing, Z_DATA_ERROR if the deflate data is - invalid or incomplete, Z_VERSION_ERROR if the version of zlib.h and - the version of the library linked do not match, or Z_ERRNO if there - is an error reading or writing the files. */ -static int inf(FILE *source, FILE *dest, size_t limit, size_t skip) +/* Decompress from file source to data buffer until stream ends + * or *limit bytes have been written to buffer. + * + * On call, 'limit' must reference a variable containing the intended + * number of bytes to retrieve (must be <= allocated buffer size). + * + * Return values (success): + * Z_END_STREAM if complete data was retrieved (*limit == size of complete data), + * or Z_OK if data was retrieved up to limit (*limit == original value). + * + * Return values (failure): + * Z_MEM_ERROR if memory could not be allocated for processing, + * Z_DATA_ERROR if the deflate data is invalid or incomplete, + * Z_VERSION_ERROR if the version of zlib.h and the version of the + * library linked do not match, or + * Z_ERRNO if there is an error reading or writing the files. + */ +static int inflate_to_buffer(FILE *source, unsigned char *buf, size_t *limit) { int ret; - size_t have; z_stream strm; unsigned char in[CHUNK]; - unsigned char out[CHUNK]; /* allocate inflate state */ strm.zalloc = Z_NULL; @@ -64,6 +90,10 @@ static int inf(FILE *source, FILE *dest, size_t limit, size_t skip) if (ret != Z_OK) return ret; + /* set data buffer as stream output */ + strm.avail_out = *limit; + strm.next_out = buf; + /* decompress until deflate stream ends or end of file */ do { strm.avail_in = fread(in, 1, CHUNK, source); @@ -75,35 +105,28 @@ static int inf(FILE *source, FILE *dest, size_t limit, size_t skip) break; strm.next_in = in; - /* run inflate() on input until output buffer not full */ - do { - strm.avail_out = CHUNK; - strm.next_out = out; - ret = inflate(&strm, Z_NO_FLUSH); - assert(ret != Z_STREAM_ERROR); /* state not clobbered */ - switch (ret) { + /* run inflate(), fill data buffer with all available output */ + ret = inflate(&strm, Z_FINISH); + assert(ret != Z_STREAM_ERROR); /* state not clobbered */ + + switch (ret) { case Z_NEED_DICT: ret = Z_DATA_ERROR; /* and fall through */ case Z_DATA_ERROR: case Z_MEM_ERROR: (void)inflateEnd(&strm); return ret; - } - have = special_min(limit, CHUNK - strm.avail_out) - skip; - if (fwrite(&out[skip], have, 1, dest) != 1 || ferror(dest)) { - (void)inflateEnd(&strm); - return Z_ERRNO; - } - skip = 0; - limit -= have; - } while (strm.avail_out == 0 && limit > 0); + } + /* done when inflate() says it's done or limit reached */ + } while (ret != Z_STREAM_END && strm.avail_out > 0); - /* done when inflate() says it's done */ - } while (ret != Z_STREAM_END && limit > 0); + /* set limit to end of retrieved data */ + assert(strm.total_out <= *limit); + *limit = strm.total_out; /* clean up and return */ (void)inflateEnd(&strm); - return (limit == 0 ? Z_OK : (ret == Z_STREAM_END ? Z_OK : Z_DATA_ERROR)); + return (ret == Z_STREAM_END ? Z_STREAM_END : (strm.avail_out == 0 ? Z_OK : Z_DATA_ERROR)); } /* report a zlib or i/o error */ @@ -140,7 +163,8 @@ static unsigned int get_num(char *str) static void usage(void) { - fprintf(stderr, "Usage: fritz_cal_extract [-s seek offset] [-i skip] [-o output file] [-l limit] [infile] -e entry_id\n" + fprintf(stderr, "Usage: fritz_cal_extract -e entry_id [-s seek offset] [-l limit]\n" + "\t[-r reverse extracted data] [-i skip n bytes] [-o output file] [infile]\n" "Finds and extracts zlib compressed calibration data in the EVA loader\n"); exit(EXIT_FAILURE); } @@ -154,15 +178,18 @@ struct cal_entry { int main(int argc, char **argv) { struct cal_entry cal = { .len = 0 }; + unsigned char *buf = NULL; FILE *in = stdin; FILE *out = stdout; + size_t datasize = DEFAULT_BUFFERSIZE; size_t limit = 0, skip = 0; int initial_offset = 0; int entry = -1; + bool reversed = false, limit_was_set = true; int ret; int opt; - while ((opt = getopt(argc, argv, "s:e:o:l:i:")) != -1) { + while ((opt = getopt(argc, argv, "s:e:o:l:i:r")) != -1) { switch (opt) { case 's': initial_offset = (int)get_num(optarg); @@ -199,6 +226,9 @@ int main(int argc, char **argv) goto out_bad; } break; + case 'r': + reversed = true; + break; default: /* '?' */ usage(); } @@ -243,11 +273,50 @@ int main(int argc, char **argv) goto out_bad; } - ret = inf(in, out, limit, skip); - if (ret == Z_OK) - goto out; + /* Set boundaries. Only keep default datasize if we need complete data + * for reversal and didn't set a higher limit. */ + if (!limit) { + limit_was_set = false; + limit = datasize - skip; + } + datasize = (reversed && datasize >= limit + skip) ? datasize : (limit + skip); - zerr(ret); + /* Create data buffer. */ + buf = malloc(datasize); + assert(buf != NULL); + + ret = inflate_to_buffer(in, buf, &datasize); + + if ((reversed || !limit_was_set) && ret != Z_STREAM_END) { /* didn't read to stream end */ + fprintf(stderr, "Failed: Data exceeds buffer size of %u. Refusing to reverse" + " or store incomplete data." + " Use a higher limit [-l] to increase buffer size.\n", + (unsigned int) datasize); + goto out_bad; + } + + ret = (ret == Z_STREAM_END) ? Z_OK : ret; /* normalize return value */ + if (ret != Z_OK) { + zerr(ret); + goto out_bad; + } + + if (reversed) + buffer_reverse(buf, datasize - 1); + + if (datasize <= skip) { + fprintf(stderr, "Failed to skip %u bytes, total data size is %u!\n", + (unsigned int)skip, (unsigned int)datasize); + goto out_bad; + } + + limit = MIN(limit, datasize - skip); + if (fwrite(&buf[skip], limit, 1, out) != 1 || ferror(out)) { + fprintf(stderr, "Failed to write data buffer to output file"); + goto out_bad; + } + + goto out; out_bad: ret = EXIT_FAILURE; @@ -257,5 +326,6 @@ out: fclose(in); if (out) fclose(out); + free(buf); return ret; } diff --git a/target/linux/airoha/patches-6.6/101-01-thermal-of-Add-devm_thermal_of_zone_register_with_pa.patch b/target/linux/airoha/patches-6.6/101-01-thermal-of-Add-devm_thermal_of_zone_register_with_pa.patch index 7836aef7dd..d646e05170 100644 --- a/target/linux/airoha/patches-6.6/101-01-thermal-of-Add-devm_thermal_of_zone_register_with_pa.patch +++ b/target/linux/airoha/patches-6.6/101-01-thermal-of-Add-devm_thermal_of_zone_register_with_pa.patch @@ -40,7 +40,7 @@ Signed-off-by: Christian Marangi --- a/drivers/thermal/thermal_of.c +++ b/drivers/thermal/thermal_of.c -@@ -245,7 +245,7 @@ static void thermal_of_parameters_init(s +@@ -246,7 +246,7 @@ static void thermal_of_parameters_init(s { int coef[2]; int ncoef = ARRAY_SIZE(coef); @@ -49,7 +49,7 @@ Signed-off-by: Christian Marangi tzp->no_hwmon = true; -@@ -257,14 +257,11 @@ static void thermal_of_parameters_init(s +@@ -258,14 +258,11 @@ static void thermal_of_parameters_init(s * thermal zone. Thus, we are considering only the first two * values as slope and offset. */ @@ -67,7 +67,7 @@ Signed-off-by: Christian Marangi } static struct device_node *thermal_of_zone_get_by_name(struct thermal_zone_device *tz) -@@ -458,10 +455,15 @@ static void thermal_of_zone_unregister(s +@@ -459,10 +456,15 @@ static void thermal_of_zone_unregister(s * zone properties and registers new thermal zone with those * properties. * @@ -83,7 +83,7 @@ Signed-off-by: Christian Marangi * * Return: a valid thermal zone structure pointer on success. * - EINVAL: if the device tree thermal description is malformed -@@ -469,11 +471,11 @@ static void thermal_of_zone_unregister(s +@@ -470,11 +472,11 @@ static void thermal_of_zone_unregister(s * - Other negative errors are returned by the underlying called functions */ static struct thermal_zone_device *thermal_of_zone_register(struct device_node *sensor, int id, void *data, @@ -97,7 +97,7 @@ Signed-off-by: Christian Marangi struct thermal_zone_device_ops *of_ops; struct device_node *np; int delay, pdelay; -@@ -508,7 +510,7 @@ static struct thermal_zone_device *therm +@@ -509,7 +511,7 @@ static struct thermal_zone_device *therm goto out_kfree_trips; } @@ -106,7 +106,7 @@ Signed-off-by: Christian Marangi of_ops->bind = thermal_of_bind; of_ops->unbind = thermal_of_unbind; -@@ -516,7 +518,7 @@ static struct thermal_zone_device *therm +@@ -517,7 +519,7 @@ static struct thermal_zone_device *therm mask = GENMASK_ULL((ntrips) - 1, 0); tz = thermal_zone_device_register_with_trips(np->name, trips, ntrips, @@ -115,7 +115,7 @@ Signed-off-by: Christian Marangi pdelay, delay); if (IS_ERR(tz)) { ret = PTR_ERR(tz); -@@ -571,6 +573,7 @@ static int devm_thermal_of_zone_match(st +@@ -572,6 +574,7 @@ static int devm_thermal_of_zone_match(st struct thermal_zone_device *devm_thermal_of_zone_register(struct device *dev, int sensor_id, void *data, const struct thermal_zone_device_ops *ops) { @@ -123,7 +123,7 @@ Signed-off-by: Christian Marangi struct thermal_zone_device **ptr, *tzd; ptr = devres_alloc(devm_thermal_of_zone_release, sizeof(*ptr), -@@ -578,7 +581,7 @@ struct thermal_zone_device *devm_thermal +@@ -579,7 +582,7 @@ struct thermal_zone_device *devm_thermal if (!ptr) return ERR_PTR(-ENOMEM); @@ -132,7 +132,7 @@ Signed-off-by: Christian Marangi if (IS_ERR(tzd)) { devres_free(ptr); return tzd; -@@ -592,6 +595,46 @@ struct thermal_zone_device *devm_thermal +@@ -593,6 +596,46 @@ struct thermal_zone_device *devm_thermal EXPORT_SYMBOL_GPL(devm_thermal_of_zone_register); /** diff --git a/target/linux/ath79/dts/qca9557_ruckus_r500.dts b/target/linux/ath79/dts/qca9557_ruckus_r500.dts new file mode 100644 index 0000000000..53495ac16d --- /dev/null +++ b/target/linux/ath79/dts/qca9557_ruckus_r500.dts @@ -0,0 +1,331 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT + +#include "qca955x.dtsi" + +#include +#include +#include +#include + +/ { + compatible = "ruckus,r500", "qca,qca9557"; + model = "Ruckus R500"; + + aliases { + led-boot = &power_green; + led-failsafe = &power_red; + led-running = &power_green; + led-upgrade = &power_red; + }; + + chosen { + bootargs = "console=ttyS0,115200n8"; + }; + + leds { + compatible = "gpio-leds"; + + pinctrl-names = "default"; + pinctrl-0 = <&jtag_disable_pins &clks_disable_pins &enable_gpio_4>; + + power_green: led-0 { + function = LED_FUNCTION_POWER; + color = ; + gpios = <&gpio 4 GPIO_ACTIVE_LOW>; + default-state = "on"; + }; + + power_red: led-1 { + function = LED_FUNCTION_POWER; + color = ; + gpios = <&gpio 16 GPIO_ACTIVE_HIGH>; + default-state = "off"; + panic-indicator; + }; + + // DIR (Zone Director) LED - Indicates Zone director connection status + led-2 { + color = ; + function = "dir"; + gpios = <&gpio 17 GPIO_ACTIVE_LOW>; + }; + + // AIR (Signal/Air Quality) LED - Indicates uplink status and the quality of the wireless signal to the uplink AP + led-3 { + color = ; + function = "air"; + gpios = <&gpio 18 GPIO_ACTIVE_LOW>; + }; + + led-4 { + color = ; + function = LED_FUNCTION_WLAN_2GHZ; + gpios = <&gpio 1 GPIO_ACTIVE_LOW>; + linux,default-trigger = "phy1assoc"; + }; + + led-5 { + color = ; + function = LED_FUNCTION_WLAN_2GHZ; + gpios = <&gpio 2 GPIO_ACTIVE_LOW>; + linux,default-trigger = "phy1tpt"; + }; + + led-6 { + color = ; + function = LED_FUNCTION_WLAN_5GHZ; + gpios = <&gpio 21 GPIO_ACTIVE_LOW>; + linux,default-trigger = "phy0assoc"; + }; + + led-7 { + color = ; + function = LED_FUNCTION_WLAN_5GHZ; + gpios = <&gpio 22 GPIO_ACTIVE_LOW>; + linux,default-trigger = "phy0tpt"; + }; + }; + + keys { + compatible = "gpio-keys"; + + reset { + label = "reset"; + gpios = <&gpio 0 GPIO_ACTIVE_HIGH>; + linux,code = ; + debounce-interval = <60>; + }; + + }; + + beamforming-2g-spi { + compatible = "spi-gpio"; + mosi-gpios = <&gpio 15 GPIO_ACTIVE_HIGH>; + sck-gpios = <&gpio 14 GPIO_ACTIVE_HIGH>; + num-chipselects = <0>; + #address-cells = <1>; + #size-cells = <0>; + + beamforming-2g-gpio@0 { + compatible = "fairchild,74hc595"; + reg = <0>; + registers-number = <1>; + spi-max-frequency = <24000000>; + gpio-controller; + #gpio-cells = <2>; + }; + }; + + beamforming-5g-spi { + /* + * ath10k driver doesn't expose GPIOs as of now, + * so let's disable it for now. The shift register + * for antenna pattern control is correctly initialized + * for omnidirectional pattern correctly despite that, + * there is just no possibility to control that from OpenWrt yet. + */ + status = "disabled"; + compatible = "spi-gpio"; + mosi-gpios = <&ath10k 15 GPIO_ACTIVE_HIGH>; + sck-gpios = <&ath10k 14 GPIO_ACTIVE_HIGH>; + num-chipselects = <0>; + #address-cells = <1>; + #size-cells = <0>; + + beamforming-5g-gpio@0 { + compatible = "fairchild,74hc595"; + reg = <0>; + registers-number = <1>; + spi-max-frequency = <24000000>; + gpio-controller; + #gpio-cells = <2>; + }; + }; + + i2c: i2c { + compatible = "i2c-gpio"; + #address-cells = <1>; + #size-cells = <0>; + + scl-gpios = <&gpio 19 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; + sda-gpios = <&gpio 20 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; + + tpm@20 { + compatible = "infineon,slb9645tt", "tcg,tpm-tis-i2c"; + reg = <0x20>; + crc-checksum; + }; + }; + + reserved-memory { + #address-cells = <1>; + #size-cells = <1>; + ranges; + + ruckus-himem@fff0000 { + /* Ruckus Himem area used to control + * redundant boot image selection + */ + compatible = "nvmem-rmem"; + reg = <0xfff0000 0x10000>; + no-map; + }; + }; +}; + +&pinmux { + clks_disable_pins: pinmux_clks_disable_pins { + pinctrl-single,bits = <0x40 0x0 0x80>; + }; + + enable_gpio_4: pinctrl_enable_gpio_4 { + pinctrl-single,bits = <0x4 0x0 0xff>; + }; +}; + +&spi { + status = "okay"; + + flash@0 { + compatible = "jedec,spi-nor"; + reg = <0>; + spi-max-frequency = <50000000>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + reg = <0x0000000 0x100000>; + label = "u-boot"; + read-only; + }; + + partition@100000 { + compatible = "u-boot,env"; + reg = <0x0100000 0x40000>; + label = "u-boot-env"; + }; + + board_data: partition@140000 { + reg = <0x0140000 0x80000>; + label = "board-data"; + read-only; + }; + + partition@1c0000 { + reg = <0x01c0000 0x3e40000>; + compatible = "openwrt,uimage", "denx,uimage"; + label = "firmware"; + }; + }; + }; +}; + +&mdio0 { + status = "okay"; + + phy0: ethernet-phy@0 { + reg = <0>; + + qca,ar8327-initvals = < + 0x04 0x00080080 /* PORT0 PAD MODE CTRL */ + 0x0c 0x07600000 /* PORT6 PAD MODE CTRL */ + 0x7c 0x0000007e /* PORT0_STATUS */ + 0x94 0x0000007e /* PORT6 STATUS */ + >; + }; +}; + +ð0 { + status = "okay"; + + nvmem-cells = <&macaddr_board_data_66>; + nvmem-cell-names = "mac-address"; + pll-data = <0x96000000 0x00000101 0x00001616>; + + phy-handle = <&phy0>; +}; + +ð1 { + status = "okay"; + + nvmem-cells = <&macaddr_board_data_6c>; + nvmem-cell-names = "mac-address"; + pll-data = <0x03000101 0x00000101 0x00001616>; + + fixed-link { + speed = <1000>; + full-duplex; + }; +}; + +&pcie0 { + status = "okay"; + + ath10k: wifi@0,0 { + compatible = "pci168c,003c"; + reg = <0x0000 0 0 0 0>; + gpio-controller; + #gpio-cells = <2>; + + nvmem-cells = <&macaddr_board_data_76>, <&cal_board_data_45000>; + nvmem-cell-names = "mac-address", "calibration"; + }; +}; + +&wmac { + status = "okay"; + + nvmem-cells = <&macaddr_board_data_60>, <&cal_board_data_41000>; + nvmem-cell-names = "mac-address", "calibration"; +}; + +&usb_phy0 { + status = "okay"; +}; + +&usb0 { + status = "okay"; +}; + +&usb_phy1 { + status = "okay"; +}; + +&usb1 { + status = "okay"; +}; + +&board_data { + nvmem-layout { + compatible = "fixed-layout"; + #address-cells = <1>; + #size-cells = <1>; + + macaddr_board_data_60: macaddr@60 { + reg = <0x60 0x6>; + }; + + macaddr_board_data_66: macaddr@66 { + reg = <0x66 0x6>; + }; + + macaddr_board_data_6c: macaddr@6c { + reg = <0x6c 0x6>; + }; + + macaddr_board_data_76: macaddr@76 { + reg = <0x76 0x6>; + }; + + cal_board_data_41000: cal@41000 { + reg = <0x41000 0x440>; + }; + + cal_board_data_45000: cal@45000 { + reg = <0x45000 0x844>; + }; + }; +}; diff --git a/target/linux/ath79/generic/base-files/etc/board.d/02_network b/target/linux/ath79/generic/base-files/etc/board.d/02_network index 0321a9ac85..9a9267c8c7 100644 --- a/target/linux/ath79/generic/base-files/etc/board.d/02_network +++ b/target/linux/ath79/generic/base-files/etc/board.d/02_network @@ -505,6 +505,10 @@ ath79_setup_interfaces() ucidef_add_switch "switch0" \ "0u@eth1" "4:lan:1" "3:lan:2" "2:lan:3" "1:lan:4" ;; + ruckus,r500) + ucidef_add_switch "switch0" \ + "6u@eth0" "5:lan:1" "3:lan:2" "0@eth1" + ;; teltonika,rut955|\ teltonika,rut955-h7v3c0) ucidef_set_interface_wan "eth1" @@ -813,6 +817,7 @@ ath79_setup_macs() wan_mac=$(mtd_get_mac_binary factory 0x0) lan_mac=$(macaddr_setbit_la "$wan_mac") ;; + ruckus,r500|\ ruckus,zf7025|\ ruckus,zf7321|\ ruckus,zf7341|\ diff --git a/target/linux/ath79/image/Makefile b/target/linux/ath79/image/Makefile index 5647200b4b..1918a8a431 100644 --- a/target/linux/ath79/image/Makefile +++ b/target/linux/ath79/image/Makefile @@ -4,7 +4,7 @@ include $(INCLUDE_DIR)/image.mk KERNEL_LOADADDR = 0x80060000 DEVICE_VARS += LOADER_FLASH_OFFS LOADER_TYPE -DEVICE_VARS += LOADER_FLASH_MAX LOADER_KERNEL_MAGIC +DEVICE_VARS += LOADER_FLASH_MAX LOADER_KERNEL_MAGIC LZMA_TEXT_START DEVICE_VARS += NETGEAR_BOARD_ID NETGEAR_HW_ID DEVICE_VARS += RAS_BOARD RAS_ROOTFS_SIZE RAS_VERSION DEVICE_VARS += SEAMA_SIGNATURE SEAMA_MTDBLOCK @@ -14,6 +14,7 @@ define Build/loader-common $(MAKE) -C lzma-loader \ PKG_BUILD_DIR="$@.src" \ TARGET_DIR="$(dir $@)" LOADER_NAME="$(notdir $@)" \ + LZMA_TEXT_START=$(LZMA_TEXT_START) \ $(1) compile loader.$(LOADER_TYPE) mv "$@.$(LOADER_TYPE)" "$@" rm -rf $@.src @@ -74,6 +75,7 @@ define Device/Default LOADER_FLASH_MAX := LOADER_FLASH_OFFS := LOADER_TYPE := + LZMA_TEXT_START := 0x81800000 COMPILE := IMAGES := sysupgrade.bin IMAGE/sysupgrade.bin = append-kernel | pad-to $$$$(BLOCKSIZE) | \ diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk index b6084e137c..7c71cbb5e2 100644 --- a/target/linux/ath79/image/generic.mk +++ b/target/linux/ath79/image/generic.mk @@ -2945,6 +2945,17 @@ define Device/ruckus_zf7372 endef TARGET_DEVICES += ruckus_zf7372 +define Device/ruckus_r500 + $(Device/ruckus_common) + SOC := qca9557 + DEVICE_MODEL := R500 + IMAGE_SIZE := 63744k + BLOCKSIZE := 256k + DEVICE_PACKAGES += kmod-ath10k-ct ath10k-firmware-qca988x-ct \ + kmod-i2c-gpio kmod-tpm-i2c-infineon +endef +TARGET_DEVICES += ruckus_r500 + define Device/samsung_wam250 SOC := ar9344 DEVICE_VENDOR := Samsung diff --git a/target/linux/ath79/image/nand.mk b/target/linux/ath79/image/nand.mk index d3c1120aa2..68cb543187 100644 --- a/target/linux/ath79/image/nand.mk +++ b/target/linux/ath79/image/nand.mk @@ -313,10 +313,9 @@ define Device/meraki_mr18 BLOCKSIZE := 128k PAGESIZE := 2048 LOADER_TYPE := bin + LZMA_TEXT_START := 0x82800000 KERNEL := kernel-bin | append-dtb | lzma | loader-kernel | meraki-header MR18 -# Initramfs-build fails due to size issues -# KERNEL_INITRAMFS := $$(KERNEL) - KERNEL_INITRAMFS := + KERNEL_INITRAMFS := $$(KERNEL) IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata SUPPORTED_DEVICES += mr18 endef @@ -442,6 +441,10 @@ define Device/zte_mf28x_common DEVICE_PACKAGES := kmod-usb2 kmod-ath10k-ct BLOCKSIZE := 128k PAGESIZE := 2048 + LOADER_TYPE := bin + LZMA_TEXT_START := 0x82800000 + KERNEL := kernel-bin | append-dtb | lzma | loader-kernel | uImage none + KERNEL_INITRAMFS := $$(KERNEL) KERNEL_SIZE := 4096k IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata endef diff --git a/target/linux/bcm27xx/patches-6.6/950-0087-Add-dwc_otg-driver.patch b/target/linux/bcm27xx/patches-6.6/950-0087-Add-dwc_otg-driver.patch index cb9fd4442a..3da9f4230b 100644 --- a/target/linux/bcm27xx/patches-6.6/950-0087-Add-dwc_otg-driver.patch +++ b/target/linux/bcm27xx/patches-6.6/950-0087-Add-dwc_otg-driver.patch @@ -1189,7 +1189,7 @@ Signed-off-by: Alexander Winkowski } --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c -@@ -5710,7 +5710,7 @@ static void port_event(struct usb_hub *h +@@ -5712,7 +5712,7 @@ static void port_event(struct usb_hub *h port_dev->over_current_count++; port_over_current_notify(port_dev); diff --git a/target/linux/bcm27xx/patches-6.6/950-0441-Bluetooth-hci_sync-Add-fallback-bd-address-prop.patch b/target/linux/bcm27xx/patches-6.6/950-0441-Bluetooth-hci_sync-Add-fallback-bd-address-prop.patch index 3f9d802de3..b9d1a95c6d 100644 --- a/target/linux/bcm27xx/patches-6.6/950-0441-Bluetooth-hci_sync-Add-fallback-bd-address-prop.patch +++ b/target/linux/bcm27xx/patches-6.6/950-0441-Bluetooth-hci_sync-Add-fallback-bd-address-prop.patch @@ -20,7 +20,7 @@ Signed-off-by: Phil Elwell --- a/net/bluetooth/hci_sync.c +++ b/net/bluetooth/hci_sync.c -@@ -4872,6 +4872,7 @@ static const struct { +@@ -4873,6 +4873,7 @@ static const struct { */ static int hci_dev_setup_sync(struct hci_dev *hdev) { @@ -28,7 +28,7 @@ Signed-off-by: Phil Elwell int ret = 0; bool invalid_bdaddr; size_t i; -@@ -4900,7 +4901,8 @@ static int hci_dev_setup_sync(struct hci +@@ -4901,7 +4902,8 @@ static int hci_dev_setup_sync(struct hci test_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hdev->quirks); if (!ret) { if (test_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hdev->quirks) && diff --git a/target/linux/bcm27xx/patches-6.6/950-0519-usb-dwc3-Set-DMA-and-coherent-masks-early.patch b/target/linux/bcm27xx/patches-6.6/950-0519-usb-dwc3-Set-DMA-and-coherent-masks-early.patch index 2448bd942a..db3b6cd828 100644 --- a/target/linux/bcm27xx/patches-6.6/950-0519-usb-dwc3-Set-DMA-and-coherent-masks-early.patch +++ b/target/linux/bcm27xx/patches-6.6/950-0519-usb-dwc3-Set-DMA-and-coherent-masks-early.patch @@ -333,7 +333,7 @@ Signed-off-by: Jonathan Bell /* Global Debug LSP MUX Select */ #define DWC3_GDBGLSPMUX_ENDBC BIT(15) /* Host only */ #define DWC3_GDBGLSPMUX_HOSTSELECT(n) ((n) & 0x3fff) -@@ -1066,6 +1069,7 @@ struct dwc3_scratchpad_array { +@@ -1067,6 +1070,7 @@ struct dwc3_scratchpad_array { * @tx_max_burst_prd: max periodic ESS transmit burst size * @tx_fifo_resize_max_num: max number of fifos allocated during txfifo resize * @clear_stall_protocol: endpoint number that requires a delayed status phase @@ -341,7 +341,7 @@ Signed-off-by: Jonathan Bell * @hsphy_interface: "utmi" or "ulpi" * @connected: true when we're connected to a host, false otherwise * @softconnect: true when gadget connect is called, false when disconnect runs -@@ -1303,6 +1307,7 @@ struct dwc3 { +@@ -1304,6 +1308,7 @@ struct dwc3 { u8 tx_max_burst_prd; u8 tx_fifo_resize_max_num; u8 clear_stall_protocol; diff --git a/target/linux/bcm27xx/patches-6.6/950-0853-drivers-usb-dwc3-add-FS-LS-bus-instance-parkmode-dis.patch b/target/linux/bcm27xx/patches-6.6/950-0853-drivers-usb-dwc3-add-FS-LS-bus-instance-parkmode-dis.patch index 6eb5e5697f..0441512add 100644 --- a/target/linux/bcm27xx/patches-6.6/950-0853-drivers-usb-dwc3-add-FS-LS-bus-instance-parkmode-dis.patch +++ b/target/linux/bcm27xx/patches-6.6/950-0853-drivers-usb-dwc3-add-FS-LS-bus-instance-parkmode-dis.patch @@ -45,7 +45,7 @@ Signed-off-by: Jonathan Bell #define DWC3_GUCTL1_RESUME_OPMODE_HS_HOST BIT(10) /* Global Status Register */ -@@ -1121,10 +1122,12 @@ struct dwc3_scratchpad_array { +@@ -1122,10 +1123,12 @@ struct dwc3_scratchpad_array { * generation after resume from suspend. * @ulpi_ext_vbus_drv: Set to confiure the upli chip to drives CPEN pin * VBUS with an external supply. @@ -62,7 +62,7 @@ Signed-off-by: Jonathan Bell * @tx_de_emphasis_quirk: set if we enable Tx de-emphasis quirk * @tx_de_emphasis: Tx de-emphasis value * 0 - -6dB de-emphasis -@@ -1351,6 +1354,7 @@ struct dwc3 { +@@ -1352,6 +1355,7 @@ struct dwc3 { unsigned ulpi_ext_vbus_drv:1; unsigned parkmode_disable_ss_quirk:1; unsigned parkmode_disable_hs_quirk:1; diff --git a/target/linux/bcm27xx/patches-6.6/950-1218-Bluetooth-hci_sync-Fix-crash-on-NULL-parent.patch b/target/linux/bcm27xx/patches-6.6/950-1218-Bluetooth-hci_sync-Fix-crash-on-NULL-parent.patch index 223e2df2b7..6dfd31c70f 100644 --- a/target/linux/bcm27xx/patches-6.6/950-1218-Bluetooth-hci_sync-Fix-crash-on-NULL-parent.patch +++ b/target/linux/bcm27xx/patches-6.6/950-1218-Bluetooth-hci_sync-Fix-crash-on-NULL-parent.patch @@ -15,7 +15,7 @@ Signed-off-by: Phil Elwell --- a/net/bluetooth/hci_sync.c +++ b/net/bluetooth/hci_sync.c -@@ -4872,7 +4872,8 @@ static const struct { +@@ -4873,7 +4873,8 @@ static const struct { */ static int hci_dev_setup_sync(struct hci_dev *hdev) { diff --git a/target/linux/bcm27xx/patches-6.6/950-1359-usb-dwc3-core-add-support-for-setting-NAK-enhancemen.patch b/target/linux/bcm27xx/patches-6.6/950-1359-usb-dwc3-core-add-support-for-setting-NAK-enhancemen.patch index cb4f6deb39..8995f6f9dc 100644 --- a/target/linux/bcm27xx/patches-6.6/950-1359-usb-dwc3-core-add-support-for-setting-NAK-enhancemen.patch +++ b/target/linux/bcm27xx/patches-6.6/950-1359-usb-dwc3-core-add-support-for-setting-NAK-enhancemen.patch @@ -57,7 +57,7 @@ Signed-off-by: Jonathan Bell #define DWC3_GUCTL1_PARKMODE_DISABLE_SS BIT(17) #define DWC3_GUCTL1_PARKMODE_DISABLE_HS BIT(16) #define DWC3_GUCTL1_PARKMODE_DISABLE_FSLS BIT(15) -@@ -1122,6 +1124,8 @@ struct dwc3_scratchpad_array { +@@ -1123,6 +1125,8 @@ struct dwc3_scratchpad_array { * generation after resume from suspend. * @ulpi_ext_vbus_drv: Set to confiure the upli chip to drives CPEN pin * VBUS with an external supply. @@ -66,7 +66,7 @@ Signed-off-by: Jonathan Bell * @parkmode_disable_ss_quirk: If set, disable park mode feature for all * Superspeed instances. * @parkmode_disable_hs_quirk: If set, disable park mode feature for all -@@ -1352,6 +1356,8 @@ struct dwc3 { +@@ -1353,6 +1357,8 @@ struct dwc3 { unsigned dis_tx_ipgap_linecheck_quirk:1; unsigned resume_hs_terminations:1; unsigned ulpi_ext_vbus_drv:1; diff --git a/target/linux/generic/hack-6.6/661-kernel-ct-size-the-hashtable-more-adequately.patch b/target/linux/generic/hack-6.6/661-kernel-ct-size-the-hashtable-more-adequately.patch index 020f3f3a11..ff959ec8d2 100644 --- a/target/linux/generic/hack-6.6/661-kernel-ct-size-the-hashtable-more-adequately.patch +++ b/target/linux/generic/hack-6.6/661-kernel-ct-size-the-hashtable-more-adequately.patch @@ -14,7 +14,7 @@ Signed-off-by: Rui Salvaterra --- a/net/netfilter/nf_conntrack_core.c +++ b/net/netfilter/nf_conntrack_core.c -@@ -2682,7 +2682,7 @@ int nf_conntrack_init_start(void) +@@ -2685,7 +2685,7 @@ int nf_conntrack_init_start(void) if (!nf_conntrack_htable_size) { nf_conntrack_htable_size diff --git a/target/linux/generic/pending-6.6/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch b/target/linux/generic/pending-6.6/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch index 572aad2a3b..6cb52d00a2 100644 --- a/target/linux/generic/pending-6.6/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch +++ b/target/linux/generic/pending-6.6/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 -@@ -8421,7 +8421,7 @@ static int nft_register_flowtable_net_ho +@@ -8425,7 +8425,7 @@ static int nft_register_flowtable_net_ho err = flowtable->data.type->setup(&flowtable->data, hook->ops.dev, FLOW_BLOCK_BIND); diff --git a/target/linux/generic/pending-6.6/738-01-net-ethernet-mtk_eth_soc-reduce-rx-ring-size-for-older.patch b/target/linux/generic/pending-6.6/738-01-net-ethernet-mtk_eth_soc-reduce-rx-ring-size-for-older.patch new file mode 100644 index 0000000000..b492f4d0c0 --- /dev/null +++ b/target/linux/generic/pending-6.6/738-01-net-ethernet-mtk_eth_soc-reduce-rx-ring-size-for-older.patch @@ -0,0 +1,104 @@ +From: Felix Fietkau +Subject: [PATCH net-next 3/4] net: ethernet: mtk_eth_soc: reduce rx ring size for older chipsets +Date: Tue, 15 Oct 2024 13:09:37 +0200 + +Commit c57e55819443 ("net: ethernet: mtk_eth_soc: handle dma buffer +size soc specific") resolved some tx timeout issues by bumping FQ and +tx ring sizes from 512 to 2048 entries (the value used in the MediaTek +SDK), however it also changed the rx ring size for all chipsets in the +same way. + +Based on a few tests, it seems that a symmetric rx/tx ring size of 2048 +really only makes sense on MT7988, which is capable of 10G ethernet links. + +Older chipsets are typically deployed in systems that are more memory +constrained and don't actually need the larger rings to handle received +packets. + +In order to reduce wasted memory set the ring size based on the SoC to +the following values: +- 2048 on MT7988 +- 1024 on MT7986 +- 512 (previous value) on everything else, except: +- 256 on RT5350 (the oldest supported chipset) + +Fixes: c57e55819443 ("net: ethernet: mtk_eth_soc: handle dma buffer size soc specific") +Signed-off-by: Felix Fietkau +--- + drivers/net/ethernet/mediatek/mtk_eth_soc.c | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c ++++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c +@@ -5381,7 +5381,7 @@ static const struct mtk_soc_data mt2701_ + .desc_size = sizeof(struct mtk_rx_dma), + .irq_done_mask = MTK_RX_DONE_INT, + .dma_l4_valid = RX_DMA_L4_VALID, +- .dma_size = MTK_DMA_SIZE(2K), ++ .dma_size = MTK_DMA_SIZE(512), + .dma_max_len = MTK_TX_DMA_BUF_LEN, + .dma_len_offset = 16, + }, +@@ -5409,7 +5409,7 @@ static const struct mtk_soc_data mt7621_ + .desc_size = sizeof(struct mtk_rx_dma), + .irq_done_mask = MTK_RX_DONE_INT, + .dma_l4_valid = RX_DMA_L4_VALID, +- .dma_size = MTK_DMA_SIZE(2K), ++ .dma_size = MTK_DMA_SIZE(512), + .dma_max_len = MTK_TX_DMA_BUF_LEN, + .dma_len_offset = 16, + }, +@@ -5439,7 +5439,7 @@ static const struct mtk_soc_data mt7622_ + .desc_size = sizeof(struct mtk_rx_dma), + .irq_done_mask = MTK_RX_DONE_INT, + .dma_l4_valid = RX_DMA_L4_VALID, +- .dma_size = MTK_DMA_SIZE(2K), ++ .dma_size = MTK_DMA_SIZE(512), + .dma_max_len = MTK_TX_DMA_BUF_LEN, + .dma_len_offset = 16, + }, +@@ -5468,7 +5468,7 @@ static const struct mtk_soc_data mt7623_ + .desc_size = sizeof(struct mtk_rx_dma), + .irq_done_mask = MTK_RX_DONE_INT, + .dma_l4_valid = RX_DMA_L4_VALID, +- .dma_size = MTK_DMA_SIZE(2K), ++ .dma_size = MTK_DMA_SIZE(512), + .dma_max_len = MTK_TX_DMA_BUF_LEN, + .dma_len_offset = 16, + }, +@@ -5494,7 +5494,7 @@ static const struct mtk_soc_data mt7629_ + .desc_size = sizeof(struct mtk_rx_dma), + .irq_done_mask = MTK_RX_DONE_INT, + .dma_l4_valid = RX_DMA_L4_VALID, +- .dma_size = MTK_DMA_SIZE(2K), ++ .dma_size = MTK_DMA_SIZE(512), + .dma_max_len = MTK_TX_DMA_BUF_LEN, + .dma_len_offset = 16, + }, +@@ -5526,7 +5526,7 @@ static const struct mtk_soc_data mt7981_ + .dma_l4_valid = RX_DMA_L4_VALID_V2, + .dma_max_len = MTK_TX_DMA_BUF_LEN, + .dma_len_offset = 16, +- .dma_size = MTK_DMA_SIZE(2K), ++ .dma_size = MTK_DMA_SIZE(512), + }, + }; + +@@ -5556,7 +5556,7 @@ static const struct mtk_soc_data mt7986_ + .dma_l4_valid = RX_DMA_L4_VALID_V2, + .dma_max_len = MTK_TX_DMA_BUF_LEN, + .dma_len_offset = 16, +- .dma_size = MTK_DMA_SIZE(2K), ++ .dma_size = MTK_DMA_SIZE(1K), + }, + }; + +@@ -5609,7 +5609,7 @@ static const struct mtk_soc_data rt5350_ + .dma_l4_valid = RX_DMA_L4_VALID_PDMA, + .dma_max_len = MTK_TX_DMA_BUF_LEN, + .dma_len_offset = 16, +- .dma_size = MTK_DMA_SIZE(2K), ++ .dma_size = MTK_DMA_SIZE(256), + }, + }; + diff --git a/target/linux/generic/pending-6.6/738-02-net-ethernet-mtk_eth_soc-do-not-enable-page-pool-sta.patch b/target/linux/generic/pending-6.6/738-02-net-ethernet-mtk_eth_soc-do-not-enable-page-pool-sta.patch new file mode 100644 index 0000000000..ab374d93e4 --- /dev/null +++ b/target/linux/generic/pending-6.6/738-02-net-ethernet-mtk_eth_soc-do-not-enable-page-pool-sta.patch @@ -0,0 +1,43 @@ +From: Danila Romanov +Date: Wed, 22 Jan 2025 06:48:45 +0100 +Subject: [PATCH] net: ethernet: mtk_eth_soc: do not enable page pool stats by + default + +There is no reason for it to be enabled by default. +Align mtk_eth_soc driver to mt76 driver. + +This option incurs additional CPU cost in allocation and recycle paths +and additional memory cost to store the statistics. + +Signed-off-by: Danila Romanov +Signed-off-by: Felix Fietkau +--- + +--- a/drivers/net/ethernet/mediatek/Kconfig ++++ b/drivers/net/ethernet/mediatek/Kconfig +@@ -18,7 +18,6 @@ config NET_MEDIATEK_SOC + select PHYLINK + select DIMLIB + select PAGE_POOL +- select PAGE_POOL_STATS + select PCS_MTK_LYNXI + select REGMAP_MMIO + help +--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c ++++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c +@@ -4552,6 +4552,7 @@ static int mtk_get_sset_count(struct net + + static void mtk_ethtool_pp_stats(struct mtk_eth *eth, u64 *data) + { ++#ifdef CONFIG_PAGE_POOL_STATS + struct page_pool_stats stats = {}; + int i; + +@@ -4564,6 +4565,7 @@ static void mtk_ethtool_pp_stats(struct + page_pool_get_stats(ring->page_pool, &stats); + } + page_pool_ethtool_stats_get(data, &stats); ++#endif + } + + static void mtk_get_ethtool_stats(struct net_device *dev, diff --git a/target/linux/generic/pending-6.6/893-leds_st1202-Fix-NULL-pointer-access-error.patch b/target/linux/generic/pending-6.6/893-leds_st1202-Fix-NULL-pointer-access-error.patch new file mode 100644 index 0000000000..d763c5dfbd --- /dev/null +++ b/target/linux/generic/pending-6.6/893-leds_st1202-Fix-NULL-pointer-access-error.patch @@ -0,0 +1,70 @@ +From e3da313ebcace17f1227566fe1b0d0c3883061f9 Mon Sep 17 00:00:00 2001 +From: Manuel Fombuena +Date: Fri, 17 Jan 2025 12:31:49 +0000 +Subject: [PATCH 1/5] leds: leds-st1202: fix NULL pointer access on race + condition + +st1202_dt_init() calls devm_led_classdev_register_ext() before the +internal data structures are properly setup, so the leds become visible +to user space while being partially initialized, leading to a window +where trying to access them causes a NULL pointer access. + +This change moves devm_led_classdev_register_ext() to the last thing to +happen during initialization to eliminate it. + +Signed-off-by: Manuel Fombuena +--- + drivers/leds/leds-st1202.c | 21 ++++++++++----------- + 1 file changed, 10 insertions(+), 11 deletions(-) + +--- a/drivers/leds/leds-st1202.c ++++ b/drivers/leds/leds-st1202.c +@@ -261,8 +261,6 @@ static int st1202_dt_init(struct st1202_ + int err, reg; + + for_each_available_child_of_node_scoped(dev_of_node(dev), child) { +- struct led_init_data init_data = {}; +- + err = of_property_read_u32(child, "reg", ®); + if (err) + return dev_err_probe(dev, err, "Invalid register\n"); +@@ -276,15 +274,6 @@ static int st1202_dt_init(struct st1202_ + led->led_cdev.pattern_set = st1202_led_pattern_set; + led->led_cdev.pattern_clear = st1202_led_pattern_clear; + led->led_cdev.default_trigger = "pattern"; +- +- init_data.fwnode = led->fwnode; +- init_data.devicename = "st1202"; +- init_data.default_label = ":"; +- +- err = devm_led_classdev_register_ext(dev, &led->led_cdev, &init_data); +- if (err < 0) +- return dev_err_probe(dev, err, "Failed to register LED class device\n"); +- + led->led_cdev.brightness_set = st1202_brightness_set; + led->led_cdev.brightness_get = st1202_brightness_get; + } +@@ -368,6 +357,7 @@ static int st1202_probe(struct i2c_clien + return ret; + + for (int i = 0; i < ST1202_MAX_LEDS; i++) { ++ struct led_init_data init_data = {}; + led = &chip->leds[i]; + led->chip = chip; + led->led_num = i; +@@ -384,6 +374,15 @@ static int st1202_probe(struct i2c_clien + if (ret < 0) + return dev_err_probe(&client->dev, ret, + "Failed to clear LED pattern\n"); ++ ++ init_data.fwnode = led->fwnode; ++ init_data.devicename = "st1202"; ++ init_data.default_label = ":"; ++ ++ ret = devm_led_classdev_register_ext(&client->dev, &led->led_cdev, &init_data); ++ if (ret < 0) ++ return dev_err_probe(&client->dev, ret, ++ "Failed to register LED class device\n"); + } + + return 0; diff --git a/target/linux/lantiq/xrx200/base-files/etc/board.d/02_network b/target/linux/lantiq/xrx200/base-files/etc/board.d/02_network index 8c2cdb12af..bf90757897 100644 --- a/target/linux/lantiq/xrx200/base-files/etc/board.d/02_network +++ b/target/linux/lantiq/xrx200/base-files/etc/board.d/02_network @@ -125,6 +125,7 @@ lantiq_setup_macs() tffsdev=$(find_mtd_chardev "nand-tffs") lan_mac=$(/usr/bin/fritz_tffs_nand -d $tffsdev -n maca -o) wan_mac=$(/usr/bin/fritz_tffs_nand -d $tffsdev -n macdsl -o) + label_mac=$lan_mac ;; bt,homehub-v5a) lan_mac=$(mtd_get_mac_binary_ubi caldata 0x110c) @@ -142,6 +143,7 @@ lantiq_setup_macs() [ -n "$lan_mac" ] && ucidef_set_interface_macaddr "lan" "$lan_mac" [ -n "$wan_mac" ] && ucidef_set_interface_macaddr "wan" "$wan_mac" + [ -n "$label_mac" ] && ucidef_set_label_macaddr "$label_mac" } board_config_update diff --git a/target/linux/lantiq/xrx200/base-files/etc/hotplug.d/firmware/12-ath9k-eeprom b/target/linux/lantiq/xrx200/base-files/etc/hotplug.d/firmware/12-ath9k-eeprom index 936181c693..cb3fef9168 100644 --- a/target/linux/lantiq/xrx200/base-files/etc/hotplug.d/firmware/12-ath9k-eeprom +++ b/target/linux/lantiq/xrx200/base-files/etc/hotplug.d/firmware/12-ath9k-eeprom @@ -19,11 +19,14 @@ case "$FIRMWARE" in avm,fritz3390) caldata_extract_reverse "urlader" 0x2546 0x440 ;; - avm,fritz7412|\ - avm,fritz7430) + avm,fritz7412) /usr/bin/fritz_cal_extract -i 1 -s 0x1e000 -e 0x207 -l 5120 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader") || \ /usr/bin/fritz_cal_extract -i 1 -s 0x1e800 -e 0x207 -l 5120 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader") ;; + avm,fritz7430) + /usr/bin/fritz_cal_extract -r -i 4 -s 0x1e000 -e 0x207 -l 5120 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader") || \ + /usr/bin/fritz_cal_extract -r -i 4 -s 0x1e800 -e 0x207 -l 5120 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader") + ;; bt,homehub-v5a) caldata_extract_ubi "caldata" 0x1000 0x1000 ath9k_patch_mac_crc $(macaddr_add $(mtd_get_mac_binary_ubi caldata 0x110c) 2) 0x10c diff --git a/target/linux/mediatek/filogic/base-files/etc/init.d/bootcount b/target/linux/mediatek/filogic/base-files/etc/init.d/bootcount index c52d004c63..a0e7d40862 100755 --- a/target/linux/mediatek/filogic/base-files/etc/init.d/bootcount +++ b/target/linux/mediatek/filogic/base-files/etc/init.d/bootcount @@ -5,6 +5,24 @@ START=99 boot() { case $(board_name) in + xiaomi,mi-router-ax3000t) + . /lib/upgrade/common.sh + [ "$(rootfs_type)" = "tmpfs" ] && \ + logger "bootcount: initramfs mode detected, exit" && \ + return 0 + [ "$(fw_printenv -n flag_try_sys2_failed 2>&1)" = "8" ] && \ + logger "bootcount: rd03 model detected, exit" && \ + return 0 + fw_setenv -s - <<-EOF + flag_boot_rootfs 0 + flag_boot_success 1 + flag_last_success 0 + flag_ota_reboot 0 + flag_try_sys1_failed 0 + flag_try_sys2_failed 0 + EOF + logger "bootcount: rd23 model detected, nvram was updated" + ;; zyxel,ex5700-telenor) fw_setenv uboot_bootcount 0 ;; diff --git a/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh b/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh index e15d0369fd..05390f8375 100755 --- a/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh +++ b/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh @@ -40,13 +40,15 @@ xiaomi_initial_setup() return 0 fi - fw_setenv boot_wait on - fw_setenv uart_en 1 - fw_setenv flag_boot_rootfs 0 - fw_setenv flag_last_success 1 - fw_setenv flag_boot_success 1 - fw_setenv flag_try_sys1_failed 8 - fw_setenv flag_try_sys2_failed 8 + fw_setenv -s - <<-EOF + boot_wait on + uart_en 1 + flag_boot_rootfs 0 + flag_last_success 1 + flag_boot_success 1 + flag_try_sys1_failed 8 + flag_try_sys2_failed 8 + EOF local board=$(board_name) case "$board" in diff --git a/target/linux/mediatek/image/filogic.mk b/target/linux/mediatek/image/filogic.mk index 2b058ed4a4..8d4c47e98a 100644 --- a/target/linux/mediatek/image/filogic.mk +++ b/target/linux/mediatek/image/filogic.mk @@ -1967,6 +1967,10 @@ TARGET_DEVICES += zbtlink_zbt-z8103ax define Device/zyxel_ex5601-t0-stock DEVICE_VENDOR := Zyxel DEVICE_MODEL := EX5601-T0 + DEVICE_ALT0_VENDOR := Zyxel + DEVICE_ALT0_MODEL := EX5601-T1 + DEVICE_ALT1_VENDOR := Zyxel + DEVICE_ALT1_MODEL := T-56 DEVICE_VARIANT := (stock layout) DEVICE_DTS := mt7986a-zyxel-ex5601-t0-stock DEVICE_DTS_DIR := ../dts @@ -1990,6 +1994,10 @@ TARGET_DEVICES += zyxel_ex5601-t0-stock define Device/zyxel_ex5601-t0-ubootmod DEVICE_VENDOR := Zyxel DEVICE_MODEL := EX5601-T0 + DEVICE_ALT0_VENDOR := Zyxel + DEVICE_ALT0_MODEL := EX5601-T1 + DEVICE_ALT1_VENDOR := Zyxel + DEVICE_ALT1_MODEL := T-56 DEVICE_VARIANT := (OpenWrt U-Boot layout) DEVICE_DTS := mt7986a-zyxel-ex5601-t0-ubootmod DEVICE_DTS_DIR := ../dts diff --git a/target/linux/mediatek/patches-6.6/870-drm-mediatek-only-touch-DISP_REG_OVL_PITCH_MSB-if-AF.patch b/target/linux/mediatek/patches-6.6/870-drm-mediatek-only-touch-DISP_REG_OVL_PITCH_MSB-if-AF.patch deleted file mode 100644 index 4aea9e034c..0000000000 --- a/target/linux/mediatek/patches-6.6/870-drm-mediatek-only-touch-DISP_REG_OVL_PITCH_MSB-if-AF.patch +++ /dev/null @@ -1,70 +0,0 @@ -From patchwork Sun Dec 15 22:09:41 2024 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Daniel Golle -X-Patchwork-Id: 13908995 -Return-Path: - -Date: Sun, 15 Dec 2024 22:09:41 +0000 -From: Daniel Golle -To: Chun-Kuang Hu , - Philipp Zabel , - David Airlie , Simona Vetter , - Matthias Brugger , - AngeloGioacchino Del Regno , - Justin Green , - Frank Wunderlich , - John Crispin , dri-devel@lists.freedesktop.org, - linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org, - linux-arm-kernel@lists.infradead.org, stable@vger.kernel.org -Subject: [PATCH] drm/mediatek: only touch DISP_REG_OVL_PITCH_MSB if AFBC is - supported -Message-ID: - <8c001c8e70d93d64d3ee6bf7dc5078d2783d4e32.1734300345.git.daniel@makrotopia.org> -MIME-Version: 1.0 -Content-Disposition: inline -X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 -X-CRM114-CacheID: sfid-20241215_140959_910539_20C140B3 -X-CRM114-Status: UNSURE ( 9.48 ) -X-CRM114-Notice: Please train this message. -X-BeenThere: linux-mediatek@lists.infradead.org -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Sender: "Linux-mediatek" -Errors-To: - linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org - -Touching DISP_REG_OVL_PITCH_MSB leads to video overlay on MT2701, MT7623N -and probably other older SoCs being broken. - -Only touching it on hardware which actually supports AFBC like it was -before commit c410fa9b07c3 ("drm/mediatek: Add AFBC support to Mediatek -DRM driver") fixes it. - -Fixes: c410fa9b07c3 ("drm/mediatek: Add AFBC support to Mediatek DRM driver") -Cc: stable@vger.kernel.org -Signed-off-by: Daniel Golle ---- - drivers/gpu/drm/mediatek/mtk_disp_ovl.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- a/drivers/gpu/drm/mediatek/mtk_disp_ovl.c -+++ b/drivers/gpu/drm/mediatek/mtk_disp_ovl.c -@@ -478,7 +478,7 @@ void mtk_ovl_layer_config(struct device - &ovl->cmdq_reg, ovl->regs, DISP_REG_OVL_PITCH_MSB(idx)); - mtk_ddp_write_relaxed(cmdq_pkt, hdr_pitch, &ovl->cmdq_reg, ovl->regs, - DISP_REG_OVL_HDR_PITCH(ovl, idx)); -- } else { -+ } else if (ovl->data->supports_afbc) { - mtk_ddp_write_relaxed(cmdq_pkt, - overlay_pitch.split_pitch.msb, - &ovl->cmdq_reg, ovl->regs, DISP_REG_OVL_PITCH_MSB(idx)); diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk index dbd52f58eb..22844c78fd 100755 --- a/target/linux/ramips/image/mt7621.mk +++ b/target/linux/ramips/image/mt7621.mk @@ -1816,11 +1816,10 @@ define Device/keenetic_kn-1910 $(Device/uimage-lzma-loader) BLOCKSIZE := 128k PAGESIZE := 2048 - IMAGE_SIZE := 24903680 + IMAGE_SIZE := 20368588 DEVICE_VENDOR := Keenetic DEVICE_MODEL := KN-1910 - DEVICE_PACKAGES := kmod-mt7615-firmware kmod-usb3 \ - kmod-usb-ledtrig-usbport automount + DEVICE_PACKAGES := kmod-mt7615-firmware kmod-usb3 automount IMAGES += factory.bin IMAGE/factory.bin := append-kernel | pad-to $$(KERNEL_SIZE) | \ append-ubi | check-size | zyimage -d 0x801910 -v "KN-1910" diff --git a/target/linux/ramips/image/mt76x8.mk b/target/linux/ramips/image/mt76x8.mk index 1a2c17066c..46d100bffe 100644 --- a/target/linux/ramips/image/mt76x8.mk +++ b/target/linux/ramips/image/mt76x8.mk @@ -369,7 +369,7 @@ TARGET_DEVICES += keenetic_kn-1613 define Device/keenetic_kn-1711 BLOCKSIZE := 64k - IMAGE_SIZE := 13434880 + IMAGE_SIZE := 10551296 DEVICE_VENDOR := Keenetic DEVICE_MODEL := KN-1711 DEVICE_PACKAGES := kmod-mt7615e kmod-mt7663-firmware-ap kmod-usb2 @@ -381,7 +381,7 @@ TARGET_DEVICES += keenetic_kn-1711 define Device/keenetic_kn-1713 BLOCKSIZE := 64k - IMAGE_SIZE := 13434880 + IMAGE_SIZE := 10551296 DEVICE_VENDOR := Keenetic DEVICE_MODEL := KN-1713 DEVICE_PACKAGES := kmod-mt7615e kmod-mt7663-firmware-ap kmod-usb2 diff --git a/target/linux/realtek/base-files/etc/board.d/02_network b/target/linux/realtek/base-files/etc/board.d/02_network index 1255ee8b9e..16642c273a 100644 --- a/target/linux/realtek/base-files/etc/board.d/02_network +++ b/target/linux/realtek/base-files/etc/board.d/02_network @@ -54,6 +54,9 @@ tplink,t1600g-28ts-v3) label_mac=$(get_mac_label) lan_mac="$label_mac" ;; +xikestor,sks8300-8x) + lan_mac=$(mtd_get_mac_binary board-info 0x1f1) + ;; *) lan_mac=$(mtd_get_mac_ascii u-boot-env2 mac_start) lan_mac_end=$(mtd_get_mac_ascii u-boot-env2 mac_end) diff --git a/target/linux/realtek/dts/rtl9303_xikestor_sks8300-8x.dts b/target/linux/realtek/dts/rtl9303_xikestor_sks8300-8x.dts new file mode 100644 index 0000000000..b143844ddd --- /dev/null +++ b/target/linux/realtek/dts/rtl9303_xikestor_sks8300-8x.dts @@ -0,0 +1,434 @@ +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "rtl930x.dtsi" + +#include +#include +#include + +/ { + compatible = "xikestor,sks8300-8x", "realtek,rtl930x-soc"; + model = "XikeStor SKS8300-8X"; + + memory@0 { + device_type = "memory"; + reg = <0x00000000 0x10000000>, /* first 256 MiB */ + <0x20000000 0x10000000>; /* remaining 256 MiB */ + }; + + aliases { + led-boot = &led_sys; + led-failsafe = &led_sys; + led-running = &led_sys; + led-upgrade = &led_sys; + }; + + chosen { + stdout-path = "serial0:9600n8"; + }; + + i2c_master: i2c@1b00036c { + compatible = "realtek,rtl9300-i2c"; + reg = <0x1b00036c 0x3c>; + #address-cells = <1>; + #size-cells = <0>; + scl-pin = <8>; + sda-pin = <9>; + clock-frequency = <100000>; + }; + + i2c-mux { + compatible = "realtek,i2c-mux-rtl9300"; + i2c-parent = <&i2c_master>; + #address-cells = <1>; + #size-cells = <0>; + + i2c0: i2c@0 { + reg = <0>; + scl-pin = <8>; + sda-pin = <9>; + }; + + i2c1: i2c@1 { + reg = <1>; + scl-pin = <8>; + sda-pin = <10>; + }; + + i2c2: i2c@2 { + reg = <2>; + scl-pin = <8>; + sda-pin = <11>; + }; + + i2c3: i2c@3 { + reg = <3>; + scl-pin = <8>; + sda-pin = <12>; + }; + + i2c4: i2c@4 { + reg = <4>; + scl-pin = <8>; + sda-pin = <13>; + }; + + i2c5: i2c@5 { + reg = <5>; + scl-pin = <8>; + sda-pin = <14>; + }; + + i2c6: i2c@6 { + reg = <6>; + scl-pin = <8>; + sda-pin = <15>; + }; + + i2c7: i2c@7 { + reg = <7>; + scl-pin = <8>; + sda-pin = <16>; + }; + }; + + keys { + compatible = "gpio-keys"; + + button-reset { + label = "reset"; + gpios = <&gpio0 22 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + }; + + leds { + compatible = "gpio-leds"; + + led_sys: led-0 { + gpios = <&gpio0 23 GPIO_ACTIVE_HIGH>; + color = ; + function = LED_FUNCTION_STATUS; + }; + }; + + led_set { + compatible = "realtek,rtl9300-leds"; + active-low; + + /* + * LED set 0 + * + * - LED[0](Green): 10G/LINK/ACT + * - LED[1](Amber): 10M/100M/1G/2.5G/5G/LINK/ACT + */ + led_set0 = <0x0baa 0x0a01>; + }; + + sfp0: sfp-p1 { + compatible = "sff,sfp"; + i2c-bus = <&i2c0>; + los-gpio = <&gpio1 0 GPIO_ACTIVE_HIGH>; + mod-def0-gpio = <&gpio1 1 GPIO_ACTIVE_LOW>; + tx-disable-gpio = <&gpio1 2 GPIO_ACTIVE_HIGH>; + maximum-power-milliwatt = <2900>; + }; + + sfp1: sfp-p2 { + compatible = "sff,sfp"; + i2c-bus = <&i2c1>; + los-gpio = <&gpio1 3 GPIO_ACTIVE_HIGH>; + mod-def0-gpio = <&gpio1 4 GPIO_ACTIVE_LOW>; + tx-disable-gpio = <&gpio1 5 GPIO_ACTIVE_HIGH>; + maximum-power-milliwatt = <1500>; + }; + + sfp2: sfp-p3 { + compatible = "sff,sfp"; + i2c-bus = <&i2c2>; + los-gpio = <&gpio1 6 GPIO_ACTIVE_HIGH>; + mod-def0-gpio = <&gpio1 7 GPIO_ACTIVE_LOW>; + tx-disable-gpio = <&gpio1 8 GPIO_ACTIVE_HIGH>; + maximum-power-milliwatt = <1500>; + }; + + sfp3: sfp-p4 { + compatible = "sff,sfp"; + i2c-bus = <&i2c3>; + los-gpio = <&gpio1 9 GPIO_ACTIVE_HIGH>; + mod-def0-gpio = <&gpio1 10 GPIO_ACTIVE_LOW>; + tx-disable-gpio = <&gpio1 11 GPIO_ACTIVE_HIGH>; + maximum-power-milliwatt = <2000>; + }; + + sfp4: sfp-p5 { + compatible = "sff,sfp"; + i2c-bus = <&i2c4>; + los-gpio = <&gpio1 12 GPIO_ACTIVE_HIGH>; + mod-def0-gpio = <&gpio1 13 GPIO_ACTIVE_LOW>; + tx-disable-gpio = <&gpio1 14 GPIO_ACTIVE_HIGH>; + maximum-power-milliwatt = <2000>; + }; + + sfp5: sfp-p6 { + compatible = "sff,sfp"; + i2c-bus = <&i2c5>; + los-gpio = <&gpio1 21 GPIO_ACTIVE_HIGH>; + mod-def0-gpio = <&gpio1 22 GPIO_ACTIVE_LOW>; + tx-disable-gpio = <&gpio1 23 GPIO_ACTIVE_HIGH>; + maximum-power-milliwatt = <1500>; + }; + + sfp6: sfp-p7 { + compatible = "sff,sfp"; + i2c-bus = <&i2c6>; + los-gpio = <&gpio1 24 GPIO_ACTIVE_HIGH>; + mod-def0-gpio = <&gpio1 25 GPIO_ACTIVE_LOW>; + tx-disable-gpio = <&gpio1 26 GPIO_ACTIVE_HIGH>; + maximum-power-milliwatt = <1500>; + }; + + sfp7: sfp-p8 { + compatible = "sff,sfp"; + i2c-bus = <&i2c7>; + los-gpio = <&gpio1 27 GPIO_ACTIVE_HIGH>; + mod-def0-gpio = <&gpio1 28 GPIO_ACTIVE_LOW>; + tx-disable-gpio = <&gpio1 29 GPIO_ACTIVE_HIGH>; + maximum-power-milliwatt = <2900>; + }; +}; + +&mdio_aux { + status = "okay"; + + gpio1: gpio@0 { + compatible = "realtek,rtl8231"; + reg = <0>; + + gpio-controller; + #gpio-cells = <2>; + gpio-ranges = <&gpio1 0 0 37>; + + led-controller { + compatible = "realtek,rtl8231-leds"; + status = "disabled"; + }; + }; +}; + +&spi0 { + status = "okay"; + + flash@0 { + compatible = "jedec,spi-nor"; + reg = <0>; + spi-max-frequency = <10000000>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "u-boot"; + reg = <0x0 0x100000>; + read-only; + }; + + /* "flash_raw" on stock */ + partition@100000 { + label = "board-info"; + reg = <0x100000 0x30000>; + read-only; + }; + + partition@130000 { + label = "syslog"; + reg = <0x130000 0xd0000>; + read-only; + }; + + /* "flash_user" on stock */ + partition@200000 { + compatible = "fixed-partitions"; + label = "firmware"; + reg = <0x200000 0x1e00000>; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "kernel"; + reg = <0x0 0x800000>; + }; + + partition@800000 { + label = "rootfs"; + reg = <0x800000 0x1600000>; + }; + }; + }; + }; +}; + +ðernet0 { + mdio: mdio-bus { + compatible = "realtek,rtl838x-mdio"; + regmap = <ðernet0>; + #address-cells = <1>; + #size-cells = <0>; + + phy0: ethernet-phy@0 { + compatible = "ethernet-phy-ieee802.3-c22"; + phy-is-integrated; + reg = <0>; + sds = <2>; + }; + + phy8: ethernet-phy@8 { + compatible = "ethernet-phy-ieee802.3-c22"; + phy-is-integrated; + reg = <8>; + sds = <3>; + }; + + phy16: ethernet-phy@10 { + compatible = "ethernet-phy-ieee802.3-c22"; + phy-is-integrated; + reg = <16>; + sds = <4>; + }; + + phy20: ethernet-phy@14 { + compatible = "ethernet-phy-ieee802.3-c22"; + phy-is-integrated; + reg = <20>; + sds = <5>; + }; + + phy24: ethernet-phy@18 { + compatible = "ethernet-phy-ieee802.3-c22"; + phy-is-integrated; + reg = <24>; + sds = <6>; + }; + + phy25: ethernet-phy@19 { + compatible = "ethernet-phy-ieee802.3-c22"; + phy-is-integrated; + reg = <25>; + sds = <7>; + }; + + phy26: ethernet-phy@1a { + compatible = "ethernet-phy-ieee802.3-c22"; + phy-is-integrated; + reg = <26>; + sds = <8>; + }; + + phy27: ethernet-phy@1b { + compatible = "ethernet-phy-ieee802.3-c22"; + phy-is-integrated; + reg = <27>; + sds = <9>; + }; + }; +}; + +&switch0 { + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + label = "lan1"; + phy-handle = <&phy0>; + phy-mode = "10gbase-r"; + sfp = <&sfp0>; + managed = "in-band-status"; + led-set = <0>; + }; + + port@8 { + reg = <8>; + label = "lan2"; + phy-handle = <&phy8>; + phy-mode = "10gbase-r"; + sfp = <&sfp1>; + managed = "in-band-status"; + led-set = <0>; + }; + + port@10 { + reg = <16>; + label = "lan3"; + phy-handle = <&phy16>; + phy-mode = "10gbase-r"; + sfp = <&sfp2>; + managed = "in-band-status"; + led-set = <0>; + }; + + port@14 { + reg = <20>; + label = "lan4"; + phy-handle = <&phy20>; + phy-mode = "10gbase-r"; + sfp = <&sfp3>; + managed = "in-band-status"; + led-set = <0>; + }; + + port@18 { + reg = <24>; + label = "lan5"; + phy-handle = <&phy24>; + phy-mode = "10gbase-r"; + sfp = <&sfp4>; + managed = "in-band-status"; + led-set = <0>; + }; + + port@19 { + reg = <25>; + label = "lan6"; + phy-handle = <&phy25>; + phy-mode = "10gbase-r"; + sfp = <&sfp5>; + managed = "in-band-status"; + led-set = <0>; + }; + + port@1a { + reg = <26>; + label = "lan7"; + phy-handle = <&phy26>; + phy-mode = "10gbase-r"; + sfp = <&sfp6>; + managed = "in-band-status"; + led-set = <0>; + }; + + port@1b { + reg = <27>; + label = "lan8"; + phy-handle = <&phy27>; + phy-mode = "10gbase-r"; + sfp = <&sfp7>; + managed = "in-band-status"; + led-set = <0>; + }; + + port@1c { + ethernet = <ðernet0>; + reg = <28>; + phy-mode = "internal"; + + fixed-link { + speed = <10000>; + full-duplex; + }; + }; + }; +}; diff --git a/target/linux/realtek/dts/rtl930x.dtsi b/target/linux/realtek/dts/rtl930x.dtsi index 9b0a5781a2..94b755aeee 100644 --- a/target/linux/realtek/dts/rtl930x.dtsi +++ b/target/linux/realtek/dts/rtl930x.dtsi @@ -143,6 +143,35 @@ }; + switchcore@1b000000 { + compatible = "syscon", "simple-mfd"; + reg = <0x1b000000 0x10000>; + + mdio_aux: mdio-aux { + compatible = "realtek,rtl9300-aux-mdio"; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-0 = <&pinmux_gpio_mdio_en>; + pinctrl-names = "default"; + + status = "disabled"; + }; + }; + + pinmux@1b00c600 { + compatible = "pinctrl-single"; + reg = <0x1b00c600 0x4>; + + pinctrl-single,bit-per-mux; + pinctrl-single,register-width = <32>; + pinctrl-single,function-mask = <0x1>; + #pinctrl-cells = <2>; + + pinmux_gpio_mdio_en: gpio-mdio-en { + pinctrl-single,bits = <0x0 0x100 0x100>; + }; + }; + pinmux_led: pinmux@1b00cc00 { compatible = "pinctrl-single"; reg = <0x1b00cc00 0x4>; diff --git a/target/linux/realtek/files-6.6/drivers/net/dsa/rtl83xx/dsa.c b/target/linux/realtek/files-6.6/drivers/net/dsa/rtl83xx/dsa.c index f9d37fb3bd..69151b2f6b 100644 --- a/target/linux/realtek/files-6.6/drivers/net/dsa/rtl83xx/dsa.c +++ b/target/linux/realtek/files-6.6/drivers/net/dsa/rtl83xx/dsa.c @@ -686,6 +686,7 @@ static void rtl83xx_phylink_get_caps(struct dsa_switch *ds, int port, __set_bit(PHY_INTERFACE_MODE_XGMII, config->supported_interfaces); __set_bit(PHY_INTERFACE_MODE_USXGMII, config->supported_interfaces); __set_bit(PHY_INTERFACE_MODE_1000BASEX, config->supported_interfaces); + __set_bit(PHY_INTERFACE_MODE_10GBASER, config->supported_interfaces); } static void rtl83xx_phylink_mac_config(struct dsa_switch *ds, int port, diff --git a/target/linux/realtek/files-6.6/drivers/net/phy/rtl83xx-phy.c b/target/linux/realtek/files-6.6/drivers/net/phy/rtl83xx-phy.c index 09c6ca3b2c..53a7e184f5 100644 --- a/target/linux/realtek/files-6.6/drivers/net/phy/rtl83xx-phy.c +++ b/target/linux/realtek/files-6.6/drivers/net/phy/rtl83xx-phy.c @@ -1690,7 +1690,7 @@ static int rtl9300_read_status(struct phy_device *phydev) if (of_property_read_u32(dn, "sds", &sds_num)) sds_num = -1; - pr_info("%s: Port %d, SerDes is %d\n", __func__, phy_addr, sds_num); + pr_debug("%s: Port %d, SerDes is %d\n", __func__, phy_addr, sds_num); } else { dev_err(dev, "No DT node.\n"); return -EINVAL; @@ -1700,7 +1700,7 @@ static int rtl9300_read_status(struct phy_device *phydev) return 0; mode = rtl9300_sds_mode_get(sds_num); - pr_info("%s got SDS mode %02x\n", __func__, mode); + pr_debug("%s got SDS mode %02x\n", __func__, mode); if (mode == RTL930X_SDS_OFF) mode = rtl9300_sds_field_r(sds_num, 0x1f, 9, 11, 7); if (mode == RTL930X_SDS_MODE_10GBASER) { /* 10GR mode */ @@ -1715,7 +1715,7 @@ static int rtl9300_read_status(struct phy_device *phydev) latch_status |= rtl9300_sds_field_r(sds_num, 0x1, 30, 8, 0); } - pr_info("%s link status: status: %d, latch %d\n", __func__, status, latch_status); + pr_debug("%s link status: status: %d, latch %d\n", __func__, status, latch_status); if (latch_status) { phydev->link = true; diff --git a/target/linux/realtek/image/rtl930x.mk b/target/linux/realtek/image/rtl930x.mk index 7f0b691759..8aff7d52f6 100644 --- a/target/linux/realtek/image/rtl930x.mk +++ b/target/linux/realtek/image/rtl930x.mk @@ -1,5 +1,23 @@ # SPDX-License-Identifier: GPL-2.0-only +define Build/xikestor-nosimg + $(STAGING_DIR_HOST)/bin/nosimg-enc -i $@ -o $@.new + mv $@.new $@ +endef + +define Device/xikestor_sks8300-8x + SOC := rtl9303 + DEVICE_VENDOR := XikeStor + DEVICE_MODEL := SKS8300-8X + BLOCKSIZE := 64k + KERNEL_SIZE := 8192k + IMAGE_SIZE := 30720k + IMAGE/sysupgrade.bin := pad-extra 256 | append-kernel | xikestor-nosimg | \ + jffs2 nos.img -e 4KiB -x lzma | pad-to $$$$(KERNEL_SIZE) | \ + append-rootfs | pad-rootfs | append-metadata | check-size +endef +TARGET_DEVICES += xikestor_sks8300-8x + define Device/zyxel_xgs1250-12 SOC := rtl9302 UIMAGE_MAGIC := 0x93001250 diff --git a/target/linux/realtek/rtl930x/config-6.6 b/target/linux/realtek/rtl930x/config-6.6 index 5b070a8371..4c53682b1b 100644 --- a/target/linux/realtek/rtl930x/config-6.6 +++ b/target/linux/realtek/rtl930x/config-6.6 @@ -85,6 +85,7 @@ CONFIG_HAS_DMA=y CONFIG_HAS_IOMEM=y CONFIG_HAS_IOPORT=y CONFIG_HAS_IOPORT_MAP=y +CONFIG_HIGHMEM=y CONFIG_HWMON=y CONFIG_HZ_PERIODIC=y CONFIG_I2C=y @@ -104,6 +105,7 @@ CONFIG_IRQ_MIPS_CPU=y CONFIG_IRQ_WORK=y CONFIG_JFFS2_ZLIB=y CONFIG_LEDS_GPIO=y +# CONFIG_LEDS_RTL8231 is not set CONFIG_LIBFDT=y CONFIG_LOCK_DEBUGGING_SUPPORT=y CONFIG_MACH_REALTEK_RTL=y @@ -112,9 +114,9 @@ CONFIG_MDIO_BUS=y CONFIG_MDIO_DEVICE=y CONFIG_MDIO_DEVRES=y CONFIG_MDIO_I2C=y -# CONFIG_MDIO_REALTEK_OTTO_AUX is not set +CONFIG_MDIO_REALTEK_OTTO_AUX=y CONFIG_MDIO_SMBUS=y -# CONFIG_MFD_RTL8231 is not set +CONFIG_MFD_RTL8231=y CONFIG_MFD_SYSCON=y CONFIG_MIGRATION=y CONFIG_MIPS=y @@ -175,6 +177,7 @@ CONFIG_PHYLIB=y CONFIG_PHYLIB_LEDS=y CONFIG_PHYLINK=y CONFIG_PINCTRL=y +CONFIG_PINCTRL_RTL8231=y CONFIG_POWER_RESET=y CONFIG_POWER_RESET_GPIO_RESTART=y CONFIG_POWER_RESET_SYSCON=y @@ -188,6 +191,7 @@ CONFIG_REALTEK_PHY=y CONFIG_REALTEK_SOC_PHY=y CONFIG_REGMAP=y CONFIG_REGMAP_I2C=y +CONFIG_REGMAP_MDIO=y CONFIG_REGMAP_MMIO=y CONFIG_RESET_CONTROLLER=y # CONFIG_RTL838X is not set diff --git a/target/linux/rockchip/patches-6.6/035-v6.7-usb-dwc3-add-optional-PHY-interface-clocks.patch b/target/linux/rockchip/patches-6.6/035-v6.7-usb-dwc3-add-optional-PHY-interface-clocks.patch index d38d260ef1..30e8a98fd7 100644 --- a/target/linux/rockchip/patches-6.6/035-v6.7-usb-dwc3-add-optional-PHY-interface-clocks.patch +++ b/target/linux/rockchip/patches-6.6/035-v6.7-usb-dwc3-add-optional-PHY-interface-clocks.patch @@ -71,7 +71,7 @@ Signed-off-by: Greg Kroah-Hartman --- a/drivers/usb/dwc3/core.h +++ b/drivers/usb/dwc3/core.h -@@ -1002,6 +1002,8 @@ struct dwc3_scratchpad_array { +@@ -1003,6 +1003,8 @@ struct dwc3_scratchpad_array { * @bus_clk: clock for accessing the registers * @ref_clk: reference clock * @susp_clk: clock used when the SS phy is in low power (S3) state @@ -80,7 +80,7 @@ Signed-off-by: Greg Kroah-Hartman * @reset: reset control * @regs: base address for our registers * @regs_size: address space size -@@ -1174,6 +1176,8 @@ struct dwc3 { +@@ -1175,6 +1177,8 @@ struct dwc3 { struct clk *bus_clk; struct clk *ref_clk; struct clk *susp_clk; diff --git a/target/linux/starfive/patches-6.6/0066-uart-8250-Add-dw-auto-flow-ctrl-support.patch b/target/linux/starfive/patches-6.6/0066-uart-8250-Add-dw-auto-flow-ctrl-support.patch index c88008a604..617d72f11f 100644 --- a/target/linux/starfive/patches-6.6/0066-uart-8250-Add-dw-auto-flow-ctrl-support.patch +++ b/target/linux/starfive/patches-6.6/0066-uart-8250-Add-dw-auto-flow-ctrl-support.patch @@ -25,7 +25,7 @@ Signed-off-by: Minda Chen + uart->probe = up->probe; if (uart->port.type != PORT_8250_CIR) { - if (serial8250_isa_config != NULL) + if (uart_console_registered(&uart->port)) --- a/drivers/tty/serial/8250/8250_dw.c +++ b/drivers/tty/serial/8250/8250_dw.c @@ -612,6 +612,9 @@ static int dw8250_probe(struct platform_ diff --git a/tools/firmware-utils/Makefile b/tools/firmware-utils/Makefile index 62222b6daf..117dceb754 100644 --- a/tools/firmware-utils/Makefile +++ b/tools/firmware-utils/Makefile @@ -11,9 +11,9 @@ PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL=$(PROJECT_GIT)/project/firmware-utils.git -PKG_SOURCE_DATE:=2024-10-20 -PKG_SOURCE_VERSION:=4b7638925d3eac03e614e40bc30cb49f5877c46d -PKG_MIRROR_HASH:=ea0e30f2b20211e4153704019ebb3f8789269893a4af6d853a85fae7c091802c +PKG_SOURCE_DATE:=2025-01-14 +PKG_SOURCE_VERSION:=12c0b42231bee58b3cd7cbe95c33de2685484a4f +PKG_MIRROR_HASH:=50d872a5069f9f672de5ea9efcf00872bcce27ec52bbb69fff3785abcee1c77c include $(INCLUDE_DIR)/host-build.mk include $(INCLUDE_DIR)/cmake.mk