linux-gpio.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Tony Luck <tony.luck@intel.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Wolfram Sang <wsa@kernel.org>, Jean Delvare <jdelvare@suse.de>,
	Heiner Kallweit <hkallweit1@gmail.com>,
	Henning Schild <henning.schild@siemens.com>,
	Lee Jones <lee.jones@linaro.org>,
	Mika Westerberg <mika.westerberg@linux.intel.com>,
	Hans de Goede <hdegoede@redhat.com>,
	Linus Walleij <linus.walleij@linaro.org>,
	Jonathan Yong <jonathan.yong@intel.com>,
	Guenter Roeck <linux@roeck-us.net>,
	Wim Van Sebroeck <wim@linux-watchdog.org>,
	linux-kernel@vger.kernel.org, linux-edac@vger.kernel.org,
	linux-i2c@vger.kernel.org, linux-leds@vger.kernel.org,
	linux-gpio@vger.kernel.org, platform-driver-x86@vger.kernel.org,
	linux-watchdog@vger.kernel.org
Cc: Borislav Petkov <bp@alien8.de>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	James Morse <james.morse@arm.com>,
	Robert Richter <rric@kernel.org>,
	Jean Delvare <jdelvare@suse.com>, Pavel Machek <pavel@ucw.cz>,
	Peter Tyser <ptyser@xes-inc.com>,
	Andy Shevchenko <andy@kernel.org>,
	Mark Gross <markgross@kernel.org>
Subject: [PATCH v6 04/12] mfd: lpc_ich: Switch to generic p2sb_bar()
Date: Mon,  6 Jun 2022 19:41:30 +0300	[thread overview]
Message-ID: <20220606164138.66535-5-andriy.shevchenko@linux.intel.com> (raw)
In-Reply-To: <20220606164138.66535-1-andriy.shevchenko@linux.intel.com>

Instead of open coding p2sb_bar() functionality we are going to
use generic library. There is one more user en route.

This is more than just a clean-up. It also fixes a potential issue
seen when SPI BAR is 64-bit. The current code works if and only if
the PCI BAR of the hidden device is inside 4G address space. In case
when firmware decides to go above 4G, we will get a wrong address.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Tested-by: Henning Schild <henning.schild@siemens.com>
Acked-by: Hans de Goede <hdegoede@redhat.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Acked-for-MFD-by: Lee Jones <lee.jones@linaro.org>
---
 drivers/mfd/Kconfig   |  1 +
 drivers/mfd/lpc_ich.c | 27 ++++++++-------------------
 2 files changed, 9 insertions(+), 19 deletions(-)

diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
index 3b59456f5545..9566341de470 100644
--- a/drivers/mfd/Kconfig
+++ b/drivers/mfd/Kconfig
@@ -572,6 +572,7 @@ config LPC_ICH
 	tristate "Intel ICH LPC"
 	depends on PCI
 	select MFD_CORE
+	select P2SB if X86
 	help
 	  The LPC bridge function of the Intel ICH provides support for
 	  many functional units. This driver provides needed support for
diff --git a/drivers/mfd/lpc_ich.c b/drivers/mfd/lpc_ich.c
index d9175cb8a2d5..e360651c5406 100644
--- a/drivers/mfd/lpc_ich.c
+++ b/drivers/mfd/lpc_ich.c
@@ -45,6 +45,7 @@
 #include <linux/mfd/core.h>
 #include <linux/mfd/lpc_ich.h>
 #include <linux/platform_data/itco_wdt.h>
+#include <linux/platform_data/x86/p2sb.h>
 
 #define ACPIBASE		0x40
 #define ACPIBASE_GPE_OFF	0x28
@@ -71,8 +72,6 @@
 #define BCR			0xdc
 #define BCR_WPD			BIT(0)
 
-#define SPIBASE_APL_SZ		4096
-
 #define GPIOBASE_ICH0		0x58
 #define GPIOCTRL_ICH0		0x5C
 #define GPIOBASE_ICH6		0x48
@@ -1134,6 +1133,7 @@ static int lpc_ich_init_spi(struct pci_dev *dev)
 	struct resource *res = &intel_spi_res[0];
 	struct intel_spi_boardinfo *info;
 	u32 spi_base, rcba;
+	int ret;
 
 	info = devm_kzalloc(&dev->dev, sizeof(*info), GFP_KERNEL);
 	if (!info)
@@ -1164,30 +1164,19 @@ static int lpc_ich_init_spi(struct pci_dev *dev)
 		}
 		break;
 
-	case INTEL_SPI_BXT: {
-		unsigned int p2sb = PCI_DEVFN(13, 0);
-		unsigned int spi = PCI_DEVFN(13, 2);
-		struct pci_bus *bus = dev->bus;
-
+	case INTEL_SPI_BXT:
 		/*
 		 * The P2SB is hidden by BIOS and we need to unhide it in
 		 * order to read BAR of the SPI flash device. Once that is
 		 * done we hide it again.
 		 */
-		pci_bus_write_config_byte(bus, p2sb, 0xe1, 0x0);
-		pci_bus_read_config_dword(bus, spi, PCI_BASE_ADDRESS_0,
-					  &spi_base);
-		if (spi_base != ~0) {
-			res->start = spi_base & 0xfffffff0;
-			res->end = res->start + SPIBASE_APL_SZ - 1;
-
-			info->set_writeable = lpc_ich_bxt_set_writeable;
-			info->data = dev;
-		}
+		ret = p2sb_bar(dev->bus, PCI_DEVFN(13, 2), res);
+		if (ret)
+			return ret;
 
-		pci_bus_write_config_byte(bus, p2sb, 0xe1, 0x1);
+		info->set_writeable = lpc_ich_bxt_set_writeable;
+		info->data = dev;
 		break;
-	}
 
 	default:
 		return -EINVAL;
-- 
2.35.1


  parent reply	other threads:[~2022-06-06 16:46 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-06 16:41 [PATCH v6 00/12] platform/x86: introduce p2sb_bar() helper Andy Shevchenko
2022-06-06 16:41 ` [PATCH v6 01/12] platform/x86/intel: Add Primary to Sideband (P2SB) bridge support Andy Shevchenko
2022-06-06 16:41 ` [PATCH v6 02/12] pinctrl: intel: Check against matching data instead of ACPI companion Andy Shevchenko
2022-06-06 16:41 ` [PATCH v6 03/12] mfd: lpc_ich: Factor out lpc_ich_enable_spi_write() Andy Shevchenko
2022-06-06 16:41 ` Andy Shevchenko [this message]
2022-06-06 16:41 ` [PATCH v6 05/12] mfd: lpc_ich: Add support for pinctrl in non-ACPI system Andy Shevchenko
2022-06-06 16:41 ` [PATCH v6 06/12] i2c: i801: convert to use common P2SB accessor Andy Shevchenko
2022-06-06 16:41 ` [PATCH v6 07/12] EDAC, pnd2: Use proper I/O accessors and address space annotation Andy Shevchenko
2022-06-06 16:41 ` [PATCH v6 08/12] EDAC, pnd2: convert to use common P2SB accessor Andy Shevchenko
2022-06-06 16:41 ` [PATCH v6 09/12] watchdog: simatic-ipc-wdt: convert to use " Andy Shevchenko
2022-06-06 16:41 ` [PATCH v6 10/12] leds: simatic-ipc-leds: " Andy Shevchenko
2022-06-06 16:41 ` [PATCH v6 11/12] platform/x86: simatic-ipc: drop custom P2SB bar code Andy Shevchenko
2022-06-07 17:15   ` Hans de Goede
2022-06-06 16:41 ` [PATCH v6 12/12] leds: simatic-ipc-leds-gpio: add GPIO version of Siemens driver Andy Shevchenko
2022-08-01 14:09   ` Henning Schild
2022-08-02 10:54     ` Henning Schild
2022-06-07 17:16 ` [PATCH v6 00/12] platform/x86: introduce p2sb_bar() helper Hans de Goede
2022-06-08  7:42 ` Lee Jones
2022-06-08 10:50   ` Andy Shevchenko
2022-06-21 11:58     ` Andy Shevchenko
2022-06-29 16:39       ` Andy Shevchenko
2022-06-29 17:14         ` Henning Schild
2022-07-13 16:40           ` Andy Shevchenko
2022-07-13 16:51             ` Rafael J. Wysocki
2022-07-13 18:48             ` Henning Schild
2022-07-14  9:37               ` Lee Jones
2022-07-14 10:23                 ` Andy Shevchenko
2022-07-14 10:34                   ` Lee Jones
2022-07-14 11:03                     ` Henning Schild
2022-07-14 11:26   ` Pavel Machek
2022-07-14 12:10     ` Lee Jones
2022-07-17 10:27       ` Pavel Machek
2022-07-18 11:17 ` Andy Shevchenko
2022-08-10  7:38   ` Henning Schild

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=20220606164138.66535-5-andriy.shevchenko@linux.intel.com \
    --to=andriy.shevchenko@linux.intel.com \
    --cc=andy@kernel.org \
    --cc=bp@alien8.de \
    --cc=hdegoede@redhat.com \
    --cc=henning.schild@siemens.com \
    --cc=hkallweit1@gmail.com \
    --cc=james.morse@arm.com \
    --cc=jdelvare@suse.com \
    --cc=jdelvare@suse.de \
    --cc=jonathan.yong@intel.com \
    --cc=lee.jones@linaro.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-edac@vger.kernel.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-leds@vger.kernel.org \
    --cc=linux-watchdog@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=markgross@kernel.org \
    --cc=mchehab@kernel.org \
    --cc=mika.westerberg@linux.intel.com \
    --cc=pavel@ucw.cz \
    --cc=platform-driver-x86@vger.kernel.org \
    --cc=ptyser@xes-inc.com \
    --cc=rric@kernel.org \
    --cc=tony.luck@intel.com \
    --cc=wim@linux-watchdog.org \
    --cc=wsa@kernel.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).