diff options
| -rw-r--r-- | MAINTAINERS | 3 | ||||
| -rw-r--r-- | drivers/char/agp/backend.c | 12 | ||||
| -rw-r--r-- | drivers/gpu/drm/exynos/Kconfig | 4 | ||||
| -rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_fimd.c | 109 | ||||
| -rw-r--r-- | drivers/gpu/drm/exynos/exynos_hdmi.c | 8 | ||||
| -rw-r--r-- | drivers/gpu/drm/gma500/framebuffer.c | 8 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_debugfs.c | 31 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_dma.c | 1 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_drv.c | 56 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 10 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_irq.c | 3 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_suspend.c | 11 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_bios.h | 6 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_crt.c | 23 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 22 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_lvds.c | 8 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_ringbuffer.c | 41 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_sdvo.c | 8 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_sprite.c | 8 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_tv.c | 138 |
20 files changed, 245 insertions, 265 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index 260d9c1785d0..1b6e83550c76 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
| @@ -2350,6 +2350,9 @@ F: include/drm/i915* | |||
| 2350 | 2350 | ||
| 2351 | DRM DRIVERS FOR EXYNOS | 2351 | DRM DRIVERS FOR EXYNOS |
| 2352 | M: Inki Dae <inki.dae@samsung.com> | 2352 | M: Inki Dae <inki.dae@samsung.com> |
| 2353 | M: Joonyoung Shim <jy0922.shim@samsung.com> | ||
| 2354 | M: Seung-Woo Kim <sw0312.kim@samsung.com> | ||
| 2355 | M: Kyungmin Park <kyungmin.park@samsung.com> | ||
| 2353 | L: dri-devel@lists.freedesktop.org | 2356 | L: dri-devel@lists.freedesktop.org |
| 2354 | S: Supported | 2357 | S: Supported |
| 2355 | F: drivers/gpu/drm/exynos | 2358 | F: drivers/gpu/drm/exynos |
diff --git a/drivers/char/agp/backend.c b/drivers/char/agp/backend.c index 4b71647782d0..317c28ce8328 100644 --- a/drivers/char/agp/backend.c +++ b/drivers/char/agp/backend.c | |||
| @@ -194,10 +194,10 @@ static int agp_backend_initialize(struct agp_bridge_data *bridge) | |||
| 194 | 194 | ||
| 195 | err_out: | 195 | err_out: |
| 196 | if (bridge->driver->needs_scratch_page) { | 196 | if (bridge->driver->needs_scratch_page) { |
| 197 | void *va = page_address(bridge->scratch_page_page); | 197 | struct page *page = bridge->scratch_page_page; |
| 198 | 198 | ||
| 199 | bridge->driver->agp_destroy_page(va, AGP_PAGE_DESTROY_UNMAP); | 199 | bridge->driver->agp_destroy_page(page, AGP_PAGE_DESTROY_UNMAP); |
| 200 | bridge->driver->agp_destroy_page(va, AGP_PAGE_DESTROY_FREE); | 200 | bridge->driver->agp_destroy_page(page, AGP_PAGE_DESTROY_FREE); |
| 201 | } | 201 | } |
| 202 | if (got_gatt) | 202 | if (got_gatt) |
| 203 | bridge->driver->free_gatt_table(bridge); | 203 | bridge->driver->free_gatt_table(bridge); |
| @@ -221,10 +221,10 @@ static void agp_backend_cleanup(struct agp_bridge_data *bridge) | |||
| 221 | 221 | ||
| 222 | if (bridge->driver->agp_destroy_page && | 222 | if (bridge->driver->agp_destroy_page && |
| 223 | bridge->driver->needs_scratch_page) { | 223 | bridge->driver->needs_scratch_page) { |
| 224 | void *va = page_address(bridge->scratch_page_page); | 224 | struct page *page = bridge->scratch_page_page; |
| 225 | 225 | ||
| 226 | bridge->driver->agp_destroy_page(va, AGP_PAGE_DESTROY_UNMAP); | 226 | bridge->driver->agp_destroy_page(page, AGP_PAGE_DESTROY_UNMAP); |
| 227 | bridge->driver->agp_destroy_page(va, AGP_PAGE_DESTROY_FREE); | 227 | bridge->driver->agp_destroy_page(page, AGP_PAGE_DESTROY_FREE); |
| 228 | } | 228 | } |
| 229 | } | 229 | } |
| 230 | 230 | ||
diff --git a/drivers/gpu/drm/exynos/Kconfig b/drivers/gpu/drm/exynos/Kconfig index f9aaa56eae07..b9e5266c341b 100644 --- a/drivers/gpu/drm/exynos/Kconfig +++ b/drivers/gpu/drm/exynos/Kconfig | |||
| @@ -13,7 +13,7 @@ config DRM_EXYNOS | |||
| 13 | 13 | ||
| 14 | config DRM_EXYNOS_FIMD | 14 | config DRM_EXYNOS_FIMD |
| 15 | tristate "Exynos DRM FIMD" | 15 | tristate "Exynos DRM FIMD" |
| 16 | depends on DRM_EXYNOS | 16 | depends on DRM_EXYNOS && !FB_S3C |
| 17 | default n | 17 | default n |
| 18 | help | 18 | help |
| 19 | Choose this option if you want to use Exynos FIMD for DRM. | 19 | Choose this option if you want to use Exynos FIMD for DRM. |
| @@ -21,7 +21,7 @@ config DRM_EXYNOS_FIMD | |||
| 21 | 21 | ||
| 22 | config DRM_EXYNOS_HDMI | 22 | config DRM_EXYNOS_HDMI |
| 23 | tristate "Exynos DRM HDMI" | 23 | tristate "Exynos DRM HDMI" |
| 24 | depends on DRM_EXYNOS | 24 | depends on DRM_EXYNOS && !VIDEO_SAMSUNG_S5P_TV |
| 25 | help | 25 | help |
| 26 | Choose this option if you want to use Exynos HDMI for DRM. | 26 | Choose this option if you want to use Exynos HDMI for DRM. |
| 27 | If M is selected, the module will be called exynos_drm_hdmi | 27 | If M is selected, the module will be called exynos_drm_hdmi |
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c b/drivers/gpu/drm/exynos/exynos_drm_fimd.c index ca83139cd309..b6a737d196ae 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_fimd.c +++ b/drivers/gpu/drm/exynos/exynos_drm_fimd.c | |||
| @@ -158,7 +158,8 @@ static void fimd_dpms(struct device *subdrv_dev, int mode) | |||
| 158 | case DRM_MODE_DPMS_STANDBY: | 158 | case DRM_MODE_DPMS_STANDBY: |
| 159 | case DRM_MODE_DPMS_SUSPEND: | 159 | case DRM_MODE_DPMS_SUSPEND: |
| 160 | case DRM_MODE_DPMS_OFF: | 160 | case DRM_MODE_DPMS_OFF: |
| 161 | pm_runtime_put_sync(subdrv_dev); | 161 | if (!ctx->suspended) |
| 162 | pm_runtime_put_sync(subdrv_dev); | ||
| 162 | break; | 163 | break; |
| 163 | default: | 164 | default: |
| 164 | DRM_DEBUG_KMS("unspecified mode %d\n", mode); | 165 | DRM_DEBUG_KMS("unspecified mode %d\n", mode); |
| @@ -734,6 +735,46 @@ static void fimd_clear_win(struct fimd_context *ctx, int win) | |||
| 734 | writel(val, ctx->regs + SHADOWCON); | 735 | writel(val, ctx->regs + SHADOWCON); |
| 735 | } | 736 | } |
| 736 | 737 | ||
| 738 | static int fimd_power_on(struct fimd_context *ctx, bool enable) | ||
| 739 | { | ||
| 740 | struct exynos_drm_subdrv *subdrv = &ctx->subdrv; | ||
| 741 | struct device *dev = subdrv->manager.dev; | ||
| 742 | |||
| 743 | DRM_DEBUG_KMS("%s\n", __FILE__); | ||
| 744 | |||
| 745 | if (enable != false && enable != true) | ||
| 746 | return -EINVAL; | ||
| 747 | |||
| 748 | if (enable) { | ||
| 749 | int ret; | ||
| 750 | |||
| 751 | ret = clk_enable(ctx->bus_clk); | ||
| 752 | if (ret < 0) | ||
| 753 | return ret; | ||
| 754 | |||
| 755 | ret = clk_enable(ctx->lcd_clk); | ||
| 756 | if (ret < 0) { | ||
| 757 | clk_disable(ctx->bus_clk); | ||
| 758 | return ret; | ||
| 759 | } | ||
| 760 | |||
| 761 | ctx->suspended = false; | ||
| 762 | |||
| 763 | /* if vblank was enabled status, enable it again. */ | ||
| 764 | if (test_and_clear_bit(0, &ctx->irq_flags)) | ||
| 765 | fimd_enable_vblank(dev); | ||
| 766 | |||
| 767 | fimd_apply(dev); | ||
| 768 | } else { | ||
| 769 | clk_disable(ctx->lcd_clk); | ||
| 770 | clk_disable(ctx->bus_clk); | ||
| 771 | |||
| 772 | ctx->suspended = true; | ||
| 773 | } | ||
| 774 | |||
| 775 | return 0; | ||
| 776 | } | ||
| 777 | |||
| 737 | static int __devinit fimd_probe(struct platform_device *pdev) | 778 | static int __devinit fimd_probe(struct platform_device *pdev) |
| 738 | { | 779 | { |
| 739 | struct device *dev = &pdev->dev; | 780 | struct device *dev = &pdev->dev; |
| @@ -911,39 +952,30 @@ out: | |||
| 911 | #ifdef CONFIG_PM_SLEEP | 952 | #ifdef CONFIG_PM_SLEEP |
| 912 | static int fimd_suspend(struct device *dev) | 953 | static int fimd_suspend(struct device *dev) |
| 913 | { | 954 | { |
| 914 | int ret; | 955 | struct fimd_context *ctx = get_fimd_context(dev); |
| 915 | 956 | ||
| 916 | if (pm_runtime_suspended(dev)) | 957 | if (pm_runtime_suspended(dev)) |
| 917 | return 0; | 958 | return 0; |
| 918 | 959 | ||
| 919 | ret = pm_runtime_suspend(dev); | 960 | /* |
| 920 | if (ret < 0) | 961 | * do not use pm_runtime_suspend(). if pm_runtime_suspend() is |
| 921 | return ret; | 962 | * called here, an error would be returned by that interface |
| 922 | 963 | * because the usage_count of pm runtime is more than 1. | |
| 923 | return 0; | 964 | */ |
| 965 | return fimd_power_on(ctx, false); | ||
| 924 | } | 966 | } |
| 925 | 967 | ||
