diff --git a/drivers/mtd/nand/raw/cortina_nand.c b/drivers/mtd/nand/raw/cortina_nand.c
index c5e97da..88798f2 100644
--- a/drivers/mtd/nand/raw/cortina_nand.c
+++ b/drivers/mtd/nand/raw/cortina_nand.c
@@ -83,7 +83,7 @@
  * Read one byte from the chip
  *
  * @param mtd	MTD device structure
- * @return	data byte
+ * Return:	data byte
  *
  * Read function for 8bit bus-width
  */
@@ -504,7 +504,7 @@
  * Set up NAND bus width and page size
  *
  * @param info		nand_info structure
- * @return 0 if ok, -1 on error
+ * Return: 0 if ok, -1 on error
  */
 static int set_bus_width_page_size(struct mtd_info *mtd)
 {
@@ -724,7 +724,7 @@
  * @param page		page number
  * @param with_ecc	1 to enable ECC, 0 to disable ECC
  * @param is_writing	0 for read, 1 for write
- * @return		0 when successfully completed
+ * Return:		0 when successfully completed
  *			-ETIMEDOUT when command timeout
  */
 static int nand_rw_page(struct mtd_info *mtd, struct nand_chip *chip,
@@ -952,7 +952,7 @@
  * @param chip	nand chip info structure
  * @param buf	buffer to store read data
  * @param page	page number to read
- * @return	0 when successfully completed
+ * Return:	0 when successfully completed
  *		-ETIMEDOUT when command timeout
  */
 static int nand_read_page_hwecc(struct mtd_info *mtd,
@@ -980,7 +980,7 @@
  * @param mtd	mtd info structure
  * @param chip	nand chip info structure
  * @param buf	data buffer
- * @return	0 when successfully completed
+ * Return:	0 when successfully completed
  *		-ETIMEDOUT when command timeout
  */
 static int nand_write_page_hwecc(struct mtd_info *mtd,
@@ -1009,7 +1009,7 @@
  * @param chip	nand chip info structure
  * @param buf	buffer to store read data
  * @param page	page number to read
- * @return	0 when successfully completed
+ * Return:	0 when successfully completed
  *		-ETIMEDOUT when command timeout
  */
 static int nand_read_page_raw(struct mtd_info *mtd,
@@ -1037,7 +1037,7 @@
  * @param mtd	mtd info structure
  * @param chip	nand chip info structure
  * @param buf	data buffer
- * @return	0 when successfully completed
+ * Return:	0 when successfully completed
  *		-ETIMEDOUT when command timeout
  */
 static int nand_write_page_raw(struct mtd_info *mtd,
@@ -1067,7 +1067,7 @@
  * @param page		page number to read
  * @param with_ecc	1 to enable ECC, 0 to disable ECC
  * @param is_writing	0 for read, 1 for write
- * @return		0 when successfully completed
+ * Return:		0 when successfully completed
  *			-ETIMEDOUT when command timeout
  */
 static int nand_rw_oob(struct mtd_info *mtd, struct nand_chip *chip,
@@ -1137,7 +1137,7 @@
  * @param mtd	mtd info structure
  * @param chip	nand chip info structure
  * @param page	page number to write
- * @return	0 when successfully completed
+ * Return:	0 when successfully completed
  *		-ETIMEDOUT when command timeout
  */
 static int nand_write_oob(struct mtd_info *mtd, struct nand_chip *chip,
@@ -1239,7 +1239,7 @@
  * config oob layout
  *
  * @param chip  nand chip info structure
- * @return	0 when successfully completed
+ * Return:	0 when successfully completed
  *		-EINVAL when ECC bytes exceed OOB size
  */
 static int nand_config_oob_layout(struct nand_chip *nand)
diff --git a/drivers/mtd/nand/raw/nand_util.c b/drivers/mtd/nand/raw/nand_util.c
index 5409c9f..5150607 100644
--- a/drivers/mtd/nand/raw/nand_util.c
+++ b/drivers/mtd/nand/raw/nand_util.c
@@ -47,7 +47,7 @@
  *
  * @param mtd		nand mtd instance to erase
  * @param opts		options,  @see struct nand_erase_options
- * @return		0 in case of success
+ * Return:		0 in case of success
  *
  * This code is ported from flash_eraseall.c from Linux mtd utils by
  * Arcom Control System Ltd.
@@ -202,7 +202,7 @@
  * @param mtd		nand mtd instance
  * @param tight		bring device in lock tight mode
  *
- * @return		0 on success, -1 in case of error
+ * Return:		0 on success, -1 in case of error
  *
  * The lock / lock-tight command only applies to the whole chip. To get some
  * parts of the chip lock and others unlocked use the following sequence:
@@ -258,7 +258,7 @@
  * @param mtd		nand mtd instance
  * @param offset	page address to query (must be page-aligned!)
  *
- * @return		-1 in case of error
+ * Return:		-1 in case of error
  *			>0 lock status:
  *			  bitfield with the following combinations:
  *			  NAND_LOCK_STATUS_TIGHT: page in tight state
@@ -308,7 +308,7 @@
  *			page size mtd->writesize)
  * @param allexcept	if set, unlock everything not selected
  *
- * @return		0 on success, -1 in case of error
+ * Return:		0 on success, -1 in case of error
  */
 int nand_unlock(struct mtd_info *mtd, loff_t start, size_t length,
 	int allexcept)
@@ -405,7 +405,7 @@
  * @param offset offset in flash
  * @param length image length
  * @param used length of flash needed for the requested length
- * @return 0 if the image fits and there are no bad blocks
+ * Return: 0 if the image fits and there are no bad blocks
  *         1 if the image fits, but there are bad blocks
  *        -1 if the image does not fit
  */
@@ -476,7 +476,7 @@
  * @param mtd		nand mtd instance
  * @param ops		MTD operations, including data to verify
  * @param ofs		offset in flash
- * @return		0 in case of success
+ * Return:		0 in case of success
  */
 int nand_verify_page_oob(struct mtd_info *mtd, struct mtd_oob_ops *ops,
 			 loff_t ofs)
@@ -517,7 +517,7 @@
  * @param ofs		offset in flash
  * @param len		buffer length
  * @param buf		buffer to read from
- * @return		0 in case of success
+ * Return:		0 in case of success
  */
 int nand_verify(struct mtd_info *mtd, loff_t ofs, size_t len, u_char *buf)
 {
@@ -568,7 +568,7 @@
  *			exceed the buffer
  * @param buffer        buffer to read from
  * @param flags		flags modifying the behaviour of the write to NAND
- * @return		0 in case of success
+ * Return:		0 in case of success
  */
 int nand_write_skip_bad(struct mtd_info *mtd, loff_t offset, size_t *length,
 			size_t *actual, loff_t lim, u_char *buffer, int flags)
@@ -702,7 +702,7 @@
  * @param lim maximum size that actual may be in order to not exceed the
  * buffer
  * @param buffer buffer to write to
- * @return 0 in case of success
+ * Return: 0 in case of success
  */
 int nand_read_skip_bad(struct mtd_info *mtd, loff_t offset, size_t *length,
 		       size_t *actual, loff_t lim, u_char *buffer)
@@ -793,7 +793,7 @@
  * @param buf buffer to check
  * @param patt the pattern to check
  * @param size buffer size in bytes
- * @return 1 if there are only patt bytes in buf
+ * Return: 1 if there are only patt bytes in buf
  *         0 if something else was found
  */
 static int check_pattern(const u_char *buf, u_char patt, int size)
@@ -815,7 +815,7 @@
  *
  * @param mtd nand mtd instance
  * @param offset offset in flash
- * @return 0 if the block is still good
+ * Return: 0 if the block is still good
  */
 int nand_torture(struct mtd_info *mtd, loff_t offset)
 {
diff --git a/drivers/mtd/nand/raw/octeontx_bch.c b/drivers/mtd/nand/raw/octeontx_bch.c
index a417728..24ffa51 100644
--- a/drivers/mtd/nand/raw/octeontx_bch.c
+++ b/drivers/mtd/nand/raw/octeontx_bch.c
@@ -218,7 +218,7 @@
  * @param[out] ecc	8-byte aligned pointer to where ecc data should go
  * @param[in] resp	pointer to where responses will be written.
  *
- * @return Zero on success, negative on failure.
+ * Return: Zero on success, negative on failure.
  */
 int octeontx_bch_encode(struct bch_vf *vf, dma_addr_t block, u16 block_size,
 			u8 bch_level, dma_addr_t ecc, dma_addr_t resp)
@@ -259,7 +259,7 @@
  *				This should not be the same as block_ecc_in.
  * @param[in] resp		pointer to where responses will be written.
  *
- * @return Zero on success, negative on failure.
+ * Return: Zero on success, negative on failure.
  */
 
 int octeontx_bch_decode(struct bch_vf *vf, dma_addr_t block_ecc_in,
diff --git a/drivers/mtd/nand/raw/octeontx_bch.h b/drivers/mtd/nand/raw/octeontx_bch.h
index 3aaa52c..95a9b71 100644
--- a/drivers/mtd/nand/raw/octeontx_bch.h
+++ b/drivers/mtd/nand/raw/octeontx_bch.h
@@ -75,7 +75,7 @@
  * @param[out] ecc	8-byte aligned pointer to where ecc data should go
  * @param[in] resp	pointer to where responses will be written.
  *
- * @return Zero on success, negative on failure.
+ * Return: Zero on success, negative on failure.
  */
 int octeontx_bch_encode(struct bch_vf *vf, dma_addr_t block, u16 block_size,
 			u8 bch_level, dma_addr_t ecc, dma_addr_t resp);
@@ -95,7 +95,7 @@
  *				This should not be the same as block_ecc_in.
  * @param[in] resp		pointer to where responses will be written.
  *
- * @return Zero on success, negative on failure.
+ * Return: Zero on success, negative on failure.
  */
 
 int octeontx_bch_decode(struct bch_vf *vf, dma_addr_t block_ecc_in,
@@ -124,7 +124,7 @@
  * In this case, the initial probe returns success but the actual probing
  * is deferred until the BCH VF has been probed.
  *
- * @return	0 for success, otherwise error
+ * Return:	0 for success, otherwise error
  */
 int octeontx_pci_nand_deferred_probe(void);
 
diff --git a/drivers/mtd/nand/raw/octeontx_nand.c b/drivers/mtd/nand/raw/octeontx_nand.c
index 75476c0..ff363a5 100644
--- a/drivers/mtd/nand/raw/octeontx_nand.c
+++ b/drivers/mtd/nand/raw/octeontx_nand.c
@@ -2179,7 +2179,7 @@
  * In this case, the initial probe returns success but the actual probing
  * is deferred until the BCH VF has been probed.
  *
- * @return	0 for success, otherwise error
+ * Return:	0 for success, otherwise error
  */
 int octeontx_pci_nand_deferred_probe(void)
 {
diff --git a/drivers/mtd/nand/raw/omap_gpmc.c b/drivers/mtd/nand/raw/omap_gpmc.c
index 107447f..8b9ff4d 100644
--- a/drivers/mtd/nand/raw/omap_gpmc.c
+++ b/drivers/mtd/nand/raw/omap_gpmc.c
@@ -117,7 +117,7 @@
  * @read_ecc:		 ecc read from nand flash
  * @calc_ecc:		 ecc read from ECC registers
  *
- * @return 0 if data is OK or corrected, else returns -1
+ * Return: 0 if data is OK or corrected, else returns -1
  */
 static int __maybe_unused omap_correct_data(struct mtd_info *mtd, uint8_t *dat,
 				uint8_t *read_ecc, uint8_t *calc_ecc)
@@ -488,7 +488,7 @@
  * @read_ecc:	ecc read from nand flash (ignored)
  * @calc_ecc:	ecc read from ECC registers
  *
- * @return 0 if data is OK or corrected, else returns -1
+ * Return: 0 if data is OK or corrected, else returns -1
  */
 static int omap_correct_data_bch(struct mtd_info *mtd, uint8_t *dat,
 				uint8_t *read_ecc, uint8_t *calc_ecc)
diff --git a/drivers/mtd/nand/raw/tegra_nand.c b/drivers/mtd/nand/raw/tegra_nand.c
index 8e70c8e..d2801d4 100644
--- a/drivers/mtd/nand/raw/tegra_nand.c
+++ b/drivers/mtd/nand/raw/tegra_nand.c
@@ -152,7 +152,7 @@
  * Read one byte from the chip
  *
  * @param mtd	MTD device structure
- * @return	data byte
+ * Return:	data byte
  *
  * Read function for 8bit bus-width
  */
@@ -466,7 +466,7 @@
  *
  * @param info		nand_info structure
  * @param *reg_val	address of reg_val
- * @return 0 if ok, -1 on error
+ * Return: 0 if ok, -1 on error
  */
 static int set_bus_width_page_size(struct mtd_info *our_mtd,
 				   struct fdt_nand *config, u32 *reg_val)
@@ -505,7 +505,7 @@
  * @param page		page number
  * @param with_ecc	1 to enable ECC, 0 to disable ECC
  * @param is_writing	0 for read, 1 for write
- * @return	0 when successfully completed
+ * Return:	0 when successfully completed
  *		-EIO when command timeout
  */
 static int nand_rw_page(struct mtd_info *mtd, struct nand_chip *chip,
@@ -655,7 +655,7 @@
  * @param chip	nand chip info structure
  * @param buf	buffer to store read data
  * @param page	page number to read
- * @return	0 when successfully completed
+ * Return:	0 when successfully completed
  *		-EIO when command timeout
  */
 static int nand_read_page_hwecc(struct mtd_info *mtd,
@@ -687,7 +687,7 @@
  * @param chip	nand chip info structure
  * @param buf	buffer to store read data
  * @param page	page number to read
- * @return	0 when successfully completed
+ * Return:	0 when successfully completed
  *		-EINVAL when chip->oob_poi is not double-word aligned
  *		-EIO when command timeout
  */
@@ -720,7 +720,7 @@
  * @param page		page number to read
  * @param with_ecc	1 to enable ECC, 0 to disable ECC
  * @param is_writing	0 for read, 1 for write
- * @return	0 when successfully completed
+ * Return:	0 when successfully completed
  *		-EINVAL when chip->oob_poi is not double-word aligned
  *		-EIO when command timeout
  */
@@ -838,7 +838,7 @@
  * @param mtd	mtd info structure
  * @param chip	nand chip info structure
  * @param page	page number to write
- * @return	0 when successfully completed
+ * Return:	0 when successfully completed
  *		-EINVAL when chip->oob_poi is not double-word aligned
  *		-EIO when command timeout
  */
@@ -900,7 +900,7 @@
  *
  * @param dev		Driver model device
  * @param config	Device tree NAND configuration
- * @return 0 if ok, -ve on error (FDT_ERR_...)
+ * Return: 0 if ok, -ve on error (FDT_ERR_...)
  */
 static int fdt_decode_nand(struct udevice *dev, struct fdt_nand *config)
 {
