Lines Matching refs:archdata
131 struct shmobile_iommu_archdata *archdata = dev->archdata.iommu; in shmobile_iommu_attach_device() local
135 if (!archdata) in shmobile_iommu_attach_device()
138 spin_lock(&archdata->attach_lock); in shmobile_iommu_attach_device()
139 if (archdata->attached != sh_domain) { in shmobile_iommu_attach_device()
140 if (archdata->attached) in shmobile_iommu_attach_device()
142 ipmmu_tlb_set(archdata->ipmmu, sh_domain->l1.handle, L1_SIZE, in shmobile_iommu_attach_device()
144 ipmmu_tlb_flush(archdata->ipmmu); in shmobile_iommu_attach_device()
145 archdata->attached = sh_domain; in shmobile_iommu_attach_device()
146 archdata->num_attached_devices = 0; in shmobile_iommu_attach_device()
147 list_add(&archdata->attached_list, &sh_domain->attached_list); in shmobile_iommu_attach_device()
149 archdata->num_attached_devices++; in shmobile_iommu_attach_device()
152 spin_unlock(&archdata->attach_lock); in shmobile_iommu_attach_device()
160 struct shmobile_iommu_archdata *archdata = dev->archdata.iommu; in shmobile_iommu_detach_device() local
163 if (!archdata) in shmobile_iommu_detach_device()
166 spin_lock(&archdata->attach_lock); in shmobile_iommu_detach_device()
167 archdata->num_attached_devices--; in shmobile_iommu_detach_device()
168 if (!archdata->num_attached_devices) { in shmobile_iommu_detach_device()
169 ipmmu_tlb_set(archdata->ipmmu, 0, 0, 0); in shmobile_iommu_detach_device()
170 ipmmu_tlb_flush(archdata->ipmmu); in shmobile_iommu_detach_device()
171 archdata->attached = NULL; in shmobile_iommu_detach_device()
172 list_del(&archdata->attached_list); in shmobile_iommu_detach_device()
174 spin_unlock(&archdata->attach_lock); in shmobile_iommu_detach_device()
180 struct shmobile_iommu_archdata *archdata; in domain_tlb_flush() local
183 list_for_each_entry(archdata, &sh_domain->attached_list, attached_list) in domain_tlb_flush()
184 ipmmu_tlb_flush(archdata->ipmmu); in domain_tlb_flush()
345 struct shmobile_iommu_archdata *archdata = ipmmu_archdata; in shmobile_iommu_add_device() local
348 if (!find_dev_name(archdata->ipmmu, dev_name(dev))) in shmobile_iommu_add_device()
350 mapping = archdata->iommu_mapping; in shmobile_iommu_add_device()
356 archdata->iommu_mapping = mapping; in shmobile_iommu_add_device()
358 dev->archdata.iommu = archdata; in shmobile_iommu_add_device()
379 static struct shmobile_iommu_archdata *archdata; in ipmmu_iommu_init() local
391 archdata = kzalloc(sizeof(*archdata), GFP_KERNEL); in ipmmu_iommu_init()
392 if (!archdata) { in ipmmu_iommu_init()
397 spin_lock_init(&archdata->attach_lock); in ipmmu_iommu_init()
398 archdata->ipmmu = ipmmu; in ipmmu_iommu_init()
399 ipmmu_archdata = archdata; in ipmmu_iommu_init()