当前位置:   article > 正文

Rockchip RK3399 - 移植linux 5.2.8

rk3399 optee

----------------------------------------------------------------------------------------------------------------------------

开发板    :NanoPC-T4开发板eMMC     :16GBLPDDR3  :4GB显示屏     :15.6英寸HDMI接口显示屏u-boot       :Rockchip官方uboot 2017.09linux          :5.2.8----------------------------------------------------------------------------------------------------------------------------

在前面的章节,我们已经介绍了在RK3399上面移植Rockchip官方提供的uboot 2017.09,这一节我们将移植linux 5.2.8到RK3399上。

一、linux内核

像uboot一样,linux内核通常有三种:

  • linux官方源码:https://github.com/torvalds/linux,linux官方源码是由linux官方维护,支持非常全面的芯片,但对具体某款开发板支持情况一般;
  • 半导体厂商瑞芯微官方源码:https://github.com/rockchip-linux/kernel,半导体厂商基于linux官方源码进行修改,对自家的芯片进行完善的支持,针对某款处理器支持情况较好;
  • 开发板友善之家官方源码:https://github.com/friendlyarm/kernel-rockchip,开发板厂商基于半导体厂商维护的linux,对自家的开发板进行板级支持,针对某款开发板支持情况较好;

由于Rockchip官方提供的内核版本较低,所以这里我们直接去linux官方去下载,然后后面参考开发板友善之家官方源码修改使其能够支持NanoPC-T4开发板。

1.1 源码下载

内核源码下载地址为:https://www.kernel.org/,这里我们不下载最新的6.3.2版本,我们和之前介绍的Mini2440内核移植一样,选择5.2.8版本:

也可以到内核镜像网址下载https://mirrors.edge.kernel.org/pub/linux/kernel/,这里下载速度更快。

如果下载速度太慢,无法下载,提供另一个链接:http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/

我们这里下载linux-5.2.8版本,执行如下命令:

root@zhengyang:/work/sambashare/rk3399# wget http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/v5.x/linux-5.2.8.tar.gz

这里我是下载到/work/sambashare/rk3399路径下的,这个路径是用来专门存放与rk3399相关的内容。

解压源码:

root@zhengyang:/work/sambashare/rk3399# tar -xvf linux-5.2.8.tar.gz

关于linux内核的目录结构我们之前已经介绍过,这里就不再重复叙述了。

  1. root@zhengyang:/work/sambashare/rk3399# cd linux-5.2.8/
  2. root@zhengyang:/work/sambashare/rk3399/linux-5.2.8# ll
  3. 总用量 840
  4. drwxrwxr-x 24 root root 4096 Aug 9 2019 ./
  5. drwxr-xr-x 8 root root 4096 May 17 04:16 ../
  6. drwxrwxr-x 27 root root 4096 Aug 9 2019 arch/
  7. drwxrwxr-x 3 root root 4096 Aug 9 2019 block/
  8. drwxrwxr-x 2 root root 4096 Aug 9 2019 certs/
  9. -rw-rw-r-- 1 root root 14943 Aug 9 2019 .clang-format
  10. -rw-rw-r-- 1 root root 59 Aug 9 2019 .cocciconfig
  11. -rw-rw-r-- 1 root root 423 Aug 9 2019 COPYING
  12. -rw-rw-r-- 1 root root 99486 Aug 9 2019 CREDITS
  13. drwxrwxr-x 4 root root 4096 Aug 9 2019 crypto/
  14. drwxrwxr-x 122 root root 12288 Aug 9 2019 Documentation/
  15. drwxrwxr-x 140 root root 4096 Aug 9 2019 drivers/
  16. drwxrwxr-x 73 root root 4096 Aug 9 2019 fs/
  17. -rw-rw-r-- 1 root root 71 Aug 9 2019 .get_maintainer.ignore
  18. -rw-rw-r-- 1 root root 30 Aug 9 2019 .gitattributes
  19. -rw-rw-r-- 1 root root 1658 Aug 9 2019 .gitignore
  20. drwxrwxr-x 27 root root 4096 Aug 9 2019 include/
  21. drwxrwxr-x 2 root root 4096 Aug 9 2019 init/
  22. drwxrwxr-x 2 root root 4096 Aug 9 2019 ipc/
  23. -rw-rw-r-- 1 root root 1513 Aug 9 2019 Kbuild
  24. -rw-rw-r-- 1 root root 563 Aug 9 2019 Kconfig
  25. drwxrwxr-x 18 root root 4096 Aug 9 2019 kernel/
  26. drwxrwxr-x 15 root root 12288 Aug 9 2019 lib/
  27. drwxrwxr-x 6 root root 4096 Aug 9 2019 LICENSES/
  28. -rw-rw-r-- 1 root root 12316 Aug 9 2019 .mailmap
  29. -rw-rw-r-- 1 root root 512407 Aug 9 2019 MAINTAINERS
  30. -rw-rw-r-- 1 root root 60262 Aug 9 2019 Makefile
  31. drwxrwxr-x 3 root root 4096 Aug 9 2019 mm/
  32. drwxrwxr-x 70 root root 4096 Aug 9 2019 net/
  33. -rw-rw-r-- 1 root root 727 Aug 9 2019 README
  34. drwxrwxr-x 29 root root 4096 Aug 9 2019 samples/
  35. drwxrwxr-x 15 root root 4096 Aug 9 2019 scripts/
  36. drwxrwxr-x 11 root root 4096 Aug 9 2019 security/
  37. drwxrwxr-x 26 root root 4096 Aug 9 2019 sound/
  38. drwxrwxr-x 36 root root 4096 Aug 9 2019 tools/
  39. drwxrwxr-x 2 root root 4096 Aug 9 2019 usr/
  40. drwxrwxr-x 4 root root 4096 Aug 9 2019 virt/
1.2 配置Makefile

修改顶层的 Makefile,打开 Makefile 文件,找到下面语句:

ARCH        ?= $(SUBARCH)

修改为:

  1. ARCH ?= arm64
  2. CROSS_COMPILE ?= arm-linux-

其中,ARCH 是指定目标平台为arm64,CROSS_COMPILE是指定交叉编译器,这里指定的是系统默认的交叉编译器,如要使用其它的,则要把编译器的全路径在这里写出。

1.3 内核defconfig配置

接下来要做的就是内核配置、编译了。单板的默认配置文件在arch/arm64/configs目录下:

  1. root@zhengyang:/work/sambashare/rk3399/linux-5.2.8# ll arch/arm64/configs/defconfig
  2. -rw-rw-r-- 1 root root 18417 Aug 9 2019 arch/arm64/configs/defconfig

在这个目录下就这一个配置,我们也没有其它选择了,那只能走一步看一步了。

配置文件defconfig其定义如下:

  1. CONFIG_SYSVIPC=y
  2. CONFIG_POSIX_MQUEUE=y
  3. CONFIG_AUDIT=y
  4. CONFIG_NO_HZ_IDLE=y
  5. CONFIG_HIGH_RES_TIMERS=y
  6. CONFIG_PREEMPT=y
  7. CONFIG_IRQ_TIME_ACCOUNTING=y
  8. CONFIG_BSD_PROCESS_ACCT=y
  9. CONFIG_BSD_PROCESS_ACCT_V3=y
  10. CONFIG_TASKSTATS=y
  11. CONFIG_TASK_DELAY_ACCT=y
  12. CONFIG_TASK_XACCT=y
  13. CONFIG_TASK_IO_ACCOUNTING=y
  14. CONFIG_IKCONFIG=y
  15. CONFIG_IKCONFIG_PROC=y
  16. CONFIG_NUMA_BALANCING=y
  17. CONFIG_MEMCG=y
  18. CONFIG_MEMCG_SWAP=y
  19. CONFIG_BLK_CGROUP=y
  20. CONFIG_CGROUP_PIDS=y
  21. CONFIG_CGROUP_HUGETLB=y
  22. CONFIG_CPUSETS=y
  23. CONFIG_CGROUP_DEVICE=y
  24. CONFIG_CGROUP_CPUACCT=y
  25. CONFIG_CGROUP_PERF=y
  26. CONFIG_USER_NS=y
  27. CONFIG_SCHED_AUTOGROUP=y
  28. CONFIG_BLK_DEV_INITRD=y
  29. CONFIG_KALLSYMS_ALL=y
  30. # CONFIG_COMPAT_BRK is not set
  31. CONFIG_PROFILING=y
  32. CONFIG_ARCH_AGILEX=y
  33. CONFIG_ARCH_SUNXI=y
  34. CONFIG_ARCH_ALPINE=y
  35. CONFIG_ARCH_BCM2835=y
  36. CONFIG_ARCH_BCM_IPROC=y
  37. CONFIG_ARCH_BERLIN=y
  38. CONFIG_ARCH_BRCMSTB=y
  39. CONFIG_ARCH_EXYNOS=y
  40. CONFIG_ARCH_K3=y
  41. CONFIG_ARCH_LAYERSCAPE=y
  42. CONFIG_ARCH_LG1K=y
  43. CONFIG_ARCH_HISI=y
  44. CONFIG_ARCH_MEDIATEK=y
  45. CONFIG_ARCH_MESON=y
  46. CONFIG_ARCH_MVEBU=y
  47. CONFIG_ARCH_MXC=y
  48. CONFIG_ARCH_QCOM=y
  49. CONFIG_ARCH_RENESAS=y
  50. CONFIG_ARCH_ROCKCHIP=y
  51. CONFIG_ARCH_SEATTLE=y
  52. CONFIG_ARCH_STRATIX10=y
  53. CONFIG_ARCH_SYNQUACER=y
  54. CONFIG_ARCH_TEGRA=y
  55. CONFIG_ARCH_SPRD=y
  56. CONFIG_ARCH_THUNDER=y
  57. CONFIG_ARCH_THUNDER2=y
  58. CONFIG_ARCH_UNIPHIER=y
  59. CONFIG_ARCH_VEXPRESS=y
  60. CONFIG_ARCH_XGENE=y
  61. CONFIG_ARCH_ZX=y
  62. CONFIG_ARCH_ZYNQMP=y
  63. CONFIG_ARM64_VA_BITS_48=y
  64. CONFIG_SCHED_MC=y
  65. CONFIG_NUMA=y
  66. CONFIG_SECCOMP=y
  67. CONFIG_KEXEC=y
  68. CONFIG_CRASH_DUMP=y
  69. CONFIG_XEN=y
  70. CONFIG_COMPAT=y
  71. CONFIG_HIBERNATION=y
  72. CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y
  73. CONFIG_ARM_CPUIDLE=y
  74. CONFIG_CPU_FREQ=y
  75. CONFIG_CPU_FREQ_STAT=y
  76. CONFIG_CPU_FREQ_GOV_POWERSAVE=m
  77. CONFIG_CPU_FREQ_GOV_USERSPACE=y
  78. CONFIG_CPU_FREQ_GOV_ONDEMAND=y
  79. CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
  80. CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
  81. CONFIG_CPUFREQ_DT=y
  82. CONFIG_ACPI_CPPC_CPUFREQ=m
  83. CONFIG_ARM_ARMADA_37XX_CPUFREQ=y
  84. CONFIG_ARM_SCPI_CPUFREQ=y
  85. CONFIG_ARM_TEGRA186_CPUFREQ=y
  86. CONFIG_ARM_SCPI_PROTOCOL=y
  87. CONFIG_RASPBERRYPI_FIRMWARE=y
  88. CONFIG_INTEL_STRATIX10_SERVICE=y
  89. CONFIG_TI_SCI_PROTOCOL=y
  90. CONFIG_EFI_CAPSULE_LOADER=y
  91. CONFIG_IMX_SCU=y
  92. CONFIG_IMX_SCU_PD=y
  93. CONFIG_ACPI=y
  94. CONFIG_ACPI_APEI=y
  95. CONFIG_ACPI_APEI_GHES=y
  96. CONFIG_ACPI_APEI_MEMORY_FAILURE=y
  97. CONFIG_ACPI_APEI_EINJ=y
  98. CONFIG_VIRTUALIZATION=y
  99. CONFIG_KVM=y
  100. CONFIG_ARM64_CRYPTO=y
  101. CONFIG_CRYPTO_SHA1_ARM64_CE=y
  102. CONFIG_CRYPTO_SHA2_ARM64_CE=y
  103. CONFIG_CRYPTO_SHA512_ARM64_CE=m
  104. CONFIG_CRYPTO_SHA3_ARM64=m
  105. CONFIG_CRYPTO_SM3_ARM64_CE=m
  106. CONFIG_CRYPTO_GHASH_ARM64_CE=y
  107. CONFIG_CRYPTO_CRCT10DIF_ARM64_CE=m
  108. CONFIG_CRYPTO_AES_ARM64_CE_CCM=y
  109. CONFIG_CRYPTO_AES_ARM64_CE_BLK=y
  110. CONFIG_CRYPTO_CHACHA20_NEON=m
  111. CONFIG_CRYPTO_AES_ARM64_BS=m
  112. CONFIG_JUMP_LABEL=y
  113. CONFIG_MODULES=y
  114. CONFIG_MODULE_UNLOAD=y
  115. # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
  116. CONFIG_KSM=y
  117. CONFIG_MEMORY_FAILURE=y
  118. CONFIG_TRANSPARENT_HUGEPAGE=y
  119. CONFIG_CMA=y
  120. CONFIG_NET=y
  121. CONFIG_PACKET=y
  122. CONFIG_UNIX=y
  123. CONFIG_INET=y
  124. CONFIG_IP_MULTICAST=y
  125. CONFIG_IP_PNP=y
  126. CONFIG_IP_PNP_DHCP=y
  127. CONFIG_IP_PNP_BOOTP=y
  128. CONFIG_IPV6=m
  129. CONFIG_NETFILTER=y
  130. CONFIG_NF_CONNTRACK=m
  131. CONFIG_NF_CONNTRACK_EVENTS=y
  132. CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
  133. CONFIG_NETFILTER_XT_TARGET_LOG=m
  134. CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
  135. CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
  136. CONFIG_IP_NF_IPTABLES=m
  137. CONFIG_IP_NF_FILTER=m
  138. CONFIG_IP_NF_TARGET_REJECT=m
  139. CONFIG_IP_NF_NAT=m
  140. CONFIG_IP_NF_TARGET_MASQUERADE=m
  141. CONFIG_IP_NF_MANGLE=m
  142. CONFIG_IP6_NF_IPTABLES=m
  143. CONFIG_IP6_NF_FILTER=m
  144. CONFIG_IP6_NF_TARGET_REJECT=m
  145. CONFIG_IP6_NF_MANGLE=m
  146. CONFIG_IP6_NF_NAT=m
  147. CONFIG_IP6_NF_TARGET_MASQUERADE=m
  148. CONFIG_BRIDGE=m
  149. CONFIG_BRIDGE_VLAN_FILTERING=y
  150. CONFIG_VLAN_8021Q=m
  151. CONFIG_VLAN_8021Q_GVRP=y
  152. CONFIG_VLAN_8021Q_MVRP=y
  153. CONFIG_QRTR=m
  154. CONFIG_QRTR_SMD=m
  155. CONFIG_QRTR_TUN=m
  156. CONFIG_BPF_JIT=y
  157. CONFIG_BT=m
  158. CONFIG_BT_HIDP=m
  159. # CONFIG_BT_HS is not set
  160. # CONFIG_BT_LE is not set
  161. CONFIG_BT_LEDS=y
  162. # CONFIG_BT_DEBUGFS is not set
  163. CONFIG_BT_HCIBTUSB=m
  164. CONFIG_BT_HCIUART=m
  165. CONFIG_BT_HCIUART_LL=y
  166. CONFIG_BT_HCIUART_BCM=y
  167. CONFIG_CFG80211=m
  168. CONFIG_MAC80211=m
  169. CONFIG_MAC80211_LEDS=y
  170. CONFIG_RFKILL=m
  171. CONFIG_NET_9P=y
  172. CONFIG_NET_9P_VIRTIO=y
  173. CONFIG_PCI=y
  174. CONFIG_PCIEPORTBUS=y
  175. CONFIG_PCI_IOV=y
  176. CONFIG_HOTPLUG_PCI=y
  177. CONFIG_HOTPLUG_PCI_ACPI=y
  178. CONFIG_PCI_AARDVARK=y
  179. CONFIG_PCI_TEGRA=y
  180. CONFIG_PCIE_RCAR=y
  181. CONFIG_PCI_HOST_GENERIC=y
  182. CONFIG_PCI_XGENE=y
  183. CONFIG_PCIE_ALTERA=y
  184. CONFIG_PCIE_ALTERA_MSI=y
  185. CONFIG_PCI_HOST_THUNDER_PEM=y
  186. CONFIG_PCI_HOST_THUNDER_ECAM=y
  187. CONFIG_PCIE_ROCKCHIP_HOST=m
  188. CONFIG_PCI_LAYERSCAPE=y
  189. CONFIG_PCI_HISI=y
  190. CONFIG_PCIE_QCOM=y
  191. CONFIG_PCIE_ARMADA_8K=y
  192. CONFIG_PCIE_KIRIN=y
  193. CONFIG_PCIE_HISI_STB=y
  194. CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
  195. CONFIG_DEVTMPFS=y
  196. CONFIG_DEVTMPFS_MOUNT=y
  197. CONFIG_HISILICON_LPC=y
  198. CONFIG_SIMPLE_PM_BUS=y
  199. CONFIG_MTD=y
  200. CONFIG_MTD_BLOCK=y
  201. CONFIG_MTD_M25P80=y
  202. CONFIG_MTD_RAW_NAND=y
  203. CONFIG_MTD_NAND_DENALI_DT=y
  204. CONFIG_MTD_NAND_MARVELL=y
  205. CONFIG_MTD_NAND_QCOM=y
  206. CONFIG_MTD_SPI_NOR=y
  207. CONFIG_BLK_DEV_LOOP=y
  208. CONFIG_BLK_DEV_NBD=m
  209. CONFIG_VIRTIO_BLK=y
  210. CONFIG_BLK_DEV_NVME=m
  211. CONFIG_SRAM=y
  212. CONFIG_EEPROM_AT25=m
  213. # CONFIG_SCSI_PROC_FS is not set
  214. CONFIG_BLK_DEV_SD=y
  215. CONFIG_SCSI_SAS_ATA=y
  216. CONFIG_SCSI_HISI_SAS=y
  217. CONFIG_SCSI_HISI_SAS_PCI=y
  218. CONFIG_SCSI_UFSHCD=y
  219. CONFIG_SCSI_UFSHCD_PLATFORM=y
  220. CONFIG_SCSI_UFS_QCOM=m
  221. CONFIG_SCSI_UFS_HISI=y
  222. CONFIG_ATA=y
  223. CONFIG_SATA_AHCI=y
  224. CONFIG_SATA_AHCI_PLATFORM=y
  225. CONFIG_AHCI_CEVA=y
  226. CONFIG_AHCI_MVEBU=y
  227. CONFIG_AHCI_XGENE=y
  228. CONFIG_AHCI_QORIQ=y
  229. CONFIG_SATA_SIL24=y
  230. CONFIG_SATA_RCAR=y
  231. CONFIG_PATA_PLATFORM=y
  232. CONFIG_PATA_OF_PLATFORM=y
  233. CONFIG_NETDEVICES=y
  234. CONFIG_MACVLAN=m
  235. CONFIG_MACVTAP=m
  236. CONFIG_TUN=y
  237. CONFIG_VETH=m
  238. CONFIG_VIRTIO_NET=y
  239. CONFIG_AMD_XGBE=y
  240. CONFIG_NET_XGENE=y
  241. CONFIG_ATL1C=m
  242. CONFIG_MACB=y
  243. CONFIG_THUNDER_NIC_PF=y
  244. CONFIG_FEC=y
  245. CONFIG_HIX5HD2_GMAC=y
  246. CONFIG_HNS_DSAF=y
  247. CONFIG_HNS_ENET=y
  248. CONFIG_HNS3=y
  249. CONFIG_HNS3_HCLGE=y
  250. CONFIG_HNS3_ENET=y
  251. CONFIG_E1000E=y
  252. CONFIG_IGB=y
  253. CONFIG_IGBVF=y
  254. CONFIG_MVNETA=y
  255. CONFIG_MVPP2=y
  256. CONFIG_SKY2=y
  257. CONFIG_QCOM_EMAC=m
  258. CONFIG_RAVB=y
  259. CONFIG_SMC91X=y
  260. CONFIG_SMSC911X=y
  261. CONFIG_SNI_AVE=y
  262. CONFIG_SNI_NETSEC=y
  263. CONFIG_STMMAC_ETH=m
  264. CONFIG_MDIO_BUS_MUX_MMIOREG=y
  265. CONFIG_AT803X_PHY=m
  266. CONFIG_MARVELL_PHY=m
  267. CONFIG_MARVELL_10G_PHY=m
  268. CONFIG_MESON_GXL_PHY=m
  269. CONFIG_MICREL_PHY=y
  270. CONFIG_REALTEK_PHY=m
  271. CONFIG_ROCKCHIP_PHY=y
  272. CONFIG_USB_PEGASUS=m
  273. CONFIG_USB_RTL8150=m
  274. CONFIG_USB_RTL8152=m
  275. CONFIG_USB_LAN78XX=m
  276. CONFIG_USB_USBNET=m
  277. CONFIG_USB_NET_DM9601=m
  278. CONFIG_USB_NET_SR9800=m
  279. CONFIG_USB_NET_SMSC75XX=m
  280. CONFIG_USB_NET_SMSC95XX=m
  281. CONFIG_USB_NET_PLUSB=m
  282. CONFIG_USB_NET_MCS7830=m
  283. CONFIG_ATH10K=m
  284. CONFIG_ATH10K_PCI=m
  285. CONFIG_BRCMFMAC=m
  286. CONFIG_MWIFIEX=m
  287. CONFIG_MWIFIEX_PCIE=m
  288. CONFIG_WL18XX=m
  289. CONFIG_WLCORE_SDIO=m
  290. CONFIG_INPUT_EVDEV=y
  291. CONFIG_KEYBOARD_ADC=m
  292. CONFIG_KEYBOARD_GPIO=y
  293. CONFIG_KEYBOARD_CROS_EC=y
  294. CONFIG_INPUT_TOUCHSCREEN=y
  295. CONFIG_TOUCHSCREEN_ATMEL_MXT=m
  296. CONFIG_INPUT_MISC=y
  297. CONFIG_INPUT_PM8941_PWRKEY=y
  298. CONFIG_INPUT_HISI_POWERKEY=y
  299. # CONFIG_SERIO_SERPORT is not set
  300. CONFIG_SERIO_AMBAKMI=y
  301. CONFIG_LEGACY_PTY_COUNT=16
  302. CONFIG_SERIAL_8250=y
  303. CONFIG_SERIAL_8250_CONSOLE=y
  304. CONFIG_SERIAL_8250_EXTENDED=y
  305. CONFIG_SERIAL_8250_SHARE_IRQ=y
  306. CONFIG_SERIAL_8250_BCM2835AUX=y
  307. CONFIG_SERIAL_8250_DW=y
  308. CONFIG_SERIAL_8250_OMAP=y
  309. CONFIG_SERIAL_8250_MT6577=y
  310. CONFIG_SERIAL_8250_UNIPHIER=y
  311. CONFIG_SERIAL_OF_PLATFORM=y
  312. CONFIG_SERIAL_AMBA_PL011=y
  313. CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
  314. CONFIG_SERIAL_MESON=y
  315. CONFIG_SERIAL_MESON_CONSOLE=y
  316. CONFIG_SERIAL_SAMSUNG=y
  317. CONFIG_SERIAL_SAMSUNG_CONSOLE=y
  318. CONFIG_SERIAL_TEGRA=y
  319. CONFIG_SERIAL_TEGRA_TCU=y
  320. CONFIG_SERIAL_IMX=y
  321. CONFIG_SERIAL_IMX_CONSOLE=y
  322. CONFIG_SERIAL_SH_SCI=y
  323. CONFIG_SERIAL_MSM=y
  324. CONFIG_SERIAL_MSM_CONSOLE=y
  325. CONFIG_SERIAL_QCOM_GENI=y
  326. CONFIG_SERIAL_QCOM_GENI_CONSOLE=y
  327. CONFIG_SERIAL_XILINX_PS_UART=y
  328. CONFIG_SERIAL_XILINX_PS_UART_CONSOLE=y
  329. CONFIG_SERIAL_FSL_LPUART=y
  330. CONFIG_SERIAL_FSL_LPUART_CONSOLE=y
  331. CONFIG_SERIAL_MVEBU_UART=y
  332. CONFIG_SERIAL_DEV_BUS=y
  333. CONFIG_VIRTIO_CONSOLE=y
  334. CONFIG_IPMI_HANDLER=m
  335. CONFIG_IPMI_DEVICE_INTERFACE=m
  336. CONFIG_IPMI_SI=m
  337. CONFIG_TCG_TPM=y
  338. CONFIG_TCG_TIS_I2C_INFINEON=y
  339. CONFIG_I2C_CHARDEV=y
  340. CONFIG_I2C_MUX=y
  341. CONFIG_I2C_MUX_PCA954x=y
  342. CONFIG_I2C_BCM2835=m
  343. CONFIG_I2C_DESIGNWARE_PLATFORM=y
  344. CONFIG_I2C_GPIO=m
  345. CONFIG_I2C_IMX=y
  346. CONFIG_I2C_MESON=y
  347. CONFIG_I2C_MV64XXX=y
  348. CONFIG_I2C_PXA=y
  349. CONFIG_I2C_QUP=y
  350. CONFIG_I2C_RK3X=y
  351. CONFIG_I2C_SH_MOBILE=y
  352. CONFIG_I2C_TEGRA=y
  353. CONFIG_I2C_UNIPHIER_F=y
  354. CONFIG_I2C_RCAR=y
  355. CONFIG_I2C_CROS_EC_TUNNEL=y
  356. CONFIG_SPI=y
  357. CONFIG_SPI_ARMADA_3700=y
  358. CONFIG_SPI_BCM2835=m
  359. CONFIG_SPI_BCM2835AUX=m
  360. CONFIG_SPI_NXP_FLEXSPI=y
  361. CONFIG_SPI_MESON_SPICC=m
  362. CONFIG_SPI_MESON_SPIFC=m
  363. CONFIG_SPI_ORION=y
  364. CONFIG_SPI_PL022=y
  365. CONFIG_SPI_ROCKCHIP=y
  366. CONFIG_SPI_QUP=y
  367. CONFIG_SPI_S3C64XX=y
  368. CONFIG_SPI_SPIDEV=m
  369. CONFIG_SPI_SUN6I=y
  370. CONFIG_SPMI=y
  371. CONFIG_PINCTRL_SINGLE=y
  372. CONFIG_PINCTRL_MAX77620=y
  373. CONFIG_PINCTRL_IMX8MQ=y
  374. CONFIG_PINCTRL_IMX8QXP=y
  375. CONFIG_PINCTRL_IPQ8074=y
  376. CONFIG_PINCTRL_MSM8916=y
  377. CONFIG_PINCTRL_MSM8994=y
  378. CONFIG_PINCTRL_MSM8996=y
  379. CONFIG_PINCTRL_MSM8998=y
  380. CONFIG_PINCTRL_QCS404=y
  381. CONFIG_PINCTRL_QDF2XXX=y
  382. CONFIG_PINCTRL_QCOM_SPMI_PMIC=y
  383. CONFIG_PINCTRL_SDM845=y
  384. CONFIG_GPIO_DWAPB=y
  385. CONFIG_GPIO_MB86S7X=y
  386. CONFIG_GPIO_PL061=y
  387. CONFIG_GPIO_RCAR=y
  388. CONFIG_GPIO_UNIPHIER=y
  389. CONFIG_GPIO_XGENE=y
  390. CONFIG_GPIO_XGENE_SB=y
  391. CONFIG_GPIO_PCA953X=y
  392. CONFIG_GPIO_PCA953X_IRQ=y
  393. CONFIG_GPIO_MAX77620=y
  394. CONFIG_POWER_AVS=y
  395. CONFIG_ROCKCHIP_IODOMAIN=y
  396. CONFIG_POWER_RESET_MSM=y
  397. CONFIG_POWER_RESET_XGENE=y
  398. CONFIG_POWER_RESET_SYSCON=y
  399. CONFIG_SYSCON_REBOOT_MODE=y
  400. CONFIG_BATTERY_SBS=m
  401. CONFIG_BATTERY_BQ27XXX=y
  402. CONFIG_SENSORS_ARM_SCPI=y
  403. CONFIG_SENSORS_LM90=m
  404. CONFIG_SENSORS_PWM_FAN=m
  405. CONFIG_SENSORS_RASPBERRYPI_HWMON=m
  406. CONFIG_SENSORS_INA2XX=m
  407. CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y
  408. CONFIG_CPU_THERMAL=y
  409. CONFIG_THERMAL_EMULATION=y
  410. CONFIG_ROCKCHIP_THERMAL=m
  411. CONFIG_RCAR_THERMAL=y
  412. CONFIG_RCAR_GEN3_THERMAL=y
  413. CONFIG_ARMADA_THERMAL=y
  414. CONFIG_BCM2835_THERMAL=m
  415. CONFIG_BRCMSTB_THERMAL=m
  416. CONFIG_EXYNOS_THERMAL=y
  417. CONFIG_TEGRA_BPMP_THERMAL=m
  418. CONFIG_QCOM_TSENS=y
  419. CONFIG_UNIPHIER_THERMAL=y
  420. CONFIG_WATCHDOG=y
  421. CONFIG_ARM_SP805_WATCHDOG=y
  422. CONFIG_S3C2410_WATCHDOG=y
  423. CONFIG_IMX2_WDT=y
  424. CONFIG_MESON_GXBB_WATCHDOG=m
  425. CONFIG_MESON_WATCHDOG=m
  426. CONFIG_RENESAS_WDT=y
  427. CONFIG_UNIPHIER_WATCHDOG=y
  428. CONFIG_BCM2835_WDT=y
  429. CONFIG_MFD_ALTERA_SYSMGR=y
  430. CONFIG_MFD_BD9571MWV=y
  431. CONFIG_MFD_AXP20X_I2C=y
  432. CONFIG_MFD_AXP20X_RSB=y
  433. CONFIG_MFD_CROS_EC=y
  434. CONFIG_MFD_CROS_EC_CHARDEV=m
  435. CONFIG_MFD_EXYNOS_LPASS=m
  436. CONFIG_MFD_HI6421_PMIC=y
  437. CONFIG_MFD_HI655X_PMIC=y
  438. CONFIG_MFD_MAX77620=y
  439. CONFIG_MFD_SPMI_PMIC=y
  440. CONFIG_MFD_RK808=y
  441. CONFIG_MFD_SEC_CORE=y
  442. CONFIG_REGULATOR_FIXED_VOLTAGE=y
  443. CONFIG_REGULATOR_AXP20X=y
  444. CONFIG_REGULATOR_BD9571MWV=y
  445. CONFIG_REGULATOR_FAN53555=y
  446. CONFIG_REGULATOR_GPIO=y
  447. CONFIG_REGULATOR_HI6421V530=y
  448. CONFIG_REGULATOR_HI655X=y
  449. CONFIG_REGULATOR_MAX77620=y
  450. CONFIG_REGULATOR_MAX8973=y
  451. CONFIG_REGULATOR_PFUZE100=y
  452. CONFIG_REGULATOR_PWM=y
  453. CONFIG_REGULATOR_QCOM_RPMH=y
  454. CONFIG_REGULATOR_QCOM_SMD_RPM=y
  455. CONFIG_REGULATOR_QCOM_SPMI=y
  456. CONFIG_REGULATOR_RK808=y
  457. CONFIG_REGULATOR_S2MPS11=y
  458. CONFIG_REGULATOR_VCTRL=m
  459. CONFIG_RC_CORE=m
  460. CONFIG_RC_DECODERS=y
  461. CONFIG_RC_DEVICES=y
  462. CONFIG_IR_MESON=m
  463. CONFIG_MEDIA_SUPPORT=m
  464. CONFIG_MEDIA_CAMERA_SUPPORT=y
  465. CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
  466. CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
  467. CONFIG_MEDIA_CONTROLLER=y
  468. CONFIG_VIDEO_V4L2_SUBDEV_API=y
  469. # CONFIG_DVB_NET is not set
  470. CONFIG_MEDIA_USB_SUPPORT=y
  471. CONFIG_USB_VIDEO_CLASS=m
  472. CONFIG_V4L_PLATFORM_DRIVERS=y
  473. CONFIG_VIDEO_SUN6I_CSI=m
  474. CONFIG_V4L_MEM2MEM_DRIVERS=y
  475. CONFIG_VIDEO_SAMSUNG_S5P_JPEG=m
  476. CONFIG_VIDEO_SAMSUNG_S5P_MFC=m
  477. CONFIG_VIDEO_SAMSUNG_EXYNOS_GSC=m
  478. CONFIG_VIDEO_RENESAS_FCP=m
  479. CONFIG_VIDEO_RENESAS_VSP1=m
  480. CONFIG_DRM=m
  481. CONFIG_DRM_NOUVEAU=m
  482. CONFIG_DRM_EXYNOS=m
  483. CONFIG_DRM_EXYNOS5433_DECON=y
  484. CONFIG_DRM_EXYNOS7_DECON=y
  485. CONFIG_DRM_EXYNOS_DSI=y
  486. # CONFIG_DRM_EXYNOS_DP is not set
  487. CONFIG_DRM_EXYNOS_HDMI=y
  488. CONFIG_DRM_EXYNOS_MIC=y
  489. CONFIG_DRM_ROCKCHIP=m
  490. CONFIG_ROCKCHIP_ANALOGIX_DP=y
  491. CONFIG_ROCKCHIP_CDN_DP=y
  492. CONFIG_ROCKCHIP_DW_HDMI=y
  493. CONFIG_ROCKCHIP_DW_MIPI_DSI=y
  494. CONFIG_ROCKCHIP_INNO_HDMI=y
  495. CONFIG_DRM_RCAR_DU=m
  496. CONFIG_DRM_SUN4I=m
  497. CONFIG_DRM_SUN8I_DW_HDMI=m
  498. CONFIG_DRM_SUN8I_MIXER=m
  499. CONFIG_DRM_TEGRA=m
  500. CONFIG_DRM_PANEL_SIMPLE=m
  501. CONFIG_DRM_SII902X=m
  502. CONFIG_DRM_I2C_ADV7511=m
  503. CONFIG_DRM_VC4=m
  504. CONFIG_DRM_HISI_HIBMC=m
  505. CONFIG_DRM_HISI_KIRIN=m
  506. CONFIG_DRM_MESON=m
  507. CONFIG_DRM_PL111=m
  508. CONFIG_FB=y
  509. CONFIG_FB_MODE_HELPERS=y
  510. CONFIG_BACKLIGHT_GENERIC=m
  511. CONFIG_BACKLIGHT_PWM=m
  512. CONFIG_BACKLIGHT_LP855X=m
  513. CONFIG_LOGO=y
  514. # CONFIG_LOGO_LINUX_MONO is not set
  515. # CONFIG_LOGO_LINUX_VGA16 is not set
  516. CONFIG_SOUND=y
  517. CONFIG_SND=y
  518. CONFIG_SND_HDA_TEGRA=m
  519. CONFIG_SND_HDA_CODEC_HDMI=m
  520. CONFIG_SND_SOC=y
  521. CONFIG_SND_BCM2835_SOC_I2S=m
  522. CONFIG_SND_MESON_AXG_SOUND_CARD=m
  523. CONFIG_SND_SOC_ROCKCHIP=m
  524. CONFIG_SND_SOC_ROCKCHIP_SPDIF=m
  525. CONFIG_SND_SOC_ROCKCHIP_RT5645=m
  526. CONFIG_SND_SOC_RK3399_GRU_SOUND=m
  527. CONFIG_SND_SOC_SAMSUNG=y
  528. CONFIG_SND_SOC_RCAR=m
  529. CONFIG_SND_SOC_AK4613=m
  530. CONFIG_SND_SOC_ES7134=m
  531. CONFIG_SND_SOC_ES7241=m
  532. CONFIG_SND_SOC_PCM3168A_I2C=m
  533. CONFIG_SND_SOC_TAS571X=m
  534. CONFIG_SND_SIMPLE_CARD=m
  535. CONFIG_SND_AUDIO_GRAPH_CARD=m
  536. CONFIG_I2C_HID=m
  537. CONFIG_USB=y
  538. CONFIG_USB_OTG=y
  539. CONFIG_USB_XHCI_HCD=y
  540. CONFIG_USB_XHCI_TEGRA=y
  541. CONFIG_USB_EHCI_HCD=y
  542. CONFIG_USB_EHCI_EXYNOS=y
  543. CONFIG_USB_EHCI_HCD_PLATFORM=y
  544. CONFIG_USB_OHCI_HCD=y
  545. CONFIG_USB_OHCI_EXYNOS=y
  546. CONFIG_USB_OHCI_HCD_PLATFORM=y
  547. CONFIG_USB_RENESAS_USBHS=m
  548. CONFIG_USB_STORAGE=y
  549. CONFIG_USB_MUSB_HDRC=y
  550. CONFIG_USB_MUSB_SUNXI=y
  551. CONFIG_USB_DWC3=y
  552. CONFIG_USB_DWC2=y
  553. CONFIG_USB_CHIPIDEA=y
  554. CONFIG_USB_CHIPIDEA_UDC=y
  555. CONFIG_USB_CHIPIDEA_HOST=y
  556. CONFIG_USB_ISP1760=y
  557. CONFIG_USB_HSIC_USB3503=y
  558. CONFIG_NOP_USB_XCEIV=y
  559. CONFIG_USB_ULPI=y
  560. CONFIG_USB_GADGET=y
  561. CONFIG_USB_RENESAS_USBHS_UDC=m
  562. CONFIG_USB_RENESAS_USB3=m
  563. CONFIG_MMC=y
  564. CONFIG_MMC_BLOCK_MINORS=32
  565. CONFIG_MMC_ARMMMCI=y
  566. CONFIG_MMC_SDHCI=y
  567. CONFIG_MMC_SDHCI_ACPI=y
  568. CONFIG_MMC_SDHCI_PLTFM=y
  569. CONFIG_MMC_SDHCI_OF_ARASAN=y
  570. CONFIG_MMC_SDHCI_OF_ESDHC=y
  571. CONFIG_MMC_SDHCI_CADENCE=y
  572. CONFIG_MMC_SDHCI_ESDHC_IMX=y
  573. CONFIG_MMC_SDHCI_TEGRA=y
  574. CONFIG_MMC_SDHCI_F_SDH30=y
  575. CONFIG_MMC_MESON_GX=y
  576. CONFIG_MMC_SDHCI_MSM=y
  577. CONFIG_MMC_SPI=y
  578. CONFIG_MMC_SDHI=y
  579. CONFIG_MMC_UNIPHIER=y
  580. CONFIG_MMC_DW=y
  581. CONFIG_MMC_DW_EXYNOS=y
  582. CONFIG_MMC_DW_HI3798CV200=y
  583. CONFIG_MMC_DW_K3=y
  584. CONFIG_MMC_DW_ROCKCHIP=y
  585. CONFIG_MMC_SUNXI=y
  586. CONFIG_MMC_BCM2835=y
  587. CONFIG_MMC_SDHCI_XENON=y
  588. CONFIG_NEW_LEDS=y
  589. CONFIG_LEDS_CLASS=y
  590. CONFIG_LEDS_GPIO=y
  591. CONFIG_LEDS_PWM=y
  592. CONFIG_LEDS_SYSCON=y
  593. CONFIG_LEDS_TRIGGER_DISK=y
  594. CONFIG_LEDS_TRIGGER_HEARTBEAT=y
  595. CONFIG_LEDS_TRIGGER_CPU=y
  596. CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
  597. CONFIG_LEDS_TRIGGER_PANIC=y
  598. CONFIG_EDAC=y
  599. CONFIG_EDAC_GHES=y
  600. CONFIG_RTC_CLASS=y
  601. CONFIG_RTC_DRV_MAX77686=y
  602. CONFIG_RTC_DRV_RK808=m
  603. CONFIG_RTC_DRV_RX8581=m
  604. CONFIG_RTC_DRV_S5M=y
  605. CONFIG_RTC_DRV_DS3232=y
  606. CONFIG_RTC_DRV_EFI=y
  607. CONFIG_RTC_DRV_CROS_EC=y
  608. CONFIG_RTC_DRV_S3C=y
  609. CONFIG_RTC_DRV_PL031=y
  610. CONFIG_RTC_DRV_SUN6I=y
  611. CONFIG_RTC_DRV_ARMADA38X=y
  612. CONFIG_RTC_DRV_TEGRA=y
  613. CONFIG_RTC_DRV_IMX_SC=m
  614. CONFIG_RTC_DRV_XGENE=y
  615. CONFIG_DMADEVICES=y
  616. CONFIG_FSL_EDMA=y
  617. CONFIG_DMA_BCM2835=m
  618. CONFIG_K3_DMA=y
  619. CONFIG_MV_XOR=y
  620. CONFIG_MV_XOR_V2=y
  621. CONFIG_PL330_DMA=y
  622. CONFIG_TEGRA20_APB_DMA=y
  623. CONFIG_QCOM_BAM_DMA=y
  624. CONFIG_QCOM_HIDMA_MGMT=y
  625. CONFIG_QCOM_HIDMA=y
  626. CONFIG_RCAR_DMAC=y
  627. CONFIG_RENESAS_USB_DMAC=m
  628. CONFIG_VFIO=y
  629. CONFIG_VFIO_PCI=y
  630. CONFIG_VIRTIO_PCI=y
  631. CONFIG_VIRTIO_BALLOON=y
  632. CONFIG_VIRTIO_MMIO=y
  633. CONFIG_XEN_GNTDEV=y
  634. CONFIG_XEN_GRANT_DEV_ALLOC=y
  635. CONFIG_CROS_EC_I2C=y
  636. CONFIG_CROS_EC_SPI=y
  637. CONFIG_COMMON_CLK_RK808=y
  638. CONFIG_COMMON_CLK_SCPI=y
  639. CONFIG_COMMON_CLK_CS2000_CP=y
  640. CONFIG_COMMON_CLK_S2MPS11=y
  641. CONFIG_CLK_QORIQ=y
  642. CONFIG_COMMON_CLK_PWM=y
  643. CONFIG_CLK_IMX8MQ=y
  644. CONFIG_CLK_IMX8QXP=y
  645. CONFIG_TI_SCI_CLK=y
  646. CONFIG_COMMON_CLK_QCOM=y
  647. CONFIG_QCOM_CLK_SMD_RPM=y
  648. CONFIG_QCOM_CLK_RPMH=y
  649. CONFIG_IPQ_GCC_8074=y
  650. CONFIG_MSM_GCC_8916=y
  651. CONFIG_MSM_GCC_8994=y
  652. CONFIG_MSM_MMCC_8996=y
  653. CONFIG_MSM_GCC_8998=y
  654. CONFIG_QCS_GCC_404=y
  655. CONFIG_SDM_GCC_845=y
  656. CONFIG_HWSPINLOCK=y
  657. CONFIG_HWSPINLOCK_QCOM=y
  658. CONFIG_ARM_MHU=y
  659. CONFIG_IMX_MBOX=y
  660. CONFIG_PLATFORM_MHU=y
  661. CONFIG_BCM2835_MBOX=y
  662. CONFIG_TI_MESSAGE_MANAGER=y
  663. CONFIG_QCOM_APCS_IPC=y
  664. CONFIG_ROCKCHIP_IOMMU=y
  665. CONFIG_TEGRA_IOMMU_SMMU=y
  666. CONFIG_ARM_SMMU=y
  667. CONFIG_ARM_SMMU_V3=y
  668. CONFIG_QCOM_IOMMU=y
  669. CONFIG_REMOTEPROC=m
  670. CONFIG_QCOM_Q6V5_MSS=m
  671. CONFIG_QCOM_Q6V5_PAS=m
  672. CONFIG_QCOM_SYSMON=m
  673. CONFIG_RPMSG_QCOM_GLINK_RPM=y
  674. CONFIG_RPMSG_QCOM_GLINK_SMEM=m
  675. CONFIG_RPMSG_QCOM_SMD=y
  676. CONFIG_RASPBERRYPI_POWER=y
  677. CONFIG_QCOM_COMMAND_DB=y
  678. CONFIG_QCOM_GENI_SE=y
  679. CONFIG_QCOM_GLINK_SSR=m
  680. CONFIG_QCOM_RPMH=y
  681. CONFIG_QCOM_SMEM=y
  682. CONFIG_QCOM_SMD_RPM=y
  683. CONFIG_QCOM_SMP2P=y
  684. CONFIG_QCOM_SMSM=y
  685. CONFIG_ARCH_R8A774A1=y
  686. CONFIG_ARCH_R8A774C0=y
  687. CONFIG_ARCH_R8A7795=y
  688. CONFIG_ARCH_R8A7796=y
  689. CONFIG_ARCH_R8A77965=y
  690. CONFIG_ARCH_R8A77970=y
  691. CONFIG_ARCH_R8A77980=y
  692. CONFIG_ARCH_R8A77990=y
  693. CONFIG_ARCH_R8A77995=y
  694. CONFIG_ROCKCHIP_PM_DOMAINS=y
  695. CONFIG_ARCH_TEGRA_132_SOC=y
  696. CONFIG_ARCH_TEGRA_210_SOC=y
  697. CONFIG_ARCH_TEGRA_186_SOC=y
  698. CONFIG_ARCH_TEGRA_194_SOC=y
  699. CONFIG_ARCH_K3_AM6_SOC=y
  700. CONFIG_SOC_TI=y
  701. CONFIG_TI_SCI_PM_DOMAINS=y
  702. CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
  703. CONFIG_EXTCON_USB_GPIO=y
  704. CONFIG_EXTCON_USBC_CROS_EC=y
  705. CONFIG_MEMORY=y
  706. CONFIG_IIO=y
  707. CONFIG_EXYNOS_ADC=y
  708. CONFIG_ROCKCHIP_SARADC=m
  709. CONFIG_IIO_CROS_EC_SENSORS_CORE=m
  710. CONFIG_IIO_CROS_EC_SENSORS=m
  711. CONFIG_IIO_CROS_EC_LIGHT_PROX=m
  712. CONFIG_IIO_CROS_EC_BARO=m
  713. CONFIG_PWM=y
  714. CONFIG_PWM_BCM2835=m
  715. CONFIG_PWM_CROS_EC=m
  716. CONFIG_PWM_MESON=m
  717. CONFIG_PWM_RCAR=m
  718. CONFIG_PWM_ROCKCHIP=y
  719. CONFIG_PWM_SAMSUNG=y
  720. CONFIG_PWM_SUN4I=m
  721. CONFIG_PWM_TEGRA=m
  722. CONFIG_RESET_TI_SCI=y
  723. CONFIG_PHY_XGENE=y
  724. CONFIG_PHY_SUN4I_USB=y
  725. CONFIG_PHY_HI6220_USB=y
  726. CONFIG_PHY_HISTB_COMBPHY=y
  727. CONFIG_PHY_HISI_INNO_USB2=y
  728. CONFIG_PHY_MVEBU_CP110_COMPHY=y
  729. CONFIG_PHY_QCOM_QMP=m
  730. CONFIG_PHY_QCOM_USB_HS=y
  731. CONFIG_PHY_RCAR_GEN3_PCIE=y
  732. CONFIG_PHY_RCAR_GEN3_USB2=y
  733. CONFIG_PHY_RCAR_GEN3_USB3=m
  734. CONFIG_PHY_ROCKCHIP_EMMC=y
  735. CONFIG_PHY_ROCKCHIP_INNO_HDMI=m
  736. CONFIG_PHY_ROCKCHIP_INNO_USB2=y
  737. CONFIG_PHY_ROCKCHIP_PCIE=m
  738. CONFIG_PHY_ROCKCHIP_TYPEC=y
  739. CONFIG_PHY_UNIPHIER_USB2=y
  740. CONFIG_PHY_UNIPHIER_USB3=y
  741. CONFIG_PHY_TEGRA_XUSB=y
  742. CONFIG_HISI_PMU=y
  743. CONFIG_QCOM_L2_PMU=y
  744. CONFIG_QCOM_L3_PMU=y
  745. CONFIG_QCOM_QFPROM=y
  746. CONFIG_ROCKCHIP_EFUSE=y
  747. CONFIG_UNIPHIER_EFUSE=y
  748. CONFIG_MESON_EFUSE=m
  749. CONFIG_FPGA=y
  750. CONFIG_FPGA_MGR_STRATIX10_SOC=m
  751. CONFIG_FPGA_BRIDGE=m
  752. CONFIG_ALTERA_FREEZE_BRIDGE=m
  753. CONFIG_FPGA_REGION=m
  754. CONFIG_OF_FPGA_REGION=m
  755. CONFIG_TEE=y
  756. CONFIG_OPTEE=y
  757. CONFIG_EXT2_FS=y
  758. CONFIG_EXT3_FS=y
  759. CONFIG_EXT4_FS_POSIX_ACL=y
  760. CONFIG_BTRFS_FS=m
  761. CONFIG_BTRFS_FS_POSIX_ACL=y
  762. CONFIG_FANOTIFY=y
  763. CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
  764. CONFIG_QUOTA=y
  765. CONFIG_AUTOFS4_FS=y
  766. CONFIG_FUSE_FS=m
  767. CONFIG_CUSE=m
  768. CONFIG_OVERLAY_FS=m
  769. CONFIG_VFAT_FS=y
  770. CONFIG_HUGETLBFS=y
  771. CONFIG_CONFIGFS_FS=y
  772. CONFIG_EFIVAR_FS=y
  773. CONFIG_SQUASHFS=y
  774. CONFIG_NFS_FS=y
  775. CONFIG_NFS_V4=y
  776. CONFIG_NFS_V4_1=y
  777. CONFIG_NFS_V4_2=y
  778. CONFIG_ROOT_NFS=y
  779. CONFIG_9P_FS=y
  780. CONFIG_NLS_CODEPAGE_437=y
  781. CONFIG_NLS_ISO8859_1=y
  782. CONFIG_SECURITY=y
  783. CONFIG_CRYPTO_ECHAINIV=y
  784. CONFIG_CRYPTO_ANSI_CPRNG=y
  785. CONFIG_DMA_CMA=y
  786. CONFIG_CMA_SIZE_MBYTES=32
  787. CONFIG_PRINTK_TIME=y
  788. CONFIG_DEBUG_INFO=y
  789. CONFIG_DEBUG_FS=y
  790. CONFIG_MAGIC_SYSRQ=y
  791. CONFIG_DEBUG_KERNEL=y
  792. # CONFIG_SCHED_DEBUG is not set
  793. # CONFIG_DEBUG_PREEMPT is not set
  794. # CONFIG_FTRACE is not set
  795. CONFIG_MEMTEST=y
