From ed693165c454c24b8eaccf0cdfaf5dc3351b2d41 Mon Sep 17 00:00:00 2001 From: TipoMan Date: Thu, 1 Jan 2026 19:46:17 +0200 Subject: [PATCH 1/3] Add ssc377qe_fpv_generic device --- .../30-020-ath9k_DisableCarrierSense.patch | 154 +++++++++++++ .../linux/30-021-ath9k_ChannelBW.patch | 218 ++++++++++++++++++ .../package/linux-patcher/linux-patcher.mk | 37 +++ .../board/infinity6c/fragments/wext.config | 8 - .../configs/ssc377qe_fpv_defconfig | 79 +++++++ 5 files changed, 488 insertions(+), 8 deletions(-) create mode 100644 devices/ssc338q_fpv_openipc-urllc-aio/general/package/all-patches/linux/30-020-ath9k_DisableCarrierSense.patch create mode 100644 devices/ssc338q_fpv_openipc-urllc-aio/general/package/all-patches/linux/30-021-ath9k_ChannelBW.patch create mode 100644 devices/ssc338q_fpv_openipc-urllc-aio/general/package/linux-patcher/linux-patcher.mk create mode 100644 devices/ssc377qe_fpv_generic/br-ext-chip-sigmastar/configs/ssc377qe_fpv_defconfig diff --git a/devices/ssc338q_fpv_openipc-urllc-aio/general/package/all-patches/linux/30-020-ath9k_DisableCarrierSense.patch b/devices/ssc338q_fpv_openipc-urllc-aio/general/package/all-patches/linux/30-020-ath9k_DisableCarrierSense.patch new file mode 100644 index 000000000..be08307dd --- /dev/null +++ b/devices/ssc338q_fpv_openipc-urllc-aio/general/package/all-patches/linux/30-020-ath9k_DisableCarrierSense.patch @@ -0,0 +1,154 @@ +--- a/drivers/net/wireless/ath/ath9k/hw.c 2023-10-29 23:13:23.000000000 +0200 ++++ b/drivers/net/wireless/ath/ath9k/hw.c 2023-10-29 23:51:03.576486582 +0200 +@@ -45,6 +45,12 @@ + u8 ofdm_sifs_man = 16; + u8 slottime_man = 9; + u8 thresh62_man = 28; ++u8 disable_CS = 1; ++u8 disable_CS_man = 0; ++u8 CTSTimeOut_man = 0; ++u8 ACKTimeOut_man = 0; ++u8 CTSTimeOut = 0; ++u8 ACKTimeOut = 0; + + module_param_named(txpower, tx_power_man, byte, 0444); + MODULE_PARM_DESC(txpower, "Manual TX power setting, default 58, max 63"); +@@ -59,7 +65,7 @@ + MODULE_PARM_DESC(aifs, "AIFS setting, default 2"); + + module_param_named(cck_sifs, cck_sifs_man, byte, 0444); +-MODULE_PARM_DESC(cck_sifs, "CCK SIFS setting, default 10"); ++MODULE_PARM_DESC(cck_sifs,"AR_USEC_TX_LAT, default 10"); + + module_param_named(ofdm_sifs, ofdm_sifs_man, byte, 0444); + MODULE_PARM_DESC(ofdm_sifs, "OFDM SIFS setting, default 16"); +@@ -70,6 +76,16 @@ + module_param_named(thresh62, thresh62_man, byte, 0444); + MODULE_PARM_DESC(thresh62, "CCA THRESH62 setting, default 28"); + ++module_param_named(disable_CS,disable_CS_man,byte,0444); ++MODULE_PARM_DESC(disable_CS,"Disable Carrier Sense default 0"); ++ ++module_param_named(CTSTimeOut,CTSTimeOut_man,byte,0444); ++MODULE_PARM_DESC(CTSTimeOut,"CTSTimeOut default 0"); ++ ++module_param_named(ACKTimeOut,ACKTimeOut_man,byte,0444); ++MODULE_PARM_DESC(ACKTimeOut,"ACKTimeOut default 0"); ++ ++ + static void ath9k_hw_set_clockrate(struct ath_hw *ah) + { + struct ath_common *common = ath9k_hw_common(ah); +@@ -1052,6 +1068,7 @@ + int sifstime; + int rx_lat = 0, tx_lat = 0, eifs = 0; + u32 reg; ++ int qnum=0; + + ath_dbg(ath9k_hw_common(ah), RESET, "ah->misc_mode 0x%x\n", + ah->misc_mode); +@@ -1134,6 +1151,26 @@ + ah->dynack.ackto = acktimeout; + } + ++ bool register_override=false; ++ if (ofdm_sifs_man!=16) { ++ sifstime=ofdm_sifs_man; ++ eifs=ofdm_sifs_man; ++ register_override=true; ++ } ++ if (ACKTimeOut_man!=0){ ++ acktimeout= ACKTimeOut_man; ++ register_override=true; ++ } ++ if (CTSTimeOut_man!=0){ ++ ctstimeout=CTSTimeOut_man; ++ register_override=true; ++ } ++ ++ if (cck_sifs_man!=10){ ++ tx_lat=cck_sifs_man*10; ++ register_override=true; ++ } ++ + ath9k_hw_set_sifs_time(ah, sifstime); + ath9k_hw_setslottime(ah, slottime); + ath9k_hw_set_ack_timeout(ah, acktimeout); +@@ -1148,6 +1185,19 @@ + SM(tx_lat, AR_USEC_TX_LAT), + AR_USEC_TX_LAT | AR_USEC_RX_LAT | AR_USEC_USEC); + ++ ath_err(common,"SET rx_lat:%d, tx_lat:%d, sifstime:%d, eifs:%d, slottime:%d, acktimeout:%d, ctstimeout:%d",rx_lat, tx_lat, sifstime, eifs, slottime, acktimeout, ctstimeout); ++ ++ if(disable_CS_man==1){ ++ ath_err(ath9k_hw_common(ah), "Disabled Carrier Sense! %d !\n",disable_CS, disable_CS_man); ++ REG_SET_BIT(ah, AR_DIAG_SW, AR_DIAG_FORCE_RX_CLEAR); ++ REG_SET_BIT(ah, AR_DIAG_SW, AR_DIAG_IGNORE_VIRT_CS); ++ REG_SET_BIT(ah, AR_DIAG_SW, AR_DIAG_FORCE_CH_IDLE_HIGH); ++ } ++ ++ if (register_override || disable_CS_man==1){ ++ for (qnum=0;qnum<7;qnum++) ++ REG_WRITE(ah, AR_DLCL_IFS(qnum), 0); ++ } + } + EXPORT_SYMBOL(ath9k_hw_init_global_settings); + +--- a/drivers/net/wireless/ath/ath9k/mac.c 2023-10-29 23:13:23.000000000 +0200 ++++ b/drivers/net/wireless/ath/ath9k/mac.c 2023-10-29 23:56:49.383741779 +0200 +@@ -18,6 +18,12 @@ + #include "hw-ops.h" + #include + ++extern u8 cwmin_man; ++extern u8 cwmax_man; ++extern u8 aifs_man; ++extern u8 cck_sifs; ++extern u8 ofdm_sifs; ++ + static void ath9k_hw_set_txq_interrupts(struct ath_hw *ah, + struct ath9k_tx_queue_info *qi) + { +@@ -217,6 +217,7 @@ + qi->tqi_aifs = min(qinfo->tqi_aifs, 255U); + else + qi->tqi_aifs = aifs_man; ++ + if (qinfo->tqi_cwmin != ATH9K_TXQ_USEDEFAULT) { + cw = min(qinfo->tqi_cwmin, 1024U); + qi->tqi_cwmin = 1; +@@ -245,6 +246,21 @@ + qi->tqi_burstTime = qinfo->tqi_burstTime; + qi->tqi_readyTime = qinfo->tqi_readyTime; + ++ bool override=false; ++ if (cwmax_man!=15){ ++ qi->tqi_cwmax=cwmax_man; ++ override=true; ++ } ++ if (cwmin_man!=7){ ++ qi->tqi_cwmin=cwmin_man; ++ override=true; ++ } ++ if (aifs_man!=2){ ++ qi->tqi_aifs = aifs_man; ++ override=true; ++ } ++ ++ + switch (qinfo->tqi_subtype) { + case ATH9K_WME_UPSD: + if (qi->tqi_type == ATH9K_TX_QUEUE_DATA) +@@ -254,6 +270,11 @@ + break; + } + ++ if (override){ ++ REG_WRITE(ah, AR_DLCL_IFS(q), 0); ++ ath_err(common, "SET cwmax:%d, cwmin:%d, aifs:%d for queu:%d", qi->tqi_cwmax, qi->tqi_cwmin, qi->tqi_aifs,q); ++ } ++ + return true; + } + EXPORT_SYMBOL(ath9k_hw_set_txq_props); + diff --git a/devices/ssc338q_fpv_openipc-urllc-aio/general/package/all-patches/linux/30-021-ath9k_ChannelBW.patch b/devices/ssc338q_fpv_openipc-urllc-aio/general/package/all-patches/linux/30-021-ath9k_ChannelBW.patch new file mode 100644 index 000000000..bc36ee976 --- /dev/null +++ b/devices/ssc338q_fpv_openipc-urllc-aio/general/package/all-patches/linux/30-021-ath9k_ChannelBW.patch @@ -0,0 +1,218 @@ +diff --git a/ath.h b/ath.h +index da7a7c8..02765fd 100644 +--- a/drivers/net/wireless/ath/ath.h ++++ b/drivers/net/wireless/ath/ath.h +@@ -151,6 +151,7 @@ struct ath_common { + int debug_mask; + enum ath_device_state state; + unsigned long op_flags; ++ u32 chan_bw; + + struct ath_ani ani; + +@@ -179,6 +180,7 @@ struct ath_common { + const struct ath_ops *ops; + const struct ath_bus_ops *bus_ops; + const struct ath_ps_ops *ps_ops; ++ const struct ieee80211_ops *ieee_ops; + + bool btcoex_enabled; + bool disable_ani; +diff --git a/ath9k/common-debug.c b/ath9k/common-debug.c +index 84afcf7..2c55389 100644 +--- a/drivers/net/wireless/ath/ath9k/common-debug.c ++++ b/drivers/net/wireless/ath/ath9k/common-debug.c +@@ -259,3 +259,56 @@ void ath9k_cmn_debug_phy_err(struct dentry *debugfs_phy, + &fops_phy_err); + } + EXPORT_SYMBOL(ath9k_cmn_debug_phy_err); ++ ++ ++static ssize_t read_file_chan_bw(struct file *file, char __user *user_buf, ++ size_t count, loff_t *ppos) ++{ ++ struct ath_hw *ah = file->private_data; ++ struct ath_common *common = ath9k_hw_common(ah); ++ char buf[32]; ++ unsigned int len; ++ ++ len = sprintf(buf, "0x%08x\n", common->chan_bw); ++ return simple_read_from_buffer(user_buf, count, ppos, buf, len); ++} ++ ++static ssize_t write_file_chan_bw(struct file *file, const char __user *user_buf, ++ size_t count, loff_t *ppos) ++{ ++ struct ath_hw *ah = file->private_data; ++ struct ath_common *common = ath9k_hw_common(ah); ++ unsigned long chan_bw; ++ char buf[32]; ++ ssize_t len; ++ ++ len = min(count, sizeof(buf) - 1); ++ if (copy_from_user(buf, user_buf, len)) ++ return -EFAULT; ++ ++ buf[len] = '\0'; ++ if (kstrtoul(buf, 0, &chan_bw)) ++ return -EINVAL; ++ ++ common->chan_bw = chan_bw; ++ if (!test_bit(ATH_OP_INVALID, &common->op_flags)) ++ common->ieee_ops->config(ah->hw, IEEE80211_CONF_CHANGE_CHANNEL); ++ ++ return count; ++} ++ ++static const struct file_operations fops_chanbw = { ++ .read = read_file_chan_bw, ++ .write = write_file_chan_bw, ++ .open = simple_open, ++ .owner = THIS_MODULE, ++ .llseek = default_llseek, ++}; ++ ++void ath9k_cmn_debug_chanbw(struct dentry *debugfs_phy, ++ struct ath_hw *ah) ++{ ++ debugfs_create_file("chanbw", S_IRUSR | S_IWUSR, debugfs_phy, ah, ++ &fops_chanbw); ++} ++EXPORT_SYMBOL(ath9k_cmn_debug_chanbw); +\ No newline at end of file +diff --git a/ath9k/common-debug.h b/ath9k/common-debug.h +index 7c97884..8972ab4 100644 +--- a/drivers/net/wireless/ath/ath9k/common-debug.h ++++ b/drivers/net/wireless/ath/ath9k/common-debug.h +@@ -64,6 +64,8 @@ void ath9k_cmn_debug_modal_eeprom(struct dentry *debugfs_phy, + struct ath_hw *ah); + void ath9k_cmn_debug_base_eeprom(struct dentry *debugfs_phy, + struct ath_hw *ah); ++void ath9k_cmn_debug_chanbw(struct dentry *debugfs_phy, ++ struct ath_hw *ah); + void ath9k_cmn_debug_stat_rx(struct ath_rx_stats *rxstats, + struct ath_rx_status *rs); + void ath9k_cmn_debug_recv(struct dentry *debugfs_phy, +diff --git a/ath9k/common.c b/ath9k/common.c +index b80e08b..dbf4956 100644 +--- a/drivers/net/wireless/ath/ath9k/common.c ++++ b/drivers/net/wireless/ath/ath9k/common.c +@@ -296,11 +296,13 @@ EXPORT_SYMBOL(ath9k_cmn_get_hw_crypto_keytype); + /* + * Update internal channel flags. + */ +-static void ath9k_cmn_update_ichannel(struct ath9k_channel *ichan, ++static void ath9k_cmn_update_ichannel(struct ath_common *common, ++ struct ath9k_channel *ichan, + struct cfg80211_chan_def *chandef) + { + struct ieee80211_channel *chan = chandef->chan; + u16 flags = 0; ++ int width; + + ichan->channel = chan->center_freq; + ichan->chan = chan; +@@ -308,7 +310,19 @@ static void ath9k_cmn_update_ichannel(struct ath9k_channel *ichan, + if (chan->band == NL80211_BAND_5GHZ) + flags |= CHANNEL_5GHZ; + +- switch (chandef->width) { ++ switch (common->chan_bw) { ++ case 5: ++ width = NL80211_CHAN_WIDTH_5; ++ break; ++ case 10: ++ width = NL80211_CHAN_WIDTH_10; ++ break; ++ default: ++ width = chandef->width; ++ break; ++ } ++ ++ switch (width) { + case NL80211_CHAN_WIDTH_5: + flags |= CHANNEL_QUARTER; + break; +@@ -341,10 +355,11 @@ struct ath9k_channel *ath9k_cmn_get_channel(struct ieee80211_hw *hw, + struct cfg80211_chan_def *chandef) + { + struct ieee80211_channel *curchan = chandef->chan; ++ struct ath_common *common = ath9k_hw_common(ah); + struct ath9k_channel *channel; + + channel = &ah->channels[curchan->hw_value]; +- ath9k_cmn_update_ichannel(channel, chandef); ++ ath9k_cmn_update_ichannel(common, channel, chandef); + + return channel; + } +diff --git a/ath9k/debug.c b/ath9k/debug.c +index c56e40f..6112431 100644 +--- a/drivers/net/wireless/ath/ath9k/debug.c ++++ b/drivers/net/wireless/ath/ath9k/debug.c +@@ -1385,6 +1385,7 @@ int ath9k_init_debug(struct ath_hw *ah) + + ath9k_cmn_debug_base_eeprom(sc->debug.debugfs_phy, sc->sc_ah); + ath9k_cmn_debug_modal_eeprom(sc->debug.debugfs_phy, sc->sc_ah); ++ ath9k_cmn_debug_chanbw(sc->debug.debugfs_phy, sc->sc_ah); + + debugfs_create_u32("gpio_mask", S_IRUSR | S_IWUSR, + sc->debug.debugfs_phy, &sc->sc_ah->gpio_mask); +diff --git a/ath9k/htc_drv_debug.c b/ath9k/htc_drv_debug.c +index dc79afd..2c08a41 100644 +--- a/drivers/net/wireless/ath/ath9k/htc_drv_debug.c ++++ b/drivers/net/wireless/ath/ath9k/htc_drv_debug.c +@@ -519,6 +519,7 @@ int ath9k_htc_init_debug(struct ath_hw *ah) + + ath9k_cmn_debug_base_eeprom(priv->debug.debugfs_phy, priv->ah); + ath9k_cmn_debug_modal_eeprom(priv->debug.debugfs_phy, priv->ah); ++ ath9k_cmn_debug_chanbw(priv->debug.debugfs_phy, priv->ah); + + return 0; + } +diff --git a/ath9k/htc_drv_init.c b/ath9k/htc_drv_init.c +index b65c1b6..66b73da 100644 +--- a/drivers/net/wireless/ath/ath9k/htc_drv_init.c ++++ b/drivers/net/wireless/ath/ath9k/htc_drv_init.c +@@ -211,7 +211,7 @@ static int ath9k_init_htc_services(struct ath9k_htc_priv *priv, u16 devid, + if (ret) + goto err; + +- dev_info(priv->dev, "ath9k_htc: HTC initialized with %d credits\n", ++ dev_info(priv->dev, "ath9k_htc: HTC initialized 2322~2712Mhz,ChannelBandwidth 10,5 with %d credits\n", + priv->htc->credits); + + return 0; +@@ -633,6 +633,7 @@ static int ath9k_init_priv(struct ath9k_htc_priv *priv, + priv->ah = ah; + + common = ath9k_hw_common(ah); ++ common->ieee_ops = &ath9k_htc_ops; + common->ops = &ah->reg_ops; + common->ps_ops = &ath9k_htc_ps_ops; + common->bus_ops = &ath9k_usb_bus_ops; +@@ -750,9 +751,9 @@ static void ath9k_set_hw_capab(struct ath9k_htc_priv *priv, + + hw->wiphy->flags |= WIPHY_FLAG_IBSS_RSN | + WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL | +- WIPHY_FLAG_HAS_CHANNEL_SWITCH; +- +- hw->wiphy->flags |= WIPHY_FLAG_SUPPORTS_TDLS; ++ WIPHY_FLAG_HAS_CHANNEL_SWITCH | ++ WIPHY_FLAG_SUPPORTS_5_10_MHZ | ++ WIPHY_FLAG_SUPPORTS_TDLS; + + hw->queues = 4; + hw->max_listen_interval = 1; +diff --git a/ath9k/init.c b/ath9k/init.c +index 297d4bb..50f832f 100644 +--- a/drivers/net/wireless/ath/ath9k/init.c ++++ b/drivers/net/wireless/ath/ath9k/init.c +@@ -592,6 +592,7 @@ static int ath9k_init_softc(u16 devid, struct ath_softc *sc, + if (!ath9k_is_chanctx_enabled()) + sc->cur_chan->hw_queue_base = 0; + ++ common->ieee_ops = &ath9k_ops; + common->ops = &ah->reg_ops; + common->bus_ops = bus_ops; + common->ps_ops = &ath9k_ps_ops; diff --git a/devices/ssc338q_fpv_openipc-urllc-aio/general/package/linux-patcher/linux-patcher.mk b/devices/ssc338q_fpv_openipc-urllc-aio/general/package/linux-patcher/linux-patcher.mk new file mode 100644 index 000000000..e19c034c8 --- /dev/null +++ b/devices/ssc338q_fpv_openipc-urllc-aio/general/package/linux-patcher/linux-patcher.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# linux-patcher +# +################################################################################ + +LINUX_PATCHER_DEPENDENCIES = linux +export UIMAGE_NAME = Linux-$(LINUX_VERSION_PROBED)-$(OPENIPC_SOC_MODEL) + +# Exclude buildroot yylloc patches +LINUX_POST_PATCH_HOOKS = LINUX_APPLY_LOCAL_PATCHES + +ifeq ($(BR2_PACKAGE_LINUX_PATCHER_ATHEROS),y) +define LINUX_PATCHER_CONFIG_ATHEROS + $(call KCONFIG_ENABLE_OPT,CONFIG_FW_LOADER) + $(call KCONFIG_ENABLE_OPT,CONFIG_WLAN) + $(call KCONFIG_SET_OPT,CONFIG_MAC80211,m) + $(call KCONFIG_SET_OPT,CONFIG_ATH9K,m) + $(call KCONFIG_SET_OPT,CONFIG_ATH9K_HTC,m) + $(call KCONFIG_SET_OPT,CONFIG_ATH_DEBUG,y) + $(call KCONFIG_SET_OPT,CONFIG_ATH9K_DEBUGFS,y) + $(call KCONFIG_SET_OPT,CONFIG_ATH9K_COMMON_DEBUG,y) +endef +endif + +ifneq ($(BR2_PACKAGE_LINUX_PATCHER_SIGMASTAR_DTB),"") +define LINUX_PATCHER_CONFIG_SIGMASTAR_DTB + $(call KCONFIG_SET_OPT,CONFIG_SS_DTB_NAME,$(BR2_PACKAGE_LINUX_PATCHER_SIGMASTAR_DTB)) +endef +endif + +define LINUX_PATCHER_LINUX_CONFIG_FIXUPS + $(LINUX_PATCHER_CONFIG_ATHEROS) + $(LINUX_PATCHER_CONFIG_SIGMASTAR_DTB) +endef + +$(eval $(generic-package)) diff --git a/devices/ssc377qe_fpv_generic/br-ext-chip-sigmastar/board/infinity6c/fragments/wext.config b/devices/ssc377qe_fpv_generic/br-ext-chip-sigmastar/board/infinity6c/fragments/wext.config index a109af933..5311b6fb6 100644 --- a/devices/ssc377qe_fpv_generic/br-ext-chip-sigmastar/board/infinity6c/fragments/wext.config +++ b/devices/ssc377qe_fpv_generic/br-ext-chip-sigmastar/board/infinity6c/fragments/wext.config @@ -1,10 +1,2 @@ CONFIG_CFG80211_WEXT=y CONFIG_WEXT_CORE=y - -# Atheros driver fix -CONFIG_NEW_LEDS=y -CONFIG_LEDS_CLASS=m -CONFIG_MAC80211_LEDS=y - -# Allow regdb overwriting -# CONFIG_CFG80211_REQUIRE_SIGNED_REGDB is not set diff --git a/devices/ssc377qe_fpv_generic/br-ext-chip-sigmastar/configs/ssc377qe_fpv_defconfig b/devices/ssc377qe_fpv_generic/br-ext-chip-sigmastar/configs/ssc377qe_fpv_defconfig new file mode 100644 index 000000000..b9a0e14fc --- /dev/null +++ b/devices/ssc377qe_fpv_generic/br-ext-chip-sigmastar/configs/ssc377qe_fpv_defconfig @@ -0,0 +1,79 @@ +# Architecture +BR2_arm=y +BR2_cortex_a35=y +BR2_ARM_FPU_NEON_VFPV4=y +BR2_ARM_INSTRUCTIONS_THUMB2=y + +# Toolchain +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="https://github.com/openipc/firmware/releases/download/$(OPENIPC_TOOLCHAIN).tgz" +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="arm-openipc-linux-musleabihf" +BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_10=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL=y +BR2_TOOLCHAIN_EXTERNAL_CXX=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/openipc/linux/archive/$(OPENIPC_KERNEL).tar.gz" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(EXTERNAL_VENDOR)/board/$(OPENIPC_SOC_FAMILY)/infinity6c-ssc027d.config" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(EXTERNAL_VENDOR)/board/$(OPENIPC_SOC_FAMILY)/fragments/wext.config" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_XZ=y + +# Filesystem +BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL)/package/busybox/busybox.config" +BR2_PACKAGE_EXFATPROGS=y +BR2_PACKAGE_UBOOT_TOOLS=y +BR2_PACKAGE_ZLIB=y +# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set +# BR2_PACKAGE_WIREGUARD_LINUX_COMPAT=y +# BR2_PACKAGE_WIREGUARD_TOOLS=y +BR2_PACKAGE_WIRELESS_REGDB=y +BR2_PACKAGE_WIRELESS_TOOLS=y +# BR2_PACKAGE_WPA_SUPPLICANT=y +# BR2_PACKAGE_WPA_SUPPLICANT_CLI=y +# BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y +BR2_TARGET_ROOTFS_CPIO=y +BR2_TARGET_ROOTFS_SQUASHFS=y +BR2_TARGET_ROOTFS_SQUASHFS4_XZ=y + +# OpenIPC +BR2_OPENIPC_SOC_VENDOR="sigmastar" +BR2_OPENIPC_SOC_MODEL="ssc377qe" +BR2_OPENIPC_SOC_FAMILY="infinity6c" +BR2_OPENIPC_VARIANT="fpv" +BR2_OPENIPC_FLASH_SIZE="16" + +# Packages +BR2_PACKAGE_DROPBEAR_OPENIPC=y +BR2_PACKAGE_EXFAT_OPENIPC=y +BR2_PACKAGE_IPCTOOL=y +BR2_PACKAGE_JSONFILTER=y +BR2_PACKAGE_LIBCURL_OPENIPC=y +BR2_PACKAGE_LIBCURL_OPENIPC_CURL=y +# BR2_PACKAGE_LIBCURL_OPENIPC_PROXY_SUPPORT is not set +# BR2_PACKAGE_LIBCURL_OPENIPC_COOKIES_SUPPORT is not set +# BR2_PACKAGE_LIBCURL_OPENIPC_EXTRA_PROTOCOLS_FEATURES is not set +BR2_PACKAGE_LIBEVENT_OPENIPC=y +BR2_PACKAGE_LIBOGG_OPENIPC=y +# BR2_PACKAGE_LINUX_PATCHER_SIGMASTAR_DTB="infinity6c-ssc027d-s01a-demo" +BR2_PACKAGE_MAJESTIC_FONTS=y +BR2_PACKAGE_MAJESTIC_WEBUI=y +BR2_PACKAGE_MAJESTIC=y +BR2_PACKAGE_MBEDTLS_OPENIPC=y +BR2_PACKAGE_OPUS_OPENIPC=y +BR2_PACKAGE_OPUS_OPENIPC_FIXED_POINT=y +BR2_PACKAGE_LINUX_FIRMWARE_OPENIPC_ATHEROS_9271=y +BR2_PACKAGE_LINUX_FIRMWARE_OPENIPC=y +BR2_PACKAGE_LINUX_PATCHER_ATHEROS=y +BR2_PACKAGE_RTL8733BU_OPENIPC=y +BR2_PACKAGE_RTL88X2EU_OPENIPC=y +BR2_PACKAGE_RTL8812AU_OPENIPC=y +BR2_PACKAGE_SIGMASTAR_OSDRV_INFINITY6C=y +BR2_PACKAGE_VTUND_OPENIPC=y +BR2_PACKAGE_WIFIBROADCAST_NG=y +BR2_PACKAGE_YAML_CLI=y From a63b532d9c1df3b0c355f326e9467c84e52bb3d0 Mon Sep 17 00:00:00 2001 From: TipoMan Date: Fri, 2 Jan 2026 02:19:49 +0200 Subject: [PATCH 2/3] ssc377qe_fpv_generic added ath9k patched drivers --- .../board/infinity6c/fragments/wext.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/devices/ssc377qe_fpv_generic/br-ext-chip-sigmastar/board/infinity6c/fragments/wext.config b/devices/ssc377qe_fpv_generic/br-ext-chip-sigmastar/board/infinity6c/fragments/wext.config index 5311b6fb6..a109af933 100644 --- a/devices/ssc377qe_fpv_generic/br-ext-chip-sigmastar/board/infinity6c/fragments/wext.config +++ b/devices/ssc377qe_fpv_generic/br-ext-chip-sigmastar/board/infinity6c/fragments/wext.config @@ -1,2 +1,10 @@ CONFIG_CFG80211_WEXT=y CONFIG_WEXT_CORE=y + +# Atheros driver fix +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=m +CONFIG_MAC80211_LEDS=y + +# Allow regdb overwriting +# CONFIG_CFG80211_REQUIRE_SIGNED_REGDB is not set From 5e46b1ded8dd7e4a28b36ed140c9d66eb27c3cec Mon Sep 17 00:00:00 2001 From: TipoMan Date: Thu, 9 Apr 2026 00:31:28 +0300 Subject: [PATCH 3/3] Updated imx335 sensor driver added 90 and 120fps modes --- .../30-020-ath9k_DisableCarrierSense.patch | 154 ------------- .../linux/30-021-ath9k_ChannelBW.patch | 218 ------------------ .../package/linux-patcher/linux-patcher.mk | 37 --- .../configs/ssc377qe_fpv_defconfig | 79 ------- .../5.10.61/sigmastar/sensor_imx335_mipi.ko | Bin 21292 -> 25520 bytes 5 files changed, 488 deletions(-) delete mode 100644 devices/ssc338q_fpv_openipc-urllc-aio/general/package/all-patches/linux/30-020-ath9k_DisableCarrierSense.patch delete mode 100644 devices/ssc338q_fpv_openipc-urllc-aio/general/package/all-patches/linux/30-021-ath9k_ChannelBW.patch delete mode 100644 devices/ssc338q_fpv_openipc-urllc-aio/general/package/linux-patcher/linux-patcher.mk delete mode 100644 devices/ssc377qe_fpv_generic/br-ext-chip-sigmastar/configs/ssc377qe_fpv_defconfig diff --git a/devices/ssc338q_fpv_openipc-urllc-aio/general/package/all-patches/linux/30-020-ath9k_DisableCarrierSense.patch b/devices/ssc338q_fpv_openipc-urllc-aio/general/package/all-patches/linux/30-020-ath9k_DisableCarrierSense.patch deleted file mode 100644 index be08307dd..000000000 --- a/devices/ssc338q_fpv_openipc-urllc-aio/general/package/all-patches/linux/30-020-ath9k_DisableCarrierSense.patch +++ /dev/null @@ -1,154 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/hw.c 2023-10-29 23:13:23.000000000 +0200 -+++ b/drivers/net/wireless/ath/ath9k/hw.c 2023-10-29 23:51:03.576486582 +0200 -@@ -45,6 +45,12 @@ - u8 ofdm_sifs_man = 16; - u8 slottime_man = 9; - u8 thresh62_man = 28; -+u8 disable_CS = 1; -+u8 disable_CS_man = 0; -+u8 CTSTimeOut_man = 0; -+u8 ACKTimeOut_man = 0; -+u8 CTSTimeOut = 0; -+u8 ACKTimeOut = 0; - - module_param_named(txpower, tx_power_man, byte, 0444); - MODULE_PARM_DESC(txpower, "Manual TX power setting, default 58, max 63"); -@@ -59,7 +65,7 @@ - MODULE_PARM_DESC(aifs, "AIFS setting, default 2"); - - module_param_named(cck_sifs, cck_sifs_man, byte, 0444); --MODULE_PARM_DESC(cck_sifs, "CCK SIFS setting, default 10"); -+MODULE_PARM_DESC(cck_sifs,"AR_USEC_TX_LAT, default 10"); - - module_param_named(ofdm_sifs, ofdm_sifs_man, byte, 0444); - MODULE_PARM_DESC(ofdm_sifs, "OFDM SIFS setting, default 16"); -@@ -70,6 +76,16 @@ - module_param_named(thresh62, thresh62_man, byte, 0444); - MODULE_PARM_DESC(thresh62, "CCA THRESH62 setting, default 28"); - -+module_param_named(disable_CS,disable_CS_man,byte,0444); -+MODULE_PARM_DESC(disable_CS,"Disable Carrier Sense default 0"); -+ -+module_param_named(CTSTimeOut,CTSTimeOut_man,byte,0444); -+MODULE_PARM_DESC(CTSTimeOut,"CTSTimeOut default 0"); -+ -+module_param_named(ACKTimeOut,ACKTimeOut_man,byte,0444); -+MODULE_PARM_DESC(ACKTimeOut,"ACKTimeOut default 0"); -+ -+ - static void ath9k_hw_set_clockrate(struct ath_hw *ah) - { - struct ath_common *common = ath9k_hw_common(ah); -@@ -1052,6 +1068,7 @@ - int sifstime; - int rx_lat = 0, tx_lat = 0, eifs = 0; - u32 reg; -+ int qnum=0; - - ath_dbg(ath9k_hw_common(ah), RESET, "ah->misc_mode 0x%x\n", - ah->misc_mode); -@@ -1134,6 +1151,26 @@ - ah->dynack.ackto = acktimeout; - } - -+ bool register_override=false; -+ if (ofdm_sifs_man!=16) { -+ sifstime=ofdm_sifs_man; -+ eifs=ofdm_sifs_man; -+ register_override=true; -+ } -+ if (ACKTimeOut_man!=0){ -+ acktimeout= ACKTimeOut_man; -+ register_override=true; -+ } -+ if (CTSTimeOut_man!=0){ -+ ctstimeout=CTSTimeOut_man; -+ register_override=true; -+ } -+ -+ if (cck_sifs_man!=10){ -+ tx_lat=cck_sifs_man*10; -+ register_override=true; -+ } -+ - ath9k_hw_set_sifs_time(ah, sifstime); - ath9k_hw_setslottime(ah, slottime); - ath9k_hw_set_ack_timeout(ah, acktimeout); -@@ -1148,6 +1185,19 @@ - SM(tx_lat, AR_USEC_TX_LAT), - AR_USEC_TX_LAT | AR_USEC_RX_LAT | AR_USEC_USEC); - -+ ath_err(common,"SET rx_lat:%d, tx_lat:%d, sifstime:%d, eifs:%d, slottime:%d, acktimeout:%d, ctstimeout:%d",rx_lat, tx_lat, sifstime, eifs, slottime, acktimeout, ctstimeout); -+ -+ if(disable_CS_man==1){ -+ ath_err(ath9k_hw_common(ah), "Disabled Carrier Sense! %d !\n",disable_CS, disable_CS_man); -+ REG_SET_BIT(ah, AR_DIAG_SW, AR_DIAG_FORCE_RX_CLEAR); -+ REG_SET_BIT(ah, AR_DIAG_SW, AR_DIAG_IGNORE_VIRT_CS); -+ REG_SET_BIT(ah, AR_DIAG_SW, AR_DIAG_FORCE_CH_IDLE_HIGH); -+ } -+ -+ if (register_override || disable_CS_man==1){ -+ for (qnum=0;qnum<7;qnum++) -+ REG_WRITE(ah, AR_DLCL_IFS(qnum), 0); -+ } - } - EXPORT_SYMBOL(ath9k_hw_init_global_settings); - ---- a/drivers/net/wireless/ath/ath9k/mac.c 2023-10-29 23:13:23.000000000 +0200 -+++ b/drivers/net/wireless/ath/ath9k/mac.c 2023-10-29 23:56:49.383741779 +0200 -@@ -18,6 +18,12 @@ - #include "hw-ops.h" - #include - -+extern u8 cwmin_man; -+extern u8 cwmax_man; -+extern u8 aifs_man; -+extern u8 cck_sifs; -+extern u8 ofdm_sifs; -+ - static void ath9k_hw_set_txq_interrupts(struct ath_hw *ah, - struct ath9k_tx_queue_info *qi) - { -@@ -217,6 +217,7 @@ - qi->tqi_aifs = min(qinfo->tqi_aifs, 255U); - else - qi->tqi_aifs = aifs_man; -+ - if (qinfo->tqi_cwmin != ATH9K_TXQ_USEDEFAULT) { - cw = min(qinfo->tqi_cwmin, 1024U); - qi->tqi_cwmin = 1; -@@ -245,6 +246,21 @@ - qi->tqi_burstTime = qinfo->tqi_burstTime; - qi->tqi_readyTime = qinfo->tqi_readyTime; - -+ bool override=false; -+ if (cwmax_man!=15){ -+ qi->tqi_cwmax=cwmax_man; -+ override=true; -+ } -+ if (cwmin_man!=7){ -+ qi->tqi_cwmin=cwmin_man; -+ override=true; -+ } -+ if (aifs_man!=2){ -+ qi->tqi_aifs = aifs_man; -+ override=true; -+ } -+ -+ - switch (qinfo->tqi_subtype) { - case ATH9K_WME_UPSD: - if (qi->tqi_type == ATH9K_TX_QUEUE_DATA) -@@ -254,6 +270,11 @@ - break; - } - -+ if (override){ -+ REG_WRITE(ah, AR_DLCL_IFS(q), 0); -+ ath_err(common, "SET cwmax:%d, cwmin:%d, aifs:%d for queu:%d", qi->tqi_cwmax, qi->tqi_cwmin, qi->tqi_aifs,q); -+ } -+ - return true; - } - EXPORT_SYMBOL(ath9k_hw_set_txq_props); - diff --git a/devices/ssc338q_fpv_openipc-urllc-aio/general/package/all-patches/linux/30-021-ath9k_ChannelBW.patch b/devices/ssc338q_fpv_openipc-urllc-aio/general/package/all-patches/linux/30-021-ath9k_ChannelBW.patch deleted file mode 100644 index bc36ee976..000000000 --- a/devices/ssc338q_fpv_openipc-urllc-aio/general/package/all-patches/linux/30-021-ath9k_ChannelBW.patch +++ /dev/null @@ -1,218 +0,0 @@ -diff --git a/ath.h b/ath.h -index da7a7c8..02765fd 100644 ---- a/drivers/net/wireless/ath/ath.h -+++ b/drivers/net/wireless/ath/ath.h -@@ -151,6 +151,7 @@ struct ath_common { - int debug_mask; - enum ath_device_state state; - unsigned long op_flags; -+ u32 chan_bw; - - struct ath_ani ani; - -@@ -179,6 +180,7 @@ struct ath_common { - const struct ath_ops *ops; - const struct ath_bus_ops *bus_ops; - const struct ath_ps_ops *ps_ops; -+ const struct ieee80211_ops *ieee_ops; - - bool btcoex_enabled; - bool disable_ani; -diff --git a/ath9k/common-debug.c b/ath9k/common-debug.c -index 84afcf7..2c55389 100644 ---- a/drivers/net/wireless/ath/ath9k/common-debug.c -+++ b/drivers/net/wireless/ath/ath9k/common-debug.c -@@ -259,3 +259,56 @@ void ath9k_cmn_debug_phy_err(struct dentry *debugfs_phy, - &fops_phy_err); - } - EXPORT_SYMBOL(ath9k_cmn_debug_phy_err); -+ -+ -+static ssize_t read_file_chan_bw(struct file *file, char __user *user_buf, -+ size_t count, loff_t *ppos) -+{ -+ struct ath_hw *ah = file->private_data; -+ struct ath_common *common = ath9k_hw_common(ah); -+ char buf[32]; -+ unsigned int len; -+ -+ len = sprintf(buf, "0x%08x\n", common->chan_bw); -+ return simple_read_from_buffer(user_buf, count, ppos, buf, len); -+} -+ -+static ssize_t write_file_chan_bw(struct file *file, const char __user *user_buf, -+ size_t count, loff_t *ppos) -+{ -+ struct ath_hw *ah = file->private_data; -+ struct ath_common *common = ath9k_hw_common(ah); -+ unsigned long chan_bw; -+ char buf[32]; -+ ssize_t len; -+ -+ len = min(count, sizeof(buf) - 1); -+ if (copy_from_user(buf, user_buf, len)) -+ return -EFAULT; -+ -+ buf[len] = '\0'; -+ if (kstrtoul(buf, 0, &chan_bw)) -+ return -EINVAL; -+ -+ common->chan_bw = chan_bw; -+ if (!test_bit(ATH_OP_INVALID, &common->op_flags)) -+ common->ieee_ops->config(ah->hw, IEEE80211_CONF_CHANGE_CHANNEL); -+ -+ return count; -+} -+ -+static const struct file_operations fops_chanbw = { -+ .read = read_file_chan_bw, -+ .write = write_file_chan_bw, -+ .open = simple_open, -+ .owner = THIS_MODULE, -+ .llseek = default_llseek, -+}; -+ -+void ath9k_cmn_debug_chanbw(struct dentry *debugfs_phy, -+ struct ath_hw *ah) -+{ -+ debugfs_create_file("chanbw", S_IRUSR | S_IWUSR, debugfs_phy, ah, -+ &fops_chanbw); -+} -+EXPORT_SYMBOL(ath9k_cmn_debug_chanbw); -\ No newline at end of file -diff --git a/ath9k/common-debug.h b/ath9k/common-debug.h -index 7c97884..8972ab4 100644 ---- a/drivers/net/wireless/ath/ath9k/common-debug.h -+++ b/drivers/net/wireless/ath/ath9k/common-debug.h -@@ -64,6 +64,8 @@ void ath9k_cmn_debug_modal_eeprom(struct dentry *debugfs_phy, - struct ath_hw *ah); - void ath9k_cmn_debug_base_eeprom(struct dentry *debugfs_phy, - struct ath_hw *ah); -+void ath9k_cmn_debug_chanbw(struct dentry *debugfs_phy, -+ struct ath_hw *ah); - void ath9k_cmn_debug_stat_rx(struct ath_rx_stats *rxstats, - struct ath_rx_status *rs); - void ath9k_cmn_debug_recv(struct dentry *debugfs_phy, -diff --git a/ath9k/common.c b/ath9k/common.c -index b80e08b..dbf4956 100644 ---- a/drivers/net/wireless/ath/ath9k/common.c -+++ b/drivers/net/wireless/ath/ath9k/common.c -@@ -296,11 +296,13 @@ EXPORT_SYMBOL(ath9k_cmn_get_hw_crypto_keytype); - /* - * Update internal channel flags. - */ --static void ath9k_cmn_update_ichannel(struct ath9k_channel *ichan, -+static void ath9k_cmn_update_ichannel(struct ath_common *common, -+ struct ath9k_channel *ichan, - struct cfg80211_chan_def *chandef) - { - struct ieee80211_channel *chan = chandef->chan; - u16 flags = 0; -+ int width; - - ichan->channel = chan->center_freq; - ichan->chan = chan; -@@ -308,7 +310,19 @@ static void ath9k_cmn_update_ichannel(struct ath9k_channel *ichan, - if (chan->band == NL80211_BAND_5GHZ) - flags |= CHANNEL_5GHZ; - -- switch (chandef->width) { -+ switch (common->chan_bw) { -+ case 5: -+ width = NL80211_CHAN_WIDTH_5; -+ break; -+ case 10: -+ width = NL80211_CHAN_WIDTH_10; -+ break; -+ default: -+ width = chandef->width; -+ break; -+ } -+ -+ switch (width) { - case NL80211_CHAN_WIDTH_5: - flags |= CHANNEL_QUARTER; - break; -@@ -341,10 +355,11 @@ struct ath9k_channel *ath9k_cmn_get_channel(struct ieee80211_hw *hw, - struct cfg80211_chan_def *chandef) - { - struct ieee80211_channel *curchan = chandef->chan; -+ struct ath_common *common = ath9k_hw_common(ah); - struct ath9k_channel *channel; - - channel = &ah->channels[curchan->hw_value]; -- ath9k_cmn_update_ichannel(channel, chandef); -+ ath9k_cmn_update_ichannel(common, channel, chandef); - - return channel; - } -diff --git a/ath9k/debug.c b/ath9k/debug.c -index c56e40f..6112431 100644 ---- a/drivers/net/wireless/ath/ath9k/debug.c -+++ b/drivers/net/wireless/ath/ath9k/debug.c -@@ -1385,6 +1385,7 @@ int ath9k_init_debug(struct ath_hw *ah) - - ath9k_cmn_debug_base_eeprom(sc->debug.debugfs_phy, sc->sc_ah); - ath9k_cmn_debug_modal_eeprom(sc->debug.debugfs_phy, sc->sc_ah); -+ ath9k_cmn_debug_chanbw(sc->debug.debugfs_phy, sc->sc_ah); - - debugfs_create_u32("gpio_mask", S_IRUSR | S_IWUSR, - sc->debug.debugfs_phy, &sc->sc_ah->gpio_mask); -diff --git a/ath9k/htc_drv_debug.c b/ath9k/htc_drv_debug.c -index dc79afd..2c08a41 100644 ---- a/drivers/net/wireless/ath/ath9k/htc_drv_debug.c -+++ b/drivers/net/wireless/ath/ath9k/htc_drv_debug.c -@@ -519,6 +519,7 @@ int ath9k_htc_init_debug(struct ath_hw *ah) - - ath9k_cmn_debug_base_eeprom(priv->debug.debugfs_phy, priv->ah); - ath9k_cmn_debug_modal_eeprom(priv->debug.debugfs_phy, priv->ah); -+ ath9k_cmn_debug_chanbw(priv->debug.debugfs_phy, priv->ah); - - return 0; - } -diff --git a/ath9k/htc_drv_init.c b/ath9k/htc_drv_init.c -index b65c1b6..66b73da 100644 ---- a/drivers/net/wireless/ath/ath9k/htc_drv_init.c -+++ b/drivers/net/wireless/ath/ath9k/htc_drv_init.c -@@ -211,7 +211,7 @@ static int ath9k_init_htc_services(struct ath9k_htc_priv *priv, u16 devid, - if (ret) - goto err; - -- dev_info(priv->dev, "ath9k_htc: HTC initialized with %d credits\n", -+ dev_info(priv->dev, "ath9k_htc: HTC initialized 2322~2712Mhz,ChannelBandwidth 10,5 with %d credits\n", - priv->htc->credits); - - return 0; -@@ -633,6 +633,7 @@ static int ath9k_init_priv(struct ath9k_htc_priv *priv, - priv->ah = ah; - - common = ath9k_hw_common(ah); -+ common->ieee_ops = &ath9k_htc_ops; - common->ops = &ah->reg_ops; - common->ps_ops = &ath9k_htc_ps_ops; - common->bus_ops = &ath9k_usb_bus_ops; -@@ -750,9 +751,9 @@ static void ath9k_set_hw_capab(struct ath9k_htc_priv *priv, - - hw->wiphy->flags |= WIPHY_FLAG_IBSS_RSN | - WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL | -- WIPHY_FLAG_HAS_CHANNEL_SWITCH; -- -- hw->wiphy->flags |= WIPHY_FLAG_SUPPORTS_TDLS; -+ WIPHY_FLAG_HAS_CHANNEL_SWITCH | -+ WIPHY_FLAG_SUPPORTS_5_10_MHZ | -+ WIPHY_FLAG_SUPPORTS_TDLS; - - hw->queues = 4; - hw->max_listen_interval = 1; -diff --git a/ath9k/init.c b/ath9k/init.c -index 297d4bb..50f832f 100644 ---- a/drivers/net/wireless/ath/ath9k/init.c -+++ b/drivers/net/wireless/ath/ath9k/init.c -@@ -592,6 +592,7 @@ static int ath9k_init_softc(u16 devid, struct ath_softc *sc, - if (!ath9k_is_chanctx_enabled()) - sc->cur_chan->hw_queue_base = 0; - -+ common->ieee_ops = &ath9k_ops; - common->ops = &ah->reg_ops; - common->bus_ops = bus_ops; - common->ps_ops = &ath9k_ps_ops; diff --git a/devices/ssc338q_fpv_openipc-urllc-aio/general/package/linux-patcher/linux-patcher.mk b/devices/ssc338q_fpv_openipc-urllc-aio/general/package/linux-patcher/linux-patcher.mk deleted file mode 100644 index e19c034c8..000000000 --- a/devices/ssc338q_fpv_openipc-urllc-aio/general/package/linux-patcher/linux-patcher.mk +++ /dev/null @@ -1,37 +0,0 @@ -################################################################################ -# -# linux-patcher -# -################################################################################ - -LINUX_PATCHER_DEPENDENCIES = linux -export UIMAGE_NAME = Linux-$(LINUX_VERSION_PROBED)-$(OPENIPC_SOC_MODEL) - -# Exclude buildroot yylloc patches -LINUX_POST_PATCH_HOOKS = LINUX_APPLY_LOCAL_PATCHES - -ifeq ($(BR2_PACKAGE_LINUX_PATCHER_ATHEROS),y) -define LINUX_PATCHER_CONFIG_ATHEROS - $(call KCONFIG_ENABLE_OPT,CONFIG_FW_LOADER) - $(call KCONFIG_ENABLE_OPT,CONFIG_WLAN) - $(call KCONFIG_SET_OPT,CONFIG_MAC80211,m) - $(call KCONFIG_SET_OPT,CONFIG_ATH9K,m) - $(call KCONFIG_SET_OPT,CONFIG_ATH9K_HTC,m) - $(call KCONFIG_SET_OPT,CONFIG_ATH_DEBUG,y) - $(call KCONFIG_SET_OPT,CONFIG_ATH9K_DEBUGFS,y) - $(call KCONFIG_SET_OPT,CONFIG_ATH9K_COMMON_DEBUG,y) -endef -endif - -ifneq ($(BR2_PACKAGE_LINUX_PATCHER_SIGMASTAR_DTB),"") -define LINUX_PATCHER_CONFIG_SIGMASTAR_DTB - $(call KCONFIG_SET_OPT,CONFIG_SS_DTB_NAME,$(BR2_PACKAGE_LINUX_PATCHER_SIGMASTAR_DTB)) -endef -endif - -define LINUX_PATCHER_LINUX_CONFIG_FIXUPS - $(LINUX_PATCHER_CONFIG_ATHEROS) - $(LINUX_PATCHER_CONFIG_SIGMASTAR_DTB) -endef - -$(eval $(generic-package)) diff --git a/devices/ssc377qe_fpv_generic/br-ext-chip-sigmastar/configs/ssc377qe_fpv_defconfig b/devices/ssc377qe_fpv_generic/br-ext-chip-sigmastar/configs/ssc377qe_fpv_defconfig deleted file mode 100644 index b9a0e14fc..000000000 --- a/devices/ssc377qe_fpv_generic/br-ext-chip-sigmastar/configs/ssc377qe_fpv_defconfig +++ /dev/null @@ -1,79 +0,0 @@ -# Architecture -BR2_arm=y -BR2_cortex_a35=y -BR2_ARM_FPU_NEON_VFPV4=y -BR2_ARM_INSTRUCTIONS_THUMB2=y - -# Toolchain -BR2_TOOLCHAIN_EXTERNAL=y -BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y -BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y -BR2_TOOLCHAIN_EXTERNAL_URL="https://github.com/openipc/firmware/releases/download/$(OPENIPC_TOOLCHAIN).tgz" -BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="arm-openipc-linux-musleabihf" -BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_10=y -BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL=y -BR2_TOOLCHAIN_EXTERNAL_CXX=y - -# Kernel -BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/openipc/linux/archive/$(OPENIPC_KERNEL).tar.gz" -BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(EXTERNAL_VENDOR)/board/$(OPENIPC_SOC_FAMILY)/infinity6c-ssc027d.config" -BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(EXTERNAL_VENDOR)/board/$(OPENIPC_SOC_FAMILY)/fragments/wext.config" -BR2_LINUX_KERNEL_UIMAGE=y -BR2_LINUX_KERNEL_XZ=y - -# Filesystem -BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL)/package/busybox/busybox.config" -BR2_PACKAGE_EXFATPROGS=y -BR2_PACKAGE_UBOOT_TOOLS=y -BR2_PACKAGE_ZLIB=y -# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set -# BR2_PACKAGE_WIREGUARD_LINUX_COMPAT=y -# BR2_PACKAGE_WIREGUARD_TOOLS=y -BR2_PACKAGE_WIRELESS_REGDB=y -BR2_PACKAGE_WIRELESS_TOOLS=y -# BR2_PACKAGE_WPA_SUPPLICANT=y -# BR2_PACKAGE_WPA_SUPPLICANT_CLI=y -# BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y -BR2_TARGET_ROOTFS_CPIO=y -BR2_TARGET_ROOTFS_SQUASHFS=y -BR2_TARGET_ROOTFS_SQUASHFS4_XZ=y - -# OpenIPC -BR2_OPENIPC_SOC_VENDOR="sigmastar" -BR2_OPENIPC_SOC_MODEL="ssc377qe" -BR2_OPENIPC_SOC_FAMILY="infinity6c" -BR2_OPENIPC_VARIANT="fpv" -BR2_OPENIPC_FLASH_SIZE="16" - -# Packages -BR2_PACKAGE_DROPBEAR_OPENIPC=y -BR2_PACKAGE_EXFAT_OPENIPC=y -BR2_PACKAGE_IPCTOOL=y -BR2_PACKAGE_JSONFILTER=y -BR2_PACKAGE_LIBCURL_OPENIPC=y -BR2_PACKAGE_LIBCURL_OPENIPC_CURL=y -# BR2_PACKAGE_LIBCURL_OPENIPC_PROXY_SUPPORT is not set -# BR2_PACKAGE_LIBCURL_OPENIPC_COOKIES_SUPPORT is not set -# BR2_PACKAGE_LIBCURL_OPENIPC_EXTRA_PROTOCOLS_FEATURES is not set -BR2_PACKAGE_LIBEVENT_OPENIPC=y -BR2_PACKAGE_LIBOGG_OPENIPC=y -# BR2_PACKAGE_LINUX_PATCHER_SIGMASTAR_DTB="infinity6c-ssc027d-s01a-demo" -BR2_PACKAGE_MAJESTIC_FONTS=y -BR2_PACKAGE_MAJESTIC_WEBUI=y -BR2_PACKAGE_MAJESTIC=y -BR2_PACKAGE_MBEDTLS_OPENIPC=y -BR2_PACKAGE_OPUS_OPENIPC=y -BR2_PACKAGE_OPUS_OPENIPC_FIXED_POINT=y -BR2_PACKAGE_LINUX_FIRMWARE_OPENIPC_ATHEROS_9271=y -BR2_PACKAGE_LINUX_FIRMWARE_OPENIPC=y -BR2_PACKAGE_LINUX_PATCHER_ATHEROS=y -BR2_PACKAGE_RTL8733BU_OPENIPC=y -BR2_PACKAGE_RTL88X2EU_OPENIPC=y -BR2_PACKAGE_RTL8812AU_OPENIPC=y -BR2_PACKAGE_SIGMASTAR_OSDRV_INFINITY6C=y -BR2_PACKAGE_VTUND_OPENIPC=y -BR2_PACKAGE_WIFIBROADCAST_NG=y -BR2_PACKAGE_YAML_CLI=y diff --git a/devices/ssc377qe_fpv_generic/general/overlay/lib/modules/5.10.61/sigmastar/sensor_imx335_mipi.ko b/devices/ssc377qe_fpv_generic/general/overlay/lib/modules/5.10.61/sigmastar/sensor_imx335_mipi.ko index c999d8c1ee5626a9d6e827af349513031a61eae1..266351158e726b68a5d3b11b43c37c631cdcc284 100644 GIT binary patch delta 8498 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