hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c
....@@ -23,12 +23,13 @@
2323 * Authors: Dave Airlie
2424 * Alex Deucher
2525 */
26
-#include <drm/drmP.h>
26
+
2727 #include <drm/amdgpu_drm.h>
2828 #include "amdgpu.h"
2929 #include "amdgpu_atombios.h"
3030 #include "amdgpu_atomfirmware.h"
3131 #include "amdgpu_i2c.h"
32
+#include "amdgpu_display.h"
3233
3334 #include "atom.h"
3435 #include "atom-bits.h"
....@@ -147,7 +148,7 @@
147148
148149 if (i2c.valid) {
149150 sprintf(stmp, "0x%x", i2c.i2c_id);
150
- adev->i2c_bus[i] = amdgpu_i2c_create(adev->ddev, &i2c, stmp);
151
+ adev->i2c_bus[i] = amdgpu_i2c_create(adev_to_drm(adev), &i2c, stmp);
151152 }
152153 gpio = (ATOM_GPIO_I2C_ASSIGMENT *)
153154 ((u8 *)gpio + sizeof(ATOM_GPIO_I2C_ASSIGMENT));
....@@ -540,7 +541,7 @@
540541 }
541542 }
542543
543
- amdgpu_link_encoder_connector(adev->ddev);
544
+ amdgpu_link_encoder_connector(adev_to_drm(adev));
544545
545546 return true;
546547 }
....@@ -1785,9 +1786,9 @@
17851786 (uint32_t)(ATOM_VRAM_BLOCK_SRIOV_MSG_SHARE_RESERVATION <<
17861787 ATOM_VRAM_OPERATION_FLAGS_SHIFT)) {
17871788 /* Firmware request VRAM reservation for SR-IOV */
1788
- adev->fw_vram_usage.start_offset = (start_addr &
1789
+ adev->mman.fw_vram_usage_start_offset = (start_addr &
17891790 (~ATOM_VRAM_OPERATION_FLAGS_MASK)) << 10;
1790
- adev->fw_vram_usage.size = size << 10;
1791
+ adev->mman.fw_vram_usage_size = size << 10;
17911792 /* Use the default scratch size */
17921793 usage_bytes = 0;
17931794 } else {
....@@ -1881,7 +1882,7 @@
18811882 */
18821883 static void cail_reg_write(struct card_info *info, uint32_t reg, uint32_t val)
18831884 {
1884
- struct amdgpu_device *adev = info->dev->dev_private;
1885
+ struct amdgpu_device *adev = drm_to_adev(info->dev);
18851886
18861887 WREG32(reg, val);
18871888 }
....@@ -1897,7 +1898,7 @@
18971898 */
18981899 static uint32_t cail_reg_read(struct card_info *info, uint32_t reg)
18991900 {
1900
- struct amdgpu_device *adev = info->dev->dev_private;
1901
+ struct amdgpu_device *adev = drm_to_adev(info->dev);
19011902 uint32_t r;
19021903
19031904 r = RREG32(reg);
....@@ -1915,7 +1916,7 @@
19151916 */
19161917 static void cail_ioreg_write(struct card_info *info, uint32_t reg, uint32_t val)
19171918 {
1918
- struct amdgpu_device *adev = info->dev->dev_private;
1919
+ struct amdgpu_device *adev = drm_to_adev(info->dev);
19191920
19201921 WREG32_IO(reg, val);
19211922 }
....@@ -1931,7 +1932,7 @@
19311932 */
19321933 static uint32_t cail_ioreg_read(struct card_info *info, uint32_t reg)
19331934 {
1934
- struct amdgpu_device *adev = info->dev->dev_private;
1935
+ struct amdgpu_device *adev = drm_to_adev(info->dev);
19351936 uint32_t r;
19361937
19371938 r = RREG32_IO(reg);
....@@ -1943,7 +1944,7 @@
19431944 char *buf)
19441945 {
19451946 struct drm_device *ddev = dev_get_drvdata(dev);
1946
- struct amdgpu_device *adev = ddev->dev_private;
1947
+ struct amdgpu_device *adev = drm_to_adev(ddev);
19471948 struct atom_context *ctx = adev->mode_info.atom_context;
19481949
19491950 return snprintf(buf, PAGE_SIZE, "%s\n", ctx->vbios_version);
....@@ -1994,7 +1995,7 @@
19941995 return -ENOMEM;
19951996
19961997 adev->mode_info.atom_card_info = atom_card_info;
1997
- atom_card_info->dev = adev->ddev;
1998
+ atom_card_info->dev = adev_to_drm(adev);
19981999 atom_card_info->reg_read = cail_reg_read;
19992000 atom_card_info->reg_write = cail_reg_write;
20002001 /* needed for iio ops */
....@@ -2035,3 +2036,20 @@
20352036 return 0;
20362037 }
20372038
2039
+int amdgpu_atombios_get_data_table(struct amdgpu_device *adev,
2040
+ uint32_t table,
2041
+ uint16_t *size,
2042
+ uint8_t *frev,
2043
+ uint8_t *crev,
2044
+ uint8_t **addr)
2045
+{
2046
+ uint16_t data_start;
2047
+
2048
+ if (!amdgpu_atom_parse_data_header(adev->mode_info.atom_context, table,
2049
+ size, frev, crev, &data_start))
2050
+ return -EINVAL;
2051
+
2052
+ *addr = (uint8_t *)adev->mode_info.atom_context->bios + data_start;
2053
+
2054
+ return 0;
2055
+}