#include <linux/io.h>
#include <linux/iopoll.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/regulator/driver.h>
#include <linux/regulator/of_regulator.h>
#define REG_PWR_CR3 …
#define USB_3_3_EN …
#define USB_3_3_RDY …
#define REG_1_8_EN …
#define REG_1_8_RDY …
#define REG_1_1_EN …
#define REG_1_1_RDY …
enum { … };
static u32 ready_mask_table[STM32PWR_REG_NUM_REGS] = …;
struct stm32_pwr_reg { … };
static int stm32_pwr_reg_is_ready(struct regulator_dev *rdev)
{ … }
static int stm32_pwr_reg_is_enabled(struct regulator_dev *rdev)
{ … }
static int stm32_pwr_reg_enable(struct regulator_dev *rdev)
{ … }
static int stm32_pwr_reg_disable(struct regulator_dev *rdev)
{ … }
static const struct regulator_ops stm32_pwr_reg_ops = …;
#define PWR_REG(_id, _name, _volt, _en, _supply) … \
static const struct regulator_desc stm32_pwr_desc[] = …;
static int stm32_pwr_regulator_probe(struct platform_device *pdev)
{ … }
static const struct of_device_id __maybe_unused stm32_pwr_of_match[] = …;
MODULE_DEVICE_TABLE(of, stm32_pwr_of_match);
static struct platform_driver stm32_pwr_driver = …;
module_platform_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;