diff --git a/drivers/block/blk-uclass.c b/drivers/block/blk-uclass.c
index a055387..bee1cd6 100644
--- a/drivers/block/blk-uclass.c
+++ b/drivers/block/blk-uclass.c
@@ -172,7 +172,7 @@
  * @if_type:	Interface type
  * @devnum:	Device number (0 = first)
  * @descp:	Returns block device descriptor on success
- * @return 0 on success, -ENODEV if there is no such device and no device
+ * Return: 0 on success, -ENODEV if there is no such device and no device
  * with a higher device number, -ENOENT if there is no such device but there
  * is one with a higher number, or other -ve on other error.
  */
diff --git a/drivers/block/blk_legacy.c b/drivers/block/blk_legacy.c
index e3ee778..df9a359 100644
--- a/drivers/block/blk_legacy.c
+++ b/drivers/block/blk_legacy.c
@@ -52,7 +52,7 @@
  * @drv:	Legacy block driver
  * @devnum:	Device number (0 = first)
  * @descp:	Returns block device descriptor on success
- * @return 0 on success, -ENODEV if there is no such device, -ENOSYS if the
+ * Return: 0 on success, -ENODEV if there is no such device, -ENOSYS if the
  * driver does not provide a way to find a device, or other -ve on other
  * error.
  */
diff --git a/drivers/clk/aspeed/clk_ast2500.c b/drivers/clk/aspeed/clk_ast2500.c
index 97f00f5..a1b4496 100644
--- a/drivers/clk/aspeed/clk_ast2500.c
+++ b/drivers/clk/aspeed/clk_ast2500.c
@@ -91,7 +91,7 @@
  * @scu SCU registers
  * @uart_index UART index, 1-5
  *
