summaryrefslogtreecommitdiff
path: root/drivers/tpm
AgeCommit message (Collapse)Author
2016-01-28tpm: st33zp24: Add tpm st33zp24 spi supportChristophe Ricard
Add support for TPM ST33ZP24 spi. The ST33ZP24 does have a spi interface. The transport protocol is proprietary. For spi we are relying only on DM_SPI. Reviewed-by: Simon Glass <[email protected]> Signed-off-by: Christophe Ricard <[email protected]>
2016-01-28tpm: st33zp24: Add tpm st33zp24 support with i2cChristophe Ricard
Add support for TPM ST33ZP24 family with i2c. For i2c we are relying only on DM_I2C. Reviewed-by: Simon Glass <[email protected]> Signed-off-by: Christophe Ricard <[email protected]>
2016-01-28tpm: Rename tpm_tis_infineon.h to tpm_tis.h and move infineon specific stuff ↵Christophe Ricard
in tpm_infineon.c I2C protocol is not standardize for TPM 1.2. TIS prococol is define by the Trusted Computing Group and potentially available on several TPMs. tpm_tis_infineon.h header is not generic enough. Rename tpm_tis_infineon.h to tpm_tis.h and move infineon specific defines/variables to tpm_tis_infineon.c Reviewed-by: Simon Glass <[email protected]> Signed-off-by: Christophe Ricard <[email protected]>
2016-01-28tpm: tpm_tis_lpc: fix typoChristophe Ricard
TPM_TIS_LPC is connected to the LPC bus, not I2C. Reviewed-by: Simon Glass <[email protected]> Signed-off-by: Christophe Ricard <[email protected]>
2015-10-23dm: tpm: Drop CONFIG_DM_TPMSimon Glass
Now that all TPM drivers use driver model, we can drop the special driver model CONFIG option. Signed-off-by: Simon Glass <[email protected]> Acked-by: Christophe Ricard<[email protected]>
2015-10-23dm: tpm: Every TPM drivers should depends on DM_TPMChristophe Ricard
Every TPM drivers should now depends on DM_TPM and not only TPM. Signed-off-by: Christophe Ricard <[email protected]> Reviewed-by: Tom Rini <[email protected]> Acked-by: Simon Glass <[email protected]>
2015-10-23dm: tpm: Remove every compilation switch for TPM driver modelChristophe Ricard
As every TPM drivers support UCLASS_TPM, we can only rely on DM_TPM functions. This simplify a bit the code. Signed-off-by: Christophe Ricard <[email protected]> Reviewed-by: Tom Rini <[email protected]> Acked-by: Simon Glass <[email protected]>
2015-10-23dm: tpm: Add Driver Model support for tpm_atmel_twi driverChristophe Ricard
tpm_atmel_twi can fit perfectly to the new UCLASS_TPM class. Signed-off-by: Christophe Ricard <[email protected]> Reviewed-by: Tom Rini <[email protected]> Acked-by: Simon Glass <[email protected]>
2015-10-23dm: tpm: Move tpm_tis_i2c to tpm_i2c_infineonChristophe Ricard
As there is no TCG specification or recommendation for i2c TPM 1.2, move tpm_tis_i2c driver to tpm_i2c_infineon. Other tpm vendors like Atmel or STMicroelectronics may have a different transport protocol for i2c. Signed-off-by: Christophe Ricard <[email protected]> Reviewed-by: Tom Rini <[email protected]> Acked-by: Simon Glass <[email protected]>
2015-08-31dm: tpm: Convert LPC driver to driver modelSimon Glass
Convert the tpm_tis_lpc driver to use driver model and update boards which use it. Signed-off-by: Simon Glass <[email protected]> Acked-by: Christophe Ricard<[email protected]> Reviewed-by: Heiko Schocher <[email protected]>
2015-08-31dm: tpm: Convert I2C driver to driver modelSimon Glass
Convert the tpm_tis_i2c driver to use driver model and update boards which use it. Signed-off-by: Simon Glass <[email protected]> Acked-by: Christophe Ricard<[email protected]> Reviewed-by: Heiko Schocher <[email protected]>
2015-08-31dm: tpm: sandbox: Convert TPM driver to driver modelSimon Glass
Convert the sandbox TPM driver to use driver model. Add it to the device tree so that it can be found on start-up. Signed-off-by: Simon Glass <[email protected]> Acked-by: Christophe Ricard <[email protected]> Reviewed-by: Heiko Schocher <[email protected]>
2015-08-31dm: tpm: Add a uclass for Trusted Platform ModulesSimon Glass
Add a new uclass for TPMs which uses almost the same TIS (TPM Interface Specification) as is currently implemented. Since init() is handled by the normal driver model probe() method, we don't need to implement that. Also rename the transfer method to xfer() which is a less clumbsy name. Once all drivers and users are converted to driver model we can remove the old code. Signed-off-by: Simon Glass <[email protected]> Acked-by: Christophe Ricard<[email protected]> Reviewed-by: Heiko Schocher <[email protected]>
2015-08-31tpm: tpm_tis_i2c: Tidy up delaysSimon Glass
Use a _US suffix for microseconds and a _MS suffic for milliseconds. Move all timeouts and delays into one place. Use mdelay() instead of udelay() where appropriate. Signed-off-by: Simon Glass <[email protected]> Acked-by: Christophe Ricard <[email protected]> Reviewed-by: Heiko Schocher <[email protected]>
2015-08-31tpm: tpm_tis_i2c: Use a consistent tpm_tis_i2c_ prefixSimon Glass
Use the same prefix on each function for consistency. Signed-off-by: Simon Glass <[email protected]> Acked-by: Christophe Ricard <[email protected]> Reviewed-by: Heiko Schocher <[email protected]>
2015-08-31tpm: tpm_tis_i2c: Simplify init codeSimon Glass
Move all the init and uninit code into one place. Signed-off-by: Simon Glass <[email protected]> Acked-by: Christophe Ricard<[email protected]> Reviewed-by: Heiko Schocher <[email protected]>
2015-08-31tpm: tpm_tis_i2c: Move definitions into the header fileSimon Glass
Some definitions are in the C file and some are in the header file. Move everything into the header file for consistency and to reduce clutter. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Heiko Schocher <[email protected]>
2015-08-31tpm: tpm_tis_i2c: Merge struct tpm into tpm_chipSimon Glass
There are too many structures storing the same sort of information. Move the fields from struct tpm into struct tpm_chip and remove the former struct. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Heiko Schocher <[email protected]>
2015-08-31tpm: tpm_tis_i2c: Merge struct tpm_dev into tpm_chipSimon Glass
There are too many structures storing the same sort of information. Move the fields from struct tpm_dev into struct tpm_chip and remove the former struct. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Heiko Schocher <[email protected]>
2015-08-31tpm: tpm_tis_i2c: Drop struct tpm_vendor_specificSimon Glass
This function is misnamed since it only applies to a single driver. Merge its fields into its parent. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Heiko Schocher <[email protected]>
2015-08-31tpm: tpm_tis_i2c: Drop unnecessary methodsSimon Glass
The function methods in struct tpm_vendor_specific just call local functions. Change the code to use a direct call. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Heiko Schocher <[email protected]>
2015-08-31tpm: Move the I2C TPM code into one fileSimon Glass
The current Infineon I2C TPM driver is written in two parts, intended to support use with other I2C devices. However we don't have any users and the Atmel I2C TPM device does not use this file. We should simplify this and remove the unused abstration. As a first step, move the code into one file. Also the name tpm_private.h suggests that the header file is generic to all TPMs but it is not. Rename it indicate that it relates only to this driver Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Heiko Schocher <[email protected]>
2015-08-31tpm: Convert drivers to use SPDXSimon Glass
Add an SPDX header to two drivers that don't have it. Signed-off-by: Simon Glass <[email protected]> Acked-by: Christophe Ricard <[email protected]> Reviewed-by: Heiko Schocher <[email protected]>
2015-08-31tpm: Add Kconfig options for TPMsSimon Glass
Add new Kconfig options for TPMs in preparation for moving boards to use Kconfig for TPM configuration. Signed-off-by: Simon Glass <[email protected]> Acked-by: Christophe Ricard<[email protected]> Reviewed-by: Heiko Schocher <[email protected]>
2015-08-31tpm: Remove old pre-driver-model I2C codeSimon Glass
This is not used anymore by any board so drop it. Signed-off-by: Simon Glass <[email protected]> Acked-by: Christophe Ricard <[email protected]> Reviewed-by: Heiko Schocher <[email protected]>
2015-08-18of: clean up OF_CONTROL ifdef conditionalsMasahiro Yamada
We have flipped CONFIG_SPL_DISABLE_OF_CONTROL. We have cleansing devices, $(SPL_) and CONFIG_IS_ENABLED(), so we are ready to clear away the ugly logic in include/fdtdec.h: #ifdef CONFIG_OF_CONTROL # if defined(CONFIG_SPL_BUILD) && !defined(SPL_OF_CONTROL) # define OF_CONTROL 0 # else # define OF_CONTROL 1 # endif #else # define OF_CONTROL 0 #endif Now CONFIG_IS_ENABLED(OF_CONTROL) is the substitute. It refers to CONFIG_OF_CONTROL for U-boot proper and CONFIG_SPL_OF_CONTROL for SPL. Also, we no longer have to cancel CONFIG_OF_CONTROL in include/config_uncmd_spl.h and scripts/Makefile.spl. Signed-off-by: Masahiro Yamada <[email protected]> Reviewed-by: Tom Rini <[email protected]> Reviewed-by: Simon Glass <[email protected]> Acked-by: Linus Walleij <[email protected]>
2015-05-14tpm: Support using driver model with I2CSimon Glass
As a first step towards converting the TPM system to driver model, allow it to work with CONFIG_DM_I2C. Signed-off-by: Simon Glass <[email protected]>
2015-04-18sandbox: Move CONFIG_TPM_TIS_SANDBOX to KconfigSimon Glass
Move this over to Kconfig and tidy up. Signed-off-by: Simon Glass <[email protected]>
2014-12-08Replace <compiler.h> with <linux/compiler.h>Masahiro Yamada
Including <linux/compiler.h> is enough for general use. Signed-off-by: Masahiro Yamada <[email protected]>
2014-11-23linux/kernel.h: sync min, max, min3, max3 macros with LinuxMasahiro Yamada
U-Boot has never cared about the type when we get max/min of two values, but Linux Kernel does. This commit gets min, max, min3, max3 macros synced with the kernel introducing type checks. Many of references of those macros must be fixed to suppress warnings. We have two options: - Use min, max, min3, max3 only when the arguments have the same type (or add casts to the arguments) - Use min_t/max_t instead with the appropriate type for the first argument Signed-off-by: Masahiro Yamada <[email protected]> Acked-by: Pavel Machek <[email protected]> Acked-by: Lukasz Majewski <[email protected]> Tested-by: Lukasz Majewski <[email protected]> [trini: Fixup arch/blackfin/lib/string.c] Signed-off-by: Tom Rini <[email protected]>
2014-09-24kconfig: add blank Kconfig filesMasahiro Yamada
This would be useful to start moving various config options. Signed-off-by: Masahiro Yamada <[email protected]> Acked-by: Simon Glass <[email protected]> Tested-by: Simon Glass <[email protected]>
2014-07-07tpm: don't use unneeded double bracketsJeroen Hofstee
clang is tempted to inteprete such a condition as a assignment as well. Since it isn't don't use double brackets. cc: Tom Wai-Hong Tam <[email protected]> Signed-off-by: Jeroen Hofstee <[email protected]>
2014-01-08sandbox: tpm: Fix nvwrite commandChe-Liang Chiou
The original codes misused recvbuf in source buffer instead of sendbuf, and read from incorrect offset 14 instead of 22. Signed-off-by: Che-Liang Chiou <[email protected]> Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Simon Glass <[email protected]> Tested-by: Che-Liang Chiou <[email protected]>
2014-01-08sandbox: tpm: Add TPM emulationSimon Glass
Add a simple TPM emulator for sandbox. It only supports a small subset of TPM operations. However, these are enough to perform common tasks. Note this is an initial commit to get this working, but it could use cleaning up (for example constants instead of open-coded values). Signed-off-by: Simon Glass <[email protected]> Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2013-11-17drivers: tpm: clean up unused codeMasahiro Yamada
Signed-off-by: Masahiro Yamada <[email protected]>
2013-10-31drivers: convert makefiles to Kbuild styleMasahiro Yamada
Signed-off-by: Masahiro Yamada <[email protected]>
2013-07-24Add GPL-2.0+ SPDX-License-Identifier to source filesWolfgang Denk
Signed-off-by: Wolfgang Denk <[email protected]> [trini: Fixup common/cmd_io.c] Signed-off-by: Tom Rini <[email protected]>
2013-07-16Add Atmel I2C tpmDirk Eibach
Add support for Atmel TPM devices with two wire interface. Signed-off-by: Dirk Eibach <[email protected]> Signed-off-by: Reinhard Pfau <[email protected]> Reviewed-by: Simon Glass <[email protected]> Signed-off-by: Andy Fleming <[email protected]>
2013-06-03tpm: Reorganize the I2C TPM driverTom Wai-Hong Tam
This patch does a similar code reogranzation from http://patchwork.ozlabs.org/patch/132179/ which is based on an old version of code (fdt support and bus selection still not in). It merges this tidy-up on top of the recent code. It does not make any logical change. tpm.c implements the interface defined in tpm.h based on underlying LPC or I2C TPM driver. tpm.c and the underlying driver communicate throught tpm_private.h. Note: Merging the LPC driver with tpm.c is left to future patches. Change-Id: Ie1384f5f9e3935d3bc9a44adf8de80c5a70a5f2b Signed-off-by: Tom Wai-Hong Tam <[email protected]> Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2013-06-03tpm: Add support for new Infineon I2C TPM (SLB 9645 TT 1.2 I2C)Vincent Palatin
Add support for Infineon's new SLB 9645 TT 1.2 I2C TPMs, which supports clockstretching, combined reads and a bus speed of up to 400khz. The device also has a new device id. This is based on the kernel patch provided by Infineon : https://gerrit.chromium.org/gerrit/42332 Signed-off-by: Vincent Palatin <[email protected]> Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Luigi Semenzato <[email protected]> Reviewed-by: Simon Glass <[email protected]> Reviewed-by: Vincent Palatin <[email protected]> Tested-by: Tom Wai-Hong Tam <[email protected]> Tested-by: Vincent Palatin <[email protected]>
2013-06-03tpm: Rename generic_lpc_tpm to tpm_tis_lpcChe-liang Chiou
The new name is more aligned with Linux kernel's naming of TPM driver. Signed-off-by: Peter Huewe <[email protected]> Signed-off-by: Che-Liang Chiou <[email protected]> Signed-off-by: Simon Glass <[email protected]> Acked-by: Mike Frysinger <[email protected]> Reviewed-by: Simon Glass <[email protected]> Tested-by: Tom Wai-Hong Tam <[email protected]>
2013-04-12tpm: Add Infineon slb9635_i2c TPM driverRong Chang
Add a driver for the I2C TPM from Infineon. Signed-off-by: Che-Liang Chiou <[email protected]> Signed-off-by: Rong Chang <[email protected]> Signed-off-by: Tom Wai-Hong Tam <[email protected]> Signed-off-by: Simon Glass <[email protected]>
2013-04-12tpm: Add casts for proper compilationTaylor Hutt
When building for the Sandbox version, the casts in this change are necessary to avoid compilation issues. Signed-off-by: Taylor Hutt <[email protected]> Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2011-12-07Introduce generic TPM support in u-bootVadim Bendebury
TPM (Trusted Platform Module) is an integrated circuit and software platform that provides computer manufacturers with the core components of a subsystem used to assure authenticity, integrity and confidentiality. This driver supports version 1.2 of the TCG (Trusted Computing Group) specifications. The TCG specification defines several so called localities in a TPM chip, to be controlled by different software layers. When used on a typical x86 platform during the firmware phase, only locality 0 can be accessed by the CPU, so this driver even while supporting the locality concept presumes that only locality zero is used. This implementation is loosely based on the article "Writing a TPM Device Driver" published on http://ptgmedia.pearsoncmg.com Compiling this driver with DEBUG defined will generate trace of all accesses to TMP registers. This driver has been tested and is being used in three different functional ChromeOS machines (Pinetrail and Sandy Bridge Intel chipsets) all using the same Infineon SLB 9635 TT 1.2 device. A u-boot cli command allowing access to the TPM was also implemented and is being submitted as a second patch. Change-Id: I22a33c3e5b2e20eec9557a7621bd463b30389d73 Signed-off-by: Vadim Bendebury <[email protected]> CC: Wolfgang Denk <[email protected]>