| From patchwork Mon Nov 7 06:28:49 2016 |
| Content-Type: text/plain; charset="utf-8" |
| MIME-Version: 1.0 |
| Content-Transfer-Encoding: 7bit |
| Subject: [1/3] external/common: Teach ARM code to erase 'mtd chips' |
| From: Cyril Bur <cyril.bur@au1.ibm.com> |
| X-Patchwork-Id: 691765 |
| Message-Id: <20161107062851.1016-1-cyril.bur@au1.ibm.com> |
| To: skiboot@lists.ozlabs.org |
| Date: Mon, 7 Nov 2016 17:28:49 +1100 |
| |
| Currently the arch flash code for all architectures can only perform |
| chip erases if there is a real flash driver attached. |
| |
| With increasing use of MTD on both host and BMC this code needs to know |
| how to behave of the backend of blocklevel is MTD. |
| |
| This patch teaches the ARM specific code to pass an erase for the full |
| size of the chip down the stack. This can be optimised into a chip erase |
| within the kernel. |
| |
| Signed-off-by: Cyril Bur <cyril.bur@au1.ibm.com> |
| --- |
| external/common/arch_flash_arm.c | 13 +++++++++++-- |
| 1 file changed, 11 insertions(+), 2 deletions(-) |
| |
| diff --git a/external/common/arch_flash_arm.c b/external/common/arch_flash_arm.c |
| index 697609d..bb8800f 100644 |
| --- a/external/common/arch_flash_arm.c |
| +++ b/external/common/arch_flash_arm.c |
| @@ -300,8 +300,17 @@ int arch_flash_erase_chip(struct blocklevel_device *bl) |
| if (!arch_data.init_bl || arch_data.init_bl != bl) |
| return -1; |
| |
| - if (!arch_data.flash_chip) |
| - return -1; |
| + if (!arch_data.flash_chip) { |
| + /* Just assume its a regular erase */ |
| + int rc; |
| + uint64_t total_size; |
| + |
| + rc = blocklevel_get_info(bl, NULL, &total_size, NULL); |
| + if (rc) |
| + return rc; |
| + |
| + return blocklevel_erase(bl, 0, total_size); |
| + } |
| |
| return flash_erase_chip(arch_data.flash_chip); |
| } |