View Code

在linux内核根目录下执行如下命令,执行完之后会在内核根目录下生成默认配置文件.config:

  1. root@zhengyang:/work/sambashare/rk3399/linux-5.2.8# make defconfig
  2. HOSTCC scripts/basic/fixdep
  3. HOSTCC scripts/kconfig/conf.o
  4. HOSTCC scripts/kconfig/confdata.o
  5. HOSTCC scripts/kconfig/expr.o
  6. LEX scripts/kconfig/lexer.lex.c
  7. YACC scripts/kconfig/parser.tab.h
  8. HOSTCC scripts/kconfig/lexer.lex.o
  9. YACC scripts/kconfig/parser.tab.c
  10. HOSTCC scripts/kconfig/parser.tab.o
  11. HOSTCC scripts/kconfig/preprocess.o
  12. HOSTCC scripts/kconfig/symbol.o
  13. HOSTLD scripts/kconfig/conf
  14. *** Default configuration is based on 'defconfig'
  15. #
  16. # configuration written to .config
  17. #
1.4 内核裁切

我们可以通过make menuconfig配置内核支持的功能:

root@zhengyang:/work/sambashare/rk3399/linux-5.2.8# make menuconfig

打开如下页面:

1.4.1 支持设备树

实际上在linux 5.2.8版本内核已经把设备树作为默认配置项了,因此也不需要我们配置了。

