From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jarkko Sakkinen 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 Message-ID: <20160331065520.GF6393@intel.com> References: <1459373895-17704-1-git-send-email-christophe-h.ricard@st.com> <1459373895-17704-6-git-send-email-christophe-h.ricard@st.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Content-Disposition: inline In-Reply-To: <1459373895-17704-6-git-send-email-christophe-h.ricard-qxv4g6HH51o@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: tpmdd-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org To: Christophe Ricard 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 List-Id: tpmdd-devel@lists.sourceforge.net 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 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