# SPDX-License-Identifier: GPL-2.0 load("@rules_pkg//pkg:install.bzl", "pkg_install") load("@rules_pkg//pkg:mappings.bzl", "pkg_files", "strip_prefix") load("//build/kernel/kleaf:hermetic_tools.bzl", "hermetic_genrule") load( "//build/kernel/kleaf:kernel.bzl", "ddk_uapi_headers", "kernel_abi", "kernel_build", "kernel_module_group", "kernel_modules_install", ) config_setting( name = "config_arm", values = {"cpu": "arm"}, ) _TEGRA_AARCH64_MODULES_LIST = [ # keep sorted "drivers/bluetooth/btintel.ko", "drivers/bluetooth/btrtl.ko", "drivers/bluetooth/btusb.ko", "drivers/bus/tegra-aconnect.ko", "drivers/cpufreq/cpufreq-dt.ko", "drivers/cpufreq/cpufreq-dt-platdev.ko", "drivers/cpufreq/tegra124-cpufreq.ko", "drivers/cpufreq/tegra186-cpufreq.ko", "drivers/cpufreq/tegra194-cpufreq.ko", "drivers/devfreq/tegra30-devfreq.ko", "drivers/dma/tegra186-gpc-dma.ko", "drivers/dma/tegra20-apb-dma.ko", "drivers/dma/tegra210-adma.ko", "drivers/dma-buf/heaps/system_heap.ko", "drivers/firmware/qcom/qcom-scm.ko", "drivers/firmware/qcom/qcom_tzmem.ko", "drivers/gpio/gpio-max77620.ko", "drivers/gpio/gpio-pca953x.ko", "drivers/gpio/gpio-tegra.ko", "drivers/gpio/gpio-tegra186.ko", "drivers/gpu/drm/bridge/analogix/anx7625.ko", "drivers/gpu/drm/display/drm_display_helper.ko", "drivers/gpu/drm/display/drm_dp_aux_bus.ko", "drivers/gpu/drm/nouveau/nouveau.ko", "drivers/gpu/drm/panel/panel-nx-dsi.ko", "drivers/gpu/drm/panel/panel-simple.ko", "drivers/gpu/drm/scheduler/gpu-sched.ko", "drivers/gpu/drm/tegra/tegra-drm.ko", "drivers/gpu/drm/drm_exec.ko", "drivers/gpu/drm/drm_gpuvm.ko", "drivers/gpu/drm/drm_ttm_helper.ko", "drivers/gpu/host1x/host1x.ko", "drivers/hid/hid-nvidia-shield.ko", "drivers/hwmon/hwmon.ko", "drivers/hwmon/ina3221.ko", "drivers/hwmon/lm90.ko", "drivers/hwmon/pwm-fan.ko", "drivers/i2c/algos/i2c-algo-bit.ko", "drivers/i2c/busses/i2c-tegra.ko", "drivers/i2c/busses/i2c-tegra-bpmp.ko", "drivers/i2c/i2c-dev.ko", "drivers/i2c/i2c-mux.ko", "drivers/iio/buffer/industrialio-triggered-buffer.ko", "drivers/iio/buffer/kfifo_buf.ko", "drivers/iio/common/inv_sensors/inv_sensors_timestamp.ko", "drivers/iio/imu/inv_mpu6050/inv-mpu6050.ko", "drivers/iio/imu/inv_mpu6050/inv-mpu6050-i2c.ko", "drivers/input/touchscreen/stm/ftm4.ko", "drivers/iommu/arm/arm-smmu/arm_smmu.ko", "drivers/media/cec/platform/tegra/tegra_cec.ko", "drivers/mfd/max77620.ko", "drivers/mmc/host/cqhci.ko", "drivers/mmc/host/sdhci-tegra.ko", "drivers/mtd/chips/chipreg.ko", "drivers/mtd/parsers/ofpart.ko", "drivers/mtd/spi-nor/spi-nor.ko", "drivers/mtd/mtd.ko", "drivers/mtd/mtd_blkdevs.ko", "drivers/mtd/mtdblock.ko", "drivers/net/ethernet/realtek/r8169.ko", "drivers/net/ethernet/stmicro/stmmac/dwmac-dwc-qos-eth.ko", "drivers/net/ethernet/stmicro/stmmac/dwmac-tegra.ko", "drivers/net/ethernet/stmicro/stmmac/stmmac.ko", "drivers/net/ethernet/stmicro/stmmac/stmmac-platform.ko", "drivers/net/pcs/pcs_xpcs.ko", "drivers/net/phy/realtek.ko", "drivers/net/wireless/broadcom/brcm80211/brcmfmac/bca/brcmfmac-bca.ko", "drivers/net/wireless/broadcom/brcm80211/brcmfmac/cyw/brcmfmac-cyw.ko", "drivers/net/wireless/broadcom/brcm80211/brcmfmac/wcc/brcmfmac-wcc.ko", "drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko", "drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil.ko", "drivers/net/wireless/realtek/rtw88/rtw88_8822c.ko", "drivers/net/wireless/realtek/rtw88/rtw88_8822ce.ko", "drivers/net/wireless/realtek/rtw88/rtw88_core.ko", "drivers/net/wireless/realtek/rtw88/rtw88_pci.ko", "drivers/pci/controller/dwc/pcie-tegra194.ko", "drivers/pci/controller/pci-tegra.ko", "drivers/phy/tegra/phy-tegra-xusb.ko", "drivers/phy/tegra/phy-tegra194-p2u.ko", "drivers/pinctrl/pinctrl-max77620.ko", "drivers/power/supply/bq24190_charger.ko", "drivers/power/supply/bq27xxx_battery.ko", "drivers/power/supply/bq27xxx_battery_i2c.ko", "drivers/pwm/pwm-tegra.ko", "drivers/regulator/max77620-regulator.ko", "drivers/regulator/max77812-regulator.ko", "drivers/regulator/pwm-regulator.ko", "drivers/rtc/rtc-max77686.ko", "drivers/rtc/rtc-tegra.ko", "drivers/spi/spi-tegra114.ko", "drivers/spi/spi-tegra210-quad.ko", "drivers/tee/optee/optee.ko", "drivers/tee/tee.ko", "drivers/thermal/tegra/tegra-bpmp-thermal.ko", "drivers/thermal/tegra/tegra-soctherm.ko", "drivers/tty/serial/serial-tegra.ko", "drivers/usb/common/usb-conn-gpio.ko", "drivers/usb/gadget/udc/tegra-xudc.ko", "drivers/usb/typec/bm92txx.ko", "drivers/usb/typec/ucsi/ucsi_ccg.ko", "drivers/usb/host/xhci-tegra.ko", "drivers/video/backlight/pwm_bl.ko", "fs/efivarfs/efivarfs.ko", "net/mac80211/mac80211.ko", "net/wireless/cfg80211.ko", "sound/hda/snd-hda-core.ko", "sound/pci/hda/snd-hda-codec.ko", "sound/pci/hda/snd-hda-codec-hdmi.ko", "sound/pci/hda/snd-hda-tegra.ko", "sound/soc/codecs/snd-soc-rl6231.ko", "sound/soc/codecs/snd-soc-rt5640.ko", "sound/soc/codecs/snd-soc-rt5659.ko", "sound/soc/generic/snd-soc-audio-graph-card.ko", "sound/soc/generic/snd-soc-simple-card-utils.ko", "sound/soc/tegra/snd-soc-tegra-audio-graph-card.ko", "sound/soc/tegra/snd-soc-tegra-pcm.ko", ] _TEGRA_AARCH64_DTB_LIST = [ # keep sorted "tegra186-quill-p3310-1000-c03-00-base.dtb", "tegra186-p3636-0001-p3509-0000-a01-android.dtb", "tegra194-p2888-0001-p2822-0000.dtb", "tegra194-p3668-0000-p3509-0000-android.dtb", "tegra194-p3668-0001-p3509-0000-android.dtb", "tegra194-p2888-0001-p2822-0000-overlay.dtbo", "tegra194-p2888-0005-overlay.dtbo", "tegra194-p3668-p3509-overlay.dtbo", "tegra210-baracus.dtb", "tegra210-darcy-p2894-0000-a00-00.dtb", "tegra210-darcy-p2894-0050-a04-00.dtb", "tegra210-darcy-p2894-0050-a08-00.dtb", "tegra210-darcy-p2894-0052-a08-00.dtb", "tegra210-foster-e-hdd-cpc-p2530-0933-e03-00.dtb", "tegra210-foster-e-hdd-p2530-0932-e01-00.dtb", "tegra210-foster-e-hdd-p2530-0932-e02-00.dtb", "tegra210-foster-e-p2530-0930-e01-00.dtb", "tegra210-foster-e-p2530-0930-e02-00.dtb", "tegra210-jetson-tx1-p2597-2180-a01-android-devkit.dtb", "tegra210-loki-e-p2530-0030-e01-00.dtb", "tegra210-loki-e-p2530-0030-e02-00.dtb", "tegra210-loki-e-p2530-0030-e03-00.dtb", "tegra210-loki-e-p2530-0031-e01-00.dtb", "tegra210-loki-e-p2530-0031-e02-00.dtb", "tegra210-loki-e-p2530-0031-e03-00.dtb", "tegra210-p3448-0000-p3449-0000-a02-android-devkit.dtb", "tegra210-p3448-0000-p3449-0000-b00-android-devkit.dtb", "tegra210-p3448-0002-p3449-0000-a02-android-devkit.dtb", "tegra210-p3448-0002-p3449-0000-b00-android-devkit.dtb", "tegra210-p3448-0003-p3542-0000-android-devkit.dtb", "tegra210b01-darcy-p2894-0050-a08-00.dtb", "tegra210b01-darcy-p2894-2551-b00-00.dtb", "tegra210b01-darcy-p2894-3551-b03-00.dtb", "tegra210b01-sif-p3425-0500-a01.dtb", "tegra210b01-sif-p3425-0500-a02.dtb", "tegra210b01-sif-p3425-0500-a04.dtb", "tegra210-odin.dtb", "tegra210b01-odin.dtb", "tegra210b01-vali.dtb", "tegra210b01-fric.dtb", "tegra234-carveouts.dtbo", "tegra234-p3701-0000-p3737-0000.dtb", "tegra234-p3701-0004-p3737-0000.dtb", "tegra234-p3767-0000-p3768-0000-a0-android.dtb", "tegra234-p3767-0001-p3768-0000-a0-android.dtb", "tegra234-p3767-0003-p3768-0000-a0-android.dtb", "tegra234-p3767-0004-p3768-0000-a0-android.dtb", "tegra234-p3737-audio-codec-rt5658-40pin.dtbo", "tegra234-p3737-overlay.dtbo", "tegra234-p3701-overlay.dtbo", "tegra234-p3767-overlay.dtbo", "tegra234-optee.dtb", ] kernel_build( name = "kernel_aarch64_tegra", srcs = ["//vendor/nvidia/kernel:kernel_aarch64_sources",], dtstree = "//vendor/nvidia/tegra/dts:tegra_dts", outs = _TEGRA_AARCH64_DTB_LIST, arch = "arm64", # Enable mixed build. base_kernel = "//vendor/nvidia/kernel:kernel_aarch64", collect_unstripped_modules = True, defconfig = "//vendor/nvidia/kernel:arch/arm64/configs/gki_defconfig", kmi_symbol_list = "//vendor/nvidia/kernel:gki/aarch64/symbols/tegra", make_goals = [ "modules", "dtbs", ], makefile = "//vendor/nvidia/kernel:Makefile", module_outs = _TEGRA_AARCH64_MODULES_LIST, pre_defconfig_fragments = ["tegra_aarch64.fragment"], strip_modules = True, ) _TEGRA_ARM_MODULES_LIST = [ # keep sorted "drivers/cpufreq/cpufreq-dt.ko", "drivers/cpufreq/cpufreq-dt-platdev.ko", "drivers/cpufreq/tegra20-cpufreq.ko", "drivers/cpufreq/tegra124-cpufreq.ko", "drivers/devfreq/tegra30-devfreq.ko", "drivers/dma/tegra20-apb-dma.ko", "drivers/dma-buf/heaps/system_heap.ko", "drivers/extcon/extcon-palmas.ko", "drivers/gpio/gpio-palmas.ko", "drivers/gpio/gpio-tegra.ko", "drivers/gpu/drm/display/drm_display_helper.ko", "drivers/gpu/drm/display/drm_dp_aux_bus.ko", "drivers/gpu/drm/i2c/ch7006.ko", "drivers/gpu/drm/i2c/sil164.ko", "drivers/gpu/drm/nouveau/nouveau.ko", "drivers/gpu/drm/panel/panel-sharp-lq079l1sx01.ko", "drivers/gpu/drm/panel/panel-simple.ko", "drivers/gpu/drm/scheduler/gpu-sched.ko", "drivers/gpu/drm/tegra/tegra-drm.ko", "drivers/gpu/drm/drm_exec.ko", "drivers/gpu/drm/drm_gpuvm.ko", "drivers/gpu/drm/drm_ttm_helper.ko", "drivers/gpu/host1x/host1x.ko", "drivers/hid/hid-nvidia-shield.ko", "drivers/hwmon/hwmon.ko", "drivers/hwmon/ina3221.ko", "drivers/hwmon/lm90.ko", "drivers/hwmon/pwm-fan.ko", "drivers/i2c/algos/i2c-algo-bit.ko", "drivers/i2c/busses/i2c-tegra.ko", "drivers/i2c/i2c-dev.ko", "drivers/i2c/i2c-mux.ko", "drivers/iio/buffer/industrialio-triggered-buffer.ko", "drivers/iio/buffer/kfifo_buf.ko", "drivers/iio/common/inv_sensors/inv_sensors_timestamp.ko", "drivers/iio/imu/inv_mpu6050/inv-mpu6050.ko", "drivers/iio/imu/inv_mpu6050/inv-mpu6050-i2c.ko", "drivers/media/cec/platform/tegra/tegra_cec.ko", "drivers/media/platform/nvidia/tegra-vde/tegra-vde.ko", "drivers/media/v4l2-core/v4l2-h264.ko", "drivers/mfd/mfd-core.ko", "drivers/mfd/palmas.ko", "drivers/mmc/host/cqhci.ko", "drivers/mmc/host/sdhci-tegra.ko", "drivers/net/wireless/broadcom/brcm80211/brcmfmac/bca/brcmfmac-bca.ko", "drivers/net/wireless/broadcom/brcm80211/brcmfmac/cyw/brcmfmac-cyw.ko", "drivers/net/wireless/broadcom/brcm80211/brcmfmac/wcc/brcmfmac-wcc.ko", "drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko", "drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil.ko", "drivers/pci/controller/pci-tegra.ko", "drivers/phy/tegra/phy-tegra-xusb.ko", "drivers/pinctrl/pinctrl-palmas.ko", "drivers/power/supply/bq24190_charger.ko", "drivers/power/supply/bq27xxx_battery.ko", "drivers/power/supply/bq27xxx_battery_i2c.ko", "drivers/pwm/pwm-tegra.ko", "drivers/regulator/palmas-regulator.ko", "drivers/regulator/pwm-regulator.ko", "drivers/rtc/rtc-palmas.ko", "drivers/rtc/rtc-tegra.ko", "drivers/spi/spi-tegra114.ko", "drivers/thermal/tegra/tegra-soctherm.ko", "drivers/tty/serial/serial-tegra.ko", "drivers/usb/chipidea/ci_hdrc.ko", "drivers/usb/chipidea/ci_hdrc_tegra.ko", "drivers/usb/common/ulpi.ko", "drivers/usb/common/usb-conn-gpio.ko", "drivers/usb/host/xhci-tegra.ko", "drivers/usb/phy/phy-tegra-usb.ko", "drivers/watchdog/tegra_wdt.ko", "drivers/video/backlight/lp855x_bl.ko", "drivers/video/backlight/pwm_bl.ko", "net/wireless/cfg80211.ko", "sound/hda/snd-hda-core.ko", "sound/pci/hda/snd-hda-codec.ko", "sound/pci/hda/snd-hda-codec-hdmi.ko", "sound/pci/hda/snd-hda-tegra.ko", "sound/soc/codecs/snd-soc-rl6231.ko", "sound/soc/codecs/snd-soc-rt5640.ko", "sound/soc/tegra/snd-soc-tegra-machine.ko", "sound/soc/tegra/snd-soc-tegra-pcm.ko", "sound/soc/tegra/snd-soc-tegra30-ahub.ko", "sound/soc/tegra/snd-soc-tegra30-i2s.ko", ] _TEGRA_ARM_DTB_LIST = [ # keep sorted "tegra124-ardbeg.dtb", "tegra124-jetson-tk1-android.dtb", "tegra124-loki-e2530-0000-a01.dtb", "tegra124-loki-e2530-0000-c00.dtb", "tegra124-loki-e2530-0100-a01.dtb", "tegra124-loki-e2530-0100-c00.dtb", "tegra124-tn8.dtb", "tegra124-xiaomi-mocha-android.dtb", ] kernel_build( name = "kernel_arm_tegra", srcs = ["//vendor/nvidia/kernel:kernel_arm_sources",], dtstree = "//vendor/nvidia/tegra/dts:tegra_dts", outs = _TEGRA_ARM_DTB_LIST, arch = "arm", # Enable mixed build. base_kernel = "//vendor/nvidia/kernel:kernel_arm", collect_unstripped_modules = True, defconfig = "//vendor/nvidia/kernel:arch/arm/configs/gki_defconfig", kmi_symbol_list = "//vendor/nvidia/kernel:gki/arm/symbols/tegra", make_goals = [ "modules", "dtbs", ], makefile = "//vendor/nvidia/kernel:Makefile", module_outs = _TEGRA_ARM_MODULES_LIST, pre_defconfig_fragments = ["tegra_arm.fragment"], strip_modules = True, ) alias( name = "kernel_tegra", actual = select({ "config_arm": ":kernel_arm_tegra", "//conditions:default": ":kernel_aarch64_tegra", }), visibility = ["//visibility:public"], ) alias( name = "kernel_tegra_headers", actual = select({ "config_arm": ":kernel_arm_tegra_headers", "//conditions:default": ":kernel_aarch64_tegra_headers", }), visibility = ["//visibility:public"], ) alias( name = "kernel_tegra_uapi_headers", actual = select({ "config_arm": ":kernel_arm_tegra_uapi_headers", "//conditions:default": ":kernel_aarch64_tegra_uapi_headers", }), ) kernel_module_group( name = "tegra_aarch64_external_modules", srcs = [ "//vendor/nvidia/hwpm:nvhwpm", "//vendor/nvidia/nvidia-oot:host1x", "//vendor/nvidia/nvidia-oot:host1x-nvhost", "//vendor/nvidia/nvidia-oot:tegra-drm", "//vendor/nvidia/nvidia-oot:snd-soc-tegra-utils", "//vendor/nvidia/nvidia-oot:snd-soc-tegra210-ahub", "//vendor/nvidia/nvidia-oot:snd-soc-tegra210-dmic", "//vendor/nvidia/nvidia-oot:snd-soc-tegra210-i2s", "//vendor/nvidia/nvidia-oot:snd-soc-tegra210-admaif", "//vendor/nvidia/nvidia-oot:snd-soc-tegra210-amx", "//vendor/nvidia/nvidia-oot:snd-soc-tegra210-adx", "//vendor/nvidia/nvidia-oot:snd-soc-tegra210-mixer", "//vendor/nvidia/nvidia-oot:snd-soc-tegra210-sfc", "//vendor/nvidia/nvidia-oot:snd-soc-tegra210-afc", "//vendor/nvidia/nvidia-oot:snd-soc-tegra210-mvc", "//vendor/nvidia/nvidia-oot:snd-soc-tegra210-iqc", "//vendor/nvidia/nvidia-oot:snd-soc-tegra210-ope", "//vendor/nvidia/nvidia-oot:snd-soc-tegra186-dspk", "//vendor/nvidia/nvidia-oot:snd-soc-tegra186-arad", "//vendor/nvidia/nvidia-oot:snd-soc-tegra186-asrc", "//vendor/nvidia/nvidia-oot:snd-soc-tegra-machine-driver", "//vendor/nvidia/nvidia-oot:governor_pod_scaling", "//vendor/nvidia/nvidia-oot:pwm-tegra-tachometer", "//vendor/nvidia/nvidia-oot:nvpmodel-clk-cap", "//vendor/nvidia/nvidia-oot:tegra_bpmp", "//vendor/nvidia/nvidia-oot:nvidia-vrs-pseq", "//vendor/nvidia/nvidia-oot:mc-utils", "//vendor/nvidia/nvidia-oot:tegra-dce", "//vendor/nvidia/nvidia-oot:tegra-se", "//vendor/nvidia/nvidia-oot:tsecriscv", "//vendor/nvidia/nvidia-oot:fusb301", "//vendor/nvidia/nvidia-oot:nvsciipc", "//vendor/nvidia/nvidia-oot:nvmap", "//vendor/nvidia/lineage-oot:hid-nvidia-shield-oot", "//vendor/nvidia/lineage-oot:panel-jdi-58-1440-810", "//vendor/nvidia/lineage-oot:rm31080a_ctrl", "//vendor/nvidia/lineage-oot:rm31080a_ts", "//vendor/nvidia/lineage-oot:max77620-restart", "//vendor/nvidia/lineage-oot:snd-soc-es755", "//vendor/nvidia/display:openrm", "//vendor/nvidia/nvgpu:nvgpu", ], ) kernel_module_group( name = "tegra_arm_external_modules", srcs = [ "//vendor/nvidia/lineage-oot:hid-nvidia-shield-oot", "//vendor/nvidia/lineage-oot:panel-jdi-58-1440-810", "//vendor/nvidia/lineage-oot:rm31080a_ctrl", "//vendor/nvidia/lineage-oot:rm31080a_ts", "//vendor/nvidia/lineage-oot:lc709203f_battery", "//vendor/nvidia/lineage-oot:palmas-poweroff", ], ) alias( name = "tegra_external_modules", actual = select({ "config_arm": ":tegra_arm_external_modules", "//conditions:default": ":tegra_aarch64_external_modules", }), visibility = ["//visibility:public"], ) kernel_modules_install( name = "tegra_modules_install", kernel_build = ":kernel_tegra", outs = [ "modules.dep", "modules.alias", ], kernel_modules = [ ":tegra_external_modules", ], ) ddk_uapi_headers( name = "tegra_ddk_uapi_headers", srcs = [ "//vendor/nvidia/hwpm:uapi_headers", "//vendor/nvidia/nvidia-oot:uapi_headers", ], out = "ddk-uapi-headers.tar.gz", kernel_build = ":kernel_tegra", ) hermetic_genrule( name = "tegra_merged_kernel_uapi_headers", srcs = [ ":kernel_tegra_uapi_headers", ":tegra_ddk_uapi_headers", ], outs = [ "kernel-uapi-headers.tar.gz", ], cmd = """ mkdir -p out mkdir -p vendor/nvidia/tegra tar -xzf $$(find bazel-out/ -name kernel-uapi-headers.tar.gz -print -quit) -C out tar -xzf $$(find bazel-out/ -name ddk-uapi-headers.tar.gz -print -quit) -C out tar -czf $(@D)/kernel-uapi-headers.tar.gz . -C out """, ) pkg_files( name = "tegra_uapi_headers_dist_files", srcs = [ ":tegra_merged_kernel_uapi_headers", ], strip_prefix = strip_prefix.files_only(), ) pkg_install( name = "tegra_uapi_headers_dist", srcs = [":tegra_uapi_headers_dist_files"], destdir = "out/tegra/dist", ) filegroup( name = "tegra_gki_files", srcs = select({ ":config_arm": [ "//vendor/nvidia/kernel:kernel_arm", "//vendor/nvidia/kernel:kernel_arm_modules", "//vendor/nvidia/kernel:kernel_arm_system_dlkm_image", ], "//conditions:default": [ "//vendor/nvidia/kernel:kernel_aarch64", "//vendor/nvidia/kernel:kernel_aarch64_modules", "//vendor/nvidia/kernel:kernel_aarch64_system_dlkm_image", ], }), ) pkg_files( name = "tegra_dist_files", srcs = [ ":kernel_tegra", ":tegra_modules_install", ":tegra_merged_kernel_uapi_headers", # Mixed build: Additional GKI artifacts. ":tegra_gki_files", ], strip_prefix = strip_prefix.files_only(), ) pkg_install( name = "tegra_dist", srcs = [":tegra_dist_files"], destdir = "out/tegra/dist", ) kernel_abi( name = "tegra_abi", kernel_build = ":kernel_tegra", kernel_modules = [":tegra_external_modules"], )