aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristophe Ricard <christophe.ricard@gmail.com>2014-12-01 13:32:52 -0500
committerPeter Huewe <peterhuewe@gmx.de>2015-01-17 08:00:07 -0500
commit76182b6b008b694d095aec1e2eb6c07fae787128 (patch)
tree80a238308c01cc8dff7a430058beb17fe9e0c4ad
parentb9626f32876debc356fadb6e19aebcfe9d70c5ff (diff)
tpm/tpm_i2c_stm_st33: Remove reference to io_serirq
The serirq gpio pin is used only as interrupt. After driver initialization, the serirq signal is always used through interrupt and never with gpio kernel API. The irq can then be initialized during the platform_data definition within the client->irq pin. Reviewed-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com> Signed-off-by: Christophe Ricard <christophe-h.ricard@st.com> Signed-off-by: Peter Huewe <peterhuewe@gmx.de>
-rw-r--r--drivers/char/tpm/tpm_i2c_stm_st33.c13
-rw-r--r--include/linux/platform_data/tpm_i2c_stm_st33.h1
2 files changed, 3 insertions, 11 deletions
diff --git a/drivers/char/tpm/tpm_i2c_stm_st33.c b/drivers/char/tpm/tpm_i2c_stm_st33.c
index 4f725386385f..728611638d1c 100644
--- a/drivers/char/tpm/tpm_i2c_stm_st33.c
+++ b/drivers/char/tpm/tpm_i2c_stm_st33.c
@@ -103,7 +103,6 @@ struct tpm_stm_dev {
103 struct completion irq_detection; 103 struct completion irq_detection;
104 struct tpm_chip *chip; 104 struct tpm_chip *chip;
105 u8 buf[TPM_BUFSIZE + 1]; 105 u8 buf[TPM_BUFSIZE + 1];
106 int io_serirq;
107 int io_lpcpd; 106 int io_lpcpd;
108}; 107};
109 108
@@ -688,18 +687,15 @@ tpm_st33_i2c_probe(struct i2c_client *client, const struct i2c_device_id *id)
688 err = -ENODEV; 687 err = -ENODEV;
689 goto _tpm_clean_answer; 688 goto _tpm_clean_answer;
690 } 689 }
691 err = gpio_request(platform_data->io_serirq, "TPM IO_SERIRQ");
692 if (err)
693 goto _gpio_init2;
694 690
695 clear_interruption(tpm_dev); 691 clear_interruption(tpm_dev);
696 err = request_irq(gpio_to_irq(platform_data->io_serirq), 692 err = request_irq(client->irq,
697 &tpm_ioserirq_handler, 693 &tpm_ioserirq_handler,
698 IRQF_TRIGGER_HIGH, 694 IRQF_TRIGGER_HIGH,
699 "TPM SERIRQ management", chip); 695 "TPM SERIRQ management", chip);
700 if (err < 0) { 696 if (err < 0) {
701 dev_err(chip->dev , "TPM SERIRQ signals %d not available\n", 697 dev_err(chip->dev , "TPM SERIRQ signals %d not available\n",
702 gpio_to_irq(platform_data->io_serirq)); 698 client->irq);
703 goto _irq_set; 699 goto _irq_set;
704 } 700 }
705 701
@@ -739,10 +735,7 @@ tpm_st33_i2c_probe(struct i2c_client *client, const struct i2c_device_id *id)
739 dev_info(chip->dev, "TPM I2C Initialized\n"); 735 dev_info(chip->dev, "TPM I2C Initialized\n");
740 return 0; 736 return 0;
741_irq_set: 737_irq_set:
742 free_irq(gpio_to_irq(platform_data->io_serirq), (void *)chip); 738 free_irq(client->irq, (void *)chip);
743_gpio_init2:
744 if (interrupts)
745 gpio_free(platform_data->io_serirq);
746_gpio_init1: 739_gpio_init1:
747 if (power_mgt) 740 if (power_mgt)
748 gpio_free(platform_data->io_lpcpd); 741 gpio_free(platform_data->io_lpcpd);
diff --git a/include/linux/platform_data/tpm_i2c_stm_st33.h b/include/linux/platform_data/tpm_i2c_stm_st33.h
index 88f9cb18113a..85775cf5f9a5 100644
--- a/include/linux/platform_data/tpm_i2c_stm_st33.h
+++ b/include/linux/platform_data/tpm_i2c_stm_st33.h
@@ -33,7 +33,6 @@
33#define TPM_ST33_I2C "st33zp24_i2c" 33#define TPM_ST33_I2C "st33zp24_i2c"
34 34
35struct st33zp24_platform_data { 35struct st33zp24_platform_data {
36 int io_serirq;
37 int io_lpcpd; 36 int io_lpcpd;
38}; 37};
39 38