drm/tegra: vic: Use tegra_dev_iommu_get_stream_id()
Use the newly implemented tegra_dev_iommu_get_stream_id() helper to encapsulate and centralize the IOMMU stream ID access. Signed-off-by: Thierry Reding <treding@nvidia.com>
This commit is contained in:
parent
b8cbb04f65
commit
b50ad38d87
|
@ -56,41 +56,30 @@ static void vic_writel(struct vic *vic, u32 value, unsigned int offset)
|
|||
|
||||
static int vic_boot(struct vic *vic)
|
||||
{
|
||||
#ifdef CONFIG_IOMMU_API
|
||||
struct iommu_fwspec *spec = dev_iommu_fwspec_get(vic->dev);
|
||||
#endif
|
||||
u32 fce_ucode_size, fce_bin_data_offset;
|
||||
u32 fce_ucode_size, fce_bin_data_offset, stream_id;
|
||||
void *hdr;
|
||||
int err = 0;
|
||||
|
||||
#ifdef CONFIG_IOMMU_API
|
||||
if (vic->config->supports_sid && spec) {
|
||||
if (vic->config->supports_sid && tegra_dev_iommu_get_stream_id(vic->dev, &stream_id)) {
|
||||
u32 value;
|
||||
|
||||
value = TRANSCFG_ATT(1, TRANSCFG_SID_FALCON) |
|
||||
TRANSCFG_ATT(0, TRANSCFG_SID_HW);
|
||||
vic_writel(vic, value, VIC_TFBIF_TRANSCFG);
|
||||
|
||||
if (spec->num_ids > 0) {
|
||||
value = spec->ids[0] & 0xffff;
|
||||
/*
|
||||
* STREAMID0 is used for input/output buffers. Initialize it to SID_VIC in case
|
||||
* context isolation is not enabled, and SID_VIC is used for both firmware and
|
||||
* data buffers.
|
||||
*
|
||||
* If context isolation is enabled, it will be overridden by the SETSTREAMID
|
||||
* opcode as part of each job.
|
||||
*/
|
||||
vic_writel(vic, stream_id, VIC_THI_STREAMID0);
|
||||
|
||||
/*
|
||||
* STREAMID0 is used for input/output buffers.
|
||||
* Initialize it to SID_VIC in case context isolation
|
||||
* is not enabled, and SID_VIC is used for both firmware
|
||||
* and data buffers.
|
||||
*
|
||||
* If context isolation is enabled, it will be
|
||||
* overridden by the SETSTREAMID opcode as part of
|
||||
* each job.
|
||||
*/
|
||||
vic_writel(vic, value, VIC_THI_STREAMID0);
|
||||
|
||||
/* STREAMID1 is used for firmware loading. */
|
||||
vic_writel(vic, value, VIC_THI_STREAMID1);
|
||||
}
|
||||
/* STREAMID1 is used for firmware loading. */
|
||||
vic_writel(vic, stream_id, VIC_THI_STREAMID1);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* setup clockgating registers */
|
||||
vic_writel(vic, CG_IDLE_CG_DLY_CNT(4) |
|
||||
|
|
Loading…
Reference in New Issue