diff --git a/AndroidBoard.mk b/AndroidBoard.mk index f33b4fb..fcd669e 100644 --- a/AndroidBoard.mk +++ b/AndroidBoard.mk @@ -14,17 +14,27 @@ INSTALLED_KERNEL_TARGET := $(PRODUCT_OUT)/kernel -DTB_SUBFOLDER := nvidia/ +ifneq ($(TARGET_PREBUILT_KERNEL),) +DTB_PATH := $(dir $(TARGET_PREBUILT_KERNEL)) +else ifneq ($(TARGET_KERNEL_PLATFORM_TARGET),) +DTB_PATH := $(abspath $(KERNEL_OUT)) +else ifneq ($(filter 4.9, $(TARGET_KERNEL_VERSION)),) +DTB_PATH := $(abspath $(KERNEL_OUT)/arch/arm64/boot/dts) +else ifneq ($(findstring dtstree,$(TARGET_KERNEL_ADDITIONAL_FLAGS)),) +DTB_PATH := $(abspath $(KERNEL_OUT)/../lineage-oot/device-tree/platform/generic-dts/t21x/lineage) +else +DTB_PATH := $(abspath $(KERNEL_OUT)/arch/arm64/boot/dts/nvidia) +endif INSTALLED_DTBIMAGE_TARGET := $(PRODUCT_OUT)/install/nx-plat.dtimg $(INSTALLED_DTBIMAGE_TARGET): $(INSTALLED_KERNEL_TARGET) | mkdtimg echo -e ${CL_GRN}"Building nx DTImage"${CL_RST} @mkdir -p $(PRODUCT_OUT)/install $(HOST_OUT_EXECUTABLES)/mkdtimg create $@ --page_size=0x1000 \ - $(KERNEL_OUT)/arch/arm64/boot/dts/tegra210-odin.dtb --id=0x4F44494E --rev=0xa00 \ - $(KERNEL_OUT)/arch/arm64/boot/dts/tegra210b01-odin.dtb --id=0x4F44494E --rev=0xb01 \ - $(KERNEL_OUT)/arch/arm64/boot/dts/tegra210b01-vali.dtb --id=0x56414C49 --rev=0xa00 \ - $(KERNEL_OUT)/arch/arm64/boot/dts/tegra210b01-fric.dtb --id=0x46524947 --rev=0xa00 + $(DTB_PATH)/tegra210-odin.dtb --id=0x4F44494E --rev=0xa00 \ + $(DTB_PATH)/tegra210b01-odin.dtb --id=0x4F44494E --rev=0xb01 \ + $(DTB_PATH)/tegra210b01-vali.dtb --id=0x56414C49 --rev=0xa00 \ + $(DTB_PATH)/tegra210b01-fric.dtb --id=0x46524947 --rev=0xa00 ALL_DEFAULT_INSTALLED_MODULES += $(INSTALLED_DTBIMAGE_TARGET) diff --git a/BoardConfig.mk b/BoardConfig.mk index 8f46a62..119b5f3 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -55,6 +55,7 @@ WITH_LINEAGE_CHARGER := false TARGET_SCREEN_DENSITY := 186 # Kernel Source +ifeq ($(TARGET_KERNEL_VERSION),4.9) KERNEL_TOOLCHAIN := $(shell pwd)/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-gnu-9.3/bin KERNEL_TOOLCHAIN_PREFIX := aarch64-buildroot-linux-gnu- TARGET_KERNEL_CLANG_COMPILE := false @@ -71,6 +72,22 @@ TARGET_KERNEL_EXT_MODULES := \ nvgpu/drivers/gpu/nvgpu:kbuild include device/nintendo/nx/modules.mk +ifneq ($(TARGET_PREBUILT_KERNEL),) +MODDIR := $(dir $(TARGET_PREBUILT_KERNEL)) +BOARD_VENDOR_KERNEL_MODULES := $(wildcard $(MODDIR)/*.ko) +BOARD_VENDOR_RAMDISK_KERNEL_MODULES := $(addprefix $(MODDIR)/,$(BOOT_KERNEL_MODULES)) +BOARD_RECOVERY_KERNEL_MODULES := $(addprefix $(MODDIR)/,$(RECOVERY_KERNEL_MODULES)) +endif +else +ifeq ($(TARGET_PREBUILT_KERNEL),) +TARGET_KERNEL_PLATFORM_TARGET := tegra +TARGET_KERNEL_SOURCE := vendor/nvidia/$(TARGET_KERNEL_PLATFORM_TARGET) +BOARD_KERNEL_IMAGE_NAME := Image.gz +endif +BOARD_KERNEL_CMDLINE := firmware_class.path=/vendor/firmware cpufreq.default_governor=performance cma=512MB nouveau.atomic=1 +include device/nvidia/foster/modules-ack.mk +endif + # Kernel Image Parameters BOARD_KERNEL_IMAGE_NAME := Image.gz BOARD_MKBOOTIMG_ARGS := \ diff --git a/device.mk b/device.mk index a068724..02334ef 100644 --- a/device.mk +++ b/device.mk @@ -23,8 +23,6 @@ TARGET_TEGRA_CPL := none TARGET_KERNEL_VERSION ?= 4.9 TARGET_TEGRA_KEYSTORE := software TARGET_TEGRA_LIGHT ?= lineage -TARGET_TEGRA_MAN_LVL := 5 -TARGET_TEGRA_MEMTRACK ?= rel-shield-r TARGET_TEGRA_POWER := perfmgr TARGET_TEGRA_SENSORS := iio TARGET_TEGRA_SENSOR_FEATURES := accelerometer gyroscope light @@ -32,10 +30,13 @@ TARGET_TEGRA_THERMAL ?= lineage TARGET_TEGRA_UBOOT := prebuilt TARGET_TEGRA_WIDEVINE ?= rel-shield-r TARGET_TEGRA_WIFI ?= bcm -TARGET_TEGRA_WIREGUARD ?= compat TARGET_ATV_FORCE_1080_SCALING := false +ifneq ($(filter 4.9, $(TARGET_KERNEL_VERSION)),) +TARGET_TEGRA_MEMTRACK ?= rel-shield-r +endif + include device/nvidia/t210-common/t210.mk # Properties @@ -116,8 +117,11 @@ PRODUCT_PACKAGES += \ cec_disable.xml # Device Settings +# TEMP +ifneq ($(filter 4.9, $(TARGET_KERNEL_VERSION)),) PRODUCT_PACKAGES += \ DeviceSettingsNX +endif # DocumentsUI # We are the exception, being an ATV device with touch @@ -143,8 +147,10 @@ PRODUCT_PACKAGES += \ jc_setup # Kernel Modules +ifneq ($(filter 4.9, $(TARGET_KERNEL_VERSION)),) PRODUCT_PACKAGES += \ cypress-fmac-upstream +endif # Keylayouts PRODUCT_PACKAGES += \ @@ -152,11 +158,17 @@ PRODUCT_PACKAGES += \ # Loadable kernel modules PRODUCT_PACKAGES += \ - lkm_loader \ - lkm_loader_target + lkm_loader PRODUCT_COPY_FILES += \ device/nvidia/tegra-common/initfiles/init.lkm.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.lkm.rc +ifneq ($(filter 4.9, $(TARGET_KERNEL_VERSION)),) +PRODUCT_PACKAGES += \ + lkm_loader_target +else +PRODUCT_COPY_FILES += \ + device/nintendo/nx/initfiles/lkm.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/lkm.rc +endif # Media config PRODUCT_PACKAGES += \ diff --git a/initfiles/lkm.rc b/initfiles/lkm.rc new file mode 100644 index 0000000..3f564bf --- /dev/null +++ b/initfiles/lkm.rc @@ -0,0 +1,2 @@ +on fs + exec u:r:modprobe:s0 -- /system/bin/modprobe -a -d /system/lib/modules hci_uart.ko diff --git a/modules-ack.mk b/modules-ack.mk new file mode 100644 index 0000000..61740af --- /dev/null +++ b/modules-ack.mk @@ -0,0 +1,154 @@ +# +# Copyright (C) 2022-2023 The LineageOS Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Gpu driver +ifeq ($(TARGET_TEGRA_GPU),nvgpu) +BOARD_VENDOR_KERNEL_MODULES_LOAD += \ + governor_pod_scaling \ + nvgpu +else +BOARD_VENDOR_KERNEL_MODULES_LOAD += \ + nouveau +endif + +# Tegra high speed serial +BOARD_VENDOR_KERNEL_MODULES_LOAD += \ + serial-tegra + +# Usb Bluetooth +BOARD_VENDOR_KERNEL_MODULES_LOAD += \ + btusb + +# Broadcom wifi +BOARD_VENDOR_KERNEL_MODULES_LOAD += \ + brcmfmac-wcc + +# Realtek ethernet +BOARD_VENDOR_KERNEL_MODULES_LOAD += \ + r8169 + +# Tegra cec +BOARD_VENDOR_KERNEL_MODULES_LOAD += \ + tegra_cec + +# Tegra hdmi audio +BOARD_VENDOR_KERNEL_MODULES_LOAD += \ + snd-hda-codec-hdmi \ + snd-hda-tegra + +# Tegra audio processing engine +BOARD_VENDOR_KERNEL_MODULES_LOAD += \ + tegra-aconnect \ + tegra210-adma \ + snd-soc-tegra210-sfc \ + snd-soc-tegra210-i2s \ + snd-soc-tegra210-mixer \ + snd-soc-tegra210-amx \ + snd-soc-tegra210-admaif \ + snd-soc-tegra210-adx \ + snd-soc-tegra210-iqc \ + snd-soc-tegra210-afc \ + snd-soc-tegra210-dmic \ + snd-soc-tegra210-mvc \ + snd-soc-tegra210-ope \ + snd-soc-tegra-audio-graph-card + +# Nvidia Controllers +BOARD_VENDOR_KERNEL_MODULES_LOAD += \ + hid-nvidia-shield \ + hid-nvidia-shield-oot + +# JoyCons +BOARD_VENDOR_KERNEL_MODULES_LOAD += \ + joycon-serdev \ + hid-nintendo + +# Copy to boot +BOOT_KERNEL_MODULES := \ + system_heap.ko \ + tegra30-devfreq.ko \ + cpufreq-dt.ko \ + tegra124-cpufreq.ko \ + i2c-tegra.ko \ + spi-tegra114.ko \ + spi-tegra210-quad.ko \ + bq24190_charger.ko \ + bq27xxx_battery.ko \ + bq27xxx_battery_i2c.ko \ + rtc-tegra.ko \ + gpio-tegra.ko \ + max77620.ko \ + gpio-max77620.ko \ + pinctrl-max77620.ko \ + max77620-regulator.ko \ + rtc-max77686.ko \ + max77812-regulator.ko \ + gpio-pca953x.ko \ + tegra20-apb-dma.ko \ + tegra210-emc.ko \ + phy-tegra-xusb.ko \ + xhci-tegra.ko \ + tegra-xudc.ko \ + usb-conn-gpio.ko \ + pci-tegra.ko \ + hwmon.ko \ + pwm-tegra.ko \ + pwm-fan.ko \ + pwm-regulator.ko \ + tegra-soctherm.ko \ + lm90.ko \ + cqhci.ko \ + sdhci-tegra.ko \ + simplefb.ko \ + host1x.ko \ + drm_display_helper.ko \ + drm_dp_aux_bus.ko \ + tegra-drm.ko \ + panel-nx-dsi.ko \ + pwm_bl.ko + +# Load in first stage boot +BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD := \ + system_heap \ + tegra30-devfreq \ + tegra124-cpufreq \ + i2c-tegra \ + spi-tegra114 \ + spi-tegra210-quad \ + bq24190_charger \ + rtc-tegra \ + gpio-tegra \ + max77620 \ + gpio-max77620 \ + pinctrl-max77620 \ + max77620-regulator \ + max77812-regulator \ + gpio-pca953x \ + tegra20-apb-dma \ + tegra210-emc \ + xhci-tegra \ + tegra-xudc \ + usb-conn-gpio \ + pci-tegra \ + pwm-tegra \ + pwm-fan \ + pwm-regulator \ + tegra-soctherm \ + lm90 \ + sdhci-tegra \ + simplefb \ + tegra-drm \ + pwm_bl