From: Hans de Goede <hdegoede@redhat.com>
To: Jarkko Nikula <jarkko.nikula@linux.intel.com>,
Len Brown <lenb@kernel.org>
Cc: "Jani Nikula" <jani.nikula@linux.intel.com>,
"Ville Syrjälä" <ville.syrjala@linux.intel.com>,
"russianneuromancer @ ya . ru" <russianneuromancer@ya.ru>,
linux-i2c@vger.kernel.org,
intel-gfx <intel-gfx@lists.freedesktop.org>,
"Hans de Goede" <hdegoede@redhat.com>
Subject: [RFC 1/4] x86/platform/intel/iosf_mbi: Add a mutex for punit access
Date: Sun, 1 Jan 2017 21:14:00 +0100 [thread overview]
Message-ID: <20170101201403.12132-2-hdegoede@redhat.com> (raw)
In-Reply-To: <20170101201403.12132-1-hdegoede@redhat.com>
The punit on baytrail / cherrytrail systems is not only accessed through
the iosf_mbi functions, but also by the i915 code. Add a mutex to protect
the punit against simultaneous accesses and 2 functions to lock / unlock
this mutex.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
arch/x86/include/asm/iosf_mbi.h | 19 +++++++++++++++++++
arch/x86/platform/intel/iosf_mbi.c | 13 +++++++++++++
2 files changed, 32 insertions(+)
diff --git a/arch/x86/include/asm/iosf_mbi.h b/arch/x86/include/asm/iosf_mbi.h
index b41ee16..02963bd 100644
--- a/arch/x86/include/asm/iosf_mbi.h
+++ b/arch/x86/include/asm/iosf_mbi.h
@@ -88,6 +88,21 @@ int iosf_mbi_write(u8 port, u8 opcode, u32 offset, u32 mdr);
*/
int iosf_mbi_modify(u8 port, u8 opcode, u32 offset, u32 mdr, u32 mask);
+/**
+ * iosf_mbi_punit_lock() - Lock the punit mutex
+ *
+ * This function must be called before accessing the punit or the pmic, be it
+ * through iosf_mbi_* or through other means.
+ *
+ * This function locks a mutex, as such it may sleep.
+ */
+void iosf_mbi_punit_lock(void);
+
+/**
+ * iosf_mbi_punit_unlock() - Unlock the punit mutex
+ */
+void iosf_mbi_punit_unlock(void);
+
#else /* CONFIG_IOSF_MBI is not enabled */
static inline
bool iosf_mbi_available(void)
@@ -115,6 +130,10 @@ int iosf_mbi_modify(u8 port, u8 opcode, u32 offset, u32 mdr, u32 mask)
WARN(1, "IOSF_MBI driver not available");
return -EPERM;
}
+
+static inline void iosf_mbi_punit_lock(void) {}
+static inline void iosf_mbi_punit_unlock(void) {}
+
#endif /* CONFIG_IOSF_MBI */
#endif /* IOSF_MBI_SYMS_H */
diff --git a/arch/x86/platform/intel/iosf_mbi.c b/arch/x86/platform/intel/iosf_mbi.c
index edf2c54..75d8135 100644
--- a/arch/x86/platform/intel/iosf_mbi.c
+++ b/arch/x86/platform/intel/iosf_mbi.c
@@ -34,6 +34,7 @@
static struct pci_dev *mbi_pdev;
static DEFINE_SPINLOCK(iosf_mbi_lock);
+static DEFINE_MUTEX(iosf_mbi_punit_mutex);
static inline u32 iosf_mbi_form_mcr(u8 op, u8 port, u8 offset)
{
@@ -190,6 +191,18 @@ bool iosf_mbi_available(void)
}
EXPORT_SYMBOL(iosf_mbi_available);
+void iosf_mbi_punit_lock(void)
+{
+ mutex_lock(&iosf_mbi_punit_mutex);
+}
+EXPORT_SYMBOL(iosf_mbi_punit_lock);
+
+void iosf_mbi_punit_unlock(void)
+{
+ mutex_unlock(&iosf_mbi_punit_mutex);
+}
+EXPORT_SYMBOL(iosf_mbi_punit_unlock);
+
#ifdef CONFIG_IOSF_MBI_DEBUG
static u32 dbg_mdr;
static u32 dbg_mcr;
--
2.9.3
next prev parent reply other threads:[~2017-01-01 20:14 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-01 20:13 [RFC 0/4] Coordinate pmic i2c bus and i915 punit accesses Hans de Goede
2017-01-01 20:14 ` Hans de Goede [this message]
2017-01-02 14:12 ` [RFC 1/4] x86/platform/intel/iosf_mbi: Add a mutex for punit access Ville Syrjälä
2017-01-02 14:21 ` Hans de Goede
2017-01-13 9:26 ` Ville Syrjälä
2017-01-13 10:34 ` Jarkko Nikula
2017-01-13 10:51 ` Ville Syrjälä
2017-01-13 11:12 ` Jarkko Nikula
2017-01-13 12:20 ` Ville Syrjälä
2017-01-13 16:06 ` Hans de Goede
2017-01-13 16:30 ` Ville Syrjälä
2017-01-15 11:10 ` Hans de Goede
2017-01-01 20:14 ` [RFC 2/4] i2c: designware-baytrail: Take punit lock on bus acquire Hans de Goede
2017-01-01 20:14 ` [RFC 3/4] drm/i915: valleyview: Make intel_set_rps get FORCEWAKE_MEDIA Hans de Goede
2017-01-01 20:24 ` [Intel-gfx] " Chris Wilson
2017-01-01 20:48 ` Hans de Goede
2017-01-02 11:37 ` [Intel-gfx] " Chris Wilson
2017-01-02 12:40 ` Hans de Goede
2017-01-02 14:10 ` Ville Syrjälä
2017-01-02 14:21 ` Chris Wilson
2017-01-02 14:40 ` Ville Syrjälä
2017-01-02 14:53 ` [Intel-gfx] " Chris Wilson
2017-01-02 15:02 ` Ville Syrjälä
2017-01-02 15:08 ` Ville Syrjälä
2017-01-01 20:14 ` [RFC 4/4] drm/i915: valleyview: Take punit lock when modifying punit settings Hans de Goede
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=20170101201403.12132-2-hdegoede@redhat.com \
--to=hdegoede@redhat.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=jani.nikula@linux.intel.com \
--cc=jarkko.nikula@linux.intel.com \
--cc=lenb@kernel.org \
--cc=linux-i2c@vger.kernel.org \
--cc=russianneuromancer@ya.ru \
--cc=ville.syrjala@linux.intel.com \
/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.