/*
 * This file is part of the flashrom project.
 *
 * Copyright (C) 2009 Carl-Daniel Hailfinger
 *
 * 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; version 2 of the License.
 *
 * 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 __CHIPDRIVERS_SPI_H__
#define __CHIPDRIVERS_SPI_H__ 1

#include <stdint.h>

struct flashprog_flashctx;

/* spi.c */
int spi_aai_write(struct flashprog_flashctx *, const uint8_t *buf, unsigned int start, unsigned int len);
int spi_chip_write_256(struct flashprog_flashctx *, const uint8_t *buf, unsigned int start, unsigned int len);
int spi_chip_read(struct flashprog_flashctx *, uint8_t *buf, unsigned int start, int unsigned len);

/* spi25.c */
int spi_simple_write_cmd(struct flashprog_flashctx *, uint8_t op, unsigned int poll_delay);
int probe_spi_rdid(struct flashprog_flashctx *);
int probe_spi_rdid4(struct flashprog_flashctx *);
int probe_spi_rems(struct flashprog_flashctx *);
int probe_spi_res1(struct flashprog_flashctx *);
int probe_spi_res2(struct flashprog_flashctx *);
int probe_spi_res3(struct flashprog_flashctx *);
int probe_spi_at25f(struct flashprog_flashctx *);
int spi_write_enable(struct flashprog_flashctx *);
int spi_write_disable(struct flashprog_flashctx *);
int spi_block_erase_20(struct flashprog_flashctx *, unsigned int addr, unsigned int blocklen);
int spi_block_erase_21(struct flashprog_flashctx *, unsigned int addr, unsigned int blocklen);
int spi_block_erase_50(struct flashprog_flashctx *, unsigned int addr, unsigned int blocklen);
int spi_block_erase_52(struct flashprog_flashctx *, unsigned int addr, unsigned int blocklen);
int spi_block_erase_53(struct flashprog_flashctx *, unsigned int addr, unsigned int blocklen);
int spi_block_erase_5c(struct flashprog_flashctx *, unsigned int addr, unsigned int blocklen);
int spi_block_erase_60(struct flashprog_flashctx *, unsigned int addr, unsigned int blocklen);
int spi_block_erase_62(struct flashprog_flashctx *, unsigned int addr, unsigned int blocklen);
int spi_block_erase_81(struct flashprog_flashctx *, unsigned int addr, unsigned int blocklen);
int spi_block_erase_c4(struct flashprog_flashctx *, unsigned int addr, unsigned int blocklen);
int spi_block_erase_c7(struct flashprog_flashctx *, unsigned int addr, unsigned int blocklen);
int spi_block_erase_d7(struct flashprog_flashctx *, unsigned int addr, unsigned int blocklen);
int spi_block_erase_d8(struct flashprog_flashctx *, unsigned int addr, unsigned int blocklen);
int spi_block_erase_db(struct flashprog_flashctx *, unsigned int addr, unsigned int blocklen);
int spi_block_erase_dc(struct flashprog_flashctx *, unsigned int addr, unsigned int blocklen);
int spi_chip_write_1(struct flashprog_flashctx *, const uint8_t *buf, unsigned int start, unsigned int len);
int spi_nbyte_read(struct flashprog_flashctx *, uint8_t *dst, unsigned int addr, unsigned int len);
int spi_write_chunked(struct flashprog_flashctx *, const uint8_t *buf, unsigned int start, unsigned int len, unsigned int chunksize);
int spi_set_extended_address(struct flashprog_flashctx *, uint8_t addr_high);

enum preparation_steps;
int spi_prepare_io(struct flashprog_flashctx *, enum preparation_steps);
void spi_finish_io(struct flashprog_flashctx *);

