| /* |
| * Copyright (c) 2012, 2015-2017 The Linux Foundation. All rights reserved. |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License version 2 and |
| * only version 2 as published by the Free Software Foundation. |
| * |
| * This program is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| * GNU General Public License for more details. |
| */ |
| |
| #ifndef QCA_NAND_H |
| #define QCA_NAND_H |
| |
| #define IPQ806x_EBI2ND_BASE (0x1ac00000) |
| #define IPQ40xx_EBI2ND_BASE (0x079b0000) |
| #define IPQ40xx_QPIC_BAM_CTRL (0x07984000) |
| |
| struct ebi2nd_regs { |
| uint32_t flash_cmd; /* 0x00000000 */ |
| uint32_t addr0; /* 0x00000004 */ |
| uint32_t addr1; /* 0x00000008 */ |
| uint32_t flash_chip_select; /* 0x0000000C */ |
| uint32_t exec_cmd; /* 0x00000010 */ |
| uint32_t flash_status; /* 0x00000014 */ |
| uint32_t buffer_status; /* 0x00000018 */ |
| uint32_t sflashc_status; /* 0x0000001C */ |
| uint32_t dev0_cfg0; /* 0x00000020 */ |
| uint32_t dev0_cfg1; /* 0x00000024 */ |
| uint32_t dev0_ecc_cfg; /* 0x00000028 */ |
| uint32_t dev1_ecc_cfg; /* 0x0000002C */ |
| uint32_t dev1_cfg0; /* 0x00000030 */ |
| uint32_t dev1_cfg1; /* 0x00000034 */ |
| uint32_t sflashc_cmd; /* 0x00000038 */ |
| uint32_t sflashc_exec_cmd; /* 0x0000003C */ |
| uint32_t flash_read_id; /* 0x00000040 */ |
| uint32_t flash_read_status; /* 0x00000044 */ |
| uint32_t flash_read_id2; /* 0x00000048 */ |
| uint8_t reserved0[4]; |
| uint32_t flash_config_data; /* 0x00000050 */ |
| uint32_t flash_config; /* 0x00000054 */ |
| uint32_t flash_config_mode; /* 0x00000058 */ |
| uint8_t reserved1[4]; |
| uint32_t flash_config_status; /* 0x00000060 */ |
| uint32_t macro1_reg; /* 0x00000064 */ |
| uint32_t hsddr_nand_cfg; /* 0x00000068 */ |
| uint8_t reserved2[4]; |
| uint32_t xfr_step1; /* 0x00000070 */ |
| uint32_t xfr_step2; /* 0x00000074 */ |
| uint32_t xfr_step3; /* 0x00000078 */ |
| uint32_t xfr_step4; /* 0x0000007C */ |
| uint32_t xfr_step5; /* 0x00000080 */ |
| uint32_t xfr_step6; /* 0x00000084 */ |
| uint32_t xfr_step7; /* 0x00000088 */ |
| uint8_t reserved3[4]; |
| uint32_t genp_reg0; /* 0x00000090 */ |
| uint32_t genp_reg1; /* 0x00000094 */ |
| uint32_t genp_reg2; /* 0x00000098 */ |
| uint32_t genp_reg3; /* 0x0000009C */ |
| uint32_t dev_cmd0; /* 0x000000A0 */ |
| uint32_t dev_cmd1; /* 0x000000A4 */ |
| uint32_t dev_cmd2; /* 0x000000A8 */ |
| uint32_t dev_cmd_vld; /* 0x000000AC */ |
| uint8_t reserved4[16]; |
| uint32_t addr2; /* 0x000000C0 */ |
| uint32_t addr3; /* 0x000000C4 */ |
| uint32_t addr4; /* 0x000000C8 */ |
| uint32_t addr5; /* 0x000000CC */ |
| uint32_t dev_cmd3; /* 0x000000D0 */ |
| uint32_t dev_cmd4; /* 0x000000D4 */ |
| uint32_t dev_cmd5; /* 0x000000D8 */ |
| uint32_t dev_cmd6; /* 0x000000DC */ |
| uint32_t sflashc_burst_cfg; /* 0x000000E0 */ |
| uint32_t addr6; /* 0x000000E4 */ |
| uint32_t erased_cw_detect_cfg; /* 0x000000E8 */ |
| uint32_t erased_cw_detect_status; /* 0x000000EC */ |
| uint32_t ebi2_ecc_buf_cfg; /* 0x000000F0 */ |
| uint32_t dbg_cfg; /* 0x000000F4 */ |
| uint32_t hw_profile_cfg; /* 0x000000F8 */ |
| uint32_t hw_info; /* 0x000000FC */ |
| uint32_t buffn_acc[144]; /* 0x00000100 */ |
| uint8_t reserved5[3008]; /* 0x00000340 */ |
| uint32_t qpic_nand_ctrl; /* 0x00000f00 */ |
| uint32_t qpic_nand_status; /* 0x00000f04 */ |
| uint32_t qpic_nand_version; /* 0x00000f08 */ |
| uint32_t qpic_nand_debug; /* 0x00000f0c */ |
| uint32_t qpic_irq_stts; /* 0x00000f10 */ |
| uint32_t qpic_irq_clr; /* 0x00000f14 */ |
| uint32_t qpic_irq_en; /* 0x00000f18 */ |
| uint32_t qpic_nand_mutex; /* 0x00000f1c */ |
| uint32_t qpic_nand_read_location_0; /* 0x00000f20 */ |
| uint32_t qpic_nand_read_location_1; /* 0x00000f24 */ |
| uint32_t qpic_nand_read_location_2; /* 0x00000f28 */ |
| uint32_t qpic_nand_read_location_3; /* 0x00000f2c */ |
| uint32_t qpic_nand_read_location_4; /* 0x00000f30 */ |
| uint8_t reserved6[12]; /* 0x00000f34 */ |
| uint32_t qpic_nand_config_bits; /* 0x00000f40 */ |
| uint32_t qpic_nand_mpu_bypass; /* 0x00000f44 */ |
| }; |
| |
| #define QCA_NAND_IPQ 0 |
| #define QCA_NAND_QPIC 1 |
| |
| /* Register: NAND_DEVn_CFG0 */ |
| #define SET_RD_MODE_AFTER_STATUS_MASK 0x80000000 |
| #define SET_RD_MODE_AFTER_STATUS_SEND_READ_CMD 0x80000000 |
| #define SET_RD_MODE_AFTER_STATUS_DO_NOT_SEND 0x00000000 |
| #define SET_RD_MODE_AFTER_STATUS(i) ((i) << 31) |
| |
| #define STATUS_BFR_READ_MASK 0x40000000 |
| #define STATUS_BFR_READ_DO_NOT_READ_STATUS 0x00000000 |
| #define STATUS_BFR_READ_READ_STATUS_BEFORE_DATA 0x40000000 |
| #define STATUS_BFR_READ(i) ((i) << 30) |
| |
| #define NUM_ADDR_CYCLES_MASK 0x38000000 |
| #define NUM_ADDR_CYCLES_NO_ADDRESS_CYCLES 0x00000000 |
| #define NUM_ADDR_CYCLES(i) ((i) << 27) |
| |
| #define SPARE_SIZE_BYTES_MASK 0x07800000 |
| #define SPARE_SIZE_BYTES(i) ((i) << 23) |
| |
| #define RS_ECC_PARITY_SIZE_BYTES_MASK 0x00780000 |
| #define RS_ECC_PARITY_SIZE_BYTES(i) ((i) << 19) |
| |
| #define UD_SIZE_BYTES_MASK 0x0007fe00 |
| #define UD_SIZE_BYTES(i) ((i) << 9) |
| |
| #define CW_PER_PAGE_MASK 0x000001c0 |
| #define CW_PER_PAGE_1_CODEWORD_PER_PAGE 0x00000000 |
| #define CW_PER_PAGE_2_CODEWORDS_PER_PAGE 0x00000040 |
| #define CW_PER_PAGE_3_CODEWORDS_PER_PAGE 0x00000080 |
| #define CW_PER_PAGE_4_CODEWORDS_PER_PAGE 0x000000C0 |
| #define CW_PER_PAGE_5_CODEWORDS_PER_PAGE 0x00000100 |
| #define CW_PER_PAGE_6_CODEWORDS_PER_PAGE 0x00000140 |
| #define CW_PER_PAGE_7_CODEWORDS_PER_PAGE 0x00000180 |
| #define CW_PER_PAGE_8_CODEWORDS_PER_PAGE 0x000001C0 |
| #define CW_PER_PAGE(i) ((i) << 6) |
| |
| #define MSB_CW_PER_PAGE_MASK 0x00000020 |
| #define MSB_CW_PER_PAGE(i) ((i) << 5) |
| |
| #define DISABLE_STATUS_AFTER_WRITE_MASK 0x00000010 |
| #define DISABLE_STATUS_AFTER_WRITE(i) ((i) << 4) |
| |
| #define BUSY_TIMEOUT_ERROR_SELECT_MASK 0x0000000f |
| #define BUSY_TIMEOUT_ERROR_SELECT_16_MS 0x00000000 |
| #define BUSY_TIMEOUT_ERROR_SELECT_32_MS 0x00000001 |
| #define BUSY_TIMEOUT_ERROR_SELECT_64_MS 0x00000002 |
| #define BUSY_TIMEOUT_ERROR_SELECT_128_MS 0x00000003 |
| #define BUSY_TIMEOUT_ERROR_SELECT_256_MS 0x00000004 |
| #define BUSY_TIMEOUT_ERROR_SELECT_512_MS 0x00000005 |
| #define BUSY_TIMEOUT_ERROR_SELECT_1_SEC 0x00000006 |
| #define BUSY_TIMEOUT_ERROR_SELECT_2_SEC 0x00000007 |
| #define BUSY_TIMEOUT_ERROR_SELECT_1_MS 0x00000008 |
| #define BUSY_TIMEOUT_ERROR_SELECT(i) ((i) << 0) |
| |
| |
| /* Register: NAND_DEVn_CFG1 */ |
| #define RS_ECC_MODE_MASK 0x30000000 |
| #define RS_ECC_MODE(i) ((i) << 28) |
| |
| #define ENABLE_BCH_ECC_MASK 0x08000000 |
| #define ENABLE_BCH_ECC_ENABLES_TAVOR_ECC_CORE_WITH_BCH_ENCODING_DECODING 0x08000000 |
| #define ENABLE_BCH_ECC(i) ((i) << 27) |
| |
| #define DISABLE_ECC_RESET_AFTER_OPDONE_MASK 0x02000000 |
| #define DISABLE_ECC_RESET_AFTER_OPDONE(i) ((i) << 25) |
| |
| #define ECC_DECODER_CGC_EN_MASK 0x01000000 |
| #define ECC_DECODER_CGC_EN_FREE_RUNNING_CLOCK 0x01000000 |
| #define ECC_DECODER_CGC_EN(i) ((i) << 24) |
| |
| #define ECC_ENCODER_CGC_EN_MASK 0x00800000 |
| #define ECC_ENCODER_CGC_EN_FREE_RUNNING_CLOCK 0x00800000 |
| #define ECC_ENCODER_CGC_EN(i) ((i) << 23) |
| |
| #define WR_RD_BSY_GAP_MASK 0x007e0000 |
| #define WR_RD_BSY_GAP_2_CLOCK_CYCLE_GAP 0x00000000 |
| #define WR_RD_BSY_GAP_4_CLOCK_CYCLES_GAP 0x00020000 |
| #define WR_RD_BSY_GAP_6_CLOCK_CYCLES_GAP 0x00040000 |
| #define WR_RD_BSY_GAP_8_CLOCK_CYCLES_GAP 0x00060000 |
| #define WR_RD_BSY_GAP_10_CLOCK_CYCLES_GAP 0x00080000 |
| #define WR_RD_BSY_GAP_128_CLOCK_CYCLES_GAP 0x007E0000 |
| #define WR_RD_BSY_GAP(i) ((i) << 17) |
| |
| #define BAD_BLOCK_IN_SPARE_AREA_MASK 0x00010000 |
| #define BAD_BLOCK_IN_SPARE_AREA_IN_USER_DATA_AREA 0x00000000 |
| #define BAD_BLOCK_IN_SPARE_AREA_IN_SPARE_AREA 0x00010000 |
| #define BAD_BLOCK_IN_SPARE_AREA(i) ((i) << 16) |
| |
| #define BAD_BLOCK_BYTE_NUM_MASK 0x0000ffc0 |
| #define BAD_BLOCK_BYTE_NUM(i) ((i) << 6) |
| |
| #define CS_ACTIVE_BSY_MASK 0x00000020 |
| #define CS_ACTIVE_BSY_ASSERT_CS_DURING_BUSY 0x00000020 |
| #define CS_ACTIVE_BSY_ALLOW_CS_DE_ASSERTION 0x00000000 |
| #define CS_ACTIVE_BSY(i) ((i) << 5) |
| |
| #define NAND_RECOVERY_CYCLES_MASK 0x0000001c |
| #define NAND_RECOVERY_CYCLES_1_RECOVERY_CYCLE 0x00000000 |
| #define NAND_RECOVERY_CYCLES_2_RECOVERY_CYCLES 0x00000004 |
| #define NAND_RECOVERY_CYCLES_3_RECOVERY_CYCLES 0x00000008 |
| #define NAND_RECOVERY_CYCLES_8_RECOVERY_CYCLES 0x0000001C |
| #define NAND_RECOVERY_CYCLES(i) ((i) << 2) |
| |
| #define WIDE_FLASH_MASK 0x00000002 |
| #define WIDE_FLASH_8_BIT_DATA_BUS 0x00000000 |
| #define WIDE_FLASH_16_BIT_DATA_BUS 0x00000002 |
| #define WIDE_FLASH(i) ((i) << 1) |
| |
| #define ECC_DISABLE_MASK 0x00000001 |
| #define ECC_DISABLE_ECC_ENABLED 0x00000000 |
| #define ECC_DISABLE_ECC_DISABLED 0x00000001 |
| #define ECC_DISABLE(i) ((i) << 0) |
| |
| |
| /* Register: NAND_DEVn_ECC_CFG */ |
| #define ECC_FORCE_CLK_OPEN_MASK 0x40000000 |
| #define ECC_FORCE_CLK_OPEN(i) ((i) << 30) |
| |
| #define ECC_DEC_CLK_SHUTDOWN_MASK 0x20000000 |
| #define ECC_DEC_CLK_SHUTDOWN(i) ((i) << 29) |
| |
| #define ECC_ENC_CLK_SHUTDOWN_MASK 0x10000000 |
| #define ECC_ENC_CLK_SHUTDOWN(i) ((i) << 28) |
| |
| #define ECC_NUM_DATA_BYTES_MASK 0x03ff0000 |
| #define ECC_NUM_DATA_BYTES_516_BYTES 0x02040000 |
| #define ECC_NUM_DATA_BYTES_517_BYTES 0x02050000 |
| #define ECC_NUM_DATA_BYTES(i) ((i) << 16) |
| |
| #define BCH_ECC_PARITY_SIZE_BYTES_MASK 0x00001f00 |
| #define BCH_ECC_PARITY_SIZE_BYTES(i) ((i) << 8) |
| |
| #define BCH_ECC_MODE_MASK 0x00000030 |
| #define BCH_ECC_MODE_8_BIT_ECC_ERROR_DETECTION_CORRECTION 0x00000010 |
| #define BCH_ECC_MODE_12_BIT_ECC_ERROR_DETECTION_CORRECTION 0x00000020 |
| #define BCH_ECC_MODE_16_BIT_ECC_ERROR_DETECTION_CORRECTION 0x00000030 |
| #define BCH_ECC_MODE(i) ((i) << 4) |
| |
| #define ECC_SW_RESET_MASK 0x00000002 |
| #define ECC_SW_RESET_SOFTWARE_RESET_TO_ECC 0x00000002 |
| #define ECC_SW_RESET(i) ((i) << 1) |
| |
| #define BCH_ECC_DISABLE_MASK 0x00000001 |
| #define BCH_ECC_DISABLE_ECC_ENABLED 0x00000000 |
| #define BCH_ECC_DISABLE(i) ((i) << 0) |
| |
| |
| /* Register: EBI2_ECC_BUF_CFG */ |
| #define NUM_STEPS_MASK 0x000003ff |
| #define NUM_STEPS(i) ((i) << 0) |
| |
| |
| /* Register: FLASH_DEV_CMD_VLD */ |
| #define SEQ_READ_START_VLD_MASK 0x00000010 |
| #define SEQ_READ_START_VLD(i) ((i) << 4) |
| |
| #define ERASE_START_VLD_MASK 0x00000008 |
| #define ERASE_START_VLD(i) ((i) << 3) |
| |
| #define WRITE_START_VLD_MASK 0x00000004 |
| #define WRITE_START_VLD(i) ((i) << 2) |
| |
| #define READ_STOP_VLD_MASK 0x00000002 |
| #define READ_STOP_VLD(i) ((i) << 1) |
| |
| #define READ_START_VLD_MASK 0x00000001 |
| #define READ_START_VLD(i) ((i) << 0) |
| |
| |
| /* Register: NAND_ADDR0 */ |
| #define DEV_ADDR0_MASK 0xffffffff |
| #define DEV_ADDR0(i) ((i) << 0) |
| |
| |
| /* Register: NAND_ADDR1 */ |
| #define DEV_ADDR1_MASK 0xffffffff |
| #define DEV_ADDR1(i) ((i) << 0) |
| |
| |
| /* Register: NANDC_EXEC_CMD */ |
| #define EXEC_CMD_MASK 0x00000001 |
| #define EXEC_CMD_EXECUTE_THE_COMMAND 0x00000001 |
| #define EXEC_CMD(i) ((i) << 0) |
| |
| |
| /* Register: NAND_ERASED_CW_DETECT_CFG */ |
| #define ERASED_CW_ECC_MASK_MASK 0x00000002 |
| #define ERASED_CW_ECC_MASK(i) ((i) << 1) |
| |
| #define AUTO_DETECT_RES_MASK 0x00000001 |
| #define AUTO_DETECT_RES(i) ((i) << 0) |
| |
| |
| /* Register: NAND_ERASED_CW_DETECT_STATUS */ |
| #define PAGE_ERASED_MASK 0x00000020 |
| #define PAGE_ERASED(i) ((i) << 5) |
| |
| #define CODEWORD_ERASED_MASK 0x00000010 |
| #define CODEWORD_ERASED(i) ((i) << 4) |
| |
| #define ERASED_CW_ECC_MASK_MASK 0x00000002 |
| #define ERASED_CW_ECC_MASK(i) ((i) << 1) |
| |
| #define AUTO_DETECT_RES_MASK 0x00000001 |
| #define AUTO_DETECT_RES(i) ((i) << 0) |
| |
| |
| /* Register: NAND_FLASH_CMD */ |
| #define ONE_NAND_INTR_STATUS_MASK 0x00040000 |
| #define ONE_NAND_INTR_STATUS(i) ((i) << 18) |
| |
| #define ONE_NAND_HOST_CFG_MASK 0x00020000 |
| #define ONE_NAND_HOST_CFG(i) ((i) << 17) |
| |
| #define AUTO_DETECT_DATA_XFR_SIZE_MASK 0x0001ff80 |
| #define AUTO_DETECT_DATA_XFR_SIZE(i) ((i) << 7) |
| |
| #define AUTO_DETECT_MASK 0x00000040 |
| #define AUTO_DETECT(i) ((i) << 6) |
| |
| #define LAST_PAGE_MASK 0x00000020 |
| #define LAST_PAGE(i) ((i) << 5) |
| |
| #define PAGE_ACC_MASK 0x00000010 |
| #define PAGE_ACC_PAGE_ACCESS_COMMAND 0x00000010 |
| #define PAGE_ACC_NON_PAGE_ACCESS_COMMAND 0x00000000 |
| #define PAGE_ACC(i) ((i) << 4) |
| |
| #define OP_CMD_MASK 0x0000000f |
| #define OP_CMD_RESERVED_0 0x00000000 |
| #define OP_CMD_ABORT_TRANSACTION 0x00000001 |
| #define OP_CMD_PAGE_READ 0x00000002 |
| #define OP_CMD_PAGE_READ_WITH_ECC 0x00000003 |
| #define OP_CMD_PAGE_READ_WITH_ECC_SPARE 0x00000004 |
| #define OP_CMD_RESERVED_5 0x00000005 |
| #define OP_CMD_PROGRAM_PAGE 0x00000006 |
| #define OP_CMD_PAGE_PROGRAM_WITH_ECC 0x00000007 |
| #define OP_CMD_RESERVED_8 0x00000008 |
| #define OP_CMD_PROGRAM_PAGE_WITH_SPARE 0x00000009 |
| #define OP_CMD_BLOCK_ERASE 0x0000000A |
| #define OP_CMD_FETCH_ID 0x0000000B |
| #define OP_CMD_CHECK_STATUS 0x0000000C |
| #define OP_CMD_RESET_NAND_FLASH_DEVICE 0x0000000D |
| #define OP_CMD_RESERVED_E 0x0000000E |
| #define OP_CMD_RESERVED_F 0x0000000F |
| #define OP_CMD(i) ((i) << 0) |
| |
| |
| /* Register: NAND_FLASH_STATUS */ |
| #define DEV_STATUS_MASK 0xffff0000 |
| #define DEV_STATUS(i) ((i) << 16) |
| |
| #define CODEWORD_CNTR_MASK 0x0000f000 |
| #define CODEWORD_CNTR(i) ((i) << 12) |
| |
| #define DEVICE_2KBYTE_MASK 0x00000800 |
| #define DEVICE_2KBYTE_2K_BYTE_PAGE_DEVICE 0x00000800 |
| #define DEVICE_2KBYTE_NOT_A_2K_BYTE_PAGE_DEVICE 0x00000000 |
| #define DEVICE_2KBYTE(i) ((i) << 11) |
| |
| #define DEVICE_512BYTE_MASK 0x00000400 |
| #define DEVICE_512BYTE_512_BYTE_PAGE_DEVICE 0x00000400 |
| #define DEVICE_512BYTE_NOT_A_512_BYTE_PAGE_DEVICE 0x00000000 |
| #define DEVICE_512BYTE(i) ((i) << 10) |
| |
| #define AUTO_DETECT_DONE_MASK 0x00000200 |
| #define AUTO_DETECT_DONE(i) ((i) << 9) |
| |
| #define MPU_ERROR_MASK 0x00000100 |
| #define MPU_ERROR_MPU_ERROR_FOR_THE_ACCESS 0x00000100 |
| #define MPU_ERROR_NO_ERROR 0x00000000 |
| #define MPU_ERROR(i) ((i) << 8) |
| |
| #define PROG_ERASE_OP_RESULT_MASK 0x00000080 |
| #define PROG_ERASE_OP_RESULT_SUCCESSFUL 0x00000000 |
| #define PROG_ERASE_OP_RESULT_NOT_SUCCESSFUL 0x00000080 |
| #define PROG_ERASE_OP_RESULT(i) ((i) << 7) |
| |
| #define NANDC_TIMEOUT_ERR_MASK 0x00000040 |
| #define NANDC_TIMEOUT_ERR_NO_ERROR 0x00000000 |
| #define NANDC_TIMEOUT_ERR_ERROR 0x00000040 |
| #define NANDC_TIMEOUT_ERR(i) ((i) << 6) |
| |
| #define READY_BSY_N_MASK 0x00000020 |
| #define READY_BSY_N_EXTERNAL_FLASH_IS_BUSY 0x00000000 |
| #define READY_BSY_N_EXTERNAL_FLASH_IS_READY 0x00000020 |
| #define READY_BSY_N(i) ((i) << 5) |
| |
| #define OP_ERR_MASK 0x00000010 |
| #define OP_ERR(i) ((i) << 4) |
| |
| #define OPER_STATUS_MASK 0x0000000f |
| #define OPER_STATUS_IDLE_STATE 0x00000000 |
| #define OPER_STATUS_ABORT_TRANSACTION 0x00000001 |
| #define OPER_STATUS_PAGE_READ 0x00000002 |
| #define OPER_STATUS_PAGE_READ_WITH_ECC 0x00000003 |
| #define OPER_STATUS_PAGE_READ_WITH_ECC_AND_SPARE_DATA 0x00000004 |
| #define OPER_STATUS_SEQUENTIAL_PAGE_READ 0x00000005 |
| #define OPER_STATUS_PROGRAM_PAGE 0x00000006 |
| #define OPER_STATUS_PROGRAM_PAGE_WITH_ECC 0x00000007 |
| #define OPER_STATUS_RESERVED_PROGRAMMING 0x00000008 |
| #define OPER_STATUS_PROGRAM_PAGE_WITH_SPARE 0x00000009 |
| #define OPER_STATUS_BLOCK_ERASE 0x0000000A |
| #define OPER_STATUS_FETCH_ID 0x0000000B |
| #define OPER_STATUS_CHECK_STATUS 0x0000000C |
| #define OPER_STATUS_RESET_FLASH_DEVICE 0x0000000D |
| #define OPER_STATUS(i) ((i) << 0) |
| |
| |
| /* Register: NANDC_BUFFER_STATUS */ |
| #define BAD_BLOCK_STATUS_MASK 0xffff0000 |
| #define BAD_BLOCK_STATUS(i) ((i) << 16) |
| |
| #define XFR_STEP2_REG_UPDATE_DONE_MASK 0x00000200 |
| #define XFR_STEP2_REG_UPDATE_DONE(i) ((i) << 9) |
| |
| #define UNCORRECTABLE_MASK 0x00000100 |
| #define UNCORRECTABLE(i) ((i) << 8) |
| |
| #define NUM_ERRORS_MASK 0x0000001f |
| #define NUM_ERRORS(i) ((i) << 0) |
| |
| |
| /* Register: FLASH_DEV_CMD1 */ |
| #define SEQ_READ_MODE_START_MASK 0xff000000 |
| #define SEQ_READ_MODE_START(i) ((i) << 24) |
| |
| #define SEQ_READ_MODE_ADDR_MASK 0x00ff0000 |
| #define SEQ_READ_MODE_ADDR(i) ((i) << 16) |
| |
| #define READ_START_MASK 0x0000ff00 |
| #define READ_START(i) ((i) << 8) |
| |
| #define READ_ADDR_MASK 0x000000ff |
| #define READ_ADDR(i) ((i) << 0) |
| |
| /* Register: NAND_DEBUG */ |
| #define BAM_MODE_BIT_RESET (1 << 31) |
| |
| /* Register: NAND_CTRL */ |
| #define BAM_MODE_EN 0x1 |
| |
| /* Register: BAM_CTRL */ |
| #define BAM_CTRL_CGC 0x00020000 |
| |
| #endif |