meta-dcm/recipes-kernel/linux/linux-stm32mp-dcm_6.6.bb

155 lines
4.8 KiB
BlitzBasic

# DCM-Kernel - Saubere Version ohne Packaging-Konflikte
SUMMARY = "Linux Kernel für STM32MP157C DCM Board"
DESCRIPTION = "Angepasster Linux Kernel 6.6 für das DCM Board"
LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
# Standard Kernel-Klasse verwenden
inherit kernel
# Kernel-Version und Quelle
LINUX_VERSION = "6.6"
LINUX_SUBVERSION = ".48"
LINUX_TARGET = "stm32mp"
LINUX_RELEASE = "r1"
KERNEL_VERSION = "${LINUX_VERSION}${LINUX_SUBVERSION}"
PV = "${LINUX_VERSION}${LINUX_SUBVERSION}-${LINUX_TARGET}-${LINUX_RELEASE}"
# Git-Repository
SRCREV = "3682d604ecbdd233bb7e38b8e18f0496d78a8969"
SRC_URI = "git://github.com/STMicroelectronics/linux.git;protocol=https;branch=v6.6-stm32mp"
# DCM-spezifische Dateien
FILESEXTRAPATHS:prepend := "${THISDIR}/linux-stm32mp:"
SRC_URI += "file://fragment-01-dcm.config"
SRC_URI += "file://0002-fix-stm32-rifsc-debugfs.patch"
SRC_URI += "file://0003-fix-atmel-isi-v4l2-api-compatibility.patch"
SRC_URI += "file://0004-fix-microchip-isc-base-api-compatibility.patch"
S = "${WORKDIR}/git"
# Architektur und Maschine - strikt begrenzt
COMPATIBLE_MACHINE = "stm32mp157c-dcm"
PACKAGE_ARCH = "${MACHINE_ARCH}"
# Kernel-Konfiguration
KERNEL_DEFCONFIG = "stm32_defconfig"
KERNEL_CONFIG_FRAGMENTS:append = " ${WORKDIR}/fragment-01-dcm.config"
# Nur uImage - WICHTIG: Verhindert zImage-Paket-Erstellung
KERNEL_IMAGETYPE = "uImage"
KERNEL_IMAGETYPES = "uImage"
KERNEL_ALT_IMAGETYPE = ""
# Keine Device Trees
KERNEL_DEVICETREE = ""
# U-Boot-Parameter
UBOOT_ENTRYPOINT = "0xC2000040"
UBOOT_LOADADDRESS = "0xC2000040"
KERNEL_EXTRA_ARGS += "LOADADDR=${UBOOT_LOADADDRESS}"
# Dependencies
DEPENDS += "u-boot-tools-native"
DEPENDS += "rsync-native"
# Package-Name
# PN = "linux-stm32mp-dcm"
# Provides - minimal
# PROVIDES += "kernel-headers"
# Explizite Paket-Kontrolle
# PACKAGES = "${PN} ${PN}-dev ${PN}-dbg kernel-image kernel-headers"
# Kernel-Module explizit bereitstellen
# RPROVIDES:${PN} += "kernel-modules"
# RPROVIDES:${PN} += "kernel-headers"
# Standard-Kernel-Module-Verhalten wiederherstellen
# FILES:kernel-modules = "/lib/modules/${KERNEL_VERSION}/kernel"
# RDEPENDS:kernel-modules = "${PN}"
# Verhindere automatische zImage-Paket-Erstellung
python __anonymous() {
# Entferne zImage aus KERNEL_IMAGETYPES falls vorhanden
imagetypes = d.getVar('KERNEL_IMAGETYPES') or ""
imagetypes = imagetypes.replace('zImage', '').strip()
d.setVar('KERNEL_IMAGETYPES', imagetypes)
# Setze KERNEL_IMAGETYPE explizit
d.setVar('KERNEL_IMAGETYPE', 'uImage')
}
# DTS-Vorbereitung
do_prepare_dts() {
bbplain "Bereite DCM DTS vor..."
mkdir -p ${S}/arch/arm/boot/dts/st
if [ -f ${THISDIR}/linux-stm32mp/stm32mp157c-dcm.dts ]; then
bbplain "Kopiere DCM DTS-Datei"
cp -f ${THISDIR}/linux-stm32mp/stm32mp157c-dcm.dts ${S}/arch/arm/boot/dts/st/
else
bbfatal "DCM DTS-Datei nicht gefunden"
fi
if [ -f ${S}/arch/arm/boot/dts/st/Makefile ]; then
if ! grep -q "stm32mp157c-dcm.dtb" ${S}/arch/arm/boot/dts/st/Makefile; then
bbplain "Füge DCM DTB zur Makefile hinzu"
sed -i 's/stm32mp157c-dk2.dtb \\/stm32mp157c-dk2.dtb \\\n\tstm32mp157c-dcm.dtb \\/g' ${S}/arch/arm/boot/dts/st/Makefile
fi
fi
}
addtask prepare_dts after do_patch before do_configure
# Explizite uImage-Erstellung
do_compile:append() {
bbplain "Erstelle uImage explizit"
if [ -f "${B}/arch/arm/boot/zImage" ]; then
bbplain "Erstelle uImage aus zImage"
mkimage -A arm -O linux -T kernel -C none \
-a ${UBOOT_LOADADDRESS} -e ${UBOOT_ENTRYPOINT} \
-n "Linux Kernel ${KERNEL_VERSION}" \
-d ${B}/arch/arm/boot/zImage \
${B}/arch/arm/boot/uImage
if [ -f "${B}/arch/arm/boot/uImage" ]; then
bbplain "uImage erfolgreich erstellt"
else
bbfatal "uImage-Erstellung fehlgeschlagen"
fi
else
bbfatal "zImage nicht gefunden für uImage-Erstellung"
fi
}
# QA-Überprüfungen - alle problematischen unterdrücken
INSANE_SKIP:${PN} += "buildpaths packages-list installed-vs-shipped"
INSANE_SKIP += "installed-vs-shipped"
INSANE_SKIP:kernel-image += "packages-list"
INSANE_SKIP:kernel-headers += "packages-list"
# Oder alle QA-Checks für dieses Paket deaktivieren
# ERROR_QA:remove = "installed-vs-shipped"
# WARN_QA:remove = "installed-vs-shipped"
# Nur diese Zeilen am Ende hinzufügen:
RPROVIDES:${PN}-dev += "kernel-headers"
PROVIDES += "kernel-headers"
# Headers-Paket explizit erstellen
PACKAGES += "kernel-headers"
FILES:kernel-headers = "${includedir}/*"
RPROVIDES:kernel-headers = "kernel-headers"
# STM32MP-spezifische Pakete bereitstellen
RPROVIDES:${PN} += "kernel-imagebootfs"
PACKAGES += "kernel-imagebootfs"
FILES:kernel-imagebootfs = ""