diff --git a/Makefile b/Makefile
index fc21928..fa0c270 100644
--- a/Makefile
+++ b/Makefile
@@ -73,7 +73,7 @@
 
 # Set LC_ALL=C to minimize influences of the locale.
 # However, this won't work for the majority of relevant commands because they use the $(shell) function and
-# GNU make does not relay variables exported within the makefile to their evironment.
+# GNU make does not relay variables exported within the makefile to their environment.
 LC_ALL=C
 export LC_ALL
 
diff --git a/ch341a_spi.c b/ch341a_spi.c
index b22d9a2..f415617 100644
--- a/ch341a_spi.c
+++ b/ch341a_spi.c
@@ -387,7 +387,7 @@
 
 static const struct spi_master spi_master_ch341a_spi = {
 	.features	= SPI_MASTER_4BA,
-	/* flashrom's current maximum is 256 B. CH341A was tested on Linux and Windows to accept atleast
+	/* flashrom's current maximum is 256 B. CH341A was tested on Linux and Windows to accept at least
 	 * 128 kB. Basically there should be no hard limit because transfers are broken up into USB packets
 	 * sent to the device and most of their payload streamed via SPI. */
 	.max_data_read	= 4 * 1024,
@@ -428,7 +428,7 @@
 
 	int32_t ret = libusb_init(NULL);
 	if (ret < 0) {
-		msg_perr("Couldnt initialize libusb!\n");
+		msg_perr("Couldn't initialize libusb!\n");
 		return -1;
 	}
 
diff --git a/flash.h b/flash.h
index 0fa3129..7491335 100644
--- a/flash.h
+++ b/flash.h
@@ -74,7 +74,7 @@
 
 /*
  * The following enum defines possible write granularities of flash chips. These tend to reflect the properties
- * of the actual hardware not necesserily the write function(s) defined by the respective struct flashchip.
+ * of the actual hardware not necessarily the write function(s) defined by the respective struct flashchip.
  * The latter might (and should) be more precisely specified, e.g. they might bail out early if their execution
  * would result in undefined chip contents.
  */
@@ -177,7 +177,7 @@
 #define TEST_BAD_PREWB	(struct tested){ .probe = BAD, .read = BAD, .erase = BAD, .write = BAD, .wp = BAD }
 
 struct flashrom_flashctx;
-#define flashctx flashrom_flashctx /* TODO: Agree on a name and convert all occurences. */
+#define flashctx flashrom_flashctx /* TODO: Agree on a name and convert all occurrences. */
 typedef int (erasefunc_t)(struct flashctx *flash, unsigned int addr, unsigned int blocklen);
 
 enum flash_reg {
diff --git a/flashrom.8.tmpl b/flashrom.8.tmpl
index 924a4f9..907bf6c 100644
--- a/flashrom.8.tmpl
+++ b/flashrom.8.tmpl
@@ -432,7 +432,7 @@
 and store it to a medium outside of your computer, like
 a USB drive or a network share. If you needed to run the board enable code
 already for probing, use it for reading too.
-If reading succeeds and the contens of the read file look legit you can try to write the new image.
+If reading succeeds and the contents of the read file look legit you can try to write the new image.
 You should enable the board enable code in any case now, as it
 has been written because it is known that writing/erasing without the board
 enable is going to fail. In any case (success or failure), please report to
@@ -827,7 +827,7 @@
 .sp
 The parameter
 .B gpiolX=[HLC]
-allows use of the GPIOL pins either as generic gpios with a fixed value during flashing or as addtional CS#
+allows use of the GPIOL pins either as generic gpios with a fixed value during flashing or as additional CS#
 signal, where
 .B X
 can be a number between 0 and 3, denoting GPIOL0-GPIOL3 correspondingly. The parameter may be specified
diff --git a/flashrom.c b/flashrom.c
index f5fcae4..caee351 100644
--- a/flashrom.c
+++ b/flashrom.c
@@ -606,7 +606,7 @@
 	return first_len;
 }
 
-/* Returns the number of busses commonly supported by the current programmer and flash chip where the latter
+/* Returns the number of buses commonly supported by the current programmer and flash chip where the latter
  * can not be completely accessed due to size/address limits of the programmer. */
 unsigned int count_max_decode_exceedings(const struct flashctx *flash)
 {
diff --git a/ich_descriptors.c b/ich_descriptors.c
index bad2b33..3d41321 100644
--- a/ich_descriptors.c
+++ b/ich_descriptors.c
@@ -959,9 +959,9 @@
 		uint32_t vscc = umap->vscc_table[i].VSCC;
 		msg_pdbg2("  JID%d  = 0x%08x\n", i, jid);
 		msg_pdbg2("  VSCC%d = 0x%08x\n", i, vscc);
-		msg_pdbg2("    "); /* indention */
+		msg_pdbg2("    "); /* indentation */
 		prettyprint_rdid(jid);
-		msg_pdbg2("    "); /* indention */
+		msg_pdbg2("    "); /* indentation */
 		prettyprint_ich_reg_vscc(vscc, 0, false);
 	}
 	msg_pdbg2("\n");
diff --git a/ichspi.c b/ichspi.c
index 21f6d9b..1f13b93 100644
--- a/ichspi.c
+++ b/ichspi.c
@@ -980,7 +980,7 @@
 	}
 
 	/* Program offset in flash into FADDR while preserve the reserved bits
-	 * and clearing the 25. address bit which is only useable in hwseq. */
+	 * and clearing the 25. address bit which is only usable in hwseq. */
 	temp32 = REGREAD32(ICH9_REG_FADDR) & ~0x01FFFFFF;
 	REGWRITE32(ICH9_REG_FADDR, (offset & 0x00FFFFFF) | temp32);
 
