9e954e3680
Move content from stx-gplv2 into stx-integ Packages will be relocated to stx-integ: base/ bash cgcs-users cluster-resource-agents dpkg haproxy libfdt netpbm rpm database/ mariadb filesystem/ iscsi-initiator-utils filesystem/drbd/ drbd-tools kernel/kernel-modules/ drbd integrity intel-e1000e intel-i40e intel-i40evf intel-ixgbe intel-ixgbevf qat17 tpmdd ldap/ ldapscripts networking/ iptables net-tools Change-Id: I0a9070e35559e5545b14e1fdd933a2ca2e969fd1 Story: 2002801 Task: 22687 Signed-off-by: Scott Little <scott.little@windriver.com>
544 lines
18 KiB
Diff
544 lines
18 KiB
Diff
From 70386017de51483cfc9c0fc3e809d6f9867c4c5f Mon Sep 17 00:00:00 2001
|
|
Message-Id: <70386017de51483cfc9c0fc3e809d6f9867c4c5f.1507751678.git.Jim.Somerville@windriver.com>
|
|
From: Kam Nasim <kam.nasim@windriver.com>
|
|
Date: Wed, 26 Apr 2017 12:23:03 -0400
|
|
Subject: [PATCH 1/1] compat changes for building tpmdd out-of-tree
|
|
|
|
Signed-off-by: Jim Somerville <Jim.Somerville@windriver.com>
|
|
---
|
|
Makefile | 110 ++++++++++++++++++++-
|
|
common.mk | 332 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
kcompat.h | 39 ++++++++
|
|
tpm.h | 3 +
|
|
4 files changed, 482 insertions(+), 2 deletions(-)
|
|
create mode 100644 common.mk
|
|
create mode 100644 kcompat.h
|
|
|
|
diff --git a/Makefile b/Makefile
|
|
index 23681f0..f3250cc 100644
|
|
--- a/Makefile
|
|
+++ b/Makefile
|
|
@@ -1,6 +1,9 @@
|
|
-#
|
|
+
|
|
+ifneq ($(KERNELRELEASE),)
|
|
+# kbuild part of makefile
|
|
# Makefile for the kernel tpm device drivers.
|
|
#
|
|
+
|
|
obj-$(CONFIG_TCG_TPM) += tpm.o
|
|
tpm-y := tpm-interface.o tpm-dev.o tpm-sysfs.o tpm-chip.o tpm2-cmd.o \
|
|
tpm-dev-common.o tpmrm-dev.o tpm1_eventlog.o tpm2_eventlog.o \
|
|
@@ -17,7 +20,110 @@ obj-$(CONFIG_TCG_NSC) += tpm_nsc.o
|
|
obj-$(CONFIG_TCG_ATMEL) += tpm_atmel.o
|
|
obj-$(CONFIG_TCG_INFINEON) += tpm_infineon.o
|
|
obj-$(CONFIG_TCG_IBMVTPM) += tpm_ibmvtpm.o
|
|
-obj-$(CONFIG_TCG_TIS_ST33ZP24) += st33zp24/
|
|
obj-$(CONFIG_TCG_XEN) += xen-tpmfront.o
|
|
obj-$(CONFIG_TCG_CRB) += tpm_crb.o
|
|
obj-$(CONFIG_TCG_VTPM_PROXY) += tpm_vtpm_proxy.o
|
|
+
|
|
+else # ifneq($(KERNELRELEASE),)
|
|
+# normal makefile
|
|
+
|
|
+# driver will be provided by the spec file
|
|
+DRIVER=
|
|
+
|
|
+ifeq (,$(wildcard common.mk))
|
|
+ $(error Cannot find common.mk build rules)
|
|
+else
|
|
+ include common.mk
|
|
+endif
|
|
+
|
|
+###############
|
|
+# Build rules #
|
|
+###############
|
|
+
|
|
+# Standard compilation, with regular output
|
|
+default:
|
|
+ @+$(call kernelbuild,modules)
|
|
+
|
|
+# Noisy output, for extra debugging
|
|
+noisy:
|
|
+ @+$(call kernelbuild,modules,V=1)
|
|
+
|
|
+# Silence any output generated
|
|
+silent:
|
|
+ @+$(call kernelbuild,modules,>/dev/null)
|
|
+
|
|
+# Enable higher warning level
|
|
+checkwarnings: clean
|
|
+ @+$(call kernelbuild,modules,W=1)
|
|
+
|
|
+# Run sparse static analyzer
|
|
+sparse: clean
|
|
+ @+$(call kernelbuild,modules,C=2 CF="-D__CHECK_ENDIAN__ -Wbitwise -Wcontext")
|
|
+
|
|
+# Run coccicheck static analyzer
|
|
+ccc: clean
|
|
+ @+$(call kernelbuild,modules,coccicheck MODE=report)
|
|
+
|
|
+# Clean the module subdirectories
|
|
+clean:
|
|
+ @+$(call kernelbuild,clean)
|
|
+ @-rm -rf *.ko
|
|
+
|
|
+# Install the modules
|
|
+install: default
|
|
+ @echo "Installing modules..."
|
|
+ @+$(call kernelbuild,modules_install)
|
|
+ @echo "Running depmod..."
|
|
+ @$(call cmd_depmod)
|
|
+ifeq (${cmd_initrd},)
|
|
+ @echo "Unable to update initrd. You may need to do this manually."
|
|
+else
|
|
+ @echo "Updating initrd..."
|
|
+ -@$(call cmd_initrd)
|
|
+endif
|
|
+
|
|
+# Target used by rpmbuild spec file
|
|
+rpm: default
|
|
+ @install -D -m 644 ${DRIVER}.ko ${INSTALL_MOD_PATH}/lib/modules/${KVER}/${INSTALL_MOD_DIR}/${DRIVER}.ko
|
|
+
|
|
+uninstall:
|
|
+ rm -f ${INSTALL_MOD_PATH}/lib/modules/${KVER}/${INSTALL_MOD_DIR}/${DRIVER}.ko;
|
|
+ $(call cmd_depmod)
|
|
+ifeq (${cmd_initrd},)
|
|
+ @echo "Unable to update initrd. You may need to do this manually."
|
|
+else
|
|
+ @echo "Updating initrd..."
|
|
+ -@$(call cmd_initrd)
|
|
+endif
|
|
+
|
|
+########
|
|
+# Help #
|
|
+########
|
|
+help:
|
|
+ @echo 'Cleaning targets:'
|
|
+ @echo ' clean - Clean files generated by kernel module build'
|
|
+ @echo 'Build targets:'
|
|
+ @echo ' default - Build module(s) with standard verbosity'
|
|
+ @echo ' noisy - Build module(s) with V=1 verbosity -- very noisy'
|
|
+ @echo ' silent - Build module(s), squelching all output'
|
|
+ @echo 'Static Analysis:'
|
|
+ @echo ' checkwarnings - Clean, then build module(s) with W=1 warnings enabled'
|
|
+ @echo ' sparse - Clean, then check module(s) using sparse'
|
|
+ @echo ' ccc - Clean, then check module(s) using coccicheck'
|
|
+ @echo 'Other targets:'
|
|
+ @echo ' install - Build then install the module(s)'
|
|
+ @echo ' uninstall - Uninstall the module(s)'
|
|
+ @echo ' help - Display this help message'
|
|
+ @echo 'Variables:'
|
|
+ @echo ' LINUX_VERSION - Debug tool to force kernel LINUX_VERSION_CODE. Use at your own risk.'
|
|
+ @echo ' W=N - Kernel variable for setting warning levels'
|
|
+ @echo ' V=N - Kernel variable for setting output verbosity'
|
|
+ @echo ' INSTALL_MOD_PATH - Add prefix for the module and manpage installation path'
|
|
+ @echo ' INSTALL_MOD_DIR - Use module directory other than updates/drivers/char/tpm/${DRIVER}'
|
|
+ @echo ' KSRC - Specifies the full path to the kernel tree to build against'
|
|
+ @echo ' Other variables may be available for tuning make process, see'
|
|
+ @echo ' Kernel Kbuild documentation for more information'
|
|
+
|
|
+.PHONY: default noisy clean silent sparse ccc install uninstall help
|
|
+
|
|
+endif # ifneq($(KERNELRELEASE),)
|
|
diff --git a/common.mk b/common.mk
|
|
new file mode 100644
|
|
index 0000000..671ca33
|
|
--- /dev/null
|
|
+++ b/common.mk
|
|
@@ -0,0 +1,332 @@
|
|
+################################################################################
|
|
+#
|
|
+# Linux TPM Driver
|
|
+# Copyright(c) 2013 - 2017 Intel Corporation.
|
|
+# Copyright (c) 2017 Wind River Systems, Inc.
|
|
+#
|
|
+# This program is free software; you can redistribute it and/or modify it
|
|
+# under the terms and conditions of the GNU General Public License,
|
|
+# version 2, as published by the Free Software Foundation.
|
|
+#
|
|
+# This program is distributed in the hope it will be useful, but WITHOUT
|
|
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
+# more details.
|
|
+#
|
|
+# The full GNU General Public License is included in this distribution in
|
|
+# the file called "COPYING".
|
|
+#
|
|
+# Contact Information:
|
|
+# e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
|
|
+# Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
|
|
+################################################################################
|
|
+
|
|
+
|
|
+# common Makefile rules useful for out-of-tree Linux driver builds
|
|
+#
|
|
+# Usage: include common.mk
|
|
+#
|
|
+# After including, you probably want to add a minimum_kver_check call
|
|
+#
|
|
+# Required Variables:
|
|
+# DRIVER
|
|
+# -- Set to the lowercase driver name
|
|
+
|
|
+#####################
|
|
+# Helpful functions #
|
|
+#####################
|
|
+
|
|
+readlink = $(shell readlink -f ${1})
|
|
+
|
|
+# helper functions for converting kernel version to version codes
|
|
+get_kver = $(or $(word ${2},$(subst ., ,${1})),0)
|
|
+get_kvercode = $(shell [ "${1}" -ge 0 -a "${1}" -le 255 2>/dev/null ] && \
|
|
+ [ "${2}" -ge 0 -a "${2}" -le 255 2>/dev/null ] && \
|
|
+ [ "${3}" -ge 0 -a "${3}" -le 255 2>/dev/null ] && \
|
|
+ printf %d $$(( ( ${1} << 16 ) + ( ${2} << 8 ) + ( ${3} ) )) )
|
|
+
|
|
+################
|
|
+# depmod Macro #
|
|
+################
|
|
+
|
|
+cmd_depmod = /sbin/depmod $(if ${SYSTEM_MAP_FILE},-e -F ${SYSTEM_MAP_FILE}) \
|
|
+ $(if $(strip ${INSTALL_MOD_PATH}),-b ${INSTALL_MOD_PATH}) \
|
|
+ -a ${KVER}
|
|
+
|
|
+################
|
|
+# dracut Macro #
|
|
+################
|
|
+
|
|
+cmd_initrd := $(shell \
|
|
+ if which dracut > /dev/null 2>&1 ; then \
|
|
+ echo "dracut --force"; \
|
|
+ elif which update-initramfs > /dev/null 2>&1 ; then \
|
|
+ echo "update-initramfs -u"; \
|
|
+ fi )
|
|
+
|
|
+#####################
|
|
+# Environment tests #
|
|
+#####################
|
|
+
|
|
+DRIVER_UPPERCASE := $(shell echo ${DRIVER} | tr "[:lower:]" "[:upper:]" | tr "TPM" "TCG")
|
|
+
|
|
+ifeq (,${BUILD_KERNEL})
|
|
+BUILD_KERNEL=$(shell uname -r)
|
|
+endif
|
|
+
|
|
+# Kernel Search Path
|
|
+# All the places we look for kernel source
|
|
+KSP := /lib/modules/${BUILD_KERNEL}/source \
|
|
+ /lib/modules/${BUILD_KERNEL}/build \
|
|
+ /usr/src/linux-${BUILD_KERNEL} \
|
|
+ /usr/src/linux-$(${BUILD_KERNEL} | sed 's/-.*//') \
|
|
+ /usr/src/kernel-headers-${BUILD_KERNEL} \
|
|
+ /usr/src/kernel-source-${BUILD_KERNEL} \
|
|
+ /usr/src/linux-$(${BUILD_KERNEL} | sed 's/\([0-9]*\.[0-9]*\)\..*/\1/') \
|
|
+ /usr/src/linux \
|
|
+ /usr/src/kernels/${BUILD_KERNEL} \
|
|
+ /usr/src/kernels
|
|
+
|
|
+# prune the list down to only values that exist and have an include/linux
|
|
+# sub-directory. We can't use include/config because some older kernels don't
|
|
+# have this.
|
|
+test_dir = $(shell [ -e ${dir}/include/linux ] && echo ${dir})
|
|
+KSP := $(foreach dir, ${KSP}, ${test_dir})
|
|
+
|
|
+# we will use this first valid entry in the search path
|
|
+ifeq (,${KSRC})
|
|
+ KSRC := $(firstword ${KSP})
|
|
+endif
|
|
+
|
|
+ifeq (,${KSRC})
|
|
+ $(warning *** Kernel header files not in any of the expected locations.)
|
|
+ $(warning *** Install the appropriate kernel development package, e.g.)
|
|
+ $(error kernel-devel, for building kernel modules and try again)
|
|
+else
|
|
+ifeq (/lib/modules/${BUILD_KERNEL}/source, ${KSRC})
|
|
+ KOBJ := /lib/modules/${BUILD_KERNEL}/build
|
|
+else
|
|
+ KOBJ := ${KSRC}
|
|
+endif
|
|
+endif
|
|
+
|
|
+# Version file Search Path
|
|
+VSP := ${KOBJ}/include/generated/utsrelease.h \
|
|
+ ${KOBJ}/include/linux/utsrelease.h \
|
|
+ ${KOBJ}/include/linux/version.h \
|
|
+ ${KOBJ}/include/generated/uapi/linux/version.h \
|
|
+ /boot/vmlinuz.version.h
|
|
+
|
|
+# Config file Search Path
|
|
+CSP := ${KOBJ}/include/generated/autoconf.h \
|
|
+ ${KOBJ}/include/linux/autoconf.h \
|
|
+ /boot/vmlinuz.autoconf.h
|
|
+
|
|
+# System.map Search Path (for depmod)
|
|
+MSP := ${KSRC}/System.map \
|
|
+ /boot/System.map-${BUILD_KERNEL}
|
|
+
|
|
+# prune the lists down to only files that exist
|
|
+test_file = $(shell [ -f ${file} ] && echo ${file})
|
|
+VSP := $(foreach file, ${VSP}, ${test_file})
|
|
+CSP := $(foreach file, ${CSP}, ${test_file})
|
|
+MSP := $(foreach file, ${MSP}, ${test_file})
|
|
+
|
|
+
|
|
+# and use the first valid entry in the Search Paths
|
|
+ifeq (,${VERSION_FILE})
|
|
+ VERSION_FILE := $(firstword ${VSP})
|
|
+endif
|
|
+
|
|
+ifeq (,${CONFIG_FILE})
|
|
+ CONFIG_FILE := $(firstword ${CSP})
|
|
+endif
|
|
+
|
|
+ifeq (,${SYSTEM_MAP_FILE})
|
|
+ SYSTEM_MAP_FILE := $(firstword ${MSP})
|
|
+endif
|
|
+
|
|
+ifeq (,$(wildcard ${VERSION_FILE}))
|
|
+ $(error Linux kernel source not configured - missing version header file)
|
|
+endif
|
|
+
|
|
+ifeq (,$(wildcard ${CONFIG_FILE}))
|
|
+ $(error Linux kernel source not configured - missing autoconf.h)
|
|
+endif
|
|
+
|
|
+ifeq (,$(wildcard ${SYSTEM_MAP_FILE}))
|
|
+ $(warning Missing System.map file - depmod will not check for missing symbols)
|
|
+endif
|
|
+
|
|
+#######################
|
|
+# Linux Version Setup #
|
|
+#######################
|
|
+
|
|
+# The following command line parameter is intended for development of KCOMPAT
|
|
+# against upstream kernels such as net-next which have broken or non-updated
|
|
+# version codes in their Makefile. They are intended for debugging and
|
|
+# development purpose only so that we can easily test new KCOMPAT early. If you
|
|
+# don't know what this means, you do not need to set this flag. There is no
|
|
+# arcane magic here.
|
|
+
|
|
+# Convert LINUX_VERSION into LINUX_VERSION_CODE
|
|
+ifneq (${LINUX_VERSION},)
|
|
+ LINUX_VERSION_CODE=$(call get_kvercode,$(call get_kver,${LINUX_VERSION},1),$(call get_kver,${LINUX_VERSION},2),$(call get_kver,${LINUX_VERSION},3))
|
|
+endif
|
|
+
|
|
+# Honor LINUX_VERSION_CODE
|
|
+ifneq (${LINUX_VERSION_CODE},)
|
|
+ $(warning Forcing target kernel to build with LINUX_VERSION_CODE of ${LINUX_VERSION_CODE}$(if ${LINUX_VERSION}, from LINUX_VERSION=${LINUX_VERSION}). Do this at your own risk.)
|
|
+ KVER_CODE := ${LINUX_VERSION_CODE}
|
|
+ EXTRA_CFLAGS += -DLINUX_VERSION_CODE=${LINUX_VERSION_CODE}
|
|
+endif
|
|
+
|
|
+# Determine SLE_LOCALVERSION_CODE for SuSE SLE >= 11 (needed by kcompat)
|
|
+# This assumes SuSE will continue setting CONFIG_LOCALVERSION to the string
|
|
+# appended to the stable kernel version on which their kernel is based with
|
|
+# additional versioning information (up to 3 numbers), a possible abbreviated
|
|
+# git SHA1 commit id and a kernel type, e.g. CONFIG_LOCALVERSION=-1.2.3-default
|
|
+# or CONFIG_LOCALVERSION=-999.gdeadbee-default
|
|
+ifeq (1,$(shell ${CC} -E -dM ${CONFIG_FILE} 2> /dev/null |\
|
|
+ grep -m 1 CONFIG_SUSE_KERNEL | awk '{ print $$3 }'))
|
|
+
|
|
+ifneq (10,$(shell ${CC} -E -dM ${CONFIG_FILE} 2> /dev/null |\
|
|
+ grep -m 1 CONFIG_SLE_VERSION | awk '{ print $$3 }'))
|
|
+
|
|
+ LOCALVERSION := $(shell ${CC} -E -dM ${CONFIG_FILE} 2> /dev/null |\
|
|
+ grep -m 1 CONFIG_LOCALVERSION | awk '{ print $$3 }' |\
|
|
+ cut -d'-' -f2 | sed 's/\.g[[:xdigit:]]\{7\}//')
|
|
+ LOCALVER_A := $(shell echo ${LOCALVERSION} | cut -d'.' -f1)
|
|
+ LOCALVER_B := $(shell echo ${LOCALVERSION} | cut -s -d'.' -f2)
|
|
+ LOCALVER_C := $(shell echo ${LOCALVERSION} | cut -s -d'.' -f3)
|
|
+ SLE_LOCALVERSION_CODE := $(shell expr ${LOCALVER_A} \* 65536 + \
|
|
+ 0${LOCALVER_B} \* 256 + 0${LOCALVER_C})
|
|
+ EXTRA_CFLAGS += -DSLE_LOCALVERSION_CODE=${SLE_LOCALVERSION_CODE}
|
|
+endif
|
|
+endif
|
|
+
|
|
+EXTRA_CFLAGS += ${CFLAGS_EXTRA}
|
|
+
|
|
+# get the kernel version - we use this to find the correct install path
|
|
+KVER := $(shell ${CC} ${EXTRA_CFLAGS} -E -dM ${VERSION_FILE} | grep UTS_RELEASE | \
|
|
+ awk '{ print $$3 }' | sed 's/\"//g')
|
|
+
|
|
+# assume source symlink is the same as build, otherwise adjust KOBJ
|
|
+ifneq (,$(wildcard /lib/modules/${KVER}/build))
|
|
+ ifneq (${KSRC},$(call readlink,/lib/modules/${KVER}/build))
|
|
+ KOBJ=/lib/modules/${KVER}/build
|
|
+ endif
|
|
+endif
|
|
+
|
|
+ifeq (${KVER_CODE},)
|
|
+ KVER_CODE := $(shell ${CC} ${EXTRA_CFLAGS} -E -dM ${VSP} 2> /dev/null |\
|
|
+ grep -m 1 LINUX_VERSION_CODE | awk '{ print $$3 }' | sed 's/\"//g')
|
|
+endif
|
|
+
|
|
+# minimum_kver_check
|
|
+#
|
|
+# helper function to provide uniform output for different drivers to abort the
|
|
+# build based on kernel version check. Usage: "$(call minimum_kver_check,2,6,XX)".
|
|
+define _minimum_kver_check
|
|
+ifeq (0,$(shell [ ${KVER_CODE} -lt $(call get_kvercode,${1},${2},${3}) ]; echo "$$?"))
|
|
+ $$(warning *** Aborting the build.)
|
|
+ $$(error This driver is not supported on kernel versions older than ${1}.${2}.${3})
|
|
+endif
|
|
+endef
|
|
+minimum_kver_check = $(eval $(call _minimum_kver_check,${1},${2},${3}))
|
|
+
|
|
+################
|
|
+# Manual Pages #
|
|
+################
|
|
+
|
|
+MANSECTION = 7
|
|
+
|
|
+ifeq (,${MANDIR})
|
|
+ # find the best place to install the man page
|
|
+ MANPATH := $(shell (manpath 2>/dev/null || echo $MANPATH) | sed 's/:/ /g')
|
|
+ ifneq (,${MANPATH})
|
|
+ # test based on inclusion in MANPATH
|
|
+ test_dir = $(findstring ${dir}, ${MANPATH})
|
|
+ else
|
|
+ # no MANPATH, test based on directory existence
|
|
+ test_dir = $(shell [ -e ${dir} ] && echo ${dir})
|
|
+ endif
|
|
+ # our preferred install path
|
|
+ # should /usr/local/man be in here ?
|
|
+ MANDIR := /usr/share/man /usr/man
|
|
+ MANDIR := $(foreach dir, ${MANDIR}, ${test_dir})
|
|
+ MANDIR := $(firstword ${MANDIR})
|
|
+endif
|
|
+ifeq (,${MANDIR})
|
|
+ # fallback to /usr/man
|
|
+ MANDIR := /usr/man
|
|
+endif
|
|
+
|
|
+####################
|
|
+# CCFLAGS variable #
|
|
+####################
|
|
+
|
|
+# set correct CCFLAGS variable for kernels older than 2.6.24
|
|
+ifeq (0,$(shell [ ${KVER_CODE} -lt $(call get_kvercode,2,6,24) ]; echo $$?))
|
|
+CCFLAGS_VAR := EXTRA_CFLAGS
|
|
+else
|
|
+CCFLAGS_VAR := ccflags-y
|
|
+endif
|
|
+
|
|
+#################
|
|
+# KBUILD_OUTPUT #
|
|
+#################
|
|
+
|
|
+# Only set KBUILD_OUTPUT if KOBJ differs from KSRC
|
|
+ifneq (${KSRC},${KOBJ})
|
|
+export KBUILD_OUTPUT ?= ${KOBJ}
|
|
+endif
|
|
+
|
|
+############################
|
|
+# Module Install Directory #
|
|
+############################
|
|
+
|
|
+# Default to using updates/drivers/char/tpm/ path, since depmod since
|
|
+# v3.1 defaults to checking updates folder first, and only checking kernels/
|
|
+# and extra afterwards. We use updates instead of kernel/* due to desire to
|
|
+# prevent over-writing built-in modules files.
|
|
+export INSTALL_MOD_DIR ?= updates/drivers/char/tpm/
|
|
+
|
|
+
|
|
+######################
|
|
+# Kernel Build Macro #
|
|
+######################
|
|
+
|
|
+# kernel build function
|
|
+# ${1} is the kernel build target
|
|
+# ${2} may contain any extra rules to pass directly to the sub-make process
|
|
+#
|
|
+# This function is expected to be executed by
|
|
+# @+$(call kernelbuild,<target>,<extra parameters>)
|
|
+# from within a Makefile recipe.
|
|
+#
|
|
+# The following variables are expected to be defined for its use:
|
|
+# GCC_I_SYS -- if set it will enable use of gcc-i-sys.sh wrapper to use -isystem
|
|
+# CCFLAGS_VAR -- the CCFLAGS variable to set extra CFLAGS
|
|
+# EXTRA_CFLAGS -- a set of extra CFLAGS to pass into the ccflags-y variable
|
|
+# KSRC -- the location of the kernel source tree to build against
|
|
+# DRIVER_UPPERCASE -- the uppercase name of the kernel module, set from DRIVER
|
|
+#
|
|
+kernelbuild = ${MAKE} $(if ${GCC_I_SYS},CC="${GCC_I_SYS}") \
|
|
+ ${CCFLAGS_VAR}="${EXTRA_CFLAGS}" \
|
|
+ -C "${KSRC}" \
|
|
+ CONFIG_TCG_TPM=m \
|
|
+ CONFIG_ACPI=y \
|
|
+ CONFIG_TCG_TIS_CORE=m \
|
|
+ CONFIG_TCG_TIS=m \
|
|
+ CONFIG_TCG_TIS_I2C_ATMEL=m \
|
|
+ CONFIG_TCG_TIS_I2C_INFINEON=m \
|
|
+ CONFIG_TCG_TIS_I2C_NUVOTON=m \
|
|
+ CONFIG_TCG_NSC=m \
|
|
+ CONFIG_TCG_ATMEL=m \
|
|
+ CONFIG_TCG_INFINEON=m \
|
|
+ CONFIG_TCG_CRB=m \
|
|
+ CONFIG_${DRIVER_UPPERCASE}=m \
|
|
+ modules \
|
|
+ M="${CURDIR}" \
|
|
+ ${2} ${1}
|
|
diff --git a/kcompat.h b/kcompat.h
|
|
new file mode 100644
|
|
index 0000000..cd9578a
|
|
--- /dev/null
|
|
+++ b/kcompat.h
|
|
@@ -0,0 +1,39 @@
|
|
+/**********************************************************************
|
|
+ *
|
|
+ * Copyright (c) 2017 Wind River Systems, Inc.
|
|
+* SPDX-License-Identifier: Apache-2.0
|
|
+*
|
|
+*
|
|
+*
|
|
+ **********************************************************************/
|
|
+
|
|
+#ifndef _KCOMPAT_H_
|
|
+#define _KCOMPAT_H_
|
|
+
|
|
+#ifndef LINUX_VERSION_CODE
|
|
+#include <linux/version.h>
|
|
+#else
|
|
+#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
|
|
+#endif
|
|
+#include <linux/moduleparam.h>
|
|
+#include <linux/pm_runtime.h>
|
|
+
|
|
+#if ( LINUX_VERSION_CODE <= KERNEL_VERSION(3,10,0) )
|
|
+#include <linux/idr.h>
|
|
+#include <linux/printk.h>
|
|
+
|
|
+// would normally be passed in from the Kernel, had
|
|
+// we set CONFIG_TCG_TPM=y in the KConfig, however
|
|
+// that has the added disadvantage of building the
|
|
+// TPM driver in-kernel.
|
|
+#define CONFIG_TCG_TPM_MODULE 1
|
|
+
|
|
+#define acpi_os_map_iomem(x, y) acpi_os_map_memory(x, y)
|
|
+#define acpi_os_unmap_iomem(x, y) acpi_os_unmap_memory(x, y)
|
|
+
|
|
+#define module_pnp_driver(__pnp_driver) \
|
|
+ module_driver(__pnp_driver, pnp_register_driver, \
|
|
+ pnp_unregister_driver)
|
|
+
|
|
+#endif
|
|
+#endif
|
|
diff --git a/tpm.h b/tpm.h
|
|
index 4b4c8de..b744e2f 100644
|
|
--- a/tpm.h
|
|
+++ b/tpm.h
|
|
@@ -23,6 +23,9 @@
|
|
#ifndef __TPM_H__
|
|
#define __TPM_H__
|
|
|
|
+// WRS: the kernel compat layer
|
|
+#include "kcompat.h"
|
|
+
|
|
#include <linux/module.h>
|
|
#include <linux/delay.h>
|
|
#include <linux/fs.h>
|
|
--
|
|
1.8.3.1
|
|
|