mirror of
https://github.com/torvalds/linux.git
synced 2024-11-28 07:01:32 +00:00
mfd: Push byte swaps out of wm8994 bulk read path
For consistency with the write path push byte swaps of the WM8994 register data out of the bulk read data path into the per-register APIs. The only user of the bulk register read is the interrupt code which is updated to do the swaps itself part of this patch. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
This commit is contained in:
parent
8bd4d7c4c5
commit
316b6cc081
@ -40,10 +40,8 @@ static int wm8994_read(struct wm8994 *wm8994, unsigned short reg,
|
||||
return ret;
|
||||
|
||||
for (i = 0; i < bytes / 2; i++) {
|
||||
buf[i] = be16_to_cpu(buf[i]);
|
||||
|
||||
dev_vdbg(wm8994->dev, "Read %04x from R%d(0x%x)\n",
|
||||
buf[i], reg + i, reg + i);
|
||||
be16_to_cpu(buf[i]), reg + i, reg + i);
|
||||
}
|
||||
|
||||
return 0;
|
||||
@ -69,7 +67,7 @@ int wm8994_reg_read(struct wm8994 *wm8994, unsigned short reg)
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
else
|
||||
return val;
|
||||
return be16_to_cpu(val);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(wm8994_reg_read);
|
||||
|
||||
@ -79,7 +77,7 @@ EXPORT_SYMBOL_GPL(wm8994_reg_read);
|
||||
* @wm8994: Device to read from
|
||||
* @reg: First register
|
||||
* @count: Number of registers
|
||||
* @buf: Buffer to fill.
|
||||
* @buf: Buffer to fill. The data will be returned big endian.
|
||||
*/
|
||||
int wm8994_bulk_read(struct wm8994 *wm8994, unsigned short reg,
|
||||
int count, u16 *buf)
|
||||
@ -180,6 +178,8 @@ int wm8994_set_bits(struct wm8994 *wm8994, unsigned short reg,
|
||||
if (ret < 0)
|
||||
goto out;
|
||||
|
||||
r = be16_to_cpu(r);
|
||||
|
||||
r &= ~mask;
|
||||
r |= val;
|
||||
|
||||
|
@ -225,9 +225,11 @@ static irqreturn_t wm8994_irq_thread(int irq, void *data)
|
||||
return IRQ_NONE;
|
||||
}
|
||||
|
||||
/* Apply masking */
|
||||
for (i = 0; i < WM8994_NUM_IRQ_REGS; i++)
|
||||
/* Bit swap and apply masking */
|
||||
for (i = 0; i < WM8994_NUM_IRQ_REGS; i++) {
|
||||
status[i] = be16_to_cpu(status[i]);
|
||||
status[i] &= ~wm8994->irq_masks_cur[i];
|
||||
}
|
||||
|
||||
/* Report */
|
||||
for (i = 0; i < ARRAY_SIZE(wm8994_irqs); i++) {
|
||||
|
Loading…
Reference in New Issue
Block a user