From: ciminaghi@gnudd.com
To: sameo@linux.intel.com, rubini@gnudd.com,
giancarlo.asnaghi@st.com, broonie@opensource.wolfsonmicro.com
Cc: linux-kernel@vger.kernel.org, Davide Ciminaghi <ciminaghi@gnudd.com>
Subject: [PATCH 07/10] drivers/mfd/sta2x11-mfd: use one lock per device instead of one lock per mfd
Date: Fri, 9 Nov 2012 15:19:58 +0100 [thread overview]
Message-ID: <1352470801-2418-8-git-send-email-ciminaghi@gnudd.com> (raw)
In-Reply-To: <1352470801-2418-1-git-send-email-ciminaghi@gnudd.com>
From: Davide Ciminaghi <ciminaghi@gnudd.com>
The lock is used to implement atomic operations on each platform
device's registers, so it looks reasonable having one lock per
device instead of one common lock for all the devices belonging
to the same sta2x11 instance.
Signed-off-by: Davide Ciminaghi <ciminaghi@gnudd.com>
---
drivers/mfd/sta2x11-mfd.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/drivers/mfd/sta2x11-mfd.c b/drivers/mfd/sta2x11-mfd.c
index 2c8d65e..da65839 100644
--- a/drivers/mfd/sta2x11-mfd.c
+++ b/drivers/mfd/sta2x11-mfd.c
@@ -46,7 +46,7 @@ static inline int __reg_within_range(unsigned int r,
struct sta2x11_mfd {
struct sta2x11_instance *instance;
struct regmap *regmap[sta2x11_n_mfd_plat_devs];
- spinlock_t lock;
+ spinlock_t lock[sta2x11_n_mfd_plat_devs];
struct list_head list;
void __iomem *regs[sta2x11_n_mfd_plat_devs];
};
@@ -78,6 +78,7 @@ static struct sta2x11_mfd *sta2x11_mfd_find(struct pci_dev *pdev)
static int __devinit sta2x11_mfd_add(struct pci_dev *pdev, gfp_t flags)
{
+ int i;
struct sta2x11_mfd *mfd = sta2x11_mfd_find(pdev);
struct sta2x11_instance *instance;
@@ -90,7 +91,8 @@ static int __devinit sta2x11_mfd_add(struct pci_dev *pdev, gfp_t flags)
if (!mfd)
return -ENOMEM;
INIT_LIST_HEAD(&mfd->list);
- spin_lock_init(&mfd->lock);
+ for (i = 0; i < ARRAY_SIZE(mfd->lock); i++)
+ spin_lock_init(&mfd->lock[i]);
mfd->instance = instance;
list_add(&mfd->list, &sta2x11_mfd_list);
return 0;
@@ -124,13 +126,13 @@ u32 __sta2x11_mfd_mask(struct pci_dev *pdev, u32 reg, u32 mask, u32 val,
dev_warn(&pdev->dev, ": system ctl not initialized\n");
return 0;
}
- spin_lock_irqsave(&mfd->lock, flags);
+ spin_lock_irqsave(&mfd->lock[index], flags);
r = readl(regs + reg);
r &= ~mask;
r |= val;
if (mask)
writel(r, regs + reg);
- spin_unlock_irqrestore(&mfd->lock, flags);
+ spin_unlock_irqrestore(&mfd->lock[index], flags);
return r;
}
EXPORT_SYMBOL(__sta2x11_mfd_mask);
--
1.7.10.4
next prev parent reply other threads:[~2012-11-09 14:20 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-09 14:19 [PATCH v3 00/10] sta2x11-mfd patches ciminaghi
2012-11-09 14:19 ` [PATCH 01/10] drivers/mfd/sta2x11-mfd: add apb-soc regs driver and factor out common code ciminaghi
2012-11-09 14:19 ` [PATCH 02/10] drivers/mfd/sta2x11-mfd: add regmap support ciminaghi
2012-11-09 14:19 ` [PATCH 03/10] drivers/mfd/sta2x11-mfd: add sta2x11_mfd_get_regs_data() function ciminaghi
2012-11-09 14:19 ` [PATCH 04/10] drivers/mfd/sta2x11-mfd: use defines for platform devices' names ciminaghi
2012-11-09 14:19 ` [PATCH 05/10] drivers/mfd/sta2x11-mfd: only add sta2x11_mfd if it hasn't already been added ciminaghi
2012-11-09 14:19 ` [PATCH 06/10] drivers/mfd/sta2x11-mfd: platform probe: don't mind about gpio platform data ciminaghi
2012-11-09 14:19 ` ciminaghi [this message]
2012-11-09 14:19 ` [PATCH 08/10] drivers/mfd/sta2x11-mfd: add scr (otp registers) platform driver ciminaghi
2012-11-09 14:20 ` [PATCH 09/10] drivers/mfd/sta2x11-mfd: add defines for some sta2x11 sctl registers ciminaghi
2012-11-09 14:20 ` [PATCH 10/10] drivers/mfd/sta2x11-mfd: add myself to copyright ciminaghi
2012-11-19 17:58 ` [PATCH v3 00/10] sta2x11-mfd patches Samuel Ortiz
2012-11-19 18:44 ` Samuel Ortiz
2012-11-20 0:19 ` Mark Brown
-- strict thread matches above, loose matches on Subject: below --
2012-10-22 14:50 [PATCH v2 " ciminaghi
2012-10-22 14:50 ` [PATCH 07/10] drivers/mfd/sta2x11-mfd: use one lock per device instead of one lock per mfd ciminaghi
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=1352470801-2418-8-git-send-email-ciminaghi@gnudd.com \
--to=ciminaghi@gnudd.com \
--cc=broonie@opensource.wolfsonmicro.com \
--cc=giancarlo.asnaghi@st.com \
--cc=linux-kernel@vger.kernel.org \
--cc=rubini@gnudd.com \
--cc=sameo@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®