diff --git a/include/power/regulator.h b/include/power/regulator.h
index 7f278e8..19a3b7b 100644
--- a/include/power/regulator.h
+++ b/include/power/regulator.h
@@ -16,15 +16,15 @@
  * 'UCLASS_REGULATOR' and the regulator driver API.
  *
  * The regulator uclass - is based on uclass platform data which is allocated,
- * automatically for each regulator device on bind and 'dev->uclass_platdata'
- * points to it. The data type is: 'struct dm_regulator_uclass_platdata'.
+ * automatically for each regulator device on bind and 'dev->uclass_plat'
+ * points to it. The data type is: 'struct dm_regulator_uclass_plat'.
  * The uclass file: 'drivers/power/regulator/regulator-uclass.c'
  *
  * The regulator device - is based on driver's model 'struct udevice'.
  * The API can use regulator name in two meanings:
  * - devname  - the regulator device's name: 'dev->name'
- * - platname - the device's platdata's name. So in the code it looks like:
- *              'uc_pdata = dev->uclass_platdata'; 'name = uc_pdata->name'.
+ * - platname - the device's plat's name. So in the code it looks like:
+ *              'uc_pdata = dev->uclass_plat'; 'name = uc_pdata->name'.
  *
  * The regulator device driver - provide an implementation of uclass operations
  * pointed by 'dev->driver->ops' as a struct of type 'struct dm_regulator_ops'.
@@ -135,7 +135,7 @@
 };
 
 /**
- * struct dm_regulator_uclass_platdata - pointed by dev->uclass_platdata, and
+ * struct dm_regulator_uclass_plat - pointed by dev->uclass_plat, and
  * allocated on each regulator bind. This structure holds an information
  * about each regulator's constraints and supported operation modes.
  * There is no "step" voltage value - so driver should take care of this.
@@ -162,7 +162,7 @@
  * The constraints: type, mode, mode_count, can be set by device driver, e.g.
  * by the driver '.probe' method.
  */
-struct dm_regulator_uclass_platdata {
+struct dm_regulator_uclass_plat {
 	enum regulator_type type;
 	struct dm_regulator_mode *mode;
 	int mode_count;
@@ -422,7 +422,7 @@
  * regulator_autoset: setup the voltage/current on a regulator
  *
  * The setup depends on constraints found in device's uclass's platform data
- * (struct dm_regulator_uclass_platdata):
+ * (struct dm_regulator_uclass_plat):
  *
  * - Enable - will set - if any of: 'always_on' or 'boot_on' is set to true,
  *   or if both are unset, then the function returns
@@ -431,7 +431,7 @@
  *
  * The function returns on the first-encountered error.
  *
- * @platname - expected string for dm_regulator_uclass_platdata .name field
+ * @platname - expected string for dm_regulator_uclass_plat .name field
  * @devp     - returned pointer to the regulator device - if non-NULL passed
  * @return: 0 on success or negative value of errno.
  */
@@ -440,7 +440,7 @@
 /**
  * regulator_autoset_by_name: setup the regulator given by its uclass's
  * platform data name field. The setup depends on constraints found in device's
- * uclass's platform data (struct dm_regulator_uclass_platdata):
+ * uclass's platform data (struct dm_regulator_uclass_plat):
  * - Enable - will set - if any of: 'always_on' or 'boot_on' is set to true,
  *   or if both are unset, then the function returns
  * - Voltage value - will set - if '.min_uV' and '.max_uV' values are equal
@@ -448,7 +448,7 @@
  *
  * The function returns on first encountered error.
  *
- * @platname - expected string for dm_regulator_uclass_platdata .name field
+ * @platname - expected string for dm_regulator_uclass_plat .name field
  * @devp     - returned pointer to the regulator device - if non-NULL passed
  * @return: 0 on success or negative value of errno.
  *
@@ -464,7 +464,7 @@
  * regulator_autoset_by_name() for each name from the list.
  *
  * @list_platname - an array of expected strings for .name field of each
- *                  regulator's uclass platdata
+ *                  regulator's uclass plat
  * @list_devp     - an array of returned pointers to the successfully setup
  *                  regulator devices if non-NULL passed
  * @verbose       - (true/false) print each regulator setup info, or be quiet
@@ -499,9 +499,9 @@
 
 /**
  * regulator_get_by_platname: returns the pointer to the pmic regulator device.
- * Search by name, found in regulator uclass platdata.
+ * Search by name, found in regulator uclass plat.
  *
- * @platname - expected string for uc_pdata->name of regulator uclass platdata
+ * @platname - expected string for uc_pdata->name of regulator uclass plat
  * @devp     - returns pointer to the regulator device or NULL on error
  * @return 0 on success or negative value of errno.
  *
