.. | .. |
---|
242 | 242 | u32 offset) |
---|
243 | 243 | { |
---|
244 | 244 | u32 val; |
---|
| 245 | + unsigned long flags; |
---|
245 | 246 | |
---|
246 | 247 | if (iproc_i2c->idm_base) { |
---|
247 | | - spin_lock(&iproc_i2c->idm_lock); |
---|
| 248 | + spin_lock_irqsave(&iproc_i2c->idm_lock, flags); |
---|
248 | 249 | writel(iproc_i2c->ape_addr_mask, |
---|
249 | 250 | iproc_i2c->idm_base + IDM_CTRL_DIRECT_OFFSET); |
---|
250 | 251 | val = readl(iproc_i2c->base + offset); |
---|
251 | | - spin_unlock(&iproc_i2c->idm_lock); |
---|
| 252 | + spin_unlock_irqrestore(&iproc_i2c->idm_lock, flags); |
---|
252 | 253 | } else { |
---|
253 | 254 | val = readl(iproc_i2c->base + offset); |
---|
254 | 255 | } |
---|
.. | .. |
---|
259 | 260 | static inline void iproc_i2c_wr_reg(struct bcm_iproc_i2c_dev *iproc_i2c, |
---|
260 | 261 | u32 offset, u32 val) |
---|
261 | 262 | { |
---|
| 263 | + unsigned long flags; |
---|
| 264 | + |
---|
262 | 265 | if (iproc_i2c->idm_base) { |
---|
263 | | - spin_lock(&iproc_i2c->idm_lock); |
---|
| 266 | + spin_lock_irqsave(&iproc_i2c->idm_lock, flags); |
---|
264 | 267 | writel(iproc_i2c->ape_addr_mask, |
---|
265 | 268 | iproc_i2c->idm_base + IDM_CTRL_DIRECT_OFFSET); |
---|
266 | 269 | writel(val, iproc_i2c->base + offset); |
---|
267 | | - spin_unlock(&iproc_i2c->idm_lock); |
---|
| 270 | + spin_unlock_irqrestore(&iproc_i2c->idm_lock, flags); |
---|
268 | 271 | } else { |
---|
269 | 272 | writel(val, iproc_i2c->base + offset); |
---|
270 | 273 | } |
---|