diff --git a/include/chipdrivers.h b/include/chipdrivers.h
index ceb7064..10fd843 100644
--- a/include/chipdrivers.h
+++ b/include/chipdrivers.h
@@ -22,124 +22,12 @@
 
 #include "flash.h"	/* for chipaddr and flashctx */
 
-/* spi.c */
-int spi_aai_write(struct flashctx *flash, const uint8_t *buf, unsigned int start, unsigned int len);
-int spi_chip_write_256(struct flashctx *flash, const uint8_t *buf, unsigned int start, unsigned int len);
-int spi_chip_read(struct flashctx *flash, uint8_t *buf, unsigned int start, int unsigned len);
-
-/* spi25.c */
-int spi_simple_write_cmd(struct flashctx *flash, uint8_t op, unsigned int poll_delay);
-int probe_spi_rdid(struct flashctx *flash);
-int probe_spi_rdid4(struct flashctx *flash);
-int probe_spi_rems(struct flashctx *flash);
-int probe_spi_res1(struct flashctx *flash);
-int probe_spi_res2(struct flashctx *flash);
-int probe_spi_res3(struct flashctx *flash);
-int probe_spi_at25f(struct flashctx *flash);
-int spi_write_enable(struct flashctx *flash);
-int spi_write_disable(struct flashctx *flash);
-int spi_block_erase_20(struct flashctx *flash, unsigned int addr, unsigned int blocklen);
-int spi_block_erase_21(struct flashctx *flash, unsigned int addr, unsigned int blocklen);
-int spi_block_erase_50(struct flashctx *flash, unsigned int addr, unsigned int blocklen);
-int spi_block_erase_52(struct flashctx *flash, unsigned int addr, unsigned int blocklen);
-int spi_block_erase_53(struct flashctx *flash, unsigned int addr, unsigned int blocklen);
-int spi_block_erase_5c(struct flashctx *flash, unsigned int addr, unsigned int blocklen);
-int spi_block_erase_60(struct flashctx *flash, unsigned int addr, unsigned int blocklen);
-int spi_block_erase_62(struct flashctx *flash, unsigned int addr, unsigned int blocklen);
-int spi_block_erase_81(struct flashctx *flash, unsigned int addr, unsigned int blocklen);
-int spi_block_erase_c4(struct flashctx *flash, unsigned int addr, unsigned int blocklen);
-int spi_block_erase_c7(struct flashctx *flash, unsigned int addr, unsigned int blocklen);
-int spi_block_erase_d7(struct flashctx *flash, unsigned int addr, unsigned int blocklen);
-int spi_block_erase_d8(struct flashctx *flash, unsigned int addr, unsigned int blocklen);
-int spi_block_erase_db(struct flashctx *flash, unsigned int addr, unsigned int blocklen);
-int spi_block_erase_dc(struct flashctx *flash, unsigned int addr, unsigned int blocklen);
-erasefunc_t *spi25_get_erasefn_from_opcode(uint8_t opcode);
-const uint8_t *spi_get_opcode_from_erasefn(erasefunc_t *func, bool *native_4ba);
-int spi_chip_write_1(struct flashctx *flash, const uint8_t *buf, unsigned int start, unsigned int len);
-int spi_nbyte_read(struct flashctx *flash, uint8_t *dst, unsigned int addr, unsigned int len);
-int spi_write_chunked(struct flashctx *flash, const uint8_t *buf, unsigned int start, unsigned int len, unsigned int chunksize);
-int spi_set_extended_address(struct flashctx *, uint8_t addr_high);
-
-/* spi25_prepare.c */
-int spi_prepare_io(struct flashctx *, enum preparation_steps);
-void spi_finish_io(struct flashctx *);
-
-
-/* spi25_statusreg.c */
-enum wrsr_target {
-	WRSR_VOLATILE_BITS	= 1,
-	WRSR_NON_VOLATILE_BITS	= 2,
-	WRSR_EITHER		= 3,
-};
-static inline enum wrsr_target default_wrsr_target(const struct flashctx *flash)
-{
-	return flash->flags.non_volatile_wrsr ? WRSR_NON_VOLATILE_BITS : WRSR_VOLATILE_BITS;
-}
-int spi_read_register(const struct flashctx *flash, enum flash_reg reg, uint8_t *value);
-int spi_write_register(const struct flashctx *flash, 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 flashctx *flash);
-int spi_prettyprint_status_register_default_welwip(struct flashctx *flash);
-int spi_prettyprint_status_register_bp1_srwd(struct flashctx *flash);
-int spi_prettyprint_status_register_bp2_srwd(struct flashctx *flash);
-int spi_prettyprint_status_register_bp3_srwd(struct flashctx *flash);
-int spi_prettyprint_status_register_bp4_srwd(struct flashctx *flash);
-int spi_prettyprint_status_register_bp2_bpl(struct flashctx *flash);
-int spi_prettyprint_status_register_bp2_tb_bpl(struct flashctx *flash);
-int spi_disable_blockprotect(struct flashctx *flash);
-int spi_disable_blockprotect_bp1_srwd(struct flashctx *flash);
-int spi_disable_blockprotect_bp2_srwd(struct flashctx *flash);
-int spi_disable_blockprotect_bp3_srwd(struct flashctx *flash);
-int spi_disable_blockprotect_bp4_srwd(struct flashctx *flash);
-int spi_prettyprint_status_register_amic_a25l032(struct flashctx *flash);
-int spi_prettyprint_status_register_at25df(struct flashctx *flash);
-int spi_prettyprint_status_register_at25df_sec(struct flashctx *flash);
-int spi_prettyprint_status_register_at25f(struct flashctx *flash);
-int spi_prettyprint_status_register_at25f512a(struct flashctx *flash);
-int spi_prettyprint_status_register_at25f512b(struct flashctx *flash);
-int spi_prettyprint_status_register_at25f4096(struct flashctx *flash);
-int spi_prettyprint_status_register_at25fs010(struct flashctx *flash);
-int spi_prettyprint_status_register_at25fs040(struct flashctx *flash);
-int spi_prettyprint_status_register_at26df081a(struct flashctx *flash);
-int spi_disable_blockprotect_at2x_global_unprotect(struct flashctx *flash);
-int spi_disable_blockprotect_at2x_global_unprotect_sec(struct flashctx *flash);
-int spi_disable_blockprotect_at25f(struct flashctx *flash);
-int spi_disable_blockprotect_at25f512a(struct flashctx *flash);
-int spi_disable_blockprotect_at25f512b(struct flashctx *flash);
-int spi_disable_blockprotect_at25fs010(struct flashctx *flash);
-int spi_disable_blockprotect_at25fs040(struct flashctx *flash);
-int spi_prettyprint_status_register_en25s_wp(struct flashctx *flash);
-int spi_prettyprint_status_register_n25q(struct flashctx *flash);
-int spi_disable_blockprotect_n25q(struct flashctx *flash);
-int spi_prettyprint_status_register_bp2_ep_srwd(struct flashctx *flash);
-int spi_disable_blockprotect_bp2_ep_srwd(struct flashctx *flash);
-int spi_prettyprint_status_register_sst25(struct flashctx *flash);
-int spi_prettyprint_status_register_sst25vf016(struct flashctx *flash);
-int spi_prettyprint_status_register_sst25vf040b(struct flashctx *flash);
-int spi_disable_blockprotect_sst26_global_unprotect(struct flashctx *flash);
-
-/* sfdp.c */
-int probe_spi_sfdp(struct flashctx *flash);
-
 /* opaque.c */
 int probe_opaque(struct flashctx *flash);
 int read_opaque(struct flashctx *flash, uint8_t *buf, unsigned int start, unsigned int len);
 int write_opaque(struct flashctx *flash, const uint8_t *buf, unsigned int start, unsigned int len);
 int erase_opaque(struct flashctx *flash, unsigned int blockaddr, unsigned int blocklen);
 
