drm/amdgpu: Implement the pciconfig callbacks for CGS
authorChunming Zhou <David1.Zhou@amd.com>
Fri, 22 May 2015 15:33:31 +0000 (11:33 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 17 Aug 2015 20:50:08 +0000 (16:50 -0400)
This implements the pciconfig register accessors.

Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com>
Signed-off-by: Chunming Zhou <David1.Zhou@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c

index 7ba92f711f8c2826c502940754fe146e2fc6a4fb..6ac3df856b49b058b80a88495e64513d205dda99 100644 (file)
@@ -21,6 +21,7 @@
  *
  *
  */
+#include <linux/pci.h>
 #include "amdgpu.h"
 #include "cgs_linux.h"
 
@@ -163,42 +164,57 @@ static void amdgpu_cgs_write_ind_register(void *cgs_device,
 
 static uint8_t amdgpu_cgs_read_pci_config_byte(void *cgs_device, unsigned addr)
 {
-       /* TODO */
-       return 0;
+       CGS_FUNC_ADEV;
+       uint8_t val;
+       int ret = pci_read_config_byte(adev->pdev, addr, &val);
+       if (WARN(ret, "pci_read_config_byte error"))
+               return 0;
+       return val;
 }
 
 static uint16_t amdgpu_cgs_read_pci_config_word(void *cgs_device, unsigned addr)
 {
-       /* TODO */
-       return 0;
+       CGS_FUNC_ADEV;
+       uint16_t val;
+       int ret = pci_read_config_word(adev->pdev, addr, &val);
+       if (WARN(ret, "pci_read_config_word error"))
+               return 0;
+       return val;
 }
 
 static uint32_t amdgpu_cgs_read_pci_config_dword(void *cgs_device,
                                                 unsigned addr)
 {
-       /* TODO */
-       return 0;
+       CGS_FUNC_ADEV;
+       uint32_t val;
+       int ret = pci_read_config_dword(adev->pdev, addr, &val);
+       if (WARN(ret, "pci_read_config_dword error"))
+               return 0;
+       return val;
 }
 
 static void amdgpu_cgs_write_pci_config_byte(void *cgs_device, unsigned addr,
                                             uint8_t value)
 {
-       /* TODO */
-       return;
+       CGS_FUNC_ADEV;
+       int ret = pci_write_config_byte(adev->pdev, addr, value);
+       WARN(ret, "pci_write_config_byte error");
 }
 
 static void amdgpu_cgs_write_pci_config_word(void *cgs_device, unsigned addr,
                                             uint16_t value)
 {
-       /* TODO */
-       return;
+       CGS_FUNC_ADEV;
+       int ret = pci_write_config_word(adev->pdev, addr, value);
+       WARN(ret, "pci_write_config_word error");
 }
 
 static void amdgpu_cgs_write_pci_config_dword(void *cgs_device, unsigned addr,
                                              uint32_t value)
 {
-       /* TODO */
-       return;
+       CGS_FUNC_ADEV;
+       int ret = pci_write_config_dword(adev->pdev, addr, value);
+       WARN(ret, "pci_write_config_dword error");
 }
 
 static const void *amdgpu_cgs_atom_get_data_table(void *cgs_device,