enum flash_reg;
enum wrsr_target;
int spi_read_register(const struct flashprog_flashctx *, enum flash_reg reg, uint8_t *value);
int spi_write_register(const struct flashprog_flashctx *, enum flash_reg reg, uint8_t value, enum wrsr_target);
void spi_prettyprint_status_register_bit(uint8_t status, int bit);
int spi_prettyprint_status_register_plain(struct flashprog_flashctx *);
int spi_prettyprint_status_register_default_welwip(struct flashprog_flashctx *);
int spi_prettyprint_status_register_bp1_srwd(struct flashprog_flashctx *);
int spi_prettyprint_status_register_bp2_srwd(struct flashprog_flashctx *);
int spi_prettyprint_status_register_bp3_srwd(struct flashprog_flashctx *);
int spi_prettyprint_status_register_bp4_srwd(struct flashprog_flashctx *);
int spi_prettyprint_status_register_bp2_bpl(struct flashprog_flashctx *);
int spi_prettyprint_status_register_bp2_tb_bpl(struct flashprog_flashctx *);
int spi_disable_blockprotect(struct flashprog_flashctx *);
int spi_disable_blockprotect_bp1_srwd(struct flashprog_flashctx *);
int spi_disable_blockprotect_bp2_srwd(struct flashprog_flashctx *);
int spi_disable_blockprotect_bp3_srwd(struct flashprog_flashctx *);
int spi_disable_blockprotect_bp4_srwd(struct flashprog_flashctx *);
int spi_prettyprint_status_register_amic_a25l032(struct flashprog_flashctx *);
int spi_prettyprint_status_register_at25df(struct flashprog_flashctx *);
int spi_prettyprint_status_register_at25df_sec(struct flashprog_flashctx *);
int spi_prettyprint_status_register_at25f(struct flashprog_flashctx *);
int spi_prettyprint_status_register_at25f512a(struct flashprog_flashctx *);
int spi_prettyprint_status_register_at25f512b(struct flashprog_flashctx *);
int spi_prettyprint_status_register_at25f4096(struct flashprog_flashctx *);
int spi_prettyprint_status_register_at25fs010(struct flashprog_flashctx *);
int spi_prettyprint_status_register_at25fs040(struct flashprog_flashctx *);
int spi_prettyprint_status_register_at26df081a(struct flashprog_flashctx *);
int spi_disable_blockprotect_at2x_global_unprotect(struct flashprog_flashctx *);
int spi_disable_blockprotect_at2x_global_unprotect_sec(struct flashprog_flashctx *);
int spi_disable_blockprotect_at25f(struct flashprog_flashctx *);
int spi_disable_blockprotect_at25f512a(struct flashprog_flashctx *);
int spi_disable_blockprotect_at25f512b(struct flashprog_flashctx *);
int spi_disable_blockprotect_at25fs010(struct flashprog_flashctx *);
int spi_disable_blockprotect_at25fs040(struct flashprog_flashctx *);
int spi_prettyprint_status_register_en25s_wp(struct flashprog_flashctx *);
int spi_prettyprint_status_register_n25q(struct flashprog_flashctx *);
int spi_disable_blockprotect_n25q(struct flashprog_flashctx *);
int spi_prettyprint_status_register_bp2_ep_srwd(struct flashprog_flashctx *);
int spi_disable_blockprotect_bp2_ep_srwd(struct flashprog_flashctx *);
int spi_prettyprint_status_register_sst25(struct flashprog_flashctx *);
int spi_prettyprint_status_register_sst25vf016(struct flashprog_flashctx *);
int spi_prettyprint_status_register_sst25vf040b(struct flashprog_flashctx *);
int spi_disable_blockprotect_sst26_global_unprotect(struct flashprog_flashctx *);

/* at45db.c */
int spi_prepare_at45db(struct flashprog_flashctx *, enum preparation_steps);
int spi_prettyprint_status_register_at45db(struct flashprog_flashctx *);
int spi_disable_blockprotect_at45db(struct flashprog_flashctx *);
int spi_read_at45db(struct flashprog_flashctx *, uint8_t *buf, unsigned int start, unsigned int len);
int spi_read_at45db_e8(struct flashprog_flashctx *, uint8_t *buf, unsigned int start, unsigned int len);
int spi_write_at45db(struct flashprog_flashctx *, const uint8_t *buf, unsigned int start, unsigned int len);
int spi_erase_at45db_page(struct flashprog_flashctx *, unsigned int addr, unsigned int blocklen);
int spi_erase_at45db_block(struct flashprog_flashctx *, unsigned int addr, unsigned int blocklen);
int spi_erase_at45db_sector(struct flashprog_flashctx *, unsigned int addr, unsigned int blocklen);
int spi_erase_at45db_chip(struct flashprog_flashctx *, unsigned int addr, unsigned int blocklen);
int spi_erase_at45cs_sector(struct flashprog_flashctx *, unsigned int addr, unsigned int blocklen);

/* spi95.c */
int probe_spi_st95(struct flashprog_flashctx *);
int spi_block_erase_emulation(struct flashprog_flashctx *, unsigned int addr, unsigned int blocklen);

/* writeprotect_ranges.c */
struct wp_bits;
void decode_range_spi25(size_t *start, size_t *len, const struct wp_bits *, size_t chip_len);
void decode_range_spi25_64k_block(size_t *start, size_t *len, const struct wp_bits *, size_t chip_len);
void decode_range_spi25_bit_cmp(size_t *start, size_t *len, const struct wp_bits *, size_t chip_len);
void decode_range_spi25_2x_block(size_t *start, size_t *len, const struct wp_bits *, size_t chip_len);

/* sfdp.c */
int probe_spi_sfdp(struct flashprog_flashctx *);

#endif /* !__CHIPDRIVERS_SPI_H__ */
