Lines Matching defs:slim_rproc
58 static int slim_clk_get(struct st_slim_rproc *slim_rproc, struct device *dev)
63 slim_rproc->clks[clk] = of_clk_get(dev->of_node, clk);
64 if (IS_ERR(slim_rproc->clks[clk])) {
65 err = PTR_ERR(slim_rproc->clks[clk]);
68 slim_rproc->clks[clk] = NULL;
77 clk_put(slim_rproc->clks[clk]);
82 static void slim_clk_disable(struct st_slim_rproc *slim_rproc)
86 for (clk = 0; clk < ST_SLIM_MAX_CLK && slim_rproc->clks[clk]; clk++)
87 clk_disable_unprepare(slim_rproc->clks[clk]);
90 static int slim_clk_enable(struct st_slim_rproc *slim_rproc)
94 for (clk = 0; clk < ST_SLIM_MAX_CLK && slim_rproc->clks[clk]; clk++) {
95 ret = clk_prepare_enable(slim_rproc->clks[clk]);
104 clk_disable_unprepare(slim_rproc->clks[clk]);
115 struct st_slim_rproc *slim_rproc = rproc->priv;
121 writel(val, slim_rproc->slimcore + SLIM_CLK_GATE_OFST);
124 writel(SLIM_STBUS_SYNC_DIS, slim_rproc->peri + SLIM_STBUS_SYNC_OFST);
128 slim_rproc->slimcore + SLIM_CLK_GATE_OFST);
131 writel(~0U, slim_rproc->peri + SLIM_INT_CLR_OFST);
132 writel(~0U, slim_rproc->peri + SLIM_CMD_CLR_OFST);
135 writel(~0U, slim_rproc->peri + SLIM_INT_MASK_OFST);
136 writel(~0U, slim_rproc->peri + SLIM_CMD_MASK_OFST);
139 writel(SLIM_EN_RUN, slim_rproc->slimcore + SLIM_EN_OFST);
141 hw_id = readl_relaxed(slim_rproc->slimcore + SLIM_ID_OFST);
142 hw_ver = readl_relaxed(slim_rproc->slimcore + SLIM_VER_OFST);
144 fw_rev = readl(slim_rproc->mem[ST_SLIM_DMEM].cpu_addr +
156 struct st_slim_rproc *slim_rproc = rproc->priv;
160 writel(0UL, slim_rproc->peri + SLIM_INT_MASK_OFST);
161 writel(0UL, slim_rproc->peri + SLIM_CMD_MASK_OFST);
164 writel(SLIM_CLK_GATE_DIS, slim_rproc->slimcore + SLIM_CLK_GATE_OFST);
166 writel(!SLIM_EN_RUN, slim_rproc->slimcore + SLIM_EN_OFST);
168 val = readl(slim_rproc->slimcore + SLIM_EN_OFST);
179 struct st_slim_rproc *slim_rproc = rproc->priv;
184 if (da != slim_rproc->mem[i].bus_addr)
187 if (len <= slim_rproc->mem[i].size) {
189 va = (__force void *)slim_rproc->mem[i].cpu_addr;
226 struct st_slim_rproc *slim_rproc;
239 fw_name, sizeof(*slim_rproc));
245 slim_rproc = rproc->priv;
246 slim_rproc->rproc = rproc;
253 slim_rproc->mem[i].cpu_addr = devm_ioremap_resource(dev, res);
254 if (IS_ERR(slim_rproc->mem[i].cpu_addr)) {
256 err = PTR_ERR(slim_rproc->mem[i].cpu_addr);
259 slim_rproc->mem[i].bus_addr = res->start;
260 slim_rproc->mem[i].size = resource_size(res);
264 slim_rproc->slimcore = devm_ioremap_resource(dev, res);
265 if (IS_ERR(slim_rproc->slimcore)) {
267 err = PTR_ERR(slim_rproc->slimcore);
272 slim_rproc->peri = devm_ioremap_resource(dev, res);
273 if (IS_ERR(slim_rproc->peri)) {
275 err = PTR_ERR(slim_rproc->peri);
279 err = slim_clk_get(slim_rproc, dev);
283 err = slim_clk_enable(slim_rproc);
296 return slim_rproc;
299 slim_clk_disable(slim_rproc);
301 for (i = 0; i < ST_SLIM_MAX_CLK && slim_rproc->clks[i]; i++)
302 clk_put(slim_rproc->clks[i]);
311 * @slim_rproc: Pointer to the st_slim_rproc struct
313 * Function for calling respective _put() functions on slim_rproc resources.
316 void st_slim_rproc_put(struct st_slim_rproc *slim_rproc)
320 if (!slim_rproc)
323 slim_clk_disable(slim_rproc);
325 for (clk = 0; clk < ST_SLIM_MAX_CLK && slim_rproc->clks[clk]; clk++)
326 clk_put(slim_rproc->clks[clk]);
328 rproc_del(slim_rproc->rproc);
329 rproc_free(slim_rproc->rproc);