Lines Matching defs:slim_rproc
57 static int slim_clk_get(struct st_slim_rproc *slim_rproc, struct device *dev)
62 slim_rproc->clks[clk] = of_clk_get(dev->of_node, clk);
63 if (IS_ERR(slim_rproc->clks[clk])) {
64 err = PTR_ERR(slim_rproc->clks[clk]);
67 slim_rproc->clks[clk] = NULL;
76 clk_put(slim_rproc->clks[clk]);
81 static void slim_clk_disable(struct st_slim_rproc *slim_rproc)
85 for (clk = 0; clk < ST_SLIM_MAX_CLK && slim_rproc->clks[clk]; clk++)
86 clk_disable_unprepare(slim_rproc->clks[clk]);
89 static int slim_clk_enable(struct st_slim_rproc *slim_rproc)
93 for (clk = 0; clk < ST_SLIM_MAX_CLK && slim_rproc->clks[clk]; clk++) {
94 ret = clk_prepare_enable(slim_rproc->clks[clk]);
103 clk_disable_unprepare(slim_rproc->clks[clk]);
114 struct st_slim_rproc *slim_rproc = rproc->priv;
120 writel(val, slim_rproc->slimcore + SLIM_CLK_GATE_OFST);
123 writel(SLIM_STBUS_SYNC_DIS, slim_rproc->peri + SLIM_STBUS_SYNC_OFST);
127 slim_rproc->slimcore + SLIM_CLK_GATE_OFST);
130 writel(~0U, slim_rproc->peri + SLIM_INT_CLR_OFST);
131 writel(~0U, slim_rproc->peri + SLIM_CMD_CLR_OFST);
134 writel(~0U, slim_rproc->peri + SLIM_INT_MASK_OFST);
135 writel(~0U, slim_rproc->peri + SLIM_CMD_MASK_OFST);
138 writel(SLIM_EN_RUN, slim_rproc->slimcore + SLIM_EN_OFST);
140 hw_id = readl_relaxed(slim_rproc->slimcore + SLIM_ID_OFST);
141 hw_ver = readl_relaxed(slim_rproc->slimcore + SLIM_VER_OFST);
143 fw_rev = readl(slim_rproc->mem[ST_SLIM_DMEM].cpu_addr +
155 struct st_slim_rproc *slim_rproc = rproc->priv;
159 writel(0UL, slim_rproc->peri + SLIM_INT_MASK_OFST);
160 writel(0UL, slim_rproc->peri + SLIM_CMD_MASK_OFST);
163 writel(SLIM_CLK_GATE_DIS, slim_rproc->slimcore + SLIM_CLK_GATE_OFST);
165 writel(!SLIM_EN_RUN, slim_rproc->slimcore + SLIM_EN_OFST);
167 val = readl(slim_rproc->slimcore + SLIM_EN_OFST);
178 struct st_slim_rproc *slim_rproc = rproc->priv;
183 if (da != slim_rproc->mem[i].bus_addr)
186 if (len <= slim_rproc->mem[i].size) {
188 va = (__force void *)slim_rproc->mem[i].cpu_addr;
225 struct st_slim_rproc *slim_rproc;
238 fw_name, sizeof(*slim_rproc));
244 slim_rproc = rproc->priv;
245 slim_rproc->rproc = rproc;
252 slim_rproc->mem[i].cpu_addr = devm_ioremap_resource(dev, res);
253 if (IS_ERR(slim_rproc->mem[i].cpu_addr)) {
255 err = PTR_ERR(slim_rproc->mem[i].cpu_addr);
258 slim_rproc->mem[i].bus_addr = res->start;
259 slim_rproc->mem[i].size = resource_size(res);
263 slim_rproc->slimcore = devm_ioremap_resource(dev, res);
264 if (IS_ERR(slim_rproc->slimcore)) {
266 err = PTR_ERR(slim_rproc->slimcore);
271 slim_rproc->peri = devm_ioremap_resource(dev, res);
272 if (IS_ERR(slim_rproc->peri)) {
274 err = PTR_ERR(slim_rproc->peri);
278 err = slim_clk_get(slim_rproc, dev);
282 err = slim_clk_enable(slim_rproc);
295 return slim_rproc;
298 slim_clk_disable(slim_rproc);
300 for (i = 0; i < ST_SLIM_MAX_CLK && slim_rproc->clks[i]; i++)
301 clk_put(slim_rproc->clks[i]);
310 * @slim_rproc: Pointer to the st_slim_rproc struct
312 * Function for calling respective _put() functions on slim_rproc resources.
315 void st_slim_rproc_put(struct st_slim_rproc *slim_rproc)
319 if (!slim_rproc)
322 slim_clk_disable(slim_rproc);
324 for (clk = 0; clk < ST_SLIM_MAX_CLK && slim_rproc->clks[clk]; clk++)
325 clk_put(slim_rproc->clks[clk]);
327 rproc_del(slim_rproc->rproc);
328 rproc_free(slim_rproc->rproc);