- * @return current setting for uart clock rate
+ * Return: current setting for uart clock rate
  */
 static ulong ast2500_get_uart_clk_rate(struct ast2500_scu *scu, int uart_index)
 {
@@ -216,7 +216,7 @@
  * The result (the best config we could find), would also be returned
  * in this structure.
  *
- * @return The clock rate, when the resulting div_config is used.
+ * Return: The clock rate, when the resulting div_config is used.
  */
 static ulong ast2500_calc_clock_config(ulong input_rate, ulong requested_rate,
 				       struct ast2500_div_config *cfg)
diff --git a/drivers/clk/aspeed/clk_ast2600.c b/drivers/clk/aspeed/clk_ast2600.c
index 3fb8d68..f191b0f 100644
--- a/drivers/clk/aspeed/clk_ast2600.c
+++ b/drivers/clk/aspeed/clk_ast2600.c
@@ -481,7 +481,7 @@
 /**
  * @brief	lookup PLL divider config by input/output rate
  * @param[in]	*pll - PLL descriptor
- * @return	true - if PLL divider config is found, false - else
+ * Return:	true - if PLL divider config is found, false - else
  * The function caller shall fill "pll->in" and "pll->out",
  * then this function will search the lookup table
  * to find a valid PLL divider configuration.
diff --git a/drivers/clk/microchip/mpfs_clk.h b/drivers/clk/microchip/mpfs_clk.h
index 8e3fc55..442562a 100644
--- a/drivers/clk/microchip/mpfs_clk.h
+++ b/drivers/clk/microchip/mpfs_clk.h
@@ -13,7 +13,7 @@
  * @base: base address of the mpfs system register.
  * @clk_rate: the mpfs pll clock rate.
  * @parent_name: a pointer to parent clock name.
- * @return zero on success, or a negative error code.
+ * Return: zero on success, or a negative error code.
  */
 int mpfs_clk_register_cfgs(void __iomem *base, u32 clk_rate,
 			   const char *parent_name);
@@ -23,7 +23,7 @@
  * @base: base address of the mpfs system register.
  * @clk_rate: the mpfs pll clock rate.
  * @parent_name: a pointer to parent clock name.
- * @return zero on success, or a negative error code.
+ * Return: zero on success, or a negative error code.
  */
 int mpfs_clk_register_periphs(void __iomem *base, u32 clk_rate,
 			      const char *parent_name);
@@ -35,7 +35,7 @@
  * @table: a pointer to clock divider table.
  * @width: width of the divider bit field.
  * @flags: common clock framework flags.
- * @return divider value on success, or a negative error code.
+ * Return: divider value on success, or a negative error code.
  */
 int divider_get_val(unsigned long rate, unsigned long parent_rate,
 		    const struct clk_div_table *table,
diff --git a/drivers/core/acpi.c b/drivers/core/acpi.c
index 2176d8b..e988a65 100644
--- a/drivers/core/acpi.c
+++ b/drivers/core/acpi.c
@@ -109,7 +109,7 @@
  * @dev: Device that generated the data
  * @type: Table type it refers to
  * @start: The start of the data (the end is obtained from ctx->current)
- * @return 0 if OK, -ENOSPC if too many items, -ENOMEM if out of memory
+ * Return: 0 if OK, -ENOSPC if too many items, -ENOMEM if out of memory
  */
 static int acpi_add_item(struct acpi_ctx *ctx, struct udevice *dev,
 			 enum gen_type_t type, void *start)
@@ -179,7 +179,7 @@
  * @start: Start position to put the sorted items. The items will follow each
  *	other in sorted order
  * @type: Type of items to sort
- * @return 0 if OK, -ve on error
+ * Return: 0 if OK, -ve on error
  */
 static int sort_acpi_item_type(struct acpi_ctx *ctx, void *start,
 			       enum gen_type_t type)
diff --git a/drivers/core/device-remove.c b/drivers/core/device-remove.c
index 69c50da..e6ec6ff 100644
--- a/drivers/core/device-remove.c
+++ b/drivers/core/device-remove.c
@@ -170,7 +170,7 @@
  *
  * @flags: Flags passed to device_remove()
  * @drv_flags: Driver flags
- * @return 0 if the device should be removed,
+ * Return: 0 if the device should be removed,
  * -EKEYREJECTED if @flags includes a flag in DM_REMOVE_ACTIVE_ALL but
  *	@drv_flags does not (indicates that this device has nothing to do for
  *	DMA shutdown or OS prepare)
diff --git a/drivers/core/device.c b/drivers/core/device.c
index d917d4e..901c1e2 100644
--- a/drivers/core/device.c
+++ b/drivers/core/device.c
@@ -346,7 +346,7 @@
  * device_alloc_priv() - Allocate priv/plat data required by the device
  *
  * @dev: Device to process
- * @return 0 if OK, -ENOMEM if out of memory
+ * Return: 0 if OK, -ENOMEM if out of memory
  */
 static int device_alloc_priv(struct udevice *dev)
 {
diff --git a/drivers/core/lists.c b/drivers/core/lists.c
index d2e9dc5..22ccd9f 100644
--- a/drivers/core/lists.c
+++ b/drivers/core/lists.c
@@ -161,7 +161,7 @@
  * @param of_match:	List of compatible strings to match
  * @param of_idp:	Returns the match that was found
  * @param compat:	The compatible string to search for
- * @return 0 if there is a match, -ENOENT if no match
+ * Return: 0 if there is a match, -ENOENT if no match
  */
 static int driver_check_compatible(const struct udevice_id *of_match,
 				   const struct udevice_id **of_idp,
diff --git a/drivers/core/of_access.c b/drivers/core/of_access.c
index 3707143..c20b19c 100644
--- a/drivers/core/of_access.c
+++ b/drivers/core/of_access.c
@@ -463,7 +463,7 @@
  * @propname:	name of the property to be searched.
  * @len:	requested length of property value
  *
- * @return the property value on success, -EINVAL if the property does not
+ * Return: the property value on success, -EINVAL if the property does not
  * exist, -ENODATA if property does not have a value, and -EOVERFLOW if the
  * property data isn't large enough.
  */
diff --git a/drivers/core/root.c b/drivers/core/root.c
index 815173f..e3f8795 100644
--- a/drivers/core/root.c
+++ b/drivers/core/root.c
@@ -257,7 +257,7 @@
  * @node: Node to scan
  * @pre_reloc_only: If true, bind only drivers with the DM_FLAG_PRE_RELOC
  * flag. If false bind all drivers.
- * @return 0 if OK, -ve on error
+ * Return: 0 if OK, -ve on error
  */
 static int dm_scan_fdt_node(struct udevice *parent, ofnode parent_node,
 			    bool pre_reloc_only)
diff --git a/drivers/core/uclass.c b/drivers/core/uclass.c
index 336ea8d..2578803 100644
--- a/drivers/core/uclass.c
+++ b/drivers/core/uclass.c
@@ -46,7 +46,7 @@
  * uclass_add() - Create new uclass in list
  * @id: Id number to create
  * @ucp: Returns pointer to uclass, or NULL on error
- * @return 0 on success, -ve on error
+ * Return: 0 on success, -ve on error
  *
  * The new uclass is added to the list. There must be only one uclass for
  * each id.
diff --git a/drivers/crypto/ace_sha.h b/drivers/crypto/ace_sha.h
index a671b92..ad9e81a 100644
--- a/drivers/crypto/ace_sha.h
+++ b/drivers/crypto/ace_sha.h
@@ -306,7 +306,7 @@
  *			should allocate at least 32 bytes at pOut in advance.
  * @param hash_type SHA1 or SHA256
  *
- * @return		0 on Success, -1 on Failure (Timeout)
+ * Return:		0 on Success, -1 on Failure (Timeout)
  */
 int ace_sha_hash_digest(const uchar * in_addr, uint buflen,
 			uchar * out_addr, uint hash_type);
diff --git a/drivers/crypto/fsl/fsl_hash.c b/drivers/crypto/fsl/fsl_hash.c
index 8039473..2379b70 100644
--- a/drivers/crypto/fsl/fsl_hash.c
+++ b/drivers/crypto/fsl/fsl_hash.c
@@ -57,7 +57,7 @@
  *
  * @ctxp: Pointer to the pointer of the context for hashing
  * @caam_algo: Enum for SHA1 or SHA256
- * @return 0 if ok, -ENOMEM on error
+ * Return: 0 if ok, -ENOMEM on error
  */
 static int caam_hash_init(void **ctxp, enum caam_hash_algos caam_algo)
 {
@@ -80,7 +80,7 @@
  * @size: Size of the buffer being hashed
  * @is_last: 1 if this is the last update; 0 otherwise
  * @caam_algo: Enum for SHA1 or SHA256
- * @return 0 if ok, -EINVAL on error
+ * Return: 0 if ok, -EINVAL on error
  */
 static int caam_hash_update(void *hash_ctx, const void *buf,
 			    unsigned int size, int is_last,
@@ -126,7 +126,7 @@
  * @dest_buf: Pointer to the destination buffer where hash is to be copied
  * @size: Size of the buffer being hashed
  * @caam_algo: Enum for SHA1 or SHA256
- * @return 0 if ok, -EINVAL on error
+ * Return: 0 if ok, -EINVAL on error
  */
 static int caam_hash_finish(void *hash_ctx, void *dest_buf,
 			    int size, enum caam_hash_algos caam_algo)
diff --git a/drivers/crypto/fsl/jobdesc.c b/drivers/crypto/fsl/jobdesc.c
index c350b32..542b165 100644
--- a/drivers/crypto/fsl/jobdesc.c
+++ b/drivers/crypto/fsl/jobdesc.c
@@ -22,7 +22,7 @@
  * Secure memory run command
  *
  * @param   sec_mem_cmd  Secure memory command register
- * @return  cmd_status  Secure memory command status register
+ * Return:  cmd_status  Secure memory command status register
  */
 uint32_t secmem_set_cmd(uint32_t sec_mem_cmd)
 {
@@ -52,7 +52,7 @@
  *
  * @param   page  Number of the page to allocate.
  * @param   partition  Number of the partition to allocate.
- * @return  0 on success, ERROR_IN_PAGE_ALLOC otherwise
+ * Return:  0 on success, ERROR_IN_PAGE_ALLOC otherwise
  */
 int caam_page_alloc(uint8_t page_num, uint8_t partition_num)
 {
diff --git a/drivers/fastboot/fb_getvar.c b/drivers/fastboot/fb_getvar.c
index d43f2cf..018989d 100644
--- a/drivers/fastboot/fb_getvar.c
+++ b/drivers/fastboot/fb_getvar.c
@@ -96,7 +96,7 @@
  * @param[in] part_name Info for which partition name to look for
  * @param[in,out] response Pointer to fastboot response buffer
  * @param[out] size If not NULL, will contain partition size
- * @return Partition number or negative value on error
+ * Return: Partition number or negative value on error
  */
 static int getvar_get_part_info(const char *part_name, char *response,
 				size_t *size)
diff --git a/drivers/fastboot/fb_mmc.c b/drivers/fastboot/fb_mmc.c
index 2738dc8..2710879 100644
--- a/drivers/fastboot/fb_mmc.c
+++ b/drivers/fastboot/fb_mmc.c
@@ -289,7 +289,7 @@
  * @param[in] info Boot partition info
  * @param[out] hdr Where to store read boot image header
  *
- * @return Boot image header sectors count or 0 on error
+ * Return: Boot image header sectors count or 0 on error
  */
 static lbaint_t fb_mmc_get_boot_header(struct blk_desc *dev_desc,
 				       struct disk_partition *info,
@@ -336,7 +336,7 @@
  * @param download_buffer Address to fastboot buffer with zImage in it
  * @param download_bytes Size of fastboot buffer, in bytes
  *
- * @return 0 on success or -1 on error
+ * Return: 0 on success or -1 on error
  */
 static int fb_mmc_update_zimage(struct blk_desc *dev_desc,
 				void *download_buffer,
diff --git a/drivers/gpio/gpio-uclass.c b/drivers/gpio/gpio-uclass.c
index 1c5e2e7..125ae53 100644
--- a/drivers/gpio/gpio-uclass.c
+++ b/drivers/gpio/gpio-uclass.c
@@ -53,7 +53,7 @@
  *
  * @gpio:	The numeric representation of the GPIO
  * @desc:	Returns description (desc->flags will always be 0)
- * @return 0 if found, -ENOENT if not found
+ * Return: 0 if found, -ENOENT if not found
  */
 static int gpio_to_device(unsigned int gpio, struct gpio_desc *desc)
 {
@@ -659,7 +659,7 @@
  *
  * @desc:	GPIO description
  * @flags:	flags value to set
- * @return 0 if OK, -ve on error
+ * Return: 0 if OK, -ve on error
  */
 static int _dm_gpio_set_flags(struct gpio_desc *desc, ulong flags)
 {
diff --git a/drivers/gpio/iproc_gpio.c b/drivers/gpio/iproc_gpio.c
index 8c143e9..7187d32 100644
--- a/drivers/gpio/iproc_gpio.c
+++ b/drivers/gpio/iproc_gpio.c
@@ -123,7 +123,7 @@
  * in private data structure to use it later while enabling gpio.
  *
  * @dev: pointer to GPIO device
- * @return 0 on success and -ENOMEM on failure
+ * Return: 0 on success and -ENOMEM on failure
  */
 static int iproc_get_gpio_pctrl_mapping(struct udevice *dev)
 {
diff --git a/drivers/gpio/sunxi_gpio.c b/drivers/gpio/sunxi_gpio.c
index cdbc40d..caefb14 100644
--- a/drivers/gpio/sunxi_gpio.c
+++ b/drivers/gpio/sunxi_gpio.c
@@ -225,7 +225,7 @@
  * GPIO banks are named A, B, C, ...
  *
  * @bank:	Bank number (0, 1..n-1)
- * @return allocated string containing the name
+ * Return: allocated string containing the name
  */
 static char *gpio_bank_name(int bank)
 {
diff --git a/drivers/gpio/tegra_gpio.c b/drivers/gpio/tegra_gpio.c
index e00f104..4291e49 100644
--- a/drivers/gpio/tegra_gpio.c
+++ b/drivers/gpio/tegra_gpio.c
@@ -264,7 +264,7 @@
  * GPIOs are named A, B, C, ..., Z, AA, BB, CC, ...
  *
  * @base_port: Base port number (0, 1..n-1)
- * @return allocated string containing the name
+ * Return: allocated string containing the name
  */
 static char *gpio_port_name(int base_port)
 {
diff --git a/drivers/i2c/designware_i2c.c b/drivers/i2c/designware_i2c.c
index d95f776..1aae6b6 100644
--- a/drivers/i2c/designware_i2c.c
+++ b/drivers/i2c/designware_i2c.c
@@ -57,7 +57,7 @@
  *
  * @ic_clk: Input clock in Hz
  * @period_ns: Period to represent, in ns
- * @return calculated count
+ * Return: calculated count
  */
 static uint calc_counts(uint ic_clk, uint period_ns)
 {
@@ -123,7 +123,7 @@
  * @ic_clk: IC clock speed in Hz
  * @spk_cnt: Spike-suppression count
  * @config: Returns value to use
- * @return 0 if OK, -EINVAL if the calculation failed due to invalid data
+ * Return: 0 if OK, -EINVAL if the calculation failed due to invalid data
  */
 static int dw_i2c_calc_timing(struct dw_i2c *priv, enum i2c_speed_mode mode,
 			      int ic_clk, int spk_cnt,
@@ -202,7 +202,7 @@
  * @speed: Required i2c speed in Hz
  * @bus_clk: Input clock to the I2C controller in Hz (e.g. IC_CLK)
  * @config: Returns the config to use for this speed
- * @return 0 if OK, -ve on error
+ * Return: 0 if OK, -ve on error
  */
 static int calc_bus_speed(struct dw_i2c *priv, struct i2c_regs *regs, int speed,
 			  ulong bus_clk, struct dw_i2c_speed_config *config)
@@ -271,7 +271,7 @@
  * @i2c_base: Registers for the I2C controller
  * @speed: Required i2c speed in Hz
  * @bus_clk: Input clock to the I2C controller in Hz (e.g. IC_CLK)
- * @return 0 if OK, -ve on error
+ * Return: 0 if OK, -ve on error
  */
 static int _dw_i2c_set_bus_speed(struct dw_i2c *priv, struct i2c_regs *i2c_base,
 				 unsigned int speed, unsigned int bus_clk)
diff --git a/drivers/i2c/designware_i2c.h b/drivers/i2c/designware_i2c.h
index b56d7dd..a9c50c9 100644
--- a/drivers/i2c/designware_i2c.h
+++ b/drivers/i2c/designware_i2c.h
@@ -223,7 +223,7 @@
  * @dev: I2C bus to check
  * @speed_hz: Requested speed in Hz
  * @config: Returns config to use for that speed
- * @return 0 if OK, -ve on error
+ * Return: 0 if OK, -ve on error
  */
 int dw_i2c_gen_speed_config(const struct udevice *dev, int speed_hz,
 			    struct dw_i2c_speed_config *config);
diff --git a/drivers/i2c/i2c-uclass.c b/drivers/i2c/i2c-uclass.c
index 71bc2b5..5539bec 100644
--- a/drivers/i2c/i2c-uclass.c
+++ b/drivers/i2c/i2c-uclass.c
@@ -53,7 +53,7 @@
  * @offset:	Byte offset within chip
  * @offset_buf:	Place to put byte offset
  * @msg:	Message buffer
- * @return 0 if OK, -EADDRNOTAVAIL if the offset length is 0. In that case the
+ * Return: 0 if OK, -EADDRNOTAVAIL if the offset length is 0. In that case the
  * message is still set up but will not contain an offset.
  */
 static int i2c_setup_offset(struct dm_i2c_chip *chip, uint offset,
@@ -268,7 +268,7 @@
  * @bus:	Bus to probe
  * @chip_addr:	Chip address to probe
  * @flags:	Flags for the chip
- * @return 0 if found, -ENOSYS if the driver is invalid, -EREMOTEIO if the chip
+ * Return: 0 if found, -ENOSYS if the driver is invalid, -EREMOTEIO if the chip
  * does not respond to probe
  */
 static int i2c_probe_chip(struct udevice *bus, uint chip_addr,
diff --git a/drivers/i2c/mvtwsi.c b/drivers/i2c/mvtwsi.c
index ff21e3c..bad4b14 100644
--- a/drivers/i2c/mvtwsi.c
+++ b/drivers/i2c/mvtwsi.c
@@ -177,7 +177,7 @@
  * calc_tick() - Calculate the duration of a clock cycle from the I2C speed
  *
  * @speed:	The speed in Hz to calculate the clock cycle duration for.
- * @return The duration of a clock cycle in ns.
+ * Return: The duration of a clock cycle in ns.
  */
 inline uint calc_tick(uint speed)
 {
@@ -192,7 +192,7 @@
  * twsi_get_base() - Get controller register base for specified adapter
  *
  * @adap:	Adapter to get the register base for.
- * @return Register base for the specified adapter.
+ * Return: Register base for the specified adapter.
  */
 static struct mvtwsi_registers *twsi_get_base(struct i2c_adapter *adap)
 {
@@ -251,7 +251,7 @@
  * @lc:		The last value of the control register.
  * @ls:		The last value of the status register.
  * @es:		The expected value of the status register.
- * @return The generated error code.
+ * Return: The generated error code.
  */
 inline uint mvtwsi_error(uint ec, uint lc, uint ls, uint es)
 {
@@ -264,7 +264,7 @@
 /*
  * twsi_wait() - Wait for I2C bus interrupt flag and check status, or time out.
  *
- * @return Zero if status is as expected, or a non-zero code if either a time
+ * Return: Zero if status is as expected, or a non-zero code if either a time
  *	   out occurred, or the status was not the expected one.
  */
 static int twsi_wait(struct mvtwsi_registers *twsi, int expected_status,
@@ -312,7 +312,7 @@
  * @expected_status:	The I2C bus status expected to be asserted after the
  *			operation completion.
  * @tick:		The duration of a clock cycle at the current I2C speed.
- * @return Zero if status is as expected, or a non-zero code if either a time
+ * Return: Zero if status is as expected, or a non-zero code if either a time
  *	   out occurred or the status was not the expected one.
  */
 static int twsi_start(struct mvtwsi_registers *twsi, int expected_status,
@@ -335,7 +335,7 @@
  * @expected_status:	The I2C bus status expected to be asserted after the
  *			operation completion.
  * @tick:		The duration of a clock cycle at the current I2C speed.
- * @return Zero if status is as expected, or a non-zero code if either a time
+ * Return: Zero if status is as expected, or a non-zero code if either a time
  *	   out occurred or the status was not the expected one.
  */
 static int twsi_send(struct mvtwsi_registers *twsi, u8 byte,
@@ -360,7 +360,7 @@
  * @ack_flag:		Flag that determines whether the received byte should
  *			be acknowledged by the controller or not (sent ACK/NAK).
  * @tick:		The duration of a clock cycle at the current I2C speed.
- * @return Zero if status is as expected, or a non-zero code if either a time
+ * Return: Zero if status is as expected, or a non-zero code if either a time
  *	   out occurred or the status was not the expected one.
  */
 static int twsi_recv(struct mvtwsi_registers *twsi, u8 *byte, int ack_flag,
@@ -391,7 +391,7 @@
  *
  * @twsi:	The MVTWSI register structure to use.
  * @tick:	The duration of a clock cycle at the current I2C speed.
- * @return Zero if the operation succeeded, or a non-zero code if a time out
+ * Return: Zero if the operation succeeded, or a non-zero code if a time out
  *	   occurred.
  */
 static int twsi_stop(struct mvtwsi_registers *twsi, uint tick)
@@ -422,7 +422,7 @@
  *
  * @n:		Parameter 'n' for the frequency calculation algorithm.
  * @m:		Parameter 'm' for the frequency calculation algorithm.
- * @return The I2C frequency corresponding to the passed m and n parameters.
+ * Return: The I2C frequency corresponding to the passed m and n parameters.
  */
 static uint twsi_calc_freq(const int n, const int m)
 {
@@ -458,7 +458,7 @@
  * @twsi:		The MVTWSI register structure to use.
  * @requested_speed:	The desired frequency the controller should run at
  *			in Hz.
- * @return The actual frequency the controller was configured to.
+ * Return: The actual frequency the controller was configured to.
  */
 static uint __twsi_i2c_set_bus_speed(struct mvtwsi_registers *twsi,
 				     uint requested_speed)
@@ -500,7 +500,7 @@
  * @slaveadd:		The I2C address to be set for the I2C master.
  * @actual_speed:	A output parameter that receives the actual frequency
  *			in Hz the controller was set to by the function.
- * @return Zero if the operation succeeded, or a non-zero code if a time out
+ * Return: Zero if the operation succeeded, or a non-zero code if a time out
  *	   occurred.
  */
 static void __twsi_i2c_init(struct mvtwsi_registers *twsi, int speed,
@@ -539,7 +539,7 @@
  * @addr:			The address byte to be sent.
  * @tick:			The duration of a clock cycle at the current
  *				I2C speed.
- * @return Zero if the operation succeeded, or a non-zero code if a time out or
+ * Return: Zero if the operation succeeded, or a non-zero code if a time out or
  *	   unexpected I2C status occurred.
  */
 static int i2c_begin(struct mvtwsi_registers *twsi, int expected_start_status,
@@ -571,7 +571,7 @@
  * @twsi:	The MVTWSI register structure to use.
  * @chip:	The chip address to probe.
  * @tick:	The duration of a clock cycle at the current I2C speed.
- * @return Zero if the operation succeeded, or a non-zero code if a time out or
+ * Return: Zero if the operation succeeded, or a non-zero code if a time out or
  *	   unexpected I2C status occurred.
  */
 static int __twsi_i2c_probe_chip(struct mvtwsi_registers *twsi, uchar chip,
@@ -610,7 +610,7 @@
  *		a size of at least 'length' bytes).
  * @length:	The amount of data to be read from the chip in bytes.
  * @tick:	The duration of a clock cycle at the current I2C speed.
- * @return Zero if the operation succeeded, or a non-zero code if a time out or
+ * Return: Zero if the operation succeeded, or a non-zero code if a time out or
  *	   unexpected I2C status occurred.
  */
 static int __twsi_i2c_read(struct mvtwsi_registers *twsi, uchar chip,
@@ -659,7 +659,7 @@
  * @data:	The buffer containing the data to be sent to the chip.
  * @length:	The length of data to be sent to the chip in bytes.
  * @tick:	The duration of a clock cycle at the current I2C speed.
- * @return Zero if the operation succeeded, or a non-zero code if a time out or
+ * Return: Zero if the operation succeeded, or a non-zero code if a time out or
  *	   unexpected I2C status occurred.
  */
 static int __twsi_i2c_write(struct mvtwsi_registers *twsi, uchar chip,
diff --git a/drivers/i2c/octeon_i2c.c b/drivers/i2c/octeon_i2c.c
index ea2cc33..50199ff 100644
--- a/drivers/i2c/octeon_i2c.c
+++ b/drivers/i2c/octeon_i2c.c
@@ -193,7 +193,7 @@
  *
  * @code	status code
  * @final_read	true if this is the final read operation
- * @return	true if arbitration has been lost, false if it hasn't been lost.
+ * Return:	true if arbitration has been lost, false if it hasn't been lost.
  */
 static int twsi_i2c_lost_arb(u8 code, int final_read)
 {
@@ -249,7 +249,7 @@
  *
  * @base	Base address of i2c registers
  * @val		value to write
- * @return	0 for success, otherwise error
+ * Return:	0 for success, otherwise error
  */
 static u64 twsi_write_sw(void __iomem *base, u64 val)
 {
@@ -274,7 +274,7 @@
  *
  * @base	Base address of i2c registers
  * @val		value for eia and op, etc. to read
- * @return	value of the register
+ * Return:	value of the register
  */
 static u64 twsi_read_sw(void __iomem *base, u64 val)
 {
@@ -316,7 +316,7 @@
  * Reads the TWSI Control Register
  *
  * @base	Base address for i2c
- * @return	8-bit TWSI control register
+ * Return:	8-bit TWSI control register
  */
 static u8 twsi_read_ctl(void __iomem *base)
 {
@@ -334,7 +334,7 @@
  * Read i2c status register
  *
  * @base	Base address of i2c registers
- * @return	value of status register
+ * Return:	value of status register
  */
 static u8 twsi_read_status(void __iomem *base)
 {
@@ -350,7 +350,7 @@
  * Waits for an i2c operation to complete
  *
  * @param	base	Base address of registers
- * @return	0 for success, 1 if timeout
+ * Return:	0 for success, 1 if timeout
  */
 static int twsi_wait(void __iomem *base)
 {
@@ -384,7 +384,7 @@
  * Sends an i2c start condition
  *
  * @base	base address of registers
- * @return	0 for success, otherwise error
+ * Return:	0 for success, otherwise error
  */
 static int twsi_start(void __iomem *base)
 {
@@ -415,7 +415,7 @@
  * Sends an i2c stop condition
  *
  * @base	register base address
- * @return	0 for success, -1 if error
+ * Return:	0 for success, -1 if error
  */
 static int twsi_stop(void __iomem *base)
 {
@@ -439,7 +439,7 @@
  * @slave_addr	address of slave to write to
  * @buffer	Pointer to buffer to write
  * @length	Number of bytes in buffer to write
- * @return	0 for success, otherwise error
+ * Return:	0 for success, otherwise error
  */
 static int twsi_write_data(void __iomem *base, u8  slave_addr,
 			   u8 *buffer, unsigned int length)
@@ -537,7 +537,7 @@
  * @slave_addr	i2c bus address to read from
  * @buffer	buffer to read into
  * @length	number of bytes to read
- * @return	0 for success, otherwise error
+ * Return:	0 for success, otherwise error
  */
 static int twsi_read_data(void __iomem *base, u8 slave_addr,
 			  u8 *buffer, unsigned int length)
@@ -605,7 +605,7 @@
  * @speed	Speed to set
  * @m_div	Pointer to M divisor
  * @n_div	Pointer to N divisor
- * @return	0 for success, otherwise error
+ * Return:	0 for success, otherwise error
  */
 static void twsi_calc_div(struct udevice *bus, ulong sclk, unsigned int speed,
 			  int *m_div, int *n_div)
@@ -651,7 +651,7 @@
  *
  * @base	Base address of twsi registers
  * @slave_addr	I2C slave address to configure this controller to
- * @return	0 for success, otherwise error
+ * Return:	0 for success, otherwise error
  */
 static int twsi_init(void __iomem *base, int slaveaddr)
 {
@@ -681,7 +681,7 @@
  * @bus		i2c bus to transfer data over
  * @msg		Array of i2c messages
  * @nmsgs	Number of messages to send/receive
- * @return	0 for success, otherwise error
+ * Return:	0 for success, otherwise error
  */
 static int octeon_i2c_xfer(struct udevice *bus, struct i2c_msg *msg,
 			   int nmsgs)
@@ -718,7 +718,7 @@
  *
  * @bus		i2c bus to transfer data over
  * @speed	Speed in Hz to set
- * @return	0 for success, otherwise error
+ * Return:	0 for success, otherwise error
  */
 static int octeon_i2c_set_bus_speed(struct udevice *bus, unsigned int speed)
 {
@@ -773,7 +773,7 @@
  * Driver probe function
  *
  * @dev		I2C device to probe
- * @return	0 for success, otherwise error
+ * Return:	0 for success, otherwise error
  */
 static int octeon_i2c_probe(struct udevice *dev)
 {
diff --git a/drivers/i2c/s3c24x0_i2c.c b/drivers/i2c/s3c24x0_i2c.c
index e0f499d..aaccb3a 100644
--- a/drivers/i2c/s3c24x0_i2c.c
+++ b/drivers/i2c/s3c24x0_i2c.c
@@ -27,7 +27,7 @@
  * Wait til the byte transfer is completed.
  *
  * @param i2c- pointer to the appropriate i2c register bank.
- * @return I2C_OK, if transmission was ACKED
+ * Return: I2C_OK, if transmission was ACKED
  *         I2C_NACK, if transmission was NACKED
  *         I2C_NOK_TIMEOUT, if transaction did not complete in I2C_TIMEOUT_MS
  */
diff --git a/drivers/input/cros_ec_keyb.c b/drivers/input/cros_ec_keyb.c
index dc3b08c..c485346 100644
--- a/drivers/input/cros_ec_keyb.c
+++ b/drivers/input/cros_ec_keyb.c
@@ -38,7 +38,7 @@
  * @param keys		List of keys that we have detected
  * @param max_count	Maximum number of keys to return
  * @param samep		Set to true if this scan repeats the last, else false
- * @return number of pressed keys, 0 for none, -EIO on error
+ * Return: number of pressed keys, 0 for none, -EIO on error
  */
 static int check_for_keys(struct udevice *dev, struct key_matrix_key *keys,
 			  int max_count, bool *samep)
@@ -112,7 +112,7 @@
  * characters
  *
  * @param input		Input configuration
- * @return 1, to indicate that we have something to look at
+ * Return: 1, to indicate that we have something to look at
  */
 int cros_ec_kbc_check(struct input_config *input)
 {
@@ -176,7 +176,7 @@
  * @param blob		Device tree blob
  * @param node		Node to decode from
  * @param config	Configuration data read from fdt
- * @return 0 if ok, -1 on error
+ * Return: 0 if ok, -1 on error
  */
 static int cros_ec_keyb_decode_fdt(struct udevice *dev,
 				   struct cros_ec_keyb_priv *config)
diff --git a/drivers/input/i8042.c b/drivers/input/i8042.c
index d3743dc..3563dc9 100644
--- a/drivers/input/i8042.c
+++ b/drivers/input/i8042.c
@@ -78,7 +78,7 @@
  * check_leds() - Check the keyboard LEDs and update them it needed
  *
  * @ret:	Value to return
- * @return value of @ret
+ * Return: value of @ret
  */
 static int i8042_kbd_update_leds(struct udevice *dev, int leds)
 {
@@ -199,7 +199,7 @@
  * Disables the keyboard so that key strokes no longer generate scancodes to
  * the host.
  *
- * @return 0 if ok, -1 if keyboard input was found while disabling
+ * Return: 0 if ok, -1 if keyboard input was found while disabling
  */
 static int i8042_disable(void)
 {
@@ -312,7 +312,7 @@
  * wait for the keyboard to init. We do this only when a key is first
  * read - see kbd_wait_for_fifo_init().
  *
- * @return 0 if ok, -ve on error
+ * Return: 0 if ok, -ve on error
  */
 static int i8042_kbd_probe(struct udevice *dev)
 {
diff --git a/drivers/input/input.c b/drivers/input/input.c
index c1c5e42..a4341e8 100644
--- a/drivers/input/input.c
+++ b/drivers/input/input.c
@@ -253,7 +253,7 @@
  * @param config	Input state
  * @param key		Key code to process
  * @param release	0 if a press, 1 if a release
- * @return pointer to keycode->ascii translation table that should be used
+ * Return: pointer to keycode->ascii translation table that should be used
  */
 static struct input_key_xlate *process_modifier(struct input_config *config,
 						int key, int release)
@@ -322,7 +322,7 @@
  * @param array	Array to search
  * @param count	Number of elements in array
  * @param key	Key value to find
- * @return element where value was first found, -1 if none
+ * Return: element where value was first found, -1 if none
  */
 static int array_search(int *array, int count, int key)
 {
@@ -347,7 +347,7 @@
  * @param count		Number of elements to sort
  * @param order		Array containing ordering elements
  * @param ocount	Number of ordering elements
- * @return number of elements in dest that are in order (these will be at the
+ * Return: number of elements in dest that are in order (these will be at the
  *	start of dest).
  */
 static int sort_array_by_ordering(int *dest, int count, int *order,
@@ -417,7 +417,7 @@
  *			be at least ANSI_CHAR_MAX bytes long, to allow for
  *			an ANSI sequence.
  * @param max_chars	Maximum number of characters to add to output_ch
- * @return number of characters output, if the key was converted, otherwise 0.
+ * Return: number of characters output, if the key was converted, otherwise 0.
  *	This may be larger than max_chars, in which case the overflow
  *	characters are not output.
  */
@@ -462,7 +462,7 @@
  *			ANSI sequences.
  * @param max_chars	Maximum number of characters to add to output_ch
  * @param same		Number of key codes which are the same
- * @return number of characters written into output_ch, or -1 if we would
+ * Return: number of characters written into output_ch, or -1 if we would
  *	exceed max_chars chars.
  */
 static int input_keycodes_to_ascii(struct input_config *config,
diff --git a/drivers/input/key_matrix.c b/drivers/input/key_matrix.c
index 4631728..e2fb2e1 100644
--- a/drivers/input/key_matrix.c
+++ b/drivers/input/key_matrix.c
@@ -22,7 +22,7 @@
  * @param config	Keyboard matrix config
  * @param keys		List of keys to check
  * @param valid		Number of valid keypresses to check
- * @return 0 if no ghosting is possible, 1 if it is
+ * Return: 0 if no ghosting is possible, 1 if it is
  */
 static int has_ghosting(struct key_matrix *config, struct key_matrix_key *keys,
 			int valid)
@@ -103,7 +103,7 @@
  * @param len           Number of entries in keycode table
  * @param map_keycode   Key code to find in the map
  * @param pos           Returns position of map_keycode, if found, else -1
- * @return map  Pointer to allocated map
+ * Return: map  Pointer to allocated map
  */
 static uchar *create_keymap(struct key_matrix *config, const u32 *data, int len,
 			    int map_keycode, int *pos)
diff --git a/drivers/input/tegra-kbc.c b/drivers/input/tegra-kbc.c
index 5113041..d4741a7 100644
--- a/drivers/input/tegra-kbc.c
+++ b/drivers/input/tegra-kbc.c
@@ -66,7 +66,7 @@
  * @param priv		Keyboard private data
  * @param fifo		Place to put fifo results
  * @param max_keycodes	Maximum number of key codes to put in the fifo
- * @return number of items put into fifo
+ * Return: number of items put into fifo
  */
 static int tegra_kbc_find_keys(struct tegra_kbd_priv *priv, int *fifo,
 			       int max_keycodes)
@@ -179,7 +179,7 @@
  * characters
  *
  * @param input		Input configuration
- * @return 1, to indicate that we have something to look at
+ * Return: 1, to indicate that we have something to look at
  */
 static int tegra_kbc_check(struct input_config *input)
 {
@@ -281,7 +281,7 @@
  * wait for the keyboard to init. We do this only when a key is first
  * read - see kbd_wait_for_fifo_init().
  *
- * @return 0 if ok, -ve on error
+ * Return: 0 if ok, -ve on error
  */
 static int tegra_kbd_probe(struct udevice *dev)
 {
diff --git a/drivers/misc/cros_ec.c b/drivers/misc/cros_ec.c
index c627c1d..e131ecc 100644
--- a/drivers/misc/cros_ec.c
+++ b/drivers/misc/cros_ec.c
@@ -117,7 +117,7 @@
  *
  * @param data	Data block to checksum
  * @param size	Size of data block in bytes
- * @return checksum value (0 to 255)
+ * Return: checksum value (0 to 255)
  */
 int cros_ec_calc_checksum(const uint8_t *data, int size)
 {
@@ -138,7 +138,7 @@
  * @param cmd_version	Version of command to send (EC_VER_...)
  * @param dout          Output data (may be NULL If dout_len=0)
  * @param dout_len      Size of output data in bytes
- * @return packet size in bytes, or <0 if error.
+ * Return: packet size in bytes, or <0 if error.
  */
 static int create_proto3_request(struct cros_ec_dev *cdev,
 				 int cmd, int cmd_version,
@@ -178,7 +178,7 @@
  *
  * @param dev		CROS-EC device
  * @param din_len       Maximum size of response in bytes
- * @return maximum expected number of bytes in response, or <0 if error.
+ * Return: maximum expected number of bytes in response, or <0 if error.
  */
 static int prepare_proto3_response_buffer(struct cros_ec_dev *cdev, int din_len)
 {
@@ -202,7 +202,7 @@
  * @param dev		CROS-EC device
  * @param dinp          Returns pointer to response data
  * @param din_len       Maximum size of response in bytes
- * @return number of bytes of response data, or <0 if error. Note that error
+ * Return: number of bytes of response data, or <0 if error. Note that error
  * codes can be from errno.h or -ve EC_RES_INVALID_CHECKSUM values (and they
  * overlap!)
  */
@@ -318,7 +318,7 @@
  *			If not NULL, it will be updated to point to the data
  *			and will always be double word aligned (64-bits)
  * @param din_len       Maximum size of response in bytes
- * @return number of bytes in response, or -ve on error
+ * Return: number of bytes in response, or -ve on error
  */
 static int ec_command_inptr(struct udevice *dev, uint cmd,
 			    int cmd_version, const void *dout, int dout_len,
@@ -385,7 +385,7 @@
  *			It not NULL, it is a place for ec_command() to copy the
  *      data to.
  * @param din_len       Maximum size of response in bytes
- * @return number of bytes in response, or -ve on error
+ * Return: number of bytes in response, or -ve on error
  */
 static int ec_command(struct udevice *dev, uint cmd, int cmd_version,
 		      const void *dout, int dout_len,
@@ -872,7 +872,7 @@
  * @param data		Pointer to data buffer to write
  * @param offset	Offset within flash to write to.
  * @param size		Number of bytes to write
- * @return 0 if ok, -1 on error
+ * Return: 0 if ok, -1 on error
  */
 static int cros_ec_flash_write_block(struct udevice *dev, const uint8_t *data,
 				     uint32_t offset, uint32_t size)
@@ -913,7 +913,7 @@
  *
  * @param data		Pointer to data to check (must be word-aligned)
  * @param size		Number of bytes to check (must be word-aligned)
- * @return 0 if erased, non-zero if any word is not erased
+ * Return: 0 if erased, non-zero if any word is not erased
  */
 static int cros_ec_data_is_erased(const uint32_t *data, int size)
 {
@@ -985,7 +985,7 @@
  *
  * @param me     CrosEc instance
  * @param region Region to run verification on
- * @return 0 if success or not applicable. Non-zero if verification failed.
+ * Return: 0 if success or not applicable. Non-zero if verification failed.
  */
 int cros_ec_efs_verify(struct udevice *dev, enum ec_flash_region region)
 {
@@ -1022,7 +1022,7 @@
  * @param data		Pointer to data buffer to read into
  * @param offset	Offset within flash to read from
  * @param size		Number of bytes to read
- * @return 0 if ok, -1 on error
+ * Return: 0 if ok, -1 on error
  */
 static int cros_ec_flash_read_block(struct udevice *dev, uint8_t *data,
 				    uint32_t offset, uint32_t size)
diff --git a/drivers/misc/cros_ec_lpc.c b/drivers/misc/cros_ec_lpc.c
index f403759..1a8a813 100644
--- a/drivers/misc/cros_ec_lpc.c
+++ b/drivers/misc/cros_ec_lpc.c
@@ -186,7 +186,7 @@
  *
  * @param dev		CROS_EC device
  * @param blob		Device tree blob
- * @return 0 if ok, -1 on error
+ * Return: 0 if ok, -1 on error
  */
 int cros_ec_lpc_init(struct cros_ec_dev *dev, const void *blob)
 {
diff --git a/drivers/misc/cros_ec_sandbox.c b/drivers/misc/cros_ec_sandbox.c
index 2173517..8dbe0b1 100644
--- a/drivers/misc/cros_ec_sandbox.c
+++ b/drivers/misc/cros_ec_sandbox.c
@@ -186,7 +186,7 @@
  *
  * @param ec	Current emulated EC state
  * @param entry	Flash map entry containing the image to check
- * @return actual image size in bytes, 0 if the image contains no content or
+ * Return: actual image size in bytes, 0 if the image contains no content or
  * error.
  */
 static int get_image_used(struct ec_state *ec, struct fmap_entry *entry)
@@ -214,7 +214,7 @@
  *
  * @param ec	Current emulated EC state
  * @param node	Keyboard node of device tree containing keyscan information
- * @return 0 if ok, -1 on error
+ * Return: 0 if ok, -1 on error
  */
 static int keyscan_read_fdt_matrix(struct ec_state *ec, ofnode node)
 {
@@ -263,7 +263,7 @@
  * @param ec	Current emulated EC state
  * @param scan	Place to put keyscan bytes for the keyscan message (must hold
  *		enough space for a full keyscan)
- * @return number of bytes of valid scan data
+ * Return: number of bytes of valid scan data
  */
 static int cros_ec_keyscan(struct ec_state *ec, uint8_t *scan)
 {
@@ -305,7 +305,7 @@
  * @param req_data	Pointer to body of request
  * @param resp_hdr	Pointer to place to put response header
  * @param resp_data	Pointer to place to put response data, if any
- * @return length of response data, or 0 for no response data, or -1 on error
+ * Return: length of response data, or 0 for no response data, or -1 on error
  */
 static int process_cmd(struct ec_state *ec,
 		       struct ec_host_request *req_hdr, const void *req_data,
diff --git a/drivers/misc/cros_ec_spi.c b/drivers/misc/cros_ec_spi.c
index bbc9630..001f0a8 100644
--- a/drivers/misc/cros_ec_spi.c
+++ b/drivers/misc/cros_ec_spi.c
@@ -75,7 +75,7 @@
  * @param dinp		Returns pointer to response data. This will be
  *			untouched unless we return a value > 0.
  * @param din_len	Maximum size of response in bytes
- * @return number of bytes in response, or -1 on error
+ * Return: number of bytes in response, or -1 on error
  */
 int cros_ec_spi_command(struct udevice *udev, uint8_t cmd, int cmd_version,
 		     const uint8_t *dout, int dout_len,
diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
index 4d9871d..f6ccd83 100644
--- a/drivers/mmc/mmc.c
+++ b/drivers/mmc/mmc.c
@@ -215,7 +215,7 @@
  * @data:	additional data to send/receive
  * @retries:	how many times to retry; mmc_send_cmd is always called at least
  *              once
- * @return 0 if ok, -ve on error
+ * Return: 0 if ok, -ve on error
  */
 static int mmc_send_cmd_retry(struct mmc *mmc, struct mmc_cmd *cmd,
 			      struct mmc_data *data, uint retries)
@@ -239,7 +239,7 @@
  * @quirk:	retry only if this quirk is enabled
  * @retries:	how many times to retry; mmc_send_cmd is always called at least
  *              once
- * @return 0 if ok, -ve on error
+ * Return: 0 if ok, -ve on error
  */
 static int mmc_send_cmd_quirks(struct mmc *mmc, struct mmc_cmd *cmd,
 			       struct mmc_data *data, u32 quirk, uint retries)
diff --git a/drivers/mmc/mmc_private.h b/drivers/mmc/mmc_private.h
index a6cd250..b321237 100644
--- a/drivers/mmc/mmc_private.h
+++ b/drivers/mmc/mmc_private.h
@@ -91,7 +91,7 @@
 /**
  * mmc_get_next_devnum() - Get the next available MMC device number
  *
- * @return next available device number (0 = first), or -ve on error
+ * Return: next available device number (0 = first), or -ve on error
  */
 int mmc_get_next_devnum(void);
 
@@ -117,7 +117,7 @@
  *
  * @mmc:	MMC device
  * @part_num:	Hardware partition number
- * @return 0 if OK, -ve on error
+ * Return: 0 if OK, -ve on error
  */
 int mmc_switch_part(struct mmc *mmc, unsigned int part_num);
 
@@ -128,7 +128,7 @@
  * @set:	Unused
  * @index:	Cmdarg index
  * @value:	Cmdarg value
- * @return 0 if OK, -ve on error
+ * Return: 0 if OK, -ve on error
  */
 int mmc_switch(struct mmc *mmc, u8 set, u8 index, u8 value);
 
diff --git a/drivers/mmc/mmc_spi.c b/drivers/mmc/mmc_spi.c
index e2d7879..bcea800 100644
--- a/drivers/mmc/mmc_spi.c
+++ b/drivers/mmc/mmc_spi.c
@@ -83,7 +83,7 @@
  * @resp_match:	if true, compare each of received bytes with @resp_match_value
  * @resp_match_value:	a value to be compared with each of received bytes
  * @r1b:	if true, receive additional bytes for busy signal token
- * @return 0 if OK, -ETIMEDOUT if no card response is received, -ve on error
+ * Return: 0 if OK, -ETIMEDOUT if no card response is received, -ve on error
  */
 static int mmc_spi_sendcmd(struct udevice *dev,
 			   ushort cmdidx, u32 cmdarg, u32 resp_type,
@@ -181,7 +181,7 @@
  * @xbuf:	buffer of the actual data (excluding token and crc) to read
  * @bcnt:	number of data blocks to transfer
  * @bsize:	size of the actual data (excluding token and crc) in bytes
- * @return 0 if OK, -ECOMM if crc error, -ETIMEDOUT on other errors
+ * Return: 0 if OK, -ECOMM if crc error, -ETIMEDOUT on other errors
  */
 static int mmc_spi_readdata(struct udevice *dev,
 			    void *xbuf, u32 bcnt, u32 bsize)
@@ -239,7 +239,7 @@
  * @bcnt:	number of data blocks to transfer
  * @bsize:	size of actual data (excluding token and crc) in bytes
  * @multi:	indicate a transfer by multiple block write command (CMD25)
- * @return 0 if OK, -ECOMM if crc error, -ETIMEDOUT on other errors
+ * Return: 0 if OK, -ECOMM if crc error, -ETIMEDOUT on other errors
  */
 static int mmc_spi_writedata(struct udevice *dev, const void *xbuf,
 			     u32 bcnt, u32 bsize, int multi)
diff --git a/drivers/mmc/octeontx_hsmmc.c b/drivers/mmc/octeontx_hsmmc.c
index 2e569a9..f0519f0 100644
--- a/drivers/mmc/octeontx_hsmmc.c
+++ b/drivers/mmc/octeontx_hsmmc.c
@@ -780,7 +780,7 @@
  * @param	mmc	mmc device
  * @param	cmd	command information
  *
- * @return octeontx_mmc_cr_mods data structure with various quirks and flags
+ * Return: octeontx_mmc_cr_mods data structure with various quirks and flags
  */
 static struct octeontx_mmc_cr_mods
 octeontx_mmc_get_cr_mods(struct mmc *mmc, const struct mmc_cmd *cmd,
@@ -993,7 +993,7 @@
  * @param	mmc	mmc device
  * @param	timeout	timeout in ms
  *
- * @return	0 for success (could be DMA errors), -ETIMEDOUT on timeout
+ * Return:	0 for success (could be DMA errors), -ETIMEDOUT on timeout
  */
 
 /**
@@ -1042,7 +1042,7 @@
  * @param	timeout	timeout in ms
  * @param	verbose	true to print out error information
  *
- * @return	0 for success (could be DMA errors), -ETIMEDOUT on timeout
+ * Return:	0 for success (could be DMA errors), -ETIMEDOUT on timeout
  *		or -EIO if IO error.
  */
 static int octeontx_mmc_wait_dma(struct mmc *mmc, bool write, ulong timeout,
@@ -1140,7 +1140,7 @@
  * @param	data	data for read
  * @param	verbose	true to print out error information
  *
- * @return	number of blocks read or 0 if error
+ * Return:	number of blocks read or 0 if error
  */
 static int octeontx_mmc_read_blocks(struct mmc *mmc, struct mmc_cmd *cmd,
 				    struct mmc_data *data, bool verbose)
@@ -1342,7 +1342,7 @@
  * @param cmd	cmd to send and response
  * @param data	additional data
  * @param flags
- * @return	0 for success, otherwise error
+ * Return:	0 for success, otherwise error
  */
 static int octeontx_mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd,
 				 struct mmc_data *data)
@@ -2021,7 +2021,7 @@
  * @param	adj	parameter to tune
  * @param	opcode	command opcode to use
  *
- * @return	0 for success, -1 if tuning failed
+ * Return:	0 for success, -1 if tuning failed
  */
 static int octeontx_mmc_adjust_tuning(struct mmc *mmc, struct adj *adj,
 				      u32 opcode)
@@ -2426,7 +2426,7 @@
  * Calculate the clock period with rounding up
  *
  * @param	mmc	mmc device
- * @return	clock period in system clocks for clk_lo + clk_hi
+ * Return:	clock period in system clocks for clk_lo + clk_hi
  */
 static u32 octeontx_mmc_calc_clk_period(struct mmc *mmc)
 {
@@ -2916,7 +2916,7 @@
  *
  * @param	mmc	Pointer to mmc data structure
  *
- * @return	0 for success or -ETIMEDOUT on error
+ * Return:	0 for success or -ETIMEDOUT on error
  *
  * NOTE: On error a default value will be calculated.
  */
@@ -2942,7 +2942,7 @@
  * @param	mmc	mmc data structure
  * @param	delay	delay in picoseconds
  *
- * @return	Number of tap cycles or error if -1
+ * Return:	Number of tap cycles or error if -1
  */
 static int octeontx2_mmc_calc_delay(struct mmc *mmc, int delay)
 {
@@ -3136,7 +3136,7 @@
  *
  * @param	mmc	mmc data structure
  *
- * @return	0 for success, error otherwise
+ * Return:	0 for success, error otherwise
  */
 static int octeontx_mmc_set_output_bus_timing(struct mmc *mmc)
 {
@@ -3369,7 +3369,7 @@
  *
  * @param mmc	mmc device
  *
- * @return 0 for success
+ * Return: 0 for success
  *
  * NOTE: This will need to be updated when new silicon comes out
  */
@@ -3395,7 +3395,7 @@
  *
  * @param	mmc	mmc device
  *
- * @return	0 for success, error otherwise
+ * Return:	0 for success, error otherwise
  */
 static int octeontx_mmc_init_lowlevel(struct mmc *mmc)
 {
@@ -3453,7 +3453,7 @@
  *
  * @param	voltage	voltage in microvolts
  *
- * @return	MMC register value for voltage
+ * Return:	MMC register value for voltage
  */
 static u32 xlate_voltage(u32 voltage)
 {
@@ -3506,7 +3506,7 @@
  *
  * @param	dev	slot device to check
  *
- * @return	true if status reports "ok" or "okay" or if no status,
+ * Return:	true if status reports "ok" or "okay" or if no status,
  *		false otherwise.
  */
 static bool octeontx_mmc_get_valid(struct udevice *dev)
@@ -3524,7 +3524,7 @@
  *
  * @param	dev	slot device
  *
- * @return	0 on success, otherwise error
+ * Return:	0 on success, otherwise error
  */
 static int octeontx_mmc_get_config(struct udevice *dev)
 {
@@ -3705,7 +3705,7 @@
  *
  * @param	dev	mmc device
  *
- * @return	0 for success, error otherwise
+ * Return:	0 for success, error otherwise
  */
 static int octeontx_mmc_slot_probe(struct udevice *dev)
 {
@@ -3802,7 +3802,7 @@
  *
  * @param	dev	mmc host controller device
  *
- * @return	0 for success, -1 on error
+ * Return:	0 for success, -1 on error
  */
 static int octeontx_mmc_host_probe(struct udevice *dev)
 {
@@ -3910,7 +3910,7 @@
  *
  * @param dev:	MMC slot device
  *
- * @return 0 for success, -1 on failure
+ * Return: 0 for success, -1 on failure
  *
  * Do some pre-initialization before probing a slot.
  */
diff --git a/drivers/mmc/sdhci-adma.c b/drivers/mmc/sdhci-adma.c
index 2ec057f..8213223 100644
--- a/drivers/mmc/sdhci-adma.c
+++ b/drivers/mmc/sdhci-adma.c
@@ -64,7 +64,7 @@
 /**
  * sdhci_adma_init() - initialize the ADMA descriptor table
  *
- * @return pointer to the allocated descriptor table or NULL in case of an
+ * Return: pointer to the allocated descriptor table or NULL in case of an
  * error.
  */
 struct sdhci_adma_desc *sdhci_adma_init(void)
diff --git a/drivers/mtd/mtd_uboot.c b/drivers/mtd/mtd_uboot.c
index 90767ec..dd0b024 100644
--- a/drivers/mtd/mtd_uboot.c
+++ b/drivers/mtd/mtd_uboot.c
@@ -54,7 +54,7 @@
  * @altname: Alternate name to return
  * @max_len: Length of the alternate name buffer
  *
- * @return 0 on success, an error otherwise.
+ * Return: 0 on success, an error otherwise.
  */
 int mtd_search_alternate_name(const char *mtdname, char *altname,
 			      unsigned int max_len)
diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c
index 1d45fb5..aa78d41 100644
--- a/drivers/mtd/mtdcore.c
+++ b/drivers/mtd/mtdcore.c
@@ -850,7 +850,7 @@
  * @param mtd an MTD device
  * @param offset offset in flash
  * @param length image length
- * @return image length including bad blocks in *len_incl_bad and whether or not
+ * Return: image length including bad blocks in *len_incl_bad and whether or not
  *         the length returned was truncated in *truncated
  */
 void mtd_get_len_incl_bad(struct mtd_info *mtd, uint64_t offset,
diff --git a/drivers/mtd/mtdpart.c b/drivers/mtd/mtdpart.c
index a435ce6..4119ea4f 100644
--- a/drivers/mtd/mtdpart.c
+++ b/drivers/mtd/mtdpart.c
@@ -89,7 +89,7 @@
  * @mtdparts: String describing the partition with mtdparts command syntax
  * @partition: MTD partition structure to fill
  *
- * @return 0 on success, an error otherwise.
+ * Return: 0 on success, an error otherwise.
  */
 static int mtd_parse_partition(const char **_mtdparts,
 			       struct mtd_partition *partition)
@@ -200,7 +200,7 @@
  *          caller.
  * @_nparts: Size of @_parts array.
  *
- * @return 0 on success, an error otherwise.
+ * Return: 0 on success, an error otherwise.
  */
 int mtd_parse_partitions(struct mtd_info *parent, const char **_mtdparts,
 			 struct mtd_partition **_parts, int *_nparts)
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)
 {
diff --git a/drivers/mtd/onenand/onenand_base.c b/drivers/mtd/onenand/onenand_base.c
index 56e1858..f94597c 100644
--- a/drivers/mtd/onenand/onenand_base.c
+++ b/drivers/mtd/onenand/onenand_base.c
@@ -148,7 +148,7 @@
  * onenand_block_address - [DEFAULT] Get block address
  * @param device	the device id
  * @param block		the block
- * @return		translated block address if DDP, otherwise same
+ * Return:		translated block address if DDP, otherwise same
  *
  * Setup Start Address 1 Register (F100h)
  */
@@ -165,7 +165,7 @@
  * onenand_bufferram_address - [DEFAULT] Get bufferram address
  * @param device	the device id
  * @param block		the block
- * @return		set DBS value if DDP, otherwise 0
+ * Return:		set DBS value if DDP, otherwise 0
  *
  * Setup Start Address 2 Register (F101h) for DDP
  */
@@ -182,7 +182,7 @@
  * onenand_page_address - [DEFAULT] Get page address
  * @param page		the page address
  * @param sector	the sector address
- * @return		combined page and sector address
+ * Return:		combined page and sector address
  *
  * Setup Start Address 8 Register (F107h)
  */
@@ -202,7 +202,7 @@
  * @param dataram1	DataRAM index
  * @param sectors	the sector address
  * @param count		the number of sectors
- * @return		the start buffer value
+ * Return:		the start buffer value
  *
  * Setup Start Buffer Register (F200h)
  */
@@ -511,7 +511,7 @@
  * onenand_bufferram_offset - [DEFAULT] BufferRAM offset
  * @param mtd		MTD data structure
  * @param area		BufferRAM area
- * @return		offset given area
+ * Return:		offset given area
  *
  * Return BufferRAM offset given area
  */
@@ -612,7 +612,7 @@
  * onenand_get_2x_blockpage - [GENERIC] Get blockpage at 2x program mode
  * @param mtd		MTD data structure
  * @param addr		address to check
- * @return		blockpage address
+ * Return:		blockpage address
  *
  * Get blockpage address at 2x program mode
  */
@@ -636,7 +636,7 @@
  * onenand_check_bufferram - [GENERIC] Check BufferRAM information
  * @param mtd		MTD data structure
  * @param addr		address to check
- * @return		1 if there are valid data, otherwise 0
+ * Return:		1 if there are valid data, otherwise 0
  *
  * Check bufferram if there is data we required
  */
diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c
index 811bc27..985b038 100644
--- a/drivers/net/fec_mxc.c
+++ b/drivers/net/fec_mxc.c
@@ -331,7 +331,7 @@
  * @param[in] fec all we know about the device yet
  * @param[in] count receive buffer count to be allocated
  * @param[in] dsize desired size of each receive buffer
- * @return 0 on success
+ * Return: 0 on success
  *
  * Init all RX descriptors to default values.
  */
@@ -703,7 +703,7 @@
  * @param[in] dev Our ethernet device to handle
  * @param[in] packet Pointer to the data to be transmitted
  * @param[in] length Data count in bytes
- * @return 0 on success
+ * Return: 0 on success
  */
 #ifdef CONFIG_DM_ETH
 static int fecmxc_send(struct udevice *dev, void *packet, int length)
@@ -854,7 +854,7 @@
 /**
  * Pull one frame from the card
  * @param[in] dev Our ethernet device to handle
- * @return Length of packet read
+ * Return: Length of packet read
  */
 #ifdef CONFIG_DM_ETH
 static int fecmxc_recv(struct udevice *dev, int flags, uchar **packetp)
diff --git a/drivers/net/octeontx2/cgx.c b/drivers/net/octeontx2/cgx.c
index 189fe7c..d139029 100644
--- a/drivers/net/octeontx2/cgx.c
+++ b/drivers/net/octeontx2/cgx.c
@@ -52,7 +52,7 @@
  *
  * @param instance	instance to find
  *
- * @return	pointer to lmac data structure or NULL if not found
+ * Return:	pointer to lmac data structure or NULL if not found
  */
 struct lmac *nix_get_cgx_lmac(int lmac_instance)
 {
diff --git a/drivers/net/octeontx2/cgx.h b/drivers/net/octeontx2/cgx.h
index f287692..b1f6f06 100644
--- a/drivers/net/octeontx2/cgx.h
+++ b/drivers/net/octeontx2/cgx.h
@@ -82,7 +82,7 @@
  *
  * @param instance	instance to find
  *
- * @return	pointer to lmac data structure or NULL if not found
+ * Return:	pointer to lmac data structure or NULL if not found
  */
 struct lmac *nix_get_cgx_lmac(int lmac_instance);
 
diff --git a/drivers/net/octeontx2/lmt.h b/drivers/net/octeontx2/lmt.h
index 84a7eab..3b30992 100644
--- a/drivers/net/octeontx2/lmt.h
+++ b/drivers/net/octeontx2/lmt.h
@@ -15,7 +15,7 @@
  * @param ptr    address in memory to add incr to
  * @param incr   amount to increment memory location by (signed)
  *
- * @return Value of memory location before increment
+ * Return: Value of memory location before increment
  */
 static inline s64 atomic_fetch_and_add64_nosync(s64 *ptr, s64 incr)
 {
diff --git a/drivers/net/octeontx2/nix.c b/drivers/net/octeontx2/nix.c
index 5954737..a5665a2 100644
--- a/drivers/net/octeontx2/nix.c
+++ b/drivers/net/octeontx2/nix.c
@@ -36,7 +36,7 @@
  * @param elem_size Size of each element
  * @param msg       Text string to show when allocation fails
  *
- * @return A valid memory location or NULL on failure
+ * Return: A valid memory location or NULL on failure
  */
 static void *nix_memalloc(int num_elements, size_t elem_size, const char *msg)
 {
diff --git a/drivers/net/octeontx2/nix_af.c b/drivers/net/octeontx2/nix_af.c
index d513917..cd098d6 100644
--- a/drivers/net/octeontx2/nix_af.c
+++ b/drivers/net/octeontx2/nix_af.c
@@ -336,7 +336,7 @@
  *
  * @param nix     Handle to setup
  *
- * @return 0, or negative on failure
+ * Return: 0, or negative on failure
  */
 static int nix_af_setup_sq(struct nix *nix)
 {
@@ -445,7 +445,7 @@
  * @param cindex Context index
  * @param resp   Result pointer
  *
- * @return	0 for success, -EBUSY on failure
+ * Return:	0 for success, -EBUSY on failure
  */
 static int nix_aq_issue_command(struct nix_af *nix_af,
 				int lf,
diff --git a/drivers/net/octeontx2/rvu.h b/drivers/net/octeontx2/rvu.h
index c0a834b..62bc7a6 100644
--- a/drivers/net/octeontx2/rvu.h
+++ b/drivers/net/octeontx2/rvu.h
@@ -101,7 +101,7 @@
  * @param	inst_size	Size of each instruction
  * @param	res_size	Size of each result
  *
- * @return	-ENOMEM on error, 0 on success
+ * Return:	-ENOMEM on error, 0 on success
  */
 int rvu_aq_alloc(struct admin_queue *aq, unsigned int qsize,
 		 size_t inst_size, size_t res_size);
diff --git a/drivers/net/octeontx2/rvu_common.c b/drivers/net/octeontx2/rvu_common.c
index 173b28b..4d8173f 100644
--- a/drivers/net/octeontx2/rvu_common.c
+++ b/drivers/net/octeontx2/rvu_common.c
@@ -41,7 +41,7 @@
  * @param	inst_size	Size of each instruction
  * @param	res_size	Size of each result
  *
- * @return	-ENOMEM on error, 0 on success
+ * Return:	-ENOMEM on error, 0 on success
  */
 int rvu_aq_alloc(struct admin_queue *aq, unsigned int qsize,
 		 size_t inst_size, size_t res_size)
diff --git a/drivers/net/pfe_eth/pfe_driver.c b/drivers/net/pfe_eth/pfe_driver.c
index 6f443b4..5e14f82 100644
--- a/drivers/net/pfe_eth/pfe_driver.c
+++ b/drivers/net/pfe_eth/pfe_driver.c
@@ -25,7 +25,7 @@
  * @param[out] pkt_ptr - Pointer to store rx packet
  * @param[out] phy_port - Pointer to store recv phy port
  *
- * @return -1 if no packet, else return length of packet.
+ * Return: -1 if no packet, else return length of packet.
  */
 int pfe_recv(uchar **pkt_ptr, int *phy_port)
 {
@@ -121,7 +121,7 @@
  * @param[in] data	Pointer to the data
  * @param[in] length	Length of the ethernet packet to be transferred.
  *
- * @return -1 if tx Q is full, else returns the tx location where the pkt is
+ * Return: -1 if tx Q is full, else returns the tx location where the pkt is
  * placed.
  */
 int pfe_send(int phy_port, void *data, int length)
@@ -190,7 +190,7 @@
  *  locations
  *  if success, moves the tx_to_send to next location.
  *
- * @return -1 if TX ownership bit is not cleared by hw.
+ * Return: -1 if TX ownership bit is not cleared by hw.
  * else on success (tx done completion) return zero.
  */
 int pfe_tx_done(void)
@@ -557,7 +557,7 @@
  *
  * @param[in]	edev	Pointer to eth device structure.
  *
- * @return 0, on success.
+ * Return: 0, on success.
  */
 static int pfe_hw_init(struct pfe_ddr_address *pfe_addr)
 {
diff --git a/drivers/net/pfe_eth/pfe_eth.c b/drivers/net/pfe_eth/pfe_eth.c
index 0c27a66..d338b36 100644
--- a/drivers/net/pfe_eth/pfe_eth.c
+++ b/drivers/net/pfe_eth/pfe_eth.c
@@ -101,7 +101,7 @@
  *
  * @param[in]   edev    Pointer to eth device structure.
  *
- * @return      none
+ * Return:      none
  */
 static inline void pfe_eth_stop(struct udevice *dev)
 {
diff --git a/drivers/net/pfe_eth/pfe_firmware.c b/drivers/net/pfe_eth/pfe_firmware.c
index 93e5ea5..6669048 100644
--- a/drivers/net/pfe_eth/pfe_firmware.c
+++ b/drivers/net/pfe_eth/pfe_firmware.c
@@ -37,7 +37,7 @@
  * @param pe_mask	Mask of PE id's to load firmware to
  * @param pfe_firmware	Pointer to the firmware image
  *
- * @return		0 on success, a negative value on error
+ * Return:		0 on success, a negative value on error
  */
 static int pfe_load_elf(int pe_mask, uint8_t *pfe_firmware)
 {
@@ -99,7 +99,7 @@
  * @param size pointer to size of the firmware
  * @param fw_name pfe firmware name, either class or tmu
  *
- * @return 0 on success, a negative value on error
+ * Return: 0 on success, a negative value on error
  */
 static int pfe_get_fw(const void **data,
 		      size_t *size, char *fw_name)
@@ -148,7 +148,7 @@
 /*
  * Check PFE FIT image
  *
- * @return 0 on success, a negative value on error
+ * Return: 0 on success, a negative value on error
  */
 static int pfe_fit_check(void)
 {
@@ -248,7 +248,7 @@
  * firmware files
  * Takes PE's out of reset
  *
- * @return 0 on success, a negative value on error
+ * Return: 0 on success, a negative value on error
  */
 int pfe_firmware_init(void)
 {
diff --git a/drivers/net/pfe_eth/pfe_hw.c b/drivers/net/pfe_eth/pfe_hw.c
index 722f5c2..4db6f31 100644
--- a/drivers/net/pfe_eth/pfe_hw.c
+++ b/drivers/net/pfe_eth/pfe_hw.c
@@ -128,7 +128,7 @@
  * @param[in] addr		PMEM read address (must be aligned on size)
  * @param[in] size		Number of bytes to read (maximum 4, must not
  *				cross 32bit boundaries)
- * @return			the data read (in PE endianness, i.e BE).
+ * Return:			the data read (in PE endianness, i.e BE).
  */
 u32 pe_pmem_read(int id, u32 addr, u8 size)
 {
@@ -176,7 +176,7 @@
  * @param[in] addr		DMEM read address (must be aligned on size)
  * @param[in] size		Number of bytes to read (maximum 4, must not
  *				cross 32bit boundaries)
- * @return			the data read (in PE endianness, i.e BE).
+ * Return:			the data read (in PE endianness, i.e BE).
  */
 u32 pe_dmem_read(int id, u32 addr, u8 size)
 {
@@ -222,7 +222,7 @@
  * through indirect access registers.
  * @param[in] addr	Address to read from (must be aligned on size)
  * @param[in] size	Number of bytes to read (1, 2 or 4)
- * @return		the read data
+ * Return:		the read data
  */
 static u32 class_bus_read(u32 addr, u8 size)
 {
diff --git a/drivers/pci/pci-uclass.c b/drivers/pci/pci-uclass.c
index 5da3515..c66cd75 100644
--- a/drivers/pci/pci-uclass.c
+++ b/drivers/pci/pci-uclass.c
@@ -76,7 +76,7 @@
 /**
  * pci_get_bus_max() - returns the bus number of the last active bus
  *
- * @return last bus number, or -1 if no active buses
+ * Return: last bus number, or -1 if no active buses
  */
 static int pci_get_bus_max(void)
 {
@@ -700,7 +700,7 @@
  * @bus: Bus to check
  * @vendor: Vendor ID to check
  * @device: Device ID to check
- * @return true if the vendor/device is in the list, false if not
+ * Return: true if the vendor/device is in the list, false if not
  */
 static bool pci_need_device_pre_reloc(struct udevice *bus, uint vendor,
 				      uint device)
@@ -728,7 +728,7 @@
  * @find_id:	Specification of the driver to find
  * @bdf:	Bus/device/function addreess - see PCI_BDF()
  * @devp:	Returns a pointer to the device created
- * @return 0 if OK, -EPERM if the device is not needed before relocation and
+ * Return: 0 if OK, -EPERM if the device is not needed before relocation and
  *	   therefore was not created, other -ve value on error
  */
 static int pci_find_and_bind_driver(struct udevice *parent,
diff --git a/drivers/pci/pci_common.c b/drivers/pci/pci_common.c
index 02a71da..a182512 100644
--- a/drivers/pci/pci_common.c
+++ b/drivers/pci/pci_common.c
@@ -236,7 +236,7 @@
  * @hose:	PCI hose of the root PCI controller
  * @phys_addr:	physical address to convert
  * @flags:	flags of pci regions
- * @return bus address if OK, 0 on error
+ * Return: bus address if OK, 0 on error
  */
 pci_addr_t pci_hose_phys_to_bus(struct pci_controller *hose,
 				phys_addr_t phys_addr,
diff --git a/drivers/pci/pci_internal.h b/drivers/pci/pci_internal.h
index 8b842f6..5a4c90e 100644
--- a/drivers/pci/pci_internal.h
+++ b/drivers/pci/pci_internal.h
@@ -39,7 +39,7 @@
  * If the device is a bridge, downstream devices will be probed.
  *
  * @dev:	Device to configure
- * @return the maximum PCI bus number found by this device. If there are no
+ * Return: the maximum PCI bus number found by this device. If there are no
  * bridges, this just returns the device's bus number. If the device is a
  * bridge then it will return a larger number, depending on the devices on
  * that bridge. On error, returns a -ve error number.
@@ -54,7 +54,7 @@
  *
  * @busnum:	PCI bus number to look up
  * @busp:	Returns PCI bus on success
- * @return 0 on success, or -ve error
+ * Return: 0 on success, or -ve error
  */
 int pci_get_bus(int busnum, struct udevice **busp);
 
diff --git a/drivers/pci/pci_rom.c b/drivers/pci/pci_rom.c
index 7bad4c8..f8b1930 100644
--- a/drivers/pci/pci_rom.c
+++ b/drivers/pci/pci_rom.c
@@ -149,7 +149,7 @@
  * @ram_headerp:	Returns a pointer to the image in RAM
  * @allocedp:		Returns true if @ram_headerp was allocated and needs
  *			to be freed
- * @return 0 if OK, -ve on error. Note that @allocedp is set up regardless of
+ * Return: 0 if OK, -ve on error. Note that @allocedp is set up regardless of
  * the error state. Even if this function returns an error, it may have
  * allocated memory.
  */
diff --git a/drivers/pinctrl/intel/pinctrl.c b/drivers/pinctrl/intel/pinctrl.c
index 987a56b..1607000 100644
--- a/drivers/pinctrl/intel/pinctrl.c
+++ b/drivers/pinctrl/intel/pinctrl.c
@@ -60,7 +60,7 @@
  *
  * @comm: Community to search
  * @gpio: Pad number to look up (assumed to be valid)
- * @return offset, 0 for first GPIO in community
+ * Return: offset, 0 for first GPIO in community
  */
 static size_t relative_pad_in_comm(const struct pad_community *comm,
 				   uint gpio)
@@ -75,7 +75,7 @@
  *
  * @comm: Community to search
  * @relative_pad: Pad to look up
- * @return group number if found (see community_n_groups, etc.), or
+ * Return: group number if found (see community_n_groups, etc.), or
  *	-ESPIPE if no groups, or -ENOENT if not found
  */
 static int pinctrl_group_index(const struct pad_community *comm,
@@ -135,7 +135,7 @@
  *
  * @pad: Pad to check
  * @devp: Returns the device for that pad
- * @return 0 if OK, -ENOTBLK if no device was found for the given pin
+ * Return: 0 if OK, -ENOTBLK if no device was found for the given pin
  */
 static int pinctrl_get_device(uint pad, struct udevice **devp)
 {
@@ -346,7 +346,7 @@
  *
  * @dev: Pinctrl device containing the pad (see pinctrl_get_device())
  * @cfg: Configuration to apply
- * @return 0 if OK, -ve on error
+ * Return: 0 if OK, -ve on error
  */
 static int pinctrl_configure_pad(struct udevice *dev,
 				 const struct pad_config *cfg)
diff --git a/drivers/power/exynos-tmu.c b/drivers/power/exynos-tmu.c
index 4fba7b5..6d62f6c 100644
--- a/drivers/power/exynos-tmu.c
+++ b/drivers/power/exynos-tmu.c
@@ -102,7 +102,7 @@
  * then calculate and calibrate it's value
  * in degree celsius.
  *
- * @return	current temperature of the chip as sensed by TMU
+ * Return:	current temperature of the chip as sensed by TMU
  */
 static int get_cur_temp(struct tmu_info *info)
 {
@@ -135,7 +135,7 @@
  * Monitors status of the TMU device and exynos temperature
  *
  * @param temp	pointer to the current temperature value
- * @return	enum tmu_status_t value, code indicating event to execute
+ * Return:	enum tmu_status_t value, code indicating event to execute
  */
 enum tmu_status_t tmu_monitor(int *temp)
 {
@@ -177,7 +177,7 @@
  *
  * @param info	pointer to the tmu_info struct
  * @param blob  FDT blob
- * @return	int value, 0 for success
+ * Return:	int value, 0 for success
  */
 static int get_tmu_fdt_values(struct tmu_info *info, const void *blob)
 {
@@ -332,7 +332,7 @@
  * Initialize TMU device
  *
  * @param blob  FDT blob
- * @return	int value, 0 for success
+ * Return:	int value, 0 for success
  */
 int tmu_init(const void *blob)
 {
diff --git a/drivers/power/palmas.c b/drivers/power/palmas.c
index bf91739..0959445 100644
--- a/drivers/power/palmas.c
+++ b/drivers/power/palmas.c
@@ -149,7 +149,7 @@
  * @brief palmas_enable_ss_ldo - Configure EVM board specific configurations
  * for the USB Super speed SMPS10 regulator.
  *
- * @return 0
+ * Return: 0
  */
 int palmas_enable_ss_ldo(void)
 {
diff --git a/drivers/power/regulator/tps65090_regulator.c b/drivers/power/regulator/tps65090_regulator.c
index 174ee58..fa15e61 100644
--- a/drivers/power/regulator/tps65090_regulator.c
+++ b/drivers/power/regulator/tps65090_regulator.c
@@ -45,7 +45,7 @@
  * @param pmic		pmic structure for the tps65090
  * @param fet_id	FET number to set (1..MAX_FET_NUM)
  * @param set		1 to power on FET, 0 to power off
- * @return -EIO if we got a comms error, -EAGAIN if the FET failed to
+ * Return: -EIO if we got a comms error, -EAGAIN if the FET failed to
  * change state. If all is ok, returns 0.
  */
 static int tps65090_fet_set(struct udevice *pmic, int fet_id, bool set)
diff --git a/drivers/power/tps6586x.c b/drivers/power/tps6586x.c
index 49b28a5..37f1c45 100644
--- a/drivers/power/tps6586x.c
+++ b/drivers/power/tps6586x.c
@@ -84,7 +84,7 @@
  *
  * @param sm0	Place to put SM0 voltage
  * @param sm1	Place to put SM1 voltage
- * @return 0 if ok, -1 on error
+ * Return: 0 if ok, -1 on error
  */
 static int read_voltages(int *sm0, int *sm1)
 {
diff --git a/drivers/remoteproc/sandbox_testproc.c b/drivers/remoteproc/sandbox_testproc.c
index 6836eca..78b1081 100644
--- a/drivers/remoteproc/sandbox_testproc.c
+++ b/drivers/remoteproc/sandbox_testproc.c
@@ -308,7 +308,7 @@
  * @dev:	device to operate upon
  * @da:		device address
  * @size:	Size of the memory region @da is pointing to
- * @return converted virtual address
+ * Return: converted virtual address
  */
 static void *sandbox_testproc_device_to_virt(struct udevice *dev, ulong da,
 					     ulong size)
diff --git a/drivers/remoteproc/stm32_copro.c b/drivers/remoteproc/stm32_copro.c
index 4c5f248..5271f83 100644
--- a/drivers/remoteproc/stm32_copro.c
+++ b/drivers/remoteproc/stm32_copro.c
@@ -30,7 +30,7 @@
 /**
  * stm32_copro_probe() - Basic probe
  * @dev:	corresponding STM32 remote processor device
- * @return 0 if all went ok, else corresponding -ve error
+ * Return: 0 if all went ok, else corresponding -ve error
  */
 static int stm32_copro_probe(struct udevice *dev)
 {
@@ -61,7 +61,7 @@
  * @dev:	corresponding STM32 remote processor device
  * @da:		device address
  * @size:	Size of the memory region @da is pointing to
- * @return converted virtual address
+ * Return: converted virtual address
  */
 static void *stm32_copro_device_to_virt(struct udevice *dev, ulong da,
 					ulong size)
@@ -89,7 +89,7 @@
  * @dev:	corresponding STM32 remote processor device
  * @addr:	Address in memory where image is stored
  * @size:	Size in bytes of the image
- * @return 0 if all went ok, else corresponding -ve error
+ * Return: 0 if all went ok, else corresponding -ve error
  */
 static int stm32_copro_load(struct udevice *dev, ulong addr, ulong size)
 {
@@ -123,7 +123,7 @@
 /**
  * stm32_copro_start() - Start the STM32 remote processor
  * @dev:	corresponding STM32 remote processor device
- * @return 0 if all went ok, else corresponding -ve error
+ * Return: 0 if all went ok, else corresponding -ve error
  */
 static int stm32_copro_start(struct udevice *dev)
 {
@@ -157,7 +157,7 @@
 /**
  * stm32_copro_reset() - Reset the STM32 remote processor
  * @dev:	corresponding STM32 remote processor device
- * @return 0 if all went ok, else corresponding -ve error
+ * Return: 0 if all went ok, else corresponding -ve error
  */
 static int stm32_copro_reset(struct udevice *dev)
 {
@@ -186,7 +186,7 @@
 /**
  * stm32_copro_stop() - Stop the STM32 remote processor
  * @dev:	corresponding STM32 remote processor device
- * @return 0 if all went ok, else corresponding -ve error
+ * Return: 0 if all went ok, else corresponding -ve error
  */
 static int stm32_copro_stop(struct udevice *dev)
 {
@@ -196,7 +196,7 @@
 /**
  * stm32_copro_is_running() - Is the STM32 remote processor running
  * @dev:	corresponding STM32 remote processor device
- * @return 0 if the remote processor is running, 1 otherwise
+ * Return: 0 if the remote processor is running, 1 otherwise
  */
 static int stm32_copro_is_running(struct udevice *dev)
 {
diff --git a/drivers/serial/serial_bcm283x_mu.c b/drivers/serial/serial_bcm283x_mu.c
index 58fa722..f0756c3 100644
--- a/drivers/serial/serial_bcm283x_mu.c
+++ b/drivers/serial/serial_bcm283x_mu.c
@@ -140,7 +140,7 @@
  * The serial device will only work properly if it has been muxed to the serial
  * pins by firmware. Check whether that happened here.
  *
- * @return true if serial device is muxed, false if not
+ * Return: true if serial device is muxed, false if not
  */
 static bool bcm283x_is_serial_muxed(void)
 {
diff --git a/drivers/serial/serial_bcm283x_pl011.c b/drivers/serial/serial_bcm283x_pl011.c
index 2d2e970..fe74629 100644
--- a/drivers/serial/serial_bcm283x_pl011.c
+++ b/drivers/serial/serial_bcm283x_pl011.c
@@ -17,7 +17,7 @@
  * The serial device will only work properly if it has been muxed to the serial
  * pins by firmware. Check whether that happened here.
  *
- * @return true if serial device is muxed, false if not
+ * Return: true if serial device is muxed, false if not
  */
 static bool bcm283x_is_serial_muxed(void)
 {
diff --git a/drivers/sound/hda_codec.c b/drivers/sound/hda_codec.c
index eb92830..af6148e 100644
--- a/drivers/sound/hda_codec.c
+++ b/drivers/sound/hda_codec.c
@@ -302,7 +302,7 @@
  * @regs: HDA registers
  * @val: Command to write
  * @response: Set to response from codec
- * @return 0 if OK, -ve on error
+ * Return: 0 if OK, -ve on error
  */
 static int exec_verb(struct hda_regs *regs, uint val, uint *response)
 {
@@ -324,7 +324,7 @@
  * @nid: Parent node ID to check
  * @num_sub_nodesp: Returns number of subnodes
  * @start_sub_node_nidp: Returns start subnode number
- * @return 0 if OK, -ve on error
+ * Return: 0 if OK, -ve on error
  */
 static int get_subnode_info(struct hda_regs *regs, uint nid,
 			    uint *num_sub_nodesp, uint *start_sub_node_nidp)
@@ -354,7 +354,7 @@
  *
  * @regs: HDA registers
  * @group_nid: Group node ID to check
- * @return 0 if OK, -ve on error
+ * Return: 0 if OK, -ve on error
  */
 static uint find_beep_node_in_group(struct hda_regs *regs, uint group_nid)
 {
@@ -395,7 +395,7 @@
  * Checks if the given audio group contains a beep generator
  * @regs: HDA registers
  * @nid: Node ID to check
- * @return 0 if OK, -ve on error
+ * Return: 0 if OK, -ve on error
  */
 static int audio_group_has_beep_node(struct hda_regs *regs, uint nid)
 {
@@ -424,7 +424,7 @@
  * instead.
  *
  * @dev: Sound device
- * @return Node ID >0 if found, -ve error code otherwise
+ * Return: Node ID >0 if found, -ve error code otherwise
  */
 static int get_hda_beep_nid(struct udevice *dev)
 {
@@ -461,7 +461,7 @@
  *
  * @priv: Device's private data
  * @divider: Divider value (0 to disable the beep)
- * @return 0 if OK, -ve on error
+ * Return: 0 if OK, -ve on error
  */
 static int set_beep_divisor(struct hda_codec_priv *priv, uint divider)
 {
diff --git a/drivers/sound/max98088.c b/drivers/sound/max98088.c
index 4bcb748..c0463b8 100644
--- a/drivers/sound/max98088.c
+++ b/drivers/sound/max98088.c
@@ -30,7 +30,7 @@
  * @param rate sampling rate
  * @param value address of indexvalue to be stored
  *
- * @return	0 for success or negative error code.
+ * Return:	0 for success or negative error code.
  */
 static int rate_value(int rate, u8 *value)
 {
@@ -54,7 +54,7 @@
  * @rate: Sampling rate
  * @bits_per_sample: Bits per sample
  *
- * @return -EIO for error, 0 for success.
+ * Return: -EIO for error, 0 for success.
  */
 int max98088_hw_params(struct maxim_priv *priv, unsigned int rate,
 		       unsigned int bits_per_sample)
@@ -115,7 +115,7 @@
  * @priv: max98088 information
  * @freq: Sampling frequency in Hz
  *
- * @return -EIO for error, 0 for success.
+ * Return: -EIO for error, 0 for success.
  */
 int max98088_set_sysclk(struct maxim_priv *priv, unsigned int freq)
 {
@@ -163,7 +163,7 @@
  * @priv: max98088 information
  * @fmt: i2S format - supports a subset of the options defined in i2s.h.
  *
- * @return -EIO for error, 0 for success.
+ * Return: -EIO for error, 0 for success.
  */
 int max98088_set_fmt(struct maxim_priv *priv, int fmt)
 {
@@ -241,7 +241,7 @@
  * max98088_reset() - reset the audio codec
  *
  * @priv: max98088 information
- * @return -EIO for error, 0 for success.
+ * Return: -EIO for error, 0 for success.
  */
 static int max98088_reset(struct maxim_priv *priv)
 {
@@ -278,7 +278,7 @@
  *
  * @priv: max98088 information
  *
- * @return -EIO for error, 0 for success.
+ * Return: -EIO for error, 0 for success.
  */
 static int max98088_device_init(struct maxim_priv *priv)
 {
diff --git a/drivers/sound/max98090.c b/drivers/sound/max98090.c
index c77a732..a798762 100644
--- a/drivers/sound/max98090.c
+++ b/drivers/sound/max98090.c
@@ -25,7 +25,7 @@
  * @rate: Sampling rate
  * @bits_per_sample: Bits per sample
  *
- * @return -EIO for error, 0 for success.
+ * Return: -EIO for error, 0 for success.
  */
 int max98090_hw_params(struct maxim_priv *priv, unsigned int rate,
 		       unsigned int bits_per_sample)
@@ -77,7 +77,7 @@
  * @priv: max98090 information
  * @freq: Sampling frequency in Hz
  *
- * @return -EIO for error, 0 for success.
+ * Return: -EIO for error, 0 for success.
  */
 int max98090_set_sysclk(struct maxim_priv *priv, unsigned int freq)
 {
@@ -122,7 +122,7 @@
  * @priv: max98090 information
  * @fmt: i2S format - supports a subset of the options defined in i2s.h.
  *
- * @return -EIO for error, 0 for success.
+ * Return: -EIO for error, 0 for success.
  */
 int max98090_set_fmt(struct maxim_priv *priv, int fmt)
 {
@@ -205,7 +205,7 @@
  * resets the audio codec
  *
  * @priv: max98090 information
- * @return -EIO for error, 0 for success.
+ * Return: -EIO for error, 0 for success.
  */
 static int max98090_reset(struct maxim_priv *priv)
 {
@@ -231,7 +231,7 @@
  *
  * @priv: max98090 information
  *
- * @return -EIO for error, 0 for success.
+ * Return: -EIO for error, 0 for success.
  */
 int max98090_device_init(struct maxim_priv *priv)
 {
diff --git a/drivers/sound/max98095.c b/drivers/sound/max98095.c
index 002dab4..d0f701a 100644
--- a/drivers/sound/max98095.c
+++ b/drivers/sound/max98095.c
@@ -29,7 +29,7 @@
  * @param rate sampling rate
  * @param value address of indexvalue to be stored
  *
- * @return	0 for success or negative error code.
+ * Return:	0 for success or negative error code.
  */
 static int rate_value(int rate, u8 *value)
 {
@@ -53,7 +53,7 @@
  * @param rate		Sampling rate
  * @param bits_per_sample	Bits per sample
  *
- * @return	0 for success or negative error code.
+ * Return:	0 for success or negative error code.
  */
 static int max98095_hw_params(struct maxim_priv *priv,
 			      enum en_max_audio_interface aif_id,
@@ -121,7 +121,7 @@
  * @param priv		max98095 information
  * @param freq		Sampling frequency in Hz
  *
- * @return	0 for success or negative error code.
+ * Return:	0 for success or negative error code.
  */
 static int max98095_set_sysclk(struct maxim_priv *priv, unsigned int freq)
 {
@@ -163,7 +163,7 @@
  * @param fmt		i2S format - supports a subset of the options defined
  *			in i2s.h.
  *
- * @return	0 for success or negative error code.
+ * Return:	0 for success or negative error code.
  */
 static int max98095_set_fmt(struct maxim_priv *priv, int fmt,
 			    enum en_max_audio_interface aif_id)
@@ -255,7 +255,7 @@
  * resets the audio codec
  *
  * @param priv	Private data for driver
- * @return	0 for success or negative error code.
+ * Return:	0 for success or negative error code.
  */
 static int max98095_reset(struct maxim_priv *priv)
 {
@@ -296,7 +296,7 @@
  * Intialise max98095 codec device
  *
  * @param priv		max98095 information
- * @return	0 for success or negative error code.
+ * Return:	0 for success or negative error code.
  */
 static int max98095_device_init(struct maxim_priv *priv)
 {
diff --git a/drivers/sound/maxim_codec.c b/drivers/sound/maxim_codec.c
index 31e67ee..6553d95 100644
--- a/drivers/sound/maxim_codec.c
+++ b/drivers/sound/maxim_codec.c
@@ -22,7 +22,7 @@
  * @param reg	reg number to be write
  * @param data	data to be writen to the above registor
  *
- * @return	int value 1 for change, 0 for no change or negative error code.
+ * Return:	int value 1 for change, 0 for no change or negative error code.
  */
 int maxim_i2c_write(struct maxim_priv *priv, unsigned int reg,
 		    unsigned char data)
@@ -39,7 +39,7 @@
  * @param reg	reg number to be read
  * @param data	address of read data to be stored
  *
- * @return	int value 0 for success, -1 in case of error.
+ * Return:	int value 0 for success, -1 in case of error.
  */
 unsigned int maxim_i2c_read(struct maxim_priv *priv, unsigned int reg,
 			    unsigned char *data)
@@ -64,7 +64,7 @@
  * @param mask	register mask
  * @param value	new value
  *
- * @return int value 0 for success, non-zero error code.
+ * Return: int value 0 for success, non-zero error code.
  */
 int maxim_bic_or(struct maxim_priv *priv, unsigned int reg, unsigned char mask,
 		 unsigned char value)
diff --git a/drivers/sound/maxim_codec.h b/drivers/sound/maxim_codec.h
index a3128e0..deaefd9 100644
--- a/drivers/sound/maxim_codec.h
+++ b/drivers/sound/maxim_codec.h
@@ -34,7 +34,7 @@
  * @param reg	reg number to be write
  * @param data	data to be writen to the above registor
  *
- * @return	int value 1 for change, 0 for no change or negative error code.
+ * Return:	int value 1 for change, 0 for no change or negative error code.
  */
 int maxim_i2c_write(struct maxim_priv *priv, unsigned int reg,
 		    unsigned char data);
@@ -46,7 +46,7 @@
  * @param reg	reg number to be read
  * @param data	address of read data to be stored
  *
- * @return	int value 0 for success, -1 in case of error.
+ * Return:	int value 0 for success, -1 in case of error.
  */
 unsigned int maxim_i2c_read(struct maxim_priv *priv, unsigned int reg,
 			    unsigned char *data);
@@ -59,7 +59,7 @@
  * @param mask	register mask
  * @param value	new value
  *
- * @return int value 0 for success, non-zero error code.
+ * Return: int value 0 for success, non-zero error code.
  */
 int maxim_bic_or(struct maxim_priv *priv, unsigned int reg, unsigned char mask,
 		 unsigned char value);
diff --git a/drivers/sound/samsung-i2s.c b/drivers/sound/samsung-i2s.c
index d3d75c0..dc5a278 100644
--- a/drivers/sound/samsung-i2s.c
+++ b/drivers/sound/samsung-i2s.c
@@ -126,7 +126,7 @@
  * @param i2s_reg	i2s register address
  * @param dir		Clock direction
  *
- * @return		int value 0 for success, -1 in case of error
+ * Return:		int value 0 for success, -1 in case of error
  */
 static int i2s_set_sysclk_dir(struct i2s_reg *i2s_reg, int dir)
 {
@@ -148,7 +148,7 @@
  * @param fmt		i2s clock properties
  * @param i2s_reg	i2s register address
  *
- * @return		int value 0 for success, -1 in case of error
+ * Return:		int value 0 for success, -1 in case of error
  */
 static int i2s_set_fmt(struct i2s_reg *i2s_reg, unsigned int fmt)
 {
@@ -225,7 +225,7 @@
  * @param blc		samplewidth (size of sample in bits)
  * @param i2s_reg	i2s register address
  *
- * @return		int value 0 for success, -1 in case of error
+ * Return:		int value 0 for success, -1 in case of error
  */
 static int i2s_set_samplesize(struct i2s_reg *i2s_reg, unsigned int blc)
 {
diff --git a/drivers/sound/tegra_ahub.c b/drivers/sound/tegra_ahub.c
index 8708fc4..495a29c 100644
--- a/drivers/sound/tegra_ahub.c
+++ b/drivers/sound/tegra_ahub.c
@@ -70,7 +70,7 @@
 /**
  * tegra_ahub_wait_for_space() - Wait for space in the FIFO
  *
- * @return 0 if OK, -ETIMEDOUT if no space was available in time
+ * Return: 0 if OK, -ETIMEDOUT if no space was available in time
  */
 static int tegra_ahub_wait_for_space(struct udevice *dev)
 {
diff --git a/drivers/sound/tegra_i2s_priv.h b/drivers/sound/tegra_i2s_priv.h
index 7cd3fc8..65a3623 100644
--- a/drivers/sound/tegra_i2s_priv.h
+++ b/drivers/sound/tegra_i2s_priv.h
@@ -22,7 +22,7 @@
  *
  * @dev: I2S device
  * @value: Value to write to CIF_TX_CTRL register
- * @return 0
+ * Return: 0
  */
 int tegra_i2s_set_cif_tx_ctrl(struct udevice *dev, u32 value);
 
diff --git a/drivers/sound/wm8994.c b/drivers/sound/wm8994.c
index cb1e97d..fd64647 100644
--- a/drivers/sound/wm8994.c
+++ b/drivers/sound/wm8994.c
@@ -71,7 +71,7 @@
  * @param reg	reg number to be write
  * @param data	data to be writen to the above registor
  *
- * @return	int value 1 for change, 0 for no change or negative error code.
+ * Return:	int value 1 for change, 0 for no change or negative error code.
  */
 static int wm8994_i2c_write(struct wm8994_priv *priv, unsigned int reg,
 			    unsigned short data)
@@ -92,7 +92,7 @@
  * @param reg	reg number to be read
  * @param data	address of read data to be stored
  *
- * @return	int value 0 for success, -1 in case of error.
+ * Return:	int value 0 for success, -1 in case of error.
  */
 static unsigned int wm8994_i2c_read(struct wm8994_priv *priv, unsigned int reg,
 				    unsigned short *data)
@@ -122,7 +122,7 @@
  * @param mask	register mask
  * @param value	new value
  *
- * @return int value 1 if change in the register value,
+ * Return: int value 1 if change in the register value,
  * 0 for no change or negative error code.
  */
 static int wm8994_bic_or(struct wm8994_priv *priv, unsigned int reg,
@@ -150,7 +150,7 @@
  * @param aif_id	Interface ID
  * @param fmt		i2S format
  *
- * @return -1 for error and 0  Success.
+ * Return: -1 for error and 0  Success.
  */
 static int wm8994_set_fmt(struct wm8994_priv *priv, int aif_id, uint fmt)
 {
@@ -274,7 +274,7 @@
  * @param bits_per_sample	Bits per sample
  * @param Channels		Channels in the given audio input
  *
- * @return -1 for error  and 0  Success.
+ * Return: -1 for error  and 0  Success.
  */
 static int wm8994_hw_params(struct wm8994_priv *priv, int aif_id,
 			    uint sampling_rate, uint bits_per_sample,
@@ -417,7 +417,7 @@
  * @param priv		wm8994 information pointer
  * @param aif		Audio Interface ID
  *
- * @return -1 for error  and 0  Success.
+ * Return: -1 for error  and 0  Success.
  */
 static int configure_aif_clock(struct wm8994_priv *priv, int aif)
 {
@@ -497,7 +497,7 @@
  * @param clk_id	Input Clock ID
  * @param freq		Sampling frequency in Hz
  *
- * @return -1 for error and 0 success.
+ * Return: -1 for error and 0 success.
  */
 static int wm8994_set_sysclk(struct wm8994_priv *priv, int aif_id, int clk_id,
 			     unsigned int freq)
diff --git a/drivers/spi/ich.c b/drivers/spi/ich.c
index 42071bb..9142ffd 100644
--- a/drivers/spi/ich.c
+++ b/drivers/spi/ich.c
@@ -504,7 +504,7 @@
  * @hsfsts_cycle: Cycle type (enum hsfsts_cycle_t)
  * @offset: Offset to access
  * @len: Number of bytes to transfer (can be 0)
- * @return 0 if OK, -EIO on flash-cycle error (FCERR), -EPERM on access error
+ * Return: 0 if OK, -EIO on flash-cycle error (FCERR), -EPERM on access error
  *	(AEL), -ETIMEDOUT on timeout
  */
 static int exec_sync_hwseq_xfer(struct fast_spi_regs *regs, uint hsfsts_cycle,
@@ -615,7 +615,7 @@
  * @pchp: Returns a pointer to the pch, or NULL if not found
  * @ich_versionp: Returns ICH version detected on success
  * @mmio_basep: Returns the address of the SPI registers on success
- * @return 0 if OK, -EPROTOTYPE if the PCH could not be found, -EAGAIN if
+ * Return: 0 if OK, -EPROTOTYPE if the PCH could not be found, -EAGAIN if
  *	the function cannot success without probing, possible another error if
  *	pch_get_spi_base() fails
  */
diff --git a/drivers/spi/octeon_spi.c b/drivers/spi/octeon_spi.c
index 6ac66d2..fcabc11 100644
--- a/drivers/spi/octeon_spi.c
+++ b/drivers/spi/octeon_spi.c
@@ -137,7 +137,7 @@
  *
  * @param	dev	SPI bus
  *
- * @return	0 for success, -EINVAL if chip select is invalid
+ * Return:	0 for success, -EINVAL if chip select is invalid
  */
 static int octeon_spi_claim_bus(struct udevice *dev)
 {
@@ -168,7 +168,7 @@
  *
  * @param	dev	SPI bus
  *
- * @return	0 for success, -EINVAL if chip select is invalid
+ * Return:	0 for success, -EINVAL if chip select is invalid
  */
 static int octeon_spi_release_bus(struct udevice *dev)
 {
diff --git a/drivers/tpm/cr50_i2c.c b/drivers/tpm/cr50_i2c.c
index 7a2b5a4..f8c3087 100644
--- a/drivers/tpm/cr50_i2c.c
+++ b/drivers/tpm/cr50_i2c.c
@@ -467,7 +467,7 @@
  * TPM finished reset processing.
  *
  * @dev: Cr50 device
- * @return 0 if OK, -EPERM if locality could not be taken
+ * Return: 0 if OK, -EPERM if locality could not be taken
  */
 static int process_reset(struct udevice *dev)
 {
diff --git a/drivers/tpm/sandbox_common.h b/drivers/tpm/sandbox_common.h
index e822a20..f423c50 100644
--- a/drivers/tpm/sandbox_common.h
+++ b/drivers/tpm/sandbox_common.h
@@ -57,7 +57,7 @@
  * number used by the sandbox emulation.
  *
  * @index: Index to use (FIRMWARE_NV_INDEX, etc.)
- * @return associated space (enum sandbox_nv_space)
+ * Return: associated space (enum sandbox_nv_space)
  */
 int sb_tpm_index_to_seq(uint index);
 
diff --git a/drivers/tpm/tpm2_tis_spi.c b/drivers/tpm/tpm2_tis_spi.c
index 58b6f33..de9cf8f 100644
--- a/drivers/tpm/tpm2_tis_spi.c
+++ b/drivers/tpm/tpm2_tis_spi.c
@@ -60,7 +60,7 @@
  * NOTE: TPM is big-endian for multi-byte values. Multi-byte
  * values have to be swapped.
  *
- * @return -EIO on error, 0 on success.
+ * Return: -EIO on error, 0 on success.
  */
 static int tpm_tis_spi_xfer(struct udevice *dev, u32 addr, const u8 *out,
 			    u8 *in, u16 len)
diff --git a/drivers/tpm/tpm_atmel_twi.c b/drivers/tpm/tpm_atmel_twi.c
index fa4fbec..c059ea4 100644
--- a/drivers/tpm/tpm_atmel_twi.c
+++ b/drivers/tpm/tpm_atmel_twi.c
@@ -48,7 +48,7 @@
  * @dev:        Device to check
  * @buf:        Buffer to put the string
  * @size:       Maximum size of buffer
- * @return length of string, or -ENOSPC it no space
+ * Return: length of string, or -ENOSPC it no space
  */
 static int tpm_atmel_twi_get_desc(struct udevice *dev, char *buf, int size)
 {
diff --git a/drivers/usb/host/ehci.h b/drivers/usb/host/ehci.h
index e9e6f2a..5170044 100644
--- a/drivers/usb/host/ehci.h
+++ b/drivers/usb/host/ehci.h
@@ -280,7 +280,7 @@
  * ehci_get_controller_priv() - Get controller private data
  *
  * @index	Controller number to get
- * @return controller pointer for this index
+ * Return: controller pointer for this index
  */
 void *ehci_get_controller_priv(int index);
 
diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c
index 0d9da62..21cd03b 100644
--- a/drivers/usb/host/xhci-mem.c
+++ b/drivers/usb/host/xhci-mem.c
@@ -32,7 +32,7 @@
  *
  * @param addr	pointer to memory region to be flushed
  * @param len	the length of the cache line to be flushed
- * @return none
+ * Return: none
  */
 void xhci_flush_cache(uintptr_t addr, u32 len)
 {
@@ -47,7 +47,7 @@
  *
  * @param addr	pointer to memory region to be invalidates
  * @param len	the length of the cache line to be invalidated
- * @return none
+ * Return: none
  */
 void xhci_inval_cache(uintptr_t addr, u32 len)
 {
@@ -62,7 +62,7 @@
  * frees the "segment" pointer passed
  *
  * @param ptr	pointer to "segement" to be freed
- * @return none
+ * Return: none
  */
 static void xhci_segment_free(struct xhci_segment *seg)
 {
@@ -76,7 +76,7 @@
  * frees the "ring" pointer passed
  *
  * @param ptr	pointer to "ring" to be freed
- * @return none
+ * Return: none
  */
 static void xhci_ring_free(struct xhci_ring *ring)
 {
@@ -101,7 +101,7 @@
  * Free the scratchpad buffer array and scratchpad buffers
  *
  * @ctrl	host controller data structure
- * @return	none
+ * Return:	none
  */
 static void xhci_scratchpad_free(struct xhci_ctrl *ctrl)
 {
@@ -120,7 +120,7 @@
  * frees the "xhci_container_ctx" pointer passed
  *
  * @param ptr	pointer to "xhci_container_ctx" to be freed
- * @return none
+ * Return: none
  */
 static void xhci_free_container_ctx(struct xhci_container_ctx *ctx)
 {
@@ -132,7 +132,7 @@
  * frees the virtual devices for "xhci_ctrl" pointer passed
  *
  * @param ptr	pointer to "xhci_ctrl" whose virtual devices are to be freed
- * @return none
+ * Return: none
  */
 static void xhci_free_virt_devices(struct xhci_ctrl *ctrl)
 {
@@ -170,7 +170,7 @@
  * frees all the memory allocated
  *
  * @param ptr	pointer to "xhci_ctrl" to be cleaned up
- * @return none
+ * Return: none
  */
 void xhci_cleanup(struct xhci_ctrl *ctrl)
 {
@@ -187,7 +187,7 @@
  * Malloc the aligned memory
  *
  * @param size	size of memory to be allocated
- * @return allocates the memory and returns the aligned pointer
+ * Return: allocates the memory and returns the aligned pointer
  */
 static void *xhci_malloc(unsigned int size)
 {
@@ -212,7 +212,7 @@
  * @param prev	pointer to the previous segment
  * @param next	pointer to the next segment
  * @param link_trbs	flag to indicate whether to link the trbs or NOT
- * @return none
+ * Return: none
  */
 static void xhci_link_segments(struct xhci_ctrl *ctrl, struct xhci_segment *prev,
 			       struct xhci_segment *next, bool link_trbs)
@@ -243,7 +243,7 @@
  * Initialises the Ring's enqueue,dequeue,enq_seg pointers
  *
  * @param ring	pointer to the RING to be intialised
- * @return none
+ * Return: none
  */
 static void xhci_initialize_ring_info(struct xhci_ring *ring)
 {
@@ -271,7 +271,7 @@
  * "All components of all Command and Transfer TRBs shall be initialized to '0'"
  *
  * @param	none
- * @return pointer to the newly allocated SEGMENT
+ * Return: pointer to the newly allocated SEGMENT
  */
 static struct xhci_segment *xhci_segment_alloc(void)
 {
@@ -300,7 +300,7 @@
  *
  * @param num_segs	number of segments in the ring
  * @param link_trbs	flag to indicate whether to link the trbs or NOT
- * @return pointer to the newly created RING
+ * Return: pointer to the newly created RING
  */
 struct xhci_ring *xhci_ring_alloc(struct xhci_ctrl *ctrl, unsigned int num_segs,
 				  bool link_trbs)
@@ -346,7 +346,7 @@
  * Set up the scratchpad buffer array and scratchpad buffers
  *
  * @ctrl	host controller data structure
- * @return	-ENOMEM if buffer allocation fails, 0 on success
+ * Return:	-ENOMEM if buffer allocation fails, 0 on success
  */
 static int xhci_scratchpad_alloc(struct xhci_ctrl *ctrl)
 {
@@ -419,7 +419,7 @@
  *
  * @param ctrl	Host controller data structure
  * @param type type of XHCI Container Context
- * @return NULL if failed else pointer to the context on success
+ * Return: NULL if failed else pointer to the context on success
  */
 static struct xhci_container_ctx
 		*xhci_alloc_container_ctx(struct xhci_ctrl *ctrl, int type)
@@ -445,7 +445,7 @@
  * Allocating virtual device
  *
  * @param udev	pointer to USB deivce structure
- * @return 0 on success else -1 on failure
+ * Return: 0 on success else -1 on failure
  */
 int xhci_alloc_virt_device(struct xhci_ctrl *ctrl, unsigned int slot_id)
 {
@@ -504,7 +504,7 @@
  * @param ctrl	Host controller data structure
  * @param hccr	pointer to HOST Controller Control Registers
  * @param hcor	pointer to HOST Controller Operational Registers
- * @return 0 if successful else -1 on failure
+ * Return: 0 if successful else -1 on failure
  */
 int xhci_mem_init(struct xhci_ctrl *ctrl, struct xhci_hccr *hccr,
 					struct xhci_hcor *hcor)
@@ -611,7 +611,7 @@
  * Give the input control context for the passed container context
  *
  * @param ctx	pointer to the context
- * @return pointer to the Input control context data
+ * Return: pointer to the Input control context data
  */
 struct xhci_input_control_ctx
 		*xhci_get_input_control_ctx(struct xhci_container_ctx *ctx)
@@ -625,7 +625,7 @@
  *
  * @param ctrl	Host controller data structure
  * @param ctx	pointer to the context
- * @return pointer to the slot control context data
+ * Return: pointer to the slot control context data
  */
 struct xhci_slot_ctx *xhci_get_slot_ctx(struct xhci_ctrl *ctrl,
 				struct xhci_container_ctx *ctx)
@@ -643,7 +643,7 @@
  * @param ctrl	Host controller data structure
  * @param ctx	context container
  * @param ep_index	index of the endpoint
- * @return pointer to the End point context
+ * Return: pointer to the End point context
  */
 struct xhci_ep_ctx *xhci_get_ep_ctx(struct xhci_ctrl *ctrl,
 				    struct xhci_container_ctx *ctx,
@@ -668,7 +668,7 @@
  * @param in_ctx contains the input context
  * @param out_ctx contains the input context
  * @param ep_index index of the end point
- * @return none
+ * Return: none
  */
 void xhci_endpoint_copy(struct xhci_ctrl *ctrl,
 			struct xhci_container_ctx *in_ctx,
@@ -697,7 +697,7 @@
  * @param ctrl	Host controller data structure
  * @param in_ctx contains the inpout context
  * @param out_ctx contains the inpout context
- * @return none
+ * Return: none
  */
 void xhci_slot_copy(struct xhci_ctrl *ctrl, struct xhci_container_ctx *in_ctx,
 					struct xhci_container_ctx *out_ctx)
@@ -718,7 +718,7 @@
  * Setup an xHCI virtual device for a Set Address command
  *
  * @param udev pointer to the Device Data Structure
- * @return returns negative value on failure else 0 on success
+ * Return: returns negative value on failure else 0 on success
  */
 void xhci_setup_addressable_virt_dev(struct xhci_ctrl *ctrl,
 				     struct usb_device *udev, int hop_portnr)
diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
index 35bd5cd..0b3e7a2 100644
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -33,7 +33,7 @@
  * @param ring	pointer to the ring
  * @param seg	poniter to the segment to which TRB belongs
  * @param trb	poniter to the ring trb
- * @return 1 if this TRB a link TRB else 0
+ * Return: 1 if this TRB a link TRB else 0
  */
 static int last_trb(struct xhci_ctrl *ctrl, struct xhci_ring *ring,
 			struct xhci_segment *seg, union xhci_trb *trb)
@@ -52,7 +52,7 @@
  * @param ring	pointer to the ring
  * @param seg	poniter to the segment to which TRB belongs
  * @param trb	poniter to the ring trb
- * @return 1 if this TRB is the last TRB on the last segment else 0
+ * Return: 1 if this TRB is the last TRB on the last segment else 0
  */
 static bool last_trb_on_last_seg(struct xhci_ctrl *ctrl,
 				 struct xhci_ring *ring,
@@ -86,7 +86,7 @@
  *				are expected or NOT.
  *				Will you enqueue more TRBs before calling
  *				prepare_ring()?
- * @return none
+ * Return: none
  */
 static void inc_enq(struct xhci_ctrl *ctrl, struct xhci_ring *ring,
 						bool more_trbs_coming)
@@ -178,7 +178,7 @@
  * @param ring	pointer to the ring
  * @param more_trbs_coming	flag to indicate whether more trbs
  * @param trb_fields	pointer to trb field array containing TRB contents
- * @return pointer to the enqueued trb
+ * Return: pointer to the enqueued trb
  */
 static struct xhci_generic_trb *queue_trb(struct xhci_ctrl *ctrl,
 					  struct xhci_ring *ring,
@@ -207,7 +207,7 @@
  * @param ctrl		Host controller data structure
  * @param ep_ring	pointer to the EP Transfer Ring
  * @param ep_state	State of the End Point
- * @return error code in case of invalid ep_state, 0 on success
+ * Return: error code in case of invalid ep_state, 0 on success
  */
 static int prepare_ring(struct xhci_ctrl *ctrl, struct xhci_ring *ep_ring,
 							u32 ep_state)
@@ -269,7 +269,7 @@
  * @param slot_id	Slot ID to encode in the flags field (opt.)
  * @param ep_index	Endpoint index to encode in the flags field (opt.)
  * @param cmd		Command type to enqueue
- * @return none
+ * Return: none
  */
 void xhci_queue_command(struct xhci_ctrl *ctrl, u8 *ptr, u32 slot_id,
 			u32 ep_index, trb_type cmd)
@@ -327,7 +327,7 @@
  * @param td_total_len	total packet count
  * @param maxp	max packet size of current pipe
  * @param more_trbs_coming	indicate last trb in TD
- * @return remainder
+ * Return: remainder
  */
 static u32 xhci_td_remainder(struct xhci_ctrl *ctrl, int transferred,
 			     int trb_buff_len, unsigned int td_total_len,
@@ -361,7 +361,7 @@
  * @param ep_index	index of the endpoint
  * @param start_cycle	cycle flag of the first TRB
  * @param start_trb	pionter to the first TRB
- * @return none
+ * Return: none
  */
 static void giveback_first_trb(struct usb_device *udev, int ep_index,
 				int start_cycle,
@@ -395,7 +395,7 @@
  * the end of each event handler, and not touch the TRB again afterwards.
  *
  * @param ctrl	Host controller data structure
- * @return none
+ * Return: none
  */
 void xhci_acknowledge_event(struct xhci_ctrl *ctrl)
 {
@@ -411,7 +411,7 @@
  * Checks if there is a new event to handle on the event ring.
  *
  * @param ctrl	Host controller data structure
- * @return 0 if failure else 1 on success
+ * Return: 0 if failure else 1 on success
  */
 static int event_ready(struct xhci_ctrl *ctrl)
 {
@@ -437,7 +437,7 @@
  *
  * @param ctrl		Host controller data structure
  * @param expected	TRB type expected from Event TRB
- * @return pointer to event trb
+ * Return: pointer to event trb
  */
 union xhci_trb *xhci_wait_for_event(struct xhci_ctrl *ctrl, trb_type expected)
 {
@@ -557,7 +557,7 @@
  * @param pipe		contains the DIR_IN or OUT , devnum
  * @param length	length of the buffer
  * @param buffer	buffer to be read/written based on the request
- * @return returns 0 if successful else -1 on failure
+ * Return: returns 0 if successful else -1 on failure
  */
 int xhci_bulk_tx(struct usb_device *udev, unsigned long pipe,
 			int length, void *buffer)
@@ -753,7 +753,7 @@
  * @param req		request type
  * @param length	length of the buffer
  * @param buffer	buffer to be read/written based on the request
- * @return returns 0 if successful else error code on failure
+ * Return: returns 0 if successful else error code on failure
  */
 int xhci_ctrl_tx(struct usb_device *udev, unsigned long pipe,
 			struct devrequest *req,	int length,
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
index 452dacc..ad73ba1 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -143,7 +143,7 @@
  * @param mask	mask for the value read
  * @param done	value to be campared with result
  * @param usec	time to wait till
- * @return 0 if handshake is success else < 0 on failure
+ * Return: 0 if handshake is success else < 0 on failure
  */
 static int
 handshake(uint32_t volatile *ptr, uint32_t mask, uint32_t done, int usec)
@@ -164,7 +164,7 @@
  * Set the run bit and wait for the host to be running.
  *
  * @param hcor	pointer to host controller operation registers
- * @return status of the Handshake
+ * Return: status of the Handshake
  */
 static int xhci_start(struct xhci_hcor *hcor)
 {
@@ -192,7 +192,7 @@
  * Resets the XHCI Controller
  *
  * @param hcor	pointer to host controller operation registers
- * @return -EBUSY if XHCI Controller is not halted else status of handshake
+ * Return: -EBUSY if XHCI Controller is not halted else status of handshake
  */
 static int xhci_reset(struct xhci_hcor *hcor)
 {
@@ -244,7 +244,7 @@
  * index = (epnum * 2) + direction - 1 = (epnum * 2) + 1 - 1 = (epnum * 2)
  *
  * @param desc	USB enpdoint Descriptor
- * @return index of the Endpoint
+ * Return: index of the Endpoint
  */
 static unsigned int xhci_get_ep_index(struct usb_endpoint_descriptor *desc)
 {
@@ -447,7 +447,7 @@
  *
  * @param udev	pointer to the Device Data Structure
  * @param ctx_change	flag to indicate the Context has changed or NOT
- * @return 0 on success, -1 on failure
+ * Return: 0 on success, -1 on failure
  */
 static int xhci_configure_endpoints(struct usb_device *udev, bool ctx_change)
 {
@@ -487,7 +487,7 @@
  * Configure the endpoint, programming the device contexts.
  *
  * @param udev	pointer to the USB device structure
- * @return returns the status of the xhci_configure_endpoints
+ * Return: returns the status of the xhci_configure_endpoints
  */
 static int xhci_set_configuration(struct usb_device *udev)
 {
@@ -630,7 +630,7 @@
  * the device).
  *
  * @param udev pointer to the Device Data Structure
- * @return 0 if successful else error code on failure
+ * Return: 0 if successful else error code on failure
  */
 static int xhci_address_device(struct usb_device *udev, int root_portnr)
 {
@@ -712,7 +712,7 @@
  * or allocating memory failed.
  *
  * @param udev	pointer to the Device Data Structure
- * @return Returns 0 on succes else return error code on failure
+ * Return: Returns 0 on succes else return error code on failure
  */
 static int _xhci_alloc_device(struct usb_device *udev)
 {
@@ -766,7 +766,7 @@
  * we need to issue an evaluate context command and wait on it.
  *
  * @param udev	pointer to the Device Data Structure
- * @return returns the status of the xhci_configure_endpoints
+ * Return: returns the status of the xhci_configure_endpoints
  */
 int xhci_check_maxpacket(struct usb_device *udev)
 {
@@ -822,7 +822,7 @@
  * @param wIndex	request index
  * @param addr		address of posrt status register
  * @param port_status	state of port status register
- * @return none
+ * Return: none
  */
 static void xhci_clear_port_change_bit(u16 wValue,
 		u16 wIndex, volatile uint32_t *addr, u32 port_status)
@@ -870,7 +870,7 @@
  * For all other types (RW1S, RW1CS, RW, and RZ), writing a '0' has no effect.
  *
  * @param state	state of the Port Status and Control Regsiter
- * @return a value that would result in the port being in the
+ * Return: a value that would result in the port being in the
  *	   same state, if the value was written to the port
  *	   status control register.
  */
@@ -886,7 +886,7 @@
  * @param udev pointer to the USB device structure
  * @param pipe contains the DIR_IN or OUT , devnum
  * @param buffer buffer to be read/written based on the request
- * @return returns 0 if successful else -1 on failure
+ * Return: returns 0 if successful else -1 on failure
  */
 static int xhci_submit_root(struct usb_device *udev, unsigned long pipe,
 			void *buffer, struct devrequest *req)
@@ -1116,7 +1116,7 @@
  * @param buffer	buffer to be read/written based on the request
  * @param length	length of the buffer
  * @param interval	interval of the interrupt
- * @return 0
+ * Return: 0
  */
 static int _xhci_submit_int_msg(struct usb_device *udev, unsigned long pipe,
 				void *buffer, int length, int interval,
@@ -1143,7 +1143,7 @@
  * @param pipe		contains the DIR_IN or OUT , devnum
  * @param buffer	buffer to be read/written based on the request
  * @param length	length of the buffer
- * @return returns 0 if successful else -1 on failure
+ * Return: returns 0 if successful else -1 on failure
  */
 static int _xhci_submit_bulk_msg(struct usb_device *udev, unsigned long pipe,
 				 void *buffer, int length)
@@ -1165,7 +1165,7 @@
  * @param length	length of the buffer
  * @param setup		Request type
  * @param root_portnr	Root port number that this device is on
- * @return returns 0 if successful else -1 on failure
+ * Return: returns 0 if successful else -1 on failure
  */
 static int _xhci_submit_control_msg(struct usb_device *udev, unsigned long pipe,
 				    void *buffer, int length,
@@ -1299,7 +1299,7 @@
  * and allocates the necessary data structures
  *
  * @param index	index to the host controller data structure
- * @return pointer to the intialised controller
+ * Return: pointer to the intialised controller
  */
 int usb_lowlevel_init(int index, enum usb_init_type init, void **controller)
 {
@@ -1338,7 +1338,7 @@
  * and cleans up all the related data structures
  *
  * @param index	index to the host controller data structure
- * @return none
+ * Return: none
  */
 int usb_lowlevel_stop(int index)
 {
diff --git a/drivers/usb/musb-new/musb_gadget.c b/drivers/usb/musb-new/musb_gadget.c
index 7cca92b..05bd948 100644
--- a/drivers/usb/musb-new/musb_gadget.c
+++ b/drivers/usb/musb-new/musb_gadget.c
@@ -1966,7 +1966,7 @@
  * -ENOMEM no memory to perform the operation
  *
  * @param driver the gadget driver
- * @return <0 if error, 0 if everything is fine
+ * Return: <0 if error, 0 if everything is fine
  */
 #ifndef __UBOOT__
 static int musb_gadget_start(struct usb_gadget *g,
diff --git a/drivers/usb/musb-new/musb_gadget_ep0.c b/drivers/usb/musb-new/musb_gadget_ep0.c
index cbd92fc..7fdd240 100644
--- a/drivers/usb/musb-new/musb_gadget_ep0.c
+++ b/drivers/usb/musb-new/musb_gadget_ep0.c
@@ -147,7 +147,7 @@
  * that is supposed to be a standard control request. Assumes the fifo to
  * be at least 2 bytes long.
  *
- * @return 0 if the request was NOT HANDLED,
+ * Return: 0 if the request was NOT HANDLED,
  * < 0 when error
  * > 0 when the request is processed
  *
diff --git a/drivers/usb/musb-new/usb-compat.h b/drivers/usb/musb-new/usb-compat.h
index 1c66c4f..df68c92 100644
--- a/drivers/usb/musb-new/usb-compat.h
+++ b/drivers/usb/musb-new/usb-compat.h
@@ -72,7 +72,7 @@
  * usb_dev_get_parent() - Get the parent of a USB device
  *
  * @udev: USB struct containing information about the device
- * @return associated device for which udev == dev_get_parent_priv(dev)
+ * Return: associated device for which udev == dev_get_parent_priv(dev)
  */
 struct usb_device *usb_dev_get_parent(struct usb_device *udev);
 
diff --git a/drivers/video/bridge/ps862x.c b/drivers/video/bridge/ps862x.c
index c8e1058..d1d22a6 100644
--- a/drivers/video/bridge/ps862x.c
+++ b/drivers/video/bridge/ps862x.c
@@ -33,7 +33,7 @@
  * @param addr_off	offset from the i2c base address for ps8622
  * @param reg_addr	register address to write
  * @param value		value to be written
- * @return 0 on success, non-0 on failure
+ * Return: 0 on success, non-0 on failure
  */
 static int ps8622_write(struct udevice *dev, unsigned addr_off,
 			unsigned char reg_addr, unsigned char value)
diff --git a/drivers/video/console_truetype.c b/drivers/video/console_truetype.c
index de8b86b..c04b449 100644
--- a/drivers/video/console_truetype.c
+++ b/drivers/video/console_truetype.c
@@ -368,7 +368,7 @@
  * @xend:	X end position in pixels from the left
  * @yend:	Y end position  in pixels from the top
  * @clr:	Value to write
- * @return 0 if OK, -ENOSYS if the display depth is not supported
+ * Return: 0 if OK, -ENOSYS if the display depth is not supported
  */
 static int console_truetype_erase(struct udevice *dev, int xstart, int ystart,
 				  int xend, int yend, int clr)
@@ -429,7 +429,7 @@
  * not been entered.
  *
  * @dev:	Device to update
- * @return 0 if OK, -ENOSYS if not supported
+ * Return: 0 if OK, -ENOSYS if not supported
  */
 static int console_truetype_backspace(struct udevice *dev)
 {
@@ -535,7 +535,7 @@
  *
  * This searched for the first available font.
  *
- * @return pointer to the font, or NULL if none is found
+ * Return: pointer to the font, or NULL if none is found
  */
 static u8 *console_truetype_find_font(void)
 {
diff --git a/drivers/video/imx/ipu_common.c b/drivers/video/imx/ipu_common.c
index 5908b23..54d1efc 100644
--- a/drivers/video/imx/ipu_common.c
+++ b/drivers/video/imx/ipu_common.c
@@ -457,7 +457,7 @@
  * @param	dev	The device structure for the IPU passed in by the
  *			driver framework.
  *
- * @return      Returns 0 on success or negative error code on error
+ * Return:      Returns 0 on success or negative error code on error
  */
 int ipu_probe(void)
 {
@@ -574,7 +574,7 @@
  * @param       params  Input parameter containing union of channel
  *                      initialization parameters.
  *
- * @return      Returns 0 on success or negative error code on fail
+ * Return:      Returns 0 on success or negative error code on fail
  */
 int32_t ipu_init_channel(ipu_channel_t channel, ipu_channel_params_t *params)
 {
@@ -1006,7 +1006,7 @@
  * @param       v		private v offset for additional cropping,
  *				zero if not used.
  *
- * @return      Returns 0 on success or negative error code on fail
+ * Return:      Returns 0 on success or negative error code on fail
  */
 int32_t ipu_init_channel_buffer(ipu_channel_t channel, ipu_buffer_t type,
 				uint32_t pixel_fmt,
@@ -1061,7 +1061,7 @@
  *
  * @param       channel         Input parameter for the logical channel ID.
  *
- * @return      This function returns 0 on success or negative error code on
+ * Return:      This function returns 0 on success or negative error code on
  *              fail.
  */
 int32_t ipu_enable_channel(ipu_channel_t channel)
@@ -1139,7 +1139,7 @@
  * @param       wait_for_stop   Flag to set whether to wait for channel end
  *                              of frame or return immediately.
  *
- * @return      This function returns 0 on success or negative error code on
+ * Return:      This function returns 0 on success or negative error code on
  *              fail.
  */
 int32_t ipu_disable_channel(ipu_channel_t channel)
diff --git a/drivers/video/imx/ipu_disp.c b/drivers/video/imx/ipu_disp.c
index 4506989..144322e 100644
--- a/drivers/video/imx/ipu_disp.c
+++ b/drivers/video/imx/ipu_disp.c
@@ -822,7 +822,7 @@
  *
  * @param       sig             Bitfield of signal polarities for LCD interface.
  *
- * @return      This function returns 0 on success or negative error code on
+ * Return:      This function returns 0 on success or negative error code on
  *              fail.
  */
 
@@ -1171,7 +1171,7 @@
  *
  * @param       alpha           Global alpha value.
  *
- * @return      Returns 0 on success or negative error code on fail
+ * Return:      Returns 0 on success or negative error code on fail
  */
 int32_t ipu_disp_set_global_alpha(ipu_channel_t channel, unsigned char enable,
 				  uint8_t alpha)
@@ -1226,7 +1226,7 @@
  *
  * @param       colorKey        24-bit RGB color for transparent color key.
  *
- * @return      Returns 0 on success or negative error code on fail
+ * Return:      Returns 0 on success or negative error code on fail
  */
 int32_t ipu_disp_set_color_key(ipu_channel_t channel, unsigned char enable,
 			       uint32_t color_key)
diff --git a/drivers/video/imx/mxc_ipuv3_fb.c b/drivers/video/imx/mxc_ipuv3_fb.c
index 6cdbbaf..98228f2 100644
--- a/drivers/video/imx/mxc_ipuv3_fb.c
+++ b/drivers/video/imx/mxc_ipuv3_fb.c
@@ -428,7 +428,7 @@
  * structures.  This includes information such as bits per pixel,
  * color maps, screen width/height and RGBA offsets.
  *
- * @return      Framebuffer structure initialized with our information
+ * Return:      Framebuffer structure initialized with our information
  */
 static struct fb_info *mxcfb_init_fbinfo(void)
 {
@@ -479,7 +479,7 @@
  * this routine: Framebuffer initialization, Memory allocation and
  * mapping, Framebuffer registration, IPU initialization.
  *
- * @return      Appropriate error code to the kernel common code
+ * Return:      Appropriate error code to the kernel common code
  */
 static int mxcfb_probe(struct udevice *dev, u32 interface_pix_fmt,
 		       uint8_t disp, struct fb_videomode const *mode)
diff --git a/drivers/video/meson/simplefb_common.h b/drivers/video/meson/simplefb_common.h
index 9ea7b04..d0cc1b4 100644
--- a/drivers/video/meson/simplefb_common.h
+++ b/drivers/video/meson/simplefb_common.h
@@ -14,7 +14,7 @@
  *
  * @blob: device tree blob
  * @pipeline: display pipeline
- * @return device node offset in blob, or negative values if failed
+ * Return: device node offset in blob, or negative values if failed
  */
 int meson_simplefb_fdt_match(void *blob, const char *pipeline);
 
diff --git a/drivers/video/panel-uclass.c b/drivers/video/panel-uclass.c
index bb2eaae..1f7e20e 100644
--- a/drivers/video/panel-uclass.c
+++ b/drivers/video/panel-uclass.c
@@ -26,7 +26,7 @@
  * @dev:	Panel device containing the backlight to update
  * @percent:	Brightness value (0=off, 1=min brightness,
  *		100=full brightness)
- * @return 0 if OK, -ve on error
+ * Return: 0 if OK, -ve on error
  */
 int panel_set_backlight(struct udevice *dev, int percent)
 {
diff --git a/drivers/video/rockchip/rk_hdmi.h b/drivers/video/rockchip/rk_hdmi.h
index 859a0b9..200dbae 100644
--- a/drivers/video/rockchip/rk_hdmi.h
+++ b/drivers/video/rockchip/rk_hdmi.h
@@ -33,7 +33,7 @@
  * @dev:	device
  * @buf:	output buffer for the EDID
  * @buf_size:	number of bytes in the buffer
- * @return number of bytes read if OK, -ve if something went wrong
+ * Return: number of bytes read if OK, -ve if something went wrong
  */
 int rk_hdmi_read_edid(struct udevice *dev, u8 *buf, int buf_size);
 
@@ -55,7 +55,7 @@
  * rk_hdmi_of_to_plat() - common of_to_plat implementation
  *
  * @dev:	device
- * @return 0 if OK, -ve if something went wrong
+ * Return: 0 if OK, -ve if something went wrong
  */
 int rk_hdmi_of_to_plat(struct udevice *dev);
 
@@ -68,7 +68,7 @@
  * 3. initialises the Designware HDMI PHY
  *
  * @dev:	device
- * @return 0 if OK, -ve if something went wrong
+ * Return: 0 if OK, -ve if something went wrong
  */
 int rk_hdmi_probe(struct udevice *dev);
 
diff --git a/drivers/video/rockchip/rk_vop.c b/drivers/video/rockchip/rk_vop.c
index fe05748..bc98ab6 100644
--- a/drivers/video/rockchip/rk_vop.c
+++ b/drivers/video/rockchip/rk_vop.c
@@ -238,7 +238,7 @@
  * @fbbase:	Frame buffer address
  * @ep_node:	Device tree node to process - this is the offset of an endpoint
  *		node within the VOP's 'port' list.
- * @return 0 if OK, -ve if something went wrong
+ * Return: 0 if OK, -ve if something went wrong
  */
 static int rk_display_init(struct udevice *dev, ulong fbbase, ofnode ep_node)
 {
diff --git a/drivers/video/rockchip/rk_vop.h b/drivers/video/rockchip/rk_vop.h
index 53a79c0..0528fb2 100644
--- a/drivers/video/rockchip/rk_vop.h
+++ b/drivers/video/rockchip/rk_vop.h
@@ -32,7 +32,7 @@
  * successfully initialised).
  *
  * @dev:	device
- * @return 0 if OK, -ve if something went wrong
+ * Return: 0 if OK, -ve if something went wrong
  */
 int rk_vop_probe(struct udevice *dev);
 
@@ -44,7 +44,7 @@
  *     (32 BPP) x VIDEO_ROCKCHIP_MAX_XRES x VIDEO_ROCKCHIP_MAX_YRES
  *
  * @dev:	device
- * @return 0 (always OK)
+ * Return: 0 (always OK)
  */
 int rk_vop_bind(struct udevice *dev);
 
diff --git a/drivers/video/sunxi/simplefb_common.h b/drivers/video/sunxi/simplefb_common.h
index f4c5e74..10292a0 100644
--- a/drivers/video/sunxi/simplefb_common.h
+++ b/drivers/video/sunxi/simplefb_common.h
@@ -14,7 +14,7 @@
  *
  * @blob: device tree blob
  * @pipeline: display pipeline
- * @return device node offset in blob, or negative values if failed
+ * Return: device node offset in blob, or negative values if failed
  */
 int sunxi_simplefb_fdt_match(void *blob, const char *pipeline);
 
diff --git a/drivers/video/tegra.c b/drivers/video/tegra.c
index d60132e..3f9fcd0 100644
--- a/drivers/video/tegra.c
+++ b/drivers/video/tegra.c
@@ -262,7 +262,7 @@
  * @param blob			Device tree blob
  * @param priv			Driver's private data
  * @param default_lcd_base	Default address of LCD frame buffer
- * @return 0 if ok, -1 on error (unsupported bits per pixel)
+ * Return: 0 if ok, -1 on error (unsupported bits per pixel)
  */
 static int tegra_display_probe(const void *blob, struct tegra_lcd_priv *priv,
 			       void *default_lcd_base)
diff --git a/drivers/video/ti/am335x-fb.c b/drivers/video/ti/am335x-fb.c
index 8b41dac..680ea47 100644
--- a/drivers/video/ti/am335x-fb.c
+++ b/drivers/video/ti/am335x-fb.c
@@ -139,7 +139,7 @@
  *
  * @dpll_data: struct dpll_data pointer for the DPLL
  * @rate:      New DPLL clock rate
- * @return rounded rate and the computed m, n and div values in the dpll_data
+ * Return: rounded rate and the computed m, n and div values in the dpll_data
  *         structure, or -ve error code.
  */
 static ulong am335x_dpll_round_rate(struct dpll_data *dd, ulong rate)
@@ -189,7 +189,7 @@
  *
  * @am335x_lcdhw: Base address of the LCD controller registers.
  * @rate:         New clock rate in Hz.
- * @return new rate, or -ve error code.
+ * Return: new rate, or -ve error code.
  */
 static ulong am335x_fb_set_pixel_clk_rate(struct am335x_lcdhw *regs, ulong rate)
 {
diff --git a/drivers/video/video_bmp.c b/drivers/video/video_bmp.c
index e8600b2..c8c3fd3 100644
--- a/drivers/video/video_bmp.c
+++ b/drivers/video/video_bmp.c
@@ -21,7 +21,7 @@
 /**
  * get_bmp_col_16bpp() - Convert a colour-table entry into a 16bpp pixel value
  *
- * @return value to write to the 16bpp frame buffer for this palette entry
+ * Return: value to write to the 16bpp frame buffer for this palette entry
  */
 static uint get_bmp_col_16bpp(struct bmp_color_table_entry cte)
 {
diff --git a/drivers/video/videomodes.c b/drivers/video/videomodes.c
index ed7373e..69ef736 100644
--- a/drivers/video/videomodes.c
+++ b/drivers/video/videomodes.c
@@ -384,7 +384,7 @@
  * @param t		The EDID detailed timing to be converted
  * @param mode		Returns the converted timing
  *
- * @return 0 on success, or a negative errno on error
+ * Return: 0 on success, or a negative errno on error
  */
 int video_edid_dtd_to_ctfb_res_modes(struct edid_detailed_timing *t,
 				     struct ctfb_res_modes *mode)
diff --git a/drivers/virtio/virtio_pci_modern.c b/drivers/virtio/virtio_pci_modern.c
index dfbbf8a..fd8a1f3 100644
--- a/drivers/virtio/virtio_pci_modern.c
+++ b/drivers/virtio/virtio_pci_modern.c
@@ -380,7 +380,7 @@
  * @udev:	the transport device
  * @cfg_type:	the VIRTIO_PCI_CAP_* value we seek
  *
- * @return offset of the configuration structure
+ * Return: offset of the configuration structure
  */
 static int virtio_pci_find_capability(struct udevice *udev, u8 cfg_type)
 {
@@ -413,7 +413,7 @@
  * @udev:	the transport device
  * @off:	offset of the configuration structure
  *
- * @return base address of the capability
+ * Return: base address of the capability
  */
 static void __iomem *virtio_pci_map_capability(struct udevice *udev, int off)
 {
