All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christophe Ricard <christophe.ricard-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: jarkko.sakkinen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org,
	peterhuewe-Mmb7MZpHnFY@public.gmane.org
Cc: jean-luc.blanc-qxv4g6HH51o@public.gmane.org,
	ashley-fm2HMyfA2y6tG0bUXCXiUA@public.gmane.org,
	christophe.ricard-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
	tpmdd-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org,
	christophe-h.ricard-qxv4g6HH51o@public.gmane.org,
	benoit.houyere-qxv4g6HH51o@public.gmane.org
Subject: [PATCH 09/12] tpm/st33zp24: Add support for acpi probing for i2c device.
Date: Tue,  9 Feb 2016 10:26:58 +0100	[thread overview]
Message-ID: <1455010021-21927-10-git-send-email-christophe-h.ricard@st.com> (raw)
In-Reply-To: <1455010021-21927-1-git-send-email-christophe-h.ricard-qxv4g6HH51o@public.gmane.org>

Add support for acpi probing. SMO3324 is used for st33zp24.
It has been tested with the following acpi node on Minnowboard:

Device (TPM1)
{
	Name (_ADR, Zero)  // _ADR: Address
	Name (_HID, "SMO3324")  // _HID: Hardware ID
	Name (_CID, "SMO3324")  // _CID: Compatible ID
	Name (_DDN, "SMO TPM")  // _DDN: DOS Device Name
	Name (_UID, One)  // _UID: Unique ID
	Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
	{
		Name (SBUF, ResourceTemplate ()
		{
			I2cSerialBus (0x0013, ControllerInitiated, 400000,
				      AddressingMode7Bit, "\\_SB.I2C7",
				      0x00, ResourceConsumer, ,)
			GpioInt (Edge, ActiveHigh, ExclusiveAndWake, PullNone, 0x0000,
				 "\\_SB.GPO2", 0x00, ResourceConsumer, ,)
			{   	// Pin list
				0x0001
			}
			GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
				"\\_SB.GPO2", 0x00, ResourceConsumer, ,)
			{	// Pin list
				0x0002,
			}
		})
		Return (SBUF) /* \_SB_.I2C7.TPM1._CRS.SBUF */
	}

	Method (_STA, 0, NotSerialized)  // _STA: Status
	{
		Return (0x0F)
	}
}

Signed-off-by: Christophe Ricard <christophe-h.ricard-qxv4g6HH51o@public.gmane.org>
---
 drivers/char/tpm/st33zp24/i2c.c | 50 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)

diff --git a/drivers/char/tpm/st33zp24/i2c.c b/drivers/char/tpm/st33zp24/i2c.c
index a49b6f1..b20cc2b 100644
--- a/drivers/char/tpm/st33zp24/i2c.c
+++ b/drivers/char/tpm/st33zp24/i2c.c
@@ -19,8 +19,10 @@
 #include <linux/module.h>
 #include <linux/i2c.h>
 #include <linux/gpio.h>
+#include <linux/gpio/consumer.h>
 #include <linux/of_irq.h>
 #include <linux/of_gpio.h>
+#include <linux/acpi.h>
 #include <linux/tpm.h>
 #include <linux/platform_data/st33zp24.h>
 
@@ -108,6 +110,43 @@ static const struct st33zp24_phy_ops i2c_phy_ops = {
 	.recv = st33zp24_i2c_recv,
 };
 
