diff --git a/82802ab.c b/82802ab.c
index 0af5d28..3dc48c0 100644
--- a/82802ab.c
+++ b/82802ab.c
@@ -213,7 +213,7 @@
 	}
 
 	/* Read block lock-bits */
-	for (i = 0; i < flash->chip->total_size * 1024; i+= (64 * 1024)) {
+	for (i = 0; i < flashprog_flash_getsize(flash); i+= (64 * 1024)) {
 		bcfg = chip_readb(flash, bios + i + 2); // read block lock config
 		msg_cdbg("block lock at %06x is %slocked!\n", i, bcfg ? "" : "un");
 		if (bcfg) {
@@ -266,7 +266,7 @@
 	}
 
 	/* Read block lock-bits, 8 * 8 KB + 15 * 64 KB */
-	for (i = 0; i < flash->chip->total_size * 1024;
+	for (i = 0; i < flashprog_flash_getsize(flash);
 	     i += (i >= (64 * 1024) ? 64 * 1024 : 8 * 1024)) {
 		bcfg = chip_readb(flash, bios + i + 2); /* read block lock config */
 		msg_cdbg("block lock at %06x is %slocked!\n", i,
diff --git a/at45db.c b/at45db.c
index 2768ace..f8d9983 100644
--- a/at45db.c
+++ b/at45db.c
@@ -234,7 +234,7 @@
 int spi_read_at45db(struct flashctx *flash, uint8_t *buf, unsigned int addr, unsigned int len)
 {
 	const unsigned int page_size = flash->chip->page_size;
-	const unsigned int total_size = flash->chip->total_size * 1024;
+	const unsigned int total_size = flashprog_flash_getsize(flash);
 	if ((addr + len) > total_size) {
 		msg_cerr("%s: tried to read beyond flash boundary: addr=%u, len=%u, size=%u\n",
 			 __func__, addr, len, total_size);
@@ -266,7 +266,7 @@
 int spi_read_at45db_e8(struct flashctx *flash, uint8_t *buf, unsigned int addr, unsigned int len)
 {
 	const unsigned int page_size = flash->chip->page_size;
-	const unsigned int total_size = flash->chip->total_size * 1024;
+	const unsigned int total_size = flashprog_flash_getsize(flash);
 	if ((addr + len) > total_size) {
 		msg_cerr("%s: tried to read beyond flash boundary: addr=%u, len=%u, size=%u\n",
 			 __func__, addr, len, total_size);
@@ -344,7 +344,7 @@
 int spi_erase_at45db_page(struct flashctx *flash, unsigned int addr, unsigned int blocklen)
 {
 	const unsigned int page_size = flash->chip->page_size;
-	const unsigned int total_size = flash->chip->total_size * 1024;
+	const unsigned int total_size = flashprog_flash_getsize(flash);
 
 	if ((addr % page_size) != 0 || (blocklen % page_size) != 0) {
 		msg_cerr("%s: cannot erase partial pages: addr=%u, blocklen=%u\n", __func__, addr, blocklen);
@@ -364,7 +364,7 @@
 int spi_erase_at45db_block(struct flashctx *flash, unsigned int addr, unsigned int blocklen)
 {
 	const unsigned int page_size = flash->chip->page_size;
-	const unsigned int total_size = flash->chip->total_size * 1024;
+	const unsigned int total_size = flashprog_flash_getsize(flash);
 
 	if ((addr % page_size) != 0 || (blocklen % page_size) != 0) { // FIXME: should check blocks not pages
 		msg_cerr("%s: cannot erase partial pages: addr=%u, blocklen=%u\n", __func__, addr, blocklen);
@@ -384,7 +384,7 @@
 int spi_erase_at45db_sector(struct flashctx *flash, unsigned int addr, unsigned int blocklen)
 {
 	const unsigned int page_size = flash->chip->page_size;
-	const unsigned int total_size = flash->chip->total_size * 1024;
+	const unsigned int total_size = flashprog_flash_getsize(flash);
 
 	if ((addr % page_size) != 0 || (blocklen % page_size) != 0) { // FIXME: should check sectors not pages
 		msg_cerr("%s: cannot erase partial pages: addr=%u, blocklen=%u\n", __func__, addr, blocklen);
@@ -403,7 +403,7 @@
 
 int spi_erase_at45db_chip(struct flashctx *flash, unsigned int addr, unsigned int blocklen)
 {
-	const unsigned int total_size = flash->chip->total_size * 1024;
+	const unsigned int total_size = flashprog_flash_getsize(flash);
 
 	if ((addr + blocklen) > total_size) {
 		msg_cerr("%s: tried to erase beyond flash boundary: addr=%u, blocklen=%u, size=%u\n",
@@ -421,7 +421,7 @@
 int spi_erase_at45cs_sector(struct flashctx *flash, unsigned int addr, unsigned int blocklen)
 {
 	const unsigned int page_size = flash->chip->page_size;
-	const unsigned int total_size = flash->chip->total_size * 1024;
+	const unsigned int total_size = flashprog_flash_getsize(flash);
 	const struct block_eraser be = flash->chip->block_erasers[0];
 	const unsigned int sec_0a_top = be.eraseblocks[0].size;
 	const unsigned int sec_0b_top = be.eraseblocks[0].size + be.eraseblocks[1].size;
@@ -535,14 +535,14 @@
 int spi_write_at45db(struct flashctx *flash, const uint8_t *buf, unsigned int start, unsigned int len)
 {
 	const unsigned int page_size = flash->chip->page_size;
-	const unsigned int total_size = flash->chip->total_size;
+	const unsigned int total_size = flashprog_flash_getsize(flash);
 
 	if ((start % page_size) != 0 || (len % page_size) != 0) {
 		msg_cerr("%s: cannot write partial pages: start=%u, len=%u\n", __func__, start, len);
 		return 1;
 	}
 
-	if ((start + len) > (total_size * 1024)) {
+	if ((start + len) > total_size) {
 		msg_cerr("%s: tried to write beyond flash boundary: start=%u, len=%u, size=%u\n",
 			 __func__, start, len, total_size);
 		return 1;
diff --git a/flashprog.c b/flashprog.c
index f647f75..f4f0f89 100644
--- a/flashprog.c
+++ b/flashprog.c
@@ -391,10 +391,10 @@
 	if (!len)
 		return -1;
 
-	if (start + len > flash->chip->total_size * 1024) {
+	if (start + len > flashprog_flash_getsize(flash)) {
 		msg_gerr("Error: %s called with start 0x%x + len 0x%x >"
-			" total_size 0x%x\n", __func__, start, len,
-			flash->chip->total_size * 1024);
+			" total_size 0x%zx\n", __func__, start, len,
+			flashprog_flash_getsize(flash));
 		return -1;
 	}
 
@@ -1612,7 +1612,7 @@
  */
 int flashprog_image_read(struct flashctx *const flashctx, void *const buffer, const size_t buffer_len)
 {
-	const size_t flash_size = flashctx->chip->total_size * 1024;
+	const size_t flash_size = flashprog_flash_getsize(flashctx);
 
 	if (flash_size > buffer_len)
 		return 2;
@@ -1655,7 +1655,7 @@
 	}
 
 	/* copy the rest of the chip */
-	const chipsize_t copy_len = flashctx->chip->total_size * 1024 - start;
+	const chipsize_t copy_len = flashprog_flash_getsize(flashctx) - start;
 	memcpy(newcontents + start, oldcontents + start, copy_len);
 }
 
@@ -1678,7 +1678,7 @@
 int flashprog_image_write(struct flashctx *const flashctx, void *const buffer, const size_t buffer_len,
                          const void *const refbuffer)
 {
-	const size_t flash_size = flashctx->chip->total_size * 1024;
+	const size_t flash_size = flashprog_flash_getsize(flashctx);
 	const bool verify_all = flashctx->flags.verify_whole_chip;
 	const bool verify = flashctx->flags.verify_after_write;
 	const struct flashprog_layout *const verify_layout =
@@ -1812,7 +1812,7 @@
 int flashprog_image_verify(struct flashctx *const flashctx, const void *const buffer, const size_t buffer_len)
 {
 	const struct flashprog_layout *const layout = get_layout(flashctx);
-	const size_t flash_size = flashctx->chip->total_size * 1024;
+	const size_t flash_size = flashprog_flash_getsize(flashctx);
 
 	if (buffer_len != flash_size)
 		return 2;
diff --git a/fmap.c b/fmap.c
index 0e8dd95..e8f5b5b 100644
--- a/fmap.c
+++ b/fmap.c
@@ -189,10 +189,10 @@
 	bool fmap_found = false;
 	bool check_offset_0 = true;
 	struct fmap *fmap;
-	const unsigned int chip_size = flashctx->chip->total_size * 1024;
+	const unsigned int chip_size = flashprog_flash_getsize(flashctx);
 	const int sig_len = strlen(FMAP_SIGNATURE);
 
-	if (rom_offset + len > flashctx->chip->total_size * 1024)
+	if (rom_offset + len > flashprog_flash_getsize(flashctx))
 		return 1;
 
 	if (len < sizeof(*fmap))
diff --git a/ichspi.c b/ichspi.c
index 65e79cf..c12bc1c 100644
--- a/ichspi.c
+++ b/ichspi.c
@@ -1327,7 +1327,7 @@
 		return -1;
 	}
 
-	if (addr + len > flash->chip->total_size * 1024) {
+	if (addr + len > flashprog_flash_getsize(flash)) {
 		msg_perr("Request to erase some inaccessible memory address(es)"
 			 " (addr=0x%x, len=%d). "
 			 "Not erasing anything.\n", addr, len);
@@ -1359,7 +1359,7 @@
 	uint16_t hsfc;
 	uint8_t block_len;
 
-	if (addr + len > flash->chip->total_size * 1024) {
+	if (addr + len > flashprog_flash_getsize(flash)) {
 		msg_perr("Request to read from an inaccessible memory address "
 			 "(addr=0x%x, len=%d).\n", addr, len);
 		return -1;
@@ -1400,7 +1400,7 @@
 	uint16_t hsfc;
 	uint8_t block_len;
 
-	if (addr + len > flash->chip->total_size * 1024) {
+	if (addr + len > flashprog_flash_getsize(flash)) {
 		msg_perr("Request to write to an inaccessible memory address "
 			 "(addr=0x%x, len=%d).\n", addr, len);
 		return -1;
diff --git a/it87spi.c b/it87spi.c
index 8c32afd..3ac25b1 100644
--- a/it87spi.c
+++ b/it87spi.c
@@ -390,7 +390,7 @@
 	 * the mainboard does not use IT87 SPI translation. This should be done
 	 * via a programmer parameter for the internal programmer.
 	 */
-	if ((flash->chip->total_size * 1024 > it87spi_max_mmapped)) {
+	if ((flashprog_flash_getsize(flash) > it87spi_max_mmapped)) {
 		default_spi_read(flash, buf, start, len);
 	} else {
 		unsigned char *const bios = it87spi_mmapped_flash +
diff --git a/jedec.c b/jedec.c
index 4ff1040..1cb540a 100644
--- a/jedec.c
+++ b/jedec.c
@@ -646,7 +646,7 @@
 	unsigned int mask;
 
 	mask = getaddrmask(flash);
-	if ((addr != 0) || (blocksize != flash->chip->total_size * 1024)) {
+	if ((addr != 0) || (blocksize != flashprog_flash_getsize(flash))) {
 		msg_cerr("%s called with incorrect arguments\n",
 			__func__);
 		return -1;
@@ -732,7 +732,7 @@
 
 static int printlock_regspace2_uniform(struct flashctx *flash, unsigned long block_size)
 {
-	const unsigned int elems = flash->chip->total_size * 1024 / block_size;
+	const unsigned int elems = flashprog_flash_getsize(flash) / block_size;
 	struct unlockblock blocks[2] = {{.size = block_size, .count = elems}};
 	return regspace2_walk_unlockblocks(flash, blocks, &printlock_regspace2_block);
 }
@@ -830,7 +830,7 @@
 
 static int unlock_regspace2_uniform(struct flashctx *flash, unsigned long block_size)
 {
-	const unsigned int elems = flash->chip->total_size * 1024 / block_size;
+	const unsigned int elems = flashprog_flash_getsize(flash) / block_size;
 	struct unlockblock blocks[2] = {{.size = block_size, .count = elems}};
 	return regspace2_walk_unlockblocks(flash, blocks, &unlock_regspace2_block_generic);
 }
diff --git a/layout.c b/layout.c
index 26b6273..56c4d1b 100644
--- a/layout.c
+++ b/layout.c
@@ -215,7 +215,7 @@
 int layout_sanity_checks(const struct flashprog_flashctx *const flash, const bool write_it)
 {
 	const struct flashprog_layout *const layout = get_layout(flash);
-	const chipsize_t total_size = flash->chip->total_size * 1024;
+	const chipsize_t total_size = flashprog_flash_getsize(flash);
 	const size_t gran = gran_to_bytes(flash->chip->gran);
 	int ret = 0;
 
diff --git a/libflashprog.c b/libflashprog.c
index 212293f..4f258b5 100644
--- a/libflashprog.c
+++ b/libflashprog.c
@@ -308,7 +308,7 @@
 	/* Fill default layout covering the whole chip. */
 	if (flashprog_layout_new(&flash->default_layout) ||
 	    flashprog_layout_add_region(flash->default_layout,
-			0, flash->chip->total_size * 1024 - 1, "complete flash") ||
+			0, flashprog_flash_getsize(flash) - 1, "complete flash") ||
 	    flashprog_layout_include_region(flash->default_layout, "complete flash")) {
 		flashprog_flash_release(flash);
 		return 1;
diff --git a/memory_bus.c b/memory_bus.c
index edc48e6..7219171 100644
--- a/memory_bus.c
+++ b/memory_bus.c
@@ -69,7 +69,7 @@
 	flash->virtual_memory = (chipaddr)ERROR_PTR;
 	flash->virtual_registers = (chipaddr)ERROR_PTR;
 
-	const chipsize_t size = flash->chip->total_size * 1024;
+	const chipsize_t size = flashprog_flash_getsize(flash);
 	void *const addr = programmer_map_flash_data(par, size, flash->chip->name);
 	if (addr == ERROR_PTR)
 		return 1;
@@ -92,7 +92,7 @@
 	 * but it might be somewhere completely different on some chips and programmers,
 	 * or not mappable at all. Ignore these problems for now and always report success.
 	 */
-	const chipsize_t size = flash->chip->total_size * 1024;
+	const chipsize_t size = flashprog_flash_getsize(flash);
 	const uintptr_t base = 0xffffffff - size - 0x400000 + 1;
 	void *const addr = programmer_map_flash_region(par, "flash chip registers", base, size);
 	if (addr == ERROR_PTR) {
diff --git a/nicintel_eeprom.c b/nicintel_eeprom.c
index 207782c..e5df1f8 100644
--- a/nicintel_eeprom.c
+++ b/nicintel_eeprom.c
@@ -107,7 +107,7 @@
 {
 	/* Emulated eeprom has a fixed size of 4 KB */
 	flash->chip->total_size = 4;
-	flash->chip->page_size = flash->chip->total_size * 1024;
+	flash->chip->page_size = flashprog_flash_getsize(flash);
 	flash->chip->tested = TEST_OK_PREW;
 	flash->chip->gran = write_gran_1byte_implicit_erase;
 	flash->chip->block_erasers->eraseblocks[0].size = flash->chip->page_size;
@@ -140,7 +140,7 @@
 	flash->chip->tested = TEST_OK_PREW;
 	flash->chip->gran = write_gran_1byte_implicit_erase;
 	flash->chip->block_erasers->eraseblocks[0].size = (EE_PAGE_MASK + 1);
-	flash->chip->block_erasers->eraseblocks[0].count = (flash->chip->total_size * 1024) / (EE_PAGE_MASK + 1);
+	flash->chip->block_erasers->eraseblocks[0].count = (flashprog_flash_getsize(flash)) / (EE_PAGE_MASK + 1);
 
 	return 1;
 }
diff --git a/spi25.c b/spi25.c
index a628770..e5a9ddb 100644
--- a/spi25.c
+++ b/spi25.c
@@ -563,7 +563,7 @@
 int spi_block_erase_60(struct flashctx *flash, unsigned int addr,
 		       unsigned int blocklen)
 {
-	if ((addr != 0) || (blocklen != flash->chip->total_size * 1024)) {
+	if ((addr != 0) || (blocklen != flashprog_flash_getsize(flash))) {
 		msg_cerr("%s called with incorrect arguments\n",
 			__func__);
 		return -1;
@@ -573,7 +573,7 @@
 
 int spi_block_erase_62(struct flashctx *flash, unsigned int addr, unsigned int blocklen)
 {
-	if ((addr != 0) || (blocklen != flash->chip->total_size * 1024)) {
+	if ((addr != 0) || (blocklen != flashprog_flash_getsize(flash))) {
 		msg_cerr("%s called with incorrect arguments\n",
 			__func__);
 		return -1;
@@ -584,7 +584,7 @@
 int spi_block_erase_c7(struct flashctx *flash, unsigned int addr,
 		       unsigned int blocklen)
 {
-	if ((addr != 0) || (blocklen != flash->chip->total_size * 1024)) {
+	if ((addr != 0) || (blocklen != flashprog_flash_getsize(flash))) {
 		msg_cerr("%s called with incorrect arguments\n",
 			__func__);
 		return -1;
diff --git a/sst28sf040.c b/sst28sf040.c
index 6c22591..ab57835 100644
--- a/sst28sf040.c
+++ b/sst28sf040.c
@@ -115,7 +115,7 @@
 int erase_chip_28sf040(struct flashctx *flash, unsigned int addr,
 		       unsigned int blocklen)
 {
-	if ((addr != 0) || (blocklen != flash->chip->total_size * 1024)) {
+	if ((addr != 0) || (blocklen != flashprog_flash_getsize(flash))) {
 		msg_cerr("%s called with incorrect arguments\n",
 			__func__);
 		return -1;
diff --git a/sst_fwhub.c b/sst_fwhub.c
index 3e53080..cd1465d 100644
--- a/sst_fwhub.c
+++ b/sst_fwhub.c
@@ -69,7 +69,7 @@
 {
 	unsigned int i;
 
-	for (i = 0; i < flash->chip->total_size * 1024; i += flash->chip->page_size)
+	for (i = 0; i < flashprog_flash_getsize(flash); i += flash->chip->page_size)
 		check_sst_fwhub_block_lock(flash, i);
 
 	return 0;
@@ -80,7 +80,7 @@
 	unsigned int i;
 	int ret = 0;
 
-	for (i = 0; i < flash->chip->total_size * 1024; i += flash->chip->page_size)
+	for (i = 0; i < flashprog_flash_getsize(flash); i += flash->chip->page_size)
 	{
 		if (clear_sst_fwhub_block_lock(flash, i))
 		{
