56 LOG_ERROR(
"target must be halted to use S3C24XX NAND flash controller");
79 uint32_t nfdata = s3c24xx_info->
data;
82 LOG_INFO(
"%s: reading data: %p, %p, %d", __func__, nand, data, data_size);
85 LOG_ERROR(
"target must be halted to use S3C24XX NAND flash controller");
89 while (data_size >= 4) {
101 while (data_size > 0) {
115 uint32_t nfdata = s3c24xx_info->
data;
119 LOG_ERROR(
"target must be halted to use S3C24XX NAND flash controller");
123 while (data_size >= 4) {
131 while (data_size > 0) {
143 .nand_device_command = &s3c2440_nand_device_command,
void alive_sleep(uint64_t ms)
#define LOG_ERROR(expr ...)
#define LOG_INFO(expr ...)
#define ERROR_NAND_OPERATION_FAILED
int s3c2440_read_block_data(struct nand_device *nand, uint8_t *data, int data_size)
int s3c2440_nand_ready(struct nand_device *nand, int timeout)
struct nand_flash_controller s3c2440_nand_controller
static int s3c2440_init(struct nand_device *nand)
int s3c2440_write_block_data(struct nand_device *nand, uint8_t *data, int data_size)
NAND_DEVICE_COMMAND_HANDLER(s3c2440_nand_device_command)
int s3c24xx_write_data(struct nand_device *nand, uint16_t data)
int s3c24xx_reset(struct nand_device *nand)
int s3c24xx_address(struct nand_device *nand, uint8_t address)
int s3c24xx_command(struct nand_device *nand, uint8_t command)
int s3c24xx_read_data(struct nand_device *nand, void *data)
#define CALL_S3C24XX_DEVICE_COMMAND(d, i)
#define s3c24xx_read_page
#define s3c24xx_write_page
#define S3C2440_NFCONF_TWRPH0(x)
#define S3C2440_NFCONT_INITECC
#define S3C2440_NFCONT_ENABLE
#define S3C2440_NFSTAT_READY
#define S3C2440_NFCONF_TACLS(x)
#define S3C2440_NFCONF_TWRPH1(x)
Interface for NAND flash controllers.
const char * name
Driver name that is used to select it from configuration files.
int target_write_u8(struct target *target, target_addr_t address, uint8_t value)
int target_read_u8(struct target *target, target_addr_t address, uint8_t *value)
int target_write_u32(struct target *target, target_addr_t address, uint32_t value)
int target_read_u32(struct target *target, target_addr_t address, uint32_t *value)
static uint32_t le_to_h_u32(const uint8_t *buf)
static struct ublast_lowlevel_priv info