From: Jarkko Sakkinen <jarkko.sakkinen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
To: Christophe Ricard
<christophe.ricard-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: jean-luc.blanc-qxv4g6HH51o@public.gmane.org,
ashley-fm2HMyfA2y6tG0bUXCXiUA@public.gmane.org,
tpmdd-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org,
christophe-h.ricard-qxv4g6HH51o@public.gmane.org,
benoit.houyere-qxv4g6HH51o@public.gmane.org
Subject: Re: [PATCH v3 5/6] tpm: Move tpm_vendor_specific data related with PTP specification to tpm_chip
Date: Thu, 31 Mar 2016 09:55:20 +0300 [thread overview]
Message-ID: <20160331065520.GF6393@intel.com> (raw)
In-Reply-To: <1459373895-17704-6-git-send-email-christophe-h.ricard-qxv4g6HH51o@public.gmane.org>
On Wed, Mar 30, 2016 at 11:38:14PM +0200, Christophe Ricard wrote:
> Move tpm_vendor_specific data related to TCG PTP specification to tpm_chip.
>
> All those fields are directly linked with well known concepts defined in
> the following chapters common to every TCG tpms.
> timeout: See see 5.5.1.4 Timeouts
> duration: See 5.5.1.3 Command Duration
>
> Also they are used in TPM drivers (tpm_i2c_atmel, tpm_i2c_infineon,
> tpm_i2c_nuvoton, tpm_tis and xen-tpmfront) as well as in TPM core files
> (tpm-sysfs, tpm-interface and tpm2-cmd).
>
> Signed-off-by: Christophe Ricard <christophe-h.ricard-qxv4g6HH51o@public.gmane.org>
Yes, exactly those fields that are used by tpm-interface.c, tpm2-cmd.c
and other "main TPM driver" things should be in tpm_chip. Nothing more
or nothing less...
> ---
> drivers/char/tpm/st33zp24/st33zp24.c | 18 +++++++-------
> drivers/char/tpm/tpm-interface.c | 48 ++++++++++++++++++------------------
> drivers/char/tpm/tpm-sysfs.c | 20 +++++++--------
> drivers/char/tpm/tpm.h | 8 +++---
> drivers/char/tpm/tpm2-cmd.c | 2 +-
> drivers/char/tpm/tpm_i2c_atmel.c | 8 +++---
> drivers/char/tpm/tpm_i2c_infineon.c | 20 +++++++--------
> drivers/char/tpm/tpm_i2c_nuvoton.c | 24 +++++++++---------
> drivers/char/tpm/tpm_tis.c | 24 +++++++++---------
> drivers/char/tpm/xen-tpmfront.c | 4 +--
> 10 files changed, 88 insertions(+), 88 deletions(-)
>
> diff --git a/drivers/char/tpm/st33zp24/st33zp24.c b/drivers/char/tpm/st33zp24/st33zp24.c
> index 3802c58..07531e9 100644
> --- a/drivers/char/tpm/st33zp24/st33zp24.c
> +++ b/drivers/char/tpm/st33zp24/st33zp24.c
> @@ -163,7 +163,7 @@ static int request_locality(struct tpm_chip *chip)
> if (ret < 0)
> return ret;
>
> - stop = jiffies + chip->vendor.timeout_a;
> + stop = jiffies + chip->timeout_a;
>
> /* Request locality is usually effective after the request */
> do {
> @@ -205,7 +205,7 @@ static int get_burstcount(struct tpm_chip *chip)
>
> tpm_dev = (struct st33zp24_dev *)TPM_VPRIV(chip);
>
> - stop = jiffies + chip->vendor.timeout_d;
> + stop = jiffies + chip->timeout_d;
> do {
> status = tpm_dev->ops->recv(tpm_dev->phy_id, TPM_STS + 1,
> &temp, 1);
> @@ -337,7 +337,7 @@ static int recv_data(struct tpm_chip *chip, u8 *buf, size_t count)
> while (size < count &&
> wait_for_stat(chip,
> TPM_STS_DATA_AVAIL | TPM_STS_VALID,
> - chip->vendor.timeout_c,
> + chip->timeout_c,
> &tpm_dev->read_queue, true) == 0) {
> burstcnt = get_burstcount(chip);
> if (burstcnt < 0)
> @@ -406,7 +406,7 @@ static int st33zp24_send(struct tpm_chip *chip, unsigned char *buf,
> if ((status & TPM_STS_COMMAND_READY) == 0) {
> st33zp24_cancel(chip);
> if (wait_for_stat
> - (chip, TPM_STS_COMMAND_READY, chip->vendor.timeout_b,
> + (chip, TPM_STS_COMMAND_READY, chip->timeout_b,
> &tpm_dev->read_queue, false) < 0) {
> ret = -ETIME;
> goto out_err;
> @@ -561,10 +561,10 @@ int st33zp24_probe(void *phy_id, const struct st33zp24_phy_ops *ops,
> tpm_dev->phy_id = phy_id;
> tpm_dev->ops = ops;
>
> - chip->vendor.timeout_a = msecs_to_jiffies(TIS_SHORT_TIMEOUT);
> - chip->vendor.timeout_b = msecs_to_jiffies(TIS_LONG_TIMEOUT);
> - chip->vendor.timeout_c = msecs_to_jiffies(TIS_SHORT_TIMEOUT);
> - chip->vendor.timeout_d = msecs_to_jiffies(TIS_SHORT_TIMEOUT);
> + chip->timeout_a = msecs_to_jiffies(TIS_SHORT_TIMEOUT);
> + chip->timeout_b = msecs_to_jiffies(TIS_LONG_TIMEOUT);
> + chip->timeout_c = msecs_to_jiffies(TIS_SHORT_TIMEOUT);
> + chip->timeout_d = msecs_to_jiffies(TIS_SHORT_TIMEOUT);
>
> tpm_dev->locality = LOCALITY0;
>
> @@ -673,7 +673,7 @@ int st33zp24_pm_resume(struct device *dev)
> if (gpio_is_valid(tpm_dev->io_lpcpd)) {
> gpio_set_value(tpm_dev->io_lpcpd, 1);
> ret = wait_for_stat(chip,
> - TPM_STS_VALID, chip->vendor.timeout_b,
> + TPM_STS_VALID, chip->timeout_b,
> &tpm_dev->read_queue, false);
> } else {
> ret = tpm_pm_resume(dev);
> diff --git a/drivers/char/tpm/tpm-interface.c b/drivers/char/tpm/tpm-interface.c
> index 101bb47..7cba092 100644
> --- a/drivers/char/tpm/tpm-interface.c
> +++ b/drivers/char/tpm/tpm-interface.c
> @@ -319,7 +319,7 @@ unsigned long tpm_calc_ordinal_duration(struct tpm_chip *chip,
> duration_idx = tpm_ordinal_duration[ordinal];
>
> if (duration_idx != TPM_UNDEFINED)
> - duration = chip->vendor.duration[duration_idx];
> + duration = chip->duration[duration_idx];
> if (duration <= 0)
> return 2 * 60 * HZ;
> else
> @@ -505,15 +505,15 @@ int tpm_get_timeouts(struct tpm_chip *chip)
>
> if (chip->flags & TPM_CHIP_FLAG_TPM2) {
> /* Fixed timeouts for TPM2 */
> - chip->vendor.timeout_a = msecs_to_jiffies(TPM2_TIMEOUT_A);
> - chip->vendor.timeout_b = msecs_to_jiffies(TPM2_TIMEOUT_B);
> - chip->vendor.timeout_c = msecs_to_jiffies(TPM2_TIMEOUT_C);
> - chip->vendor.timeout_d = msecs_to_jiffies(TPM2_TIMEOUT_D);
> - chip->vendor.duration[TPM_SHORT] =
> + chip->timeout_a = msecs_to_jiffies(TPM2_TIMEOUT_A);
> + chip->timeout_b = msecs_to_jiffies(TPM2_TIMEOUT_B);
> + chip->timeout_c = msecs_to_jiffies(TPM2_TIMEOUT_C);
> + chip->timeout_d = msecs_to_jiffies(TPM2_TIMEOUT_D);
> + chip->duration[TPM_SHORT] =
> msecs_to_jiffies(TPM2_DURATION_SHORT);
> - chip->vendor.duration[TPM_MEDIUM] =
> + chip->duration[TPM_MEDIUM] =
> msecs_to_jiffies(TPM2_DURATION_MEDIUM);
> - chip->vendor.duration[TPM_LONG] =
> + chip->duration[TPM_LONG] =
> msecs_to_jiffies(TPM2_DURATION_LONG);
> return 0;
> }
> @@ -561,10 +561,10 @@ int tpm_get_timeouts(struct tpm_chip *chip)
> * of misreporting.
> */
> if (chip->ops->update_timeouts != NULL)
> - chip->vendor.timeout_adjusted =
> + chip->timeout_adjusted =
> chip->ops->update_timeouts(chip, new_timeout);
>
> - if (!chip->vendor.timeout_adjusted) {
> + if (!chip->timeout_adjusted) {
> /* Don't overwrite default if value is 0 */
> if (new_timeout[0] != 0 && new_timeout[0] < 1000) {
> int i;
> @@ -572,12 +572,12 @@ int tpm_get_timeouts(struct tpm_chip *chip)
> /* timeouts in msec rather usec */
> for (i = 0; i != ARRAY_SIZE(new_timeout); i++)
> new_timeout[i] *= 1000;
> - chip->vendor.timeout_adjusted = true;
> + chip->timeout_adjusted = true;
> }
> }
>
> /* Report adjusted timeouts */
> - if (chip->vendor.timeout_adjusted) {
> + if (chip->timeout_adjusted) {
> dev_info(&chip->dev,
> HW_ERR "Adjusting reported timeouts: A %lu->%luus B %lu->%luus C %lu->%luus D %lu->%luus\n",
> old_timeout[0], new_timeout[0],
> @@ -586,10 +586,10 @@ int tpm_get_timeouts(struct tpm_chip *chip)
> old_timeout[3], new_timeout[3]);
> }
>
> - chip->vendor.timeout_a = usecs_to_jiffies(new_timeout[0]);
> - chip->vendor.timeout_b = usecs_to_jiffies(new_timeout[1]);
> - chip->vendor.timeout_c = usecs_to_jiffies(new_timeout[2]);
> - chip->vendor.timeout_d = usecs_to_jiffies(new_timeout[3]);
> + chip->timeout_a = usecs_to_jiffies(new_timeout[0]);
> + chip->timeout_b = usecs_to_jiffies(new_timeout[1]);
> + chip->timeout_c = usecs_to_jiffies(new_timeout[2]);
> + chip->timeout_d = usecs_to_jiffies(new_timeout[3]);
>
> duration:
> tpm_cmd.header.in = tpm_getcap_header;
> @@ -608,11 +608,11 @@ duration:
> return -EINVAL;
>
> duration_cap = &tpm_cmd.params.getcap_out.cap.duration;
> - chip->vendor.duration[TPM_SHORT] =
> + chip->duration[TPM_SHORT] =
> usecs_to_jiffies(be32_to_cpu(duration_cap->tpm_short));
> - chip->vendor.duration[TPM_MEDIUM] =
> + chip->duration[TPM_MEDIUM] =
> usecs_to_jiffies(be32_to_cpu(duration_cap->tpm_medium));
> - chip->vendor.duration[TPM_LONG] =
> + chip->duration[TPM_LONG] =
> usecs_to_jiffies(be32_to_cpu(duration_cap->tpm_long));
>
> /* The Broadcom BCM0102 chipset in a Dell Latitude D820 gets the above
> @@ -620,11 +620,11 @@ duration:
> * fix up the resulting too-small TPM_SHORT value to make things work.
> * We also scale the TPM_MEDIUM and -_LONG values by 1000.
> */
> - if (chip->vendor.duration[TPM_SHORT] < (HZ / 100)) {
> - chip->vendor.duration[TPM_SHORT] = HZ;
> - chip->vendor.duration[TPM_MEDIUM] *= 1000;
> - chip->vendor.duration[TPM_LONG] *= 1000;
> - chip->vendor.duration_adjusted = true;
> + if (chip->duration[TPM_SHORT] < (HZ / 100)) {
> + chip->duration[TPM_SHORT] = HZ;
> + chip->duration[TPM_MEDIUM] *= 1000;
> + chip->duration[TPM_LONG] *= 1000;
> + chip->duration_adjusted = true;
> dev_info(&chip->dev, "Adjusting TPM timeout parameters.");
> }
> return 0;
> diff --git a/drivers/char/tpm/tpm-sysfs.c b/drivers/char/tpm/tpm-sysfs.c
> index 34e7fc7..a7c3473 100644
> --- a/drivers/char/tpm/tpm-sysfs.c
> +++ b/drivers/char/tpm/tpm-sysfs.c
> @@ -236,14 +236,14 @@ static ssize_t durations_show(struct device *dev, struct device_attribute *attr,
> {
> struct tpm_chip *chip = dev_get_drvdata(dev);
>
> - if (chip->vendor.duration[TPM_LONG] == 0)
> + if (chip->duration[TPM_LONG] == 0)
> return 0;
>
> return sprintf(buf, "%d %d %d [%s]\n",
> - jiffies_to_usecs(chip->vendor.duration[TPM_SHORT]),
> - jiffies_to_usecs(chip->vendor.duration[TPM_MEDIUM]),
> - jiffies_to_usecs(chip->vendor.duration[TPM_LONG]),
> - chip->vendor.duration_adjusted
> + jiffies_to_usecs(chip->duration[TPM_SHORT]),
> + jiffies_to_usecs(chip->duration[TPM_MEDIUM]),
> + jiffies_to_usecs(chip->duration[TPM_LONG]),
> + chip->duration_adjusted
> ? "adjusted" : "original");
> }
> static DEVICE_ATTR_RO(durations);
> @@ -254,11 +254,11 @@ static ssize_t timeouts_show(struct device *dev, struct device_attribute *attr,
> struct tpm_chip *chip = dev_get_drvdata(dev);
>
> return sprintf(buf, "%d %d %d %d [%s]\n",
> - jiffies_to_usecs(chip->vendor.timeout_a),
> - jiffies_to_usecs(chip->vendor.timeout_b),
> - jiffies_to_usecs(chip->vendor.timeout_c),
> - jiffies_to_usecs(chip->vendor.timeout_d),
> - chip->vendor.timeout_adjusted
> + jiffies_to_usecs(chip->timeout_a),
> + jiffies_to_usecs(chip->timeout_b),
> + jiffies_to_usecs(chip->timeout_c),
> + jiffies_to_usecs(chip->timeout_d),
> + chip->timeout_adjusted
> ? "adjusted" : "original");
> }
> static DEVICE_ATTR_RO(timeouts);
> diff --git a/drivers/char/tpm/tpm.h b/drivers/char/tpm/tpm.h
> index 68a40c6..7e2b788 100644
> --- a/drivers/char/tpm/tpm.h
> +++ b/drivers/char/tpm/tpm.h
> @@ -131,10 +131,6 @@ enum tpm2_startup_types {
> struct tpm_chip;
>
> struct tpm_vendor_specific {
> - unsigned long timeout_a, timeout_b, timeout_c, timeout_d; /* jiffies */
> - bool timeout_adjusted;
> - unsigned long duration[3]; /* jiffies */
> - bool duration_adjusted;
> void *priv;
> };
>
> @@ -171,6 +167,10 @@ struct tpm_chip {
> struct mutex tpm_mutex; /* tpm is processing */
>
> struct tpm_vendor_specific vendor;
> + unsigned long timeout_a, timeout_b, timeout_c, timeout_d; /* jiffies */
One field per line. No reason to copy bad and lazy coding style.
> + bool timeout_adjusted;
> + unsigned long duration[3]; /* jiffies */
> + bool duration_adjusted;
>
> struct dentry **bios_dir;
>
> diff --git a/drivers/char/tpm/tpm2-cmd.c b/drivers/char/tpm/tpm2-cmd.c
> index 5fc0e7c..9ce8031 100644
> --- a/drivers/char/tpm/tpm2-cmd.c
> +++ b/drivers/char/tpm/tpm2-cmd.c
> @@ -793,7 +793,7 @@ unsigned long tpm2_calc_ordinal_duration(struct tpm_chip *chip, u32 ordinal)
> index = tpm2_ordinal_duration[ordinal - TPM2_CC_FIRST];
>
> if (index != TPM_UNDEFINED)
> - duration = chip->vendor.duration[index];
> + duration = chip->duration[index];
>
> if (duration <= 0)
> duration = 2 * 60 * HZ;
> diff --git a/drivers/char/tpm/tpm_i2c_atmel.c b/drivers/char/tpm/tpm_i2c_atmel.c
> index 55fa51f..1b66da6 100644
> --- a/drivers/char/tpm/tpm_i2c_atmel.c
> +++ b/drivers/char/tpm/tpm_i2c_atmel.c
> @@ -169,10 +169,10 @@ static int i2c_atmel_probe(struct i2c_client *client,
> return -ENOMEM;
>
> /* Default timeouts */
> - chip->vendor.timeout_a = msecs_to_jiffies(TPM_I2C_SHORT_TIMEOUT);
> - chip->vendor.timeout_b = msecs_to_jiffies(TPM_I2C_LONG_TIMEOUT);
> - chip->vendor.timeout_c = msecs_to_jiffies(TPM_I2C_SHORT_TIMEOUT);
> - chip->vendor.timeout_d = msecs_to_jiffies(TPM_I2C_SHORT_TIMEOUT);
> + chip->timeout_a = msecs_to_jiffies(TPM_I2C_SHORT_TIMEOUT);
> + chip->timeout_b = msecs_to_jiffies(TPM_I2C_LONG_TIMEOUT);
> + chip->timeout_c = msecs_to_jiffies(TPM_I2C_SHORT_TIMEOUT);
> + chip->timeout_d = msecs_to_jiffies(TPM_I2C_SHORT_TIMEOUT);
>
> /* There is no known way to probe for this device, and all version
> * information seems to be read via TPM commands. Thus we rely on the
> diff --git a/drivers/char/tpm/tpm_i2c_infineon.c b/drivers/char/tpm/tpm_i2c_infineon.c
> index 8318946..a426b6f 100644
> --- a/drivers/char/tpm/tpm_i2c_infineon.c
> +++ b/drivers/char/tpm/tpm_i2c_infineon.c
> @@ -321,7 +321,7 @@ static int request_locality(struct tpm_chip *chip, int loc)
> iic_tpm_write(TPM_ACCESS(loc), &buf, 1);
>
> /* wait for burstcount */
> - stop = jiffies + chip->vendor.timeout_a;
> + stop = jiffies + chip->timeout_a;
> do {
> if (check_locality(chip, loc) >= 0)
> return loc;
> @@ -363,7 +363,7 @@ static ssize_t get_burstcount(struct tpm_chip *chip)
>
> /* wait for burstcount */
> /* which timeout value, spec has 2 answers (c & d) */
> - stop = jiffies + chip->vendor.timeout_d;
> + stop = jiffies + chip->timeout_d;
> do {
> /* Note: STS is little endian */
> if (iic_tpm_read(TPM_STS(tpm_dev.locality)+1, buf, 3) < 0)
> @@ -465,7 +465,7 @@ static int tpm_tis_i2c_recv(struct tpm_chip *chip, u8 *buf, size_t count)
> goto out;
> }
>
> - wait_for_stat(chip, TPM_STS_VALID, chip->vendor.timeout_c, &status);
> + wait_for_stat(chip, TPM_STS_VALID, chip->timeout_c, &status);
> if (status & TPM_STS_DATA_AVAIL) { /* retry? */
> dev_err(&chip->dev, "Error left over data\n");
> size = -EIO;
> @@ -501,7 +501,7 @@ static int tpm_tis_i2c_send(struct tpm_chip *chip, u8 *buf, size_t len)
> tpm_tis_i2c_ready(chip);
> if (wait_for_stat
> (chip, TPM_STS_COMMAND_READY,
> - chip->vendor.timeout_b, &status) < 0) {
> + chip->timeout_b, &status) < 0) {
> rc = -ETIME;
> goto out_err;
> }
> @@ -531,7 +531,7 @@ static int tpm_tis_i2c_send(struct tpm_chip *chip, u8 *buf, size_t len)
> }
>
> wait_for_stat(chip, TPM_STS_VALID,
> - chip->vendor.timeout_c, &status);
> + chip->timeout_c, &status);
>
> if ((status & TPM_STS_DATA_EXPECT) == 0) {
> rc = -EIO;
> @@ -541,7 +541,7 @@ static int tpm_tis_i2c_send(struct tpm_chip *chip, u8 *buf, size_t len)
>
> /* write last byte */
> iic_tpm_write(TPM_DATA_FIFO(tpm_dev.locality), &(buf[count]), 1);
> - wait_for_stat(chip, TPM_STS_VALID, chip->vendor.timeout_c, &status);
> + wait_for_stat(chip, TPM_STS_VALID, chip->timeout_c, &status);
> if ((status & TPM_STS_DATA_EXPECT) != 0) {
> rc = -EIO;
> goto out_err;
> @@ -587,10 +587,10 @@ static int tpm_tis_i2c_init(struct device *dev)
> return PTR_ERR(chip);
>
> /* Default timeouts */
> - chip->vendor.timeout_a = msecs_to_jiffies(TIS_SHORT_TIMEOUT);
> - chip->vendor.timeout_b = msecs_to_jiffies(TIS_LONG_TIMEOUT);
> - chip->vendor.timeout_c = msecs_to_jiffies(TIS_SHORT_TIMEOUT);
> - chip->vendor.timeout_d = msecs_to_jiffies(TIS_SHORT_TIMEOUT);
> + chip->timeout_a = msecs_to_jiffies(TIS_SHORT_TIMEOUT);
> + chip->timeout_b = msecs_to_jiffies(TIS_LONG_TIMEOUT);
> + chip->timeout_c = msecs_to_jiffies(TIS_SHORT_TIMEOUT);
> + chip->timeout_d = msecs_to_jiffies(TIS_SHORT_TIMEOUT);
>
> if (request_locality(chip, 0) != 0) {
> dev_err(dev, "could not request locality\n");
> diff --git a/drivers/char/tpm/tpm_i2c_nuvoton.c b/drivers/char/tpm/tpm_i2c_nuvoton.c
> index 2c1fa26..491a16a 100644
> --- a/drivers/char/tpm/tpm_i2c_nuvoton.c
> +++ b/drivers/char/tpm/tpm_i2c_nuvoton.c
> @@ -144,7 +144,7 @@ static void i2c_nuvoton_ready(struct tpm_chip *chip)
> static int i2c_nuvoton_get_burstcount(struct i2c_client *client,
> struct tpm_chip *chip)
> {
> - unsigned long stop = jiffies + chip->vendor.timeout_d;
> + unsigned long stop = jiffies + chip->timeout_d;
> s32 status;
> int burst_count = -1;
> u8 data;
> @@ -239,7 +239,7 @@ static int i2c_nuvoton_recv_data(struct i2c_client *client,
>
> while (size < count &&
> i2c_nuvoton_wait_for_data_avail(chip,
> - chip->vendor.timeout_c,
> + chip->timeout_c,
> &priv->read_queue) == 0) {
> burst_count = i2c_nuvoton_get_burstcount(client, chip);
> if (burst_count < 0) {
> @@ -289,7 +289,7 @@ static int i2c_nuvoton_recv(struct tpm_chip *chip, u8 *buf, size_t count)
> * tag, paramsize, and result
> */
> status = i2c_nuvoton_wait_for_data_avail(
> - chip, chip->vendor.timeout_c, &priv->read_queue);
> + chip, chip->timeout_c, &priv->read_queue);
> if (status != 0) {
> dev_err(dev, "%s() timeout on dataAvail\n", __func__);
> size = -ETIMEDOUT;
> @@ -329,7 +329,7 @@ static int i2c_nuvoton_recv(struct tpm_chip *chip, u8 *buf, size_t count)
> }
> if (i2c_nuvoton_wait_for_stat(
> chip, TPM_STS_VALID | TPM_STS_DATA_AVAIL,
> - TPM_STS_VALID, chip->vendor.timeout_c,
> + TPM_STS_VALID, chip->timeout_c,
> NULL)) {
> dev_err(dev, "%s() error left over data\n", __func__);
> size = -ETIMEDOUT;
> @@ -362,7 +362,7 @@ static int i2c_nuvoton_send(struct tpm_chip *chip, u8 *buf, size_t len)
> i2c_nuvoton_ready(chip);
> if (i2c_nuvoton_wait_for_stat(chip, TPM_STS_COMMAND_READY,
> TPM_STS_COMMAND_READY,
> - chip->vendor.timeout_b, NULL)) {
> + chip->timeout_b, NULL)) {
> dev_err(dev, "%s() timeout on commandReady\n",
> __func__);
> rc = -EIO;
> @@ -394,7 +394,7 @@ static int i2c_nuvoton_send(struct tpm_chip *chip, u8 *buf, size_t len)
> TPM_STS_EXPECT,
> TPM_STS_VALID |
> TPM_STS_EXPECT,
> - chip->vendor.timeout_c,
> + chip->timeout_c,
> NULL);
> if (rc < 0) {
> dev_err(dev, "%s() timeout on Expect\n",
> @@ -419,7 +419,7 @@ static int i2c_nuvoton_send(struct tpm_chip *chip, u8 *buf, size_t len)
> rc = i2c_nuvoton_wait_for_stat(chip,
> TPM_STS_VALID | TPM_STS_EXPECT,
> TPM_STS_VALID,
> - chip->vendor.timeout_c, NULL);
> + chip->timeout_c, NULL);
> if (rc) {
> dev_err(dev, "%s() timeout on Expect to clear\n",
> __func__);
> @@ -548,10 +548,10 @@ static int i2c_nuvoton_probe(struct i2c_client *client,
> init_waitqueue_head(&priv->read_queue);
>
> /* Default timeouts */
> - chip->vendor.timeout_a = msecs_to_jiffies(TPM_I2C_SHORT_TIMEOUT);
> - chip->vendor.timeout_b = msecs_to_jiffies(TPM_I2C_LONG_TIMEOUT);
> - chip->vendor.timeout_c = msecs_to_jiffies(TPM_I2C_SHORT_TIMEOUT);
> - chip->vendor.timeout_d = msecs_to_jiffies(TPM_I2C_SHORT_TIMEOUT);
> + chip->timeout_a = msecs_to_jiffies(TPM_I2C_SHORT_TIMEOUT);
> + chip->timeout_b = msecs_to_jiffies(TPM_I2C_LONG_TIMEOUT);
> + chip->timeout_c = msecs_to_jiffies(TPM_I2C_SHORT_TIMEOUT);
> + chip->timeout_d = msecs_to_jiffies(TPM_I2C_SHORT_TIMEOUT);
>
> /*
> * I2C intfcaps (interrupt capabilitieis) in the chip are hard coded to:
> @@ -580,7 +580,7 @@ static int i2c_nuvoton_probe(struct i2c_client *client,
> rc = i2c_nuvoton_wait_for_stat(chip,
> TPM_STS_COMMAND_READY,
> TPM_STS_COMMAND_READY,
> - chip->vendor.timeout_b,
> + chip->timeout_b,
> NULL);
> if (rc == 0) {
> /*
> diff --git a/drivers/char/tpm/tpm_tis.c b/drivers/char/tpm/tpm_tis.c
> index 25f2854..7b15097 100644
> --- a/drivers/char/tpm/tpm_tis.c
> +++ b/drivers/char/tpm/tpm_tis.c
> @@ -133,7 +133,7 @@ static inline int is_itpm(struct acpi_device *dev)
> static int wait_startup(struct tpm_chip *chip, int l)
> {
> struct priv_data *priv = chip->vendor.priv;
> - unsigned long stop = jiffies + chip->vendor.timeout_a;
> + unsigned long stop = jiffies + chip->timeout_a;
> do {
> if (ioread8(priv->iobase + TPM_ACCESS(l)) &
> TPM_ACCESS_VALID)
> @@ -178,7 +178,7 @@ static int request_locality(struct tpm_chip *chip, int l)
> iowrite8(TPM_ACCESS_REQUEST_USE,
> priv->iobase + TPM_ACCESS(l));
>
> - stop = jiffies + chip->vendor.timeout_a;
> + stop = jiffies + chip->timeout_a;
>
> if (chip->flags & TPM_CHIP_FLAG_IRQ) {
> again:
> @@ -232,7 +232,7 @@ static int get_burstcount(struct tpm_chip *chip)
>
> /* wait for burstcount */
> /* which timeout value, spec has 2 answers (c & d) */
> - stop = jiffies + chip->vendor.timeout_d;
> + stop = jiffies + chip->timeout_d;
> do {
> burstcnt = ioread8(priv->iobase +
> TPM_STS(priv->locality) + 1);
> @@ -253,7 +253,7 @@ static int recv_data(struct tpm_chip *chip, u8 *buf, size_t count)
> while (size < count &&
> wait_for_tpm_stat(chip,
> TPM_STS_DATA_AVAIL | TPM_STS_VALID,
> - chip->vendor.timeout_c,
> + chip->timeout_c,
> &priv->read_queue, true)
> == 0) {
> burstcnt = get_burstcount(chip);
> @@ -296,7 +296,7 @@ static int tpm_tis_recv(struct tpm_chip *chip, u8 *buf, size_t count)
> goto out;
> }
>
> - wait_for_tpm_stat(chip, TPM_STS_VALID, chip->vendor.timeout_c,
> + wait_for_tpm_stat(chip, TPM_STS_VALID, chip->timeout_c,
> &priv->int_queue, false);
> status = tpm_tis_status(chip);
> if (status & TPM_STS_DATA_AVAIL) { /* retry? */
> @@ -333,7 +333,7 @@ static int tpm_tis_send_data(struct tpm_chip *chip, u8 *buf, size_t len)
> if ((status & TPM_STS_COMMAND_READY) == 0) {
> tpm_tis_ready(chip);
> if (wait_for_tpm_stat
> - (chip, TPM_STS_COMMAND_READY, chip->vendor.timeout_b,
> + (chip, TPM_STS_COMMAND_READY, chip->timeout_b,
> &priv->int_queue, false) < 0) {
> rc = -ETIME;
> goto out_err;
> @@ -348,7 +348,7 @@ static int tpm_tis_send_data(struct tpm_chip *chip, u8 *buf, size_t len)
> count++;
> }
>
> - wait_for_tpm_stat(chip, TPM_STS_VALID, chip->vendor.timeout_c,
> + wait_for_tpm_stat(chip, TPM_STS_VALID, chip->timeout_c,
> &priv->int_queue, false);
> status = tpm_tis_status(chip);
> if (!itpm && (status & TPM_STS_DATA_EXPECT) == 0) {
> @@ -360,7 +360,7 @@ static int tpm_tis_send_data(struct tpm_chip *chip, u8 *buf, size_t len)
> /* write last byte */
> iowrite8(buf[count],
> priv->iobase + TPM_DATA_FIFO(priv->locality));
> - wait_for_tpm_stat(chip, TPM_STS_VALID, chip->vendor.timeout_c,
> + wait_for_tpm_stat(chip, TPM_STS_VALID, chip->timeout_c,
> &priv->int_queue, false);
> status = tpm_tis_status(chip);
> if ((status & TPM_STS_DATA_EXPECT) != 0) {
> @@ -716,10 +716,10 @@ static int tpm_tis_init(struct device *dev, struct tpm_info *tpm_info,
> return PTR_ERR(priv->iobase);
>
> /* Maximum timeouts */
> - chip->vendor.timeout_a = TIS_TIMEOUT_A_MAX;
> - chip->vendor.timeout_b = TIS_TIMEOUT_B_MAX;
> - chip->vendor.timeout_c = TIS_TIMEOUT_C_MAX;
> - chip->vendor.timeout_d = TIS_TIMEOUT_D_MAX;
> + chip->timeout_a = TIS_TIMEOUT_A_MAX;
> + chip->timeout_b = TIS_TIMEOUT_B_MAX;
> + chip->timeout_c = TIS_TIMEOUT_C_MAX;
> + chip->timeout_d = TIS_TIMEOUT_D_MAX;
>
> if (wait_startup(chip, 0) != 0) {
> rc = -ENODEV;
> diff --git a/drivers/char/tpm/xen-tpmfront.c b/drivers/char/tpm/xen-tpmfront.c
> index cca89d9..1b28f96 100644
> --- a/drivers/char/tpm/xen-tpmfront.c
> +++ b/drivers/char/tpm/xen-tpmfront.c
> @@ -89,7 +89,7 @@ static int vtpm_send(struct tpm_chip *chip, u8 *buf, size_t count)
> return -EINVAL;
>
> /* Wait for completion of any existing command or cancellation */
> - if (wait_for_tpm_stat(chip, VTPM_STATUS_IDLE, chip->vendor.timeout_c,
> + if (wait_for_tpm_stat(chip, VTPM_STATUS_IDLE, chip->timeout_c,
> &priv->read_queue, true) < 0) {
> vtpm_cancel(chip);
> return -ETIME;
> @@ -126,7 +126,7 @@ static int vtpm_recv(struct tpm_chip *chip, u8 *buf, size_t count)
> return -ECANCELED;
>
> /* In theory the wait at the end of _send makes this one unnecessary */
> - if (wait_for_tpm_stat(chip, VTPM_STATUS_RESULT, chip->vendor.timeout_c,
> + if (wait_for_tpm_stat(chip, VTPM_STATUS_RESULT, chip->timeout_c,
> &priv->read_queue, true) < 0) {
> vtpm_cancel(chip);
> return -ETIME;
> --
> 2.5.0
>
/Jarkko
------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785471&iu=/4140
next prev parent reply other threads:[~2016-03-31 6:55 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-30 21:38 [PATCH v3 0/6] Remove the tpm_vendor_specific structure Christophe Ricard
[not found] ` <1459373895-17704-1-git-send-email-christophe-h.ricard-qxv4g6HH51o@public.gmane.org>
2016-03-30 21:38 ` [PATCH v3 1/6] tpm: drop 'iobase' from struct tpm_vendor_specific Christophe Ricard
[not found] ` <1459373895-17704-2-git-send-email-christophe-h.ricard-qxv4g6HH51o@public.gmane.org>
2016-03-31 6:45 ` Jarkko Sakkinen
[not found] ` <20160331064500.GB6393-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2016-03-31 8:29 ` Christophe Ricard
[not found] ` <CALD+uuxRKmGHoNcyOv7kSTVccFpmi6AzKxecHWPFcER=VR1zhA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-03-31 9:48 ` Jarkko Sakkinen
2016-03-30 21:38 ` [PATCH v3 2/6] tpm: drop 'irq' " Christophe Ricard
[not found] ` <1459373895-17704-3-git-send-email-christophe-h.ricard-qxv4g6HH51o@public.gmane.org>
2016-03-31 6:47 ` Jarkko Sakkinen
2016-03-30 21:38 ` [PATCH v3 3/6] tpm: drop 'read_queue' " Christophe Ricard
[not found] ` <1459373895-17704-4-git-send-email-christophe-h.ricard-qxv4g6HH51o@public.gmane.org>
2016-03-31 6:48 ` Jarkko Sakkinen
2016-03-30 21:38 ` [PATCH v3 4/6] tpm: drop 'locality' " Christophe Ricard
[not found] ` <1459373895-17704-5-git-send-email-christophe-h.ricard-qxv4g6HH51o@public.gmane.org>
2016-03-31 6:50 ` Jarkko Sakkinen
2016-03-30 21:38 ` [PATCH v3 5/6] tpm: Move tpm_vendor_specific data related with PTP specification to tpm_chip Christophe Ricard
[not found] ` <1459373895-17704-6-git-send-email-christophe-h.ricard-qxv4g6HH51o@public.gmane.org>
2016-03-31 6:55 ` Jarkko Sakkinen [this message]
2016-03-30 21:38 ` [PATCH v3 6/6] tpm: Remove useless priv field in struct tpm_vendor_specific Christophe Ricard
[not found] ` <1459373895-17704-7-git-send-email-christophe-h.ricard-qxv4g6HH51o@public.gmane.org>
2016-03-31 6:56 ` Jarkko Sakkinen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160331065520.GF6393@intel.com \
--to=jarkko.sakkinen-vuqaysv1563yd54fqh9/ca@public.gmane.org \
--cc=ashley-fm2HMyfA2y6tG0bUXCXiUA@public.gmane.org \
--cc=benoit.houyere-qxv4g6HH51o@public.gmane.org \
--cc=christophe-h.ricard-qxv4g6HH51o@public.gmane.org \
--cc=christophe.ricard-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=jean-luc.blanc-qxv4g6HH51o@public.gmane.org \
--cc=tpmdd-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.