aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc64/kernel/pci_schizo.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sparc64/kernel/pci_schizo.c')
-rw-r--r--arch/sparc64/kernel/pci_schizo.c25
1 files changed, 8 insertions, 17 deletions
diff --git a/arch/sparc64/kernel/pci_schizo.c b/arch/sparc64/kernel/pci_schizo.c
index 64904b180f49..e1c565744d3f 100644
--- a/arch/sparc64/kernel/pci_schizo.c
+++ b/arch/sparc64/kernel/pci_schizo.c
@@ -1152,24 +1152,17 @@ static void schizo_pbm_strbuf_init(struct pci_pbm_info *pbm)
1152 1152
1153static int schizo_pbm_iommu_init(struct pci_pbm_info *pbm) 1153static int schizo_pbm_iommu_init(struct pci_pbm_info *pbm)
1154{ 1154{
1155 struct iommu *iommu = pbm->iommu; 1155 static const u32 vdma_default[] = { 0xc0000000, 0x40000000 };
1156 unsigned long i, tagbase, database; 1156 unsigned long i, tagbase, database;
1157 struct property *prop; 1157 struct iommu *iommu = pbm->iommu;
1158 u32 vdma[2], dma_mask;
1159 int tsbsize, err; 1158 int tsbsize, err;
1159 const u32 *vdma;
1160 u32 dma_mask;
1160 u64 control; 1161 u64 control;
1161 1162
1162 prop = of_find_property(pbm->prom_node, "virtual-dma", NULL); 1163 vdma = of_get_property(pbm->prom_node, "virtual-dma", NULL);
1163 if (prop) { 1164 if (!vdma)
1164 u32 *val = prop->value; 1165 vdma = vdma_default;
1165
1166 vdma[0] = val[0];
1167 vdma[1] = val[1];
1168 } else {
1169 /* No property, use default values. */
1170 vdma[0] = 0xc0000000;
1171 vdma[1] = 0x40000000;
1172 }
1173 1166
1174 dma_mask = vdma[0]; 1167 dma_mask = vdma[0];
1175 switch (vdma[1]) { 1168 switch (vdma[1]) {
@@ -1284,7 +1277,6 @@ static int schizo_pbm_iommu_init(struct pci_pbm_info *pbm)
1284 1277
1285static void schizo_pbm_hw_init(struct pci_pbm_info *pbm) 1278static void schizo_pbm_hw_init(struct pci_pbm_info *pbm)
1286{ 1279{
1287 struct property *prop;
1288 u64 tmp; 1280 u64 tmp;
1289 1281
1290 schizo_write(pbm->pbm_regs + SCHIZO_PCI_IRQ_RETRY, 5); 1282 schizo_write(pbm->pbm_regs + SCHIZO_PCI_IRQ_RETRY, 5);
@@ -1298,8 +1290,7 @@ static void schizo_pbm_hw_init(struct pci_pbm_info *pbm)
1298 pbm->chip_version >= 0x2) 1290 pbm->chip_version >= 0x2)
1299 tmp |= 0x3UL << SCHIZO_PCICTRL_PTO_SHIFT; 1291 tmp |= 0x3UL << SCHIZO_PCICTRL_PTO_SHIFT;
1300 1292
1301 prop = of_find_property(pbm->prom_node, "no-bus-parking", NULL); 1293 if (!of_find_property(pbm->prom_node, "no-bus-parking", NULL))
1302 if (!prop)
1303 tmp |= SCHIZO_PCICTRL_PARK; 1294 tmp |= SCHIZO_PCICTRL_PARK;
1304 else 1295 else
1305 tmp &= ~SCHIZO_PCICTRL_PARK; 1296 tmp &= ~SCHIZO_PCICTRL_PARK;