* SOLO6x10 readl() and writel() usage
@ 2011-02-14 13:47 Krzysztof Hałasa
0 siblings, 0 replies; only message in thread
From: Krzysztof Hałasa @ 2011-02-14 13:47 UTC (permalink / raw)
To: Ben Collins; +Cc: lkml
Hi,
BTW why are you using this instead of simple register readl/writel()?
Does the hardware needs something like this?
static inline u32 solo_reg_read(struct solo_dev *solo_dev, int reg)
{
unsigned long flags;
u32 ret;
u16 val;
spin_lock_irqsave(&solo_dev->reg_io_lock, flags);
ret = readl(solo_dev->reg_base + reg);
rmb();
pci_read_config_word(solo_dev->pdev, PCI_STATUS, &val);
rmb();
spin_unlock_irqrestore(&solo_dev->reg_io_lock, flags);
return ret;
}
static inline void solo_reg_write(struct solo_dev *solo_dev, int reg, u32 data)
{
unsigned long flags;
u16 val;
spin_lock_irqsave(&solo_dev->reg_io_lock, flags);
writel(data, solo_dev->reg_base + reg);
wmb();
pci_read_config_word(solo_dev->pdev, PCI_STATUS, &val);
rmb();
spin_unlock_irqrestore(&solo_dev->reg_io_lock, flags);
}
--
Krzysztof Halasa
Research Institute for Automation and Measurements
Al. Jerozolimskie 202, 02-486 Warsaw, Poland
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2011-02-14 13:47 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-02-14 13:47 SOLO6x10 readl() and writel() usage Krzysztof Hałasa
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome