Lines Matching +full:data +full:- +full:sheet
1 // SPDX-License-Identifier: GPL-2.0-or-later
5 * Copyright 2003 Vivien Chappelier <vivien.chappelier@linux-mips.org>
20 * AD1843 bitfield definitions. All are named as in the AD1843 data
21 * sheet, with ad1843_ prepended and individual bit numbers removed.
35 ad1843_PDNO = { 0, 14, 1 }, /* Converter Power-Down Flag */
85 ad1843_ADLF = { 26, 0, 2 }, /* ADC Left Channel Data Format */
86 ad1843_ADRF = { 26, 2, 2 }, /* ADC Right Channel Data Format */
89 ad1843_DA1F = { 26, 8, 2 }, /* DAC1 Data Format Select */
90 ad1843_DA2F = { 26, 10, 2 }, /* DAC2 Data Format Select */
177 w = ad1843->read(ad1843->chip, field->reg); in ad1843_read_bits()
178 return w >> field->lo_bit & ((1 << field->nbits) - 1); in ad1843_read_bits()
191 w = ad1843->read(ad1843->chip, field->reg); in ad1843_write_bits()
192 mask = ((1 << field->nbits) - 1) << field->lo_bit; in ad1843_write_bits()
193 oldval = (w & mask) >> field->lo_bit; in ad1843_write_bits()
194 newbits = (newval << field->lo_bit) & mask; in ad1843_write_bits()
196 ad1843->write(ad1843->chip, field->reg, w); in ad1843_write_bits()
218 int w = 0, mask, *value, reg = -1; in ad1843_read_multi()
221 while (--argcount >= 0) { in ad1843_read_multi()
224 if (reg == -1) { in ad1843_read_multi()
225 reg = fp->reg; in ad1843_read_multi()
226 w = ad1843->read(ad1843->chip, reg); in ad1843_read_multi()
229 mask = (1 << fp->nbits) - 1; in ad1843_read_multi()
230 *value = w >> fp->lo_bit & mask; in ad1843_read_multi()
256 reg = -1; in ad1843_write_multi()
259 while (--argcount >= 0) { in ad1843_write_multi()
262 if (reg == -1) in ad1843_write_multi()
263 reg = fp->reg; in ad1843_write_multi()
265 WARN_ON(reg != fp->reg); in ad1843_write_multi()
266 m = ((1 << fp->nbits) - 1) << fp->lo_bit; in ad1843_write_multi()
268 bits |= (value << fp->lo_bit) & m; in ad1843_write_multi()
273 w = ad1843->read(ad1843->chip, reg); in ad1843_write_multi()
277 ad1843->write(ad1843->chip, reg, w); in ad1843_write_multi()
285 ret = (1 << gp->lfield->nbits); in ad1843_get_gain_max()
286 if (!gp->lmute) in ad1843_get_gain_max()
287 ret -= 1; in ad1843_get_gain_max()
300 unsigned short mask = (1 << gp->lfield->nbits) - 1; in ad1843_get_gain()
302 ad1843_read_multi(ad1843, 2, gp->lfield, &lg, gp->rfield, &rg); in ad1843_get_gain()
303 if (gp->negative) { in ad1843_get_gain()
304 lg = mask - lg; in ad1843_get_gain()
305 rg = mask - rg; in ad1843_get_gain()
307 if (gp->lmute) { in ad1843_get_gain()
308 ad1843_read_multi(ad1843, 2, gp->lmute, &lm, gp->rmute, &rm); in ad1843_get_gain()
326 unsigned short mask = (1 << gp->lfield->nbits) - 1; in ad1843_set_gain()
333 if (gp->negative) { in ad1843_set_gain()
334 lg = mask - lg; in ad1843_set_gain()
335 rg = mask - rg; in ad1843_set_gain()
337 if (gp->lmute) in ad1843_set_gain()
338 ad1843_write_multi(ad1843, 2, gp->lmute, lm, gp->rmute, rm); in ad1843_set_gain()
339 ad1843_write_multi(ad1843, 2, gp->lfield, lg, gp->rfield, rg); in ad1843_set_gain()
360 * Returns newsrc on success, -errno on failure.
366 return -EINVAL; in ad1843_set_recsrc()
461 * Fully initialize the ad1843. As described in the AD1843 data
462 * sheet, section "START-UP SEQUENCE". The numbered comments are
463 * subsection headings from the data sheet. See the data sheet, pages
464 * 52-54, for more info.
466 * return 0 on success, -errno on failure. */
474 return -EIO; in ad1843_init()
487 return -EIO; in ad1843_init()
540 /* Set Speaker Out level to +/- 4V and unmute it. */ in ad1843_init()