#include <dt-bindings/soc/bcm-pmb.h>
#include <linux/io.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/pm_domain.h>
#include <linux/reset/bcm63xx_pmb.h>
#define BPCM_ID_REG …
#define BPCM_CAPABILITIES …
#define BPCM_CAP_NUM_ZONES …
#define BPCM_CAP_SR_REG_BITS …
#define BPCM_CAP_PLLTYPE …
#define BPCM_CAP_UBUS …
#define BPCM_CONTROL …
#define BPCM_STATUS …
#define BPCM_ROSC_CONTROL …
#define BPCM_ROSC_THRESH_H …
#define BPCM_ROSC_THRESHOLD_BCM6838 …
#define BPCM_ROSC_THRESH_S …
#define BPCM_ROSC_COUNT_BCM6838 …
#define BPCM_ROSC_COUNT …
#define BPCM_PWD_CONTROL_BCM6838 …
#define BPCM_PWD_CONTROL …
#define BPCM_SR_CONTROL_BCM6838 …
#define BPCM_PWD_ACCUM_CONTROL …
#define BPCM_SR_CONTROL …
#define BPCM_GLOBAL_CONTROL …
#define BPCM_MISC_CONTROL …
#define BPCM_MISC_CONTROL2 …
#define BPCM_SGPHY_CNTL …
#define BPCM_SGPHY_STATUS …
#define BPCM_ZONE0 …
#define BPCM_ZONE_CONTROL …
#define BPCM_ZONE_CONTROL_MANUAL_CLK_EN …
#define BPCM_ZONE_CONTROL_MANUAL_RESET_CTL …
#define BPCM_ZONE_CONTROL_FREQ_SCALE_USED …
#define BPCM_ZONE_CONTROL_DPG_CAPABLE …
#define BPCM_ZONE_CONTROL_MANUAL_MEM_PWR …
#define BPCM_ZONE_CONTROL_MANUAL_ISO_CTL …
#define BPCM_ZONE_CONTROL_MANUAL_CTL …
#define BPCM_ZONE_CONTROL_DPG_CTL_EN …
#define BPCM_ZONE_CONTROL_PWR_DN_REQ …
#define BPCM_ZONE_CONTROL_PWR_UP_REQ …
#define BPCM_ZONE_CONTROL_MEM_PWR_CTL_EN …
#define BPCM_ZONE_CONTROL_BLK_RESET_ASSERT …
#define BPCM_ZONE_CONTROL_MEM_STBY …
#define BPCM_ZONE_CONTROL_RESERVED …
#define BPCM_ZONE_CONTROL_PWR_CNTL_STATE …
#define BPCM_ZONE_CONTROL_FREQ_SCALAR_DYN_SEL …
#define BPCM_ZONE_CONTROL_PWR_OFF_STATE …
#define BPCM_ZONE_CONTROL_PWR_ON_STATE …
#define BPCM_ZONE_CONTROL_PWR_GOOD …
#define BPCM_ZONE_CONTROL_DPG_PWR_STATE …
#define BPCM_ZONE_CONTROL_MEM_PWR_STATE …
#define BPCM_ZONE_CONTROL_ISO_STATE …
#define BPCM_ZONE_CONTROL_RESET_STATE …
#define BPCM_ZONE_CONFIG1 …
#define BPCM_ZONE_CONFIG2 …
#define BPCM_ZONE_FREQ_SCALAR_CONTROL …
#define BPCM_ZONE_SIZE …
struct bcm_pmb { … };
struct bcm_pmb_pd_data { … };
struct bcm_pmb_pm_domain { … };
static int bcm_pmb_bpcm_read(struct bcm_pmb *pmb, int bus, u8 device,
int offset, u32 *val)
{ … }
static int bcm_pmb_bpcm_write(struct bcm_pmb *pmb, int bus, u8 device,
int offset, u32 val)
{ … }
static int bcm_pmb_power_off_zone(struct bcm_pmb *pmb, int bus, u8 device,
int zone)
{ … }
static int bcm_pmb_power_on_zone(struct bcm_pmb *pmb, int bus, u8 device,
int zone)
{ … }
static int bcm_pmb_power_off_device(struct bcm_pmb *pmb, int bus, u8 device)
{ … }
static int bcm_pmb_power_on_device(struct bcm_pmb *pmb, int bus, u8 device)
{ … }
static int bcm_pmb_power_on_sata(struct bcm_pmb *pmb, int bus, u8 device)
{ … }
static int bcm_pmb_power_on(struct generic_pm_domain *genpd)
{ … }
static int bcm_pmb_power_off(struct generic_pm_domain *genpd)
{ … }
static int bcm_pmb_probe(struct platform_device *pdev)
{ … }
static const struct bcm_pmb_pd_data bcm_pmb_bcm4908_data[] = …;
static const struct bcm_pmb_pd_data bcm_pmb_bcm63138_data[] = …;
static const struct of_device_id bcm_pmb_of_match[] = …;
static struct platform_driver bcm_pmb_driver = …;
builtin_platform_driver(…) …;