drivers/gpu/drm/openchrome/openchrome_drv.c | 16 +++++++++++- drivers/gpu/drm/openchrome/openchrome_drv.h | 8 +++--- drivers/gpu/drm/openchrome/openchrome_fb.c | 37 +++++++++++++++++++++++++++- drivers/gpu/drm/openchrome/openchrome_ttm.c | 15 ----------- 4 files changed, 56 insertions(+), 20 deletions(-)
New commits: commit fc6b318ed29de6c3361ca286014b54734bac71df Author: Kevin Brace <kevinbr...@gmx.com> Date: Fri Oct 12 12:59:28 2018 -0700 drm/openchrome: Version bumped to 3.0.88 Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/drivers/gpu/drm/openchrome/openchrome_drv.h b/drivers/gpu/drm/openchrome/openchrome_drv.h index b5a7e1c99cfb..312f659efb63 100644 --- a/drivers/gpu/drm/openchrome/openchrome_drv.h +++ b/drivers/gpu/drm/openchrome/openchrome_drv.h @@ -31,11 +31,11 @@ #define DRIVER_AUTHOR "OpenChrome Project" #define DRIVER_NAME "openchrome" #define DRIVER_DESC "OpenChrome DRM for VIA Technologies Chrome IGP" -#define DRIVER_DATE "20181011" +#define DRIVER_DATE "20181012" #define DRIVER_MAJOR 3 #define DRIVER_MINOR 0 -#define DRIVER_PATCHLEVEL 87 +#define DRIVER_PATCHLEVEL 88 #include <linux/module.h> #include "ttm/ttm_bo_api.h" commit e7297defa29aabe360208400407e636e2617195c Author: Kevin Brace <kevinbr...@gmx.com> Date: Fri Oct 12 12:55:29 2018 -0700 drm/openchrome: Change how VRAM is mapped and unmapped Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/drivers/gpu/drm/openchrome/openchrome_drv.c b/drivers/gpu/drm/openchrome/openchrome_drv.c index df6fbe355420..505e546d7375 100644 --- a/drivers/gpu/drm/openchrome/openchrome_drv.c +++ b/drivers/gpu/drm/openchrome/openchrome_drv.c @@ -447,6 +447,15 @@ static int via_device_init(struct via_device *dev_priv) goto exit; } + /* + * Map VRAM. + */ + ret = openchrome_vram_init(dev_priv); + if (ret) { + DRM_ERROR("Failed to initialize video RAM.\n"); + goto exit; + } + ret = openchrome_mmio_init(dev_priv); if (ret) { DRM_ERROR("Failed to initialize MMIO.\n"); @@ -499,6 +508,11 @@ static void via_driver_unload(struct drm_device *dev) via_mm_fini(dev); + /* + * Unmap VRAM. + */ + openchrome_vram_fini(dev_priv); + openchrome_mmio_fini(dev_priv); #if IS_ENABLED(CONFIG_AGP) diff --git a/drivers/gpu/drm/openchrome/openchrome_drv.h b/drivers/gpu/drm/openchrome/openchrome_drv.h index d7622876e64e..b5a7e1c99cfb 100644 --- a/drivers/gpu/drm/openchrome/openchrome_drv.h +++ b/drivers/gpu/drm/openchrome/openchrome_drv.h @@ -330,6 +330,8 @@ extern int via_wait_irq(struct drm_device *dev, void *data, extern int via_wait_idle(struct via_device *dev_priv); extern int via_vram_detect(struct via_device *dev_priv); +extern int openchrome_vram_init(struct via_device *dev_priv); +extern void openchrome_vram_fini(struct via_device *dev_priv); extern int via_enable_vblank(struct drm_crtc *crtc); extern void via_disable_vblank(struct drm_crtc *crtc); diff --git a/drivers/gpu/drm/openchrome/openchrome_fb.c b/drivers/gpu/drm/openchrome/openchrome_fb.c index 9a6382eb7002..18e4a3bcf202 100644 --- a/drivers/gpu/drm/openchrome/openchrome_fb.c +++ b/drivers/gpu/drm/openchrome/openchrome_fb.c @@ -911,6 +911,41 @@ out_err: return ret; } +int openchrome_vram_init(struct via_device *dev_priv) +{ + int ret = 0; + + DRM_DEBUG_KMS("Entered %s.\n", __func__); + + /* Add an MTRR for the video RAM. */ + dev_priv->vram_mtrr = arch_phys_wc_add(dev_priv->vram_start, + dev_priv->vram_size); + + DRM_INFO("VIA Technologies Chrome IGP VRAM " + "Physical Address: 0x%08llx\n", + dev_priv->vram_start); + DRM_INFO("VIA Technologies Chrome IGP VRAM " + "Size: %llu\n", + (unsigned long long) dev_priv->vram_size >> 20); + + DRM_DEBUG_KMS("Exiting %s.\n", __func__); + return ret; +} + +void openchrome_vram_fini(struct via_device *dev_priv) +{ + DRM_DEBUG_KMS("Entered %s.\n", __func__); + + if (dev_priv->vram_mtrr) { + arch_phys_wc_del(dev_priv->vram_mtrr); + arch_io_free_memtype_wc(dev_priv->vram_start, + dev_priv->vram_size); + dev_priv->vram_mtrr = 0; + } + + DRM_DEBUG_KMS("Exiting %s.\n", __func__); +} + static int via_user_framebuffer_create_handle(struct drm_framebuffer *fb, struct drm_file *file_priv, diff --git a/drivers/gpu/drm/openchrome/openchrome_ttm.c b/drivers/gpu/drm/openchrome/openchrome_ttm.c index 29ccfd9e1ff0..b9d449a99e32 100644 --- a/drivers/gpu/drm/openchrome/openchrome_ttm.c +++ b/drivers/gpu/drm/openchrome/openchrome_ttm.c @@ -612,14 +612,6 @@ int via_mm_init(struct via_device *dev_priv) goto exit; } - /* Add an MTRR for the video RAM. */ - 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_KMS("Exiting %s.\n", __func__); return ret; @@ -637,13 +629,6 @@ void via_mm_fini(struct drm_device *dev) &dev_priv->ttm.bo_global_ref, &dev_priv->ttm.bdev); - /* mtrr delete the vram */ - if (dev_priv->vram_mtrr >= 0) { - arch_phys_wc_del(dev_priv->vram_mtrr); - } - - dev_priv->vram_mtrr = 0; - DRM_DEBUG_KMS("Exiting %s.\n", __func__); } commit 12b07c52087e59fdcb90a408ed910160a1de45c4 Author: Kevin Brace <kevinbr...@gmx.com> Date: Fri Oct 12 12:45:09 2018 -0700 drm/openchrome: Rename via_vram_init to via_vram_detect Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/drivers/gpu/drm/openchrome/openchrome_drv.c b/drivers/gpu/drm/openchrome/openchrome_drv.c index d5899ed20506..df6fbe355420 100644 --- a/drivers/gpu/drm/openchrome/openchrome_drv.c +++ b/drivers/gpu/drm/openchrome/openchrome_drv.c @@ -441,9 +441,9 @@ static int via_device_init(struct via_device *dev_priv) openchrome_flag_init(dev_priv); - ret = via_vram_init(dev_priv); + ret = via_vram_detect(dev_priv); if (ret) { - DRM_ERROR("Failed to initialize video RAM.\n"); + DRM_ERROR("Failed to detect video RAM.\n"); goto exit; } diff --git a/drivers/gpu/drm/openchrome/openchrome_drv.h b/drivers/gpu/drm/openchrome/openchrome_drv.h index 5bde11a83947..d7622876e64e 100644 --- a/drivers/gpu/drm/openchrome/openchrome_drv.h +++ b/drivers/gpu/drm/openchrome/openchrome_drv.h @@ -329,7 +329,7 @@ extern int via_wait_irq(struct drm_device *dev, void *data, struct drm_file *file_priv); extern int via_wait_idle(struct via_device *dev_priv); -extern int via_vram_init(struct via_device *dev_priv); +extern int via_vram_detect(struct via_device *dev_priv); extern int via_enable_vblank(struct drm_crtc *crtc); extern void via_disable_vblank(struct drm_crtc *crtc); diff --git a/drivers/gpu/drm/openchrome/openchrome_fb.c b/drivers/gpu/drm/openchrome/openchrome_fb.c index ca122c71535f..9a6382eb7002 100644 --- a/drivers/gpu/drm/openchrome/openchrome_fb.c +++ b/drivers/gpu/drm/openchrome/openchrome_fb.c @@ -688,7 +688,7 @@ vx900_mem_type(struct via_device *dev_priv, struct pci_dev *fn3) return ret; } -int via_vram_init(struct via_device *dev_priv) +int via_vram_detect(struct via_device *dev_priv) { struct drm_device *dev = dev_priv->dev; struct pci_dev *bridge = NULL; _______________________________________________ openchrome-devel mailing list openchrome-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/openchrome-devel