内核在启动时,会执行setup_arch函数,该函数用于在内核启动期间对硬件进行初始化,包括设置 CPU、内存、设备树等等。该函数的实现是针对特定架构的,因此不同的架构会有不同的 setup_arch实现。以ARM(非ARM64)为例:

  1. setup_arch(&command_line); // arch/arm/kernel/setup.c
  2. mdesc = setup_machine_fdt(__atags_pointer); // arch/arm/kernel/devtree.c
  3. // 检验设备树头部,判断设备树有效性
  4. early_init_dt_verify(phys_to_virt(dt_phys) // drivers/of/fdt.c
  5. initial_boot_params = params;
  6. // 找到最匹配的machine_desc
  7. mdesc = of_flat_dt_match_machine(mdesc_best, arch_get_next_mach); // drivers/of/fdt.c
  8. early_init_dt_scan_nodes() // drivers/of/fdt.c
  9. // 从dtb文件中读取chosen节点的信息,包括命令行boot_command_line,initrd locationsize
  10. of_scan_flat_dt(early_init_dt_scan_chosen, boot_command_line)
  11. // 得到根节点的 #address-cells 和 #size-cells属性信息
  12. of_scan_flat_dt(early_init_dt_scan_root, NULL)
  13. // 得到/memory节点的reg属性
  14. of_scan_flat_dt(early_init_dt_scan_memory, NULL)
  15. machine_desc = mdesc;
  16. ......

of_flat_dt_match_machine函数通过遍历所有的machine_desc,找到与设备树中compatible最匹配的一个machine_desc(每一个开发板都对应一个machine_desc,通过它定义开发板相关的一些属性及函数,比如机器类型ID、中断初始化函数、I/O映射函数、machine初始化函数等;这些函数会在内核启动阶段被回调,在较早的版本中,init_machine会包含大量的平台设备注册的代码)。

然而在ARM64中,其实现发生了改变:

  1. setup_arch(&command_line); // arch/arm64/kernel/setup.c
  2. // 参数为dtb在内存的首地址
  3. setup_machine_fdt(__fdt_pointer) // arch/arm64/kernel/setup.c
  4. // 为fdt建立地址映射,在该函数的最后,顺便就调用memblock_reserve保留了该段内存
  5. void *dt_virt = fixmap_remap_fdt(dt_phys)
  6. // 校验并解析dtb文件
  7. early_init_dt_scan(dt_virt) // drivers/of/fdt.c
  8. // 检验设备树头部,判断设备树有效性
  9. early_init_dt_verify()
  10. early_init_dt_scan_nodes() // drivers/of/fdt.c
  11. // 从dtb文件中读取chosen节点的信息,包括命令行boot_command_line,initrd locationsize
  12. of_scan_flat_dt(early_init_dt_scan_chosen, boot_command_line)
  13. // 得到根节点的 #address-cells 和 #size-cells属性信息
  14. of_scan_flat_dt(early_init_dt_scan_root, NULL)
  15. // 得到/memory节点的reg属性
  16. of_scan_flat_dt(early_init_dt_scan_memory, NULL)
  17. // 获取machine名称
  18. name = of_flat_dt_get_machine_name(); // drivers/of/fdt.c
  19. // 获取设备树的根节点
  20. unsigned long dt_root = of_get_flat_dt_root()
  21. // 这里直接获取设备树的model属性
  22. name = of_get_flat_dt_prop(dt_root, "model", NULL)
  23. parse_early_param();
  24. ......
  25. arm64_memblock_init()
  26. ......
  27. // 解析dtb文件,转换成节点是device_node的树状结构, 其中设备节点会被转换为device_node结构
  28. unflatten_device_tree() ......

可以看到这里没有了设备树和machine_desc的匹配过程了,也就是说ARM64已经完全抛弃了machine_desc,全部采用设备树的实现方式,关于为什么要采用设备树我在设备树章节已经具体介绍过。

1.4.2 支持NFS文件系统

使用NFS作为根文件系统,因为文件系统在宿主机中,这样在修改文件系统就非常方便,主要用于开发阶段使用。

  1. File systems --->
  2. [*] Network File Systems --->
  3. <*> NFS client support for NFS version 4

勾选NFS client support for NFS version 4。

1.4.3 配置uevent helper

配置Support for uevent helper;

  1. Device Drivers --->
  2. Generic Driver Options --->
  3. [*] Support for uevent helper
  4. (/sb
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/712514
推荐阅读
相关标签
  

闽ICP备14008679号