static int pil_shutdown_trusted(struct pil_desc *pil) { struct pil_tz_data *d = desc_to_data(pil); int rc; rc = enable_regulators(pil->dev, d->proxy_regs, d->proxy_reg_count); if (rc) return rc; rc = prepare_enable_clocks(pil->dev, d->proxy_clks, d->proxy_clk_count); if (rc) goto err_clks; rc = pas_shutdown(d->pas_id); disable_unprepare_clocks(d->proxy_clks, d->proxy_clk_count); disable_regulators(d->proxy_regs, d->proxy_reg_count); if (rc) return rc; disable_unprepare_clocks(d->clks, d->clk_count); disable_regulators(d->regs, d->reg_count); return rc; err_clks: disable_regulators(d->proxy_regs, d->proxy_reg_count); return rc; }
static int pil_lpass_shutdown_trusted(struct pil_desc *pil) { struct q6v5_data *drv = container_of(pil, struct q6v5_data, desc); int ret; ret = pas_shutdown(PAS_Q6); if (ret) return ret; clk_disable_unprepare(drv->axi_clk); return 0; }
static int shutdown_modem_trusted(struct pil_desc *pil) { int ret; ret = pas_shutdown(PAS_MODEM); if (ret) return ret; remove_modem_proxy_votes_now(); return 0; }
static int modem_shutdown_trusted(struct pil_desc *pil) { int ret; struct modem_data *drv = dev_get_drvdata(pil->dev); ret = pas_shutdown(PAS_MODEM); if (ret) return ret; remove_modem_proxy_votes_now(drv); return 0; }
static int shutdown_q6_trusted(struct pil_device *pil) { int ret; ret = pas_shutdown(PAS_Q6); if (ret) return ret; remove_q6_proxy_votes_now(); return 0; }
static int pil_q6v3_shutdown_trusted(struct pil_desc *pil) { int ret; struct q6v3_data *drv = dev_get_drvdata(pil->dev); ret = pas_shutdown(PAS_Q6); if (ret) return ret; q6v3_remove_proxy_votes_now(drv); return 0; }
static int pil_riva_shutdown_trusted(struct pil_desc *pil) { int ret; struct riva_data *drv = dev_get_drvdata(pil->dev); ret = clk_prepare_enable(drv->xo); if (ret) return ret; ret = pas_shutdown(PAS_RIVA); pil_riva_remove_proxy_votes_now(pil->dev); clk_disable_unprepare(drv->xo); return ret; }
static int pil_q6v4_shutdown_trusted(struct pil_desc *pil) { int ret; struct q6v4_data *drv = dev_get_drvdata(pil->dev); struct pil_q6v4_pdata *pdata = pil->dev->platform_data; /* Make sure bus port is halted */ msm_bus_axi_porthalt(pdata->bus_port); ret = pas_shutdown(pdata->pas_id); if (ret) return ret; if (drv->vreg_enabled) { regulator_disable(drv->vreg); drv->vreg_enabled = false; } return ret; }
static int shutdown_playready(struct pil_desc *pil) { return pas_shutdown(PAS_PLAYREADY); }
static int shutdown_dsps_trusted(struct pil_desc *pil) { return pas_shutdown(PAS_DSPS); }
static int modem_shutdown_trusted(struct pil_desc *pil) { return pas_shutdown(PAS_MODEM); }
static int pil_vidc_shutdown(struct pil_desc *pil) { return pas_shutdown(PAS_VIDC); }
static int pil_lpass_shutdown_trusted(struct pil_desc *pil) { return pas_shutdown(PAS_Q6); }
static int pil_bcss_shutdown(struct pil_desc *pil) { return pas_shutdown(PAS_BCSS); }
static int pil_tzapps_shutdown(struct pil_desc *pil) { return pas_shutdown(PAS_TZAPPS); }
static int pil_riva_shutdown_trusted(struct pil_desc *pil) { return pas_shutdown(PAS_WCNSS); }
static int shutdown_riva_trusted(struct pil_desc *pil) { return pas_shutdown(PAS_RIVA); }