diff options
author | Thomas Fleury <tfleury@nvidia.com> | 2017-06-07 14:31:54 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-06-30 11:46:25 -0400 |
commit | 125c770c2a9c84d8243d015de4b515f33d45b2d7 (patch) | |
tree | f323aa174ca91247357dae071c547bbd65f0538f | |
parent | 28093a374bef54b9b68fcb2f00ae7d0529e33a3f (diff) |
gpu: nvgpu: determine memory configuration in hal
Remove mem_config_idx from platform data, and instead let
HAL determine which memory configuration to use. For this
purpose, HAL may use PCI device identifiers, VBIOS version
and possibly RAMCFG strap register.
Bug 1929155
Change-Id: I9fcd67ff407382839ff81470789043fae1c81283
Reviewed-on: http://git-master/r/1497813
Signed-off-by: Thomas Fleury <tfleury@nvidia.com>
(cherry picked from commit 3f722945213bacfc5f6707059b9baccebd92cef1)
Reviewed-on: https://git-master/r/1506583
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Vijayakumar Subbu <vsubbu@nvidia.com>
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
-rw-r--r-- | drivers/gpu/nvgpu/common/linux/pci.c | 6 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/platform_gk20a.h | 3 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gm206/bios_gm206.c | 8 |
3 files changed, 2 insertions, 15 deletions
diff --git a/drivers/gpu/nvgpu/common/linux/pci.c b/drivers/gpu/nvgpu/common/linux/pci.c index acb1bb9f..939854e7 100644 --- a/drivers/gpu/nvgpu/common/linux/pci.c +++ b/drivers/gpu/nvgpu/common/linux/pci.c | |||
@@ -96,7 +96,6 @@ static struct gk20a_platform nvgpu_pci_device[] = { | |||
96 | .ina3221_dcb_index = 0, | 96 | .ina3221_dcb_index = 0, |
97 | .ina3221_i2c_address = 0x84, | 97 | .ina3221_i2c_address = 0x84, |
98 | .ina3221_i2c_port = 0x2, | 98 | .ina3221_i2c_port = 0x2, |
99 | .mem_config_idx = GP106_MEM_CONFIG_GDDR5_PG418, | ||
100 | }, | 99 | }, |
101 | { /* DEVICE=0x1c36 */ | 100 | { /* DEVICE=0x1c36 */ |
102 | /* ptimer src frequency in hz */ | 101 | /* ptimer src frequency in hz */ |
@@ -132,7 +131,6 @@ static struct gk20a_platform nvgpu_pci_device[] = { | |||
132 | .ina3221_dcb_index = 0, | 131 | .ina3221_dcb_index = 0, |
133 | .ina3221_i2c_address = 0x84, | 132 | .ina3221_i2c_address = 0x84, |
134 | .ina3221_i2c_port = 0x2, | 133 | .ina3221_i2c_port = 0x2, |
135 | .mem_config_idx = GP106_MEM_CONFIG_GDDR5_PG418, | ||
136 | }, | 134 | }, |
137 | { /* DEVICE=0x1c37 */ | 135 | { /* DEVICE=0x1c37 */ |
138 | /* ptimer src frequency in hz */ | 136 | /* ptimer src frequency in hz */ |
@@ -168,7 +166,6 @@ static struct gk20a_platform nvgpu_pci_device[] = { | |||
168 | .ina3221_dcb_index = 0, | 166 | .ina3221_dcb_index = 0, |
169 | .ina3221_i2c_address = 0x84, | 167 | .ina3221_i2c_address = 0x84, |
170 | .ina3221_i2c_port = 0x2, | 168 | .ina3221_i2c_port = 0x2, |
171 | .mem_config_idx = GP106_MEM_CONFIG_GDDR5_PG418, | ||
172 | }, | 169 | }, |
173 | { /* DEVICE=0x1c75 */ | 170 | { /* DEVICE=0x1c75 */ |
174 | /* ptimer src frequency in hz */ | 171 | /* ptimer src frequency in hz */ |
@@ -204,7 +201,6 @@ static struct gk20a_platform nvgpu_pci_device[] = { | |||
204 | .ina3221_dcb_index = 1, | 201 | .ina3221_dcb_index = 1, |
205 | .ina3221_i2c_address = 0x80, | 202 | .ina3221_i2c_address = 0x80, |
206 | .ina3221_i2c_port = 0x1, | 203 | .ina3221_i2c_port = 0x1, |
207 | .mem_config_idx = GP106_MEM_CONFIG_GDDR5_PG419, | ||
208 | } | 204 | } |
209 | }; | 205 | }; |
210 | 206 | ||
@@ -403,8 +399,6 @@ static int nvgpu_pci_probe(struct pci_dev *pdev, | |||
403 | g->msi_enabled = true; | 399 | g->msi_enabled = true; |
404 | #endif | 400 | #endif |
405 | 401 | ||
406 | g->mem_config_idx = platform->mem_config_idx; | ||
407 | |||
408 | g->irq_stall = pdev->irq; | 402 | g->irq_stall = pdev->irq; |
409 | g->irq_nonstall = pdev->irq; | 403 | g->irq_nonstall = pdev->irq; |
410 | if (g->irq_stall < 0) | 404 | if (g->irq_stall < 0) |
diff --git a/drivers/gpu/nvgpu/gk20a/platform_gk20a.h b/drivers/gpu/nvgpu/gk20a/platform_gk20a.h index 63d2c5a2..72322e54 100644 --- a/drivers/gpu/nvgpu/gk20a/platform_gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/platform_gk20a.h | |||
@@ -235,9 +235,6 @@ struct gk20a_platform { | |||
235 | u32 ina3221_dcb_index; | 235 | u32 ina3221_dcb_index; |
236 | u32 ina3221_i2c_address; | 236 | u32 ina3221_i2c_address; |
237 | u32 ina3221_i2c_port; | 237 | u32 ina3221_i2c_port; |
238 | |||
239 | /* memory training pattern and mclk switch sequences */ | ||
240 | u8 mem_config_idx; | ||
241 | }; | 238 | }; |
242 | 239 | ||
243 | static inline struct gk20a_platform *gk20a_get_platform( | 240 | static inline struct gk20a_platform *gk20a_get_platform( |
diff --git a/drivers/gpu/nvgpu/gm206/bios_gm206.c b/drivers/gpu/nvgpu/gm206/bios_gm206.c index 567b01ce..499fb53f 100644 --- a/drivers/gpu/nvgpu/gm206/bios_gm206.c +++ b/drivers/gpu/nvgpu/gm206/bios_gm206.c | |||
@@ -315,15 +315,11 @@ int gm206_bios_init(struct gk20a *g) | |||
315 | return -EINVAL; | 315 | return -EINVAL; |
316 | } | 316 | } |
317 | 317 | ||
318 | /* WAR for HW2.5 RevA (identified by VBIOS version) | 318 | /* WAR for HW2.5 RevA (INA3221 is missing) */ |
319 | * - INA3221 is missing | ||
320 | * - use PG418 MCLK switching sequences | ||
321 | */ | ||
322 | if ((g->pci_vendor_id == PCI_VENDOR_ID_NVIDIA) && | 319 | if ((g->pci_vendor_id == PCI_VENDOR_ID_NVIDIA) && |
323 | (g->pci_device_id == 0x1c75) && | 320 | (g->pci_device_id == 0x1c75) && |
324 | (g->gpu_characteristics.vbios_version == 0x86065300)) { | 321 | (g->gpu_characteristics.vbios_version == 0x86065300)) { |
325 | g->power_sensor_missing = true; | 322 | g->power_sensor_missing = true; |
326 | g->mem_config_idx = GP106_MEM_CONFIG_GDDR5_PG418; | ||
327 | } | 323 | } |
328 | 324 | ||
329 | #ifdef CONFIG_DEBUG_FS | 325 | #ifdef CONFIG_DEBUG_FS |