+static int st33zp24_i2c_acpi_request_resources(struct st33zp24_i2c_phy *phy)
+{
+	struct i2c_client *client = phy->client;
+	const struct acpi_device_id *id;
+	struct gpio_desc *gpiod_lpcpd;
+	struct device *dev;
+
+	if (!client)
+		return -EINVAL;
+
+	dev = &client->dev;
+
+	/* Match the struct device against a given list of ACPI IDs */
+	id = acpi_match_device(dev->driver->acpi_match_table, dev);
+	if (!id)
+		return -ENODEV;
+
+	/* Get LPCPD GPIO from ACPI */
+	gpiod_lpcpd = devm_gpiod_get_index(dev, "TPM IO LPCPD", 1,
+					   GPIOD_OUT_HIGH);
+	if (IS_ERR(gpiod_lpcpd)) {
+		dev_err(&client->dev,
+			"Failed to retrieve lpcpd-gpios from acpi.\n");
+		phy->io_lpcpd = -1;
+		/*
+		 * lpcpd pin is not specified. This is not an issue as
+		 * power management can be also managed by TPM specific
+		 * commands. So leave with a success status code.
+		 */
+		return 0;
+	}
+
+	phy->io_lpcpd = desc_to_gpio(gpiod_lpcpd);
+
+	return 0;
+}
+
 static int st33zp24_i2c_of_request_resources(struct st33zp24_i2c_phy *phy)
 {
 	struct device_node *pp;
@@ -214,6 +253,10 @@ static int st33zp24_i2c_probe(struct i2c_client *client,
 		ret = st33zp24_i2c_request_resources(client, phy);
 		if (ret)
 			return ret;
+	} else if (ACPI_HANDLE(&client->dev)) {
+		ret = st33zp24_i2c_acpi_request_resources(phy);
+		if (ret)
+			return ret;
 	}
 
 	return st33zp24_probe(phy, &i2c_phy_ops, &client->dev, client->irq,
@@ -244,6 +287,12 @@ static const struct of_device_id of_st33zp24_i2c_match[] = {
 };
 MODULE_DEVICE_TABLE(of, of_st33zp24_i2c_match);
 
+static const struct acpi_device_id st33zp24_i2c_acpi_match[] = {
+	{"SMO3324"},
+	{}
+};
+MODULE_DEVICE_TABLE(acpi, st33zp24_i2c_acpi_match);
+
 static SIMPLE_DEV_PM_OPS(st33zp24_i2c_ops, st33zp24_pm_suspend,
 			 st33zp24_pm_resume);
 
@@ -252,6 +301,7 @@ static struct i2c_driver st33zp24_i2c_driver = {
 		.name = TPM_ST33_I2C,
 		.pm = &st33zp24_i2c_ops,
 		.of_match_table = of_match_ptr(of_st33zp24_i2c_match),
+		.acpi_match_table = ACPI_PTR(st33zp24_i2c_acpi_match),
 	},
 	.probe = st33zp24_i2c_probe,
 	.remove = st33zp24_i2c_remove,
-- 
2.5.0


------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140

  parent reply	other threads:[~2016-02-09  9:26 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-09  9:26 [PATCH 00/12] tpm/st33zp24: Few code style and sanity fixes + acpi device probing support Christophe Ricard
     [not found] ` <1455010021-21927-1-git-send-email-christophe-h.ricard-qxv4g6HH51o@public.gmane.org>
2016-02-09  9:26   ` [PATCH 01/12] tpm/st33zp24/spi: Remove nbr_dummy_bytes variable usage Christophe Ricard
     [not found]     ` <1455010021-21927-2-git-send-email-christophe-h.ricard-qxv4g6HH51o@public.gmane.org>
2016-02-11 13:48       ` Jarkko Sakkinen
2016-02-09  9:26   ` [PATCH 02/12] tpm/st33zp24/spi: Use functions name with st33zp24_spi_ prefix Christophe Ricard
     [not found]     ` <1455010021-21927-3-git-send-email-christophe-h.ricard-qxv4g6HH51o@public.gmane.org>
2016-02-11 13:50       ` Jarkko Sakkinen
2016-02-09  9:26   ` [PATCH 03/12] tpm/st33zp24/spi: Remove useless use of memcpy Christophe Ricard
     [not found]     ` <1455010021-21927-4-git-send-email-christophe-h.ricard-qxv4g6HH51o@public.gmane.org>
2016-02-11 13:54       ` Jarkko Sakkinen
2016-02-09  9:26   ` [PATCH 04/12] tpm/st33zp24/spi: Remove field spi_xfer from st33zp24_spi_phy structure Christophe Ricard
     [not found]     ` <1455010021-21927-5-git-send-email-christophe-h.ricard-qxv4g6HH51o@public.gmane.org>
2016-02-11 14:06       ` Jarkko Sakkinen
2016-02-09  9:26   ` [PATCH 05/12] tpm/st33zp24: Remove unneeded CONFIG_OF switches Christophe Ricard
     [not found]     ` <1455010021-21927-6-git-send-email-christophe-h.ricard-qxv4g6HH51o@public.gmane.org>
2016-02-11 14:10       ` Jarkko Sakkinen
2016-02-09  9:26   ` [PATCH 06/12] tpm/st33zp24: Auto-select core module Christophe Ricard
     [not found]     ` <1455010021-21927-7-git-send-email-christophe-h.ricard-qxv4g6HH51o@public.gmane.org>
2016-02-11 14:18       ` Jarkko Sakkinen
2016-02-09  9:26   ` [PATCH 07/12] tpm/st33zp24/spi: Improve st33zp24_spi_evaluate_latency Christophe Ricard
     [not found]     ` <1455010021-21927-8-git-send-email-christophe-h.ricard-qxv4g6HH51o@public.gmane.org>
2016-02-11 14:22       ` Jarkko Sakkinen
2016-02-09  9:26   ` [PATCH 08/12] tpm/st33zp24: Extend Copyright headers Christophe Ricard
     [not found]     ` <1455010021-21927-9-git-send-email-christophe-h.ricard-qxv4g6HH51o@public.gmane.org>
2016-02-11 14:22       ` Jarkko Sakkinen
2016-02-09  9:26   ` Christophe Ricard [this message]
     [not found]     ` <1455010021-21927-10-git-send-email-christophe-h.ricard-qxv4g6HH51o@public.gmane.org>
2016-02-11 14:28       ` [PATCH 09/12] tpm/st33zp24: Add support for acpi probing for i2c device Jarkko Sakkinen
2016-02-09  9:26   ` [PATCH 10/12] tpm: st33zp24: Add support for acpi probing for spi device Christophe Ricard
     [not found]     ` <1455010021-21927-11-git-send-email-christophe-h.ricard-qxv4g6HH51o@public.gmane.org>
2016-02-11 14:29       ` Jarkko Sakkinen
2016-02-09  9:27   ` [PATCH 11/12] tpm/st33zp24/i2c: Change xxx_request_resources header Christophe Ricard
     [not found]     ` <1455010021-21927-12-git-send-email-christophe-h.ricard-qxv4g6HH51o@public.gmane.org>
2016-02-11 14:36       ` Jarkko Sakkinen
2016-02-09  9:27   ` [PATCH 12/12] tpm/st33zp24/spi: " Christophe Ricard
     [not found]     ` <1455010021-21927-13-git-send-email-christophe-h.ricard-qxv4g6HH51o@public.gmane.org>
2016-02-11 14:44       ` Jarkko Sakkinen
2016-02-14  9:11   ` [PATCH 00/12] tpm/st33zp24: Few code style and sanity fixes + acpi device probing support Jarkko Sakkinen
     [not found]     ` <20160214091106.GA18761-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2016-02-14  9:41       ` Christophe Ricard
2016-02-18  7:12       ` Christophe Ricard
     [not found]         ` <56C56EED.1070801-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-02-18 14:46           ` Jarkko Sakkinen
     [not found]             ` <20160218144651.GA8472-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2016-02-18 21:03               ` Christophe Ricard
     [not found]                 ` <56C631A7.5040604-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-02-19 15:03                   ` 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=1455010021-21927-10-git-send-email-christophe-h.ricard@st.com \
    --to=christophe.ricard-re5jqeeqqe8avxtiumwx3w@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=jarkko.sakkinen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org \
    --cc=jean-luc.blanc-qxv4g6HH51o@public.gmane.org \
    --cc=peterhuewe-Mmb7MZpHnFY@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.