All of lore.kernel.org
 help / color / mirror / Atom feed
From: Octavian Purdila <octavian.purdila@intel.com>
To: "Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Len Brown <lenb@kernel.org>,
	Matt Fleming <matt@codeblueprint.co.uk>,
	Mark Brown <broonie@kernel.org>, Wolfram Sang <wsa@the-dreams.de>
Cc: Joel Becker <jlbec@evilplan.org>, Christoph Hellwig <hch@lst.de>,
	linux-acpi@vger.kernel.org, linux-efi@vger.kernel.org,
	linux-i2c@vger.kernel.org, linux-spi@vger.kernel.org,
	linux-kernel@vger.kernel.org, irina.tirdea@intel.com,
	Octavian Purdila <octavian.purdila@intel.com>
Subject: [RFC PATCH 06/10] spi: add support for ACPI reconfigure notifications
Date: Thu, 31 Mar 2016 12:37:02 +0300	[thread overview]
Message-ID: <1459417026-6697-7-git-send-email-octavian.purdila@intel.com> (raw)
In-Reply-To: <1459417026-6697-1-git-send-email-octavian.purdila@intel.com>

This allows the SPI core to enumerate devices from ACPI tables that
are dynamically loaded after the SPI master device has been probed.

Signed-off-by: Octavian Purdila <octavian.purdila@intel.com>
---
 drivers/spi/spi.c | 36 +++++++++++++++++++++++++++++++++++-
 1 file changed, 35 insertions(+), 1 deletion(-)

diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
index 47eff80..8751f02 100644
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
@@ -1619,7 +1619,8 @@ static acpi_status acpi_spi_add_device(acpi_handle handle, u32 level,
 
 	if (acpi_bus_get_device(handle, &adev))
 		return AE_OK;
-	if (acpi_bus_get_status(adev) || !adev->status.present)
+	if (acpi_bus_get_status(adev) || !adev->status.present ||
+	    acpi_device_enumerated(adev))
 		return AE_OK;
 
 	spi = spi_alloc_device(master);
@@ -1645,6 +1646,8 @@ static acpi_status acpi_spi_add_device(acpi_handle handle, u32 level,
 	if (spi->irq < 0)
 		spi->irq = acpi_dev_gpio_irq_get(adev, 0);
 
+	adev->flags.visited = true;
+
 	adev->power.flags.ignore_parent = true;
 	strlcpy(spi->modalias, acpi_device_hid(adev), sizeof(spi->modalias));
 	if (spi_add_device(spi)) {
@@ -2698,6 +2701,35 @@ static struct notifier_block spi_of_notifier = {
 extern struct notifier_block spi_of_notifier;
 #endif /* IS_ENABLED(CONFIG_OF_DYNAMIC) */
 
+#if IS_ENABLED(CONFIG_ACPI)
+static int acpi_spi_table_load(struct device *dev, const void *data)
+{
+	struct spi_master *master = container_of(dev, struct spi_master, dev);
+
+	acpi_register_spi_devices(master);
+	return 0;
+}
+
+static int acpi_spi_notify(struct notifier_block *nb, unsigned long value,
+			   void *arg)
+{
+	switch (value) {
+	case ACPI_RECONFIG_TABLE_LOAD:
+		class_find_device(&spi_master_class, NULL, NULL,
+				  acpi_spi_table_load);
+		break;
+	}
+
+	return NOTIFY_OK;
+}
+
+static struct notifier_block spi_acpi_notifier = {
+	.notifier_call = acpi_spi_notify,
+};
+#else
+extern struct notifier_block spi_acpi_notifier;
+#endif
+
 static int __init spi_init(void)
 {
 	int	status;
@@ -2718,6 +2750,8 @@ static int __init spi_init(void)
 
 	if (IS_ENABLED(CONFIG_OF_DYNAMIC))
 		WARN_ON(of_reconfig_notifier_register(&spi_of_notifier));
+	if (IS_ENABLED(CONFIG_ACPI))
+		WARN_ON(acpi_reconfig_notifier_register(&spi_acpi_notifier));
 
 	return 0;
 
-- 
1.9.1

  parent reply	other threads:[~2016-03-31  9:37 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-31  9:36 [RFC PATCH 00/10] ACPI overlays Octavian Purdila
2016-03-31  9:36 ` [RFC PATCH 01/10] kernel: add TAINT_OVERLAY_ACPI_TABLE Octavian Purdila
2016-03-31  9:36 ` [RFC PATCH 02/10] acpi: install SSDT tables from initrd Octavian Purdila
2016-04-01  5:05   ` Zheng, Lv
2016-04-01  5:05     ` Zheng, Lv
2016-04-01 10:11     ` Octavian Purdila
     [not found]       ` <CAE1zotJ1fa4m-_FO3PUQK8_p0vHcfWD5TmuMdxOSHDjku421pA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-04-04 13:07         ` Octavian Purdila
2016-04-04 13:07           ` Octavian Purdila
2016-04-05  0:49           ` Zheng, Lv
2016-04-05  7:23             ` Octavian Purdila
2016-04-06  6:15               ` Zheng, Lv
2016-04-05  0:57         ` Zheng, Lv
2016-04-05  0:57           ` Zheng, Lv
2016-03-31  9:36 ` [RFC PATCH 03/10] acpi: add support for ACPI reconfiguration notifiers Octavian Purdila
2016-03-31  9:37 ` [RFC PATCH 04/10] acpi: fix enumeration (visited) flags for bus rescans Octavian Purdila
2016-03-31  9:37 ` [RFC PATCH 05/10] i2c: add support for ACPI reconfigure notifications Octavian Purdila
2016-03-31  9:37 ` Octavian Purdila [this message]
     [not found]   ` <1459417026-6697-7-git-send-email-octavian.purdila-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2016-03-31 17:29     ` [RFC PATCH 06/10] spi: " Mark Brown
2016-03-31 17:29       ` Mark Brown
2016-04-01 10:54       ` Octavian Purdila
2016-04-01 14:08         ` Mark Brown
2016-04-01 19:26           ` Rafael J. Wysocki
2016-04-02 16:24             ` Mark Brown
2016-04-04 10:25               ` Octavian Purdila
2016-04-04 16:03                 ` Mark Brown
2016-04-04 19:34                   ` Octavian Purdila
     [not found]                     ` <CAE1zot+ESGBEYeUbLTreKfkc-6B45uQq3PWhhRfBo1AWd-7Vxw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-04-04 21:18                       ` Rafael J. Wysocki
2016-04-04 21:18                         ` Rafael J. Wysocki
     [not found]                         ` <CAJZ5v0gV8N6zgVrwtRFaY98Wv1HsoKs+4=U-s_V29FSpCdFW3g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-04-05 11:49                           ` Octavian Purdila
2016-04-05 11:49                             ` Octavian Purdila
2016-04-05 18:32                             ` Mark Brown
     [not found]                               ` <20160405183255.GH1924-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2016-04-05 19:16                                 ` Octavian Purdila
2016-04-05 19:16                                   ` Octavian Purdila
     [not found]                                   ` <CAE1zotL7X+di4rHecRW_G-45wUPbbNb9jvn3C_zjD4XttZ4v3w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-04-05 21:20                                     ` Mark Brown
2016-04-05 21:20                                       ` Mark Brown
2016-04-05 18:24                       ` Mark Brown
2016-04-05 18:24                         ` Mark Brown
     [not found] ` <1459417026-6697-1-git-send-email-octavian.purdila-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2016-03-31  9:37   ` [RFC PATCH 07/10] efi: load SSTDs from EFI variables Octavian Purdila
2016-03-31  9:37     ` Octavian Purdila
2016-03-31  9:37 ` [RFC PATCH 08/10] configfs: fix CONFIGFS_BIN_ATTR_[RW]O definitions Octavian Purdila
2016-03-31  9:37 ` [RFC PATCH 09/10] acpi: add support for configfs Octavian Purdila
2016-03-31  9:37 ` [RFC PATCH 10/10] acpi: add support for loading SSDTs via configfs Octavian Purdila
     [not found]   ` <1459417026-6697-11-git-send-email-octavian.purdila-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2016-04-01  4:55     ` Zheng, Lv
2016-04-01  4:55       ` Zheng, Lv
2016-04-01  4:55       ` Zheng, Lv
     [not found]       ` <1AE640813FDE7649BE1B193DEA596E883BB66233-0J0gbvR4kThpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2016-04-01 10:01         ` Octavian Purdila
2016-04-01 10:01           ` Octavian Purdila
2016-04-05  3:11           ` Zheng, Lv
     [not found]             ` <1AE640813FDE7649BE1B193DEA596E883BB6677B-0J0gbvR4kThpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2016-04-05  8:21               ` Octavian Purdila
2016-04-05  8:21                 ` Octavian Purdila
2016-04-06  6:05                 ` Zheng, Lv
     [not found]                   ` <1AE640813FDE7649BE1B193DEA596E883BB66B8C-0J0gbvR4kThpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2016-04-06 18:46                     ` Octavian Purdila
2016-04-06 18:46                       ` Octavian Purdila
     [not found]                       ` <CAE1zotKa+t5cxznWfPyQ599k9ZB=akOuEDZusWcJgzux8wqp5A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-04-07  2:42                         ` Zheng, Lv
2016-04-07  2:42                           ` Zheng, Lv

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=1459417026-6697-7-git-send-email-octavian.purdila@intel.com \
    --to=octavian.purdila@intel.com \
    --cc=broonie@kernel.org \
    --cc=hch@lst.de \
    --cc=irina.tirdea@intel.com \
    --cc=jlbec@evilplan.org \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-efi@vger.kernel.org \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-spi@vger.kernel.org \
    --cc=matt@codeblueprint.co.uk \
    --cc=rjw@rjwysocki.net \
    --cc=wsa@the-dreams.de \
    /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.