drivers/gpu/drm/via/via_drv.c | 12 +++---- drivers/gpu/drm/via/via_drv.h | 10 +++--- drivers/gpu/drm/via/via_fb.c | 68 ++++++++++++++++++++---------------------- drivers/gpu/drm/via/via_ttm.c | 20 +++++++++++- 4 files changed, 63 insertions(+), 47 deletions(-)
New commits: commit 732f0f6a0771f3ac499f52643117c1caf96b4b03 Author: Kevin Brace <kevinbr...@gmx.com> Date: Mon Jan 23 16:50:01 2017 -0600 Version bumped to 3.0.18 Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/drivers/gpu/drm/via/via_drv.h b/drivers/gpu/drm/via/via_drv.h index 7f4fa6d..2c8f0ac 100644 --- a/drivers/gpu/drm/via/via_drv.h +++ b/drivers/gpu/drm/via/via_drv.h @@ -30,11 +30,11 @@ #define DRIVER_AUTHOR "The OpenChrome Project" #define DRIVER_NAME "via" #define DRIVER_DESC "OpenChrome DRM for VIA Technologies Chrome IGP" -#define DRIVER_DATE "20170120" +#define DRIVER_DATE "20170123" #define DRIVER_MAJOR 3 #define DRIVER_MINOR 0 -#define DRIVER_PATCHLEVEL 17 +#define DRIVER_PATCHLEVEL 18 #include <linux/module.h> commit 3ed7ee6d6db066c564ceb0dd220e8d4764558479 Author: Kevin Brace <kevinbr...@gmx.com> Date: Mon Jan 23 16:49:13 2017 -0600 Moving VRAM memory mapping code Also made small improvements to via_detect_vram function Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/drivers/gpu/drm/via/via_drv.c b/drivers/gpu/drm/via/via_drv.c index eb9c21a..e9f8fb5 100644 --- a/drivers/gpu/drm/via/via_drv.c +++ b/drivers/gpu/drm/via/via_drv.c @@ -331,18 +331,18 @@ via_driver_load(struct drm_device *dev, unsigned long chipset) via_init_command_verifier(); + ret = via_detect_vram(dev); + if (ret) { + DRM_ERROR("Failed to initialize video RAM.\n"); + goto init_error; + } + ret = via_mm_init(dev_priv); if (ret) { DRM_ERROR("Failed to initialize TTM.\n"); goto init_error; } - ret = via_detect_vram(dev); - if (ret) { - DRM_ERROR("Failed to initialize video RAM.\n"); - goto init_error; - } - ret = via_mmio_setup(dev); if (ret) { DRM_ERROR("Failed to map Chrome IGP MMIO region.\n"); diff --git a/drivers/gpu/drm/via/via_fb.c b/drivers/gpu/drm/via/via_fb.c index 24a4af6..b48808a 100644 --- a/drivers/gpu/drm/via/via_fb.c +++ b/drivers/gpu/drm/via/via_fb.c @@ -697,7 +697,7 @@ int via_detect_vram(struct drm_device *dev) struct via_device *dev_priv = dev->dev_private; struct pci_dev *bridge = NULL; struct pci_dev *fn3 = NULL; - char *name = "Unknown"; + char *name = "unknown"; struct pci_bus *bus; u8 size; int ret = 0; @@ -741,7 +741,7 @@ int via_detect_vram(struct drm_device *dev) dev_priv->vram_size = (1 << ((size & 0x70) >> 4)) << 20; break; - /* KM400/KN400 */ + /* KM400 / KN400 / KM400A / KN400A */ case PCI_DEVICE_ID_VIA_8378_0: ret = km400_mem_type(dev_priv, bridge); @@ -761,7 +761,7 @@ int via_detect_vram(struct drm_device *dev) dev_priv->vram_size = (1 << ((size & 0x70) >> 4)) << 20; break; - /* K8M800/K8N800 */ + /* K8M800 / K8N800 */ case PCI_DEVICE_ID_VIA_8380_0: /* K8M890 */ case PCI_DEVICE_ID_VIA_VT3336: @@ -778,7 +778,7 @@ int via_detect_vram(struct drm_device *dev) goto out_err; break; - /* CN400/PM800/PM880 */ + /* CN400 / PM800 / PM880 */ case PCI_DEVICE_ID_VIA_PX8X0_0: ret = pci_read_config_byte(fn3, 0xA1, &size); if (ret) @@ -790,9 +790,9 @@ int via_detect_vram(struct drm_device *dev) goto out_err; break; - /* CN700/VN800/P4M800CE/P4M800Pro */ + /* P4M800CE / P4M800 Pro / VN800 / CN700 */ case PCI_DEVICE_ID_VIA_P4M800CE: - /* P4M900/VN896/CN896 */ + /* P4M900 / VN896 / CN896 */ case PCI_DEVICE_ID_VIA_VT3364: ret = pci_read_config_byte(fn3, 0xA1, &size); if (ret) @@ -807,13 +807,13 @@ int via_detect_vram(struct drm_device *dev) goto out_err; break; - /* CX700/VX700 */ + /* CX700 / VX700 */ case PCI_DEVICE_ID_VIA_VT3324: - /* P4M890 */ + /* P4M890 / VN890 */ case PCI_DEVICE_ID_VIA_P4M890: - /* VX800 */ + /* VX800 / VX820 */ case PCI_DEVICE_ID_VIA_VT3353: - /* VX855 */ + /* VX855 / VX875 */ case PCI_DEVICE_ID_VIA_VT3409: ret = pci_read_config_byte(fn3, 0xA1, &size); if (ret) @@ -840,7 +840,7 @@ int via_detect_vram(struct drm_device *dev) break; default: - DRM_ERROR("Unknown north bridge device 0x%04x.\n", bridge->device); + DRM_ERROR("Unknown north bridge device: 0x%04x\n", bridge->device); goto out_err; } @@ -903,15 +903,8 @@ int via_detect_vram(struct drm_device *dev) break; } - /* Add an MTRR for the VRAM */ - dev_priv->vram_mtrr = arch_phys_wc_add(dev_priv->vram_start, dev_priv->vram_size); - - ret = ttm_bo_init_mm(&dev_priv->bdev, TTM_PL_VRAM, dev_priv->vram_size >> PAGE_SHIFT); - if (!ret) { - DRM_INFO("Detected %llu MB of %s video RAM at physical address 0x%08llx.\n", - (unsigned long long) dev_priv->vram_size >> 20, name, dev_priv->vram_start); - } - + DRM_INFO("Found %s video RAM.\n", + name); out_err: if (bridge) pci_dev_put(bridge); diff --git a/drivers/gpu/drm/via/via_ttm.c b/drivers/gpu/drm/via/via_ttm.c index a4c82ed..8cd1f72 100644 --- a/drivers/gpu/drm/via/via_ttm.c +++ b/drivers/gpu/drm/via/via_ttm.c @@ -562,8 +562,10 @@ int via_mm_init(struct via_device *dev_priv) DRM_DEBUG("Entered via_mm_init.\n"); ret = via_ttm_global_init(dev_priv); - if (ret) - return ret; + if (ret) { + DRM_ERROR("Failed to initialise TTM: %d\n", ret); + goto exit; + } dev_priv->bdev.dev_mapping = dev->anon_inode->i_mapping; @@ -575,8 +577,22 @@ int via_mm_init(struct via_device *dev_priv) false); if (ret) { DRM_ERROR("Error initialising bo driver: %d\n", ret); + goto exit; + } + + ret = ttm_bo_init_mm(&dev_priv->bdev, TTM_PL_VRAM, dev_priv->vram_size >> PAGE_SHIFT); + if (ret) { + DRM_ERROR("Failed to map video RAM: %d\n", ret); + goto exit; } + /* Add an MTRR for the VRAM. */ + dev_priv->vram_mtrr = arch_phys_wc_add(dev_priv->vram_start, dev_priv->vram_size); + + DRM_INFO("Mapped %llu MB of video RAM at physical address 0x%08llx.\n", + (unsigned long long) dev_priv->vram_size >> 20, dev_priv->vram_start); + +exit: DRM_DEBUG("Exiting via_mm_init.\n"); return ret; } commit a76a193b203ff17db05fca95e53253d94c5b2923 Author: Kevin Brace <kevinbr...@gmx.com> Date: Mon Jan 23 16:47:06 2017 -0600 Initializing ret variable inside via_detect_vram Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/drivers/gpu/drm/via/via_fb.c b/drivers/gpu/drm/via/via_fb.c index 51cbd3f..24a4af6 100644 --- a/drivers/gpu/drm/via/via_fb.c +++ b/drivers/gpu/drm/via/via_fb.c @@ -700,7 +700,7 @@ int via_detect_vram(struct drm_device *dev) char *name = "Unknown"; struct pci_bus *bus; u8 size; - int ret; + int ret = 0; DRM_DEBUG("Entered via_detect_vram.\n"); commit 853c34c9d30ca388396779e20a3afe8c0d9185e3 Author: Kevin Brace <kevinbr...@gmx.com> Date: Mon Jan 23 16:46:13 2017 -0600 Made improvements to via_detect_vram Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/drivers/gpu/drm/via/via_drv.h b/drivers/gpu/drm/via/via_drv.h index f98ef6d..7f4fa6d 100644 --- a/drivers/gpu/drm/via/via_drv.h +++ b/drivers/gpu/drm/via/via_drv.h @@ -132,8 +132,10 @@ struct via_device { struct ttm_bo_kmap_obj vq; struct drm_fb_helper *helper; - int vram_mtrr; - u8 vram_type; + u8 vram_type; + unsigned long long vram_start; + unsigned int vram_size; + int vram_mtrr; struct via_state pm_cache; diff --git a/drivers/gpu/drm/via/via_fb.c b/drivers/gpu/drm/via/via_fb.c index ae93b8b..51cbd3f 100644 --- a/drivers/gpu/drm/via/via_fb.c +++ b/drivers/gpu/drm/via/via_fb.c @@ -695,14 +695,16 @@ vx900_mem_type(struct via_device *dev_priv, struct pci_dev *fn3) int via_detect_vram(struct drm_device *dev) { struct via_device *dev_priv = dev->dev_private; - struct pci_dev *bridge = NULL, *fn3 = NULL; - unsigned long long vram_start; - int vram_size = 0, ret = 0; + struct pci_dev *bridge = NULL; + struct pci_dev *fn3 = NULL; char *name = "Unknown"; struct pci_bus *bus; u8 size; + int ret; - bus = pci_find_bus(0, 0); + DRM_DEBUG("Entered via_detect_vram.\n"); + + bus = pci_find_bus(0, 0); if (bus == NULL) { ret = -EINVAL; goto out_err; @@ -723,7 +725,7 @@ int via_detect_vram(struct drm_device *dev) DRM_ERROR("No function 3 on host bridge...\n"); goto out_err; } - vram_start = pci_resource_start(dev->pdev, 0); + dev_priv->vram_start = pci_resource_start(dev->pdev, 0); switch (bridge->device) { @@ -736,7 +738,7 @@ int via_detect_vram(struct drm_device *dev) ret = pci_read_config_byte(bridge, 0xE1, &size); if (ret) goto out_err; - vram_size = (1 << ((size & 0x70) >> 4)) << 20; + dev_priv->vram_size = (1 << ((size & 0x70) >> 4)) << 20; break; /* KM400/KN400 */ @@ -746,7 +748,7 @@ int via_detect_vram(struct drm_device *dev) ret = pci_read_config_byte(bridge, 0xE1, &size); if (ret) goto out_err; - vram_size = (1 << ((size & 0x70) >> 4)) << 20; + dev_priv->vram_size = (1 << ((size & 0x70) >> 4)) << 20; break; /* P4M800 */ @@ -756,7 +758,7 @@ int via_detect_vram(struct drm_device *dev) ret = pci_read_config_byte(fn3, 0xA1, &size); if (ret) goto out_err; - vram_size = (1 << ((size & 0x70) >> 4)) << 20; + dev_priv->vram_size = (1 << ((size & 0x70) >> 4)) << 20; break; /* K8M800/K8N800 */ @@ -766,10 +768,10 @@ int via_detect_vram(struct drm_device *dev) ret = pci_read_config_byte(fn3, 0xA1, &size); if (ret) goto out_err; - vram_size = (1 << ((size & 0x70) >> 4)) << 20; + dev_priv->vram_size = (1 << ((size & 0x70) >> 4)) << 20; if (bridge->device == PCI_DEVICE_ID_VIA_VT3336) - vram_size <<= 2; + dev_priv->vram_size <<= 2; ret = km8xx_mem_type(dev_priv); if (ret) @@ -781,7 +783,7 @@ int via_detect_vram(struct drm_device *dev) ret = pci_read_config_byte(fn3, 0xA1, &size); if (ret) goto out_err; - vram_size = (1 << ((size & 0x70) >> 4)) << 20; + dev_priv->vram_size = (1 << ((size & 0x70) >> 4)) << 20; ret = cn400_mem_type(dev_priv, bus, fn3); if (ret) @@ -795,10 +797,10 @@ int via_detect_vram(struct drm_device *dev) ret = pci_read_config_byte(fn3, 0xA1, &size); if (ret) goto out_err; - vram_size = (1 << ((size & 0x70) >> 4)) << 20; + dev_priv->vram_size = (1 << ((size & 0x70) >> 4)) << 20; if (bridge->device != PCI_DEVICE_ID_VIA_P4M800CE) - vram_size <<= 2; + dev_priv->vram_size <<= 2; ret = cn700_mem_type(dev_priv, fn3); if (ret) @@ -816,7 +818,7 @@ int via_detect_vram(struct drm_device *dev) ret = pci_read_config_byte(fn3, 0xA1, &size); if (ret) goto out_err; - vram_size = (1 << ((size & 0x70) >> 4)) << 22; + dev_priv->vram_size = (1 << ((size & 0x70) >> 4)) << 22; ret = cx700_mem_type(dev_priv, fn3); if (ret) @@ -825,12 +827,12 @@ int via_detect_vram(struct drm_device *dev) /* VX900 */ case PCI_DEVICE_ID_VIA_VT3410: - vram_start = pci_resource_start(dev->pdev, 2); + dev_priv->vram_start = pci_resource_start(dev->pdev, 2); ret = pci_read_config_byte(fn3, 0xA1, &size); if (ret) goto out_err; - vram_size = (1 << ((size & 0x70) >> 4)) << 22; + dev_priv->vram_size = (1 << ((size & 0x70) >> 4)) << 22; ret = vx900_mem_type(dev_priv, fn3); if (ret) @@ -838,7 +840,7 @@ int via_detect_vram(struct drm_device *dev) break; default: - DRM_ERROR("Unknown North Bridge device 0x%04x.\n", bridge->device); + DRM_ERROR("Unknown north bridge device 0x%04x.\n", bridge->device); goto out_err; } @@ -902,18 +904,21 @@ int via_detect_vram(struct drm_device *dev) } /* Add an MTRR for the VRAM */ - dev_priv->vram_mtrr = arch_phys_wc_add(vram_start, vram_size); + dev_priv->vram_mtrr = arch_phys_wc_add(dev_priv->vram_start, dev_priv->vram_size); - ret = ttm_bo_init_mm(&dev_priv->bdev, TTM_PL_VRAM, vram_size >> PAGE_SHIFT); + ret = ttm_bo_init_mm(&dev_priv->bdev, TTM_PL_VRAM, dev_priv->vram_size >> PAGE_SHIFT); if (!ret) { - DRM_INFO("Detected %llu MB of %s Video RAM at physical address 0x%08llx.\n", - (unsigned long long) vram_size >> 20, name, vram_start); + DRM_INFO("Detected %llu MB of %s video RAM at physical address 0x%08llx.\n", + (unsigned long long) dev_priv->vram_size >> 20, name, dev_priv->vram_start); } + out_err: if (bridge) pci_dev_put(bridge); if (fn3) pci_dev_put(fn3); + + DRM_DEBUG("Exiting via_detect_vram.\n"); return ret; } _______________________________________________ Openchrome-devel mailing list Openchrome-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/openchrome-devel