Merge Official Source

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
Tianling Shen 2024-10-01 14:50:54 +08:00
commit 4664782500
No known key found for this signature in database
GPG Key ID: 6850B6345C862176
11 changed files with 412 additions and 224 deletions

View File

@ -18,7 +18,7 @@ Signed-off-by: David Bauer <mail@david-bauer.net>
--- a/net/mac80211/sta_info.c
+++ b/net/mac80211/sta_info.c
@@ -2455,6 +2455,13 @@ static void sta_stats_decode_rate(struct
@@ -2439,6 +2439,13 @@ static void sta_stats_decode_rate(struct
sband = local->hw.wiphy->bands[band];

View File

@ -8,9 +8,9 @@ PKG_LICENSE_FILES:=
PKG_SOURCE_URL:=https://github.com/openwrt/mt76
PKG_SOURCE_PROTO:=git
PKG_SOURCE_DATE:=2024-09-05
PKG_SOURCE_VERSION:=65cc3daf2a332cc658e9f7438cdadde4392e672e
PKG_MIRROR_HASH:=c29c4f883051a6360119156a03e010ac11573011b23d9e873f83c720600970e7
PKG_SOURCE_DATE:=2024-09-29
PKG_SOURCE_VERSION:=680bc70f161fde0f167e2ae50c771be4775eb50a
PKG_MIRROR_HASH:=bcdb95e40cfceba56a565ad6b6d9f92a122e7230d0f7f950b3d39e4280723cca
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
PKG_USE_NINJA:=0
@ -326,10 +326,34 @@ define KernelPackage/mt7996e
AUTOLOAD:=$(call AutoProbe,mt7996e)
endef
define KernelPackage/mt7992-firmware
$(KernelPackage/mt76-default)
TITLE:=MediaTek MT7992 firmware
DEPENDS+=+kmod-mt7996e
endef
define KernelPackage/mt7992-23-firmware
$(KernelPackage/mt76-default)
TITLE:=MediaTek MT7996 firmware (2+3 antenna variant)
DEPENDS+=+kmod-mt7996e
endef
define KernelPackage/mt7996-firmware-common
$(KernelPackage/mt76-default)
TITLE:=MediaTek MT7996 firmware (common files)
HIDDEN:=1
endef
define KernelPackage/mt7996-firmware
$(KernelPackage/mt76-default)
TITLE:=MediaTek MT7996 firmware
DEPENDS+=+kmod-mt7996e
DEPENDS+=+kmod-mt7996e +kmod-mt7996-firmware-common
endef
define KernelPackage/mt7996-233-firmware
$(KernelPackage/mt76-default)
TITLE:=MediaTek MT7996 firmware (2+3+3 antenna variant)
DEPENDS+=+kmod-mt7996e +kmod-mt7996-firmware-common
endef
define KernelPackage/mt7925-firmware
@ -633,17 +657,59 @@ define KernelPackage/mt7925-firmware/install
$(1)/lib/firmware/mediatek/mt7925
endef
define KernelPackage/mt7996-firmware/install
define KernelPackage/mt7992-firmware/install
$(INSTALL_DIR) $(1)/lib/firmware/mediatek/mt7996
cp \
$(PKG_BUILD_DIR)/firmware/mt7996/mt7992_dsp.bin \
$(PKG_BUILD_DIR)/firmware/mt7996/mt7992_eeprom.bin \
$(PKG_BUILD_DIR)/firmware/mt7996/mt7992_eeprom_2i5i.bin \
$(PKG_BUILD_DIR)/firmware/mt7996/mt7992_rom_patch.bin \
$(PKG_BUILD_DIR)/firmware/mt7996/mt7992_wa.bin \
$(PKG_BUILD_DIR)/firmware/mt7996/mt7992_wm.bin \
$(1)/lib/firmware/mediatek/mt7996
endef
define KernelPackage/mt7992-23-firmware/install
$(INSTALL_DIR) $(1)/lib/firmware/mediatek/mt7996
cp \
$(PKG_BUILD_DIR)/firmware/mt7996/mt7992_dsp_23.bin \
$(PKG_BUILD_DIR)/firmware/mt7996/mt7992_eeprom_23.bin \
$(PKG_BUILD_DIR)/firmware/mt7996/mt7992_eeprom_23_2i5i.bin \
$(PKG_BUILD_DIR)/firmware/mt7996/mt7992_rom_patch_23.bin \
$(PKG_BUILD_DIR)/firmware/mt7996/mt7992_wa_23.bin \
$(PKG_BUILD_DIR)/firmware/mt7996/mt7992_wm_23.bin \
$(1)/lib/firmware/mediatek/mt7996
endef
define KernelPackage/mt7996-firmware-common/install
$(INSTALL_DIR) $(1)/lib/firmware/mediatek/mt7996
cp \
$(PKG_BUILD_DIR)/firmware/mt7996/mt7996_dsp.bin \
$(1)/lib/firmware/mediatek/mt7996
endef
define KernelPackage/mt7996-firmware/install
$(INSTALL_DIR) $(1)/lib/firmware/mediatek/mt7996
cp \
$(PKG_BUILD_DIR)/firmware/mt7996/mt7996_eeprom.bin \
$(PKG_BUILD_DIR)/firmware/mt7996/mt7996_eeprom_2i5i6i.bin \
$(PKG_BUILD_DIR)/firmware/mt7996/mt7996_rom_patch.bin \
$(PKG_BUILD_DIR)/firmware/mt7996/mt7996_wa.bin \
$(PKG_BUILD_DIR)/firmware/mt7996/mt7996_wm.bin \
$(1)/lib/firmware/mediatek/mt7996
endef
define KernelPackage/mt7996-233-firmware/install
$(INSTALL_DIR) $(1)/lib/firmware/mediatek/mt7996
cp \
$(PKG_BUILD_DIR)/firmware/mt7996/mt7996_eeprom_233.bin \
$(PKG_BUILD_DIR)/firmware/mt7996/mt7996_eeprom_233_2i5i6i.bin \
$(PKG_BUILD_DIR)/firmware/mt7996/mt7996_rom_patch_233.bin \
$(PKG_BUILD_DIR)/firmware/mt7996/mt7996_wa_233.bin \
$(PKG_BUILD_DIR)/firmware/mt7996/mt7996_wm_233.bin \
$(1)/lib/firmware/mediatek/mt7996
endef
define Package/mt76-test/install
mkdir -p $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/tools/mt76-test $(1)/usr/sbin
@ -694,6 +760,10 @@ $(eval $(call KernelPackage,mt7921e))
$(eval $(call KernelPackage,mt7925u))
$(eval $(call KernelPackage,mt7925e))
$(eval $(call KernelPackage,mt7996e))
$(eval $(call KernelPackage,mt7992-firmware))
$(eval $(call KernelPackage,mt7992-23-firmware))
$(eval $(call KernelPackage,mt7996-firmware-common))
$(eval $(call KernelPackage,mt7996-firmware))
$(eval $(call KernelPackage,mt7996-233-firmware))
$(eval $(call KernelPackage,mt76))
$(eval $(call BuildPackage,mt76-test))

View File

@ -1,216 +0,0 @@
--- a/mt76.h
+++ b/mt76.h
@@ -14,6 +14,7 @@
#include <linux/usb.h>
#include <linux/average.h>
#include <linux/soc/mediatek/mtk_wed.h>
+#include <net/netlink.h>
#include <net/mac80211.h>
#if LINUX_VERSION_CODE < KERNEL_VERSION(6,6,0)
#include <net/page_pool.h>
@@ -1475,6 +1476,7 @@ static inline void mt76_testmode_reset(s
#endif
}
+extern const struct nla_policy mt76_tm_policy[NUM_MT76_TM_ATTRS];
/* internal */
static inline struct ieee80211_hw *
--- a/mt7603/main.c
+++ b/mt7603/main.c
@@ -23,7 +23,7 @@ mt7603_start(struct ieee80211_hw *hw)
}
static void
-mt7603_stop(struct ieee80211_hw *hw)
+mt7603_stop(struct ieee80211_hw *hw, bool suspend)
{
struct mt7603_dev *dev = hw->priv;
--- a/mt7615/main.c
+++ b/mt7615/main.c
@@ -91,7 +91,7 @@ out:
return ret;
}
-static void mt7615_stop(struct ieee80211_hw *hw)
+static void mt7615_stop(struct ieee80211_hw *hw, bool suspend)
{
struct mt7615_dev *dev = mt7615_hw_dev(hw);
struct mt7615_phy *phy = mt7615_hw_phy(hw);
--- a/mt7615/usb.c
+++ b/mt7615/usb.c
@@ -79,7 +79,7 @@ static void mt7663u_copy(struct mt76_dev
mutex_unlock(&usb->usb_ctrl_mtx);
}
-static void mt7663u_stop(struct ieee80211_hw *hw)
+static void mt7663u_stop(struct ieee80211_hw *hw, bool suspend)
{
struct mt7615_phy *phy = mt7615_hw_phy(hw);
struct mt7615_dev *dev = hw->priv;
--- a/mt76x0/pci.c
+++ b/mt76x0/pci.c
@@ -44,7 +44,7 @@ static void mt76x0e_stop_hw(struct mt76x
mt76_clear(dev, MT_WPDMA_GLO_CFG, MT_WPDMA_GLO_CFG_RX_DMA_EN);
}
-static void mt76x0e_stop(struct ieee80211_hw *hw)
+static void mt76x0e_stop(struct ieee80211_hw *hw, bool suspend)
{
struct mt76x02_dev *dev = hw->priv;
--- a/mt76x0/usb.c
+++ b/mt76x0/usb.c
@@ -77,7 +77,7 @@ static void mt76x0u_cleanup(struct mt76x
mt76u_queues_deinit(&dev->mt76);
}
-static void mt76x0u_stop(struct ieee80211_hw *hw)
+static void mt76x0u_stop(struct ieee80211_hw *hw, bool suspend)
{
struct mt76x02_dev *dev = hw->priv;
--- a/mt76x2/pci_main.c
+++ b/mt76x2/pci_main.c
@@ -24,7 +24,7 @@ mt76x2_start(struct ieee80211_hw *hw)
}
static void
-mt76x2_stop(struct ieee80211_hw *hw)
+mt76x2_stop(struct ieee80211_hw *hw, bool suspend)
{
struct mt76x02_dev *dev = hw->priv;
--- a/mt76x2/usb_main.c
+++ b/mt76x2/usb_main.c
@@ -22,7 +22,7 @@ static int mt76x2u_start(struct ieee8021
return 0;
}
-static void mt76x2u_stop(struct ieee80211_hw *hw)
+static void mt76x2u_stop(struct ieee80211_hw *hw, bool suspend)
{
struct mt76x02_dev *dev = hw->priv;
--- a/mt7915/main.c
+++ b/mt7915/main.c
@@ -108,7 +108,7 @@ static int mt7915_start(struct ieee80211
return ret;
}
-static void mt7915_stop(struct ieee80211_hw *hw)
+static void mt7915_stop(struct ieee80211_hw *hw, bool suspend)
{
struct mt7915_dev *dev = mt7915_hw_dev(hw);
struct mt7915_phy *phy = mt7915_hw_phy(hw);
--- a/mt7915/mcu.c
+++ b/mt7915/mcu.c
@@ -335,7 +335,7 @@ mt7915_mcu_cca_finish(void *priv, u8 *ma
if (!vif->bss_conf.color_change_active || vif->type == NL80211_IFTYPE_STATION)
return;
- ieee80211_color_change_finish(vif);
+ ieee80211_color_change_finish(vif, 0);
}
static void
--- a/mt7921/main.c
+++ b/mt7921/main.c
@@ -268,7 +268,7 @@ static int mt7921_start(struct ieee80211
return err;
}
-static void mt7921_stop(struct ieee80211_hw *hw)
+static void mt7921_stop(struct ieee80211_hw *hw, bool suspend)
{
struct mt792x_dev *dev = mt792x_hw_dev(hw);
int err = 0;
@@ -281,7 +281,7 @@ static void mt7921_stop(struct ieee80211
return;
}
- mt792x_stop(hw);
+ mt792x_stop(hw, false);
}
static int
--- a/mt792x.h
+++ b/mt792x.h
@@ -337,7 +337,7 @@ static inline bool mt792x_dma_need_reini
#define mt792x_mutex_release(dev) \
mt76_connac_mutex_release(&(dev)->mt76, &(dev)->pm)
-void mt792x_stop(struct ieee80211_hw *hw);
+void mt792x_stop(struct ieee80211_hw *hw, bool suspend);
void mt792x_pm_wake_work(struct work_struct *work);
void mt792x_pm_power_save_work(struct work_struct *work);
void mt792x_reset(struct mt76_dev *mdev);
@@ -457,7 +457,7 @@ void mt792xu_wr(struct mt76_dev *dev, u3
u32 mt792xu_rmw(struct mt76_dev *dev, u32 addr, u32 mask, u32 val);
void mt792xu_copy(struct mt76_dev *dev, u32 offset, const void *data, int len);
void mt792xu_disconnect(struct usb_interface *usb_intf);
-void mt792xu_stop(struct ieee80211_hw *hw);
+void mt792xu_stop(struct ieee80211_hw *hw, bool suspend);
static inline void
mt792x_skb_add_usb_sdio_hdr(struct mt792x_dev *dev, struct sk_buff *skb,
--- a/mt792x_core.c
+++ b/mt792x_core.c
@@ -113,7 +113,7 @@ void mt792x_tx(struct ieee80211_hw *hw,
}
EXPORT_SYMBOL_GPL(mt792x_tx);
-void mt792x_stop(struct ieee80211_hw *hw)
+void mt792x_stop(struct ieee80211_hw *hw, bool suspend)
{
struct mt792x_dev *dev = mt792x_hw_dev(hw);
struct mt792x_phy *phy = mt792x_hw_phy(hw);
--- a/mt792x_usb.c
+++ b/mt792x_usb.c
@@ -285,12 +285,12 @@ int mt792xu_init_reset(struct mt792x_dev
}
EXPORT_SYMBOL_GPL(mt792xu_init_reset);
-void mt792xu_stop(struct ieee80211_hw *hw)
+void mt792xu_stop(struct ieee80211_hw *hw, bool suspend)
{
struct mt792x_dev *dev = mt792x_hw_dev(hw);
mt76u_stop_tx(&dev->mt76);
- mt792x_stop(hw);
+ mt792x_stop(hw, false);
}
EXPORT_SYMBOL_GPL(mt792xu_stop);
--- a/mt7996/main.c
+++ b/mt7996/main.c
@@ -93,7 +93,7 @@ static int mt7996_start(struct ieee80211
return ret;
}
-static void mt7996_stop(struct ieee80211_hw *hw)
+static void mt7996_stop(struct ieee80211_hw *hw, bool suspend)
{
struct mt7996_dev *dev = mt7996_hw_dev(hw);
struct mt7996_phy *phy = mt7996_hw_phy(hw);
--- a/mt7996/mcu.c
+++ b/mt7996/mcu.c
@@ -421,7 +421,7 @@ mt7996_mcu_cca_finish(void *priv, u8 *ma
if (!vif->bss_conf.color_change_active || vif->type == NL80211_IFTYPE_STATION)
return;
- ieee80211_color_change_finish(vif);
+ ieee80211_color_change_finish(vif, 0);
}
static void
--- a/testmode.h
+++ b/testmode.h
@@ -193,6 +193,4 @@ enum mt76_testmode_tx_mode {
MT76_TM_TX_MODE_MAX = NUM_MT76_TM_TX_MODES - 1,
};
-extern const struct nla_policy mt76_tm_policy[NUM_MT76_TM_ATTRS];
-
#endif

View File

@ -0,0 +1,35 @@
From f8d05679fb3faae478d604177b0c188b340371cd Mon Sep 17 00:00:00 2001
From: Breno Leitao <leitao@debian.org>
Date: Mon, 22 Apr 2024 05:38:55 -0700
Subject: [PATCH] net: free_netdev: exit earlier if dummy
For dummy devices, exit earlier at free_netdev() instead of executing
the whole function. This is necessary, because dummy devices are
special, and shouldn't have the second part of the function executed.
Otherwise reg_state, which is NETREG_DUMMY, will be overwritten and
there will be no way to identify that this is a dummy device. Also, this
device do not need the final put_device(), since dummy devices are not
registered (through register_netdevice()), where the device reference is
increased (at netdev_register_kobject()/device_add()).
Suggested-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Breno Leitao <leitao@debian.org>
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
---
net/core/dev.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -10966,7 +10966,8 @@ void free_netdev(struct net_device *dev)
dev->xdp_bulkq = NULL;
/* Compatibility with error handling in drivers */
- if (dev->reg_state == NETREG_UNINITIALIZED) {
+ if (dev->reg_state == NETREG_UNINITIALIZED ||
+ dev->reg_state == NETREG_DUMMY) {
netdev_freemem(dev);
return;
}

View File

@ -213,7 +213,7 @@ define Device/smartrg_sdg-8733a
$(call Device/adtran_smartrg)
DEVICE_MODEL := SDG-8733A
DEVICE_DTS := mt7988d-smartrg-SDG-8733A
DEVICE_PACKAGES += mt7988-2p5g-phy-firmware kmod-mt7996-firmware kmod-phy-aquantia
DEVICE_PACKAGES += mt7988-2p5g-phy-firmware kmod-mt7996-233-firmware kmod-phy-aquantia
endef
TARGET_DEVICES += smartrg_sdg-8733a
@ -376,7 +376,7 @@ define Device/bananapi_bpi-r4-common
DEVICE_DTS_LOADADDR := 0x45f00000
DEVICE_DTS_OVERLAY:= mt7988a-bananapi-bpi-r4-emmc mt7988a-bananapi-bpi-r4-rtc mt7988a-bananapi-bpi-r4-sd mt7988a-bananapi-bpi-r4-wifi-mt7996a
DEVICE_DTC_FLAGS := --pad 4096
DEVICE_PACKAGES := kmod-hwmon-pwmfan kmod-i2c-mux-pca954x kmod-eeprom-at24 kmod-mt7996-firmware \
DEVICE_PACKAGES := kmod-hwmon-pwmfan kmod-i2c-mux-pca954x kmod-eeprom-at24 kmod-mt7996-firmware kmod-mt7996-233-firmware \
kmod-rtc-pcf8563 kmod-sfp kmod-usb3 e2fsprogs f2fsck mkf2fs
IMAGES := sysupgrade.itb
KERNEL_LOADADDR := 0x46000000

View File

@ -288,3 +288,13 @@
/* Definitions of arguments for argp functions. */
static const struct argp_option options[] =
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -92,6 +92,7 @@ strings_LDADD = $(libelf) $(libeu) $(arg
ar_LDADD = libar.a $(libelf) $(libeu) $(argp_LDADD) $(obstack_LIBS)
unstrip_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(argp_LDADD)
stack_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(argp_LDADD) $(demanglelib)
+EXTRA_stack_DEPENDENCIES = $(if $(findstring srcfiles,$(bin_PROGRAMS)),$(srcfiles_OBJECTS))
elfcompress_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(argp_LDADD)
elfclassify_LDADD = $(libelf) $(libdw) $(libeu) $(argp_LDADD)
srcfiles_SOURCES = srcfiles.cxx

View File

@ -0,0 +1,289 @@
--- a/lib/yaffs2/direct/yportenv.h
+++ b/lib/yaffs2/direct/yportenv.h
@@ -32,10 +32,13 @@
#define CONFIG_YAFFS_DEFINES_TYPES 1
#define CONFIG_YAFFS_USE_32_BIT_TIME_T 1
#define NO_Y_INLINE 1
-#define loff_t off_t
#endif /* __rtems__ */
+#ifndef linux
+#define loff_t off_t
+#endif
+
/* Definition of types */
#ifdef CONFIG_YAFFS_DEFINES_TYPES
typedef unsigned char u8;
--- a/src/ioctl.c
+++ b/src/ioctl.c
@@ -21,5 +21,9 @@
* integer overflow when building against e.g. musl.
*/
int linux_ioctl(int fd, unsigned long request, void *ptr) {
+#ifdef linux
return syscall(SYS_ioctl, fd, request, ptr);
+#else
+ return -1;
+#endif
}
--- a/src/ioctl.h
+++ b/src/ioctl.h
@@ -12,7 +12,9 @@ int linux_ioctl(int fd, unsigned long re
* time, as the definition of the MEMREAD ioctl trickles down into kernel
* headers distributed out there.
*/
+#ifdef linux
#include <mtd/mtd-user.h>
+
#ifndef MEMREAD
#include <sys/ioctl.h>
@@ -35,3 +37,4 @@ struct mtd_read_req {
#define MEMREAD _IOWR('M', 26, struct mtd_read_req)
#endif /* MEMREAD */
+#endif
--- a/src/mtd.c
+++ b/src/mtd.c
@@ -4,7 +4,9 @@
#include <errno.h>
#include <fcntl.h>
+#ifdef linux
#include <mtd/mtd-user.h>
+#endif
#include <stdarg.h>
#include <stdbool.h>
#include <stdio.h>
@@ -82,6 +84,7 @@ static void mtd_debug_location(const cha
va_end(args);
}
+#ifdef linux
/*
* Read the raw contents of the sysfs attribute at the provided 'sysfs_path'
* into 'buf', which is 'buf_len' bytes large. The given sysfs attribute is
@@ -179,6 +182,7 @@ static int discover_mtd_parameters(const
return 0;
}
+#endif
/*
* Initialize 'geometry' with 'chunk_size' and 'block_size' set to the default
@@ -203,6 +207,7 @@ static void init_yaffs_geometry_default(
* Initialize 'geometry' with 'chunk_size' and 'block_size' set to the relevant
* MTD parameters provided in 'mtd' and 'mtd_type' set to the provided value.
*/
+#ifdef linux
static void init_yaffs_geometry_autodetected(const struct mtd_ctx *ctx,
const struct mtd_info_user *mtd,
struct mtd_geometry *geometry,
@@ -217,6 +222,7 @@ static void init_yaffs_geometry_autodete
.block_size = mtd->erasesize,
};
}
+#endif
/*
* Update 'chunk_size' and 'block_size' in 'geometry' to the values provided in
@@ -280,6 +286,7 @@ static int init_yaffs_geometry_file(cons
* 2. If -C and/or -B were used, override any default values with those
* provided on the command line.
*/
+#ifdef linux
static void init_yaffs_geometry_nand_or_nor(const struct mtd_ctx *ctx,
const struct mtd_info_user *mtd,
const struct opts *opts,
@@ -297,6 +304,7 @@ static void init_yaffs_geometry_nand_or_
geometry->block_count = mtd->size / geometry->block_size;
}
+#endif
/*
* Determine the type of the provided MTD (which can be either NAND/NOR flash
@@ -317,6 +325,7 @@ static int init_yaffs_geometry(const str
geometry->oob_size = 0;
geometry->oobavail = 0;
} else {
+#ifdef linux
struct mtd_info_user mtd;
unsigned int oobavail;
@@ -329,6 +338,9 @@ static int init_yaffs_geometry(const str
geometry->oob_size = mtd.oobsize;
geometry->oobavail = oobavail;
+#else
+ return -1;
+#endif
}
return 0;
--- a/src/ydrv.c
+++ b/src/ydrv.c
@@ -3,7 +3,9 @@
// SPDX-License-Identifier: GPL-2.0-only
#include <errno.h>
+#ifdef linux
#include <mtd/mtd-user.h>
+#endif
#include <stdarg.h>
#include <stdbool.h>
#include <stdint.h>
@@ -122,6 +124,7 @@ static long long ydrv_get_data_offset_fo
/*
* Check whether the given MTD block is a bad one on NAND or NOR flash.
*/
+#ifdef linux
static int ydrv_check_bad_nand_or_nor(const struct ydrv_ctx *ctx,
int block_no) {
long long offset = block_no * ctx->block_size;
@@ -139,6 +142,7 @@ static int ydrv_check_bad_nand_or_nor(co
return (ret == 0 ? YAFFS_OK : YAFFS_FAIL);
}
+#endif
/*
* Check whether the given MTD block is a bad one.
@@ -154,9 +158,11 @@ static int ydrv_check_bad(struct yaffs_d
}
switch (ctx->mtd_type) {
+#ifdef linux
case MTD_TYPE_NAND:
case MTD_TYPE_NOR:
return ydrv_check_bad_nand_or_nor(ctx, block_no);
+#endif
case MTD_TYPE_FILE:
ydrv_debug("file is assumed to only contain good blocks");
return YAFFS_OK;
@@ -169,6 +175,7 @@ static int ydrv_check_bad(struct yaffs_d
/*
* Erase the given MTD block on NAND or NOR flash.
*/
+#ifdef linux
static int ydrv_erase_block_nand_or_nor(const struct ydrv_ctx *ctx,
int block_no) {
long long offset = block_no * ctx->block_size;
@@ -196,6 +203,7 @@ static int ydrv_erase_block_nand_or_nor(
return YAFFS_OK;
}
+#endif
/*
* Erase the given MTD block in a file.
@@ -247,9 +255,11 @@ static int ydrv_erase_block(struct yaffs
}
switch (ctx->mtd_type) {
+#ifdef linux
case MTD_TYPE_NAND:
case MTD_TYPE_NOR:
return ydrv_erase_block_nand_or_nor(ctx, block_no);
+#endif
case MTD_TYPE_FILE:
return ydrv_erase_block_file(ctx, block_no);
default:
@@ -261,6 +271,7 @@ static int ydrv_erase_block(struct yaffs
/*
* Mark the given MTD block as bad on NAND or NOR flash.
*/
+#ifdef linux
static int ydrv_mark_bad_nand_or_nor(const struct ydrv_ctx *ctx, int block_no) {
long long offset = block_no * ctx->block_size;
int err = 0;
@@ -281,6 +292,7 @@ static int ydrv_mark_bad_nand_or_nor(con
return YAFFS_OK;
}
+#endif
/*
* Mark the given MTD block as bad.
@@ -296,9 +308,11 @@ static int ydrv_mark_bad(struct yaffs_de
}
switch (ctx->mtd_type) {
+#ifdef linux
case MTD_TYPE_NAND:
case MTD_TYPE_NOR:
return ydrv_mark_bad_nand_or_nor(ctx, block_no);
+#endif
case MTD_TYPE_FILE:
ydrv_debug("file is assumed to only contain good blocks");
return YAFFS_FAIL;
@@ -315,9 +329,11 @@ static int ydrv_mark_bad(struct yaffs_de
*/
static int ydrv_ecc_result(int read_result, enum yaffs_ecc_result *ecc_result) {
switch (read_result) {
+#ifdef linux
case -EUCLEAN:
*ecc_result = YAFFS_ECC_RESULT_FIXED;
return YAFFS_OK;
+#endif
case -EBADMSG:
*ecc_result = YAFFS_ECC_RESULT_UNFIXED;
return YAFFS_FAIL;
@@ -333,6 +349,7 @@ static int ydrv_ecc_result(int read_resu
/*
* Read a data+OOB chunk from NAND flash.
*/
+#ifdef linux
static int ydrv_read_chunk_nand(const struct ydrv_ctx *ctx, int chunk, u8 *data,
int data_len, u8 *oob, int oob_len,
enum yaffs_ecc_result *ecc_result_out,
@@ -371,6 +388,7 @@ static int ydrv_read_chunk_nand(const st
return ret;
}
+#endif
/*
* Read a data chunk from NOR flash.
@@ -420,10 +438,12 @@ static int ydrv_read_chunk(struct yaffs_
}
switch (ctx->mtd_type) {
+#ifdef linux
case MTD_TYPE_NAND:
return ydrv_read_chunk_nand(ctx, chunk, data, data_len, oob,
oob_len, ecc_result_out,
dev->param.is_yaffs2);
+#endif
case MTD_TYPE_NOR:
case MTD_TYPE_FILE:
return ydrv_read_chunk_nor_or_file(ctx, chunk, data, data_len,
@@ -438,6 +458,7 @@ static int ydrv_read_chunk(struct yaffs_
/*
* Write a data+OOB chunk to NAND flash.
*/
+#ifdef linux
static int ydrv_write_chunk_nand(const struct ydrv_ctx *ctx, int chunk,
const u8 *data, int data_len, const u8 *oob,
int oob_len, bool is_yaffs2) {
@@ -472,6 +493,7 @@ static int ydrv_write_chunk_nand(const s
return YAFFS_OK;
}
+#endif
/*
* Write a data chunk to NOR flash.
@@ -516,9 +538,11 @@ static int ydrv_write_chunk(struct yaffs
}
switch (ctx->mtd_type) {
+#ifdef linux
case MTD_TYPE_NAND:
return ydrv_write_chunk_nand(ctx, chunk, data, data_len, oob,
oob_len, dev->param.is_yaffs2);
+#endif
case MTD_TYPE_NOR:
case MTD_TYPE_FILE:
return ydrv_write_chunk_nor_or_file(ctx, chunk, data, data_len);