-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathMakefile
More file actions
151 lines (122 loc) · 5.93 KB
/
Copy pathMakefile
File metadata and controls
151 lines (122 loc) · 5.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
# SPDX-License-Identifier: GPL-2.0
# Copyright (c) 2025 Intel Corporation.
KERNELRELEASE ?= $(shell uname -r)
KERNEL_SRC ?= /lib/modules/$(KERNELRELEASE)/build
KERNEL_VERSION := $(shell echo $(KERNELRELEASE) | cut -d- -f1 | sed -r 's/([0-9]+\.[0-9]+).*/\1.0/g')
BUILD_EXCLUSIVE_KERNEL="^(6\.(1[278])\.)"
MODSRC := $(shell pwd)
subdir-ccflags-y += -DDRIVER_VERSION_SUFFIX=\"${DRIVER_VERSION_SUFFIX}\"
# Extract kernel version components - strip suffix like "-intel"
KERNEL_VERSION := $(shell echo $(KERNELRELEASE) | cut -d. -f1)
KERNEL_PATCHLEVEL := $(shell echo $(KERNELRELEASE) | cut -d. -f2 | cut -d- -f1)
# Check if kernel version is 6.18
KERNEL_EQ_6_18 := $(shell ([ $(KERNEL_VERSION) -eq 6 ] && [ $(KERNEL_PATCHLEVEL) -eq 18 ]) && echo 1 || echo 0)
# Check if kernel version is 6.17
KERNEL_EQ_6_17 := $(shell ([ $(KERNEL_VERSION) -eq 6 ] && [ $(KERNEL_PATCHLEVEL) -eq 17 ]) && echo 1 || echo 0)
# Check if kernel version is 6.12
KERNEL_EQ_6_12 := $(shell ([ $(KERNEL_VERSION) -eq 6 ] && [ $(KERNEL_PATCHLEVEL) -eq 12 ]) && echo 1 || echo 0)
# Check if kernel version is 7.0
KERNEL_EQ_7_0 := $(shell ([ $(KERNEL_VERSION) -eq 7 ] && [ $(KERNEL_PATCHLEVEL) -eq 0 ]) && echo 1 || echo 0)
# Check if kernel version is >= 6.17 (covers 6.17, 6.18, 7.0, ...)
KERNEL_GE_6_17 := $(shell ([ $(KERNEL_VERSION) -gt 6 ] || ([ $(KERNEL_VERSION) -eq 6 ] && [ $(KERNEL_PATCHLEVEL) -ge 17 ])) && echo 1 || echo 0)
# Set for Intel BKC kernels that should skip maxim-serdes.
KERNEL_IS_6_12_INTEL := $(shell ([ $(KERNEL_VERSION) -eq 6 ] && [ $(KERNEL_PATCHLEVEL) -eq 12 ] && echo $(KERNELRELEASE) | grep -q -- '-intel') && echo 1 || echo 0)
KERNEL_IS_6_17_INTEL := $(shell ([ $(KERNEL_VERSION) -eq 6 ] && [ $(KERNEL_PATCHLEVEL) -eq 17 ] && echo $(KERNELRELEASE) | grep -q -- '-intel') && echo 1 || echo 0)
KERNEL_SKIP_MAXIM_SERDES := $(shell ([ $(KERNEL_IS_6_12_INTEL) -eq 1 ] || [ $(KERNEL_IS_6_17_INTEL) -eq 1 ]) && echo 1 || echo 0)
export EXTERNAL_BUILD = 1
export CONFIG_IPU_BRIDGE=m
export CONFIG_VIDEO_AR0233=m
export CONFIG_VIDEO_AR0820=m
export CONFIG_VIDEO_AR0830=m
export CONFIG_VIDEO_AR0234=m
export CONFIG_VIDEO_ISX031=m
export CONFIG_VIDEO_IMX415=m
export CONFIG_VIDEO_IMX586=m
export CONFIG_VIDEO_MAX9X=m
export CONFIG_VIDEO_LT6911UXE=m
export CONFIG_VIDEO_LT6911UXC=m
export CONFIG_VIDEO_LT6911GXD=m
# Build IPU6 on supported kernels including 7.0.
export CONFIG_VIDEO_INTEL_IPU6=m
export CONFIG_VIDEO_INTEL_IPU6_ISYS_RESET=y
export CONFIG_INTEL_IPU_ACPI=m
# maxim-serdes drivers require CONFIG_I2C_ATR.
# 6.17 BKC kernels typically ship with CONFIG_I2C_ATR disabled, so users must
# rebuild that kernel with CONFIG_I2C_ATR=y to use maxim-serdes.
# Skip only on 6.17-intel in this block.
# 6.18-intel is allowed (WIP in BKC to enable CONFIG_I2C_ATR).
ifeq ($(KERNEL_GE_6_17),1)
ifneq ($(KERNEL_SKIP_MAXIM_SERDES),1)
export CONFIG_VIDEO_MAXIM_SERDES=m
export CONFIG_VIDEO_MAX96717=m
export CONFIG_VIDEO_MAX96724=m
export CONFIG_VIDEO_MAX9296A=m
endif
endif
export CONFIG_MEDIA_CONTROLLER=m
export CONFIG_VIDEO_D4XX=m
# Define config macros for conditional compilation in ipu-acpi.c
# IS_ENABLED() checks for CONFIG_XXX or CONFIG_XXX_MODULE
subdir-ccflags-$(CONFIG_VIDEO_MAX9X) += -DCONFIG_VIDEO_MAX9X
subdir-ccflags-$(CONFIG_VIDEO_ISX031) += -DCONFIG_VIDEO_ISX031
subdir-ccflags-$(CONFIG_VIDEO_AR0233) += -DCONFIG_VIDEO_AR0233
subdir-ccflags-$(CONFIG_VIDEO_AR0820) += -DCONFIG_VIDEO_AR0820
subdir-ccflags-$(CONFIG_VIDEO_AR0234) += -DCONFIG_VIDEO_AR0234 -DCONFIG_V4L2_CCI_I2C
subdir-ccflags-$(CONFIG_VIDEO_IMX415) += -DCONFIG_VIDEO_IMX415
subdir-ccflags-$(CONFIG_VIDEO_IMX586) += -DCONFIG_VIDEO_IMX586
subdir-ccflags-$(CONFIG_IPU_BRIDGE) += -DCONFIG_IPU_BRIDGE
subdir-ccflags-$(CONFIG_INTEL_IPU_ACPI) += -DCONFIG_INTEL_IPU_ACPI
subdir-ccflags-$(CONFIG_VIDEO_LT6911UXE) += -DCONFIG_VIDEO_LT6911UXE
subdir-ccflags-$(CONFIG_VIDEO_LT6911UXC) += -DCONFIG_VIDEO_LT6911UXC
subdir-ccflags-$(CONFIG_VIDEO_LT6911GXD) += -DCONFIG_VIDEO_LT6911GXD
subdir-ccflags-$(CONFIG_VIDEO_INTEL_IPU6) += -DCONFIG_VIDEO_INTEL_IPU6
subdir-ccflags-$(CONFIG_VIDEO_INTEL_IPU6_ISYS_RESET) += -DCONFIG_VIDEO_INTEL_IPU6_ISYS_RESET
# Override LINUXINCLUDE to put our include path first
LINUXINCLUDE := -I$(src)/include $(LINUXINCLUDE)
ccflags-y := -I$(src)/include
ifneq (,$(filter 1,$(KERNEL_EQ_6_17) $(KERNEL_EQ_6_18) $(KERNEL_EQ_7_0)))
# IPU7 driver configs
export CONFIG_VIDEO_INTEL_IPU7=m
export CONFIG_VIDEO_INTEL_IPU6=m
export CONFIG_VIDEO_INTEL_IPU6_ISYS_RESET=y
subdir-ccflags-y += -DIPU8_INSYS_NEW_ABI
subdir-ccflags-y += -DCONFIG_VIDEO_INTEL_IPU7
subdir-ccflags-y += -DCONFIG_VIDEO_INTEL_IPU6
# Build IPU7 drivers from submodule
obj-m += ipu7-drivers/drivers/media/pci/intel/ipu7/
# Build IPU6 drivers from submodule
obj-m += ipu6-drivers/drivers/media/pci/intel/ipu6/
# Select extracted kernel tree based on running kernel
ifeq ($(KERNEL_EQ_7_0),1)
KERNEL_MEDIA_TREE := 7.0.0
else ifeq ($(KERNEL_EQ_6_18),1)
KERNEL_MEDIA_TREE := 6.18.0
else
KERNEL_MEDIA_TREE := 6.17.0
endif
# Build V4L2 core module
obj-m += $(KERNEL_MEDIA_TREE)/drivers/media/v4l2-core/
obj-m += $(KERNEL_MEDIA_TREE)/drivers/media/mc/
LINUXINCLUDE := -I$(src)/$(KERNEL_MEDIA_TREE)/include/uapi -I$(src)/$(KERNEL_MEDIA_TREE)/include $(LINUXINCLUDE)
# Build ipu-bridge module
obj-m += $(KERNEL_MEDIA_TREE)/drivers/media/pci/intel/
else ifeq ($(KERNEL_EQ_6_12),1)
# IPU6 driver configs
export CONFIG_VIDEO_INTEL_IPU6=m
export CONFIG_VIDEO_INTEL_IPU6_ISYS_RESET=y
subdir-ccflags-y += -DCONFIG_VIDEO_INTEL_IPU6
# Build IPU6 drivers from submodule
obj-m += ipu6-drivers/drivers/media/pci/intel/ipu6/
# Build ipu-bridge module
obj-m += 6.12.0/drivers/media/pci/intel/
endif
obj-y += drivers/media/platform/intel/
obj-m += drivers/media/i2c/
subdir-ccflags-y += $(subdir-ccflags-m)
subdir-ccflags-y += -iquote $(src)/include/ -I$(src)/include/ -I$(src)/ipu6-drivers/include -I$(src)/ipu7-drivers/include
all:
$(MAKE) -C $(KERNEL_SRC) M=$(MODSRC) modules
modules_install:
$(MAKE) INSTALL_MOD_DIR=updates -C $(KERNEL_SRC) M=$(MODSRC) modules_install
clean:
$(MAKE) -C $(KERNEL_SRC) M=$(MODSRC) clean