diff --git a/ni845x_spi.c b/ni845x_spi.c
index 73b236e..2834798 100644
--- a/ni845x_spi.c
+++ b/ni845x_spi.c
@@ -130,7 +130,7 @@
 
 /**
  * @param serial a null terminated string containing the serial number of the specific device or NULL
- * @return the 0 on successful completition, negative error code on failure
+ * @return the 0 on successful completion, negative error code on failure
  */
 static int ni845x_spi_open(const char *serial, uInt32 *return_handle)
 {
@@ -145,7 +145,7 @@
 
 	tmp = ni845xFindDevice(resource_name, &device_find_handle, &found_devices_count);
 	if (tmp != 0) {
-		// supress warning if no device found
+		// suppress warning if no device found
 		if (tmp != NI845x_FIND_DEVICE_NO_DEVICE_FOUND)
 			ni845x_report_error("ni845xFindDevice", tmp);
 		return -1;
@@ -220,7 +220,7 @@
  * @param requested_io_voltage_mV the desired IO voltage in mVolts
  * @param set_io_voltage_mV the IO voltage which was set in mVolts
  * @param coerce_mode if set to USE_LOWER the closest supported IO voltage which is lower or equal to
- * the requested_io_voltage_mV will be selected. Otherwise the next closest supported voltage will be choosen
+ * the requested_io_voltage_mV will be selected. Otherwise the next closest supported voltage will be chosen
  * which is higher or equal to the requested_io_voltage_mV.
  * @return 0 on success, negative on error, positive on warning
  */
@@ -346,7 +346,7 @@
 
 	tmp = ni845xFindDevice(resource_handle, &device_find_handle, &found_devices_count);
 	if (tmp != 0) {
-		// supress warning if no device found
+		// suppress warning if no device found
 		if (tmp != NI845x_FIND_DEVICE_NO_DEVICE_FOUND)
 			ni845x_report_error("ni845xFindDevice", tmp);
 		return;
@@ -620,7 +620,7 @@
 
 	if (read_cnt != 0 && read_arr != NULL) {
 		if ((read_cnt + write_cnt) != read_size) {
-			msg_perr("%s: expected and returned read count mismatch: %u expected, %ld recieved\n",
+			msg_perr("%s: expected and returned read count mismatch: %u expected, %ld received\n",
 					 __func__, read_cnt, read_size);
 			free(transfer_buffer);
 			return -1;
diff --git a/stlinkv3_spi.c b/stlinkv3_spi.c
index 65cb35c..82a7985 100644
--- a/stlinkv3_spi.c
+++ b/stlinkv3_spi.c
@@ -391,7 +391,7 @@
 					  &actual_length,
 					  USB_TIMEOUT_IN_MS);
 		if (rc != LIBUSB_TRANSFER_COMPLETED || (unsigned int)actual_length != read_cnt) {
-			msg_perr("Failed to retrive the STLINK_BRIDGE_READ_SPI answer: '%s'\n",
+			msg_perr("Failed to retrieve the STLINK_BRIDGE_READ_SPI answer: '%s'\n",
 				 libusb_error_name(rc));
 			goto transmit_err;
 		}
