0021-mb-dell-Add-Latitude-E6520-Sandy-Bridge.patch 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450
  1. From 1111dcab65ca83f175f1bb9c0496cae24fbfb7c2 Mon Sep 17 00:00:00 2001
  2. From: Nicholas Chin <nic.c3.14@gmail.com>
  3. Date: Wed, 31 Jan 2024 22:07:25 -0700
  4. Subject: [PATCH 21/39] mb/dell: Add Latitude E6520 (Sandy Bridge)
  5. Mainboard is PAL60/LA-6562P (UMA). The version with an Nvidia dGPU was
  6. not tested. I do not physically have this system; someone with physical
  7. access to one sent me the output of autoport which I then modified to
  8. produce this port. I was also sent the VBT binary, which was obtained
  9. from `/sys/kernel/debug/dri/0/i915_vbt` while running version A08 of the
  10. vendor firmware.
  11. This was originally tested and found to be working as a standalone board
  12. port in Libreboot, but this variant based port in upstream coreboot has
  13. not been tested.
  14. This can be internally flashed by sending a command to the EC, which
  15. causes the EC to pull the FDO pin low and the firmware to skip setting
  16. up any chipset based write protections [1]. The EC is the SMSC MEC5055,
  17. which seems to be compatible with the existing MEC5035 code.
  18. [1] https://gitlab.com/nic3-14159/dell-flash-unlock
  19. Change-Id: Ibdd40cc15642b8d404159d5962670ccc4167a9ec
  20. Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com>
  21. ---
  22. src/mainboard/dell/snb_ivb_latitude/Kconfig | 9 +
  23. .../dell/snb_ivb_latitude/Kconfig.name | 3 +
  24. .../snb_ivb_latitude/variants/e6520/data.vbt | Bin 0 -> 6144 bytes
  25. .../variants/e6520/early_init.c | 31 +++
  26. .../snb_ivb_latitude/variants/e6520/gpio.c | 190 ++++++++++++++++++
  27. .../variants/e6520/hda_verb.c | 32 +++
  28. .../variants/e6520/overridetree.cb | 35 ++++
  29. 7 files changed, 300 insertions(+)
  30. create mode 100644 src/mainboard/dell/snb_ivb_latitude/variants/e6520/data.vbt
  31. create mode 100644 src/mainboard/dell/snb_ivb_latitude/variants/e6520/early_init.c
  32. create mode 100644 src/mainboard/dell/snb_ivb_latitude/variants/e6520/gpio.c
  33. create mode 100644 src/mainboard/dell/snb_ivb_latitude/variants/e6520/hda_verb.c
  34. create mode 100644 src/mainboard/dell/snb_ivb_latitude/variants/e6520/overridetree.cb
  35. diff --git a/src/mainboard/dell/snb_ivb_latitude/Kconfig b/src/mainboard/dell/snb_ivb_latitude/Kconfig
  36. index d2786970ee..72bdc96c0a 100644
  37. --- a/src/mainboard/dell/snb_ivb_latitude/Kconfig
  38. +++ b/src/mainboard/dell/snb_ivb_latitude/Kconfig
  39. @@ -23,6 +23,12 @@ config BOARD_DELL_LATITUDE_E6420
  40. select MAINBOARD_USES_IFD_GBE_REGION
  41. select SOUTHBRIDGE_INTEL_BD82X6X
  42. +config BOARD_DELL_LATITUDE_E6520
  43. + select BOARD_DELL_SNB_IVB_LATITUDE_COMMON
  44. + select BOARD_ROMSIZE_KB_10240
  45. + select MAINBOARD_USES_IFD_GBE_REGION
  46. + select SOUTHBRIDGE_INTEL_BD82X6X
  47. +
  48. config BOARD_DELL_LATITUDE_E5530
  49. select BOARD_DELL_SNB_IVB_LATITUDE_COMMON
  50. select BOARD_ROMSIZE_KB_12288
  51. @@ -50,6 +56,7 @@ config MAINBOARD_DIR
  52. config MAINBOARD_PART_NUMBER
  53. default "Latitude E6420" if BOARD_DELL_LATITUDE_E6420
  54. + default "Latitude E6520" if BOARD_DELL_LATITUDE_E6520
  55. default "Latitude E5530" if BOARD_DELL_LATITUDE_E5530
  56. default "Latitude E6430" if BOARD_DELL_LATITUDE_E6430
  57. default "Latitude E6530" if BOARD_DELL_LATITUDE_E6530
  58. @@ -62,11 +69,13 @@ config USBDEBUG_HCD_INDEX
  59. config VARIANT_DIR
  60. default "e6420" if BOARD_DELL_LATITUDE_E6420
  61. + default "e6520" if BOARD_DELL_LATITUDE_E6520
  62. default "e5530" if BOARD_DELL_LATITUDE_E5530
  63. default "e6430" if BOARD_DELL_LATITUDE_E6430
  64. default "e6530" if BOARD_DELL_LATITUDE_E6530
  65. config VGA_BIOS_ID
  66. + default "8086,0116" if BOARD_DELL_LATITUDE_E6520
  67. default "8086,0166" if BOARD_DELL_LATITUDE_E5530
  68. default "8086,0126" if BOARD_DELL_LATITUDE_E6420
  69. default "8086,0166" if BOARD_DELL_LATITUDE_E6430 \
  70. diff --git a/src/mainboard/dell/snb_ivb_latitude/Kconfig.name b/src/mainboard/dell/snb_ivb_latitude/Kconfig.name
  71. index 257d428a70..c7665ac263 100644
  72. --- a/src/mainboard/dell/snb_ivb_latitude/Kconfig.name
  73. +++ b/src/mainboard/dell/snb_ivb_latitude/Kconfig.name
  74. @@ -3,6 +3,9 @@
  75. config BOARD_DELL_LATITUDE_E6420
  76. bool "Latitude E6420"
  77. +config BOARD_DELL_LATITUDE_E6520
  78. + bool "Latitude E6520"
  79. +
  80. config BOARD_DELL_LATITUDE_E5530
  81. bool "Latitude E5530"
  82. diff --git a/src/mainboard/dell/snb_ivb_latitude/variants/e6520/data.vbt b/src/mainboard/dell/snb_ivb_latitude/variants/e6520/data.vbt
  83. new file mode 100644
  84. index 0000000000000000000000000000000000000000..0ef16ee7cb482d2cb91ea80c3f419759355f7ba0
  85. GIT binary patch
  86. literal 6144
  87. zcmeHKZ){Ul6hE);wSB#PZ|mL$bQ^!}HW(eF@H)0JafGfbqsZ9G21{L7Sg{or$5uN)
  88. z_QgG55e!O(8p8*oBhhF`l$n^QF%rN;rzFNqqcPzFCd5QSB1Y7RKt1=pmTk1aFo9^Y
  89. z+x+gi_nvdlJ@?#m&wZWW=G#bH>ze$J`&!oe*Q|E0r!)d89LYY8b$aowZEoG-uiIF+
  90. z#n;$ezm6V<nGnvtc?lrGaf)1_);!W0?uqnojdw-1MQM|dwy`OcF?M@A)KgVV*N2}7
  91. zcXx+--0R}IwzW3-+`f2k?^Av5V7MpRO-q(9rn_R1@Xlz2Ztdy`$Gf6^w6~|bKi!!7
  92. z9;xq*^~bxmZQn^<^<`+2s=BdSM%VW2#FguN<FO^QuDhGIFquBu677q|cSj>jWFixQ
  93. z)4V8f0Gt`D`+>9Fr~tnJ76EJ`5D_F1cn-`0$RgN9unI6kfYkzIiO?W`ON4+34lv1_
  94. zNdPDkq1cf$p8^EW;TS*O$CdzNo#1fbIG_Oi0T(ti0jwyt0le_p_HlvX^CFvr)>$b>
  95. zO-z8^CSU`w=mIK7Q)@9fR;XUzrFu{T=rRyygIZBpU9+Or>+?4R9%~G?Y-|g)Z`Sti
  96. z+do(U*Wb-xR~DzjS<75#=Us4sH^C9U2FCbND7L7u$>M|<;t=AnRfI9C0v8c~AVg7t
  97. zIU<3D2oK^>L;%r(*o=4*u?Mja@dDyi#4zFn;(f#^#3*76aUSs#;tJv#La-6YLRdQB
  98. zdcvfERkvH?k~GJlfM<HR476j(@nfm+47<!Ult@^ua5M3h6A}q=C0ognX9aX4mxq)U
  99. zXOhm=DbLene?C%_16Q)2NRV@Yacz`D;{V>Ve-1?&ZXy}n)YwnVAgNlz#zX;=IX)-F
  100. z)9LL3lbEdY5Co)LsK?vP)7s}G(5xduE!Y!#Wgh<IN3(3ey=-oWU(9aEJ_HzV53Jbq
  101. zj5B5RjzLUt>_T&xi$uUA#0e}X3D~`J(bHz;DgTa@GrpW6=>eZwJeNYYo*GjF=``;(
  102. zuoQ3|V5YoKd$j=KK{`uSX*DeU1oJg=+RT6)rLe6%2>Ci^!5ao=*gS}wFN=nUf`fTF
  103. zM?Gb5ycWjM7I?MJ!2;w|LFg=UoLq-ytr2iemG)AsW}bI4X9PK}T5UKsQi7anu=tD6
  104. zf|={kXkNeQBD>6bQ3taC8XJOJ^e40_ydyfr&a41L^1)jNrK<B_wV}+ZE`p;QK=rDz
  105. zTw`SJ+e`Oc*icaF4INF51Xg*~ts@m)@9ETt(*@N7yy0)Ddce%i9{^k2kbd8=Wns~P
  106. zWBD$~himxDharxF@f!ti^0$~9Zxt{tg`@Dbl_0Ki2Xp_MEw-<z6qgep;XYmR%Dl-F
  107. z%3cBfcN;Avikpz-gmw_6mymu!Unk0YgnUfsk3{*6kQ;=S*p(_fS!JhDyYh^k?6uRk
  108. z?8--W@~NHvY*+ra6SG9iC1s^V)<|@Rqzp*pd5NBslrs`JC(&Oeg~v}CnJ$x+)iP<8
  109. z=`LA0Ad@39{XkZ}kjXbP{YzHtS!70*yy%LcnJ#cz4u%*Wq!^d*AVMZdr&l=#Qgik~
  110. ze2l)cX+!kF9EaFhY;0^Uo_#VNC?7K2Tf=ZR1y5);b!mCGG?<cc#M0rtHKYeKi%BE?
  111. z@Y6|P8fx#li}c`Uv24UGyZaM0To;Ep<_AWZA1t~bFgI)uf}&Eq=L_Cs89=>wnT0Vx
  112. z-jp>o1ffJNommZ4?=TIPlePIw0hgQ706f*tBC`#pg>9&zRHe>J2%RxBTrOc6Adh9E
  113. ziJr`?VQH!N!_GkoKaoq|+3$^Ae0#sUxXlmM1Huq~g<=Ls?ILv+nQcH%PQedGOlH=Q
  114. z77rMcJlH4Mkc#U2(IDv>rsm1aHpsdL_RdT^i_ACcQUMIJcSus}*(?CIiy^#^=t=g1
  115. z+*^Zbh30&^#_bKclSy9pL$<B~pK8m*sLpIdnHM@W$nA7Ea@Z`x27K?aNK<@lCW(2L
  116. zb@kB3H8kKy4W3Hu)NN|kd!DL^o#iR9a{QYV-Wl&r&hmIFX{ezkIV<4zFiVUQ@K>ao
  117. z00DnFy~Uek!JRwhVX!of0)$Sa*X^S~LMQH0<E(UUx}L=|;Kgw(r(4q=nD)T52c|tR
  118. O?SW|zOncy=dEg(6JAK&z
  119. literal 0
  120. HcmV?d00001
  121. diff --git a/src/mainboard/dell/snb_ivb_latitude/variants/e6520/early_init.c b/src/mainboard/dell/snb_ivb_latitude/variants/e6520/early_init.c
  122. new file mode 100644
  123. index 0000000000..b6415a428b
  124. --- /dev/null
  125. +++ b/src/mainboard/dell/snb_ivb_latitude/variants/e6520/early_init.c
  126. @@ -0,0 +1,31 @@
  127. +/* SPDX-License-Identifier: GPL-2.0-only */
  128. +
  129. +#include <bootblock_common.h>
  130. +#include <device/pci_ops.h>
  131. +#include <ec/dell/mec5035/mec5035.h>
  132. +#include <southbridge/intel/bd82x6x/pch.h>
  133. +
  134. +const struct southbridge_usb_port mainboard_usb_ports[] = {
  135. + { 1, 1, 0 },
  136. + { 1, 1, 0 },
  137. + { 1, 1, 1 },
  138. + { 1, 1, 1 },
  139. + { 1, 0, 2 },
  140. + { 1, 1, 2 },
  141. + { 1, 0, 3 },
  142. + { 1, 0, 3 },
  143. + { 1, 1, 5 },
  144. + { 1, 1, 5 },
  145. + { 1, 1, 7 },
  146. + { 1, 1, 6 },
  147. + { 1, 0, 6 },
  148. + { 1, 0, 7 },
  149. +};
  150. +
  151. +void bootblock_mainboard_early_init(void)
  152. +{
  153. + pci_write_config16(PCH_LPC_DEV, LPC_EN, CNF1_LPC_EN | MC_LPC_EN
  154. + | KBC_LPC_EN | FDD_LPC_EN | LPT_LPC_EN
  155. + | COMB_LPC_EN | COMA_LPC_EN);
  156. + mec5035_early_init();
  157. +}
  158. diff --git a/src/mainboard/dell/snb_ivb_latitude/variants/e6520/gpio.c b/src/mainboard/dell/snb_ivb_latitude/variants/e6520/gpio.c
  159. new file mode 100644
  160. index 0000000000..61f01816c4
  161. --- /dev/null
  162. +++ b/src/mainboard/dell/snb_ivb_latitude/variants/e6520/gpio.c
  163. @@ -0,0 +1,190 @@
  164. +/* SPDX-License-Identifier: GPL-2.0-only */
  165. +
  166. +#include <southbridge/intel/common/gpio.h>
  167. +
  168. +static const struct pch_gpio_set1 pch_gpio_set1_mode = {
  169. + .gpio0 = GPIO_MODE_GPIO,
  170. + .gpio1 = GPIO_MODE_NATIVE,
  171. + .gpio2 = GPIO_MODE_GPIO,
  172. + .gpio3 = GPIO_MODE_NATIVE,
  173. + .gpio4 = GPIO_MODE_GPIO,
  174. + .gpio5 = GPIO_MODE_NATIVE,
  175. + .gpio6 = GPIO_MODE_GPIO,
  176. + .gpio7 = GPIO_MODE_GPIO,
  177. + .gpio8 = GPIO_MODE_GPIO,
  178. + .gpio9 = GPIO_MODE_NATIVE,
  179. + .gpio10 = GPIO_MODE_NATIVE,
  180. + .gpio11 = GPIO_MODE_NATIVE,
  181. + .gpio12 = GPIO_MODE_NATIVE,
  182. + .gpio13 = GPIO_MODE_GPIO,
  183. + .gpio14 = GPIO_MODE_GPIO,
  184. + .gpio15 = GPIO_MODE_GPIO,
  185. + .gpio16 = GPIO_MODE_GPIO,
  186. + .gpio17 = GPIO_MODE_GPIO,
  187. + .gpio18 = GPIO_MODE_NATIVE,
  188. + .gpio19 = GPIO_MODE_GPIO,
  189. + .gpio20 = GPIO_MODE_NATIVE,
  190. + .gpio21 = GPIO_MODE_GPIO,
  191. + .gpio22 = GPIO_MODE_GPIO,
  192. + .gpio23 = GPIO_MODE_NATIVE,
  193. + .gpio24 = GPIO_MODE_GPIO,
  194. + .gpio25 = GPIO_MODE_NATIVE,
  195. + .gpio26 = GPIO_MODE_NATIVE,
  196. + .gpio27 = GPIO_MODE_GPIO,
  197. + .gpio28 = GPIO_MODE_GPIO,
  198. + .gpio29 = GPIO_MODE_GPIO,
  199. + .gpio30 = GPIO_MODE_GPIO,
  200. + .gpio31 = GPIO_MODE_NATIVE,
  201. +};
  202. +
  203. +static const struct pch_gpio_set1 pch_gpio_set1_direction = {
  204. + .gpio0 = GPIO_DIR_INPUT,
  205. + .gpio2 = GPIO_DIR_INPUT,
  206. + .gpio4 = GPIO_DIR_INPUT,
  207. + .gpio6 = GPIO_DIR_INPUT,
  208. + .gpio7 = GPIO_DIR_INPUT,
  209. + .gpio8 = GPIO_DIR_INPUT,
  210. + .gpio13 = GPIO_DIR_INPUT,
  211. + .gpio14 = GPIO_DIR_INPUT,
  212. + .gpio15 = GPIO_DIR_INPUT,
  213. + .gpio16 = GPIO_DIR_INPUT,
  214. + .gpio17 = GPIO_DIR_INPUT,
  215. + .gpio19 = GPIO_DIR_INPUT,
  216. + .gpio21 = GPIO_DIR_INPUT,
  217. + .gpio22 = GPIO_DIR_INPUT,
  218. + .gpio24 = GPIO_DIR_INPUT,
  219. + .gpio27 = GPIO_DIR_INPUT,
  220. + .gpio28 = GPIO_DIR_INPUT,
  221. + .gpio29 = GPIO_DIR_INPUT,
  222. + .gpio30 = GPIO_DIR_OUTPUT,
  223. +};
  224. +
  225. +static const struct pch_gpio_set1 pch_gpio_set1_level = {
  226. + .gpio30 = GPIO_LEVEL_HIGH,
  227. +};
  228. +
  229. +static const struct pch_gpio_set1 pch_gpio_set1_reset = {
  230. +};
  231. +
  232. +static const struct pch_gpio_set1 pch_gpio_set1_invert = {
  233. + .gpio0 = GPIO_INVERT,
  234. + .gpio8 = GPIO_INVERT,
  235. + .gpio14 = GPIO_INVERT,
  236. +};
  237. +
  238. +static const struct pch_gpio_set1 pch_gpio_set1_blink = {
  239. +};
  240. +
  241. +static const struct pch_gpio_set2 pch_gpio_set2_mode = {
  242. + .gpio32 = GPIO_MODE_NATIVE,
  243. + .gpio33 = GPIO_MODE_GPIO,
  244. + .gpio34 = GPIO_MODE_GPIO,
  245. + .gpio35 = GPIO_MODE_GPIO,
  246. + .gpio36 = GPIO_MODE_GPIO,
  247. + .gpio37 = GPIO_MODE_GPIO,
  248. + .gpio38 = GPIO_MODE_GPIO,
  249. + .gpio39 = GPIO_MODE_GPIO,
  250. + .gpio40 = GPIO_MODE_NATIVE,
  251. + .gpio41 = GPIO_MODE_NATIVE,
  252. + .gpio42 = GPIO_MODE_NATIVE,
  253. + .gpio43 = GPIO_MODE_NATIVE,
  254. + .gpio44 = GPIO_MODE_NATIVE,
  255. + .gpio45 = GPIO_MODE_GPIO,
  256. + .gpio46 = GPIO_MODE_NATIVE,
  257. + .gpio47 = GPIO_MODE_NATIVE,
  258. + .gpio48 = GPIO_MODE_GPIO,
  259. + .gpio49 = GPIO_MODE_GPIO,
  260. + .gpio50 = GPIO_MODE_NATIVE,
  261. + .gpio51 = GPIO_MODE_GPIO,
  262. + .gpio52 = GPIO_MODE_GPIO,
  263. + .gpio53 = GPIO_MODE_NATIVE,
  264. + .gpio54 = GPIO_MODE_GPIO,
  265. + .gpio55 = GPIO_MODE_NATIVE,
  266. + .gpio56 = GPIO_MODE_NATIVE,
  267. + .gpio57 = GPIO_MODE_GPIO,
  268. + .gpio58 = GPIO_MODE_NATIVE,
  269. + .gpio59 = GPIO_MODE_NATIVE,
  270. + .gpio60 = GPIO_MODE_GPIO,
  271. + .gpio61 = GPIO_MODE_NATIVE,
  272. + .gpio62 = GPIO_MODE_NATIVE,
  273. + .gpio63 = GPIO_MODE_NATIVE,
  274. +};
  275. +
  276. +static const struct pch_gpio_set2 pch_gpio_set2_direction = {
  277. + .gpio33 = GPIO_DIR_INPUT,
  278. + .gpio34 = GPIO_DIR_OUTPUT,
  279. + .gpio35 = GPIO_DIR_INPUT,
  280. + .gpio36 = GPIO_DIR_INPUT,
  281. + .gpio37 = GPIO_DIR_INPUT,
  282. + .gpio38 = GPIO_DIR_INPUT,
  283. + .gpio39 = GPIO_DIR_INPUT,
  284. + .gpio45 = GPIO_DIR_OUTPUT,
  285. + .gpio48 = GPIO_DIR_INPUT,
  286. + .gpio49 = GPIO_DIR_OUTPUT,
  287. + .gpio51 = GPIO_DIR_INPUT,
  288. + .gpio52 = GPIO_DIR_INPUT,
  289. + .gpio54 = GPIO_DIR_INPUT,
  290. + .gpio57 = GPIO_DIR_INPUT,
  291. + .gpio60 = GPIO_DIR_OUTPUT,
  292. +};
  293. +
  294. +static const struct pch_gpio_set2 pch_gpio_set2_level = {
  295. + .gpio34 = GPIO_LEVEL_HIGH,
  296. + .gpio45 = GPIO_LEVEL_LOW,
  297. + .gpio49 = GPIO_LEVEL_LOW,
  298. + .gpio60 = GPIO_LEVEL_HIGH,
  299. +};
  300. +
  301. +static const struct pch_gpio_set2 pch_gpio_set2_reset = {
  302. +};
  303. +
  304. +static const struct pch_gpio_set3 pch_gpio_set3_mode = {
  305. + .gpio64 = GPIO_MODE_NATIVE,
  306. + .gpio65 = GPIO_MODE_NATIVE,
  307. + .gpio66 = GPIO_MODE_NATIVE,
  308. + .gpio67 = GPIO_MODE_NATIVE,
  309. + .gpio68 = GPIO_MODE_GPIO,
  310. + .gpio69 = GPIO_MODE_GPIO,
  311. + .gpio70 = GPIO_MODE_GPIO,
  312. + .gpio71 = GPIO_MODE_GPIO,
  313. + .gpio72 = GPIO_MODE_NATIVE,
  314. + .gpio73 = GPIO_MODE_NATIVE,
  315. + .gpio74 = GPIO_MODE_NATIVE,
  316. + .gpio75 = GPIO_MODE_NATIVE,
  317. +};
  318. +
  319. +static const struct pch_gpio_set3 pch_gpio_set3_direction = {
  320. + .gpio68 = GPIO_DIR_INPUT,
  321. + .gpio69 = GPIO_DIR_INPUT,
  322. + .gpio70 = GPIO_DIR_INPUT,
  323. + .gpio71 = GPIO_DIR_INPUT,
  324. +};
  325. +
  326. +static const struct pch_gpio_set3 pch_gpio_set3_level = {
  327. +};
  328. +
  329. +static const struct pch_gpio_set3 pch_gpio_set3_reset = {
  330. +};
  331. +
  332. +const struct pch_gpio_map mainboard_gpio_map = {
  333. + .set1 = {
  334. + .mode = &pch_gpio_set1_mode,
  335. + .direction = &pch_gpio_set1_direction,
  336. + .level = &pch_gpio_set1_level,
  337. + .blink = &pch_gpio_set1_blink,
  338. + .invert = &pch_gpio_set1_invert,
  339. + .reset = &pch_gpio_set1_reset,
  340. + },
  341. + .set2 = {
  342. + .mode = &pch_gpio_set2_mode,
  343. + .direction = &pch_gpio_set2_direction,
  344. + .level = &pch_gpio_set2_level,
  345. + .reset = &pch_gpio_set2_reset,
  346. + },
  347. + .set3 = {
  348. + .mode = &pch_gpio_set3_mode,
  349. + .direction = &pch_gpio_set3_direction,
  350. + .level = &pch_gpio_set3_level,
  351. + .reset = &pch_gpio_set3_reset,
  352. + },
  353. +};
  354. diff --git a/src/mainboard/dell/snb_ivb_latitude/variants/e6520/hda_verb.c b/src/mainboard/dell/snb_ivb_latitude/variants/e6520/hda_verb.c
  355. new file mode 100644
  356. index 0000000000..ae376691e7
  357. --- /dev/null
  358. +++ b/src/mainboard/dell/snb_ivb_latitude/variants/e6520/hda_verb.c
  359. @@ -0,0 +1,32 @@
  360. +/* SPDX-License-Identifier: GPL-2.0-only */
  361. +
  362. +#include <device/azalia_device.h>
  363. +
  364. +const u32 cim_verb_data[] = {
  365. + 0x111d76e7, /* Codec Vendor / Device ID: IDT */
  366. + 0x10280494, /* Subsystem ID */
  367. + 11, /* Number of 4 dword sets */
  368. + AZALIA_SUBVENDOR(0, 0x10280494),
  369. + AZALIA_PIN_CFG(0, 0x0a, 0x03a11020),
  370. + AZALIA_PIN_CFG(0, 0x0b, 0x0321101f),
  371. + AZALIA_PIN_CFG(0, 0x0c, 0x400000f0),
  372. + AZALIA_PIN_CFG(0, 0x0d, 0x90170110),
  373. + AZALIA_PIN_CFG(0, 0x0e, 0x23011050),
  374. + AZALIA_PIN_CFG(0, 0x0f, 0x23a1102e),
  375. + AZALIA_PIN_CFG(0, 0x10, 0x400000f3),
  376. + AZALIA_PIN_CFG(0, 0x11, 0x400000f2),
  377. + AZALIA_PIN_CFG(0, 0x1f, 0x400000f0),
  378. + AZALIA_PIN_CFG(0, 0x20, 0x400000f0),
  379. +
  380. + 0x80862805, /* Codec Vendor / Device ID: Intel */
  381. + 0x80860101, /* Subsystem ID */
  382. + 4, /* Number of 4 dword sets */
  383. + AZALIA_SUBVENDOR(3, 0x80860101),
  384. + AZALIA_PIN_CFG(3, 0x05, 0x18560010),
  385. + AZALIA_PIN_CFG(3, 0x06, 0x18560020),
  386. + AZALIA_PIN_CFG(3, 0x07, 0x18560030),
  387. +};
  388. +
  389. +const u32 pc_beep_verbs[0] = {};
  390. +
  391. +AZALIA_ARRAY_SIZES;
  392. diff --git a/src/mainboard/dell/snb_ivb_latitude/variants/e6520/overridetree.cb b/src/mainboard/dell/snb_ivb_latitude/variants/e6520/overridetree.cb
  393. new file mode 100644
  394. index 0000000000..f90f2dee1f
  395. --- /dev/null
  396. +++ b/src/mainboard/dell/snb_ivb_latitude/variants/e6520/overridetree.cb
  397. @@ -0,0 +1,35 @@
  398. +## SPDX-License-Identifier: GPL-2.0-or-later
  399. +
  400. +chip northbridge/intel/sandybridge
  401. + device domain 0 on
  402. + subsystemid 0x1028 0x0494 inherit
  403. +
  404. + device ref igd on
  405. + register "gpu_cpu_backlight" = "0x00001312"
  406. + register "gpu_pch_backlight" = "0x13121312"
  407. + end
  408. +
  409. + chip southbridge/intel/bd82x6x
  410. + register "usb_port_config" = "{
  411. + { 1, 1, 0 },
  412. + { 1, 1, 0 },
  413. + { 1, 1, 1 },
  414. + { 1, 1, 1 },
  415. + { 1, 0, 2 },
  416. + { 1, 1, 2 },
  417. + { 1, 1, 3 },
  418. + { 1, 1, 3 },
  419. + { 1, 1, 5 },
  420. + { 1, 1, 5 },
  421. + { 1, 1, 7 },
  422. + { 1, 1, 6 },
  423. + { 1, 0, 6 },
  424. + { 1, 0, 7 },
  425. + }"
  426. +
  427. + device ref sata1 on
  428. + register "sata_port_map" = "0x3b"
  429. + end
  430. + end
  431. + end
  432. +end
  433. --
  434. 2.39.2