Rev 1963 | Rev 2005 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1963 | Rev 2004 | ||
---|---|---|---|
Line 496... | Line 496... | ||
496 | if (rdev->family == CHIP_RV740) |
496 | if (rdev->family == CHIP_RV740) |
497 | tcp_chan_steer = 0x00ef2a60; |
497 | tcp_chan_steer = 0x00ef2a60; |
498 | else |
498 | else |
499 | tcp_chan_steer = 0x00fac688; |
499 | tcp_chan_steer = 0x00fac688; |
Line -... | Line 500... | ||
- | 500 | ||
- | 501 | /* RV770 CE has special chremap setup */ |
|
- | 502 | if (rdev->pdev->device == 0x944e) { |
|
- | 503 | tcp_chan_steer = 0x00b08b08; |
|
- | 504 | mc_shared_chremap = 0x00b08b08; |
|
- | 505 | } |
|
500 | 506 | ||
501 | WREG32(TCP_CHAN_STEER, tcp_chan_steer); |
507 | WREG32(TCP_CHAN_STEER, tcp_chan_steer); |
502 | WREG32(MC_SHARED_CHREMAP, mc_shared_chremap); |
508 | WREG32(MC_SHARED_CHREMAP, mc_shared_chremap); |
Line 503... | Line 509... | ||
503 | } |
509 | } |
Line 1080... | Line 1086... | ||
1080 | } |
1086 | } |
1081 | r = rv770_vram_scratch_init(rdev); |
1087 | r = rv770_vram_scratch_init(rdev); |
1082 | if (r) |
1088 | if (r) |
1083 | return r; |
1089 | return r; |
1084 | rv770_gpu_init(rdev); |
1090 | rv770_gpu_init(rdev); |
- | 1091 | /* allocate wb buffer */ |
|
- | 1092 | r = radeon_wb_init(rdev); |
|
- | 1093 | if (r) |
|
- | 1094 | return r; |
|
- | 1095 | ||
- | 1096 | /* Enable IRQ */ |
|
- | 1097 | r = r600_irq_init(rdev); |
|
- | 1098 | if (r) { |
|
- | 1099 | DRM_ERROR("radeon: IH init failed (%d).\n", r); |
|
- | 1100 | // radeon_irq_kms_fini(rdev); |
|
- | 1101 | return r; |
|
- | 1102 | } |
|
- | 1103 | r600_irq_set(rdev); |
|
- | 1104 | ||
1085 | r = radeon_ring_init(rdev, rdev->cp.ring_size); |
1105 | r = radeon_ring_init(rdev, rdev->cp.ring_size); |
1086 | if (r) |
1106 | if (r) |
1087 | return r; |
1107 | return r; |
1088 | r = rv770_cp_load_microcode(rdev); |
1108 | r = rv770_cp_load_microcode(rdev); |
1089 | if (r) |
1109 | if (r) |
Line 1109... | Line 1129... | ||
1109 | */ |
1129 | */ |
1110 | int rv770_init(struct radeon_device *rdev) |
1130 | int rv770_init(struct radeon_device *rdev) |
1111 | { |
1131 | { |
1112 | int r; |
1132 | int r; |
Line -... | Line 1133... | ||
- | 1133 | ||
- | 1134 | /* This don't do much */ |
|
- | 1135 | r = radeon_gem_init(rdev); |
|
- | 1136 | if (r) |
|
1113 | 1137 | return r; |
|
1114 | /* Read BIOS */ |
1138 | /* Read BIOS */ |
1115 | if (!radeon_get_bios(rdev)) { |
1139 | if (!radeon_get_bios(rdev)) { |
1116 | if (ASIC_IS_AVIVO(rdev)) |
1140 | if (ASIC_IS_AVIVO(rdev)) |
1117 | return -EINVAL; |
1141 | return -EINVAL; |
Line 1138... | Line 1162... | ||
1138 | /* Initialize surface registers */ |
1162 | /* Initialize surface registers */ |
1139 | radeon_surface_init(rdev); |
1163 | radeon_surface_init(rdev); |
1140 | /* Initialize clocks */ |
1164 | /* Initialize clocks */ |
1141 | radeon_get_clock_info(rdev->ddev); |
1165 | radeon_get_clock_info(rdev->ddev); |
1142 | /* Fence driver */ |
1166 | /* Fence driver */ |
1143 | // r = radeon_fence_driver_init(rdev); |
1167 | r = radeon_fence_driver_init(rdev); |
1144 | // if (r) |
1168 | if (r) |
1145 | // return r; |
1169 | return r; |
1146 | /* initialize AGP */ |
1170 | /* initialize AGP */ |
1147 | if (rdev->flags & RADEON_IS_AGP) { |
1171 | if (rdev->flags & RADEON_IS_AGP) { |
1148 | r = radeon_agp_init(rdev); |
1172 | r = radeon_agp_init(rdev); |
1149 | if (r) |
1173 | if (r) |
1150 | radeon_agp_disable(rdev); |
1174 | radeon_agp_disable(rdev); |
Line 1155... | Line 1179... | ||
1155 | /* Memory manager */ |
1179 | /* Memory manager */ |
1156 | r = radeon_bo_init(rdev); |
1180 | r = radeon_bo_init(rdev); |
1157 | if (r) |
1181 | if (r) |
1158 | return r; |
1182 | return r; |
Line -... | Line 1183... | ||
- | 1183 | ||
- | 1184 | r = radeon_irq_kms_init(rdev); |
|
- | 1185 | if (r) |
|
Line 1159... | Line 1186... | ||
1159 | 1186 | return r; |
|
1160 | 1187 | ||
Line -... | Line 1188... | ||
- | 1188 | rdev->cp.ring_obj = NULL; |
|
- | 1189 | r600_ring_init(rdev, 1024 * 1024); |
|
Line 1161... | Line 1190... | ||
1161 | rdev->cp.ring_obj = NULL; |
1190 | |
1162 | r600_ring_init(rdev, 1024 * 1024); |
1191 | rdev->ih.ring_obj = NULL; |
1163 | 1192 | r600_ih_ring_init(rdev, 64 * 1024); |
|
Line 1164... | Line 1193... | ||
1164 | 1193 | ||
1165 | r = r600_pcie_gart_init(rdev); |
1194 | r = r600_pcie_gart_init(rdev); |
1166 | if (r) |
1195 | if (r) |
1167 | return r; |
1196 | return r; |
1168 | - | ||
1169 | rdev->accel_working = true; |
1197 | |
1170 | r = rv770_startup(rdev); |
1198 | rdev->accel_working = true; |
1171 | if (r) { |
1199 | r = rv770_startup(rdev); |
1172 | dev_err(rdev->dev, "disabling GPU acceleration\n"); |
1200 | if (r) { |
1173 | 1201 | dev_err(rdev->dev, "disabling GPU acceleration\n"); |
|
1174 | rv770_pcie_gart_fini(rdev); |
1202 | rv770_pcie_gart_fini(rdev); |
1175 | rdev->accel_working = false; |
1203 | rdev->accel_working = false; |
1176 | } |
1204 | } |
1177 | if (rdev->accel_working) { |
1205 | if (rdev->accel_working) { |
1178 | // r = radeon_ib_pool_init(rdev); |
1206 | r = radeon_ib_pool_init(rdev); |
1179 | // if (r) { |
1207 | if (r) { |
1180 | // dev_err(rdev->dev, "IB initialization failed (%d).\n", r); |
1208 | dev_err(rdev->dev, "IB initialization failed (%d).\n", r); |
1181 | // rdev->accel_working = false; |
1209 | rdev->accel_working = false; |
1182 | // } else { |
1210 | } else { |
1183 | // r = r600_ib_test(rdev); |
1211 | r = r600_ib_test(rdev); |
1184 | // if (r) { |
1212 | if (r) { |
Line 1185... | Line 1213... | ||
1185 | // dev_err(rdev->dev, "IB test failed (%d).\n", r); |
1213 | dev_err(rdev->dev, "IB test failed (%d).\n", r); |
1186 | // rdev->accel_working = false; |
1214 | rdev->accel_working = false; |