From f72755d844a14b2c3dfbe086f93a527a8f50f0be Mon Sep 17 00:00:00 2001 From: funman Date: Tue, 8 Jun 2010 18:07:59 +0000 Subject: [PATCH] make meizu-m6sl bootloader build assume 512 bytes sector size as reported by dmesg git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26700 a1c6a512-1295-4272-9138-f99709370657 --- firmware/export/config/meizum6sl.h | 3 ++ .../target/arm/s5l8700/meizu-m6sl/ftl-target.h | 45 +++++++++++++++++ .../target/arm/s5l8700/meizu-m6sl/nand-target.h | 58 ++++++++++++++++++++++ 3 files changed, 106 insertions(+) create mode 100644 firmware/target/arm/s5l8700/meizu-m6sl/ftl-target.h create mode 100644 firmware/target/arm/s5l8700/meizu-m6sl/nand-target.h diff --git a/firmware/export/config/meizum6sl.h b/firmware/export/config/meizum6sl.h index 4e54f80e7..d18a34de1 100644 --- a/firmware/export/config/meizum6sl.h +++ b/firmware/export/config/meizum6sl.h @@ -58,6 +58,9 @@ #define CONFIG_NAND NAND_SAMSUNG +/* The NAND flash has 512-byte sectors, and is our only storage */ +#define SECTOR_SIZE 512 + /* LCD dimensions */ #define LCD_WIDTH 320 #define LCD_HEIGHT 240 diff --git a/firmware/target/arm/s5l8700/meizu-m6sl/ftl-target.h b/firmware/target/arm/s5l8700/meizu-m6sl/ftl-target.h new file mode 100644 index 000000000..ad4dc04db --- /dev/null +++ b/firmware/target/arm/s5l8700/meizu-m6sl/ftl-target.h @@ -0,0 +1,45 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * $Id$ + * + * Copyright (C) 2009 by Michael Sparmann + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY + * KIND, either express or implied. + * + ****************************************************************************/ + +#ifndef __FTL_TARGET_H__ +#define __FTL_TARGET_H__ + +#include "config.h" +#include "inttypes.h" + +#ifdef BOOTLOADER +/* Bootloaders don't need write access */ +#define FTL_READONLY +#endif + +/* Pointer to an info structure regarding the flash type used */ +const struct nand_device_info_type* ftl_nand_type; + +/* Number of banks we detected a chip on */ +uint32_t ftl_banks; + +uint32_t ftl_init(void); +uint32_t ftl_read(uint32_t sector, uint32_t count, void* buffer); +uint32_t ftl_write(uint32_t sector, uint32_t count, const void* buffer); +uint32_t ftl_sync(void); + + +#endif diff --git a/firmware/target/arm/s5l8700/meizu-m6sl/nand-target.h b/firmware/target/arm/s5l8700/meizu-m6sl/nand-target.h new file mode 100644 index 000000000..dee690e5e --- /dev/null +++ b/firmware/target/arm/s5l8700/meizu-m6sl/nand-target.h @@ -0,0 +1,58 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * $Id$ + * + * Copyright (C) 2009 by Michael Sparmann + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY + * KIND, either express or implied. + * + ****************************************************************************/ + +#ifndef __NAND_TARGET_H__ +#define __NAND_TARGET_H__ + +#include "config.h" +#include "inttypes.h" + + +struct nand_device_info_type +{ + uint32_t id; + uint16_t blocks; + uint16_t userblocks; + uint16_t pagesperblock; + uint8_t blocksizeexponent; + uint8_t tunk1; + uint8_t twp; + uint8_t tunk2; + uint8_t tunk3; +} __attribute__((packed)); + +uint32_t nand_read_page(uint32_t bank, uint32_t page, void* databuffer, + void* sparebuffer, uint32_t doecc, + uint32_t checkempty); +uint32_t nand_write_page(uint32_t bank, uint32_t page, void* databuffer, + void* sparebuffer, uint32_t doecc); +uint32_t nand_block_erase(uint32_t bank, uint32_t page); + +const struct nand_device_info_type* nand_get_device_type(uint32_t bank); +uint32_t nand_reset(uint32_t bank); +uint32_t nand_device_init(void); +void nand_set_active(void); +long nand_last_activity(void); +void nand_power_up(void); +void nand_power_down(void); + + +#endif -- 2.11.4.GIT