hi Simon, On Wed, 9 Mar 2022 at 11:30, Sughosh Ganu <sughosh.g...@linaro.org> wrote: > > hi Simon, > > Thanks for looking into this. I now have a fair idea of the structure > that you are looking for this interface. > > On Wed, 9 Mar 2022 at 08:05, Simon Glass <s...@chromium.org> wrote: > > > > Hi Sugosh, > > > > On Fri, 4 Mar 2022 at 06:35, Sughosh Ganu <sughosh.g...@linaro.org> wrote: > > > > > > The TPM device has a builtin random number generator(RNG) > > > functionality. Expose the RNG functions of the TPM device to the > > > driver model so that they can be used by the EFI_RNG_PROTOCOL if the > > > protocol is installed. > > > > > > Also change the function arguments and return type of the random > > > number functions to comply with the driver model api. > > > > > > Signed-off-by: Sughosh Ganu <sughosh.g...@linaro.org> > > > --- > > > > > > Changes since V2: > > > > > > * Export the existing tpm*_get_random functions to the driver model > > > instead of moving them to the drivers/rng/ directory.
<snip> > > > diff --git a/lib/tpm_api.c b/lib/tpm_api.c > > > index da48058abe..3584fda98c 100644 > > > --- a/lib/tpm_api.c > > > +++ b/lib/tpm_api.c > > > @@ -6,6 +6,7 @@ > > > #include <common.h> > > > #include <dm.h> > > > #include <log.h> > > > +#include <rng.h> > > > #include <tpm_api.h> > > > #include <tpm-v1.h> > > > #include <tpm-v2.h> > > > @@ -265,12 +266,26 @@ u32 tpm_get_permissions(struct udevice *dev, u32 > > > index, u32 *perm) > > > return -ENOSYS; > > > } > > > > > > +#if CONFIG_IS_ENABLED(DM_RNG) > > > int tpm_get_random(struct udevice *dev, void *data, u32 count) > > > { > > > + int ret = -ENOSYS; > > > + struct udevice *rng_dev; > > > + > > > if (tpm_is_v1(dev)) > > > - return tpm1_get_random(dev, data, count); > > > + ret = uclass_get_device_by_driver(UCLASS_RNG, > > > + DM_DRIVER_GET(tpm1_rng), > > > + &rng_dev); > > > > Er, tpm_get_random() should take a tpm device. The random device > > should be handled by the caller, which should call > > tpm_get_random(rand_dev->parent... > > Okay. I will make the changes as per your suggestion. Thanks for the > review of the patch. Having had a relook at this, the tpm_get_random is indeed getting the TPM device. Which is why the call to tpm_is_v1 is being called with the same 'dev' argument. So I believe this function is currently as per what you are looking for. Getting the TPM device as the first argument. -sughosh