-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Revert "bmips: drop macronix nand block protection patch"
This reverts commit 15b21c4. The issue seems to appear spuriously. Signed-off-by: Álvaro Fernández Rojas <[email protected]> (cherry picked from commit 84ca1c2)
- Loading branch information
Showing
1 changed file
with
114 additions
and
0 deletions.
There are no files selected for viewing
114 changes: 114 additions & 0 deletions
114
target/linux/bmips/patches-6.6/210-revert-macronix-nand-block-protection.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,114 @@ | ||
From 5a37811de679bff03e9c5a746f75574910ede964 Mon Sep 17 00:00:00 2001 | ||
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <[email protected]> | ||
Date: Wed, 22 Mar 2023 20:52:13 +0100 | ||
Subject: [PATCH] Revert "mtd: rawnand: Macronix: Add support for block | ||
protection" | ||
MIME-Version: 1.0 | ||
Content-Type: text/plain; charset=UTF-8 | ||
Content-Transfer-Encoding: 8bit | ||
|
||
This reverts commit 03a539c7a118427a6609a26461358c56ac8f3a06. | ||
|
||
Macronix block protection doesn't seem to be supported on Sercomm H-500s | ||
devices since it hangs the device. | ||
|
||
Signed-off-by: Álvaro Fernández Rojas <[email protected]> | ||
--- | ||
drivers/mtd/nand/raw/nand_macronix.c | 72 ---------------------------- | ||
1 file changed, 72 deletions(-) | ||
|
||
--- a/drivers/mtd/nand/raw/nand_macronix.c | ||
+++ b/drivers/mtd/nand/raw/nand_macronix.c | ||
@@ -13,10 +13,6 @@ | ||
#define MACRONIX_READ_RETRY_BIT BIT(0) | ||
#define MACRONIX_NUM_READ_RETRY_MODES 6 | ||
|
||
-#define ONFI_FEATURE_ADDR_MXIC_PROTECTION 0xA0 | ||
-#define MXIC_BLOCK_PROTECTION_ALL_LOCK 0x38 | ||
-#define MXIC_BLOCK_PROTECTION_ALL_UNLOCK 0x0 | ||
- | ||
#define ONFI_FEATURE_ADDR_MXIC_RANDOMIZER 0xB0 | ||
#define MACRONIX_RANDOMIZER_BIT BIT(1) | ||
#define MACRONIX_RANDOMIZER_ENPGM BIT(0) | ||
@@ -189,73 +185,6 @@ static void macronix_nand_fix_broken_get | ||
ONFI_FEATURE_ADDR_TIMING_MODE, 1); | ||
} | ||
|
||
-/* | ||
- * Macronix NAND supports Block Protection by Protectoin(PT) pin; | ||
- * active high at power-on which protects the entire chip even the #WP is | ||
- * disabled. Lock/unlock protection area can be partition according to | ||
- * protection bits, i.e. upper 1/2 locked, upper 1/4 locked and so on. | ||
- */ | ||
-static int mxic_nand_lock(struct nand_chip *chip, loff_t ofs, uint64_t len) | ||
-{ | ||
- u8 feature[ONFI_SUBFEATURE_PARAM_LEN]; | ||
- int ret; | ||
- | ||
- feature[0] = MXIC_BLOCK_PROTECTION_ALL_LOCK; | ||
- nand_select_target(chip, 0); | ||
- ret = nand_set_features(chip, ONFI_FEATURE_ADDR_MXIC_PROTECTION, | ||
- feature); | ||
- nand_deselect_target(chip); | ||
- if (ret) | ||
- pr_err("%s all blocks failed\n", __func__); | ||
- | ||
- return ret; | ||
-} | ||
- | ||
-static int mxic_nand_unlock(struct nand_chip *chip, loff_t ofs, uint64_t len) | ||
-{ | ||
- u8 feature[ONFI_SUBFEATURE_PARAM_LEN]; | ||
- int ret; | ||
- | ||
- feature[0] = MXIC_BLOCK_PROTECTION_ALL_UNLOCK; | ||
- nand_select_target(chip, 0); | ||
- ret = nand_set_features(chip, ONFI_FEATURE_ADDR_MXIC_PROTECTION, | ||
- feature); | ||
- nand_deselect_target(chip); | ||
- if (ret) | ||
- pr_err("%s all blocks failed\n", __func__); | ||
- | ||
- return ret; | ||
-} | ||
- | ||
-static void macronix_nand_block_protection_support(struct nand_chip *chip) | ||
-{ | ||
- u8 feature[ONFI_SUBFEATURE_PARAM_LEN]; | ||
- int ret; | ||
- | ||
- bitmap_set(chip->parameters.get_feature_list, | ||
- ONFI_FEATURE_ADDR_MXIC_PROTECTION, 1); | ||
- | ||
- feature[0] = MXIC_BLOCK_PROTECTION_ALL_UNLOCK; | ||
- nand_select_target(chip, 0); | ||
- ret = nand_get_features(chip, ONFI_FEATURE_ADDR_MXIC_PROTECTION, | ||
- feature); | ||
- nand_deselect_target(chip); | ||
- if (ret || feature[0] != MXIC_BLOCK_PROTECTION_ALL_LOCK) { | ||
- if (ret) | ||
- pr_err("Block protection check failed\n"); | ||
- | ||
- bitmap_clear(chip->parameters.get_feature_list, | ||
- ONFI_FEATURE_ADDR_MXIC_PROTECTION, 1); | ||
- return; | ||
- } | ||
- | ||
- bitmap_set(chip->parameters.set_feature_list, | ||
- ONFI_FEATURE_ADDR_MXIC_PROTECTION, 1); | ||
- | ||
- chip->ops.lock_area = mxic_nand_lock; | ||
- chip->ops.unlock_area = mxic_nand_unlock; | ||
-} | ||
- | ||
static int nand_power_down_op(struct nand_chip *chip) | ||
{ | ||
int ret; | ||
@@ -488,7 +417,6 @@ static int macronix_nand_init(struct nan | ||
|
||
macronix_nand_fix_broken_get_timings(chip); | ||
macronix_nand_onfi_init(chip); | ||
- macronix_nand_block_protection_support(chip); | ||
macronix_nand_deep_power_down_support(chip); | ||
macronix_nand_setup_otp(chip); | ||
|