forked from Minki/linux
i915, amdgpu + misc fixes
-----BEGIN PGP SIGNATURE----- iQIcBAABAgAGBQJaKedrAAoJEAx081l5xIa+CLkP/AkLTMW17WT/aktLfq4/+NQV WGcLxQw+SB9iYMffFUNdQdMqv3pKsDzeatifxNuoRnjvK6rNZDUFK11SoTEFCdA+ opI3zBPiyMVv71LtLF/r2kj3Vw5rnARdCg24FIzptGg/4j+G0EOb9uzd9qjmjof1 r2XD1f0mjIG6SREMYCZPJj/Q/ZGfWFKXxcatmf87sAoq4o2nfoQ1Sl0T4cnMV7yp FzzFKA/j6OaiVa0Tb1KiJOl8VnW5f9STanUynFcPtKd2mhDcVaEP4lAfBhHgccd8 ufmsyPJDadGQDT0iQY5E8n+ht124wg4gW8TKGqyxDfxuzTFj2k62WOUMH4eSjGSt x7SHEewTQLoV5kIPp0y00T2NWuA4/jmjjgllQZgqSFwnsv8fQ9/GwLNPWrUGM0+z 6sqzj7QRyn8GGuYblqVghVYj0bX3ovmYlLzOaKZ+pNSM34hLBFRenZQ5mKJ6WrcE SIKzuQm3HEC8KwNw72zZ6+zz5fc7x9KuURztwEPt6vOMnxz1PtjWSdHzfvja4cH2 6D2t0lZSqkM244FFG4ImFP6CDF+8vaY7i9YybjYteycWH7o9haVa869vCxUdNUWo DDghWKPRjbl7LJLJ14BxMrg0+sk+XWYcoZXjUAM0rYFFOWoFkVAlF8Sy3kgb5Pky wMLalQohWFbkZY60q02h =2f34 -----END PGP SIGNATURE----- Merge tag 'drm-fixes-for-v4.15-rc3' of git://people.freedesktop.org/~airlied/linux Pull drm fixes from Dave Airlie: "This pull is a bit larger than I'd like but a large bunch of it is license fixes, AMD wanted to fix the licenses for a bunch of files that were missing them, Otherwise a bunch of TTM regression fix since the hugepage support, some i915 and gvt fixes, a core connector free in a safe context fix, and one bridge fix" * tag 'drm-fixes-for-v4.15-rc3' of git://people.freedesktop.org/~airlied/linux: (26 commits) drm/bridge: analogix dp: Fix runtime PM state in get_modes() callback Revert "drm/i915: Display WA #1133 WaFbcSkipSegments:cnl, glk" drm/vc4: Fix false positive WARN() backtrace on refcount_inc() usage drm/i915: Call i915_gem_init_userptr() before taking struct_mutex drm/exynos: remove unnecessary function declaration drm/exynos: remove unnecessary descrptions drm/exynos: gem: Drop NONCONTIG flag for buffers allocated without IOMMU drm/exynos: Fix dma-buf import drm/ttm: swap consecutive allocated pooled pages v4 drm: safely free connectors from connector_iter drm/i915/gvt: set max priority for gvt context drm/i915/gvt: Don't mark vgpu context as inactive when preempted drm/i915/gvt: Limit read hw reg to active vgpu drm/i915/gvt: Export intel_gvt_render_mmio_to_ring_id() drm/i915/gvt: Emulate PCI expansion ROM base address register drm/ttm: swap consecutive allocated cached pages v3 drm/ttm: roundup the shrink request to prevent skip huge pool drm/ttm: add page order support in ttm_pages_put drm/ttm: add set_pages_wb for handling page order more than zero drm/ttm: add page order in page pool ...
This commit is contained in:
commit
4066aa72f9
@ -1,4 +1,25 @@
|
|||||||
#
|
#
|
||||||
|
# Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and associated documentation files (the "Software"),
|
||||||
|
# to deal in the Software without restriction, including without limitation
|
||||||
|
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
# and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
# Software is furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
# OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
#
|
||||||
# Makefile for the ACP, which is a sub-component
|
# Makefile for the ACP, which is a sub-component
|
||||||
# of AMDSOC/AMDGPU drm driver.
|
# of AMDSOC/AMDGPU drm driver.
|
||||||
# It provides the HW control for ACP related functionalities.
|
# It provides the HW control for ACP related functionalities.
|
||||||
|
@ -1,4 +1,24 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0
|
#
|
||||||
|
# Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and associated documentation files (the "Software"),
|
||||||
|
# to deal in the Software without restriction, including without limitation
|
||||||
|
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
# and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
# Software is furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
# OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
#
|
#
|
||||||
# Makefile for the drm device driver. This driver provides support for the
|
# Makefile for the drm device driver. This driver provides support for the
|
||||||
# Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher.
|
# Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher.
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
* copy of this software and associated documentation files (the "Software"),
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
* to deal in the Software without restriction, including without limitation
|
* to deal in the Software without restriction, including without limitation
|
||||||
|
@ -1,4 +1,26 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0 */
|
/*
|
||||||
|
* Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
|
* to deal in the Software without restriction, including without limitation
|
||||||
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
* and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
* Software is furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
* OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
#if !defined(_AMDGPU_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
|
#if !defined(_AMDGPU_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
|
||||||
#define _AMDGPU_TRACE_H_
|
#define _AMDGPU_TRACE_H_
|
||||||
|
|
||||||
|
@ -1,4 +1,24 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0
|
#
|
||||||
|
# Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and associated documentation files (the "Software"),
|
||||||
|
# to deal in the Software without restriction, including without limitation
|
||||||
|
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
# and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
# Software is furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
# OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
#
|
#
|
||||||
# Makefile for Heterogenous System Architecture support for AMD GPU devices
|
# Makefile for Heterogenous System Architecture support for AMD GPU devices
|
||||||
#
|
#
|
||||||
|
@ -1,4 +1,25 @@
|
|||||||
#
|
#
|
||||||
|
# Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and associated documentation files (the "Software"),
|
||||||
|
# to deal in the Software without restriction, including without limitation
|
||||||
|
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
# and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
# Software is furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
# OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
#
|
||||||
# Makefile for the DAL (Display Abstract Layer), which is a sub-component
|
# Makefile for the DAL (Display Abstract Layer), which is a sub-component
|
||||||
# of the AMDGPU drm driver.
|
# of the AMDGPU drm driver.
|
||||||
# It provides the HW control for display related functionalities.
|
# It provides the HW control for display related functionalities.
|
||||||
|
@ -1,4 +1,25 @@
|
|||||||
#
|
#
|
||||||
|
# Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and associated documentation files (the "Software"),
|
||||||
|
# to deal in the Software without restriction, including without limitation
|
||||||
|
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
# and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
# Software is furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
# OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
#
|
||||||
# Makefile for the 'dm' sub-component of DAL.
|
# Makefile for the 'dm' sub-component of DAL.
|
||||||
# It provides the control and status of dm blocks.
|
# It provides the control and status of dm blocks.
|
||||||
|
|
||||||
|
@ -1,4 +1,25 @@
|
|||||||
#
|
#
|
||||||
|
# Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and associated documentation files (the "Software"),
|
||||||
|
# to deal in the Software without restriction, including without limitation
|
||||||
|
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
# and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
# Software is furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
# OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
#
|
||||||
# Makefile for Display Core (dc) component.
|
# Makefile for Display Core (dc) component.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
@ -1,4 +1,25 @@
|
|||||||
#
|
#
|
||||||
|
# Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and associated documentation files (the "Software"),
|
||||||
|
# to deal in the Software without restriction, including without limitation
|
||||||
|
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
# and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
# Software is furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
# OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
#
|
||||||
# Makefile for the 'utils' sub-component of DAL.
|
# Makefile for the 'utils' sub-component of DAL.
|
||||||
# It provides the general basic services required by other DAL
|
# It provides the general basic services required by other DAL
|
||||||
# subcomponents.
|
# subcomponents.
|
||||||
|
@ -1,4 +1,25 @@
|
|||||||
#
|
#
|
||||||
|
# Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and associated documentation files (the "Software"),
|
||||||
|
# to deal in the Software without restriction, including without limitation
|
||||||
|
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
# and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
# Software is furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
# OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
#
|
||||||
# Makefile for the 'bios' sub-component of DAL.
|
# Makefile for the 'bios' sub-component of DAL.
|
||||||
# It provides the parsing and executing controls for atom bios image.
|
# It provides the parsing and executing controls for atom bios image.
|
||||||
|
|
||||||
|
@ -1,4 +1,25 @@
|
|||||||
#
|
#
|
||||||
|
# Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and associated documentation files (the "Software"),
|
||||||
|
# to deal in the Software without restriction, including without limitation
|
||||||
|
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
# and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
# Software is furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
# OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
#
|
||||||
# Makefile for the 'calcs' sub-component of DAL.
|
# Makefile for the 'calcs' sub-component of DAL.
|
||||||
# It calculates Bandwidth and Watermarks values for HW programming
|
# It calculates Bandwidth and Watermarks values for HW programming
|
||||||
#
|
#
|
||||||
|
@ -1,3 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
|
* to deal in the Software without restriction, including without limitation
|
||||||
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
* and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
* Software is furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
* OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
*/
|
||||||
/*
|
/*
|
||||||
* dc_debug.c
|
* dc_debug.c
|
||||||
*
|
*
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-15 Advanced Micro Devices, Inc.
|
* Copyright 2012-15 Advanced Micro Devices, Inc.
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
* copy of this software and associated documentation files (the "Software"),
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
|
@ -1,3 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
|
* to deal in the Software without restriction, including without limitation
|
||||||
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
* and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
* Software is furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
* OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
*/
|
||||||
/*
|
/*
|
||||||
* dc_helper.c
|
* dc_helper.c
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,25 @@
|
|||||||
#
|
#
|
||||||
|
# Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and associated documentation files (the "Software"),
|
||||||
|
# to deal in the Software without restriction, including without limitation
|
||||||
|
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
# and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
# Software is furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
# OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
#
|
||||||
# Makefile for common 'dce' logic
|
# Makefile for common 'dce' logic
|
||||||
# HW object file under this folder follow similar pattern for HW programming
|
# HW object file under this folder follow similar pattern for HW programming
|
||||||
# - register offset and/or shift + mask stored in the dec_hw struct
|
# - register offset and/or shift + mask stored in the dec_hw struct
|
||||||
|
@ -1,4 +1,25 @@
|
|||||||
#
|
#
|
||||||
|
# Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and associated documentation files (the "Software"),
|
||||||
|
# to deal in the Software without restriction, including without limitation
|
||||||
|
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
# and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
# Software is furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
# OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
#
|
||||||
# Makefile for the 'controller' sub-component of DAL.
|
# Makefile for the 'controller' sub-component of DAL.
|
||||||
# It provides the control and status of HW CRTC block.
|
# It provides the control and status of HW CRTC block.
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-15 Advanced Micro Devices, Inc.
|
* Copyright 2012-15 Advanced Micro Devices, Inc.
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
* copy of this software and associated documentation files (the "Software"),
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
|
@ -1,3 +1,26 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
|
* to deal in the Software without restriction, including without limitation
|
||||||
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
* and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
* Software is furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
* OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
/*
|
/*
|
||||||
* dce100_resource.h
|
* dce100_resource.h
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,25 @@
|
|||||||
#
|
#
|
||||||
|
# Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and associated documentation files (the "Software"),
|
||||||
|
# to deal in the Software without restriction, including without limitation
|
||||||
|
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
# and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
# Software is furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
# OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
#
|
||||||
# Makefile for the 'controller' sub-component of DAL.
|
# Makefile for the 'controller' sub-component of DAL.
|
||||||
# It provides the control and status of HW CRTC block.
|
# It provides the control and status of HW CRTC block.
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-15 Advanced Micro Devices, Inc.
|
* Copyright 2012-15 Advanced Micro Devices, Inc.
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
* copy of this software and associated documentation files (the "Software"),
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
|
@ -1,3 +1,26 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
|
* to deal in the Software without restriction, including without limitation
|
||||||
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
* and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
* Software is furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
* OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
#include "dm_services.h"
|
#include "dm_services.h"
|
||||||
|
|
||||||
/* include DCE11 register header files */
|
/* include DCE11 register header files */
|
||||||
|
@ -1,4 +1,25 @@
|
|||||||
#
|
#
|
||||||
|
# Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and associated documentation files (the "Software"),
|
||||||
|
# to deal in the Software without restriction, including without limitation
|
||||||
|
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
# and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
# Software is furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
# OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
#
|
||||||
# Makefile for the 'controller' sub-component of DAL.
|
# Makefile for the 'controller' sub-component of DAL.
|
||||||
# It provides the control and status of HW CRTC block.
|
# It provides the control and status of HW CRTC block.
|
||||||
|
|
||||||
|
@ -1,4 +1,25 @@
|
|||||||
#
|
#
|
||||||
|
# Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and associated documentation files (the "Software"),
|
||||||
|
# to deal in the Software without restriction, including without limitation
|
||||||
|
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
# and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
# Software is furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
# OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
#
|
||||||
# Makefile for the 'controller' sub-component of DAL.
|
# Makefile for the 'controller' sub-component of DAL.
|
||||||
# It provides the control and status of HW CRTC block.
|
# It provides the control and status of HW CRTC block.
|
||||||
|
|
||||||
@ -8,4 +29,4 @@ dce120_hw_sequencer.o
|
|||||||
|
|
||||||
AMD_DAL_DCE120 = $(addprefix $(AMDDALPATH)/dc/dce120/,$(DCE120))
|
AMD_DAL_DCE120 = $(addprefix $(AMDDALPATH)/dc/dce120/,$(DCE120))
|
||||||
|
|
||||||
AMD_DISPLAY_FILES += $(AMD_DAL_DCE120)
|
AMD_DISPLAY_FILES += $(AMD_DAL_DCE120)
|
||||||
|
@ -1,4 +1,25 @@
|
|||||||
#
|
#
|
||||||
|
# Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and associated documentation files (the "Software"),
|
||||||
|
# to deal in the Software without restriction, including without limitation
|
||||||
|
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
# and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
# Software is furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
# OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
#
|
||||||
# Makefile for the 'controller' sub-component of DAL.
|
# Makefile for the 'controller' sub-component of DAL.
|
||||||
# It provides the control and status of HW CRTC block.
|
# It provides the control and status of HW CRTC block.
|
||||||
|
|
||||||
|
@ -1,4 +1,25 @@
|
|||||||
#
|
#
|
||||||
|
# Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and associated documentation files (the "Software"),
|
||||||
|
# to deal in the Software without restriction, including without limitation
|
||||||
|
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
# and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
# Software is furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
# OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
#
|
||||||
# Makefile for DCN.
|
# Makefile for DCN.
|
||||||
|
|
||||||
DCN10 = dcn10_resource.o dcn10_ipp.o dcn10_hw_sequencer.o \
|
DCN10 = dcn10_resource.o dcn10_ipp.o dcn10_hw_sequencer.o \
|
||||||
|
@ -1,4 +1,25 @@
|
|||||||
#
|
#
|
||||||
|
# Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and associated documentation files (the "Software"),
|
||||||
|
# to deal in the Software without restriction, including without limitation
|
||||||
|
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
# and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
# Software is furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
# OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
#
|
||||||
# Makefile for the 'utils' sub-component of DAL.
|
# Makefile for the 'utils' sub-component of DAL.
|
||||||
# It provides the general basic services required by other DAL
|
# It provides the general basic services required by other DAL
|
||||||
# subcomponents.
|
# subcomponents.
|
||||||
|
@ -1,4 +1,25 @@
|
|||||||
#
|
#
|
||||||
|
# Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and associated documentation files (the "Software"),
|
||||||
|
# to deal in the Software without restriction, including without limitation
|
||||||
|
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
# and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
# Software is furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
# OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
#
|
||||||
# Makefile for the 'gpio' sub-component of DAL.
|
# Makefile for the 'gpio' sub-component of DAL.
|
||||||
# It provides the control and status of HW GPIO pins.
|
# It provides the control and status of HW GPIO pins.
|
||||||
|
|
||||||
|
@ -1,4 +1,25 @@
|
|||||||
#
|
#
|
||||||
|
# Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and associated documentation files (the "Software"),
|
||||||
|
# to deal in the Software without restriction, including without limitation
|
||||||
|
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
# and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
# Software is furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
# OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
#
|
||||||
# Makefile for the 'i2c' sub-component of DAL.
|
# Makefile for the 'i2c' sub-component of DAL.
|
||||||
# It provides the control and status of HW i2c engine of the adapter.
|
# It provides the control and status of HW i2c engine of the adapter.
|
||||||
|
|
||||||
|
@ -1,3 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
|
* to deal in the Software without restriction, including without limitation
|
||||||
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
* and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
* Software is furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
* OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
*/
|
||||||
/*
|
/*
|
||||||
* link_encoder.h
|
* link_encoder.h
|
||||||
*
|
*
|
||||||
|
@ -1,3 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
|
* to deal in the Software without restriction, including without limitation
|
||||||
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
* and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
* Software is furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
* OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
*/
|
||||||
/*
|
/*
|
||||||
* stream_encoder.h
|
* stream_encoder.h
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,25 @@
|
|||||||
#
|
#
|
||||||
|
# Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and associated documentation files (the "Software"),
|
||||||
|
# to deal in the Software without restriction, including without limitation
|
||||||
|
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
# and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
# Software is furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
# OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
#
|
||||||
# Makefile for the 'audio' sub-component of DAL.
|
# Makefile for the 'audio' sub-component of DAL.
|
||||||
# It provides the control and status of HW adapter resources,
|
# It provides the control and status of HW adapter resources,
|
||||||
# that are global for the ASIC and sharable between pipes.
|
# that are global for the ASIC and sharable between pipes.
|
||||||
|
@ -1,4 +1,25 @@
|
|||||||
#
|
#
|
||||||
|
# Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and associated documentation files (the "Software"),
|
||||||
|
# to deal in the Software without restriction, including without limitation
|
||||||
|
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
# and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
# Software is furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
# OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
#
|
||||||
# Makefile for the virtual sub-component of DAL.
|
# Makefile for the virtual sub-component of DAL.
|
||||||
# It provides the control and status of HW CRTC block.
|
# It provides the control and status of HW CRTC block.
|
||||||
|
|
||||||
|
@ -1,4 +1,25 @@
|
|||||||
#
|
#
|
||||||
|
# Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and associated documentation files (the "Software"),
|
||||||
|
# to deal in the Software without restriction, including without limitation
|
||||||
|
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
# and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
# Software is furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
# OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
#
|
||||||
# Makefile for the 'freesync' sub-module of DAL.
|
# Makefile for the 'freesync' sub-module of DAL.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
@ -1,4 +1,25 @@
|
|||||||
#
|
#
|
||||||
|
# Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and associated documentation files (the "Software"),
|
||||||
|
# to deal in the Software without restriction, including without limitation
|
||||||
|
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
# and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
# Software is furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
# OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
#
|
||||||
# Makefile for AMD library routines, which are used by AMD driver
|
# Makefile for AMD library routines, which are used by AMD driver
|
||||||
# components.
|
# components.
|
||||||
#
|
#
|
||||||
|
@ -1,4 +1,24 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0
|
#
|
||||||
|
# Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and associated documentation files (the "Software"),
|
||||||
|
# to deal in the Software without restriction, including without limitation
|
||||||
|
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
# and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
# Software is furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
# OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
|
||||||
subdir-ccflags-y += \
|
subdir-ccflags-y += \
|
||||||
-I$(FULL_AMD_PATH)/powerplay/inc/ \
|
-I$(FULL_AMD_PATH)/powerplay/inc/ \
|
||||||
|
@ -1,4 +1,24 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0
|
#
|
||||||
|
# Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and associated documentation files (the "Software"),
|
||||||
|
# to deal in the Software without restriction, including without limitation
|
||||||
|
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
# and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
# Software is furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
# OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
#
|
#
|
||||||
# Makefile for the 'hw manager' sub-component of powerplay.
|
# Makefile for the 'hw manager' sub-component of powerplay.
|
||||||
# It provides the hardware management services for the driver.
|
# It provides the hardware management services for the driver.
|
||||||
|
@ -1,4 +1,26 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0
|
/*
|
||||||
|
* Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
|
* to deal in the Software without restriction, including without limitation
|
||||||
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
* and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
* Software is furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
* OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
#include "pp_overdriver.h"
|
#include "pp_overdriver.h"
|
||||||
#include <linux/errno.h>
|
#include <linux/errno.h>
|
||||||
|
|
||||||
|
@ -1,4 +1,26 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0 */
|
/*
|
||||||
|
* Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
|
* to deal in the Software without restriction, including without limitation
|
||||||
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
* and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
* Software is furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
* OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
#ifndef SMU72_H
|
#ifndef SMU72_H
|
||||||
#define SMU72_H
|
#define SMU72_H
|
||||||
|
|
||||||
|
@ -1,4 +1,26 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0 */
|
/*
|
||||||
|
* Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
|
* to deal in the Software without restriction, including without limitation
|
||||||
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
* and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
* Software is furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
* OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
#ifndef SMU72_DISCRETE_H
|
#ifndef SMU72_DISCRETE_H
|
||||||
#define SMU72_DISCRETE_H
|
#define SMU72_DISCRETE_H
|
||||||
|
|
||||||
|
@ -1,4 +1,24 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0
|
#
|
||||||
|
# Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and associated documentation files (the "Software"),
|
||||||
|
# to deal in the Software without restriction, including without limitation
|
||||||
|
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
# and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
# Software is furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
# OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
#
|
#
|
||||||
# Makefile for the 'smu manager' sub-component of powerplay.
|
# Makefile for the 'smu manager' sub-component of powerplay.
|
||||||
# It provides the smu management services for the driver.
|
# It provides the smu management services for the driver.
|
||||||
|
@ -1,4 +1,26 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0 */
|
/*
|
||||||
|
* Copyright 2017 Advanced Micro Devices, Inc.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
|
* to deal in the Software without restriction, including without limitation
|
||||||
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
* and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
* Software is furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
* OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
#if !defined(_GPU_SCHED_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
|
#if !defined(_GPU_SCHED_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
|
||||||
#define _GPU_SCHED_TRACE_H_
|
#define _GPU_SCHED_TRACE_H_
|
||||||
|
|
||||||
|
@ -946,7 +946,9 @@ static int analogix_dp_get_modes(struct drm_connector *connector)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pm_runtime_get_sync(dp->dev);
|
||||||
edid = drm_get_edid(connector, &dp->aux.ddc);
|
edid = drm_get_edid(connector, &dp->aux.ddc);
|
||||||
|
pm_runtime_put(dp->dev);
|
||||||
if (edid) {
|
if (edid) {
|
||||||
drm_mode_connector_update_edid_property(&dp->connector,
|
drm_mode_connector_update_edid_property(&dp->connector,
|
||||||
edid);
|
edid);
|
||||||
|
@ -152,6 +152,16 @@ static void drm_connector_free(struct kref *kref)
|
|||||||
connector->funcs->destroy(connector);
|
connector->funcs->destroy(connector);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void drm_connector_free_work_fn(struct work_struct *work)
|
||||||
|
{
|
||||||
|
struct drm_connector *connector =
|
||||||
|
container_of(work, struct drm_connector, free_work);
|
||||||
|
struct drm_device *dev = connector->dev;
|
||||||
|
|
||||||
|
drm_mode_object_unregister(dev, &connector->base);
|
||||||
|
connector->funcs->destroy(connector);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* drm_connector_init - Init a preallocated connector
|
* drm_connector_init - Init a preallocated connector
|
||||||
* @dev: DRM device
|
* @dev: DRM device
|
||||||
@ -181,6 +191,8 @@ int drm_connector_init(struct drm_device *dev,
|
|||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
INIT_WORK(&connector->free_work, drm_connector_free_work_fn);
|
||||||
|
|
||||||
connector->base.properties = &connector->properties;
|
connector->base.properties = &connector->properties;
|
||||||
connector->dev = dev;
|
connector->dev = dev;
|
||||||
connector->funcs = funcs;
|
connector->funcs = funcs;
|
||||||
@ -529,6 +541,18 @@ void drm_connector_list_iter_begin(struct drm_device *dev,
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL(drm_connector_list_iter_begin);
|
EXPORT_SYMBOL(drm_connector_list_iter_begin);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Extra-safe connector put function that works in any context. Should only be
|
||||||
|
* used from the connector_iter functions, where we never really expect to
|
||||||
|
* actually release the connector when dropping our final reference.
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
drm_connector_put_safe(struct drm_connector *conn)
|
||||||
|
{
|
||||||
|
if (refcount_dec_and_test(&conn->base.refcount.refcount))
|
||||||
|
schedule_work(&conn->free_work);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* drm_connector_list_iter_next - return next connector
|
* drm_connector_list_iter_next - return next connector
|
||||||
* @iter: connectr_list iterator
|
* @iter: connectr_list iterator
|
||||||
@ -561,7 +585,7 @@ drm_connector_list_iter_next(struct drm_connector_list_iter *iter)
|
|||||||
spin_unlock_irqrestore(&config->connector_list_lock, flags);
|
spin_unlock_irqrestore(&config->connector_list_lock, flags);
|
||||||
|
|
||||||
if (old_conn)
|
if (old_conn)
|
||||||
drm_connector_put(old_conn);
|
drm_connector_put_safe(old_conn);
|
||||||
|
|
||||||
return iter->conn;
|
return iter->conn;
|
||||||
}
|
}
|
||||||
@ -580,7 +604,7 @@ void drm_connector_list_iter_end(struct drm_connector_list_iter *iter)
|
|||||||
{
|
{
|
||||||
iter->dev = NULL;
|
iter->dev = NULL;
|
||||||
if (iter->conn)
|
if (iter->conn)
|
||||||
drm_connector_put(iter->conn);
|
drm_connector_put_safe(iter->conn);
|
||||||
lock_release(&connector_list_iter_dep_map, 0, _RET_IP_);
|
lock_release(&connector_list_iter_dep_map, 0, _RET_IP_);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(drm_connector_list_iter_end);
|
EXPORT_SYMBOL(drm_connector_list_iter_end);
|
||||||
|
@ -431,6 +431,8 @@ void drm_mode_config_cleanup(struct drm_device *dev)
|
|||||||
drm_connector_put(connector);
|
drm_connector_put(connector);
|
||||||
}
|
}
|
||||||
drm_connector_list_iter_end(&conn_iter);
|
drm_connector_list_iter_end(&conn_iter);
|
||||||
|
/* connector_iter drops references in a work item. */
|
||||||
|
flush_scheduled_work();
|
||||||
if (WARN_ON(!list_empty(&dev->mode_config.connector_list))) {
|
if (WARN_ON(!list_empty(&dev->mode_config.connector_list))) {
|
||||||
drm_connector_list_iter_begin(dev, &conn_iter);
|
drm_connector_list_iter_begin(dev, &conn_iter);
|
||||||
drm_for_each_connector_iter(connector, &conn_iter)
|
drm_for_each_connector_iter(connector, &conn_iter)
|
||||||
|
@ -37,8 +37,6 @@
|
|||||||
#define DRIVER_MAJOR 1
|
#define DRIVER_MAJOR 1
|
||||||
#define DRIVER_MINOR 0
|
#define DRIVER_MINOR 0
|
||||||
|
|
||||||
static struct device *exynos_drm_get_dma_device(void);
|
|
||||||
|
|
||||||
int exynos_atomic_check(struct drm_device *dev,
|
int exynos_atomic_check(struct drm_device *dev,
|
||||||
struct drm_atomic_state *state)
|
struct drm_atomic_state *state)
|
||||||
{
|
{
|
||||||
@ -148,7 +146,7 @@ static struct drm_driver exynos_drm_driver = {
|
|||||||
.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
|
.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
|
||||||
.prime_fd_to_handle = drm_gem_prime_fd_to_handle,
|
.prime_fd_to_handle = drm_gem_prime_fd_to_handle,
|
||||||
.gem_prime_export = drm_gem_prime_export,
|
.gem_prime_export = drm_gem_prime_export,
|
||||||
.gem_prime_import = drm_gem_prime_import,
|
.gem_prime_import = exynos_drm_gem_prime_import,
|
||||||
.gem_prime_get_sg_table = exynos_drm_gem_prime_get_sg_table,
|
.gem_prime_get_sg_table = exynos_drm_gem_prime_get_sg_table,
|
||||||
.gem_prime_import_sg_table = exynos_drm_gem_prime_import_sg_table,
|
.gem_prime_import_sg_table = exynos_drm_gem_prime_import_sg_table,
|
||||||
.gem_prime_vmap = exynos_drm_gem_prime_vmap,
|
.gem_prime_vmap = exynos_drm_gem_prime_vmap,
|
||||||
@ -301,6 +299,27 @@ static struct component_match *exynos_drm_match_add(struct device *dev)
|
|||||||
return match ?: ERR_PTR(-ENODEV);
|
return match ?: ERR_PTR(-ENODEV);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct device *exynos_drm_get_dma_device(void)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < ARRAY_SIZE(exynos_drm_drivers); ++i) {
|
||||||
|
struct exynos_drm_driver_info *info = &exynos_drm_drivers[i];
|
||||||
|
struct device *dev;
|
||||||
|
|
||||||
|
if (!info->driver || !(info->flags & DRM_DMA_DEVICE))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
while ((dev = bus_find_device(&platform_bus_type, NULL,
|
||||||
|
&info->driver->driver,
|
||||||
|
(void *)platform_bus_type.match))) {
|
||||||
|
put_device(dev);
|
||||||
|
return dev;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
static int exynos_drm_bind(struct device *dev)
|
static int exynos_drm_bind(struct device *dev)
|
||||||
{
|
{
|
||||||
struct exynos_drm_private *private;
|
struct exynos_drm_private *private;
|
||||||
@ -469,27 +488,6 @@ static struct platform_driver exynos_drm_platform_driver = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct device *exynos_drm_get_dma_device(void)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(exynos_drm_drivers); ++i) {
|
|
||||||
struct exynos_drm_driver_info *info = &exynos_drm_drivers[i];
|
|
||||||
struct device *dev;
|
|
||||||
|
|
||||||
if (!info->driver || !(info->flags & DRM_DMA_DEVICE))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
while ((dev = bus_find_device(&platform_bus_type, NULL,
|
|
||||||
&info->driver->driver,
|
|
||||||
(void *)platform_bus_type.match))) {
|
|
||||||
put_device(dev);
|
|
||||||
return dev;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void exynos_drm_unregister_devices(void)
|
static void exynos_drm_unregister_devices(void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
@ -194,11 +194,6 @@ struct drm_exynos_file_private {
|
|||||||
/*
|
/*
|
||||||
* Exynos drm private structure.
|
* Exynos drm private structure.
|
||||||
*
|
*
|
||||||
* @da_start: start address to device address space.
|
|
||||||
* with iommu, device address space starts from this address
|
|
||||||
* otherwise default one.
|
|
||||||
* @da_space_size: size of device address space.
|
|
||||||
* if 0 then default value is used for it.
|
|
||||||
* @pending: the crtcs that have pending updates to finish
|
* @pending: the crtcs that have pending updates to finish
|
||||||
* @lock: protect access to @pending
|
* @lock: protect access to @pending
|
||||||
* @wait: wait an atomic commit to finish
|
* @wait: wait an atomic commit to finish
|
||||||
|
@ -247,6 +247,15 @@ struct exynos_drm_gem *exynos_drm_gem_create(struct drm_device *dev,
|
|||||||
if (IS_ERR(exynos_gem))
|
if (IS_ERR(exynos_gem))
|
||||||
return exynos_gem;
|
return exynos_gem;
|
||||||
|
|
||||||
|
if (!is_drm_iommu_supported(dev) && (flags & EXYNOS_BO_NONCONTIG)) {
|
||||||
|
/*
|
||||||
|
* when no IOMMU is available, all allocated buffers are
|
||||||
|
* contiguous anyway, so drop EXYNOS_BO_NONCONTIG flag
|
||||||
|
*/
|
||||||
|
flags &= ~EXYNOS_BO_NONCONTIG;
|
||||||
|
DRM_WARN("Non-contiguous allocation is not supported without IOMMU, falling back to contiguous buffer\n");
|
||||||
|
}
|
||||||
|
|
||||||
/* set memory type and cache attribute from user side. */
|
/* set memory type and cache attribute from user side. */
|
||||||
exynos_gem->flags = flags;
|
exynos_gem->flags = flags;
|
||||||
|
|
||||||
@ -506,6 +515,12 @@ int exynos_drm_gem_mmap(struct file *filp, struct vm_area_struct *vma)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* low-level interface prime helpers */
|
/* low-level interface prime helpers */
|
||||||
|
struct drm_gem_object *exynos_drm_gem_prime_import(struct drm_device *dev,
|
||||||
|
struct dma_buf *dma_buf)
|
||||||
|
{
|
||||||
|
return drm_gem_prime_import_dev(dev, dma_buf, to_dma_dev(dev));
|
||||||
|
}
|
||||||
|
|
||||||
struct sg_table *exynos_drm_gem_prime_get_sg_table(struct drm_gem_object *obj)
|
struct sg_table *exynos_drm_gem_prime_get_sg_table(struct drm_gem_object *obj)
|
||||||
{
|
{
|
||||||
struct exynos_drm_gem *exynos_gem = to_exynos_gem(obj);
|
struct exynos_drm_gem *exynos_gem = to_exynos_gem(obj);
|
||||||
|
@ -117,6 +117,8 @@ int exynos_drm_gem_fault(struct vm_fault *vmf);
|
|||||||
int exynos_drm_gem_mmap(struct file *filp, struct vm_area_struct *vma);
|
int exynos_drm_gem_mmap(struct file *filp, struct vm_area_struct *vma);
|
||||||
|
|
||||||
/* low-level interface prime helpers */
|
/* low-level interface prime helpers */
|
||||||
|
struct drm_gem_object *exynos_drm_gem_prime_import(struct drm_device *dev,
|
||||||
|
struct dma_buf *dma_buf);
|
||||||
struct sg_table *exynos_drm_gem_prime_get_sg_table(struct drm_gem_object *obj);
|
struct sg_table *exynos_drm_gem_prime_get_sg_table(struct drm_gem_object *obj);
|
||||||
struct drm_gem_object *
|
struct drm_gem_object *
|
||||||
exynos_drm_gem_prime_import_sg_table(struct drm_device *dev,
|
exynos_drm_gem_prime_import_sg_table(struct drm_device *dev,
|
||||||
|
@ -208,6 +208,20 @@ static int emulate_pci_command_write(struct intel_vgpu *vgpu,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int emulate_pci_rom_bar_write(struct intel_vgpu *vgpu,
|
||||||
|
unsigned int offset, void *p_data, unsigned int bytes)
|
||||||
|
{
|
||||||
|
u32 *pval = (u32 *)(vgpu_cfg_space(vgpu) + offset);
|
||||||
|
u32 new = *(u32 *)(p_data);
|
||||||
|
|
||||||
|
if ((new & PCI_ROM_ADDRESS_MASK) == PCI_ROM_ADDRESS_MASK)
|
||||||
|
/* We don't have rom, return size of 0. */
|
||||||
|
*pval = 0;
|
||||||
|
else
|
||||||
|
vgpu_pci_cfg_mem_write(vgpu, offset, p_data, bytes);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int emulate_pci_bar_write(struct intel_vgpu *vgpu, unsigned int offset,
|
static int emulate_pci_bar_write(struct intel_vgpu *vgpu, unsigned int offset,
|
||||||
void *p_data, unsigned int bytes)
|
void *p_data, unsigned int bytes)
|
||||||
{
|
{
|
||||||
@ -300,6 +314,11 @@ int intel_vgpu_emulate_cfg_write(struct intel_vgpu *vgpu, unsigned int offset,
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch (rounddown(offset, 4)) {
|
switch (rounddown(offset, 4)) {
|
||||||
|
case PCI_ROM_ADDRESS:
|
||||||
|
if (WARN_ON(!IS_ALIGNED(offset, 4)))
|
||||||
|
return -EINVAL;
|
||||||
|
return emulate_pci_rom_bar_write(vgpu, offset, p_data, bytes);
|
||||||
|
|
||||||
case PCI_BASE_ADDRESS_0 ... PCI_BASE_ADDRESS_5:
|
case PCI_BASE_ADDRESS_0 ... PCI_BASE_ADDRESS_5:
|
||||||
if (WARN_ON(!IS_ALIGNED(offset, 4)))
|
if (WARN_ON(!IS_ALIGNED(offset, 4)))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
@ -375,6 +394,8 @@ void intel_vgpu_init_cfg_space(struct intel_vgpu *vgpu,
|
|||||||
pci_resource_len(gvt->dev_priv->drm.pdev, 0);
|
pci_resource_len(gvt->dev_priv->drm.pdev, 0);
|
||||||
vgpu->cfg_space.bar[INTEL_GVT_PCI_BAR_APERTURE].size =
|
vgpu->cfg_space.bar[INTEL_GVT_PCI_BAR_APERTURE].size =
|
||||||
pci_resource_len(gvt->dev_priv->drm.pdev, 2);
|
pci_resource_len(gvt->dev_priv->drm.pdev, 2);
|
||||||
|
|
||||||
|
memset(vgpu_cfg_space(vgpu) + PCI_ROM_ADDRESS, 0, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -137,17 +137,26 @@ static int new_mmio_info(struct intel_gvt *gvt,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int render_mmio_to_ring_id(struct intel_gvt *gvt, unsigned int reg)
|
/**
|
||||||
|
* intel_gvt_render_mmio_to_ring_id - convert a mmio offset into ring id
|
||||||
|
* @gvt: a GVT device
|
||||||
|
* @offset: register offset
|
||||||
|
*
|
||||||
|
* Returns:
|
||||||
|
* Ring ID on success, negative error code if failed.
|
||||||
|
*/
|
||||||
|
int intel_gvt_render_mmio_to_ring_id(struct intel_gvt *gvt,
|
||||||
|
unsigned int offset)
|
||||||
{
|
{
|
||||||
enum intel_engine_id id;
|
enum intel_engine_id id;
|
||||||
struct intel_engine_cs *engine;
|
struct intel_engine_cs *engine;
|
||||||
|
|
||||||
reg &= ~GENMASK(11, 0);
|
offset &= ~GENMASK(11, 0);
|
||||||
for_each_engine(engine, gvt->dev_priv, id) {
|
for_each_engine(engine, gvt->dev_priv, id) {
|
||||||
if (engine->mmio_base == reg)
|
if (engine->mmio_base == offset)
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
return -1;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define offset_to_fence_num(offset) \
|
#define offset_to_fence_num(offset) \
|
||||||
@ -1398,18 +1407,36 @@ static int skl_lcpll_write(struct intel_vgpu *vgpu, unsigned int offset,
|
|||||||
static int mmio_read_from_hw(struct intel_vgpu *vgpu,
|
static int mmio_read_from_hw(struct intel_vgpu *vgpu,
|
||||||
unsigned int offset, void *p_data, unsigned int bytes)
|
unsigned int offset, void *p_data, unsigned int bytes)
|
||||||
{
|
{
|
||||||
struct drm_i915_private *dev_priv = vgpu->gvt->dev_priv;
|
struct intel_gvt *gvt = vgpu->gvt;
|
||||||
|
struct drm_i915_private *dev_priv = gvt->dev_priv;
|
||||||
|
int ring_id;
|
||||||
|
u32 ring_base;
|
||||||
|
|
||||||
|
ring_id = intel_gvt_render_mmio_to_ring_id(gvt, offset);
|
||||||
|
/**
|
||||||
|
* Read HW reg in following case
|
||||||
|
* a. the offset isn't a ring mmio
|
||||||
|
* b. the offset's ring is running on hw.
|
||||||
|
* c. the offset is ring time stamp mmio
|
||||||
|
*/
|
||||||
|
if (ring_id >= 0)
|
||||||
|
ring_base = dev_priv->engine[ring_id]->mmio_base;
|
||||||
|
|
||||||
|
if (ring_id < 0 || vgpu == gvt->scheduler.engine_owner[ring_id] ||
|
||||||
|
offset == i915_mmio_reg_offset(RING_TIMESTAMP(ring_base)) ||
|
||||||
|
offset == i915_mmio_reg_offset(RING_TIMESTAMP_UDW(ring_base))) {
|
||||||
|
mmio_hw_access_pre(dev_priv);
|
||||||
|
vgpu_vreg(vgpu, offset) = I915_READ(_MMIO(offset));
|
||||||
|
mmio_hw_access_post(dev_priv);
|
||||||
|
}
|
||||||
|
|
||||||
mmio_hw_access_pre(dev_priv);
|
|
||||||
vgpu_vreg(vgpu, offset) = I915_READ(_MMIO(offset));
|
|
||||||
mmio_hw_access_post(dev_priv);
|
|
||||||
return intel_vgpu_default_mmio_read(vgpu, offset, p_data, bytes);
|
return intel_vgpu_default_mmio_read(vgpu, offset, p_data, bytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int elsp_mmio_write(struct intel_vgpu *vgpu, unsigned int offset,
|
static int elsp_mmio_write(struct intel_vgpu *vgpu, unsigned int offset,
|
||||||
void *p_data, unsigned int bytes)
|
void *p_data, unsigned int bytes)
|
||||||
{
|
{
|
||||||
int ring_id = render_mmio_to_ring_id(vgpu->gvt, offset);
|
int ring_id = intel_gvt_render_mmio_to_ring_id(vgpu->gvt, offset);
|
||||||
struct intel_vgpu_execlist *execlist;
|
struct intel_vgpu_execlist *execlist;
|
||||||
u32 data = *(u32 *)p_data;
|
u32 data = *(u32 *)p_data;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
@ -1436,7 +1463,7 @@ static int ring_mode_mmio_write(struct intel_vgpu *vgpu, unsigned int offset,
|
|||||||
void *p_data, unsigned int bytes)
|
void *p_data, unsigned int bytes)
|
||||||
{
|
{
|
||||||
u32 data = *(u32 *)p_data;
|
u32 data = *(u32 *)p_data;
|
||||||
int ring_id = render_mmio_to_ring_id(vgpu->gvt, offset);
|
int ring_id = intel_gvt_render_mmio_to_ring_id(vgpu->gvt, offset);
|
||||||
bool enable_execlist;
|
bool enable_execlist;
|
||||||
|
|
||||||
write_vreg(vgpu, offset, p_data, bytes);
|
write_vreg(vgpu, offset, p_data, bytes);
|
||||||
|
@ -65,6 +65,8 @@ struct intel_gvt_mmio_info {
|
|||||||
struct hlist_node node;
|
struct hlist_node node;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
int intel_gvt_render_mmio_to_ring_id(struct intel_gvt *gvt,
|
||||||
|
unsigned int reg);
|
||||||
unsigned long intel_gvt_get_device_type(struct intel_gvt *gvt);
|
unsigned long intel_gvt_get_device_type(struct intel_gvt *gvt);
|
||||||
bool intel_gvt_match_device(struct intel_gvt *gvt, unsigned long device);
|
bool intel_gvt_match_device(struct intel_gvt *gvt, unsigned long device);
|
||||||
|
|
||||||
|
@ -131,6 +131,20 @@ static inline bool is_gvt_request(struct drm_i915_gem_request *req)
|
|||||||
return i915_gem_context_force_single_submission(req->ctx);
|
return i915_gem_context_force_single_submission(req->ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void save_ring_hw_state(struct intel_vgpu *vgpu, int ring_id)
|
||||||
|
{
|
||||||
|
struct drm_i915_private *dev_priv = vgpu->gvt->dev_priv;
|
||||||
|
u32 ring_base = dev_priv->engine[ring_id]->mmio_base;
|
||||||
|
i915_reg_t reg;
|
||||||
|
|
||||||
|
reg = RING_INSTDONE(ring_base);
|
||||||
|
vgpu_vreg(vgpu, i915_mmio_reg_offset(reg)) = I915_READ_FW(reg);
|
||||||
|
reg = RING_ACTHD(ring_base);
|
||||||
|
vgpu_vreg(vgpu, i915_mmio_reg_offset(reg)) = I915_READ_FW(reg);
|
||||||
|
reg = RING_ACTHD_UDW(ring_base);
|
||||||
|
vgpu_vreg(vgpu, i915_mmio_reg_offset(reg)) = I915_READ_FW(reg);
|
||||||
|
}
|
||||||
|
|
||||||
static int shadow_context_status_change(struct notifier_block *nb,
|
static int shadow_context_status_change(struct notifier_block *nb,
|
||||||
unsigned long action, void *data)
|
unsigned long action, void *data)
|
||||||
{
|
{
|
||||||
@ -175,9 +189,12 @@ static int shadow_context_status_change(struct notifier_block *nb,
|
|||||||
atomic_set(&workload->shadow_ctx_active, 1);
|
atomic_set(&workload->shadow_ctx_active, 1);
|
||||||
break;
|
break;
|
||||||
case INTEL_CONTEXT_SCHEDULE_OUT:
|
case INTEL_CONTEXT_SCHEDULE_OUT:
|
||||||
case INTEL_CONTEXT_SCHEDULE_PREEMPTED:
|
save_ring_hw_state(workload->vgpu, ring_id);
|
||||||
atomic_set(&workload->shadow_ctx_active, 0);
|
atomic_set(&workload->shadow_ctx_active, 0);
|
||||||
break;
|
break;
|
||||||
|
case INTEL_CONTEXT_SCHEDULE_PREEMPTED:
|
||||||
|
save_ring_hw_state(workload->vgpu, ring_id);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
WARN_ON(1);
|
WARN_ON(1);
|
||||||
return NOTIFY_OK;
|
return NOTIFY_OK;
|
||||||
@ -740,6 +757,9 @@ int intel_vgpu_init_gvt_context(struct intel_vgpu *vgpu)
|
|||||||
if (IS_ERR(vgpu->shadow_ctx))
|
if (IS_ERR(vgpu->shadow_ctx))
|
||||||
return PTR_ERR(vgpu->shadow_ctx);
|
return PTR_ERR(vgpu->shadow_ctx);
|
||||||
|
|
||||||
|
if (INTEL_INFO(vgpu->gvt->dev_priv)->has_logical_ring_preemption)
|
||||||
|
vgpu->shadow_ctx->priority = INT_MAX;
|
||||||
|
|
||||||
vgpu->shadow_ctx->engine[RCS].initialised = true;
|
vgpu->shadow_ctx->engine[RCS].initialised = true;
|
||||||
|
|
||||||
bitmap_zero(vgpu->shadow_ctx_desc_updated, I915_NUM_ENGINES);
|
bitmap_zero(vgpu->shadow_ctx_desc_updated, I915_NUM_ENGINES);
|
||||||
|
@ -4712,17 +4712,19 @@ int i915_gem_suspend(struct drm_i915_private *dev_priv)
|
|||||||
* state. Fortunately, the kernel_context is disposable and we do
|
* state. Fortunately, the kernel_context is disposable and we do
|
||||||
* not rely on its state.
|
* not rely on its state.
|
||||||
*/
|
*/
|
||||||
ret = i915_gem_switch_to_kernel_context(dev_priv);
|
if (!i915_terminally_wedged(&dev_priv->gpu_error)) {
|
||||||
if (ret)
|
ret = i915_gem_switch_to_kernel_context(dev_priv);
|
||||||
goto err_unlock;
|
if (ret)
|
||||||
|
goto err_unlock;
|
||||||
|
|
||||||
ret = i915_gem_wait_for_idle(dev_priv,
|
ret = i915_gem_wait_for_idle(dev_priv,
|
||||||
I915_WAIT_INTERRUPTIBLE |
|
I915_WAIT_INTERRUPTIBLE |
|
||||||
I915_WAIT_LOCKED);
|
I915_WAIT_LOCKED);
|
||||||
if (ret && ret != -EIO)
|
if (ret && ret != -EIO)
|
||||||
goto err_unlock;
|
goto err_unlock;
|
||||||
|
|
||||||
assert_kernel_context_is_current(dev_priv);
|
assert_kernel_context_is_current(dev_priv);
|
||||||
|
}
|
||||||
i915_gem_contexts_lost(dev_priv);
|
i915_gem_contexts_lost(dev_priv);
|
||||||
mutex_unlock(&dev->struct_mutex);
|
mutex_unlock(&dev->struct_mutex);
|
||||||
|
|
||||||
@ -4946,8 +4948,6 @@ int i915_gem_init(struct drm_i915_private *dev_priv)
|
|||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
mutex_lock(&dev_priv->drm.struct_mutex);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We need to fallback to 4K pages since gvt gtt handling doesn't
|
* We need to fallback to 4K pages since gvt gtt handling doesn't
|
||||||
* support huge page entries - we will need to check either hypervisor
|
* support huge page entries - we will need to check either hypervisor
|
||||||
@ -4967,18 +4967,19 @@ int i915_gem_init(struct drm_i915_private *dev_priv)
|
|||||||
dev_priv->gt.cleanup_engine = intel_logical_ring_cleanup;
|
dev_priv->gt.cleanup_engine = intel_logical_ring_cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ret = i915_gem_init_userptr(dev_priv);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
/* This is just a security blanket to placate dragons.
|
/* This is just a security blanket to placate dragons.
|
||||||
* On some systems, we very sporadically observe that the first TLBs
|
* On some systems, we very sporadically observe that the first TLBs
|
||||||
* used by the CS may be stale, despite us poking the TLB reset. If
|
* used by the CS may be stale, despite us poking the TLB reset. If
|
||||||
* we hold the forcewake during initialisation these problems
|
* we hold the forcewake during initialisation these problems
|
||||||
* just magically go away.
|
* just magically go away.
|
||||||
*/
|
*/
|
||||||
|
mutex_lock(&dev_priv->drm.struct_mutex);
|
||||||
intel_uncore_forcewake_get(dev_priv, FORCEWAKE_ALL);
|
intel_uncore_forcewake_get(dev_priv, FORCEWAKE_ALL);
|
||||||
|
|
||||||
ret = i915_gem_init_userptr(dev_priv);
|
|
||||||
if (ret)
|
|
||||||
goto out_unlock;
|
|
||||||
|
|
||||||
ret = i915_gem_init_ggtt(dev_priv);
|
ret = i915_gem_init_ggtt(dev_priv);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto out_unlock;
|
goto out_unlock;
|
||||||
|
@ -2951,9 +2951,6 @@ enum i915_power_well_id {
|
|||||||
#define ILK_DPFC_CHICKEN _MMIO(0x43224)
|
#define ILK_DPFC_CHICKEN _MMIO(0x43224)
|
||||||
#define ILK_DPFC_DISABLE_DUMMY0 (1<<8)
|
#define ILK_DPFC_DISABLE_DUMMY0 (1<<8)
|
||||||
#define ILK_DPFC_NUKE_ON_ANY_MODIFICATION (1<<23)
|
#define ILK_DPFC_NUKE_ON_ANY_MODIFICATION (1<<23)
|
||||||
#define GLK_SKIP_SEG_EN (1<<12)
|
|
||||||
#define GLK_SKIP_SEG_COUNT_MASK (3<<10)
|
|
||||||
#define GLK_SKIP_SEG_COUNT(x) ((x)<<10)
|
|
||||||
#define ILK_FBC_RT_BASE _MMIO(0x2128)
|
#define ILK_FBC_RT_BASE _MMIO(0x2128)
|
||||||
#define ILK_FBC_RT_VALID (1<<0)
|
#define ILK_FBC_RT_VALID (1<<0)
|
||||||
#define SNB_FBC_FRONT_BUFFER (1<<1)
|
#define SNB_FBC_FRONT_BUFFER (1<<1)
|
||||||
|
@ -2131,6 +2131,7 @@ static void intel_ddi_clk_select(struct intel_encoder *encoder,
|
|||||||
if (IS_CANNONLAKE(dev_priv)) {
|
if (IS_CANNONLAKE(dev_priv)) {
|
||||||
/* Configure DPCLKA_CFGCR0 to map the DPLL to the DDI. */
|
/* Configure DPCLKA_CFGCR0 to map the DPLL to the DDI. */
|
||||||
val = I915_READ(DPCLKA_CFGCR0);
|
val = I915_READ(DPCLKA_CFGCR0);
|
||||||
|
val &= ~DPCLKA_CFGCR0_DDI_CLK_SEL_MASK(port);
|
||||||
val |= DPCLKA_CFGCR0_DDI_CLK_SEL(pll->id, port);
|
val |= DPCLKA_CFGCR0_DDI_CLK_SEL(pll->id, port);
|
||||||
I915_WRITE(DPCLKA_CFGCR0, val);
|
I915_WRITE(DPCLKA_CFGCR0, val);
|
||||||
|
|
||||||
|
@ -1000,7 +1000,8 @@ enum transcoder intel_pipe_to_cpu_transcoder(struct drm_i915_private *dev_priv,
|
|||||||
return crtc->config->cpu_transcoder;
|
return crtc->config->cpu_transcoder;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool pipe_dsl_stopped(struct drm_i915_private *dev_priv, enum pipe pipe)
|
static bool pipe_scanline_is_moving(struct drm_i915_private *dev_priv,
|
||||||
|
enum pipe pipe)
|
||||||
{
|
{
|
||||||
i915_reg_t reg = PIPEDSL(pipe);
|
i915_reg_t reg = PIPEDSL(pipe);
|
||||||
u32 line1, line2;
|
u32 line1, line2;
|
||||||
@ -1015,7 +1016,28 @@ static bool pipe_dsl_stopped(struct drm_i915_private *dev_priv, enum pipe pipe)
|
|||||||
msleep(5);
|
msleep(5);
|
||||||
line2 = I915_READ(reg) & line_mask;
|
line2 = I915_READ(reg) & line_mask;
|
||||||
|
|
||||||
return line1 == line2;
|
return line1 != line2;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void wait_for_pipe_scanline_moving(struct intel_crtc *crtc, bool state)
|
||||||
|
{
|
||||||
|
struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
|
||||||
|
enum pipe pipe = crtc->pipe;
|
||||||
|
|
||||||
|
/* Wait for the display line to settle/start moving */
|
||||||
|
if (wait_for(pipe_scanline_is_moving(dev_priv, pipe) == state, 100))
|
||||||
|
DRM_ERROR("pipe %c scanline %s wait timed out\n",
|
||||||
|
pipe_name(pipe), onoff(state));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void intel_wait_for_pipe_scanline_stopped(struct intel_crtc *crtc)
|
||||||
|
{
|
||||||
|
wait_for_pipe_scanline_moving(crtc, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void intel_wait_for_pipe_scanline_moving(struct intel_crtc *crtc)
|
||||||
|
{
|
||||||
|
wait_for_pipe_scanline_moving(crtc, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1038,7 +1060,6 @@ static void intel_wait_for_pipe_off(struct intel_crtc *crtc)
|
|||||||
{
|
{
|
||||||
struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
|
struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
|
||||||
enum transcoder cpu_transcoder = crtc->config->cpu_transcoder;
|
enum transcoder cpu_transcoder = crtc->config->cpu_transcoder;
|
||||||
enum pipe pipe = crtc->pipe;
|
|
||||||
|
|
||||||
if (INTEL_GEN(dev_priv) >= 4) {
|
if (INTEL_GEN(dev_priv) >= 4) {
|
||||||
i915_reg_t reg = PIPECONF(cpu_transcoder);
|
i915_reg_t reg = PIPECONF(cpu_transcoder);
|
||||||
@ -1049,9 +1070,7 @@ static void intel_wait_for_pipe_off(struct intel_crtc *crtc)
|
|||||||
100))
|
100))
|
||||||
WARN(1, "pipe_off wait timed out\n");
|
WARN(1, "pipe_off wait timed out\n");
|
||||||
} else {
|
} else {
|
||||||
/* Wait for the display line to settle */
|
intel_wait_for_pipe_scanline_stopped(crtc);
|
||||||
if (wait_for(pipe_dsl_stopped(dev_priv, pipe), 100))
|
|
||||||
WARN(1, "pipe_off wait timed out\n");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1936,15 +1955,14 @@ static void intel_enable_pipe(struct intel_crtc *crtc)
|
|||||||
POSTING_READ(reg);
|
POSTING_READ(reg);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Until the pipe starts DSL will read as 0, which would cause
|
* Until the pipe starts PIPEDSL reads will return a stale value,
|
||||||
* an apparent vblank timestamp jump, which messes up also the
|
* which causes an apparent vblank timestamp jump when PIPEDSL
|
||||||
* frame count when it's derived from the timestamps. So let's
|
* resets to its proper value. That also messes up the frame count
|
||||||
* wait for the pipe to start properly before we call
|
* when it's derived from the timestamps. So let's wait for the
|
||||||
* drm_crtc_vblank_on()
|
* pipe to start properly before we call drm_crtc_vblank_on()
|
||||||
*/
|
*/
|
||||||
if (dev->max_vblank_count == 0 &&
|
if (dev->max_vblank_count == 0)
|
||||||
wait_for(intel_get_crtc_scanline(crtc) != crtc->scanline_offset, 50))
|
intel_wait_for_pipe_scanline_moving(crtc);
|
||||||
DRM_ERROR("pipe %c didn't start\n", pipe_name(pipe));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -14643,6 +14661,8 @@ void i830_enable_pipe(struct drm_i915_private *dev_priv, enum pipe pipe)
|
|||||||
|
|
||||||
void i830_disable_pipe(struct drm_i915_private *dev_priv, enum pipe pipe)
|
void i830_disable_pipe(struct drm_i915_private *dev_priv, enum pipe pipe)
|
||||||
{
|
{
|
||||||
|
struct intel_crtc *crtc = intel_get_crtc_for_pipe(dev_priv, pipe);
|
||||||
|
|
||||||
DRM_DEBUG_KMS("disabling pipe %c due to force quirk\n",
|
DRM_DEBUG_KMS("disabling pipe %c due to force quirk\n",
|
||||||
pipe_name(pipe));
|
pipe_name(pipe));
|
||||||
|
|
||||||
@ -14652,8 +14672,7 @@ void i830_disable_pipe(struct drm_i915_private *dev_priv, enum pipe pipe)
|
|||||||
I915_WRITE(PIPECONF(pipe), 0);
|
I915_WRITE(PIPECONF(pipe), 0);
|
||||||
POSTING_READ(PIPECONF(pipe));
|
POSTING_READ(PIPECONF(pipe));
|
||||||
|
|
||||||
if (wait_for(pipe_dsl_stopped(dev_priv, pipe), 100))
|
intel_wait_for_pipe_scanline_stopped(crtc);
|
||||||
DRM_ERROR("pipe %c off wait timed out\n", pipe_name(pipe));
|
|
||||||
|
|
||||||
I915_WRITE(DPLL(pipe), DPLL_VGA_MODE_DIS);
|
I915_WRITE(DPLL(pipe), DPLL_VGA_MODE_DIS);
|
||||||
POSTING_READ(DPLL(pipe));
|
POSTING_READ(DPLL(pipe));
|
||||||
|
@ -124,7 +124,6 @@ static void bxt_init_clock_gating(struct drm_i915_private *dev_priv)
|
|||||||
|
|
||||||
static void glk_init_clock_gating(struct drm_i915_private *dev_priv)
|
static void glk_init_clock_gating(struct drm_i915_private *dev_priv)
|
||||||
{
|
{
|
||||||
u32 val;
|
|
||||||
gen9_init_clock_gating(dev_priv);
|
gen9_init_clock_gating(dev_priv);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -144,11 +143,6 @@ static void glk_init_clock_gating(struct drm_i915_private *dev_priv)
|
|||||||
I915_WRITE(CHICKEN_MISC_2, val);
|
I915_WRITE(CHICKEN_MISC_2, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Display WA #1133: WaFbcSkipSegments:glk */
|
|
||||||
val = I915_READ(ILK_DPFC_CHICKEN);
|
|
||||||
val &= ~GLK_SKIP_SEG_COUNT_MASK;
|
|
||||||
val |= GLK_SKIP_SEG_EN | GLK_SKIP_SEG_COUNT(1);
|
|
||||||
I915_WRITE(ILK_DPFC_CHICKEN, val);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void i915_pineview_get_mem_freq(struct drm_i915_private *dev_priv)
|
static void i915_pineview_get_mem_freq(struct drm_i915_private *dev_priv)
|
||||||
@ -8517,7 +8511,6 @@ static void cnp_init_clock_gating(struct drm_i915_private *dev_priv)
|
|||||||
|
|
||||||
static void cnl_init_clock_gating(struct drm_i915_private *dev_priv)
|
static void cnl_init_clock_gating(struct drm_i915_private *dev_priv)
|
||||||
{
|
{
|
||||||
u32 val;
|
|
||||||
cnp_init_clock_gating(dev_priv);
|
cnp_init_clock_gating(dev_priv);
|
||||||
|
|
||||||
/* This is not an Wa. Enable for better image quality */
|
/* This is not an Wa. Enable for better image quality */
|
||||||
@ -8537,12 +8530,6 @@ static void cnl_init_clock_gating(struct drm_i915_private *dev_priv)
|
|||||||
I915_WRITE(SLICE_UNIT_LEVEL_CLKGATE,
|
I915_WRITE(SLICE_UNIT_LEVEL_CLKGATE,
|
||||||
I915_READ(SLICE_UNIT_LEVEL_CLKGATE) |
|
I915_READ(SLICE_UNIT_LEVEL_CLKGATE) |
|
||||||
SARBUNIT_CLKGATE_DIS);
|
SARBUNIT_CLKGATE_DIS);
|
||||||
|
|
||||||
/* Display WA #1133: WaFbcSkipSegments:cnl */
|
|
||||||
val = I915_READ(ILK_DPFC_CHICKEN);
|
|
||||||
val &= ~GLK_SKIP_SEG_COUNT_MASK;
|
|
||||||
val |= GLK_SKIP_SEG_EN | GLK_SKIP_SEG_COUNT(1);
|
|
||||||
I915_WRITE(ILK_DPFC_CHICKEN, val);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void cfl_init_clock_gating(struct drm_i915_private *dev_priv)
|
static void cfl_init_clock_gating(struct drm_i915_private *dev_priv)
|
||||||
|
@ -81,6 +81,7 @@ struct ttm_page_pool {
|
|||||||
char *name;
|
char *name;
|
||||||
unsigned long nfrees;
|
unsigned long nfrees;
|
||||||
unsigned long nrefills;
|
unsigned long nrefills;
|
||||||
|
unsigned int order;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -222,6 +223,17 @@ static struct kobj_type ttm_pool_kobj_type = {
|
|||||||
static struct ttm_pool_manager *_manager;
|
static struct ttm_pool_manager *_manager;
|
||||||
|
|
||||||
#ifndef CONFIG_X86
|
#ifndef CONFIG_X86
|
||||||
|
static int set_pages_wb(struct page *page, int numpages)
|
||||||
|
{
|
||||||
|
#if IS_ENABLED(CONFIG_AGP)
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < numpages; i++)
|
||||||
|
unmap_page_from_agp(page++);
|
||||||
|
#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int set_pages_array_wb(struct page **pages, int addrinarray)
|
static int set_pages_array_wb(struct page **pages, int addrinarray)
|
||||||
{
|
{
|
||||||
#if IS_ENABLED(CONFIG_AGP)
|
#if IS_ENABLED(CONFIG_AGP)
|
||||||
@ -284,13 +296,23 @@ static struct ttm_page_pool *ttm_get_pool(int flags, bool huge,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* set memory back to wb and free the pages. */
|
/* set memory back to wb and free the pages. */
|
||||||
static void ttm_pages_put(struct page *pages[], unsigned npages)
|
static void ttm_pages_put(struct page *pages[], unsigned npages,
|
||||||
|
unsigned int order)
|
||||||
{
|
{
|
||||||
unsigned i;
|
unsigned int i, pages_nr = (1 << order);
|
||||||
if (set_pages_array_wb(pages, npages))
|
|
||||||
pr_err("Failed to set %d pages to wb!\n", npages);
|
if (order == 0) {
|
||||||
for (i = 0; i < npages; ++i)
|
if (set_pages_array_wb(pages, npages))
|
||||||
__free_page(pages[i]);
|
pr_err("Failed to set %d pages to wb!\n", npages);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < npages; ++i) {
|
||||||
|
if (order > 0) {
|
||||||
|
if (set_pages_wb(pages[i], pages_nr))
|
||||||
|
pr_err("Failed to set %d pages to wb!\n", pages_nr);
|
||||||
|
}
|
||||||
|
__free_pages(pages[i], order);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ttm_pool_update_free_locked(struct ttm_page_pool *pool,
|
static void ttm_pool_update_free_locked(struct ttm_page_pool *pool,
|
||||||
@ -353,7 +375,7 @@ restart:
|
|||||||
*/
|
*/
|
||||||
spin_unlock_irqrestore(&pool->lock, irq_flags);
|
spin_unlock_irqrestore(&pool->lock, irq_flags);
|
||||||
|
|
||||||
ttm_pages_put(pages_to_free, freed_pages);
|
ttm_pages_put(pages_to_free, freed_pages, pool->order);
|
||||||
if (likely(nr_free != FREE_ALL_PAGES))
|
if (likely(nr_free != FREE_ALL_PAGES))
|
||||||
nr_free -= freed_pages;
|
nr_free -= freed_pages;
|
||||||
|
|
||||||
@ -388,7 +410,7 @@ restart:
|
|||||||
spin_unlock_irqrestore(&pool->lock, irq_flags);
|
spin_unlock_irqrestore(&pool->lock, irq_flags);
|
||||||
|
|
||||||
if (freed_pages)
|
if (freed_pages)
|
||||||
ttm_pages_put(pages_to_free, freed_pages);
|
ttm_pages_put(pages_to_free, freed_pages, pool->order);
|
||||||
out:
|
out:
|
||||||
if (pages_to_free != static_buf)
|
if (pages_to_free != static_buf)
|
||||||
kfree(pages_to_free);
|
kfree(pages_to_free);
|
||||||
@ -412,6 +434,7 @@ ttm_pool_shrink_scan(struct shrinker *shrink, struct shrink_control *sc)
|
|||||||
struct ttm_page_pool *pool;
|
struct ttm_page_pool *pool;
|
||||||
int shrink_pages = sc->nr_to_scan;
|
int shrink_pages = sc->nr_to_scan;
|
||||||
unsigned long freed = 0;
|
unsigned long freed = 0;
|
||||||
|
unsigned int nr_free_pool;
|
||||||
|
|
||||||
if (!mutex_trylock(&lock))
|
if (!mutex_trylock(&lock))
|
||||||
return SHRINK_STOP;
|
return SHRINK_STOP;
|
||||||
@ -419,12 +442,19 @@ ttm_pool_shrink_scan(struct shrinker *shrink, struct shrink_control *sc)
|
|||||||
/* select start pool in round robin fashion */
|
/* select start pool in round robin fashion */
|
||||||
for (i = 0; i < NUM_POOLS; ++i) {
|
for (i = 0; i < NUM_POOLS; ++i) {
|
||||||
unsigned nr_free = shrink_pages;
|
unsigned nr_free = shrink_pages;
|
||||||
|
unsigned page_nr;
|
||||||
|
|
||||||
if (shrink_pages == 0)
|
if (shrink_pages == 0)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
pool = &_manager->pools[(i + pool_offset)%NUM_POOLS];
|
pool = &_manager->pools[(i + pool_offset)%NUM_POOLS];
|
||||||
|
page_nr = (1 << pool->order);
|
||||||
/* OK to use static buffer since global mutex is held. */
|
/* OK to use static buffer since global mutex is held. */
|
||||||
shrink_pages = ttm_page_pool_free(pool, nr_free, true);
|
nr_free_pool = roundup(nr_free, page_nr) >> pool->order;
|
||||||
freed += nr_free - shrink_pages;
|
shrink_pages = ttm_page_pool_free(pool, nr_free_pool, true);
|
||||||
|
freed += (nr_free_pool - shrink_pages) << pool->order;
|
||||||
|
if (freed >= sc->nr_to_scan)
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
mutex_unlock(&lock);
|
mutex_unlock(&lock);
|
||||||
return freed;
|
return freed;
|
||||||
@ -436,9 +466,12 @@ ttm_pool_shrink_count(struct shrinker *shrink, struct shrink_control *sc)
|
|||||||
{
|
{
|
||||||
unsigned i;
|
unsigned i;
|
||||||
unsigned long count = 0;
|
unsigned long count = 0;
|
||||||
|
struct ttm_page_pool *pool;
|
||||||
|
|
||||||
for (i = 0; i < NUM_POOLS; ++i)
|
for (i = 0; i < NUM_POOLS; ++i) {
|
||||||
count += _manager->pools[i].npages;
|
pool = &_manager->pools[i];
|
||||||
|
count += (pool->npages << pool->order);
|
||||||
|
}
|
||||||
|
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
@ -510,8 +543,7 @@ static int ttm_alloc_new_pages(struct list_head *pages, gfp_t gfp_flags,
|
|||||||
int r = 0;
|
int r = 0;
|
||||||
unsigned i, j, cpages;
|
unsigned i, j, cpages;
|
||||||
unsigned npages = 1 << order;
|
unsigned npages = 1 << order;
|
||||||
unsigned max_cpages = min(count,
|
unsigned max_cpages = min(count, (unsigned)NUM_PAGES_TO_ALLOC);
|
||||||
(unsigned)(PAGE_SIZE/sizeof(struct page *)));
|
|
||||||
|
|
||||||
/* allocate array for page caching change */
|
/* allocate array for page caching change */
|
||||||
caching_array = kmalloc(max_cpages*sizeof(struct page *), GFP_KERNEL);
|
caching_array = kmalloc(max_cpages*sizeof(struct page *), GFP_KERNEL);
|
||||||
@ -845,7 +877,7 @@ static int ttm_get_pages(struct page **pages, unsigned npages, int flags,
|
|||||||
#endif
|
#endif
|
||||||
struct list_head plist;
|
struct list_head plist;
|
||||||
struct page *p = NULL;
|
struct page *p = NULL;
|
||||||
unsigned count;
|
unsigned count, first;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
/* No pool for cached pages */
|
/* No pool for cached pages */
|
||||||
@ -886,6 +918,7 @@ static int ttm_get_pages(struct page **pages, unsigned npages, int flags,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
first = i;
|
||||||
while (npages) {
|
while (npages) {
|
||||||
p = alloc_page(gfp_flags);
|
p = alloc_page(gfp_flags);
|
||||||
if (!p) {
|
if (!p) {
|
||||||
@ -893,6 +926,10 @@ static int ttm_get_pages(struct page **pages, unsigned npages, int flags,
|
|||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Swap the pages if we detect consecutive order */
|
||||||
|
if (i > first && pages[i - 1] == p - 1)
|
||||||
|
swap(p, pages[i - 1]);
|
||||||
|
|
||||||
pages[i++] = p;
|
pages[i++] = p;
|
||||||
--npages;
|
--npages;
|
||||||
}
|
}
|
||||||
@ -921,8 +958,15 @@ static int ttm_get_pages(struct page **pages, unsigned npages, int flags,
|
|||||||
r = ttm_page_pool_get_pages(pool, &plist, flags, cstate,
|
r = ttm_page_pool_get_pages(pool, &plist, flags, cstate,
|
||||||
npages - count, 0);
|
npages - count, 0);
|
||||||
|
|
||||||
list_for_each_entry(p, &plist, lru)
|
first = count;
|
||||||
pages[count++] = p;
|
list_for_each_entry(p, &plist, lru) {
|
||||||
|
struct page *tmp = p;
|
||||||
|
|
||||||
|
/* Swap the pages if we detect consecutive order */
|
||||||
|
if (count > first && pages[count - 1] == tmp - 1)
|
||||||
|
swap(tmp, pages[count - 1]);
|
||||||
|
pages[count++] = tmp;
|
||||||
|
}
|
||||||
|
|
||||||
if (r) {
|
if (r) {
|
||||||
/* If there is any pages in the list put them back to
|
/* If there is any pages in the list put them back to
|
||||||
@ -937,7 +981,7 @@ static int ttm_get_pages(struct page **pages, unsigned npages, int flags,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void ttm_page_pool_init_locked(struct ttm_page_pool *pool, gfp_t flags,
|
static void ttm_page_pool_init_locked(struct ttm_page_pool *pool, gfp_t flags,
|
||||||
char *name)
|
char *name, unsigned int order)
|
||||||
{
|
{
|
||||||
spin_lock_init(&pool->lock);
|
spin_lock_init(&pool->lock);
|
||||||
pool->fill_lock = false;
|
pool->fill_lock = false;
|
||||||
@ -945,11 +989,17 @@ static void ttm_page_pool_init_locked(struct ttm_page_pool *pool, gfp_t flags,
|
|||||||
pool->npages = pool->nfrees = 0;
|
pool->npages = pool->nfrees = 0;
|
||||||
pool->gfp_flags = flags;
|
pool->gfp_flags = flags;
|
||||||
pool->name = name;
|
pool->name = name;
|
||||||
|
pool->order = order;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ttm_page_alloc_init(struct ttm_mem_global *glob, unsigned max_pages)
|
int ttm_page_alloc_init(struct ttm_mem_global *glob, unsigned max_pages)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
#ifdef CONFIG_TRANSPARENT_HUGEPAGE
|
||||||
|
unsigned order = HPAGE_PMD_ORDER;
|
||||||
|
#else
|
||||||
|
unsigned order = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
WARN_ON(_manager);
|
WARN_ON(_manager);
|
||||||
|
|
||||||
@ -957,23 +1007,23 @@ int ttm_page_alloc_init(struct ttm_mem_global *glob, unsigned max_pages)
|
|||||||
|
|
||||||
_manager = kzalloc(sizeof(*_manager), GFP_KERNEL);
|
_manager = kzalloc(sizeof(*_manager), GFP_KERNEL);
|
||||||
|
|
||||||
ttm_page_pool_init_locked(&_manager->wc_pool, GFP_HIGHUSER, "wc");
|
ttm_page_pool_init_locked(&_manager->wc_pool, GFP_HIGHUSER, "wc", 0);
|
||||||
|
|
||||||
ttm_page_pool_init_locked(&_manager->uc_pool, GFP_HIGHUSER, "uc");
|
ttm_page_pool_init_locked(&_manager->uc_pool, GFP_HIGHUSER, "uc", 0);
|
||||||
|
|
||||||
ttm_page_pool_init_locked(&_manager->wc_pool_dma32,
|
ttm_page_pool_init_locked(&_manager->wc_pool_dma32,
|
||||||
GFP_USER | GFP_DMA32, "wc dma");
|
GFP_USER | GFP_DMA32, "wc dma", 0);
|
||||||
|
|
||||||
ttm_page_pool_init_locked(&_manager->uc_pool_dma32,
|
ttm_page_pool_init_locked(&_manager->uc_pool_dma32,
|
||||||
GFP_USER | GFP_DMA32, "uc dma");
|
GFP_USER | GFP_DMA32, "uc dma", 0);
|
||||||
|
|
||||||
ttm_page_pool_init_locked(&_manager->wc_pool_huge,
|
ttm_page_pool_init_locked(&_manager->wc_pool_huge,
|
||||||
GFP_TRANSHUGE & ~(__GFP_MOVABLE | __GFP_COMP),
|
GFP_TRANSHUGE & ~(__GFP_MOVABLE | __GFP_COMP),
|
||||||
"wc huge");
|
"wc huge", order);
|
||||||
|
|
||||||
ttm_page_pool_init_locked(&_manager->uc_pool_huge,
|
ttm_page_pool_init_locked(&_manager->uc_pool_huge,
|
||||||
GFP_TRANSHUGE & ~(__GFP_MOVABLE | __GFP_COMP)
|
GFP_TRANSHUGE & ~(__GFP_MOVABLE | __GFP_COMP)
|
||||||
, "uc huge");
|
, "uc huge", order);
|
||||||
|
|
||||||
_manager->options.max_size = max_pages;
|
_manager->options.max_size = max_pages;
|
||||||
_manager->options.small = SMALL_ALLOCATION;
|
_manager->options.small = SMALL_ALLOCATION;
|
||||||
|
@ -637,7 +637,8 @@ int vc4_bo_inc_usecnt(struct vc4_bo *bo)
|
|||||||
mutex_lock(&bo->madv_lock);
|
mutex_lock(&bo->madv_lock);
|
||||||
switch (bo->madv) {
|
switch (bo->madv) {
|
||||||
case VC4_MADV_WILLNEED:
|
case VC4_MADV_WILLNEED:
|
||||||
refcount_inc(&bo->usecnt);
|
if (!refcount_inc_not_zero(&bo->usecnt))
|
||||||
|
refcount_set(&bo->usecnt, 1);
|
||||||
ret = 0;
|
ret = 0;
|
||||||
break;
|
break;
|
||||||
case VC4_MADV_DONTNEED:
|
case VC4_MADV_DONTNEED:
|
||||||
|
@ -916,6 +916,14 @@ struct drm_connector {
|
|||||||
uint8_t num_h_tile, num_v_tile;
|
uint8_t num_h_tile, num_v_tile;
|
||||||
uint8_t tile_h_loc, tile_v_loc;
|
uint8_t tile_h_loc, tile_v_loc;
|
||||||
uint16_t tile_h_size, tile_v_size;
|
uint16_t tile_h_size, tile_v_size;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @free_work:
|
||||||
|
*
|
||||||
|
* Work used only by &drm_connector_iter to be able to clean up a
|
||||||
|
* connector from any context.
|
||||||
|
*/
|
||||||
|
struct work_struct free_work;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define obj_to_connector(x) container_of(x, struct drm_connector, base)
|
#define obj_to_connector(x) container_of(x, struct drm_connector, base)
|
||||||
|
Loading…
Reference in New Issue
Block a user