Lines Matching full:se

15 #include "tegra-se.h"
121 static struct tegra_se_cmdbuf *tegra_se_host1x_bo_alloc(struct tegra_se *se, ssize_t size) in tegra_se_host1x_bo_alloc() argument
124 struct device *dev = se->dev->parent; in tegra_se_host1x_bo_alloc()
144 int tegra_se_host1x_submit(struct tegra_se *se, struct tegra_se_cmdbuf *cmdbuf, u32 size) in tegra_se_host1x_submit() argument
149 job = host1x_job_alloc(se->channel, 1, 0, true); in tegra_se_host1x_submit()
151 dev_err(se->dev, "failed to allocate host1x job\n"); in tegra_se_host1x_submit()
155 job->syncpt = host1x_syncpt_get(se->syncpt); in tegra_se_host1x_submit()
157 job->client = &se->client; in tegra_se_host1x_submit()
158 job->class = se->client.class; in tegra_se_host1x_submit()
160 job->engine_fallback_streamid = se->stream_id; in tegra_se_host1x_submit()
167 ret = host1x_job_pin(job, se->dev); in tegra_se_host1x_submit()
169 dev_err(se->dev, "failed to pin host1x job\n"); in tegra_se_host1x_submit()
175 dev_err(se->dev, "failed to submit host1x job\n"); in tegra_se_host1x_submit()
182 dev_err(se->dev, "host1x job timed out\n"); in tegra_se_host1x_submit()
199 struct tegra_se *se = container_of(client, struct tegra_se, client); in tegra_se_client_init() local
202 se->channel = host1x_channel_request(&se->client); in tegra_se_client_init()
203 if (!se->channel) { in tegra_se_client_init()
204 dev_err(se->dev, "host1x channel map failed\n"); in tegra_se_client_init()
208 se->syncpt = host1x_syncpt_request(&se->client, 0); in tegra_se_client_init()
209 if (!se->syncpt) { in tegra_se_client_init()
210 dev_err(se->dev, "host1x syncpt allocation failed\n"); in tegra_se_client_init()
215 se->syncpt_id = host1x_syncpt_id(se->syncpt); in tegra_se_client_init()
217 se->cmdbuf = tegra_se_host1x_bo_alloc(se, SZ_4K); in tegra_se_client_init()
218 if (!se->cmdbuf) { in tegra_se_client_init()
223 se->keybuf = tegra_se_host1x_bo_alloc(se, SZ_4K); in tegra_se_client_init()
224 if (!se->keybuf) { in tegra_se_client_init()
229 ret = se->hw->init_alg(se); in tegra_se_client_init()
231 dev_err(se->dev, "failed to register algorithms\n"); in tegra_se_client_init()
238 tegra_se_cmdbuf_put(&se->keybuf->bo); in tegra_se_client_init()
240 tegra_se_cmdbuf_put(&se->cmdbuf->bo); in tegra_se_client_init()
242 host1x_syncpt_put(se->syncpt); in tegra_se_client_init()
244 host1x_channel_put(se->channel); in tegra_se_client_init()
251 struct tegra_se *se = container_of(client, struct tegra_se, client); in tegra_se_client_deinit() local
253 se->hw->deinit_alg(se); in tegra_se_client_deinit()
254 tegra_se_cmdbuf_put(&se->cmdbuf->bo); in tegra_se_client_deinit()
255 host1x_syncpt_put(se->syncpt); in tegra_se_client_deinit()
256 host1x_channel_put(se->channel); in tegra_se_client_deinit()
266 static int tegra_se_host1x_register(struct tegra_se *se) in tegra_se_host1x_register() argument
268 INIT_LIST_HEAD(&se->client.list); in tegra_se_host1x_register()
269 se->client.dev = se->dev; in tegra_se_host1x_register()
270 se->client.ops = &tegra_se_client_ops; in tegra_se_host1x_register()
271 se->client.class = se->hw->host1x_class; in tegra_se_host1x_register()
272 se->client.num_syncpts = 1; in tegra_se_host1x_register()
274 host1x_client_register(&se->client); in tegra_se_host1x_register()
282 struct tegra_se *se; in tegra_se_probe() local
285 se = devm_kzalloc(dev, sizeof(*se), GFP_KERNEL); in tegra_se_probe()
286 if (!se) in tegra_se_probe()
289 se->dev = dev; in tegra_se_probe()
290 se->owner = TEGRA_GPSE_ID; in tegra_se_probe()
291 se->hw = device_get_match_data(&pdev->dev); in tegra_se_probe()
293 se->base = devm_platform_ioremap_resource(pdev, 0); in tegra_se_probe()
294 if (IS_ERR(se->base)) in tegra_se_probe()
295 return PTR_ERR(se->base); in tegra_se_probe()
298 platform_set_drvdata(pdev, se); in tegra_se_probe()
300 se->clk = devm_clk_get_enabled(se->dev, NULL); in tegra_se_probe()
301 if (IS_ERR(se->clk)) in tegra_se_probe()
302 return dev_err_probe(dev, PTR_ERR(se->clk), in tegra_se_probe()
305 if (!tegra_dev_iommu_get_stream_id(dev, &se->stream_id)) in tegra_se_probe()
309 writel(se->stream_id, se->base + SE_STREAM_ID); in tegra_se_probe()
311 se->engine = crypto_engine_alloc_init(dev, 0); in tegra_se_probe()
312 if (!se->engine) in tegra_se_probe()
315 ret = crypto_engine_start(se->engine); in tegra_se_probe()
317 crypto_engine_exit(se->engine); in tegra_se_probe()
321 ret = tegra_se_host1x_register(se); in tegra_se_probe()
323 crypto_engine_exit(se->engine); in tegra_se_probe()
332 struct tegra_se *se = platform_get_drvdata(pdev); in tegra_se_remove() local
334 crypto_engine_exit(se->engine); in tegra_se_remove()
335 host1x_client_unregister(&se->client); in tegra_se_remove()
380 .compatible = "nvidia,tegra234-se-aes",
383 .compatible = "nvidia,tegra234-se-hash",
392 .name = "tegra-se",
413 .name = "tegra-se-host1x",