-/* at45db.c */
-int spi_prepare_at45db(struct flashctx *, const enum preparation_steps);
-int spi_prettyprint_status_register_at45db(struct flashctx *flash);
-int spi_disable_blockprotect_at45db(struct flashctx *flash);
-int spi_read_at45db(struct flashctx *flash, uint8_t *buf, unsigned int start, unsigned int len);
-int spi_read_at45db_e8(struct flashctx *flash, uint8_t *buf, unsigned int start, unsigned int len);
-int spi_write_at45db(struct flashctx *flash, const uint8_t *buf, unsigned int start, unsigned int len);
-int spi_erase_at45db_page(struct flashctx *flash, unsigned int addr, unsigned int blocklen);
-int spi_erase_at45db_block(struct flashctx *flash, unsigned int addr, unsigned int blocklen);
-int spi_erase_at45db_sector(struct flashctx *flash, unsigned int addr, unsigned int blocklen);
-int spi_erase_at45db_chip(struct flashctx *flash, unsigned int addr, unsigned int blocklen);
-int spi_erase_at45cs_sector(struct flashctx *flash, unsigned int addr, unsigned int blocklen);
-
 /* 82802ab.c */
 uint8_t wait_82802ab(struct flashctx *flash);
 int probe_82802ab(struct flashctx *flash);
@@ -215,16 +103,6 @@
 int edi_chip_read(struct flashctx *flash, uint8_t *buf, unsigned int start, unsigned int len);
 int edi_probe_kb9012(struct flashctx *flash);
 
-/* spi95.c */
-int probe_spi_st95(struct flashctx *flash);
-int spi_block_erase_emulation(struct flashctx *flash, unsigned int addr, unsigned int blocklen);
-
-/* writeprotect_ranges.c */
-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);
-
 /* memory_bus.c */
 int prepare_memory_access(struct flashctx *, enum preparation_steps);
 int prepare_memory_register_access(struct flashctx *, enum preparation_steps);
diff --git a/include/chipdrivers/spi.h b/include/chipdrivers/spi.h
new file mode 100644
index 0000000..186575c
--- /dev/null
+++ b/include/chipdrivers/spi.h
@@ -0,0 +1,135 @@
+/*
+ * 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__ */
diff --git a/include/flash.h b/include/flash.h
index c4d9040..eec09b4 100644
--- a/include/flash.h
+++ b/include/flash.h
@@ -488,6 +488,22 @@
 extern const struct flashchip flashchips[];
 extern const unsigned int flashchips_size;
 
+enum wrsr_target {
+	WRSR_VOLATILE_BITS	= 1,
+	WRSR_NON_VOLATILE_BITS	= 2,
+	WRSR_EITHER		= 3,
+};
+static inline enum wrsr_target default_wrsr_target(const struct flashprog_flashctx *flash)
+{
+	return flash->flags.non_volatile_wrsr ? WRSR_NON_VOLATILE_BITS : WRSR_VOLATILE_BITS;
+}
+
+/* spi.c */
+const uint8_t *spi_get_opcode_from_erasefn(erasefunc_t *, bool *native_4ba);
+
+/* spi25.c */
+erasefunc_t *spi25_get_erasefn_from_opcode(uint8_t opcode);
+
 /* parallel.c */
 void chip_writeb(const struct flashctx *flash, uint8_t val, chipaddr addr);
 void chip_writew(const struct flashctx *flash, uint16_t val, chipaddr addr);
