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 10/12] tpm: st33zp24: Add support for acpi probing for spi device.
Date: Thu, 11 Feb 2016 16:29:50 +0200 [thread overview]
Message-ID: <20160211142950.GG4231@intel.com> (raw)
In-Reply-To: <1455010021-21927-11-git-send-email-christophe-h.ricard-qxv4g6HH51o@public.gmane.org>
On Tue, Feb 09, 2016 at 10:26:59AM +0100, Christophe Ricard wrote:
> 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 ()
> {
> SpiSerialBus (0, PolarityLow, FourWireMode, 8,
> ControllerInitiated, 10000000, ClockPolarityLow,
> ClockPhaseFirst, "\\_SB.SPI1",
> 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_.SPI1.TPM1._CRS.SBUF */
> }
> Method (_STA, 0, NotSerialized) // _STA: Status
> {
> Return (0x0F)
> }
> }
>
> Signed-off-by: Christophe Ricard <christophe-h.ricard-qxv4g6HH51o@public.gmane.org>
Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
/Jarkko
> ---
> drivers/char/tpm/st33zp24/spi.c | 50 +++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 50 insertions(+)
>
> diff --git a/drivers/char/tpm/st33zp24/spi.c b/drivers/char/tpm/st33zp24/spi.c
> index 34cdee1..b9b74ae 100644
> --- a/drivers/char/tpm/st33zp24/spi.c
> +++ b/drivers/char/tpm/st33zp24/spi.c
> @@ -19,8 +19,10 @@
> #include <linux/module.h>
> #include <linux/spi/spi.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>
>
> @@ -226,6 +228,43 @@ static const struct st33zp24_phy_ops spi_phy_ops = {
> .recv = st33zp24_spi_recv,
> };
>
> +static int st33zp24_spi_acpi_request_resources(struct st33zp24_i2c_phy *phy)
> +{
> + struct spi_device *spi_dev = phy->spi_device;
> + const struct acpi_device_id *id;
> + struct gpio_desc *gpiod_lpcpd;
> + struct device *dev;
> +
> + if (!spi_dev)
> + return -EINVAL;
> +
> + dev = &spi_dev->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_spi_of_request_resources(struct st33zp24_spi_phy *phy)
> {
> struct device_node *pp;
> @@ -327,6 +366,10 @@ static int st33zp24_spi_probe(struct spi_device *dev)
> ret = st33zp24_spi_request_resources(dev, phy);
> if (ret)
> return ret;
> + } else if (ACPI_HANDLE(&dev->dev)) {
> + ret = st33zp24_spi_acpi_request_resources(phy);
> + if (ret)
> + return ret;
> }
>
> phy->latency = st33zp24_spi_evaluate_latency(phy);
> @@ -361,6 +404,12 @@ static const struct of_device_id of_st33zp24_spi_match[] = {
> };
> MODULE_DEVICE_TABLE(of, of_st33zp24_spi_match);
>
> +static const struct acpi_device_id st33zp24_spi_acpi_match[] = {
> + {"SMO3324"},
> + {}
> +};
> +MODULE_DEVICE_TABLE(acpi, st33zp24_spi_acpi_match);
> +
> static SIMPLE_DEV_PM_OPS(st33zp24_spi_ops, st33zp24_pm_suspend,
> st33zp24_pm_resume);
>
> @@ -369,6 +418,7 @@ static struct spi_driver st33zp24_spi_driver = {
> .name = TPM_ST33_SPI,
> .pm = &st33zp24_spi_ops,
> .of_match_table = of_match_ptr(of_st33zp24_spi_match),
> + .acpi_match_table = ACPI_PTR(st33zp24_spi_acpi_match),
> },
> .probe = st33zp24_spi_probe,
> .remove = st33zp24_spi_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
next prev parent reply other threads:[~2016-02-11 14:29 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 ` [PATCH 09/12] tpm/st33zp24: Add support for acpi probing for i2c device Christophe Ricard
[not found] ` <1455010021-21927-10-git-send-email-christophe-h.ricard-qxv4g6HH51o@public.gmane.org>
2016-02-11 14:28 ` 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 [this message]
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=20160211142950.GG4231@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).