@@ -208,7 +208,7 @@ static void mtk_iommu_config(struct mtk_iommu_data *data,
208
208
{
209
209
struct mtk_smi_larb_iommu * larb_mmu ;
210
210
unsigned int larbid , portid ;
211
- struct iommu_fwspec * fwspec = dev -> iommu_fwspec ;
211
+ struct iommu_fwspec * fwspec = dev_iommu_fwspec_get ( dev ) ;
212
212
int i ;
213
213
214
214
for (i = 0 ; i < fwspec -> num_ids ; ++ i ) {
@@ -273,7 +273,7 @@ static int mtk_iommu_attach_device(struct iommu_domain *domain,
273
273
struct device * dev )
274
274
{
275
275
struct mtk_iommu_domain * dom = to_mtk_domain (domain );
276
- struct mtk_iommu_data * data = dev -> iommu_fwspec -> iommu_priv ;
276
+ struct mtk_iommu_data * data = dev_iommu_fwspec_get ( dev ) -> iommu_priv ;
277
277
int ret ;
278
278
279
279
if (!data )
@@ -295,7 +295,7 @@ static int mtk_iommu_attach_device(struct iommu_domain *domain,
295
295
static void mtk_iommu_detach_device (struct iommu_domain * domain ,
296
296
struct device * dev )
297
297
{
298
- struct mtk_iommu_data * data = dev -> iommu_fwspec -> iommu_priv ;
298
+ struct mtk_iommu_data * data = dev_iommu_fwspec_get ( dev ) -> iommu_priv ;
299
299
300
300
if (!data )
301
301
return ;
@@ -373,6 +373,7 @@ static struct iommu_ops mtk_iommu_ops;
373
373
static int mtk_iommu_create_mapping (struct device * dev ,
374
374
struct of_phandle_args * args )
375
375
{
376
+ struct iommu_fwspec * fwspec = dev_iommu_fwspec_get (dev );
376
377
struct mtk_iommu_data * data ;
377
378
struct platform_device * m4updev ;
378
379
struct dma_iommu_mapping * mtk_mapping ;
@@ -385,28 +386,29 @@ static int mtk_iommu_create_mapping(struct device *dev,
385
386
return - EINVAL ;
386
387
}
387
388
388
- if (!dev -> iommu_fwspec ) {
389
+ if (!fwspec ) {
389
390
ret = iommu_fwspec_init (dev , & args -> np -> fwnode , & mtk_iommu_ops );
390
391
if (ret )
391
392
return ret ;
392
- } else if (dev -> iommu_fwspec -> ops != & mtk_iommu_ops ) {
393
+ fwspec = dev_iommu_fwspec_get (dev );
394
+ } else if (dev_iommu_fwspec_get (dev )-> ops != & mtk_iommu_ops ) {
393
395
return - EINVAL ;
394
396
}
395
397
396
- if (!dev -> iommu_fwspec -> iommu_priv ) {
398
+ if (!fwspec -> iommu_priv ) {
397
399
/* Get the m4u device */
398
400
m4updev = of_find_device_by_node (args -> np );
399
401
if (WARN_ON (!m4updev ))
400
402
return - EINVAL ;
401
403
402
- dev -> iommu_fwspec -> iommu_priv = platform_get_drvdata (m4updev );
404
+ fwspec -> iommu_priv = platform_get_drvdata (m4updev );
403
405
}
404
406
405
407
ret = iommu_fwspec_add_ids (dev , args -> args , 1 );
406
408
if (ret )
407
409
return ret ;
408
410
409
- data = dev -> iommu_fwspec -> iommu_priv ;
411
+ data = fwspec -> iommu_priv ;
410
412
m4udev = data -> dev ;
411
413
mtk_mapping = m4udev -> archdata .iommu ;
412
414
if (!mtk_mapping ) {
@@ -424,6 +426,7 @@ static int mtk_iommu_create_mapping(struct device *dev,
424
426
425
427
static int mtk_iommu_add_device (struct device * dev )
426
428
{
429
+ struct iommu_fwspec * fwspec = dev_iommu_fwspec_get (dev );
427
430
struct dma_iommu_mapping * mtk_mapping ;
428
431
struct of_phandle_args iommu_spec ;
429
432
struct of_phandle_iterator it ;
@@ -442,7 +445,7 @@ static int mtk_iommu_add_device(struct device *dev)
442
445
of_node_put (iommu_spec .np );
443
446
}
444
447
445
- if (!dev -> iommu_fwspec || dev -> iommu_fwspec -> ops != & mtk_iommu_ops )
448
+ if (!fwspec || fwspec -> ops != & mtk_iommu_ops )
446
449
return - ENODEV ; /* Not a iommu client device */
447
450
448
451
/*
@@ -460,7 +463,7 @@ static int mtk_iommu_add_device(struct device *dev)
460
463
if (err )
461
464
return err ;
462
465
463
- data = dev -> iommu_fwspec -> iommu_priv ;
466
+ data = fwspec -> iommu_priv ;
464
467
mtk_mapping = data -> dev -> archdata .iommu ;
465
468
err = arm_iommu_attach_device (dev , mtk_mapping );
466
469
if (err ) {
@@ -473,12 +476,13 @@ static int mtk_iommu_add_device(struct device *dev)
473
476
474
477
static void mtk_iommu_remove_device (struct device * dev )
475
478
{
479
+ struct iommu_fwspec * fwspec = dev_iommu_fwspec_get (dev );
476
480
struct mtk_iommu_data * data ;
477
481
478
- if (!dev -> iommu_fwspec || dev -> iommu_fwspec -> ops != & mtk_iommu_ops )
482
+ if (!fwspec || fwspec -> ops != & mtk_iommu_ops )
479
483
return ;
480
484
481
- data = dev -> iommu_fwspec -> iommu_priv ;
485
+ data = fwspec -> iommu_priv ;
482
486
iommu_device_unlink (& data -> iommu , dev );
483
487
484
488
iommu_group_remove_device (dev );
0 commit comments