| .. | .. |
|---|
| 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 | } |
|---|