@@ -4341,18 +4341,25 @@ static int arm_smmu_device_hw_probe(struct arm_smmu_device *smmu)
4341
4341
}
4342
4342
4343
4343
#ifdef CONFIG_ACPI
4344
- static void acpi_smmu_get_options (u32 model , struct arm_smmu_device * smmu )
4344
+ static int acpi_smmu_iort_probe_model (struct acpi_iort_node * node ,
4345
+ struct arm_smmu_device * smmu )
4345
4346
{
4346
- switch (model ) {
4347
+ struct acpi_iort_smmu_v3 * iort_smmu =
4348
+ (struct acpi_iort_smmu_v3 * )node -> node_data ;
4349
+
4350
+ switch (iort_smmu -> model ) {
4347
4351
case ACPI_IORT_SMMU_V3_CAVIUM_CN99XX :
4348
4352
smmu -> options |= ARM_SMMU_OPT_PAGE0_REGS_ONLY ;
4349
4353
break ;
4350
4354
case ACPI_IORT_SMMU_V3_HISILICON_HI161X :
4351
4355
smmu -> options |= ARM_SMMU_OPT_SKIP_PREFETCH ;
4352
4356
break ;
4357
+ case ACPI_IORT_SMMU_V3_GENERIC :
4358
+ break ;
4353
4359
}
4354
4360
4355
4361
dev_notice (smmu -> dev , "option mask 0x%x\n" , smmu -> options );
4362
+ return 0 ;
4356
4363
}
4357
4364
4358
4365
static int arm_smmu_device_acpi_probe (struct platform_device * pdev ,
@@ -4367,8 +4374,6 @@ static int arm_smmu_device_acpi_probe(struct platform_device *pdev,
4367
4374
/* Retrieve SMMUv3 specific data */
4368
4375
iort_smmu = (struct acpi_iort_smmu_v3 * )node -> node_data ;
4369
4376
4370
- acpi_smmu_get_options (iort_smmu -> model , smmu );
4371
-
4372
4377
if (iort_smmu -> flags & ACPI_IORT_SMMU_V3_COHACC_OVERRIDE )
4373
4378
smmu -> features |= ARM_SMMU_FEAT_COHERENCY ;
4374
4379
@@ -4380,7 +4385,7 @@ static int arm_smmu_device_acpi_probe(struct platform_device *pdev,
4380
4385
smmu -> features |= ARM_SMMU_FEAT_HA ;
4381
4386
}
4382
4387
4383
- return 0 ;
4388
+ return acpi_smmu_iort_probe_model ( node , smmu ) ;
4384
4389
}
4385
4390
#else
4386
4391
static inline int arm_smmu_device_acpi_probe (struct platform_device * pdev ,
0 commit comments