| Age | Commit message (Collapse) | Author |
|
It is sometimes convenient to know how many and/or which resources are
currently loaded into a TPG, e.g. to test is a flush operation succeeded.
Hence, we add a command that lists the resources of a given type currently
loaded into the TPM.
Signed-off-by: Mario Six <[email protected]>
Reviewed-by: Simon Glass <[email protected]>
|
|
If we want to load a key into a TPM, we need to know the designated parent
key's handle, so that the TPM is able to insert the key at the correct place in
the key hierarchy.
However, if we want to load a key whose designated parent key we also
previously loaded ourselves, we first need to memorize this parent key's handle
(since the handles for the key are chosen at random when they are inserted into
the TPM). If we are, however, unable to do so, for example if the parent key is
loaded into the TPM during production, and its child key during the actual
boot, we must find a different mechanism to identify the parent key.
To solve this problem, we add a function that allows U-Boot to load a key into
the TPM using their designated parent key's SHA1 hash, and the corresponding
auth data.
Signed-off-by: Mario Six <[email protected]>
Reviewed-by: Simon Glass <[email protected]>
|
|
This patch adds a function to the TPM library, which allows U-Boot to
flush resources, e.g. keys, from the TPM.
Signed-off-by: Mario Six <[email protected]>
Reviewed-by: Stefan Roese <[email protected]>
Reviewed-by: Simon Glass <[email protected]>
Signed-off-by: Stefan Roese <[email protected]>
|
|
The Atmel AT97SC3204 is also TIS compliant.
Modify the tpm_tis_lpc driver to check for the vid/did used by the
Atmel AT97SC3204 and report an appropriate description.
Signed-off-by: George McCollister <[email protected]>
Reviewed-by: Simon Glass <[email protected]>
|
|
We should consistently use %z with size_t, and avoid passing a uint32_t as
a size_t value. Fix these issues to avoid warnings on 64-bit machines.
Signed-off-by: Simon Glass <[email protected]>
Reviewed-by: Bin Meng <[email protected]>
|
|
Now, include/linux/errno.h is a wrapper of <asm-generic/errno.h>.
Replace all include directives for <asm-generic/errno.h> with
<linux/errno.h>.
<asm-generic/...> is supposed to be included from <asm/...> when
arch-headers fall back into generic implementation. Generally, they
should not be directly included from .c files.
Signed-off-by: Masahiro Yamada <[email protected]>
[trini: Add drivers/usb/host/xhci-rockchip.c]
Signed-off-by: Tom Rini <[email protected]>
|
|
Commit 302c5db ("dm: tpm: Add Driver Model support for tpm_atmel_twi
driver") converted the Atmel TWI TPM driver itself to driver model, but
kept the legacy-style i2c_write/i2c_read calls.
Commit 3e7d940 ("dm: tpm: Every TPM drivers should depends on DM_TPM")
then made DM_I2C a dependency of the driver, effectively forcing users
to turn on CONFIG_DM_I2C_COMPAT to get it to work.
This patch adds the necessary dm_i2c_write/dm_i2c_read calls to make the
driver compatible with DM, but also keeps the legacy calls in ifdefs, so
that the driver is now compatible with both DM and non-DM setups.
Signed-off-by: Mario Six <[email protected]>
Reviewed-by: Simon Glass <[email protected]>
Reviewed-by: Andreas Bießmann <[email protected]>
|
|
In rollback_space_kernel we were not initializing the reserved fields
which should be for safety sake, and doing memset here means we don't
need to set the version field specifically either.
Reported-by: Coverity (CID: 143917)
Cc: Simon Glass <[email protected]>
Signed-off-by: Tom Rini <[email protected]>
|
|
To make the usage of this function more flexible, lets add the CRC start
value as parameter to this function. This way it can be used by other
functions requiring different start values than 0 as well.
For non-zero CRC start values to work, I've reworked the function a bit.
The new implementation is copied from the Linux version in
drivers/i2c/i2c-core.c / i2c_smbus_pec(). Which supports non-zero
CRC stating values.
I've double-checked that the results for zero starting values are
identical to the results from the original version of this function.
Signed-off-by: Stefan Roese <[email protected]>
Cc: Simon Glass <[email protected]>
Reviewed-by: Simon Glass <[email protected]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
TPM_TIS_LPC is connected to the LPC bus, not I2C.
Reviewed-by: Simon Glass <[email protected]>
Signed-off-by: Christophe Ricard <[email protected]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
Move this over to Kconfig and tidy up.
Signed-off-by: Simon Glass <[email protected]>
|
|
Including <linux/compiler.h> is enough for general use.
Signed-off-by: Masahiro Yamada <[email protected]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
Signed-off-by: Masahiro Yamada <[email protected]>
|
|
Signed-off-by: Masahiro Yamada <[email protected]>
|
|
Signed-off-by: Wolfgang Denk <[email protected]>
[trini: Fixup common/cmd_io.c]
Signed-off-by: Tom Rini <[email protected]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
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]>
|