From b693dacc8b1400130bb36c6424f37b4a2de7d8b7 Mon Sep 17 00:00:00 2001 From: Rodrigo Vivi Date: Fri, 5 Jun 2015 13:50:28 -0700 Subject: [PATCH 1/5] linux-firmware: Add i915 DMC firmware DMC provides additional graphics low-power idle states. It provides capability to save and restore display registers across these low-power states independently from the OS/Kernel. This is the first release of DMC firmware for Skylake platforms. skl_dmc_ver1.bin is a symbolik link to latest recommended minor release. This major version will be just upgraded on code when it is required software changes for API/ABI compatibility. Signed-off-by: Rodrigo Vivi --- LICENSE.i915 | 39 +++++++++++++++++++++++++++++++++++++++ WHENCE | 11 +++++++++++ i915/skl_dmc_ver1.bin | 1 + i915/skl_dmc_ver1_04.bin | Bin 0 -> 8048 bytes 4 files changed, 51 insertions(+) create mode 100644 LICENSE.i915 create mode 120000 i915/skl_dmc_ver1.bin create mode 100644 i915/skl_dmc_ver1_04.bin diff --git a/LICENSE.i915 b/LICENSE.i915 new file mode 100644 index 00000000..2492b8d8 --- /dev/null +++ b/LICENSE.i915 @@ -0,0 +1,39 @@ +Copyright (c) 2015, Intel Corporation. +All rights reserved. + +Redistribution. Redistribution and use in binary form, without +modification, are permitted provided that the following conditions are +met: + +* Redistributions must reproduce the above copyright notice and the + following disclaimer in the documentation and/or other materials + provided with the distribution. +* Neither the name of Intel Corporation nor the names of its suppliers + may be used to endorse or promote products derived from this software + without specific prior written permission. +* No reverse engineering, decompilation, or disassembly of this software + is permitted. + +Limited patent license. Intel Corporation grants a world-wide, +royalty-free, non-exclusive license under patents it now or hereafter +owns or controls to make, have made, use, import, offer to sell and +sell ("Utilize") this software, but solely to the extent that any +such patent is necessary to Utilize the software alone, or in +combination with an operating system licensed under an approved Open +Source license as listed by the Open Source Initiative at +http://opensource.org/licenses. The patent license shall not apply to +any other combinations which include this software. No hardware per +se is licensed hereunder. + +DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR +TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. diff --git a/WHENCE b/WHENCE index 312bc882..18a6b277 100644 --- a/WHENCE +++ b/WHENCE @@ -2756,3 +2756,14 @@ File: nvidia/tegra210/xusb.bin Version: v50.07 Licence: Redistributable. See LICENCE.nvidia for details + +-------------------------------------------------------------------------- + +Driver: i915 -- Intel Integrated Graphics driver + +File: i915/skl_dmc_ver1_04.bin + +File: i915/skl_dmc_ver1.bin +Version: DMC API/ABI ver 1 - release 04 for Skylake + +License: Redistributable. See LICENSE.i915 for details diff --git a/i915/skl_dmc_ver1.bin b/i915/skl_dmc_ver1.bin new file mode 120000 index 00000000..c136e274 --- /dev/null +++ b/i915/skl_dmc_ver1.bin @@ -0,0 +1 @@ +skl_dmc_ver1_04.bin \ No newline at end of file diff --git a/i915/skl_dmc_ver1_04.bin b/i915/skl_dmc_ver1_04.bin new file mode 100644 index 0000000000000000000000000000000000000000..3638187fc04f5de499427817a794efcdd13a90ce GIT binary patch literal 8048 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 lwsF4ZGqo7;`>?SWtBPP$@BmK literal 0 HcmV?d00001 From 4e27950458a725dca200516431e8e711a4f63fa8 Mon Sep 17 00:00:00 2001 From: Rodrigo Vivi Date: Fri, 5 Jun 2015 14:01:25 -0700 Subject: [PATCH 2/5] linux-firmware: Add i915 GuC firmware GuC is designed to perform graphics workload scheduling on the various graphics parallel engines. In this scheduling model, host software submits work through one of the 256 graphics doorbells and this invokes the scheduling operation on the appropriate graphics engine. Scheduling operations include determining which workload to run next, submitting a workload to a command streamer, pre-empting existing workloads running on an engine, monitoring progress and notifying host SW when work is done. This is the first release of GuC firmware for Skylake platforms. skl_guc_ver1.bin is a symbolik link to latest recommended minor release. This major version will be just upgraded on code when it is required software changes for API/ABI compatibility. Signed-off-by: Rodrigo Vivi --- WHENCE | 5 +++++ i915/skl_guc_ver1.bin | 1 + i915/skl_guc_ver1_1059.bin | Bin 0 -> 109636 bytes 3 files changed, 6 insertions(+) create mode 120000 i915/skl_guc_ver1.bin create mode 100644 i915/skl_guc_ver1_1059.bin diff --git a/WHENCE b/WHENCE index 18a6b277..9f5663d7 100644 --- a/WHENCE +++ b/WHENCE @@ -2766,4 +2766,9 @@ File: i915/skl_dmc_ver1_04.bin File: i915/skl_dmc_ver1.bin Version: DMC API/ABI ver 1 - release 04 for Skylake +File: i915/skl_guc_ver1_1059.bin + +File: i915/skl_guc_ver1.bin +Version: Guc API/ABI ver 1 - release 1059 for Skylake + License: Redistributable. See LICENSE.i915 for details diff --git a/i915/skl_guc_ver1.bin b/i915/skl_guc_ver1.bin new file mode 120000 index 00000000..4b379aec --- /dev/null +++ b/i915/skl_guc_ver1.bin @@ -0,0 +1 @@ +skl_guc_ver1_1059.bin \ No newline at end of file diff --git a/i915/skl_guc_ver1_1059.bin b/i915/skl_guc_ver1_1059.bin new file mode 100644 index 0000000000000000000000000000000000000000..1b1ab15b5e0bf7f70b72483d0a21538a11b4d705 GIT binary patch literal 109636 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⋓-O~~48j7fa|m6=(9N3C_%sP&4E9?{<4Du- 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 R!xHX#sOZlRfrN$r`(J(psQUl_ literal 0 HcmV?d00001 From d8d7887047db07e687da221f27661b413f0612ba Mon Sep 17 00:00:00 2001 From: Rodrigo Vivi Date: Fri, 5 Jun 2015 14:04:41 -0700 Subject: [PATCH 3/5] linux-firmware: Add i915 DMC firmware for Broxton DMC provides additional graphics low-power idle states. It provides capability to save and restore display registers across these low-power states independently from the OS/Kernel. This is the first release of DMC firmware for Broxton platforms. bxt_dmc_ver1.bin is a symbolik link to latest recommended minor release. This major version will be just upgraded on code when it is required software changes for API/ABI compatibility. Signed-off-by: Rodrigo Vivi --- WHENCE | 5 +++++ i915/bxt_dmc_ver1.bin | 1 + i915/bxt_dmc_ver1_04.bin | Bin 0 -> 5872 bytes 3 files changed, 6 insertions(+) create mode 120000 i915/bxt_dmc_ver1.bin create mode 100644 i915/bxt_dmc_ver1_04.bin diff --git a/WHENCE b/WHENCE index 9f5663d7..ac50ac57 100644 --- a/WHENCE +++ b/WHENCE @@ -2766,6 +2766,11 @@ File: i915/skl_dmc_ver1_04.bin File: i915/skl_dmc_ver1.bin Version: DMC API/ABI ver 1 - release 04 for Skylake +File: i915/bxt_dmc_ver1_04.bin + +File: i915/bxt_dmc_ver1.bin +Version: DMC API/ABI ver 1 - release 04 for Broxton + File: i915/skl_guc_ver1_1059.bin File: i915/skl_guc_ver1.bin diff --git a/i915/bxt_dmc_ver1.bin b/i915/bxt_dmc_ver1.bin new file mode 120000 index 00000000..9bec7836 --- /dev/null +++ b/i915/bxt_dmc_ver1.bin @@ -0,0 +1 @@ +bxt_dmc_ver1_04.bin \ No newline at end of file diff --git a/i915/bxt_dmc_ver1_04.bin b/i915/bxt_dmc_ver1_04.bin new file mode 100644 index 0000000000000000000000000000000000000000..834893b0ce2974e0385e68d944c74001ba9898a1 GIT binary patch literal 5872 zcmds*KWtlT8HeA`Idz=Wjf_a8D-nbR5ttIFb;(6Vs;-WZ1s)qlG*JmW{Ebqpzqyj#S(pQ>ib<^XE)8pp;oeo3uo{8{rm0K&7b_@roBpDZH_)dRlhQ`vhJb4Oa>y?N`?Wsf;M z&dpUlr^mTDu7M)fGG?A}THxC=PB;(ytxm5JN^RRBTdI{>T$)hdPOSUA*)`Pj3|5(= zp0UPkS&y1VJkXdp&v7WvDxNxb#D8_}iJyt-GZ0UlC*mh!&S5G(_xfhLY-i%Ht8Tw6 zThF;Gt~;NJ$3L9)tp7@5#a~mtAXld*bKfI9B{j9QQ7scxEjAi+GK-{ZX$O&t&4RnCpHZ zZhQVj+{*KR(%yeC>zRqq#W62_AZEWO;#05Nv}}i-Ul$)ZH^qC-sra5ap4De%>x=a) z)c;nt?Y#cHY#ryCcuUN_?C)AzUKgj%b@6TIruddK?-83~#3L85(DVD^q1T7vBj;1`K+M`k;yv+o@mRbej{WsHjzxYVZdivr6aqKVdi(`Lr&-qlm#1k=n z`r;>EuS^&1!nrOUi&?{Jr)rPItigU=wFh}dd@APso}2ni?}<1{CNY883y&wtbj6Rw z_vJCv8?g7;)$4tjvtGZ)&d1yXIqO;+=B#rY$xc!RE4{|@lUyAcE?&HgOQrPF2vF5qBT9F2Zf=+)Mf_)3CT+e_eda z=N>g*duep7y25kz_GX+u-`*PMwR~J-rN5HjOKEh?5cFa$o_N9S* z1-u!5=ElaG@n_!S@n-y)46ckb!?>~ycrEL7C&rn{stKPj4R{JWN>Ai8OD`yX4Z@=i~4JQ>E1@npv0$C;S1`0>Cq_%WW0 zBjd+-G8z0BPv%Uc6^Tjb@y)bZn*Gk%OGQ^$|-WSI9+-Y*!t zA;y!bygKgN^E28qGv|7w?G44nm_CoixH0oS5aY&VPRTf*h;iVd>bNfsOy<7o zI50dEtLOe1`3X!tKBlv|E>!Ck XGB6n)`CC93|F2l^fY{dx Date: Fri, 5 Jun 2015 14:07:12 -0700 Subject: [PATCH 4/5] linux-firmware: New minor DMC release for Skylake. Following additions: 1. The DE_RRMR and DE_GUCRMR register bits are set before the restore of the registers to mask the flip done, etc. Once all the registers are restored, these registers are restored. 2. The pipe interrupt registers are restored only after the plane has been enabled. 3. Naming of the file changed from .5 to .16 to make it two decimal points for increased number of versions that can be supported. 4. DC 5 and 6 count locations are in the below mentioned offsets DC3_DC5_COUNT 80030 DC5_DC6_COUNT 8002C Signed-off-by: Rodrigo Vivi --- WHENCE | 3 ++- i915/skl_dmc_ver1.bin | 2 +- i915/skl_dmc_ver1_16.bin | Bin 0 -> 7892 bytes 3 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 i915/skl_dmc_ver1_16.bin diff --git a/WHENCE b/WHENCE index ac50ac57..084d8e1a 100644 --- a/WHENCE +++ b/WHENCE @@ -2762,9 +2762,10 @@ Licence: Redistributable. See LICENCE.nvidia for details Driver: i915 -- Intel Integrated Graphics driver File: i915/skl_dmc_ver1_04.bin +File: i915/skl_dmc_ver1_16.bin File: i915/skl_dmc_ver1.bin -Version: DMC API/ABI ver 1 - release 04 for Skylake +Version: DMC API/ABI ver 1 - release 16 for Skylake File: i915/bxt_dmc_ver1_04.bin diff --git a/i915/skl_dmc_ver1.bin b/i915/skl_dmc_ver1.bin index c136e274..c4004a03 120000 --- a/i915/skl_dmc_ver1.bin +++ b/i915/skl_dmc_ver1.bin @@ -1 +1 @@ -skl_dmc_ver1_04.bin \ No newline at end of file +skl_dmc_ver1_16.bin \ No newline at end of file diff --git a/i915/skl_dmc_ver1_16.bin b/i915/skl_dmc_ver1_16.bin new file mode 100644 index 0000000000000000000000000000000000000000..16ad42d310f04eb3cefe4319b0bc36d8c7dab5b4 GIT binary patch literal 7892 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 literal 0 HcmV?d00001 From a750f4ee10f962640c479aca184fe65f83956295 Mon Sep 17 00:00:00 2001 From: Rodrigo Vivi Date: Fri, 19 Jun 2015 17:29:18 -0700 Subject: [PATCH 5/5] linux-firmware: New minor DMC release for Skylake - ver1_18 Following additions: 1. No changes to the FW program itself 2. CSS header size field was fixed 3. DMCheader length field is mentioned in dwords instead of bytes 4. Date field is fixed in header. 4. Fixed the DMC Header.HeaderLen issue. The HeaderLen is specified in bytes instead of dwords. 6. DC 5 and 6 count locations are in the below mentioned offsets - same as ver1.16 DC3_DC5_COUNT 80030 DC5_DC6_COUNT 8002C Signed-off-by: Rodrigo Vivi --- WHENCE | 3 ++- i915/skl_dmc_ver1.bin | 2 +- i915/skl_dmc_ver1_18.bin | Bin 0 -> 7892 bytes 3 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 i915/skl_dmc_ver1_18.bin diff --git a/WHENCE b/WHENCE index 084d8e1a..de959c1f 100644 --- a/WHENCE +++ b/WHENCE @@ -2763,9 +2763,10 @@ Driver: i915 -- Intel Integrated Graphics driver File: i915/skl_dmc_ver1_04.bin File: i915/skl_dmc_ver1_16.bin +File: i915/skl_dmc_ver1_18.bin File: i915/skl_dmc_ver1.bin -Version: DMC API/ABI ver 1 - release 16 for Skylake +Version: DMC API/ABI ver 1 - release 18 for Skylake File: i915/bxt_dmc_ver1_04.bin diff --git a/i915/skl_dmc_ver1.bin b/i915/skl_dmc_ver1.bin index c4004a03..9cab5698 120000 --- a/i915/skl_dmc_ver1.bin +++ b/i915/skl_dmc_ver1.bin @@ -1 +1 @@ -skl_dmc_ver1_16.bin \ No newline at end of file +skl_dmc_ver1_18.bin \ No newline at end of file diff --git a/i915/skl_dmc_ver1_18.bin b/i915/skl_dmc_ver1_18.bin new file mode 100644 index 0000000000000000000000000000000000000000..8d1a5922fc724554753a8604150a8158b8d81ca1 GIT binary patch literal 7892 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 eiSNC@`*IT}-~FC^aLfmz3D