Symbol: scpsys
drivers/pmdomain/mediatek/mtk-pm-domains.c
1004
dev_err(pd->scpsys->dev,
drivers/pmdomain/mediatek/mtk-pm-domains.c
1008
if (scpsys->soc_data->type == SCPSYS_MTCMOS_TYPE_HW_VOTER) {
drivers/pmdomain/mediatek/mtk-pm-domains.c
1020
static void scpsys_domain_cleanup(struct scpsys *scpsys)
drivers/pmdomain/mediatek/mtk-pm-domains.c
1026
for (i = scpsys->pd_data.num_domains - 1; i >= 0; i--) {
drivers/pmdomain/mediatek/mtk-pm-domains.c
1027
genpd = scpsys->pd_data.domains[i];
drivers/pmdomain/mediatek/mtk-pm-domains.c
1035
static int scpsys_get_bus_protection_legacy(struct device *dev, struct scpsys *scpsys)
drivers/pmdomain/mediatek/mtk-pm-domains.c
109
regmap_multi_reg_read(pd->scpsys->base, regs, val, 2);
drivers/pmdomain/mediatek/mtk-pm-domains.c
1107
scpsys->bus_prot = devm_kmalloc_array(dev, num_regmaps,
drivers/pmdomain/mediatek/mtk-pm-domains.c
1108
sizeof(*scpsys->bus_prot), GFP_KERNEL);
drivers/pmdomain/mediatek/mtk-pm-domains.c
1109
if (!scpsys->bus_prot)
drivers/pmdomain/mediatek/mtk-pm-domains.c
1119
scpsys->bus_prot_index[bp_type] = j;
drivers/pmdomain/mediatek/mtk-pm-domains.c
1120
scpsys->bus_prot[j] = regmap[i];
drivers/pmdomain/mediatek/mtk-pm-domains.c
1128
static int scpsys_get_bus_protection(struct device *dev, struct scpsys *scpsys)
drivers/pmdomain/mediatek/mtk-pm-domains.c
1130
const struct scpsys_soc_data *soc = scpsys->soc_data;
drivers/pmdomain/mediatek/mtk-pm-domains.c
1140
scpsys->bus_prot = devm_kmalloc_array(dev, soc->num_bus_prot_blocks,
drivers/pmdomain/mediatek/mtk-pm-domains.c
1141
sizeof(*scpsys->bus_prot), GFP_KERNEL);
drivers/pmdomain/mediatek/mtk-pm-domains.c
1142
if (!scpsys->bus_prot)
drivers/pmdomain/mediatek/mtk-pm-domains.c
1159
scpsys->bus_prot_index[bp_type] = i;
drivers/pmdomain/mediatek/mtk-pm-domains.c
1161
scpsys->bus_prot[i] = device_node_to_regmap(node);
drivers/pmdomain/mediatek/mtk-pm-domains.c
1163
if (IS_ERR_OR_NULL(scpsys->bus_prot[i]))
drivers/pmdomain/mediatek/mtk-pm-domains.c
1164
return dev_err_probe(dev, scpsys->bus_prot[i] ?
drivers/pmdomain/mediatek/mtk-pm-domains.c
1165
PTR_ERR(scpsys->bus_prot[i]) : -ENXIO,
drivers/pmdomain/mediatek/mtk-pm-domains.c
122
regmap_multi_reg_read(pd->scpsys->base, regs, val, 3);
drivers/pmdomain/mediatek/mtk-pm-domains.c
1242
struct scpsys *scpsys;
drivers/pmdomain/mediatek/mtk-pm-domains.c
1253
scpsys = devm_kzalloc(dev, struct_size(scpsys, domains, num_domains), GFP_KERNEL);
drivers/pmdomain/mediatek/mtk-pm-domains.c
1254
if (!scpsys)
drivers/pmdomain/mediatek/mtk-pm-domains.c
1257
scpsys->dev = dev;
drivers/pmdomain/mediatek/mtk-pm-domains.c
1258
scpsys->soc_data = soc;
drivers/pmdomain/mediatek/mtk-pm-domains.c
1260
scpsys->pd_data.domains = scpsys->domains;
drivers/pmdomain/mediatek/mtk-pm-domains.c
1261
scpsys->pd_data.num_domains = num_domains;
drivers/pmdomain/mediatek/mtk-pm-domains.c
1269
scpsys->base = syscon_node_to_regmap(parent->of_node);
drivers/pmdomain/mediatek/mtk-pm-domains.c
1270
if (IS_ERR(scpsys->base)) {
drivers/pmdomain/mediatek/mtk-pm-domains.c
1272
return PTR_ERR(scpsys->base);
drivers/pmdomain/mediatek/mtk-pm-domains.c
1276
ret = scpsys_get_bus_protection(dev, scpsys);
drivers/pmdomain/mediatek/mtk-pm-domains.c
1278
ret = scpsys_get_bus_protection_legacy(dev, scpsys);
drivers/pmdomain/mediatek/mtk-pm-domains.c
1287
domain = scpsys_add_one_domain(scpsys, node);
drivers/pmdomain/mediatek/mtk-pm-domains.c
1293
ret = scpsys_add_subdomain(scpsys, node);
drivers/pmdomain/mediatek/mtk-pm-domains.c
1303
ret = of_genpd_add_provider_onecell(np, &scpsys->pd_data);
drivers/pmdomain/mediatek/mtk-pm-domains.c
1312
scpsys_domain_cleanup(scpsys);
drivers/pmdomain/mediatek/mtk-pm-domains.c
140
struct scpsys *scpsys = pd->scpsys;
drivers/pmdomain/mediatek/mtk-pm-domains.c
145
regmap_set_bits(scpsys->base, pd->data->ctl_offs, pd->data->sram_pdn_bits);
drivers/pmdomain/mediatek/mtk-pm-domains.c
148
regmap_clear_bits(scpsys->base, pd->data->ctl_offs, pd->data->sram_pdn_bits);
drivers/pmdomain/mediatek/mtk-pm-domains.c
153
ret = regmap_read_poll_timeout(scpsys->base, pd->data->ctl_offs, tmp,
drivers/pmdomain/mediatek/mtk-pm-domains.c
160
regmap_set_bits(scpsys->base, pd->data->ctl_offs, PWR_SRAM_ISOINT_B_BIT);
drivers/pmdomain/mediatek/mtk-pm-domains.c
162
regmap_clear_bits(scpsys->base, pd->data->ctl_offs, PWR_SRAM_CLKISO_BIT);
drivers/pmdomain/mediatek/mtk-pm-domains.c
171
struct scpsys *scpsys = pd->scpsys;
drivers/pmdomain/mediatek/mtk-pm-domains.c
175
regmap_set_bits(scpsys->base, pd->data->ctl_offs, PWR_SRAM_CLKISO_BIT);
drivers/pmdomain/mediatek/mtk-pm-domains.c
177
regmap_clear_bits(scpsys->base, pd->data->ctl_offs, PWR_SRAM_ISOINT_B_BIT);
drivers/pmdomain/mediatek/mtk-pm-domains.c
181
regmap_clear_bits(scpsys->base, pd->data->ctl_offs, pd->data->sram_pdn_bits);
drivers/pmdomain/mediatek/mtk-pm-domains.c
184
regmap_set_bits(scpsys->base, pd->data->ctl_offs, pd->data->sram_pdn_bits);
drivers/pmdomain/mediatek/mtk-pm-domains.c
189
return regmap_read_poll_timeout(scpsys->base, pd->data->ctl_offs, tmp,
drivers/pmdomain/mediatek/mtk-pm-domains.c
197
struct scpsys *scpsys = pd->scpsys;
drivers/pmdomain/mediatek/mtk-pm-domains.c
198
unsigned short block_idx = scpsys->bus_prot_index[bpd->bus_prot_block];
drivers/pmdomain/mediatek/mtk-pm-domains.c
200
return scpsys->bus_prot[block_idx];
drivers/pmdomain/mediatek/mtk-pm-domains.c
206
struct scpsys *scpsys = pd->scpsys;
drivers/pmdomain/mediatek/mtk-pm-domains.c
207
int block_idx = scpsys->bus_prot_index[bpd->bus_prot_sta_block];
drivers/pmdomain/mediatek/mtk-pm-domains.c
209
return scpsys->bus_prot[block_idx];
drivers/pmdomain/mediatek/mtk-pm-domains.c
316
struct scpsys *scpsys = pd->scpsys;
drivers/pmdomain/mediatek/mtk-pm-domains.c
340
ret = regmap_read_poll_timeout_atomic(scpsys->base, hwv->done, val,
drivers/pmdomain/mediatek/mtk-pm-domains.c
345
dev_err(scpsys->dev, "Failed to power on: HW Voter busy.\n");
drivers/pmdomain/mediatek/mtk-pm-domains.c
353
regmap_write(scpsys->base, hwv->set, BIT(hwv->setclr_bit));
drivers/pmdomain/mediatek/mtk-pm-domains.c
359
ret = regmap_read_poll_timeout_atomic(scpsys->base, hwv->set, val,
drivers/pmdomain/mediatek/mtk-pm-domains.c
364
dev_err(scpsys->dev, "Failed to power on: HW Voter not starting.\n");
drivers/pmdomain/mediatek/mtk-pm-domains.c
372
dev_err(scpsys->dev, "Failed to power on: HW Voter ACK timeout.\n");
drivers/pmdomain/mediatek/mtk-pm-domains.c
399
struct scpsys *scpsys = pd->scpsys;
drivers/pmdomain/mediatek/mtk-pm-domains.c
414
ret = regmap_read_poll_timeout_atomic(scpsys->base, hwv->done, val,
drivers/pmdomain/mediatek/mtk-pm-domains.c
426
regmap_write(scpsys->base, hwv->clr, BIT(hwv->setclr_bit));
drivers/pmdomain/mediatek/mtk-pm-domains.c
432
ret = regmap_read_poll_timeout_atomic(scpsys->base, hwv->clr, val,
drivers/pmdomain/mediatek/mtk-pm-domains.c
475
struct scpsys *scpsys = pd->scpsys;
drivers/pmdomain/mediatek/mtk-pm-domains.c
480
regmap_set_bits(scpsys->base, pd->data->ctl_offs, PWR_ON_BIT);
drivers/pmdomain/mediatek/mtk-pm-domains.c
481
regmap_set_bits(scpsys->base, pd->data->ctl_offs, PWR_ON_2ND_BIT);
drivers/pmdomain/mediatek/mtk-pm-domains.c
490
regmap_set_bits(scpsys->base, pd->data->ctl_offs, PWR_RTFF_CLK_DIS);
drivers/pmdomain/mediatek/mtk-pm-domains.c
492
regmap_clear_bits(scpsys->base, pd->data->ctl_offs, PWR_CLK_DIS_BIT);
drivers/pmdomain/mediatek/mtk-pm-domains.c
493
regmap_clear_bits(scpsys->base, pd->data->ctl_offs, PWR_ISO_BIT);
drivers/pmdomain/mediatek/mtk-pm-domains.c
499
regmap_set_bits(scpsys->base, pd->data->ctl_offs, PWR_RST_B_BIT);
drivers/pmdomain/mediatek/mtk-pm-domains.c
514
regmap_read(scpsys->base, pd->data->ctl_offs, &ctl_status);
drivers/pmdomain/mediatek/mtk-pm-domains.c
533
regmap_clear_bits(scpsys->base, pd->data->ctl_offs, PWR_RTFF_SAVE_FLAG);
drivers/pmdomain/mediatek/mtk-pm-domains.c
534
regmap_set_bits(scpsys->base, pd->data->ctl_offs, PWR_RTFF_CLK_DIS);
drivers/pmdomain/mediatek/mtk-pm-domains.c
535
regmap_clear_bits(scpsys->base, pd->data->ctl_offs, PWR_RTFF_NRESTORE);
drivers/pmdomain/mediatek/mtk-pm-domains.c
536
regmap_set_bits(scpsys->base, pd->data->ctl_offs, PWR_RTFF_NRESTORE);
drivers/pmdomain/mediatek/mtk-pm-domains.c
537
regmap_clear_bits(scpsys->base, pd->data->ctl_offs, PWR_RTFF_CLK_DIS);
drivers/pmdomain/mediatek/mtk-pm-domains.c
540
regmap_clear_bits(scpsys->base, pd->data->ctl_offs, PWR_RTFF_SAVE_FLAG);
drivers/pmdomain/mediatek/mtk-pm-domains.c
541
regmap_clear_bits(scpsys->base, pd->data->ctl_offs, PWR_RTFF_NRESTORE);
drivers/pmdomain/mediatek/mtk-pm-domains.c
542
regmap_set_bits(scpsys->base, pd->data->ctl_offs, PWR_RTFF_NRESTORE);
drivers/pmdomain/mediatek/mtk-pm-domains.c
543
regmap_clear_bits(scpsys->base, pd->data->ctl_offs, PWR_RTFF_CLK_DIS);
drivers/pmdomain/mediatek/mtk-pm-domains.c
546
regmap_set_bits(scpsys->base, pd->data->ctl_offs, PWR_RTFF_UFS_CLK_DIS);
drivers/pmdomain/mediatek/mtk-pm-domains.c
547
regmap_clear_bits(scpsys->base, pd->data->ctl_offs, PWR_RTFF_NRESTORE);
drivers/pmdomain/mediatek/mtk-pm-domains.c
548
regmap_set_bits(scpsys->base, pd->data->ctl_offs, PWR_RTFF_NRESTORE);
drivers/pmdomain/mediatek/mtk-pm-domains.c
549
regmap_clear_bits(scpsys->base, pd->data->ctl_offs, PWR_RTFF_UFS_CLK_DIS);
drivers/pmdomain/mediatek/mtk-pm-domains.c
560
struct scpsys *scpsys = pd->scpsys;
drivers/pmdomain/mediatek/mtk-pm-domains.c
565
regmap_set_bits(scpsys->base, pd->data->ctl_offs, PWR_RTFF_CLK_DIS);
drivers/pmdomain/mediatek/mtk-pm-domains.c
566
regmap_set_bits(scpsys->base, pd->data->ctl_offs, PWR_RTFF_SAVE);
drivers/pmdomain/mediatek/mtk-pm-domains.c
567
regmap_clear_bits(scpsys->base, pd->data->ctl_offs, PWR_RTFF_SAVE);
drivers/pmdomain/mediatek/mtk-pm-domains.c
568
regmap_clear_bits(scpsys->base, pd->data->ctl_offs, PWR_RTFF_CLK_DIS);
drivers/pmdomain/mediatek/mtk-pm-domains.c
569
regmap_set_bits(scpsys->base, pd->data->ctl_offs, PWR_RTFF_SAVE_FLAG);
drivers/pmdomain/mediatek/mtk-pm-domains.c
572
regmap_set_bits(scpsys->base, pd->data->ctl_offs, PWR_RTFF_UFS_CLK_DIS);
drivers/pmdomain/mediatek/mtk-pm-domains.c
573
regmap_set_bits(scpsys->base, pd->data->ctl_offs, PWR_RTFF_SAVE);
drivers/pmdomain/mediatek/mtk-pm-domains.c
574
regmap_clear_bits(scpsys->base, pd->data->ctl_offs, PWR_RTFF_SAVE);
drivers/pmdomain/mediatek/mtk-pm-domains.c
575
regmap_clear_bits(scpsys->base, pd->data->ctl_offs, PWR_RTFF_UFS_CLK_DIS);
drivers/pmdomain/mediatek/mtk-pm-domains.c
582
regmap_set_bits(scpsys->base, pd->data->ctl_offs, PWR_ISO_BIT);
drivers/pmdomain/mediatek/mtk-pm-domains.c
588
regmap_set_bits(scpsys->base, pd->data->ctl_offs, PWR_CLK_DIS_BIT);
drivers/pmdomain/mediatek/mtk-pm-domains.c
589
regmap_clear_bits(scpsys->base, pd->data->ctl_offs, PWR_RST_B_BIT);
drivers/pmdomain/mediatek/mtk-pm-domains.c
590
regmap_clear_bits(scpsys->base, pd->data->ctl_offs, PWR_ON_2ND_BIT);
drivers/pmdomain/mediatek/mtk-pm-domains.c
591
regmap_clear_bits(scpsys->base, pd->data->ctl_offs, PWR_ON_BIT);
drivers/pmdomain/mediatek/mtk-pm-domains.c
596
struct scpsys *scpsys = pd->scpsys;
drivers/pmdomain/mediatek/mtk-pm-domains.c
601
regmap_set_bits(scpsys->base, pd->data->ctl_offs, PWR_RST_B_BIT);
drivers/pmdomain/mediatek/mtk-pm-domains.c
603
regmap_set_bits(scpsys->base, pd->data->ctl_offs, PWR_ON_BIT);
drivers/pmdomain/mediatek/mtk-pm-domains.c
616
struct scpsys *scpsys = pd->scpsys;
drivers/pmdomain/mediatek/mtk-pm-domains.c
618
regmap_clear_bits(scpsys->base, pd->data->ctl_offs, PWR_ON_BIT);
drivers/pmdomain/mediatek/mtk-pm-domains.c
621
regmap_clear_bits(scpsys->base, pd->data->ctl_offs, PWR_RST_B_BIT);
drivers/pmdomain/mediatek/mtk-pm-domains.c
627
struct scpsys *scpsys = pd->scpsys;
drivers/pmdomain/mediatek/mtk-pm-domains.c
639
regmap_clear_bits(scpsys->base, pd->data->ext_buck_iso_offs,
drivers/pmdomain/mediatek/mtk-pm-domains.c
64
struct scpsys *scpsys;
drivers/pmdomain/mediatek/mtk-pm-domains.c
705
struct scpsys *scpsys = pd->scpsys;
drivers/pmdomain/mediatek/mtk-pm-domains.c
718
regmap_set_bits(scpsys->base, pd->data->ext_buck_iso_offs,
drivers/pmdomain/mediatek/mtk-pm-domains.c
753
generic_pm_domain *scpsys_add_one_domain(struct scpsys *scpsys, struct device_node *node)
drivers/pmdomain/mediatek/mtk-pm-domains.c
767
dev_err(scpsys->dev, "%pOF: failed to retrieve domain id from reg: %d\n",
drivers/pmdomain/mediatek/mtk-pm-domains.c
772
switch (scpsys->soc_data->type) {
drivers/pmdomain/mediatek/mtk-pm-domains.c
774
if (id >= scpsys->soc_data->num_domains) {
drivers/pmdomain/mediatek/mtk-pm-domains.c
775
dev_err(scpsys->dev, "%pOF: invalid domain id %d\n", node, id);
drivers/pmdomain/mediatek/mtk-pm-domains.c
779
domain_data = &scpsys->soc_data->domains_data[id];
drivers/pmdomain/mediatek/mtk-pm-domains.c
783
dev_err(scpsys->dev, "%pOF: undefined domain id %d\n", node, id);
drivers/pmdomain/mediatek/mtk-pm-domains.c
789
if (id >= scpsys->soc_data->num_hwv_domains) {
drivers/pmdomain/mediatek/mtk-pm-domains.c
790
dev_err(scpsys->dev, "%pOF: invalid HWV domain id %d\n", node, id);
drivers/pmdomain/mediatek/mtk-pm-domains.c
795
hwv_domain_data = &scpsys->soc_data->hwv_domains_data[id];
drivers/pmdomain/mediatek/mtk-pm-domains.c
802
pd = devm_kzalloc(scpsys->dev, sizeof(*pd), GFP_KERNEL);
drivers/pmdomain/mediatek/mtk-pm-domains.c
808
pd->scpsys = scpsys;
drivers/pmdomain/mediatek/mtk-pm-domains.c
811
pd->supply = devm_of_regulator_get_optional(scpsys->dev, node, "domain");
drivers/pmdomain/mediatek/mtk-pm-domains.c
813
return dev_err_cast_probe(scpsys->dev, pd->supply,
drivers/pmdomain/mediatek/mtk-pm-domains.c
831
pd->clks = devm_kcalloc(scpsys->dev, pd->num_clks, sizeof(*pd->clks), GFP_KERNEL);
drivers/pmdomain/mediatek/mtk-pm-domains.c
835
pd->subsys_clks = devm_kcalloc(scpsys->dev, pd->num_subsys_clks,
drivers/pmdomain/mediatek/mtk-pm-domains.c
846
dev_err_probe(scpsys->dev, ret,
drivers/pmdomain/mediatek/mtk-pm-domains.c
858
dev_err_probe(scpsys->dev, ret,
drivers/pmdomain/mediatek/mtk-pm-domains.c
86
struct scpsys *scpsys = pd->scpsys;
drivers/pmdomain/mediatek/mtk-pm-domains.c
867
if (scpsys->domains[id]) {
drivers/pmdomain/mediatek/mtk-pm-domains.c
869
dev_err(scpsys->dev,
drivers/pmdomain/mediatek/mtk-pm-domains.c
881
if (scpsys->soc_data->type == SCPSYS_MTCMOS_TYPE_DIRECT_CTL) {
drivers/pmdomain/mediatek/mtk-pm-domains.c
901
if (scpsys->soc_data->type == SCPSYS_MTCMOS_TYPE_HW_VOTER)
drivers/pmdomain/mediatek/mtk-pm-domains.c
907
dev_warn(scpsys->dev,
drivers/pmdomain/mediatek/mtk-pm-domains.c
912
dev_err(scpsys->dev, "%pOF: failed to power on domain: %d\n", node, ret);
drivers/pmdomain/mediatek/mtk-pm-domains.c
92
regmap_read(scpsys->base, pd->data->pwr_sta_offs, &status);
drivers/pmdomain/mediatek/mtk-pm-domains.c
928
scpsys->domains[id] = &pd->genpd;
drivers/pmdomain/mediatek/mtk-pm-domains.c
930
return scpsys->pd_data.domains[id];
drivers/pmdomain/mediatek/mtk-pm-domains.c
939
static int scpsys_add_subdomain(struct scpsys *scpsys, struct device_node *parent)
drivers/pmdomain/mediatek/mtk-pm-domains.c
95
regmap_read(scpsys->base, pd->data->pwr_sta2nd_offs, &status2);
drivers/pmdomain/mediatek/mtk-pm-domains.c
950
dev_err(scpsys->dev, "%pOF: failed to get parent domain id\n", child);
drivers/pmdomain/mediatek/mtk-pm-domains.c
954
if (!scpsys->pd_data.domains[id]) {
drivers/pmdomain/mediatek/mtk-pm-domains.c
956
dev_err(scpsys->dev, "power domain with id %d does not exist\n", id);
drivers/pmdomain/mediatek/mtk-pm-domains.c
960
parent_pd = scpsys->pd_data.domains[id];
drivers/pmdomain/mediatek/mtk-pm-domains.c
962
child_pd = scpsys_add_one_domain(scpsys, child);
drivers/pmdomain/mediatek/mtk-pm-domains.c
965
dev_err_probe(scpsys->dev, ret, "%pOF: failed to get child domain id\n",
drivers/pmdomain/mediatek/mtk-pm-domains.c
971
ret = scpsys_add_subdomain(scpsys, child);
drivers/pmdomain/mediatek/mtk-pm-domains.c
977
dev_err(scpsys->dev, "failed to add %s subdomain to parent %s\n",
drivers/pmdomain/mediatek/mtk-pm-domains.c
981
dev_dbg(scpsys->dev, "%s add subdomain: %s\n", parent_pd->name,
drivers/pmdomain/mediatek/mtk-pm-domains.c
995
struct scpsys *scpsys = pd->scpsys;