[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4F0C4EA8.7060002@grandegger.com>
Date: Tue, 10 Jan 2012 15:43:52 +0100
From: Wolfgang Grandegger <wg@...ndegger.com>
To: info@...ax.com
CC: David Laight <David.Laight@...LAB.COM>,
Oliver Hartkopp <socketcan@...tkopp.net>, henrik@...conx.com,
netdev@...r.kernel.org, linux-can@...r.kernel.org,
socketcan-users@...ts.berlios.de, IreneV <boir1@...dex.ru>,
Stanislav Yelenskiy <stanislavelensky@...oo.com>, oe@...t.de,
henrik@...us-sw.com
Subject: Re: [PATCH net-next v2 2/4] can: cc770: add legacy ISA bus driver
for the CC770 and AN82527
On 01/10/2012 01:41 PM, Wolfgang Zarre wrote:
> Hello David,
>>
>>> cc770_isa_port_write_reg_indirect(const struct cc770_priv *priv,
>>> int reg, u8 val)
>>> {
>>> unsigned long base = (unsigned long)priv->reg_base;
>>> + unsigned long flags;
>>>
>>> + spin_lock_irqsave(&outb_lock, flags);
>>> outb(reg, base);
>>> outb(val, base + 1);
>>> + spin_unlock_irqrestore(&outb_lock, flags);
>>
>> Is there a 'read_reg_indirect' function??
>
> Yes, there is.
>
>> If so it also needs to use the same mutex.
>
> Actually, I don't think that we have a problem with mutex
> beside that it's using just one inb() statement but having
> for sure with an interrupt between both outb() statements which
> seems to be critical for the cc770.
But the indirect read function also sets the address register before
reading the data using inb(). This sequence should also not be
interrupted and therefore we need to synchronize. For the indirect
access of the SJA1000 we also need to add spinlocks. Wonder why nobody
complained so far.
Wolfgang.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists