pebble/src/fw/flash_region/flash_region.h
Josh Soref 5ea72eb54a spelling: filesystem
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
2025-01-29 00:03:24 -05:00

58 lines
2.4 KiB
C

/*
* Copyright 2024 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#pragma once
#include <stdint.h>
#include <stdbool.h>
#if PLATFORM_TINTIN
// v2_0 and v1_5 have 8MB flash chips instead of 4MB. In the following definition,
// BOARD_NOR_FLASH_SIZE is set to allow 6MB of the flash chip to be used. The extra 2MB tacked
// onto the end will be used for the filesystem and is being added to help with storing large
// language packs (ex. Chinese). If the entire 8MB needs to be used, this variable will have to
// be changed. Migrations are likely as well.
//
// On watches with only 4MB of flash, the region will have a size of zero and be ignored by the
// filesystem.
#if defined(BOARD_V2_0) || defined(BOARD_V1_5) || defined(LARGE_SPI_FLASH)
#define BOARD_NOR_FLASH_SIZE 0x600000
#else
#define BOARD_NOR_FLASH_SIZE 0x400000
#endif
#include "flash_region_n25q.h"
#elif PLATFORM_SILK
#include "flash_region_mx25u.h"
#elif PLATFORM_CALCULUS || PLATFORM_ROBERT
#include "flash_region_mt25q.h"
#elif PLATFORM_SNOWY || PLATFORM_SPALDING
#include "flash_region_s29vs.h"
#endif
// NOTE: The following functions are deprecated! New code should use the
// asynchronous version, flash_erase_optimal_range, in flash.h.
//! Erase at least (max_start, min_end) but no more than (min_start, max_end) using as few erase operations
//! as possible.
//! (min_start, max_end) must be both 4kb aligned, as that's the smallest unit that we can erase.
void flash_region_erase_optimal_range(uint32_t min_start, uint32_t max_start,
uint32_t min_end, uint32_t max_end);
//! The same as flash_region_erase_optimal_range but first disables the task watchdog for the
//! current task.
void flash_region_erase_optimal_range_no_watchdog(uint32_t min_start, uint32_t max_start,
uint32_t min_end, uint32_t max_end);