diff options
Diffstat (limited to 'src/imxrt10xx.rs')
| -rw-r--r-- | src/imxrt10xx.rs | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/src/imxrt10xx.rs b/src/imxrt10xx.rs index 095b91d..042574c 100644 --- a/src/imxrt10xx.rs +++ b/src/imxrt10xx.rs @@ -17,26 +17,28 @@ pub trait Imxrt10xx: 'static { fn configure_clocks(ccm: ccm::Instance, ccm_analog: ccm_analog::Instance, dcdc: dcdc::Instance); } -pub struct Algorithm<C: Imxrt10xx, F: crate::ImxrtFlashAlgorithm>(PhantomData<(C, F)>); +pub struct Algorithm<C: Imxrt10xx, const FLASH_SIZE_BYTES: usize>(PhantomData<C>); -impl<C: Imxrt10xx, F: crate::ImxrtFlashAlgorithm> Algorithm<C, F> { - pub const fn flash_size_bytes() -> usize { - F::FLASH_CAPACITY_BYTES - } +impl<C: Imxrt10xx, const FLASH_SIZE_BYTES: usize> Algorithm<C, FLASH_SIZE_BYTES> { pub const fn flash_address() -> usize { FLEXSPI1_BASE as _ } - pub const fn sector_size_bytes() -> usize { - F::FLASH_SECTOR_SIZE_BYTES + + pub const fn flash_size_bytes() -> usize { + FLASH_SIZE_BYTES } - pub const fn page_size_bytes() -> usize { - F::FLASH_PAGE_SIZE_BYTES + + pub const fn sector_size_bytes() -> usize { + 4 * 1024 } pub fn initialize() -> Self { C::configure_clocks(C::CCM_INSTANCE, C::CCM_ANALOG_INSTANCE, C::DCDC_INSTANCE); - crate::reset(C::FLEXSPI1_INSTANCE, F::FLASH_CAPACITY_BYTES / 1024, 128); - F::initialize(C::FLEXSPI1_INSTANCE); + crate::flash::initialize( + C::FLEXSPI1_INSTANCE, + FLASH_SIZE_BYTES, + C::FLEXSPI_FIFO_CAPACITY_BYTES, + ); Algorithm(PhantomData) } @@ -53,8 +55,8 @@ impl<C: Imxrt10xx, F: crate::ImxrtFlashAlgorithm> Algorithm<C, F> { } } -impl<C: Imxrt10xx, F: crate::ImxrtFlashAlgorithm> flash_algorithm::FlashAlgorithm - for Algorithm<C, F> +impl<C: Imxrt10xx, const FLASH_SIZE_BYTES: usize> flash_algorithm::FlashAlgorithm + for Algorithm<C, FLASH_SIZE_BYTES> { fn new( _: u32, |
